UNPKG

epic-designer

Version:

基于vue3的设计器,可视化开发页面表单

77 lines (76 loc) 2.49 kB
import { onUnmounted as h } from "vue"; import { useClipboard as I } from "../../../../../hooks/src/common/clipboard.js"; import "@vueuse/core"; import "../../../../../hooks/src/store/index.js"; /* empty css */ /* empty css */ /* empty css */ import "../../../../../manager/src/pluginManager.js"; /* empty css */ import "vue-draggable-plus"; import "../../../../../git/epic/epic-designer/node_modules/.pnpm/jsep@1.4.0/node_modules/jsep/dist/jsep.js"; function A(m) { let c = document; const { emit: p, handleDelete: f, pageSchema: d, revoke: s, setSelectedNode: k, state: o } = m, { copy: y, cut: E, duplicate: b, paste: N } = I( d, k, (e) => s.push(e) ), v = () => { const e = document.activeElement; return !!(e instanceof HTMLInputElement || e instanceof HTMLTextAreaElement || e instanceof HTMLElement && e.isContentEditable || (e == null ? void 0 : e.closest(".monaco-editor"))); }; let n = 0; const w = 50, i = (e) => { var l, u; const t = Date.now(); if (t - n < w || v()) return; const r = e.key.toLowerCase(); if ((r === "delete" || r === "backspace") && o.selectedNode) { e.preventDefault(), f(), n = t; return; } if (!(!e.ctrlKey && !e.metaKey)) switch (["c", "d", "s", "v", "x", "y", "z"].includes(r) && e.preventDefault(), r) { case "c": { o.selectedNode && (y(o.selectedNode), n = t); break; } case "d": { o.selectedNode && (b((l = o.selectedNode) == null ? void 0 : l.id), n = t); break; } case "s": { p("save", d), n = t; break; } case "v": { N((u = o.selectedNode) == null ? void 0 : u.id), n = t; break; } case "x": { o.selectedNode && (E(o.selectedNode), n = t); break; } case "y": { s.redo(), n = t; break; } case "z": { e.shiftKey ? s.redo() : s.undo(), n = t; break; } } }, a = () => { c.removeEventListener("keydown", i, { capture: !0 }); }, T = (e) => { a(), c = e, c.addEventListener("keydown", i, { capture: !0 }); }; return h(a), { cleanup: a, setTarget: T }; } export { A as useHotkeys };