lms/public/build/assets/combobox-Byd5-E0j.js
2025-12-15 12:26:23 +01:00

2 lines
15 KiB
JavaScript

import{r as n,bQ as I,bR as Ne,bS as je,bT as Ae,bU as Me,j as x,aq as De,by as Ke,K as Pe}from"./vendor-BKmmeuxg.js";import{B as Le}from"./button-BpNwv2aE.js";import{c as P}from"./utils-DxSsnXxD.js";import{P as qe,a as Fe,b as Ue}from"./popover-B4kBsMuI.js";var me=1,Ge=.9,He=.8,Oe=.17,X=.1,Y=.999,ze=.9999,Be=.99,Te=/[\\\/_+.#"@\[\(\{&]/,Ve=/[\\\/_+.#"@\[\(\{&]/g,_e=/[\s-]/,he=/[\s-]/g;function ee(e,l,t,c,a,u,d){if(u===l.length)return a===e.length?me:Be;var f=`${a},${u}`;if(d[f]!==void 0)return d[f];for(var h=c.charAt(u),m=t.indexOf(h,a),s=0,v,E,k,g;m>=0;)v=ee(e,l,t,c,m+1,u+1,d),v>s&&(m===a?v*=me:Te.test(e.charAt(m-1))?(v*=He,k=e.slice(a,m-1).match(Ve),k&&a>0&&(v*=Math.pow(Y,k.length))):_e.test(e.charAt(m-1))?(v*=Ge,g=e.slice(a,m-1).match(he),g&&a>0&&(v*=Math.pow(Y,g.length))):(v*=Oe,a>0&&(v*=Math.pow(Y,m-a))),e.charAt(m)!==l.charAt(u)&&(v*=ze)),(v<X&&t.charAt(m-1)===c.charAt(u+1)||c.charAt(u+1)===c.charAt(u)&&t.charAt(m-1)!==c.charAt(u))&&(E=ee(e,l,t,c,m+1,u+2,d),E*X>v&&(v=E*X)),v>s&&(s=v),m=t.indexOf(h,m+1);return d[f]=s,s}function pe(e){return e.toLowerCase().replace(he," ")}function We(e,l,t){return e=t&&t.length>0?`${e+" "+t.join(" ")}`:e,ee(e,l,pe(e),pe(l),0,0,{})}var U='[cmdk-group=""]',Z='[cmdk-group-items=""]',Je='[cmdk-group-heading=""]',re='[cmdk-item=""]',ve=`${re}:not([aria-disabled="true"])`,te="cmdk-item-select",M="data-value",Qe=(e,l,t)=>We(e,l,t),be=n.createContext(void 0),H=()=>n.useContext(be),ge=n.createContext(void 0),ne=()=>n.useContext(ge),xe=n.createContext(void 0),ye=n.forwardRef((e,l)=>{let t=L(()=>{var r,i;return{search:"",value:(i=(r=e.value)!=null?r:e.defaultValue)!=null?i:"",filtered:{count:0,items:new Map,groups:new Set}}}),c=L(()=>new Set),a=L(()=>new Map),u=L(()=>new Map),d=L(()=>new Set),f=we(e),{label:h,children:m,value:s,onValueChange:v,filter:E,shouldFilter:k,loop:g,disablePointerSelection:$=!1,vimBindings:N=!0,...O}=e,le=n.useId(),ae=n.useId(),oe=n.useId(),j=n.useRef(null),y=ut();D(()=>{if(s!==void 0){let r=s.trim();t.current.value=r,R.emit()}},[s]),D(()=>{y(6,ie)},[]);let R=n.useMemo(()=>({subscribe:r=>(d.current.add(r),()=>d.current.delete(r)),snapshot:()=>t.current,setState:(r,i,p)=>{var o,b,w;if(!Object.is(t.current[r],i)){if(t.current[r]=i,r==="search")W(),V(),y(1,_);else if(r==="value"&&(p||y(5,ie),((o=f.current)==null?void 0:o.value)!==void 0)){let C=i??"";(w=(b=f.current).onValueChange)==null||w.call(b,C);return}R.emit()}},emit:()=>{d.current.forEach(r=>r())}}),[]),T=n.useMemo(()=>({value:(r,i,p)=>{var o;i!==((o=u.current.get(r))==null?void 0:o.value)&&(u.current.set(r,{value:i,keywords:p}),t.current.filtered.items.set(r,ue(i,p)),y(2,()=>{V(),R.emit()}))},item:(r,i)=>(c.current.add(r),i&&(a.current.has(i)?a.current.get(i).add(r):a.current.set(i,new Set([r]))),y(3,()=>{W(),V(),t.current.value||_(),R.emit()}),()=>{u.current.delete(r),c.current.delete(r),t.current.filtered.items.delete(r);let p=q();y(4,()=>{W(),(p==null?void 0:p.getAttribute("id"))===r&&_(),R.emit()})}),group:r=>(a.current.has(r)||a.current.set(r,new Set),()=>{u.current.delete(r),a.current.delete(r)}),filter:()=>f.current.shouldFilter,label:h||e["aria-label"],disablePointerSelection:$,listId:le,inputId:oe,labelId:ae,listInnerRef:j}),[]);function ue(r,i){var p,o;let b=(o=(p=f.current)==null?void 0:p.filter)!=null?o:Qe;return r?b(r,t.current.search,i):0}function V(){if(!t.current.search||f.current.shouldFilter===!1)return;let r=t.current.filtered.items,i=[];t.current.filtered.groups.forEach(o=>{let b=a.current.get(o),w=0;b.forEach(C=>{let A=r.get(C);w=Math.max(A,w)}),i.push([o,w])});let p=j.current;F().sort((o,b)=>{var w,C;let A=o.getAttribute("id"),z=b.getAttribute("id");return((w=r.get(z))!=null?w:0)-((C=r.get(A))!=null?C:0)}).forEach(o=>{let b=o.closest(Z);b?b.appendChild(o.parentElement===b?o:o.closest(`${Z} > *`)):p.appendChild(o.parentElement===p?o:o.closest(`${Z} > *`))}),i.sort((o,b)=>b[1]-o[1]).forEach(o=>{let b=j.current.querySelector(`${U}[${M}="${encodeURIComponent(o[0])}"]`);b==null||b.parentElement.appendChild(b)})}function _(){let r=F().find(p=>p.getAttribute("aria-disabled")!=="true"),i=r==null?void 0:r.getAttribute(M);R.setState("value",i||void 0)}function W(){var r,i,p,o;if(!t.current.search||f.current.shouldFilter===!1){t.current.filtered.count=c.current.size;return}t.current.filtered.groups=new Set;let b=0;for(let w of c.current){let C=(i=(r=u.current.get(w))==null?void 0:r.value)!=null?i:"",A=(o=(p=u.current.get(w))==null?void 0:p.keywords)!=null?o:[],z=ue(C,A);t.current.filtered.items.set(w,z),z>0&&b++}for(let[w,C]of a.current)for(let A of C)if(t.current.filtered.items.get(A)>0){t.current.filtered.groups.add(w);break}t.current.filtered.count=b}function ie(){var r,i,p;let o=q();o&&(((r=o.parentElement)==null?void 0:r.firstChild)===o&&((p=(i=o.closest(U))==null?void 0:i.querySelector(Je))==null||p.scrollIntoView({block:"nearest"})),o.scrollIntoView({block:"nearest"}))}function q(){var r;return(r=j.current)==null?void 0:r.querySelector(`${re}[aria-selected="true"]`)}function F(){var r;return Array.from((r=j.current)==null?void 0:r.querySelectorAll(ve))}function J(r){let i=F()[r];i&&R.setState("value",i.getAttribute(M))}function Q(r){var i;let p=q(),o=F(),b=o.findIndex(C=>C===p),w=o[b+r];(i=f.current)!=null&&i.loop&&(w=b+r<0?o[o.length-1]:b+r===o.length?o[0]:o[b+r]),w&&R.setState("value",w.getAttribute(M))}function ce(r){let i=q(),p=i==null?void 0:i.closest(U),o;for(;p&&!o;)p=r>0?at(p,U):ot(p,U),o=p==null?void 0:p.querySelector(ve);o?R.setState("value",o.getAttribute(M)):Q(r)}let se=()=>J(F().length-1),de=r=>{r.preventDefault(),r.metaKey?se():r.altKey?ce(1):Q(1)},fe=r=>{r.preventDefault(),r.metaKey?J(0):r.altKey?ce(-1):Q(-1)};return n.createElement(I.div,{ref:l,tabIndex:-1,...O,"cmdk-root":"",onKeyDown:r=>{var i;if((i=O.onKeyDown)==null||i.call(O,r),!r.defaultPrevented)switch(r.key){case"n":case"j":{N&&r.ctrlKey&&de(r);break}case"ArrowDown":{de(r);break}case"p":case"k":{N&&r.ctrlKey&&fe(r);break}case"ArrowUp":{fe(r);break}case"Home":{r.preventDefault(),J(0);break}case"End":{r.preventDefault(),se();break}case"Enter":if(!r.nativeEvent.isComposing&&r.keyCode!==229){r.preventDefault();let p=q();if(p){let o=new Event(te);p.dispatchEvent(o)}}}}},n.createElement("label",{"cmdk-label":"",htmlFor:T.inputId,id:T.labelId,style:ct},h),B(e,r=>n.createElement(ge.Provider,{value:R},n.createElement(be.Provider,{value:T},r))))}),Xe=n.forwardRef((e,l)=>{var t,c;let a=n.useId(),u=n.useRef(null),d=n.useContext(xe),f=H(),h=we(e),m=(c=(t=h.current)==null?void 0:t.forceMount)!=null?c:d==null?void 0:d.forceMount;D(()=>{if(!m)return f.item(a,d==null?void 0:d.id)},[m]);let s=ke(a,u,[e.value,e.children,u],e.keywords),v=ne(),E=K(y=>y.value&&y.value===s.current),k=K(y=>m||f.filter()===!1?!0:y.search?y.filtered.items.get(a)>0:!0);n.useEffect(()=>{let y=u.current;if(!(!y||e.disabled))return y.addEventListener(te,g),()=>y.removeEventListener(te,g)},[k,e.onSelect,e.disabled]);function g(){var y,R;$(),(R=(y=h.current).onSelect)==null||R.call(y,s.current)}function $(){v.setState("value",s.current,!0)}if(!k)return null;let{disabled:N,value:O,onSelect:le,forceMount:ae,keywords:oe,...j}=e;return n.createElement(I.div,{ref:G([u,l]),...j,id:a,"cmdk-item":"",role:"option","aria-disabled":!!N,"aria-selected":!!E,"data-disabled":!!N,"data-selected":!!E,onPointerMove:N||f.disablePointerSelection?void 0:$,onClick:N?void 0:g},e.children)}),Ye=n.forwardRef((e,l)=>{let{heading:t,children:c,forceMount:a,...u}=e,d=n.useId(),f=n.useRef(null),h=n.useRef(null),m=n.useId(),s=H(),v=K(k=>a||s.filter()===!1?!0:k.search?k.filtered.groups.has(d):!0);D(()=>s.group(d),[]),ke(d,f,[e.value,e.heading,h]);let E=n.useMemo(()=>({id:d,forceMount:a}),[a]);return n.createElement(I.div,{ref:G([f,l]),...u,"cmdk-group":"",role:"presentation",hidden:v?void 0:!0},t&&n.createElement("div",{ref:h,"cmdk-group-heading":"","aria-hidden":!0,id:m},t),B(e,k=>n.createElement("div",{"cmdk-group-items":"",role:"group","aria-labelledby":t?m:void 0},n.createElement(xe.Provider,{value:E},k))))}),Ze=n.forwardRef((e,l)=>{let{alwaysRender:t,...c}=e,a=n.useRef(null),u=K(d=>!d.search);return!t&&!u?null:n.createElement(I.div,{ref:G([a,l]),...c,"cmdk-separator":"",role:"separator"})}),et=n.forwardRef((e,l)=>{let{onValueChange:t,...c}=e,a=e.value!=null,u=ne(),d=K(s=>s.search),f=K(s=>s.value),h=H(),m=n.useMemo(()=>{var s;let v=(s=h.listInnerRef.current)==null?void 0:s.querySelector(`${re}[${M}="${encodeURIComponent(f)}"]`);return v==null?void 0:v.getAttribute("id")},[]);return n.useEffect(()=>{e.value!=null&&u.setState("search",e.value)},[e.value]),n.createElement(I.input,{ref:l,...c,"cmdk-input":"",autoComplete:"off",autoCorrect:"off",spellCheck:!1,"aria-autocomplete":"list",role:"combobox","aria-expanded":!0,"aria-controls":h.listId,"aria-labelledby":h.labelId,"aria-activedescendant":m,id:h.inputId,type:"text",value:a?e.value:d,onChange:s=>{a||u.setState("search",s.target.value),t==null||t(s.target.value)}})}),tt=n.forwardRef((e,l)=>{let{children:t,label:c="Suggestions",...a}=e,u=n.useRef(null),d=n.useRef(null),f=H();return n.useEffect(()=>{if(d.current&&u.current){let h=d.current,m=u.current,s,v=new ResizeObserver(()=>{s=requestAnimationFrame(()=>{let E=h.offsetHeight;m.style.setProperty("--cmdk-list-height",E.toFixed(1)+"px")})});return v.observe(h),()=>{cancelAnimationFrame(s),v.unobserve(h)}}},[]),n.createElement(I.div,{ref:G([u,l]),...a,"cmdk-list":"",role:"listbox","aria-label":c,id:f.listId},B(e,h=>n.createElement("div",{ref:G([d,f.listInnerRef]),"cmdk-list-sizer":""},h)))}),rt=n.forwardRef((e,l)=>{let{open:t,onOpenChange:c,overlayClassName:a,contentClassName:u,container:d,...f}=e;return n.createElement(Ne,{open:t,onOpenChange:c},n.createElement(je,{container:d},n.createElement(Ae,{"cmdk-overlay":"",className:a}),n.createElement(Me,{"aria-label":e.label,"cmdk-dialog":"",className:u},n.createElement(ye,{ref:l,...f}))))}),nt=n.forwardRef((e,l)=>K(t=>t.filtered.count===0)?n.createElement(I.div,{ref:l,...e,"cmdk-empty":"",role:"presentation"}):null),lt=n.forwardRef((e,l)=>{let{progress:t,children:c,label:a="Loading...",...u}=e;return n.createElement(I.div,{ref:l,...u,"cmdk-loading":"",role:"progressbar","aria-valuenow":t,"aria-valuemin":0,"aria-valuemax":100,"aria-label":a},B(e,d=>n.createElement("div",{"aria-hidden":!0},d)))}),S=Object.assign(ye,{List:tt,Item:Xe,Input:et,Group:Ye,Separator:Ze,Dialog:rt,Empty:nt,Loading:lt});function at(e,l){let t=e.nextElementSibling;for(;t;){if(t.matches(l))return t;t=t.nextElementSibling}}function ot(e,l){let t=e.previousElementSibling;for(;t;){if(t.matches(l))return t;t=t.previousElementSibling}}function we(e){let l=n.useRef(e);return D(()=>{l.current=e}),l}var D=typeof window>"u"?n.useEffect:n.useLayoutEffect;function L(e){let l=n.useRef();return l.current===void 0&&(l.current=e()),l}function G(e){return l=>{e.forEach(t=>{typeof t=="function"?t(l):t!=null&&(t.current=l)})}}function K(e){let l=ne(),t=()=>e(l.snapshot());return n.useSyncExternalStore(l.subscribe,t,t)}function ke(e,l,t,c=[]){let a=n.useRef(),u=H();return D(()=>{var d;let f=(()=>{var m;for(let s of t){if(typeof s=="string")return s.trim();if(typeof s=="object"&&"current"in s)return s.current?(m=s.current.textContent)==null?void 0:m.trim():a.current}})(),h=c.map(m=>m.trim());u.value(e,f,h),(d=l.current)==null||d.setAttribute(M,f),a.current=f}),a}var ut=()=>{let[e,l]=n.useState(),t=L(()=>new Map);return D(()=>{t.current.forEach(c=>c()),t.current=new Map},[e]),(c,a)=>{t.current.set(c,a),l({})}};function it(e){let l=e.type;return typeof l=="function"?l(e.props):"render"in l?l.render(e.props):e}function B({asChild:e,children:l},t){return e&&n.isValidElement(l)?n.cloneElement(it(l),{ref:l.ref},t(l.props.children)):t(l)}var ct={position:"absolute",width:"1px",height:"1px",padding:"0",margin:"-1px",overflow:"hidden",clip:"rect(0, 0, 0, 0)",whiteSpace:"nowrap",borderWidth:"0"};const Ee=n.forwardRef(({className:e,...l},t)=>x.jsx(S,{ref:t,className:P("flex h-full w-full flex-col overflow-hidden rounded-md bg-popover text-popover-foreground",e),...l}));Ee.displayName=S.displayName;const Se=n.forwardRef(({className:e,...l},t)=>x.jsxs("div",{className:"flex items-center border-b px-3","cmdk-input-wrapper":"",children:[x.jsx(De,{className:"mr-2 h-4 w-4 shrink-0 opacity-50"}),x.jsx(S.Input,{ref:t,className:P("flex h-10 w-full rounded-md bg-transparent py-3 text-sm outline-none placeholder:text-muted-foreground disabled:cursor-not-allowed disabled:opacity-50",e),...l})]}));Se.displayName=S.Input.displayName;const Re=n.forwardRef(({className:e,...l},t)=>x.jsx(S.List,{ref:t,className:P("max-h-[300px] overflow-y-auto overflow-x-hidden",e),...l}));Re.displayName=S.List.displayName;const Ce=n.forwardRef((e,l)=>x.jsx(S.Empty,{ref:l,className:"py-6 text-center text-sm",...e}));Ce.displayName=S.Empty.displayName;const $e=n.forwardRef(({className:e,...l},t)=>x.jsx(S.Group,{ref:t,className:P("overflow-hidden p-1 text-foreground [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground",e),...l}));$e.displayName=S.Group.displayName;const st=n.forwardRef(({className:e,...l},t)=>x.jsx(S.Separator,{ref:t,className:P("-mx-1 h-px bg-border",e),...l}));st.displayName=S.Separator.displayName;const Ie=n.forwardRef(({className:e,...l},t)=>x.jsx(S.Item,{ref:t,className:P("relative flex cursor-default gap-2 select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none data-[disabled=true]:pointer-events-none data-[selected=true]:bg-accent data-[selected=true]:text-accent-foreground data-[disabled=true]:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",e),...l}));Ie.displayName=S.Item.displayName;const vt=({data:e,placeholder:l,onSelect:t,defaultValue:c,translate:a})=>{var v,E,k;const[u,d]=n.useState(!1),[f,h]=n.useState(c||""),m=n.useRef(!0);n.useEffect(()=>{if(c&&(m.current||c!==f)){const g=e.find($=>$.value===c);g&&(h(c),m.current||t(g))}m.current=!1},[c,e,f,t]);const s=g=>{const $=g.value===f?"":g.value;h($),t(g),d(!1)};return x.jsxs(qe,{open:u,onOpenChange:d,children:[x.jsx(Fe,{className:"w-full",children:x.jsxs(Le,{type:"button",variant:"outline",role:"combobox","aria-expanded":u,className:"w-full justify-between",children:[f?(v=e.find(g=>g.value===f))==null?void 0:v.label:l,x.jsx(Ke,{className:"opacity-50"})]})}),x.jsx(Ue,{className:"w-[var(--radix-popover-trigger-width)] p-0",children:x.jsxs(Ee,{children:[x.jsx(Se,{placeholder:((E=a==null?void 0:a.input)==null?void 0:E.search_placeholder)||"Search element...",className:"focus:border-none focus:ring-0 focus:outline-none"}),x.jsxs(Re,{children:[x.jsx(Ce,{children:((k=a==null?void 0:a.frontend)==null?void 0:k.no_element_found)||"No element found."}),x.jsx($e,{className:"max-h-[300px] overflow-y-auto",children:e.map(g=>x.jsxs(Ie,{value:g.value,onSelect:()=>s(g),children:[g.label,x.jsx(Pe,{className:P("ml-auto",f===g.value?"opacity-100":"opacity-0")})]},g.value))})]})]})})]})};export{vt as C};