epic-designer
Version:
基于vue3的设计器,可视化开发页面表单
2 lines (1 loc) • 1.93 kB
JavaScript
;Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const w=require("vue"),h=require("../../../../../hooks/src/common/clipboard.cjs");require("@vueuse/core");require("../../../../../hooks/src/store/index.cjs");;/* empty css */;/* empty css */;/* empty css */require("../../../../../manager/src/pluginManager.cjs");;/* empty css */require("vue-draggable-plus");require("../../../../../git/epic/epic-designer/node_modules/.pnpm/jsep@1.4.0/node_modules/jsep/dist/jsep.cjs");function H(f){let c=document;const{emit:p,handleDelete:m,pageSchema:d,revoke:o,setSelectedNode:k,state:n}=f,{copy:y,cut:b,duplicate:q,paste:v}=h.useClipboard(d,k,e=>o.push(e)),E=()=>{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 r=0;const N=50,u=e=>{var i,l;const t=Date.now();if(t-r<N||E())return;const s=e.key.toLowerCase();if((s==="delete"||s==="backspace")&&n.selectedNode){e.preventDefault(),m(),r=t;return}if(!(!e.ctrlKey&&!e.metaKey))switch(["c","d","s","v","x","y","z"].includes(s)&&e.preventDefault(),s){case"c":{n.selectedNode&&(y(n.selectedNode),r=t);break}case"d":{n.selectedNode&&(q((i=n.selectedNode)==null?void 0:i.id),r=t);break}case"s":{p("save",d),r=t;break}case"v":{v((l=n.selectedNode)==null?void 0:l.id),r=t;break}case"x":{n.selectedNode&&(b(n.selectedNode),r=t);break}case"y":{o.redo(),r=t;break}case"z":{e.shiftKey?o.redo():o.undo(),r=t;break}}},a=()=>{c.removeEventListener("keydown",u,{capture:!0})},T=e=>{a(),c=e,c.addEventListener("keydown",u,{capture:!0})};return w.onUnmounted(a),{cleanup:a,setTarget:T}}exports.useHotkeys=H;