@atlaskit/emoji 70.9.1 → 70.10.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 (38) hide show
  1. package/CHANGELOG.md +23 -0
  2. package/analytics/package.json +17 -0
  3. package/categories/package.json +17 -0
  4. package/constants/package.json +17 -0
  5. package/dist/cjs/components/picker/EmojiPickerCategoryHeading.compiled.css +4 -0
  6. package/dist/cjs/components/picker/EmojiPickerCategoryHeading.js +10 -2
  7. package/dist/cjs/components/picker/EmojiPickerComponent.js +47 -2
  8. package/dist/cjs/util/analytics/analytics.js +1 -1
  9. package/dist/es2019/components/picker/EmojiPickerCategoryHeading.compiled.css +4 -0
  10. package/dist/es2019/components/picker/EmojiPickerCategoryHeading.js +9 -2
  11. package/dist/es2019/components/picker/EmojiPickerComponent.js +43 -2
  12. package/dist/es2019/util/analytics/analytics.js +1 -1
  13. package/dist/esm/components/picker/EmojiPickerCategoryHeading.compiled.css +4 -0
  14. package/dist/esm/components/picker/EmojiPickerCategoryHeading.js +9 -2
  15. package/dist/esm/components/picker/EmojiPickerComponent.js +47 -2
  16. package/dist/esm/util/analytics/analytics.js +1 -1
  17. package/emoji/package.json +17 -0
  18. package/emoji-common-provider/package.json +17 -0
  19. package/emoji-context-provider/package.json +17 -0
  20. package/emoji-loader/package.json +17 -0
  21. package/emoji-picker/package.json +17 -0
  22. package/emoji-placeholder/package.json +17 -0
  23. package/emoji-repository/package.json +17 -0
  24. package/emoji-resource/package.json +17 -0
  25. package/emoji-type-ahead/package.json +17 -0
  26. package/emoji-type-ahead-item/package.json +17 -0
  27. package/emoji-type-ahead-list/package.json +17 -0
  28. package/emoji-uploader/package.json +17 -0
  29. package/emoji-utils/package.json +17 -0
  30. package/package.json +6 -3
  31. package/resourced-emoji/package.json +17 -0
  32. package/sampling-ufo/package.json +17 -0
  33. package/styles/package.json +17 -0
  34. package/type-helpers/package.json +17 -0
  35. package/ufo-experiences/package.json +17 -0
  36. package/usage-frequency-tracker/package.json +17 -0
  37. package/use-emoji/package.json +17 -0
  38. package/use-emoji-context/package.json +17 -0
package/CHANGELOG.md CHANGED
@@ -1,5 +1,28 @@
1
1
  # @atlaskit/emoji
2
2
 
3
+ ## 70.10.0
4
+
5
+ ### Minor Changes
6
+
7
+ - [`80d8df1d8b42a`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/80d8df1d8b42a) -
8
+ Autofix: add explicit package exports (barrel removal)
9
+
10
+ ### Patch Changes
11
+
12
+ - Updated dependencies
13
+
14
+ ## 70.9.2
15
+
16
+ ### Patch Changes
17
+
18
+ - [`272f9e5d477db`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/272f9e5d477db) -
19
+ Fix accessibility: render emoji picker category headings (e.g. "Search results") as semantic
20
+ `<h2>` elements instead of `<div>` elements, so screen reader users can navigate and understand
21
+ the picker's content structure (WCAG 1.3.1, 2.4.6).
22
+ - [`50bf488a08bf3`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/50bf488a08bf3) -
23
+ Drag and drop for emoji upload will disable drag and drop on page content
24
+ - Updated dependencies
25
+
3
26
  ## 70.9.1
4
27
 
5
28
  ### Patch Changes
@@ -0,0 +1,17 @@
1
+ {
2
+ "name": "@atlaskit/emoji/analytics",
3
+ "main": "../dist/cjs/util/analytics/analytics.js",
4
+ "module": "../dist/esm/util/analytics/analytics.js",
5
+ "module:es2019": "../dist/es2019/util/analytics/analytics.js",
6
+ "sideEffects": [
7
+ "*.compiled.css"
8
+ ],
9
+ "types": "../dist/types/util/analytics/analytics.d.ts",
10
+ "typesVersions": {
11
+ ">=4.5 <5.9": {
12
+ "*": [
13
+ "../dist/types-ts4.5/util/analytics/analytics.d.ts"
14
+ ]
15
+ }
16
+ }
17
+ }
@@ -0,0 +1,17 @@
1
+ {
2
+ "name": "@atlaskit/emoji/categories",
3
+ "main": "../dist/cjs/components/picker/categories.js",
4
+ "module": "../dist/esm/components/picker/categories.js",
5
+ "module:es2019": "../dist/es2019/components/picker/categories.js",
6
+ "sideEffects": [
7
+ "*.compiled.css"
8
+ ],
9
+ "types": "../dist/types/components/picker/categories.d.ts",
10
+ "typesVersions": {
11
+ ">=4.5 <5.9": {
12
+ "*": [
13
+ "../dist/types-ts4.5/components/picker/categories.d.ts"
14
+ ]
15
+ }
16
+ }
17
+ }
@@ -0,0 +1,17 @@
1
+ {
2
+ "name": "@atlaskit/emoji/constants",
3
+ "main": "../dist/cjs/util/constants.js",
4
+ "module": "../dist/esm/util/constants.js",
5
+ "module:es2019": "../dist/es2019/util/constants.js",
6
+ "sideEffects": [
7
+ "*.compiled.css"
8
+ ],
9
+ "types": "../dist/types/util/constants.d.ts",
10
+ "typesVersions": {
11
+ ">=4.5 <5.9": {
12
+ "*": [
13
+ "../dist/types-ts4.5/util/constants.d.ts"
14
+ ]
15
+ }
16
+ }
17
+ }
@@ -1,9 +1,13 @@
1
1
  ._11c8fhey{font:var(--ds-font-body,normal 400 14px/20px "Atlassian Sans",ui-sans-serif,-apple-system,BlinkMacSystemFont,"Segoe UI",Ubuntu,"Helvetica Neue",sans-serif)}
2
+ ._18u0idpf{margin-left:0}
2
3
  ._19bvu2gc{padding-left:var(--ds-space-100,8px)}
4
+ ._19pkidpf{margin-top:0}
3
5
  ._1p1d1qyh{text-transform:lowercase}
4
6
  ._299mangw:first-letter{text-transform:uppercase}
7
+ ._2hwxidpf{margin-right:0}
5
8
  ._ca0q12x7{padding-top:var(--ds-space-075,6px)}
6
9
  ._n3td12x7{padding-bottom:var(--ds-space-075,6px)}
10
+ ._otyridpf{margin-bottom:0}
7
11
  ._syazi7uo{color:var(--ds-text,#292a2e)}
8
12
  ._u5f3u2gc{padding-right:var(--ds-space-100,8px)}
9
13
  ._vchhusvi{box-sizing:border-box}
@@ -1,6 +1,7 @@
1
1
  /* EmojiPickerCategoryHeading.tsx generated by @compiled/babel-plugin v0.39.1 */
2
2
  "use strict";
3
3
 
4
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
5
  var _typeof = require("@babel/runtime/helpers/typeof");
5
6
  Object.defineProperty(exports, "__esModule", {
6
7
  value: true
@@ -9,6 +10,8 @@ exports.default = exports.RENDER_EMOJI_PICKER_CATEGORY_HEADING_TESTID = void 0;
9
10
  require("./EmojiPickerCategoryHeading.compiled.css");
10
11
  var React = _interopRequireWildcard(require("react"));
11
12
  var _runtime = require("@compiled/react/runtime");
13
+ var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
14
+ var _heading = _interopRequireDefault(require("@atlaskit/heading"));
12
15
  var _reactIntl = require("react-intl");
13
16
  var _typeHelpers = require("../../util/type-helpers");
14
17
  var _i18n = require("../i18n");
@@ -31,8 +34,13 @@ var EmojiPickerCategoryHeading = function EmojiPickerCategoryHeading(_ref) {
31
34
  className: className,
32
35
  "data-testid": RENDER_EMOJI_PICKER_CATEGORY_HEADING_TESTID,
33
36
  role: "rowheader"
34
- }, /*#__PURE__*/React.createElement("div", {
35
- className: (0, _runtime.ax)(["_11c8fhey _vchhusvi _syazi7uo _ca0q12x7 _n3td12x7 _19bvu2gc _u5f3u2gc _1p1d1qyh _299mangw"])
37
+ }, (0, _platformFeatureFlags.fg)('platform_emoji_a11y_category_heading') ? /*#__PURE__*/React.createElement("div", {
38
+ className: (0, _runtime.ax)(["_11c8fhey _19pkidpf _2hwxidpf _otyridpf _18u0idpf _vchhusvi _syazi7uo _ca0q12x7 _n3td12x7 _19bvu2gc _u5f3u2gc _1p1d1qyh _299mangw"])
39
+ }, /*#__PURE__*/React.createElement(_heading.default, {
40
+ size: "xsmall",
41
+ as: "h2"
42
+ }, (0, _typeHelpers.isMessagesKey)(title) ? /*#__PURE__*/React.createElement(_reactIntl.FormattedMessage, _i18n.messages[title]) : title)) : /*#__PURE__*/React.createElement("div", {
43
+ className: (0, _runtime.ax)(["_11c8fhey _19pkidpf _2hwxidpf _otyridpf _18u0idpf _vchhusvi _syazi7uo _ca0q12x7 _n3td12x7 _19bvu2gc _u5f3u2gc _1p1d1qyh _299mangw"])
36
44
  }, (0, _typeHelpers.isMessagesKey)(title) ? /*#__PURE__*/React.createElement(_reactIntl.FormattedMessage, _i18n.messages[title]) : title));
37
45
  };
38
46
  var _default = exports.default = EmojiPickerCategoryHeading;
@@ -18,6 +18,10 @@ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers
18
18
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
19
19
  var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
20
20
  var _browserApis = require("@atlaskit/browser-apis");
21
+ var _adapter = require("@atlaskit/pragmatic-drag-and-drop/external/adapter");
22
+ var _file = require("@atlaskit/pragmatic-drag-and-drop/external/file");
23
+ var _combine = require("@atlaskit/pragmatic-drag-and-drop/combine");
24
+ var _preventUnhandled = require("@atlaskit/pragmatic-drag-and-drop/prevent-unhandled");
21
25
  var _reactDom = require("react-dom");
22
26
  var _reactIntl = require("react-intl");
23
27
  var _EmojiRepository = require("../../api/EmojiRepository");
@@ -134,6 +138,13 @@ var EmojiPickerComponent = function EmojiPickerComponent(_ref) {
134
138
  var isMounting = (0, _react.useRef)(true);
135
139
  var previousEmojiProvider = (0, _react.useRef)(emojiProvider);
136
140
  var isProgrammaticScroll = (0, _react.useRef)(false);
141
+ var pickerRef = (0, _react.useRef)(null);
142
+ var setPickerRef = (0, _react.useCallback)(function (el) {
143
+ if ((0, _platformFeatureFlags.fg)('platform_emoji_picker_refresh')) {
144
+ pickerRef.current = el;
145
+ }
146
+ onPickerRef === null || onPickerRef === void 0 || onPickerRef(el);
147
+ }, [onPickerRef]);
137
148
  var currentUser = (0, _react.useMemo)(function () {
138
149
  return emojiProvider.getCurrentUser();
139
150
  }, [emojiProvider]);
@@ -387,6 +398,40 @@ var EmojiPickerComponent = function EmojiPickerComponent(_ref) {
387
398
  scrollToTopOfList();
388
399
  }
389
400
  }, [query, filteredEmojis, selectedTone, updateEmojis, scrollToTopOfList]);
401
+
402
+ // When the upload screen is open, intercept any file drag at the window level so it
403
+ // cannot reach underlying page drop handlers (e.g. the Confluence editor).
404
+ (0, _react.useEffect)(function () {
405
+ var _getDocument2;
406
+ if (!uploading || !(0, _platformFeatureFlags.fg)('platform_emoji_picker_refresh')) {
407
+ return;
408
+ }
409
+ var body = (_getDocument2 = (0, _browserApis.getDocument)()) === null || _getDocument2 === void 0 ? void 0 : _getDocument2.body;
410
+ if (!body) {
411
+ return;
412
+ }
413
+
414
+ // Register a full-page drop target on document.body and a monitor using
415
+ // pragmatic-drag-and-drop so that file drops are intercepted before reaching
416
+ // any underlying native DOM handlers (e.g. the Confluence editor).
417
+ // The FileChooser's own drop target (registered on pickerRef) takes priority
418
+ // over the body target for drops inside the picker.
419
+ var cleanup = (0, _combine.combine)((0, _adapter.dropTargetForExternal)({
420
+ element: body,
421
+ canDrop: _file.containsFiles
422
+ }), (0, _adapter.monitorForExternal)({
423
+ onDragStart: function onDragStart() {
424
+ return _preventUnhandled.preventUnhandled.start();
425
+ },
426
+ onDrop: function onDrop() {
427
+ return _preventUnhandled.preventUnhandled.stop();
428
+ }
429
+ }));
430
+ return function () {
431
+ _preventUnhandled.preventUnhandled.stop();
432
+ cleanup();
433
+ };
434
+ }, [uploading]);
390
435
  var onOpenUpload = (0, _react.useCallback)(function () {
391
436
  // Prime upload token so it's ready when the user adds
392
437
  if ((0, _EmojiResource.supportsUploadFeature)(emojiProvider)) {
@@ -568,7 +613,7 @@ var EmojiPickerComponent = function EmojiPickerComponent(_ref) {
568
613
  var showPreview = (0, _platformFeatureFlags.fg)('platform_emoji_picker_refresh') ? !uploading : selectedEmoji && !uploading;
569
614
  if ((0, _platformFeatureFlags.fg)('platform_no_noninteractive_emojis_reactions')) {
570
615
  return /*#__PURE__*/React.createElement("div", {
571
- ref: onPickerRef,
616
+ ref: setPickerRef,
572
617
  "data-emoji-picker-container": true,
573
618
  role: "dialog",
574
619
  "aria-label": formatMessage(_i18n.messages.emojiPickerTitle),
@@ -625,7 +670,7 @@ var EmojiPickerComponent = function EmojiPickerComponent(_ref) {
625
670
  })));
626
671
  }
627
672
  return /*#__PURE__*/React.createElement("div", {
628
- ref: onPickerRef,
673
+ ref: setPickerRef,
629
674
  "data-emoji-picker-container": true,
630
675
  role: "dialog",
631
676
  "aria-label": formatMessage(_i18n.messages.emojiPickerTitle),
@@ -20,7 +20,7 @@ var createEvent = function createEvent(eventType, action, actionSubject, actionS
20
20
  actionSubjectId: actionSubjectId,
21
21
  attributes: _objectSpread({
22
22
  packageName: "@atlaskit/emoji",
23
- packageVersion: "70.9.0"
23
+ packageVersion: "0.0.0-development"
24
24
  }, attributes)
25
25
  };
26
26
  };
@@ -1,9 +1,13 @@
1
1
  ._11c8fhey{font:var(--ds-font-body,normal 400 14px/20px "Atlassian Sans",ui-sans-serif,-apple-system,BlinkMacSystemFont,"Segoe UI",Ubuntu,"Helvetica Neue",sans-serif)}
2
+ ._18u0idpf{margin-left:0}
2
3
  ._19bvu2gc{padding-left:var(--ds-space-100,8px)}
4
+ ._19pkidpf{margin-top:0}
3
5
  ._1p1d1qyh{text-transform:lowercase}
4
6
  ._299mangw:first-letter{text-transform:uppercase}
7
+ ._2hwxidpf{margin-right:0}
5
8
  ._ca0q12x7{padding-top:var(--ds-space-075,6px)}
6
9
  ._n3td12x7{padding-bottom:var(--ds-space-075,6px)}
10
+ ._otyridpf{margin-bottom:0}
7
11
  ._syazi7uo{color:var(--ds-text,#292a2e)}
8
12
  ._u5f3u2gc{padding-right:var(--ds-space-100,8px)}
9
13
  ._vchhusvi{box-sizing:border-box}
@@ -2,6 +2,8 @@
2
2
  import "./EmojiPickerCategoryHeading.compiled.css";
3
3
  import * as React from 'react';
4
4
  import { ax, ix } from "@compiled/react/runtime";
5
+ import { fg } from '@atlaskit/platform-feature-flags';
6
+ import Heading from '@atlaskit/heading';
5
7
  import { FormattedMessage } from 'react-intl';
6
8
  import { isMessagesKey } from '../../util/type-helpers';
7
9
  import { messages } from '../i18n';
@@ -23,7 +25,12 @@ const EmojiPickerCategoryHeading = ({
23
25
  className: className,
24
26
  "data-testid": RENDER_EMOJI_PICKER_CATEGORY_HEADING_TESTID,
25
27
  role: "rowheader"
26
- }, /*#__PURE__*/React.createElement("div", {
27
- className: ax(["_11c8fhey _vchhusvi _syazi7uo _ca0q12x7 _n3td12x7 _19bvu2gc _u5f3u2gc _1p1d1qyh _299mangw"])
28
+ }, fg('platform_emoji_a11y_category_heading') ? /*#__PURE__*/React.createElement("div", {
29
+ className: ax(["_11c8fhey _19pkidpf _2hwxidpf _otyridpf _18u0idpf _vchhusvi _syazi7uo _ca0q12x7 _n3td12x7 _19bvu2gc _u5f3u2gc _1p1d1qyh _299mangw"])
30
+ }, /*#__PURE__*/React.createElement(Heading, {
31
+ size: "xsmall",
32
+ as: "h2"
33
+ }, isMessagesKey(title) ? /*#__PURE__*/React.createElement(FormattedMessage, messages[title]) : title)) : /*#__PURE__*/React.createElement("div", {
34
+ className: ax(["_11c8fhey _19pkidpf _2hwxidpf _otyridpf _18u0idpf _vchhusvi _syazi7uo _ca0q12x7 _n3td12x7 _19bvu2gc _u5f3u2gc _1p1d1qyh _299mangw"])
28
35
  }, isMessagesKey(title) ? /*#__PURE__*/React.createElement(FormattedMessage, messages[title]) : title));
29
36
  export default EmojiPickerCategoryHeading;
@@ -5,6 +5,10 @@ import { ax, ix } from "@compiled/react/runtime";
5
5
  import { useCallback, useEffect, useMemo, useRef, useState, createRef, memo } from 'react';
6
6
  import { fg } from '@atlaskit/platform-feature-flags';
7
7
  import { getDocument } from '@atlaskit/browser-apis';
8
+ import { dropTargetForExternal, monitorForExternal } from '@atlaskit/pragmatic-drag-and-drop/external/adapter';
9
+ import { containsFiles } from '@atlaskit/pragmatic-drag-and-drop/external/file';
10
+ import { combine } from '@atlaskit/pragmatic-drag-and-drop/combine';
11
+ import { preventUnhandled } from '@atlaskit/pragmatic-drag-and-drop/prevent-unhandled';
8
12
  import { unstable_batchedUpdates as batchedUpdates } from 'react-dom';
9
13
  import { FormattedMessage, useIntl } from 'react-intl';
10
14
  import { getEmojiVariation } from '../../api/EmojiRepository';
@@ -76,6 +80,13 @@ const EmojiPickerComponent = ({
76
80
  const isMounting = useRef(true);
77
81
  const previousEmojiProvider = useRef(emojiProvider);
78
82
  const isProgrammaticScroll = useRef(false);
83
+ const pickerRef = useRef(null);
84
+ const setPickerRef = useCallback(el => {
85
+ if (fg('platform_emoji_picker_refresh')) {
86
+ pickerRef.current = el;
87
+ }
88
+ onPickerRef === null || onPickerRef === void 0 ? void 0 : onPickerRef(el);
89
+ }, [onPickerRef]);
79
90
  const currentUser = useMemo(() => {
80
91
  return emojiProvider.getCurrentUser();
81
92
  }, [emojiProvider]);
@@ -325,6 +336,36 @@ const EmojiPickerComponent = ({
325
336
  scrollToTopOfList();
326
337
  }
327
338
  }, [query, filteredEmojis, selectedTone, updateEmojis, scrollToTopOfList]);
339
+
340
+ // When the upload screen is open, intercept any file drag at the window level so it
341
+ // cannot reach underlying page drop handlers (e.g. the Confluence editor).
342
+ useEffect(() => {
343
+ var _getDocument2;
344
+ if (!uploading || !fg('platform_emoji_picker_refresh')) {
345
+ return;
346
+ }
347
+ const body = (_getDocument2 = getDocument()) === null || _getDocument2 === void 0 ? void 0 : _getDocument2.body;
348
+ if (!body) {
349
+ return;
350
+ }
351
+
352
+ // Register a full-page drop target on document.body and a monitor using
353
+ // pragmatic-drag-and-drop so that file drops are intercepted before reaching
354
+ // any underlying native DOM handlers (e.g. the Confluence editor).
355
+ // The FileChooser's own drop target (registered on pickerRef) takes priority
356
+ // over the body target for drops inside the picker.
357
+ const cleanup = combine(dropTargetForExternal({
358
+ element: body,
359
+ canDrop: containsFiles
360
+ }), monitorForExternal({
361
+ onDragStart: () => preventUnhandled.start(),
362
+ onDrop: () => preventUnhandled.stop()
363
+ }));
364
+ return () => {
365
+ preventUnhandled.stop();
366
+ cleanup();
367
+ };
368
+ }, [uploading]);
328
369
  const onOpenUpload = useCallback(() => {
329
370
  // Prime upload token so it's ready when the user adds
330
371
  if (supportsUploadFeature(emojiProvider)) {
@@ -482,7 +523,7 @@ const EmojiPickerComponent = ({
482
523
  const showPreview = fg('platform_emoji_picker_refresh') ? !uploading : selectedEmoji && !uploading;
483
524
  if (fg('platform_no_noninteractive_emojis_reactions')) {
484
525
  return /*#__PURE__*/React.createElement("div", {
485
- ref: onPickerRef,
526
+ ref: setPickerRef,
486
527
  "data-emoji-picker-container": true,
487
528
  role: "dialog",
488
529
  "aria-label": formatMessage(messages.emojiPickerTitle),
@@ -535,7 +576,7 @@ const EmojiPickerComponent = ({
535
576
  })));
536
577
  }
537
578
  return /*#__PURE__*/React.createElement("div", {
538
- ref: onPickerRef,
579
+ ref: setPickerRef,
539
580
  "data-emoji-picker-container": true,
540
581
  role: "dialog",
541
582
  "aria-label": formatMessage(messages.emojiPickerTitle),
@@ -9,7 +9,7 @@ const createEvent = (eventType, action, actionSubject, actionSubjectId, attribut
9
9
  actionSubjectId,
10
10
  attributes: {
11
11
  packageName: "@atlaskit/emoji",
12
- packageVersion: "70.9.0",
12
+ packageVersion: "0.0.0-development",
13
13
  ...attributes
14
14
  }
15
15
  });
@@ -1,9 +1,13 @@
1
1
  ._11c8fhey{font:var(--ds-font-body,normal 400 14px/20px "Atlassian Sans",ui-sans-serif,-apple-system,BlinkMacSystemFont,"Segoe UI",Ubuntu,"Helvetica Neue",sans-serif)}
2
+ ._18u0idpf{margin-left:0}
2
3
  ._19bvu2gc{padding-left:var(--ds-space-100,8px)}
4
+ ._19pkidpf{margin-top:0}
3
5
  ._1p1d1qyh{text-transform:lowercase}
4
6
  ._299mangw:first-letter{text-transform:uppercase}
7
+ ._2hwxidpf{margin-right:0}
5
8
  ._ca0q12x7{padding-top:var(--ds-space-075,6px)}
6
9
  ._n3td12x7{padding-bottom:var(--ds-space-075,6px)}
10
+ ._otyridpf{margin-bottom:0}
7
11
  ._syazi7uo{color:var(--ds-text,#292a2e)}
8
12
  ._u5f3u2gc{padding-right:var(--ds-space-100,8px)}
9
13
  ._vchhusvi{box-sizing:border-box}
@@ -2,6 +2,8 @@
2
2
  import "./EmojiPickerCategoryHeading.compiled.css";
3
3
  import * as React from 'react';
4
4
  import { ax, ix } from "@compiled/react/runtime";
5
+ import { fg } from '@atlaskit/platform-feature-flags';
6
+ import Heading from '@atlaskit/heading';
5
7
  import { FormattedMessage } from 'react-intl';
6
8
  import { isMessagesKey } from '../../util/type-helpers';
7
9
  import { messages } from '../i18n';
@@ -23,8 +25,13 @@ var EmojiPickerCategoryHeading = function EmojiPickerCategoryHeading(_ref) {
23
25
  className: className,
24
26
  "data-testid": RENDER_EMOJI_PICKER_CATEGORY_HEADING_TESTID,
25
27
  role: "rowheader"
26
- }, /*#__PURE__*/React.createElement("div", {
27
- className: ax(["_11c8fhey _vchhusvi _syazi7uo _ca0q12x7 _n3td12x7 _19bvu2gc _u5f3u2gc _1p1d1qyh _299mangw"])
28
+ }, fg('platform_emoji_a11y_category_heading') ? /*#__PURE__*/React.createElement("div", {
29
+ className: ax(["_11c8fhey _19pkidpf _2hwxidpf _otyridpf _18u0idpf _vchhusvi _syazi7uo _ca0q12x7 _n3td12x7 _19bvu2gc _u5f3u2gc _1p1d1qyh _299mangw"])
30
+ }, /*#__PURE__*/React.createElement(Heading, {
31
+ size: "xsmall",
32
+ as: "h2"
33
+ }, isMessagesKey(title) ? /*#__PURE__*/React.createElement(FormattedMessage, messages[title]) : title)) : /*#__PURE__*/React.createElement("div", {
34
+ className: ax(["_11c8fhey _19pkidpf _2hwxidpf _otyridpf _18u0idpf _vchhusvi _syazi7uo _ca0q12x7 _n3td12x7 _19bvu2gc _u5f3u2gc _1p1d1qyh _299mangw"])
28
35
  }, isMessagesKey(title) ? /*#__PURE__*/React.createElement(FormattedMessage, messages[title]) : title));
29
36
  };
30
37
  export default EmojiPickerCategoryHeading;
@@ -12,6 +12,10 @@ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t =
12
12
  import { useCallback, useEffect, useMemo, useRef, useState, createRef, memo } from 'react';
13
13
  import { fg } from '@atlaskit/platform-feature-flags';
14
14
  import { getDocument } from '@atlaskit/browser-apis';
15
+ import { dropTargetForExternal, monitorForExternal } from '@atlaskit/pragmatic-drag-and-drop/external/adapter';
16
+ import { containsFiles } from '@atlaskit/pragmatic-drag-and-drop/external/file';
17
+ import { combine } from '@atlaskit/pragmatic-drag-and-drop/combine';
18
+ import { preventUnhandled } from '@atlaskit/pragmatic-drag-and-drop/prevent-unhandled';
15
19
  import { unstable_batchedUpdates as batchedUpdates } from 'react-dom';
16
20
  import { FormattedMessage, useIntl } from 'react-intl';
17
21
  import { getEmojiVariation } from '../../api/EmojiRepository';
@@ -125,6 +129,13 @@ var EmojiPickerComponent = function EmojiPickerComponent(_ref) {
125
129
  var isMounting = useRef(true);
126
130
  var previousEmojiProvider = useRef(emojiProvider);
127
131
  var isProgrammaticScroll = useRef(false);
132
+ var pickerRef = useRef(null);
133
+ var setPickerRef = useCallback(function (el) {
134
+ if (fg('platform_emoji_picker_refresh')) {
135
+ pickerRef.current = el;
136
+ }
137
+ onPickerRef === null || onPickerRef === void 0 || onPickerRef(el);
138
+ }, [onPickerRef]);
128
139
  var currentUser = useMemo(function () {
129
140
  return emojiProvider.getCurrentUser();
130
141
  }, [emojiProvider]);
@@ -378,6 +389,40 @@ var EmojiPickerComponent = function EmojiPickerComponent(_ref) {
378
389
  scrollToTopOfList();
379
390
  }
380
391
  }, [query, filteredEmojis, selectedTone, updateEmojis, scrollToTopOfList]);
392
+
393
+ // When the upload screen is open, intercept any file drag at the window level so it
394
+ // cannot reach underlying page drop handlers (e.g. the Confluence editor).
395
+ useEffect(function () {
396
+ var _getDocument2;
397
+ if (!uploading || !fg('platform_emoji_picker_refresh')) {
398
+ return;
399
+ }
400
+ var body = (_getDocument2 = getDocument()) === null || _getDocument2 === void 0 ? void 0 : _getDocument2.body;
401
+ if (!body) {
402
+ return;
403
+ }
404
+
405
+ // Register a full-page drop target on document.body and a monitor using
406
+ // pragmatic-drag-and-drop so that file drops are intercepted before reaching
407
+ // any underlying native DOM handlers (e.g. the Confluence editor).
408
+ // The FileChooser's own drop target (registered on pickerRef) takes priority
409
+ // over the body target for drops inside the picker.
410
+ var cleanup = combine(dropTargetForExternal({
411
+ element: body,
412
+ canDrop: containsFiles
413
+ }), monitorForExternal({
414
+ onDragStart: function onDragStart() {
415
+ return preventUnhandled.start();
416
+ },
417
+ onDrop: function onDrop() {
418
+ return preventUnhandled.stop();
419
+ }
420
+ }));
421
+ return function () {
422
+ preventUnhandled.stop();
423
+ cleanup();
424
+ };
425
+ }, [uploading]);
381
426
  var onOpenUpload = useCallback(function () {
382
427
  // Prime upload token so it's ready when the user adds
383
428
  if (supportsUploadFeature(emojiProvider)) {
@@ -559,7 +604,7 @@ var EmojiPickerComponent = function EmojiPickerComponent(_ref) {
559
604
  var showPreview = fg('platform_emoji_picker_refresh') ? !uploading : selectedEmoji && !uploading;
560
605
  if (fg('platform_no_noninteractive_emojis_reactions')) {
561
606
  return /*#__PURE__*/React.createElement("div", {
562
- ref: onPickerRef,
607
+ ref: setPickerRef,
563
608
  "data-emoji-picker-container": true,
564
609
  role: "dialog",
565
610
  "aria-label": formatMessage(messages.emojiPickerTitle),
@@ -616,7 +661,7 @@ var EmojiPickerComponent = function EmojiPickerComponent(_ref) {
616
661
  })));
617
662
  }
618
663
  return /*#__PURE__*/React.createElement("div", {
619
- ref: onPickerRef,
664
+ ref: setPickerRef,
620
665
  "data-emoji-picker-container": true,
621
666
  role: "dialog",
622
667
  "aria-label": formatMessage(messages.emojiPickerTitle),
@@ -14,7 +14,7 @@ var createEvent = function createEvent(eventType, action, actionSubject, actionS
14
14
  actionSubjectId: actionSubjectId,
15
15
  attributes: _objectSpread({
16
16
  packageName: "@atlaskit/emoji",
17
- packageVersion: "70.9.0"
17
+ packageVersion: "0.0.0-development"
18
18
  }, attributes)
19
19
  };
20
20
  };
@@ -0,0 +1,17 @@
1
+ {
2
+ "name": "@atlaskit/emoji/emoji",
3
+ "main": "../dist/cjs/components/common/Emoji.js",
4
+ "module": "../dist/esm/components/common/Emoji.js",
5
+ "module:es2019": "../dist/es2019/components/common/Emoji.js",
6
+ "sideEffects": [
7
+ "*.compiled.css"
8
+ ],
9
+ "types": "../dist/types/components/common/Emoji.d.ts",
10
+ "typesVersions": {
11
+ ">=4.5 <5.9": {
12
+ "*": [
13
+ "../dist/types-ts4.5/components/common/Emoji.d.ts"
14
+ ]
15
+ }
16
+ }
17
+ }
@@ -0,0 +1,17 @@
1
+ {
2
+ "name": "@atlaskit/emoji/emoji-common-provider",
3
+ "main": "../dist/cjs/context/EmojiCommonProvider.js",
4
+ "module": "../dist/esm/context/EmojiCommonProvider.js",
5
+ "module:es2019": "../dist/es2019/context/EmojiCommonProvider.js",
6
+ "sideEffects": [
7
+ "*.compiled.css"
8
+ ],
9
+ "types": "../dist/types/context/EmojiCommonProvider.d.ts",
10
+ "typesVersions": {
11
+ ">=4.5 <5.9": {
12
+ "*": [
13
+ "../dist/types-ts4.5/context/EmojiCommonProvider.d.ts"
14
+ ]
15
+ }
16
+ }
17
+ }
@@ -0,0 +1,17 @@
1
+ {
2
+ "name": "@atlaskit/emoji/emoji-context-provider",
3
+ "main": "../dist/cjs/context/EmojiContextProvider.js",
4
+ "module": "../dist/esm/context/EmojiContextProvider.js",
5
+ "module:es2019": "../dist/es2019/context/EmojiContextProvider.js",
6
+ "sideEffects": [
7
+ "*.compiled.css"
8
+ ],
9
+ "types": "../dist/types/context/EmojiContextProvider.d.ts",
10
+ "typesVersions": {
11
+ ">=4.5 <5.9": {
12
+ "*": [
13
+ "../dist/types-ts4.5/context/EmojiContextProvider.d.ts"
14
+ ]
15
+ }
16
+ }
17
+ }
@@ -0,0 +1,17 @@
1
+ {
2
+ "name": "@atlaskit/emoji/emoji-loader",
3
+ "main": "../dist/cjs/api/EmojiLoader.js",
4
+ "module": "../dist/esm/api/EmojiLoader.js",
5
+ "module:es2019": "../dist/es2019/api/EmojiLoader.js",
6
+ "sideEffects": [
7
+ "*.compiled.css"
8
+ ],
9
+ "types": "../dist/types/api/EmojiLoader.d.ts",
10
+ "typesVersions": {
11
+ ">=4.5 <5.9": {
12
+ "*": [
13
+ "../dist/types-ts4.5/api/EmojiLoader.d.ts"
14
+ ]
15
+ }
16
+ }
17
+ }
@@ -0,0 +1,17 @@
1
+ {
2
+ "name": "@atlaskit/emoji/emoji-picker",
3
+ "main": "../dist/cjs/components/picker/EmojiPicker.js",
4
+ "module": "../dist/esm/components/picker/EmojiPicker.js",
5
+ "module:es2019": "../dist/es2019/components/picker/EmojiPicker.js",
6
+ "sideEffects": [
7
+ "*.compiled.css"
8
+ ],
9
+ "types": "../dist/types/components/picker/EmojiPicker.d.ts",
10
+ "typesVersions": {
11
+ ">=4.5 <5.9": {
12
+ "*": [
13
+ "../dist/types-ts4.5/components/picker/EmojiPicker.d.ts"
14
+ ]
15
+ }
16
+ }
17
+ }
@@ -0,0 +1,17 @@
1
+ {
2
+ "name": "@atlaskit/emoji/emoji-placeholder",
3
+ "main": "../dist/cjs/components/common/EmojiPlaceholder.js",
4
+ "module": "../dist/esm/components/common/EmojiPlaceholder.js",
5
+ "module:es2019": "../dist/es2019/components/common/EmojiPlaceholder.js",
6
+ "sideEffects": [
7
+ "*.compiled.css"
8
+ ],
9
+ "types": "../dist/types/components/common/EmojiPlaceholder.d.ts",
10
+ "typesVersions": {
11
+ ">=4.5 <5.9": {
12
+ "*": [
13
+ "../dist/types-ts4.5/components/common/EmojiPlaceholder.d.ts"
14
+ ]
15
+ }
16
+ }
17
+ }
@@ -0,0 +1,17 @@
1
+ {
2
+ "name": "@atlaskit/emoji/emoji-repository",
3
+ "main": "../dist/cjs/api/EmojiRepository.js",
4
+ "module": "../dist/esm/api/EmojiRepository.js",
5
+ "module:es2019": "../dist/es2019/api/EmojiRepository.js",
6
+ "sideEffects": [
7
+ "*.compiled.css"
8
+ ],
9
+ "types": "../dist/types/api/EmojiRepository.d.ts",
10
+ "typesVersions": {
11
+ ">=4.5 <5.9": {
12
+ "*": [
13
+ "../dist/types-ts4.5/api/EmojiRepository.d.ts"
14
+ ]
15
+ }
16
+ }
17
+ }
@@ -0,0 +1,17 @@
1
+ {
2
+ "name": "@atlaskit/emoji/emoji-resource",
3
+ "main": "../dist/cjs/api/EmojiResource.js",
4
+ "module": "../dist/esm/api/EmojiResource.js",
5
+ "module:es2019": "../dist/es2019/api/EmojiResource.js",
6
+ "sideEffects": [
7
+ "*.compiled.css"
8
+ ],
9
+ "types": "../dist/types/api/EmojiResource.d.ts",
10
+ "typesVersions": {
11
+ ">=4.5 <5.9": {
12
+ "*": [
13
+ "../dist/types-ts4.5/api/EmojiResource.d.ts"
14
+ ]
15
+ }
16
+ }
17
+ }
@@ -0,0 +1,17 @@
1
+ {
2
+ "name": "@atlaskit/emoji/emoji-type-ahead",
3
+ "main": "../dist/cjs/components/typeahead/EmojiTypeAhead.js",
4
+ "module": "../dist/esm/components/typeahead/EmojiTypeAhead.js",
5
+ "module:es2019": "../dist/es2019/components/typeahead/EmojiTypeAhead.js",
6
+ "sideEffects": [
7
+ "*.compiled.css"
8
+ ],
9
+ "types": "../dist/types/components/typeahead/EmojiTypeAhead.d.ts",
10
+ "typesVersions": {
11
+ ">=4.5 <5.9": {
12
+ "*": [
13
+ "../dist/types-ts4.5/components/typeahead/EmojiTypeAhead.d.ts"
14
+ ]
15
+ }
16
+ }
17
+ }
@@ -0,0 +1,17 @@
1
+ {
2
+ "name": "@atlaskit/emoji/emoji-type-ahead-item",
3
+ "main": "../dist/cjs/components/typeahead/EmojiTypeAheadItem.js",
4
+ "module": "../dist/esm/components/typeahead/EmojiTypeAheadItem.js",
5
+ "module:es2019": "../dist/es2019/components/typeahead/EmojiTypeAheadItem.js",
6
+ "sideEffects": [
7
+ "*.compiled.css"
8
+ ],
9
+ "types": "../dist/types/components/typeahead/EmojiTypeAheadItem.d.ts",
10
+ "typesVersions": {
11
+ ">=4.5 <5.9": {
12
+ "*": [
13
+ "../dist/types-ts4.5/components/typeahead/EmojiTypeAheadItem.d.ts"
14
+ ]
15
+ }
16
+ }
17
+ }
@@ -0,0 +1,17 @@
1
+ {
2
+ "name": "@atlaskit/emoji/emoji-type-ahead-list",
3
+ "main": "../dist/cjs/components/typeahead/EmojiTypeAheadList.js",
4
+ "module": "../dist/esm/components/typeahead/EmojiTypeAheadList.js",
5
+ "module:es2019": "../dist/es2019/components/typeahead/EmojiTypeAheadList.js",
6
+ "sideEffects": [
7
+ "*.compiled.css"
8
+ ],
9
+ "types": "../dist/types/components/typeahead/EmojiTypeAheadList.d.ts",
10
+ "typesVersions": {
11
+ ">=4.5 <5.9": {
12
+ "*": [
13
+ "../dist/types-ts4.5/components/typeahead/EmojiTypeAheadList.d.ts"
14
+ ]
15
+ }
16
+ }
17
+ }
@@ -0,0 +1,17 @@
1
+ {
2
+ "name": "@atlaskit/emoji/emoji-uploader",
3
+ "main": "../dist/cjs/components/uploader/EmojiUploader.js",
4
+ "module": "../dist/esm/components/uploader/EmojiUploader.js",
5
+ "module:es2019": "../dist/es2019/components/uploader/EmojiUploader.js",
6
+ "sideEffects": [
7
+ "*.compiled.css"
8
+ ],
9
+ "types": "../dist/types/components/uploader/EmojiUploader.d.ts",
10
+ "typesVersions": {
11
+ ">=4.5 <5.9": {
12
+ "*": [
13
+ "../dist/types-ts4.5/components/uploader/EmojiUploader.d.ts"
14
+ ]
15
+ }
16
+ }
17
+ }
@@ -0,0 +1,17 @@
1
+ {
2
+ "name": "@atlaskit/emoji/emoji-utils",
3
+ "main": "../dist/cjs/api/EmojiUtils.js",
4
+ "module": "../dist/esm/api/EmojiUtils.js",
5
+ "module:es2019": "../dist/es2019/api/EmojiUtils.js",
6
+ "sideEffects": [
7
+ "*.compiled.css"
8
+ ],
9
+ "types": "../dist/types/api/EmojiUtils.d.ts",
10
+ "typesVersions": {
11
+ ">=4.5 <5.9": {
12
+ "*": [
13
+ "../dist/types-ts4.5/api/EmojiUtils.d.ts"
14
+ ]
15
+ }
16
+ }
17
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@atlaskit/emoji",
3
- "version": "70.9.1",
3
+ "version": "70.10.0",
4
4
  "description": "Fabric emoji React components",
5
5
  "publishConfig": {
6
6
  "registry": "https://registry.npmjs.org/"
@@ -39,7 +39,7 @@
39
39
  "dependencies": {
40
40
  "@atlaskit/afm-i18n-platform-elements-emoji": "2.7.0",
41
41
  "@atlaskit/analytics-next": "^11.2.0",
42
- "@atlaskit/browser-apis": "^0.0.1",
42
+ "@atlaskit/browser-apis": "^0.0.2",
43
43
  "@atlaskit/button": "^23.11.0",
44
44
  "@atlaskit/css": "^0.19.0",
45
45
  "@atlaskit/form": "^15.5.0",
@@ -52,7 +52,7 @@
52
52
  "@atlaskit/primitives": "^19.0.0",
53
53
  "@atlaskit/spinner": "^19.1.0",
54
54
  "@atlaskit/textfield": "^8.3.0",
55
- "@atlaskit/tmp-editor-statsig": "^81.1.0",
55
+ "@atlaskit/tmp-editor-statsig": "^81.3.0",
56
56
  "@atlaskit/tokens": "^13.0.0",
57
57
  "@atlaskit/tooltip": "^22.2.0",
58
58
  "@atlaskit/ufo": "^0.5.0",
@@ -148,6 +148,9 @@
148
148
  },
149
149
  "use-elements-stargate-emoji-path": {
150
150
  "type": "boolean"
151
+ },
152
+ "platform_emoji_a11y_category_heading": {
153
+ "type": "boolean"
151
154
  }
152
155
  },
153
156
  "scripts": {
@@ -0,0 +1,17 @@
1
+ {
2
+ "name": "@atlaskit/emoji/resourced-emoji",
3
+ "main": "../dist/cjs/components/common/ResourcedEmoji.js",
4
+ "module": "../dist/esm/components/common/ResourcedEmoji.js",
5
+ "module:es2019": "../dist/es2019/components/common/ResourcedEmoji.js",
6
+ "sideEffects": [
7
+ "*.compiled.css"
8
+ ],
9
+ "types": "../dist/types/components/common/ResourcedEmoji.d.ts",
10
+ "typesVersions": {
11
+ ">=4.5 <5.9": {
12
+ "*": [
13
+ "../dist/types-ts4.5/components/common/ResourcedEmoji.d.ts"
14
+ ]
15
+ }
16
+ }
17
+ }
@@ -0,0 +1,17 @@
1
+ {
2
+ "name": "@atlaskit/emoji/sampling-ufo",
3
+ "main": "../dist/cjs/util/analytics/samplingUfo.js",
4
+ "module": "../dist/esm/util/analytics/samplingUfo.js",
5
+ "module:es2019": "../dist/es2019/util/analytics/samplingUfo.js",
6
+ "sideEffects": [
7
+ "*.compiled.css"
8
+ ],
9
+ "types": "../dist/types/util/analytics/samplingUfo.d.ts",
10
+ "typesVersions": {
11
+ ">=4.5 <5.9": {
12
+ "*": [
13
+ "../dist/types-ts4.5/util/analytics/samplingUfo.d.ts"
14
+ ]
15
+ }
16
+ }
17
+ }
@@ -0,0 +1,17 @@
1
+ {
2
+ "name": "@atlaskit/emoji/styles",
3
+ "main": "../dist/cjs/components/common/styles.js",
4
+ "module": "../dist/esm/components/common/styles.js",
5
+ "module:es2019": "../dist/es2019/components/common/styles.js",
6
+ "sideEffects": [
7
+ "*.compiled.css"
8
+ ],
9
+ "types": "../dist/types/components/common/styles.d.ts",
10
+ "typesVersions": {
11
+ ">=4.5 <5.9": {
12
+ "*": [
13
+ "../dist/types-ts4.5/components/common/styles.d.ts"
14
+ ]
15
+ }
16
+ }
17
+ }
@@ -0,0 +1,17 @@
1
+ {
2
+ "name": "@atlaskit/emoji/type-helpers",
3
+ "main": "../dist/cjs/util/type-helpers.js",
4
+ "module": "../dist/esm/util/type-helpers.js",
5
+ "module:es2019": "../dist/es2019/util/type-helpers.js",
6
+ "sideEffects": [
7
+ "*.compiled.css"
8
+ ],
9
+ "types": "../dist/types/util/type-helpers.d.ts",
10
+ "typesVersions": {
11
+ ">=4.5 <5.9": {
12
+ "*": [
13
+ "../dist/types-ts4.5/util/type-helpers.d.ts"
14
+ ]
15
+ }
16
+ }
17
+ }
@@ -0,0 +1,17 @@
1
+ {
2
+ "name": "@atlaskit/emoji/ufo-experiences",
3
+ "main": "../dist/cjs/util/analytics/ufoExperiences.js",
4
+ "module": "../dist/esm/util/analytics/ufoExperiences.js",
5
+ "module:es2019": "../dist/es2019/util/analytics/ufoExperiences.js",
6
+ "sideEffects": [
7
+ "*.compiled.css"
8
+ ],
9
+ "types": "../dist/types/util/analytics/ufoExperiences.d.ts",
10
+ "typesVersions": {
11
+ ">=4.5 <5.9": {
12
+ "*": [
13
+ "../dist/types-ts4.5/util/analytics/ufoExperiences.d.ts"
14
+ ]
15
+ }
16
+ }
17
+ }
@@ -0,0 +1,17 @@
1
+ {
2
+ "name": "@atlaskit/emoji/usage-frequency-tracker",
3
+ "main": "../dist/cjs/api/internal/UsageFrequencyTracker.js",
4
+ "module": "../dist/esm/api/internal/UsageFrequencyTracker.js",
5
+ "module:es2019": "../dist/es2019/api/internal/UsageFrequencyTracker.js",
6
+ "sideEffects": [
7
+ "*.compiled.css"
8
+ ],
9
+ "types": "../dist/types/api/internal/UsageFrequencyTracker.d.ts",
10
+ "typesVersions": {
11
+ ">=4.5 <5.9": {
12
+ "*": [
13
+ "../dist/types-ts4.5/api/internal/UsageFrequencyTracker.d.ts"
14
+ ]
15
+ }
16
+ }
17
+ }
@@ -0,0 +1,17 @@
1
+ {
2
+ "name": "@atlaskit/emoji/use-emoji",
3
+ "main": "../dist/cjs/hooks/useEmoji.js",
4
+ "module": "../dist/esm/hooks/useEmoji.js",
5
+ "module:es2019": "../dist/es2019/hooks/useEmoji.js",
6
+ "sideEffects": [
7
+ "*.compiled.css"
8
+ ],
9
+ "types": "../dist/types/hooks/useEmoji.d.ts",
10
+ "typesVersions": {
11
+ ">=4.5 <5.9": {
12
+ "*": [
13
+ "../dist/types-ts4.5/hooks/useEmoji.d.ts"
14
+ ]
15
+ }
16
+ }
17
+ }
@@ -0,0 +1,17 @@
1
+ {
2
+ "name": "@atlaskit/emoji/use-emoji-context",
3
+ "main": "../dist/cjs/hooks/useEmojiContext.js",
4
+ "module": "../dist/esm/hooks/useEmojiContext.js",
5
+ "module:es2019": "../dist/es2019/hooks/useEmojiContext.js",
6
+ "sideEffects": [
7
+ "*.compiled.css"
8
+ ],
9
+ "types": "../dist/types/hooks/useEmojiContext.d.ts",
10
+ "typesVersions": {
11
+ ">=4.5 <5.9": {
12
+ "*": [
13
+ "../dist/types-ts4.5/hooks/useEmojiContext.d.ts"
14
+ ]
15
+ }
16
+ }
17
+ }