From 66b6bf4dd5be0527775ecc063f996cf5dd2a663e Mon Sep 17 00:00:00 2001 From: Vanessa Date: Fri, 24 May 2024 08:39:12 +0800 Subject: [PATCH] :art: https://github.com/siyuan-note/siyuan/issues/11519 --- app/src/boot/globalEvent/keydown.ts | 9 +++++++++ app/src/protyle/render/av/action.ts | 3 ++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/app/src/boot/globalEvent/keydown.ts b/app/src/boot/globalEvent/keydown.ts index f04001716..f715b5c1a 100644 --- a/app/src/boot/globalEvent/keydown.ts +++ b/app/src/boot/globalEvent/keydown.ts @@ -449,6 +449,15 @@ const editKeydown = (app: App, event: KeyboardEvent) => { event.preventDefault(); return true; } + if (matchHotKey(window.siyuan.config.keymap.editor.general.duplicateCompletely.custom, event)) { + const nodeElement = hasClosestBlock(range.startContainer); + if (!nodeElement || !nodeElement.classList.contains("av")) { + return false; + } + duplicateCompletely(protyle, nodeElement); + event.preventDefault(); + return true; + } if (matchHotKey(window.siyuan.config.keymap.editor.general.refresh.custom, event)) { reloadProtyle(protyle, true); event.preventDefault(); diff --git a/app/src/protyle/render/av/action.ts b/app/src/protyle/render/av/action.ts index 6303cd602..42d35061b 100644 --- a/app/src/protyle/render/av/action.ts +++ b/app/src/protyle/render/av/action.ts @@ -494,14 +494,15 @@ export const removeAttrViewColAnimation = (blockElement: Element, id: string) => export const duplicateCompletely = (protyle:IProtyle, nodeElement:HTMLElement) => { fetchPost("/api/av/duplicateAttributeViewBlock", {avID: nodeElement.getAttribute("data-av-id")}, (response) => { + nodeElement.classList.remove("protyle-wysiwyg--select") const tempElement = document.createElement("template"); tempElement.innerHTML = protyle.lute.SpinBlockDOM(`
`) const cloneElement = tempElement.content.firstElementChild; nodeElement.after(cloneElement); avRender(cloneElement, protyle, () => { focusBlock(cloneElement); + scrollCenter(protyle); }); - scrollCenter(protyle); transaction(protyle, [{ action: "insert", data: cloneElement.outerHTML,