vue-command-kit 0.1.1 → 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(f,e){typeof exports=="object"&&typeof module<"u"?e(exports,require("vue")):typeof define=="function"&&define.amd?define(["exports","vue"],e):(f=typeof globalThis<"u"?globalThis:f||self,e(f.VueCmdk={},f.Vue))})(this,(function(f,e){"use strict";const P={"⌘":"metaKey","⌃":"ctrlKey","⌥":"altKey","⇧":"shiftKey"},R=/^([⌘⌃⌥⇧]+)(.+)$/;function j(o){if(!o)return null;const t=R.exec(o);if(!t)return{key:o.toLowerCase()};const[,n,s]=t,r={};for(const a of n){const m=P[a];m&&(r[m]=!0)}return{...r,key:s.toLowerCase()}}function G(o,t){return t?o.key.toLowerCase()===t.key&&!!o.metaKey==!!t.metaKey&&!!o.ctrlKey==!!t.ctrlKey&&!!o.altKey==!!t.altKey&&!!o.shiftKey==!!t.shiftKey:!1}function L(o,t){const n=e.ref(!1),s=e.ref(""),r=e.ref(0),a=e.ref([]),m=()=>{n.value=!n.value},c=()=>{n.value=!0,r.value=0},l=()=>{n.value=!1,s.value=""};function d(i,p){if(!p.trim())return i;const u=p.toLowerCase();return i.filter(y=>{var g,A;return!!(y.value.toLowerCase().includes(u)||(g=y.label)!=null&&g.toLowerCase().includes(u)||(A=y.keywords)!=null&&A.some(he=>he.toLowerCase().includes(u)))})}function h(i){const p=new Map;for(const y of i){const g=y.group||"__ungrouped__";p.has(g)||p.set(g,[]),p.get(g).push(y)}const u=[];p.has("__ungrouped__")&&(u.push({heading:"",items:p.get("__ungrouped__")}),p.delete("__ungrouped__"));for(const[y,g]of p)u.push({heading:y,items:g});return u}const k=e.computed(()=>{if(o){const i=o(a.value,s.value);if(i!==null)return i}return d(a.value,s.value)}),B=e.computed(()=>h(k.value));function ue(){const i=k.value.length;i!==0&&(r.value=(r.value+1)%i)}function fe(){const i=k.value.length;i!==0&&(r.value=(r.value-1+i)%i)}function pe(){var p;const i=k.value[r.value];i&&!i.disabled&&((p=i.onSelect)==null||p.call(i,i),l())}function F(i){var p;for(const u of a.value){if(u.disabled||!u.shortcut)continue;const y=j(u.shortcut);if(G(i,y)){i.preventDefault(),i.stopPropagation(),(p=u.onSelect)==null||p.call(u,u),t==null||t(u),l();return}}}let _=null;return e.watch(a,i=>{_&&(_(),_=null),i.some(u=>u.shortcut)&&typeof window<"u"&&(window.addEventListener("keydown",F),_=()=>window.removeEventListener("keydown",F))},{immediate:!0,flush:"post"}),e.onUnmounted(()=>{_&&_()}),{visible:n,searchQuery:s,activeIndex:r,items:a,toggle:m,open:c,close:l,defaultFilter:d,groupItems:h,filteredItems:k,groupedItems:B,selectNext:ue,selectPrev:fe,selectCurrent:pe}}const C=Symbol("cmdk-state"),M=Symbol("cmdk-loading"),x=Symbol("cmdk-close-on-select"),S=Symbol("cmdk-select-handler"),Q=Symbol("cmdk-item-index-map");function T(o,t,n){const{filter:s,loading:r=!1,closeOnSelect:a=!0}=o,m=L(s,d=>{t("select",d),a&&m.close()});e.provide(C,m),e.provide(M,()=>r),e.provide(x,()=>a),e.provide(S,d=>{t("select",d),a&&m.close()});const c=e.computed(()=>{const d=new Map;return m.filteredItems.value.forEach((h,k)=>d.set(h.value,k)),d});e.provide(Q,()=>c.value);function l(d){t("select",d),a&&m.close()}return{state:m,handleSelect:l}}const q={"data-cmdk-root":"",role:"combobox","aria-expanded":"true","aria-haspopup":"listbox"},K=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(o,{expose:t,emit:n}){const s=o,r=n,{state:a,handleSelect:m}=T({filter:s.filter,loading:s.loading,closeOnSelect:s.closeOnSelect},r);return a.visible.value=s.visible??!0,a.searchQuery.value=s.searchQuery??"",e.provide("cmdk-filter",s.filter),e.watch(()=>s.visible,c=>{c!==void 0&&(a.visible.value=c)}),e.watch(a.visible,c=>r("update:visible",c)),e.watch(()=>s.searchQuery,c=>{c!==void 0&&(a.searchQuery.value=c)}),e.watch(a.searchQuery,c=>r("update:searchQuery",c)),t({open:a.open,close:a.close,toggle:a.toggle,searchQuery:a.searchQuery,items:a.items,filteredItems:a.filteredItems}),(c,l)=>(e.openBlock(),e.createElementBlock("div",q,[e.renderSlot(c.$slots,"default",{items:e.unref(a).items,filteredItems:e.unref(a).filteredItems,searchQuery:e.unref(a).searchQuery,selectNext:e.unref(a).selectNext,selectPrev:e.unref(a).selectPrev,selectCurrent:e.unref(a).selectCurrent,handleSelect:e.unref(m)})]))}});function b(o,t){const n=e.inject(o);if(!n)throw new Error(`[vue-cmdk] <${t}> must be used inside <CommandMenu> or <CommandDialog>.`);return n}const U=["value","placeholder","autofocus"],E=e.defineComponent({__name:"CommandInput",props:{placeholder:{default:"Type a command or search..."},autoFocus:{type:Boolean,default:!0}},setup(o,{expose:t}){const n=b(C,"CommandInput"),s=e.inject(S,()=>{}),r=e.ref(null);t({inputRef:r});function a(c){n.searchQuery.value=c.target.value,n.activeIndex.value=0}function m(c){var l;if(c.key==="ArrowDown")c.preventDefault(),n.selectNext();else if(c.key==="ArrowUp")c.preventDefault(),n.selectPrev();else if(c.key==="Enter"){c.preventDefault();const d=n.filteredItems.value[n.activeIndex.value];d&&!d.disabled&&((l=d.onSelect)==null||l.call(d,d),s(d))}}return(c,l)=>(e.openBlock(),e.createElementBlock("input",{ref_key:"inputRef",ref:r,"data-cmdk-input":"",value:e.unref(n).searchQuery.value,placeholder:o.placeholder,role:"searchbox",autocomplete:"off",autocorrect:"off",spellcheck:"false",autofocus:o.autoFocus,onInput:a,onKeydown:m},null,40,U))}}),z={key:0,"data-cmdk-empty":""},w=e.defineComponent({__name:"CommandEmpty",setup(o){const t=b(C,"CommandEmpty");return(n,s)=>e.unref(t).searchQuery.value&&e.unref(t).filteredItems.value.length===0?(e.openBlock(),e.createElementBlock("div",z,[e.renderSlot(n.$slots,"default",{},()=>[s[0]||(s[0]=e.createElementVNode("span",null,"No results found.",-1))])])):e.createCommentVNode("",!0)}}),H={key:0,"data-cmdk-loading":""},I=e.defineComponent({__name:"CommandLoading",props:{loading:{type:Boolean,default:!1}},setup(o){return(t,n)=>o.loading?(e.openBlock(),e.createElementBlock("div",H,[e.renderSlot(t.$slots,"default",{},()=>[n[0]||(n[0]=e.createElementVNode("span",null,"Loading...",-1))])])):e.createCommentVNode("",!0)}}),X={"data-cmdk-group":"",role:"group"},J={key:0,"data-cmdk-group-heading":"",role:"presentation"},W={"data-cmdk-group-items":"",role:"group"},N=e.defineComponent({__name:"CommandGroup",props:{heading:{}},setup(o){return(t,n)=>(e.openBlock(),e.createElementBlock("div",X,[o.heading?(e.openBlock(),e.createElementBlock("div",J,e.toDisplayString(o.heading),1)):e.createCommentVNode("",!0),e.createElementVNode("div",W,[e.renderSlot(t.$slots,"default")])]))}}),Y=["aria-selected","aria-disabled","data-value"],Z={key:0,"data-cmdk-item-icon":""},v={"data-cmdk-item-label":""},ee={key:1,"data-cmdk-item-shortcut":""},$=e.defineComponent({__name:"CommandItem",props:{value:{},label:{},keywords:{},shortcut:{},disabled:{type:Boolean,default:!1},icon:{},onSelect:{}},setup(o){const t=o,n=b(C,"CommandItem"),s=e.inject(Q,()=>new Map),r=e.computed(()=>({value:t.value,label:t.label,keywords:t.keywords,shortcut:t.shortcut,disabled:t.disabled,icon:t.icon,onSelect:t.onSelect})),a=e.computed(()=>{const d=n.filteredItems.value[n.activeIndex.value];return(d==null?void 0:d.value)===t.value}),m=e.inject(x,()=>!0),c=e.inject(S,()=>{});function l(){var d;t.disabled||((d=t.onSelect)==null||d.call(t,r.value),c(r.value),m()&&n.close())}return(d,h)=>(e.openBlock(),e.createElementBlock("div",{"data-cmdk-item":"",role:"option","aria-selected":a.value,"aria-disabled":o.disabled,"data-value":o.value,class:e.normalizeClass({active:a.value,disabled:o.disabled}),onClick:l,onPointerenter:h[0]||(h[0]=()=>{const k=e.unref(s)().get(o.value);k!==void 0&&(e.unref(n).activeIndex.value=k)})},[e.renderSlot(d.$slots,"default",{item:r.value,active:a.value},()=>[o.icon?(e.openBlock(),e.createElementBlock("span",Z,[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(o.icon)))])):e.createCommentVNode("",!0),e.createElementVNode("span",v,e.toDisplayString(o.label||o.value),1),o.shortcut?(e.openBlock(),e.createElementBlock("span",ee,e.toDisplayString(o.shortcut),1)):e.createCommentVNode("",!0)])],42,Y))}}),te=(o,t)=>{const n=o.__vccOpts||o;for(const[s,r]of t)n[s]=r;return n},oe={},ne={"data-cmdk-separator":"",role:"separator"};function ae(o,t){return e.openBlock(),e.createElementBlock("div",ne)}const D=te(oe,[["render",ae]]),le={"data-cmdk-list":"",role:"listbox"},ce={"aria-live":"polite","aria-atomic":"true",class:"sr-only"},V=e.defineComponent({__name:"CommandList",setup(o){const t=b(C,"CommandList"),n=e.inject(M,()=>!1),s=e.computed(()=>t.groupedItems.value);return(r,a)=>(e.openBlock(),e.createElementBlock("div",le,[e.createElementVNode("div",ce,[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(n)()?(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(w),e.createVNode(I,{loading:e.unref(n)()},null,8,["loading"]),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(s.value,m=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:m.heading||"__ungrouped__"},[e.createVNode(N,{heading:m.heading},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(m.items,c=>(e.openBlock(),e.createBlock($,{key:c.value,value:c.value,label:c.label,shortcut:c.shortcut,disabled:c.disabled,icon:c.icon,"on-select":c.onSelect},null,8,["value","label","shortcut","disabled","icon","on-select"]))),128))]),_:2},1032,["heading"]),m!==s.value[s.value.length-1]?(e.openBlock(),e.createBlock(D,{key:0})):e.createCommentVNode("",!0)],64))),128))]))}}),re={"data-cmdk-dialog-wrapper":""},se={"data-cmdk-dialog-header":""},de={"data-cmdk-dialog-body":""},ie={key:0,"data-cmdk-dialog-footer":""},O=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}},emits:["update:visible","update:searchQuery","select"],setup(o,{emit:t}){const n=o,s=t,{state:r}=T({filter:n.filter,loading:n.loading,closeOnSelect:n.closeOnSelect},s),a=e.ref(null);e.watch(()=>n.items,l=>{r.items.value=l},{immediate:!0}),e.watch(()=>n.visible,l=>{r.visible.value=l},{immediate:!0}),e.watch(()=>n.searchQuery,l=>{l!==void 0&&(r.searchQuery.value=l)}),e.watch(r.searchQuery,l=>s("update:searchQuery",l)),e.watch(r.visible,async l=>{var d,h;s("update:visible",l),l&&(await e.nextTick(),(h=(d=a.value)==null?void 0:d.inputRef)==null||h.focus())});function m(l){l.target===l.currentTarget&&r.close()}function c(l){if(l.key==="Escape"&&(l.preventDefault(),r.close()),l.key==="Tab"){const h=l.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];l.shiftKey?document.activeElement===k&&(l.preventDefault(),B.focus()):document.activeElement===B&&(l.preventDefault(),k.focus())}}return(l,d)=>(e.openBlock(),e.createBlock(e.Teleport,{to:"body"},[e.createVNode(e.Transition,{name:"cmdk-dialog"},{default:e.withCtx(()=>[e.unref(r).visible.value?(e.openBlock(),e.createElementBlock("div",{key:0,"data-cmdk-dialog":"",onKeydown:c},[e.createElementVNode("div",{"data-cmdk-dialog-mask":"",onClick:m}),e.createElementVNode("div",re,[e.createElementVNode("div",se,[e.renderSlot(l.$slots,"header",{},()=>[e.createVNode(E,{ref_key:"commandInputRef",ref:a,placeholder:o.placeholder,"auto-focus":o.autoFocus},null,8,["placeholder","auto-focus"])])]),e.createElementVNode("div",de,[e.renderSlot(l.$slots,"body",{},()=>[e.createVNode(V)])]),l.$slots.footer?(e.openBlock(),e.createElementBlock("div",ie,[e.renderSlot(l.$slots,"footer")])):e.createCommentVNode("",!0)])],32)):e.createCommentVNode("",!0)]),_:3})]))}}),me={Menu:K,Dialog:O,Input:E,List:V,Group:N,Item:$,Empty:w,Separator:D,Loading:I};f.Command=me,f.CommandDialog=O,f.CommandEmpty=w,f.CommandGroup=N,f.CommandInput=E,f.CommandItem=$,f.CommandList=V,f.CommandLoading=I,f.CommandMenu=K,f.CommandSeparator=D,f.useCommandMenu=L,Object.defineProperty(f,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,6 +1,6 @@
1
1
  {
2
2
  "name": "vue-command-kit",
3
- "version": "0.1.1",
3
+ "version": "0.1.2",
4
4
  "description": "⌘K — Fast, composable, unstyled command menu for Vue 3",
5
5
  "type": "module",
6
6
  "packageManager": "pnpm@11.1.2",
@@ -33,6 +33,12 @@
33
33
  "preview": "vite preview",
34
34
  "build:demo": "vite build --config vite.demo.config.ts",
35
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",
36
42
  "prepublishOnly": "pnpm run build"
37
43
  },
38
44
  "keywords": [
@@ -59,6 +65,15 @@
59
65
  "engines": {
60
66
  "node": ">=22.13"
61
67
  },
68
+ "lint-staged": {
69
+ "*.{ts,vue}": [
70
+ "eslint --fix",
71
+ "prettier --write"
72
+ ],
73
+ "*.{json,md}": [
74
+ "prettier --write"
75
+ ]
76
+ },
62
77
  "publishConfig": {
63
78
  "access": "public",
64
79
  "registry": "https://registry.npmjs.org"
@@ -67,14 +82,26 @@
67
82
  "vue": "^3.4.0"
68
83
  },
69
84
  "devDependencies": {
85
+ "@eslint/js": "^10.0.1",
70
86
  "@microsoft/api-extractor": "^7.58.7",
71
87
  "@types/node": "^25.9.1",
72
88
  "@vitejs/plugin-vue": "^5.0.0",
73
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",
74
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",
75
100
  "typescript": "^5.7.0",
101
+ "typescript-eslint": "^8.60.1",
76
102
  "vite": "^6.0.0",
77
103
  "vite-plugin-dts": "^4.0.0",
104
+ "vitest": "^4.1.8",
78
105
  "vue": "^3.5.0",
79
106
  "vue-tsc": "^2.0.0"
80
107
  }