diff --git a/app/src/protyle/util/insertHTML.ts b/app/src/protyle/util/insertHTML.ts
index 02228537c..2908b862b 100644
--- a/app/src/protyle/util/insertHTML.ts
+++ b/app/src/protyle/util/insertHTML.ts
@@ -186,28 +186,52 @@ const processAV = (range: Range, html: string, protyle: IProtyle, blockElement:
}
const text = protyle.lute.BlockDOM2Content(html);
- const cellsElement: HTMLElement[] = Array.from(blockElement.querySelectorAll(".av__cell--active, .av__cell--select"));
- const rowsElement = blockElement.querySelector(".av__row--select");
+ const cellElements: HTMLElement[] = Array.from(blockElement.querySelectorAll(".av__cell--active, .av__cell--select"));
+ const rowsElement = blockElement.querySelectorAll(".av__row--select");
- if (rowsElement) {
+ const textJSON: string[][] = [];
+ text.split("\n").forEach(row => {
+ textJSON.push(row.split("\t"));
+ });
+ if (rowsElement && textJSON.length === 1 && textJSON[0].length === 1) {
updateCellsValue(protyle, blockElement as HTMLElement, text, undefined, columns, html);
- } else if (cellsElement.length > 0) {
- if (cellsElement.length > 1) {
- // 选择多个单元格时,逐行填充
- let rowIndex = 0;
- text.split("\n").find((row) => {
- if (!row) {
- return false;
- }
- if (cellsElement[rowIndex]) {
- updateCellsValue(protyle, blockElement as HTMLElement, row.trim(), [cellsElement[rowIndex]], columns, html);
- rowIndex++;
+ return;
+ }
+ if (rowsElement) {
+ rowsElement.forEach(rowElement => {
+ rowElement.querySelectorAll(".av__cell").forEach((cellElement: HTMLElement) => {
+ cellElements.push(cellElement);
+ });
+ });
+ }
+ if (cellElements.length > 0) {
+ if (textJSON.length === 1 && textJSON[0].length === 1) {
+ updateCellsValue(protyle, blockElement as HTMLElement, text, cellElements, columns, html);
+ } else {
+ let currentRowElement:Element
+ const firstColIndex = cellElements[0].getAttribute("data-col-id");
+ textJSON.forEach((rowValue, rowIndex) => {
+ if (!currentRowElement) {
+ currentRowElement = cellElements[0].parentElement;
} else {
+ currentRowElement = currentRowElement.nextElementSibling;
+ }
+ if (!currentRowElement.classList.contains("av__row")) {
return true;
}
- });
- } else {
- updateCellsValue(protyle, blockElement as HTMLElement, text, cellsElement, columns, html);
+ let cellElement: HTMLElement;
+ rowValue.forEach((cellValue, cellIndex) => {
+ if (!cellElement) {
+ cellElement = currentRowElement.querySelector(`.av__cell[data-col-id="${firstColIndex}"]`) as HTMLElement;
+ } else {
+ cellElement = cellElement.nextElementSibling as HTMLElement;
+ }
+ if (!cellElement.classList.contains("av__cell")) {
+ return true;
+ }
+ updateCellsValue(protyle, blockElement as HTMLElement, cellValue, [cellElement], columns, html);
+ });
+ })
}
document.querySelector(".av__panel")?.remove();
} else if (hasClosestByClassName(range.startContainer, "av__title")) {