vue-command-kit 0.1.0 → 0.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- (function(m,e){typeof exports=="object"&&typeof module<"u"?e(exports,require("vue")):typeof define=="function"&&define.amd?define(["exports","vue"],e):(m=typeof globalThis<"u"?globalThis:m||self,e(m.VueCmdk={},m.Vue))})(this,(function(m,e){"use strict";const M={"⌘":"metaKey","⌃":"ctrlKey","⌥":"altKey","⇧":"shiftKey"};function F(n){let t=n;const r={};let l=!0;for(;l&&t.length>0;){l=!1;for(const[s,o]of Object.entries(M))if(t.startsWith(s)){r[o]=!0,t=t.slice(s.length),l=!0;break}}return t?{...r,key:t.toLowerCase()}:null}function j(n,t){return t?n.key.toLowerCase()===t.key&&!!n.metaKey==!!t.metaKey&&!!n.ctrlKey==!!t.ctrlKey&&!!n.altKey==!!t.altKey&&!!n.shiftKey==!!t.shiftKey:!1}function S(n,t){const r=e.ref(!1),l=e.ref(""),s=e.ref(0),o=e.ref([]),f=()=>{r.value=!r.value},a=()=>{r.value=!0,s.value=0},c=()=>{r.value=!1,l.value=""};function p(i,u){if(!u.trim())return i;const d=u.toLowerCase();return i.filter(y=>{var g,Q;return!!(y.value.toLowerCase().includes(d)||(g=y.label)!=null&&g.toLowerCase().includes(d)||(Q=y.keywords)!=null&&Q.some(me=>me.toLowerCase().includes(d)))})}function h(i){const u=new Map;for(const y of i){const g=y.group||"__ungrouped__";u.has(g)||u.set(g,[]),u.get(g).push(y)}const d=[];u.has("__ungrouped__")&&(d.push({heading:"",items:u.get("__ungrouped__")}),u.delete("__ungrouped__"));for(const[y,g]of u)d.push({heading:y,items:g});return d}const k=e.computed(()=>{if(n){const i=n(o.value,l.value);if(i!==null)return i}return p(o.value,l.value)}),B=e.computed(()=>h(k.value));function se(){const i=k.value.length;i!==0&&(s.value=(s.value+1)%i)}function ie(){const i=k.value.length;i!==0&&(s.value=(s.value-1+i)%i)}function de(){var u;const i=k.value[s.value];i&&!i.disabled&&((u=i.onSelect)==null||u.call(i,i),c())}function O(i){var u;for(const d of o.value){if(d.disabled||!d.shortcut)continue;const y=F(d.shortcut);if(j(i,y)){i.preventDefault(),i.stopPropagation(),(u=d.onSelect)==null||u.call(d,d),t==null||t(d),c();return}}}let C=null;return e.watch(o,i=>{C&&(C(),C=null),i.some(d=>d.shortcut)&&typeof window<"u"&&(window.addEventListener("keydown",O),C=()=>window.removeEventListener("keydown",O))},{immediate:!0,flush:"sync"}),e.onUnmounted(()=>{C&&C()}),{visible:r,searchQuery:l,activeIndex:s,items:o,toggle:f,open:a,close:c,defaultFilter:p,groupItems:h,filteredItems:k,groupedItems:B,selectNext:se,selectPrev:ie,selectCurrent:de}}const _=Symbol("cmdk-state"),E=Symbol("cmdk-loading"),w=Symbol("cmdk-close-on-select"),b=Symbol("cmdk-select-handler"),A={"data-cmdk-root":"",role:"combobox","aria-expanded":"true","aria-haspopup":"listbox"},x=e.defineComponent({__name:"CommandMenu",props:{visible:{type:Boolean},searchQuery:{},placeholder:{default:"Type a command or search..."},filter:{},autoFocus:{type:Boolean,default:!0},closeOnSelect:{type:Boolean,default:!0},loading:{type:Boolean}},emits:["update:visible","update:searchQuery","select"],setup(n,{expose:t,emit:r}){const l=n,s=r,o=S(l.filter,a=>{s("select",a),l.closeOnSelect&&o.close()});o.visible.value=l.visible??!0,o.searchQuery.value=l.searchQuery??"",e.provide(_,o),e.provide("cmdk-filter",l.filter),e.provide(E,()=>l.loading??!1),e.provide(w,()=>l.closeOnSelect),e.provide(b,a=>{s("select",a),l.closeOnSelect&&o.close()}),e.watch(()=>l.visible,a=>{a!==void 0&&(o.visible.value=a)}),e.watch(o.visible,a=>s("update:visible",a)),e.watch(()=>l.searchQuery,a=>{a!==void 0&&(o.searchQuery.value=a)}),e.watch(o.searchQuery,a=>s("update:searchQuery",a));function f(a){s("select",a),l.closeOnSelect&&o.close()}return t({open:o.open,close:o.close,toggle:o.toggle,searchQuery:o.searchQuery,items:o.items,filteredItems:o.filteredItems}),(a,c)=>(e.openBlock(),e.createElementBlock("div",A,[e.renderSlot(a.$slots,"default",{items:e.unref(o).items,filteredItems:e.unref(o).filteredItems,searchQuery:e.unref(o).searchQuery,selectNext:e.unref(o).selectNext,selectPrev:e.unref(o).selectPrev,selectCurrent:e.unref(o).selectCurrent,handleSelect:f})]))}}),P=["value","placeholder","autofocus"],N=e.defineComponent({__name:"CommandInput",props:{placeholder:{default:"Type a command or search..."},autoFocus:{type:Boolean,default:!0}},setup(n){const t=e.inject(_),r=e.inject(b,()=>{});function l(o){t.searchQuery.value=o.target.value,t.activeIndex.value=0}function s(o){var f;if(o.key==="ArrowDown")o.preventDefault(),t.selectNext();else if(o.key==="ArrowUp")o.preventDefault(),t.selectPrev();else if(o.key==="Enter"){o.preventDefault();const a=t.filteredItems.value[t.activeIndex.value];a&&!a.disabled&&((f=a.onSelect)==null||f.call(a,a),r(a))}}return(o,f)=>(e.openBlock(),e.createElementBlock("input",{"data-cmdk-input":"",value:e.unref(t).searchQuery.value,placeholder:n.placeholder,role:"searchbox",autocomplete:"off",autocorrect:"off",spellcheck:"false",autofocus:n.autoFocus,onInput:l,onKeydown:s},null,40,P))}}),G={key:0,"data-cmdk-empty":""},$=e.defineComponent({__name:"CommandEmpty",setup(n){const t=e.inject(_);return(r,l)=>e.unref(t).searchQuery.value&&e.unref(t).filteredItems.value.length===0?(e.openBlock(),e.createElementBlock("div",G,[e.renderSlot(r.$slots,"default",{},()=>[l[0]||(l[0]=e.createElementVNode("span",null,"No results found.",-1))])])):e.createCommentVNode("",!0)}}),q={key:0,"data-cmdk-loading":""},I=e.defineComponent({__name:"CommandLoading",props:{loading:{type:Boolean,default:!1}},setup(n){return(t,r)=>n.loading?(e.openBlock(),e.createElementBlock("div",q,[e.renderSlot(t.$slots,"default",{},()=>[r[0]||(r[0]=e.createElementVNode("span",null,"Loading...",-1))])])):e.createCommentVNode("",!0)}}),R={"data-cmdk-group":"",role:"group"},U={key:0,"data-cmdk-group-heading":"",role:"presentation"},z={"data-cmdk-group-items":"",role:"group"},V=e.defineComponent({__name:"CommandGroup",props:{heading:{}},setup(n){return(t,r)=>(e.openBlock(),e.createElementBlock("div",R,[n.heading?(e.openBlock(),e.createElementBlock("div",U,e.toDisplayString(n.heading),1)):e.createCommentVNode("",!0),e.createElementVNode("div",z,[e.renderSlot(t.$slots,"default")])]))}}),H=["aria-selected","aria-disabled","data-value"],W={key:0,"data-cmdk-item-icon":""},J={"data-cmdk-item-label":""},X={key:1,"data-cmdk-item-shortcut":""},D=e.defineComponent({__name:"CommandItem",props:{value:{},label:{},keywords:{},shortcut:{},disabled:{type:Boolean,default:!1},icon:{},onSelect:{}},setup(n){const t=n,r=e.inject(_),l=e.computed(()=>({value:t.value,label:t.label,keywords:t.keywords,shortcut:t.shortcut,disabled:t.disabled,icon:t.icon,onSelect:t.onSelect})),s=e.computed(()=>{const c=r.filteredItems.value[r.activeIndex.value];return(c==null?void 0:c.value)===t.value}),o=e.inject(w,()=>!0),f=e.inject(b,()=>{});function a(){var c;t.disabled||((c=t.onSelect)==null||c.call(t,l.value),f(l.value),o()&&r.close())}return(c,p)=>(e.openBlock(),e.createElementBlock("div",{"data-cmdk-item":"",role:"option","aria-selected":s.value,"aria-disabled":n.disabled,"data-value":n.value,class:e.normalizeClass({active:s.value,disabled:n.disabled}),onClick:a,onPointerenter:p[0]||(p[0]=()=>{const h=e.unref(r).filteredItems.value.findIndex(k=>k.value===n.value);h>=0&&(e.unref(r).activeIndex.value=h)})},[e.renderSlot(c.$slots,"default",{item:l.value,active:s.value},()=>[n.icon?(e.openBlock(),e.createElementBlock("span",W,[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(n.icon)))])):e.createCommentVNode("",!0),e.createElementVNode("span",J,e.toDisplayString(n.label||n.value),1),n.shortcut?(e.openBlock(),e.createElementBlock("span",X,e.toDisplayString(n.shortcut),1)):e.createCommentVNode("",!0)])],42,H))}}),Y=(n,t)=>{const r=n.__vccOpts||n;for(const[l,s]of t)r[l]=s;return r},Z={},v={"data-cmdk-separator":"",role:"separator"};function ee(n,t){return e.openBlock(),e.createElementBlock("div",v)}const L=Y(Z,[["render",ee]]),te={"data-cmdk-list":"",role:"listbox"},oe={"aria-live":"polite","aria-atomic":"true",class:"sr-only"},K=e.defineComponent({__name:"CommandList",setup(n){const t=e.inject(_),r=e.inject(E,()=>!1),l=e.computed(()=>t.groupedItems.value);return(s,o)=>(e.openBlock(),e.createElementBlock("div",te,[e.createElementVNode("div",oe,[e.unref(t).searchQuery.value&&e.unref(t).filteredItems.value.length===0?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createTextVNode("No results found")],64)):e.unref(r)()?(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createTextVNode("Loading")],64)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:2},[e.createTextVNode(e.toDisplayString(e.unref(t).filteredItems.value.length)+" items",1)],64))]),e.createVNode($),e.createVNode(I,{loading:e.unref(r)()},null,8,["loading"]),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(l.value,f=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:f.heading||"__ungrouped__"},[e.createVNode(V,{heading:f.heading},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(f.items,a=>(e.openBlock(),e.createBlock(D,{key:a.value,value:a.value,label:a.label,shortcut:a.shortcut,disabled:a.disabled,icon:a.icon,"on-select":a.onSelect},null,8,["value","label","shortcut","disabled","icon","on-select"]))),128))]),_:2},1032,["heading"]),f!==l.value[l.value.length-1]?(e.openBlock(),e.createBlock(L,{key:0})):e.createCommentVNode("",!0)],64))),128))]))}}),ne={"data-cmdk-dialog-wrapper":""},ae={"data-cmdk-dialog-header":""},le={"data-cmdk-dialog-body":""},ce={key:0,"data-cmdk-dialog-footer":""},T=e.defineComponent({__name:"CommandDialog",props:{visible:{type:Boolean,default:!1},placeholder:{default:"Type a command or search..."},autoFocus:{type:Boolean,default:!0},closeOnSelect:{type:Boolean,default:!0},items:{default:()=>[]},filter:{},loading:{type:Boolean,default:!1}},emits:["update:visible","select"],setup(n,{emit:t}){const r=n,l=t,s=S(r.filter,o);e.provide(_,s),e.provide(E,()=>r.loading),e.provide(w,()=>r.closeOnSelect),e.watch(()=>r.items,c=>{s.items.value=c},{immediate:!0}),e.watch(()=>r.visible,c=>{s.visible.value=c},{immediate:!0}),e.watch(s.visible,async c=>{if(l("update:visible",c),c){await e.nextTick();const p=document.querySelector("[data-cmdk-input]");p==null||p.focus()}});function o(c){l("select",c),r.closeOnSelect&&s.close()}e.provide(b,o);function f(c){c.target===c.currentTarget&&s.close()}function a(c){if(c.key==="Escape"&&(c.preventDefault(),s.close()),c.key==="Tab"){const h=c.currentTarget.querySelectorAll('input, button, [href], select, textarea, [tabindex]:not([tabindex="-1"])');if(h.length===0)return;const k=h[0],B=h[h.length-1];c.shiftKey?document.activeElement===k&&(c.preventDefault(),B.focus()):document.activeElement===B&&(c.preventDefault(),k.focus())}}return(c,p)=>(e.openBlock(),e.createBlock(e.Teleport,{to:"body"},[e.createVNode(e.Transition,{name:"cmdk-dialog"},{default:e.withCtx(()=>[e.unref(s).visible.value?(e.openBlock(),e.createElementBlock("div",{key:0,"data-cmdk-dialog":"",onKeydown:a},[e.createElementVNode("div",{"data-cmdk-dialog-mask":"",onClick:f}),e.createElementVNode("div",ne,[e.createElementVNode("div",ae,[e.renderSlot(c.$slots,"header",{},()=>[e.createVNode(N,{placeholder:n.placeholder,"auto-focus":n.autoFocus},null,8,["placeholder","auto-focus"])])]),e.createElementVNode("div",le,[e.renderSlot(c.$slots,"body",{},()=>[e.createVNode(K)])]),c.$slots.footer?(e.openBlock(),e.createElementBlock("div",ce,[e.renderSlot(c.$slots,"footer")])):e.createCommentVNode("",!0)])],32)):e.createCommentVNode("",!0)]),_:3})]))}}),re={Menu:x,Dialog:T,Input:N,List:K,Group:V,Item:D,Empty:$,Separator:L,Loading:I};m.Command=re,m.CommandDialog=T,m.CommandEmpty=$,m.CommandGroup=V,m.CommandInput=N,m.CommandItem=D,m.CommandList=K,m.CommandLoading=I,m.CommandMenu=x,m.CommandSeparator=L,m.useCommandMenu=S,Object.defineProperty(m,Symbol.toStringTag,{value:"Module"})}));
1
+ (function(y,e){typeof exports=="object"&&typeof module<"u"?e(exports,require("vue")):typeof define=="function"&&define.amd?define(["exports","vue"],e):(y=typeof globalThis<"u"?globalThis:y||self,e(y.VueCmdk={},y.Vue))})(this,(function(y,e){"use strict";const S="__ungrouped__",U={"⌘":"metaKey","⌃":"ctrlKey","⌥":"altKey","⇧":"shiftKey"},q=/^([⌘⌃⌥⇧]+)(.+)$/;function z(n){if(!n)return null;const t=q.exec(n);if(!t)return{key:n.toLowerCase()};const[,a,c]=t,d={};for(const l of a){const m=U[l];m&&(d[m]=!0)}return{...d,key:c.toLowerCase()}}function H(n,t){return t?n.key.toLowerCase()===t.key&&!!n.metaKey==!!t.metaKey&&!!n.ctrlKey==!!t.ctrlKey&&!!n.altKey==!!t.altKey&&!!n.shiftKey==!!t.shiftKey:!1}function K(n,t){const a=typeof n=="function"?{filter:n}:n??{},{filter:c,shouldFilter:d=!0,loop:l=!0}=a,m=e.ref(!1),r=e.ref(""),o=e.ref(0),u=e.ref(),i=e.ref([]),k=()=>{m.value=!m.value},f=()=>{m.value=!0,o.value=0},_=()=>{m.value=!1,r.value=""};function I(s,h){if(!h.trim())return s;const p=h.toLowerCase();return s.filter(g=>{var b,G;return!!(g.value.toLowerCase().includes(p)||(b=g.label)!=null&&b.toLowerCase().includes(p)||(G=g.keywords)!=null&&G.some(Be=>Be.toLowerCase().includes(p)))})}function j(s){const h=new Map;for(const g of s){const b=g.group||S;h.has(b)?h.get(b).push(g):h.set(b,[g])}const p=[];h.has(S)&&(p.push({heading:"",items:h.get(S)}),h.delete(S));for(const g of[...h.keys()].sort())p.push({heading:g,items:h.get(g)});return p}const E=e.computed(()=>{if(c){const s=c(i.value,r.value);if(s!==null)return s}return d?I(i.value,r.value):i.value}),ge=e.computed(()=>j(E.value));function _e(){const s=E.value.length;s!==0&&(l?o.value=(o.value+1)%s:o.value=Math.min(o.value+1,s-1))}function Ce(){const s=E.value.length;s!==0&&(l?o.value=(o.value-1+s)%s:o.value=Math.max(o.value-1,0))}function be(){var h;const s=E.value[o.value];s&&!s.disabled&&(u.value=s.value,(h=s.onSelect)==null||h.call(s,s),_())}function A(s){var h;for(const p of i.value){if(p.disabled||!p.shortcut)continue;const g=z(p.shortcut);if(H(s,g)){s.preventDefault(),s.stopPropagation(),u.value=p.value,(h=p.onSelect)==null||h.call(p,p),t==null||t(p),_();return}}}let C=null;return e.watch(i,s=>{C&&(C(),C=null),s.some(p=>p.shortcut)&&typeof window<"u"&&(window.addEventListener("keydown",A),C=()=>window.removeEventListener("keydown",A))},{immediate:!0,deep:!0,flush:"post"}),e.onUnmounted(()=>{C&&C()}),{visible:m,searchQuery:r,activeIndex:o,selectedValue:u,items:i,toggle:k,open:f,close:_,defaultFilter:I,groupItems:j,filteredItems:E,groupedItems:ge,selectNext:_e,selectPrev:Ce,selectCurrent:be}}const B=Symbol("cmdk-state"),T=Symbol("cmdk-loading"),Q=Symbol("cmdk-close-on-select"),N=Symbol("cmdk-select-handler"),O=Symbol("cmdk-item-index-map");function v(n,t,a){const{filter:c,loading:d=!1,closeOnSelect:l=!0,shouldFilter:m=!0,loop:r=!0}=n,u=K({filter:c,shouldFilter:m,loop:r},f=>{t("select",f),t("update:value",f.value),l&&u.close()});e.watch(()=>n.value,f=>{f!==void 0&&(u.selectedValue.value=f)},{immediate:!0}),e.provide(B,u),e.provide(T,()=>d),e.provide(Q,()=>l),e.provide(N,f=>{t("select",f),l&&u.close()});const i=e.computed(()=>{const f=new Map;return u.filteredItems.value.forEach((_,I)=>f.set(_.value,I)),f});e.provide(O,()=>i.value);function k(f){t("select",f),l&&u.close()}return{state:u,handleSelect:k}}const X={"data-cmdk-root":"",role:"combobox","aria-expanded":"true","aria-haspopup":"listbox"},P=e.defineComponent({__name:"CommandMenu",props:{visible:{type:Boolean,default:!0},searchQuery:{},placeholder:{default:"Type a command or search..."},filter:{},autoFocus:{type:Boolean,default:!0},closeOnSelect:{type:Boolean,default:!0},loading:{type:Boolean},label:{},shouldFilter:{type:Boolean,default:!0},loop:{type:Boolean,default:!0},value:{}},emits:["update:visible","update:searchQuery","update:value","select"],setup(n,{expose:t,emit:a}){const c=n,d=a,{state:l,handleSelect:m}=v({filter:c.filter,loading:c.loading,closeOnSelect:c.closeOnSelect,shouldFilter:c.shouldFilter,loop:c.loop,value:c.value},d);return e.watch(()=>c.visible,r=>{r!==void 0&&(l.visible.value=r)},{immediate:!0}),e.watch(l.visible,r=>d("update:visible",r)),e.watch(()=>c.searchQuery,r=>{r!==void 0&&(l.searchQuery.value=r)}),e.watch(l.searchQuery,r=>d("update:searchQuery",r)),t({open:l.open,close:l.close,toggle:l.toggle,searchQuery:l.searchQuery,items:l.items,filteredItems:l.filteredItems}),(r,o)=>(e.openBlock(),e.createElementBlock("div",X,[e.renderSlot(r.$slots,"default",{items:e.unref(l).items,filteredItems:e.unref(l).filteredItems,searchQuery:e.unref(l).searchQuery,selectNext:e.unref(l).selectNext,selectPrev:e.unref(l).selectPrev,selectCurrent:e.unref(l).selectCurrent,handleSelect:e.unref(m)})]))}});function w(n,t){const a=e.inject(n);if(a==null)throw new Error(`[vue-cmdk] <${t}> must be used inside <CommandMenu> or <CommandDialog>.`);return a}const Y=["value","placeholder","aria-activedescendant","autofocus"],$=e.defineComponent({__name:"CommandInput",props:{placeholder:{default:"Type a command or search..."},autoFocus:{type:Boolean,default:!0}},setup(n,{expose:t}){const a=w(B,"CommandInput"),c=e.inject(N,()=>{}),d=e.ref(null);t({inputRef:d});const l=e.computed(()=>{const o=a.filteredItems.value[a.activeIndex.value];return o?`cmdk-item-${o.value}`:void 0});function m(o){const u=o.target;u&&(a.searchQuery.value=u.value,a.activeIndex.value=0)}function r(o){var u;if(o.key==="ArrowDown")o.preventDefault(),a.selectNext();else if(o.key==="ArrowUp")o.preventDefault(),a.selectPrev();else if(o.key==="Enter"){o.preventDefault();const i=a.filteredItems.value[a.activeIndex.value];i&&!i.disabled&&((u=i.onSelect)==null||u.call(i,i),c(i))}}return(o,u)=>(e.openBlock(),e.createElementBlock("input",{ref_key:"inputRef",ref:d,"data-cmdk-input":"",value:e.unref(a).searchQuery.value,placeholder:n.placeholder,role:"searchbox","aria-activedescendant":l.value,autocomplete:"off",autocorrect:"off",spellcheck:"false",autofocus:n.autoFocus,onInput:m,onKeydown:r},null,40,Y))}}),J={key:0,"data-cmdk-empty":""},V=e.defineComponent({__name:"CommandEmpty",setup(n){const t=w(B,"CommandEmpty");return(a,c)=>e.unref(t).searchQuery.value&&e.unref(t).filteredItems.value.length===0?(e.openBlock(),e.createElementBlock("div",J,[e.renderSlot(a.$slots,"default",{},()=>[c[0]||(c[0]=e.createElementVNode("span",null,"No results found.",-1))])])):e.createCommentVNode("",!0)}}),W={key:0,"data-cmdk-loading":""},D=e.defineComponent({__name:"CommandLoading",props:{loading:{type:Boolean}},setup(n){return(t,a)=>n.loading?(e.openBlock(),e.createElementBlock("div",W,[e.renderSlot(t.$slots,"default",{},()=>[a[0]||(a[0]=e.createElementVNode("span",null,"Loading...",-1))])])):e.createCommentVNode("",!0)}}),Z={"data-cmdk-group":"",role:"group"},ee={key:0,"data-cmdk-group-heading":"",role:"presentation"},te={"data-cmdk-group-items":"",role:"group"},L=e.defineComponent({__name:"CommandGroup",props:{heading:{}},setup(n){return(t,a)=>(e.openBlock(),e.createElementBlock("div",Z,[n.heading?(e.openBlock(),e.createElementBlock("div",ee,e.toDisplayString(n.heading),1)):e.createCommentVNode("",!0),e.createElementVNode("div",te,[e.renderSlot(t.$slots,"default")])]))}}),oe=["id","aria-selected","aria-disabled","data-value"],ne={key:0,"data-cmdk-item-icon":""},ae={"data-cmdk-item-label":""},le={key:1,"data-cmdk-item-shortcut":""},M=e.defineComponent({__name:"CommandItem",props:{value:{},label:{default:void 0},keywords:{default:void 0},shortcut:{default:void 0},disabled:{type:Boolean,default:!1},icon:{type:[Object,Function],default:void 0},onSelect:{type:Function,default:void 0}},setup(n){const t=n,a=w(B,"CommandItem"),c=e.inject(O,()=>new Map),d=e.computed(()=>`cmdk-item-${t.value}`),l=e.computed(()=>({value:t.value,label:t.label,keywords:t.keywords,shortcut:t.shortcut,disabled:t.disabled,icon:t.icon,onSelect:t.onSelect})),m=e.computed(()=>t.icon?e.isVNode(t.icon)?()=>t.icon:t.icon:null),r=e.computed(()=>{const k=a.filteredItems.value[a.activeIndex.value];return(k==null?void 0:k.value)===t.value}),o=e.inject(Q,()=>!0),u=e.inject(N,()=>{});function i(){var k;t.disabled||((k=t.onSelect)==null||k.call(t,l.value),u(l.value),o()&&a.close())}return(k,f)=>(e.openBlock(),e.createElementBlock("div",{id:d.value,"data-cmdk-item":"",role:"option","aria-selected":r.value,"aria-disabled":n.disabled,"data-value":n.value,class:e.normalizeClass({active:r.value,disabled:n.disabled}),onClick:i,onPointerenter:f[0]||(f[0]=()=>{const _=e.unref(c)().get(n.value);_!==void 0&&(e.unref(a).activeIndex.value=_)})},[e.renderSlot(k.$slots,"default",{item:l.value,active:r.value},()=>[m.value?(e.openBlock(),e.createElementBlock("span",ne,[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(m.value)))])):e.createCommentVNode("",!0),e.createElementVNode("span",ae,e.toDisplayString(n.label||n.value),1),n.shortcut?(e.openBlock(),e.createElementBlock("span",le,e.toDisplayString(n.shortcut),1)):e.createCommentVNode("",!0)])],42,oe))}}),re=(n,t)=>{const a=n.__vccOpts||n;for(const[c,d]of t)a[c]=d;return a},ce={},se={"data-cmdk-separator":"",role:"separator"};function de(n,t){return e.openBlock(),e.createElementBlock("div",se)}const x=re(ce,[["render",de]]),ie={"data-cmdk-list":"",role:"listbox"},ue={"aria-live":"polite","aria-atomic":"true",class:"sr-only"},F=e.defineComponent({__name:"CommandList",setup(n){const t=w(B,"CommandList"),a=e.inject(T,()=>!1);return(c,d)=>(e.openBlock(),e.createElementBlock("div",ie,[e.createElementVNode("div",ue,[e.unref(t).searchQuery.value&&e.unref(t).filteredItems.value.length===0?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createTextVNode("No results found")],64)):e.unref(a)()?(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createTextVNode("Loading")],64)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:2},[e.createTextVNode(e.toDisplayString(e.unref(t).filteredItems.value.length)+" items",1)],64))]),e.createVNode(V),e.createVNode(D,{loading:e.unref(a)()},null,8,["loading"]),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(t).groupedItems.value,(l,m)=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:l.heading||"__ungrouped__"},[e.createVNode(L,{heading:l.heading},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(l.items,r=>(e.openBlock(),e.createBlock(M,{key:r.value,value:r.value,label:r.label,keywords:r.keywords,shortcut:r.shortcut,disabled:r.disabled,icon:r.icon,"on-select":r.onSelect},null,8,["value","label","keywords","shortcut","disabled","icon","on-select"]))),128))]),_:2},1032,["heading"]),m!==e.unref(t).groupedItems.value.length-1?(e.openBlock(),e.createBlock(x,{key:0})):e.createCommentVNode("",!0)],64))),128))]))}}),me=["aria-label"],fe={"data-cmdk-dialog-wrapper":""},pe={"data-cmdk-dialog-header":""},he={"data-cmdk-dialog-body":""},ye={key:0,"data-cmdk-dialog-footer":""},R=e.defineComponent({__name:"CommandDialog",props:{items:{default:()=>[]},visible:{type:Boolean,default:!1},searchQuery:{},placeholder:{default:"Type a command or search..."},filter:{},autoFocus:{type:Boolean,default:!0},closeOnSelect:{type:Boolean,default:!0},loading:{type:Boolean,default:!1},label:{},shouldFilter:{type:Boolean,default:!0},loop:{type:Boolean,default:!0},value:{}},emits:["update:visible","update:searchQuery","update:value","select"],setup(n,{emit:t}){const a=n,c=t,{state:d}=v({filter:a.filter,loading:a.loading,closeOnSelect:a.closeOnSelect,shouldFilter:a.shouldFilter,loop:a.loop,value:a.value},c),l=e.ref(null);e.watch(()=>a.items,o=>{d.items.value=o},{immediate:!0}),e.watch(()=>a.visible,o=>{d.visible.value=o},{immediate:!0}),e.watch(()=>a.searchQuery,o=>{o!==void 0&&(d.searchQuery.value=o)}),e.watch(d.searchQuery,o=>c("update:searchQuery",o)),e.watch(d.visible,async o=>{var u,i;c("update:visible",o),o&&(await e.nextTick(),(i=(u=l.value)==null?void 0:u.inputRef)==null||i.focus())});function m(o){o.target===o.currentTarget&&d.close()}function r(o){if(o.key==="Escape"&&(o.preventDefault(),d.close()),o.key==="Tab"){const i=o.currentTarget.querySelectorAll('input, button, [href], select, textarea, [tabindex]:not([tabindex="-1"])');if(i.length===0)return;const k=i[0],f=i[i.length-1];o.shiftKey?document.activeElement===k&&(o.preventDefault(),f.focus()):document.activeElement===f&&(o.preventDefault(),k.focus())}}return(o,u)=>(e.openBlock(),e.createBlock(e.Teleport,{to:"body"},[e.createVNode(e.Transition,{name:"cmdk-dialog"},{default:e.withCtx(()=>[e.unref(d).visible.value?(e.openBlock(),e.createElementBlock("div",{key:0,"data-cmdk-dialog":"",role:"dialog","aria-modal":"true","aria-label":a.label??"Command menu",onKeydown:r},[e.createElementVNode("div",{"data-cmdk-dialog-mask":"","aria-hidden":"true",onClick:m}),e.createElementVNode("div",fe,[e.createElementVNode("div",pe,[e.renderSlot(o.$slots,"header",{},()=>[e.createVNode($,{ref_key:"commandInputRef",ref:l,placeholder:n.placeholder,"auto-focus":n.autoFocus},null,8,["placeholder","auto-focus"])])]),e.createElementVNode("div",he,[e.renderSlot(o.$slots,"body",{},()=>[e.createVNode(F)])]),o.$slots.footer?(e.openBlock(),e.createElementBlock("div",ye,[e.renderSlot(o.$slots,"footer")])):e.createCommentVNode("",!0)])],40,me)):e.createCommentVNode("",!0)]),_:3})]))}}),ke={Menu:P,Dialog:R,Input:$,List:F,Group:L,Item:M,Empty:V,Separator:x,Loading:D};y.Command=ke,y.CommandDialog=R,y.CommandEmpty=V,y.CommandGroup=L,y.CommandInput=$,y.CommandItem=M,y.CommandList=F,y.CommandLoading=D,y.CommandMenu=P,y.CommandSeparator=x,y.useCommandMenu=K,Object.defineProperty(y,Symbol.toStringTag,{value:"Module"})}));
package/package.json CHANGED
@@ -1,8 +1,9 @@
1
1
  {
2
2
  "name": "vue-command-kit",
3
- "version": "0.1.0",
3
+ "version": "0.1.2",
4
4
  "description": "⌘K — Fast, composable, unstyled command menu for Vue 3",
5
5
  "type": "module",
6
+ "packageManager": "pnpm@11.1.2",
6
7
  "main": "./dist/vue-cmdk.umd.cjs",
7
8
  "module": "./dist/vue-cmdk.js",
8
9
  "exports": {
@@ -10,14 +11,36 @@
10
11
  "types": "./dist/index.d.ts",
11
12
  "import": "./dist/vue-cmdk.js",
12
13
  "require": "./dist/vue-cmdk.umd.cjs"
14
+ },
15
+ "./composables": {
16
+ "types": "./dist/useCommandMenu.d.ts",
17
+ "import": "./dist/vue-cmdk.js"
18
+ },
19
+ "./types": {
20
+ "types": "./dist/types.d.ts",
21
+ "import": "./dist/vue-cmdk.js"
13
22
  }
14
23
  },
15
24
  "files": [
16
25
  "dist/vue-cmdk.js",
17
26
  "dist/vue-cmdk.umd.cjs",
18
- "dist/*.d.ts"
27
+ "dist/**/*.d.ts"
19
28
  ],
20
29
  "sideEffects": false,
30
+ "scripts": {
31
+ "dev": "vite",
32
+ "build": "vite build && node scripts/postbuild.mjs",
33
+ "preview": "vite preview",
34
+ "build:demo": "vite build --config vite.demo.config.ts",
35
+ "typecheck": "vue-tsc --noEmit",
36
+ "test": "vitest run",
37
+ "test:watch": "vitest",
38
+ "lint": "eslint . && prettier --check .",
39
+ "lint:fix": "eslint --fix . && prettier --write .",
40
+ "format": "prettier --write .",
41
+ "prepare": "husky",
42
+ "prepublishOnly": "pnpm run build"
43
+ },
21
44
  "keywords": [
22
45
  "vue",
23
46
  "command",
@@ -42,6 +65,15 @@
42
65
  "engines": {
43
66
  "node": ">=22.13"
44
67
  },
68
+ "lint-staged": {
69
+ "*.{ts,vue}": [
70
+ "eslint --fix",
71
+ "prettier --write"
72
+ ],
73
+ "*.{json,md}": [
74
+ "prettier --write"
75
+ ]
76
+ },
45
77
  "publishConfig": {
46
78
  "access": "public",
47
79
  "registry": "https://registry.npmjs.org"
@@ -50,22 +82,27 @@
50
82
  "vue": "^3.4.0"
51
83
  },
52
84
  "devDependencies": {
85
+ "@eslint/js": "^10.0.1",
53
86
  "@microsoft/api-extractor": "^7.58.7",
54
87
  "@types/node": "^25.9.1",
55
88
  "@vitejs/plugin-vue": "^5.0.0",
56
89
  "@vue/shared": "^3.5.35",
90
+ "@vue/test-utils": "^2.4.10",
91
+ "eslint": "^10.4.1",
92
+ "eslint-config-prettier": "^10.1.8",
93
+ "eslint-plugin-vue": "^10.9.2",
94
+ "globals": "^17.6.0",
57
95
  "highlight.js": "^11.11.1",
96
+ "husky": "^9.1.7",
97
+ "jsdom": "^29.1.1",
98
+ "lint-staged": "^17.0.7",
99
+ "prettier": "^3.8.3",
58
100
  "typescript": "^5.7.0",
101
+ "typescript-eslint": "^8.60.1",
59
102
  "vite": "^6.0.0",
60
103
  "vite-plugin-dts": "^4.0.0",
104
+ "vitest": "^4.1.8",
61
105
  "vue": "^3.5.0",
62
106
  "vue-tsc": "^2.0.0"
63
- },
64
- "scripts": {
65
- "dev": "vite",
66
- "build": "vite build && node scripts/postbuild.mjs",
67
- "preview": "vite preview",
68
- "build:demo": "vite build --config vite.demo.config.ts",
69
- "typecheck": "vue-tsc --noEmit"
70
107
  }
71
- }
108
+ }