emoji-picker-react 4.20.5 → 4.20.7

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.
@@ -27865,9 +27865,20 @@ function useSetVariationPicker() {
27865
27865
  var setAnchoredEmojiRef = useSetAnchoredEmojiRef();
27866
27866
  var _useEmojiVariationPic = useEmojiVariationPickerState(),
27867
27867
  setEmojiVariationPicker = _useEmojiVariationPic[1];
27868
+ // Context-aware lookup: respects the `emojiData` prop (e.g. translations).
27869
+ // The legacy global lookup only knows the default English dataset.
27870
+ // https://github.com/ealush/emoji-picker-react/issues/503
27871
+ var _usePickerDataContext = usePickerDataContext(),
27872
+ emojiByUnified = _usePickerDataContext.emojiByUnified;
27868
27873
  return function setVariationPicker(element) {
27869
- var _emojiFromElement = emojiFromElement(element),
27870
- emoji = _emojiFromElement[0];
27874
+ var _allUnifiedFromEmojiE = allUnifiedFromEmojiElement(element),
27875
+ unified = _allUnifiedFromEmojiE.unified,
27876
+ originalUnified = _allUnifiedFromEmojiE.originalUnified;
27877
+ var resolvedUnified = unified != null ? unified : originalUnified;
27878
+ if (!resolvedUnified) {
27879
+ return;
27880
+ }
27881
+ var emoji = emojiByUnified(resolvedUnified);
27871
27882
  if (emoji) {
27872
27883
  setAnchoredEmojiRef(element);
27873
27884
  setEmojiVariationPicker(emoji);
@@ -29691,50 +29702,61 @@ function EmojiList(_ref) {
29691
29702
  // native button role for activation semantics.
29692
29703
  // https://github.com/ealush/emoji-picker-react/issues/508
29693
29704
  // The list markup is kept for a backwards-compatible DOM structure;
29694
- // the grid role override is intentional (see below).
29695
- // eslint-disable-next-line jsx-a11y/no-noninteractive-element-to-interactive-role
29696
- return createElement("ul", {
29697
- className: cx(styles$8.emojiList),
29698
- ref: EmojiListRef,
29699
- role: "grid"
29700
- }, createElement(MeasureEmoji, null), categories.map(function (categoryConfig) {
29701
- var category = categoryFromCategoryConfig(categoryConfig);
29702
- var currentOffset = topOffset;
29703
- var categoryHeight = categoryHeights[category];
29704
- if (categoryHeight) {
29705
- topOffset += categoryHeight + labelHeight;
29706
- }
29707
- return createElement(RenderCategory, {
29708
- key: category,
29709
- categoryEmojis: getEmojisByCategory(category),
29710
- categoryConfig: categoryConfig,
29711
- topOffset: currentOffset,
29712
- onHeightReady: function onHeightReady(height) {
29713
- if (categoryHeights[category] !== height) {
29714
- setCategoryHeights(function (prev) {
29715
- var _extends2;
29716
- return _extends({}, prev, (_extends2 = {}, _extends2[category] = height, _extends2));
29717
- });
29718
- }
29719
- },
29720
- scrollTop: scrollTop
29721
- });
29722
- }));
29705
+ // the grid role override is intentional.
29706
+ return (
29707
+ // eslint-disable-next-line jsx-a11y/no-noninteractive-element-to-interactive-role
29708
+ createElement("ul", {
29709
+ className: cx(styles$8.emojiList),
29710
+ ref: EmojiListRef,
29711
+ role: "grid"
29712
+ }, createElement(MeasureEmoji, null), categories.map(function (categoryConfig, index) {
29713
+ var category = categoryFromCategoryConfig(categoryConfig);
29714
+ var currentOffset = topOffset;
29715
+ var categoryHeight = categoryHeights[category];
29716
+ if (categoryHeight) {
29717
+ topOffset += categoryHeight + labelHeight;
29718
+ }
29719
+ return createElement(RenderCategory, {
29720
+ key: category,
29721
+ categoryEmojis: getEmojisByCategory(category),
29722
+ categoryConfig: categoryConfig,
29723
+ topOffset: currentOffset,
29724
+ isFirstCategory: index === 0,
29725
+ onHeightReady: function onHeightReady(height) {
29726
+ if (categoryHeights[category] !== height) {
29727
+ setCategoryHeights(function (prev) {
29728
+ var _extends2;
29729
+ return _extends({}, prev, (_extends2 = {}, _extends2[category] = height, _extends2));
29730
+ });
29731
+ }
29732
+ },
29733
+ scrollTop: scrollTop
29734
+ });
29735
+ }))
29736
+ );
29723
29737
  }
29724
29738
  function RenderCategory(_ref2) {
29725
29739
  var categoryEmojis = _ref2.categoryEmojis,
29726
29740
  categoryConfig = _ref2.categoryConfig,
29727
29741
  topOffset = _ref2.topOffset,
29728
29742
  onHeightReady = _ref2.onHeightReady,
29729
- scrollTop = _ref2.scrollTop;
29743
+ scrollTop = _ref2.scrollTop,
29744
+ isFirstCategory = _ref2.isFirstCategory;
29730
29745
  var _useVisibleCategories = useVisibleCategoriesState(),
29731
29746
  visibleCategories = _useVisibleCategories[0];
29747
+ // The observer is the only writer of visibleCategories. When it never
29748
+ // fires (zero-height container at mount, hidden modal), no category
29749
+ // would ever render. The first category paints optimistically to break
29750
+ // the deadlock; the observer takes over from there.
29751
+ // https://github.com/ealush/emoji-picker-react/issues/469
29752
+ // https://github.com/ealush/emoji-picker-react/issues/475
29753
+ var isCategoryVisible = isFirstCategory || visibleCategories.includes(categoryConfig.category);
29732
29754
  var _useEmojiVirtualizati = useEmojiVirtualization({
29733
29755
  categoryEmojis: categoryEmojis,
29734
29756
  topOffset: topOffset,
29735
29757
  onHeightReady: onHeightReady,
29736
29758
  scrollTop: scrollTop,
29737
- isCategoryVisible: visibleCategories.includes(categoryConfig.category)
29759
+ isCategoryVisible: isCategoryVisible
29738
29760
  }),
29739
29761
  virtualizedCounter = _useEmojiVirtualizati.virtualizedCounter,
29740
29762
  emojis = _useEmojiVirtualizati.emojis,