@atlaskit/editor-plugin-emoji 2.4.0 → 2.5.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 (34) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/dist/cjs/nodeviews/emoji.js +1 -0
  3. package/dist/cjs/plugin.js +93 -56
  4. package/dist/cjs/pm-plugins/actions.js +41 -0
  5. package/dist/cjs/pm-plugins/ascii-input-rules.js +19 -6
  6. package/dist/cjs/ui/Emoji/emoji-next.js +55 -0
  7. package/dist/cjs/ui/Emoji/index.js +3 -1
  8. package/dist/es2019/nodeviews/emoji.js +1 -0
  9. package/dist/es2019/plugin.js +54 -41
  10. package/dist/es2019/pm-plugins/actions.js +29 -0
  11. package/dist/es2019/pm-plugins/ascii-input-rules.js +20 -6
  12. package/dist/es2019/ui/Emoji/emoji-next.js +51 -0
  13. package/dist/es2019/ui/Emoji/index.js +3 -1
  14. package/dist/esm/nodeviews/emoji.js +1 -0
  15. package/dist/esm/plugin.js +90 -52
  16. package/dist/esm/pm-plugins/actions.js +35 -0
  17. package/dist/esm/pm-plugins/ascii-input-rules.js +19 -6
  18. package/dist/esm/ui/Emoji/emoji-next.js +48 -0
  19. package/dist/esm/ui/Emoji/index.js +3 -1
  20. package/dist/types/nodeviews/emoji.d.ts +3 -1
  21. package/dist/types/plugin.d.ts +4 -11
  22. package/dist/types/pm-plugins/actions.d.ts +13 -0
  23. package/dist/types/pm-plugins/ascii-input-rules.d.ts +4 -3
  24. package/dist/types/types.d.ts +3 -1
  25. package/dist/types/ui/Emoji/emoji-next.d.ts +16 -0
  26. package/dist/types/ui/Emoji/index.d.ts +1 -1
  27. package/dist/types-ts4.5/nodeviews/emoji.d.ts +3 -1
  28. package/dist/types-ts4.5/plugin.d.ts +4 -11
  29. package/dist/types-ts4.5/pm-plugins/actions.d.ts +13 -0
  30. package/dist/types-ts4.5/pm-plugins/ascii-input-rules.d.ts +4 -3
  31. package/dist/types-ts4.5/types.d.ts +3 -1
  32. package/dist/types-ts4.5/ui/Emoji/emoji-next.d.ts +16 -0
  33. package/dist/types-ts4.5/ui/Emoji/index.d.ts +1 -1
  34. package/package.json +5 -3
package/CHANGELOG.md CHANGED
@@ -1,5 +1,17 @@
1
1
  # @atlaskit/editor-plugin-emoji
2
2
 
3
+ ## 2.5.0
4
+
5
+ ### Minor Changes
6
+
7
+ - [#136891](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/pull-requests/136891)
8
+ [`388780c6348e9`](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/commits/388780c6348e9) -
9
+ Pass emoji provider via preset
10
+
11
+ ### Patch Changes
12
+
13
+ - Updated dependencies
14
+
3
15
  ## 2.4.0
4
16
 
5
17
  ### Minor Changes
@@ -38,6 +38,7 @@ function EmojiNodeView(props) {
38
38
  return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(EmojiAssistiveTextComponent, {
39
39
  emojiShortName: shortName
40
40
  }), /*#__PURE__*/_react.default.createElement("span", null, /*#__PURE__*/_react.default.createElement(_Emoji.default, {
41
+ pluginInjectionApi: props.api,
41
42
  providers: props.providerFactory,
42
43
  id: id,
43
44
  shortName: shortName,
@@ -4,14 +4,15 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
4
4
  Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
- exports.ACTIONS = void 0;
8
7
  exports.createEmojiPlugin = createEmojiPlugin;
9
8
  exports.createRateLimitReachedFunction = createRateLimitReachedFunction;
10
9
  exports.emojiToTypeaheadItem = exports.emojiPluginKey = exports.emojiPlugin = exports.defaultListLimit = void 0;
11
10
  exports.getEmojiPluginState = getEmojiPluginState;
12
11
  exports.memoize = memoize;
13
- exports.setProvider = void 0;
12
+ exports.setProviderTr = exports.setProvider = void 0;
13
+ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
14
14
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
15
+ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
15
16
  var _react = _interopRequireDefault(require("react"));
16
17
  var _adfSchema = require("@atlaskit/adf-schema");
17
18
  var _analytics = require("@atlaskit/editor-common/analytics");
@@ -26,6 +27,7 @@ var _emoji2 = require("@atlaskit/emoji");
26
27
  var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
27
28
  var _insertEmoji = require("./commands/insert-emoji");
28
29
  var _emoji3 = require("./nodeviews/emoji");
30
+ var _actions = require("./pm-plugins/actions");
29
31
  var _asciiInputRules = require("./pm-plugins/ascii-input-rules");
30
32
  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; }
31
33
  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; }
@@ -83,6 +85,7 @@ var emojiPlugin = exports.emojiPlugin = function emojiPlugin(_ref2) {
83
85
  var _api$analytics5;
84
86
  var options = _ref2.config,
85
87
  api = _ref2.api;
88
+ var previousEmojiProvider;
86
89
  var typeAhead = {
87
90
  id: _typeAhead.TypeAheadAvailableNodes.EMOJI,
88
91
  trigger: TRIGGER,
@@ -197,7 +200,7 @@ var emojiPlugin = exports.emojiPlugin = function emojiPlugin(_ref2) {
197
200
  return [{
198
201
  name: 'emoji',
199
202
  plugin: function plugin(pmPluginFactoryParams) {
200
- return createEmojiPlugin(pmPluginFactoryParams, options);
203
+ return createEmojiPlugin(pmPluginFactoryParams, options, api);
201
204
  }
202
205
  }, {
203
206
  name: 'emojiAsciiInputRule',
@@ -206,7 +209,7 @@ var emojiPlugin = exports.emojiPlugin = function emojiPlugin(_ref2) {
206
209
  var schema = _ref7.schema,
207
210
  providerFactory = _ref7.providerFactory,
208
211
  featureFlags = _ref7.featureFlags;
209
- return (0, _asciiInputRules.inputRulePlugin)(schema, providerFactory, featureFlags, api === null || api === void 0 || (_api$analytics4 = api.analytics) === null || _api$analytics4 === void 0 ? void 0 : _api$analytics4.actions);
212
+ return (0, _asciiInputRules.inputRulePlugin)(schema, providerFactory, featureFlags, api === null || api === void 0 || (_api$analytics4 = api.analytics) === null || _api$analytics4 === void 0 ? void 0 : _api$analytics4.actions, api);
210
213
  }
211
214
  }];
212
215
  },
@@ -217,28 +220,57 @@ var emojiPlugin = exports.emojiPlugin = function emojiPlugin(_ref2) {
217
220
  }
218
221
  var _ref8 = (_emojiPluginKey$getSt = emojiPluginKey.getState(editorState)) !== null && _emojiPluginKey$getSt !== void 0 ? _emojiPluginKey$getSt : {},
219
222
  emojiResourceConfig = _ref8.emojiResourceConfig,
220
- asciiMap = _ref8.asciiMap;
223
+ asciiMap = _ref8.asciiMap,
224
+ emojiProvider = _ref8.emojiProvider;
221
225
  return {
222
226
  emojiResourceConfig: emojiResourceConfig,
223
227
  asciiMap: asciiMap,
224
- typeAheadHandler: typeAhead
228
+ typeAheadHandler: typeAhead,
229
+ emojiProvider: emojiProvider
225
230
  };
226
231
  },
227
232
  actions: {
228
- openTypeAhead: function openTypeAhead(inputMethod) {
229
- var _api$typeAhead;
230
- return Boolean(api === null || api === void 0 || (_api$typeAhead = api.typeAhead) === null || _api$typeAhead === void 0 ? void 0 : _api$typeAhead.actions.open({
231
- triggerHandler: typeAhead,
232
- inputMethod: inputMethod
233
+ openTypeAhead: (0, _actions.openTypeAhead)(typeAhead, api),
234
+ setProvider: function () {
235
+ var _setProvider = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(providerPromise) {
236
+ var _api$core$actions$exe;
237
+ var provider;
238
+ return _regenerator.default.wrap(function _callee$(_context) {
239
+ while (1) switch (_context.prev = _context.next) {
240
+ case 0:
241
+ _context.next = 2;
242
+ return providerPromise;
243
+ case 2:
244
+ provider = _context.sent;
245
+ if (!(previousEmojiProvider === provider || (options === null || options === void 0 ? void 0 : options.emojiProvider) === providerPromise)) {
246
+ _context.next = 5;
247
+ break;
248
+ }
249
+ return _context.abrupt("return", false);
250
+ case 5:
251
+ previousEmojiProvider = provider;
252
+ return _context.abrupt("return", (_api$core$actions$exe = api === null || api === void 0 ? void 0 : api.core.actions.execute(function (_ref9) {
253
+ var tr = _ref9.tr;
254
+ return setProviderTr(provider)(tr);
255
+ })) !== null && _api$core$actions$exe !== void 0 ? _api$core$actions$exe : false);
256
+ case 7:
257
+ case "end":
258
+ return _context.stop();
259
+ }
260
+ }, _callee);
233
261
  }));
234
- }
262
+ function setProvider(_x) {
263
+ return _setProvider.apply(this, arguments);
264
+ }
265
+ return setProvider;
266
+ }()
235
267
  },
236
268
  commands: {
237
269
  insertEmoji: (0, _insertEmoji.insertEmoji)(api === null || api === void 0 || (_api$analytics5 = api.analytics) === null || _api$analytics5 === void 0 ? void 0 : _api$analytics5.actions)
238
270
  },
239
271
  pluginsOptions: {
240
- quickInsert: function quickInsert(_ref9) {
241
- var formatMessage = _ref9.formatMessage;
272
+ quickInsert: function quickInsert(_ref10) {
273
+ var formatMessage = _ref10.formatMessage;
242
274
  return [{
243
275
  id: 'emoji',
244
276
  title: formatMessage(_messages.toolbarInsertBlockMessages.emoji),
@@ -249,9 +281,9 @@ var emojiPlugin = exports.emojiPlugin = function emojiPlugin(_ref2) {
249
281
  return /*#__PURE__*/_react.default.createElement(_quickInsert.IconEmoji, null);
250
282
  },
251
283
  action: function action(insert, state) {
252
- var _api$typeAhead2;
284
+ var _api$typeAhead;
253
285
  var tr = insert(undefined);
254
- api === null || api === void 0 || (_api$typeAhead2 = api.typeAhead) === null || _api$typeAhead2 === void 0 || _api$typeAhead2.actions.openAtTransaction({
286
+ api === null || api === void 0 || (_api$typeAhead = api.typeAhead) === null || _api$typeAhead === void 0 || _api$typeAhead.actions.openAtTransaction({
255
287
  triggerHandler: typeAhead,
256
288
  inputMethod: _analytics.INPUT_METHOD.QUICK_INSERT
257
289
  })(tr);
@@ -268,20 +300,11 @@ var emojiPlugin = exports.emojiPlugin = function emojiPlugin(_ref2) {
268
300
  * Actions
269
301
  */
270
302
 
271
- var ACTIONS = exports.ACTIONS = {
272
- SET_PROVIDER: 'SET_PROVIDER',
273
- SET_RESULTS: 'SET_RESULTS',
274
- SET_ASCII_MAP: 'SET_ASCII_MAP'
275
- };
276
303
  var setAsciiMap = function setAsciiMap(asciiMap) {
277
304
  return function (state, dispatch) {
278
305
  if (dispatch) {
279
- dispatch(state.tr.setMeta(emojiPluginKey, {
280
- action: ACTIONS.SET_ASCII_MAP,
281
- params: {
282
- asciiMap: asciiMap
283
- }
284
- }));
306
+ var _tr = (0, _actions.setAsciiMap)(asciiMap)(state.tr);
307
+ dispatch(_tr);
285
308
  }
286
309
  return true;
287
310
  };
@@ -323,28 +346,29 @@ var logRateWarning = function logRateWarning() {
323
346
  console.error('The emoji provider injected in the Editor is being reloaded frequently, this will cause a slow Editor experience.');
324
347
  }
325
348
  };
326
- var setProvider = exports.setProvider = createRateLimitReachedFunction(function (provider) {
327
- return function (state, dispatch) {
328
- if (dispatch) {
329
- dispatch(state.tr.setMeta(emojiPluginKey, {
330
- action: ACTIONS.SET_PROVIDER,
331
- params: {
332
- provider: provider
333
- }
334
- }));
335
- }
336
- return true;
349
+ var setProviderTr = exports.setProviderTr = createRateLimitReachedFunction(function (provider) {
350
+ return function (tr) {
351
+ return (0, _actions.setProvider)(provider)(tr);
337
352
  };
338
353
  },
339
354
  // If we change the emoji provider more than three times every 5 seconds we should warn.
340
355
  // This seems like a really long time but the performance can be that laggy that we don't
341
356
  // even get 3 events in 3 seconds and miss this indicator.
342
357
  5000, 3, logRateWarning);
358
+ var setProvider = exports.setProvider = function setProvider(provider) {
359
+ return function (state, dispatch) {
360
+ if (dispatch) {
361
+ var _tr2 = setProviderTr(provider)(state.tr);
362
+ dispatch(_tr2);
363
+ }
364
+ return true;
365
+ };
366
+ };
343
367
  var emojiPluginKey = exports.emojiPluginKey = new _state.PluginKey('emojiPlugin');
344
368
  function getEmojiPluginState(state) {
345
369
  return emojiPluginKey.getState(state) || {};
346
370
  }
347
- function createEmojiPlugin(pmPluginFactoryParams, options) {
371
+ function createEmojiPlugin(pmPluginFactoryParams, options, api) {
348
372
  return new _safePlugin.SafePlugin({
349
373
  key: emojiPluginKey,
350
374
  state: {
@@ -352,25 +376,29 @@ function createEmojiPlugin(pmPluginFactoryParams, options) {
352
376
  return {};
353
377
  },
354
378
  apply: function apply(tr, pluginState) {
355
- var _ref10 = tr.getMeta(emojiPluginKey) || {
379
+ var _ref11 = tr.getMeta(emojiPluginKey) || {
356
380
  action: null,
357
381
  params: null
358
382
  },
359
- action = _ref10.action,
360
- params = _ref10.params;
383
+ action = _ref11.action,
384
+ params = _ref11.params;
361
385
  var newPluginState = pluginState;
362
386
  switch (action) {
363
- case ACTIONS.SET_PROVIDER:
387
+ case _actions.ACTIONS.SET_PROVIDER:
364
388
  newPluginState = _objectSpread(_objectSpread({}, pluginState), {}, {
365
389
  emojiProvider: params.provider
366
390
  });
367
- pmPluginFactoryParams.dispatch(emojiPluginKey, newPluginState);
391
+ if (!(0, _platformFeatureFlags.fg)('platform_editor_get_emoji_provider_from_config')) {
392
+ pmPluginFactoryParams.dispatch(emojiPluginKey, newPluginState);
393
+ }
368
394
  return newPluginState;
369
- case ACTIONS.SET_ASCII_MAP:
395
+ case _actions.ACTIONS.SET_ASCII_MAP:
370
396
  newPluginState = _objectSpread(_objectSpread({}, pluginState), {}, {
371
397
  asciiMap: params.asciiMap
372
398
  });
373
- pmPluginFactoryParams.dispatch(emojiPluginKey, newPluginState);
399
+ if (!(0, _platformFeatureFlags.fg)('platform_editor_get_emoji_provider_from_config')) {
400
+ pmPluginFactoryParams.dispatch(emojiPluginKey, newPluginState);
401
+ }
374
402
  return newPluginState;
375
403
  }
376
404
  return newPluginState;
@@ -383,7 +411,8 @@ function createEmojiPlugin(pmPluginFactoryParams, options) {
383
411
  Component: _emoji3.EmojiNodeView,
384
412
  extraComponentProps: {
385
413
  providerFactory: pmPluginFactoryParams.providerFactory,
386
- options: options
414
+ options: options,
415
+ api: api
387
416
  }
388
417
  })
389
418
  }
@@ -393,28 +422,36 @@ function createEmojiPlugin(pmPluginFactoryParams, options) {
393
422
  switch (name) {
394
423
  case 'emojiProvider':
395
424
  if (!providerPromise) {
396
- var _setProvider;
397
- return setProvider === null || setProvider === void 0 || (_setProvider = setProvider(undefined)) === null || _setProvider === void 0 ? void 0 : _setProvider(editorView.state, editorView.dispatch);
425
+ var _setProvider2;
426
+ return setProvider === null || setProvider === void 0 || (_setProvider2 = setProvider(undefined)) === null || _setProvider2 === void 0 ? void 0 : _setProvider2(editorView.state, editorView.dispatch);
398
427
  }
399
428
  providerPromise.then(function (provider) {
400
- var _setProvider2;
401
- setProvider === null || setProvider === void 0 || (_setProvider2 = setProvider(provider)) === null || _setProvider2 === void 0 || _setProvider2(editorView.state, editorView.dispatch);
429
+ var _setProvider3;
430
+ setProvider === null || setProvider === void 0 || (_setProvider3 = setProvider(provider)) === null || _setProvider3 === void 0 || _setProvider3(editorView.state, editorView.dispatch);
402
431
  provider.getAsciiMap().then(function (asciiMap) {
403
432
  setAsciiMap(asciiMap)(editorView.state, editorView.dispatch);
404
433
  });
405
434
  }).catch(function () {
406
- var _setProvider3;
407
- return setProvider === null || setProvider === void 0 || (_setProvider3 = setProvider(undefined)) === null || _setProvider3 === void 0 ? void 0 : _setProvider3(editorView.state, editorView.dispatch);
435
+ var _setProvider4;
436
+ return setProvider === null || setProvider === void 0 || (_setProvider4 = setProvider(undefined)) === null || _setProvider4 === void 0 ? void 0 : _setProvider4(editorView.state, editorView.dispatch);
408
437
  });
409
438
  break;
410
439
  }
411
440
  return;
412
441
  };
413
- pmPluginFactoryParams.providerFactory.subscribe('emojiProvider', providerHandler);
442
+ if ((0, _platformFeatureFlags.fg)('platform_editor_get_emoji_provider_from_config')) {
443
+ if (options !== null && options !== void 0 && options.emojiProvider) {
444
+ providerHandler('emojiProvider', options.emojiProvider);
445
+ }
446
+ } else {
447
+ pmPluginFactoryParams.providerFactory.subscribe('emojiProvider', providerHandler);
448
+ }
414
449
  return {
415
450
  destroy: function destroy() {
416
- if (pmPluginFactoryParams.providerFactory) {
417
- pmPluginFactoryParams.providerFactory.unsubscribe('emojiProvider', providerHandler);
451
+ if (!(0, _platformFeatureFlags.fg)('platform_editor_get_emoji_provider_from_config')) {
452
+ if (pmPluginFactoryParams.providerFactory) {
453
+ pmPluginFactoryParams.providerFactory.unsubscribe('emojiProvider', providerHandler);
454
+ }
418
455
  }
419
456
  }
420
457
  };
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.setProvider = exports.setAsciiMap = exports.openTypeAhead = exports.ACTIONS = void 0;
7
+ var _plugin = require("../plugin");
8
+ var ACTIONS = exports.ACTIONS = {
9
+ SET_PROVIDER: 'SET_PROVIDER',
10
+ SET_RESULTS: 'SET_RESULTS',
11
+ SET_ASCII_MAP: 'SET_ASCII_MAP'
12
+ };
13
+ var setAsciiMap = exports.setAsciiMap = function setAsciiMap(asciiMap) {
14
+ return function (tr) {
15
+ return tr.setMeta(_plugin.emojiPluginKey, {
16
+ action: ACTIONS.SET_ASCII_MAP,
17
+ params: {
18
+ asciiMap: asciiMap
19
+ }
20
+ });
21
+ };
22
+ };
23
+ var openTypeAhead = exports.openTypeAhead = function openTypeAhead(typeaheadHandler, api) {
24
+ return function (inputMethod) {
25
+ var _api$typeAhead;
26
+ return Boolean(api === null || api === void 0 || (_api$typeAhead = api.typeAhead) === null || _api$typeAhead === void 0 ? void 0 : _api$typeAhead.actions.open({
27
+ triggerHandler: typeaheadHandler,
28
+ inputMethod: inputMethod
29
+ }));
30
+ };
31
+ };
32
+ var setProvider = exports.setProvider = function setProvider(provider) {
33
+ return function (tr) {
34
+ return tr.setMeta(_plugin.emojiPluginKey, {
35
+ action: ACTIONS.SET_PROVIDER,
36
+ params: {
37
+ provider: provider
38
+ }
39
+ });
40
+ };
41
+ };
@@ -18,19 +18,20 @@ var _analytics = require("@atlaskit/editor-common/analytics");
18
18
  var _safePlugin = require("@atlaskit/editor-common/safe-plugin");
19
19
  var _utils = require("@atlaskit/editor-common/utils");
20
20
  var _state = require("@atlaskit/editor-prosemirror/state");
21
+ var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
21
22
  var _prosemirrorInputRules = require("@atlaskit/prosemirror-input-rules");
22
23
  function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
23
24
  function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
24
25
  var matcher;
25
- function inputRulePlugin(schema, providerFactory, featureFlags, editorAnalyticsAPI) {
26
+ function inputRulePlugin(schema, providerFactory, featureFlags, editorAnalyticsAPI, pluginInjectionApi) {
26
27
  if (schema.nodes.emoji && providerFactory) {
27
- initMatcher(providerFactory);
28
+ initMatcher(providerFactory, pluginInjectionApi);
28
29
  var asciiEmojiRule = (0, _utils.createRule)(AsciiEmojiMatcher.REGEX, inputRuleHandler(editorAnalyticsAPI));
29
30
  return new _safePlugin.SafePlugin((0, _prosemirrorInputRules.createPlugin)('emoji', [asciiEmojiRule]));
30
31
  }
31
32
  return;
32
33
  }
33
- function initMatcher(providerFactory) {
34
+ function initMatcher(providerFactory, pluginInjectionApi) {
34
35
  var handleProvider = function handleProvider(_name, provider) {
35
36
  if (!provider) {
36
37
  return;
@@ -41,7 +42,19 @@ function initMatcher(providerFactory) {
41
42
  });
42
43
  });
43
44
  };
44
- providerFactory.subscribe('emojiProvider', handleProvider);
45
+ if ((0, _platformFeatureFlags.fg)('platform_editor_get_emoji_provider_from_config')) {
46
+ pluginInjectionApi === null || pluginInjectionApi === void 0 || pluginInjectionApi.emoji.sharedState.onChange(function (_ref) {
47
+ var nextSharedState = _ref.nextSharedState;
48
+ var emojiProvider = nextSharedState === null || nextSharedState === void 0 ? void 0 : nextSharedState.emojiProvider;
49
+ if (emojiProvider) {
50
+ emojiProvider.getAsciiMap().then(function (map) {
51
+ matcher = new RecordingAsciiEmojiMatcher(emojiProvider, map);
52
+ });
53
+ }
54
+ });
55
+ } else {
56
+ providerFactory.subscribe('emojiProvider', handleProvider);
57
+ }
45
58
  }
46
59
  var inputRuleHandler = function inputRuleHandler(editorAnalyticsAPI) {
47
60
  return function (state, matchParts, start, end) {
@@ -227,8 +240,8 @@ var AsciiEmojiTransactionCreator = /*#__PURE__*/function () {
227
240
  return AsciiEmojiTransactionCreator;
228
241
  }();
229
242
  var stateKey = exports.stateKey = new _state.PluginKey('asciiEmojiPlugin');
230
- var plugins = function plugins(schema, providerFactory, featureFlags, editorAnalyticsAPI) {
231
- return [inputRulePlugin(schema, providerFactory, featureFlags, editorAnalyticsAPI)].filter(function (plugin) {
243
+ var plugins = function plugins(schema, providerFactory, featureFlags, editorAnalyticsAPI, pluginInjectionApi) {
244
+ return [inputRulePlugin(schema, providerFactory, featureFlags, editorAnalyticsAPI, pluginInjectionApi)].filter(function (plugin) {
232
245
  return !!plugin;
233
246
  });
234
247
  };
@@ -0,0 +1,55 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.default = void 0;
8
+ var _react = _interopRequireDefault(require("react"));
9
+ var _hooks = require("@atlaskit/editor-common/hooks");
10
+ var _element = require("@atlaskit/emoji/element");
11
+ var useEmojiProvider = function useEmojiProvider(pluginInjectionApi) {
12
+ var _useSharedPluginState = (0, _hooks.useSharedPluginState)(pluginInjectionApi, ['emoji']),
13
+ emojiState = _useSharedPluginState.emojiState;
14
+ return emojiState === null || emojiState === void 0 ? void 0 : emojiState.emojiProvider;
15
+ };
16
+ var EmojiNode = function EmojiNode(props) {
17
+ var _resourceConfig$optim;
18
+ var allowTextFallback = props.allowTextFallback,
19
+ shortName = props.shortName,
20
+ id = props.id,
21
+ fallback = props.fallback,
22
+ fitToHeight = props.fitToHeight,
23
+ showTooltip = props.showTooltip,
24
+ resourceConfig = props.resourceConfig,
25
+ pluginInjectionApi = props.pluginInjectionApi;
26
+ var emojiProvider = useEmojiProvider(pluginInjectionApi);
27
+ if (allowTextFallback && !emojiProvider) {
28
+ return /*#__PURE__*/_react.default.createElement("span", {
29
+ "data-emoji-id": id,
30
+ "data-emoji-short-name": shortName,
31
+ "data-emoji-text": fallback || shortName
32
+ }, fallback || shortName);
33
+ }
34
+ if (!emojiProvider) {
35
+ return null;
36
+ }
37
+ return /*#__PURE__*/_react.default.createElement(_element.ResourcedEmoji, {
38
+ emojiId: {
39
+ id: id,
40
+ fallback: fallback,
41
+ shortName: shortName
42
+ },
43
+ emojiProvider: Promise.resolve(emojiProvider),
44
+ showTooltip: showTooltip,
45
+ fitToHeight: fitToHeight,
46
+ optimistic: true,
47
+ optimisticImageURL: resourceConfig === null || resourceConfig === void 0 || (_resourceConfig$optim = resourceConfig.optimisticImageApi) === null || _resourceConfig$optim === void 0 ? void 0 : _resourceConfig$optim.getUrl({
48
+ id: id,
49
+ fallback: fallback,
50
+ shortName: shortName
51
+ }),
52
+ editorEmoji: true
53
+ });
54
+ };
55
+ var _default = exports.default = EmojiNode;
@@ -8,6 +8,8 @@ exports.default = EmojiNode;
8
8
  var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
9
9
  var _react = require("@emotion/react");
10
10
  var _emoji = require("@atlaskit/editor-common/emoji");
11
+ var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
12
+ var _emojiNext = _interopRequireDefault(require("./emoji-next"));
11
13
  var _templateObject;
12
14
  /**
13
15
  * @jsxRuntime classic
@@ -19,5 +21,5 @@ var clickSelectWrapperStyle = (0, _react.css)(_templateObject || (_templateObjec
19
21
  function EmojiNode(props) {
20
22
  return (0, _react.jsx)("span", {
21
23
  css: clickSelectWrapperStyle
22
- }, (0, _react.jsx)(_emoji.Emoji, props));
24
+ }, (0, _platformFeatureFlags.fg)('platform_editor_get_emoji_provider_from_config') ? (0, _react.jsx)(_emojiNext.default, props) : (0, _react.jsx)(_emoji.Emoji, props));
23
25
  }
@@ -33,6 +33,7 @@ export function EmojiNodeView(props) {
33
33
  return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(EmojiAssistiveTextComponent, {
34
34
  emojiShortName: shortName
35
35
  }), /*#__PURE__*/React.createElement("span", null, /*#__PURE__*/React.createElement(Emoji, {
36
+ pluginInjectionApi: props.api,
36
37
  providers: props.providerFactory,
37
38
  id: id,
38
39
  shortName: shortName,