@atlaskit/editor-plugin-emoji 0.3.6 → 0.4.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,15 @@
1
1
  # @atlaskit/editor-plugin-emoji
2
2
 
3
+ ## 0.4.0
4
+
5
+ ### Minor Changes
6
+
7
+ - [#41143](https://bitbucket.org/atlassian/atlassian-frontend/pull-requests/41143) [`7d6dfe2befa`](https://bitbucket.org/atlassian/atlassian-frontend/commits/7d6dfe2befa) - [ED-20003] Replace TyepAhead API for Editor Plugin Injection API
8
+
9
+ ### Patch Changes
10
+
11
+ - Updated dependencies
12
+
3
13
  ## 0.3.6
4
14
 
5
15
  ### Patch Changes
@@ -12,7 +12,7 @@ var _state = require("@atlaskit/editor-prosemirror/state");
12
12
  var _utils = require("@atlaskit/editor-prosemirror/utils");
13
13
  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; }
14
14
  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; }
15
- var insertEmoji = function insertEmoji(editorAnalyticsAPI) {
15
+ var insertEmoji = exports.insertEmoji = function insertEmoji(editorAnalyticsAPI) {
16
16
  return function (emojiId, inputMethod) {
17
17
  return function (_ref) {
18
18
  var tr = _ref.tr;
@@ -27,7 +27,7 @@ var insertEmoji = function insertEmoji(editorAnalyticsAPI) {
27
27
  var fragment = _model.Fragment.fromArray([node, textNode]);
28
28
  var newTr = (0, _utils.safeInsert)(fragment)(tr);
29
29
  if (inputMethod) {
30
- editorAnalyticsAPI === null || editorAnalyticsAPI === void 0 ? void 0 : editorAnalyticsAPI.attachAnalyticsEvent({
30
+ editorAnalyticsAPI === null || editorAnalyticsAPI === void 0 || editorAnalyticsAPI.attachAnalyticsEvent({
31
31
  action: _analytics.ACTION.INSERTED,
32
32
  actionSubject: _analytics.ACTION_SUBJECT.DOCUMENT,
33
33
  actionSubjectId: _analytics.ACTION_SUBJECT_ID.EMOJI,
@@ -43,5 +43,4 @@ var insertEmoji = function insertEmoji(editorAnalyticsAPI) {
43
43
  return null;
44
44
  };
45
45
  };
46
- };
47
- exports.insertEmoji = insertEmoji;
46
+ };
@@ -5,11 +5,10 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.messages = void 0;
7
7
  var _reactIntlNext = require("react-intl-next");
8
- var messages = (0, _reactIntlNext.defineMessages)({
8
+ var messages = exports.messages = (0, _reactIntlNext.defineMessages)({
9
9
  emojiNodeLabel: {
10
10
  id: 'fabric.emoji.label',
11
11
  defaultMessage: 'Emoji',
12
12
  description: 'Label to indicate emoji node to Screen reader users'
13
13
  }
14
- });
15
- exports.messages = messages;
14
+ });
@@ -28,7 +28,7 @@ var _emoji3 = require("./nodeviews/emoji");
28
28
  var _asciiInputRules = require("./pm-plugins/ascii-input-rules");
29
29
  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; }
30
30
  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; }
31
- var emojiToTypeaheadItem = function emojiToTypeaheadItem(emoji, emojiProvider) {
31
+ var emojiToTypeaheadItem = exports.emojiToTypeaheadItem = function emojiToTypeaheadItem(emoji, emojiProvider) {
32
32
  return {
33
33
  title: emoji.shortName || '',
34
34
  key: emoji.id || emoji.shortName,
@@ -47,7 +47,6 @@ var emojiToTypeaheadItem = function emojiToTypeaheadItem(emoji, emojiProvider) {
47
47
  emoji: emoji
48
48
  };
49
49
  };
50
- exports.emojiToTypeaheadItem = emojiToTypeaheadItem;
51
50
  function memoize(fn) {
52
51
  // Cache results here
53
52
  var seen = new Map();
@@ -69,8 +68,7 @@ function memoize(fn) {
69
68
  };
70
69
  }
71
70
  var memoizedToItem = memoize(emojiToTypeaheadItem);
72
- var defaultListLimit = 50;
73
- exports.defaultListLimit = defaultListLimit;
71
+ var defaultListLimit = exports.defaultListLimit = 50;
74
72
  var isFullShortName = function isFullShortName(query) {
75
73
  return query && query.length > 1 && query.charAt(0) === ':' && query.charAt(query.length - 1) === ':';
76
74
  };
@@ -80,7 +78,7 @@ var TRIGGER = ':';
80
78
  * Emoji plugin to be added to an `EditorPresetBuilder` and used with `ComposableEditor`
81
79
  * from `@atlaskit/editor-core`.
82
80
  */
83
- var emojiPlugin = function emojiPlugin(_ref2) {
81
+ var emojiPlugin = exports.emojiPlugin = function emojiPlugin(_ref2) {
84
82
  var _api$analytics5;
85
83
  var options = _ref2.config,
86
84
  api = _ref2.api;
@@ -154,11 +152,11 @@ var emojiPlugin = function emojiPlugin(_ref2) {
154
152
  var text = fallback || shortName;
155
153
  var emojiPluginState = emojiPluginKey.getState(state);
156
154
  if (emojiPluginState.emojiProvider && emojiPluginState.emojiProvider.recordSelection && item.emoji) {
157
- var _api$analytics$shared, _api$analytics, _api$analytics$shared2, _api$analytics$shared3, _api$analytics2, _api$analytics2$share;
155
+ var _api$analytics$shared, _api$analytics, _api$analytics$shared2, _api$analytics2;
158
156
  emojiPluginState.emojiProvider.recordSelection(item.emoji).then((0, _emoji2.recordSelectionSucceededSli)({
159
- createAnalyticsEvent: (_api$analytics$shared = api === null || api === void 0 ? void 0 : (_api$analytics = api.analytics) === null || _api$analytics === void 0 ? void 0 : (_api$analytics$shared2 = _api$analytics.sharedState.currentState()) === null || _api$analytics$shared2 === void 0 ? void 0 : _api$analytics$shared2.createAnalyticsEvent) !== null && _api$analytics$shared !== void 0 ? _api$analytics$shared : undefined
157
+ createAnalyticsEvent: (_api$analytics$shared = api === null || api === void 0 || (_api$analytics = api.analytics) === null || _api$analytics === void 0 || (_api$analytics = _api$analytics.sharedState.currentState()) === null || _api$analytics === void 0 ? void 0 : _api$analytics.createAnalyticsEvent) !== null && _api$analytics$shared !== void 0 ? _api$analytics$shared : undefined
160
158
  })).catch((0, _emoji2.recordSelectionFailedSli)({
161
- createAnalyticsEvent: (_api$analytics$shared3 = api === null || api === void 0 ? void 0 : (_api$analytics2 = api.analytics) === null || _api$analytics2 === void 0 ? void 0 : (_api$analytics2$share = _api$analytics2.sharedState.currentState()) === null || _api$analytics2$share === void 0 ? void 0 : _api$analytics2$share.createAnalyticsEvent) !== null && _api$analytics$shared3 !== void 0 ? _api$analytics$shared3 : undefined
159
+ createAnalyticsEvent: (_api$analytics$shared2 = api === null || api === void 0 || (_api$analytics2 = api.analytics) === null || _api$analytics2 === void 0 || (_api$analytics2 = _api$analytics2.sharedState.currentState()) === null || _api$analytics2 === void 0 ? void 0 : _api$analytics2.createAnalyticsEvent) !== null && _api$analytics$shared2 !== void 0 ? _api$analytics$shared2 : undefined
162
160
  }));
163
161
  }
164
162
  var emojiNode = state.schema.nodes.emoji.createChecked({
@@ -168,7 +166,7 @@ var emojiPlugin = function emojiPlugin(_ref2) {
168
166
  });
169
167
  var space = state.schema.text(' ');
170
168
  var tr = insert(_model.Fragment.from([emojiNode, space]));
171
- api === null || api === void 0 ? void 0 : (_api$analytics3 = api.analytics) === null || _api$analytics3 === void 0 ? void 0 : _api$analytics3.actions.attachAnalyticsEvent({
169
+ api === null || api === void 0 || (_api$analytics3 = api.analytics) === null || _api$analytics3 === void 0 || _api$analytics3.actions.attachAnalyticsEvent({
172
170
  action: _analytics.ACTION.INSERTED,
173
171
  actionSubject: _analytics.ACTION_SUBJECT.DOCUMENT,
174
172
  actionSubjectId: _analytics.ACTION_SUBJECT_ID.EMOJI,
@@ -201,7 +199,7 @@ var emojiPlugin = function emojiPlugin(_ref2) {
201
199
  var schema = _ref7.schema,
202
200
  providerFactory = _ref7.providerFactory,
203
201
  featureFlags = _ref7.featureFlags;
204
- return (0, _asciiInputRules.inputRulePlugin)(schema, providerFactory, featureFlags, api === null || api === void 0 ? void 0 : (_api$analytics4 = api.analytics) === null || _api$analytics4 === void 0 ? void 0 : _api$analytics4.actions);
202
+ 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);
205
203
  }
206
204
  }];
207
205
  },
@@ -209,10 +207,22 @@ var emojiPlugin = function emojiPlugin(_ref2) {
209
207
  if (!editorState) {
210
208
  return undefined;
211
209
  }
212
- return emojiPluginKey.getState(editorState);
210
+ var emojiPluginState = emojiPluginKey.getState(editorState);
211
+ return _objectSpread(_objectSpread({}, emojiPluginState), {}, {
212
+ typeAheadHandler: typeAhead
213
+ });
214
+ },
215
+ actions: {
216
+ openTypeAhead: function openTypeAhead(inputMethod) {
217
+ var _api$typeAhead;
218
+ return Boolean(api === null || api === void 0 || (_api$typeAhead = api.typeAhead) === null || _api$typeAhead === void 0 ? void 0 : _api$typeAhead.actions.open({
219
+ triggerHandler: typeAhead,
220
+ inputMethod: inputMethod
221
+ }));
222
+ }
213
223
  },
214
224
  commands: {
215
- insertEmoji: (0, _insertEmoji.insertEmoji)(api === null || api === void 0 ? void 0 : (_api$analytics5 = api.analytics) === null || _api$analytics5 === void 0 ? void 0 : _api$analytics5.actions)
225
+ insertEmoji: (0, _insertEmoji.insertEmoji)(api === null || api === void 0 || (_api$analytics5 = api.analytics) === null || _api$analytics5 === void 0 ? void 0 : _api$analytics5.actions)
216
226
  },
217
227
  pluginsOptions: {
218
228
  quickInsert: function quickInsert(_ref8) {
@@ -227,22 +237,10 @@ var emojiPlugin = function emojiPlugin(_ref2) {
227
237
  return /*#__PURE__*/_react.default.createElement(_quickInsert.IconEmoji, null);
228
238
  },
229
239
  action: function action(insert, state) {
230
- var _api$analytics6;
231
240
  var tr = insert(undefined);
232
- api === null || api === void 0 ? void 0 : api.typeAhead.commands.openTypeAheadAtCursor({
241
+ api === null || api === void 0 || api.typeAhead.actions.openAtTransaction({
233
242
  triggerHandler: typeAhead,
234
243
  inputMethod: _analytics.INPUT_METHOD.QUICK_INSERT
235
- })({
236
- tr: tr
237
- });
238
- api === null || api === void 0 ? void 0 : (_api$analytics6 = api.analytics) === null || _api$analytics6 === void 0 ? void 0 : _api$analytics6.actions.attachAnalyticsEvent({
239
- action: _analytics.ACTION.INVOKED,
240
- actionSubject: _analytics.ACTION_SUBJECT.TYPEAHEAD,
241
- actionSubjectId: _analytics.ACTION_SUBJECT_ID.TYPEAHEAD_EMOJI,
242
- attributes: {
243
- inputMethod: _analytics.INPUT_METHOD.QUICK_INSERT
244
- },
245
- eventType: _analytics.EVENT_TYPE.UI
246
244
  })(tr);
247
245
  return tr;
248
246
  }
@@ -256,13 +254,12 @@ var emojiPlugin = function emojiPlugin(_ref2) {
256
254
  /**
257
255
  * Actions
258
256
  */
259
- exports.emojiPlugin = emojiPlugin;
260
- var ACTIONS = {
257
+
258
+ var ACTIONS = exports.ACTIONS = {
261
259
  SET_PROVIDER: 'SET_PROVIDER',
262
260
  SET_RESULTS: 'SET_RESULTS',
263
261
  SET_ASCII_MAP: 'SET_ASCII_MAP'
264
262
  };
265
- exports.ACTIONS = ACTIONS;
266
263
  var setAsciiMap = function setAsciiMap(asciiMap) {
267
264
  return function (state, dispatch) {
268
265
  if (dispatch) {
@@ -296,7 +293,7 @@ function createRateLimitReachedFunction(fn, limitTime, limitCount, onLimitReache
296
293
  var now = Date.now();
297
294
  if (now - lastCallTime < limitTime) {
298
295
  if (++callCount > limitCount) {
299
- onLimitReached === null || onLimitReached === void 0 ? void 0 : onLimitReached();
296
+ onLimitReached === null || onLimitReached === void 0 || onLimitReached();
300
297
  }
301
298
  } else {
302
299
  lastCallTime = now;
@@ -313,7 +310,7 @@ var logRateWarning = function logRateWarning() {
313
310
  console.error('The emoji provider injected in the Editor is being reloaded frequently, this will cause a slow Editor experience.');
314
311
  }
315
312
  };
316
- var setProvider = createRateLimitReachedFunction(function (provider) {
313
+ var setProvider = exports.setProvider = createRateLimitReachedFunction(function (provider) {
317
314
  return function (state, dispatch) {
318
315
  if (dispatch) {
319
316
  dispatch(state.tr.setMeta(emojiPluginKey, {
@@ -330,9 +327,7 @@ var setProvider = createRateLimitReachedFunction(function (provider) {
330
327
  // This seems like a really long time but the performance can be that laggy that we don't
331
328
  // even get 3 events in 3 seconds and miss this indicator.
332
329
  5000, 3, logRateWarning);
333
- exports.setProvider = setProvider;
334
- var emojiPluginKey = new _state.PluginKey('emojiPlugin');
335
- exports.emojiPluginKey = emojiPluginKey;
330
+ var emojiPluginKey = exports.emojiPluginKey = new _state.PluginKey('emojiPlugin');
336
331
  function getEmojiPluginState(state) {
337
332
  return emojiPluginKey.getState(state) || {};
338
333
  }
@@ -385,17 +380,17 @@ function createEmojiPlugin(pmPluginFactoryParams) {
385
380
  case 'emojiProvider':
386
381
  if (!providerPromise) {
387
382
  var _setProvider;
388
- return setProvider === null || setProvider === void 0 ? void 0 : (_setProvider = setProvider(undefined)) === null || _setProvider === void 0 ? void 0 : _setProvider(editorView.state, editorView.dispatch);
383
+ return setProvider === null || setProvider === void 0 || (_setProvider = setProvider(undefined)) === null || _setProvider === void 0 ? void 0 : _setProvider(editorView.state, editorView.dispatch);
389
384
  }
390
385
  providerPromise.then(function (provider) {
391
386
  var _setProvider2;
392
- setProvider === null || setProvider === void 0 ? void 0 : (_setProvider2 = setProvider(provider)) === null || _setProvider2 === void 0 ? void 0 : _setProvider2(editorView.state, editorView.dispatch);
387
+ setProvider === null || setProvider === void 0 || (_setProvider2 = setProvider(provider)) === null || _setProvider2 === void 0 || _setProvider2(editorView.state, editorView.dispatch);
393
388
  provider.getAsciiMap().then(function (asciiMap) {
394
389
  setAsciiMap(asciiMap)(editorView.state, editorView.dispatch);
395
390
  });
396
391
  }).catch(function () {
397
392
  var _setProvider3;
398
- return setProvider === null || setProvider === void 0 ? void 0 : (_setProvider3 = setProvider(undefined)) === null || _setProvider3 === void 0 ? void 0 : _setProvider3(editorView.state, editorView.dispatch);
393
+ return setProvider === null || setProvider === void 0 || (_setProvider3 = setProvider(undefined)) === null || _setProvider3 === void 0 ? void 0 : _setProvider3(editorView.state, editorView.dispatch);
399
394
  });
400
395
  break;
401
396
  }
@@ -165,7 +165,7 @@ var AsciiEmojiTransactionCreator = /*#__PURE__*/function () {
165
165
  value: function create() {
166
166
  var _this$editorAnalytics;
167
167
  var tr = this.state.tr.replaceWith(this.from, this.to, this.createNodes());
168
- (_this$editorAnalytics = this.editorAnalyticsAPI) === null || _this$editorAnalytics === void 0 ? void 0 : _this$editorAnalytics.attachAnalyticsEvent({
168
+ (_this$editorAnalytics = this.editorAnalyticsAPI) === null || _this$editorAnalytics === void 0 || _this$editorAnalytics.attachAnalyticsEvent({
169
169
  action: _analytics.ACTION.INSERTED,
170
170
  actionSubject: _analytics.ACTION_SUBJECT.DOCUMENT,
171
171
  actionSubjectId: _analytics.ACTION_SUBJECT_ID.EMOJI,
@@ -224,12 +224,10 @@ var AsciiEmojiTransactionCreator = /*#__PURE__*/function () {
224
224
  }]);
225
225
  return AsciiEmojiTransactionCreator;
226
226
  }();
227
- var stateKey = new _state.PluginKey('asciiEmojiPlugin');
228
- exports.stateKey = stateKey;
227
+ var stateKey = exports.stateKey = new _state.PluginKey('asciiEmojiPlugin');
229
228
  var plugins = function plugins(schema, providerFactory, featureFlags, editorAnalyticsAPI) {
230
229
  return [inputRulePlugin(schema, providerFactory, featureFlags, editorAnalyticsAPI)].filter(function (plugin) {
231
230
  return !!plugin;
232
231
  });
233
232
  };
234
- var _default = plugins;
235
- exports.default = _default;
233
+ var _default = exports.default = plugins;
@@ -188,7 +188,20 @@ export const emojiPlugin = ({
188
188
  if (!editorState) {
189
189
  return undefined;
190
190
  }
191
- return emojiPluginKey.getState(editorState);
191
+ const emojiPluginState = emojiPluginKey.getState(editorState);
192
+ return {
193
+ ...emojiPluginState,
194
+ typeAheadHandler: typeAhead
195
+ };
196
+ },
197
+ actions: {
198
+ openTypeAhead(inputMethod) {
199
+ var _api$typeAhead;
200
+ return Boolean(api === null || api === void 0 ? void 0 : (_api$typeAhead = api.typeAhead) === null || _api$typeAhead === void 0 ? void 0 : _api$typeAhead.actions.open({
201
+ triggerHandler: typeAhead,
202
+ inputMethod
203
+ }));
204
+ }
192
205
  },
193
206
  commands: {
194
207
  insertEmoji: insertEmoji(api === null || api === void 0 ? void 0 : (_api$analytics5 = api.analytics) === null || _api$analytics5 === void 0 ? void 0 : _api$analytics5.actions)
@@ -204,22 +217,10 @@ export const emojiPlugin = ({
204
217
  keyshortcut: ':',
205
218
  icon: () => /*#__PURE__*/React.createElement(IconEmoji, null),
206
219
  action(insert, state) {
207
- var _api$analytics6;
208
220
  const tr = insert(undefined);
209
- api === null || api === void 0 ? void 0 : api.typeAhead.commands.openTypeAheadAtCursor({
221
+ api === null || api === void 0 ? void 0 : api.typeAhead.actions.openAtTransaction({
210
222
  triggerHandler: typeAhead,
211
223
  inputMethod: INPUT_METHOD.QUICK_INSERT
212
- })({
213
- tr
214
- });
215
- api === null || api === void 0 ? void 0 : (_api$analytics6 = api.analytics) === null || _api$analytics6 === void 0 ? void 0 : _api$analytics6.actions.attachAnalyticsEvent({
216
- action: ACTION.INVOKED,
217
- actionSubject: ACTION_SUBJECT.TYPEAHEAD,
218
- actionSubjectId: ACTION_SUBJECT_ID.TYPEAHEAD_EMOJI,
219
- attributes: {
220
- inputMethod: INPUT_METHOD.QUICK_INSERT
221
- },
222
- eventType: EVENT_TYPE.UI
223
224
  })(tr);
224
225
  return tr;
225
226
  }
@@ -20,7 +20,7 @@ export var insertEmoji = function insertEmoji(editorAnalyticsAPI) {
20
20
  var fragment = Fragment.fromArray([node, textNode]);
21
21
  var newTr = safeInsert(fragment)(tr);
22
22
  if (inputMethod) {
23
- editorAnalyticsAPI === null || editorAnalyticsAPI === void 0 ? void 0 : editorAnalyticsAPI.attachAnalyticsEvent({
23
+ editorAnalyticsAPI === null || editorAnalyticsAPI === void 0 || editorAnalyticsAPI.attachAnalyticsEvent({
24
24
  action: ACTION.INSERTED,
25
25
  actionSubject: ACTION_SUBJECT.DOCUMENT,
26
26
  actionSubjectId: ACTION_SUBJECT_ID.EMOJI,
@@ -139,11 +139,11 @@ export var emojiPlugin = function emojiPlugin(_ref2) {
139
139
  var text = fallback || shortName;
140
140
  var emojiPluginState = emojiPluginKey.getState(state);
141
141
  if (emojiPluginState.emojiProvider && emojiPluginState.emojiProvider.recordSelection && item.emoji) {
142
- var _api$analytics$shared, _api$analytics, _api$analytics$shared2, _api$analytics$shared3, _api$analytics2, _api$analytics2$share;
142
+ var _api$analytics$shared, _api$analytics, _api$analytics$shared2, _api$analytics2;
143
143
  emojiPluginState.emojiProvider.recordSelection(item.emoji).then(recordSelectionSucceededSli({
144
- createAnalyticsEvent: (_api$analytics$shared = api === null || api === void 0 ? void 0 : (_api$analytics = api.analytics) === null || _api$analytics === void 0 ? void 0 : (_api$analytics$shared2 = _api$analytics.sharedState.currentState()) === null || _api$analytics$shared2 === void 0 ? void 0 : _api$analytics$shared2.createAnalyticsEvent) !== null && _api$analytics$shared !== void 0 ? _api$analytics$shared : undefined
144
+ createAnalyticsEvent: (_api$analytics$shared = api === null || api === void 0 || (_api$analytics = api.analytics) === null || _api$analytics === void 0 || (_api$analytics = _api$analytics.sharedState.currentState()) === null || _api$analytics === void 0 ? void 0 : _api$analytics.createAnalyticsEvent) !== null && _api$analytics$shared !== void 0 ? _api$analytics$shared : undefined
145
145
  })).catch(recordSelectionFailedSli({
146
- createAnalyticsEvent: (_api$analytics$shared3 = api === null || api === void 0 ? void 0 : (_api$analytics2 = api.analytics) === null || _api$analytics2 === void 0 ? void 0 : (_api$analytics2$share = _api$analytics2.sharedState.currentState()) === null || _api$analytics2$share === void 0 ? void 0 : _api$analytics2$share.createAnalyticsEvent) !== null && _api$analytics$shared3 !== void 0 ? _api$analytics$shared3 : undefined
146
+ createAnalyticsEvent: (_api$analytics$shared2 = api === null || api === void 0 || (_api$analytics2 = api.analytics) === null || _api$analytics2 === void 0 || (_api$analytics2 = _api$analytics2.sharedState.currentState()) === null || _api$analytics2 === void 0 ? void 0 : _api$analytics2.createAnalyticsEvent) !== null && _api$analytics$shared2 !== void 0 ? _api$analytics$shared2 : undefined
147
147
  }));
148
148
  }
149
149
  var emojiNode = state.schema.nodes.emoji.createChecked({
@@ -153,7 +153,7 @@ export var emojiPlugin = function emojiPlugin(_ref2) {
153
153
  });
154
154
  var space = state.schema.text(' ');
155
155
  var tr = insert(Fragment.from([emojiNode, space]));
156
- api === null || api === void 0 ? void 0 : (_api$analytics3 = api.analytics) === null || _api$analytics3 === void 0 ? void 0 : _api$analytics3.actions.attachAnalyticsEvent({
156
+ api === null || api === void 0 || (_api$analytics3 = api.analytics) === null || _api$analytics3 === void 0 || _api$analytics3.actions.attachAnalyticsEvent({
157
157
  action: ACTION.INSERTED,
158
158
  actionSubject: ACTION_SUBJECT.DOCUMENT,
159
159
  actionSubjectId: ACTION_SUBJECT_ID.EMOJI,
@@ -186,7 +186,7 @@ export var emojiPlugin = function emojiPlugin(_ref2) {
186
186
  var schema = _ref7.schema,
187
187
  providerFactory = _ref7.providerFactory,
188
188
  featureFlags = _ref7.featureFlags;
189
- return asciiInputRulePlugin(schema, providerFactory, featureFlags, api === null || api === void 0 ? void 0 : (_api$analytics4 = api.analytics) === null || _api$analytics4 === void 0 ? void 0 : _api$analytics4.actions);
189
+ return asciiInputRulePlugin(schema, providerFactory, featureFlags, api === null || api === void 0 || (_api$analytics4 = api.analytics) === null || _api$analytics4 === void 0 ? void 0 : _api$analytics4.actions);
190
190
  }
191
191
  }];
192
192
  },
@@ -194,10 +194,22 @@ export var emojiPlugin = function emojiPlugin(_ref2) {
194
194
  if (!editorState) {
195
195
  return undefined;
196
196
  }
197
- return emojiPluginKey.getState(editorState);
197
+ var emojiPluginState = emojiPluginKey.getState(editorState);
198
+ return _objectSpread(_objectSpread({}, emojiPluginState), {}, {
199
+ typeAheadHandler: typeAhead
200
+ });
201
+ },
202
+ actions: {
203
+ openTypeAhead: function openTypeAhead(inputMethod) {
204
+ var _api$typeAhead;
205
+ return Boolean(api === null || api === void 0 || (_api$typeAhead = api.typeAhead) === null || _api$typeAhead === void 0 ? void 0 : _api$typeAhead.actions.open({
206
+ triggerHandler: typeAhead,
207
+ inputMethod: inputMethod
208
+ }));
209
+ }
198
210
  },
199
211
  commands: {
200
- insertEmoji: insertEmoji(api === null || api === void 0 ? void 0 : (_api$analytics5 = api.analytics) === null || _api$analytics5 === void 0 ? void 0 : _api$analytics5.actions)
212
+ insertEmoji: insertEmoji(api === null || api === void 0 || (_api$analytics5 = api.analytics) === null || _api$analytics5 === void 0 ? void 0 : _api$analytics5.actions)
201
213
  },
202
214
  pluginsOptions: {
203
215
  quickInsert: function quickInsert(_ref8) {
@@ -212,22 +224,10 @@ export var emojiPlugin = function emojiPlugin(_ref2) {
212
224
  return /*#__PURE__*/React.createElement(IconEmoji, null);
213
225
  },
214
226
  action: function action(insert, state) {
215
- var _api$analytics6;
216
227
  var tr = insert(undefined);
217
- api === null || api === void 0 ? void 0 : api.typeAhead.commands.openTypeAheadAtCursor({
228
+ api === null || api === void 0 || api.typeAhead.actions.openAtTransaction({
218
229
  triggerHandler: typeAhead,
219
230
  inputMethod: INPUT_METHOD.QUICK_INSERT
220
- })({
221
- tr: tr
222
- });
223
- api === null || api === void 0 ? void 0 : (_api$analytics6 = api.analytics) === null || _api$analytics6 === void 0 ? void 0 : _api$analytics6.actions.attachAnalyticsEvent({
224
- action: ACTION.INVOKED,
225
- actionSubject: ACTION_SUBJECT.TYPEAHEAD,
226
- actionSubjectId: ACTION_SUBJECT_ID.TYPEAHEAD_EMOJI,
227
- attributes: {
228
- inputMethod: INPUT_METHOD.QUICK_INSERT
229
- },
230
- eventType: EVENT_TYPE.UI
231
231
  })(tr);
232
232
  return tr;
233
233
  }
@@ -280,7 +280,7 @@ export function createRateLimitReachedFunction(fn, limitTime, limitCount, onLimi
280
280
  var now = Date.now();
281
281
  if (now - lastCallTime < limitTime) {
282
282
  if (++callCount > limitCount) {
283
- onLimitReached === null || onLimitReached === void 0 ? void 0 : onLimitReached();
283
+ onLimitReached === null || onLimitReached === void 0 || onLimitReached();
284
284
  }
285
285
  } else {
286
286
  lastCallTime = now;
@@ -367,17 +367,17 @@ export function createEmojiPlugin(pmPluginFactoryParams) {
367
367
  case 'emojiProvider':
368
368
  if (!providerPromise) {
369
369
  var _setProvider;
370
- return setProvider === null || setProvider === void 0 ? void 0 : (_setProvider = setProvider(undefined)) === null || _setProvider === void 0 ? void 0 : _setProvider(editorView.state, editorView.dispatch);
370
+ return setProvider === null || setProvider === void 0 || (_setProvider = setProvider(undefined)) === null || _setProvider === void 0 ? void 0 : _setProvider(editorView.state, editorView.dispatch);
371
371
  }
372
372
  providerPromise.then(function (provider) {
373
373
  var _setProvider2;
374
- setProvider === null || setProvider === void 0 ? void 0 : (_setProvider2 = setProvider(provider)) === null || _setProvider2 === void 0 ? void 0 : _setProvider2(editorView.state, editorView.dispatch);
374
+ setProvider === null || setProvider === void 0 || (_setProvider2 = setProvider(provider)) === null || _setProvider2 === void 0 || _setProvider2(editorView.state, editorView.dispatch);
375
375
  provider.getAsciiMap().then(function (asciiMap) {
376
376
  setAsciiMap(asciiMap)(editorView.state, editorView.dispatch);
377
377
  });
378
378
  }).catch(function () {
379
379
  var _setProvider3;
380
- return setProvider === null || setProvider === void 0 ? void 0 : (_setProvider3 = setProvider(undefined)) === null || _setProvider3 === void 0 ? void 0 : _setProvider3(editorView.state, editorView.dispatch);
380
+ return setProvider === null || setProvider === void 0 || (_setProvider3 = setProvider(undefined)) === null || _setProvider3 === void 0 ? void 0 : _setProvider3(editorView.state, editorView.dispatch);
381
381
  });
382
382
  break;
383
383
  }
@@ -156,7 +156,7 @@ var AsciiEmojiTransactionCreator = /*#__PURE__*/function () {
156
156
  value: function create() {
157
157
  var _this$editorAnalytics;
158
158
  var tr = this.state.tr.replaceWith(this.from, this.to, this.createNodes());
159
- (_this$editorAnalytics = this.editorAnalyticsAPI) === null || _this$editorAnalytics === void 0 ? void 0 : _this$editorAnalytics.attachAnalyticsEvent({
159
+ (_this$editorAnalytics = this.editorAnalyticsAPI) === null || _this$editorAnalytics === void 0 || _this$editorAnalytics.attachAnalyticsEvent({
160
160
  action: ACTION.INSERTED,
161
161
  actionSubject: ACTION_SUBJECT.DOCUMENT,
162
162
  actionSubjectId: ACTION_SUBJECT_ID.EMOJI,
@@ -1,7 +1,7 @@
1
1
  import type { INPUT_METHOD } from '@atlaskit/editor-common/analytics';
2
- import type { EditorCommand, NextEditorPlugin, OptionalPlugin } from '@atlaskit/editor-common/types';
2
+ import type { EditorCommand, NextEditorPlugin, OptionalPlugin, TypeAheadHandler } from '@atlaskit/editor-common/types';
3
3
  import type { AnalyticsPlugin } from '@atlaskit/editor-plugin-analytics';
4
- import type { TypeAheadPlugin } from '@atlaskit/editor-plugin-type-ahead';
4
+ import type { TypeAheadInputMethod, TypeAheadPlugin } from '@atlaskit/editor-plugin-type-ahead';
5
5
  import type { EmojiDescription, EmojiId, EmojiProvider, EmojiResourceConfig } from '@atlaskit/emoji';
6
6
  export interface EmojiPluginOptions {
7
7
  headless?: boolean;
@@ -11,11 +11,17 @@ export type EmojiPluginState = {
11
11
  emojiResourceConfig?: EmojiResourceConfig;
12
12
  asciiMap?: Map<string, EmojiDescription>;
13
13
  };
14
+ export type EmojiPluginSharedState = EmojiPluginState & {
15
+ typeAheadHandler: TypeAheadHandler;
16
+ };
14
17
  export type EmojiPlugin = NextEditorPlugin<'emoji', {
15
18
  pluginConfiguration: EmojiPluginOptions | undefined;
16
19
  dependencies: [OptionalPlugin<AnalyticsPlugin>, TypeAheadPlugin];
17
- sharedState: EmojiPluginState | undefined;
20
+ sharedState: EmojiPluginSharedState | undefined;
18
21
  commands: {
19
22
  insertEmoji: (emojiId: EmojiId, inputMethod?: INPUT_METHOD.PICKER | INPUT_METHOD.ASCII | INPUT_METHOD.TYPEAHEAD) => EditorCommand;
20
23
  };
24
+ actions: {
25
+ openTypeAhead: (inputMethod: TypeAheadInputMethod) => boolean;
26
+ };
21
27
  }>;
@@ -1,7 +1,7 @@
1
1
  import type { INPUT_METHOD } from '@atlaskit/editor-common/analytics';
2
- import type { EditorCommand, NextEditorPlugin, OptionalPlugin } from '@atlaskit/editor-common/types';
2
+ import type { EditorCommand, NextEditorPlugin, OptionalPlugin, TypeAheadHandler } from '@atlaskit/editor-common/types';
3
3
  import type { AnalyticsPlugin } from '@atlaskit/editor-plugin-analytics';
4
- import type { TypeAheadPlugin } from '@atlaskit/editor-plugin-type-ahead';
4
+ import type { TypeAheadInputMethod, TypeAheadPlugin } from '@atlaskit/editor-plugin-type-ahead';
5
5
  import type { EmojiDescription, EmojiId, EmojiProvider, EmojiResourceConfig } from '@atlaskit/emoji';
6
6
  export interface EmojiPluginOptions {
7
7
  headless?: boolean;
@@ -11,14 +11,20 @@ export type EmojiPluginState = {
11
11
  emojiResourceConfig?: EmojiResourceConfig;
12
12
  asciiMap?: Map<string, EmojiDescription>;
13
13
  };
14
+ export type EmojiPluginSharedState = EmojiPluginState & {
15
+ typeAheadHandler: TypeAheadHandler;
16
+ };
14
17
  export type EmojiPlugin = NextEditorPlugin<'emoji', {
15
18
  pluginConfiguration: EmojiPluginOptions | undefined;
16
19
  dependencies: [
17
20
  OptionalPlugin<AnalyticsPlugin>,
18
21
  TypeAheadPlugin
19
22
  ];
20
- sharedState: EmojiPluginState | undefined;
23
+ sharedState: EmojiPluginSharedState | undefined;
21
24
  commands: {
22
25
  insertEmoji: (emojiId: EmojiId, inputMethod?: INPUT_METHOD.PICKER | INPUT_METHOD.ASCII | INPUT_METHOD.TYPEAHEAD) => EditorCommand;
23
26
  };
27
+ actions: {
28
+ openTypeAhead: (inputMethod: TypeAheadInputMethod) => boolean;
29
+ };
24
30
  }>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@atlaskit/editor-plugin-emoji",
3
- "version": "0.3.6",
3
+ "version": "0.4.0",
4
4
  "description": "Emoji plugin for @atlaskit/editor-core",
5
5
  "publishConfig": {
6
6
  "registry": "https://registry.npmjs.org/"
@@ -21,9 +21,9 @@
21
21
  },
22
22
  "dependencies": {
23
23
  "@atlaskit/adf-schema": "^32.0.0",
24
- "@atlaskit/editor-common": "^76.1.0",
24
+ "@atlaskit/editor-common": "^76.6.0",
25
25
  "@atlaskit/editor-plugin-analytics": "^0.2.0",
26
- "@atlaskit/editor-plugin-type-ahead": "^0.4.0",
26
+ "@atlaskit/editor-plugin-type-ahead": "^0.5.0",
27
27
  "@atlaskit/editor-prosemirror": "1.1.0",
28
28
  "@atlaskit/emoji": "^67.5.0",
29
29
  "@atlaskit/prosemirror-input-rules": "^2.4.0",
package/report.api.md CHANGED
@@ -24,6 +24,8 @@ import type { EmojiResourceConfig } from '@atlaskit/emoji';
24
24
  import type { INPUT_METHOD } from '@atlaskit/editor-common/analytics';
25
25
  import type { NextEditorPlugin } from '@atlaskit/editor-common/types';
26
26
  import type { OptionalPlugin } from '@atlaskit/editor-common/types';
27
+ import type { TypeAheadHandler } from '@atlaskit/editor-common/types';
28
+ import type { TypeAheadInputMethod } from '@atlaskit/editor-plugin-type-ahead';
27
29
  import type { TypeAheadPlugin } from '@atlaskit/editor-plugin-type-ahead';
28
30
 
29
31
  // @public (undocumented)
@@ -32,7 +34,7 @@ export type EmojiPlugin = NextEditorPlugin<
32
34
  {
33
35
  pluginConfiguration: EmojiPluginOptions | undefined;
34
36
  dependencies: [OptionalPlugin<AnalyticsPlugin>, TypeAheadPlugin];
35
- sharedState: EmojiPluginState | undefined;
37
+ sharedState: EmojiPluginSharedState | undefined;
36
38
  commands: {
37
39
  insertEmoji: (
38
40
  emojiId: EmojiId,
@@ -42,6 +44,9 @@ export type EmojiPlugin = NextEditorPlugin<
42
44
  | INPUT_METHOD.TYPEAHEAD,
43
45
  ) => EditorCommand;
44
46
  };
47
+ actions: {
48
+ openTypeAhead: (inputMethod: TypeAheadInputMethod) => boolean;
49
+ };
45
50
  }
46
51
  >;
47
52
 
@@ -54,6 +59,11 @@ export interface EmojiPluginOptions {
54
59
  headless?: boolean;
55
60
  }
56
61
 
62
+ // @public (undocumented)
63
+ type EmojiPluginSharedState = EmojiPluginState & {
64
+ typeAheadHandler: TypeAheadHandler;
65
+ };
66
+
57
67
  // @public (undocumented)
58
68
  export type EmojiPluginState = {
59
69
  emojiProvider?: EmojiProvider;
@@ -13,16 +13,21 @@ import type { EmojiResourceConfig } from '@atlaskit/emoji';
13
13
  import type { INPUT_METHOD } from '@atlaskit/editor-common/analytics';
14
14
  import type { NextEditorPlugin } from '@atlaskit/editor-common/types';
15
15
  import type { OptionalPlugin } from '@atlaskit/editor-common/types';
16
+ import type { TypeAheadHandler } from '@atlaskit/editor-common/types';
17
+ import type { TypeAheadInputMethod } from '@atlaskit/editor-plugin-type-ahead';
16
18
  import type { TypeAheadPlugin } from '@atlaskit/editor-plugin-type-ahead';
17
19
 
18
20
  // @public (undocumented)
19
21
  export type EmojiPlugin = NextEditorPlugin<'emoji', {
20
22
  pluginConfiguration: EmojiPluginOptions | undefined;
21
23
  dependencies: [OptionalPlugin<AnalyticsPlugin>, TypeAheadPlugin];
22
- sharedState: EmojiPluginState | undefined;
24
+ sharedState: EmojiPluginSharedState | undefined;
23
25
  commands: {
24
26
  insertEmoji: (emojiId: EmojiId, inputMethod?: INPUT_METHOD.ASCII | INPUT_METHOD.PICKER | INPUT_METHOD.TYPEAHEAD) => EditorCommand;
25
27
  };
28
+ actions: {
29
+ openTypeAhead: (inputMethod: TypeAheadInputMethod) => boolean;
30
+ };
26
31
  }>;
27
32
 
28
33
  // @public
@@ -34,6 +39,11 @@ export interface EmojiPluginOptions {
34
39
  headless?: boolean;
35
40
  }
36
41
 
42
+ // @public (undocumented)
43
+ type EmojiPluginSharedState = EmojiPluginState & {
44
+ typeAheadHandler: TypeAheadHandler;
45
+ };
46
+
37
47
  // @public (undocumented)
38
48
  export type EmojiPluginState = {
39
49
  emojiProvider?: EmojiProvider;