emoji-picker-react 4.14.0 → 4.14.2

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.
@@ -338,6 +338,7 @@ function PickerContextProvider(_ref) {
338
338
  var _useState = useState(false),
339
339
  isPastInitialLoad = _useState[0],
340
340
  setIsPastInitialLoad = _useState[1];
341
+ var visibleCategoriesState = useState([]);
341
342
  useMarkInitialLoad(setIsPastInitialLoad);
342
343
  return createElement(PickerContext.Provider, {
343
344
  value: {
@@ -353,7 +354,8 @@ function PickerContextProvider(_ref) {
353
354
  searchTerm: searchTerm,
354
355
  skinToneFanOpenState: skinToneFanOpenState,
355
356
  suggestedUpdateState: suggestedUpdateState,
356
- reactionsModeState: reactionsModeState
357
+ reactionsModeState: reactionsModeState,
358
+ visibleCategoriesState: visibleCategoriesState
357
359
  }
358
360
  }, children);
359
361
  }
@@ -382,7 +384,10 @@ var PickerContext = /*#__PURE__*/createContext({
382
384
  }],
383
385
  skinToneFanOpenState: [false, function () {}],
384
386
  suggestedUpdateState: [/*#__PURE__*/Date.now(), function () {}],
385
- reactionsModeState: [false, function () {}]
387
+ reactionsModeState: [false, function () {}],
388
+ visibleCategoriesState: [[], function () {
389
+ return [];
390
+ }]
386
391
  });
387
392
  function useFilterRef() {
388
393
  var _React$useContext = useContext(PickerContext),
@@ -429,9 +434,14 @@ function useSkinToneFanOpenState() {
429
434
  skinToneFanOpenState = _React$useContext10.skinToneFanOpenState;
430
435
  return skinToneFanOpenState;
431
436
  }
432
- function useUpdateSuggested() {
437
+ function useVisibleCategoriesState() {
433
438
  var _React$useContext12 = useContext(PickerContext),
434
- suggestedUpdateState = _React$useContext12.suggestedUpdateState;
439
+ visibleCategoriesState = _React$useContext12.visibleCategoriesState;
440
+ return visibleCategoriesState;
441
+ }
442
+ function useUpdateSuggested() {
443
+ var _React$useContext13 = useContext(PickerContext),
444
+ suggestedUpdateState = _React$useContext13.suggestedUpdateState;
435
445
  var suggestedUpdated = suggestedUpdateState[0],
436
446
  setsuggestedUpdate = suggestedUpdateState[1];
437
447
  return [suggestedUpdated, function updateSuggested() {
@@ -18695,7 +18705,7 @@ function hasModifier(event) {
18695
18705
  }
18696
18706
 
18697
18707
  // eslint-disable-next-line max-params
18698
- function preloaEmojidIfNeeded(emoji, emojiStyles, scrollTop, clientHeight, topOffset, style, dimensions, getEmojiUrl) {
18708
+ function preloadEmojiIfNeeded(emoji, emojiStyles, scrollTop, clientHeight, topOffset, style, dimensions, getEmojiUrl) {
18699
18709
  if (!emoji) {
18700
18710
  return;
18701
18711
  }
@@ -19755,6 +19765,8 @@ function useCategoryHeight(emojiCount) {
19755
19765
  isReactionsMode = _useReactionsModeStat[0];
19756
19766
  var PickerMainRef = usePickerMainRef();
19757
19767
  var emojiSizeRef = useRef();
19768
+ var _useVisibleCategories = useVisibleCategoriesState(),
19769
+ visibleCategories = _useVisibleCategories[0];
19758
19770
  var _React$useState = useState(),
19759
19771
  dimensions = _React$useState[0],
19760
19772
  setDimensions = _React$useState[1];
@@ -19781,7 +19793,7 @@ function useCategoryHeight(emojiCount) {
19781
19793
  // Recompute on data-count changes and when reactions mode toggles
19782
19794
  useEffect(function () {
19783
19795
  computeAndSetDimensions();
19784
- }, [emojiCount, isReactionsMode, computeAndSetDimensions]);
19796
+ }, [emojiCount, isReactionsMode, computeAndSetDimensions, visibleCategories.length]);
19785
19797
  // Listen to transitionend on the picker root (where height transition occurs)
19786
19798
  useEffect(function () {
19787
19799
  var rootEl = PickerMainRef.current;
@@ -19831,7 +19843,8 @@ function useEmojiVirtualization(_ref) {
19831
19843
  var categoryEmojis = _ref.categoryEmojis,
19832
19844
  topOffset = _ref.topOffset,
19833
19845
  onHeightReady = _ref.onHeightReady,
19834
- scrollTop = _ref.scrollTop;
19846
+ scrollTop = _ref.scrollTop,
19847
+ isCategoryVisible = _ref.isCategoryVisible;
19835
19848
  var isEmojiHidden = useIsEmojiHidden();
19836
19849
  var lazyLoadEmojis = useLazyLoadEmojisConfig();
19837
19850
  var emojiStyle = useEmojiStyleConfig();
@@ -19869,7 +19882,11 @@ function useEmojiVirtualization(_ref) {
19869
19882
  })) {
19870
19883
  var _BodyRef$current$clie2, _BodyRef$current2;
19871
19884
  virtualizedCounter++;
19872
- preloaEmojidIfNeeded(emoji, emojiStyle, scrollTop, (_BodyRef$current$clie2 = (_BodyRef$current2 = BodyRef.current) == null ? void 0 : _BodyRef$current2.clientHeight) != null ? _BodyRef$current$clie2 : 0, topOffset, style, dimensions, getEmojiUrl);
19885
+ preloadEmojiIfNeeded(emoji, emojiStyle, scrollTop, (_BodyRef$current$clie2 = (_BodyRef$current2 = BodyRef.current) == null ? void 0 : _BodyRef$current2.clientHeight) != null ? _BodyRef$current$clie2 : 0, topOffset, style, dimensions, getEmojiUrl);
19886
+ return accumulator;
19887
+ }
19888
+ if (!isCategoryVisible) {
19889
+ virtualizedCounter++;
19873
19890
  return accumulator;
19874
19891
  }
19875
19892
  accumulator.push(createElement(ClickableEmoji, {
@@ -19993,11 +20010,14 @@ function RenderCategory(_ref2) {
19993
20010
  topOffset = _ref2.topOffset,
19994
20011
  onHeightReady = _ref2.onHeightReady,
19995
20012
  scrollTop = _ref2.scrollTop;
20013
+ var _useVisibleCategories = useVisibleCategoriesState(),
20014
+ visibleCategories = _useVisibleCategories[0];
19996
20015
  var _useEmojiVirtualizati = useEmojiVirtualization({
19997
20016
  categoryEmojis: categoryEmojis,
19998
20017
  topOffset: topOffset,
19999
20018
  onHeightReady: onHeightReady,
20000
- scrollTop: scrollTop
20019
+ scrollTop: scrollTop,
20020
+ isCategoryVisible: visibleCategories.includes(categoryConfig.category)
20001
20021
  }),
20002
20022
  virtualizedCounter = _useEmojiVirtualizati.virtualizedCounter,
20003
20023
  emojis = _useEmojiVirtualizati.emojis,
@@ -20623,7 +20643,9 @@ function categoryNameFromDom($category) {
20623
20643
  return (_$category$getAttribu = $category == null ? void 0 : $category.getAttribute('data-name')) != null ? _$category$getAttribu : null;
20624
20644
  }
20625
20645
 
20626
- function useActiveCategoryScrollDetection(setActiveCategory) {
20646
+ function useActiveCategoryScrollDetection(_ref) {
20647
+ var setActiveCategory = _ref.setActiveCategory,
20648
+ setVisibleCategories = _ref.setVisibleCategories;
20627
20649
  var BodyRef = useBodyRef();
20628
20650
  useEffect(function () {
20629
20651
  var visibleCategories = new Map();
@@ -20635,9 +20657,19 @@ function useActiveCategoryScrollDetection(setActiveCategory) {
20635
20657
  for (var _iterator = _createForOfIteratorHelperLoose(entries), _step; !(_step = _iterator()).done;) {
20636
20658
  var entry = _step.value;
20637
20659
  var _id = categoryNameFromDom(entry.target);
20660
+ if (!_id) {
20661
+ continue;
20662
+ }
20638
20663
  visibleCategories.set(_id, entry.intersectionRatio);
20639
20664
  }
20640
20665
  var ratios = Array.from(visibleCategories);
20666
+ setVisibleCategories(ratios.filter(function (_ref2) {
20667
+ var ratio = _ref2[1];
20668
+ return ratio > 0;
20669
+ }).map(function (_ref3) {
20670
+ var id = _ref3[0];
20671
+ return id;
20672
+ }));
20641
20673
  var lastCategory = ratios[ratios.length - 1];
20642
20674
  if (lastCategory[1] == 1) {
20643
20675
  return setActiveCategory(lastCategory[0]);
@@ -20657,7 +20689,7 @@ function useActiveCategoryScrollDetection(setActiveCategory) {
20657
20689
  bodyRef == null ? void 0 : bodyRef.querySelectorAll(asSelectors(ClassNames.category)).forEach(function (el) {
20658
20690
  observer.observe(el);
20659
20691
  });
20660
- }, [BodyRef, setActiveCategory]);
20692
+ }, [BodyRef, setActiveCategory, setVisibleCategories]);
20661
20693
  }
20662
20694
 
20663
20695
  function useScrollCategoryIntoView() {
@@ -20780,8 +20812,13 @@ function CategoryNavigation() {
20780
20812
  var _useState = useState(null),
20781
20813
  activeCategory = _useState[0],
20782
20814
  setActiveCategory = _useState[1];
20815
+ var _useVisibleCategories = useVisibleCategoriesState(),
20816
+ setVisibleCategories = _useVisibleCategories[1];
20783
20817
  var scrollCategoryIntoView = useScrollCategoryIntoView();
20784
- useActiveCategoryScrollDetection(setActiveCategory);
20818
+ useActiveCategoryScrollDetection({
20819
+ setActiveCategory: setActiveCategory,
20820
+ setVisibleCategories: setVisibleCategories
20821
+ });
20785
20822
  var isSearchMode = useIsSearchMode();
20786
20823
  var categoriesConfig = useCategoriesConfig();
20787
20824
  var CategoryNavigationRef = useCategoryNavigationRef();