@atlaskit/editor-plugin-show-diff 5.0.4 → 5.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.
Files changed (70) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/dist/cjs/pm-plugins/calculateDiffDecorations.js +66 -39
  3. package/dist/cjs/pm-plugins/{colorSchemes → decorations/colorSchemes}/standard.js +32 -30
  4. package/dist/cjs/pm-plugins/decorations/colorSchemes/traditional.js +75 -0
  5. package/dist/cjs/pm-plugins/decorations/createBlockChangedDecoration.js +75 -0
  6. package/dist/cjs/pm-plugins/{deletedRowsHandler.js → decorations/createChangedRowDecorationWidgets.js} +34 -61
  7. package/dist/cjs/pm-plugins/decorations/createInlineChangedDecoration.js +33 -0
  8. package/dist/cjs/pm-plugins/{decorations.js → decorations/createNodeChangedDecorationWidget.js} +27 -71
  9. package/dist/cjs/pm-plugins/{attributeDecorations.js → decorations/utils/getAttrChangeRanges.js} +1 -1
  10. package/dist/cjs/pm-plugins/{deletedBlocksHandler.js → decorations/utils/wrapBlockNodeView.js} +90 -70
  11. package/dist/es2019/pm-plugins/calculateDiffDecorations.js +41 -13
  12. package/dist/es2019/pm-plugins/{colorSchemes → decorations/colorSchemes}/standard.js +31 -29
  13. package/dist/es2019/pm-plugins/{colorSchemes → decorations/colorSchemes}/traditional.js +28 -29
  14. package/dist/es2019/pm-plugins/decorations/createBlockChangedDecoration.js +70 -0
  15. package/dist/es2019/pm-plugins/{deletedRowsHandler.js → decorations/createChangedRowDecorationWidgets.js} +30 -57
  16. package/dist/es2019/pm-plugins/decorations/createInlineChangedDecoration.js +28 -0
  17. package/dist/es2019/pm-plugins/{decorations.js → decorations/createNodeChangedDecorationWidget.js} +27 -71
  18. package/dist/es2019/pm-plugins/{attributeDecorations.js → decorations/utils/getAttrChangeRanges.js} +1 -1
  19. package/dist/es2019/pm-plugins/{deletedBlocksHandler.js → decorations/utils/wrapBlockNodeView.js} +89 -64
  20. package/dist/esm/pm-plugins/calculateDiffDecorations.js +62 -35
  21. package/dist/esm/pm-plugins/{colorSchemes → decorations/colorSchemes}/standard.js +31 -29
  22. package/dist/esm/pm-plugins/{colorSchemes → decorations/colorSchemes}/traditional.js +28 -29
  23. package/dist/esm/pm-plugins/decorations/createBlockChangedDecoration.js +69 -0
  24. package/dist/esm/pm-plugins/{deletedRowsHandler.js → decorations/createChangedRowDecorationWidgets.js} +32 -59
  25. package/dist/esm/pm-plugins/decorations/createInlineChangedDecoration.js +28 -0
  26. package/dist/esm/pm-plugins/{decorations.js → decorations/createNodeChangedDecorationWidget.js} +27 -71
  27. package/dist/esm/pm-plugins/{attributeDecorations.js → decorations/utils/getAttrChangeRanges.js} +1 -1
  28. package/dist/esm/pm-plugins/{deletedBlocksHandler.js → decorations/utils/wrapBlockNodeView.js} +84 -64
  29. package/dist/types/pm-plugins/NodeViewSerializer.d.ts +1 -1
  30. package/dist/types/pm-plugins/calculateDiffDecorations.d.ts +2 -1
  31. package/dist/types/pm-plugins/decorations/colorSchemes/standard.d.ts +17 -0
  32. package/dist/types/pm-plugins/decorations/colorSchemes/traditional.d.ts +13 -0
  33. package/dist/types/pm-plugins/decorations/createBlockChangedDecoration.d.ts +16 -0
  34. package/dist/types/pm-plugins/decorations/createChangedRowDecorationWidgets.d.ts +17 -0
  35. package/dist/types/pm-plugins/decorations/createInlineChangedDecoration.d.ts +16 -0
  36. package/dist/types/pm-plugins/decorations/createNodeChangedDecorationWidget.d.ts +15 -0
  37. package/dist/types/pm-plugins/decorations/utils/wrapBlockNodeView.d.ts +15 -0
  38. package/dist/types-ts4.5/pm-plugins/NodeViewSerializer.d.ts +1 -1
  39. package/dist/types-ts4.5/pm-plugins/calculateDiffDecorations.d.ts +2 -1
  40. package/dist/types-ts4.5/pm-plugins/decorations/colorSchemes/standard.d.ts +17 -0
  41. package/dist/types-ts4.5/pm-plugins/decorations/colorSchemes/traditional.d.ts +13 -0
  42. package/dist/types-ts4.5/pm-plugins/decorations/createBlockChangedDecoration.d.ts +16 -0
  43. package/dist/types-ts4.5/pm-plugins/decorations/createChangedRowDecorationWidgets.d.ts +17 -0
  44. package/dist/types-ts4.5/pm-plugins/decorations/createInlineChangedDecoration.d.ts +16 -0
  45. package/dist/types-ts4.5/pm-plugins/decorations/createNodeChangedDecorationWidget.d.ts +15 -0
  46. package/dist/types-ts4.5/pm-plugins/decorations/utils/wrapBlockNodeView.d.ts +15 -0
  47. package/package.json +3 -3
  48. package/dist/cjs/pm-plugins/colorSchemes/traditional.js +0 -76
  49. package/dist/types/pm-plugins/colorSchemes/standard.d.ts +0 -8
  50. package/dist/types/pm-plugins/colorSchemes/traditional.d.ts +0 -5
  51. package/dist/types/pm-plugins/decorations.d.ts +0 -39
  52. package/dist/types/pm-plugins/deletedBlocksHandler.d.ts +0 -59
  53. package/dist/types/pm-plugins/deletedRowsHandler.d.ts +0 -30
  54. package/dist/types-ts4.5/pm-plugins/colorSchemes/standard.d.ts +0 -8
  55. package/dist/types-ts4.5/pm-plugins/colorSchemes/traditional.d.ts +0 -5
  56. package/dist/types-ts4.5/pm-plugins/decorations.d.ts +0 -39
  57. package/dist/types-ts4.5/pm-plugins/deletedBlocksHandler.d.ts +0 -59
  58. package/dist/types-ts4.5/pm-plugins/deletedRowsHandler.d.ts +0 -30
  59. /package/dist/cjs/pm-plugins/{findSafeInsertPos.js → decorations/utils/findSafeInsertPos.js} +0 -0
  60. /package/dist/cjs/pm-plugins/{markDecorations.js → decorations/utils/getMarkChangeRanges.js} +0 -0
  61. /package/dist/es2019/pm-plugins/{findSafeInsertPos.js → decorations/utils/findSafeInsertPos.js} +0 -0
  62. /package/dist/es2019/pm-plugins/{markDecorations.js → decorations/utils/getMarkChangeRanges.js} +0 -0
  63. /package/dist/esm/pm-plugins/{findSafeInsertPos.js → decorations/utils/findSafeInsertPos.js} +0 -0
  64. /package/dist/esm/pm-plugins/{markDecorations.js → decorations/utils/getMarkChangeRanges.js} +0 -0
  65. /package/dist/types/pm-plugins/{findSafeInsertPos.d.ts → decorations/utils/findSafeInsertPos.d.ts} +0 -0
  66. /package/dist/types/pm-plugins/{attributeDecorations.d.ts → decorations/utils/getAttrChangeRanges.d.ts} +0 -0
  67. /package/dist/types/pm-plugins/{markDecorations.d.ts → decorations/utils/getMarkChangeRanges.d.ts} +0 -0
  68. /package/dist/types-ts4.5/pm-plugins/{findSafeInsertPos.d.ts → decorations/utils/findSafeInsertPos.d.ts} +0 -0
  69. /package/dist/types-ts4.5/pm-plugins/{attributeDecorations.d.ts → decorations/utils/getAttrChangeRanges.d.ts} +0 -0
  70. /package/dist/types-ts4.5/pm-plugins/{markDecorations.d.ts → decorations/utils/getMarkChangeRanges.d.ts} +0 -0
@@ -2,29 +2,18 @@ import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray";
2
2
  function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, 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 o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; }
3
3
  function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
4
4
  function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
5
- import { convertToInlineCss } from '@atlaskit/editor-common/lazy-node-view';
6
5
  import { areNodesEqualIgnoreAttrs } from '@atlaskit/editor-common/utils/document';
7
6
  import { findParentNodeClosestToPos } from '@atlaskit/editor-prosemirror/utils';
8
7
  import { Decoration } from '@atlaskit/editor-prosemirror/view';
9
8
  import { TableMap } from '@atlaskit/editor-tables/table-map';
10
- import { findSafeInsertPos } from './findSafeInsertPos';
11
- var deletedRowStyle = convertToInlineCss({
12
- color: "var(--ds-text-accent-gray, #505258)",
13
- textDecoration: 'line-through',
14
- opacity: 0.6,
15
- display: 'table-row'
16
- });
17
- var deletedTraditionalRowStyle = convertToInlineCss({
18
- textDecorationColor: "var(--ds-border-accent-red, #E2483D)",
19
- textDecoration: 'line-through',
20
- opacity: 0.6,
21
- display: 'table-row'
22
- });
9
+ import { deletedRowStyle } from './colorSchemes/standard';
10
+ import { deletedTraditionalRowStyle } from './colorSchemes/traditional';
11
+ import { findSafeInsertPos } from './utils/findSafeInsertPos';
23
12
  /**
24
13
  * Extracts information about deleted table rows from a change
25
14
  */
26
- var extractDeletedRows = function extractDeletedRows(change, originalDoc, newDoc) {
27
- var deletedRows = [];
15
+ var extractChangedRows = function extractChangedRows(change, originalDoc, newDoc) {
16
+ var changedRows = [];
28
17
 
29
18
  // Find the table in the original document
30
19
  var $fromPos = originalDoc.resolve(change.fromA);
@@ -32,7 +21,7 @@ var extractDeletedRows = function extractDeletedRows(change, originalDoc, newDoc
32
21
  return node.type.name === 'table';
33
22
  });
34
23
  if (!tableOld) {
35
- return deletedRows;
24
+ return changedRows;
36
25
  }
37
26
  var oldTableMap = TableMap.get(tableOld.node);
38
27
 
@@ -42,18 +31,18 @@ var extractDeletedRows = function extractDeletedRows(change, originalDoc, newDoc
42
31
  return node.type.name === 'table';
43
32
  });
44
33
  if (!tableNew) {
45
- return deletedRows;
34
+ return changedRows;
46
35
  }
47
36
  var newTableMap = TableMap.get(tableNew.node);
48
37
 
49
- // If no rows were deleted, return empty
38
+ // If no rows were changed, return empty
50
39
  if (oldTableMap.height <= newTableMap.height ||
51
40
  // For now ignore if there are column deletions as well
52
41
  oldTableMap.width !== newTableMap.width) {
53
- return deletedRows;
42
+ return changedRows;
54
43
  }
55
44
 
56
- // Find which rows were deleted by analyzing the change range
45
+ // Find which rows were changed by analyzing the change range
57
46
  var changeStartInTable = change.fromA - tableOld.pos - 1;
58
47
  var changeEndInTable = change.toA - tableOld.pos - 1;
59
48
  var currentOffset = 0;
@@ -68,7 +57,7 @@ var extractDeletedRows = function extractDeletedRows(change, originalDoc, newDoc
68
57
  var startOfRow = newTableMap.mapByRow.slice().reverse().find(function (row) {
69
58
  return row[0] + tableNew.pos < change.fromB && change.fromB < row[row.length - 1] + tableNew.pos;
70
59
  });
71
- deletedRows.push({
60
+ changedRows.push({
72
61
  rowIndex: rowIndex,
73
62
  rowNode: rowNode,
74
63
  fromA: tableOld.pos + 1 + rowStart,
@@ -83,9 +72,9 @@ var extractDeletedRows = function extractDeletedRows(change, originalDoc, newDoc
83
72
  });
84
73
 
85
74
  // Filter changes that never truly got deleted
86
- return deletedRows.filter(function (deletedRow) {
75
+ return changedRows.filter(function (changedRow) {
87
76
  return !tableNew.node.children.some(function (newRow) {
88
- return areNodesEqualIgnoreAttrs(newRow, deletedRow.rowNode);
77
+ return areNodesEqualIgnoreAttrs(newRow, changedRow.rowNode);
89
78
  });
90
79
  });
91
80
  };
@@ -119,7 +108,7 @@ var isEmptyRow = function isEmptyRow(rowNode) {
119
108
  /**
120
109
  * Creates a DOM representation of a deleted table row
121
110
  */
122
- var createDeletedRowDOM = function createDeletedRowDOM(rowNode, nodeViewSerializer, colorScheme) {
111
+ var createChangedRowDOM = function createChangedRowDOM(rowNode, nodeViewSerializer, colorScheme) {
123
112
  var tr = document.createElement('tr');
124
113
  tr.setAttribute('style', colorScheme === 'traditional' ? deletedTraditionalRowStyle : deletedRowStyle);
125
114
  tr.setAttribute('data-testid', 'show-diff-deleted-row');
@@ -143,19 +132,19 @@ var createDeletedRowDOM = function createDeletedRowDOM(rowNode, nodeViewSerializ
143
132
  };
144
133
 
145
134
  /**
146
- * Expands a diff to include whole deleted rows when table rows are affected
135
+ * Expands a diff to include whole changed rows when table rows are affected
147
136
  */
148
- var expandDiffForDeletedRows = function expandDiffForDeletedRows(changes, originalDoc, newDoc) {
149
- var deletedRowInfo = [];
137
+ var expandDiffForChangedRows = function expandDiffForChangedRows(changes, originalDoc, newDoc) {
138
+ var rowInfo = [];
150
139
  var _iterator = _createForOfIteratorHelper(changes),
151
140
  _step;
152
141
  try {
153
142
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
154
143
  var change = _step.value;
155
144
  // Check if this change affects table content
156
- var deletedRows = extractDeletedRows(change, originalDoc, newDoc);
157
- if (deletedRows.length > 0) {
158
- deletedRowInfo.push.apply(deletedRowInfo, _toConsumableArray(deletedRows));
145
+ var changedRows = extractChangedRows(change, originalDoc, newDoc);
146
+ if (changedRows.length > 0) {
147
+ rowInfo.push.apply(rowInfo, _toConsumableArray(changedRows));
159
148
  }
160
149
  }
161
150
  } catch (err) {
@@ -163,45 +152,29 @@ var expandDiffForDeletedRows = function expandDiffForDeletedRows(changes, origin
163
152
  } finally {
164
153
  _iterator.f();
165
154
  }
166
- return deletedRowInfo;
155
+ return rowInfo;
167
156
  };
168
157
 
169
158
  /**
170
- * Creates decorations for deleted table rows
159
+ * Main function to handle deleted rows - computes diff and creates decorations
171
160
  */
172
- export var createDeletedRowsDecorations = function createDeletedRowsDecorations(_ref) {
173
- var deletedRows = _ref.deletedRows,
161
+ export var createChangedRowDecorationWidgets = function createChangedRowDecorationWidgets(_ref) {
162
+ var changes = _ref.changes,
174
163
  originalDoc = _ref.originalDoc,
175
164
  newDoc = _ref.newDoc,
176
165
  nodeViewSerializer = _ref.nodeViewSerializer,
177
166
  colorScheme = _ref.colorScheme;
178
- return deletedRows.map(function (deletedRow) {
179
- var rowDOM = createDeletedRowDOM(deletedRow.rowNode, nodeViewSerializer, colorScheme);
167
+ // First, expand the changes to include complete deleted rows
168
+ var changedRows = expandDiffForChangedRows(changes.filter(function (change) {
169
+ return change.deleted.length > 0;
170
+ }), originalDoc, newDoc);
171
+ return changedRows.map(function (changedRow) {
172
+ var rowDOM = createChangedRowDOM(changedRow.rowNode, nodeViewSerializer, colorScheme);
180
173
 
181
174
  // Find safe insertion position for the deleted row
182
- var safeInsertPos = findSafeInsertPos(newDoc, deletedRow.fromB - 1,
175
+ var safeInsertPos = findSafeInsertPos(newDoc, changedRow.fromB - 1,
183
176
  // -1 to find the first safe position from the table
184
- originalDoc.slice(deletedRow.fromA, deletedRow.toA));
177
+ originalDoc.slice(changedRow.fromA, changedRow.toA));
185
178
  return Decoration.widget(safeInsertPos, rowDOM, {});
186
179
  });
187
- };
188
-
189
- /**
190
- * Main function to handle deleted rows - computes diff and creates decorations
191
- */
192
- export var handleDeletedRows = function handleDeletedRows(changes, originalDoc, newDoc, nodeViewSerializer, colorScheme) {
193
- // First, expand the changes to include complete deleted rows
194
- var deletedRows = expandDiffForDeletedRows(changes.filter(function (change) {
195
- return change.deleted.length > 0;
196
- }), originalDoc, newDoc);
197
- var allDecorations = createDeletedRowsDecorations({
198
- deletedRows: deletedRows,
199
- originalDoc: originalDoc,
200
- newDoc: newDoc,
201
- nodeViewSerializer: nodeViewSerializer,
202
- colorScheme: colorScheme
203
- });
204
- return {
205
- decorations: allDecorations
206
- };
207
180
  };
@@ -0,0 +1,28 @@
1
+ import { Decoration } from '@atlaskit/editor-prosemirror/view';
2
+ import { editingStyle, editingStyleActive } from './colorSchemes/standard';
3
+ import { traditionalInsertStyle, traditionalInsertStyleActive } from './colorSchemes/traditional';
4
+
5
+ /**
6
+ * Inline decoration used for insertions as the content already exists in the document
7
+ *
8
+ * @param change Changeset "change" containing information about the change content + range
9
+ * @returns Prosemirror inline decoration
10
+ */
11
+ export var createInlineChangedDecoration = function createInlineChangedDecoration(_ref) {
12
+ var change = _ref.change,
13
+ colorScheme = _ref.colorScheme,
14
+ _ref$isActive = _ref.isActive,
15
+ isActive = _ref$isActive === void 0 ? false : _ref$isActive;
16
+ var style;
17
+ if (colorScheme === 'traditional') {
18
+ style = isActive ? traditionalInsertStyleActive : traditionalInsertStyle;
19
+ } else {
20
+ style = isActive ? editingStyleActive : editingStyle;
21
+ }
22
+ return Decoration.inline(change.fromB, change.toB, {
23
+ style: style,
24
+ 'data-testid': 'show-diff-changed-decoration'
25
+ }, {
26
+ key: 'diff-inline'
27
+ });
28
+ };
@@ -2,36 +2,15 @@ import { convertToInlineCss } from '@atlaskit/editor-common/lazy-node-view';
2
2
  import { Decoration } from '@atlaskit/editor-prosemirror/view';
3
3
  import { fg } from '@atlaskit/platform-feature-flags';
4
4
  import { expValEquals } from '@atlaskit/tmp-editor-statsig/exp-val-equals';
5
- import { getStandardNodeStyle, deletedContentStyle, deletedContentStyleActive, deletedContentStyleNew, deletedContentStyleNewActive, editingStyle, editingStyleActive, deletedContentStyleUnbounded } from './colorSchemes/standard';
6
- import { getTraditionalNodeStyle, deletedTraditionalContentStyle, deletedTraditionalContentStyleUnbounded, traditionalInsertStyle, traditionalInsertStyleActive } from './colorSchemes/traditional';
7
- import { createDeletedStyleWrapperWithoutOpacity, handleBlockNodeView } from './deletedBlocksHandler';
8
- import { handleDeletedRows } from './deletedRowsHandler';
9
- import { findSafeInsertPos } from './findSafeInsertPos';
10
- /**
11
- * Inline decoration used for insertions as the content already exists in the document
12
- *
13
- * @param change Changeset "change" containing information about the change content + range
14
- * @returns Prosemirror inline decoration
15
- */
16
- export var createInlineChangedDecoration = function createInlineChangedDecoration(change, colorScheme) {
17
- var isActive = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
18
- var style;
19
- if (colorScheme === 'traditional') {
20
- style = isActive ? traditionalInsertStyleActive : traditionalInsertStyle;
21
- } else {
22
- style = isActive ? editingStyleActive : editingStyle;
23
- }
24
- return Decoration.inline(change.fromB, change.toB, {
25
- style: style,
26
- 'data-testid': 'show-diff-changed-decoration'
27
- }, {
28
- key: 'diff-inline'
29
- });
30
- };
31
- export var getDeletedContentStyleUnbounded = function getDeletedContentStyleUnbounded(colorScheme) {
5
+ import { deletedContentStyle, deletedContentStyleActive, deletedContentStyleNew, deletedContentStyleNewActive, deletedContentStyleUnbounded } from './colorSchemes/standard';
6
+ import { deletedTraditionalContentStyle, deletedTraditionalContentStyleUnbounded } from './colorSchemes/traditional';
7
+ import { createChangedRowDecorationWidgets } from './createChangedRowDecorationWidgets';
8
+ import { findSafeInsertPos } from './utils/findSafeInsertPos';
9
+ import { wrapBlockNodeView } from './utils/wrapBlockNodeView';
10
+ var getDeletedContentStyleUnbounded = function getDeletedContentStyleUnbounded(colorScheme) {
32
11
  return colorScheme === 'traditional' ? deletedTraditionalContentStyleUnbounded : deletedContentStyleUnbounded;
33
12
  };
34
- export var getDeletedContentStyle = function getDeletedContentStyle(colorScheme) {
13
+ var getDeletedContentStyle = function getDeletedContentStyle(colorScheme) {
35
14
  var isActive = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
36
15
  if (colorScheme === 'traditional') {
37
16
  return deletedTraditionalContentStyle;
@@ -41,47 +20,14 @@ export var getDeletedContentStyle = function getDeletedContentStyle(colorScheme)
41
20
  }
42
21
  return expValEquals('platform_editor_enghealth_a11y_jan_fixes', 'isEnabled', true) ? deletedContentStyleNew : deletedContentStyle;
43
22
  };
44
- var getNodeClass = function getNodeClass(name) {
45
- switch (name) {
46
- case 'extension':
47
- return 'show-diff-changed-decoration-node';
48
- default:
49
- return undefined;
50
- }
51
- };
52
- var getBlockNodeStyle = function getBlockNodeStyle(name, colorScheme) {
53
- return colorScheme === 'traditional' ? getTraditionalNodeStyle(name) : getStandardNodeStyle(name);
54
- };
55
23
 
56
24
  /**
57
- * Inline decoration used for insertions as the content already exists in the document
58
- *
59
- * @param change Changeset "change" containing information about the change content + range
60
- * @returns Prosemirror inline decoration
25
+ * Wraps content with deleted styling without opacity (for use when content is a direct child of dom)
61
26
  */
62
- export var createBlockChangedDecoration = function createBlockChangedDecoration(change, colorScheme) {
63
- if (fg('platform_editor_show_diff_scroll_navigation')) {
64
- var style = getBlockNodeStyle(change.name, colorScheme);
65
- var className = getNodeClass(change.name);
66
- if (style || className) {
67
- return Decoration.node(change.from, change.to, {
68
- style: style,
69
- 'data-testid': 'show-diff-changed-decoration-node',
70
- class: className
71
- }, {
72
- key: 'diff-block'
73
- });
74
- }
75
- return undefined;
76
- } else {
77
- return Decoration.node(change.from, change.to, {
78
- style: getBlockNodeStyle(change.name, colorScheme),
79
- 'data-testid': 'show-diff-changed-decoration-node',
80
- class: getNodeClass(change.name)
81
- }, {
82
- key: 'diff-block'
83
- });
84
- }
27
+ var createDeletedStyleWrapperWithoutOpacity = function createDeletedStyleWrapperWithoutOpacity(colorScheme, isActive) {
28
+ var wrapper = document.createElement('span');
29
+ wrapper.setAttribute('style', getDeletedContentStyle(colorScheme, isActive));
30
+ return wrapper;
85
31
  };
86
32
  var createContentWrapper = function createContentWrapper(colorScheme) {
87
33
  var isActive = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
@@ -96,7 +42,7 @@ var createContentWrapper = function createContentWrapper(colorScheme) {
96
42
  wrapper.append(strikethrough);
97
43
  return wrapper;
98
44
  };
99
- export var createDeletedContentDecoration = function createDeletedContentDecoration(_ref) {
45
+ export var createNodeChangedDecorationWidget = function createNodeChangedDecorationWidget(_ref) {
100
46
  var change = _ref.change,
101
47
  doc = _ref.doc,
102
48
  nodeViewSerializer = _ref.nodeViewSerializer,
@@ -126,9 +72,13 @@ export var createDeletedContentDecoration = function createDeletedContentDecorat
126
72
  if (!fg('platform_editor_ai_aifc_patch_ga')) {
127
73
  return;
128
74
  }
129
- var _handleDeletedRows = handleDeletedRows([change], doc, newDoc, nodeViewSerializer, colorScheme),
130
- decorations = _handleDeletedRows.decorations;
131
- return decorations;
75
+ return createChangedRowDecorationWidgets({
76
+ changes: [change],
77
+ originalDoc: doc,
78
+ newDoc: newDoc,
79
+ nodeViewSerializer: nodeViewSerializer,
80
+ colorScheme: colorScheme
81
+ });
132
82
  }
133
83
  var serializer = nodeViewSerializer;
134
84
 
@@ -206,7 +156,13 @@ export var createDeletedContentDecoration = function createDeletedContentDecorat
206
156
  dom.append(wrapper);
207
157
  } else {
208
158
  // Handle all block nodes with unified function
209
- handleBlockNodeView(dom, nodeView, node, colorScheme, intl);
159
+ wrapBlockNodeView({
160
+ dom: dom,
161
+ nodeView: nodeView,
162
+ targetNode: node,
163
+ colorScheme: colorScheme,
164
+ intl: intl
165
+ });
210
166
  }
211
167
  } else if (nodeViewSerializer.getFilteredNodeViewBlocklist(['paragraph', 'tableRow']).has(node.type.name)) {
212
168
  // Skip the case where the node is a paragraph or table row that way it can still be rendered and delete the entire table
@@ -44,7 +44,7 @@ export var stepIsValidAttrChange = function stepIsValidAttrChange(step, beforeDo
44
44
  }
45
45
  }
46
46
  return false;
47
- } catch (e) {
47
+ } catch (_unused) {
48
48
  return false;
49
49
  }
50
50
  };
@@ -4,42 +4,9 @@ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t =
4
4
  import { convertToInlineCss } from '@atlaskit/editor-common/lazy-node-view';
5
5
  import { trackChangesMessages } from '@atlaskit/editor-common/messages';
6
6
  import { fg } from '@atlaskit/platform-feature-flags';
7
- import { getDeletedContentStyle } from './decorations';
8
- export var deletedStyleQuoteNode = convertToInlineCss({
9
- borderLeft: "2px solid ".concat("var(--ds-border-accent-gray, #7D818A)")
10
- });
11
- export var deletedStyleQuoteNodeWithLozenge = convertToInlineCss({
12
- marginTop: "var(--ds-space-150, 12px)",
13
- paddingTop: "var(--ds-space-025, 2px)",
14
- paddingBottom: "var(--ds-space-025, 2px)",
15
- paddingLeft: "var(--ds-space-025, 2px)",
16
- boxShadow: "0 0 0 1px ".concat("var(--ds-border-accent-gray, #7D818A)"),
17
- borderRadius: "var(--ds-radius-small, 4px)"
18
- });
19
- export var deletedTraditionalStyleQuoteNode = convertToInlineCss({
20
- marginTop: "var(--ds-space-150, 12px)",
21
- paddingTop: "var(--ds-space-025, 2px)",
22
- paddingBottom: "var(--ds-space-025, 2px)",
23
- paddingLeft: "var(--ds-space-025, 2px)",
24
- boxShadow: "0 0 0 1px ".concat("var(--ds-border-accent-red, #E2483D)"),
25
- borderRadius: "var(--ds-radius-small, 4px)"
26
- });
27
- export var deletedBlockOutline = convertToInlineCss({
28
- boxShadow: "0 0 0 1px ".concat("var(--ds-border-accent-gray, #7D818A)"),
29
- borderRadius: "var(--ds-radius-small, 4px)"
30
- });
31
- export var deletedTraditionalBlockOutline = convertToInlineCss({
32
- boxShadow: "0 0 0 1px ".concat("var(--ds-border-accent-red, #E2483D)"),
33
- borderRadius: "var(--ds-radius-small, 4px)"
34
- });
35
- export var deletedBlockOutlineRounded = convertToInlineCss({
36
- boxShadow: "0 0 0 1px ".concat("var(--ds-border-accent-gray, #7D818A)"),
37
- borderRadius: "calc(".concat("var(--ds-radius-xsmall, 2px)", " + 1px)")
38
- });
39
- export var deletedTraditionalBlockOutlineRounded = convertToInlineCss({
40
- boxShadow: "0 0 0 1px ".concat("var(--ds-border-accent-red, #E2483D)"),
41
- borderRadius: "calc(".concat("var(--ds-radius-xsmall, 2px)", " + 1px)")
42
- });
7
+ import { expValEquals } from '@atlaskit/tmp-editor-statsig/exp-val-equals';
8
+ import { deletedStyleQuoteNode, deletedStyleQuoteNodeWithLozenge, deletedBlockOutline, deletedBlockOutlineRounded, deletedContentStyle, deletedContentStyleActive, deletedContentStyleNew, deletedContentStyleNewActive } from '../colorSchemes/standard';
9
+ import { deletedTraditionalStyleQuoteNode, deletedTraditionalBlockOutline, deletedTraditionalBlockOutlineRounded, deletedTraditionalContentStyle } from '../colorSchemes/traditional';
43
10
  var lozengeStyle = convertToInlineCss({
44
11
  display: 'inline-flex',
45
12
  boxSizing: 'border-box',
@@ -56,7 +23,17 @@ var lozengeStyle = convertToInlineCss({
56
23
  whiteSpace: 'nowrap',
57
24
  color: "var(--ds-text-warning-inverse, #292A2E)"
58
25
  });
59
- export var getDeletedStyleNode = function getDeletedStyleNode(nodeName, colorScheme) {
26
+ var getDeletedContentStyle = function getDeletedContentStyle(colorScheme) {
27
+ var isActive = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
28
+ if (colorScheme === 'traditional') {
29
+ return deletedTraditionalContentStyle;
30
+ }
31
+ if (isActive) {
32
+ return expValEquals('platform_editor_enghealth_a11y_jan_fixes', 'isEnabled', true) ? deletedContentStyleNewActive : deletedContentStyleActive;
33
+ }
34
+ return expValEquals('platform_editor_enghealth_a11y_jan_fixes', 'isEnabled', true) ? deletedContentStyleNew : deletedContentStyle;
35
+ };
36
+ var getDeletedStyleNode = function getDeletedStyleNode(nodeName, colorScheme) {
60
37
  var isTraditional = colorScheme === 'traditional';
61
38
  switch (nodeName) {
62
39
  case 'blockquote':
@@ -71,7 +48,7 @@ export var getDeletedStyleNode = function getDeletedStyleNode(nodeName, colorSch
71
48
  return undefined;
72
49
  }
73
50
  };
74
- export var shouldShowRemovedLozenge = function shouldShowRemovedLozenge(nodeName) {
51
+ var shouldShowRemovedLozenge = function shouldShowRemovedLozenge(nodeName) {
75
52
  switch (nodeName) {
76
53
  case 'expand':
77
54
  case 'codeBlock':
@@ -86,7 +63,7 @@ export var shouldShowRemovedLozenge = function shouldShowRemovedLozenge(nodeName
86
63
  return false;
87
64
  }
88
65
  };
89
- export var shouldAddShowDiffDeletedNodeClass = function shouldAddShowDiffDeletedNodeClass(nodeName) {
66
+ var shouldAddShowDiffDeletedNodeClass = function shouldAddShowDiffDeletedNodeClass(nodeName) {
90
67
  switch (nodeName) {
91
68
  case 'mediaSingle':
92
69
  case 'embedCard':
@@ -102,14 +79,14 @@ export var shouldAddShowDiffDeletedNodeClass = function shouldAddShowDiffDeleted
102
79
  * Checks if a node should apply deleted styles directly without wrapper
103
80
  * to preserve natural block-level margins
104
81
  */
105
- export var shouldApplyDeletedStylesDirectly = function shouldApplyDeletedStylesDirectly(nodeName) {
82
+ var shouldApplyStylesDirectly = function shouldApplyStylesDirectly(nodeName) {
106
83
  return nodeName === 'heading' || nodeName === 'blockquote' && !fg('platform_editor_ai_aifc_patch_ga_blockers');
107
84
  };
108
85
 
109
86
  /**
110
87
  * Creates a "Removed" lozenge to be displayed at the top right corner of deleted block nodes
111
88
  */
112
- export var createRemovedLozenge = function createRemovedLozenge(intl, nodeName) {
89
+ var createRemovedLozenge = function createRemovedLozenge(intl, nodeName) {
113
90
  var container = document.createElement('span');
114
91
  var borderTopRightRadius;
115
92
  if (['expand', 'decisionList'].includes(nodeName || '')) {
@@ -142,7 +119,7 @@ export var createRemovedLozenge = function createRemovedLozenge(intl, nodeName)
142
119
  /**
143
120
  * Wraps a block node in a container with relative positioning to support absolute positioned lozenge
144
121
  */
145
- export var createBlockNodeWrapper = function createBlockNodeWrapper() {
122
+ var createBlockNodeWrapper = function createBlockNodeWrapper() {
146
123
  var wrapper = document.createElement('div');
147
124
  var baseStyle = convertToInlineCss({
148
125
  position: 'relative',
@@ -154,18 +131,12 @@ export var createBlockNodeWrapper = function createBlockNodeWrapper() {
154
131
  };
155
132
 
156
133
  /**
157
- * Wraps content with deleted styling without opacity (for use when content is a direct child of dom)
134
+ * Applies styles directly to an HTML element by merging with existing styles
158
135
  */
159
- export var createDeletedStyleWrapperWithoutOpacity = function createDeletedStyleWrapperWithoutOpacity(colorScheme, isActive) {
160
- var wrapper = document.createElement('span');
161
- wrapper.setAttribute('style', getDeletedContentStyle(colorScheme, isActive));
162
- return wrapper;
163
- };
164
-
165
- /**
166
- * Applies deleted styles directly to an HTML element by merging with existing styles
167
- */
168
- export var applyDeletedStylesToElement = function applyDeletedStylesToElement(element, targetNode, colorScheme) {
136
+ var applyStylesToElement = function applyStylesToElement(_ref) {
137
+ var element = _ref.element,
138
+ targetNode = _ref.targetNode,
139
+ colorScheme = _ref.colorScheme;
169
140
  var currentStyle = element.getAttribute('style') || '';
170
141
  var deletedContentStyle = getDeletedContentStyle(colorScheme);
171
142
  var nodeSpecificStyle = getDeletedStyleNode(targetNode.type.name, colorScheme) || '';
@@ -175,7 +146,10 @@ export var applyDeletedStylesToElement = function applyDeletedStylesToElement(el
175
146
  /**
176
147
  * Creates a content wrapper with deleted styles for a block node
177
148
  */
178
- export var createBlockNodeContentWrapper = function createBlockNodeContentWrapper(nodeView, targetNode, colorScheme) {
149
+ var createBlockNodeContentWrapper = function createBlockNodeContentWrapper(_ref2) {
150
+ var nodeView = _ref2.nodeView,
151
+ targetNode = _ref2.targetNode,
152
+ colorScheme = _ref2.colorScheme;
179
153
  var contentWrapper = document.createElement('div');
180
154
  var nodeStyle = getDeletedStyleNode(targetNode.type.name, colorScheme);
181
155
  contentWrapper.setAttribute('style', "".concat(getDeletedContentStyle(colorScheme)).concat(nodeStyle || ''));
@@ -189,7 +163,12 @@ export var createBlockNodeContentWrapper = function createBlockNodeContentWrappe
189
163
  * to wait for the rich-media-item to appear before attaching the lozenge.
190
164
  * @returns true if embedCard was handled
191
165
  */
192
- export var handleEmbedCardWithLozenge = function handleEmbedCardWithLozenge(dom, nodeView, targetNode, lozenge, colorScheme) {
166
+ var handleEmbedCardWithLozenge = function handleEmbedCardWithLozenge(_ref3) {
167
+ var dom = _ref3.dom,
168
+ nodeView = _ref3.nodeView,
169
+ targetNode = _ref3.targetNode,
170
+ lozenge = _ref3.lozenge,
171
+ colorScheme = _ref3.colorScheme;
193
172
  if (targetNode.type.name !== 'embedCard' || !(nodeView instanceof HTMLElement)) {
194
173
  return false;
195
174
  }
@@ -221,7 +200,12 @@ export var handleEmbedCardWithLozenge = function handleEmbedCardWithLozenge(dom,
221
200
  * Handles special mediaSingle node rendering with lozenge on child media element
222
201
  * @returns true if mediaSingle was handled, false otherwise
223
202
  */
224
- export var handleMediaSingleWithLozenge = function handleMediaSingleWithLozenge(dom, nodeView, targetNode, lozenge, colorScheme) {
203
+ var handleMediaSingleWithLozenge = function handleMediaSingleWithLozenge(_ref4) {
204
+ var dom = _ref4.dom,
205
+ nodeView = _ref4.nodeView,
206
+ targetNode = _ref4.targetNode,
207
+ lozenge = _ref4.lozenge,
208
+ colorScheme = _ref4.colorScheme;
225
209
  if (targetNode.type.name !== 'mediaSingle' || !(nodeView instanceof HTMLElement)) {
226
210
  return false;
227
211
  }
@@ -250,19 +234,40 @@ export var handleMediaSingleWithLozenge = function handleMediaSingleWithLozenge(
250
234
  /**
251
235
  * Appends a block node with wrapper, lozenge, and appropriate styling
252
236
  */
253
- export var appendBlockNodeWithWrapper = function appendBlockNodeWithWrapper(dom, nodeView, targetNode, colorScheme, intl) {
237
+ var wrapBlockNode = function wrapBlockNode(_ref5) {
238
+ var dom = _ref5.dom,
239
+ nodeView = _ref5.nodeView,
240
+ targetNode = _ref5.targetNode,
241
+ colorScheme = _ref5.colorScheme,
242
+ intl = _ref5.intl;
254
243
  var blockWrapper = createBlockNodeWrapper();
255
244
  if (shouldShowRemovedLozenge(targetNode.type.name)) {
256
245
  var lozenge = createRemovedLozenge(intl);
257
- if (handleEmbedCardWithLozenge(dom, nodeView, targetNode, lozenge, colorScheme) && fg('platform_editor_ai_aifc_patch_ga_blockers')) {
246
+ if (handleEmbedCardWithLozenge({
247
+ dom: dom,
248
+ nodeView: nodeView,
249
+ targetNode: targetNode,
250
+ lozenge: lozenge,
251
+ colorScheme: colorScheme
252
+ }) && fg('platform_editor_ai_aifc_patch_ga_blockers')) {
258
253
  return;
259
254
  }
260
- if (handleMediaSingleWithLozenge(dom, nodeView, targetNode, lozenge, colorScheme)) {
255
+ if (handleMediaSingleWithLozenge({
256
+ dom: dom,
257
+ nodeView: nodeView,
258
+ targetNode: targetNode,
259
+ lozenge: lozenge,
260
+ colorScheme: colorScheme
261
+ })) {
261
262
  return;
262
263
  }
263
264
  blockWrapper.append(lozenge);
264
265
  }
265
- var contentWrapper = createBlockNodeContentWrapper(nodeView, targetNode, colorScheme);
266
+ var contentWrapper = createBlockNodeContentWrapper({
267
+ nodeView: nodeView,
268
+ targetNode: targetNode,
269
+ colorScheme: colorScheme
270
+ });
266
271
  blockWrapper.append(contentWrapper);
267
272
  if (nodeView instanceof HTMLElement && shouldAddShowDiffDeletedNodeClass(targetNode.type.name)) {
268
273
  var showDiffDeletedNodeClass = colorScheme === 'traditional' && fg('platform_editor_ai_aifc_patch_ga_blockers') ? 'show-diff-deleted-node-traditional' : 'show-diff-deleted-node';
@@ -276,13 +281,28 @@ export var appendBlockNodeWithWrapper = function appendBlockNodeWithWrapper(dom,
276
281
  * For heading nodes, applies styles directly to preserve natural margins.
277
282
  * For other block nodes, uses wrapper approach with optional lozenge.
278
283
  */
279
- export var handleBlockNodeView = function handleBlockNodeView(dom, nodeView, targetNode, colorScheme, intl) {
280
- if (shouldApplyDeletedStylesDirectly(targetNode.type.name) && nodeView instanceof HTMLElement) {
284
+ export var wrapBlockNodeView = function wrapBlockNodeView(_ref6) {
285
+ var dom = _ref6.dom,
286
+ nodeView = _ref6.nodeView,
287
+ targetNode = _ref6.targetNode,
288
+ colorScheme = _ref6.colorScheme,
289
+ intl = _ref6.intl;
290
+ if (shouldApplyStylesDirectly(targetNode.type.name) && nodeView instanceof HTMLElement) {
281
291
  // Apply deleted styles directly to preserve natural block-level margins
282
- applyDeletedStylesToElement(nodeView, targetNode, colorScheme);
292
+ applyStylesToElement({
293
+ element: nodeView,
294
+ targetNode: targetNode,
295
+ colorScheme: colorScheme
296
+ });
283
297
  dom.append(nodeView);
284
298
  } else {
285
299
  // Use wrapper approach for other block nodes
286
- appendBlockNodeWithWrapper(dom, nodeView, targetNode, colorScheme, intl);
300
+ wrapBlockNode({
301
+ dom: dom,
302
+ nodeView: nodeView,
303
+ targetNode: targetNode,
304
+ colorScheme: colorScheme,
305
+ intl: intl
306
+ });
287
307
  }
288
308
  };
@@ -67,7 +67,7 @@ export declare class NodeViewSerializer {
67
67
  /**
68
68
  * Serializes a fragment to a `DocumentFragment` using the schema's `DOMSerializer`.
69
69
  */
70
- serializeFragment(fragment: Fragment): HTMLElement | DocumentFragment | null;
70
+ serializeFragment(fragment: Fragment): DocumentFragment | HTMLElement | null;
71
71
  /**
72
72
  * Returns a copy of the current node view blocklist.
73
73
  */
@@ -1,6 +1,7 @@
1
1
  import type { IntlShape } from 'react-intl-next';
2
2
  import { type EditorState } from '@atlaskit/editor-prosemirror/state';
3
3
  import { DecorationSet } from '@atlaskit/editor-prosemirror/view';
4
+ import type { ColorScheme } from '../showDiffPluginType';
4
5
  import type { ShowDiffPluginState } from './main';
5
6
  import type { NodeViewSerializer } from './NodeViewSerializer';
6
7
  export declare const calculateDiffDecorations: import("memoize-one").MemoizedFn<({ state, pluginState, nodeViewSerializer, colorScheme, intl, activeIndexPos, }: {
@@ -8,7 +9,7 @@ export declare const calculateDiffDecorations: import("memoize-one").MemoizedFn<
8
9
  from: number;
9
10
  to: number;
10
11
  };
11
- colorScheme?: "standard" | "traditional";
12
+ colorScheme?: ColorScheme;
12
13
  intl: IntlShape;
13
14
  nodeViewSerializer: NodeViewSerializer;
14
15
  pluginState: Omit<ShowDiffPluginState, "decorations">;
@@ -0,0 +1,17 @@
1
+ export declare const editingStyle: string;
2
+ export declare const editingStyleActive: string;
3
+ export declare const deletedContentStyle: string;
4
+ export declare const deletedContentStyleActive: string;
5
+ export declare const deletedContentStyleNew: string;
6
+ export declare const deletedContentStyleNewActive: string;
7
+ export declare const deletedContentStyleUnbounded: string;
8
+ export declare const deletedStyleQuoteNode: string;
9
+ export declare const deletedStyleQuoteNodeWithLozenge: string;
10
+ export declare const deletedBlockOutline: string;
11
+ export declare const deletedBlockOutlineRounded: string;
12
+ export declare const deletedRowStyle: string;
13
+ export declare const editingStyleQuoteNode: string;
14
+ export declare const editingStyleRuleNode: string;
15
+ export declare const editingStyleNode: string;
16
+ export declare const editingStyleCardBlockNode: string;
17
+ export declare const standardDecorationMarkerVariable: string;