emoji-picker-react 4.7.16-rc.0 → 4.7.16
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +29 -29
- package/dist/DomUtils/detectEmojyPartiallyBelowFold.d.ts +2 -0
- package/dist/DomUtils/selectors.d.ts +4 -0
- package/dist/Stylesheet/stylesheet.d.ts +19 -2
- package/dist/components/emoji/ClickableEmojiButton.d.ts +3 -2
- package/dist/components/emoji/Emoji.d.ts +2 -2
- package/dist/components/main/PickerMain.d.ts +1 -0
- package/dist/config/compareConfig.d.ts +2 -0
- package/dist/config/config.d.ts +4 -1
- package/dist/config/mutableConfig.d.ts +3 -2
- package/dist/config/useConfig.d.ts +6 -1
- package/dist/emoji-picker-react.cjs.development.js +3109 -3061
- package/dist/emoji-picker-react.cjs.development.js.map +1 -1
- package/dist/emoji-picker-react.cjs.production.min.js +1 -1
- package/dist/emoji-picker-react.cjs.production.min.js.map +1 -1
- package/dist/emoji-picker-react.esm.js +3110 -3062
- package/dist/emoji-picker-react.esm.js.map +1 -1
- package/dist/hooks/useIsEverMounted.d.ts +1 -0
- package/dist/hooks/useMouseDownHandlers.d.ts +2 -1
- package/package.json +2 -2
- package/src/DomUtils/detectEmojyPartiallyBelowFold.ts +16 -0
- package/src/DomUtils/elementPositionInRow.ts +17 -0
- package/src/DomUtils/selectors.ts +16 -0
- package/src/EmojiPickerReact.tsx +14 -30
- package/src/Stylesheet/stylesheet.tsx +17 -11
- package/src/components/Reactions/BtnPlus.tsx +11 -19
- package/src/components/Reactions/Reactions.tsx +16 -2
- package/src/components/body/Body.tsx +2 -1
- package/src/components/body/EmojiVariationPicker.tsx +4 -13
- package/src/components/body/Suggested.tsx +2 -2
- package/src/components/context/PickerConfigContext.tsx +24 -3
- package/src/components/emoji/ClickableEmojiButton.tsx +16 -5
- package/src/components/emoji/Emoji.tsx +5 -3
- package/src/components/header/Search/BtnClearSearch.tsx +5 -16
- package/src/components/header/Search/IcnSearch.tsx +4 -13
- package/src/components/header/Search/Search.tsx +8 -25
- package/src/components/main/PickerMain.tsx +14 -4
- package/src/components/navigation/CategoryButton.tsx +2 -4
- package/src/config/compareConfig.ts +28 -0
- package/src/config/config.ts +7 -2
- package/src/config/mutableConfig.ts +8 -4
- package/src/config/useConfig.ts +20 -5
- package/src/hooks/useEmojiPreviewEvents.ts +27 -5
- package/src/hooks/useIsEverMounted.ts +14 -0
- package/src/hooks/useMouseDownHandlers.ts +13 -11
- package/src/index.tsx +2 -1
- package/dist/hooks/useIsMounted.d.ts +0 -1
- package/src/hooks/useIsMounted.ts +0 -11
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"emoji-picker-react.cjs.development.js","sources":["../src/DomUtils/classNames.ts","../src/hooks/useIsMounted.ts","../src/Stylesheet/stylesheet.tsx","../src/components/Reactions/DEFAULT_REACTIONS.ts","../src/types/exposedTypes.ts","../src/config/categoryConfig.ts","../src/config/cdnUrls.ts","../src/data/skinToneVariations.ts","../src/dataUtils/DataTypes.ts","../src/dataUtils/alphaNumericEmojiIndex.ts","../src/dataUtils/emojiSelectors.ts","../src/config/config.ts","../src/components/context/PickerConfigContext.tsx","../src/config/mutableConfig.ts","../src/config/useConfig.ts","../src/DomUtils/elementPositionInRow.ts","../src/DomUtils/selectors.ts","../src/hooks/useDebouncedState.ts","../src/hooks/useHideEmojisByUniocode.ts","../src/hooks/useDisallowedEmojis.ts","../src/hooks/useInitialLoad.ts","../src/components/context/PickerContext.tsx","../src/dataUtils/parseNativeEmoji.ts","../src/dataUtils/suggested.ts","../src/typeRefinements/typeRefinements.ts","../src/hooks/useCloseAllOpenToggles.ts","../src/DomUtils/focusElement.ts","../src/components/context/ElementRefContext.tsx","../src/hooks/useSetVariationPicker.ts","../src/hooks/useMouseDownHandlers.ts","../src/components/atoms/Button.tsx","../src/components/emoji/ClickableEmojiButton.tsx","../src/components/emoji/emojiStyles.ts","../src/components/emoji/EmojiImg.tsx","../src/components/emoji/NativeEmoji.tsx","../src/components/emoji/ViewOnlyEmoji.tsx","../src/components/emoji/Emoji.tsx","../src/components/Reactions/BtnPlus.tsx","../src/components/Reactions/Reactions.tsx","../src/hooks/useDisallowMouseMove.ts","../src/hooks/useOnScroll.ts","../src/DomUtils/scrollTo.ts","../src/hooks/useFocus.ts","../src/hooks/useFilter.ts","../src/hooks/useIsEmojiHidden.ts","../src/components/body/EmojiCategory.tsx","../src/components/body/Suggested.tsx","../src/components/body/EmojiList.tsx","../src/DomUtils/keyboardNavigation.ts","../src/components/body/EmojiVariationPicker.tsx","../src/components/body/Body.tsx","../src/hooks/useEmojiPreviewEvents.ts","../src/hooks/useShouldShowSkinTonePicker.ts","../src/components/Layout/Flex.tsx","../src/components/Layout/Space.tsx","../src/components/Layout/Absolute.tsx","../src/components/Layout/Relative.tsx","../src/components/header/SkinTonePicker/BtnSkinToneVariation.tsx","../src/components/header/SkinTonePicker/SkinTonePicker.tsx","../src/components/footer/Preview.tsx","../src/DomUtils/categoryNameFromDom.ts","../src/hooks/useActiveCategoryScrollDetection.ts","../src/hooks/useIsSearchMode.ts","../src/hooks/useScrollCategoryIntoView.ts","../src/hooks/useShouldHideCustomEmojis.ts","../src/components/navigation/CategoryButton.tsx","../src/components/navigation/CategoryNavigation.tsx","../src/components/header/Search/BtnClearSearch.tsx","../src/components/header/Search/CssSearch.tsx","../src/components/header/Search/IcnSearch.tsx","../src/components/header/Search/Search.tsx","../src/components/header/Header.tsx","../src/DomUtils/getActiveElement.ts","../src/hooks/useKeyboardNavigation.ts","../src/hooks/preloadEmoji.ts","../src/hooks/useOnFocus.ts","../src/components/main/PickerMain.tsx","../src/EmojiPickerReact.tsx","../src/components/ErrorBoundary.tsx","../src/components/emoji/ExportedEmoji.tsx","../src/index.tsx"],"sourcesContent":["export enum ClassNames {\n hiddenOnSearch = 'epr-hidden-on-search',\n searchActive = 'epr-search-active',\n hidden = 'epr-hidden',\n visible = 'epr-visible',\n active = 'epr-active',\n emoji = 'epr-emoji',\n category = 'epr-emoji-category',\n label = 'epr-emoji-category-label',\n categoryContent = 'epr-emoji-category-content',\n emojiHasVariations = 'epr-emoji-has-variations',\n scrollBody = 'epr-body',\n emojiList = 'epr-emoji-list',\n external = '__EmojiPicker__',\n emojiPicker = 'EmojiPickerReact',\n open = 'epr-open',\n vertical = 'epr-vertical',\n horizontal = 'epr-horizontal',\n variationPicker = 'epr-emoji-variation-picker',\n darkTheme = 'epr-dark-theme',\n autoTheme = 'epr-auto-theme'\n}\n\nexport function asSelectors(...classNames: ClassNames[]): string {\n return classNames.map(c => `.${c}`).join('');\n}\n","import * as React from 'react';\n\nexport function useIsMounted() {\n const [isMounted, setIsMounted] = React.useState(false);\n\n React.useEffect(() => {\n setIsMounted(true);\n }, []);\n\n return isMounted;\n}\n","import { createSheet } from 'flairup';\nimport * as React from 'react';\n\nimport { ClassNames } from '../DomUtils/classNames';\nimport { useIsMounted } from '../hooks/useIsMounted';\n\nexport const stylesheet = createSheet('epr');\n\nconst hidden = {\n display: 'none',\n opacity: '0',\n pointerEvents: 'none',\n visibility: 'hidden',\n overflow: 'hidden'\n};\n\nexport const commonStyles = stylesheet.create({\n hidden: {\n '.': ClassNames.hidden,\n ...hidden\n }\n});\n\nexport function PickerStyleTag() {\n const isMounted = useIsMounted();\n\n if (stylesheet.isApplied() && isMounted) {\n return null;\n }\n\n return (\n <style\n suppressHydrationWarning\n dangerouslySetInnerHTML={{ __html: stylesheet.getStyle() }}\n />\n );\n}\n\nexport const commonInteractionStyles = stylesheet.create({\n '.epr-main': {\n ':has(input:not(:placeholder-shown))': {\n categoryBtn: {\n ':hover': {\n opacity: '1',\n backgroundPositionY: 'var(--epr-category-navigation-button-size)'\n }\n },\n hiddenOnSearch: {\n '.': ClassNames.hiddenOnSearch,\n ...hidden\n }\n },\n ':has(input(:placeholder-shown))': {\n visibleOnSearchOnly: hidden\n }\n },\n hiddenOnReactions: {\n transition: 'all 0.5s ease-in-out'\n },\n '.epr-reactions': {\n hiddenOnReactions: {\n height: '0px',\n width: '0px',\n opacity: '0',\n pointerEvents: 'none',\n overflow: 'hidden'\n }\n },\n '.EmojiPickerReact:not(.epr-search-active)': {\n categoryBtn: {\n ':hover': {\n opacity: '1',\n backgroundPositionY: 'var(--epr-category-navigation-button-size)'\n },\n // @ts-ignore\n '&.epr-active': {\n opacity: '1',\n backgroundPositionY: 'var(--epr-category-navigation-button-size)'\n }\n },\n visibleOnSearchOnly: {\n '.': 'epr-visible-on-search-only',\n ...hidden\n }\n }\n});\n","export const DEFAULT_REACTIONS = [\n '1f44d', // 👍\n '2764-fe0f', // ❤️\n '1f603', // 😃\n '1f622', // 😢\n '1f64f', // 🙏\n '1f44e', // 👎\n '1f621' // 😡\n];\n","export type EmojiClickData = {\n activeSkinTone: SkinTones;\n unified: string;\n unifiedWithoutSkinTone: string;\n emoji: string;\n names: string[];\n imageUrl: string;\n getImageUrl: (emojiStyle?: EmojiStyle) => string;\n isCustom: boolean;\n};\n\nexport enum SuggestionMode {\n RECENT = 'recent',\n FREQUENT = 'frequent'\n}\n\nexport enum EmojiStyle {\n NATIVE = 'native',\n APPLE = 'apple',\n TWITTER = 'twitter',\n GOOGLE = 'google',\n FACEBOOK = 'facebook'\n}\n\nexport enum Theme {\n DARK = 'dark',\n LIGHT = 'light',\n AUTO = 'auto'\n}\n\nexport enum SkinTones {\n NEUTRAL = 'neutral',\n LIGHT = '1f3fb',\n MEDIUM_LIGHT = '1f3fc',\n MEDIUM = '1f3fd',\n MEDIUM_DARK = '1f3fe',\n DARK = '1f3ff'\n}\n\nexport enum Categories {\n SUGGESTED = 'suggested',\n CUSTOM = 'custom',\n SMILEYS_PEOPLE = 'smileys_people',\n ANIMALS_NATURE = 'animals_nature',\n FOOD_DRINK = 'food_drink',\n TRAVEL_PLACES = 'travel_places',\n ACTIVITIES = 'activities',\n OBJECTS = 'objects',\n SYMBOLS = 'symbols',\n FLAGS = 'flags'\n}\n\nexport enum SkinTonePickerLocation {\n SEARCH = 'SEARCH',\n PREVIEW = 'PREVIEW'\n}\n","import { Categories, SuggestionMode } from '../types/exposedTypes';\n\nexport { Categories };\n\nconst categoriesOrdered: Categories[] = [\n Categories.SUGGESTED,\n Categories.CUSTOM,\n Categories.SMILEYS_PEOPLE,\n Categories.ANIMALS_NATURE,\n Categories.FOOD_DRINK,\n Categories.TRAVEL_PLACES,\n Categories.ACTIVITIES,\n Categories.OBJECTS,\n Categories.SYMBOLS,\n Categories.FLAGS\n];\n\nexport const SuggestedRecent: CategoryConfig = {\n name: 'Recently Used',\n category: Categories.SUGGESTED\n};\n\nexport type CustomCategoryConfig = {\n category: Categories.CUSTOM;\n name: string;\n};\n\nconst configByCategory: Record<Categories, CategoryConfig> = {\n [Categories.SUGGESTED]: {\n category: Categories.SUGGESTED,\n name: 'Frequently Used'\n },\n [Categories.CUSTOM]: {\n category: Categories.CUSTOM,\n name: 'Custom Emojis'\n },\n [Categories.SMILEYS_PEOPLE]: {\n category: Categories.SMILEYS_PEOPLE,\n name: 'Smileys & People'\n },\n [Categories.ANIMALS_NATURE]: {\n category: Categories.ANIMALS_NATURE,\n name: 'Animals & Nature'\n },\n [Categories.FOOD_DRINK]: {\n category: Categories.FOOD_DRINK,\n name: 'Food & Drink'\n },\n [Categories.TRAVEL_PLACES]: {\n category: Categories.TRAVEL_PLACES,\n name: 'Travel & Places'\n },\n [Categories.ACTIVITIES]: {\n category: Categories.ACTIVITIES,\n name: 'Activities'\n },\n [Categories.OBJECTS]: {\n category: Categories.OBJECTS,\n name: 'Objects'\n },\n [Categories.SYMBOLS]: {\n category: Categories.SYMBOLS,\n name: 'Symbols'\n },\n [Categories.FLAGS]: {\n category: Categories.FLAGS,\n name: 'Flags'\n }\n};\n\nexport function baseCategoriesConfig(\n modifiers?: Record<Categories, CategoryConfig>\n): CategoriesConfig {\n return categoriesOrdered.map(category => {\n return {\n ...configByCategory[category],\n ...(modifiers && modifiers[category] && modifiers[category])\n };\n });\n}\n\nexport function categoryFromCategoryConfig(category: CategoryConfig) {\n return category.category;\n}\n\nexport function categoryNameFromCategoryConfig(category: CategoryConfig) {\n return category.name;\n}\n\nexport type CategoriesConfig = CategoryConfig[];\n\nexport type CategoryConfig = {\n category: Categories;\n name: string;\n};\n\nexport type UserCategoryConfig = Array<Categories | CategoryConfig>;\n\nexport function mergeCategoriesConfig(\n userCategoriesConfig: UserCategoryConfig = [],\n modifiers: CategoryConfigModifiers = {}\n): CategoriesConfig {\n const extra = {} as Record<Categories, CategoryConfig>;\n\n if (modifiers.suggestionMode === SuggestionMode.RECENT) {\n extra[Categories.SUGGESTED] = SuggestedRecent;\n }\n\n const base = baseCategoriesConfig(extra);\n if (!userCategoriesConfig?.length) {\n return base;\n }\n\n return userCategoriesConfig.map(category => {\n if (typeof category === 'string') {\n return getBaseConfigByCategory(category, extra[category]);\n }\n\n return {\n ...getBaseConfigByCategory(category.category, extra[category.category]),\n ...category\n };\n });\n}\n\nfunction getBaseConfigByCategory(\n category: Categories,\n modifier: CategoryConfig = {} as CategoryConfig\n) {\n return Object.assign(configByCategory[category], modifier);\n}\n\ntype CategoryConfigModifiers = {\n suggestionMode?: SuggestionMode;\n};\n","import { EmojiStyle } from '../types/exposedTypes';\n\nconst CDN_URL_APPLE =\n 'https://cdn.jsdelivr.net/npm/emoji-datasource-apple/img/apple/64/';\nconst CDN_URL_FACEBOOK =\n 'https://cdn.jsdelivr.net/npm/emoji-datasource-facebook/img/facebook/64/';\nconst CDN_URL_TWITTER =\n 'https://cdn.jsdelivr.net/npm/emoji-datasource-twitter/img/twitter/64/';\nconst CDN_URL_GOOGLE =\n 'https://cdn.jsdelivr.net/npm/emoji-datasource-google/img/google/64/';\n\nexport function cdnUrl(emojiStyle: EmojiStyle): string {\n switch (emojiStyle) {\n case EmojiStyle.TWITTER:\n return CDN_URL_TWITTER;\n case EmojiStyle.GOOGLE:\n return CDN_URL_GOOGLE;\n case EmojiStyle.FACEBOOK:\n return CDN_URL_FACEBOOK;\n case EmojiStyle.APPLE:\n default:\n return CDN_URL_APPLE;\n }\n}\n","import { SkinTones } from '../types/exposedTypes';\n\nconst skinToneVariations = [\n SkinTones.NEUTRAL,\n SkinTones.LIGHT,\n SkinTones.MEDIUM_LIGHT,\n SkinTones.MEDIUM,\n SkinTones.MEDIUM_DARK,\n SkinTones.DARK\n];\n\nexport const skinTonesNamed = Object.entries(SkinTones).reduce(\n (acc, [key, value]) => {\n acc[value] = key;\n return acc;\n },\n {} as Record<string, string>\n);\n\nexport const skinTonesMapped: Record<\n string,\n string\n> = skinToneVariations.reduce(\n (mapped, skinTone) =>\n Object.assign(mapped, {\n [skinTone]: skinTone\n }),\n {}\n);\n\nexport default skinToneVariations;\n","import emojis from '../data/emojis';\n\nexport enum EmojiProperties {\n name = 'n',\n unified = 'u',\n variations = 'v',\n added_in = 'a',\n imgUrl = 'imgUrl'\n}\n\nexport interface DataEmoji extends WithName {\n [EmojiProperties.unified]: string;\n [EmojiProperties.variations]?: string[];\n [EmojiProperties.added_in]: string;\n [EmojiProperties.imgUrl]?: string;\n}\n\nexport type DataEmojis = DataEmoji[];\n\nexport type DataGroups = keyof typeof emojis;\n\nexport type WithName = {\n [EmojiProperties.name]: string[];\n};\n","import { DataEmoji } from './DataTypes';\nimport { allEmojis, emojiNames, emojiUnified } from './emojiSelectors';\n\nexport const alphaNumericEmojiIndex: BaseIndex = {};\n\nsetTimeout(() => {\n allEmojis.reduce((searchIndex, emoji) => {\n indexEmoji(emoji);\n return searchIndex;\n }, alphaNumericEmojiIndex as BaseIndex);\n});\n\ntype BaseIndex = Record<string, Record<string, DataEmoji>>;\n\nexport function indexEmoji(emoji: DataEmoji): void {\n const joinedNameString = emojiNames(emoji)\n .flat()\n .join('')\n .toLowerCase()\n .replace(/[^a-zA-Z\\d]/g, '')\n .split('');\n\n joinedNameString.forEach(char => {\n alphaNumericEmojiIndex[char] = alphaNumericEmojiIndex[char] ?? {};\n\n alphaNumericEmojiIndex[char][emojiUnified(emoji)] = emoji;\n });\n}\n","import { Categories } from '../config/categoryConfig';\nimport { cdnUrl } from '../config/cdnUrls';\nimport { CustomEmoji } from '../config/customEmojiConfig';\nimport emojis from '../data/emojis';\nimport skinToneVariations, {\n skinTonesMapped\n} from '../data/skinToneVariations';\nimport { EmojiStyle, SkinTones } from '../types/exposedTypes';\n\nimport { DataEmoji, DataEmojis, EmojiProperties, WithName } from './DataTypes';\nimport { indexEmoji } from './alphaNumericEmojiIndex';\n\nexport function emojiNames(emoji: WithName): string[] {\n return emoji[EmojiProperties.name] ?? [];\n}\n\nexport function addedIn(emoji: DataEmoji): number {\n return parseFloat(emoji[EmojiProperties.added_in]);\n}\n\nexport function emojiName(emoji?: WithName): string {\n if (!emoji) {\n return '';\n }\n\n return emojiNames(emoji)[0];\n}\n\nexport function unifiedWithoutSkinTone(unified: string): string {\n const splat = unified.split('-');\n const [skinTone] = splat.splice(1, 1);\n\n if (skinTonesMapped[skinTone]) {\n return splat.join('-');\n }\n\n return unified;\n}\n\nexport function emojiUnified(emoji: DataEmoji, skinTone?: string): string {\n const unified = emoji[EmojiProperties.unified];\n\n if (!skinTone || !emojiHasVariations(emoji)) {\n return unified;\n }\n\n return emojiVariationUnified(emoji, skinTone) ?? unified;\n}\n\nexport function emojisByCategory(category: Categories): DataEmojis {\n // @ts-ignore\n return emojis?.[category] ?? [];\n}\n\n// WARNING: DO NOT USE DIRECTLY\nexport function emojiUrlByUnified(\n unified: string,\n emojiStyle: EmojiStyle\n): string {\n return `${cdnUrl(emojiStyle)}${unified}.png`;\n}\n\nexport function emojiVariations(emoji: DataEmoji): string[] {\n return emoji[EmojiProperties.variations] ?? [];\n}\n\nexport function emojiHasVariations(emoji: DataEmoji): boolean {\n return emojiVariations(emoji).length > 0;\n}\n\nexport function emojiVariationUnified(\n emoji: DataEmoji,\n skinTone?: string\n): string | undefined {\n return skinTone\n ? emojiVariations(emoji).find(variation => variation.includes(skinTone))\n : emojiUnified(emoji);\n}\n\nexport function emojiByUnified(unified?: string): DataEmoji | undefined {\n if (!unified) {\n return;\n }\n\n if (allEmojisByUnified[unified]) {\n return allEmojisByUnified[unified];\n }\n\n const withoutSkinTone = unifiedWithoutSkinTone(unified);\n return allEmojisByUnified[withoutSkinTone];\n}\n\nexport const allEmojis: DataEmojis = Object.values(emojis).flat();\n\nexport function setCustomEmojis(customEmojis: CustomEmoji[]): void {\n emojis[Categories.CUSTOM].length = 0;\n\n customEmojis.forEach(emoji => {\n const emojiData = customToRegularEmoji(emoji);\n\n emojis[Categories.CUSTOM].push(emojiData as never);\n\n if (allEmojisByUnified[emojiData[EmojiProperties.unified]]) {\n return;\n }\n\n allEmojis.push(emojiData);\n allEmojisByUnified[emojiData[EmojiProperties.unified]] = emojiData;\n indexEmoji(emojiData);\n });\n}\n\nfunction customToRegularEmoji(emoji: CustomEmoji): DataEmoji {\n return {\n [EmojiProperties.name]: emoji.names.map(name => name.toLowerCase()),\n [EmojiProperties.unified]: emoji.id.toLowerCase(),\n [EmojiProperties.added_in]: '0',\n [EmojiProperties.imgUrl]: emoji.imgUrl\n };\n}\n\nconst allEmojisByUnified: {\n [unified: string]: DataEmoji;\n} = {};\n\nsetTimeout(() => {\n allEmojis.reduce((allEmojis, Emoji) => {\n allEmojis[emojiUnified(Emoji)] = Emoji;\n\n if (emojiHasVariations(Emoji)) {\n emojiVariations(Emoji).forEach(variation => {\n allEmojis[variation] = Emoji;\n });\n }\n\n return allEmojis;\n }, allEmojisByUnified);\n});\n\nexport function activeVariationFromUnified(unified: string): SkinTones | null {\n const [, suspectedSkinTone] = unified.split('-') as [string, SkinTones];\n return skinToneVariations.includes(suspectedSkinTone)\n ? suspectedSkinTone\n : null;\n}\n","import * as React from 'react';\n\nimport { DEFAULT_REACTIONS } from '../components/Reactions/DEFAULT_REACTIONS';\nimport { GetEmojiUrl } from '../components/emoji/BaseEmojiProps';\nimport {\n setCustomEmojis,\n emojiUrlByUnified\n} from '../dataUtils/emojiSelectors';\nimport {\n EmojiClickData,\n EmojiStyle,\n SkinTonePickerLocation,\n SkinTones,\n SuggestionMode,\n Theme\n} from '../types/exposedTypes';\n\nimport {\n CategoriesConfig,\n baseCategoriesConfig,\n mergeCategoriesConfig\n} from './categoryConfig';\nimport { CustomEmoji } from './customEmojiConfig';\n\nconst KNOWN_FAILING_EMOJIS = ['2640-fe0f', '2642-fe0f', '2695-fe0f'];\n\nexport const DEFAULT_SEARCH_PLACEHOLDER = 'Search';\nexport const SEARCH_RESULTS_NO_RESULTS_FOUND = 'No results found';\nexport const SEARCH_RESULTS_SUFFIX =\n ' found. Use up and down arrow keys to navigate.';\nexport const SEARCH_RESULTS_ONE_RESULT_FOUND =\n '1 result' + SEARCH_RESULTS_SUFFIX;\nexport const SEARCH_RESULTS_MULTIPLE_RESULTS_FOUND =\n '%n results' + SEARCH_RESULTS_SUFFIX;\n\nexport function mergeConfig(\n userConfig: PickerConfig = {}\n): PickerConfigInternal {\n const base = basePickerConfig();\n\n const previewConfig = Object.assign(\n base.previewConfig,\n userConfig.previewConfig ?? {}\n );\n const config = Object.assign(base, userConfig);\n\n const categories = mergeCategoriesConfig(userConfig.categories, {\n suggestionMode: config.suggestedEmojisMode\n });\n\n setCustomEmojis(config.customEmojis ?? []);\n\n const skinTonePickerLocation = config.searchDisabled\n ? SkinTonePickerLocation.PREVIEW\n : config.skinTonePickerLocation;\n\n return {\n ...config,\n categories,\n previewConfig,\n skinTonePickerLocation\n };\n}\n\nexport function basePickerConfig(): PickerConfigInternal {\n return {\n autoFocusSearch: true,\n categories: baseCategoriesConfig(),\n className: '',\n customEmojis: [],\n defaultSkinTone: SkinTones.NEUTRAL,\n emojiStyle: EmojiStyle.APPLE,\n emojiVersion: null,\n getEmojiUrl: emojiUrlByUnified,\n height: 450,\n lazyLoadEmojis: false,\n previewConfig: {\n ...basePreviewConfig\n },\n searchDisabled: false,\n searchPlaceHolder: DEFAULT_SEARCH_PLACEHOLDER,\n searchPlaceholder: DEFAULT_SEARCH_PLACEHOLDER,\n skinTonePickerLocation: SkinTonePickerLocation.SEARCH,\n skinTonesDisabled: false,\n style: {},\n suggestedEmojisMode: SuggestionMode.FREQUENT,\n theme: Theme.LIGHT,\n unicodeToHide: new Set<string>(KNOWN_FAILING_EMOJIS),\n width: 350,\n reactionsDefaultOpen: false,\n reactions: DEFAULT_REACTIONS\n };\n}\n\nexport type PickerConfigInternal = {\n emojiVersion: string | null;\n searchPlaceHolder: string;\n searchPlaceholder: string;\n defaultSkinTone: SkinTones;\n skinTonesDisabled: boolean;\n autoFocusSearch: boolean;\n emojiStyle: EmojiStyle;\n categories: CategoriesConfig;\n theme: Theme;\n suggestedEmojisMode: SuggestionMode;\n lazyLoadEmojis: boolean;\n previewConfig: PreviewConfig;\n className: string;\n height: PickerDimensions;\n width: PickerDimensions;\n style: React.CSSProperties;\n getEmojiUrl: GetEmojiUrl;\n searchDisabled: boolean;\n skinTonePickerLocation: SkinTonePickerLocation;\n unicodeToHide: Set<string>;\n customEmojis: CustomEmoji[];\n reactionsDefaultOpen: boolean;\n reactions: string[];\n};\n\nexport type PreviewConfig = {\n defaultEmoji: string;\n defaultCaption: string;\n showPreview: boolean;\n};\n\nconst basePreviewConfig: PreviewConfig = {\n defaultEmoji: '1f60a',\n defaultCaption: \"What's your mood?\",\n showPreview: true\n};\n\ntype ConfigExternal = {\n previewConfig: Partial<PreviewConfig>;\n onEmojiClick: (emoji: EmojiClickData, event: MouseEvent) => void;\n} & Omit<PickerConfigInternal, 'previewConfig' | 'unicodeToHide'>;\n\nexport type PickerConfig = Partial<ConfigExternal>;\n\nexport type PickerDimensions = string | number;\n","import * as React from 'react';\n\nimport {\n basePickerConfig,\n mergeConfig,\n PickerConfig,\n PickerConfigInternal\n} from '../../config/config';\n\ntype Props = PickerConfig &\n Readonly<{\n children: React.ReactNode;\n }>;\n\nconst ConfigContext = React.createContext<PickerConfigInternal>(\n basePickerConfig()\n);\n\nexport function PickerConfigProvider({ children, ...config }: Props) {\n const mergedConfig = useSetConfig(config);\n\n return (\n <ConfigContext.Provider value={mergedConfig}>\n {children}\n </ConfigContext.Provider>\n );\n}\n\nexport function useSetConfig(config: PickerConfig) {\n const [mergedConfig, setMergedConfig] = React.useState(() =>\n mergeConfig(config)\n );\n\n React.useEffect(() => {\n if (config.customEmojis?.length !== mergedConfig.customEmojis?.length) {\n setMergedConfig(mergeConfig(config));\n }\n // not gonna...\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [config.customEmojis?.length]);\n\n return mergedConfig;\n}\n\nexport function usePickerConfig() {\n return React.useContext(ConfigContext);\n}\n","import React from 'react';\n\nimport { EmojiClickData } from '../types/exposedTypes';\n\nexport type MutableConfig = {\n onEmojiClick?: (emoji: EmojiClickData, event: MouseEvent) => void;\n};\n\nexport const MutableConfigContext = React.createContext<\n React.MutableRefObject<MutableConfig>\n>({} as React.MutableRefObject<MutableConfig>);\n\nexport function useMutableConfig(): React.MutableRefObject<MutableConfig> {\n const mutableConfig = React.useContext(MutableConfigContext);\n return mutableConfig;\n}\n\nexport function useDefineMutableConfig(\n config: MutableConfig\n): React.MutableRefObject<MutableConfig> {\n const MutableConfigRef = React.useRef<MutableConfig>({\n onEmojiClick: config.onEmojiClick || emptyFunc\n });\n\n React.useEffect(() => {\n MutableConfigRef.current.onEmojiClick = config.onEmojiClick || emptyFunc;\n }, [config.onEmojiClick]);\n\n return MutableConfigRef;\n}\n\nfunction emptyFunc() {}\n","import * as React from 'react';\n\nimport { usePickerConfig } from '../components/context/PickerConfigContext';\nimport {\n EmojiClickData,\n EmojiStyle,\n SkinTonePickerLocation,\n SkinTones,\n SuggestionMode,\n Theme\n} from '../types/exposedTypes';\n\nimport { CategoriesConfig } from './categoryConfig';\nimport {\n DEFAULT_SEARCH_PLACEHOLDER,\n SEARCH_RESULTS_NO_RESULTS_FOUND,\n SEARCH_RESULTS_ONE_RESULT_FOUND,\n SEARCH_RESULTS_MULTIPLE_RESULTS_FOUND,\n PickerDimensions,\n PreviewConfig\n} from './config';\nimport { CustomEmoji } from './customEmojiConfig';\nimport { useMutableConfig } from './mutableConfig';\n\nexport function useSearchPlaceHolderConfig(): string {\n const { searchPlaceHolder, searchPlaceholder } = usePickerConfig();\n return (\n [searchPlaceHolder, searchPlaceholder].find(\n p => p !== DEFAULT_SEARCH_PLACEHOLDER\n ) ?? DEFAULT_SEARCH_PLACEHOLDER\n );\n}\n\nexport function useDefaultSkinToneConfig(): SkinTones {\n const { defaultSkinTone } = usePickerConfig();\n return defaultSkinTone;\n}\n\nexport function useSkinTonesDisabledConfig(): boolean {\n const { skinTonesDisabled } = usePickerConfig();\n return skinTonesDisabled;\n}\n\nexport function useEmojiStyleConfig(): EmojiStyle {\n const { emojiStyle } = usePickerConfig();\n return emojiStyle;\n}\n\nexport function useAutoFocusSearchConfig(): boolean {\n const { autoFocusSearch } = usePickerConfig();\n return autoFocusSearch;\n}\n\nexport function useCategoriesConfig(): CategoriesConfig {\n const { categories } = usePickerConfig();\n return categories;\n}\n\nexport function useCustomEmojisConfig(): CustomEmoji[] {\n const { customEmojis } = usePickerConfig();\n return customEmojis;\n}\n\nexport function useOnEmojiClickConfig(): (\n emoji: EmojiClickData,\n event: MouseEvent\n) => void {\n const { current } = useMutableConfig();\n return current.onEmojiClick || (() => {});\n}\n\nexport function usePreviewConfig(): PreviewConfig {\n const { previewConfig } = usePickerConfig();\n return previewConfig;\n}\n\nexport function useThemeConfig(): Theme {\n const { theme } = usePickerConfig();\n\n return theme;\n}\n\nexport function useSuggestedEmojisModeConfig(): SuggestionMode {\n const { suggestedEmojisMode } = usePickerConfig();\n return suggestedEmojisMode;\n}\n\nexport function useLazyLoadEmojisConfig(): boolean {\n const { lazyLoadEmojis } = usePickerConfig();\n return lazyLoadEmojis;\n}\n\nexport function useClassNameConfig(): string {\n const { className } = usePickerConfig();\n return className;\n}\n\nexport function useStyleConfig(): React.CSSProperties {\n const { height, width, style } = usePickerConfig();\n return { height: getDimension(height), width: getDimension(width), ...style };\n}\n\nexport function useReactionsOpenConfig(): boolean {\n const { reactionsDefaultOpen } = usePickerConfig();\n return reactionsDefaultOpen;\n}\n\nexport function useEmojiVersionConfig(): string | null {\n const { emojiVersion } = usePickerConfig();\n return emojiVersion;\n}\n\nexport function useSearchDisabledConfig(): boolean {\n const { searchDisabled } = usePickerConfig();\n return searchDisabled;\n}\n\nexport function useSkinTonePickerLocationConfig(): SkinTonePickerLocation {\n const { skinTonePickerLocation } = usePickerConfig();\n return skinTonePickerLocation;\n}\n\nexport function useUnicodeToHide() {\n const { unicodeToHide } = usePickerConfig();\n return unicodeToHide;\n}\n\nexport function useReactionsConfig(): string[] {\n const { reactions } = usePickerConfig();\n return reactions;\n}\n\nexport function useGetEmojiUrlConfig(): (\n unified: string,\n style: EmojiStyle\n) => string {\n const { getEmojiUrl } = usePickerConfig();\n return getEmojiUrl;\n}\n\nfunction getDimension(dimensionConfig: PickerDimensions): PickerDimensions {\n return typeof dimensionConfig === 'number'\n ? `${dimensionConfig}px`\n : dimensionConfig;\n}\n\nexport function useSearchResultsConfig(searchResultsCount: number): string {\n const hasResults = searchResultsCount > 0;\n const isPlural = searchResultsCount > 1;\n\n if (hasResults) {\n return isPlural\n ? SEARCH_RESULTS_MULTIPLE_RESULTS_FOUND.replace(\n '%n',\n searchResultsCount.toString()\n )\n : SEARCH_RESULTS_ONE_RESULT_FOUND;\n }\n\n return SEARCH_RESULTS_NO_RESULTS_FOUND;\n}\n","import { NullableElement } from './selectors';\n\nexport function elementCountInRow(\n parent: NullableElement,\n element: NullableElement\n): number {\n if (!parent || !element) {\n return 0;\n }\n\n const parentWidth = parent.getBoundingClientRect().width;\n const elementWidth = element.getBoundingClientRect().width;\n return Math.floor(parentWidth / elementWidth);\n}\n\nexport function elementIndexInRow(\n parent: NullableElement,\n element: NullableElement\n): number {\n if (!parent || !element) {\n return 0;\n }\n\n const elementWidth = element.getBoundingClientRect().width;\n const elementLeft = element.getBoundingClientRect().left;\n const parentLeft = parent.getBoundingClientRect().left;\n\n return Math.floor((elementLeft - parentLeft) / elementWidth);\n}\n\nexport function rowNumber(\n parent: NullableElement,\n element: NullableElement\n): number {\n if (!parent || !element) {\n return 0;\n }\n\n const elementHeight = element.getBoundingClientRect().height;\n const elementTop = element.getBoundingClientRect().top;\n const parentTop = parent.getBoundingClientRect().top;\n return Math.round((elementTop - parentTop) / elementHeight);\n}\n\nexport function hasNextRow(\n parent: NullableElement,\n element: NullableElement\n): boolean {\n if (!parent || !element) {\n return false;\n }\n\n const elementHeight = element.getBoundingClientRect().height;\n const elementTop = element.getBoundingClientRect().top;\n const parentTop = parent.getBoundingClientRect().top;\n const parentHeight = parent.getBoundingClientRect().height;\n\n return Math.round(elementTop - parentTop + elementHeight) < parentHeight;\n}\n\nfunction getRowElements(\n elements: HTMLElement[],\n row: number,\n elementsInRow: number\n): HTMLElement[] {\n if (row === -1) {\n const lastRow = Math.floor((elements.length - 1) / elementsInRow);\n const firstElementIndex = lastRow * elementsInRow;\n const lastElementIndex = elements.length - 1;\n return elements.slice(firstElementIndex, lastElementIndex + 1);\n }\n\n return elements.slice(row * elementsInRow, (row + 1) * elementsInRow);\n}\n\nfunction getNextRowElements(\n allElements: HTMLElement[],\n currentRow: number,\n elementsInRow: number\n): HTMLElement[] {\n const nextRow = currentRow + 1;\n\n if (nextRow * elementsInRow > allElements.length) {\n return [];\n }\n\n return getRowElements(allElements, nextRow, elementsInRow);\n}\n\nexport function getElementInRow(\n elements: HTMLElement[],\n row: number,\n elementsInRow: number,\n indexInRow: number\n): NullableElement {\n const rowElements = getRowElements(elements, row, elementsInRow);\n // get element, default to last\n return rowElements[indexInRow] || rowElements[rowElements.length - 1] || null;\n}\n\nexport function getElementInNextRow(\n allElements: HTMLElement[],\n currentRow: number,\n elementsInRow: number,\n index: number\n): NullableElement {\n const nextRowElements = getNextRowElements(\n allElements,\n currentRow,\n elementsInRow\n );\n\n // return item in index, or last item in row\n return (\n nextRowElements[index] ||\n nextRowElements[nextRowElements.length - 1] ||\n null\n );\n}\n\nexport function getElementInPrevRow(\n allElements: HTMLElement[],\n currentRow: number,\n elementsInRow: number,\n index: number\n): NullableElement {\n const prevRowElements = getRowElements(\n allElements,\n currentRow - 1,\n elementsInRow\n );\n\n // default to last\n return (\n prevRowElements[index] ||\n prevRowElements[prevRowElements.length - 1] ||\n null\n );\n}\n\nexport function firstVisibleElementInContainer(\n parent: NullableElement,\n elements: HTMLElement[]\n): NullableElement {\n if (!parent || !elements.length) {\n return null;\n }\n\n const parentTop = parent.getBoundingClientRect().top;\n const parentBottom = parent.getBoundingClientRect().bottom;\n\n const visibleElements = elements.find(element => {\n const elementTop = element.getBoundingClientRect().top;\n const elementBottom = element.getBoundingClientRect().bottom;\n\n return (\n (elementTop >= parentTop && elementTop <= parentBottom) ||\n (elementBottom >= parentTop && elementBottom <= parentBottom)\n );\n });\n\n return visibleElements || null;\n}\n\nexport function hasNextElementSibling(element: HTMLElement) {\n return !!element.nextElementSibling;\n}\n","import { DataEmoji } from '../dataUtils/DataTypes';\nimport {\n emojiByUnified,\n unifiedWithoutSkinTone\n} from '../dataUtils/emojiSelectors';\n\nimport { asSelectors, ClassNames } from './classNames';\nimport { firstVisibleElementInContainer } from './elementPositionInRow';\n\nexport type NullableElement = HTMLElement | null;\n\nexport const EmojiButtonSelector = `button${asSelectors(ClassNames.emoji)}`;\nexport const VisibleEmojiSelector = [\n EmojiButtonSelector,\n asSelectors(ClassNames.visible),\n `:not(${asSelectors(ClassNames.hidden)})`\n].join('');\n\nexport function buttonFromTarget(\n emojiElement: NullableElement\n): HTMLButtonElement | null {\n return emojiElement?.closest(EmojiButtonSelector) ?? null;\n}\n\nexport function isEmojiButton(element: NullableElement): boolean {\n if (!element) {\n return false;\n }\n\n return element.matches(EmojiButtonSelector);\n}\n\nexport function emojiFromElement(\n element: NullableElement\n): [DataEmoji, string] | [] {\n const originalUnified = originalUnifiedFromEmojiElement(element);\n const unified = unifiedFromEmojiElement(element);\n\n if (!originalUnified) {\n return [];\n }\n\n const emoji = emojiByUnified(unified ?? originalUnified);\n\n if (!emoji) {\n return [];\n }\n\n return [emoji, unified as string];\n}\n\nexport function isEmojiElement(element: NullableElement): boolean {\n return Boolean(\n element?.matches(EmojiButtonSelector) ||\n element?.parentElement?.matches(EmojiButtonSelector)\n );\n}\n\nexport function categoryLabelFromCategory(\n category: NullableElement\n): NullableElement {\n return category?.querySelector(asSelectors(ClassNames.label)) ?? null;\n}\n\nexport function closestCategoryLabel(\n element: NullableElement\n): NullableElement {\n const category = closestCategory(element);\n return categoryLabelFromCategory(category);\n}\n\nexport function elementHeight(element: NullableElement): number {\n return element?.clientHeight ?? 0;\n}\n\nexport function emojiTrueOffsetTop(element: NullableElement): number {\n if (!element) {\n return 0;\n }\n\n const button = buttonFromTarget(element);\n const category = closestCategory(button);\n\n // compensate for the label height\n const labelHeight = categoryLabelHeight(category);\n\n return elementOffsetTop(button) + elementOffsetTop(category) + labelHeight;\n}\n\nexport function categoryLabelHeight(category: NullableElement): number {\n if (!category) {\n return 0;\n }\n\n const categoryWithoutLabel = category.querySelector(\n asSelectors(ClassNames.categoryContent)\n );\n\n return (\n (category?.clientHeight ?? 0) - (categoryWithoutLabel?.clientHeight ?? 0)\n );\n}\n\nexport function isEmojiBehindLabel(emoji: NullableElement): boolean {\n if (!emoji) {\n return false;\n }\n\n return (\n emojiDistanceFromScrollTop(emoji) <\n categoryLabelHeight(closestCategory(emoji))\n );\n}\n\nexport function queryScrollBody(root: NullableElement): NullableElement {\n if (!root) return null;\n\n return root.matches(asSelectors(ClassNames.scrollBody))\n ? root\n : root.querySelector(asSelectors(ClassNames.scrollBody));\n}\n\nexport function emojiDistanceFromScrollTop(emoji: NullableElement): number {\n if (!emoji) {\n return 0;\n }\n\n return emojiTrueOffsetTop(emoji) - (closestScrollBody(emoji)?.scrollTop ?? 0);\n}\n\nexport function closestScrollBody(element: NullableElement): NullableElement {\n if (!element) {\n return null;\n }\n\n return element.closest(asSelectors(ClassNames.scrollBody)) ?? null;\n}\n\nexport function emojiTruOffsetLeft(element: NullableElement): number {\n const button = buttonFromTarget(element);\n const category = closestCategory(button);\n\n return elementOffsetLeft(button) + elementOffsetLeft(category);\n}\n\nfunction elementOffsetTop(element: NullableElement): number {\n return element?.offsetTop ?? 0;\n}\n\nfunction elementOffsetLeft(element: NullableElement): number {\n return element?.offsetLeft ?? 0;\n}\n\nexport function unifiedFromEmojiElement(emoji: NullableElement): string | null {\n return elementDataSetKey(buttonFromTarget(emoji), 'unified') ?? null;\n}\n\nexport function originalUnifiedFromEmojiElement(\n emoji: NullableElement\n): string | null {\n const unified = unifiedFromEmojiElement(emoji);\n\n if (unified) {\n return unifiedWithoutSkinTone(unified);\n }\n return null;\n}\n\nfunction elementDataSetKey(\n element: NullableElement,\n key: string\n): string | null {\n return elementDataSet(element)[key] ?? null;\n}\n\nfunction elementDataSet(element: NullableElement): DOMStringMap {\n return element?.dataset ?? {};\n}\n\nexport function isVisibleEmoji(element: HTMLElement) {\n return element.classList.contains(ClassNames.visible);\n}\n\nexport function isHidden(element: NullableElement) {\n if (!element) return true;\n\n return element.classList.contains(ClassNames.hidden);\n}\n\nexport function allVisibleEmojis(parent: NullableElement) {\n if (!parent) {\n return [];\n }\n\n return Array.from(\n parent.querySelectorAll(VisibleEmojiSelector)\n ) as HTMLElement[];\n}\n\nexport function lastVisibleEmoji(element: NullableElement): NullableElement {\n if (!element) return null;\n\n const allEmojis = allVisibleEmojis(element);\n const [last] = allEmojis.slice(-1);\n if (!last) {\n return null;\n }\n\n if (!isVisibleEmoji(last)) {\n return prevVisibleEmoji(last);\n }\n\n return last;\n}\n\nexport function nextVisibleEmoji(element: HTMLElement): NullableElement {\n const next = element.nextElementSibling as HTMLElement;\n\n if (!next) {\n return firstVisibleEmoji(nextCategory(element));\n }\n\n if (!isVisibleEmoji(next)) {\n return nextVisibleEmoji(next);\n }\n\n return next;\n}\n\nexport function prevVisibleEmoji(element: HTMLElement): NullableElement {\n const prev = element.previousElementSibling as HTMLElement;\n\n if (!prev) {\n return lastVisibleEmoji(prevCategory(element));\n }\n\n if (!isVisibleEmoji(prev)) {\n return prevVisibleEmoji(prev);\n }\n\n return prev;\n}\n\nexport function firstVisibleEmoji(parent: NullableElement) {\n if (!parent) {\n return null;\n }\n\n const allEmojis = allVisibleEmojis(parent);\n\n return firstVisibleElementInContainer(parent, allEmojis);\n}\n\nexport function prevCategory(element: NullableElement): NullableElement {\n const category = closestCategory(element);\n\n if (!category) {\n return null;\n }\n\n const prev = category.previousElementSibling as HTMLElement;\n\n if (!prev) {\n return null;\n }\n\n if (isHidden(prev)) {\n return prevCategory(prev);\n }\n\n return prev;\n}\n\nexport function nextCategory(element: NullableElement): NullableElement {\n const category = closestCategory(element);\n\n if (!category) {\n return null;\n }\n\n const next = category.nextElementSibling as HTMLElement;\n\n if (!next) {\n return null;\n }\n\n if (isHidden(next)) {\n return nextCategory(next);\n }\n\n return next;\n}\n\nexport function closestCategory(element: NullableElement) {\n if (!element) {\n return null;\n }\n return element.closest(asSelectors(ClassNames.category)) as HTMLElement;\n}\n\nexport function closestCategoryContent(element: NullableElement) {\n if (!element) {\n return null;\n }\n return element.closest(\n asSelectors(ClassNames.categoryContent)\n ) as HTMLElement;\n}\n","import { useRef, useState } from 'react';\n\nexport function useDebouncedState<T>(\n initialValue: T,\n delay: number = 0\n): [T, (value: T) => Promise<T>] {\n const [state, setState] = useState<T>(initialValue);\n const timer = useRef<number | null>(null);\n\n function debouncedSetState(value: T) {\n return new Promise<T>(resolve => {\n if (timer.current) {\n clearTimeout(timer.current);\n }\n\n timer.current = window?.setTimeout(() => {\n setState(value);\n resolve(value);\n }, delay);\n });\n }\n\n return [state, debouncedSetState];\n}\n","import { useUnicodeToHide } from \"../config/useConfig\";\n\nexport function useIsUnicodeHidden() {\n const unicodeToHide = useUnicodeToHide();\n return (emojiUnified: string) => unicodeToHide.has(emojiUnified);\n }\n","import { useRef, useMemo } from 'react';\n\nimport { useEmojiVersionConfig } from '../config/useConfig';\nimport { DataEmoji } from '../dataUtils/DataTypes';\nimport {\n addedIn,\n allEmojis,\n emojiUnified,\n unifiedWithoutSkinTone\n} from '../dataUtils/emojiSelectors';\n\nimport { useIsUnicodeHidden } from './useHideEmojisByUniocode';\n\nexport function useDisallowedEmojis() {\n const DisallowedEmojisRef = useRef<Record<string, boolean>>({});\n const emojiVersionConfig = useEmojiVersionConfig();\n\n return useMemo(() => {\n const emojiVersion = parseFloat(`${emojiVersionConfig}`);\n\n if (!emojiVersionConfig || Number.isNaN(emojiVersion)) {\n return DisallowedEmojisRef.current;\n }\n\n return allEmojis.reduce((disallowedEmojis, emoji) => {\n if (addedInNewerVersion(emoji, emojiVersion)) {\n disallowedEmojis[emojiUnified(emoji)] = true;\n }\n\n return disallowedEmojis;\n }, DisallowedEmojisRef.current);\n }, [emojiVersionConfig]);\n}\n\nexport function useIsEmojiDisallowed() {\n const disallowedEmojis = useDisallowedEmojis();\n const isUnicodeHidden = useIsUnicodeHidden();\n\n return function isEmojiDisallowed(emoji: DataEmoji) {\n const unified = unifiedWithoutSkinTone(emojiUnified(emoji));\n\n return Boolean(disallowedEmojis[unified] || isUnicodeHidden(unified));\n };\n}\n\nfunction addedInNewerVersion(\n emoji: DataEmoji,\n supportedLevel: number\n): boolean {\n return addedIn(emoji) > supportedLevel;\n}\n","import { useEffect } from 'react';\nimport * as React from 'react';\n\nexport function useMarkInitialLoad(\n dispatch: React.Dispatch<React.SetStateAction<boolean>>\n) {\n useEffect(() => {\n dispatch(true);\n }, [dispatch]);\n}\n","import * as React from 'react';\nimport { useState } from 'react';\n\nimport {\n useDefaultSkinToneConfig,\n useReactionsOpenConfig\n} from '../../config/useConfig';\nimport { DataEmoji } from '../../dataUtils/DataTypes';\nimport { alphaNumericEmojiIndex } from '../../dataUtils/alphaNumericEmojiIndex';\nimport { useDebouncedState } from '../../hooks/useDebouncedState';\nimport { useDisallowedEmojis } from '../../hooks/useDisallowedEmojis';\nimport { FilterDict } from '../../hooks/useFilter';\nimport { useMarkInitialLoad } from '../../hooks/useInitialLoad';\nimport { SkinTones } from '../../types/exposedTypes';\n\nexport function PickerContextProvider({ children }: Props) {\n const disallowedEmojis = useDisallowedEmojis();\n const defaultSkinTone = useDefaultSkinToneConfig();\n const reactionsDefaultOpen = useReactionsOpenConfig();\n\n // Initialize the filter with the inititial dictionary\n const filterRef = React.useRef<FilterState>(alphaNumericEmojiIndex);\n const disallowClickRef = React.useRef<boolean>(false);\n const disallowMouseRef = React.useRef<boolean>(false);\n const disallowedEmojisRef = React.useRef<Record<string, boolean>>(\n disallowedEmojis\n );\n\n const suggestedUpdateState = useDebouncedState(Date.now(), 200);\n const searchTerm = useDebouncedState('', 100);\n const skinToneFanOpenState = useState<boolean>(false);\n const activeSkinTone = useState<SkinTones>(defaultSkinTone);\n const activeCategoryState = useState<ActiveCategoryState>(null);\n const emojisThatFailedToLoadState = useState<Set<string>>(new Set());\n const emojiVariationPickerState = useState<DataEmoji | null>(null);\n const reactionsModeState = useState(reactionsDefaultOpen);\n const [isPastInitialLoad, setIsPastInitialLoad] = useState(false);\n\n useMarkInitialLoad(setIsPastInitialLoad);\n\n return (\n <PickerContext.Provider\n value={{\n activeCategoryState,\n activeSkinTone,\n disallowClickRef,\n disallowMouseRef,\n disallowedEmojisRef,\n emojiVariationPickerState,\n emojisThatFailedToLoadState,\n filterRef,\n isPastInitialLoad,\n searchTerm,\n skinToneFanOpenState,\n suggestedUpdateState,\n reactionsModeState\n }}\n >\n {children}\n </PickerContext.Provider>\n );\n}\n\ntype ReactState<T> = [T, React.Dispatch<React.SetStateAction<T>>];\n\nconst PickerContext = React.createContext<{\n searchTerm: [string, (term: string) => Promise<string>];\n suggestedUpdateState: [number, (term: number) => void];\n activeCategoryState: ReactState<ActiveCategoryState>;\n activeSkinTone: ReactState<SkinTones>;\n emojisThatFailedToLoadState: ReactState<Set<string>>;\n isPastInitialLoad: boolean;\n emojiVariationPickerState: ReactState<DataEmoji | null>;\n skinToneFanOpenState: ReactState<boolean>;\n filterRef: React.MutableRefObject<FilterState>;\n disallowClickRef: React.MutableRefObject<boolean>;\n disallowMouseRef: React.MutableRefObject<boolean>;\n disallowedEmojisRef: React.MutableRefObject<Record<string, boolean>>;\n reactionsModeState: ReactState<boolean>;\n}>({\n activeCategoryState: [null, () => {}],\n activeSkinTone: [SkinTones.NEUTRAL, () => {}],\n disallowClickRef: { current: false },\n disallowMouseRef: { current: false },\n disallowedEmojisRef: { current: {} },\n emojiVariationPickerState: [null, () => {}],\n emojisThatFailedToLoadState: [new Set(), () => {}],\n filterRef: { current: {} },\n isPastInitialLoad: true,\n searchTerm: ['', () => new Promise<string>(() => undefined)],\n skinToneFanOpenState: [false, () => {}],\n suggestedUpdateState: [Date.now(), () => {}],\n reactionsModeState: [false, () => {}]\n});\n\ntype Props = Readonly<{\n children: React.ReactNode;\n}>;\n\nexport function useFilterRef() {\n const { filterRef } = React.useContext(PickerContext);\n return filterRef;\n}\n\nexport function useDisallowClickRef() {\n const { disallowClickRef } = React.useContext(PickerContext);\n return disallowClickRef;\n}\n\nexport function useDisallowMouseRef() {\n const { disallowMouseRef } = React.useContext(PickerContext);\n return disallowMouseRef;\n}\n\nexport function useReactionsModeState() {\n const { reactionsModeState } = React.useContext(PickerContext);\n return reactionsModeState;\n}\n\nexport function useSearchTermState() {\n const { searchTerm } = React.useContext(PickerContext);\n return searchTerm;\n}\n\nexport function useActiveSkinToneState(): [\n SkinTones,\n (skinTone: SkinTones) => void\n] {\n const { activeSkinTone } = React.useContext(PickerContext);\n return activeSkinTone;\n}\n\nexport function useEmojisThatFailedToLoadState() {\n const { emojisThatFailedToLoadState } = React.useContext(PickerContext);\n return emojisThatFailedToLoadState;\n}\n\nexport function useIsPastInitialLoad(): boolean {\n const { isPastInitialLoad } = React.useContext(PickerContext);\n return isPastInitialLoad;\n}\n\nexport function useEmojiVariationPickerState() {\n const { emojiVariationPickerState } = React.useContext(PickerContext);\n return emojiVariationPickerState;\n}\n\nexport function useSkinToneFanOpenState() {\n const { skinToneFanOpenState } = React.useContext(PickerContext);\n return skinToneFanOpenState;\n}\n\nexport function useDisallowedEmojisRef() {\n const { disallowedEmojisRef } = React.useContext(PickerContext);\n return disallowedEmojisRef;\n}\n\nexport function useUpdateSuggested(): [number, () => void] {\n const { suggestedUpdateState } = React.useContext(PickerContext);\n\n const [suggestedUpdated, setsuggestedUpdate] = suggestedUpdateState;\n return [\n suggestedUpdated,\n function updateSuggested() {\n setsuggestedUpdate(Date.now());\n }\n ];\n}\n\nexport type FilterState = Record<string, FilterDict>;\n\ntype ActiveCategoryState = null | string;\n","export function parseNativeEmoji(unified: string): string {\n return unified\n .split('-')\n .map(hex => String.fromCodePoint(parseInt(hex, 16)))\n .join('');\n}\n","import { SkinTones, SuggestionMode } from '../types/exposedTypes';\n\nimport { DataEmoji } from './DataTypes';\nimport { emojiUnified } from './emojiSelectors';\n\nconst SUGGESTED_LS_KEY = 'epr_suggested';\n\ntype SuggestedItem = {\n unified: string;\n original: string;\n count: number;\n};\n\ntype Suggested = SuggestedItem[];\n\nexport function getSuggested(mode?: SuggestionMode): Suggested {\n try {\n if (!window?.localStorage) {\n return [];\n }\n const recent = JSON.parse(\n window?.localStorage.getItem(SUGGESTED_LS_KEY) ?? '[]'\n ) as Suggested;\n\n if (mode === SuggestionMode.FREQUENT) {\n return recent.sort((a, b) => b.count - a.count);\n }\n\n return recent;\n } catch {\n return [];\n }\n}\n\nexport function setSuggested(emoji: DataEmoji, skinTone: SkinTones) {\n const recent = getSuggested();\n\n const unified = emojiUnified(emoji, skinTone);\n const originalUnified = emojiUnified(emoji);\n\n let existing = recent.find(({ unified: u }) => u === unified);\n\n let nextList: SuggestedItem[];\n\n if (existing) {\n nextList = [existing].concat(recent.filter(i => i !== existing));\n } else {\n existing = {\n unified,\n original: originalUnified,\n count: 0\n };\n nextList = [existing, ...recent];\n }\n\n existing.count++;\n\n nextList.length = Math.min(nextList.length, 14);\n\n try {\n window?.localStorage.setItem(SUGGESTED_LS_KEY, JSON.stringify(nextList));\n // Prevents the change from being seen immediately.\n } catch {\n // ignore\n }\n}\n","import {\n Categories,\n CategoryConfig,\n CustomCategoryConfig\n} from '../config/categoryConfig';\nimport { CustomEmoji } from '../config/customEmojiConfig';\nimport { DataEmoji } from '../dataUtils/DataTypes';\n\nexport function isCustomCategory(\n category: CategoryConfig | CustomCategoryConfig\n): category is CustomCategoryConfig {\n return category.category === Categories.CUSTOM;\n}\n\nexport function isCustomEmoji(emoji: Partial<DataEmoji>): emoji is CustomEmoji {\n return emoji.imgUrl !== undefined;\n}\n","import { useCallback } from 'react';\n\nimport {\n useEmojiVariationPickerState,\n useSkinToneFanOpenState\n} from '../components/context/PickerContext';\n\nexport function useCloseAllOpenToggles() {\n const [variationPicker, setVariationPicker] = useEmojiVariationPickerState();\n const [skinToneFanOpen, setSkinToneFanOpen] = useSkinToneFanOpenState();\n\n const closeAllOpenToggles = useCallback(() => {\n if (variationPicker) {\n setVariationPicker(null);\n }\n\n if (skinToneFanOpen) {\n setSkinToneFanOpen(false);\n }\n }, [\n variationPicker,\n skinToneFanOpen,\n setVariationPicker,\n setSkinToneFanOpen\n ]);\n\n return closeAllOpenToggles;\n}\n\nexport function useHasOpenToggles() {\n const [variationPicker] = useEmojiVariationPickerState();\n const [skinToneFanOpen] = useSkinToneFanOpenState();\n\n return function hasOpenToggles() {\n return !!variationPicker || skinToneFanOpen;\n };\n}\n","import { NullableElement } from './selectors';\n\nexport function focusElement(element: NullableElement) {\n if (!element) {\n return;\n }\n\n requestAnimationFrame(() => {\n element.focus();\n });\n}\n\nexport function focusPrevElementSibling(element: NullableElement) {\n if (!element) return;\n\n const prev = element.previousElementSibling as HTMLElement;\n\n focusElement(prev);\n}\n\nexport function focusNextElementSibling(element: NullableElement) {\n if (!element) return;\n\n const next = element.nextElementSibling as HTMLElement;\n\n focusElement(next);\n}\n\nexport function focusFirstElementChild(element: NullableElement) {\n if (!element) return;\n\n const first = element.firstElementChild as HTMLElement;\n\n focusElement(first);\n}\n","import * as React from 'react';\n\nimport { focusElement } from '../../DomUtils/focusElement';\nimport { NullableElement } from '../../DomUtils/selectors';\n\nexport function ElementRefContextProvider({\n children\n}: {\n children: React.ReactNode;\n}) {\n const PickerMainRef = React.useRef<HTMLElement>(null);\n const AnchoredEmojiRef = React.useRef<HTMLElement>(null);\n const BodyRef = React.useRef<HTMLDivElement>(null);\n const SearchInputRef = React.useRef<HTMLInputElement>(null);\n const SkinTonePickerRef = React.useRef<HTMLDivElement>(null);\n const CategoryNavigationRef = React.useRef<HTMLDivElement>(null);\n const VariationPickerRef = React.useRef<HTMLDivElement>(null);\n const ReactionsRef = React.useRef<HTMLUListElement>(null);\n\n return (\n <ElementRefContext.Provider\n value={{\n AnchoredEmojiRef,\n BodyRef,\n CategoryNavigationRef,\n PickerMainRef,\n SearchInputRef,\n SkinTonePickerRef,\n VariationPickerRef,\n ReactionsRef\n }}\n >\n {children}\n </ElementRefContext.Provider>\n );\n}\n\nexport type ElementRef<\n E extends HTMLElement = HTMLElement\n> = React.MutableRefObject<E | null>;\n\ntype ElementRefs = {\n PickerMainRef: ElementRef;\n AnchoredEmojiRef: ElementRef;\n SkinTonePickerRef: ElementRef<HTMLDivElement>;\n SearchInputRef: ElementRef<HTMLInputElement>;\n BodyRef: ElementRef<HTMLDivElement>;\n CategoryNavigationRef: ElementRef<HTMLDivElement>;\n VariationPickerRef: ElementRef<HTMLDivElement>;\n ReactionsRef: ElementRef<HTMLUListElement>;\n};\n\nconst ElementRefContext = React.createContext<ElementRefs>({\n AnchoredEmojiRef: React.createRef(),\n BodyRef: React.createRef(),\n CategoryNavigationRef: React.createRef(),\n PickerMainRef: React.createRef(),\n SearchInputRef: React.createRef(),\n SkinTonePickerRef: React.createRef(),\n VariationPickerRef: React.createRef(),\n ReactionsRef: React.createRef()\n});\n\nfunction useElementRef() {\n return React.useContext(ElementRefContext);\n}\n\nexport function usePickerMainRef() {\n return useElementRef()['PickerMainRef'];\n}\n\nexport function useAnchoredEmojiRef() {\n return useElementRef()['AnchoredEmojiRef'];\n}\n\nexport function useSetAnchoredEmojiRef(): (target: NullableElement) => void {\n const AnchoredEmojiRef = useAnchoredEmojiRef();\n return (target: NullableElement) => {\n if (target === null && AnchoredEmojiRef.current !== null) {\n focusElement(AnchoredEmojiRef.current);\n }\n\n AnchoredEmojiRef.current = target;\n };\n}\n\nexport function useBodyRef() {\n return useElementRef()['BodyRef'];\n}\n\nexport function useReactionsRef() {\n return useElementRef()['ReactionsRef'];\n}\n\nexport function useSearchInputRef() {\n return useElementRef()['SearchInputRef'];\n}\n\nexport function useSkinTonePickerRef() {\n return useElementRef()['SkinTonePickerRef'];\n}\n\nexport function useCategoryNavigationRef() {\n return useElementRef()['CategoryNavigationRef'];\n}\n\nexport function useVariationPickerRef() {\n return useElementRef()['VariationPickerRef'];\n}\n","import { emojiFromElement, NullableElement } from '../DomUtils/selectors';\nimport { useSetAnchoredEmojiRef } from '../components/context/ElementRefContext';\nimport { useEmojiVariationPickerState } from '../components/context/PickerContext';\n\nexport default function useSetVariationPicker() {\n const setAnchoredEmojiRef = useSetAnchoredEmojiRef();\n const [, setEmojiVariationPicker] = useEmojiVariationPickerState();\n\n return function setVariationPicker(element: NullableElement) {\n const [emoji] = emojiFromElement(element);\n\n if (emoji) {\n setAnchoredEmojiRef(element);\n setEmojiVariationPicker(emoji);\n }\n };\n}\n","import * as React from 'react';\nimport { useEffect, useRef } from 'react';\n\nimport {\n emojiFromElement,\n isEmojiElement,\n NullableElement\n} from '../DomUtils/selectors';\nimport {\n useActiveSkinToneState,\n useDisallowClickRef,\n useEmojiVariationPickerState,\n useUpdateSuggested\n} from '../components/context/PickerContext';\nimport { GetEmojiUrl } from '../components/emoji/BaseEmojiProps';\nimport {\n useEmojiStyleConfig,\n useGetEmojiUrlConfig,\n useOnEmojiClickConfig\n} from '../config/useConfig';\nimport { DataEmoji } from '../dataUtils/DataTypes';\nimport {\n activeVariationFromUnified,\n emojiHasVariations,\n emojiNames,\n emojiUnified\n} from '../dataUtils/emojiSelectors';\nimport { parseNativeEmoji } from '../dataUtils/parseNativeEmoji';\nimport { setSuggested } from '../dataUtils/suggested';\nimport { isCustomEmoji } from '../typeRefinements/typeRefinements';\nimport { EmojiClickData, SkinTones, EmojiStyle } from '../types/exposedTypes';\n\nimport { useCloseAllOpenToggles } from './useCloseAllOpenToggles';\nimport useSetVariationPicker from './useSetVariationPicker';\n\nexport function useMouseDownHandlers(\n BodyRef: React.MutableRefObject<NullableElement>\n) {\n const mouseDownTimerRef = useRef<undefined | number>();\n const setVariationPicker = useSetVariationPicker();\n const disallowClickRef = useDisallowClickRef();\n const [, setEmojiVariationPicker] = useEmojiVariationPickerState();\n const closeAllOpenToggles = useCloseAllOpenToggles();\n const [activeSkinTone] = useActiveSkinToneState();\n const onEmojiClick = useOnEmojiClickConfig();\n const [, updateSuggested] = useUpdateSuggested();\n const getEmojiUrl = useGetEmojiUrlConfig();\n const activeEmojiStyle = useEmojiStyleConfig();\n\n const onClick = React.useCallback(\n function onClick(event: MouseEvent) {\n if (disallowClickRef.current) {\n return;\n }\n\n closeAllOpenToggles();\n\n const [emoji, unified] = emojiFromEvent(event);\n\n if (!emoji || !unified) {\n return;\n }\n\n const skinToneToUse =\n activeVariationFromUnified(unified) || activeSkinTone;\n\n updateSuggested();\n setSuggested(emoji, skinToneToUse);\n onEmojiClick(\n emojiClickOutput(emoji, skinToneToUse, activeEmojiStyle, getEmojiUrl),\n event\n );\n },\n [\n activeSkinTone,\n closeAllOpenToggles,\n disallowClickRef,\n onEmojiClick,\n updateSuggested,\n getEmojiUrl,\n activeEmojiStyle\n ]\n );\n\n const onMouseDown = React.useCallback(\n function onMouseDown(event: MouseEvent) {\n if (mouseDownTimerRef.current) {\n clearTimeout(mouseDownTimerRef.current);\n }\n\n const [emoji] = emojiFromEvent(event);\n\n if (!emoji || !emojiHasVariations(emoji)) {\n return;\n }\n\n mouseDownTimerRef.current = window?.setTimeout(() => {\n disallowClickRef.current = true;\n mouseDownTimerRef.current = undefined;\n closeAllOpenToggles();\n setVariationPicker(event.target as HTMLElement);\n setEmojiVariationPicker(emoji);\n }, 500);\n },\n [\n disallowClickRef,\n closeAllOpenToggles,\n setVariationPicker,\n setEmojiVariationPicker\n ]\n );\n const onMouseUp = React.useCallback(\n function onMouseUp() {\n if (mouseDownTimerRef.current) {\n clearTimeout(mouseDownTimerRef.current);\n mouseDownTimerRef.current = undefined;\n } else if (disallowClickRef.current) {\n // The problem we're trying to overcome here\n // is that the emoji has both mouseup and click events\n // and when releasing a mouseup event\n // the click gets triggered too\n // So we're disallowing the click event for a short time\n\n requestAnimationFrame(() => {\n disallowClickRef.current = false;\n });\n }\n },\n [disallowClickRef]\n );\n\n useEffect(() => {\n if (!BodyRef.current) {\n return;\n }\n const bodyRef = BodyRef.current;\n bodyRef.addEventListener('click', onClick, {\n passive: true\n });\n\n bodyRef.addEventListener('mousedown', onMouseDown, {\n passive: true\n });\n bodyRef.addEventListener('mouseup', onMouseUp, {\n passive: true\n });\n\n return () => {\n bodyRef?.removeEventListener('click', onClick);\n bodyRef?.removeEventListener('mousedown', onMouseDown);\n bodyRef?.removeEventListener('mouseup', onMouseUp);\n };\n }, [BodyRef, onClick, onMouseDown, onMouseUp]);\n}\n\nfunction emojiFromEvent(event: MouseEvent): [DataEmoji, string] | [] {\n const target = event?.target as HTMLElement;\n if (!isEmojiElement(target)) {\n return [];\n }\n\n return emojiFromElement(target);\n}\n\nfunction emojiClickOutput(\n emoji: DataEmoji,\n activeSkinTone: SkinTones,\n activeEmojiStyle: EmojiStyle,\n getEmojiUrl: GetEmojiUrl\n): EmojiClickData {\n const names = emojiNames(emoji);\n\n if (isCustomEmoji(emoji)) {\n const unified = emojiUnified(emoji);\n return {\n activeSkinTone,\n emoji: unified,\n getImageUrl() {\n return emoji.imgUrl;\n },\n imageUrl: emoji.imgUrl,\n isCustom: true,\n names,\n unified,\n unifiedWithoutSkinTone: unified\n };\n }\n const unified = emojiUnified(emoji, activeSkinTone);\n\n return {\n activeSkinTone,\n emoji: parseNativeEmoji(unified),\n getImageUrl(emojiStyle: EmojiStyle = activeEmojiStyle ?? EmojiStyle.APPLE) {\n return getEmojiUrl(unified, emojiStyle);\n },\n imageUrl: getEmojiUrl(unified, activeEmojiStyle ?? EmojiStyle.APPLE),\n isCustom: false,\n names,\n unified,\n unifiedWithoutSkinTone: emojiUnified(emoji)\n };\n}\n","import { cx } from 'flairup';\nimport * as React from 'react';\n\nimport { stylesheet } from '../../Stylesheet/stylesheet';\n\ninterface Props\n extends React.DetailedHTMLProps<\n React.ButtonHTMLAttributes<HTMLButtonElement>,\n HTMLButtonElement\n > {\n className?: string;\n}\n\nexport function Button(props: Props) {\n return (\n <button\n type=\"button\"\n {...props}\n className={cx(styles.button, props.className)}\n >\n {props.children}\n </button>\n );\n}\n\nconst styles = stylesheet.create({\n button: {\n '.': 'epr-btn',\n cursor: 'pointer',\n border: '0',\n background: 'none',\n outline: 'none'\n }\n});\n","import { cx } from 'flairup';\nimport * as React from 'react';\n\nimport { ClassNames } from '../../DomUtils/classNames';\nimport {\n commonInteractionStyles,\n commonStyles,\n stylesheet\n} from '../../Stylesheet/stylesheet';\nimport { Button } from '../atoms/Button';\n\ntype ClickableEmojiButtonProps = Readonly<{\n hidden?: boolean;\n showVariations?: boolean;\n hiddenOnSearch?: boolean;\n emojiNames: string[];\n children: React.ReactNode;\n hasVariations: boolean;\n unified?: string;\n round?: boolean;\n}>;\n\nexport function ClickableEmojiButton({\n emojiNames,\n unified,\n hidden,\n hiddenOnSearch,\n showVariations = true,\n hasVariations,\n children,\n round = false\n}: ClickableEmojiButtonProps) {\n return (\n <Button\n className={cx(\n styles.emoji,\n hidden && commonStyles.hidden,\n hiddenOnSearch && commonInteractionStyles.hiddenOnSearch,\n {\n [ClassNames.visible]: !hidden && !hiddenOnSearch\n },\n !!(hasVariations && showVariations) && styles.hasVariations,\n round && styles.round\n )}\n data-unified={unified}\n aria-label={emojiNames[0]}\n data-full-name={emojiNames}\n >\n {children}\n </Button>\n );\n}\n\nconst styles = stylesheet.create({\n emoji: {\n '.': ClassNames.emoji,\n position: 'relative',\n width: 'var(--epr-emoji-fullsize)',\n height: 'var(--epr-emoji-fullsize)',\n boxSizing: 'border-box',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n maxWidth: 'var(--epr-emoji-fullsize)',\n maxHeight: 'var(--epr-emoji-fullsize)',\n borderRadius: '8px',\n overflow: 'hidden',\n transition: 'background-color 0.2s',\n ':hover': {\n backgroundColor: 'var(--epr-emoji-hover-color)'\n },\n ':focus': {\n backgroundColor: 'var(--epr-focus-bg-color)'\n }\n },\n round: {\n borderRadius: '50%'\n },\n hasVariations: {\n '.': ClassNames.emojiHasVariations,\n ':after': {\n content: '',\n display: 'block',\n width: '0',\n height: '0',\n right: '0px',\n bottom: '1px',\n position: 'absolute',\n borderLeft: '4px solid transparent',\n borderRight: '4px solid transparent',\n transform: 'rotate(135deg)',\n borderBottom: '4px solid var(--epr-emoji-variation-indicator-color)',\n zIndex: 'var(--epr-emoji-variations-indictator-z-index)'\n },\n ':hover:after': {\n borderBottom: '4px solid var(--epr-emoji-variation-indicator-color-hover)'\n }\n }\n});\n","import { ClassNames } from '../../DomUtils/classNames';\nimport { stylesheet } from '../../Stylesheet/stylesheet';\n\nexport const emojiStyles = stylesheet.create({\n external: {\n '.': ClassNames.external,\n fontSize: '0'\n },\n common: {\n alignSelf: 'center',\n justifySelf: 'center',\n display: 'block'\n }\n});\n","import { cx } from 'flairup';\nimport * as React from 'react';\n\nimport { stylesheet } from '../../Stylesheet/stylesheet';\nimport { EmojiStyle } from '../../types/exposedTypes';\n\nimport { emojiStyles } from './emojiStyles';\n\nexport function EmojiImg({\n emojiName,\n style,\n lazyLoad = false,\n imgUrl,\n onError,\n className\n}: {\n emojiName: string;\n emojiStyle: EmojiStyle;\n style: React.CSSProperties;\n lazyLoad?: boolean;\n imgUrl: string;\n onError: () => void;\n className?: string;\n}) {\n return (\n <img\n src={imgUrl}\n alt={emojiName}\n className={cx(styles.emojiImag, emojiStyles.external, emojiStyles.common, className)}\n loading={lazyLoad ? 'lazy' : 'eager'}\n onError={onError}\n style={style}\n />\n );\n}\n\nconst styles = stylesheet.create({\n emojiImag: {\n '.': 'epr-emoji-img',\n maxWidth: 'var(--epr-emoji-fullsize)',\n maxHeight: 'var(--epr-emoji-fullsize)',\n minWidth: 'var(--epr-emoji-fullsize)',\n minHeight: 'var(--epr-emoji-fullsize)',\n padding: 'var(--epr-emoji-padding)'\n }\n});\n","import { cx } from 'flairup';\nimport * as React from 'react';\n\nimport { stylesheet } from '../../Stylesheet/stylesheet';\nimport { parseNativeEmoji } from '../../dataUtils/parseNativeEmoji';\n\nimport { emojiStyles } from './emojiStyles';\n\nexport function NativeEmoji({\n unified,\n style,\n className\n}: {\n unified: string;\n style: React.CSSProperties;\n className?: string;\n}) {\n return (\n <span\n className={cx(\n styles.nativeEmoji,\n emojiStyles.common,\n emojiStyles.external,\n className\n )}\n data-unified={unified}\n style={style}\n >\n {parseNativeEmoji(unified)}\n </span>\n );\n}\n\nconst styles = stylesheet.create({\n nativeEmoji: {\n '.': 'epr-emoji-native',\n fontFamily:\n '\"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Segoe UI\", \"Apple Color Emoji\", \"Twemoji Mozilla\", \"Noto Color Emoji\", \"EmojiOne Color\", \"Android Emoji\"!important',\n position: 'relative',\n lineHeight: '100%',\n fontSize: 'var(--epr-emoji-size)',\n textAlign: 'center',\n alignSelf: 'center',\n justifySelf: 'center',\n letterSpacing: '0',\n padding: 'var(--epr-emoji-padding)'\n }\n});\n","import * as React from 'react';\n\nimport {\n emojiByUnified,\n emojiName,\n emojiUrlByUnified\n} from '../../dataUtils/emojiSelectors';\nimport { isCustomEmoji } from '../../typeRefinements/typeRefinements';\nimport { EmojiStyle } from '../../types/exposedTypes';\nimport { useEmojisThatFailedToLoadState } from '../context/PickerContext';\n\nimport { BaseEmojiProps } from './BaseEmojiProps';\nimport { EmojiImg } from './EmojiImg';\nimport { NativeEmoji } from './NativeEmoji';\n\nexport function ViewOnlyEmoji({\n emoji,\n unified,\n emojiStyle,\n size,\n lazyLoad,\n getEmojiUrl = emojiUrlByUnified,\n className\n}: BaseEmojiProps) {\n const [, setEmojisThatFailedToLoad] = useEmojisThatFailedToLoadState();\n\n const style = {} as React.CSSProperties;\n if (size) {\n style.width = style.height = style.fontSize = `${size}px`;\n }\n\n const emojiToRender = emoji ? emoji : emojiByUnified(unified);\n\n if (!emojiToRender) {\n return null;\n }\n\n if (isCustomEmoji(emojiToRender)) {\n return (\n <EmojiImg\n style={style}\n emojiName={unified}\n emojiStyle={EmojiStyle.NATIVE}\n lazyLoad={lazyLoad}\n imgUrl={emojiToRender.imgUrl}\n onError={onError}\n className={className}\n />\n );\n }\n\n return (\n <>\n {emojiStyle === EmojiStyle.NATIVE ? (\n <NativeEmoji unified={unified} style={style} className={className} />\n ) : (\n <EmojiImg\n style={style}\n emojiName={emojiName(emojiToRender)}\n emojiStyle={emojiStyle}\n lazyLoad={lazyLoad}\n imgUrl={getEmojiUrl(unified, emojiStyle)}\n onError={onError}\n className={className}\n />\n )}\n </>\n );\n\n function onError() {\n setEmojisThatFailedToLoad(prev => new Set(prev).add(unified));\n }\n}\n","import * as React from 'react';\n\nimport { DataEmoji } from '../../dataUtils/DataTypes';\nimport { emojiHasVariations, emojiNames } from '../../dataUtils/emojiSelectors';\n\nimport { BaseEmojiProps } from './BaseEmojiProps';\nimport { ClickableEmojiButton } from './ClickableEmojiButton';\nimport { ViewOnlyEmoji } from './ViewOnlyEmoji';\n\ntype ClickableEmojiProps = Readonly<\n BaseEmojiProps & {\n hidden?: boolean;\n showVariations?: boolean;\n hiddenOnSearch?: boolean;\n emoji: DataEmoji;\n className?: string;\n round?: boolean;\n }\n>;\n\nexport function ClickableEmoji({\n emoji,\n unified,\n hidden,\n hiddenOnSearch,\n emojiStyle,\n showVariations = true,\n size,\n lazyLoad,\n getEmojiUrl,\n round = false\n}: ClickableEmojiProps) {\n const hasVariations = emojiHasVariations(emoji);\n\n return (\n <ClickableEmojiButton\n hasVariations={hasVariations}\n showVariations={showVariations}\n hidden={hidden}\n hiddenOnSearch={hiddenOnSearch}\n emojiNames={emojiNames(emoji)}\n unified={unified}\n round={round}\n >\n <ViewOnlyEmoji\n unified={unified}\n emoji={emoji}\n size={size}\n emojiStyle={emojiStyle}\n lazyLoad={lazyLoad}\n getEmojiUrl={getEmojiUrl}\n />\n </ClickableEmojiButton>\n );\n}\n","import { cx } from 'flairup';\nimport * as React from 'react';\n\nimport { stylesheet } from '../../Stylesheet/stylesheet';\nimport { Button } from '../atoms/Button';\nimport { useReactionsModeState } from '../context/PickerContext';\n\nimport Plus from './svg/plus.svg';\n\nexport function BtnPlus() {\n const [, setReactionsMode] = useReactionsModeState();\n return (\n <Button\n tabIndex={0}\n className={cx(styles.plusSign)}\n onClick={() => setReactionsMode(false)}\n />\n );\n}\n\nconst styles = stylesheet.create({\n plusSign: {\n fontSize: '20px',\n padding: '18px',\n color: 'var(--epr-text-color)',\n borderRadius: '50%',\n textAlign: 'center',\n lineHeight: '100%',\n width: '20px',\n height: '20px',\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n transition: 'background-color 0.1s ease-in-out',\n ':after': {\n content: '',\n minWidth: '20px',\n minHeight: '20px',\n backgroundImage: `url(${Plus})`,\n backgroundColor: 'transparent',\n backgroundRepeat: 'no-repeat',\n backgroundSize: '20px',\n backgroundPositionY: '0'\n },\n ':hover': {\n color: 'var(--epr-highlight-color)',\n backgroundColor: 'var(--epr-hover-bg-color)',\n // @ts-ignore\n ':after': {\n backgroundPositionY: '-20px'\n }\n },\n ':focus': {\n color: 'var(--epr-highlight-color)',\n backgroundColor: 'var(--epr-hover-bg-color)',\n // @ts-ignore\n ':after': {\n backgroundPositionY: '-40px'\n }\n }\n },\n '.epr-dark-theme': {\n plusSign: {\n ':after': { backgroundPositionY: '-40px' },\n ':hover:after': { backgroundPositionY: '-60px' }\n }\n },\n '.epr-auto-theme': {\n plusSign: {\n '@media (prefers-color-scheme: dark)': {\n ':after': { backgroundPositionY: '-40px' },\n ':hover:after': { backgroundPositionY: '-60px' }\n }\n }\n }\n});\n","import { cx } from 'flairup';\nimport * as React from 'react';\n\nimport { commonStyles, stylesheet } from '../../Stylesheet/stylesheet';\nimport {\n useEmojiStyleConfig,\n useReactionsConfig\n} from '../../config/useConfig';\nimport { DataEmoji } from '../../dataUtils/DataTypes';\nimport { emojiByUnified } from '../../dataUtils/emojiSelectors';\nimport { useMouseDownHandlers } from '../../hooks/useMouseDownHandlers';\nimport { useReactionsRef } from '../context/ElementRefContext';\nimport { useReactionsModeState } from '../context/PickerContext';\nimport { ClickableEmoji } from '../emoji/Emoji';\n\nimport { BtnPlus } from './BtnPlus';\n\nexport function Reactions() {\n const [reactionsOpen] = useReactionsModeState();\n const ReactionsRef = useReactionsRef();\n const reactions = useReactionsConfig();\n useMouseDownHandlers(ReactionsRef);\n const emojiStyle = useEmojiStyleConfig();\n\n if (!reactionsOpen) {\n return null;\n }\n\n return (\n <ul\n className={cx(styles.list, !reactionsOpen && commonStyles.hidden)}\n ref={ReactionsRef}\n >\n {reactions.map(reaction => (\n <li key={reaction}>\n <ClickableEmoji\n emoji={emojiByUnified(reaction) as DataEmoji}\n emojiStyle={emojiStyle}\n unified={reaction}\n showVariations={false}\n round\n />\n </li>\n ))}\n <li>\n <BtnPlus />\n </li>\n </ul>\n );\n}\n\nconst styles = stylesheet.create({\n list: {\n listStyle: 'none',\n margin: '0',\n padding: '0 5px',\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'center',\n height: '100%'\n }\n});\n","import { useEffect } from 'react';\n\nimport { useBodyRef } from '../components/context/ElementRefContext';\nimport { useDisallowMouseRef } from '../components/context/PickerContext';\n\nexport function useDisallowMouseMove() {\n const DisallowMouseRef = useDisallowMouseRef();\n return function disallowMouseMove() {\n DisallowMouseRef.current = true;\n };\n}\n\nexport function useAllowMouseMove() {\n const DisallowMouseRef = useDisallowMouseRef();\n return function allowMouseMove() {\n DisallowMouseRef.current = false;\n };\n}\n\nexport function useIsMouseDisallowed() {\n const DisallowMouseRef = useDisallowMouseRef();\n return function isMouseDisallowed() {\n return DisallowMouseRef.current;\n };\n}\n\nexport function useOnMouseMove() {\n const BodyRef = useBodyRef();\n const allowMouseMove = useAllowMouseMove();\n const isMouseDisallowed = useIsMouseDisallowed();\n\n useEffect(() => {\n const bodyRef = BodyRef.current;\n bodyRef?.addEventListener('mousemove', onMouseMove, {\n passive: true\n });\n\n function onMouseMove() {\n if (isMouseDisallowed()) {\n allowMouseMove();\n }\n }\n return () => {\n bodyRef?.removeEventListener('mousemove', onMouseMove);\n };\n }, [BodyRef, allowMouseMove, isMouseDisallowed]);\n}\n","import { useEffect } from 'react';\n\nimport { ElementRef } from '../components/context/ElementRefContext';\n\nimport { useCloseAllOpenToggles } from './useCloseAllOpenToggles';\n\nexport function useOnScroll(BodyRef: ElementRef) {\n const closeAllOpenToggles = useCloseAllOpenToggles();\n\n useEffect(() => {\n const bodyRef = BodyRef.current;\n if (!bodyRef) {\n return;\n }\n\n bodyRef.addEventListener('scroll', onScroll, {\n passive: true\n });\n\n function onScroll() {\n closeAllOpenToggles();\n }\n\n return () => {\n bodyRef?.removeEventListener('scroll', onScroll);\n };\n }, [BodyRef, closeAllOpenToggles]);\n}\n","import { useCallback } from 'react';\n\nimport { useBodyRef } from '../components/context/ElementRefContext';\n\nimport { asSelectors, ClassNames } from './classNames';\nimport {\n categoryLabelHeight,\n closestCategory,\n closestScrollBody,\n emojiDistanceFromScrollTop,\n isEmojiBehindLabel,\n NullableElement,\n queryScrollBody\n} from './selectors';\n\nexport function scrollTo(root: NullableElement, top: number = 0) {\n const $eprBody = queryScrollBody(root);\n\n if (!$eprBody) {\n return;\n }\n\n requestAnimationFrame(() => {\n $eprBody.scrollTop = top + 1;\n });\n}\n\nexport function scrollBy(root: NullableElement, by: number): void {\n const $eprBody = queryScrollBody(root);\n\n if (!$eprBody) {\n return;\n }\n\n requestAnimationFrame(() => {\n $eprBody.scrollTop = $eprBody.scrollTop + by;\n });\n}\n\nexport function useScrollTo() {\n const BodyRef = useBodyRef();\n\n return useCallback(\n (top: number) => {\n requestAnimationFrame(() => {\n if (BodyRef.current) {\n BodyRef.current.scrollTop = top;\n }\n });\n },\n [BodyRef]\n );\n}\n\nexport function scrollEmojiAboveLabel(emoji: NullableElement) {\n if (!emoji || !isEmojiBehindLabel(emoji)) {\n return;\n }\n\n if (emoji.closest(asSelectors(ClassNames.variationPicker))) {\n return;\n }\n\n const scrollBody = closestScrollBody(emoji);\n const by = emojiDistanceFromScrollTop(emoji);\n scrollBy(scrollBody, -(categoryLabelHeight(closestCategory(emoji)) - by));\n}\n","import { useCallback } from 'react';\n\nimport { focusElement, focusFirstElementChild } from '../DomUtils/focusElement';\nimport {\n useCategoryNavigationRef,\n useSearchInputRef,\n useSkinTonePickerRef\n} from '../components/context/ElementRefContext';\n\nexport function useFocusSearchInput() {\n const SearchInputRef = useSearchInputRef();\n\n return useCallback(() => {\n focusElement(SearchInputRef.current);\n }, [SearchInputRef]);\n}\n\nexport function useFocusSkinTonePicker() {\n const SkinTonePickerRef = useSkinTonePickerRef();\n\n return useCallback(() => {\n if (!SkinTonePickerRef.current) {\n return;\n }\n\n focusFirstElementChild(SkinTonePickerRef.current);\n }, [SkinTonePickerRef]);\n}\n\nexport function useFocusCategoryNavigation() {\n const CategoryNavigationRef = useCategoryNavigationRef();\n\n return useCallback(() => {\n if (!CategoryNavigationRef.current) {\n return;\n }\n\n focusFirstElementChild(CategoryNavigationRef.current);\n }, [CategoryNavigationRef]);\n}\n","import { scrollTo } from '../DomUtils/scrollTo';\nimport {\n usePickerMainRef,\n useSearchInputRef\n} from '../components/context/ElementRefContext';\nimport {\n FilterState,\n useFilterRef,\n useSearchTermState\n} from '../components/context/PickerContext';\nimport { useSearchResultsConfig } from '../config/useConfig';\nimport { DataEmoji } from '../dataUtils/DataTypes';\nimport { emojiNames } from '../dataUtils/emojiSelectors';\n\nimport { useFocusSearchInput } from './useFocus';\n\nfunction useSetFilterRef() {\n const filterRef = useFilterRef();\n\n return function setFilter(\n setter: FilterState | ((current: FilterState) => FilterState)\n ): void {\n if (typeof setter === 'function') {\n return setFilter(setter(filterRef.current));\n }\n\n filterRef.current = setter;\n };\n}\n\nexport function useClearSearch() {\n const applySearch = useApplySearch();\n const SearchInputRef = useSearchInputRef();\n const focusSearchInput = useFocusSearchInput();\n\n return function clearSearch() {\n if (SearchInputRef.current) {\n SearchInputRef.current.value = '';\n }\n\n applySearch('');\n focusSearchInput();\n };\n}\n\nexport function useAppendSearch() {\n const SearchInputRef = useSearchInputRef();\n const applySearch = useApplySearch();\n\n return function appendSearch(str: string) {\n if (SearchInputRef.current) {\n SearchInputRef.current.value = `${SearchInputRef.current.value}${str}`;\n applySearch(getNormalizedSearchTerm(SearchInputRef.current.value));\n } else {\n applySearch(getNormalizedSearchTerm(str));\n }\n };\n}\n\nexport function useFilter() {\n const SearchInputRef = useSearchInputRef();\n const filterRef = useFilterRef();\n const setFilterRef = useSetFilterRef();\n const applySearch = useApplySearch();\n\n const [searchTerm] = useSearchTermState();\n const statusSearchResults = getStatusSearchResults(\n filterRef.current,\n searchTerm\n );\n\n return {\n onChange,\n searchTerm,\n SearchInputRef,\n statusSearchResults\n };\n\n function onChange(inputValue: string) {\n const filter = filterRef.current;\n\n const nextValue = inputValue.toLowerCase();\n\n if (filter?.[nextValue] || nextValue.length <= 1) {\n return applySearch(nextValue);\n }\n\n const longestMatch = findLongestMatch(nextValue, filter);\n\n if (!longestMatch) {\n // Can we even get here?\n // If so, we need to search among all emojis\n return applySearch(nextValue);\n }\n\n setFilterRef(current =>\n Object.assign(current, {\n [nextValue]: filterEmojiObjectByKeyword(longestMatch, nextValue)\n })\n );\n applySearch(nextValue);\n }\n}\n\nfunction useApplySearch() {\n const [, setSearchTerm] = useSearchTermState();\n const PickerMainRef = usePickerMainRef();\n\n return function applySearch(searchTerm: string) {\n requestAnimationFrame(() => {\n setSearchTerm(searchTerm ? searchTerm?.toLowerCase() : searchTerm).then(\n () => {\n scrollTo(PickerMainRef.current, 0);\n }\n );\n });\n };\n}\n\nfunction filterEmojiObjectByKeyword(\n emojis: FilterDict,\n keyword: string\n): FilterDict {\n const filtered: FilterDict = {};\n\n for (const unified in emojis) {\n const emoji = emojis[unified];\n\n if (hasMatch(emoji, keyword)) {\n filtered[unified] = emoji;\n }\n }\n\n return filtered;\n}\n\nfunction hasMatch(emoji: DataEmoji, keyword: string): boolean {\n return emojiNames(emoji).some(name => name.includes(keyword));\n}\n\nexport function useIsEmojiFiltered(): (unified: string) => boolean {\n const { current: filter } = useFilterRef();\n const [searchTerm] = useSearchTermState();\n\n return unified => isEmojiFilteredBySearchTerm(unified, filter, searchTerm);\n}\n\nfunction isEmojiFilteredBySearchTerm(\n unified: string,\n filter: FilterState,\n searchTerm: string\n): boolean {\n if (!filter || !searchTerm) {\n return false;\n }\n\n return !filter[searchTerm]?.[unified];\n}\n\nexport type FilterDict = Record<string, DataEmoji>;\n\nfunction findLongestMatch(\n keyword: string,\n dict: Record<string, FilterDict> | null\n): FilterDict | null {\n if (!dict) {\n return null;\n }\n\n if (dict[keyword]) {\n return dict[keyword];\n }\n\n const longestMatchingKey = Object.keys(dict)\n .sort((a, b) => b.length - a.length)\n .find(key => keyword.includes(key));\n\n if (longestMatchingKey) {\n return dict[longestMatchingKey];\n }\n\n return null;\n}\n\nexport function getNormalizedSearchTerm(str: string): string {\n if (!str || typeof str !== 'string') {\n return '';\n }\n\n return str.trim().toLowerCase();\n}\n\nfunction getStatusSearchResults(\n filterState: FilterState,\n searchTerm: string\n): string {\n if (!filterState?.[searchTerm]) return '';\n\n const searchResultsCount =\n Object.entries(filterState?.[searchTerm])?.length || 0;\n // eslint-disable-next-line react-hooks/rules-of-hooks\n return useSearchResultsConfig(searchResultsCount);\n}\n","import { useEmojisThatFailedToLoadState } from '../components/context/PickerContext';\nimport { DataEmoji } from '../dataUtils/DataTypes';\nimport { emojiUnified } from '../dataUtils/emojiSelectors';\n\nimport { useIsEmojiFiltered } from './useFilter';\n\nexport function useIsEmojiHidden(): (emoji: DataEmoji) => IsHiddenReturn {\n const [emojisThatFailedToLoad] = useEmojisThatFailedToLoadState();\n const isEmojiFiltered = useIsEmojiFiltered();\n\n return (emoji: DataEmoji): IsHiddenReturn => {\n const unified = emojiUnified(emoji);\n\n const failedToLoad = emojisThatFailedToLoad.has(unified);\n const filteredOut = isEmojiFiltered(unified);\n\n return {\n failedToLoad,\n filteredOut,\n hidden: failedToLoad || filteredOut\n };\n };\n}\n\ntype IsHiddenReturn = {\n failedToLoad: boolean;\n filteredOut: boolean;\n hidden: boolean;\n};\n","import { cx } from 'flairup';\nimport * as React from 'react';\n\nimport { ClassNames } from '../../DomUtils/classNames';\nimport {\n commonInteractionStyles,\n commonStyles,\n stylesheet\n} from '../../Stylesheet/stylesheet';\nimport {\n CategoryConfig,\n categoryFromCategoryConfig,\n categoryNameFromCategoryConfig\n} from '../../config/categoryConfig';\n\ntype Props = Readonly<{\n categoryConfig: CategoryConfig;\n children?: React.ReactNode;\n hidden?: boolean;\n hiddenOnSearch?: boolean;\n}>;\n\nexport function EmojiCategory({\n categoryConfig,\n children,\n hidden,\n hiddenOnSearch\n}: Props) {\n const category = categoryFromCategoryConfig(categoryConfig);\n const categoryName = categoryNameFromCategoryConfig(categoryConfig);\n\n return (\n <li\n className={cx(\n styles.category,\n hidden && commonStyles.hidden,\n hiddenOnSearch && commonInteractionStyles.hiddenOnSearch\n )}\n data-name={category}\n aria-label={categoryName}\n >\n <h2 className={cx(styles.label)}>{categoryName}</h2>\n <div className={cx(styles.categoryContent)}>{children}</div>\n </li>\n );\n}\n\nconst styles = stylesheet.create({\n category: {\n '.': ClassNames.category,\n ':not(:has(.epr-visible))': {\n display: 'none'\n }\n },\n categoryContent: {\n '.': ClassNames.categoryContent,\n display: 'grid',\n gridGap: '0',\n gridTemplateColumns: 'repeat(auto-fill, var(--epr-emoji-fullsize))',\n justifyContent: 'space-between',\n margin: 'var(--epr-category-padding)',\n position: 'relative'\n },\n label: {\n '.': ClassNames.label,\n alignItems: 'center',\n // @ts-expect-error - backdropFilter is a valid CSS property\n backdropFilter: 'blur(3px)',\n backgroundColor: 'var(--epr-category-label-bg-color)',\n color: 'var(--epr-category-label-text-color)',\n display: 'flex',\n fontSize: '16px',\n fontWeight: 'bold',\n height: 'var(--epr-category-label-height)',\n margin: '0',\n padding: 'var(--epr-category-label-padding)',\n position: 'sticky',\n textTransform: 'capitalize',\n top: '0',\n width: '100%',\n zIndex: 'var(--epr-category-label-z-index)'\n }\n});\n","import * as React from 'react';\n\nimport { CategoryConfig } from '../../config/categoryConfig';\nimport {\n useEmojiStyleConfig,\n useGetEmojiUrlConfig,\n useSuggestedEmojisModeConfig\n} from '../../config/useConfig';\nimport { emojiByUnified } from '../../dataUtils/emojiSelectors';\nimport { getSuggested } from '../../dataUtils/suggested';\nimport { useIsMounted } from '../../hooks/useIsMounted';\nimport { useUpdateSuggested } from '../context/PickerContext';\nimport { ClickableEmoji } from '../emoji/Emoji';\n\nimport { EmojiCategory } from './EmojiCategory';\n\ntype Props = Readonly<{\n categoryConfig: CategoryConfig;\n}>;\n\nexport function Suggested({ categoryConfig }: Props) {\n const [suggestedUpdated] = useUpdateSuggested();\n const isMounted = useIsMounted();\n const suggestedEmojisModeConfig = useSuggestedEmojisModeConfig();\n const getEmojiUrl = useGetEmojiUrlConfig();\n const suggested = React.useMemo(\n () => getSuggested(suggestedEmojisModeConfig) ?? [],\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [suggestedUpdated, suggestedEmojisModeConfig]\n );\n const emojiStyle = useEmojiStyleConfig();\n\n if (!isMounted) {\n return null;\n }\n\n return (\n <EmojiCategory\n categoryConfig={categoryConfig}\n hiddenOnSearch\n hidden={suggested.length === 0}\n >\n {suggested.map(suggestedItem => {\n const emoji = emojiByUnified(suggestedItem.original);\n\n if (!emoji) {\n return null;\n }\n\n return (\n <ClickableEmoji\n showVariations={false}\n unified={suggestedItem.unified}\n emojiStyle={emojiStyle}\n emoji={emoji}\n key={suggestedItem.unified}\n getEmojiUrl={getEmojiUrl}\n />\n );\n })}\n </EmojiCategory>\n );\n}\n","import { cx } from 'flairup';\nimport * as React from 'react';\n\nimport { ClassNames } from '../../DomUtils/classNames';\nimport { stylesheet } from '../../Stylesheet/stylesheet';\nimport {\n Categories,\n CategoryConfig,\n categoryFromCategoryConfig\n} from '../../config/categoryConfig';\nimport {\n useCategoriesConfig,\n useEmojiStyleConfig,\n useGetEmojiUrlConfig,\n useLazyLoadEmojisConfig,\n useSkinTonesDisabledConfig\n} from '../../config/useConfig';\nimport { emojisByCategory, emojiUnified } from '../../dataUtils/emojiSelectors';\nimport { useIsEmojiDisallowed } from '../../hooks/useDisallowedEmojis';\nimport { useIsEmojiHidden } from '../../hooks/useIsEmojiHidden';\nimport {\n useActiveSkinToneState,\n useIsPastInitialLoad\n} from '../context/PickerContext';\nimport { ClickableEmoji } from '../emoji/Emoji';\n\nimport { EmojiCategory } from './EmojiCategory';\nimport { Suggested } from './Suggested';\n\nexport function EmojiList() {\n const categories = useCategoriesConfig();\n const renderdCategoriesCountRef = React.useRef(0);\n\n return (\n <ul className={cx(styles.emojiList)}>\n {categories.map(categoryConfig => {\n const category = categoryFromCategoryConfig(categoryConfig);\n\n if (category === Categories.SUGGESTED) {\n return <Suggested key={category} categoryConfig={categoryConfig} />;\n }\n\n return (\n <RenderCategory\n key={category}\n category={category}\n categoryConfig={categoryConfig}\n renderdCategoriesCountRef={renderdCategoriesCountRef}\n />\n );\n })}\n </ul>\n );\n}\n\nfunction RenderCategory({\n category,\n categoryConfig,\n renderdCategoriesCountRef\n}: {\n category: Categories;\n categoryConfig: CategoryConfig;\n renderdCategoriesCountRef: React.MutableRefObject<number>;\n}) {\n const isEmojiHidden = useIsEmojiHidden();\n const lazyLoadEmojis = useLazyLoadEmojisConfig();\n const emojiStyle = useEmojiStyleConfig();\n const isPastInitialLoad = useIsPastInitialLoad();\n const [activeSkinTone] = useActiveSkinToneState();\n const isEmojiDisallowed = useIsEmojiDisallowed();\n const getEmojiUrl = useGetEmojiUrlConfig();\n const showVariations = !useSkinTonesDisabledConfig();\n\n // Small trick to defer the rendering of all emoji categories until the first category is visible\n // This way the user gets to actually see something and not wait for the whole picker to render.\n const emojisToPush =\n !isPastInitialLoad && renderdCategoriesCountRef.current > 0\n ? []\n : emojisByCategory(category);\n\n if (emojisToPush.length > 0) {\n renderdCategoriesCountRef.current++;\n }\n\n let hiddenCounter = 0;\n\n const emojis = emojisToPush.map(emoji => {\n const unified = emojiUnified(emoji, activeSkinTone);\n const { failedToLoad, filteredOut, hidden } = isEmojiHidden(emoji);\n\n const isDisallowed = isEmojiDisallowed(emoji);\n\n if (hidden || isDisallowed) {\n hiddenCounter++;\n }\n\n if (isDisallowed) {\n return null;\n }\n\n return (\n <ClickableEmoji\n showVariations={showVariations}\n key={unified}\n emoji={emoji}\n unified={unified}\n hidden={failedToLoad}\n hiddenOnSearch={filteredOut}\n emojiStyle={emojiStyle}\n lazyLoad={lazyLoadEmojis}\n getEmojiUrl={getEmojiUrl}\n />\n );\n });\n\n return (\n <EmojiCategory\n categoryConfig={categoryConfig}\n // Indicates that there are no visible emojis\n // Hence, the category should be hidden\n hidden={hiddenCounter === emojis.length}\n >\n {emojis}\n </EmojiCategory>\n );\n}\n\nconst styles = stylesheet.create({\n emojiList: {\n '.': ClassNames.emojiList,\n listStyle: 'none',\n margin: '0',\n padding: '0'\n }\n});\n","import {\n elementCountInRow,\n elementIndexInRow,\n getElementInNextRow,\n getElementInPrevRow,\n getElementInRow,\n hasNextRow,\n rowNumber\n} from './elementPositionInRow';\nimport { focusElement } from './focusElement';\nimport { scrollEmojiAboveLabel } from './scrollTo';\nimport {\n allVisibleEmojis,\n closestCategory,\n firstVisibleEmoji,\n lastVisibleEmoji,\n nextCategory,\n nextVisibleEmoji,\n NullableElement,\n prevCategory,\n prevVisibleEmoji,\n closestCategoryContent\n} from './selectors';\n\nexport function focusFirstVisibleEmoji(parent: NullableElement) {\n const emoji = firstVisibleEmoji(parent);\n focusElement(emoji);\n scrollEmojiAboveLabel(emoji);\n}\n\nexport function focusAndClickFirstVisibleEmoji(parent: NullableElement) {\n const firstEmoji = firstVisibleEmoji(parent);\n\n focusElement(firstEmoji);\n firstEmoji?.click();\n}\n\nexport function focusLastVisibleEmoji(parent: NullableElement) {\n focusElement(lastVisibleEmoji(parent));\n}\n\nexport function focusNextVisibleEmoji(element: NullableElement) {\n if (!element) {\n return;\n }\n\n const next = nextVisibleEmoji(element);\n\n if (!next) {\n return focusFirstVisibleEmoji(nextCategory(element));\n }\n\n focusElement(next);\n scrollEmojiAboveLabel(next);\n}\n\nexport function focusPrevVisibleEmoji(element: NullableElement) {\n if (!element) {\n return;\n }\n\n const prev = prevVisibleEmoji(element);\n\n if (!prev) {\n return focusLastVisibleEmoji(prevCategory(element));\n }\n\n focusElement(prev);\n scrollEmojiAboveLabel(prev);\n}\n\nexport function focusVisibleEmojiOneRowUp(\n element: NullableElement,\n exitUp: () => void\n) {\n if (!element) {\n return;\n }\n\n const prev = visibleEmojiOneRowUp(element);\n\n if (!prev) {\n return exitUp();\n }\n\n focusElement(prev);\n scrollEmojiAboveLabel(prev);\n}\n\nexport function focusVisibleEmojiOneRowDown(element: NullableElement) {\n if (!element) {\n return;\n }\n\n const next = visibleEmojiOneRowDown(element);\n\n return focusElement(next);\n}\n\nfunction visibleEmojiOneRowUp(element: HTMLElement) {\n if (!element) {\n return null;\n }\n\n const categoryContent = closestCategoryContent(element);\n const category = closestCategory(categoryContent);\n const indexInRow = elementIndexInRow(categoryContent, element);\n const row = rowNumber(categoryContent, element);\n const countInRow = elementCountInRow(categoryContent, element);\n\n if (row === 0) {\n const prevVisibleCategory = prevCategory(category);\n\n if (!prevVisibleCategory) {\n return null;\n }\n\n return getElementInRow(\n allVisibleEmojis(prevVisibleCategory),\n -1, // last row\n countInRow,\n indexInRow\n );\n }\n\n return getElementInPrevRow(\n allVisibleEmojis(categoryContent),\n row,\n countInRow,\n indexInRow\n );\n}\n\nfunction visibleEmojiOneRowDown(element: HTMLElement) {\n if (!element) {\n return null;\n }\n\n const categoryContent = closestCategoryContent(element);\n const category = closestCategory(categoryContent);\n const indexInRow = elementIndexInRow(categoryContent, element);\n const row = rowNumber(categoryContent, element);\n const countInRow = elementCountInRow(categoryContent, element);\n if (!hasNextRow(categoryContent, element)) {\n const nextVisibleCategory = nextCategory(category);\n\n if (!nextVisibleCategory) {\n return null;\n }\n\n return getElementInRow(\n allVisibleEmojis(nextVisibleCategory),\n 0,\n countInRow,\n indexInRow\n );\n }\n\n const itemInNextRow = getElementInNextRow(\n allVisibleEmojis(categoryContent),\n row,\n countInRow,\n indexInRow\n );\n\n return itemInNextRow;\n}\n","import { cx } from 'flairup';\nimport * as React from 'react';\nimport { useEffect } from 'react';\n\nimport { ClassNames } from '../../DomUtils/classNames';\nimport { focusFirstVisibleEmoji } from '../../DomUtils/keyboardNavigation';\nimport {\n buttonFromTarget,\n elementHeight,\n emojiTrueOffsetTop,\n emojiTruOffsetLeft\n} from '../../DomUtils/selectors';\nimport { stylesheet } from '../../Stylesheet/stylesheet';\nimport {\n useEmojiStyleConfig,\n useGetEmojiUrlConfig\n} from '../../config/useConfig';\nimport {\n emojiHasVariations,\n emojiUnified,\n emojiVariations\n} from '../../dataUtils/emojiSelectors';\nimport {\n useAnchoredEmojiRef,\n useBodyRef,\n useSetAnchoredEmojiRef,\n useVariationPickerRef\n} from '../context/ElementRefContext';\nimport { useEmojiVariationPickerState } from '../context/PickerContext';\nimport { ClickableEmoji } from '../emoji/Emoji';\n\nimport SVGTriangle from './svg/triangle.svg';\n\nenum Direction {\n Up,\n Down\n}\n\n// eslint-disable-next-line complexity\nexport function EmojiVariationPicker() {\n const AnchoredEmojiRef = useAnchoredEmojiRef();\n const VariationPickerRef = useVariationPickerRef();\n const [emoji] = useEmojiVariationPickerState();\n const emojiStyle = useEmojiStyleConfig();\n\n const { getTop, getMenuDirection } = useVariationPickerTop(\n VariationPickerRef\n );\n const setAnchoredEmojiRef = useSetAnchoredEmojiRef();\n const getPointerStyle = usePointerStyle(VariationPickerRef);\n const getEmojiUrl = useGetEmojiUrlConfig();\n\n const button = buttonFromTarget(AnchoredEmojiRef.current);\n\n const visible = Boolean(\n emoji &&\n button &&\n emojiHasVariations(emoji) &&\n button.classList.contains(ClassNames.emojiHasVariations)\n );\n\n useEffect(() => {\n if (!visible) {\n return;\n }\n\n focusFirstVisibleEmoji(VariationPickerRef.current);\n }, [VariationPickerRef, visible, AnchoredEmojiRef]);\n\n let top, pointerStyle;\n\n if (!visible && AnchoredEmojiRef.current) {\n setAnchoredEmojiRef(null);\n } else {\n top = getTop();\n pointerStyle = getPointerStyle();\n }\n\n return (\n <div\n ref={VariationPickerRef}\n className={cx(\n styles.variationPicker,\n getMenuDirection() === Direction.Down && styles.pointingUp,\n visible && styles.visible\n )}\n style={{ top }}\n >\n {visible && emoji\n ? [emojiUnified(emoji)]\n .concat(emojiVariations(emoji))\n .slice(0, 6)\n .map(unified => (\n <ClickableEmoji\n key={unified}\n emoji={emoji}\n unified={unified}\n emojiStyle={emojiStyle}\n showVariations={false}\n getEmojiUrl={getEmojiUrl}\n />\n ))\n : null}\n <div className={cx(styles.pointer)} style={pointerStyle} />\n </div>\n );\n}\n\nfunction usePointerStyle(VariationPickerRef: React.RefObject<HTMLElement>) {\n const AnchoredEmojiRef = useAnchoredEmojiRef();\n return function getPointerStyle() {\n const style: React.CSSProperties = {};\n if (!VariationPickerRef.current) {\n return style;\n }\n\n if (AnchoredEmojiRef.current) {\n const button = buttonFromTarget(AnchoredEmojiRef.current);\n\n const offsetLeft = emojiTruOffsetLeft(button);\n\n if (!button) {\n return style;\n }\n\n // half of the button\n style.left = offsetLeft + button?.clientWidth / 2;\n }\n\n return style;\n };\n}\n\nfunction useVariationPickerTop(\n VariationPickerRef: React.RefObject<HTMLElement>\n) {\n const AnchoredEmojiRef = useAnchoredEmojiRef();\n const BodyRef = useBodyRef();\n let direction = Direction.Up;\n\n return {\n getMenuDirection,\n getTop\n };\n\n function getMenuDirection() {\n return direction;\n }\n\n function getTop() {\n direction = Direction.Up;\n let emojiOffsetTop = 0;\n\n if (!VariationPickerRef.current) {\n return 0;\n }\n\n const height = elementHeight(VariationPickerRef.current);\n\n if (AnchoredEmojiRef.current) {\n const bodyRef = BodyRef.current;\n const button = buttonFromTarget(AnchoredEmojiRef.current);\n\n const buttonHeight = elementHeight(button);\n\n emojiOffsetTop = emojiTrueOffsetTop(button);\n\n const scrollTop = bodyRef?.scrollTop ?? 0;\n\n if (scrollTop > emojiOffsetTop - height) {\n direction = Direction.Down;\n emojiOffsetTop += buttonHeight + height;\n }\n }\n\n return emojiOffsetTop - height;\n }\n}\n\nconst styles = stylesheet.create({\n variationPicker: {\n '.': ClassNames.variationPicker,\n position: 'absolute',\n right: '15px',\n left: '15px',\n padding: '5px',\n boxShadow: '0px 2px 5px rgba(0, 0, 0, 0.2)',\n borderRadius: '3px',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-around',\n opacity: '0',\n visibility: 'hidden',\n pointerEvents: 'none',\n top: '-100%',\n border: '1px solid var(--epr-picker-border-color)',\n height: 'var(--epr-emoji-variation-picker-height)',\n zIndex: 'var(--epr-skin-variation-picker-z-index)',\n background: 'var(--epr-emoji-variation-picker-bg-color)',\n transform: 'scale(0.9)',\n transition: 'transform 0.1s ease-out, opacity 0.2s ease-out'\n },\n visible: {\n opacity: '1',\n visibility: 'visible',\n pointerEvents: 'all',\n transform: 'scale(1)'\n },\n pointingUp: {\n '.': 'pointing-up',\n transformOrigin: 'center 0%',\n transform: 'scale(0.9)'\n },\n '.pointing-up': {\n pointer: {\n top: '0',\n transform: 'rotate(180deg) translateY(100%) translateX(18px)'\n }\n },\n pointer: {\n '.': 'epr-emoji-pointer',\n content: '',\n position: 'absolute',\n width: '25px',\n height: '15px',\n backgroundRepeat: 'no-repeat',\n backgroundPosition: '0 0',\n backgroundSize: '50px 15px',\n top: '100%',\n transform: 'translateX(-18px)',\n backgroundImage: `url(${SVGTriangle})`\n },\n '.epr-dark-theme': {\n pointer: {\n backgroundPosition: '-25px 0'\n }\n },\n '.epr-auto-theme': {\n pointer: {\n '@media (prefers-color-scheme: dark)': {\n backgroundPosition: '-25px 0'\n }\n }\n }\n});\n","import { cx } from 'flairup';\nimport * as React from 'react';\n\nimport { ClassNames } from '../../DomUtils/classNames';\nimport {\n commonInteractionStyles,\n stylesheet\n} from '../../Stylesheet/stylesheet';\nimport { useOnMouseMove } from '../../hooks/useDisallowMouseMove';\nimport { useMouseDownHandlers } from '../../hooks/useMouseDownHandlers';\nimport { useOnScroll } from '../../hooks/useOnScroll';\nimport { useBodyRef } from '../context/ElementRefContext';\n\nimport { EmojiList } from './EmojiList';\nimport { EmojiVariationPicker } from './EmojiVariationPicker';\n\nexport function Body() {\n const BodyRef = useBodyRef();\n useOnScroll(BodyRef);\n useMouseDownHandlers(BodyRef);\n useOnMouseMove();\n\n return (\n <div\n className={cx(styles.body, commonInteractionStyles.hiddenOnReactions)}\n ref={BodyRef}\n >\n <EmojiVariationPicker />\n <EmojiList />\n </div>\n );\n}\n\nconst styles = stylesheet.create({\n body: {\n '.': ClassNames.scrollBody,\n flex: '1',\n overflowY: 'scroll',\n overflowX: 'hidden',\n position: 'relative'\n }\n});\n","import * as React from 'react';\nimport { useEffect } from 'react';\n\nimport { focusElement } from '../DomUtils/focusElement';\nimport {\n buttonFromTarget,\n originalUnifiedFromEmojiElement,\n unifiedFromEmojiElement\n} from '../DomUtils/selectors';\nimport { useBodyRef } from '../components/context/ElementRefContext';\nimport { PreviewEmoji } from '../components/footer/Preview';\n\nimport {\n useAllowMouseMove,\n useIsMouseDisallowed\n} from './useDisallowMouseMove';\n\nexport function useEmojiPreviewEvents(\n allow: boolean,\n setPreviewEmoji: React.Dispatch<React.SetStateAction<PreviewEmoji>>\n) {\n const BodyRef = useBodyRef();\n const isMouseDisallowed = useIsMouseDisallowed();\n const allowMouseMove = useAllowMouseMove();\n\n useEffect(() => {\n if (!allow) {\n return;\n }\n const bodyRef = BodyRef.current;\n\n bodyRef?.addEventListener('keydown', onEscape, {\n passive: true\n });\n\n bodyRef?.addEventListener('mouseover', onMouseOver, true);\n\n bodyRef?.addEventListener('focus', onEnter, true);\n\n bodyRef?.addEventListener('mouseout', onLeave, {\n passive: true\n });\n bodyRef?.addEventListener('blur', onLeave, true);\n\n function onEnter(e: FocusEvent) {\n const button = buttonFromTarget(e.target as HTMLElement);\n\n if (!button) {\n return onLeave();\n }\n\n const unified = unifiedFromEmojiElement(button);\n const originalUnified = originalUnifiedFromEmojiElement(button);\n\n if (!unified || !originalUnified) {\n return onLeave();\n }\n\n setPreviewEmoji({\n unified,\n originalUnified\n });\n }\n function onLeave(e?: FocusEvent | MouseEvent) {\n if (e) {\n const relatedTarget = e.relatedTarget as HTMLElement;\n\n if (!buttonFromTarget(relatedTarget)) {\n return setPreviewEmoji(null);\n }\n }\n\n setPreviewEmoji(null);\n }\n function onEscape(e: KeyboardEvent) {\n if (e.key === 'Escape') {\n setPreviewEmoji(null);\n }\n }\n\n function onMouseOver(e: MouseEvent) {\n if (isMouseDisallowed()) {\n return;\n }\n\n const button = buttonFromTarget(e.target as HTMLElement);\n\n if (button) {\n focusElement(button);\n }\n }\n\n return () => {\n bodyRef?.removeEventListener('mouseover', onMouseOver);\n bodyRef?.removeEventListener('mouseout', onLeave);\n bodyRef?.removeEventListener('focus', onEnter, true);\n bodyRef?.removeEventListener('blur', onLeave, true);\n bodyRef?.removeEventListener('keydown', onEscape);\n };\n }, [BodyRef, allow, setPreviewEmoji, isMouseDisallowed, allowMouseMove]);\n}\n","import { useSkinTonePickerLocationConfig } from '../config/useConfig';\nimport { SkinTonePickerLocation } from '../types/exposedTypes';\n\nexport function useShouldShowSkinTonePicker() {\n const skinTonePickerLocationConfig = useSkinTonePickerLocationConfig();\n\n return function shouldShowSkinTonePicker(location: SkinTonePickerLocation) {\n return skinTonePickerLocationConfig === location;\n };\n}\n\nexport function useIsSkinToneInSearch() {\n const skinTonePickerLocationConfig = useSkinTonePickerLocationConfig();\n\n return skinTonePickerLocationConfig === SkinTonePickerLocation.SEARCH;\n}\n\nexport function useIsSkinToneInPreview() {\n const skinTonePickerLocationConfig = useSkinTonePickerLocationConfig();\n\n return skinTonePickerLocationConfig === SkinTonePickerLocation.PREVIEW;\n}\n","import { cx } from 'flairup';\nimport * as React from 'react';\n\nimport { stylesheet } from '../../Stylesheet/stylesheet';\n\nexport enum FlexDirection {\n ROW = 'FlexRow',\n COLUMN = 'FlexColumn'\n}\n\ntype Props = Readonly<{\n children: React.ReactNode;\n className?: string;\n style?: React.CSSProperties;\n direction?: FlexDirection;\n}>;\n\nexport default function Flex({\n children,\n className,\n style = {},\n direction = FlexDirection.ROW\n}: Props) {\n return (\n <div\n style={{ ...style }}\n className={cx(styles.flex, className, styles[direction])}\n >\n {children}\n </div>\n );\n}\n\nconst styles = stylesheet.create({\n flex: {\n display: 'flex'\n },\n [FlexDirection.ROW]: {\n flexDirection: 'row'\n },\n [FlexDirection.COLUMN]: {\n flexDirection: 'column'\n }\n});\n","import { cx } from 'flairup';\nimport * as React from 'react';\n\n\ntype Props = Readonly<{\n className?: string;\n style?: React.CSSProperties;\n}>;\n\nexport default function Space({ className, style = {} }: Props) {\n return <div style={{ flex: 1, ...style }} className={cx(className)} />;\n}\n","import * as React from 'react';\n\ntype Props = Readonly<{\n children: React.ReactNode;\n className?: string;\n style?: React.CSSProperties;\n}>;\n\nexport default function Absolute({ children, className, style }: Props) {\n return (\n <div style={{ ...style, position: 'absolute' }} className={className}>\n {children}\n </div>\n );\n}\n","import * as React from 'react';\n\ntype Props = Readonly<{\n children: React.ReactNode;\n className?: string;\n style?: React.CSSProperties;\n}>;\n\nexport default function Relative({ children, className, style }: Props) {\n return (\n <div style={{ ...style, position: 'relative' }} className={className}>\n {children}\n </div>\n );\n}\n","import { cx } from 'flairup';\nimport * as React from 'react';\n\nimport { stylesheet } from '../../../Stylesheet/stylesheet';\nimport { skinTonesNamed } from '../../../data/skinToneVariations';\nimport { SkinTones } from '../../../types/exposedTypes';\nimport { Button } from '../../atoms/Button';\n\ntype Props = {\n isOpen: boolean;\n onClick: () => void;\n isActive: boolean;\n skinToneVariation: SkinTones;\n style?: React.CSSProperties;\n};\n\n// eslint-disable-next-line complexity\nexport function BtnSkinToneVariation({\n isOpen,\n onClick,\n isActive,\n skinToneVariation,\n style\n}: Props) {\n return (\n <Button\n style={style}\n onClick={onClick}\n className={cx(\n `epr-tone-${skinToneVariation}`,\n styles.tone,\n !isOpen && styles.closedTone,\n isActive && styles.active\n )}\n tabIndex={isOpen ? 0 : -1}\n aria-pressed={isActive}\n aria-label={`Skin tone ${skinTonesNamed[skinToneVariation as SkinTones]}`}\n ></Button>\n );\n}\n\nconst styles = stylesheet.create({\n closedTone: {\n opacity: '0',\n zIndex: '0'\n },\n active: {\n '.': 'epr-active',\n zIndex: '1',\n opacity: '1'\n },\n tone: {\n '.': 'epr-tone',\n ':hover': {\n boxShadow: '0 0 0 3px var(--epr-active-skin-hover-color)'\n },\n ':focus': {\n boxShadow: '0 0 0 3px var(--epr-focus-bg-color)'\n },\n // @ts-ignore\n '&.epr-tone-neutral': {\n backgroundColor: '#ffd225'\n },\n '&.epr-tone-1f3fb': {\n backgroundColor: '#ffdfbd'\n },\n '&.epr-tone-1f3fc': {\n backgroundColor: '#e9c197'\n },\n '&.epr-tone-1f3fd': {\n backgroundColor: '#c88e62'\n },\n '&.epr-tone-1f3fe': {\n backgroundColor: '#a86637'\n },\n '&.epr-tone-1f3ff': {\n backgroundColor: '#60463a'\n }\n }\n});\n","/* eslint-disable complexity */\nimport { cx } from 'flairup';\nimport * as React from 'react';\n\nimport { ClassNames } from '../../../DomUtils/classNames';\nimport { stylesheet } from '../../../Stylesheet/stylesheet';\nimport { useSkinTonesDisabledConfig } from '../../../config/useConfig';\nimport skinToneVariations from '../../../data/skinToneVariations';\nimport { useCloseAllOpenToggles } from '../../../hooks/useCloseAllOpenToggles';\nimport { useFocusSearchInput } from '../../../hooks/useFocus';\nimport Absolute from '../../Layout/Absolute';\nimport Relative from '../../Layout/Relative';\nimport { useSkinTonePickerRef } from '../../context/ElementRefContext';\nimport {\n useActiveSkinToneState,\n useSkinToneFanOpenState\n} from '../../context/PickerContext';\n\nimport { BtnSkinToneVariation } from './BtnSkinToneVariation';\n\nconst ITEM_SIZE = 28;\n\ntype Props = {\n direction?: SkinTonePickerDirection;\n};\n\nexport function SkinTonePickerMenu() {\n return (\n <Relative style={{ height: ITEM_SIZE }}>\n <Absolute style={{ bottom: 0, right: 0 }}>\n <SkinTonePicker direction={SkinTonePickerDirection.VERTICAL} />\n </Absolute>\n </Relative>\n );\n}\n\nexport function SkinTonePicker({\n direction = SkinTonePickerDirection.HORIZONTAL\n}: Props) {\n const SkinTonePickerRef = useSkinTonePickerRef();\n const isDisabled = useSkinTonesDisabledConfig();\n const [isOpen, setIsOpen] = useSkinToneFanOpenState();\n const [activeSkinTone, setActiveSkinTone] = useActiveSkinToneState();\n const closeAllOpenToggles = useCloseAllOpenToggles();\n const focusSearchInput = useFocusSearchInput();\n\n if (isDisabled) {\n return null;\n }\n\n const fullWidth = `${ITEM_SIZE * skinToneVariations.length}px`;\n\n const expandedSize = isOpen ? fullWidth : ITEM_SIZE + 'px';\n\n const vertical = direction === SkinTonePickerDirection.VERTICAL;\n\n return (\n <Relative\n className={cx(\n styles.skinTones,\n vertical && styles.vertical,\n isOpen && styles.open,\n vertical && isOpen && styles.verticalShadow\n )}\n style={\n vertical\n ? { flexBasis: expandedSize, height: expandedSize }\n : { flexBasis: expandedSize }\n }\n >\n <div className={cx(styles.select)} ref={SkinTonePickerRef}>\n {skinToneVariations.map((skinToneVariation, i) => {\n const active = skinToneVariation === activeSkinTone;\n\n return (\n <BtnSkinToneVariation\n key={skinToneVariation}\n skinToneVariation={skinToneVariation}\n isOpen={isOpen}\n style={{\n transform: cx(\n vertical\n ? `translateY(-${i * (isOpen ? ITEM_SIZE : 0)}px)`\n : `translateX(-${i * (isOpen ? ITEM_SIZE : 0)}px)`,\n isOpen && active && 'scale(1.3)'\n )\n }}\n isActive={active}\n onClick={() => {\n if (isOpen) {\n setActiveSkinTone(skinToneVariation);\n focusSearchInput();\n } else {\n setIsOpen(true);\n }\n closeAllOpenToggles();\n }}\n />\n );\n })}\n </div>\n </Relative>\n );\n}\n\nexport enum SkinTonePickerDirection {\n VERTICAL = ClassNames.vertical,\n HORIZONTAL = ClassNames.horizontal\n}\n\nconst styles = stylesheet.create({\n skinTones: {\n '.': 'epr-skin-tones',\n '--': {\n '--epr-skin-tone-size': '15px'\n },\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'flex-end',\n transition: 'all 0.3s ease-in-out',\n padding: '10px 0'\n },\n vertical: {\n padding: '9px',\n alignItems: 'flex-end',\n flexDirection: 'column',\n borderRadius: '6px',\n border: '1px solid var(--epr-bg-color)'\n },\n verticalShadow: {\n boxShadow: '0px 0 7px var(--epr-picker-border-color)'\n },\n open: {\n // @ts-ignore\n backdropFilter: 'blur(5px)',\n background: 'var(--epr-skin-tone-picker-menu-color)',\n // @ts-ignore\n '.epr-active:after': {\n content: '',\n position: 'absolute',\n top: '-2px',\n left: '-2px',\n right: '-2px',\n bottom: '-2px',\n borderRadius: '5px',\n border: '1px solid var(--epr-active-skin-tone-indicator-border-color)'\n }\n },\n select: {\n '.': 'epr-skin-tone-select',\n position: 'relative',\n width: 'var(--epr-skin-tone-size)',\n height: 'var(--epr-skin-tone-size)',\n // @ts-ignore\n '> button': {\n width: 'var(--epr-skin-tone-size)',\n display: 'block',\n cursor: 'pointer',\n borderRadius: '4px',\n height: 'var(--epr-skin-tone-size)',\n position: 'absolute',\n right: '0',\n transition: 'transform 0.3s ease-in-out, opacity 0.35s ease-in-out',\n zIndex: '0',\n boxShadow: '0 0 0 0px var(--epr-active-skin-hover-color)'\n }\n }\n});\n","import { cx } from 'flairup';\nimport * as React from 'react';\nimport { useState } from 'react';\n\nimport {\n commonInteractionStyles,\n stylesheet\n} from '../../Stylesheet/stylesheet';\nimport {\n useEmojiStyleConfig,\n useGetEmojiUrlConfig,\n usePreviewConfig\n} from '../../config/useConfig';\nimport {\n emojiByUnified,\n emojiName,\n emojiUnified\n} from '../../dataUtils/emojiSelectors';\nimport { useEmojiPreviewEvents } from '../../hooks/useEmojiPreviewEvents';\nimport { useIsSkinToneInPreview } from '../../hooks/useShouldShowSkinTonePicker';\nimport Flex from '../Layout/Flex';\nimport Space from '../Layout/Space';\nimport { useEmojiVariationPickerState } from '../context/PickerContext';\nimport { ViewOnlyEmoji } from '../emoji/ViewOnlyEmoji';\nimport { SkinTonePickerMenu } from '../header/SkinTonePicker/SkinTonePicker';\n\nexport function Preview() {\n const previewConfig = usePreviewConfig();\n const isSkinToneInPreview = useIsSkinToneInPreview();\n\n if (!previewConfig.showPreview) {\n return null;\n }\n\n return (\n <Flex\n className={cx(styles.preview, commonInteractionStyles.hiddenOnReactions)}\n >\n <PreviewBody />\n <Space />\n {isSkinToneInPreview ? <SkinTonePickerMenu /> : null}\n </Flex>\n );\n}\n\nexport function PreviewBody() {\n const previewConfig = usePreviewConfig();\n const [previewEmoji, setPreviewEmoji] = useState<PreviewEmoji>(null);\n const emojiStyle = useEmojiStyleConfig();\n const [variationPickerEmoji] = useEmojiVariationPickerState();\n const getEmojiUrl = useGetEmojiUrlConfig();\n\n useEmojiPreviewEvents(previewConfig.showPreview, setPreviewEmoji);\n\n const emoji = emojiByUnified(\n previewEmoji?.unified ?? previewEmoji?.originalUnified\n );\n\n const show = emoji != null && previewEmoji != null;\n\n return <PreviewContent />;\n\n function PreviewContent() {\n const defaultEmoji =\n variationPickerEmoji ?? emojiByUnified(previewConfig.defaultEmoji);\n if (!defaultEmoji) {\n return null;\n }\n const defaultText = variationPickerEmoji\n ? emojiName(variationPickerEmoji)\n : previewConfig.defaultCaption;\n\n return (\n <>\n <div>\n {show ? (\n <ViewOnlyEmoji\n unified={previewEmoji?.unified as string}\n emoji={emoji}\n emojiStyle={emojiStyle}\n size={45}\n getEmojiUrl={getEmojiUrl}\n className={cx(styles.emoji)}\n />\n ) : defaultEmoji ? (\n <ViewOnlyEmoji\n unified={emojiUnified(defaultEmoji)}\n emoji={defaultEmoji}\n emojiStyle={emojiStyle}\n size={45}\n getEmojiUrl={getEmojiUrl}\n className={cx(styles.emoji)}\n />\n ) : null}\n </div>\n <div className={cx(styles.label)}>\n {show ? emojiName(emoji) : defaultText}\n </div>\n </>\n );\n }\n}\n\nexport type PreviewEmoji = null | {\n unified: string;\n originalUnified: string;\n};\n\nconst styles = stylesheet.create({\n preview: {\n alignItems: 'center',\n borderTop: '1px solid var(--epr-preview-border-color)',\n height: 'var(--epr-preview-height)',\n padding: '0 var(--epr-horizontal-padding)',\n position: 'relative',\n zIndex: 'var(--epr-preview-z-index)'\n },\n label: {\n color: 'var(--epr-preview-text-color)',\n fontSize: 'var(--epr-preview-text-size)',\n padding: 'var(--epr-preview-text-padding)',\n textTransform: 'capitalize'\n },\n emoji: {\n padding: '0'\n }\n});\n","export function categoryNameFromDom($category: Element | null): string | null {\n return $category?.getAttribute('data-name') ?? null;\n}\n","import { useEffect } from 'react';\n\nimport { categoryNameFromDom } from '../DomUtils/categoryNameFromDom';\nimport { asSelectors, ClassNames } from '../DomUtils/classNames';\nimport { useBodyRef } from '../components/context/ElementRefContext';\n\nexport function useActiveCategoryScrollDetection(\n setActiveCategory: (category: string) => void\n) {\n const BodyRef = useBodyRef();\n\n useEffect(() => {\n const visibleCategories = new Map();\n const bodyRef = BodyRef.current;\n const observer = new IntersectionObserver(\n entries => {\n if (!bodyRef) {\n return;\n }\n\n for (const entry of entries) {\n const id = categoryNameFromDom(entry.target);\n visibleCategories.set(id, entry.intersectionRatio);\n }\n\n const ratios = Array.from(visibleCategories);\n const lastCategory = ratios[ratios.length - 1];\n\n if (lastCategory[1] == 1) {\n return setActiveCategory(lastCategory[0]);\n }\n\n for (const [id, ratio] of ratios) {\n if (ratio) {\n setActiveCategory(id);\n break;\n }\n }\n },\n {\n threshold: [0, 1]\n }\n );\n bodyRef?.querySelectorAll(asSelectors(ClassNames.category)).forEach(el => {\n observer.observe(el);\n });\n }, [BodyRef, setActiveCategory]);\n}\n","import { useSearchTermState } from '../components/context/PickerContext';\n\nexport default function useIsSearchMode(): boolean {\n const [searchTerm] = useSearchTermState();\n\n return !!searchTerm;\n}\n","import { scrollTo } from '../DomUtils/scrollTo';\nimport { NullableElement } from '../DomUtils/selectors';\nimport {\n useBodyRef,\n usePickerMainRef\n} from '../components/context/ElementRefContext';\n\nexport function useScrollCategoryIntoView() {\n const BodyRef = useBodyRef();\n const PickerMainRef = usePickerMainRef();\n\n return function scrollCategoryIntoView(category: string): void {\n if (!BodyRef.current) {\n return;\n }\n const $category = BodyRef.current?.querySelector(\n `[data-name=\"${category}\"]`\n ) as NullableElement;\n\n if (!$category) {\n return;\n }\n\n const offsetTop = $category.offsetTop || 0;\n\n scrollTo(PickerMainRef.current, offsetTop);\n };\n}\n","import { useCustomEmojisConfig } from '../config/useConfig';\n\nexport function useShouldHideCustomEmojis() {\n const customCategoryConfig = useCustomEmojisConfig();\n\n if (!customCategoryConfig) {\n return false;\n }\n\n return customCategoryConfig.length === 0;\n}\n","import { cx } from 'flairup';\nimport * as React from 'react';\n\nimport { ClassNames } from '../../DomUtils/classNames';\nimport {\n commonInteractionStyles,\n stylesheet\n} from '../../Stylesheet/stylesheet';\nimport {\n CategoryConfig,\n categoryNameFromCategoryConfig\n} from '../../config/categoryConfig';\nimport { Button } from '../atoms/Button';\n\nimport SVGNavigation from './svg/CategoryNav.svg';\n\ntype Props = {\n isActiveCategory: boolean;\n category: string;\n allowNavigation: boolean;\n onClick: () => void;\n categoryConfig: CategoryConfig;\n};\n\nexport function CategoryButton({\n isActiveCategory,\n category,\n allowNavigation,\n categoryConfig,\n onClick\n}: Props) {\n return (\n <Button\n tabIndex={allowNavigation ? 0 : -1}\n className={cx(\n styles.catBtn,\n commonInteractionStyles.categoryBtn,\n `epr-icn-${category}`,\n {\n [ClassNames.active]: isActiveCategory\n }\n )}\n onClick={onClick}\n aria-label={categoryNameFromCategoryConfig(categoryConfig)}\n aria-selected={isActiveCategory}\n role=\"tab\"\n aria-controls=\"epr-category-nav-id\"\n />\n );\n}\n\nconst DarkActivePositionY = {\n backgroundPositionY: 'calc(var(--epr-category-navigation-button-size) * 3)'\n};\nconst DarkPositionY = {\n backgroundPositionY: 'calc(var(--epr-category-navigation-button-size) * 2)'\n};\n\nconst DarkInactivePosition = {\n ':not(.epr-search-active)': {\n catBtn: {\n ':hover': DarkActivePositionY,\n '&.epr-active': DarkActivePositionY\n }\n }\n};\n\nconst styles = stylesheet.create({\n catBtn: {\n '.': 'epr-cat-btn',\n display: 'inline-block',\n transition: 'opacity 0.2s ease-in-out',\n position: 'relative',\n height: 'var(--epr-category-navigation-button-size)',\n width: 'var(--epr-category-navigation-button-size)',\n backgroundSize: 'calc(var(--epr-category-navigation-button-size) * 10)',\n outline: 'none',\n backgroundPosition: '0 0',\n backgroundImage: `url(${SVGNavigation})`,\n ':focus:before': {\n content: '',\n position: 'absolute',\n top: '-2px',\n left: '-2px',\n right: '-2px',\n bottom: '-2px',\n border: '2px solid var(--epr-category-icon-active-color)',\n borderRadius: '50%'\n },\n // @ts-ignore\n '&.epr-icn-suggested': {\n backgroundPositionX:\n 'calc(var(--epr-category-navigation-button-size) * -8)'\n },\n '&.epr-icn-custom': {\n backgroundPositionX:\n 'calc(var(--epr-category-navigation-button-size) * -9)'\n },\n '&.epr-icn-activities': {\n backgroundPositionX:\n 'calc(var(--epr-category-navigation-button-size) * -4)'\n },\n '&.epr-icn-animals_nature': {\n backgroundPositionX:\n 'calc(var(--epr-category-navigation-button-size) * -1)'\n },\n '&.epr-icn-flags': {\n backgroundPositionX:\n 'calc(var(--epr-category-navigation-button-size) * -7)'\n },\n '&.epr-icn-food_drink': {\n backgroundPositionX:\n 'calc(var(--epr-category-navigation-button-size) * -2)'\n },\n '&.epr-icn-objects': {\n backgroundPositionX:\n 'calc(var(--epr-category-navigation-button-size) * -5)'\n },\n '&.epr-icn-smileys_people': {\n backgroundPositionX: '0px'\n },\n '&.epr-icn-symbols': {\n backgroundPositionX:\n 'calc(var(--epr-category-navigation-button-size) * -6)'\n },\n '&.epr-icn-travel_places': {\n backgroundPositionX:\n 'calc(var(--epr-category-navigation-button-size) * -3)'\n }\n },\n '.epr-dark-theme': {\n catBtn: DarkPositionY,\n ...DarkInactivePosition\n },\n '.epr-auto-theme': {\n catBtn: {\n '@media (prefers-color-scheme: dark)': DarkPositionY\n },\n ...DarkInactivePosition\n }\n});\n","import { cx } from 'flairup';\nimport * as React from 'react';\nimport { useState } from 'react';\n\nimport { stylesheet } from '../../Stylesheet/stylesheet';\nimport { categoryFromCategoryConfig } from '../../config/categoryConfig';\nimport { useCategoriesConfig } from '../../config/useConfig';\nimport { useActiveCategoryScrollDetection } from '../../hooks/useActiveCategoryScrollDetection';\nimport useIsSearchMode from '../../hooks/useIsSearchMode';\nimport { useScrollCategoryIntoView } from '../../hooks/useScrollCategoryIntoView';\nimport { useShouldHideCustomEmojis } from '../../hooks/useShouldHideCustomEmojis';\nimport { isCustomCategory } from '../../typeRefinements/typeRefinements';\nimport { useCategoryNavigationRef } from '../context/ElementRefContext';\n\nimport { CategoryButton } from './CategoryButton';\n\nexport function CategoryNavigation() {\n const [activeCategory, setActiveCategory] = useState<string | null>(null);\n const scrollCategoryIntoView = useScrollCategoryIntoView();\n useActiveCategoryScrollDetection(setActiveCategory);\n const isSearchMode = useIsSearchMode();\n\n const categoriesConfig = useCategoriesConfig();\n const CategoryNavigationRef = useCategoryNavigationRef();\n const hideCustomCategory = useShouldHideCustomEmojis();\n\n return (\n <div\n className={cx(styles.nav)}\n role=\"tablist\"\n aria-label=\"Category navigation\"\n id=\"epr-category-nav-id\"\n ref={CategoryNavigationRef}\n >\n {categoriesConfig.map(categoryConfig => {\n const category = categoryFromCategoryConfig(categoryConfig);\n const isActiveCategory = category === activeCategory;\n\n if (isCustomCategory(categoryConfig) && hideCustomCategory) {\n return null;\n }\n\n const allowNavigation = !isSearchMode && !isActiveCategory;\n\n return (\n <CategoryButton\n key={category}\n category={category}\n isActiveCategory={isActiveCategory}\n allowNavigation={allowNavigation}\n categoryConfig={categoryConfig}\n onClick={() => {\n setActiveCategory(category);\n scrollCategoryIntoView(category);\n }}\n />\n );\n })}\n </div>\n );\n}\n\nconst styles = stylesheet.create({\n nav: {\n '.': 'epr-category-nav',\n display: 'flex',\n flexDirection: 'row',\n justifyContent: 'space-around',\n padding: 'var(--epr-header-padding)'\n },\n '.epr-search-active': {\n nav: {\n opacity: '0.3',\n cursor: 'default',\n pointerEvents: 'none'\n }\n },\n '.epr-main:has(input:not(:placeholder-shown))': {\n nav: {\n opacity: '0.3',\n cursor: 'default',\n pointerEvents: 'none'\n }\n }\n});\n","import { cx } from 'flairup';\nimport * as React from 'react';\n\nimport {\n commonInteractionStyles,\n stylesheet\n} from '../../../Stylesheet/stylesheet';\nimport { useClearSearch } from '../../../hooks/useFilter';\nimport { Button } from '../../atoms/Button';\n\nimport SVGTimes from './svg/times.svg';\n\nexport function BtnClearSearch() {\n const clearSearch = useClearSearch();\n\n return (\n <Button\n className={cx(\n styles.btnClearSearch,\n commonInteractionStyles.visibleOnSearchOnly\n )}\n onClick={clearSearch}\n aria-label=\"Clear\"\n title=\"Clear\"\n >\n <div className={cx(styles.icnClearnSearch)} />\n </Button>\n );\n}\n\nconst HoverDark = {\n ':hover': {\n '> .epr-icn-clear-search': {\n backgroundPositionY: '-60px'\n }\n }\n};\n\nconst styles = stylesheet.create({\n btnClearSearch: {\n '.': 'epr-btn-clear-search',\n position: 'absolute',\n right: 'var(--epr-search-bar-inner-padding)',\n height: '30px',\n width: '30px',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n top: '50%',\n transform: 'translateY(-50%)',\n padding: '0',\n borderRadius: '50%',\n ':hover': {\n background: 'var(--epr-hover-bg-color)'\n },\n ':focus': {\n background: 'var(--epr-hover-bg-color)'\n }\n },\n icnClearnSearch: {\n '.': 'epr-icn-clear-search',\n backgroundColor: 'transparent',\n backgroundRepeat: 'no-repeat',\n backgroundSize: '20px',\n height: '20px',\n width: '20px',\n backgroundImage: `url(${SVGTimes})`,\n ':hover': {\n backgroundPositionY: '-20px'\n },\n ':focus': {\n backgroundPositionY: '-20px'\n }\n },\n '.epr-dark-theme': {\n icnClearnSearch: {\n backgroundPositionY: '-40px'\n },\n btnClearSearch: HoverDark\n },\n '.epr-auto-theme': {\n icnClearnSearch: {\n '@media (prefers-color-scheme: dark)': {\n backgroundPositionY: '-40px'\n }\n },\n btnClearSearch: {\n '@media (prefers-color-scheme: dark)': HoverDark\n }\n }\n});\n","import * as React from 'react';\n\nimport { ClassNames, asSelectors } from '../../../DomUtils/classNames';\nimport { getNormalizedSearchTerm } from '../../../hooks/useFilter';\n\nconst SCOPE = `${asSelectors(ClassNames.emojiPicker)} ${asSelectors(\n ClassNames.emojiList\n)}`;\n\nconst EMOJI_BUTTON = ['button', asSelectors(ClassNames.emoji)].join('');\nconst CATEGORY = asSelectors(ClassNames.category);\n\nexport function CssSearch({ value }: { value: undefined | string }) {\n if (!value) {\n return null;\n }\n\n const q = genQuery(value);\n\n return (\n <style>{`\n ${SCOPE} ${EMOJI_BUTTON} {\n display: none;\n }\n\n\n ${SCOPE} ${q} {\n display: flex;\n }\n\n ${SCOPE} ${CATEGORY}:not(:has(${q})) {\n display: none;\n }\n `}</style>\n );\n}\n\nfunction genQuery(value: string): string {\n return [\n EMOJI_BUTTON,\n '[data-full-name*=\"',\n getNormalizedSearchTerm(value),\n '\"]'\n ].join('');\n}\n","import { cx } from 'flairup';\nimport * as React from 'react';\n\nimport { stylesheet } from '../../../Stylesheet/stylesheet';\n\nimport SVGMagnifier from './svg/magnifier.svg';\n\nexport function IcnSearch() {\n return <div className={cx(styles.icnSearch)} />;\n}\n\nconst styles = stylesheet.create({\n icnSearch: {\n '.': 'epr-icn-search',\n content: '',\n position: 'absolute',\n top: '50%',\n left: 'var(--epr-search-bar-inner-padding)',\n transform: 'translateY(-50%)',\n width: '20px',\n height: '20px',\n backgroundRepeat: 'no-repeat',\n backgroundPosition: '0 0',\n backgroundSize: '20px',\n backgroundImage: `url(${SVGMagnifier})`\n },\n '.epr-dark-theme': {\n icnSearch: {\n backgroundPositionY: '-20px'\n }\n },\n '.epr-auto-theme': {\n icnSearch: {\n '@media (prefers-color-scheme: dark)': {\n backgroundPositionY: '-20px'\n }\n }\n }\n});\n","import { cx } from 'flairup';\nimport * as React from 'react';\nimport { useState } from 'react';\n\nimport { stylesheet } from '../../../Stylesheet/stylesheet';\nimport {\n useAutoFocusSearchConfig,\n useSearchDisabledConfig,\n useSearchPlaceHolderConfig\n} from '../../../config/useConfig';\nimport { useCloseAllOpenToggles } from '../../../hooks/useCloseAllOpenToggles';\nimport { useFilter } from '../../../hooks/useFilter';\nimport { useIsSkinToneInSearch } from '../../../hooks/useShouldShowSkinTonePicker';\nimport Flex from '../../Layout/Flex';\nimport Relative from '../../Layout/Relative';\nimport { useSearchInputRef } from '../../context/ElementRefContext';\nimport { SkinTonePicker } from '../SkinTonePicker/SkinTonePicker';\n\nimport { BtnClearSearch } from './BtnClearSearch';\nimport { CssSearch } from './CssSearch';\nimport { IcnSearch } from './IcnSearch';\nimport SVGTimes from './svg/times.svg';\n\nexport function SearchContainer() {\n const searchDisabled = useSearchDisabledConfig();\n\n const isSkinToneInSearch = useIsSkinToneInSearch();\n\n if (searchDisabled) {\n return null;\n }\n\n return (\n <Flex className={cx(styles.overlay)}>\n <Search />\n\n {isSkinToneInSearch ? <SkinTonePicker /> : null}\n </Flex>\n );\n}\n\nexport function Search() {\n const [inc, setInc] = useState(0);\n const closeAllOpenToggles = useCloseAllOpenToggles();\n const SearchInputRef = useSearchInputRef();\n const placeholder = useSearchPlaceHolderConfig();\n const autoFocus = useAutoFocusSearchConfig();\n const { statusSearchResults, searchTerm, onChange } = useFilter();\n\n const input = SearchInputRef?.current;\n const value = input?.value;\n\n return (\n <Relative className={cx(styles.searchContainer)}>\n <CssSearch value={value} />\n <input\n // eslint-disable-next-line jsx-a11y/no-autofocus\n autoFocus={autoFocus}\n aria-label={'Type to search for an emoji'}\n onFocus={closeAllOpenToggles}\n className={cx(styles.search)}\n type=\"text\"\n aria-controls=\"epr-search-id\"\n placeholder={placeholder}\n onChange={event => {\n setInc(inc + 1);\n setTimeout(() => {\n onChange(event?.target?.value ?? value);\n });\n }}\n ref={SearchInputRef}\n />\n {searchTerm ? (\n <div\n role=\"status\"\n className={cx('epr-status-search-results', styles.visuallyHidden)}\n aria-live=\"polite\"\n id=\"epr-search-id\"\n aria-atomic=\"true\"\n >\n {statusSearchResults}\n </div>\n ) : null}\n <IcnSearch />\n <BtnClearSearch />\n </Relative>\n );\n}\n\nconst styles = stylesheet.create({\n overlay: {\n padding: 'var(--epr-header-padding)',\n zIndex: 'var(--epr-header-overlay-z-index)'\n },\n searchContainer: {\n '.': 'epr-search-container',\n flex: '1',\n display: 'block',\n minWidth: '0'\n },\n visuallyHidden: {\n clip: 'rect(0 0 0 0)',\n clipPath: 'inset(50%)',\n height: '1px',\n overflow: 'hidden',\n position: 'absolute',\n whiteSpace: 'nowrap',\n width: '1px'\n },\n search: {\n outline: 'none',\n transition: 'all 0.2s ease-in-out',\n color: 'var(--epr-search-input-text-color)',\n borderRadius: 'var(--epr-search-input-border-radius)',\n padding: 'var(--epr-search-input-padding)',\n height: 'var(--epr-search-input-height)',\n backgroundColor: 'var(--epr-search-input-bg-color)',\n border: '1px solid var(--epr-search-input-bg-color)',\n width: '100%',\n ':focus': {\n backgroundColor: 'var(--epr-search-input-bg-color-active)',\n border: '1px solid var(--epr-search-border-color)'\n },\n '::placeholder': {\n color: 'var(--epr-search-input-placeholder-color)'\n }\n },\n\n btnClearSearch: {\n '.': 'epr-btn-clear-search',\n position: 'absolute',\n right: 'var(--epr-search-bar-inner-padding)',\n height: '30px',\n width: '30px',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n top: '50%',\n transform: 'translateY(-50%)',\n padding: '0',\n borderRadius: '50%',\n ':hover': {\n background: 'var(--epr-hover-bg-color)'\n },\n ':focus': {\n background: 'var(--epr-hover-bg-color)'\n }\n },\n icnClearnSearch: {\n '.': 'epr-icn-clear-search',\n backgroundColor: 'transparent',\n backgroundRepeat: 'no-repeat',\n backgroundSize: '20px',\n height: '20px',\n width: '20px',\n backgroundImage: `url(${SVGTimes})`,\n ':hover': {\n backgroundPositionY: '-20px'\n },\n ':focus': {\n backgroundPositionY: '-20px'\n }\n },\n '.epr-dark-theme': {\n icnClearnSearch: {\n backgroundPositionY: '-40px'\n },\n btnClearSearch: {\n ':hover > .epr-icn-clear-search': {\n backgroundPositionY: '-60px'\n }\n }\n },\n '.epr-auto-theme': {\n icnClearnSearch: {\n '@media (prefers-color-scheme: dark)': {\n backgroundPositionY: '-40px'\n }\n },\n btnClearSearch: {\n '@media (prefers-color-scheme: dark)': {\n // @ts-ignore\n ':hover > .epr-icn-clear-search': {\n backgroundPositionY: '-60px'\n }\n }\n }\n }\n});\n","import { cx } from 'flairup';\nimport * as React from 'react';\n\nimport { commonInteractionStyles } from '../../Stylesheet/stylesheet';\nimport Relative from '../Layout/Relative';\nimport { CategoryNavigation } from '../navigation/CategoryNavigation';\n\nimport { SearchContainer } from './Search/Search';\n\nexport function Header() {\n return (\n <Relative\n className={cx('epr-header', commonInteractionStyles.hiddenOnReactions)}\n >\n <SearchContainer />\n <CategoryNavigation />\n </Relative>\n );\n}\n","import { NullableElement } from './selectors';\n\nexport function getActiveElement() {\n return document.activeElement as NullableElement;\n}\n","import { useCallback, useEffect, useMemo } from 'react';\n\nimport { hasNextElementSibling } from '../DomUtils/elementPositionInRow';\nimport {\n focusNextElementSibling,\n focusPrevElementSibling\n} from '../DomUtils/focusElement';\nimport { getActiveElement } from '../DomUtils/getActiveElement';\nimport {\n focusAndClickFirstVisibleEmoji,\n focusFirstVisibleEmoji,\n focusNextVisibleEmoji,\n focusPrevVisibleEmoji,\n focusVisibleEmojiOneRowDown,\n focusVisibleEmojiOneRowUp\n} from '../DomUtils/keyboardNavigation';\nimport { useScrollTo } from '../DomUtils/scrollTo';\nimport { buttonFromTarget } from '../DomUtils/selectors';\nimport {\n useBodyRef,\n useCategoryNavigationRef,\n usePickerMainRef,\n useSearchInputRef,\n useSkinTonePickerRef\n} from '../components/context/ElementRefContext';\nimport { useSkinToneFanOpenState } from '../components/context/PickerContext';\nimport { useSearchDisabledConfig } from '../config/useConfig';\n\nimport {\n useCloseAllOpenToggles,\n useHasOpenToggles\n} from './useCloseAllOpenToggles';\nimport { useDisallowMouseMove } from './useDisallowMouseMove';\nimport { useAppendSearch, useClearSearch } from './useFilter';\nimport {\n useFocusCategoryNavigation,\n useFocusSearchInput,\n useFocusSkinTonePicker\n} from './useFocus';\nimport useIsSearchMode from './useIsSearchMode';\nimport useSetVariationPicker from './useSetVariationPicker';\nimport {\n useIsSkinToneInPreview,\n useIsSkinToneInSearch\n} from './useShouldShowSkinTonePicker';\n\nenum KeyboardEvents {\n ArrowDown = 'ArrowDown',\n ArrowUp = 'ArrowUp',\n ArrowLeft = 'ArrowLeft',\n ArrowRight = 'ArrowRight',\n Escape = 'Escape',\n Enter = 'Enter',\n Space = ' '\n}\n\nexport function useKeyboardNavigation() {\n usePickerMainKeyboardEvents();\n useSearchInputKeyboardEvents();\n useSkinTonePickerKeyboardEvents();\n useCategoryNavigationKeyboardEvents();\n useBodyKeyboardEvents();\n}\n\nfunction usePickerMainKeyboardEvents() {\n const PickerMainRef = usePickerMainRef();\n const clearSearch = useClearSearch();\n const scrollTo = useScrollTo();\n const SearchInputRef = useSearchInputRef();\n const focusSearchInput = useFocusSearchInput();\n const hasOpenToggles = useHasOpenToggles();\n const disallowMouseMove = useDisallowMouseMove();\n\n const closeAllOpenToggles = useCloseAllOpenToggles();\n\n const onKeyDown = useMemo(\n () =>\n function onKeyDown(event: KeyboardEvent) {\n const { key } = event;\n\n disallowMouseMove();\n switch (key) {\n // eslint-disable-next-line no-fallthrough\n case KeyboardEvents.Escape:\n event.preventDefault();\n if (hasOpenToggles()) {\n closeAllOpenToggles();\n return;\n }\n clearSearch();\n scrollTo(0);\n focusSearchInput();\n break;\n }\n },\n [\n scrollTo,\n clearSearch,\n closeAllOpenToggles,\n focusSearchInput,\n hasOpenToggles,\n disallowMouseMove\n ]\n );\n\n useEffect(() => {\n const current = PickerMainRef.current;\n\n if (!current) {\n return;\n }\n\n current.addEventListener('keydown', onKeyDown);\n\n return () => {\n current.removeEventListener('keydown', onKeyDown);\n };\n }, [PickerMainRef, SearchInputRef, scrollTo, onKeyDown]);\n}\n\nfunction useSearchInputKeyboardEvents() {\n const focusSkinTonePicker = useFocusSkinTonePicker();\n const PickerMainRef = usePickerMainRef();\n const BodyRef = useBodyRef();\n const SearchInputRef = useSearchInputRef();\n const [, setSkinToneFanOpenState] = useSkinToneFanOpenState();\n const goDownFromSearchInput = useGoDownFromSearchInput();\n const isSkinToneInSearch = useIsSkinToneInSearch();\n\n const onKeyDown = useMemo(\n () =>\n function onKeyDown(event: KeyboardEvent) {\n const { key } = event;\n\n switch (key) {\n case KeyboardEvents.ArrowRight:\n if (!isSkinToneInSearch) {\n return;\n }\n event.preventDefault();\n setSkinToneFanOpenState(true);\n focusSkinTonePicker();\n break;\n case KeyboardEvents.ArrowDown:\n event.preventDefault();\n goDownFromSearchInput();\n break;\n case KeyboardEvents.Enter:\n event.preventDefault();\n focusAndClickFirstVisibleEmoji(BodyRef.current);\n break;\n }\n },\n [\n focusSkinTonePicker,\n goDownFromSearchInput,\n setSkinToneFanOpenState,\n BodyRef,\n isSkinToneInSearch\n ]\n );\n\n useEffect(() => {\n const current = SearchInputRef.current;\n\n if (!current) {\n return;\n }\n\n current.addEventListener('keydown', onKeyDown);\n\n return () => {\n current.removeEventListener('keydown', onKeyDown);\n };\n }, [PickerMainRef, SearchInputRef, onKeyDown]);\n}\n\nfunction useSkinTonePickerKeyboardEvents() {\n const SkinTonePickerRef = useSkinTonePickerRef();\n const focusSearchInput = useFocusSearchInput();\n const SearchInputRef = useSearchInputRef();\n const goDownFromSearchInput = useGoDownFromSearchInput();\n const [isOpen, setIsOpen] = useSkinToneFanOpenState();\n const isSkinToneInPreview = useIsSkinToneInPreview();\n const isSkinToneInSearch = useIsSkinToneInSearch();\n const onType = useOnType();\n\n const onKeyDown = useMemo(\n () =>\n // eslint-disable-next-line complexity\n function onKeyDown(event: KeyboardEvent) {\n const { key } = event;\n\n if (isSkinToneInSearch) {\n switch (key) {\n case KeyboardEvents.ArrowLeft:\n event.preventDefault();\n if (!isOpen) {\n return focusSearchInput();\n }\n focusNextSkinTone(focusSearchInput);\n break;\n case KeyboardEvents.ArrowRight:\n event.preventDefault();\n if (!isOpen) {\n return focusSearchInput();\n }\n focusPrevSkinTone();\n break;\n case KeyboardEvents.ArrowDown:\n event.preventDefault();\n if (isOpen) {\n setIsOpen(false);\n }\n goDownFromSearchInput();\n break;\n default:\n onType(event);\n break;\n }\n }\n\n if (isSkinToneInPreview) {\n switch (key) {\n case KeyboardEvents.ArrowUp:\n event.preventDefault();\n if (!isOpen) {\n return focusSearchInput();\n }\n focusNextSkinTone(focusSearchInput);\n break;\n case KeyboardEvents.ArrowDown:\n event.preventDefault();\n if (!isOpen) {\n return focusSearchInput();\n }\n focusPrevSkinTone();\n break;\n default:\n onType(event);\n break;\n }\n }\n },\n [\n isOpen,\n focusSearchInput,\n setIsOpen,\n goDownFromSearchInput,\n onType,\n isSkinToneInPreview,\n isSkinToneInSearch\n ]\n );\n\n useEffect(() => {\n const current = SkinTonePickerRef.current;\n\n if (!current) {\n return;\n }\n\n current.addEventListener('keydown', onKeyDown);\n\n return () => {\n current.removeEventListener('keydown', onKeyDown);\n };\n }, [SkinTonePickerRef, SearchInputRef, isOpen, onKeyDown]);\n}\n\nfunction useCategoryNavigationKeyboardEvents() {\n const focusSearchInput = useFocusSearchInput();\n const CategoryNavigationRef = useCategoryNavigationRef();\n const BodyRef = useBodyRef();\n const onType = useOnType();\n\n const onKeyDown = useMemo(\n () =>\n function onKeyDown(event: KeyboardEvent) {\n const { key } = event;\n\n switch (key) {\n case KeyboardEvents.ArrowUp:\n event.preventDefault();\n focusSearchInput();\n break;\n case KeyboardEvents.ArrowRight:\n event.preventDefault();\n focusNextElementSibling(getActiveElement());\n break;\n case KeyboardEvents.ArrowLeft:\n event.preventDefault();\n focusPrevElementSibling(getActiveElement());\n break;\n case KeyboardEvents.ArrowDown:\n event.preventDefault();\n focusFirstVisibleEmoji(BodyRef.current);\n break;\n default:\n onType(event);\n break;\n }\n },\n [BodyRef, focusSearchInput, onType]\n );\n\n useEffect(() => {\n const current = CategoryNavigationRef.current;\n\n if (!current) {\n return;\n }\n\n current.addEventListener('keydown', onKeyDown);\n\n return () => {\n current.removeEventListener('keydown', onKeyDown);\n };\n }, [CategoryNavigationRef, BodyRef, onKeyDown]);\n}\n\nfunction useBodyKeyboardEvents() {\n const BodyRef = useBodyRef();\n const goUpFromBody = useGoUpFromBody();\n const setVariationPicker = useSetVariationPicker();\n const hasOpenToggles = useHasOpenToggles();\n const closeAllOpenToggles = useCloseAllOpenToggles();\n\n const onType = useOnType();\n\n const onKeyDown = useMemo(\n () =>\n // eslint-disable-next-line complexity\n function onKeyDown(event: KeyboardEvent) {\n const { key } = event;\n\n const activeElement = buttonFromTarget(getActiveElement());\n\n switch (key) {\n case KeyboardEvents.ArrowRight:\n event.preventDefault();\n focusNextVisibleEmoji(activeElement);\n break;\n case KeyboardEvents.ArrowLeft:\n event.preventDefault();\n focusPrevVisibleEmoji(activeElement);\n break;\n case KeyboardEvents.ArrowDown:\n event.preventDefault();\n if (hasOpenToggles()) {\n closeAllOpenToggles();\n break;\n }\n focusVisibleEmojiOneRowDown(activeElement);\n break;\n case KeyboardEvents.ArrowUp:\n event.preventDefault();\n if (hasOpenToggles()) {\n closeAllOpenToggles();\n break;\n }\n focusVisibleEmojiOneRowUp(activeElement, goUpFromBody);\n break;\n case KeyboardEvents.Space:\n event.preventDefault();\n setVariationPicker(event.target as HTMLElement);\n break;\n default:\n onType(event);\n break;\n }\n },\n [\n goUpFromBody,\n onType,\n setVariationPicker,\n hasOpenToggles,\n closeAllOpenToggles\n ]\n );\n\n useEffect(() => {\n const current = BodyRef.current;\n\n if (!current) {\n return;\n }\n\n current.addEventListener('keydown', onKeyDown);\n\n return () => {\n current.removeEventListener('keydown', onKeyDown);\n };\n }, [BodyRef, onKeyDown]);\n}\n\nfunction useGoDownFromSearchInput() {\n const focusCategoryNavigation = useFocusCategoryNavigation();\n const isSearchMode = useIsSearchMode();\n const BodyRef = useBodyRef();\n\n return useCallback(\n function goDownFromSearchInput() {\n if (isSearchMode) {\n return focusFirstVisibleEmoji(BodyRef.current);\n }\n return focusCategoryNavigation();\n },\n [BodyRef, focusCategoryNavigation, isSearchMode]\n );\n}\n\nfunction useGoUpFromBody() {\n const focusSearchInput = useFocusSearchInput();\n const focusCategoryNavigation = useFocusCategoryNavigation();\n const isSearchMode = useIsSearchMode();\n\n return useCallback(\n function goUpFromEmoji() {\n if (isSearchMode) {\n return focusSearchInput();\n }\n return focusCategoryNavigation();\n },\n [focusSearchInput, isSearchMode, focusCategoryNavigation]\n );\n}\n\nfunction focusNextSkinTone(exitLeft: () => void) {\n const currentSkinTone = getActiveElement();\n\n if (!currentSkinTone) {\n return;\n }\n\n if (!hasNextElementSibling(currentSkinTone)) {\n exitLeft();\n }\n\n focusNextElementSibling(currentSkinTone);\n}\n\nfunction focusPrevSkinTone() {\n const currentSkinTone = getActiveElement();\n\n if (!currentSkinTone) {\n return;\n }\n\n focusPrevElementSibling(currentSkinTone);\n}\n\nfunction useOnType() {\n const appendSearch = useAppendSearch();\n const focusSearchInput = useFocusSearchInput();\n const searchDisabled = useSearchDisabledConfig();\n const closeAllOpenToggles = useCloseAllOpenToggles();\n\n return function onType(event: KeyboardEvent) {\n const { key } = event;\n\n if (hasModifier(event) || searchDisabled) {\n return;\n }\n\n if (key.match(/(^[a-zA-Z0-9]$){1}/)) {\n event.preventDefault();\n closeAllOpenToggles();\n focusSearchInput();\n appendSearch(key);\n }\n };\n}\n\nfunction hasModifier(event: KeyboardEvent): boolean {\n const { metaKey, ctrlKey, altKey } = event;\n\n return metaKey || ctrlKey || altKey;\n}\n","import { GetEmojiUrl } from '../components/emoji/BaseEmojiProps';\nimport { DataEmoji } from '../dataUtils/DataTypes';\nimport { emojiUnified, emojiVariations } from '../dataUtils/emojiSelectors';\nimport { EmojiStyle } from '../types/exposedTypes';\n\nexport function preloadEmoji(\n getEmojiUrl: GetEmojiUrl,\n emoji: undefined | DataEmoji,\n emojiStyle: EmojiStyle\n): void {\n if (!emoji) {\n return;\n }\n\n if (emojiStyle === EmojiStyle.NATIVE) {\n return;\n }\n\n const unified = emojiUnified(emoji);\n\n if (preloadedEmojs.has(unified)) {\n return;\n }\n\n emojiVariations(emoji).forEach((variation) => {\n const emojiUrl = getEmojiUrl(variation, emojiStyle);\n preloadImage(emojiUrl);\n });\n\n preloadedEmojs.add(unified);\n}\n\nexport const preloadedEmojs: Set<string> = new Set();\n\nfunction preloadImage(url: string): void {\n const image = new Image();\n image.src = url;\n}\n","import { useEffect } from 'react';\n\nimport { buttonFromTarget, emojiFromElement } from '../DomUtils/selectors';\nimport { useBodyRef } from '../components/context/ElementRefContext';\nimport { useEmojiStyleConfig, useGetEmojiUrlConfig } from '../config/useConfig';\nimport { emojiHasVariations } from '../dataUtils/emojiSelectors';\nimport { EmojiStyle } from '../types/exposedTypes';\n\nimport { preloadEmoji } from './preloadEmoji';\n\nexport function useOnFocus() {\n const BodyRef = useBodyRef();\n const emojiStyle = useEmojiStyleConfig();\n const getEmojiUrl = useGetEmojiUrlConfig();\n\n useEffect(() => {\n if (emojiStyle === EmojiStyle.NATIVE) {\n return;\n }\n\n const bodyRef = BodyRef.current;\n\n bodyRef?.addEventListener('focusin', onFocus);\n\n return () => {\n bodyRef?.removeEventListener('focusin', onFocus);\n };\n\n function onFocus(event: FocusEvent) {\n const button = buttonFromTarget(event.target as HTMLElement);\n\n if (!button) {\n return;\n }\n\n const [emoji] = emojiFromElement(button);\n\n if (!emoji) {\n return;\n }\n\n if (emojiHasVariations(emoji)) {\n preloadEmoji(getEmojiUrl, emoji, emojiStyle);\n }\n }\n }, [BodyRef, emojiStyle, getEmojiUrl]);\n}\n","import { cx } from 'flairup';\nimport * as React from 'react';\n\nimport { ClassNames } from '../../DomUtils/classNames';\nimport { PickerStyleTag, stylesheet } from '../../Stylesheet/stylesheet';\nimport {\n useClassNameConfig,\n useStyleConfig,\n useThemeConfig\n} from '../../config/useConfig';\nimport useIsSearchMode from '../../hooks/useIsSearchMode';\nimport { useKeyboardNavigation } from '../../hooks/useKeyboardNavigation';\nimport { useOnFocus } from '../../hooks/useOnFocus';\nimport { Theme } from '../../types/exposedTypes';\nimport { usePickerMainRef } from '../context/ElementRefContext';\nimport {\n PickerContextProvider,\n useReactionsModeState\n} from '../context/PickerContext';\n\ntype Props = Readonly<{\n children: React.ReactNode;\n}>;\n\nexport default function PickerMain({ children }: Props) {\n return (\n <PickerContextProvider>\n <PickerStyleTag />\n <PickerRootElement>{children}</PickerRootElement>\n </PickerContextProvider>\n );\n}\n\ntype RootProps = Readonly<{\n className?: string;\n style?: React.CSSProperties;\n children: React.ReactNode;\n}>;\n\nfunction PickerRootElement({ children }: RootProps) {\n const [reactionsMode] = useReactionsModeState();\n const theme = useThemeConfig();\n const searchModeActive = useIsSearchMode();\n const PickerMainRef = usePickerMainRef();\n const className = useClassNameConfig();\n const style = useStyleConfig();\n\n useKeyboardNavigation();\n useOnFocus();\n\n return (\n <aside\n className={cx(\n styles.main,\n styles.baseVariables,\n theme === Theme.DARK && styles.darkTheme,\n theme === Theme.AUTO && styles.autoThemeDark,\n {\n [ClassNames.searchActive]: searchModeActive\n },\n reactionsMode && styles.reactionsMenu,\n className\n )}\n ref={PickerMainRef}\n style={reactionsMode ? undefined : style}\n >\n {children}\n </aside>\n );\n}\n\nconst DarkTheme = {\n '--epr-emoji-variation-picker-bg-color':\n 'var(--epr-dark-emoji-variation-picker-bg-color)',\n '--epr-highlight-color': 'var(--epr-dark-highlight-color)',\n '--epr-text-color': 'var(--epr-dark-text-color)',\n '--epr-hover-bg-color': 'var(--epr-dark-hover-bg-color)',\n '--epr-focus-bg-color': 'var(--epr-dark-focus-bg-color)',\n '--epr-search-input-bg-color': 'var(--epr-dark-search-input-bg-color)',\n '--epr-category-label-bg-color': 'var(--epr-dark-category-label-bg-color)',\n '--epr-picker-border-color': 'var(--epr-dark-picker-border-color)',\n '--epr-bg-color': 'var(--epr-dark-bg-color)',\n '--epr-reactions-bg-color': 'var(--epr-dark-reactions-bg-color)',\n '--epr-search-input-bg-color-active':\n 'var(--epr-dark-search-input-bg-color-active)',\n '--epr-emoji-variation-indicator-color':\n 'var(--epr-dark-emoji-variation-indicator-color)',\n '--epr-category-icon-active-color':\n 'var(--epr-dark-category-icon-active-color)',\n '--epr-skin-tone-picker-menu-color':\n 'var(--epr-dark-skin-tone-picker-menu-color)'\n};\n\nconst styles = stylesheet.create({\n main: {\n '.': ['epr-main', ClassNames.emojiPicker],\n position: 'relative',\n display: 'flex',\n flexDirection: 'column',\n borderWidth: '1px',\n borderStyle: 'solid',\n borderRadius: 'var(--epr-picker-border-radius)',\n borderColor: 'var(--epr-picker-border-color)',\n backgroundColor: 'var(--epr-bg-color)',\n overflow: 'hidden',\n transition: 'all 0.3s ease-in-out, background-color 0.1s ease-in-out',\n // @ts-expect-error - need to work on this\n '*': {\n boxSizing: 'border-box',\n fontFamily: 'sans-serif'\n }\n },\n baseVariables: {\n '--': {\n '--epr-highlight-color': '#007aeb',\n '--epr-hover-bg-color': '#f1f8ff',\n '--epr-focus-bg-color': '#e0f0ff',\n '--epr-text-color': '#858585',\n '--epr-search-input-bg-color': '#f6f6f6',\n '--epr-picker-border-color': '#e7e7e7',\n '--epr-bg-color': '#fff',\n '--epr-reactions-bg-color': '#ffffff90',\n '--epr-category-icon-active-color': '#6aa8de',\n '--epr-skin-tone-picker-menu-color': '#ffffff95',\n\n '--epr-horizontal-padding': '10px',\n\n '--epr-picker-border-radius': '8px',\n\n /* Header */\n '--epr-search-border-color': 'var(--epr-highlight-color)',\n '--epr-header-padding': '15px var(--epr-horizontal-padding)',\n\n /* Skin Tone Picker */\n '--epr-active-skin-tone-indicator-border-color':\n 'var(--epr-highlight-color)',\n '--epr-active-skin-hover-color': 'var(--epr-hover-bg-color)',\n\n /* Search */\n '--epr-search-input-bg-color-active': 'var(--epr-search-input-bg-color)',\n '--epr-search-input-padding': '0 30px',\n '--epr-search-input-border-radius': '8px',\n '--epr-search-input-height': '40px',\n '--epr-search-input-text-color': 'var(--epr-text-color)',\n '--epr-search-input-placeholder-color': 'var(--epr-text-color)',\n '--epr-search-bar-inner-padding': 'var(--epr-horizontal-padding)',\n\n /* Category Navigation */\n '--epr-category-navigation-button-size': '30px',\n\n /* Variation Picker */\n '--epr-emoji-variation-picker-height': '45px',\n '--epr-emoji-variation-picker-bg-color': 'var(--epr-bg-color)',\n\n /* Preview */\n '--epr-preview-height': '70px',\n '--epr-preview-text-size': '14px',\n '--epr-preview-text-padding': '0 var(--epr-horizontal-padding)',\n '--epr-preview-border-color': 'var(--epr-picker-border-color)',\n '--epr-preview-text-color': 'var(--epr-text-color)',\n\n /* Category */\n '--epr-category-padding': '0 var(--epr-horizontal-padding)',\n\n /* Category Label */\n '--epr-category-label-bg-color': '#ffffffe6',\n '--epr-category-label-text-color': 'var(--epr-text-color)',\n '--epr-category-label-padding': '0 var(--epr-horizontal-padding)',\n '--epr-category-label-height': '40px',\n\n /* Emoji */\n '--epr-emoji-size': '30px',\n '--epr-emoji-padding': '5px',\n '--epr-emoji-fullsize':\n 'calc(var(--epr-emoji-size) + var(--epr-emoji-padding) * 2)',\n '--epr-emoji-hover-color': 'var(--epr-hover-bg-color)',\n '--epr-emoji-variation-indicator-color': 'var(--epr-picker-border-color)',\n '--epr-emoji-variation-indicator-color-hover': 'var(--epr-text-color)',\n\n /* Z-Index */\n '--epr-header-overlay-z-index': '3',\n '--epr-emoji-variations-indictator-z-index': '1',\n '--epr-category-label-z-index': '2',\n '--epr-skin-variation-picker-z-index': '5',\n '--epr-preview-z-index': '6',\n\n /* Dark Theme Variables */\n '--epr-dark': '#000',\n '--epr-dark-emoji-variation-picker-bg-color': 'var(--epr-dark)',\n '--epr-dark-highlight-color': '#c0c0c0',\n '--epr-dark-text-color': 'var(--epr-highlight-color)',\n '--epr-dark-hover-bg-color': '#363636f6',\n '--epr-dark-focus-bg-color': '#474747',\n '--epr-dark-search-input-bg-color': '#333333',\n '--epr-dark-category-label-bg-color': '#222222e6',\n '--epr-dark-picker-border-color': '#151617',\n '--epr-dark-bg-color': '#222222',\n '--epr-dark-reactions-bg-color': '#22222290',\n '--epr-dark-search-input-bg-color-active': 'var(--epr-dark)',\n '--epr-dark-emoji-variation-indicator-color': '#444',\n '--epr-dark-category-icon-active-color': '#3271b7',\n '--epr-dark-skin-tone-picker-menu-color': '#22222295'\n }\n },\n autoThemeDark: {\n '.': ClassNames.autoTheme,\n '@media (prefers-color-scheme: dark)': {\n '--': DarkTheme\n }\n },\n darkTheme: {\n '.': ClassNames.darkTheme,\n '--': DarkTheme\n },\n reactionsMenu: {\n '.': 'epr-reactions',\n height: '50px',\n display: 'inline-flex',\n backgroundColor: 'var(--epr-reactions-bg-color)',\n // @ts-expect-error - need to work on this\n backdropFilter: 'blur(8px)',\n '--': {\n '--epr-picker-border-radius': '50px'\n }\n }\n});\n","import * as React from 'react';\n\nimport { Reactions } from './components/Reactions/Reactions';\nimport { Body } from './components/body/Body';\nimport { ElementRefContextProvider } from './components/context/ElementRefContext';\nimport { PickerConfigProvider } from './components/context/PickerConfigContext';\nimport { useReactionsModeState } from './components/context/PickerContext';\nimport { Preview } from './components/footer/Preview';\nimport { Header } from './components/header/Header';\nimport PickerMain from './components/main/PickerMain';\n\nimport { PickerProps } from './index';\n\nfunction EmojiPicker(props: PickerProps) {\n return (\n <ElementRefContextProvider>\n <PickerConfigProvider {...props}>\n <PickerMain>\n <ContentControl />\n </PickerMain>\n </PickerConfigProvider>\n </ElementRefContextProvider>\n );\n}\n\nfunction ContentControl() {\n const [reactionsDefaultOpen] = useReactionsModeState();\n const [renderAll, setRenderAll] = React.useState(!reactionsDefaultOpen);\n\n React.useEffect(() => {\n if (!renderAll) {\n setRenderAll(true);\n }\n }, []);\n\n return (\n <>\n <Reactions />\n {renderAll ? (\n <>\n <Header />\n <Body />\n <Preview />\n </>\n ) : null}\n </>\n );\n}\n\n// eslint-disable-next-line complexity\nexport default React.memo(EmojiPicker, (prev, next) => {\n const prevCustomEmojis = prev.customEmojis ?? [];\n const nextCustomEmojis = next.customEmojis ?? [];\n return (\n prev.emojiVersion === next.emojiVersion &&\n prev.reactionsDefaultOpen === next.reactionsDefaultOpen &&\n prev.searchPlaceHolder === next.searchPlaceHolder &&\n prev.searchPlaceholder === next.searchPlaceholder &&\n prev.defaultSkinTone === next.defaultSkinTone &&\n prev.skinTonesDisabled === next.skinTonesDisabled &&\n prev.autoFocusSearch === next.autoFocusSearch &&\n prev.emojiStyle === next.emojiStyle &&\n prev.theme === next.theme &&\n prev.suggestedEmojisMode === next.suggestedEmojisMode &&\n prev.lazyLoadEmojis === next.lazyLoadEmojis &&\n prev.className === next.className &&\n prev.height === next.height &&\n prev.width === next.width &&\n prev.style === next.style &&\n prev.searchDisabled === next.searchDisabled &&\n prev.skinTonePickerLocation === next.skinTonePickerLocation &&\n prevCustomEmojis.length === nextCustomEmojis.length\n );\n});\n","import * as React from 'react';\n\nexport default class ErrorBoundary extends React.Component<\n { children: React.ReactNode },\n { hasError: boolean }\n> {\n constructor(props: { children: React.ReactNode }) {\n super(props);\n this.state = { hasError: false };\n }\n\n static getDerivedStateFromError() {\n return { hasError: true };\n }\n\n componentDidCatch(error: Error, errorInfo: any) {\n // eslint-disable-next-line no-console\n console.error('Emoji Picker React failed to render:', error, errorInfo);\n }\n\n render() {\n if (this.state.hasError) {\n return null;\n }\n\n return this.props.children;\n }\n}\n","import * as React from 'react';\n\nimport { EmojiStyle } from '../../types/exposedTypes';\n\nimport { GetEmojiUrl } from './BaseEmojiProps';\nimport { ViewOnlyEmoji } from './ViewOnlyEmoji';\n\nexport function ExportedEmoji({\n unified,\n size = 32,\n emojiStyle = EmojiStyle.APPLE,\n lazyLoad = false,\n getEmojiUrl,\n emojiUrl\n}: {\n unified: string;\n emojiStyle?: EmojiStyle;\n size?: number;\n lazyLoad?: boolean;\n getEmojiUrl?: GetEmojiUrl;\n emojiUrl?: string;\n}) {\n if (!unified && !emojiUrl && !getEmojiUrl) {\n return null;\n }\n\n return (\n <ViewOnlyEmoji\n unified={unified}\n size={size}\n emojiStyle={emojiStyle}\n lazyLoad={lazyLoad}\n getEmojiUrl={emojiUrl ? () => emojiUrl : getEmojiUrl}\n />\n );\n}\n","import * as React from 'react';\n\nimport EmojiPickerReact from './EmojiPickerReact';\nimport ErrorBoundary from './components/ErrorBoundary';\nimport { PickerConfig } from './config/config';\nimport {\n MutableConfigContext,\n useDefineMutableConfig\n} from './config/mutableConfig';\n\nexport { ExportedEmoji as Emoji } from './components/emoji/ExportedEmoji';\n\nexport {\n EmojiStyle,\n SkinTones,\n Theme,\n Categories,\n EmojiClickData,\n SuggestionMode,\n SkinTonePickerLocation\n} from './types/exposedTypes';\n\nexport interface PickerProps extends PickerConfig {}\n\nexport default function EmojiPicker(props: PickerProps) {\n const MutableConfigRef = useDefineMutableConfig({\n onEmojiClick: props.onEmojiClick\n });\n\n return (\n <ErrorBoundary>\n <MutableConfigContext.Provider value={MutableConfigRef}>\n <EmojiPickerReact {...props} />\n </MutableConfigContext.Provider>\n </ErrorBoundary>\n );\n}\n"],"names":["ClassNames","asSelectors","classNames","Array","_len","_key","arguments","map","c","join","useIsMounted","_React$useState","React","isMounted","setIsMounted","stylesheet","createSheet","hidden","display","opacity","pointerEvents","visibility","overflow","commonStyles","create","_extends","PickerStyleTag","isApplied","suppressHydrationWarning","dangerouslySetInnerHTML","__html","getStyle","commonInteractionStyles","categoryBtn","backgroundPositionY","hiddenOnSearch","visibleOnSearchOnly","hiddenOnReactions","transition","height","width","DEFAULT_REACTIONS","SuggestionMode","EmojiStyle","Theme","SkinTones","Categories","SkinTonePickerLocation","categoriesOrdered","SUGGESTED","CUSTOM","SMILEYS_PEOPLE","ANIMALS_NATURE","FOOD_DRINK","TRAVEL_PLACES","ACTIVITIES","OBJECTS","SYMBOLS","FLAGS","SuggestedRecent","name","category","configByCategory","_configByCategory","baseCategoriesConfig","modifiers","categoryFromCategoryConfig","categoryNameFromCategoryConfig","mergeCategoriesConfig","userCategoriesConfig","extra","suggestionMode","RECENT","base","_userCategoriesConfig","length","getBaseConfigByCategory","modifier","Object","assign","CDN_URL_APPLE","CDN_URL_FACEBOOK","CDN_URL_TWITTER","CDN_URL_GOOGLE","cdnUrl","emojiStyle","TWITTER","GOOGLE","FACEBOOK","APPLE","skinToneVariations","NEUTRAL","LIGHT","MEDIUM_LIGHT","MEDIUM","MEDIUM_DARK","DARK","skinTonesNamed","entries","reduce","acc","_ref","key","value","skinTonesMapped","mapped","skinTone","_Object$assign","EmojiProperties","alphaNumericEmojiIndex","setTimeout","allEmojis","searchIndex","emoji","indexEmoji","joinedNameString","emojiNames","flat","toLowerCase","replace","split","forEach","char","_alphaNumericEmojiInd","emojiUnified","_emoji$EmojiPropertie","addedIn","parseFloat","added_in","emojiName","unifiedWithoutSkinTone","unified","splat","_splat$splice","splice","emojiHasVariations","_emojiVariationUnifie","emojiVariationUnified","emojisByCategory","_emojis$category","emojis","emojiUrlByUnified","emojiVariations","_emoji$EmojiPropertie2","variations","find","variation","includes","emojiByUnified","allEmojisByUnified","withoutSkinTone","values","setCustomEmojis","customEmojis","emojiData","customToRegularEmoji","push","names","id","imgUrl","Emoji","activeVariationFromUnified","_unified$split","suspectedSkinTone","KNOWN_FAILING_EMOJIS","DEFAULT_SEARCH_PLACEHOLDER","SEARCH_RESULTS_NO_RESULTS_FOUND","SEARCH_RESULTS_SUFFIX","SEARCH_RESULTS_ONE_RESULT_FOUND","SEARCH_RESULTS_MULTIPLE_RESULTS_FOUND","mergeConfig","userConfig","basePickerConfig","previewConfig","_userConfig$previewCo","config","categories","suggestedEmojisMode","_config$customEmojis","skinTonePickerLocation","searchDisabled","PREVIEW","autoFocusSearch","className","defaultSkinTone","emojiVersion","getEmojiUrl","lazyLoadEmojis","basePreviewConfig","searchPlaceHolder","searchPlaceholder","SEARCH","skinTonesDisabled","style","FREQUENT","theme","unicodeToHide","Set","reactionsDefaultOpen","reactions","defaultEmoji","defaultCaption","showPreview","ConfigContext","PickerConfigProvider","children","_objectWithoutPropertiesLoose","_excluded","mergedConfig","useSetConfig","Provider","setMergedConfig","_mergedConfig$customE","_config$customEmojis2","usePickerConfig","MutableConfigContext","createContext","useMutableConfig","mutableConfig","useContext","useDefineMutableConfig","MutableConfigRef","useRef","onEmojiClick","emptyFunc","useEffect","current","useSearchPlaceHolderConfig","_usePickerConfig","_find","p","useDefaultSkinToneConfig","_usePickerConfig2","useSkinTonesDisabledConfig","_usePickerConfig3","useEmojiStyleConfig","_usePickerConfig4","useAutoFocusSearchConfig","_usePickerConfig5","useCategoriesConfig","_usePickerConfig6","useCustomEmojisConfig","_usePickerConfig7","useOnEmojiClickConfig","_useMutableConfig","usePreviewConfig","_usePickerConfig8","useThemeConfig","_usePickerConfig9","useSuggestedEmojisModeConfig","_usePickerConfig10","useLazyLoadEmojisConfig","_usePickerConfig11","useClassNameConfig","_usePickerConfig12","useStyleConfig","_usePickerConfig13","getDimension","useReactionsOpenConfig","_usePickerConfig14","useEmojiVersionConfig","_usePickerConfig15","useSearchDisabledConfig","_usePickerConfig16","useSkinTonePickerLocationConfig","_usePickerConfig17","useUnicodeToHide","_usePickerConfig18","useReactionsConfig","_usePickerConfig19","useGetEmojiUrlConfig","_usePickerConfig20","dimensionConfig","useSearchResultsConfig","searchResultsCount","hasResults","isPlural","toString","elementCountInRow","parent","element","parentWidth","getBoundingClientRect","elementWidth","Math","floor","elementIndexInRow","elementLeft","left","parentLeft","rowNumber","elementHeight","elementTop","top","parentTop","round","hasNextRow","parentHeight","getRowElements","elements","row","elementsInRow","lastRow","firstElementIndex","lastElementIndex","slice","getNextRowElements","allElements","currentRow","nextRow","getElementInRow","indexInRow","rowElements","getElementInNextRow","index","nextRowElements","getElementInPrevRow","prevRowElements","firstVisibleElementInContainer","parentBottom","bottom","visibleElements","elementBottom","hasNextElementSibling","nextElementSibling","EmojiButtonSelector","VisibleEmojiSelector","visible","buttonFromTarget","emojiElement","_emojiElement$closest","closest","emojiFromElement","originalUnified","originalUnifiedFromEmojiElement","unifiedFromEmojiElement","isEmojiElement","Boolean","matches","_element$parentElemen","parentElement","_element$clientHeight","clientHeight","emojiTrueOffsetTop","button","closestCategory","labelHeight","categoryLabelHeight","elementOffsetTop","categoryWithoutLabel","querySelector","categoryContent","_category$clientHeigh","_categoryWithoutLabel","isEmojiBehindLabel","emojiDistanceFromScrollTop","queryScrollBody","root","scrollBody","_closestScrollBody$sc","_closestScrollBody","closestScrollBody","scrollTop","_element$closest","emojiTruOffsetLeft","elementOffsetLeft","_element$offsetTop","offsetTop","_element$offsetLeft","offsetLeft","_elementDataSetKey","elementDataSetKey","_elementDataSet$key","elementDataSet","_element$dataset","dataset","isVisibleEmoji","classList","contains","isHidden","allVisibleEmojis","from","querySelectorAll","lastVisibleEmoji","_allEmojis$slice","last","prevVisibleEmoji","nextVisibleEmoji","next","firstVisibleEmoji","nextCategory","prev","previousElementSibling","prevCategory","closestCategoryContent","useDebouncedState","initialValue","delay","_useState","useState","state","setState","timer","debouncedSetState","Promise","resolve","clearTimeout","_window","window","useIsUnicodeHidden","has","useDisallowedEmojis","DisallowedEmojisRef","emojiVersionConfig","useMemo","Number","isNaN","disallowedEmojis","addedInNewerVersion","useIsEmojiDisallowed","isUnicodeHidden","isEmojiDisallowed","supportedLevel","useMarkInitialLoad","dispatch","PickerContextProvider","filterRef","disallowClickRef","disallowMouseRef","disallowedEmojisRef","suggestedUpdateState","Date","now","searchTerm","skinToneFanOpenState","activeSkinTone","activeCategoryState","emojisThatFailedToLoadState","emojiVariationPickerState","reactionsModeState","isPastInitialLoad","setIsPastInitialLoad","PickerContext","undefined","useFilterRef","_React$useContext","useDisallowClickRef","_React$useContext2","useDisallowMouseRef","_React$useContext3","useReactionsModeState","_React$useContext4","useSearchTermState","_React$useContext5","useActiveSkinToneState","_React$useContext6","useEmojisThatFailedToLoadState","_React$useContext7","useIsPastInitialLoad","_React$useContext8","useEmojiVariationPickerState","_React$useContext9","useSkinToneFanOpenState","_React$useContext10","useUpdateSuggested","_React$useContext12","suggestedUpdated","setsuggestedUpdate","updateSuggested","parseNativeEmoji","hex","String","fromCodePoint","parseInt","SUGGESTED_LS_KEY","getSuggested","mode","_window$localStorage$","_window2","localStorage","recent","JSON","parse","getItem","sort","a","b","count","_unused","setSuggested","existing","u","nextList","concat","filter","i","original","min","_window3","setItem","stringify","_unused2","isCustomCategory","isCustomEmoji","useCloseAllOpenToggles","_useEmojiVariationPic","variationPicker","setVariationPicker","_useSkinToneFanOpenSt","skinToneFanOpen","setSkinToneFanOpen","closeAllOpenToggles","useCallback","useHasOpenToggles","_useEmojiVariationPic2","_useSkinToneFanOpenSt2","hasOpenToggles","focusElement","requestAnimationFrame","focus","focusPrevElementSibling","focusNextElementSibling","focusFirstElementChild","first","firstElementChild","ElementRefContextProvider","PickerMainRef","AnchoredEmojiRef","BodyRef","SearchInputRef","SkinTonePickerRef","CategoryNavigationRef","VariationPickerRef","ReactionsRef","ElementRefContext","useElementRef","usePickerMainRef","useAnchoredEmojiRef","useSetAnchoredEmojiRef","target","useBodyRef","useReactionsRef","useSearchInputRef","useSkinTonePickerRef","useCategoryNavigationRef","useVariationPickerRef","useSetVariationPicker","setAnchoredEmojiRef","setEmojiVariationPicker","_emojiFromElement","useMouseDownHandlers","mouseDownTimerRef","_useActiveSkinToneSta","_useUpdateSuggested","activeEmojiStyle","onClick","event","_emojiFromEvent","emojiFromEvent","skinToneToUse","emojiClickOutput","onMouseDown","_emojiFromEvent2","onMouseUp","bodyRef","addEventListener","passive","removeEventListener","getImageUrl","imageUrl","isCustom","Button","props","type","cx","styles","cursor","border","background","outline","ClickableEmojiButton","_ref$showVariations","showVariations","hasVariations","_ref$round","_cx","position","boxSizing","alignItems","justifyContent","maxWidth","maxHeight","borderRadius","backgroundColor","content","right","borderLeft","borderRight","transform","borderBottom","zIndex","emojiStyles","external","fontSize","common","alignSelf","justifySelf","EmojiImg","_ref$lazyLoad","lazyLoad","onError","src","alt","emojiImag","loading","minWidth","minHeight","padding","NativeEmoji","nativeEmoji","fontFamily","lineHeight","textAlign","letterSpacing","ViewOnlyEmoji","size","_ref$getEmojiUrl","_useEmojisThatFailedT","setEmojisThatFailedToLoad","emojiToRender","NATIVE","add","ClickableEmoji","BtnPlus","_useReactionsModeStat","setReactionsMode","tabIndex","plusSign","color","backgroundImage","Plus","backgroundRepeat","backgroundSize","Reactions","reactionsOpen","list","ref","reaction","listStyle","margin","useDisallowMouseMove","DisallowMouseRef","disallowMouseMove","useAllowMouseMove","allowMouseMove","useIsMouseDisallowed","isMouseDisallowed","useOnMouseMove","onMouseMove","useOnScroll","onScroll","scrollTo","$eprBody","scrollBy","by","useScrollTo","scrollEmojiAboveLabel","useFocusSearchInput","useFocusSkinTonePicker","useFocusCategoryNavigation","useSetFilterRef","setFilter","setter","useClearSearch","applySearch","useApplySearch","focusSearchInput","clearSearch","useAppendSearch","appendSearch","str","getNormalizedSearchTerm","useFilter","setFilterRef","_useSearchTermState","statusSearchResults","getStatusSearchResults","onChange","inputValue","nextValue","longestMatch","findLongestMatch","filterEmojiObjectByKeyword","_useSearchTermState2","setSearchTerm","then","keyword","filtered","hasMatch","some","useIsEmojiFiltered","_useFilterRef","_useSearchTermState3","isEmojiFilteredBySearchTerm","_filter$searchTerm","dict","longestMatchingKey","keys","trim","filterState","_Object$entries","useIsEmojiHidden","emojisThatFailedToLoad","isEmojiFiltered","failedToLoad","filteredOut","EmojiCategory","categoryConfig","categoryName","label","gridGap","gridTemplateColumns","backdropFilter","fontWeight","textTransform","Suggested","suggestedEmojisModeConfig","suggested","_getSuggested","suggestedItem","EmojiList","renderdCategoriesCountRef","emojiList","RenderCategory","isEmojiHidden","emojisToPush","hiddenCounter","_isEmojiHidden","isDisallowed","focusFirstVisibleEmoji","focusAndClickFirstVisibleEmoji","firstEmoji","click","focusLastVisibleEmoji","focusNextVisibleEmoji","focusPrevVisibleEmoji","focusVisibleEmojiOneRowUp","exitUp","visibleEmojiOneRowUp","focusVisibleEmojiOneRowDown","visibleEmojiOneRowDown","countInRow","prevVisibleCategory","nextVisibleCategory","itemInNextRow","Direction","EmojiVariationPicker","_useVariationPickerTo","useVariationPickerTop","getTop","getMenuDirection","getPointerStyle","usePointerStyle","pointerStyle","Down","pointingUp","pointer","clientWidth","direction","Up","emojiOffsetTop","_bodyRef$scrollTop","buttonHeight","boxShadow","transformOrigin","backgroundPosition","SVGTriangle","Body","body","flex","overflowY","overflowX","useEmojiPreviewEvents","allow","setPreviewEmoji","onEscape","onMouseOver","onEnter","onLeave","e","relatedTarget","useIsSkinToneInSearch","skinTonePickerLocationConfig","useIsSkinToneInPreview","FlexDirection","Flex","_ref$style","_ref$direction","ROW","_stylesheet$create","flexDirection","COLUMN","Space","Absolute","Relative","BtnSkinToneVariation","isOpen","isActive","skinToneVariation","tone","closedTone","active","ITEM_SIZE","SkinTonePickerMenu","SkinTonePicker","SkinTonePickerDirection","VERTICAL","HORIZONTAL","isDisabled","setIsOpen","setActiveSkinTone","fullWidth","expandedSize","vertical","skinTones","open","verticalShadow","flexBasis","select","Preview","isSkinToneInPreview","preview","PreviewBody","previewEmoji","variationPickerEmoji","_previewEmoji$unified","show","PreviewContent","defaultText","borderTop","categoryNameFromDom","$category","_$category$getAttribu","getAttribute","useActiveCategoryScrollDetection","setActiveCategory","visibleCategories","Map","observer","IntersectionObserver","_iterator","_createForOfIteratorHelperLoose","_step","done","entry","set","intersectionRatio","ratios","lastCategory","_i","_ratios","_ratios$_i","ratio","threshold","el","observe","useIsSearchMode","useScrollCategoryIntoView","scrollCategoryIntoView","_BodyRef$current","useShouldHideCustomEmojis","customCategoryConfig","CategoryButton","isActiveCategory","allowNavigation","catBtn","role","DarkActivePositionY","DarkPositionY","DarkInactivePosition","SVGNavigation","backgroundPositionX","CategoryNavigation","activeCategory","isSearchMode","categoriesConfig","hideCustomCategory","nav","BtnClearSearch","btnClearSearch","title","icnClearnSearch","HoverDark","SVGTimes","SCOPE","emojiPicker","EMOJI_BUTTON","CATEGORY","CssSearch","q","genQuery","IcnSearch","icnSearch","SVGMagnifier","SearchContainer","isSkinToneInSearch","overlay","Search","inc","setInc","placeholder","autoFocus","_useFilter","input","searchContainer","onFocus","search","_event$target$value","_event$target","visuallyHidden","clip","clipPath","whiteSpace","Header","getActiveElement","document","activeElement","KeyboardEvents","useKeyboardNavigation","usePickerMainKeyboardEvents","useSearchInputKeyboardEvents","useSkinTonePickerKeyboardEvents","useCategoryNavigationKeyboardEvents","useBodyKeyboardEvents","onKeyDown","Escape","preventDefault","focusSkinTonePicker","setSkinToneFanOpenState","goDownFromSearchInput","useGoDownFromSearchInput","ArrowRight","ArrowDown","Enter","onType","useOnType","ArrowLeft","focusNextSkinTone","focusPrevSkinTone","ArrowUp","goUpFromBody","useGoUpFromBody","focusCategoryNavigation","goUpFromEmoji","exitLeft","currentSkinTone","hasModifier","match","metaKey","ctrlKey","altKey","preloadEmoji","preloadedEmojs","emojiUrl","preloadImage","url","image","Image","useOnFocus","PickerMain","PickerRootElement","_ref2","reactionsMode","searchModeActive","main","baseVariables","darkTheme","AUTO","autoThemeDark","searchActive","reactionsMenu","DarkTheme","borderWidth","borderStyle","borderColor","autoTheme","EmojiPicker","ContentControl","renderAll","setRenderAll","prevCustomEmojis","_prev$customEmojis","nextCustomEmojis","_next$customEmojis","ErrorBoundary","_React$Component","_inheritsLoose","_this","call","hasError","getDerivedStateFromError","_proto","prototype","componentDidCatch","error","errorInfo","console","render","ExportedEmoji","_ref$size","_ref$emojiStyle","EmojiPickerReact"],"mappings":"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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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"}
|
|
1
|
+
{"version":3,"file":"emoji-picker-react.cjs.development.js","sources":["../src/DomUtils/classNames.ts","../src/Stylesheet/stylesheet.tsx","../src/config/compareConfig.ts","../src/components/Reactions/DEFAULT_REACTIONS.ts","../src/types/exposedTypes.ts","../src/config/categoryConfig.ts","../src/config/cdnUrls.ts","../src/data/skinToneVariations.ts","../src/dataUtils/DataTypes.ts","../src/dataUtils/alphaNumericEmojiIndex.ts","../src/dataUtils/emojiSelectors.ts","../src/config/config.ts","../src/components/context/PickerConfigContext.tsx","../src/config/mutableConfig.ts","../src/config/useConfig.ts","../src/hooks/useDebouncedState.ts","../src/hooks/useHideEmojisByUniocode.ts","../src/hooks/useDisallowedEmojis.ts","../src/hooks/useInitialLoad.ts","../src/components/context/PickerContext.tsx","../src/hooks/useIsSearchMode.ts","../src/DomUtils/focusElement.ts","../src/DomUtils/getActiveElement.ts","../src/components/context/ElementRefContext.tsx","../src/DomUtils/scrollTo.ts","../src/DomUtils/keyboardNavigation.ts","../src/hooks/useCloseAllOpenToggles.ts","../src/hooks/useDisallowMouseMove.ts","../src/hooks/useFocus.ts","../src/hooks/useFilter.ts","../src/hooks/useSetVariationPicker.ts","../src/hooks/useShouldShowSkinTonePicker.ts","../src/hooks/useKeyboardNavigation.ts","../src/hooks/preloadEmoji.ts","../src/hooks/useOnFocus.ts","../src/components/main/PickerMain.tsx","../src/DomUtils/elementPositionInRow.ts","../src/DomUtils/selectors.ts","../src/dataUtils/parseNativeEmoji.ts","../src/dataUtils/suggested.ts","../src/typeRefinements/typeRefinements.ts","../src/hooks/useMouseDownHandlers.ts","../src/components/atoms/Button.tsx","../src/components/emoji/ClickableEmojiButton.tsx","../src/components/emoji/emojiStyles.ts","../src/components/emoji/EmojiImg.tsx","../src/components/emoji/NativeEmoji.tsx","../src/components/emoji/ViewOnlyEmoji.tsx","../src/components/emoji/Emoji.tsx","../src/components/Reactions/BtnPlus.tsx","../src/components/Reactions/Reactions.tsx","../src/hooks/useOnScroll.ts","../src/hooks/useIsEmojiHidden.ts","../src/components/body/EmojiCategory.tsx","../src/hooks/useIsEverMounted.ts","../src/components/body/Suggested.tsx","../src/components/body/EmojiList.tsx","../src/components/body/EmojiVariationPicker.tsx","../src/components/body/Body.tsx","../src/DomUtils/detectEmojyPartiallyBelowFold.ts","../src/hooks/useEmojiPreviewEvents.ts","../src/components/Layout/Flex.tsx","../src/components/Layout/Space.tsx","../src/components/Layout/Absolute.tsx","../src/components/Layout/Relative.tsx","../src/components/header/SkinTonePicker/BtnSkinToneVariation.tsx","../src/components/header/SkinTonePicker/SkinTonePicker.tsx","../src/components/footer/Preview.tsx","../src/DomUtils/categoryNameFromDom.ts","../src/hooks/useActiveCategoryScrollDetection.ts","../src/hooks/useScrollCategoryIntoView.ts","../src/hooks/useShouldHideCustomEmojis.ts","../src/components/navigation/CategoryButton.tsx","../src/components/navigation/CategoryNavigation.tsx","../src/components/header/Search/BtnClearSearch.tsx","../src/components/header/Search/CssSearch.tsx","../src/components/header/Search/IcnSearch.tsx","../src/components/header/Search/Search.tsx","../src/components/header/Header.tsx","../src/EmojiPickerReact.tsx","../src/components/ErrorBoundary.tsx","../src/components/emoji/ExportedEmoji.tsx","../src/index.tsx"],"sourcesContent":["export enum ClassNames {\n hiddenOnSearch = 'epr-hidden-on-search',\n searchActive = 'epr-search-active',\n hidden = 'epr-hidden',\n visible = 'epr-visible',\n active = 'epr-active',\n emoji = 'epr-emoji',\n category = 'epr-emoji-category',\n label = 'epr-emoji-category-label',\n categoryContent = 'epr-emoji-category-content',\n emojiHasVariations = 'epr-emoji-has-variations',\n scrollBody = 'epr-body',\n emojiList = 'epr-emoji-list',\n external = '__EmojiPicker__',\n emojiPicker = 'EmojiPickerReact',\n open = 'epr-open',\n vertical = 'epr-vertical',\n horizontal = 'epr-horizontal',\n variationPicker = 'epr-emoji-variation-picker',\n darkTheme = 'epr-dark-theme',\n autoTheme = 'epr-auto-theme'\n}\n\nexport function asSelectors(...classNames: ClassNames[]): string {\n return classNames.map(c => `.${c}`).join('');\n}\n","import { Styles, createSheet } from 'flairup';\nimport * as React from 'react';\n\nimport { ClassNames } from '../DomUtils/classNames';\n\nexport const stylesheet = createSheet('epr', null);\n\nconst hidden = {\n display: 'none',\n opacity: '0',\n pointerEvents: 'none',\n visibility: 'hidden',\n overflow: 'hidden'\n};\n\nexport const commonStyles = stylesheet.create({\n hidden: {\n '.': ClassNames.hidden,\n ...hidden\n }\n});\n\nexport const PickerStyleTag = React.memo(function PickerStyleTag() {\n return (\n <style\n suppressHydrationWarning\n dangerouslySetInnerHTML={{ __html: stylesheet.getStyle() }}\n />\n );\n});\n\nexport const commonInteractionStyles = stylesheet.create({\n '.epr-main': {\n ':has(input:not(:placeholder-shown))': {\n categoryBtn: {\n ':hover': {\n opacity: '1',\n backgroundPositionY: 'var(--epr-category-navigation-button-size)'\n }\n },\n hiddenOnSearch: {\n '.': ClassNames.hiddenOnSearch,\n ...hidden\n }\n },\n ':has(input(:placeholder-shown))': {\n visibleOnSearchOnly: hidden\n }\n },\n hiddenOnReactions: {\n transition: 'all 0.5s ease-in-out'\n },\n '.epr-reactions': {\n hiddenOnReactions: {\n height: '0px',\n width: '0px',\n opacity: '0',\n pointerEvents: 'none',\n overflow: 'hidden'\n }\n },\n '.EmojiPickerReact:not(.epr-search-active)': {\n categoryBtn: {\n ':hover': {\n opacity: '1',\n backgroundPositionY: 'var(--epr-category-navigation-button-size)'\n },\n // @ts-ignore\n '&.epr-active': {\n opacity: '1',\n backgroundPositionY: 'var(--epr-category-navigation-button-size)'\n }\n },\n visibleOnSearchOnly: {\n '.': 'epr-visible-on-search-only',\n ...hidden\n }\n }\n});\n\nexport function darkMode(key: string, value: Styles) {\n return {\n '.epr-dark-theme': {\n [key]: value\n },\n '.epr-auto-theme': {\n [key]: {\n '@media (prefers-color-scheme: dark)': value\n }\n }\n };\n}\n","import { PickerConfig } from './config';\n\n// eslint-disable-next-line complexity\nexport function compareConfig(prev: PickerConfig, next: PickerConfig) {\n const prevCustomEmojis = prev.customEmojis ?? [];\n const nextCustomEmojis = next.customEmojis ?? [];\n return (\n prev.open === next.open &&\n prev.emojiVersion === next.emojiVersion &&\n prev.reactionsDefaultOpen === next.reactionsDefaultOpen &&\n prev.searchPlaceHolder === next.searchPlaceHolder &&\n prev.searchPlaceholder === next.searchPlaceholder &&\n prev.defaultSkinTone === next.defaultSkinTone &&\n prev.skinTonesDisabled === next.skinTonesDisabled &&\n prev.autoFocusSearch === next.autoFocusSearch &&\n prev.emojiStyle === next.emojiStyle &&\n prev.theme === next.theme &&\n prev.suggestedEmojisMode === next.suggestedEmojisMode &&\n prev.lazyLoadEmojis === next.lazyLoadEmojis &&\n prev.className === next.className &&\n prev.height === next.height &&\n prev.width === next.width &&\n prev.style === next.style &&\n prev.searchDisabled === next.searchDisabled &&\n prev.skinTonePickerLocation === next.skinTonePickerLocation &&\n prevCustomEmojis.length === nextCustomEmojis.length\n );\n}","export const DEFAULT_REACTIONS = [\n '1f44d', // 👍\n '2764-fe0f', // ❤️\n '1f603', // 😃\n '1f622', // 😢\n '1f64f', // 🙏\n '1f44e', // 👎\n '1f621' // 😡\n];\n","export type EmojiClickData = {\n activeSkinTone: SkinTones;\n unified: string;\n unifiedWithoutSkinTone: string;\n emoji: string;\n names: string[];\n imageUrl: string;\n getImageUrl: (emojiStyle?: EmojiStyle) => string;\n isCustom: boolean;\n};\n\nexport enum SuggestionMode {\n RECENT = 'recent',\n FREQUENT = 'frequent'\n}\n\nexport enum EmojiStyle {\n NATIVE = 'native',\n APPLE = 'apple',\n TWITTER = 'twitter',\n GOOGLE = 'google',\n FACEBOOK = 'facebook'\n}\n\nexport enum Theme {\n DARK = 'dark',\n LIGHT = 'light',\n AUTO = 'auto'\n}\n\nexport enum SkinTones {\n NEUTRAL = 'neutral',\n LIGHT = '1f3fb',\n MEDIUM_LIGHT = '1f3fc',\n MEDIUM = '1f3fd',\n MEDIUM_DARK = '1f3fe',\n DARK = '1f3ff'\n}\n\nexport enum Categories {\n SUGGESTED = 'suggested',\n CUSTOM = 'custom',\n SMILEYS_PEOPLE = 'smileys_people',\n ANIMALS_NATURE = 'animals_nature',\n FOOD_DRINK = 'food_drink',\n TRAVEL_PLACES = 'travel_places',\n ACTIVITIES = 'activities',\n OBJECTS = 'objects',\n SYMBOLS = 'symbols',\n FLAGS = 'flags'\n}\n\nexport enum SkinTonePickerLocation {\n SEARCH = 'SEARCH',\n PREVIEW = 'PREVIEW'\n}\n","import { Categories, SuggestionMode } from '../types/exposedTypes';\n\nexport { Categories };\n\nconst categoriesOrdered: Categories[] = [\n Categories.SUGGESTED,\n Categories.CUSTOM,\n Categories.SMILEYS_PEOPLE,\n Categories.ANIMALS_NATURE,\n Categories.FOOD_DRINK,\n Categories.TRAVEL_PLACES,\n Categories.ACTIVITIES,\n Categories.OBJECTS,\n Categories.SYMBOLS,\n Categories.FLAGS\n];\n\nexport const SuggestedRecent: CategoryConfig = {\n name: 'Recently Used',\n category: Categories.SUGGESTED\n};\n\nexport type CustomCategoryConfig = {\n category: Categories.CUSTOM;\n name: string;\n};\n\nconst configByCategory: Record<Categories, CategoryConfig> = {\n [Categories.SUGGESTED]: {\n category: Categories.SUGGESTED,\n name: 'Frequently Used'\n },\n [Categories.CUSTOM]: {\n category: Categories.CUSTOM,\n name: 'Custom Emojis'\n },\n [Categories.SMILEYS_PEOPLE]: {\n category: Categories.SMILEYS_PEOPLE,\n name: 'Smileys & People'\n },\n [Categories.ANIMALS_NATURE]: {\n category: Categories.ANIMALS_NATURE,\n name: 'Animals & Nature'\n },\n [Categories.FOOD_DRINK]: {\n category: Categories.FOOD_DRINK,\n name: 'Food & Drink'\n },\n [Categories.TRAVEL_PLACES]: {\n category: Categories.TRAVEL_PLACES,\n name: 'Travel & Places'\n },\n [Categories.ACTIVITIES]: {\n category: Categories.ACTIVITIES,\n name: 'Activities'\n },\n [Categories.OBJECTS]: {\n category: Categories.OBJECTS,\n name: 'Objects'\n },\n [Categories.SYMBOLS]: {\n category: Categories.SYMBOLS,\n name: 'Symbols'\n },\n [Categories.FLAGS]: {\n category: Categories.FLAGS,\n name: 'Flags'\n }\n};\n\nexport function baseCategoriesConfig(\n modifiers?: Record<Categories, CategoryConfig>\n): CategoriesConfig {\n return categoriesOrdered.map(category => {\n return {\n ...configByCategory[category],\n ...(modifiers && modifiers[category] && modifiers[category])\n };\n });\n}\n\nexport function categoryFromCategoryConfig(category: CategoryConfig) {\n return category.category;\n}\n\nexport function categoryNameFromCategoryConfig(category: CategoryConfig) {\n return category.name;\n}\n\nexport type CategoriesConfig = CategoryConfig[];\n\nexport type CategoryConfig = {\n category: Categories;\n name: string;\n};\n\nexport type UserCategoryConfig = Array<Categories | CategoryConfig>;\n\nexport function mergeCategoriesConfig(\n userCategoriesConfig: UserCategoryConfig = [],\n modifiers: CategoryConfigModifiers = {}\n): CategoriesConfig {\n const extra = {} as Record<Categories, CategoryConfig>;\n\n if (modifiers.suggestionMode === SuggestionMode.RECENT) {\n extra[Categories.SUGGESTED] = SuggestedRecent;\n }\n\n const base = baseCategoriesConfig(extra);\n if (!userCategoriesConfig?.length) {\n return base;\n }\n\n return userCategoriesConfig.map(category => {\n if (typeof category === 'string') {\n return getBaseConfigByCategory(category, extra[category]);\n }\n\n return {\n ...getBaseConfigByCategory(category.category, extra[category.category]),\n ...category\n };\n });\n}\n\nfunction getBaseConfigByCategory(\n category: Categories,\n modifier: CategoryConfig = {} as CategoryConfig\n) {\n return Object.assign(configByCategory[category], modifier);\n}\n\ntype CategoryConfigModifiers = {\n suggestionMode?: SuggestionMode;\n};\n","import { EmojiStyle } from '../types/exposedTypes';\n\nconst CDN_URL_APPLE =\n 'https://cdn.jsdelivr.net/npm/emoji-datasource-apple/img/apple/64/';\nconst CDN_URL_FACEBOOK =\n 'https://cdn.jsdelivr.net/npm/emoji-datasource-facebook/img/facebook/64/';\nconst CDN_URL_TWITTER =\n 'https://cdn.jsdelivr.net/npm/emoji-datasource-twitter/img/twitter/64/';\nconst CDN_URL_GOOGLE =\n 'https://cdn.jsdelivr.net/npm/emoji-datasource-google/img/google/64/';\n\nexport function cdnUrl(emojiStyle: EmojiStyle): string {\n switch (emojiStyle) {\n case EmojiStyle.TWITTER:\n return CDN_URL_TWITTER;\n case EmojiStyle.GOOGLE:\n return CDN_URL_GOOGLE;\n case EmojiStyle.FACEBOOK:\n return CDN_URL_FACEBOOK;\n case EmojiStyle.APPLE:\n default:\n return CDN_URL_APPLE;\n }\n}\n","import { SkinTones } from '../types/exposedTypes';\n\nconst skinToneVariations = [\n SkinTones.NEUTRAL,\n SkinTones.LIGHT,\n SkinTones.MEDIUM_LIGHT,\n SkinTones.MEDIUM,\n SkinTones.MEDIUM_DARK,\n SkinTones.DARK\n];\n\nexport const skinTonesNamed = Object.entries(SkinTones).reduce(\n (acc, [key, value]) => {\n acc[value] = key;\n return acc;\n },\n {} as Record<string, string>\n);\n\nexport const skinTonesMapped: Record<\n string,\n string\n> = skinToneVariations.reduce(\n (mapped, skinTone) =>\n Object.assign(mapped, {\n [skinTone]: skinTone\n }),\n {}\n);\n\nexport default skinToneVariations;\n","import emojis from '../data/emojis';\n\nexport enum EmojiProperties {\n name = 'n',\n unified = 'u',\n variations = 'v',\n added_in = 'a',\n imgUrl = 'imgUrl'\n}\n\nexport interface DataEmoji extends WithName {\n [EmojiProperties.unified]: string;\n [EmojiProperties.variations]?: string[];\n [EmojiProperties.added_in]: string;\n [EmojiProperties.imgUrl]?: string;\n}\n\nexport type DataEmojis = DataEmoji[];\n\nexport type DataGroups = keyof typeof emojis;\n\nexport type WithName = {\n [EmojiProperties.name]: string[];\n};\n","import { DataEmoji } from './DataTypes';\nimport { allEmojis, emojiNames, emojiUnified } from './emojiSelectors';\n\nexport const alphaNumericEmojiIndex: BaseIndex = {};\n\nsetTimeout(() => {\n allEmojis.reduce((searchIndex, emoji) => {\n indexEmoji(emoji);\n return searchIndex;\n }, alphaNumericEmojiIndex as BaseIndex);\n});\n\ntype BaseIndex = Record<string, Record<string, DataEmoji>>;\n\nexport function indexEmoji(emoji: DataEmoji): void {\n const joinedNameString = emojiNames(emoji)\n .flat()\n .join('')\n .toLowerCase()\n .replace(/[^a-zA-Z\\d]/g, '')\n .split('');\n\n joinedNameString.forEach(char => {\n alphaNumericEmojiIndex[char] = alphaNumericEmojiIndex[char] ?? {};\n\n alphaNumericEmojiIndex[char][emojiUnified(emoji)] = emoji;\n });\n}\n","import { Categories } from '../config/categoryConfig';\nimport { cdnUrl } from '../config/cdnUrls';\nimport { CustomEmoji } from '../config/customEmojiConfig';\nimport emojis from '../data/emojis';\nimport skinToneVariations, {\n skinTonesMapped\n} from '../data/skinToneVariations';\nimport { EmojiStyle, SkinTones } from '../types/exposedTypes';\n\nimport { DataEmoji, DataEmojis, EmojiProperties, WithName } from './DataTypes';\nimport { indexEmoji } from './alphaNumericEmojiIndex';\n\nexport function emojiNames(emoji: WithName): string[] {\n return emoji[EmojiProperties.name] ?? [];\n}\n\nexport function addedIn(emoji: DataEmoji): number {\n return parseFloat(emoji[EmojiProperties.added_in]);\n}\n\nexport function emojiName(emoji?: WithName): string {\n if (!emoji) {\n return '';\n }\n\n return emojiNames(emoji)[0];\n}\n\nexport function unifiedWithoutSkinTone(unified: string): string {\n const splat = unified.split('-');\n const [skinTone] = splat.splice(1, 1);\n\n if (skinTonesMapped[skinTone]) {\n return splat.join('-');\n }\n\n return unified;\n}\n\nexport function emojiUnified(emoji: DataEmoji, skinTone?: string): string {\n const unified = emoji[EmojiProperties.unified];\n\n if (!skinTone || !emojiHasVariations(emoji)) {\n return unified;\n }\n\n return emojiVariationUnified(emoji, skinTone) ?? unified;\n}\n\nexport function emojisByCategory(category: Categories): DataEmojis {\n // @ts-ignore\n return emojis?.[category] ?? [];\n}\n\n// WARNING: DO NOT USE DIRECTLY\nexport function emojiUrlByUnified(\n unified: string,\n emojiStyle: EmojiStyle\n): string {\n return `${cdnUrl(emojiStyle)}${unified}.png`;\n}\n\nexport function emojiVariations(emoji: DataEmoji): string[] {\n return emoji[EmojiProperties.variations] ?? [];\n}\n\nexport function emojiHasVariations(emoji: DataEmoji): boolean {\n return emojiVariations(emoji).length > 0;\n}\n\nexport function emojiVariationUnified(\n emoji: DataEmoji,\n skinTone?: string\n): string | undefined {\n return skinTone\n ? emojiVariations(emoji).find(variation => variation.includes(skinTone))\n : emojiUnified(emoji);\n}\n\nexport function emojiByUnified(unified?: string): DataEmoji | undefined {\n if (!unified) {\n return;\n }\n\n if (allEmojisByUnified[unified]) {\n return allEmojisByUnified[unified];\n }\n\n const withoutSkinTone = unifiedWithoutSkinTone(unified);\n return allEmojisByUnified[withoutSkinTone];\n}\n\nexport const allEmojis: DataEmojis = Object.values(emojis).flat();\n\nexport function setCustomEmojis(customEmojis: CustomEmoji[]): void {\n emojis[Categories.CUSTOM].length = 0;\n\n customEmojis.forEach(emoji => {\n const emojiData = customToRegularEmoji(emoji);\n\n emojis[Categories.CUSTOM].push(emojiData as never);\n\n if (allEmojisByUnified[emojiData[EmojiProperties.unified]]) {\n return;\n }\n\n allEmojis.push(emojiData);\n allEmojisByUnified[emojiData[EmojiProperties.unified]] = emojiData;\n indexEmoji(emojiData);\n });\n}\n\nfunction customToRegularEmoji(emoji: CustomEmoji): DataEmoji {\n return {\n [EmojiProperties.name]: emoji.names.map(name => name.toLowerCase()),\n [EmojiProperties.unified]: emoji.id.toLowerCase(),\n [EmojiProperties.added_in]: '0',\n [EmojiProperties.imgUrl]: emoji.imgUrl\n };\n}\n\nconst allEmojisByUnified: {\n [unified: string]: DataEmoji;\n} = {};\n\nsetTimeout(() => {\n allEmojis.reduce((allEmojis, Emoji) => {\n allEmojis[emojiUnified(Emoji)] = Emoji;\n\n if (emojiHasVariations(Emoji)) {\n emojiVariations(Emoji).forEach(variation => {\n allEmojis[variation] = Emoji;\n });\n }\n\n return allEmojis;\n }, allEmojisByUnified);\n});\n\nexport function activeVariationFromUnified(unified: string): SkinTones | null {\n const [, suspectedSkinTone] = unified.split('-') as [string, SkinTones];\n return skinToneVariations.includes(suspectedSkinTone)\n ? suspectedSkinTone\n : null;\n}\n","import * as React from 'react';\n\nimport { DEFAULT_REACTIONS } from '../components/Reactions/DEFAULT_REACTIONS';\nimport { GetEmojiUrl } from '../components/emoji/BaseEmojiProps';\nimport {\n setCustomEmojis,\n emojiUrlByUnified\n} from '../dataUtils/emojiSelectors';\nimport {\n EmojiClickData,\n EmojiStyle,\n SkinTonePickerLocation,\n SkinTones,\n SuggestionMode,\n Theme\n} from '../types/exposedTypes';\n\nimport {\n CategoriesConfig,\n baseCategoriesConfig,\n mergeCategoriesConfig\n} from './categoryConfig';\nimport { CustomEmoji } from './customEmojiConfig';\n\nconst KNOWN_FAILING_EMOJIS = ['2640-fe0f', '2642-fe0f', '2695-fe0f'];\n\nexport const DEFAULT_SEARCH_PLACEHOLDER = 'Search';\nexport const SEARCH_RESULTS_NO_RESULTS_FOUND = 'No results found';\nexport const SEARCH_RESULTS_SUFFIX =\n ' found. Use up and down arrow keys to navigate.';\nexport const SEARCH_RESULTS_ONE_RESULT_FOUND =\n '1 result' + SEARCH_RESULTS_SUFFIX;\nexport const SEARCH_RESULTS_MULTIPLE_RESULTS_FOUND =\n '%n results' + SEARCH_RESULTS_SUFFIX;\n\nexport function mergeConfig(\n userConfig: PickerConfig = {}\n): PickerConfigInternal {\n const base = basePickerConfig();\n\n const previewConfig = Object.assign(\n base.previewConfig,\n userConfig.previewConfig ?? {}\n );\n const config = Object.assign(base, userConfig);\n\n const categories = mergeCategoriesConfig(userConfig.categories, {\n suggestionMode: config.suggestedEmojisMode\n });\n\n setCustomEmojis(config.customEmojis ?? []);\n\n const skinTonePickerLocation = config.searchDisabled\n ? SkinTonePickerLocation.PREVIEW\n : config.skinTonePickerLocation;\n\n return {\n ...config,\n categories,\n previewConfig,\n skinTonePickerLocation\n };\n}\n\nexport function basePickerConfig(): PickerConfigInternal {\n return {\n autoFocusSearch: true,\n categories: baseCategoriesConfig(),\n className: '',\n customEmojis: [],\n defaultSkinTone: SkinTones.NEUTRAL,\n emojiStyle: EmojiStyle.APPLE,\n emojiVersion: null,\n getEmojiUrl: emojiUrlByUnified,\n height: 450,\n lazyLoadEmojis: false,\n previewConfig: {\n ...basePreviewConfig\n },\n searchDisabled: false,\n searchPlaceHolder: DEFAULT_SEARCH_PLACEHOLDER,\n searchPlaceholder: DEFAULT_SEARCH_PLACEHOLDER,\n skinTonePickerLocation: SkinTonePickerLocation.SEARCH,\n skinTonesDisabled: false,\n style: {},\n suggestedEmojisMode: SuggestionMode.FREQUENT,\n theme: Theme.LIGHT,\n unicodeToHide: new Set<string>(KNOWN_FAILING_EMOJIS),\n width: 350,\n reactionsDefaultOpen: false,\n reactions: DEFAULT_REACTIONS,\n open: true\n };\n}\n\nexport type PickerConfigInternal = {\n emojiVersion: string | null;\n searchPlaceHolder: string;\n searchPlaceholder: string;\n defaultSkinTone: SkinTones;\n skinTonesDisabled: boolean;\n autoFocusSearch: boolean;\n emojiStyle: EmojiStyle;\n categories: CategoriesConfig;\n theme: Theme;\n suggestedEmojisMode: SuggestionMode;\n lazyLoadEmojis: boolean;\n previewConfig: PreviewConfig;\n className: string;\n height: PickerDimensions;\n width: PickerDimensions;\n style: React.CSSProperties;\n getEmojiUrl: GetEmojiUrl;\n searchDisabled: boolean;\n skinTonePickerLocation: SkinTonePickerLocation;\n unicodeToHide: Set<string>;\n customEmojis: CustomEmoji[];\n reactionsDefaultOpen: boolean;\n reactions: string[];\n open: boolean;\n};\n\nexport type PreviewConfig = {\n defaultEmoji: string;\n defaultCaption: string;\n showPreview: boolean;\n};\n\nconst basePreviewConfig: PreviewConfig = {\n defaultEmoji: '1f60a',\n defaultCaption: \"What's your mood?\",\n showPreview: true\n};\n\ntype ConfigExternal = {\n previewConfig: Partial<PreviewConfig>;\n onEmojiClick: MouseDownEvent;\n onReactionClick: MouseDownEvent;\n} & Omit<PickerConfigInternal, 'previewConfig' | 'unicodeToHide'>;\n\nexport type PickerConfig = Partial<ConfigExternal>;\n\nexport type PickerDimensions = string | number;\n\nexport type MouseDownEvent = (emoji: EmojiClickData, event: MouseEvent) => void;\n","import * as React from 'react';\n\nimport { compareConfig } from '../../config/compareConfig';\nimport {\n basePickerConfig,\n mergeConfig,\n PickerConfig,\n PickerConfigInternal\n} from '../../config/config';\n\ntype Props = PickerConfig &\n Readonly<{\n children: React.ReactNode;\n }>;\n\nconst ConfigContext = React.createContext<PickerConfigInternal>(\n basePickerConfig()\n);\n\nexport function PickerConfigProvider({ children, ...config }: Props) {\n const mergedConfig = useSetConfig(config);\n\n return (\n <ConfigContext.Provider value={mergedConfig}>\n {children}\n </ConfigContext.Provider>\n );\n}\n\nexport function useSetConfig(config: PickerConfig) {\n const [mergedConfig, setMergedConfig] = React.useState(() =>\n mergeConfig(config)\n );\n\n React.useEffect(() => {\n if (compareConfig(mergedConfig, config)) {\n return;\n }\n setMergedConfig(mergeConfig(config));\n // not gonna...\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [\n config.customEmojis?.length,\n config.open,\n config.emojiVersion,\n config.reactionsDefaultOpen,\n config.searchPlaceHolder,\n config.searchPlaceholder,\n config.defaultSkinTone,\n config.skinTonesDisabled,\n config.autoFocusSearch,\n config.emojiStyle,\n config.theme,\n config.suggestedEmojisMode,\n config.lazyLoadEmojis,\n config.className,\n config.height,\n config.width,\n config.searchDisabled,\n config.skinTonePickerLocation\n ]);\n\n return mergedConfig;\n}\n\nexport function usePickerConfig() {\n return React.useContext(ConfigContext);\n}\n","import React from 'react';\n\nimport { MouseDownEvent } from './config';\n\nexport type MutableConfig = {\n onEmojiClick?: MouseDownEvent;\n onReactionClick?: MouseDownEvent;\n};\n\nexport const MutableConfigContext = React.createContext<\n React.MutableRefObject<MutableConfig>\n>({} as React.MutableRefObject<MutableConfig>);\n\nexport function useMutableConfig(): React.MutableRefObject<MutableConfig> {\n const mutableConfig = React.useContext(MutableConfigContext);\n return mutableConfig;\n}\n\nexport function useDefineMutableConfig(\n config: MutableConfig\n): React.MutableRefObject<MutableConfig> {\n const MutableConfigRef = React.useRef<MutableConfig>({\n onEmojiClick: config.onEmojiClick || emptyFunc,\n onReactionClick: config.onReactionClick || config.onEmojiClick\n });\n\n React.useEffect(() => {\n MutableConfigRef.current.onEmojiClick = config.onEmojiClick || emptyFunc;\n MutableConfigRef.current.onReactionClick =\n config.onReactionClick || config.onEmojiClick;\n }, [config.onEmojiClick, config.onReactionClick]);\n\n return MutableConfigRef;\n}\n\nfunction emptyFunc() {}\n","import * as React from 'react';\n\nimport { usePickerConfig } from '../components/context/PickerConfigContext';\nimport {\n EmojiClickData,\n EmojiStyle,\n SkinTonePickerLocation,\n SkinTones,\n SuggestionMode,\n Theme\n} from '../types/exposedTypes';\n\nimport { CategoriesConfig } from './categoryConfig';\nimport {\n DEFAULT_SEARCH_PLACEHOLDER,\n SEARCH_RESULTS_NO_RESULTS_FOUND,\n SEARCH_RESULTS_ONE_RESULT_FOUND,\n SEARCH_RESULTS_MULTIPLE_RESULTS_FOUND,\n PickerDimensions,\n PreviewConfig\n} from './config';\nimport { CustomEmoji } from './customEmojiConfig';\nimport { useMutableConfig } from './mutableConfig';\n\nexport enum MOUSE_EVENT_SOURCE {\n REACTIONS = 'reactions',\n PICKER = 'picker'\n}\n\nexport function useSearchPlaceHolderConfig(): string {\n const { searchPlaceHolder, searchPlaceholder } = usePickerConfig();\n return (\n [searchPlaceHolder, searchPlaceholder].find(\n p => p !== DEFAULT_SEARCH_PLACEHOLDER\n ) ?? DEFAULT_SEARCH_PLACEHOLDER\n );\n}\n\nexport function useDefaultSkinToneConfig(): SkinTones {\n const { defaultSkinTone } = usePickerConfig();\n return defaultSkinTone;\n}\n\nexport function useSkinTonesDisabledConfig(): boolean {\n const { skinTonesDisabled } = usePickerConfig();\n return skinTonesDisabled;\n}\n\nexport function useEmojiStyleConfig(): EmojiStyle {\n const { emojiStyle } = usePickerConfig();\n return emojiStyle;\n}\n\nexport function useAutoFocusSearchConfig(): boolean {\n const { autoFocusSearch } = usePickerConfig();\n return autoFocusSearch;\n}\n\nexport function useCategoriesConfig(): CategoriesConfig {\n const { categories } = usePickerConfig();\n return categories;\n}\n\nexport function useCustomEmojisConfig(): CustomEmoji[] {\n const { customEmojis } = usePickerConfig();\n return customEmojis;\n}\n\nexport function useOpenConfig(): boolean {\n const { open } = usePickerConfig();\n return open;\n}\n\nexport function useOnEmojiClickConfig(\n mouseEventSource: MOUSE_EVENT_SOURCE\n): (emoji: EmojiClickData, event: MouseEvent) => void {\n const { current } = useMutableConfig();\n\n const handler =\n (mouseEventSource === MOUSE_EVENT_SOURCE.REACTIONS\n ? current.onReactionClick\n : current.onEmojiClick) ?? current.onEmojiClick;\n\n return handler || (() => {});\n}\n\nexport function usePreviewConfig(): PreviewConfig {\n const { previewConfig } = usePickerConfig();\n return previewConfig;\n}\n\nexport function useThemeConfig(): Theme {\n const { theme } = usePickerConfig();\n\n return theme;\n}\n\nexport function useSuggestedEmojisModeConfig(): SuggestionMode {\n const { suggestedEmojisMode } = usePickerConfig();\n return suggestedEmojisMode;\n}\n\nexport function useLazyLoadEmojisConfig(): boolean {\n const { lazyLoadEmojis } = usePickerConfig();\n return lazyLoadEmojis;\n}\n\nexport function useClassNameConfig(): string {\n const { className } = usePickerConfig();\n return className;\n}\n\nexport function useStyleConfig(): React.CSSProperties {\n const { height, width, style } = usePickerConfig();\n return { height: getDimension(height), width: getDimension(width), ...style };\n}\n\nexport function useReactionsOpenConfig(): boolean {\n const { reactionsDefaultOpen } = usePickerConfig();\n return reactionsDefaultOpen;\n}\n\nexport function useEmojiVersionConfig(): string | null {\n const { emojiVersion } = usePickerConfig();\n return emojiVersion;\n}\n\nexport function useSearchDisabledConfig(): boolean {\n const { searchDisabled } = usePickerConfig();\n return searchDisabled;\n}\n\nexport function useSkinTonePickerLocationConfig(): SkinTonePickerLocation {\n const { skinTonePickerLocation } = usePickerConfig();\n return skinTonePickerLocation;\n}\n\nexport function useUnicodeToHide() {\n const { unicodeToHide } = usePickerConfig();\n return unicodeToHide;\n}\n\nexport function useReactionsConfig(): string[] {\n const { reactions } = usePickerConfig();\n return reactions;\n}\n\nexport function useGetEmojiUrlConfig(): (\n unified: string,\n style: EmojiStyle\n) => string {\n const { getEmojiUrl } = usePickerConfig();\n return getEmojiUrl;\n}\n\nfunction getDimension(dimensionConfig: PickerDimensions): PickerDimensions {\n return typeof dimensionConfig === 'number'\n ? `${dimensionConfig}px`\n : dimensionConfig;\n}\n\nexport function useSearchResultsConfig(searchResultsCount: number): string {\n const hasResults = searchResultsCount > 0;\n const isPlural = searchResultsCount > 1;\n\n if (hasResults) {\n return isPlural\n ? SEARCH_RESULTS_MULTIPLE_RESULTS_FOUND.replace(\n '%n',\n searchResultsCount.toString()\n )\n : SEARCH_RESULTS_ONE_RESULT_FOUND;\n }\n\n return SEARCH_RESULTS_NO_RESULTS_FOUND;\n}\n","import { useRef, useState } from 'react';\n\nexport function useDebouncedState<T>(\n initialValue: T,\n delay: number = 0\n): [T, (value: T) => Promise<T>] {\n const [state, setState] = useState<T>(initialValue);\n const timer = useRef<number | null>(null);\n\n function debouncedSetState(value: T) {\n return new Promise<T>(resolve => {\n if (timer.current) {\n clearTimeout(timer.current);\n }\n\n timer.current = window?.setTimeout(() => {\n setState(value);\n resolve(value);\n }, delay);\n });\n }\n\n return [state, debouncedSetState];\n}\n","import { useUnicodeToHide } from \"../config/useConfig\";\n\nexport function useIsUnicodeHidden() {\n const unicodeToHide = useUnicodeToHide();\n return (emojiUnified: string) => unicodeToHide.has(emojiUnified);\n }\n","import { useRef, useMemo } from 'react';\n\nimport { useEmojiVersionConfig } from '../config/useConfig';\nimport { DataEmoji } from '../dataUtils/DataTypes';\nimport {\n addedIn,\n allEmojis,\n emojiUnified,\n unifiedWithoutSkinTone\n} from '../dataUtils/emojiSelectors';\n\nimport { useIsUnicodeHidden } from './useHideEmojisByUniocode';\n\nexport function useDisallowedEmojis() {\n const DisallowedEmojisRef = useRef<Record<string, boolean>>({});\n const emojiVersionConfig = useEmojiVersionConfig();\n\n return useMemo(() => {\n const emojiVersion = parseFloat(`${emojiVersionConfig}`);\n\n if (!emojiVersionConfig || Number.isNaN(emojiVersion)) {\n return DisallowedEmojisRef.current;\n }\n\n return allEmojis.reduce((disallowedEmojis, emoji) => {\n if (addedInNewerVersion(emoji, emojiVersion)) {\n disallowedEmojis[emojiUnified(emoji)] = true;\n }\n\n return disallowedEmojis;\n }, DisallowedEmojisRef.current);\n }, [emojiVersionConfig]);\n}\n\nexport function useIsEmojiDisallowed() {\n const disallowedEmojis = useDisallowedEmojis();\n const isUnicodeHidden = useIsUnicodeHidden();\n\n return function isEmojiDisallowed(emoji: DataEmoji) {\n const unified = unifiedWithoutSkinTone(emojiUnified(emoji));\n\n return Boolean(disallowedEmojis[unified] || isUnicodeHidden(unified));\n };\n}\n\nfunction addedInNewerVersion(\n emoji: DataEmoji,\n supportedLevel: number\n): boolean {\n return addedIn(emoji) > supportedLevel;\n}\n","import { useEffect } from 'react';\nimport * as React from 'react';\n\nexport function useMarkInitialLoad(\n dispatch: React.Dispatch<React.SetStateAction<boolean>>\n) {\n useEffect(() => {\n dispatch(true);\n }, [dispatch]);\n}\n","import * as React from 'react';\nimport { useState } from 'react';\n\nimport {\n useDefaultSkinToneConfig,\n useReactionsOpenConfig\n} from '../../config/useConfig';\nimport { DataEmoji } from '../../dataUtils/DataTypes';\nimport { alphaNumericEmojiIndex } from '../../dataUtils/alphaNumericEmojiIndex';\nimport { useDebouncedState } from '../../hooks/useDebouncedState';\nimport { useDisallowedEmojis } from '../../hooks/useDisallowedEmojis';\nimport { FilterDict } from '../../hooks/useFilter';\nimport { useMarkInitialLoad } from '../../hooks/useInitialLoad';\nimport { SkinTones } from '../../types/exposedTypes';\n\nexport function PickerContextProvider({ children }: Props) {\n const disallowedEmojis = useDisallowedEmojis();\n const defaultSkinTone = useDefaultSkinToneConfig();\n const reactionsDefaultOpen = useReactionsOpenConfig();\n\n // Initialize the filter with the inititial dictionary\n const filterRef = React.useRef<FilterState>(alphaNumericEmojiIndex);\n const disallowClickRef = React.useRef<boolean>(false);\n const disallowMouseRef = React.useRef<boolean>(false);\n const disallowedEmojisRef = React.useRef<Record<string, boolean>>(\n disallowedEmojis\n );\n\n const suggestedUpdateState = useDebouncedState(Date.now(), 200);\n const searchTerm = useDebouncedState('', 100);\n const skinToneFanOpenState = useState<boolean>(false);\n const activeSkinTone = useState<SkinTones>(defaultSkinTone);\n const activeCategoryState = useState<ActiveCategoryState>(null);\n const emojisThatFailedToLoadState = useState<Set<string>>(new Set());\n const emojiVariationPickerState = useState<DataEmoji | null>(null);\n const reactionsModeState = useState(reactionsDefaultOpen);\n const [isPastInitialLoad, setIsPastInitialLoad] = useState(false);\n\n useMarkInitialLoad(setIsPastInitialLoad);\n\n return (\n <PickerContext.Provider\n value={{\n activeCategoryState,\n activeSkinTone,\n disallowClickRef,\n disallowMouseRef,\n disallowedEmojisRef,\n emojiVariationPickerState,\n emojisThatFailedToLoadState,\n filterRef,\n isPastInitialLoad,\n searchTerm,\n skinToneFanOpenState,\n suggestedUpdateState,\n reactionsModeState\n }}\n >\n {children}\n </PickerContext.Provider>\n );\n}\n\ntype ReactState<T> = [T, React.Dispatch<React.SetStateAction<T>>];\n\nconst PickerContext = React.createContext<{\n searchTerm: [string, (term: string) => Promise<string>];\n suggestedUpdateState: [number, (term: number) => void];\n activeCategoryState: ReactState<ActiveCategoryState>;\n activeSkinTone: ReactState<SkinTones>;\n emojisThatFailedToLoadState: ReactState<Set<string>>;\n isPastInitialLoad: boolean;\n emojiVariationPickerState: ReactState<DataEmoji | null>;\n skinToneFanOpenState: ReactState<boolean>;\n filterRef: React.MutableRefObject<FilterState>;\n disallowClickRef: React.MutableRefObject<boolean>;\n disallowMouseRef: React.MutableRefObject<boolean>;\n disallowedEmojisRef: React.MutableRefObject<Record<string, boolean>>;\n reactionsModeState: ReactState<boolean>;\n}>({\n activeCategoryState: [null, () => {}],\n activeSkinTone: [SkinTones.NEUTRAL, () => {}],\n disallowClickRef: { current: false },\n disallowMouseRef: { current: false },\n disallowedEmojisRef: { current: {} },\n emojiVariationPickerState: [null, () => {}],\n emojisThatFailedToLoadState: [new Set(), () => {}],\n filterRef: { current: {} },\n isPastInitialLoad: true,\n searchTerm: ['', () => new Promise<string>(() => undefined)],\n skinToneFanOpenState: [false, () => {}],\n suggestedUpdateState: [Date.now(), () => {}],\n reactionsModeState: [false, () => {}]\n});\n\ntype Props = Readonly<{\n children: React.ReactNode;\n}>;\n\nexport function useFilterRef() {\n const { filterRef } = React.useContext(PickerContext);\n return filterRef;\n}\n\nexport function useDisallowClickRef() {\n const { disallowClickRef } = React.useContext(PickerContext);\n return disallowClickRef;\n}\n\nexport function useDisallowMouseRef() {\n const { disallowMouseRef } = React.useContext(PickerContext);\n return disallowMouseRef;\n}\n\nexport function useReactionsModeState() {\n const { reactionsModeState } = React.useContext(PickerContext);\n return reactionsModeState;\n}\n\nexport function useSearchTermState() {\n const { searchTerm } = React.useContext(PickerContext);\n return searchTerm;\n}\n\nexport function useActiveSkinToneState(): [\n SkinTones,\n (skinTone: SkinTones) => void\n] {\n const { activeSkinTone } = React.useContext(PickerContext);\n return activeSkinTone;\n}\n\nexport function useEmojisThatFailedToLoadState() {\n const { emojisThatFailedToLoadState } = React.useContext(PickerContext);\n return emojisThatFailedToLoadState;\n}\n\nexport function useIsPastInitialLoad(): boolean {\n const { isPastInitialLoad } = React.useContext(PickerContext);\n return isPastInitialLoad;\n}\n\nexport function useEmojiVariationPickerState() {\n const { emojiVariationPickerState } = React.useContext(PickerContext);\n return emojiVariationPickerState;\n}\n\nexport function useSkinToneFanOpenState() {\n const { skinToneFanOpenState } = React.useContext(PickerContext);\n return skinToneFanOpenState;\n}\n\nexport function useDisallowedEmojisRef() {\n const { disallowedEmojisRef } = React.useContext(PickerContext);\n return disallowedEmojisRef;\n}\n\nexport function useUpdateSuggested(): [number, () => void] {\n const { suggestedUpdateState } = React.useContext(PickerContext);\n\n const [suggestedUpdated, setsuggestedUpdate] = suggestedUpdateState;\n return [\n suggestedUpdated,\n function updateSuggested() {\n setsuggestedUpdate(Date.now());\n }\n ];\n}\n\nexport type FilterState = Record<string, FilterDict>;\n\ntype ActiveCategoryState = null | string;\n","import { useSearchTermState } from '../components/context/PickerContext';\n\nexport default function useIsSearchMode(): boolean {\n const [searchTerm] = useSearchTermState();\n\n return !!searchTerm;\n}\n","import { NullableElement } from './selectors';\n\nexport function focusElement(element: NullableElement) {\n if (!element) {\n return;\n }\n\n requestAnimationFrame(() => {\n element.focus();\n });\n}\n\nexport function focusPrevElementSibling(element: NullableElement) {\n if (!element) return;\n\n const prev = element.previousElementSibling as HTMLElement;\n\n focusElement(prev);\n}\n\nexport function focusNextElementSibling(element: NullableElement) {\n if (!element) return;\n\n const next = element.nextElementSibling as HTMLElement;\n\n focusElement(next);\n}\n\nexport function focusFirstElementChild(element: NullableElement) {\n if (!element) return;\n\n const first = element.firstElementChild as HTMLElement;\n\n focusElement(first);\n}\n","import { NullableElement } from './selectors';\n\nexport function getActiveElement() {\n return document.activeElement as NullableElement;\n}\n","import * as React from 'react';\n\nimport { focusElement } from '../../DomUtils/focusElement';\nimport { NullableElement } from '../../DomUtils/selectors';\n\nexport function ElementRefContextProvider({\n children\n}: {\n children: React.ReactNode;\n}) {\n const PickerMainRef = React.useRef<HTMLElement>(null);\n const AnchoredEmojiRef = React.useRef<HTMLElement>(null);\n const BodyRef = React.useRef<HTMLDivElement>(null);\n const SearchInputRef = React.useRef<HTMLInputElement>(null);\n const SkinTonePickerRef = React.useRef<HTMLDivElement>(null);\n const CategoryNavigationRef = React.useRef<HTMLDivElement>(null);\n const VariationPickerRef = React.useRef<HTMLDivElement>(null);\n const ReactionsRef = React.useRef<HTMLUListElement>(null);\n\n return (\n <ElementRefContext.Provider\n value={{\n AnchoredEmojiRef,\n BodyRef,\n CategoryNavigationRef,\n PickerMainRef,\n SearchInputRef,\n SkinTonePickerRef,\n VariationPickerRef,\n ReactionsRef\n }}\n >\n {children}\n </ElementRefContext.Provider>\n );\n}\n\nexport type ElementRef<\n E extends HTMLElement = HTMLElement\n> = React.MutableRefObject<E | null>;\n\ntype ElementRefs = {\n PickerMainRef: ElementRef;\n AnchoredEmojiRef: ElementRef;\n SkinTonePickerRef: ElementRef<HTMLDivElement>;\n SearchInputRef: ElementRef<HTMLInputElement>;\n BodyRef: ElementRef<HTMLDivElement>;\n CategoryNavigationRef: ElementRef<HTMLDivElement>;\n VariationPickerRef: ElementRef<HTMLDivElement>;\n ReactionsRef: ElementRef<HTMLUListElement>;\n};\n\nconst ElementRefContext = React.createContext<ElementRefs>({\n AnchoredEmojiRef: React.createRef(),\n BodyRef: React.createRef(),\n CategoryNavigationRef: React.createRef(),\n PickerMainRef: React.createRef(),\n SearchInputRef: React.createRef(),\n SkinTonePickerRef: React.createRef(),\n VariationPickerRef: React.createRef(),\n ReactionsRef: React.createRef()\n});\n\nfunction useElementRef() {\n return React.useContext(ElementRefContext);\n}\n\nexport function usePickerMainRef() {\n return useElementRef()['PickerMainRef'];\n}\n\nexport function useAnchoredEmojiRef() {\n return useElementRef()['AnchoredEmojiRef'];\n}\n\nexport function useSetAnchoredEmojiRef(): (target: NullableElement) => void {\n const AnchoredEmojiRef = useAnchoredEmojiRef();\n return (target: NullableElement) => {\n if (target === null && AnchoredEmojiRef.current !== null) {\n focusElement(AnchoredEmojiRef.current);\n }\n\n AnchoredEmojiRef.current = target;\n };\n}\n\nexport function useBodyRef() {\n return useElementRef()['BodyRef'];\n}\n\nexport function useReactionsRef() {\n return useElementRef()['ReactionsRef'];\n}\n\nexport function useSearchInputRef() {\n return useElementRef()['SearchInputRef'];\n}\n\nexport function useSkinTonePickerRef() {\n return useElementRef()['SkinTonePickerRef'];\n}\n\nexport function useCategoryNavigationRef() {\n return useElementRef()['CategoryNavigationRef'];\n}\n\nexport function useVariationPickerRef() {\n return useElementRef()['VariationPickerRef'];\n}\n","import { useCallback } from 'react';\n\nimport { useBodyRef } from '../components/context/ElementRefContext';\n\nimport { asSelectors, ClassNames } from './classNames';\nimport {\n categoryLabelHeight,\n closestCategory,\n closestScrollBody,\n emojiDistanceFromScrollTop,\n isEmojiBehindLabel,\n NullableElement,\n queryScrollBody\n} from './selectors';\n\nexport function scrollTo(root: NullableElement, top: number = 0) {\n const $eprBody = queryScrollBody(root);\n\n if (!$eprBody) {\n return;\n }\n\n requestAnimationFrame(() => {\n $eprBody.scrollTop = top + 1;\n });\n}\n\nexport function scrollBy(root: NullableElement, by: number): void {\n const $eprBody = queryScrollBody(root);\n\n if (!$eprBody) {\n return;\n }\n\n requestAnimationFrame(() => {\n $eprBody.scrollTop = $eprBody.scrollTop + by;\n });\n}\n\nexport function useScrollTo() {\n const BodyRef = useBodyRef();\n\n return useCallback(\n (top: number) => {\n requestAnimationFrame(() => {\n if (BodyRef.current) {\n BodyRef.current.scrollTop = top;\n }\n });\n },\n [BodyRef]\n );\n}\n\nexport function scrollEmojiAboveLabel(emoji: NullableElement) {\n if (!emoji || !isEmojiBehindLabel(emoji)) {\n return;\n }\n\n if (emoji.closest(asSelectors(ClassNames.variationPicker))) {\n return;\n }\n\n const scrollBody = closestScrollBody(emoji);\n const by = emojiDistanceFromScrollTop(emoji);\n scrollBy(scrollBody, -(categoryLabelHeight(closestCategory(emoji)) - by));\n}\n","import {\n elementCountInRow,\n elementIndexInRow,\n getElementInNextRow,\n getElementInPrevRow,\n getElementInRow,\n hasNextRow,\n rowNumber\n} from './elementPositionInRow';\nimport { focusElement } from './focusElement';\nimport { scrollEmojiAboveLabel } from './scrollTo';\nimport {\n allVisibleEmojis,\n closestCategory,\n firstVisibleEmoji,\n lastVisibleEmoji,\n nextCategory,\n nextVisibleEmoji,\n NullableElement,\n prevCategory,\n prevVisibleEmoji,\n closestCategoryContent\n} from './selectors';\n\nexport function focusFirstVisibleEmoji(parent: NullableElement) {\n const emoji = firstVisibleEmoji(parent);\n focusElement(emoji);\n scrollEmojiAboveLabel(emoji);\n}\n\nexport function focusAndClickFirstVisibleEmoji(parent: NullableElement) {\n const firstEmoji = firstVisibleEmoji(parent);\n\n focusElement(firstEmoji);\n firstEmoji?.click();\n}\n\nexport function focusLastVisibleEmoji(parent: NullableElement) {\n focusElement(lastVisibleEmoji(parent));\n}\n\nexport function focusNextVisibleEmoji(element: NullableElement) {\n if (!element) {\n return;\n }\n\n const next = nextVisibleEmoji(element);\n\n if (!next) {\n return focusFirstVisibleEmoji(nextCategory(element));\n }\n\n focusElement(next);\n scrollEmojiAboveLabel(next);\n}\n\nexport function focusPrevVisibleEmoji(element: NullableElement) {\n if (!element) {\n return;\n }\n\n const prev = prevVisibleEmoji(element);\n\n if (!prev) {\n return focusLastVisibleEmoji(prevCategory(element));\n }\n\n focusElement(prev);\n scrollEmojiAboveLabel(prev);\n}\n\nexport function focusVisibleEmojiOneRowUp(\n element: NullableElement,\n exitUp: () => void\n) {\n if (!element) {\n return;\n }\n\n const prev = visibleEmojiOneRowUp(element);\n\n if (!prev) {\n return exitUp();\n }\n\n focusElement(prev);\n scrollEmojiAboveLabel(prev);\n}\n\nexport function focusVisibleEmojiOneRowDown(element: NullableElement) {\n if (!element) {\n return;\n }\n\n const next = visibleEmojiOneRowDown(element);\n\n return focusElement(next);\n}\n\nfunction visibleEmojiOneRowUp(element: HTMLElement) {\n if (!element) {\n return null;\n }\n\n const categoryContent = closestCategoryContent(element);\n const category = closestCategory(categoryContent);\n const indexInRow = elementIndexInRow(categoryContent, element);\n const row = rowNumber(categoryContent, element);\n const countInRow = elementCountInRow(categoryContent, element);\n\n if (row === 0) {\n const prevVisibleCategory = prevCategory(category);\n\n if (!prevVisibleCategory) {\n return null;\n }\n\n return getElementInRow(\n allVisibleEmojis(prevVisibleCategory),\n -1, // last row\n countInRow,\n indexInRow\n );\n }\n\n return getElementInPrevRow(\n allVisibleEmojis(categoryContent),\n row,\n countInRow,\n indexInRow\n );\n}\n\nfunction visibleEmojiOneRowDown(element: HTMLElement) {\n if (!element) {\n return null;\n }\n\n const categoryContent = closestCategoryContent(element);\n const category = closestCategory(categoryContent);\n const indexInRow = elementIndexInRow(categoryContent, element);\n const row = rowNumber(categoryContent, element);\n const countInRow = elementCountInRow(categoryContent, element);\n if (!hasNextRow(categoryContent, element)) {\n const nextVisibleCategory = nextCategory(category);\n\n if (!nextVisibleCategory) {\n return null;\n }\n\n return getElementInRow(\n allVisibleEmojis(nextVisibleCategory),\n 0,\n countInRow,\n indexInRow\n );\n }\n\n const itemInNextRow = getElementInNextRow(\n allVisibleEmojis(categoryContent),\n row,\n countInRow,\n indexInRow\n );\n\n return itemInNextRow;\n}\n","import { useCallback } from 'react';\n\nimport {\n useEmojiVariationPickerState,\n useSkinToneFanOpenState\n} from '../components/context/PickerContext';\n\nexport function useCloseAllOpenToggles() {\n const [variationPicker, setVariationPicker] = useEmojiVariationPickerState();\n const [skinToneFanOpen, setSkinToneFanOpen] = useSkinToneFanOpenState();\n\n const closeAllOpenToggles = useCallback(() => {\n if (variationPicker) {\n setVariationPicker(null);\n }\n\n if (skinToneFanOpen) {\n setSkinToneFanOpen(false);\n }\n }, [\n variationPicker,\n skinToneFanOpen,\n setVariationPicker,\n setSkinToneFanOpen\n ]);\n\n return closeAllOpenToggles;\n}\n\nexport function useHasOpenToggles() {\n const [variationPicker] = useEmojiVariationPickerState();\n const [skinToneFanOpen] = useSkinToneFanOpenState();\n\n return function hasOpenToggles() {\n return !!variationPicker || skinToneFanOpen;\n };\n}\n","import { useEffect } from 'react';\n\nimport { useBodyRef } from '../components/context/ElementRefContext';\nimport { useDisallowMouseRef } from '../components/context/PickerContext';\n\nexport function useDisallowMouseMove() {\n const DisallowMouseRef = useDisallowMouseRef();\n return function disallowMouseMove() {\n DisallowMouseRef.current = true;\n };\n}\n\nexport function useAllowMouseMove() {\n const DisallowMouseRef = useDisallowMouseRef();\n return function allowMouseMove() {\n DisallowMouseRef.current = false;\n };\n}\n\nexport function useIsMouseDisallowed() {\n const DisallowMouseRef = useDisallowMouseRef();\n return function isMouseDisallowed() {\n return DisallowMouseRef.current;\n };\n}\n\nexport function useOnMouseMove() {\n const BodyRef = useBodyRef();\n const allowMouseMove = useAllowMouseMove();\n const isMouseDisallowed = useIsMouseDisallowed();\n\n useEffect(() => {\n const bodyRef = BodyRef.current;\n bodyRef?.addEventListener('mousemove', onMouseMove, {\n passive: true\n });\n\n function onMouseMove() {\n if (isMouseDisallowed()) {\n allowMouseMove();\n }\n }\n return () => {\n bodyRef?.removeEventListener('mousemove', onMouseMove);\n };\n }, [BodyRef, allowMouseMove, isMouseDisallowed]);\n}\n","import { useCallback } from 'react';\n\nimport { focusElement, focusFirstElementChild } from '../DomUtils/focusElement';\nimport {\n useCategoryNavigationRef,\n useSearchInputRef,\n useSkinTonePickerRef\n} from '../components/context/ElementRefContext';\n\nexport function useFocusSearchInput() {\n const SearchInputRef = useSearchInputRef();\n\n return useCallback(() => {\n focusElement(SearchInputRef.current);\n }, [SearchInputRef]);\n}\n\nexport function useFocusSkinTonePicker() {\n const SkinTonePickerRef = useSkinTonePickerRef();\n\n return useCallback(() => {\n if (!SkinTonePickerRef.current) {\n return;\n }\n\n focusFirstElementChild(SkinTonePickerRef.current);\n }, [SkinTonePickerRef]);\n}\n\nexport function useFocusCategoryNavigation() {\n const CategoryNavigationRef = useCategoryNavigationRef();\n\n return useCallback(() => {\n if (!CategoryNavigationRef.current) {\n return;\n }\n\n focusFirstElementChild(CategoryNavigationRef.current);\n }, [CategoryNavigationRef]);\n}\n","import { scrollTo } from '../DomUtils/scrollTo';\nimport {\n usePickerMainRef,\n useSearchInputRef\n} from '../components/context/ElementRefContext';\nimport {\n FilterState,\n useFilterRef,\n useSearchTermState\n} from '../components/context/PickerContext';\nimport { useSearchResultsConfig } from '../config/useConfig';\nimport { DataEmoji } from '../dataUtils/DataTypes';\nimport { emojiNames } from '../dataUtils/emojiSelectors';\n\nimport { useFocusSearchInput } from './useFocus';\n\nfunction useSetFilterRef() {\n const filterRef = useFilterRef();\n\n return function setFilter(\n setter: FilterState | ((current: FilterState) => FilterState)\n ): void {\n if (typeof setter === 'function') {\n return setFilter(setter(filterRef.current));\n }\n\n filterRef.current = setter;\n };\n}\n\nexport function useClearSearch() {\n const applySearch = useApplySearch();\n const SearchInputRef = useSearchInputRef();\n const focusSearchInput = useFocusSearchInput();\n\n return function clearSearch() {\n if (SearchInputRef.current) {\n SearchInputRef.current.value = '';\n }\n\n applySearch('');\n focusSearchInput();\n };\n}\n\nexport function useAppendSearch() {\n const SearchInputRef = useSearchInputRef();\n const applySearch = useApplySearch();\n\n return function appendSearch(str: string) {\n if (SearchInputRef.current) {\n SearchInputRef.current.value = `${SearchInputRef.current.value}${str}`;\n applySearch(getNormalizedSearchTerm(SearchInputRef.current.value));\n } else {\n applySearch(getNormalizedSearchTerm(str));\n }\n };\n}\n\nexport function useFilter() {\n const SearchInputRef = useSearchInputRef();\n const filterRef = useFilterRef();\n const setFilterRef = useSetFilterRef();\n const applySearch = useApplySearch();\n\n const [searchTerm] = useSearchTermState();\n const statusSearchResults = getStatusSearchResults(\n filterRef.current,\n searchTerm\n );\n\n return {\n onChange,\n searchTerm,\n SearchInputRef,\n statusSearchResults\n };\n\n function onChange(inputValue: string) {\n const filter = filterRef.current;\n\n const nextValue = inputValue.toLowerCase();\n\n if (filter?.[nextValue] || nextValue.length <= 1) {\n return applySearch(nextValue);\n }\n\n const longestMatch = findLongestMatch(nextValue, filter);\n\n if (!longestMatch) {\n // Can we even get here?\n // If so, we need to search among all emojis\n return applySearch(nextValue);\n }\n\n setFilterRef(current =>\n Object.assign(current, {\n [nextValue]: filterEmojiObjectByKeyword(longestMatch, nextValue)\n })\n );\n applySearch(nextValue);\n }\n}\n\nfunction useApplySearch() {\n const [, setSearchTerm] = useSearchTermState();\n const PickerMainRef = usePickerMainRef();\n\n return function applySearch(searchTerm: string) {\n requestAnimationFrame(() => {\n setSearchTerm(searchTerm ? searchTerm?.toLowerCase() : searchTerm).then(\n () => {\n scrollTo(PickerMainRef.current, 0);\n }\n );\n });\n };\n}\n\nfunction filterEmojiObjectByKeyword(\n emojis: FilterDict,\n keyword: string\n): FilterDict {\n const filtered: FilterDict = {};\n\n for (const unified in emojis) {\n const emoji = emojis[unified];\n\n if (hasMatch(emoji, keyword)) {\n filtered[unified] = emoji;\n }\n }\n\n return filtered;\n}\n\nfunction hasMatch(emoji: DataEmoji, keyword: string): boolean {\n return emojiNames(emoji).some(name => name.includes(keyword));\n}\n\nexport function useIsEmojiFiltered(): (unified: string) => boolean {\n const { current: filter } = useFilterRef();\n const [searchTerm] = useSearchTermState();\n\n return unified => isEmojiFilteredBySearchTerm(unified, filter, searchTerm);\n}\n\nfunction isEmojiFilteredBySearchTerm(\n unified: string,\n filter: FilterState,\n searchTerm: string\n): boolean {\n if (!filter || !searchTerm) {\n return false;\n }\n\n return !filter[searchTerm]?.[unified];\n}\n\nexport type FilterDict = Record<string, DataEmoji>;\n\nfunction findLongestMatch(\n keyword: string,\n dict: Record<string, FilterDict> | null\n): FilterDict | null {\n if (!dict) {\n return null;\n }\n\n if (dict[keyword]) {\n return dict[keyword];\n }\n\n const longestMatchingKey = Object.keys(dict)\n .sort((a, b) => b.length - a.length)\n .find(key => keyword.includes(key));\n\n if (longestMatchingKey) {\n return dict[longestMatchingKey];\n }\n\n return null;\n}\n\nexport function getNormalizedSearchTerm(str: string): string {\n if (!str || typeof str !== 'string') {\n return '';\n }\n\n return str.trim().toLowerCase();\n}\n\nfunction getStatusSearchResults(\n filterState: FilterState,\n searchTerm: string\n): string {\n if (!filterState?.[searchTerm]) return '';\n\n const searchResultsCount =\n Object.entries(filterState?.[searchTerm])?.length || 0;\n // eslint-disable-next-line react-hooks/rules-of-hooks\n return useSearchResultsConfig(searchResultsCount);\n}\n","import { emojiFromElement, NullableElement } from '../DomUtils/selectors';\nimport { useSetAnchoredEmojiRef } from '../components/context/ElementRefContext';\nimport { useEmojiVariationPickerState } from '../components/context/PickerContext';\n\nexport default function useSetVariationPicker() {\n const setAnchoredEmojiRef = useSetAnchoredEmojiRef();\n const [, setEmojiVariationPicker] = useEmojiVariationPickerState();\n\n return function setVariationPicker(element: NullableElement) {\n const [emoji] = emojiFromElement(element);\n\n if (emoji) {\n setAnchoredEmojiRef(element);\n setEmojiVariationPicker(emoji);\n }\n };\n}\n","import { useSkinTonePickerLocationConfig } from '../config/useConfig';\nimport { SkinTonePickerLocation } from '../types/exposedTypes';\n\nexport function useShouldShowSkinTonePicker() {\n const skinTonePickerLocationConfig = useSkinTonePickerLocationConfig();\n\n return function shouldShowSkinTonePicker(location: SkinTonePickerLocation) {\n return skinTonePickerLocationConfig === location;\n };\n}\n\nexport function useIsSkinToneInSearch() {\n const skinTonePickerLocationConfig = useSkinTonePickerLocationConfig();\n\n return skinTonePickerLocationConfig === SkinTonePickerLocation.SEARCH;\n}\n\nexport function useIsSkinToneInPreview() {\n const skinTonePickerLocationConfig = useSkinTonePickerLocationConfig();\n\n return skinTonePickerLocationConfig === SkinTonePickerLocation.PREVIEW;\n}\n","import { useCallback, useEffect, useMemo } from 'react';\n\nimport { hasNextElementSibling } from '../DomUtils/elementPositionInRow';\nimport {\n focusNextElementSibling,\n focusPrevElementSibling\n} from '../DomUtils/focusElement';\nimport { getActiveElement } from '../DomUtils/getActiveElement';\nimport {\n focusAndClickFirstVisibleEmoji,\n focusFirstVisibleEmoji,\n focusNextVisibleEmoji,\n focusPrevVisibleEmoji,\n focusVisibleEmojiOneRowDown,\n focusVisibleEmojiOneRowUp\n} from '../DomUtils/keyboardNavigation';\nimport { useScrollTo } from '../DomUtils/scrollTo';\nimport { buttonFromTarget } from '../DomUtils/selectors';\nimport {\n useBodyRef,\n useCategoryNavigationRef,\n usePickerMainRef,\n useSearchInputRef,\n useSkinTonePickerRef\n} from '../components/context/ElementRefContext';\nimport { useSkinToneFanOpenState } from '../components/context/PickerContext';\nimport { useSearchDisabledConfig } from '../config/useConfig';\n\nimport {\n useCloseAllOpenToggles,\n useHasOpenToggles\n} from './useCloseAllOpenToggles';\nimport { useDisallowMouseMove } from './useDisallowMouseMove';\nimport { useAppendSearch, useClearSearch } from './useFilter';\nimport {\n useFocusCategoryNavigation,\n useFocusSearchInput,\n useFocusSkinTonePicker\n} from './useFocus';\nimport useIsSearchMode from './useIsSearchMode';\nimport useSetVariationPicker from './useSetVariationPicker';\nimport {\n useIsSkinToneInPreview,\n useIsSkinToneInSearch\n} from './useShouldShowSkinTonePicker';\n\nenum KeyboardEvents {\n ArrowDown = 'ArrowDown',\n ArrowUp = 'ArrowUp',\n ArrowLeft = 'ArrowLeft',\n ArrowRight = 'ArrowRight',\n Escape = 'Escape',\n Enter = 'Enter',\n Space = ' '\n}\n\nexport function useKeyboardNavigation() {\n usePickerMainKeyboardEvents();\n useSearchInputKeyboardEvents();\n useSkinTonePickerKeyboardEvents();\n useCategoryNavigationKeyboardEvents();\n useBodyKeyboardEvents();\n}\n\nfunction usePickerMainKeyboardEvents() {\n const PickerMainRef = usePickerMainRef();\n const clearSearch = useClearSearch();\n const scrollTo = useScrollTo();\n const SearchInputRef = useSearchInputRef();\n const focusSearchInput = useFocusSearchInput();\n const hasOpenToggles = useHasOpenToggles();\n const disallowMouseMove = useDisallowMouseMove();\n\n const closeAllOpenToggles = useCloseAllOpenToggles();\n\n const onKeyDown = useMemo(\n () =>\n function onKeyDown(event: KeyboardEvent) {\n const { key } = event;\n\n disallowMouseMove();\n switch (key) {\n // eslint-disable-next-line no-fallthrough\n case KeyboardEvents.Escape:\n event.preventDefault();\n if (hasOpenToggles()) {\n closeAllOpenToggles();\n return;\n }\n clearSearch();\n scrollTo(0);\n focusSearchInput();\n break;\n }\n },\n [\n scrollTo,\n clearSearch,\n closeAllOpenToggles,\n focusSearchInput,\n hasOpenToggles,\n disallowMouseMove\n ]\n );\n\n useEffect(() => {\n const current = PickerMainRef.current;\n\n if (!current) {\n return;\n }\n\n current.addEventListener('keydown', onKeyDown);\n\n return () => {\n current.removeEventListener('keydown', onKeyDown);\n };\n }, [PickerMainRef, SearchInputRef, scrollTo, onKeyDown]);\n}\n\nfunction useSearchInputKeyboardEvents() {\n const focusSkinTonePicker = useFocusSkinTonePicker();\n const PickerMainRef = usePickerMainRef();\n const BodyRef = useBodyRef();\n const SearchInputRef = useSearchInputRef();\n const [, setSkinToneFanOpenState] = useSkinToneFanOpenState();\n const goDownFromSearchInput = useGoDownFromSearchInput();\n const isSkinToneInSearch = useIsSkinToneInSearch();\n\n const onKeyDown = useMemo(\n () =>\n function onKeyDown(event: KeyboardEvent) {\n const { key } = event;\n\n switch (key) {\n case KeyboardEvents.ArrowRight:\n if (!isSkinToneInSearch) {\n return;\n }\n event.preventDefault();\n setSkinToneFanOpenState(true);\n focusSkinTonePicker();\n break;\n case KeyboardEvents.ArrowDown:\n event.preventDefault();\n goDownFromSearchInput();\n break;\n case KeyboardEvents.Enter:\n event.preventDefault();\n focusAndClickFirstVisibleEmoji(BodyRef.current);\n break;\n }\n },\n [\n focusSkinTonePicker,\n goDownFromSearchInput,\n setSkinToneFanOpenState,\n BodyRef,\n isSkinToneInSearch\n ]\n );\n\n useEffect(() => {\n const current = SearchInputRef.current;\n\n if (!current) {\n return;\n }\n\n current.addEventListener('keydown', onKeyDown);\n\n return () => {\n current.removeEventListener('keydown', onKeyDown);\n };\n }, [PickerMainRef, SearchInputRef, onKeyDown]);\n}\n\nfunction useSkinTonePickerKeyboardEvents() {\n const SkinTonePickerRef = useSkinTonePickerRef();\n const focusSearchInput = useFocusSearchInput();\n const SearchInputRef = useSearchInputRef();\n const goDownFromSearchInput = useGoDownFromSearchInput();\n const [isOpen, setIsOpen] = useSkinToneFanOpenState();\n const isSkinToneInPreview = useIsSkinToneInPreview();\n const isSkinToneInSearch = useIsSkinToneInSearch();\n const onType = useOnType();\n\n const onKeyDown = useMemo(\n () =>\n // eslint-disable-next-line complexity\n function onKeyDown(event: KeyboardEvent) {\n const { key } = event;\n\n if (isSkinToneInSearch) {\n switch (key) {\n case KeyboardEvents.ArrowLeft:\n event.preventDefault();\n if (!isOpen) {\n return focusSearchInput();\n }\n focusNextSkinTone(focusSearchInput);\n break;\n case KeyboardEvents.ArrowRight:\n event.preventDefault();\n if (!isOpen) {\n return focusSearchInput();\n }\n focusPrevSkinTone();\n break;\n case KeyboardEvents.ArrowDown:\n event.preventDefault();\n if (isOpen) {\n setIsOpen(false);\n }\n goDownFromSearchInput();\n break;\n default:\n onType(event);\n break;\n }\n }\n\n if (isSkinToneInPreview) {\n switch (key) {\n case KeyboardEvents.ArrowUp:\n event.preventDefault();\n if (!isOpen) {\n return focusSearchInput();\n }\n focusNextSkinTone(focusSearchInput);\n break;\n case KeyboardEvents.ArrowDown:\n event.preventDefault();\n if (!isOpen) {\n return focusSearchInput();\n }\n focusPrevSkinTone();\n break;\n default:\n onType(event);\n break;\n }\n }\n },\n [\n isOpen,\n focusSearchInput,\n setIsOpen,\n goDownFromSearchInput,\n onType,\n isSkinToneInPreview,\n isSkinToneInSearch\n ]\n );\n\n useEffect(() => {\n const current = SkinTonePickerRef.current;\n\n if (!current) {\n return;\n }\n\n current.addEventListener('keydown', onKeyDown);\n\n return () => {\n current.removeEventListener('keydown', onKeyDown);\n };\n }, [SkinTonePickerRef, SearchInputRef, isOpen, onKeyDown]);\n}\n\nfunction useCategoryNavigationKeyboardEvents() {\n const focusSearchInput = useFocusSearchInput();\n const CategoryNavigationRef = useCategoryNavigationRef();\n const BodyRef = useBodyRef();\n const onType = useOnType();\n\n const onKeyDown = useMemo(\n () =>\n function onKeyDown(event: KeyboardEvent) {\n const { key } = event;\n\n switch (key) {\n case KeyboardEvents.ArrowUp:\n event.preventDefault();\n focusSearchInput();\n break;\n case KeyboardEvents.ArrowRight:\n event.preventDefault();\n focusNextElementSibling(getActiveElement());\n break;\n case KeyboardEvents.ArrowLeft:\n event.preventDefault();\n focusPrevElementSibling(getActiveElement());\n break;\n case KeyboardEvents.ArrowDown:\n event.preventDefault();\n focusFirstVisibleEmoji(BodyRef.current);\n break;\n default:\n onType(event);\n break;\n }\n },\n [BodyRef, focusSearchInput, onType]\n );\n\n useEffect(() => {\n const current = CategoryNavigationRef.current;\n\n if (!current) {\n return;\n }\n\n current.addEventListener('keydown', onKeyDown);\n\n return () => {\n current.removeEventListener('keydown', onKeyDown);\n };\n }, [CategoryNavigationRef, BodyRef, onKeyDown]);\n}\n\nfunction useBodyKeyboardEvents() {\n const BodyRef = useBodyRef();\n const goUpFromBody = useGoUpFromBody();\n const setVariationPicker = useSetVariationPicker();\n const hasOpenToggles = useHasOpenToggles();\n const closeAllOpenToggles = useCloseAllOpenToggles();\n\n const onType = useOnType();\n\n const onKeyDown = useMemo(\n () =>\n // eslint-disable-next-line complexity\n function onKeyDown(event: KeyboardEvent) {\n const { key } = event;\n\n const activeElement = buttonFromTarget(getActiveElement());\n\n switch (key) {\n case KeyboardEvents.ArrowRight:\n event.preventDefault();\n focusNextVisibleEmoji(activeElement);\n break;\n case KeyboardEvents.ArrowLeft:\n event.preventDefault();\n focusPrevVisibleEmoji(activeElement);\n break;\n case KeyboardEvents.ArrowDown:\n event.preventDefault();\n if (hasOpenToggles()) {\n closeAllOpenToggles();\n break;\n }\n focusVisibleEmojiOneRowDown(activeElement);\n break;\n case KeyboardEvents.ArrowUp:\n event.preventDefault();\n if (hasOpenToggles()) {\n closeAllOpenToggles();\n break;\n }\n focusVisibleEmojiOneRowUp(activeElement, goUpFromBody);\n break;\n case KeyboardEvents.Space:\n event.preventDefault();\n setVariationPicker(event.target as HTMLElement);\n break;\n default:\n onType(event);\n break;\n }\n },\n [\n goUpFromBody,\n onType,\n setVariationPicker,\n hasOpenToggles,\n closeAllOpenToggles\n ]\n );\n\n useEffect(() => {\n const current = BodyRef.current;\n\n if (!current) {\n return;\n }\n\n current.addEventListener('keydown', onKeyDown);\n\n return () => {\n current.removeEventListener('keydown', onKeyDown);\n };\n }, [BodyRef, onKeyDown]);\n}\n\nfunction useGoDownFromSearchInput() {\n const focusCategoryNavigation = useFocusCategoryNavigation();\n const isSearchMode = useIsSearchMode();\n const BodyRef = useBodyRef();\n\n return useCallback(\n function goDownFromSearchInput() {\n if (isSearchMode) {\n return focusFirstVisibleEmoji(BodyRef.current);\n }\n return focusCategoryNavigation();\n },\n [BodyRef, focusCategoryNavigation, isSearchMode]\n );\n}\n\nfunction useGoUpFromBody() {\n const focusSearchInput = useFocusSearchInput();\n const focusCategoryNavigation = useFocusCategoryNavigation();\n const isSearchMode = useIsSearchMode();\n\n return useCallback(\n function goUpFromEmoji() {\n if (isSearchMode) {\n return focusSearchInput();\n }\n return focusCategoryNavigation();\n },\n [focusSearchInput, isSearchMode, focusCategoryNavigation]\n );\n}\n\nfunction focusNextSkinTone(exitLeft: () => void) {\n const currentSkinTone = getActiveElement();\n\n if (!currentSkinTone) {\n return;\n }\n\n if (!hasNextElementSibling(currentSkinTone)) {\n exitLeft();\n }\n\n focusNextElementSibling(currentSkinTone);\n}\n\nfunction focusPrevSkinTone() {\n const currentSkinTone = getActiveElement();\n\n if (!currentSkinTone) {\n return;\n }\n\n focusPrevElementSibling(currentSkinTone);\n}\n\nfunction useOnType() {\n const appendSearch = useAppendSearch();\n const focusSearchInput = useFocusSearchInput();\n const searchDisabled = useSearchDisabledConfig();\n const closeAllOpenToggles = useCloseAllOpenToggles();\n\n return function onType(event: KeyboardEvent) {\n const { key } = event;\n\n if (hasModifier(event) || searchDisabled) {\n return;\n }\n\n if (key.match(/(^[a-zA-Z0-9]$){1}/)) {\n event.preventDefault();\n closeAllOpenToggles();\n focusSearchInput();\n appendSearch(key);\n }\n };\n}\n\nfunction hasModifier(event: KeyboardEvent): boolean {\n const { metaKey, ctrlKey, altKey } = event;\n\n return metaKey || ctrlKey || altKey;\n}\n","import { GetEmojiUrl } from '../components/emoji/BaseEmojiProps';\nimport { DataEmoji } from '../dataUtils/DataTypes';\nimport { emojiUnified, emojiVariations } from '../dataUtils/emojiSelectors';\nimport { EmojiStyle } from '../types/exposedTypes';\n\nexport function preloadEmoji(\n getEmojiUrl: GetEmojiUrl,\n emoji: undefined | DataEmoji,\n emojiStyle: EmojiStyle\n): void {\n if (!emoji) {\n return;\n }\n\n if (emojiStyle === EmojiStyle.NATIVE) {\n return;\n }\n\n const unified = emojiUnified(emoji);\n\n if (preloadedEmojs.has(unified)) {\n return;\n }\n\n emojiVariations(emoji).forEach((variation) => {\n const emojiUrl = getEmojiUrl(variation, emojiStyle);\n preloadImage(emojiUrl);\n });\n\n preloadedEmojs.add(unified);\n}\n\nexport const preloadedEmojs: Set<string> = new Set();\n\nfunction preloadImage(url: string): void {\n const image = new Image();\n image.src = url;\n}\n","import { useEffect } from 'react';\n\nimport { buttonFromTarget, emojiFromElement } from '../DomUtils/selectors';\nimport { useBodyRef } from '../components/context/ElementRefContext';\nimport { useEmojiStyleConfig, useGetEmojiUrlConfig } from '../config/useConfig';\nimport { emojiHasVariations } from '../dataUtils/emojiSelectors';\nimport { EmojiStyle } from '../types/exposedTypes';\n\nimport { preloadEmoji } from './preloadEmoji';\n\nexport function useOnFocus() {\n const BodyRef = useBodyRef();\n const emojiStyle = useEmojiStyleConfig();\n const getEmojiUrl = useGetEmojiUrlConfig();\n\n useEffect(() => {\n if (emojiStyle === EmojiStyle.NATIVE) {\n return;\n }\n\n const bodyRef = BodyRef.current;\n\n bodyRef?.addEventListener('focusin', onFocus);\n\n return () => {\n bodyRef?.removeEventListener('focusin', onFocus);\n };\n\n function onFocus(event: FocusEvent) {\n const button = buttonFromTarget(event.target as HTMLElement);\n\n if (!button) {\n return;\n }\n\n const [emoji] = emojiFromElement(button);\n\n if (!emoji) {\n return;\n }\n\n if (emojiHasVariations(emoji)) {\n preloadEmoji(getEmojiUrl, emoji, emojiStyle);\n }\n }\n }, [BodyRef, emojiStyle, getEmojiUrl]);\n}\n","import { cx } from 'flairup';\nimport * as React from 'react';\n\nimport { ClassNames } from '../../DomUtils/classNames';\nimport { stylesheet } from '../../Stylesheet/stylesheet';\nimport {\n useClassNameConfig,\n useStyleConfig,\n useThemeConfig\n} from '../../config/useConfig';\nimport useIsSearchMode from '../../hooks/useIsSearchMode';\nimport { useKeyboardNavigation } from '../../hooks/useKeyboardNavigation';\nimport { useOnFocus } from '../../hooks/useOnFocus';\nimport { Theme } from '../../types/exposedTypes';\nimport { usePickerMainRef } from '../context/ElementRefContext';\nimport {\n PickerContextProvider,\n useReactionsModeState\n} from '../context/PickerContext';\n\ntype Props = Readonly<{\n children: React.ReactNode;\n}>;\n\nexport const DEFAULT_LABEL_HEIGHT = 40;\n\nexport default function PickerMain({ children }: Props) {\n return (\n <PickerContextProvider>\n <PickerRootElement>{children}</PickerRootElement>\n </PickerContextProvider>\n );\n}\n\ntype RootProps = Readonly<{\n className?: string;\n style?: React.CSSProperties;\n children: React.ReactNode;\n}>;\n\nfunction PickerRootElement({ children }: RootProps) {\n const [reactionsMode] = useReactionsModeState();\n const theme = useThemeConfig();\n const searchModeActive = useIsSearchMode();\n const PickerMainRef = usePickerMainRef();\n const className = useClassNameConfig();\n const style = useStyleConfig();\n\n useKeyboardNavigation();\n useOnFocus();\n\n const { width, height, ...styleProps } = style || {};\n\n return (\n <aside\n className={cx(\n styles.main,\n styles.baseVariables,\n theme === Theme.DARK && styles.darkTheme,\n theme === Theme.AUTO && styles.autoThemeDark,\n {\n [ClassNames.searchActive]: searchModeActive\n },\n reactionsMode && styles.reactionsMenu,\n className\n )}\n ref={PickerMainRef}\n style={{\n ...styleProps,\n ...(!reactionsMode && { height, width })\n }}\n >\n {children}\n </aside>\n );\n}\n\nconst DarkTheme = {\n '--epr-emoji-variation-picker-bg-color':\n 'var(--epr-dark-emoji-variation-picker-bg-color)',\n '--epr-hover-bg-color-reduced-opacity':\n 'var(--epr-dark-hover-bg-color-reduced-opacity)',\n '--epr-highlight-color': 'var(--epr-dark-highlight-color)',\n '--epr-text-color': 'var(--epr-dark-text-color)',\n '--epr-hover-bg-color': 'var(--epr-dark-hover-bg-color)',\n '--epr-focus-bg-color': 'var(--epr-dark-focus-bg-color)',\n '--epr-search-input-bg-color': 'var(--epr-dark-search-input-bg-color)',\n '--epr-category-label-bg-color': 'var(--epr-dark-category-label-bg-color)',\n '--epr-picker-border-color': 'var(--epr-dark-picker-border-color)',\n '--epr-bg-color': 'var(--epr-dark-bg-color)',\n '--epr-reactions-bg-color': 'var(--epr-dark-reactions-bg-color)',\n '--epr-search-input-bg-color-active':\n 'var(--epr-dark-search-input-bg-color-active)',\n '--epr-emoji-variation-indicator-color':\n 'var(--epr-dark-emoji-variation-indicator-color)',\n '--epr-category-icon-active-color':\n 'var(--epr-dark-category-icon-active-color)',\n '--epr-skin-tone-picker-menu-color':\n 'var(--epr-dark-skin-tone-picker-menu-color)'\n};\n\nconst styles = stylesheet.create({\n main: {\n '.': ['epr-main', ClassNames.emojiPicker],\n position: 'relative',\n display: 'flex',\n flexDirection: 'column',\n borderWidth: '1px',\n borderStyle: 'solid',\n borderRadius: 'var(--epr-picker-border-radius)',\n borderColor: 'var(--epr-picker-border-color)',\n backgroundColor: 'var(--epr-bg-color)',\n overflow: 'hidden',\n transition: 'all 0.3s ease-in-out, background-color 0.1s ease-in-out',\n // @ts-expect-error - need to work on this\n '*': {\n boxSizing: 'border-box',\n fontFamily: 'sans-serif'\n }\n },\n baseVariables: {\n '--': {\n '--epr-highlight-color': '#007aeb',\n '--epr-hover-bg-color': '#f1f8ff',\n '--epr-hover-bg-color-reduced-opacity': '#f1f8ff80',\n '--epr-focus-bg-color': '#e0f0ff',\n '--epr-text-color': '#858585',\n '--epr-search-input-bg-color': '#f6f6f6',\n '--epr-picker-border-color': '#e7e7e7',\n '--epr-bg-color': '#fff',\n '--epr-reactions-bg-color': '#ffffff90',\n '--epr-category-icon-active-color': '#6aa8de',\n '--epr-skin-tone-picker-menu-color': '#ffffff95',\n\n '--epr-horizontal-padding': '10px',\n\n '--epr-picker-border-radius': '8px',\n\n /* Header */\n '--epr-search-border-color': 'var(--epr-highlight-color)',\n '--epr-header-padding': '15px var(--epr-horizontal-padding)',\n\n /* Skin Tone Picker */\n '--epr-active-skin-tone-indicator-border-color':\n 'var(--epr-highlight-color)',\n '--epr-active-skin-hover-color': 'var(--epr-hover-bg-color)',\n\n /* Search */\n '--epr-search-input-bg-color-active': 'var(--epr-search-input-bg-color)',\n '--epr-search-input-padding': '0 30px',\n '--epr-search-input-border-radius': '8px',\n '--epr-search-input-height': '40px',\n '--epr-search-input-text-color': 'var(--epr-text-color)',\n '--epr-search-input-placeholder-color': 'var(--epr-text-color)',\n '--epr-search-bar-inner-padding': 'var(--epr-horizontal-padding)',\n\n /* Category Navigation */\n '--epr-category-navigation-button-size': '30px',\n\n /* Variation Picker */\n '--epr-emoji-variation-picker-height': '45px',\n '--epr-emoji-variation-picker-bg-color': 'var(--epr-bg-color)',\n\n /* Preview */\n '--epr-preview-height': '70px',\n '--epr-preview-text-size': '14px',\n '--epr-preview-text-padding': '0 var(--epr-horizontal-padding)',\n '--epr-preview-border-color': 'var(--epr-picker-border-color)',\n '--epr-preview-text-color': 'var(--epr-text-color)',\n\n /* Category */\n '--epr-category-padding': '0 var(--epr-horizontal-padding)',\n\n /* Category Label */\n '--epr-category-label-bg-color': '#ffffffe6',\n '--epr-category-label-text-color': 'var(--epr-text-color)',\n '--epr-category-label-padding': '0 var(--epr-horizontal-padding)',\n '--epr-category-label-height': `${DEFAULT_LABEL_HEIGHT}px`,\n\n /* Emoji */\n '--epr-emoji-size': '30px',\n '--epr-emoji-padding': '5px',\n '--epr-emoji-fullsize':\n 'calc(var(--epr-emoji-size) + var(--epr-emoji-padding) * 2)',\n '--epr-emoji-hover-color': 'var(--epr-hover-bg-color)',\n '--epr-emoji-variation-indicator-color': 'var(--epr-picker-border-color)',\n '--epr-emoji-variation-indicator-color-hover': 'var(--epr-text-color)',\n\n /* Z-Index */\n '--epr-header-overlay-z-index': '3',\n '--epr-emoji-variations-indictator-z-index': '1',\n '--epr-category-label-z-index': '2',\n '--epr-skin-variation-picker-z-index': '5',\n '--epr-preview-z-index': '6',\n\n /* Dark Theme Variables */\n '--epr-dark': '#000',\n '--epr-dark-emoji-variation-picker-bg-color': 'var(--epr-dark)',\n '--epr-dark-highlight-color': '#c0c0c0',\n '--epr-dark-text-color': 'var(--epr-highlight-color)',\n '--epr-dark-hover-bg-color': '#363636f6',\n '--epr-dark-hover-bg-color-reduced-opacity': '#36363680',\n '--epr-dark-focus-bg-color': '#474747',\n '--epr-dark-search-input-bg-color': '#333333',\n '--epr-dark-category-label-bg-color': '#222222e6',\n '--epr-dark-picker-border-color': '#151617',\n '--epr-dark-bg-color': '#222222',\n '--epr-dark-reactions-bg-color': '#22222290',\n '--epr-dark-search-input-bg-color-active': 'var(--epr-dark)',\n '--epr-dark-emoji-variation-indicator-color': '#444',\n '--epr-dark-category-icon-active-color': '#3271b7',\n '--epr-dark-skin-tone-picker-menu-color': '#22222295'\n }\n },\n autoThemeDark: {\n '.': ClassNames.autoTheme,\n '@media (prefers-color-scheme: dark)': {\n '--': DarkTheme\n }\n },\n darkTheme: {\n '.': ClassNames.darkTheme,\n '--': DarkTheme\n },\n reactionsMenu: {\n '.': 'epr-reactions',\n height: '50px',\n display: 'inline-flex',\n backgroundColor: 'var(--epr-reactions-bg-color)',\n // @ts-expect-error - need to work on this\n backdropFilter: 'blur(8px)',\n '--': {\n '--epr-picker-border-radius': '50px'\n }\n }\n});\n","import { DEFAULT_LABEL_HEIGHT } from '../components/main/PickerMain';\n\nimport { ClassNames, asSelectors } from './classNames';\nimport { NullableElement } from './selectors';\n\nexport function elementCountInRow(\n parent: NullableElement,\n element: NullableElement\n): number {\n if (!parent || !element) {\n return 0;\n }\n\n const parentWidth = parent.getBoundingClientRect().width;\n const elementWidth = element.getBoundingClientRect().width;\n return Math.floor(parentWidth / elementWidth);\n}\n\nexport function elementIndexInRow(\n parent: NullableElement,\n element: NullableElement\n): number {\n if (!parent || !element) {\n return 0;\n }\n\n const elementWidth = element.getBoundingClientRect().width;\n const elementLeft = element.getBoundingClientRect().left;\n const parentLeft = parent.getBoundingClientRect().left;\n\n return Math.floor((elementLeft - parentLeft) / elementWidth);\n}\n\nexport function rowNumber(\n parent: NullableElement,\n element: NullableElement\n): number {\n if (!parent || !element) {\n return 0;\n }\n\n const elementHeight = element.getBoundingClientRect().height;\n const elementTop = element.getBoundingClientRect().top;\n const parentTop = parent.getBoundingClientRect().top;\n return Math.round((elementTop - parentTop) / elementHeight);\n}\n\nexport function hasNextRow(\n parent: NullableElement,\n element: NullableElement\n): boolean {\n if (!parent || !element) {\n return false;\n }\n\n const elementHeight = element.getBoundingClientRect().height;\n const elementTop = element.getBoundingClientRect().top;\n const parentTop = parent.getBoundingClientRect().top;\n const parentHeight = parent.getBoundingClientRect().height;\n\n return Math.round(elementTop - parentTop + elementHeight) < parentHeight;\n}\n\nfunction getRowElements(\n elements: HTMLElement[],\n row: number,\n elementsInRow: number\n): HTMLElement[] {\n if (row === -1) {\n const lastRow = Math.floor((elements.length - 1) / elementsInRow);\n const firstElementIndex = lastRow * elementsInRow;\n const lastElementIndex = elements.length - 1;\n return elements.slice(firstElementIndex, lastElementIndex + 1);\n }\n\n return elements.slice(row * elementsInRow, (row + 1) * elementsInRow);\n}\n\nfunction getNextRowElements(\n allElements: HTMLElement[],\n currentRow: number,\n elementsInRow: number\n): HTMLElement[] {\n const nextRow = currentRow + 1;\n\n if (nextRow * elementsInRow > allElements.length) {\n return [];\n }\n\n return getRowElements(allElements, nextRow, elementsInRow);\n}\n\nexport function getElementInRow(\n elements: HTMLElement[],\n row: number,\n elementsInRow: number,\n indexInRow: number\n): NullableElement {\n const rowElements = getRowElements(elements, row, elementsInRow);\n // get element, default to last\n return rowElements[indexInRow] || rowElements[rowElements.length - 1] || null;\n}\n\nexport function getElementInNextRow(\n allElements: HTMLElement[],\n currentRow: number,\n elementsInRow: number,\n index: number\n): NullableElement {\n const nextRowElements = getNextRowElements(\n allElements,\n currentRow,\n elementsInRow\n );\n\n // return item in index, or last item in row\n return (\n nextRowElements[index] ||\n nextRowElements[nextRowElements.length - 1] ||\n null\n );\n}\n\nexport function getElementInPrevRow(\n allElements: HTMLElement[],\n currentRow: number,\n elementsInRow: number,\n index: number\n): NullableElement {\n const prevRowElements = getRowElements(\n allElements,\n currentRow - 1,\n elementsInRow\n );\n\n // default to last\n return (\n prevRowElements[index] ||\n prevRowElements[prevRowElements.length - 1] ||\n null\n );\n}\n\nexport function firstVisibleElementInContainer(\n parent: NullableElement,\n elements: HTMLElement[]\n): NullableElement {\n if (!parent || !elements.length) {\n return null;\n }\n\n const parentTop = parent.getBoundingClientRect().top;\n const parentBottom = parent.getBoundingClientRect().bottom;\n\n const parentTopWithLabel = parentTop + getLabelHight(parent);\n\n const visibleElements = elements.find(element => {\n const elementTop = element.getBoundingClientRect().top;\n const elementBottom = element.getBoundingClientRect().bottom;\n\n if (elementTop < parentTopWithLabel) {\n return false;\n }\n\n return (\n (elementTop >= parentTop && elementTop <= parentBottom) ||\n (elementBottom >= parentTop && elementBottom <= parentBottom)\n );\n });\n\n return visibleElements || null;\n}\n\nexport function hasNextElementSibling(element: HTMLElement) {\n return !!element.nextElementSibling;\n}\n\nfunction getLabelHight(parentNode: HTMLElement) {\n return (\n parentNode\n .querySelector(asSelectors(ClassNames.label))\n ?.getBoundingClientRect().height ?? DEFAULT_LABEL_HEIGHT /* default */\n );\n}\n","import { DataEmoji } from '../dataUtils/DataTypes';\nimport {\n emojiByUnified,\n unifiedWithoutSkinTone\n} from '../dataUtils/emojiSelectors';\n\nimport { asSelectors, ClassNames } from './classNames';\nimport { firstVisibleElementInContainer } from './elementPositionInRow';\n\nexport type NullableElement = HTMLElement | null;\n\nexport const EmojiButtonSelector = `button${asSelectors(ClassNames.emoji)}`;\nexport const VisibleEmojiSelector = [\n EmojiButtonSelector,\n asSelectors(ClassNames.visible),\n `:not(${asSelectors(ClassNames.hidden)})`\n].join('');\n\nexport function buttonFromTarget(\n emojiElement: NullableElement\n): HTMLButtonElement | null {\n return emojiElement?.closest(EmojiButtonSelector) ?? null;\n}\n\nexport function isEmojiButton(element: NullableElement): boolean {\n if (!element) {\n return false;\n }\n\n return element.matches(EmojiButtonSelector);\n}\n\nexport function emojiFromElement(\n element: NullableElement\n): [DataEmoji, string] | [] {\n const originalUnified = originalUnifiedFromEmojiElement(element);\n const unified = unifiedFromEmojiElement(element);\n\n if (!originalUnified) {\n return [];\n }\n\n const emoji = emojiByUnified(unified ?? originalUnified);\n\n if (!emoji) {\n return [];\n }\n\n return [emoji, unified as string];\n}\n\nexport function isEmojiElement(element: NullableElement): boolean {\n return Boolean(\n element?.matches(EmojiButtonSelector) ||\n element?.parentElement?.matches(EmojiButtonSelector)\n );\n}\n\nexport function categoryLabelFromCategory(\n category: NullableElement\n): NullableElement {\n return category?.querySelector(asSelectors(ClassNames.label)) ?? null;\n}\n\nexport function closestCategoryLabel(\n element: NullableElement\n): NullableElement {\n const category = closestCategory(element);\n return categoryLabelFromCategory(category);\n}\n\nexport function elementHeight(element: NullableElement): number {\n return element?.clientHeight ?? 0;\n}\n\nexport function emojiTrueOffsetTop(element: NullableElement): number {\n if (!element) {\n return 0;\n }\n\n const button = buttonFromTarget(element);\n const category = closestCategory(button);\n\n // compensate for the label height\n const labelHeight = categoryLabelHeight(category);\n\n return elementOffsetTop(button) + elementOffsetTop(category) + labelHeight;\n}\n\nexport function categoryLabelHeight(category: NullableElement): number {\n if (!category) {\n return 0;\n }\n\n const categoryWithoutLabel = category.querySelector(\n asSelectors(ClassNames.categoryContent)\n );\n\n return (\n (category?.clientHeight ?? 0) - (categoryWithoutLabel?.clientHeight ?? 0)\n );\n}\n\nexport function isEmojiBehindLabel(emoji: NullableElement): boolean {\n if (!emoji) {\n return false;\n }\n\n return (\n emojiDistanceFromScrollTop(emoji) <\n categoryLabelHeight(closestCategory(emoji))\n );\n}\n\nexport function queryScrollBody(root: NullableElement): NullableElement {\n if (!root) return null;\n\n return root.matches(asSelectors(ClassNames.scrollBody))\n ? root\n : root.querySelector(asSelectors(ClassNames.scrollBody));\n}\n\nexport function emojiDistanceFromScrollTop(emoji: NullableElement): number {\n if (!emoji) {\n return 0;\n }\n\n return emojiTrueOffsetTop(emoji) - (closestScrollBody(emoji)?.scrollTop ?? 0);\n}\n\nexport function closestScrollBody(element: NullableElement): NullableElement {\n if (!element) {\n return null;\n }\n\n return element.closest(asSelectors(ClassNames.scrollBody)) ?? null;\n}\n\nexport function emojiTruOffsetLeft(element: NullableElement): number {\n const button = buttonFromTarget(element);\n const category = closestCategory(button);\n\n return elementOffsetLeft(button) + elementOffsetLeft(category);\n}\n\nfunction elementOffsetTop(element: NullableElement): number {\n return element?.offsetTop ?? 0;\n}\n\nfunction elementOffsetLeft(element: NullableElement): number {\n return element?.offsetLeft ?? 0;\n}\n\nexport function unifiedFromEmojiElement(emoji: NullableElement): string | null {\n return elementDataSetKey(buttonFromTarget(emoji), 'unified') ?? null;\n}\n\nexport function originalUnifiedFromEmojiElement(\n emoji: NullableElement\n): string | null {\n const unified = unifiedFromEmojiElement(emoji);\n\n if (unified) {\n return unifiedWithoutSkinTone(unified);\n }\n return null;\n}\n\nexport function allUnifiedFromEmojiElement(\n emoji: NullableElement\n): { unified: string | null; originalUnified: string | null } {\n if (!emoji) {\n return {\n unified: null,\n originalUnified: null\n };\n }\n\n return {\n unified: unifiedFromEmojiElement(emoji),\n originalUnified: originalUnifiedFromEmojiElement(emoji)\n };\n}\n\nfunction elementDataSetKey(\n element: NullableElement,\n key: string\n): string | null {\n return elementDataSet(element)[key] ?? null;\n}\n\nfunction elementDataSet(element: NullableElement): DOMStringMap {\n return element?.dataset ?? {};\n}\n\nexport function isVisibleEmoji(element: HTMLElement) {\n return element.classList.contains(ClassNames.visible);\n}\n\nexport function isHidden(element: NullableElement) {\n if (!element) return true;\n\n return element.classList.contains(ClassNames.hidden);\n}\n\nexport function allVisibleEmojis(parent: NullableElement) {\n if (!parent) {\n return [];\n }\n\n return Array.from(\n parent.querySelectorAll(VisibleEmojiSelector)\n ) as HTMLElement[];\n}\n\nexport function lastVisibleEmoji(element: NullableElement): NullableElement {\n if (!element) return null;\n\n const allEmojis = allVisibleEmojis(element);\n const [last] = allEmojis.slice(-1);\n if (!last) {\n return null;\n }\n\n if (!isVisibleEmoji(last)) {\n return prevVisibleEmoji(last);\n }\n\n return last;\n}\n\nexport function nextVisibleEmoji(element: HTMLElement): NullableElement {\n const next = element.nextElementSibling as HTMLElement;\n\n if (!next) {\n return firstVisibleEmoji(nextCategory(element));\n }\n\n if (!isVisibleEmoji(next)) {\n return nextVisibleEmoji(next);\n }\n\n return next;\n}\n\nexport function prevVisibleEmoji(element: HTMLElement): NullableElement {\n const prev = element.previousElementSibling as HTMLElement;\n\n if (!prev) {\n return lastVisibleEmoji(prevCategory(element));\n }\n\n if (!isVisibleEmoji(prev)) {\n return prevVisibleEmoji(prev);\n }\n\n return prev;\n}\n\nexport function firstVisibleEmoji(parent: NullableElement) {\n if (!parent) {\n return null;\n }\n\n const allEmojis = allVisibleEmojis(parent);\n\n return firstVisibleElementInContainer(parent, allEmojis);\n}\n\nexport function prevCategory(element: NullableElement): NullableElement {\n const category = closestCategory(element);\n\n if (!category) {\n return null;\n }\n\n const prev = category.previousElementSibling as HTMLElement;\n\n if (!prev) {\n return null;\n }\n\n if (isHidden(prev)) {\n return prevCategory(prev);\n }\n\n return prev;\n}\n\nexport function nextCategory(element: NullableElement): NullableElement {\n const category = closestCategory(element);\n\n if (!category) {\n return null;\n }\n\n const next = category.nextElementSibling as HTMLElement;\n\n if (!next) {\n return null;\n }\n\n if (isHidden(next)) {\n return nextCategory(next);\n }\n\n return next;\n}\n\nexport function closestCategory(element: NullableElement) {\n if (!element) {\n return null;\n }\n return element.closest(asSelectors(ClassNames.category)) as HTMLElement;\n}\n\nexport function closestCategoryContent(element: NullableElement) {\n if (!element) {\n return null;\n }\n return element.closest(\n asSelectors(ClassNames.categoryContent)\n ) as HTMLElement;\n}\n","export function parseNativeEmoji(unified: string): string {\n return unified\n .split('-')\n .map(hex => String.fromCodePoint(parseInt(hex, 16)))\n .join('');\n}\n","import { SkinTones, SuggestionMode } from '../types/exposedTypes';\n\nimport { DataEmoji } from './DataTypes';\nimport { emojiUnified } from './emojiSelectors';\n\nconst SUGGESTED_LS_KEY = 'epr_suggested';\n\ntype SuggestedItem = {\n unified: string;\n original: string;\n count: number;\n};\n\ntype Suggested = SuggestedItem[];\n\nexport function getSuggested(mode?: SuggestionMode): Suggested {\n try {\n if (!window?.localStorage) {\n return [];\n }\n const recent = JSON.parse(\n window?.localStorage.getItem(SUGGESTED_LS_KEY) ?? '[]'\n ) as Suggested;\n\n if (mode === SuggestionMode.FREQUENT) {\n return recent.sort((a, b) => b.count - a.count);\n }\n\n return recent;\n } catch {\n return [];\n }\n}\n\nexport function setSuggested(emoji: DataEmoji, skinTone: SkinTones) {\n const recent = getSuggested();\n\n const unified = emojiUnified(emoji, skinTone);\n const originalUnified = emojiUnified(emoji);\n\n let existing = recent.find(({ unified: u }) => u === unified);\n\n let nextList: SuggestedItem[];\n\n if (existing) {\n nextList = [existing].concat(recent.filter(i => i !== existing));\n } else {\n existing = {\n unified,\n original: originalUnified,\n count: 0\n };\n nextList = [existing, ...recent];\n }\n\n existing.count++;\n\n nextList.length = Math.min(nextList.length, 14);\n\n try {\n window?.localStorage.setItem(SUGGESTED_LS_KEY, JSON.stringify(nextList));\n // Prevents the change from being seen immediately.\n } catch {\n // ignore\n }\n}\n","import {\n Categories,\n CategoryConfig,\n CustomCategoryConfig\n} from '../config/categoryConfig';\nimport { CustomEmoji } from '../config/customEmojiConfig';\nimport { DataEmoji } from '../dataUtils/DataTypes';\n\nexport function isCustomCategory(\n category: CategoryConfig | CustomCategoryConfig\n): category is CustomCategoryConfig {\n return category.category === Categories.CUSTOM;\n}\n\nexport function isCustomEmoji(emoji: Partial<DataEmoji>): emoji is CustomEmoji {\n return emoji.imgUrl !== undefined;\n}\n","import * as React from 'react';\nimport { useEffect, useRef } from 'react';\n\nimport {\n emojiFromElement,\n isEmojiElement,\n NullableElement\n} from '../DomUtils/selectors';\nimport {\n useActiveSkinToneState,\n useDisallowClickRef,\n useEmojiVariationPickerState,\n useUpdateSuggested\n} from '../components/context/PickerContext';\nimport { GetEmojiUrl } from '../components/emoji/BaseEmojiProps';\nimport {\n MOUSE_EVENT_SOURCE,\n useEmojiStyleConfig,\n useGetEmojiUrlConfig,\n useOnEmojiClickConfig\n} from '../config/useConfig';\nimport { DataEmoji } from '../dataUtils/DataTypes';\nimport {\n activeVariationFromUnified,\n emojiHasVariations,\n emojiNames,\n emojiUnified\n} from '../dataUtils/emojiSelectors';\nimport { parseNativeEmoji } from '../dataUtils/parseNativeEmoji';\nimport { setSuggested } from '../dataUtils/suggested';\nimport { isCustomEmoji } from '../typeRefinements/typeRefinements';\nimport { EmojiClickData, SkinTones, EmojiStyle } from '../types/exposedTypes';\n\nimport { useCloseAllOpenToggles } from './useCloseAllOpenToggles';\nimport useSetVariationPicker from './useSetVariationPicker';\n\nexport function useMouseDownHandlers(\n ContainerRef: React.MutableRefObject<NullableElement>,\n mouseEventSource: MOUSE_EVENT_SOURCE\n) {\n const mouseDownTimerRef = useRef<undefined | number>();\n const setVariationPicker = useSetVariationPicker();\n const disallowClickRef = useDisallowClickRef();\n const [, setEmojiVariationPicker] = useEmojiVariationPickerState();\n const closeAllOpenToggles = useCloseAllOpenToggles();\n const [activeSkinTone] = useActiveSkinToneState();\n const onEmojiClick = useOnEmojiClickConfig(mouseEventSource);\n const [, updateSuggested] = useUpdateSuggested();\n const getEmojiUrl = useGetEmojiUrlConfig();\n const activeEmojiStyle = useEmojiStyleConfig();\n\n const onClick = React.useCallback(\n function onClick(event: MouseEvent) {\n if (disallowClickRef.current) {\n return;\n }\n\n closeAllOpenToggles();\n\n const [emoji, unified] = emojiFromEvent(event);\n\n if (!emoji || !unified) {\n return;\n }\n\n const skinToneToUse =\n activeVariationFromUnified(unified) || activeSkinTone;\n\n updateSuggested();\n setSuggested(emoji, skinToneToUse);\n onEmojiClick(\n emojiClickOutput(emoji, skinToneToUse, activeEmojiStyle, getEmojiUrl),\n event\n );\n },\n [\n activeSkinTone,\n closeAllOpenToggles,\n disallowClickRef,\n onEmojiClick,\n updateSuggested,\n getEmojiUrl,\n activeEmojiStyle\n ]\n );\n\n const onMouseDown = React.useCallback(\n function onMouseDown(event: MouseEvent) {\n if (mouseDownTimerRef.current) {\n clearTimeout(mouseDownTimerRef.current);\n }\n\n const [emoji] = emojiFromEvent(event);\n\n if (!emoji || !emojiHasVariations(emoji)) {\n return;\n }\n\n mouseDownTimerRef.current = window?.setTimeout(() => {\n disallowClickRef.current = true;\n mouseDownTimerRef.current = undefined;\n closeAllOpenToggles();\n setVariationPicker(event.target as HTMLElement);\n setEmojiVariationPicker(emoji);\n }, 500);\n },\n [\n disallowClickRef,\n closeAllOpenToggles,\n setVariationPicker,\n setEmojiVariationPicker\n ]\n );\n const onMouseUp = React.useCallback(\n function onMouseUp() {\n if (mouseDownTimerRef.current) {\n clearTimeout(mouseDownTimerRef.current);\n mouseDownTimerRef.current = undefined;\n } else if (disallowClickRef.current) {\n // The problem we're trying to overcome here\n // is that the emoji has both mouseup and click events\n // and when releasing a mouseup event\n // the click gets triggered too\n // So we're disallowing the click event for a short time\n\n requestAnimationFrame(() => {\n disallowClickRef.current = false;\n });\n }\n },\n [disallowClickRef]\n );\n\n useEffect(() => {\n if (!ContainerRef.current) {\n return;\n }\n const confainerRef = ContainerRef.current;\n confainerRef.addEventListener('click', onClick, {\n passive: true\n });\n\n confainerRef.addEventListener('mousedown', onMouseDown, {\n passive: true\n });\n confainerRef.addEventListener('mouseup', onMouseUp, {\n passive: true\n });\n\n return () => {\n confainerRef?.removeEventListener('click', onClick);\n confainerRef?.removeEventListener('mousedown', onMouseDown);\n confainerRef?.removeEventListener('mouseup', onMouseUp);\n };\n }, [ContainerRef, onClick, onMouseDown, onMouseUp]);\n}\n\nfunction emojiFromEvent(event: MouseEvent): [DataEmoji, string] | [] {\n const target = event?.target as HTMLElement;\n if (!isEmojiElement(target)) {\n return [];\n }\n\n return emojiFromElement(target);\n}\n\nfunction emojiClickOutput(\n emoji: DataEmoji,\n activeSkinTone: SkinTones,\n activeEmojiStyle: EmojiStyle,\n getEmojiUrl: GetEmojiUrl\n): EmojiClickData {\n const names = emojiNames(emoji);\n\n if (isCustomEmoji(emoji)) {\n const unified = emojiUnified(emoji);\n return {\n activeSkinTone,\n emoji: unified,\n getImageUrl() {\n return emoji.imgUrl;\n },\n imageUrl: emoji.imgUrl,\n isCustom: true,\n names,\n unified,\n unifiedWithoutSkinTone: unified\n };\n }\n const unified = emojiUnified(emoji, activeSkinTone);\n\n return {\n activeSkinTone,\n emoji: parseNativeEmoji(unified),\n getImageUrl(emojiStyle: EmojiStyle = activeEmojiStyle ?? EmojiStyle.APPLE) {\n return getEmojiUrl(unified, emojiStyle);\n },\n imageUrl: getEmojiUrl(unified, activeEmojiStyle ?? EmojiStyle.APPLE),\n isCustom: false,\n names,\n unified,\n unifiedWithoutSkinTone: emojiUnified(emoji)\n };\n}\n","import { cx } from 'flairup';\nimport * as React from 'react';\n\nimport { stylesheet } from '../../Stylesheet/stylesheet';\n\ninterface Props\n extends React.DetailedHTMLProps<\n React.ButtonHTMLAttributes<HTMLButtonElement>,\n HTMLButtonElement\n > {\n className?: string;\n}\n\nexport function Button(props: Props) {\n return (\n <button\n type=\"button\"\n {...props}\n className={cx(styles.button, props.className)}\n >\n {props.children}\n </button>\n );\n}\n\nconst styles = stylesheet.create({\n button: {\n '.': 'epr-btn',\n cursor: 'pointer',\n border: '0',\n background: 'none',\n outline: 'none'\n }\n});\n","import { cx } from 'flairup';\nimport * as React from 'react';\n\nimport { ClassNames } from '../../DomUtils/classNames';\nimport {\n commonInteractionStyles,\n commonStyles,\n stylesheet\n} from '../../Stylesheet/stylesheet';\nimport { Button } from '../atoms/Button';\n\ntype ClickableEmojiButtonProps = Readonly<{\n hidden?: boolean;\n showVariations?: boolean;\n hiddenOnSearch?: boolean;\n emojiNames: string[];\n children: React.ReactNode;\n hasVariations: boolean;\n unified?: string;\n noBackground?: boolean;\n className?: string;\n}>;\n\nexport function ClickableEmojiButton({\n emojiNames,\n unified,\n hidden,\n hiddenOnSearch,\n showVariations = true,\n hasVariations,\n children,\n className,\n noBackground = false\n}: ClickableEmojiButtonProps) {\n return (\n <Button\n className={cx(\n styles.emoji,\n hidden && commonStyles.hidden,\n hiddenOnSearch && commonInteractionStyles.hiddenOnSearch,\n {\n [ClassNames.visible]: !hidden && !hiddenOnSearch\n },\n !!(hasVariations && showVariations) && styles.hasVariations,\n noBackground && styles.noBackground,\n className\n )}\n data-unified={unified}\n aria-label={emojiNames[0]}\n data-full-name={emojiNames}\n >\n {children}\n </Button>\n );\n}\n\nconst styles = stylesheet.create({\n emoji: {\n '.': ClassNames.emoji,\n position: 'relative',\n width: 'var(--epr-emoji-fullsize)',\n height: 'var(--epr-emoji-fullsize)',\n boxSizing: 'border-box',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n maxWidth: 'var(--epr-emoji-fullsize)',\n maxHeight: 'var(--epr-emoji-fullsize)',\n borderRadius: '8px',\n overflow: 'hidden',\n transition: 'background-color 0.2s',\n ':hover': {\n backgroundColor: 'var(--epr-emoji-hover-color)'\n },\n ':focus': {\n backgroundColor: 'var(--epr-focus-bg-color)'\n }\n },\n noBackground: {\n background: 'none',\n ':hover': {\n backgroundColor: 'transparent',\n background: 'none'\n },\n ':focus': {\n backgroundColor: 'transparent',\n background: 'none'\n }\n },\n hasVariations: {\n '.': ClassNames.emojiHasVariations,\n ':after': {\n content: '',\n display: 'block',\n width: '0',\n height: '0',\n right: '0px',\n bottom: '1px',\n position: 'absolute',\n borderLeft: '4px solid transparent',\n borderRight: '4px solid transparent',\n transform: 'rotate(135deg)',\n borderBottom: '4px solid var(--epr-emoji-variation-indicator-color)',\n zIndex: 'var(--epr-emoji-variations-indictator-z-index)'\n },\n ':hover:after': {\n borderBottom: '4px solid var(--epr-emoji-variation-indicator-color-hover)'\n }\n }\n});\n","import { ClassNames } from '../../DomUtils/classNames';\nimport { stylesheet } from '../../Stylesheet/stylesheet';\n\nexport const emojiStyles = stylesheet.create({\n external: {\n '.': ClassNames.external,\n fontSize: '0'\n },\n common: {\n alignSelf: 'center',\n justifySelf: 'center',\n display: 'block'\n }\n});\n","import { cx } from 'flairup';\nimport * as React from 'react';\n\nimport { stylesheet } from '../../Stylesheet/stylesheet';\nimport { EmojiStyle } from '../../types/exposedTypes';\n\nimport { emojiStyles } from './emojiStyles';\n\nexport function EmojiImg({\n emojiName,\n style,\n lazyLoad = false,\n imgUrl,\n onError,\n className\n}: {\n emojiName: string;\n emojiStyle: EmojiStyle;\n style: React.CSSProperties;\n lazyLoad?: boolean;\n imgUrl: string;\n onError: () => void;\n className?: string;\n}) {\n return (\n <img\n src={imgUrl}\n alt={emojiName}\n className={cx(styles.emojiImag, emojiStyles.external, emojiStyles.common, className)}\n loading={lazyLoad ? 'lazy' : 'eager'}\n onError={onError}\n style={style}\n />\n );\n}\n\nconst styles = stylesheet.create({\n emojiImag: {\n '.': 'epr-emoji-img',\n maxWidth: 'var(--epr-emoji-fullsize)',\n maxHeight: 'var(--epr-emoji-fullsize)',\n minWidth: 'var(--epr-emoji-fullsize)',\n minHeight: 'var(--epr-emoji-fullsize)',\n padding: 'var(--epr-emoji-padding)'\n }\n});\n","import { cx } from 'flairup';\nimport * as React from 'react';\n\nimport { stylesheet } from '../../Stylesheet/stylesheet';\nimport { parseNativeEmoji } from '../../dataUtils/parseNativeEmoji';\n\nimport { emojiStyles } from './emojiStyles';\n\nexport function NativeEmoji({\n unified,\n style,\n className\n}: {\n unified: string;\n style: React.CSSProperties;\n className?: string;\n}) {\n return (\n <span\n className={cx(\n styles.nativeEmoji,\n emojiStyles.common,\n emojiStyles.external,\n className\n )}\n data-unified={unified}\n style={style}\n >\n {parseNativeEmoji(unified)}\n </span>\n );\n}\n\nconst styles = stylesheet.create({\n nativeEmoji: {\n '.': 'epr-emoji-native',\n fontFamily:\n '\"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Segoe UI\", \"Apple Color Emoji\", \"Twemoji Mozilla\", \"Noto Color Emoji\", \"EmojiOne Color\", \"Android Emoji\"!important',\n position: 'relative',\n lineHeight: '100%',\n fontSize: 'var(--epr-emoji-size)',\n textAlign: 'center',\n alignSelf: 'center',\n justifySelf: 'center',\n letterSpacing: '0',\n padding: 'var(--epr-emoji-padding)'\n }\n});\n","import * as React from 'react';\n\nimport {\n emojiByUnified,\n emojiName,\n emojiUrlByUnified\n} from '../../dataUtils/emojiSelectors';\nimport { isCustomEmoji } from '../../typeRefinements/typeRefinements';\nimport { EmojiStyle } from '../../types/exposedTypes';\nimport { useEmojisThatFailedToLoadState } from '../context/PickerContext';\n\nimport { BaseEmojiProps } from './BaseEmojiProps';\nimport { EmojiImg } from './EmojiImg';\nimport { NativeEmoji } from './NativeEmoji';\n\nexport function ViewOnlyEmoji({\n emoji,\n unified,\n emojiStyle,\n size,\n lazyLoad,\n getEmojiUrl = emojiUrlByUnified,\n className\n}: BaseEmojiProps) {\n const [, setEmojisThatFailedToLoad] = useEmojisThatFailedToLoadState();\n\n const style = {} as React.CSSProperties;\n if (size) {\n style.width = style.height = style.fontSize = `${size}px`;\n }\n\n const emojiToRender = emoji ? emoji : emojiByUnified(unified);\n\n if (!emojiToRender) {\n return null;\n }\n\n if (isCustomEmoji(emojiToRender)) {\n return (\n <EmojiImg\n style={style}\n emojiName={unified}\n emojiStyle={EmojiStyle.NATIVE}\n lazyLoad={lazyLoad}\n imgUrl={emojiToRender.imgUrl}\n onError={onError}\n className={className}\n />\n );\n }\n\n return (\n <>\n {emojiStyle === EmojiStyle.NATIVE ? (\n <NativeEmoji unified={unified} style={style} className={className} />\n ) : (\n <EmojiImg\n style={style}\n emojiName={emojiName(emojiToRender)}\n emojiStyle={emojiStyle}\n lazyLoad={lazyLoad}\n imgUrl={getEmojiUrl(unified, emojiStyle)}\n onError={onError}\n className={className}\n />\n )}\n </>\n );\n\n function onError() {\n setEmojisThatFailedToLoad(prev => new Set(prev).add(unified));\n }\n}\n","import * as React from 'react';\n\nimport { DataEmoji } from '../../dataUtils/DataTypes';\nimport { emojiHasVariations, emojiNames } from '../../dataUtils/emojiSelectors';\n\nimport { BaseEmojiProps } from './BaseEmojiProps';\nimport { ClickableEmojiButton } from './ClickableEmojiButton';\nimport { ViewOnlyEmoji } from './ViewOnlyEmoji';\n\ntype ClickableEmojiProps = Readonly<\n BaseEmojiProps & {\n hidden?: boolean;\n showVariations?: boolean;\n hiddenOnSearch?: boolean;\n emoji: DataEmoji;\n className?: string;\n noBackground?: boolean;\n }\n>;\n\nexport function ClickableEmoji({\n emoji,\n unified,\n hidden,\n hiddenOnSearch,\n emojiStyle,\n showVariations = true,\n size,\n lazyLoad,\n getEmojiUrl,\n className,\n noBackground = false\n}: ClickableEmojiProps) {\n const hasVariations = emojiHasVariations(emoji);\n\n return (\n <ClickableEmojiButton\n hasVariations={hasVariations}\n showVariations={showVariations}\n hidden={hidden}\n hiddenOnSearch={hiddenOnSearch}\n emojiNames={emojiNames(emoji)}\n unified={unified}\n noBackground={noBackground}\n >\n <ViewOnlyEmoji\n unified={unified}\n emoji={emoji}\n size={size}\n emojiStyle={emojiStyle}\n lazyLoad={lazyLoad}\n getEmojiUrl={getEmojiUrl}\n className={className}\n />\n </ClickableEmojiButton>\n );\n}\n","import { cx } from 'flairup';\nimport * as React from 'react';\n\nimport { darkMode, stylesheet } from '../../Stylesheet/stylesheet';\nimport { Button } from '../atoms/Button';\nimport { useReactionsModeState } from '../context/PickerContext';\n\nimport Plus from './svg/plus.svg';\n\nexport function BtnPlus() {\n const [, setReactionsMode] = useReactionsModeState();\n return (\n <Button\n aria-label=\"Show all Emojis\"\n title=\"Show all Emojis\"\n tabIndex={0}\n className={cx(styles.plusSign)}\n onClick={() => setReactionsMode(false)}\n />\n );\n}\n\nconst styles = stylesheet.create({\n plusSign: {\n fontSize: '20px',\n padding: '17px',\n color: 'var(--epr-text-color)',\n borderRadius: '50%',\n textAlign: 'center',\n lineHeight: '100%',\n width: '20px',\n height: '20px',\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n transition: 'background-color 0.2s ease-in-out',\n ':after': {\n content: '',\n minWidth: '20px',\n minHeight: '20px',\n backgroundImage: `url(${Plus})`,\n backgroundColor: 'transparent',\n backgroundRepeat: 'no-repeat',\n backgroundSize: '20px',\n backgroundPositionY: '0'\n },\n ':hover': {\n color: 'var(--epr-highlight-color)',\n backgroundColor: 'var(--epr-hover-bg-color-reduced-opacity)',\n // @ts-ignore\n ':after': {\n backgroundPositionY: '-20px'\n }\n },\n ':focus': {\n color: 'var(--epr-highlight-color)',\n backgroundColor: 'var(--epr-hover-bg-color-reduced-opacity)',\n // @ts-ignore\n ':after': {\n backgroundPositionY: '-40px'\n }\n }\n },\n ...darkMode('plusSign', {\n ':after': { backgroundPositionY: '-40px' },\n ':hover:after': { backgroundPositionY: '-60px' }\n })\n});\n","import { cx } from 'flairup';\nimport * as React from 'react';\n\nimport { commonStyles, stylesheet } from '../../Stylesheet/stylesheet';\nimport {\n MOUSE_EVENT_SOURCE,\n useEmojiStyleConfig,\n useReactionsConfig\n} from '../../config/useConfig';\nimport { DataEmoji } from '../../dataUtils/DataTypes';\nimport { emojiByUnified } from '../../dataUtils/emojiSelectors';\nimport { useMouseDownHandlers } from '../../hooks/useMouseDownHandlers';\nimport { useReactionsRef } from '../context/ElementRefContext';\nimport { useReactionsModeState } from '../context/PickerContext';\nimport { ClickableEmoji } from '../emoji/Emoji';\n\nimport { BtnPlus } from './BtnPlus';\n\nexport function Reactions() {\n const [reactionsOpen] = useReactionsModeState();\n const ReactionsRef = useReactionsRef();\n const reactions = useReactionsConfig();\n useMouseDownHandlers(ReactionsRef, MOUSE_EVENT_SOURCE.REACTIONS);\n const emojiStyle = useEmojiStyleConfig();\n\n if (!reactionsOpen) {\n return null;\n }\n\n return (\n <ul\n className={cx(styles.list, !reactionsOpen && commonStyles.hidden)}\n ref={ReactionsRef}\n >\n {reactions.map(reaction => (\n <li key={reaction}>\n <ClickableEmoji\n emoji={emojiByUnified(reaction) as DataEmoji}\n emojiStyle={emojiStyle}\n unified={reaction}\n showVariations={false}\n className={cx(styles.emojiButton)}\n noBackground\n />\n </li>\n ))}\n <li>\n <BtnPlus />\n </li>\n </ul>\n );\n}\n\nconst styles = stylesheet.create({\n list: {\n listStyle: 'none',\n margin: '0',\n padding: '0 5px',\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'center',\n height: '100%'\n },\n emojiButton: {\n ':hover': {\n transform: 'scale(1.2)'\n },\n ':focus': {\n transform: 'scale(1.2)'\n },\n ':active': {\n transform: 'scale(1.1)'\n },\n transition: 'transform 0.2s cubic-bezier(0.175, 0.885, 0.32, 1.5)'\n }\n});\n","import { useEffect } from 'react';\n\nimport { ElementRef } from '../components/context/ElementRefContext';\n\nimport { useCloseAllOpenToggles } from './useCloseAllOpenToggles';\n\nexport function useOnScroll(BodyRef: ElementRef) {\n const closeAllOpenToggles = useCloseAllOpenToggles();\n\n useEffect(() => {\n const bodyRef = BodyRef.current;\n if (!bodyRef) {\n return;\n }\n\n bodyRef.addEventListener('scroll', onScroll, {\n passive: true\n });\n\n function onScroll() {\n closeAllOpenToggles();\n }\n\n return () => {\n bodyRef?.removeEventListener('scroll', onScroll);\n };\n }, [BodyRef, closeAllOpenToggles]);\n}\n","import { useEmojisThatFailedToLoadState } from '../components/context/PickerContext';\nimport { DataEmoji } from '../dataUtils/DataTypes';\nimport { emojiUnified } from '../dataUtils/emojiSelectors';\n\nimport { useIsEmojiFiltered } from './useFilter';\n\nexport function useIsEmojiHidden(): (emoji: DataEmoji) => IsHiddenReturn {\n const [emojisThatFailedToLoad] = useEmojisThatFailedToLoadState();\n const isEmojiFiltered = useIsEmojiFiltered();\n\n return (emoji: DataEmoji): IsHiddenReturn => {\n const unified = emojiUnified(emoji);\n\n const failedToLoad = emojisThatFailedToLoad.has(unified);\n const filteredOut = isEmojiFiltered(unified);\n\n return {\n failedToLoad,\n filteredOut,\n hidden: failedToLoad || filteredOut\n };\n };\n}\n\ntype IsHiddenReturn = {\n failedToLoad: boolean;\n filteredOut: boolean;\n hidden: boolean;\n};\n","import { cx } from 'flairup';\nimport * as React from 'react';\n\nimport { ClassNames } from '../../DomUtils/classNames';\nimport {\n commonInteractionStyles,\n commonStyles,\n stylesheet\n} from '../../Stylesheet/stylesheet';\nimport {\n CategoryConfig,\n categoryFromCategoryConfig,\n categoryNameFromCategoryConfig\n} from '../../config/categoryConfig';\n\ntype Props = Readonly<{\n categoryConfig: CategoryConfig;\n children?: React.ReactNode;\n hidden?: boolean;\n hiddenOnSearch?: boolean;\n}>;\n\nexport function EmojiCategory({\n categoryConfig,\n children,\n hidden,\n hiddenOnSearch\n}: Props) {\n const category = categoryFromCategoryConfig(categoryConfig);\n const categoryName = categoryNameFromCategoryConfig(categoryConfig);\n\n return (\n <li\n className={cx(\n styles.category,\n hidden && commonStyles.hidden,\n hiddenOnSearch && commonInteractionStyles.hiddenOnSearch\n )}\n data-name={category}\n aria-label={categoryName}\n >\n <h2 className={cx(styles.label)}>{categoryName}</h2>\n <div className={cx(styles.categoryContent)}>{children}</div>\n </li>\n );\n}\n\nconst styles = stylesheet.create({\n category: {\n '.': ClassNames.category,\n ':not(:has(.epr-visible))': {\n display: 'none'\n }\n },\n categoryContent: {\n '.': ClassNames.categoryContent,\n display: 'grid',\n gridGap: '0',\n gridTemplateColumns: 'repeat(auto-fill, var(--epr-emoji-fullsize))',\n justifyContent: 'space-between',\n margin: 'var(--epr-category-padding)',\n position: 'relative'\n },\n label: {\n '.': ClassNames.label,\n alignItems: 'center',\n // @ts-expect-error - backdropFilter is a valid CSS property\n backdropFilter: 'blur(3px)',\n backgroundColor: 'var(--epr-category-label-bg-color)',\n color: 'var(--epr-category-label-text-color)',\n display: 'flex',\n fontSize: '16px',\n fontWeight: 'bold',\n height: 'var(--epr-category-label-height)',\n margin: '0',\n padding: 'var(--epr-category-label-padding)',\n position: 'sticky',\n textTransform: 'capitalize',\n top: '0',\n width: '100%',\n zIndex: 'var(--epr-category-label-z-index)'\n }\n});\n","import * as React from 'react';\n\nlet isEverMounted = false;\n\nexport function useIsEverMounted() {\n const [isMounted, setIsMounted] = React.useState(isEverMounted);\n\n React.useEffect(() => {\n setIsMounted(true);\n isEverMounted = true;\n }, []);\n\n return isMounted || isEverMounted;\n}\n","import * as React from 'react';\n\nimport { CategoryConfig } from '../../config/categoryConfig';\nimport {\n useEmojiStyleConfig,\n useGetEmojiUrlConfig,\n useSuggestedEmojisModeConfig\n} from '../../config/useConfig';\nimport { emojiByUnified } from '../../dataUtils/emojiSelectors';\nimport { getSuggested } from '../../dataUtils/suggested';\nimport { useIsEverMounted } from '../../hooks/useIsEverMounted';\nimport { useUpdateSuggested } from '../context/PickerContext';\nimport { ClickableEmoji } from '../emoji/Emoji';\n\nimport { EmojiCategory } from './EmojiCategory';\n\ntype Props = Readonly<{\n categoryConfig: CategoryConfig;\n}>;\n\nexport function Suggested({ categoryConfig }: Props) {\n const [suggestedUpdated] = useUpdateSuggested();\n const isMounted = useIsEverMounted();\n const suggestedEmojisModeConfig = useSuggestedEmojisModeConfig();\n const getEmojiUrl = useGetEmojiUrlConfig();\n const suggested = React.useMemo(\n () => getSuggested(suggestedEmojisModeConfig) ?? [],\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [suggestedUpdated, suggestedEmojisModeConfig]\n );\n const emojiStyle = useEmojiStyleConfig();\n\n if (!isMounted) {\n return null;\n }\n\n return (\n <EmojiCategory\n categoryConfig={categoryConfig}\n hiddenOnSearch\n hidden={suggested.length === 0}\n >\n {suggested.map(suggestedItem => {\n const emoji = emojiByUnified(suggestedItem.original);\n\n if (!emoji) {\n return null;\n }\n\n return (\n <ClickableEmoji\n showVariations={false}\n unified={suggestedItem.unified}\n emojiStyle={emojiStyle}\n emoji={emoji}\n key={suggestedItem.unified}\n getEmojiUrl={getEmojiUrl}\n />\n );\n })}\n </EmojiCategory>\n );\n}\n","import { cx } from 'flairup';\nimport * as React from 'react';\n\nimport { ClassNames } from '../../DomUtils/classNames';\nimport { stylesheet } from '../../Stylesheet/stylesheet';\nimport {\n Categories,\n CategoryConfig,\n categoryFromCategoryConfig\n} from '../../config/categoryConfig';\nimport {\n useCategoriesConfig,\n useEmojiStyleConfig,\n useGetEmojiUrlConfig,\n useLazyLoadEmojisConfig,\n useSkinTonesDisabledConfig\n} from '../../config/useConfig';\nimport { emojisByCategory, emojiUnified } from '../../dataUtils/emojiSelectors';\nimport { useIsEmojiDisallowed } from '../../hooks/useDisallowedEmojis';\nimport { useIsEmojiHidden } from '../../hooks/useIsEmojiHidden';\nimport {\n useActiveSkinToneState,\n useIsPastInitialLoad\n} from '../context/PickerContext';\nimport { ClickableEmoji } from '../emoji/Emoji';\n\nimport { EmojiCategory } from './EmojiCategory';\nimport { Suggested } from './Suggested';\n\nexport function EmojiList() {\n const categories = useCategoriesConfig();\n const renderdCategoriesCountRef = React.useRef(0);\n\n return (\n <ul className={cx(styles.emojiList)}>\n {categories.map(categoryConfig => {\n const category = categoryFromCategoryConfig(categoryConfig);\n\n if (category === Categories.SUGGESTED) {\n return <Suggested key={category} categoryConfig={categoryConfig} />;\n }\n\n return (\n <RenderCategory\n key={category}\n category={category}\n categoryConfig={categoryConfig}\n renderdCategoriesCountRef={renderdCategoriesCountRef}\n />\n );\n })}\n </ul>\n );\n}\n\nfunction RenderCategory({\n category,\n categoryConfig,\n renderdCategoriesCountRef\n}: {\n category: Categories;\n categoryConfig: CategoryConfig;\n renderdCategoriesCountRef: React.MutableRefObject<number>;\n}) {\n const isEmojiHidden = useIsEmojiHidden();\n const lazyLoadEmojis = useLazyLoadEmojisConfig();\n const emojiStyle = useEmojiStyleConfig();\n const isPastInitialLoad = useIsPastInitialLoad();\n const [activeSkinTone] = useActiveSkinToneState();\n const isEmojiDisallowed = useIsEmojiDisallowed();\n const getEmojiUrl = useGetEmojiUrlConfig();\n const showVariations = !useSkinTonesDisabledConfig();\n\n // Small trick to defer the rendering of all emoji categories until the first category is visible\n // This way the user gets to actually see something and not wait for the whole picker to render.\n const emojisToPush =\n !isPastInitialLoad && renderdCategoriesCountRef.current > 0\n ? []\n : emojisByCategory(category);\n\n if (emojisToPush.length > 0) {\n renderdCategoriesCountRef.current++;\n }\n\n let hiddenCounter = 0;\n\n const emojis = emojisToPush.map(emoji => {\n const unified = emojiUnified(emoji, activeSkinTone);\n const { failedToLoad, filteredOut, hidden } = isEmojiHidden(emoji);\n\n const isDisallowed = isEmojiDisallowed(emoji);\n\n if (hidden || isDisallowed) {\n hiddenCounter++;\n }\n\n if (isDisallowed) {\n return null;\n }\n\n return (\n <ClickableEmoji\n showVariations={showVariations}\n key={unified}\n emoji={emoji}\n unified={unified}\n hidden={failedToLoad}\n hiddenOnSearch={filteredOut}\n emojiStyle={emojiStyle}\n lazyLoad={lazyLoadEmojis}\n getEmojiUrl={getEmojiUrl}\n />\n );\n });\n\n return (\n <EmojiCategory\n categoryConfig={categoryConfig}\n // Indicates that there are no visible emojis\n // Hence, the category should be hidden\n hidden={hiddenCounter === emojis.length}\n >\n {emojis}\n </EmojiCategory>\n );\n}\n\nconst styles = stylesheet.create({\n emojiList: {\n '.': ClassNames.emojiList,\n listStyle: 'none',\n margin: '0',\n padding: '0'\n }\n});\n","import { cx } from 'flairup';\nimport * as React from 'react';\nimport { useEffect } from 'react';\n\nimport { ClassNames } from '../../DomUtils/classNames';\nimport { focusFirstVisibleEmoji } from '../../DomUtils/keyboardNavigation';\nimport {\n buttonFromTarget,\n elementHeight,\n emojiTrueOffsetTop,\n emojiTruOffsetLeft\n} from '../../DomUtils/selectors';\nimport { darkMode, stylesheet } from '../../Stylesheet/stylesheet';\nimport {\n useEmojiStyleConfig,\n useGetEmojiUrlConfig\n} from '../../config/useConfig';\nimport {\n emojiHasVariations,\n emojiUnified,\n emojiVariations\n} from '../../dataUtils/emojiSelectors';\nimport {\n useAnchoredEmojiRef,\n useBodyRef,\n useSetAnchoredEmojiRef,\n useVariationPickerRef\n} from '../context/ElementRefContext';\nimport { useEmojiVariationPickerState } from '../context/PickerContext';\nimport { ClickableEmoji } from '../emoji/Emoji';\n\nimport SVGTriangle from './svg/triangle.svg';\n\nenum Direction {\n Up,\n Down\n}\n\n// eslint-disable-next-line complexity\nexport function EmojiVariationPicker() {\n const AnchoredEmojiRef = useAnchoredEmojiRef();\n const VariationPickerRef = useVariationPickerRef();\n const [emoji] = useEmojiVariationPickerState();\n const emojiStyle = useEmojiStyleConfig();\n\n const { getTop, getMenuDirection } = useVariationPickerTop(\n VariationPickerRef\n );\n const setAnchoredEmojiRef = useSetAnchoredEmojiRef();\n const getPointerStyle = usePointerStyle(VariationPickerRef);\n const getEmojiUrl = useGetEmojiUrlConfig();\n\n const button = buttonFromTarget(AnchoredEmojiRef.current);\n\n const visible = Boolean(\n emoji &&\n button &&\n emojiHasVariations(emoji) &&\n button.classList.contains(ClassNames.emojiHasVariations)\n );\n\n useEffect(() => {\n if (!visible) {\n return;\n }\n\n focusFirstVisibleEmoji(VariationPickerRef.current);\n }, [VariationPickerRef, visible, AnchoredEmojiRef]);\n\n let top, pointerStyle;\n\n if (!visible && AnchoredEmojiRef.current) {\n setAnchoredEmojiRef(null);\n } else {\n top = getTop();\n pointerStyle = getPointerStyle();\n }\n\n return (\n <div\n ref={VariationPickerRef}\n className={cx(\n styles.variationPicker,\n getMenuDirection() === Direction.Down && styles.pointingUp,\n visible && styles.visible\n )}\n style={{ top }}\n >\n {visible && emoji\n ? [emojiUnified(emoji)]\n .concat(emojiVariations(emoji))\n .slice(0, 6)\n .map(unified => (\n <ClickableEmoji\n key={unified}\n emoji={emoji}\n unified={unified}\n emojiStyle={emojiStyle}\n showVariations={false}\n getEmojiUrl={getEmojiUrl}\n />\n ))\n : null}\n <div className={cx(styles.pointer)} style={pointerStyle} />\n </div>\n );\n}\n\nfunction usePointerStyle(VariationPickerRef: React.RefObject<HTMLElement>) {\n const AnchoredEmojiRef = useAnchoredEmojiRef();\n return function getPointerStyle() {\n const style: React.CSSProperties = {};\n if (!VariationPickerRef.current) {\n return style;\n }\n\n if (AnchoredEmojiRef.current) {\n const button = buttonFromTarget(AnchoredEmojiRef.current);\n\n const offsetLeft = emojiTruOffsetLeft(button);\n\n if (!button) {\n return style;\n }\n\n // half of the button\n style.left = offsetLeft + button?.clientWidth / 2;\n }\n\n return style;\n };\n}\n\nfunction useVariationPickerTop(\n VariationPickerRef: React.RefObject<HTMLElement>\n) {\n const AnchoredEmojiRef = useAnchoredEmojiRef();\n const BodyRef = useBodyRef();\n let direction = Direction.Up;\n\n return {\n getMenuDirection,\n getTop\n };\n\n function getMenuDirection() {\n return direction;\n }\n\n function getTop() {\n direction = Direction.Up;\n let emojiOffsetTop = 0;\n\n if (!VariationPickerRef.current) {\n return 0;\n }\n\n const height = elementHeight(VariationPickerRef.current);\n\n if (AnchoredEmojiRef.current) {\n const bodyRef = BodyRef.current;\n const button = buttonFromTarget(AnchoredEmojiRef.current);\n\n const buttonHeight = elementHeight(button);\n\n emojiOffsetTop = emojiTrueOffsetTop(button);\n\n const scrollTop = bodyRef?.scrollTop ?? 0;\n\n if (scrollTop > emojiOffsetTop - height) {\n direction = Direction.Down;\n emojiOffsetTop += buttonHeight + height;\n }\n }\n\n return emojiOffsetTop - height;\n }\n}\n\nconst styles = stylesheet.create({\n variationPicker: {\n '.': ClassNames.variationPicker,\n position: 'absolute',\n right: '15px',\n left: '15px',\n padding: '5px',\n boxShadow: '0px 2px 5px rgba(0, 0, 0, 0.2)',\n borderRadius: '3px',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-around',\n opacity: '0',\n visibility: 'hidden',\n pointerEvents: 'none',\n top: '-100%',\n border: '1px solid var(--epr-picker-border-color)',\n height: 'var(--epr-emoji-variation-picker-height)',\n zIndex: 'var(--epr-skin-variation-picker-z-index)',\n background: 'var(--epr-emoji-variation-picker-bg-color)',\n transform: 'scale(0.9)',\n transition: 'transform 0.1s ease-out, opacity 0.2s ease-out'\n },\n visible: {\n opacity: '1',\n visibility: 'visible',\n pointerEvents: 'all',\n transform: 'scale(1)'\n },\n pointingUp: {\n '.': 'pointing-up',\n transformOrigin: 'center 0%',\n transform: 'scale(0.9)'\n },\n '.pointing-up': {\n pointer: {\n top: '0',\n transform: 'rotate(180deg) translateY(100%) translateX(18px)'\n }\n },\n pointer: {\n '.': 'epr-emoji-pointer',\n content: '',\n position: 'absolute',\n width: '25px',\n height: '15px',\n backgroundRepeat: 'no-repeat',\n backgroundPosition: '0 0',\n backgroundSize: '50px 15px',\n top: '100%',\n transform: 'translateX(-18px)',\n backgroundImage: `url(${SVGTriangle})`\n },\n ...darkMode('pointer', {\n backgroundPosition: '-25px 0'\n })\n});\n","import { cx } from 'flairup';\nimport * as React from 'react';\n\nimport { ClassNames } from '../../DomUtils/classNames';\nimport {\n commonInteractionStyles,\n stylesheet\n} from '../../Stylesheet/stylesheet';\nimport { MOUSE_EVENT_SOURCE } from '../../config/useConfig';\nimport { useOnMouseMove } from '../../hooks/useDisallowMouseMove';\nimport { useMouseDownHandlers } from '../../hooks/useMouseDownHandlers';\nimport { useOnScroll } from '../../hooks/useOnScroll';\nimport { useBodyRef } from '../context/ElementRefContext';\n\nimport { EmojiList } from './EmojiList';\nimport { EmojiVariationPicker } from './EmojiVariationPicker';\n\nexport function Body() {\n const BodyRef = useBodyRef();\n useOnScroll(BodyRef);\n useMouseDownHandlers(BodyRef, MOUSE_EVENT_SOURCE.PICKER);\n useOnMouseMove();\n\n return (\n <div\n className={cx(styles.body, commonInteractionStyles.hiddenOnReactions)}\n ref={BodyRef}\n >\n <EmojiVariationPicker />\n <EmojiList />\n </div>\n );\n}\n\nconst styles = stylesheet.create({\n body: {\n '.': ClassNames.scrollBody,\n flex: '1',\n overflowY: 'scroll',\n overflowX: 'hidden',\n position: 'relative'\n }\n});\n","import { NullableElement } from './selectors';\n\nexport function detectEmojyPartiallyBelowFold(\n button: HTMLButtonElement,\n bodyRef: NullableElement\n): number {\n if (!button || !bodyRef) {\n return 0;\n }\n\n const buttonRect = button.getBoundingClientRect();\n const bodyRect = bodyRef.getBoundingClientRect();\n\n // If the element is obscured by at least half of its size\n return bodyRect.height - (buttonRect.y - bodyRect.y);\n}\n","import * as React from 'react';\nimport { useEffect } from 'react';\n\nimport { detectEmojyPartiallyBelowFold } from '../DomUtils/detectEmojyPartiallyBelowFold';\nimport { focusElement } from '../DomUtils/focusElement';\nimport {\n allUnifiedFromEmojiElement,\n buttonFromTarget\n} from '../DomUtils/selectors';\nimport { useBodyRef } from '../components/context/ElementRefContext';\nimport { PreviewEmoji } from '../components/footer/Preview';\n\nimport {\n useAllowMouseMove,\n useIsMouseDisallowed\n} from './useDisallowMouseMove';\n\nexport function useEmojiPreviewEvents(\n allow: boolean,\n setPreviewEmoji: React.Dispatch<React.SetStateAction<PreviewEmoji>>\n) {\n const BodyRef = useBodyRef();\n const isMouseDisallowed = useIsMouseDisallowed();\n const allowMouseMove = useAllowMouseMove();\n\n useEffect(() => {\n if (!allow) {\n return;\n }\n const bodyRef = BodyRef.current;\n\n bodyRef?.addEventListener('keydown', onEscape, {\n passive: true\n });\n\n bodyRef?.addEventListener('mouseover', onMouseOver, true);\n\n bodyRef?.addEventListener('focus', onEnter, true);\n\n bodyRef?.addEventListener('mouseout', onLeave, {\n passive: true\n });\n bodyRef?.addEventListener('blur', onLeave, true);\n\n function onEnter(e: FocusEvent) {\n const button = buttonFromTarget(e.target as HTMLElement);\n\n if (!button) {\n return onLeave();\n }\n\n const { unified, originalUnified } = allUnifiedFromEmojiElement(button);\n\n if (!unified || !originalUnified) {\n return onLeave();\n }\n\n setPreviewEmoji({\n unified,\n originalUnified\n });\n }\n function onLeave(e?: FocusEvent | MouseEvent) {\n if (e) {\n const relatedTarget = e.relatedTarget as HTMLElement;\n\n if (!buttonFromTarget(relatedTarget)) {\n return setPreviewEmoji(null);\n }\n }\n\n setPreviewEmoji(null);\n }\n function onEscape(e: KeyboardEvent) {\n if (e.key === 'Escape') {\n setPreviewEmoji(null);\n }\n }\n\n function onMouseOver(e: MouseEvent) {\n if (isMouseDisallowed()) {\n return;\n }\n\n const button = buttonFromTarget(e.target as HTMLElement);\n\n if (button) {\n const belowFoldByPx = detectEmojyPartiallyBelowFold(button, bodyRef);\n const buttonHeight = button.getBoundingClientRect().height;\n if (belowFoldByPx < buttonHeight / 2) {\n const { unified, originalUnified } = allUnifiedFromEmojiElement(\n button\n );\n\n if (!unified || !originalUnified) {\n return;\n }\n\n setPreviewEmoji({\n unified,\n originalUnified\n });\n\n return;\n }\n if (belowFoldByPx < buttonHeight) {\n button.scrollIntoView({ behavior: 'smooth', block: 'end' });\n return;\n }\n\n focusElement(button);\n }\n }\n\n return () => {\n bodyRef?.removeEventListener('mouseover', onMouseOver);\n bodyRef?.removeEventListener('mouseout', onLeave);\n bodyRef?.removeEventListener('focus', onEnter, true);\n bodyRef?.removeEventListener('blur', onLeave, true);\n bodyRef?.removeEventListener('keydown', onEscape);\n };\n }, [BodyRef, allow, setPreviewEmoji, isMouseDisallowed, allowMouseMove]);\n}\n","import { cx } from 'flairup';\nimport * as React from 'react';\n\nimport { stylesheet } from '../../Stylesheet/stylesheet';\n\nexport enum FlexDirection {\n ROW = 'FlexRow',\n COLUMN = 'FlexColumn'\n}\n\ntype Props = Readonly<{\n children: React.ReactNode;\n className?: string;\n style?: React.CSSProperties;\n direction?: FlexDirection;\n}>;\n\nexport default function Flex({\n children,\n className,\n style = {},\n direction = FlexDirection.ROW\n}: Props) {\n return (\n <div\n style={{ ...style }}\n className={cx(styles.flex, className, styles[direction])}\n >\n {children}\n </div>\n );\n}\n\nconst styles = stylesheet.create({\n flex: {\n display: 'flex'\n },\n [FlexDirection.ROW]: {\n flexDirection: 'row'\n },\n [FlexDirection.COLUMN]: {\n flexDirection: 'column'\n }\n});\n","import { cx } from 'flairup';\nimport * as React from 'react';\n\n\ntype Props = Readonly<{\n className?: string;\n style?: React.CSSProperties;\n}>;\n\nexport default function Space({ className, style = {} }: Props) {\n return <div style={{ flex: 1, ...style }} className={cx(className)} />;\n}\n","import * as React from 'react';\n\ntype Props = Readonly<{\n children: React.ReactNode;\n className?: string;\n style?: React.CSSProperties;\n}>;\n\nexport default function Absolute({ children, className, style }: Props) {\n return (\n <div style={{ ...style, position: 'absolute' }} className={className}>\n {children}\n </div>\n );\n}\n","import * as React from 'react';\n\ntype Props = Readonly<{\n children: React.ReactNode;\n className?: string;\n style?: React.CSSProperties;\n}>;\n\nexport default function Relative({ children, className, style }: Props) {\n return (\n <div style={{ ...style, position: 'relative' }} className={className}>\n {children}\n </div>\n );\n}\n","import { cx } from 'flairup';\nimport * as React from 'react';\n\nimport { stylesheet } from '../../../Stylesheet/stylesheet';\nimport { skinTonesNamed } from '../../../data/skinToneVariations';\nimport { SkinTones } from '../../../types/exposedTypes';\nimport { Button } from '../../atoms/Button';\n\ntype Props = {\n isOpen: boolean;\n onClick: () => void;\n isActive: boolean;\n skinToneVariation: SkinTones;\n style?: React.CSSProperties;\n};\n\n// eslint-disable-next-line complexity\nexport function BtnSkinToneVariation({\n isOpen,\n onClick,\n isActive,\n skinToneVariation,\n style\n}: Props) {\n return (\n <Button\n style={style}\n onClick={onClick}\n className={cx(\n `epr-tone-${skinToneVariation}`,\n styles.tone,\n !isOpen && styles.closedTone,\n isActive && styles.active\n )}\n tabIndex={isOpen ? 0 : -1}\n aria-pressed={isActive}\n aria-label={`Skin tone ${skinTonesNamed[skinToneVariation as SkinTones]}`}\n ></Button>\n );\n}\n\nconst styles = stylesheet.create({\n closedTone: {\n opacity: '0',\n zIndex: '0'\n },\n active: {\n '.': 'epr-active',\n zIndex: '1',\n opacity: '1'\n },\n tone: {\n '.': 'epr-tone',\n ':hover': {\n boxShadow: '0 0 0 3px var(--epr-active-skin-hover-color)'\n },\n ':focus': {\n boxShadow: '0 0 0 3px var(--epr-focus-bg-color)'\n },\n // @ts-ignore\n '&.epr-tone-neutral': {\n backgroundColor: '#ffd225'\n },\n '&.epr-tone-1f3fb': {\n backgroundColor: '#ffdfbd'\n },\n '&.epr-tone-1f3fc': {\n backgroundColor: '#e9c197'\n },\n '&.epr-tone-1f3fd': {\n backgroundColor: '#c88e62'\n },\n '&.epr-tone-1f3fe': {\n backgroundColor: '#a86637'\n },\n '&.epr-tone-1f3ff': {\n backgroundColor: '#60463a'\n }\n }\n});\n","/* eslint-disable complexity */\nimport { cx } from 'flairup';\nimport * as React from 'react';\n\nimport { ClassNames } from '../../../DomUtils/classNames';\nimport { stylesheet } from '../../../Stylesheet/stylesheet';\nimport { useSkinTonesDisabledConfig } from '../../../config/useConfig';\nimport skinToneVariations from '../../../data/skinToneVariations';\nimport { useCloseAllOpenToggles } from '../../../hooks/useCloseAllOpenToggles';\nimport { useFocusSearchInput } from '../../../hooks/useFocus';\nimport Absolute from '../../Layout/Absolute';\nimport Relative from '../../Layout/Relative';\nimport { useSkinTonePickerRef } from '../../context/ElementRefContext';\nimport {\n useActiveSkinToneState,\n useSkinToneFanOpenState\n} from '../../context/PickerContext';\n\nimport { BtnSkinToneVariation } from './BtnSkinToneVariation';\n\nconst ITEM_SIZE = 28;\n\ntype Props = {\n direction?: SkinTonePickerDirection;\n};\n\nexport function SkinTonePickerMenu() {\n return (\n <Relative style={{ height: ITEM_SIZE }}>\n <Absolute style={{ bottom: 0, right: 0 }}>\n <SkinTonePicker direction={SkinTonePickerDirection.VERTICAL} />\n </Absolute>\n </Relative>\n );\n}\n\nexport function SkinTonePicker({\n direction = SkinTonePickerDirection.HORIZONTAL\n}: Props) {\n const SkinTonePickerRef = useSkinTonePickerRef();\n const isDisabled = useSkinTonesDisabledConfig();\n const [isOpen, setIsOpen] = useSkinToneFanOpenState();\n const [activeSkinTone, setActiveSkinTone] = useActiveSkinToneState();\n const closeAllOpenToggles = useCloseAllOpenToggles();\n const focusSearchInput = useFocusSearchInput();\n\n if (isDisabled) {\n return null;\n }\n\n const fullWidth = `${ITEM_SIZE * skinToneVariations.length}px`;\n\n const expandedSize = isOpen ? fullWidth : ITEM_SIZE + 'px';\n\n const vertical = direction === SkinTonePickerDirection.VERTICAL;\n\n return (\n <Relative\n className={cx(\n styles.skinTones,\n vertical && styles.vertical,\n isOpen && styles.open,\n vertical && isOpen && styles.verticalShadow\n )}\n style={\n vertical\n ? { flexBasis: expandedSize, height: expandedSize }\n : { flexBasis: expandedSize }\n }\n >\n <div className={cx(styles.select)} ref={SkinTonePickerRef}>\n {skinToneVariations.map((skinToneVariation, i) => {\n const active = skinToneVariation === activeSkinTone;\n\n return (\n <BtnSkinToneVariation\n key={skinToneVariation}\n skinToneVariation={skinToneVariation}\n isOpen={isOpen}\n style={{\n transform: cx(\n vertical\n ? `translateY(-${i * (isOpen ? ITEM_SIZE : 0)}px)`\n : `translateX(-${i * (isOpen ? ITEM_SIZE : 0)}px)`,\n isOpen && active && 'scale(1.3)'\n )\n }}\n isActive={active}\n onClick={() => {\n if (isOpen) {\n setActiveSkinTone(skinToneVariation);\n focusSearchInput();\n } else {\n setIsOpen(true);\n }\n closeAllOpenToggles();\n }}\n />\n );\n })}\n </div>\n </Relative>\n );\n}\n\nexport enum SkinTonePickerDirection {\n VERTICAL = ClassNames.vertical,\n HORIZONTAL = ClassNames.horizontal\n}\n\nconst styles = stylesheet.create({\n skinTones: {\n '.': 'epr-skin-tones',\n '--': {\n '--epr-skin-tone-size': '15px'\n },\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'flex-end',\n transition: 'all 0.3s ease-in-out',\n padding: '10px 0'\n },\n vertical: {\n padding: '9px',\n alignItems: 'flex-end',\n flexDirection: 'column',\n borderRadius: '6px',\n border: '1px solid var(--epr-bg-color)'\n },\n verticalShadow: {\n boxShadow: '0px 0 7px var(--epr-picker-border-color)'\n },\n open: {\n // @ts-ignore\n backdropFilter: 'blur(5px)',\n background: 'var(--epr-skin-tone-picker-menu-color)',\n // @ts-ignore\n '.epr-active:after': {\n content: '',\n position: 'absolute',\n top: '-2px',\n left: '-2px',\n right: '-2px',\n bottom: '-2px',\n borderRadius: '5px',\n border: '1px solid var(--epr-active-skin-tone-indicator-border-color)'\n }\n },\n select: {\n '.': 'epr-skin-tone-select',\n position: 'relative',\n width: 'var(--epr-skin-tone-size)',\n height: 'var(--epr-skin-tone-size)',\n // @ts-ignore\n '> button': {\n width: 'var(--epr-skin-tone-size)',\n display: 'block',\n cursor: 'pointer',\n borderRadius: '4px',\n height: 'var(--epr-skin-tone-size)',\n position: 'absolute',\n right: '0',\n transition: 'transform 0.3s ease-in-out, opacity 0.35s ease-in-out',\n zIndex: '0',\n boxShadow: '0 0 0 0px var(--epr-active-skin-hover-color)'\n }\n }\n});\n","import { cx } from 'flairup';\nimport * as React from 'react';\nimport { useState } from 'react';\n\nimport {\n commonInteractionStyles,\n stylesheet\n} from '../../Stylesheet/stylesheet';\nimport {\n useEmojiStyleConfig,\n useGetEmojiUrlConfig,\n usePreviewConfig\n} from '../../config/useConfig';\nimport {\n emojiByUnified,\n emojiName,\n emojiUnified\n} from '../../dataUtils/emojiSelectors';\nimport { useEmojiPreviewEvents } from '../../hooks/useEmojiPreviewEvents';\nimport { useIsSkinToneInPreview } from '../../hooks/useShouldShowSkinTonePicker';\nimport Flex from '../Layout/Flex';\nimport Space from '../Layout/Space';\nimport { useEmojiVariationPickerState } from '../context/PickerContext';\nimport { ViewOnlyEmoji } from '../emoji/ViewOnlyEmoji';\nimport { SkinTonePickerMenu } from '../header/SkinTonePicker/SkinTonePicker';\n\nexport function Preview() {\n const previewConfig = usePreviewConfig();\n const isSkinToneInPreview = useIsSkinToneInPreview();\n\n if (!previewConfig.showPreview) {\n return null;\n }\n\n return (\n <Flex\n className={cx(styles.preview, commonInteractionStyles.hiddenOnReactions)}\n >\n <PreviewBody />\n <Space />\n {isSkinToneInPreview ? <SkinTonePickerMenu /> : null}\n </Flex>\n );\n}\n\nexport function PreviewBody() {\n const previewConfig = usePreviewConfig();\n const [previewEmoji, setPreviewEmoji] = useState<PreviewEmoji>(null);\n const emojiStyle = useEmojiStyleConfig();\n const [variationPickerEmoji] = useEmojiVariationPickerState();\n const getEmojiUrl = useGetEmojiUrlConfig();\n\n useEmojiPreviewEvents(previewConfig.showPreview, setPreviewEmoji);\n\n const emoji = emojiByUnified(\n previewEmoji?.unified ?? previewEmoji?.originalUnified\n );\n\n const show = emoji != null && previewEmoji != null;\n\n return <PreviewContent />;\n\n function PreviewContent() {\n const defaultEmoji =\n variationPickerEmoji ?? emojiByUnified(previewConfig.defaultEmoji);\n if (!defaultEmoji) {\n return null;\n }\n const defaultText = variationPickerEmoji\n ? emojiName(variationPickerEmoji)\n : previewConfig.defaultCaption;\n\n return (\n <>\n <div>\n {show ? (\n <ViewOnlyEmoji\n unified={previewEmoji?.unified as string}\n emoji={emoji}\n emojiStyle={emojiStyle}\n size={45}\n getEmojiUrl={getEmojiUrl}\n className={cx(styles.emoji)}\n />\n ) : defaultEmoji ? (\n <ViewOnlyEmoji\n unified={emojiUnified(defaultEmoji)}\n emoji={defaultEmoji}\n emojiStyle={emojiStyle}\n size={45}\n getEmojiUrl={getEmojiUrl}\n className={cx(styles.emoji)}\n />\n ) : null}\n </div>\n <div className={cx(styles.label)}>\n {show ? emojiName(emoji) : defaultText}\n </div>\n </>\n );\n }\n}\n\nexport type PreviewEmoji = null | {\n unified: string;\n originalUnified: string;\n};\n\nconst styles = stylesheet.create({\n preview: {\n alignItems: 'center',\n borderTop: '1px solid var(--epr-preview-border-color)',\n height: 'var(--epr-preview-height)',\n padding: '0 var(--epr-horizontal-padding)',\n position: 'relative',\n zIndex: 'var(--epr-preview-z-index)'\n },\n label: {\n color: 'var(--epr-preview-text-color)',\n fontSize: 'var(--epr-preview-text-size)',\n padding: 'var(--epr-preview-text-padding)',\n textTransform: 'capitalize'\n },\n emoji: {\n padding: '0'\n }\n});\n","export function categoryNameFromDom($category: Element | null): string | null {\n return $category?.getAttribute('data-name') ?? null;\n}\n","import { useEffect } from 'react';\n\nimport { categoryNameFromDom } from '../DomUtils/categoryNameFromDom';\nimport { asSelectors, ClassNames } from '../DomUtils/classNames';\nimport { useBodyRef } from '../components/context/ElementRefContext';\n\nexport function useActiveCategoryScrollDetection(\n setActiveCategory: (category: string) => void\n) {\n const BodyRef = useBodyRef();\n\n useEffect(() => {\n const visibleCategories = new Map();\n const bodyRef = BodyRef.current;\n const observer = new IntersectionObserver(\n entries => {\n if (!bodyRef) {\n return;\n }\n\n for (const entry of entries) {\n const id = categoryNameFromDom(entry.target);\n visibleCategories.set(id, entry.intersectionRatio);\n }\n\n const ratios = Array.from(visibleCategories);\n const lastCategory = ratios[ratios.length - 1];\n\n if (lastCategory[1] == 1) {\n return setActiveCategory(lastCategory[0]);\n }\n\n for (const [id, ratio] of ratios) {\n if (ratio) {\n setActiveCategory(id);\n break;\n }\n }\n },\n {\n threshold: [0, 1]\n }\n );\n bodyRef?.querySelectorAll(asSelectors(ClassNames.category)).forEach(el => {\n observer.observe(el);\n });\n }, [BodyRef, setActiveCategory]);\n}\n","import { scrollTo } from '../DomUtils/scrollTo';\nimport { NullableElement } from '../DomUtils/selectors';\nimport {\n useBodyRef,\n usePickerMainRef\n} from '../components/context/ElementRefContext';\n\nexport function useScrollCategoryIntoView() {\n const BodyRef = useBodyRef();\n const PickerMainRef = usePickerMainRef();\n\n return function scrollCategoryIntoView(category: string): void {\n if (!BodyRef.current) {\n return;\n }\n const $category = BodyRef.current?.querySelector(\n `[data-name=\"${category}\"]`\n ) as NullableElement;\n\n if (!$category) {\n return;\n }\n\n const offsetTop = $category.offsetTop || 0;\n\n scrollTo(PickerMainRef.current, offsetTop);\n };\n}\n","import { useCustomEmojisConfig } from '../config/useConfig';\n\nexport function useShouldHideCustomEmojis() {\n const customCategoryConfig = useCustomEmojisConfig();\n\n if (!customCategoryConfig) {\n return false;\n }\n\n return customCategoryConfig.length === 0;\n}\n","import { cx } from 'flairup';\nimport * as React from 'react';\n\nimport { ClassNames } from '../../DomUtils/classNames';\nimport {\n commonInteractionStyles,\n darkMode,\n stylesheet\n} from '../../Stylesheet/stylesheet';\nimport {\n CategoryConfig,\n categoryNameFromCategoryConfig\n} from '../../config/categoryConfig';\nimport { Button } from '../atoms/Button';\n\nimport SVGNavigation from './svg/CategoryNav.svg';\n\ntype Props = {\n isActiveCategory: boolean;\n category: string;\n allowNavigation: boolean;\n onClick: () => void;\n categoryConfig: CategoryConfig;\n};\n\nexport function CategoryButton({\n isActiveCategory,\n category,\n allowNavigation,\n categoryConfig,\n onClick\n}: Props) {\n return (\n <Button\n tabIndex={allowNavigation ? 0 : -1}\n className={cx(\n styles.catBtn,\n commonInteractionStyles.categoryBtn,\n `epr-icn-${category}`,\n {\n [ClassNames.active]: isActiveCategory\n }\n )}\n onClick={onClick}\n aria-label={categoryNameFromCategoryConfig(categoryConfig)}\n aria-selected={isActiveCategory}\n role=\"tab\"\n aria-controls=\"epr-category-nav-id\"\n />\n );\n}\n\nconst DarkActivePositionY = {\n backgroundPositionY: 'calc(var(--epr-category-navigation-button-size) * 3)'\n};\nconst DarkPositionY = {\n backgroundPositionY: 'calc(var(--epr-category-navigation-button-size) * 2)'\n};\n\nconst DarkInactivePosition = {\n ':not(.epr-search-active)': {\n catBtn: {\n ':hover': DarkActivePositionY,\n '&.epr-active': DarkActivePositionY\n }\n }\n};\n\nconst styles = stylesheet.create({\n catBtn: {\n '.': 'epr-cat-btn',\n display: 'inline-block',\n transition: 'opacity 0.2s ease-in-out',\n position: 'relative',\n height: 'var(--epr-category-navigation-button-size)',\n width: 'var(--epr-category-navigation-button-size)',\n backgroundSize: 'calc(var(--epr-category-navigation-button-size) * 10)',\n outline: 'none',\n backgroundPosition: '0 0',\n backgroundImage: `url(${SVGNavigation})`,\n ':focus:before': {\n content: '',\n position: 'absolute',\n top: '-2px',\n left: '-2px',\n right: '-2px',\n bottom: '-2px',\n border: '2px solid var(--epr-category-icon-active-color)',\n borderRadius: '50%'\n },\n // @ts-ignore\n '&.epr-icn-suggested': {\n backgroundPositionX:\n 'calc(var(--epr-category-navigation-button-size) * -8)'\n },\n '&.epr-icn-custom': {\n backgroundPositionX:\n 'calc(var(--epr-category-navigation-button-size) * -9)'\n },\n '&.epr-icn-activities': {\n backgroundPositionX:\n 'calc(var(--epr-category-navigation-button-size) * -4)'\n },\n '&.epr-icn-animals_nature': {\n backgroundPositionX:\n 'calc(var(--epr-category-navigation-button-size) * -1)'\n },\n '&.epr-icn-flags': {\n backgroundPositionX:\n 'calc(var(--epr-category-navigation-button-size) * -7)'\n },\n '&.epr-icn-food_drink': {\n backgroundPositionX:\n 'calc(var(--epr-category-navigation-button-size) * -2)'\n },\n '&.epr-icn-objects': {\n backgroundPositionX:\n 'calc(var(--epr-category-navigation-button-size) * -5)'\n },\n '&.epr-icn-smileys_people': {\n backgroundPositionX: '0px'\n },\n '&.epr-icn-symbols': {\n backgroundPositionX:\n 'calc(var(--epr-category-navigation-button-size) * -6)'\n },\n '&.epr-icn-travel_places': {\n backgroundPositionX:\n 'calc(var(--epr-category-navigation-button-size) * -3)'\n }\n },\n ...darkMode('catBtn', DarkPositionY),\n '.epr-dark-theme': {\n ...DarkInactivePosition\n },\n '.epr-auto-theme': {\n ...DarkInactivePosition\n }\n});\n","import { cx } from 'flairup';\nimport * as React from 'react';\nimport { useState } from 'react';\n\nimport { stylesheet } from '../../Stylesheet/stylesheet';\nimport { categoryFromCategoryConfig } from '../../config/categoryConfig';\nimport { useCategoriesConfig } from '../../config/useConfig';\nimport { useActiveCategoryScrollDetection } from '../../hooks/useActiveCategoryScrollDetection';\nimport useIsSearchMode from '../../hooks/useIsSearchMode';\nimport { useScrollCategoryIntoView } from '../../hooks/useScrollCategoryIntoView';\nimport { useShouldHideCustomEmojis } from '../../hooks/useShouldHideCustomEmojis';\nimport { isCustomCategory } from '../../typeRefinements/typeRefinements';\nimport { useCategoryNavigationRef } from '../context/ElementRefContext';\n\nimport { CategoryButton } from './CategoryButton';\n\nexport function CategoryNavigation() {\n const [activeCategory, setActiveCategory] = useState<string | null>(null);\n const scrollCategoryIntoView = useScrollCategoryIntoView();\n useActiveCategoryScrollDetection(setActiveCategory);\n const isSearchMode = useIsSearchMode();\n\n const categoriesConfig = useCategoriesConfig();\n const CategoryNavigationRef = useCategoryNavigationRef();\n const hideCustomCategory = useShouldHideCustomEmojis();\n\n return (\n <div\n className={cx(styles.nav)}\n role=\"tablist\"\n aria-label=\"Category navigation\"\n id=\"epr-category-nav-id\"\n ref={CategoryNavigationRef}\n >\n {categoriesConfig.map(categoryConfig => {\n const category = categoryFromCategoryConfig(categoryConfig);\n const isActiveCategory = category === activeCategory;\n\n if (isCustomCategory(categoryConfig) && hideCustomCategory) {\n return null;\n }\n\n const allowNavigation = !isSearchMode && !isActiveCategory;\n\n return (\n <CategoryButton\n key={category}\n category={category}\n isActiveCategory={isActiveCategory}\n allowNavigation={allowNavigation}\n categoryConfig={categoryConfig}\n onClick={() => {\n setActiveCategory(category);\n scrollCategoryIntoView(category);\n }}\n />\n );\n })}\n </div>\n );\n}\n\nconst styles = stylesheet.create({\n nav: {\n '.': 'epr-category-nav',\n display: 'flex',\n flexDirection: 'row',\n justifyContent: 'space-around',\n padding: 'var(--epr-header-padding)'\n },\n '.epr-search-active': {\n nav: {\n opacity: '0.3',\n cursor: 'default',\n pointerEvents: 'none'\n }\n },\n '.epr-main:has(input:not(:placeholder-shown))': {\n nav: {\n opacity: '0.3',\n cursor: 'default',\n pointerEvents: 'none'\n }\n }\n});\n","import { cx } from 'flairup';\nimport * as React from 'react';\n\nimport {\n commonInteractionStyles,\n darkMode,\n stylesheet\n} from '../../../Stylesheet/stylesheet';\nimport { useClearSearch } from '../../../hooks/useFilter';\nimport { Button } from '../../atoms/Button';\n\nimport SVGTimes from './svg/times.svg';\n\nexport function BtnClearSearch() {\n const clearSearch = useClearSearch();\n\n return (\n <Button\n className={cx(\n styles.btnClearSearch,\n commonInteractionStyles.visibleOnSearchOnly\n )}\n onClick={clearSearch}\n aria-label=\"Clear\"\n title=\"Clear\"\n >\n <div className={cx(styles.icnClearnSearch)} />\n </Button>\n );\n}\n\nconst HoverDark = {\n ':hover': {\n '> .epr-icn-clear-search': {\n backgroundPositionY: '-60px'\n }\n }\n};\n\nconst styles = stylesheet.create({\n btnClearSearch: {\n '.': 'epr-btn-clear-search',\n position: 'absolute',\n right: 'var(--epr-search-bar-inner-padding)',\n height: '30px',\n width: '30px',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n top: '50%',\n transform: 'translateY(-50%)',\n padding: '0',\n borderRadius: '50%',\n ':hover': {\n background: 'var(--epr-hover-bg-color)'\n },\n ':focus': {\n background: 'var(--epr-hover-bg-color)'\n }\n },\n icnClearnSearch: {\n '.': 'epr-icn-clear-search',\n backgroundColor: 'transparent',\n backgroundRepeat: 'no-repeat',\n backgroundSize: '20px',\n height: '20px',\n width: '20px',\n backgroundImage: `url(${SVGTimes})`,\n ':hover': {\n backgroundPositionY: '-20px'\n },\n ':focus': {\n backgroundPositionY: '-20px'\n }\n },\n ...darkMode('icnClearnSearch', {\n backgroundPositionY: '-40px'\n }),\n ...darkMode('btnClearSearch', HoverDark)\n});\n","import * as React from 'react';\n\nimport { ClassNames, asSelectors } from '../../../DomUtils/classNames';\nimport { getNormalizedSearchTerm } from '../../../hooks/useFilter';\n\nconst SCOPE = `${asSelectors(ClassNames.emojiPicker)} ${asSelectors(\n ClassNames.emojiList\n)}`;\n\nconst EMOJI_BUTTON = ['button', asSelectors(ClassNames.emoji)].join('');\nconst CATEGORY = asSelectors(ClassNames.category);\n\nexport function CssSearch({ value }: { value: undefined | string }) {\n if (!value) {\n return null;\n }\n\n const q = genQuery(value);\n\n return (\n <style>{`\n ${SCOPE} ${EMOJI_BUTTON} {\n display: none;\n }\n\n\n ${SCOPE} ${q} {\n display: flex;\n }\n\n ${SCOPE} ${CATEGORY}:not(:has(${q})) {\n display: none;\n }\n `}</style>\n );\n}\n\nfunction genQuery(value: string): string {\n return [\n EMOJI_BUTTON,\n '[data-full-name*=\"',\n getNormalizedSearchTerm(value),\n '\"]'\n ].join('');\n}\n","import { cx } from 'flairup';\nimport * as React from 'react';\n\nimport { darkMode, stylesheet } from '../../../Stylesheet/stylesheet';\n\nimport SVGMagnifier from './svg/magnifier.svg';\n\nexport function IcnSearch() {\n return <div className={cx(styles.icnSearch)} />;\n}\n\nconst styles = stylesheet.create({\n icnSearch: {\n '.': 'epr-icn-search',\n content: '',\n position: 'absolute',\n top: '50%',\n left: 'var(--epr-search-bar-inner-padding)',\n transform: 'translateY(-50%)',\n width: '20px',\n height: '20px',\n backgroundRepeat: 'no-repeat',\n backgroundPosition: '0 0',\n backgroundSize: '20px',\n backgroundImage: `url(${SVGMagnifier})`\n },\n ...darkMode('icnSearch', {\n backgroundPositionY: '-20px'\n })\n});\n","import { cx } from 'flairup';\nimport * as React from 'react';\nimport { useState } from 'react';\n\nimport { darkMode, stylesheet } from '../../../Stylesheet/stylesheet';\nimport {\n useAutoFocusSearchConfig,\n useSearchDisabledConfig,\n useSearchPlaceHolderConfig\n} from '../../../config/useConfig';\nimport { useCloseAllOpenToggles } from '../../../hooks/useCloseAllOpenToggles';\nimport { useFilter } from '../../../hooks/useFilter';\nimport { useIsSkinToneInSearch } from '../../../hooks/useShouldShowSkinTonePicker';\nimport Flex from '../../Layout/Flex';\nimport Relative from '../../Layout/Relative';\nimport { useSearchInputRef } from '../../context/ElementRefContext';\nimport { SkinTonePicker } from '../SkinTonePicker/SkinTonePicker';\n\nimport { BtnClearSearch } from './BtnClearSearch';\nimport { CssSearch } from './CssSearch';\nimport { IcnSearch } from './IcnSearch';\nimport SVGTimes from './svg/times.svg';\n\nexport function SearchContainer() {\n const searchDisabled = useSearchDisabledConfig();\n\n const isSkinToneInSearch = useIsSkinToneInSearch();\n\n if (searchDisabled) {\n return null;\n }\n\n return (\n <Flex className={cx(styles.overlay)}>\n <Search />\n\n {isSkinToneInSearch ? <SkinTonePicker /> : null}\n </Flex>\n );\n}\n\nexport function Search() {\n const [inc, setInc] = useState(0);\n const closeAllOpenToggles = useCloseAllOpenToggles();\n const SearchInputRef = useSearchInputRef();\n const placeholder = useSearchPlaceHolderConfig();\n const autoFocus = useAutoFocusSearchConfig();\n const { statusSearchResults, searchTerm, onChange } = useFilter();\n\n const input = SearchInputRef?.current;\n const value = input?.value;\n\n return (\n <Relative className={cx(styles.searchContainer)}>\n <CssSearch value={value} />\n <input\n // eslint-disable-next-line jsx-a11y/no-autofocus\n autoFocus={autoFocus}\n aria-label={'Type to search for an emoji'}\n onFocus={closeAllOpenToggles}\n className={cx(styles.search)}\n type=\"text\"\n aria-controls=\"epr-search-id\"\n placeholder={placeholder}\n onChange={event => {\n setInc(inc + 1);\n setTimeout(() => {\n onChange(event?.target?.value ?? value);\n });\n }}\n ref={SearchInputRef}\n />\n {searchTerm ? (\n <div\n role=\"status\"\n className={cx('epr-status-search-results', styles.visuallyHidden)}\n aria-live=\"polite\"\n id=\"epr-search-id\"\n aria-atomic=\"true\"\n >\n {statusSearchResults}\n </div>\n ) : null}\n <IcnSearch />\n <BtnClearSearch />\n </Relative>\n );\n}\n\nconst styles = stylesheet.create({\n overlay: {\n padding: 'var(--epr-header-padding)',\n zIndex: 'var(--epr-header-overlay-z-index)'\n },\n searchContainer: {\n '.': 'epr-search-container',\n flex: '1',\n display: 'block',\n minWidth: '0'\n },\n visuallyHidden: {\n clip: 'rect(0 0 0 0)',\n clipPath: 'inset(50%)',\n height: '1px',\n overflow: 'hidden',\n position: 'absolute',\n whiteSpace: 'nowrap',\n width: '1px'\n },\n search: {\n outline: 'none',\n transition: 'all 0.2s ease-in-out',\n color: 'var(--epr-search-input-text-color)',\n borderRadius: 'var(--epr-search-input-border-radius)',\n padding: 'var(--epr-search-input-padding)',\n height: 'var(--epr-search-input-height)',\n backgroundColor: 'var(--epr-search-input-bg-color)',\n border: '1px solid var(--epr-search-input-bg-color)',\n width: '100%',\n ':focus': {\n backgroundColor: 'var(--epr-search-input-bg-color-active)',\n border: '1px solid var(--epr-search-border-color)'\n },\n '::placeholder': {\n color: 'var(--epr-search-input-placeholder-color)'\n }\n },\n\n btnClearSearch: {\n '.': 'epr-btn-clear-search',\n position: 'absolute',\n right: 'var(--epr-search-bar-inner-padding)',\n height: '30px',\n width: '30px',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n top: '50%',\n transform: 'translateY(-50%)',\n padding: '0',\n borderRadius: '50%',\n ':hover': {\n background: 'var(--epr-hover-bg-color)'\n },\n ':focus': {\n background: 'var(--epr-hover-bg-color)'\n }\n },\n icnClearnSearch: {\n '.': 'epr-icn-clear-search',\n backgroundColor: 'transparent',\n backgroundRepeat: 'no-repeat',\n backgroundSize: '20px',\n height: '20px',\n width: '20px',\n backgroundImage: `url(${SVGTimes})`,\n ':hover': {\n backgroundPositionY: '-20px'\n },\n ':focus': {\n backgroundPositionY: '-20px'\n }\n },\n ...darkMode('icnClearnSearch', {\n backgroundPositionY: '-40px'\n }),\n ...darkMode('btnClearSearch', {\n ':hover > .epr-icn-clear-search': {\n backgroundPositionY: '-60px'\n }\n })\n});\n","import { cx } from 'flairup';\nimport * as React from 'react';\n\nimport { commonInteractionStyles } from '../../Stylesheet/stylesheet';\nimport Relative from '../Layout/Relative';\nimport { CategoryNavigation } from '../navigation/CategoryNavigation';\n\nimport { SearchContainer } from './Search/Search';\n\nexport function Header() {\n return (\n <Relative\n className={cx('epr-header', commonInteractionStyles.hiddenOnReactions)}\n >\n <SearchContainer />\n <CategoryNavigation />\n </Relative>\n );\n}\n","import * as React from 'react';\n\nimport { PickerStyleTag } from './Stylesheet/stylesheet';\nimport { Reactions } from './components/Reactions/Reactions';\nimport { Body } from './components/body/Body';\nimport { ElementRefContextProvider } from './components/context/ElementRefContext';\nimport { PickerConfigProvider } from './components/context/PickerConfigContext';\nimport { useReactionsModeState } from './components/context/PickerContext';\nimport { Preview } from './components/footer/Preview';\nimport { Header } from './components/header/Header';\nimport PickerMain from './components/main/PickerMain';\nimport { compareConfig } from './config/compareConfig';\nimport { useOpenConfig } from './config/useConfig';\n\nimport { PickerProps } from './index';\n\nfunction EmojiPicker(props: PickerProps) {\n return (\n <ElementRefContextProvider>\n <PickerStyleTag />\n <PickerConfigProvider {...props}>\n <ContentControl />\n </PickerConfigProvider>\n </ElementRefContextProvider>\n );\n}\n\nfunction ContentControl() {\n const [reactionsDefaultOpen] = useReactionsModeState();\n const [renderAll, setRenderAll] = React.useState(!reactionsDefaultOpen);\n const isOpen = useOpenConfig();\n\n React.useEffect(() => {\n if (!renderAll) {\n setRenderAll(true);\n }\n }, [renderAll]);\n\n if (!isOpen) {\n return null;\n }\n\n return (\n <PickerMain>\n <Reactions />\n {renderAll ? (\n <>\n <Header />\n <Body />\n <Preview />\n </>\n ) : null}\n </PickerMain>\n );\n}\n\n// eslint-disable-next-line complexity\nexport default React.memo(EmojiPicker, compareConfig);\n","import * as React from 'react';\n\nexport default class ErrorBoundary extends React.Component<\n { children: React.ReactNode },\n { hasError: boolean }\n> {\n constructor(props: { children: React.ReactNode }) {\n super(props);\n this.state = { hasError: false };\n }\n\n static getDerivedStateFromError() {\n return { hasError: true };\n }\n\n componentDidCatch(error: Error, errorInfo: any) {\n // eslint-disable-next-line no-console\n console.error('Emoji Picker React failed to render:', error, errorInfo);\n }\n\n render() {\n if (this.state.hasError) {\n return null;\n }\n\n return this.props.children;\n }\n}\n","import * as React from 'react';\n\nimport { EmojiStyle } from '../../types/exposedTypes';\n\nimport { GetEmojiUrl } from './BaseEmojiProps';\nimport { ViewOnlyEmoji } from './ViewOnlyEmoji';\n\nexport function ExportedEmoji({\n unified,\n size = 32,\n emojiStyle = EmojiStyle.APPLE,\n lazyLoad = false,\n getEmojiUrl,\n emojiUrl\n}: {\n unified: string;\n emojiStyle?: EmojiStyle;\n size?: number;\n lazyLoad?: boolean;\n getEmojiUrl?: GetEmojiUrl;\n emojiUrl?: string;\n}) {\n if (!unified && !emojiUrl && !getEmojiUrl) {\n return null;\n }\n\n return (\n <ViewOnlyEmoji\n unified={unified}\n size={size}\n emojiStyle={emojiStyle}\n lazyLoad={lazyLoad}\n getEmojiUrl={emojiUrl ? () => emojiUrl : getEmojiUrl}\n />\n );\n}\n","import * as React from 'react';\n\nimport EmojiPickerReact from './EmojiPickerReact';\nimport ErrorBoundary from './components/ErrorBoundary';\nimport { PickerConfig } from './config/config';\nimport {\n MutableConfigContext,\n useDefineMutableConfig\n} from './config/mutableConfig';\n\nexport { ExportedEmoji as Emoji } from './components/emoji/ExportedEmoji';\n\nexport {\n EmojiStyle,\n SkinTones,\n Theme,\n Categories,\n EmojiClickData,\n SuggestionMode,\n SkinTonePickerLocation\n} from './types/exposedTypes';\n\nexport interface PickerProps extends PickerConfig {}\n\nexport default function EmojiPicker(props: PickerProps) {\n const MutableConfigRef = useDefineMutableConfig({\n onEmojiClick: props.onEmojiClick,\n onReactionClick: props.onReactionClick\n });\n\n return (\n <ErrorBoundary>\n <MutableConfigContext.Provider value={MutableConfigRef}>\n <EmojiPickerReact {...props} />\n </MutableConfigContext.Provider>\n </ErrorBoundary>\n );\n}\n"],"names":["ClassNames","asSelectors","classNames","Array","_len","_key","arguments","map","c","join","stylesheet","createSheet","hidden","display","opacity","pointerEvents","visibility","overflow","commonStyles","create","_extends","PickerStyleTag","React","suppressHydrationWarning","dangerouslySetInnerHTML","__html","getStyle","commonInteractionStyles","categoryBtn","backgroundPositionY","hiddenOnSearch","visibleOnSearchOnly","hiddenOnReactions","transition","height","width","darkMode","key","value","_eprDarkTheme","_eprAutoTheme","compareConfig","prev","next","prevCustomEmojis","_prev$customEmojis","customEmojis","nextCustomEmojis","_next$customEmojis","open","emojiVersion","reactionsDefaultOpen","searchPlaceHolder","searchPlaceholder","defaultSkinTone","skinTonesDisabled","autoFocusSearch","emojiStyle","theme","suggestedEmojisMode","lazyLoadEmojis","className","style","searchDisabled","skinTonePickerLocation","length","DEFAULT_REACTIONS","SuggestionMode","EmojiStyle","Theme","SkinTones","Categories","SkinTonePickerLocation","categoriesOrdered","SUGGESTED","CUSTOM","SMILEYS_PEOPLE","ANIMALS_NATURE","FOOD_DRINK","TRAVEL_PLACES","ACTIVITIES","OBJECTS","SYMBOLS","FLAGS","SuggestedRecent","name","category","configByCategory","_configByCategory","baseCategoriesConfig","modifiers","categoryFromCategoryConfig","categoryNameFromCategoryConfig","mergeCategoriesConfig","userCategoriesConfig","extra","suggestionMode","RECENT","base","_userCategoriesConfig","getBaseConfigByCategory","modifier","Object","assign","CDN_URL_APPLE","CDN_URL_FACEBOOK","CDN_URL_TWITTER","CDN_URL_GOOGLE","cdnUrl","TWITTER","GOOGLE","FACEBOOK","APPLE","skinToneVariations","NEUTRAL","LIGHT","MEDIUM_LIGHT","MEDIUM","MEDIUM_DARK","DARK","skinTonesNamed","entries","reduce","acc","_ref","skinTonesMapped","mapped","skinTone","_Object$assign","EmojiProperties","alphaNumericEmojiIndex","setTimeout","allEmojis","searchIndex","emoji","indexEmoji","joinedNameString","emojiNames","flat","toLowerCase","replace","split","forEach","char","_alphaNumericEmojiInd","emojiUnified","_emoji$EmojiPropertie","addedIn","parseFloat","added_in","emojiName","unifiedWithoutSkinTone","unified","splat","_splat$splice","splice","emojiHasVariations","_emojiVariationUnifie","emojiVariationUnified","emojisByCategory","_emojis$category","emojis","emojiUrlByUnified","emojiVariations","_emoji$EmojiPropertie2","variations","find","variation","includes","emojiByUnified","allEmojisByUnified","withoutSkinTone","values","setCustomEmojis","emojiData","customToRegularEmoji","push","names","id","imgUrl","Emoji","activeVariationFromUnified","_unified$split","suspectedSkinTone","KNOWN_FAILING_EMOJIS","DEFAULT_SEARCH_PLACEHOLDER","SEARCH_RESULTS_NO_RESULTS_FOUND","SEARCH_RESULTS_SUFFIX","SEARCH_RESULTS_ONE_RESULT_FOUND","SEARCH_RESULTS_MULTIPLE_RESULTS_FOUND","mergeConfig","userConfig","basePickerConfig","previewConfig","_userConfig$previewCo","config","categories","_config$customEmojis","PREVIEW","getEmojiUrl","basePreviewConfig","SEARCH","FREQUENT","unicodeToHide","Set","reactions","defaultEmoji","defaultCaption","showPreview","ConfigContext","PickerConfigProvider","children","_objectWithoutPropertiesLoose","_excluded","mergedConfig","useSetConfig","Provider","_React$useState","setMergedConfig","usePickerConfig","MutableConfigContext","createContext","useMutableConfig","mutableConfig","useContext","useDefineMutableConfig","MutableConfigRef","useRef","onEmojiClick","emptyFunc","onReactionClick","useEffect","current","MOUSE_EVENT_SOURCE","useSearchPlaceHolderConfig","_usePickerConfig","_find","p","useDefaultSkinToneConfig","_usePickerConfig2","useSkinTonesDisabledConfig","_usePickerConfig3","useEmojiStyleConfig","_usePickerConfig4","useAutoFocusSearchConfig","_usePickerConfig5","useCategoriesConfig","_usePickerConfig6","useCustomEmojisConfig","_usePickerConfig7","useOpenConfig","_usePickerConfig8","useOnEmojiClickConfig","mouseEventSource","_useMutableConfig","handler","REACTIONS","usePreviewConfig","_usePickerConfig9","useThemeConfig","_usePickerConfig10","useSuggestedEmojisModeConfig","_usePickerConfig11","useLazyLoadEmojisConfig","_usePickerConfig12","useClassNameConfig","_usePickerConfig13","useStyleConfig","_usePickerConfig14","getDimension","useReactionsOpenConfig","_usePickerConfig15","useEmojiVersionConfig","_usePickerConfig16","useSearchDisabledConfig","_usePickerConfig17","useSkinTonePickerLocationConfig","_usePickerConfig18","useUnicodeToHide","_usePickerConfig19","useReactionsConfig","_usePickerConfig20","useGetEmojiUrlConfig","_usePickerConfig21","dimensionConfig","useSearchResultsConfig","searchResultsCount","hasResults","isPlural","toString","useDebouncedState","initialValue","delay","_useState","useState","state","setState","timer","debouncedSetState","Promise","resolve","clearTimeout","_window","window","useIsUnicodeHidden","has","useDisallowedEmojis","DisallowedEmojisRef","emojiVersionConfig","useMemo","Number","isNaN","disallowedEmojis","addedInNewerVersion","useIsEmojiDisallowed","isUnicodeHidden","isEmojiDisallowed","Boolean","supportedLevel","useMarkInitialLoad","dispatch","PickerContextProvider","filterRef","disallowClickRef","disallowMouseRef","disallowedEmojisRef","suggestedUpdateState","Date","now","searchTerm","skinToneFanOpenState","activeSkinTone","activeCategoryState","emojisThatFailedToLoadState","emojiVariationPickerState","reactionsModeState","isPastInitialLoad","setIsPastInitialLoad","PickerContext","undefined","useFilterRef","_React$useContext","useDisallowClickRef","_React$useContext2","useDisallowMouseRef","_React$useContext3","useReactionsModeState","_React$useContext4","useSearchTermState","_React$useContext5","useActiveSkinToneState","_React$useContext6","useEmojisThatFailedToLoadState","_React$useContext7","useIsPastInitialLoad","_React$useContext8","useEmojiVariationPickerState","_React$useContext9","useSkinToneFanOpenState","_React$useContext10","useUpdateSuggested","_React$useContext12","suggestedUpdated","setsuggestedUpdate","updateSuggested","useIsSearchMode","_useSearchTermState","focusElement","element","requestAnimationFrame","focus","focusPrevElementSibling","previousElementSibling","focusNextElementSibling","nextElementSibling","focusFirstElementChild","first","firstElementChild","getActiveElement","document","activeElement","ElementRefContextProvider","PickerMainRef","AnchoredEmojiRef","BodyRef","SearchInputRef","SkinTonePickerRef","CategoryNavigationRef","VariationPickerRef","ReactionsRef","ElementRefContext","useElementRef","usePickerMainRef","useAnchoredEmojiRef","useSetAnchoredEmojiRef","target","useBodyRef","useReactionsRef","useSearchInputRef","useSkinTonePickerRef","useCategoryNavigationRef","useVariationPickerRef","scrollTo","root","top","$eprBody","queryScrollBody","scrollTop","scrollBy","by","useScrollTo","useCallback","scrollEmojiAboveLabel","isEmojiBehindLabel","closest","variationPicker","scrollBody","closestScrollBody","emojiDistanceFromScrollTop","categoryLabelHeight","closestCategory","focusFirstVisibleEmoji","parent","firstVisibleEmoji","focusAndClickFirstVisibleEmoji","firstEmoji","click","focusLastVisibleEmoji","lastVisibleEmoji","focusNextVisibleEmoji","nextVisibleEmoji","nextCategory","focusPrevVisibleEmoji","prevVisibleEmoji","prevCategory","focusVisibleEmojiOneRowUp","exitUp","visibleEmojiOneRowUp","focusVisibleEmojiOneRowDown","visibleEmojiOneRowDown","categoryContent","closestCategoryContent","indexInRow","elementIndexInRow","row","rowNumber","countInRow","elementCountInRow","prevVisibleCategory","getElementInRow","allVisibleEmojis","getElementInPrevRow","hasNextRow","nextVisibleCategory","itemInNextRow","getElementInNextRow","useCloseAllOpenToggles","_useEmojiVariationPic","setVariationPicker","_useSkinToneFanOpenSt","skinToneFanOpen","setSkinToneFanOpen","closeAllOpenToggles","useHasOpenToggles","_useEmojiVariationPic2","_useSkinToneFanOpenSt2","hasOpenToggles","useDisallowMouseMove","DisallowMouseRef","disallowMouseMove","useAllowMouseMove","allowMouseMove","useIsMouseDisallowed","isMouseDisallowed","useOnMouseMove","bodyRef","addEventListener","onMouseMove","passive","removeEventListener","useFocusSearchInput","useFocusSkinTonePicker","useFocusCategoryNavigation","useSetFilterRef","setFilter","setter","useClearSearch","applySearch","useApplySearch","focusSearchInput","clearSearch","useAppendSearch","appendSearch","str","getNormalizedSearchTerm","useFilter","setFilterRef","statusSearchResults","getStatusSearchResults","onChange","inputValue","filter","nextValue","longestMatch","findLongestMatch","filterEmojiObjectByKeyword","_useSearchTermState2","setSearchTerm","then","keyword","filtered","hasMatch","some","useIsEmojiFiltered","_useFilterRef","_useSearchTermState3","isEmojiFilteredBySearchTerm","_filter$searchTerm","dict","longestMatchingKey","keys","sort","a","b","trim","filterState","_Object$entries","useSetVariationPicker","setAnchoredEmojiRef","setEmojiVariationPicker","_emojiFromElement","emojiFromElement","useIsSkinToneInSearch","skinTonePickerLocationConfig","useIsSkinToneInPreview","KeyboardEvents","useKeyboardNavigation","usePickerMainKeyboardEvents","useSearchInputKeyboardEvents","useSkinTonePickerKeyboardEvents","useCategoryNavigationKeyboardEvents","useBodyKeyboardEvents","onKeyDown","event","Escape","preventDefault","focusSkinTonePicker","setSkinToneFanOpenState","goDownFromSearchInput","useGoDownFromSearchInput","isSkinToneInSearch","ArrowRight","ArrowDown","Enter","isOpen","setIsOpen","isSkinToneInPreview","onType","useOnType","ArrowLeft","focusNextSkinTone","focusPrevSkinTone","ArrowUp","goUpFromBody","useGoUpFromBody","buttonFromTarget","Space","focusCategoryNavigation","isSearchMode","goUpFromEmoji","exitLeft","currentSkinTone","hasNextElementSibling","hasModifier","match","metaKey","ctrlKey","altKey","preloadEmoji","NATIVE","preloadedEmojs","emojiUrl","preloadImage","add","url","image","Image","src","useOnFocus","onFocus","button","DEFAULT_LABEL_HEIGHT","PickerMain","PickerRootElement","_ref2","_useReactionsModeStat","reactionsMode","searchModeActive","_ref3","styleProps","cx","styles","main","baseVariables","darkTheme","AUTO","autoThemeDark","_cx","searchActive","reactionsMenu","ref","DarkTheme","emojiPicker","position","flexDirection","borderWidth","borderStyle","borderRadius","borderColor","backgroundColor","boxSizing","fontFamily","autoTheme","backdropFilter","parentWidth","getBoundingClientRect","elementWidth","Math","floor","elementLeft","left","parentLeft","elementHeight","elementTop","parentTop","round","parentHeight","getRowElements","elements","elementsInRow","lastRow","firstElementIndex","lastElementIndex","slice","getNextRowElements","allElements","currentRow","nextRow","rowElements","index","nextRowElements","prevRowElements","firstVisibleElementInContainer","parentBottom","bottom","parentTopWithLabel","getLabelHight","visibleElements","elementBottom","parentNode","_parentNode$querySele","_parentNode$querySele2","querySelector","label","EmojiButtonSelector","VisibleEmojiSelector","visible","emojiElement","_emojiElement$closest","originalUnified","originalUnifiedFromEmojiElement","unifiedFromEmojiElement","isEmojiElement","matches","_element$parentElemen","parentElement","_element$clientHeight","clientHeight","emojiTrueOffsetTop","labelHeight","elementOffsetTop","categoryWithoutLabel","_category$clientHeigh","_categoryWithoutLabel","_closestScrollBody$sc","_closestScrollBody","_element$closest","emojiTruOffsetLeft","elementOffsetLeft","_element$offsetTop","offsetTop","_element$offsetLeft","offsetLeft","_elementDataSetKey","elementDataSetKey","allUnifiedFromEmojiElement","_elementDataSet$key","elementDataSet","_element$dataset","dataset","isVisibleEmoji","classList","contains","isHidden","from","querySelectorAll","_allEmojis$slice","last","parseNativeEmoji","hex","String","fromCodePoint","parseInt","SUGGESTED_LS_KEY","getSuggested","mode","_window$localStorage$","_window2","localStorage","recent","JSON","parse","getItem","count","_unused","setSuggested","existing","u","nextList","concat","i","original","min","_window3","setItem","stringify","_unused2","isCustomCategory","isCustomEmoji","useMouseDownHandlers","ContainerRef","mouseDownTimerRef","_useActiveSkinToneSta","_useUpdateSuggested","activeEmojiStyle","onClick","_emojiFromEvent","emojiFromEvent","skinToneToUse","emojiClickOutput","onMouseDown","_emojiFromEvent2","onMouseUp","confainerRef","getImageUrl","imageUrl","isCustom","Button","props","type","cursor","border","background","outline","ClickableEmojiButton","_ref$showVariations","showVariations","hasVariations","_ref$noBackground","noBackground","alignItems","justifyContent","maxWidth","maxHeight","content","right","borderLeft","borderRight","transform","borderBottom","zIndex","emojiStyles","external","fontSize","common","alignSelf","justifySelf","EmojiImg","_ref$lazyLoad","lazyLoad","onError","alt","emojiImag","loading","minWidth","minHeight","padding","NativeEmoji","nativeEmoji","lineHeight","textAlign","letterSpacing","ViewOnlyEmoji","size","_ref$getEmojiUrl","_useEmojisThatFailedT","setEmojisThatFailedToLoad","emojiToRender","ClickableEmoji","BtnPlus","setReactionsMode","title","tabIndex","plusSign","color","backgroundImage","Plus","backgroundRepeat","backgroundSize","Reactions","reactionsOpen","list","reaction","emojiButton","listStyle","margin","useOnScroll","onScroll","useIsEmojiHidden","emojisThatFailedToLoad","isEmojiFiltered","failedToLoad","filteredOut","EmojiCategory","categoryConfig","categoryName","gridGap","gridTemplateColumns","fontWeight","textTransform","isEverMounted","useIsEverMounted","isMounted","setIsMounted","Suggested","suggestedEmojisModeConfig","suggested","_getSuggested","suggestedItem","EmojiList","renderdCategoriesCountRef","emojiList","RenderCategory","isEmojiHidden","emojisToPush","hiddenCounter","_isEmojiHidden","isDisallowed","Direction","EmojiVariationPicker","_useVariationPickerTo","useVariationPickerTop","getTop","getMenuDirection","getPointerStyle","usePointerStyle","pointerStyle","Down","pointingUp","pointer","clientWidth","direction","Up","emojiOffsetTop","_bodyRef$scrollTop","buttonHeight","boxShadow","transformOrigin","backgroundPosition","SVGTriangle","Body","PICKER","body","flex","overflowY","overflowX","detectEmojyPartiallyBelowFold","buttonRect","bodyRect","y","useEmojiPreviewEvents","allow","setPreviewEmoji","onEscape","onMouseOver","onEnter","onLeave","e","_allUnifiedFromEmojiE","relatedTarget","belowFoldByPx","_allUnifiedFromEmojiE2","scrollIntoView","behavior","block","FlexDirection","Flex","_ref$style","_ref$direction","ROW","_stylesheet$create","COLUMN","Absolute","Relative","BtnSkinToneVariation","isActive","skinToneVariation","tone","closedTone","active","ITEM_SIZE","SkinTonePickerMenu","SkinTonePicker","SkinTonePickerDirection","VERTICAL","HORIZONTAL","isDisabled","setActiveSkinTone","fullWidth","expandedSize","vertical","skinTones","verticalShadow","flexBasis","select","Preview","preview","PreviewBody","previewEmoji","variationPickerEmoji","_previewEmoji$unified","show","PreviewContent","defaultText","borderTop","categoryNameFromDom","$category","_$category$getAttribu","getAttribute","useActiveCategoryScrollDetection","setActiveCategory","visibleCategories","Map","observer","IntersectionObserver","_iterator","_createForOfIteratorHelperLoose","_step","done","entry","set","intersectionRatio","ratios","lastCategory","_i","_ratios","_ratios$_i","ratio","threshold","el","observe","useScrollCategoryIntoView","scrollCategoryIntoView","_BodyRef$current","useShouldHideCustomEmojis","customCategoryConfig","CategoryButton","isActiveCategory","allowNavigation","catBtn","role","DarkActivePositionY","DarkPositionY","DarkInactivePosition","SVGNavigation","backgroundPositionX","CategoryNavigation","activeCategory","categoriesConfig","hideCustomCategory","nav","BtnClearSearch","btnClearSearch","icnClearnSearch","HoverDark","SVGTimes","SCOPE","EMOJI_BUTTON","CATEGORY","CssSearch","q","genQuery","IcnSearch","icnSearch","SVGMagnifier","SearchContainer","overlay","Search","inc","setInc","placeholder","autoFocus","_useFilter","input","searchContainer","search","_event$target$value","_event$target","visuallyHidden","clip","clipPath","whiteSpace","Header","EmojiPicker","ContentControl","renderAll","setRenderAll","ErrorBoundary","_React$Component","_inheritsLoose","_this","call","hasError","getDerivedStateFromError","_proto","prototype","componentDidCatch","error","errorInfo","console","render","ExportedEmoji","_ref$size","_ref$emojiStyle","EmojiPickerReact"],"mappings":"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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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"}
|