@superdoc-dev/cli 0.2.0-next.35 → 0.2.0-next.37
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +886 -489
- package/package.json +7 -7
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-
|
|
101809
|
-
var
|
|
101810
|
-
__export(
|
|
101808
|
+
// ../../packages/superdoc/dist/chunks/src-D9teEfgS.es.js
|
|
101809
|
+
var exports_src_D9teEfgS_es = {};
|
|
101810
|
+
__export(exports_src_D9teEfgS_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
|
-
|
|
116341
|
-
|
|
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
|
|
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
|
-
|
|
117164
|
-
|
|
117165
|
-
|
|
117166
|
-
|
|
117167
|
-
|
|
117168
|
-
|
|
117169
|
-
|
|
117170
|
-
|
|
117171
|
-
|
|
117172
|
-
|
|
117173
|
-
|
|
117174
|
-
|
|
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
|
|
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
|
|
117217
|
-
const
|
|
117218
|
-
const
|
|
117219
|
-
|
|
117220
|
-
|
|
117221
|
-
|
|
117222
|
-
|
|
117223
|
-
|
|
117224
|
-
|
|
117225
|
-
|
|
117226
|
-
|
|
117227
|
-
|
|
117228
|
-
|
|
117229
|
-
|
|
117230
|
-
|
|
117231
|
-
|
|
117232
|
-
|
|
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);
|
|
@@ -129117,7 +129160,8 @@ function computeSelectionRectsFromDom(options, from$12, to) {
|
|
|
129117
129160
|
const sliceTo = Math.min(end$1, pagePmEnd);
|
|
129118
129161
|
if (sliceFrom >= sliceTo)
|
|
129119
129162
|
continue;
|
|
129120
|
-
|
|
129163
|
+
const rangeOpts = { boundaryInclusive: true };
|
|
129164
|
+
let sliceEntries = options.domPositionIndex.findEntriesInRange(sliceFrom, sliceTo, rangeOpts);
|
|
129121
129165
|
if (sliceEntries.length === 0)
|
|
129122
129166
|
continue;
|
|
129123
129167
|
const filterPageEntries = (entries) => entries.filter((entry) => pageEl.contains(entry.el));
|
|
@@ -129125,7 +129169,7 @@ function computeSelectionRectsFromDom(options, from$12, to) {
|
|
|
129125
129169
|
if (pageEntries.length === 0 && !rebuiltOnce) {
|
|
129126
129170
|
options.rebuildDomPositionIndex();
|
|
129127
129171
|
rebuiltOnce = true;
|
|
129128
|
-
sliceEntries = options.domPositionIndex.findEntriesInRange(sliceFrom, sliceTo);
|
|
129172
|
+
sliceEntries = options.domPositionIndex.findEntriesInRange(sliceFrom, sliceTo, rangeOpts);
|
|
129129
129173
|
pageEntries = filterPageEntries(sliceEntries);
|
|
129130
129174
|
}
|
|
129131
129175
|
if (pageEntries.length === 0)
|
|
@@ -129149,7 +129193,7 @@ function computeSelectionRectsFromDom(options, from$12, to) {
|
|
|
129149
129193
|
if ((!startEntry?.el?.isConnected || !endEntry?.el?.isConnected) && !rebuiltOnce) {
|
|
129150
129194
|
options.rebuildDomPositionIndex();
|
|
129151
129195
|
rebuiltOnce = true;
|
|
129152
|
-
sliceEntries = options.domPositionIndex.findEntriesInRange(sliceFrom, sliceTo);
|
|
129196
|
+
sliceEntries = options.domPositionIndex.findEntriesInRange(sliceFrom, sliceTo, rangeOpts);
|
|
129153
129197
|
pageEntries = filterPageEntries(sliceEntries);
|
|
129154
129198
|
if (pageEntries.length === 0)
|
|
129155
129199
|
continue;
|
|
@@ -134634,7 +134678,7 @@ function clickToPosition(layout, blocks2, measures, containerPoint, domContainer
|
|
|
134634
134678
|
}
|
|
134635
134679
|
logClickStage("log", "geometry-attempt", { trying: "geometry-based mapping" });
|
|
134636
134680
|
let pageHit = null;
|
|
134637
|
-
let
|
|
134681
|
+
let domPageRelativeY;
|
|
134638
134682
|
if (domContainer != null && clientX != null && clientY != null) {
|
|
134639
134683
|
const pageEl = findPageElement(domContainer, clientX, clientY);
|
|
134640
134684
|
if (pageEl) {
|
|
@@ -134644,7 +134688,11 @@ function clickToPosition(layout, blocks2, measures, containerPoint, domContainer
|
|
|
134644
134688
|
pageIndex: domPageIndex,
|
|
134645
134689
|
page: layout.pages[domPageIndex]
|
|
134646
134690
|
};
|
|
134647
|
-
|
|
134691
|
+
const pageRect = pageEl.getBoundingClientRect();
|
|
134692
|
+
const layoutPageHeight = pageHit.page.size?.h ?? layout.pageSize.h;
|
|
134693
|
+
const domPageHeight = pageRect.height;
|
|
134694
|
+
const effectiveZoom = domPageHeight > 0 && layoutPageHeight > 0 ? domPageHeight / layoutPageHeight : 1;
|
|
134695
|
+
domPageRelativeY = (clientY - pageRect.top) / effectiveZoom;
|
|
134648
134696
|
}
|
|
134649
134697
|
}
|
|
134650
134698
|
}
|
|
@@ -134654,16 +134702,11 @@ function clickToPosition(layout, blocks2, measures, containerPoint, domContainer
|
|
|
134654
134702
|
logClickStage("warn", "no-page", { point: containerPoint });
|
|
134655
134703
|
return null;
|
|
134656
134704
|
}
|
|
134657
|
-
|
|
134658
|
-
|
|
134659
|
-
|
|
134660
|
-
|
|
134661
|
-
|
|
134662
|
-
pageRelativePoint = {
|
|
134663
|
-
x: containerPoint.x,
|
|
134664
|
-
y: containerPoint.y - pageTopY
|
|
134665
|
-
};
|
|
134666
|
-
}
|
|
134705
|
+
const pageTopY = geometryHelper ? geometryHelper.getPageTop(pageHit.pageIndex) : calculatePageTopFallback(layout, pageHit.pageIndex);
|
|
134706
|
+
const pageRelativePoint = {
|
|
134707
|
+
x: containerPoint.x,
|
|
134708
|
+
y: domPageRelativeY ?? containerPoint.y - pageTopY
|
|
134709
|
+
};
|
|
134667
134710
|
logClickStage("log", "page-hit", {
|
|
134668
134711
|
pageIndex: pageHit.pageIndex,
|
|
134669
134712
|
pageRelativePoint
|
|
@@ -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;
|
|
@@ -159578,7 +159810,7 @@ var Node$13 = class Node$14 {
|
|
|
159578
159810
|
findElementAtPosition(pos) {
|
|
159579
159811
|
return this.findEntryAtPosition(pos)?.el ?? null;
|
|
159580
159812
|
}
|
|
159581
|
-
findEntriesInRange(from$12, to) {
|
|
159813
|
+
findEntriesInRange(from$12, to, options) {
|
|
159582
159814
|
if (!Number.isFinite(from$12) || !Number.isFinite(to))
|
|
159583
159815
|
return [];
|
|
159584
159816
|
const start$1 = Math.min(from$12, to);
|
|
@@ -159588,6 +159820,7 @@ var Node$13 = class Node$14 {
|
|
|
159588
159820
|
const entries = this.#entries;
|
|
159589
159821
|
if (entries.length === 0)
|
|
159590
159822
|
return [];
|
|
159823
|
+
const inclusive = options?.boundaryInclusive === true;
|
|
159591
159824
|
let lo = 0;
|
|
159592
159825
|
let hi = entries.length;
|
|
159593
159826
|
while (lo < hi) {
|
|
@@ -159603,9 +159836,9 @@ var Node$13 = class Node$14 {
|
|
|
159603
159836
|
const out = [];
|
|
159604
159837
|
for (let i$1 = idx;i$1 < entries.length; i$1 += 1) {
|
|
159605
159838
|
const entry = entries[i$1];
|
|
159606
|
-
if (entry.pmStart >= end$1)
|
|
159839
|
+
if (inclusive ? entry.pmStart > end$1 : entry.pmStart >= end$1)
|
|
159607
159840
|
break;
|
|
159608
|
-
if (entry.pmEnd <= start$1)
|
|
159841
|
+
if (inclusive ? entry.pmEnd < start$1 : entry.pmEnd <= start$1)
|
|
159609
159842
|
continue;
|
|
159610
159843
|
out.push(entry);
|
|
159611
159844
|
}
|
|
@@ -164331,6 +164564,26 @@ var Node$13 = class Node$14 {
|
|
|
164331
164564
|
const layoutState = this.#deps?.getLayoutState();
|
|
164332
164565
|
return calculateExtendedSelection(layoutState?.blocks ?? [], anchor, head, mode);
|
|
164333
164566
|
}
|
|
164567
|
+
#clampHeadAtIsolatingBoundary(doc$2, anchor, head) {
|
|
164568
|
+
const forward = head >= anchor;
|
|
164569
|
+
try {
|
|
164570
|
+
const $head = doc$2.resolve(head);
|
|
164571
|
+
let isolatingDepth = -1;
|
|
164572
|
+
for (let d = $head.depth;d > 0; d--) {
|
|
164573
|
+
const node3 = $head.node(d);
|
|
164574
|
+
if (node3.type.spec.isolating || node3.type.spec.tableRole === "table")
|
|
164575
|
+
isolatingDepth = d;
|
|
164576
|
+
}
|
|
164577
|
+
if (isolatingDepth > 0) {
|
|
164578
|
+
const boundary = forward ? $head.before(isolatingDepth) : $head.after(isolatingDepth);
|
|
164579
|
+
const near = Selection.near(doc$2.resolve(boundary), forward ? -1 : 1);
|
|
164580
|
+
if (near instanceof TextSelection2)
|
|
164581
|
+
return near.head;
|
|
164582
|
+
return anchor;
|
|
164583
|
+
}
|
|
164584
|
+
} catch {}
|
|
164585
|
+
return head;
|
|
164586
|
+
}
|
|
164334
164587
|
#shouldUseCellSelection(currentTableHit) {
|
|
164335
164588
|
return shouldUseCellSelection(currentTableHit, this.#cellAnchor, this.#cellDragMode);
|
|
164336
164589
|
}
|
|
@@ -164716,8 +164969,11 @@ var Node$13 = class Node$14 {
|
|
|
164716
164969
|
const tableHit = this.#hitTestTable(x, y$1);
|
|
164717
164970
|
if (tableHit) {
|
|
164718
164971
|
const tablePos = this.#getTablePosFromHit(tableHit);
|
|
164719
|
-
|
|
164972
|
+
const hitIsInsideTable = tablePos !== null && doc$2 && hit.pos >= tablePos && hit.pos <= tablePos + (doc$2.nodeAt(tablePos)?.nodeSize ?? 0);
|
|
164973
|
+
if (tablePos !== null && hitIsInsideTable)
|
|
164720
164974
|
this.#setCellAnchor(tableHit, tablePos);
|
|
164975
|
+
else
|
|
164976
|
+
this.#clearCellAnchor();
|
|
164721
164977
|
} else
|
|
164722
164978
|
this.#clearCellAnchor();
|
|
164723
164979
|
} else
|
|
@@ -165264,7 +165520,9 @@ var Node$13 = class Node$14 {
|
|
|
165264
165520
|
return;
|
|
165265
165521
|
}
|
|
165266
165522
|
const anchor = this.#dragAnchor;
|
|
165267
|
-
|
|
165523
|
+
let head = hit.pos;
|
|
165524
|
+
if (!this.#cellAnchor)
|
|
165525
|
+
head = this.#clampHeadAtIsolatingBoundary(doc$2, anchor, head);
|
|
165268
165526
|
const { selAnchor, selHead } = this.#calculateExtendedSelection(anchor, head, this.#dragExtensionMode);
|
|
165269
165527
|
try {
|
|
165270
165528
|
const tr = editor.state.tr.setSelection(TextSelection2.create(editor.state.doc, selAnchor, selHead));
|
|
@@ -168583,6 +168841,12 @@ var Node$13 = class Node$14 {
|
|
|
168583
168841
|
return false;
|
|
168584
168842
|
editor.commands.deleteTable();
|
|
168585
168843
|
return true;
|
|
168844
|
+
}, ZERO_WIDTH_SPACE = "", ROW_START_TO_TEXT_OFFSET = 3, CELL_TO_TEXT_OFFSET = 2, normalizeHeaderAttrsForBodyCell = (attrs) => {
|
|
168845
|
+
if (attrs?.borders !== null)
|
|
168846
|
+
return attrs;
|
|
168847
|
+
const nextAttrs = { ...attrs };
|
|
168848
|
+
delete nextAttrs.borders;
|
|
168849
|
+
return nextAttrs;
|
|
168586
168850
|
}, 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
168851
|
if (!borders)
|
|
168588
168852
|
return {};
|
|
@@ -173132,7 +173396,7 @@ var Node$13 = class Node$14 {
|
|
|
173132
173396
|
trackedChanges: context.trackedChanges ?? []
|
|
173133
173397
|
});
|
|
173134
173398
|
}, _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
|
|
173399
|
+
var init_src_D9teEfgS_es = __esm(() => {
|
|
173136
173400
|
init_rolldown_runtime_B2q5OVn9_es();
|
|
173137
173401
|
init_SuperConverter_BSZgN87C_es();
|
|
173138
173402
|
init_jszip_ChlR43oI_es();
|
|
@@ -193533,6 +193797,13 @@ function print() { __p += __j.call(arguments, '') }
|
|
|
193533
193797
|
});
|
|
193534
193798
|
return;
|
|
193535
193799
|
}
|
|
193800
|
+
if (domRects.length === 0 && from$12 !== to && this.#editorInputManager?.isDragging) {
|
|
193801
|
+
debugLog("warn", "[drawSelection] zero rects for non-collapsed selection — preserving last overlay", {
|
|
193802
|
+
from: from$12,
|
|
193803
|
+
to
|
|
193804
|
+
});
|
|
193805
|
+
return;
|
|
193806
|
+
}
|
|
193536
193807
|
try {
|
|
193537
193808
|
this.#localSelectionLayer.innerHTML = "";
|
|
193538
193809
|
const isFieldAnnotationSelection = selection instanceof NodeSelection && selection.node?.type?.name === "fieldAnnotation";
|
|
@@ -204025,8 +204296,8 @@ function print() { __p += __j.call(arguments, '') }
|
|
|
204025
204296
|
return isObjectLike_default(value) && hasOwnProperty$8.call(value, "callee") && !propertyIsEnumerable$1.call(value, "callee");
|
|
204026
204297
|
};
|
|
204027
204298
|
stubFalse_default = stubFalse;
|
|
204028
|
-
freeExports$2 = typeof
|
|
204029
|
-
freeModule$2 = freeExports$2 && typeof
|
|
204299
|
+
freeExports$2 = typeof exports_src_D9teEfgS_es == "object" && exports_src_D9teEfgS_es && !exports_src_D9teEfgS_es.nodeType && exports_src_D9teEfgS_es;
|
|
204300
|
+
freeModule$2 = freeExports$2 && typeof module_src_D9teEfgS_es == "object" && module_src_D9teEfgS_es && !module_src_D9teEfgS_es.nodeType && module_src_D9teEfgS_es;
|
|
204030
204301
|
Buffer$1 = freeModule$2 && freeModule$2.exports === freeExports$2 ? _root_default.Buffer : undefined;
|
|
204031
204302
|
isBuffer_default = (Buffer$1 ? Buffer$1.isBuffer : undefined) || stubFalse_default;
|
|
204032
204303
|
typedArrayTags = {};
|
|
@@ -204034,8 +204305,8 @@ function print() { __p += __j.call(arguments, '') }
|
|
|
204034
204305
|
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
204306
|
_baseIsTypedArray_default = baseIsTypedArray;
|
|
204036
204307
|
_baseUnary_default = baseUnary;
|
|
204037
|
-
freeExports$1 = typeof
|
|
204038
|
-
freeModule$1 = freeExports$1 && typeof
|
|
204308
|
+
freeExports$1 = typeof exports_src_D9teEfgS_es == "object" && exports_src_D9teEfgS_es && !exports_src_D9teEfgS_es.nodeType && exports_src_D9teEfgS_es;
|
|
204309
|
+
freeModule$1 = freeExports$1 && typeof module_src_D9teEfgS_es == "object" && module_src_D9teEfgS_es && !module_src_D9teEfgS_es.nodeType && module_src_D9teEfgS_es;
|
|
204039
204310
|
freeProcess = freeModule$1 && freeModule$1.exports === freeExports$1 && _freeGlobal_default.process;
|
|
204040
204311
|
_nodeUtil_default = function() {
|
|
204041
204312
|
try {
|
|
@@ -204140,8 +204411,8 @@ function print() { __p += __j.call(arguments, '') }
|
|
|
204140
204411
|
Stack.prototype.has = _stackHas_default;
|
|
204141
204412
|
Stack.prototype.set = _stackSet_default;
|
|
204142
204413
|
_Stack_default = Stack;
|
|
204143
|
-
freeExports = typeof
|
|
204144
|
-
freeModule = freeExports && typeof
|
|
204414
|
+
freeExports = typeof exports_src_D9teEfgS_es == "object" && exports_src_D9teEfgS_es && !exports_src_D9teEfgS_es.nodeType && exports_src_D9teEfgS_es;
|
|
204415
|
+
freeModule = freeExports && typeof module_src_D9teEfgS_es == "object" && module_src_D9teEfgS_es && !module_src_D9teEfgS_es.nodeType && module_src_D9teEfgS_es;
|
|
204145
204416
|
Buffer4 = freeModule && freeModule.exports === freeExports ? _root_default.Buffer : undefined;
|
|
204146
204417
|
allocUnsafe = Buffer4 ? Buffer4.allocUnsafe : undefined;
|
|
204147
204418
|
_cloneBuffer_default = cloneBuffer;
|
|
@@ -211793,7 +212064,7 @@ var init_zipper_Cnk_HjM2_es = __esm(() => {
|
|
|
211793
212064
|
|
|
211794
212065
|
// ../../packages/superdoc/dist/super-editor.es.js
|
|
211795
212066
|
var init_super_editor_es = __esm(() => {
|
|
211796
|
-
|
|
212067
|
+
init_src_D9teEfgS_es();
|
|
211797
212068
|
init_SuperConverter_BSZgN87C_es();
|
|
211798
212069
|
init_jszip_ChlR43oI_es();
|
|
211799
212070
|
init_xml_js_DLE8mr0n_es();
|
|
@@ -271299,142 +271570,6 @@ var init_table_target_resolver = __esm(() => {
|
|
|
271299
271570
|
init_errors3();
|
|
271300
271571
|
});
|
|
271301
271572
|
|
|
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
271573
|
// ../../packages/super-editor/src/document-api-adapters/tables-adapter.ts
|
|
271439
271574
|
function generateParaId2() {
|
|
271440
271575
|
return Array.from({ length: 8 }, () => Math.floor(Math.random() * 16).toString(16)).join("").toUpperCase();
|
|
@@ -271550,6 +271685,64 @@ function removeGridColumnWidth2(grid, deleteIndex) {
|
|
|
271550
271685
|
colWidths.splice(boundedIndex, 1);
|
|
271551
271686
|
return serializeGridColumns2(grid, { ...normalized, columns: colWidths });
|
|
271552
271687
|
}
|
|
271688
|
+
function normalizeCellAttrsForSingleCell2(attrs) {
|
|
271689
|
+
const currentColwidth = Array.isArray(attrs.colwidth) ? attrs.colwidth : null;
|
|
271690
|
+
const tableCellProperties = {
|
|
271691
|
+
...attrs.tableCellProperties ?? {}
|
|
271692
|
+
};
|
|
271693
|
+
delete tableCellProperties.gridSpan;
|
|
271694
|
+
delete tableCellProperties.vMerge;
|
|
271695
|
+
return {
|
|
271696
|
+
...attrs,
|
|
271697
|
+
colspan: 1,
|
|
271698
|
+
rowspan: 1,
|
|
271699
|
+
colwidth: currentColwidth && currentColwidth.length > 0 ? [currentColwidth[0] ?? 0] : currentColwidth,
|
|
271700
|
+
tableCellProperties
|
|
271701
|
+
};
|
|
271702
|
+
}
|
|
271703
|
+
function normalizeClonedRowInsertCellAttrs2(sourceAttrs, fromHeaderToBody) {
|
|
271704
|
+
const normalizedAttrs = {
|
|
271705
|
+
...sourceAttrs,
|
|
271706
|
+
rowspan: 1
|
|
271707
|
+
};
|
|
271708
|
+
if (fromHeaderToBody && normalizedAttrs.borders == null) {
|
|
271709
|
+
delete normalizedAttrs.borders;
|
|
271710
|
+
}
|
|
271711
|
+
return normalizedAttrs;
|
|
271712
|
+
}
|
|
271713
|
+
function expandMergedCellIntoSingles2({
|
|
271714
|
+
tr,
|
|
271715
|
+
tablePos,
|
|
271716
|
+
tableNode,
|
|
271717
|
+
cellPos,
|
|
271718
|
+
cellNode,
|
|
271719
|
+
rowIndex,
|
|
271720
|
+
columnIndex,
|
|
271721
|
+
rowspan,
|
|
271722
|
+
colspan,
|
|
271723
|
+
schema
|
|
271724
|
+
}) {
|
|
271725
|
+
const tableStart = tablePos + 1;
|
|
271726
|
+
const map8 = TableMap2.get(tableNode);
|
|
271727
|
+
const resetCell = cellNode.type.create(normalizeCellAttrsForSingleCell2(cellNode.attrs), cellNode.content);
|
|
271728
|
+
tr.replaceWith(cellPos, cellPos + cellNode.nodeSize, resetCell);
|
|
271729
|
+
const mapFrom = tr.mapping.maps.length;
|
|
271730
|
+
for (let row2 = rowIndex + rowspan - 1;row2 >= rowIndex; row2--) {
|
|
271731
|
+
for (let col = columnIndex + colspan - 1;col >= columnIndex; col--) {
|
|
271732
|
+
if (row2 === rowIndex && col === columnIndex)
|
|
271733
|
+
continue;
|
|
271734
|
+
const newCell = schema.nodes.tableCell.createAndFill();
|
|
271735
|
+
let insertRelPos;
|
|
271736
|
+
if (row2 === rowIndex) {
|
|
271737
|
+
const baseRelPos = map8.positionAt(rowIndex, columnIndex, tableNode);
|
|
271738
|
+
insertRelPos = baseRelPos + resetCell.nodeSize;
|
|
271739
|
+
} else {
|
|
271740
|
+
insertRelPos = map8.positionAt(row2, col, tableNode);
|
|
271741
|
+
}
|
|
271742
|
+
tr.insert(tr.mapping.slice(mapFrom).map(tableStart + insertRelPos), newCell);
|
|
271743
|
+
}
|
|
271744
|
+
}
|
|
271745
|
+
}
|
|
271553
271746
|
function isBoundaryEdge2(edge) {
|
|
271554
271747
|
return edge === "top" || edge === "bottom" || edge === "left" || edge === "right" || edge === "insideH" || edge === "insideV";
|
|
271555
271748
|
}
|
|
@@ -271729,6 +271922,185 @@ function removeColumnFromTable2(tr, tablePos, col) {
|
|
|
271729
271922
|
row2 += rowspan;
|
|
271730
271923
|
}
|
|
271731
271924
|
}
|
|
271925
|
+
function insertRowInTable2(tr, tablePos, sourceRowIndex, insertIndex, schema) {
|
|
271926
|
+
const tableNode = tr.doc.nodeAt(tablePos);
|
|
271927
|
+
if (!tableNode || tableNode.type.name !== "table")
|
|
271928
|
+
return false;
|
|
271929
|
+
const rowCount = tableNode.childCount;
|
|
271930
|
+
if (rowCount === 0)
|
|
271931
|
+
return false;
|
|
271932
|
+
const map8 = TableMap2.get(tableNode);
|
|
271933
|
+
const boundedInsertIndex = Math.max(0, Math.min(insertIndex, rowCount));
|
|
271934
|
+
const boundedSourceRowIndex = Math.max(0, Math.min(sourceRowIndex, rowCount - 1));
|
|
271935
|
+
const sourceRow = tableNode.child(boundedSourceRowIndex);
|
|
271936
|
+
if (!sourceRow)
|
|
271937
|
+
return false;
|
|
271938
|
+
const rowType = schema.nodes.tableRow;
|
|
271939
|
+
const defaultCellType = schema.nodes.tableCell;
|
|
271940
|
+
if (!rowType || !defaultCellType)
|
|
271941
|
+
return false;
|
|
271942
|
+
const newCells = [];
|
|
271943
|
+
const cellsToExtend = [];
|
|
271944
|
+
for (let col = 0;col < map8.width; ) {
|
|
271945
|
+
if (boundedInsertIndex > 0 && boundedInsertIndex < map8.height) {
|
|
271946
|
+
const indexAbove = (boundedInsertIndex - 1) * map8.width + col;
|
|
271947
|
+
const indexAtInsert = boundedInsertIndex * map8.width + col;
|
|
271948
|
+
if (map8.map[indexAbove] === map8.map[indexAtInsert]) {
|
|
271949
|
+
const spanningPos = map8.map[indexAbove];
|
|
271950
|
+
const spanningCell = tableNode.nodeAt(spanningPos);
|
|
271951
|
+
if (spanningCell) {
|
|
271952
|
+
const spanningAttrs = spanningCell.attrs;
|
|
271953
|
+
const rowspan = spanningAttrs.rowspan || 1;
|
|
271954
|
+
const colspan2 = spanningAttrs.colspan || 1;
|
|
271955
|
+
cellsToExtend.push({
|
|
271956
|
+
pos: tablePos + 1 + spanningPos,
|
|
271957
|
+
attrs: { ...spanningAttrs, rowspan: rowspan + 1 }
|
|
271958
|
+
});
|
|
271959
|
+
col += colspan2;
|
|
271960
|
+
continue;
|
|
271961
|
+
}
|
|
271962
|
+
}
|
|
271963
|
+
}
|
|
271964
|
+
const sourceMapIndex = boundedSourceRowIndex * map8.width + col;
|
|
271965
|
+
const sourceCellPos = map8.map[sourceMapIndex];
|
|
271966
|
+
const sourceCell = tableNode.nodeAt(sourceCellPos) ?? sourceRow.firstChild;
|
|
271967
|
+
if (!sourceCell) {
|
|
271968
|
+
col += 1;
|
|
271969
|
+
continue;
|
|
271970
|
+
}
|
|
271971
|
+
const colspan = sourceCell.attrs.colspan || 1;
|
|
271972
|
+
const fromHeaderToBody = sourceCell.type.name === "tableHeader";
|
|
271973
|
+
const targetCellType = fromHeaderToBody ? defaultCellType : sourceCell.type;
|
|
271974
|
+
const newCell = targetCellType.createAndFill(normalizeClonedRowInsertCellAttrs2(sourceCell.attrs, fromHeaderToBody));
|
|
271975
|
+
if (newCell)
|
|
271976
|
+
newCells.push(newCell);
|
|
271977
|
+
col += colspan;
|
|
271978
|
+
}
|
|
271979
|
+
for (const { pos, attrs } of cellsToExtend) {
|
|
271980
|
+
tr.setNodeMarkup(pos, null, attrs);
|
|
271981
|
+
}
|
|
271982
|
+
if (newCells.length === 0)
|
|
271983
|
+
return true;
|
|
271984
|
+
const newRow = rowType.createAndFill(null, newCells);
|
|
271985
|
+
if (!newRow)
|
|
271986
|
+
return false;
|
|
271987
|
+
let insertPos = tablePos + 1;
|
|
271988
|
+
for (let row2 = 0;row2 < boundedInsertIndex; row2++) {
|
|
271989
|
+
insertPos += tableNode.child(row2).nodeSize;
|
|
271990
|
+
}
|
|
271991
|
+
tr.insert(insertPos, newRow);
|
|
271992
|
+
return true;
|
|
271993
|
+
}
|
|
271994
|
+
function addColumnToTableForSplit2(tr, tablePos, col, splitRowStart, splitRowEnd) {
|
|
271995
|
+
const tableNode = tr.doc.nodeAt(tablePos);
|
|
271996
|
+
if (!tableNode || tableNode.type.name !== "table")
|
|
271997
|
+
return;
|
|
271998
|
+
const map8 = TableMap2.get(tableNode);
|
|
271999
|
+
const tableStart = tablePos + 1;
|
|
272000
|
+
const mapStart = tr.mapping.maps.length;
|
|
272001
|
+
const widenedOutsideSplit = new Set;
|
|
272002
|
+
for (let row2 = 0;row2 < map8.height; row2++) {
|
|
272003
|
+
const index3 = row2 * map8.width + col;
|
|
272004
|
+
const pos = map8.map[index3];
|
|
272005
|
+
const cell2 = tableNode.nodeAt(pos);
|
|
272006
|
+
if (!cell2)
|
|
272007
|
+
continue;
|
|
272008
|
+
const inSplitRows = row2 >= splitRowStart && row2 < splitRowEnd;
|
|
272009
|
+
if (!inSplitRows && col > 0) {
|
|
272010
|
+
const leftPos = map8.map[index3 - 1];
|
|
272011
|
+
const leftCell = tableNode.nodeAt(leftPos);
|
|
272012
|
+
if (leftCell && !widenedOutsideSplit.has(leftPos)) {
|
|
272013
|
+
tr.setNodeMarkup(tr.mapping.slice(mapStart).map(tableStart + leftPos), null, addColSpan2(leftCell.attrs, col - map8.colCount(leftPos)));
|
|
272014
|
+
widenedOutsideSplit.add(leftPos);
|
|
272015
|
+
}
|
|
272016
|
+
row2 += (cell2.attrs?.rowspan || 1) - 1;
|
|
272017
|
+
continue;
|
|
272018
|
+
}
|
|
272019
|
+
if (col > 0 && map8.map[index3 - 1] === pos) {
|
|
272020
|
+
tr.setNodeMarkup(tr.mapping.slice(mapStart).map(tableStart + pos), null, addColSpan2(cell2.attrs, col - map8.colCount(pos)));
|
|
272021
|
+
row2 += (cell2.attrs.rowspan || 1) - 1;
|
|
272022
|
+
} else {
|
|
272023
|
+
const refType = col > 0 ? tableNode.nodeAt(map8.map[index3 - 1])?.type ?? cell2.type : cell2.type;
|
|
272024
|
+
const cellPos = map8.positionAt(row2, col, tableNode);
|
|
272025
|
+
tr.insert(tr.mapping.slice(mapStart).map(tableStart + cellPos), refType.createAndFill());
|
|
272026
|
+
row2 += (cell2.attrs?.rowspan || 1) - 1;
|
|
272027
|
+
}
|
|
272028
|
+
}
|
|
272029
|
+
}
|
|
272030
|
+
function insertRowInTableForSplit2(tr, tablePos, sourceRowIndex, insertIndex, splitColStart, splitColEnd, schema) {
|
|
272031
|
+
const tableNode = tr.doc.nodeAt(tablePos);
|
|
272032
|
+
if (!tableNode || tableNode.type.name !== "table")
|
|
272033
|
+
return false;
|
|
272034
|
+
const rowCount = tableNode.childCount;
|
|
272035
|
+
if (rowCount === 0)
|
|
272036
|
+
return false;
|
|
272037
|
+
const map8 = TableMap2.get(tableNode);
|
|
272038
|
+
const boundedInsertIndex = Math.max(0, Math.min(insertIndex, rowCount));
|
|
272039
|
+
const boundedSourceRowIndex = Math.max(0, Math.min(sourceRowIndex, rowCount - 1));
|
|
272040
|
+
const sourceRow = tableNode.child(boundedSourceRowIndex);
|
|
272041
|
+
if (!sourceRow)
|
|
272042
|
+
return false;
|
|
272043
|
+
const rowType = schema.nodes.tableRow;
|
|
272044
|
+
const defaultCellType = schema.nodes.tableCell;
|
|
272045
|
+
if (!rowType || !defaultCellType)
|
|
272046
|
+
return false;
|
|
272047
|
+
const newCells = [];
|
|
272048
|
+
const cellsToExtend = new Map;
|
|
272049
|
+
for (let col = 0;col < map8.width; ) {
|
|
272050
|
+
if (boundedInsertIndex > 0 && boundedInsertIndex < map8.height) {
|
|
272051
|
+
const indexAbove = (boundedInsertIndex - 1) * map8.width + col;
|
|
272052
|
+
const indexAtInsert = boundedInsertIndex * map8.width + col;
|
|
272053
|
+
if (map8.map[indexAbove] === map8.map[indexAtInsert]) {
|
|
272054
|
+
const spanningPos = map8.map[indexAbove];
|
|
272055
|
+
const spanningCell = tableNode.nodeAt(spanningPos);
|
|
272056
|
+
if (spanningCell) {
|
|
272057
|
+
const spanningAttrs = spanningCell.attrs;
|
|
272058
|
+
const rowspan = spanningAttrs.rowspan || 1;
|
|
272059
|
+
const colspan2 = spanningAttrs.colspan || 1;
|
|
272060
|
+
cellsToExtend.set(tablePos + 1 + spanningPos, { ...spanningAttrs, rowspan: rowspan + 1 });
|
|
272061
|
+
col += colspan2;
|
|
272062
|
+
continue;
|
|
272063
|
+
}
|
|
272064
|
+
}
|
|
272065
|
+
}
|
|
272066
|
+
const sourceMapIndex = boundedSourceRowIndex * map8.width + col;
|
|
272067
|
+
const sourceCellPos = map8.map[sourceMapIndex];
|
|
272068
|
+
const sourceCell = tableNode.nodeAt(sourceCellPos) ?? sourceRow.firstChild;
|
|
272069
|
+
if (!sourceCell) {
|
|
272070
|
+
col += 1;
|
|
272071
|
+
continue;
|
|
272072
|
+
}
|
|
272073
|
+
const sourceAttrs = sourceCell.attrs;
|
|
272074
|
+
const colspan = sourceAttrs.colspan || 1;
|
|
272075
|
+
const overlapsSplitRange = col < splitColEnd && col + colspan > splitColStart;
|
|
272076
|
+
if (!overlapsSplitRange) {
|
|
272077
|
+
const sourceRowspan = sourceAttrs.rowspan || 1;
|
|
272078
|
+
cellsToExtend.set(tablePos + 1 + sourceCellPos, { ...sourceAttrs, rowspan: sourceRowspan + 1 });
|
|
272079
|
+
col += colspan;
|
|
272080
|
+
continue;
|
|
272081
|
+
}
|
|
272082
|
+
const fromHeaderToBody = sourceCell.type.name === "tableHeader";
|
|
272083
|
+
const targetCellType = fromHeaderToBody ? defaultCellType : sourceCell.type;
|
|
272084
|
+
const newCell = targetCellType.createAndFill(normalizeClonedRowInsertCellAttrs2(sourceAttrs, fromHeaderToBody));
|
|
272085
|
+
if (newCell)
|
|
272086
|
+
newCells.push(newCell);
|
|
272087
|
+
col += colspan;
|
|
272088
|
+
}
|
|
272089
|
+
for (const [pos, attrs] of cellsToExtend.entries()) {
|
|
272090
|
+
tr.setNodeMarkup(pos, null, attrs);
|
|
272091
|
+
}
|
|
272092
|
+
if (newCells.length === 0)
|
|
272093
|
+
return true;
|
|
272094
|
+
const newRow = rowType.createAndFill(null, newCells);
|
|
272095
|
+
if (!newRow)
|
|
272096
|
+
return false;
|
|
272097
|
+
let insertPos = tablePos + 1;
|
|
272098
|
+
for (let row2 = 0;row2 < boundedInsertIndex; row2++) {
|
|
272099
|
+
insertPos += tableNode.child(row2).nodeSize;
|
|
272100
|
+
}
|
|
272101
|
+
tr.insert(insertPos, newRow);
|
|
272102
|
+
return true;
|
|
272103
|
+
}
|
|
271732
272104
|
function tablesDeleteAdapter2(editor, input2, options) {
|
|
271733
272105
|
const mode = options?.changeMode ?? "direct";
|
|
271734
272106
|
if (mode === "tracked") {
|
|
@@ -271907,14 +272279,10 @@ function tablesInsertRowAdapter2(editor, input2, options) {
|
|
|
271907
272279
|
break;
|
|
271908
272280
|
const insertIdx = input2.position === "above" ? rowIndex + i5 : rowIndex + 1 + i5;
|
|
271909
272281
|
const sourceIdx = input2.position === "above" ? rowIndex + i5 : rowIndex;
|
|
271910
|
-
|
|
271911
|
-
|
|
271912
|
-
|
|
271913
|
-
|
|
271914
|
-
sourceRowIndex: Math.min(sourceIdx, currentTableNode.childCount - 1),
|
|
271915
|
-
insertIndex: Math.min(insertIdx, currentTableNode.childCount),
|
|
271916
|
-
schema
|
|
271917
|
-
});
|
|
272282
|
+
const didInsertRow = insertRowInTable2(tr, tablePos, Math.min(sourceIdx, currentTableNode.childCount - 1), Math.min(insertIdx, currentTableNode.childCount), schema);
|
|
272283
|
+
if (!didInsertRow) {
|
|
272284
|
+
return toTableFailure2("INVALID_TARGET", "Row insertion could not be applied.");
|
|
272285
|
+
}
|
|
271918
272286
|
}
|
|
271919
272287
|
if (mode === "tracked")
|
|
271920
272288
|
applyTrackedMutationMeta2(tr);
|
|
@@ -272763,40 +273131,20 @@ function tablesUnmergeCellsAdapter2(editor, input2, options) {
|
|
|
272763
273131
|
try {
|
|
272764
273132
|
const tr = editor.state.tr;
|
|
272765
273133
|
const tablePos = table2.candidate.pos;
|
|
272766
|
-
const tableStart = tablePos + 1;
|
|
272767
273134
|
const tableNode = table2.candidate.node;
|
|
272768
|
-
const map8 = TableMap2.get(tableNode);
|
|
272769
273135
|
const schema = editor.state.schema;
|
|
272770
|
-
|
|
272771
|
-
|
|
272772
|
-
|
|
272773
|
-
|
|
272774
|
-
|
|
272775
|
-
|
|
272776
|
-
|
|
272777
|
-
|
|
272778
|
-
|
|
272779
|
-
|
|
272780
|
-
|
|
272781
|
-
|
|
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
|
-
}
|
|
273136
|
+
expandMergedCellIntoSingles2({
|
|
273137
|
+
tr,
|
|
273138
|
+
tablePos,
|
|
273139
|
+
tableNode,
|
|
273140
|
+
cellPos,
|
|
273141
|
+
cellNode,
|
|
273142
|
+
rowIndex,
|
|
273143
|
+
columnIndex,
|
|
273144
|
+
rowspan,
|
|
273145
|
+
colspan,
|
|
273146
|
+
schema
|
|
273147
|
+
});
|
|
272800
273148
|
applyDirectMutationMeta2(tr);
|
|
272801
273149
|
editor.dispatch(tr);
|
|
272802
273150
|
clearIndexCache2(editor);
|
|
@@ -272815,9 +273163,6 @@ function tablesSplitCellAdapter2(editor, input2, options) {
|
|
|
272815
273163
|
const attrs = cellNode.attrs;
|
|
272816
273164
|
const currentColspan = attrs.colspan || 1;
|
|
272817
273165
|
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
273166
|
if (input2.rows === 1 && input2.columns === 1 && currentColspan === 1 && currentRowspan === 1) {
|
|
272822
273167
|
return toTableFailure2("NO_OP", "Cell is already a single cell and split target is 1×1.");
|
|
272823
273168
|
}
|
|
@@ -272827,25 +273172,78 @@ function tablesSplitCellAdapter2(editor, input2, options) {
|
|
|
272827
273172
|
try {
|
|
272828
273173
|
const tr = editor.state.tr;
|
|
272829
273174
|
const tablePos = table2.candidate.pos;
|
|
272830
|
-
const tableStart = tablePos + 1;
|
|
272831
|
-
const tableNode = table2.candidate.node;
|
|
272832
|
-
const map8 = TableMap2.get(tableNode);
|
|
272833
273175
|
const schema = editor.state.schema;
|
|
272834
|
-
const
|
|
272835
|
-
const
|
|
272836
|
-
const
|
|
272837
|
-
|
|
272838
|
-
|
|
272839
|
-
|
|
272840
|
-
|
|
272841
|
-
|
|
272842
|
-
|
|
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
|
-
}
|
|
273176
|
+
const targetColumns = Math.max(input2.columns, currentColspan);
|
|
273177
|
+
const targetRows = Math.max(input2.rows, currentRowspan);
|
|
273178
|
+
const additionalColumns = Math.max(0, targetColumns - currentColspan);
|
|
273179
|
+
const additionalRows = Math.max(0, targetRows - currentRowspan);
|
|
273180
|
+
let updatedGrid = table2.candidate.node.attrs.grid;
|
|
273181
|
+
if (currentColspan > 1 || currentRowspan > 1) {
|
|
273182
|
+
const currentTableNode = tr.doc.nodeAt(tablePos);
|
|
273183
|
+
if (!currentTableNode || currentTableNode.type.name !== "table") {
|
|
273184
|
+
return toTableFailure2("INVALID_TARGET", "Cell split target table is unavailable.");
|
|
272848
273185
|
}
|
|
273186
|
+
const currentCellPos = tr.mapping.map(cellPos, 1);
|
|
273187
|
+
const currentCellNode = tr.doc.nodeAt(currentCellPos);
|
|
273188
|
+
if (!currentCellNode || currentCellNode.type.name !== "tableCell" && currentCellNode.type.name !== "tableHeader") {
|
|
273189
|
+
return toTableFailure2("INVALID_TARGET", "Split target cell is unavailable.");
|
|
273190
|
+
}
|
|
273191
|
+
expandMergedCellIntoSingles2({
|
|
273192
|
+
tr,
|
|
273193
|
+
tablePos,
|
|
273194
|
+
tableNode: currentTableNode,
|
|
273195
|
+
cellPos: currentCellPos,
|
|
273196
|
+
cellNode: currentCellNode,
|
|
273197
|
+
rowIndex,
|
|
273198
|
+
columnIndex,
|
|
273199
|
+
rowspan: currentRowspan,
|
|
273200
|
+
colspan: currentColspan,
|
|
273201
|
+
schema
|
|
273202
|
+
});
|
|
273203
|
+
}
|
|
273204
|
+
for (let columnOffset = 0;columnOffset < additionalColumns; columnOffset++) {
|
|
273205
|
+
const insertColumnIndex = columnIndex + currentColspan + columnOffset;
|
|
273206
|
+
addColumnToTableForSplit2(tr, tablePos, insertColumnIndex, rowIndex, rowIndex + targetRows);
|
|
273207
|
+
updatedGrid = insertGridColumnWidth2(updatedGrid, insertColumnIndex) ?? updatedGrid;
|
|
273208
|
+
}
|
|
273209
|
+
for (let rowOffset = 0;rowOffset < additionalRows; rowOffset++) {
|
|
273210
|
+
const currentTableNode = tr.doc.nodeAt(tablePos);
|
|
273211
|
+
if (!currentTableNode || currentTableNode.type.name !== "table") {
|
|
273212
|
+
return toTableFailure2("INVALID_TARGET", "Cell split target table is unavailable.");
|
|
273213
|
+
}
|
|
273214
|
+
const insertIndex = rowIndex + currentRowspan + rowOffset;
|
|
273215
|
+
const boundedInsertIndex = Math.max(0, Math.min(insertIndex, currentTableNode.childCount));
|
|
273216
|
+
const sourceRowIndex = Math.max(0, Math.min(boundedInsertIndex - 1, currentTableNode.childCount - 1));
|
|
273217
|
+
const didInsertRow = insertRowInTableForSplit2(tr, tablePos, sourceRowIndex, boundedInsertIndex, columnIndex, columnIndex + targetColumns, schema);
|
|
273218
|
+
if (!didInsertRow) {
|
|
273219
|
+
return toTableFailure2("INVALID_TARGET", "Cell split could not insert required rows.");
|
|
273220
|
+
}
|
|
273221
|
+
}
|
|
273222
|
+
const finalTableNode = tr.doc.nodeAt(tablePos);
|
|
273223
|
+
if (!finalTableNode || finalTableNode.type.name !== "table") {
|
|
273224
|
+
return toTableFailure2("INVALID_TARGET", "Cell split target table is unavailable.");
|
|
273225
|
+
}
|
|
273226
|
+
const mappedTargetCellPos = tr.mapping.map(cellPos, 1);
|
|
273227
|
+
let finalTargetCellPos = mappedTargetCellPos;
|
|
273228
|
+
let finalTargetCell = tr.doc.nodeAt(finalTargetCellPos);
|
|
273229
|
+
if (!finalTargetCell || finalTargetCell.type.name !== "tableCell" && finalTargetCell.type.name !== "tableHeader") {
|
|
273230
|
+
const tableStart = tablePos + 1;
|
|
273231
|
+
const finalMap = TableMap2.get(finalTableNode);
|
|
273232
|
+
const finalTargetRelPos = finalMap.positionAt(rowIndex, columnIndex, finalTableNode);
|
|
273233
|
+
finalTargetCellPos = tableStart + finalTargetRelPos;
|
|
273234
|
+
finalTargetCell = tr.doc.nodeAt(finalTargetCellPos);
|
|
273235
|
+
}
|
|
273236
|
+
if (!finalTargetCell || finalTargetCell.type.name !== "tableCell" && finalTargetCell.type.name !== "tableHeader") {
|
|
273237
|
+
return toTableFailure2("INVALID_TARGET", "Split target cell is unavailable.");
|
|
273238
|
+
}
|
|
273239
|
+
tr.setNodeMarkup(finalTargetCellPos, null, normalizeCellAttrsForSingleCell2(finalTargetCell.attrs));
|
|
273240
|
+
if (updatedGrid) {
|
|
273241
|
+
const currentTableAttrs = finalTableNode.attrs;
|
|
273242
|
+
tr.setNodeMarkup(tablePos, null, {
|
|
273243
|
+
...currentTableAttrs,
|
|
273244
|
+
grid: updatedGrid,
|
|
273245
|
+
userEdited: true
|
|
273246
|
+
});
|
|
272849
273247
|
}
|
|
272850
273248
|
applyDirectMutationMeta2(tr);
|
|
272851
273249
|
editor.dispatch(tr);
|
|
@@ -273647,7 +274045,6 @@ var init_tables_adapter = __esm(() => {
|
|
|
273647
274045
|
init_tracked_change_refs();
|
|
273648
274046
|
init_errors3();
|
|
273649
274047
|
init_node_address_resolver();
|
|
273650
|
-
init_appendRows();
|
|
273651
274048
|
init_helpers();
|
|
273652
274049
|
POINTS_TO_PIXELS2 = 96 / 72;
|
|
273653
274050
|
PIXELS_TO_TWIPS2 = 1440 / 96;
|