@atlaskit/adf-utils 19.11.0 → 19.12.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,14 @@
1
1
  # @atlaskit/adf-utils
2
2
 
3
+ ## 19.12.0
4
+
5
+ ### Minor Changes
6
+
7
+ - [#156454](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/pull-requests/156454)
8
+ [`8dfa896f600a2`](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/commits/8dfa896f600a2) -
9
+ [ED-25499] this change adds a transformer for converting nested tables to extensions in outgoing
10
+ documents
11
+
3
12
  ## 19.11.0
4
13
 
5
14
  ### Minor Changes
@@ -1,10 +1,15 @@
1
1
  "use strict";
2
2
 
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
3
4
  Object.defineProperty(exports, "__esModule", {
4
5
  value: true
5
6
  });
6
- exports.transformNestedTablesIncomingDocument = void 0;
7
+ exports.transformNestedTablesIncomingDocument = exports.transformNestedTableNodeOutgoingDocument = void 0;
8
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
7
9
  var _traverse = require("../traverse/traverse");
10
+ var _builders = require("../builders");
11
+ 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; }
12
+ 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) { (0, _defineProperty2.default)(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
8
13
  var NESTED_TABLE_EXTENSION_TYPE = 'com.atlassian.nesting',
9
14
  NESTED_TABLE_EXTENSION_KEY = 'nested-table';
10
15
  var isNestedTableExtension = function isNestedTableExtension(extensionNode) {
@@ -12,42 +17,25 @@ var isNestedTableExtension = function isNestedTableExtension(extensionNode) {
12
17
  return ((_extensionNode$attrs = extensionNode.attrs) === null || _extensionNode$attrs === void 0 ? void 0 : _extensionNode$attrs.extensionType) === NESTED_TABLE_EXTENSION_TYPE && ((_extensionNode$attrs2 = extensionNode.attrs) === null || _extensionNode$attrs2 === void 0 ? void 0 : _extensionNode$attrs2.extensionKey) === NESTED_TABLE_EXTENSION_KEY;
13
18
  };
14
19
  var transformNestedTableExtension = function transformNestedTableExtension(nestedTableExtension) {
15
- var _nestedTableExtension, _transformedNestedTab;
16
- // No content - nothing to transform
20
+ var _nestedTableExtension;
21
+ // No content - drop the extension node
17
22
  if (!((_nestedTableExtension = nestedTableExtension.attrs) !== null && _nestedTableExtension !== void 0 && (_nestedTableExtension = _nestedTableExtension.parameters) !== null && _nestedTableExtension !== void 0 && (_nestedTableExtension = _nestedTableExtension.macroParams) !== null && _nestedTableExtension !== void 0 && _nestedTableExtension.nestedContent)) {
18
- return {
19
- adf: nestedTableExtension,
20
- isTransformed: false
21
- };
23
+ return false;
22
24
  }
23
- var transformedNestedTable;
24
25
  try {
25
26
  var _nestedTableExtension2;
26
- transformedNestedTable = JSON.parse((_nestedTableExtension2 = nestedTableExtension.attrs) === null || _nestedTableExtension2 === void 0 || (_nestedTableExtension2 = _nestedTableExtension2.parameters) === null || _nestedTableExtension2 === void 0 || (_nestedTableExtension2 = _nestedTableExtension2.macroParams) === null || _nestedTableExtension2 === void 0 ? void 0 : _nestedTableExtension2.nestedContent.value);
27
+ return JSON.parse((_nestedTableExtension2 = nestedTableExtension.attrs) === null || _nestedTableExtension2 === void 0 || (_nestedTableExtension2 = _nestedTableExtension2.parameters) === null || _nestedTableExtension2 === void 0 || (_nestedTableExtension2 = _nestedTableExtension2.macroParams) === null || _nestedTableExtension2 === void 0 ? void 0 : _nestedTableExtension2.nestedContent.value);
27
28
  } catch (e) {
28
29
  throw new Error('Failed to parse nested table content');
29
30
  }
30
- if (!Array.isArray(transformedNestedTable) && ((_transformedNestedTab = transformedNestedTable) === null || _transformedNestedTab === void 0 ? void 0 : _transformedNestedTab.type) === 'table') {
31
- return {
32
- adf: transformedNestedTable,
33
- isTransformed: true
34
- };
35
- } else {
36
- throw new Error('Invalid nested table content');
37
- }
38
31
  };
39
32
  var transformNestedTablesIncomingDocument = exports.transformNestedTablesIncomingDocument = function transformNestedTablesIncomingDocument(adf) {
40
33
  var isTransformed = false;
41
34
  var transformedAdf = (0, _traverse.traverse)(adf, {
42
35
  extension: function extension(node) {
43
36
  if (isNestedTableExtension(node)) {
44
- var transformResult = transformNestedTableExtension(node);
45
- if (transformResult.isTransformed) {
46
- isTransformed = true;
47
- return transformResult.adf;
48
- } else {
49
- return false;
50
- }
37
+ isTransformed = true;
38
+ return transformNestedTableExtension(node);
51
39
  }
52
40
  }
53
41
  });
@@ -55,4 +43,26 @@ var transformNestedTablesIncomingDocument = exports.transformNestedTablesIncomin
55
43
  transformedAdf: transformedAdf,
56
44
  isTransformed: isTransformed
57
45
  };
46
+ };
47
+ var transformNestedTableNodeOutgoingDocument = exports.transformNestedTableNodeOutgoingDocument = function transformNestedTableNodeOutgoingDocument(tableCellNode) {
48
+ var _tableCellNode$conten;
49
+ return _objectSpread(_objectSpread({}, tableCellNode), {}, {
50
+ content: (_tableCellNode$conten = tableCellNode.content) === null || _tableCellNode$conten === void 0 ? void 0 : _tableCellNode$conten.map(function (childNode) {
51
+ // wrap nested table in an extension node
52
+ if ((childNode === null || childNode === void 0 ? void 0 : childNode.type) === 'table') {
53
+ return (0, _builders.extension)({
54
+ extensionType: NESTED_TABLE_EXTENSION_TYPE,
55
+ extensionKey: NESTED_TABLE_EXTENSION_KEY,
56
+ parameters: {
57
+ macroParams: {
58
+ nestedContent: {
59
+ value: JSON.stringify(childNode)
60
+ }
61
+ }
62
+ }
63
+ });
64
+ }
65
+ return childNode;
66
+ })
67
+ });
58
68
  };
@@ -27,6 +27,12 @@ Object.defineProperty(exports, "transformMediaLinkMarks", {
27
27
  return _mediaLinkTransform.transformMediaLinkMarks;
28
28
  }
29
29
  });
30
+ Object.defineProperty(exports, "transformNestedTableNodeOutgoingDocument", {
31
+ enumerable: true,
32
+ get: function get() {
33
+ return _nestedTableTransform.transformNestedTableNodeOutgoingDocument;
34
+ }
35
+ });
30
36
  Object.defineProperty(exports, "transformNestedTablesIncomingDocument", {
31
37
  enumerable: true,
32
38
  get: function get() {
@@ -1,4 +1,5 @@
1
1
  import { traverse } from '../traverse/traverse';
2
+ import { extension } from '../builders';
2
3
  const NESTED_TABLE_EXTENSION_TYPE = 'com.atlassian.nesting',
3
4
  NESTED_TABLE_EXTENSION_KEY = 'nested-table';
4
5
  const isNestedTableExtension = extensionNode => {
@@ -6,42 +7,25 @@ const isNestedTableExtension = extensionNode => {
6
7
  return ((_extensionNode$attrs = extensionNode.attrs) === null || _extensionNode$attrs === void 0 ? void 0 : _extensionNode$attrs.extensionType) === NESTED_TABLE_EXTENSION_TYPE && ((_extensionNode$attrs2 = extensionNode.attrs) === null || _extensionNode$attrs2 === void 0 ? void 0 : _extensionNode$attrs2.extensionKey) === NESTED_TABLE_EXTENSION_KEY;
7
8
  };
8
9
  const transformNestedTableExtension = nestedTableExtension => {
9
- var _nestedTableExtension, _nestedTableExtension2, _nestedTableExtension3, _transformedNestedTab;
10
- // No content - nothing to transform
10
+ var _nestedTableExtension, _nestedTableExtension2, _nestedTableExtension3;
11
+ // No content - drop the extension node
11
12
  if (!((_nestedTableExtension = nestedTableExtension.attrs) !== null && _nestedTableExtension !== void 0 && (_nestedTableExtension2 = _nestedTableExtension.parameters) !== null && _nestedTableExtension2 !== void 0 && (_nestedTableExtension3 = _nestedTableExtension2.macroParams) !== null && _nestedTableExtension3 !== void 0 && _nestedTableExtension3.nestedContent)) {
12
- return {
13
- adf: nestedTableExtension,
14
- isTransformed: false
15
- };
13
+ return false;
16
14
  }
17
- let transformedNestedTable;
18
15
  try {
19
16
  var _nestedTableExtension4, _nestedTableExtension5, _nestedTableExtension6;
20
- transformedNestedTable = JSON.parse((_nestedTableExtension4 = nestedTableExtension.attrs) === null || _nestedTableExtension4 === void 0 ? void 0 : (_nestedTableExtension5 = _nestedTableExtension4.parameters) === null || _nestedTableExtension5 === void 0 ? void 0 : (_nestedTableExtension6 = _nestedTableExtension5.macroParams) === null || _nestedTableExtension6 === void 0 ? void 0 : _nestedTableExtension6.nestedContent.value);
17
+ return JSON.parse((_nestedTableExtension4 = nestedTableExtension.attrs) === null || _nestedTableExtension4 === void 0 ? void 0 : (_nestedTableExtension5 = _nestedTableExtension4.parameters) === null || _nestedTableExtension5 === void 0 ? void 0 : (_nestedTableExtension6 = _nestedTableExtension5.macroParams) === null || _nestedTableExtension6 === void 0 ? void 0 : _nestedTableExtension6.nestedContent.value);
21
18
  } catch (e) {
22
19
  throw new Error('Failed to parse nested table content');
23
20
  }
24
- if (!Array.isArray(transformedNestedTable) && ((_transformedNestedTab = transformedNestedTable) === null || _transformedNestedTab === void 0 ? void 0 : _transformedNestedTab.type) === 'table') {
25
- return {
26
- adf: transformedNestedTable,
27
- isTransformed: true
28
- };
29
- } else {
30
- throw new Error('Invalid nested table content');
31
- }
32
21
  };
33
22
  export const transformNestedTablesIncomingDocument = adf => {
34
23
  let isTransformed = false;
35
24
  const transformedAdf = traverse(adf, {
36
25
  extension: node => {
37
26
  if (isNestedTableExtension(node)) {
38
- const transformResult = transformNestedTableExtension(node);
39
- if (transformResult.isTransformed) {
40
- isTransformed = true;
41
- return transformResult.adf;
42
- } else {
43
- return false;
44
- }
27
+ isTransformed = true;
28
+ return transformNestedTableExtension(node);
45
29
  }
46
30
  }
47
31
  });
@@ -49,4 +33,27 @@ export const transformNestedTablesIncomingDocument = adf => {
49
33
  transformedAdf,
50
34
  isTransformed
51
35
  };
36
+ };
37
+ export const transformNestedTableNodeOutgoingDocument = tableCellNode => {
38
+ var _tableCellNode$conten;
39
+ return {
40
+ ...tableCellNode,
41
+ content: (_tableCellNode$conten = tableCellNode.content) === null || _tableCellNode$conten === void 0 ? void 0 : _tableCellNode$conten.map(childNode => {
42
+ // wrap nested table in an extension node
43
+ if ((childNode === null || childNode === void 0 ? void 0 : childNode.type) === 'table') {
44
+ return extension({
45
+ extensionType: NESTED_TABLE_EXTENSION_TYPE,
46
+ extensionKey: NESTED_TABLE_EXTENSION_KEY,
47
+ parameters: {
48
+ macroParams: {
49
+ nestedContent: {
50
+ value: JSON.stringify(childNode)
51
+ }
52
+ }
53
+ }
54
+ });
55
+ }
56
+ return childNode;
57
+ })
58
+ };
52
59
  };
@@ -4,4 +4,5 @@ export { transformDedupeMarks } from './transforms/dedupe-marks-transform';
4
4
  export { transformNodesMissingContent } from './transforms/nodes-missing-content-transform';
5
5
  export { transformIndentationMarks } from './transforms/indentation-marks-transform';
6
6
  export { transformInvalidMediaContent } from './transforms/invalid-media-content-transform';
7
- export { transformNestedTablesIncomingDocument } from './transforms/nested-table-transform';
7
+ export { transformNestedTablesIncomingDocument } from './transforms/nested-table-transform';
8
+ export { transformNestedTableNodeOutgoingDocument } from './transforms/nested-table-transform';
@@ -1,4 +1,8 @@
1
+ import _defineProperty from "@babel/runtime/helpers/defineProperty";
2
+ 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; }
3
+ 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; }
1
4
  import { traverse } from '../traverse/traverse';
5
+ import { extension } from '../builders';
2
6
  var NESTED_TABLE_EXTENSION_TYPE = 'com.atlassian.nesting',
3
7
  NESTED_TABLE_EXTENSION_KEY = 'nested-table';
4
8
  var isNestedTableExtension = function isNestedTableExtension(extensionNode) {
@@ -6,42 +10,25 @@ var isNestedTableExtension = function isNestedTableExtension(extensionNode) {
6
10
  return ((_extensionNode$attrs = extensionNode.attrs) === null || _extensionNode$attrs === void 0 ? void 0 : _extensionNode$attrs.extensionType) === NESTED_TABLE_EXTENSION_TYPE && ((_extensionNode$attrs2 = extensionNode.attrs) === null || _extensionNode$attrs2 === void 0 ? void 0 : _extensionNode$attrs2.extensionKey) === NESTED_TABLE_EXTENSION_KEY;
7
11
  };
8
12
  var transformNestedTableExtension = function transformNestedTableExtension(nestedTableExtension) {
9
- var _nestedTableExtension, _transformedNestedTab;
10
- // No content - nothing to transform
13
+ var _nestedTableExtension;
14
+ // No content - drop the extension node
11
15
  if (!((_nestedTableExtension = nestedTableExtension.attrs) !== null && _nestedTableExtension !== void 0 && (_nestedTableExtension = _nestedTableExtension.parameters) !== null && _nestedTableExtension !== void 0 && (_nestedTableExtension = _nestedTableExtension.macroParams) !== null && _nestedTableExtension !== void 0 && _nestedTableExtension.nestedContent)) {
12
- return {
13
- adf: nestedTableExtension,
14
- isTransformed: false
15
- };
16
+ return false;
16
17
  }
17
- var transformedNestedTable;
18
18
  try {
19
19
  var _nestedTableExtension2;
20
- transformedNestedTable = JSON.parse((_nestedTableExtension2 = nestedTableExtension.attrs) === null || _nestedTableExtension2 === void 0 || (_nestedTableExtension2 = _nestedTableExtension2.parameters) === null || _nestedTableExtension2 === void 0 || (_nestedTableExtension2 = _nestedTableExtension2.macroParams) === null || _nestedTableExtension2 === void 0 ? void 0 : _nestedTableExtension2.nestedContent.value);
20
+ return JSON.parse((_nestedTableExtension2 = nestedTableExtension.attrs) === null || _nestedTableExtension2 === void 0 || (_nestedTableExtension2 = _nestedTableExtension2.parameters) === null || _nestedTableExtension2 === void 0 || (_nestedTableExtension2 = _nestedTableExtension2.macroParams) === null || _nestedTableExtension2 === void 0 ? void 0 : _nestedTableExtension2.nestedContent.value);
21
21
  } catch (e) {
22
22
  throw new Error('Failed to parse nested table content');
23
23
  }
24
- if (!Array.isArray(transformedNestedTable) && ((_transformedNestedTab = transformedNestedTable) === null || _transformedNestedTab === void 0 ? void 0 : _transformedNestedTab.type) === 'table') {
25
- return {
26
- adf: transformedNestedTable,
27
- isTransformed: true
28
- };
29
- } else {
30
- throw new Error('Invalid nested table content');
31
- }
32
24
  };
33
25
  export var transformNestedTablesIncomingDocument = function transformNestedTablesIncomingDocument(adf) {
34
26
  var isTransformed = false;
35
27
  var transformedAdf = traverse(adf, {
36
28
  extension: function extension(node) {
37
29
  if (isNestedTableExtension(node)) {
38
- var transformResult = transformNestedTableExtension(node);
39
- if (transformResult.isTransformed) {
40
- isTransformed = true;
41
- return transformResult.adf;
42
- } else {
43
- return false;
44
- }
30
+ isTransformed = true;
31
+ return transformNestedTableExtension(node);
45
32
  }
46
33
  }
47
34
  });
@@ -49,4 +36,26 @@ export var transformNestedTablesIncomingDocument = function transformNestedTable
49
36
  transformedAdf: transformedAdf,
50
37
  isTransformed: isTransformed
51
38
  };
39
+ };
40
+ export var transformNestedTableNodeOutgoingDocument = function transformNestedTableNodeOutgoingDocument(tableCellNode) {
41
+ var _tableCellNode$conten;
42
+ return _objectSpread(_objectSpread({}, tableCellNode), {}, {
43
+ content: (_tableCellNode$conten = tableCellNode.content) === null || _tableCellNode$conten === void 0 ? void 0 : _tableCellNode$conten.map(function (childNode) {
44
+ // wrap nested table in an extension node
45
+ if ((childNode === null || childNode === void 0 ? void 0 : childNode.type) === 'table') {
46
+ return extension({
47
+ extensionType: NESTED_TABLE_EXTENSION_TYPE,
48
+ extensionKey: NESTED_TABLE_EXTENSION_KEY,
49
+ parameters: {
50
+ macroParams: {
51
+ nestedContent: {
52
+ value: JSON.stringify(childNode)
53
+ }
54
+ }
55
+ }
56
+ });
57
+ }
58
+ return childNode;
59
+ })
60
+ });
52
61
  };
@@ -4,4 +4,5 @@ export { transformDedupeMarks } from './transforms/dedupe-marks-transform';
4
4
  export { transformNodesMissingContent } from './transforms/nodes-missing-content-transform';
5
5
  export { transformIndentationMarks } from './transforms/indentation-marks-transform';
6
6
  export { transformInvalidMediaContent } from './transforms/invalid-media-content-transform';
7
- export { transformNestedTablesIncomingDocument } from './transforms/nested-table-transform';
7
+ export { transformNestedTablesIncomingDocument } from './transforms/nested-table-transform';
8
+ export { transformNestedTableNodeOutgoingDocument } from './transforms/nested-table-transform';
@@ -3,3 +3,4 @@ export declare const transformNestedTablesIncomingDocument: (adf: ADFEntity) =>
3
3
  transformedAdf: ADFEntity;
4
4
  isTransformed: boolean;
5
5
  };
6
+ export declare const transformNestedTableNodeOutgoingDocument: (tableCellNode: ADFEntity) => ADFEntity;
@@ -5,3 +5,4 @@ export { transformNodesMissingContent } from './transforms/nodes-missing-content
5
5
  export { transformIndentationMarks } from './transforms/indentation-marks-transform';
6
6
  export { transformInvalidMediaContent } from './transforms/invalid-media-content-transform';
7
7
  export { transformNestedTablesIncomingDocument } from './transforms/nested-table-transform';
8
+ export { transformNestedTableNodeOutgoingDocument } from './transforms/nested-table-transform';
@@ -3,3 +3,4 @@ export declare const transformNestedTablesIncomingDocument: (adf: ADFEntity) =>
3
3
  transformedAdf: ADFEntity;
4
4
  isTransformed: boolean;
5
5
  };
6
+ export declare const transformNestedTableNodeOutgoingDocument: (tableCellNode: ADFEntity) => ADFEntity;
@@ -5,3 +5,4 @@ export { transformNodesMissingContent } from './transforms/nodes-missing-content
5
5
  export { transformIndentationMarks } from './transforms/indentation-marks-transform';
6
6
  export { transformInvalidMediaContent } from './transforms/invalid-media-content-transform';
7
7
  export { transformNestedTablesIncomingDocument } from './transforms/nested-table-transform';
8
+ export { transformNestedTableNodeOutgoingDocument } from './transforms/nested-table-transform';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@atlaskit/adf-utils",
3
- "version": "19.11.0",
3
+ "version": "19.12.0",
4
4
  "description": "Set of utilities to traverse, modify and create ADF documents.",
5
5
  "publishConfig": {
6
6
  "registry": "https://registry.npmjs.org/"