@atlaskit/editor-core 189.0.4 → 189.0.6

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.
@@ -1,5 +1,4 @@
1
1
  import { ACTION, INPUT_METHOD, EVENT_TYPE, ACTION_SUBJECT, ACTION_SUBJECT_ID, PasteTypes, PasteContents } from '@atlaskit/editor-common/analytics';
2
- import { addAnalytics } from '../../analytics';
3
2
  import { getPasteSource } from '../util';
4
3
  import { handlePasteAsPlainText, handlePasteIntoTaskOrDecisionOrPanel, handleCodeBlock, handleMediaSingle, handlePastePreservingMarks, handleMarkdown, handleRichText, handleExpandPasteInTable, handleSelectedTable, handlePasteLinkOnSelectedText, handlePasteIntoCaption, handlePastePanelOrDecisionContentIntoList, handlePasteNonNestableBlockNodesIntoList } from '../handlers';
5
4
  import { findParentNode } from '@atlaskit/editor-prosemirror/utils';
@@ -215,48 +214,50 @@ export function createPasteAnalyticsPayload(view, event, slice, pasteContext) {
215
214
  // TODO: ED-6612 We should not dispatch only analytics, it's preferred to wrap each command with his own analytics.
216
215
  // However, handlers like handleMacroAutoConvert dispatch multiple time,
217
216
  // so pasteCommandWithAnalytics is useless in this case.
218
- export function sendPasteAnalyticsEvent(view, event, slice, pasteContext) {
217
+ export const sendPasteAnalyticsEvent = editorAnalyticsAPI => (view, event, slice, pasteContext) => {
218
+ const tr = view.state.tr;
219
219
  const payload = createPasteAnalyticsPayload(view, event, slice, pasteContext);
220
- view.dispatch(addAnalytics(view.state, view.state.tr, payload));
221
- }
222
- export const handlePasteAsPlainTextWithAnalytics = (view, event, slice) => injectAnalyticsPayloadBeforeCommand(createPasteAnalyticsPayloadBySelection(event, slice, {
220
+ editorAnalyticsAPI === null || editorAnalyticsAPI === void 0 ? void 0 : editorAnalyticsAPI.attachAnalyticsEvent(payload)(tr);
221
+ view.dispatch(tr);
222
+ };
223
+ export const handlePasteAsPlainTextWithAnalytics = editorAnalyticsAPI => (view, event, slice) => injectAnalyticsPayloadBeforeCommand(editorAnalyticsAPI)(createPasteAnalyticsPayloadBySelection(event, slice, {
223
224
  type: PasteTypes.plain,
224
225
  asPlain: true
225
- }))(handlePasteAsPlainText(slice, event));
226
+ }))(handlePasteAsPlainText(slice, event, editorAnalyticsAPI));
226
227
  export const handlePasteIntoTaskAndDecisionWithAnalytics = (view, event, slice, type, pluginInjectionApi) => {
227
- var _pluginInjectionApi$c, _pluginInjectionApi$c2;
228
- return injectAnalyticsPayloadBeforeCommand(createPasteAnalyticsPayloadBySelection(event, slice, {
228
+ var _pluginInjectionApi$a, _pluginInjectionApi$c, _pluginInjectionApi$c2;
229
+ return injectAnalyticsPayloadBeforeCommand(pluginInjectionApi === null || pluginInjectionApi === void 0 ? void 0 : (_pluginInjectionApi$a = pluginInjectionApi.analytics) === null || _pluginInjectionApi$a === void 0 ? void 0 : _pluginInjectionApi$a.actions)(createPasteAnalyticsPayloadBySelection(event, slice, {
229
230
  type
230
231
  }))(handlePasteIntoTaskOrDecisionOrPanel(slice, pluginInjectionApi === null || pluginInjectionApi === void 0 ? void 0 : (_pluginInjectionApi$c = pluginInjectionApi.card) === null || _pluginInjectionApi$c === void 0 ? void 0 : (_pluginInjectionApi$c2 = _pluginInjectionApi$c.actions) === null || _pluginInjectionApi$c2 === void 0 ? void 0 : _pluginInjectionApi$c2.queueCardsFromChangedTr));
231
232
  };
232
- export const handlePasteIntoCaptionWithAnalytics = (view, event, slice, type) => injectAnalyticsPayloadBeforeCommand(createPasteAnalyticsPayloadBySelection(event, slice, {
233
+ export const handlePasteIntoCaptionWithAnalytics = editorAnalyticsAPI => (view, event, slice, type) => injectAnalyticsPayloadBeforeCommand(editorAnalyticsAPI)(createPasteAnalyticsPayloadBySelection(event, slice, {
233
234
  type
234
235
  }))(handlePasteIntoCaption(slice));
235
- export const handleCodeBlockWithAnalytics = (view, event, slice, text) => injectAnalyticsPayloadBeforeCommand(createPasteAnalyticsPayloadBySelection(event, slice, {
236
+ export const handleCodeBlockWithAnalytics = editorAnalyticsAPI => (view, event, slice, text) => injectAnalyticsPayloadBeforeCommand(editorAnalyticsAPI)(createPasteAnalyticsPayloadBySelection(event, slice, {
236
237
  type: PasteTypes.plain
237
238
  }))(handleCodeBlock(text));
238
- export const handleMediaSingleWithAnalytics = (view, event, slice, type, insertMediaAsMediaSingle) => injectAnalyticsPayloadBeforeCommand(createPasteAnalyticsPayloadBySelection(event, slice, {
239
+ export const handleMediaSingleWithAnalytics = editorAnalyticsAPI => (view, event, slice, type, insertMediaAsMediaSingle) => injectAnalyticsPayloadBeforeCommand(editorAnalyticsAPI)(createPasteAnalyticsPayloadBySelection(event, slice, {
239
240
  type
240
241
  }))(handleMediaSingle(INPUT_METHOD.CLIPBOARD, insertMediaAsMediaSingle)(slice));
241
242
  export const handlePastePreservingMarksWithAnalytics = (view, event, slice, type, pluginInjectionApi) => {
242
- var _pluginInjectionApi$c3, _pluginInjectionApi$c4;
243
- return injectAnalyticsPayloadBeforeCommand(createPasteAnalyticsPayloadBySelection(event, slice, {
243
+ var _pluginInjectionApi$a2, _pluginInjectionApi$c3, _pluginInjectionApi$c4;
244
+ return injectAnalyticsPayloadBeforeCommand(pluginInjectionApi === null || pluginInjectionApi === void 0 ? void 0 : (_pluginInjectionApi$a2 = pluginInjectionApi.analytics) === null || _pluginInjectionApi$a2 === void 0 ? void 0 : _pluginInjectionApi$a2.actions)(createPasteAnalyticsPayloadBySelection(event, slice, {
244
245
  type
245
246
  }))(handlePastePreservingMarks(slice, pluginInjectionApi === null || pluginInjectionApi === void 0 ? void 0 : (_pluginInjectionApi$c3 = pluginInjectionApi.card) === null || _pluginInjectionApi$c3 === void 0 ? void 0 : (_pluginInjectionApi$c4 = _pluginInjectionApi$c3.actions) === null || _pluginInjectionApi$c4 === void 0 ? void 0 : _pluginInjectionApi$c4.queueCardsFromChangedTr));
246
247
  };
247
248
  export const handleMarkdownWithAnalytics = (view, event, slice, pluginInjectionApi) => {
248
- var _pluginInjectionApi$c5, _pluginInjectionApi$c6;
249
- return injectAnalyticsPayloadBeforeCommand(createPasteAnalyticsPayloadBySelection(event, slice, {
249
+ var _pluginInjectionApi$a3, _pluginInjectionApi$c5, _pluginInjectionApi$c6;
250
+ return injectAnalyticsPayloadBeforeCommand(pluginInjectionApi === null || pluginInjectionApi === void 0 ? void 0 : (_pluginInjectionApi$a3 = pluginInjectionApi.analytics) === null || _pluginInjectionApi$a3 === void 0 ? void 0 : _pluginInjectionApi$a3.actions)(createPasteAnalyticsPayloadBySelection(event, slice, {
250
251
  type: PasteTypes.markdown
251
252
  }))(handleMarkdown(slice, pluginInjectionApi === null || pluginInjectionApi === void 0 ? void 0 : (_pluginInjectionApi$c5 = pluginInjectionApi.card) === null || _pluginInjectionApi$c5 === void 0 ? void 0 : (_pluginInjectionApi$c6 = _pluginInjectionApi$c5.actions) === null || _pluginInjectionApi$c6 === void 0 ? void 0 : _pluginInjectionApi$c6.queueCardsFromChangedTr));
252
253
  };
253
254
  export const handleRichTextWithAnalytics = (view, event, slice, pluginInjectionApi) => {
254
- var _pluginInjectionApi$c7, _pluginInjectionApi$c8;
255
- return injectAnalyticsPayloadBeforeCommand(createPasteAnalyticsPayloadBySelection(event, slice, {
255
+ var _pluginInjectionApi$a4, _pluginInjectionApi$c7, _pluginInjectionApi$c8;
256
+ return injectAnalyticsPayloadBeforeCommand(pluginInjectionApi === null || pluginInjectionApi === void 0 ? void 0 : (_pluginInjectionApi$a4 = pluginInjectionApi.analytics) === null || _pluginInjectionApi$a4 === void 0 ? void 0 : _pluginInjectionApi$a4.actions)(createPasteAnalyticsPayloadBySelection(event, slice, {
256
257
  type: PasteTypes.richText
257
258
  }))(handleRichText(slice, pluginInjectionApi === null || pluginInjectionApi === void 0 ? void 0 : (_pluginInjectionApi$c7 = pluginInjectionApi.card) === null || _pluginInjectionApi$c7 === void 0 ? void 0 : (_pluginInjectionApi$c8 = _pluginInjectionApi$c7.actions) === null || _pluginInjectionApi$c8 === void 0 ? void 0 : _pluginInjectionApi$c8.queueCardsFromChangedTr));
258
259
  };
259
- function injectAnalyticsPayloadBeforeCommand(createPayloadByTransaction) {
260
+ const injectAnalyticsPayloadBeforeCommand = editorAnalyticsAPI => createPayloadByTransaction => {
260
261
  return mainCommand => {
261
262
  return (state, dispatch, view) => {
262
263
  let originalTransaction = state.tr;
@@ -270,28 +271,28 @@ function injectAnalyticsPayloadBeforeCommand(createPayloadByTransaction) {
270
271
  if (dispatch && originalTransaction.docChanged) {
271
272
  // it needs to know the selection before the changes
272
273
  const payload = createPayloadByTransaction(state.selection);
273
- addAnalytics(state, originalTransaction, payload);
274
+ editorAnalyticsAPI === null || editorAnalyticsAPI === void 0 ? void 0 : editorAnalyticsAPI.attachAnalyticsEvent(payload)(originalTransaction);
274
275
  dispatch(originalTransaction);
275
276
  }
276
277
  return true;
277
278
  };
278
279
  };
279
- }
280
- export const handlePastePanelOrDecisionIntoListWithAnalytics = (view, event, slice, findRootParentListNode) => injectAnalyticsPayloadBeforeCommand(createPasteAnalyticsPayloadBySelection(event, slice, {
280
+ };
281
+ export const handlePastePanelOrDecisionIntoListWithAnalytics = editorAnalyticsAPI => (view, event, slice, findRootParentListNode) => injectAnalyticsPayloadBeforeCommand(editorAnalyticsAPI)(createPasteAnalyticsPayloadBySelection(event, slice, {
281
282
  type: PasteTypes.richText
282
283
  }))(handlePastePanelOrDecisionContentIntoList(slice, findRootParentListNode));
283
- export const handlePasteNonNestableBlockNodesIntoListWithAnalytics = (view, event, slice) => injectAnalyticsPayloadBeforeCommand(createPasteAnalyticsPayloadBySelection(event, slice, {
284
+ export const handlePasteNonNestableBlockNodesIntoListWithAnalytics = editorAnalyticsAPI => (view, event, slice) => injectAnalyticsPayloadBeforeCommand(editorAnalyticsAPI)(createPasteAnalyticsPayloadBySelection(event, slice, {
284
285
  type: PasteTypes.richText,
285
286
  pasteSplitList: true
286
287
  }))(handlePasteNonNestableBlockNodesIntoList(slice));
287
- export const handleExpandWithAnalytics = (view, event, slice) => injectAnalyticsPayloadBeforeCommand(createPasteAnalyticsPayloadBySelection(event, slice, {
288
+ export const handleExpandWithAnalytics = editorAnalyticsAPI => (view, event, slice) => injectAnalyticsPayloadBeforeCommand(editorAnalyticsAPI)(createPasteAnalyticsPayloadBySelection(event, slice, {
288
289
  type: PasteTypes.richText,
289
290
  pasteSplitList: true
290
291
  }))(handleExpandPasteInTable(slice));
291
- export const handleSelectedTableWithAnalytics = (view, event, slice) => injectAnalyticsPayloadBeforeCommand(createPasteAnalyticsPayloadBySelection(event, slice, {
292
+ export const handleSelectedTableWithAnalytics = editorAnalyticsAPI => (view, event, slice) => injectAnalyticsPayloadBeforeCommand(editorAnalyticsAPI)(createPasteAnalyticsPayloadBySelection(event, slice, {
292
293
  type: PasteTypes.richText
293
- }))(handleSelectedTable(slice));
294
- export const handlePasteLinkOnSelectedTextWithAnalytics = (view, event, slice, type) => injectAnalyticsPayloadBeforeCommand(createPasteAnalyticsPayloadBySelection(event, slice, {
294
+ }))(handleSelectedTable(editorAnalyticsAPI)(slice));
295
+ export const handlePasteLinkOnSelectedTextWithAnalytics = editorAnalyticsAPI => (view, event, slice, type) => injectAnalyticsPayloadBeforeCommand(editorAnalyticsAPI)(createPasteAnalyticsPayloadBySelection(event, slice, {
295
296
  type,
296
297
  hyperlinkPasteOnText: true
297
298
  }))(handlePasteLinkOnSelectedText(slice));
@@ -26,6 +26,8 @@ export { pluginKey as stateKey } from './plugin-factory';
26
26
  import { hasParentNodeOfType } from '@atlaskit/editor-prosemirror/utils';
27
27
  import { PastePluginActionTypes } from '../actions';
28
28
  export function createPlugin(schema, dispatchAnalyticsEvent, dispatch, featureFlags, pluginInjectionApi, cardOptions, sanitizePrivateContent, providerFactory) {
29
+ var _pluginInjectionApi$a;
30
+ const editorAnalyticsAPI = pluginInjectionApi === null || pluginInjectionApi === void 0 ? void 0 : (_pluginInjectionApi$a = pluginInjectionApi.analytics) === null || _pluginInjectionApi$a === void 0 ? void 0 : _pluginInjectionApi$a.actions;
29
31
  const atlassianMarkDownParser = new MarkdownTransformer(schema, md);
30
32
  function getMarkdownSlice(text, openStart, openEnd) {
31
33
  let textInput = text;
@@ -203,7 +205,7 @@ export function createPlugin(schema, dispatchAnalyticsEvent, dispatch, featureFl
203
205
  };
204
206
  slice = handleParagraphBlockMarks(state, slice);
205
207
  const plainTextPasteSlice = linkifyContent(state.schema)(slice);
206
- if (handlePasteAsPlainTextWithAnalytics(view, event, plainTextPasteSlice)(state, dispatch, view)) {
208
+ if (handlePasteAsPlainTextWithAnalytics(editorAnalyticsAPI)(view, event, plainTextPasteSlice)(state, dispatch, view)) {
207
209
  return true;
208
210
  }
209
211
 
@@ -223,14 +225,14 @@ export function createPlugin(schema, dispatchAnalyticsEvent, dispatch, featureFl
223
225
  if (markdownSlice) {
224
226
  var _pluginInjectionApi$c, _pluginInjectionApi$c2;
225
227
  // linkify text prior to converting to macro
226
- if (handlePasteLinkOnSelectedTextWithAnalytics(view, event, markdownSlice, PasteTypes.markdown)(state, dispatch)) {
228
+ if (handlePasteLinkOnSelectedTextWithAnalytics(editorAnalyticsAPI)(view, event, markdownSlice, PasteTypes.markdown)(state, dispatch)) {
227
229
  return true;
228
230
  }
229
231
 
230
232
  // run macro autoconvert prior to other conversions
231
233
  if (handleMacroAutoConvert(text, markdownSlice, pluginInjectionApi === null || pluginInjectionApi === void 0 ? void 0 : (_pluginInjectionApi$c = pluginInjectionApi.card) === null || _pluginInjectionApi$c === void 0 ? void 0 : (_pluginInjectionApi$c2 = _pluginInjectionApi$c.actions) === null || _pluginInjectionApi$c2 === void 0 ? void 0 : _pluginInjectionApi$c2.queueCardsFromChangedTr, cardOptions, extensionAutoConverter)(state, dispatch, view)) {
232
234
  // TODO: handleMacroAutoConvert dispatch twice, so we can't use the helper
233
- sendPasteAnalyticsEvent(view, event, markdownSlice, {
235
+ sendPasteAnalyticsEvent(editorAnalyticsAPI)(view, event, markdownSlice, {
234
236
  type: PasteTypes.markdown
235
237
  });
236
238
  return true;
@@ -257,13 +259,13 @@ export function createPlugin(schema, dispatchAnalyticsEvent, dispatch, featureFl
257
259
  }
258
260
 
259
261
  // If we're in a code block, append the text contents of clipboard inside it
260
- if (handleCodeBlockWithAnalytics(view, event, slice, text)(state, dispatch)) {
262
+ if (handleCodeBlockWithAnalytics(editorAnalyticsAPI)(view, event, slice, text)(state, dispatch)) {
261
263
  return true;
262
264
  }
263
- if (handleMediaSingleWithAnalytics(view, event, slice, isPastedFile ? PasteTypes.binary : PasteTypes.richText, pluginInjectionApi === null || pluginInjectionApi === void 0 ? void 0 : (_pluginInjectionApi$m = pluginInjectionApi.media) === null || _pluginInjectionApi$m === void 0 ? void 0 : _pluginInjectionApi$m.actions.insertMediaAsMediaSingle)(state, dispatch, view)) {
265
+ if (handleMediaSingleWithAnalytics(editorAnalyticsAPI)(view, event, slice, isPastedFile ? PasteTypes.binary : PasteTypes.richText, pluginInjectionApi === null || pluginInjectionApi === void 0 ? void 0 : (_pluginInjectionApi$m = pluginInjectionApi.media) === null || _pluginInjectionApi$m === void 0 ? void 0 : _pluginInjectionApi$m.actions.insertMediaAsMediaSingle)(state, dispatch, view)) {
264
266
  return true;
265
267
  }
266
- if (handleSelectedTableWithAnalytics(view, event, slice)(state, dispatch)) {
268
+ if (handleSelectedTableWithAnalytics(editorAnalyticsAPI)(view, event, slice)(state, dispatch)) {
267
269
  return true;
268
270
  }
269
271
 
@@ -298,14 +300,14 @@ export function createPlugin(schema, dispatchAnalyticsEvent, dispatch, featureFl
298
300
  var _pluginInjectionApi$c3, _pluginInjectionApi$c4, _pluginInjectionApi$l;
299
301
  // linkify the text where possible
300
302
  slice = linkifyContent(state.schema)(slice);
301
- if (handlePasteLinkOnSelectedTextWithAnalytics(view, event, slice, PasteTypes.richText)(state, dispatch)) {
303
+ if (handlePasteLinkOnSelectedTextWithAnalytics(editorAnalyticsAPI)(view, event, slice, PasteTypes.richText)(state, dispatch)) {
302
304
  return true;
303
305
  }
304
306
 
305
307
  // run macro autoconvert prior to other conversions
306
308
  if (handleMacroAutoConvert(text, slice, pluginInjectionApi === null || pluginInjectionApi === void 0 ? void 0 : (_pluginInjectionApi$c3 = pluginInjectionApi.card) === null || _pluginInjectionApi$c3 === void 0 ? void 0 : (_pluginInjectionApi$c4 = _pluginInjectionApi$c3.actions) === null || _pluginInjectionApi$c4 === void 0 ? void 0 : _pluginInjectionApi$c4.queueCardsFromChangedTr, cardOptions, extensionAutoConverter)(state, dispatch, view)) {
307
309
  // TODO: handleMacroAutoConvert dispatch twice, so we can't use the helper
308
- sendPasteAnalyticsEvent(view, event, slice, {
310
+ sendPasteAnalyticsEvent(editorAnalyticsAPI)(view, event, slice, {
309
311
  type: PasteTypes.richText
310
312
  });
311
313
  return true;
@@ -314,7 +316,7 @@ export function createPlugin(schema, dispatchAnalyticsEvent, dispatch, featureFl
314
316
  // get editor-tables to handle pasting tables if it can
315
317
  // otherwise, just the replace the selection with the content
316
318
  if (handlePasteTable(view, null, slice)) {
317
- sendPasteAnalyticsEvent(view, event, slice, {
319
+ sendPasteAnalyticsEvent(editorAnalyticsAPI)(view, event, slice, {
318
320
  type: PasteTypes.richText
319
321
  });
320
322
  return true;
@@ -345,7 +347,7 @@ export function createPlugin(schema, dispatchAnalyticsEvent, dispatch, featureFl
345
347
  });
346
348
  slice = sliceCopy;
347
349
  }
348
- if (handleExpandWithAnalytics(view, event, slice)(state, dispatch)) {
350
+ if (handleExpandWithAnalytics(editorAnalyticsAPI)(view, event, slice)(state, dispatch)) {
349
351
  return true;
350
352
  }
351
353
  if (!insideTable(state)) {
@@ -355,13 +357,13 @@ export function createPlugin(schema, dispatchAnalyticsEvent, dispatch, featureFl
355
357
  // Create a custom handler to avoid handling with handleRichText method
356
358
  // As SafeInsert is used inside handleRichText which caused some bad UX like this:
357
359
  // https://product-fabric.atlassian.net/browse/MEX-1520
358
- if (handlePasteIntoCaptionWithAnalytics(view, event, slice, PasteTypes.richText)(state, dispatch)) {
360
+ if (handlePasteIntoCaptionWithAnalytics(editorAnalyticsAPI)(view, event, slice, PasteTypes.richText)(state, dispatch)) {
359
361
  return true;
360
362
  }
361
- if (handlePastePanelOrDecisionIntoListWithAnalytics(view, event, slice, pluginInjectionApi === null || pluginInjectionApi === void 0 ? void 0 : (_pluginInjectionApi$l = pluginInjectionApi.list) === null || _pluginInjectionApi$l === void 0 ? void 0 : _pluginInjectionApi$l.actions.findRootParentListNode)(state, dispatch)) {
363
+ if (handlePastePanelOrDecisionIntoListWithAnalytics(editorAnalyticsAPI)(view, event, slice, pluginInjectionApi === null || pluginInjectionApi === void 0 ? void 0 : (_pluginInjectionApi$l = pluginInjectionApi.list) === null || _pluginInjectionApi$l === void 0 ? void 0 : _pluginInjectionApi$l.actions.findRootParentListNode)(state, dispatch)) {
362
364
  return true;
363
365
  }
364
- if (featureFlags !== null && featureFlags !== void 0 && featureFlags.restartNumberedLists && handlePasteNonNestableBlockNodesIntoListWithAnalytics(view, event, slice)(state, dispatch)) {
366
+ if (featureFlags !== null && featureFlags !== void 0 && featureFlags.restartNumberedLists && handlePasteNonNestableBlockNodesIntoListWithAnalytics(editorAnalyticsAPI)(view, event, slice)(state, dispatch)) {
365
367
  return true;
366
368
  }
367
369
  return handleRichTextWithAnalytics(view, event, slice, pluginInjectionApi)(state, dispatch);
@@ -1,6 +1,6 @@
1
1
  import { Slice, Mark, Fragment } from '@atlaskit/editor-prosemirror/model';
2
2
  import { isMediaBlobUrl } from '@atlaskit/media-client';
3
- import { ACTION_SUBJECT, addAnalytics, EVENT_TYPE, INPUT_METHOD, TABLE_ACTION } from '../../analytics';
3
+ import { ACTION_SUBJECT, EVENT_TYPE, INPUT_METHOD, TABLE_ACTION } from '@atlaskit/editor-common/analytics';
4
4
  import { TextSelection, NodeSelection } from '@atlaskit/editor-prosemirror/state';
5
5
  import { findParentNodeOfType } from '@atlaskit/editor-prosemirror/utils';
6
6
  import { getSelectedTableInfo, isTableSelected } from '@atlaskit/editor-tables/utils';
@@ -161,13 +161,13 @@ export const removeDuplicateInvalidLinks = html => {
161
161
  }
162
162
  return html;
163
163
  };
164
- export const addReplaceSelectedTableAnalytics = (state, tr) => {
164
+ export const addReplaceSelectedTableAnalytics = (state, tr, editorAnalyticsAPI) => {
165
165
  if (isTableSelected(state.selection)) {
166
166
  const {
167
167
  totalRowCount,
168
168
  totalColumnCount
169
169
  } = getSelectedTableInfo(state.selection);
170
- addAnalytics(state, tr, {
170
+ editorAnalyticsAPI === null || editorAnalyticsAPI === void 0 ? void 0 : editorAnalyticsAPI.attachAnalyticsEvent({
171
171
  action: TABLE_ACTION.REPLACED,
172
172
  actionSubject: ACTION_SUBJECT.TABLE,
173
173
  attributes: {
@@ -176,7 +176,7 @@ export const addReplaceSelectedTableAnalytics = (state, tr) => {
176
176
  inputMethod: INPUT_METHOD.CLIPBOARD
177
177
  },
178
178
  eventType: EVENT_TYPE.TRACK
179
- });
179
+ })(tr);
180
180
  return tr;
181
181
  }
182
182
  return state.tr;
@@ -1,5 +1,5 @@
1
1
  export const name = "@atlaskit/editor-core";
2
- export const version = "189.0.4";
2
+ export const version = "189.0.6";
3
3
  export const nextMajorVersion = () => {
4
4
  return [Number(version.split('.')[0]) + 1, 0, 0].join('.');
5
5
  };
@@ -15,6 +15,7 @@ import { overlay } from '../styles';
15
15
  import ExtensionLozenge from '../Lozenge';
16
16
  import classnames from 'classnames';
17
17
  import { useSharedPluginState } from '@atlaskit/editor-common/hooks';
18
+ import { getBooleanFF } from '@atlaskit/platform-feature-flags';
18
19
  function ExtensionWithPluginState(props) {
19
20
  var node = props.node,
20
21
  handleContentDOMRef = props.handleContentDOMRef,
@@ -27,7 +28,13 @@ function ExtensionWithPluginState(props) {
27
28
  shadowClassNames = props.shadowClassNames,
28
29
  hideFrame = props.hideFrame,
29
30
  editorAppearance = props.editorAppearance;
30
- var hasBody = node.type.name === 'bodiedExtension';
31
+ var isMultiBodiedExtension = false;
32
+ if (getBooleanFF('platform.editor.multi-bodied-extension_0rygg')) {
33
+ isMultiBodiedExtension = true;
34
+ }
35
+
36
+ //TODO: clean-up after removing multi-bodied-extension FF
37
+ var hasBody = node.type.name === 'bodiedExtension' || isMultiBodiedExtension && node.type.name === 'multiBodiedExtension';
31
38
  var isMobile = editorAppearance === 'mobile';
32
39
  var hasChildren = !!children;
33
40
  var removeBorder = hideFrame && !isMobile && !hasBody || false;
@@ -331,7 +331,7 @@ export function handlePasteLinkOnSelectedText(slice) {
331
331
  return false;
332
332
  };
333
333
  }
334
- export function handlePasteAsPlainText(slice, _event) {
334
+ export function handlePasteAsPlainText(slice, _event, editorAnalyticsAPI) {
335
335
  return function (state, dispatch, view) {
336
336
  var _input;
337
337
  if (!view) {
@@ -359,7 +359,7 @@ export function handlePasteAsPlainText(slice, _event) {
359
359
  tr = replaceSelectedTable(state, slice);
360
360
 
361
361
  // add analytics after replacing selected table
362
- tr = addReplaceSelectedTableAnalytics(state, tr);
362
+ tr = addReplaceSelectedTableAnalytics(state, tr, editorAnalyticsAPI);
363
363
 
364
364
  // otherwise just replace the selection
365
365
  if (!tr.docChanged) {
@@ -897,18 +897,20 @@ export function handlePasteIntoCaption(slice) {
897
897
  return false;
898
898
  };
899
899
  }
900
- export var handleSelectedTable = function handleSelectedTable(slice) {
901
- return function (state, dispatch) {
902
- var tr = replaceSelectedTable(state, slice);
900
+ export var handleSelectedTable = function handleSelectedTable(editorAnalyticsAPI) {
901
+ return function (slice) {
902
+ return function (state, dispatch) {
903
+ var tr = replaceSelectedTable(state, slice);
903
904
 
904
- // add analytics after replacing selected table
905
- tr = addReplaceSelectedTableAnalytics(state, tr);
906
- if (tr.docChanged) {
907
- if (dispatch) {
908
- dispatch(tr);
905
+ // add analytics after replacing selected table
906
+ tr = addReplaceSelectedTableAnalytics(state, tr, editorAnalyticsAPI);
907
+ if (tr.docChanged) {
908
+ if (dispatch) {
909
+ dispatch(tr);
910
+ }
911
+ return true;
909
912
  }
910
- return true;
911
- }
912
- return false;
913
+ return false;
914
+ };
913
915
  };
914
916
  };
@@ -3,7 +3,6 @@ import _defineProperty from "@babel/runtime/helpers/defineProperty";
3
3
  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; }
4
4
  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; }
5
5
  import { ACTION, INPUT_METHOD, EVENT_TYPE, ACTION_SUBJECT, ACTION_SUBJECT_ID, PasteTypes, PasteContents } from '@atlaskit/editor-common/analytics';
6
- import { addAnalytics } from '../../analytics';
7
6
  import { getPasteSource } from '../util';
8
7
  import { handlePasteAsPlainText, handlePasteIntoTaskOrDecisionOrPanel, handleCodeBlock, handleMediaSingle, handlePastePreservingMarks, handleMarkdown, handleRichText, handleExpandPasteInTable, handleSelectedTable, handlePasteLinkOnSelectedText, handlePasteIntoCaption, handlePastePanelOrDecisionContentIntoList, handlePasteNonNestableBlockNodesIntoList } from '../handlers';
9
8
  import { findParentNode } from '@atlaskit/editor-prosemirror/utils';
@@ -208,103 +207,127 @@ export function createPasteAnalyticsPayload(view, event, slice, pasteContext) {
208
207
  // TODO: ED-6612 We should not dispatch only analytics, it's preferred to wrap each command with his own analytics.
209
208
  // However, handlers like handleMacroAutoConvert dispatch multiple time,
210
209
  // so pasteCommandWithAnalytics is useless in this case.
211
- export function sendPasteAnalyticsEvent(view, event, slice, pasteContext) {
212
- var payload = createPasteAnalyticsPayload(view, event, slice, pasteContext);
213
- view.dispatch(addAnalytics(view.state, view.state.tr, payload));
214
- }
215
- export var handlePasteAsPlainTextWithAnalytics = function handlePasteAsPlainTextWithAnalytics(view, event, slice) {
216
- return injectAnalyticsPayloadBeforeCommand(createPasteAnalyticsPayloadBySelection(event, slice, {
217
- type: PasteTypes.plain,
218
- asPlain: true
219
- }))(handlePasteAsPlainText(slice, event));
210
+ export var sendPasteAnalyticsEvent = function sendPasteAnalyticsEvent(editorAnalyticsAPI) {
211
+ return function (view, event, slice, pasteContext) {
212
+ var tr = view.state.tr;
213
+ var payload = createPasteAnalyticsPayload(view, event, slice, pasteContext);
214
+ editorAnalyticsAPI === null || editorAnalyticsAPI === void 0 || editorAnalyticsAPI.attachAnalyticsEvent(payload)(tr);
215
+ view.dispatch(tr);
216
+ };
217
+ };
218
+ export var handlePasteAsPlainTextWithAnalytics = function handlePasteAsPlainTextWithAnalytics(editorAnalyticsAPI) {
219
+ return function (view, event, slice) {
220
+ return injectAnalyticsPayloadBeforeCommand(editorAnalyticsAPI)(createPasteAnalyticsPayloadBySelection(event, slice, {
221
+ type: PasteTypes.plain,
222
+ asPlain: true
223
+ }))(handlePasteAsPlainText(slice, event, editorAnalyticsAPI));
224
+ };
220
225
  };
221
226
  export var handlePasteIntoTaskAndDecisionWithAnalytics = function handlePasteIntoTaskAndDecisionWithAnalytics(view, event, slice, type, pluginInjectionApi) {
222
- var _pluginInjectionApi$c;
223
- return injectAnalyticsPayloadBeforeCommand(createPasteAnalyticsPayloadBySelection(event, slice, {
227
+ var _pluginInjectionApi$a, _pluginInjectionApi$c;
228
+ return injectAnalyticsPayloadBeforeCommand(pluginInjectionApi === null || pluginInjectionApi === void 0 || (_pluginInjectionApi$a = pluginInjectionApi.analytics) === null || _pluginInjectionApi$a === void 0 ? void 0 : _pluginInjectionApi$a.actions)(createPasteAnalyticsPayloadBySelection(event, slice, {
224
229
  type: type
225
230
  }))(handlePasteIntoTaskOrDecisionOrPanel(slice, pluginInjectionApi === null || pluginInjectionApi === void 0 || (_pluginInjectionApi$c = pluginInjectionApi.card) === null || _pluginInjectionApi$c === void 0 || (_pluginInjectionApi$c = _pluginInjectionApi$c.actions) === null || _pluginInjectionApi$c === void 0 ? void 0 : _pluginInjectionApi$c.queueCardsFromChangedTr));
226
231
  };
227
- export var handlePasteIntoCaptionWithAnalytics = function handlePasteIntoCaptionWithAnalytics(view, event, slice, type) {
228
- return injectAnalyticsPayloadBeforeCommand(createPasteAnalyticsPayloadBySelection(event, slice, {
229
- type: type
230
- }))(handlePasteIntoCaption(slice));
232
+ export var handlePasteIntoCaptionWithAnalytics = function handlePasteIntoCaptionWithAnalytics(editorAnalyticsAPI) {
233
+ return function (view, event, slice, type) {
234
+ return injectAnalyticsPayloadBeforeCommand(editorAnalyticsAPI)(createPasteAnalyticsPayloadBySelection(event, slice, {
235
+ type: type
236
+ }))(handlePasteIntoCaption(slice));
237
+ };
231
238
  };
232
- export var handleCodeBlockWithAnalytics = function handleCodeBlockWithAnalytics(view, event, slice, text) {
233
- return injectAnalyticsPayloadBeforeCommand(createPasteAnalyticsPayloadBySelection(event, slice, {
234
- type: PasteTypes.plain
235
- }))(handleCodeBlock(text));
239
+ export var handleCodeBlockWithAnalytics = function handleCodeBlockWithAnalytics(editorAnalyticsAPI) {
240
+ return function (view, event, slice, text) {
241
+ return injectAnalyticsPayloadBeforeCommand(editorAnalyticsAPI)(createPasteAnalyticsPayloadBySelection(event, slice, {
242
+ type: PasteTypes.plain
243
+ }))(handleCodeBlock(text));
244
+ };
236
245
  };
237
- export var handleMediaSingleWithAnalytics = function handleMediaSingleWithAnalytics(view, event, slice, type, insertMediaAsMediaSingle) {
238
- return injectAnalyticsPayloadBeforeCommand(createPasteAnalyticsPayloadBySelection(event, slice, {
239
- type: type
240
- }))(handleMediaSingle(INPUT_METHOD.CLIPBOARD, insertMediaAsMediaSingle)(slice));
246
+ export var handleMediaSingleWithAnalytics = function handleMediaSingleWithAnalytics(editorAnalyticsAPI) {
247
+ return function (view, event, slice, type, insertMediaAsMediaSingle) {
248
+ return injectAnalyticsPayloadBeforeCommand(editorAnalyticsAPI)(createPasteAnalyticsPayloadBySelection(event, slice, {
249
+ type: type
250
+ }))(handleMediaSingle(INPUT_METHOD.CLIPBOARD, insertMediaAsMediaSingle)(slice));
251
+ };
241
252
  };
242
253
  export var handlePastePreservingMarksWithAnalytics = function handlePastePreservingMarksWithAnalytics(view, event, slice, type, pluginInjectionApi) {
243
- var _pluginInjectionApi$c2;
244
- return injectAnalyticsPayloadBeforeCommand(createPasteAnalyticsPayloadBySelection(event, slice, {
254
+ var _pluginInjectionApi$a2, _pluginInjectionApi$c2;
255
+ return injectAnalyticsPayloadBeforeCommand(pluginInjectionApi === null || pluginInjectionApi === void 0 || (_pluginInjectionApi$a2 = pluginInjectionApi.analytics) === null || _pluginInjectionApi$a2 === void 0 ? void 0 : _pluginInjectionApi$a2.actions)(createPasteAnalyticsPayloadBySelection(event, slice, {
245
256
  type: type
246
257
  }))(handlePastePreservingMarks(slice, pluginInjectionApi === null || pluginInjectionApi === void 0 || (_pluginInjectionApi$c2 = pluginInjectionApi.card) === null || _pluginInjectionApi$c2 === void 0 || (_pluginInjectionApi$c2 = _pluginInjectionApi$c2.actions) === null || _pluginInjectionApi$c2 === void 0 ? void 0 : _pluginInjectionApi$c2.queueCardsFromChangedTr));
247
258
  };
248
259
  export var handleMarkdownWithAnalytics = function handleMarkdownWithAnalytics(view, event, slice, pluginInjectionApi) {
249
- var _pluginInjectionApi$c3;
250
- return injectAnalyticsPayloadBeforeCommand(createPasteAnalyticsPayloadBySelection(event, slice, {
260
+ var _pluginInjectionApi$a3, _pluginInjectionApi$c3;
261
+ return injectAnalyticsPayloadBeforeCommand(pluginInjectionApi === null || pluginInjectionApi === void 0 || (_pluginInjectionApi$a3 = pluginInjectionApi.analytics) === null || _pluginInjectionApi$a3 === void 0 ? void 0 : _pluginInjectionApi$a3.actions)(createPasteAnalyticsPayloadBySelection(event, slice, {
251
262
  type: PasteTypes.markdown
252
263
  }))(handleMarkdown(slice, pluginInjectionApi === null || pluginInjectionApi === void 0 || (_pluginInjectionApi$c3 = pluginInjectionApi.card) === null || _pluginInjectionApi$c3 === void 0 || (_pluginInjectionApi$c3 = _pluginInjectionApi$c3.actions) === null || _pluginInjectionApi$c3 === void 0 ? void 0 : _pluginInjectionApi$c3.queueCardsFromChangedTr));
253
264
  };
254
265
  export var handleRichTextWithAnalytics = function handleRichTextWithAnalytics(view, event, slice, pluginInjectionApi) {
255
- var _pluginInjectionApi$c4;
256
- return injectAnalyticsPayloadBeforeCommand(createPasteAnalyticsPayloadBySelection(event, slice, {
266
+ var _pluginInjectionApi$a4, _pluginInjectionApi$c4;
267
+ return injectAnalyticsPayloadBeforeCommand(pluginInjectionApi === null || pluginInjectionApi === void 0 || (_pluginInjectionApi$a4 = pluginInjectionApi.analytics) === null || _pluginInjectionApi$a4 === void 0 ? void 0 : _pluginInjectionApi$a4.actions)(createPasteAnalyticsPayloadBySelection(event, slice, {
257
268
  type: PasteTypes.richText
258
269
  }))(handleRichText(slice, pluginInjectionApi === null || pluginInjectionApi === void 0 || (_pluginInjectionApi$c4 = pluginInjectionApi.card) === null || _pluginInjectionApi$c4 === void 0 || (_pluginInjectionApi$c4 = _pluginInjectionApi$c4.actions) === null || _pluginInjectionApi$c4 === void 0 ? void 0 : _pluginInjectionApi$c4.queueCardsFromChangedTr));
259
270
  };
260
- function injectAnalyticsPayloadBeforeCommand(createPayloadByTransaction) {
261
- return function (mainCommand) {
262
- return function (state, dispatch, view) {
263
- var originalTransaction = state.tr;
264
- var fakeDispatch = function fakeDispatch(tr) {
265
- originalTransaction = tr;
271
+ var injectAnalyticsPayloadBeforeCommand = function injectAnalyticsPayloadBeforeCommand(editorAnalyticsAPI) {
272
+ return function (createPayloadByTransaction) {
273
+ return function (mainCommand) {
274
+ return function (state, dispatch, view) {
275
+ var originalTransaction = state.tr;
276
+ var fakeDispatch = function fakeDispatch(tr) {
277
+ originalTransaction = tr;
278
+ };
279
+ var result = mainCommand(state, fakeDispatch, view);
280
+ if (!result) {
281
+ return false;
282
+ }
283
+ if (dispatch && originalTransaction.docChanged) {
284
+ // it needs to know the selection before the changes
285
+ var payload = createPayloadByTransaction(state.selection);
286
+ editorAnalyticsAPI === null || editorAnalyticsAPI === void 0 || editorAnalyticsAPI.attachAnalyticsEvent(payload)(originalTransaction);
287
+ dispatch(originalTransaction);
288
+ }
289
+ return true;
266
290
  };
267
- var result = mainCommand(state, fakeDispatch, view);
268
- if (!result) {
269
- return false;
270
- }
271
- if (dispatch && originalTransaction.docChanged) {
272
- // it needs to know the selection before the changes
273
- var payload = createPayloadByTransaction(state.selection);
274
- addAnalytics(state, originalTransaction, payload);
275
- dispatch(originalTransaction);
276
- }
277
- return true;
278
291
  };
279
292
  };
280
- }
281
- export var handlePastePanelOrDecisionIntoListWithAnalytics = function handlePastePanelOrDecisionIntoListWithAnalytics(view, event, slice, findRootParentListNode) {
282
- return injectAnalyticsPayloadBeforeCommand(createPasteAnalyticsPayloadBySelection(event, slice, {
283
- type: PasteTypes.richText
284
- }))(handlePastePanelOrDecisionContentIntoList(slice, findRootParentListNode));
285
293
  };
286
- export var handlePasteNonNestableBlockNodesIntoListWithAnalytics = function handlePasteNonNestableBlockNodesIntoListWithAnalytics(view, event, slice) {
287
- return injectAnalyticsPayloadBeforeCommand(createPasteAnalyticsPayloadBySelection(event, slice, {
288
- type: PasteTypes.richText,
289
- pasteSplitList: true
290
- }))(handlePasteNonNestableBlockNodesIntoList(slice));
294
+ export var handlePastePanelOrDecisionIntoListWithAnalytics = function handlePastePanelOrDecisionIntoListWithAnalytics(editorAnalyticsAPI) {
295
+ return function (view, event, slice, findRootParentListNode) {
296
+ return injectAnalyticsPayloadBeforeCommand(editorAnalyticsAPI)(createPasteAnalyticsPayloadBySelection(event, slice, {
297
+ type: PasteTypes.richText
298
+ }))(handlePastePanelOrDecisionContentIntoList(slice, findRootParentListNode));
299
+ };
291
300
  };
292
- export var handleExpandWithAnalytics = function handleExpandWithAnalytics(view, event, slice) {
293
- return injectAnalyticsPayloadBeforeCommand(createPasteAnalyticsPayloadBySelection(event, slice, {
294
- type: PasteTypes.richText,
295
- pasteSplitList: true
296
- }))(handleExpandPasteInTable(slice));
301
+ export var handlePasteNonNestableBlockNodesIntoListWithAnalytics = function handlePasteNonNestableBlockNodesIntoListWithAnalytics(editorAnalyticsAPI) {
302
+ return function (view, event, slice) {
303
+ return injectAnalyticsPayloadBeforeCommand(editorAnalyticsAPI)(createPasteAnalyticsPayloadBySelection(event, slice, {
304
+ type: PasteTypes.richText,
305
+ pasteSplitList: true
306
+ }))(handlePasteNonNestableBlockNodesIntoList(slice));
307
+ };
297
308
  };
298
- export var handleSelectedTableWithAnalytics = function handleSelectedTableWithAnalytics(view, event, slice) {
299
- return injectAnalyticsPayloadBeforeCommand(createPasteAnalyticsPayloadBySelection(event, slice, {
300
- type: PasteTypes.richText
301
- }))(handleSelectedTable(slice));
309
+ export var handleExpandWithAnalytics = function handleExpandWithAnalytics(editorAnalyticsAPI) {
310
+ return function (view, event, slice) {
311
+ return injectAnalyticsPayloadBeforeCommand(editorAnalyticsAPI)(createPasteAnalyticsPayloadBySelection(event, slice, {
312
+ type: PasteTypes.richText,
313
+ pasteSplitList: true
314
+ }))(handleExpandPasteInTable(slice));
315
+ };
302
316
  };
303
- export var handlePasteLinkOnSelectedTextWithAnalytics = function handlePasteLinkOnSelectedTextWithAnalytics(view, event, slice, type) {
304
- return injectAnalyticsPayloadBeforeCommand(createPasteAnalyticsPayloadBySelection(event, slice, {
305
- type: type,
306
- hyperlinkPasteOnText: true
307
- }))(handlePasteLinkOnSelectedText(slice));
317
+ export var handleSelectedTableWithAnalytics = function handleSelectedTableWithAnalytics(editorAnalyticsAPI) {
318
+ return function (view, event, slice) {
319
+ return injectAnalyticsPayloadBeforeCommand(editorAnalyticsAPI)(createPasteAnalyticsPayloadBySelection(event, slice, {
320
+ type: PasteTypes.richText
321
+ }))(handleSelectedTable(editorAnalyticsAPI)(slice));
322
+ };
323
+ };
324
+ export var handlePasteLinkOnSelectedTextWithAnalytics = function handlePasteLinkOnSelectedTextWithAnalytics(editorAnalyticsAPI) {
325
+ return function (view, event, slice, type) {
326
+ return injectAnalyticsPayloadBeforeCommand(editorAnalyticsAPI)(createPasteAnalyticsPayloadBySelection(event, slice, {
327
+ type: type,
328
+ hyperlinkPasteOnText: true
329
+ }))(handlePasteLinkOnSelectedText(slice));
330
+ };
308
331
  };
309
332
  export var createPasteMeasurePayload = function createPasteMeasurePayload(_ref3) {
310
333
  var view = _ref3.view,