ant-design-x-vue-next
Version:
Ant Design X for Vue — community continuation aligned with @ant-design/x
2 lines (1 loc) • 966 B
JavaScript
;Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("vue"),v=require("../shortcut-keys.js"),h=require("./use-x-component-config.js");function k(y,r){const i=h.default(y),a=e.ref({}),l=e.ref([]),u=e.ref(null),c=e.ref(!1),m=()=>{var o;const t=(o=i.value)==null?void 0:o.shortcutKeys,{flatten:s,info:n}=v.flattenShortcutKeys(r.value,t);l.value=s,a.value=n};e.watch([r,i],m,{immediate:!0,deep:!0});const d=t=>{var s;for(const n of l.value){const o=v.getShortcutAction(n.shortcutKey,t);if(!o)continue;if(c.value)return;c.value=!0;const _={...o,name:n.name,index:n.index};(s=u.value)==null||s.call(u,_);break}},f=()=>{c.value=!1};return e.onMounted(()=>{document.addEventListener("keydown",d),document.addEventListener("keyup",f)}),e.onUnmounted(()=>{document.removeEventListener("keydown",d),document.removeEventListener("keyup",f)}),{shortcutKeysInfo:a,subscribe:t=>{u.value=t}}}exports.default=k;