@atlaskit/emoji 65.0.0 → 65.2.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 (115) hide show
  1. package/CHANGELOG.md +36 -0
  2. package/dist/cjs/components/common/CachingEmoji.js +84 -151
  3. package/dist/cjs/components/common/Emoji.js +2 -2
  4. package/dist/cjs/components/common/EmojiActions.js +129 -175
  5. package/dist/cjs/components/common/EmojiErrorMessage.js +23 -59
  6. package/dist/cjs/components/common/EmojiPreviewComponent.js +1 -0
  7. package/dist/cjs/components/common/EmojiUploadPicker.js +235 -293
  8. package/dist/cjs/components/common/FileChooser.js +34 -71
  9. package/dist/cjs/components/common/Popup.js +105 -154
  10. package/dist/cjs/components/common/ResourcedEmojiComponent.js +10 -5
  11. package/dist/cjs/components/common/RetryableButton.js +43 -64
  12. package/dist/cjs/components/common/ToneSelector.js +50 -89
  13. package/dist/cjs/components/common/styles.js +14 -16
  14. package/dist/cjs/components/hooks.js +16 -0
  15. package/dist/cjs/components/picker/EmojiPickerCategoryHeading.js +16 -48
  16. package/dist/cjs/components/picker/EmojiPickerComponent.js +496 -508
  17. package/dist/cjs/components/picker/EmojiPickerEmojiRow.js +33 -60
  18. package/dist/cjs/components/picker/EmojiPickerFooter.js +13 -46
  19. package/dist/cjs/components/picker/styles.js +16 -13
  20. package/dist/cjs/components/uploader/EmojiUploadComponent.js +124 -109
  21. package/dist/cjs/hooks/useEmojiContext.js +16 -0
  22. package/dist/cjs/hooks/usePrevious.js +16 -0
  23. package/dist/cjs/index.js +16 -0
  24. package/dist/cjs/util/constants.js +3 -1
  25. package/dist/cjs/version.json +1 -1
  26. package/dist/es2019/components/common/CachingEmoji.js +65 -112
  27. package/dist/es2019/components/common/Emoji.js +2 -2
  28. package/dist/es2019/components/common/EmojiActions.js +124 -150
  29. package/dist/es2019/components/common/EmojiErrorMessage.js +22 -26
  30. package/dist/es2019/components/common/EmojiPreviewComponent.js +1 -0
  31. package/dist/es2019/components/common/EmojiUploadPicker.js +190 -253
  32. package/dist/es2019/components/common/FileChooser.js +37 -40
  33. package/dist/es2019/components/common/Popup.js +89 -109
  34. package/dist/es2019/components/common/ResourcedEmojiComponent.js +5 -4
  35. package/dist/es2019/components/common/RetryableButton.js +43 -34
  36. package/dist/es2019/components/common/ToneSelector.js +46 -59
  37. package/dist/es2019/components/common/styles.js +9 -9
  38. package/dist/es2019/components/hooks.js +8 -0
  39. package/dist/es2019/components/picker/EmojiPickerCategoryHeading.js +13 -17
  40. package/dist/es2019/components/picker/EmojiPickerComponent.js +417 -497
  41. package/dist/es2019/components/picker/EmojiPickerEmojiRow.js +32 -35
  42. package/dist/es2019/components/picker/EmojiPickerFooter.js +11 -19
  43. package/dist/es2019/components/picker/styles.js +16 -14
  44. package/dist/es2019/components/uploader/EmojiUploadComponent.js +81 -91
  45. package/dist/es2019/hooks/useEmojiContext.js +3 -0
  46. package/dist/es2019/hooks/usePrevious.js +8 -0
  47. package/dist/es2019/index.js +4 -1
  48. package/dist/es2019/util/constants.js +1 -0
  49. package/dist/es2019/version.json +1 -1
  50. package/dist/esm/components/common/CachingEmoji.js +86 -156
  51. package/dist/esm/components/common/Emoji.js +2 -2
  52. package/dist/esm/components/common/EmojiActions.js +129 -176
  53. package/dist/esm/components/common/EmojiErrorMessage.js +21 -56
  54. package/dist/esm/components/common/EmojiPreviewComponent.js +1 -0
  55. package/dist/esm/components/common/EmojiUploadPicker.js +233 -299
  56. package/dist/esm/components/common/FileChooser.js +34 -70
  57. package/dist/esm/components/common/Popup.js +104 -155
  58. package/dist/esm/components/common/ResourcedEmojiComponent.js +8 -4
  59. package/dist/esm/components/common/RetryableButton.js +40 -60
  60. package/dist/esm/components/common/ToneSelector.js +50 -87
  61. package/dist/esm/components/common/styles.js +10 -10
  62. package/dist/esm/components/hooks.js +8 -0
  63. package/dist/esm/components/picker/EmojiPickerCategoryHeading.js +14 -43
  64. package/dist/esm/components/picker/EmojiPickerComponent.js +486 -526
  65. package/dist/esm/components/picker/EmojiPickerEmojiRow.js +31 -59
  66. package/dist/esm/components/picker/EmojiPickerFooter.js +14 -47
  67. package/dist/esm/components/picker/styles.js +16 -14
  68. package/dist/esm/components/uploader/EmojiUploadComponent.js +119 -113
  69. package/dist/esm/hooks/useEmojiContext.js +5 -0
  70. package/dist/esm/hooks/usePrevious.js +8 -0
  71. package/dist/esm/index.js +4 -1
  72. package/dist/esm/util/constants.js +1 -0
  73. package/dist/esm/version.json +1 -1
  74. package/dist/types/api/EmojiResource.d.ts +2 -3
  75. package/dist/types/components/common/CachingEmoji.d.ts +3 -13
  76. package/dist/types/components/common/Emoji.d.ts +1 -2
  77. package/dist/types/components/common/EmojiActions.d.ts +6 -17
  78. package/dist/types/components/common/EmojiErrorMessage.d.ts +3 -6
  79. package/dist/types/components/common/EmojiPreviewComponent.d.ts +2 -2
  80. package/dist/types/components/common/EmojiUploadPicker.d.ts +3 -27
  81. package/dist/types/components/common/FileChooser.d.ts +3 -5
  82. package/dist/types/components/common/LoadingEmojiComponent.d.ts +3 -0
  83. package/dist/types/components/common/Popup.d.ts +3 -20
  84. package/dist/types/components/common/ResourcedEmojiComponent.d.ts +23 -11
  85. package/dist/types/components/common/RetryableButton.d.ts +3 -7
  86. package/dist/types/components/common/ToneSelector.d.ts +4 -10
  87. package/dist/types/components/common/setSkinToneAriaLabelText.d.ts +1 -1
  88. package/dist/types/components/common/styles.d.ts +1 -3
  89. package/dist/types/components/hooks.d.ts +1 -0
  90. package/dist/types/components/picker/CategorySelector.d.ts +1 -1
  91. package/dist/types/components/picker/EmojiPicker.d.ts +12 -3
  92. package/dist/types/components/picker/EmojiPickerCategoryHeading.d.ts +3 -4
  93. package/dist/types/components/picker/EmojiPickerComponent.d.ts +14 -76
  94. package/dist/types/components/picker/EmojiPickerEmojiRow.d.ts +3 -4
  95. package/dist/types/components/picker/EmojiPickerFooter.d.ts +3 -5
  96. package/dist/types/components/picker/styles.d.ts +1 -1
  97. package/dist/types/components/typeahead/EmojiTypeAheadComponent.d.ts +18 -0
  98. package/dist/types/components/uploader/EmojiUploadComponent.d.ts +3 -17
  99. package/dist/types/components/uploader/EmojiUploader.d.ts +5 -7
  100. package/dist/types/hooks/useEmojiContext.d.ts +1 -0
  101. package/dist/types/hooks/usePrevious.d.ts +1 -0
  102. package/dist/types/index.d.ts +3 -1
  103. package/dist/types/types.d.ts +2 -1
  104. package/dist/types/util/constants.d.ts +1 -0
  105. package/docs/0-intro.tsx +35 -27
  106. package/docs/1-resourced-emoji.tsx +74 -0
  107. package/docs/2-emoji-picker.tsx +56 -0
  108. package/docs/3-typeahead.tsx +20 -0
  109. package/docs/4-emoji-provider.tsx +98 -0
  110. package/local-config-example.ts +3 -1
  111. package/package.json +19 -6
  112. package/dist/cjs/components/common/EmojiPreview.js +0 -194
  113. package/dist/es2019/components/common/EmojiPreview.js +0 -152
  114. package/dist/esm/components/common/EmojiPreview.js +0 -170
  115. package/dist/types/components/common/EmojiPreview.d.ts +0 -31
@@ -1,17 +1,11 @@
1
- import _classCallCheck from "@babel/runtime/helpers/classCallCheck";
2
- import _createClass from "@babel/runtime/helpers/createClass";
3
- import _assertThisInitialized from "@babel/runtime/helpers/assertThisInitialized";
4
- import _inherits from "@babel/runtime/helpers/inherits";
5
- import _possibleConstructorReturn from "@babel/runtime/helpers/possibleConstructorReturn";
6
- import _getPrototypeOf from "@babel/runtime/helpers/getPrototypeOf";
7
1
  import _defineProperty from "@babel/runtime/helpers/defineProperty";
8
2
  import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray";
9
3
 
10
- function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
4
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
11
5
 
12
- function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
6
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
13
7
 
14
- import React, { createRef, PureComponent } from 'react';
8
+ import React, { useEffect, useMemo, useRef } from 'react';
15
9
  import EmojiButton from './EmojiButton';
16
10
  import { withAnalyticsEvents } from '@atlaskit/analytics-next';
17
11
  import { createAndFireEventInElementsChannel, toneSelectedEvent, toneSelectorOpenedEvent } from '../../util/analytics';
@@ -25,91 +19,60 @@ var extractAllTones = function extractAllTones(emoji) {
25
19
  return [emoji];
26
20
  };
27
21
 
28
- export var ToneSelectorInternal = /*#__PURE__*/function (_PureComponent) {
29
- _inherits(ToneSelectorInternal, _PureComponent);
30
-
31
- var _super = _createSuper(ToneSelectorInternal);
32
-
33
- function ToneSelectorInternal() {
34
- var _this;
35
-
36
- _classCallCheck(this, ToneSelectorInternal);
37
-
38
- for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
39
- args[_key] = arguments[_key];
22
+ export var ToneSelectorInternal = function ToneSelectorInternal(props) {
23
+ var createAnalyticsEvent = props.createAnalyticsEvent,
24
+ emoji = props.emoji,
25
+ previewEmojiId = props.previewEmojiId,
26
+ onToneSelected = props.onToneSelected;
27
+ var isMounted = useRef(false);
28
+ var firstToneButtonRef = useRef(null);
29
+ var emojiToneCollection = useMemo(function () {
30
+ return extractAllTones(emoji).map(function (tone, index) {
31
+ return _objectSpread(_objectSpread({}, tone), {}, {
32
+ focused: tone.id !== previewEmojiId,
33
+ label: setSkinToneAriaLabelText(tone.name),
34
+ toneId: index
35
+ });
36
+ });
37
+ }, [emoji, previewEmojiId]);
38
+ useEffect(function () {
39
+ if (firstToneButtonRef.current) {
40
+ firstToneButtonRef.current.focus();
40
41
  }
42
+ }, [firstToneButtonRef]);
41
43
 
42
- _this = _super.call.apply(_super, [this].concat(args));
43
-
44
- _defineProperty(_assertThisInitialized(_this), "firstToneButtonRef", /*#__PURE__*/createRef());
44
+ var fireAnalyticsEvent = function fireAnalyticsEvent(event) {
45
+ if (createAnalyticsEvent) {
46
+ createAndFireEventInElementsChannel(event)(createAnalyticsEvent);
47
+ }
48
+ };
45
49
 
46
- _defineProperty(_assertThisInitialized(_this), "onToneSelectedHandler", function (skinTone) {
47
- var onToneSelected = _this.props.onToneSelected;
48
- onToneSelected(skinTone);
50
+ var onToneSelectedHandler = function onToneSelectedHandler(toneValue) {
51
+ return function () {
52
+ onToneSelected(toneValue);
49
53
  var toneList = ['default', 'light', 'mediumLight', 'medium', 'mediumDark', 'dark'];
50
-
51
- _this.fireEvent(toneSelectedEvent({
52
- skinToneModifier: toneList[skinTone]
54
+ fireAnalyticsEvent(toneSelectedEvent({
55
+ skinToneModifier: toneList[toneValue]
53
56
  }));
54
- });
57
+ };
58
+ };
55
59
 
56
- return _this;
60
+ if (!isMounted.current) {
61
+ fireAnalyticsEvent(toneSelectorOpenedEvent({}));
57
62
  }
58
63
 
59
- _createClass(ToneSelectorInternal, [{
60
- key: "fireEvent",
61
- value: function fireEvent(event) {
62
- var createAnalyticsEvent = this.props.createAnalyticsEvent;
63
-
64
- if (createAnalyticsEvent) {
65
- createAndFireEventInElementsChannel(event)(createAnalyticsEvent);
66
- }
67
- }
68
- }, {
69
- key: "componentDidMount",
70
- value: function componentDidMount() {
71
- var _this$firstToneButton, _this$firstToneButton2;
72
-
73
- (_this$firstToneButton = this.firstToneButtonRef) === null || _this$firstToneButton === void 0 ? void 0 : (_this$firstToneButton2 = _this$firstToneButton.current) === null || _this$firstToneButton2 === void 0 ? void 0 : _this$firstToneButton2.focus();
74
- }
75
- }, {
76
- key: "UNSAFE_componentWillMount",
77
- value: function UNSAFE_componentWillMount() {
78
- this.fireEvent(toneSelectorOpenedEvent({}));
79
- }
80
- }, {
81
- key: "render",
82
- value: function render() {
83
- var _this2 = this;
84
-
85
- var _this$props = this.props,
86
- emoji = _this$props.emoji,
87
- previewEmojiId = _this$props.previewEmojiId;
88
- var toneEmojis = extractAllTones(emoji);
89
- var isRefAlreadySet = false;
90
- return /*#__PURE__*/React.createElement("div", null, toneEmojis.map(function (tone, i) {
91
- var shouldSetRef = !isRefAlreadySet && tone.id !== previewEmojiId;
92
-
93
- if (shouldSetRef) {
94
- isRefAlreadySet = true;
95
- }
96
-
97
- return /*#__PURE__*/React.createElement(EmojiButton, {
98
- ref: shouldSetRef ? _this2.firstToneButtonRef : null,
99
- shouldHideButton: tone.id === previewEmojiId,
100
- ariaLabelText: setSkinToneAriaLabelText(tone.name),
101
- key: "".concat(tone.id),
102
- onSelected: function onSelected() {
103
- return _this2.onToneSelectedHandler(i);
104
- },
105
- emoji: tone,
106
- selectOnHover: true
107
- });
108
- }));
109
- }
110
- }]);
111
-
112
- return ToneSelectorInternal;
113
- }(PureComponent);
64
+ isMounted.current = true;
65
+ return /*#__PURE__*/React.createElement("div", null, emojiToneCollection.map(function (tone) {
66
+ return /*#__PURE__*/React.createElement(EmojiButton, {
67
+ ref: tone.focused ? firstToneButtonRef : null,
68
+ shouldHideButton: tone.id === previewEmojiId,
69
+ ariaLabelText: tone.label,
70
+ key: "".concat(tone.id),
71
+ onSelected: onToneSelectedHandler(tone.toneId),
72
+ emoji: tone,
73
+ selectOnHover: true
74
+ });
75
+ }));
76
+ };
114
77
  var ToneSelector = withAnalyticsEvents()(ToneSelectorInternal);
115
78
  export default ToneSelector;
@@ -33,7 +33,7 @@ export var emojiToneSelectorContainer = css({
33
33
  flex: 1,
34
34
  display: 'flex',
35
35
  justifyContent: 'flex-end',
36
- padding: '8px 10px 8px 0'
36
+ padding: '10px 10px 11px 0'
37
37
  });
38
38
  export var emojiStyles = css((_css = {
39
39
  borderRadius: "".concat(borderRadius(), "px"),
@@ -112,8 +112,6 @@ export var hiddenToneButton = css({
112
112
  display: 'none'
113
113
  }); // Emoji Preview
114
114
 
115
- export var buttons = 'emoji-common-buttons';
116
- export var toneSelectorContainer = 'emoji-common-tone-selector-container';
117
115
  export var emojiPickerAddEmoji = 'emoji-picker-add-emoji';
118
116
  export var previewText = css({
119
117
  display: 'flex',
@@ -155,7 +153,9 @@ export var preview = css({
155
153
  display: 'flex',
156
154
  flexDirection: 'row',
157
155
  flexWrap: 'nowrap',
158
- padding: '10px'
156
+ padding: '10px',
157
+ height: '32px',
158
+ alignItems: 'center'
159
159
  });
160
160
  export var previewImg = css((_css6 = {
161
161
  display: 'inline-block',
@@ -175,12 +175,7 @@ export var previewImg = css((_css6 = {
175
175
  maxWidth: '32px',
176
176
  padding: 0,
177
177
  display: 'block'
178
- }), _css6));
179
- export var emojiPreview = css({
180
- display: 'flex',
181
- height: '50px',
182
- boxSizing: 'border-box'
183
- }); // Scrollable
178
+ }), _css6)); // Scrollable
184
179
 
185
180
  export var emojiScrollable = css({
186
181
  border: "1px solid ".concat(token('color.border', '#fff')),
@@ -357,4 +352,9 @@ export var cancelButton = css({
357
352
  export var buttonSpinner = css({
358
353
  marginRight: '10px',
359
354
  marginLeft: '10px'
355
+ });
356
+ export var emojiActionsWrapper = css({
357
+ display: 'flex',
358
+ justifyContent: 'flex-end',
359
+ alignItems: 'center'
360
360
  });
@@ -0,0 +1,8 @@
1
+ import { useRef, useEffect } from 'react';
2
+ export function useDidMount() {
3
+ var didMountRef = useRef(false);
4
+ useEffect(function () {
5
+ didMountRef.current = true;
6
+ }, []);
7
+ return didMountRef.current;
8
+ }
@@ -1,50 +1,21 @@
1
- import _classCallCheck from "@babel/runtime/helpers/classCallCheck";
2
- import _createClass from "@babel/runtime/helpers/createClass";
3
- import _inherits from "@babel/runtime/helpers/inherits";
4
- import _possibleConstructorReturn from "@babel/runtime/helpers/possibleConstructorReturn";
5
- import _getPrototypeOf from "@babel/runtime/helpers/getPrototypeOf";
6
-
7
- function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
8
-
9
- function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
10
-
11
1
  /** @jsx jsx */
12
2
  import { jsx } from '@emotion/core';
13
- import { PureComponent } from 'react';
14
3
  import { FormattedMessage } from 'react-intl-next';
15
4
  import { isMessagesKey } from '../../util/type-helpers';
16
5
  import { messages } from '../i18n';
17
6
  import { emojiCategoryTitle } from './styles';
18
7
 
19
- var EmojiPickerCategoryHeading = /*#__PURE__*/function (_PureComponent) {
20
- _inherits(EmojiPickerCategoryHeading, _PureComponent);
21
-
22
- var _super = _createSuper(EmojiPickerCategoryHeading);
23
-
24
- function EmojiPickerCategoryHeading() {
25
- _classCallCheck(this, EmojiPickerCategoryHeading);
26
-
27
- return _super.apply(this, arguments);
28
- }
29
-
30
- _createClass(EmojiPickerCategoryHeading, [{
31
- key: "render",
32
- value: function render() {
33
- var _this$props = this.props,
34
- id = _this$props.id,
35
- title = _this$props.title,
36
- className = _this$props.className;
37
- return jsx("div", {
38
- id: id,
39
- "data-category-id": id,
40
- className: className
41
- }, jsx("div", {
42
- css: emojiCategoryTitle
43
- }, isMessagesKey(title) ? jsx(FormattedMessage, messages[title]) : title));
44
- }
45
- }]);
46
-
47
- return EmojiPickerCategoryHeading;
48
- }(PureComponent);
49
-
50
- export { EmojiPickerCategoryHeading as default };
8
+ var EmojiPickerCategoryHeading = function EmojiPickerCategoryHeading(_ref) {
9
+ var id = _ref.id,
10
+ title = _ref.title,
11
+ className = _ref.className;
12
+ return jsx("div", {
13
+ id: id,
14
+ "data-category-id": id,
15
+ className: className
16
+ }, jsx("div", {
17
+ css: emojiCategoryTitle
18
+ }, isMessagesKey(title) ? jsx(FormattedMessage, messages[title]) : title));
19
+ };
20
+
21
+ export default EmojiPickerCategoryHeading;