@indxsearch/intrface 3.2.0 → 3.6.0
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/CHANGELOG.md +39 -0
- package/README.md +68 -29
- package/dist/components/BucketFilterPanel.d.ts +41 -0
- package/dist/components/FilterPanelSkeleton.d.ts +2 -0
- package/dist/components/RangeFilterPanel.d.ts +4 -0
- package/dist/components/SortByPanel.d.ts +3 -0
- package/dist/components/ValueFilterPanel.d.ts +7 -0
- package/dist/context/IndxApiError.d.ts +1 -1
- package/dist/context/SearchContext.d.ts +8 -3
- package/dist/context/buildFilterProxy.d.ts +10 -7
- package/dist/context/useSearchExecution.d.ts +1 -2
- package/dist/index.cjs.js +1 -1
- package/dist/index.d.ts +3 -1
- package/dist/index.es.js +928 -557
- package/dist/intrface.css +1 -1
- package/dist/utils/numeric.d.ts +6 -0
- package/package.json +1 -1
package/dist/index.cjs.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.getPrototypeOf,a=Object.prototype.hasOwnProperty,o=(e,i,o,s)=>{if(i&&typeof i==`object`||typeof i==`function`)for(var c=r(i),l=0,u=c.length,d;l<u;l++)d=c[l],!a.call(e,d)&&d!==o&&t(e,d,{get:(e=>i[e]).bind(null,d),enumerable:!(s=n(i,d))||s.enumerable});return e},s=(n,r,a)=>(a=n==null?{}:e(i(n)),o(r||!n||!n.__esModule?t(a,`default`,{value:n,enumerable:!0}):a,n));require("@indxsearch/systm/styles.css");let c=require("react");c=s(c);let l=require("@indxsearch/indx-types"),u=require("react/jsx-runtime"),d=require("@indxsearch/systm"),f=require("@indxsearch/pixl");function p({url:e,team:t,dataset:n,preAuthenticatedToken:r,enableDebugLogs:i=!1}){let[a,o]=(0,c.useState)(null),[s,u]=(0,c.useState)(!0),[d,f]=(0,c.useState)([]),[p,m]=(0,c.useState)([]),[h,g]=(0,c.useState)([]),[_,v]=(0,c.useState)({}),[y,b]=(0,c.useState)({}),[x,S]=(0,c.useState)(0),[C,w]=(0,c.useState)(null);return(0,c.useEffect)(()=>{(async()=>{w(null);try{if(!r)throw console.error(`[Auth] ❌ Missing bearer token`),console.error(`[Auth] 💡 Pass preAuthenticatedToken to SearchProvider (create a token on the IndxCloudApi website)`),Error(`A bearer token is required. Check console for instructions.`);if(!e)throw console.error(`[Auth] ❌ Missing INDX server URL`),console.error(`[Auth] 💡 Pass a url to SearchProvider`),Error(`INDX server URL is required. Check console for instructions.`);if(!n)throw console.error(`[Auth] ❌ Missing dataset name`),console.error(`[Auth] 💡 Pass dataset="your-dataset-name" to SearchProvider`),Error(`Dataset name is required. Check console for instructions.`);i&&console.log(`[Auth] ✅ Using bearer token`);let a=r,s=e=>fetch(e,{method:`GET`,headers:{accept:`text/plain`,Authorization:`Bearer ${a}`}});i&&console.log(`[Auth] 🔍 Checking dataset status...`);let c=await s(`${e}/api/teams/${t}/datasets/${n}/status`);if(!c.ok){if(c.status===401)throw console.error(`[Auth] ❌ Authentication failed (401 Unauthorized)`),console.error(`[Auth] 💡 Your token may be expired or invalid`),console.error(`[Auth] 💡 Create or refresh your token on the IndxCloudApi website`),Error(`Authentication failed (401). Token may be expired. Check console for instructions.`);if(c.status===404)throw console.error(`[Auth] ❌ Dataset "`+n+`" not found (404)`),console.error(`[Auth] 💡 Available datasets can be checked with: curl -X GET "`+e+`/api/me/datasets" -H "Authorization: Bearer YOUR_TOKEN"`),console.error(`[Auth] 💡 Make sure you spelled the dataset name correctly`),Error(`Dataset "`+n+`" not found. Check console for instructions.`);{let t=await c.text();throw console.error(`[Auth] ❌ Failed to get dataset status:`,c.status,t),console.error(`[Auth] 💡 Check if your INDX server is running at:`,e),Error(`Failed to connect to INDX server. Check console for details.`)}}let u=await c.json();i&&console.log(`[Auth] 📊 Dataset status:`,u),i&&console.log(`[Auth] 🔓 Opening dataset session...`);let d=await fetch(`${e}/api/teams/${t}/datasets/${n}?configuration=400`,{method:`PUT`,headers:{"Content-Type":`application/json`,Authorization:`Bearer ${a}`},body:`""`});if(!d.ok)throw console.error(`[Auth] ❌ CreateOrOpen failed:`,d.status,await d.text()),Error(`Failed to open dataset session.`);o(a),i&&console.log(`[Auth] ✅ Dataset session established`),u.systemState!==void 0&&u.systemState!==l.SystemState.Ready&&(console.warn(`[Auth] ⚠️ Dataset is not ready yet. Current state:`,l.SystemState[u.systemState]),console.warn(`[Auth] 💡 Wait for indexing to complete before searching`));let p=u.documentCount??u.numberOfRecords??0;p===0?(console.warn(`[Auth] ⚠️ Dataset "`+n+`" is empty (0 records)`),console.warn(`[Auth] 💡 Add documents to your dataset before searching`),console.warn(`[Auth] 💡 Search will work but return no results`)):i&&console.log(`[Auth] ✅ Dataset has`,p,`records`);let[h,_,y]=await Promise.all([s(`${e}/api/teams/${t}/datasets/${n}/fields/filterable`),s(`${e}/api/teams/${t}/datasets/${n}/fields/facetable`),s(`${e}/api/teams/${t}/datasets/${n}/fields/sortable`)]);if(!h.ok)throw console.error(`[Auth] ❌ GetFilterableFields failed:`,h.status,await h.text()),Error(`Failed to get filterable fields. Check console for details.`);if(!_.ok)throw console.error(`[Auth] ❌ GetFacetableFields failed:`,_.status,await _.text()),Error(`Failed to get facetable fields. Check console for details.`);if(!y.ok)throw console.error(`[Auth] ❌ GetSortableFields failed:`,y.status,await y.text()),Error(`Failed to get sortable fields. Check console for details.`);let[x,C,w]=await Promise.all([h.json().catch(e=>(console.error(`Failed to parse GetFilterableFields response:`,e),[])),_.json().catch(e=>(console.error(`Failed to parse GetFacetableFields response:`,e),[])),y.json().catch(e=>(console.error(`Failed to parse GetSortableFields response:`,e),[]))]);f(x||[]),m(C||[]),g(w||[]),S(p);let T={facets:{}};try{let r=await fetch(`${e}/api/teams/${t}/datasets/${n}/search`,{method:`POST`,headers:{"Content-Type":`application/json`,Authorization:`Bearer ${a}`},body:JSON.stringify({text:``,maxNumberOfRecordsToReturn:0,enableFacets:!0})});r.ok?T=await r.json().catch(e=>(console.warn(`Failed to parse blank search response:`,e),{facets:{}})):(console.warn(`Blank search failed:`,r.status,r.statusText),console.warn(`Continuing without initial facet data - facets will be populated after first search`))}catch(e){console.warn(`Blank search error:`,e),console.warn(`Continuing without initial facet data - facets will be populated after first search`)}let E={};if(T.facets){for(let[e,t]of Object.entries(T.facets))if(Array.isArray(t)&&t.length>0){let n=t.map(e=>Number(e.key)).filter(e=>!isNaN(e));n.length>0&&(E[e]={min:Math.min(...n),max:Math.max(...n)})}}let D={};if(T.facets)for(let[e,t]of Object.entries(T.facets))Array.isArray(t)&&(D[e]=t.map(e=>e.key));v(E),b(D),i&&console.log(`[Auth] ✅ Initialization complete`)}catch(t){console.error(`[Auth] ❌ Initialization failed:`,t),(t instanceof Error||typeof t==`object`&&t&&`message`in t)&&console.error(`[Auth] 💡 Error:`,t.message),t instanceof TypeError&&t.message.includes(`fetch`)&&(console.error(`[Auth] ❌ Network error - cannot connect to INDX server`),console.error(`[Auth] 💡 Check if the server is running at:`,e),console.error(`[Auth] 💡 Check the url you passed to SearchProvider`),console.error(`[Auth] 💡 For local development, it should be: http://localhost:5001`)),w(t instanceof Error?t.message:String(t))}finally{u(!1)}})()},[e,t,n]),{token:a,isFetchingInitial:s,authError:C,initialFacetStats:_,initialFacetKeys:y,filterableFields:d,facetableFields:p,sortableFields:h,totalDocumentCount:x}}var m=class e extends Error{status;code;problem;retryAfterSeconds;constructor(e,t,n,r){let i=n?.detail??n?.title;super(`${e} failed: HTTP ${t}${i?` — ${i}`:``}`),this.name=`IndxApiError`,this.status=t,this.code=n?.code,this.problem=n,this.retryAfterSeconds=r}get retryable(){return this.code===`invalidState`&&this.problem?.retryable===!0}static async fromResponse(t,n){let r;try{let e=await n.json();e&&typeof e==`object`&&typeof e.code==`string`?r=e:e&&typeof e==`object`&&(r={...e,code:``})}catch{}let i=n.headers?.get?.(`Retry-After`),a=i!=null&&/^\d+$/.test(i)?Number(i):void 0;return new e(t,n.status,r,a)}};async function h(e,t,n,r,i,a,o){let s=await o(`${r}/api/teams/${i}/datasets/${a}/filters/${e}`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(t)});if(!s.ok)throw await m.fromResponse(n,s);let c=await s.json();if(!c||typeof c.hashString!=`string`)throw Error(`${n} failed: server returned no filter token`);return c}async function g(e,t,n,r,i,a){if(e.length===0)return null;if(e.length===1)return e[0];let o=e[0];for(let s=1;s<e.length;s++)o=await h(`combine`,{a:o,b:e[s],useAndOperation:t===`and`},`CombineFilters`,n,r,i,a);return o}async function _(e,t,n,r,i,a,o={}){let s=Object.entries(e??{}).filter(([,e])=>e.length>0),c=Object.entries(t??{}),[l,u]=await Promise.all([Promise.all(s.map(async([e,t])=>g(await Promise.all(t.map(t=>h(`value`,{fieldName:e,value:t},`Value filter '${e}'`,n,r,i,a))),o[e]===`any`?`or`:`and`,n,r,i,a))),Promise.all(c.map(([e,{min:t,max:o}])=>h(`range`,{fieldName:e,lowerLimit:t,upperLimit:o},`Range filter '${e}'`,n,r,i,a)))]);return g([...l,...u],`and`,n,r,i,a)}function v(e,t){let n,r=(...r)=>{clearTimeout(n),n=setTimeout(()=>e(...r),t)};return r.cancel=()=>clearTimeout(n),r}function y({state:e,setState:t,authenticatedFetch:n,auth:r,url:i,team:a,dataset:o,allowEmptySearch:s,facetsEnabled:l,enableDebugLogs:u,filtersChangedByUser:d,shouldFetchMore:f}){let p=(0,c.useRef)(0),h=(0,c.useRef)(void 0),g=(0,c.useRef)(!1),[y,b]=(0,c.useState)({}),[x,S]=(0,c.useState)(``),[C,w]=(0,c.useState)(``);(0,c.useEffect)(()=>{r.isFetchingInitial||t(e=>({...e,facetStats:r.initialFacetStats,rangeBounds:r.initialFacetStats,totalDocumentCount:r.totalDocumentCount,filterableFields:r.filterableFields,facetableFields:r.facetableFields,sortableFields:r.sortableFields}))},[r.isFetchingInitial,r.initialFacetStats,r.totalDocumentCount,r.filterableFields,r.facetableFields,r.sortableFields,t]);let T=e.searchSettings.maxNumberOfRecordsToReturn,E=e.searchSettings.enableCoverage,D=e.searchSettings.removeDuplicates,O=e.searchSettings.coverageDepth,k=e.searchSettings.minimumScore,A=e.searchSettings.coverageSetup,j=e.sortBy,M=e.sortAscending,N=(0,c.useCallback)(async({enableFacets:c})=>{if(!r.token)return;let l=++p.current;if(t(e=>({...e,isLoading:!0})),e.query.trim()===``){if(!s)return;c=!0}try{let d=await _(e.filters,e.rangeFilters,i,a,o,n,e.valueMatch),f=s||e.query.trim()!==``,h={text:e.query,maxNumberOfRecordsToReturn:f?T:0,enableFacets:c,...d?{filter:d}:{},...j?{sortBy:j}:{},...M===void 0?{}:{sortAscending:M},enableCoverage:E,removeDuplicates:D,coverageDepth:O,coverageSetup:A};u&&console.log(`[performSearch] request body:`,JSON.stringify(h,null,2));let g=await n(`${i}/api/teams/${a}/datasets/${o}/search`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(h)});if(!g.ok)throw await m.fromResponse(`Search`,g);let v=await g.json(),N=v.truncationIndex??-1,P=v.records||[],F=P.map(e=>e.documentKey),I=P.map(e=>e.score),L=[];if(f&&F.length>0){let e=await n(`${i}/api/teams/${a}/datasets/${o}/documents/lookup`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(F)});if(!e.ok)throw await m.fromResponse(`Document lookup`,e);L=(await e.json()).map((e,t)=>({document:e,documentKey:F[t],score:I[t]}))}let R={};if(c&&v.facets){for(let[e,t]of Object.entries(v.facets))if(Array.isArray(t)&&t.length>0){let n=t.map(e=>Number(e.key)).filter(e=>!isNaN(e));n.length>0&&(R[e]={min:Math.min(...n),max:Math.max(...n)})}}if(l!==p.current)return;let z=e.query!==x,B=e.query!==C,V=e.facetStats??{};if(z?(V={...r.initialFacetStats,...R},b(V),S(e.query)):V={...y,...R},B&&c){let n={...e.rangeBounds};for(let[e,t]of Object.entries(R))n[e]=t;t(e=>({...e,rangeBounds:n})),w(e.query)}let H=v.facets;if(c&&(!H||Object.keys(H).length===0)){H={};for(let[e,t]of Object.entries(r.initialFacetKeys))H[e]=t.map(e=>({key:e,value:null}))}let U=L.filter(t=>{let n=e.query.trim();return n===``||n.length===1?!0:t.score>=k});t(e=>({...e,results:U,error:void 0,resultsSuppressed:!f,...c?{facets:H,facetStats:V}:{},isLoading:!1,truncationIndex:N}))}catch(e){if(console.error(`[Search] ❌ Search failed:`,e),e instanceof TypeError&&e.message.includes(`fetch`)?(console.error(`[Search] ❌ Network error - cannot reach INDX server`),console.error(`[Search] 💡 Check if server is running at:`,i)):e instanceof Error&&(e.message.includes(`401`)?(console.error(`[Search] ❌ Authentication failed`),console.error(`[Search] 💡 Your token may have expired. Create or refresh it on the IndxCloudApi website.`)):e.message.includes(`404`)?(console.error(`[Search] ❌ Dataset not found`),console.error(`[Search] 💡 Check that dataset "`+o+`" exists`)):console.error(`[Search] 💡 Error:`,e.message)),l!==p.current)return;t(t=>({...t,results:null,isLoading:!1,resultsSuppressed:!1,error:e instanceof Error?e.message:`Search failed`}))}},[e.query,e.filters,e.valueMatch,e.rangeFilters,e.facetStats,j,M,T,E,D,O,A,k,n,r.initialFacetStats,r.initialFacetKeys,r.token,y,x,C,e.rangeBounds,i,a,o,s,u,t]);(0,c.useEffect)(()=>{h.current=N},[N]);let P=(0,c.useRef)(null);(0,c.useEffect)(()=>(P.current?.cancel(),P.current=v(()=>{u&&console.log(`Debounced searchWithFacets fired`),h.current?.({enableFacets:!0})},e.facetDebounceDelayMillis??500),()=>{P.current?.cancel()}),[e.facetDebounceDelayMillis]),(0,c.useEffect)(()=>{!r.isFetchingInitial&&r.token&&!g.current&&(s&&h.current?.({enableFacets:l}),g.current=!0)},[r.isFetchingInitial,r.token,s,l]),(0,c.useEffect)(()=>{if(!r.token||!g.current)return;let n=e.query.trim(),i=n===``&&s;if(n===``&&!s){e.resultsSuppressed||t(e=>({...e,resultsSuppressed:!0}));return}return i?(P.current?.cancel(),h.current?.({enableFacets:l})):l?(u&&console.log(`Search fired`),h.current?.({enableFacets:!1}),P.current?.()):h.current?.({enableFacets:!1}),()=>{P.current?.cancel()}},[e.query,s,l]),(0,c.useEffect)(()=>{let t=d.current;if(d.current=!1,!g.current||!r.token||!t)return;let n=e.query.trim();!s&&n===``||h.current?.({enableFacets:l})},[e.filters,e.rangeFilters]),(0,c.useEffect)(()=>{if(!g.current||!r.token)return;let t=e.query.trim();!s&&t===``||h.current?.({enableFacets:l})},[j,M]);let F=(0,c.useRef)(!0),I=(0,c.useRef)(e.query);(0,c.useEffect)(()=>{if(F.current){F.current=!1;return}if(I.current!==e.query||!g.current||!r.token)return;if(f.current){f.current=!1,h.current?.({enableFacets:!1});return}let t=e.query.trim();!s&&t===``||h.current?.({enableFacets:l})},[T,E,D,O,A,k]),(0,c.useEffect)(()=>{I.current=e.query},[e.query])}var b=(0,c.createContext)(void 0),x=({children:e,url:t,team:n,dataset:r,allowEmptySearch:i=!1,maxResults:a=10,facetDebounceDelayMillis:o=500,enableFacets:s=!0,coverageDepth:l=500,removeDuplicates:d=!0,enableCoverage:f=!0,initialCoverageSetup:m={},enableDebugLogs:h=!1,preAuthenticatedToken:g})=>{let _=(0,c.useRef)(!1),v=(0,c.useRef)(!1),x=(0,c.useRef)(a),[S,C]=(0,c.useState)({query:``,results:null,isLoading:!1,resultsSuppressed:!i,facetDebounceDelayMillis:o,filterableFields:[],facetableFields:[],sortableFields:[],filters:{},valueMatch:{},rangeFilters:{},facetStats:{},rangeBounds:{},searchSettings:{maxNumberOfRecordsToReturn:a,coverageDepth:l,enableCoverage:f,removeDuplicates:d,minimumScore:0,showScore:!0,placeholderText:`Type to search`,coverageSetup:{coverWholeQuery:!0,coverWholeWords:!0,coverFuzzyWords:!0,coverJoinedWords:!0,coverPrefixSuffix:!0,truncate:!0,includePatternMatches:!0,minWordSize:2,levenshteinMaxWordSize:20,truncateWordHitLimit:1,truncateWordHitTolerance:0,truncationScore:65024,...m}}});(0,c.useEffect)(()=>{h&&console.log(`SearchContext mounted on client`)},[h]),(0,c.useEffect)(()=>{C(e=>({...e,facetDebounceDelayMillis:o}))},[o]);let[w]=(0,c.useState)(s),T=p({url:t,team:n,dataset:r,preAuthenticatedToken:g,enableDebugLogs:h}),E=(0,c.useCallback)((e,t={})=>{if(!T.token)throw Error(`No authentication token available`);return fetch(e,{...t,headers:{...t.headers,Authorization:`Bearer ${T.token}`}})},[T.token]);y({state:S,setState:C,authenticatedFetch:E,auth:T,url:t,team:n,dataset:r,allowEmptySearch:i,facetsEnabled:w,enableDebugLogs:h,filtersChangedByUser:_,shouldFetchMore:v});let D=(0,c.useCallback)(e=>{_.current=!1,C(t=>{let n=Object.keys(t.filters).length>0,r=Object.keys(t.rangeFilters).length>0;return{...t,query:e,filters:n?{}:t.filters,rangeFilters:r?{}:t.rangeFilters,searchSettings:{...t.searchSettings,maxNumberOfRecordsToReturn:x.current}}})},[]),O=(0,c.useCallback)(e=>{C(t=>({...t,facetDebounceDelayMillis:e}))},[]),k=(0,c.useCallback)(e=>{typeof e.maxNumberOfRecordsToReturn==`number`&&(x.current=e.maxNumberOfRecordsToReturn),C(t=>{let n={...t.searchSettings,...e};return e.coverageSetup?n.coverageSetup={...t.searchSettings.coverageSetup,...e.coverageSetup}:n.coverageSetup=t.searchSettings.coverageSetup,{...t,searchSettings:n}})},[]),A=(0,c.useCallback)(e=>{v.current=!0,C(t=>({...t,searchSettings:{...t.searchSettings,maxNumberOfRecordsToReturn:e}}))},[]),j=(0,c.useCallback)((e,t)=>{_.current=!0,C(n=>{let r={...n.filters},i=r[e]||[],a=i.includes(t)?i.filter(e=>e!==t):[...i,t];return a.length?r[e]=a:delete r[e],{...n,filters:r}})},[]),M=(0,c.useCallback)((e,t)=>{C(n=>n.valueMatch[e]===t?n:{...n,valueMatch:{...n.valueMatch,[e]:t}})},[]),N=(0,c.useCallback)((e,t,n)=>{_.current=!0,C(r=>({...r,rangeFilters:{...r.rangeFilters,[e]:{min:t,max:n}}}))},[]),P=(0,c.useCallback)(()=>{_.current=!0,C(e=>({...e,filters:{},rangeFilters:{}}))},[]),F=(0,c.useCallback)((e,t,n=!0)=>{n&&(_.current=!0),C(n=>{let r={...n.filters},i=(r[e]||[]).filter(e=>e!==t);return i.length>0?r[e]=i:delete r[e],{...n,filters:r}})},[]),I=(0,c.useCallback)((e,t=!0)=>{t&&(_.current=!0),C(t=>{let n={...t.rangeFilters};return delete n[e],{...t,rangeFilters:n}})},[]),L=(0,c.useCallback)((e,t)=>{C(n=>({...n,sortBy:e||void 0,sortAscending:e?t:void 0}))},[]);return(0,u.jsx)(b.Provider,{value:{state:S,isFetchingInitial:T.isFetchingInitial,authError:T.authError??void 0,allowEmptySearch:i,url:t,team:n,dataset:r,authenticatedFetch:E,setQuery:D,toggleFilter:j,setValueMatch:M,setRangeFilter:N,resetFilters:P,resetSingleFilter:F,resetRangeFilter:I,setSort:L,setDebounceDelay:O,setSearchSettings:k,fetchMoreResults:A},children:e})},S=()=>{let e=(0,c.useContext)(b);if(!e)throw Error(`useSearchContext must be used within a SearchProvider`);return e},C=({className:e=``,autoFocus:t=!1,inputSize:n=`default`,showClear:r=!0,showFocus:i=!1,...a})=>{let{state:{query:o,filters:s,rangeFilters:c,searchSettings:l},setQuery:f}=S();Object.keys(s).length>0||Object.keys(c).length;let p=o.length>0;return(0,u.jsx)(d.SearchField,{type:`text`,value:o,onChange:e=>f(e.target.value),placeholder:l.placeholderText,autoFocus:t,className:e,showSearchIcon:!0,inputSize:n,showFocusBorder:i,...a,children:r&&p&&(0,u.jsx)(d.Button,{variant:`ghost`,size:`micro`,onClick:()=>f(``),"aria-label":`Clear search`,children:`Clear`})})},w={placeholder:`_placeholder_ee9qi_1`,invalid:`_invalid_ee9qi_11`},T={row:`_row_1i201_1`,content:`_content_1i201_19`,indexNumber:`_indexNumber_1i201_31`,scoreNumber:`_scoreNumber_1i201_39`,skeletonBars:`_skeletonBars_1i201_53`,skeletonBarLg:`_skeletonBarLg_1i201_59`,fade:`_fade_1i201_1`,skeletonBarSm:`_skeletonBarSm_1i201_66`},E=({skeleton:e=!1,index:t,score:n,showScore:r=!1,children:i,skeletonDelay:a=0,skeletonWidths:o=[62,38]})=>(0,u.jsxs)(`div`,{className:T.row,children:[t!==void 0&&(0,u.jsx)(`div`,{className:T.indexNumber,children:t}),(0,u.jsx)(`div`,{className:T.content,children:e?(0,u.jsxs)(`div`,{className:T.skeletonBars,children:[(0,u.jsx)(`div`,{className:T.skeletonBarLg,style:{width:`${o[0]}%`,animationDelay:`${a}s`}}),(0,u.jsx)(`div`,{className:T.skeletonBarSm,style:{width:`${o[1]}%`,animationDelay:`${a+.05}s`}})]}):i}),r&&n!==void 0&&(0,u.jsx)(`div`,{className:T.scoreNumber,children:n})]}),D={wrapper:`_wrapper_81m3c_6`,skeletonAppear:`_skeletonAppear_81m3c_1`},O=[[62,38],[75,45],[58,33],[70,42],[65,50],[55,35],[72,40],[60,30]],k=({rows:e=6})=>(0,u.jsx)(`div`,{className:D.wrapper,children:Array.from({length:e}).map((e,t)=>(0,u.jsx)(E,{skeleton:!0,skeletonDelay:t*.1,skeletonWidths:O[t%O.length]},t))}),A=/^\[\s*(?:'[^']*'(?:\s*,\s*'[^']*')*)?\s*\]$/;function j(e){let t=e.trim();if(!t.startsWith(`[`)||!t.endsWith(`]`))return;try{let e=JSON.parse(t);if(Array.isArray(e))return e.map(e=>String(e))}catch{}if(!A.test(t))return;let n=[],r=/'([^']*)'/g,i;for(;(i=r.exec(t))!==null;)n.push(i[1]);return n}var M=({fields:e,resultsPerPage:t,parseArrayStrings:n=!1,children:r})=>{let{state:{results:i,resultsSuppressed:a,searchSettings:o,truncationIndex:s,query:l,error:p},isFetchingInitial:m,authError:h,allowEmptySearch:g,fetchMoreResults:_}=S(),v=t??30,[y,b]=(0,c.useState)(v),x=(0,c.useRef)(0),C=(0,c.useRef)(``);(0,c.useEffect)(()=>{let e=l!==C.current;(!i||i.length<x.current||e)&&b(v),x.current=i?.length??0,C.current=l},[i,v,l]);let T=i&&i.length>y,D=()=>{let e=y+v;b(e),i&&e>=i.length&&(!s||s===-1||s>i.length)&&_(i.length+v)};if(m)return g?(0,u.jsx)(k,{rows:v}):(0,u.jsx)(`div`,{className:w.placeholder,children:(0,u.jsx)(f.Indx,{size:200,color:`var(--lv5)`})});let O=h??p;return O?(0,u.jsx)(`div`,{className:w.invalid,role:`alert`,children:(0,u.jsx)(`p`,{children:O})}):a||i===null?(0,u.jsx)(`div`,{className:w.placeholder,children:(0,u.jsx)(f.Indx,{size:200,color:`var(--lv5)`})}):i.length===0?(0,u.jsx)(`div`,{className:w.invalid,children:(0,u.jsx)(`p`,{children:`No results found.`})}):(0,u.jsxs)(u.Fragment,{children:[(0,u.jsx)(`div`,{children:(i??[]).slice(0,y).map((t,i)=>{let a=t.document,s=t.score,c;try{c=typeof a==`string`?JSON.parse(a):a}catch{return(0,u.jsx)(`div`,{className:w.invalid,children:(0,u.jsx)(`p`,{children:`Invalid JSON`})},i)}let l;if(e&&e.length>0){l={};for(let t of e)t in c&&(l[t]=c[t])}else l={...c};if(n)for(let e in l){let t=l[e];if(typeof t==`string`){let n=j(t);n&&(l[e]=n)}}return(0,u.jsx)(E,{index:i,score:s,showScore:o.showScore,children:r(l)},i)})}),T&&(0,u.jsx)(`div`,{style:{textAlign:`center`,marginTop:`20px`},children:(0,u.jsx)(d.Button,{variant:`secondary`,size:`micro`,onClick:D,children:l.trim()===``?`Load more`:s!==-1&&s!==void 0&&s>0?`Load results ${y+1}-${Math.min(y+v,i.length,s)} of ${s}`:`Load more`})})]})},N={row:`_row_ujwhc_1`,title:`_title_ujwhc_8`},P=({variant:e=`default`,children:t})=>(0,u.jsx)(`div`,{className:[N.row,e===`title`?N.title:``].filter(Boolean).join(` `),children:t}),F={bar:`_bar_145f5_12`,skeletonAppear:`_skeletonAppear_145f5_1`,fade:`_fade_145f5_1`,listRows:`_listRows_145f5_19`,sliderArea:`_sliderArea_145f5_25`,sliderTrack:`_sliderTrack_145f5_32`,inputRow:`_inputRow_145f5_40`,inputBar:`_inputBar_145f5_45`},I=[65,80,55,72,60,75,50,68],L=({title:e,rows:t=5,variant:n=`list`,collapsible:r=!0,startCollapsed:i=!1})=>(0,u.jsx)(d.FilterPanelBase,{title:e,collapsible:r,collapsed:i,children:n===`slider`?(0,u.jsxs)(`div`,{className:F.sliderArea,children:[(0,u.jsx)(`div`,{className:F.sliderTrack}),(0,u.jsxs)(`div`,{className:F.inputRow,children:[(0,u.jsx)(`div`,{className:F.inputBar,style:{animationDelay:`0.1s`}}),(0,u.jsx)(`div`,{className:F.inputBar,style:{animationDelay:`0.15s`}})]})]}):(0,u.jsx)(`div`,{className:F.listRows,children:Array.from({length:t}).map((e,t)=>(0,u.jsx)(`div`,{className:F.bar,style:{width:`${I[t%I.length]}%`,animationDelay:`${t*.05}s`}},t))})}),R={list:`_list_m82u6_2`,count:`_count_m82u6_7`,countValue:`_countValue_m82u6_17`,chip:`_chip_m82u6_22`,chipLabel:`_chipLabel_m82u6_32`,grid:`_grid_m82u6_40`},z=({field:e,label:t,preserveBlankFacetState:n=!1,preserveBlankFacetStateOrder:r=!1,sortFacetsBy:i=`histogram`,limit:a=10,collapsible:o=!0,startCollapsed:s=!1,displayType:l=`checkbox`,layout:f=`list`,showActivePanel:p=!1,showCount:m=!0,showNull:h=!1,match:g=`all`,displayIfEmptyQuery:_=!0,displayCondition:v=e=>!0})=>{let{state:{facets:y,filterableFields:b,facetableFields:x,filters:C,query:w},toggleFilter:T,setValueMatch:E,isFetchingInitial:D,allowEmptySearch:O}=S();(0,c.useEffect)(()=>{E(e,g)},[e,g,E]);let k=(0,c.useRef)(null),[A,j]=(0,c.useState)(a);if((0,c.useEffect)(()=>{j(a)},[y?.[e],a]),!O&&!w)return null;if(D||!y)return l===`toggle`?(0,u.jsx)(L,{rows:1,collapsible:!1}):(0,u.jsx)(L,{title:t,rows:Math.min(a,6),collapsible:o,startCollapsed:s});if(!v({query:w??``,filters:C,facets:y})||!_&&!w&&Object.keys(C).length<1)return null;if(!b?.includes(e)||!x?.includes(e)){let t=[];return b?.includes(e)||t.push(`filterable`),x?.includes(e)||t.push(`facetable`),(0,u.jsx)(d.FilterPanelBase,{collapsible:!1,children:(0,u.jsxs)(`div`,{style:{color:`red`,fontSize:`12px`},children:[`Cannot render filter for "`,e,`": missing `,t.join(` and `),`.`]})})}let M=y?.[e]??(l===`toggle`?[]:void 0);if(!M||!Array.isArray(M))return null;let N=C?.[e]??[];n&&!k.current&&M.length>0&&(k.current=M.reduce((e,t)=>(e[t.key]=t.value,e),{}));let P=new Map;n&&k.current&&Object.keys(k.current).forEach(e=>{P.set(e,0)}),M.forEach(e=>{P.set(e.key,e.value)});let F=new Set([`true`,`false`,`null`]),I=Array.from(P.keys()),z=l===`toggle`&&(I.length>0&&I.every(e=>F.has(e))||I.length===0&&N.length>0);if(z&&P.has(`null`)){let e=P.get(`null`)??0,t=P.get(`false`)??0;P.set(`false`,t+e),P.delete(`null`)}if(l===`toggle`&&!z)return(0,u.jsx)(d.FilterPanelBase,{collapsible:!1,children:(0,u.jsx)(`div`,{className:R.count,children:(0,u.jsx)(d.ToggleSwitch,{label:t,checked:!1,onChange:()=>{},disabled:!0})})});if(z){let n=P.get(`true`),r=typeof n==`number`?n:null,i=N.includes(`true`),a=r===0&&!i,o=m&&(r??0)>0?`${r}`:``;return(0,u.jsx)(d.FilterPanelBase,{collapsible:!1,children:(0,u.jsxs)(`div`,{className:R.count,children:[(0,u.jsx)(d.ToggleSwitch,{label:t,checked:i,onChange:()=>T(e,`true`),disabled:a}),` `,o]})})}let B=Array.from(P.entries());if(h||(B=B.filter(([e])=>e!==`null`)),B.length===0&&!n)return null;if(!r)if(i===`alphabetical`){let e=B.filter(([,e])=>typeof e==`number`&&e>0).sort(([e],[t])=>e.localeCompare(t)),t=B.filter(([,e])=>e===0||e===null).sort(([e],[t])=>e.localeCompare(t));B=[...e,...t]}else if(i===`numeric`){let e=(e,t)=>{let n=Number(e),r=Number(t);return!isNaN(n)&&!isNaN(r)?n-r:e.localeCompare(t)},t=B.filter(([,e])=>typeof e==`number`&&e>0).sort(([t],[n])=>e(t,n)),n=B.filter(([,e])=>e===0||e===null).sort(([t],[n])=>e(t,n));B=[...t,...n]}else{let e=B.filter(([,e])=>typeof e==`number`&&e>0),t=B.filter(([,e])=>e===0||e===null);B=[...e,...t]}let V=typeof a==`number`&&B.length>a,H=V?B.slice(0,A):B,U=(t,n)=>{let r=N.includes(t),i=n===0,a=m&&(n??0)>0?` (${n})`:``,o=m&&(n??0)>0?n:``;switch(l){case`button`:return f===`list`?(0,u.jsxs)(`div`,{className:R.count,children:[(0,u.jsx)(d.Button,{variant:r?`primary`:`secondary`,onClick:()=>T(e,t),disabled:i,size:`micro`,className:R.chip,title:t,children:(0,u.jsx)(`span`,{className:R.chipLabel,children:t})}),(0,u.jsx)(`span`,{className:R.countValue,children:o})]}):(0,u.jsx)(d.Button,{variant:r?`primary`:`secondary`,onClick:()=>T(e,t),disabled:i,size:`micro`,className:R.chip,title:`${t}${a}`,children:(0,u.jsx)(`span`,{className:R.chipLabel,children:`${t}${a}`})});case`toggle`:return(0,u.jsx)(d.ToggleSwitch,{label:t,checked:r,onChange:()=>T(e,t),disabled:i});default:return f===`list`?(0,u.jsxs)(`div`,{className:R.count,children:[(0,u.jsx)(d.Checkbox,{label:t,score:``,checked:r,onChange:()=>T(e,t),disabled:i}),(0,u.jsx)(`span`,{children:o})]}):(0,u.jsx)(d.Checkbox,{label:t,score:a,checked:r,onChange:()=>T(e,t),disabled:i})}};return(0,u.jsx)(d.FilterPanelBase,{title:t,collapsible:o,collapsed:o?s:!1,children:(0,u.jsxs)(`ul`,{className:f===`grid`?R.grid:R.list,style:{listStyle:`none`,padding:0,margin:0},children:[H.map(([e,t])=>(0,u.jsx)(`li`,{children:U(e,t)},e)),V&&A<B.length&&(()=>{let e=B.length-A,t=Math.min(50,e);return(0,u.jsx)(`li`,{className:R.toggleItem,children:(0,u.jsx)(d.Button,{variant:`ghost`,size:`micro`,onClick:()=>j(e=>e+50),children:`Show ${t} more of ${B.length} total`})})})()]})})},B={disabledMessage:`_disabledMessage_uci6n_1`,histogram:`_histogram_uci6n_6`,histogramBar:`_histogramBar_uci6n_15`};function V(e){if(!Number.isFinite(e))return 0;let t=String(e),n=t.indexOf(`.`);return n===-1?0:Math.min(6,t.length-n-1)}function H(e,t,n){let r=t+Math.round((e-t)/n)*n;return Number(r.toFixed(V(n)))}var U=({field:e,label:t,expectedMin:n=0,expectedMax:r=1e3,displayType:i=`input`,collapsible:a=!0,startCollapsed:o=!1,showHistogram:s=!1,resolution:l,step:f})=>{let{state:{rangeFilters:p,rangeBounds:m,facetStats:h,facets:g,filterableFields:_,facetableFields:v,query:y,facetDebounceDelayMillis:b},setRangeFilter:x,resetRangeFilter:C,allowEmptySearch:w,isFetchingInitial:T}=S(),E=m?.[e]!==void 0,D=m?.[e]??{min:n,max:r},O=D.min,k=D.max,A=h?.[e]??D,j=Math.max(O,Math.min(k,A.min)),M=Math.max(O,Math.min(k,A.max)),N=c.default.useMemo(()=>{if(f)return f;let t=Math.max(V(O),V(k)),n=g?.[e];if(Array.isArray(n))for(let e of n)t=Math.max(t,V(Number(e.key)));return t===0?1:Number((10**-t).toFixed(t))},[f,O,k,g,e]),P=E&&O===k,F=P?n:O,I=P?r:k,R=p?.[e],z=R?R.min:O,U=R?R.max:k,W=R!==void 0,ee=j!==O||M!==k,[G,K]=c.default.useState([z,U]),[te,q]=c.default.useState(!1),[ne,re]=c.default.useState(!1),[J,Y]=c.default.useState(String(z)),[X,Z]=c.default.useState(String(U));c.default.useEffect(()=>{Y(String(G[0])),Z(String(G[1]))},[G]);let{finalMin:Q,finalMax:$,isValidMin:ie,isValidMax:ae}=c.default.useMemo(()=>{let[e,t]=G,n=Math.max(O,Math.min(k,e)),r=Math.max(O,Math.min(k,t)),i=Math.min(n,r),a=Math.max(n,r);return{finalMin:i,finalMax:a,isValidMin:i>=O&&i<a,isValidMax:a<=k&&a>i}},[G,O,k]);c.default.useEffect(()=>{if(P)return;if(G[0]===O&&G[1]===k){q(!1),re(!1);return}let t=b??500,n=setTimeout(()=>{q(!ie),re(!ae)},300),r=setTimeout(()=>{ie&&ae&&(Q===O&&$===k?C(e,!1):x(e,Q,$))},t);return()=>{clearTimeout(n),clearTimeout(r)}},[Q,$,ie,ae,O,k,e,C,x,b,P]),c.default.useEffect(()=>{K([z,U]),q(!1),re(!1)},[z,U,e]);let oe=c.default.useCallback(e=>{P||K([Math.max(O,Math.min(M,e[0])),Math.max(j,Math.min(k,e[1]))])},[P,O,k,j,M]),se=c.default.useCallback(t=>{if(P)return;let n=Math.max(O,Math.min(M,t[0])),r=Math.max(j,Math.min(k,t[1]));n===O&&r===k?(K([O,k]),C(e,!0)):K([n,r])},[P,O,k,j,M,e,C]),ce=c.default.useCallback(()=>{if(P)return;let e=J.trim(),t=e===``?NaN:Number(e);if(isNaN(t)){Y(String(G[0]));return}let n=Math.max(O,Math.min(M,t));n<G[1]?K([n,G[1]]):K([O,G[1]]),Y(String(n<G[1]?n:O))},[P,J,G,O,M]),le=c.default.useCallback(()=>{if(P)return;let e=X.trim(),t=e===``?NaN:Number(e);if(isNaN(t)){Z(String(G[1]));return}let n=Math.max(j,Math.min(k,t));n>G[0]?K([G[0],n]):K([G[0],k]),Z(String(n>G[0]?n:k))},[P,X,G,j,k]),ue=e=>t=>{t.key===`Enter`&&e()},[de,fe]=c.default.useState(null),pe=c.default.useRef(null);c.default.useEffect(()=>{if(!s)return;let t=`${O}:${k}`;if(t===pe.current&&pe.current!==null)return;let n=g?.[e];if(!Array.isArray(n)||n.length===0)return;let r=n.filter(e=>e.value!=null&&!isNaN(Number(e.key))).map(e=>({key:e.key,value:e.value}));r.length>0&&(pe.current=t,fe(r))},[O,k,g,e,s]);let me=c.default.useMemo(()=>{if(!s||!de||de.length===0)return[];let e=k-O;if(e<=0)return[];let t=l??(Math.ceil(e/20)||1),n=Math.ceil(e/t);return Array.from({length:n},(e,n)=>{let r=O+n*t,i=O+(n+1)*t;return{bucketStart:r,bucketEnd:i,count:de.filter(e=>{let t=Number(e.key);return t>=r&&t<i}).reduce((e,t)=>e+t.value,0)}})},[s,de,O,k,l]),he=c.default.useMemo(()=>Math.max(...me.map(e=>e.count),1),[me]);return s&&!T&&!v?.includes(e)&&console.warn(`RangeFilterPanel: showHistogram=true but field "${e}" is not facetable. Add .Facetable = true to this field.`),T?(0,u.jsx)(L,{title:t,variant:`slider`,collapsible:a,startCollapsed:o}):!w&&!y?null:_?.includes(e)?i===`slider`?(0,u.jsxs)(d.FilterPanelBase,{title:t,collapsed:o,collapsible:a,children:[P&&(0,u.jsxs)(`div`,{className:B.disabledMessage,children:[`No adjustable range (all results have the same value: `,O,`).`]}),s&&me.length>0&&(0,u.jsx)(`div`,{className:B.histogram,children:(()=>{let e=typeof j==`number`&&typeof M==`number`&&M>j&&(j>O||M<k);return me.map((t,n)=>{let r=Math.max(1,Math.ceil(t.count/he*20)),i=e?t.bucketEnd>j&&t.bucketStart<M:t.bucketEnd>Q&&t.bucketStart<$;return(0,u.jsx)(`div`,{className:B.histogramBar,"data-testid":`histogram-bar`,"data-active":i,style:{height:`${r}px`,background:i?`var(--lv5)`:`var(--lv3)`}},n)})})()}),(0,u.jsx)(`div`,{style:{padding:`10px 10px 20px 10px`},children:(0,u.jsx)(d.Slider,{min:F,max:I,step:N,value:P?[F,I]:[H(Q,F,N),H($,F,N)],isRange:!0,onChange:e=>oe(e),onFinalChange:e=>se(e),disabled:P,activeMin:j,activeMax:M,isFaceted:ee,highlightFaceted:W,"aria-label":t||`Filter by ${e}`})}),(0,u.jsxs)(`div`,{style:{display:`flex`,flex:`flex-grow`,gap:`10px`,alignItems:`flex-start`,justifyContent:`space-between`},children:[(0,u.jsx)(d.InputField,{label:`Min:`,type:`number`,value:P?String(O):J,min:O,max:Math.min(M,G[1]-1),onChange:e=>Y(e.target.value),onBlur:ce,onKeyDown:ue(ce),disabled:P,isValid:P||!te}),(0,u.jsx)(d.InputField,{label:`Max:`,type:`number`,value:P?String(k):X,min:Math.max(j,G[0]+1),max:k,onChange:e=>Z(e.target.value),onBlur:le,onKeyDown:ue(le),disabled:P,isValid:P||!ne})]})]}):(0,u.jsxs)(d.FilterPanelBase,{title:t,children:[P&&(0,u.jsxs)(`div`,{className:B.disabledMessage,children:[`No adjustable range (all results have the same value: `,O,`).`]}),(0,u.jsxs)(`div`,{style:{display:`flex`,gap:`10px`,alignItems:`flex-start`},children:[(0,u.jsx)(d.InputField,{label:`Min:`,type:`number`,value:P?String(O):J,min:O,max:Math.min(M,G[1]-1),onChange:e=>Y(e.target.value),onBlur:ce,onKeyDown:ue(ce),disabled:P,isValid:P||!te}),(0,u.jsx)(d.InputField,{label:`Max:`,type:`number`,value:P?String(k):X,min:Math.max(j,G[0]+1),max:k,onChange:e=>Z(e.target.value),onBlur:le,onKeyDown:ue(le),disabled:P,isValid:P||!ne})]})]}):(0,u.jsx)(d.FilterPanelBase,{collapsible:!1,children:(0,u.jsxs)(`div`,{style:{color:`red`,fontSize:`12px`},children:[`Cannot render filter for "`,e,`": missing filterable.`]})})},W={grid:`_grid_xm2uh_2`,chip:`_chip_xm2uh_17`,chipLabel:`_chipLabel_xm2uh_28`},ee=(0,c.memo)(({field:e,value:t,onReset:n})=>(0,u.jsx)(`li`,{children:(0,u.jsx)(d.Button,{onClick:n,iconRight:(0,u.jsx)(f.X_or_error,{}),variant:`primary`,size:`micro`,className:W.chip,title:`${e}: ${t}`,children:(0,u.jsxs)(`span`,{className:W.chipLabel,children:[e,`: `,t]})})})),G=(0,c.memo)(({field:e,min:t,max:n,onReset:r})=>(0,u.jsx)(`li`,{children:(0,u.jsx)(d.Button,{onClick:r,iconRight:(0,u.jsx)(f.X_or_error,{}),variant:`primary`,size:`micro`,className:W.chip,title:`${e}: ${t} – ${n}`,children:(0,u.jsxs)(`span`,{className:W.chipLabel,children:[e,`: `,t,` – `,n]})})}));function K(){let{state:{filters:e,rangeFilters:t},resetFilters:n,resetSingleFilter:r,resetRangeFilter:i}=S(),a=(0,c.useMemo)(()=>Object.entries(e).map(([e,t])=>t.map(t=>({field:e,value:t}))).flat(),[e]),o=(0,c.useMemo)(()=>Object.entries(t).map(([e,{min:t,max:n}])=>({field:e,min:t,max:n})),[t]);return(0,c.useMemo)(()=>Object.keys(e).length>0||Object.keys(t).length>0,[e,t])?(0,u.jsx)(d.FilterPanelBase,{collapsible:!1,title:`Active filters`,children:(0,u.jsxs)(`ul`,{className:W.grid,children:[a.map(({field:e,value:t})=>(0,u.jsx)(ee,{field:e,value:t,onReset:()=>r(e,t)},`${e}-${t}`)),o.map(({field:e,min:t,max:n})=>(0,u.jsx)(G,{field:e,min:t,max:n,onReset:()=>i(e)},e)),(0,u.jsx)(`li`,{children:(0,u.jsx)(d.Button,{onClick:n,size:`micro`,variant:`ghost`,children:`Reset`})})]})}):null}var te={select:`_select_nwf7i_1`,radioGroup:`_radioGroup_nwf7i_6`},q=({displayType:e=`dropdown`,collapsible:t=!0,startCollapsed:n=!1})=>{let{state:{sortableFields:r,sortBy:i,sortAscending:a},setSort:o,isFetchingInitial:s}=S();if(s)return(0,u.jsx)(L,{title:`Sort by`,rows:e===`radio`?3:1,collapsible:t,startCollapsed:n});if(!r||r.length===0)return null;let c=i?`${i}:${a?`asc`:`desc`}`:`none`,l=[{label:`None`,value:`none`},...r.flatMap(e=>[{label:`${e} (asc)`,value:`${e}:asc`},{label:`${e} (desc)`,value:`${e}:desc`}])],f=e=>{if(e===`none`||e===``)o(null,!0);else{let[t,n]=e.split(`:`);o(t,n===`asc`)}};return(0,u.jsx)(d.FilterPanelBase,{title:`Sort by`,collapsible:t,collapsed:t?n:!1,children:e===`dropdown`?(0,u.jsx)(d.Select,{value:c,onValueChange:f,options:l,placeholder:`Select sort...`,"aria-label":`Sort by`}):(0,u.jsx)(`div`,{className:te.radioGroup,children:l.map(e=>(0,u.jsx)(d.RadioButton,{id:`sort-${e.value}`,name:`sort-by`,value:e.value,label:e.label,checked:c===e.value,onChange:e=>f(e.target.value)},e.value))})})},ne={list:`_list_1y4fk_1`};function re(){let{state:{searchSettings:e},setSearchSettings:t}=S(),[n,r]=(0,c.useState)(!1),i=(e,n)=>{let r=parseInt(n,10);isNaN(r)||t({[e]:r})},a=(e,n)=>{t({[e]:n})},o=(n,r)=>{let i=parseInt(r,10);isNaN(i)||t({coverageSetup:{...e.coverageSetup,[n]:i}})},s=(n,r)=>{t({coverageSetup:{...e.coverageSetup,[n]:r}})};return(0,u.jsx)(d.FilterPanelBase,{collapsed:!0,title:`Settings`,children:(0,u.jsxs)(`ul`,{className:ne.list,children:[(0,u.jsx)(`li`,{children:(0,u.jsx)(d.InputField,{label:`Max Results`,type:`number`,value:e.maxNumberOfRecordsToReturn.toString(),onChange:e=>i(`maxNumberOfRecordsToReturn`,e.target.value)})}),(0,u.jsx)(`li`,{children:(0,u.jsx)(d.InputField,{label:`Coverage Depth`,type:`number`,value:e.coverageDepth.toString(),onChange:e=>i(`coverageDepth`,e.target.value)})}),(0,u.jsxs)(`li`,{children:[(0,u.jsx)(d.InputField,{label:`Minimum Score (16 bit)`,type:`number`,value:e.minimumScore.toString(),min:`0`,max:`65535`,onChange:e=>{let n=parseFloat(e.target.value);isNaN(n)||t({minimumScore:n})}}),(0,u.jsx)(`div`,{style:{padding:`10px 10px 20px 10px`},children:(0,u.jsx)(d.Slider,{min:0,max:65535,step:1,value:Math.max(0,Math.min(65535,Math.round(e.minimumScore))),onChange:e=>{t({minimumScore:e})},"aria-label":`Minimum score`})})]}),(0,u.jsx)(`li`,{children:(0,u.jsx)(d.InputField,{label:`Placeholder text`,type:`text`,value:e.placeholderText,onChange:e=>{t({placeholderText:e.target.value})}})}),(0,u.jsx)(`li`,{children:(0,u.jsx)(d.ToggleSwitch,{label:`Show score`,checked:e.showScore,onChange:e=>a(`showScore`,e)})}),(0,u.jsx)(`li`,{children:(0,u.jsx)(d.ToggleSwitch,{label:`Enable Coverage`,checked:e.enableCoverage,onChange:e=>a(`enableCoverage`,e)})}),(0,u.jsx)(`li`,{children:(0,u.jsx)(d.ToggleSwitch,{label:`Remove Duplicates`,checked:e.removeDuplicates,onChange:e=>a(`removeDuplicates`,e)})}),(0,u.jsx)(`li`,{children:(0,u.jsx)(d.Button,{variant:`ghost`,size:`micro`,iconRight:n?(0,u.jsx)(f.ArrowDown,{}):(0,u.jsx)(f.ArrowRight,{}),onClick:()=>r(e=>!e),children:n?`Hide Coverage Setup`:`Show Coverage Setup`})}),n&&(0,u.jsxs)(u.Fragment,{children:[(0,u.jsx)(`li`,{children:(0,u.jsx)(d.ToggleSwitch,{label:`Cover Whole Query`,checked:e.coverageSetup.coverWholeQuery,onChange:e=>s(`coverWholeQuery`,e)})}),(0,u.jsx)(`li`,{children:(0,u.jsx)(d.ToggleSwitch,{label:`Cover Whole Words`,checked:e.coverageSetup.coverWholeWords,onChange:e=>s(`coverWholeWords`,e)})}),(0,u.jsx)(`li`,{children:(0,u.jsx)(d.ToggleSwitch,{label:`Cover Fuzzy Words`,checked:e.coverageSetup.coverFuzzyWords,onChange:e=>s(`coverFuzzyWords`,e)})}),(0,u.jsx)(`li`,{children:(0,u.jsx)(d.ToggleSwitch,{label:`Cover Joined Words`,checked:e.coverageSetup.coverJoinedWords,onChange:e=>s(`coverJoinedWords`,e)})}),(0,u.jsx)(`li`,{children:(0,u.jsx)(d.ToggleSwitch,{label:`Cover Prefix Suffix`,checked:e.coverageSetup.coverPrefixSuffix,onChange:e=>s(`coverPrefixSuffix`,e)})}),(0,u.jsx)(`li`,{children:(0,u.jsx)(d.ToggleSwitch,{label:`Truncate`,checked:e.coverageSetup.truncate,onChange:e=>s(`truncate`,e)})}),(0,u.jsx)(`li`,{children:(0,u.jsx)(d.ToggleSwitch,{label:`Include Pattern Matches`,checked:e.coverageSetup.includePatternMatches,onChange:e=>s(`includePatternMatches`,e)})}),(0,u.jsx)(`li`,{children:(0,u.jsx)(d.InputField,{label:`Levenshtein Max Word Size`,type:`number`,value:e.coverageSetup.levenshteinMaxWordSize.toString(),onChange:e=>o(`levenshteinMaxWordSize`,e.target.value)})}),(0,u.jsx)(`li`,{children:(0,u.jsx)(d.InputField,{label:`Min Word Size`,type:`number`,value:e.coverageSetup.minWordSize.toString(),onChange:e=>o(`minWordSize`,e.target.value)})}),(0,u.jsx)(`li`,{children:(0,u.jsx)(d.InputField,{label:`Truncate Word Hit Limit`,type:`number`,value:e.coverageSetup.truncateWordHitLimit.toString(),onChange:e=>o(`truncateWordHitLimit`,e.target.value)})}),(0,u.jsx)(`li`,{children:(0,u.jsx)(d.InputField,{label:`Truncate Word Hit Tolerance`,type:`number`,value:e.coverageSetup.truncateWordHitTolerance.toString(),onChange:e=>o(`truncateWordHitTolerance`,e.target.value)})})]})]})})}var J=class extends c.Component{constructor(e){super(e),this.state={hasError:!1,error:null}}static getDerivedStateFromError(e){return{hasError:!0,error:e}}componentDidCatch(e,t){console.error(`[SearchErrorBoundary] Caught error:`,e,t)}reset=()=>{this.setState({hasError:!1,error:null})};render(){return this.state.hasError&&this.state.error?this.props.fallback?this.props.fallback(this.state.error,this.reset):(0,u.jsxs)(`div`,{style:{padding:`2rem`,backgroundColor:`#fee`,border:`2px solid #c33`,borderRadius:`8px`,maxWidth:`600px`,margin:`2rem auto`},children:[(0,u.jsx)(`h2`,{style:{color:`#c33`,marginTop:0},children:`⚠️ Search Initialization Error`}),(0,u.jsxs)(`p`,{style:{marginBottom:`1rem`},children:[(0,u.jsx)(`strong`,{children:`Error:`}),` `,this.state.error.message]}),(0,u.jsxs)(`div`,{style:{backgroundColor:`#fff`,padding:`1rem`,borderRadius:`4px`,marginBottom:`1rem`,fontSize:`0.9rem`},children:[(0,u.jsx)(`strong`,{children:`💡 Common fixes:`}),(0,u.jsxs)(`ul`,{style:{marginBottom:0,paddingLeft:`1.5rem`},children:[(0,u.jsx)(`li`,{children:`Check browser console for detailed error messages`}),(0,u.jsx)(`li`,{children:`Verify the url passed to SearchProvider is correct`}),(0,u.jsx)(`li`,{children:`Verify your bearer token is valid (create or check it on the IndxCloudApi website)`}),(0,u.jsx)(`li`,{children:`Ensure INDX server is running`}),(0,u.jsx)(`li`,{children:`Check dataset name spelling`})]})]}),(0,u.jsx)(d.Button,{variant:`primary`,size:`micro`,onClick:this.reset,children:`Try Again`})]}):this.props.children}};function Y(e,t){let{url:n,team:r,dataset:i,authenticatedFetch:a}=S(),[o,s]=(0,c.useState)(null),[l,u]=(0,c.useState)(!1),[d,f]=(0,c.useState)(void 0);return{results:o,isLoading:l,error:d,search:(0,c.useCallback)(async o=>{u(!0),f(void 0);try{let c=await e(o),l={fieldName:t.fieldName,vector:c,maxResults:t.maxResults??10};t.filter&&(l.filter=t.filter);let u=await a(`${n}/api/teams/${r}/datasets/${i}/search/vector`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(l)});if(!u.ok)throw await m.fromResponse(`VectorSearch`,u);let d=await u.json();if(d.length===0){s([]);return}let f=d.map(e=>e.documentKey),p=await a(`${n}/api/teams/${r}/datasets/${i}/documents/lookup`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(f)});if(!p.ok)throw await m.fromResponse(`GetJson`,p);s((await p.json()).map((e,t)=>({document:e,documentKey:f[t],score:d[t].score})))}catch(e){f(e instanceof Error?e.message:`Vector search failed`),s(null)}finally{u(!1)}},[e,t.fieldName,t.maxResults,t.filter,n,r,i,a])}}function X(e,t){let{url:n,team:r,dataset:i,authenticatedFetch:a}=S(),[o,s]=(0,c.useState)(null),[l,u]=(0,c.useState)(!1),[d,f]=(0,c.useState)(void 0);return{results:o,isLoading:l,error:d,search:(0,c.useCallback)(async o=>{u(!0),f(void 0);try{let c=await e(o),l={text:o,embeddingField:t.fieldName,vector:c,maxNumberOfRecordsToReturn:t.maxResults??10,alpha:t.alpha??.5};t.filter&&(l.filter=t.filter),t.timeoutMs&&(l.timeOutLimitMilliseconds=t.timeoutMs);let u=await a(`${n}/api/teams/${r}/datasets/${i}/search/hybrid`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(l)});if(!u.ok)throw await m.fromResponse(`HybridSearch`,u);let d=await u.json();if(d.length===0){s([]);return}let f=d.map(e=>e.documentKey),p=await a(`${n}/api/teams/${r}/datasets/${i}/documents/lookup`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(f)});if(!p.ok)throw await m.fromResponse(`GetJson`,p);s((await p.json()).map((e,t)=>({document:e,documentKey:f[t],score:d[t].score})))}catch(e){f(e instanceof Error?e.message:`Hybrid search failed`),s(null)}finally{u(!1)}},[e,t.fieldName,t.alpha,t.maxResults,t.filter,t.timeoutMs,n,r,i,a])}}exports.ActiveFiltersPanel=K,exports.FilterPanelSkeleton=L,exports.IndxApiError=m,exports.RangeFilterPanel=U,exports.SearchContext=b,exports.SearchErrorBoundary=J,exports.SearchInput=C,exports.SearchProvider=x,exports.SearchResult=E,exports.SearchResultRow=P,exports.SearchResults=M,exports.SearchResultsSkeleton=k,exports.SearchSettingsPanel=re,exports.SortByPanel=q,exports.ValueFilterPanel=z,exports.useHybridSearch=X,exports.useSearch=S,exports.useSearchContext=S,exports.useVectorSearch=Y;
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.getPrototypeOf,a=Object.prototype.hasOwnProperty,o=(e,i,o,s)=>{if(i&&typeof i==`object`||typeof i==`function`)for(var c=r(i),l=0,u=c.length,d;l<u;l++)d=c[l],!a.call(e,d)&&d!==o&&t(e,d,{get:(e=>i[e]).bind(null,d),enumerable:!(s=n(i,d))||s.enumerable});return e},s=(n,r,a)=>(a=n==null?{}:e(i(n)),o(r||!n||!n.__esModule?t(a,`default`,{value:n,enumerable:!0}):a,n));require("@indxsearch/systm/styles.css");let c=require("react");c=s(c);let l=require("@indxsearch/indx-types"),u=require("react/jsx-runtime"),d=require("@indxsearch/systm"),f=require("@indxsearch/pixl");function p({url:e,team:t,dataset:n,preAuthenticatedToken:r,enableDebugLogs:i=!1}){let[a,o]=(0,c.useState)(null),[s,u]=(0,c.useState)(!0),[d,f]=(0,c.useState)([]),[p,m]=(0,c.useState)([]),[h,g]=(0,c.useState)([]),[_,v]=(0,c.useState)({}),[y,b]=(0,c.useState)({}),[x,S]=(0,c.useState)(0),[C,w]=(0,c.useState)(null);return(0,c.useEffect)(()=>{(async()=>{w(null);try{if(!r)throw console.error(`[Auth] ❌ Missing bearer token`),console.error(`[Auth] 💡 Pass preAuthenticatedToken to SearchProvider (create a token on the Indx Dashboard)`),Error(`A bearer token is required. Check console for instructions.`);if(!e)throw console.error(`[Auth] ❌ Missing INDX server URL`),console.error(`[Auth] 💡 Pass a url to SearchProvider`),Error(`INDX server URL is required. Check console for instructions.`);if(!n)throw console.error(`[Auth] ❌ Missing dataset name`),console.error(`[Auth] 💡 Pass dataset="your-dataset-name" to SearchProvider`),Error(`Dataset name is required. Check console for instructions.`);i&&console.log(`[Auth] ✅ Using bearer token`);let a=r,s=e=>fetch(e,{method:`GET`,headers:{accept:`text/plain`,Authorization:`Bearer ${a}`}});i&&console.log(`[Auth] 🔍 Checking dataset status...`);let c=await s(`${e}/api/teams/${t}/datasets/${n}/status`);if(!c.ok){if(c.status===401)throw console.error(`[Auth] ❌ Authentication failed (401 Unauthorized)`),console.error(`[Auth] 💡 Your token may be expired or invalid`),console.error(`[Auth] 💡 Create or refresh your token on the Indx Dashboard`),Error(`Authentication failed (401). Token may be expired. Check console for instructions.`);if(c.status===404)throw console.error(`[Auth] ❌ Dataset "`+n+`" not found (404)`),console.error(`[Auth] 💡 Available datasets can be checked with: curl -X GET "`+e+`/api/me/datasets" -H "Authorization: Bearer YOUR_TOKEN"`),console.error(`[Auth] 💡 Make sure you spelled the dataset name correctly`),Error(`Dataset "`+n+`" not found. Check console for instructions.`);{let t=await c.text();throw console.error(`[Auth] ❌ Failed to get dataset status:`,c.status,t),console.error(`[Auth] 💡 Check if your INDX server is running at:`,e),Error(`Failed to connect to INDX server. Check console for details.`)}}let u=await c.json();i&&console.log(`[Auth] 📊 Dataset status:`,u),o(a),i&&console.log(`[Auth] ✅ Dataset session established`),u.systemState!==void 0&&u.systemState!==l.SystemState.Ready&&(console.warn(`[Auth] ⚠️ Dataset is not ready yet. Current state:`,l.SystemState[u.systemState]),console.warn(`[Auth] 💡 Wait for indexing to complete before searching`));let d=u.documentCount??u.numberOfRecords??0;d===0?(console.warn(`[Auth] ⚠️ Dataset "`+n+`" is empty (0 records)`),console.warn(`[Auth] 💡 Add documents to your dataset before searching`),console.warn(`[Auth] 💡 Search will work but return no results`)):i&&console.log(`[Auth] ✅ Dataset has`,d,`records`);let[p,h,_]=await Promise.all([s(`${e}/api/teams/${t}/datasets/${n}/fields/filterable`),s(`${e}/api/teams/${t}/datasets/${n}/fields/facetable`),s(`${e}/api/teams/${t}/datasets/${n}/fields/sortable`)]);if(!p.ok)throw console.error(`[Auth] ❌ GetFilterableFields failed:`,p.status,await p.text()),Error(`Failed to get filterable fields. Check console for details.`);if(!h.ok)throw console.error(`[Auth] ❌ GetFacetableFields failed:`,h.status,await h.text()),Error(`Failed to get facetable fields. Check console for details.`);if(!_.ok)throw console.error(`[Auth] ❌ GetSortableFields failed:`,_.status,await _.text()),Error(`Failed to get sortable fields. Check console for details.`);let[y,x,C]=await Promise.all([p.json().catch(e=>(console.error(`Failed to parse GetFilterableFields response:`,e),[])),h.json().catch(e=>(console.error(`Failed to parse GetFacetableFields response:`,e),[])),_.json().catch(e=>(console.error(`Failed to parse GetSortableFields response:`,e),[]))]);f(y||[]),m(x||[]),g(C||[]),S(d);let w={facets:{}};try{let r=await fetch(`${e}/api/teams/${t}/datasets/${n}/search`,{method:`POST`,headers:{"Content-Type":`application/json`,Authorization:`Bearer ${a}`},body:JSON.stringify({text:``,maxNumberOfRecordsToReturn:0,enableFacets:!0})});r.ok?w=await r.json().catch(e=>(console.warn(`Failed to parse blank search response:`,e),{facets:{}})):(console.warn(`Blank search failed:`,r.status,r.statusText),console.warn(`Continuing without initial facet data - facets will be populated after first search`))}catch(e){console.warn(`Blank search error:`,e),console.warn(`Continuing without initial facet data - facets will be populated after first search`)}let T={};if(w.facets){for(let[e,t]of Object.entries(w.facets))if(Array.isArray(t)&&t.length>0){let n=t.map(e=>Number(e.key)).filter(e=>!isNaN(e));n.length>0&&(T[e]={min:Math.min(...n),max:Math.max(...n)})}}let E={};if(w.facets)for(let[e,t]of Object.entries(w.facets))Array.isArray(t)&&(E[e]=t.map(e=>e.key));v(T),b(E),i&&console.log(`[Auth] ✅ Initialization complete`)}catch(t){console.error(`[Auth] ❌ Initialization failed:`,t),(t instanceof Error||typeof t==`object`&&t&&`message`in t)&&console.error(`[Auth] 💡 Error:`,t.message),t instanceof TypeError&&t.message.includes(`fetch`)&&(console.error(`[Auth] ❌ Network error - cannot connect to INDX server`),console.error(`[Auth] 💡 Check if the server is running at:`,e),console.error(`[Auth] 💡 Check the url you passed to SearchProvider`),console.error(`[Auth] 💡 For local development, it should be: http://localhost:5001`)),w(t instanceof Error?t.message:String(t))}finally{u(!1)}})()},[e,t,n]),{token:a,isFetchingInitial:s,authError:C,initialFacetStats:_,initialFacetKeys:y,filterableFields:d,facetableFields:p,sortableFields:h,totalDocumentCount:x}}var m=class e extends Error{status;code;problem;retryAfterSeconds;constructor(e,t,n,r){let i=n?.detail??n?.title;super(`${e} failed: HTTP ${t}${i?` — ${i}`:``}`),this.name=`IndxApiError`,this.status=t,this.code=n?.code,this.problem=n,this.retryAfterSeconds=r}get retryable(){return this.code===`invalidState`&&this.problem?.retryable===!0}static async fromResponse(t,n){let r;try{let e=await n.json();e&&typeof e==`object`&&typeof e.code==`string`?r=e:e&&typeof e==`object`&&(r={...e,code:``})}catch{}let i=n.headers?.get?.(`Retry-After`),a=i!=null&&/^\d+$/.test(i)?Number(i):void 0;return new e(t,n.status,r,a)}};async function h(e,t,n,r,i,a,o){let s=await o(`${r}/api/teams/${i}/datasets/${a}/filters/${e}`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(t)});if(!s.ok)throw await m.fromResponse(n,s);let c=await s.json();if(!c||typeof c.hashString!=`string`)throw Error(`${n} failed: server returned no filter token`);return c}async function g(e,t,n,r,i,a){if(e.length===0)return null;if(e.length===1)return e[0];let o=e[0];for(let s=1;s<e.length;s++)o=await h(`combine`,{a:o,b:e[s],useAndOperation:t===`and`},`CombineFilters`,n,r,i,a);return o}async function _(e,t,n,r,i,a,o={},s={}){let c=Object.entries(e??{}).filter(([,e])=>e.length>0),l=Object.entries(t??{}),u=Object.entries(s??{}).filter(([,e])=>e.length>0),d=(e,{min:t,max:o})=>h(`range`,{fieldName:e,lowerLimit:t,upperLimit:o},`Range filter '${e}'`,n,r,i,a),[f,p,m]=await Promise.all([Promise.all(c.map(async([e,t])=>g(await Promise.all(t.map(t=>h(`value`,{fieldName:e,value:t},`Value filter '${e}'`,n,r,i,a))),o[e]===`any`?`or`:`and`,n,r,i,a))),Promise.all(l.map(([e,t])=>d(e,t))),Promise.all(u.map(async([e,t])=>g(await Promise.all(t.map(t=>d(e,t))),`or`,n,r,i,a)))]);return g([...f,...p,...m],`and`,n,r,i,a)}function v(e,t){let n,r=(...r)=>{clearTimeout(n),n=setTimeout(()=>e(...r),t)};return r.cancel=()=>clearTimeout(n),r}function y({state:e,setState:t,authenticatedFetch:n,auth:r,url:i,team:a,dataset:o,allowEmptySearch:s,facetsEnabled:l,enableDebugLogs:u,shouldFetchMore:d}){let f=(0,c.useRef)(0),p=(0,c.useRef)(void 0),h=(0,c.useRef)(!1),[g,y]=(0,c.useState)({}),[b,x]=(0,c.useState)(``),[S,C]=(0,c.useState)(``);(0,c.useEffect)(()=>{r.isFetchingInitial||t(e=>({...e,facetStats:r.initialFacetStats,rangeBounds:r.initialFacetStats,totalDocumentCount:r.totalDocumentCount,filterableFields:r.filterableFields,facetableFields:r.facetableFields,sortableFields:r.sortableFields,fieldsSeeded:!0}))},[r.isFetchingInitial,r.initialFacetStats,r.totalDocumentCount,r.filterableFields,r.facetableFields,r.sortableFields,t]);let w=e.searchSettings.maxNumberOfRecordsToReturn,T=e.searchSettings.enableCoverage,E=e.searchSettings.removeDuplicates,D=e.searchSettings.coverageDepth,O=e.searchSettings.minimumScore,k=e.searchSettings.coverageSetup,A=e.sortBy,j=e.sortAscending,M=(0,c.useCallback)(async({enableFacets:c})=>{if(!r.token)return;let l=++f.current;if(t(e=>({...e,isLoading:!0})),e.query.trim()===``){if(!s)return;c=!0}try{let d=c?Array.from(new Set([...Object.keys(e.filters).filter(t=>e.valueMatch[t]===`any`&&(e.filters[t]?.length??0)>0),...Object.keys(e.bucketFilters).filter(t=>(e.bucketFilters[t]?.length??0)>0)])):[],[p,...h]=await Promise.all([_(e.filters,e.rangeFilters,i,a,o,n,e.valueMatch,e.bucketFilters),...d.map(t=>_({...e.filters,[t]:[]},e.rangeFilters,i,a,o,n,e.valueMatch,{...e.bucketFilters,[t]:[]}))]),v=s||e.query.trim()!==``,M={text:e.query,enableCoverage:T,removeDuplicates:E,coverageDepth:D,coverageSetup:k},N={...M,maxNumberOfRecordsToReturn:v?w:0,enableFacets:c,...p?{filter:p}:{},...A?{sortBy:A}:{},...j===void 0?{}:{sortAscending:j}};u&&console.log(`[performSearch] request body:`,JSON.stringify(N,null,2));let P=e=>n(`${i}/api/teams/${a}/datasets/${o}/search`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(e)}),[F,...I]=await Promise.all([P(N),...h.map(e=>P({...M,maxNumberOfRecordsToReturn:0,enableFacets:!0,...e?{filter:e}:{}}))]);if(!F.ok)throw await m.fromResponse(`Search`,F);let L=await F.json(),R=L.truncationIndex??-1,z={};for(let e=0;e<d.length;e++){let t=d[e];if(!I[e].ok)throw await m.fromResponse(`Facets for '${t}'`,I[e]);let n=await I[e].json();n.facets?.[t]!==void 0&&(z[t]=n.facets[t])}let B=L.records||[],V=B.map(e=>e.documentKey),H=B.map(e=>e.score),U=[];if(v&&V.length>0){let e=await n(`${i}/api/teams/${a}/datasets/${o}/documents/lookup`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(V)});if(!e.ok)throw await m.fromResponse(`Document lookup`,e);U=(await e.json()).map((e,t)=>({document:e,documentKey:V[t],score:H[t]}))}let W={};if(c&&L.facets){for(let[e,t]of Object.entries(L.facets))if(Array.isArray(t)&&t.length>0){let n=t.map(e=>Number(e.key)).filter(e=>!isNaN(e));n.length>0&&(W[e]={min:Math.min(...n),max:Math.max(...n)})}}if(l!==f.current)return;let G=e.query!==b,K=e.query!==S,q=e.facetStats??{};if(G?(q={...r.initialFacetStats,...W},y(q),x(e.query)):q={...g,...W},K&&c){let n={...e.rangeBounds};for(let[e,t]of Object.entries(W))n[e]=t;t(e=>({...e,rangeBounds:n})),C(e.query)}let J=Object.keys(z).length>0?{...L.facets??{},...z}:L.facets;if(c&&(!J||Object.keys(J).length===0)){J={};for(let[e,t]of Object.entries(r.initialFacetKeys))J[e]=t.map(e=>({key:e,value:null}))}let Y=U.filter(t=>{let n=e.query.trim();return n===``||n.length===1?!0:t.score>=O});t(e=>({...e,results:Y,error:void 0,resultsSuppressed:!v,...c?{facets:J,facetStats:q}:{},isLoading:!1,truncationIndex:R}))}catch(e){if(console.error(`[Search] ❌ Search failed:`,e),e instanceof TypeError&&e.message.includes(`fetch`)?(console.error(`[Search] ❌ Network error - cannot reach INDX server`),console.error(`[Search] 💡 Check if server is running at:`,i)):e instanceof Error&&(e.message.includes(`401`)?(console.error(`[Search] ❌ Authentication failed`),console.error(`[Search] 💡 Your token may have expired. Create or refresh it on the Indx Dashboard.`)):e.message.includes(`404`)?(console.error(`[Search] ❌ Dataset not found`),console.error(`[Search] 💡 Check that dataset "`+o+`" exists`)):console.error(`[Search] 💡 Error:`,e.message)),l!==f.current)return;t(t=>({...t,results:null,isLoading:!1,resultsSuppressed:!1,error:e instanceof Error?e.message:`Search failed`}))}},[e.query,e.filters,e.valueMatch,e.rangeFilters,e.bucketFilters,e.facetStats,A,j,w,T,E,D,k,O,n,r.initialFacetStats,r.initialFacetKeys,r.token,g,b,S,e.rangeBounds,i,a,o,s,u,t]);(0,c.useEffect)(()=>{p.current=M},[M]);let N=(0,c.useRef)(null);(0,c.useEffect)(()=>(N.current?.cancel(),N.current=v(()=>{u&&console.log(`Debounced searchWithFacets fired`),p.current?.({enableFacets:!0})},e.facetDebounceDelayMillis??500),()=>{N.current?.cancel()}),[e.facetDebounceDelayMillis]),(0,c.useEffect)(()=>{!r.isFetchingInitial&&r.token&&!h.current&&(s&&p.current?.({enableFacets:l}),h.current=!0)},[r.isFetchingInitial,r.token,s,l]),(0,c.useEffect)(()=>{if(!r.token||!h.current)return;let n=e.query.trim(),i=n===``&&s;if(n===``&&!s){e.resultsSuppressed||t(e=>({...e,resultsSuppressed:!0}));return}return i?(N.current?.cancel(),p.current?.({enableFacets:l})):l?(u&&console.log(`Search fired`),p.current?.({enableFacets:!1}),N.current?.()):p.current?.({enableFacets:!1}),()=>{N.current?.cancel()}},[e.query,s,l]),(0,c.useEffect)(()=>{if(!h.current||!r.token||e.filterRevision===0)return;let t=e.query.trim();!s&&t===``||p.current?.({enableFacets:l})},[e.filterRevision]),(0,c.useEffect)(()=>{if(!h.current||!r.token)return;let t=e.query.trim();!s&&t===``||p.current?.({enableFacets:l})},[A,j]);let P=(0,c.useRef)(!0),F=(0,c.useRef)(e.query);(0,c.useEffect)(()=>{if(P.current){P.current=!1;return}if(F.current!==e.query||!h.current||!r.token)return;if(d.current){d.current=!1,p.current?.({enableFacets:!1});return}let t=e.query.trim();!s&&t===``||p.current?.({enableFacets:l})},[w,T,E,D,k,O]),(0,c.useEffect)(()=>{F.current=e.query},[e.query])}var b=(0,c.createContext)(void 0),x=({children:e,url:t,team:n,dataset:r,allowEmptySearch:i=!1,maxResults:a=10,facetDebounceDelayMillis:o=500,enableFacets:s=!0,coverageDepth:l=500,removeDuplicates:d=!0,enableCoverage:f=!0,initialCoverageSetup:m={},enableDebugLogs:h=!1,preAuthenticatedToken:g})=>{let _=(0,c.useRef)(!1),v=(0,c.useRef)(a),[x,S]=(0,c.useState)({query:``,results:null,isLoading:!1,resultsSuppressed:!i,facetDebounceDelayMillis:o,filterableFields:[],facetableFields:[],sortableFields:[],filters:{},valueMatch:{},rangeFilters:{},bucketFilters:{},filterRevision:0,fieldsSeeded:!1,facetStats:{},rangeBounds:{},searchSettings:{maxNumberOfRecordsToReturn:a,coverageDepth:l,enableCoverage:f,removeDuplicates:d,minimumScore:0,showScore:!0,placeholderText:`Type to search`,coverageSetup:{coverWholeQuery:!0,coverWholeWords:!0,coverFuzzyWords:!0,coverJoinedWords:!0,coverPrefixSuffix:!0,truncate:!0,includePatternMatches:!0,minWordSize:2,levenshteinMaxWordSize:20,truncateWordHitLimit:1,truncateWordHitTolerance:0,truncationScore:65024,...m}}});(0,c.useEffect)(()=>{h&&console.log(`SearchContext mounted on client`)},[h]),(0,c.useEffect)(()=>{S(e=>({...e,facetDebounceDelayMillis:o}))},[o]);let[C]=(0,c.useState)(s),w=p({url:t,team:n,dataset:r,preAuthenticatedToken:g,enableDebugLogs:h}),T=(0,c.useCallback)((e,t={})=>{if(!w.token)throw Error(`No authentication token available`);return fetch(e,{...t,headers:{...t.headers,Authorization:`Bearer ${w.token}`}})},[w.token]);y({state:x,setState:S,authenticatedFetch:T,auth:w,url:t,team:n,dataset:r,allowEmptySearch:i,facetsEnabled:C,enableDebugLogs:h,shouldFetchMore:_});let E=(0,c.useCallback)(e=>{S(t=>{let n=Object.keys(t.filters).length>0,r=Object.keys(t.rangeFilters).length>0,i=Object.keys(t.bucketFilters).length>0;return{...t,query:e,filters:n?{}:t.filters,rangeFilters:r?{}:t.rangeFilters,bucketFilters:i?{}:t.bucketFilters,searchSettings:{...t.searchSettings,maxNumberOfRecordsToReturn:v.current}}})},[]),D=(0,c.useCallback)(e=>{S(t=>({...t,facetDebounceDelayMillis:e}))},[]),O=(0,c.useCallback)(e=>{typeof e.maxNumberOfRecordsToReturn==`number`&&(v.current=e.maxNumberOfRecordsToReturn),S(t=>{let n={...t.searchSettings,...e};return e.coverageSetup?n.coverageSetup={...t.searchSettings.coverageSetup,...e.coverageSetup}:n.coverageSetup=t.searchSettings.coverageSetup,{...t,searchSettings:n}})},[]),k=(0,c.useCallback)(e=>{_.current=!0,S(t=>({...t,searchSettings:{...t.searchSettings,maxNumberOfRecordsToReturn:e}}))},[]),A=(0,c.useCallback)((e,t,n=!1)=>{S(r=>{let i={...r.filters},a=i[e]||[],o=a.includes(t)?a.filter(e=>e!==t):n?[t]:[...a,t];return o.length?i[e]=o:delete i[e],{...r,filters:i,filterRevision:r.filterRevision+1}})},[]),j=(0,c.useCallback)((e,t)=>{S(n=>n.valueMatch[e]===t?n:{...n,valueMatch:{...n.valueMatch,[e]:t}})},[]),M=(0,c.useCallback)((e,t,n)=>{S(r=>({...r,rangeFilters:{...r.rangeFilters,[e]:{min:t,max:n}},filterRevision:r.filterRevision+1}))},[]),N=(0,c.useCallback)(()=>{S(e=>({...e,filters:{},rangeFilters:{},bucketFilters:{},filterRevision:e.filterRevision+1}))},[]),P=(0,c.useCallback)((e,t,n=!0)=>{S(r=>{let i={...r.filters},a=(i[e]||[]).filter(e=>e!==t);return a.length>0?i[e]=a:delete i[e],{...r,filters:i,filterRevision:r.filterRevision+ +!!n}})},[]),F=(0,c.useCallback)((e,t=!0)=>{S(n=>{if(!(e in n.rangeFilters))return n;let r={...n.rangeFilters};return delete r[e],{...n,rangeFilters:r,filterRevision:n.filterRevision+ +!!t}})},[]),I=(e,t)=>e.min===t.min&&e.max===t.max,L=(0,c.useCallback)((e,t,n=!1)=>{S(r=>{let i=r.bucketFilters[e]??[],a=i.some(e=>I(e,t))?i.filter(e=>!I(e,t)):n?[t]:[...i,t],o={...r.bucketFilters};return a.length>0?o[e]=a:delete o[e],{...r,bucketFilters:o,filterRevision:r.filterRevision+1}})},[]),R=(0,c.useCallback)((e,t,n=!0)=>{S(r=>{let i={...r.bucketFilters},a=t?(i[e]??[]).filter(e=>!I(e,t)):[];return a.length>0?i[e]=a:delete i[e],{...r,bucketFilters:i,filterRevision:r.filterRevision+ +!!n}})},[]),z=(0,c.useCallback)((e,t)=>{S(n=>({...n,sortBy:e||void 0,sortAscending:e?t:void 0}))},[]);return(0,u.jsx)(b.Provider,{value:{state:x,isFetchingInitial:w.isFetchingInitial||!x.fieldsSeeded,authError:w.authError??void 0,allowEmptySearch:i,url:t,team:n,dataset:r,authenticatedFetch:T,setQuery:E,toggleFilter:A,setValueMatch:j,setRangeFilter:M,resetFilters:N,resetSingleFilter:P,resetRangeFilter:F,toggleBucketFilter:L,resetBucketFilter:R,setSort:z,setDebounceDelay:D,setSearchSettings:O,fetchMoreResults:k},children:e})},S=()=>{let e=(0,c.useContext)(b);if(!e)throw Error(`useSearchContext must be used within a SearchProvider`);return e},C=({className:e=``,autoFocus:t=!1,inputSize:n=`default`,showClear:r=!0,showFocus:i=!1,...a})=>{let{state:{query:o,filters:s,rangeFilters:c,searchSettings:l},setQuery:f}=S();Object.keys(s).length>0||Object.keys(c).length;let p=o.length>0;return(0,u.jsx)(d.SearchField,{type:`text`,value:o,onChange:e=>f(e.target.value),placeholder:l.placeholderText,autoFocus:t,className:e,showSearchIcon:!0,inputSize:n,showFocusBorder:i,...a,children:r&&p&&(0,u.jsx)(d.Button,{variant:`ghost`,size:`micro`,onClick:()=>f(``),"aria-label":`Clear search`,children:`Clear`})})},w={placeholder:`_placeholder_ee9qi_1`,invalid:`_invalid_ee9qi_11`},T={row:`_row_1i201_1`,content:`_content_1i201_19`,indexNumber:`_indexNumber_1i201_31`,scoreNumber:`_scoreNumber_1i201_39`,skeletonBars:`_skeletonBars_1i201_53`,skeletonBarLg:`_skeletonBarLg_1i201_59`,fade:`_fade_1i201_1`,skeletonBarSm:`_skeletonBarSm_1i201_66`},E=({skeleton:e=!1,index:t,score:n,showScore:r=!1,children:i,skeletonDelay:a=0,skeletonWidths:o=[62,38]})=>(0,u.jsxs)(`div`,{className:T.row,children:[t!==void 0&&(0,u.jsx)(`div`,{className:T.indexNumber,children:t}),(0,u.jsx)(`div`,{className:T.content,children:e?(0,u.jsxs)(`div`,{className:T.skeletonBars,children:[(0,u.jsx)(`div`,{className:T.skeletonBarLg,style:{width:`${o[0]}%`,animationDelay:`${a}s`}}),(0,u.jsx)(`div`,{className:T.skeletonBarSm,style:{width:`${o[1]}%`,animationDelay:`${a+.05}s`}})]}):i}),r&&n!==void 0&&(0,u.jsx)(`div`,{className:T.scoreNumber,children:n})]}),D={wrapper:`_wrapper_81m3c_6`,skeletonAppear:`_skeletonAppear_81m3c_1`},O=[[62,38],[75,45],[58,33],[70,42],[65,50],[55,35],[72,40],[60,30]],k=({rows:e=6})=>(0,u.jsx)(`div`,{className:D.wrapper,children:Array.from({length:e}).map((e,t)=>(0,u.jsx)(E,{skeleton:!0,skeletonDelay:t*.1,skeletonWidths:O[t%O.length]},t))}),A=/^\[\s*(?:'[^']*'(?:\s*,\s*'[^']*')*)?\s*\]$/;function j(e){let t=e.trim();if(!t.startsWith(`[`)||!t.endsWith(`]`))return;try{let e=JSON.parse(t);if(Array.isArray(e))return e.map(e=>String(e))}catch{}if(!A.test(t))return;let n=[],r=/'([^']*)'/g,i;for(;(i=r.exec(t))!==null;)n.push(i[1]);return n}var M=({fields:e,resultsPerPage:t,parseArrayStrings:n=!1,children:r})=>{let{state:{results:i,resultsSuppressed:a,searchSettings:o,truncationIndex:s,query:l,error:p},isFetchingInitial:m,authError:h,allowEmptySearch:g,fetchMoreResults:_}=S(),v=t??30,[y,b]=(0,c.useState)(v),x=(0,c.useRef)(0),C=(0,c.useRef)(``);(0,c.useEffect)(()=>{let e=l!==C.current;(!i||i.length<x.current||e)&&b(v),x.current=i?.length??0,C.current=l},[i,v,l]);let T=i&&i.length>y,D=()=>{let e=y+v;b(e),i&&e>=i.length&&(!s||s===-1||s>i.length)&&_(i.length+v)};if(m)return g?(0,u.jsx)(k,{rows:v}):(0,u.jsx)(`div`,{className:w.placeholder,children:(0,u.jsx)(f.Indx,{size:200,color:`var(--lv5)`})});let O=h??p;return O?(0,u.jsx)(`div`,{className:w.invalid,role:`alert`,children:(0,u.jsx)(`p`,{children:O})}):a||i===null?(0,u.jsx)(`div`,{className:w.placeholder,children:(0,u.jsx)(f.Indx,{size:200,color:`var(--lv5)`})}):i.length===0?(0,u.jsx)(`div`,{className:w.invalid,children:(0,u.jsx)(`p`,{children:`No results found.`})}):(0,u.jsxs)(u.Fragment,{children:[(0,u.jsx)(`div`,{children:(i??[]).slice(0,y).map((t,i)=>{let a=t.document,s=t.score,c;try{c=typeof a==`string`?JSON.parse(a):a}catch{return(0,u.jsx)(`div`,{className:w.invalid,children:(0,u.jsx)(`p`,{children:`Invalid JSON`})},i)}let l;if(e&&e.length>0){l={};for(let t of e)t in c&&(l[t]=c[t])}else l={...c};if(n)for(let e in l){let t=l[e];if(typeof t==`string`){let n=j(t);n&&(l[e]=n)}}return(0,u.jsx)(E,{index:i,score:s,showScore:o.showScore,children:r(l)},i)})}),T&&(0,u.jsx)(`div`,{style:{textAlign:`center`,marginTop:`20px`},children:(0,u.jsx)(d.Button,{variant:`secondary`,size:`micro`,onClick:D,children:l.trim()===``?`Load more`:s!==-1&&s!==void 0&&s>0?`Load results ${y+1}-${Math.min(y+v,i.length,s)} of ${s}`:`Load more`})})]})},N={row:`_row_ujwhc_1`,title:`_title_ujwhc_8`},P=({variant:e=`default`,children:t})=>(0,u.jsx)(`div`,{className:[N.row,e===`title`?N.title:``].filter(Boolean).join(` `),children:t}),F={bar:`_bar_4nxla_12`,skeletonAppear:`_skeletonAppear_4nxla_1`,fade:`_fade_4nxla_1`,listRows:`_listRows_4nxla_19`,sliderArea:`_sliderArea_4nxla_25`,sliderTrack:`_sliderTrack_4nxla_32`,inputRow:`_inputRow_4nxla_40`,inputBar:`_inputBar_4nxla_45`,histogramRow:`_histogramRow_4nxla_55`},I=[65,80,55,72,60,75,50,68],L=({title:e,rows:t=5,variant:n=`list`,withHistogram:r=!1,collapsible:i=!0,startCollapsed:a=!1})=>(0,u.jsx)(d.FilterPanelBase,{title:e,collapsible:i,collapsed:a,children:n===`slider`?(0,u.jsxs)(`div`,{className:F.sliderArea,children:[r&&(0,u.jsx)(`div`,{className:F.histogramRow}),(0,u.jsx)(`div`,{className:F.sliderTrack}),(0,u.jsxs)(`div`,{className:F.inputRow,children:[(0,u.jsx)(`div`,{className:F.inputBar,style:{animationDelay:`0.1s`}}),(0,u.jsx)(`div`,{className:F.inputBar,style:{animationDelay:`0.15s`}})]})]}):(0,u.jsx)(`div`,{className:F.listRows,children:Array.from({length:t}).map((e,t)=>(0,u.jsx)(`div`,{className:F.bar,style:{width:`${I[t%I.length]}%`,animationDelay:`${t*.05}s`}},t))})}),R={list:`_list_18vbb_2`,count:`_count_18vbb_7`,countValue:`_countValue_18vbb_17`,chip:`_chip_18vbb_22`,chipLabel:`_chipLabel_18vbb_32`,grid:`_grid_18vbb_40`,active:`_active_18vbb_54`},z=({field:e,label:t,preserveBlankFacetState:n=!1,preserveBlankFacetStateOrder:r=!1,sortFacetsBy:i=`histogram`,limit:a=10,collapsible:o=!0,startCollapsed:s=!1,control:l,displayType:f,layout:p=`list`,showActivePanel:m=!1,showCount:h=!0,showNull:g=!1,match:_=`all`,displayIfEmptyQuery:v=!0,displayCondition:y=e=>!0})=>{let{state:{facets:b,filterableFields:x,facetableFields:C,filters:w,query:T},toggleFilter:E,setValueMatch:D,isFetchingInitial:O,allowEmptySearch:k}=S(),A=l??f??`checkbox`,j=A===`radio`?`any`:_;(0,c.useEffect)(()=>{D(e,j)},[e,j,D]);let M=(0,c.useRef)(null),[N,P]=(0,c.useState)(a);if((0,c.useEffect)(()=>{P(a)},[b?.[e],a]),!k&&!T)return null;if(O||!b)return A===`toggle`?(0,u.jsx)(L,{rows:1,collapsible:!1}):(0,u.jsx)(L,{title:t,rows:Math.min(a,6),collapsible:o,startCollapsed:s});if(!y({query:T??``,filters:w,facets:b})||!v&&!T&&Object.keys(w).length<1)return null;if(!x?.includes(e)||!C?.includes(e)){let t=[];return x?.includes(e)||t.push(`filterable`),C?.includes(e)||t.push(`facetable`),(0,u.jsx)(d.FilterPanelBase,{collapsible:!1,children:(0,u.jsxs)(`div`,{style:{color:`red`,fontSize:`12px`},children:[`Cannot render filter for "`,e,`": missing `,t.join(` and `),`.`]})})}let F=b?.[e]??(A===`toggle`?[]:void 0);if(!F||!Array.isArray(F))return null;let I=w?.[e]??[];n&&!M.current&&F.length>0&&(M.current=F.reduce((e,t)=>(e[t.key]=t.value,e),{}));let z=new Map;n&&M.current&&Object.keys(M.current).forEach(e=>{z.set(e,0)}),F.forEach(e=>{z.set(e.key,e.value)});let B=new Set([`true`,`false`,`null`]),V=Array.from(z.keys()),H=A===`toggle`&&(V.length>0&&V.every(e=>B.has(e))||V.length===0&&I.length>0);if(H&&z.has(`null`)){let e=z.get(`null`)??0,t=z.get(`false`)??0;z.set(`false`,t+e),z.delete(`null`)}if(A===`toggle`&&!H)return(0,u.jsx)(d.FilterPanelBase,{collapsible:!1,children:(0,u.jsx)(`div`,{className:R.count,children:(0,u.jsx)(d.ToggleSwitch,{label:t,checked:!1,onChange:()=>{},disabled:!0})})});if(H){let n=z.get(`true`),r=typeof n==`number`?n:null,i=I.includes(`true`),a=r===0&&!i,o=h&&(r??0)>0?`${r}`:``;return(0,u.jsx)(d.FilterPanelBase,{collapsible:!1,children:(0,u.jsxs)(`div`,{className:R.count,children:[(0,u.jsx)(d.ToggleSwitch,{label:t,checked:i,onChange:()=>E(e,`true`),disabled:a}),` `,o]})})}let U=Array.from(z.entries());if(g||(U=U.filter(([e])=>e!==`null`)),U.length===0&&!n)return null;if(!r)if(i===`alphabetical`){let e=U.filter(([,e])=>typeof e==`number`&&e>0).sort(([e],[t])=>e.localeCompare(t)),t=U.filter(([,e])=>e===0||e===null).sort(([e],[t])=>e.localeCompare(t));U=[...e,...t]}else if(i===`numeric`){let e=(e,t)=>{let n=Number(e),r=Number(t);return!isNaN(n)&&!isNaN(r)?n-r:e.localeCompare(t)},t=U.filter(([,e])=>typeof e==`number`&&e>0).sort(([t],[n])=>e(t,n)),n=U.filter(([,e])=>e===0||e===null).sort(([t],[n])=>e(t,n));U=[...t,...n]}else{let e=U.filter(([,e])=>typeof e==`number`&&e>0),t=U.filter(([,e])=>e===0||e===null);U=[...e,...t]}let W=typeof a==`number`&&U.length>a,G=W?U.slice(0,N):U,K=(t,n)=>{let r=I.includes(t),i=n===0,a=h&&(n??0)>0?` (${n})`:``,o=h&&(n??0)>0?n:``,s=()=>E(e,t,A===`radio`);switch(A){case`button`:return p===`list`?(0,u.jsxs)(`div`,{className:R.count,children:[(0,u.jsx)(d.Button,{variant:r?`primary`:`secondary`,onClick:s,disabled:i,size:`micro`,className:R.chip,title:t,children:(0,u.jsx)(`span`,{className:R.chipLabel,children:t})}),(0,u.jsx)(`span`,{className:R.countValue,children:o})]}):(0,u.jsx)(d.Button,{variant:r?`primary`:`secondary`,onClick:s,disabled:i,size:`micro`,className:R.chip,title:`${t}${a}`,children:(0,u.jsx)(`span`,{className:R.chipLabel,children:`${t}${a}`})});case`toggle`:return(0,u.jsx)(d.ToggleSwitch,{label:t,checked:r,onChange:s,disabled:i});case`radio`:{let n=(0,u.jsx)(d.RadioButton,{id:`${e}-${t}`,name:e,value:t,label:p===`grid`?`${t}${a}`:t,checked:r,onChange:s,disabled:i});return p===`list`?(0,u.jsxs)(`div`,{className:R.count,children:[n,(0,u.jsx)(`span`,{className:R.countValue,children:o})]}):n}default:return p===`list`?(0,u.jsxs)(`div`,{className:R.count,children:[(0,u.jsx)(d.Checkbox,{label:t,score:``,checked:r,onChange:s,disabled:i}),(0,u.jsx)(`span`,{className:R.countValue,children:o})]}):(0,u.jsx)(d.Checkbox,{label:t,score:a,checked:r,onChange:s,disabled:i})}};return(0,u.jsx)(d.FilterPanelBase,{title:t,collapsible:o,collapsed:o?s:!1,className:m&&I.length>0?R.active:void 0,children:(0,u.jsxs)(`ul`,{className:p===`grid`?R.grid:R.list,style:{listStyle:`none`,padding:0,margin:0},children:[G.map(([e,t])=>(0,u.jsx)(`li`,{children:K(e,t)},e)),W&&N<U.length&&(()=>{let e=U.length-N,t=Math.min(50,e);return(0,u.jsx)(`li`,{className:R.toggleItem,children:(0,u.jsx)(d.Button,{variant:`ghost`,size:`micro`,onClick:()=>P(e=>e+50),children:`Show ${t} more of ${U.length} total`})})})()]})})},B={disabledMessage:`_disabledMessage_f0nx8_1`,histogram:`_histogram_f0nx8_6`,histogramLayer:`_histogramLayer_f0nx8_14`,histogramLive:`_histogramLive_f0nx8_22`,histogramLit:`_histogramLit_f0nx8_23`,histogramFill:`_histogramFill_f0nx8_30`,histogramBar:`_histogramBar_f0nx8_43`,histogramSeparators:`_histogramSeparators_f0nx8_61`,histogramSeparator:`_histogramSeparator_f0nx8_48`,active:`_active_f0nx8_76`};function V(e){if(!Number.isFinite(e))return 0;let t=String(e),n=t.indexOf(`.`);return n===-1?0:Math.min(6,t.length-n-1)}function H(e){let t=0;for(let n of e)t=Math.max(t,V(n));return t===0?1:Number((10**-t).toFixed(t))}function U(e,t){return Number(e.toFixed(V(t)))}function W(e,t,n){let r=t+Math.round((e-t)/n)*n;return Number(r.toFixed(V(n)))}var G=({field:e,label:t,expectedMin:n=0,expectedMax:r=1e3,control:i,displayType:a,showActivePanel:o=!1,collapsible:s=!0,startCollapsed:l=!1,showHistogram:f=!1,resolution:p,step:m})=>{let{state:{rangeFilters:h,rangeBounds:g,facetStats:_,facets:v,filterableFields:y,facetableFields:b,query:x,facetDebounceDelayMillis:C},setRangeFilter:w,resetRangeFilter:T,allowEmptySearch:E,isFetchingInitial:D}=S(),O=i??a??`input`,k=g?.[e]!==void 0,A=g?.[e]??{min:n,max:r},j=A.min,M=A.max,N=_?.[e]??A,P=Math.max(j,Math.min(M,N.min)),F=Math.max(j,Math.min(M,N.max)),I=c.default.useMemo(()=>{if(m)return m;let t=Math.max(V(j),V(M)),n=v?.[e];if(Array.isArray(n))for(let e of n)t=Math.max(t,V(Number(e.key)));return t===0?1:Number((10**-t).toFixed(t))},[m,j,M,v,e]),R=k&&j===M,z=R?n:j,H=R?r:M,G=h?.[e],K=o&&G!==void 0?B.active:void 0,q=G?G.min:j,J=G?G.max:M,Y=G!==void 0,ee=P!==j||F!==M,[X,Z]=c.default.useState([q,J]),[te,ne]=c.default.useState(!1),[re,ie]=c.default.useState(!1),[Q,ae]=c.default.useState(String(q)),[$,oe]=c.default.useState(String(J)),se=c.default.useMemo(()=>{let e=V(I);return{width:`calc(${Math.max(3,j.toFixed(e).length,M.toFixed(e).length,Q.length,$.length)+1}ch + 20px)`}},[I,j,M,Q,$]);c.default.useEffect(()=>{ae(String(X[0])),oe(String(X[1]))},[X]);let{finalMin:ce,finalMax:le,isValidMin:ue,isValidMax:de}=c.default.useMemo(()=>{let[e,t]=X,n=Math.max(j,Math.min(M,e)),r=Math.max(j,Math.min(M,t)),i=Math.min(n,r),a=Math.max(n,r);return{finalMin:i,finalMax:a,isValidMin:i>=j&&i<=a,isValidMax:a<=M&&a>=i}},[X,j,M]);c.default.useEffect(()=>{if(R)return;if(X[0]===j&&X[1]===M){ne(!1),ie(!1);return}let t=C??500,n=setTimeout(()=>{ne(!ue),ie(!de)},300),r=setTimeout(()=>{ue&&de&&(ce===j&&le===M?T(e,!1):w(e,ce,le))},t);return()=>{clearTimeout(n),clearTimeout(r)}},[ce,le,ue,de,j,M,e,T,w,C,R]),c.default.useEffect(()=>{Z([q,J]),ne(!1),ie(!1)},[q,J,e]);let fe=c.default.useCallback(e=>{R||Z([Math.max(j,Math.min(F,e[0])),Math.max(P,Math.min(M,e[1]))])},[R,j,M,P,F]),pe=c.default.useCallback(t=>{if(R)return;let n=Math.max(j,Math.min(F,t[0])),r=Math.max(P,Math.min(M,t[1]));n===j&&r===M?(Z([j,M]),T(e,!0)):Z([n,r])},[R,j,M,P,F,e,T]),me=c.default.useRef(null),he=c.default.useCallback((t,n)=>{if(R)return;let r=me.current;if(G&&r&&r.start===t&&r.last===n){me.current=null,Z([j,M]),T(e,!0);return}let i=W(Math.max(j,P,t),j,I),a=Math.max(i,W(Math.min(M,F,n),j,I));me.current={start:t,last:n},Z([i,a])},[R,G,j,M,P,F,I,e,T]),ge=c.default.useCallback(()=>{if(R)return;let e=Q.trim(),t=e===``?NaN:Number(e);if(isNaN(t)){ae(String(X[0]));return}let n=Math.max(j,Math.min(F,t));n<X[1]?Z([n,X[1]]):Z([j,X[1]]),ae(String(n<X[1]?n:j))},[R,Q,X,j,F]),_e=c.default.useCallback(()=>{if(R)return;let e=$.trim(),t=e===``?NaN:Number(e);if(isNaN(t)){oe(String(X[1]));return}let n=Math.max(P,Math.min(M,t));n>X[0]?Z([X[0],n]):Z([X[0],M]),oe(String(n>X[0]?n:M))},[R,$,X,P,M]),ve=e=>t=>{t.key===`Enter`&&e()},[ye,be]=c.default.useState(null),xe=c.default.useRef(null);c.default.useEffect(()=>{if(!f)return;let t=`${j}:${M}`;if(t===xe.current&&xe.current!==null)return;let n=v?.[e];if(!Array.isArray(n)||n.length===0)return;let r=n.filter(e=>e.value!=null&&!isNaN(Number(e.key))).map(e=>({key:e.key,value:e.value}));r.length>0&&(xe.current=t,be(r))},[j,M,v,e,f]);let Se=c.default.useMemo(()=>{if(!f||!ye||ye.length===0)return[];let e=M-j;if(e<=0)return[];let t=p??(Math.ceil(e/20)||1),n=Math.ceil(e/t);return Array.from({length:n},(e,r)=>{let i=j+r*t,a=j+(r+1)*t,o=r===n-1;return{bucketStart:i,bucketEnd:a,count:ye.filter(e=>{let t=Number(e.key);return t>=i&&(t<a||o&&t<=M)}).reduce((e,t)=>e+t.value,0),span:Math.min(a,M)-i,last:o?M:U(a-I,I)}})},[f,ye,j,M,p,I]),Ce=c.default.useMemo(()=>Math.max(...Se.map(e=>e.count),1),[Se]);return f&&!D&&!b?.includes(e)&&console.warn(`RangeFilterPanel: showHistogram=true but field "${e}" is not facetable. Add .Facetable = true to this field.`),D?(0,u.jsx)(L,{title:t,variant:`slider`,withHistogram:f,collapsible:s,startCollapsed:l}):!E&&!x?null:y?.includes(e)?O===`slider`?(0,u.jsxs)(d.FilterPanelBase,{title:t,collapsed:l,collapsible:s,className:K,children:[R&&(0,u.jsxs)(`div`,{className:B.disabledMessage,children:[`No adjustable range (all results have the same value: `,j,`).`]}),f&&Se.length===0&&(0,u.jsx)(`div`,{className:B.histogram}),f&&Se.length>0&&(()=>{let[e,t]=F>P&&(P>j||F<M)?[P,F]:[z,H],n=Math.max(ce,e),r=Math.min(le,t),i=H-z||1,a=e=>Math.max(0,Math.min(1,(e-z)/i)),o=e=>Math.max(0,Math.min(1,(H-e)/i)),s=a(n),c=r<n?1-s:o(r),l=e=>`calc(10px + (100% - 20px) * ${e})`,d=e=>`calc(10px + (100% - 20px) * ${e} - 1px)`,f=`inset(0 ${d(c)} 0 ${l(s)})`,p=`inset(0 ${d(o(t))} 0 ${l(a(e))})`,m=n=>n.last<e||n.bucketStart>t,h=Se.slice(1).map(e=>l((e.bucketStart-z)/i)),g=Se.map(e=>({...e,height:Math.max(1,Math.ceil(e.count/Ce*20))}));return(0,u.jsxs)(`div`,{className:B.histogram,children:[(0,u.jsx)(`div`,{className:B.histogramLayer,children:g.map((e,t)=>(0,u.jsx)(`button`,{type:`button`,className:B.histogramBar,style:{flexGrow:e.span},"data-testid":`histogram-bar`,disabled:R||m(e),"aria-label":`${e.bucketStart} to ${e.last}: ${e.count}`,title:`${e.bucketStart} to ${e.last}: ${e.count}`,onClick:()=>he(e.bucketStart,e.last),children:(0,u.jsx)(`span`,{className:B.histogramFill,style:{height:`${e.height}px`}})},t))}),(0,u.jsx)(`div`,{className:`${B.histogramLayer} ${B.histogramLive}`,"aria-hidden":`true`,"data-testid":`histogram-live`,style:{clipPath:p},children:g.map((e,t)=>(0,u.jsx)(`span`,{className:B.histogramBar,style:{flexGrow:e.span},children:(0,u.jsx)(`span`,{className:B.histogramFill,style:{height:`${e.height}px`}})},t))}),(0,u.jsx)(`div`,{className:`${B.histogramLayer} ${B.histogramLit}`,"aria-hidden":`true`,"data-testid":`histogram-lit`,style:{clipPath:f},children:g.map((e,t)=>(0,u.jsx)(`span`,{className:B.histogramBar,style:{flexGrow:e.span},children:(0,u.jsx)(`span`,{className:B.histogramFill,style:{height:`${e.height}px`}})},t))}),(0,u.jsx)(`div`,{className:B.histogramSeparators,"aria-hidden":`true`,children:h.map((e,t)=>(0,u.jsx)(`span`,{className:B.histogramSeparator,style:{left:e}},t))})]})})(),(0,u.jsx)(`div`,{style:{padding:`10px 10px 20px 10px`},children:(0,u.jsx)(d.Slider,{min:z,max:H,step:I,value:R?[z,H]:[W(ce,z,I),W(le,z,I)],isRange:!0,onChange:e=>fe(e),onFinalChange:e=>pe(e),disabled:R,activeMin:P,activeMax:F,isFaceted:ee,highlightFaceted:Y,"aria-label":t||`Filter by ${e}`})}),(0,u.jsxs)(`div`,{style:{display:`flex`,gap:`10px`,alignItems:`flex-start`,justifyContent:`space-between`},children:[(0,u.jsx)(d.InputField,{label:`Min:`,type:`number`,style:se,value:R?String(j):Q,min:j,max:U(Math.min(F,X[1]-I),I),onChange:e=>ae(e.target.value),onBlur:ge,onKeyDown:ve(ge),disabled:R,isValid:R||!te}),(0,u.jsx)(d.InputField,{label:`Max:`,type:`number`,style:se,value:R?String(M):$,min:U(Math.max(P,X[0]+I),I),max:M,onChange:e=>oe(e.target.value),onBlur:_e,onKeyDown:ve(_e),disabled:R,isValid:R||!re})]})]}):(0,u.jsxs)(d.FilterPanelBase,{title:t,className:K,children:[R&&(0,u.jsxs)(`div`,{className:B.disabledMessage,children:[`No adjustable range (all results have the same value: `,j,`).`]}),(0,u.jsxs)(`div`,{style:{display:`flex`,gap:`10px`,alignItems:`flex-start`},children:[(0,u.jsx)(d.InputField,{label:`Min:`,type:`number`,style:se,value:R?String(j):Q,min:j,max:U(Math.min(F,X[1]-I),I),onChange:e=>ae(e.target.value),onBlur:ge,onKeyDown:ve(ge),disabled:R,isValid:R||!te}),(0,u.jsx)(d.InputField,{label:`Max:`,type:`number`,style:se,value:R?String(M):$,min:U(Math.max(P,X[0]+I),I),max:M,onChange:e=>oe(e.target.value),onBlur:_e,onKeyDown:ve(_e),disabled:R,isValid:R||!re})]})]}):(0,u.jsx)(d.FilterPanelBase,{collapsible:!1,children:(0,u.jsxs)(`div`,{style:{color:`red`,fontSize:`12px`},children:[`Cannot render filter for "`,e,`": missing filterable.`]})})},K={list:`_list_apmmi_2`,grid:`_grid_apmmi_9`,count:`_count_apmmi_22`,countValue:`_countValue_apmmi_31`,chip:`_chip_apmmi_35`,error:`_error_apmmi_40`,active:`_active_apmmi_46`};function q(e,t){if(!t)return null;let n=0,r=!1;for(let i of t){let t=Number(i.key);if(!(Number.isNaN(t)||!e.contains(t))){if(typeof i.value!=`number`)return null;n+=i.value,r=!0}}return r?n:0}var J=({field:e,label:t,width:n,buckets:r,control:i,displayType:a,layout:o=`list`,showCount:s=!0,showEmpty:l=!1,limit:f,showActivePanel:p=!1,collapsible:m=!0,startCollapsed:h=!1})=>{let{state:{facets:g,filterableFields:_,facetableFields:v,bucketFilters:y,rangeBounds:b,facetStats:x,query:C},toggleBucketFilter:w,isFetchingInitial:T,allowEmptySearch:E}=S(),D=i??a??`checkbox`,O=g?.[e],k=y[e]??[],[A,j]=(0,c.useState)(f??1/0);(0,c.useEffect)(()=>{j(f??1/0)},[f,O]);let M=b?.[e]??x?.[e],N=(0,c.useMemo)(()=>{let e=[];if(M&&e.push(M.min,M.max),Array.isArray(O))for(let t of O)e.push(Number(t.key));return H(e.filter(Number.isFinite))},[M,O]),P=(0,c.useMemo)(()=>{let e=M?.min??-Number.MAX_VALUE,t=M?.max??Number.MAX_VALUE,i=(n,r,i)=>({label:i??(n===void 0?`up to ${r}`:r===void 0?`${n} and up`:`${n}-${r}`),range:{min:n??e,max:r??t},contains:e=>(n===void 0||e>=n)&&(r===void 0||e<=r)});if(r&&r.length>0)return r.map(e=>i(e.min,e.max,e.label));if(Array.isArray(n)){let e=[...n].sort((e,t)=>e-t),t=[];for(let n=0;n<e.length-1;n++)t.push(i(e[n],U(e[n+1]-N,N)));return t}if(typeof n==`number`&&n>0&&M){let e=[],t=Math.floor(M.min/n)*n;for(let r=t;r<=M.max;r=U(r+n,N))e.push(i(U(r,N),U(r+n-N,N)));return e}return[]},[r,n,M,N]);if(T||!g)return(0,u.jsx)(L,{title:t,rows:Math.max(1,Math.min(P.length||5,8)),collapsible:m,startCollapsed:h});if(!E&&!C)return null;if(!_?.includes(e))return(0,u.jsx)(d.FilterPanelBase,{collapsible:!1,children:(0,u.jsxs)(`div`,{className:K.error,children:[`Cannot render buckets for "`,e,`": field is not filterable.`]})});let F=v?.includes(e)&&Array.isArray(O),I=e=>k.some(t=>t.min===e.range.min&&t.max===e.range.max),R=P.map(e=>({bucket:e,count:F?q(e,O):null}));if(l||(R=R.filter(e=>e.count!==0||I(e.bucket))),R.length===0)return null;let z=R.slice(0,A),B=(t,n)=>{let r=I(t),i=n===0&&!r,a=s&&(n??0)>0?`${n}`:``,c=()=>w(e,t.range,D===`radio`);if(D===`radio`){let n=(0,u.jsx)(d.RadioButton,{id:`${e}-${t.range.min}-${t.range.max}`,name:e,value:t.label,label:o===`grid`&&a?`${t.label} (${a})`:t.label,checked:r,onChange:c,disabled:i});return o===`list`?(0,u.jsxs)(`div`,{className:K.count,children:[n,(0,u.jsx)(`span`,{className:K.countValue,children:a})]}):n}if(D===`button`){let e=(0,u.jsx)(d.Button,{variant:r?`primary`:`secondary`,onClick:c,disabled:i,size:`micro`,className:K.chip,children:o===`grid`&&a?`${t.label} (${a})`:t.label});return o===`list`?(0,u.jsxs)(`div`,{className:K.count,children:[e,(0,u.jsx)(`span`,{className:K.countValue,children:a})]}):e}return o===`list`?(0,u.jsxs)(`div`,{className:K.count,children:[(0,u.jsx)(d.Checkbox,{label:t.label,score:``,checked:r,onChange:c,disabled:i}),(0,u.jsx)(`span`,{className:K.countValue,children:a})]}):(0,u.jsx)(d.Checkbox,{label:t.label,score:a?` (${a})`:``,checked:r,onChange:c,disabled:i})};return(0,u.jsx)(d.FilterPanelBase,{title:t,collapsible:m,collapsed:m?h:!1,className:p&&k.length>0?K.active:void 0,children:(0,u.jsxs)(`ul`,{className:o===`grid`?K.grid:K.list,style:{listStyle:`none`,padding:0,margin:0},children:[z.map(({bucket:e,count:t})=>(0,u.jsx)(`li`,{children:B(e,t)},`${e.range.min}-${e.range.max}`)),z.length<R.length&&(0,u.jsx)(`li`,{children:(0,u.jsx)(d.Button,{variant:`ghost`,size:`micro`,onClick:()=>j(R.length),children:`Show ${R.length-z.length} more of ${R.length} total`})})]})})},Y={grid:`_grid_xm2uh_2`,chip:`_chip_xm2uh_17`,chipLabel:`_chipLabel_xm2uh_28`},ee=(0,c.memo)(({field:e,value:t,onReset:n})=>(0,u.jsx)(`li`,{children:(0,u.jsx)(d.Button,{onClick:n,iconRight:(0,u.jsx)(f.X_or_error,{}),variant:`primary`,size:`micro`,className:Y.chip,title:`${e}: ${t}`,children:(0,u.jsxs)(`span`,{className:Y.chipLabel,children:[e,`: `,t]})})})),X=(0,c.memo)(({field:e,min:t,max:n,onReset:r})=>(0,u.jsx)(`li`,{children:(0,u.jsx)(d.Button,{onClick:r,iconRight:(0,u.jsx)(f.X_or_error,{}),variant:`primary`,size:`micro`,className:Y.chip,title:`${e}: ${t} – ${n}`,children:(0,u.jsxs)(`span`,{className:Y.chipLabel,children:[e,`: `,t,` – `,n]})})})),Z=(0,c.memo)(({field:e,label:t,onReset:n})=>(0,u.jsx)(`li`,{children:(0,u.jsx)(d.Button,{onClick:n,iconRight:(0,u.jsx)(f.X_or_error,{}),variant:`primary`,size:`micro`,className:Y.chip,title:`${e}: ${t}`,children:(0,u.jsxs)(`span`,{className:Y.chipLabel,children:[e,`: `,t]})})}));function te(){let{state:{filters:e,rangeFilters:t,bucketFilters:n},resetFilters:r,resetSingleFilter:i,resetRangeFilter:a,resetBucketFilter:o}=S(),s=(0,c.useMemo)(()=>Object.entries(e).map(([e,t])=>t.map(t=>({field:e,value:t}))).flat(),[e]),l=(0,c.useMemo)(()=>Object.entries(t).map(([e,{min:t,max:n}])=>({field:e,min:t,max:n})),[t]),f=(0,c.useMemo)(()=>Object.entries(n).flatMap(([e,t])=>t.map(t=>({field:e,range:t,label:`${t.min}-${t.max}`}))),[n]);return(0,c.useMemo)(()=>Object.keys(e).length>0||Object.keys(t).length>0||f.length>0,[e,t,f])?(0,u.jsx)(d.FilterPanelBase,{collapsible:!1,title:`Active filters`,children:(0,u.jsxs)(`ul`,{className:Y.grid,children:[s.map(({field:e,value:t})=>(0,u.jsx)(ee,{field:e,value:t,onReset:()=>i(e,t)},`${e}-${t}`)),l.map(({field:e,min:t,max:n})=>(0,u.jsx)(X,{field:e,min:t,max:n,onReset:()=>a(e)},e)),f.map(({field:e,range:t,label:n})=>(0,u.jsx)(Z,{field:e,label:n,onReset:()=>o(e,t)},`${e}-${t.min}-${t.max}`)),(0,u.jsx)(`li`,{children:(0,u.jsx)(d.Button,{onClick:r,size:`micro`,variant:`ghost`,children:`Reset`})})]})}):null}var ne={select:`_select_nwf7i_1`,radioGroup:`_radioGroup_nwf7i_6`},re=({control:e,displayType:t,collapsible:n=!0,startCollapsed:r=!1})=>{let i=e??(t===`radio`?`radio`:`select`),{state:{sortableFields:a,sortBy:o,sortAscending:s},setSort:c,isFetchingInitial:l}=S();if(l)return(0,u.jsx)(L,{title:`Sort by`,rows:i===`radio`?3:1,collapsible:n,startCollapsed:r});if(!a||a.length===0)return null;let f=o?`${o}:${s?`asc`:`desc`}`:`none`,p=[{label:`None`,value:`none`},...a.flatMap(e=>[{label:`${e} (asc)`,value:`${e}:asc`},{label:`${e} (desc)`,value:`${e}:desc`}])],m=e=>{if(e===`none`||e===``)c(null,!0);else{let[t,n]=e.split(`:`);c(t,n===`asc`)}};return(0,u.jsx)(d.FilterPanelBase,{title:`Sort by`,collapsible:n,collapsed:n?r:!1,children:i===`select`?(0,u.jsx)(d.Select,{value:f,onValueChange:m,options:p,placeholder:`Select sort...`,"aria-label":`Sort by`}):(0,u.jsx)(`div`,{className:ne.radioGroup,children:p.map(e=>(0,u.jsx)(d.RadioButton,{id:`sort-${e.value}`,name:`sort-by`,value:e.value,label:e.label,checked:f===e.value,onChange:e=>m(e.target.value)},e.value))})})},ie={list:`_list_1y4fk_1`};function Q(){let{state:{searchSettings:e},setSearchSettings:t}=S(),[n,r]=(0,c.useState)(!1),i=(e,n)=>{let r=parseInt(n,10);isNaN(r)||t({[e]:r})},a=(e,n)=>{t({[e]:n})},o=(n,r)=>{let i=parseInt(r,10);isNaN(i)||t({coverageSetup:{...e.coverageSetup,[n]:i}})},s=(n,r)=>{t({coverageSetup:{...e.coverageSetup,[n]:r}})};return(0,u.jsx)(d.FilterPanelBase,{collapsed:!0,title:`Settings`,children:(0,u.jsxs)(`ul`,{className:ie.list,children:[(0,u.jsx)(`li`,{children:(0,u.jsx)(d.InputField,{label:`Max Results`,type:`number`,value:e.maxNumberOfRecordsToReturn.toString(),onChange:e=>i(`maxNumberOfRecordsToReturn`,e.target.value)})}),(0,u.jsx)(`li`,{children:(0,u.jsx)(d.InputField,{label:`Coverage Depth`,type:`number`,value:e.coverageDepth.toString(),onChange:e=>i(`coverageDepth`,e.target.value)})}),(0,u.jsxs)(`li`,{children:[(0,u.jsx)(d.InputField,{label:`Minimum Score (16 bit)`,type:`number`,value:e.minimumScore.toString(),min:`0`,max:`65535`,onChange:e=>{let n=parseFloat(e.target.value);isNaN(n)||t({minimumScore:n})}}),(0,u.jsx)(`div`,{style:{padding:`10px 10px 20px 10px`},children:(0,u.jsx)(d.Slider,{min:0,max:65535,step:1,value:Math.max(0,Math.min(65535,Math.round(e.minimumScore))),onChange:e=>{t({minimumScore:e})},"aria-label":`Minimum score`})})]}),(0,u.jsx)(`li`,{children:(0,u.jsx)(d.InputField,{label:`Placeholder text`,type:`text`,value:e.placeholderText,onChange:e=>{t({placeholderText:e.target.value})}})}),(0,u.jsx)(`li`,{children:(0,u.jsx)(d.ToggleSwitch,{label:`Show score`,checked:e.showScore,onChange:e=>a(`showScore`,e)})}),(0,u.jsx)(`li`,{children:(0,u.jsx)(d.ToggleSwitch,{label:`Enable Coverage`,checked:e.enableCoverage,onChange:e=>a(`enableCoverage`,e)})}),(0,u.jsx)(`li`,{children:(0,u.jsx)(d.ToggleSwitch,{label:`Remove Duplicates`,checked:e.removeDuplicates,onChange:e=>a(`removeDuplicates`,e)})}),(0,u.jsx)(`li`,{children:(0,u.jsx)(d.Button,{variant:`ghost`,size:`micro`,iconRight:n?(0,u.jsx)(f.ArrowDown,{}):(0,u.jsx)(f.ArrowRight,{}),onClick:()=>r(e=>!e),children:n?`Hide Coverage Setup`:`Show Coverage Setup`})}),n&&(0,u.jsxs)(u.Fragment,{children:[(0,u.jsx)(`li`,{children:(0,u.jsx)(d.ToggleSwitch,{label:`Cover Whole Query`,checked:e.coverageSetup.coverWholeQuery,onChange:e=>s(`coverWholeQuery`,e)})}),(0,u.jsx)(`li`,{children:(0,u.jsx)(d.ToggleSwitch,{label:`Cover Whole Words`,checked:e.coverageSetup.coverWholeWords,onChange:e=>s(`coverWholeWords`,e)})}),(0,u.jsx)(`li`,{children:(0,u.jsx)(d.ToggleSwitch,{label:`Cover Fuzzy Words`,checked:e.coverageSetup.coverFuzzyWords,onChange:e=>s(`coverFuzzyWords`,e)})}),(0,u.jsx)(`li`,{children:(0,u.jsx)(d.ToggleSwitch,{label:`Cover Joined Words`,checked:e.coverageSetup.coverJoinedWords,onChange:e=>s(`coverJoinedWords`,e)})}),(0,u.jsx)(`li`,{children:(0,u.jsx)(d.ToggleSwitch,{label:`Cover Prefix Suffix`,checked:e.coverageSetup.coverPrefixSuffix,onChange:e=>s(`coverPrefixSuffix`,e)})}),(0,u.jsx)(`li`,{children:(0,u.jsx)(d.ToggleSwitch,{label:`Truncate`,checked:e.coverageSetup.truncate,onChange:e=>s(`truncate`,e)})}),(0,u.jsx)(`li`,{children:(0,u.jsx)(d.ToggleSwitch,{label:`Include Pattern Matches`,checked:e.coverageSetup.includePatternMatches,onChange:e=>s(`includePatternMatches`,e)})}),(0,u.jsx)(`li`,{children:(0,u.jsx)(d.InputField,{label:`Levenshtein Max Word Size`,type:`number`,value:e.coverageSetup.levenshteinMaxWordSize.toString(),onChange:e=>o(`levenshteinMaxWordSize`,e.target.value)})}),(0,u.jsx)(`li`,{children:(0,u.jsx)(d.InputField,{label:`Min Word Size`,type:`number`,value:e.coverageSetup.minWordSize.toString(),onChange:e=>o(`minWordSize`,e.target.value)})}),(0,u.jsx)(`li`,{children:(0,u.jsx)(d.InputField,{label:`Truncate Word Hit Limit`,type:`number`,value:e.coverageSetup.truncateWordHitLimit.toString(),onChange:e=>o(`truncateWordHitLimit`,e.target.value)})}),(0,u.jsx)(`li`,{children:(0,u.jsx)(d.InputField,{label:`Truncate Word Hit Tolerance`,type:`number`,value:e.coverageSetup.truncateWordHitTolerance.toString(),onChange:e=>o(`truncateWordHitTolerance`,e.target.value)})})]})]})})}var ae=class extends c.Component{constructor(e){super(e),this.state={hasError:!1,error:null}}static getDerivedStateFromError(e){return{hasError:!0,error:e}}componentDidCatch(e,t){console.error(`[SearchErrorBoundary] Caught error:`,e,t)}reset=()=>{this.setState({hasError:!1,error:null})};render(){return this.state.hasError&&this.state.error?this.props.fallback?this.props.fallback(this.state.error,this.reset):(0,u.jsxs)(`div`,{style:{padding:`2rem`,backgroundColor:`#fee`,border:`2px solid #c33`,borderRadius:`8px`,maxWidth:`600px`,margin:`2rem auto`},children:[(0,u.jsx)(`h2`,{style:{color:`#c33`,marginTop:0},children:`⚠️ Search Initialization Error`}),(0,u.jsxs)(`p`,{style:{marginBottom:`1rem`},children:[(0,u.jsx)(`strong`,{children:`Error:`}),` `,this.state.error.message]}),(0,u.jsxs)(`div`,{style:{backgroundColor:`#fff`,padding:`1rem`,borderRadius:`4px`,marginBottom:`1rem`,fontSize:`0.9rem`},children:[(0,u.jsx)(`strong`,{children:`💡 Common fixes:`}),(0,u.jsxs)(`ul`,{style:{marginBottom:0,paddingLeft:`1.5rem`},children:[(0,u.jsx)(`li`,{children:`Check browser console for detailed error messages`}),(0,u.jsx)(`li`,{children:`Verify the url passed to SearchProvider is correct`}),(0,u.jsx)(`li`,{children:`Verify your bearer token is valid (create or check it on the Indx Dashboard)`}),(0,u.jsx)(`li`,{children:`Ensure INDX server is running`}),(0,u.jsx)(`li`,{children:`Check dataset name spelling`})]})]}),(0,u.jsx)(d.Button,{variant:`primary`,size:`micro`,onClick:this.reset,children:`Try Again`})]}):this.props.children}};function $(e,t){let{url:n,team:r,dataset:i,authenticatedFetch:a}=S(),[o,s]=(0,c.useState)(null),[l,u]=(0,c.useState)(!1),[d,f]=(0,c.useState)(void 0);return{results:o,isLoading:l,error:d,search:(0,c.useCallback)(async o=>{u(!0),f(void 0);try{let c=await e(o),l={fieldName:t.fieldName,vector:c,maxResults:t.maxResults??10};t.filter&&(l.filter=t.filter);let u=await a(`${n}/api/teams/${r}/datasets/${i}/search/vector`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(l)});if(!u.ok)throw await m.fromResponse(`VectorSearch`,u);let d=await u.json();if(d.length===0){s([]);return}let f=d.map(e=>e.documentKey),p=await a(`${n}/api/teams/${r}/datasets/${i}/documents/lookup`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(f)});if(!p.ok)throw await m.fromResponse(`GetJson`,p);s((await p.json()).map((e,t)=>({document:e,documentKey:f[t],score:d[t].score})))}catch(e){f(e instanceof Error?e.message:`Vector search failed`),s(null)}finally{u(!1)}},[e,t.fieldName,t.maxResults,t.filter,n,r,i,a])}}function oe(e,t){let{url:n,team:r,dataset:i,authenticatedFetch:a}=S(),[o,s]=(0,c.useState)(null),[l,u]=(0,c.useState)(!1),[d,f]=(0,c.useState)(void 0);return{results:o,isLoading:l,error:d,search:(0,c.useCallback)(async o=>{u(!0),f(void 0);try{let c=await e(o),l={text:o,embeddingField:t.fieldName,vector:c,maxNumberOfRecordsToReturn:t.maxResults??10,alpha:t.alpha??.5};t.filter&&(l.filter=t.filter),t.timeoutMs&&(l.timeOutLimitMilliseconds=t.timeoutMs);let u=await a(`${n}/api/teams/${r}/datasets/${i}/search/hybrid`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(l)});if(!u.ok)throw await m.fromResponse(`HybridSearch`,u);let d=await u.json();if(d.length===0){s([]);return}let f=d.map(e=>e.documentKey),p=await a(`${n}/api/teams/${r}/datasets/${i}/documents/lookup`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(f)});if(!p.ok)throw await m.fromResponse(`GetJson`,p);s((await p.json()).map((e,t)=>({document:e,documentKey:f[t],score:d[t].score})))}catch(e){f(e instanceof Error?e.message:`Hybrid search failed`),s(null)}finally{u(!1)}},[e,t.fieldName,t.alpha,t.maxResults,t.filter,t.timeoutMs,n,r,i,a])}}exports.ActiveFiltersPanel=te,exports.BucketFilterPanel=J,exports.FilterPanelSkeleton=L,exports.IndxApiError=m,exports.RangeFilterPanel=G,exports.SearchContext=b,exports.SearchErrorBoundary=ae,exports.SearchInput=C,exports.SearchProvider=x,exports.SearchResult=E,exports.SearchResultRow=P,exports.SearchResults=M,exports.SearchResultsSkeleton=k,exports.SearchSettingsPanel=Q,exports.SortByPanel=re,exports.ValueFilterPanel=z,exports.useHybridSearch=oe,exports.useSearch=S,exports.useSearchContext=S,exports.useVectorSearch=$;
|
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export { SearchProvider, useSearchContext, SearchContext } from './context/SearchContext';
|
|
2
|
-
export type { SearchContextType, SearchState } from './context/SearchContext';
|
|
2
|
+
export type { SearchContextType, SearchState, NumericRange, ValueMatch } from './context/SearchContext';
|
|
3
3
|
export { useSearch } from './context/useSearch';
|
|
4
4
|
export { SearchInput } from './components/SearchInput';
|
|
5
5
|
export { SearchResults } from './components/SearchResults';
|
|
@@ -13,6 +13,8 @@ export { FilterPanelSkeleton } from './components/FilterPanelSkeleton';
|
|
|
13
13
|
export type { FilterPanelSkeletonProps } from './components/FilterPanelSkeleton';
|
|
14
14
|
export { ValueFilterPanel } from './components/ValueFilterPanel';
|
|
15
15
|
export { RangeFilterPanel } from './components/RangeFilterPanel';
|
|
16
|
+
export { BucketFilterPanel } from './components/BucketFilterPanel';
|
|
17
|
+
export type { BucketFilterPanelProps, BucketSpec } from './components/BucketFilterPanel';
|
|
16
18
|
export { ActiveFiltersPanel } from './components/ActiveFiltersPanel';
|
|
17
19
|
export { SortByPanel } from './components/SortByPanel';
|
|
18
20
|
export { SearchSettingsPanel } from './components/SearchSettingsPanel';
|