From b5004ef48f31680674bdf51f2f74869fc453e1ef Mon Sep 17 00:00:00 2001 From: Vanessa Date: Mon, 24 Apr 2023 09:48:54 +0800 Subject: [PATCH] :art: https://github.com/siyuan-note/siyuan/issues/8085 --- app/src/asset/anno.ts | 19 +++++++++++++++++++ app/src/asset/pdf/app.js | 12 ++++++++++++ 2 files changed, 31 insertions(+) diff --git a/app/src/asset/anno.ts b/app/src/asset/anno.ts index 05551c38a..35423eb3d 100644 --- a/app/src/asset/anno.ts +++ b/app/src/asset/anno.ts @@ -131,6 +131,25 @@ export const initAnno = (file: string, element: HTMLElement, annoId: string, pdf element.addEventListener("click", (event) => { let processed = false; let target = event.target as HTMLElement; + if (typeof event.detail === "string") { + window.siyuan.storage[Constants.LOCAL_PDFTHEME].annoColor = event.detail === "0" ? + (window.siyuan.storage[Constants.LOCAL_PDFTHEME].annoColor || "var(--b3-pdf-background1)") + : `var(--b3-pdf-background${event.detail})`; + setStorageVal(Constants.LOCAL_PDFTHEME, window.siyuan.storage[Constants.LOCAL_PDFTHEME]); + const coords = getHightlightCoordsByRange(pdf, window.siyuan.storage[Constants.LOCAL_PDFTHEME].annoColor); + if (coords) { + coords.forEach((item, index) => { + const newElement = showHighlight(item, pdf); + if (index === 0) { + rectElement = newElement; + copyAnno(`${pdf.appConfig.file.replace(location.origin, "").substr(1)}/${rectElement.getAttribute("data-node-id")}`, + pdf.appConfig.file.replace(location.origin, "").substr(8).replace(/-\d{14}-\w{7}.pdf$/, "")); + } + }); + } + hideToolbar(element); + return; + } while (target && !target.classList.contains("pdf__outer")) { const type = target.getAttribute("data-type"); if (target.classList.contains("color__square")) { diff --git a/app/src/asset/pdf/app.js b/app/src/asset/pdf/app.js index ed5997037..af143adac 100644 --- a/app/src/asset/pdf/app.js +++ b/app/src/asset/pdf/app.js @@ -3194,6 +3194,18 @@ function webViewerKeyDown(evt) { return } + if (!evt.repeat && cmd !== 1 && cmd !== 2 && cmd !== 4 && cmd !== 8 && + [48, 49, 50, 51, 52, 53, 54, 55].includes(evt.keyCode) && + getSelection().rangeCount > 0 && + !pdfInstance.appConfig.toolbar.rectAnno.classList.contains('toggled')) { + const range = getSelection().getRangeAt(0); + if (range.toString() !== "" && hasClosestByClassName(range.commonAncestorContainer, "pdfViewer")) { + pdfInstance.appConfig.appContainer.dispatchEvent(new CustomEvent("click", {detail: (evt.keyCode - 48).toString()})); + evt.preventDefault() + return + } + } + // First, handle the key bindings that are independent whether an input // control is selected or not. if (cmd === 1 || cmd === 8 || cmd === 5 || cmd === 12) {