@atlaskit/emoji 70.10.5 → 70.10.7

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.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,20 @@
1
1
  # @atlaskit/emoji
2
2
 
3
+ ## 70.10.7
4
+
5
+ ### Patch Changes
6
+
7
+ - Updated dependencies
8
+
9
+ ## 70.10.6
10
+
11
+ ### Patch Changes
12
+
13
+ - [`95ba1db6aa5f7`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/95ba1db6aa5f7) -
14
+ Use findByEmojiId with retry for shortName-only lookups and render native unicode characters for
15
+ STANDARD emojis behind platform_twemoji_removal_unicode_emojis feature gate
16
+ - Updated dependencies
17
+
3
18
  ## 70.10.5
4
19
 
5
20
  ### Patch Changes
@@ -20,6 +20,7 @@ var _analytics = require("../../util/analytics");
20
20
  var _EmojiCommonProvider = require("../../context/EmojiCommonProvider");
21
21
  var _ufoExperiences = require("../../util/analytics/ufoExperiences");
22
22
  var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
23
+ var _emojiIdToEmoji = require("../../util/emojiIdToEmoji");
23
24
  function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
24
25
  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; }
25
26
  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; }
@@ -88,7 +89,10 @@ var ResourcedEmojiComponent = exports.ResourcedEmojiComponent = function Resourc
88
89
  }
89
90
  });
90
91
  }
91
- foundEmoji = _emojiProvider.fetchByEmojiId(emojiId, optimisticFetch);
92
+
93
+ // When id is absent/empty, fetchByEmojiId won't retry if the catalogue isn't loaded yet.
94
+ // findByEmojiId has retryIfLoading built in — use it for shortName-only lookups.
95
+ foundEmoji = !emojiId.id && (0, _platformFeatureFlags.fg)('platform_twemoji_removal_unicode_emojis') ? _emojiProvider.findByEmojiId(emojiId) : _emojiProvider.fetchByEmojiId(emojiId, optimisticFetch);
92
96
  (0, _analytics.sampledUfoRenderedEmoji)(emojiId).mark(_types.UfoEmojiTimings.METADATA_START);
93
97
  if ((0, _typeHelpers.isPromise)(foundEmoji)) {
94
98
  setLoaded(false);
@@ -170,14 +174,35 @@ var ResourcedEmojiComponent = exports.ResourcedEmojiComponent = function Resourc
170
174
  });
171
175
  }, [emojiProvider]);
172
176
  var emojiRenderState = (0, _react.useMemo)(function () {
173
- if (!emoji && !loaded && !optimisticImageURL) {
177
+ if (!emoji && !loaded && !optimisticImageURL || optimisticImageURL && !emoji && !id && (0, _platformFeatureFlags.fg)('platform_twemoji_removal_unicode_emojis')) {
174
178
  return ResourcedEmojiComponentRenderStatesEnum.INITIAL;
175
179
  } else if (!emoji && loaded || imageLoadError) {
176
180
  return ResourcedEmojiComponentRenderStatesEnum.FALLBACK;
177
181
  }
178
182
  return ResourcedEmojiComponentRenderStatesEnum.EMOJI;
179
- }, [emoji, loaded, optimisticImageURL, imageLoadError]);
183
+ }, [emoji, loaded, optimisticImageURL, imageLoadError, id]);
180
184
  var optimisticEmojiDescription = (0, _react.useMemo)(function () {
185
+ // For STANDARD emojis, use native unicode character instead of optimistic image.
186
+ if ((0, _platformFeatureFlags.fg)('platform_twemoji_removal_unicode_emojis')) {
187
+ var resolvedId = id || (emoji === null || emoji === void 0 ? void 0 : emoji.id);
188
+ if (!resolvedId) return undefined;
189
+ var unicodeEmoji = (0, _emojiIdToEmoji.emojiIdToEmoji)(resolvedId);
190
+ if (unicodeEmoji) {
191
+ return _objectSpread(_objectSpread({}, emoji !== null && emoji !== void 0 ? emoji : {
192
+ id: id,
193
+ shortName: shortName,
194
+ fallback: fallback,
195
+ type: 'STANDARD',
196
+ category: '',
197
+ searchable: true
198
+ }), {}, {
199
+ representation: {
200
+ unicodeEmoji: unicodeEmoji
201
+ }
202
+ });
203
+ }
204
+ }
205
+
181
206
  // reduce blast radius by targeting page title
182
207
  if (pageTitleEmoji && optimisticImageURL && (0, _platformFeatureFlags.fg)('platform_emoji_prevent_img_src_changing')) {
183
208
  return {
@@ -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.10.4"
23
+ packageVersion: "70.10.6"
24
24
  }, attributes)
25
25
  };
26
26
  };
@@ -8,6 +8,7 @@ import { sampledUfoRenderedEmoji } from '../../util/analytics';
8
8
  import { EmojiCommonProvider } from '../../context/EmojiCommonProvider';
9
9
  import { hasUfoMarked } from '../../util/analytics/ufoExperiences';
10
10
  import { fg } from '@atlaskit/platform-feature-flags';
11
+ import { emojiIdToEmoji } from '../../util/emojiIdToEmoji';
11
12
  var ResourcedEmojiComponentRenderStatesEnum = /*#__PURE__*/function (ResourcedEmojiComponentRenderStatesEnum) {
12
13
  ResourcedEmojiComponentRenderStatesEnum["INITIAL"] = "INITIAL";
13
14
  ResourcedEmojiComponentRenderStatesEnum["FALLBACK"] = "FALLBACK";
@@ -49,7 +50,10 @@ export const ResourcedEmojiComponent = ({
49
50
  }
50
51
  });
51
52
  }
52
- const foundEmoji = _emojiProvider.fetchByEmojiId(emojiId, optimisticFetch);
53
+
54
+ // When id is absent/empty, fetchByEmojiId won't retry if the catalogue isn't loaded yet.
55
+ // findByEmojiId has retryIfLoading built in — use it for shortName-only lookups.
56
+ const foundEmoji = !emojiId.id && fg('platform_twemoji_removal_unicode_emojis') ? _emojiProvider.findByEmojiId(emojiId) : _emojiProvider.fetchByEmojiId(emojiId, optimisticFetch);
53
57
  sampledUfoRenderedEmoji(emojiId).mark(UfoEmojiTimings.METADATA_START);
54
58
  if (isPromise(foundEmoji)) {
55
59
  setLoaded(false);
@@ -122,14 +126,36 @@ export const ResourcedEmojiComponent = ({
122
126
  });
123
127
  }, [emojiProvider]);
124
128
  const emojiRenderState = useMemo(() => {
125
- if (!emoji && !loaded && !optimisticImageURL) {
129
+ if (!emoji && !loaded && !optimisticImageURL || optimisticImageURL && !emoji && !id && fg('platform_twemoji_removal_unicode_emojis')) {
126
130
  return ResourcedEmojiComponentRenderStatesEnum.INITIAL;
127
131
  } else if (!emoji && loaded || imageLoadError) {
128
132
  return ResourcedEmojiComponentRenderStatesEnum.FALLBACK;
129
133
  }
130
134
  return ResourcedEmojiComponentRenderStatesEnum.EMOJI;
131
- }, [emoji, loaded, optimisticImageURL, imageLoadError]);
135
+ }, [emoji, loaded, optimisticImageURL, imageLoadError, id]);
132
136
  const optimisticEmojiDescription = useMemo(() => {
137
+ // For STANDARD emojis, use native unicode character instead of optimistic image.
138
+ if (fg('platform_twemoji_removal_unicode_emojis')) {
139
+ const resolvedId = id || (emoji === null || emoji === void 0 ? void 0 : emoji.id);
140
+ if (!resolvedId) return undefined;
141
+ const unicodeEmoji = emojiIdToEmoji(resolvedId);
142
+ if (unicodeEmoji) {
143
+ return {
144
+ ...(emoji !== null && emoji !== void 0 ? emoji : {
145
+ id,
146
+ shortName,
147
+ fallback,
148
+ type: 'STANDARD',
149
+ category: '',
150
+ searchable: true
151
+ }),
152
+ representation: {
153
+ unicodeEmoji
154
+ }
155
+ };
156
+ }
157
+ }
158
+
133
159
  // reduce blast radius by targeting page title
134
160
  if (pageTitleEmoji && optimisticImageURL && fg('platform_emoji_prevent_img_src_changing')) {
135
161
  return {
@@ -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.10.4",
12
+ packageVersion: "70.10.6",
13
13
  ...attributes
14
14
  }
15
15
  });
@@ -14,6 +14,7 @@ import { sampledUfoRenderedEmoji } from '../../util/analytics';
14
14
  import { EmojiCommonProvider } from '../../context/EmojiCommonProvider';
15
15
  import { hasUfoMarked } from '../../util/analytics/ufoExperiences';
16
16
  import { fg } from '@atlaskit/platform-feature-flags';
17
+ import { emojiIdToEmoji } from '../../util/emojiIdToEmoji';
17
18
  var ResourcedEmojiComponentRenderStatesEnum = /*#__PURE__*/function (ResourcedEmojiComponentRenderStatesEnum) {
18
19
  ResourcedEmojiComponentRenderStatesEnum["INITIAL"] = "INITIAL";
19
20
  ResourcedEmojiComponentRenderStatesEnum["FALLBACK"] = "FALLBACK";
@@ -79,7 +80,10 @@ export var ResourcedEmojiComponent = function ResourcedEmojiComponent(_ref) {
79
80
  }
80
81
  });
81
82
  }
82
- foundEmoji = _emojiProvider.fetchByEmojiId(emojiId, optimisticFetch);
83
+
84
+ // When id is absent/empty, fetchByEmojiId won't retry if the catalogue isn't loaded yet.
85
+ // findByEmojiId has retryIfLoading built in — use it for shortName-only lookups.
86
+ foundEmoji = !emojiId.id && fg('platform_twemoji_removal_unicode_emojis') ? _emojiProvider.findByEmojiId(emojiId) : _emojiProvider.fetchByEmojiId(emojiId, optimisticFetch);
83
87
  sampledUfoRenderedEmoji(emojiId).mark(UfoEmojiTimings.METADATA_START);
84
88
  if (isPromise(foundEmoji)) {
85
89
  setLoaded(false);
@@ -161,14 +165,35 @@ export var ResourcedEmojiComponent = function ResourcedEmojiComponent(_ref) {
161
165
  });
162
166
  }, [emojiProvider]);
163
167
  var emojiRenderState = useMemo(function () {
164
- if (!emoji && !loaded && !optimisticImageURL) {
168
+ if (!emoji && !loaded && !optimisticImageURL || optimisticImageURL && !emoji && !id && fg('platform_twemoji_removal_unicode_emojis')) {
165
169
  return ResourcedEmojiComponentRenderStatesEnum.INITIAL;
166
170
  } else if (!emoji && loaded || imageLoadError) {
167
171
  return ResourcedEmojiComponentRenderStatesEnum.FALLBACK;
168
172
  }
169
173
  return ResourcedEmojiComponentRenderStatesEnum.EMOJI;
170
- }, [emoji, loaded, optimisticImageURL, imageLoadError]);
174
+ }, [emoji, loaded, optimisticImageURL, imageLoadError, id]);
171
175
  var optimisticEmojiDescription = useMemo(function () {
176
+ // For STANDARD emojis, use native unicode character instead of optimistic image.
177
+ if (fg('platform_twemoji_removal_unicode_emojis')) {
178
+ var resolvedId = id || (emoji === null || emoji === void 0 ? void 0 : emoji.id);
179
+ if (!resolvedId) return undefined;
180
+ var unicodeEmoji = emojiIdToEmoji(resolvedId);
181
+ if (unicodeEmoji) {
182
+ return _objectSpread(_objectSpread({}, emoji !== null && emoji !== void 0 ? emoji : {
183
+ id: id,
184
+ shortName: shortName,
185
+ fallback: fallback,
186
+ type: 'STANDARD',
187
+ category: '',
188
+ searchable: true
189
+ }), {}, {
190
+ representation: {
191
+ unicodeEmoji: unicodeEmoji
192
+ }
193
+ });
194
+ }
195
+ }
196
+
172
197
  // reduce blast radius by targeting page title
173
198
  if (pageTitleEmoji && optimisticImageURL && fg('platform_emoji_prevent_img_src_changing')) {
174
199
  return {
@@ -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.10.4"
17
+ packageVersion: "70.10.6"
18
18
  }, attributes)
19
19
  };
20
20
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@atlaskit/emoji",
3
- "version": "70.10.5",
3
+ "version": "70.10.7",
4
4
  "description": "Fabric emoji React components",
5
5
  "publishConfig": {
6
6
  "registry": "https://registry.npmjs.org/"
@@ -44,7 +44,7 @@
44
44
  "@atlaskit/css": "^0.19.0",
45
45
  "@atlaskit/form": "^15.5.0",
46
46
  "@atlaskit/heading": "^5.4.0",
47
- "@atlaskit/icon": "^35.0.0",
47
+ "@atlaskit/icon": "^35.1.0",
48
48
  "@atlaskit/media-client": "^36.3.0",
49
49
  "@atlaskit/media-client-react": "^5.1.0",
50
50
  "@atlaskit/platform-feature-flags": "^1.1.0",
@@ -52,9 +52,9 @@
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": "^82.4.0",
55
+ "@atlaskit/tmp-editor-statsig": "^83.0.0",
56
56
  "@atlaskit/tokens": "^13.0.0",
57
- "@atlaskit/tooltip": "^22.2.0",
57
+ "@atlaskit/tooltip": "^22.3.0",
58
58
  "@atlaskit/ufo": "^0.5.0",
59
59
  "@atlaskit/util-service-support": "^6.4.0",
60
60
  "@atlaskit/visually-hidden": "^3.1.0",
@@ -80,7 +80,7 @@
80
80
  "@atlaskit/elements-test-helpers": "workspace:^",
81
81
  "@atlaskit/media-core": "^37.1.0",
82
82
  "@atlaskit/ssr": "workspace:^",
83
- "@atlaskit/theme": "^24.0.0",
83
+ "@atlaskit/theme": "^25.0.0",
84
84
  "@atlassian/a11y-jest-testing": "^0.11.0",
85
85
  "@atlassian/feature-flags-test-utils": "^1.1.0",
86
86
  "@emotion/jest": "^11.8.0",