@atlaskit/adf-schema 44.0.0 → 44.2.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.
Files changed (81) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/dist/cjs/index.js +24 -0
  3. package/dist/cjs/next-schema/generated/markTypes.js +3 -0
  4. package/dist/cjs/next-schema/generated/nodeTypes.js +77 -1
  5. package/dist/cjs/next-schema/groups/blockContentGroup.js +4 -2
  6. package/dist/cjs/next-schema/groups/blockGroup.js +4 -2
  7. package/dist/cjs/next-schema/groups/nonNestableBlockContentGroup.js +4 -2
  8. package/dist/cjs/next-schema/groups/tableCellContentPseudoGroup.js +2 -2
  9. package/dist/cjs/next-schema/marks/breakout.js +5 -0
  10. package/dist/cjs/next-schema/nodes/extensionFrame.js +4 -2
  11. package/dist/cjs/next-schema/nodes/tableNodes.js +166 -0
  12. package/dist/cjs/schema/default-schema.js +5 -1
  13. package/dist/cjs/schema/index.js +24 -0
  14. package/dist/cjs/schema/marks/breakout.js +6 -2
  15. package/dist/cjs/schema/nodes/index.js +24 -0
  16. package/dist/cjs/schema/nodes/tableNodes.js +52 -40
  17. package/dist/cjs/validator-schema/generated/validatorSpec.js +4 -0
  18. package/dist/es2019/index.js +1 -1
  19. package/dist/es2019/next-schema/generated/markTypes.js +3 -0
  20. package/dist/es2019/next-schema/generated/nodeTypes.js +76 -0
  21. package/dist/es2019/next-schema/groups/blockContentGroup.js +4 -2
  22. package/dist/es2019/next-schema/groups/blockGroup.js +4 -2
  23. package/dist/es2019/next-schema/groups/nonNestableBlockContentGroup.js +4 -2
  24. package/dist/es2019/next-schema/groups/tableCellContentPseudoGroup.js +1 -1
  25. package/dist/es2019/next-schema/marks/breakout.js +5 -0
  26. package/dist/es2019/next-schema/nodes/extensionFrame.js +4 -2
  27. package/dist/es2019/next-schema/nodes/tableNodes.js +160 -0
  28. package/dist/es2019/schema/default-schema.js +6 -2
  29. package/dist/es2019/schema/index.js +1 -1
  30. package/dist/es2019/schema/marks/breakout.js +6 -2
  31. package/dist/es2019/schema/nodes/index.js +1 -1
  32. package/dist/es2019/schema/nodes/tableNodes.js +23 -14
  33. package/dist/es2019/validator-schema/generated/validatorSpec.js +4 -0
  34. package/dist/esm/index.js +1 -1
  35. package/dist/esm/next-schema/generated/markTypes.js +3 -0
  36. package/dist/esm/next-schema/generated/nodeTypes.js +76 -0
  37. package/dist/esm/next-schema/groups/blockContentGroup.js +4 -2
  38. package/dist/esm/next-schema/groups/blockGroup.js +4 -2
  39. package/dist/esm/next-schema/groups/nonNestableBlockContentGroup.js +4 -2
  40. package/dist/esm/next-schema/groups/tableCellContentPseudoGroup.js +1 -1
  41. package/dist/esm/next-schema/marks/breakout.js +5 -0
  42. package/dist/esm/next-schema/nodes/extensionFrame.js +4 -2
  43. package/dist/esm/next-schema/nodes/tableNodes.js +161 -0
  44. package/dist/esm/schema/default-schema.js +6 -2
  45. package/dist/esm/schema/index.js +1 -1
  46. package/dist/esm/schema/marks/breakout.js +6 -2
  47. package/dist/esm/schema/nodes/index.js +1 -1
  48. package/dist/esm/schema/nodes/tableNodes.js +52 -43
  49. package/dist/esm/validator-schema/generated/validatorSpec.js +4 -0
  50. package/dist/json-schema/v1/full.json +3 -0
  51. package/dist/json-schema/v1/stage-0.json +3 -0
  52. package/dist/types/index.d.ts +1 -1
  53. package/dist/types/next-schema/generated/markTypes.d.ts +1 -0
  54. package/dist/types/next-schema/generated/nodeGroupTypes.d.ts +3 -3
  55. package/dist/types/next-schema/generated/nodeTypes.d.ts +52 -4
  56. package/dist/types/next-schema/groups/nonNestableBlockContentGroup.d.ts +1 -55
  57. package/dist/types/next-schema/groups/tableCellContentPseudoGroup.d.ts +71 -0
  58. package/dist/types/next-schema/nodes/tableNodes.d.ts +2 -0
  59. package/dist/types/schema/index.d.ts +2 -2
  60. package/dist/types/schema/nodes/index.d.ts +2 -2
  61. package/dist/types/schema/nodes/tableNodes.d.ts +27 -0
  62. package/dist/types/validator-schema/generated/validatorSpec.d.ts +4 -0
  63. package/json-schema/v1/full.json +3 -0
  64. package/json-schema/v1/stage-0.json +3 -0
  65. package/package.json +2 -2
  66. package/dist/cjs/next-schema/nodes/table.js +0 -53
  67. package/dist/cjs/next-schema/nodes/tableCell.js +0 -50
  68. package/dist/cjs/next-schema/nodes/tableHeader.js +0 -50
  69. package/dist/cjs/next-schema/nodes/tableRow.js +0 -26
  70. package/dist/es2019/next-schema/nodes/table.js +0 -47
  71. package/dist/es2019/next-schema/nodes/tableCell.js +0 -44
  72. package/dist/es2019/next-schema/nodes/tableHeader.js +0 -44
  73. package/dist/es2019/next-schema/nodes/tableRow.js +0 -20
  74. package/dist/esm/next-schema/nodes/table.js +0 -47
  75. package/dist/esm/next-schema/nodes/tableCell.js +0 -44
  76. package/dist/esm/next-schema/nodes/tableHeader.js +0 -44
  77. package/dist/esm/next-schema/nodes/tableRow.js +0 -20
  78. package/dist/types/next-schema/nodes/table.d.ts +0 -1
  79. package/dist/types/next-schema/nodes/tableCell.d.ts +0 -1
  80. package/dist/types/next-schema/nodes/tableHeader.d.ts +0 -1
  81. package/dist/types/next-schema/nodes/tableRow.d.ts +0 -1
@@ -4,7 +4,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
4
4
  Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
- exports.toJSONTableHeader = exports.toJSONTableCell = exports.tableWithCustomWidth = exports.tableToJSON = exports.tableStage0 = exports.tableRow = exports.tablePrefixSelector = exports.tableHeaderSelector = exports.tableHeader = exports.tableCellSelector = exports.tableCellContentWrapperSelector = exports.tableCellContentDomSelector = exports.tableCell = exports.tableBackgroundColorPalette = exports.tableBackgroundColorNames = exports.tableBackgroundBorderColor = exports.table = exports.setGlobalTheme = exports.getCellDomAttrs = exports.getCellAttrs = void 0;
7
+ exports.toJSONTableHeader = exports.toJSONTableCell = exports.tableWithNestedTable = exports.tableWithCustomWidth = exports.tableToJSON = exports.tableStage0 = exports.tableRowWithNestedTable = exports.tableRow = exports.tablePrefixSelector = exports.tableHeaderWithNestedTable = exports.tableHeaderSelector = exports.tableHeader = exports.tableCellWithNestedTable = exports.tableCellSelector = exports.tableCellContentWrapperSelector = exports.tableCellContentDomSelector = exports.tableCell = exports.tableBackgroundColorPalette = exports.tableBackgroundColorNames = exports.tableBackgroundBorderColor = exports.table = exports.setGlobalTheme = exports.getCellDomAttrs = exports.getCellAttrs = void 0;
8
8
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
9
9
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
10
10
  var _editorPalette = require("../../utils/editor-palette");
@@ -211,40 +211,43 @@ var tableBackgroundColorNames = exports.tableBackgroundColorNames = new Map();
211
211
  * @name table_header_node
212
212
  */
213
213
 
214
- // TODO: Fix any, potential issue. ED-5048
215
- var createTableSpec = function createTableSpec() {
216
- return (0, _nodeTypes.table)({
217
- parseDOM: [{
218
- tag: 'table',
219
- getAttrs: function getAttrs(node) {
220
- var _dom$parentElement;
221
- var dom = node;
222
- var breakoutWrapper = (_dom$parentElement = dom.parentElement) === null || _dom$parentElement === void 0 ? void 0 : _dom$parentElement.parentElement;
223
- return {
224
- isNumberColumnEnabled: dom.getAttribute('data-number-column') === 'true',
225
- layout:
226
- // copying from editor
227
- dom.getAttribute('data-layout') || ( // copying from renderer
228
- breakoutWrapper === null || breakoutWrapper === void 0 ? void 0 : breakoutWrapper.getAttribute('data-layout')) || 'default',
229
- __autoSize: dom.getAttribute('data-autosize') === 'true',
230
- localId: dom.getAttribute('data-table-local-id') || _uuid.uuid.generate(),
231
- width: Number(dom.getAttribute('data-table-width')) || null,
232
- displayMode: dom.getAttribute('data-table-display-mode') || null
233
- };
234
- }
235
- }],
236
- toDOM: function toDOM(node) {
237
- var attrs = {
238
- 'data-number-column': node.attrs.isNumberColumnEnabled,
239
- 'data-layout': node.attrs.layout,
240
- 'data-autosize': node.attrs.__autoSize,
241
- 'data-table-local-id': node.attrs.localId,
242
- 'data-table-width': node.attrs.width,
243
- 'data-table-display-mode': node.attrs.displayMode
214
+ // table nodes with nested tables support
215
+
216
+ var tableNodeSpecOptions = {
217
+ parseDOM: [{
218
+ tag: 'table',
219
+ getAttrs: function getAttrs(node) {
220
+ var _dom$parentElement;
221
+ var dom = node;
222
+ var breakoutWrapper = (_dom$parentElement = dom.parentElement) === null || _dom$parentElement === void 0 ? void 0 : _dom$parentElement.parentElement;
223
+ return {
224
+ isNumberColumnEnabled: dom.getAttribute('data-number-column') === 'true',
225
+ layout:
226
+ // copying from editor
227
+ dom.getAttribute('data-layout') || ( // copying from renderer
228
+ breakoutWrapper === null || breakoutWrapper === void 0 ? void 0 : breakoutWrapper.getAttribute('data-layout')) || 'default',
229
+ __autoSize: dom.getAttribute('data-autosize') === 'true',
230
+ localId: dom.getAttribute('data-table-local-id') || _uuid.uuid.generate(),
231
+ width: Number(dom.getAttribute('data-table-width')) || null,
232
+ displayMode: dom.getAttribute('data-table-display-mode') || null
244
233
  };
245
- return ['table', attrs, ['tbody', 0]];
246
234
  }
247
- });
235
+ }],
236
+ toDOM: function toDOM(node) {
237
+ var attrs = {
238
+ 'data-number-column': node.attrs.isNumberColumnEnabled,
239
+ 'data-layout': node.attrs.layout,
240
+ 'data-autosize': node.attrs.__autoSize,
241
+ 'data-table-local-id': node.attrs.localId,
242
+ 'data-table-width': node.attrs.width,
243
+ 'data-table-display-mode': node.attrs.displayMode
244
+ };
245
+ return ['table', attrs, ['tbody', 0]];
246
+ }
247
+ };
248
+ // TODO: Fix any, potential issue. ED-5048
249
+ var createTableSpec = function createTableSpec() {
250
+ return (0, _nodeTypes.table)(tableNodeSpecOptions);
248
251
  };
249
252
 
250
253
  // TODO: assuming breaking changes aren't allowed, so retaining both exports
@@ -265,14 +268,15 @@ var tableToJSON = exports.tableToJSON = function tableToJSON(node) {
265
268
  }, {})
266
269
  };
267
270
  };
268
- var tableRow = exports.tableRow = (0, _nodeTypes.tableRow)({
271
+ var tableRowNodeSpecOptions = {
269
272
  parseDOM: [{
270
273
  tag: 'tr'
271
274
  }],
272
275
  toDOM: function toDOM() {
273
276
  return ['tr', 0];
274
277
  }
275
- });
278
+ };
279
+ var tableRow = exports.tableRow = (0, _nodeTypes.tableRow)(tableRowNodeSpecOptions);
276
280
  var cellAttrs = {
277
281
  colspan: {
278
282
  default: 1
@@ -287,7 +291,7 @@ var cellAttrs = {
287
291
  default: null
288
292
  }
289
293
  };
290
- var tableCell = exports.tableCell = (0, _nodeTypes.tableCell)({
294
+ var tableCellNodeSpecOptions = {
291
295
  parseDOM: [
292
296
  // Ignore number cell copied from renderer
293
297
  {
@@ -302,7 +306,8 @@ var tableCell = exports.tableCell = (0, _nodeTypes.tableCell)({
302
306
  toDOM: function toDOM(node) {
303
307
  return ['td', getCellDomAttrs(node), 0];
304
308
  }
305
- });
309
+ };
310
+ var tableCell = exports.tableCell = (0, _nodeTypes.tableCell)(tableCellNodeSpecOptions);
306
311
  var toJSONTableCell = exports.toJSONTableCell = function toJSONTableCell(node) {
307
312
  return {
308
313
  attrs: Object.keys(node.attrs).reduce(function (obj, key) {
@@ -313,7 +318,7 @@ var toJSONTableCell = exports.toJSONTableCell = function toJSONTableCell(node) {
313
318
  }, {})
314
319
  };
315
320
  };
316
- var tableHeader = exports.tableHeader = (0, _nodeTypes.tableHeader)({
321
+ var tableHeaderNodeSpecOptions = {
317
322
  parseDOM: [{
318
323
  tag: 'th',
319
324
  getAttrs: function getAttrs(dom) {
@@ -325,5 +330,12 @@ var tableHeader = exports.tableHeader = (0, _nodeTypes.tableHeader)({
325
330
  toDOM: function toDOM(node) {
326
331
  return ['th', getCellDomAttrs(node), 0];
327
332
  }
328
- });
329
- var toJSONTableHeader = exports.toJSONTableHeader = toJSONTableCell;
333
+ };
334
+ var tableHeader = exports.tableHeader = (0, _nodeTypes.tableHeader)(tableHeaderNodeSpecOptions);
335
+ var toJSONTableHeader = exports.toJSONTableHeader = toJSONTableCell;
336
+
337
+ // table nodes with nested table support
338
+ var tableWithNestedTable = exports.tableWithNestedTable = (0, _nodeTypes.tableWithNestedTable)(tableNodeSpecOptions);
339
+ var tableRowWithNestedTable = exports.tableRowWithNestedTable = (0, _nodeTypes.tableRowWithNestedTable)(tableRowNodeSpecOptions);
340
+ var tableCellWithNestedTable = exports.tableCellWithNestedTable = (0, _nodeTypes.tableCellWithNestedTable)(tableCellNodeSpecOptions);
341
+ var tableHeaderWithNestedTable = exports.tableHeaderWithNestedTable = (0, _nodeTypes.tableHeaderWithNestedTable)(tableHeaderNodeSpecOptions);
@@ -1739,6 +1739,10 @@ var breakout = exports.breakout = {
1739
1739
  mode: {
1740
1740
  type: 'enum',
1741
1741
  values: ['wide', 'full-width']
1742
+ },
1743
+ width: {
1744
+ type: 'number',
1745
+ optional: true
1742
1746
  }
1743
1747
  }
1744
1748
  }
@@ -1,5 +1,5 @@
1
1
  export { PanelType, AnnotationTypes, alignment, alignmentPositionMap, annotation, blockCard, blockquote, blockquoteWithList, blockquoteWithNestedCodeblockOrMedia, bodiedExtension, breakout, bulletList, bulletListSelector, caption, code, codeBlock, codeBlockToJSON, colorPalette, /** @deprecated [ED-15849] The extended palette is now rolled into the main one. Use `colorPalette` instead. */
2
- colorPaletteExtended, confluenceInlineComment, confluenceJiraIssue, confluenceUnsupportedBlock, confluenceUnsupportedInline, copyPrivateMediaAttributes, createSchema, dataConsumer, dataConsumerToJSON, date, decisionItem, decisionList, decisionListSelector, doc, em, embedCard, emoji, expand, expandWithNestedExpand, expandToJSON, extension, fragment, fragmentToJSON, hardBreak, heading, image, indentation, inlineCard, inlineExtension, inlineNodes, layoutColumn, layoutSection, link, linkToJSON, listItem, listItemWithTask, listItemWithDecisionStage0, media, mediaGroup, mediaSingle, mediaSingleWithCaption, mediaSingleWithWidthType, mediaSingleFull, mediaSingleSpec, mediaInline, mediaSingleToJSON, mediaToJSON, mention, mentionToJSON, nestedExpand, orderedList, orderedListSelector, orderedListWithOrder, extendedPanel, panelWithBlockquoteStage0, paragraph, placeholder, rule, sanitizeNodes, getCellAttrs, getCellDomAttrs, status, strike, strong, subsup, table, tableStage0, tableWithCustomWidth, tableBackgroundBorderColor, tableBackgroundColorNames, tableBackgroundColorPalette, tableCell, tableCellContentDomSelector, tableCellContentWrapperSelector, tableCellSelector, tableHeader, tableHeaderSelector, tablePrefixSelector, tableRow, tableToJSON, taskItem, taskList, taskListSelector, text, textColor, toJSONTableCell, toJSONTableHeader, typeAheadQuery, underline, unknownBlock, unsupportedBlock, unsupportedInline, unsupportedNodeTypesForMediaCards, buildAnnotationMarkDataAttributes, AnnotationMarkStates, unsupportedMark, unsupportedNodeAttribute, border, borderColorPalette, extensionFrame, multiBodiedExtension, backgroundColor, backgroundColorPalette } from './schema';
2
+ colorPaletteExtended, confluenceInlineComment, confluenceJiraIssue, confluenceUnsupportedBlock, confluenceUnsupportedInline, copyPrivateMediaAttributes, createSchema, dataConsumer, dataConsumerToJSON, date, decisionItem, decisionList, decisionListSelector, doc, em, embedCard, emoji, expand, expandWithNestedExpand, expandToJSON, extension, fragment, fragmentToJSON, hardBreak, heading, image, indentation, inlineCard, inlineExtension, inlineNodes, layoutColumn, layoutSection, link, linkToJSON, listItem, listItemWithTask, listItemWithDecisionStage0, media, mediaGroup, mediaSingle, mediaSingleWithCaption, mediaSingleWithWidthType, mediaSingleFull, mediaSingleSpec, mediaInline, mediaSingleToJSON, mediaToJSON, mention, mentionToJSON, nestedExpand, orderedList, orderedListSelector, orderedListWithOrder, extendedPanel, panelWithBlockquoteStage0, paragraph, placeholder, rule, sanitizeNodes, getCellAttrs, getCellDomAttrs, status, strike, strong, subsup, table, tableStage0, tableWithCustomWidth, tableBackgroundBorderColor, tableBackgroundColorNames, tableBackgroundColorPalette, tableCell, tableCellContentDomSelector, tableCellContentWrapperSelector, tableCellSelector, tableHeader, tableHeaderSelector, tablePrefixSelector, tableRow, tableToJSON, taskItem, taskList, taskListSelector, text, textColor, toJSONTableCell, toJSONTableHeader, typeAheadQuery, underline, unknownBlock, unsupportedBlock, unsupportedInline, unsupportedNodeTypesForMediaCards, buildAnnotationMarkDataAttributes, AnnotationMarkStates, unsupportedMark, unsupportedNodeAttribute, border, borderColorPalette, extensionFrame, multiBodiedExtension, backgroundColor, backgroundColorPalette, tableWithNestedTable, tableRowWithNestedTable, tableCellWithNestedTable, tableHeaderWithNestedTable } from './schema';
3
3
  export { B100, B400, B50, B500, B75, G200, G300, G400, G50, G500, G75, N0, N20, N200, N30, N300, N40, N50, N500, N60, N80, N800, N90, P100, P300, P400, P50, P500, P75, R100, R300, R400, R50, R500, R75, T100, T300, T50, T500, T75, Y200, Y400, Y50, Y500, Y75, acNameToEmoji, acShortcutToEmoji, emojiIdToAcName, generateUuid, getEmojiAcName, getLinkMatch, hexToRgb, hexToRgba, isHex, isRgb, isSafeUrl, linkify, linkifyMatch, normalizeHexColor, normalizeUrl, rgbToHex, uuid, getDarkModeLCHColor } from './utils';
4
4
 
5
5
  // ADF createPMSpecFactory
@@ -44,6 +44,9 @@ export const breakout = createPMMarkSpecFactory({
44
44
  attrs: {
45
45
  mode: {
46
46
  default: 'wide'
47
+ },
48
+ width: {
49
+ default: null
47
50
  }
48
51
  },
49
52
  inclusive: false,
@@ -1030,6 +1030,34 @@ export const table = createPMNodeSpecFactory({
1030
1030
  isolating: true,
1031
1031
  tableRole: 'table'
1032
1032
  });
1033
+ export const tableWithNestedTable = createPMNodeSpecFactory({
1034
+ content: 'tableRow+',
1035
+ marks: 'unsupportedMark unsupportedNodeAttribute',
1036
+ group: 'block',
1037
+ attrs: {
1038
+ displayMode: {
1039
+ default: null
1040
+ },
1041
+ isNumberColumnEnabled: {
1042
+ default: false
1043
+ },
1044
+ layout: {
1045
+ default: 'default'
1046
+ },
1047
+ localId: {
1048
+ default: ''
1049
+ },
1050
+ width: {
1051
+ default: null
1052
+ },
1053
+ __autoSize: {
1054
+ default: false
1055
+ }
1056
+ },
1057
+ selectable: true,
1058
+ isolating: true,
1059
+ tableRole: 'table'
1060
+ });
1033
1061
  export const tableCell = createPMNodeSpecFactory({
1034
1062
  content: '(paragraph | panel | blockquote | orderedList | bulletList | rule | heading | codeBlock | mediaSingle | mediaGroup | decisionList | taskList | blockCard | embedCard | extension | nestedExpand | unsupportedBlock)+',
1035
1063
  marks: 'alignment unsupportedMark unsupportedNodeAttribute dataConsumer fragment',
@@ -1051,6 +1079,27 @@ export const tableCell = createPMNodeSpecFactory({
1051
1079
  isolating: true,
1052
1080
  tableRole: 'cell'
1053
1081
  });
1082
+ export const tableCellWithNestedTable = createPMNodeSpecFactory({
1083
+ content: '(paragraph | panel | blockquote | orderedList | bulletList | rule | heading | codeBlock | mediaSingle | mediaGroup | decisionList | taskList | blockCard | embedCard | extension | nestedExpand | unsupportedBlock | table)+',
1084
+ marks: 'alignment unsupportedMark unsupportedNodeAttribute dataConsumer fragment',
1085
+ attrs: {
1086
+ colspan: {
1087
+ default: 1
1088
+ },
1089
+ rowspan: {
1090
+ default: 1
1091
+ },
1092
+ colwidth: {
1093
+ default: null
1094
+ },
1095
+ background: {
1096
+ default: null
1097
+ }
1098
+ },
1099
+ selectable: false,
1100
+ isolating: true,
1101
+ tableRole: 'cell'
1102
+ });
1054
1103
  export const tableHeader = createPMNodeSpecFactory({
1055
1104
  content: '(paragraph | panel | blockquote | orderedList | bulletList | rule | heading | codeBlock | mediaSingle | mediaGroup | decisionList | taskList | blockCard | embedCard | extension | nestedExpand)+',
1056
1105
  marks: 'alignment unsupportedMark unsupportedNodeAttribute dataConsumer fragment',
@@ -1072,12 +1121,39 @@ export const tableHeader = createPMNodeSpecFactory({
1072
1121
  isolating: true,
1073
1122
  tableRole: 'header_cell'
1074
1123
  });
1124
+ export const tableHeaderWithNestedTable = createPMNodeSpecFactory({
1125
+ content: '(paragraph | panel | blockquote | orderedList | bulletList | rule | heading | codeBlock | mediaSingle | mediaGroup | decisionList | taskList | blockCard | embedCard | extension | nestedExpand | table)+',
1126
+ marks: 'alignment unsupportedMark unsupportedNodeAttribute dataConsumer fragment',
1127
+ attrs: {
1128
+ colspan: {
1129
+ default: 1
1130
+ },
1131
+ rowspan: {
1132
+ default: 1
1133
+ },
1134
+ colwidth: {
1135
+ default: null
1136
+ },
1137
+ background: {
1138
+ default: null
1139
+ }
1140
+ },
1141
+ selectable: false,
1142
+ isolating: true,
1143
+ tableRole: 'header_cell'
1144
+ });
1075
1145
  export const tableRow = createPMNodeSpecFactory({
1076
1146
  content: '(tableCell | tableHeader)+',
1077
1147
  marks: 'unsupportedMark unsupportedNodeAttribute',
1078
1148
  selectable: false,
1079
1149
  tableRole: 'row'
1080
1150
  });
1151
+ export const tableRowWithNestedTable = createPMNodeSpecFactory({
1152
+ content: '(tableCell | tableHeader)+',
1153
+ marks: 'unsupportedMark unsupportedNodeAttribute',
1154
+ selectable: false,
1155
+ tableRole: 'row'
1156
+ });
1081
1157
  export const taskItem = createPMNodeSpecFactory({
1082
1158
  content: 'inline*',
1083
1159
  marks: '_',
@@ -15,7 +15,7 @@ import { mediaSingle } from '../nodes/mediaSingle';
15
15
  import { panel } from '../nodes/panel';
16
16
  import { paragraph } from '../nodes/paragraph';
17
17
  import { rule } from '../nodes/rule';
18
- import { table } from '../nodes/table';
18
+ import { table } from '../nodes/tableNodes';
19
19
  import { taskList } from '../nodes/task';
20
20
  import { unsupportedBlock } from '../nodes/unsupportedBlock';
21
21
 
@@ -32,6 +32,8 @@ import { unsupportedBlock } from '../nodes/unsupportedBlock';
32
32
  * - no base heading
33
33
  * - no base expand
34
34
  */
35
- export const blockContentGroup = adfNodeGroup('block_content', [blockCard, paragraph.use('with_no_marks'), paragraph.use('with_alignment'), paragraph.use('with_indentation'), mediaSingle.use('caption'), mediaSingle.use('full'), codeBlock.use('with_no_marks'), taskList, bulletList, orderedList, heading.use('with_no_marks'), heading.use('with_alignment'), heading.use('with_indentation'), mediaGroup, decisionList, rule, panel, panel.use('with_nested_blockquote'), blockquote, blockquote.use('without_nested_codeblock_or_media'), extension.use('with_marks'), embedCard, table, expand.use('without_nested_expand'), expand.use('with_no_mark'), bodiedExtension.use('with_marks'), confluenceUnsupportedBlock, unsupportedBlock], {
35
+ export const blockContentGroup = adfNodeGroup('block_content', [blockCard, paragraph.use('with_no_marks'), paragraph.use('with_alignment'), paragraph.use('with_indentation'), mediaSingle.use('caption'), mediaSingle.use('full'), codeBlock.use('with_no_marks'), taskList, bulletList, orderedList, heading.use('with_no_marks'), heading.use('with_alignment'), heading.use('with_indentation'), mediaGroup, decisionList, rule, panel, panel.use('with_nested_blockquote'), blockquote, blockquote.use('without_nested_codeblock_or_media'), extension.use('with_marks'), embedCard, table,
36
+ // @ts-expect-error - types don't deal well with circular references for the variant
37
+ table.use('with_nested_table'), expand.use('without_nested_expand'), expand.use('with_no_mark'), bodiedExtension.use('with_marks'), confluenceUnsupportedBlock, unsupportedBlock], {
36
38
  ignore: ['pm-spec', 'json-schema']
37
39
  });
@@ -15,10 +15,12 @@ import { mediaSingle } from '../nodes/mediaSingle';
15
15
  import { panel } from '../nodes/panel';
16
16
  import { paragraph } from '../nodes/paragraph';
17
17
  import { rule } from '../nodes/rule';
18
- import { table } from '../nodes/table';
18
+ import { table } from '../nodes/tableNodes';
19
19
  import { taskList } from '../nodes/task';
20
20
  import { unsupportedBlock } from '../nodes/unsupportedBlock';
21
- export const blockGroup = adfNodeGroup('block', [blockCard, codeBlock, codeBlock.use('with_marks'), codeBlock.use('with_no_marks'), mediaSingle, mediaSingle.use('caption'), mediaSingle.use('full'), mediaSingle.use('width_type'), paragraph, paragraph.use('with_alignment'), paragraph.use('with_indentation'), paragraph.use('with_no_marks'), taskList, orderedList, bulletList, blockquote, blockquote.use('legacy'), blockquote.use('without_nested_codeblock_or_media'), decisionList, embedCard, extension, extension.use('with_marks'), heading, heading.use('with_indentation'), heading.use('with_no_marks'), heading.use('with_alignment'), mediaGroup, rule, panel, panel.use('with_nested_blockquote'), table, bodiedExtension, bodiedExtension.use('with_marks'), expand, expand.use('with_no_mark'), expand.use('with_breakout_mark'), expand.use('without_nested_expand'), confluenceUnsupportedBlock, unsupportedBlock], {
21
+ export const blockGroup = adfNodeGroup('block', [blockCard, codeBlock, codeBlock.use('with_marks'), codeBlock.use('with_no_marks'), mediaSingle, mediaSingle.use('caption'), mediaSingle.use('full'), mediaSingle.use('width_type'), paragraph, paragraph.use('with_alignment'), paragraph.use('with_indentation'), paragraph.use('with_no_marks'), taskList, orderedList, bulletList, blockquote, blockquote.use('legacy'), blockquote.use('without_nested_codeblock_or_media'), decisionList, embedCard, extension, extension.use('with_marks'), heading, heading.use('with_indentation'), heading.use('with_no_marks'), heading.use('with_alignment'), mediaGroup, rule, panel, panel.use('with_nested_blockquote'), table,
22
+ // @ts-expect-error - types don't deal well with circular references for the variant
23
+ table.use('with_nested_table'), bodiedExtension, bodiedExtension.use('with_marks'), expand, expand.use('with_no_mark'), expand.use('with_breakout_mark'), expand.use('without_nested_expand'), confluenceUnsupportedBlock, unsupportedBlock], {
22
24
  // @DSLCompatibilityException
23
25
  // Block group in PM doesn't match ADF
24
26
  ignore: ['validator-spec']
@@ -12,13 +12,15 @@ import { mediaSingle } from '../nodes/mediaSingle';
12
12
  import { panel } from '../nodes/panel';
13
13
  import { paragraph } from '../nodes/paragraph';
14
14
  import { rule } from '../nodes/rule';
15
- import { table } from '../nodes/table';
15
+ import { table } from '../nodes/tableNodes';
16
16
  import { taskList } from '../nodes/task';
17
17
  import { unsupportedBlock } from '../nodes/unsupportedBlock';
18
18
 
19
19
  // Not an actual group, but a collection of nodes that can't be nested inside each other
20
20
  // TODO: make it an actual group
21
- export const nonNestableBlockContent = [paragraph.use('with_no_marks'), panel, blockquote, orderedList, bulletList, rule, heading.use('with_no_marks'), codeBlock.use('with_no_marks'), mediaGroup, mediaSingle.use('caption'), mediaSingle.use('full'), decisionList, taskList, table, blockCard, embedCard, extension.use('with_marks'), unsupportedBlock];
21
+ export const nonNestableBlockContent = [paragraph.use('with_no_marks'), panel, blockquote, orderedList, bulletList, rule, heading.use('with_no_marks'), codeBlock.use('with_no_marks'), mediaGroup, mediaSingle.use('caption'), mediaSingle.use('full'), decisionList, taskList, table,
22
+ // @ts-expect-error - types don't deal well with circular references for the variant
23
+ table.use('with_nested_table'), blockCard, embedCard, extension.use('with_marks'), unsupportedBlock];
22
24
 
23
25
  /**
24
26
  * @DSLCompatibilityException
@@ -15,7 +15,7 @@ import { paragraph } from '../nodes/paragraph';
15
15
  import { rule } from '../nodes/rule';
16
16
  import { taskList } from '../nodes/task';
17
17
  import { unsupportedBlock } from '../nodes/unsupportedBlock';
18
- const tableCellContentNodes = [paragraph.use('with_no_marks'), paragraph.use('with_alignment'), panel, blockquote, orderedList, bulletList, rule, heading.use('with_no_marks'), heading.use('with_alignment'), heading.use('with_indentation'), codeBlock.use('with_no_marks'), mediaSingle.use('caption'), mediaSingle.use('full'), mediaGroup, decisionList, taskList, blockCard, embedCard, extension.use('with_marks'), nestedExpand.use('content'), nestedExpand.use('with_no_marks')];
18
+ export const tableCellContentNodes = [paragraph.use('with_no_marks'), paragraph.use('with_alignment'), panel, blockquote, orderedList, bulletList, rule, heading.use('with_no_marks'), heading.use('with_alignment'), heading.use('with_indentation'), codeBlock.use('with_no_marks'), mediaSingle.use('caption'), mediaSingle.use('full'), mediaGroup, decisionList, taskList, blockCard, embedCard, extension.use('with_marks'), nestedExpand.use('content'), nestedExpand.use('with_no_marks')];
19
19
 
20
20
  // This is not an actual group, but a collection of nodes
21
21
  // @DSLCompatibilityException JSON Schema and PM Spec are not in sync. We need to fix it
@@ -7,6 +7,11 @@ export const breakout = adfMark('breakout').define({
7
7
  type: 'enum',
8
8
  values: ['wide', 'full-width'],
9
9
  default: 'wide'
10
+ },
11
+ width: {
12
+ type: 'number',
13
+ default: null,
14
+ optional: true
10
15
  }
11
16
  }
12
17
  });
@@ -17,7 +17,7 @@ import { mediaSingle } from './mediaSingle';
17
17
  import { panel } from './panel';
18
18
  import { paragraph } from './paragraph';
19
19
  import { rule } from './rule';
20
- import { table } from './table';
20
+ import { table } from './tableNodes';
21
21
  import { taskList } from './task';
22
22
  import { unsupportedBlock } from './unsupportedBlock';
23
23
  export const extensionFrame = adfNode('extensionFrame').define({
@@ -30,7 +30,9 @@ export const extensionFrame = adfNode('extensionFrame').define({
30
30
  // packages/adf-schema-generator/src/transforms/adfToPm/buildPmSpec.ts
31
31
  marks: [dataConsumer, fragment, unsupportedMark, unsupportedNodeAttribute],
32
32
  attrs: {},
33
- content: [$onePlus($or(paragraph.use('with_no_marks'), panel, blockquote, orderedList, bulletList, rule, heading.use('with_no_marks'), codeBlock.use('with_no_marks'), mediaGroup, mediaSingle.use('full'), mediaSingle.use('caption'), decisionList, taskList, table, extension.use('with_marks'), bodiedExtension.use('with_marks'), unsupportedBlock, blockCard, embedCard))],
33
+ content: [$onePlus($or(paragraph.use('with_no_marks'), panel, blockquote, orderedList, bulletList, rule, heading.use('with_no_marks'), codeBlock.use('with_no_marks'), mediaGroup, mediaSingle.use('full'), mediaSingle.use('caption'), decisionList, taskList, table,
34
+ // @ts-expect-error - types don't deal well with circular references for the variant
35
+ table.use('with_nested_table'), extension.use('with_marks'), bodiedExtension.use('with_marks'), unsupportedBlock, blockCard, embedCard))],
34
36
  DANGEROUS_MANUAL_OVERRIDE: {
35
37
  'validator-spec': {
36
38
  'props.content.allowUnsupportedBlock': {
@@ -0,0 +1,160 @@
1
+ import { $onePlus, $or, adfNode } from '@atlaskit/adf-schema-generator';
2
+ import { fragment } from '../marks/fragment';
3
+ import { unsupportedMark } from '../marks/unsupportedMark';
4
+ import { unsupportedNodeAttribute } from '../marks/unsupportedNodeAttribute';
5
+ import { tableCellContentPseudoGroup, tableCellContentNodes, tableHeaderContentPseudoGroup } from '../groups/tableCellContentPseudoGroup';
6
+ import { tableCellContent } from './tableCellContent';
7
+ import { nestedExpand } from './nestedExpand';
8
+ import { unsupportedBlock } from './unsupportedBlock';
9
+
10
+ // Declare early to allow for circular references within the file
11
+ const table = adfNode('table');
12
+ const tableCell = adfNode('tableCell').define({
13
+ isolating: true,
14
+ selectable: false,
15
+ tableRole: 'cell',
16
+ marks: [unsupportedMark, unsupportedNodeAttribute],
17
+ attrs: {
18
+ colspan: {
19
+ type: 'number',
20
+ default: 1,
21
+ optional: true
22
+ },
23
+ rowspan: {
24
+ type: 'number',
25
+ default: 1,
26
+ optional: true
27
+ },
28
+ colwidth: {
29
+ type: 'array',
30
+ items: {
31
+ type: 'number'
32
+ },
33
+ default: null,
34
+ optional: true
35
+ },
36
+ background: {
37
+ type: 'string',
38
+ default: null,
39
+ optional: true
40
+ }
41
+ },
42
+ content: [tableCellContentPseudoGroup],
43
+ DANGEROUS_MANUAL_OVERRIDE: {
44
+ 'validator-spec': {
45
+ required: {
46
+ reason: '@DSLCompatibilityException - required for tableCell validator spec',
47
+ value: ['content']
48
+ }
49
+ }
50
+ }
51
+ }).variant('with_nested_table', {
52
+ content: [$onePlus($or(...tableCellContentNodes, unsupportedBlock, table))],
53
+ ignore: ['json-schema', 'validator-spec']
54
+ });
55
+ const tableHeader = adfNode('tableHeader').define({
56
+ isolating: true,
57
+ selectable: false,
58
+ tableRole: 'header_cell',
59
+ marks: [unsupportedMark, unsupportedNodeAttribute],
60
+ attrs: {
61
+ colspan: {
62
+ type: 'number',
63
+ default: 1,
64
+ optional: true
65
+ },
66
+ rowspan: {
67
+ type: 'number',
68
+ default: 1,
69
+ optional: true
70
+ },
71
+ colwidth: {
72
+ type: 'array',
73
+ items: {
74
+ type: 'number'
75
+ },
76
+ default: null,
77
+ optional: true
78
+ },
79
+ background: {
80
+ type: 'string',
81
+ default: null,
82
+ optional: true
83
+ }
84
+ },
85
+ content: [tableHeaderContentPseudoGroup],
86
+ DANGEROUS_MANUAL_OVERRIDE: {
87
+ 'validator-spec': {
88
+ required: {
89
+ reason: '@DSLCompatibilityException - required for tableHeader validator spec',
90
+ value: ['content']
91
+ }
92
+ }
93
+ }
94
+ }).variant('with_nested_table', {
95
+ content: [$onePlus($or(...tableCellContentNodes, nestedExpand, table))],
96
+ ignore: ['json-schema', 'validator-spec']
97
+ });
98
+ const tableRow = adfNode('tableRow').define({
99
+ selectable: false,
100
+ marks: [unsupportedMark, unsupportedNodeAttribute],
101
+ content: [$onePlus($or(tableCell, tableHeader, tableCellContent))],
102
+ tableRole: 'row',
103
+ DANGEROUS_MANUAL_OVERRIDE: {
104
+ 'validator-spec': {
105
+ 'props.content.minItems': {
106
+ reason: '@DSLCompatibilityException - required for tableRow validator spec',
107
+ remove: true
108
+ }
109
+ }
110
+ }
111
+ }).variant('with_nested_table', {
112
+ content: [$onePlus($or(tableCell.use('with_nested_table'), tableHeader.use('with_nested_table')))],
113
+ ignore: ['json-schema', 'validator-spec']
114
+ });
115
+ table.define({
116
+ isolating: true,
117
+ selectable: true,
118
+ tableRole: 'table',
119
+ marks: [fragment, unsupportedMark, unsupportedNodeAttribute],
120
+ attrs: {
121
+ displayMode: {
122
+ type: 'enum',
123
+ values: ['default', 'fixed'],
124
+ default: null,
125
+ optional: true
126
+ },
127
+ isNumberColumnEnabled: {
128
+ type: 'boolean',
129
+ default: false,
130
+ optional: true
131
+ },
132
+ layout: {
133
+ type: 'enum',
134
+ values: ['wide', 'full-width', 'center', 'align-end', 'align-start', 'default'],
135
+ default: 'default',
136
+ optional: true
137
+ },
138
+ localId: {
139
+ type: 'string',
140
+ minLength: 1,
141
+ default: '',
142
+ optional: true
143
+ },
144
+ width: {
145
+ type: 'number',
146
+ default: null,
147
+ optional: true
148
+ },
149
+ __autoSize: {
150
+ type: 'boolean',
151
+ default: false,
152
+ optional: true
153
+ }
154
+ },
155
+ content: [$onePlus($or(tableRow))]
156
+ }).variant('with_nested_table', {
157
+ content: [$onePlus($or(tableRow.use('with_nested_table')))],
158
+ ignore: ['json-schema', 'validator-spec']
159
+ });
160
+ export { table };
@@ -1,5 +1,5 @@
1
1
  import memoizeOne from 'memoize-one';
2
- import { extensionFrame, layoutSectionWithSingleColumn, multiBodiedExtension, expandWithNestedExpand, blockquoteWithNestedCodeblockOrMedia, listItemWithDecisionStage0, panelWithBlockquoteStage0 } from './nodes';
2
+ import { extensionFrame, layoutSectionWithSingleColumn, multiBodiedExtension, expandWithNestedExpand, blockquoteWithNestedCodeblockOrMedia, listItemWithDecisionStage0, panelWithBlockquoteStage0, tableWithNestedTable, tableRowWithNestedTable, tableCellWithNestedTable, tableHeaderWithNestedTable } from './nodes';
3
3
  import { createSchema } from './create-schema';
4
4
  const getDefaultSchemaConfig = () => {
5
5
  const defaultSchemaConfig = {
@@ -21,7 +21,11 @@ export const getSchemaBasedOnStage = memoizeOne((stage = 'final') => {
21
21
  expand: expandWithNestedExpand,
22
22
  blockquote: blockquoteWithNestedCodeblockOrMedia,
23
23
  listItem: listItemWithDecisionStage0,
24
- panel: panelWithBlockquoteStage0(true)
24
+ panel: panelWithBlockquoteStage0(true),
25
+ table: tableWithNestedTable,
26
+ tableRow: tableRowWithNestedTable,
27
+ tableCell: tableCellWithNestedTable,
28
+ tableHeader: tableHeaderWithNestedTable
25
29
  };
26
30
  }
27
31
  return createSchema(defaultSchemaConfig);
@@ -1,4 +1,4 @@
1
- export { PanelType, blockCard, blockquote, blockquoteWithList, blockquoteWithNestedCodeblockOrMedia, bodiedExtension, bulletList, bulletListSelector, caption, codeBlock, codeBlockToJSON, confluenceJiraIssue, confluenceUnsupportedBlock, confluenceUnsupportedInline, copyPrivateMediaAttributes, date, decisionItem, decisionList, decisionListSelector, doc, embedCard, emoji, expand, expandWithNestedExpand, expandToJSON, extension, hardBreak, heading, image, inlineCard, inlineExtension, layoutColumn, layoutSection, layoutSectionWithSingleColumn, listItem, listItemWithTask, listItemWithDecisionStage0, media, mediaGroup, mediaSingle, mediaSingleSpec, mediaInline, mediaSingleWithCaption, mediaSingleWithWidthType, mediaSingleFull, mediaSingleToJSON, mediaToJSON, mention, mentionToJSON, nestedExpand, orderedList, orderedListSelector, orderedListWithOrder, extendedPanel, panelWithBlockquoteStage0, paragraph, placeholder, rule, getCellAttrs, getCellDomAttrs, status, table, tableStage0, tableWithCustomWidth, tableBackgroundBorderColor, tableBackgroundColorNames, tableBackgroundColorPalette, tableCell, tableCellContentDomSelector, tableCellContentWrapperSelector, tableCellSelector, tableHeader, tableHeaderSelector, tablePrefixSelector, tableRow, tableToJSON, taskItem, taskList, taskListSelector, text, toJSONTableCell, toJSONTableHeader, unknownBlock, unsupportedBlock, unsupportedInline, extensionFrame, multiBodiedExtension } from './nodes';
1
+ export { PanelType, blockCard, blockquote, blockquoteWithList, blockquoteWithNestedCodeblockOrMedia, bodiedExtension, bulletList, bulletListSelector, caption, codeBlock, codeBlockToJSON, confluenceJiraIssue, confluenceUnsupportedBlock, confluenceUnsupportedInline, copyPrivateMediaAttributes, date, decisionItem, decisionList, decisionListSelector, doc, embedCard, emoji, expand, expandWithNestedExpand, expandToJSON, extension, hardBreak, heading, image, inlineCard, inlineExtension, layoutColumn, layoutSection, layoutSectionWithSingleColumn, listItem, listItemWithTask, listItemWithDecisionStage0, media, mediaGroup, mediaSingle, mediaSingleSpec, mediaInline, mediaSingleWithCaption, mediaSingleWithWidthType, mediaSingleFull, mediaSingleToJSON, mediaToJSON, mention, mentionToJSON, nestedExpand, orderedList, orderedListSelector, orderedListWithOrder, extendedPanel, panelWithBlockquoteStage0, paragraph, placeholder, rule, getCellAttrs, getCellDomAttrs, status, table, tableStage0, tableWithCustomWidth, tableBackgroundBorderColor, tableBackgroundColorNames, tableBackgroundColorPalette, tableCell, tableCellContentDomSelector, tableCellContentWrapperSelector, tableCellSelector, tableHeader, tableHeaderSelector, tablePrefixSelector, tableRow, tableToJSON, taskItem, taskList, taskListSelector, text, toJSONTableCell, toJSONTableHeader, unknownBlock, unsupportedBlock, unsupportedInline, extensionFrame, multiBodiedExtension, tableWithNestedTable, tableRowWithNestedTable, tableCellWithNestedTable, tableHeaderWithNestedTable } from './nodes';
2
2
  export { AnnotationTypes, alignment, alignmentPositionMap, annotation, breakout, code, colorPalette, /** @deprecated [ED-15849] The extended palette is now rolled into the main one. Use `colorPalette` instead. */
3
3
  colorPaletteExtended, confluenceInlineComment, dataConsumer, dataConsumerToJSON, em, fragment, fragmentToJSON, indentation, link, linkToJSON, strike, strong, subsup, textColor, typeAheadQuery, underline, buildAnnotationMarkDataAttributes, AnnotationMarkStates, unsupportedMark, unsupportedNodeAttribute, border, borderColorPalette, backgroundColor, backgroundColorPalette } from './marks';
4
4
  export { unsupportedNodeTypesForMediaCards } from './unsupported';
@@ -10,15 +10,19 @@ export const breakout = breakoutFactory({
10
10
  tag: 'div.fabric-editor-breakout-mark',
11
11
  getAttrs(dom) {
12
12
  const mode = dom.getAttribute('data-mode');
13
+ const width = dom.getAttribute('data-width');
13
14
  return {
14
- mode: allowedTypes.indexOf(mode || '') === -1 ? 'wide' : mode
15
+ mode: allowedTypes.indexOf(mode || '') === -1 ? 'wide' : mode,
16
+ width: width ? parseInt(width) : null
15
17
  };
16
18
  }
17
19
  }],
18
20
  toDOM(mark) {
21
+ var _mark$attrs;
19
22
  return ['div', {
20
23
  class: 'fabric-editor-breakout-mark',
21
- 'data-mode': mark.attrs.mode
24
+ 'data-mode': mark.attrs.mode,
25
+ 'data-width': (_mark$attrs = mark.attrs) === null || _mark$attrs === void 0 ? void 0 : _mark$attrs.width
22
26
  }, 0];
23
27
  }
24
28
  });
@@ -23,7 +23,7 @@ export { media, copyPrivateAttributes as copyPrivateMediaAttributes, toJSON as m
23
23
  export { mediaGroup } from './media-group';
24
24
  export { mediaInline } from './media-inline';
25
25
  export { mediaSingle, mediaSingleSpec, mediaSingleWithCaption, mediaSingleWithWidthType, mediaSingleFull, toJSON as mediaSingleToJSON } from './media-single';
26
- export { table, tableStage0, tableWithCustomWidth, tableToJSON, tableCell, toJSONTableCell, tableHeader, toJSONTableHeader, tableRow, tableBackgroundColorPalette, tableBackgroundBorderColor, tableBackgroundColorNames, getCellAttrs, getCellDomAttrs, tablePrefixSelector, tableCellSelector, tableHeaderSelector, tableCellContentWrapperSelector, tableCellContentDomSelector } from './tableNodes';
26
+ export { table, tableWithNestedTable, tableRowWithNestedTable, tableCellWithNestedTable, tableHeaderWithNestedTable, tableStage0, tableWithCustomWidth, tableToJSON, tableCell, toJSONTableCell, tableHeader, toJSONTableHeader, tableRow, tableBackgroundColorPalette, tableBackgroundBorderColor, tableBackgroundColorNames, getCellAttrs, getCellDomAttrs, tablePrefixSelector, tableCellSelector, tableHeaderSelector, tableCellContentWrapperSelector, tableCellContentDomSelector } from './tableNodes';
27
27
  export { decisionList, decisionListSelector } from './decision-list';
28
28
  export { decisionItem } from './decision-item';
29
29
  export { taskList, taskListSelector } from './task-list';