![]() System : Linux absol.cf 5.4.0-198-generic #218-Ubuntu SMP Fri Sep 27 20:18:53 UTC 2024 x86_64 User : www-data ( 33) PHP Version : 7.4.33 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare, Directory : /opt/mattermost/client/ |
Upload File : |
{"version":3,"file":"9527.64a5d8ce1128111374bd.js","mappings":"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","sources":["webpack://mattermost-webapp/./src/components/gif_picker/components/gif_picker_items.tsx","webpack://mattermost-webapp/./src/components/gif_picker/components/gif_picker_search.tsx","webpack://mattermost-webapp/./src/components/gif_picker/gif_picker.tsx"],"sourcesContent":["// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.\n// See LICENSE.txt for license information.\n\nimport type {GifsResult} from '@giphy/js-fetch-api';\nimport type {EmojiVariationsListProps} from '@giphy/react-components';\nimport {Grid} from '@giphy/react-components';\nimport React, {memo, useCallback} from 'react';\nimport {useSelector} from 'react-redux';\n\nimport {getGiphyFetchInstance} from 'mattermost-redux/selectors/entities/general';\n\nimport NoResultsIndicator from 'components/no_results_indicator';\nimport {NoResultsVariant} from 'components/no_results_indicator/types';\n\nconst GUTTER_BETWEEN_GIFS = 8;\nconst NUM_OF_GIFS_COLUMNS = 2;\n\ninterface Props {\n width: number;\n filter: string;\n onClick: EmojiVariationsListProps['onGifClick'];\n}\n\nfunction GifPickerItems(props: Props) {\n const giphyFetch = useSelector(getGiphyFetchInstance);\n\n const fetchGifs = useCallback(async (offset: number) => {\n if (!giphyFetch) {\n return {} as GifsResult;\n }\n\n // We dont have to throttled the fetching as the library does it for us\n if (props.filter.length > 0) {\n const filteredResult = await giphyFetch.search(props.filter, {offset, limit: 10});\n return filteredResult;\n }\n\n const trendingResult = await giphyFetch.trending({offset, limit: 10});\n return trendingResult;\n }, [props.filter, giphyFetch]);\n\n return (\n <div className='emoji-picker__items gif-picker__items'>\n <Grid\n key={props.filter.length === 0 ? 'trending' : props.filter}\n columns={NUM_OF_GIFS_COLUMNS}\n gutter={GUTTER_BETWEEN_GIFS}\n hideAttribution={true}\n width={props.width}\n noResultsMessage={\n <NoResultsIndicator\n variant={NoResultsVariant.Search}\n titleValues={{channelName: `${props.filter}`}}\n />\n }\n fetchGifs={fetchGifs}\n onGifClick={props.onClick}\n />\n </div>\n );\n}\n\nexport default memo(GifPickerItems);\n","// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.\n// See LICENSE.txt for license information.\n\nimport type {ChangeEvent} from 'react';\nimport React, {memo, useCallback, useMemo} from 'react';\nimport {useIntl} from 'react-intl';\nimport {useSelector} from 'react-redux';\nimport tinycolor from 'tinycolor2';\n\nimport {getTheme} from 'mattermost-redux/selectors/entities/preferences';\n\nimport giphyBlackImage from 'images/gif_picker/powered-by-giphy-black.png';\nimport giphyWhiteImage from 'images/gif_picker/powered-by-giphy-white.png';\n\ninterface Props {\n value: string;\n onChange: (value: string) => void;\n}\n\nfunction GifPickerSearch(props: Props) {\n const theme = useSelector(getTheme);\n\n const {formatMessage} = useIntl();\n\n const handleChange = useCallback((event: ChangeEvent<HTMLInputElement>) => {\n event.preventDefault();\n\n // remove trailing and leading colons\n const value = event.target?.value?.replace(/^:|:$/g, '') ?? '';\n props.onChange(value);\n }, [props.onChange]);\n\n const shouldUseWhiteLogo = useMemo(() => {\n const WHITE_COLOR = '#FFFFFF';\n const BLACK_COLOR = '#000000';\n\n const mostReadableColor = tinycolor.mostReadable(theme.centerChannelBg, [WHITE_COLOR, BLACK_COLOR], {includeFallbackColors: false});\n\n if (mostReadableColor.isLight()) {\n return true;\n }\n return false;\n }, [theme.centerChannelBg]);\n\n return (\n <div className='emoji-picker__search-container'>\n <div className='emoji-picker__text-container'>\n <span className='icon-magnify icon emoji-picker__search-icon'/>\n <input\n id='emojiPickerSearch'\n className='emoji-picker__search'\n aria-label={formatMessage({id: 'gif_picker.input.label', defaultMessage: 'Search for GIFs'})}\n placeholder={formatMessage({id: 'gif_picker.input.placeholder', defaultMessage: 'Search GIPHY'})}\n type='text'\n autoFocus={true}\n autoComplete='off'\n onChange={handleChange}\n value={props.value}\n />\n </div>\n <div className='gif-attribution'>\n <img\n src={shouldUseWhiteLogo ? giphyWhiteImage : giphyBlackImage}\n alt={formatMessage({id: 'gif_picker.attribution.alt', defaultMessage: 'Powered by GIPHY'})}\n />\n </div>\n </div>\n );\n}\n\nexport default memo(GifPickerSearch);\n","// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.\n// See LICENSE.txt for license information.\n\nimport type {IGif} from '@giphy/js-types';\nimport type {SyntheticEvent} from 'react';\nimport React, {useCallback, useMemo} from 'react';\n\nimport GifPickerItems from './components/gif_picker_items';\nimport GifPickerSearch from './components/gif_picker_search';\n\nconst GIF_DEFAULT_WIDTH = 350;\nconst GIF_MARGIN_ENDS = 12;\n\ntype Props = {\n filter: string;\n onGifClick?: (gif: string) => void;\n handleFilterChange: (filter: string) => void;\n getRootPickerNode: () => HTMLDivElement | null;\n}\n\nconst GifPicker = (props: Props) => {\n const handleItemClick = useCallback((gif: IGif, event: SyntheticEvent<HTMLElement, Event>) => {\n if (props.onGifClick) {\n event.preventDefault();\n\n const imageWithMarkdown = ``;\n props.onGifClick(imageWithMarkdown);\n }\n }, [props.onGifClick]);\n\n const pickerWidth = useMemo(() => {\n const pickerWidth = props.getRootPickerNode?.()?.getBoundingClientRect()?.width ?? GIF_DEFAULT_WIDTH;\n return (pickerWidth - (2 * GIF_MARGIN_ENDS));\n }, [props.getRootPickerNode]);\n\n return (\n <div>\n <GifPickerSearch\n value={props.filter}\n onChange={props.handleFilterChange}\n />\n <GifPickerItems\n width={pickerWidth}\n filter={props.filter}\n onClick={handleItemClick}\n />\n </div>\n );\n};\n\nexport default GifPicker;\n"],"names":["GifPickerItems","props","giphyFetch","useSelector","getGiphyFetchInstance","fetchGifs","useCallback","async","filter","length","search","offset","limit","trending","React","className","Grid","key","columns","gutter","hideAttribution","width","noResultsMessage","NoResultsIndicator","variant","NoResultsVariant","Search","titleValues","channelName","concat","onGifClick","onClick","propTypes","_pt","isRequired","memo","GifPickerSearch","theme","getTheme","formatMessage","useIntl","handleChange","event","_event$target$value$r","_event$target","_event$target$value","preventDefault","value","target","replace","onChange","shouldUseWhiteLogo","useMemo","tinycolor","mostReadable","centerChannelBg","includeFallbackColors","isLight","id","defaultMessage","placeholder","type","autoFocus","autoComplete","src","giphyWhiteImage","giphyBlackImage","alt","GifPicker","handleItemClick","gif","imageWithMarkdown","title","images","fixed_height","url","pickerWidth","_props$getRootPickerN","_props$getRootPickerN2","_props$getRootPickerN3","_props$getRootPickerN4","getRootPickerNode","call","getBoundingClientRect","handleFilterChange"],"sourceRoot":""}