emoji-picker-react 4.6.14 → 4.7.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 (51) hide show
  1. package/README.md +37 -12
  2. package/dist/components/Reactions/BtnPlus.d.ts +2 -0
  3. package/dist/components/Reactions/DEFAULT_REACTIONS.d.ts +1 -0
  4. package/dist/components/Reactions/Reactions.d.ts +2 -0
  5. package/dist/components/context/ElementRefContext.d.ts +1 -0
  6. package/dist/components/context/PickerContext.d.ts +1 -0
  7. package/dist/components/emoji/ClickableEmojiButton.d.ts +2 -1
  8. package/dist/components/emoji/Emoji.d.ts +2 -1
  9. package/dist/components/header/Search/BtnClearSearch.d.ts +2 -0
  10. package/dist/components/header/Search/IcnSearch.d.ts +2 -0
  11. package/dist/components/header/SkinTonePicker/BtnSkinToneVariation.d.ts +11 -0
  12. package/dist/components/navigation/CategoryButton.d.ts +11 -0
  13. package/dist/config/config.d.ts +2 -0
  14. package/dist/config/useConfig.d.ts +2 -0
  15. package/dist/emoji-picker-react.cjs.development.js +1265 -963
  16. package/dist/emoji-picker-react.cjs.development.js.map +1 -1
  17. package/dist/emoji-picker-react.cjs.production.min.js +1 -1
  18. package/dist/emoji-picker-react.cjs.production.min.js.map +1 -1
  19. package/dist/emoji-picker-react.esm.js +1266 -964
  20. package/dist/emoji-picker-react.esm.js.map +1 -1
  21. package/package.json +5 -2
  22. package/src/EmojiPickerReact.tsx +28 -3
  23. package/src/Stylesheet/stylesheet.tsx +14 -2
  24. package/src/components/Reactions/BtnPlus.tsx +78 -0
  25. package/src/components/Reactions/DEFAULT_REACTIONS.ts +9 -0
  26. package/src/components/Reactions/Reactions.tsx +62 -0
  27. package/src/components/Reactions/svg/plus.svg +17 -0
  28. package/src/components/body/Body.tsx +8 -2
  29. package/src/components/body/EmojiVariationPicker.tsx +6 -7
  30. package/src/components/context/ElementRefContext.tsx +10 -2
  31. package/src/components/context/PickerContext.tsx +16 -3
  32. package/src/components/emoji/ClickableEmojiButton.tsx +13 -3
  33. package/src/components/emoji/Emoji.tsx +4 -1
  34. package/src/components/footer/Preview.tsx +11 -8
  35. package/src/components/header/Header.tsx +6 -2
  36. package/src/components/header/Search/BtnClearSearch.tsx +91 -0
  37. package/src/components/header/{CssSearch.tsx → Search/CssSearch.tsx} +2 -2
  38. package/src/components/header/Search/IcnSearch.tsx +39 -0
  39. package/src/components/header/{Search.tsx → Search/Search.tsx} +14 -49
  40. package/src/components/header/SkinTonePicker/BtnSkinToneVariation.tsx +80 -0
  41. package/src/components/header/{SkinTonePicker.tsx → SkinTonePicker/SkinTonePicker.tsx} +25 -67
  42. package/src/components/main/PickerMain.tsx +27 -2
  43. package/src/components/navigation/CategoryButton.tsx +141 -0
  44. package/src/components/navigation/CategoryNavigation.tsx +10 -129
  45. package/src/config/config.ts +7 -2
  46. package/src/config/useConfig.ts +16 -3
  47. /package/dist/components/header/{CssSearch.d.ts → Search/CssSearch.d.ts} +0 -0
  48. /package/dist/components/header/{Search.d.ts → Search/Search.d.ts} +0 -0
  49. /package/dist/components/header/{SkinTonePicker.d.ts → SkinTonePicker/SkinTonePicker.d.ts} +0 -0
  50. /package/src/components/header/{svg → Search/svg}/magnifier.svg +0 -0
  51. /package/src/components/header/{svg → Search/svg}/times.svg +0 -0
@@ -8,38 +8,6 @@ var React = require('react');
8
8
  var React__default = _interopDefault(React);
9
9
  var flairup = require('flairup');
10
10
 
11
- var ClassNames;
12
- (function (ClassNames) {
13
- ClassNames["hiddenOnSearch"] = "epr-hidden-on-search";
14
- ClassNames["searchActive"] = "epr-search-active";
15
- ClassNames["hidden"] = "epr-hidden";
16
- ClassNames["visible"] = "epr-visible";
17
- ClassNames["active"] = "epr-active";
18
- ClassNames["emoji"] = "epr-emoji";
19
- ClassNames["category"] = "epr-emoji-category";
20
- ClassNames["label"] = "epr-emoji-category-label";
21
- ClassNames["categoryContent"] = "epr-emoji-category-content";
22
- ClassNames["emojiHasVariations"] = "epr-emoji-has-variations";
23
- ClassNames["scrollBody"] = "epr-body";
24
- ClassNames["emojiList"] = "epr-emoji-list";
25
- ClassNames["external"] = "__EmojiPicker__";
26
- ClassNames["emojiPicker"] = "EmojiPickerReact";
27
- ClassNames["open"] = "epr-open";
28
- ClassNames["vertical"] = "epr-vertical";
29
- ClassNames["horizontal"] = "epr-horizontal";
30
- ClassNames["variationPicker"] = "epr-emoji-variation-picker";
31
- ClassNames["darkTheme"] = "epr-dark-theme";
32
- ClassNames["autoTheme"] = "epr-auto-theme";
33
- })(ClassNames || (ClassNames = {}));
34
- function asSelectors() {
35
- for (var _len = arguments.length, classNames = new Array(_len), _key = 0; _key < _len; _key++) {
36
- classNames[_key] = arguments[_key];
37
- }
38
- return classNames.map(function (c) {
39
- return "." + c;
40
- }).join('');
41
- }
42
-
43
11
  function _extends() {
44
12
  _extends = Object.assign ? Object.assign.bind() : function (target) {
45
13
  for (var i = 1; i < arguments.length; i++) {
@@ -110,6 +78,38 @@ function _createForOfIteratorHelperLoose(o, allowArrayLike) {
110
78
  throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
111
79
  }
112
80
 
81
+ var ClassNames;
82
+ (function (ClassNames) {
83
+ ClassNames["hiddenOnSearch"] = "epr-hidden-on-search";
84
+ ClassNames["searchActive"] = "epr-search-active";
85
+ ClassNames["hidden"] = "epr-hidden";
86
+ ClassNames["visible"] = "epr-visible";
87
+ ClassNames["active"] = "epr-active";
88
+ ClassNames["emoji"] = "epr-emoji";
89
+ ClassNames["category"] = "epr-emoji-category";
90
+ ClassNames["label"] = "epr-emoji-category-label";
91
+ ClassNames["categoryContent"] = "epr-emoji-category-content";
92
+ ClassNames["emojiHasVariations"] = "epr-emoji-has-variations";
93
+ ClassNames["scrollBody"] = "epr-body";
94
+ ClassNames["emojiList"] = "epr-emoji-list";
95
+ ClassNames["external"] = "__EmojiPicker__";
96
+ ClassNames["emojiPicker"] = "EmojiPickerReact";
97
+ ClassNames["open"] = "epr-open";
98
+ ClassNames["vertical"] = "epr-vertical";
99
+ ClassNames["horizontal"] = "epr-horizontal";
100
+ ClassNames["variationPicker"] = "epr-emoji-variation-picker";
101
+ ClassNames["darkTheme"] = "epr-dark-theme";
102
+ ClassNames["autoTheme"] = "epr-auto-theme";
103
+ })(ClassNames || (ClassNames = {}));
104
+ function asSelectors() {
105
+ for (var _len = arguments.length, classNames = new Array(_len), _key = 0; _key < _len; _key++) {
106
+ classNames[_key] = arguments[_key];
107
+ }
108
+ return classNames.map(function (c) {
109
+ return "." + c;
110
+ }).join('');
111
+ }
112
+
113
113
  function useIsMounted() {
114
114
  var _React$useState = React.useState(false),
115
115
  isMounted = _React$useState[0],
@@ -125,7 +125,8 @@ var hidden = {
125
125
  display: 'none',
126
126
  opacity: '0',
127
127
  pointerEvents: 'none',
128
- visibility: 'hidden'
128
+ visibility: 'hidden',
129
+ overflow: 'hidden'
129
130
  };
130
131
  var commonStyles = /*#__PURE__*/stylesheet.create({
131
132
  hidden: /*#__PURE__*/_extends({
@@ -161,6 +162,18 @@ var commonInteractionStyles = /*#__PURE__*/stylesheet.create({
161
162
  visibleOnSearchOnly: hidden
162
163
  }
163
164
  },
165
+ hiddenOnReactions: {
166
+ transition: 'all 0.5s ease-in-out'
167
+ },
168
+ '.epr-reactions': {
169
+ hiddenOnReactions: {
170
+ height: '0px',
171
+ width: '0px',
172
+ opacity: '0',
173
+ pointerEvents: 'none',
174
+ overflow: 'hidden'
175
+ }
176
+ },
164
177
  '.EmojiPickerReact:not(.epr-search-active)': {
165
178
  categoryBtn: {
166
179
  ':hover': {
@@ -179,93 +192,8 @@ var commonInteractionStyles = /*#__PURE__*/stylesheet.create({
179
192
  }
180
193
  });
181
194
 
182
- function focusElement(element) {
183
- if (!element) {
184
- return;
185
- }
186
- requestAnimationFrame(function () {
187
- element.focus();
188
- });
189
- }
190
- function focusPrevElementSibling(element) {
191
- if (!element) return;
192
- var prev = element.previousElementSibling;
193
- focusElement(prev);
194
- }
195
- function focusNextElementSibling(element) {
196
- if (!element) return;
197
- var next = element.nextElementSibling;
198
- focusElement(next);
199
- }
200
- function focusFirstElementChild(element) {
201
- if (!element) return;
202
- var first = element.firstElementChild;
203
- focusElement(first);
204
- }
205
-
206
- function ElementRefContextProvider(_ref) {
207
- var children = _ref.children;
208
- var PickerMainRef = React.useRef(null);
209
- var AnchoredEmojiRef = React.useRef(null);
210
- var BodyRef = React.useRef(null);
211
- var SearchInputRef = React.useRef(null);
212
- var SkinTonePickerRef = React.useRef(null);
213
- var CategoryNavigationRef = React.useRef(null);
214
- var VariationPickerRef = React.useRef(null);
215
- return React.createElement(ElementRefContext.Provider, {
216
- value: {
217
- AnchoredEmojiRef: AnchoredEmojiRef,
218
- BodyRef: BodyRef,
219
- CategoryNavigationRef: CategoryNavigationRef,
220
- PickerMainRef: PickerMainRef,
221
- SearchInputRef: SearchInputRef,
222
- SkinTonePickerRef: SkinTonePickerRef,
223
- VariationPickerRef: VariationPickerRef
224
- }
225
- }, children);
226
- }
227
- var ElementRefContext = /*#__PURE__*/React.createContext({
228
- AnchoredEmojiRef: /*#__PURE__*/React.createRef(),
229
- BodyRef: /*#__PURE__*/React.createRef(),
230
- CategoryNavigationRef: /*#__PURE__*/React.createRef(),
231
- PickerMainRef: /*#__PURE__*/React.createRef(),
232
- SearchInputRef: /*#__PURE__*/React.createRef(),
233
- SkinTonePickerRef: /*#__PURE__*/React.createRef(),
234
- VariationPickerRef: /*#__PURE__*/React.createRef()
235
- });
236
- function useElementRef() {
237
- return React.useContext(ElementRefContext);
238
- }
239
- function usePickerMainRef() {
240
- return useElementRef()['PickerMainRef'];
241
- }
242
- function useAnchoredEmojiRef() {
243
- return useElementRef()['AnchoredEmojiRef'];
244
- }
245
- function useSetAnchoredEmojiRef() {
246
- var AnchoredEmojiRef = useAnchoredEmojiRef();
247
- return function (target) {
248
- if (target === null && AnchoredEmojiRef.current !== null) {
249
- focusElement(AnchoredEmojiRef.current);
250
- }
251
- AnchoredEmojiRef.current = target;
252
- };
253
- }
254
- function useBodyRef() {
255
- return useElementRef()['BodyRef'];
256
- }
257
- function useSearchInputRef() {
258
- return useElementRef()['SearchInputRef'];
259
- }
260
- function useSkinTonePickerRef() {
261
- return useElementRef()['SkinTonePickerRef'];
262
- }
263
- function useCategoryNavigationRef() {
264
- return useElementRef()['CategoryNavigationRef'];
265
- }
266
- function useVariationPickerRef() {
267
- return useElementRef()['VariationPickerRef'];
268
- }
195
+ var DEFAULT_REACTIONS = ['1f44d', '2764-fe0f', '1f603', '1f622', '1f64f', '1f44e', '1f621' // 😡
196
+ ];
269
197
 
270
198
  (function (SuggestionMode) {
271
199
  SuggestionMode["RECENT"] = "recent";
@@ -16910,7 +16838,9 @@ function basePickerConfig() {
16910
16838
  suggestedEmojisMode: exports.SuggestionMode.FREQUENT,
16911
16839
  theme: exports.Theme.LIGHT,
16912
16840
  unicodeToHide: new Set(KNOWN_FAILING_EMOJIS),
16913
- width: 350
16841
+ width: 350,
16842
+ reactionsDefaultOpen: false,
16843
+ reactions: DEFAULT_REACTIONS
16914
16844
  };
16915
16845
  }
16916
16846
  var basePreviewConfig = {
@@ -17045,29 +16975,39 @@ function useStyleConfig() {
17045
16975
  width: getDimension(width)
17046
16976
  }, style);
17047
16977
  }
17048
- function useEmojiVersionConfig() {
16978
+ function useReactionsOpenConfig() {
17049
16979
  var _usePickerConfig14 = usePickerConfig(),
17050
- emojiVersion = _usePickerConfig14.emojiVersion;
16980
+ reactionsDefaultOpen = _usePickerConfig14.reactionsDefaultOpen;
16981
+ return reactionsDefaultOpen;
16982
+ }
16983
+ function useEmojiVersionConfig() {
16984
+ var _usePickerConfig15 = usePickerConfig(),
16985
+ emojiVersion = _usePickerConfig15.emojiVersion;
17051
16986
  return emojiVersion;
17052
16987
  }
17053
16988
  function useSearchDisabledConfig() {
17054
- var _usePickerConfig15 = usePickerConfig(),
17055
- searchDisabled = _usePickerConfig15.searchDisabled;
16989
+ var _usePickerConfig16 = usePickerConfig(),
16990
+ searchDisabled = _usePickerConfig16.searchDisabled;
17056
16991
  return searchDisabled;
17057
16992
  }
17058
16993
  function useSkinTonePickerLocationConfig() {
17059
- var _usePickerConfig16 = usePickerConfig(),
17060
- skinTonePickerLocation = _usePickerConfig16.skinTonePickerLocation;
16994
+ var _usePickerConfig17 = usePickerConfig(),
16995
+ skinTonePickerLocation = _usePickerConfig17.skinTonePickerLocation;
17061
16996
  return skinTonePickerLocation;
17062
16997
  }
17063
16998
  function useUnicodeToHide() {
17064
- var _usePickerConfig17 = usePickerConfig(),
17065
- unicodeToHide = _usePickerConfig17.unicodeToHide;
16999
+ var _usePickerConfig18 = usePickerConfig(),
17000
+ unicodeToHide = _usePickerConfig18.unicodeToHide;
17066
17001
  return unicodeToHide;
17067
17002
  }
17003
+ function useReactionsConfig() {
17004
+ var _usePickerConfig19 = usePickerConfig(),
17005
+ reactions = _usePickerConfig19.reactions;
17006
+ return reactions;
17007
+ }
17068
17008
  function useGetEmojiUrlConfig() {
17069
- var _usePickerConfig18 = usePickerConfig(),
17070
- getEmojiUrl = _usePickerConfig18.getEmojiUrl;
17009
+ var _usePickerConfig20 = usePickerConfig(),
17010
+ getEmojiUrl = _usePickerConfig20.getEmojiUrl;
17071
17011
  return getEmojiUrl;
17072
17012
  }
17073
17013
  function getDimension(dimensionConfig) {
@@ -17082,270 +17022,50 @@ function useSearchResultsConfig(searchResultsCount) {
17082
17022
  return SEARCH_RESULTS_NO_RESULTS_FOUND;
17083
17023
  }
17084
17024
 
17085
- function useDebouncedState(initialValue, delay) {
17086
- if (delay === void 0) {
17087
- delay = 0;
17088
- }
17089
- var _useState = React.useState(initialValue),
17090
- state = _useState[0],
17091
- setState = _useState[1];
17092
- var timer = React.useRef(null);
17093
- function debouncedSetState(value) {
17094
- return new Promise(function (resolve) {
17095
- var _window;
17096
- if (timer.current) {
17097
- clearTimeout(timer.current);
17098
- }
17099
- timer.current = (_window = window) == null ? void 0 : _window.setTimeout(function () {
17100
- setState(value);
17101
- resolve(value);
17102
- }, delay);
17103
- });
17025
+ function elementCountInRow(parent, element) {
17026
+ if (!parent || !element) {
17027
+ return 0;
17104
17028
  }
17105
- return [state, debouncedSetState];
17029
+ var parentWidth = parent.getBoundingClientRect().width;
17030
+ var elementWidth = element.getBoundingClientRect().width;
17031
+ return Math.floor(parentWidth / elementWidth);
17106
17032
  }
17107
-
17108
- function useIsUnicodeHidden() {
17109
- var unicodeToHide = useUnicodeToHide();
17110
- return function (emojiUnified) {
17111
- return unicodeToHide.has(emojiUnified);
17112
- };
17033
+ function elementIndexInRow(parent, element) {
17034
+ if (!parent || !element) {
17035
+ return 0;
17036
+ }
17037
+ var elementWidth = element.getBoundingClientRect().width;
17038
+ var elementLeft = element.getBoundingClientRect().left;
17039
+ var parentLeft = parent.getBoundingClientRect().left;
17040
+ return Math.floor((elementLeft - parentLeft) / elementWidth);
17113
17041
  }
17114
-
17115
- function useDisallowedEmojis() {
17116
- var DisallowedEmojisRef = React.useRef({});
17117
- var emojiVersionConfig = useEmojiVersionConfig();
17118
- return React.useMemo(function () {
17119
- var emojiVersion = parseFloat("" + emojiVersionConfig);
17120
- if (!emojiVersionConfig || Number.isNaN(emojiVersion)) {
17121
- return DisallowedEmojisRef.current;
17122
- }
17123
- return allEmojis.reduce(function (disallowedEmojis, emoji) {
17124
- if (addedInNewerVersion(emoji, emojiVersion)) {
17125
- disallowedEmojis[emojiUnified(emoji)] = true;
17126
- }
17127
- return disallowedEmojis;
17128
- }, DisallowedEmojisRef.current);
17129
- }, [emojiVersionConfig]);
17042
+ function rowNumber(parent, element) {
17043
+ if (!parent || !element) {
17044
+ return 0;
17045
+ }
17046
+ var elementHeight = element.getBoundingClientRect().height;
17047
+ var elementTop = element.getBoundingClientRect().top;
17048
+ var parentTop = parent.getBoundingClientRect().top;
17049
+ return Math.round((elementTop - parentTop) / elementHeight);
17130
17050
  }
17131
- function useIsEmojiDisallowed() {
17132
- var disallowedEmojis = useDisallowedEmojis();
17133
- var isUnicodeHidden = useIsUnicodeHidden();
17134
- return function isEmojiDisallowed(emoji) {
17135
- var unified = unifiedWithoutSkinTone(emojiUnified(emoji));
17136
- return Boolean(disallowedEmojis[unified] || isUnicodeHidden(unified));
17137
- };
17051
+ function hasNextRow(parent, element) {
17052
+ if (!parent || !element) {
17053
+ return false;
17054
+ }
17055
+ var elementHeight = element.getBoundingClientRect().height;
17056
+ var elementTop = element.getBoundingClientRect().top;
17057
+ var parentTop = parent.getBoundingClientRect().top;
17058
+ var parentHeight = parent.getBoundingClientRect().height;
17059
+ return Math.round(elementTop - parentTop + elementHeight) < parentHeight;
17138
17060
  }
17139
- function addedInNewerVersion(emoji, supportedLevel) {
17140
- return addedIn(emoji) > supportedLevel;
17141
- }
17142
-
17143
- function useMarkInitialLoad(dispatch) {
17144
- React.useEffect(function () {
17145
- dispatch(true);
17146
- }, [dispatch]);
17147
- }
17148
-
17149
- function PickerContextProvider(_ref) {
17150
- var children = _ref.children;
17151
- var disallowedEmojis = useDisallowedEmojis();
17152
- var defaultSkinTone = useDefaultSkinToneConfig();
17153
- // Initialize the filter with the inititial dictionary
17154
- var filterRef = React.useRef(alphaNumericEmojiIndex);
17155
- var disallowClickRef = React.useRef(false);
17156
- var disallowMouseRef = React.useRef(false);
17157
- var disallowedEmojisRef = React.useRef(disallowedEmojis);
17158
- var suggestedUpdateState = useDebouncedState(Date.now(), 200);
17159
- var searchTerm = useDebouncedState('', 100);
17160
- var skinToneFanOpenState = React.useState(false);
17161
- var activeSkinTone = React.useState(defaultSkinTone);
17162
- var activeCategoryState = React.useState(null);
17163
- var emojisThatFailedToLoadState = React.useState(new Set());
17164
- var emojiVariationPickerState = React.useState(null);
17165
- var _useState = React.useState(false),
17166
- isPastInitialLoad = _useState[0],
17167
- setIsPastInitialLoad = _useState[1];
17168
- useMarkInitialLoad(setIsPastInitialLoad);
17169
- return React.createElement(PickerContext.Provider, {
17170
- value: {
17171
- activeCategoryState: activeCategoryState,
17172
- activeSkinTone: activeSkinTone,
17173
- disallowClickRef: disallowClickRef,
17174
- disallowMouseRef: disallowMouseRef,
17175
- disallowedEmojisRef: disallowedEmojisRef,
17176
- emojiVariationPickerState: emojiVariationPickerState,
17177
- emojisThatFailedToLoadState: emojisThatFailedToLoadState,
17178
- filterRef: filterRef,
17179
- isPastInitialLoad: isPastInitialLoad,
17180
- searchTerm: searchTerm,
17181
- skinToneFanOpenState: skinToneFanOpenState,
17182
- suggestedUpdateState: suggestedUpdateState
17183
- }
17184
- }, children);
17185
- }
17186
- var PickerContext = /*#__PURE__*/React.createContext({
17187
- activeCategoryState: [null, function () {}],
17188
- activeSkinTone: [exports.SkinTones.NEUTRAL, function () {}],
17189
- disallowClickRef: {
17190
- current: false
17191
- },
17192
- disallowMouseRef: {
17193
- current: false
17194
- },
17195
- disallowedEmojisRef: {
17196
- current: {}
17197
- },
17198
- emojiVariationPickerState: [null, function () {}],
17199
- emojisThatFailedToLoadState: [/*#__PURE__*/new Set(), function () {}],
17200
- filterRef: {
17201
- current: {}
17202
- },
17203
- isPastInitialLoad: true,
17204
- searchTerm: ['', function () {
17205
- return new Promise(function () {
17206
- return undefined;
17207
- });
17208
- }],
17209
- skinToneFanOpenState: [false, function () {}],
17210
- suggestedUpdateState: [/*#__PURE__*/Date.now(), function () {}]
17211
- });
17212
- function useFilterRef() {
17213
- var _React$useContext = React.useContext(PickerContext),
17214
- filterRef = _React$useContext.filterRef;
17215
- return filterRef;
17216
- }
17217
- function useDisallowClickRef() {
17218
- var _React$useContext2 = React.useContext(PickerContext),
17219
- disallowClickRef = _React$useContext2.disallowClickRef;
17220
- return disallowClickRef;
17221
- }
17222
- function useDisallowMouseRef() {
17223
- var _React$useContext3 = React.useContext(PickerContext),
17224
- disallowMouseRef = _React$useContext3.disallowMouseRef;
17225
- return disallowMouseRef;
17226
- }
17227
- function useSearchTermState() {
17228
- var _React$useContext4 = React.useContext(PickerContext),
17229
- searchTerm = _React$useContext4.searchTerm;
17230
- return searchTerm;
17231
- }
17232
- function useActiveSkinToneState() {
17233
- var _React$useContext5 = React.useContext(PickerContext),
17234
- activeSkinTone = _React$useContext5.activeSkinTone;
17235
- return activeSkinTone;
17236
- }
17237
- function useEmojisThatFailedToLoadState() {
17238
- var _React$useContext6 = React.useContext(PickerContext),
17239
- emojisThatFailedToLoadState = _React$useContext6.emojisThatFailedToLoadState;
17240
- return emojisThatFailedToLoadState;
17241
- }
17242
- function useIsPastInitialLoad() {
17243
- var _React$useContext7 = React.useContext(PickerContext),
17244
- isPastInitialLoad = _React$useContext7.isPastInitialLoad;
17245
- return isPastInitialLoad;
17246
- }
17247
- function useEmojiVariationPickerState() {
17248
- var _React$useContext8 = React.useContext(PickerContext),
17249
- emojiVariationPickerState = _React$useContext8.emojiVariationPickerState;
17250
- return emojiVariationPickerState;
17251
- }
17252
- function useSkinToneFanOpenState() {
17253
- var _React$useContext9 = React.useContext(PickerContext),
17254
- skinToneFanOpenState = _React$useContext9.skinToneFanOpenState;
17255
- return skinToneFanOpenState;
17256
- }
17257
- function useUpdateSuggested() {
17258
- var _React$useContext11 = React.useContext(PickerContext),
17259
- suggestedUpdateState = _React$useContext11.suggestedUpdateState;
17260
- var suggestedUpdated = suggestedUpdateState[0],
17261
- setsuggestedUpdate = suggestedUpdateState[1];
17262
- return [suggestedUpdated, function updateSuggested() {
17263
- setsuggestedUpdate(Date.now());
17264
- }];
17265
- }
17266
-
17267
- function useDisallowMouseMove() {
17268
- var DisallowMouseRef = useDisallowMouseRef();
17269
- return function disallowMouseMove() {
17270
- DisallowMouseRef.current = true;
17271
- };
17272
- }
17273
- function useAllowMouseMove() {
17274
- var DisallowMouseRef = useDisallowMouseRef();
17275
- return function allowMouseMove() {
17276
- DisallowMouseRef.current = false;
17277
- };
17278
- }
17279
- function useIsMouseDisallowed() {
17280
- var DisallowMouseRef = useDisallowMouseRef();
17281
- return function isMouseDisallowed() {
17282
- return DisallowMouseRef.current;
17283
- };
17284
- }
17285
- function useOnMouseMove() {
17286
- var BodyRef = useBodyRef();
17287
- var allowMouseMove = useAllowMouseMove();
17288
- var isMouseDisallowed = useIsMouseDisallowed();
17289
- React.useEffect(function () {
17290
- var bodyRef = BodyRef.current;
17291
- bodyRef == null ? void 0 : bodyRef.addEventListener('mousemove', onMouseMove, {
17292
- passive: true
17293
- });
17294
- function onMouseMove() {
17295
- if (isMouseDisallowed()) {
17296
- allowMouseMove();
17297
- }
17298
- }
17299
- return function () {
17300
- bodyRef == null ? void 0 : bodyRef.removeEventListener('mousemove', onMouseMove);
17301
- };
17302
- }, [BodyRef, allowMouseMove, isMouseDisallowed]);
17303
- }
17304
-
17305
- function elementCountInRow(parent, element) {
17306
- if (!parent || !element) {
17307
- return 0;
17308
- }
17309
- var parentWidth = parent.getBoundingClientRect().width;
17310
- var elementWidth = element.getBoundingClientRect().width;
17311
- return Math.floor(parentWidth / elementWidth);
17312
- }
17313
- function elementIndexInRow(parent, element) {
17314
- if (!parent || !element) {
17315
- return 0;
17316
- }
17317
- var elementWidth = element.getBoundingClientRect().width;
17318
- var elementLeft = element.getBoundingClientRect().left;
17319
- var parentLeft = parent.getBoundingClientRect().left;
17320
- return Math.floor((elementLeft - parentLeft) / elementWidth);
17321
- }
17322
- function rowNumber(parent, element) {
17323
- if (!parent || !element) {
17324
- return 0;
17325
- }
17326
- var elementHeight = element.getBoundingClientRect().height;
17327
- var elementTop = element.getBoundingClientRect().top;
17328
- var parentTop = parent.getBoundingClientRect().top;
17329
- return Math.round((elementTop - parentTop) / elementHeight);
17330
- }
17331
- function hasNextRow(parent, element) {
17332
- if (!parent || !element) {
17333
- return false;
17334
- }
17335
- var elementHeight = element.getBoundingClientRect().height;
17336
- var elementTop = element.getBoundingClientRect().top;
17337
- var parentTop = parent.getBoundingClientRect().top;
17338
- var parentHeight = parent.getBoundingClientRect().height;
17339
- return Math.round(elementTop - parentTop + elementHeight) < parentHeight;
17340
- }
17341
- function getRowElements(elements, row, elementsInRow) {
17342
- if (row === -1) {
17343
- var lastRow = Math.floor((elements.length - 1) / elementsInRow);
17344
- var firstElementIndex = lastRow * elementsInRow;
17345
- var lastElementIndex = elements.length - 1;
17346
- return elements.slice(firstElementIndex, lastElementIndex + 1);
17347
- }
17348
- return elements.slice(row * elementsInRow, (row + 1) * elementsInRow);
17061
+ function getRowElements(elements, row, elementsInRow) {
17062
+ if (row === -1) {
17063
+ var lastRow = Math.floor((elements.length - 1) / elementsInRow);
17064
+ var firstElementIndex = lastRow * elementsInRow;
17065
+ var lastElementIndex = elements.length - 1;
17066
+ return elements.slice(firstElementIndex, lastElementIndex + 1);
17067
+ }
17068
+ return elements.slice(row * elementsInRow, (row + 1) * elementsInRow);
17349
17069
  }
17350
17070
  function getNextRowElements(allElements, currentRow, elementsInRow) {
17351
17071
  var nextRow = currentRow + 1;
@@ -17580,42 +17300,233 @@ function closestCategoryContent(element) {
17580
17300
  return element.closest(asSelectors(ClassNames.categoryContent));
17581
17301
  }
17582
17302
 
17583
- function parseNativeEmoji(unified) {
17584
- return unified.split('-').map(function (hex) {
17585
- return String.fromCodePoint(parseInt(hex, 16));
17586
- }).join('');
17303
+ function useDebouncedState(initialValue, delay) {
17304
+ if (delay === void 0) {
17305
+ delay = 0;
17306
+ }
17307
+ var _useState = React.useState(initialValue),
17308
+ state = _useState[0],
17309
+ setState = _useState[1];
17310
+ var timer = React.useRef(null);
17311
+ function debouncedSetState(value) {
17312
+ return new Promise(function (resolve) {
17313
+ var _window;
17314
+ if (timer.current) {
17315
+ clearTimeout(timer.current);
17316
+ }
17317
+ timer.current = (_window = window) == null ? void 0 : _window.setTimeout(function () {
17318
+ setState(value);
17319
+ resolve(value);
17320
+ }, delay);
17321
+ });
17322
+ }
17323
+ return [state, debouncedSetState];
17587
17324
  }
17588
17325
 
17589
- var SUGGESTED_LS_KEY = 'epr_suggested';
17590
- function getSuggested(mode) {
17591
- try {
17592
- var _window, _window$localStorage$, _window2;
17593
- if (!((_window = window) != null && _window.localStorage)) {
17594
- return [];
17595
- }
17596
- var recent = JSON.parse((_window$localStorage$ = (_window2 = window) == null ? void 0 : _window2.localStorage.getItem(SUGGESTED_LS_KEY)) != null ? _window$localStorage$ : '[]');
17597
- if (mode === exports.SuggestionMode.FREQUENT) {
17598
- return recent.sort(function (a, b) {
17599
- return b.count - a.count;
17600
- });
17601
- }
17602
- return recent;
17603
- } catch (_unused) {
17604
- return [];
17605
- }
17326
+ function useIsUnicodeHidden() {
17327
+ var unicodeToHide = useUnicodeToHide();
17328
+ return function (emojiUnified) {
17329
+ return unicodeToHide.has(emojiUnified);
17330
+ };
17606
17331
  }
17607
- function setSuggested(emoji, skinTone) {
17608
- var recent = getSuggested();
17609
- var unified = emojiUnified(emoji, skinTone);
17610
- var originalUnified = emojiUnified(emoji);
17611
- var existing = recent.find(function (_ref) {
17612
- var u = _ref.unified;
17613
- return u === unified;
17614
- });
17615
- var nextList;
17616
- if (existing) {
17617
- nextList = [existing].concat(recent.filter(function (i) {
17618
- return i !== existing;
17332
+
17333
+ function useDisallowedEmojis() {
17334
+ var DisallowedEmojisRef = React.useRef({});
17335
+ var emojiVersionConfig = useEmojiVersionConfig();
17336
+ return React.useMemo(function () {
17337
+ var emojiVersion = parseFloat("" + emojiVersionConfig);
17338
+ if (!emojiVersionConfig || Number.isNaN(emojiVersion)) {
17339
+ return DisallowedEmojisRef.current;
17340
+ }
17341
+ return allEmojis.reduce(function (disallowedEmojis, emoji) {
17342
+ if (addedInNewerVersion(emoji, emojiVersion)) {
17343
+ disallowedEmojis[emojiUnified(emoji)] = true;
17344
+ }
17345
+ return disallowedEmojis;
17346
+ }, DisallowedEmojisRef.current);
17347
+ }, [emojiVersionConfig]);
17348
+ }
17349
+ function useIsEmojiDisallowed() {
17350
+ var disallowedEmojis = useDisallowedEmojis();
17351
+ var isUnicodeHidden = useIsUnicodeHidden();
17352
+ return function isEmojiDisallowed(emoji) {
17353
+ var unified = unifiedWithoutSkinTone(emojiUnified(emoji));
17354
+ return Boolean(disallowedEmojis[unified] || isUnicodeHidden(unified));
17355
+ };
17356
+ }
17357
+ function addedInNewerVersion(emoji, supportedLevel) {
17358
+ return addedIn(emoji) > supportedLevel;
17359
+ }
17360
+
17361
+ function useMarkInitialLoad(dispatch) {
17362
+ React.useEffect(function () {
17363
+ dispatch(true);
17364
+ }, [dispatch]);
17365
+ }
17366
+
17367
+ function PickerContextProvider(_ref) {
17368
+ var children = _ref.children;
17369
+ var disallowedEmojis = useDisallowedEmojis();
17370
+ var defaultSkinTone = useDefaultSkinToneConfig();
17371
+ var reactionsDefaultOpen = useReactionsOpenConfig();
17372
+ // Initialize the filter with the inititial dictionary
17373
+ var filterRef = React.useRef(alphaNumericEmojiIndex);
17374
+ var disallowClickRef = React.useRef(false);
17375
+ var disallowMouseRef = React.useRef(false);
17376
+ var disallowedEmojisRef = React.useRef(disallowedEmojis);
17377
+ var suggestedUpdateState = useDebouncedState(Date.now(), 200);
17378
+ var searchTerm = useDebouncedState('', 100);
17379
+ var skinToneFanOpenState = React.useState(false);
17380
+ var activeSkinTone = React.useState(defaultSkinTone);
17381
+ var activeCategoryState = React.useState(null);
17382
+ var emojisThatFailedToLoadState = React.useState(new Set());
17383
+ var emojiVariationPickerState = React.useState(null);
17384
+ var reactionsModeState = React.useState(reactionsDefaultOpen);
17385
+ var _useState = React.useState(false),
17386
+ isPastInitialLoad = _useState[0],
17387
+ setIsPastInitialLoad = _useState[1];
17388
+ useMarkInitialLoad(setIsPastInitialLoad);
17389
+ return React.createElement(PickerContext.Provider, {
17390
+ value: {
17391
+ activeCategoryState: activeCategoryState,
17392
+ activeSkinTone: activeSkinTone,
17393
+ disallowClickRef: disallowClickRef,
17394
+ disallowMouseRef: disallowMouseRef,
17395
+ disallowedEmojisRef: disallowedEmojisRef,
17396
+ emojiVariationPickerState: emojiVariationPickerState,
17397
+ emojisThatFailedToLoadState: emojisThatFailedToLoadState,
17398
+ filterRef: filterRef,
17399
+ isPastInitialLoad: isPastInitialLoad,
17400
+ searchTerm: searchTerm,
17401
+ skinToneFanOpenState: skinToneFanOpenState,
17402
+ suggestedUpdateState: suggestedUpdateState,
17403
+ reactionsModeState: reactionsModeState
17404
+ }
17405
+ }, children);
17406
+ }
17407
+ var PickerContext = /*#__PURE__*/React.createContext({
17408
+ activeCategoryState: [null, function () {}],
17409
+ activeSkinTone: [exports.SkinTones.NEUTRAL, function () {}],
17410
+ disallowClickRef: {
17411
+ current: false
17412
+ },
17413
+ disallowMouseRef: {
17414
+ current: false
17415
+ },
17416
+ disallowedEmojisRef: {
17417
+ current: {}
17418
+ },
17419
+ emojiVariationPickerState: [null, function () {}],
17420
+ emojisThatFailedToLoadState: [/*#__PURE__*/new Set(), function () {}],
17421
+ filterRef: {
17422
+ current: {}
17423
+ },
17424
+ isPastInitialLoad: true,
17425
+ searchTerm: ['', function () {
17426
+ return new Promise(function () {
17427
+ return undefined;
17428
+ });
17429
+ }],
17430
+ skinToneFanOpenState: [false, function () {}],
17431
+ suggestedUpdateState: [/*#__PURE__*/Date.now(), function () {}],
17432
+ reactionsModeState: [false, function () {}]
17433
+ });
17434
+ function useFilterRef() {
17435
+ var _React$useContext = React.useContext(PickerContext),
17436
+ filterRef = _React$useContext.filterRef;
17437
+ return filterRef;
17438
+ }
17439
+ function useDisallowClickRef() {
17440
+ var _React$useContext2 = React.useContext(PickerContext),
17441
+ disallowClickRef = _React$useContext2.disallowClickRef;
17442
+ return disallowClickRef;
17443
+ }
17444
+ function useDisallowMouseRef() {
17445
+ var _React$useContext3 = React.useContext(PickerContext),
17446
+ disallowMouseRef = _React$useContext3.disallowMouseRef;
17447
+ return disallowMouseRef;
17448
+ }
17449
+ function useReactionsModeState() {
17450
+ var _React$useContext4 = React.useContext(PickerContext),
17451
+ reactionsModeState = _React$useContext4.reactionsModeState;
17452
+ return reactionsModeState;
17453
+ }
17454
+ function useSearchTermState() {
17455
+ var _React$useContext5 = React.useContext(PickerContext),
17456
+ searchTerm = _React$useContext5.searchTerm;
17457
+ return searchTerm;
17458
+ }
17459
+ function useActiveSkinToneState() {
17460
+ var _React$useContext6 = React.useContext(PickerContext),
17461
+ activeSkinTone = _React$useContext6.activeSkinTone;
17462
+ return activeSkinTone;
17463
+ }
17464
+ function useEmojisThatFailedToLoadState() {
17465
+ var _React$useContext7 = React.useContext(PickerContext),
17466
+ emojisThatFailedToLoadState = _React$useContext7.emojisThatFailedToLoadState;
17467
+ return emojisThatFailedToLoadState;
17468
+ }
17469
+ function useIsPastInitialLoad() {
17470
+ var _React$useContext8 = React.useContext(PickerContext),
17471
+ isPastInitialLoad = _React$useContext8.isPastInitialLoad;
17472
+ return isPastInitialLoad;
17473
+ }
17474
+ function useEmojiVariationPickerState() {
17475
+ var _React$useContext9 = React.useContext(PickerContext),
17476
+ emojiVariationPickerState = _React$useContext9.emojiVariationPickerState;
17477
+ return emojiVariationPickerState;
17478
+ }
17479
+ function useSkinToneFanOpenState() {
17480
+ var _React$useContext10 = React.useContext(PickerContext),
17481
+ skinToneFanOpenState = _React$useContext10.skinToneFanOpenState;
17482
+ return skinToneFanOpenState;
17483
+ }
17484
+ function useUpdateSuggested() {
17485
+ var _React$useContext12 = React.useContext(PickerContext),
17486
+ suggestedUpdateState = _React$useContext12.suggestedUpdateState;
17487
+ var suggestedUpdated = suggestedUpdateState[0],
17488
+ setsuggestedUpdate = suggestedUpdateState[1];
17489
+ return [suggestedUpdated, function updateSuggested() {
17490
+ setsuggestedUpdate(Date.now());
17491
+ }];
17492
+ }
17493
+
17494
+ function parseNativeEmoji(unified) {
17495
+ return unified.split('-').map(function (hex) {
17496
+ return String.fromCodePoint(parseInt(hex, 16));
17497
+ }).join('');
17498
+ }
17499
+
17500
+ var SUGGESTED_LS_KEY = 'epr_suggested';
17501
+ function getSuggested(mode) {
17502
+ try {
17503
+ var _window, _window$localStorage$, _window2;
17504
+ if (!((_window = window) != null && _window.localStorage)) {
17505
+ return [];
17506
+ }
17507
+ var recent = JSON.parse((_window$localStorage$ = (_window2 = window) == null ? void 0 : _window2.localStorage.getItem(SUGGESTED_LS_KEY)) != null ? _window$localStorage$ : '[]');
17508
+ if (mode === exports.SuggestionMode.FREQUENT) {
17509
+ return recent.sort(function (a, b) {
17510
+ return b.count - a.count;
17511
+ });
17512
+ }
17513
+ return recent;
17514
+ } catch (_unused) {
17515
+ return [];
17516
+ }
17517
+ }
17518
+ function setSuggested(emoji, skinTone) {
17519
+ var recent = getSuggested();
17520
+ var unified = emojiUnified(emoji, skinTone);
17521
+ var originalUnified = emojiUnified(emoji);
17522
+ var existing = recent.find(function (_ref) {
17523
+ var u = _ref.unified;
17524
+ return u === unified;
17525
+ });
17526
+ var nextList;
17527
+ if (existing) {
17528
+ nextList = [existing].concat(recent.filter(function (i) {
17529
+ return i !== existing;
17619
17530
  }));
17620
17531
  } else {
17621
17532
  existing = {
@@ -17670,46 +17581,140 @@ function useHasOpenToggles() {
17670
17581
  };
17671
17582
  }
17672
17583
 
17673
- function useSetVariationPicker() {
17674
- var setAnchoredEmojiRef = useSetAnchoredEmojiRef();
17675
- var _useEmojiVariationPic = useEmojiVariationPickerState(),
17676
- setEmojiVariationPicker = _useEmojiVariationPic[1];
17677
- return function setVariationPicker(element) {
17678
- var _emojiFromElement = emojiFromElement(element),
17679
- emoji = _emojiFromElement[0];
17680
- if (emoji) {
17681
- setAnchoredEmojiRef(element);
17682
- setEmojiVariationPicker(emoji);
17683
- }
17684
- };
17584
+ function focusElement(element) {
17585
+ if (!element) {
17586
+ return;
17587
+ }
17588
+ requestAnimationFrame(function () {
17589
+ element.focus();
17590
+ });
17591
+ }
17592
+ function focusPrevElementSibling(element) {
17593
+ if (!element) return;
17594
+ var prev = element.previousElementSibling;
17595
+ focusElement(prev);
17596
+ }
17597
+ function focusNextElementSibling(element) {
17598
+ if (!element) return;
17599
+ var next = element.nextElementSibling;
17600
+ focusElement(next);
17601
+ }
17602
+ function focusFirstElementChild(element) {
17603
+ if (!element) return;
17604
+ var first = element.firstElementChild;
17605
+ focusElement(first);
17685
17606
  }
17686
17607
 
17687
- function useMouseDownHandlers(BodyRef) {
17688
- var mouseDownTimerRef = React.useRef();
17689
- var setVariationPicker = useSetVariationPicker();
17690
- var disallowClickRef = useDisallowClickRef();
17691
- var _useEmojiVariationPic = useEmojiVariationPickerState(),
17692
- setEmojiVariationPicker = _useEmojiVariationPic[1];
17693
- var closeAllOpenToggles = useCloseAllOpenToggles();
17694
- var _useActiveSkinToneSta = useActiveSkinToneState(),
17695
- activeSkinTone = _useActiveSkinToneSta[0];
17696
- var onEmojiClick = useOnEmojiClickConfig();
17697
- var _useUpdateSuggested = useUpdateSuggested(),
17698
- updateSuggested = _useUpdateSuggested[1];
17699
- var getEmojiUrl = useGetEmojiUrlConfig();
17700
- var activeEmojiStyle = useEmojiStyleConfig();
17701
- var onClick = React.useCallback(function onClick(event) {
17702
- if (disallowClickRef.current) {
17703
- return;
17704
- }
17705
- closeAllOpenToggles();
17706
- var _emojiFromEvent = emojiFromEvent(event),
17707
- emoji = _emojiFromEvent[0],
17708
- unified = _emojiFromEvent[1];
17709
- if (!emoji || !unified) {
17710
- return;
17608
+ function ElementRefContextProvider(_ref) {
17609
+ var children = _ref.children;
17610
+ var PickerMainRef = React.useRef(null);
17611
+ var AnchoredEmojiRef = React.useRef(null);
17612
+ var BodyRef = React.useRef(null);
17613
+ var SearchInputRef = React.useRef(null);
17614
+ var SkinTonePickerRef = React.useRef(null);
17615
+ var CategoryNavigationRef = React.useRef(null);
17616
+ var VariationPickerRef = React.useRef(null);
17617
+ var ReactionsRef = React.useRef(null);
17618
+ return React.createElement(ElementRefContext.Provider, {
17619
+ value: {
17620
+ AnchoredEmojiRef: AnchoredEmojiRef,
17621
+ BodyRef: BodyRef,
17622
+ CategoryNavigationRef: CategoryNavigationRef,
17623
+ PickerMainRef: PickerMainRef,
17624
+ SearchInputRef: SearchInputRef,
17625
+ SkinTonePickerRef: SkinTonePickerRef,
17626
+ VariationPickerRef: VariationPickerRef,
17627
+ ReactionsRef: ReactionsRef
17711
17628
  }
17712
- var skinToneToUse = activeVariationFromUnified(unified) || activeSkinTone;
17629
+ }, children);
17630
+ }
17631
+ var ElementRefContext = /*#__PURE__*/React.createContext({
17632
+ AnchoredEmojiRef: /*#__PURE__*/React.createRef(),
17633
+ BodyRef: /*#__PURE__*/React.createRef(),
17634
+ CategoryNavigationRef: /*#__PURE__*/React.createRef(),
17635
+ PickerMainRef: /*#__PURE__*/React.createRef(),
17636
+ SearchInputRef: /*#__PURE__*/React.createRef(),
17637
+ SkinTonePickerRef: /*#__PURE__*/React.createRef(),
17638
+ VariationPickerRef: /*#__PURE__*/React.createRef(),
17639
+ ReactionsRef: /*#__PURE__*/React.createRef()
17640
+ });
17641
+ function useElementRef() {
17642
+ return React.useContext(ElementRefContext);
17643
+ }
17644
+ function usePickerMainRef() {
17645
+ return useElementRef()['PickerMainRef'];
17646
+ }
17647
+ function useAnchoredEmojiRef() {
17648
+ return useElementRef()['AnchoredEmojiRef'];
17649
+ }
17650
+ function useSetAnchoredEmojiRef() {
17651
+ var AnchoredEmojiRef = useAnchoredEmojiRef();
17652
+ return function (target) {
17653
+ if (target === null && AnchoredEmojiRef.current !== null) {
17654
+ focusElement(AnchoredEmojiRef.current);
17655
+ }
17656
+ AnchoredEmojiRef.current = target;
17657
+ };
17658
+ }
17659
+ function useBodyRef() {
17660
+ return useElementRef()['BodyRef'];
17661
+ }
17662
+ function useReactionsRef() {
17663
+ return useElementRef()['ReactionsRef'];
17664
+ }
17665
+ function useSearchInputRef() {
17666
+ return useElementRef()['SearchInputRef'];
17667
+ }
17668
+ function useSkinTonePickerRef() {
17669
+ return useElementRef()['SkinTonePickerRef'];
17670
+ }
17671
+ function useCategoryNavigationRef() {
17672
+ return useElementRef()['CategoryNavigationRef'];
17673
+ }
17674
+ function useVariationPickerRef() {
17675
+ return useElementRef()['VariationPickerRef'];
17676
+ }
17677
+
17678
+ function useSetVariationPicker() {
17679
+ var setAnchoredEmojiRef = useSetAnchoredEmojiRef();
17680
+ var _useEmojiVariationPic = useEmojiVariationPickerState(),
17681
+ setEmojiVariationPicker = _useEmojiVariationPic[1];
17682
+ return function setVariationPicker(element) {
17683
+ var _emojiFromElement = emojiFromElement(element),
17684
+ emoji = _emojiFromElement[0];
17685
+ if (emoji) {
17686
+ setAnchoredEmojiRef(element);
17687
+ setEmojiVariationPicker(emoji);
17688
+ }
17689
+ };
17690
+ }
17691
+
17692
+ function useMouseDownHandlers(BodyRef) {
17693
+ var mouseDownTimerRef = React.useRef();
17694
+ var setVariationPicker = useSetVariationPicker();
17695
+ var disallowClickRef = useDisallowClickRef();
17696
+ var _useEmojiVariationPic = useEmojiVariationPickerState(),
17697
+ setEmojiVariationPicker = _useEmojiVariationPic[1];
17698
+ var closeAllOpenToggles = useCloseAllOpenToggles();
17699
+ var _useActiveSkinToneSta = useActiveSkinToneState(),
17700
+ activeSkinTone = _useActiveSkinToneSta[0];
17701
+ var onEmojiClick = useOnEmojiClickConfig();
17702
+ var _useUpdateSuggested = useUpdateSuggested(),
17703
+ updateSuggested = _useUpdateSuggested[1];
17704
+ var getEmojiUrl = useGetEmojiUrlConfig();
17705
+ var activeEmojiStyle = useEmojiStyleConfig();
17706
+ var onClick = React.useCallback(function onClick(event) {
17707
+ if (disallowClickRef.current) {
17708
+ return;
17709
+ }
17710
+ closeAllOpenToggles();
17711
+ var _emojiFromEvent = emojiFromEvent(event),
17712
+ emoji = _emojiFromEvent[0],
17713
+ unified = _emojiFromEvent[1];
17714
+ if (!emoji || !unified) {
17715
+ return;
17716
+ }
17717
+ var skinToneToUse = activeVariationFromUnified(unified) || activeSkinTone;
17713
17718
  updateSuggested();
17714
17719
  setSuggested(emoji, skinToneToUse);
17715
17720
  onEmojiClick(emojiClickOutput(emoji, skinToneToUse, activeEmojiStyle, getEmojiUrl), event);
@@ -17810,6 +17815,391 @@ function emojiClickOutput(emoji, activeSkinTone, activeEmojiStyle, getEmojiUrl)
17810
17815
  };
17811
17816
  }
17812
17817
 
17818
+ function Button(props) {
17819
+ return React.createElement("button", Object.assign({
17820
+ type: "button"
17821
+ }, props, {
17822
+ className: flairup.cx(styles.button, props.className)
17823
+ }), props.children);
17824
+ }
17825
+ var styles = /*#__PURE__*/stylesheet.create({
17826
+ button: {
17827
+ '.': 'epr-btn',
17828
+ cursor: 'pointer',
17829
+ border: '0',
17830
+ background: 'none',
17831
+ outline: 'none'
17832
+ }
17833
+ });
17834
+
17835
+ function ClickableEmojiButton(_ref) {
17836
+ var _cx;
17837
+ var emojiNames = _ref.emojiNames,
17838
+ unified = _ref.unified,
17839
+ hidden = _ref.hidden,
17840
+ hiddenOnSearch = _ref.hiddenOnSearch,
17841
+ _ref$showVariations = _ref.showVariations,
17842
+ showVariations = _ref$showVariations === void 0 ? true : _ref$showVariations,
17843
+ hasVariations = _ref.hasVariations,
17844
+ children = _ref.children,
17845
+ _ref$round = _ref.round,
17846
+ round = _ref$round === void 0 ? false : _ref$round;
17847
+ return React.createElement(Button, {
17848
+ className: flairup.cx(styles$1.emoji, hidden && commonStyles.hidden, hiddenOnSearch && commonInteractionStyles.hiddenOnSearch, (_cx = {}, _cx[ClassNames.visible] = !hidden && !hiddenOnSearch, _cx), !!(hasVariations && showVariations) && styles$1.hasVariations, round && styles$1.round),
17849
+ "data-unified": unified,
17850
+ "aria-label": emojiNames[0],
17851
+ "data-full-name": emojiNames
17852
+ }, children);
17853
+ }
17854
+ var styles$1 = /*#__PURE__*/stylesheet.create({
17855
+ emoji: {
17856
+ '.': ClassNames.emoji,
17857
+ position: 'relative',
17858
+ width: 'var(--epr-emoji-fullsize)',
17859
+ height: 'var(--epr-emoji-fullsize)',
17860
+ boxSizing: 'border-box',
17861
+ display: 'flex',
17862
+ alignItems: 'center',
17863
+ justifyContent: 'center',
17864
+ maxWidth: 'var(--epr-emoji-fullsize)',
17865
+ maxHeight: 'var(--epr-emoji-fullsize)',
17866
+ borderRadius: '8px',
17867
+ overflow: 'hidden',
17868
+ transition: 'background-color 0.2s',
17869
+ ':hover': {
17870
+ backgroundColor: 'var(--epr-emoji-hover-color)'
17871
+ },
17872
+ ':focus': {
17873
+ backgroundColor: 'var(--epr-focus-bg-color)'
17874
+ }
17875
+ },
17876
+ round: {
17877
+ borderRadius: '50%'
17878
+ },
17879
+ hasVariations: {
17880
+ '.': ClassNames.emojiHasVariations,
17881
+ ':after': {
17882
+ content: '',
17883
+ display: 'block',
17884
+ width: '0',
17885
+ height: '0',
17886
+ right: '0px',
17887
+ bottom: '1px',
17888
+ position: 'absolute',
17889
+ borderLeft: '4px solid transparent',
17890
+ borderRight: '4px solid transparent',
17891
+ transform: 'rotate(135deg)',
17892
+ borderBottom: '4px solid var(--epr-emoji-variation-indicator-color)',
17893
+ zIndex: 'var(--epr-emoji-variations-indictator-z-index)'
17894
+ },
17895
+ ':hover:after': {
17896
+ borderBottom: '4px solid var(--epr-emoji-variation-indicator-color-hover)'
17897
+ }
17898
+ }
17899
+ });
17900
+
17901
+ var emojiStyles = /*#__PURE__*/stylesheet.create({
17902
+ external: {
17903
+ '.': ClassNames.external,
17904
+ fontSize: '0'
17905
+ },
17906
+ common: {
17907
+ alignSelf: 'center',
17908
+ justifySelf: 'center',
17909
+ display: 'block'
17910
+ }
17911
+ });
17912
+
17913
+ function EmojiImg(_ref) {
17914
+ var emojiName = _ref.emojiName,
17915
+ style = _ref.style,
17916
+ _ref$lazyLoad = _ref.lazyLoad,
17917
+ lazyLoad = _ref$lazyLoad === void 0 ? false : _ref$lazyLoad,
17918
+ imgUrl = _ref.imgUrl,
17919
+ onError = _ref.onError,
17920
+ className = _ref.className;
17921
+ return React.createElement("img", {
17922
+ src: imgUrl,
17923
+ alt: emojiName,
17924
+ className: flairup.cx(styles$2.emojiImag, emojiStyles.external, emojiStyles.common, className),
17925
+ loading: lazyLoad ? 'lazy' : 'eager',
17926
+ onError: onError,
17927
+ style: style
17928
+ });
17929
+ }
17930
+ var styles$2 = /*#__PURE__*/stylesheet.create({
17931
+ emojiImag: {
17932
+ '.': 'epr-emoji-img',
17933
+ maxWidth: 'var(--epr-emoji-fullsize)',
17934
+ maxHeight: 'var(--epr-emoji-fullsize)',
17935
+ minWidth: 'var(--epr-emoji-fullsize)',
17936
+ minHeight: 'var(--epr-emoji-fullsize)',
17937
+ padding: 'var(--epr-emoji-padding)'
17938
+ }
17939
+ });
17940
+
17941
+ function NativeEmoji(_ref) {
17942
+ var unified = _ref.unified,
17943
+ style = _ref.style,
17944
+ className = _ref.className;
17945
+ return React.createElement("span", {
17946
+ className: flairup.cx(styles$3.nativeEmoji, emojiStyles.common, emojiStyles.external, className),
17947
+ "data-unified": unified,
17948
+ style: style
17949
+ }, parseNativeEmoji(unified));
17950
+ }
17951
+ var styles$3 = /*#__PURE__*/stylesheet.create({
17952
+ nativeEmoji: {
17953
+ '.': 'epr-emoji-native',
17954
+ fontFamily: '"Segoe UI Emoji", "Segoe UI Symbol", "Segoe UI", "Apple Color Emoji", "Twemoji Mozilla", "Noto Color Emoji", "EmojiOne Color", "Android Emoji"!important',
17955
+ position: 'relative',
17956
+ lineHeight: '100%',
17957
+ fontSize: 'var(--epr-emoji-size)',
17958
+ textAlign: 'center',
17959
+ alignSelf: 'center',
17960
+ justifySelf: 'center',
17961
+ letterSpacing: '0',
17962
+ padding: 'var(--epr-emoji-padding)'
17963
+ }
17964
+ });
17965
+
17966
+ function ViewOnlyEmoji(_ref) {
17967
+ var emoji = _ref.emoji,
17968
+ unified = _ref.unified,
17969
+ emojiStyle = _ref.emojiStyle,
17970
+ size = _ref.size,
17971
+ lazyLoad = _ref.lazyLoad,
17972
+ _ref$getEmojiUrl = _ref.getEmojiUrl,
17973
+ getEmojiUrl = _ref$getEmojiUrl === void 0 ? emojiUrlByUnified : _ref$getEmojiUrl,
17974
+ className = _ref.className;
17975
+ var _useEmojisThatFailedT = useEmojisThatFailedToLoadState(),
17976
+ setEmojisThatFailedToLoad = _useEmojisThatFailedT[1];
17977
+ var style = {};
17978
+ if (size) {
17979
+ style.width = style.height = style.fontSize = size + "px";
17980
+ }
17981
+ var emojiToRender = emoji ? emoji : emojiByUnified(unified);
17982
+ if (!emojiToRender) {
17983
+ return null;
17984
+ }
17985
+ if (isCustomEmoji(emojiToRender)) {
17986
+ return React.createElement(EmojiImg, {
17987
+ style: style,
17988
+ emojiName: unified,
17989
+ emojiStyle: exports.EmojiStyle.NATIVE,
17990
+ lazyLoad: lazyLoad,
17991
+ imgUrl: emojiToRender.imgUrl,
17992
+ onError: onError,
17993
+ className: className
17994
+ });
17995
+ }
17996
+ return React.createElement(React.Fragment, null, emojiStyle === exports.EmojiStyle.NATIVE ? React.createElement(NativeEmoji, {
17997
+ unified: unified,
17998
+ style: style,
17999
+ className: className
18000
+ }) : React.createElement(EmojiImg, {
18001
+ style: style,
18002
+ emojiName: emojiName(emojiToRender),
18003
+ emojiStyle: emojiStyle,
18004
+ lazyLoad: lazyLoad,
18005
+ imgUrl: getEmojiUrl(unified, emojiStyle),
18006
+ onError: onError,
18007
+ className: className
18008
+ }));
18009
+ function onError() {
18010
+ setEmojisThatFailedToLoad(function (prev) {
18011
+ return new Set(prev).add(unified);
18012
+ });
18013
+ }
18014
+ }
18015
+
18016
+ function ClickableEmoji(_ref) {
18017
+ var emoji = _ref.emoji,
18018
+ unified = _ref.unified,
18019
+ hidden = _ref.hidden,
18020
+ hiddenOnSearch = _ref.hiddenOnSearch,
18021
+ emojiStyle = _ref.emojiStyle,
18022
+ _ref$showVariations = _ref.showVariations,
18023
+ showVariations = _ref$showVariations === void 0 ? true : _ref$showVariations,
18024
+ size = _ref.size,
18025
+ lazyLoad = _ref.lazyLoad,
18026
+ getEmojiUrl = _ref.getEmojiUrl,
18027
+ _ref$round = _ref.round,
18028
+ round = _ref$round === void 0 ? false : _ref$round;
18029
+ var hasVariations = emojiHasVariations(emoji);
18030
+ return React.createElement(ClickableEmojiButton, {
18031
+ hasVariations: hasVariations,
18032
+ showVariations: showVariations,
18033
+ hidden: hidden,
18034
+ hiddenOnSearch: hiddenOnSearch,
18035
+ emojiNames: emojiNames(emoji),
18036
+ unified: unified,
18037
+ round: round
18038
+ }, React.createElement(ViewOnlyEmoji, {
18039
+ unified: unified,
18040
+ emoji: emoji,
18041
+ size: size,
18042
+ emojiStyle: emojiStyle,
18043
+ lazyLoad: lazyLoad,
18044
+ getEmojiUrl: getEmojiUrl
18045
+ }));
18046
+ }
18047
+
18048
+ var Plus = 'data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDI4LjEuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPgo8c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IgoJIHdpZHRoPSIyMHB4IiBoZWlnaHQ9IjgwcHgiIHZpZXdCb3g9IjAgMCAyMCA4MCIgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyAwIDAgMjAgODAiIHhtbDpzcGFjZT0icHJlc2VydmUiPgo8cGF0aCBmaWxsPSIjODY4Njg2IiBkPSJNNS43LDEwLjRjMCwwLjEsMC4xLDAuMywwLjIsMC40QzYsMTAuOSw2LjEsMTEsNi4zLDExaDMuNHYzLjRjMCwwLjEsMC4xLDAuMywwLjIsMC40CgljMC4xLDAuMSwwLjIsMC4yLDAuNCwwLjJjMC4zLDAsMC41LTAuMiwwLjUtMC41di0zLjRoMy40YzAuMywwLDAuNS0wLjIsMC41LTAuNXMtMC4yLTAuNS0wLjUtMC41aC0zLjRWNi43YzAtMC4zLTAuMi0wLjUtMC41LTAuNQoJQzkuOCw2LDkuNiw2LjIsOS42LDYuNXYzLjRINi4yQzUuOSw5LjksNS43LDEwLjEsNS43LDEwLjRMNS43LDEwLjR6Ii8+CjxwYXRoIGZpbGw9IiMzMzcxQjciIGQ9Ik01LjcsMzAuNGMwLDAuMSwwLjEsMC4zLDAuMiwwLjRTNi4xLDMxLDYuMywzMWgzLjR2My40YzAsMC4xLDAuMSwwLjMsMC4yLDAuNGMwLjEsMC4xLDAuMiwwLjIsMC40LDAuMgoJYzAuMywwLDAuNS0wLjIsMC41LTAuNXYtMy40aDMuNGMwLjMsMCwwLjUtMC4yLDAuNS0wLjVzLTAuMi0wLjUtMC41LTAuNWgtMy40di0zLjRjMC0wLjMtMC4yLTAuNS0wLjUtMC41cy0wLjUsMC4yLTAuNSwwLjV2My40SDYuMgoJQzUuOSwyOS45LDUuNywzMC4xLDUuNywzMC40TDUuNywzMC40eiIvPgo8cGF0aCBmaWxsPSIjQzBDMEJGIiBkPSJNNS43LDUwLjRjMCwwLjEsMC4xLDAuMywwLjIsMC40QzYsNTAuOSw2LjEsNTEsNi4zLDUxaDMuNHYzLjRjMCwwLjEsMC4xLDAuMywwLjIsMC40CgljMC4xLDAuMSwwLjIsMC4yLDAuNCwwLjJjMC4zLDAsMC41LTAuMiwwLjUtMC41di0zLjRoMy40YzAuMywwLDAuNS0wLjIsMC41LTAuNXMtMC4yLTAuNS0wLjUtMC41aC0zLjR2LTMuNGMwLTAuMy0wLjItMC41LTAuNS0wLjUKCXMtMC41LDAuMi0wLjUsMC41djMuNEg2LjJDNS45LDQ5LjksNS43LDUwLjEsNS43LDUwLjRMNS43LDUwLjR6Ii8+CjxwYXRoIGZpbGw9IiM2QUE5REQiIGQ9Ik01LjcsNzAuNGMwLDAuMSwwLjEsMC4zLDAuMiwwLjRTNi4xLDcxLDYuMyw3MWgzLjR2My40YzAsMC4xLDAuMSwwLjMsMC4yLDAuNGMwLjEsMC4xLDAuMiwwLjIsMC40LDAuMgoJYzAuMywwLDAuNS0wLjIsMC41LTAuNXYtMy40aDMuNGMwLjMsMCwwLjUtMC4yLDAuNS0wLjVzLTAuMi0wLjUtMC41LTAuNWgtMy40di0zLjRjMC0wLjMtMC4yLTAuNS0wLjUtMC41cy0wLjUsMC4yLTAuNSwwLjV2My40SDYuNAoJQzUuOSw2OS45LDUuNyw3MC4xLDUuNyw3MC40TDUuNyw3MC40eiIvPgo8L3N2Zz4=';
18049
+
18050
+ function BtnPlus() {
18051
+ var _useReactionsModeStat = useReactionsModeState(),
18052
+ setReactionsMode = _useReactionsModeStat[1];
18053
+ return React.createElement(Button, {
18054
+ "aria-label": "Show all Emojis",
18055
+ title: "Show all Emojis",
18056
+ tabIndex: 0,
18057
+ className: flairup.cx(styles$4.plusSign),
18058
+ onClick: function onClick() {
18059
+ return setReactionsMode(false);
18060
+ }
18061
+ });
18062
+ }
18063
+ var styles$4 = /*#__PURE__*/stylesheet.create({
18064
+ plusSign: {
18065
+ fontSize: '20px',
18066
+ padding: '18px',
18067
+ color: 'var(--epr-text-color)',
18068
+ borderRadius: '50%',
18069
+ textAlign: 'center',
18070
+ lineHeight: '100%',
18071
+ width: '20px',
18072
+ height: '20px',
18073
+ display: 'flex',
18074
+ justifyContent: 'center',
18075
+ alignItems: 'center',
18076
+ transition: 'background-color 0.1s ease-in-out',
18077
+ ':after': {
18078
+ content: '',
18079
+ minWidth: '20px',
18080
+ minHeight: '20px',
18081
+ backgroundImage: "url(" + Plus + ")",
18082
+ backgroundColor: 'transparent',
18083
+ backgroundRepeat: 'no-repeat',
18084
+ backgroundSize: '20px',
18085
+ backgroundPositionY: '0'
18086
+ },
18087
+ ':hover': {
18088
+ color: 'var(--epr-highlight-color)',
18089
+ backgroundColor: 'var(--epr-hover-bg-color)',
18090
+ // @ts-ignore
18091
+ ':after': {
18092
+ backgroundPositionY: '-20px'
18093
+ }
18094
+ },
18095
+ ':focus': {
18096
+ color: 'var(--epr-highlight-color)',
18097
+ backgroundColor: 'var(--epr-hover-bg-color)',
18098
+ // @ts-ignore
18099
+ ':after': {
18100
+ backgroundPositionY: '-40px'
18101
+ }
18102
+ }
18103
+ },
18104
+ '.epr-dark-theme': {
18105
+ plusSign: {
18106
+ ':after': {
18107
+ backgroundPositionY: '-40px'
18108
+ },
18109
+ ':hover:after': {
18110
+ backgroundPositionY: '-60px'
18111
+ }
18112
+ }
18113
+ },
18114
+ '.epr-auto-theme': {
18115
+ plusSign: {
18116
+ '@media (prefers-color-scheme: dark)': {
18117
+ ':after': {
18118
+ backgroundPositionY: '-40px'
18119
+ },
18120
+ ':hover:after': {
18121
+ backgroundPositionY: '-60px'
18122
+ }
18123
+ }
18124
+ }
18125
+ }
18126
+ });
18127
+
18128
+ function Reactions() {
18129
+ var _useReactionsModeStat = useReactionsModeState(),
18130
+ reactionsOpen = _useReactionsModeStat[0];
18131
+ var ReactionsRef = useReactionsRef();
18132
+ var reactions = useReactionsConfig();
18133
+ useMouseDownHandlers(ReactionsRef);
18134
+ var emojiStyle = useEmojiStyleConfig();
18135
+ if (!reactionsOpen) {
18136
+ return null;
18137
+ }
18138
+ return React.createElement("ul", {
18139
+ className: flairup.cx(styles$5.list, !reactionsOpen && commonStyles.hidden),
18140
+ ref: ReactionsRef
18141
+ }, reactions.map(function (reaction) {
18142
+ return React.createElement("li", {
18143
+ key: reaction
18144
+ }, React.createElement(ClickableEmoji, {
18145
+ emoji: emojiByUnified(reaction),
18146
+ emojiStyle: emojiStyle,
18147
+ unified: reaction,
18148
+ showVariations: false,
18149
+ round: true
18150
+ }));
18151
+ }), React.createElement("li", null, React.createElement(BtnPlus, null)));
18152
+ }
18153
+ var styles$5 = /*#__PURE__*/stylesheet.create({
18154
+ list: {
18155
+ listStyle: 'none',
18156
+ margin: '0',
18157
+ padding: '0 5px',
18158
+ display: 'flex',
18159
+ justifyContent: 'space-between',
18160
+ alignItems: 'center',
18161
+ height: '100%'
18162
+ }
18163
+ });
18164
+
18165
+ function useDisallowMouseMove() {
18166
+ var DisallowMouseRef = useDisallowMouseRef();
18167
+ return function disallowMouseMove() {
18168
+ DisallowMouseRef.current = true;
18169
+ };
18170
+ }
18171
+ function useAllowMouseMove() {
18172
+ var DisallowMouseRef = useDisallowMouseRef();
18173
+ return function allowMouseMove() {
18174
+ DisallowMouseRef.current = false;
18175
+ };
18176
+ }
18177
+ function useIsMouseDisallowed() {
18178
+ var DisallowMouseRef = useDisallowMouseRef();
18179
+ return function isMouseDisallowed() {
18180
+ return DisallowMouseRef.current;
18181
+ };
18182
+ }
18183
+ function useOnMouseMove() {
18184
+ var BodyRef = useBodyRef();
18185
+ var allowMouseMove = useAllowMouseMove();
18186
+ var isMouseDisallowed = useIsMouseDisallowed();
18187
+ React.useEffect(function () {
18188
+ var bodyRef = BodyRef.current;
18189
+ bodyRef == null ? void 0 : bodyRef.addEventListener('mousemove', onMouseMove, {
18190
+ passive: true
18191
+ });
18192
+ function onMouseMove() {
18193
+ if (isMouseDisallowed()) {
18194
+ allowMouseMove();
18195
+ }
18196
+ }
18197
+ return function () {
18198
+ bodyRef == null ? void 0 : bodyRef.removeEventListener('mousemove', onMouseMove);
18199
+ };
18200
+ }, [BodyRef, allowMouseMove, isMouseDisallowed]);
18201
+ }
18202
+
17813
18203
  function useOnScroll(BodyRef) {
17814
18204
  var closeAllOpenToggles = useCloseAllOpenToggles();
17815
18205
  React.useEffect(function () {
@@ -17976,303 +18366,81 @@ function useApplySearch() {
17976
18366
  };
17977
18367
  }
17978
18368
  function filterEmojiObjectByKeyword(emojis, keyword) {
17979
- var filtered = {};
17980
- for (var unified in emojis) {
17981
- var emoji = emojis[unified];
17982
- if (hasMatch(emoji, keyword)) {
17983
- filtered[unified] = emoji;
17984
- }
17985
- }
17986
- return filtered;
17987
- }
17988
- function hasMatch(emoji, keyword) {
17989
- return emojiNames(emoji).some(function (name) {
17990
- return name.includes(keyword);
17991
- });
17992
- }
17993
- function useIsEmojiFiltered() {
17994
- var _useFilterRef = useFilterRef(),
17995
- filter = _useFilterRef.current;
17996
- var _useSearchTermState3 = useSearchTermState(),
17997
- searchTerm = _useSearchTermState3[0];
17998
- return function (unified) {
17999
- return isEmojiFilteredBySearchTerm(unified, filter, searchTerm);
18000
- };
18001
- }
18002
- function isEmojiFilteredBySearchTerm(unified, filter, searchTerm) {
18003
- var _filter$searchTerm;
18004
- if (!filter || !searchTerm) {
18005
- return false;
18006
- }
18007
- return !((_filter$searchTerm = filter[searchTerm]) != null && _filter$searchTerm[unified]);
18008
- }
18009
- function findLongestMatch(keyword, dict) {
18010
- if (!dict) {
18011
- return null;
18012
- }
18013
- if (dict[keyword]) {
18014
- return dict[keyword];
18015
- }
18016
- var longestMatchingKey = Object.keys(dict).sort(function (a, b) {
18017
- return b.length - a.length;
18018
- }).find(function (key) {
18019
- return keyword.includes(key);
18020
- });
18021
- if (longestMatchingKey) {
18022
- return dict[longestMatchingKey];
18023
- }
18024
- return null;
18025
- }
18026
- function getNormalizedSearchTerm(str) {
18027
- if (!str || typeof str !== 'string') {
18028
- return '';
18029
- }
18030
- return str.trim().toLowerCase();
18031
- }
18032
- function getStatusSearchResults(filterState, searchTerm) {
18033
- var _Object$entries;
18034
- if (!(filterState != null && filterState[searchTerm])) return '';
18035
- var searchResultsCount = ((_Object$entries = Object.entries(filterState == null ? void 0 : filterState[searchTerm])) == null ? void 0 : _Object$entries.length) || 0;
18036
- // eslint-disable-next-line react-hooks/rules-of-hooks
18037
- return useSearchResultsConfig(searchResultsCount);
18038
- }
18039
-
18040
- function useIsEmojiHidden() {
18041
- var _useEmojisThatFailedT = useEmojisThatFailedToLoadState(),
18042
- emojisThatFailedToLoad = _useEmojisThatFailedT[0];
18043
- var isEmojiFiltered = useIsEmojiFiltered();
18044
- return function (emoji) {
18045
- var unified = emojiUnified(emoji);
18046
- var failedToLoad = emojisThatFailedToLoad.has(unified);
18047
- var filteredOut = isEmojiFiltered(unified);
18048
- return {
18049
- failedToLoad: failedToLoad,
18050
- filteredOut: filteredOut,
18051
- hidden: failedToLoad || filteredOut
18052
- };
18053
- };
18054
- }
18055
-
18056
- function Button(props) {
18057
- return React.createElement("button", Object.assign({
18058
- type: "button"
18059
- }, props, {
18060
- className: flairup.cx(styles.button, props.className)
18061
- }), props.children);
18062
- }
18063
- var styles = /*#__PURE__*/stylesheet.create({
18064
- button: {
18065
- '.': 'epr-btn',
18066
- cursor: 'pointer',
18067
- border: '0',
18068
- background: 'none',
18069
- outline: 'none'
18070
- }
18071
- });
18072
-
18073
- function ClickableEmojiButton(_ref) {
18074
- var _cx;
18075
- var emojiNames = _ref.emojiNames,
18076
- unified = _ref.unified,
18077
- hidden = _ref.hidden,
18078
- hiddenOnSearch = _ref.hiddenOnSearch,
18079
- _ref$showVariations = _ref.showVariations,
18080
- showVariations = _ref$showVariations === void 0 ? true : _ref$showVariations,
18081
- hasVariations = _ref.hasVariations,
18082
- children = _ref.children;
18083
- return React.createElement(Button, {
18084
- className: flairup.cx(styles$1.emoji, hidden && commonStyles.hidden, hiddenOnSearch && commonInteractionStyles.hiddenOnSearch, (_cx = {}, _cx[ClassNames.visible] = !hidden && !hiddenOnSearch, _cx), !!(hasVariations && showVariations) && styles$1.hasVariations),
18085
- "data-unified": unified,
18086
- "aria-label": emojiNames[0],
18087
- "data-full-name": emojiNames
18088
- }, children);
18089
- }
18090
- var styles$1 = /*#__PURE__*/stylesheet.create({
18091
- emoji: {
18092
- '.': ClassNames.emoji,
18093
- position: 'relative',
18094
- width: 'var(--epr-emoji-fullsize)',
18095
- height: 'var(--epr-emoji-fullsize)',
18096
- boxSizing: 'border-box',
18097
- display: 'flex',
18098
- alignItems: 'center',
18099
- justifyContent: 'center',
18100
- maxWidth: 'var(--epr-emoji-fullsize)',
18101
- maxHeight: 'var(--epr-emoji-fullsize)',
18102
- borderRadius: '8px',
18103
- overflow: 'hidden',
18104
- transition: 'background-color 0.2s',
18105
- ':hover': {
18106
- backgroundColor: 'var(--epr-emoji-hover-color)'
18107
- },
18108
- ':focus': {
18109
- backgroundColor: 'var(--epr-focus-bg-color)'
18110
- }
18111
- },
18112
- hasVariations: {
18113
- '.': ClassNames.emojiHasVariations,
18114
- ':after': {
18115
- content: '',
18116
- display: 'block',
18117
- width: '0',
18118
- height: '0',
18119
- right: '0px',
18120
- bottom: '1px',
18121
- position: 'absolute',
18122
- borderLeft: '4px solid transparent',
18123
- borderRight: '4px solid transparent',
18124
- transform: 'rotate(135deg)',
18125
- borderBottom: '4px solid var(--epr-emoji-variation-indicator-color)',
18126
- zIndex: 'var(--epr-emoji-variations-indictator-z-index)'
18127
- },
18128
- ':hover:after': {
18129
- borderBottom: '4px solid var(--epr-emoji-variation-indicator-color-hover)'
18130
- }
18131
- }
18132
- });
18133
-
18134
- var emojiStyles = /*#__PURE__*/stylesheet.create({
18135
- external: {
18136
- '.': ClassNames.external,
18137
- fontSize: '0'
18138
- },
18139
- common: {
18140
- alignSelf: 'center',
18141
- justifySelf: 'center',
18142
- display: 'block'
18143
- }
18144
- });
18145
-
18146
- function EmojiImg(_ref) {
18147
- var emojiName = _ref.emojiName,
18148
- style = _ref.style,
18149
- _ref$lazyLoad = _ref.lazyLoad,
18150
- lazyLoad = _ref$lazyLoad === void 0 ? false : _ref$lazyLoad,
18151
- imgUrl = _ref.imgUrl,
18152
- onError = _ref.onError,
18153
- className = _ref.className;
18154
- return React.createElement("img", {
18155
- src: imgUrl,
18156
- alt: emojiName,
18157
- className: flairup.cx(styles$2.emojiImag, emojiStyles.external, emojiStyles.common, className),
18158
- loading: lazyLoad ? 'lazy' : 'eager',
18159
- onError: onError,
18160
- style: style
18161
- });
18162
- }
18163
- var styles$2 = /*#__PURE__*/stylesheet.create({
18164
- emojiImag: {
18165
- '.': 'epr-emoji-img',
18166
- maxWidth: 'var(--epr-emoji-fullsize)',
18167
- maxHeight: 'var(--epr-emoji-fullsize)',
18168
- minWidth: 'var(--epr-emoji-fullsize)',
18169
- minHeight: 'var(--epr-emoji-fullsize)',
18170
- padding: 'var(--epr-emoji-padding)'
18171
- }
18172
- });
18173
-
18174
- function NativeEmoji(_ref) {
18175
- var unified = _ref.unified,
18176
- style = _ref.style,
18177
- className = _ref.className;
18178
- return React.createElement("span", {
18179
- className: flairup.cx(styles$3.nativeEmoji, emojiStyles.common, emojiStyles.external, className),
18180
- "data-unified": unified,
18181
- style: style
18182
- }, parseNativeEmoji(unified));
18183
- }
18184
- var styles$3 = /*#__PURE__*/stylesheet.create({
18185
- nativeEmoji: {
18186
- '.': 'epr-emoji-native',
18187
- fontFamily: '"Segoe UI Emoji", "Segoe UI Symbol", "Segoe UI", "Apple Color Emoji", "Twemoji Mozilla", "Noto Color Emoji", "EmojiOne Color", "Android Emoji"!important',
18188
- position: 'relative',
18189
- lineHeight: '100%',
18190
- fontSize: 'var(--epr-emoji-size)',
18191
- textAlign: 'center',
18192
- alignSelf: 'center',
18193
- justifySelf: 'center',
18194
- letterSpacing: '0',
18195
- padding: 'var(--epr-emoji-padding)'
18369
+ var filtered = {};
18370
+ for (var unified in emojis) {
18371
+ var emoji = emojis[unified];
18372
+ if (hasMatch(emoji, keyword)) {
18373
+ filtered[unified] = emoji;
18374
+ }
18196
18375
  }
18197
- });
18198
-
18199
- function ViewOnlyEmoji(_ref) {
18200
- var emoji = _ref.emoji,
18201
- unified = _ref.unified,
18202
- emojiStyle = _ref.emojiStyle,
18203
- size = _ref.size,
18204
- lazyLoad = _ref.lazyLoad,
18205
- _ref$getEmojiUrl = _ref.getEmojiUrl,
18206
- getEmojiUrl = _ref$getEmojiUrl === void 0 ? emojiUrlByUnified : _ref$getEmojiUrl,
18207
- className = _ref.className;
18208
- var _useEmojisThatFailedT = useEmojisThatFailedToLoadState(),
18209
- setEmojisThatFailedToLoad = _useEmojisThatFailedT[1];
18210
- var style = {};
18211
- if (size) {
18212
- style.width = style.height = style.fontSize = size + "px";
18376
+ return filtered;
18377
+ }
18378
+ function hasMatch(emoji, keyword) {
18379
+ return emojiNames(emoji).some(function (name) {
18380
+ return name.includes(keyword);
18381
+ });
18382
+ }
18383
+ function useIsEmojiFiltered() {
18384
+ var _useFilterRef = useFilterRef(),
18385
+ filter = _useFilterRef.current;
18386
+ var _useSearchTermState3 = useSearchTermState(),
18387
+ searchTerm = _useSearchTermState3[0];
18388
+ return function (unified) {
18389
+ return isEmojiFilteredBySearchTerm(unified, filter, searchTerm);
18390
+ };
18391
+ }
18392
+ function isEmojiFilteredBySearchTerm(unified, filter, searchTerm) {
18393
+ var _filter$searchTerm;
18394
+ if (!filter || !searchTerm) {
18395
+ return false;
18213
18396
  }
18214
- var emojiToRender = emoji ? emoji : emojiByUnified(unified);
18215
- if (!emojiToRender) {
18397
+ return !((_filter$searchTerm = filter[searchTerm]) != null && _filter$searchTerm[unified]);
18398
+ }
18399
+ function findLongestMatch(keyword, dict) {
18400
+ if (!dict) {
18216
18401
  return null;
18217
18402
  }
18218
- if (isCustomEmoji(emojiToRender)) {
18219
- return React.createElement(EmojiImg, {
18220
- style: style,
18221
- emojiName: unified,
18222
- emojiStyle: exports.EmojiStyle.NATIVE,
18223
- lazyLoad: lazyLoad,
18224
- imgUrl: emojiToRender.imgUrl,
18225
- onError: onError,
18226
- className: className
18227
- });
18403
+ if (dict[keyword]) {
18404
+ return dict[keyword];
18228
18405
  }
18229
- return React.createElement(React.Fragment, null, emojiStyle === exports.EmojiStyle.NATIVE ? React.createElement(NativeEmoji, {
18230
- unified: unified,
18231
- style: style,
18232
- className: className
18233
- }) : React.createElement(EmojiImg, {
18234
- style: style,
18235
- emojiName: emojiName(emojiToRender),
18236
- emojiStyle: emojiStyle,
18237
- lazyLoad: lazyLoad,
18238
- imgUrl: getEmojiUrl(unified, emojiStyle),
18239
- onError: onError,
18240
- className: className
18241
- }));
18242
- function onError() {
18243
- setEmojisThatFailedToLoad(function (prev) {
18244
- return new Set(prev).add(unified);
18245
- });
18406
+ var longestMatchingKey = Object.keys(dict).sort(function (a, b) {
18407
+ return b.length - a.length;
18408
+ }).find(function (key) {
18409
+ return keyword.includes(key);
18410
+ });
18411
+ if (longestMatchingKey) {
18412
+ return dict[longestMatchingKey];
18413
+ }
18414
+ return null;
18415
+ }
18416
+ function getNormalizedSearchTerm(str) {
18417
+ if (!str || typeof str !== 'string') {
18418
+ return '';
18246
18419
  }
18420
+ return str.trim().toLowerCase();
18421
+ }
18422
+ function getStatusSearchResults(filterState, searchTerm) {
18423
+ var _Object$entries;
18424
+ if (!(filterState != null && filterState[searchTerm])) return '';
18425
+ var searchResultsCount = ((_Object$entries = Object.entries(filterState == null ? void 0 : filterState[searchTerm])) == null ? void 0 : _Object$entries.length) || 0;
18426
+ // eslint-disable-next-line react-hooks/rules-of-hooks
18427
+ return useSearchResultsConfig(searchResultsCount);
18247
18428
  }
18248
18429
 
18249
- function ClickableEmoji(_ref) {
18250
- var emoji = _ref.emoji,
18251
- unified = _ref.unified,
18252
- hidden = _ref.hidden,
18253
- hiddenOnSearch = _ref.hiddenOnSearch,
18254
- emojiStyle = _ref.emojiStyle,
18255
- _ref$showVariations = _ref.showVariations,
18256
- showVariations = _ref$showVariations === void 0 ? true : _ref$showVariations,
18257
- size = _ref.size,
18258
- lazyLoad = _ref.lazyLoad,
18259
- getEmojiUrl = _ref.getEmojiUrl;
18260
- var hasVariations = emojiHasVariations(emoji);
18261
- return React.createElement(ClickableEmojiButton, {
18262
- hasVariations: hasVariations,
18263
- showVariations: showVariations,
18264
- hidden: hidden,
18265
- hiddenOnSearch: hiddenOnSearch,
18266
- emojiNames: emojiNames(emoji),
18267
- unified: unified
18268
- }, React.createElement(ViewOnlyEmoji, {
18269
- unified: unified,
18270
- emoji: emoji,
18271
- size: size,
18272
- emojiStyle: emojiStyle,
18273
- lazyLoad: lazyLoad,
18274
- getEmojiUrl: getEmojiUrl
18275
- }));
18430
+ function useIsEmojiHidden() {
18431
+ var _useEmojisThatFailedT = useEmojisThatFailedToLoadState(),
18432
+ emojisThatFailedToLoad = _useEmojisThatFailedT[0];
18433
+ var isEmojiFiltered = useIsEmojiFiltered();
18434
+ return function (emoji) {
18435
+ var unified = emojiUnified(emoji);
18436
+ var failedToLoad = emojisThatFailedToLoad.has(unified);
18437
+ var filteredOut = isEmojiFiltered(unified);
18438
+ return {
18439
+ failedToLoad: failedToLoad,
18440
+ filteredOut: filteredOut,
18441
+ hidden: failedToLoad || filteredOut
18442
+ };
18443
+ };
18276
18444
  }
18277
18445
 
18278
18446
  function EmojiCategory(_ref) {
@@ -18283,16 +18451,16 @@ function EmojiCategory(_ref) {
18283
18451
  var category = categoryFromCategoryConfig(categoryConfig);
18284
18452
  var categoryName = categoryNameFromCategoryConfig(categoryConfig);
18285
18453
  return React.createElement("li", {
18286
- className: flairup.cx(styles$4.category, hidden && commonStyles.hidden, hiddenOnSearch && commonInteractionStyles.hiddenOnSearch),
18454
+ className: flairup.cx(styles$6.category, hidden && commonStyles.hidden, hiddenOnSearch && commonInteractionStyles.hiddenOnSearch),
18287
18455
  "data-name": category,
18288
18456
  "aria-label": categoryName
18289
18457
  }, React.createElement("h2", {
18290
- className: flairup.cx(styles$4.label)
18458
+ className: flairup.cx(styles$6.label)
18291
18459
  }, categoryName), React.createElement("div", {
18292
- className: flairup.cx(styles$4.categoryContent)
18460
+ className: flairup.cx(styles$6.categoryContent)
18293
18461
  }, children));
18294
18462
  }
18295
- var styles$4 = /*#__PURE__*/stylesheet.create({
18463
+ var styles$6 = /*#__PURE__*/stylesheet.create({
18296
18464
  category: {
18297
18465
  '.': ClassNames.category,
18298
18466
  ':not(:has(.epr-visible))': {
@@ -18370,7 +18538,7 @@ function EmojiList() {
18370
18538
  var categories = useCategoriesConfig();
18371
18539
  var renderdCategoriesCountRef = React.useRef(0);
18372
18540
  return React.createElement("ul", {
18373
- className: flairup.cx(styles$5.emojiList)
18541
+ className: flairup.cx(styles$7.emojiList)
18374
18542
  }, categories.map(function (categoryConfig) {
18375
18543
  var category = categoryFromCategoryConfig(categoryConfig);
18376
18544
  if (category === exports.Categories.SUGGESTED) {
@@ -18439,7 +18607,7 @@ function RenderCategory(_ref) {
18439
18607
  hidden: hiddenCounter === emojis.length
18440
18608
  }, emojis);
18441
18609
  }
18442
- var styles$5 = /*#__PURE__*/stylesheet.create({
18610
+ var styles$7 = /*#__PURE__*/stylesheet.create({
18443
18611
  emojiList: {
18444
18612
  '.': ClassNames.emojiList,
18445
18613
  listStyle: 'none',
@@ -18578,7 +18746,7 @@ function EmojiVariationPicker() {
18578
18746
  }
18579
18747
  return React.createElement("div", {
18580
18748
  ref: VariationPickerRef,
18581
- className: flairup.cx(styles$6.variationPicker, getMenuDirection() === Direction.Down && styles$6.pointingUp, visible && styles$6.visible),
18749
+ className: flairup.cx(styles$8.variationPicker, getMenuDirection() === Direction.Down && styles$8.pointingUp, visible && styles$8.visible),
18582
18750
  style: {
18583
18751
  top: top
18584
18752
  }
@@ -18592,7 +18760,7 @@ function EmojiVariationPicker() {
18592
18760
  getEmojiUrl: getEmojiUrl
18593
18761
  });
18594
18762
  }) : null, React.createElement("div", {
18595
- className: flairup.cx(styles$6.pointer),
18763
+ className: flairup.cx(styles$8.pointer),
18596
18764
  style: pointerStyle
18597
18765
  }));
18598
18766
  }
@@ -18648,7 +18816,7 @@ function useVariationPickerTop(VariationPickerRef) {
18648
18816
  return emojiOffsetTop - height;
18649
18817
  }
18650
18818
  }
18651
- var styles$6 = /*#__PURE__*/stylesheet.create({
18819
+ var styles$8 = /*#__PURE__*/stylesheet.create({
18652
18820
  variationPicker: {
18653
18821
  '.': ClassNames.variationPicker,
18654
18822
  position: 'absolute',
@@ -18671,6 +18839,12 @@ var styles$6 = /*#__PURE__*/stylesheet.create({
18671
18839
  transform: 'scale(0.9)',
18672
18840
  transition: 'transform 0.1s ease-out, opacity 0.2s ease-out'
18673
18841
  },
18842
+ visible: {
18843
+ opacity: '1',
18844
+ visibility: 'visible',
18845
+ pointerEvents: 'all',
18846
+ transform: 'scale(1)'
18847
+ },
18674
18848
  pointingUp: {
18675
18849
  '.': 'pointing-up',
18676
18850
  transformOrigin: 'center 0%',
@@ -18682,12 +18856,6 @@ var styles$6 = /*#__PURE__*/stylesheet.create({
18682
18856
  transform: 'rotate(180deg) translateY(100%) translateX(18px)'
18683
18857
  }
18684
18858
  },
18685
- visible: {
18686
- opacity: '1',
18687
- visibility: 'visible',
18688
- pointerEvents: 'all',
18689
- transform: 'scale(1)'
18690
- },
18691
18859
  pointer: {
18692
18860
  '.': 'epr-emoji-pointer',
18693
18861
  content: '',
@@ -18708,7 +18876,6 @@ var styles$6 = /*#__PURE__*/stylesheet.create({
18708
18876
  },
18709
18877
  '.epr-auto-theme': {
18710
18878
  pointer: {
18711
- // @ts-ignore
18712
18879
  '@media (prefers-color-scheme: dark)': {
18713
18880
  backgroundPosition: '-25px 0'
18714
18881
  }
@@ -18722,11 +18889,11 @@ function Body() {
18722
18889
  useMouseDownHandlers(BodyRef);
18723
18890
  useOnMouseMove();
18724
18891
  return React.createElement("div", {
18725
- className: flairup.cx(styles$7.body),
18892
+ className: flairup.cx(styles$9.body, commonInteractionStyles.hiddenOnReactions),
18726
18893
  ref: BodyRef
18727
18894
  }, React.createElement(EmojiVariationPicker, null), React.createElement(EmojiList, null));
18728
18895
  }
18729
- var styles$7 = /*#__PURE__*/stylesheet.create({
18896
+ var styles$9 = /*#__PURE__*/stylesheet.create({
18730
18897
  body: {
18731
18898
  '.': ClassNames.scrollBody,
18732
18899
  flex: '1',
@@ -18826,10 +18993,10 @@ function Flex(_ref) {
18826
18993
  direction = _ref$direction === void 0 ? FlexDirection.ROW : _ref$direction;
18827
18994
  return React.createElement("div", {
18828
18995
  style: _extends({}, style),
18829
- className: flairup.cx(styles$8.flex, className, styles$8[direction])
18996
+ className: flairup.cx(styles$a.flex, className, styles$a[direction])
18830
18997
  }, children);
18831
18998
  }
18832
- var styles$8 = /*#__PURE__*/stylesheet.create((_stylesheet$create = {
18999
+ var styles$a = /*#__PURE__*/stylesheet.create((_stylesheet$create = {
18833
19000
  flex: {
18834
19001
  display: 'flex'
18835
19002
  }
@@ -18875,6 +19042,62 @@ function Relative(_ref) {
18875
19042
  }, children);
18876
19043
  }
18877
19044
 
19045
+ // eslint-disable-next-line complexity
19046
+ function BtnSkinToneVariation(_ref) {
19047
+ var isOpen = _ref.isOpen,
19048
+ onClick = _ref.onClick,
19049
+ isActive = _ref.isActive,
19050
+ skinToneVariation = _ref.skinToneVariation,
19051
+ style = _ref.style;
19052
+ return React.createElement(Button, {
19053
+ style: style,
19054
+ onClick: onClick,
19055
+ className: flairup.cx("epr-tone-" + skinToneVariation, styles$b.tone, !isOpen && styles$b.closedTone, isActive && styles$b.active),
19056
+ tabIndex: isOpen ? 0 : -1,
19057
+ "aria-pressed": isActive,
19058
+ "aria-label": "Skin tone " + skinTonesNamed[skinToneVariation]
19059
+ });
19060
+ }
19061
+ var styles$b = /*#__PURE__*/stylesheet.create({
19062
+ closedTone: {
19063
+ opacity: '0',
19064
+ zIndex: '0'
19065
+ },
19066
+ active: {
19067
+ '.': 'epr-active',
19068
+ zIndex: '1',
19069
+ opacity: '1'
19070
+ },
19071
+ tone: {
19072
+ '.': 'epr-tone',
19073
+ ':hover': {
19074
+ boxShadow: '0 0 0 3px var(--epr-active-skin-hover-color)'
19075
+ },
19076
+ ':focus': {
19077
+ boxShadow: '0 0 0 3px var(--epr-focus-bg-color)'
19078
+ },
19079
+ // @ts-ignore
19080
+ '&.epr-tone-neutral': {
19081
+ backgroundColor: '#ffd225'
19082
+ },
19083
+ '&.epr-tone-1f3fb': {
19084
+ backgroundColor: '#ffdfbd'
19085
+ },
19086
+ '&.epr-tone-1f3fc': {
19087
+ backgroundColor: '#e9c197'
19088
+ },
19089
+ '&.epr-tone-1f3fd': {
19090
+ backgroundColor: '#c88e62'
19091
+ },
19092
+ '&.epr-tone-1f3fe': {
19093
+ backgroundColor: '#a86637'
19094
+ },
19095
+ '&.epr-tone-1f3ff': {
19096
+ backgroundColor: '#60463a'
19097
+ }
19098
+ }
19099
+ });
19100
+
18878
19101
  /* eslint-disable complexity */
18879
19102
  var ITEM_SIZE = 28;
18880
19103
  function SkinTonePickerMenu() {
@@ -18911,7 +19134,7 @@ function SkinTonePicker(_ref) {
18911
19134
  var expandedSize = isOpen ? fullWidth : ITEM_SIZE + 'px';
18912
19135
  var vertical = direction === SkinTonePickerDirection.VERTICAL;
18913
19136
  return React.createElement(Relative, {
18914
- className: flairup.cx(styles$9.skinTones, vertical && styles$9.vertical, isOpen && styles$9.open),
19137
+ className: flairup.cx(styles$c.skinTones, vertical && styles$c.vertical, isOpen && styles$c.open, vertical && isOpen && styles$c.verticalShadow),
18915
19138
  style: vertical ? {
18916
19139
  flexBasis: expandedSize,
18917
19140
  height: expandedSize
@@ -18919,14 +19142,18 @@ function SkinTonePicker(_ref) {
18919
19142
  flexBasis: expandedSize
18920
19143
  }
18921
19144
  }, React.createElement("div", {
18922
- className: flairup.cx(styles$9.select),
19145
+ className: flairup.cx(styles$c.select),
18923
19146
  ref: SkinTonePickerRef
18924
19147
  }, skinToneVariations.map(function (skinToneVariation, i) {
18925
19148
  var active = skinToneVariation === activeSkinTone;
18926
- return React.createElement(Button, {
19149
+ return React.createElement(BtnSkinToneVariation, {
19150
+ key: skinToneVariation,
19151
+ skinToneVariation: skinToneVariation,
19152
+ isOpen: isOpen,
18927
19153
  style: {
18928
19154
  transform: flairup.cx(vertical ? "translateY(-" + i * (isOpen ? ITEM_SIZE : 0) + "px)" : "translateX(-" + i * (isOpen ? ITEM_SIZE : 0) + "px)", isOpen && active && 'scale(1.3)')
18929
19155
  },
19156
+ isActive: active,
18930
19157
  onClick: function onClick() {
18931
19158
  if (isOpen) {
18932
19159
  setActiveSkinTone(skinToneVariation);
@@ -18935,12 +19162,7 @@ function SkinTonePicker(_ref) {
18935
19162
  setIsOpen(true);
18936
19163
  }
18937
19164
  closeAllOpenToggles();
18938
- },
18939
- key: skinToneVariation,
18940
- className: flairup.cx("epr-tone-" + skinToneVariation, styles$9.tone, !isOpen && styles$9.closedTone, active && styles$9.active),
18941
- tabIndex: isOpen ? 0 : -1,
18942
- "aria-pressed": active,
18943
- "aria-label": "Skin tone " + skinTonesNamed[skinToneVariation]
19165
+ }
18944
19166
  });
18945
19167
  })));
18946
19168
  }
@@ -18949,7 +19171,7 @@ var SkinTonePickerDirection;
18949
19171
  SkinTonePickerDirection["VERTICAL"] = "epr-vertical";
18950
19172
  SkinTonePickerDirection["HORIZONTAL"] = "epr-horizontal";
18951
19173
  })(SkinTonePickerDirection || (SkinTonePickerDirection = {}));
18952
- var styles$9 = /*#__PURE__*/stylesheet.create({
19174
+ var styles$c = /*#__PURE__*/stylesheet.create({
18953
19175
  skinTones: {
18954
19176
  '.': 'epr-skin-tones',
18955
19177
  '--': {
@@ -18962,12 +19184,15 @@ var styles$9 = /*#__PURE__*/stylesheet.create({
18962
19184
  padding: '10px 0'
18963
19185
  },
18964
19186
  vertical: {
18965
- padding: '5px',
19187
+ padding: '9px',
18966
19188
  alignItems: 'flex-end',
18967
19189
  flexDirection: 'column',
18968
19190
  borderRadius: '6px',
18969
19191
  border: '1px solid var(--epr-bg-color)'
18970
19192
  },
19193
+ verticalShadow: {
19194
+ boxShadow: '0px 0 7px var(--epr-picker-border-color)'
19195
+ },
18971
19196
  open: {
18972
19197
  // @ts-ignore
18973
19198
  backdropFilter: 'blur(5px)',
@@ -18993,51 +19218,14 @@ var styles$9 = /*#__PURE__*/stylesheet.create({
18993
19218
  '> button': {
18994
19219
  width: 'var(--epr-skin-tone-size)',
18995
19220
  display: 'block',
18996
- cursor: 'pointer',
18997
- borderRadius: '4px',
18998
- height: 'var(--epr-skin-tone-size)',
18999
- position: 'absolute',
19000
- right: '0',
19001
- transition: 'transform 0.3s ease-in-out, opacity 0.35s ease-in-out',
19002
- zIndex: '0',
19003
- boxShadow: '0 0 0 0px var(--epr-active-skin-hover-color)'
19004
- }
19005
- },
19006
- closedTone: {
19007
- opacity: '0',
19008
- zIndex: '0'
19009
- },
19010
- active: {
19011
- '.': 'epr-active',
19012
- zIndex: '1',
19013
- opacity: '1'
19014
- },
19015
- tone: {
19016
- '.': 'epr-tone',
19017
- ':hover': {
19018
- boxShadow: '0 0 0 3px var(--epr-active-skin-hover-color)'
19019
- },
19020
- ':focus': {
19021
- boxShadow: '0 0 0 3px var(--epr-focus-bg-color)'
19022
- },
19023
- // @ts-ignore
19024
- '&.epr-tone-neutral': {
19025
- backgroundColor: '#ffd225'
19026
- },
19027
- '&.epr-tone-1f3fb': {
19028
- backgroundColor: '#ffdfbd'
19029
- },
19030
- '&.epr-tone-1f3fc': {
19031
- backgroundColor: '#e9c197'
19032
- },
19033
- '&.epr-tone-1f3fd': {
19034
- backgroundColor: '#c88e62'
19035
- },
19036
- '&.epr-tone-1f3fe': {
19037
- backgroundColor: '#a86637'
19038
- },
19039
- '&.epr-tone-1f3ff': {
19040
- backgroundColor: '#60463a'
19221
+ cursor: 'pointer',
19222
+ borderRadius: '4px',
19223
+ height: 'var(--epr-skin-tone-size)',
19224
+ position: 'absolute',
19225
+ right: '0',
19226
+ transition: 'transform 0.3s ease-in-out, opacity 0.35s ease-in-out',
19227
+ zIndex: '0',
19228
+ boxShadow: '0 0 0 0px var(--epr-active-skin-hover-color)'
19041
19229
  }
19042
19230
  }
19043
19231
  });
@@ -19049,7 +19237,7 @@ function Preview() {
19049
19237
  return null;
19050
19238
  }
19051
19239
  return React.createElement(Flex, {
19052
- className: flairup.cx(styles$a.preview)
19240
+ className: flairup.cx(styles$d.preview, commonInteractionStyles.hiddenOnReactions)
19053
19241
  }, React.createElement(PreviewBody, null), React.createElement(Space, null), isSkinToneInPreview ? React.createElement(SkinTonePickerMenu, null) : null);
19054
19242
  }
19055
19243
  function PreviewBody() {
@@ -19078,22 +19266,20 @@ function PreviewBody() {
19078
19266
  emojiStyle: emojiStyle,
19079
19267
  size: 45,
19080
19268
  getEmojiUrl: getEmojiUrl,
19081
- className: flairup.cx(styles$a.emoji)
19269
+ className: flairup.cx(styles$d.emoji)
19082
19270
  }) : defaultEmoji ? React.createElement(ViewOnlyEmoji, {
19083
19271
  unified: emojiUnified(defaultEmoji),
19084
19272
  emoji: defaultEmoji,
19085
19273
  emojiStyle: emojiStyle,
19086
19274
  size: 45,
19087
19275
  getEmojiUrl: getEmojiUrl,
19088
- className: flairup.cx(styles$a.emoji)
19089
- }) : null), show ? React.createElement("div", {
19090
- className: flairup.cx(styles$a.label)
19091
- }, emojiName(emoji)) : React.createElement("div", {
19092
- className: flairup.cx(styles$a.label)
19093
- }, defaultText));
19276
+ className: flairup.cx(styles$d.emoji)
19277
+ }) : null), React.createElement("div", {
19278
+ className: flairup.cx(styles$d.label)
19279
+ }, show ? emojiName(emoji) : defaultText));
19094
19280
  }
19095
19281
  }
19096
- var styles$a = /*#__PURE__*/stylesheet.create({
19282
+ var styles$d = /*#__PURE__*/stylesheet.create({
19097
19283
  preview: {
19098
19284
  alignItems: 'center',
19099
19285
  borderTop: '1px solid var(--epr-preview-border-color)',
@@ -19188,66 +19374,38 @@ function useShouldHideCustomEmojis() {
19188
19374
 
19189
19375
  var SVGNavigation = 'data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDI2LjMuMSwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPgo8c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IgoJIHdpZHRoPSIyMDBweCIgaGVpZ2h0PSI4MHB4IiB2aWV3Qm94PSIwIDAgMjAwIDgwIiBlbmFibGUtYmFja2dyb3VuZD0ibmV3IDAgMCAyMDAgODAiIHhtbDpzcGFjZT0icHJlc2VydmUiPgo8ZyBpZD0iTGF5ZXJfMTEiPgoJPGc+CgkJPHBhdGggZmlsbD0iIzMzNzFCNyIgc3Ryb2tlPSIjMzM3MUI3IiBzdHJva2Utd2lkdGg9IjAuMSIgc3Ryb2tlLW1pdGVybGltaXQ9IjEwIiBkPSJNMTIuOCwyOS41YzAuNiwwLDEuMS0wLjUsMS4xLTEuMQoJCQljMC0wLjYtMC41LTEuMi0xLjEtMS4yYy0wLjYsMC0xLjIsMC41LTEuMiwxLjJDMTEuNiwyOSwxMi4yLDI5LjUsMTIuOCwyOS41eiBNMTIuOCwyOGMwLjIsMCwwLjQsMC4yLDAuNCwwLjQKCQkJYzAsMC4yLTAuMiwwLjQtMC40LDAuNGMtMC4yLDAtMC40LTAuMi0wLjQtMC40QzEyLjQsMjguMSwxMi42LDI4LDEyLjgsMjh6Ii8+CgkJPHBhdGggZmlsbD0iIzMzNzFCNyIgc3Ryb2tlPSIjMzM3MUI3IiBzdHJva2Utd2lkdGg9IjAuMSIgc3Ryb2tlLW1pdGVybGltaXQ9IjEwIiBkPSJNMTAsMjNjLTMuOCwwLTcsMy4xLTcsN2MwLDMuOCwzLjEsNyw3LDcKCQkJczctMy4xLDctN0MxNywyNi4yLDEzLjgsMjMsMTAsMjN6IE0xMCwzNi4yYy0zLjQsMC02LjItMi44LTYuMi02LjJjMC0zLjQsMi44LTYuMiw2LjItNi4yczYuMiwyLjgsNi4yLDYuMgoJCQlDMTYuMiwzMy40LDEzLjQsMzYuMiwxMCwzNi4yeiIvPgoJCTxwYXRoIGZpbGw9IiMzMzcxQjciIHN0cm9rZT0iIzMzNzFCNyIgc3Ryb2tlLXdpZHRoPSIwLjEiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIgZD0iTTE0LjYsMzEuMmMtMC4xLTAuMS0wLjItMC4yLTAuMy0wLjJINS43CgkJCWMtMC4xLDAtMC4yLDAuMS0wLjMsMC4yYy0wLjEsMC4xLTAuMSwwLjIsMCwwLjRjMC43LDIsMi41LDMuMyw0LjYsMy4zczMuOS0xLjMsNC42LTMuM0MxNC43LDMxLjUsMTQuNywzMS4zLDE0LjYsMzEuMnogTTEwLDM0LjEKCQkJYy0xLjYsMC0zLTAuOS0zLjctMi4yaDcuM0MxMywzMy4yLDExLjYsMzQuMSwxMCwzNC4xeiIvPgoJCTxwYXRoIGZpbGw9IiMzMzcxQjciIHN0cm9rZT0iIzMzNzFCNyIgc3Ryb2tlLXdpZHRoPSIwLjEiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIgZD0iTTcuMiwyOS41YzAuNiwwLDEuMi0wLjUsMS4yLTEuMQoJCQljMC0wLjYtMC41LTEuMi0xLjItMS4yYy0wLjYsMC0xLjEsMC41LTEuMSwxLjJDNi4xLDI5LDYuNiwyOS41LDcuMiwyOS41eiBNNy4yLDI4YzAuMiwwLDAuNCwwLjIsMC40LDAuNGMwLDAuMi0wLjIsMC40LTAuNCwwLjQKCQkJYy0wLjIsMC0wLjQtMC4yLTAuNC0wLjRDNi44LDI4LjEsNywyOCw3LjIsMjh6Ii8+Cgk8L2c+Cgk8Zz4KCQk8Zz4KCQkJPHBhdGggZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMzM3MUI3IiBkPSJNNjQuMSwzMy40bDIuMywwYzAuMiwwLDAuNCwwLjIsMC40LDAuNHYyLjFjMCwwLjItMC4yLDAuNC0wLjQsMC40aC0yLjMKCQkJCWMtMC4yLDAtMC40LTAuMi0wLjQtMC40di0yLjFDNjMuNywzMy42LDYzLjgsMzMuNCw2NC4xLDMzLjR6Ii8+CgkJCTxwYXRoIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzMzNzFCNyIgZD0iTTczLjUsMzMuNWgyLjRjMC4yLDAsMC40LDAuMiwwLjQsMC40djJjMCwwLjItMC4yLDAuNC0wLjQsMC40aC0yLjQKCQkJCWMtMC4yLDAtMC40LTAuMi0wLjQtMC40bDAtMkM3My4xLDMzLjYsNzMuMywzMy41LDczLjUsMzMuNXoiLz4KCQkJPHBhdGggZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMzM3MUI3IiBkPSJNNjMuNywyOC40aDEyLjZ2NUg2My43VjI4LjR6Ii8+CgkJCTxwYXRoIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzMzNzFCNyIgZD0iTTY1LjUsMjMuNmg4LjljMSwwLDEuOSwwLjgsMS45LDEuOXYzLjFINjMuN3YtMy4xQzYzLjcsMjQuNSw2NC41LDIzLjYsNjUuNSwyMy42eiIvPgoJCQk8ZWxsaXBzZSBmaWxsPSIjMzM3MUI3IiBjeD0iNjYuMiIgY3k9IjMwLjkiIHJ4PSIwLjkiIHJ5PSIxIi8+CgkJCTxlbGxpcHNlIGZpbGw9IiMzMzcxQjciIGN4PSI3My44IiBjeT0iMzAuOSIgcng9IjAuOSIgcnk9IjEiLz4KCQk8L2c+Cgk8L2c+Cgk8Zz4KCQk8Zz4KCQkJPHBhdGggZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMzM3MUI3IiBkPSJNOTYuNCwzMGMwLDMuNi0yLjksNi41LTYuNCw2LjVzLTYuNC0yLjktNi40LTYuNXMyLjktNi41LDYuNC02LjVTOTYuNCwyNi40LDk2LjQsMzB6Ii8+CgkJCTxwYXRoIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzMzNzFCNyIgZD0iTTk2LjMsMjguNmMwLDAsMCwwLjEsMCwwLjFjLTAuOSwwLjEtMi45LDAuMS00LjYtMS4xYy0xLjEtMC44LTItMS43LTIuNi0yLjUKCQkJCWMtMC4zLTAuNC0wLjYtMC44LTAuNy0xYy0wLjEtMC4xLTAuMS0wLjEtMC4xLTAuMmMwLjUtMC4xLDEuMi0wLjIsMi0wLjFjMS4yLDAsMi41LDAuMywzLjUsMS4xYzEsMC44LDEuNywxLjgsMi4xLDIuOAoJCQkJQzk2LjEsMjcuOSw5Ni4yLDI4LjMsOTYuMywyOC42eiIvPgoJCQk8cGF0aCBmaWxsPSJub25lIiBzdHJva2U9IiMzMzcxQjciIGQ9Ik04NCwzMi4yYzAsMCwwLTAuMSwwLTAuMWMwLjktMC4yLDIuOS0wLjQsNC43LDAuNmMxLjEsMC43LDEuOSwxLjUsMi40LDIuMwoJCQkJYzAuNCwwLjUsMC42LDEsMC43LDEuM2MtMC40LDAuMS0xLDAuMi0xLjcsMC4zYy0xLDAtMi4xLTAuMS0zLjItMC44cy0xLjktMS42LTIuNC0yLjVDODQuMiwzMi44LDg0LjEsMzIuNSw4NCwzMi4yeiIvPgoJCTwvZz4KCTwvZz4KCTxnPgoJCTxnPgoJCQk8cGF0aCBmaWxsPSJub25lIiBzdHJva2U9IiMzMzcxQjciIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgZD0iTTExNi4zLDI2LjhsLTEuNCwybC0wLjgtMC44bC0wLjYtMC42bDAsMC45bC0wLjEsOC4yaC02LjgKCQkJCWwtMC4xLTguMmwwLTAuOWwtMC42LDAuNmwtMC44LDAuOGwtMS40LTJsMi42LTIuOWMwLjEtMC4xLDAuMi0wLjEsMC4zLTAuMWgxLjNsMC40LDAuN2MwLjcsMS4zLDIuNiwxLjMsMy4zLTAuMWwwLjMtMC42aDEuMgoJCQkJYzAuMSwwLDAuMiwwLDAuMywwLjFsMC4zLTAuM2wtMC4zLDAuM0wxMTYuMywyNi44eiIvPgoJCQk8cGF0aCBmaWxsPSJub25lIiBzdHJva2U9IiMzMzcxQjciIGQ9Ik0xMTAuMSwyNy43aDJ2MC45YzAsMC40LTAuNCwwLjctMSwwLjdjLTAuNiwwLTEtMC4zLTEtMC43TDExMC4xLDI3LjdMMTEwLjEsMjcuN3oiLz4KCQk8L2c+Cgk8L2c+Cgk8Zz4KCQk8Zz4KCQkJPHBhdGggZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMzM3MUI3IiBkPSJNMTI2LjgsMzQuM2MwLDEuMi0xLDIuMi0yLjIsMi4ycy0yLjItMS0yLjItMi4yczEtMi4yLDIuMi0yLjJTMTI2LjgsMzMuMSwxMjYuOCwzNC4zeiIvPgoJCQk8cGF0aCBmaWxsPSJub25lIiBzdHJva2U9IiMzMzcxQjciIGQ9Ik0xMzcuNiwzNC4zYzAsMS4yLTEsMi4yLTIuMiwyLjJjLTEuMiwwLTIuMi0xLTIuMi0yLjJzMS0yLjIsMi4yLTIuMgoJCQkJQzEzNi42LDMyLjEsMTM3LjYsMzMuMSwxMzcuNiwzNC4zeiIvPgoJCQk8cGF0aCBmaWxsPSJub25lIiBzdHJva2U9IiMzMzcxQjciIGQ9Ik0xMjYuOCwyNC40djkuOSIvPgoJCQk8cGF0aCBmaWxsPSJub25lIiBzdHJva2U9IiMzMzcxQjciIGQ9Ik0xMzcuNywyNC40djkuOSIvPgoJCQk8cGF0aCBmaWxsPSJub25lIiBzdHJva2U9IiMzMzcxQjciIGQ9Ik0xMjYuOCwyMy41aDEwLjh2Mi43aC0xMC44QzEyNi44LDI2LjIsMTI2LjgsMjMuNSwxMjYuOCwyMy41eiIvPgoJCTwvZz4KCTwvZz4KCTxnPgoJCTxnPgoJCQk8cGF0aCBmaWxsPSIjMzM3MUI3IiBkPSJNMTcwLjgsMjMuMUwxNzAuOCwyMy4xYy0wLjMsMC0wLjUsMC0wLjgsMGMtMi4xLDAtNCwxLTUuMywyLjVsLTAuMSwwbC0wLjEtMC4xbC0xLTEuMmwtMC4zLDMuNGwzLjQsMC4zCgkJCQlsLTEuMS0xLjNsLTAuMS0wLjFsMC4xLTAuMWMxLjEtMS41LDMtMi4zLDUtMi4xbDAsMGMzLjIsMC4zLDUuNSwzLjEsNS4yLDYuM2MtMC4zLDMtMy4xLDUuMy02LjEsNS4xYy0zLjEtMC4yLTUuNC0yLjktNS4zLTYKCQkJCWwtMS4zLTAuMWMtMC4yLDMuOCwyLjYsNy4xLDYuMyw3LjRjMy45LDAuMyw3LjMtMi42LDcuNi02LjVDMTc3LjIsMjYuOCwxNzQuNCwyMy41LDE3MC44LDIzLjF6Ii8+CgkJCTxwYXRoIGZpbGw9IiMzMzcxQjciIGQ9Ik0xNzAuMywyNy40YzAtMC4zLTAuMy0wLjYtMC42LTAuNnMtMC42LDAuMy0wLjYsMC42djMuMmMwLDAuMiwwLjEsMC4zLDAuMiwwLjRjMC4xLDAuMSwwLjMsMC4yLDAuNCwwLjIKCQkJCWgyLjRjMC40LDAsMC42LTAuMywwLjYtMC42YzAtMC40LTAuMy0wLjYtMC42LTAuNmgtMS42aC0wLjJ2LTAuMkwxNzAuMywyNy40TDE3MC4zLDI3LjR6Ii8+CgkJPC9nPgoJPC9nPgoJPGc+CgkJPGc+CgkJCTxwYXRoIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzMzNzFCNyIgZD0iTTE4Ni4yLDIzLjRoNy43YzEuNSwwLDIuNywxLjIsMi43LDIuN3Y3LjdjMCwxLjUtMS4yLDIuNy0yLjcsMi43aC03LjcKCQkJCWMtMS41LDAtMi43LTEuMi0yLjctMi43di03LjdDMTgzLjQsMjQuNiwxODQuNywyMy40LDE4Ni4yLDIzLjR6Ii8+CgkJCTxlbGxpcHNlIGZpbGw9IiMzMzcxQjciIGN4PSIxODYiIGN5PSIyOC45IiByeD0iMC43IiByeT0iMC43Ii8+CgkJCTxlbGxpcHNlIGZpbGw9IiMzMzcxQjciIGN4PSIxOTQiIGN5PSIyNi43IiByeD0iMC43IiByeT0iMC43Ii8+CgkJCTxwYXRoIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzMzNzFCNyIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBkPSJNMTg2LDMzLjNsMC40LTAuM2MwLjQtMC4zLDEtMC4zLDEuNS0wLjFsMSwwLjQKCQkJCWMwLjUsMC4yLDEsMC4yLDEuNS0wLjFsMC44LTAuNWMwLjQtMC4zLDEtMC4zLDEuNS0wLjFsMS44LDAuOCIvPgoJCTwvZz4KCTwvZz4KCTxwYXRoIGZpbGw9IiMzMzcxQjciIHN0cm9rZT0iIzMzNzFCNyIgc3Ryb2tlLXdpZHRoPSIwLjI1IiBzdHJva2UtbWl0ZXJsaW1pdD0iMTAiIGQ9Ik0xNTYsMjQuM2MtMC4yLTAuMS0wLjQtMC4xLTAuNSwwCgkJYzAsMC0wLjIsMC4xLTAuOSwwLjJjLTAuNywwLTIuNC0wLjEtMy44LTAuNmMtMC44LTAuMy0xLjctMC41LTIuNS0wLjVjLTAuMiwwLTAuNCwwLTAuNSwwYy0xLjMsMC0yLjUsMC4zLTMuNiwxCgkJYy0wLjIsMC4xLTAuMiwwLjItMC4yLDAuNHYxMS42YzAsMC4zLDAuMSwwLjUsMC4zLDAuNWMwLjYsMCwwLjUtMC40LDAuNS0wLjZ2LTUuN2MwLjctMC4zLDMuMi0xLjEsNS44LTAuMQoJCWMxLjYsMC42LDMuNSwwLjcsNC4zLDAuN2MwLjgsMCwxLjMtMC4zLDEuMy0wLjNjMC4yLTAuMSwwLjMtMC4yLDAuMy0wLjR2LTUuN0MxNTYuMiwyNC42LDE1Ni4xLDI0LjQsMTU2LDI0LjN6IE0xNTUuNiwzMC4yCgkJYy0wLjEsMC0wLjcsMC4xLTEsMC4xYy0wLjcsMC0yLjQtMC4xLTMuOC0wLjZjLTIuNS0xLTUtMC41LTYuMi0wLjF2LTQuOWMwLjktMC41LDIuMi0wLjcsMy4yLTAuN2MwLjEsMCwwLjMsMCwwLjQsMAoJCWMwLjcsMCwxLjUsMC4yLDIuMiwwLjRjMS42LDAuNiwzLjUsMC43LDQuMywwLjdjMC4yLDAsMC44LDAsMS0wLjFWMzAuMnoiLz4KCTxnPgoJCTxwYXRoIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzMzNzFCNyIgZD0iTTQ4LjEsMjMuNWgzLjdjMi41LDAsNC41LDIsNC41LDQuNWMwLDAuNS0wLjQsMC45LTAuOSwwLjlINDQuNWMtMC41LDAtMC45LTAuNC0wLjktMC45CgkJCUM0My42LDI1LjUsNDUuNiwyMy41LDQ4LjEsMjMuNXoiLz4KCQk8cGF0aCBmaWxsPSJub25lIiBzdHJva2U9IiMzMzcxQjciIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgZD0iTTQzLjUsMjguOGMtMC4yLDAuMS0wLjUsMS4yLDAsMS41YzEuNCwxLDguNSwwLjgsMTEuMywwLjYKCQkJYzAuOC0wLjEsMS42LTAuNCwxLjctMS4yYzAtMC4zLTAuMS0wLjYtMC42LTAuOSIvPgoJCTxwYXRoIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzMzNzFCNyIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBkPSJNNDMuNSwzMC42TDQzLjMsMzFjLTAuMiwwLjUsMC4yLDEsMC43LDAuOWMwLjMtMC4xLDAuNSwwLDAuNywwLjMKCQkJbDAuMSwwLjJjMC4zLDAuNSwxLDAuNiwxLjUsMC4ybDAsMGMwLjMtMC4yLDAuNy0wLjMsMS0wLjJsMC44LDAuM2MwLjQsMC4yLDAuOCwwLjEsMS4yLDBsMC41LTAuMmMwLjQtMC4yLDAuOS0wLjIsMS4zLDBsMC41LDAuMgoJCQljMC40LDAuMiwwLjgsMC4yLDEuMiwwbDAuMi0wLjFjMC4zLTAuMiwwLjgtMC4yLDEuMSwwLjFsMC4yLDAuMmMwLjMsMC4zLDAuOCwwLjIsMS0wLjJsMC4xLTAuMmMwLjEtMC4yLDAtMC4zLDAuMi0wLjMKCQkJYzAuNSwwLDEuMi0wLjMsMS4xLTAuN2wtMC40LTEuMSIvPgoJCTxwYXRoIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzMzNzFCNyIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBkPSJNNDMuNSwzMi4yYy0wLjEsMC4yLTAuMywwLjgsMCwxLjFjMC4zLDAuNCwzLDEuMSw2LjQsMS4xCgkJCWMyLjIsMCw0LjYtMC4zLDYtMC42YzAuNS0wLjEsMC45LTAuNSwwLjgtMC45YzAtMC4yLTAuMi0wLjUtMC40LTAuNyIvPgoJCTxwYXRoIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzMzNzFCNyIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBkPSJNNDMuNSwzMy4zYzAsMC41LDAuNiwyLjMsMS4zLDIuN2MxLjgsMC44LDUuNywwLjcsOC4xLDAuNQoJCQljMS4zLTAuMSwyLjUtMC43LDMuMi0xLjhjMC4zLTAuNSwwLjUtMSwwLjUtMS40Ii8+CgkJPGVsbGlwc2UgZmlsbD0iIzMzNzFCNyIgY3g9IjUxLjYiIGN5PSIyNi41IiByeD0iMC4zIiByeT0iMC40Ii8+CgkJPGVsbGlwc2UgZmlsbD0iIzMzNzFCNyIgY3g9IjUzIiBjeT0iMjUiIHJ4PSIwLjMiIHJ5PSIwLjQiLz4KCQk8ZWxsaXBzZSBmaWxsPSIjMzM3MUI3IiBjeD0iNTMiIGN5PSIyNy4yIiByeD0iMC4zIiByeT0iMC40Ii8+CgkJPGVsbGlwc2UgZmlsbD0iIzMzNzFCNyIgY3g9IjU0LjMiIGN5PSIyNi41IiByeD0iMC4zIiByeT0iMC40Ii8+CgkJPGVsbGlwc2UgZmlsbD0iIzMzNzFCNyIgY3g9IjUwLjkiIGN5PSIyNSIgcng9IjAuMyIgcnk9IjAuNCIvPgoJPC9nPgoJPGc+CgkJPHBhdGggZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMzM3MUI3IiBkPSJNMjQuMiwzMXYtNy42YzAuMSwwLjEsMC44LDAuOSwyLjgsMy4xYzIuNS0xLjYsNS42LTAuNyw2LjksMGwyLjQtMy4xdjcuMQoJCQljMCwxLjItMC4xLDIuNS0wLjksMy40Yy0xLDEuMi0yLjcsMi41LTUuMywyLjVjLTIuOSwwLTQuNS0xLjUtNS4zLTIuOUMyNC4yLDMyLjksMjQuMiwzMiwyNC4yLDMxeiIvPgoJCTxwYXRoIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzMzNzFCNyIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBkPSJNMjEuMiwzMGw1LjQsMS4yIi8+CgkJPHBhdGggZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMzM3MUI3IiBzdHJva2UtbGluZWNhcD0icm91bmQiIGQ9Ik0yMS4yLDM0LjFsNS40LTEuMiIvPgoJCTxwYXRoIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzMzNzFCNyIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBkPSJNMzguOCwzMGwtNS40LDEuMiIvPgoJCTxwYXRoIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzMzNzFCNyIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBkPSJNMzguOCwzNC4xbC01LjQtMS4yIi8+CgkJPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGZpbGw9IiMzMzcxQjciIGQ9Ik0yOS41LDMyLjRMMjksMzEuN2MtMC4yLTAuMywwLTAuNiwwLjMtMC42aDEuNAoJCQljMC4zLDAsMC41LDAuNCwwLjMsMC42bC0wLjcsMWwwLDBjLTAuNywxLjItMi42LDEuMS0zLjEtMC4zbC0wLjEtMC4yYy0wLjEtMC4yLDAtMC40LDAuMi0wLjVzMC40LDAsMC41LDAuMmwwLjEsMC4yCgkJCUMyOC4zLDMyLjgsMjkuMSwzMi45LDI5LjUsMzIuNHoiLz4KCQk8cGF0aCBmaWxsPSJub25lIiBzdHJva2U9IiMzMzcxQjciIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgZD0iTTMyLjQsMzIuMWwtMC4xLDAuMmMtMC40LDEtMS44LDEuMS0yLjMsMC4yIi8+CgkJPGVsbGlwc2UgZmlsbD0iIzMzNzFCNyIgY3g9IjI3LjYiIGN5PSIyOS43IiByeD0iMC43IiByeT0iMC43Ii8+CgkJPGVsbGlwc2UgZmlsbD0iIzMzNzFCNyIgY3g9IjMyLjQiIGN5PSIyOS43IiByeD0iMC43IiByeT0iMC43Ii8+Cgk8L2c+Cgk8Zz4KCQk8cGF0aCBmaWxsPSIjQzBDMEJGIiBzdHJva2U9IiNDMEMwQkYiIHN0cm9rZS13aWR0aD0iMC4xIiBzdHJva2UtbWl0ZXJsaW1pdD0iMTAiIGQ9Ik0xMi44LDQ5LjVjMC42LDAsMS4xLTAuNSwxLjEtMS4xCgkJCWMwLTAuNi0wLjUtMS4yLTEuMS0xLjJjLTAuNiwwLTEuMiwwLjUtMS4yLDEuMkMxMS42LDQ5LDEyLjIsNDkuNSwxMi44LDQ5LjV6IE0xMi44LDQ4YzAuMiwwLDAuNCwwLjIsMC40LDAuNAoJCQljMCwwLjItMC4yLDAuNC0wLjQsMC40Yy0wLjIsMC0wLjQtMC4yLTAuNC0wLjRDMTIuNCw0OC4xLDEyLjYsNDgsMTIuOCw0OHoiLz4KCQk8cGF0aCBmaWxsPSIjQzBDMEJGIiBzdHJva2U9IiNDMEMwQkYiIHN0cm9rZS13aWR0aD0iMC4xIiBzdHJva2UtbWl0ZXJsaW1pdD0iMTAiIGQ9Ik0xNC42LDUxLjJjLTAuMS0wLjEtMC4yLTAuMi0wLjMtMC4ySDUuNwoJCQljLTAuMSwwLTAuMiwwLjEtMC4zLDAuMmMtMC4xLDAuMS0wLjEsMC4yLDAsMC40YzAuNywyLDIuNSwzLjMsNC42LDMuM3MzLjktMS4zLDQuNi0zLjNDMTQuNyw1MS41LDE0LjcsNTEuMywxNC42LDUxLjJ6IE0xMCw1NC4xCgkJCWMtMS42LDAtMy0wLjktMy43LTIuMmg3LjNDMTMsNTMuMiwxMS42LDU0LjEsMTAsNTQuMXoiLz4KCQk8cGF0aCBmaWxsPSIjQzBDMEJGIiBzdHJva2U9IiNDMEMwQkYiIHN0cm9rZS13aWR0aD0iMC4xIiBzdHJva2UtbWl0ZXJsaW1pdD0iMTAiIGQ9Ik03LjIsNDkuNWMwLjYsMCwxLjItMC41LDEuMi0xLjEKCQkJYzAtMC42LTAuNS0xLjItMS4yLTEuMmMtMC42LDAtMS4xLDAuNS0xLjEsMS4yQzYuMSw0OSw2LjYsNDkuNSw3LjIsNDkuNXogTTcuMiw0OGMwLjIsMCwwLjQsMC4yLDAuNCwwLjRjMCwwLjItMC4yLDAuNC0wLjQsMC40CgkJCWMtMC4yLDAtMC40LTAuMi0wLjQtMC40QzYuOCw0OC4xLDcsNDgsNy4yLDQ4eiIvPgoJCTxwYXRoIGZpbGw9IiNDMEMwQkYiIHN0cm9rZT0iI0MwQzBCRiIgc3Ryb2tlLXdpZHRoPSIwLjEiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIgZD0iTTEwLDQzYy0zLjgsMC03LDMuMS03LDdjMCwzLjgsMy4xLDcsNyw3CgkJCXM3LTMuMSw3LTdDMTcsNDYuMiwxMy44LDQzLDEwLDQzeiBNMTAsNTYuMmMtMy40LDAtNi4yLTIuOC02LjItNi4yYzAtMy40LDIuOC02LjIsNi4yLTYuMnM2LjIsMi44LDYuMiw2LjIKCQkJQzE2LjIsNTMuNCwxMy40LDU2LjIsMTAsNTYuMnoiLz4KCTwvZz4KCTxnPgoJCTxnPgoJCQk8cGF0aCBmaWxsPSJub25lIiBzdHJva2U9IiNDMEMwQkYiIGQ9Ik02NC4xLDUzLjRsMi4zLDBjMC4yLDAsMC40LDAuMiwwLjQsMC40djIuMWMwLDAuMi0wLjIsMC40LTAuNCwwLjRoLTIuMwoJCQkJYy0wLjIsMC0wLjQtMC4yLTAuNC0wLjR2LTIuMUM2My43LDUzLjYsNjMuOCw1My40LDY0LjEsNTMuNHoiLz4KCQkJPHBhdGggZmlsbD0ibm9uZSIgc3Ryb2tlPSIjQzBDMEJGIiBkPSJNNzMuNSw1My41aDIuNGMwLjIsMCwwLjQsMC4yLDAuNCwwLjR2MmMwLDAuMi0wLjIsMC40LTAuNCwwLjRoLTIuNAoJCQkJYy0wLjIsMC0wLjQtMC4yLTAuNC0wLjRsMC0yQzczLjEsNTMuNiw3My4zLDUzLjUsNzMuNSw1My41eiIvPgoJCQk8cGF0aCBmaWxsPSJub25lIiBzdHJva2U9IiNDMEMwQkYiIGQ9Ik02My43LDQ4LjRoMTIuNnY1SDYzLjdWNDguNHoiLz4KCQkJPHBhdGggZmlsbD0ibm9uZSIgc3Ryb2tlPSIjQzBDMEJGIiBkPSJNNjUuNSw0My42aDguOWMxLDAsMS45LDAuOCwxLjksMS45djMuMUg2My43di0zLjFDNjMuNyw0NC41LDY0LjUsNDMuNiw2NS41LDQzLjZ6Ii8+CgkJCTxlbGxpcHNlIGZpbGw9IiNDMEMwQkYiIGN4PSI2Ni4yIiBjeT0iNTAuOSIgcng9IjAuOSIgcnk9IjEiLz4KCQkJPGVsbGlwc2UgZmlsbD0iI0MwQzBCRiIgY3g9IjczLjgiIGN5PSI1MC45IiByeD0iMC45IiByeT0iMSIvPgoJCTwvZz4KCTwvZz4KCTxnPgoJCTxnPgoJCQk8cGF0aCBmaWxsPSJub25lIiBzdHJva2U9IiNDMEMwQkYiIGQ9Ik05Ni40LDUwYzAsMy42LTIuOSw2LjUtNi40LDYuNXMtNi40LTIuOS02LjQtNi41czIuOS02LjUsNi40LTYuNVM5Ni40LDQ2LjQsOTYuNCw1MHoiLz4KCQkJPHBhdGggZmlsbD0ibm9uZSIgc3Ryb2tlPSIjQzBDMEJGIiBkPSJNOTYuMyw0OC42YzAsMCwwLDAuMSwwLDAuMWMtMC45LDAuMS0yLjksMC4xLTQuNi0xLjJjLTEuMS0wLjgtMi0xLjctMi42LTIuNQoJCQkJYy0wLjMtMC40LTAuNi0wLjgtMC43LTFjLTAuMS0wLjEtMC4xLTAuMi0wLjEtMC4yYzAuNS0wLjEsMS4yLTAuMiwyLTAuMmMxLjIsMCwyLjUsMC4zLDMuNSwxLjFjMSwwLjgsMS43LDEuOCwyLjEsMi44CgkJCQlDOTYuMSw0Ny45LDk2LjIsNDguMyw5Ni4zLDQ4LjZ6Ii8+CgkJCTxwYXRoIGZpbGw9Im5vbmUiIHN0cm9rZT0iI0MwQzBCRiIgZD0iTTg0LDUyLjJjMCwwLDAtMC4xLDAtMC4xYzAuOS0wLjIsMi45LTAuNCw0LjcsMC42YzEuMSwwLjcsMS45LDEuNSwyLjQsMi4zCgkJCQljMC40LDAuNSwwLjYsMSwwLjcsMS4zYy0wLjQsMC4xLTEsMC4yLTEuNywwLjNjLTEsMC0yLjEtMC4xLTMuMi0wLjhzLTEuOS0xLjYtMi40LTIuNUM4NC4yLDUyLjgsODQuMSw1Mi41LDg0LDUyLjJ6Ii8+CgkJPC9nPgoJPC9nPgoJPGc+CgkJPGc+CgkJCTxwYXRoIGZpbGw9Im5vbmUiIHN0cm9rZT0iI0MwQzBCRiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBkPSJNMTE2LjMsNDYuOGwtMS40LDJsLTAuOC0wLjhsLTAuNi0wLjdsMCwwLjlsLTAuMSw4LjJoLTYuOAoJCQkJbC0wLjEtOC4ybDAtMC45bC0wLjYsMC43bC0wLjgsMC44bC0xLjQtMmwyLjYtMi45YzAuMS0wLjEsMC4yLTAuMSwwLjMtMC4xaDEuM2wwLjQsMC43YzAuNywxLjMsMi42LDEuMywzLjMtMC4xbDAuMy0wLjZoMS4yCgkJCQljMC4xLDAsMC4yLDAsMC4zLDAuMWwwLjMtMC4zbC0wLjMsMC4zTDExNi4zLDQ2Ljh6Ii8+CgkJCTxwYXRoIGZpbGw9Im5vbmUiIHN0cm9rZT0iI0MwQzBCRiIgZD0iTTExMC4xLDQ3LjdoMnYwLjljMCwwLjQtMC40LDAuNy0xLDAuN2MtMC42LDAtMS0wLjMtMS0wLjdMMTEwLjEsNDcuN0wxMTAuMSw0Ny43eiIvPgoJCTwvZz4KCTwvZz4KCTxnPgoJCTxnPgoJCQk8cGF0aCBmaWxsPSJub25lIiBzdHJva2U9IiNDMEMwQkYiIGQ9Ik0xMjYuOCw1NC4zYzAsMS4yLTEsMi4yLTIuMiwyLjJzLTIuMi0xLTIuMi0yLjJzMS0yLjIsMi4yLTIuMlMxMjYuOCw1My4xLDEyNi44LDU0LjN6Ii8+CgkJCTxwYXRoIGZpbGw9Im5vbmUiIHN0cm9rZT0iI0MwQzBCRiIgZD0iTTEzNy42LDU0LjNjMCwxLjItMSwyLjItMi4yLDIuMmMtMS4yLDAtMi4yLTEtMi4yLTIuMnMxLTIuMiwyLjItMi4yCgkJCQlDMTM2LjYsNTIuMSwxMzcuNiw1My4xLDEzNy42LDU0LjN6Ii8+CgkJCTxwYXRoIGZpbGw9Im5vbmUiIHN0cm9rZT0iI0MwQzBCRiIgZD0iTTEyNi44LDQ0LjR2OS45Ii8+CgkJCTxwYXRoIGZpbGw9Im5vbmUiIHN0cm9rZT0iI0MwQzBCRiIgZD0iTTEzNy43LDQ0LjR2OS45Ii8+CgkJCTxwYXRoIGZpbGw9Im5vbmUiIHN0cm9rZT0iI0MwQzBCRiIgZD0iTTEyNi44LDQzLjVoMTAuOHYyLjdoLTEwLjhDMTI2LjgsNDYuMiwxMjYuOCw0My41LDEyNi44LDQzLjV6Ii8+CgkJPC9nPgoJPC9nPgoJPGc+CgkJPGc+CgkJCTxwYXRoIGZpbGw9IiNDMEMwQkYiIGQ9Ik0xNzAuOCw0My4xTDE3MC44LDQzLjFjLTAuMywwLTAuNSwwLTAuOCwwYy0yLjEsMC00LDEtNS4zLDIuNWwtMC4xLDBsLTAuMS0wLjFsLTEtMS4ybC0wLjMsMy40bDMuNCwwLjMKCQkJCWwtMS4xLTEuM2wtMC4xLTAuMWwwLjEtMC4xYzEuMS0xLjUsMy0yLjMsNS0yLjFsMCwwYzMuMiwwLjMsNS41LDMuMSw1LjIsNi4zYy0wLjMsMy0zLjEsNS4zLTYuMSw1LjFjLTMuMS0wLjItNS40LTIuOS01LjMtNgoJCQkJbC0xLjMtMC4xYy0wLjIsMy44LDIuNiw3LjEsNi4zLDcuNGMzLjksMC4zLDcuMy0yLjYsNy42LTYuNUMxNzcuMiw0Ni44LDE3NC40LDQzLjUsMTcwLjgsNDMuMXoiLz4KCQkJPHBhdGggZmlsbD0iI0MwQzBCRiIgZD0iTTE3MC4zLDQ3LjRjMC0wLjMtMC4zLTAuNi0wLjYtMC42cy0wLjYsMC4zLTAuNiwwLjZ2My4yYzAsMC4yLDAuMSwwLjMsMC4yLDAuNGMwLjEsMC4xLDAuMywwLjIsMC40LDAuMgoJCQkJaDIuNGMwLjQsMCwwLjYtMC4zLDAuNi0wLjZjMC0wLjMtMC4zLTAuNi0wLjYtMC42aC0xLjZoLTAuMnYtMC4yTDE3MC4zLDQ3LjRMMTcwLjMsNDcuNHoiLz4KCQk8L2c+Cgk8L2c+Cgk8Zz4KCQk8Zz4KCQkJPHBhdGggZmlsbD0ibm9uZSIgc3Ryb2tlPSIjQzBDMEJGIiBkPSJNMTg2LjIsNDMuNGg3LjdjMS41LDAsMi43LDEuMiwyLjcsMi43djcuN2MwLDEuNS0xLjIsMi43LTIuNywyLjdoLTcuNwoJCQkJYy0xLjUsMC0yLjctMS4yLTIuNy0yLjd2LTcuN0MxODMuNCw0NC43LDE4NC43LDQzLjQsMTg2LjIsNDMuNHoiLz4KCQkJPGVsbGlwc2UgZmlsbD0iI0MwQzBCRiIgY3g9IjE4NiIgY3k9IjQ4LjkiIHJ4PSIwLjciIHJ5PSIwLjciLz4KCQkJPGVsbGlwc2UgZmlsbD0iI0MwQzBCRiIgY3g9IjE5NCIgY3k9IjQ2LjciIHJ4PSIwLjciIHJ5PSIwLjciLz4KCQkJPHBhdGggZmlsbD0ibm9uZSIgc3Ryb2tlPSIjQzBDMEJGIiBzdHJva2UtbGluZWNhcD0icm91bmQiIGQ9Ik0xODYsNTMuM2wwLjQtMC4zYzAuNC0wLjMsMS0wLjMsMS41LTAuMWwxLDAuNAoJCQkJYzAuNSwwLjIsMSwwLjIsMS41LTAuMWwwLjgtMC41YzAuNC0wLjMsMS0wLjMsMS41LTAuMWwxLjgsMC44Ii8+CgkJPC9nPgoJPC9nPgoJPHBhdGggZmlsbD0iI0MwQzBCRiIgc3Ryb2tlPSIjQzBDMEJGIiBzdHJva2Utd2lkdGg9IjAuMjUiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIgZD0iTTE1Niw0NC4zYy0wLjItMC4xLTAuNC0wLjEtMC41LDAKCQljMCwwLTAuMiwwLjEtMC45LDAuMmMtMC43LDAtMi40LTAuMS0zLjgtMC42Yy0wLjgtMC4zLTEuNy0wLjUtMi41LTAuNWMtMC4yLDAtMC40LDAtMC41LDBjLTEuMywwLTIuNSwwLjMtMy42LDEKCQljLTAuMiwwLjEtMC4yLDAuMi0wLjIsMC40djExLjZjMCwwLjMsMC4xLDAuNSwwLjMsMC41YzAuNiwwLDAuNS0wLjQsMC41LTAuNnYtNS43YzAuNy0wLjMsMy4yLTEuMSw1LjgtMC4xCgkJYzEuNiwwLjYsMy41LDAuNyw0LjMsMC43YzAuOCwwLDEuMy0wLjMsMS4zLTAuM2MwLjItMC4xLDAuMy0wLjIsMC4zLTAuNHYtNS43QzE1Ni4yLDQ0LjYsMTU2LjEsNDQuNCwxNTYsNDQuM3ogTTE1NS42LDUwLjIKCQljLTAuMSwwLTAuNywwLjEtMSwwLjFjLTAuNywwLTIuNC0wLjEtMy44LTAuNmMtMi41LTEtNS0wLjUtNi4yLTAuMXYtNC45YzAuOS0wLjUsMi4yLTAuNywzLjItMC43YzAuMSwwLDAuMywwLDAuNCwwCgkJYzAuNywwLDEuNSwwLjIsMi4yLDAuNGMxLjYsMC42LDMuNSwwLjcsNC4zLDAuN2MwLjIsMCwwLjgsMCwxLTAuMVY1MC4yeiIvPgoJPGc+CgkJPHBhdGggZmlsbD0ibm9uZSIgc3Ryb2tlPSIjQzBDMEJGIiBkPSJNNDguMSw0My41aDMuN2MyLjUsMCw0LjUsMiw0LjUsNC41YzAsMC41LTAuNCwwLjktMC45LDAuOUg0NC41Yy0wLjUsMC0wLjktMC40LTAuOS0wLjkKCQkJQzQzLjYsNDUuNSw0NS42LDQzLjUsNDguMSw0My41eiIvPgoJCTxwYXRoIGZpbGw9Im5vbmUiIHN0cm9rZT0iI0MwQzBCRiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBkPSJNNDMuNSw0OC44Yy0wLjIsMC4xLTAuNSwxLjIsMCwxLjVjMS40LDEsOC41LDAuOCwxMS4zLDAuNgoJCQljMC44LTAuMSwxLjYtMC40LDEuNy0xLjJjMC0wLjMtMC4xLTAuNi0wLjYtMC45Ii8+CgkJPHBhdGggZmlsbD0ibm9uZSIgc3Ryb2tlPSIjQzBDMEJGIiBzdHJva2UtbGluZWNhcD0icm91bmQiIGQ9Ik00My41LDUwLjZMNDMuMyw1MWMtMC4yLDAuNSwwLjIsMSwwLjcsMC45YzAuMy0wLjEsMC41LDAsMC43LDAuMwoJCQlsMC4xLDAuMmMwLjMsMC41LDEsMC42LDEuNSwwLjJsMCwwYzAuMy0wLjIsMC43LTAuMywxLTAuMmwwLjgsMC4zYzAuNCwwLjIsMC44LDAuMSwxLjIsMGwwLjUtMC4yYzAuNC0wLjIsMC45LTAuMiwxLjMsMGwwLjUsMC4yCgkJCWMwLjQsMC4yLDAuOCwwLjIsMS4yLDBsMC4yLTAuMWMwLjMtMC4yLDAuOC0wLjIsMS4xLDAuMWwwLjIsMC4yYzAuMywwLjMsMC44LDAuMiwxLTAuMmwwLjEtMC4yYzAuMS0wLjIsMC0wLjMsMC4yLTAuMwoJCQljMC41LDAsMS4yLTAuMywxLjEtMC43bC0wLjQtMS4xIi8+CgkJPHBhdGggZmlsbD0ibm9uZSIgc3Ryb2tlPSIjQzBDMEJGIiBzdHJva2UtbGluZWNhcD0icm91bmQiIGQ9Ik00My41LDUyLjJjLTAuMSwwLjItMC4zLDAuOCwwLDEuMWMwLjMsMC40LDMsMS4xLDYuNCwxLjEKCQkJYzIuMiwwLDQuNi0wLjMsNi0wLjZjMC41LTAuMSwwLjktMC41LDAuOC0wLjljMC0wLjItMC4yLTAuNS0wLjQtMC43Ii8+CgkJPHBhdGggZmlsbD0ibm9uZSIgc3Ryb2tlPSIjQzBDMEJGIiBzdHJva2UtbGluZWNhcD0icm91bmQiIGQ9Ik00My41LDUzLjNjMCwwLjUsMC42LDIuMywxLjMsMi43YzEuOCwwLjgsNS43LDAuNyw4LjEsMC41CgkJCWMxLjMtMC4xLDIuNS0wLjcsMy4yLTEuOGMwLjMtMC41LDAuNS0xLDAuNS0xLjQiLz4KCQk8ZWxsaXBzZSBmaWxsPSIjQzBDMEJGIiBjeD0iNTEuNiIgY3k9IjQ2LjUiIHJ4PSIwLjMiIHJ5PSIwLjQiLz4KCQk8ZWxsaXBzZSBmaWxsPSIjQzBDMEJGIiBjeD0iNTMiIGN5PSI0NSIgcng9IjAuMyIgcnk9IjAuNCIvPgoJCTxlbGxpcHNlIGZpbGw9IiNDMEMwQkYiIGN4PSI1MyIgY3k9IjQ3LjIiIHJ4PSIwLjMiIHJ5PSIwLjQiLz4KCQk8ZWxsaXBzZSBmaWxsPSIjQzBDMEJGIiBjeD0iNTQuMyIgY3k9IjQ2LjUiIHJ4PSIwLjMiIHJ5PSIwLjQiLz4KCQk8ZWxsaXBzZSBmaWxsPSIjQzBDMEJGIiBjeD0iNTAuOSIgY3k9IjQ1IiByeD0iMC4zIiByeT0iMC40Ii8+Cgk8L2c+Cgk8Zz4KCQk8cGF0aCBmaWxsPSJub25lIiBzdHJva2U9IiNDMEMwQkYiIGQ9Ik0yNC4yLDUxdi03LjZjMC4xLDAuMSwwLjgsMC45LDIuOCwzLjFjMi41LTEuNyw1LjYtMC43LDYuOSwwbDIuNC0zLjF2Ny4xCgkJCWMwLDEuMi0wLjEsMi41LTAuOSwzLjRjLTEsMS4yLTIuNywyLjUtNS4zLDIuNWMtMi45LDAtNC41LTEuNS01LjMtMi45QzI0LjIsNTIuOSwyNC4yLDUyLDI0LjIsNTF6Ii8+CgkJPHBhdGggZmlsbD0ibm9uZSIgc3Ryb2tlPSIjQzBDMEJGIiBzdHJva2UtbGluZWNhcD0icm91bmQiIGQ9Ik0yMS4yLDUwbDUuNCwxLjIiLz4KCQk8cGF0aCBmaWxsPSJub25lIiBzdHJva2U9IiNDMEMwQkYiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgZD0iTTIxLjIsNTQuMWw1LjQtMS4yIi8+CgkJPHBhdGggZmlsbD0ibm9uZSIgc3Ryb2tlPSIjQzBDMEJGIiBzdHJva2UtbGluZWNhcD0icm91bmQiIGQ9Ik0zOC44LDUwbC01LjQsMS4yIi8+CgkJPHBhdGggZmlsbD0ibm9uZSIgc3Ryb2tlPSIjQzBDMEJGIiBzdHJva2UtbGluZWNhcD0icm91bmQiIGQ9Ik0zOC44LDU0LjFsLTUuNC0xLjIiLz4KCQk8cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZmlsbD0iI0MwQzBCRiIgZD0iTTI5LjUsNTIuNEwyOSw1MS43Yy0wLjItMC4zLDAtMC42LDAuMy0wLjZoMS40CgkJCWMwLjMsMCwwLjUsMC40LDAuMywwLjZsLTAuNywxbDAsMGMtMC43LDEuMi0yLjYsMS4xLTMuMS0wLjNsLTAuMS0wLjJjLTAuMS0wLjIsMC0wLjQsMC4yLTAuNXMwLjQsMCwwLjUsMC4ybDAuMSwwLjIKCQkJQzI4LjMsNTIuOCwyOS4xLDUyLjksMjkuNSw1Mi40eiIvPgoJCTxwYXRoIGZpbGw9Im5vbmUiIHN0cm9rZT0iI0MwQzBCRiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBkPSJNMzIuNCw1Mi4xbC0wLjEsMC4yYy0wLjQsMS0xLjgsMS4xLTIuMywwLjIiLz4KCQk8ZWxsaXBzZSBmaWxsPSIjQzBDMEJGIiBjeD0iMjcuNiIgY3k9IjQ5LjciIHJ4PSIwLjciIHJ5PSIwLjciLz4KCQk8ZWxsaXBzZSBmaWxsPSIjQzBDMEJGIiBjeD0iMzIuNCIgY3k9IjQ5LjciIHJ4PSIwLjciIHJ5PSIwLjciLz4KCTwvZz4KCTxnPgoJCTxwYXRoIGZpbGw9IiM2QUE5REQiIHN0cm9rZT0iIzZBQTlERCIgc3Ryb2tlLXdpZHRoPSIwLjEiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIgZD0iTTE0LjYsNzEuMmMtMC4xLTAuMS0wLjItMC4yLTAuMy0wLjJINS43CgkJCWMtMC4xLDAtMC4yLDAuMS0wLjMsMC4yYy0wLjEsMC4xLTAuMSwwLjIsMCwwLjRjMC43LDIsMi41LDMuMyw0LjYsMy4zczMuOS0xLjMsNC42LTMuM0MxNC43LDcxLjUsMTQuNyw3MS4zLDE0LjYsNzEuMnogTTEwLDc0LjEKCQkJYy0xLjYsMC0zLTAuOS0zLjctMi4yaDcuM0MxMyw3My4yLDExLjYsNzQuMSwxMCw3NC4xeiIvPgoJCTxwYXRoIGZpbGw9IiM2QUE5REQiIHN0cm9rZT0iIzZBQTlERCIgc3Ryb2tlLXdpZHRoPSIwLjEiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIgZD0iTTEyLjgsNjkuNWMwLjYsMCwxLjEtMC41LDEuMS0xLjEKCQkJYzAtMC42LTAuNS0xLjItMS4xLTEuMmMtMC42LDAtMS4yLDAuNS0xLjIsMS4yQzExLjYsNjksMTIuMiw2OS41LDEyLjgsNjkuNXogTTEyLjgsNjhjMC4yLDAsMC40LDAuMiwwLjQsMC40CgkJCWMwLDAuMi0wLjIsMC40LTAuNCwwLjRjLTAuMiwwLTAuNC0wLjItMC40LTAuNEMxMi40LDY4LjEsMTIuNiw2OCwxMi44LDY4eiIvPgoJCTxwYXRoIGZpbGw9IiM2QUE5REQiIHN0cm9rZT0iIzZBQTlERCIgc3Ryb2tlLXdpZHRoPSIwLjEiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIgZD0iTTcuMiw2OS41YzAuNiwwLDEuMi0wLjUsMS4yLTEuMQoJCQljMC0wLjYtMC41LTEuMi0xLjItMS4yYy0wLjYsMC0xLjEsMC41LTEuMSwxLjJDNi4xLDY5LDYuNiw2OS41LDcuMiw2OS41eiBNNy4yLDY4YzAuMiwwLDAuNCwwLjIsMC40LDAuNGMwLDAuMi0wLjIsMC40LTAuNCwwLjQKCQkJYy0wLjIsMC0wLjQtMC4yLTAuNC0wLjRDNi44LDY4LjEsNyw2OCw3LjIsNjh6Ii8+CgkJPHBhdGggZmlsbD0iIzZBQTlERCIgc3Ryb2tlPSIjNkFBOUREIiBzdHJva2Utd2lkdGg9IjAuMSIgc3Ryb2tlLW1pdGVybGltaXQ9IjEwIiBkPSJNMTAsNjNjLTMuOCwwLTcsMy4xLTcsN2MwLDMuOCwzLjEsNyw3LDcKCQkJczctMy4xLDctN0MxNyw2Ni4yLDEzLjgsNjMsMTAsNjN6IE0xMCw3Ni4yYy0zLjQsMC02LjItMi44LTYuMi02LjJjMC0zLjQsMi44LTYuMiw2LjItNi4yczYuMiwyLjgsNi4yLDYuMgoJCQlDMTYuMiw3My40LDEzLjQsNzYuMiwxMCw3Ni4yeiIvPgoJPC9nPgoJPGc+CgkJPGc+CgkJCTxwYXRoIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzZBQTlERCIgZD0iTTY0LjEsNzMuNGwyLjMsMGMwLjIsMCwwLjQsMC4yLDAuNCwwLjR2Mi4xYzAsMC4yLTAuMiwwLjQtMC40LDAuNGgtMi4zCgkJCQljLTAuMiwwLTAuNC0wLjItMC40LTAuNHYtMi4xQzYzLjcsNzMuNiw2My44LDczLjQsNjQuMSw3My40eiIvPgoJCQk8cGF0aCBmaWxsPSJub25lIiBzdHJva2U9IiM2QUE5REQiIGQ9Ik03My41LDczLjVoMi40YzAuMiwwLDAuNCwwLjIsMC40LDAuNHYyLjFjMCwwLjItMC4yLDAuNC0wLjQsMC40aC0yLjQKCQkJCWMtMC4yLDAtMC40LTAuMi0wLjQtMC40bDAtMi4xQzczLjEsNzMuNiw3My4zLDczLjUsNzMuNSw3My41eiIvPgoJCQk8cGF0aCBmaWxsPSJub25lIiBzdHJva2U9IiM2QUE5REQiIGQ9Ik02My43LDY4LjRoMTIuNnY1SDYzLjdWNjguNHoiLz4KCQkJPHBhdGggZmlsbD0ibm9uZSIgc3Ryb2tlPSIjNkFBOUREIiBkPSJNNjUuNSw2My42aDguOWMxLDAsMS45LDAuOCwxLjksMS45djMuMUg2My43di0zLjFDNjMuNyw2NC41LDY0LjUsNjMuNiw2NS41LDYzLjZ6Ii8+CgkJCTxlbGxpcHNlIGZpbGw9IiM2QUE5REQiIGN4PSI2Ni4yIiBjeT0iNzAuOSIgcng9IjAuOSIgcnk9IjAuOSIvPgoJCQk8ZWxsaXBzZSBmaWxsPSIjNkFBOUREIiBjeD0iNzMuOCIgY3k9IjcwLjkiIHJ4PSIwLjkiIHJ5PSIwLjkiLz4KCQk8L2c+Cgk8L2c+Cgk8Zz4KCQk8Zz4KCQkJPHBhdGggZmlsbD0ibm9uZSIgc3Ryb2tlPSIjNkFBOUREIiBkPSJNOTYuNCw3MGMwLDMuNi0yLjksNi41LTYuNCw2LjVzLTYuNC0yLjktNi40LTYuNXMyLjktNi41LDYuNC02LjVTOTYuNCw2Ni40LDk2LjQsNzB6Ii8+CgkJCTxwYXRoIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzZBQTlERCIgZD0iTTk2LjMsNjguNmMwLDAsMCwwLjEsMCwwLjFjLTAuOSwwLjEtMi45LDAuMS00LjYtMS4yYy0xLjEtMC44LTItMS43LTIuNi0yLjUKCQkJCWMtMC4zLTAuNC0wLjYtMC44LTAuNy0xLjFjLTAuMS0wLjEtMC4xLTAuMi0wLjEtMC4yYzAuNS0wLjEsMS4yLTAuMiwyLTAuMmMxLjIsMCwyLjUsMC4zLDMuNSwxLjFjMSwwLjgsMS43LDEuOCwyLjEsMi44CgkJCQlDOTYuMSw2Ny45LDk2LjIsNjguMyw5Ni4zLDY4LjZ6Ii8+CgkJCTxwYXRoIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzZBQTlERCIgZD0iTTg0LDcyLjJjMCwwLDAtMC4xLDAtMC4xYzAuOS0wLjIsMi45LTAuNCw0LjcsMC42YzEuMSwwLjcsMS45LDEuNSwyLjQsMi4zCgkJCQljMC40LDAuNSwwLjYsMSwwLjcsMS4zYy0wLjQsMC4xLTEsMC4yLTEuNywwLjNjLTEsMC0yLjEtMC4xLTMuMi0wLjhzLTEuOS0xLjYtMi40LTIuNUM4NC4yLDcyLjgsODQuMSw3Mi40LDg0LDcyLjJ6Ii8+CgkJPC9nPgoJPC9nPgoJPGc+CgkJPGc+CgkJCTxwYXRoIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzZBQTlERCIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBkPSJNMTE2LjMsNjYuOGwtMS40LDJsLTAuOC0wLjhsLTAuNi0wLjdsMCwwLjlsLTAuMSw4LjJoLTYuOAoJCQkJbC0wLjEtOC4ybDAtMC45bC0wLjYsMC43bC0wLjgsMC44bC0xLjQtMmwyLjYtMi45YzAuMS0wLjEsMC4yLTAuMSwwLjMtMC4xaDEuM2wwLjQsMC43YzAuNywxLjMsMi42LDEuMywzLjMtMC4xbDAuMy0wLjZoMS4yCgkJCQljMC4xLDAsMC4yLDAsMC4zLDAuMWwwLjMtMC4zbC0wLjMsMC4zTDExNi4zLDY2Ljh6Ii8+CgkJCTxwYXRoIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzZBQTlERCIgZD0iTTExMC4xLDY3LjdoMnYwLjljMCwwLjQtMC40LDAuNy0xLDAuN2MtMC42LDAtMS0wLjMtMS0wLjdMMTEwLjEsNjcuN0wxMTAuMSw2Ny43eiIvPgoJCTwvZz4KCTwvZz4KCTxnPgoJCTxnPgoJCQk8cGF0aCBmaWxsPSJub25lIiBzdHJva2U9IiM2QUE5REQiIGQ9Ik0xMjYuOCw3NC4zYzAsMS4yLTEsMi4yLTIuMiwyLjJzLTIuMi0xLTIuMi0yLjJzMS0yLjIsMi4yLTIuMlMxMjYuOCw3My4xLDEyNi44LDc0LjN6Ii8+CgkJCTxwYXRoIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzZBQTlERCIgZD0iTTEzNy42LDc0LjNjMCwxLjItMSwyLjItMi4yLDIuMmMtMS4yLDAtMi4yLTEtMi4yLTIuMnMxLTIuMiwyLjItMi4yCgkJCQlDMTM2LjYsNzIuMSwxMzcuNiw3My4xLDEzNy42LDc0LjN6Ii8+CgkJCTxwYXRoIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzZBQTlERCIgZD0iTTEyNi44LDY0LjR2OS45Ii8+CgkJCTxwYXRoIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzZBQTlERCIgZD0iTTEzNy43LDY0LjR2OS45Ii8+CgkJCTxwYXRoIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzZBQTlERCIgZD0iTTEyNi44LDYzLjVoMTAuOHYyLjdoLTEwLjhDMTI2LjgsNjYuMiwxMjYuOCw2My41LDEyNi44LDYzLjV6Ii8+CgkJPC9nPgoJPC9nPgoJPGc+CgkJPGc+CgkJCTxwYXRoIGZpbGw9IiM2QUE5REQiIGQ9Ik0xNzAuOCw2My4xTDE3MC44LDYzLjFjLTAuMywwLTAuNSwwLTAuOCwwYy0yLjEsMC00LDEtNS4zLDIuNWwtMC4xLDBsLTAuMS0wLjFsLTEtMS4ybC0wLjMsMy40bDMuNCwwLjMKCQkJCWwtMS4xLTEuM2wtMC4xLTAuMWwwLjEtMC4xYzEuMS0xLjQsMy0yLjMsNS0yLjFsMCwwYzMuMiwwLjMsNS41LDMuMSw1LjIsNi4zYy0wLjMsMy0zLjEsNS4zLTYuMSw1LjFjLTMuMS0wLjItNS40LTIuOS01LjMtNgoJCQkJbC0xLjMtMC4xYy0wLjIsMy44LDIuNiw3LjEsNi4zLDcuNGMzLjksMC4zLDcuMy0yLjYsNy42LTYuNUMxNzcuMiw2Ni44LDE3NC40LDYzLjUsMTcwLjgsNjMuMXoiLz4KCQkJPHBhdGggZmlsbD0iIzZBQTlERCIgZD0iTTE3MC4zLDY3LjRjMC0wLjMtMC4zLTAuNi0wLjYtMC42cy0wLjYsMC4zLTAuNiwwLjZ2My4yYzAsMC4yLDAuMSwwLjMsMC4yLDAuNGMwLjEsMC4xLDAuMywwLjIsMC40LDAuMgoJCQkJaDIuNGMwLjQsMCwwLjYtMC4zLDAuNi0wLjZTMTcyLjQsNzAsMTcyLDcwaC0xLjZoLTAuMnYtMC4yTDE3MC4zLDY3LjRMMTcwLjMsNjcuNHoiLz4KCQk8L2c+Cgk8L2c+Cgk8Zz4KCQk8Zz4KCQkJPHBhdGggZmlsbD0ibm9uZSIgc3Ryb2tlPSIjNkFBOUREIiBkPSJNMTg2LjIsNjMuNGg3LjdjMS41LDAsMi43LDEuMiwyLjcsMi43djcuN2MwLDEuNS0xLjIsMi43LTIuNywyLjdoLTcuNwoJCQkJYy0xLjUsMC0yLjctMS4yLTIuNy0yLjd2LTcuN0MxODMuNCw2NC43LDE4NC43LDYzLjQsMTg2LjIsNjMuNHoiLz4KCQkJPGVsbGlwc2UgZmlsbD0iIzZBQTlERCIgY3g9IjE4NiIgY3k9IjY4LjkiIHJ4PSIwLjciIHJ5PSIwLjciLz4KCQkJPGVsbGlwc2UgZmlsbD0iIzZBQTlERCIgY3g9IjE5NCIgY3k9IjY2LjciIHJ4PSIwLjciIHJ5PSIwLjciLz4KCQkJPHBhdGggZmlsbD0ibm9uZSIgc3Ryb2tlPSIjNkFBOUREIiBzdHJva2UtbGluZWNhcD0icm91bmQiIGQ9Ik0xODYsNzMuM2wwLjQtMC4zYzAuNC0wLjMsMS0wLjMsMS41LTAuMWwxLDAuNAoJCQkJYzAuNSwwLjIsMSwwLjIsMS41LTAuMWwwLjgtMC41YzAuNC0wLjMsMS0wLjMsMS41LTAuMWwxLjgsMC44Ii8+CgkJPC9nPgoJPC9nPgoJPHBhdGggZmlsbD0iIzZBQTlERCIgc3Ryb2tlPSIjNkFBOUREIiBzdHJva2Utd2lkdGg9IjAuMjUiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIgZD0iTTE1Niw2NC4zYy0wLjItMC4xLTAuNC0wLjEtMC41LDAKCQljMCwwLTAuMiwwLjEtMC45LDAuMmMtMC43LDAtMi40LTAuMS0zLjgtMC42Yy0wLjgtMC4zLTEuNy0wLjUtMi41LTAuNWMtMC4yLDAtMC40LDAtMC41LDBjLTEuMywwLTIuNSwwLjMtMy42LDEKCQljLTAuMiwwLjEtMC4yLDAuMi0wLjIsMC40djExLjZjMCwwLjMsMC4xLDAuNSwwLjMsMC41YzAuNiwwLDAuNS0wLjQsMC41LTAuNnYtNS43YzAuNy0wLjMsMy4yLTEuMSw1LjgtMC4xCgkJYzEuNiwwLjYsMy41LDAuNyw0LjMsMC43YzAuOCwwLDEuMy0wLjMsMS4zLTAuM2MwLjItMC4xLDAuMy0wLjIsMC4zLTAuNHYtNS43QzE1Ni4yLDY0LjYsMTU2LjEsNjQuNCwxNTYsNjQuM3ogTTE1NS42LDcwLjIKCQljLTAuMSwwLTAuNywwLjEtMSwwLjFjLTAuNywwLTIuNC0wLjEtMy44LTAuNmMtMi41LTEtNS0wLjUtNi4yLTAuMXYtNC45YzAuOS0wLjUsMi4yLTAuNywzLjItMC43YzAuMSwwLDAuMywwLDAuNCwwCgkJYzAuNywwLDEuNSwwLjIsMi4yLDAuNGMxLjYsMC42LDMuNSwwLjcsNC4zLDAuN2MwLjIsMCwwLjgsMCwxLTAuMVY3MC4yeiIvPgoJPGc+CgkJPHBhdGggZmlsbD0ibm9uZSIgc3Ryb2tlPSIjNkFBOUREIiBkPSJNNDguMSw2My41aDMuN2MyLjUsMCw0LjUsMiw0LjUsNC41YzAsMC41LTAuNCwwLjktMC45LDAuOUg0NC41Yy0wLjUsMC0wLjktMC40LTAuOS0wLjkKCQkJQzQzLjYsNjUuNSw0NS42LDYzLjUsNDguMSw2My41eiIvPgoJCTxwYXRoIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzZBQTlERCIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBkPSJNNDMuNSw2OC44Yy0wLjIsMC4xLTAuNSwxLjIsMCwxLjVjMS40LDAuOSw4LjUsMC44LDExLjMsMC42CgkJCWMwLjgtMC4xLDEuNi0wLjQsMS43LTEuMmMwLTAuMy0wLjEtMC42LTAuNi0wLjkiLz4KCQk8cGF0aCBmaWxsPSJub25lIiBzdHJva2U9IiM2QUE5REQiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgZD0iTTQzLjUsNzAuNkw0My4zLDcxYy0wLjIsMC41LDAuMiwxLDAuNywwLjljMC4zLTAuMSwwLjUsMC4xLDAuNywwLjMKCQkJbDAuMSwwLjJjMC4zLDAuNSwxLDAuNiwxLjUsMC4ybDAsMGMwLjMtMC4yLDAuNy0wLjMsMS0wLjJsMC44LDAuM2MwLjQsMC4yLDAuOCwwLjEsMS4yLDBsMC41LTAuMmMwLjQtMC4yLDAuOS0wLjIsMS4zLDBsMC41LDAuMgoJCQljMC40LDAuMiwwLjgsMC4yLDEuMi0wLjFsMC4yLTAuMWMwLjMtMC4yLDAuOC0wLjIsMS4xLDAuMWwwLjIsMC4yYzAuMywwLjMsMC44LDAuMiwxLTAuMmwwLjEtMC4yYzAuMS0wLjIsMC0wLjMsMC4yLTAuMwoJCQljMC41LDAsMS4yLTAuMywxLjEtMC43bC0wLjQtMS4xIi8+CgkJPHBhdGggZmlsbD0ibm9uZSIgc3Ryb2tlPSIjNkFBOUREIiBzdHJva2UtbGluZWNhcD0icm91bmQiIGQ9Ik00My41LDcyLjJjLTAuMSwwLjItMC4zLDAuOCwwLDEuMWMwLjMsMC40LDMsMS4xLDYuNCwxLjEKCQkJYzIuMiwwLDQuNi0wLjMsNi0wLjZjMC41LTAuMSwwLjktMC40LDAuOC0wLjljMC0wLjItMC4yLTAuNS0wLjQtMC43Ii8+CgkJPHBhdGggZmlsbD0ibm9uZSIgc3Ryb2tlPSIjNkFBOUREIiBzdHJva2UtbGluZWNhcD0icm91bmQiIGQ9Ik00My41LDczLjNjMCwwLjUsMC42LDIuMywxLjMsMi43YzEuOCwwLjgsNS43LDAuNyw4LjEsMC41CgkJCWMxLjMtMC4xLDIuNS0wLjcsMy4yLTEuOGMwLjMtMC41LDAuNS0xLDAuNS0xLjQiLz4KCQk8ZWxsaXBzZSBmaWxsPSIjNkFBOUREIiBjeD0iNTEuNiIgY3k9IjY2LjUiIHJ4PSIwLjMiIHJ5PSIwLjQiLz4KCQk8ZWxsaXBzZSBmaWxsPSIjNkFBOUREIiBjeD0iNTMiIGN5PSI2NSIgcng9IjAuMyIgcnk9IjAuNCIvPgoJCTxlbGxpcHNlIGZpbGw9IiM2QUE5REQiIGN4PSI1MyIgY3k9IjY3LjIiIHJ4PSIwLjMiIHJ5PSIwLjQiLz4KCQk8ZWxsaXBzZSBmaWxsPSIjNkFBOUREIiBjeD0iNTQuMyIgY3k9IjY2LjUiIHJ4PSIwLjMiIHJ5PSIwLjQiLz4KCQk8ZWxsaXBzZSBmaWxsPSIjNkFBOUREIiBjeD0iNTAuOSIgY3k9IjY1IiByeD0iMC4zIiByeT0iMC40Ii8+Cgk8L2c+Cgk8Zz4KCQk8cGF0aCBmaWxsPSJub25lIiBzdHJva2U9IiM2QUE5REQiIGQ9Ik0yNC4yLDcxdi03LjZjMC4xLDAuMSwwLjgsMC45LDIuOCwzLjFjMi41LTEuNyw1LjYtMC43LDYuOSwwbDIuNC0zLjF2Ny4xCgkJCWMwLDEuMi0wLjEsMi41LTAuOSwzLjRjLTEsMS4yLTIuNywyLjUtNS4zLDIuNWMtMi45LDAtNC41LTEuNS01LjMtMi45QzI0LjIsNzIuOSwyNC4yLDcyLDI0LjIsNzF6Ii8+CgkJPHBhdGggZmlsbD0ibm9uZSIgc3Ryb2tlPSIjNkFBOUREIiBzdHJva2UtbGluZWNhcD0icm91bmQiIGQ9Ik0yMS4yLDcwLjFsNS40LDEuMiIvPgoJCTxwYXRoIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzZBQTlERCIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBkPSJNMjEuMiw3NC4xbDUuNC0xLjIiLz4KCQk8cGF0aCBmaWxsPSJub25lIiBzdHJva2U9IiM2QUE5REQiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgZD0iTTM4LjgsNzAuMWwtNS40LDEuMiIvPgoJCTxwYXRoIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzZBQTlERCIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBkPSJNMzguOCw3NC4xbC01LjQtMS4yIi8+CgkJPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGZpbGw9IiM2QUE5REQiIGQ9Ik0yOS41LDcyLjRMMjksNzEuN2MtMC4yLTAuMywwLTAuNiwwLjMtMC42aDEuNAoJCQljMC4zLDAsMC41LDAuNCwwLjMsMC42bC0wLjcsMWwwLDBjLTAuNywxLjItMi42LDEuMS0zLjEtMC4zbC0wLjEtMC4yYy0wLjEtMC4yLDAtMC40LDAuMi0wLjVjMC4yLTAuMSwwLjQsMCwwLjUsMC4ybDAuMSwwLjIKCQkJQzI4LjMsNzIuOCwyOS4xLDcyLjksMjkuNSw3Mi40eiIvPgoJCTxwYXRoIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzZBQTlERCIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBkPSJNMzIuNCw3Mi4xbC0wLjEsMC4yYy0wLjQsMS0xLjgsMS4xLTIuMywwLjIiLz4KCQk8ZWxsaXBzZSBmaWxsPSIjNkFBOUREIiBjeD0iMjcuNiIgY3k9IjY5LjciIHJ4PSIwLjciIHJ5PSIwLjciLz4KCQk8ZWxsaXBzZSBmaWxsPSIjNkFBOUREIiBjeD0iMzIuNCIgY3k9IjY5LjciIHJ4PSIwLjciIHJ5PSIwLjciLz4KCTwvZz4KPC9nPgo8Zz4KCTxwYXRoIGZpbGw9IiM4Njg2ODYiIHN0cm9rZT0iIzg2ODY4NiIgc3Ryb2tlLXdpZHRoPSIwLjEiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIgZD0iTTEyLjgsOS41YzAuNiwwLDEuMS0wLjUsMS4xLTEuMgoJCWMwLTAuNi0wLjUtMS4xLTEuMS0xLjFjLTAuNiwwLTEuMiwwLjUtMS4yLDEuMVMxMi4yLDkuNSwxMi44LDkuNXogTTEyLjgsNy45YzAuMiwwLDAuNCwwLjIsMC40LDAuNGMwLDAuMi0wLjIsMC40LTAuNCwwLjQKCQljLTAuMiwwLTAuNC0wLjItMC40LTAuNEMxMi40LDguMSwxMi42LDcuOSwxMi44LDcuOXoiLz4KCTxwYXRoIGZpbGw9IiM4Njg2ODYiIHN0cm9rZT0iIzg2ODY4NiIgc3Ryb2tlLXdpZHRoPSIwLjEiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIgZD0iTTcuMiw5LjVjMC42LDAsMS4yLTAuNSwxLjItMS4yCgkJYzAtMC42LTAuNS0xLjEtMS4yLTEuMWMtMC42LDAtMS4xLDAuNS0xLjEsMS4xUzYuNiw5LjUsNy4yLDkuNXogTTcuMiw3LjljMC4yLDAsMC40LDAuMiwwLjQsMC40YzAsMC4yLTAuMiwwLjQtMC40LDAuNAoJCUM3LDguNyw2LjgsOC41LDYuOCw4LjNDNi44LDguMSw3LDcuOSw3LjIsNy45eiIvPgoJPHBhdGggZmlsbD0iIzg2ODY4NiIgc3Ryb2tlPSIjODY4Njg2IiBzdHJva2Utd2lkdGg9IjAuMSIgc3Ryb2tlLW1pdGVybGltaXQ9IjEwIiBkPSJNMTQuNiwxMS4yYy0wLjEtMC4xLTAuMi0wLjItMC4zLTAuMkg1LjcKCQljLTAuMSwwLTAuMiwwLjEtMC4zLDAuMmMtMC4xLDAuMS0wLjEsMC4yLDAsMC40YzAuNywyLDIuNSwzLjMsNC42LDMuM3MzLjktMS4zLDQuNi0zLjNDMTQuNywxMS40LDE0LjcsMTEuMywxNC42LDExLjJ6IE0xMCwxNC4xCgkJYy0xLjYsMC0zLTAuOS0zLjctMi4yaDcuM0MxMywxMy4yLDExLjYsMTQuMSwxMCwxNC4xeiIvPgoJPHBhdGggZmlsbD0iIzg2ODY4NiIgc3Ryb2tlPSIjODY4Njg2IiBzdHJva2Utd2lkdGg9IjAuMSIgc3Ryb2tlLW1pdGVybGltaXQ9IjEwIiBkPSJNMTAsM2MtMy44LDAtNywzLjEtNyw3czMuMSw3LDcsN3M3LTMuMSw3LTcKCQlTMTMuOCwzLDEwLDN6IE0xMCwxNi4yYy0zLjQsMC02LjItMi44LTYuMi02LjJTNi42LDMuOCwxMCwzLjhzNi4yLDIuOCw2LjIsNi4yUzEzLjQsMTYuMiwxMCwxNi4yeiIvPgo8L2c+CjxnIGlkPSJDYXJfMDAwMDAwMTg5MzUzOTUwODU0MTM0MTM3NTAwMDAwMDA4MjUyNzM4Nzc4NDI3NzU3MTVfIj4KCTxnPgoJCTxnPgoJCQk8cGF0aCBmaWxsPSJub25lIiBzdHJva2U9IiM4Njg2ODYiIGQ9Ik02NC4xLDEzLjRsMi4zLDBjMC4yLDAsMC40LDAuMiwwLjQsMC40djIuMWMwLDAuMi0wLjIsMC40LTAuNCwwLjRoLTIuMwoJCQkJYy0wLjIsMC0wLjQtMC4yLTAuNC0wLjR2LTIuMUM2My43LDEzLjYsNjMuOCwxMy40LDY0LjEsMTMuNHoiLz4KCQkJPHBhdGggZmlsbD0ibm9uZSIgc3Ryb2tlPSIjODY4Njg2IiBkPSJNNzMuNSwxMy40aDIuNGMwLjIsMCwwLjQsMC4yLDAuNCwwLjR2Mi4xYzAsMC4yLTAuMiwwLjQtMC40LDAuNGgtMi40CgkJCQljLTAuMiwwLTAuNC0wLjItMC40LTAuNGwwLTIuMUM3My4xLDEzLjYsNzMuMywxMy40LDczLjUsMTMuNHoiLz4KCQkJPHBhdGggZmlsbD0ibm9uZSIgc3Ryb2tlPSIjODY4Njg2IiBkPSJNNjMuNyw4LjRoMTIuNnY1SDYzLjdWOC40eiIvPgoJCQk8cGF0aCBmaWxsPSJub25lIiBzdHJva2U9IiM4Njg2ODYiIGQ9Ik02NS41LDMuNmg4LjljMSwwLDEuOSwwLjgsMS45LDEuOXYzLjFINjMuN1Y1LjVDNjMuNyw0LjQsNjQuNSwzLjYsNjUuNSwzLjZ6Ii8+CgkJCTxlbGxpcHNlIGZpbGw9IiM4Njg2ODYiIGN4PSI2Ni4yIiBjeT0iMTAuOSIgcng9IjAuOSIgcnk9IjAuOSIvPgoJCQk8ZWxsaXBzZSBmaWxsPSIjODY4Njg2IiBjeD0iNzMuOCIgY3k9IjEwLjkiIHJ4PSIwLjkiIHJ5PSIwLjkiLz4KCQk8L2c+Cgk8L2c+CjwvZz4KPGcgaWQ9IkFjdGl2aXRpZXMiPgoJPGc+CgkJPGc+CgkJCTxwYXRoIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzg2ODY4NiIgZD0iTTk2LjQsMTBjMCwzLjYtMi45LDYuNS02LjQsNi41cy02LjQtMi45LTYuNC02LjVzMi45LTYuNSw2LjQtNi41Uzk2LjQsNi40LDk2LjQsMTB6Ii8+CgkJCTxwYXRoIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzg2ODY4NiIgZD0iTTk2LjMsOC42YzAsMCwwLDAuMSwwLDAuMWMtMC45LDAuMS0yLjksMC4xLTQuNi0xLjJjLTEuMS0wLjgtMi0xLjctMi42LTIuNQoJCQkJYy0wLjMtMC40LTAuNi0wLjgtMC43LTEuMWMtMC4xLTAuMS0wLjEtMC4yLTAuMS0wLjJjMC41LTAuMSwxLjItMC4yLDItMC4yYzEuMiwwLDIuNSwwLjMsMy41LDEuMWMxLDAuOCwxLjcsMS44LDIuMSwyLjgKCQkJCUM5Ni4xLDcuOSw5Ni4yLDguMyw5Ni4zLDguNnoiLz4KCQkJPHBhdGggZmlsbD0ibm9uZSIgc3Ryb2tlPSIjODY4Njg2IiBkPSJNODQsMTIuMWMwLDAsMC0wLjEsMC0wLjFjMC45LTAuMiwyLjktMC40LDQuNywwLjZjMS4xLDAuNiwxLjksMS41LDIuNCwyLjMKCQkJCWMwLjQsMC41LDAuNiwxLDAuNywxLjNjLTAuNCwwLjEtMSwwLjItMS43LDAuM2MtMSwwLTIuMS0wLjEtMy4yLTAuOGMtMS4xLTAuNi0xLjktMS42LTIuNC0yLjVDODQuMiwxMi44LDg0LjEsMTIuNCw4NCwxMi4xeiIvPgoJCTwvZz4KCTwvZz4KPC9nPgo8ZyBpZD0iT2JqZWN0c18wMDAwMDA2NDMxMjM3MTczOTEzMDMxNTI1MDAwMDAxMDIyNTg4OTAzMjIyODYzMjk3NV8iPgoJPGc+CgkJPGc+CgkJCTxwYXRoIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzg2ODY4NiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBkPSJNMTE2LjMsNi44bC0xLjQsMkwxMTQuMSw4bC0wLjYtMC43bDAsMC45bC0wLjEsOC4yaC02LjhsLTAuMS04LjIKCQkJCWwwLTAuOUwxMDUuOSw4bC0wLjgsMC44bC0xLjQtMmwyLjYtMi45YzAuMS0wLjEsMC4yLTAuMSwwLjMtMC4xaDEuM2wwLjQsMC43YzAuNywxLjMsMi42LDEuMywzLjMtMC4xbDAuMy0wLjZoMS4yCgkJCQljMC4xLDAsMC4yLDAsMC4zLDAuMWwwLjMtMC4zbC0wLjMsMC4zTDExNi4zLDYuOHoiLz4KCQkJPHBhdGggZmlsbD0ibm9uZSIgc3Ryb2tlPSIjODY4Njg2IiBkPSJNMTEwLjEsNy43aDJ2MC45YzAsMC40LTAuNCwwLjctMSwwLjdjLTAuNiwwLTEtMC4zLTEtMC43TDExMC4xLDcuN0wxMTAuMSw3Ljd6Ii8+CgkJPC9nPgoJPC9nPgo8L2c+CjxnIGlkPSJTeW1ib2xzXzAwMDAwMDk2NzQ2OTA3ODY5OTI5OTIxMTgwMDAwMDA2NDg0ODEyODMwMjgyNTgyNDE2XyI+Cgk8Zz4KCQk8Zz4KCQkJPHBhdGggZmlsbD0ibm9uZSIgc3Ryb2tlPSIjODY4Njg2IiBkPSJNMTI2LjgsMTQuM2MwLDEuMi0xLDIuMi0yLjIsMi4ycy0yLjItMS0yLjItMi4yczEtMi4yLDIuMi0yLjJTMTI2LjgsMTMuMSwxMjYuOCwxNC4zeiIvPgoJCQk8cGF0aCBmaWxsPSJub25lIiBzdHJva2U9IiM4Njg2ODYiIGQ9Ik0xMzcuNiwxNC4zYzAsMS4yLTEsMi4yLTIuMiwyLjJjLTEuMiwwLTIuMi0xLTIuMi0yLjJzMS0yLjIsMi4yLTIuMgoJCQkJQzEzNi42LDEyLjEsMTM3LjYsMTMuMSwxMzcuNiwxNC4zeiIvPgoJCQk8cGF0aCBmaWxsPSJub25lIiBzdHJva2U9IiM4Njg2ODYiIGQ9Ik0xMjYuOCw0LjR2OS45Ii8+CgkJCTxwYXRoIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzg2ODY4NiIgZD0iTTEzNy43LDQuNHY5LjkiLz4KCQkJPHBhdGggZmlsbD0ibm9uZSIgc3Ryb2tlPSIjODY4Njg2IiBkPSJNMTI2LjgsMy41aDEwLjh2Mi43aC0xMC44QzEyNi44LDYuMiwxMjYuOCwzLjUsMTI2LjgsMy41eiIvPgoJCTwvZz4KCTwvZz4KPC9nPgo8ZyBpZD0iUmVjZW50cyI+Cgk8Zz4KCQk8Zz4KCQkJPHBhdGggZmlsbD0iIzg2ODY4NiIgZD0iTTE3MC44LDMuMUwxNzAuOCwzLjFjLTAuMywwLTAuNSwwLTAuOCwwYy0yLjEsMC00LDEtNS4zLDIuNWwtMC4xLDBsLTAuMS0wLjFsLTEtMS4ybC0wLjMsMy40bDMuNCwwLjMKCQkJCWwtMS4xLTEuM2wtMC4xLTAuMWwwLjEtMC4xYzEuMS0xLjQsMy0yLjMsNS0yLjFsMCwwYzMuMiwwLjMsNS41LDMuMSw1LjIsNi4zYy0wLjMsMy0zLjEsNS4zLTYuMSw1LjFjLTMuMS0wLjItNS40LTIuOS01LjMtNgoJCQkJTDE2Myw5LjVjLTAuMiwzLjgsMi42LDcuMSw2LjMsNy40YzMuOSwwLjQsNy4zLTIuNiw3LjYtNi41QzE3Ny4yLDYuOCwxNzQuNCwzLjUsMTcwLjgsMy4xeiIvPgoJCQk8cGF0aCBmaWxsPSIjODY4Njg2IiBkPSJNMTcwLjMsNy40YzAtMC4zLTAuMy0wLjYtMC42LTAuNlMxNjksNy4xLDE2OSw3LjR2My4yYzAsMC4yLDAuMSwwLjMsMC4yLDAuNGMwLjEsMC4xLDAuMywwLjIsMC40LDAuMgoJCQkJaDIuNGMwLjQsMCwwLjYtMC4zLDAuNi0wLjZzLTAuMy0wLjYtMC42LTAuNmgtMS42aC0wLjJWOS44TDE3MC4zLDcuNEwxNzAuMyw3LjR6Ii8+CgkJPC9nPgoJPC9nPgo8L2c+CjxnIGlkPSJDdXN0b21fMDAwMDAxODEwODcyMjk0MzQzMDIzMzY3ODAwMDAwMDUxNTIyNzc5NDU5NDA2NzQ0ODhfIj4KCTxnPgoJCTxnPgoJCQk8cGF0aCBmaWxsPSJub25lIiBzdHJva2U9IiM4Njg2ODYiIGQ9Ik0xODYuMiwzLjRoNy43YzEuNSwwLDIuNywxLjIsMi43LDIuN3Y3LjdjMCwxLjUtMS4yLDIuNy0yLjcsMi43aC03LjcKCQkJCWMtMS41LDAtMi43LTEuMi0yLjctMi43VjYuMUMxODMuNCw0LjYsMTg0LjcsMy40LDE4Ni4yLDMuNHoiLz4KCQkJPGVsbGlwc2UgZmlsbD0iIzg2ODY4NiIgY3g9IjE4NiIgY3k9IjguOSIgcng9IjAuNyIgcnk9IjAuNyIvPgoJCQk8ZWxsaXBzZSBmaWxsPSIjODY4Njg2IiBjeD0iMTk0IiBjeT0iNi43IiByeD0iMC43IiByeT0iMC43Ii8+CgkJCTxwYXRoIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzg2ODY4NiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBkPSJNMTg2LDEzLjNsMC40LTAuM2MwLjQtMC4zLDEtMC4zLDEuNS0wLjFsMSwwLjQKCQkJCWMwLjUsMC4yLDEsMC4yLDEuNS0wLjFsMC44LTAuNWMwLjQtMC4zLDEtMC4zLDEuNS0wLjFsMS44LDAuOCIvPgoJCTwvZz4KCTwvZz4KPC9nPgo8cGF0aCBmaWxsPSIjODY4Njg2IiBzdHJva2U9IiM4Njg2ODYiIHN0cm9rZS13aWR0aD0iMC4yNSIgc3Ryb2tlLW1pdGVybGltaXQ9IjEwIiBkPSJNMTU2LDQuM2MtMC4yLTAuMS0wLjQtMC4xLTAuNSwwCgljMCwwLTAuMiwwLjEtMC45LDAuMWMtMC43LDAtMi40LTAuMS0zLjgtMC42Yy0wLjgtMC4zLTEuNy0wLjUtMi41LTAuNWMtMC4yLDAtMC40LDAtMC41LDBjLTEuMywwLTIuNSwwLjMtMy42LDEKCWMtMC4yLDAuMS0wLjIsMC4yLTAuMiwwLjR2MTEuNmMwLDAuMywwLjEsMC41LDAuMywwLjVjMC42LDAsMC41LTAuNCwwLjUtMC42di01LjdjMC43LTAuMywzLjItMS4xLDUuOC0wLjFjMS42LDAuNiwzLjUsMC43LDQuMywwLjcKCWMwLjgsMCwxLjMtMC4zLDEuMy0wLjNjMC4yLTAuMSwwLjMtMC4yLDAuMy0wLjRWNC43QzE1Ni4yLDQuNSwxNTYuMSw0LjQsMTU2LDQuM3ogTTE1NS42LDEwLjJjLTAuMSwwLTAuNywwLjEtMSwwLjEKCWMtMC43LDAtMi40LTAuMS0zLjgtMC42Yy0yLjUtMS01LTAuNS02LjItMC4xVjQuN2MwLjktMC41LDIuMi0wLjcsMy4yLTAuN2MwLjEsMCwwLjMsMCwwLjQsMGMwLjcsMCwxLjUsMC4yLDIuMiwwLjQKCWMxLjYsMC42LDMuNSwwLjcsNC4zLDAuN2MwLjIsMCwwLjgsMCwxLTAuMVYxMC4yeiIvPgo8ZyBpZD0iRm9vZCI+Cgk8ZyBpZD0iTGF5ZXJfMTIiPgoJCTxnPgoJCQk8cGF0aCBmaWxsPSJub25lIiBzdHJva2U9IiM4Njg2ODYiIGQ9Ik00OC4xLDMuNWgzLjdjMi41LDAsNC41LDIsNC41LDQuNWMwLDAuNS0wLjQsMC45LTAuOSwwLjlINDQuNWMtMC41LDAtMC45LTAuNC0wLjktMC45CgkJCQlDNDMuNiw1LjUsNDUuNiwzLjUsNDguMSwzLjV6Ii8+CgkJCTxwYXRoIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzg2ODY4NiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBkPSJNNDMuNSw4LjdjLTAuMiwwLjEtMC41LDEuMiwwLDEuNWMxLjQsMC45LDguNSwwLjgsMTEuMywwLjYKCQkJCWMwLjgtMC4xLDEuNi0wLjQsMS43LTEuMmMwLTAuMy0wLjEtMC42LTAuNi0wLjkiLz4KCQkJPHBhdGggZmlsbD0ibm9uZSIgc3Ryb2tlPSIjODY4Njg2IiBzdHJva2UtbGluZWNhcD0icm91bmQiIGQ9Ik00My41LDEwLjZMNDMuMywxMWMtMC4yLDAuNSwwLjIsMSwwLjcsMC45CgkJCQljMC4zLTAuMSwwLjUsMC4xLDAuNywwLjNsMC4xLDAuMmMwLjMsMC41LDEsMC42LDEuNSwwLjJsMCwwYzAuMy0wLjIsMC43LTAuMywxLTAuMmwwLjgsMC4zYzAuNCwwLjEsMC44LDAuMSwxLjIsMGwwLjUtMC4yCgkJCQljMC40LTAuMiwwLjktMC4yLDEuMywwbDAuNSwwLjJjMC40LDAuMiwwLjgsMC4xLDEuMi0wLjFsMC4yLTAuMWMwLjMtMC4yLDAuOC0wLjEsMS4xLDAuMWwwLjIsMC4yYzAuMywwLjMsMC44LDAuMiwxLTAuMmwwLjEtMC4yCgkJCQljMC4xLTAuMiwwLTAuMywwLjItMC40YzAuNSwwLDEuMi0wLjMsMS4xLTAuN2wtMC40LTEuMSIvPgoJCQk8cGF0aCBmaWxsPSJub25lIiBzdHJva2U9IiM4Njg2ODYiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgZD0iTTQzLjUsMTIuMWMtMC4xLDAuMi0wLjMsMC44LDAsMS4xYzAuMywwLjQsMywxLjEsNi40LDEuMQoJCQkJYzIuMiwwLDQuNi0wLjMsNi0wLjZjMC41LTAuMSwwLjktMC40LDAuOC0wLjljMC0wLjItMC4yLTAuNS0wLjQtMC43Ii8+CgkJCTxwYXRoIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzg2ODY4NiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBkPSJNNDMuNSwxMy4zYzAsMC41LDAuNiwyLjQsMS4zLDIuNmMxLjgsMC44LDUuNywwLjcsOC4xLDAuNQoJCQkJYzEuMy0wLjEsMi41LTAuNywzLjItMS44YzAuMy0wLjUsMC41LTEsMC41LTEuNCIvPgoJCQk8ZWxsaXBzZSBmaWxsPSIjODY4Njg2IiBjeD0iNTEuNiIgY3k9IjYuNSIgcng9IjAuMyIgcnk9IjAuNCIvPgoJCQk8ZWxsaXBzZSBmaWxsPSIjODY4Njg2IiBjeD0iNTMiIGN5PSI0LjkiIHJ4PSIwLjMiIHJ5PSIwLjQiLz4KCQkJPGVsbGlwc2UgZmlsbD0iIzg2ODY4NiIgY3g9IjUzIiBjeT0iNy4yIiByeD0iMC4zIiByeT0iMC40Ii8+CgkJCTxlbGxpcHNlIGZpbGw9IiM4Njg2ODYiIGN4PSI1NC4zIiBjeT0iNi41IiByeD0iMC4zIiByeT0iMC40Ii8+CgkJCTxlbGxpcHNlIGZpbGw9IiM4Njg2ODYiIGN4PSI1MC45IiBjeT0iNC45IiByeD0iMC4zIiByeT0iMC40Ii8+CgkJPC9nPgoJPC9nPgo8L2c+CjxnIGlkPSJBbmltYWxzIj4KCTxnPgoJCTxwYXRoIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzg2ODY4NiIgZD0iTTI0LjIsMTFWMy41YzAuMSwwLjEsMC44LDAuOSwyLjgsMy4xYzIuNS0xLjcsNS42LTAuNyw2LjksMGwyLjQtMy4xdjcuMQoJCQljMCwxLjItMC4xLDIuNS0wLjksMy40Yy0xLDEuMi0yLjcsMi41LTUuMywyLjVjLTIuOSwwLTQuNS0xLjUtNS4zLTIuOUMyNC4yLDEyLjksMjQuMiwxMS45LDI0LjIsMTF6Ii8+CgkJPHBhdGggZmlsbD0ibm9uZSIgc3Ryb2tlPSIjODY4Njg2IiBzdHJva2UtbGluZWNhcD0icm91bmQiIGQ9Ik0yMS4yLDEwbDUuNCwxLjIiLz4KCQk8cGF0aCBmaWxsPSJub25lIiBzdHJva2U9IiM4Njg2ODYiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgZD0iTTIxLjIsMTQuMWw1LjQtMS4yIi8+CgkJPHBhdGggZmlsbD0ibm9uZSIgc3Ryb2tlPSIjODY4Njg2IiBzdHJva2UtbGluZWNhcD0icm91bmQiIGQ9Ik0zOC44LDEwbC01LjQsMS4yIi8+CgkJPHBhdGggZmlsbD0ibm9uZSIgc3Ryb2tlPSIjODY4Njg2IiBzdHJva2UtbGluZWNhcD0icm91bmQiIGQ9Ik0zOC44LDE0LjFsLTUuNC0xLjIiLz4KCQk8cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZmlsbD0iIzg2ODY4NiIgZD0iTTI5LjUsMTIuNEwyOSwxMS43Yy0wLjItMC4zLDAtMC42LDAuMy0wLjZoMS40CgkJCWMwLjMsMCwwLjUsMC40LDAuMywwLjZsLTAuNywxbDAsMGMtMC43LDEuMi0yLjYsMS4xLTMuMS0wLjNsLTAuMS0wLjJjLTAuMS0wLjIsMC0wLjQsMC4yLTAuNXMwLjQsMCwwLjUsMC4ybDAuMSwwLjIKCQkJQzI4LjMsMTIuNywyOS4xLDEyLjksMjkuNSwxMi40eiIvPgoJCTxwYXRoIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzg2ODY4NiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBkPSJNMzIuNCwxMi4xbC0wLjEsMC4yYy0wLjQsMS0xLjgsMS4xLTIuMywwLjIiLz4KCQk8ZWxsaXBzZSBmaWxsPSIjODY4Njg2IiBjeD0iMjcuNiIgY3k9IjkuNyIgcng9IjAuNyIgcnk9IjAuNyIvPgoJCTxlbGxpcHNlIGZpbGw9IiM4Njg2ODYiIGN4PSIzMi40IiBjeT0iOS43IiByeD0iMC43IiByeT0iMC43Ii8+Cgk8L2c+CjwvZz4KPC9zdmc+';
19190
19376
 
19191
- function CategoryNavigation() {
19192
- var _useState = React.useState(null),
19193
- activeCategory = _useState[0],
19194
- setActiveCategory = _useState[1];
19195
- var scrollCategoryIntoView = useScrollCategoryIntoView();
19196
- useActiveCategoryScrollDetection(setActiveCategory);
19197
- var isSearchMode = useIsSearchMode();
19198
- var categoriesConfig = useCategoriesConfig();
19199
- var CategoryNavigationRef = useCategoryNavigationRef();
19200
- var hideCustomCategory = useShouldHideCustomEmojis();
19201
- return React.createElement("div", {
19202
- className: flairup.cx(styles$b.nav),
19203
- role: "tablist",
19204
- "aria-label": "Category navigation",
19205
- id: "epr-category-nav-id",
19206
- ref: CategoryNavigationRef
19207
- }, categoriesConfig.map(function (categoryConfig) {
19208
- var _cx;
19209
- var category = categoryFromCategoryConfig(categoryConfig);
19210
- var isActiveCategory = category === activeCategory;
19211
- if (isCustomCategory(categoryConfig) && hideCustomCategory) {
19212
- return null;
19213
- }
19214
- return React.createElement(Button, {
19215
- tabIndex: isSearchMode || isActiveCategory ? -1 : 0,
19216
- className: flairup.cx(styles$b.catBtn, commonInteractionStyles.categoryBtn, "epr-icn-" + category, (_cx = {}, _cx[ClassNames.active] = isActiveCategory, _cx)),
19217
- key: category,
19218
- onClick: function onClick() {
19219
- setActiveCategory(category);
19220
- scrollCategoryIntoView(category);
19221
- },
19222
- "aria-label": categoryNameFromCategoryConfig(categoryConfig),
19223
- "aria-selected": isActiveCategory,
19224
- role: "tab",
19225
- "aria-controls": "epr-category-nav-id"
19226
- });
19227
- }));
19377
+ function CategoryButton(_ref) {
19378
+ var _cx;
19379
+ var isActiveCategory = _ref.isActiveCategory,
19380
+ category = _ref.category,
19381
+ allowNavigation = _ref.allowNavigation,
19382
+ categoryConfig = _ref.categoryConfig,
19383
+ onClick = _ref.onClick;
19384
+ return React.createElement(Button, {
19385
+ tabIndex: allowNavigation ? 0 : -1,
19386
+ className: flairup.cx(styles$e.catBtn, commonInteractionStyles.categoryBtn, "epr-icn-" + category, (_cx = {}, _cx[ClassNames.active] = isActiveCategory, _cx)),
19387
+ onClick: onClick,
19388
+ "aria-label": categoryNameFromCategoryConfig(categoryConfig),
19389
+ "aria-selected": isActiveCategory,
19390
+ role: "tab",
19391
+ "aria-controls": "epr-category-nav-id"
19392
+ });
19228
19393
  }
19229
- var styles$b = /*#__PURE__*/stylesheet.create({
19230
- nav: {
19231
- '.': 'epr-category-nav',
19232
- display: 'flex',
19233
- flexDirection: 'row',
19234
- justifyContent: 'space-around',
19235
- padding: 'var(--epr-header-padding)'
19236
- },
19237
- '.epr-search-active': {
19238
- nav: {
19239
- opacity: '0.3',
19240
- cursor: 'default',
19241
- pointerEvents: 'none'
19242
- }
19243
- },
19244
- '.epr-main:has(input:not(:placeholder-shown))': {
19245
- nav: {
19246
- opacity: '0.3',
19247
- cursor: 'default',
19248
- pointerEvents: 'none'
19394
+ var DarkActivePositionY = {
19395
+ backgroundPositionY: 'calc(var(--epr-category-navigation-button-size) * 3)'
19396
+ };
19397
+ var DarkPositionY = {
19398
+ backgroundPositionY: 'calc(var(--epr-category-navigation-button-size) * 2)'
19399
+ };
19400
+ var DarkInactivePosition = {
19401
+ ':not(.epr-search-active)': {
19402
+ catBtn: {
19403
+ ':hover': DarkActivePositionY,
19404
+ '&.epr-active': DarkActivePositionY
19249
19405
  }
19250
- },
19406
+ }
19407
+ };
19408
+ var styles$e = /*#__PURE__*/stylesheet.create({
19251
19409
  catBtn: {
19252
19410
  '.': 'epr-cat-btn',
19253
19411
  display: 'inline-block',
@@ -19301,40 +19459,146 @@ var styles$b = /*#__PURE__*/stylesheet.create({
19301
19459
  backgroundPositionX: 'calc(var(--epr-category-navigation-button-size) * -3)'
19302
19460
  }
19303
19461
  },
19304
- '.epr-dark-theme': {
19462
+ '.epr-dark-theme': /*#__PURE__*/_extends({
19463
+ catBtn: DarkPositionY
19464
+ }, DarkInactivePosition),
19465
+ '.epr-auto-theme': /*#__PURE__*/_extends({
19305
19466
  catBtn: {
19306
- backgroundPositionY: 'calc(var(--epr-category-navigation-button-size) * 2)'
19307
- },
19308
- ':not(.epr-search-active)': {
19309
- // @ts-expect-error - need to fix this
19310
- catBtn: {
19311
- ':hover': {
19312
- backgroundPositionY: 'calc(var(--epr-category-navigation-button-size) * 3)'
19313
- },
19314
- '&.epr-active': {
19315
- backgroundPositionY: 'calc(var(--epr-category-navigation-button-size) * 3)'
19316
- }
19467
+ '@media (prefers-color-scheme: dark)': DarkPositionY
19468
+ }
19469
+ }, DarkInactivePosition)
19470
+ });
19471
+
19472
+ function CategoryNavigation() {
19473
+ var _useState = React.useState(null),
19474
+ activeCategory = _useState[0],
19475
+ setActiveCategory = _useState[1];
19476
+ var scrollCategoryIntoView = useScrollCategoryIntoView();
19477
+ useActiveCategoryScrollDetection(setActiveCategory);
19478
+ var isSearchMode = useIsSearchMode();
19479
+ var categoriesConfig = useCategoriesConfig();
19480
+ var CategoryNavigationRef = useCategoryNavigationRef();
19481
+ var hideCustomCategory = useShouldHideCustomEmojis();
19482
+ return React.createElement("div", {
19483
+ className: flairup.cx(styles$f.nav),
19484
+ role: "tablist",
19485
+ "aria-label": "Category navigation",
19486
+ id: "epr-category-nav-id",
19487
+ ref: CategoryNavigationRef
19488
+ }, categoriesConfig.map(function (categoryConfig) {
19489
+ var category = categoryFromCategoryConfig(categoryConfig);
19490
+ var isActiveCategory = category === activeCategory;
19491
+ if (isCustomCategory(categoryConfig) && hideCustomCategory) {
19492
+ return null;
19493
+ }
19494
+ var allowNavigation = !isSearchMode && !isActiveCategory;
19495
+ return React.createElement(CategoryButton, {
19496
+ key: category,
19497
+ category: category,
19498
+ isActiveCategory: isActiveCategory,
19499
+ allowNavigation: allowNavigation,
19500
+ categoryConfig: categoryConfig,
19501
+ onClick: function onClick() {
19502
+ setActiveCategory(category);
19503
+ scrollCategoryIntoView(category);
19317
19504
  }
19505
+ });
19506
+ }));
19507
+ }
19508
+ var styles$f = /*#__PURE__*/stylesheet.create({
19509
+ nav: {
19510
+ '.': 'epr-category-nav',
19511
+ display: 'flex',
19512
+ flexDirection: 'row',
19513
+ justifyContent: 'space-around',
19514
+ padding: 'var(--epr-header-padding)'
19515
+ },
19516
+ '.epr-search-active': {
19517
+ nav: {
19518
+ opacity: '0.3',
19519
+ cursor: 'default',
19520
+ pointerEvents: 'none'
19521
+ }
19522
+ },
19523
+ '.epr-main:has(input:not(:placeholder-shown))': {
19524
+ nav: {
19525
+ opacity: '0.3',
19526
+ cursor: 'default',
19527
+ pointerEvents: 'none'
19528
+ }
19529
+ }
19530
+ });
19531
+
19532
+ var SVGTimes = 'data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDI2LjMuMSwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPgo8c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IgoJIHdpZHRoPSIyMHB4IiBoZWlnaHQ9IjgwcHgiIHZpZXdCb3g9IjAgMCAyMCA4MCIgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyAwIDAgMjAgODAiIHhtbDpzcGFjZT0icHJlc2VydmUiPgo8cGF0aCBmaWxsPSIjODY4Njg2IiBkPSJNNi45OCwxMy41OWMwLjEsMC4xLDAuMjQsMC4xNSwwLjM3LDAuMTVzMC4yNy0wLjA1LDAuMzctMC4xNWwyLjQyLTIuNDJsMi40MywyLjQzCgljMC4xLDAuMSwwLjI0LDAuMTUsMC4zNywwLjE1YzAuMTQsMCwwLjI3LTAuMDUsMC4zNy0wLjE1YzAuMjEtMC4yMSwwLjIxLTAuNTQsMC0wLjc1bC0yLjQzLTIuNDNMMTMuMzIsOAoJYzAuMjEtMC4yMSwwLjIxLTAuNTQsMC0wLjc1Yy0wLjIxLTAuMjEtMC41NC0wLjIxLTAuNzUsMGwtMi40MiwyLjQyTDcuNzQsNy4yN2MtMC4yMS0wLjIxLTAuNTQtMC4yMS0wLjc1LDAKCWMtMC4yMSwwLjIxLTAuMjEsMC41NCwwLDAuNzVsMi40MSwyLjQxbC0yLjQyLDIuNDJDNi43NywxMy4wNSw2Ljc3LDEzLjM5LDYuOTgsMTMuNTlMNi45OCwxMy41OXoiLz4KPHBhdGggZmlsbD0iIzg2ODY4NiIgZD0iTTEwLjE1LDE4LjQzYzQuNDEsMCw4LTMuNTksOC04YzAtNC40MS0zLjU5LTgtOC04Yy00LjQxLDAtOCwzLjU5LTgsOEMyLjE1LDE0Ljg0LDUuNzQsMTguNDMsMTAuMTUsMTguNDN6CgkgTTEwLjE1LDMuNDljMy44MywwLDYuOTQsMy4xMSw2Ljk0LDYuOTRjMCwzLjgzLTMuMTEsNi45NC02Ljk0LDYuOTRjLTMuODMsMC02Ljk0LTMuMTEtNi45NC02Ljk0QzMuMjEsNi42LDYuMzMsMy40OSwxMC4xNSwzLjQ5CglMMTAuMTUsMy40OXoiLz4KPHBhdGggZmlsbD0iIzMzNzFCNyIgZD0iTTYuOTgsMzMuNTljMC4xLDAuMSwwLjI0LDAuMTUsMC4zNywwLjE1czAuMjctMC4wNSwwLjM3LTAuMTVsMi40Mi0yLjQybDIuNDMsMi40MwoJYzAuMSwwLjEsMC4yNCwwLjE1LDAuMzcsMC4xNWMwLjE0LDAsMC4yNy0wLjA1LDAuMzctMC4xNWMwLjIxLTAuMjEsMC4yMS0wLjU0LDAtMC43NWwtMi40My0yLjQzTDEzLjMyLDI4CgljMC4yMS0wLjIxLDAuMjEtMC41NCwwLTAuNzVjLTAuMjEtMC4yMS0wLjU0LTAuMjEtMC43NSwwbC0yLjQyLDIuNDJsLTIuNDEtMi40MWMtMC4yMS0wLjIxLTAuNTQtMC4yMS0wLjc1LDAKCWMtMC4yMSwwLjIxLTAuMjEsMC41NCwwLDAuNzVsMi40MSwyLjQxbC0yLjQyLDIuNDJDNi43NywzMy4wNSw2Ljc3LDMzLjM5LDYuOTgsMzMuNTlMNi45OCwzMy41OXoiLz4KPHBhdGggZmlsbD0iIzMzNzFCNyIgZD0iTTEwLjE1LDM4LjQzYzQuNDEsMCw4LTMuNTksOC04YzAtNC40MS0zLjU5LTgtOC04Yy00LjQxLDAtOCwzLjU5LTgsOEMyLjE1LDM0Ljg0LDUuNzQsMzguNDMsMTAuMTUsMzguNDN6CgkgTTEwLjE1LDIzLjQ5YzMuODMsMCw2Ljk0LDMuMTEsNi45NCw2Ljk0YzAsMy44My0zLjExLDYuOTQtNi45NCw2Ljk0Yy0zLjgzLDAtNi45NC0zLjExLTYuOTQtNi45NAoJQzMuMjEsMjYuNiw2LjMzLDIzLjQ5LDEwLjE1LDIzLjQ5TDEwLjE1LDIzLjQ5eiIvPgo8cGF0aCBmaWxsPSIjQzBDMEJGIiBkPSJNNi45OCw1My41OWMwLjEsMC4xLDAuMjQsMC4xNSwwLjM3LDAuMTVzMC4yNy0wLjA1LDAuMzctMC4xNWwyLjQyLTIuNDJsMi40MywyLjQzCgljMC4xLDAuMSwwLjI0LDAuMTUsMC4zNywwLjE1YzAuMTQsMCwwLjI3LTAuMDUsMC4zNy0wLjE1YzAuMjEtMC4yMSwwLjIxLTAuNTQsMC0wLjc1bC0yLjQzLTIuNDNMMTMuMzIsNDgKCWMwLjIxLTAuMjEsMC4yMS0wLjU0LDAtMC43NWMtMC4yMS0wLjIxLTAuNTQtMC4yMS0wLjc1LDBsLTIuNDIsMi40MmwtMi40MS0yLjQxYy0wLjIxLTAuMjEtMC41NC0wLjIxLTAuNzUsMAoJYy0wLjIxLDAuMjEtMC4yMSwwLjU0LDAsMC43NWwyLjQxLDIuNDFsLTIuNDIsMi40MkM2Ljc3LDUzLjA1LDYuNzcsNTMuMzksNi45OCw1My41OUw2Ljk4LDUzLjU5eiIvPgo8cGF0aCBmaWxsPSIjQzBDMEJGIiBkPSJNMTAuMTUsNTguNDNjNC40MSwwLDgtMy41OSw4LThjMC00LjQxLTMuNTktOC04LThjLTQuNDEsMC04LDMuNTktOCw4QzIuMTUsNTQuODQsNS43NCw1OC40MywxMC4xNSw1OC40M3oKCSBNMTAuMTUsNDMuNDljMy44MywwLDYuOTQsMy4xMSw2Ljk0LDYuOTRjMCwzLjgzLTMuMTEsNi45NC02Ljk0LDYuOTRjLTMuODMsMC02Ljk0LTMuMTEtNi45NC02Ljk0CglDMy4yMSw0Ni42LDYuMzMsNDMuNDksMTAuMTUsNDMuNDlMMTAuMTUsNDMuNDl6Ii8+CjxwYXRoIGZpbGw9IiM2QUE5REQiIGQ9Ik02Ljk4LDczLjU5YzAuMSwwLjEsMC4yNCwwLjE1LDAuMzcsMC4xNXMwLjI3LTAuMDUsMC4zNy0wLjE1bDIuNDItMi40MmwyLjQzLDIuNDMKCWMwLjEsMC4xLDAuMjQsMC4xNSwwLjM3LDAuMTVjMC4xNCwwLDAuMjctMC4wNSwwLjM3LTAuMTVjMC4yMS0wLjIxLDAuMjEtMC41NCwwLTAuNzVsLTIuNDMtMi40M0wxMy4zMiw2OAoJYzAuMjEtMC4yMSwwLjIxLTAuNTQsMC0wLjc1Yy0wLjIxLTAuMjEtMC41NC0wLjIxLTAuNzUsMGwtMi40MiwyLjQybC0yLjQxLTIuNDFjLTAuMjEtMC4yMS0wLjU0LTAuMjEtMC43NSwwCgljLTAuMjEsMC4yMS0wLjIxLDAuNTQsMCwwLjc1bDIuNDEsMi40MWwtMi40MiwyLjQyQzYuNzcsNzMuMDUsNi43Nyw3My4zOSw2Ljk4LDczLjU5TDYuOTgsNzMuNTl6Ii8+CjxwYXRoIGZpbGw9IiM2QUE5REQiIGQ9Ik0xMC4xNSw3OC40M2M0LjQxLDAsOC0zLjU5LDgtOGMwLTQuNDEtMy41OS04LTgtOGMtNC40MSwwLTgsMy41OS04LDhDMi4xNSw3NC44NCw1Ljc0LDc4LjQzLDEwLjE1LDc4LjQzegoJIE0xMC4xNSw2My40OWMzLjgzLDAsNi45NCwzLjExLDYuOTQsNi45NGMwLDMuODMtMy4xMSw2Ljk0LTYuOTQsNi45NGMtMy44MywwLTYuOTQtMy4xMS02Ljk0LTYuOTQKCUMzLjIxLDY2LjYsNi4zMyw2My40OSwxMC4xNSw2My40OUwxMC4xNSw2My40OXoiLz4KPC9zdmc+';
19533
+
19534
+ function BtnClearSearch() {
19535
+ var clearSearch = useClearSearch();
19536
+ return React.createElement(Button, {
19537
+ className: flairup.cx(styles$g.btnClearSearch, commonInteractionStyles.visibleOnSearchOnly),
19538
+ onClick: clearSearch,
19539
+ "aria-label": "Clear",
19540
+ title: "Clear"
19541
+ }, React.createElement("div", {
19542
+ className: flairup.cx(styles$g.icnClearnSearch)
19543
+ }));
19544
+ }
19545
+ var HoverDark = {
19546
+ ':hover': {
19547
+ '> .epr-icn-clear-search': {
19548
+ backgroundPositionY: '-60px'
19549
+ }
19550
+ }
19551
+ };
19552
+ var styles$g = /*#__PURE__*/stylesheet.create({
19553
+ btnClearSearch: {
19554
+ '.': 'epr-btn-clear-search',
19555
+ position: 'absolute',
19556
+ right: 'var(--epr-search-bar-inner-padding)',
19557
+ height: '30px',
19558
+ width: '30px',
19559
+ display: 'flex',
19560
+ alignItems: 'center',
19561
+ justifyContent: 'center',
19562
+ top: '50%',
19563
+ transform: 'translateY(-50%)',
19564
+ padding: '0',
19565
+ borderRadius: '50%',
19566
+ ':hover': {
19567
+ background: 'var(--epr-hover-bg-color)'
19568
+ },
19569
+ ':focus': {
19570
+ background: 'var(--epr-hover-bg-color)'
19571
+ }
19572
+ },
19573
+ icnClearnSearch: {
19574
+ '.': 'epr-icn-clear-search',
19575
+ backgroundColor: 'transparent',
19576
+ backgroundRepeat: 'no-repeat',
19577
+ backgroundSize: '20px',
19578
+ height: '20px',
19579
+ width: '20px',
19580
+ backgroundImage: "url(" + SVGTimes + ")",
19581
+ ':hover': {
19582
+ backgroundPositionY: '-20px'
19583
+ },
19584
+ ':focus': {
19585
+ backgroundPositionY: '-20px'
19318
19586
  }
19319
19587
  },
19588
+ '.epr-dark-theme': {
19589
+ icnClearnSearch: {
19590
+ backgroundPositionY: '-40px'
19591
+ },
19592
+ btnClearSearch: HoverDark
19593
+ },
19320
19594
  '.epr-auto-theme': {
19321
- catBtn: {
19595
+ icnClearnSearch: {
19322
19596
  '@media (prefers-color-scheme: dark)': {
19323
- backgroundPositionY: 'calc(var(--epr-category-navigation-button-size) * 2)'
19597
+ backgroundPositionY: '-40px'
19324
19598
  }
19325
19599
  },
19326
- ':not(.epr-search-active)': {
19327
- catBtn: {
19328
- '@media (prefers-color-scheme: dark)': {
19329
- ':hover': {
19330
- backgroundPositionY: 'calc(var(--epr-category-navigation-button-size) * 3)'
19331
- },
19332
- // @ts-ignore
19333
- '&.epr-active': {
19334
- backgroundPositionY: 'calc(var(--epr-category-navigation-button-size) * 3)'
19335
- }
19336
- }
19337
- }
19600
+ btnClearSearch: {
19601
+ '@media (prefers-color-scheme: dark)': HoverDark
19338
19602
  }
19339
19603
  }
19340
19604
  });
@@ -19356,7 +19620,39 @@ function genQuery(value) {
19356
19620
 
19357
19621
  var SVGMagnifier = 'data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDI2LjMuMSwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPgo8c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IgoJIHdpZHRoPSIyMHB4IiBoZWlnaHQ9IjQwcHgiIHZpZXdCb3g9IjAgMCAyMCA0MCIgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyAwIDAgMjAgNDAiIHhtbDpzcGFjZT0icHJlc2VydmUiPgo8cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZmlsbD0iIzg2ODY4NiIgZD0iTTEyLDguODFjMCwyLjA4LTEuNjgsMy43Ni0zLjc2LDMuNzZjLTIuMDgsMC0zLjc2LTEuNjgtMy43Ni0zLjc2CgljMC0yLjA4LDEuNjgtMy43NiwzLjc2LTMuNzZDMTAuMzIsNS4wNSwxMiw2LjczLDEyLDguODF6IE0xMS4yMywxMi43MmMtMC44MywwLjY0LTEuODcsMS4wMS0yLjk5LDEuMDFjLTIuNzIsMC00LjkyLTIuMi00LjkyLTQuOTIKCWMwLTIuNzIsMi4yLTQuOTIsNC45Mi00LjkyYzIuNzIsMCw0LjkyLDIuMiw0LjkyLDQuOTJjMCwxLjEzLTAuMzgsMi4xNi0xLjAxLDIuOTlsMy45NCwzLjkzYzAuMjUsMC4yNSwwLjI1LDAuNjYsMCwwLjkyCgljLTAuMjUsMC4yNS0wLjY2LDAuMjUtMC45MiwwTDExLjIzLDEyLjcyeiIvPgo8cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZmlsbD0iI0MwQzBCRiIgZD0iTTEyLDI4LjgxYzAsMi4wOC0xLjY4LDMuNzYtMy43NiwzLjc2Yy0yLjA4LDAtMy43Ni0xLjY4LTMuNzYtMy43NgoJYzAtMi4wOCwxLjY4LTMuNzYsMy43Ni0zLjc2QzEwLjMyLDI1LjA1LDEyLDI2LjczLDEyLDI4LjgxeiBNMTEuMjMsMzIuNzJjLTAuODMsMC42NC0xLjg3LDEuMDEtMi45OSwxLjAxCgljLTIuNzIsMC00LjkyLTIuMi00LjkyLTQuOTJjMC0yLjcyLDIuMi00LjkyLDQuOTItNC45MmMyLjcyLDAsNC45MiwyLjIsNC45Miw0LjkyYzAsMS4xMy0wLjM4LDIuMTYtMS4wMSwyLjk5bDMuOTQsMy45MwoJYzAuMjUsMC4yNSwwLjI1LDAuNjYsMCwwLjkyYy0wLjI1LDAuMjUtMC42NiwwLjI1LTAuOTIsMEwxMS4yMywzMi43MnoiLz4KPC9zdmc+';
19358
19622
 
19359
- var SVGTimes = 'data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDI2LjMuMSwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPgo8c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IgoJIHdpZHRoPSIyMHB4IiBoZWlnaHQ9IjgwcHgiIHZpZXdCb3g9IjAgMCAyMCA4MCIgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyAwIDAgMjAgODAiIHhtbDpzcGFjZT0icHJlc2VydmUiPgo8cGF0aCBmaWxsPSIjODY4Njg2IiBkPSJNNi45OCwxMy41OWMwLjEsMC4xLDAuMjQsMC4xNSwwLjM3LDAuMTVzMC4yNy0wLjA1LDAuMzctMC4xNWwyLjQyLTIuNDJsMi40MywyLjQzCgljMC4xLDAuMSwwLjI0LDAuMTUsMC4zNywwLjE1YzAuMTQsMCwwLjI3LTAuMDUsMC4zNy0wLjE1YzAuMjEtMC4yMSwwLjIxLTAuNTQsMC0wLjc1bC0yLjQzLTIuNDNMMTMuMzIsOAoJYzAuMjEtMC4yMSwwLjIxLTAuNTQsMC0wLjc1Yy0wLjIxLTAuMjEtMC41NC0wLjIxLTAuNzUsMGwtMi40MiwyLjQyTDcuNzQsNy4yN2MtMC4yMS0wLjIxLTAuNTQtMC4yMS0wLjc1LDAKCWMtMC4yMSwwLjIxLTAuMjEsMC41NCwwLDAuNzVsMi40MSwyLjQxbC0yLjQyLDIuNDJDNi43NywxMy4wNSw2Ljc3LDEzLjM5LDYuOTgsMTMuNTlMNi45OCwxMy41OXoiLz4KPHBhdGggZmlsbD0iIzg2ODY4NiIgZD0iTTEwLjE1LDE4LjQzYzQuNDEsMCw4LTMuNTksOC04YzAtNC40MS0zLjU5LTgtOC04Yy00LjQxLDAtOCwzLjU5LTgsOEMyLjE1LDE0Ljg0LDUuNzQsMTguNDMsMTAuMTUsMTguNDN6CgkgTTEwLjE1LDMuNDljMy44MywwLDYuOTQsMy4xMSw2Ljk0LDYuOTRjMCwzLjgzLTMuMTEsNi45NC02Ljk0LDYuOTRjLTMuODMsMC02Ljk0LTMuMTEtNi45NC02Ljk0QzMuMjEsNi42LDYuMzMsMy40OSwxMC4xNSwzLjQ5CglMMTAuMTUsMy40OXoiLz4KPHBhdGggZmlsbD0iIzMzNzFCNyIgZD0iTTYuOTgsMzMuNTljMC4xLDAuMSwwLjI0LDAuMTUsMC4zNywwLjE1czAuMjctMC4wNSwwLjM3LTAuMTVsMi40Mi0yLjQybDIuNDMsMi40MwoJYzAuMSwwLjEsMC4yNCwwLjE1LDAuMzcsMC4xNWMwLjE0LDAsMC4yNy0wLjA1LDAuMzctMC4xNWMwLjIxLTAuMjEsMC4yMS0wLjU0LDAtMC43NWwtMi40My0yLjQzTDEzLjMyLDI4CgljMC4yMS0wLjIxLDAuMjEtMC41NCwwLTAuNzVjLTAuMjEtMC4yMS0wLjU0LTAuMjEtMC43NSwwbC0yLjQyLDIuNDJsLTIuNDEtMi40MWMtMC4yMS0wLjIxLTAuNTQtMC4yMS0wLjc1LDAKCWMtMC4yMSwwLjIxLTAuMjEsMC41NCwwLDAuNzVsMi40MSwyLjQxbC0yLjQyLDIuNDJDNi43NywzMy4wNSw2Ljc3LDMzLjM5LDYuOTgsMzMuNTlMNi45OCwzMy41OXoiLz4KPHBhdGggZmlsbD0iIzMzNzFCNyIgZD0iTTEwLjE1LDM4LjQzYzQuNDEsMCw4LTMuNTksOC04YzAtNC40MS0zLjU5LTgtOC04Yy00LjQxLDAtOCwzLjU5LTgsOEMyLjE1LDM0Ljg0LDUuNzQsMzguNDMsMTAuMTUsMzguNDN6CgkgTTEwLjE1LDIzLjQ5YzMuODMsMCw2Ljk0LDMuMTEsNi45NCw2Ljk0YzAsMy44My0zLjExLDYuOTQtNi45NCw2Ljk0Yy0zLjgzLDAtNi45NC0zLjExLTYuOTQtNi45NAoJQzMuMjEsMjYuNiw2LjMzLDIzLjQ5LDEwLjE1LDIzLjQ5TDEwLjE1LDIzLjQ5eiIvPgo8cGF0aCBmaWxsPSIjQzBDMEJGIiBkPSJNNi45OCw1My41OWMwLjEsMC4xLDAuMjQsMC4xNSwwLjM3LDAuMTVzMC4yNy0wLjA1LDAuMzctMC4xNWwyLjQyLTIuNDJsMi40MywyLjQzCgljMC4xLDAuMSwwLjI0LDAuMTUsMC4zNywwLjE1YzAuMTQsMCwwLjI3LTAuMDUsMC4zNy0wLjE1YzAuMjEtMC4yMSwwLjIxLTAuNTQsMC0wLjc1bC0yLjQzLTIuNDNMMTMuMzIsNDgKCWMwLjIxLTAuMjEsMC4yMS0wLjU0LDAtMC43NWMtMC4yMS0wLjIxLTAuNTQtMC4yMS0wLjc1LDBsLTIuNDIsMi40MmwtMi40MS0yLjQxYy0wLjIxLTAuMjEtMC41NC0wLjIxLTAuNzUsMAoJYy0wLjIxLDAuMjEtMC4yMSwwLjU0LDAsMC43NWwyLjQxLDIuNDFsLTIuNDIsMi40MkM2Ljc3LDUzLjA1LDYuNzcsNTMuMzksNi45OCw1My41OUw2Ljk4LDUzLjU5eiIvPgo8cGF0aCBmaWxsPSIjQzBDMEJGIiBkPSJNMTAuMTUsNTguNDNjNC40MSwwLDgtMy41OSw4LThjMC00LjQxLTMuNTktOC04LThjLTQuNDEsMC04LDMuNTktOCw4QzIuMTUsNTQuODQsNS43NCw1OC40MywxMC4xNSw1OC40M3oKCSBNMTAuMTUsNDMuNDljMy44MywwLDYuOTQsMy4xMSw2Ljk0LDYuOTRjMCwzLjgzLTMuMTEsNi45NC02Ljk0LDYuOTRjLTMuODMsMC02Ljk0LTMuMTEtNi45NC02Ljk0CglDMy4yMSw0Ni42LDYuMzMsNDMuNDksMTAuMTUsNDMuNDlMMTAuMTUsNDMuNDl6Ii8+CjxwYXRoIGZpbGw9IiM2QUE5REQiIGQ9Ik02Ljk4LDczLjU5YzAuMSwwLjEsMC4yNCwwLjE1LDAuMzcsMC4xNXMwLjI3LTAuMDUsMC4zNy0wLjE1bDIuNDItMi40MmwyLjQzLDIuNDMKCWMwLjEsMC4xLDAuMjQsMC4xNSwwLjM3LDAuMTVjMC4xNCwwLDAuMjctMC4wNSwwLjM3LTAuMTVjMC4yMS0wLjIxLDAuMjEtMC41NCwwLTAuNzVsLTIuNDMtMi40M0wxMy4zMiw2OAoJYzAuMjEtMC4yMSwwLjIxLTAuNTQsMC0wLjc1Yy0wLjIxLTAuMjEtMC41NC0wLjIxLTAuNzUsMGwtMi40MiwyLjQybC0yLjQxLTIuNDFjLTAuMjEtMC4yMS0wLjU0LTAuMjEtMC43NSwwCgljLTAuMjEsMC4yMS0wLjIxLDAuNTQsMCwwLjc1bDIuNDEsMi40MWwtMi40MiwyLjQyQzYuNzcsNzMuMDUsNi43Nyw3My4zOSw2Ljk4LDczLjU5TDYuOTgsNzMuNTl6Ii8+CjxwYXRoIGZpbGw9IiM2QUE5REQiIGQ9Ik0xMC4xNSw3OC40M2M0LjQxLDAsOC0zLjU5LDgtOGMwLTQuNDEtMy41OS04LTgtOGMtNC40MSwwLTgsMy41OS04LDhDMi4xNSw3NC44NCw1Ljc0LDc4LjQzLDEwLjE1LDc4LjQzegoJIE0xMC4xNSw2My40OWMzLjgzLDAsNi45NCwzLjExLDYuOTQsNi45NGMwLDMuODMtMy4xMSw2Ljk0LTYuOTQsNi45NGMtMy44MywwLTYuOTQtMy4xMS02Ljk0LTYuOTQKCUMzLjIxLDY2LjYsNi4zMyw2My40OSwxMC4xNSw2My40OUwxMC4xNSw2My40OXoiLz4KPC9zdmc+';
19623
+ function IcnSearch() {
19624
+ return React.createElement("div", {
19625
+ className: flairup.cx(styles$h.icnSearch)
19626
+ });
19627
+ }
19628
+ var styles$h = /*#__PURE__*/stylesheet.create({
19629
+ icnSearch: {
19630
+ '.': 'epr-icn-search',
19631
+ content: '',
19632
+ position: 'absolute',
19633
+ top: '50%',
19634
+ left: 'var(--epr-search-bar-inner-padding)',
19635
+ transform: 'translateY(-50%)',
19636
+ width: '20px',
19637
+ height: '20px',
19638
+ backgroundRepeat: 'no-repeat',
19639
+ backgroundPosition: '0 0',
19640
+ backgroundSize: '20px',
19641
+ backgroundImage: "url(" + SVGMagnifier + ")"
19642
+ },
19643
+ '.epr-dark-theme': {
19644
+ icnSearch: {
19645
+ backgroundPositionY: '-20px'
19646
+ }
19647
+ },
19648
+ '.epr-auto-theme': {
19649
+ icnSearch: {
19650
+ '@media (prefers-color-scheme: dark)': {
19651
+ backgroundPositionY: '-20px'
19652
+ }
19653
+ }
19654
+ }
19655
+ });
19360
19656
 
19361
19657
  function SearchContainer() {
19362
19658
  var searchDisabled = useSearchDisabledConfig();
@@ -19365,7 +19661,7 @@ function SearchContainer() {
19365
19661
  return null;
19366
19662
  }
19367
19663
  return React.createElement(Flex, {
19368
- className: flairup.cx(styles$c.overlay)
19664
+ className: flairup.cx(styles$i.overlay)
19369
19665
  }, React.createElement(Search, null), isSkinToneInSearch ? React.createElement(SkinTonePicker, null) : null);
19370
19666
  }
19371
19667
  function Search() {
@@ -19374,7 +19670,6 @@ function Search() {
19374
19670
  setInc = _useState[1];
19375
19671
  var closeAllOpenToggles = useCloseAllOpenToggles();
19376
19672
  var SearchInputRef = useSearchInputRef();
19377
- var clearSearch = useClearSearch();
19378
19673
  var placeholder = useSearchPlaceHolderConfig();
19379
19674
  var autoFocus = useAutoFocusSearchConfig();
19380
19675
  var _useFilter = useFilter(),
@@ -19384,7 +19679,7 @@ function Search() {
19384
19679
  var input = SearchInputRef == null ? void 0 : SearchInputRef.current;
19385
19680
  var value = input == null ? void 0 : input.value;
19386
19681
  return React.createElement(Relative, {
19387
- className: flairup.cx(styles$c.searchContainer)
19682
+ className: flairup.cx(styles$i.searchContainer)
19388
19683
  }, React.createElement(CssSearch, {
19389
19684
  value: value
19390
19685
  }), React.createElement("input", {
@@ -19392,7 +19687,7 @@ function Search() {
19392
19687
  autoFocus: autoFocus,
19393
19688
  "aria-label": 'Type to search for an emoji',
19394
19689
  onFocus: closeAllOpenToggles,
19395
- className: flairup.cx(styles$c.search),
19690
+ className: flairup.cx(styles$i.search),
19396
19691
  type: "text",
19397
19692
  "aria-controls": "epr-search-id",
19398
19693
  placeholder: placeholder,
@@ -19406,22 +19701,13 @@ function Search() {
19406
19701
  ref: SearchInputRef
19407
19702
  }), searchTerm ? React.createElement("div", {
19408
19703
  role: "status",
19409
- className: flairup.cx('epr-status-search-results', styles$c.visuallyHidden),
19704
+ className: flairup.cx('epr-status-search-results', styles$i.visuallyHidden),
19410
19705
  "aria-live": "polite",
19411
19706
  id: "epr-search-id",
19412
19707
  "aria-atomic": "true"
19413
- }, statusSearchResults) : null, React.createElement("div", {
19414
- className: flairup.cx(styles$c.icnSearch)
19415
- }), React.createElement(Button, {
19416
- className: flairup.cx(styles$c.btnClearSearch, commonInteractionStyles.visibleOnSearchOnly),
19417
- onClick: clearSearch,
19418
- "aria-label": "Clear",
19419
- title: "Clear"
19420
- }, React.createElement("div", {
19421
- className: flairup.cx(styles$c.icnClearnSearch)
19422
- })));
19708
+ }, statusSearchResults) : null, React.createElement(IcnSearch, null), React.createElement(BtnClearSearch, null));
19423
19709
  }
19424
- var styles$c = /*#__PURE__*/stylesheet.create({
19710
+ var styles$i = /*#__PURE__*/stylesheet.create({
19425
19711
  overlay: {
19426
19712
  padding: 'var(--epr-header-padding)',
19427
19713
  zIndex: 'var(--epr-header-overlay-z-index)'
@@ -19459,20 +19745,6 @@ var styles$c = /*#__PURE__*/stylesheet.create({
19459
19745
  color: 'var(--epr-search-input-placeholder-color)'
19460
19746
  }
19461
19747
  },
19462
- icnSearch: {
19463
- '.': 'epr-icn-search',
19464
- content: '',
19465
- position: 'absolute',
19466
- top: '50%',
19467
- left: 'var(--epr-search-bar-inner-padding)',
19468
- transform: 'translateY(-50%)',
19469
- width: '20px',
19470
- height: '20px',
19471
- backgroundRepeat: 'no-repeat',
19472
- backgroundPosition: '0 0',
19473
- backgroundSize: '20px',
19474
- backgroundImage: "url(" + SVGMagnifier + ")"
19475
- },
19476
19748
  btnClearSearch: {
19477
19749
  '.': 'epr-btn-clear-search',
19478
19750
  position: 'absolute',
@@ -19509,9 +19781,6 @@ var styles$c = /*#__PURE__*/stylesheet.create({
19509
19781
  }
19510
19782
  },
19511
19783
  '.epr-dark-theme': {
19512
- icnSearch: {
19513
- backgroundPositionY: '-20px'
19514
- },
19515
19784
  icnClearnSearch: {
19516
19785
  backgroundPositionY: '-40px'
19517
19786
  },
@@ -19522,11 +19791,6 @@ var styles$c = /*#__PURE__*/stylesheet.create({
19522
19791
  }
19523
19792
  },
19524
19793
  '.epr-auto-theme': {
19525
- icnSearch: {
19526
- '@media (prefers-color-scheme: dark)': {
19527
- backgroundPositionY: '-20px'
19528
- }
19529
- },
19530
19794
  icnClearnSearch: {
19531
19795
  '@media (prefers-color-scheme: dark)': {
19532
19796
  backgroundPositionY: '-40px'
@@ -19545,7 +19809,7 @@ var styles$c = /*#__PURE__*/stylesheet.create({
19545
19809
 
19546
19810
  function Header() {
19547
19811
  return React.createElement(Relative, {
19548
- className: "epr-header"
19812
+ className: flairup.cx('epr-header', commonInteractionStyles.hiddenOnReactions)
19549
19813
  }, React.createElement(SearchContainer, null), React.createElement(CategoryNavigation, null));
19550
19814
  }
19551
19815
 
@@ -19950,6 +20214,7 @@ function useOnFocus() {
19950
20214
  }, [BodyRef, emojiStyle, getEmojiUrl]);
19951
20215
  }
19952
20216
 
20217
+ var _excluded$1 = ["width", "height"];
19953
20218
  function PickerMain(_ref) {
19954
20219
  var children = _ref.children;
19955
20220
  return React.createElement(PickerContextProvider, null, React.createElement(PickerStyleTag, null), React.createElement(PickerRootElement, null, children));
@@ -19957,6 +20222,8 @@ function PickerMain(_ref) {
19957
20222
  function PickerRootElement(_ref2) {
19958
20223
  var _cx;
19959
20224
  var children = _ref2.children;
20225
+ var _useReactionsModeStat = useReactionsModeState(),
20226
+ reactionsMode = _useReactionsModeStat[0];
19960
20227
  var theme = useThemeConfig();
19961
20228
  var searchModeActive = useIsSearchMode();
19962
20229
  var PickerMainRef = usePickerMainRef();
@@ -19964,10 +20231,17 @@ function PickerRootElement(_ref2) {
19964
20231
  var style = useStyleConfig();
19965
20232
  useKeyboardNavigation();
19966
20233
  useOnFocus();
20234
+ var _ref3 = style || {},
20235
+ width = _ref3.width,
20236
+ height = _ref3.height,
20237
+ styleProps = _objectWithoutPropertiesLoose(_ref3, _excluded$1);
19967
20238
  return React.createElement("aside", {
19968
- className: flairup.cx(styles$d.main, styles$d.baseVariables, theme === exports.Theme.DARK && styles$d.darkTheme, theme === exports.Theme.AUTO && styles$d.autoThemeDark, (_cx = {}, _cx[ClassNames.searchActive] = searchModeActive, _cx), className),
20239
+ className: flairup.cx(styles$j.main, styles$j.baseVariables, theme === exports.Theme.DARK && styles$j.darkTheme, theme === exports.Theme.AUTO && styles$j.autoThemeDark, (_cx = {}, _cx[ClassNames.searchActive] = searchModeActive, _cx), reactionsMode && styles$j.reactionsMenu, className),
19969
20240
  ref: PickerMainRef,
19970
- style: style
20241
+ style: _extends({}, styleProps, !reactionsMode && {
20242
+ height: height,
20243
+ width: width
20244
+ })
19971
20245
  }, children);
19972
20246
  }
19973
20247
  var DarkTheme = {
@@ -19980,12 +20254,13 @@ var DarkTheme = {
19980
20254
  '--epr-category-label-bg-color': 'var(--epr-dark-category-label-bg-color)',
19981
20255
  '--epr-picker-border-color': 'var(--epr-dark-picker-border-color)',
19982
20256
  '--epr-bg-color': 'var(--epr-dark-bg-color)',
20257
+ '--epr-reactions-bg-color': 'var(--epr-dark-reactions-bg-color)',
19983
20258
  '--epr-search-input-bg-color-active': 'var(--epr-dark-search-input-bg-color-active)',
19984
20259
  '--epr-emoji-variation-indicator-color': 'var(--epr-dark-emoji-variation-indicator-color)',
19985
20260
  '--epr-category-icon-active-color': 'var(--epr-dark-category-icon-active-color)',
19986
20261
  '--epr-skin-tone-picker-menu-color': 'var(--epr-dark-skin-tone-picker-menu-color)'
19987
20262
  };
19988
- var styles$d = /*#__PURE__*/stylesheet.create({
20263
+ var styles$j = /*#__PURE__*/stylesheet.create({
19989
20264
  main: {
19990
20265
  '.': ['epr-main', ClassNames.emojiPicker],
19991
20266
  position: 'relative',
@@ -19997,6 +20272,7 @@ var styles$d = /*#__PURE__*/stylesheet.create({
19997
20272
  borderColor: 'var(--epr-picker-border-color)',
19998
20273
  backgroundColor: 'var(--epr-bg-color)',
19999
20274
  overflow: 'hidden',
20275
+ transition: 'all 0.3s ease-in-out, background-color 0.1s ease-in-out',
20000
20276
  // @ts-expect-error - need to work on this
20001
20277
  '*': {
20002
20278
  boxSizing: 'border-box',
@@ -20012,6 +20288,7 @@ var styles$d = /*#__PURE__*/stylesheet.create({
20012
20288
  '--epr-search-input-bg-color': '#f6f6f6',
20013
20289
  '--epr-picker-border-color': '#e7e7e7',
20014
20290
  '--epr-bg-color': '#fff',
20291
+ '--epr-reactions-bg-color': '#ffffff90',
20015
20292
  '--epr-category-icon-active-color': '#6aa8de',
20016
20293
  '--epr-skin-tone-picker-menu-color': '#ffffff95',
20017
20294
  '--epr-horizontal-padding': '10px',
@@ -20072,6 +20349,7 @@ var styles$d = /*#__PURE__*/stylesheet.create({
20072
20349
  '--epr-dark-category-label-bg-color': '#222222e6',
20073
20350
  '--epr-dark-picker-border-color': '#151617',
20074
20351
  '--epr-dark-bg-color': '#222222',
20352
+ '--epr-dark-reactions-bg-color': '#22222290',
20075
20353
  '--epr-dark-search-input-bg-color-active': 'var(--epr-dark)',
20076
20354
  '--epr-dark-emoji-variation-indicator-color': '#444',
20077
20355
  '--epr-dark-category-icon-active-color': '#3271b7',
@@ -20087,18 +20365,42 @@ var styles$d = /*#__PURE__*/stylesheet.create({
20087
20365
  darkTheme: {
20088
20366
  '.': ClassNames.darkTheme,
20089
20367
  '--': DarkTheme
20368
+ },
20369
+ reactionsMenu: {
20370
+ '.': 'epr-reactions',
20371
+ height: '50px',
20372
+ display: 'inline-flex',
20373
+ backgroundColor: 'var(--epr-reactions-bg-color)',
20374
+ // @ts-expect-error - need to work on this
20375
+ backdropFilter: 'blur(8px)',
20376
+ '--': {
20377
+ '--epr-picker-border-radius': '50px'
20378
+ }
20090
20379
  }
20091
20380
  });
20092
20381
 
20093
20382
  function EmojiPicker(props) {
20094
- return React.createElement(ElementRefContextProvider, null, React.createElement(PickerConfigProvider, Object.assign({}, props), React.createElement(PickerMain, null, React.createElement(Header, null), React.createElement(Body, null), React.createElement(Preview, null))));
20383
+ return React.createElement(ElementRefContextProvider, null, React.createElement(PickerConfigProvider, Object.assign({}, props), React.createElement(PickerMain, null, React.createElement(ContentControl, null))));
20384
+ }
20385
+ function ContentControl() {
20386
+ var _useReactionsModeStat = useReactionsModeState(),
20387
+ reactionsDefaultOpen = _useReactionsModeStat[0];
20388
+ var _React$useState = React.useState(!reactionsDefaultOpen),
20389
+ renderAll = _React$useState[0],
20390
+ setRenderAll = _React$useState[1];
20391
+ React.useEffect(function () {
20392
+ if (!renderAll) {
20393
+ setRenderAll(true);
20394
+ }
20395
+ }, []);
20396
+ return React.createElement(React.Fragment, null, React.createElement(Reactions, null), renderAll ? React.createElement(React.Fragment, null, React.createElement(Header, null), React.createElement(Body, null), React.createElement(Preview, null)) : null);
20095
20397
  }
20096
20398
  // eslint-disable-next-line complexity
20097
20399
  var EmojiPickerReact = /*#__PURE__*/React.memo(EmojiPicker, function (prev, next) {
20098
20400
  var _prev$customEmojis, _next$customEmojis;
20099
20401
  var prevCustomEmojis = (_prev$customEmojis = prev.customEmojis) != null ? _prev$customEmojis : [];
20100
20402
  var nextCustomEmojis = (_next$customEmojis = next.customEmojis) != null ? _next$customEmojis : [];
20101
- return prev.emojiVersion === next.emojiVersion && prev.searchPlaceHolder === next.searchPlaceHolder && prev.searchPlaceholder === next.searchPlaceholder && prev.defaultSkinTone === next.defaultSkinTone && prev.skinTonesDisabled === next.skinTonesDisabled && prev.autoFocusSearch === next.autoFocusSearch && prev.emojiStyle === next.emojiStyle && prev.theme === next.theme && prev.suggestedEmojisMode === next.suggestedEmojisMode && prev.lazyLoadEmojis === next.lazyLoadEmojis && prev.className === next.className && prev.height === next.height && prev.width === next.width && prev.style === next.style && prev.searchDisabled === next.searchDisabled && prev.skinTonePickerLocation === next.skinTonePickerLocation && prevCustomEmojis.length === nextCustomEmojis.length;
20403
+ return prev.emojiVersion === next.emojiVersion && prev.reactionsDefaultOpen === next.reactionsDefaultOpen && prev.searchPlaceHolder === next.searchPlaceHolder && prev.searchPlaceholder === next.searchPlaceholder && prev.defaultSkinTone === next.defaultSkinTone && prev.skinTonesDisabled === next.skinTonesDisabled && prev.autoFocusSearch === next.autoFocusSearch && prev.emojiStyle === next.emojiStyle && prev.theme === next.theme && prev.suggestedEmojisMode === next.suggestedEmojisMode && prev.lazyLoadEmojis === next.lazyLoadEmojis && prev.className === next.className && prev.height === next.height && prev.width === next.width && prev.style === next.style && prev.searchDisabled === next.searchDisabled && prev.skinTonePickerLocation === next.skinTonePickerLocation && prevCustomEmojis.length === nextCustomEmojis.length;
20102
20404
  });
20103
20405
 
20104
20406
  var ErrorBoundary = /*#__PURE__*/function (_React$Component) {