{"version":3,"file":"static/js/vendors-b81863e0.c2ac8f12.js","mappings":"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","sources":["../node_modules/emoji-picker-react/src/DomUtils/classNames.ts","../node_modules/emoji-picker-react/src/Stylesheet/stylesheet.tsx","../node_modules/emoji-picker-react/src/config/compareConfig.ts","../node_modules/emoji-picker-react/src/components/Reactions/DEFAULT_REACTIONS.ts","../node_modules/emoji-picker-react/src/types/exposedTypes.ts","../node_modules/emoji-picker-react/src/config/categoryConfig.ts","../node_modules/emoji-picker-react/src/dataUtils/DataTypes.ts","../node_modules/emoji-picker-react/src/data/skinToneVariations.ts","../node_modules/emoji-picker-react/src/dataUtils/alphaNumericEmojiIndex.ts","../node_modules/emoji-picker-react/src/dataUtils/emojiSelectors.ts","../node_modules/emoji-picker-react/src/config/cdnUrls.ts","../node_modules/emoji-picker-react/src/config/config.ts","../node_modules/emoji-picker-react/src/components/context/PickerConfigContext.tsx","../node_modules/emoji-picker-react/src/config/mutableConfig.ts","../node_modules/emoji-picker-react/src/config/useConfig.ts","../node_modules/emoji-picker-react/src/hooks/useDebouncedState.ts","../node_modules/emoji-picker-react/src/hooks/useHideEmojisByUniocode.ts","../node_modules/emoji-picker-react/src/hooks/useDisallowedEmojis.ts","../node_modules/emoji-picker-react/src/components/context/PickerContext.tsx","../node_modules/emoji-picker-react/src/hooks/useInitialLoad.ts","../node_modules/emoji-picker-react/src/hooks/useIsSearchMode.ts","../node_modules/emoji-picker-react/src/DomUtils/focusElement.ts","../node_modules/emoji-picker-react/src/DomUtils/getActiveElement.ts","../node_modules/emoji-picker-react/src/components/context/ElementRefContext.tsx","../node_modules/emoji-picker-react/src/hooks/useKeyboardNavigation.ts","../node_modules/emoji-picker-react/src/DomUtils/scrollTo.ts","../node_modules/emoji-picker-react/src/DomUtils/selectors.ts","../node_modules/emoji-picker-react/src/DomUtils/keyboardNavigation.ts","../node_modules/emoji-picker-react/src/DomUtils/elementPositionInRow.ts","../node_modules/emoji-picker-react/src/hooks/useCloseAllOpenToggles.ts","../node_modules/emoji-picker-react/src/hooks/useDisallowMouseMove.ts","../node_modules/emoji-picker-react/src/hooks/useFocus.ts","../node_modules/emoji-picker-react/src/hooks/useFilter.ts","../node_modules/emoji-picker-react/src/hooks/useSetVariationPicker.ts","../node_modules/emoji-picker-react/src/hooks/useShouldShowSkinTonePicker.ts","../node_modules/emoji-picker-react/src/hooks/preloadEmoji.ts","../node_modules/emoji-picker-react/src/components/main/PickerMain.tsx","../node_modules/emoji-picker-react/src/hooks/useOnFocus.ts","../node_modules/emoji-picker-react/src/dataUtils/parseNativeEmoji.ts","../node_modules/emoji-picker-react/src/dataUtils/suggested.ts","../node_modules/emoji-picker-react/src/typeRefinements/typeRefinements.ts","../node_modules/emoji-picker-react/src/hooks/useMouseDownHandlers.ts","../node_modules/emoji-picker-react/src/components/atoms/Button.tsx","../node_modules/emoji-picker-react/src/components/emoji/ClickableEmojiButton.tsx","../node_modules/emoji-picker-react/src/components/emoji/emojiStyles.ts","../node_modules/emoji-picker-react/src/components/emoji/EmojiImg.tsx","../node_modules/emoji-picker-react/src/components/emoji/NativeEmoji.tsx","../node_modules/emoji-picker-react/src/components/emoji/ViewOnlyEmoji.tsx","../node_modules/emoji-picker-react/src/components/emoji/Emoji.tsx","../node_modules/emoji-picker-react/src/components/Reactions/BtnPlus.tsx","../node_modules/emoji-picker-react/src/components/Reactions/Reactions.tsx","../node_modules/emoji-picker-react/src/hooks/useIsEmojiHidden.ts","../node_modules/emoji-picker-react/src/components/body/EmojiCategory.tsx","../node_modules/emoji-picker-react/src/hooks/useIsEverMounted.ts","../node_modules/emoji-picker-react/src/components/body/Suggested.tsx","../node_modules/emoji-picker-react/src/components/body/EmojiList.tsx","../node_modules/emoji-picker-react/src/components/body/EmojiVariationPicker.tsx","../node_modules/emoji-picker-react/src/components/body/Body.tsx","../node_modules/emoji-picker-react/src/hooks/useOnScroll.ts","../node_modules/emoji-picker-react/src/components/Layout/Flex.tsx","../node_modules/emoji-picker-react/src/hooks/useEmojiPreviewEvents.ts","../node_modules/emoji-picker-react/src/DomUtils/detectEmojyPartiallyBelowFold.ts","../node_modules/emoji-picker-react/src/components/Layout/Space.tsx","../node_modules/emoji-picker-react/src/components/Layout/Absolute.tsx","../node_modules/emoji-picker-react/src/components/Layout/Relative.tsx","../node_modules/emoji-picker-react/src/components/header/SkinTonePicker/BtnSkinToneVariation.tsx","../node_modules/emoji-picker-react/src/components/header/SkinTonePicker/SkinTonePicker.tsx","../node_modules/emoji-picker-react/src/components/footer/Preview.tsx","../node_modules/emoji-picker-react/src/hooks/useShouldHideCustomEmojis.ts","../node_modules/emoji-picker-react/src/components/navigation/CategoryButton.tsx","../node_modules/emoji-picker-react/src/components/navigation/CategoryNavigation.tsx","../node_modules/emoji-picker-react/src/hooks/useScrollCategoryIntoView.ts","../node_modules/emoji-picker-react/src/hooks/useActiveCategoryScrollDetection.ts","../node_modules/emoji-picker-react/src/DomUtils/categoryNameFromDom.ts","../node_modules/emoji-picker-react/src/components/header/Search/BtnClearSearch.tsx","../node_modules/emoji-picker-react/src/components/header/Search/CssSearch.tsx","../node_modules/emoji-picker-react/src/components/header/Search/IcnSearch.tsx","../node_modules/emoji-picker-react/src/components/header/Search/Search.tsx","../node_modules/emoji-picker-react/src/components/header/Header.tsx","../node_modules/emoji-picker-react/src/EmojiPickerReact.tsx","../node_modules/emoji-picker-react/src/components/ErrorBoundary.tsx","../node_modules/emoji-picker-react/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 \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 = {\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\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;\n\nexport function mergeCategoriesConfig(\n userCategoriesConfig: UserCategoryConfig = [],\n modifiers: CategoryConfigModifiers = {}\n): CategoriesConfig {\n const extra = {} as Record;\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 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 } 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\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 { 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>;\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 { 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 * 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(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;\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;\n onEmojiClick: MouseDownEvent;\n onReactionClick: MouseDownEvent;\n onSkinToneChange: OnSkinToneChange;\n} & Omit;\n\nexport type PickerConfig = Partial;\n\nexport type PickerDimensions = string | number;\n\nexport type MouseDownEvent = (emoji: EmojiClickData, event: MouseEvent) => void;\nexport type OnSkinToneChange = (emoji: SkinTones) => void;\n","import * as React from 'react';\n\nimport { compareConfig } from '../../config/compareConfig';\nimport {\n basePickerConfig,\n mergeConfig,\n PickerConfig,\n PickerConfigInternal\n} from '../../config/config';\n\ntype Props = PickerConfig &\n Readonly<{\n children: React.ReactNode;\n }>;\n\nconst ConfigContext = React.createContext(\n basePickerConfig()\n);\n\nexport function PickerConfigProvider({ children, ...config }: Props) {\n const mergedConfig = useSetConfig(config);\n\n return (\n \n {children}\n \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\n>({} as React.MutableRefObject);\n\nexport function useMutableConfig(): React.MutableRefObject {\n const mutableConfig = React.useContext(MutableConfigContext);\n return mutableConfig;\n}\n\nexport function useDefineMutableConfig(\n config: MutableConfig\n): React.MutableRefObject {\n const MutableConfigRef = React.useRef({\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 = 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 {\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\n const handler =\n (mouseEventSource === MOUSE_EVENT_SOURCE.REACTIONS\n ? current.onReactionClick\n : current.onEmojiClick) ?? current.onEmojiClick;\n\n return handler || (() => {});\n}\n\nexport function useOnSkinToneChangeConfig(\n): (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 { useRef, useState } from 'react';\n\nexport function useDebouncedState(\n initialValue: T,\n delay: number = 0\n): [T, (value: T) => Promise] {\n const [state, setState] = useState(initialValue);\n const timer = useRef(null);\n\n function debouncedSetState(value: T) {\n return new Promise(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>({});\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 * 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(alphaNumericEmojiIndex);\n const disallowClickRef = React.useRef(false);\n const disallowMouseRef = React.useRef(false);\n const disallowedEmojisRef = React.useRef>(\n disallowedEmojis\n );\n\n const suggestedUpdateState = useDebouncedState(Date.now(), 200);\n const searchTerm = useDebouncedState('', 100);\n const skinToneFanOpenState = useState(false);\n const activeSkinTone = useState(defaultSkinTone);\n const activeCategoryState = useState(null);\n const emojisThatFailedToLoadState = useState>(new Set());\n const emojiVariationPickerState = useState(null);\n const reactionsModeState = useState(reactionsDefaultOpen);\n const [isPastInitialLoad, setIsPastInitialLoad] = useState(false);\n\n useMarkInitialLoad(setIsPastInitialLoad);\n\n return (\n \n {children}\n \n );\n}\n\ntype ReactState = [T, React.Dispatch>];\n\nconst PickerContext = React.createContext<{\n searchTerm: [string, (term: string) => Promise];\n suggestedUpdateState: [number, (term: number) => void];\n activeCategoryState: ReactState;\n activeSkinTone: ReactState;\n emojisThatFailedToLoadState: ReactState>;\n isPastInitialLoad: boolean;\n emojiVariationPickerState: ReactState;\n skinToneFanOpenState: ReactState;\n filterRef: React.MutableRefObject;\n disallowClickRef: React.MutableRefObject;\n disallowMouseRef: React.MutableRefObject;\n disallowedEmojisRef: React.MutableRefObject>;\n reactionsModeState: ReactState;\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(() => 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;\n\ntype ActiveCategoryState = null | string;\n","import { useEffect } from 'react';\nimport * as React from 'react';\n\nexport function useMarkInitialLoad(\n dispatch: React.Dispatch>\n) {\n useEffect(() => {\n dispatch(true);\n }, [dispatch]);\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(null);\n const AnchoredEmojiRef = React.useRef(null);\n const BodyRef = React.useRef(null);\n const SearchInputRef = React.useRef(null);\n const SkinTonePickerRef = React.useRef(null);\n const CategoryNavigationRef = React.useRef(null);\n const VariationPickerRef = React.useRef(null);\n const ReactionsRef = React.useRef(null);\n\n return (\n \n {children}\n \n );\n}\n\nexport type ElementRef<\n E extends HTMLElement = HTMLElement\n> = React.MutableRefObject;\n\ntype ElementRefs = {\n PickerMainRef: ElementRef;\n AnchoredEmojiRef: ElementRef;\n SkinTonePickerRef: ElementRef;\n SearchInputRef: ElementRef;\n BodyRef: ElementRef;\n CategoryNavigationRef: ElementRef;\n VariationPickerRef: ElementRef;\n ReactionsRef: ElementRef;\n};\n\nconst ElementRefContext = React.createContext({\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, 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 { 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 { 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","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 { 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 { 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;\n\nfunction findLongestMatch(\n keyword: string,\n dict: Record | 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 { 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 = new Set();\n\nfunction preloadImage(url: string): void {\n const image = new Image();\n image.src = url;\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 \n {children}\n \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 \n {children}\n \n );\n}\n\nconst DarkTheme = {\n '--epr-emoji-variation-picker-bg-color':\n 'var(--epr-dark-emoji-variation-picker-bg-color)',\n '--epr-hover-bg-color-reduced-opacity':\n 'var(--epr-dark-hover-bg-color-reduced-opacity)',\n '--epr-highlight-color': 'var(--epr-dark-highlight-color)',\n '--epr-text-color': 'var(--epr-dark-text-color)',\n '--epr-hover-bg-color': 'var(--epr-dark-hover-bg-color)',\n '--epr-focus-bg-color': 'var(--epr-dark-focus-bg-color)',\n '--epr-search-input-bg-color': 'var(--epr-dark-search-input-bg-color)',\n '--epr-category-label-bg-color': 'var(--epr-dark-category-label-bg-color)',\n '--epr-picker-border-color': 'var(--epr-dark-picker-border-color)',\n '--epr-bg-color': 'var(--epr-dark-bg-color)',\n '--epr-reactions-bg-color': 'var(--epr-dark-reactions-bg-color)',\n '--epr-search-input-bg-color-active':\n 'var(--epr-dark-search-input-bg-color-active)',\n '--epr-emoji-variation-indicator-color':\n 'var(--epr-dark-emoji-variation-indicator-color)',\n '--epr-category-icon-active-color':\n 'var(--epr-dark-category-icon-active-color)',\n '--epr-skin-tone-picker-menu-color':\n 'var(--epr-dark-skin-tone-picker-menu-color)'\n};\n\nconst styles = stylesheet.create({\n main: {\n '.': ['epr-main', ClassNames.emojiPicker],\n position: 'relative',\n display: 'flex',\n flexDirection: 'column',\n borderWidth: '1px',\n borderStyle: 'solid',\n borderRadius: 'var(--epr-picker-border-radius)',\n borderColor: 'var(--epr-picker-border-color)',\n backgroundColor: 'var(--epr-bg-color)',\n overflow: 'hidden',\n transition: 'all 0.3s ease-in-out, background-color 0.1s ease-in-out',\n '*': {\n boxSizing: 'border-box',\n fontFamily: 'sans-serif'\n }\n },\n baseVariables: {\n '--': {\n '--epr-highlight-color': '#007aeb',\n '--epr-hover-bg-color': '#f1f8ff',\n '--epr-hover-bg-color-reduced-opacity': '#f1f8ff80',\n '--epr-focus-bg-color': '#e0f0ff',\n '--epr-text-color': '#858585',\n '--epr-search-input-bg-color': '#f6f6f6',\n '--epr-picker-border-color': '#e7e7e7',\n '--epr-bg-color': '#fff',\n '--epr-reactions-bg-color': '#ffffff90',\n '--epr-category-icon-active-color': '#6aa8de',\n '--epr-skin-tone-picker-menu-color': '#ffffff95',\n\n '--epr-horizontal-padding': '10px',\n\n '--epr-picker-border-radius': '8px',\n\n /* Header */\n '--epr-search-border-color': 'var(--epr-highlight-color)',\n '--epr-header-padding': '15px var(--epr-horizontal-padding)',\n\n /* Skin Tone Picker */\n '--epr-active-skin-tone-indicator-border-color':\n 'var(--epr-highlight-color)',\n '--epr-active-skin-hover-color': 'var(--epr-hover-bg-color)',\n\n /* Search */\n '--epr-search-input-bg-color-active': 'var(--epr-search-input-bg-color)',\n '--epr-search-input-padding': '0 30px',\n '--epr-search-input-border-radius': '8px',\n '--epr-search-input-height': '40px',\n '--epr-search-input-text-color': 'var(--epr-text-color)',\n '--epr-search-input-placeholder-color': 'var(--epr-text-color)',\n '--epr-search-bar-inner-padding': 'var(--epr-horizontal-padding)',\n\n /* Category Navigation */\n '--epr-category-navigation-button-size': '30px',\n\n /* Variation Picker */\n '--epr-emoji-variation-picker-height': '45px',\n '--epr-emoji-variation-picker-bg-color': 'var(--epr-bg-color)',\n\n /* Preview */\n '--epr-preview-height': '70px',\n '--epr-preview-text-size': '14px',\n '--epr-preview-text-padding': '0 var(--epr-horizontal-padding)',\n '--epr-preview-border-color': 'var(--epr-picker-border-color)',\n '--epr-preview-text-color': 'var(--epr-text-color)',\n\n /* Category */\n '--epr-category-padding': '0 var(--epr-horizontal-padding)',\n\n /* Category Label */\n '--epr-category-label-bg-color': '#ffffffe6',\n '--epr-category-label-text-color': 'var(--epr-text-color)',\n '--epr-category-label-padding': '0 var(--epr-horizontal-padding)',\n '--epr-category-label-height': `${DEFAULT_LABEL_HEIGHT}px`,\n\n /* Emoji */\n '--epr-emoji-size': '30px',\n '--epr-emoji-padding': '5px',\n '--epr-emoji-fullsize':\n 'calc(var(--epr-emoji-size) + var(--epr-emoji-padding) * 2)',\n '--epr-emoji-hover-color': 'var(--epr-hover-bg-color)',\n '--epr-emoji-variation-indicator-color': 'var(--epr-picker-border-color)',\n '--epr-emoji-variation-indicator-color-hover': 'var(--epr-text-color)',\n\n /* Z-Index */\n '--epr-header-overlay-z-index': '3',\n '--epr-emoji-variations-indictator-z-index': '1',\n '--epr-category-label-z-index': '2',\n '--epr-skin-variation-picker-z-index': '5',\n '--epr-preview-z-index': '6',\n\n /* Dark Theme Variables */\n '--epr-dark': '#000',\n '--epr-dark-emoji-variation-picker-bg-color': 'var(--epr-dark)',\n '--epr-dark-highlight-color': '#c0c0c0',\n '--epr-dark-text-color': 'var(--epr-highlight-color)',\n '--epr-dark-hover-bg-color': '#363636f6',\n '--epr-dark-hover-bg-color-reduced-opacity': '#36363680',\n '--epr-dark-focus-bg-color': '#474747',\n '--epr-dark-search-input-bg-color': '#333333',\n '--epr-dark-category-label-bg-color': '#222222e6',\n '--epr-dark-picker-border-color': '#151617',\n '--epr-dark-bg-color': '#222222',\n '--epr-dark-reactions-bg-color': '#22222290',\n '--epr-dark-search-input-bg-color-active': 'var(--epr-dark)',\n '--epr-dark-emoji-variation-indicator-color': '#444',\n '--epr-dark-category-icon-active-color': '#3271b7',\n '--epr-dark-skin-tone-picker-menu-color': '#22222295'\n }\n },\n autoThemeDark: {\n '.': ClassNames.autoTheme,\n '@media (prefers-color-scheme: dark)': {\n '--': DarkTheme\n }\n },\n darkTheme: {\n '.': ClassNames.darkTheme,\n '--': DarkTheme\n },\n reactionsMenu: {\n '.': 'epr-reactions',\n height: '50px',\n display: 'inline-flex',\n backgroundColor: 'var(--epr-reactions-bg-color)',\n // @ts-ignore - backdropFilter is not recognized.\n backdropFilter: 'blur(8px)',\n '--': {\n '--epr-picker-border-radius': '50px'\n }\n }\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","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): 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,\n mouseEventSource: MOUSE_EVENT_SOURCE\n) {\n const mouseDownTimerRef = useRef();\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,\n HTMLButtonElement\n > {\n className?: string;\n}\n\nexport function Button(props: Props) {\n return (\n \n {props.children}\n \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