From 2475b847d6c86a226147890566449bd69cff88e3 Mon Sep 17 00:00:00 2001 From: wux_labs Date: Tue, 7 Jan 2025 21:45:32 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=BF=AB=E6=8D=B7=E9=94=AE?= =?UTF-8?q?=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/core/UAIExtensions.ts | 9 ++++--- src/extensions/Shortcuts.ts | 48 +++++++++++++++++++++++++++++++++++++ 2 files changed, 54 insertions(+), 3 deletions(-) create mode 100644 src/extensions/Shortcuts.ts diff --git a/src/core/UAIExtensions.ts b/src/core/UAIExtensions.ts index 6f46c33..1e16794 100644 --- a/src/core/UAIExtensions.ts +++ b/src/core/UAIExtensions.ts @@ -26,6 +26,7 @@ import { Export } from '@tiptap-pro/extension-export'; import { Mathematics } from '@tiptap-pro/extension-mathematics'; import { TableOfContents, getHierarchicalIndexes } from '@tiptap-pro/extension-table-of-contents' +import Audio from "../extensions/Audio.ts"; import BulletList from "../extensions/BulletList.ts"; import FontSize from "../extensions/FontSize.ts"; import Image from "../extensions/Image.ts"; @@ -35,10 +36,11 @@ import NodeAlign from "../extensions/NodeAlign.ts"; import OrderedList from "../extensions/OrderedList.ts"; import SelectFile from "../extensions/SelectFile.ts"; import Selection from "../extensions/Selection.ts"; -import Video from "../extensions/Video.ts"; -import Audio from "../extensions/Audio.ts"; -import { uuid } from "../utils/UUID.ts"; +import Shortcuts from "../extensions/Shortcuts.ts"; import Toc from "../extensions/Toc.ts"; +import Video from "../extensions/Video.ts"; + +import { uuid } from "../utils/UUID.ts"; import { BubbleMenuPluginOptions, BubbleMenuPlugin } from "../components/menus/bubble/BubbleMenuPlugin.ts"; import { TextSelectionBubbleMenu } from "../components/menus/bubble/TextSelectionBubbleMenu.ts"; @@ -234,6 +236,7 @@ export const allExtensions = (uaiEditor: UAIEditor, _options: UAIEditorOptions): allowedMimeTypes: [] }), Selection, + Shortcuts, Subscript, Superscript, Table.configure({ diff --git a/src/extensions/Shortcuts.ts b/src/extensions/Shortcuts.ts new file mode 100644 index 0000000..91a65e6 --- /dev/null +++ b/src/extensions/Shortcuts.ts @@ -0,0 +1,48 @@ +// Copyright (c) 2024-present AI-Labs + +import { Extension } from '@tiptap/core'; +import { Fullscreen } from '../components/menus/statusbar/Fullscreen'; +import { InnerEditor } from '../core/UAIEditor'; +import { Print } from '../components/menus/toolbar/base/Print'; + +/** + * 自定义快捷键 + */ +export default Extension.create({ + name: 'shortcuts', + + addKeyboardShortcuts() { + return { + // 自定义快捷键 + 'F11': () => { + // 全屏 + (document.querySelector("uai-editor-statusbar-menu-fullscreen") as Fullscreen).fullButton.click(); + return true; + }, + 'Ctrl-p': () => { + // 打印 + (document.querySelector("uai-editor-base-menu-print") as Print).click(); + return true; + }, + 'Ctrl-=': () => { + const editor = (this.editor as InnerEditor).uaiEditor.editor; + const transform = editor.zoomableContent.style.transform; + const matrix = new WebKitCSSMatrix(transform); + editor.zoomableContent.style.transform = `scale(${matrix.a + 0.1})`; + return true; + }, + 'Ctrl--': () => { + const editor = (this.editor as InnerEditor).uaiEditor.editor; + const transform = editor.zoomableContent.style.transform; + const matrix = new WebKitCSSMatrix(transform); + editor.zoomableContent.style.transform = `scale(${matrix.a - 0.1})`; + return true; + }, + 'Ctrl-1': () => { + const editor = (this.editor as InnerEditor).uaiEditor.editor; + editor.zoomableContent.style.transform = `scale(1)`; + return true; + }, + }; + }, +});