@atlaskit/editor-plugin-mentions 18.3.0 → 18.3.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,39 @@
1
1
  # @atlaskit/editor-plugin-mentions
2
2
 
3
+ ## 18.3.3
4
+
5
+ ### Patch Changes
6
+
7
+ - Updated dependencies
8
+
9
+ ## 18.3.2
10
+
11
+ ### Patch Changes
12
+
13
+ - [`ebab4ff8f0326`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/ebab4ff8f0326) -
14
+ Fix the inviteItem viewed analytics event refiring on every keystroke instead of once per
15
+ typeahead session, when inline_invite_from_mentions_kill_switch is on.
16
+ - Updated dependencies
17
+
18
+ ## 18.3.1
19
+
20
+ ### Patch Changes
21
+
22
+ - [`27143ffe51a5a`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/27143ffe51a5a) -
23
+ `@atlaskit/editor-common/vanilla-tooltip` now exports `VANILLA_TOOLTIP_DEFAULT_CLASS`. Compose
24
+ tooltip class names from it rather than repeating the `ak-editor-vanilla-tooltip-default` literal.
25
+
26
+ Behind the `platform_editor_use_vanilla_components` experiment, `VanillaTooltip`:
27
+ - no longer throws `InvalidStateError` when shown again before its open delay has elapsed
28
+ - is `pointer-events: none`, so it cannot swallow pointer events meant for the content beneath —
29
+ pass `pointerEvents` in `styles` to opt out
30
+ - closes its popover before `destroy()` removes it from the document
31
+
32
+ Remaining changes are internal: tooltip consumers adopt the new constant, and the emoji tooltip
33
+ uses the shared class in place of an equivalent inline style object.
34
+
35
+ - Updated dependencies
36
+
3
37
  ## 18.3.0
4
38
 
5
39
  ### Minor Changes
@@ -31,12 +31,8 @@ var primitiveClassName = 'editor-mention-primitive';
31
31
  var primitiveWithAvatarClassName = 'editor-mention-primitive-with-avatar';
32
32
  var avatarContainerClassName = 'editor-mention-avatar';
33
33
  var mentionTextClassName = 'editor-mention-text';
34
- /**
35
- * Classes applied to the disabled-reason tooltip. `ak-editor-vanilla-tooltip-default` opts into
36
- * the shared `VanillaTooltip` look, defined as `vanillaTooltipDefaultStyles` in both
37
- * EditorContentContainer stylesheets — keep them in sync when renaming.
38
- */
39
- var disabledTooltipClassNames = 'ak-editor-vanilla-tooltip-default mention-disabled-tooltip';
34
+ /** Classes applied to the disabled-reason tooltip: the shared default look, plus our own hook. */
35
+ var disabledTooltipClassNames = "".concat(_vanillaTooltip.VANILLA_TOOLTIP_DEFAULT_CLASS, " mention-disabled-tooltip");
40
36
  var genericMentionIds = ['HipChat', 'all', 'here'];
41
37
  var unknownMentionText = "@".concat(_constants.UNKNOWN_USER_ID);
42
38
  // eslint-disable-next-line require-unicode-regexp
@@ -43,7 +43,7 @@ var ACTIONS = exports.ACTIONS = {
43
43
  CLEAR_PENDING_PASTED_AGENT_MENTION: 'CLEAR_PENDING_PASTED_AGENT_MENTION'
44
44
  };
45
45
  var PACKAGE_NAME = "@atlaskit/editor-plugin-mentions";
46
- var PACKAGE_VERSION = "18.2.10";
46
+ var PACKAGE_VERSION = "18.3.2";
47
47
  var setProvider = function setProvider(provider) {
48
48
  return function (state, dispatch) {
49
49
  if (dispatch) {
@@ -309,6 +309,8 @@ var makeTransformMentionsToTypeAheadItems = function makeTransformMentionsToType
309
309
  var fireEvent = _ref8.fireEvent,
310
310
  getFirstQueryWithoutResults = _ref8.getFirstQueryWithoutResults,
311
311
  setFirstQueryWithoutResults = _ref8.setFirstQueryWithoutResults,
312
+ hasFiredInviteItemViewed = _ref8.hasFiredInviteItemViewed,
313
+ markInviteItemViewed = _ref8.markInviteItemViewed,
312
314
  toItem = _ref8.toItem,
313
315
  enableAgentSectioning = _ref8.enableAgentSectioning;
314
316
  return function (_ref9) {
@@ -357,6 +359,12 @@ var makeTransformMentionsToTypeAheadItems = function makeTransformMentionsToType
357
359
  currentQuery: query,
358
360
  onInviteItemMount: function onInviteItemMount() {
359
361
  var _mentionProvider$getS2;
362
+ if ((0, _fg.fg)('inline_invite_from_mentions_kill_switch')) {
363
+ if (hasFiredInviteItemViewed()) {
364
+ return;
365
+ }
366
+ markInviteItemViewed();
367
+ }
360
368
  fireEvent((0, _analytics.buildTypeAheadInviteItemViewedPayload)(sessionId, contextIdentifierProvider, mentionProvider.userRole, (0, _fg.fg)('inline_invite_from_mentions_kill_switch') ? {
361
369
  isInlineInviteMentionsEnabled: (_mentionProvider$getS2 = mentionProvider.getShouldEnableInlineInvite) === null || _mentionProvider$getS2 === void 0 ? void 0 : _mentionProvider$getS2.call(mentionProvider)
362
370
  } : {}));
@@ -381,6 +389,7 @@ var createTypeAheadConfig = exports.createTypeAheadConfig = function createTypeA
381
389
  var sessionId = (0, _uuid.v4)();
382
390
  var firstQueryWithoutResults = null;
383
391
  var lastTypeAheadQuery = '';
392
+ var _hasFiredInviteItemViewed = false;
384
393
  var subscriptionKeys = new Set();
385
394
  var transformMentionsToTypeAheadItems = makeTransformMentionsToTypeAheadItems({
386
395
  enableAgentSectioning: enableAgentSectioning,
@@ -391,6 +400,12 @@ var createTypeAheadConfig = exports.createTypeAheadConfig = function createTypeA
391
400
  setFirstQueryWithoutResults: function setFirstQueryWithoutResults(query) {
392
401
  firstQueryWithoutResults = query;
393
402
  },
403
+ hasFiredInviteItemViewed: function hasFiredInviteItemViewed() {
404
+ return _hasFiredInviteItemViewed;
405
+ },
406
+ markInviteItemViewed: function markInviteItemViewed() {
407
+ _hasFiredInviteItemViewed = true;
408
+ },
394
409
  toItem: memoize(makeMentionToTypeaheadItem({
395
410
  useRefreshedItemHeight: enableAgentSectioning,
396
411
  profilecardProvider: profilecardProvider
@@ -499,6 +514,7 @@ var createTypeAheadConfig = exports.createTypeAheadConfig = function createTypeA
499
514
  onOpen: function onOpen() {
500
515
  firstQueryWithoutResults = null;
501
516
  lastTypeAheadQuery = '';
517
+ _hasFiredInviteItemViewed = false;
502
518
  },
503
519
  selectItem: function selectItem(state, item, insert, _ref12) {
504
520
  var _api$contextIdentifie3, _api$contextIdentifie4;
@@ -656,6 +672,7 @@ var createTypeAheadConfig = exports.createTypeAheadConfig = function createTypeA
656
672
  stats = _ref14.stats,
657
673
  wasItemInserted = _ref14.wasItemInserted;
658
674
  firstQueryWithoutResults = null;
675
+ _hasFiredInviteItemViewed = false;
659
676
  var pickerElapsedTime = stats.startedAt ? performance.now() - stats.startedAt : 0;
660
677
  if (!wasItemInserted) {
661
678
  fireEvent((0, _analytics.buildTypeAheadCancelPayload)(pickerElapsedTime, stats.keyCount.arrowUp, stats.keyCount.arrowDown, sessionId, query || ''), 'fabric-elements');
@@ -1,7 +1,7 @@
1
1
  import _defineProperty from "@babel/runtime/helpers/defineProperty";
2
2
  import { getBrowserInfo } from '@atlaskit/editor-common/browser';
3
3
  import { isSSR } from '@atlaskit/editor-common/core-utils';
4
- import { VanillaTooltip } from '@atlaskit/editor-common/vanilla-tooltip';
4
+ import { VANILLA_TOOLTIP_DEFAULT_CLASS, VanillaTooltip } from '@atlaskit/editor-common/vanilla-tooltip';
5
5
  import { ZERO_WIDTH_SPACE } from '@atlaskit/editor-common/whitespace';
6
6
  import { DOMSerializer } from '@atlaskit/editor-prosemirror/model';
7
7
  // oxlint-disable-next-line import/no-duplicates
@@ -20,12 +20,8 @@ const primitiveClassName = 'editor-mention-primitive';
20
20
  const primitiveWithAvatarClassName = 'editor-mention-primitive-with-avatar';
21
21
  const avatarContainerClassName = 'editor-mention-avatar';
22
22
  const mentionTextClassName = 'editor-mention-text';
23
- /**
24
- * Classes applied to the disabled-reason tooltip. `ak-editor-vanilla-tooltip-default` opts into
25
- * the shared `VanillaTooltip` look, defined as `vanillaTooltipDefaultStyles` in both
26
- * EditorContentContainer stylesheets — keep them in sync when renaming.
27
- */
28
- const disabledTooltipClassNames = 'ak-editor-vanilla-tooltip-default mention-disabled-tooltip';
23
+ /** Classes applied to the disabled-reason tooltip: the shared default look, plus our own hook. */
24
+ const disabledTooltipClassNames = `${VANILLA_TOOLTIP_DEFAULT_CLASS} mention-disabled-tooltip`;
29
25
  const genericMentionIds = ['HipChat', 'all', 'here'];
30
26
  const unknownMentionText = `@${UNKNOWN_USER_ID}`;
31
27
  // eslint-disable-next-line require-unicode-regexp
@@ -32,7 +32,7 @@ export const ACTIONS = {
32
32
  CLEAR_PENDING_PASTED_AGENT_MENTION: 'CLEAR_PENDING_PASTED_AGENT_MENTION'
33
33
  };
34
34
  const PACKAGE_NAME = "@atlaskit/editor-plugin-mentions";
35
- const PACKAGE_VERSION = "18.2.10";
35
+ const PACKAGE_VERSION = "18.3.2";
36
36
  const setProvider = provider => (state, dispatch) => {
37
37
  if (dispatch) {
38
38
  dispatch(state.tr.setMeta(mentionPluginKey, {
@@ -274,6 +274,8 @@ const makeTransformMentionsToTypeAheadItems = ({
274
274
  fireEvent,
275
275
  getFirstQueryWithoutResults,
276
276
  setFirstQueryWithoutResults,
277
+ hasFiredInviteItemViewed,
278
+ markInviteItemViewed,
277
279
  toItem,
278
280
  enableAgentSectioning
279
281
  }) => {
@@ -320,6 +322,12 @@ const makeTransformMentionsToTypeAheadItems = ({
320
322
  currentQuery: query,
321
323
  onInviteItemMount: () => {
322
324
  var _mentionProvider$getS2;
325
+ if (fg('inline_invite_from_mentions_kill_switch')) {
326
+ if (hasFiredInviteItemViewed()) {
327
+ return;
328
+ }
329
+ markInviteItemViewed();
330
+ }
323
331
  fireEvent(buildTypeAheadInviteItemViewedPayload(sessionId, contextIdentifierProvider, mentionProvider.userRole, fg('inline_invite_from_mentions_kill_switch') ? {
324
332
  isInlineInviteMentionsEnabled: (_mentionProvider$getS2 = mentionProvider.getShouldEnableInlineInvite) === null || _mentionProvider$getS2 === void 0 ? void 0 : _mentionProvider$getS2.call(mentionProvider)
325
333
  } : {}));
@@ -343,6 +351,7 @@ export const createTypeAheadConfig = ({
343
351
  let sessionId = uuid();
344
352
  let firstQueryWithoutResults = null;
345
353
  let lastTypeAheadQuery = '';
354
+ let hasFiredInviteItemViewed = false;
346
355
  const subscriptionKeys = new Set();
347
356
  const transformMentionsToTypeAheadItems = makeTransformMentionsToTypeAheadItems({
348
357
  enableAgentSectioning,
@@ -351,6 +360,10 @@ export const createTypeAheadConfig = ({
351
360
  setFirstQueryWithoutResults: query => {
352
361
  firstQueryWithoutResults = query;
353
362
  },
363
+ hasFiredInviteItemViewed: () => hasFiredInviteItemViewed,
364
+ markInviteItemViewed: () => {
365
+ hasFiredInviteItemViewed = true;
366
+ },
354
367
  toItem: memoize(makeMentionToTypeaheadItem({
355
368
  useRefreshedItemHeight: enableAgentSectioning,
356
369
  profilecardProvider
@@ -463,6 +476,7 @@ export const createTypeAheadConfig = ({
463
476
  onOpen: () => {
464
477
  firstQueryWithoutResults = null;
465
478
  lastTypeAheadQuery = '';
479
+ hasFiredInviteItemViewed = false;
466
480
  },
467
481
  selectItem(state, item, insert, {
468
482
  mode,
@@ -629,6 +643,7 @@ export const createTypeAheadConfig = ({
629
643
  wasItemInserted
630
644
  }) {
631
645
  firstQueryWithoutResults = null;
646
+ hasFiredInviteItemViewed = false;
632
647
  const pickerElapsedTime = stats.startedAt ? performance.now() - stats.startedAt : 0;
633
648
  if (!wasItemInserted) {
634
649
  fireEvent(buildTypeAheadCancelPayload(pickerElapsedTime, stats.keyCount.arrowUp, stats.keyCount.arrowDown, sessionId, query || ''), 'fabric-elements');
@@ -7,7 +7,7 @@ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbol
7
7
  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) { _defineProperty(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; }
8
8
  import { getBrowserInfo } from '@atlaskit/editor-common/browser';
9
9
  import { isSSR } from '@atlaskit/editor-common/core-utils';
10
- import { VanillaTooltip } from '@atlaskit/editor-common/vanilla-tooltip';
10
+ import { VANILLA_TOOLTIP_DEFAULT_CLASS, VanillaTooltip } from '@atlaskit/editor-common/vanilla-tooltip';
11
11
  import { ZERO_WIDTH_SPACE } from '@atlaskit/editor-common/whitespace';
12
12
  import { DOMSerializer } from '@atlaskit/editor-prosemirror/model';
13
13
  // oxlint-disable-next-line import/no-duplicates
@@ -26,12 +26,8 @@ var primitiveClassName = 'editor-mention-primitive';
26
26
  var primitiveWithAvatarClassName = 'editor-mention-primitive-with-avatar';
27
27
  var avatarContainerClassName = 'editor-mention-avatar';
28
28
  var mentionTextClassName = 'editor-mention-text';
29
- /**
30
- * Classes applied to the disabled-reason tooltip. `ak-editor-vanilla-tooltip-default` opts into
31
- * the shared `VanillaTooltip` look, defined as `vanillaTooltipDefaultStyles` in both
32
- * EditorContentContainer stylesheets — keep them in sync when renaming.
33
- */
34
- var disabledTooltipClassNames = 'ak-editor-vanilla-tooltip-default mention-disabled-tooltip';
29
+ /** Classes applied to the disabled-reason tooltip: the shared default look, plus our own hook. */
30
+ var disabledTooltipClassNames = "".concat(VANILLA_TOOLTIP_DEFAULT_CLASS, " mention-disabled-tooltip");
35
31
  var genericMentionIds = ['HipChat', 'all', 'here'];
36
32
  var unknownMentionText = "@".concat(UNKNOWN_USER_ID);
37
33
  // eslint-disable-next-line require-unicode-regexp
@@ -35,7 +35,7 @@ export var ACTIONS = {
35
35
  CLEAR_PENDING_PASTED_AGENT_MENTION: 'CLEAR_PENDING_PASTED_AGENT_MENTION'
36
36
  };
37
37
  var PACKAGE_NAME = "@atlaskit/editor-plugin-mentions";
38
- var PACKAGE_VERSION = "18.2.10";
38
+ var PACKAGE_VERSION = "18.3.2";
39
39
  var setProvider = function setProvider(provider) {
40
40
  return function (state, dispatch) {
41
41
  if (dispatch) {
@@ -300,6 +300,8 @@ var makeTransformMentionsToTypeAheadItems = function makeTransformMentionsToType
300
300
  var fireEvent = _ref8.fireEvent,
301
301
  getFirstQueryWithoutResults = _ref8.getFirstQueryWithoutResults,
302
302
  setFirstQueryWithoutResults = _ref8.setFirstQueryWithoutResults,
303
+ hasFiredInviteItemViewed = _ref8.hasFiredInviteItemViewed,
304
+ markInviteItemViewed = _ref8.markInviteItemViewed,
303
305
  toItem = _ref8.toItem,
304
306
  enableAgentSectioning = _ref8.enableAgentSectioning;
305
307
  return function (_ref9) {
@@ -348,6 +350,12 @@ var makeTransformMentionsToTypeAheadItems = function makeTransformMentionsToType
348
350
  currentQuery: query,
349
351
  onInviteItemMount: function onInviteItemMount() {
350
352
  var _mentionProvider$getS2;
353
+ if (fg('inline_invite_from_mentions_kill_switch')) {
354
+ if (hasFiredInviteItemViewed()) {
355
+ return;
356
+ }
357
+ markInviteItemViewed();
358
+ }
351
359
  fireEvent(buildTypeAheadInviteItemViewedPayload(sessionId, contextIdentifierProvider, mentionProvider.userRole, fg('inline_invite_from_mentions_kill_switch') ? {
352
360
  isInlineInviteMentionsEnabled: (_mentionProvider$getS2 = mentionProvider.getShouldEnableInlineInvite) === null || _mentionProvider$getS2 === void 0 ? void 0 : _mentionProvider$getS2.call(mentionProvider)
353
361
  } : {}));
@@ -372,6 +380,7 @@ export var createTypeAheadConfig = function createTypeAheadConfig(_ref0) {
372
380
  var sessionId = uuid();
373
381
  var firstQueryWithoutResults = null;
374
382
  var lastTypeAheadQuery = '';
383
+ var _hasFiredInviteItemViewed = false;
375
384
  var subscriptionKeys = new Set();
376
385
  var transformMentionsToTypeAheadItems = makeTransformMentionsToTypeAheadItems({
377
386
  enableAgentSectioning: enableAgentSectioning,
@@ -382,6 +391,12 @@ export var createTypeAheadConfig = function createTypeAheadConfig(_ref0) {
382
391
  setFirstQueryWithoutResults: function setFirstQueryWithoutResults(query) {
383
392
  firstQueryWithoutResults = query;
384
393
  },
394
+ hasFiredInviteItemViewed: function hasFiredInviteItemViewed() {
395
+ return _hasFiredInviteItemViewed;
396
+ },
397
+ markInviteItemViewed: function markInviteItemViewed() {
398
+ _hasFiredInviteItemViewed = true;
399
+ },
385
400
  toItem: memoize(makeMentionToTypeaheadItem({
386
401
  useRefreshedItemHeight: enableAgentSectioning,
387
402
  profilecardProvider: profilecardProvider
@@ -490,6 +505,7 @@ export var createTypeAheadConfig = function createTypeAheadConfig(_ref0) {
490
505
  onOpen: function onOpen() {
491
506
  firstQueryWithoutResults = null;
492
507
  lastTypeAheadQuery = '';
508
+ _hasFiredInviteItemViewed = false;
493
509
  },
494
510
  selectItem: function selectItem(state, item, insert, _ref12) {
495
511
  var _api$contextIdentifie3, _api$contextIdentifie4;
@@ -647,6 +663,7 @@ export var createTypeAheadConfig = function createTypeAheadConfig(_ref0) {
647
663
  stats = _ref14.stats,
648
664
  wasItemInserted = _ref14.wasItemInserted;
649
665
  firstQueryWithoutResults = null;
666
+ _hasFiredInviteItemViewed = false;
650
667
  var pickerElapsedTime = stats.startedAt ? performance.now() - stats.startedAt : 0;
651
668
  if (!wasItemInserted) {
652
669
  fireEvent(buildTypeAheadCancelPayload(pickerElapsedTime, stats.keyCount.arrowUp, stats.keyCount.arrowDown, sessionId, query || ''), 'fabric-elements');
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@atlaskit/editor-plugin-mentions",
3
- "version": "18.3.0",
3
+ "version": "18.3.3",
4
4
  "description": "Mentions plugin for @atlaskit/editor-core",
5
5
  "author": "Atlassian Pty Ltd",
6
6
  "license": "Apache-2.0",
@@ -47,7 +47,7 @@
47
47
  "@atlaskit/section-message": "^10.2.0",
48
48
  "@atlaskit/teams-app-config": "^3.1.0",
49
49
  "@atlaskit/theme": "^28.2.0",
50
- "@atlaskit/tmp-editor-statsig": "^174.0.0",
50
+ "@atlaskit/tmp-editor-statsig": "^176.0.0",
51
51
  "@atlaskit/tokens": "^16.11.0",
52
52
  "@atlaskit/tooltip": "^24.3.0",
53
53
  "@atlaskit/user-picker": "^13.12.0",
@@ -59,14 +59,14 @@
59
59
  "uuid": "^11.1.1"
60
60
  },
61
61
  "peerDependencies": {
62
- "@atlaskit/editor-common": "^120.14.0",
62
+ "@atlaskit/editor-common": "^120.16.0",
63
63
  "react": "^18.2.0 || ^19.2.0",
64
64
  "react-dom": "^18.2.0 || ^19.2.0",
65
65
  "react-intl": "^5.25.1 || ^6.0.0 || ^7.0.0"
66
66
  },
67
67
  "devDependencies": {
68
68
  "@atlaskit/button": "^25.3.0",
69
- "@atlaskit/editor-core": "^226.4.0",
69
+ "@atlaskit/editor-core": "^226.6.0",
70
70
  "@testing-library/react": "^16.3.0",
71
71
  "react": "^19.2.0",
72
72
  "react-dom": "^19.2.0",