@atlaskit/editor-core 150.0.2 → 150.0.3

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,11 @@
1
1
  # @atlaskit/editor-core
2
2
 
3
+ ## 150.0.3
4
+
5
+ ### Patch Changes
6
+
7
+ - [`b52e6fa288b`](https://bitbucket.org/atlassian/atlassian-frontend/commits/b52e6fa288b) - [HOT-97127] Fix mentions getItems comunication to avoid wrong results
8
+
3
9
  ## 150.0.2
4
10
 
5
11
  ### Patch Changes
@@ -40,6 +40,12 @@ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "functio
40
40
 
41
41
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
42
42
 
43
+ function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
44
+
45
+ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
46
+
47
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
48
+
43
49
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
44
50
 
45
51
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
@@ -232,6 +238,7 @@ var createTypeAheadConfig = function createTypeAheadConfig(_ref6) {
232
238
  HighlightComponent = _ref6.HighlightComponent;
233
239
  var sessionId = (0, _uuid.default)();
234
240
  var firstQueryWithoutResults = null;
241
+ var subscriptionKeys = new Set();
235
242
  var typeAhead = {
236
243
  id: _typeAhead.TypeAheadAvailableNodes.MENTION,
237
244
  trigger: '@',
@@ -278,9 +285,15 @@ var createTypeAheadConfig = function createTypeAheadConfig(_ref6) {
278
285
  var key = "loadingMentionsForTypeAhead_".concat((0, _uuid.default)());
279
286
 
280
287
  var mentionsSubscribeCallback = function mentionsSubscribeCallback(mentions) {
281
- var query = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
288
+ var resultQuery = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
282
289
  var stats = arguments.length > 2 ? arguments[2] : undefined;
290
+
291
+ if (query !== resultQuery) {
292
+ return;
293
+ }
294
+
283
295
  mentionProvider.unsubscribe(key);
296
+ subscriptionKeys.delete(key);
284
297
  var mentionItems = mentions.map(function (mention) {
285
298
  return memoizedToItem.call(mention);
286
299
  });
@@ -316,13 +329,14 @@ var createTypeAheadConfig = function createTypeAheadConfig(_ref6) {
316
329
  }
317
330
  };
318
331
 
332
+ subscriptionKeys.add(key);
319
333
  mentionProvider.subscribe(key, mentionsSubscribeCallback);
320
334
  mentionProvider.filter(query || '', _objectSpread(_objectSpread({}, contextIdentifierProvider), {}, {
321
335
  sessionId: sessionId
322
336
  }));
323
337
  });
324
338
  },
325
- onOpen: function onOpen(editorState) {
339
+ onOpen: function onOpen() {
326
340
  firstQueryWithoutResults = null;
327
341
  },
328
342
  selectItem: function selectItem(state, item, insert, _ref8) {
@@ -394,11 +408,33 @@ var createTypeAheadConfig = function createTypeAheadConfig(_ref6) {
394
408
  return insert(_prosemirrorModel.Fragment.from([mentionNode, space]));
395
409
  },
396
410
  dismiss: function dismiss(_ref9) {
397
- var query = _ref9.query,
411
+ var editorState = _ref9.editorState,
412
+ query = _ref9.query,
398
413
  stats = _ref9.stats;
399
414
  firstQueryWithoutResults = null;
400
415
  var pickerElapsedTime = stats.startedAt ? Date.now() - stats.startedAt : 0;
401
416
  fireEvent((0, _analytics.buildTypeAheadCancelPayload)(pickerElapsedTime, stats.keyCount.arrowUp, stats.keyCount.arrowDown, sessionId, query || ''));
417
+ var pluginState = (0, _utils2.getMentionPluginState)(editorState);
418
+
419
+ if (pluginState !== null && pluginState !== void 0 && pluginState.mentionProvider) {
420
+ var mentionProvider = pluginState.mentionProvider;
421
+
422
+ var _iterator = _createForOfIteratorHelper(subscriptionKeys),
423
+ _step;
424
+
425
+ try {
426
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
427
+ var key = _step.value;
428
+ mentionProvider.unsubscribe(key);
429
+ }
430
+ } catch (err) {
431
+ _iterator.e(err);
432
+ } finally {
433
+ _iterator.f();
434
+ }
435
+ }
436
+
437
+ subscriptionKeys.clear();
402
438
  sessionId = (0, _uuid.default)();
403
439
  }
404
440
  };
@@ -6,7 +6,7 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.nextMajorVersion = exports.version = exports.name = void 0;
7
7
  var name = "@atlaskit/editor-core";
8
8
  exports.name = name;
9
- var version = "150.0.2";
9
+ var version = "150.0.3";
10
10
  exports.version = version;
11
11
 
12
12
  var nextMajorVersion = function nextMajorVersion() {
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "name": "@atlaskit/editor-core",
3
- "version": "150.0.2",
3
+ "version": "150.0.3",
4
4
  "sideEffects": false
5
5
  }
@@ -188,6 +188,7 @@ export const createTypeAheadConfig = ({
188
188
  }) => {
189
189
  let sessionId = uuid();
190
190
  let firstQueryWithoutResults = null;
191
+ const subscriptionKeys = new Set();
191
192
  const typeAhead = {
192
193
  id: TypeAheadAvailableNodes.MENTION,
193
194
  trigger: '@',
@@ -235,8 +236,13 @@ export const createTypeAheadConfig = ({
235
236
  return new Promise(resolve => {
236
237
  const key = `loadingMentionsForTypeAhead_${uuid()}`;
237
238
 
238
- const mentionsSubscribeCallback = (mentions, query = '', stats) => {
239
+ const mentionsSubscribeCallback = (mentions, resultQuery = '', stats) => {
240
+ if (query !== resultQuery) {
241
+ return;
242
+ }
243
+
239
244
  mentionProvider.unsubscribe(key);
245
+ subscriptionKeys.delete(key);
240
246
  const mentionItems = mentions.map(mention => memoizedToItem.call(mention));
241
247
  buildAndSendElementsTypeAheadAnalytics(fireEvent)({
242
248
  query,
@@ -272,6 +278,7 @@ export const createTypeAheadConfig = ({
272
278
  }
273
279
  };
274
280
 
281
+ subscriptionKeys.add(key);
275
282
  mentionProvider.subscribe(key, mentionsSubscribeCallback);
276
283
  mentionProvider.filter(query || '', { ...contextIdentifierProvider,
277
284
  sessionId
@@ -279,7 +286,7 @@ export const createTypeAheadConfig = ({
279
286
  });
280
287
  },
281
288
 
282
- onOpen: editorState => {
289
+ onOpen: () => {
283
290
  firstQueryWithoutResults = null;
284
291
  },
285
292
 
@@ -355,12 +362,24 @@ export const createTypeAheadConfig = ({
355
362
  },
356
363
 
357
364
  dismiss({
365
+ editorState,
358
366
  query,
359
367
  stats
360
368
  }) {
361
369
  firstQueryWithoutResults = null;
362
370
  const pickerElapsedTime = stats.startedAt ? Date.now() - stats.startedAt : 0;
363
371
  fireEvent(buildTypeAheadCancelPayload(pickerElapsedTime, stats.keyCount.arrowUp, stats.keyCount.arrowDown, sessionId, query || ''));
372
+ const pluginState = getMentionPluginState(editorState);
373
+
374
+ if (pluginState !== null && pluginState !== void 0 && pluginState.mentionProvider) {
375
+ const mentionProvider = pluginState.mentionProvider;
376
+
377
+ for (let key of subscriptionKeys) {
378
+ mentionProvider.unsubscribe(key);
379
+ }
380
+ }
381
+
382
+ subscriptionKeys.clear();
364
383
  sessionId = uuid();
365
384
  }
366
385
 
@@ -1,5 +1,5 @@
1
1
  export const name = "@atlaskit/editor-core";
2
- export const version = "150.0.2";
2
+ export const version = "150.0.3";
3
3
  export const nextMajorVersion = () => {
4
4
  return [Number(version.split('.')[0]) + 1, 0, 0].join('.');
5
5
  };
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "name": "@atlaskit/editor-core",
3
- "version": "150.0.2",
3
+ "version": "150.0.3",
4
4
  "sideEffects": false
5
5
  }
@@ -1,6 +1,12 @@
1
1
  import _defineProperty from "@babel/runtime/helpers/defineProperty";
2
2
  import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray";
3
3
 
4
+ function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
5
+
6
+ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
7
+
8
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
9
+
4
10
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
5
11
 
6
12
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
@@ -201,6 +207,7 @@ export var createTypeAheadConfig = function createTypeAheadConfig(_ref6) {
201
207
  HighlightComponent = _ref6.HighlightComponent;
202
208
  var sessionId = uuid();
203
209
  var firstQueryWithoutResults = null;
210
+ var subscriptionKeys = new Set();
204
211
  var typeAhead = {
205
212
  id: TypeAheadAvailableNodes.MENTION,
206
213
  trigger: '@',
@@ -247,9 +254,15 @@ export var createTypeAheadConfig = function createTypeAheadConfig(_ref6) {
247
254
  var key = "loadingMentionsForTypeAhead_".concat(uuid());
248
255
 
249
256
  var mentionsSubscribeCallback = function mentionsSubscribeCallback(mentions) {
250
- var query = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
257
+ var resultQuery = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
251
258
  var stats = arguments.length > 2 ? arguments[2] : undefined;
259
+
260
+ if (query !== resultQuery) {
261
+ return;
262
+ }
263
+
252
264
  mentionProvider.unsubscribe(key);
265
+ subscriptionKeys.delete(key);
253
266
  var mentionItems = mentions.map(function (mention) {
254
267
  return memoizedToItem.call(mention);
255
268
  });
@@ -285,13 +298,14 @@ export var createTypeAheadConfig = function createTypeAheadConfig(_ref6) {
285
298
  }
286
299
  };
287
300
 
301
+ subscriptionKeys.add(key);
288
302
  mentionProvider.subscribe(key, mentionsSubscribeCallback);
289
303
  mentionProvider.filter(query || '', _objectSpread(_objectSpread({}, contextIdentifierProvider), {}, {
290
304
  sessionId: sessionId
291
305
  }));
292
306
  });
293
307
  },
294
- onOpen: function onOpen(editorState) {
308
+ onOpen: function onOpen() {
295
309
  firstQueryWithoutResults = null;
296
310
  },
297
311
  selectItem: function selectItem(state, item, insert, _ref8) {
@@ -362,11 +376,33 @@ export var createTypeAheadConfig = function createTypeAheadConfig(_ref6) {
362
376
  return insert(Fragment.from([mentionNode, space]));
363
377
  },
364
378
  dismiss: function dismiss(_ref9) {
365
- var query = _ref9.query,
379
+ var editorState = _ref9.editorState,
380
+ query = _ref9.query,
366
381
  stats = _ref9.stats;
367
382
  firstQueryWithoutResults = null;
368
383
  var pickerElapsedTime = stats.startedAt ? Date.now() - stats.startedAt : 0;
369
384
  fireEvent(buildTypeAheadCancelPayload(pickerElapsedTime, stats.keyCount.arrowUp, stats.keyCount.arrowDown, sessionId, query || ''));
385
+ var pluginState = getMentionPluginState(editorState);
386
+
387
+ if (pluginState !== null && pluginState !== void 0 && pluginState.mentionProvider) {
388
+ var mentionProvider = pluginState.mentionProvider;
389
+
390
+ var _iterator = _createForOfIteratorHelper(subscriptionKeys),
391
+ _step;
392
+
393
+ try {
394
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
395
+ var key = _step.value;
396
+ mentionProvider.unsubscribe(key);
397
+ }
398
+ } catch (err) {
399
+ _iterator.e(err);
400
+ } finally {
401
+ _iterator.f();
402
+ }
403
+ }
404
+
405
+ subscriptionKeys.clear();
370
406
  sessionId = uuid();
371
407
  }
372
408
  };
@@ -1,5 +1,5 @@
1
1
  export var name = "@atlaskit/editor-core";
2
- export var version = "150.0.2";
2
+ export var version = "150.0.3";
3
3
  export var nextMajorVersion = function nextMajorVersion() {
4
4
  return [Number(version.split('.')[0]) + 1, 0, 0].join('.');
5
5
  };
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "name": "@atlaskit/editor-core",
3
- "version": "150.0.2",
3
+ "version": "150.0.3",
4
4
  "sideEffects": false
5
5
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@atlaskit/editor-core",
3
- "version": "150.0.2",
3
+ "version": "150.0.3",
4
4
  "description": "A package contains Atlassian editor core functionality",
5
5
  "publishConfig": {
6
6
  "registry": "https://registry.npmjs.org/"