ui-cmdk 0.0.3 → 0.0.4
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.
- package/dist/index.js +1 -1
- package/package.json +2 -2
package/dist/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{Dialog as u}from"@base-ui/react/dialog";import{mergeProps as mq}from"@base-ui/react/merge-props";import{useRender as T}from"@base-ui/react/use-render";import*as H from"react";var jq=1,wq=0.9,hq=0.8,Cq=0.17,r=0.1,t=0.999,Sq=0.9999;var xq=0.99,Eq=/[\\\/_+.#"@\[\(\{&]/,vq=/[\\\/_+.#"@\[\(\{&]/g,Rq=/[\s-]/,Bq=/[\s-]/g;function e(q,$,Z,J,W,K,U){if(K===$.length){if(W===q.length)return jq;return xq}var F=`${W},${K}`;let V=U[F];if(V!==void 0)return V;var M=J.charAt(K),j=Z.indexOf(M,W),G=0,N,O,y,P;while(j>=0){if(N=e(q,$,Z,J,j+1,K+1,U),N>G){if(j===W)N*=jq;else if(Eq.test(q.charAt(j-1))){if(N*=hq,y=q.slice(W,j-1).match(vq),y&&W>0)N*=Math.pow(t,y.length)}else if(Rq.test(q.charAt(j-1))){if(N*=wq,P=q.slice(W,j-1).match(Bq),P&&W>0)N*=Math.pow(t,P.length)}else if(N*=Cq,W>0)N*=Math.pow(t,j-W);if(q.charAt(j)!==$.charAt(K))N*=Sq}if(N<r&&Z.charAt(j-1)===J.charAt(K+1)||J.charAt(K+1)===J.charAt(K)&&Z.charAt(j-1)!==J.charAt(K)){if(O=e(q,$,Z,J,j+1,K+2,U),O*r>N)N=O*r}if(N>G)G=N;j=Z.indexOf(M,j+1)}return U[F]=G,G}function zq(q){return q.toLowerCase().replace(Bq," ")}function Mq(q,$,Z=[]){let J=Z.length>0?`${q+" "+Z.join(" ")}`:q;return e(J,$,zq(J),zq($),0,0,{})}import*as I from"react";var bq=globalThis?.document?I.useLayoutEffect:()=>{};var fq=I[" useId ".trim().toString()]||(()=>{return}),Iq=0;function C(q){let[$,Z]=I.useState(fq());return bq(()=>{if(!q)Z((J)=>J??String(Iq++))},[q]),q||($?`radix-${$}`:"")}import*as gq from"react";function cq(q,$){if(typeof q==="function")q($);else if(q!==null&&q!==void 0)q.current=$}function Uq(...q){return($)=>q.forEach((Z)=>cq(Z,$))}import{jsxDEV as L,Fragment as yq}from"react/jsx-dev-runtime";var g='[cmdk-group=""]',qq='[cmdk-group-items=""]',uq='[cmdk-group-heading=""]',Dq='[cmdk-item=""]',Nq=`${Dq}:not([aria-disabled="true"])`,Qq="cmdk-item-select",E="data-value",pq=(q,$,Z)=>Mq(q,$,Z??[]),Gq=H.createContext(null),c=()=>{let q=H.useContext(Gq);if(!q)throw Error("Command components must be wrapped in <Command>.");return q},Vq=H.createContext(null),Zq=()=>{let q=H.useContext(Vq);if(!q)throw Error("Command store is missing.");return q},kq=H.createContext(null),Lq=H.forwardRef((q,$)=>{let Z=v(()=>({search:"",value:q.value??q.defaultValue??"",selectedItemId:void 0,filtered:{count:0,items:new Map,groups:new Set}})),J=v(()=>new Set),W=v(()=>new Map),K=v(()=>new Map),U=v(()=>new Set),F=Oq(q),{label:V,children:M,render:j,value:G,onValueChange:N,filter:O,shouldFilter:y,loop:P,disablePointerSelection:R=!1,vimBindings:p=!0,...$q}=q,l=C(),Wq=C(),m=C(),h=H.useRef(null),D=qQ();S(()=>{if(G!==void 0){let Q=G.trim();Z.current.value=Q,A.emit()}},[G]),S(()=>{D(6,Hq)},[]);let A=H.useMemo(()=>{return{subscribe:(Q)=>{return U.current.add(Q),()=>U.current.delete(Q)},snapshot:()=>{return Z.current},setState:(Q,z,Y)=>{if(Object.is(Z.current[Q],z))return;if(Z.current[Q]=z,Q==="search")i(),n(),D(1,a);else if(Q==="value"){if(document?.activeElement?.hasAttribute("cmdk-input")||document?.activeElement?.hasAttribute("cmdk-root")){let X=document.getElementById(m);if(X)X.focus();else document.getElementById(l)?.focus()}if(D(7,()=>{Z.current.selectedItemId=x()?.id,A.emit()}),!Y)D(5,Hq);if(F.current?.value!==void 0){let X=z??"";F.current.onValueChange?.(X);return}}A.emit()},emit:()=>{U.current.forEach((Q)=>Q())}}},[]),d=H.useMemo(()=>({value:(Q,z,Y)=>{if(z!==K.current.get(Q)?.value)K.current.set(Q,{value:z,keywords:Y}),Z.current.filtered.items.set(Q,Jq(z,Y)),D(2,()=>{n(),A.emit()})},item:(Q,z)=>{if(J.current.add(Q),z){let Y=W.current.get(z);if(Y)Y.add(Q);else W.current.set(z,new Set([Q]))}return D(3,()=>{if(i(),n(),!Z.current.value)a();A.emit()}),()=>{K.current.delete(Q),J.current.delete(Q),Z.current.filtered.items.delete(Q);let Y=x();D(4,()=>{if(i(),Y?.getAttribute("id")===Q)a();A.emit()})}},group:(Q)=>{if(!W.current.has(Q))W.current.set(Q,new Set);return()=>{K.current.delete(Q),W.current.delete(Q)}},filter:()=>F.current.shouldFilter!==!1,label:V||q["aria-label"]||"",getDisablePointerSelection:()=>{return F.current.disablePointerSelection??!1},listId:l,inputId:m,labelId:Wq,listInnerRef:h}),[]);function Jq(Q,z){let Y=F.current?.filter??pq;return Q?Y(Q,Z.current.search,z):0}function n(){if(!Z.current.search||F.current.shouldFilter===!1)return;let Q=Z.current.filtered.items,z=[];Z.current.filtered.groups.forEach((X)=>{let B=W.current.get(X);if(!B)return;let k=0;B.forEach((f)=>{let Tq=Q.get(f)??0;k=Math.max(Tq,k)}),z.push([X,k])});let Y=h.current;if(!Y)return;b().sort((X,B)=>{let k=X.getAttribute("id")??"",f=B.getAttribute("id")??"";return(Q.get(f)??0)-(Q.get(k)??0)}).forEach((X)=>{let B=X.closest(qq);if(B){let k=X.parentElement===B?X:X.closest(`${qq} > *`);if(k)B.appendChild(k)}else{let k=X.parentElement===Y?X:X.closest(`${qq} > *`);if(k)Y.appendChild(k)}}),z.sort((X,B)=>B[1]-X[1]).forEach((X)=>{let B=h.current?.querySelector(`${g}[${E}="${encodeURIComponent(X[0])}"]`),k=B?.parentElement;if(B&&k)k.appendChild(B)})}function a(){let z=b().find((Y)=>Y.getAttribute("aria-disabled")!=="true")?.getAttribute(E);A.setState("value",z??"")}function i(){if(!Z.current.search||F.current.shouldFilter===!1){Z.current.filtered.count=J.current.size;return}Z.current.filtered.groups=new Set;let Q=0;for(let z of J.current){let Y=K.current.get(z)?.value??"",X=K.current.get(z)?.keywords??[],B=Jq(Y,X);if(Z.current.filtered.items.set(z,B),B>0)Q++}for(let[z,Y]of W.current)for(let X of Y)if((Z.current.filtered.items.get(X)??0)>0){Z.current.filtered.groups.add(z);break}Z.current.filtered.count=Q}function Hq(){let Q=x();if(Q){if(Q.parentElement?.firstChild===Q)Q.closest(g)?.querySelector(uq)?.scrollIntoView({block:"nearest"});Q.scrollIntoView({block:"nearest"})}}function x(){let Q=h.current?.querySelector(`${Dq}[aria-selected="true"]`);return Q instanceof HTMLElement?Q:null}function b(){let Q=h.current?.querySelectorAll(Nq);if(!Q)return[];return Array.from(Q).filter((z)=>z instanceof HTMLElement)}function o(Q){let Y=b()[Q];if(!Y)return;let X=Y.getAttribute(E);if(X!=null)A.setState("value",X)}function s(Q){let z=x(),Y=b(),X=Y.findIndex((f)=>f===z),B=Y[X+Q];if(F.current?.loop)B=X+Q<0?Y[Y.length-1]:X+Q===Y.length?Y[0]:Y[X+Q];if(!B)return;let k=B.getAttribute(E);if(k!=null)A.setState("value",k)}function Xq(Q){let Y=x()?.closest(g),X=null;while(Y&&!X){Y=Q>0?tq(Y,g):eq(Y,g);let B=Y?.querySelector(Nq);X=B instanceof HTMLElement?B:null}if(X){let B=X.getAttribute(E);if(B!=null)A.setState("value",B)}else s(Q)}let Yq=()=>o(b().length-1),Kq=(Q)=>{if(Q.preventDefault(),Q.metaKey)Yq();else if(Q.altKey)Xq(1);else s(1)},Fq=(Q)=>{if(Q.preventDefault(),Q.metaKey)o(0);else if(Q.altKey)Xq(-1);else s(-1)},Pq=(Q)=>{let z=Q,Y=Q.nativeEvent.isComposing||Q.keyCode===229;if(z.baseUIHandlerPrevented||Q.defaultPrevented||Y)return;switch(Q.key){case"n":case"j":{if(p&&Q.ctrlKey)Kq(Q);break}case"ArrowDown":{Kq(Q);break}case"p":case"k":{if(p&&Q.ctrlKey)Fq(Q);break}case"ArrowUp":{Fq(Q);break}case"Home":{Q.preventDefault(),o(0);break}case"End":{Q.preventDefault(),Yq();break}case"Enter":{Q.preventDefault();let X=x();if(X){let B=new Event(Qq);X.dispatchEvent(B)}}}},_q=L(yq,{children:[L("label",{"cmdk-label":"",htmlFor:d.inputId,id:d.labelId,style:QQ,children:V},void 0,!1,void 0,this),L(Vq.Provider,{value:A,children:L(Gq.Provider,{value:d,children:M},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this);return T({defaultTagName:"div",render:j,ref:$,props:w({tabIndex:-1,"cmdk-root":"",onKeyDown:Pq,children:_q},$q)})}),lq=H.forwardRef((q,$)=>{let Z=C(),J=H.useRef(null),W=H.useContext(kq),K=c(),U=Oq(q),F=U.current?.forceMount??W?.forceMount;S(()=>{if(!F)return K.item(Z,W?.id)},[F]);let V=Aq(Z,J,[q.value,q.children,J],q.keywords),M=Zq(),j=_((D)=>D.value&&D.value===V.current),G=_((D)=>F?!0:K.filter()===!1?!0:!D.search?!0:(D.filtered.items.get(Z)??0)>0);H.useEffect(()=>{let D=J.current;if(!D||q.disabled)return;return D.addEventListener(Qq,N),()=>D.removeEventListener(Qq,N)},[G,q.onSelect,q.disabled]);function N(){O(),U.current.onSelect?.(V.current)}function O(){M.setState("value",V.current,!0)}let y=(D)=>{if(D.baseUIHandlerPrevented||D.defaultPrevented)return;O()},P=(D)=>{if(D.baseUIHandlerPrevented||D.defaultPrevented)return;N()},{disabled:R,value:p,onSelect:$q,forceMount:l,keywords:Wq,render:m,...h}=q;return T({defaultTagName:"div",render:m,ref:[J,$],enabled:G,props:w({id:Z,"cmdk-item":"",role:"option","aria-disabled":Boolean(R),"aria-selected":Boolean(j),"data-disabled":Boolean(R),"data-selected":Boolean(j),onPointerMove:R||K.getDisablePointerSelection()?void 0:y,onClick:R?void 0:P},h)})}),dq=H.forwardRef((q,$)=>{let{heading:Z,children:J,forceMount:W,render:K,...U}=q,F=C(),V=H.useRef(null),M=H.useRef(null),j=C(),G=c(),N=_((P)=>W?!0:G.filter()===!1?!0:!P.search?!0:P.filtered.groups.has(F));S(()=>{return G.group(F)},[]),Aq(F,V,[q.value,q.heading,M]);let O=H.useMemo(()=>({id:F,forceMount:W}),[W]),y=L(yq,{children:[Z&&L("div",{ref:M,"cmdk-group-heading":"","aria-hidden":!0,id:j,children:Z},void 0,!1,void 0,this),L("div",{"cmdk-group-items":"",role:"group","aria-labelledby":Z?j:void 0,children:L(kq.Provider,{value:O,children:J},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this);return T({defaultTagName:"div",render:K,ref:[V,$],props:w({"cmdk-group":"",role:"presentation",hidden:N?void 0:!0,children:y},U)})}),nq=H.forwardRef((q,$)=>{let{alwaysRender:Z,render:J,...W}=q,K=_((U)=>!U.search);return T({defaultTagName:"div",render:J,ref:$,enabled:Z||K,props:w({"cmdk-separator":"",role:"separator"},W)})}),aq=H.forwardRef((q,$)=>{let{onValueChange:Z,render:J,...W}=q,K=q.value!=null,U=Zq(),F=_((j)=>j.search),V=_((j)=>j.selectedItemId),M=c();return H.useEffect(()=>{if(q.value!=null)U.setState("search",q.value)},[q.value]),T({defaultTagName:"input",render:J,ref:$,props:w({"cmdk-input":"",autoComplete:"off",autoCorrect:"off",spellCheck:!1,"aria-autocomplete":"list",role:"combobox","aria-expanded":!0,"aria-controls":M.listId,"aria-labelledby":M.labelId,"aria-activedescendant":V,id:M.inputId,type:"text",value:K?q.value:F,onChange:(j)=>{if(j.baseUIHandlerPrevented||j.defaultPrevented)return;if(!K)U.setState("search",j.target.value);Z?.(j.target.value)}},W)})}),iq=H.forwardRef((q,$)=>{let{children:Z,label:J="Suggestions",render:W,...K}=q,U=H.useRef(null),F=H.useRef(null),V=_((G)=>G.selectedItemId),M=c();H.useEffect(()=>{if(F.current&&U.current){let G=F.current,N=U.current,O=null,y=new ResizeObserver(()=>{O=requestAnimationFrame(()=>{let P=G.offsetHeight;N.style.setProperty("--cmdk-list-height",P.toFixed(1)+"px")})});return y.observe(G),()=>{if(O!=null)cancelAnimationFrame(O);y.unobserve(G)}}},[]);let j=L("div",{ref:Uq(F,M.listInnerRef),"cmdk-list-sizer":"",children:Z},void 0,!1,void 0,this);return T({defaultTagName:"div",render:W,ref:[U,$],props:w({"cmdk-list":"",role:"listbox",tabIndex:-1,"aria-activedescendant":V,"aria-label":J,id:M.listId,children:j},K)})}),oq=H.forwardRef((q,$)=>{let{open:Z,onOpenChange:J,overlayClassName:W,contentClassName:K,container:U,...F}=q,V=(M)=>{J?.(M)};return L(u.Root,{open:Z,onOpenChange:V,children:L(u.Portal,{container:U,children:[L(u.Backdrop,{"cmdk-overlay":"",className:W},void 0,!1,void 0,this),L(u.Popup,{"aria-label":q.label,"cmdk-dialog":"",className:K,children:L(Lq,{ref:$,...F},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)}),sq=H.forwardRef((q,$)=>{let{render:Z,...J}=q,W=_((K)=>K.filtered.count===0);return T({defaultTagName:"div",render:Z,ref:$,enabled:W,props:w({"cmdk-empty":"",role:"presentation"},J)})}),rq=H.forwardRef((q,$)=>{let{progress:Z,children:J,label:W="Loading...",render:K,...U}=q;return T({defaultTagName:"div",render:K,ref:$,props:w({"cmdk-loading":"",role:"progressbar","aria-valuenow":Z,"aria-valuemin":0,"aria-valuemax":100,"aria-label":W,children:L("div",{"aria-hidden":!0,children:J},void 0,!1,void 0,this)},U)})}),jQ=Object.assign(Lq,{List:iq,Item:lq,Input:aq,Group:dq,Separator:nq,Dialog:oq,Empty:sq,Loading:rq});function w(q,$,Z,J,W){return mq(q,$,Z,J,W)}function tq(q,$){let Z=q.nextElementSibling;while(Z){if(Z.matches($))return Z;Z=Z.nextElementSibling}}function eq(q,$){let Z=q.previousElementSibling;while(Z){if(Z.matches($))return Z;Z=Z.previousElementSibling}}function Oq(q){let $=H.useRef(q);return S(()=>{$.current=q}),$}var S=typeof window>"u"?H.useEffect:H.useLayoutEffect;function v(q){let $=H.useRef(void 0);if($.current===void 0)$.current=q();return $}function _(q){let $=Zq(),Z=()=>q($.snapshot());return H.useSyncExternalStore($.subscribe,Z,Z)}function Aq(q,$,Z,J){let W=H.useRef(""),K=c();return S(()=>{let F=(()=>{for(let M of Z){if(typeof M==="string")return M.trim();if(M&&typeof M==="object"&&"current"in M){if(M.current)return M.current.textContent?.trim();return W.current}}})()??W.current,V=(J??[]).map((M)=>M.trim());K.value(q,F,V),$.current?.setAttribute(E,F),W.current=F}),W}var qQ=()=>{let[q,$]=H.useState(),Z=v(()=>new Map);return S(()=>{Z.current.forEach((J)=>J()),Z.current=new Map},[q]),(J,W)=>{Z.current.set(J,W),$({})}},QQ={position:"absolute",width:"1px",height:"1px",padding:"0",margin:"-1px",overflow:"hidden",clip:"rect(0, 0, 0, 0)",whiteSpace:"nowrap",borderWidth:"0"};export{_ as useCommandState,pq as defaultFilter,nq as CommandSeparator,Lq as CommandRoot,rq as CommandLoading,iq as CommandList,lq as CommandItem,aq as CommandInput,dq as CommandGroup,sq as CommandEmpty,oq as CommandDialog,jQ as Command};
|
|
1
|
+
import{Dialog as u}from"@base-ui/react/dialog";import{mergeProps as uq}from"@base-ui/react/merge-props";import{useRender as T}from"@base-ui/react/use-render";import*as H from"react";var jq=1,hq=0.9,Cq=0.8,Sq=0.17,r=0.1,t=0.999,Eq=0.9999;var xq=0.99,vq=/[\\\/_+.#"@\[\(\{&]/,Rq=/[\\\/_+.#"@\[\(\{&]/g,bq=/[\s-]/,Bq=/[\s-]/g;function e(q,$,Z,J,W,K,M){if(K===$.length){if(W===q.length)return jq;return xq}var F=`${W},${K}`;let G=M[F];if(G!==void 0)return G;var B=J.charAt(K),D=Z.indexOf(B,W),N=0,U,L,y,P;while(D>=0){if(U=e(q,$,Z,J,D+1,K+1,M),U>N){if(D===W)U*=jq;else if(vq.test(q.charAt(D-1))){if(U*=Cq,y=q.slice(W,D-1).match(Rq),y&&W>0)U*=Math.pow(t,y.length)}else if(bq.test(q.charAt(D-1))){if(U*=hq,P=q.slice(W,D-1).match(Bq),P&&W>0)U*=Math.pow(t,P.length)}else if(U*=Sq,W>0)U*=Math.pow(t,D-W);if(q.charAt(D)!==$.charAt(K))U*=Eq}if(U<r&&Z.charAt(D-1)===J.charAt(K+1)||J.charAt(K+1)===J.charAt(K)&&Z.charAt(D-1)!==J.charAt(K)){if(L=e(q,$,Z,J,D+1,K+2,M),L*r>U)U=L*r}if(U>N)N=U;D=Z.indexOf(B,D+1)}return M[F]=N,N}function zq(q){return q.toLowerCase().replace(Bq," ")}function Mq(q,$,Z=[]){let J=Z.length>0?`${q+" "+Z.join(" ")}`:q;return e(J,$,zq(J),zq($),0,0,{})}import*as I from"react";var fq=globalThis?.document?I.useLayoutEffect:()=>{};var Iq=I[" useId ".trim().toString()]||(()=>{return}),gq=0;function C(q){let[$,Z]=I.useState(Iq());return fq(()=>{if(!q)Z((J)=>J??String(gq++))},[q]),q||($?`radix-${$}`:"")}import*as cq from"react";function mq(q,$){if(typeof q==="function")q($);else if(q!==null&&q!==void 0)q.current=$}function Uq(...q){return($)=>q.forEach((Z)=>mq(Z,$))}import{jsx as A,jsxs as $q,Fragment as Pq}from"react/jsx-runtime";var g='[cmdk-group=""]',qq='[cmdk-group-items=""]',pq='[cmdk-group-heading=""]',Nq='[cmdk-item=""]',Vq=`${Nq}:not([aria-disabled="true"])`,Qq="cmdk-item-select",x="data-value",lq=(q,$,Z)=>Mq(q,$,Z??[]),Gq=H.createContext(null),c=()=>{let q=H.useContext(Gq);if(!q)throw Error("Command components must be wrapped in <Command>.");return q},kq=H.createContext(null),Zq=()=>{let q=H.useContext(kq);if(!q)throw Error("Command store is missing.");return q},Lq=H.createContext(null),Oq=H.forwardRef((q,$)=>{let Z=v(()=>({search:"",value:q.value??q.defaultValue??"",selectedItemId:void 0,filtered:{count:0,items:new Map,groups:new Set}})),J=v(()=>new Set),W=v(()=>new Map),K=v(()=>new Map),M=v(()=>new Set),F=Aq(q),{label:G,children:B,render:D,value:N,onValueChange:U,filter:L,shouldFilter:y,loop:P,disablePointerSelection:R=!1,vimBindings:p=!0,...Wq}=q,l=C(),Jq=C(),m=C(),h=H.useRef(null),V=QQ();S(()=>{if(N!==void 0){let Q=N.trim();Z.current.value=Q,O.emit()}},[N]),S(()=>{V(6,Xq)},[]);let O=H.useMemo(()=>{return{subscribe:(Q)=>{return M.current.add(Q),()=>M.current.delete(Q)},snapshot:()=>{return Z.current},setState:(Q,j,Y)=>{if(Object.is(Z.current[Q],j))return;if(Z.current[Q]=j,Q==="search")i(),n(),V(1,a);else if(Q==="value"){if(document?.activeElement?.hasAttribute("cmdk-input")||document?.activeElement?.hasAttribute("cmdk-root")){let X=document.getElementById(m);if(X)X.focus();else document.getElementById(l)?.focus()}if(V(7,()=>{Z.current.selectedItemId=E()?.id,O.emit()}),!Y)V(5,Xq);if(F.current?.value!==void 0){let X=j??"";F.current.onValueChange?.(X);return}}O.emit()},emit:()=>{M.current.forEach((Q)=>Q())}}},[]),d=H.useMemo(()=>({value:(Q,j,Y)=>{if(j!==K.current.get(Q)?.value)K.current.set(Q,{value:j,keywords:Y}),Z.current.filtered.items.set(Q,Hq(j,Y)),V(2,()=>{n(),O.emit()})},item:(Q,j)=>{if(J.current.add(Q),j){let Y=W.current.get(j);if(Y)Y.add(Q);else W.current.set(j,new Set([Q]))}return V(3,()=>{if(i(),n(),!Z.current.value)a();O.emit()}),()=>{K.current.delete(Q),J.current.delete(Q),Z.current.filtered.items.delete(Q);let Y=E();V(4,()=>{if(i(),Y?.getAttribute("id")===Q)a();O.emit()})}},group:(Q)=>{if(!W.current.has(Q))W.current.set(Q,new Set);return()=>{K.current.delete(Q),W.current.delete(Q)}},filter:()=>F.current.shouldFilter!==!1,label:G||q["aria-label"]||"",getDisablePointerSelection:()=>{return F.current.disablePointerSelection??!1},listId:l,inputId:m,labelId:Jq,listInnerRef:h}),[]);function Hq(Q,j){let Y=F.current?.filter??lq;return Q?Y(Q,Z.current.search,j):0}function n(){if(!Z.current.search||F.current.shouldFilter===!1)return;let Q=Z.current.filtered.items,j=[];Z.current.filtered.groups.forEach((X)=>{let z=W.current.get(X);if(!z)return;let k=0;z.forEach((f)=>{let wq=Q.get(f)??0;k=Math.max(wq,k)}),j.push([X,k])});let Y=h.current;if(!Y)return;b().sort((X,z)=>{let k=X.getAttribute("id")??"",f=z.getAttribute("id")??"";return(Q.get(f)??0)-(Q.get(k)??0)}).forEach((X)=>{let z=X.closest(qq);if(z){let k=X.parentElement===z?X:X.closest(`${qq} > *`);if(k)z.appendChild(k)}else{let k=X.parentElement===Y?X:X.closest(`${qq} > *`);if(k)Y.appendChild(k)}}),j.sort((X,z)=>z[1]-X[1]).forEach((X)=>{let z=h.current?.querySelector(`${g}[${x}="${encodeURIComponent(X[0])}"]`),k=z?.parentElement;if(z&&k)k.appendChild(z)})}function a(){let j=b().find((Y)=>Y.getAttribute("aria-disabled")!=="true")?.getAttribute(x);O.setState("value",j??"")}function i(){if(!Z.current.search||F.current.shouldFilter===!1){Z.current.filtered.count=J.current.size;return}Z.current.filtered.groups=new Set;let Q=0;for(let j of J.current){let Y=K.current.get(j)?.value??"",X=K.current.get(j)?.keywords??[],z=Hq(Y,X);if(Z.current.filtered.items.set(j,z),z>0)Q++}for(let[j,Y]of W.current)for(let X of Y)if((Z.current.filtered.items.get(X)??0)>0){Z.current.filtered.groups.add(j);break}Z.current.filtered.count=Q}function Xq(){let Q=E();if(Q){if(Q.parentElement?.firstChild===Q)Q.closest(g)?.querySelector(pq)?.scrollIntoView({block:"nearest"});Q.scrollIntoView({block:"nearest"})}}function E(){let Q=h.current?.querySelector(`${Nq}[aria-selected="true"]`);return Q instanceof HTMLElement?Q:null}function b(){let Q=h.current?.querySelectorAll(Vq);if(!Q)return[];return Array.from(Q).filter((j)=>j instanceof HTMLElement)}function o(Q){let Y=b()[Q];if(!Y)return;let X=Y.getAttribute(x);if(X!=null)O.setState("value",X)}function s(Q){let j=E(),Y=b(),X=Y.findIndex((f)=>f===j),z=Y[X+Q];if(F.current?.loop)z=X+Q<0?Y[Y.length-1]:X+Q===Y.length?Y[0]:Y[X+Q];if(!z)return;let k=z.getAttribute(x);if(k!=null)O.setState("value",k)}function Yq(Q){let Y=E()?.closest(g),X=null;while(Y&&!X){Y=Q>0?eq(Y,g):qQ(Y,g);let z=Y?.querySelector(Vq);X=z instanceof HTMLElement?z:null}if(X){let z=X.getAttribute(x);if(z!=null)O.setState("value",z)}else s(Q)}let Kq=()=>o(b().length-1),Fq=(Q)=>{if(Q.preventDefault(),Q.metaKey)Kq();else if(Q.altKey)Yq(1);else s(1)},Dq=(Q)=>{if(Q.preventDefault(),Q.metaKey)o(0);else if(Q.altKey)Yq(-1);else s(-1)},_q=(Q)=>{let j=Q,Y=Q.nativeEvent.isComposing||Q.keyCode===229;if(j.baseUIHandlerPrevented||Q.defaultPrevented||Y)return;switch(Q.key){case"n":case"j":{if(p&&Q.ctrlKey)Fq(Q);break}case"ArrowDown":{Fq(Q);break}case"p":case"k":{if(p&&Q.ctrlKey)Dq(Q);break}case"ArrowUp":{Dq(Q);break}case"Home":{Q.preventDefault(),o(0);break}case"End":{Q.preventDefault(),Kq();break}case"Enter":{Q.preventDefault();let X=E();if(X){let z=new Event(Qq);X.dispatchEvent(z)}}}},Tq=$q(Pq,{children:[A("label",{"cmdk-label":"",htmlFor:d.inputId,id:d.labelId,style:ZQ,children:G}),A(kq.Provider,{value:O,children:A(Gq.Provider,{value:d,children:B})})]});return T({defaultTagName:"div",render:D,ref:$,props:w({tabIndex:-1,"cmdk-root":"",onKeyDown:_q,children:Tq},Wq)})}),dq=H.forwardRef((q,$)=>{let Z=C(),J=H.useRef(null),W=H.useContext(Lq),K=c(),M=Aq(q),F=M.current?.forceMount??W?.forceMount;S(()=>{if(!F)return K.item(Z,W?.id)},[F]);let G=yq(Z,J,[q.value,q.children,J],q.keywords),B=Zq(),D=_((V)=>V.value&&V.value===G.current),N=_((V)=>F?!0:K.filter()===!1?!0:!V.search?!0:(V.filtered.items.get(Z)??0)>0);H.useEffect(()=>{let V=J.current;if(!V||q.disabled)return;return V.addEventListener(Qq,U),()=>V.removeEventListener(Qq,U)},[N,q.onSelect,q.disabled]);function U(){L(),M.current.onSelect?.(G.current)}function L(){B.setState("value",G.current,!0)}let y=(V)=>{if(V.baseUIHandlerPrevented||V.defaultPrevented)return;L()},P=(V)=>{if(V.baseUIHandlerPrevented||V.defaultPrevented)return;U()},{disabled:R,value:p,onSelect:Wq,forceMount:l,keywords:Jq,render:m,...h}=q;return T({defaultTagName:"div",render:m,ref:[J,$],enabled:N,props:w({id:Z,"cmdk-item":"",role:"option","aria-disabled":Boolean(R),"aria-selected":Boolean(D),"data-disabled":Boolean(R),"data-selected":Boolean(D),onPointerMove:R||K.getDisablePointerSelection()?void 0:y,onClick:R?void 0:P},h)})}),nq=H.forwardRef((q,$)=>{let{heading:Z,children:J,forceMount:W,render:K,...M}=q,F=C(),G=H.useRef(null),B=H.useRef(null),D=C(),N=c(),U=_((P)=>W?!0:N.filter()===!1?!0:!P.search?!0:P.filtered.groups.has(F));S(()=>{return N.group(F)},[]),yq(F,G,[q.value,q.heading,B]);let L=H.useMemo(()=>({id:F,forceMount:W}),[W]),y=$q(Pq,{children:[Z&&A("div",{ref:B,"cmdk-group-heading":"","aria-hidden":!0,id:D,children:Z}),A("div",{"cmdk-group-items":"",role:"group","aria-labelledby":Z?D:void 0,children:A(Lq.Provider,{value:L,children:J})})]});return T({defaultTagName:"div",render:K,ref:[G,$],props:w({"cmdk-group":"",role:"presentation",hidden:U?void 0:!0,children:y},M)})}),aq=H.forwardRef((q,$)=>{let{alwaysRender:Z,render:J,...W}=q,K=_((M)=>!M.search);return T({defaultTagName:"div",render:J,ref:$,enabled:Z||K,props:w({"cmdk-separator":"",role:"separator"},W)})}),iq=H.forwardRef((q,$)=>{let{onValueChange:Z,render:J,...W}=q,K=q.value!=null,M=Zq(),F=_((D)=>D.search),G=_((D)=>D.selectedItemId),B=c();return H.useEffect(()=>{if(q.value!=null)M.setState("search",q.value)},[q.value]),T({defaultTagName:"input",render:J,ref:$,props:w({"cmdk-input":"",autoComplete:"off",autoCorrect:"off",spellCheck:!1,"aria-autocomplete":"list",role:"combobox","aria-expanded":!0,"aria-controls":B.listId,"aria-labelledby":B.labelId,"aria-activedescendant":G,id:B.inputId,type:"text",value:K?q.value:F,onChange:(D)=>{if(D.baseUIHandlerPrevented||D.defaultPrevented)return;if(!K)M.setState("search",D.target.value);Z?.(D.target.value)}},W)})}),oq=H.forwardRef((q,$)=>{let{children:Z,label:J="Suggestions",render:W,...K}=q,M=H.useRef(null),F=H.useRef(null),G=_((N)=>N.selectedItemId),B=c();H.useEffect(()=>{if(F.current&&M.current){let N=F.current,U=M.current,L=null,y=new ResizeObserver(()=>{L=requestAnimationFrame(()=>{let P=N.offsetHeight;U.style.setProperty("--cmdk-list-height",P.toFixed(1)+"px")})});return y.observe(N),()=>{if(L!=null)cancelAnimationFrame(L);y.unobserve(N)}}},[]);let D=A("div",{ref:Uq(F,B.listInnerRef),"cmdk-list-sizer":"",children:Z});return T({defaultTagName:"div",render:W,ref:[M,$],props:w({"cmdk-list":"",role:"listbox",tabIndex:-1,"aria-activedescendant":G,"aria-label":J,id:B.listId,children:D},K)})}),sq=H.forwardRef((q,$)=>{let{open:Z,onOpenChange:J,overlayClassName:W,contentClassName:K,container:M,...F}=q,G=(B)=>{J?.(B)};return A(u.Root,{open:Z,onOpenChange:G,children:$q(u.Portal,{container:M,children:[A(u.Backdrop,{"cmdk-overlay":"",className:W}),A(u.Popup,{"aria-label":q.label,"cmdk-dialog":"",className:K,children:A(Oq,{ref:$,...F})})]})})}),rq=H.forwardRef((q,$)=>{let{render:Z,...J}=q,W=_((K)=>K.filtered.count===0);return T({defaultTagName:"div",render:Z,ref:$,enabled:W,props:w({"cmdk-empty":"",role:"presentation"},J)})}),tq=H.forwardRef((q,$)=>{let{progress:Z,children:J,label:W="Loading...",render:K,...M}=q;return T({defaultTagName:"div",render:K,ref:$,props:w({"cmdk-loading":"",role:"progressbar","aria-valuenow":Z,"aria-valuemin":0,"aria-valuemax":100,"aria-label":W,children:A("div",{"aria-hidden":!0,children:J})},M)})}),jQ=Object.assign(Oq,{List:oq,Item:dq,Input:iq,Group:nq,Separator:aq,Dialog:sq,Empty:rq,Loading:tq});function w(q,$,Z,J,W){return uq(q,$,Z,J,W)}function eq(q,$){let Z=q.nextElementSibling;while(Z){if(Z.matches($))return Z;Z=Z.nextElementSibling}}function qQ(q,$){let Z=q.previousElementSibling;while(Z){if(Z.matches($))return Z;Z=Z.previousElementSibling}}function Aq(q){let $=H.useRef(q);return S(()=>{$.current=q}),$}var S=typeof window>"u"?H.useEffect:H.useLayoutEffect;function v(q){let $=H.useRef(void 0);if($.current===void 0)$.current=q();return $}function _(q){let $=Zq(),Z=()=>q($.snapshot());return H.useSyncExternalStore($.subscribe,Z,Z)}function yq(q,$,Z,J){let W=H.useRef(""),K=c();return S(()=>{let F=(()=>{for(let B of Z){if(typeof B==="string")return B.trim();if(B&&typeof B==="object"&&"current"in B){if(B.current)return B.current.textContent?.trim();return W.current}}})()??W.current,G=(J??[]).map((B)=>B.trim());K.value(q,F,G),$.current?.setAttribute(x,F),W.current=F}),W}var QQ=()=>{let[q,$]=H.useState(),Z=v(()=>new Map);return S(()=>{Z.current.forEach((J)=>J()),Z.current=new Map},[q]),(J,W)=>{Z.current.set(J,W),$({})}},ZQ={position:"absolute",width:"1px",height:"1px",padding:"0",margin:"-1px",overflow:"hidden",clip:"rect(0, 0, 0, 0)",whiteSpace:"nowrap",borderWidth:"0"};export{_ as useCommandState,lq as defaultFilter,aq as CommandSeparator,Oq as CommandRoot,tq as CommandLoading,oq as CommandList,dq as CommandItem,iq as CommandInput,nq as CommandGroup,rq as CommandEmpty,sq as CommandDialog,jQ as Command};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ui-cmdk",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.4",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"module": "./dist/index.js",
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
"dist"
|
|
16
16
|
],
|
|
17
17
|
"scripts": {
|
|
18
|
-
"build": "bun run build.ts",
|
|
18
|
+
"build": "NODE_ENV=production bun run build.ts",
|
|
19
19
|
"prepublishOnly": "rm -rf dist && bun run build"
|
|
20
20
|
},
|
|
21
21
|
"devDependencies": {
|