emoji-picker-react 4.13.3 → 4.14.0
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/dist/DomUtils/elementPositionInRow.d.ts +1 -6
- package/dist/components/body/EmojiCategory.d.ts +2 -1
- package/dist/components/body/EmojiList.d.ts +3 -1
- package/dist/components/context/ElementRefContext.d.ts +1 -0
- package/dist/components/emoji/ClickableEmojiButton.d.ts +2 -1
- package/dist/components/emoji/Emoji.d.ts +3 -2
- package/dist/dataUtils/emojiSelectors.d.ts +1 -1
- package/dist/emoji-picker-react.cjs.development.js +615 -544
- 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 +616 -545
- package/dist/emoji-picker-react.esm.js.map +1 -1
- package/dist/hooks/preloadEmoji.d.ts +4 -0
- package/dist/hooks/useCategoryHeight.d.ts +5 -0
- package/dist/hooks/useEmojiVirtualization.d.ts +16 -0
- package/dist/hooks/useOnScroll.d.ts +1 -1
- package/dist/virtualization/virtualizationHelpers.d.ts +18 -0
- package/package.json +2 -1
- package/src/DomUtils/elementPositionInRow.ts +8 -131
- package/src/DomUtils/keyboardNavigation.ts +62 -48
- package/src/components/body/Body.tsx +2 -2
- package/src/components/body/EmojiCategory.tsx +7 -5
- package/src/components/body/EmojiList.tsx +43 -78
- package/src/components/context/ElementRefContext.tsx +8 -0
- package/src/components/emoji/ClickableEmojiButton.tsx +4 -1
- package/src/components/emoji/Emoji.tsx +4 -1
- package/src/components/header/Search/Search.tsx +0 -5
- package/src/components/main/PickerMain.tsx +8 -5
- package/src/dataUtils/emojiSelectors.ts +29 -3
- package/src/hooks/preloadEmoji.ts +49 -7
- package/src/hooks/useCategoryHeight.ts +92 -0
- package/src/hooks/useEmojiVirtualization.tsx +112 -0
- package/src/hooks/useFilter.ts +17 -24
- package/src/hooks/useOnScroll.ts +5 -1
- package/src/virtualization/virtualizationHelpers.ts +45 -0
- package/dist/components/body/Suggested.d.ts +0 -7
- package/dist/components/header/Search/CssSearch.d.ts +0 -4
- package/dist/globals/doesBrowserSupportCssHas.d.ts +0 -2
- package/src/components/body/Suggested.tsx +0 -69
- package/src/components/header/Search/CssSearch.tsx +0 -45
- package/src/globals/doesBrowserSupportCssHas.ts +0 -16
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"emoji-picker-react.esm.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/hooks/useDebouncedState.ts","../src/hooks/useHideEmojisByUniocode.ts","../src/hooks/useDisallowedEmojis.ts","../src/hooks/useInitialLoad.ts","../src/components/context/PickerContext.tsx","../src/config/mutableConfig.ts","../src/config/useConfig.ts","../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/globals/doesBrowserSupportCssHas.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 '&.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 config.hiddenEmojis.forEach((emoji) => {\n config.unicodeToHide.add(emoji);\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 allowExpandReactions: true,\n hiddenEmojis: [],\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 allowExpandReactions: boolean;\n hiddenEmojis: 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: MouseDownEvent;\n onReactionClick: MouseDownEvent;\n onSkinToneChange: OnSkinToneChange;\n} & Omit<PickerConfigInternal, 'previewConfig' | 'unicodeToHide'>;\n\nexport type PickerConfig = Partial<ConfigExternal>;\n\nexport type PickerDimensions = string | number;\n\nexport type MouseDownEvent = (\n emoji: EmojiClickData,\n event: MouseEvent,\n api?: OnEmojiClickApi\n) => void;\nexport type OnSkinToneChange = (emoji: SkinTones) => void;\n\ntype OnEmojiClickApi = {\n collapseToReactions: () => void;\n};\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 config.allowExpandReactions\n ]);\n\n return mergedConfig;\n}\n\nexport function usePickerConfig() {\n return React.useContext(ConfigContext);\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 React from 'react';\n\nimport { MouseDownEvent, OnSkinToneChange } from './config';\n\nexport type MutableConfig = {\n onEmojiClick?: MouseDownEvent;\n onReactionClick?: MouseDownEvent;\n onSkinToneChange?: OnSkinToneChange;\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 onSkinToneChange: config.onSkinToneChange || emptyFunc\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 React.useEffect(() => {\n MutableConfigRef.current.onSkinToneChange =\n config.onSkinToneChange || emptyFunc;\n }, [config.onSkinToneChange]);\n\n return MutableConfigRef;\n}\n\nfunction emptyFunc() {}\n","import * as React from 'react';\n\nimport { usePickerConfig } from '../components/context/PickerConfigContext';\nimport { useReactionsModeState } from '../components/context/PickerContext';\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 useAllowExpandReactions(): boolean {\n const { allowExpandReactions } = usePickerConfig();\n return allowExpandReactions;\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 const [, setReactionsOpen] = useReactionsModeState();\n\n const handler = current.onEmojiClick || (() => {});\n const { onReactionClick } = current;\n\n if (mouseEventSource === MOUSE_EVENT_SOURCE.REACTIONS && onReactionClick) {\n return (...args) =>\n onReactionClick(...args, {\n collapseToReactions: () => {\n setReactionsOpen(o => o);\n }\n });\n }\n\n return (...args) => {\n handler(...args, {\n collapseToReactions: () => {\n setReactionsOpen(true);\n }\n });\n };\n}\n\nexport function useOnSkinToneChangeConfig(): (skinTone: SkinTones) => void {\n const { current } = useMutableConfig();\n\n return current.onSkinToneChange || (() => {});\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 { 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;\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","function doesBrowserSupportCssHas(): boolean {\n // if env is not browser:\n if (typeof window === 'undefined' || typeof window.CSS === 'undefined') {\n return false;\n }\n\n try {\n return CSS.supports('selector(:has(*))');\n } catch (e) {\n return false;\n }\n}\n\nconst browserSupportsCssHas = doesBrowserSupportCssHas();\n\nexport default browserSupportsCssHas;\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';\nimport doesBrowserSupportCssHas from '../globals/doesBrowserSupportCssHas';\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 if (doesBrowserSupportCssHas) {\n return;\n }\n\n setTimeout(() => {\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}\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 '--epr-skin-tone-outer-border-color': 'var(--epr-dark-skin-tone-outer-border-color)',\n '--epr-skin-tone-inner-border-color': 'var(--epr-dark-skin-tone-inner-border-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 '*': {\n boxSizing: 'border-box',\n fontFamily: 'sans-serif'\n }\n },\n baseVariables: {\n '--': {\n '--epr-highlight-color': '#007aeb',\n '--epr-hover-bg-color': '#e5f0fa',\n '--epr-hover-bg-color-reduced-opacity': '#e5f0fa80',\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 '--epr-skin-tone-outer-border-color': '#555555',\n '--epr-skin-tone-inner-border-color': 'var(--epr-bg-color)',\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 '--epr-dark-skin-tone-outer-border-color': 'var(--epr-dark-picker-border-color)',\n '--epr-dark-skin-tone-inner-border-color': '#00000000',\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-ignore - backdropFilter is not recognized.\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 maxVisibilityDiffThreshold = 0\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 const parentTopWithLabel = parentTop + getLabelHeight(parent);\n\n const visibleElements = elements.find(element => {\n const elementTop = element.getBoundingClientRect().top;\n const elementBottom = element.getBoundingClientRect().bottom;\n const maxVisibilityDiffPixels =\n element.clientHeight * maxVisibilityDiffThreshold;\n\n const elementTopWithAllowedDiff = elementTop + maxVisibilityDiffPixels;\n const elementBottomWithAllowedDiff =\n elementBottom - maxVisibilityDiffPixels;\n\n if (elementTopWithAllowedDiff < parentTopWithLabel) {\n return false;\n }\n\n return (\n (elementTopWithAllowedDiff >= parentTop &&\n elementTopWithAllowedDiff <= parentBottom) ||\n (elementBottomWithAllowedDiff >= parentTop &&\n elementBottomWithAllowedDiff <= parentBottom)\n );\n });\n\n return visibleElements || null;\n}\n\nexport function hasNextElementSibling(element: HTMLElement) {\n return !!element.nextElementSibling;\n}\n\nfunction getLabelHeight(parentNode: HTMLElement) {\n const labels = Array.from(\n parentNode.querySelectorAll(asSelectors(ClassNames.label))\n );\n\n for (const label of labels) {\n const height = label.getBoundingClientRect().height;\n // return height if label is not hidden\n if (height > 0) {\n return height;\n }\n }\n\n return DEFAULT_LABEL_HEIGHT;\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, 0.1);\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={getAriaLabel(emojiNames)}\n data-full-name={emojiNames}\n >\n {children}\n </Button>\n );\n}\n\nfunction getAriaLabel(emojiNames: string[]) {\n return emojiNames[0].match('flag-')\n ? emojiNames[1] ?? emojiNames[0]\n : emojiNames[0];\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 ':after': {\n backgroundPositionY: '-20px'\n }\n },\n ':focus': {\n color: 'var(--epr-highlight-color)',\n backgroundColor: 'var(--epr-hover-bg-color-reduced-opacity)',\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 useAllowExpandReactions,\n useGetEmojiUrlConfig\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 const allowExpandReactions = useAllowExpandReactions();\n const getEmojiUrl = useGetEmojiUrlConfig();\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 getEmojiUrl={getEmojiUrl}\n />\n </li>\n ))}\n {allowExpandReactions ? (\n <li>\n <BtnPlus />\n </li>\n ) : null}\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-ignore - backdropFilter is not recognized.\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 { useIsEmojiDisallowed } from '../../hooks/useDisallowedEmojis';\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 const isEmojiDisallowed = useIsEmojiDisallowed();\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 if (isEmojiDisallowed(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 <React.Suspense key={category}>\n <RenderCategory\n category={category}\n categoryConfig={categoryConfig}\n renderdCategoriesCountRef={renderdCategoriesCountRef}\n />\n </React.Suspense>\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) {\n return handlePartiallyVisibleElementFocus(button, setPreviewEmoji);\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\nfunction handlePartiallyVisibleElementFocus(\n button: HTMLElement,\n setPreviewEmoji: React.Dispatch<React.SetStateAction<PreviewEmoji>>\n) {\n const { unified, originalUnified } = allUnifiedFromEmojiElement(button);\n\n if (!unified || !originalUnified) {\n return;\n }\n\n (document.activeElement as HTMLElement)?.blur?.();\n\n setPreviewEmoji({\n unified,\n originalUnified\n });\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 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 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 border: '1px solid var(--epr-skin-tone-outer-border-color)',\n boxShadow: 'inset 0px 0px 0 1px var(--epr-skin-tone-inner-border-color)',\n ':hover': {\n boxShadow: '0 0 0 3px var(--epr-active-skin-hover-color), inset 0px 0px 0 1px var(--epr-skin-tone-inner-border-color)'\n },\n ':focus': {\n boxShadow: '0 0 0 3px var(--epr-focus-bg-color)'\n },\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 {\n useOnSkinToneChangeConfig,\n useSkinTonesDisabledConfig\n} 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 onSkinToneChange = useOnSkinToneChangeConfig();\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 onSkinToneChange(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 - backdropFilter is not recognized.\n backdropFilter: 'blur(5px)',\n background: 'var(--epr-skin-tone-picker-menu-color)',\n '.epr-active': {\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 }\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 {\n useEmojiVariationPickerState,\n useReactionsModeState\n} 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 const [reactionsOpen] = useReactionsModeState();\n\n if (!previewConfig.showPreview) {\n return null;\n }\n\n return (\n <Flex\n className={cx(\n styles.preview,\n commonInteractionStyles.hiddenOnReactions,\n reactionsOpen && styles.hideOnReactions\n )}\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 hideOnReactions: {\n opacity: '0',\n transition: 'opacity 0.5s ease-in-out'\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 '&.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 scrollCategoryIntoView(category);\n setTimeout(() => {\n setActiveCategory(category);\n }, 10);\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 onChange(event?.target?.value ?? value);\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 { useAllowExpandReactions, 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 allowExpandReactions = useAllowExpandReactions();\n\n const [renderAll, setRenderAll] = React.useState(!reactionsDefaultOpen);\n const isOpen = useOpenConfig();\n\n React.useEffect(() => {\n if (reactionsDefaultOpen && !allowExpandReactions) {\n return;\n }\n\n if (!renderAll) {\n setRenderAll(true);\n }\n }, [renderAll, allowExpandReactions, reactionsDefaultOpen]);\n\n if (!isOpen) {\n return null;\n }\n\n return (\n <PickerMain>\n <Reactions />\n <ExpandedPickerContent renderAll={renderAll} />\n </PickerMain>\n );\n}\n\nfunction ExpandedPickerContent({ renderAll }: { renderAll: boolean }) {\n if (!renderAll) {\n return null;\n }\n\n return (\n <>\n <Header />\n <Body />\n <Preview />\n </>\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 onSkinToneChange: props.onSkinToneChange,\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","hiddenEmojis","unicodeToHide","add","_config$customEmojis","PREVIEW","getEmojiUrl","basePreviewConfig","SEARCH","FREQUENT","Set","reactions","allowExpandReactions","defaultEmoji","defaultCaption","showPreview","ConfigContext","PickerConfigProvider","children","_objectWithoutPropertiesLoose","_excluded","mergedConfig","useSetConfig","Provider","_React$useState","setMergedConfig","usePickerConfig","useDebouncedState","initialValue","delay","_useState","useState","state","setState","timer","useRef","debouncedSetState","Promise","resolve","current","clearTimeout","_window","window","useIsUnicodeHidden","useUnicodeToHide","has","useDisallowedEmojis","DisallowedEmojisRef","emojiVersionConfig","useEmojiVersionConfig","useMemo","Number","isNaN","disallowedEmojis","addedInNewerVersion","useIsEmojiDisallowed","isUnicodeHidden","isEmojiDisallowed","Boolean","supportedLevel","useMarkInitialLoad","dispatch","useEffect","PickerContextProvider","useDefaultSkinToneConfig","useReactionsOpenConfig","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","MutableConfigContext","createContext","useMutableConfig","mutableConfig","useContext","useDefineMutableConfig","MutableConfigRef","onEmojiClick","emptyFunc","onReactionClick","onSkinToneChange","MOUSE_EVENT_SOURCE","useSearchPlaceHolderConfig","_usePickerConfig","_find","p","_usePickerConfig2","useAllowExpandReactions","_usePickerConfig3","useSkinTonesDisabledConfig","_usePickerConfig4","useEmojiStyleConfig","_usePickerConfig5","useAutoFocusSearchConfig","_usePickerConfig6","useCategoriesConfig","_usePickerConfig7","useCustomEmojisConfig","_usePickerConfig8","useOpenConfig","_usePickerConfig9","useOnEmojiClickConfig","mouseEventSource","_useMutableConfig","_useReactionsModeStat","setReactionsOpen","handler","REACTIONS","args","apply","concat","collapseToReactions","o","_len2","_key2","useOnSkinToneChangeConfig","_useMutableConfig2","usePreviewConfig","_usePickerConfig10","useThemeConfig","_usePickerConfig11","useSuggestedEmojisModeConfig","_usePickerConfig12","useLazyLoadEmojisConfig","_usePickerConfig13","useClassNameConfig","_usePickerConfig14","useStyleConfig","_usePickerConfig15","getDimension","_usePickerConfig16","_usePickerConfig17","useSearchDisabledConfig","_usePickerConfig18","useSkinTonePickerLocationConfig","_usePickerConfig19","_usePickerConfig20","useReactionsConfig","_usePickerConfig21","useGetEmojiUrlConfig","_usePickerConfig22","dimensionConfig","useSearchResultsConfig","searchResultsCount","hasResults","isPlural","toString","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","doesBrowserSupportCssHas","CSS","supports","e","browserSupportsCssHas","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","url","image","Image","src","useOnFocus","onFocus","button","DEFAULT_LABEL_HEIGHT","PickerMain","PickerRootElement","_ref2","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","maxVisibilityDiffThreshold","parentBottom","bottom","parentTopWithLabel","getLabelHeight","visibleElements","elementBottom","maxVisibilityDiffPixels","clientHeight","elementTopWithAllowedDiff","elementBottomWithAllowedDiff","parentNode","labels","from","querySelectorAll","label","_i","_labels","EmojiButtonSelector","VisibleEmojiSelector","visible","emojiElement","_emojiElement$closest","originalUnified","originalUnifiedFromEmojiElement","unifiedFromEmojiElement","isEmojiElement","matches","_element$parentElemen","parentElement","_element$clientHeight","emojiTrueOffsetTop","labelHeight","elementOffsetTop","categoryWithoutLabel","querySelector","_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","_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","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","getAriaLabel","_emojiNames$","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","_allUnifiedFromEmojiE","relatedTarget","belowFoldByPx","handlePartiallyVisibleElementFocus","_allUnifiedFromEmojiE2","_document$activeEleme","blur","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","hideOnReactions","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","_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","ExpandedPickerContent","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.esm.js","sources":["../src/DomUtils/classNames.ts","../src/Stylesheet/stylesheet.tsx","../src/config/compareConfig.ts","../src/components/Reactions/DEFAULT_REACTIONS.ts","../src/dataUtils/alphaNumericEmojiIndex.ts","../src/hooks/useDebouncedState.ts","../src/hooks/useHideEmojisByUniocode.ts","../src/hooks/useDisallowedEmojis.ts","../src/hooks/useInitialLoad.ts","../src/types/exposedTypes.ts","../src/components/context/PickerContext.tsx","../src/config/categoryConfig.ts","../src/config/cdnUrls.ts","../src/data/skinToneVariations.ts","../src/dataUtils/DataTypes.ts","../src/dataUtils/suggested.ts","../src/dataUtils/emojiSelectors.ts","../src/config/config.ts","../src/components/context/PickerConfigContext.tsx","../src/config/mutableConfig.ts","../src/config/useConfig.ts","../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/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/virtualization/virtualizationHelpers.ts","../src/hooks/useCategoryHeight.ts","../src/hooks/useIsEmojiHidden.ts","../src/hooks/useEmojiVirtualization.tsx","../src/components/body/EmojiCategory.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/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 '&.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","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 { 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","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 * 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 { 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 { 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 React from 'react';\n\nimport { useUpdateSuggested } from '../components/context/PickerContext';\nimport { Categories } from '../config/categoryConfig';\nimport { cdnUrl } from '../config/cdnUrls';\nimport { CustomEmoji } from '../config/customEmojiConfig';\nimport { useSuggestedEmojisModeConfig } from '../config/useConfig';\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';\nimport { getSuggested } from './suggested';\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 useGetEmojisByCategory(): (Category: Categories) => DataEmojis {\n const suggestedEmojisModeConfig = useSuggestedEmojisModeConfig();\n const [suggestedUpdated] = useUpdateSuggested();\n\n const suggested = React.useMemo(\n () => {\n const suggested = getSuggested(suggestedEmojisModeConfig) ?? [];\n\n return suggested\n .map(s => emojiByUnified(s.unified))\n .filter(Boolean) as DataEmojis;\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [suggestedUpdated, suggestedEmojisModeConfig]\n );\n\n return function getEmojisByCategory(category: Categories): DataEmojis {\n if (category === Categories.SUGGESTED) {\n return suggested;\n }\n\n // @ts-ignore\n return emojis[category] ?? [];\n };\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 config.hiddenEmojis.forEach((emoji) => {\n config.unicodeToHide.add(emoji);\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 allowExpandReactions: true,\n hiddenEmojis: [],\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 allowExpandReactions: boolean;\n hiddenEmojis: 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: MouseDownEvent;\n onReactionClick: MouseDownEvent;\n onSkinToneChange: OnSkinToneChange;\n} & Omit<PickerConfigInternal, 'previewConfig' | 'unicodeToHide'>;\n\nexport type PickerConfig = Partial<ConfigExternal>;\n\nexport type PickerDimensions = string | number;\n\nexport type MouseDownEvent = (\n emoji: EmojiClickData,\n event: MouseEvent,\n api?: OnEmojiClickApi\n) => void;\nexport type OnSkinToneChange = (emoji: SkinTones) => void;\n\ntype OnEmojiClickApi = {\n collapseToReactions: () => void;\n};\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 config.allowExpandReactions\n ]);\n\n return mergedConfig;\n}\n\nexport function usePickerConfig() {\n return React.useContext(ConfigContext);\n}\n","import React from 'react';\n\nimport { MouseDownEvent, OnSkinToneChange } from './config';\n\nexport type MutableConfig = {\n onEmojiClick?: MouseDownEvent;\n onReactionClick?: MouseDownEvent;\n onSkinToneChange?: OnSkinToneChange;\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 onSkinToneChange: config.onSkinToneChange || emptyFunc\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 React.useEffect(() => {\n MutableConfigRef.current.onSkinToneChange =\n config.onSkinToneChange || emptyFunc;\n }, [config.onSkinToneChange]);\n\n return MutableConfigRef;\n}\n\nfunction emptyFunc() {}\n","import * as React from 'react';\n\nimport { usePickerConfig } from '../components/context/PickerConfigContext';\nimport { useReactionsModeState } from '../components/context/PickerContext';\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 useAllowExpandReactions(): boolean {\n const { allowExpandReactions } = usePickerConfig();\n return allowExpandReactions;\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 const [, setReactionsOpen] = useReactionsModeState();\n\n const handler = current.onEmojiClick || (() => {});\n const { onReactionClick } = current;\n\n if (mouseEventSource === MOUSE_EVENT_SOURCE.REACTIONS && onReactionClick) {\n return (...args) =>\n onReactionClick(...args, {\n collapseToReactions: () => {\n setReactionsOpen(o => o);\n }\n });\n }\n\n return (...args) => {\n handler(...args, {\n collapseToReactions: () => {\n setReactionsOpen(true);\n }\n });\n };\n}\n\nexport function useOnSkinToneChangeConfig(): (skinTone: SkinTones) => void {\n const { current } = useMutableConfig();\n\n return current.onSkinToneChange || (() => {});\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 { 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 EmojiListRef = React.useRef<HTMLUListElement>(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 EmojiListRef,\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 EmojiListRef: ElementRef<HTMLUListElement>;\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 EmojiListRef: 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 useEmojiListRef() {\n return useElementRef()['EmojiListRef'];\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;\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 { elementCountInRow } 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 countInRow = elementCountInRow(categoryContent, element);\n\n const emojisInCurrentCategory = allVisibleEmojis(category);\n const currentEmojiIndex = emojisInCurrentCategory.indexOf(element);\n const indexInRow = currentEmojiIndex % countInRow;\n\n if (currentEmojiIndex === -1) {\n return null;\n }\n\n if (emojisInCurrentCategory[currentEmojiIndex - countInRow]) {\n return emojisInCurrentCategory[currentEmojiIndex - countInRow];\n }\n\n const prevVisibleCategory = prevCategory(category);\n\n if (!prevVisibleCategory) {\n return null;\n }\n\n const allPrevEmojis = allVisibleEmojis(prevVisibleCategory);\n\n // if there is an emoji in the same index of `indexInRow` in the previous category, return it\n // for this we need to find the last emoji in the previous category that shares the same indexInRow\n // this is by using the % operator to find the last emoji that matches\n\n const lastIndexInRow = (allPrevEmojis.length % countInRow) - 1;\n\n if (indexInRow > lastIndexInRow) {\n return allPrevEmojis.at(-1);\n }\n\n // otherwise, return the last emoji that shares the same indexInRow\n\n for (let i = allPrevEmojis.length - 1; i >= 0; i--) {\n if (i % countInRow === indexInRow) {\n return allPrevEmojis[i];\n }\n }\n\n return allPrevEmojis.at(-1);\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 countInRow = elementCountInRow(categoryContent, element);\n\n const emojisInCurrentCategory = allVisibleEmojis(category);\n const currentEmojiIndex = emojisInCurrentCategory.indexOf(element);\n\n if (currentEmojiIndex === -1) {\n return null;\n }\n\n // the remainder until the end of the row\n const remainder = countInRow - (currentEmojiIndex % countInRow) - 1;\n const firstInNextRow = currentEmojiIndex + remainder + 1;\n\n if (emojisInCurrentCategory[firstInNextRow]) {\n // if we have a next row, search in the next row for the last available emoji\n for (let p = currentEmojiIndex + countInRow; p % countInRow >= 0; p--) {\n if (emojisInCurrentCategory[p]) {\n return emojisInCurrentCategory[p];\n }\n }\n }\n\n const indexInRow = currentEmojiIndex % countInRow;\n\n const nextVisibleCategory = nextCategory(category);\n const emojisInNextCategory = allVisibleEmojis(nextVisibleCategory);\n\n if (emojisInNextCategory[indexInRow]) {\n return emojisInNextCategory[indexInRow];\n }\n\n return emojisInNextCategory.at(0) ?? null;\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';\nimport { Dimensions } from '../virtualization/virtualizationHelpers';\n\n// eslint-disable-next-line max-params\nexport function preloaEmojidIfNeeded(\n emoji: undefined | DataEmoji,\n emojiStyles: EmojiStyle,\n scrollTop: number,\n clientHeight: number,\n topOffset: number,\n style: { top: number } | undefined,\n dimensions: Dimensions,\n getEmojiUrl: GetEmojiUrl\n): void {\n if (!emoji) {\n return;\n }\n\n if (emojiStyles === EmojiStyle.NATIVE) {\n return;\n }\n\n const unified = emojiUnified(emoji);\n\n if (preloadedEmojs.has(unified)) {\n return;\n }\n\n // preload only if the emoji is a few rows below the viewport\n if (!style || !dimensions) {\n return;\n }\n\n setTimeout(() => {\n const emojiTop = topOffset + style.top;\n const viewportBottom = scrollTop + clientHeight;\n\n const isJustBelowViewport =\n emojiTop >= viewportBottom &&\n emojiTop < viewportBottom + dimensions.emojiSize * 2;\n\n if (isJustBelowViewport) {\n preloadEmoji(getEmojiUrl, emoji, emojiStyles);\n }\n });\n}\n\nexport function preloadEmoji(\n getEmojiUrl: GetEmojiUrl,\n emoji: undefined | DataEmoji,\n emojiStyle: EmojiStyle\n): void {\n if (!emoji) {\n return;\n }\n\n const unified = emojiUnified(emoji);\n\n if (preloadedEmojs.has(unified)) {\n return;\n }\n preloadedEmojs.add(unified);\n\n emojiVariations(emoji)\n .concat(unified)\n .forEach(variation => {\n const emojiUrl = getEmojiUrl(variation, emojiStyle);\n preloadImage(emojiUrl);\n });\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 '--epr-skin-tone-outer-border-color':\n 'var(--epr-dark-skin-tone-outer-border-color)',\n '--epr-skin-tone-inner-border-color':\n 'var(--epr-dark-skin-tone-inner-border-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: 'height 0.3s ease-in-out, background-color 0.1s ease-in-out',\n '*': {\n boxSizing: 'border-box',\n fontFamily: 'sans-serif'\n }\n },\n baseVariables: {\n '--': {\n '--epr-highlight-color': '#007aeb',\n '--epr-hover-bg-color': '#e5f0fa',\n '--epr-hover-bg-color-reduced-opacity': '#e5f0fa80',\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 '--epr-skin-tone-outer-border-color': '#555555',\n '--epr-skin-tone-inner-border-color': 'var(--epr-bg-color)',\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 '--epr-dark-skin-tone-outer-border-color':\n 'var(--epr-dark-picker-border-color)',\n '--epr-dark-skin-tone-inner-border-color': '#00000000'\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-ignore - backdropFilter is not recognized.\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 firstVisibleElementInContainer(\n parent: NullableElement,\n elements: HTMLElement[],\n maxVisibilityDiffThreshold = 0\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 const parentTopWithLabel = parentTop + getLabelHeight(parent);\n\n const visibleElements = elements.find(element => {\n const elementTop = element.getBoundingClientRect().top;\n const elementBottom = element.getBoundingClientRect().bottom;\n const maxVisibilityDiffPixels =\n element.clientHeight * maxVisibilityDiffThreshold;\n\n const elementTopWithAllowedDiff = elementTop + maxVisibilityDiffPixels;\n const elementBottomWithAllowedDiff =\n elementBottom - maxVisibilityDiffPixels;\n\n if (elementTopWithAllowedDiff < parentTopWithLabel) {\n return false;\n }\n\n return (\n (elementTopWithAllowedDiff >= parentTop &&\n elementTopWithAllowedDiff <= parentBottom) ||\n (elementBottomWithAllowedDiff >= parentTop &&\n elementBottomWithAllowedDiff <= parentBottom)\n );\n });\n\n return visibleElements || null;\n}\n\nexport function hasNextElementSibling(element: HTMLElement) {\n return !!element.nextElementSibling;\n}\n\nexport function getLabelHeight(parentNode: NullableElement) {\n if (!parentNode) {\n return DEFAULT_LABEL_HEIGHT;\n }\n\n const label = parentNode.querySelector(asSelectors(ClassNames.label));\n\n if (label) {\n const height = label.getBoundingClientRect().height;\n if (height > 0) {\n return height;\n }\n }\n\n // fallback to default\n return DEFAULT_LABEL_HEIGHT;\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, 0.1);\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 {\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 style?: React.CSSProperties;\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 style\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={getAriaLabel(emojiNames)}\n data-full-name={emojiNames}\n style={style}\n >\n {children}\n </Button>\n );\n}\n\nfunction getAriaLabel(emojiNames: string[]) {\n return emojiNames[0].match('flag-')\n ? emojiNames[1] ?? emojiNames[0]\n : emojiNames[0];\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 style?: React.CSSProperties;\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 style\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 style={style}\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 ':after': {\n backgroundPositionY: '-20px'\n }\n },\n ':focus': {\n color: 'var(--epr-highlight-color)',\n backgroundColor: 'var(--epr-hover-bg-color-reduced-opacity)',\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 useAllowExpandReactions,\n useGetEmojiUrlConfig\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 const allowExpandReactions = useAllowExpandReactions();\n const getEmojiUrl = useGetEmojiUrlConfig();\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 getEmojiUrl={getEmojiUrl}\n />\n </li>\n ))}\n {allowExpandReactions ? (\n <li>\n <BtnPlus />\n </li>\n ) : null}\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, useState } 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 const [scrollTop, setScrollTop] = useState(0);\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 setScrollTop(bodyRef?.scrollTop ?? 0);\n closeAllOpenToggles();\n }\n\n return () => {\n bodyRef?.removeEventListener('scroll', onScroll);\n };\n }, [BodyRef, closeAllOpenToggles]);\n\n return scrollTop;\n}\n","export function shouldVirtualize({\n scrollTop,\n clientHeight,\n topOffset,\n style,\n dimensions\n}: {\n scrollTop: number;\n clientHeight: number;\n topOffset: number;\n style: { top: number } | undefined;\n dimensions: Dimensions;\n}): boolean {\n if (!style || !dimensions) {\n return false;\n }\n\n const emojiTop = topOffset + style.top;\n const emojiBottom = emojiTop + dimensions.emojiSize;\n\n const isVisible =\n emojiBottom + dimensions.emojiSize * 2 >= scrollTop &&\n emojiTop <= scrollTop + clientHeight + dimensions.emojiSize;\n\n return !isVisible;\n}\n\nexport function getEmojiPositionStyle(dimensions: Dimensions, index: number) {\n return dimensions\n ? {\n top: Math.floor(index / dimensions.emojisPerRow) * dimensions.emojiSize,\n left: (index % dimensions.emojisPerRow) * dimensions.emojiSize\n }\n : undefined;\n}\n\n// preload emoji if it is one row below viewport\n\nexport type Dimensions =\n | {\n emojiSize: number;\n emojisPerRow: number;\n categoryHeight: number;\n }\n | undefined;\n","import * as React from 'react';\n\nimport { EmojiButtonSelector } from '../DomUtils/selectors';\nimport {\n useEmojiListRef,\n usePickerMainRef\n} from '../components/context/ElementRefContext';\nimport { useReactionsModeState } from '../components/context/PickerContext';\n\nconst EMOJI_SIZE_DEFAULT = 32;\n\nexport function useCategoryHeight(\n emojiCount: number\n):\n | {\n categoryHeight: number;\n emojisPerRow: number;\n emojiSize: number;\n }\n | undefined {\n const EmojiListRef = useEmojiListRef();\n const [isReactionsMode] = useReactionsModeState();\n const PickerMainRef = usePickerMainRef();\n const emojiSizeRef = React.useRef<number | undefined>();\n const [dimensions, setDimensions] = React.useState<{\n categoryHeight: number;\n emojisPerRow: number;\n emojiSize: number;\n }>();\n\n // Helper to compute and store dimensions based on current DOM\n const computeAndSetDimensions = React.useCallback(() => {\n const listEl = EmojiListRef.current;\n if (!listEl) return;\n\n const emojiElement = listEl.querySelector(\n EmojiButtonSelector\n ) as HTMLElement | null;\n\n const measured = emojiElement?.clientHeight;\n const emojiSize = measured ?? emojiSizeRef.current ?? EMOJI_SIZE_DEFAULT;\n emojiSizeRef.current = emojiSize;\n const pickerWidth = listEl.clientWidth;\n\n if (pickerWidth === 0 || emojiSize === 0) return;\n\n const emojisPerRow = Math.max(1, Math.floor(pickerWidth / emojiSize));\n const rowCount = Math.ceil(emojiCount / emojisPerRow);\n const categoryHeight = rowCount * emojiSize;\n\n setDimensions({ categoryHeight, emojisPerRow, emojiSize });\n }, [EmojiListRef, emojiCount]);\n\n // Recompute on data-count changes and when reactions mode toggles\n React.useEffect(() => {\n computeAndSetDimensions();\n }, [emojiCount, isReactionsMode, computeAndSetDimensions]);\n\n // Listen to transitionend on the picker root (where height transition occurs)\n React.useEffect(() => {\n const rootEl = PickerMainRef.current;\n if (!rootEl) return;\n\n const handler = (e: Event) => {\n const te = e as TransitionEvent;\n const prop = te.propertyName;\n if (\n prop === 'width' ||\n prop === 'max-width' ||\n prop === 'min-width' ||\n prop === 'height' ||\n prop === 'max-height' ||\n prop === 'min-height'\n ) {\n if (typeof queueMicrotask === 'function') {\n queueMicrotask(() => computeAndSetDimensions());\n } else {\n requestAnimationFrame(() => computeAndSetDimensions());\n }\n }\n };\n\n rootEl.addEventListener('transitionend', handler, {\n passive: true\n });\n return () => {\n rootEl.removeEventListener('transitionend', handler);\n };\n }, [PickerMainRef, computeAndSetDimensions]);\n\n return dimensions;\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 { ReactNode, useEffect } from 'react';\nimport * as React from 'react';\n\nimport { useBodyRef } from '../components/context/ElementRefContext';\nimport { useActiveSkinToneState } from '../components/context/PickerContext';\nimport { ClickableEmoji } from '../components/emoji/Emoji';\nimport {\n useEmojiStyleConfig,\n useGetEmojiUrlConfig,\n useLazyLoadEmojisConfig,\n useSkinTonesDisabledConfig\n} from '../config/useConfig';\nimport { DataEmojis } from '../dataUtils/DataTypes';\nimport { emojiUnified } from '../dataUtils/emojiSelectors';\nimport {\n getEmojiPositionStyle,\n shouldVirtualize\n} from '../virtualization/virtualizationHelpers';\n\nimport { preloaEmojidIfNeeded } from './preloadEmoji';\nimport { useCategoryHeight } from './useCategoryHeight';\nimport { useIsEmojiDisallowed } from './useDisallowedEmojis';\nimport { useIsEmojiHidden } from './useIsEmojiHidden';\n\nexport function useEmojiVirtualization({\n categoryEmojis,\n topOffset,\n onHeightReady,\n scrollTop\n}: {\n categoryEmojis: DataEmojis;\n topOffset: number;\n onHeightReady: (height: number) => void;\n scrollTop: number;\n}) {\n const isEmojiHidden = useIsEmojiHidden();\n const lazyLoadEmojis = useLazyLoadEmojisConfig();\n const emojiStyle = useEmojiStyleConfig();\n const [activeSkinTone] = useActiveSkinToneState();\n const isEmojiDisallowed = useIsEmojiDisallowed();\n const getEmojiUrl = useGetEmojiUrlConfig();\n const showVariations = !useSkinTonesDisabledConfig();\n const BodyRef = useBodyRef();\n\n let virtualizedCounter = 0;\n\n const emojisToPush = categoryEmojis.filter(emoji => {\n const isDisallowed = isEmojiDisallowed(emoji);\n const { failedToLoad, filteredOut, hidden } = isEmojiHidden(emoji);\n\n return !failedToLoad && !filteredOut && !hidden && !isDisallowed;\n });\n\n const dimensions = useCategoryHeight(emojisToPush.length);\n\n useEffect(() => {\n if (dimensions) {\n onHeightReady(dimensions.categoryHeight);\n }\n }, [dimensions, onHeightReady, emojisToPush.length]);\n\n const emojis = emojisToPush.reduce((accumulator, emoji, index) => {\n const unified = emojiUnified(emoji, activeSkinTone);\n const style = getEmojiPositionStyle(dimensions, index);\n if (\n dimensions &&\n BodyRef.current &&\n shouldVirtualize({\n scrollTop,\n clientHeight: BodyRef.current?.clientHeight ?? 0,\n topOffset,\n style,\n dimensions\n })\n ) {\n virtualizedCounter++;\n preloaEmojidIfNeeded(\n emoji,\n emojiStyle,\n scrollTop,\n BodyRef.current?.clientHeight ?? 0,\n topOffset,\n style,\n dimensions,\n getEmojiUrl\n );\n return accumulator;\n }\n accumulator.push(\n <ClickableEmoji\n showVariations={showVariations}\n key={unified}\n emoji={emoji}\n unified={unified}\n emojiStyle={emojiStyle}\n lazyLoad={lazyLoadEmojis}\n getEmojiUrl={getEmojiUrl}\n style={{\n ...style,\n position: 'absolute'\n }}\n />\n );\n return accumulator;\n }, [] as ReactNode[]);\n\n return {\n virtualizedCounter,\n emojis,\n dimensions\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 {\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 height?: number;\n}>;\n\nexport function EmojiCategory({\n categoryConfig,\n children,\n hidden,\n hiddenOnSearch,\n height\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)} style={{ height }}>\n {children}\n </div>\n </li>\n );\n}\n\nconst styles = stylesheet.create({\n category: {\n '.': ClassNames.category,\n position: 'relative'\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-ignore - backdropFilter is not recognized.\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 { cx } from 'flairup';\nimport * as React from 'react';\n\nimport { ClassNames } from '../../DomUtils/classNames';\nimport { getLabelHeight } from '../../DomUtils/elementPositionInRow';\nimport { stylesheet } from '../../Stylesheet/stylesheet';\nimport {\n CategoryConfig,\n categoryFromCategoryConfig\n} from '../../config/categoryConfig';\nimport { useCategoriesConfig } from '../../config/useConfig';\nimport { DataEmojis } from '../../dataUtils/DataTypes';\nimport { useGetEmojisByCategory } from '../../dataUtils/emojiSelectors';\nimport { useEmojiVirtualization } from '../../hooks/useEmojiVirtualization';\nimport { useEmojiListRef } from '../context/ElementRefContext';\n\nimport { EmojiCategory } from './EmojiCategory';\n\nexport function EmojiList({ scrollTop }: { scrollTop: number }) {\n const categories = useCategoriesConfig();\n const [categoryHeights, setCategoryHeights] = React.useState<{\n [key: string]: number;\n }>({});\n const EmojiListRef = useEmojiListRef();\n const getEmojisByCategory = useGetEmojisByCategory();\n\n const labelHeight = getLabelHeight(EmojiListRef.current);\n\n let topOffset = 0;\n return (\n <ul className={cx(styles.emojiList)} ref={EmojiListRef}>\n {categories.map(categoryConfig => {\n const category = categoryFromCategoryConfig(categoryConfig);\n\n const currentOffset = topOffset;\n const categoryHeight = categoryHeights[category];\n if (categoryHeight) {\n topOffset += categoryHeight + labelHeight;\n }\n\n return (\n <React.Suspense key={category}>\n <RenderCategory\n categoryEmojis={getEmojisByCategory(category)}\n categoryConfig={categoryConfig}\n topOffset={currentOffset}\n onHeightReady={height => {\n if (categoryHeights[category] !== height) {\n setCategoryHeights(prev => ({ ...prev, [category]: height }));\n }\n }}\n scrollTop={scrollTop}\n />\n </React.Suspense>\n );\n })}\n </ul>\n );\n}\n\nfunction RenderCategory({\n categoryEmojis,\n categoryConfig,\n topOffset,\n onHeightReady,\n scrollTop\n}: {\n categoryEmojis: DataEmojis;\n categoryConfig: CategoryConfig;\n topOffset: number;\n onHeightReady: (height: number) => void;\n scrollTop: number;\n}) {\n const { virtualizedCounter, emojis, dimensions } = useEmojiVirtualization({\n categoryEmojis,\n topOffset,\n onHeightReady,\n scrollTop\n });\n\n return (\n <EmojiCategory\n categoryConfig={categoryConfig}\n height={dimensions?.categoryHeight}\n // Indicates that there are no visible emojis\n // Hence, the category should be hidden\n hidden={!emojis.length && virtualizedCounter === 0}\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 const scrollTop = 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 scrollTop={scrollTop} />\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) {\n return handlePartiallyVisibleElementFocus(button, setPreviewEmoji);\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\nfunction handlePartiallyVisibleElementFocus(\n button: HTMLElement,\n setPreviewEmoji: React.Dispatch<React.SetStateAction<PreviewEmoji>>\n) {\n const { unified, originalUnified } = allUnifiedFromEmojiElement(button);\n\n if (!unified || !originalUnified) {\n return;\n }\n\n (document.activeElement as HTMLElement)?.blur?.();\n\n setPreviewEmoji({\n unified,\n originalUnified\n });\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 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 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 border: '1px solid var(--epr-skin-tone-outer-border-color)',\n boxShadow: 'inset 0px 0px 0 1px var(--epr-skin-tone-inner-border-color)',\n ':hover': {\n boxShadow: '0 0 0 3px var(--epr-active-skin-hover-color), inset 0px 0px 0 1px var(--epr-skin-tone-inner-border-color)'\n },\n ':focus': {\n boxShadow: '0 0 0 3px var(--epr-focus-bg-color)'\n },\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 {\n useOnSkinToneChangeConfig,\n useSkinTonesDisabledConfig\n} 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 onSkinToneChange = useOnSkinToneChangeConfig();\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 onSkinToneChange(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 - backdropFilter is not recognized.\n backdropFilter: 'blur(5px)',\n background: 'var(--epr-skin-tone-picker-menu-color)',\n '.epr-active': {\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 }\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 {\n useEmojiVariationPickerState,\n useReactionsModeState\n} 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 const [reactionsOpen] = useReactionsModeState();\n\n if (!previewConfig.showPreview) {\n return null;\n }\n\n return (\n <Flex\n className={cx(\n styles.preview,\n commonInteractionStyles.hiddenOnReactions,\n reactionsOpen && styles.hideOnReactions\n )}\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 hideOnReactions: {\n opacity: '0',\n transition: 'opacity 0.5s ease-in-out'\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 '&.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 scrollCategoryIntoView(category);\n setTimeout(() => {\n setActiveCategory(category);\n }, 10);\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 { 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';\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 { 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 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 <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 onChange(event?.target?.value ?? value);\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 { useAllowExpandReactions, 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 allowExpandReactions = useAllowExpandReactions();\n\n const [renderAll, setRenderAll] = React.useState(!reactionsDefaultOpen);\n const isOpen = useOpenConfig();\n\n React.useEffect(() => {\n if (reactionsDefaultOpen && !allowExpandReactions) {\n return;\n }\n\n if (!renderAll) {\n setRenderAll(true);\n }\n }, [renderAll, allowExpandReactions, reactionsDefaultOpen]);\n\n if (!isOpen) {\n return null;\n }\n\n return (\n <PickerMain>\n <Reactions />\n <ExpandedPickerContent renderAll={renderAll} />\n </PickerMain>\n );\n}\n\nfunction ExpandedPickerContent({ renderAll }: { renderAll: boolean }) {\n if (!renderAll) {\n return null;\n }\n\n return (\n <>\n <Header />\n <Body />\n <Preview />\n </>\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 onSkinToneChange: props.onSkinToneChange,\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","alphaNumericEmojiIndex","setTimeout","allEmojis","reduce","searchIndex","emoji","indexEmoji","joinedNameString","emojiNames","flat","toLowerCase","replace","split","forEach","char","_alphaNumericEmojiInd","emojiUnified","useDebouncedState","initialValue","delay","_useState","useState","state","setState","timer","useRef","debouncedSetState","Promise","resolve","current","clearTimeout","_window","window","useIsUnicodeHidden","unicodeToHide","useUnicodeToHide","has","useDisallowedEmojis","DisallowedEmojisRef","emojiVersionConfig","useEmojiVersionConfig","useMemo","parseFloat","Number","isNaN","disallowedEmojis","addedInNewerVersion","useIsEmojiDisallowed","isUnicodeHidden","isEmojiDisallowed","unified","unifiedWithoutSkinTone","Boolean","supportedLevel","addedIn","useMarkInitialLoad","dispatch","useEffect","SuggestionMode","EmojiStyle","Theme","SkinTones","Categories","SkinTonePickerLocation","PickerContextProvider","_ref","children","useDefaultSkinToneConfig","useReactionsOpenConfig","filterRef","disallowClickRef","disallowMouseRef","disallowedEmojisRef","suggestedUpdateState","Date","now","searchTerm","skinToneFanOpenState","activeSkinTone","activeCategoryState","emojisThatFailedToLoadState","Set","emojiVariationPickerState","reactionsModeState","isPastInitialLoad","setIsPastInitialLoad","PickerContext","Provider","NEUTRAL","undefined","useFilterRef","_React$useContext","useDisallowClickRef","_React$useContext2","useDisallowMouseRef","_React$useContext3","useReactionsModeState","_React$useContext4","useSearchTermState","_React$useContext5","useActiveSkinToneState","_React$useContext6","useEmojisThatFailedToLoadState","_React$useContext7","useEmojiVariationPickerState","_React$useContext9","useSkinToneFanOpenState","_React$useContext10","useUpdateSuggested","_React$useContext12","suggestedUpdated","setsuggestedUpdate","updateSuggested","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","LIGHT","MEDIUM_LIGHT","MEDIUM","MEDIUM_DARK","DARK","skinTonesNamed","entries","acc","skinTonesMapped","mapped","skinTone","_Object$assign","EmojiProperties","SUGGESTED_LS_KEY","getSuggested","mode","_window$localStorage$","_window2","localStorage","recent","JSON","parse","getItem","FREQUENT","sort","a","b","count","_unused","setSuggested","originalUnified","existing","find","u","nextList","concat","filter","i","original","Math","min","_window3","setItem","stringify","_unused2","_emoji$EmojiPropertie","added_in","emojiName","splat","_splat$splice","splice","emojiHasVariations","_emojiVariationUnifie","emojiVariationUnified","useGetEmojisByCategory","suggestedEmojisModeConfig","useSuggestedEmojisModeConfig","_useUpdateSuggested","suggested","_getSuggested","s","emojiByUnified","getEmojisByCategory","_emojis$category","emojis","emojiUrlByUnified","emojiVariations","_emoji$EmojiPropertie2","variations","variation","includes","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","hiddenEmojis","add","_config$customEmojis","PREVIEW","getEmojiUrl","basePreviewConfig","SEARCH","reactions","allowExpandReactions","defaultEmoji","defaultCaption","showPreview","ConfigContext","PickerConfigProvider","_objectWithoutPropertiesLoose","_excluded","mergedConfig","useSetConfig","_React$useState","setMergedConfig","usePickerConfig","MutableConfigContext","createContext","useMutableConfig","mutableConfig","useContext","useDefineMutableConfig","MutableConfigRef","onEmojiClick","emptyFunc","onReactionClick","onSkinToneChange","MOUSE_EVENT_SOURCE","useSearchPlaceHolderConfig","_usePickerConfig","_find","p","_usePickerConfig2","useAllowExpandReactions","_usePickerConfig3","useSkinTonesDisabledConfig","_usePickerConfig4","useEmojiStyleConfig","_usePickerConfig5","useAutoFocusSearchConfig","_usePickerConfig6","useCategoriesConfig","_usePickerConfig7","useCustomEmojisConfig","_usePickerConfig8","useOpenConfig","_usePickerConfig9","useOnEmojiClickConfig","mouseEventSource","_useMutableConfig","_useReactionsModeStat","setReactionsOpen","handler","REACTIONS","args","apply","collapseToReactions","o","_len2","_key2","useOnSkinToneChangeConfig","_useMutableConfig2","usePreviewConfig","_usePickerConfig10","useThemeConfig","_usePickerConfig11","_usePickerConfig12","useLazyLoadEmojisConfig","_usePickerConfig13","useClassNameConfig","_usePickerConfig14","useStyleConfig","_usePickerConfig15","getDimension","_usePickerConfig16","_usePickerConfig17","useSearchDisabledConfig","_usePickerConfig18","useSkinTonePickerLocationConfig","_usePickerConfig19","_usePickerConfig20","useReactionsConfig","_usePickerConfig21","useGetEmojiUrlConfig","_usePickerConfig22","dimensionConfig","useSearchResultsConfig","searchResultsCount","hasResults","isPlural","toString","useIsSearchMode","_useSearchTermState","focusElement","element","requestAnimationFrame","focus","focusPrevElementSibling","previousElementSibling","focusNextElementSibling","nextElementSibling","focusFirstElementChild","first","firstElementChild","getActiveElement","document","activeElement","ElementRefContextProvider","PickerMainRef","AnchoredEmojiRef","BodyRef","EmojiListRef","SearchInputRef","SkinTonePickerRef","CategoryNavigationRef","VariationPickerRef","ReactionsRef","ElementRefContext","useElementRef","useEmojiListRef","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","countInRow","elementCountInRow","emojisInCurrentCategory","allVisibleEmojis","currentEmojiIndex","indexOf","indexInRow","prevVisibleCategory","allPrevEmojis","lastIndexInRow","at","remainder","firstInNextRow","nextVisibleCategory","emojisInNextCategory","_emojisInNextCategory","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","nextValue","longestMatch","findLongestMatch","filterEmojiObjectByKeyword","_useSearchTermState2","setSearchTerm","then","keyword","filtered","hasMatch","some","useIsEmojiFiltered","_useFilterRef","_useSearchTermState3","isEmojiFilteredBySearchTerm","_filter$searchTerm","dict","longestMatchingKey","keys","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","preloaEmojidIfNeeded","emojiStyles","clientHeight","topOffset","dimensions","NATIVE","preloadedEmojs","emojiTop","viewportBottom","isJustBelowViewport","emojiSize","preloadEmoji","emojiUrl","preloadImage","url","image","Image","src","useOnFocus","onFocus","button","DEFAULT_LABEL_HEIGHT","PickerMain","PickerRootElement","_ref2","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","floor","firstVisibleElementInContainer","elements","maxVisibilityDiffThreshold","parentTop","parentBottom","bottom","parentTopWithLabel","getLabelHeight","visibleElements","elementTop","elementBottom","maxVisibilityDiffPixels","elementTopWithAllowedDiff","elementBottomWithAllowedDiff","parentNode","label","querySelector","EmojiButtonSelector","VisibleEmojiSelector","visible","emojiElement","_emojiElement$closest","originalUnifiedFromEmojiElement","unifiedFromEmojiElement","isEmojiElement","matches","_element$parentElemen","parentElement","elementHeight","_element$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","slice","last","parseNativeEmoji","hex","String","fromCodePoint","parseInt","isCustomCategory","isCustomEmoji","useMouseDownHandlers","ContainerRef","mouseDownTimerRef","_useActiveSkinToneSta","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","getAriaLabel","_emojiNames$","alignItems","justifyContent","maxWidth","maxHeight","content","right","borderLeft","borderRight","transform","borderBottom","zIndex","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","setScrollTop","onScroll","_bodyRef$scrollTop","shouldVirtualize","emojiBottom","isVisible","getEmojiPositionStyle","index","emojisPerRow","left","EMOJI_SIZE_DEFAULT","useCategoryHeight","emojiCount","isReactionsMode","emojiSizeRef","setDimensions","computeAndSetDimensions","listEl","measured","pickerWidth","clientWidth","max","rowCount","ceil","categoryHeight","rootEl","e","te","prop","propertyName","queueMicrotask","useIsEmojiHidden","emojisThatFailedToLoad","isEmojiFiltered","failedToLoad","filteredOut","useEmojiVirtualization","categoryEmojis","onHeightReady","isEmojiHidden","virtualizedCounter","emojisToPush","isDisallowed","_isEmojiHidden","accumulator","_BodyRef$current$clie","_BodyRef$current","_BodyRef$current$clie2","_BodyRef$current2","EmojiCategory","categoryConfig","categoryName","gridGap","gridTemplateColumns","fontWeight","textTransform","EmojiList","categoryHeights","setCategoryHeights","emojiList","currentOffset","RenderCategory","_extends2","_useEmojiVirtualizati","Direction","EmojiVariationPicker","_useVariationPickerTo","useVariationPickerTop","getTop","getMenuDirection","getPointerStyle","usePointerStyle","pointerStyle","Down","pointingUp","pointer","direction","Up","emojiOffsetTop","buttonHeight","boxShadow","transformOrigin","backgroundPosition","SVGTriangle","Body","PICKER","body","flex","overflowY","overflowX","detectEmojyPartiallyBelowFold","buttonRect","bodyRect","y","useEmojiPreviewEvents","allow","setPreviewEmoji","onEscape","onMouseOver","onEnter","onLeave","_allUnifiedFromEmojiE","relatedTarget","belowFoldByPx","handlePartiallyVisibleElementFocus","_allUnifiedFromEmojiE2","_document$activeEleme","blur","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","hideOnReactions","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","useShouldHideCustomEmojis","customCategoryConfig","CategoryButton","isActiveCategory","allowNavigation","catBtn","role","DarkActivePositionY","DarkPositionY","DarkInactivePosition","SVGNavigation","backgroundPositionX","CategoryNavigation","activeCategory","categoriesConfig","hideCustomCategory","nav","BtnClearSearch","btnClearSearch","icnClearnSearch","HoverDark","SVGTimes","IcnSearch","icnSearch","SVGMagnifier","SearchContainer","overlay","Search","placeholder","autoFocus","_useFilter","input","searchContainer","search","_event$target$value","_event$target","visuallyHidden","clip","clipPath","whiteSpace","Header","EmojiPicker","ContentControl","renderAll","setRenderAll","ExpandedPickerContent","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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"}
|