@atlaskit/editor-plugin-mentions 0.1.13 → 0.1.14

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,12 @@
1
1
  # @atlaskit/editor-plugin-mentions
2
2
 
3
+ ## 0.1.14
4
+
5
+ ### Patch Changes
6
+
7
+ - [#64538](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/pull-requests/64538) [`264115ce5ec4`](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/commits/264115ce5ec4) - DTR-2096: Add taskListId and taskItemId to mention typeAhead clicked and pressed analytic events, when inserted within actions or tasks
8
+ - Updated dependencies
9
+
3
10
  ## 0.1.13
4
11
 
5
12
  ### Patch Changes
@@ -109,7 +109,7 @@ var buildTypeAheadInviteItemClickedPayload = exports.buildTypeAheadInviteItemCli
109
109
  userRole: userRole
110
110
  });
111
111
  };
112
- var buildTypeAheadInsertedPayload = exports.buildTypeAheadInsertedPayload = function buildTypeAheadInsertedPayload(duration, upKeyCount, downKeyCount, sessionId, insertType, mention, mentionList, query, contextIdentifierProvider) {
112
+ var buildTypeAheadInsertedPayload = exports.buildTypeAheadInsertedPayload = function buildTypeAheadInsertedPayload(duration, upKeyCount, downKeyCount, sessionId, insertType, mention, mentionList, query, contextIdentifierProvider, taskListId, taskItemId) {
113
113
  var _extractAttributesFro3 = extractAttributesFromQuery(query),
114
114
  queryLength = _extractAttributesFro3.queryLength,
115
115
  spaceInQuery = _extractAttributesFro3.spaceInQuery;
@@ -127,7 +127,9 @@ var buildTypeAheadInsertedPayload = exports.buildTypeAheadInsertedPayload = func
127
127
  upKeyCount: upKeyCount,
128
128
  downKeyCount: downKeyCount,
129
129
  memberCount: (0, _utils.isTeamType)(mention.userType) && mention.context ? mention.context.memberCount : null,
130
- includesYou: (0, _utils.isTeamType)(mention.userType) && mention.context ? mention.context.includesYou : null
130
+ includesYou: (0, _utils.isTeamType)(mention.userType) && mention.context ? mention.context.includesYou : null,
131
+ taskListId: taskListId,
132
+ taskItemId: taskItemId
131
133
  });
132
134
  if (contextIdentifierProvider) {
133
135
  analyticsPayload.containerId = contextIdentifierProvider.containerId || undefined;
@@ -14,12 +14,13 @@ var _react = _interopRequireDefault(require("react"));
14
14
  var _uuid = _interopRequireDefault(require("uuid"));
15
15
  var _typeAhead = require("@atlaskit/editor-common/type-ahead");
16
16
  var _model = require("@atlaskit/editor-prosemirror/model");
17
+ var _utils = require("@atlaskit/editor-prosemirror/utils");
17
18
  var _item = require("@atlaskit/mention/item");
18
19
  var _resource = require("@atlaskit/mention/resource");
19
20
  var _analytics = require("../analytics");
20
- var _utils = require("../pm-plugins/utils");
21
+ var _utils2 = require("../pm-plugins/utils");
21
22
  var _InviteItem = _interopRequireWildcard(require("../ui/InviteItem"));
22
- var _utils2 = require("../utils");
23
+ var _utils3 = require("../utils");
23
24
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
24
25
  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; }
25
26
  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; } } }; }
@@ -58,7 +59,7 @@ var withInviteItem = function withInviteItem(_ref3) {
58
59
  mentionProvider: mentionProvider,
59
60
  onInviteItemMount: onInviteItemMount
60
61
  });
61
- var keepInviteItem = (0, _utils2.shouldKeepInviteItem)(currentQuery, firstQueryWithoutResults);
62
+ var keepInviteItem = (0, _utils3.shouldKeepInviteItem)(currentQuery, firstQueryWithoutResults);
62
63
  if (mentionItems.length === 0) {
63
64
  return keepInviteItem ? [inviteItem] : [];
64
65
  }
@@ -116,7 +117,7 @@ var buildAndSendElementsTypeAheadAnalytics = function buildAndSendElementsTypeAh
116
117
  var duration = 0;
117
118
  var userOrTeamIds = null;
118
119
  var teams = null;
119
- if (!(0, _utils2.isTeamStats)(stats)) {
120
+ if (!(0, _utils3.isTeamStats)(stats)) {
120
121
  // is from primary mention endpoint which could be just user mentions or user/team mentions
121
122
  duration = stats && stats.duration;
122
123
  teams = null;
@@ -128,7 +129,7 @@ var buildAndSendElementsTypeAheadAnalytics = function buildAndSendElementsTypeAh
128
129
  duration = stats && stats.teamMentionDuration;
129
130
  userOrTeamIds = null;
130
131
  teams = mentions.map(function (mention) {
131
- return (0, _utils2.isTeamType)(mention.userType) ? {
132
+ return (0, _utils3.isTeamType)(mention.userType) ? {
132
133
  teamId: mention.id,
133
134
  includesYou: mention.context.includesYou,
134
135
  memberCount: mention.context.memberCount
@@ -212,7 +213,7 @@ var createTypeAheadConfig = exports.createTypeAheadConfig = function createTypeA
212
213
  getItems: function getItems(_ref7) {
213
214
  var query = _ref7.query,
214
215
  editorState = _ref7.editorState;
215
- var pluginState = (0, _utils.getMentionPluginState)(editorState);
216
+ var pluginState = (0, _utils2.getMentionPluginState)(editorState);
216
217
  if (!(pluginState !== null && pluginState !== void 0 && pluginState.mentionProvider)) {
217
218
  return Promise.resolve([]);
218
219
  }
@@ -276,7 +277,7 @@ var createTypeAheadConfig = exports.createTypeAheadConfig = function createTypeA
276
277
  query = _ref8.query,
277
278
  sourceListItem = _ref8.sourceListItem;
278
279
  var schema = state.schema;
279
- var pluginState = (0, _utils.getMentionPluginState)(state);
280
+ var pluginState = (0, _utils2.getMentionPluginState)(state);
280
281
  var mentionProvider = pluginState.mentionProvider;
281
282
  var _item$mention = item.mention,
282
283
  id = _item$mention.id,
@@ -289,13 +290,13 @@ var createTypeAheadConfig = exports.createTypeAheadConfig = function createTypeA
289
290
  var mentionContext = _objectSpread(_objectSpread({}, pluginState.contextIdentifierProvider), {}, {
290
291
  sessionId: sessionId
291
292
  });
292
- if (mentionProvider && !(0, _utils2.isInviteItem)(item.mention)) {
293
+ if (mentionProvider && !(0, _utils3.isInviteItem)(item.mention)) {
293
294
  mentionProvider.recordMentionSelection(item.mention, mentionContext);
294
295
  }
295
296
 
296
297
  // use same timer as StatsModifier
297
298
  var pickerElapsedTime = stats.startedAt ? performance.now() - stats.startedAt : 0;
298
- if (mentionProvider && mentionProvider.shouldEnableInvite && (0, _utils2.isInviteItem)(item.mention)) {
299
+ if (mentionProvider && mentionProvider.shouldEnableInvite && (0, _utils3.isInviteItem)(item.mention)) {
299
300
  // Don't fire event and the callback with selection by space press
300
301
  if (mode !== 'space') {
301
302
  fireEvent((0, _analytics.buildTypeAheadInviteItemClickedPayload)(pickerElapsedTime, stats.keyCount.arrowUp, stats.keyCount.arrowDown, sessionId, mode, query, pluginState.contextIdentifierProvider, mentionProvider.userRole));
@@ -305,11 +306,20 @@ var createTypeAheadConfig = exports.createTypeAheadConfig = function createTypeA
305
306
  }
306
307
  return state.tr;
307
308
  }
309
+ var taskListId, taskItemId;
310
+ var taskList = (0, _utils.findParentNodeOfType)(state.schema.nodes.taskList)(state.selection);
311
+ if (taskList) {
312
+ taskListId = taskList.node.attrs.localId;
313
+ var taskItem = (0, _utils.findParentNodeOfType)(state.schema.nodes.taskItem)(state.selection);
314
+ if (taskItem) {
315
+ taskItemId = taskItem.node.attrs.localId;
316
+ }
317
+ }
308
318
  fireEvent((0, _analytics.buildTypeAheadInsertedPayload)(pickerElapsedTime, stats.keyCount.arrowUp, stats.keyCount.arrowDown, sessionId, mode, item.mention, sourceListItem.map(function (x) {
309
319
  return x.mention;
310
- }), query, pluginState.contextIdentifierProvider));
320
+ }), query, pluginState.contextIdentifierProvider, taskListId, taskItemId));
311
321
  sessionId = (0, _uuid.default)();
312
- if (mentionProvider && (0, _utils2.isTeamType)(userType)) {
322
+ if (mentionProvider && (0, _utils3.isTeamType)(userType)) {
313
323
  return insert(buildNodesForTeamMention(schema, item.mention, mentionProvider, sanitizePrivateContent));
314
324
  }
315
325
 
@@ -338,7 +348,7 @@ var createTypeAheadConfig = exports.createTypeAheadConfig = function createTypeA
338
348
  if (!wasItemInserted) {
339
349
  fireEvent((0, _analytics.buildTypeAheadCancelPayload)(pickerElapsedTime, stats.keyCount.arrowUp, stats.keyCount.arrowDown, sessionId, query || ''));
340
350
  }
341
- var pluginState = (0, _utils.getMentionPluginState)(editorState);
351
+ var pluginState = (0, _utils2.getMentionPluginState)(editorState);
342
352
  if (pluginState !== null && pluginState !== void 0 && pluginState.mentionProvider) {
343
353
  var mentionProvider = pluginState.mentionProvider;
344
354
  var _iterator = _createForOfIteratorHelper(subscriptionKeys),
@@ -97,7 +97,7 @@ export const buildTypeAheadInviteItemClickedPayload = (duration, upKeyCount, dow
97
97
  userRole
98
98
  });
99
99
  };
100
- export const buildTypeAheadInsertedPayload = (duration, upKeyCount, downKeyCount, sessionId, insertType, mention, mentionList, query, contextIdentifierProvider) => {
100
+ export const buildTypeAheadInsertedPayload = (duration, upKeyCount, downKeyCount, sessionId, insertType, mention, mentionList, query, contextIdentifierProvider, taskListId, taskItemId) => {
101
101
  const {
102
102
  queryLength,
103
103
  spaceInQuery
@@ -116,7 +116,9 @@ export const buildTypeAheadInsertedPayload = (duration, upKeyCount, downKeyCount
116
116
  upKeyCount,
117
117
  downKeyCount,
118
118
  memberCount: isTeamType(mention.userType) && mention.context ? mention.context.memberCount : null,
119
- includesYou: isTeamType(mention.userType) && mention.context ? mention.context.includesYou : null
119
+ includesYou: isTeamType(mention.userType) && mention.context ? mention.context.includesYou : null,
120
+ taskListId,
121
+ taskItemId
120
122
  });
121
123
  if (contextIdentifierProvider) {
122
124
  analyticsPayload.containerId = contextIdentifierProvider.containerId || undefined;
@@ -2,6 +2,7 @@ import React from 'react';
2
2
  import uuid from 'uuid';
3
3
  import { TypeAheadAvailableNodes } from '@atlaskit/editor-common/type-ahead';
4
4
  import { Fragment } from '@atlaskit/editor-prosemirror/model';
5
+ import { findParentNodeOfType } from '@atlaskit/editor-prosemirror/utils';
5
6
  import { MENTION_ITEM_HEIGHT, MentionItem } from '@atlaskit/mention/item';
6
7
  import { isResolvingMentionProvider } from '@atlaskit/mention/resource';
7
8
  import { buildTypeAheadCancelPayload, buildTypeAheadInsertedPayload, buildTypeAheadInviteExposurePayload, buildTypeAheadInviteItemClickedPayload, buildTypeAheadInviteItemViewedPayload, buildTypeAheadRenderedPayload } from '../analytics';
@@ -291,7 +292,16 @@ export const createTypeAheadConfig = ({
291
292
  }
292
293
  return state.tr;
293
294
  }
294
- fireEvent(buildTypeAheadInsertedPayload(pickerElapsedTime, stats.keyCount.arrowUp, stats.keyCount.arrowDown, sessionId, mode, item.mention, sourceListItem.map(x => x.mention), query, pluginState.contextIdentifierProvider));
295
+ let taskListId, taskItemId;
296
+ const taskList = findParentNodeOfType(state.schema.nodes.taskList)(state.selection);
297
+ if (taskList) {
298
+ taskListId = taskList.node.attrs.localId;
299
+ const taskItem = findParentNodeOfType(state.schema.nodes.taskItem)(state.selection);
300
+ if (taskItem) {
301
+ taskItemId = taskItem.node.attrs.localId;
302
+ }
303
+ }
304
+ fireEvent(buildTypeAheadInsertedPayload(pickerElapsedTime, stats.keyCount.arrowUp, stats.keyCount.arrowDown, sessionId, mode, item.mention, sourceListItem.map(x => x.mention), query, pluginState.contextIdentifierProvider, taskListId, taskItemId));
295
305
  sessionId = uuid();
296
306
  if (mentionProvider && isTeamType(userType)) {
297
307
  return insert(buildNodesForTeamMention(schema, item.mention, mentionProvider, sanitizePrivateContent));
@@ -102,7 +102,7 @@ export var buildTypeAheadInviteItemClickedPayload = function buildTypeAheadInvit
102
102
  userRole: userRole
103
103
  });
104
104
  };
105
- export var buildTypeAheadInsertedPayload = function buildTypeAheadInsertedPayload(duration, upKeyCount, downKeyCount, sessionId, insertType, mention, mentionList, query, contextIdentifierProvider) {
105
+ export var buildTypeAheadInsertedPayload = function buildTypeAheadInsertedPayload(duration, upKeyCount, downKeyCount, sessionId, insertType, mention, mentionList, query, contextIdentifierProvider, taskListId, taskItemId) {
106
106
  var _extractAttributesFro3 = extractAttributesFromQuery(query),
107
107
  queryLength = _extractAttributesFro3.queryLength,
108
108
  spaceInQuery = _extractAttributesFro3.spaceInQuery;
@@ -120,7 +120,9 @@ export var buildTypeAheadInsertedPayload = function buildTypeAheadInsertedPayloa
120
120
  upKeyCount: upKeyCount,
121
121
  downKeyCount: downKeyCount,
122
122
  memberCount: isTeamType(mention.userType) && mention.context ? mention.context.memberCount : null,
123
- includesYou: isTeamType(mention.userType) && mention.context ? mention.context.includesYou : null
123
+ includesYou: isTeamType(mention.userType) && mention.context ? mention.context.includesYou : null,
124
+ taskListId: taskListId,
125
+ taskItemId: taskItemId
124
126
  });
125
127
  if (contextIdentifierProvider) {
126
128
  analyticsPayload.containerId = contextIdentifierProvider.containerId || undefined;
@@ -9,6 +9,7 @@ import React from 'react';
9
9
  import uuid from 'uuid';
10
10
  import { TypeAheadAvailableNodes } from '@atlaskit/editor-common/type-ahead';
11
11
  import { Fragment } from '@atlaskit/editor-prosemirror/model';
12
+ import { findParentNodeOfType } from '@atlaskit/editor-prosemirror/utils';
12
13
  import { MENTION_ITEM_HEIGHT, MentionItem } from '@atlaskit/mention/item';
13
14
  import { isResolvingMentionProvider } from '@atlaskit/mention/resource';
14
15
  import { buildTypeAheadCancelPayload, buildTypeAheadInsertedPayload, buildTypeAheadInviteExposurePayload, buildTypeAheadInviteItemClickedPayload, buildTypeAheadInviteItemViewedPayload, buildTypeAheadRenderedPayload } from '../analytics';
@@ -293,9 +294,18 @@ export var createTypeAheadConfig = function createTypeAheadConfig(_ref6) {
293
294
  }
294
295
  return state.tr;
295
296
  }
297
+ var taskListId, taskItemId;
298
+ var taskList = findParentNodeOfType(state.schema.nodes.taskList)(state.selection);
299
+ if (taskList) {
300
+ taskListId = taskList.node.attrs.localId;
301
+ var taskItem = findParentNodeOfType(state.schema.nodes.taskItem)(state.selection);
302
+ if (taskItem) {
303
+ taskItemId = taskItem.node.attrs.localId;
304
+ }
305
+ }
296
306
  fireEvent(buildTypeAheadInsertedPayload(pickerElapsedTime, stats.keyCount.arrowUp, stats.keyCount.arrowDown, sessionId, mode, item.mention, sourceListItem.map(function (x) {
297
307
  return x.mention;
298
- }), query, pluginState.contextIdentifierProvider));
308
+ }), query, pluginState.contextIdentifierProvider, taskListId, taskItemId));
299
309
  sessionId = uuid();
300
310
  if (mentionProvider && isTeamType(userType)) {
301
311
  return insert(buildNodesForTeamMention(schema, item.mention, mentionProvider, sanitizePrivateContent));
@@ -9,5 +9,5 @@ export declare const buildTypeAheadCancelPayload: (duration: number, upKeyCount:
9
9
  export declare const buildTypeAheadInviteItemViewedPayload: (sessionId: string, contextIdentifierProvider?: ContextIdentifierProvider, userRole?: UserRole) => GasPayload;
10
10
  export declare const buildTypeAheadInviteExposurePayload: (sessionId: string, contextIdentifierProvider?: ContextIdentifierProvider, inviteExperimentCohort?: InviteExperimentCohort, userRole?: UserRole) => GasPayload;
11
11
  export declare const buildTypeAheadInviteItemClickedPayload: (duration: number, upKeyCount: number, downKeyCount: number, sessionId: string, insertType: SelectItemMode, query?: string, contextIdentifierProvider?: ContextIdentifierProvider, userRole?: UserRole) => GasPayload;
12
- export declare const buildTypeAheadInsertedPayload: (duration: number, upKeyCount: number, downKeyCount: number, sessionId: string, insertType: SelectItemMode, mention: MentionDescription, mentionList?: MentionDescription[], query?: string, contextIdentifierProvider?: ContextIdentifierProvider) => GasPayload;
12
+ export declare const buildTypeAheadInsertedPayload: (duration: number, upKeyCount: number, downKeyCount: number, sessionId: string, insertType: SelectItemMode, mention: MentionDescription, mentionList?: MentionDescription[], query?: string, contextIdentifierProvider?: ContextIdentifierProvider, taskListId?: string, taskItemId?: string) => GasPayload;
13
13
  export declare const buildTypeAheadRenderedPayload: (duration: number, userIds: Array<string> | null, query: string, teams: TeamInfoAttrAnalytics[] | null) => GasPayload;
@@ -9,5 +9,5 @@ export declare const buildTypeAheadCancelPayload: (duration: number, upKeyCount:
9
9
  export declare const buildTypeAheadInviteItemViewedPayload: (sessionId: string, contextIdentifierProvider?: ContextIdentifierProvider, userRole?: UserRole) => GasPayload;
10
10
  export declare const buildTypeAheadInviteExposurePayload: (sessionId: string, contextIdentifierProvider?: ContextIdentifierProvider, inviteExperimentCohort?: InviteExperimentCohort, userRole?: UserRole) => GasPayload;
11
11
  export declare const buildTypeAheadInviteItemClickedPayload: (duration: number, upKeyCount: number, downKeyCount: number, sessionId: string, insertType: SelectItemMode, query?: string, contextIdentifierProvider?: ContextIdentifierProvider, userRole?: UserRole) => GasPayload;
12
- export declare const buildTypeAheadInsertedPayload: (duration: number, upKeyCount: number, downKeyCount: number, sessionId: string, insertType: SelectItemMode, mention: MentionDescription, mentionList?: MentionDescription[], query?: string, contextIdentifierProvider?: ContextIdentifierProvider) => GasPayload;
12
+ export declare const buildTypeAheadInsertedPayload: (duration: number, upKeyCount: number, downKeyCount: number, sessionId: string, insertType: SelectItemMode, mention: MentionDescription, mentionList?: MentionDescription[], query?: string, contextIdentifierProvider?: ContextIdentifierProvider, taskListId?: string, taskItemId?: string) => GasPayload;
13
13
  export declare const buildTypeAheadRenderedPayload: (duration: number, userIds: Array<string> | null, query: string, teams: TeamInfoAttrAnalytics[] | null) => GasPayload;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@atlaskit/editor-plugin-mentions",
3
- "version": "0.1.13",
3
+ "version": "0.1.14",
4
4
  "description": "Mentions plugin for @atlaskit/editor-core",
5
5
  "author": "Atlassian Pty Ltd",
6
6
  "license": "Apache-2.0",
@@ -10,7 +10,8 @@
10
10
  "atlassian": {
11
11
  "team": "Editor: AI",
12
12
  "inPublicMirror": false,
13
- "releaseModel": "continuous"
13
+ "releaseModel": "continuous",
14
+ "runReact18": false
14
15
  },
15
16
  "repository": "https://bitbucket.org/atlassian/atlassian-frontend",
16
17
  "main": "dist/cjs/index.js",
@@ -33,14 +34,14 @@
33
34
  "dependencies": {
34
35
  "@atlaskit/adf-schema": "^35.2.0",
35
36
  "@atlaskit/analytics-gas-types": "^5.1.0",
36
- "@atlaskit/editor-common": "^76.27.0",
37
+ "@atlaskit/editor-common": "^76.32.0",
37
38
  "@atlaskit/editor-plugin-analytics": "^0.4.0",
38
39
  "@atlaskit/editor-plugin-type-ahead": "^0.8.0",
39
40
  "@atlaskit/editor-prosemirror": "1.1.0",
40
41
  "@atlaskit/icon": "^22.0.0",
41
42
  "@atlaskit/mention": "^22.1.0",
42
43
  "@atlaskit/theme": "^12.6.0",
43
- "@atlaskit/tokens": "^1.30.0",
44
+ "@atlaskit/tokens": "^1.33.0",
44
45
  "@babel/runtime": "^7.0.0",
45
46
  "@emotion/react": "^11.7.1",
46
47
  "uuid": "^3.1.0"