emoji-picker-react 4.22.3 → 5.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (405) hide show
  1. package/README.md +331 -49
  2. package/dist/DomUtils/categoryNameFromDom.d.ts +1 -1
  3. package/dist/DomUtils/classNames.d.ts +24 -23
  4. package/dist/DomUtils/detectEmojyPartiallyBelowFold.d.ts +2 -2
  5. package/dist/DomUtils/elementPositionInRow.d.ts +5 -5
  6. package/dist/DomUtils/eventBelongsToPicker.d.ts +2 -0
  7. package/dist/DomUtils/focusElement.d.ts +5 -5
  8. package/dist/DomUtils/getActiveElement.d.ts +2 -2
  9. package/dist/DomUtils/isJsdom.d.ts +1 -0
  10. package/dist/DomUtils/isRtl.d.ts +1 -0
  11. package/dist/DomUtils/keyboardNavigation.d.ts +7 -8
  12. package/dist/DomUtils/scrollTo.d.ts +4 -5
  13. package/dist/DomUtils/selectors.d.ts +31 -35
  14. package/dist/EmojiPickerReact.d.ts +5 -5
  15. package/dist/Stylesheet/DedupedStyle.d.ts +13 -0
  16. package/dist/Stylesheet/stylesheet.d.ts +40 -37
  17. package/dist/components/ErrorBoundary.d.ts +15 -15
  18. package/dist/components/Layout/Absolute.d.ts +8 -8
  19. package/dist/components/Layout/Flex.d.ts +13 -13
  20. package/dist/components/Layout/Relative.d.ts +8 -8
  21. package/dist/components/Layout/Space.d.ts +7 -7
  22. package/dist/components/Reactions/BtnPlus.d.ts +2 -2
  23. package/dist/components/Reactions/DEFAULT_REACTIONS.d.ts +1 -1
  24. package/dist/components/Reactions/Reactions.d.ts +3 -2
  25. package/dist/components/atoms/Button.d.ts +11 -6
  26. package/dist/components/body/EmojiCategory.d.ts +13 -12
  27. package/dist/components/body/EmojiList.d.ts +7 -4
  28. package/dist/components/body/EmojiVariationPicker.d.ts +2 -2
  29. package/dist/components/body/MeasureEmoji.d.ts +2 -2
  30. package/dist/components/body/listComponents.d.ts +47 -0
  31. package/dist/components/context/ElementRefContext.d.ts +18 -16
  32. package/dist/components/context/PickerConfigContext.d.ts +14 -9
  33. package/dist/components/context/PickerContext.d.ts +57 -25
  34. package/dist/components/context/PickerDataContext.d.ts +23 -17
  35. package/dist/components/emoji/BaseEmojiProps.d.ts +14 -13
  36. package/dist/components/emoji/ClickableEmojiButton.d.ts +23 -15
  37. package/dist/components/emoji/Emoji.d.ts +18 -15
  38. package/dist/components/emoji/EmojiImg.d.ts +11 -11
  39. package/dist/components/emoji/ExportedEmoji.d.ts +11 -11
  40. package/dist/components/emoji/NativeEmoji.d.ts +6 -6
  41. package/dist/components/emoji/ViewOnlyEmoji.d.ts +3 -3
  42. package/dist/components/emoji/emojiStyles.d.ts +6 -1
  43. package/dist/components/footer/Preview.d.ts +7 -7
  44. package/dist/components/header/Header.d.ts +2 -2
  45. package/dist/components/header/Search/BtnClearSearch.d.ts +2 -2
  46. package/dist/components/header/Search/IcnSearch.d.ts +2 -2
  47. package/dist/components/header/Search/Search.d.ts +11 -3
  48. package/dist/components/header/SkinTonePicker/BtnSkinToneVariation.d.ts +12 -12
  49. package/dist/components/header/SkinTonePicker/SkinTonePicker.d.ts +11 -11
  50. package/dist/components/icons/svgIcons.d.ts +4 -0
  51. package/dist/components/main/PickerMainBehaviors.d.ts +4 -0
  52. package/dist/components/main/defaultAppearance.d.ts +12 -0
  53. package/dist/components/main/labelHeight.d.ts +1 -0
  54. package/dist/components/navigation/CategoryButton.d.ts +12 -12
  55. package/dist/components/navigation/CategoryNavIcon.d.ts +4 -4
  56. package/dist/components/navigation/CategoryNavigation.d.ts +19 -2
  57. package/dist/config/categoryConfig.d.ts +34 -34
  58. package/dist/config/cdnUrls.d.ts +2 -2
  59. package/dist/config/compareConfig.d.ts +10 -2
  60. package/dist/config/config.d.ts +166 -64
  61. package/dist/config/customEmojiConfig.d.ts +14 -14
  62. package/dist/config/defaultPickerConfiguration.d.ts +10 -0
  63. package/dist/config/mutableConfig.d.ts +32 -10
  64. package/dist/config/useConfig.d.ts +48 -36
  65. package/dist/data/defaultEmojiData.d.ts +9 -0
  66. package/dist/data/defaultEmojiData.js +40 -0
  67. package/dist/data/emojis-bn.d.mts +39 -0
  68. package/dist/data/emojis-bn.d.ts +38 -2
  69. package/dist/data/emojis-bn.js +25 -2
  70. package/dist/data/emojis-bn.mjs +2 -0
  71. package/dist/data/emojis-da.d.mts +39 -0
  72. package/dist/data/emojis-da.d.ts +38 -2
  73. package/dist/data/emojis-da.js +25 -2
  74. package/dist/data/emojis-da.mjs +2 -0
  75. package/dist/data/emojis-de.d.mts +39 -0
  76. package/dist/data/emojis-de.d.ts +38 -2
  77. package/dist/data/emojis-de.js +25 -2
  78. package/dist/data/emojis-de.mjs +2 -0
  79. package/dist/data/emojis-en-gb.d.mts +39 -0
  80. package/dist/data/emojis-en-gb.d.ts +38 -2
  81. package/dist/data/emojis-en-gb.js +25 -2
  82. package/dist/data/emojis-en-gb.mjs +2 -0
  83. package/dist/data/emojis-en.d.mts +39 -0
  84. package/dist/data/emojis-en.d.ts +38 -2
  85. package/dist/data/emojis-en.js +25 -2
  86. package/dist/data/emojis-en.mjs +2 -0
  87. package/dist/data/emojis-es-mx.d.mts +39 -0
  88. package/dist/data/emojis-es-mx.d.ts +38 -2
  89. package/dist/data/emojis-es-mx.js +25 -2
  90. package/dist/data/emojis-es-mx.mjs +2 -0
  91. package/dist/data/emojis-es.d.mts +39 -0
  92. package/dist/data/emojis-es.d.ts +38 -2
  93. package/dist/data/emojis-es.js +25 -2
  94. package/dist/data/emojis-es.mjs +2 -0
  95. package/dist/data/emojis-et.d.mts +39 -0
  96. package/dist/data/emojis-et.d.ts +38 -2
  97. package/dist/data/emojis-et.js +25 -2
  98. package/dist/data/emojis-et.mjs +2 -0
  99. package/dist/data/emojis-fi.d.mts +39 -0
  100. package/dist/data/emojis-fi.d.ts +38 -2
  101. package/dist/data/emojis-fi.js +25 -2
  102. package/dist/data/emojis-fi.mjs +2 -0
  103. package/dist/data/emojis-fr.d.mts +39 -0
  104. package/dist/data/emojis-fr.d.ts +38 -2
  105. package/dist/data/emojis-fr.js +25 -2
  106. package/dist/data/emojis-fr.mjs +2 -0
  107. package/dist/data/emojis-hi.d.mts +39 -0
  108. package/dist/data/emojis-hi.d.ts +38 -2
  109. package/dist/data/emojis-hi.js +25 -2
  110. package/dist/data/emojis-hi.mjs +2 -0
  111. package/dist/data/emojis-hu.d.mts +39 -0
  112. package/dist/data/emojis-hu.d.ts +38 -2
  113. package/dist/data/emojis-hu.js +25 -2
  114. package/dist/data/emojis-hu.mjs +2 -0
  115. package/dist/data/emojis-it.d.mts +39 -0
  116. package/dist/data/emojis-it.d.ts +38 -2
  117. package/dist/data/emojis-it.js +25 -2
  118. package/dist/data/emojis-it.mjs +2 -0
  119. package/dist/data/emojis-ja.d.mts +39 -0
  120. package/dist/data/emojis-ja.d.ts +38 -2
  121. package/dist/data/emojis-ja.js +25 -2
  122. package/dist/data/emojis-ja.mjs +2 -0
  123. package/dist/data/emojis-ko.d.mts +39 -0
  124. package/dist/data/emojis-ko.d.ts +38 -2
  125. package/dist/data/emojis-ko.js +25 -2
  126. package/dist/data/emojis-ko.mjs +2 -0
  127. package/dist/data/emojis-lt.d.mts +39 -0
  128. package/dist/data/emojis-lt.d.ts +38 -2
  129. package/dist/data/emojis-lt.js +25 -2
  130. package/dist/data/emojis-lt.mjs +2 -0
  131. package/dist/data/emojis-ms.d.mts +39 -0
  132. package/dist/data/emojis-ms.d.ts +38 -2
  133. package/dist/data/emojis-ms.js +25 -2
  134. package/dist/data/emojis-ms.mjs +2 -0
  135. package/dist/data/emojis-nb.d.mts +39 -0
  136. package/dist/data/emojis-nb.d.ts +38 -2
  137. package/dist/data/emojis-nb.js +25 -2
  138. package/dist/data/emojis-nb.mjs +2 -0
  139. package/dist/data/emojis-nl.d.mts +39 -0
  140. package/dist/data/emojis-nl.d.ts +38 -2
  141. package/dist/data/emojis-nl.js +25 -2
  142. package/dist/data/emojis-nl.mjs +2 -0
  143. package/dist/data/emojis-pl.d.mts +39 -0
  144. package/dist/data/emojis-pl.d.ts +38 -2
  145. package/dist/data/emojis-pl.js +25 -2
  146. package/dist/data/emojis-pl.mjs +2 -0
  147. package/dist/data/emojis-pt.d.mts +39 -0
  148. package/dist/data/emojis-pt.d.ts +38 -2
  149. package/dist/data/emojis-pt.js +25 -2
  150. package/dist/data/emojis-pt.mjs +2 -0
  151. package/dist/data/emojis-ru.d.mts +39 -0
  152. package/dist/data/emojis-ru.d.ts +38 -2
  153. package/dist/data/emojis-ru.js +25 -2
  154. package/dist/data/emojis-ru.mjs +2 -0
  155. package/dist/data/emojis-sv.d.mts +39 -0
  156. package/dist/data/emojis-sv.d.ts +38 -2
  157. package/dist/data/emojis-sv.js +25 -2
  158. package/dist/data/emojis-sv.mjs +2 -0
  159. package/dist/data/emojis-th.d.mts +39 -0
  160. package/dist/data/emojis-th.d.ts +38 -2
  161. package/dist/data/emojis-th.js +25 -2
  162. package/dist/data/emojis-th.mjs +2 -0
  163. package/dist/data/emojis-uk.d.mts +39 -0
  164. package/dist/data/emojis-uk.d.ts +38 -2
  165. package/dist/data/emojis-uk.js +25 -2
  166. package/dist/data/emojis-uk.mjs +2 -0
  167. package/dist/data/emojis-vi.d.mts +39 -0
  168. package/dist/data/emojis-vi.d.ts +38 -2
  169. package/dist/data/emojis-vi.js +25 -2
  170. package/dist/data/emojis-vi.mjs +2 -0
  171. package/dist/data/emojis-zh-hant.d.mts +39 -0
  172. package/dist/data/emojis-zh-hant.d.ts +38 -2
  173. package/dist/data/emojis-zh-hant.js +25 -2
  174. package/dist/data/emojis-zh-hant.mjs +2 -0
  175. package/dist/data/emojis-zh.d.mts +39 -0
  176. package/dist/data/emojis-zh.d.ts +38 -2
  177. package/dist/data/emojis-zh.js +25 -2
  178. package/dist/data/emojis-zh.mjs +2 -0
  179. package/dist/data/index.js +1 -0
  180. package/dist/data/registerDefaultEmojiData.d.ts +1 -0
  181. package/dist/data/registerDefaultEmojiData.js +3 -0
  182. package/dist/data-core/pickerData.d.ts +12 -0
  183. package/dist/data-core/prepare.d.ts +23 -0
  184. package/dist/data-core/search.d.ts +13 -0
  185. package/dist/data-core/types.d.ts +23 -0
  186. package/dist/data.d.mts +72 -0
  187. package/dist/data.d.ts +72 -0
  188. package/dist/dataUtils/DataTypes.d.ts +23 -19
  189. package/dist/dataUtils/emojiSelectors.d.ts +15 -16
  190. package/dist/dataUtils/emojiUtils.d.ts +1 -12
  191. package/dist/dataUtils/nativeEmojiSequenceSupport.d.ts +10 -0
  192. package/dist/dataUtils/nativeEmojiSupport.d.ts +40 -0
  193. package/dist/dataUtils/parseNativeEmoji.d.ts +1 -1
  194. package/dist/dataUtils/suggested.d.ts +11 -11
  195. package/dist/dataUtils/suggestedEmojis.d.ts +7 -0
  196. package/dist/esm/chunks/chunk-46BUDQLE.mjs +228 -0
  197. package/dist/esm/chunks/chunk-7ZGTUZFB.mjs +16 -0
  198. package/dist/esm/chunks/chunk-FQIJ4HBW.mjs +25 -0
  199. package/dist/esm/chunks/chunk-KQPOIRSC.mjs +9305 -0
  200. package/dist/esm/chunks/chunk-LO4TPPLH.mjs +43 -0
  201. package/dist/esm/chunks/emojis-6L3GRBAP.mjs +9 -0
  202. package/dist/esm/data.mjs +18 -0
  203. package/dist/esm/index.mjs +389 -0
  204. package/dist/esm/primitives/index.mjs +67 -0
  205. package/dist/hooks/preloadEmoji.d.ts +9 -9
  206. package/dist/hooks/useActiveCategoryScrollDetection.d.ts +11 -11
  207. package/dist/hooks/useCategoryHeight.d.ts +6 -5
  208. package/dist/hooks/useCloseAllOpenToggles.d.ts +2 -2
  209. package/dist/hooks/useDataIdentityStabilityWarning.d.ts +13 -0
  210. package/dist/hooks/useDebouncedState.d.ts +1 -1
  211. package/dist/hooks/useDisallowMouseMove.d.ts +4 -4
  212. package/dist/hooks/useDisallowedEmojis.d.ts +2 -3
  213. package/dist/hooks/useEmojiPreviewEvents.d.ts +3 -3
  214. package/dist/hooks/useEmojiVirtualization.d.ts +21 -17
  215. package/dist/hooks/useFilter.d.ts +10 -16
  216. package/dist/hooks/useFocus.d.ts +3 -3
  217. package/dist/hooks/useInitialLoad.d.ts +2 -2
  218. package/dist/hooks/useIsEmojiHidden.d.ts +8 -8
  219. package/dist/hooks/useIsMounted.d.ts +1 -1
  220. package/dist/hooks/useIsSearchMode.d.ts +1 -1
  221. package/dist/hooks/useIsomorphicLayoutEffect.d.ts +2 -2
  222. package/dist/hooks/useKeyboardNavigation.d.ts +3 -1
  223. package/dist/hooks/useMouseDownHandlers.d.ts +8 -4
  224. package/dist/hooks/useOnFocus.d.ts +1 -1
  225. package/dist/hooks/useOnScroll.d.ts +2 -2
  226. package/dist/hooks/useReactionsFocus.d.ts +1 -0
  227. package/dist/hooks/useRegisterRegion.d.ts +24 -0
  228. package/dist/hooks/useResolvedEmojiData.d.ts +37 -0
  229. package/dist/hooks/useScrollCategoryIntoView.d.ts +1 -1
  230. package/dist/hooks/useSearchController.d.ts +17 -0
  231. package/dist/hooks/useSearchResults.d.ts +8 -0
  232. package/dist/hooks/useSetVariationPicker.d.ts +2 -2
  233. package/dist/hooks/useShouldHideCustomEmojis.d.ts +1 -1
  234. package/dist/hooks/useShouldShowSkinTonePicker.d.ts +4 -4
  235. package/dist/index.d.mts +376 -0
  236. package/dist/index.d.ts +376 -9
  237. package/dist/index.js +2 -8
  238. package/dist/primitives/CategoryNav.d.ts +4 -0
  239. package/dist/primitives/Empty.d.ts +6 -0
  240. package/dist/primitives/List.d.ts +4 -0
  241. package/dist/primitives/LoadError.d.ts +8 -0
  242. package/dist/primitives/Loading.d.ts +4 -0
  243. package/dist/primitives/Panel.d.ts +3 -0
  244. package/dist/primitives/Preview.d.ts +3 -0
  245. package/dist/primitives/Reactions.d.ts +2 -0
  246. package/dist/primitives/Root.d.ts +26 -0
  247. package/dist/primitives/Search.d.ts +5 -0
  248. package/dist/primitives/SearchInput.d.ts +3 -0
  249. package/dist/primitives/SkinTone.d.ts +4 -0
  250. package/dist/primitives/Viewport.d.ts +19 -0
  251. package/dist/primitives/appearance.d.ts +3 -0
  252. package/dist/primitives/components.d.ts +27 -0
  253. package/dist/primitives/hooks.d.ts +48 -0
  254. package/dist/primitives/index.d.mts +561 -0
  255. package/dist/primitives/index.d.ts +561 -0
  256. package/dist/primitives/index.js +2 -0
  257. package/dist/primitives/nativeProps.d.ts +15 -0
  258. package/dist/primitives/scope.d.ts +13 -0
  259. package/dist/primitives/structuralStyles.d.ts +16 -0
  260. package/dist/primitives/tokens.d.ts +18 -0
  261. package/dist/primitives/types.d.ts +85 -0
  262. package/dist/state/activeEmojiStore.d.ts +7 -0
  263. package/dist/state/navigationRegistry.d.ts +61 -0
  264. package/dist/state/regionTraversal.d.ts +20 -0
  265. package/dist/typeRefinements/typeRefinements.d.ts +6 -6
  266. package/dist/types/exposedTypes.d.ts +16 -6
  267. package/dist/types/exposedTypes.js +5 -0
  268. package/dist/virtualization/virtualizationHelpers.d.ts +20 -18
  269. package/llms-full.txt +3680 -0
  270. package/llms.txt +66 -480
  271. package/package.json +180 -66
  272. package/src/DomUtils/categoryNameFromDom.ts +1 -1
  273. package/src/DomUtils/classNames.ts +1 -0
  274. package/src/DomUtils/elementPositionInRow.ts +26 -4
  275. package/src/DomUtils/eventBelongsToPicker.ts +17 -0
  276. package/src/DomUtils/getActiveElement.ts +7 -1
  277. package/src/DomUtils/isJsdom.ts +12 -0
  278. package/src/DomUtils/isRtl.ts +5 -0
  279. package/src/DomUtils/keyboardNavigation.ts +105 -149
  280. package/src/DomUtils/scrollTo.ts +18 -16
  281. package/src/DomUtils/selectors.ts +20 -111
  282. package/src/EmojiPickerReact.tsx +155 -48
  283. package/src/Stylesheet/DedupedStyle.tsx +80 -0
  284. package/src/Stylesheet/stylesheet.tsx +128 -59
  285. package/src/components/Layout/Flex.tsx +12 -11
  286. package/src/components/Reactions/BtnPlus.tsx +61 -51
  287. package/src/components/Reactions/Reactions.tsx +113 -55
  288. package/src/components/atoms/Button.tsx +18 -15
  289. package/src/components/body/EmojiCategory.tsx +77 -40
  290. package/src/components/body/EmojiList.tsx +55 -23
  291. package/src/components/body/EmojiVariationPicker.tsx +113 -66
  292. package/src/components/body/MeasureEmoji.tsx +9 -2
  293. package/src/components/body/listComponents.tsx +79 -0
  294. package/src/components/context/ElementRefContext.tsx +46 -35
  295. package/src/components/context/PickerConfigContext.tsx +55 -40
  296. package/src/components/context/PickerContext.tsx +567 -92
  297. package/src/components/context/PickerDataContext.tsx +110 -99
  298. package/src/components/emoji/BaseEmojiProps.ts +5 -4
  299. package/src/components/emoji/ClickableEmojiButton.tsx +148 -63
  300. package/src/components/emoji/Emoji.tsx +24 -2
  301. package/src/components/emoji/EmojiImg.tsx +13 -12
  302. package/src/components/emoji/ExportedEmoji.tsx +5 -4
  303. package/src/components/emoji/NativeEmoji.tsx +19 -16
  304. package/src/components/emoji/ViewOnlyEmoji.tsx +55 -30
  305. package/src/components/emoji/emojiStyles.ts +12 -11
  306. package/src/components/footer/Preview.tsx +86 -91
  307. package/src/components/header/Header.tsx +21 -6
  308. package/src/components/header/Search/BtnClearSearch.tsx +69 -55
  309. package/src/components/header/Search/IcnSearch.tsx +21 -21
  310. package/src/components/header/Search/Search.tsx +77 -137
  311. package/src/components/header/SkinTonePicker/BtnSkinToneVariation.tsx +99 -62
  312. package/src/components/header/SkinTonePicker/SkinTonePicker.tsx +84 -46
  313. package/src/components/icons/svgIcons.ts +17 -0
  314. package/src/components/main/PickerMainBehaviors.tsx +163 -0
  315. package/src/components/main/defaultAppearance.tsx +188 -0
  316. package/src/components/main/labelHeight.ts +5 -0
  317. package/src/components/navigation/CategoryButton.tsx +83 -57
  318. package/src/components/navigation/CategoryNavIcon.tsx +73 -194
  319. package/src/components/navigation/CategoryNavigation.tsx +118 -46
  320. package/src/config/categoryConfig.ts +7 -3
  321. package/src/config/cdnUrls.ts +11 -21
  322. package/src/config/compareConfig.ts +128 -30
  323. package/src/config/config.ts +228 -24
  324. package/src/config/defaultPickerConfiguration.ts +7 -0
  325. package/src/config/mutableConfig.ts +44 -20
  326. package/src/config/useConfig.ts +130 -37
  327. package/src/data/defaultEmojiData.ts +49 -0
  328. package/src/data/registerDefaultEmojiData.ts +8 -0
  329. package/src/data-core/pickerData.ts +173 -0
  330. package/src/data-core/prepare.ts +178 -0
  331. package/src/data-core/search.ts +122 -0
  332. package/src/data-core/types.ts +36 -0
  333. package/src/data.ts +10 -0
  334. package/src/dataUtils/DataTypes.ts +4 -0
  335. package/src/dataUtils/emojiSelectors.ts +58 -63
  336. package/src/dataUtils/emojiUtils.ts +17 -74
  337. package/src/dataUtils/nativeEmojiSequenceSupport.ts +116 -0
  338. package/src/dataUtils/nativeEmojiSupport.ts +160 -0
  339. package/src/dataUtils/suggested.ts +8 -4
  340. package/src/dataUtils/suggestedEmojis.ts +92 -0
  341. package/src/env.d.ts +4 -0
  342. package/src/hooks/preloadEmoji.ts +3 -3
  343. package/src/hooks/useActiveCategoryScrollDetection.ts +10 -1
  344. package/src/hooks/useCategoryHeight.ts +82 -8
  345. package/src/hooks/useDataIdentityStabilityWarning.ts +86 -0
  346. package/src/hooks/useDebouncedState.ts +13 -1
  347. package/src/hooks/useDisallowedEmojis.ts +26 -42
  348. package/src/hooks/useEmojiPreviewEvents.ts +43 -10
  349. package/src/hooks/useEmojiVirtualization.tsx +38 -4
  350. package/src/hooks/useFilter.ts +85 -127
  351. package/src/hooks/useFocus.ts +14 -24
  352. package/src/hooks/useIsEmojiHidden.ts +10 -6
  353. package/src/hooks/useKeyboardNavigation.ts +322 -429
  354. package/src/hooks/useMouseDownHandlers.ts +91 -16
  355. package/src/hooks/useOnFocus.ts +12 -3
  356. package/src/hooks/useOnScroll.ts +18 -2
  357. package/src/hooks/useReactionsFocus.ts +118 -0
  358. package/src/hooks/useRegisterRegion.ts +92 -0
  359. package/src/hooks/useResolvedEmojiData.ts +200 -0
  360. package/src/hooks/useScrollCategoryIntoView.ts +74 -12
  361. package/src/hooks/useSearchController.ts +369 -0
  362. package/src/hooks/useSearchResults.ts +51 -0
  363. package/src/hooks/useSetVariationPicker.ts +4 -1
  364. package/src/index.tsx +67 -5
  365. package/src/primitives/CategoryNav.tsx +40 -0
  366. package/src/primitives/Empty.tsx +68 -0
  367. package/src/primitives/List.tsx +61 -0
  368. package/src/primitives/LoadError.tsx +38 -0
  369. package/src/primitives/Loading.tsx +60 -0
  370. package/src/primitives/Panel.tsx +47 -0
  371. package/src/primitives/Preview.tsx +38 -0
  372. package/src/primitives/Reactions.tsx +2 -0
  373. package/src/primitives/Root.tsx +398 -0
  374. package/src/primitives/Search.tsx +41 -0
  375. package/src/primitives/SearchInput.tsx +110 -0
  376. package/src/primitives/SkinTone.tsx +76 -0
  377. package/src/primitives/Viewport.tsx +204 -0
  378. package/src/primitives/appearance.tsx +7 -0
  379. package/src/primitives/components.tsx +30 -0
  380. package/src/primitives/hooks.ts +165 -0
  381. package/src/primitives/index.ts +94 -0
  382. package/src/primitives/nativeProps.ts +90 -0
  383. package/src/primitives/scope.tsx +109 -0
  384. package/src/primitives/structuralStyles.tsx +133 -0
  385. package/src/primitives/tokens.ts +149 -0
  386. package/src/primitives/types.ts +192 -0
  387. package/src/state/activeEmojiStore.ts +39 -0
  388. package/src/state/navigationRegistry.ts +209 -0
  389. package/src/state/regionTraversal.ts +116 -0
  390. package/src/svg.d.ts +2 -2
  391. package/src/types/exposedTypes.ts +28 -1
  392. package/src/virtualization/virtualizationHelpers.ts +20 -6
  393. package/dist/components/body/Body.d.ts +0 -2
  394. package/dist/components/main/PickerMain.d.ts +0 -7
  395. package/dist/dataUtils/alphaNumericEmojiIndex.d.ts +0 -5
  396. package/dist/emoji-picker-react.cjs.development.js +0 -31413
  397. package/dist/emoji-picker-react.cjs.development.js.map +0 -1
  398. package/dist/emoji-picker-react.cjs.production.min.js +0 -2
  399. package/dist/emoji-picker-react.cjs.production.min.js.map +0 -1
  400. package/dist/emoji-picker-react.esm.js +0 -31411
  401. package/dist/emoji-picker-react.esm.js.map +0 -1
  402. package/dist/hooks/useHideEmojisByUniocode.d.ts +0 -1
  403. package/src/components/body/Body.tsx +0 -43
  404. package/src/components/main/PickerMain.tsx +0 -249
  405. package/src/dataUtils/alphaNumericEmojiIndex.ts +0 -21
package/dist/index.d.ts CHANGED
@@ -1,9 +1,376 @@
1
- /// <reference types="react" />
2
- import { PickerConfig } from './config/config';
3
- export { ExportedEmoji as Emoji } from './components/emoji/ExportedEmoji';
4
- export { EmojiStyle, SkinTones, Theme, Categories, EmojiClickData, SuggestionMode, SkinTonePickerLocation, CategoryIcons, CategoryConfig, } from './types/exposedTypes';
5
- export { emojiByUnified } from './dataUtils/emojiSelectors';
6
- export interface PickerProps extends PickerConfig {
7
- }
8
- export declare type Props = PickerProps;
9
- export default function EmojiPicker(props: PickerProps): JSX.Element;
1
+ import * as React from 'react';
2
+
3
+ type EmojiClickData = {
4
+ activeSkinTone: SkinTones;
5
+ unified: string;
6
+ unifiedWithoutSkinTone: string;
7
+ emoji: string;
8
+ names: string[];
9
+ imageUrl: string;
10
+ getImageUrl: (emojiStyle?: EmojiStyleValue) => string;
11
+ isCustom: boolean;
12
+ };
13
+ type CategoryConfig = {
14
+ category: Categories;
15
+ name: string;
16
+ icon?: React.ReactNode;
17
+ /**
18
+ * Selects a `CustomEmoji` group for `Categories.CUSTOM` entries. Each
19
+ * grouped entry renders its own section and nav tab; ungrouped entries
20
+ * share the classic customs bucket.
21
+ */
22
+ group?: string;
23
+ };
24
+ type CategoryIcons = Partial<Record<Categories, React.ReactNode>>;
25
+ type EmojiData = {
26
+ categories: Partial<Record<Categories, CategoryConfig>>;
27
+ emojis: Record<string, DataEmoji$1[]>;
28
+ };
29
+ interface DataEmoji$1 {
30
+ n: string[];
31
+ u: string;
32
+ v?: string[];
33
+ a: string;
34
+ }
35
+ declare enum SuggestionMode {
36
+ RECENT = "recent",
37
+ FREQUENT = "frequent"
38
+ }
39
+ type SuggestionModeValue = SuggestionMode | 'recent' | 'frequent';
40
+ declare enum EmojiStyle {
41
+ NATIVE = "native",
42
+ APPLE = "apple",
43
+ TWITTER = "twitter",
44
+ GOOGLE = "google",
45
+ FACEBOOK = "facebook"
46
+ }
47
+ type EmojiStyleValue = EmojiStyle | 'native' | 'apple' | 'twitter' | 'google' | 'facebook';
48
+ declare enum Theme {
49
+ DARK = "dark",
50
+ LIGHT = "light",
51
+ AUTO = "auto"
52
+ }
53
+ type ThemeValue = Theme | 'dark' | 'light' | 'auto';
54
+ declare enum SkinTones {
55
+ NEUTRAL = "neutral",
56
+ LIGHT = "1f3fb",
57
+ MEDIUM_LIGHT = "1f3fc",
58
+ MEDIUM = "1f3fd",
59
+ MEDIUM_DARK = "1f3fe",
60
+ DARK = "1f3ff"
61
+ }
62
+ /** A skin tone as the enum or its literal value (`'neutral'`, `'1f3fb'`, …). */
63
+ type SkinTonesValue = SkinTones | 'neutral' | '1f3fb' | '1f3fc' | '1f3fd' | '1f3fe' | '1f3ff';
64
+ declare enum Categories {
65
+ SUGGESTED = "suggested",
66
+ CUSTOM = "custom",
67
+ SMILEYS_PEOPLE = "smileys_people",
68
+ ANIMALS_NATURE = "animals_nature",
69
+ FOOD_DRINK = "food_drink",
70
+ TRAVEL_PLACES = "travel_places",
71
+ ACTIVITIES = "activities",
72
+ OBJECTS = "objects",
73
+ SYMBOLS = "symbols",
74
+ FLAGS = "flags"
75
+ }
76
+ declare enum SkinTonePickerLocation {
77
+ SEARCH = "SEARCH",
78
+ PREVIEW = "PREVIEW",
79
+ /**
80
+ * No built-in placement: render the `SkinTone` primitive wherever you
81
+ * want it, or drive the tone through `skinTone` / `useSkinTone()`.
82
+ */
83
+ NONE = "NONE"
84
+ }
85
+
86
+ declare enum EmojiProperties {
87
+ name = "n",
88
+ unified = "u",
89
+ variations = "v",
90
+ added_in = "a",
91
+ imgUrl = "imgUrl"
92
+ }
93
+ interface DataEmoji extends WithName {
94
+ /** Exact rendered identity; canonical unified remains the search identity. */
95
+ renderUnified?: string;
96
+ /** Stored recent identity when the active tone has no matching variation. */
97
+ fallbackUnified?: string;
98
+ [EmojiProperties.unified]: string;
99
+ [EmojiProperties.variations]?: string[];
100
+ [EmojiProperties.added_in]: string;
101
+ [EmojiProperties.imgUrl]?: string;
102
+ }
103
+ type WithName = {
104
+ [EmojiProperties.name]: string[];
105
+ };
106
+
107
+ type CustomEmoji = {
108
+ names: string[];
109
+ [EmojiProperties.imgUrl]: string;
110
+ id: string;
111
+ /**
112
+ * Optional group name. Customs sharing a group render as their own
113
+ * category section; ungrouped customs keep the single shared bucket.
114
+ * Reference the group from a `{ category: Categories.CUSTOM, group }`
115
+ * entry in the `categories` prop to place and name the section.
116
+ * https://github.com/ealush/emoji-picker-react/issues/510
117
+ */
118
+ group?: string;
119
+ };
120
+
121
+ type GetEmojiUrl = (unified: string, style: EmojiStyleValue) => string;
122
+
123
+ /**
124
+ * Asynchronous dataset source, e.g.
125
+ * `() => import('emoji-picker-react/data/emojis-fr')`.
126
+ * Hoist it (module scope or useCallback): a new function identity loads
127
+ * again.
128
+ */
129
+ type EmojiDataLoaderOptions = {
130
+ signal?: AbortSignal;
131
+ };
132
+ type EmojiDataLoader = (options: EmojiDataLoaderOptions) => Promise<EmojiData | {
133
+ default: EmojiData;
134
+ }>;
135
+ type EmojiDataInput = EmojiData | EmojiDataLoader;
136
+
137
+ type CategoriesConfig = CategoryConfig[];
138
+ type UserCategoryConfig = Array<Categories | CategoryConfig>;
139
+
140
+ /**
141
+ * Every user-facing string the picker renders or announces. All keys are
142
+ * optional on the `labels` prop; anything omitted keeps its English
143
+ * default. Category names come from `categories` / localized `emojiData`,
144
+ * and the preview caption from `previewConfig.defaultCaption`.
145
+ */
146
+ type PickerLabels = {
147
+ searchPlaceholder: string;
148
+ /** Accessible name of the search input. */
149
+ searchLabel: string;
150
+ searchClear: string;
151
+ /** Live-region announcement and visible empty state. */
152
+ searchResultsNone: string;
153
+ searchResultsOne: string;
154
+ /** `%n` is replaced with the result count. */
155
+ searchResultsMany: string;
156
+ categoryNavigation: string;
157
+ reactions: string;
158
+ expandReactions: string;
159
+ /** Shown by the Loading part while the dataset loads. */
160
+ loading: string;
161
+ loadingError: string;
162
+ retryLoading: string;
163
+ skinToneNeutral: string;
164
+ skinToneLight: string;
165
+ skinToneMediumLight: string;
166
+ skinToneMedium: string;
167
+ skinToneMediumDark: string;
168
+ skinToneDark: string;
169
+ };
170
+ type PickerConfigInternal = {
171
+ emojiVersion: string | null;
172
+ searchPlaceHolder: string;
173
+ searchPlaceholder: string;
174
+ searchClearButtonLabel: string;
175
+ defaultSkinTone: SkinTonesValue;
176
+ skinTonesDisabled: boolean;
177
+ autoFocusSearch: boolean;
178
+ emojiStyle: EmojiStyleValue;
179
+ categories: CategoriesConfig;
180
+ theme: ThemeValue;
181
+ suggestedEmojisMode: SuggestionModeValue;
182
+ lazyLoadEmojis: boolean;
183
+ previewConfig: PreviewConfig;
184
+ className: string;
185
+ height: PickerDimensions;
186
+ width: PickerDimensions;
187
+ style: React.CSSProperties;
188
+ getEmojiUrl: GetEmojiUrl;
189
+ searchDisabled: boolean;
190
+ skinTonePickerLocation: SkinTonePickerLocation;
191
+ unicodeToHide: Set<string>;
192
+ customEmojis: CustomEmoji[];
193
+ reactionsDefaultOpen: boolean;
194
+ reactions: string[];
195
+ open: boolean;
196
+ allowExpandReactions: boolean;
197
+ hiddenEmojis: string[];
198
+ emojiData?: EmojiData;
199
+ categoryIcons: CategoryIcons;
200
+ nonce?: string;
201
+ /**
202
+ * Controlled search value (raw user text). When present, it is the
203
+ * accepted visible source of truth; user edits emit `onSearchChange`
204
+ * proposals instead of committing locally.
205
+ */
206
+ searchValue?: string;
207
+ /** Uncontrolled initial search value, read once per mounted lifetime. */
208
+ defaultSearchValue?: string;
209
+ /** Emitted synchronously with each committed (uncontrolled) or proposed (controlled) user edit. */
210
+ onSearchChange?: (value: string) => void;
211
+ /** Accessible label for the search input. Defaults to English. */
212
+ searchLabel?: string;
213
+ /**
214
+ * Caller-defined Suggested category contents/order (unified or custom
215
+ * IDs). While present, `suggestedEmojisMode` is ignored for contents.
216
+ */
217
+ suggestedEmojis?: string[];
218
+ /** Observes compact-reactions vs full-picker transitions. */
219
+ onReactionsModeChange?: (reactionsOpen: boolean) => void;
220
+ /**
221
+ * Localized user-facing strings. Takes precedence over the individual
222
+ * `searchPlaceholder` / `searchLabel` / `searchClearButtonLabel` props.
223
+ */
224
+ labels?: Partial<PickerLabels>;
225
+ /**
226
+ * Controlled active skin tone. Pair with `onSkinToneChange`; while
227
+ * present, `defaultSkinTone` is ignored.
228
+ */
229
+ skinTone?: SkinTonesValue;
230
+ /**
231
+ * Emit the picker's CSS inside this cascade layer (e.g. "epr"), for
232
+ * layered CSS frameworks such as Tailwind v4 whose utilities cannot
233
+ * beat unlayered CSS. Declare the layer first in your CSS:
234
+ * `@layer epr, theme, base, components, utilities;`. Default: unlayered.
235
+ */
236
+ cssLayer?: string;
237
+ /**
238
+ * Emojis per row. The picker then sizes its width to fit those columns
239
+ * unless you set a width; a narrower container shows fewer columns.
240
+ * Default: as many as the width fits.
241
+ */
242
+ columns?: number;
243
+ };
244
+ type PreviewConfig = {
245
+ defaultEmoji: string;
246
+ defaultCaption: string;
247
+ showPreview: boolean;
248
+ };
249
+ type ConfigExternal = {
250
+ previewConfig: Partial<PreviewConfig>;
251
+ onEmojiClick: MouseDownEvent;
252
+ onReactionClick: MouseDownEvent;
253
+ onSkinToneChange: OnSkinToneChange;
254
+ /**
255
+ * User-supplied allowlist/order/merge input. Bare `Categories` members
256
+ * are accepted alongside full configs (as in v4 usage and this repo's
257
+ * own tests); the merged internal representation stays `CategoriesConfig`.
258
+ */
259
+ categories: UserCategoryConfig;
260
+ /**
261
+ * Dataset: an object (synchronous, SSR-safe), or a loader such as
262
+ * `() => import('emoji-picker-react/data/emojis-fr')` to code-split it.
263
+ * Omitted: the bundled English dataset.
264
+ */
265
+ emojiData: EmojiDataInput;
266
+ } & Omit<PickerConfigInternal, 'previewConfig' | 'unicodeToHide' | 'categories' | 'emojiData'>;
267
+ type PickerConfig = Partial<ConfigExternal>;
268
+ type PickerDimensions = string | number;
269
+ type MouseDownEvent = (emoji: EmojiClickData, event: MouseEvent, api?: OnEmojiClickApi) => void;
270
+ type OnSkinToneChange = (skinTone: SkinTones) => void;
271
+ /** The `onEmojiClick` / `onReactionClick` callback signature. */
272
+ type EmojiClickHandler = MouseDownEvent;
273
+ /** The `onSkinToneChange` callback signature. */
274
+ type SkinToneChangeHandler = OnSkinToneChange;
275
+ /** Third argument of `onEmojiClick` / `onReactionClick`. */
276
+ type OnEmojiClickApi = {
277
+ /** Return to the compact reactions bar (no-op when reactions are off). */
278
+ collapseToReactions: () => void;
279
+ };
280
+
281
+ /** The emoji a custom `Emoji` cell renders. */
282
+ type ListEmoji = {
283
+ /** True while hovered or keyboard-focused. */
284
+ isActive: boolean;
285
+ /** Unified code including the active skin tone, e.g. `1f44d-1f3fd`. */
286
+ unified: string;
287
+ names: string[];
288
+ /** Native emoji text (custom emojis: their id). */
289
+ emoji: string;
290
+ isCustom: boolean;
291
+ /** Active image style URL, or undefined for standard native emojis. */
292
+ imageUrl?: string;
293
+ /** Whether a long press opens skin tone variations. */
294
+ hasVariations: boolean;
295
+ };
296
+ /**
297
+ * Props for a custom emoji cell. Spread everything except `emoji` onto a
298
+ * `<button>`: the library-owned attributes (type, class, position style,
299
+ * tabIndex, aria-label, data-epr-*) carry selection, keyboard navigation,
300
+ * virtualization and accessibility. `children` is the default glyph/image;
301
+ * render it or your own content.
302
+ */
303
+ type EmojiRenderProps = React.ButtonHTMLAttributes<HTMLButtonElement> & {
304
+ emoji: ListEmoji;
305
+ children: React.ReactNode;
306
+ };
307
+ /**
308
+ * Props for a custom category header. Spread everything except `category`
309
+ * onto the header element; it stays sticky and measured.
310
+ */
311
+ type CategoryHeaderRenderProps = React.HTMLAttributes<HTMLElement> & {
312
+ category: {
313
+ id: string;
314
+ name: string;
315
+ };
316
+ children: React.ReactNode;
317
+ };
318
+ type ListComponents = {
319
+ Emoji?: React.ComponentType<EmojiRenderProps>;
320
+ CategoryHeader?: React.ComponentType<CategoryHeaderRenderProps>;
321
+ };
322
+
323
+ /** Spread the managed props onto one native button. Render children or your own content. */
324
+ type CategoryButtonRenderProps = React.ButtonHTMLAttributes<HTMLButtonElement> & {
325
+ category: {
326
+ id: string;
327
+ name: string;
328
+ isActive: boolean;
329
+ };
330
+ };
331
+ type SkinToneButtonRenderProps = React.ButtonHTMLAttributes<HTMLButtonElement> & {
332
+ tone: {
333
+ skinTone: SkinTones;
334
+ isActive: boolean;
335
+ isOpen: boolean;
336
+ };
337
+ };
338
+ type PickerComponents = ListComponents & {
339
+ CategoryButton?: React.ComponentType<CategoryButtonRenderProps>;
340
+ SkinToneButton?: React.ComponentType<SkinToneButtonRenderProps>;
341
+ ExpandButton?: React.ComponentType<React.ButtonHTMLAttributes<HTMLButtonElement>>;
342
+ ClearButton?: React.ComponentType<React.ButtonHTMLAttributes<HTMLButtonElement>>;
343
+ };
344
+
345
+ declare function ExportedEmoji({ unified, size, emojiStyle, lazyLoad, getEmojiUrl, emojiUrl, }: {
346
+ unified: string;
347
+ emojiStyle?: EmojiStyleValue;
348
+ size?: number;
349
+ lazyLoad?: boolean;
350
+ getEmojiUrl?: GetEmojiUrl;
351
+ emojiUrl?: string;
352
+ }): React.JSX.Element | null;
353
+
354
+ declare function emojiByUnified(unified?: string): DataEmoji | undefined;
355
+
356
+ interface PickerProps extends PickerConfig, React.AriaAttributes, Pick<React.HTMLAttributes<HTMLElement>, 'id' | 'title' | 'lang' | 'dir'> {
357
+ /**
358
+ * Color scheme: 'light' | 'dark' | 'auto'. Preferred over `theme`, which
359
+ * Emotion, styled-components and MUI reserve on components they wrap
360
+ * (a styled(EmojiPicker) would swallow it). `theme` remains supported.
361
+ */
362
+ colorScheme?: ThemeValue;
363
+ /**
364
+ * Render without decorative styling on every managed part.
365
+ * Geometry, presence and navigation remain managed. Style it with `className`,
366
+ * `--epr-*` variables and `[data-epr-part]` selectors.
367
+ */
368
+ unstyled?: boolean;
369
+ /** Shared replacements for interactive controls and category headers. */
370
+ components?: PickerComponents;
371
+ }
372
+ type Props = PickerProps;
373
+ declare function EmojiPicker(props: PickerProps): React.JSX.Element;
374
+
375
+ export { Categories, ExportedEmoji as Emoji, EmojiStyle, SkinTonePickerLocation, SkinTones, SuggestionMode, Theme, EmojiPicker as default, emojiByUnified };
376
+ export type { CategoryButtonRenderProps, CategoryConfig, CategoryHeaderRenderProps, CategoryIcons, CustomEmoji, EmojiClickData, EmojiClickHandler, EmojiData, EmojiDataInput, EmojiDataLoader, EmojiDataLoaderOptions, EmojiRenderProps, EmojiStyleValue, ListComponents, ListEmoji, OnEmojiClickApi, PickerComponents, PickerLabels, PickerProps, PreviewConfig, Props, SkinToneButtonRenderProps, SkinToneChangeHandler, SkinTonesValue, SuggestionModeValue, ThemeValue };