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