@superdoc-dev/cli 0.2.0-next.34 → 0.2.0-next.36

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 (2) hide show
  1. package/dist/index.js +923 -470
  2. package/package.json +6 -6
package/dist/index.js CHANGED
@@ -101805,9 +101805,9 @@ var init_remark_gfm_CQ3Jg4PR_es = __esm(() => {
101805
101805
  init_remark_gfm_z_sDF4ss_es();
101806
101806
  });
101807
101807
 
101808
- // ../../packages/superdoc/dist/chunks/src-DoNUa3rb.es.js
101809
- var exports_src_DoNUa3rb_es = {};
101810
- __export(exports_src_DoNUa3rb_es, {
101808
+ // ../../packages/superdoc/dist/chunks/src-De1yZkuR.es.js
101809
+ var exports_src_De1yZkuR_es = {};
101810
+ __export(exports_src_De1yZkuR_es, {
101811
101811
  zt: () => defineMark,
101812
101812
  z: () => cM,
101813
101813
  yt: () => removeAwarenessStates,
@@ -115653,203 +115653,18 @@ function toTableFailure(code$1, message, details) {
115653
115653
  }
115654
115654
  };
115655
115655
  }
115656
- function resolveTable2(tr, tablePos, tableNode) {
115657
- if (tableNode && tableNode.type && tableNode.type.name === "table")
115658
- return tableNode;
115659
- if (typeof tablePos === "number") {
115660
- const current = tr.doc.nodeAt(tablePos);
115661
- if (current && current.type.name === "table")
115662
- return current;
115663
- }
115664
- return null;
115656
+ function generateParaId() {
115657
+ return Array.from({ length: 8 }, () => Math.floor(Math.random() * 16).toString(16)).join("").toUpperCase();
115665
115658
  }
115666
- function pickTemplateRowForAppend(tableNode, schema) {
115667
- const RowType = schema.nodes.tableRow;
115668
- const rows = [];
115669
- tableNode.descendants((child) => {
115670
- if (child.type === RowType)
115671
- rows.push(child);
115672
- });
115673
- if (!rows.length)
115659
+ function createSeparatorParagraph(schema) {
115660
+ const paragraphType = schema.nodes.paragraph;
115661
+ if (!paragraphType)
115674
115662
  return null;
115675
- for (let i$1 = rows.length - 1;i$1 >= 0; i$1--) {
115676
- const r$1 = rows[i$1];
115677
- if (r$1.content?.content?.some((c$3) => c$3.type.name === "tableCell"))
115678
- return r$1;
115679
- }
115680
- return rows[rows.length - 1];
115681
- }
115682
- function extractRowTemplateFormatting(cellNode, schema) {
115683
- const ParagraphType = schema.nodes.paragraph;
115684
- let blockType = ParagraphType;
115685
- let blockAttrs = null;
115686
- let textMarks = [];
115687
- const blocks2 = cellNode?.content?.content || [];
115688
- for (const block of blocks2) {
115689
- if (block.type === ParagraphType || block.type.name === "heading") {
115690
- blockType = block.type || ParagraphType;
115691
- blockAttrs = block.attrs || null;
115692
- }
115693
- let foundText = null;
115694
- block.descendants?.((n) => {
115695
- if (!foundText && n.isText)
115696
- foundText = n;
115697
- });
115698
- if (foundText) {
115699
- textMarks = foundText.marks ? Array.from(foundText.marks) : [];
115700
- break;
115701
- }
115702
- }
115703
- if (!blockType || !blockType.validContent)
115704
- blockType = ParagraphType;
115705
- return {
115706
- blockType,
115707
- blockAttrs,
115708
- textMarks
115663
+ const separatorAttrs = {
115664
+ sdBlockId: v4_default(),
115665
+ paraId: generateParaId()
115709
115666
  };
115710
- }
115711
- function buildFormattedCellBlock(schema, value, { blockType, blockAttrs, textMarks }, copyRowStyle = false) {
115712
- const text5 = typeof value === "string" ? value : value == null ? "" : String(value);
115713
- const type = blockType || schema.nodes.paragraph;
115714
- const marks = copyRowStyle ? textMarks || [] : [];
115715
- if (!text5) {
115716
- const content3 = marks.length > 0 ? schema.text(ZERO_WIDTH_SPACE, marks) : null;
115717
- return type.createAndFill(blockAttrs || null, content3);
115718
- }
115719
- const textNode = schema.text(text5, marks);
115720
- return type.createAndFill(blockAttrs || null, textNode);
115721
- }
115722
- function buildRowFromTemplateRow({ schema, tableNode, templateRow, values, copyRowStyle = false }) {
115723
- const RowType = schema.nodes.tableRow;
115724
- const CellType = schema.nodes.tableCell;
115725
- const HeaderType = schema.nodes.tableHeader;
115726
- const totalColumns = TableMap.get(tableNode).width;
115727
- const byColumns = Array.isArray(values) && values.length === totalColumns;
115728
- const newCells = [];
115729
- let columnCursor = 0;
115730
- templateRow.content.content.forEach((cellNode, cellIndex) => {
115731
- const isHeaderCell = cellNode.type === HeaderType;
115732
- const targetCellType = isHeaderCell ? CellType : cellNode.type;
115733
- const attrs = isHeaderCell ? normalizeHeaderAttrsForBodyCell({ ...cellNode.attrs }) : { ...cellNode.attrs };
115734
- const formatting = extractRowTemplateFormatting(cellNode, schema);
115735
- let cellValue = "";
115736
- if (byColumns) {
115737
- const span = Math.max(1, attrs.colspan || 1);
115738
- cellValue = values[columnCursor] ?? "";
115739
- columnCursor += span;
115740
- } else
115741
- cellValue = Array.isArray(values) ? values[cellIndex] ?? "" : "";
115742
- const content3 = buildFormattedCellBlock(schema, cellValue, formatting, copyRowStyle);
115743
- const newCell = targetCellType.createAndFill(attrs, content3);
115744
- if (newCell)
115745
- newCells.push(newCell);
115746
- });
115747
- return RowType.createAndFill(null, newCells);
115748
- }
115749
- function insertRowsAtTableEnd({ tr, tablePos, tableNode, rows }) {
115750
- if (!rows || !rows.length)
115751
- return;
115752
- const RowTypeName = "tableRow";
115753
- let lastRowRelPos = 0;
115754
- let lastRowNode = null;
115755
- tableNode.descendants((child, relPos) => {
115756
- if (child.type.name === RowTypeName) {
115757
- lastRowRelPos = relPos;
115758
- lastRowNode = child;
115759
- }
115760
- });
115761
- if (!lastRowNode)
115762
- return;
115763
- const lastRowAbsEnd = tablePos + 1 + lastRowRelPos + lastRowNode.nodeSize;
115764
- const frag = Fragment.fromArray(rows);
115765
- tr.insert(lastRowAbsEnd, frag);
115766
- }
115767
- function insertRowAtIndex({ tr, tablePos, tableNode, sourceRowIndex, insertIndex, schema }) {
115768
- const sourceRow = tableNode.child(sourceRowIndex);
115769
- if (!sourceRow)
115770
- return false;
115771
- const map$22 = TableMap.get(tableNode);
115772
- const { width, height } = map$22;
115773
- const newCells = [];
115774
- const cellsToExtend = [];
115775
- const RowType = schema.nodes.tableRow;
115776
- const CellType = schema.nodes.tableCell;
115777
- const sourceFormatting = extractRowTemplateFormatting(sourceRow.firstChild, schema);
115778
- for (let col = 0;col < width; ) {
115779
- if (insertIndex > 0 && insertIndex < height) {
115780
- const indexAbove = (insertIndex - 1) * width + col;
115781
- const indexAtInsert = insertIndex * width + col;
115782
- if (map$22.map[indexAbove] === map$22.map[indexAtInsert]) {
115783
- const cellPos = map$22.map[indexAbove];
115784
- const cell2 = tableNode.nodeAt(cellPos);
115785
- if (cell2) {
115786
- const attrs = cell2.attrs;
115787
- cellsToExtend.push({
115788
- pos: tablePos + 1 + cellPos,
115789
- attrs: {
115790
- ...attrs,
115791
- rowspan: (attrs.rowspan || 1) + 1
115792
- }
115793
- });
115794
- col += attrs.colspan || 1;
115795
- continue;
115796
- }
115797
- }
115798
- }
115799
- const sourceMapIndex = sourceRowIndex * width + col;
115800
- const sourceCellPos = map$22.map[sourceMapIndex];
115801
- const sourceCell = tableNode.nodeAt(sourceCellPos);
115802
- if (!sourceCell) {
115803
- const fallbackCell = sourceRow.firstChild;
115804
- const content$13 = buildFormattedCellBlock(schema, "", extractRowTemplateFormatting(fallbackCell, schema), true);
115805
- const newCell$1 = CellType.createAndFill({
115806
- rowspan: 1,
115807
- colspan: 1
115808
- }, content$13);
115809
- if (newCell$1)
115810
- newCells.push(newCell$1);
115811
- col += 1;
115812
- continue;
115813
- }
115814
- const colspan = sourceCell.attrs.colspan || 1;
115815
- const formatting = extractRowTemplateFormatting(sourceCell, schema);
115816
- const cellAttrs = {
115817
- ...sourceCell.attrs,
115818
- rowspan: 1
115819
- };
115820
- const content3 = buildFormattedCellBlock(schema, "", formatting, true);
115821
- const targetCellType = sourceCell.type.name === "tableHeader" ? CellType : sourceCell.type;
115822
- const normalizedCellAttrs = sourceCell.type.name === "tableHeader" ? normalizeHeaderAttrsForBodyCell(cellAttrs) : cellAttrs;
115823
- const newCell = targetCellType.createAndFill(normalizedCellAttrs, content3);
115824
- if (newCell)
115825
- newCells.push(newCell);
115826
- col += colspan;
115827
- }
115828
- for (const { pos, attrs } of cellsToExtend)
115829
- tr.setNodeMarkup(pos, null, attrs);
115830
- let insertPos = tablePos + 1;
115831
- for (let i$1 = 0;i$1 < insertIndex; i$1++)
115832
- insertPos += tableNode.child(i$1).nodeSize;
115833
- if (newCells.length > 0) {
115834
- const newRow = RowType.createAndFill(null, newCells);
115835
- if (newRow) {
115836
- tr.insert(insertPos, newRow);
115837
- const cursorPos = insertPos + ROW_START_TO_TEXT_OFFSET;
115838
- tr.setSelection(TextSelection2.create(tr.doc, cursorPos));
115839
- const firstTextNode = newCells[0].firstChild?.firstChild;
115840
- if (firstTextNode?.marks?.length)
115841
- tr.setStoredMarks(firstTextNode.marks);
115842
- else if (sourceFormatting.textMarks?.length)
115843
- tr.setStoredMarks(sourceFormatting.textMarks);
115844
- }
115845
- } else if (cellsToExtend.length > 0) {
115846
- const cursorPos = cellsToExtend[0].pos + CELL_TO_TEXT_OFFSET;
115847
- tr.setSelection(TextSelection2.create(tr.doc, cursorPos));
115848
- }
115849
- return true;
115850
- }
115851
- function generateParaId() {
115852
- return Array.from({ length: 8 }, () => Math.floor(Math.random() * 16).toString(16)).join("").toUpperCase();
115667
+ return paragraphType.createAndFill(separatorAttrs) ?? paragraphType.createAndFill();
115853
115668
  }
115854
115669
  function buildTableSuccess(tableAddress, trackedChangeRefs) {
115855
115670
  return {
@@ -115969,6 +115784,47 @@ function removeGridColumnWidth(grid, deleteIndex) {
115969
115784
  columns: colWidths
115970
115785
  });
115971
115786
  }
115787
+ function normalizeCellAttrsForSingleCell(attrs) {
115788
+ const currentColwidth = Array.isArray(attrs.colwidth) ? attrs.colwidth : null;
115789
+ const tableCellProperties = { ...attrs.tableCellProperties ?? {} };
115790
+ delete tableCellProperties.gridSpan;
115791
+ delete tableCellProperties.vMerge;
115792
+ return {
115793
+ ...attrs,
115794
+ colspan: 1,
115795
+ rowspan: 1,
115796
+ colwidth: currentColwidth && currentColwidth.length > 0 ? [currentColwidth[0] ?? 0] : currentColwidth,
115797
+ tableCellProperties
115798
+ };
115799
+ }
115800
+ function normalizeClonedRowInsertCellAttrs(sourceAttrs, fromHeaderToBody) {
115801
+ const normalizedAttrs = {
115802
+ ...sourceAttrs,
115803
+ rowspan: 1
115804
+ };
115805
+ if (fromHeaderToBody && normalizedAttrs.borders == null)
115806
+ delete normalizedAttrs.borders;
115807
+ return normalizedAttrs;
115808
+ }
115809
+ function expandMergedCellIntoSingles({ tr, tablePos, tableNode, cellPos, cellNode, rowIndex, columnIndex, rowspan, colspan, schema }) {
115810
+ const tableStart = tablePos + 1;
115811
+ const map$22 = TableMap.get(tableNode);
115812
+ const resetCell = cellNode.type.create(normalizeCellAttrsForSingleCell(cellNode.attrs), cellNode.content);
115813
+ tr.replaceWith(cellPos, cellPos + cellNode.nodeSize, resetCell);
115814
+ const mapFrom = tr.mapping.maps.length;
115815
+ for (let row2 = rowIndex + rowspan - 1;row2 >= rowIndex; row2--)
115816
+ for (let col = columnIndex + colspan - 1;col >= columnIndex; col--) {
115817
+ if (row2 === rowIndex && col === columnIndex)
115818
+ continue;
115819
+ const newCell = schema.nodes.tableCell.createAndFill();
115820
+ let insertRelPos;
115821
+ if (row2 === rowIndex)
115822
+ insertRelPos = map$22.positionAt(rowIndex, columnIndex, tableNode) + resetCell.nodeSize;
115823
+ else
115824
+ insertRelPos = map$22.positionAt(row2, col, tableNode);
115825
+ tr.insert(tr.mapping.slice(mapFrom).map(tableStart + insertRelPos), newCell);
115826
+ }
115827
+ }
115972
115828
  function isBoundaryEdge(edge) {
115973
115829
  return edge === "top" || edge === "bottom" || edge === "left" || edge === "right" || edge === "insideH" || edge === "insideV";
115974
115830
  }
@@ -116158,6 +116014,186 @@ function removeColumnFromTable(tr, tablePos, col) {
116158
116014
  row2 += rowspan;
116159
116015
  }
116160
116016
  }
116017
+ function insertRowInTable(tr, tablePos, sourceRowIndex, insertIndex, schema) {
116018
+ const tableNode = tr.doc.nodeAt(tablePos);
116019
+ if (!tableNode || tableNode.type.name !== "table")
116020
+ return false;
116021
+ const rowCount = tableNode.childCount;
116022
+ if (rowCount === 0)
116023
+ return false;
116024
+ const map$22 = TableMap.get(tableNode);
116025
+ const boundedInsertIndex = Math.max(0, Math.min(insertIndex, rowCount));
116026
+ const boundedSourceRowIndex = Math.max(0, Math.min(sourceRowIndex, rowCount - 1));
116027
+ const sourceRow = tableNode.child(boundedSourceRowIndex);
116028
+ if (!sourceRow)
116029
+ return false;
116030
+ const rowType = schema.nodes.tableRow;
116031
+ const defaultCellType = schema.nodes.tableCell;
116032
+ if (!rowType || !defaultCellType)
116033
+ return false;
116034
+ const newCells = [];
116035
+ const cellsToExtend = [];
116036
+ for (let col = 0;col < map$22.width; ) {
116037
+ if (boundedInsertIndex > 0 && boundedInsertIndex < map$22.height) {
116038
+ const indexAbove = (boundedInsertIndex - 1) * map$22.width + col;
116039
+ const indexAtInsert = boundedInsertIndex * map$22.width + col;
116040
+ if (map$22.map[indexAbove] === map$22.map[indexAtInsert]) {
116041
+ const spanningPos = map$22.map[indexAbove];
116042
+ const spanningCell = tableNode.nodeAt(spanningPos);
116043
+ if (spanningCell) {
116044
+ const spanningAttrs = spanningCell.attrs;
116045
+ const rowspan = spanningAttrs.rowspan || 1;
116046
+ const colspan$1 = spanningAttrs.colspan || 1;
116047
+ cellsToExtend.push({
116048
+ pos: tablePos + 1 + spanningPos,
116049
+ attrs: {
116050
+ ...spanningAttrs,
116051
+ rowspan: rowspan + 1
116052
+ }
116053
+ });
116054
+ col += colspan$1;
116055
+ continue;
116056
+ }
116057
+ }
116058
+ }
116059
+ const sourceMapIndex = boundedSourceRowIndex * map$22.width + col;
116060
+ const sourceCellPos = map$22.map[sourceMapIndex];
116061
+ const sourceCell = tableNode.nodeAt(sourceCellPos) ?? sourceRow.firstChild;
116062
+ if (!sourceCell) {
116063
+ col += 1;
116064
+ continue;
116065
+ }
116066
+ const colspan = sourceCell.attrs.colspan || 1;
116067
+ const fromHeaderToBody = sourceCell.type.name === "tableHeader";
116068
+ const newCell = (fromHeaderToBody ? defaultCellType : sourceCell.type).createAndFill(normalizeClonedRowInsertCellAttrs(sourceCell.attrs, fromHeaderToBody));
116069
+ if (newCell)
116070
+ newCells.push(newCell);
116071
+ col += colspan;
116072
+ }
116073
+ for (const { pos, attrs } of cellsToExtend)
116074
+ tr.setNodeMarkup(pos, null, attrs);
116075
+ if (newCells.length === 0)
116076
+ return true;
116077
+ const newRow = rowType.createAndFill(null, newCells);
116078
+ if (!newRow)
116079
+ return false;
116080
+ let insertPos = tablePos + 1;
116081
+ for (let row2 = 0;row2 < boundedInsertIndex; row2++)
116082
+ insertPos += tableNode.child(row2).nodeSize;
116083
+ tr.insert(insertPos, newRow);
116084
+ return true;
116085
+ }
116086
+ function addColumnToTableForSplit(tr, tablePos, col, splitRowStart, splitRowEnd) {
116087
+ const tableNode = tr.doc.nodeAt(tablePos);
116088
+ if (!tableNode || tableNode.type.name !== "table")
116089
+ return;
116090
+ const map$22 = TableMap.get(tableNode);
116091
+ const tableStart = tablePos + 1;
116092
+ const mapStart = tr.mapping.maps.length;
116093
+ const widenedOutsideSplit = /* @__PURE__ */ new Set;
116094
+ for (let row2 = 0;row2 < map$22.height; row2++) {
116095
+ const index2 = row2 * map$22.width + col;
116096
+ const pos = map$22.map[index2];
116097
+ const cell2 = tableNode.nodeAt(pos);
116098
+ if (!cell2)
116099
+ continue;
116100
+ if (!(row2 >= splitRowStart && row2 < splitRowEnd) && col > 0) {
116101
+ const leftPos = map$22.map[index2 - 1];
116102
+ const leftCell = tableNode.nodeAt(leftPos);
116103
+ if (leftCell && !widenedOutsideSplit.has(leftPos)) {
116104
+ tr.setNodeMarkup(tr.mapping.slice(mapStart).map(tableStart + leftPos), null, addColSpan(leftCell.attrs, col - map$22.colCount(leftPos)));
116105
+ widenedOutsideSplit.add(leftPos);
116106
+ }
116107
+ row2 += (cell2.attrs?.rowspan || 1) - 1;
116108
+ continue;
116109
+ }
116110
+ if (col > 0 && map$22.map[index2 - 1] === pos) {
116111
+ tr.setNodeMarkup(tr.mapping.slice(mapStart).map(tableStart + pos), null, addColSpan(cell2.attrs, col - map$22.colCount(pos)));
116112
+ row2 += (cell2.attrs.rowspan || 1) - 1;
116113
+ } else {
116114
+ const refType = col > 0 ? tableNode.nodeAt(map$22.map[index2 - 1])?.type ?? cell2.type : cell2.type;
116115
+ const cellPos = map$22.positionAt(row2, col, tableNode);
116116
+ tr.insert(tr.mapping.slice(mapStart).map(tableStart + cellPos), refType.createAndFill());
116117
+ row2 += (cell2.attrs?.rowspan || 1) - 1;
116118
+ }
116119
+ }
116120
+ }
116121
+ function insertRowInTableForSplit(tr, tablePos, sourceRowIndex, insertIndex, splitColStart, splitColEnd, schema) {
116122
+ const tableNode = tr.doc.nodeAt(tablePos);
116123
+ if (!tableNode || tableNode.type.name !== "table")
116124
+ return false;
116125
+ const rowCount = tableNode.childCount;
116126
+ if (rowCount === 0)
116127
+ return false;
116128
+ const map$22 = TableMap.get(tableNode);
116129
+ const boundedInsertIndex = Math.max(0, Math.min(insertIndex, rowCount));
116130
+ const boundedSourceRowIndex = Math.max(0, Math.min(sourceRowIndex, rowCount - 1));
116131
+ const sourceRow = tableNode.child(boundedSourceRowIndex);
116132
+ if (!sourceRow)
116133
+ return false;
116134
+ const rowType = schema.nodes.tableRow;
116135
+ const defaultCellType = schema.nodes.tableCell;
116136
+ if (!rowType || !defaultCellType)
116137
+ return false;
116138
+ const newCells = [];
116139
+ const cellsToExtend = /* @__PURE__ */ new Map;
116140
+ for (let col = 0;col < map$22.width; ) {
116141
+ if (boundedInsertIndex > 0 && boundedInsertIndex < map$22.height) {
116142
+ const indexAbove = (boundedInsertIndex - 1) * map$22.width + col;
116143
+ const indexAtInsert = boundedInsertIndex * map$22.width + col;
116144
+ if (map$22.map[indexAbove] === map$22.map[indexAtInsert]) {
116145
+ const spanningPos = map$22.map[indexAbove];
116146
+ const spanningCell = tableNode.nodeAt(spanningPos);
116147
+ if (spanningCell) {
116148
+ const spanningAttrs = spanningCell.attrs;
116149
+ const rowspan = spanningAttrs.rowspan || 1;
116150
+ const colspan$1 = spanningAttrs.colspan || 1;
116151
+ cellsToExtend.set(tablePos + 1 + spanningPos, {
116152
+ ...spanningAttrs,
116153
+ rowspan: rowspan + 1
116154
+ });
116155
+ col += colspan$1;
116156
+ continue;
116157
+ }
116158
+ }
116159
+ }
116160
+ const sourceMapIndex = boundedSourceRowIndex * map$22.width + col;
116161
+ const sourceCellPos = map$22.map[sourceMapIndex];
116162
+ const sourceCell = tableNode.nodeAt(sourceCellPos) ?? sourceRow.firstChild;
116163
+ if (!sourceCell) {
116164
+ col += 1;
116165
+ continue;
116166
+ }
116167
+ const sourceAttrs = sourceCell.attrs;
116168
+ const colspan = sourceAttrs.colspan || 1;
116169
+ if (!(col < splitColEnd && col + colspan > splitColStart)) {
116170
+ const sourceRowspan = sourceAttrs.rowspan || 1;
116171
+ cellsToExtend.set(tablePos + 1 + sourceCellPos, {
116172
+ ...sourceAttrs,
116173
+ rowspan: sourceRowspan + 1
116174
+ });
116175
+ col += colspan;
116176
+ continue;
116177
+ }
116178
+ const fromHeaderToBody = sourceCell.type.name === "tableHeader";
116179
+ const newCell = (fromHeaderToBody ? defaultCellType : sourceCell.type).createAndFill(normalizeClonedRowInsertCellAttrs(sourceAttrs, fromHeaderToBody));
116180
+ if (newCell)
116181
+ newCells.push(newCell);
116182
+ col += colspan;
116183
+ }
116184
+ for (const [pos, attrs] of cellsToExtend.entries())
116185
+ tr.setNodeMarkup(pos, null, attrs);
116186
+ if (newCells.length === 0)
116187
+ return true;
116188
+ const newRow = rowType.createAndFill(null, newCells);
116189
+ if (!newRow)
116190
+ return false;
116191
+ let insertPos = tablePos + 1;
116192
+ for (let row2 = 0;row2 < boundedInsertIndex; row2++)
116193
+ insertPos += tableNode.child(row2).nodeSize;
116194
+ tr.insert(insertPos, newRow);
116195
+ return true;
116196
+ }
116161
116197
  function tablesDeleteAdapter(editor, input2, options) {
116162
116198
  const mode = options?.changeMode ?? "direct";
116163
116199
  if (mode === "tracked")
@@ -116327,14 +116363,8 @@ function tablesInsertRowAdapter(editor, input2, options) {
116327
116363
  break;
116328
116364
  const insertIdx = input2.position === "above" ? rowIndex + i$1 : rowIndex + 1 + i$1;
116329
116365
  const sourceIdx = input2.position === "above" ? rowIndex + i$1 : rowIndex;
116330
- insertRowAtIndex({
116331
- tr,
116332
- tablePos,
116333
- tableNode: currentTableNode,
116334
- sourceRowIndex: Math.min(sourceIdx, currentTableNode.childCount - 1),
116335
- insertIndex: Math.min(insertIdx, currentTableNode.childCount),
116336
- schema
116337
- });
116366
+ if (!insertRowInTable(tr, tablePos, Math.min(sourceIdx, currentTableNode.childCount - 1), Math.min(insertIdx, currentTableNode.childCount), schema))
116367
+ return toTableFailure("INVALID_TARGET", "Row insertion could not be applied.");
116338
116368
  }
116339
116369
  if (mode === "tracked")
116340
116370
  applyTrackedMutationMeta(tr);
@@ -116840,8 +116870,12 @@ function tablesSplitAdapter(editor, input2, options) {
116840
116870
  delete newTableAttrs.paraId;
116841
116871
  delete newTableAttrs.textId;
116842
116872
  const newTable = schema.nodes.table.create(newTableAttrs, secondTableRows);
116873
+ const separatorParagraph = createSeparatorParagraph(schema);
116874
+ if (!separatorParagraph)
116875
+ return toTableFailure("INVALID_TARGET", "Table split could not create a separator paragraph.");
116843
116876
  const insertPos = tr.mapping.slice(mapFrom).map(tablePos + tableNode.nodeSize);
116844
- tr.insert(insertPos, newTable);
116877
+ tr.insert(insertPos, separatorParagraph);
116878
+ tr.insert(insertPos + separatorParagraph.nodeSize, newTable);
116845
116879
  applyDirectMutationMeta(tr);
116846
116880
  editor.dispatch(tr);
116847
116881
  clearIndexCache(editor);
@@ -117142,35 +117176,21 @@ function tablesUnmergeCellsAdapter(editor, input2, options) {
117142
117176
  return buildTableSuccess(table2.address);
117143
117177
  try {
117144
117178
  const tr = editor.state.tr;
117145
- const tableStart = table2.candidate.pos + 1;
117179
+ const tablePos = table2.candidate.pos;
117146
117180
  const tableNode = table2.candidate.node;
117147
- const map$22 = TableMap.get(tableNode);
117148
117181
  const schema = editor.state.schema;
117149
- const currentColwidth = Array.isArray(attrs.colwidth) ? attrs.colwidth : null;
117150
- const tableCellProperties = { ...attrs.tableCellProperties ?? {} };
117151
- delete tableCellProperties.gridSpan;
117152
- delete tableCellProperties.vMerge;
117153
- const resetCell = cellNode.type.create({
117154
- ...attrs,
117155
- colspan: 1,
117156
- rowspan: 1,
117157
- colwidth: currentColwidth && currentColwidth.length > 0 ? [currentColwidth[0] ?? 0] : currentColwidth,
117158
- tableCellProperties
117159
- }, cellNode.content);
117160
- tr.replaceWith(cellPos, cellPos + cellNode.nodeSize, resetCell);
117161
- const mapFrom = tr.mapping.maps.length;
117162
- for (let row2 = rowIndex + rowspan - 1;row2 >= rowIndex; row2--)
117163
- for (let col = columnIndex + colspan - 1;col >= columnIndex; col--) {
117164
- if (row2 === rowIndex && col === columnIndex)
117165
- continue;
117166
- const newCell = schema.nodes.tableCell.createAndFill();
117167
- let insertRelPos;
117168
- if (row2 === rowIndex)
117169
- insertRelPos = map$22.positionAt(rowIndex, columnIndex, tableNode) + resetCell.nodeSize;
117170
- else
117171
- insertRelPos = map$22.positionAt(row2, col, tableNode);
117172
- tr.insert(tr.mapping.slice(mapFrom).map(tableStart + insertRelPos), newCell);
117173
- }
117182
+ expandMergedCellIntoSingles({
117183
+ tr,
117184
+ tablePos,
117185
+ tableNode,
117186
+ cellPos,
117187
+ cellNode,
117188
+ rowIndex,
117189
+ columnIndex,
117190
+ rowspan,
117191
+ colspan,
117192
+ schema
117193
+ });
117174
117194
  applyDirectMutationMeta(tr);
117175
117195
  editor.dispatch(tr);
117176
117196
  clearIndexCache(editor);
@@ -117187,37 +117207,74 @@ function tablesSplitCellAdapter(editor, input2, options) {
117187
117207
  const attrs = cellNode.attrs;
117188
117208
  const currentColspan = attrs.colspan || 1;
117189
117209
  const currentRowspan = attrs.rowspan || 1;
117190
- if ((currentColspan > 1 || currentRowspan > 1) && input2.rows === currentRowspan && input2.columns === currentColspan)
117191
- return tablesUnmergeCellsAdapter(editor, input2, options);
117192
117210
  if (input2.rows === 1 && input2.columns === 1 && currentColspan === 1 && currentRowspan === 1)
117193
117211
  return toTableFailure("NO_OP", "Cell is already a single cell and split target is 1×1.");
117194
117212
  if (options?.dryRun)
117195
117213
  return buildTableSuccess(table2.address);
117196
117214
  try {
117197
117215
  const tr = editor.state.tr;
117198
- const tableStart = table2.candidate.pos + 1;
117199
- const tableNode = table2.candidate.node;
117200
- const map$22 = TableMap.get(tableNode);
117216
+ const tablePos = table2.candidate.pos;
117201
117217
  const schema = editor.state.schema;
117202
- const targetColspan = Math.max(input2.columns, currentColspan);
117203
- const targetRowspan = Math.max(input2.rows, currentRowspan);
117204
- const splitAttrs = {
117205
- ...attrs,
117206
- colspan: 1,
117207
- rowspan: 1
117208
- };
117209
- tr.setNodeMarkup(cellPos, null, splitAttrs);
117210
- const mapFrom = tr.mapping.maps.length;
117211
- for (let row2 = rowIndex + targetRowspan - 1;row2 >= rowIndex; row2--)
117212
- for (let col = columnIndex + targetColspan - 1;col >= columnIndex; col--) {
117213
- if (row2 === rowIndex && col === columnIndex)
117214
- continue;
117215
- const newCell = schema.nodes.tableCell.createAndFill();
117216
- if (row2 < map$22.height && col < map$22.width) {
117217
- const insertPos = map$22.positionAt(row2, col, tableNode);
117218
- tr.insert(tr.mapping.slice(mapFrom).map(tableStart + insertPos), newCell);
117219
- }
117220
- }
117218
+ const targetColumns = Math.max(input2.columns, currentColspan);
117219
+ const targetRows = Math.max(input2.rows, currentRowspan);
117220
+ const additionalColumns = Math.max(0, targetColumns - currentColspan);
117221
+ const additionalRows = Math.max(0, targetRows - currentRowspan);
117222
+ let updatedGrid = table2.candidate.node.attrs.grid;
117223
+ if (currentColspan > 1 || currentRowspan > 1) {
117224
+ const currentTableNode = tr.doc.nodeAt(tablePos);
117225
+ if (!currentTableNode || currentTableNode.type.name !== "table")
117226
+ return toTableFailure("INVALID_TARGET", "Cell split target table is unavailable.");
117227
+ const currentCellPos = tr.mapping.map(cellPos, 1);
117228
+ const currentCellNode = tr.doc.nodeAt(currentCellPos);
117229
+ if (!currentCellNode || currentCellNode.type.name !== "tableCell" && currentCellNode.type.name !== "tableHeader")
117230
+ return toTableFailure("INVALID_TARGET", "Split target cell is unavailable.");
117231
+ expandMergedCellIntoSingles({
117232
+ tr,
117233
+ tablePos,
117234
+ tableNode: currentTableNode,
117235
+ cellPos: currentCellPos,
117236
+ cellNode: currentCellNode,
117237
+ rowIndex,
117238
+ columnIndex,
117239
+ rowspan: currentRowspan,
117240
+ colspan: currentColspan,
117241
+ schema
117242
+ });
117243
+ }
117244
+ for (let columnOffset = 0;columnOffset < additionalColumns; columnOffset++) {
117245
+ const insertColumnIndex = columnIndex + currentColspan + columnOffset;
117246
+ addColumnToTableForSplit(tr, tablePos, insertColumnIndex, rowIndex, rowIndex + targetRows);
117247
+ updatedGrid = insertGridColumnWidth(updatedGrid, insertColumnIndex) ?? updatedGrid;
117248
+ }
117249
+ for (let rowOffset = 0;rowOffset < additionalRows; rowOffset++) {
117250
+ const currentTableNode = tr.doc.nodeAt(tablePos);
117251
+ if (!currentTableNode || currentTableNode.type.name !== "table")
117252
+ return toTableFailure("INVALID_TARGET", "Cell split target table is unavailable.");
117253
+ const insertIndex = rowIndex + currentRowspan + rowOffset;
117254
+ const boundedInsertIndex = Math.max(0, Math.min(insertIndex, currentTableNode.childCount));
117255
+ if (!insertRowInTableForSplit(tr, tablePos, Math.max(0, Math.min(boundedInsertIndex - 1, currentTableNode.childCount - 1)), boundedInsertIndex, columnIndex, columnIndex + targetColumns, schema))
117256
+ return toTableFailure("INVALID_TARGET", "Cell split could not insert required rows.");
117257
+ }
117258
+ const finalTableNode = tr.doc.nodeAt(tablePos);
117259
+ if (!finalTableNode || finalTableNode.type.name !== "table")
117260
+ return toTableFailure("INVALID_TARGET", "Cell split target table is unavailable.");
117261
+ let finalTargetCellPos = tr.mapping.map(cellPos, 1);
117262
+ let finalTargetCell = tr.doc.nodeAt(finalTargetCellPos);
117263
+ if (!finalTargetCell || finalTargetCell.type.name !== "tableCell" && finalTargetCell.type.name !== "tableHeader") {
117264
+ finalTargetCellPos = tablePos + 1 + TableMap.get(finalTableNode).positionAt(rowIndex, columnIndex, finalTableNode);
117265
+ finalTargetCell = tr.doc.nodeAt(finalTargetCellPos);
117266
+ }
117267
+ if (!finalTargetCell || finalTargetCell.type.name !== "tableCell" && finalTargetCell.type.name !== "tableHeader")
117268
+ return toTableFailure("INVALID_TARGET", "Split target cell is unavailable.");
117269
+ tr.setNodeMarkup(finalTargetCellPos, null, normalizeCellAttrsForSingleCell(finalTargetCell.attrs));
117270
+ if (updatedGrid) {
117271
+ const currentTableAttrs = finalTableNode.attrs;
117272
+ tr.setNodeMarkup(tablePos, null, {
117273
+ ...currentTableAttrs,
117274
+ grid: updatedGrid,
117275
+ userEdited: true
117276
+ });
117277
+ }
117221
117278
  applyDirectMutationMeta(tr);
117222
117279
  editor.dispatch(tr);
117223
117280
  clearIndexCache(editor);
@@ -117601,6 +117658,38 @@ function tablesSetShadingAdapter(editor, input2, options) {
117601
117658
  [propsKey]: currentProps,
117602
117659
  ...syncAttrs
117603
117660
  });
117661
+ if (resolved.scope === "table") {
117662
+ const tableNode = resolved.node;
117663
+ const tableStart = resolved.pos + 1;
117664
+ const map$22 = TableMap.get(tableNode);
117665
+ const seen = /* @__PURE__ */ new Set;
117666
+ const mapFrom = tr.mapping.maps.length;
117667
+ for (let i$1 = 0;i$1 < map$22.map.length; i$1++) {
117668
+ const relPos = map$22.map[i$1];
117669
+ if (seen.has(relPos))
117670
+ continue;
117671
+ seen.add(relPos);
117672
+ const cellNode = tableNode.nodeAt(relPos);
117673
+ if (!cellNode)
117674
+ continue;
117675
+ const cellAttrs = cellNode.attrs;
117676
+ const cellProps = { ...cellAttrs.tableCellProperties ?? {} };
117677
+ cellProps.shading = {
117678
+ fill: input2.color,
117679
+ val: "clear",
117680
+ color: "auto"
117681
+ };
117682
+ const nextCellAttrs = {
117683
+ ...cellAttrs,
117684
+ tableCellProperties: cellProps
117685
+ };
117686
+ if (input2.color === "auto")
117687
+ delete nextCellAttrs.background;
117688
+ else
117689
+ nextCellAttrs.background = { color: input2.color };
117690
+ tr.setNodeMarkup(tr.mapping.slice(mapFrom).map(tableStart + relPos), null, nextCellAttrs);
117691
+ }
117692
+ }
117604
117693
  applyDirectMutationMeta(tr);
117605
117694
  editor.dispatch(tr);
117606
117695
  clearIndexCache(editor);
@@ -138431,6 +138520,201 @@ function cellWrapping($pos) {
138431
138520
  }
138432
138521
  return null;
138433
138522
  }
138523
+ function resolveTable2(tr, tablePos, tableNode) {
138524
+ if (tableNode && tableNode.type && tableNode.type.name === "table")
138525
+ return tableNode;
138526
+ if (typeof tablePos === "number") {
138527
+ const current = tr.doc.nodeAt(tablePos);
138528
+ if (current && current.type.name === "table")
138529
+ return current;
138530
+ }
138531
+ return null;
138532
+ }
138533
+ function pickTemplateRowForAppend(tableNode, schema) {
138534
+ const RowType = schema.nodes.tableRow;
138535
+ const rows = [];
138536
+ tableNode.descendants((child) => {
138537
+ if (child.type === RowType)
138538
+ rows.push(child);
138539
+ });
138540
+ if (!rows.length)
138541
+ return null;
138542
+ for (let i$1 = rows.length - 1;i$1 >= 0; i$1--) {
138543
+ const r$1 = rows[i$1];
138544
+ if (r$1.content?.content?.some((c$3) => c$3.type.name === "tableCell"))
138545
+ return r$1;
138546
+ }
138547
+ return rows[rows.length - 1];
138548
+ }
138549
+ function extractRowTemplateFormatting(cellNode, schema) {
138550
+ const ParagraphType = schema.nodes.paragraph;
138551
+ let blockType = ParagraphType;
138552
+ let blockAttrs = null;
138553
+ let textMarks = [];
138554
+ const blocks2 = cellNode?.content?.content || [];
138555
+ for (const block of blocks2) {
138556
+ if (block.type === ParagraphType || block.type.name === "heading") {
138557
+ blockType = block.type || ParagraphType;
138558
+ blockAttrs = block.attrs || null;
138559
+ }
138560
+ let foundText = null;
138561
+ block.descendants?.((n) => {
138562
+ if (!foundText && n.isText)
138563
+ foundText = n;
138564
+ });
138565
+ if (foundText) {
138566
+ textMarks = foundText.marks ? Array.from(foundText.marks) : [];
138567
+ break;
138568
+ }
138569
+ }
138570
+ if (!blockType || !blockType.validContent)
138571
+ blockType = ParagraphType;
138572
+ return {
138573
+ blockType,
138574
+ blockAttrs,
138575
+ textMarks
138576
+ };
138577
+ }
138578
+ function buildFormattedCellBlock(schema, value, { blockType, blockAttrs, textMarks }, copyRowStyle = false) {
138579
+ const text5 = typeof value === "string" ? value : value == null ? "" : String(value);
138580
+ const type = blockType || schema.nodes.paragraph;
138581
+ const marks = copyRowStyle ? textMarks || [] : [];
138582
+ if (!text5) {
138583
+ const content3 = marks.length > 0 ? schema.text(ZERO_WIDTH_SPACE, marks) : null;
138584
+ return type.createAndFill(blockAttrs || null, content3);
138585
+ }
138586
+ const textNode = schema.text(text5, marks);
138587
+ return type.createAndFill(blockAttrs || null, textNode);
138588
+ }
138589
+ function buildRowFromTemplateRow({ schema, tableNode, templateRow, values, copyRowStyle = false }) {
138590
+ const RowType = schema.nodes.tableRow;
138591
+ const CellType = schema.nodes.tableCell;
138592
+ const HeaderType = schema.nodes.tableHeader;
138593
+ const totalColumns = TableMap.get(tableNode).width;
138594
+ const byColumns = Array.isArray(values) && values.length === totalColumns;
138595
+ const newCells = [];
138596
+ let columnCursor = 0;
138597
+ templateRow.content.content.forEach((cellNode, cellIndex) => {
138598
+ const isHeaderCell = cellNode.type === HeaderType;
138599
+ const targetCellType = isHeaderCell ? CellType : cellNode.type;
138600
+ const attrs = isHeaderCell ? normalizeHeaderAttrsForBodyCell({ ...cellNode.attrs }) : { ...cellNode.attrs };
138601
+ const formatting = extractRowTemplateFormatting(cellNode, schema);
138602
+ let cellValue = "";
138603
+ if (byColumns) {
138604
+ const span = Math.max(1, attrs.colspan || 1);
138605
+ cellValue = values[columnCursor] ?? "";
138606
+ columnCursor += span;
138607
+ } else
138608
+ cellValue = Array.isArray(values) ? values[cellIndex] ?? "" : "";
138609
+ const content3 = buildFormattedCellBlock(schema, cellValue, formatting, copyRowStyle);
138610
+ const newCell = targetCellType.createAndFill(attrs, content3);
138611
+ if (newCell)
138612
+ newCells.push(newCell);
138613
+ });
138614
+ return RowType.createAndFill(null, newCells);
138615
+ }
138616
+ function insertRowsAtTableEnd({ tr, tablePos, tableNode, rows }) {
138617
+ if (!rows || !rows.length)
138618
+ return;
138619
+ const RowTypeName = "tableRow";
138620
+ let lastRowRelPos = 0;
138621
+ let lastRowNode = null;
138622
+ tableNode.descendants((child, relPos) => {
138623
+ if (child.type.name === RowTypeName) {
138624
+ lastRowRelPos = relPos;
138625
+ lastRowNode = child;
138626
+ }
138627
+ });
138628
+ if (!lastRowNode)
138629
+ return;
138630
+ const lastRowAbsEnd = tablePos + 1 + lastRowRelPos + lastRowNode.nodeSize;
138631
+ const frag = Fragment.fromArray(rows);
138632
+ tr.insert(lastRowAbsEnd, frag);
138633
+ }
138634
+ function insertRowAtIndex({ tr, tablePos, tableNode, sourceRowIndex, insertIndex, schema }) {
138635
+ const sourceRow = tableNode.child(sourceRowIndex);
138636
+ if (!sourceRow)
138637
+ return false;
138638
+ const map$22 = TableMap.get(tableNode);
138639
+ const { width, height } = map$22;
138640
+ const newCells = [];
138641
+ const cellsToExtend = [];
138642
+ const RowType = schema.nodes.tableRow;
138643
+ const CellType = schema.nodes.tableCell;
138644
+ const sourceFormatting = extractRowTemplateFormatting(sourceRow.firstChild, schema);
138645
+ for (let col = 0;col < width; ) {
138646
+ if (insertIndex > 0 && insertIndex < height) {
138647
+ const indexAbove = (insertIndex - 1) * width + col;
138648
+ const indexAtInsert = insertIndex * width + col;
138649
+ if (map$22.map[indexAbove] === map$22.map[indexAtInsert]) {
138650
+ const cellPos = map$22.map[indexAbove];
138651
+ const cell2 = tableNode.nodeAt(cellPos);
138652
+ if (cell2) {
138653
+ const attrs = cell2.attrs;
138654
+ cellsToExtend.push({
138655
+ pos: tablePos + 1 + cellPos,
138656
+ attrs: {
138657
+ ...attrs,
138658
+ rowspan: (attrs.rowspan || 1) + 1
138659
+ }
138660
+ });
138661
+ col += attrs.colspan || 1;
138662
+ continue;
138663
+ }
138664
+ }
138665
+ }
138666
+ const sourceMapIndex = sourceRowIndex * width + col;
138667
+ const sourceCellPos = map$22.map[sourceMapIndex];
138668
+ const sourceCell = tableNode.nodeAt(sourceCellPos);
138669
+ if (!sourceCell) {
138670
+ const fallbackCell = sourceRow.firstChild;
138671
+ const content$13 = buildFormattedCellBlock(schema, "", extractRowTemplateFormatting(fallbackCell, schema), true);
138672
+ const newCell$1 = CellType.createAndFill({
138673
+ rowspan: 1,
138674
+ colspan: 1
138675
+ }, content$13);
138676
+ if (newCell$1)
138677
+ newCells.push(newCell$1);
138678
+ col += 1;
138679
+ continue;
138680
+ }
138681
+ const colspan = sourceCell.attrs.colspan || 1;
138682
+ const formatting = extractRowTemplateFormatting(sourceCell, schema);
138683
+ const cellAttrs = {
138684
+ ...sourceCell.attrs,
138685
+ rowspan: 1
138686
+ };
138687
+ const content3 = buildFormattedCellBlock(schema, "", formatting, true);
138688
+ const targetCellType = sourceCell.type.name === "tableHeader" ? CellType : sourceCell.type;
138689
+ const normalizedCellAttrs = sourceCell.type.name === "tableHeader" ? normalizeHeaderAttrsForBodyCell(cellAttrs) : cellAttrs;
138690
+ const newCell = targetCellType.createAndFill(normalizedCellAttrs, content3);
138691
+ if (newCell)
138692
+ newCells.push(newCell);
138693
+ col += colspan;
138694
+ }
138695
+ for (const { pos, attrs } of cellsToExtend)
138696
+ tr.setNodeMarkup(pos, null, attrs);
138697
+ let insertPos = tablePos + 1;
138698
+ for (let i$1 = 0;i$1 < insertIndex; i$1++)
138699
+ insertPos += tableNode.child(i$1).nodeSize;
138700
+ if (newCells.length > 0) {
138701
+ const newRow = RowType.createAndFill(null, newCells);
138702
+ if (newRow) {
138703
+ tr.insert(insertPos, newRow);
138704
+ const cursorPos = insertPos + ROW_START_TO_TEXT_OFFSET;
138705
+ tr.setSelection(TextSelection2.create(tr.doc, cursorPos));
138706
+ const firstTextNode = newCells[0].firstChild?.firstChild;
138707
+ if (firstTextNode?.marks?.length)
138708
+ tr.setStoredMarks(firstTextNode.marks);
138709
+ else if (sourceFormatting.textMarks?.length)
138710
+ tr.setStoredMarks(sourceFormatting.textMarks);
138711
+ }
138712
+ } else if (cellsToExtend.length > 0) {
138713
+ const cursorPos = cellsToExtend[0].pos + CELL_TO_TEXT_OFFSET;
138714
+ tr.setSelection(TextSelection2.create(tr.doc, cursorPos));
138715
+ }
138716
+ return true;
138717
+ }
138434
138718
  function getCellType({ node: node3, state }) {
138435
138719
  return tableNodeTypes(state.schema)[node3.type.spec.tableRole];
138436
138720
  }
@@ -154686,13 +154970,7 @@ var Node$13 = class Node$14 {
154686
154970
  console.warn("Failed to initialize developer tools:", error);
154687
154971
  }
154688
154972
  }
154689
- }, BLANK_DOCX_DATA_URI = `data:application/vnd.openxmlformats-officedocument.wordprocessingml.document;base64,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`, LINK_MARK_NAME = "link", COMMENT_MARK_NAME, SUPPORTED_INLINE_TYPES, DocumentApiAdapterError, ALIAS_ELIGIBLE_TYPES, cacheByEditor, DEFAULT_TOC_CONFIG, SWITCH_PATTERN, SNIPPET_PADDING = 30, DUAL_KIND_TYPES, KNOWN_BLOCK_PM_NODE_TYPES, KNOWN_INLINE_PM_NODE_TYPES, MAX_PATTERN_LENGTH = 1024, PlanError, revisionMap, subscribedEditors, everSyncedProviders, REQUIRED_COMMANDS, VALID_CAPABILITY_REASON_CODES, REQUIRED_HELPERS, SUPPORTED_STEP_OPS, SUPPORTED_NON_UNIFORM_STRATEGIES, SUPPORTED_SET_MARKS, REGEX_MAX_PATTERN_LENGTH = 1024, registry, TOGGLE_MARK_SPECS, CORE_MARK_NAMES, METADATA_MARK_NAMES, VALID_CREATE_POSITIONS, REF_HANDLERS, STEP_INTERACTION_MATRIX, MATRIX_EXEMPT_OPS, DEFAULT_INLINE_POLICY, CORE_SET_MARK_KEYS, BOOLEAN_INLINE_MARK_KEYS, TEXT_STYLE_KEYS, PRESERVE_RUN_PROPERTIES_META_KEY = "sdPreserveRunPropertiesKeys", OBJECT_REPLACEMENT_CHAR = "", STUB_WHERE, FALLBACK_STORE_KEY = "__documentApiComments", STYLES_PART = "word/styles.xml", PROPERTIES_KEY_BY_CHANNEL, XML_PATH_BY_CHANNEL, DERIVED_ID_LENGTH = 24, groupedCache, SUPPORTED_NODE_TYPES, REJECTED_NODE_TYPES, CSS_NAMED_COLORS, ZERO_WIDTH_SPACE = "​", ROW_START_TO_TEXT_OFFSET = 3, CELL_TO_TEXT_OFFSET = 2, normalizeHeaderAttrsForBodyCell = (attrs) => {
154690
- if (attrs?.borders !== null)
154691
- return attrs;
154692
- const nextAttrs = { ...attrs };
154693
- delete nextAttrs.borders;
154694
- return nextAttrs;
154695
- }, POINTS_TO_PIXELS, POINTS_TO_TWIPS = 20, PIXELS_TO_TWIPS, DEFAULT_TABLE_GRID_WIDTH_TWIPS = 1500, TABLE_ADAPTER_DISPATCH, ROW_OPS, TABLE_SCOPED_OPS, registered = false, SETTINGS_PART_PATH = "word/settings.xml", SectionType, DEFAULT_PARAGRAPH_SECTION_TYPE, DEFAULT_BODY_SECTION_TYPE, TWIPS_PER_INCH$2 = 1440, PX_PER_INCH$2 = 96, DEFAULT_COLUMN_GAP_INCHES = 0.5, DEFAULT_HEADER_FOOTER_MARGIN_PX = 0, LINE_NUMBER_RESTART_VALUES, PAGE_NUMBER_FORMAT_VALUES, SECTION_ORIENTATION_VALUES, SECTION_VERTICAL_ALIGN_VALUES, readSectPrHeaderFooterRefs, PIXELS_PER_INCH$2 = 96, DOCUMENT_RELS_PATH = "word/_rels/document.xml.rels", RELS_XMLNS2 = "http://schemas.openxmlformats.org/package/2006/relationships", HEADER_RELATIONSHIP_TYPE2 = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/header", FOOTER_RELATIONSHIP_TYPE2 = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/footer", WORDPROCESSINGML_XMLNS = "http://schemas.openxmlformats.org/wordprocessingml/2006/main", OFFICE_DOCUMENT_RELS_XMLNS = "http://schemas.openxmlformats.org/officeDocument/2006/relationships", RELATIONSHIP_ID_PATTERN, HEADER_FILE_PATTERN, FOOTER_FILE_PATTERN, NO_ENTRIES_PLACEHOLDER, empty_exports, init_empty, PIXELS_PER_INCH$1 = 96, MAX_HEIGHT_BUFFER_PX = 50, MAX_WIDTH_BUFFER_PX = 20, Editor, ContextMenuPluginKey, MENU_OFFSET_X = 0, MENU_OFFSET_Y = 28, CONTEXT_MENU_OFFSET_X = 10, CONTEXT_MENU_OFFSET_Y = 10, SLASH_COOLDOWN_MS = 5000, ContextMenu, SearchQuery = class {
154973
+ }, BLANK_DOCX_DATA_URI = `data:application/vnd.openxmlformats-officedocument.wordprocessingml.document;base64,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`, LINK_MARK_NAME = "link", COMMENT_MARK_NAME, SUPPORTED_INLINE_TYPES, DocumentApiAdapterError, ALIAS_ELIGIBLE_TYPES, cacheByEditor, DEFAULT_TOC_CONFIG, SWITCH_PATTERN, SNIPPET_PADDING = 30, DUAL_KIND_TYPES, KNOWN_BLOCK_PM_NODE_TYPES, KNOWN_INLINE_PM_NODE_TYPES, MAX_PATTERN_LENGTH = 1024, PlanError, revisionMap, subscribedEditors, everSyncedProviders, REQUIRED_COMMANDS, VALID_CAPABILITY_REASON_CODES, REQUIRED_HELPERS, SUPPORTED_STEP_OPS, SUPPORTED_NON_UNIFORM_STRATEGIES, SUPPORTED_SET_MARKS, REGEX_MAX_PATTERN_LENGTH = 1024, registry, TOGGLE_MARK_SPECS, CORE_MARK_NAMES, METADATA_MARK_NAMES, VALID_CREATE_POSITIONS, REF_HANDLERS, STEP_INTERACTION_MATRIX, MATRIX_EXEMPT_OPS, DEFAULT_INLINE_POLICY, CORE_SET_MARK_KEYS, BOOLEAN_INLINE_MARK_KEYS, TEXT_STYLE_KEYS, PRESERVE_RUN_PROPERTIES_META_KEY = "sdPreserveRunPropertiesKeys", OBJECT_REPLACEMENT_CHAR = "", STUB_WHERE, FALLBACK_STORE_KEY = "__documentApiComments", STYLES_PART = "word/styles.xml", PROPERTIES_KEY_BY_CHANNEL, XML_PATH_BY_CHANNEL, DERIVED_ID_LENGTH = 24, groupedCache, SUPPORTED_NODE_TYPES, REJECTED_NODE_TYPES, CSS_NAMED_COLORS, POINTS_TO_PIXELS, POINTS_TO_TWIPS = 20, PIXELS_TO_TWIPS, DEFAULT_TABLE_GRID_WIDTH_TWIPS = 1500, TABLE_ADAPTER_DISPATCH, ROW_OPS, TABLE_SCOPED_OPS, registered = false, SETTINGS_PART_PATH = "word/settings.xml", SectionType, DEFAULT_PARAGRAPH_SECTION_TYPE, DEFAULT_BODY_SECTION_TYPE, TWIPS_PER_INCH$2 = 1440, PX_PER_INCH$2 = 96, DEFAULT_COLUMN_GAP_INCHES = 0.5, DEFAULT_HEADER_FOOTER_MARGIN_PX = 0, LINE_NUMBER_RESTART_VALUES, PAGE_NUMBER_FORMAT_VALUES, SECTION_ORIENTATION_VALUES, SECTION_VERTICAL_ALIGN_VALUES, readSectPrHeaderFooterRefs, PIXELS_PER_INCH$2 = 96, DOCUMENT_RELS_PATH = "word/_rels/document.xml.rels", RELS_XMLNS2 = "http://schemas.openxmlformats.org/package/2006/relationships", HEADER_RELATIONSHIP_TYPE2 = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/header", FOOTER_RELATIONSHIP_TYPE2 = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/footer", WORDPROCESSINGML_XMLNS = "http://schemas.openxmlformats.org/wordprocessingml/2006/main", OFFICE_DOCUMENT_RELS_XMLNS = "http://schemas.openxmlformats.org/officeDocument/2006/relationships", RELATIONSHIP_ID_PATTERN, HEADER_FILE_PATTERN, FOOTER_FILE_PATTERN, NO_ENTRIES_PLACEHOLDER, empty_exports, init_empty, PIXELS_PER_INCH$1 = 96, MAX_HEIGHT_BUFFER_PX = 50, MAX_WIDTH_BUFFER_PX = 20, Editor, ContextMenuPluginKey, MENU_OFFSET_X = 0, MENU_OFFSET_Y = 28, CONTEXT_MENU_OFFSET_X = 10, CONTEXT_MENU_OFFSET_Y = 10, SLASH_COOLDOWN_MS = 5000, ContextMenu, SearchQuery = class {
154696
154974
  constructor(config2) {
154697
154975
  this.search = config2.search;
154698
154976
  this.caseSensitive = !!config2.caseSensitive;
@@ -168537,6 +168815,12 @@ var Node$13 = class Node$14 {
168537
168815
  return false;
168538
168816
  editor.commands.deleteTable();
168539
168817
  return true;
168818
+ }, ZERO_WIDTH_SPACE = "​", ROW_START_TO_TEXT_OFFSET = 3, CELL_TO_TEXT_OFFSET = 2, normalizeHeaderAttrsForBodyCell = (attrs) => {
168819
+ if (attrs?.borders !== null)
168820
+ return attrs;
168821
+ const nextAttrs = { ...attrs };
168822
+ delete nextAttrs.borders;
168823
+ return nextAttrs;
168540
168824
  }, IMPORT_CONTEXT_SELECTOR = '[data-superdoc-import="true"]', IMPORT_DEFAULT_TABLE_WIDTH_PCT = 5000, isImportedTableElement = (element3) => Boolean(element3?.closest?.(IMPORT_CONTEXT_SELECTOR)), Table, renderCellBorderStyle = (borders) => {
168541
168825
  if (!borders)
168542
168826
  return {};
@@ -173086,7 +173370,7 @@ var Node$13 = class Node$14 {
173086
173370
  trackedChanges: context.trackedChanges ?? []
173087
173371
  });
173088
173372
  }, _hoisted_1$6, _hoisted_2$1, _hoisted_3, _hoisted_4, ContextMenu_default, _hoisted_1$5, BasicUpload_default, _hoisted_1$4, MIN_WIDTH = 200, PPI = 96, alignment = "flex-end", Ruler_default, GenericPopover_default, _hoisted_1$3, RESIZE_HANDLE_WIDTH_PX = 9, RESIZE_HANDLE_OFFSET_PX = 4, DRAG_OVERLAY_EXTENSION_PX = 1000, MIN_DRAG_OVERLAY_WIDTH_PX = 2000, THROTTLE_INTERVAL_MS = 16, MIN_RESIZE_DELTA_PX = 1, TableResizeOverlay_default, _hoisted_1$2, OVERLAY_EXPANSION_PX = 2000, RESIZE_HANDLE_SIZE_PX = 12, MOUSE_MOVE_THROTTLE_MS = 16, DIMENSION_CHANGE_THRESHOLD_PX = 1, Z_INDEX_OVERLAY = 10, Z_INDEX_HANDLE = 15, Z_INDEX_GUIDELINE = 20, ImageResizeOverlay_default, LINK_CLICK_DEBOUNCE_MS = 300, CURSOR_UPDATE_TIMEOUT_MS = 10, LinkClickHandler_default, _hoisted_1$1, _hoisted_2, DOCX2 = "application/vnd.openxmlformats-officedocument.wordprocessingml.document", TABLE_RESIZE_HOVER_THRESHOLD = 8, TABLE_RESIZE_THROTTLE_MS = 16, SuperEditor_default, _hoisted_1, SuperInput_default, SlashMenu, Extensions;
173089
- var init_src_DoNUa3rb_es = __esm(() => {
173373
+ var init_src_De1yZkuR_es = __esm(() => {
173090
173374
  init_rolldown_runtime_B2q5OVn9_es();
173091
173375
  init_SuperConverter_BSZgN87C_es();
173092
173376
  init_jszip_ChlR43oI_es();
@@ -203979,8 +204263,8 @@ function print() { __p += __j.call(arguments, '') }
203979
204263
  return isObjectLike_default(value) && hasOwnProperty$8.call(value, "callee") && !propertyIsEnumerable$1.call(value, "callee");
203980
204264
  };
203981
204265
  stubFalse_default = stubFalse;
203982
- freeExports$2 = typeof exports_src_DoNUa3rb_es == "object" && exports_src_DoNUa3rb_es && !exports_src_DoNUa3rb_es.nodeType && exports_src_DoNUa3rb_es;
203983
- freeModule$2 = freeExports$2 && typeof module_src_DoNUa3rb_es == "object" && module_src_DoNUa3rb_es && !module_src_DoNUa3rb_es.nodeType && module_src_DoNUa3rb_es;
204266
+ freeExports$2 = typeof exports_src_De1yZkuR_es == "object" && exports_src_De1yZkuR_es && !exports_src_De1yZkuR_es.nodeType && exports_src_De1yZkuR_es;
204267
+ freeModule$2 = freeExports$2 && typeof module_src_De1yZkuR_es == "object" && module_src_De1yZkuR_es && !module_src_De1yZkuR_es.nodeType && module_src_De1yZkuR_es;
203984
204268
  Buffer$1 = freeModule$2 && freeModule$2.exports === freeExports$2 ? _root_default.Buffer : undefined;
203985
204269
  isBuffer_default = (Buffer$1 ? Buffer$1.isBuffer : undefined) || stubFalse_default;
203986
204270
  typedArrayTags = {};
@@ -203988,8 +204272,8 @@ function print() { __p += __j.call(arguments, '') }
203988
204272
  typedArrayTags[argsTag$1] = typedArrayTags[arrayTag$1] = typedArrayTags[arrayBufferTag$1] = typedArrayTags[boolTag$1] = typedArrayTags[dataViewTag$2] = typedArrayTags[dateTag$1] = typedArrayTags[errorTag$1] = typedArrayTags[funcTag] = typedArrayTags[mapTag$2] = typedArrayTags[numberTag$1] = typedArrayTags[objectTag$3] = typedArrayTags[regexpTag$1] = typedArrayTags[setTag$2] = typedArrayTags[stringTag$1] = typedArrayTags[weakMapTag$1] = false;
203989
204273
  _baseIsTypedArray_default = baseIsTypedArray;
203990
204274
  _baseUnary_default = baseUnary;
203991
- freeExports$1 = typeof exports_src_DoNUa3rb_es == "object" && exports_src_DoNUa3rb_es && !exports_src_DoNUa3rb_es.nodeType && exports_src_DoNUa3rb_es;
203992
- freeModule$1 = freeExports$1 && typeof module_src_DoNUa3rb_es == "object" && module_src_DoNUa3rb_es && !module_src_DoNUa3rb_es.nodeType && module_src_DoNUa3rb_es;
204275
+ freeExports$1 = typeof exports_src_De1yZkuR_es == "object" && exports_src_De1yZkuR_es && !exports_src_De1yZkuR_es.nodeType && exports_src_De1yZkuR_es;
204276
+ freeModule$1 = freeExports$1 && typeof module_src_De1yZkuR_es == "object" && module_src_De1yZkuR_es && !module_src_De1yZkuR_es.nodeType && module_src_De1yZkuR_es;
203993
204277
  freeProcess = freeModule$1 && freeModule$1.exports === freeExports$1 && _freeGlobal_default.process;
203994
204278
  _nodeUtil_default = function() {
203995
204279
  try {
@@ -204094,8 +204378,8 @@ function print() { __p += __j.call(arguments, '') }
204094
204378
  Stack.prototype.has = _stackHas_default;
204095
204379
  Stack.prototype.set = _stackSet_default;
204096
204380
  _Stack_default = Stack;
204097
- freeExports = typeof exports_src_DoNUa3rb_es == "object" && exports_src_DoNUa3rb_es && !exports_src_DoNUa3rb_es.nodeType && exports_src_DoNUa3rb_es;
204098
- freeModule = freeExports && typeof module_src_DoNUa3rb_es == "object" && module_src_DoNUa3rb_es && !module_src_DoNUa3rb_es.nodeType && module_src_DoNUa3rb_es;
204381
+ freeExports = typeof exports_src_De1yZkuR_es == "object" && exports_src_De1yZkuR_es && !exports_src_De1yZkuR_es.nodeType && exports_src_De1yZkuR_es;
204382
+ freeModule = freeExports && typeof module_src_De1yZkuR_es == "object" && module_src_De1yZkuR_es && !module_src_De1yZkuR_es.nodeType && module_src_De1yZkuR_es;
204099
204383
  Buffer4 = freeModule && freeModule.exports === freeExports ? _root_default.Buffer : undefined;
204100
204384
  allocUnsafe = Buffer4 ? Buffer4.allocUnsafe : undefined;
204101
204385
  _cloneBuffer_default = cloneBuffer;
@@ -211747,7 +212031,7 @@ var init_zipper_Cnk_HjM2_es = __esm(() => {
211747
212031
 
211748
212032
  // ../../packages/superdoc/dist/super-editor.es.js
211749
212033
  var init_super_editor_es = __esm(() => {
211750
- init_src_DoNUa3rb_es();
212034
+ init_src_De1yZkuR_es();
211751
212035
  init_SuperConverter_BSZgN87C_es();
211752
212036
  init_jszip_ChlR43oI_es();
211753
212037
  init_xml_js_DLE8mr0n_es();
@@ -271253,146 +271537,20 @@ var init_table_target_resolver = __esm(() => {
271253
271537
  init_errors3();
271254
271538
  });
271255
271539
 
271256
- // ../../packages/super-editor/src/extensions/table/tableHelpers/appendRows.js
271257
- function extractRowTemplateFormatting2(cellNode, schema) {
271258
- const ParagraphType = schema.nodes.paragraph;
271259
- let blockType = ParagraphType;
271260
- let blockAttrs = null;
271261
- let textMarks = [];
271262
- const blocks2 = cellNode?.content?.content || [];
271263
- for (const block of blocks2) {
271264
- const isParagraphish = block.type === ParagraphType || block.type.name === "heading";
271265
- if (isParagraphish) {
271266
- blockType = block.type || ParagraphType;
271267
- blockAttrs = block.attrs || null;
271268
- }
271269
- let foundText = null;
271270
- block.descendants?.((n) => {
271271
- if (!foundText && n.isText)
271272
- foundText = n;
271273
- });
271274
- if (foundText) {
271275
- textMarks = foundText.marks ? Array.from(foundText.marks) : [];
271276
- break;
271277
- }
271278
- }
271279
- if (!blockType || !blockType.validContent)
271280
- blockType = ParagraphType;
271281
- return { blockType, blockAttrs, textMarks };
271282
- }
271283
- function buildFormattedCellBlock2(schema, value, { blockType, blockAttrs, textMarks }, copyRowStyle = false) {
271284
- const text9 = typeof value === "string" ? value : value == null ? "" : String(value);
271285
- const type = blockType || schema.nodes.paragraph;
271286
- const marks = copyRowStyle ? textMarks || [] : [];
271287
- if (!text9) {
271288
- const content5 = marks.length > 0 ? schema.text(ZERO_WIDTH_SPACE2, marks) : null;
271289
- return type.createAndFill(blockAttrs || null, content5);
271290
- }
271291
- const textNode = schema.text(text9, marks);
271292
- return type.createAndFill(blockAttrs || null, textNode);
271293
- }
271294
- function insertRowAtIndex2({ tr, tablePos, tableNode, sourceRowIndex, insertIndex, schema }) {
271295
- const sourceRow = tableNode.child(sourceRowIndex);
271296
- if (!sourceRow)
271297
- return false;
271298
- const map8 = TableMap2.get(tableNode);
271299
- const { width, height } = map8;
271300
- const newCells = [];
271301
- const cellsToExtend = [];
271302
- const RowType = schema.nodes.tableRow;
271303
- const CellType = schema.nodes.tableCell;
271304
- const sourceFormatting = extractRowTemplateFormatting2(sourceRow.firstChild, schema);
271305
- for (let col = 0;col < width; ) {
271306
- if (insertIndex > 0 && insertIndex < height) {
271307
- const indexAbove = (insertIndex - 1) * width + col;
271308
- const indexAtInsert = insertIndex * width + col;
271309
- if (map8.map[indexAbove] === map8.map[indexAtInsert]) {
271310
- const cellPos = map8.map[indexAbove];
271311
- const cell2 = tableNode.nodeAt(cellPos);
271312
- if (cell2) {
271313
- const attrs = cell2.attrs;
271314
- cellsToExtend.push({
271315
- pos: tablePos + 1 + cellPos,
271316
- attrs: { ...attrs, rowspan: (attrs.rowspan || 1) + 1 }
271317
- });
271318
- col += attrs.colspan || 1;
271319
- continue;
271320
- }
271321
- }
271322
- }
271323
- const sourceMapIndex = sourceRowIndex * width + col;
271324
- const sourceCellPos = map8.map[sourceMapIndex];
271325
- const sourceCell = tableNode.nodeAt(sourceCellPos);
271326
- if (!sourceCell) {
271327
- const fallbackCell = sourceRow.firstChild;
271328
- const formatting2 = extractRowTemplateFormatting2(fallbackCell, schema);
271329
- const content6 = buildFormattedCellBlock2(schema, "", formatting2, true);
271330
- const newCell2 = CellType.createAndFill({ rowspan: 1, colspan: 1 }, content6);
271331
- if (newCell2)
271332
- newCells.push(newCell2);
271333
- col += 1;
271334
- continue;
271335
- }
271336
- const colspan = sourceCell.attrs.colspan || 1;
271337
- const formatting = extractRowTemplateFormatting2(sourceCell, schema);
271338
- const cellAttrs = {
271339
- ...sourceCell.attrs,
271340
- rowspan: 1
271341
- };
271342
- const content5 = buildFormattedCellBlock2(schema, "", formatting, true);
271343
- const targetCellType = sourceCell.type.name === "tableHeader" ? CellType : sourceCell.type;
271344
- const normalizedCellAttrs = sourceCell.type.name === "tableHeader" ? normalizeHeaderAttrsForBodyCell2(cellAttrs) : cellAttrs;
271345
- const newCell = targetCellType.createAndFill(normalizedCellAttrs, content5);
271346
- if (newCell)
271347
- newCells.push(newCell);
271348
- col += colspan;
271349
- }
271350
- for (const { pos, attrs } of cellsToExtend) {
271351
- tr.setNodeMarkup(pos, null, attrs);
271352
- }
271353
- let insertPos = tablePos + 1;
271354
- for (let i5 = 0;i5 < insertIndex; i5++) {
271355
- insertPos += tableNode.child(i5).nodeSize;
271356
- }
271357
- if (newCells.length > 0) {
271358
- const newRow = RowType.createAndFill(null, newCells);
271359
- if (newRow) {
271360
- tr.insert(insertPos, newRow);
271361
- const cursorPos = insertPos + ROW_START_TO_TEXT_OFFSET2;
271362
- tr.setSelection(TextSelection4.create(tr.doc, cursorPos));
271363
- const firstCellBlock = newCells[0].firstChild;
271364
- const firstTextNode = firstCellBlock?.firstChild;
271365
- if (firstTextNode?.marks?.length) {
271366
- tr.setStoredMarks(firstTextNode.marks);
271367
- } else if (sourceFormatting.textMarks?.length) {
271368
- tr.setStoredMarks(sourceFormatting.textMarks);
271369
- }
271370
- }
271371
- } else {
271372
- if (cellsToExtend.length > 0) {
271373
- const spanningCellPos = cellsToExtend[0].pos;
271374
- const cursorPos = spanningCellPos + CELL_TO_TEXT_OFFSET2;
271375
- tr.setSelection(TextSelection4.create(tr.doc, cursorPos));
271376
- }
271377
- }
271378
- return true;
271379
- }
271380
- var ZERO_WIDTH_SPACE2 = "​", ROW_START_TO_TEXT_OFFSET2 = 3, CELL_TO_TEXT_OFFSET2 = 2, normalizeHeaderAttrsForBodyCell2 = (attrs) => {
271381
- if (attrs?.borders !== null)
271382
- return attrs;
271383
- const nextAttrs = { ...attrs };
271384
- delete nextAttrs.borders;
271385
- return nextAttrs;
271386
- };
271387
- var init_appendRows = __esm(() => {
271388
- init_dist7();
271389
- init_dist4();
271390
- });
271391
-
271392
271540
  // ../../packages/super-editor/src/document-api-adapters/tables-adapter.ts
271393
271541
  function generateParaId2() {
271394
271542
  return Array.from({ length: 8 }, () => Math.floor(Math.random() * 16).toString(16)).join("").toUpperCase();
271395
271543
  }
271544
+ function createSeparatorParagraph2(schema) {
271545
+ const paragraphType = schema.nodes.paragraph;
271546
+ if (!paragraphType)
271547
+ return null;
271548
+ const separatorAttrs = {
271549
+ sdBlockId: v42(),
271550
+ paraId: generateParaId2()
271551
+ };
271552
+ return paragraphType.createAndFill(separatorAttrs) ?? paragraphType.createAndFill();
271553
+ }
271396
271554
  function buildTableSuccess2(tableAddress, trackedChangeRefs) {
271397
271555
  return {
271398
271556
  success: true,
@@ -271494,6 +271652,64 @@ function removeGridColumnWidth2(grid, deleteIndex) {
271494
271652
  colWidths.splice(boundedIndex, 1);
271495
271653
  return serializeGridColumns2(grid, { ...normalized, columns: colWidths });
271496
271654
  }
271655
+ function normalizeCellAttrsForSingleCell2(attrs) {
271656
+ const currentColwidth = Array.isArray(attrs.colwidth) ? attrs.colwidth : null;
271657
+ const tableCellProperties = {
271658
+ ...attrs.tableCellProperties ?? {}
271659
+ };
271660
+ delete tableCellProperties.gridSpan;
271661
+ delete tableCellProperties.vMerge;
271662
+ return {
271663
+ ...attrs,
271664
+ colspan: 1,
271665
+ rowspan: 1,
271666
+ colwidth: currentColwidth && currentColwidth.length > 0 ? [currentColwidth[0] ?? 0] : currentColwidth,
271667
+ tableCellProperties
271668
+ };
271669
+ }
271670
+ function normalizeClonedRowInsertCellAttrs2(sourceAttrs, fromHeaderToBody) {
271671
+ const normalizedAttrs = {
271672
+ ...sourceAttrs,
271673
+ rowspan: 1
271674
+ };
271675
+ if (fromHeaderToBody && normalizedAttrs.borders == null) {
271676
+ delete normalizedAttrs.borders;
271677
+ }
271678
+ return normalizedAttrs;
271679
+ }
271680
+ function expandMergedCellIntoSingles2({
271681
+ tr,
271682
+ tablePos,
271683
+ tableNode,
271684
+ cellPos,
271685
+ cellNode,
271686
+ rowIndex,
271687
+ columnIndex,
271688
+ rowspan,
271689
+ colspan,
271690
+ schema
271691
+ }) {
271692
+ const tableStart = tablePos + 1;
271693
+ const map8 = TableMap2.get(tableNode);
271694
+ const resetCell = cellNode.type.create(normalizeCellAttrsForSingleCell2(cellNode.attrs), cellNode.content);
271695
+ tr.replaceWith(cellPos, cellPos + cellNode.nodeSize, resetCell);
271696
+ const mapFrom = tr.mapping.maps.length;
271697
+ for (let row2 = rowIndex + rowspan - 1;row2 >= rowIndex; row2--) {
271698
+ for (let col = columnIndex + colspan - 1;col >= columnIndex; col--) {
271699
+ if (row2 === rowIndex && col === columnIndex)
271700
+ continue;
271701
+ const newCell = schema.nodes.tableCell.createAndFill();
271702
+ let insertRelPos;
271703
+ if (row2 === rowIndex) {
271704
+ const baseRelPos = map8.positionAt(rowIndex, columnIndex, tableNode);
271705
+ insertRelPos = baseRelPos + resetCell.nodeSize;
271706
+ } else {
271707
+ insertRelPos = map8.positionAt(row2, col, tableNode);
271708
+ }
271709
+ tr.insert(tr.mapping.slice(mapFrom).map(tableStart + insertRelPos), newCell);
271710
+ }
271711
+ }
271712
+ }
271497
271713
  function isBoundaryEdge2(edge) {
271498
271714
  return edge === "top" || edge === "bottom" || edge === "left" || edge === "right" || edge === "insideH" || edge === "insideV";
271499
271715
  }
@@ -271673,6 +271889,185 @@ function removeColumnFromTable2(tr, tablePos, col) {
271673
271889
  row2 += rowspan;
271674
271890
  }
271675
271891
  }
271892
+ function insertRowInTable2(tr, tablePos, sourceRowIndex, insertIndex, schema) {
271893
+ const tableNode = tr.doc.nodeAt(tablePos);
271894
+ if (!tableNode || tableNode.type.name !== "table")
271895
+ return false;
271896
+ const rowCount = tableNode.childCount;
271897
+ if (rowCount === 0)
271898
+ return false;
271899
+ const map8 = TableMap2.get(tableNode);
271900
+ const boundedInsertIndex = Math.max(0, Math.min(insertIndex, rowCount));
271901
+ const boundedSourceRowIndex = Math.max(0, Math.min(sourceRowIndex, rowCount - 1));
271902
+ const sourceRow = tableNode.child(boundedSourceRowIndex);
271903
+ if (!sourceRow)
271904
+ return false;
271905
+ const rowType = schema.nodes.tableRow;
271906
+ const defaultCellType = schema.nodes.tableCell;
271907
+ if (!rowType || !defaultCellType)
271908
+ return false;
271909
+ const newCells = [];
271910
+ const cellsToExtend = [];
271911
+ for (let col = 0;col < map8.width; ) {
271912
+ if (boundedInsertIndex > 0 && boundedInsertIndex < map8.height) {
271913
+ const indexAbove = (boundedInsertIndex - 1) * map8.width + col;
271914
+ const indexAtInsert = boundedInsertIndex * map8.width + col;
271915
+ if (map8.map[indexAbove] === map8.map[indexAtInsert]) {
271916
+ const spanningPos = map8.map[indexAbove];
271917
+ const spanningCell = tableNode.nodeAt(spanningPos);
271918
+ if (spanningCell) {
271919
+ const spanningAttrs = spanningCell.attrs;
271920
+ const rowspan = spanningAttrs.rowspan || 1;
271921
+ const colspan2 = spanningAttrs.colspan || 1;
271922
+ cellsToExtend.push({
271923
+ pos: tablePos + 1 + spanningPos,
271924
+ attrs: { ...spanningAttrs, rowspan: rowspan + 1 }
271925
+ });
271926
+ col += colspan2;
271927
+ continue;
271928
+ }
271929
+ }
271930
+ }
271931
+ const sourceMapIndex = boundedSourceRowIndex * map8.width + col;
271932
+ const sourceCellPos = map8.map[sourceMapIndex];
271933
+ const sourceCell = tableNode.nodeAt(sourceCellPos) ?? sourceRow.firstChild;
271934
+ if (!sourceCell) {
271935
+ col += 1;
271936
+ continue;
271937
+ }
271938
+ const colspan = sourceCell.attrs.colspan || 1;
271939
+ const fromHeaderToBody = sourceCell.type.name === "tableHeader";
271940
+ const targetCellType = fromHeaderToBody ? defaultCellType : sourceCell.type;
271941
+ const newCell = targetCellType.createAndFill(normalizeClonedRowInsertCellAttrs2(sourceCell.attrs, fromHeaderToBody));
271942
+ if (newCell)
271943
+ newCells.push(newCell);
271944
+ col += colspan;
271945
+ }
271946
+ for (const { pos, attrs } of cellsToExtend) {
271947
+ tr.setNodeMarkup(pos, null, attrs);
271948
+ }
271949
+ if (newCells.length === 0)
271950
+ return true;
271951
+ const newRow = rowType.createAndFill(null, newCells);
271952
+ if (!newRow)
271953
+ return false;
271954
+ let insertPos = tablePos + 1;
271955
+ for (let row2 = 0;row2 < boundedInsertIndex; row2++) {
271956
+ insertPos += tableNode.child(row2).nodeSize;
271957
+ }
271958
+ tr.insert(insertPos, newRow);
271959
+ return true;
271960
+ }
271961
+ function addColumnToTableForSplit2(tr, tablePos, col, splitRowStart, splitRowEnd) {
271962
+ const tableNode = tr.doc.nodeAt(tablePos);
271963
+ if (!tableNode || tableNode.type.name !== "table")
271964
+ return;
271965
+ const map8 = TableMap2.get(tableNode);
271966
+ const tableStart = tablePos + 1;
271967
+ const mapStart = tr.mapping.maps.length;
271968
+ const widenedOutsideSplit = new Set;
271969
+ for (let row2 = 0;row2 < map8.height; row2++) {
271970
+ const index3 = row2 * map8.width + col;
271971
+ const pos = map8.map[index3];
271972
+ const cell2 = tableNode.nodeAt(pos);
271973
+ if (!cell2)
271974
+ continue;
271975
+ const inSplitRows = row2 >= splitRowStart && row2 < splitRowEnd;
271976
+ if (!inSplitRows && col > 0) {
271977
+ const leftPos = map8.map[index3 - 1];
271978
+ const leftCell = tableNode.nodeAt(leftPos);
271979
+ if (leftCell && !widenedOutsideSplit.has(leftPos)) {
271980
+ tr.setNodeMarkup(tr.mapping.slice(mapStart).map(tableStart + leftPos), null, addColSpan2(leftCell.attrs, col - map8.colCount(leftPos)));
271981
+ widenedOutsideSplit.add(leftPos);
271982
+ }
271983
+ row2 += (cell2.attrs?.rowspan || 1) - 1;
271984
+ continue;
271985
+ }
271986
+ if (col > 0 && map8.map[index3 - 1] === pos) {
271987
+ tr.setNodeMarkup(tr.mapping.slice(mapStart).map(tableStart + pos), null, addColSpan2(cell2.attrs, col - map8.colCount(pos)));
271988
+ row2 += (cell2.attrs.rowspan || 1) - 1;
271989
+ } else {
271990
+ const refType = col > 0 ? tableNode.nodeAt(map8.map[index3 - 1])?.type ?? cell2.type : cell2.type;
271991
+ const cellPos = map8.positionAt(row2, col, tableNode);
271992
+ tr.insert(tr.mapping.slice(mapStart).map(tableStart + cellPos), refType.createAndFill());
271993
+ row2 += (cell2.attrs?.rowspan || 1) - 1;
271994
+ }
271995
+ }
271996
+ }
271997
+ function insertRowInTableForSplit2(tr, tablePos, sourceRowIndex, insertIndex, splitColStart, splitColEnd, schema) {
271998
+ const tableNode = tr.doc.nodeAt(tablePos);
271999
+ if (!tableNode || tableNode.type.name !== "table")
272000
+ return false;
272001
+ const rowCount = tableNode.childCount;
272002
+ if (rowCount === 0)
272003
+ return false;
272004
+ const map8 = TableMap2.get(tableNode);
272005
+ const boundedInsertIndex = Math.max(0, Math.min(insertIndex, rowCount));
272006
+ const boundedSourceRowIndex = Math.max(0, Math.min(sourceRowIndex, rowCount - 1));
272007
+ const sourceRow = tableNode.child(boundedSourceRowIndex);
272008
+ if (!sourceRow)
272009
+ return false;
272010
+ const rowType = schema.nodes.tableRow;
272011
+ const defaultCellType = schema.nodes.tableCell;
272012
+ if (!rowType || !defaultCellType)
272013
+ return false;
272014
+ const newCells = [];
272015
+ const cellsToExtend = new Map;
272016
+ for (let col = 0;col < map8.width; ) {
272017
+ if (boundedInsertIndex > 0 && boundedInsertIndex < map8.height) {
272018
+ const indexAbove = (boundedInsertIndex - 1) * map8.width + col;
272019
+ const indexAtInsert = boundedInsertIndex * map8.width + col;
272020
+ if (map8.map[indexAbove] === map8.map[indexAtInsert]) {
272021
+ const spanningPos = map8.map[indexAbove];
272022
+ const spanningCell = tableNode.nodeAt(spanningPos);
272023
+ if (spanningCell) {
272024
+ const spanningAttrs = spanningCell.attrs;
272025
+ const rowspan = spanningAttrs.rowspan || 1;
272026
+ const colspan2 = spanningAttrs.colspan || 1;
272027
+ cellsToExtend.set(tablePos + 1 + spanningPos, { ...spanningAttrs, rowspan: rowspan + 1 });
272028
+ col += colspan2;
272029
+ continue;
272030
+ }
272031
+ }
272032
+ }
272033
+ const sourceMapIndex = boundedSourceRowIndex * map8.width + col;
272034
+ const sourceCellPos = map8.map[sourceMapIndex];
272035
+ const sourceCell = tableNode.nodeAt(sourceCellPos) ?? sourceRow.firstChild;
272036
+ if (!sourceCell) {
272037
+ col += 1;
272038
+ continue;
272039
+ }
272040
+ const sourceAttrs = sourceCell.attrs;
272041
+ const colspan = sourceAttrs.colspan || 1;
272042
+ const overlapsSplitRange = col < splitColEnd && col + colspan > splitColStart;
272043
+ if (!overlapsSplitRange) {
272044
+ const sourceRowspan = sourceAttrs.rowspan || 1;
272045
+ cellsToExtend.set(tablePos + 1 + sourceCellPos, { ...sourceAttrs, rowspan: sourceRowspan + 1 });
272046
+ col += colspan;
272047
+ continue;
272048
+ }
272049
+ const fromHeaderToBody = sourceCell.type.name === "tableHeader";
272050
+ const targetCellType = fromHeaderToBody ? defaultCellType : sourceCell.type;
272051
+ const newCell = targetCellType.createAndFill(normalizeClonedRowInsertCellAttrs2(sourceAttrs, fromHeaderToBody));
272052
+ if (newCell)
272053
+ newCells.push(newCell);
272054
+ col += colspan;
272055
+ }
272056
+ for (const [pos, attrs] of cellsToExtend.entries()) {
272057
+ tr.setNodeMarkup(pos, null, attrs);
272058
+ }
272059
+ if (newCells.length === 0)
272060
+ return true;
272061
+ const newRow = rowType.createAndFill(null, newCells);
272062
+ if (!newRow)
272063
+ return false;
272064
+ let insertPos = tablePos + 1;
272065
+ for (let row2 = 0;row2 < boundedInsertIndex; row2++) {
272066
+ insertPos += tableNode.child(row2).nodeSize;
272067
+ }
272068
+ tr.insert(insertPos, newRow);
272069
+ return true;
272070
+ }
271676
272071
  function tablesDeleteAdapter2(editor, input2, options) {
271677
272072
  const mode = options?.changeMode ?? "direct";
271678
272073
  if (mode === "tracked") {
@@ -271851,14 +272246,10 @@ function tablesInsertRowAdapter2(editor, input2, options) {
271851
272246
  break;
271852
272247
  const insertIdx = input2.position === "above" ? rowIndex + i5 : rowIndex + 1 + i5;
271853
272248
  const sourceIdx = input2.position === "above" ? rowIndex + i5 : rowIndex;
271854
- insertRowAtIndex2({
271855
- tr,
271856
- tablePos,
271857
- tableNode: currentTableNode,
271858
- sourceRowIndex: Math.min(sourceIdx, currentTableNode.childCount - 1),
271859
- insertIndex: Math.min(insertIdx, currentTableNode.childCount),
271860
- schema
271861
- });
272249
+ const didInsertRow = insertRowInTable2(tr, tablePos, Math.min(sourceIdx, currentTableNode.childCount - 1), Math.min(insertIdx, currentTableNode.childCount), schema);
272250
+ if (!didInsertRow) {
272251
+ return toTableFailure2("INVALID_TARGET", "Row insertion could not be applied.");
272252
+ }
271862
272253
  }
271863
272254
  if (mode === "tracked")
271864
272255
  applyTrackedMutationMeta2(tr);
@@ -272367,8 +272758,13 @@ function tablesSplitAdapter2(editor, input2, options) {
272367
272758
  delete newTableAttrs.paraId;
272368
272759
  delete newTableAttrs.textId;
272369
272760
  const newTable = schema.nodes.table.create(newTableAttrs, secondTableRows);
272761
+ const separatorParagraph = createSeparatorParagraph2(schema);
272762
+ if (!separatorParagraph) {
272763
+ return toTableFailure2("INVALID_TARGET", "Table split could not create a separator paragraph.");
272764
+ }
272370
272765
  const insertPos = tr.mapping.slice(mapFrom).map(tablePos + tableNode.nodeSize);
272371
- tr.insert(insertPos, newTable);
272766
+ tr.insert(insertPos, separatorParagraph);
272767
+ tr.insert(insertPos + separatorParagraph.nodeSize, newTable);
272372
272768
  applyDirectMutationMeta2(tr);
272373
272769
  editor.dispatch(tr);
272374
272770
  clearIndexCache2(editor);
@@ -272702,40 +273098,20 @@ function tablesUnmergeCellsAdapter2(editor, input2, options) {
272702
273098
  try {
272703
273099
  const tr = editor.state.tr;
272704
273100
  const tablePos = table2.candidate.pos;
272705
- const tableStart = tablePos + 1;
272706
273101
  const tableNode = table2.candidate.node;
272707
- const map8 = TableMap2.get(tableNode);
272708
273102
  const schema = editor.state.schema;
272709
- const currentColwidth = Array.isArray(attrs.colwidth) ? attrs.colwidth : null;
272710
- const tableCellProperties = {
272711
- ...attrs.tableCellProperties ?? {}
272712
- };
272713
- delete tableCellProperties.gridSpan;
272714
- delete tableCellProperties.vMerge;
272715
- const resetCell = cellNode.type.create({
272716
- ...attrs,
272717
- colspan: 1,
272718
- rowspan: 1,
272719
- colwidth: currentColwidth && currentColwidth.length > 0 ? [currentColwidth[0] ?? 0] : currentColwidth,
272720
- tableCellProperties
272721
- }, cellNode.content);
272722
- tr.replaceWith(cellPos, cellPos + cellNode.nodeSize, resetCell);
272723
- const mapFrom = tr.mapping.maps.length;
272724
- for (let row2 = rowIndex + rowspan - 1;row2 >= rowIndex; row2--) {
272725
- for (let col = columnIndex + colspan - 1;col >= columnIndex; col--) {
272726
- if (row2 === rowIndex && col === columnIndex)
272727
- continue;
272728
- const newCell = schema.nodes.tableCell.createAndFill();
272729
- let insertRelPos;
272730
- if (row2 === rowIndex) {
272731
- const baseRelPos = map8.positionAt(rowIndex, columnIndex, tableNode);
272732
- insertRelPos = baseRelPos + resetCell.nodeSize;
272733
- } else {
272734
- insertRelPos = map8.positionAt(row2, col, tableNode);
272735
- }
272736
- tr.insert(tr.mapping.slice(mapFrom).map(tableStart + insertRelPos), newCell);
272737
- }
272738
- }
273103
+ expandMergedCellIntoSingles2({
273104
+ tr,
273105
+ tablePos,
273106
+ tableNode,
273107
+ cellPos,
273108
+ cellNode,
273109
+ rowIndex,
273110
+ columnIndex,
273111
+ rowspan,
273112
+ colspan,
273113
+ schema
273114
+ });
272739
273115
  applyDirectMutationMeta2(tr);
272740
273116
  editor.dispatch(tr);
272741
273117
  clearIndexCache2(editor);
@@ -272754,9 +273130,6 @@ function tablesSplitCellAdapter2(editor, input2, options) {
272754
273130
  const attrs = cellNode.attrs;
272755
273131
  const currentColspan = attrs.colspan || 1;
272756
273132
  const currentRowspan = attrs.rowspan || 1;
272757
- if ((currentColspan > 1 || currentRowspan > 1) && input2.rows === currentRowspan && input2.columns === currentColspan) {
272758
- return tablesUnmergeCellsAdapter2(editor, input2, options);
272759
- }
272760
273133
  if (input2.rows === 1 && input2.columns === 1 && currentColspan === 1 && currentRowspan === 1) {
272761
273134
  return toTableFailure2("NO_OP", "Cell is already a single cell and split target is 1×1.");
272762
273135
  }
@@ -272766,25 +273139,78 @@ function tablesSplitCellAdapter2(editor, input2, options) {
272766
273139
  try {
272767
273140
  const tr = editor.state.tr;
272768
273141
  const tablePos = table2.candidate.pos;
272769
- const tableStart = tablePos + 1;
272770
- const tableNode = table2.candidate.node;
272771
- const map8 = TableMap2.get(tableNode);
272772
273142
  const schema = editor.state.schema;
272773
- const targetColspan = Math.max(input2.columns, currentColspan);
272774
- const targetRowspan = Math.max(input2.rows, currentRowspan);
272775
- const splitAttrs = { ...attrs, colspan: 1, rowspan: 1 };
272776
- tr.setNodeMarkup(cellPos, null, splitAttrs);
272777
- const mapFrom = tr.mapping.maps.length;
272778
- for (let row2 = rowIndex + targetRowspan - 1;row2 >= rowIndex; row2--) {
272779
- for (let col = columnIndex + targetColspan - 1;col >= columnIndex; col--) {
272780
- if (row2 === rowIndex && col === columnIndex)
272781
- continue;
272782
- const newCell = schema.nodes.tableCell.createAndFill();
272783
- if (row2 < map8.height && col < map8.width) {
272784
- const insertPos = map8.positionAt(row2, col, tableNode);
272785
- tr.insert(tr.mapping.slice(mapFrom).map(tableStart + insertPos), newCell);
272786
- }
273143
+ const targetColumns = Math.max(input2.columns, currentColspan);
273144
+ const targetRows = Math.max(input2.rows, currentRowspan);
273145
+ const additionalColumns = Math.max(0, targetColumns - currentColspan);
273146
+ const additionalRows = Math.max(0, targetRows - currentRowspan);
273147
+ let updatedGrid = table2.candidate.node.attrs.grid;
273148
+ if (currentColspan > 1 || currentRowspan > 1) {
273149
+ const currentTableNode = tr.doc.nodeAt(tablePos);
273150
+ if (!currentTableNode || currentTableNode.type.name !== "table") {
273151
+ return toTableFailure2("INVALID_TARGET", "Cell split target table is unavailable.");
273152
+ }
273153
+ const currentCellPos = tr.mapping.map(cellPos, 1);
273154
+ const currentCellNode = tr.doc.nodeAt(currentCellPos);
273155
+ if (!currentCellNode || currentCellNode.type.name !== "tableCell" && currentCellNode.type.name !== "tableHeader") {
273156
+ return toTableFailure2("INVALID_TARGET", "Split target cell is unavailable.");
272787
273157
  }
273158
+ expandMergedCellIntoSingles2({
273159
+ tr,
273160
+ tablePos,
273161
+ tableNode: currentTableNode,
273162
+ cellPos: currentCellPos,
273163
+ cellNode: currentCellNode,
273164
+ rowIndex,
273165
+ columnIndex,
273166
+ rowspan: currentRowspan,
273167
+ colspan: currentColspan,
273168
+ schema
273169
+ });
273170
+ }
273171
+ for (let columnOffset = 0;columnOffset < additionalColumns; columnOffset++) {
273172
+ const insertColumnIndex = columnIndex + currentColspan + columnOffset;
273173
+ addColumnToTableForSplit2(tr, tablePos, insertColumnIndex, rowIndex, rowIndex + targetRows);
273174
+ updatedGrid = insertGridColumnWidth2(updatedGrid, insertColumnIndex) ?? updatedGrid;
273175
+ }
273176
+ for (let rowOffset = 0;rowOffset < additionalRows; rowOffset++) {
273177
+ const currentTableNode = tr.doc.nodeAt(tablePos);
273178
+ if (!currentTableNode || currentTableNode.type.name !== "table") {
273179
+ return toTableFailure2("INVALID_TARGET", "Cell split target table is unavailable.");
273180
+ }
273181
+ const insertIndex = rowIndex + currentRowspan + rowOffset;
273182
+ const boundedInsertIndex = Math.max(0, Math.min(insertIndex, currentTableNode.childCount));
273183
+ const sourceRowIndex = Math.max(0, Math.min(boundedInsertIndex - 1, currentTableNode.childCount - 1));
273184
+ const didInsertRow = insertRowInTableForSplit2(tr, tablePos, sourceRowIndex, boundedInsertIndex, columnIndex, columnIndex + targetColumns, schema);
273185
+ if (!didInsertRow) {
273186
+ return toTableFailure2("INVALID_TARGET", "Cell split could not insert required rows.");
273187
+ }
273188
+ }
273189
+ const finalTableNode = tr.doc.nodeAt(tablePos);
273190
+ if (!finalTableNode || finalTableNode.type.name !== "table") {
273191
+ return toTableFailure2("INVALID_TARGET", "Cell split target table is unavailable.");
273192
+ }
273193
+ const mappedTargetCellPos = tr.mapping.map(cellPos, 1);
273194
+ let finalTargetCellPos = mappedTargetCellPos;
273195
+ let finalTargetCell = tr.doc.nodeAt(finalTargetCellPos);
273196
+ if (!finalTargetCell || finalTargetCell.type.name !== "tableCell" && finalTargetCell.type.name !== "tableHeader") {
273197
+ const tableStart = tablePos + 1;
273198
+ const finalMap = TableMap2.get(finalTableNode);
273199
+ const finalTargetRelPos = finalMap.positionAt(rowIndex, columnIndex, finalTableNode);
273200
+ finalTargetCellPos = tableStart + finalTargetRelPos;
273201
+ finalTargetCell = tr.doc.nodeAt(finalTargetCellPos);
273202
+ }
273203
+ if (!finalTargetCell || finalTargetCell.type.name !== "tableCell" && finalTargetCell.type.name !== "tableHeader") {
273204
+ return toTableFailure2("INVALID_TARGET", "Split target cell is unavailable.");
273205
+ }
273206
+ tr.setNodeMarkup(finalTargetCellPos, null, normalizeCellAttrsForSingleCell2(finalTargetCell.attrs));
273207
+ if (updatedGrid) {
273208
+ const currentTableAttrs = finalTableNode.attrs;
273209
+ tr.setNodeMarkup(tablePos, null, {
273210
+ ...currentTableAttrs,
273211
+ grid: updatedGrid,
273212
+ userEdited: true
273213
+ });
272788
273214
  }
272789
273215
  applyDirectMutationMeta2(tr);
272790
273216
  editor.dispatch(tr);
@@ -273134,6 +273560,34 @@ function tablesSetShadingAdapter2(editor, input2, options) {
273134
273560
  currentProps.shading = { fill: input2.color, val: "clear", color: "auto" };
273135
273561
  const syncAttrs = resolved.scope === "table" ? syncExtractedTableAttrs2(currentProps) : {};
273136
273562
  tr.setNodeMarkup(resolved.pos, null, { ...currentAttrs, [propsKey]: currentProps, ...syncAttrs });
273563
+ if (resolved.scope === "table") {
273564
+ const tableNode = resolved.node;
273565
+ const tableStart = resolved.pos + 1;
273566
+ const map8 = TableMap2.get(tableNode);
273567
+ const seen = new Set;
273568
+ const mapFrom = tr.mapping.maps.length;
273569
+ for (let i5 = 0;i5 < map8.map.length; i5++) {
273570
+ const relPos = map8.map[i5];
273571
+ if (seen.has(relPos))
273572
+ continue;
273573
+ seen.add(relPos);
273574
+ const cellNode = tableNode.nodeAt(relPos);
273575
+ if (!cellNode)
273576
+ continue;
273577
+ const cellAttrs = cellNode.attrs;
273578
+ const cellProps = { ...cellAttrs.tableCellProperties ?? {} };
273579
+ cellProps.shading = { fill: input2.color, val: "clear", color: "auto" };
273580
+ const nextCellAttrs = {
273581
+ ...cellAttrs,
273582
+ tableCellProperties: cellProps
273583
+ };
273584
+ if (input2.color === "auto")
273585
+ delete nextCellAttrs.background;
273586
+ else
273587
+ nextCellAttrs.background = { color: input2.color };
273588
+ tr.setNodeMarkup(tr.mapping.slice(mapFrom).map(tableStart + relPos), null, nextCellAttrs);
273589
+ }
273590
+ }
273137
273591
  applyDirectMutationMeta2(tr);
273138
273592
  editor.dispatch(tr);
273139
273593
  clearIndexCache2(editor);
@@ -273558,7 +274012,6 @@ var init_tables_adapter = __esm(() => {
273558
274012
  init_tracked_change_refs();
273559
274013
  init_errors3();
273560
274014
  init_node_address_resolver();
273561
- init_appendRows();
273562
274015
  init_helpers();
273563
274016
  POINTS_TO_PIXELS2 = 96 / 72;
273564
274017
  PIXELS_TO_TWIPS2 = 1440 / 96;