import {hasClosestByAttribute} from "../util/hasClosest"; import {fetchPost} from "../../util/fetch"; import {processRender} from "../util/processCode"; import {highlightRender} from "./highlightRender"; import {Constants} from "../../constants"; import {genBreadcrumb} from "../wysiwyg/renderBacklink"; export const blockRender = (protyle: IProtyle, element: Element) => { let blockElements: Element[] = []; if (element.getAttribute("data-type") === "NodeBlockQueryEmbed") { // 编辑器内代码块编辑渲染 blockElements = [element]; } else { blockElements = Array.from(element.querySelectorAll('[data-type="NodeBlockQueryEmbed"]')); } if (blockElements.length === 0) { return; } blockElements.forEach((item: HTMLElement) => { if (item.getAttribute("data-render") === "true") { return; } item.innerHTML = `
${item.lastElementChild.outerHTML}`; const content = Lute.UnEscapeHTMLStr(item.getAttribute("data-content")); fetchPost("/api/search/searchEmbedBlock", { stmt: content, headingMode: item.getAttribute("custom-heading-mode") === "1" ? 1 : 0, excludeIDs: [item.getAttribute("data-node-id"), protyle.block.rootID] }, (response) => { const rotateElement = item.querySelector(".fn__rotate"); if (rotateElement) { rotateElement.classList.remove("fn__rotate"); } let html = ""; response.data.blocks.forEach((blocksItem: { block: IBlock, blockPaths: IBreadcrumb[] }) => { html += ``; }); item.setAttribute("data-render", "true"); if (response.data.blocks.length > 0) { item.lastElementChild.insertAdjacentHTML("beforebegin", html + // 辅助上下移动时进行选中 `