diff --git a/app/src/mobile/editor.ts b/app/src/mobile/editor.ts index 6a4e992e8..f82b8cc92 100644 --- a/app/src/mobile/editor.ts +++ b/app/src/mobile/editor.ts @@ -70,8 +70,6 @@ export const openMobileFileById = (id: string, action = [Constants.CB_GET_HL]) = // protyle 仅初始化一次,后续更新时会对 url 等再次复制 if (window.siyuan.config.readonly || window.siyuan.config.editor.readOnly) { disabledProtyle(editor.protyle); - } else { - enableProtyle(editor.protyle); } } }); diff --git a/app/src/mobile/util/initFramework.ts b/app/src/mobile/util/initFramework.ts index 3df0106bc..4ea3a6441 100644 --- a/app/src/mobile/util/initFramework.ts +++ b/app/src/mobile/util/initFramework.ts @@ -155,7 +155,7 @@ const initEditorName = () => { hideKeyboardToolbar(); }); inputElement.addEventListener("blur", () => { - if (window.siyuan.config.readonly || window.siyuan.config.editor.readOnly) { + if (window.siyuan.config.readonly || window.siyuan.config.editor.readOnly || window.siyuan.mobileEditor.protyle.disabled) { return; } if (!validateName(inputElement.value)) { diff --git a/app/src/protyle/gutter/index.ts b/app/src/protyle/gutter/index.ts index d80b54c42..45121f228 100644 --- a/app/src/protyle/gutter/index.ts +++ b/app/src/protyle/gutter/index.ts @@ -131,16 +131,13 @@ export class Gutter { if (buttonElement.getAttribute("disabled")) { return; } - if (!window.siyuan.config.readonly) { + if (!protyle.disabled) { gutterFold(); } hideElements(["select"], protyle); window.siyuan.menus.menu.remove(); return; } - if (window.siyuan.config.readonly) { - return; - } if (window.siyuan.ctrlIsPressed) { zoomOut(protyle, id); } else if (window.siyuan.altIsPressed) { @@ -195,7 +192,7 @@ export class Gutter { }); this.element.addEventListener("contextmenu", (event: MouseEvent & { target: HTMLInputElement }) => { const buttonElement = hasClosestByTag(event.target, "BUTTON"); - if (!buttonElement || window.siyuan.config.readonly || buttonElement.getAttribute("data-type") === "fold") { + if (!buttonElement || protyle.disabled || buttonElement.getAttribute("data-type") === "fold") { return; } if (!window.siyuan.ctrlIsPressed && !window.siyuan.altIsPressed && !window.siyuan.shiftIsPressed) { @@ -408,7 +405,7 @@ export class Gutter { return true; } }); - if (!isList && !window.siyuan.config.readonly && !window.siyuan.config.editor.readOnly) { + if (!isList && !protyle.disabled) { const turnIntoSubmenu: IMenu[] = []; if (isContinue) { turnIntoSubmenu.push(this.turnsIntoOne({ @@ -587,7 +584,7 @@ export class Gutter { writeText(protyle.lute.BlockDOM2HTML(html)); } }).element); - if (window.siyuan.config.readonly || window.siyuan.config.editor.readOnly) { + if (protyle.disabled) { return; } window.siyuan.menus.menu.append(new MenuItem({ @@ -677,7 +674,7 @@ export class Gutter { nodeElement.classList.add("protyle-wysiwyg--select"); countBlockWord([id], protyle.block.rootID); // "heading1-6", "list", "ordered-list", "check", "quote", "code", "table", "line", "math", "paragraph" - if (type === "NodeParagraph" && !window.siyuan.config.readonly && !window.siyuan.config.editor.readOnly) { + if (type === "NodeParagraph" && !protyle.disabled) { turnIntoSubmenu.push(this.turnsIntoOne({ icon: "iconList", label: window.siyuan.languages.list, @@ -760,7 +757,7 @@ export class Gutter { level: 6, type: "Blocks2Hs", })); - } else if (type === "NodeHeading" && !window.siyuan.config.readonly && !window.siyuan.config.editor.readOnly) { + } else if (type === "NodeHeading" && !protyle.disabled) { turnIntoSubmenu.push(this.turnsInto({ icon: "iconParagraph", label: window.siyuan.languages.paragraph, @@ -836,7 +833,7 @@ export class Gutter { type: "Blocks2Hs", })); } - } else if (type === "NodeList" && !window.siyuan.config.readonly && !window.siyuan.config.editor.readOnly) { + } else if (type === "NodeList" && !protyle.disabled) { turnIntoSubmenu.push(this.turnsOneInto({ icon: "iconParagraph", label: window.siyuan.languages.paragraph, @@ -897,7 +894,7 @@ export class Gutter { type: "OL2TL" })); } - } else if (type === "NodeBlockquote" && !window.siyuan.config.readonly && !window.siyuan.config.editor.readOnly) { + } else if (type === "NodeBlockquote" && !protyle.disabled) { turnIntoSubmenu.push(this.turnsOneInto({ icon: "iconParagraph", label: window.siyuan.languages.paragraph, @@ -907,7 +904,7 @@ export class Gutter { type: "CancelBlockquote" })); } - if (turnIntoSubmenu.length > 0 && !window.siyuan.config.readonly && !window.siyuan.config.editor.readOnly) { + if (turnIntoSubmenu.length > 0 && !protyle.disabled) { window.siyuan.menus.menu.append(new MenuItem({ icon: "iconRefresh", label: window.siyuan.languages.turnInto, @@ -951,7 +948,7 @@ export class Gutter { } }, { label: window.siyuan.languages.duplicate, - disabled: window.siyuan.config.readonly || window.siyuan.config.editor.readOnly, + disabled: protyle.disabled, click() { const tempElement = nodeElement.cloneNode(true) as HTMLElement; const newId = Lute.NewNodeID(); @@ -974,7 +971,7 @@ export class Gutter { } }]) }).element); - if (!window.siyuan.config.readonly && !window.siyuan.config.editor.readOnly) { + if (!protyle.disabled) { window.siyuan.menus.menu.append(new MenuItem({ label: window.siyuan.languages.cut, accelerator: "⌘X", @@ -1008,7 +1005,7 @@ export class Gutter { } }).element); } - if (type === "NodeSuperBlock" && !window.siyuan.config.readonly && !window.siyuan.config.editor.readOnly) { + if (type === "NodeSuperBlock" && !protyle.disabled) { window.siyuan.menus.menu.append(new MenuItem({type: "separator"}).element); window.siyuan.menus.menu.append(new MenuItem({ label: window.siyuan.languages.cancel + " " + window.siyuan.languages.superBlock, @@ -1019,7 +1016,7 @@ export class Gutter { hideElements(["gutter"], protyle); } }).element); - } else if (type === "NodeCodeBlock" && !window.siyuan.config.readonly && !window.siyuan.config.editor.readOnly && !nodeElement.getAttribute("data-subtype")) { + } else if (type === "NodeCodeBlock" && !protyle.disabled && !nodeElement.getAttribute("data-subtype")) { window.siyuan.menus.menu.append(new MenuItem({type: "separator"}).element); const linewrap = nodeElement.getAttribute("linewrap"); const ligatures = nodeElement.getAttribute("ligatures"); @@ -1088,7 +1085,7 @@ export class Gutter { } }] }).element); - } else if (type === "NodeCodeBlock" && !window.siyuan.config.readonly && !window.siyuan.config.editor.readOnly && ["echarts", "mindmap"].includes(nodeElement.getAttribute("data-subtype"))) { + } else if (type === "NodeCodeBlock" && !protyle.disabled && ["echarts", "mindmap"].includes(nodeElement.getAttribute("data-subtype"))) { window.siyuan.menus.menu.append(new MenuItem({type: "separator"}).element); const height = (nodeElement as HTMLElement).style.height; let html = nodeElement.outerHTML; @@ -1120,7 +1117,7 @@ export class Gutter { } }] }).element); - } else if (type === "NodeTable" && !window.siyuan.config.readonly && !window.siyuan.config.editor.readOnly) { + } else if (type === "NodeTable" && !protyle.disabled) { let range = getEditorRange(nodeElement); const tableElement = nodeElement.querySelector("table"); if (!tableElement.contains(range.startContainer)) { @@ -1136,7 +1133,7 @@ export class Gutter { submenu: tableMenu(protyle, nodeElement, cellElement as HTMLTableCellElement, range) as IMenu[] }).element); } - } else if ((type === "NodeVideo" || type === "NodeAudio") && !window.siyuan.config.readonly && !window.siyuan.config.editor.readOnly) { + } else if ((type === "NodeVideo" || type === "NodeAudio") && !protyle.disabled) { window.siyuan.menus.menu.append(new MenuItem({type: "separator"}).element); window.siyuan.menus.menu.append(new MenuItem({ id: "assetSubMenu", @@ -1145,7 +1142,7 @@ export class Gutter { label: window.siyuan.languages.assets, submenu: videoMenu(protyle, nodeElement, type) }).element); - } else if (type === "NodeIFrame" && !window.siyuan.config.readonly && !window.siyuan.config.editor.readOnly) { + } else if (type === "NodeIFrame" && !protyle.disabled) { window.siyuan.menus.menu.append(new MenuItem({type: "separator"}).element); window.siyuan.menus.menu.append(new MenuItem({ id: "assetSubMenu", @@ -1154,7 +1151,7 @@ export class Gutter { label: window.siyuan.languages.assets, submenu: iframeMenu(protyle, nodeElement) }).element); - } else if (type === "NodeHTMLBlock" && !window.siyuan.config.readonly && !window.siyuan.config.editor.readOnly) { + } else if (type === "NodeHTMLBlock" && !protyle.disabled) { window.siyuan.menus.menu.append(new MenuItem({type: "separator"}).element); window.siyuan.menus.menu.append(new MenuItem({ icon: "iconHTML5", @@ -1163,7 +1160,7 @@ export class Gutter { protyle.toolbar.showRender(protyle, nodeElement); } }).element); - } else if (type === "NodeBlockQueryEmbed" && !window.siyuan.config.readonly && !window.siyuan.config.editor.readOnly) { + } else if (type === "NodeBlockQueryEmbed" && !protyle.disabled) { window.siyuan.menus.menu.append(new MenuItem({type: "separator"}).element); const breadcrumb = nodeElement.getAttribute("breadcrumb"); window.siyuan.menus.menu.append(new MenuItem({ @@ -1226,7 +1223,7 @@ export class Gutter { } }] }).element); - } else if (type === "NodeHeading" && !window.siyuan.config.readonly && !window.siyuan.config.editor.readOnly) { + } else if (type === "NodeHeading" && !protyle.disabled) { window.siyuan.menus.menu.append(new MenuItem({type: "separator"}).element); const headingSubMenu = []; if (subType !== "h1") { @@ -1327,7 +1324,7 @@ export class Gutter { } } }).element); - if (!window.siyuan.config.readonly && !window.siyuan.config.editor.readOnly) { + if (!protyle.disabled) { window.siyuan.menus.menu.append(new MenuItem({ icon: "iconBefore", label: window.siyuan.languages["insert-before"], @@ -1368,7 +1365,7 @@ export class Gutter { focusBlock(nodeElement); } }).element); - if (!window.siyuan.config.readonly && !window.siyuan.config.editor.readOnly) { + if (!protyle.disabled) { window.siyuan.menus.menu.append(new MenuItem({ label: window.siyuan.languages.attr, accelerator: window.siyuan.config.keymap.editor.general.attr.custom + "/" + updateHotkeyTip("⇧Click"), @@ -1378,7 +1375,7 @@ export class Gutter { }).element); } } - if (!window.siyuan.config.readonly && !window.siyuan.config.editor.readOnly) { + if (!protyle.disabled) { const appearanceElement = new MenuItem({ label: window.siyuan.languages.appearance, submenu: this.genCardStyle([nodeElement], protyle).concat(this.genFontStyle([nodeElement], protyle)).concat(this.genBGStyle([nodeElement], protyle)) @@ -1663,7 +1660,7 @@ export class Gutter { }]); } - public render(element: Element, wysiwyg: HTMLElement) { + public render(protyle:IProtyle, element: Element, wysiwyg: HTMLElement) { // https://github.com/siyuan-note/siyuan/issues/4659 const titleElement = wysiwyg.parentElement.querySelector(".protyle-title__input"); if (titleElement && titleElement.getAttribute("data-render") !== "true") { @@ -1711,7 +1708,7 @@ export class Gutter { } index += 1; if (isShow) { - html = `` + html; + html = `` + html; } let foldHTML = ""; if (type === "NodeListItem" && nodeElement.childElementCount > 3 || type === "NodeHeading") { @@ -1721,7 +1718,7 @@ export class Gutter { if (type === "NodeListItem" || type === "NodeList") { listItem = nodeElement; if (type === "NodeListItem" && nodeElement.childElementCount > 3) { - html = `${foldHTML}`; + html = `${foldHTML}`; } } if (type === "NodeHeading") { diff --git a/app/src/protyle/wysiwyg/index.ts b/app/src/protyle/wysiwyg/index.ts index ac0090b5b..613f01807 100644 --- a/app/src/protyle/wysiwyg/index.ts +++ b/app/src/protyle/wysiwyg/index.ts @@ -1256,9 +1256,9 @@ export class WYSIWYG { if (nodeElement) { const embedElement = hasClosestByAttribute(nodeElement, "data-type", "NodeBlockQueryEmbed"); if (embedElement) { - protyle.gutter.render(embedElement, this.element); + protyle.gutter.render(protyle, embedElement, this.element); } else { - protyle.gutter.render(nodeElement, this.element); + protyle.gutter.render(protyle, nodeElement, this.element); } } }); diff --git a/app/src/util/globalShortcut.ts b/app/src/util/globalShortcut.ts index 5afb9ed83..3c7ebb8a0 100644 --- a/app/src/util/globalShortcut.ts +++ b/app/src/util/globalShortcut.ts @@ -104,7 +104,7 @@ export const globalShortcut = () => { let findNode = false; allModels.editor.find(item => { if (item.editor.protyle.wysiwyg.element.isSameNode(eventPath0)) { - item.editor.protyle.gutter.render(targetBlockElement, item.editor.protyle.wysiwyg.element); + item.editor.protyle.gutter.render(item.editor.protyle, targetBlockElement, item.editor.protyle.wysiwyg.element); findNode = true; return true; } @@ -113,7 +113,7 @@ export const globalShortcut = () => { window.siyuan.blockPanels.find(item => { item.editors.find(eItem => { if (eItem.protyle.wysiwyg.element.contains(eventPath0)) { - eItem.protyle.gutter.render(targetBlockElement, eItem.protyle.wysiwyg.element); + eItem.protyle.gutter.render(eItem.protyle, targetBlockElement, eItem.protyle.wysiwyg.element); findNode = true; return true; } @@ -127,7 +127,7 @@ export const globalShortcut = () => { allModels.backlink.find(item => { item.editors.find(eItem => { if (eItem.protyle.wysiwyg.element.isSameNode(eventPath0)) { - eItem.protyle.gutter.render(targetBlockElement, eItem.protyle.wysiwyg.element); + eItem.protyle.gutter.render(eItem.protyle, targetBlockElement, eItem.protyle.wysiwyg.element); findNode = true; return true; } @@ -150,7 +150,7 @@ export const globalShortcut = () => { let findNode = false; allModels.editor.find(item => { if (item.editor.protyle.wysiwyg.element.contains(eventPath0)) { - item.editor.protyle.gutter.render(targetBlockElement, item.editor.protyle.wysiwyg.element); + item.editor.protyle.gutter.render(item.editor.protyle, targetBlockElement, item.editor.protyle.wysiwyg.element); findNode = true; return true; } @@ -159,7 +159,7 @@ export const globalShortcut = () => { window.siyuan.blockPanels.find(item => { item.editors.find(eItem => { if (eItem.protyle.wysiwyg.element.contains(eventPath0)) { - eItem.protyle.gutter.render(targetBlockElement, eItem.protyle.wysiwyg.element); + eItem.protyle.gutter.render(eItem.protyle, targetBlockElement, eItem.protyle.wysiwyg.element); findNode = true; return true; } @@ -173,7 +173,7 @@ export const globalShortcut = () => { allModels.backlink.find(item => { item.editors.find(eItem => { if (eItem.protyle.wysiwyg.element.contains(eventPath0)) { - eItem.protyle.gutter.render(targetBlockElement, eItem.protyle.wysiwyg.element); + eItem.protyle.gutter.render(eItem.protyle, targetBlockElement, eItem.protyle.wysiwyg.element); findNode = true; return true; }