@nosto/search-js 3.26.0 → 3.26.1

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(`../../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-BxssVkE9.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-BxssVkE9.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)(()=>{if(e.length===0)return[];let t=[...e].sort((e,t)=>e-t),n=t.find(e=>e>=s)??t[t.length-1];return t.filter(e=>e<=n).reverse()},[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;
@@ -376,7 +376,11 @@ function B(e, t) {
376
376
  to: i + a,
377
377
  total: o,
378
378
  size: a,
379
- sizeOptions: p(() => [...e].reverse().filter((e) => e < o), [e, o]),
379
+ sizeOptions: p(() => {
380
+ if (e.length === 0) return [];
381
+ let t = [...e].sort((e, t) => e - t), n = t.find((e) => e >= o) ?? t[t.length - 1];
382
+ return t.filter((e) => e <= n).reverse();
383
+ }, [e, o]),
380
384
  handleSizeChange: d((e) => {
381
385
  s({ products: { size: n(e) } });
382
386
  }, [s])
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nosto/search-js",
3
- "version": "3.26.0",
3
+ "version": "3.26.1",
4
4
  "license": "ISC",
5
5
  "type": "module",
6
6
  "files": [