@atlaskit/editor-plugin-collab-edit 1.22.6 → 1.23.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,26 @@
1
1
  # @atlaskit/editor-plugin-collab-edit
2
2
 
3
+ ## 1.23.0
4
+
5
+ ### Minor Changes
6
+
7
+ - [#162298](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/pull-requests/162298)
8
+ [`f5893b7270927`](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/commits/f5893b7270927) -
9
+ ED-25498 Integrate transformNestedTablesIncomingDocument with Editor and Renderer to transform
10
+ nested table extensions
11
+
12
+ ### Patch Changes
13
+
14
+ - Updated dependencies
15
+
16
+ ## 1.22.7
17
+
18
+ ### Patch Changes
19
+
20
+ - [#159766](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/pull-requests/159766)
21
+ [`5140d0f3b3895`](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/commits/5140d0f3b3895) -
22
+ ED-25400 Use consistent node parsing logic for preload of editor-plugin-collab-edit
23
+
3
24
  ## 1.22.6
4
25
 
5
26
  ### Patch Changes
@@ -20,14 +20,14 @@ var registerAllCustomSteps = exports.registerAllCustomSteps = function registerA
20
20
  Object.entries(allAtlaskitCustomSteps).forEach(function () {});
21
21
  Object.entries(allAdfSchemaSteps).forEach(function () {});
22
22
  };
23
- var handleInit = exports.handleInit = function handleInit(initData, view, options) {
23
+ var handleInit = exports.handleInit = function handleInit(initData, view, options, editorAnalyticsApi) {
24
24
  var doc = initData.doc,
25
25
  json = initData.json,
26
26
  version = initData.version,
27
27
  reserveCursor = initData.reserveCursor;
28
28
  if (doc) {
29
29
  var state = view.state;
30
- var tr = (0, _utils.replaceDocument)(doc, state, version, options, reserveCursor);
30
+ var tr = (0, _utils.replaceDocument)(doc, state, version, options, reserveCursor, editorAnalyticsApi);
31
31
  tr.setMeta('isRemote', true);
32
32
  view.dispatch(tr);
33
33
  } else if (json) {
@@ -40,7 +40,7 @@ var subscribe = exports.subscribe = effect(function (view, provider, options, fe
40
40
  var handlers = {
41
41
  initHandler: function initHandler(data) {
42
42
  view.dispatch(view.state.tr.setMeta('collabInitialised', true));
43
- (0, _actions.handleInit)(data, view, options);
43
+ (0, _actions.handleInit)(data, view, options, editorAnalyticsApi);
44
44
  },
45
45
  connectedHandler: function connectedHandler(data) {
46
46
  return (0, _actions.handleConnection)(data, view);
package/dist/cjs/utils.js CHANGED
@@ -10,11 +10,13 @@ exports.scrollToCollabCursor = exports.replaceDocument = exports.originalTransac
10
10
  var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
11
11
  var _steps = require("@atlaskit/adf-schema/steps");
12
12
  var _analytics = require("@atlaskit/editor-common/analytics");
13
+ var _processRawValue = require("@atlaskit/editor-common/process-raw-value");
13
14
  var _whitespace = require("@atlaskit/editor-common/whitespace");
14
15
  var _state = require("@atlaskit/editor-prosemirror/state");
15
16
  var _transform = require("@atlaskit/editor-prosemirror/transform");
16
17
  var _view = require("@atlaskit/editor-prosemirror/view");
17
18
  var _consts = require("@atlaskit/editor-shared-styles/consts");
19
+ var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
18
20
  var findPointers = exports.findPointers = function findPointers(id, decorations) {
19
21
  return decorations.find().reduce(function (arr, deco) {
20
22
  return deco.spec.pointer.sessionId === id ? arr.concat(deco) : arr;
@@ -81,13 +83,21 @@ var createTelepointers = exports.createTelepointers = function createTelepointer
81
83
  key: "telepointer-".concat(sessionId, "-zero")
82
84
  }));
83
85
  };
84
- var replaceDocument = exports.replaceDocument = function replaceDocument(doc, state, version, options, reserveCursor) {
86
+ var replaceDocument = exports.replaceDocument = function replaceDocument(doc, state, version, options, reserveCursor, editorAnalyticsAPI) {
85
87
  var schema = state.schema,
86
88
  tr = state.tr;
87
- var content = (doc.content || []).map(function (child) {
88
- return schema.nodeFromJSON(child);
89
- });
90
- var hasContent = !!content.length;
89
+ var hasContent;
90
+ var content;
91
+ if ((0, _platformFeatureFlags.fg)('platform_editor_use_nested_table_pm_nodes')) {
92
+ var parsedDoc = (0, _processRawValue.processRawValueWithoutValidation)(schema, doc, editorAnalyticsAPI === null || editorAnalyticsAPI === void 0 ? void 0 : editorAnalyticsAPI.fireAnalyticsEvent);
93
+ hasContent = !!(parsedDoc !== null && parsedDoc !== void 0 && parsedDoc.childCount);
94
+ content = parsedDoc === null || parsedDoc === void 0 ? void 0 : parsedDoc.content;
95
+ } else {
96
+ content = (doc.content || []).map(function (child) {
97
+ return schema.nodeFromJSON(child);
98
+ });
99
+ hasContent = Array.isArray(content) && !!content.length;
100
+ }
91
101
  if (hasContent) {
92
102
  tr.setMeta('addToHistory', false);
93
103
  tr.replaceWith(0, state.doc.nodeSize - 2, content);
@@ -12,7 +12,7 @@ export const registerAllCustomSteps = () => {
12
12
  Object.entries(allAtlaskitCustomSteps).forEach(() => {});
13
13
  Object.entries(allAdfSchemaSteps).forEach(() => {});
14
14
  };
15
- export const handleInit = (initData, view, options) => {
15
+ export const handleInit = (initData, view, options, editorAnalyticsApi) => {
16
16
  const {
17
17
  doc,
18
18
  json,
@@ -23,7 +23,7 @@ export const handleInit = (initData, view, options) => {
23
23
  const {
24
24
  state
25
25
  } = view;
26
- const tr = replaceDocument(doc, state, version, options, reserveCursor);
26
+ const tr = replaceDocument(doc, state, version, options, reserveCursor, editorAnalyticsApi);
27
27
  tr.setMeta('isRemote', true);
28
28
  view.dispatch(tr);
29
29
  } else if (json) {
@@ -31,7 +31,7 @@ export const subscribe = effect((view, provider, options, featureFlags, _provide
31
31
  const handlers = {
32
32
  initHandler: data => {
33
33
  view.dispatch(view.state.tr.setMeta('collabInitialised', true));
34
- handleInit(data, view, options);
34
+ handleInit(data, view, options, editorAnalyticsApi);
35
35
  },
36
36
  connectedHandler: data => handleConnection(data, view),
37
37
  dataHandler: data => applyRemoteData(data, view, options),
@@ -1,11 +1,13 @@
1
1
  import { AnalyticsStep, SetAttrsStep } from '@atlaskit/adf-schema/steps';
2
2
  import { ACTION, ACTION_SUBJECT, EVENT_TYPE } from '@atlaskit/editor-common/analytics';
3
+ import { processRawValueWithoutValidation } from '@atlaskit/editor-common/process-raw-value';
3
4
  import { ZERO_WIDTH_JOINER } from '@atlaskit/editor-common/whitespace';
4
5
  import { Transaction } from '@atlaskit/editor-prosemirror/state';
5
6
  import { Selection, TextSelection } from '@atlaskit/editor-prosemirror/state';
6
7
  import { ReplaceStep } from '@atlaskit/editor-prosemirror/transform';
7
8
  import { Decoration } from '@atlaskit/editor-prosemirror/view';
8
9
  import { avatarColors } from '@atlaskit/editor-shared-styles/consts';
10
+ import { fg } from '@atlaskit/platform-feature-flags';
9
11
  export const findPointers = (id, decorations) => decorations.find().reduce((arr, deco) => deco.spec.pointer.sessionId === id ? arr.concat(deco) : arr, []);
10
12
  function style(options) {
11
13
  const color = options && options.color || 'black';
@@ -68,13 +70,21 @@ export const createTelepointers = (from, to, sessionId, isSelection, initial) =>
68
70
  key: `telepointer-${sessionId}-zero`
69
71
  }));
70
72
  };
71
- export const replaceDocument = (doc, state, version, options, reserveCursor) => {
73
+ export const replaceDocument = (doc, state, version, options, reserveCursor, editorAnalyticsAPI) => {
72
74
  const {
73
75
  schema,
74
76
  tr
75
77
  } = state;
76
- let content = (doc.content || []).map(child => schema.nodeFromJSON(child));
77
- let hasContent = !!content.length;
78
+ let hasContent;
79
+ let content;
80
+ if (fg('platform_editor_use_nested_table_pm_nodes')) {
81
+ const parsedDoc = processRawValueWithoutValidation(schema, doc, editorAnalyticsAPI === null || editorAnalyticsAPI === void 0 ? void 0 : editorAnalyticsAPI.fireAnalyticsEvent);
82
+ hasContent = !!(parsedDoc !== null && parsedDoc !== void 0 && parsedDoc.childCount);
83
+ content = parsedDoc === null || parsedDoc === void 0 ? void 0 : parsedDoc.content;
84
+ } else {
85
+ content = (doc.content || []).map(child => schema.nodeFromJSON(child));
86
+ hasContent = Array.isArray(content) && !!content.length;
87
+ }
78
88
  if (hasContent) {
79
89
  tr.setMeta('addToHistory', false);
80
90
  tr.replaceWith(0, state.doc.nodeSize - 2, content);
@@ -12,14 +12,14 @@ export var registerAllCustomSteps = function registerAllCustomSteps() {
12
12
  Object.entries(allAtlaskitCustomSteps).forEach(function () {});
13
13
  Object.entries(allAdfSchemaSteps).forEach(function () {});
14
14
  };
15
- export var handleInit = function handleInit(initData, view, options) {
15
+ export var handleInit = function handleInit(initData, view, options, editorAnalyticsApi) {
16
16
  var doc = initData.doc,
17
17
  json = initData.json,
18
18
  version = initData.version,
19
19
  reserveCursor = initData.reserveCursor;
20
20
  if (doc) {
21
21
  var state = view.state;
22
- var tr = replaceDocument(doc, state, version, options, reserveCursor);
22
+ var tr = replaceDocument(doc, state, version, options, reserveCursor, editorAnalyticsApi);
23
23
  tr.setMeta('isRemote', true);
24
24
  view.dispatch(tr);
25
25
  } else if (json) {
@@ -34,7 +34,7 @@ export var subscribe = effect(function (view, provider, options, featureFlags, _
34
34
  var handlers = {
35
35
  initHandler: function initHandler(data) {
36
36
  view.dispatch(view.state.tr.setMeta('collabInitialised', true));
37
- handleInit(data, view, options);
37
+ handleInit(data, view, options, editorAnalyticsApi);
38
38
  },
39
39
  connectedHandler: function connectedHandler(data) {
40
40
  return handleConnection(data, view);
package/dist/esm/utils.js CHANGED
@@ -1,12 +1,14 @@
1
1
  import _typeof from "@babel/runtime/helpers/typeof";
2
2
  import { AnalyticsStep, SetAttrsStep } from '@atlaskit/adf-schema/steps';
3
3
  import { ACTION, ACTION_SUBJECT, EVENT_TYPE } from '@atlaskit/editor-common/analytics';
4
+ import { processRawValueWithoutValidation } from '@atlaskit/editor-common/process-raw-value';
4
5
  import { ZERO_WIDTH_JOINER } from '@atlaskit/editor-common/whitespace';
5
6
  import { Transaction } from '@atlaskit/editor-prosemirror/state';
6
7
  import { Selection, TextSelection } from '@atlaskit/editor-prosemirror/state';
7
8
  import { ReplaceStep } from '@atlaskit/editor-prosemirror/transform';
8
9
  import { Decoration } from '@atlaskit/editor-prosemirror/view';
9
10
  import { avatarColors } from '@atlaskit/editor-shared-styles/consts';
11
+ import { fg } from '@atlaskit/platform-feature-flags';
10
12
  export var findPointers = function findPointers(id, decorations) {
11
13
  return decorations.find().reduce(function (arr, deco) {
12
14
  return deco.spec.pointer.sessionId === id ? arr.concat(deco) : arr;
@@ -73,13 +75,21 @@ export var createTelepointers = function createTelepointers(from, to, sessionId,
73
75
  key: "telepointer-".concat(sessionId, "-zero")
74
76
  }));
75
77
  };
76
- export var replaceDocument = function replaceDocument(doc, state, version, options, reserveCursor) {
78
+ export var replaceDocument = function replaceDocument(doc, state, version, options, reserveCursor, editorAnalyticsAPI) {
77
79
  var schema = state.schema,
78
80
  tr = state.tr;
79
- var content = (doc.content || []).map(function (child) {
80
- return schema.nodeFromJSON(child);
81
- });
82
- var hasContent = !!content.length;
81
+ var hasContent;
82
+ var content;
83
+ if (fg('platform_editor_use_nested_table_pm_nodes')) {
84
+ var parsedDoc = processRawValueWithoutValidation(schema, doc, editorAnalyticsAPI === null || editorAnalyticsAPI === void 0 ? void 0 : editorAnalyticsAPI.fireAnalyticsEvent);
85
+ hasContent = !!(parsedDoc !== null && parsedDoc !== void 0 && parsedDoc.childCount);
86
+ content = parsedDoc === null || parsedDoc === void 0 ? void 0 : parsedDoc.content;
87
+ } else {
88
+ content = (doc.content || []).map(function (child) {
89
+ return schema.nodeFromJSON(child);
90
+ });
91
+ hasContent = Array.isArray(content) && !!content.length;
92
+ }
83
93
  if (hasContent) {
84
94
  tr.setMeta('addToHistory', false);
85
95
  tr.replaceWith(0, state.doc.nodeSize - 2, content);
@@ -1,9 +1,10 @@
1
1
  import type { CollabEditProvider, CollabEventConnectionData, CollabEventInitData, CollabEventPresenceData, CollabEventRemoteData, CollabSendableSelection, CollabTelepointerPayload } from '@atlaskit/editor-common/collab';
2
+ import { type EditorAnalyticsAPI } from '@atlaskit/editor-common/src/analytics';
2
3
  import type { Selection } from '@atlaskit/editor-prosemirror/state';
3
4
  import type { EditorView } from '@atlaskit/editor-prosemirror/view';
4
5
  import type { PrivateCollabEditOptions } from './types';
5
6
  export declare const registerAllCustomSteps: () => void;
6
- export declare const handleInit: (initData: CollabEventInitData, view: EditorView, options?: PrivateCollabEditOptions) => void;
7
+ export declare const handleInit: (initData: CollabEventInitData, view: EditorView, options?: PrivateCollabEditOptions, editorAnalyticsApi?: EditorAnalyticsAPI) => void;
7
8
  export declare const handleConnection: (connectionData: CollabEventConnectionData, view: EditorView) => void;
8
9
  export declare const handlePresence: (presenceData: CollabEventPresenceData, view: EditorView) => void;
9
10
  /**
@@ -10,7 +10,7 @@ export declare function getAvatarColor(str: string): {
10
10
  color: "var(--ds-icon-accent-lime)" | "var(--ds-icon-accent-red)" | "var(--ds-icon-accent-orange)" | "var(--ds-icon-accent-yellow)" | "var(--ds-icon-accent-green)" | "var(--ds-icon-accent-teal)" | "var(--ds-icon-accent-blue)" | "var(--ds-icon-accent-purple)" | "var(--ds-icon-accent-magenta)" | "var(--ds-icon-accent-gray)" | "var(--ds-background-accent-lime-bolder-hovered)" | "var(--ds-background-accent-red-bolder-hovered)" | "var(--ds-background-accent-orange-bolder-hovered)" | "var(--ds-background-accent-yellow-bolder-hovered)" | "var(--ds-background-accent-yellow-bolder-pressed)" | "var(--ds-background-accent-green-bolder-hovered)" | "var(--ds-background-accent-teal-bolder-hovered)" | "var(--ds-background-accent-blue-bolder-hovered)" | "var(--ds-background-accent-purple-bolder-hovered)" | "var(--ds-background-accent-magenta-bolder-hovered)" | "var(--ds-background-accent-gray-bolder-hovered)";
11
11
  };
12
12
  export declare const createTelepointers: (from: number, to: number, sessionId: string, isSelection: boolean, initial: string) => Decoration[];
13
- export declare const replaceDocument: (doc: any, state: EditorState, version?: number, options?: CollabEditOptions, reserveCursor?: boolean) => Transaction;
13
+ export declare const replaceDocument: (doc: any, state: EditorState, version?: number, options?: CollabEditOptions, reserveCursor?: boolean, editorAnalyticsAPI?: EditorAnalyticsAPI) => Transaction;
14
14
  export declare const scrollToCollabCursor: (editorView: EditorView, participants: CollabParticipant[], sessionId: string | undefined, index: number, editorAnalyticsAPI: EditorAnalyticsAPI | undefined) => void;
15
15
  export declare const getPositionOfTelepointer: (sessionId: string, decorationSet: DecorationSet) => undefined | number;
16
16
  export declare const isReplaceStep: (step: Step) => boolean;
@@ -1,9 +1,10 @@
1
1
  import type { CollabEditProvider, CollabEventConnectionData, CollabEventInitData, CollabEventPresenceData, CollabEventRemoteData, CollabSendableSelection, CollabTelepointerPayload } from '@atlaskit/editor-common/collab';
2
+ import { type EditorAnalyticsAPI } from '@atlaskit/editor-common/src/analytics';
2
3
  import type { Selection } from '@atlaskit/editor-prosemirror/state';
3
4
  import type { EditorView } from '@atlaskit/editor-prosemirror/view';
4
5
  import type { PrivateCollabEditOptions } from './types';
5
6
  export declare const registerAllCustomSteps: () => void;
6
- export declare const handleInit: (initData: CollabEventInitData, view: EditorView, options?: PrivateCollabEditOptions) => void;
7
+ export declare const handleInit: (initData: CollabEventInitData, view: EditorView, options?: PrivateCollabEditOptions, editorAnalyticsApi?: EditorAnalyticsAPI) => void;
7
8
  export declare const handleConnection: (connectionData: CollabEventConnectionData, view: EditorView) => void;
8
9
  export declare const handlePresence: (presenceData: CollabEventPresenceData, view: EditorView) => void;
9
10
  /**
@@ -10,7 +10,7 @@ export declare function getAvatarColor(str: string): {
10
10
  color: "var(--ds-icon-accent-lime)" | "var(--ds-icon-accent-red)" | "var(--ds-icon-accent-orange)" | "var(--ds-icon-accent-yellow)" | "var(--ds-icon-accent-green)" | "var(--ds-icon-accent-teal)" | "var(--ds-icon-accent-blue)" | "var(--ds-icon-accent-purple)" | "var(--ds-icon-accent-magenta)" | "var(--ds-icon-accent-gray)" | "var(--ds-background-accent-lime-bolder-hovered)" | "var(--ds-background-accent-red-bolder-hovered)" | "var(--ds-background-accent-orange-bolder-hovered)" | "var(--ds-background-accent-yellow-bolder-hovered)" | "var(--ds-background-accent-yellow-bolder-pressed)" | "var(--ds-background-accent-green-bolder-hovered)" | "var(--ds-background-accent-teal-bolder-hovered)" | "var(--ds-background-accent-blue-bolder-hovered)" | "var(--ds-background-accent-purple-bolder-hovered)" | "var(--ds-background-accent-magenta-bolder-hovered)" | "var(--ds-background-accent-gray-bolder-hovered)";
11
11
  };
12
12
  export declare const createTelepointers: (from: number, to: number, sessionId: string, isSelection: boolean, initial: string) => Decoration[];
13
- export declare const replaceDocument: (doc: any, state: EditorState, version?: number, options?: CollabEditOptions, reserveCursor?: boolean) => Transaction;
13
+ export declare const replaceDocument: (doc: any, state: EditorState, version?: number, options?: CollabEditOptions, reserveCursor?: boolean, editorAnalyticsAPI?: EditorAnalyticsAPI) => Transaction;
14
14
  export declare const scrollToCollabCursor: (editorView: EditorView, participants: CollabParticipant[], sessionId: string | undefined, index: number, editorAnalyticsAPI: EditorAnalyticsAPI | undefined) => void;
15
15
  export declare const getPositionOfTelepointer: (sessionId: string, decorationSet: DecorationSet) => undefined | number;
16
16
  export declare const isReplaceStep: (step: Step) => boolean;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@atlaskit/editor-plugin-collab-edit",
3
- "version": "1.22.6",
3
+ "version": "1.23.0",
4
4
  "description": "Collab Edit plugin for @atlaskit/editor-core",
5
5
  "author": "Atlassian Pty Ltd",
6
6
  "license": "Apache-2.0",
@@ -33,13 +33,13 @@
33
33
  "dependencies": {
34
34
  "@atlaskit/adf-schema": "^44.2.0",
35
35
  "@atlaskit/custom-steps": "^0.8.0",
36
- "@atlaskit/editor-common": "^94.9.0",
37
- "@atlaskit/editor-json-transformer": "^8.18.2",
36
+ "@atlaskit/editor-common": "^94.17.0",
37
+ "@atlaskit/editor-json-transformer": "^8.21.0",
38
38
  "@atlaskit/editor-plugin-analytics": "1.10.3",
39
39
  "@atlaskit/editor-plugin-editor-viewmode": "^2.1.0",
40
40
  "@atlaskit/editor-plugin-feature-flags": "^1.2.0",
41
41
  "@atlaskit/editor-prosemirror": "6.0.0",
42
- "@atlaskit/editor-shared-styles": "^3.1.0",
42
+ "@atlaskit/editor-shared-styles": "^3.2.0",
43
43
  "@atlaskit/platform-feature-flags": "^0.3.0",
44
44
  "@atlaskit/prosemirror-collab": "^0.10.0",
45
45
  "@babel/runtime": "^7.0.0",
@@ -59,7 +59,7 @@
59
59
  "@atlaskit/editor-test-helpers": "^20.0.0",
60
60
  "@atlaskit/ssr": "*",
61
61
  "@atlaskit/synchrony-test-helpers": "^2.5.0",
62
- "@atlaskit/util-data-test": "^17.11.0",
62
+ "@atlaskit/util-data-test": "^17.12.0",
63
63
  "@atlaskit/visual-regression": "*",
64
64
  "@testing-library/react": "^12.1.5",
65
65
  "typescript": "~5.4.2",
@@ -107,6 +107,9 @@
107
107
  },
108
108
  "platform_editor_filter_spamming_transactions": {
109
109
  "type": "boolean"
110
+ },
111
+ "platform_editor_use_nested_table_pm_nodes": {
112
+ "type": "boolean"
110
113
  }
111
114
  }
112
115
  }