@nosto/search-js 1.5.1 → 1.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const s=require("../index.es-D_7T9vdv.cjs");function a(t,e){if(!t.products||!(e!=null&&e.length))return t;const r=i=>e.reduce((u,n)=>n(u),i);return{...t,products:{...t.products,hits:t.products.hits.map(r)}}}function o(t){return new Promise(e=>setTimeout(e,t))}async function l(t,e,r){const{maxRetries:i=0,retryInterval:u=1e3}=r;let n=0;for(;;)try{return await t.search(e,r)}catch(c){if(!f(c))throw console.info("Skipping retry logic for",c),c;if(n>=i)throw c;n++,await o(u)}}function f(t){return!t||typeof t!="object"?!1:!("status"in t)||h(t.status)}function h(t){return typeof t=="number"&&(t<400||t>=500)}async function y(t,e={}){const{hitDecorators:r,...i}=e,u=await new Promise(s.s),n=await l(u,t,i);return a(n,r)}exports.search=y;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("../index.es-DlUp67LT.cjs"),o=require("../search-BVJZK90N.cjs");async function d(r,a,t=1){await e.L(a,void 0,t),await e.s(async c=>await c.recordSearchAddToCart(r,a))}exports.search=o.search;exports.addToCart=d;
@@ -1,3 +1,4 @@
1
1
  /** @module ./ */
2
+ export { addToCart, type SearchHitWithSku } from './src/addToCart';
2
3
  export { search } from './src/search';
3
4
  export type { DecoratedProduct, DecoratedResult, HitDecorator, Options, ToIntersection } from './src/types';
@@ -1,43 +1,9 @@
1
- import { s as a } from "../index.es-Bcd5IQh9.js";
2
- function s(t, r) {
3
- if (!t.products || !(r != null && r.length))
4
- return t;
5
- const e = (i) => r.reduce((u, n) => n(u), i);
6
- return {
7
- ...t,
8
- products: {
9
- ...t.products,
10
- hits: t.products.hits.map(e)
11
- }
12
- };
13
- }
14
- function o(t) {
15
- return new Promise((r) => setTimeout(r, t));
16
- }
17
- async function f(t, r, e) {
18
- const { maxRetries: i = 0, retryInterval: u = 1e3 } = e;
19
- let n = 0;
20
- for (; ; )
21
- try {
22
- return await t.search(r, e);
23
- } catch (c) {
24
- if (!h(c))
25
- throw console.info("Skipping retry logic for", c), c;
26
- if (n >= i)
27
- throw c;
28
- n++, await o(u);
29
- }
30
- }
31
- function h(t) {
32
- return !t || typeof t != "object" ? !1 : !("status" in t) || l(t.status);
33
- }
34
- function l(t) {
35
- return typeof t == "number" && (t < 400 || t >= 500);
36
- }
37
- async function p(t, r = {}) {
38
- const { hitDecorators: e, ...i } = r, u = await new Promise(a), n = await f(u, t, i);
39
- return s(n, e);
1
+ import { L as c, s as d } from "../index.es-B8mbAxS4.js";
2
+ import { s as f } from "../search-B0-bVNMy.js";
3
+ async function e(r, a, o = 1) {
4
+ await c(a, void 0, o), await d(async (t) => await t.recordSearchAddToCart(r, a));
40
5
  }
41
6
  export {
42
- p as search
7
+ e as addToCart,
8
+ f as search
43
9
  };
@@ -0,0 +1,12 @@
1
+ import { SearchHit, SearchTrackOptions } from '@nosto/nosto-js/client';
2
+ export type SearchHitWithSku = SearchHit & {
3
+ skuId: string;
4
+ };
5
+ /**
6
+ * Adds a search hit to the cart.
7
+ *
8
+ * @param type - The type of search that the hit belongs to.
9
+ * @param hit - The search hit to add to the cart.
10
+ * @param quantity - The quantity of the hit to add to the cart.
11
+ */
12
+ export declare function addToCart(type: SearchTrackOptions, hit: SearchHitWithSku, quantity?: number): Promise<void>;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const d=require("../index.es-D_7T9vdv.cjs"),g={defaultCurrency:"EUR",defaultLocale:"en-US",currencySettings:{}},p={EUR:"de-DE",GBP:"en-GB",USD:"en-US",AUD:"en-AU",CAD:"en-CA",INR:"en-IN",AFN:"en-IN",BDT:"en-IN",BTN:"en-IN",MMK:"en-IN",NPR:"en-IN",PKR:"en-IN"};function y(u={}){const o={...g,...u};u.currencySettings||d.s(c=>{o.currencySettings=c.internal.getSettings().currencySettings??{}});function a(c,n){const{defaultCurrency:t,currencySettings:r,defaultLocale:i}=o,s=n??t,f=p[s]??i;if(s in r){const e=r[s],l=new Intl.NumberFormat(f,{useGrouping:!!e.groupingSeparator,minimumFractionDigits:e.decimalPlaces,maximumFractionDigits:e.decimalPlaces}).formatToParts(c).map(m=>m.type==="group"?e.groupingSeparator:m.type==="decimal"?e.decimalCharacter:m.value).join("");return e!=null&&e.currencyBeforeAmount?`${e.currencyToken}${l}`:`${l}${e==null?void 0:e.currencyToken}`}return new Intl.NumberFormat(f,{style:"currency",currency:s}).format(c)}return{formatCurrency:a}}function C(u){const{formatCurrency:o}=y(u);function a(n,t){const r={};return n.price!==void 0&&(r.priceText=o(n.price,t)),n.listPrice!==void 0&&(r.listPriceText=o(n.listPrice,t)),Object.assign({},n,r)}function c(n){return n.price!==void 0||n.listPrice!==void 0}return function(t){if(!c(t))return t;const r=a(t,t.priceCurrencyCode);return r.skus&&r.skus.some(c)&&(r.skus=r.skus.map(i=>c(i)?a(i,t.priceCurrencyCode):i)),r}}exports.getCurrencyFormatting=y;exports.priceDecorator=C;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const d=require("../index.es-DlUp67LT.cjs"),g={defaultCurrency:"EUR",defaultLocale:"en-US",currencySettings:{}},p={EUR:"de-DE",GBP:"en-GB",USD:"en-US",AUD:"en-AU",CAD:"en-CA",INR:"en-IN",AFN:"en-IN",BDT:"en-IN",BTN:"en-IN",MMK:"en-IN",NPR:"en-IN",PKR:"en-IN"};function y(u={}){const o={...g,...u};u.currencySettings||d.s(c=>{o.currencySettings=c.internal.getSettings().currencySettings??{}});function a(c,n){const{defaultCurrency:t,currencySettings:r,defaultLocale:i}=o,s=n??t,f=p[s]??i;if(s in r){const e=r[s],l=new Intl.NumberFormat(f,{useGrouping:!!e.groupingSeparator,minimumFractionDigits:e.decimalPlaces,maximumFractionDigits:e.decimalPlaces}).formatToParts(c).map(m=>m.type==="group"?e.groupingSeparator:m.type==="decimal"?e.decimalCharacter:m.value).join("");return e!=null&&e.currencyBeforeAmount?`${e.currencyToken}${l}`:`${l}${e==null?void 0:e.currencyToken}`}return new Intl.NumberFormat(f,{style:"currency",currency:s}).format(c)}return{formatCurrency:a}}function C(u){const{formatCurrency:o}=y(u);function a(n,t){const r={};return n.price!==void 0&&(r.priceText=o(n.price,t)),n.listPrice!==void 0&&(r.listPriceText=o(n.listPrice,t)),Object.assign({},n,r)}function c(n){return n.price!==void 0||n.listPrice!==void 0}return function(t){if(!c(t))return t;const r=a(t,t.priceCurrencyCode);return r.skus&&r.skus.some(c)&&(r.skus=r.skus.map(i=>c(i)?a(i,t.priceCurrencyCode):i)),r}}exports.getCurrencyFormatting=y;exports.priceDecorator=C;
@@ -1,4 +1,4 @@
1
- import { s as y } from "../index.es-Bcd5IQh9.js";
1
+ import { s as y } from "../index.es-B8mbAxS4.js";
2
2
  const p = {
3
3
  defaultCurrency: "EUR",
4
4
  defaultLocale: "en-US",
@@ -0,0 +1,27 @@
1
+ function t() {
2
+ window.nostojs = window.nostojs ?? function(o) {
3
+ (window.nostojs.q = window.nostojs.q ?? []).push(o);
4
+ };
5
+ }
6
+ async function u(o) {
7
+ return window.nostojs(o);
8
+ }
9
+ let i = null;
10
+ typeof window < "u" && (t(), u((o) => {
11
+ i = o.internal.getSettings();
12
+ }));
13
+ function a() {
14
+ return i;
15
+ }
16
+ async function d(o, w, s) {
17
+ var n;
18
+ if (!((n = window.Nosto) != null && n.addSkuToCart))
19
+ throw new Error("Nosto addSkuToCart function is not available");
20
+ await window.Nosto.addSkuToCart(o, w, s);
21
+ }
22
+ typeof window < "u" && t();
23
+ export {
24
+ d as L,
25
+ a as i,
26
+ u as s
27
+ };
@@ -0,0 +1 @@
1
+ "use strict";function t(){window.nostojs=window.nostojs??function(o){(window.nostojs.q=window.nostojs.q??[]).push(o)}}async function i(o){return window.nostojs(o)}let s=null;typeof window<"u"&&(t(),i(o=>{s=o.internal.getSettings()}));function a(){return s}async function d(o,w,u){var n;if(!((n=window.Nosto)!=null&&n.addSkuToCart))throw new Error("Nosto addSkuToCart function is not available");await window.Nosto.addSkuToCart(o,w,u)}typeof window<"u"&&t();exports.L=d;exports.i=a;exports.s=i;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const b=require("preact"),E=require("../index.es-D_7T9vdv.cjs"),p=require("preact/hooks"),W=require("../core/core.cjs.js");function X(e){return e.type==="input"}function Z(e){return!!e&&typeof e=="object"&&"type"in e&&"props"in e}function O(e,t={depth:0}){const{children:r}=e;return b.toChildArray(r).map(n=>{if(!Z(n))return n;const o=e.updateElement(n,t);return o===null?null:(o.props={...o.props,children:O({...e,children:o.props.children},{depth:t.depth+1})},o)})}function ee({children:e,onSearchInput:t}){return O({children:e,updateElement:r=>(!X(r)||r.props.type!=="search"||(r.props={...r.props,onInput:n=>{n.target instanceof HTMLInputElement&&t(n.target)}}),r)})}const N=b.createContext(null),B=()=>{const e=p.useContext(N);if(!e)throw new Error("useConfig must be used within a ConfigProvider");return e},te="nosto:search:scrollPos";function re(){window.sessionStorage.setItem(te,window.scrollY.toString())}function ne({children:e,hit:t,onClick:r}){const{pageType:n}=B(),o=n==="autocomplete"?void 0:n;return O({children:e,updateElement:(u,a)=>(a.depth>0||(u.props={...u.props,onClick:c=>{t&&o&&E.s(l=>l.recordSearchClick(o,t)),re(),typeof r=="function"&&r(c)}}),u)})}var oe=0;function w(e,t,r,n,o,u){t||(t={});var a,c,l=t;if("ref"in l)for(c in l={},t)c=="ref"?a=t[c]:l[c]=t[c];var s={type:e,props:l,key:r,ref:a,__k:null,__:null,__b:0,__e:null,__c:null,constructor:void 0,__v:--oe,__i:-1,__u:0,__source:o,__self:u};if(typeof e=="function"&&(a=e.defaultProps))for(c in a)l[c]===void 0&&(l[c]=a[c]);return b.options.vnode&&b.options.vnode(s),s}function q(){p.useEffect(()=>{const e=window.setTimeout(()=>{console.error("Nosto client script has not loaded after 3 seconds.")},3e3);E.s(()=>{window.clearTimeout(e)})},[])}const $=e=>String(e)==="[object Object]";function k(e){if(!$(e))return!1;const t=e.constructor;if(t===void 0)return!0;const r=t.prototype;return!(!$(r)||!r.hasOwnProperty("isPrototypeOf"))}function x(...e){return e.reduce((t,r)=>z(t,r))}function D(...e){return e.reduce((t,r)=>z(t,r))}function z(e,t){return k(e)&&k(t)?Object.entries(t).reduce((r,[n,o])=>(r[n]=z(r[n],o),r),{...e}):k(e)?e:t}function F(e,t){if(e===t)return!0;if(e instanceof Date&&t instanceof Date)return e.getTime()===t.getTime();if(Array.isArray(e)&&Array.isArray(t))return e.length!==t.length?!1:e.every((r,n)=>F(r,t[n]));if(k(e)&&k(t)){const r=Object.entries(e);return r.length!==Object.keys(t).length?!1:r.every(([n,o])=>F(o,t[n]))}return!1}function K(e,t={}){const r=new Map;let n=D(e,t??{});const o=D(e,t);function u(i){n=i(n);for(const f of r.values())f(n)}function a(i){u(f=>({...f,...i}))}function c(){return n}function l(){return structuredClone(o)}function s(i,f){let S;r.set(f,g=>{const y=i(g);F(y,S)||(S=y,f(y))})}function d(i){r.delete(i)}return{updateState:a,getState:c,getInitialState:l,onChange:s,clearOnChange:d}}const Q={loading:!0,query:{query:""},response:{query:""},initialized:!1};function A(e={}){return K(Q,e)}const P=b.createContext(A()),j={defaultCurrency:"EUR",queryModifications:e=>e},se={...j};function ce(e){return{pageType:"autocomplete",...se,...e}}function ae({config:e,store:t,children:r}){const n=t??A();return q(),w(N,{value:ce(e),children:w(P,{value:n,children:r})})}const ie={...j,persistentSearchCache:!1,preservePageScroll:!1};function ue(e){return{pageType:"category",...ie,...e}}function le({config:e,store:t,children:r}){const n=t??A();return q(),w(N,{value:ue(e),children:w(P,{value:n,children:r})})}const de={...j,persistentSearchCache:!1,preservePageScroll:!1};function fe(e={}){return{pageType:"serp",...de,...e}}function ge({config:e,store:t,children:r}){const n=t??A();return q(),w(N,{value:fe(e),children:w(P,{value:n,children:r})})}function pe(e){return Array.from(new Set(e))}function me(e,t){return{...t,products:{facets:e==="autocomplete"?void 0:["*"],fields:Se,...t.products},...t.keywords?{keywords:{...t.keywords,fields:pe([...ye,...t.keywords.fields??[]]),highlight:t.keywords.highlight??{preTag:"<strong>",postTag:"</strong>"}}}:{}}}const Se=["productId","url","name","imageUrl","imageHash","thumbUrl","description","brand","variantId","availability","price","priceText","categoryIds","categories","customFields.key","customFields.value","priceCurrencyCode","datePublished","listPrice","unitPricingBaseMeasure","unitPricingUnit","unitPricingMeasure","googleCategory","gtin","ageGroup","gender","condition","alternateImageUrls","ratingValue","reviewCount","inventoryLevel","skus.id","skus.name","skus.price","skus.listPrice","skus.priceText","skus.url","skus.imageUrl","skus.inventoryLevel","skus.customFields.key","skus.customFields.value","skus.availability","pid","onDiscount","extra.key","extra.value","saleable","available","tags1","tags2","tags3"],ye=["keyword","_redirect"];function he(...e){if(!e.every(t=>t==null))return e.filter(t=>Array.isArray(t)).reduce((t,r)=>t.concat(r),[])}const H="nosto.search.";function Ce(e){var r;const t=`${H}${e}`;(r=window.performance)==null||r.mark(`${t}.start`)}function ve(e){var r,n;const t=`${H}${e}`;(r=window.performance)==null||r.mark(`${t}.end`),(n=window.performance)==null||n.measure(t,`${t}.start`,`${t}.end`)}function I(e){return Ce(e),()=>ve(e)}function ke(e,t,r){const n=JSON.stringify(t);try{console.info("Setting storage",e,n),r.setItem(e,n)}catch(o){console.warn(o)}}function we(e,t){try{const r=t.getItem(e);if(r)return JSON.parse(r)}catch(r){console.warn(r)}}function Pe(e,t){ke(e,t,sessionStorage)}function be(e){return we(e,sessionStorage)}const L="nosto:search:searchResult";function Fe(e,t,r){if(!e)return;Pe(L,{query:t,result:r})}function Ae(e,t){if(!e)return null;const r=be(L);if(!r||!Re(r))return null;const n=U(r.query);return F(U(t),n)?r.result:null}function U(e){return{accountId:e.accountId,customRules:e.customRules,explain:e.explain,keywords:e.keywords,products:e.products,query:e.query,redirect:e.redirect,rules:e.rules,segments:e.segments,sessionParams:e.sessionParams}}function Re(e){return typeof e=="object"&&e!==null&&"query"in e&&"result"in e}async function G(e,t,r){var s,d,i;const n=I("newSearch"),o=e.config.pageType,u=x(e.store.getInitialState().query,t),a=x(e.config.search,r,{track:o,redirect:o!=="autocomplete",isKeyword:!!(r!=null&&r.isKeyword)});e.store.updateState({query:u,loading:!0,initialized:!0});const c=o!=="autocomplete"&&e.config.persistentSearchCache,l=e.config.queryModifications({...u,products:{...u.products,filter:he((d=(s=e.store.getInitialState().query)==null?void 0:s.products)==null?void 0:d.filter,(i=t.products)==null?void 0:i.filter)}},o);try{let f;const S=Ae(c,l);if(S)f=S;else{const g=me(o,l);f=await W.search(g,a),Fe(c,l,f)}e.store.updateState({response:f,loading:!1})}catch(f){console.error("Search action failed",f)}n()}async function V(e,t,r){const n=I("updateSearch"),o=x(e.store.getState().query,{products:{from:0}},t);await G(e,o,r),n()}async function Me(e,t,r){var a;const n=I("replaceFilter"),o=(a=e.store.getState().query.products)==null?void 0:a.filter,u=r!==void 0?[{field:t,[typeof r=="object"?"range":"value"]:[r]}]:[];await V(e,{products:{filter:[...(o==null?void 0:o.filter(c=>c.field!==t))??[],...u]}}),n()}async function _e(e,t,r,n){var l,s;const o=I("toggleProductFilter"),u=(l=e.store.getState().query.products)==null?void 0:l.filter,a=u==null?void 0:u.find(d=>d.value instanceof Array&&d.field===t),c=a!=null&&a.value?{...a,value:[...a.value.filter(d=>!F(d,r)),...n?[r]:[]]}:n?{field:t,value:[r]}:void 0;await V(e,{products:{filter:[...(u==null?void 0:u.filter(d=>d!==a))??[],...(s=c==null?void 0:c.value)!=null&&s.length?[c]:[]]}}),o()}function v(){const e=B(),t=p.useContext(P),r=p.useMemo(()=>({config:e,store:t}),[e,t]),n=p.useCallback((c,l)=>G(r,c,l),[r]),o=p.useCallback((c,l)=>V(r,c,l),[r]),u=p.useCallback((c,l,s)=>_e(r,c,l,s),[r]),a=p.useCallback((c,l)=>Me(r,c,l),[r]);return{newSearch:n,updateSearch:o,toggleProductFilter:u,replaceFilter:a}}function C(e=Ne){const t=p.useContext(P),[r,n]=p.useState(e(t.getState()));return t.onChange(e,n),p.useEffect(()=>()=>t.clearOnChange(n),[t]),r}const Ne=e=>e;function Ie(e){const t=C(r=>r.response);return e&&Array.isArray(e)||e&&k(e)?e:t}function Te(e){var a;const t=((a=e.data)==null?void 0:a.filter(c=>c.selected).length)??0,[r,n]=p.useState(t>0),{toggleProductFilter:o}=v();return{active:r,selectedFiltersCount:t,toggleActive:()=>{n(!r)},toggleProductFilter:o}}function xe(){const{loading:e,facets:t}=C(r=>{var n,o;return{loading:r.loading,facets:((o=(n=r.response)==null?void 0:n.products)==null?void 0:o.facets)??[]}});return{loading:e,facets:t}}function Ee(){const[e,t]=p.useState([]),[r,n]=p.useState([]);return p.useEffect(()=>{E.s(async o=>{const{products:u,segments:a}=await o.getSearchSessionParams();t(a??[]),n((u==null?void 0:u.personalizationBoost)??[])})},[]),{segments:e,boost:r}}function Oe(){const{facets:e}=C(s=>{var d;return{facets:((d=s.response.products)==null?void 0:d.facets)??[]}}),{replaceFilter:t,toggleProductFilter:r}=v(),n=p.useCallback(s=>{const d=e==null?void 0:e.find(i=>i.type==="stats"&&i.field===s);if(d&&"min"in d&&"max"in d)return d},[e]),o=p.useCallback(s=>{var d;return((d=e==null?void 0:e.find(i=>i.field===s))==null?void 0:d.name)??s},[e]),u=p.useCallback(s=>"field"in s&&(s.value instanceof Array||s.range instanceof Array),[]),a=p.useCallback(s=>{var d;return{...s,range:(d=s.range)==null?void 0:d.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}))}},[]),c=p.useCallback(s=>(s.value??[]).map(i=>({value:i,field:s.field,name:o(s.field),filter:a(s),remove:()=>{r(s.field,i,!1)}})),[a,o,r]),l=p.useCallback(s=>(s.range??[]).map(i=>{var g,y;const f=i.gte??i.gt??((g=n(s.field))==null?void 0:g.min),S=i.lte??i.lt??((y=n(s.field))==null?void 0:y.max);if(f!==void 0&&S!==void 0)return{value:`${f} - ${S}`,field:s.field,name:o(s.field),filter:a(s),remove:()=>{t(s.field,void 0)}}}).filter(Boolean),[a,n,o,t]);return{selectFilters:u,toValueFilter:c,toRangeFilter:l}}function J(){const{filter:e}=C(c=>{var l;return{filter:((l=c.query.products)==null?void 0:l.filter)??[]}}),{updateSearch:t}=v(),{selectFilters:r,toValueFilter:n,toRangeFilter:o}=Oe(),u=p.useMemo(()=>e?e.filter(r).flatMap(c=>"value"in c?n(c):"range"in c?o(c):[]).filter(Boolean):[],[e,r,o,n]),a=p.useCallback(()=>{t({products:{filter:[]}})},[t]);return{filters:u,removeAll:a}}function _(e){if(typeof e=="number")return e;if(typeof e!="string")return;const t=Number(e);return isNaN(t)?void 0:t}function Y(e){var i,f,S;const{replaceFilter:t}=v(),{query:r,products:n}=C(g=>({query:g.query,products:g.response.products})),o=(i=n==null?void 0:n.facets)==null?void 0:i.find(g=>g.id===e);if(!o)return{min:0,max:0,range:[0,0],updateRange:()=>{}};const u=(S=(f=r.products)==null?void 0:f.filter)==null?void 0:S.find(g=>g.field===o.field),a=u!=null&&u.range?u.range[0]:void 0,c=typeof a=="object"&&("gte"in a||"lte"in a)?[_(a.gte),_(a.lte)]:[void 0,void 0],l="min"in o?Math.floor(o.min):0,s="max"in o?Math.ceil(o.max):0,d=([g,y])=>{const m=g!==void 0?Math.floor(g):void 0,h=y!==void 0?Math.ceil(y):void 0,R=m!==void 0,M=h!==void 0;(l===m||!R)&&(s===h||!M)?t(o.field,void 0):(l===m||!R)&&M?t(o.field,{lte:h.toString()}):(s===h||!M)&&R?t(o.field,{gte:m.toString()}):R&&M&&t(o.field,{gte:m.toString(),lte:h.toString()})};return{min:l,max:s,range:[c[0]??l,c[1]??s],updateRange:d}}function qe(e,t){const{min:r,max:n,range:o,updateRange:u}=Y(e),{filters:a}=J(),c=p.useMemo(()=>{var y;const i=a.find(m=>{var h;return(h=m==null?void 0:m.filter)==null?void 0:h.range});let f=null;if(i){const m=(y=i.filter.range)==null?void 0:y[0];f=[_(m==null?void 0:m.gte),_(m==null?void 0:m.lte)]}const S=[];let g=Math.floor(r/t)*t;for(;g<n;){const m=g+t,h=f&&f[0]===g&&f[1]===m;S.push({min:g,max:m,selected:h}),g=m}return S},[a,r,n,t]),l=i=>{u([i,o[1]])},s=i=>{u([o[0],i])},d=r!==o[0]||n!==o[1];return{min:r,max:n,range:o,updateRange:u,ranges:c,handleMinChange:l,handleMaxChange:s,isSelected:d}}function ze(){const{products:e,keywords:t}=C(r=>r.response);return{products:e??{hits:[],total:0},keywords:t??{hits:[],total:0}}}function je(){const e=C(r=>{var n;return(n=r.query.products)==null?void 0:n.filter});return p.useMemo(()=>e?e.reduce((r,n)=>r+(Array.isArray(n.value)?n.value.length:1),0):0,[e])}function T(e){return e&&!Number.isNaN(e)?e:0}function Ve(e,t){const{from:r,size:n,total:o}=C(s=>{var d,i,f,S,g;return{from:T(((d=s.query.products)==null?void 0:d.from)??0),size:T(((f=(i=s.response)==null?void 0:i.products)==null?void 0:f.size)??0),total:T(((g=(S=s.response)==null?void 0:S.products)==null?void 0:g.total)??0)}}),{updateSearch:u}=v(),a=r+n,c=[...e].reverse().filter(s=>s+t<o);return{from:r,to:a,total:o,size:n,sizeOptions:c,handleSizeChange:s=>{u({products:{size:s}})}}}function $e(e,t){return e.length!==t.length?!1:e.every(r=>t.find(n=>r.field===n.field&&r.order===n.order))}function De(e){var u,a;const t=C(c=>c.query),{updateSearch:r}=v();return{activeSort:((u=e.find(c=>{var l;return $e(c.value.sort,((l=t.products)==null?void 0:l.sort)||[])}))==null?void 0:u.id)??((a=e[0])==null?void 0:a.id),setSort:c=>{const l=e.find(s=>s.id===c);l&&r({products:{sort:l.value.sort}})}}}exports.AutocompletePageProvider=ae;exports.CategoryPageProvider=le;exports.SearchInput=ee;exports.SearchPageProvider=ge;exports.SerpElement=ne;exports.StoreContext=P;exports.createExtendableStore=K;exports.createStore=A;exports.defaultState=Q;exports.useActions=v;exports.useDecoratedSearchResults=Ie;exports.useFacet=Te;exports.useFacets=xe;exports.useNostoAppState=C;exports.usePersonalization=Ee;exports.useProductFilters=J;exports.useRange=Y;exports.useRangeSelector=qe;exports.useResponse=ze;exports.useSelectedFiltersCount=je;exports.useSizeOptions=Ve;exports.useSort=De;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const P=require("preact"),p=require("preact/hooks"),re=require("../search-BVJZK90N.cjs"),q=require("../index.es-DlUp67LT.cjs");var ne=" daum[ /]| deusu/| yadirectfetcher|(?:^|[^g])news(?!sapphire)|(?<! (?:channel/|google/))google(?!(app|/google| pixel))|(?<! cu)bots?(?:\\b|_)|(?<!(?:lib))http|(?<![hg]m)score|@[a-z][\\w-]+\\.|\\(\\)|\\.com\\b|\\btime/|\\||^<|^[\\w \\.\\-\\(?:\\):%]+(?:/v?\\d+(?:\\.\\d+)?(?:\\.\\d{1,10})*?)?(?:,|$)|^[^ ]{50,}$|^\\d+\\b|^\\w*search\\b|^\\w+/[\\w\\(\\)]*$|^active|^ad muncher|^amaya|^avsdevicesdk/|^biglotron|^bot|^bw/|^clamav[ /]|^client/|^cobweb/|^custom|^ddg[_-]android|^discourse|^dispatch/\\d|^downcast/|^duckduckgo|^email|^facebook|^getright/|^gozilla/|^hobbit|^hotzonu|^hwcdn/|^igetter/|^jeode/|^jetty/|^jigsaw|^microsoft bits|^movabletype|^mozilla/\\d\\.\\d\\s[\\w\\.-]+$|^mozilla/\\d\\.\\d\\s\\(compatible;?(?:\\s\\w+\\/\\d+\\.\\d+)?\\)$|^navermailapp|^netsurf|^offline|^openai/|^owler|^php|^postman|^python|^rank|^read|^reed|^rest|^rss|^snapchat|^space bison|^svn|^swcd |^taringa|^thumbor/|^track|^w3c|^webbandit/|^webcopier|^wget|^whatsapp|^wordpress|^xenu link sleuth|^yahoo|^yandex|^zdm/\\d|^zoom marketplace/|^{{.*}}$|adscanner/|analyzer|archive|ask jeeves/teoma|audit|bit\\.ly/|bluecoat drtr|browsex|burpcollaborator|capture|catch|check\\b|checker|chrome-lighthouse|chromeframe|classifier|cloudflare|convertify|cookiehubscan|crawl|cypress/|dareboost|datanyze|dejaclick|detect|dmbrowser|download|evc-batch/|exaleadcloudview|feed|firephp|functionize|gomezagent|headless|httrack|hubspot marketing grader|hydra|ibisbrowser|infrawatch|insight|inspect|iplabel|ips-agent|java(?!;)|jsjcw_scanner|library|linkcheck|mail\\.ru/|manager|measure|neustar wpm|node|nutch|offbyone|optimize|pageburst|pagespeed|parser|perl|phantomjs|pingdom|powermarks|preview|proxy|ptst[ /]\\d|retriever|rexx;|rigor|rss\\b|scanner\\.|scrape|server|sogou|sparkler/|speedcurve|spider|splash|statuscake|supercleaner|synapse|synthetic|tools|torrent|transcoder|url|validator|virtuoso|wappalyzer|webglance|webkit2png|whatcms/|zgrab",oe=/bot|crawl|http|lighthouse|scan|search|spider/i,z;function se(){if(z instanceof RegExp)return z;try{z=new RegExp(ne,"i")}catch{z=oe}return z}function ae(e){return!!e&&se().test(e)}function Q(){return ae(navigator.userAgent)}var ce=0;function w(e,r,t,n,o,c){r||(r={});var s,a,l=r;if("ref"in l)for(a in l={},r)a=="ref"?s=r[a]:l[a]=r[a];var i={type:e,props:l,key:t,ref:s,__k:null,__:null,__b:0,__e:null,__c:null,constructor:void 0,__v:--ce,__i:-1,__u:0,__source:o,__self:c};if(typeof e=="function"&&(s=e.defaultProps))for(a in s)l[a]===void 0&&(l[a]=s[a]);return P.options.vnode&&P.options.vnode(i),i}const L=e=>String(e)==="[object Object]";function F(e){if(!L(e))return!1;const r=e.constructor;if(r===void 0)return!0;const t=r.prototype;return!(!L(t)||!t.hasOwnProperty("isPrototypeOf"))}function T(...e){return e.reduce((r,t)=>E(r,t))}function B(...e){return e.reduce((r,t)=>E(r,t))}function E(e,r){return F(e)&&F(r)?Object.entries(r).reduce((t,[n,o])=>(t[n]=E(t[n],o),t),{...e}):F(e)?e:r}function R(e,r){if(e===r)return!0;if(e instanceof Date&&r instanceof Date)return e.getTime()===r.getTime();if(Array.isArray(e)&&Array.isArray(r))return e.length!==r.length?!1:e.every((t,n)=>R(t,r[n]));if(F(e)&&F(r)){const t=Object.entries(e);return t.length!==Object.keys(r).length?!1:t.every(([n,o])=>R(o,r[n]))}return!1}function K(e,r={}){const t=new Map;let n=B(e,r??{});const o=B(e,r);function c(u){n=u(n);for(const f of t.values())f(n)}function s(u){c(f=>({...f,...u}))}function a(){return n}function l(){return structuredClone(o)}function i(u,f){let m;t.set(f,g=>{const y=u(g);R(y,m)||(m=y,f(y))})}function d(u){t.delete(u)}return{updateState:s,getState:a,getInitialState:l,onChange:i,clearOnChange:d}}const H={loading:!0,query:{query:""},response:{query:""},initialized:!1};function A(e={}){return K(H,e)}const M=P.createContext(A());function v(e=ie){const r=p.useContext(M),[t,n]=p.useState(e(r.getState()));return r.onChange(e,n),p.useEffect(()=>()=>r.clearOnChange(n),[r]),t}const ie=e=>e;function W(e,...r){return r.reduce((t,n)=>(t[n]=e[n],t),{})}const I=P.createContext(null),G=()=>{const e=p.useContext(I);if(!e)throw new Error("useConfig must be used within a ConfigProvider");return e};function ue(e){return Array.from(new Set(e))}function le(e,r){return{...r,products:{facets:e==="autocomplete"?void 0:["*"],fields:de,...r.products},...r.keywords?{keywords:{...r.keywords,fields:ue([...fe,...r.keywords.fields??[]]),highlight:r.keywords.highlight??{preTag:"<strong>",postTag:"</strong>"}}}:{}}}const de=["productId","url","name","imageUrl","imageHash","thumbUrl","description","brand","variantId","availability","price","priceText","categoryIds","categories","customFields.key","customFields.value","priceCurrencyCode","datePublished","listPrice","unitPricingBaseMeasure","unitPricingUnit","unitPricingMeasure","googleCategory","gtin","ageGroup","gender","condition","alternateImageUrls","ratingValue","reviewCount","inventoryLevel","skus.id","skus.name","skus.price","skus.listPrice","skus.priceText","skus.url","skus.imageUrl","skus.inventoryLevel","skus.customFields.key","skus.customFields.value","skus.availability","pid","onDiscount","extra.key","extra.value","saleable","available","tags1","tags2","tags3"],fe=["keyword","_redirect"];function pe(...e){if(!e.every(r=>r==null))return e.filter(r=>Array.isArray(r)).reduce((r,t)=>r.concat(t),[])}const J="nosto.search.";function ge(e){var t;const r=`${J}${e}`;(t=window.performance)==null||t.mark(`${r}.start`)}function he(e){var t,n;const r=`${J}${e}`;(t=window.performance)==null||t.mark(`${r}.end`),(n=window.performance)==null||n.measure(r,`${r}.start`,`${r}.end`)}function _(e){return ge(e),()=>he(e)}function me(e,r,t){const n=JSON.stringify(r);try{console.info("Setting storage",e,n),t.setItem(e,n)}catch(o){console.warn(o)}}function ye(e,r){try{const t=r.getItem(e);if(t)return JSON.parse(t)}catch(t){console.warn(t)}}function ve(e,r){me(e,r,sessionStorage)}function Se(e){return ye(e,sessionStorage)}const Y="nosto:search:searchResult";function we(e,r,t){if(!e)return;ve(Y,{query:r,result:t})}function be(e,r){if(!e)return null;const t=Se(Y);if(!t||!ke(t))return null;const n=U(t.query);return R(U(r),n)?t.result:null}function U(e){return{accountId:e.accountId,customRules:e.customRules,explain:e.explain,keywords:e.keywords,products:e.products,query:e.query,redirect:e.redirect,rules:e.rules,segments:e.segments,sessionParams:e.sessionParams}}function ke(e){return typeof e=="object"&&e!==null&&"query"in e&&"result"in e}async function X(e,r,t){var i,d,u;const n=_("newSearch"),o=e.config.pageType,c=T(e.store.getInitialState().query,r),s=T(e.config.search,t,{track:o,redirect:o!=="autocomplete",isKeyword:!!(t!=null&&t.isKeyword)});e.store.updateState({query:c,loading:!0,initialized:!0});const a=o!=="autocomplete"&&e.config.persistentSearchCache,l=e.config.queryModifications({...c,products:{...c.products,filter:pe((d=(i=e.store.getInitialState().query)==null?void 0:i.products)==null?void 0:d.filter,(u=r.products)==null?void 0:u.filter)}},o);try{let f;const m=be(a,l);if(m)f=m;else{const g=le(o,l);f=await re.search(g,s),we(a,l,f)}e.store.updateState({response:f,loading:!1})}catch(f){console.error("Search action failed",f)}n()}async function O(e,r,t){const n=_("updateSearch"),o=T(e.store.getState().query,{products:{from:0}},r);await X(e,o,t),n()}async function Ce(e,r,t){var s;const n=_("replaceFilter"),o=(s=e.store.getState().query.products)==null?void 0:s.filter,c=t!==void 0?[{field:r,[typeof t=="object"?"range":"value"]:[t]}]:[];await O(e,{products:{filter:[...(o==null?void 0:o.filter(a=>a.field!==r))??[],...c]}}),n()}async function Pe(e,r,t,n){var l,i;const o=_("toggleProductFilter"),c=(l=e.store.getState().query.products)==null?void 0:l.filter,s=c==null?void 0:c.find(d=>d.value instanceof Array&&d.field===r),a=s!=null&&s.value?{...s,value:[...s.value.filter(d=>!R(d,t)),...n?[t]:[]]}:n?{field:r,value:[t]}:void 0;await O(e,{products:{filter:[...(c==null?void 0:c.filter(d=>d!==s))??[],...(i=a==null?void 0:a.value)!=null&&i.length?[a]:[]]}}),o()}function k(){const e=G(),r=p.useContext(M),t=p.useMemo(()=>({config:e,store:r}),[e,r]),n=p.useCallback((a,l)=>X(t,a,l),[t]),o=p.useCallback((a,l)=>O(t,a,l),[t]),c=p.useCallback((a,l,i)=>Pe(t,a,l,i),[t]),s=p.useCallback((a,l)=>Ce(t,a,l),[t]);return{newSearch:n,updateSearch:o,toggleProductFilter:c,replaceFilter:s}}function Fe({from:e,size:r,pageSize:t}){return Q()?{products:{from:e+t}}:{products:{size:r+t}}}function j(e=24){const{from:r,size:t}=v(c=>{var s,a;return{from:((s=c.query.products)==null?void 0:s.from)??0,size:((a=c.query.products)==null?void 0:a.size)??0}}),{updateSearch:n}=k();return{loadMore:p.useCallback(async()=>{await n(Fe({from:r,size:t,pageSize:e}))},[r,t,e,n])}}function Me({pageSize:e}){const{loadMore:r}=j(e);return w("button",{onClick:r,children:"More results"})}function Z(e,r){var c,s,a;const t=((c=r.products)==null?void 0:c.total)??0,n=((s=e.products)==null?void 0:s.from)??0,o=((a=e.products)==null?void 0:a.size)??0;return t>0&&t>n+o}function ze(){return!!(window.IntersectionObserver&&window.IntersectionObserverEntry&&"intersectionRatio"in window.IntersectionObserverEntry.prototype)}function Re({children:e,loadMoreComponent:r,pageSize:t}){const{loading:n,query:o,response:c}=v(a=>W(a,"loading","query","response")),s=!n&&Z(o,c);return w(P.Fragment,{children:[e,s&&(r?w(r,{pageSize:t}):w(Me,{pageSize:t}))]})}function Ae({children:e,pageSize:r}){const t=p.useRef(null),{query:n,response:o}=v(s=>W(s,"query","response")),{loadMore:c}=j(r);return p.useEffect(()=>{let s,a;return Z(n,o)&&(s=t.current,a=new IntersectionObserver(l=>{const i=l[0];i!=null&&i.isIntersecting&&c()}),s&&a.observe(s)),()=>{s&&a.unobserve(s)}},[o]),w(P.Fragment,{children:[e,w("div",{ref:t,style:{height:"1px"}})]})}const xe=!Q()&&ze()?Ae:Re;function Ie(e){return e.type==="input"}function _e(e){return!!e&&typeof e=="object"&&"type"in e&&"props"in e}function $(e,r={depth:0}){const{children:t}=e;return P.toChildArray(t).map(n=>{if(!_e(n))return n;const o=e.updateElement(n,r);return o===null?null:(o.props={...o.props,children:$({...e,children:o.props.children},{depth:r.depth+1})},o)})}function Ne({children:e,onSearchInput:r}){return $({children:e,updateElement:t=>(!Ie(t)||t.props.type!=="search"||(t.props={...t.props,onInput:n=>{n.target instanceof HTMLInputElement&&r(n.target)}}),t)})}const Te="nosto:search:scrollPos";function qe(){window.sessionStorage.setItem(Te,window.scrollY.toString())}function Ee({children:e,hit:r,onClick:t}){const{pageType:n}=G(),o=n==="autocomplete"?void 0:n;return $({children:e,updateElement:(c,s)=>(s.depth>0||(c.props={...c.props,onClick:a=>{r&&o&&q.s(l=>l.recordSearchClick(o,r)),qe(),typeof t=="function"&&t(a)}}),c)})}function V(){p.useEffect(()=>{const e=window.setTimeout(()=>{console.error("Nosto client script has not loaded after 3 seconds.")},3e3);q.s(()=>{window.clearTimeout(e)})},[])}const D={defaultCurrency:"EUR",queryModifications:e=>e},Oe={...D};function je(e){return{pageType:"autocomplete",...Oe,...e}}function $e({config:e,store:r,children:t}){const n=r??A();return V(),w(I,{value:je(e),children:w(M,{value:n,children:t})})}const Ve={...D,persistentSearchCache:!1,preservePageScroll:!1};function De(e){return{pageType:"category",...Ve,...e}}function Le({config:e,store:r,children:t}){const n=r??A();return V(),w(I,{value:De(e),children:w(M,{value:n,children:t})})}const Be={...D,persistentSearchCache:!1,preservePageScroll:!1};function Ue(e={}){return{pageType:"serp",...Be,...e}}function Qe({config:e,store:r,children:t}){const n=r??A();return V(),w(I,{value:Ue(e),children:w(M,{value:n,children:t})})}function Ke(e){const r=v(t=>t.response);return e&&Array.isArray(e)||e&&F(e)?e:r}function He(e){var s;const r=((s=e.data)==null?void 0:s.filter(a=>a.selected).length)??0,[t,n]=p.useState(r>0),{toggleProductFilter:o}=k();return{active:t,selectedFiltersCount:r,toggleActive:()=>{n(!t)},toggleProductFilter:o}}function We(){const{loading:e,facets:r}=v(t=>{var n,o;return{loading:t.loading,facets:((o=(n=t.response)==null?void 0:n.products)==null?void 0:o.facets)??[]}});return{loading:e,facets:r}}function Ge(e,r){const t=r-e;return!isNaN(t)&&t>0?new Array(r-e).fill(void 0).map((n,o)=>o+e):[]}function Je(e){const{query:r,products:t}=v(n=>({query:n.query,products:n.response.products}));return p.useMemo(()=>{var C;if(!t)return{totalPages:0,resultsFrom:0,resultsTo:0,pages:[]};const n=((C=r.products)==null?void 0:C.from)??0,o=(e==null?void 0:e.width)??1/0,c=Math.max(Math.floor(o-1)/2,1),s=t.size>0?Math.floor(n/t.size)+1:1,a=t.size>0?Math.ceil(t.total/t.size):0,l=b=>b>=s-c&&b<=s+c,i=n+1,d=Math.min(n+t.total,t.total),u={from:n,page:s,current:!0},f=b=>({from:(b-1)*t.size,page:b,current:b===s}),m=s>1?f(s-1):void 0,g=s<a?f(s+1):void 0,y=c===1/0||s-c-1>1?f(1):void 0,h=c===1/0||s+c+1<a?f(a):void 0,S=Ge(1,a+1).filter(l).map(f);return{totalPages:a,resultsFrom:i,resultsTo:d,current:u,prev:m,next:g,first:y,last:h,pages:S}},[r,t,e==null?void 0:e.width])}function Ye(){const[e,r]=p.useState([]),[t,n]=p.useState([]);return p.useEffect(()=>{q.s(async o=>{const{products:c,segments:s}=await o.getSearchSessionParams();r(s??[]),n((c==null?void 0:c.personalizationBoost)??[])})},[]),{segments:e,boost:t}}function Xe(){const{facets:e}=v(i=>{var d;return{facets:((d=i.response.products)==null?void 0:d.facets)??[]}}),{replaceFilter:r,toggleProductFilter:t}=k(),n=p.useCallback(i=>{const d=e==null?void 0:e.find(u=>u.type==="stats"&&u.field===i);if(d&&"min"in d&&"max"in d)return d},[e]),o=p.useCallback(i=>{var d;return((d=e==null?void 0:e.find(u=>u.field===i))==null?void 0:d.name)??i},[e]),c=p.useCallback(i=>"field"in i&&(i.value instanceof Array||i.range instanceof Array),[]),s=p.useCallback(i=>{var d;return{...i,range:(d=i.range)==null?void 0:d.map(u=>({gt:u.gt?Number(u.gt):u.gt,gte:u.gte?Number(u.gte):u.gte,lt:u.lt?Number(u.lt):u.lt,lte:u.lte?Number(u.lte):u.lte}))}},[]),a=p.useCallback(i=>(i.value??[]).map(u=>({value:u,field:i.field,name:o(i.field),filter:s(i),remove:()=>{t(i.field,u,!1)}})),[s,o,t]),l=p.useCallback(i=>(i.range??[]).map(u=>{var g,y;const f=u.gte??u.gt??((g=n(i.field))==null?void 0:g.min),m=u.lte??u.lt??((y=n(i.field))==null?void 0:y.max);if(f!==void 0&&m!==void 0)return{value:`${f} - ${m}`,field:i.field,name:o(i.field),filter:s(i),remove:()=>{r(i.field,void 0)}}}).filter(Boolean),[s,n,o,r]);return{selectFilters:c,toValueFilter:a,toRangeFilter:l}}function ee(){const{filter:e}=v(a=>{var l;return{filter:((l=a.query.products)==null?void 0:l.filter)??[]}}),{updateSearch:r}=k(),{selectFilters:t,toValueFilter:n,toRangeFilter:o}=Xe(),c=p.useMemo(()=>e?e.filter(t).flatMap(a=>"value"in a?n(a):"range"in a?o(a):[]).filter(Boolean):[],[e,t,o,n]),s=p.useCallback(()=>{r({products:{filter:[]}})},[r]);return{filters:c,removeAll:s}}function x(e){if(typeof e=="number")return e;if(typeof e!="string")return;const r=Number(e);return isNaN(r)?void 0:r}function te(e){var u,f,m;const{replaceFilter:r}=k(),{query:t,products:n}=v(g=>({query:g.query,products:g.response.products})),o=(u=n==null?void 0:n.facets)==null?void 0:u.find(g=>g.id===e);if(!o)return{min:0,max:0,range:[0,0],updateRange:()=>{}};const c=(m=(f=t.products)==null?void 0:f.filter)==null?void 0:m.find(g=>g.field===o.field),s=c!=null&&c.range?c.range[0]:void 0,a=typeof s=="object"&&("gte"in s||"lte"in s)?[x(s.gte),x(s.lte)]:[void 0,void 0],l="min"in o?Math.floor(o.min):0,i="max"in o?Math.ceil(o.max):0,d=([g,y])=>{const h=g!==void 0?Math.floor(g):void 0,S=y!==void 0?Math.ceil(y):void 0,C=h!==void 0,b=S!==void 0;(l===h||!C)&&(i===S||!b)?r(o.field,void 0):(l===h||!C)&&b?r(o.field,{lte:S.toString()}):(i===S||!b)&&C?r(o.field,{gte:h.toString()}):C&&b&&r(o.field,{gte:h.toString(),lte:S.toString()})};return{min:l,max:i,range:[a[0]??l,a[1]??i],updateRange:d}}function Ze(e,r){const{min:t,max:n,range:o,updateRange:c}=te(e),{filters:s}=ee(),a=p.useMemo(()=>{var y;const u=s.find(h=>{var S;return(S=h==null?void 0:h.filter)==null?void 0:S.range});let f=null;if(u){const h=(y=u.filter.range)==null?void 0:y[0];f=[x(h==null?void 0:h.gte),x(h==null?void 0:h.lte)]}const m=[];let g=Math.floor(t/r)*r;for(;g<n;){const h=g+r,S=f&&f[0]===g&&f[1]===h;m.push({min:g,max:h,selected:S}),g=h}return m},[s,t,n,r]),l=u=>{c([u,o[1]])},i=u=>{c([o[0],u])},d=t!==o[0]||n!==o[1];return{min:t,max:n,range:o,updateRange:c,ranges:a,handleMinChange:l,handleMaxChange:i,isSelected:d}}function et(){const{products:e,keywords:r}=v(t=>t.response);return{products:e??{hits:[],total:0},keywords:r??{hits:[],total:0}}}function tt(){const e=v(t=>{var n;return(n=t.query.products)==null?void 0:n.filter});return p.useMemo(()=>e?e.reduce((t,n)=>t+(Array.isArray(n.value)?n.value.length:1),0):0,[e])}function N(e){return e&&!Number.isNaN(e)?e:0}function rt(e,r){const{from:t,size:n,total:o}=v(i=>{var d,u,f,m,g;return{from:N(((d=i.query.products)==null?void 0:d.from)??0),size:N(((f=(u=i.response)==null?void 0:u.products)==null?void 0:f.size)??0),total:N(((g=(m=i.response)==null?void 0:m.products)==null?void 0:g.total)??0)}}),{updateSearch:c}=k(),s=t+n,a=[...e].reverse().filter(i=>i+r<o);return{from:t,to:s,total:o,size:n,sizeOptions:a,handleSizeChange:i=>{c({products:{size:i}})}}}function nt(e,r){return e.length!==r.length?!1:e.every(t=>r.find(n=>t.field===n.field&&t.order===n.order))}function ot(e){var c,s;const r=v(a=>a.query),{updateSearch:t}=k();return{activeSort:((c=e.find(a=>{var l;return nt(a.value.sort,((l=r.products)==null?void 0:l.sort)||[])}))==null?void 0:c.id)??((s=e[0])==null?void 0:s.id),setSort:a=>{const l=e.find(i=>i.id===a);l&&t({products:{sort:l.value.sort}})}}}exports.AutocompletePageProvider=$e;exports.CategoryPageProvider=Le;exports.InfiniteScroll=xe;exports.SearchInput=Ne;exports.SearchPageProvider=Qe;exports.SerpElement=Ee;exports.StoreContext=M;exports.createExtendableStore=K;exports.createStore=A;exports.defaultState=H;exports.useActions=k;exports.useDecoratedSearchResults=Ke;exports.useFacet=He;exports.useFacets=We;exports.useLoadMore=j;exports.useNostoAppState=v;exports.usePagination=Je;exports.usePersonalization=Ye;exports.useProductFilters=ee;exports.useRange=te;exports.useRangeSelector=Ze;exports.useResponse=et;exports.useSelectedFiltersCount=tt;exports.useSizeOptions=rt;exports.useSort=ot;
@@ -1,4 +1,5 @@
1
1
  /** @module preact */
2
+ export { InfiniteScroll } from './src/components/InfiniteScroll/InfiniteScroll';
2
3
  export { SearchInput } from './src/components/SearchInput';
3
4
  export { SerpElement } from './src/components/SerpElement';
4
5
  export type { PublicAutocompleteConfig as AutocompleteConfig } from './src/config/pages/autocomplete/config';
@@ -11,7 +12,9 @@ export { useActions } from './src/hooks/useActions';
11
12
  export { useDecoratedSearchResults } from './src/hooks/useDecoratedSearchResults';
12
13
  export { useFacet } from './src/hooks/useFacet';
13
14
  export { useFacets } from './src/hooks/useFacets';
15
+ export { useLoadMore } from './src/hooks/useLoadMore/useLoadMore';
14
16
  export { useNostoAppState } from './src/hooks/useNostoAppState';
17
+ export { type Page, usePagination } from './src/hooks/usePagination';
15
18
  export { usePersonalization } from './src/hooks/usePersonalization';
16
19
  export { useProductFilters } from './src/hooks/useProductFilters/useProductFilters';
17
20
  export { useRange } from './src/hooks/useRange';