diff --git a/app/src/config/image.ts b/app/src/config/image.ts index 50fc21325..14de38a60 100644 --- a/app/src/config/image.ts +++ b/app/src/config/image.ts @@ -11,6 +11,8 @@ import * as path from "path"; import {openBy} from "../editor/util"; import {renderAssetsPreview} from "../asset/renderAssets"; import {writeText} from "../protyle/util/compatibility"; +import {Constants} from "../constants"; +import {avRender} from "../protyle/render/av/render"; export const image = { element: undefined as Element, @@ -63,7 +65,7 @@ export const image = { -
+
@@ -96,6 +98,9 @@ export const image = { assetsListElement.nextElementSibling.innerHTML = ""; }); }, undefined, true); + event.preventDefault(); + event.stopPropagation(); + break; } else if (target.id === "removeAVAll") { confirmDialog(window.siyuan.languages.deleteOpConfirm, `${window.siyuan.languages.clearAll}`, () => { fetchPost("/api/av/removeUnusedAttributeViews", {}, () => { @@ -103,6 +108,9 @@ export const image = { avListElement.nextElementSibling.innerHTML = ""; }); }, undefined, true); + event.preventDefault(); + event.stopPropagation(); + break; } else if (target.classList.contains("item") && !target.classList.contains("item--focus")) { image.element.querySelector(".layout-tab-bar .item--focus").classList.remove("item--focus"); target.classList.add("item--focus"); @@ -128,16 +136,28 @@ export const image = { event.preventDefault(); event.stopPropagation(); break; + } else if (target.getAttribute("data-tab-type") === "unRefAV") { + avListElement.nextElementSibling.innerHTML = `
${Constants.ZWSP}
`; + avRender(avListElement.nextElementSibling.firstElementChild, null); + event.preventDefault(); + event.stopPropagation(); + break; } else if (type === "copy") { if (target.parentElement.getAttribute("data-tab-type") === "unRefAV") { writeText(`
`); } else { writeText(target.parentElement.querySelector(".b3-list-item__text").textContent.trim().replace("assets/", "")); } + event.preventDefault(); + event.stopPropagation(); + break; } else if (type === "open") { /// #if !BROWSER openBy(target.parentElement.getAttribute("data-path"), "folder"); /// #endif + event.preventDefault(); + event.stopPropagation(); + break; } else if (type === "clear") { const pathString = target.parentElement.getAttribute("data-path"); confirmDialog(window.siyuan.languages.deleteOpConfirm, `${window.siyuan.languages.delete} ${pathPosix().basename(pathString)}`, () => { diff --git a/app/src/protyle/render/av/render.ts b/app/src/protyle/render/av/render.ts index 2f1d522f4..6a75cc84a 100644 --- a/app/src/protyle/render/av/render.ts +++ b/app/src/protyle/render/av/render.ts @@ -270,7 +270,7 @@ const renderGroupTable = (options: ITableOptions) => { }); if (options.renderAll) { options.blockElement.firstElementChild.outerHTML = `
- ${genTabHeaderHTML(options.data, isSearching || !!query, !options.protyle.disabled && !hasClosestByAttribute(options.blockElement, "data-type", "NodeBlockQueryEmbed"))} + ${genTabHeaderHTML(options.data, isSearching || !!query, options.protyle ? (!options.protyle.disabled && !hasClosestByAttribute(options.blockElement, "data-type", "NodeBlockQueryEmbed")) : false)}
${avBodyHTML}
@@ -290,13 +290,13 @@ const afterRenderTable = (options: ITableOptions) => { options.blockElement.setAttribute("data-render", "true"); options.blockElement.querySelector(".av__scroll").scrollLeft = options.resetData.left; options.blockElement.style.alignSelf = options.resetData.alignSelf; - const editRect = options.protyle.contentElement.getBoundingClientRect(); + const editRect = options.protyle ? options.protyle.contentElement.getBoundingClientRect() : null; if (options.resetData.headerTransform) { const headerTransformElement = options.blockElement.querySelector(`.av__body[data-group-id="${options.resetData.headerTransform.groupId}"] .av__row--header`) as HTMLElement; if (headerTransformElement) { headerTransformElement.style.transform = options.resetData.headerTransform.transform; } - } else { + } else if (editRect) { // 需等待渲染完,否则 getBoundingClientRect 错误 https://github.com/siyuan-note/siyuan/issues/13787 setTimeout(() => { stickyRow(options.blockElement, editRect, "top"); @@ -307,7 +307,7 @@ const afterRenderTable = (options: ITableOptions) => { if (footerTransformElement) { footerTransformElement.style.transform = options.resetData.footerTransform.transform; } - } else { + } else if (editRect) { // 需等待渲染完,否则 getBoundingClientRect 错误 https://github.com/siyuan-note/siyuan/issues/13787 setTimeout(() => { stickyRow(options.blockElement, editRect, "bottom"); @@ -549,11 +549,11 @@ export const avRender = async (element: Element, protyle: IProtyle, cb?: (data: }); e.firstElementChild.innerHTML = html; } - const created = protyle.options.history?.created; - const snapshot = protyle.options.history?.snapshot; const avPageSize = getPageSize(e); let data: IAV; if (!avData) { + const created = protyle ? protyle.options.history?.created : false; + const snapshot = protyle ? protyle.options.history?.snapshot : false; const response = await fetchSyncPost(created ? "/api/av/renderHistoryAttributeView" : (snapshot ? "/api/av/renderSnapshotAttributeView" : "/api/av/renderAttributeView"), { id: e.getAttribute("data-av-id"), created, @@ -588,7 +588,7 @@ export const avRender = async (element: Element, protyle: IProtyle, cb?: (data:
`; if (renderAll) { e.firstElementChild.outerHTML = `
- ${genTabHeaderHTML(data, resetData.isSearching || !!resetData.query, !protyle.disabled && !hasClosestByAttribute(e, "data-type", "NodeBlockQueryEmbed"))} + ${genTabHeaderHTML(data, resetData.isSearching || !!resetData.query, protyle ? (!protyle.disabled && !hasClosestByAttribute(e, "data-type", "NodeBlockQueryEmbed")) : false)}
${avBodyHTML}