@atlaskit/editor-plugin-emoji 11.2.5 → 11.3.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.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,17 @@
1
1
  # @atlaskit/editor-plugin-emoji
2
2
 
3
+ ## 11.3.0
4
+
5
+ ### Minor Changes
6
+
7
+ - [`81637ec91afd1`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/81637ec91afd1) -
8
+ Represent standard emojis as native Unicode characters instead of images. Updates
9
+ EmojiNodeDataProvider to support Unicode representations.
10
+
11
+ ### Patch Changes
12
+
13
+ - Updated dependencies
14
+
3
15
  ## 11.2.5
4
16
 
5
17
  ### Patch Changes
@@ -15,7 +15,9 @@ var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits
15
15
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
16
16
  var _coreUtils = require("@atlaskit/editor-common/core-utils");
17
17
  var _emoji = require("@atlaskit/emoji");
18
+ var _emojiIdToEmoji = require("@atlaskit/emoji/emoji-id-to-emoji");
18
19
  var _nodeDataProvider = require("@atlaskit/node-data-provider");
20
+ var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
19
21
  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
22
  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
23
  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)); }
@@ -96,6 +98,26 @@ var EmojiNodeDataProvider = exports.EmojiNodeDataProvider = /*#__PURE__*/functio
96
98
  break;
97
99
  }
98
100
  return _context2.abrupt("return", nodes.map(function (node) {
101
+ if ((0, _platformFeatureFlags.fg)('platform_twemoji_removal_unicode_emojis')) {
102
+ // Skip SSR for nodes without an Id
103
+ if (!node.attrs.id) {
104
+ return undefined;
105
+ }
106
+ var unicodeEmoji = (0, _emojiIdToEmoji.emojiIdToEmoji)(node.attrs.id);
107
+ if (unicodeEmoji) {
108
+ return {
109
+ id: node.attrs.id,
110
+ shortName: node.attrs.shortName,
111
+ fallback: node.attrs.text,
112
+ representation: {
113
+ unicodeEmoji: unicodeEmoji
114
+ },
115
+ searchable: true,
116
+ type: '',
117
+ category: ''
118
+ };
119
+ }
120
+ }
99
121
  var emojiId = {
100
122
  id: node.attrs.id,
101
123
  shortName: node.attrs.shortName,
@@ -125,7 +147,7 @@ var EmojiNodeDataProvider = exports.EmojiNodeDataProvider = /*#__PURE__*/functio
125
147
  emojiProvider = _context2.sent;
126
148
  fetches = nodes.map( /*#__PURE__*/function () {
127
149
  var _ref = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(node) {
128
- var emojiId, result, optimisticImageURL;
150
+ var emojiId, result, unicodeEmoji, optimisticImageURL;
129
151
  return _regenerator.default.wrap(function (_context) {
130
152
  while (1) switch (_context.prev = _context.next) {
131
153
  case 0:
@@ -138,13 +160,28 @@ var EmojiNodeDataProvider = exports.EmojiNodeDataProvider = /*#__PURE__*/functio
138
160
  return emojiProvider.fetchByEmojiId(emojiId, true);
139
161
  case 1:
140
162
  result = _context.sent;
141
- if (!(getOptimisticImageUrl && result)) {
163
+ if (!(node.attrs.id && result && (0, _platformFeatureFlags.fg)('platform_twemoji_removal_unicode_emojis'))) {
164
+ _context.next = 2;
165
+ break;
166
+ }
167
+ unicodeEmoji = (0, _emojiIdToEmoji.emojiIdToEmoji)(node.attrs.id);
168
+ if (!unicodeEmoji) {
142
169
  _context.next = 2;
143
170
  break;
144
171
  }
172
+ return _context.abrupt("return", _objectSpread(_objectSpread({}, result), {}, {
173
+ representation: {
174
+ unicodeEmoji: unicodeEmoji
175
+ }
176
+ }));
177
+ case 2:
178
+ if (!(getOptimisticImageUrl && result)) {
179
+ _context.next = 3;
180
+ break;
181
+ }
145
182
  optimisticImageURL = getOptimisticImageUrl(emojiId);
146
183
  if (!(result.representation && 'imagePath' in result.representation)) {
147
- _context.next = 2;
184
+ _context.next = 3;
148
185
  break;
149
186
  }
150
187
  return _context.abrupt("return", _objectSpread(_objectSpread({}, result), {}, {
@@ -152,9 +189,9 @@ var EmojiNodeDataProvider = exports.EmojiNodeDataProvider = /*#__PURE__*/functio
152
189
  imagePath: optimisticImageURL
153
190
  })
154
191
  }));
155
- case 2:
156
- return _context.abrupt("return", result);
157
192
  case 3:
193
+ return _context.abrupt("return", result);
194
+ case 4:
158
195
  case "end":
159
196
  return _context.stop();
160
197
  }
@@ -1,7 +1,9 @@
1
1
  import _defineProperty from "@babel/runtime/helpers/defineProperty";
2
2
  import { isSSR } from '@atlaskit/editor-common/core-utils';
3
3
  import { defaultEmojiHeight } from '@atlaskit/emoji';
4
+ import { emojiIdToEmoji } from '@atlaskit/emoji/emoji-id-to-emoji';
4
5
  import { NodeDataProvider } from '@atlaskit/node-data-provider';
6
+ import { fg } from '@atlaskit/platform-feature-flags';
5
7
  export class EmojiNodeDataProvider extends NodeDataProvider {
6
8
  constructor(resource) {
7
9
  super();
@@ -55,6 +57,26 @@ export class EmojiNodeDataProvider extends NodeDataProvider {
55
57
  const getOptimisticImageUrl = (_this$emojiResource$e = this.emojiResource.emojiProviderConfig.optimisticImageApi) === null || _this$emojiResource$e === void 0 ? void 0 : _this$emojiResource$e.getUrl;
56
58
  if (isSSR() && getOptimisticImageUrl) {
57
59
  return nodes.map(node => {
60
+ if (fg('platform_twemoji_removal_unicode_emojis')) {
61
+ // Skip SSR for nodes without an Id
62
+ if (!node.attrs.id) {
63
+ return undefined;
64
+ }
65
+ const unicodeEmoji = emojiIdToEmoji(node.attrs.id);
66
+ if (unicodeEmoji) {
67
+ return {
68
+ id: node.attrs.id,
69
+ shortName: node.attrs.shortName,
70
+ fallback: node.attrs.text,
71
+ representation: {
72
+ unicodeEmoji
73
+ },
74
+ searchable: true,
75
+ type: '',
76
+ category: ''
77
+ };
78
+ }
79
+ }
58
80
  const emojiId = {
59
81
  id: node.attrs.id,
60
82
  shortName: node.attrs.shortName,
@@ -92,6 +114,20 @@ export class EmojiNodeDataProvider extends NodeDataProvider {
92
114
  // This usually fast because the emojiProvider already has all emojis fetched.
93
115
  const result = await emojiProvider.fetchByEmojiId(emojiId, true);
94
116
 
117
+ // For STANDARD emojis, return a UnicodeRepresentation so they are rendered
118
+ // as native text characters rather than images (twemoji removal).
119
+ if (node.attrs.id && result && fg('platform_twemoji_removal_unicode_emojis')) {
120
+ const unicodeEmoji = emojiIdToEmoji(node.attrs.id);
121
+ if (unicodeEmoji) {
122
+ return {
123
+ ...result,
124
+ representation: {
125
+ unicodeEmoji
126
+ }
127
+ };
128
+ }
129
+ }
130
+
95
131
  // If we have optimisticImageApi, we need to path response and set URL from it to match the URL used in SSR.
96
132
  if (getOptimisticImageUrl && result) {
97
133
  const optimisticImageURL = getOptimisticImageUrl(emojiId);
@@ -12,7 +12,9 @@ function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstruct
12
12
  function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
13
13
  import { isSSR } from '@atlaskit/editor-common/core-utils';
14
14
  import { defaultEmojiHeight } from '@atlaskit/emoji';
15
+ import { emojiIdToEmoji } from '@atlaskit/emoji/emoji-id-to-emoji';
15
16
  import { NodeDataProvider } from '@atlaskit/node-data-provider';
17
+ import { fg } from '@atlaskit/platform-feature-flags';
16
18
  export var EmojiNodeDataProvider = /*#__PURE__*/function (_NodeDataProvider) {
17
19
  function EmojiNodeDataProvider(resource) {
18
20
  var _this;
@@ -89,6 +91,26 @@ export var EmojiNodeDataProvider = /*#__PURE__*/function (_NodeDataProvider) {
89
91
  break;
90
92
  }
91
93
  return _context2.abrupt("return", nodes.map(function (node) {
94
+ if (fg('platform_twemoji_removal_unicode_emojis')) {
95
+ // Skip SSR for nodes without an Id
96
+ if (!node.attrs.id) {
97
+ return undefined;
98
+ }
99
+ var unicodeEmoji = emojiIdToEmoji(node.attrs.id);
100
+ if (unicodeEmoji) {
101
+ return {
102
+ id: node.attrs.id,
103
+ shortName: node.attrs.shortName,
104
+ fallback: node.attrs.text,
105
+ representation: {
106
+ unicodeEmoji: unicodeEmoji
107
+ },
108
+ searchable: true,
109
+ type: '',
110
+ category: ''
111
+ };
112
+ }
113
+ }
92
114
  var emojiId = {
93
115
  id: node.attrs.id,
94
116
  shortName: node.attrs.shortName,
@@ -118,7 +140,7 @@ export var EmojiNodeDataProvider = /*#__PURE__*/function (_NodeDataProvider) {
118
140
  emojiProvider = _context2.sent;
119
141
  fetches = nodes.map( /*#__PURE__*/function () {
120
142
  var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(node) {
121
- var emojiId, result, optimisticImageURL;
143
+ var emojiId, result, unicodeEmoji, optimisticImageURL;
122
144
  return _regeneratorRuntime.wrap(function (_context) {
123
145
  while (1) switch (_context.prev = _context.next) {
124
146
  case 0:
@@ -131,13 +153,28 @@ export var EmojiNodeDataProvider = /*#__PURE__*/function (_NodeDataProvider) {
131
153
  return emojiProvider.fetchByEmojiId(emojiId, true);
132
154
  case 1:
133
155
  result = _context.sent;
134
- if (!(getOptimisticImageUrl && result)) {
156
+ if (!(node.attrs.id && result && fg('platform_twemoji_removal_unicode_emojis'))) {
157
+ _context.next = 2;
158
+ break;
159
+ }
160
+ unicodeEmoji = emojiIdToEmoji(node.attrs.id);
161
+ if (!unicodeEmoji) {
135
162
  _context.next = 2;
136
163
  break;
137
164
  }
165
+ return _context.abrupt("return", _objectSpread(_objectSpread({}, result), {}, {
166
+ representation: {
167
+ unicodeEmoji: unicodeEmoji
168
+ }
169
+ }));
170
+ case 2:
171
+ if (!(getOptimisticImageUrl && result)) {
172
+ _context.next = 3;
173
+ break;
174
+ }
138
175
  optimisticImageURL = getOptimisticImageUrl(emojiId);
139
176
  if (!(result.representation && 'imagePath' in result.representation)) {
140
- _context.next = 2;
177
+ _context.next = 3;
141
178
  break;
142
179
  }
143
180
  return _context.abrupt("return", _objectSpread(_objectSpread({}, result), {}, {
@@ -145,9 +182,9 @@ export var EmojiNodeDataProvider = /*#__PURE__*/function (_NodeDataProvider) {
145
182
  imagePath: optimisticImageURL
146
183
  })
147
184
  }));
148
- case 2:
149
- return _context.abrupt("return", result);
150
185
  case 3:
186
+ return _context.abrupt("return", result);
187
+ case 4:
151
188
  case "end":
152
189
  return _context.stop();
153
190
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@atlaskit/editor-plugin-emoji",
3
- "version": "11.2.5",
3
+ "version": "11.3.0",
4
4
  "description": "Emoji plugin for @atlaskit/editor-core",
5
5
  "publishConfig": {
6
6
  "registry": "https://registry.npmjs.org/"
@@ -32,7 +32,7 @@
32
32
  "@atlaskit/editor-plugin-type-ahead": "^10.3.0",
33
33
  "@atlaskit/editor-prosemirror": "^7.3.0",
34
34
  "@atlaskit/editor-shared-styles": "^3.11.0",
35
- "@atlaskit/emoji": "^70.11.0",
35
+ "@atlaskit/emoji": "^70.13.0",
36
36
  "@atlaskit/icon": "^35.3.0",
37
37
  "@atlaskit/node-data-provider": "^11.1.0",
38
38
  "@atlaskit/platform-feature-flags": "^1.1.0",
@@ -45,7 +45,7 @@
45
45
  "react-loadable": "^5.1.0"
46
46
  },
47
47
  "peerDependencies": {
48
- "@atlaskit/editor-common": "^114.50.0",
48
+ "@atlaskit/editor-common": "^114.51.0",
49
49
  "react": "^18.2.0",
50
50
  "react-dom": "^18.2.0",
51
51
  "react-intl": "^5.25.1 || ^6.0.0 || ^7.0.0"
@@ -107,6 +107,9 @@
107
107
  },
108
108
  "platform_editor_adf_with_localid": {
109
109
  "type": "boolean"
110
+ },
111
+ "platform_twemoji_removal_unicode_emojis": {
112
+ "type": "boolean"
110
113
  }
111
114
  }
112
115
  }