diff --git a/app/src/protyle/render/av/cell.ts b/app/src/protyle/render/av/cell.ts index 9463057e2..004dae8f8 100644 --- a/app/src/protyle/render/av/cell.ts +++ b/app/src/protyle/render/av/cell.ts @@ -516,7 +516,7 @@ const updateCellValueByInput = (protyle: IProtyle, type: TAVCol, blockElement: H }; export const updateCellsValue = (protyle: IProtyle, nodeElement: HTMLElement, value?: any, cElements?: HTMLElement[], - columns?: IAVColumn[]) => { + columns?: IAVColumn[], html?: string) => { const doOperations: IOperation[] = []; const undoOperations: IOperation[] = []; @@ -569,9 +569,27 @@ export const updateCellsValue = (protyle: IProtyle, nodeElement: HTMLElement, va if (type === "mAsset") { if (Array.isArray(value)) { value = oldValue.mAsset.concat(value); - } else if (typeof value !== "undefined") { - // 不传入为删除,传入字符串不进行处理 - return; + } else if (typeof value !== "undefined") { // 不传入为删除,传入字符串不进行处理 + let link = protyle.lute.GetLinkDest(value); + let name = ""; + if (html) { + const tempElement = document.createElement("template") + tempElement.innerHTML = html + const aElement = tempElement.content.querySelector('[data-type~="a"]') + if (aElement) { + link = aElement.getAttribute("data-href"); + name = aElement.textContent + } + } + if (!link && !name) { + return; + } + // 支持解析 https://github.com/siyuan-note/siyuan/issues/11463 + value = oldValue.mAsset.concat({ + type: "file", + content: link, + name + }); } } else if (type === "mSelect") { // 不传入为删除 diff --git a/app/src/protyle/util/insertHTML.ts b/app/src/protyle/util/insertHTML.ts index 325cfba50..aed8df218 100644 --- a/app/src/protyle/util/insertHTML.ts +++ b/app/src/protyle/util/insertHTML.ts @@ -176,9 +176,9 @@ const processAV = (range: Range, html: string, protyle: IProtyle, blockElement: const rowsElement = blockElement.querySelector(".av__row--select"); if (rowsElement) { - updateCellsValue(protyle, blockElement as HTMLElement, text, undefined, columns); + updateCellsValue(protyle, blockElement as HTMLElement, text, undefined, columns, html); } else if (cellsElement.length > 0) { - updateCellsValue(protyle, blockElement as HTMLElement, text, cellsElement, columns); + updateCellsValue(protyle, blockElement as HTMLElement, text, cellsElement, columns, html); } else if (hasClosestByClassName(range.startContainer, "av__title")) { range.insertNode(document.createTextNode(text)); range.collapse(false); diff --git a/app/src/protyle/wysiwyg/index.ts b/app/src/protyle/wysiwyg/index.ts index 4150da378..536761832 100644 --- a/app/src/protyle/wysiwyg/index.ts +++ b/app/src/protyle/wysiwyg/index.ts @@ -1577,7 +1577,7 @@ export class WYSIWYG { blockElement: hasClosestBlock(assetImgElement) as HTMLElement, content: target.tagName === "IMG" ? target.getAttribute("src") : target.getAttribute("data-url"), type: target.tagName === "IMG" ? "image" : "file", - name: target.tagName === "IMG" ? "" : target.textContent, + name: target.tagName === "IMG" ? "" : target.getAttribute("data-name"), index, rect: target.getBoundingClientRect() });