@nosto/search-js 3.25.6 → 3.25.7

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.
@@ -1 +1 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`../index.es-Ba4tuzxb.cjs`),t=require(`../search-BeFE0Ezr.cjs`);require(`../storage-B3FIcJQv.cjs`);async function n(t,n,r=1){await e.t(n,void 0,r),await(await new Promise(e.r)).recordSearchAddToCart(t,n)}exports.addToCart=n,exports.search=t.t;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`../index.es-Ba4tuzxb.cjs`),t=require(`../search-BeFE0Ezr.cjs`);async function n(t,n,r=1){await e.t(n,void 0,r),await(await new Promise(e.r)).recordSearchAddToCart(t,n)}exports.addToCart=n,exports.search=t.t;
@@ -1,6 +1,5 @@
1
1
  import { r as e, t } from "../index.es-jSYcbRvi.js";
2
2
  import { t as n } from "../search-C2WGFf4C.js";
3
- import "../storage-DeAo7M3s.js";
4
3
  //#region packages/core/src/addToCart.ts
5
4
  async function r(n, r, i = 1) {
6
5
  await t(r, void 0, i), await (await new Promise(e)).recordSearchAddToCart(n, r);
@@ -1 +1 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`../../index.es-Ba4tuzxb.cjs`);require(`../../search-BeFE0Ezr.cjs`),require(`../../storage-B3FIcJQv.cjs`);const t=require(`../../cl-CYT5y6Dn.cjs`);require(`../../useActions-boQy-Vp0.cjs`),require(`../../eventBusSubscribe-c9a_PP0j.cjs`),require(`../../baseConfig-jLd7jchq.cjs`),require(`../../useHistory-GRnuHgQ5.cjs`);const n=require(`../../AutocompletePageProvider-DzjwKsBp.cjs`),r=require(`../../jsxRuntime.module-Ba9fccPy.cjs`),i=require(`../../BaseElement-BnP6tQrH.cjs`);let a=require(`preact/hooks`);function o({children:t,hit:n,as:o,componentProps:s}){return r.t(i.t,{onClick:(0,a.useCallback)(()=>{n&&`productId`in n&&e.r(e=>e.recordSearchClick(`autocomplete`,n))},[n]),as:o,componentProps:s,className:`ns-autocomplete-element`,children:t})}function s({children:e,class:n,onSubmit:i}){return r.t(`div`,{className:t.t(`ns-autocomplete-element`,n),onClick:i,onKeyDown:e=>{e.key===`Enter`&&i()},children:e})}function c({as:e,componentProps:t,onSearchInput:n,children:i}){let a={...t,onInput:e=>{n(e.target)}},o=e??`input`;return e||(a.type=`search`),r.t(o,{...a,children:i})}exports.AutocompleteElement=o,exports.AutocompletePageProvider=n.t,exports.HistoryElement=s,exports.SearchInput=c;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`../../index.es-Ba4tuzxb.cjs`),t=require(`../../cl-CYT5y6Dn.cjs`),n=require(`../../AutocompletePageProvider-DzjwKsBp.cjs`),r=require(`../../jsxRuntime.module-Ba9fccPy.cjs`),i=require(`../../BaseElement-BnP6tQrH.cjs`);let a=require(`preact/hooks`);function o({children:t,hit:n,as:o,componentProps:s}){return r.t(i.t,{onClick:(0,a.useCallback)(()=>{n&&`productId`in n&&e.r(e=>e.recordSearchClick(`autocomplete`,n))},[n]),as:o,componentProps:s,className:`ns-autocomplete-element`,children:t})}function s({children:e,class:n,onSubmit:i}){return r.t(`div`,{className:t.t(`ns-autocomplete-element`,n),onClick:i,onKeyDown:e=>{e.key===`Enter`&&i()},children:e})}function c({as:e,componentProps:t,onSearchInput:n,children:i}){let a={...t,onInput:e=>{n(e.target)}},o=e??`input`;return e||(a.type=`search`),r.t(o,{...a,children:i})}exports.AutocompleteElement=o,exports.AutocompletePageProvider=n.t,exports.HistoryElement=s,exports.SearchInput=c;
@@ -1,11 +1,5 @@
1
1
  import { r as e } from "../../index.es-jSYcbRvi.js";
2
- import "../../search-C2WGFf4C.js";
3
- import "../../storage-DeAo7M3s.js";
4
2
  import { t } from "../../cl-G5KK1qHD.js";
5
- import "../../useActions-BmWNZAES.js";
6
- import "../../eventBusSubscribe-C6qT1aOO.js";
7
- import "../../baseConfig-Che6Adb6.js";
8
- import "../../useHistory-BMkSr69f.js";
9
3
  import { t as n } from "../../AutocompletePageProvider-D48n1GB-.js";
10
4
  import { n as r } from "../../jsxRuntime.module-BRdvPAre.js";
11
5
  import { t as i } from "../../BaseElement-C25wjvSR.js";
@@ -1 +1 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`}),require(`../../index.es-Ba4tuzxb.cjs`),require(`../../search-BeFE0Ezr.cjs`),require(`../../storage-B3FIcJQv.cjs`),require(`../../useActions-boQy-Vp0.cjs`),require(`../../eventBusSubscribe-c9a_PP0j.cjs`),require(`../../baseConfig-jLd7jchq.cjs`),require(`../../jsxRuntime.module-Ba9fccPy.cjs`);const e=require(`../../CategoryPageProvider-B6w4FHhB.cjs`);exports.CategoryPageProvider=e.t;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`../../CategoryPageProvider-B6w4FHhB.cjs`);exports.CategoryPageProvider=e.t;
@@ -1,9 +1,2 @@
1
- import "../../index.es-jSYcbRvi.js";
2
- import "../../search-C2WGFf4C.js";
3
- import "../../storage-DeAo7M3s.js";
4
- import "../../useActions-BmWNZAES.js";
5
- import "../../eventBusSubscribe-C6qT1aOO.js";
6
- import "../../baseConfig-Che6Adb6.js";
7
- import "../../jsxRuntime.module-BRdvPAre.js";
8
1
  import { t as e } from "../../CategoryPageProvider-BYw7KGoS.js";
9
2
  export { e as CategoryPageProvider };
@@ -1 +1 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`}),require(`../../index.es-Ba4tuzxb.cjs`),require(`../../search-BeFE0Ezr.cjs`),require(`../../storage-B3FIcJQv.cjs`);const e=require(`../../isBot-CkyQfegP.cjs`),t=require(`../../pick-0KNFTqKn.cjs`),n=require(`../../useActions-boQy-Vp0.cjs`),r=require(`../../jsxRuntime.module-Ba9fccPy.cjs`),i=require(`../../ErrorBoundary-BtAe8lXu.cjs`),a=require(`../../useLoadMore-B9LiuhfV.cjs`),o=require(`../../InfiniteScrollWithObserver-k7oYk4f9.cjs`);let s=require(`preact`);function c({pageSize:e}){let{loadMore:t}=a.t(e);return r.t(`button`,{onClick:t,children:`More results`})}function l({children:e,loadMoreComponent:n,pageSize:i}){let{loading:l,query:u,response:d}=a.r(e=>t.t(e,`loading`,`query`,`response`));return r.t(s.Fragment,{children:[e,!l&&o.n(u,d)&&(n?r.t(n,{pageSize:i}):r.t(c,{pageSize:i}))]})}var u=!e.t()&&o.r()?o.t:l;exports.ErrorBoundary=i.t,exports.InfiniteScroll=u,exports.InfiniteScrollWithLink=l,exports.StoreContext=n.i,exports.createExtendableStore=n.s,exports.createStore=n.a,exports.defaultState=n.o,exports.useAutocompleteConfig=n.l,exports.useCategoryConfig=n.u,exports.useConfig=n.d,exports.useSerpConfig=n.f;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`../../isBot-CkyQfegP.cjs`),t=require(`../../pick-0KNFTqKn.cjs`),n=require(`../../useActions-boQy-Vp0.cjs`),r=require(`../../jsxRuntime.module-Ba9fccPy.cjs`),i=require(`../../ErrorBoundary-BtAe8lXu.cjs`),a=require(`../../useLoadMore-B9LiuhfV.cjs`),o=require(`../../InfiniteScrollWithObserver-k7oYk4f9.cjs`);let s=require(`preact`);function c({pageSize:e}){let{loadMore:t}=a.t(e);return r.t(`button`,{onClick:t,children:`More results`})}function l({children:e,loadMoreComponent:n,pageSize:i}){let{loading:l,query:u,response:d}=a.r(e=>t.t(e,`loading`,`query`,`response`));return r.t(s.Fragment,{children:[e,!l&&o.n(u,d)&&(n?r.t(n,{pageSize:i}):r.t(c,{pageSize:i}))]})}var u=!e.t()&&o.r()?o.t:l;exports.ErrorBoundary=i.t,exports.InfiniteScroll=u,exports.InfiniteScrollWithLink=l,exports.StoreContext=n.i,exports.createExtendableStore=n.s,exports.createStore=n.a,exports.defaultState=n.o,exports.useAutocompleteConfig=n.l,exports.useCategoryConfig=n.u,exports.useConfig=n.d,exports.useSerpConfig=n.f;
@@ -1,6 +1,3 @@
1
- import "../../index.es-jSYcbRvi.js";
2
- import "../../search-C2WGFf4C.js";
3
- import "../../storage-DeAo7M3s.js";
4
1
  import { t as e } from "../../isBot-CPesLwHL.js";
5
2
  import { t } from "../../pick-B8ymxJme.js";
6
3
  import { a as n, d as r, f as i, i as a, l as o, o as s, s as c, u as l } from "../../useActions-BmWNZAES.js";
@@ -1 +1 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`../../index.es-Ba4tuzxb.cjs`);require(`../../search-BeFE0Ezr.cjs`);const t=require(`../../storage-B3FIcJQv.cjs`),n=require(`../../parseNumber-BH_92pM8.cjs`),r=require(`../../useActions-boQy-Vp0.cjs`),i=require(`../../eventBusSubscribe-c9a_PP0j.cjs`),a=require(`../../useHistory-GRnuHgQ5.cjs`),o=require(`../../useLoadMore-B9LiuhfV.cjs`),s=require(`../../eventBusDispatch-B6VswTu8.cjs`);let c=require(`preact/hooks`);function l(e){let n=o.r(e=>e.response);return e&&Array.isArray(e)||e&&t.l(e)?e:n}function u(e,t){let n=e.data?.filter(e=>e.selected).length??0,{active:a}={active:n>0,...t},[o,s]=(0,c.useState)(a),{toggleProductFilter:l}=r.t(),u=(0,c.useCallback)(()=>{s(!o)},[o]);return i.n({event:`events/removeAllFilters`,callback:()=>{s(!1)}}),{active:o,selectedFiltersCount:n,toggleActive:u,toggleProductFilter:l}}function d(){let{loading:e,facets:t}=o.r(e=>({loading:e.loading,facets:e.response?.products?.facets??[]}));return{loading:e,facets:t}}function f(e,t){let n=t-e;return!isNaN(n)&&n>0?Array(t-e).fill(void 0).map((t,n)=>n+e):[]}function p(e){let{query:t,products:n}=o.r(e=>({query:e.query,products:e.response.products}));return(0,c.useMemo)(()=>{if(!n)return{totalPages:0,resultsFrom:0,resultsTo:0,pages:[]};let r=t.products?.from??0,i=e?.width??1/0,a=Math.max(Math.floor(i-1)/2,1),o=n.size>0?Math.floor(r/n.size)+1:1,s=n.size>0?Math.ceil(n.total/n.size):0,c=e=>e>=o-a&&e<=o+a,l=r+1,u=Math.min(r+n.total,n.total),d={from:r,page:o,current:!0},p=e=>({from:(e-1)*n.size,page:e,current:e===o}),m=o>1?p(o-1):void 0,h=o<s?p(o+1):void 0,g=o-a-1>1?p(1):void 0,_=o+a+1<s?p(s):void 0,v=f(1,s+1).filter(c).map(p);return!g&&v[0]?.page===2&&v.unshift(p(1)),!_&&v[v.length-1]?.page===s-1&&v.push(p(s)),{totalPages:s,resultsFrom:l,resultsTo:u,current:d,prev:m,next:h,first:g,last:_,pages:v}},[t,n,e?.width])}function m(){let[t,n]=(0,c.useState)([]),[r,i]=(0,c.useState)([]);return(0,c.useEffect)(()=>{e.r(async e=>{let{products:t,segments:r}=await e.getSearchSessionParams();n(r??[]),i(t?.personalizationBoost??[])})},[]),{segments:t,boost:r}}function h(){let{facets:e}=o.r(e=>({facets:e.response.products?.facets??[]})),{replaceFilter:t,toggleProductFilter:n}=r.t(),i=(0,c.useCallback)(t=>{let n=e?.find(e=>e.type===`stats`&&e.field===t);if(n&&`min`in n&&`max`in n)return n},[e]),a=(0,c.useCallback)(t=>e?.find(e=>e.field===t)?.name??t,[e]),s=(0,c.useCallback)(e=>`field`in e&&(e.value instanceof Array||e.range instanceof Array),[]),l=(0,c.useCallback)(e=>({...e,range:e.range?.map(e=>({gt:e.gt?Number(e.gt):e.gt,gte:e.gte?Number(e.gte):e.gte,lt:e.lt?Number(e.lt):e.lt,lte:e.lte?Number(e.lte):e.lte}))}),[]);return{selectFilters:s,toValueFilter:(0,c.useCallback)(e=>(e.value??[]).map(t=>({value:t,field:e.field,name:a(e.field),filter:l(e),remove:()=>{n(e.field,t,!1)}})),[l,a,n]),toRangeFilter:(0,c.useCallback)(e=>(e.range??[]).map(n=>{let r=n.gte??n.gt??i(e.field)?.min,o=n.lte??n.lt??i(e.field)?.max;if(r!==void 0&&o!==void 0)return{value:`${r} - ${o}`,field:e.field,name:a(e.field),filter:l(e),remove:()=>{t(e.field,void 0)}}}).filter(Boolean),[l,i,a,t])}}function g(){let{filter:e}=o.r(e=>({filter:e.query.products?.filter??[]})),{updateSearch:t}=r.t(),{selectFilters:n,toValueFilter:i,toRangeFilter:a}=h();return{filters:(0,c.useMemo)(()=>e?e.filter(n).flatMap(e=>`value`in e?i(e):`range`in e?a(e):[]).filter(Boolean):[],[e,n,a,i]),removeAll:(0,c.useCallback)(()=>{t({products:{filter:[]}}),s.t({event:`events/removeAllFilters`,params:null})},[t])}}function _(e){let{replaceFilter:t}=r.t(),{query:n,products:a}=o.r(e=>({query:e.query,products:e.response.products})),s=a?.facets?.find(t=>t.id===e),l=n.products?.filter?.find(e=>e.field===s?.field),[u,d]=y(l),f=s&&`min`in s?Math.floor(s.min??0):0,p=s&&`max`in s?Math.ceil(s.max??0):0,m=(0,c.useMemo)(()=>[u??f,d??p],[u,d,f,p]),[h,g]=(0,c.useState)(u!==void 0||d!==void 0),_=(0,c.useCallback)(()=>{g(e=>!e)},[]),x=(0,c.useCallback)(([e,n])=>{if(!s)return;let r=b(e,n,f,p);t(s.field,r)},[f,p,t,s]);return i.n({event:`events/removeAllFilters`,callback:()=>{g(!1)}}),s?{min:f,max:p,range:m,updateRange:x,active:h,toggleActive:_}:v}var v={min:0,max:0,range:[0,0],active:!1,toggleActive:()=>{},updateRange:()=>{}};function y(e){let t=e?.range?.[0];return typeof t==`object`&&(`gte`in t||`lte`in t)?[n.t(t.gte),n.t(t.lte)]:[void 0,void 0]}function b(e,t,n,r){let i=e===void 0?void 0:Math.floor(e),a=t===void 0?void 0:Math.ceil(t),o=i!==void 0,s=a!==void 0;if((n===i||!o)&&(r===a||!s))return;let c={};return o&&i!==n&&(c.gte=i.toString()),s&&a!==r&&(c.lte=a.toString()),Object.keys(c).length>0?c:void 0}function x(e,t){let{min:r,max:i,range:a,updateRange:o}=_(e),{filters:s}=g();return{min:r,max:i,range:a,updateRange:o,ranges:(0,c.useMemo)(()=>{let e=s.find(e=>e?.filter?.range),a=null;if(e){let t=e.filter.range?.[0];a=[n.t(t?.gte),n.t(t?.lte)]}let o=[],c=Math.floor(r/t)*t;for(;c<i;){let e=c+t,n=a&&a[0]===c&&a[1]===e;o.push({min:c,max:e,selected:n}),c=e}return o},[s,r,i,t]),handleMinChange:(0,c.useCallback)(e=>{o([e,a[1]])},[a,o]),handleMaxChange:(0,c.useCallback)(e=>{o([a[0],e])},[a,o]),isSelected:r!==a[0]||i!==a[1]}}function S(){let{products:e,keywords:t,popularSearches:n,categories:r}=o.r(e=>({products:e.response.products??C,keywords:e.response.keywords??C,popularSearches:e.response.popularSearches??C,categories:e.response.categories??C}));return{products:e,keywords:t,popularSearches:n,categories:r}}var C={hits:[],total:0};function w(){let e=o.r(e=>e.query.products?.filter);return(0,c.useMemo)(()=>e?e.reduce((e,t)=>e+(Array.isArray(t.value)?t.value.length:1),0):0,[e])}var T=300*1e3,E=new Map;function D(e){let[t,n]=(0,c.useState)({product:null,loading:!0,error:null});return(0,c.useEffect)(()=>{if(!e){n({product:null,loading:!1,error:`Product handle is required`});return}n(e=>({...e,loading:!0,error:null}));let t=A(e);if(t){n({product:t,loading:!1,error:null});return}k(e).then(t=>{j(e,t),n({product:t,loading:!1,error:null})}).catch(e=>{n({product:null,loading:!1,error:e.message||`Failed to fetch product`})})},[e]),t}function O(e){let t=window.Shopify?.routes?.root;return t?new URL(`${t}products/${e}`,window.location.href):e}async function k(e){let t=await fetch(O(`/products/${e}.js`));if(!t.ok)throw Error(`Failed to fetch product: ${t.status} ${t.statusText}`);return t.json()}function A(e){let t=E.get(e);return t?Date.now()-t.created>T?(E.delete(e),null):t.product:null}function j(e,t){E.set(e,{product:t,created:Date.now()})}function M(e){return e&&!Number.isNaN(e)?e:0}function N(e,t){let{from:i,size:a,total:s}=o.r(e=>({from:M(e.query.products?.from??0),size:M(e.response?.products?.size??t),total:M(e.response?.products?.total??0)})),{updateSearch:l}=r.t();return{from:i,to:i+a,total:s,size:a,sizeOptions:(0,c.useMemo)(()=>[...e].reverse().filter(e=>e<s),[e,s]),handleSizeChange:(0,c.useCallback)(e=>{l({products:{size:n.t(e)}})},[l])}}function P(e,t){return e.length===t.length?e.every(e=>t.find(t=>e.field===t.field&&e.order===t.order)):!1}function F(e){let t=o.r(e=>e.query),{updateSearch:n}=r.t(),i=e.find(e=>P(e.value.sort,t.products?.sort||[]))?.id??e[0]?.id;return{activeSort:i,setSort:(0,c.useCallback)(t=>{if(t===i)return;let r=e.find(e=>e.id===t);r&&n({products:{sort:r.value.sort}})},[e,n,i])}}var I=window.SpeechRecognition||window.webkitSpeechRecognition,L=!!(I&&typeof I==`function`);function R(){return{listening:!1,startListening:()=>{},stopListening:()=>{}}}function z({language:e=`en-US`,interimResults:t=!1,onResult:n,onError:r}={}){let[i,a]=(0,c.useState)(!1),o=(0,c.useRef)(null);return{listening:i,startListening:(0,c.useCallback)(()=>{let i=new I;i.lang=e,i.interimResults=t,i.onstart=()=>a(!0),n&&(i.onresult=e=>{let{transcript:t}=e.results?.[0]?.[0];n(t)}),r&&(i.onerror=e=>r(e.error)),i.onend=()=>a(!1),o.current=i,i.start()},[e,t,r,n]),stopListening:(0,c.useCallback)(()=>{o.current?.stop()},[o])}}var B=L?z:R;function V(e,t){if(!e.length||!t.length)return[];let n=t.reduce((e,t)=>(e[t]={},e),{});return e.forEach(e=>{e.customFields?.forEach(({key:r,value:i})=>{let a=r.toLowerCase();t.includes(a)&&(n[a][i]=n[a][i]||[],n[a][i].push(e))})}),Object.entries(n).filter(e=>Object.keys(e[1]).length).map(([e,t])=>({field:e,options:Object.entries(t).map(([e,t])=>({value:e,skus:t,unavailable:!1,selected:!1}))}))}function H(e,t){return e.length?e.map(({field:e,options:n})=>({field:e,options:n.map(n=>{let r=!n.skus?.some(n=>Object.entries(t).every(([t,r])=>t===e?!0:n.customFields?.find(e=>e.key.toLowerCase()===t)?.value===r)),i=t[e]===n.value;return{...n,unavailable:r,selected:i}})})):[]}var U=[`4XS`,`3XS`,`2XS`,`XXS`,`XS`,`S`,`M`,`L`,`XL`,`XXL`,`2XL`,`XXXL`,`3XL`,`4XL`];function W(e){if(U.includes(e))return 1e3+U.indexOf(e);let t=parseFloat(e);return isNaN(t)?e:t}function G(e,t){return[...t].sort((e,t)=>{let[n,r]=[e.value,t.value].map(W);return n<r?-1:1})}function K(e=[],t=[]){let[n,r]=(0,c.useState)({}),i=(0,c.useMemo)(()=>V(e,t).map(({field:e,options:t})=>({field:e,options:G(e,t)})),[e,t]),a=(0,c.useMemo)(()=>H(i,n),[i,n]);return{swatches:a,toggleOption:(0,c.useCallback)((e,t)=>{r(n=>{let r={...n};return r[e]===t?delete r[e]:r[e]=t,r})},[]),matchedSkus:(0,c.useMemo)(()=>Object.keys(n).filter(e=>n[e]).length===0?[]:a.filter(({field:e})=>n[e]).map(({field:e,options:t})=>{let r=n[e];return t.find(e=>e.value===r)?.skus??[]}).reduce((e,t)=>e.filter(e=>t.includes(e))),[a,n])}}exports.addToHistory=a.t,exports.getSavedHistory=a.n,exports.speechToTextSupported=L,exports.useActions=r.t,exports.useDecoratedSearchResults=l,exports.useFacet=u,exports.useFacets=d,exports.useHistory=a.r,exports.useLoadMore=o.t,exports.useNostoAppState=o.r,exports.usePagination=p,exports.usePersonalization=m,exports.useProductFilters=g,exports.useRange=_,exports.useRangeSelector=x,exports.useResponse=S,exports.useSelectedFiltersCount=w,exports.useShopifyProduct=D,exports.useSizeOptions=N,exports.useSort=F,exports.useSpeechToText=B,exports.useSwatches=K;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`../../index.es-Ba4tuzxb.cjs`),t=require(`../../storage-B3FIcJQv.cjs`),n=require(`../../parseNumber-BH_92pM8.cjs`),r=require(`../../useActions-boQy-Vp0.cjs`),i=require(`../../eventBusSubscribe-c9a_PP0j.cjs`),a=require(`../../useHistory-GRnuHgQ5.cjs`),o=require(`../../useLoadMore-B9LiuhfV.cjs`),s=require(`../../eventBusDispatch-B6VswTu8.cjs`);let c=require(`preact/hooks`);function l(e){let n=o.r(e=>e.response);return e&&Array.isArray(e)||e&&t.l(e)?e:n}function u(e,t){let n=e.data?.filter(e=>e.selected).length??0,{active:a}={active:n>0,...t},[o,s]=(0,c.useState)(a),{toggleProductFilter:l}=r.t(),u=(0,c.useCallback)(()=>{s(!o)},[o]);return i.n({event:`events/removeAllFilters`,callback:()=>{s(!1)}}),{active:o,selectedFiltersCount:n,toggleActive:u,toggleProductFilter:l}}function d(){let{loading:e,facets:t}=o.r(e=>({loading:e.loading,facets:e.response?.products?.facets??[]}));return{loading:e,facets:t}}function f(e,t){let n=t-e;return!isNaN(n)&&n>0?Array(t-e).fill(void 0).map((t,n)=>n+e):[]}function p(e){let{query:t,products:n}=o.r(e=>({query:e.query,products:e.response.products}));return(0,c.useMemo)(()=>{if(!n)return{totalPages:0,resultsFrom:0,resultsTo:0,pages:[]};let r=t.products?.from??0,i=e?.width??1/0,a=Math.max(Math.floor(i-1)/2,1),o=n.size>0?Math.floor(r/n.size)+1:1,s=n.size>0?Math.ceil(n.total/n.size):0,c=e=>e>=o-a&&e<=o+a,l=r+1,u=Math.min(r+n.total,n.total),d={from:r,page:o,current:!0},p=e=>({from:(e-1)*n.size,page:e,current:e===o}),m=o>1?p(o-1):void 0,h=o<s?p(o+1):void 0,g=o-a-1>1?p(1):void 0,_=o+a+1<s?p(s):void 0,v=f(1,s+1).filter(c).map(p);return!g&&v[0]?.page===2&&v.unshift(p(1)),!_&&v[v.length-1]?.page===s-1&&v.push(p(s)),{totalPages:s,resultsFrom:l,resultsTo:u,current:d,prev:m,next:h,first:g,last:_,pages:v}},[t,n,e?.width])}function m(){let[t,n]=(0,c.useState)([]),[r,i]=(0,c.useState)([]);return(0,c.useEffect)(()=>{e.r(async e=>{let{products:t,segments:r}=await e.getSearchSessionParams();n(r??[]),i(t?.personalizationBoost??[])})},[]),{segments:t,boost:r}}function h(){let{facets:e}=o.r(e=>({facets:e.response.products?.facets??[]})),{replaceFilter:t,toggleProductFilter:n}=r.t(),i=(0,c.useCallback)(t=>{let n=e?.find(e=>e.type===`stats`&&e.field===t);if(n&&`min`in n&&`max`in n)return n},[e]),a=(0,c.useCallback)(t=>e?.find(e=>e.field===t)?.name??t,[e]),s=(0,c.useCallback)(e=>`field`in e&&(e.value instanceof Array||e.range instanceof Array),[]),l=(0,c.useCallback)(e=>({...e,range:e.range?.map(e=>({gt:e.gt?Number(e.gt):e.gt,gte:e.gte?Number(e.gte):e.gte,lt:e.lt?Number(e.lt):e.lt,lte:e.lte?Number(e.lte):e.lte}))}),[]);return{selectFilters:s,toValueFilter:(0,c.useCallback)(e=>(e.value??[]).map(t=>({value:t,field:e.field,name:a(e.field),filter:l(e),remove:()=>{n(e.field,t,!1)}})),[l,a,n]),toRangeFilter:(0,c.useCallback)(e=>(e.range??[]).map(n=>{let r=n.gte??n.gt??i(e.field)?.min,o=n.lte??n.lt??i(e.field)?.max;if(r!==void 0&&o!==void 0)return{value:`${r} - ${o}`,field:e.field,name:a(e.field),filter:l(e),remove:()=>{t(e.field,void 0)}}}).filter(Boolean),[l,i,a,t])}}function g(){let{filter:e}=o.r(e=>({filter:e.query.products?.filter??[]})),{updateSearch:t}=r.t(),{selectFilters:n,toValueFilter:i,toRangeFilter:a}=h();return{filters:(0,c.useMemo)(()=>e?e.filter(n).flatMap(e=>`value`in e?i(e):`range`in e?a(e):[]).filter(Boolean):[],[e,n,a,i]),removeAll:(0,c.useCallback)(()=>{t({products:{filter:[]}}),s.t({event:`events/removeAllFilters`,params:null})},[t])}}function _(e){let{replaceFilter:t}=r.t(),{query:n,products:a}=o.r(e=>({query:e.query,products:e.response.products})),s=a?.facets?.find(t=>t.id===e),l=n.products?.filter?.find(e=>e.field===s?.field),[u,d]=y(l),f=s&&`min`in s?Math.floor(s.min??0):0,p=s&&`max`in s?Math.ceil(s.max??0):0,m=(0,c.useMemo)(()=>[u??f,d??p],[u,d,f,p]),[h,g]=(0,c.useState)(u!==void 0||d!==void 0),_=(0,c.useCallback)(()=>{g(e=>!e)},[]),x=(0,c.useCallback)(([e,n])=>{if(!s)return;let r=b(e,n,f,p);t(s.field,r)},[f,p,t,s]);return i.n({event:`events/removeAllFilters`,callback:()=>{g(!1)}}),s?{min:f,max:p,range:m,updateRange:x,active:h,toggleActive:_}:v}var v={min:0,max:0,range:[0,0],active:!1,toggleActive:()=>{},updateRange:()=>{}};function y(e){let t=e?.range?.[0];return typeof t==`object`&&(`gte`in t||`lte`in t)?[n.t(t.gte),n.t(t.lte)]:[void 0,void 0]}function b(e,t,n,r){let i=e===void 0?void 0:Math.floor(e),a=t===void 0?void 0:Math.ceil(t),o=i!==void 0,s=a!==void 0;if((n===i||!o)&&(r===a||!s))return;let c={};return o&&i!==n&&(c.gte=i.toString()),s&&a!==r&&(c.lte=a.toString()),Object.keys(c).length>0?c:void 0}function x(e,t){let{min:r,max:i,range:a,updateRange:o}=_(e),{filters:s}=g();return{min:r,max:i,range:a,updateRange:o,ranges:(0,c.useMemo)(()=>{let e=s.find(e=>e?.filter?.range),a=null;if(e){let t=e.filter.range?.[0];a=[n.t(t?.gte),n.t(t?.lte)]}let o=[],c=Math.floor(r/t)*t;for(;c<i;){let e=c+t,n=a&&a[0]===c&&a[1]===e;o.push({min:c,max:e,selected:n}),c=e}return o},[s,r,i,t]),handleMinChange:(0,c.useCallback)(e=>{o([e,a[1]])},[a,o]),handleMaxChange:(0,c.useCallback)(e=>{o([a[0],e])},[a,o]),isSelected:r!==a[0]||i!==a[1]}}function S(){let{products:e,keywords:t,popularSearches:n,categories:r}=o.r(e=>({products:e.response.products??C,keywords:e.response.keywords??C,popularSearches:e.response.popularSearches??C,categories:e.response.categories??C}));return{products:e,keywords:t,popularSearches:n,categories:r}}var C={hits:[],total:0};function w(){let e=o.r(e=>e.query.products?.filter);return(0,c.useMemo)(()=>e?e.reduce((e,t)=>e+(Array.isArray(t.value)?t.value.length:1),0):0,[e])}var T=300*1e3,E=new Map;function D(e){let[t,n]=(0,c.useState)({product:null,loading:!0,error:null});return(0,c.useEffect)(()=>{if(!e){n({product:null,loading:!1,error:`Product handle is required`});return}n(e=>({...e,loading:!0,error:null}));let t=A(e);if(t){n({product:t,loading:!1,error:null});return}k(e).then(t=>{j(e,t),n({product:t,loading:!1,error:null})}).catch(e=>{n({product:null,loading:!1,error:e.message||`Failed to fetch product`})})},[e]),t}function O(e){let t=window.Shopify?.routes?.root;return t?new URL(`${t}products/${e}`,window.location.href):e}async function k(e){let t=await fetch(O(`/products/${e}.js`));if(!t.ok)throw Error(`Failed to fetch product: ${t.status} ${t.statusText}`);return t.json()}function A(e){let t=E.get(e);return t?Date.now()-t.created>T?(E.delete(e),null):t.product:null}function j(e,t){E.set(e,{product:t,created:Date.now()})}function M(e){return e&&!Number.isNaN(e)?e:0}function N(e,t){let{from:i,size:a,total:s}=o.r(e=>({from:M(e.query.products?.from??0),size:M(e.response?.products?.size??t),total:M(e.response?.products?.total??0)})),{updateSearch:l}=r.t();return{from:i,to:i+a,total:s,size:a,sizeOptions:(0,c.useMemo)(()=>[...e].reverse().filter(e=>e<s),[e,s]),handleSizeChange:(0,c.useCallback)(e=>{l({products:{size:n.t(e)}})},[l])}}function P(e,t){return e.length===t.length?e.every(e=>t.find(t=>e.field===t.field&&e.order===t.order)):!1}function F(e){let t=o.r(e=>e.query),{updateSearch:n}=r.t(),i=e.find(e=>P(e.value.sort,t.products?.sort||[]))?.id??e[0]?.id;return{activeSort:i,setSort:(0,c.useCallback)(t=>{if(t===i)return;let r=e.find(e=>e.id===t);r&&n({products:{sort:r.value.sort}})},[e,n,i])}}var I=window.SpeechRecognition||window.webkitSpeechRecognition,L=!!(I&&typeof I==`function`);function R(){return{listening:!1,startListening:()=>{},stopListening:()=>{}}}function z({language:e=`en-US`,interimResults:t=!1,onResult:n,onError:r}={}){let[i,a]=(0,c.useState)(!1),o=(0,c.useRef)(null);return{listening:i,startListening:(0,c.useCallback)(()=>{let i=new I;i.lang=e,i.interimResults=t,i.onstart=()=>a(!0),n&&(i.onresult=e=>{let{transcript:t}=e.results?.[0]?.[0];n(t)}),r&&(i.onerror=e=>r(e.error)),i.onend=()=>a(!1),o.current=i,i.start()},[e,t,r,n]),stopListening:(0,c.useCallback)(()=>{o.current?.stop()},[o])}}var B=L?z:R;function V(e,t){if(!e.length||!t.length)return[];let n=t.reduce((e,t)=>(e[t]={},e),{});return e.forEach(e=>{e.customFields?.forEach(({key:r,value:i})=>{let a=r.toLowerCase();t.includes(a)&&(n[a][i]=n[a][i]||[],n[a][i].push(e))})}),Object.entries(n).filter(e=>Object.keys(e[1]).length).map(([e,t])=>({field:e,options:Object.entries(t).map(([e,t])=>({value:e,skus:t,unavailable:!1,selected:!1}))}))}function H(e,t){return e.length?e.map(({field:e,options:n})=>({field:e,options:n.map(n=>{let r=!n.skus?.some(n=>Object.entries(t).every(([t,r])=>t===e?!0:n.customFields?.find(e=>e.key.toLowerCase()===t)?.value===r)),i=t[e]===n.value;return{...n,unavailable:r,selected:i}})})):[]}var U=[`4XS`,`3XS`,`2XS`,`XXS`,`XS`,`S`,`M`,`L`,`XL`,`XXL`,`2XL`,`XXXL`,`3XL`,`4XL`];function W(e){if(U.includes(e))return 1e3+U.indexOf(e);let t=parseFloat(e);return isNaN(t)?e:t}function G(e,t){return[...t].sort((e,t)=>{let[n,r]=[e.value,t.value].map(W);return n<r?-1:1})}function K(e=[],t=[]){let[n,r]=(0,c.useState)({}),i=(0,c.useMemo)(()=>V(e,t).map(({field:e,options:t})=>({field:e,options:G(e,t)})),[e,t]),a=(0,c.useMemo)(()=>H(i,n),[i,n]);return{swatches:a,toggleOption:(0,c.useCallback)((e,t)=>{r(n=>{let r={...n};return r[e]===t?delete r[e]:r[e]=t,r})},[]),matchedSkus:(0,c.useMemo)(()=>Object.keys(n).filter(e=>n[e]).length===0?[]:a.filter(({field:e})=>n[e]).map(({field:e,options:t})=>{let r=n[e];return t.find(e=>e.value===r)?.skus??[]}).reduce((e,t)=>e.filter(e=>t.includes(e))),[a,n])}}exports.addToHistory=a.t,exports.getSavedHistory=a.n,exports.speechToTextSupported=L,exports.useActions=r.t,exports.useDecoratedSearchResults=l,exports.useFacet=u,exports.useFacets=d,exports.useHistory=a.r,exports.useLoadMore=o.t,exports.useNostoAppState=o.r,exports.usePagination=p,exports.usePersonalization=m,exports.useProductFilters=g,exports.useRange=_,exports.useRangeSelector=x,exports.useResponse=S,exports.useSelectedFiltersCount=w,exports.useShopifyProduct=D,exports.useSizeOptions=N,exports.useSort=F,exports.useSpeechToText=B,exports.useSwatches=K;
@@ -1,5 +1,4 @@
1
1
  import { r as e } from "../../index.es-jSYcbRvi.js";
2
- import "../../search-C2WGFf4C.js";
3
2
  import { l as t } from "../../storage-DeAo7M3s.js";
4
3
  import { t as n } from "../../parseNumber-DFsrGj64.js";
5
4
  import { t as r } from "../../useActions-BmWNZAES.js";
@@ -1 +1 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`}),require(`../../index.es-Ba4tuzxb.cjs`),require(`../../search-BeFE0Ezr.cjs`);const e=require(`../../storage-B3FIcJQv.cjs`),t=require(`../../disableNativeAutocomplete-CjBGhRWW.cjs`),n=require(`../../unique-BXFI_-3F.cjs`),r=require(`../../useActions-boQy-Vp0.cjs`);require(`../../eventBusSubscribe-c9a_PP0j.cjs`),require(`../../baseConfig-jLd7jchq.cjs`),require(`../../useHistory-GRnuHgQ5.cjs`);const i=require(`../../AutocompletePageProvider-DzjwKsBp.cjs`),a=require(`../../jsxRuntime.module-Ba9fccPy.cjs`),o=require(`../../CategoryPageProvider-B6w4FHhB.cjs`),s=require(`../../ErrorBoundary-BtAe8lXu.cjs`),c=require(`../../SerpPageProvider-BgRZJNth.cjs`);let l=require(`preact`);function u(e){let t;return n=>{t&&clearTimeout(t),t=setTimeout(n,e)}}function d(e){return Array.from(document.querySelectorAll(e))}function f(e){let t=[],n=e.parentNode;for(;n&&n!==document&&n instanceof Element;)t.push(n),n=n.parentNode;return t}function p([e,t],n){let r=r=>{let i=r.target;i instanceof HTMLElement&&e&&i!==e&&i!==t&&!f(i).includes(e)&&n()};return document.addEventListener(`click`,r),{destroy:()=>{document.removeEventListener(`click`,r)}}}function m(e,t){e.tabIndex=0,e.addEventListener(`blur`,t)}function h(e){return typeof e==`string`?{selector:e,position:`last`}:{position:`last`,...e}}function g({selector:t,timeout:n=500}){return new Promise(r=>{let i=d(t);if(i.length>0)return r(i);let a=new MutationObserver(()=>{let e=d(t);e.length>0&&(a.disconnect(),clearTimeout(o),r(e))}),o=setTimeout(()=>{a.disconnect(),e.s.warn(`Timed out (${n}) while waiting for element ${t}`),r([])},n);a.observe(document.body,{childList:!0,subtree:!0})})}function _(e,t,n){t.style.display=`none`;let r=(()=>{if(e.parentElement&&e.parentElement.classList.contains(`nosto-autocomplete-wrapper`))return e.parentElement;let t=document.createElement(`div`);return t.className=`nosto-autocomplete-wrapper`,e.parentNode?.insertBefore(t,e.nextSibling),t.appendChild(e),t})(),i=h(n),a=i&&document.querySelector(i.selector);if(a){let e=document.createElement(`form`);e.className=`nosto-dropdown-form`,e.appendChild(t),i.position===`first`?a.prepend(e):a.appendChild(e)}else r.appendChild(t);let o={index:-1,onChangeListeners:[]},s=(e,t)=>{let n=e.length;n===0&&(t=-1),o.index=t>=0?t%n:n-1,o.onChangeListeners.forEach(e=>e())},c=()=>{o.index=-1,o.onChangeListeners.forEach(e=>e())},l=()=>o.index;return{element:t,hide:()=>{t.style.display=`none`,c()},show:()=>{t.style.display=`inherit`},isOpen:()=>t.style.display!==`none`,goDown:()=>{s(Array.from(t.getElementsByClassName(`ns-autocomplete-element`)),l()+1)},goUp:()=>{s(Array.from(t.getElementsByClassName(`ns-autocomplete-element`)),l()-1)},highlight:s,highlightedIndex:l,submitHighlightedItem:e=>{Array.from(t.querySelectorAll(`.ns-autocomplete-element`))[e]?.click()},onHighlightChange:e=>{o.onChangeListeners.push(e)}}}function v(e,t){let n=document.createElement(`div`);return n.className=`nosto-autocomplete-dropdown`,{..._(e,n,t),element:n}}var y=`nosto:search-js:history`;function b(t,n,r){let i=document.createElement(`div`);return i.className=`nosto-autocomplete-history`,{..._(t,i,n),element:i,add:t=>{let n=(e.t(y)??[]).filter(e=>e!==t).slice(r?-r:0);n.push(t),e.a(y,n)},get:()=>(e.t(y)??[]).reverse().filter(e=>!!e)}}async function x(e,{config:t,dropdown:n,history:i,renderHistory:a,store:o}){let{historyEnabled:s,minQueryLength:c}=t;if(e.length<c&&s&&a&&!i.isOpen()){i.show();return}if(e.length<c)return;n.hide();let l=o.getState()?.query?.query;l&&l!==e&&await r.r({config:t,store:o},{query:e}),n.show()}async function S(e,t){let{config:r,renderHistory:i,history:a}=t,{historyEnabled:o,minQueryLength:s}=r;if(!i||e.length>=s||!o||a.isOpen())return;let c=j(t);a.onHighlightChange(()=>{c(i,a.element)}),a.show();let l=n.n(`renderHistory`);c(i,a.element),l()}async function C(e,{config:t,dropdown:n,history:i,store:a,debouncer:o}){let{minQueryLength:s,historyEnabled:c}=t;if(e.length<s&&!c){n.hide(),i.hide();return}if(e.length<s&&c){n.hide(),i.show();return}i.hide(),o(async()=>{r.r({config:t,store:a},{query:e}),n.show()})}function w(e,t,n){let{config:r,debouncer:i}=n;if(i(()=>{}),e.length>=r.minQueryLength)return T(t,n.dropdown,n.history);if(r.historyEnabled)return T(t,n.history,n.dropdown)}function T(e,t,n){if(!t.isOpen()&&e===`ArrowDown`){t.show(),n.hide();return}if(e===`Escape`&&t.hide(),t.isOpen()){if(e===`ArrowDown`)t.goDown();else if(e===`ArrowUp`)t.goUp();else if(e===`Enter`){let e=t.highlightedIndex();return e>=0&&t.submitHighlightedItem(e),t.hide(),e>=0}}}function E(e,{config:t,dropdown:n,history:r,onNavigateToSearch:i,store:a}){n.hide(),r.hide(),!(e.length<t.minQueryLength)&&(r.add(e),a.updateState({historyItems:r.get()}),i?.({query:e}))}async function D(e,t){let{inputCssSelector:n,timeout:r}=e,i=h(n).selector,a=await g({selector:i,timeout:r});if(a.length===0)throw Error(`No elements found for selector: ${i}`);a.forEach(n=>{O(n,e,t)})}async function O(e,n,r){let{config:i,dropdownCssSelector:a}=n,o=v(e,a),s=b(e,a,i.historySize),c={...n,input:e,dropdown:o,history:s,store:r,debouncer:u(i.debounceDelay)};A(c),e.setAttribute(`data-nosto-element`,`search-input`),r.updateState({historyItems:s.get()}),t.t(e),r.onInit(()=>{k(c)}),t.n(e,{onInput:e=>C(e,c),onFocus:e=>S(e,c),onClick:e=>x(e,c),onSubmit:e=>E(e,c),onKeyDown:(e,t)=>w(e,t,c)}),m(s.element,s.hide),m(o.element,o.hide),p([s.element,e],s.hide),p([o.element,e],o.hide)}function k(e){let{dropdown:t,renderAutocomplete:r}=e;if(!r)return;let i=j(e);t.onHighlightChange(()=>{i(r,t.element)});let a=n.n(`renderAutocomplete`);i(r,t.element),a()}async function A(e){let{input:t,renderSpeechToText:n,config:r,store:o}=e;if(!n)return;let c=`ns-autocomplete-voice-position`;if(t.parentElement?.querySelector(`.${c}`))return;let u=document.createElement(`div`);u.className=c,t.insertAdjacentElement(`afterend`,u),(0,l.render)(a.t(s.t,{children:a.t(i.t,{config:r,store:o,children:await n()})}),u)}function j(e){let{config:t,store:n}=e;return(e,r)=>(0,l.render)(a.t(s.t,{children:a.t(i.t,{config:t,store:n,children:e()})}),r)}async function M({cssSelector:t,timeout:n,renderComponent:r}){let i=h(t).selector,a=await g({selector:i,timeout:n??100});if(a.length===0)throw Error(`No elements found for selector: ${i}`);a.length>1&&e.s.warn(`Multiple (${a.length}) elements found for selector: ${i}`),(0,l.render)(r(),a[0])}async function N(e,t){let{render:n}=e,r=await n(),i=()=>a.t(s.t,{children:a.t(o.t,{store:t,config:e.config,children:r})});M({...e,renderComponent:i})}async function P(e,t){let{render:n}=e,r=await n(),i=()=>a.t(s.t,{children:a.t(c.t,{store:t,config:e.config,children:r})});M({...e,renderComponent:i})}async function F({autocomplete:e,category:t,serp:n}){let a={};if(e){let t=r.a({query:e.query});await D({...e,config:i.n(e.config)},t),a.autocomplete={store:t}}if(t){let e=r.a({query:t.query});await N({...t,config:o.n(t.config)},e),a.category={store:e}}if(n){let e=r.a({query:n.query});await P({...n,config:c.n(n.config)},e),a.serp={store:e}}return a}exports.init=F;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`../../storage-B3FIcJQv.cjs`),t=require(`../../disableNativeAutocomplete-CjBGhRWW.cjs`),n=require(`../../unique-BXFI_-3F.cjs`),r=require(`../../useActions-boQy-Vp0.cjs`),i=require(`../../AutocompletePageProvider-DzjwKsBp.cjs`),a=require(`../../jsxRuntime.module-Ba9fccPy.cjs`),o=require(`../../CategoryPageProvider-B6w4FHhB.cjs`),s=require(`../../ErrorBoundary-BtAe8lXu.cjs`),c=require(`../../SerpPageProvider-BgRZJNth.cjs`);let l=require(`preact`);function u(e){let t;return n=>{t&&clearTimeout(t),t=setTimeout(n,e)}}function d(e){return Array.from(document.querySelectorAll(e))}function f(e){let t=[],n=e.parentNode;for(;n&&n!==document&&n instanceof Element;)t.push(n),n=n.parentNode;return t}function p([e,t],n){let r=r=>{let i=r.target;i instanceof HTMLElement&&e&&i!==e&&i!==t&&!f(i).includes(e)&&n()};return document.addEventListener(`click`,r),{destroy:()=>{document.removeEventListener(`click`,r)}}}function m(e,t){e.tabIndex=0,e.addEventListener(`blur`,t)}function h(e){return typeof e==`string`?{selector:e,position:`last`}:{position:`last`,...e}}function g({selector:t,timeout:n=500}){return new Promise(r=>{let i=d(t);if(i.length>0)return r(i);let a=new MutationObserver(()=>{let e=d(t);e.length>0&&(a.disconnect(),clearTimeout(o),r(e))}),o=setTimeout(()=>{a.disconnect(),e.s.warn(`Timed out (${n}) while waiting for element ${t}`),r([])},n);a.observe(document.body,{childList:!0,subtree:!0})})}function _(e,t,n){t.style.display=`none`;let r=(()=>{if(e.parentElement&&e.parentElement.classList.contains(`nosto-autocomplete-wrapper`))return e.parentElement;let t=document.createElement(`div`);return t.className=`nosto-autocomplete-wrapper`,e.parentNode?.insertBefore(t,e.nextSibling),t.appendChild(e),t})(),i=h(n),a=i&&document.querySelector(i.selector);if(a){let e=document.createElement(`form`);e.className=`nosto-dropdown-form`,e.appendChild(t),i.position===`first`?a.prepend(e):a.appendChild(e)}else r.appendChild(t);let o={index:-1,onChangeListeners:[]},s=(e,t)=>{let n=e.length;n===0&&(t=-1),o.index=t>=0?t%n:n-1,o.onChangeListeners.forEach(e=>e())},c=()=>{o.index=-1,o.onChangeListeners.forEach(e=>e())},l=()=>o.index;return{element:t,hide:()=>{t.style.display=`none`,c()},show:()=>{t.style.display=`inherit`},isOpen:()=>t.style.display!==`none`,goDown:()=>{s(Array.from(t.getElementsByClassName(`ns-autocomplete-element`)),l()+1)},goUp:()=>{s(Array.from(t.getElementsByClassName(`ns-autocomplete-element`)),l()-1)},highlight:s,highlightedIndex:l,submitHighlightedItem:e=>{Array.from(t.querySelectorAll(`.ns-autocomplete-element`))[e]?.click()},onHighlightChange:e=>{o.onChangeListeners.push(e)}}}function v(e,t){let n=document.createElement(`div`);return n.className=`nosto-autocomplete-dropdown`,{..._(e,n,t),element:n}}var y=`nosto:search-js:history`;function b(t,n,r){let i=document.createElement(`div`);return i.className=`nosto-autocomplete-history`,{..._(t,i,n),element:i,add:t=>{let n=(e.t(y)??[]).filter(e=>e!==t).slice(r?-r:0);n.push(t),e.a(y,n)},get:()=>(e.t(y)??[]).reverse().filter(e=>!!e)}}async function x(e,{config:t,dropdown:n,history:i,renderHistory:a,store:o}){let{historyEnabled:s,minQueryLength:c}=t;if(e.length<c&&s&&a&&!i.isOpen()){i.show();return}if(e.length<c)return;n.hide();let l=o.getState()?.query?.query;l&&l!==e&&await r.r({config:t,store:o},{query:e}),n.show()}async function S(e,t){let{config:r,renderHistory:i,history:a}=t,{historyEnabled:o,minQueryLength:s}=r;if(!i||e.length>=s||!o||a.isOpen())return;let c=j(t);a.onHighlightChange(()=>{c(i,a.element)}),a.show();let l=n.n(`renderHistory`);c(i,a.element),l()}async function C(e,{config:t,dropdown:n,history:i,store:a,debouncer:o}){let{minQueryLength:s,historyEnabled:c}=t;if(e.length<s&&!c){n.hide(),i.hide();return}if(e.length<s&&c){n.hide(),i.show();return}i.hide(),o(async()=>{r.r({config:t,store:a},{query:e}),n.show()})}function w(e,t,n){let{config:r,debouncer:i}=n;if(i(()=>{}),e.length>=r.minQueryLength)return T(t,n.dropdown,n.history);if(r.historyEnabled)return T(t,n.history,n.dropdown)}function T(e,t,n){if(!t.isOpen()&&e===`ArrowDown`){t.show(),n.hide();return}if(e===`Escape`&&t.hide(),t.isOpen()){if(e===`ArrowDown`)t.goDown();else if(e===`ArrowUp`)t.goUp();else if(e===`Enter`){let e=t.highlightedIndex();return e>=0&&t.submitHighlightedItem(e),t.hide(),e>=0}}}function E(e,{config:t,dropdown:n,history:r,onNavigateToSearch:i,store:a}){n.hide(),r.hide(),!(e.length<t.minQueryLength)&&(r.add(e),a.updateState({historyItems:r.get()}),i?.({query:e}))}async function D(e,t){let{inputCssSelector:n,timeout:r}=e,i=h(n).selector,a=await g({selector:i,timeout:r});if(a.length===0)throw Error(`No elements found for selector: ${i}`);a.forEach(n=>{O(n,e,t)})}async function O(e,n,r){let{config:i,dropdownCssSelector:a}=n,o=v(e,a),s=b(e,a,i.historySize),c={...n,input:e,dropdown:o,history:s,store:r,debouncer:u(i.debounceDelay)};A(c),e.setAttribute(`data-nosto-element`,`search-input`),r.updateState({historyItems:s.get()}),t.t(e),r.onInit(()=>{k(c)}),t.n(e,{onInput:e=>C(e,c),onFocus:e=>S(e,c),onClick:e=>x(e,c),onSubmit:e=>E(e,c),onKeyDown:(e,t)=>w(e,t,c)}),m(s.element,s.hide),m(o.element,o.hide),p([s.element,e],s.hide),p([o.element,e],o.hide)}function k(e){let{dropdown:t,renderAutocomplete:r}=e;if(!r)return;let i=j(e);t.onHighlightChange(()=>{i(r,t.element)});let a=n.n(`renderAutocomplete`);i(r,t.element),a()}async function A(e){let{input:t,renderSpeechToText:n,config:r,store:o}=e;if(!n)return;let c=`ns-autocomplete-voice-position`;if(t.parentElement?.querySelector(`.${c}`))return;let u=document.createElement(`div`);u.className=c,t.insertAdjacentElement(`afterend`,u),(0,l.render)(a.t(s.t,{children:a.t(i.t,{config:r,store:o,children:await n()})}),u)}function j(e){let{config:t,store:n}=e;return(e,r)=>(0,l.render)(a.t(s.t,{children:a.t(i.t,{config:t,store:n,children:e()})}),r)}async function M({cssSelector:t,timeout:n,renderComponent:r}){let i=h(t).selector,a=await g({selector:i,timeout:n??100});if(a.length===0)throw Error(`No elements found for selector: ${i}`);a.length>1&&e.s.warn(`Multiple (${a.length}) elements found for selector: ${i}`),(0,l.render)(r(),a[0])}async function N(e,t){let{render:n}=e,r=await n(),i=()=>a.t(s.t,{children:a.t(o.t,{store:t,config:e.config,children:r})});M({...e,renderComponent:i})}async function P(e,t){let{render:n}=e,r=await n(),i=()=>a.t(s.t,{children:a.t(c.t,{store:t,config:e.config,children:r})});M({...e,renderComponent:i})}async function F({autocomplete:e,category:t,serp:n}){let a={};if(e){let t=r.a({query:e.query});await D({...e,config:i.n(e.config)},t),a.autocomplete={store:t}}if(t){let e=r.a({query:t.query});await N({...t,config:o.n(t.config)},e),a.category={store:e}}if(n){let e=r.a({query:n.query});await P({...n,config:c.n(n.config)},e),a.serp={store:e}}return a}exports.init=F;
@@ -1,12 +1,7 @@
1
- import "../../index.es-jSYcbRvi.js";
2
- import "../../search-C2WGFf4C.js";
3
1
  import { a as e, s as t, t as n } from "../../storage-DeAo7M3s.js";
4
2
  import { n as r, t as i } from "../../disableNativeAutocomplete-CcR_Ek_P.js";
5
3
  import { n as a } from "../../unique-DSDxyj90.js";
6
4
  import { a as o, r as s } from "../../useActions-BmWNZAES.js";
7
- import "../../eventBusSubscribe-C6qT1aOO.js";
8
- import "../../baseConfig-Che6Adb6.js";
9
- import "../../useHistory-BMkSr69f.js";
10
5
  import { n as c, t as l } from "../../AutocompletePageProvider-D48n1GB-.js";
11
6
  import { n as u } from "../../jsxRuntime.module-BRdvPAre.js";
12
7
  import { n as d, t as f } from "../../CategoryPageProvider-BYw7KGoS.js";
@@ -1 +1 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`}),require(`../../index.es-Ba4tuzxb.cjs`),require(`../../search-BeFE0Ezr.cjs`),require(`../../storage-B3FIcJQv.cjs`);const e=require(`../../useActions-boQy-Vp0.cjs`);require(`../../jsxRuntime.module-Ba9fccPy.cjs`);const t=require(`../../useLoadMore-B9LiuhfV.cjs`),n=require(`../../InfiniteScrollWithObserver-k7oYk4f9.cjs`);exports.InfiniteScrollWithObserver=n.t,exports.getNextPageQuery=t.n,exports.intersectionObserverSupported=n.r,exports.newSearch=e.r,exports.updateSearch=e.n;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`../../useActions-boQy-Vp0.cjs`),t=require(`../../useLoadMore-B9LiuhfV.cjs`),n=require(`../../InfiniteScrollWithObserver-k7oYk4f9.cjs`);exports.InfiniteScrollWithObserver=n.t,exports.getNextPageQuery=t.n,exports.intersectionObserverSupported=n.r,exports.newSearch=e.r,exports.updateSearch=e.n;
@@ -1,8 +1,4 @@
1
- import "../../index.es-jSYcbRvi.js";
2
- import "../../search-C2WGFf4C.js";
3
- import "../../storage-DeAo7M3s.js";
4
1
  import { n as e, r as t } from "../../useActions-BmWNZAES.js";
5
- import "../../jsxRuntime.module-BRdvPAre.js";
6
2
  import { n } from "../../useLoadMore-BkJV7F21.js";
7
3
  import { r, t as i } from "../../InfiniteScrollWithObserver-8imjYGGz.js";
8
4
  export { i as InfiniteScrollWithObserver, n as getNextPageQuery, r as intersectionObserverSupported, t as newSearch, e as updateSearch };
@@ -1 +1 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`../../index.es-Ba4tuzxb.cjs`);require(`../../search-BeFE0Ezr.cjs`),require(`../../storage-B3FIcJQv.cjs`);const t=require(`../../useActions-boQy-Vp0.cjs`);require(`../../eventBusSubscribe-c9a_PP0j.cjs`),require(`../../baseConfig-jLd7jchq.cjs`);const n=require(`../../jsxRuntime.module-Ba9fccPy.cjs`),r=require(`../../BaseElement-BnP6tQrH.cjs`),i=require(`../../SerpPageProvider-BgRZJNth.cjs`);let a=require(`preact/hooks`);var o=`nosto:search-js:scrollPos`;function s(){window.sessionStorage.setItem(o,window.scrollY.toString())}function c({children:i,hit:o,componentProps:c,as:l}){let{pageType:u}=t.d(),d=u===`autocomplete`?void 0:u===`search`?`serp`:u;return n.t(r.t,{as:l,onClick:(0,a.useCallback)(()=>{o&&d&&e.r(e=>e.recordSearchClick(d,o)),s()},[o,d]),componentProps:c,children:i})}exports.SearchPageProvider=i.t,exports.SerpElement=c;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`../../index.es-Ba4tuzxb.cjs`);require(`../../storage-B3FIcJQv.cjs`);const t=require(`../../useActions-boQy-Vp0.cjs`),n=require(`../../jsxRuntime.module-Ba9fccPy.cjs`),r=require(`../../BaseElement-BnP6tQrH.cjs`),i=require(`../../SerpPageProvider-BgRZJNth.cjs`);let a=require(`preact/hooks`);var o=`nosto:search-js:scrollPos`;function s(){window.sessionStorage.setItem(o,window.scrollY.toString())}function c({children:i,hit:o,componentProps:c,as:l}){let{pageType:u}=t.d(),d=u===`autocomplete`?void 0:u===`search`?`serp`:u;return n.t(r.t,{as:l,onClick:(0,a.useCallback)(()=>{o&&d&&e.r(e=>e.recordSearchClick(d,o)),s()},[o,d]),componentProps:c,children:i})}exports.SearchPageProvider=i.t,exports.SerpElement=c;
@@ -1,9 +1,6 @@
1
1
  import { r as e } from "../../index.es-jSYcbRvi.js";
2
- import "../../search-C2WGFf4C.js";
3
2
  import "../../storage-DeAo7M3s.js";
4
3
  import { d as t } from "../../useActions-BmWNZAES.js";
5
- import "../../eventBusSubscribe-C6qT1aOO.js";
6
- import "../../baseConfig-Che6Adb6.js";
7
4
  import { n } from "../../jsxRuntime.module-BRdvPAre.js";
8
5
  import { t as r } from "../../BaseElement-C25wjvSR.js";
9
6
  import { t as i } from "../../SerpPageProvider-fg14kNV9.js";
@@ -1 +1 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`}),require(`../index.es-Ba4tuzxb.cjs`);const e=require(`../storage-B3FIcJQv.cjs`),t=require(`../disableNativeAutocomplete-CjBGhRWW.cjs`),n=require(`../cl-CYT5y6Dn.cjs`),r=require(`../unique-BXFI_-3F.cjs`),i=require(`../isBot-CkyQfegP.cjs`),a=require(`../parseNumber-BH_92pM8.cjs`),o=require(`../pick-0KNFTqKn.cjs`);exports.bindInput=t.n,exports.cl=n.t,exports.deepMerge=r.i,exports.disableNativeAutocomplete=t.t,exports.getLocalStorageItem=e.t,exports.getSessionStorageItem=e.n,exports.isBot=i.t,exports.isEqual=e.c,exports.isPlainObject=e.l,exports.logger=e.s,exports.measure=r.n,exports.mergeArrays=r.r,exports.parseNumber=a.t,exports.pick=o.t,exports.removeLocalStorageItem=e.r,exports.removeSessionStorageItem=e.i,exports.setLocalStorageItem=e.a,exports.setSessionStorageItem=e.o,exports.unique=r.t;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`../storage-B3FIcJQv.cjs`),t=require(`../disableNativeAutocomplete-CjBGhRWW.cjs`),n=require(`../cl-CYT5y6Dn.cjs`),r=require(`../unique-BXFI_-3F.cjs`),i=require(`../isBot-CkyQfegP.cjs`),a=require(`../parseNumber-BH_92pM8.cjs`),o=require(`../pick-0KNFTqKn.cjs`);exports.bindInput=t.n,exports.cl=n.t,exports.deepMerge=r.i,exports.disableNativeAutocomplete=t.t,exports.getLocalStorageItem=e.t,exports.getSessionStorageItem=e.n,exports.isBot=i.t,exports.isEqual=e.c,exports.isPlainObject=e.l,exports.logger=e.s,exports.measure=r.n,exports.mergeArrays=r.r,exports.parseNumber=a.t,exports.pick=o.t,exports.removeLocalStorageItem=e.r,exports.removeSessionStorageItem=e.i,exports.setLocalStorageItem=e.a,exports.setSessionStorageItem=e.o,exports.unique=r.t;
@@ -1,4 +1,3 @@
1
- import "../index.es-jSYcbRvi.js";
2
1
  import { a as e, c as t, i as n, l as r, n as i, o as a, r as o, s, t as c } from "../storage-DeAo7M3s.js";
3
2
  import { n as l, t as u } from "../disableNativeAutocomplete-CcR_Ek_P.js";
4
3
  import { t as d } from "../cl-G5KK1qHD.js";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nosto/search-js",
3
- "version": "3.25.6",
3
+ "version": "3.25.7",
4
4
  "license": "ISC",
5
5
  "type": "module",
6
6
  "files": [
@@ -97,14 +97,14 @@
97
97
  "prepare": "husky"
98
98
  },
99
99
  "devDependencies": {
100
- "@commitlint/cli": "^20.4.3",
101
- "@commitlint/config-conventional": "^20.4.3",
102
- "@nosto/nosto-js": "^2.11.1",
100
+ "@commitlint/cli": "^20.5.0",
101
+ "@commitlint/config-conventional": "^20.5.0",
102
+ "@nosto/nosto-js": "^2.11.2",
103
103
  "@testing-library/dom": "^10.4.1",
104
- "@types/dom-speech-recognition": "^0.0.7",
104
+ "@types/dom-speech-recognition": "^0.0.8",
105
105
  "@types/eslint-config-prettier": "^6.11.3",
106
- "@types/node": "^25.4.0",
107
- "@vitest/coverage-v8": "^4.1.0",
106
+ "@types/node": "^25.5.0",
107
+ "@vitest/coverage-v8": "^4.1.1",
108
108
  "concurrently": "^9.2.1",
109
109
  "copyfiles": "^2.4.1",
110
110
  "eslint": "^9.39.2",
@@ -117,12 +117,12 @@
117
117
  "eslint-plugin-unused-imports": "^4.4.1",
118
118
  "husky": "^9.1.7",
119
119
  "isbot": "^5.1.36",
120
- "jsdom": "^29.0.0",
120
+ "jsdom": "^29.0.1",
121
121
  "prettier": "^3.8.1",
122
- "typedoc": "^0.28.17",
122
+ "typedoc": "^0.28.18",
123
123
  "typescript": "^5.9.3",
124
- "typescript-eslint": "^8.57.0",
125
- "vite": "^8.0.1",
124
+ "typescript-eslint": "^8.57.2",
125
+ "vite": "^8.0.2",
126
126
  "vite-plugin-dts": "^4.5.4",
127
127
  "vitest": "^4.1.0"
128
128
  },