@superdoc-dev/cli 0.2.0-next.35 → 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 +833 -469
  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-dG-lytW9.es.js
101809
- var exports_src_dG_lytW9_es = {};
101810
- __export(exports_src_dG_lytW9_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,201 +115653,6 @@ 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;
115665
- }
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)
115674
- 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
115709
- };
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
115656
  function generateParaId() {
115852
115657
  return Array.from({ length: 8 }, () => Math.floor(Math.random() * 16).toString(16)).join("").toUpperCase();
115853
115658
  }
@@ -115979,6 +115784,47 @@ function removeGridColumnWidth(grid, deleteIndex) {
115979
115784
  columns: colWidths
115980
115785
  });
115981
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
+ }
115982
115828
  function isBoundaryEdge(edge) {
115983
115829
  return edge === "top" || edge === "bottom" || edge === "left" || edge === "right" || edge === "insideH" || edge === "insideV";
115984
115830
  }
@@ -116168,6 +116014,186 @@ function removeColumnFromTable(tr, tablePos, col) {
116168
116014
  row2 += rowspan;
116169
116015
  }
116170
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
+ }
116171
116197
  function tablesDeleteAdapter(editor, input2, options) {
116172
116198
  const mode = options?.changeMode ?? "direct";
116173
116199
  if (mode === "tracked")
@@ -116337,14 +116363,8 @@ function tablesInsertRowAdapter(editor, input2, options) {
116337
116363
  break;
116338
116364
  const insertIdx = input2.position === "above" ? rowIndex + i$1 : rowIndex + 1 + i$1;
116339
116365
  const sourceIdx = input2.position === "above" ? rowIndex + i$1 : rowIndex;
116340
- insertRowAtIndex({
116341
- tr,
116342
- tablePos,
116343
- tableNode: currentTableNode,
116344
- sourceRowIndex: Math.min(sourceIdx, currentTableNode.childCount - 1),
116345
- insertIndex: Math.min(insertIdx, currentTableNode.childCount),
116346
- schema
116347
- });
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.");
116348
116368
  }
116349
116369
  if (mode === "tracked")
116350
116370
  applyTrackedMutationMeta(tr);
@@ -117156,35 +117176,21 @@ function tablesUnmergeCellsAdapter(editor, input2, options) {
117156
117176
  return buildTableSuccess(table2.address);
117157
117177
  try {
117158
117178
  const tr = editor.state.tr;
117159
- const tableStart = table2.candidate.pos + 1;
117179
+ const tablePos = table2.candidate.pos;
117160
117180
  const tableNode = table2.candidate.node;
117161
- const map$22 = TableMap.get(tableNode);
117162
117181
  const schema = editor.state.schema;
117163
- const currentColwidth = Array.isArray(attrs.colwidth) ? attrs.colwidth : null;
117164
- const tableCellProperties = { ...attrs.tableCellProperties ?? {} };
117165
- delete tableCellProperties.gridSpan;
117166
- delete tableCellProperties.vMerge;
117167
- const resetCell = cellNode.type.create({
117168
- ...attrs,
117169
- colspan: 1,
117170
- rowspan: 1,
117171
- colwidth: currentColwidth && currentColwidth.length > 0 ? [currentColwidth[0] ?? 0] : currentColwidth,
117172
- tableCellProperties
117173
- }, cellNode.content);
117174
- tr.replaceWith(cellPos, cellPos + cellNode.nodeSize, resetCell);
117175
- const mapFrom = tr.mapping.maps.length;
117176
- for (let row2 = rowIndex + rowspan - 1;row2 >= rowIndex; row2--)
117177
- for (let col = columnIndex + colspan - 1;col >= columnIndex; col--) {
117178
- if (row2 === rowIndex && col === columnIndex)
117179
- continue;
117180
- const newCell = schema.nodes.tableCell.createAndFill();
117181
- let insertRelPos;
117182
- if (row2 === rowIndex)
117183
- insertRelPos = map$22.positionAt(rowIndex, columnIndex, tableNode) + resetCell.nodeSize;
117184
- else
117185
- insertRelPos = map$22.positionAt(row2, col, tableNode);
117186
- tr.insert(tr.mapping.slice(mapFrom).map(tableStart + insertRelPos), newCell);
117187
- }
117182
+ expandMergedCellIntoSingles({
117183
+ tr,
117184
+ tablePos,
117185
+ tableNode,
117186
+ cellPos,
117187
+ cellNode,
117188
+ rowIndex,
117189
+ columnIndex,
117190
+ rowspan,
117191
+ colspan,
117192
+ schema
117193
+ });
117188
117194
  applyDirectMutationMeta(tr);
117189
117195
  editor.dispatch(tr);
117190
117196
  clearIndexCache(editor);
@@ -117201,37 +117207,74 @@ function tablesSplitCellAdapter(editor, input2, options) {
117201
117207
  const attrs = cellNode.attrs;
117202
117208
  const currentColspan = attrs.colspan || 1;
117203
117209
  const currentRowspan = attrs.rowspan || 1;
117204
- if ((currentColspan > 1 || currentRowspan > 1) && input2.rows === currentRowspan && input2.columns === currentColspan)
117205
- return tablesUnmergeCellsAdapter(editor, input2, options);
117206
117210
  if (input2.rows === 1 && input2.columns === 1 && currentColspan === 1 && currentRowspan === 1)
117207
117211
  return toTableFailure("NO_OP", "Cell is already a single cell and split target is 1×1.");
117208
117212
  if (options?.dryRun)
117209
117213
  return buildTableSuccess(table2.address);
117210
117214
  try {
117211
117215
  const tr = editor.state.tr;
117212
- const tableStart = table2.candidate.pos + 1;
117213
- const tableNode = table2.candidate.node;
117214
- const map$22 = TableMap.get(tableNode);
117216
+ const tablePos = table2.candidate.pos;
117215
117217
  const schema = editor.state.schema;
117216
- const targetColspan = Math.max(input2.columns, currentColspan);
117217
- const targetRowspan = Math.max(input2.rows, currentRowspan);
117218
- const splitAttrs = {
117219
- ...attrs,
117220
- colspan: 1,
117221
- rowspan: 1
117222
- };
117223
- tr.setNodeMarkup(cellPos, null, splitAttrs);
117224
- const mapFrom = tr.mapping.maps.length;
117225
- for (let row2 = rowIndex + targetRowspan - 1;row2 >= rowIndex; row2--)
117226
- for (let col = columnIndex + targetColspan - 1;col >= columnIndex; col--) {
117227
- if (row2 === rowIndex && col === columnIndex)
117228
- continue;
117229
- const newCell = schema.nodes.tableCell.createAndFill();
117230
- if (row2 < map$22.height && col < map$22.width) {
117231
- const insertPos = map$22.positionAt(row2, col, tableNode);
117232
- tr.insert(tr.mapping.slice(mapFrom).map(tableStart + insertPos), newCell);
117233
- }
117234
- }
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
+ }
117235
117278
  applyDirectMutationMeta(tr);
117236
117279
  editor.dispatch(tr);
117237
117280
  clearIndexCache(editor);
@@ -138477,6 +138520,201 @@ function cellWrapping($pos) {
138477
138520
  }
138478
138521
  return null;
138479
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
+ }
138480
138718
  function getCellType({ node: node3, state }) {
138481
138719
  return tableNodeTypes(state.schema)[node3.type.spec.tableRole];
138482
138720
  }
@@ -154732,13 +154970,7 @@ var Node$13 = class Node$14 {
154732
154970
  console.warn("Failed to initialize developer tools:", error);
154733
154971
  }
154734
154972
  }
154735
- }, 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) => {
154736
- if (attrs?.borders !== null)
154737
- return attrs;
154738
- const nextAttrs = { ...attrs };
154739
- delete nextAttrs.borders;
154740
- return nextAttrs;
154741
- }, 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 {
154742
154974
  constructor(config2) {
154743
154975
  this.search = config2.search;
154744
154976
  this.caseSensitive = !!config2.caseSensitive;
@@ -168583,6 +168815,12 @@ var Node$13 = class Node$14 {
168583
168815
  return false;
168584
168816
  editor.commands.deleteTable();
168585
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;
168586
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) => {
168587
168825
  if (!borders)
168588
168826
  return {};
@@ -173132,7 +173370,7 @@ var Node$13 = class Node$14 {
173132
173370
  trackedChanges: context.trackedChanges ?? []
173133
173371
  });
173134
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;
173135
- var init_src_dG_lytW9_es = __esm(() => {
173373
+ var init_src_De1yZkuR_es = __esm(() => {
173136
173374
  init_rolldown_runtime_B2q5OVn9_es();
173137
173375
  init_SuperConverter_BSZgN87C_es();
173138
173376
  init_jszip_ChlR43oI_es();
@@ -204025,8 +204263,8 @@ function print() { __p += __j.call(arguments, '') }
204025
204263
  return isObjectLike_default(value) && hasOwnProperty$8.call(value, "callee") && !propertyIsEnumerable$1.call(value, "callee");
204026
204264
  };
204027
204265
  stubFalse_default = stubFalse;
204028
- freeExports$2 = typeof exports_src_dG_lytW9_es == "object" && exports_src_dG_lytW9_es && !exports_src_dG_lytW9_es.nodeType && exports_src_dG_lytW9_es;
204029
- freeModule$2 = freeExports$2 && typeof module_src_dG_lytW9_es == "object" && module_src_dG_lytW9_es && !module_src_dG_lytW9_es.nodeType && module_src_dG_lytW9_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;
204030
204268
  Buffer$1 = freeModule$2 && freeModule$2.exports === freeExports$2 ? _root_default.Buffer : undefined;
204031
204269
  isBuffer_default = (Buffer$1 ? Buffer$1.isBuffer : undefined) || stubFalse_default;
204032
204270
  typedArrayTags = {};
@@ -204034,8 +204272,8 @@ function print() { __p += __j.call(arguments, '') }
204034
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;
204035
204273
  _baseIsTypedArray_default = baseIsTypedArray;
204036
204274
  _baseUnary_default = baseUnary;
204037
- freeExports$1 = typeof exports_src_dG_lytW9_es == "object" && exports_src_dG_lytW9_es && !exports_src_dG_lytW9_es.nodeType && exports_src_dG_lytW9_es;
204038
- freeModule$1 = freeExports$1 && typeof module_src_dG_lytW9_es == "object" && module_src_dG_lytW9_es && !module_src_dG_lytW9_es.nodeType && module_src_dG_lytW9_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;
204039
204277
  freeProcess = freeModule$1 && freeModule$1.exports === freeExports$1 && _freeGlobal_default.process;
204040
204278
  _nodeUtil_default = function() {
204041
204279
  try {
@@ -204140,8 +204378,8 @@ function print() { __p += __j.call(arguments, '') }
204140
204378
  Stack.prototype.has = _stackHas_default;
204141
204379
  Stack.prototype.set = _stackSet_default;
204142
204380
  _Stack_default = Stack;
204143
- freeExports = typeof exports_src_dG_lytW9_es == "object" && exports_src_dG_lytW9_es && !exports_src_dG_lytW9_es.nodeType && exports_src_dG_lytW9_es;
204144
- freeModule = freeExports && typeof module_src_dG_lytW9_es == "object" && module_src_dG_lytW9_es && !module_src_dG_lytW9_es.nodeType && module_src_dG_lytW9_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;
204145
204383
  Buffer4 = freeModule && freeModule.exports === freeExports ? _root_default.Buffer : undefined;
204146
204384
  allocUnsafe = Buffer4 ? Buffer4.allocUnsafe : undefined;
204147
204385
  _cloneBuffer_default = cloneBuffer;
@@ -211793,7 +212031,7 @@ var init_zipper_Cnk_HjM2_es = __esm(() => {
211793
212031
 
211794
212032
  // ../../packages/superdoc/dist/super-editor.es.js
211795
212033
  var init_super_editor_es = __esm(() => {
211796
- init_src_dG_lytW9_es();
212034
+ init_src_De1yZkuR_es();
211797
212035
  init_SuperConverter_BSZgN87C_es();
211798
212036
  init_jszip_ChlR43oI_es();
211799
212037
  init_xml_js_DLE8mr0n_es();
@@ -271299,142 +271537,6 @@ var init_table_target_resolver = __esm(() => {
271299
271537
  init_errors3();
271300
271538
  });
271301
271539
 
271302
- // ../../packages/super-editor/src/extensions/table/tableHelpers/appendRows.js
271303
- function extractRowTemplateFormatting2(cellNode, schema) {
271304
- const ParagraphType = schema.nodes.paragraph;
271305
- let blockType = ParagraphType;
271306
- let blockAttrs = null;
271307
- let textMarks = [];
271308
- const blocks2 = cellNode?.content?.content || [];
271309
- for (const block of blocks2) {
271310
- const isParagraphish = block.type === ParagraphType || block.type.name === "heading";
271311
- if (isParagraphish) {
271312
- blockType = block.type || ParagraphType;
271313
- blockAttrs = block.attrs || null;
271314
- }
271315
- let foundText = null;
271316
- block.descendants?.((n) => {
271317
- if (!foundText && n.isText)
271318
- foundText = n;
271319
- });
271320
- if (foundText) {
271321
- textMarks = foundText.marks ? Array.from(foundText.marks) : [];
271322
- break;
271323
- }
271324
- }
271325
- if (!blockType || !blockType.validContent)
271326
- blockType = ParagraphType;
271327
- return { blockType, blockAttrs, textMarks };
271328
- }
271329
- function buildFormattedCellBlock2(schema, value, { blockType, blockAttrs, textMarks }, copyRowStyle = false) {
271330
- const text9 = typeof value === "string" ? value : value == null ? "" : String(value);
271331
- const type = blockType || schema.nodes.paragraph;
271332
- const marks = copyRowStyle ? textMarks || [] : [];
271333
- if (!text9) {
271334
- const content5 = marks.length > 0 ? schema.text(ZERO_WIDTH_SPACE2, marks) : null;
271335
- return type.createAndFill(blockAttrs || null, content5);
271336
- }
271337
- const textNode = schema.text(text9, marks);
271338
- return type.createAndFill(blockAttrs || null, textNode);
271339
- }
271340
- function insertRowAtIndex2({ tr, tablePos, tableNode, sourceRowIndex, insertIndex, schema }) {
271341
- const sourceRow = tableNode.child(sourceRowIndex);
271342
- if (!sourceRow)
271343
- return false;
271344
- const map8 = TableMap2.get(tableNode);
271345
- const { width, height } = map8;
271346
- const newCells = [];
271347
- const cellsToExtend = [];
271348
- const RowType = schema.nodes.tableRow;
271349
- const CellType = schema.nodes.tableCell;
271350
- const sourceFormatting = extractRowTemplateFormatting2(sourceRow.firstChild, schema);
271351
- for (let col = 0;col < width; ) {
271352
- if (insertIndex > 0 && insertIndex < height) {
271353
- const indexAbove = (insertIndex - 1) * width + col;
271354
- const indexAtInsert = insertIndex * width + col;
271355
- if (map8.map[indexAbove] === map8.map[indexAtInsert]) {
271356
- const cellPos = map8.map[indexAbove];
271357
- const cell2 = tableNode.nodeAt(cellPos);
271358
- if (cell2) {
271359
- const attrs = cell2.attrs;
271360
- cellsToExtend.push({
271361
- pos: tablePos + 1 + cellPos,
271362
- attrs: { ...attrs, rowspan: (attrs.rowspan || 1) + 1 }
271363
- });
271364
- col += attrs.colspan || 1;
271365
- continue;
271366
- }
271367
- }
271368
- }
271369
- const sourceMapIndex = sourceRowIndex * width + col;
271370
- const sourceCellPos = map8.map[sourceMapIndex];
271371
- const sourceCell = tableNode.nodeAt(sourceCellPos);
271372
- if (!sourceCell) {
271373
- const fallbackCell = sourceRow.firstChild;
271374
- const formatting2 = extractRowTemplateFormatting2(fallbackCell, schema);
271375
- const content6 = buildFormattedCellBlock2(schema, "", formatting2, true);
271376
- const newCell2 = CellType.createAndFill({ rowspan: 1, colspan: 1 }, content6);
271377
- if (newCell2)
271378
- newCells.push(newCell2);
271379
- col += 1;
271380
- continue;
271381
- }
271382
- const colspan = sourceCell.attrs.colspan || 1;
271383
- const formatting = extractRowTemplateFormatting2(sourceCell, schema);
271384
- const cellAttrs = {
271385
- ...sourceCell.attrs,
271386
- rowspan: 1
271387
- };
271388
- const content5 = buildFormattedCellBlock2(schema, "", formatting, true);
271389
- const targetCellType = sourceCell.type.name === "tableHeader" ? CellType : sourceCell.type;
271390
- const normalizedCellAttrs = sourceCell.type.name === "tableHeader" ? normalizeHeaderAttrsForBodyCell2(cellAttrs) : cellAttrs;
271391
- const newCell = targetCellType.createAndFill(normalizedCellAttrs, content5);
271392
- if (newCell)
271393
- newCells.push(newCell);
271394
- col += colspan;
271395
- }
271396
- for (const { pos, attrs } of cellsToExtend) {
271397
- tr.setNodeMarkup(pos, null, attrs);
271398
- }
271399
- let insertPos = tablePos + 1;
271400
- for (let i5 = 0;i5 < insertIndex; i5++) {
271401
- insertPos += tableNode.child(i5).nodeSize;
271402
- }
271403
- if (newCells.length > 0) {
271404
- const newRow = RowType.createAndFill(null, newCells);
271405
- if (newRow) {
271406
- tr.insert(insertPos, newRow);
271407
- const cursorPos = insertPos + ROW_START_TO_TEXT_OFFSET2;
271408
- tr.setSelection(TextSelection4.create(tr.doc, cursorPos));
271409
- const firstCellBlock = newCells[0].firstChild;
271410
- const firstTextNode = firstCellBlock?.firstChild;
271411
- if (firstTextNode?.marks?.length) {
271412
- tr.setStoredMarks(firstTextNode.marks);
271413
- } else if (sourceFormatting.textMarks?.length) {
271414
- tr.setStoredMarks(sourceFormatting.textMarks);
271415
- }
271416
- }
271417
- } else {
271418
- if (cellsToExtend.length > 0) {
271419
- const spanningCellPos = cellsToExtend[0].pos;
271420
- const cursorPos = spanningCellPos + CELL_TO_TEXT_OFFSET2;
271421
- tr.setSelection(TextSelection4.create(tr.doc, cursorPos));
271422
- }
271423
- }
271424
- return true;
271425
- }
271426
- var ZERO_WIDTH_SPACE2 = "​", ROW_START_TO_TEXT_OFFSET2 = 3, CELL_TO_TEXT_OFFSET2 = 2, normalizeHeaderAttrsForBodyCell2 = (attrs) => {
271427
- if (attrs?.borders !== null)
271428
- return attrs;
271429
- const nextAttrs = { ...attrs };
271430
- delete nextAttrs.borders;
271431
- return nextAttrs;
271432
- };
271433
- var init_appendRows = __esm(() => {
271434
- init_dist7();
271435
- init_dist4();
271436
- });
271437
-
271438
271540
  // ../../packages/super-editor/src/document-api-adapters/tables-adapter.ts
271439
271541
  function generateParaId2() {
271440
271542
  return Array.from({ length: 8 }, () => Math.floor(Math.random() * 16).toString(16)).join("").toUpperCase();
@@ -271550,6 +271652,64 @@ function removeGridColumnWidth2(grid, deleteIndex) {
271550
271652
  colWidths.splice(boundedIndex, 1);
271551
271653
  return serializeGridColumns2(grid, { ...normalized, columns: colWidths });
271552
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
+ }
271553
271713
  function isBoundaryEdge2(edge) {
271554
271714
  return edge === "top" || edge === "bottom" || edge === "left" || edge === "right" || edge === "insideH" || edge === "insideV";
271555
271715
  }
@@ -271729,6 +271889,185 @@ function removeColumnFromTable2(tr, tablePos, col) {
271729
271889
  row2 += rowspan;
271730
271890
  }
271731
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
+ }
271732
272071
  function tablesDeleteAdapter2(editor, input2, options) {
271733
272072
  const mode = options?.changeMode ?? "direct";
271734
272073
  if (mode === "tracked") {
@@ -271907,14 +272246,10 @@ function tablesInsertRowAdapter2(editor, input2, options) {
271907
272246
  break;
271908
272247
  const insertIdx = input2.position === "above" ? rowIndex + i5 : rowIndex + 1 + i5;
271909
272248
  const sourceIdx = input2.position === "above" ? rowIndex + i5 : rowIndex;
271910
- insertRowAtIndex2({
271911
- tr,
271912
- tablePos,
271913
- tableNode: currentTableNode,
271914
- sourceRowIndex: Math.min(sourceIdx, currentTableNode.childCount - 1),
271915
- insertIndex: Math.min(insertIdx, currentTableNode.childCount),
271916
- schema
271917
- });
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
+ }
271918
272253
  }
271919
272254
  if (mode === "tracked")
271920
272255
  applyTrackedMutationMeta2(tr);
@@ -272763,40 +273098,20 @@ function tablesUnmergeCellsAdapter2(editor, input2, options) {
272763
273098
  try {
272764
273099
  const tr = editor.state.tr;
272765
273100
  const tablePos = table2.candidate.pos;
272766
- const tableStart = tablePos + 1;
272767
273101
  const tableNode = table2.candidate.node;
272768
- const map8 = TableMap2.get(tableNode);
272769
273102
  const schema = editor.state.schema;
272770
- const currentColwidth = Array.isArray(attrs.colwidth) ? attrs.colwidth : null;
272771
- const tableCellProperties = {
272772
- ...attrs.tableCellProperties ?? {}
272773
- };
272774
- delete tableCellProperties.gridSpan;
272775
- delete tableCellProperties.vMerge;
272776
- const resetCell = cellNode.type.create({
272777
- ...attrs,
272778
- colspan: 1,
272779
- rowspan: 1,
272780
- colwidth: currentColwidth && currentColwidth.length > 0 ? [currentColwidth[0] ?? 0] : currentColwidth,
272781
- tableCellProperties
272782
- }, cellNode.content);
272783
- tr.replaceWith(cellPos, cellPos + cellNode.nodeSize, resetCell);
272784
- const mapFrom = tr.mapping.maps.length;
272785
- for (let row2 = rowIndex + rowspan - 1;row2 >= rowIndex; row2--) {
272786
- for (let col = columnIndex + colspan - 1;col >= columnIndex; col--) {
272787
- if (row2 === rowIndex && col === columnIndex)
272788
- continue;
272789
- const newCell = schema.nodes.tableCell.createAndFill();
272790
- let insertRelPos;
272791
- if (row2 === rowIndex) {
272792
- const baseRelPos = map8.positionAt(rowIndex, columnIndex, tableNode);
272793
- insertRelPos = baseRelPos + resetCell.nodeSize;
272794
- } else {
272795
- insertRelPos = map8.positionAt(row2, col, tableNode);
272796
- }
272797
- tr.insert(tr.mapping.slice(mapFrom).map(tableStart + insertRelPos), newCell);
272798
- }
272799
- }
273103
+ expandMergedCellIntoSingles2({
273104
+ tr,
273105
+ tablePos,
273106
+ tableNode,
273107
+ cellPos,
273108
+ cellNode,
273109
+ rowIndex,
273110
+ columnIndex,
273111
+ rowspan,
273112
+ colspan,
273113
+ schema
273114
+ });
272800
273115
  applyDirectMutationMeta2(tr);
272801
273116
  editor.dispatch(tr);
272802
273117
  clearIndexCache2(editor);
@@ -272815,9 +273130,6 @@ function tablesSplitCellAdapter2(editor, input2, options) {
272815
273130
  const attrs = cellNode.attrs;
272816
273131
  const currentColspan = attrs.colspan || 1;
272817
273132
  const currentRowspan = attrs.rowspan || 1;
272818
- if ((currentColspan > 1 || currentRowspan > 1) && input2.rows === currentRowspan && input2.columns === currentColspan) {
272819
- return tablesUnmergeCellsAdapter2(editor, input2, options);
272820
- }
272821
273133
  if (input2.rows === 1 && input2.columns === 1 && currentColspan === 1 && currentRowspan === 1) {
272822
273134
  return toTableFailure2("NO_OP", "Cell is already a single cell and split target is 1×1.");
272823
273135
  }
@@ -272827,25 +273139,78 @@ function tablesSplitCellAdapter2(editor, input2, options) {
272827
273139
  try {
272828
273140
  const tr = editor.state.tr;
272829
273141
  const tablePos = table2.candidate.pos;
272830
- const tableStart = tablePos + 1;
272831
- const tableNode = table2.candidate.node;
272832
- const map8 = TableMap2.get(tableNode);
272833
273142
  const schema = editor.state.schema;
272834
- const targetColspan = Math.max(input2.columns, currentColspan);
272835
- const targetRowspan = Math.max(input2.rows, currentRowspan);
272836
- const splitAttrs = { ...attrs, colspan: 1, rowspan: 1 };
272837
- tr.setNodeMarkup(cellPos, null, splitAttrs);
272838
- const mapFrom = tr.mapping.maps.length;
272839
- for (let row2 = rowIndex + targetRowspan - 1;row2 >= rowIndex; row2--) {
272840
- for (let col = columnIndex + targetColspan - 1;col >= columnIndex; col--) {
272841
- if (row2 === rowIndex && col === columnIndex)
272842
- continue;
272843
- const newCell = schema.nodes.tableCell.createAndFill();
272844
- if (row2 < map8.height && col < map8.width) {
272845
- const insertPos = map8.positionAt(row2, col, tableNode);
272846
- tr.insert(tr.mapping.slice(mapFrom).map(tableStart + insertPos), newCell);
272847
- }
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.");
272848
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.");
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
+ });
272849
273214
  }
272850
273215
  applyDirectMutationMeta2(tr);
272851
273216
  editor.dispatch(tr);
@@ -273647,7 +274012,6 @@ var init_tables_adapter = __esm(() => {
273647
274012
  init_tracked_change_refs();
273648
274013
  init_errors3();
273649
274014
  init_node_address_resolver();
273650
- init_appendRows();
273651
274015
  init_helpers();
273652
274016
  POINTS_TO_PIXELS2 = 96 / 72;
273653
274017
  PIXELS_TO_TWIPS2 = 1440 / 96;