@aiquants/select-box 0.2.0 โ†’ 0.2.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.
package/README.md CHANGED
@@ -90,7 +90,7 @@ Import the CSS in your application's stylesheet:
90
90
  ### SelectBox Props
91
91
 
92
92
  | Prop | Type | Required | Default | Description |
93
- |------|------|----------|---------|-------------|
93
+ | --- | --- | --- | --- | --- |
94
94
  | `options` | `Option[]` | Yes | - | Array of selectable options |
95
95
  | `value` | `Option \| Option[]` | No | `undefined` | Current selection (controlled) |
96
96
  | `onChange` | `(value: Option \| Option[] \| null) => void` | No | `undefined` | Selection change callback |
@@ -140,7 +140,7 @@ import levenshteinWorkerUrl from "@aiquants/fuzzy-search/worker/levenshteinWorke
140
140
  ## Dependencies
141
141
 
142
142
  | Package | Purpose |
143
- |---------|---------|
143
+ | --- | --- |
144
144
  | `@aiquants/fuzzy-search` | Web Worker-based fuzzy search engine |
145
145
  | `@aiquants/virtualscroll` | Virtual scrolling for large lists |
146
146
  | `tailwind-merge` | Tailwind CSS class conflict resolution |
package/dist/index.cjs CHANGED
@@ -1,10 +1,10 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const h=require("react"),se=require("@aiquants/fuzzy-search"),V=require("@aiquants/virtualscroll");function oe(r){const t=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(r){for(const n in r)if(n!=="default"){const c=Object.getOwnPropertyDescriptor(r,n);Object.defineProperty(t,n,c.get?c:{enumerable:!0,get:()=>r[n]})}}return t.default=r,Object.freeze(t)}const _=oe(h);var N={exports:{}},O={};var B;function le(){if(B)return O;B=1;var r=Symbol.for("react.transitional.element"),t=Symbol.for("react.fragment");function n(c,l,i){var f=null;if(i!==void 0&&(f=""+i),l.key!==void 0&&(f=""+l.key),"key"in l){i={};for(var d in l)d!=="key"&&(i[d]=l[d])}else i=l;return l=i.ref,{$$typeof:r,type:c,key:f,ref:l!==void 0?l:null,props:i}}return O.Fragment=t,O.jsx=n,O.jsxs=n,O}var T={};var W;function ce(){return W||(W=1,process.env.NODE_ENV!=="production"&&(function(){function r(e){if(e==null)return null;if(typeof e=="function")return e.$$typeof===te?null:e.displayName||e.name||null;if(typeof e=="string")return e;switch(e){case m:return"Fragment";case H:return"Profiler";case j:return"StrictMode";case Q:return"Suspense";case K:return"SuspenseList";case re:return"Activity"}if(typeof e=="object")switch(typeof e.tag=="number"&&console.error("Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue."),e.$$typeof){case x:return"Portal";case Z:return e.displayName||"Context";case X:return(e._context.displayName||"Context")+".Consumer";case q:var a=e.render;return e=e.displayName,e||(e=a.displayName||a.name||"",e=e!==""?"ForwardRef("+e+")":"ForwardRef"),e;case ee:return a=e.displayName||null,a!==null?a:r(e.type)||"Memo";case A:a=e._payload,e=e._init;try{return r(e(a))}catch{}}return null}function t(e){return""+e}function n(e){try{t(e);var a=!1}catch{a=!0}if(a){a=console;var b=a.error,p=typeof Symbol=="function"&&Symbol.toStringTag&&e[Symbol.toStringTag]||e.constructor.name||"Object";return b.call(a,"The provided key is an unsupported type %s. This value must be coerced to a string before using it here.",p),t(e)}}function c(e){if(e===m)return"<>";if(typeof e=="object"&&e!==null&&e.$$typeof===A)return"<...>";try{var a=r(e);return a?"<"+a+">":"<...>"}catch{return"<...>"}}function l(){var e=C.A;return e===null?null:e.getOwner()}function i(){return Error("react-stack-top-frame")}function f(e){if(D.call(e,"key")){var a=Object.getOwnPropertyDescriptor(e,"key").get;if(a&&a.isReactWarning)return!1}return e.key!==void 0}function d(e,a){function b(){I||(I=!0,console.error("%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://react.dev/link/special-props)",a))}b.isReactWarning=!0,Object.defineProperty(e,"key",{get:b,configurable:!0})}function w(){var e=r(this.type);return $[e]||($[e]=!0,console.error("Accessing element.ref was removed in React 19. ref is now a regular prop. It will be removed from the JSX Element type in a future release.")),e=this.props.ref,e!==void 0?e:null}function k(e,a,b,p,S,L){var E=b.ref;return e={$$typeof:v,type:e,key:a,props:b,_owner:p},(E!==void 0?E:null)!==null?Object.defineProperty(e,"ref",{enumerable:!1,get:w}):Object.defineProperty(e,"ref",{enumerable:!1,value:null}),e._store={},Object.defineProperty(e._store,"validated",{configurable:!1,enumerable:!1,writable:!0,value:0}),Object.defineProperty(e,"_debugInfo",{configurable:!1,enumerable:!1,writable:!0,value:null}),Object.defineProperty(e,"_debugStack",{configurable:!1,enumerable:!1,writable:!0,value:S}),Object.defineProperty(e,"_debugTask",{configurable:!1,enumerable:!1,writable:!0,value:L}),Object.freeze&&(Object.freeze(e.props),Object.freeze(e)),e}function g(e,a,b,p,S,L){var E=a.children;if(E!==void 0)if(p)if(ne(E)){for(p=0;p<E.length;p++)R(E[p]);Object.freeze&&Object.freeze(E)}else console.error("React.jsx: Static children should always be an array. You are likely explicitly calling React.jsxs or React.jsxDEV. Use the Babel transform instead.");else R(E);if(D.call(a,"key")){E=r(e);var y=Object.keys(a).filter(function(ae){return ae!=="key"});p=0<y.length?"{key: someKey, "+y.join(": ..., ")+": ...}":"{key: someKey}",Y[E+p]||(y=0<y.length?"{"+y.join(": ..., ")+": ...}":"{}",console.error(`A props object containing a "key" prop is being spread into JSX:
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const d=require("react"),ie=require("@aiquants/virtualscroll");var se=typeof document<"u"?document.currentScript:null;function me(e){const t=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const r in e)if(r!=="default"){const s=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,s.get?s:{enumerable:!0,get:()=>e[r]})}}return t.default=e,Object.freeze(t)}const C=me(d);var G={exports:{}},N={};var ne;function pe(){if(ne)return N;ne=1;var e=Symbol.for("react.transitional.element"),t=Symbol.for("react.fragment");function r(s,a,o){var n=null;if(o!==void 0&&(n=""+o),a.key!==void 0&&(n=""+a.key),"key"in a){o={};for(var l in a)l!=="key"&&(o[l]=a[l])}else o=a;return a=o.ref,{$$typeof:e,type:s,key:n,ref:a!==void 0?a:null,props:o}}return N.Fragment=t,N.jsx=r,N.jsxs=r,N}var H={};var ae;function ve(){return ae||(ae=1,process.env.NODE_ENV!=="production"&&(function(){function e(i){if(i==null)return null;if(typeof i=="function")return i.$$typeof===ee?null:i.displayName||i.name||null;if(typeof i=="string")return i;switch(i){case S:return"Fragment";case g:return"Profiler";case k:return"StrictMode";case M:return"Suspense";case X:return"SuspenseList";case K:return"Activity"}if(typeof i=="object")switch(typeof i.tag=="number"&&console.error("Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue."),i.$$typeof){case O:return"Portal";case P:return i.displayName||"Context";case w:return(i._context.displayName||"Context")+".Consumer";case A:var p=i.render;return i=i.displayName,i||(i=p.displayName||p.name||"",i=i!==""?"ForwardRef("+i+")":"ForwardRef"),i;case Z:return p=i.displayName||null,p!==null?p:e(i.type)||"Memo";case _:p=i._payload,i=i._init;try{return e(i(p))}catch{}}return null}function t(i){return""+i}function r(i){try{t(i);var p=!1}catch{p=!0}if(p){p=console;var W=p.error,F=typeof Symbol=="function"&&Symbol.toStringTag&&i[Symbol.toStringTag]||i.constructor.name||"Object";return W.call(p,"The provided key is an unsupported type %s. This value must be coerced to a string before using it here.",F),t(i)}}function s(i){if(i===S)return"<>";if(typeof i=="object"&&i!==null&&i.$$typeof===_)return"<...>";try{var p=e(i);return p?"<"+p+">":"<...>"}catch{return"<...>"}}function a(){var i=q.A;return i===null?null:i.getOwner()}function o(){return Error("react-stack-top-frame")}function n(i){if(u.call(i,"key")){var p=Object.getOwnPropertyDescriptor(i,"key").get;if(p&&p.isReactWarning)return!1}return i.key!==void 0}function l(i,p){function W(){R||(R=!0,console.error("%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://react.dev/link/special-props)",p))}W.isReactWarning=!0,Object.defineProperty(i,"key",{get:W,configurable:!0})}function c(){var i=e(this.type);return I[i]||(I[i]=!0,console.error("Accessing element.ref was removed in React 19. ref is now a regular prop. It will be removed from the JSX Element type in a future release.")),i=this.props.ref,i!==void 0?i:null}function v(i,p,W,F,V,te){var T=W.ref;return i={$$typeof:E,type:i,key:p,props:W,_owner:F},(T!==void 0?T:null)!==null?Object.defineProperty(i,"ref",{enumerable:!1,get:c}):Object.defineProperty(i,"ref",{enumerable:!1,value:null}),i._store={},Object.defineProperty(i._store,"validated",{configurable:!1,enumerable:!1,writable:!0,value:0}),Object.defineProperty(i,"_debugInfo",{configurable:!1,enumerable:!1,writable:!0,value:null}),Object.defineProperty(i,"_debugStack",{configurable:!1,enumerable:!1,writable:!0,value:V}),Object.defineProperty(i,"_debugTask",{configurable:!1,enumerable:!1,writable:!0,value:te}),Object.freeze&&(Object.freeze(i.props),Object.freeze(i)),i}function f(i,p,W,F,V,te){var T=p.children;if(T!==void 0)if(F)if(y(T)){for(F=0;F<T.length;F++)b(T[F]);Object.freeze&&Object.freeze(T)}else console.error("React.jsx: Static children should always be an array. You are likely explicitly calling React.jsxs or React.jsxDEV. Use the Babel transform instead.");else b(T);if(u.call(p,"key")){T=e(i);var j=Object.keys(p).filter(function(fe){return fe!=="key"});F=0<j.length?"{key: someKey, "+j.join(": ..., ")+": ...}":"{key: someKey}",Y[T+F]||(j=0<j.length?"{"+j.join(": ..., ")+": ...}":"{}",console.error(`A props object containing a "key" prop is being spread into JSX:
2
2
  let props = %s;
3
3
  <%s {...props} />
4
4
  React keys must be passed directly to JSX without using spread:
5
5
  let props = %s;
6
- <%s key={someKey} {...props} />`,p,E,y,E),Y[E+p]=!0)}if(E=null,b!==void 0&&(n(b),E=""+b),f(a)&&(n(a.key),E=""+a.key),"key"in a){b={};for(var M in a)M!=="key"&&(b[M]=a[M])}else b=a;return E&&d(b,typeof e=="function"?e.displayName||e.name||"Unknown":e),k(e,E,b,l(),S,L)}function R(e){u(e)?e._store&&(e._store.validated=1):typeof e=="object"&&e!==null&&e.$$typeof===A&&(e._payload.status==="fulfilled"?u(e._payload.value)&&e._payload.value._store&&(e._payload.value._store.validated=1):e._store&&(e._store.validated=1))}function u(e){return typeof e=="object"&&e!==null&&e.$$typeof===v}var s=h,v=Symbol.for("react.transitional.element"),x=Symbol.for("react.portal"),m=Symbol.for("react.fragment"),j=Symbol.for("react.strict_mode"),H=Symbol.for("react.profiler"),X=Symbol.for("react.consumer"),Z=Symbol.for("react.context"),q=Symbol.for("react.forward_ref"),Q=Symbol.for("react.suspense"),K=Symbol.for("react.suspense_list"),ee=Symbol.for("react.memo"),A=Symbol.for("react.lazy"),re=Symbol.for("react.activity"),te=Symbol.for("react.client.reference"),C=s.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,D=Object.prototype.hasOwnProperty,ne=Array.isArray,P=console.createTask?console.createTask:function(){return null};s={react_stack_bottom_frame:function(e){return e()}};var I,$={},z=s.react_stack_bottom_frame.bind(s,i)(),F=P(c(i)),Y={};T.Fragment=m,T.jsx=function(e,a,b){var p=1e4>C.recentlyCreatedOwnerStacks++;return g(e,a,b,!1,p?Error("react-stack-top-frame"):z,p?P(c(e)):F)},T.jsxs=function(e,a,b){var p=1e4>C.recentlyCreatedOwnerStacks++;return g(e,a,b,!0,p?Error("react-stack-top-frame"):z,p?P(c(e)):F)}})()),T}var U;function ie(){return U||(U=1,process.env.NODE_ENV==="production"?N.exports=le():N.exports=ce()),N.exports}var o=ie();function ue(r,t,n){const c=h.useMemo(()=>({threshold:.3,sortBy:"score",sortOrder:"desc",workerUrls:n}),[n]),l=h.useMemo(()=>["label"],[]),{setSearchTerm:i,filteredItems:f,isSearching:d}=se.useFuzzySearch(r,l,c);h.useEffect(()=>{i(t)},[t,i]);const w=h.useMemo(()=>{if(!t)return r;const k=t.toLowerCase(),g=[],R=[];for(const u of f){const s=u.item;s.label.toLowerCase()===k?g.push(s):R.push(s)}return[...g,...R]},[f,t,r]);return{filteredOptions:t?w:r,isSearching:d}}function fe({value:r,onChange:t,multiple:n}){const[c,l]=h.useState(!1),[i,f]=h.useState(""),d=h.useRef(null);h.useEffect(()=>{const u=s=>{d.current&&!d.current.contains(s.target)&&(l(!1),f(""))};return document.addEventListener("mousedown",u),()=>{document.removeEventListener("mousedown",u)}},[]);const w=h.useCallback(u=>{if(n){const s=Array.isArray(r)?r:r?[r]:[],v=s.some(m=>m.value===u.value);let x;v?x=s.filter(m=>m.value!==u.value):x=[...s,u],t?.(x)}else t?.(u),l(!1),f("")},[n,r,t]),k=h.useCallback(u=>{if(!n)return;const v=(Array.isArray(r)?r:r?[r]:[]).filter(x=>x.value!==u.value);t?.(v)},[n,r,t]),g=h.useCallback(()=>{t?.(n?[]:null),f(""),l(!1)},[n,t]),R=h.useCallback(()=>{l(u=>(u&&f(""),!u))},[]);return{isOpen:c,setIsOpen:l,query:i,setQuery:f,containerRef:d,handleSelect:w,handleRemove:k,handleClear:g,toggleOpen:R}}function de({title:r,titleId:t,...n},c){return _.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor","aria-hidden":"true","data-slot":"icon",ref:c,"aria-labelledby":t},n),r?_.createElement("title",{id:t},r):null,_.createElement("path",{fillRule:"evenodd",d:"M16.704 4.153a.75.75 0 0 1 .143 1.052l-8 10.5a.75.75 0 0 1-1.127.075l-4.5-4.5a.75.75 0 0 1 1.06-1.06l3.894 3.893 7.48-9.817a.75.75 0 0 1 1.05-.143Z",clipRule:"evenodd"}))}const J=_.forwardRef(de);function me({title:r,titleId:t,...n},c){return _.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor","aria-hidden":"true","data-slot":"icon",ref:c,"aria-labelledby":t},n),r?_.createElement("title",{id:t},r):null,_.createElement("path",{fillRule:"evenodd",d:"M5.22 8.22a.75.75 0 0 1 1.06 0L10 11.94l3.72-3.72a.75.75 0 1 1 1.06 1.06l-4.25 4.25a.75.75 0 0 1-1.06 0L5.22 9.28a.75.75 0 0 1 0-1.06Z",clipRule:"evenodd"}))}const be=_.forwardRef(me);function he({title:r,titleId:t,...n},c){return _.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor","aria-hidden":"true","data-slot":"icon",ref:c,"aria-labelledby":t},n),r?_.createElement("title",{id:t},r):null,_.createElement("path",{d:"M6.28 5.22a.75.75 0 0 0-1.06 1.06L8.94 10l-3.72 3.72a.75.75 0 1 0 1.06 1.06L10 11.06l3.72 3.72a.75.75 0 1 0 1.06-1.06L11.06 10l3.72-3.72a.75.75 0 0 0-1.06-1.06L10 8.94 6.28 5.22Z"}))}const G=_.forwardRef(he),ve=({option:r,isSelected:t,isFocused:n,onClick:c,multiple:l,style:i})=>o.jsxs("div",{role:"option","aria-selected":t,tabIndex:0,onKeyDown:f=>{(f.key==="Enter"||f.key===" ")&&c(r)},style:i,onClick:()=>c(r),className:`sb-option ${n?"sb-option--focused":""}
7
- ${t&&!l?"sb-option--selected":"sb-option--not-selected"}
8
- `,children:[l&&o.jsx("div",{className:`sb-checkbox ${t?"sb-checkbox--checked":"sb-checkbox--unchecked"}
9
- `,children:t&&o.jsx(J,{className:"sb-check-icon-white"})}),o.jsx("span",{className:"sb-option-label",children:r.label}),!l&&t&&o.jsx(J,{className:"sb-check-icon-blue"})]}),pe=({options:r,value:t,multiple:n,onSelect:c,className:l})=>{const[i,f]=h.useState(300),d=h.useRef(null),w=h.useRef(!1),k=s=>{w.current=!0,s.currentTarget.setPointerCapture(s.pointerId),s.preventDefault()},g=h.useCallback(s=>{if(!(w.current&&d.current))return;const v=d.current.getBoundingClientRect(),x=s.clientY-v.top;f(Math.max(100,Math.min(x,600)))},[]),R=h.useCallback(()=>{w.current=!1},[]);h.useEffect(()=>(document.addEventListener("pointermove",g),document.addEventListener("pointerup",R),()=>{document.removeEventListener("pointermove",g),document.removeEventListener("pointerup",R)}),[g,R]);const u=s=>n?(Array.isArray(t)?t:t?[t]:[]).some(x=>x.value===s.value):t?.value===s.value;return o.jsxs("div",{ref:d,className:`sb-dropdown ${l||""}`,style:{height:i},children:[r.length>0?o.jsx(V.VirtualScroll,{itemCount:r.length,getItem:s=>r[s],getItemHeight:()=>36,viewportSize:i,className:"h-full w-full",scrollBarOptions:{width:10,enableThumbDrag:!0,enableTrackClick:!0,tapScrollCircleOptions:{enabled:!0,renderVisual:V.tapScrollCircleSampleVisual}},behaviorOptions:{enableKeyboardNavigation:!0},children:(s,v)=>s?o.jsx(ve,{option:s,isSelected:u(s),onClick:c,multiple:n,style:{height:36}},s.value):null}):o.jsx("div",{className:"sb-no-options",children:"No options found"}),o.jsx("div",{onPointerDown:k,className:"sb-resize-handle",children:o.jsxs("svg",{viewBox:"0 0 10 10",className:"sb-resize-icon",children:[o.jsx("title",{children:"Resize handle"}),o.jsx("path",{d:"M10 10L10 0L0 10Z"})]})})]})},Ee=({value:r,multiple:t,query:n,onQueryChange:c,onRemove:l,onFocus:i,placeholder:f="Select...",disabled:d,isLoading:w,clearable:k,onClear:g,onToggle:R,autoFocus:u})=>{const s=h.useRef(null);h.useEffect(()=>{u&&s.current?.focus()},[u]);const v=Array.isArray(r)?r:r?[r]:[],x=m=>{m.key==="Backspace"&&!n&&v.length>0&&t&&l(v[v.length-1])};return o.jsxs("fieldset",{className:`sb-input-area ${d?"sb-input-area--disabled":"sb-input-area--active"}
10
- `,onMouseDown:m=>{const j=m.target;j!==s.current&&!j.closest("button")&&(m.preventDefault(),s.current?.focus())},children:[t&&v.map(m=>o.jsxs("span",{className:"sb-tag",children:[m.label,o.jsx("button",{type:"button",onClick:j=>{j.stopPropagation(),l(m)},className:"sb-tag-remove",children:o.jsx(G,{className:"h-3 w-3"})})]},m.value)),!t&&v.length>0&&!n&&o.jsx("span",{className:"sb-single-value",children:v[0].label}),o.jsx("input",{ref:s,type:"text",value:n,onChange:m=>c(m.target.value),onFocus:i,onKeyDown:x,placeholder:v.length===0?f:"",disabled:d,className:"sb-input"}),o.jsxs("div",{className:"sb-indicators",children:[k&&v.length>0&&!d&&o.jsx("button",{type:"button",onClick:m=>{m.stopPropagation(),g()},className:"sb-clear-button",children:o.jsx(G,{className:"h-4 w-4"})}),w?o.jsxs("svg",{className:"sb-loading-icon",xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",children:[o.jsx("title",{children:"Loading"}),o.jsx("circle",{className:"opacity-25",cx:"12",cy:"12",r:"10",stroke:"currentColor",strokeWidth:"4"}),o.jsx("path",{className:"opacity-75",fill:"currentColor",d:"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"})]}):o.jsx("button",{type:"button",disabled:d,onClick:m=>{m.stopPropagation(),R()},className:"sb-chevron-button",children:o.jsx(be,{className:"sb-chevron-icon"})})]})]})},ge=r=>{const{isOpen:t,setIsOpen:n,query:c,setQuery:l,containerRef:i,handleSelect:f,handleRemove:d,handleClear:w,toggleOpen:k}=fe(r),{filteredOptions:g,isSearching:R}=ue(r.options,c,r.workerUrls);return o.jsxs("div",{ref:i,className:`sb-container ${r.className||""}`,children:[o.jsx(Ee,{value:r.value,multiple:r.multiple,query:c,onQueryChange:u=>{l(u),t||n(!0)},onRemove:d,onClear:w,onFocus:()=>n(!0),placeholder:r.placeholder,disabled:r.disabled,isLoading:R,clearable:r.clearable,onToggle:k,autoFocus:r.autoFocus}),t&&!r.disabled&&o.jsx(pe,{options:g,value:r.value,multiple:r.multiple,onSelect:f})]})};exports.SelectBox=ge;
6
+ <%s key={someKey} {...props} />`,F,T,j,T),Y[T+F]=!0)}if(T=null,W!==void 0&&(r(W),T=""+W),n(p)&&(r(p.key),T=""+p.key),"key"in p){W={};for(var re in p)re!=="key"&&(W[re]=p[re])}else W=p;return T&&l(W,typeof i=="function"?i.displayName||i.name||"Unknown":i),v(i,T,W,a(),V,te)}function b(i){m(i)?i._store&&(i._store.validated=1):typeof i=="object"&&i!==null&&i.$$typeof===_&&(i._payload.status==="fulfilled"?m(i._payload.value)&&i._payload.value._store&&(i._payload.value._store.validated=1):i._store&&(i._store.validated=1))}function m(i){return typeof i=="object"&&i!==null&&i.$$typeof===E}var h=d,E=Symbol.for("react.transitional.element"),O=Symbol.for("react.portal"),S=Symbol.for("react.fragment"),k=Symbol.for("react.strict_mode"),g=Symbol.for("react.profiler"),w=Symbol.for("react.consumer"),P=Symbol.for("react.context"),A=Symbol.for("react.forward_ref"),M=Symbol.for("react.suspense"),X=Symbol.for("react.suspense_list"),Z=Symbol.for("react.memo"),_=Symbol.for("react.lazy"),K=Symbol.for("react.activity"),ee=Symbol.for("react.client.reference"),q=h.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,u=Object.prototype.hasOwnProperty,y=Array.isArray,L=console.createTask?console.createTask:function(){return null};h={react_stack_bottom_frame:function(i){return i()}};var R,I={},D=h.react_stack_bottom_frame.bind(h,o)(),U=L(s(o)),Y={};H.Fragment=S,H.jsx=function(i,p,W){var F=1e4>q.recentlyCreatedOwnerStacks++;return f(i,p,W,!1,F?Error("react-stack-top-frame"):D,F?L(s(i)):U)},H.jsxs=function(i,p,W){var F=1e4>q.recentlyCreatedOwnerStacks++;return f(i,p,W,!0,F?Error("react-stack-top-frame"):D,F?L(s(i)):U)}})()),H}var oe;function ke(){return oe||(oe=1,process.env.NODE_ENV==="production"?G.exports=pe():G.exports=ve()),G.exports}var x=ke(),Q=class{constructor(e=2,t="[fuzzy-search]",r=console){this.level=e,this.prefix=t,this.impl=r}setLevel(e){this.level=e}setImplementation(e){this.impl=e}setPrefix(e){this.prefix=e}formatMessage(e){return typeof e=="string"?[`${this.prefix} ${e}`]:[this.prefix,e]}debug(e,...t){this.level<=0&&this.impl.debug(...this.formatMessage(e),...t)}info(e,...t){this.level<=1&&this.impl.info(...this.formatMessage(e),...t)}warn(e,...t){this.level<=2&&this.impl.warn(...this.formatMessage(e),...t)}error(e,...t){this.level<=3&&this.impl.error(...this.formatMessage(e),...t)}},z={threshold:.4,caseSensitive:!1,learningWeight:1.2,debounceMs:300,multiTermOperator:"or",autoSearchOnIndexRebuild:!0,customWeights:{},ngramSize:2,minNgramOverlap:1,sortBy:"relevance",sortOrder:"desc",enableIndexFiltering:!0,enableLevenshtein:!0,parallelSearchStrategy:"balanced",logLevel:2,indexWorkerOptions:{strategy:"hybrid",threshold:.4,ngramOverlapThreshold:.3,minCandidatesRatio:.1,maxCandidatesRatio:.5,jaroWinklerPrefix:.1,maxResults:1e3,relevanceFieldWeight:.2,relevancePerfectMatchBonus:.1},levenshteinWorkerOptions:{threshold:.3,lengthSimilarityThreshold:.1,partialMatchBonus:.1,lengthDiffPenalty:1,maxResults:1e3,relevanceFieldWeight:.15}},le="INDEX_DATA_MISMATCH",xe="LEVENSHTEIN_DATA_MISMATCH",ue=new WeakMap,be=0,we=e=>{let t=ue.get(e);if(t)return t;let r;try{let s=JSON.stringify(e),a=2166136261,o=-624069552;for(let n=0;n<s.length;n++){let l=s.charCodeAt(n);a=Math.imul(a^l,16777619)>>>0,o=Math.imul(o^l,16777619)>>>0}r=`${a.toString(36)}-${o.toString(36)}`}catch{r=`ref-${++be}`}return ue.set(e,r),r},de=(e,t)=>{if(!e)return null;let r=e.includes(".ts")?`../worker/${t}.ts`:`./worker/${t}.mjs`;return new URL(r,e)},ge=class J{constructor(t){this.indexWorker=null,this.levenshteinWorker=null,this.initializationPromise=null,this.referenceCount=0,this.lastIndexedDataHash=null,this.buildingDataHash=null,this.buildingPromise=null,this.lastLevenshteinDataHash=null,this.id=t;let r=t!=="default"?`[GlobalWorkerManager:${t}]`:"[GlobalWorkerManager]";this.logger=new Q(2,r)}static getInstance(t="default"){let r=J.instances.get(t);return r||(r=new J(t),J.instances.set(t,r)),r}getLastIndexedDataHash(){return this.lastIndexedDataHash}getLastLevenshteinDataHash(){return this.lastLevenshteinDataHash}setLastLevenshteinDataHash(t){this.lastLevenshteinDataHash=t}setLastIndexedDataHash(t){this.lastIndexedDataHash=t}getBuildingPromise(t){return this.buildingDataHash===t?this.buildingPromise:null}setBuildingPromise(t,r){this.buildingDataHash=t,this.buildingPromise=r,r.finally(()=>{this.buildingDataHash===t&&(this.buildingDataHash=null,this.buildingPromise=null)}).catch(()=>{})}async getWorkers(t){return t.logLevel!==void 0&&this.logger.setLevel(t.logLevel),t.logger&&this.logger.setImplementation(t.logger),this.referenceCount++,this.indexWorker&&this.levenshteinWorker?(this.logger.debug(`๐Ÿ”ง Using existing global Workers (ref count: ${this.referenceCount})`),t.logLevel!==void 0&&(this.indexWorker.postMessage({type:"setLogLevel",id:"system",logLevel:t.logLevel,workerId:this.id}),this.levenshteinWorker.postMessage({type:"setLogLevel",id:"system",logLevel:t.logLevel,workerId:this.id})),{indexWorker:this.indexWorker,levenshteinWorker:this.levenshteinWorker}):(this.initializationPromise||(this.initializationPromise=this.initializeWorkers(t)),await this.initializationPromise,this.indexWorker&&this.levenshteinWorker||(this.initializationPromise=null),this.indexWorker&&this.levenshteinWorker&&t.logLevel!==void 0&&(this.indexWorker.postMessage({type:"setLogLevel",id:"system",logLevel:t.logLevel,workerId:this.id}),this.levenshteinWorker.postMessage({type:"setLogLevel",id:"system",logLevel:t.logLevel,workerId:this.id})),{indexWorker:this.indexWorker,levenshteinWorker:this.levenshteinWorker})}async initializeWorkers(t){if(typeof Worker>"u")return;let r=typeof document>"u"?require("url").pathToFileURL(__filename).href:se&&se.tagName.toUpperCase()==="SCRIPT"&&se.src||new URL("index.cjs",document.baseURI).href;try{if(!this.indexWorker){let s=t.workerUrls?.indexWorker?new URL(t.workerUrls.indexWorker,window.location.origin):de(r,"indexWorker");s?(this.logger.debug("๐Ÿ”ง Global Index Worker URL:",s.toString()),this.indexWorker=new Worker(s,{type:"module"}),this.logger.info("๐Ÿ”ง Global Index Worker: Initialized successfully")):this.logger.warn("โš ๏ธ Global Index Worker: default worker URL cannot be resolved in a CJS build. Specify options.workerUrls.indexWorker explicitly.")}if(!this.levenshteinWorker){let s=t.workerUrls?.levenshteinWorker?new URL(t.workerUrls.levenshteinWorker,window.location.origin):de(r,"levenshteinWorker");s?(this.logger.debug("๐Ÿ”ง Global Levenshtein Worker URL:",s.toString()),this.levenshteinWorker=new Worker(s,{type:"module"}),this.logger.info("๐Ÿ”ง Global Levenshtein Worker: Initialized successfully")):this.logger.warn("โš ๏ธ Global Levenshtein Worker: default worker URL cannot be resolved in a CJS build. Specify options.workerUrls.levenshteinWorker explicitly.")}}catch(s){this.logger.warn("โš ๏ธ Failed to initialize global Workers:",s)}}releaseReference(){this.referenceCount--,this.logger.debug(`๐Ÿ”ง Worker reference released (ref count: ${this.referenceCount})`)}dispose(){this.indexWorker&&(this.indexWorker.terminate(),this.indexWorker=null),this.levenshteinWorker&&(this.levenshteinWorker.terminate(),this.levenshteinWorker=null),this.initializationPromise=null,this.referenceCount=0,this.lastIndexedDataHash=null,this.lastLevenshteinDataHash=null,this.logger.info("๐Ÿ”ง Global Workers disposed")}};ge.instances=new Map;var $=ge,ye=class{constructor(){this.listeners=new Map,this.logger=new Q(2)}setLogger(e){this.logger=e}on(e,t){this.listeners.has(e)||this.listeners.set(e,new Set),this.listeners.get(e)?.add(t)}off(e,t){let r=this.listeners.get(e);r&&r.delete(t)}emit(e,t){let r=this.listeners.get(e);r&&r.forEach(s=>{try{s(t)}catch(a){this.logger.error(`โŒ Error in event listener for ${e}:`,a)}})}removeAllListeners(){this.listeners.clear()}},Se=class{constructor(e={}){this.indexWorker=null,this.levenshteinWorker=null,this.searchHistory=[],this.learningData={fieldWeights:{},queryPatterns:{},userPreferences:{preferredThreshold:.4,frequentFields:[],searchStyle:"fuzzy",lastUsedOptions:{}},performanceMetrics:{averageSearchTime:{},indexBuildTime:0}},this.instanceId=`${Date.now().toString(36)}${Math.random().toString(36).slice(2,8)}`,this.requestId=0,this.pendingRequests=new Map,this.eventEmitter=new ye,this.isIndexBuilt=!1,this.lastIndexedDataHash=null,this.stats={totalSearches:0,averageSearchTime:0,popularQueries:[],performanceBySize:{},workers:{index:{stats:{}},levenshtein:{stats:{}}}},this.isDisposed=!1,this.cleanupTimerId=null,this.defaultOptions={...z,...e,indexWorkerOptions:{...z.indexWorkerOptions,...e.indexWorkerOptions},levenshteinWorkerOptions:{...z.levenshteinWorkerOptions,...e.levenshteinWorkerOptions}},e.threshold!==void 0&&(e.levenshteinWorkerOptions||(this.defaultOptions.levenshteinWorkerOptions={...this.defaultOptions.levenshteinWorkerOptions,threshold:e.threshold}),e.indexWorkerOptions||(this.defaultOptions.indexWorkerOptions={...this.defaultOptions.indexWorkerOptions,threshold:e.threshold}));let t=this.defaultOptions,r="[fuzzy-search]";t.instanceName?r=`[fuzzy-search:${t.instanceName}]`:t.workerId&&(r=`[fuzzy-search:${t.workerId}]`),this.logger=new Q(t.logLevel??2,r,t.logger??console),this.eventEmitter.setLogger(this.logger),this.handleIndexWorkerMessageBound=this.handleIndexWorkerMessage.bind(this),this.handleIndexWorkerErrorBound=this.handleIndexWorkerError.bind(this),this.handleLevenshteinWorkerMessageBound=this.handleLevenshteinWorkerMessage.bind(this),this.handleLevenshteinWorkerErrorBound=this.handleLevenshteinWorkerError.bind(this),this.loadLearningData(),this.workersInitialized=this.initializeWorkers(),this.cleanupTimerId=setInterval(()=>this.cleanupPendingRequests(),3e4)}async initializeWorkers(){if(!(typeof Worker>"u"))try{let e=await $.getInstance(this.defaultOptions.workerId).getWorkers(this.defaultOptions);if(this.isDisposed){this.logger.debug("๐Ÿ”ง Manager disposed before worker initialization completed");return}this.indexWorker=e.indexWorker,this.levenshteinWorker=e.levenshteinWorker,this.indexWorker&&(this.indexWorker.addEventListener("message",this.handleIndexWorkerMessageBound),this.indexWorker.addEventListener("error",this.handleIndexWorkerErrorBound),this.indexWorker.addEventListener("error",t=>{this.logger.error("๐Ÿ”ง Index Worker Error (Event Listener):",t)})),this.levenshteinWorker&&(this.levenshteinWorker.addEventListener("message",this.handleLevenshteinWorkerMessageBound),this.levenshteinWorker.addEventListener("error",this.handleLevenshteinWorkerErrorBound),this.levenshteinWorker.addEventListener("error",t=>{this.logger.error("๐Ÿ”ง Levenshtein Worker Error (Event Listener):",t)})),this.eventEmitter.emit("workers:initialized",{indexWorker:!!this.indexWorker,levenshteinWorker:!!this.levenshteinWorker}),await this.testWorkerConnectivity()}catch(e){this.logger.warn("โš ๏ธ Failed to initialize Workers:",e)}}async testWorkerConnectivity(){try{let e=[];this.indexWorker&&e.push(this.pingWorker(this.indexWorker,"index")),this.levenshteinWorker&&e.push(this.pingWorker(this.levenshteinWorker,"levenshtein")),await Promise.all(e)}catch(e){this.logger.error("๐Ÿ”ง Worker connectivity test failed:",e)}}async pingWorker(e,t){let r=`ping-${t}-${this.instanceId}-${Date.now()}`;await new Promise((s,a)=>{let o=setTimeout(()=>{this.logger.warn(`๐Ÿ”ง ${t==="index"?"Index":"Levenshtein"} Worker: Ping timeout`),e.removeEventListener("message",n),a(new Error(`${t==="index"?"Index":"Levenshtein"} Worker ping timeout`))},5e3),n=l=>{let c=l.data;c.type==="pong"&&c.id===r&&(clearTimeout(o),e.removeEventListener("message",n),this.logger.debug(`๐Ÿ”ง ${t==="index"?"Index":"Levenshtein"} Worker: Ping successful`),s())};e.addEventListener("message",n),this.logger.debug(`๐Ÿ”ง ${t==="index"?"Index":"Levenshtein"} Worker: Sending ping message:`,r),e.postMessage({type:"ping",id:r})})}handleIndexWorkerMessage(e){let t=e.data;if(this.logger.debug("๐Ÿ”ง Index Worker message received:",t.type,t),t.type==="indexSearchResults"){let r=this.pendingRequests.get(t.id);r&&(this.pendingRequests.delete(t.id),t.error?r.reject(new Error(t.error)):r.resolve(t.results||[])),t.stats&&(this.stats.workers.index.stats=t.stats,this.eventEmitter.emit("worker:statsUpdated",{worker:"index",stats:this.stats.workers.index.stats})),this.eventEmitter.emit("indexWorker:searchCompleted",{requestId:t.id,resultsCount:t.results?.length||0,processingTime:t.processingTime})}else if(t.type==="error"){let r=this.pendingRequests.get(t.id);r&&(this.pendingRequests.delete(t.id),r.reject(new Error(t.error||"Index Worker error"))),this.logger.error("โŒ Index Worker reported error:",{requestId:t.id,message:t.error,processingTime:t.processingTime}),this.eventEmitter.emit("indexWorker:error",{requestId:t.id,error:t.error,processingTime:t.processingTime})}else t.type==="indexReady"?(this.logger.info("โœ… Index Worker: Index ready notification received",t),t.stats&&(this.stats.workers.index.stats=t.stats,this.eventEmitter.emit("worker:statsUpdated",{worker:"index",stats:this.stats.workers.index.stats}))):t.type==="pong"||t.type==="stats"&&t.stats&&(this.stats.workers.index.stats=t.stats,this.eventEmitter.emit("worker:statsUpdated",{worker:"index",stats:this.stats.workers.index.stats}));this.eventEmitter.emit("indexWorker:message",t)}handleIndexWorkerError(e){this.logger.error("๐Ÿ”ง Index Worker Error:",{message:e.message,filename:e.filename,lineno:e.lineno,colno:e.colno,error:e.error,type:e.type}),this.eventEmitter.emit("indexWorker:error",e)}handleLevenshteinWorkerMessage(e){let t=e.data;if(this.logger.debug("๐Ÿ”ง Levenshtein Worker message received:",t.type,"stats present:",!!t.stats),t.type==="levenshteinSearch"){let r=this.pendingRequests.get(t.id);r&&(this.pendingRequests.delete(t.id),t.error?r.reject(new Error(t.error)):r.resolve(t.results||[])),t.stats&&(this.stats.workers.levenshtein.stats=t.stats,this.eventEmitter.emit("worker:statsUpdated",{worker:"levenshtein",stats:this.stats.workers.levenshtein.stats})),this.eventEmitter.emit("levenshteinWorker:searchCompleted",{requestId:t.id,processingTime:t.processingTime,workerType:t.workerType,operationMeta:t.operationMeta})}else if(t.type==="error"){let r=this.pendingRequests.get(t.id);r&&(this.pendingRequests.delete(t.id),r.reject(new Error(t.error||"Levenshtein Worker error"))),this.logger.error("โŒ Levenshtein Worker reported error:",{requestId:t.id,message:t.error,processingTime:t.processingTime}),this.eventEmitter.emit("levenshteinWorker:error",{requestId:t.id,error:t.error,processingTime:t.processingTime})}else t.type==="pong"||t.type==="stats"&&t.stats&&(this.stats.workers.levenshtein.stats=t.stats,this.eventEmitter.emit("worker:statsUpdated",{worker:"levenshtein",stats:this.stats.workers.levenshtein.stats}));this.eventEmitter.emit("levenshteinWorker:message",t)}handleLevenshteinWorkerError(e){this.logger.error("๐Ÿ”ง Levenshtein Worker Error:",{message:e.message,filename:e.filename,lineno:e.lineno,colno:e.colno,error:e.error,type:e.type}),this.eventEmitter.emit("levenshteinWorker:error",e)}isLocalStorageAvailable(){try{return typeof window<"u"&&window.localStorage!==void 0}catch{return!1}}loadLearningData(){try{if(this.isLocalStorageAvailable()){let e=localStorage.getItem("fuzzy-search-learning-data");if(e){let t=JSON.parse(e);t&&typeof t=="object"&&t.queryPatterns&&typeof t.queryPatterns=="object"&&t.userPreferences&&t.performanceMetrics&&typeof t.performanceMetrics.averageSearchTime=="object"?this.learningData=t:(this.logger.warn("โš ๏ธ Stored learning data has an unexpected shape. Reinitializing with defaults."),this.initializeDefaultLearningData())}else this.initializeDefaultLearningData()}else this.initializeDefaultLearningData()}catch(e){this.logger.warn("โš ๏ธ Failed to load learning data:",e),this.initializeDefaultLearningData()}}initializeDefaultLearningData(){this.learningData={fieldWeights:{},queryPatterns:{},userPreferences:{preferredThreshold:this.defaultOptions.threshold,frequentFields:[],searchStyle:"fuzzy",lastUsedOptions:{}},performanceMetrics:{averageSearchTime:{},indexBuildTime:0}}}saveLearningData(){try{this.isLocalStorageAvailable()&&localStorage.setItem("fuzzy-search-learning-data",JSON.stringify(this.learningData))}catch(e){this.logger.warn("โš ๏ธ Failed to save learning data:",e)}}async search(e,t,r,s){if(!e.trim())return this.logger.debug("๐Ÿšซ search skipped for empty query"),[];let a=performance.now(),o={...this.defaultOptions,...s};s?.threshold!==void 0&&(s.levenshteinWorkerOptions||(o.levenshteinWorkerOptions={...o.levenshteinWorkerOptions,threshold:s.threshold}),s.indexWorkerOptions||(o.indexWorkerOptions={...o.indexWorkerOptions,threshold:s.threshold})),this.logger.debug(`๐Ÿš€ FuzzySearchManager.search called: query="${e}", items.length=${t.length}`),this.eventEmitter.emit("search:start",{query:e,options:o});try{if(await this.workersInitialized,this.isDisposed)return this.logger.debug("๐Ÿšซ search skipped because manager is disposed"),[];let n=this.generateDataHash(t,r),l=$.getInstance(this.defaultOptions.workerId),c=l.getLastIndexedDataHash();if(c!==n){let m=l.getBuildingPromise(n);if(m)this.logger.debug("๐Ÿ”ง Index build already in progress globally, waiting..."),await m,this.isIndexBuilt=!0,this.lastIndexedDataHash=n;else{this.logger.debug(`๐Ÿ”ง Building index: isIndexBuilt=${this.isIndexBuilt}, dataChanged=${c!==n}`);let h=(async()=>{await this.buildIndex(t,r,o),this.isIndexBuilt=!0,this.lastIndexedDataHash=n,l.setLastIndexedDataHash(n)})();l.setBuildingPromise(n,h),await h}}else this.isIndexBuilt?this.logger.debug("๐Ÿ”ง Index already built for current data, skipping rebuild"):(this.logger.debug("๐Ÿ”ง Index already built globally for current data, skipping rebuild"),this.isIndexBuilt=!0,this.lastIndexedDataHash=n);if(!(this.indexWorker&&this.levenshteinWorker)){if(this.isDisposed)return this.logger.debug("๐Ÿšซ search skipped because manager is disposed"),[];throw new Error("Web Workers are not available or not initialized.")}let v=await this.searchParallel(e,t,r,o,n),f=performance.now()-a;this.updateStats(e,f),this.updateLearningData(e,t.length,f);let b={results:v,totalItems:t.length,processingTime:f,query:e,options:o};return this.eventEmitter.emit("search:complete",b),v}catch(n){let l=n instanceof Error?n:new Error("Unknown search error");throw this.eventEmitter.emit("search:error",{error:l,query:e}),l}}async buildIndex(e,t,r){if(this.isDisposed){this.logger.debug("๐Ÿšซ buildIndex skipped because manager is disposed");return}if(!this.indexWorker){if(this.isDisposed){this.logger.debug("๐Ÿšซ buildIndex skipped because manager is disposed");return}throw new Error("Index Worker not available")}let s=`build-index-${this.instanceId}-${++this.requestId}`;this.logger.debug(`๐Ÿ“ค Building index: requestId=${s}`);let a={type:"buildIndex",id:s,items:e,searchFields:t,options:this.toWorkerSafeOptions(r),dataHash:this.generateDataHash(e,t)};return new Promise((o,n)=>{let l=null,c=f=>{let b=f;b.type==="indexReady"&&b.id===s&&(this.logger.info(`โœ… Index Worker: Index built successfully (requestId=${s})`),this.logger.debug(`๐ŸŽฏ buildIndex: Match found! Resolving promise for requestId=${s}`),this.eventEmitter.off("indexWorker:message",c),this.eventEmitter.off("indexWorker:message",v),l&&(clearTimeout(l),l=null),o())},v=f=>{let b=f;b.type==="error"&&b.id===s&&(this.logger.warn(`โŒ buildIndex: Worker reported error for requestId=${s}`,b.error),this.eventEmitter.off("indexWorker:message",c),this.eventEmitter.off("indexWorker:message",v),l&&(clearTimeout(l),l=null),n(new Error(b.error||"Index Worker error")))};this.eventEmitter.on("indexWorker:message",c),this.eventEmitter.on("indexWorker:message",v),this.indexWorker?.postMessage(a),l=setTimeout(()=>{this.eventEmitter.off("indexWorker:message",c),this.eventEmitter.off("indexWorker:message",v),l=null,n(new Error("Index build timeout"))},6e4)})}async searchParallel(e,t,r,s,a){if(this.isDisposed)return this.logger.debug("๐Ÿšซ searchParallel skipped because manager is disposed"),[];this.logger.debug(`๐ŸŒ searchParallel: query="${e}", items.length=${t.length}`);let{enableIndexFiltering:o,enableLevenshtein:n}=s;if(!(o||n))return this.logger.warn("โš ๏ธ Both search stages are disabled. Returning empty results."),[];let l=o?this.runIndexStage(e,t,r,s,a):Promise.resolve({stage:"index",results:[],processingTime:0,confidence:0,candidatesProcessed:0}),c=n?this.runLevenshteinStage(e,t,r,s,a):Promise.resolve({stage:"levenshtein",results:[],processingTime:0,confidence:0,candidatesProcessed:0}),[v,f]=await Promise.all([l,c]),b=this.mergeParallelResults(v,f,s.parallelSearchStrategy||"balanced",s);return this.logger.debug(`๐Ÿ”ง Parallel search completed: Index=${v.results.length}, Levenshtein=${f.results.length}, Merged=${b.results.length}`),b.results}async runIndexStage(e,t,r,s,a){let o=()=>{let n=`index-${this.instanceId}-${++this.requestId}`;this.logger.debug(`๐Ÿ“ค Index Stage: requestId=${n}`);let l={type:"indexSearch",id:n,query:e,searchFields:r,options:this.toWorkerSafeOptions(s),dataHash:a};return this.executeWorkerStage(this.indexWorker,l,{stage:"index",confidence:.8,timeoutMessage:"Index search timeout",unavailableMessage:"Index Worker not available"})};try{return await o()}catch(n){if(!(n instanceof Error?n.message:String(n)).includes(le))throw n;this.logger.warn("โš ๏ธ Index Stage: shared index was replaced by another dataset. Rebuilding and retrying..."),await this.rebuildSharedIndex(t,r,s,a);try{return await o()}catch(l){if(!(l instanceof Error?l.message:String(l)).includes(le))throw l;return this.logger.warn("โš ๏ธ Index Stage: index is still contended by another dataset. Continuing without index results."),{stage:"index",results:[],processingTime:0,confidence:0,candidatesProcessed:0}}}}async rebuildSharedIndex(e,t,r,s){let a=$.getInstance(this.defaultOptions.workerId),o=a.getBuildingPromise(s);if(o){await o;return}let n=(async()=>{await this.buildIndex(e,t,r),a.setLastIndexedDataHash(s)})();a.setBuildingPromise(s,n),await n}async runLevenshteinStage(e,t,r,s,a){let o=$.getInstance(this.defaultOptions.workerId),n=c=>{let v=`levenshtein-${this.instanceId}-${++this.requestId}`;this.logger.debug(`๐Ÿ“ค Levenshtein Stage: requestId=${v}, includeItems=${c}`);let f={type:"levenshteinSearch",id:v,query:e,items:c?t:void 0,searchFields:r,options:this.toWorkerSafeOptions(s),dataHash:a};return this.executeWorkerStage(this.levenshteinWorker,f,{stage:"levenshtein",confidence:.9,timeoutMessage:"Levenshtein search timeout",unavailableMessage:"Levenshtein Worker not available"})},l=o.getLastLevenshteinDataHash()!==a;try{let c=await n(l);return l&&o.setLastLevenshteinDataHash(a),c}catch(c){let v=c instanceof Error?c.message:String(c);if(l||!v.includes(xe))throw c;this.logger.warn("โš ๏ธ Levenshtein Stage: worker dataset cache was replaced by another dataset. Retrying with items...");let f=await n(!0);return o.setLastLevenshteinDataHash(a),f}}executeWorkerStage(e,t,r){if(!e)throw new Error(r.unavailableMessage);return new Promise((s,a)=>{let o=setTimeout(()=>{this.pendingRequests.has(t.id)&&(this.pendingRequests.delete(t.id),a(new Error(r.timeoutMessage)))},3e4);this.pendingRequests.set(t.id,{resolve:n=>{clearTimeout(o),s({stage:r.stage,results:n,processingTime:0,confidence:r.confidence,candidatesProcessed:n.length})},reject:n=>{clearTimeout(o),a(n)},timestamp:Date.now()}),e.postMessage(t)})}mergeParallelResults(e,t,r,s){let a=[];switch(r){case"index-first":a=e.results.length>0?e.results:t.results;break;case"levenshtein-first":a=t.results.length>0?t.results:e.results;break;default:a=this.mergeByScore([...e.results,...t.results],s);break}return{results:a,totalProcessingTime:e.processingTime+t.processingTime,indexStage:e,levenshteinStage:t,mergeStrategy:r,mergeQuality:.8}}mergeByScore(e,t){let r=new Map;e.forEach(n=>{if(n.originalIndex!==void 0){let l=r.get(n.originalIndex);(!l||n.score>l.score)&&r.set(n.originalIndex,n)}});let s=Array.from(r.values()),a=t.sortBy||z.sortBy,o=t.sortOrder||z.sortOrder;return a==="original"?s.sort((n,l)=>(n.originalIndex??0)-(l.originalIndex??0)):s.sort((n,l)=>o==="asc"?n.score-l.score:l.score-n.score)}generateDataHash(e,t){return`${e.length}|${t.join(",")}|${we(e)}`}toWorkerSafeOptions(e){if(!e.logger)return e;let{logger:t,...r}=e;return r}updateStats(e,t){this.stats.totalSearches++,this.stats.averageSearchTime=(this.stats.averageSearchTime*(this.stats.totalSearches-1)+t)/this.stats.totalSearches}updateLearningData(e,t,r){if(this.learningData.queryPatterns[e]=(this.learningData.queryPatterns[e]??0)+1,Object.keys(this.learningData.queryPatterns).length>200){let o=Object.entries(this.learningData.queryPatterns).sort((n,l)=>l[1]-n[1]).slice(0,100);this.learningData.queryPatterns=Object.fromEntries(o)}let s=this.getPerformanceSizeKey(t);this.learningData.performanceMetrics.averageSearchTime[s]=r,this.stats.popularQueries=Object.entries(this.learningData.queryPatterns).sort((o,n)=>n[1]-o[1]).slice(0,10).map(([o,n])=>({query:o,count:n}));let a=this.stats.performanceBySize[s]??{averageTime:0,sampleSize:0};a.averageTime=(a.averageTime*a.sampleSize+r)/(a.sampleSize+1),a.sampleSize+=1,this.stats.performanceBySize[s]=a,this.stats.totalSearches%10===0&&this.saveLearningData()}getPerformanceSizeKey(e){return e<1e3?"small":e<1e4?"medium":e<1e5?"large":"xlarge"}cleanupPendingRequests(){let e=Date.now(),t=3e4;this.pendingRequests.forEach((r,s)=>{e-r.timestamp>t&&(r.reject(new Error("Request timeout")),this.pendingRequests.delete(s))})}updateSearchHistory(e,t,r=0,s=0){let a={query:e,timestamp:Date.now(),selectedItemId:t,resultCount:r,processingTime:s,searchTime:s,successful:r>0};this.searchHistory.unshift(a),this.searchHistory.length>1e3&&(this.searchHistory=this.searchHistory.slice(0,500))}async getStats(e=5e3){return await Promise.all([this.waitForWorkerStats(this.indexWorker,"index",e),this.waitForWorkerStats(this.levenshteinWorker,"levenshtein",e)]),this.stats}getCurrentStats(){return this.stats}async resetStats(e=5e3){let t=[this.resetWorkerStats(this.indexWorker,"index",e),this.resetWorkerStats(this.levenshteinWorker,"levenshtein",e)];this.stats={totalSearches:0,averageSearchTime:0,popularQueries:[],performanceBySize:{},workers:{index:{stats:this.createEmptyWorkerStats("index")},levenshtein:{stats:this.createEmptyWorkerStats("levenshtein")}}},this.searchHistory=[],await Promise.all(t),this.logger.info("๐Ÿ“Š FuzzySearchManager: All statistics have been reset"),this.eventEmitter.emit("stats:reset",{timestamp:Date.now(),resetBy:"manager"})}waitForWorkerStats(e,t,r){return e?new Promise(s=>{let a=setTimeout(()=>{this.logger.warn(`โš ๏ธ getStats: Timeout waiting for ${t} worker.`),this.eventEmitter.off("worker:statsUpdated",o),s()},r),o=n=>{let{worker:l}=n;l===t&&(clearTimeout(a),this.eventEmitter.off("worker:statsUpdated",o),s())};this.eventEmitter.on("worker:statsUpdated",o),e.postMessage({type:"getStats"})}):Promise.resolve()}resetWorkerStats(e,t,r){if(!e)return Promise.resolve();let s=`resetStats-${this.instanceId}-${++this.requestId}-${t}`;return new Promise(a=>{let o=setTimeout(()=>{this.logger.warn(`โš ๏ธ resetStats: Timeout waiting for ${t} worker.`),e.removeEventListener("message",n),a()},r),n=c=>{let v=c.data;v.type==="resetStats"&&v.id===s&&(clearTimeout(o),e.removeEventListener("message",n),this.logger.info(`๐Ÿ“Š ${t} worker statistics have been reset`),a())};e.addEventListener("message",n);let l={type:"resetStats",id:s};e.postMessage(l)})}createEmptyWorkerStats(e){return{basic:{totalSearches:0,totalProcessingTime:0,averageSearchTime:0,lastSearchTime:0,errorCount:0,timestamp:Date.now()},workerSpecific:{workerType:e,operationCount:0,operationDistribution:{},specificMetrics:{}},analysis:{fieldPerformance:{},performanceInsights:{recentAverageProcessingTime:0,recentAverageResultCount:0,throughputPerSecond:0,totalHistoryEntries:0,mostCommonQueryLength:0,bestPerformingField:"",similarityDistribution:{highSimilarity:0,mediumSimilarity:0,lowSimilarity:0,veryLowSimilarity:0}},recentHistory:[]}}}getSearchHistory(){return[...this.searchHistory]}on(e,t){this.eventEmitter.on(e,t)}off(e,t){this.eventEmitter.off(e,t)}async prebuildIndex(e,t,r){this.logger.info(`๐Ÿ—๏ธ Pre-building index for ${e.length} items`);try{if(await this.workersInitialized,this.isDisposed){this.logger.debug("๐Ÿšซ prebuildIndex skipped because manager is disposed");return}let s=this.generateDataHash(e,t),a=$.getInstance(this.defaultOptions.workerId),o=a.getLastIndexedDataHash();if(this.logger.debug(`๐Ÿ”ง Checking index status: globalHash=${o}, currentHash=${s}`),!this.isIndexBuilt||this.lastIndexedDataHash!==s){if(o===s){this.logger.debug("๐Ÿ”ง Index already built globally for current data, skipping pre-build"),this.isIndexBuilt=!0,this.lastIndexedDataHash=s;return}let n=a.getBuildingPromise(s);if(n){this.logger.debug("๐Ÿ”ง Index build already in progress globally, waiting..."),await n,this.isIndexBuilt=!0,this.lastIndexedDataHash=s;return}this.logger.debug(`๐Ÿ”ง Pre-building index: isIndexBuilt=${this.isIndexBuilt}, dataChanged=${this.lastIndexedDataHash!==s}`);let l=(async()=>{await this.rebuildIndex(e,t,r)})();a.setBuildingPromise(s,l),await l,this.logger.info(`โœ… Index pre-built successfully for ${e.length} items`)}else this.logger.debug("๐Ÿ”ง Index already built for current data, skipping pre-build")}catch(s){throw this.logger.error("๐Ÿ”ง Error during index pre-building:",s),s}}async rebuildIndex(e,t,r){this.logger.info(`๐Ÿ”„ Starting forced index rebuild for ${e.length} items`);let s={...this.defaultOptions,...r};try{if(await this.workersInitialized,this.isDisposed){this.logger.debug("๐Ÿšซ rebuildIndex skipped because manager is disposed");return}this.isIndexBuilt=!1,this.lastIndexedDataHash=null,await this.buildIndex(e,t,s),this.logger.info(`โœ… Index rebuild completed successfully for ${e.length} items`),this.isIndexBuilt=!0,this.lastIndexedDataHash=this.generateDataHash(e,t);let a=$.getInstance(this.defaultOptions.workerId);a.setLastIndexedDataHash(this.lastIndexedDataHash),a.setLastLevenshteinDataHash(null),this.eventEmitter.emit("index:rebuilt",{itemCount:e.length,searchFields:t,timestamp:Date.now()})}catch(a){throw this.logger.error("โŒ Failed to rebuild index:",a),this.eventEmitter.emit("index:rebuildError",{error:a instanceof Error?a.message:String(a),timestamp:Date.now()}),a}}dispose(){this.isDisposed=!0,this.cleanupTimerId&&(clearInterval(this.cleanupTimerId),this.cleanupTimerId=null),this.indexWorker&&(this.indexWorker.removeEventListener("message",this.handleIndexWorkerMessageBound),this.indexWorker.removeEventListener("error",this.handleIndexWorkerErrorBound)),this.levenshteinWorker&&(this.levenshteinWorker.removeEventListener("message",this.handleLevenshteinWorkerMessageBound),this.levenshteinWorker.removeEventListener("error",this.handleLevenshteinWorkerErrorBound)),$.getInstance(this.defaultOptions.workerId).releaseReference(),this.indexWorker=null,this.levenshteinWorker=null,this.pendingRequests.forEach(e=>{e.reject(new Error("FuzzySearchManager disposed"))}),this.pendingRequests.clear(),this.eventEmitter.removeAllListeners(),this.saveLearningData()}},B=(e,t)=>{if(typeof e=="string"&&e.trim())return e;if(e instanceof Error&&e.message.trim())return e.message;if(typeof e=="object"&&e!==null){if("error"in e)return B(e.error,t);if("message"in e)return B(e.message,t)}return t};function Ee(e,t,r){let[s,a]=d.useState(""),[o,n]=d.useState([]),[l,c]=d.useState(!1),[v,f]=d.useState(!1),[b,m]=d.useState(null),[h,E]=d.useState([]),[O,S]=d.useState({totalSearches:0,averageSearchTime:0,itemCount:e.length,resultsCount:0,workerStats:void 0}),k=d.useMemo(()=>{let u={...z,...r};return r?.threshold!==void 0&&(r.levenshteinWorkerOptions||(u.levenshteinWorkerOptions={...u.levenshteinWorkerOptions,threshold:r.threshold}),r.indexWorkerOptions||(u.indexWorkerOptions={...u.indexWorkerOptions,threshold:r.threshold})),u},[r]),g=d.useMemo(()=>{let u="[fuzzy-search-react]";return k.instanceName?u=`[fuzzy-search-react:${k.instanceName}]`:k.workerId&&(u=`[fuzzy-search-react:${k.workerId}]`),new Q(k.logLevel??2,u,k.logger??console)},[k.logLevel,k.logger,k.workerId,k.instanceName]),w=d.useRef(null),P=d.useRef(s);d.useEffect(()=>{P.current=s},[s]);let A=d.useMemo(()=>t.map(u=>String(u)),[t]);d.useEffect(()=>(w.current=new Se(k),g.debug("๐Ÿ”ง FuzzySearchManager created (initial setup)"),()=>{g.debug("๐Ÿ”ง FuzzySearchManager disposed (component unmount)"),w.current?.dispose(),w.current=null}),[k,g]),d.useEffect(()=>{if(!w.current)return;let u=()=>{if(w.current){let I=w.current.getCurrentStats(),D={totalSearches:I?.totalSearches??0,averageSearchTime:I?.averageSearchTime??0,itemCount:e.length,resultsCount:o.length,workerStats:{index:I?.workers.index.stats,levenshtein:I?.workers.levenshtein.stats}};S(D)}},y=I=>{let D=B(I,"Index Worker error");g.error("โŒ Index worker error event",I),m(D),f(!1)},L=I=>{let D=B(I,"Index rebuild error");g.error("โŒ Index rebuild error event",I),m(D),f(!1)},R=I=>{let D=B(I,"Search execution failed");g.error("โŒ Search error event",I),m(D)};return w.current.on("worker:statsUpdated",u),w.current.on("search:complete",u),w.current.on("indexWorker:error",y),w.current.on("index:rebuildError",L),w.current.on("search:error",R),()=>{w.current&&(w.current.off("worker:statsUpdated",u),w.current.off("search:complete",u),w.current.off("indexWorker:error",y),w.current.off("index:rebuildError",L),w.current.off("search:error",R))}},[e.length,o.length,g,k]);let M=d.useCallback(async u=>{if(w.current){if(g.debug(`๐Ÿ” performSearch called with query: "${u}"`),u!==P.current){g.debug(`๐Ÿšซ performSearch skipped for stale query: "${u}" (current: "${P.current}")`);return}try{if(g.debug(`๐Ÿ“ˆ Setting isSearching to true for query: "${u}"`),c(!0),m(null),!u.trim()){g.debug(`๐Ÿ“ˆ Setting isSearching to false for empty query: "${u}"`),c(!1);return}g.info(`๐Ÿš€ Starting search with query: "${u}", items count: ${e.length}`);let y=performance.now(),L=await w.current.search(u,e,A,k),R=performance.now()-y;if(u!==P.current){g.debug(`๐Ÿšซ Search result ignored for stale query: "${u}" (current: "${P.current}")`);return}g.info(`โœ… Search completed with ${L.length} results in ${R}ms`),n(L);let I={query:u,timestamp:Date.now(),resultCount:L.length,processingTime:R,searchTime:R,successful:L.length>0};E(D=>{let U=D.filter(Y=>Y.query!==u);return[I,...U].slice(0,50)})}catch(y){if(u!==P.current)return;g.error(`โŒ Search error for query: "${u}"`,y),m(y instanceof Error?y.message:"Search failed"),n([])}finally{u===P.current&&(g.debug(`๐Ÿ“ˆ Setting isSearching to false (finally) for query: "${u}"`),c(!1))}}},[e,A,k,g.info,g.error,g.debug]);d.useEffect(()=>{if(!w.current||e.length===0){f(!1);return}let u=!1,y=k.autoSearchOnIndexRebuild??!0;return g.info(`๐Ÿ—๏ธ Data changed, pre-building index for ${e.length} items`),f(!0),w.current.prebuildIndex(e,A,k).then(()=>{!u&&y&&(g.debug("๐Ÿ” Re-running search after index rebuild"),M(P.current))}).catch(L=>{g.warn("๐Ÿ”ง Failed to pre-build index:",L),u||m(B(L,"ใ‚คใƒณใƒ‡ใƒƒใ‚ฏใ‚นใฎไบ‹ๅ‰ๆง‹็ฏ‰ไธญใซใ‚จใƒฉใƒผใŒ็™บ็”Ÿใ—ใพใ—ใŸ"))}).finally(()=>{u||f(!1)}),()=>{u=!0}},[e,A,k,M,g.warn,g.info,g.debug]),d.useEffect(()=>{g.debug(`๐ŸŽฏ useEffect triggered - searchTerm: "${s}", debounceMs: ${k.debounceMs}`);let u=setTimeout(()=>{g.debug(`โฐ Timeout executing performSearch for: "${s}"`),M(s)},k.debounceMs);return()=>{g.debug(`๐Ÿšซ Timeout cleared for: "${s}"`),clearTimeout(u)}},[s,k,M,g]),d.useEffect(()=>{s.trim()||n(e.map((u,y)=>({item:u,score:1,baseScore:1,matchedFields:[],relevanceReason:"ๅ…จไปถ่กจ็คบ",originalIndex:y})))},[e,s]);let X=d.useCallback((u,y)=>{g.info("๐ŸŽฏ Selected item:",u,"at index:",y)},[g]),Z=d.useCallback(()=>{a(""),m(null)},[]),_=d.useCallback(()=>{E([])},[]),K=d.useCallback(async()=>{if(w.current){await w.current.resetStats(),E([]),m(null);let u=w.current.getCurrentStats(),y={totalSearches:u?.totalSearches??0,averageSearchTime:u?.averageSearchTime??0,itemCount:e.length,resultsCount:o.length,workerStats:{index:u?.workers.index.stats,levenshtein:u?.workers.levenshtein.stats}};S(y),g.info("๐Ÿ“Š useFuzzySearch: Statistics have been reset and refreshed")}},[e.length,o.length,g]),ee=d.useCallback((u,y=5)=>{let L=h.filter(R=>R.query.toLowerCase().includes(u.toLowerCase())&&R.query!==u).sort((R,I)=>I.timestamp-R.timestamp).slice(0,y).map(R=>R.query);return Array.from(new Set(L))},[h]),q=d.useCallback(async u=>{if(!w.current){g.warn("โš ๏ธ Search manager is not initialized");return}g.info(`๐Ÿ”„ Rebuilding index for ${e.length} items`),f(!0),m(null);try{let y=u?{...k,...u}:k;await w.current.rebuildIndex(e,A,y),g.info("โœ… Index rebuild completed successfully")}catch(y){let L=y instanceof Error?y.message:"ใ‚คใƒณใƒ‡ใƒƒใ‚ฏใ‚นๅ†ๆง‹็ฏ‰ไธญใซใ‚จใƒฉใƒผใŒ็™บ็”Ÿใ—ใพใ—ใŸ";throw g.error("โŒ Index rebuild failed:",L),m(L),y}finally{f(!1)}},[e,A,k,g]);return{searchTerm:s,setSearchTerm:a,filteredItems:o,isSearching:l,isIndexBuilding:v,error:b,searchHistory:h,options:k,selectItem:X,clearSearch:Z,clearHistory:_,resetStats:K,getSearchSuggestions:ee,performanceMetrics:O,rebuildIndex:q}}function We(e,t,r){const s=d.useMemo(()=>({threshold:.3,sortBy:"score",sortOrder:"desc",workerUrls:r}),[r]),a=d.useMemo(()=>["label"],[]),{setSearchTerm:o,filteredItems:n,isSearching:l}=Ee(e,a,s);d.useEffect(()=>{o(t)},[t,o]);const c=d.useMemo(()=>{if(!t)return e;const v=t.toLowerCase(),f=[],b=[];for(const m of n){const h=m.item;h.label.toLowerCase()===v?f.push(h):b.push(h)}return[...f,...b]},[n,t,e]);return{filteredOptions:t?c:e,isSearching:l}}function Ie({value:e,onChange:t,multiple:r}){const[s,a]=d.useState(!1),[o,n]=d.useState(""),l=d.useRef(null);d.useEffect(()=>{const m=h=>{l.current&&!l.current.contains(h.target)&&(a(!1),n(""))};return document.addEventListener("mousedown",m),()=>{document.removeEventListener("mousedown",m)}},[]);const c=d.useCallback(m=>{if(r){const h=Array.isArray(e)?e:e?[e]:[],E=h.some(S=>S.value===m.value);let O;E?O=h.filter(S=>S.value!==m.value):O=[...h,m],t?.(O)}else t?.(m),a(!1),n("")},[r,e,t]),v=d.useCallback(m=>{if(!r)return;const E=(Array.isArray(e)?e:e?[e]:[]).filter(O=>O.value!==m.value);t?.(E)},[r,e,t]),f=d.useCallback(()=>{t?.(r?[]:null),n(""),a(!1)},[r,t]),b=d.useCallback(()=>{a(m=>(m&&n(""),!m))},[]);return{isOpen:s,setIsOpen:a,query:o,setQuery:n,containerRef:l,handleSelect:c,handleRemove:v,handleClear:f,toggleOpen:b}}function Le({title:e,titleId:t,...r},s){return C.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor","aria-hidden":"true","data-slot":"icon",ref:s,"aria-labelledby":t},r),e?C.createElement("title",{id:t},e):null,C.createElement("path",{fillRule:"evenodd",d:"M16.704 4.153a.75.75 0 0 1 .143 1.052l-8 10.5a.75.75 0 0 1-1.127.075l-4.5-4.5a.75.75 0 0 1 1.06-1.06l3.894 3.893 7.48-9.817a.75.75 0 0 1 1.05-.143Z",clipRule:"evenodd"}))}const he=C.forwardRef(Le);function Fe({title:e,titleId:t,...r},s){return C.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor","aria-hidden":"true","data-slot":"icon",ref:s,"aria-labelledby":t},r),e?C.createElement("title",{id:t},e):null,C.createElement("path",{fillRule:"evenodd",d:"M5.22 8.22a.75.75 0 0 1 1.06 0L10 11.94l3.72-3.72a.75.75 0 1 1 1.06 1.06l-4.25 4.25a.75.75 0 0 1-1.06 0L5.22 9.28a.75.75 0 0 1 0-1.06Z",clipRule:"evenodd"}))}const Te=C.forwardRef(Fe);function Re({title:e,titleId:t,...r},s){return C.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor","aria-hidden":"true","data-slot":"icon",ref:s,"aria-labelledby":t},r),e?C.createElement("title",{id:t},e):null,C.createElement("path",{d:"M6.28 5.22a.75.75 0 0 0-1.06 1.06L8.94 10l-3.72 3.72a.75.75 0 1 0 1.06 1.06L10 11.06l3.72 3.72a.75.75 0 1 0 1.06-1.06L11.06 10l3.72-3.72a.75.75 0 0 0-1.06-1.06L10 8.94 6.28 5.22Z"}))}const ce=C.forwardRef(Re),Oe=({option:e,isSelected:t,isFocused:r,onClick:s,multiple:a,style:o})=>x.jsxs("div",{role:"option","aria-selected":t,tabIndex:0,onKeyDown:n=>{(n.key==="Enter"||n.key===" ")&&s(e)},style:o,onClick:()=>s(e),className:`sb-option ${r?"sb-option--focused":""}
7
+ ${t&&!a?"sb-option--selected":"sb-option--not-selected"}
8
+ `,children:[a&&x.jsx("div",{className:`sb-checkbox ${t?"sb-checkbox--checked":"sb-checkbox--unchecked"}
9
+ `,children:t&&x.jsx(he,{className:"sb-check-icon-white"})}),x.jsx("span",{className:"sb-option-label",children:e.label}),!a&&t&&x.jsx(he,{className:"sb-check-icon-blue"})]}),De=({options:e,value:t,multiple:r,onSelect:s,className:a})=>{const[o,n]=d.useState(300),l=d.useRef(null),c=d.useRef(!1),v=h=>{c.current=!0,h.currentTarget.setPointerCapture(h.pointerId),h.preventDefault()},f=d.useCallback(h=>{if(!(c.current&&l.current))return;const E=l.current.getBoundingClientRect(),O=h.clientY-E.top;n(Math.max(100,Math.min(O,600)))},[]),b=d.useCallback(()=>{c.current=!1},[]);d.useEffect(()=>(document.addEventListener("pointermove",f),document.addEventListener("pointerup",b),()=>{document.removeEventListener("pointermove",f),document.removeEventListener("pointerup",b)}),[f,b]);const m=h=>r?(Array.isArray(t)?t:t?[t]:[]).some(O=>O.value===h.value):t?.value===h.value;return x.jsxs("div",{ref:l,className:`sb-dropdown ${a||""}`,style:{height:o},children:[e.length>0?x.jsx(ie.VirtualScroll,{itemCount:e.length,getItem:h=>e[h],getItemHeight:()=>36,viewportSize:o,className:"h-full w-full",scrollBarOptions:{width:10,enableThumbDrag:!0,enableTrackClick:!0,tapScrollCircleOptions:{enabled:!0,renderVisual:ie.tapScrollCircleSampleVisual}},behaviorOptions:{enableKeyboardNavigation:!0},children:(h,E)=>h?x.jsx(Oe,{option:h,isSelected:m(h),onClick:s,multiple:r,style:{height:36}},h.value):null}):x.jsx("div",{className:"sb-no-options",children:"No options found"}),x.jsx("div",{onPointerDown:v,className:"sb-resize-handle",children:x.jsxs("svg",{viewBox:"0 0 10 10",className:"sb-resize-icon",children:[x.jsx("title",{children:"Resize handle"}),x.jsx("path",{d:"M10 10L10 0L0 10Z"})]})})]})},Ce=({value:e,multiple:t,query:r,onQueryChange:s,onRemove:a,onFocus:o,placeholder:n="Select...",disabled:l,isLoading:c,clearable:v,onClear:f,onToggle:b,autoFocus:m})=>{const h=d.useRef(null);d.useEffect(()=>{m&&h.current?.focus()},[m]);const E=Array.isArray(e)?e:e?[e]:[],O=S=>{S.key==="Backspace"&&!r&&E.length>0&&t&&a(E[E.length-1])};return x.jsxs("fieldset",{className:`sb-input-area ${l?"sb-input-area--disabled":"sb-input-area--active"}
10
+ `,onMouseDown:S=>{const k=S.target;k!==h.current&&!k.closest("button")&&(S.preventDefault(),h.current?.focus())},children:[t&&E.map(S=>x.jsxs("span",{className:"sb-tag",children:[S.label,x.jsx("button",{type:"button",onClick:k=>{k.stopPropagation(),a(S)},className:"sb-tag-remove",children:x.jsx(ce,{className:"h-3 w-3"})})]},S.value)),!t&&E.length>0&&!r&&x.jsx("span",{className:"sb-single-value",children:E[0].label}),x.jsx("input",{ref:h,type:"text",value:r,onChange:S=>s(S.target.value),onFocus:o,onKeyDown:O,placeholder:E.length===0?n:"",disabled:l,className:"sb-input"}),x.jsxs("div",{className:"sb-indicators",children:[v&&E.length>0&&!l&&x.jsx("button",{type:"button",onClick:S=>{S.stopPropagation(),f()},className:"sb-clear-button",children:x.jsx(ce,{className:"h-4 w-4"})}),c?x.jsxs("svg",{className:"sb-loading-icon",xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",children:[x.jsx("title",{children:"Loading"}),x.jsx("circle",{className:"opacity-25",cx:"12",cy:"12",r:"10",stroke:"currentColor",strokeWidth:"4"}),x.jsx("path",{className:"opacity-75",fill:"currentColor",d:"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"})]}):x.jsx("button",{type:"button",disabled:l,onClick:S=>{S.stopPropagation(),b()},className:"sb-chevron-button",children:x.jsx(Te,{className:"sb-chevron-icon"})})]})]})},Pe=e=>{const{isOpen:t,setIsOpen:r,query:s,setQuery:a,containerRef:o,handleSelect:n,handleRemove:l,handleClear:c,toggleOpen:v}=Ie(e),{filteredOptions:f,isSearching:b}=We(e.options,s,e.workerUrls);return x.jsxs("div",{ref:o,className:`sb-container ${e.className||""}`,children:[x.jsx(Ce,{value:e.value,multiple:e.multiple,query:s,onQueryChange:m=>{a(m),t||r(!0)},onRemove:l,onClear:c,onFocus:()=>r(!0),placeholder:e.placeholder,disabled:e.disabled,isLoading:b,clearable:e.clearable,onToggle:v,autoFocus:e.autoFocus}),t&&!e.disabled&&x.jsx(De,{options:f,value:e.value,multiple:e.multiple,onSelect:n})]})};exports.SelectBox=Pe;