@indxsearch/intrface 3.10.0 → 3.11.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 +6 -0
- package/dist/context/SearchContext.d.ts +2 -3
- package/dist/index.cjs.js +1 -1
- package/dist/index.es.js +367 -343
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 3.11.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- 8052579: A search now sends only the coverage settings you set. Leave one out and the dataset decides it, from the new Query parameters tab on Indx server, so a site owner can tune typo tolerance, truncation and the rest without a new release of the page. What you pass in `initialCoverageSetup` or `coverageDepth` still wins, one setting at a time. Against a server without query parameters nothing changes: it fills in the same defaults this package used to send. `SearchSettingsPanel` shows where each value comes from and can hand them all back to the dataset. `SearchSettings.coverageSetup` holds only the values the page sets, and `coverageDepth` is optional; the `RequiredCoverageSetup` type is gone.
|
|
8
|
+
|
|
3
9
|
## 3.10.0
|
|
4
10
|
|
|
5
11
|
### Minor Changes
|
|
@@ -2,13 +2,12 @@ import { default as React } from 'react';
|
|
|
2
2
|
import { CoverageSetup } from '@indxsearch/indx-types';
|
|
3
3
|
import { ValueMatch, NumericRange } from './buildFilterProxy';
|
|
4
4
|
export type { ValueMatch, NumericRange };
|
|
5
|
-
export type RequiredCoverageSetup = Required<CoverageSetup>;
|
|
6
5
|
export interface SearchSettings {
|
|
7
6
|
maxNumberOfRecordsToReturn: number;
|
|
8
|
-
coverageDepth
|
|
7
|
+
coverageDepth?: number;
|
|
9
8
|
enableCoverage: boolean;
|
|
10
9
|
removeDuplicates: boolean;
|
|
11
|
-
coverageSetup:
|
|
10
|
+
coverageSetup: CoverageSetup;
|
|
12
11
|
minimumScore: number;
|
|
13
12
|
showScore: boolean;
|
|
14
13
|
placeholderText: string;
|
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)({}),[C,w]=(0,c.useState)(0),[T,E]=(0,c.useState)(null);return(0,c.useEffect)(()=>{(async()=>{E(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,_,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`),s(`${e}/api/teams/${t}/datasets/${n}/fields/configuration`).catch(()=>null)]);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[x,C,T]=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(x||[]),m(C||[]),g(T||[]),w(d);let E={};if(y?.ok){let e=await y.json().catch(e=>(console.error(`Failed to parse GetFieldConfiguration response:`,e),[]));for(let t of e??[])t?.fieldName&&t?.fieldType&&(E[t.fieldName]=t.fieldType)}else i&&console.log(`[Auth] fields/configuration not available`,y?.status,`- every selected value will be sent as a value filter`);v(E);let D={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?D=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 O={};if(D.facets){for(let[e,t]of Object.entries(D.facets))if(Array.isArray(t)&&t.length>0){let n=t.map(e=>Number(e.key)).filter(e=>!isNaN(e));n.length>0&&(O[e]={min:Math.min(...n),max:Math.max(...n)})}}let k={};if(D.facets)for(let[e,t]of Object.entries(D.facets))Array.isArray(t)&&(k[e]=t.map(e=>e.key));b(O),S(k),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`)),E(t instanceof Error?t.message:String(t))}finally{u(!1)}})()},[e,t,n]),{token:a,isFetchingInitial:s,authError:T,initialFacetStats:y,initialFacetKeys:x,filterableFields:d,facetableFields:p,sortableFields:h,fieldTypes:_,totalDocumentCount:C}}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={},c={}){let l=Object.entries(e??{}).filter(([,e])=>e.length>0),u=Object.entries(t??{}),d=Object.entries(s??{}).filter(([,e])=>e.length>0),f=(e,{min:t,max:o})=>h(`range`,{fieldName:e,lowerLimit:t,upperLimit:o},`Range filter '${e}'`,n,r,i,a),p=(e,t)=>{let o=c[e]===`Number`?Number(t):NaN;return Number.isFinite(o)?f(e,{min:o,max:o}):h(`value`,{fieldName:e,value:t},`Value filter '${e}'`,n,r,i,a)},[m,_,v]=await Promise.all([Promise.all(l.map(async([e,t])=>g(await Promise.all(t.map(t=>p(e,t))),o[e]===`any`?`or`:`and`,n,r,i,a))),Promise.all(u.map(([e,t])=>f(e,t))),Promise.all(d.map(async([e,t])=>g(await Promise.all(t.map(t=>f(e,t))),`or`,n,r,i,a)))]);return g([...m,..._,...v],`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,sessionId:f,source:p,count:h}){let g=(0,c.useRef)(0),y=(0,c.useRef)(void 0),b=(0,c.useRef)(!1),[x,S]=(0,c.useState)({}),[C,w]=(0,c.useState)(``),[T,E]=(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,fieldTypes:r.fieldTypes,fieldsSeeded:!0}))},[r.isFetchingInitial,r.initialFacetStats,r.totalDocumentCount,r.filterableFields,r.facetableFields,r.sortableFields,t]);let D=e.searchSettings.maxNumberOfRecordsToReturn,O=e.searchSettings.enableCoverage,k=e.searchSettings.removeDuplicates,A=e.searchSettings.coverageDepth,j=e.searchSettings.minimumScore,M=e.searchSettings.coverageSetup,N=e.sortBy,P=e.sortAscending,F=(0,c.useCallback)(async({enableFacets:c})=>{if(!r.token)return;let l=++g.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)])):[],[v,...y]=await Promise.all([_(e.filters,e.rangeFilters,i,a,o,n,e.valueMatch,e.bucketFilters,e.fieldTypes),...d.map(t=>_({...e.filters,[t]:[]},e.rangeFilters,i,a,o,n,e.valueMatch,{...e.bucketFilters,[t]:[]},e.fieldTypes))]),b=s||e.query.trim()!==``,F={text:e.query,enableCoverage:O,removeDuplicates:k,coverageDepth:A,coverageSetup:M},I={...F,maxNumberOfRecordsToReturn:b?D:0,enableFacets:c,...v?{filter:v}:{},...N?{sortBy:N}:{},...P===void 0?{}:{sortAscending:P}};u&&console.log(`[performSearch] request body:`,JSON.stringify(I,null,2));let L=new URLSearchParams({session:f});p&&L.set(`source`,p),h||L.set(`count`,`false`);let R=e=>n(`${i}/api/teams/${a}/datasets/${o}/search?${L}`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(e)}),[z,...B]=await Promise.all([R(I),...y.map(e=>R({...F,maxNumberOfRecordsToReturn:0,enableFacets:!0,...e?{filter:e}:{}}))]);if(!z.ok)throw await m.fromResponse(`Search`,z);let V=await z.json(),H=z.headers.get(`Indx-Query-Id`)??void 0,U=V.truncationIndex??-1,W={};for(let e=0;e<d.length;e++){let t=d[e];if(!B[e].ok)throw await m.fromResponse(`Facets for '${t}'`,B[e]);let n=await B[e].json();n.facets?.[t]!==void 0&&(W[t]=n.facets[t])}let G=V.records||[],ee=G.map(e=>e.documentKey),K=G.map(e=>e.score),q=[];if(b&&ee.length>0){let e=await n(`${i}/api/teams/${a}/datasets/${o}/documents/lookup`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(ee)});if(!e.ok)throw await m.fromResponse(`Document lookup`,e);q=(await e.json()).map((e,t)=>({document:e,documentKey:ee[t],score:K[t]}))}let J={};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&&(J[e]={min:Math.min(...n),max:Math.max(...n)})}}if(l!==g.current)return;let te=e.query!==C,Y=e.query!==T,X=e.facetStats??{};if(te?(X={...r.initialFacetStats,...J},S(X),w(e.query)):X={...x,...J},Y&&c){let n={...e.rangeBounds};for(let[e,t]of Object.entries(J))n[e]=t;t(e=>({...e,rangeBounds:n})),E(e.query)}let Z=Object.keys(W).length>0?{...V.facets??{},...W}:V.facets;if(c&&(!Z||Object.keys(Z).length===0)){Z={};for(let[e,t]of Object.entries(r.initialFacetKeys))Z[e]=t.map(e=>({key:e,value:null}))}let ne=q.filter(t=>{let n=e.query.trim();return n===``||n.length===1?!0:t.score>=j}).map((e,t)=>({...e,position:t+1}));t(e=>({...e,results:ne,error:void 0,resultsSuppressed:!b,...c?{facets:Z,facetStats:X}:{},isLoading:!1,truncationIndex:U,queryId:H}))}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!==g.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,N,P,D,O,k,A,M,j,n,r.initialFacetStats,r.initialFacetKeys,r.token,x,C,T,e.rangeBounds,i,a,o,s,u,t,f,p,h]);(0,c.useEffect)(()=>{y.current=F},[F]);let I=(0,c.useRef)(null);(0,c.useEffect)(()=>(I.current?.cancel(),I.current=v(()=>{u&&console.log(`Debounced searchWithFacets fired`),y.current?.({enableFacets:!0})},e.facetDebounceDelayMillis??500),()=>{I.current?.cancel()}),[e.facetDebounceDelayMillis]),(0,c.useEffect)(()=>{!r.isFetchingInitial&&r.token&&!b.current&&(s&&y.current?.({enableFacets:l}),b.current=!0)},[r.isFetchingInitial,r.token,s,l]),(0,c.useEffect)(()=>{if(!r.token||!b.current)return;let n=e.query.trim(),i=n===``&&s;if(n===``&&!s){e.resultsSuppressed||t(e=>({...e,resultsSuppressed:!0}));return}return i?(I.current?.cancel(),y.current?.({enableFacets:l})):l?(u&&console.log(`Search fired`),y.current?.({enableFacets:!1}),I.current?.()):y.current?.({enableFacets:!1}),()=>{I.current?.cancel()}},[e.query,s,l]),(0,c.useEffect)(()=>{if(!b.current||!r.token||e.filterRevision===0)return;let t=e.query.trim();!s&&t===``||y.current?.({enableFacets:l})},[e.filterRevision]),(0,c.useEffect)(()=>{if(!b.current||!r.token)return;let t=e.query.trim();!s&&t===``||y.current?.({enableFacets:l})},[N,P]);let L=(0,c.useRef)(!0),R=(0,c.useRef)(e.query);(0,c.useEffect)(()=>{if(L.current){L.current=!1;return}if(R.current!==e.query||!b.current||!r.token)return;if(d.current){d.current=!1,y.current?.({enableFacets:!1});return}let t=e.query.trim();!s&&t===``||y.current?.({enableFacets:l})},[D,O,k,A,M,j]),(0,c.useEffect)(()=>{R.current=e.query},[e.query])}function b(){let e=globalThis.crypto;return e?.randomUUID?e.randomUUID():Math.random().toString(36).slice(2)+Date.now().toString(36)}var x=(0,c.createContext)(void 0),S=({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,source:_,count:v=!0})=>{let S=(0,c.useRef)(!1),C=(0,c.useRef)(b()).current,w=(0,c.useRef)(a),[T,E]=(0,c.useState)({query:``,results:null,isLoading:!1,resultsSuppressed:!i,facetDebounceDelayMillis:o,filterableFields:[],facetableFields:[],sortableFields:[],fieldTypes:{},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)(()=>{E(e=>({...e,facetDebounceDelayMillis:o}))},[o]);let[D]=(0,c.useState)(s),O=p({url:t,team:n,dataset:r,preAuthenticatedToken:g,enableDebugLogs:h}),k=(0,c.useCallback)((e,t={})=>{if(!O.token)throw Error(`No authentication token available`);return fetch(e,{...t,headers:{...t.headers,Authorization:`Bearer ${O.token}`}})},[O.token]);y({state:T,setState:E,authenticatedFetch:k,auth:O,url:t,team:n,dataset:r,allowEmptySearch:i,facetsEnabled:D,enableDebugLogs:h,shouldFetchMore:S,sessionId:C,source:_,count:v});let A=(0,c.useRef)(void 0);A.current=T.queryId;let j=(0,c.useCallback)(async e=>{if(O.token)try{let i=await k(`${t}/api/teams/${n}/datasets/${r}/events/select`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({queryId:A.current,documentKey:e.documentKey,position:e.position,...v?{}:{count:!1}})});h&&(i.ok?console.log(`[select] document ${e.documentKey} at position ${e.position}`):console.warn(`[select] not recorded: ${i.status}`))}catch(e){h&&console.warn(`[select] failed:`,e)}},[O.token,k,t,n,r,h,v]),M=(0,c.useCallback)(e=>{E(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:w.current}}})},[]),N=(0,c.useCallback)(e=>{E(t=>({...t,facetDebounceDelayMillis:e}))},[]),P=(0,c.useCallback)(e=>{typeof e.maxNumberOfRecordsToReturn==`number`&&(w.current=e.maxNumberOfRecordsToReturn),E(t=>{let n={...t.searchSettings,...e};return e.coverageSetup?n.coverageSetup={...t.searchSettings.coverageSetup,...e.coverageSetup}:n.coverageSetup=t.searchSettings.coverageSetup,{...t,searchSettings:n}})},[]),F=(0,c.useCallback)(e=>{S.current=!0,E(t=>({...t,searchSettings:{...t.searchSettings,maxNumberOfRecordsToReturn:e}}))},[]),I=(0,c.useCallback)((e,t,n=!1)=>{E(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}})},[]),L=(0,c.useCallback)((e,t)=>{E(n=>n.valueMatch[e]===t?n:{...n,valueMatch:{...n.valueMatch,[e]:t}})},[]),R=(0,c.useCallback)((e,t,n)=>{E(r=>({...r,rangeFilters:{...r.rangeFilters,[e]:{min:t,max:n}},filterRevision:r.filterRevision+1}))},[]),z=(0,c.useCallback)(()=>{E(e=>({...e,filters:{},rangeFilters:{},bucketFilters:{},filterRevision:e.filterRevision+1}))},[]),B=(0,c.useCallback)((e,t,n=!0)=>{E(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}})},[]),V=(0,c.useCallback)((e,t=!0)=>{E(n=>{if(!(e in n.rangeFilters))return n;let r={...n.rangeFilters};return delete r[e],{...n,rangeFilters:r,filterRevision:n.filterRevision+ +!!t}})},[]),H=(e,t)=>e.min===t.min&&e.max===t.max,U=(0,c.useCallback)((e,t,n=!1)=>{E(r=>{let i=r.bucketFilters[e]??[],a=i.some(e=>H(e,t))?i.filter(e=>!H(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}})},[]),W=(0,c.useCallback)((e,t,n=!0)=>{E(r=>{let i={...r.bucketFilters},a=t?(i[e]??[]).filter(e=>!H(e,t)):[];return a.length>0?i[e]=a:delete i[e],{...r,bucketFilters:i,filterRevision:r.filterRevision+ +!!n}})},[]),G=(0,c.useCallback)((e,t)=>{E(n=>({...n,sortBy:e||void 0,sortAscending:e?t:void 0}))},[]);return(0,u.jsx)(x.Provider,{value:{state:T,isFetchingInitial:O.isFetchingInitial||!T.fieldsSeeded,authError:O.authError??void 0,allowEmptySearch:i,url:t,team:n,dataset:r,authenticatedFetch:k,setQuery:M,toggleFilter:I,setValueMatch:L,setRangeFilter:R,resetFilters:z,resetSingleFilter:B,resetRangeFilter:V,toggleBucketFilter:U,resetBucketFilter:W,setSort:G,setDebounceDelay:N,setSearchSettings:P,fetchMoreResults:F,selectResult:j,sessionId:C},children:e})},C=()=>{let e=(0,c.useContext)(x);if(!e)throw Error(`useSearchContext must be used within a SearchProvider`);return e},w=({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}=C();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`})})},T={placeholder:`_placeholder_ee9qi_1`,invalid:`_invalid_ee9qi_11`},E={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`},D=({skeleton:e=!1,index:t,score:n,showScore:r=!1,children:i,skeletonDelay:a=0,skeletonWidths:o=[62,38]})=>(0,u.jsxs)(`div`,{className:E.row,children:[t!==void 0&&(0,u.jsx)(`div`,{className:E.indexNumber,children:t}),(0,u.jsx)(`div`,{className:E.content,children:e?(0,u.jsxs)(`div`,{className:E.skeletonBars,children:[(0,u.jsx)(`div`,{className:E.skeletonBarLg,style:{width:`${o[0]}%`,animationDelay:`${a}s`}}),(0,u.jsx)(`div`,{className:E.skeletonBarSm,style:{width:`${o[1]}%`,animationDelay:`${a+.05}s`}})]}):i}),r&&n!==void 0&&(0,u.jsx)(`div`,{className:E.scoreNumber,children:n})]}),O={wrapper:`_wrapper_81m3c_6`,skeletonAppear:`_skeletonAppear_81m3c_1`},k=[[62,38],[75,45],[58,33],[70,42],[65,50],[55,35],[72,40],[60,30]],A=({rows:e=6})=>(0,u.jsx)(`div`,{className:O.wrapper,children:Array.from({length:e}).map((e,t)=>(0,u.jsx)(D,{skeleton:!0,skeletonDelay:t*.1,skeletonWidths:k[t%k.length]},t))}),j=/^\[\s*(?:'[^']*'(?:\s*,\s*'[^']*')*)?\s*\]$/;function M(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(!j.test(t))return;let n=[],r=/'([^']*)'/g,i;for(;(i=r.exec(t))!==null;)n.push(i[1]);return n}var N=({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:_,selectResult:v}=C(),y=t??30,[b,x]=(0,c.useState)(y),S=(0,c.useRef)(0),w=(0,c.useRef)(``);(0,c.useEffect)(()=>{let e=l!==w.current;(!i||i.length<S.current||e)&&x(y),S.current=i?.length??0,w.current=l},[i,y,l]);let E=i&&i.length>b,O=()=>{let e=b+y;x(e),i&&e>=i.length&&(!s||s===-1||s>i.length)&&_(i.length+y)};if(m)return g?(0,u.jsx)(A,{rows:y}):(0,u.jsx)(`div`,{className:T.placeholder,children:(0,u.jsx)(f.Indx,{size:200,color:`var(--lv5)`})});let k=h??p;return k?(0,u.jsx)(`div`,{className:T.invalid,role:`alert`,children:(0,u.jsx)(`p`,{children:k})}):a||i===null?(0,u.jsx)(`div`,{className:T.placeholder,children:(0,u.jsx)(f.Indx,{size:200,color:`var(--lv5)`})}):i.length===0?(0,u.jsx)(`div`,{className:T.invalid,children:(0,u.jsx)(`p`,{children:`No results found.`})}):(0,u.jsxs)(u.Fragment,{children:[(0,u.jsx)(`div`,{children:(i??[]).slice(0,b).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:T.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=M(t);n&&(l[e]=n)}}return(0,u.jsx)(D,{index:i,score:s,showScore:o.showScore,children:r(l,{result:t,select:()=>v?.(t)??Promise.resolve()})},i)})}),E&&(0,u.jsx)(`div`,{style:{textAlign:`center`,marginTop:`20px`},children:(0,u.jsx)(d.Button,{variant:`secondary`,size:`micro`,onClick:O,children:l.trim()===``?`Load more`:s!==-1&&s!==void 0&&s>0?`Load results ${b+1}-${Math.min(b+y,i.length,s)} of ${s}`:`Load more`})})]})},P={row:`_row_ujwhc_1`,title:`_title_ujwhc_8`},F=({variant:e=`default`,children:t})=>(0,u.jsx)(`div`,{className:[P.row,e===`title`?P.title:``].filter(Boolean).join(` `),children:t}),I={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`},L=[65,80,55,72,60,75,50,68],R=({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:I.sliderArea,children:[r&&(0,u.jsx)(`div`,{className:I.histogramRow}),(0,u.jsx)(`div`,{className:I.sliderTrack}),(0,u.jsxs)(`div`,{className:I.inputRow,children:[(0,u.jsx)(`div`,{className:I.inputBar,style:{animationDelay:`0.1s`}}),(0,u.jsx)(`div`,{className:I.inputBar,style:{animationDelay:`0.15s`}})]})]}):(0,u.jsx)(`div`,{className:I.listRows,children:Array.from({length:t}).map((e,t)=>(0,u.jsx)(`div`,{className:I.bar,style:{width:`${L[t%L.length]}%`,animationDelay:`${t*.05}s`}},t))})}),z={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`},B=({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:S,filters:w,query:T},toggleFilter:E,setValueMatch:D,isFetchingInitial:O,allowEmptySearch:k}=C(),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)(R,{rows:1,collapsible:!1}):(0,u.jsx)(R,{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)||!S?.includes(e)){let t=[];return x?.includes(e)||t.push(`filterable`),S?.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 L=new Map;n&&M.current&&Object.keys(M.current).forEach(e=>{L.set(e,0)}),F.forEach(e=>{L.set(e.key,e.value)});let B=new Set([`true`,`false`,`null`]),V=Array.from(L.keys()),H=A===`toggle`&&(V.length>0&&V.every(e=>B.has(e))||V.length===0&&I.length>0);if(H&&L.has(`null`)){let e=L.get(`null`)??0,t=L.get(`false`)??0;L.set(`false`,t+e),L.delete(`null`)}if(A===`toggle`&&!H)return(0,u.jsx)(d.FilterPanelBase,{collapsible:!1,children:(0,u.jsx)(`div`,{className:z.count,children:(0,u.jsx)(d.ToggleSwitch,{label:t,checked:!1,onChange:()=>{},disabled:!0})})});if(H){let n=L.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:z.count,children:[(0,u.jsx)(d.ToggleSwitch,{label:t,checked:i,onChange:()=>E(e,`true`),disabled:a}),` `,o]})})}let U=Array.from(L.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,ee=(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:z.count,children:[(0,u.jsx)(d.Button,{variant:r?`primary`:`secondary`,onClick:s,disabled:i,size:`micro`,className:z.chip,title:t,children:(0,u.jsx)(`span`,{className:z.chipLabel,children:t})}),(0,u.jsx)(`span`,{className:z.countValue,children:o})]}):(0,u.jsx)(d.Button,{variant:r?`primary`:`secondary`,onClick:s,disabled:i,size:`micro`,className:z.chip,title:`${t}${a}`,children:(0,u.jsx)(`span`,{className:z.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:z.count,children:[n,(0,u.jsx)(`span`,{className:z.countValue,children:o})]}):n}default:return p===`list`?(0,u.jsxs)(`div`,{className:z.count,children:[(0,u.jsx)(d.Checkbox,{label:t,score:``,checked:r,onChange:s,disabled:i}),(0,u.jsx)(`span`,{className:z.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?z.active:void 0,children:(0,u.jsxs)(`ul`,{className:p===`grid`?z.grid:z.list,style:{listStyle:`none`,padding:0,margin:0},children:[G.map(([e,t])=>(0,u.jsx)(`li`,{children:ee(e,t)},e)),W&&N<U.length&&(()=>{let e=U.length-N,t=Math.min(50,e);return(0,u.jsx)(`li`,{className:z.toggleItem,children:(0,u.jsx)(d.Button,{variant:`ghost`,size:`micro`,onClick:()=>P(e=>e+50),children:`Show ${t} more of ${U.length} total`})})})()]})})},V={disabledMessage:`_disabledMessage_adany_1`,histogram:`_histogram_adany_6`,histogramLayer:`_histogramLayer_adany_14`,histogramLive:`_histogramLive_adany_22`,histogramLit:`_histogramLit_adany_23`,histogramFill:`_histogramFill_adany_30`,histogramBar:`_histogramBar_adany_43`,histogramSeparators:`_histogramSeparators_adany_61`,histogramSeparator:`_histogramSeparator_adany_48`,active:`_active_adany_76`};function H(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 U(e){let t=0;for(let n of e)t=Math.max(t,H(n));return t===0?1:Number((10**-t).toFixed(t))}function W(e,t){return Number(e.toFixed(H(t)))}function G(e,t,n){let r=t+Math.round((e-t)/n)*n;return Number(r.toFixed(H(n)))}function ee(e,t,n){let r=Math.ceil(Number(((e-t)/n).toFixed(6)));return Number((t+r*n).toFixed(H(n)))}var K=({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,stepMarks:h})=>{let{state:{rangeFilters:g,rangeBounds:_,facetStats:v,facets:y,filterableFields:b,facetableFields:x,query:S,facetDebounceDelayMillis:w},setRangeFilter:T,resetRangeFilter:E,allowEmptySearch:D,isFetchingInitial:O}=C(),k=i??a??`input`,A=_?.[e]!==void 0,j=_?.[e]??{min:n,max:r},M=j.min,N=j.max,P=v?.[e]??j,F=Math.max(M,Math.min(N,P.min)),I=Math.max(M,Math.min(N,P.max)),L=c.default.useMemo(()=>{if(m)return m;let t=Math.max(H(M),H(N)),n=y?.[e];if(Array.isArray(n))for(let e of n)t=Math.max(t,H(Number(e.key)));return t===0?1:Number((10**-t).toFixed(t))},[m,M,N,y,e]),z=A&&M===N,B=z?n:M,U=z?r:N,K=ee(U+L,B,L),q=e=>Math.min(K,Math.max(B,e)),J=g?.[e],te=o&&J!==void 0?V.active:void 0,Y=J?J.min:M,X=J?J.max:N,Z=J!==void 0,ne=F!==M||I!==N,[Q,$]=c.default.useState([Y,X]),[re,ie]=c.default.useState(!1),[ae,oe]=c.default.useState(!1),[se,ce]=c.default.useState(String(Y)),[le,ue]=c.default.useState(String(X)),de=c.default.useMemo(()=>{let e=H(L);return{width:`calc(${Math.max(3,M.toFixed(e).length,N.toFixed(e).length,se.length,le.length)+1}ch + 20px)`}},[L,M,N,se,le]);c.default.useEffect(()=>{ce(String(Q[0])),ue(String(Q[1]))},[Q]);let{finalMin:fe,finalMax:pe,isValidMin:me,isValidMax:he}=c.default.useMemo(()=>{let[e,t]=Q,n=Math.max(M,Math.min(N,e)),r=Math.max(M,Math.min(N,t)),i=Math.min(n,r),a=Math.max(n,r);return{finalMin:i,finalMax:a,isValidMin:i>=M&&i<=a,isValidMax:a<=N&&a>=i}},[Q,M,N]);c.default.useEffect(()=>{if(z)return;if(Q[0]===M&&Q[1]===N){ie(!1),oe(!1);return}let t=w??500,n=setTimeout(()=>{ie(!me),oe(!he)},300),r=setTimeout(()=>{me&&he&&(fe===M&&pe===N?E(e,!1):T(e,fe,pe))},t);return()=>{clearTimeout(n),clearTimeout(r)}},[fe,pe,me,he,M,N,e,E,T,w,z]),c.default.useEffect(()=>{$([Y,X]),ie(!1),oe(!1)},[Y,X,e]);let ge=c.default.useCallback(e=>{let t=W(Math.min(e[0],e[1]-L),L);return[t,W(Math.max(e[1]-L,t),L)]},[L]),_e=c.default.useCallback(e=>{if(z)return;let[t,n]=ge(e);$([Math.max(M,Math.min(I,t)),Math.max(F,Math.min(N,n))])},[z,ge,M,N,F,I]),ve=c.default.useCallback(t=>{if(z)return;let[n,r]=ge(t),i=Math.max(M,Math.min(I,n)),a=Math.max(F,Math.min(N,r));i===M&&a===N?($([M,N]),E(e,!0)):$([i,a])},[z,ge,M,N,F,I,e,E]),ye=c.default.useRef(null),be=c.default.useCallback((t,n)=>{if(z)return;let r=ye.current;if(J&&r&&r.start===t&&r.last===n){ye.current=null,$([M,N]),E(e,!0);return}let i=G(Math.max(M,F,t),M,L),a=Math.max(i,G(Math.min(N,I,n),M,L));ye.current={start:t,last:n},$([i,a])},[z,J,M,N,F,I,L,e,E]),xe=c.default.useCallback(()=>{if(z)return;let e=se.trim(),t=e===``?NaN:Number(e);if(isNaN(t)){ce(String(Q[0]));return}let n=Math.max(M,Math.min(I,t));n<Q[1]?$([n,Q[1]]):$([M,Q[1]]),ce(String(n<Q[1]?n:M))},[z,se,Q,M,I]),Se=c.default.useCallback(()=>{if(z)return;let e=le.trim(),t=e===``?NaN:Number(e);if(isNaN(t)){ue(String(Q[1]));return}let n=Math.max(F,Math.min(N,t));n>Q[0]?$([Q[0],n]):$([Q[0],N]),ue(String(n>Q[0]?n:N))},[z,le,Q,F,N]),Ce=e=>t=>{t.key===`Enter`&&e()},[we,Te]=c.default.useState(null),Ee=c.default.useRef(null);c.default.useEffect(()=>{if(!f)return;let t=`${M}:${N}`;if(t===Ee.current&&Ee.current!==null)return;let n=y?.[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&&(Ee.current=t,Te(r))},[M,N,y,e,f]);let De=c.default.useMemo(()=>{if(!f||!we||we.length===0)return[];let e=N-M;if(e<=0)return[];let t=p??Math.max(L,W(Math.ceil(e/20/L)*L,L)),n=Math.ceil(e/t);return Array.from({length:n},(e,r)=>{let i=M+r*t,a=M+(r+1)*t,o=r===n-1,s=we.filter(e=>{let t=Number(e.key);return t>=i&&(t<a||o&&t<=N)}).reduce((e,t)=>e+t.value,0),c=o?N:W(a-L,L);return{bucketStart:i,bucketEnd:a,count:s,last:c,barEnd:W(c+L,L)}}).map((e,t,n)=>({...e,span:(t+1<n.length?n[t+1].bucketStart:Math.max(e.barEnd,K))-e.bucketStart}))},[f,we,M,N,p,L,K]),Oe=c.default.useMemo(()=>Math.max(...De.map(e=>e.count),1),[De]);return f&&!O&&!x?.includes(e)&&console.warn(`RangeFilterPanel: showHistogram=true but field "${e}" is not facetable. Add .Facetable = true to this field.`),O?(0,u.jsx)(R,{title:t,variant:`slider`,withHistogram:f,collapsible:s,startCollapsed:l}):!D&&!S?null:b?.includes(e)?k===`slider`?(0,u.jsxs)(d.FilterPanelBase,{title:t,collapsed:l,collapsible:s,className:te,children:[z&&(0,u.jsxs)(`div`,{className:V.disabledMessage,children:[`No adjustable range (all results have the same value: `,M,`).`]}),f&&De.length===0&&(0,u.jsx)(`div`,{className:V.histogram}),f&&De.length>0&&(()=>{let[e,t]=I>F&&(F>M||I<N)?[F,I]:[B,U],n=Math.max(fe,e),r=Math.min(pe,t),i=K,a=i-B||1,o=e=>Math.max(0,Math.min(1,(e-B)/a)),s=e=>e>=U?0:Math.max(0,Math.min(1,(i-(e+L))/a)),c=o(n),l=r<n?1-c:s(r),d=e=>`calc(10px + (100% - 20px) * ${e})`,f=`inset(0 ${d(l)} 0 ${d(c)})`,p=`inset(0 ${d(s(t))} 0 ${d(o(e))})`,m=n=>n.last<e||n.bucketStart>t,h=De.slice(1).map(e=>d((e.bucketStart-B)/a)),g=De.map(e=>({...e,height:Math.max(1,Math.ceil(e.count/Oe*20))}));return(0,u.jsxs)(`div`,{className:V.histogram,children:[(0,u.jsx)(`div`,{className:V.histogramLayer,children:g.map((e,t)=>(0,u.jsx)(`button`,{type:`button`,className:V.histogramBar,style:{flexGrow:e.span},"data-testid":`histogram-bar`,disabled:z||m(e),"aria-label":`${e.bucketStart} to ${e.last}: ${e.count}`,title:`${e.bucketStart} to ${e.last}: ${e.count}`,onClick:()=>be(e.bucketStart,e.last),children:(0,u.jsx)(`span`,{className:V.histogramFill,style:{height:`${e.height}px`}})},t))}),(0,u.jsx)(`div`,{className:`${V.histogramLayer} ${V.histogramLive}`,"aria-hidden":`true`,"data-testid":`histogram-live`,style:{clipPath:p},children:g.map((e,t)=>(0,u.jsx)(`span`,{className:V.histogramBar,style:{flexGrow:e.span},children:(0,u.jsx)(`span`,{className:V.histogramFill,style:{height:`${e.height}px`}})},t))}),(0,u.jsx)(`div`,{className:`${V.histogramLayer} ${V.histogramLit}`,"aria-hidden":`true`,"data-testid":`histogram-lit`,style:{clipPath:f},children:g.map((e,t)=>(0,u.jsx)(`span`,{className:V.histogramBar,style:{flexGrow:e.span},children:(0,u.jsx)(`span`,{className:V.histogramFill,style:{height:`${e.height}px`}})},t))}),(0,u.jsx)(`div`,{className:V.histogramSeparators,"aria-hidden":`true`,children:h.map((e,t)=>(0,u.jsx)(`span`,{className:V.histogramSeparator,style:{left:e}},t))})]})})(),(0,u.jsx)(`div`,{style:{padding:`10px 10px 20px 10px`},children:(0,u.jsx)(d.Slider,{min:B,max:K,step:L,stepMarks:h,value:z?[B,K]:[q(G(fe,B,L)),q(G(pe+L,B,L))],isRange:!0,onChange:e=>_e(e),onFinalChange:e=>ve(e),disabled:z,activeMin:F,activeMax:q(W(I+L,L)),isFaceted:ne,highlightFaceted:Z,"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:de,value:z?String(M):se,min:M,max:W(Math.min(I,Q[1]-L),L),onChange:e=>ce(e.target.value),onBlur:xe,onKeyDown:Ce(xe),disabled:z,isValid:z||!re}),(0,u.jsx)(d.InputField,{label:`Max:`,type:`number`,style:de,value:z?String(N):le,min:W(Math.max(F,Q[0]+L),L),max:N,onChange:e=>ue(e.target.value),onBlur:Se,onKeyDown:Ce(Se),disabled:z,isValid:z||!ae})]})]}):(0,u.jsxs)(d.FilterPanelBase,{title:t,className:te,children:[z&&(0,u.jsxs)(`div`,{className:V.disabledMessage,children:[`No adjustable range (all results have the same value: `,M,`).`]}),(0,u.jsxs)(`div`,{style:{display:`flex`,gap:`10px`,alignItems:`flex-start`},children:[(0,u.jsx)(d.InputField,{label:`Min:`,type:`number`,style:de,value:z?String(M):se,min:M,max:W(Math.min(I,Q[1]-L),L),onChange:e=>ce(e.target.value),onBlur:xe,onKeyDown:Ce(xe),disabled:z,isValid:z||!re}),(0,u.jsx)(d.InputField,{label:`Max:`,type:`number`,style:de,value:z?String(N):le,min:W(Math.max(F,Q[0]+L),L),max:N,onChange:e=>ue(e.target.value),onBlur:Se,onKeyDown:Ce(Se),disabled:z,isValid:z||!ae})]})]}):(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.`]})})},q={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 J(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 te=({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:S},toggleBucketFilter:w,isFetchingInitial:T,allowEmptySearch:E}=C(),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 U(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],W(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=W(r+n,N))e.push(i(W(r,N),W(r+n-N,N)));return e}return[]},[r,n,M,N]);if(T||!g)return(0,u.jsx)(R,{title:t,rows:Math.max(1,Math.min(P.length||5,8)),collapsible:m,startCollapsed:h});if(!E&&!S)return null;if(!_?.includes(e))return(0,u.jsx)(d.FilterPanelBase,{collapsible:!1,children:(0,u.jsxs)(`div`,{className:q.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),L=P.map(e=>({bucket:e,count:F?J(e,O):null}));if(l||(L=L.filter(e=>e.count!==0||I(e.bucket))),L.length===0)return null;let z=L.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:q.count,children:[n,(0,u.jsx)(`span`,{className:q.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:q.chip,children:o===`grid`&&a?`${t.label} (${a})`:t.label});return o===`list`?(0,u.jsxs)(`div`,{className:q.count,children:[e,(0,u.jsx)(`span`,{className:q.countValue,children:a})]}):e}return o===`list`?(0,u.jsxs)(`div`,{className:q.count,children:[(0,u.jsx)(d.Checkbox,{label:t.label,score:``,checked:r,onChange:c,disabled:i}),(0,u.jsx)(`span`,{className:q.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?q.active:void 0,children:(0,u.jsxs)(`ul`,{className:o===`grid`?q.grid:q.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<L.length&&(0,u.jsx)(`li`,{children:(0,u.jsx)(d.Button,{variant:`ghost`,size:`micro`,onClick:()=>j(L.length),children:`Show ${L.length-z.length} more of ${L.length} total`})})]})})},Y={grid:`_grid_1xjna_2`,chip:`_chip_1xjna_21`,chipLabel:`_chipLabel_1xjna_32`},X=(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]})})})),Z=(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]})})})),ne=(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 Q(){let{state:{filters:e,rangeFilters:t,bucketFilters:n},resetFilters:r,resetSingleFilter:i,resetRangeFilter:a,resetBucketFilter:o}=C(),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)(X,{field:e,value:t,onReset:()=>i(e,t)},`${e}-${t}`)),l.map(({field:e,min:t,max:n})=>(0,u.jsx)(Z,{field:e,min:t,max:n,onReset:()=>a(e)},e)),f.map(({field:e,range:t,label:n})=>(0,u.jsx)(ne,{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 $={select:`_select_nwf7i_1`,radioGroup:`_radioGroup_nwf7i_6`},re=({options:e,noneLabel:t=`None`,control:n,displayType:r,collapsible:i=!0,startCollapsed:a=!1})=>{let o=n??(r===`radio`?`radio`:`select`),{state:{sortableFields:s,sortBy:c,sortAscending:l},setSort:f,isFetchingInitial:p}=C();if(p)return(0,u.jsx)(R,{title:`Sort by`,rows:o===`radio`?3:1,collapsible:i,startCollapsed:a});if(!s||s.length===0)return null;let m=c?`${c}:${l?`asc`:`desc`}`:`none`,h=e?e.filter(e=>s.includes(e.field)?!0:(console.warn(`[SortByPanel] '${e.field}' is not sortable, so "${e.label}" is left out. Mark the field Sortable in the dataset's field configuration.`),!1)).map(e=>({label:e.label,value:`${e.field}:${e.ascending?`asc`:`desc`}`})):s.flatMap(e=>[{label:`${e} (asc)`,value:`${e}:asc`},{label:`${e} (desc)`,value:`${e}:desc`}]),g=t===null?h:[{label:t,value:`none`},...h],_=e=>{if(e===`none`||e===``)f(null,!0);else{let[t,n]=e.split(`:`);f(t,n===`asc`)}};return(0,u.jsx)(d.FilterPanelBase,{title:`Sort by`,collapsible:i,collapsed:i?a:!1,children:o===`select`?(0,u.jsx)(d.Select,{value:m,onValueChange:_,options:g,placeholder:`Select sort...`,"aria-label":`Sort by`}):(0,u.jsx)(`div`,{className:$.radioGroup,children:g.map(e=>(0,u.jsx)(d.RadioButton,{id:`sort-${e.value}`,name:`sort-by`,value:e.value,label:e.label,checked:m===e.value,onChange:e=>_(e.target.value)},e.value))})})},ie={list:`_list_1y4fk_1`};function ae(){let{state:{searchSettings:e},setSearchSettings:t}=C(),[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 oe=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 se(e,t){let{url:n,team:r,dataset:i,authenticatedFetch:a}=C(),[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 ce(e,t){let{url:n,team:r,dataset:i,authenticatedFetch:a}=C(),[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=Q,exports.BucketFilterPanel=te,exports.FilterPanelSkeleton=R,exports.IndxApiError=m,exports.RangeFilterPanel=K,exports.SearchContext=x,exports.SearchErrorBoundary=oe,exports.SearchInput=w,exports.SearchProvider=S,exports.SearchResult=D,exports.SearchResultRow=F,exports.SearchResults=N,exports.SearchResultsSkeleton=A,exports.SearchSettingsPanel=ae,exports.SortByPanel=re,exports.ValueFilterPanel=B,exports.useHybridSearch=ce,exports.useSearch=C,exports.useSearchContext=C,exports.useVectorSearch=se;
|
|
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)({}),[C,w]=(0,c.useState)(0),[T,E]=(0,c.useState)(null);return(0,c.useEffect)(()=>{(async()=>{E(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,_,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`),s(`${e}/api/teams/${t}/datasets/${n}/fields/configuration`).catch(()=>null)]);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[x,C,T]=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(x||[]),m(C||[]),g(T||[]),w(d);let E={};if(y?.ok){let e=await y.json().catch(e=>(console.error(`Failed to parse GetFieldConfiguration response:`,e),[]));for(let t of e??[])t?.fieldName&&t?.fieldType&&(E[t.fieldName]=t.fieldType)}else i&&console.log(`[Auth] fields/configuration not available`,y?.status,`- every selected value will be sent as a value filter`);v(E);let D={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?D=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 O={};if(D.facets){for(let[e,t]of Object.entries(D.facets))if(Array.isArray(t)&&t.length>0){let n=t.map(e=>Number(e.key)).filter(e=>!isNaN(e));n.length>0&&(O[e]={min:Math.min(...n),max:Math.max(...n)})}}let k={};if(D.facets)for(let[e,t]of Object.entries(D.facets))Array.isArray(t)&&(k[e]=t.map(e=>e.key));b(O),S(k),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`)),E(t instanceof Error?t.message:String(t))}finally{u(!1)}})()},[e,t,n]),{token:a,isFetchingInitial:s,authError:T,initialFacetStats:y,initialFacetKeys:x,filterableFields:d,facetableFields:p,sortableFields:h,fieldTypes:_,totalDocumentCount:C}}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={},c={}){let l=Object.entries(e??{}).filter(([,e])=>e.length>0),u=Object.entries(t??{}),d=Object.entries(s??{}).filter(([,e])=>e.length>0),f=(e,{min:t,max:o})=>h(`range`,{fieldName:e,lowerLimit:t,upperLimit:o},`Range filter '${e}'`,n,r,i,a),p=(e,t)=>{let o=c[e]===`Number`?Number(t):NaN;return Number.isFinite(o)?f(e,{min:o,max:o}):h(`value`,{fieldName:e,value:t},`Value filter '${e}'`,n,r,i,a)},[m,_,v]=await Promise.all([Promise.all(l.map(async([e,t])=>g(await Promise.all(t.map(t=>p(e,t))),o[e]===`any`?`or`:`and`,n,r,i,a))),Promise.all(u.map(([e,t])=>f(e,t))),Promise.all(d.map(async([e,t])=>g(await Promise.all(t.map(t=>f(e,t))),`or`,n,r,i,a)))]);return g([...m,..._,...v],`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,sessionId:f,source:p,count:h}){let g=(0,c.useRef)(0),y=(0,c.useRef)(void 0),b=(0,c.useRef)(!1),[x,S]=(0,c.useState)({}),[C,w]=(0,c.useState)(``),[T,E]=(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,fieldTypes:r.fieldTypes,fieldsSeeded:!0}))},[r.isFetchingInitial,r.initialFacetStats,r.totalDocumentCount,r.filterableFields,r.facetableFields,r.sortableFields,t]);let D=e.searchSettings.maxNumberOfRecordsToReturn,O=e.searchSettings.enableCoverage,k=e.searchSettings.removeDuplicates,A=e.searchSettings.coverageDepth,j=e.searchSettings.minimumScore,M=e.searchSettings.coverageSetup,N=e.sortBy,P=e.sortAscending,F=(0,c.useCallback)(async({enableFacets:c})=>{if(!r.token)return;let l=++g.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)])):[],[v,...y]=await Promise.all([_(e.filters,e.rangeFilters,i,a,o,n,e.valueMatch,e.bucketFilters,e.fieldTypes),...d.map(t=>_({...e.filters,[t]:[]},e.rangeFilters,i,a,o,n,e.valueMatch,{...e.bucketFilters,[t]:[]},e.fieldTypes))]),b=s||e.query.trim()!==``,F={text:e.query,enableCoverage:O,removeDuplicates:k,coverageDepth:A,coverageSetup:M},I={...F,maxNumberOfRecordsToReturn:b?D:0,enableFacets:c,...v?{filter:v}:{},...N?{sortBy:N}:{},...P===void 0?{}:{sortAscending:P}};u&&console.log(`[performSearch] request body:`,JSON.stringify(I,null,2));let L=new URLSearchParams({session:f});p&&L.set(`source`,p),h||L.set(`count`,`false`);let R=e=>n(`${i}/api/teams/${a}/datasets/${o}/search?${L}`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(e)}),[z,...B]=await Promise.all([R(I),...y.map(e=>R({...F,maxNumberOfRecordsToReturn:0,enableFacets:!0,...e?{filter:e}:{}}))]);if(!z.ok)throw await m.fromResponse(`Search`,z);let V=await z.json(),H=z.headers.get(`Indx-Query-Id`)??void 0,U=V.truncationIndex??-1,W={};for(let e=0;e<d.length;e++){let t=d[e];if(!B[e].ok)throw await m.fromResponse(`Facets for '${t}'`,B[e]);let n=await B[e].json();n.facets?.[t]!==void 0&&(W[t]=n.facets[t])}let G=V.records||[],ee=G.map(e=>e.documentKey),K=G.map(e=>e.score),q=[];if(b&&ee.length>0){let e=await n(`${i}/api/teams/${a}/datasets/${o}/documents/lookup`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(ee)});if(!e.ok)throw await m.fromResponse(`Document lookup`,e);q=(await e.json()).map((e,t)=>({document:e,documentKey:ee[t],score:K[t]}))}let J={};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&&(J[e]={min:Math.min(...n),max:Math.max(...n)})}}if(l!==g.current)return;let te=e.query!==C,Y=e.query!==T,X=e.facetStats??{};if(te?(X={...r.initialFacetStats,...J},S(X),w(e.query)):X={...x,...J},Y&&c){let n={...e.rangeBounds};for(let[e,t]of Object.entries(J))n[e]=t;t(e=>({...e,rangeBounds:n})),E(e.query)}let Z=Object.keys(W).length>0?{...V.facets??{},...W}:V.facets;if(c&&(!Z||Object.keys(Z).length===0)){Z={};for(let[e,t]of Object.entries(r.initialFacetKeys))Z[e]=t.map(e=>({key:e,value:null}))}let ne=q.filter(t=>{let n=e.query.trim();return n===``||n.length===1?!0:t.score>=j}).map((e,t)=>({...e,position:t+1}));t(e=>({...e,results:ne,error:void 0,resultsSuppressed:!b,...c?{facets:Z,facetStats:X}:{},isLoading:!1,truncationIndex:U,queryId:H}))}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!==g.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,N,P,D,O,k,A,M,j,n,r.initialFacetStats,r.initialFacetKeys,r.token,x,C,T,e.rangeBounds,i,a,o,s,u,t,f,p,h]);(0,c.useEffect)(()=>{y.current=F},[F]);let I=(0,c.useRef)(null);(0,c.useEffect)(()=>(I.current?.cancel(),I.current=v(()=>{u&&console.log(`Debounced searchWithFacets fired`),y.current?.({enableFacets:!0})},e.facetDebounceDelayMillis??500),()=>{I.current?.cancel()}),[e.facetDebounceDelayMillis]),(0,c.useEffect)(()=>{!r.isFetchingInitial&&r.token&&!b.current&&(s&&y.current?.({enableFacets:l}),b.current=!0)},[r.isFetchingInitial,r.token,s,l]),(0,c.useEffect)(()=>{if(!r.token||!b.current)return;let n=e.query.trim(),i=n===``&&s;if(n===``&&!s){e.resultsSuppressed||t(e=>({...e,resultsSuppressed:!0}));return}return i?(I.current?.cancel(),y.current?.({enableFacets:l})):l?(u&&console.log(`Search fired`),y.current?.({enableFacets:!1}),I.current?.()):y.current?.({enableFacets:!1}),()=>{I.current?.cancel()}},[e.query,s,l]),(0,c.useEffect)(()=>{if(!b.current||!r.token||e.filterRevision===0)return;let t=e.query.trim();!s&&t===``||y.current?.({enableFacets:l})},[e.filterRevision]),(0,c.useEffect)(()=>{if(!b.current||!r.token)return;let t=e.query.trim();!s&&t===``||y.current?.({enableFacets:l})},[N,P]);let L=(0,c.useRef)(!0),R=(0,c.useRef)(e.query);(0,c.useEffect)(()=>{if(L.current){L.current=!1;return}if(R.current!==e.query||!b.current||!r.token)return;if(d.current){d.current=!1,y.current?.({enableFacets:!1});return}let t=e.query.trim();!s&&t===``||y.current?.({enableFacets:l})},[D,O,k,A,M,j]),(0,c.useEffect)(()=>{R.current=e.query},[e.query])}function b(){let e=globalThis.crypto;return e?.randomUUID?e.randomUUID():Math.random().toString(36).slice(2)+Date.now().toString(36)}var x=(0,c.createContext)(void 0),S=({children:e,url:t,team:n,dataset:r,allowEmptySearch:i=!1,maxResults:a=10,facetDebounceDelayMillis:o=500,enableFacets:s=!0,coverageDepth:l,removeDuplicates:d=!0,enableCoverage:f=!0,initialCoverageSetup:m={},enableDebugLogs:h=!1,preAuthenticatedToken:g,source:_,count:v=!0})=>{let S=(0,c.useRef)(!1),C=(0,c.useRef)(b()).current,w=(0,c.useRef)(a),[T,E]=(0,c.useState)({query:``,results:null,isLoading:!1,resultsSuppressed:!i,facetDebounceDelayMillis:o,filterableFields:[],facetableFields:[],sortableFields:[],fieldTypes:{},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:{...m}}});(0,c.useEffect)(()=>{h&&console.log(`SearchContext mounted on client`)},[h]),(0,c.useEffect)(()=>{E(e=>({...e,facetDebounceDelayMillis:o}))},[o]);let[D]=(0,c.useState)(s),O=p({url:t,team:n,dataset:r,preAuthenticatedToken:g,enableDebugLogs:h}),k=(0,c.useCallback)((e,t={})=>{if(!O.token)throw Error(`No authentication token available`);return fetch(e,{...t,headers:{...t.headers,Authorization:`Bearer ${O.token}`}})},[O.token]);y({state:T,setState:E,authenticatedFetch:k,auth:O,url:t,team:n,dataset:r,allowEmptySearch:i,facetsEnabled:D,enableDebugLogs:h,shouldFetchMore:S,sessionId:C,source:_,count:v});let A=(0,c.useRef)(void 0);A.current=T.queryId;let j=(0,c.useCallback)(async e=>{if(O.token)try{let i=await k(`${t}/api/teams/${n}/datasets/${r}/events/select`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({queryId:A.current,documentKey:e.documentKey,position:e.position,...v?{}:{count:!1}})});h&&(i.ok?console.log(`[select] document ${e.documentKey} at position ${e.position}`):console.warn(`[select] not recorded: ${i.status}`))}catch(e){h&&console.warn(`[select] failed:`,e)}},[O.token,k,t,n,r,h,v]),M=(0,c.useCallback)(e=>{E(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:w.current}}})},[]),N=(0,c.useCallback)(e=>{E(t=>({...t,facetDebounceDelayMillis:e}))},[]),P=(0,c.useCallback)(e=>{typeof e.maxNumberOfRecordsToReturn==`number`&&(w.current=e.maxNumberOfRecordsToReturn),E(t=>{let n={...t.searchSettings,...e};return`coverageSetup`in e?e.coverageSetup?n.coverageSetup={...t.searchSettings.coverageSetup,...e.coverageSetup}:n.coverageSetup={}:n.coverageSetup=t.searchSettings.coverageSetup,{...t,searchSettings:n}})},[]),F=(0,c.useCallback)(e=>{S.current=!0,E(t=>({...t,searchSettings:{...t.searchSettings,maxNumberOfRecordsToReturn:e}}))},[]),I=(0,c.useCallback)((e,t,n=!1)=>{E(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}})},[]),L=(0,c.useCallback)((e,t)=>{E(n=>n.valueMatch[e]===t?n:{...n,valueMatch:{...n.valueMatch,[e]:t}})},[]),R=(0,c.useCallback)((e,t,n)=>{E(r=>({...r,rangeFilters:{...r.rangeFilters,[e]:{min:t,max:n}},filterRevision:r.filterRevision+1}))},[]),z=(0,c.useCallback)(()=>{E(e=>({...e,filters:{},rangeFilters:{},bucketFilters:{},filterRevision:e.filterRevision+1}))},[]),B=(0,c.useCallback)((e,t,n=!0)=>{E(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}})},[]),V=(0,c.useCallback)((e,t=!0)=>{E(n=>{if(!(e in n.rangeFilters))return n;let r={...n.rangeFilters};return delete r[e],{...n,rangeFilters:r,filterRevision:n.filterRevision+ +!!t}})},[]),H=(e,t)=>e.min===t.min&&e.max===t.max,U=(0,c.useCallback)((e,t,n=!1)=>{E(r=>{let i=r.bucketFilters[e]??[],a=i.some(e=>H(e,t))?i.filter(e=>!H(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}})},[]),W=(0,c.useCallback)((e,t,n=!0)=>{E(r=>{let i={...r.bucketFilters},a=t?(i[e]??[]).filter(e=>!H(e,t)):[];return a.length>0?i[e]=a:delete i[e],{...r,bucketFilters:i,filterRevision:r.filterRevision+ +!!n}})},[]),G=(0,c.useCallback)((e,t)=>{E(n=>({...n,sortBy:e||void 0,sortAscending:e?t:void 0}))},[]);return(0,u.jsx)(x.Provider,{value:{state:T,isFetchingInitial:O.isFetchingInitial||!T.fieldsSeeded,authError:O.authError??void 0,allowEmptySearch:i,url:t,team:n,dataset:r,authenticatedFetch:k,setQuery:M,toggleFilter:I,setValueMatch:L,setRangeFilter:R,resetFilters:z,resetSingleFilter:B,resetRangeFilter:V,toggleBucketFilter:U,resetBucketFilter:W,setSort:G,setDebounceDelay:N,setSearchSettings:P,fetchMoreResults:F,selectResult:j,sessionId:C},children:e})},C=()=>{let e=(0,c.useContext)(x);if(!e)throw Error(`useSearchContext must be used within a SearchProvider`);return e},w=({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}=C();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`})})},T={placeholder:`_placeholder_ee9qi_1`,invalid:`_invalid_ee9qi_11`},E={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`},D=({skeleton:e=!1,index:t,score:n,showScore:r=!1,children:i,skeletonDelay:a=0,skeletonWidths:o=[62,38]})=>(0,u.jsxs)(`div`,{className:E.row,children:[t!==void 0&&(0,u.jsx)(`div`,{className:E.indexNumber,children:t}),(0,u.jsx)(`div`,{className:E.content,children:e?(0,u.jsxs)(`div`,{className:E.skeletonBars,children:[(0,u.jsx)(`div`,{className:E.skeletonBarLg,style:{width:`${o[0]}%`,animationDelay:`${a}s`}}),(0,u.jsx)(`div`,{className:E.skeletonBarSm,style:{width:`${o[1]}%`,animationDelay:`${a+.05}s`}})]}):i}),r&&n!==void 0&&(0,u.jsx)(`div`,{className:E.scoreNumber,children:n})]}),O={wrapper:`_wrapper_81m3c_6`,skeletonAppear:`_skeletonAppear_81m3c_1`},k=[[62,38],[75,45],[58,33],[70,42],[65,50],[55,35],[72,40],[60,30]],A=({rows:e=6})=>(0,u.jsx)(`div`,{className:O.wrapper,children:Array.from({length:e}).map((e,t)=>(0,u.jsx)(D,{skeleton:!0,skeletonDelay:t*.1,skeletonWidths:k[t%k.length]},t))}),j=/^\[\s*(?:'[^']*'(?:\s*,\s*'[^']*')*)?\s*\]$/;function M(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(!j.test(t))return;let n=[],r=/'([^']*)'/g,i;for(;(i=r.exec(t))!==null;)n.push(i[1]);return n}var N=({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:_,selectResult:v}=C(),y=t??30,[b,x]=(0,c.useState)(y),S=(0,c.useRef)(0),w=(0,c.useRef)(``);(0,c.useEffect)(()=>{let e=l!==w.current;(!i||i.length<S.current||e)&&x(y),S.current=i?.length??0,w.current=l},[i,y,l]);let E=i&&i.length>b,O=()=>{let e=b+y;x(e),i&&e>=i.length&&(!s||s===-1||s>i.length)&&_(i.length+y)};if(m)return g?(0,u.jsx)(A,{rows:y}):(0,u.jsx)(`div`,{className:T.placeholder,children:(0,u.jsx)(f.Indx,{size:200,color:`var(--lv5)`})});let k=h??p;return k?(0,u.jsx)(`div`,{className:T.invalid,role:`alert`,children:(0,u.jsx)(`p`,{children:k})}):a||i===null?(0,u.jsx)(`div`,{className:T.placeholder,children:(0,u.jsx)(f.Indx,{size:200,color:`var(--lv5)`})}):i.length===0?(0,u.jsx)(`div`,{className:T.invalid,children:(0,u.jsx)(`p`,{children:`No results found.`})}):(0,u.jsxs)(u.Fragment,{children:[(0,u.jsx)(`div`,{children:(i??[]).slice(0,b).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:T.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=M(t);n&&(l[e]=n)}}return(0,u.jsx)(D,{index:i,score:s,showScore:o.showScore,children:r(l,{result:t,select:()=>v?.(t)??Promise.resolve()})},i)})}),E&&(0,u.jsx)(`div`,{style:{textAlign:`center`,marginTop:`20px`},children:(0,u.jsx)(d.Button,{variant:`secondary`,size:`micro`,onClick:O,children:l.trim()===``?`Load more`:s!==-1&&s!==void 0&&s>0?`Load results ${b+1}-${Math.min(b+y,i.length,s)} of ${s}`:`Load more`})})]})},P={row:`_row_ujwhc_1`,title:`_title_ujwhc_8`},F=({variant:e=`default`,children:t})=>(0,u.jsx)(`div`,{className:[P.row,e===`title`?P.title:``].filter(Boolean).join(` `),children:t}),I={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`},L=[65,80,55,72,60,75,50,68],R=({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:I.sliderArea,children:[r&&(0,u.jsx)(`div`,{className:I.histogramRow}),(0,u.jsx)(`div`,{className:I.sliderTrack}),(0,u.jsxs)(`div`,{className:I.inputRow,children:[(0,u.jsx)(`div`,{className:I.inputBar,style:{animationDelay:`0.1s`}}),(0,u.jsx)(`div`,{className:I.inputBar,style:{animationDelay:`0.15s`}})]})]}):(0,u.jsx)(`div`,{className:I.listRows,children:Array.from({length:t}).map((e,t)=>(0,u.jsx)(`div`,{className:I.bar,style:{width:`${L[t%L.length]}%`,animationDelay:`${t*.05}s`}},t))})}),z={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`},B=({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:S,filters:w,query:T},toggleFilter:E,setValueMatch:D,isFetchingInitial:O,allowEmptySearch:k}=C(),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)(R,{rows:1,collapsible:!1}):(0,u.jsx)(R,{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)||!S?.includes(e)){let t=[];return x?.includes(e)||t.push(`filterable`),S?.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 L=new Map;n&&M.current&&Object.keys(M.current).forEach(e=>{L.set(e,0)}),F.forEach(e=>{L.set(e.key,e.value)});let B=new Set([`true`,`false`,`null`]),V=Array.from(L.keys()),H=A===`toggle`&&(V.length>0&&V.every(e=>B.has(e))||V.length===0&&I.length>0);if(H&&L.has(`null`)){let e=L.get(`null`)??0,t=L.get(`false`)??0;L.set(`false`,t+e),L.delete(`null`)}if(A===`toggle`&&!H)return(0,u.jsx)(d.FilterPanelBase,{collapsible:!1,children:(0,u.jsx)(`div`,{className:z.count,children:(0,u.jsx)(d.ToggleSwitch,{label:t,checked:!1,onChange:()=>{},disabled:!0})})});if(H){let n=L.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:z.count,children:[(0,u.jsx)(d.ToggleSwitch,{label:t,checked:i,onChange:()=>E(e,`true`),disabled:a}),` `,o]})})}let U=Array.from(L.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,ee=(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:z.count,children:[(0,u.jsx)(d.Button,{variant:r?`primary`:`secondary`,onClick:s,disabled:i,size:`micro`,className:z.chip,title:t,children:(0,u.jsx)(`span`,{className:z.chipLabel,children:t})}),(0,u.jsx)(`span`,{className:z.countValue,children:o})]}):(0,u.jsx)(d.Button,{variant:r?`primary`:`secondary`,onClick:s,disabled:i,size:`micro`,className:z.chip,title:`${t}${a}`,children:(0,u.jsx)(`span`,{className:z.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:z.count,children:[n,(0,u.jsx)(`span`,{className:z.countValue,children:o})]}):n}default:return p===`list`?(0,u.jsxs)(`div`,{className:z.count,children:[(0,u.jsx)(d.Checkbox,{label:t,score:``,checked:r,onChange:s,disabled:i}),(0,u.jsx)(`span`,{className:z.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?z.active:void 0,children:(0,u.jsxs)(`ul`,{className:p===`grid`?z.grid:z.list,style:{listStyle:`none`,padding:0,margin:0},children:[G.map(([e,t])=>(0,u.jsx)(`li`,{children:ee(e,t)},e)),W&&N<U.length&&(()=>{let e=U.length-N,t=Math.min(50,e);return(0,u.jsx)(`li`,{className:z.toggleItem,children:(0,u.jsx)(d.Button,{variant:`ghost`,size:`micro`,onClick:()=>P(e=>e+50),children:`Show ${t} more of ${U.length} total`})})})()]})})},V={disabledMessage:`_disabledMessage_adany_1`,histogram:`_histogram_adany_6`,histogramLayer:`_histogramLayer_adany_14`,histogramLive:`_histogramLive_adany_22`,histogramLit:`_histogramLit_adany_23`,histogramFill:`_histogramFill_adany_30`,histogramBar:`_histogramBar_adany_43`,histogramSeparators:`_histogramSeparators_adany_61`,histogramSeparator:`_histogramSeparator_adany_48`,active:`_active_adany_76`};function H(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 U(e){let t=0;for(let n of e)t=Math.max(t,H(n));return t===0?1:Number((10**-t).toFixed(t))}function W(e,t){return Number(e.toFixed(H(t)))}function G(e,t,n){let r=t+Math.round((e-t)/n)*n;return Number(r.toFixed(H(n)))}function ee(e,t,n){let r=Math.ceil(Number(((e-t)/n).toFixed(6)));return Number((t+r*n).toFixed(H(n)))}var K=({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,stepMarks:h})=>{let{state:{rangeFilters:g,rangeBounds:_,facetStats:v,facets:y,filterableFields:b,facetableFields:x,query:S,facetDebounceDelayMillis:w},setRangeFilter:T,resetRangeFilter:E,allowEmptySearch:D,isFetchingInitial:O}=C(),k=i??a??`input`,A=_?.[e]!==void 0,j=_?.[e]??{min:n,max:r},M=j.min,N=j.max,P=v?.[e]??j,F=Math.max(M,Math.min(N,P.min)),I=Math.max(M,Math.min(N,P.max)),L=c.default.useMemo(()=>{if(m)return m;let t=Math.max(H(M),H(N)),n=y?.[e];if(Array.isArray(n))for(let e of n)t=Math.max(t,H(Number(e.key)));return t===0?1:Number((10**-t).toFixed(t))},[m,M,N,y,e]),z=A&&M===N,B=z?n:M,U=z?r:N,K=ee(U+L,B,L),q=e=>Math.min(K,Math.max(B,e)),J=g?.[e],te=o&&J!==void 0?V.active:void 0,Y=J?J.min:M,X=J?J.max:N,Z=J!==void 0,ne=F!==M||I!==N,[Q,$]=c.default.useState([Y,X]),[re,ie]=c.default.useState(!1),[ae,oe]=c.default.useState(!1),[se,ce]=c.default.useState(String(Y)),[le,ue]=c.default.useState(String(X)),de=c.default.useMemo(()=>{let e=H(L);return{width:`calc(${Math.max(3,M.toFixed(e).length,N.toFixed(e).length,se.length,le.length)+1}ch + 20px)`}},[L,M,N,se,le]);c.default.useEffect(()=>{ce(String(Q[0])),ue(String(Q[1]))},[Q]);let{finalMin:fe,finalMax:pe,isValidMin:me,isValidMax:he}=c.default.useMemo(()=>{let[e,t]=Q,n=Math.max(M,Math.min(N,e)),r=Math.max(M,Math.min(N,t)),i=Math.min(n,r),a=Math.max(n,r);return{finalMin:i,finalMax:a,isValidMin:i>=M&&i<=a,isValidMax:a<=N&&a>=i}},[Q,M,N]);c.default.useEffect(()=>{if(z)return;if(Q[0]===M&&Q[1]===N){ie(!1),oe(!1);return}let t=w??500,n=setTimeout(()=>{ie(!me),oe(!he)},300),r=setTimeout(()=>{me&&he&&(fe===M&&pe===N?E(e,!1):T(e,fe,pe))},t);return()=>{clearTimeout(n),clearTimeout(r)}},[fe,pe,me,he,M,N,e,E,T,w,z]),c.default.useEffect(()=>{$([Y,X]),ie(!1),oe(!1)},[Y,X,e]);let ge=c.default.useCallback(e=>{let t=W(Math.min(e[0],e[1]-L),L);return[t,W(Math.max(e[1]-L,t),L)]},[L]),_e=c.default.useCallback(e=>{if(z)return;let[t,n]=ge(e);$([Math.max(M,Math.min(I,t)),Math.max(F,Math.min(N,n))])},[z,ge,M,N,F,I]),ve=c.default.useCallback(t=>{if(z)return;let[n,r]=ge(t),i=Math.max(M,Math.min(I,n)),a=Math.max(F,Math.min(N,r));i===M&&a===N?($([M,N]),E(e,!0)):$([i,a])},[z,ge,M,N,F,I,e,E]),ye=c.default.useRef(null),be=c.default.useCallback((t,n)=>{if(z)return;let r=ye.current;if(J&&r&&r.start===t&&r.last===n){ye.current=null,$([M,N]),E(e,!0);return}let i=G(Math.max(M,F,t),M,L),a=Math.max(i,G(Math.min(N,I,n),M,L));ye.current={start:t,last:n},$([i,a])},[z,J,M,N,F,I,L,e,E]),xe=c.default.useCallback(()=>{if(z)return;let e=se.trim(),t=e===``?NaN:Number(e);if(isNaN(t)){ce(String(Q[0]));return}let n=Math.max(M,Math.min(I,t));n<Q[1]?$([n,Q[1]]):$([M,Q[1]]),ce(String(n<Q[1]?n:M))},[z,se,Q,M,I]),Se=c.default.useCallback(()=>{if(z)return;let e=le.trim(),t=e===``?NaN:Number(e);if(isNaN(t)){ue(String(Q[1]));return}let n=Math.max(F,Math.min(N,t));n>Q[0]?$([Q[0],n]):$([Q[0],N]),ue(String(n>Q[0]?n:N))},[z,le,Q,F,N]),Ce=e=>t=>{t.key===`Enter`&&e()},[we,Te]=c.default.useState(null),Ee=c.default.useRef(null);c.default.useEffect(()=>{if(!f)return;let t=`${M}:${N}`;if(t===Ee.current&&Ee.current!==null)return;let n=y?.[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&&(Ee.current=t,Te(r))},[M,N,y,e,f]);let De=c.default.useMemo(()=>{if(!f||!we||we.length===0)return[];let e=N-M;if(e<=0)return[];let t=p??Math.max(L,W(Math.ceil(e/20/L)*L,L)),n=Math.ceil(e/t);return Array.from({length:n},(e,r)=>{let i=M+r*t,a=M+(r+1)*t,o=r===n-1,s=we.filter(e=>{let t=Number(e.key);return t>=i&&(t<a||o&&t<=N)}).reduce((e,t)=>e+t.value,0),c=o?N:W(a-L,L);return{bucketStart:i,bucketEnd:a,count:s,last:c,barEnd:W(c+L,L)}}).map((e,t,n)=>({...e,span:(t+1<n.length?n[t+1].bucketStart:Math.max(e.barEnd,K))-e.bucketStart}))},[f,we,M,N,p,L,K]),Oe=c.default.useMemo(()=>Math.max(...De.map(e=>e.count),1),[De]);return f&&!O&&!x?.includes(e)&&console.warn(`RangeFilterPanel: showHistogram=true but field "${e}" is not facetable. Add .Facetable = true to this field.`),O?(0,u.jsx)(R,{title:t,variant:`slider`,withHistogram:f,collapsible:s,startCollapsed:l}):!D&&!S?null:b?.includes(e)?k===`slider`?(0,u.jsxs)(d.FilterPanelBase,{title:t,collapsed:l,collapsible:s,className:te,children:[z&&(0,u.jsxs)(`div`,{className:V.disabledMessage,children:[`No adjustable range (all results have the same value: `,M,`).`]}),f&&De.length===0&&(0,u.jsx)(`div`,{className:V.histogram}),f&&De.length>0&&(()=>{let[e,t]=I>F&&(F>M||I<N)?[F,I]:[B,U],n=Math.max(fe,e),r=Math.min(pe,t),i=K,a=i-B||1,o=e=>Math.max(0,Math.min(1,(e-B)/a)),s=e=>e>=U?0:Math.max(0,Math.min(1,(i-(e+L))/a)),c=o(n),l=r<n?1-c:s(r),d=e=>`calc(10px + (100% - 20px) * ${e})`,f=`inset(0 ${d(l)} 0 ${d(c)})`,p=`inset(0 ${d(s(t))} 0 ${d(o(e))})`,m=n=>n.last<e||n.bucketStart>t,h=De.slice(1).map(e=>d((e.bucketStart-B)/a)),g=De.map(e=>({...e,height:Math.max(1,Math.ceil(e.count/Oe*20))}));return(0,u.jsxs)(`div`,{className:V.histogram,children:[(0,u.jsx)(`div`,{className:V.histogramLayer,children:g.map((e,t)=>(0,u.jsx)(`button`,{type:`button`,className:V.histogramBar,style:{flexGrow:e.span},"data-testid":`histogram-bar`,disabled:z||m(e),"aria-label":`${e.bucketStart} to ${e.last}: ${e.count}`,title:`${e.bucketStart} to ${e.last}: ${e.count}`,onClick:()=>be(e.bucketStart,e.last),children:(0,u.jsx)(`span`,{className:V.histogramFill,style:{height:`${e.height}px`}})},t))}),(0,u.jsx)(`div`,{className:`${V.histogramLayer} ${V.histogramLive}`,"aria-hidden":`true`,"data-testid":`histogram-live`,style:{clipPath:p},children:g.map((e,t)=>(0,u.jsx)(`span`,{className:V.histogramBar,style:{flexGrow:e.span},children:(0,u.jsx)(`span`,{className:V.histogramFill,style:{height:`${e.height}px`}})},t))}),(0,u.jsx)(`div`,{className:`${V.histogramLayer} ${V.histogramLit}`,"aria-hidden":`true`,"data-testid":`histogram-lit`,style:{clipPath:f},children:g.map((e,t)=>(0,u.jsx)(`span`,{className:V.histogramBar,style:{flexGrow:e.span},children:(0,u.jsx)(`span`,{className:V.histogramFill,style:{height:`${e.height}px`}})},t))}),(0,u.jsx)(`div`,{className:V.histogramSeparators,"aria-hidden":`true`,children:h.map((e,t)=>(0,u.jsx)(`span`,{className:V.histogramSeparator,style:{left:e}},t))})]})})(),(0,u.jsx)(`div`,{style:{padding:`10px 10px 20px 10px`},children:(0,u.jsx)(d.Slider,{min:B,max:K,step:L,stepMarks:h,value:z?[B,K]:[q(G(fe,B,L)),q(G(pe+L,B,L))],isRange:!0,onChange:e=>_e(e),onFinalChange:e=>ve(e),disabled:z,activeMin:F,activeMax:q(W(I+L,L)),isFaceted:ne,highlightFaceted:Z,"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:de,value:z?String(M):se,min:M,max:W(Math.min(I,Q[1]-L),L),onChange:e=>ce(e.target.value),onBlur:xe,onKeyDown:Ce(xe),disabled:z,isValid:z||!re}),(0,u.jsx)(d.InputField,{label:`Max:`,type:`number`,style:de,value:z?String(N):le,min:W(Math.max(F,Q[0]+L),L),max:N,onChange:e=>ue(e.target.value),onBlur:Se,onKeyDown:Ce(Se),disabled:z,isValid:z||!ae})]})]}):(0,u.jsxs)(d.FilterPanelBase,{title:t,className:te,children:[z&&(0,u.jsxs)(`div`,{className:V.disabledMessage,children:[`No adjustable range (all results have the same value: `,M,`).`]}),(0,u.jsxs)(`div`,{style:{display:`flex`,gap:`10px`,alignItems:`flex-start`},children:[(0,u.jsx)(d.InputField,{label:`Min:`,type:`number`,style:de,value:z?String(M):se,min:M,max:W(Math.min(I,Q[1]-L),L),onChange:e=>ce(e.target.value),onBlur:xe,onKeyDown:Ce(xe),disabled:z,isValid:z||!re}),(0,u.jsx)(d.InputField,{label:`Max:`,type:`number`,style:de,value:z?String(N):le,min:W(Math.max(F,Q[0]+L),L),max:N,onChange:e=>ue(e.target.value),onBlur:Se,onKeyDown:Ce(Se),disabled:z,isValid:z||!ae})]})]}):(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.`]})})},q={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 J(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 te=({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:S},toggleBucketFilter:w,isFetchingInitial:T,allowEmptySearch:E}=C(),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 U(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],W(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=W(r+n,N))e.push(i(W(r,N),W(r+n-N,N)));return e}return[]},[r,n,M,N]);if(T||!g)return(0,u.jsx)(R,{title:t,rows:Math.max(1,Math.min(P.length||5,8)),collapsible:m,startCollapsed:h});if(!E&&!S)return null;if(!_?.includes(e))return(0,u.jsx)(d.FilterPanelBase,{collapsible:!1,children:(0,u.jsxs)(`div`,{className:q.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),L=P.map(e=>({bucket:e,count:F?J(e,O):null}));if(l||(L=L.filter(e=>e.count!==0||I(e.bucket))),L.length===0)return null;let z=L.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:q.count,children:[n,(0,u.jsx)(`span`,{className:q.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:q.chip,children:o===`grid`&&a?`${t.label} (${a})`:t.label});return o===`list`?(0,u.jsxs)(`div`,{className:q.count,children:[e,(0,u.jsx)(`span`,{className:q.countValue,children:a})]}):e}return o===`list`?(0,u.jsxs)(`div`,{className:q.count,children:[(0,u.jsx)(d.Checkbox,{label:t.label,score:``,checked:r,onChange:c,disabled:i}),(0,u.jsx)(`span`,{className:q.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?q.active:void 0,children:(0,u.jsxs)(`ul`,{className:o===`grid`?q.grid:q.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<L.length&&(0,u.jsx)(`li`,{children:(0,u.jsx)(d.Button,{variant:`ghost`,size:`micro`,onClick:()=>j(L.length),children:`Show ${L.length-z.length} more of ${L.length} total`})})]})})},Y={grid:`_grid_1xjna_2`,chip:`_chip_1xjna_21`,chipLabel:`_chipLabel_1xjna_32`},X=(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]})})})),Z=(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]})})})),ne=(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 Q(){let{state:{filters:e,rangeFilters:t,bucketFilters:n},resetFilters:r,resetSingleFilter:i,resetRangeFilter:a,resetBucketFilter:o}=C(),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)(X,{field:e,value:t,onReset:()=>i(e,t)},`${e}-${t}`)),l.map(({field:e,min:t,max:n})=>(0,u.jsx)(Z,{field:e,min:t,max:n,onReset:()=>a(e)},e)),f.map(({field:e,range:t,label:n})=>(0,u.jsx)(ne,{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 $={select:`_select_nwf7i_1`,radioGroup:`_radioGroup_nwf7i_6`},re=({options:e,noneLabel:t=`None`,control:n,displayType:r,collapsible:i=!0,startCollapsed:a=!1})=>{let o=n??(r===`radio`?`radio`:`select`),{state:{sortableFields:s,sortBy:c,sortAscending:l},setSort:f,isFetchingInitial:p}=C();if(p)return(0,u.jsx)(R,{title:`Sort by`,rows:o===`radio`?3:1,collapsible:i,startCollapsed:a});if(!s||s.length===0)return null;let m=c?`${c}:${l?`asc`:`desc`}`:`none`,h=e?e.filter(e=>s.includes(e.field)?!0:(console.warn(`[SortByPanel] '${e.field}' is not sortable, so "${e.label}" is left out. Mark the field Sortable in the dataset's field configuration.`),!1)).map(e=>({label:e.label,value:`${e.field}:${e.ascending?`asc`:`desc`}`})):s.flatMap(e=>[{label:`${e} (asc)`,value:`${e}:asc`},{label:`${e} (desc)`,value:`${e}:desc`}]),g=t===null?h:[{label:t,value:`none`},...h],_=e=>{if(e===`none`||e===``)f(null,!0);else{let[t,n]=e.split(`:`);f(t,n===`asc`)}};return(0,u.jsx)(d.FilterPanelBase,{title:`Sort by`,collapsible:i,collapsed:i?a:!1,children:o===`select`?(0,u.jsx)(d.Select,{value:m,onValueChange:_,options:g,placeholder:`Select sort...`,"aria-label":`Sort by`}):(0,u.jsx)(`div`,{className:$.radioGroup,children:g.map(e=>(0,u.jsx)(d.RadioButton,{id:`sort-${e.value}`,name:`sort-by`,value:e.value,label:e.label,checked:m===e.value,onChange:e=>_(e.target.value)},e.value))})})},ie={list:`_list_1y4fk_1`},ae={coverageDepth:500,coverWholeQuery:!0,coverWholeWords:!0,coverFuzzyWords:!0,coverJoinedWords:!0,coverPrefixSuffix:!0,truncate:!0,includePatternMatches:!0,minWordSize:2,levenshteinMaxWordSize:20,truncateWordHitLimit:1,truncateWordHitTolerance:0,truncationScore:65024};function oe(){let{state:{searchSettings:e},setSearchSettings:t,url:n,team:r,dataset:i,authenticatedFetch:a}=C(),[o,s]=(0,c.useState)(!1),[l,p]=(0,c.useState)(null);(0,c.useEffect)(()=>{let e=!0;try{a(`${n}/api/teams/${r}/datasets/${i}/query-parameters`).then(e=>e.ok?e.json():null).then(t=>{e&&t?.effective&&p(t.effective)}).catch(()=>{})}catch{}return()=>{e=!1}},[n,r,i,a]);let m=e.coverageSetup,h=e=>m[e]!==void 0&&m[e]!==null,g=e=>m[e]??l?.coverageSetup?.[e]??ae[e],_=e.coverageDepth??l?.coverageDepth??ae.coverageDepth,v=l?`dataset`:`default`,y=(e,t)=>t?e:`${e} (${v})`,b=e.coverageDepth!==void 0||Object.keys(m).some(e=>h(e)),x=(e,n)=>{let r=parseInt(n,10);isNaN(r)||t({[e]:r})},S=(e,n)=>{t({[e]:n})},w=(n,r)=>{let i=parseInt(r,10);isNaN(i)||t({coverageSetup:{...e.coverageSetup,[n]:i}})},T=(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=>x(`maxNumberOfRecordsToReturn`,e.target.value)})}),(0,u.jsx)(`li`,{children:(0,u.jsx)(d.InputField,{label:y(`Coverage Depth`,e.coverageDepth!==void 0),type:`number`,value:_.toString(),onChange:e=>x(`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=>S(`showScore`,e)})}),(0,u.jsx)(`li`,{children:(0,u.jsx)(d.ToggleSwitch,{label:`Enable Coverage`,checked:e.enableCoverage,onChange:e=>S(`enableCoverage`,e)})}),(0,u.jsx)(`li`,{children:(0,u.jsx)(d.ToggleSwitch,{label:`Remove Duplicates`,checked:e.removeDuplicates,onChange:e=>S(`removeDuplicates`,e)})}),(0,u.jsx)(`li`,{children:(0,u.jsx)(d.Button,{variant:`ghost`,size:`micro`,iconRight:o?(0,u.jsx)(f.ArrowDown,{}):(0,u.jsx)(f.ArrowRight,{}),onClick:()=>s(e=>!e),children:o?`Hide Coverage Setup`:`Show Coverage Setup`})}),o&&(0,u.jsxs)(u.Fragment,{children:[(0,u.jsx)(`li`,{children:(0,u.jsx)(d.ToggleSwitch,{label:y(`Cover Whole Query`,h(`coverWholeQuery`)),checked:g(`coverWholeQuery`),onChange:e=>T(`coverWholeQuery`,e)})}),(0,u.jsx)(`li`,{children:(0,u.jsx)(d.ToggleSwitch,{label:y(`Cover Whole Words`,h(`coverWholeWords`)),checked:g(`coverWholeWords`),onChange:e=>T(`coverWholeWords`,e)})}),(0,u.jsx)(`li`,{children:(0,u.jsx)(d.ToggleSwitch,{label:y(`Cover Fuzzy Words`,h(`coverFuzzyWords`)),checked:g(`coverFuzzyWords`),onChange:e=>T(`coverFuzzyWords`,e)})}),(0,u.jsx)(`li`,{children:(0,u.jsx)(d.ToggleSwitch,{label:y(`Cover Joined Words`,h(`coverJoinedWords`)),checked:g(`coverJoinedWords`),onChange:e=>T(`coverJoinedWords`,e)})}),(0,u.jsx)(`li`,{children:(0,u.jsx)(d.ToggleSwitch,{label:y(`Cover Prefix Suffix`,h(`coverPrefixSuffix`)),checked:g(`coverPrefixSuffix`),onChange:e=>T(`coverPrefixSuffix`,e)})}),(0,u.jsx)(`li`,{children:(0,u.jsx)(d.ToggleSwitch,{label:y(`Truncate`,h(`truncate`)),checked:g(`truncate`),onChange:e=>T(`truncate`,e)})}),(0,u.jsx)(`li`,{children:(0,u.jsx)(d.ToggleSwitch,{label:y(`Include Pattern Matches`,h(`includePatternMatches`)),checked:g(`includePatternMatches`),onChange:e=>T(`includePatternMatches`,e)})}),(0,u.jsx)(`li`,{children:(0,u.jsx)(d.InputField,{label:y(`Levenshtein Max Word Size`,h(`levenshteinMaxWordSize`)),type:`number`,value:g(`levenshteinMaxWordSize`).toString(),onChange:e=>w(`levenshteinMaxWordSize`,e.target.value)})}),(0,u.jsx)(`li`,{children:(0,u.jsx)(d.InputField,{label:y(`Min Word Size`,h(`minWordSize`)),type:`number`,value:g(`minWordSize`).toString(),onChange:e=>w(`minWordSize`,e.target.value)})}),(0,u.jsx)(`li`,{children:(0,u.jsx)(d.InputField,{label:y(`Truncate Word Hit Limit`,h(`truncateWordHitLimit`)),type:`number`,value:g(`truncateWordHitLimit`).toString(),onChange:e=>w(`truncateWordHitLimit`,e.target.value)})}),(0,u.jsx)(`li`,{children:(0,u.jsx)(d.InputField,{label:y(`Truncate Word Hit Tolerance`,h(`truncateWordHitTolerance`)),type:`number`,value:g(`truncateWordHitTolerance`).toString(),onChange:e=>w(`truncateWordHitTolerance`,e.target.value)})}),b&&(0,u.jsx)(`li`,{children:(0,u.jsx)(d.Button,{variant:`ghost`,size:`micro`,onClick:()=>t({coverageSetup:void 0,coverageDepth:void 0}),children:`Use the dataset's values`})})]})]})})}var se=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 ce(e,t){let{url:n,team:r,dataset:i,authenticatedFetch:a}=C(),[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 le(e,t){let{url:n,team:r,dataset:i,authenticatedFetch:a}=C(),[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=Q,exports.BucketFilterPanel=te,exports.FilterPanelSkeleton=R,exports.IndxApiError=m,exports.RangeFilterPanel=K,exports.SearchContext=x,exports.SearchErrorBoundary=se,exports.SearchInput=w,exports.SearchProvider=S,exports.SearchResult=D,exports.SearchResultRow=F,exports.SearchResults=N,exports.SearchResultsSkeleton=A,exports.SearchSettingsPanel=oe,exports.SortByPanel=re,exports.ValueFilterPanel=B,exports.useHybridSearch=le,exports.useSearch=C,exports.useSearchContext=C,exports.useVectorSearch=ce;
|