@nosto/search-js 3.4.0 → 3.4.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
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const b=require("../../useActions-CDUotElR.cjs"),x=require("../../logger-Boh_C6Bz.cjs"),h=require("../../useLoadMore-D0TMnfNk.cjs"),d=require("preact/hooks"),L=require("../../index.es-Dp6Iaxz3.cjs"),y=require("../../parseNumber-FsZ8w61u.cjs");function z(t){const n=h.useNostoAppState(e=>e.response);return t&&Array.isArray(t)||t&&x.isPlainObject(t)?t:n}function P(t,n){const e=t.data?.filter(f=>f.selected).length??0,{active:o}={active:e>0,...n},[r,c]=d.useState(o),{toggleProductFilter:u}=b.useActions(),l=d.useCallback(()=>{c(!r)},[r]);return{active:r,selectedFiltersCount:e,toggleActive:l,toggleProductFilter:u}}function T(){const{loading:t,facets:n}=h.useNostoAppState(e=>({loading:e.loading,facets:e.response?.products?.facets??[]}));return{loading:t,facets:n}}function q(t,n){const e=n-t;return!isNaN(e)&&e>0?new Array(n-t).fill(void 0).map((o,r)=>r+t):[]}function X(t){const{query:n,products:e}=h.useNostoAppState(o=>({query:o.query,products:o.response.products}));return d.useMemo(()=>{if(!e)return{totalPages:0,resultsFrom:0,resultsTo:0,pages:[]};const o=n.products?.from??0,r=t?.width??1/0,c=Math.max(Math.floor(r-1)/2,1),u=e.size>0?Math.floor(o/e.size)+1:1,l=e.size>0?Math.ceil(e.total/e.size):0,f=A=>A>=u-c&&A<=u+c,s=o+1,i=Math.min(o+e.total,e.total),a={from:o,page:u,current:!0},p=A=>({from:(A-1)*e.size,page:A,current:A===u}),S=u>1?p(u-1):void 0,m=u<l?p(u+1):void 0,g=u-c-1>1?p(1):void 0,v=u+c+1<l?p(l):void 0,F=q(1,l+1).filter(f).map(p);return!g&&F[0]?.page===2&&F.unshift(p(1)),!v&&F[F.length-1]?.page===l-1&&F.push(p(l)),{totalPages:l,resultsFrom:s,resultsTo:i,current:a,prev:S,next:m,first:g,last:v,pages:F}},[n,e,t?.width])}function O(){const[t,n]=d.useState([]),[e,o]=d.useState([]);return d.useEffect(()=>{L.s(async r=>{const{products:c,segments:u}=await r.getSearchSessionParams();n(u??[]),o(c?.personalizationBoost??[])})},[]),{segments:t,boost:e}}function j(){const{facets:t}=h.useNostoAppState(s=>({facets:s.response.products?.facets??[]})),{replaceFilter:n,toggleProductFilter:e}=b.useActions(),o=d.useCallback(s=>{const i=t?.find(a=>a.type==="stats"&&a.field===s);if(i&&"min"in i&&"max"in i)return i},[t]),r=d.useCallback(s=>t?.find(i=>i.field===s)?.name??s,[t]),c=d.useCallback(s=>"field"in s&&(s.value instanceof Array||s.range instanceof Array),[]),u=d.useCallback(s=>({...s,range:s.range?.map(i=>({gt:i.gt?Number(i.gt):i.gt,gte:i.gte?Number(i.gte):i.gte,lt:i.lt?Number(i.lt):i.lt,lte:i.lte?Number(i.lte):i.lte}))}),[]),l=d.useCallback(s=>(s.value??[]).map(a=>({value:a,field:s.field,name:r(s.field),filter:u(s),remove:()=>{e(s.field,a,!1)}})),[u,r,e]),f=d.useCallback(s=>(s.range??[]).map(a=>{const p=a.gte??a.gt??o(s.field)?.min,S=a.lte??a.lt??o(s.field)?.max;if(p!==void 0&&S!==void 0)return{value:`${p} - ${S}`,field:s.field,name:r(s.field),filter:u(s),remove:()=>{n(s.field,void 0)}}}).filter(Boolean),[u,o,r,n]);return{selectFilters:c,toValueFilter:l,toRangeFilter:f}}function R(){const{filter:t}=h.useNostoAppState(l=>({filter:l.query.products?.filter??[]})),{updateSearch:n}=b.useActions(),{selectFilters:e,toValueFilter:o,toRangeFilter:r}=j(),c=d.useMemo(()=>t?t.filter(e).flatMap(l=>"value"in l?o(l):"range"in l?r(l):[]).filter(Boolean):[],[t,e,r,o]),u=d.useCallback(()=>{n({products:{filter:[]}})},[n]);return{filters:c,removeAll:u}}function C(t){const{replaceFilter:n}=b.useActions(),{query:e,products:o}=h.useNostoAppState(a=>({query:a.query,products:a.response.products})),r=o?.facets?.find(a=>a.id===t);if(!r)return{min:0,max:0,range:[0,0],updateRange:()=>{}};const c=e.products?.filter?.find(a=>a.field===r.field),u=c?.range?c.range[0]:void 0,l=typeof u=="object"&&("gte"in u||"lte"in u)?[y.parseNumber(u.gte),y.parseNumber(u.lte)]:[void 0,void 0],f="min"in r?Math.floor(r.min):0,s="max"in r?Math.ceil(r.max):0,i=([a,p])=>{const S=a!==void 0?Math.floor(a):void 0,m=p!==void 0?Math.ceil(p):void 0,g=S!==void 0,v=m!==void 0;(f===S||!g)&&(s===m||!v)?n(r.field,void 0):(f===S||!g)&&v?n(r.field,{lte:m.toString()}):(s===m||!v)&&g?n(r.field,{gte:S.toString()}):g&&v&&n(r.field,{gte:S.toString(),lte:m.toString()})};return{min:f,max:s,range:[l[0]??f,l[1]??s],updateRange:i}}function V(t,n){const{min:e,max:o,range:r,updateRange:c}=C(t),{filters:u}=R(),l=d.useMemo(()=>{const a=u.find(g=>g?.filter?.range);let p=null;if(a){const g=a.filter.range?.[0];p=[y.parseNumber(g?.gte),y.parseNumber(g?.lte)]}const S=[];let m=Math.floor(e/n)*n;for(;m<o;){const g=m+n,v=p&&p[0]===m&&p[1]===g;S.push({min:m,max:g,selected:v}),m=g}return S},[u,e,o,n]),f=a=>{c([a,r[1]])},s=a=>{c([r[0],a])},i=e!==r[0]||o!==r[1];return{min:e,max:o,range:r,updateRange:c,ranges:l,handleMinChange:f,handleMaxChange:s,isSelected:i}}function D(){const{products:t,keywords:n}=h.useNostoAppState(e=>e.response);return{products:t??{hits:[],total:0},keywords:n??{hits:[],total:0}}}function B(){const t=h.useNostoAppState(e=>e.query.products?.filter);return d.useMemo(()=>t?t.reduce((e,o)=>e+(Array.isArray(o.value)?o.value.length:1),0):0,[t])}function N(t){return t&&!Number.isNaN(t)?t:0}function _(t,n){const{from:e,size:o,total:r}=h.useNostoAppState(s=>({from:N(s.query.products?.from??0),size:N(s.response?.products?.size??n),total:N(s.response?.products?.total??0)})),{updateSearch:c}=b.useActions(),u=e+o,l=[...t].reverse().filter(s=>s+n<r);return{from:e,to:u,total:r,size:o,sizeOptions:l,handleSizeChange:s=>{c({products:{size:y.parseNumber(s)}})}}}function E(t,n){return t.length!==n.length?!1:t.every(e=>n.find(o=>e.field===o.field&&e.order===o.order))}function U(t){const n=h.useNostoAppState(c=>c.query),{updateSearch:e}=b.useActions();return{activeSort:t.find(c=>E(c.value.sort,n.products?.sort||[]))?.id??t[0]?.id,setSort:c=>{const u=t.find(l=>l.id===c);u&&e({products:{sort:u.value.sort}})}}}const M=window.SpeechRecognition||window.webkitSpeechRecognition,k=!!(M&&typeof M=="function");function $(){return{listening:!1,startListening:()=>{},stopListening:()=>{}}}function I({language:t="en-US",interimResults:n=!1,onResult:e,onError:o}={}){const[r,c]=d.useState(!1),u=d.useRef(null),l=d.useCallback(()=>{const s=new M;s.lang=t,s.interimResults=n,s.onstart=()=>c(!0),e&&(s.onresult=i=>{const{transcript:a}=i.results?.[0]?.[0];e(a)}),o&&(s.onerror=i=>o(i.error)),s.onend=()=>c(!1),u.current=s,s.start()},[t,n,o,e]),f=d.useCallback(()=>{u.current?.stop()},[u]);return{listening:r,startListening:l,stopListening:f}}const Z=k?I:$;function G(t,n){if(!t.length||!n.length)return[];const e=n.reduce((o,r)=>(o[r]={},o),{});return t.forEach(o=>{o.customFields?.forEach(({key:r,value:c})=>{const u=r.toLowerCase();n.includes(u)&&(e[u][c]=e[u][c]||[],e[u][c].push(o))})}),Object.entries(e).filter(o=>Object.keys(o[1]).length).map(([o,r])=>({field:o,options:Object.entries(r).map(([c,u])=>({value:c,skus:u,unavailable:!1,selected:!1}))}))}function H(t,n){return t.length?t.map(({field:e,options:o})=>({field:e,options:o.map(r=>{const c=!r.skus?.some(l=>Object.entries(n).every(([f,s])=>f===e?!0:l.customFields?.find(a=>a.key.toLowerCase()===f)?.value===s)),u=n[e]===r.value;return{...r,unavailable:c,selected:u}})})):[]}const w=["4XS","3XS","2XS","XXS","XS","S","M","L","XL","XXL","2XL","XXXL","3XL","4XL"];function J(t){if(w.includes(t))return 1e3+w.indexOf(t);const n=parseFloat(t);return isNaN(n)?t:n}function K(t,n){return[...n].sort((e,o)=>{const[r,c]=[e.value,o.value].map(J);return r<c?-1:1})}function Q(t=[],n=[]){const[e,o]=d.useState({}),r=d.useMemo(()=>G(t,n).map(({field:s,options:i})=>({field:s,options:K(s,i)})),[t,n]),c=d.useMemo(()=>H(r,e),[r,e]),u=d.useCallback((f,s)=>{o(i=>{const a={...i};return a[f]===s?delete a[f]:a[f]=s,a})},[]),l=d.useMemo(()=>Object.keys(e).filter(i=>e[i]).length===0?[]:c.filter(({field:i})=>e[i]).map(({field:i,options:a})=>{const p=e[i];return a.find(m=>m.value===p)?.skus??[]}).reduce((i,a)=>i.filter(p=>a.includes(p))),[c,e]);return{swatches:c,toggleOption:u,matchedSkus:l}}exports.useActions=b.useActions;exports.useLoadMore=h.useLoadMore;exports.useNostoAppState=h.useNostoAppState;exports.speechToTextSupported=k;exports.useDecoratedSearchResults=z;exports.useFacet=P;exports.useFacets=T;exports.usePagination=X;exports.usePersonalization=O;exports.useProductFilters=R;exports.useRange=C;exports.useRangeSelector=V;exports.useResponse=D;exports.useSelectedFiltersCount=B;exports.useSizeOptions=_;exports.useSort=U;exports.useSpeechToText=Z;exports.useSwatches=Q;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const b=require("../../useActions-CDUotElR.cjs"),x=require("../../logger-Boh_C6Bz.cjs"),h=require("../../useLoadMore-D0TMnfNk.cjs"),d=require("preact/hooks"),L=require("../../index.es-Dp6Iaxz3.cjs"),y=require("../../parseNumber-FsZ8w61u.cjs");function P(t){const n=h.useNostoAppState(e=>e.response);return t&&Array.isArray(t)||t&&x.isPlainObject(t)?t:n}function T(t,n){const e=t.data?.filter(f=>f.selected).length??0,{active:o}={active:e>0,...n},[r,c]=d.useState(o),{toggleProductFilter:u}=b.useActions(),l=d.useCallback(()=>{c(!r)},[r]);return{active:r,selectedFiltersCount:e,toggleActive:l,toggleProductFilter:u}}function q(){const{loading:t,facets:n}=h.useNostoAppState(e=>({loading:e.loading,facets:e.response?.products?.facets??[]}));return{loading:t,facets:n}}function z(t,n){const e=n-t;return!isNaN(e)&&e>0?new Array(n-t).fill(void 0).map((o,r)=>r+t):[]}function X(t){const{query:n,products:e}=h.useNostoAppState(o=>({query:o.query,products:o.response.products}));return d.useMemo(()=>{if(!e)return{totalPages:0,resultsFrom:0,resultsTo:0,pages:[]};const o=n.products?.from??0,r=t?.width??1/0,c=Math.max(Math.floor(r-1)/2,1),u=e.size>0?Math.floor(o/e.size)+1:1,l=e.size>0?Math.ceil(e.total/e.size):0,f=A=>A>=u-c&&A<=u+c,s=o+1,i=Math.min(o+e.total,e.total),a={from:o,page:u,current:!0},p=A=>({from:(A-1)*e.size,page:A,current:A===u}),S=u>1?p(u-1):void 0,m=u<l?p(u+1):void 0,g=u-c-1>1?p(1):void 0,v=u+c+1<l?p(l):void 0,F=z(1,l+1).filter(f).map(p);return!g&&F[0]?.page===2&&F.unshift(p(1)),!v&&F[F.length-1]?.page===l-1&&F.push(p(l)),{totalPages:l,resultsFrom:s,resultsTo:i,current:a,prev:S,next:m,first:g,last:v,pages:F}},[n,e,t?.width])}function O(){const[t,n]=d.useState([]),[e,o]=d.useState([]);return d.useEffect(()=>{L.s(async r=>{const{products:c,segments:u}=await r.getSearchSessionParams();n(u??[]),o(c?.personalizationBoost??[])})},[]),{segments:t,boost:e}}function j(){const{facets:t}=h.useNostoAppState(s=>({facets:s.response.products?.facets??[]})),{replaceFilter:n,toggleProductFilter:e}=b.useActions(),o=d.useCallback(s=>{const i=t?.find(a=>a.type==="stats"&&a.field===s);if(i&&"min"in i&&"max"in i)return i},[t]),r=d.useCallback(s=>t?.find(i=>i.field===s)?.name??s,[t]),c=d.useCallback(s=>"field"in s&&(s.value instanceof Array||s.range instanceof Array),[]),u=d.useCallback(s=>({...s,range:s.range?.map(i=>({gt:i.gt?Number(i.gt):i.gt,gte:i.gte?Number(i.gte):i.gte,lt:i.lt?Number(i.lt):i.lt,lte:i.lte?Number(i.lte):i.lte}))}),[]),l=d.useCallback(s=>(s.value??[]).map(a=>({value:a,field:s.field,name:r(s.field),filter:u(s),remove:()=>{e(s.field,a,!1)}})),[u,r,e]),f=d.useCallback(s=>(s.range??[]).map(a=>{const p=a.gte??a.gt??o(s.field)?.min,S=a.lte??a.lt??o(s.field)?.max;if(p!==void 0&&S!==void 0)return{value:`${p} - ${S}`,field:s.field,name:r(s.field),filter:u(s),remove:()=>{n(s.field,void 0)}}}).filter(Boolean),[u,o,r,n]);return{selectFilters:c,toValueFilter:l,toRangeFilter:f}}function R(){const{filter:t}=h.useNostoAppState(l=>({filter:l.query.products?.filter??[]})),{updateSearch:n}=b.useActions(),{selectFilters:e,toValueFilter:o,toRangeFilter:r}=j(),c=d.useMemo(()=>t?t.filter(e).flatMap(l=>"value"in l?o(l):"range"in l?r(l):[]).filter(Boolean):[],[t,e,r,o]),u=d.useCallback(()=>{n({products:{filter:[]}})},[n]);return{filters:c,removeAll:u}}function k(t){const{replaceFilter:n}=b.useActions(),{query:e,products:o}=h.useNostoAppState(a=>({query:a.query,products:a.response.products})),r=o?.facets?.find(a=>a.id===t);if(!r)return{min:0,max:0,range:[0,0],updateRange:()=>{}};const c=e.products?.filter?.find(a=>a.field===r.field),u=c?.range?c.range[0]:void 0,l=typeof u=="object"&&("gte"in u||"lte"in u)?[y.parseNumber(u.gte),y.parseNumber(u.lte)]:[void 0,void 0],f="min"in r?Math.floor(r.min):0,s="max"in r?Math.ceil(r.max):0,i=([a,p])=>{const S=a!==void 0?Math.floor(a):void 0,m=p!==void 0?Math.ceil(p):void 0,g=S!==void 0,v=m!==void 0;(f===S||!g)&&(s===m||!v)?n(r.field,void 0):(f===S||!g)&&v?n(r.field,{lte:m.toString()}):(s===m||!v)&&g?n(r.field,{gte:S.toString()}):g&&v&&n(r.field,{gte:S.toString(),lte:m.toString()})};return{min:f,max:s,range:[l[0]??f,l[1]??s],updateRange:i}}function V(t,n){const{min:e,max:o,range:r,updateRange:c}=k(t),{filters:u}=R(),l=d.useMemo(()=>{const a=u.find(g=>g?.filter?.range);let p=null;if(a){const g=a.filter.range?.[0];p=[y.parseNumber(g?.gte),y.parseNumber(g?.lte)]}const S=[];let m=Math.floor(e/n)*n;for(;m<o;){const g=m+n,v=p&&p[0]===m&&p[1]===g;S.push({min:m,max:g,selected:v}),m=g}return S},[u,e,o,n]),f=a=>{c([a,r[1]])},s=a=>{c([r[0],a])},i=e!==r[0]||o!==r[1];return{min:e,max:o,range:r,updateRange:c,ranges:l,handleMinChange:f,handleMaxChange:s,isSelected:i}}function D(){const{products:t,keywords:n}=h.useNostoAppState(e=>e.response);return{products:t??{hits:[],total:0},keywords:n??{hits:[],total:0}}}function B(){const t=h.useNostoAppState(e=>e.query.products?.filter);return d.useMemo(()=>t?t.reduce((e,o)=>e+(Array.isArray(o.value)?o.value.length:1),0):0,[t])}function N(t){return t&&!Number.isNaN(t)?t:0}function _(t,n){const{from:e,size:o,total:r}=h.useNostoAppState(s=>({from:N(s.query.products?.from??0),size:N(s.response?.products?.size??n),total:N(s.response?.products?.total??0)})),{updateSearch:c}=b.useActions(),u=e+o,l=d.useMemo(()=>[...t].reverse().filter(s=>s<r),[t,r]),f=d.useCallback(s=>{c({products:{size:y.parseNumber(s)}})},[c]);return{from:e,to:u,total:r,size:o,sizeOptions:l,handleSizeChange:f}}function E(t,n){return t.length!==n.length?!1:t.every(e=>n.find(o=>e.field===o.field&&e.order===o.order))}function U(t){const n=h.useNostoAppState(c=>c.query),{updateSearch:e}=b.useActions();return{activeSort:t.find(c=>E(c.value.sort,n.products?.sort||[]))?.id??t[0]?.id,setSort:c=>{const u=t.find(l=>l.id===c);u&&e({products:{sort:u.value.sort}})}}}const M=window.SpeechRecognition||window.webkitSpeechRecognition,C=!!(M&&typeof M=="function");function $(){return{listening:!1,startListening:()=>{},stopListening:()=>{}}}function I({language:t="en-US",interimResults:n=!1,onResult:e,onError:o}={}){const[r,c]=d.useState(!1),u=d.useRef(null),l=d.useCallback(()=>{const s=new M;s.lang=t,s.interimResults=n,s.onstart=()=>c(!0),e&&(s.onresult=i=>{const{transcript:a}=i.results?.[0]?.[0];e(a)}),o&&(s.onerror=i=>o(i.error)),s.onend=()=>c(!1),u.current=s,s.start()},[t,n,o,e]),f=d.useCallback(()=>{u.current?.stop()},[u]);return{listening:r,startListening:l,stopListening:f}}const Z=C?I:$;function G(t,n){if(!t.length||!n.length)return[];const e=n.reduce((o,r)=>(o[r]={},o),{});return t.forEach(o=>{o.customFields?.forEach(({key:r,value:c})=>{const u=r.toLowerCase();n.includes(u)&&(e[u][c]=e[u][c]||[],e[u][c].push(o))})}),Object.entries(e).filter(o=>Object.keys(o[1]).length).map(([o,r])=>({field:o,options:Object.entries(r).map(([c,u])=>({value:c,skus:u,unavailable:!1,selected:!1}))}))}function H(t,n){return t.length?t.map(({field:e,options:o})=>({field:e,options:o.map(r=>{const c=!r.skus?.some(l=>Object.entries(n).every(([f,s])=>f===e?!0:l.customFields?.find(a=>a.key.toLowerCase()===f)?.value===s)),u=n[e]===r.value;return{...r,unavailable:c,selected:u}})})):[]}const w=["4XS","3XS","2XS","XXS","XS","S","M","L","XL","XXL","2XL","XXXL","3XL","4XL"];function J(t){if(w.includes(t))return 1e3+w.indexOf(t);const n=parseFloat(t);return isNaN(n)?t:n}function K(t,n){return[...n].sort((e,o)=>{const[r,c]=[e.value,o.value].map(J);return r<c?-1:1})}function Q(t=[],n=[]){const[e,o]=d.useState({}),r=d.useMemo(()=>G(t,n).map(({field:s,options:i})=>({field:s,options:K(s,i)})),[t,n]),c=d.useMemo(()=>H(r,e),[r,e]),u=d.useCallback((f,s)=>{o(i=>{const a={...i};return a[f]===s?delete a[f]:a[f]=s,a})},[]),l=d.useMemo(()=>Object.keys(e).filter(i=>e[i]).length===0?[]:c.filter(({field:i})=>e[i]).map(({field:i,options:a})=>{const p=e[i];return a.find(m=>m.value===p)?.skus??[]}).reduce((i,a)=>i.filter(p=>a.includes(p))),[c,e]);return{swatches:c,toggleOption:u,matchedSkus:l}}exports.useActions=b.useActions;exports.useLoadMore=h.useLoadMore;exports.useNostoAppState=h.useNostoAppState;exports.speechToTextSupported=C;exports.useDecoratedSearchResults=P;exports.useFacet=T;exports.useFacets=q;exports.usePagination=X;exports.usePersonalization=O;exports.useProductFilters=R;exports.useRange=k;exports.useRangeSelector=V;exports.useResponse=D;exports.useSelectedFiltersCount=B;exports.useSizeOptions=_;exports.useSort=U;exports.useSpeechToText=Z;exports.useSwatches=Q;
@@ -1,5 +1,5 @@
1
1
  import { b } from "../../useActions-BOhorGOy.js";
2
- import { a as X } from "../../logger-_fg_Za9y.js";
2
+ import { a as z } from "../../logger-_fg_Za9y.js";
3
3
  import { a as v } from "../../useLoadMore-DGGR76Vv.js";
4
4
  import { u as le } from "../../useLoadMore-DGGR76Vv.js";
5
5
  import { useState as R, useCallback as h, useMemo as y, useEffect as A, useRef as N } from "preact/hooks";
@@ -7,7 +7,7 @@ import { s as P } from "../../index.es-XNBESE3P.js";
7
7
  import { p as x } from "../../parseNumber-QA48nJLp.js";
8
8
  function K(t) {
9
9
  const r = v((e) => e.response);
10
- return t && Array.isArray(t) || t && X(t) ? t : r;
10
+ return t && Array.isArray(t) || t && z(t) ? t : r;
11
11
  }
12
12
  function Q(t, r) {
13
13
  const e = t.data?.filter((d) => d.selected).length ?? 0, { active: o } = {
@@ -144,7 +144,7 @@ function T() {
144
144
  toRangeFilter: d
145
145
  };
146
146
  }
147
- function C() {
147
+ function k() {
148
148
  const { filter: t } = v((l) => ({
149
149
  filter: l.query.products?.filter ?? []
150
150
  })), { updateSearch: r } = b(), { selectFilters: e, toValueFilter: o, toRangeFilter: s } = T(), c = y(() => t ? t.filter(e).flatMap((l) => "value" in l ? o(l) : "range" in l ? s(l) : []).filter(Boolean) : [], [t, e, s, o]), i = h(() => {
@@ -161,7 +161,7 @@ function C() {
161
161
  removeAll: i
162
162
  };
163
163
  }
164
- function k(t) {
164
+ function q(t) {
165
165
  const { replaceFilter: r } = b(), { query: e, products: o } = v((u) => ({
166
166
  query: u.query,
167
167
  products: u.response.products
@@ -197,7 +197,7 @@ function k(t) {
197
197
  };
198
198
  }
199
199
  function te(t, r) {
200
- const { min: e, max: o, range: s, updateRange: c } = k(t), { filters: i } = C(), l = y(() => {
200
+ const { min: e, max: o, range: s, updateRange: c } = q(t), { filters: i } = k(), l = y(() => {
201
201
  const u = i.find((g) => g?.filter?.range);
202
202
  let f = null;
203
203
  if (u) {
@@ -260,7 +260,16 @@ function oe(t, r) {
260
260
  from: L(n.query.products?.from ?? 0),
261
261
  size: L(n.response?.products?.size ?? r),
262
262
  total: L(n.response?.products?.total ?? 0)
263
- })), { updateSearch: c } = b(), i = e + o, l = [...t].reverse().filter((n) => n + r < s);
263
+ })), { updateSearch: c } = b(), i = e + o, l = y(() => [...t].reverse().filter((n) => n < s), [t, s]), d = h(
264
+ (n) => {
265
+ c({
266
+ products: {
267
+ size: x(n)
268
+ }
269
+ });
270
+ },
271
+ [c]
272
+ );
264
273
  return {
265
274
  /** from value */
266
275
  from: e,
@@ -273,23 +282,17 @@ function oe(t, r) {
273
282
  /** Array of size options */
274
283
  sizeOptions: l,
275
284
  /** Should be called when size is changed */
276
- handleSizeChange: (n) => {
277
- c({
278
- products: {
279
- size: x(n)
280
- }
281
- });
282
- }
285
+ handleSizeChange: d
283
286
  };
284
287
  }
285
- function q(t, r) {
288
+ function C(t, r) {
286
289
  return t.length !== r.length ? !1 : t.every((e) => r.find((o) => e.field === o.field && e.order === o.order));
287
290
  }
288
291
  function se(t) {
289
292
  const r = v((c) => c.query), { updateSearch: e } = b();
290
293
  return {
291
294
  /** Active sort */
292
- activeSort: t.find((c) => q(c.value.sort, r.products?.sort || []))?.id ?? t[0]?.id,
295
+ activeSort: t.find((c) => C(c.value.sort, r.products?.sort || []))?.id ?? t[0]?.id,
293
296
  /** Set sort function */
294
297
  setSort: (c) => {
295
298
  const i = t.find((l) => l.id === c);
@@ -364,10 +367,10 @@ function E(t, r) {
364
367
  })
365
368
  })) : [];
366
369
  }
367
- const z = ["4XS", "3XS", "2XS", "XXS", "XS", "S", "M", "L", "XL", "XXL", "2XL", "XXXL", "3XL", "4XL"];
370
+ const X = ["4XS", "3XS", "2XS", "XXS", "XS", "S", "M", "L", "XL", "XXL", "2XL", "XXXL", "3XL", "4XL"];
368
371
  function U(t) {
369
- if (z.includes(t))
370
- return 1e3 + z.indexOf(t);
372
+ if (X.includes(t))
373
+ return 1e3 + X.indexOf(t);
371
374
  const r = parseFloat(t);
372
375
  return isNaN(r) ? t : r;
373
376
  }
@@ -402,8 +405,8 @@ export {
402
405
  v as useNostoAppState,
403
406
  Y as usePagination,
404
407
  ee as usePersonalization,
405
- C as useProductFilters,
406
- k as useRange,
408
+ k as useProductFilters,
409
+ q as useRange,
407
410
  te as useRangeSelector,
408
411
  ne as useResponse,
409
412
  re as useSelectedFiltersCount,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nosto/search-js",
3
- "version": "3.4.0",
3
+ "version": "3.4.1",
4
4
  "license": "ISC",
5
5
  "type": "module",
6
6
  "files": [
@@ -92,7 +92,7 @@
92
92
  "devDependencies": {
93
93
  "@commitlint/cli": "^19.8.1",
94
94
  "@commitlint/config-conventional": "^19.8.1",
95
- "@nosto/nosto-js": "^2.5.0",
95
+ "@nosto/nosto-js": "^2.6.0",
96
96
  "@testing-library/dom": "^10.4.1",
97
97
  "@types/dom-speech-recognition": "^0.0.6",
98
98
  "@types/eslint-config-prettier": "^6.11.3",
@@ -115,7 +115,7 @@
115
115
  "typedoc": "^0.28.10",
116
116
  "typescript": "^5.9.2",
117
117
  "typescript-eslint": "^8.39.1",
118
- "vite": "^7.1.1",
118
+ "vite": "^7.1.2",
119
119
  "vite-plugin-dts": "^4.5.4",
120
120
  "vitest": "^3.1.3"
121
121
  },