@atlaskit/emoji 69.0.1 → 69.0.3

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 (125) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/afm-cc/tsconfig.json +3 -0
  3. package/afm-jira/tsconfig.json +3 -0
  4. package/afm-post-office/tsconfig.json +3 -0
  5. package/dist/cjs/components/compiled/common/EmojiActions.js +1 -1
  6. package/dist/cjs/components/compiled/common/EmojiPreviewComponent.compiled.css +0 -1
  7. package/dist/cjs/components/compiled/common/EmojiPreviewComponent.js +1 -1
  8. package/dist/cjs/components/compiled/picker/CategorySelector.compiled.css +24 -0
  9. package/dist/cjs/components/compiled/picker/CategorySelector.js +161 -0
  10. package/dist/cjs/components/compiled/picker/EmojiPicker.compiled.css +12 -0
  11. package/dist/cjs/components/compiled/picker/EmojiPicker.js +109 -0
  12. package/dist/cjs/components/compiled/picker/EmojiPickerCategoryHeading.compiled.css +9 -0
  13. package/dist/cjs/components/compiled/picker/EmojiPickerCategoryHeading.js +43 -0
  14. package/dist/cjs/components/compiled/picker/EmojiPickerComponent.compiled.css +20 -0
  15. package/dist/cjs/components/compiled/picker/EmojiPickerComponent.js +574 -0
  16. package/dist/cjs/components/compiled/picker/EmojiPickerEmojiRow.compiled.css +35 -0
  17. package/dist/cjs/components/compiled/picker/EmojiPickerEmojiRow.js +76 -0
  18. package/dist/cjs/components/compiled/picker/EmojiPickerFooter.compiled.css +5 -0
  19. package/dist/cjs/components/compiled/picker/EmojiPickerFooter.js +33 -0
  20. package/dist/cjs/components/compiled/picker/EmojiPickerListSearch.compiled.css +23 -0
  21. package/dist/cjs/components/compiled/picker/EmojiPickerListSearch.js +93 -0
  22. package/dist/cjs/components/compiled/picker/EmojiPickerTabPanel.compiled.css +6 -0
  23. package/dist/cjs/components/compiled/picker/EmojiPickerTabPanel.js +60 -0
  24. package/dist/cjs/components/compiled/picker/EmojiPickerVirtualItems.compiled.css +8 -0
  25. package/dist/cjs/components/compiled/picker/EmojiPickerVirtualItems.js +86 -0
  26. package/dist/cjs/components/compiled/picker/VirtualList.compiled.css +10 -0
  27. package/dist/cjs/components/compiled/picker/VirtualList.js +303 -0
  28. package/dist/cjs/components/picker/EmojiPickerFooter.js +0 -2
  29. package/dist/cjs/components/picker/EmojiPickerList.js +219 -145
  30. package/dist/cjs/components/picker/EmojiPickerTabPanel.js +67 -0
  31. package/dist/cjs/components/picker/styles.js +1 -10
  32. package/dist/cjs/index.js +4 -6
  33. package/dist/cjs/picker.js +5 -7
  34. package/dist/cjs/util/analytics/analytics.js +1 -1
  35. package/dist/es2019/components/compiled/common/EmojiActions.js +1 -1
  36. package/dist/es2019/components/compiled/common/EmojiPreviewComponent.compiled.css +0 -1
  37. package/dist/es2019/components/compiled/common/EmojiPreviewComponent.js +1 -1
  38. package/dist/es2019/components/compiled/picker/CategorySelector.compiled.css +24 -0
  39. package/dist/es2019/components/compiled/picker/CategorySelector.js +136 -0
  40. package/dist/es2019/components/compiled/picker/EmojiPicker.compiled.css +12 -0
  41. package/dist/es2019/components/compiled/picker/EmojiPicker.js +67 -0
  42. package/dist/es2019/components/compiled/picker/EmojiPickerCategoryHeading.compiled.css +9 -0
  43. package/dist/es2019/components/compiled/picker/EmojiPickerCategoryHeading.js +30 -0
  44. package/dist/es2019/components/compiled/picker/EmojiPickerComponent.compiled.css +19 -0
  45. package/dist/es2019/components/compiled/picker/EmojiPickerComponent.js +506 -0
  46. package/dist/es2019/components/compiled/picker/EmojiPickerEmojiRow.compiled.css +35 -0
  47. package/dist/es2019/components/compiled/picker/EmojiPickerEmojiRow.js +69 -0
  48. package/dist/es2019/components/compiled/picker/EmojiPickerFooter.compiled.css +5 -0
  49. package/dist/es2019/components/compiled/picker/EmojiPickerFooter.js +19 -0
  50. package/dist/es2019/components/compiled/picker/EmojiPickerListSearch.compiled.css +23 -0
  51. package/dist/es2019/components/compiled/picker/EmojiPickerListSearch.js +79 -0
  52. package/dist/es2019/components/compiled/picker/EmojiPickerTabPanel.compiled.css +6 -0
  53. package/dist/es2019/components/compiled/picker/EmojiPickerTabPanel.js +39 -0
  54. package/dist/es2019/components/compiled/picker/EmojiPickerVirtualItems.compiled.css +8 -0
  55. package/dist/es2019/components/compiled/picker/EmojiPickerVirtualItems.js +51 -0
  56. package/dist/es2019/components/compiled/picker/VirtualList.compiled.css +10 -0
  57. package/dist/es2019/components/compiled/picker/VirtualList.js +288 -0
  58. package/dist/es2019/components/picker/EmojiPickerFooter.js +1 -1
  59. package/dist/es2019/components/picker/EmojiPickerList.js +186 -114
  60. package/dist/es2019/components/picker/EmojiPickerTabPanel.js +48 -0
  61. package/dist/es2019/components/picker/styles.js +0 -9
  62. package/dist/es2019/index.js +2 -1
  63. package/dist/es2019/picker.js +5 -1
  64. package/dist/es2019/util/analytics/analytics.js +1 -1
  65. package/dist/esm/components/compiled/common/EmojiActions.js +1 -1
  66. package/dist/esm/components/compiled/common/EmojiPreviewComponent.compiled.css +0 -1
  67. package/dist/esm/components/compiled/common/EmojiPreviewComponent.js +1 -1
  68. package/dist/esm/components/compiled/picker/CategorySelector.compiled.css +24 -0
  69. package/dist/esm/components/compiled/picker/CategorySelector.js +151 -0
  70. package/dist/esm/components/compiled/picker/EmojiPicker.compiled.css +12 -0
  71. package/dist/esm/components/compiled/picker/EmojiPicker.js +97 -0
  72. package/dist/esm/components/compiled/picker/EmojiPickerCategoryHeading.compiled.css +9 -0
  73. package/dist/esm/components/compiled/picker/EmojiPickerCategoryHeading.js +34 -0
  74. package/dist/esm/components/compiled/picker/EmojiPickerComponent.compiled.css +20 -0
  75. package/dist/esm/components/compiled/picker/EmojiPickerComponent.js +564 -0
  76. package/dist/esm/components/compiled/picker/EmojiPickerEmojiRow.compiled.css +35 -0
  77. package/dist/esm/components/compiled/picker/EmojiPickerEmojiRow.js +66 -0
  78. package/dist/esm/components/compiled/picker/EmojiPickerFooter.compiled.css +5 -0
  79. package/dist/esm/components/compiled/picker/EmojiPickerFooter.js +24 -0
  80. package/dist/esm/components/compiled/picker/EmojiPickerListSearch.compiled.css +23 -0
  81. package/dist/esm/components/compiled/picker/EmojiPickerListSearch.js +83 -0
  82. package/dist/esm/components/compiled/picker/EmojiPickerTabPanel.compiled.css +6 -0
  83. package/dist/esm/components/compiled/picker/EmojiPickerTabPanel.js +50 -0
  84. package/dist/esm/components/compiled/picker/EmojiPickerVirtualItems.compiled.css +8 -0
  85. package/dist/esm/components/compiled/picker/EmojiPickerVirtualItems.js +76 -0
  86. package/dist/esm/components/compiled/picker/VirtualList.compiled.css +10 -0
  87. package/dist/esm/components/compiled/picker/VirtualList.js +293 -0
  88. package/dist/esm/components/picker/EmojiPickerFooter.js +1 -1
  89. package/dist/esm/components/picker/EmojiPickerList.js +219 -147
  90. package/dist/esm/components/picker/EmojiPickerTabPanel.js +59 -0
  91. package/dist/esm/components/picker/styles.js +0 -9
  92. package/dist/esm/index.js +2 -1
  93. package/dist/esm/picker.js +5 -1
  94. package/dist/esm/util/analytics/analytics.js +1 -1
  95. package/dist/types/components/compiled/picker/CategorySelector.d.ts +17 -0
  96. package/dist/types/components/compiled/picker/EmojiPicker.d.ts +44 -0
  97. package/dist/types/components/compiled/picker/EmojiPickerCategoryHeading.d.ts +13 -0
  98. package/dist/types/components/compiled/picker/EmojiPickerComponent.d.ts +24 -0
  99. package/dist/types/components/compiled/picker/EmojiPickerEmojiRow.d.ts +17 -0
  100. package/dist/types/components/compiled/picker/EmojiPickerFooter.d.ts +8 -0
  101. package/dist/types/components/compiled/picker/EmojiPickerListSearch.d.ts +11 -0
  102. package/dist/types/components/compiled/picker/EmojiPickerTabPanel.d.ts +21 -0
  103. package/dist/types/components/compiled/picker/EmojiPickerVirtualItems.d.ts +35 -0
  104. package/dist/types/components/compiled/picker/VirtualList.d.ts +42 -0
  105. package/dist/types/components/picker/EmojiPickerList.d.ts +1 -6
  106. package/dist/types/components/picker/EmojiPickerTabPanel.d.ts +21 -0
  107. package/dist/types/components/picker/styles.d.ts +0 -1
  108. package/dist/types/index.d.ts +2 -1
  109. package/dist/types/picker.d.ts +3 -1
  110. package/dist/types-ts4.5/components/compiled/picker/CategorySelector.d.ts +17 -0
  111. package/dist/types-ts4.5/components/compiled/picker/EmojiPicker.d.ts +44 -0
  112. package/dist/types-ts4.5/components/compiled/picker/EmojiPickerCategoryHeading.d.ts +13 -0
  113. package/dist/types-ts4.5/components/compiled/picker/EmojiPickerComponent.d.ts +24 -0
  114. package/dist/types-ts4.5/components/compiled/picker/EmojiPickerEmojiRow.d.ts +17 -0
  115. package/dist/types-ts4.5/components/compiled/picker/EmojiPickerFooter.d.ts +8 -0
  116. package/dist/types-ts4.5/components/compiled/picker/EmojiPickerListSearch.d.ts +11 -0
  117. package/dist/types-ts4.5/components/compiled/picker/EmojiPickerTabPanel.d.ts +21 -0
  118. package/dist/types-ts4.5/components/compiled/picker/EmojiPickerVirtualItems.d.ts +35 -0
  119. package/dist/types-ts4.5/components/compiled/picker/VirtualList.d.ts +42 -0
  120. package/dist/types-ts4.5/components/picker/EmojiPickerList.d.ts +1 -6
  121. package/dist/types-ts4.5/components/picker/EmojiPickerTabPanel.d.ts +21 -0
  122. package/dist/types-ts4.5/components/picker/styles.d.ts +0 -1
  123. package/dist/types-ts4.5/index.d.ts +2 -1
  124. package/dist/types-ts4.5/picker.d.ts +3 -1
  125. package/package.json +4 -3
@@ -0,0 +1,5 @@
1
+
2
+ ._x3do18ew{border-top:var(--_m6cf7x)}._16jlidpf{flex-grow:0}
3
+ ._16qs4j53{box-shadow:var(--_cfawkn)}
4
+ ._1o9zidpf{flex-shrink:0}
5
+ ._i0dl1wug{flex-basis:auto}
@@ -0,0 +1,33 @@
1
+ /* EmojiPickerFooter.tsx generated by @compiled/babel-plugin v0.36.1 */
2
+ "use strict";
3
+
4
+ var _typeof = require("@babel/runtime/helpers/typeof");
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.emojiPickerFooterTestId = exports.default = void 0;
9
+ require("./EmojiPickerFooter.compiled.css");
10
+ var _react = _interopRequireWildcard(require("react"));
11
+ var React = _react;
12
+ var _runtime = require("@compiled/react/runtime");
13
+ var _colors = require("@atlaskit/theme/colors");
14
+ var _EmojiPreviewComponent = require("../common/EmojiPreviewComponent");
15
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
16
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
17
+ var emojiPickerFooter = null;
18
+ var emojiPickerFooterWithTopShadow = null;
19
+ var emojiPickerFooterTestId = exports.emojiPickerFooterTestId = 'emoji-picker-footer';
20
+ var EmojiPickerFooter = function EmojiPickerFooter(_ref) {
21
+ var selectedEmoji = _ref.selectedEmoji;
22
+ return /*#__PURE__*/React.createElement("div", {
23
+ "data-testid": emojiPickerFooterTestId,
24
+ className: (0, _runtime.ax)(["_16jlidpf _1o9zidpf _i0dl1wug", "_x3do18ew _16qs4j53"]),
25
+ style: {
26
+ "--_m6cf7x": (0, _runtime.ix)("2px solid ".concat("var(--ds-border, ".concat(_colors.N30A, ")"))),
27
+ "--_cfawkn": (0, _runtime.ix)("0px -1px 1px 0px ".concat("var(--ds-border, rgba(0, 0, 0, 0.1))"))
28
+ }
29
+ }, selectedEmoji && /*#__PURE__*/React.createElement(_EmojiPreviewComponent.EmojiPreviewComponent, {
30
+ emoji: selectedEmoji
31
+ }));
32
+ };
33
+ var _default = exports.default = /*#__PURE__*/(0, _react.memo)(EmojiPickerFooter);
@@ -0,0 +1,23 @@
1
+ ._11c82smr{font:var(--ds-font-body,normal 400 14px/20px ui-sans-serif,-apple-system,BlinkMacSystemFont,"Segoe UI",Ubuntu,"Helvetica Neue",sans-serif)}
2
+ ._12ji1r31{outline-color:currentColor}
3
+ ._12y31o36{outline-width:medium}
4
+ ._13xeglyw:invalid{box-shadow:none}
5
+ ._18u01i6y{margin-left:var(--ds-space-negative-025,-2px)}
6
+ ._19bvutpp{padding-left:var(--ds-space-150,9pt)}
7
+ ._1bsb1osq{width:100%}
8
+ ._1e0cglyw{display:none}
9
+ ._1goxglyw::-ms-clear{display:none}
10
+ ._1q51t94y{padding-block-start:1px}
11
+ ._1qu2glyw{outline-style:none}
12
+ ._3um015vq{visibility:hidden}
13
+ ._80om1kw7{cursor:inherit}
14
+ ._85i5v77o{padding-block-end:var(--ds-space-025,2px)}
15
+ ._bozg12x7{padding-inline-start:var(--ds-space-075,6px)}
16
+ ._ca0qutpp{padding-top:var(--ds-space-150,9pt)}
17
+ ._n3tdutpp{padding-bottom:var(--ds-space-150,9pt)}
18
+ ._syaz1kw7{color:inherit}
19
+ ._tzy4105o{opacity:.5}
20
+ ._tzy4idpf{opacity:0}
21
+ ._u5f3utpp{padding-right:var(--ds-space-150,9pt)}
22
+ ._vchhusvi{box-sizing:border-box}
23
+ ._y4tize3t{padding-inline-end:var(--ds-space-0,0)}
@@ -0,0 +1,93 @@
1
+ /* EmojiPickerListSearch.tsx generated by @compiled/babel-plugin v0.36.1 */
2
+ "use strict";
3
+
4
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
5
+ var _typeof = require("@babel/runtime/helpers/typeof");
6
+ Object.defineProperty(exports, "__esModule", {
7
+ value: true
8
+ });
9
+ exports.emojiPickerSearchTestId = exports.EmojiPickerListSearch = void 0;
10
+ require("./EmojiPickerListSearch.compiled.css");
11
+ var _runtime = require("@compiled/react/runtime");
12
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
13
+ var _search = _interopRequireDefault(require("@atlaskit/icon/core/migration/search"));
14
+ var _textfield = _interopRequireDefault(require("@atlaskit/textfield"));
15
+ var _visuallyHidden = _interopRequireDefault(require("@atlaskit/visually-hidden"));
16
+ var _react = _interopRequireWildcard(require("react"));
17
+ var _reactIntlNext = require("react-intl-next");
18
+ var _useDebounce = require("use-debounce");
19
+ var _constants = require("../../../util/constants");
20
+ var _i18n = require("../../i18n");
21
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
22
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
23
+ var input = null;
24
+ var pickerSearch = null;
25
+ var searchIcon = null;
26
+ var hidden = null;
27
+ var emojiPickerSearchTestId = exports.emojiPickerSearchTestId = 'emoji-picker-search';
28
+ var EmojiPickerListSearch = exports.EmojiPickerListSearch = function EmojiPickerListSearch(props) {
29
+ var style = props.style,
30
+ query = props.query,
31
+ _props$isVisible = props.isVisible,
32
+ isVisible = _props$isVisible === void 0 ? true : _props$isVisible,
33
+ resultsCount = props.resultsCount,
34
+ onChange = props.onChange;
35
+ var textRef = (0, _react.useRef)(null);
36
+ var _useState = (0, _react.useState)(false),
37
+ _useState2 = (0, _slicedToArray2.default)(_useState, 2),
38
+ dirty = _useState2[0],
39
+ setDirty = _useState2[1];
40
+ var _useIntl = (0, _reactIntlNext.useIntl)(),
41
+ formatMessage = _useIntl.formatMessage;
42
+
43
+ // Debounce callback
44
+ var _useDebouncedCallback = (0, _useDebounce.useDebouncedCallback)(function (value) {
45
+ onChange(value);
46
+ setDirty(true);
47
+ },
48
+ // delay in ms
49
+ _constants.EMOJI_SEARCH_DEBOUNCE),
50
+ _useDebouncedCallback2 = (0, _slicedToArray2.default)(_useDebouncedCallback, 1),
51
+ debouncedSearch = _useDebouncedCallback2[0];
52
+ var handleOnChange = function handleOnChange(e) {
53
+ debouncedSearch(e.target.value);
54
+ };
55
+ (0, _react.useLayoutEffect)(function () {
56
+ requestAnimationFrame(function () {
57
+ if (textRef) {
58
+ var _textRef$current;
59
+ (_textRef$current = textRef.current) === null || _textRef$current === void 0 || _textRef$current.focus();
60
+ }
61
+ });
62
+ }, []);
63
+ return /*#__PURE__*/_react.default.createElement("div", {
64
+ style: style,
65
+ className: (0, _runtime.ax)(["_vchhusvi _ca0qutpp _n3tdutpp _19bvutpp _u5f3utpp _1bsb1osq", !isVisible && "_tzy4idpf _3um015vq _1e0cglyw"])
66
+ }, /*#__PURE__*/_react.default.createElement(_visuallyHidden.default, {
67
+ id: "emoji-search-results-status",
68
+ role: "status"
69
+ }, dirty && query === '' && formatMessage(_i18n.messages.searchResultsStatusSeeAll), query !== '' && formatMessage(_i18n.messages.searchResultsStatusSeeAll, {
70
+ // change to messages.searchResultsStatus once translated
71
+ count: resultsCount
72
+ })), /*#__PURE__*/_react.default.createElement(_textfield.default, {
73
+ role: "searchbox",
74
+ "aria-label": formatMessage(_i18n.messages.searchLabel),
75
+ autoComplete: "off",
76
+ name: "search",
77
+ placeholder: "".concat(formatMessage(_i18n.messages.searchPlaceholder), "..."),
78
+ defaultValue: query || '',
79
+ onChange: handleOnChange,
80
+ elemBeforeInput: /*#__PURE__*/_react.default.createElement("span", {
81
+ className: (0, _runtime.ax)(["_tzy4105o _18u01i6y"])
82
+ }, /*#__PURE__*/_react.default.createElement(_search.default, {
83
+ LEGACY_margin: "0 0 0 2px",
84
+ color: "currentColor",
85
+ spacing: "spacious",
86
+ label: ""
87
+ })),
88
+ testId: emojiPickerSearchTestId,
89
+ ref: textRef,
90
+ isCompact: true,
91
+ className: (0, _runtime.ax)(["_11c82smr _12ji1r31 _1qu2glyw _12y31o36 _vchhusvi _syaz1kw7 _80om1kw7 _1q51t94y _y4tize3t _85i5v77o _bozg12x7 _1bsb1osq _13xeglyw _1goxglyw"])
92
+ }));
93
+ };
@@ -0,0 +1,6 @@
1
+ ._16jlkb7n{flex-grow:1}
2
+ ._1e0c1txw{display:flex}
3
+ ._1o9zkb7n{flex-shrink:1}
4
+ ._2lx21bp4{flex-direction:column}
5
+ ._4t3iidpf{height:0}
6
+ ._i0dl1wug{flex-basis:auto}
@@ -0,0 +1,60 @@
1
+ /* EmojiPickerTabPanel.tsx generated by @compiled/babel-plugin v0.36.1 */
2
+ "use strict";
3
+
4
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
5
+ var _typeof = require("@babel/runtime/helpers/typeof");
6
+ Object.defineProperty(exports, "__esModule", {
7
+ value: true
8
+ });
9
+ exports.default = void 0;
10
+ require("./EmojiPickerTabPanel.compiled.css");
11
+ var _runtime = require("@compiled/react/runtime");
12
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
13
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
14
+ var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
15
+ var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
16
+ var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
17
+ var _react = _interopRequireWildcard(require("react"));
18
+ var _visuallyHidden = _interopRequireDefault(require("@atlaskit/visually-hidden"));
19
+ var _reactIntlNext = require("react-intl-next");
20
+ var _i18n = require("../../i18n");
21
+ var _EmojiPickerList = require("../../picker/EmojiPickerList");
22
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
23
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
24
+ function _callSuper(t, o, e) { return o = (0, _getPrototypeOf2.default)(o), (0, _possibleConstructorReturn2.default)(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], (0, _getPrototypeOf2.default)(t).constructor) : o.apply(t, e)); }
25
+ function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
26
+ var emojiPickerList = null;
27
+
28
+ /**
29
+ * TODO: have to use class component here as unit test is relying on ref.root. Will refactor this whole file + EmojiPickerList to functional component in future
30
+ * ticket: COLLAB-2317
31
+ */
32
+ var EmojiPickerTabPanelInternal = /*#__PURE__*/function (_PureComponent) {
33
+ function EmojiPickerTabPanelInternal() {
34
+ (0, _classCallCheck2.default)(this, EmojiPickerTabPanelInternal);
35
+ return _callSuper(this, EmojiPickerTabPanelInternal, arguments);
36
+ }
37
+ (0, _inherits2.default)(EmojiPickerTabPanelInternal, _PureComponent);
38
+ return (0, _createClass2.default)(EmojiPickerTabPanelInternal, [{
39
+ key: "render",
40
+ value: function render() {
41
+ var _this$props = this.props,
42
+ formatMessage = _this$props.intl.formatMessage,
43
+ children = _this$props.children,
44
+ showSearchResults = _this$props.showSearchResults;
45
+ return /*#__PURE__*/_react.default.createElement("div", {
46
+ ref: "root",
47
+ "data-testid": _EmojiPickerList.RENDER_EMOJI_PICKER_LIST_TESTID,
48
+ id: _EmojiPickerList.RENDER_EMOJI_PICKER_LIST_TESTID,
49
+ role: "tabpanel",
50
+ "aria-label": formatMessage(_i18n.messages.emojiPickerListPanel),
51
+ className: (0, _runtime.ax)(["_16jlkb7n _1o9zkb7n _i0dl1wug _1e0c1txw _2lx21bp4 _4t3iidpf"])
52
+ }, /*#__PURE__*/_react.default.createElement(_visuallyHidden.default, {
53
+ id: "emoji-picker-table-description"
54
+ }, formatMessage(_i18n.messages.emojiPickerGrid, {
55
+ showSearchResults: showSearchResults
56
+ })), children);
57
+ }
58
+ }]);
59
+ }(_react.PureComponent);
60
+ var _default = exports.default = (0, _reactIntlNext.injectIntl)(EmojiPickerTabPanelInternal);
@@ -0,0 +1,8 @@
1
+ ._1bah1h6o{justify-content:center}
2
+ ._1bsb1osq{width:100%}
3
+ ._1e0c1txw{display:flex}
4
+ ._1t3b1wug >div{flex-basis:auto}
5
+ ._4cvr1h6o{align-items:center}
6
+ ._4t3i1w81{height:150px}
7
+ ._nphsidpf >div{flex-grow:0}
8
+ ._t1edidpf >div{flex-shrink:0}
@@ -0,0 +1,86 @@
1
+ /* EmojiPickerVirtualItems.tsx generated by @compiled/babel-plugin v0.36.1 */
2
+ "use strict";
3
+
4
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
5
+ var _typeof = require("@babel/runtime/helpers/typeof");
6
+ Object.defineProperty(exports, "__esModule", {
7
+ value: true
8
+ });
9
+ exports.virtualItemRenderer = exports.LoadingItem = exports.EmojisRowItem = exports.CategoryHeadingItem = exports.AbstractItem = void 0;
10
+ require("./EmojiPickerVirtualItems.compiled.css");
11
+ var React = _interopRequireWildcard(require("react"));
12
+ var _runtime = require("@compiled/react/runtime");
13
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
14
+ var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
15
+ var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
16
+ var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
17
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
18
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
19
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
20
+ var _spinner = _interopRequireDefault(require("@atlaskit/spinner"));
21
+ var _EmojiPickerCategoryHeading = _interopRequireDefault(require("./EmojiPickerCategoryHeading"));
22
+ var _EmojiPickerEmojiRow = _interopRequireDefault(require("./EmojiPickerEmojiRow"));
23
+ var _EmojiPickerSizes = require("../../picker/EmojiPickerSizes");
24
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
25
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
26
+ function _callSuper(t, o, e) { return o = (0, _getPrototypeOf2.default)(o), (0, _possibleConstructorReturn2.default)(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], (0, _getPrototypeOf2.default)(t).constructor) : o.apply(t, e)); }
27
+ function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
28
+ var emojiPickerSpinner = null;
29
+ var AbstractItem = exports.AbstractItem = /*#__PURE__*/(0, _createClass2.default)(function AbstractItem(props, height) {
30
+ (0, _classCallCheck2.default)(this, AbstractItem);
31
+ this.props = props;
32
+ this.height = height;
33
+ });
34
+ var EmojisRowItem = exports.EmojisRowItem = /*#__PURE__*/function (_AbstractItem) {
35
+ function EmojisRowItem(props) {
36
+ var _this;
37
+ (0, _classCallCheck2.default)(this, EmojisRowItem);
38
+ _this = _callSuper(this, EmojisRowItem, [props, _EmojiPickerSizes.sizes.emojiRowHeight]);
39
+ (0, _defineProperty2.default)(_this, "renderItem", function (context) {
40
+ return /*#__PURE__*/React.createElement(_EmojiPickerEmojiRow.default, (0, _extends2.default)({}, _this.props, {
41
+ virtualItemContext: context
42
+ }));
43
+ });
44
+ return _this;
45
+ }
46
+ (0, _inherits2.default)(EmojisRowItem, _AbstractItem);
47
+ return (0, _createClass2.default)(EmojisRowItem);
48
+ }(AbstractItem);
49
+ var LoadingItem = exports.LoadingItem = /*#__PURE__*/function (_AbstractItem2) {
50
+ function LoadingItem() {
51
+ var _this2;
52
+ (0, _classCallCheck2.default)(this, LoadingItem);
53
+ _this2 = _callSuper(this, LoadingItem, [{}, _EmojiPickerSizes.sizes.loadingRowHeight]);
54
+ (0, _defineProperty2.default)(_this2, "renderItem", function () {
55
+ return /*#__PURE__*/React.createElement("div", {
56
+ className: (0, _runtime.ax)(["_1e0c1txw _1bsb1osq _4t3i1w81 _1bah1h6o _4cvr1h6o _nphsidpf _t1edidpf _1t3b1wug"])
57
+ }, /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement(_spinner.default, {
58
+ size: "medium"
59
+ })));
60
+ });
61
+ return _this2;
62
+ }
63
+ (0, _inherits2.default)(LoadingItem, _AbstractItem2);
64
+ return (0, _createClass2.default)(LoadingItem);
65
+ }(AbstractItem);
66
+ var CategoryHeadingItem = exports.CategoryHeadingItem = /*#__PURE__*/function (_AbstractItem3) {
67
+ function CategoryHeadingItem(props) {
68
+ var _this3;
69
+ (0, _classCallCheck2.default)(this, CategoryHeadingItem);
70
+ _this3 = _callSuper(this, CategoryHeadingItem, [props, _EmojiPickerSizes.sizes.categoryHeadingHeight]);
71
+ (0, _defineProperty2.default)(_this3, "renderItem", function () {
72
+ return /*#__PURE__*/React.createElement(_EmojiPickerCategoryHeading.default, _this3.props);
73
+ });
74
+ return _this3;
75
+ }
76
+ (0, _inherits2.default)(CategoryHeadingItem, _AbstractItem3);
77
+ return (0, _createClass2.default)(CategoryHeadingItem);
78
+ }(AbstractItem);
79
+ var virtualItemRenderer = exports.virtualItemRenderer = function virtualItemRenderer(rows, context) {
80
+ var index = context.index,
81
+ key = context.key;
82
+ var row = rows[index];
83
+ return /*#__PURE__*/React.createElement("div", {
84
+ key: key
85
+ }, row && row.renderItem(context));
86
+ };
@@ -0,0 +1,10 @@
1
+ ._154iidpf{top:0}
2
+ ._18m91wug{overflow-y:auto}
3
+ ._1bsb1osq{width:100%}
4
+ ._1ltvidpf{left:0}
5
+ ._1reo15vq{overflow-x:hidden}
6
+ ._kqswstnw{position:absolute}
7
+ ._n3tdu2gc{padding-bottom:var(--ds-space-100,8px)}
8
+ ._1hvw1o36:focus{outline-width:medium}
9
+ ._49pcglyw:focus{outline-style:none}
10
+ ._nt751r31:focus{outline-color:currentColor}
@@ -0,0 +1,303 @@
1
+ /* VirtualList.tsx generated by @compiled/babel-plugin v0.36.1 */
2
+ "use strict";
3
+
4
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
5
+ var _typeof = require("@babel/runtime/helpers/typeof");
6
+ Object.defineProperty(exports, "__esModule", {
7
+ value: true
8
+ });
9
+ exports.virtualListScrollContainerTestId = exports.VirtualList = void 0;
10
+ require("./VirtualList.compiled.css");
11
+ var _runtime = require("@compiled/react/runtime");
12
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
13
+ var _react = _interopRequireWildcard(require("react"));
14
+ var _reactVirtual = require("@tanstack/react-virtual");
15
+ var _useEmojiPickerListContext = require("../../../hooks/useEmojiPickerListContext");
16
+ var _constants = require("../../../util/constants");
17
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
18
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
19
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
20
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
21
+ var virtualList = null;
22
+ var virtualRowStyle = null;
23
+ var virtualListScrollContainerTestId = exports.virtualListScrollContainerTestId = 'virtual-list-scroll-container';
24
+ var VirtualList = exports.VirtualList = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
25
+ var parentRef = _react.default.useRef(null);
26
+ var virtualistItemsRef = _react.default.useRef(null);
27
+ var rowRenderer = props.rowRenderer,
28
+ onRowsRendered = props.onRowsRendered,
29
+ scrollToAlignment = props.scrollToAlignment,
30
+ width = props.width,
31
+ height = props.height,
32
+ rowCount = props.rowCount;
33
+ var _useEmojiPickerListCo = (0, _useEmojiPickerListContext.useEmojiPickerListContext)(),
34
+ currentEmojisFocus = _useEmojiPickerListCo.currentEmojisFocus,
35
+ setEmojisFocus = _useEmojiPickerListCo.setEmojisFocus;
36
+ var getVirtualizerOptions = function getVirtualizerOptions() {
37
+ var rowCount = props.rowCount,
38
+ rowHeight = props.rowHeight,
39
+ overscanRowCount = props.overscanRowCount;
40
+ return {
41
+ count: rowCount,
42
+ getScrollElement: function getScrollElement() {
43
+ return parentRef.current;
44
+ },
45
+ estimateSize: rowHeight,
46
+ overscan: overscanRowCount,
47
+ onChange: function onChange() {
48
+ var startIndex = getFirstVisibleListElementIndex();
49
+ onRowsRendered({
50
+ startIndex: startIndex
51
+ });
52
+ },
53
+ scrollPaddingStart: 28,
54
+ scrollPaddingEnd: 28
55
+ };
56
+ };
57
+ var rowVirtualizer = (0, _reactVirtual.useVirtualizer)(getVirtualizerOptions());
58
+ var isElementVisible = function isElementVisible(element) {
59
+ var parent = parentRef.current;
60
+ var elementRect = element.getBoundingClientRect();
61
+ var parentRect = parent.getBoundingClientRect();
62
+ var elemTop = elementRect.top;
63
+ var elemBottom = elementRect.bottom;
64
+ var parentTop = parentRect.top;
65
+ var parentBottom = parentRect.bottom;
66
+
67
+ // Only completely visible elements return true:
68
+ var isVisible = elemTop >= parentTop && elemBottom <= parentBottom;
69
+ return isVisible;
70
+ };
71
+ var getFirstVisibleListElementIndex = (0, _react.useCallback)(function () {
72
+ var _parentRef$current;
73
+ var virtualList = rowVirtualizer.getVirtualItems();
74
+ var renderedElements = (_parentRef$current = parentRef.current) === null || _parentRef$current === void 0 || (_parentRef$current = _parentRef$current.firstChild) === null || _parentRef$current === void 0 ? void 0 : _parentRef$current.childNodes;
75
+ if (virtualList.length === 0 || !renderedElements || renderedElements.length === 0) {
76
+ return 0;
77
+ }
78
+ // Convert NodeListOf<ChildNodes> to ChildNodes[]
79
+ var renderedElementsToArray = Array.from(renderedElements);
80
+ var firstVisibleIndex = renderedElementsToArray.findIndex(function (elem) {
81
+ return isElementVisible(elem);
82
+ });
83
+ if (firstVisibleIndex !== -1) {
84
+ var _virtualList$firstVis;
85
+ return ((_virtualList$firstVis = virtualList[firstVisibleIndex]) === null || _virtualList$firstVis === void 0 ? void 0 : _virtualList$firstVis.index) || 0;
86
+ }
87
+ return 0;
88
+ }, [rowVirtualizer]);
89
+
90
+ /**
91
+ * Recurisive function to find next available emoji and it's focus indexes in the grid
92
+ *
93
+ * current focus element is at rowIndex.columnIndex
94
+ * if found element then return the element and focus indexes
95
+ * otherwise change row/column till find the element
96
+ * if can't find the element till reach the edge of grid, we keep current focus states
97
+ *
98
+ * @param rowIndex search from row index (0 based)
99
+ * @param columnIndex search from column index (0 based)
100
+ * @param direction search direction
101
+ */
102
+ var findNextEmoji = (0, _react.useCallback)(function (rowIndex, columnIndex, direction) {
103
+ var _virtualistItemsRef$c;
104
+ var emojiToFocus = (_virtualistItemsRef$c = virtualistItemsRef.current) === null || _virtualistItemsRef$c === void 0 ? void 0 : _virtualistItemsRef$c.querySelector("[data-focus-index=\"".concat(rowIndex, "-").concat(columnIndex, "\"]"));
105
+ var lastRowIndex = rowCount - 1;
106
+ var lastColumnIndex = _constants.EMOJI_LIST_COLUMNS - 1;
107
+ if (emojiToFocus) {
108
+ return {
109
+ element: emojiToFocus,
110
+ rowIndex: rowIndex,
111
+ columnIndex: columnIndex
112
+ };
113
+ }
114
+ switch (direction) {
115
+ case _constants.KeyboardNavigationDirection.Down:
116
+ if (rowIndex >= lastRowIndex) {
117
+ return null;
118
+ }
119
+ // find emoji in same column but lower row
120
+ return findNextEmoji(rowIndex + 1, columnIndex, _constants.KeyboardNavigationDirection.Down);
121
+ case _constants.KeyboardNavigationDirection.Up:
122
+ if (rowIndex <= 0) {
123
+ return null;
124
+ }
125
+ // find emoji in same column but upper row
126
+ return findNextEmoji(rowIndex - 1, columnIndex, _constants.KeyboardNavigationDirection.Up);
127
+ case _constants.KeyboardNavigationDirection.Left:
128
+ if (rowIndex <= 0) {
129
+ return null;
130
+ }
131
+ if (columnIndex < 0) {
132
+ // find emoji in upper row
133
+ return findNextEmoji(rowIndex - 1, lastColumnIndex, _constants.KeyboardNavigationDirection.Left);
134
+ }
135
+ // find emoji on left in the current row
136
+ return findNextEmoji(rowIndex, columnIndex - 1, _constants.KeyboardNavigationDirection.Left);
137
+ case _constants.KeyboardNavigationDirection.Right:
138
+ if (rowIndex >= lastRowIndex) {
139
+ return null;
140
+ }
141
+ // if no emoji on right, we try first emoji in next row
142
+ return findNextEmoji(rowIndex + 1, 0, _constants.KeyboardNavigationDirection.Right);
143
+ default:
144
+ return null;
145
+ }
146
+ }, [rowCount]);
147
+
148
+ /**
149
+ * Find the valid emoji to scroll and focus
150
+ */
151
+ var scrollToRowAndFocusEmoji = (0, _react.useCallback)(function (emojiToFocus) {
152
+ if (emojiToFocus) {
153
+ var _emojiToFocus$element;
154
+ rowVirtualizer.scrollToIndex(emojiToFocus.rowIndex);
155
+ (_emojiToFocus$element = emojiToFocus.element) === null || _emojiToFocus$element === void 0 || _emojiToFocus$element.focus({
156
+ preventScroll: true
157
+ });
158
+ setEmojisFocus({
159
+ rowIndex: emojiToFocus.rowIndex,
160
+ columnIndex: emojiToFocus.columnIndex
161
+ });
162
+ }
163
+ }, [rowVirtualizer, setEmojisFocus]);
164
+ var focusEmoji = (0, _react.useCallback)(function (rIndex, cIndex, direction) {
165
+ var waitForScrollFinish = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
166
+ if (waitForScrollFinish) {
167
+ // scroll to target rowIndex first to ensure the row is rendered in list.
168
+ // used in page up/down, ctrl+Home, ctrl+End
169
+ rowVirtualizer.scrollToIndex(rIndex);
170
+ setTimeout(function () {
171
+ var emojiToFocus = findNextEmoji(rIndex, cIndex, direction);
172
+ scrollToRowAndFocusEmoji(emojiToFocus);
173
+ }, 100); // 100ms is virtual list scrolling time
174
+ } else {
175
+ var emojiToFocus = findNextEmoji(rIndex, cIndex, direction);
176
+ scrollToRowAndFocusEmoji(emojiToFocus);
177
+ }
178
+ }, [scrollToRowAndFocusEmoji, findNextEmoji, rowVirtualizer]);
179
+
180
+ // following the guide from https://www.w3.org/WAI/ARIA/apg/patterns/grid/
181
+ var handleKeyDown = function handleKeyDown(e) {
182
+ if (!_constants.EMOJIPICKERLIST_KEYBOARD_KEYS_SUPPORTED.includes(e.key)) {
183
+ return;
184
+ }
185
+ e.preventDefault();
186
+ e.stopPropagation();
187
+ var lastRowIndex = rowCount - 1;
188
+ var lastColumnIndex = _constants.EMOJI_LIST_COLUMNS - 1;
189
+
190
+ // focus first emoji on first row
191
+ if (e.key === _constants.KeyboardKeys.Home && e.ctrlKey) {
192
+ focusEmoji(1, 0, _constants.KeyboardNavigationDirection.Up, true);
193
+ return;
194
+ } else if (e.key === _constants.KeyboardKeys.End && e.ctrlKey) {
195
+ // focus last available emoji on last row
196
+ focusEmoji(lastRowIndex, lastColumnIndex, _constants.KeyboardNavigationDirection.Left, true);
197
+ return;
198
+ }
199
+ switch (e.key) {
200
+ // navigate to the right column
201
+ case _constants.KeyboardKeys.ArrowRight:
202
+ focusEmoji(currentEmojisFocus.rowIndex, currentEmojisFocus.columnIndex + 1, _constants.KeyboardNavigationDirection.Right);
203
+ break;
204
+ // navigate to the left column
205
+ case _constants.KeyboardKeys.ArrowLeft:
206
+ focusEmoji(currentEmojisFocus.rowIndex, currentEmojisFocus.columnIndex - 1, _constants.KeyboardNavigationDirection.Left);
207
+ break;
208
+ // navigate to the down row
209
+ case _constants.KeyboardKeys.ArrowDown:
210
+ focusEmoji(currentEmojisFocus.rowIndex === lastRowIndex ? lastRowIndex : currentEmojisFocus.rowIndex + 1, currentEmojisFocus.columnIndex, _constants.KeyboardNavigationDirection.Down);
211
+ break;
212
+ // navigate to the row after {EMOJI_LIST_PAGE_COUNT} rows
213
+ case _constants.KeyboardKeys.PageDown:
214
+ focusEmoji(currentEmojisFocus.rowIndex + _constants.EMOJI_LIST_PAGE_COUNT, currentEmojisFocus.columnIndex, _constants.KeyboardNavigationDirection.Down, true);
215
+ break;
216
+ // navigate to the up row
217
+ case _constants.KeyboardKeys.ArrowUp:
218
+ focusEmoji(currentEmojisFocus.rowIndex <= 1 ? 1 : currentEmojisFocus.rowIndex - 1, currentEmojisFocus.columnIndex, _constants.KeyboardNavigationDirection.Up);
219
+ break;
220
+ // navigate to the row before {EMOJI_LIST_PAGE_COUNT} rows
221
+ case _constants.KeyboardKeys.PageUp:
222
+ focusEmoji(currentEmojisFocus.rowIndex - _constants.EMOJI_LIST_PAGE_COUNT, currentEmojisFocus.columnIndex, _constants.KeyboardNavigationDirection.Up, true);
223
+ break;
224
+ // navigate to the first cell of current row
225
+ case _constants.KeyboardKeys.Home:
226
+ focusEmoji(currentEmojisFocus.rowIndex, 0, _constants.KeyboardNavigationDirection.Left);
227
+ break;
228
+ // navigate to the last cell of current row
229
+ case _constants.KeyboardKeys.End:
230
+ focusEmoji(currentEmojisFocus.rowIndex, lastColumnIndex, _constants.KeyboardNavigationDirection.Left);
231
+ break;
232
+ }
233
+ };
234
+
235
+ // Exposing a custom ref handle to the parent component EmojiPickerList to trigger scrollToRow via the listRef
236
+ // https://beta.reactjs.org/reference/react/useImperativeHandle
237
+ (0, _react.useImperativeHandle)(ref, function () {
238
+ return {
239
+ scrollToRow: function scrollToRow(index) {
240
+ if (index !== undefined) {
241
+ rowVirtualizer.setOptions(_objectSpread(_objectSpread({}, rowVirtualizer.options), {}, {
242
+ scrollPaddingStart: 0
243
+ }));
244
+ rowVirtualizer.scrollToIndex(index, {
245
+ align: scrollToAlignment
246
+ });
247
+ }
248
+ },
249
+ scrollToRowAndFocusLastEmoji: function scrollToRowAndFocusLastEmoji(index) {
250
+ if (index !== undefined) {
251
+ focusEmoji(index, _constants.EMOJI_LIST_COLUMNS, _constants.KeyboardNavigationDirection.Left, true);
252
+ }
253
+ },
254
+ scrollToEmojiAndFocus: function scrollToEmojiAndFocus(rowIndex, columnIndex) {
255
+ focusEmoji(rowIndex, columnIndex, _constants.KeyboardNavigationDirection.Left, true);
256
+ },
257
+ updateFocusIndex: function updateFocusIndex(rowIndex) {
258
+ var _virtualistItemsRef$c2;
259
+ var columnIndex = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
260
+ // row could be removed from virtual list after scrolling, we'll update emoji cell tabIndex after losing focus
261
+ if (!((_virtualistItemsRef$c2 = virtualistItemsRef.current) !== null && _virtualistItemsRef$c2 !== void 0 && _virtualistItemsRef$c2.contains(document.activeElement))) {
262
+ setEmojisFocus({
263
+ rowIndex: rowIndex,
264
+ columnIndex: columnIndex
265
+ });
266
+ }
267
+ }
268
+ };
269
+ }, [setEmojisFocus, focusEmoji, rowVirtualizer, scrollToAlignment]);
270
+ return /*#__PURE__*/_react.default.createElement("div", {
271
+ ref: parentRef,
272
+ style: {
273
+ height: "".concat(height, "px"),
274
+ width: "".concat(width, "px")
275
+ },
276
+ "data-testid": virtualListScrollContainerTestId,
277
+ "aria-labelledby": "emoji-picker-table-description",
278
+ role: "grid",
279
+ className: (0, _runtime.ax)(["_1reo15vq _18m91wug _n3tdu2gc _nt751r31 _49pcglyw _1hvw1o36"])
280
+ }, /*#__PURE__*/_react.default.createElement("div", {
281
+ style: {
282
+ height: "".concat(rowVirtualizer.getTotalSize(), "px"),
283
+ // eslint-disable-next-line @atlaskit/ui-styling-standard/enforce-style-prop -- Ignored via go/DSP-18766
284
+ width: '100%',
285
+ // eslint-disable-next-line @atlaskit/ui-styling-standard/enforce-style-prop -- Ignored via go/DSP-18766
286
+ position: 'relative'
287
+ },
288
+ ref: virtualistItemsRef,
289
+ onKeyDown: handleKeyDown,
290
+ role: "presentation"
291
+ }, rowVirtualizer.getVirtualItems().map(function (virtualRow, index) {
292
+ return /*#__PURE__*/_react.default.createElement("div", {
293
+ key: virtualRow.key,
294
+ style: {
295
+ height: "".concat(virtualRow.size, "px"),
296
+ transform: "translateY(".concat(virtualRow.start, "px)")
297
+ },
298
+ role: "row",
299
+ "aria-rowindex": index + 1,
300
+ className: (0, _runtime.ax)(["_kqswstnw _154iidpf _1ltvidpf _1bsb1osq"])
301
+ }, rowRenderer(virtualRow));
302
+ })));
303
+ });
@@ -15,8 +15,6 @@ var _styles = require("./styles");
15
15
 
16
16
  // eslint-disable-next-line @atlaskit/ui-styling-standard/use-compiled -- Ignored via go/DSP-18766
17
17
 
18
- // ED-26865: use compiled EmojiPreviewComponent when migrating picker to compiled css
19
-
20
18
  // eslint-disable-next-line @atlaskit/design-system/consistent-css-prop-usage -- Ignored via go/DSP-18766
21
19
  var previewFooterClassnames = [_styles.emojiPickerFooter, _styles.emojiPickerFooterWithTopShadow];
22
20
  var emojiPickerFooterTestId = exports.emojiPickerFooterTestId = 'emoji-picker-footer';