From 8be20e023ce21b890c172f59fc5c8e560abd0f15 Mon Sep 17 00:00:00 2001 From: frostime Date: Fri, 27 Oct 2023 20:52:25 +0800 Subject: [PATCH] update typescript --- src/index.ts | 69 ++++++++++++++++++++++++++++++++++++++++++---------- 1 file changed, 56 insertions(+), 13 deletions(-) diff --git a/src/index.ts b/src/index.ts index f65b4e1..353d472 100644 --- a/src/index.ts +++ b/src/index.ts @@ -11,7 +11,7 @@ import { IModel, Setting, fetchPost, - Protyle, openWindow + Protyle, openWindow, IOperation } from "siyuan"; import "@/index.scss"; @@ -68,7 +68,7 @@ export default class PluginSample extends Plugin { }); const statusIconTemp = document.createElement("template"); - statusIconTemp.innerHTML = `
+ statusIconTemp.innerHTML = `
@@ -272,19 +272,38 @@ export default class PluginSample extends Plugin { }); } + private eventBusPaste(event: any) { + // 如果需异步处理请调用 preventDefault, 否则会进行默认处理 + event.preventDefault(); + // 如果使用了 preventDefault,必须调用 resolve,否则程序会卡死 + event.detail.resolve({ + textPlain: event.detail.textPlain.trim(), + }); + } + private eventBusLog({ detail }: any) { console.log(detail); } private blockIconEvent({ detail }: any) { - const ids: string[] = []; - detail.blockElements.forEach((item: HTMLElement) => { - ids.push(item.getAttribute("data-node-id")); - }); detail.menu.addItem({ iconHTML: "", - type: "readonly", - label: "IDs
" + ids.join("
"), + label: this.i18n.removeSpace, + click: () => { + const doOperations: IOperation[] = []; + detail.blockElements.forEach((item: HTMLElement) => { + const editElement = item.querySelector('[contenteditable="true"]'); + if (editElement) { + editElement.textContent = editElement.textContent.replace(/ /g, ""); + doOperations.push({ + id: item.dataset.nodeId, + data: item.outerHTML, + action: "update" + }); + } + }); + detail.protyle.getInstance().transaction(doOperations); + } }); } @@ -488,9 +507,15 @@ export default class PluginSample extends Plugin { } }, { icon: "iconSelect", - label: "On loaded-protyle", + label: "On loaded-protyle-static", click: () => { - this.eventBus.on("loaded-protyle", this.eventBusLog); + this.eventBus.on("loaded-protyle-static", this.eventBusLog); + } + }, { + icon: "iconClose", + label: "Off loaded-protyle-static", + click: () => { + this.eventBus.off("loaded-protyle-static", this.eventBusLog); } }, { icon: "iconSelect", @@ -517,10 +542,16 @@ export default class PluginSample extends Plugin { this.eventBus.off("destroy-protyle", this.eventBusLog); } }, { - icon: "iconClose", - label: "Off loaded-protyle", + icon: "iconSelect", + label: "On open-menu-doctree", click: () => { - this.eventBus.off("loaded-protyle", this.eventBusLog); + this.eventBus.on("open-menu-doctree", this.eventBusLog); + } + }, { + icon: "iconClose", + label: "Off open-menu-doctree", + click: () => { + this.eventBus.off("open-menu-doctree", this.eventBusLog); } }, { icon: "iconSelect", @@ -630,6 +661,18 @@ export default class PluginSample extends Plugin { click: () => { this.eventBus.off("input-search", this.eventBusLog); } + }, { + icon: "iconSelect", + label: "On paste", + click: () => { + this.eventBus.on("paste", this.eventBusPaste); + } + }, { + icon: "iconClose", + label: "Off paste", + click: () => { + this.eventBus.off("paste", this.eventBusPaste); + } }, { icon: "iconSelect", label: "On open-siyuan-url-plugin",