PageSourceSearch

https://www.yoco.com/components-StoryBlok-V2-Layout-ProductCatalogueSection-2da633696188c4994d4b.js

js yoco.com collected 2026-09-24 08:41:34 UTC 32,591 bytes, 2 lines download raw bytes

1!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"c83f02910c831d5c731b90dcdd19f361e85fc8b6"};var t=(new e.Error).stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="ce90bf36-4118-41fa-9f76-465aec1a9d2c",e._sentryDebugIdIdentifier="sentry-dbid-ce90bf36-4118-41fa-9f76-465aec1a9d2c")}catch(e){}}(),(self.__LOADABLE_LOADED_CHUNKS__=self.__LOADABLE_LOADED_CHUNKS__||[]).push([[8329],{4287:function(e,t,r){r.d(t,{S:function(){return m}});var n=r(46942),s=r.n(n),l=r(30261),a=r(96540),o=r(71885),i=r(96706),c=r(80542),u=r(82613),d=r(3409);const m=e=>{let{id:t,name:r,label:n,image:l,className:o,isChecked:m,disabled:h=!1,value:p,onChange:f}=e;return a.createElement("div",{className:s()("group relative",o)},a.createElement("label",{htmlFor:t,className:s()("flex cursor-pointer items-center",{"rounded-[10px] border border-solid pl-16":l,"border-blue":m,"border-charcoal/10 group-hover:border-charcoal":!m})},a.createElement("input",{type:"checkbox",id:t,name:r,checked:m,onChange:f,disabled:h,className:"peer absolute opacity-0",value:p}),a.createElement("div",{className:s()("h-20 w-20 rounded-[6px] border",m?"border-blue bg-blue":"border-charcoal/10 focus:border-charcoal group-hover:border-charcoal peer-focus:border-charcoal")},a.createElement(u.A,{className:s()("ml-[3px] mt-[5px] h-[8px] w-[11px] stroke-white stroke-2 duration-200",m?"opacity-1":"opacity-0"),alt:"checkbox-check"})),n&&a.createElement(d.A,{color:i.Q.Black,text:n,font:"grotesk",size:"body-md",weight:l?"medium":"book",className:"ml-10 mt-[2px]"}),l?a.createElement(c.A,{image:l,alt:n||"checkbox image",width:100,className:"ml-auto flex overflow-hidden rounded-[9px]",aspectRatio:"4:3",quality:80,loadType:"eager"}):null))};t.A=e=>{let{label:t,id:r,image:n,className:s,inputClassName:i,disabled:c=!1,"data-testid":u}=e;const[d,h,p]=(0,l.Mt)(r),f=!!d.value,g=h.touched&&h.error;return(0,a.useEffect)((()=>{p.setTouched(!1)}),[]),a.createElement(a.Fragment,null,a.createElement(m,{id:r,label:t,image:n,name:d.name,value:d.value,className:s,isChecked:f,disabled:c,onChange:e=>{p.setValue(e.target.checked),p.setTouched(!0),d.onChange(e)}}),g&&h.error?a.createElement(o.A,{className:i,error:h.error,"data-testid":"input-error-"+u}):null)}},7816:function(e,t,r){r.d(t,{t:function(){return l}});var n=r(6251),s=r(80381);const l=e=>{var t,r;const l=(0,n.DP)(e)?e:void 0,a=(0,n.DP)(e)?void 0:e,o=e.thumbnail,i=(0,n.Ih)(null==l?void 0:l.price),c=(0,n.Ih)(null==l?void 0:l.originalPrice),u=null!==(t=i?(0,s.nL)(i,c):e.badge)&&void 0!==t?t:void 0,d=i&&c&&c>i?c:void 0;return{productName:e.name,imageUrl:null!==(r=null==o?void 0:o.filename)&&void 0!==r?r:"",imageAlt:(null==o?void 0:o.alt)||e.name+"-image",priceValue:i,priceLabelOverride:null==a?void 0:a.priceLabelOverride,shortDescription:e.shortDescription,ctaText:e.ctaText,ctaLink:e.ctaLink,learnMoreButtonUrl:e.detailsLink,filterTags:e.filterTags,badge:u,wasPrice:d,purchasableItem:l,reviewSkus:null==l?void 0:l.reviewSkus}}},42023:function(e,t,r){r.d(t,{I:function(){return y}});r(26910);var n=r(54506),s=r(77539),l=r(51278),a=r(36964),o=r(94481),i=r(55609),c=r(72854),u=r(96540);const d=/^settings\/[^/]+\/internal\//,m=["product","bundle","onlineProduct"],h=e=>"object"==typeof e&&null!==e,p=e=>{if(!h(e))return!1;const t=e.content;return!!h(t)&&("string"==typeof e.uuid&&"string"==typeof e.full_slug&&("product"===t.component||"bundle"===t.component||"onlineProduct"===t.component))},f=e=>(t,r)=>{const n=e(t),s=e(r);return n!==s?void 0===n?1:void 0===s?-1:n-s:t.storyblokUuid.localeCompare(r.storyblokUuid)},g=(e,t)=>{const r=e=>{const t=m.indexOf(e.item.type);return-1===t?m.length:t};return r(e)-r(t)||e.fullSlug.localeCompare(t.fullSlug)},b=f((e=>e.orderPriority)),v=f((e=>{var t;return null!==(t=e.heroOrderPriority)&&void 0!==t?t:e.orderPriority})),y=function(e){void 0===e&&(e=!1);const t=(0,s.LA)(),r=(0,l.q)(),m=(0,o.bI)(),h=(0,a._)(),{0:f,1:y}=(0,u.useState)(),w=(0,u.useCallback)((e=>{const t=e.content,r=t.uuid||e.uuid;if("product"===t.component){const e=m(t.sku,t.storefront);return e?(0,i.consolidateProduct)(t,e,r):void 0}if("bundle"===t.component){const e=h(t.code,t.storefront);return e?(0,i.consolidateBundle)(t,e,r):void 0}return(0,i.consolidateOnlineProduct)(t,r)}),[m,h]);return(0,u.useEffect)((()=>
1{if(!t||!(0,c.A)())return;(async()=>{const e=[];for(const r of i.STORYBLOK_ITEM_PATHS){const n=await t.getAll("cdn/stories",{starts_with:r,version:"draft",per_page:100});for(const t of Array.isArray(n)?n:[]){if(!p(t))continue;const r=w(t);r&&e.push({item:r,isInternal:d.test(t.full_slug),fullSlug:t.full_slug})}}y(e)})().catch((e=>{console.error("Error loading draft shop items: ",e)}))}),[t,w]),(0,u.useMemo)((()=>{const t=null!=f?f:r;if(e){const e=t.filter((e=>e.isInternal)).sort(g).map((e=>e.item));return{heroItems:e,catalogueItems:e}}const s=t.map((e=>e.item)).filter((e=>e.isListed));return{heroItems:s.filter((e=>e.showInHero)).sort(v),catalogueItems:(0,n.A)(s).sort(b)}}),[f,r,e])}},60277:function(e,t,r){r.r(t),r.d(t,{default:function(){return ue}});var n=r(96540);const s=function(){try{const e="nuqs-localStorage-test";if("undefined"==typeof localStorage)return!1;localStorage.setItem(e,e);const t=localStorage.getItem(e)===e;return localStorage.removeItem(e),t&&(localStorage.getItem("debug")||"").includes("nuqs")}catch{return!1}}();function l(e,...t){if(!s)return;const r=function(e,...t){return e.replace(/%[sfdO]/g,(e=>{const r=t.shift();return"%O"===e&&r?JSON.stringify(r).replace(/"([^"]+)":/g,"$1:"):String(r)}))}(e,...t);performance.mark(r);try{console.log(e,...t)}catch{console.log(r)}}const a={303:"Multiple adapter contexts detected. This might happen in monorepos.",404:"nuqs requires an adapter to work with your framework.",409:"Multiple versions of the library are loaded. This may lead to unexpected behavior. Currently using `%s`, but `%s` (via the %s adapter) was about to load on top.",414:"Max safe URL length exceeded. Some browsers may not be able to accept this URL. Consider limiting the amount of state stored in the URL.",422:"Invalid options combination: `limitUrlUpdates: debounce` should be used in SSR scenarios, with `shallow: false`",429:"URL update rate-limited by the browser. Consider increasing `throttleMs` for key(s) `%s`. %O",500:"Empty search params cache. Search params can't be accessed in Layouts.",501:"Search params cache already populated. Have you called `parse` twice?"};function o(e){return`[nuqs] ${a[e]}\n  See https://err.47ng.com/NUQS-${e}`}function i(e){if(0===e.size)return"";const t=[];for(const[s,l]of e.entries()){const e=s.replace(/#/g,"%23").replace(/&/g,"%26").replace(/\+/g,"%2B").replace(/=/g,"%3D").replace(/\?/g,"%3F");t.push(`${e}=${r=l,r.replace(/%/g,"%25").replace(/\+/g,"%2B").replace(/ /g,"+").replace(/#/g,"%23").replace(/&/g,"%26").replace(/"/g,"%22").replace(/'/g,"%27").replace(/`/g,"%60").replace(/</g,"%3C").replace(/>/g,"%3E").replace(/[\x00-\x1F]/g,(e=>encodeURIComponent(e)))}`)}var r;const n="?"+t.join("&");return n}const c=(0,n.createContext)({useAdapter(){throw new Error(o(404))}});c.displayName="NuqsAdapterContext",s&&"undefined"!=typeof window&&(window.__NuqsAdapterContext&&window.__NuqsAdapterContext!==c&&console.error(o(303)),window.__NuqsAdapterContext=c);const u=()=>(0,n.useContext)(c).defaultOptions,d=()=>(0,n.useContext)(c).processUrlSearchParams;const m={method:"throttle",timeMs:function(){if("undefined"==typeof window)return 50;if(!Boolean(window.GestureEvent))return 50;try{const e=navigator.userAgent?.match(/version\/([\d\.]+) safari/i);return parseFloat(e[1])>=17?120:320}catch{return 320}}()};function h(){const e=new Map;return{all:e,on(t,r){const n=e.get(t)||[];return n.push(r),e.set(t,n),()=>this.off(t,r)},off(t,r){const n=e.get(t);n&&e.set(t,n.filter((e=>e!==r)))},emit(t,r){const n=e.get(t);n?.forEach((e=>e(r)))}}}function p(e,t,r){const n=setTimeout((function(){e(),r.removeEventListener("abort",s)}),t);function s(){clearTimeout(n),r.removeEventListener("abort",s)}r.addEventListener("abort",s)}function f(){const e=Promise;if(Promise.hasOwnProperty("withResolvers"))return Promise.withResolvers();let t=()=>{},r=()=>{};return{promise:new e(((e,n)=>{t=e,r=n})),resolve:t,reject:r}}function g(){return new URLSearchParams(location.search)}var b=class{updateMap=new Map;options={history:"replace",scroll:!1,shallow:!0};timeMs=m.timeMs;transitions=new Set;resolvers=null;controller=null;lastFlushedAt=0;push({key:e,query:t,options:r},n=m.timeMs){l("[nuqs gtq] Enqueueing %s=%s %O",e,t,r),this.updateMap.set(e,t),"push"===r.history&&(this.options.history="push"),r.scroll&&(this.options.scroll=!0),!1===r.
1shallow&&(this.options.shallow=!1),r.startTransition&&this.transitions.add(r.startTransition),(!Number.isFinite(this.timeMs)||n>this.timeMs)&&(this.timeMs=n)}getQueuedQuery(e){return this.updateMap.get(e)}flush({getSearchParamsSnapshot:e=g,rateLimitFactor:t=1,...r},n){if(this.controller??=new AbortController,!Number.isFinite(this.timeMs))return l("[nuqs gtq] Skipping flush due to throttleMs=Infinity"),Promise.resolve(e());if(this.resolvers)return this.resolvers.promise;this.resolvers=f();const s=()=>{this.lastFlushedAt=performance.now();const[t,s]=this.applyPendingUpdates({...r,autoResetQueueOnUpdate:r.autoResetQueueOnUpdate??!0,getSearchParamsSnapshot:e},n);null===s?this.resolvers.resolve(t):this.resolvers.reject(t),this.resolvers=null};return p((()=>{const e=performance.now()-this.lastFlushedAt,r=this.timeMs,n=t*Math.max(0,r-e);l("[nuqs gtq] Scheduling flush in %f ms. Throttled at %f ms (x%f)",n,r,t),0===n?s():p(s,n,this.controller.signal)}),0,this.controller.signal),this.resolvers.promise}abort(){return this.controller?.abort(),this.controller=new AbortController,this.resolvers?.resolve(new URLSearchParams),this.resolvers=null,this.reset()}reset(){const e=Array.from(this.updateMap.keys());return l("[nuqs gtq] Resetting queue %s",JSON.stringify(Object.fromEntries(this.updateMap))),this.updateMap.clear(),this.transitions.clear(),this.options={history:"replace",scroll:!1,shallow:!0},this.timeMs=m.timeMs,e}applyPendingUpdates(e,t){const{updateUrl:r,getSearchParamsSnapshot:n}=e;let s=n();if(l("[nuqs gtq] Applying %d pending update(s) on top of %s",this.updateMap.size,s.toString()),0===this.updateMap.size)return[s,null];const a=Array.from(this.updateMap.entries()),i={...this.options},c=Array.from(this.transitions);e.autoResetQueueOnUpdate&&this.reset(),l("[nuqs gtq] Flushing queue %O with options %O",a,i);for(const[l,o]of a)null===o?s.delete(l):s.set(l,o);t&&(s=t(s));try{return function(e,t){let r=t;for(let n=e.length-1;n>=0;n--){const t=e[n];if(!t)continue;const s=r;r=()=>t(s)}r()}(c,(()=>{r(s,i)})),[s,null]}catch(u){return console.error(o(429),a.map((([e])=>e)).join(),u),[s,u]}}};const v=new b;var y=class{callback;resolvers=f();controller=new AbortController;queuedValue=void 0;constructor(e){this.callback=e}abort(){this.controller.abort(),this.queuedValue=void 0}push(e,t){return this.queuedValue=e,this.controller.abort(),this.controller=new AbortController,p((()=>{const t=this.resolvers;try{l("[nuqs dq] Flushing debounce queue",e);const r=this.callback(e);l("[nuqs dq] Reset debounce queue %O",this.queuedValue),this.queuedValue=void 0,this.resolvers=f(),r.then((e=>t.resolve(e))).catch((e=>t.reject(e)))}catch(r){this.queuedValue=void 0,t.reject(r)}}),t,this.controller.signal),this.resolvers.promise}};const w=new class{throttleQueue;queues=new Map;queuedQuerySync=h();constructor(e=new b){this.throttleQueue=e}useQueuedQueries(e){return function(e,t,r){const s=(0,n.useCallback)((()=>{const t=Object.fromEntries(e.map((e=>[e,r(e)])));return[JSON.stringify(t),t]}),[e.join(","),r]),l=(0,n.useRef)(null);null===l.current&&(l.current=s());const a=(0,n.useCallback)((r=>{const n=e.map((e=>t(e,r)));return()=>n.forEach((e=>e()))}),[e.join(","),t]);return(0,n.useSyncExternalStore)(a,(()=>{const[e,t]=s();return l.current[0]===e?l.current[1]:(l.current=[e,t],t)}),(()=>l.current[1]))}(e,((e,t)=>this.queuedQuerySync.on(e,t)),(e=>this.getQueuedQuery(e)))}push(e,t,r){if(!Number.isFinite(t)){const e=r.getSearchParamsSnapshot??g;return Promise.resolve(e())}const n=e.key;if(!this.queues.has(n)){l("[nuqs dqc] Creating debounce queue for `%s`",n);const e=new y((e=>(this.throttleQueue.push(e),this.throttleQueue.flush(r).finally((()=>{const t=this.queues.get(e.key)?.queuedValue;void 0===t&&(l("[nuqs dqc] Cleaning up empty queue for `%s`",e.key),this.queues.delete(e.key)),this.queuedQuerySync.emit(e.key)})))));this.queues.set(n,e)}l("[nuqs dqc] Enqueueing debounce update %O",e);const s=this.queues.get(n).push(e,t);return this.queuedQuerySync.emit(n),s}abort(e){const t=this.queues.get(e);return t?(l("[nuqs dqc] Aborting debounce queue %s=%s",e,t.queuedValue?.query),this.queues.delete(e),t.abort(),this.queuedQuerySync.emit(e),e=>(e.then(t.resolvers.resolve,t.resolvers.reject),e)):e=>e}abortAll(){for(const[e,t]of this.queues.entries())l("[nuqs dqc] Aborting debounce queue %s=%s",e,t.queuedValue?.query),t.abort(),t.resolvers.resolve(new URLSearchParams),this.queuedQuerySync.emit(e);this.queues.clear()}getQueuedQuery(e){const t=this.queues.get(e)?.queuedValue?.query;return void 0!==t?t:this.throttleQueue.getQueuedQuery(e)}}(v);function x(e,t,r){return n=>{if(!(0===t.length||t.some((t=>n.get(t)!==e.get(t)))))return l("[nuqs `%s`] no change, returning previous",t.join(","),n),n;const s=k(e,t,r);return l("[nuqs `%s`] subbed search params change\n  from %O\n  to   %O",t.join(","),n,s),s}}function k(e,t,r){if(0===t.length)return e;const n=r?new URLSearchParams(e):e;for(const s of e.keys())t.includes(s)||n.delete(s);return n}const E="__nuqs__";const C=h();const S=(0,n.createContext)({fullPageNavigationOnShallowFalseUpdates:!1});const q=(O=function(e){const{fullPageNavigationOnShallowFalseUpdates:t}
1=(0,n.useContext)(S),[r,s]=(0,n.useState)((()=>"undefined"==typeof location?new URLSearchParams:k(new URLSearchParams(location.search),e,!1)));return(0,n.useEffect)((()=>{const t=()=>{s(x(new URLSearchParams(location.search),e,!1))},r=t=>{s(x(t,e,!0))};return C.on("update",r),window.addEventListener("popstate",t),()=>{C.off("update",r),window.removeEventListener("popstate",t)}}),[e.join("&")]),{searchParams:r,updateUrl:(0,n.useMemo)((()=>function(e){return function(t,r){const n=new URL(location.href);n.search=i(t),l("[nuqs react] Updating url: %s",n),e&&!1===r.shallow?("push"===r.history?location.assign:location.replace).call(location,n):("push"===r.history?history.pushState:history.replaceState).call(history,history.state,E,n),C.emit("update",t),!0===r.scroll&&window.scrollTo({top:0})}}(t)),[t])}},({children:e,defaultOptions:t,processUrlSearchParams:r,...s})=>(0,n.createElement)(c.Provider,{...s,value:{useAdapter:O,defaultOptions:t,processUrlSearchParams:r}},e));var O;function N({children:e,fullPageNavigationOnShallowFalseUpdates:t=!1,...r}){return(0,n.createElement)(S.Provider,{value:{fullPageNavigationOnShallowFalseUpdates:t}},(0,n.createElement)(q,{...r,children:e}))}var A=r(54506),M=r(98587);function F(e,t,r){try{return e(t)}catch(n){return function(e,...t){s&&console.warn(e,...t)}("[nuqs] Error while parsing value `%s`: %O"+(r?" (for key `%s`)":""),t,n,r),null}}function U(e){function t(t){if(void 0===t)return null;let r="";if(Array.isArray(t)){if(void 0===t[0])return null;r=t[0]}return"string"==typeof t&&(r=t),F(e.parse,r)}return{eq:(e,t)=>e===t,...e,parseServerSide:t,withDefault(e){return{...this,defaultValue:e,parseServerSide(r){return t(r)??e}}},withOptions(e){return{...this,...e}}}}const P=U({parse:e=>e,serialize:String});U({parse:e=>{const t=parseInt(e);return t==t?t:null},serialize:e=>""+Math.round(e)}),U({parse:e=>{const t=parseInt(e);return t==t?t-1:null},serialize:e=>""+Math.round(e+1)}),U({parse:e=>{const t=parseInt(e,16);return t==t?t:null},serialize:e=>{const t=Math.round(e).toString(16);return(1&t.length?"0":"")+t}}),U({parse:e=>{const t=parseFloat(e);return t==t?t:null},serialize:String}),U({parse:e=>"true"===e,serialize:String});function j(e,t){return e.valueOf()===t.valueOf()}U({parse:e=>{const t=parseInt(e);return t==t?new Date(t):null},serialize:e=>""+e.valueOf(),eq:j}),U({parse:e=>{const t=new Date(e);return t.valueOf()==t.valueOf()?t:null},serialize:e=>e.toISOString(),eq:j}),U({parse:e=>{const t=new Date(e.slice(0,10));return t.valueOf()==t.valueOf()?t:null},serialize:e=>e.toISOString().slice(0,10),eq:j});const Q=h(),L={};function T(e,t={}){const r=(0,n.useId)(),s=u(),a=d(),{history:i="replace",scroll:h=s?.scroll??!1,shallow:p=s?.shallow??!0,throttleMs:f=m.timeMs,limitUrlUpdates:g=s?.limitUrlUpdates,clearOnDefault:b=s?.clearOnDefault??!0,startTransition:y,urlKeys:x=L}=t,k=Object.keys(e).join(","),E=(0,n.useMemo)((()=>Object.fromEntries(Object.keys(e).map((e=>[e,x[e]??e])))),[k,JSON.stringify(x)]),C=function(e){const t=(0,n.useContext)(c);if(!("useAdapter"in t))throw new Error(o(404));return t.useAdapter(e)}(Object.values(E)),S=C.searchParams,q=(0,n.useRef)({}),O=(0,n.useMemo)((()=>Object.fromEntries(Object.keys(e).map((t=>[t,e[t].defaultValue??null])))),[Object.values(e).map((({defaultValue:e})=>e)).join(",")]),N=w.useQueuedQueries(Object.values(E)),[A,M]=(0,n.useState)((()=>{const t=S??new URLSearchParams;return _(e,x,t,N).state})),F=(0,n.useRef)(A);if(l("[nuq+ %s `%s`] render - state: %O, iSP: %s",r,k,A,S),Object.keys(q.current).join("&")!==Object.values(E).join("&")){const{state:t,hasChanged:n}=_(e,x,S,N,q.current,F.current);n&&(l("[nuq+ %s `%s`] State changed: %O",r,k,{state:t,initialSearchParams:S,queuedQueries:N,queryRef:q.current,stateRef:F.current}),F.current=t,M(t)),q.current=Object.fromEntries(Object.values(E).map((e=>[e,S?.get(e)??null])))}(0,n.useEffect)((()=>{const{state:t,hasChanged:n}=_(e,x,S,N,q.current,F.current);n&&(l("[nuq+ %s `%s`] State changed: %O",r,k,{state:t,initialSearchParams:S,queuedQueries:N,queryRef:q.current,stateRef:F.current}),F.current=t,M(t))}),[Object.values(E).map((e=>`${e}=${S?.get(e)}`)).join("&"),JSON.stringify(N)]),(0,n.useEffect)((()=>{const t=Object.keys(e).reduce(((t,n)=>(t[n]=({state:t,query:s})=>{const{defaultValue:a}=e[n],o=E[n];F.current={...F.current,[n]:t??a??null},q.current[o]=s,l("[nuq+ %s `%s`] Cross-hook key sync %s: %O (default: %O). Resolved: %O",r,k,o,t,a,F.current),function(e){l("[nuq+ %s `%s`] updateInternalState %O",r,k,e),F.current=e,M(e)}(F.current)},t)),{});for(const n of Object.keys(e)){const e=E[n];l("[nuq+ %s `%s`] Subscribing to sync for `%s`",r,e,k),Q.on(e,t[n])}return()=>{for(const n of Object.keys(e)){const e=E[n];l("[nuq+ %s `%s`] Unsubscribing to sync for `%s`",r,e,k),Q.off(e,t[n])}}}),[k,E]);const U=(0,n.useCallback)(((t,n={})=>{const s=Object.fromEntries(Object.keys(e).map((e=>[e,null]))),c="function"==typeof t?t(I(F.current,O))??s:t??s;let u;l("[nuq+ %s `%s`] setState: %O",r,k,c);let d=0;const x=[];for(let[r,l]of Object.entries(c)){const t=e[r],s=E[r];if(!t)continue;(n.clearOnDefault??t.clearOnDefault??b)&&null!==l&&void 0!==t.defaultValue&&(t.eq??((e,t)=>e===t))(l,t.defaultValue)&&(l=null);const a=null===l?null:(t.serialize??String)(l);Q.emit(s,{state:l,query:a});const c={key:s,query:a,options:{history:n.history??t.history??i,shallow:n.shallow??t.shallow??p,scroll:n.scroll??t.scroll??h,startTransition:n.startTransition??t.startTransition??y}};if("debounce"===n?.limitUrlUpdates?.method||"debounce"===g?.method||"debounce"===t.limitUrlUpdates?.method){!0===c.options.shallow&&console.warn(o(422));const e=n?.limitUrlUpdates?.timeMs??g?.timeMs??t.limitUrlUpdates?.timeMs??m.timeMs,r=w.push(c,e,C);d<e&&(u=r,d=e)}else{const e=n?.limitUrlUpdates?.timeMs??t?.limitUrlUpdates?.timeMs??g?.timeMs??n.throttleMs??t.throttleMs??f;x.push(w.abort(s)),v.push(c,e)}}const S=x.reduce(((e,t)=>t(e)),v.flush(C,a));return u??S}),[k,i,p,h,f,g?.method,g?.timeMs,y,E,C.updateUrl,C.getSearchParamsSnapsh
1ot,C.rateLimitFactor,a,O]);return[(0,n.useMemo)((()=>I(A,O)),[A,O]),U]}function _(e,t,r,n,s,l){let a=!1;const o=Object.keys(e).reduce(((o,i)=>{const c=t?.[i]??i,{parse:u}=e[i],d=n[c],m=void 0===d?r?.get(c)??null:d;if(s&&l&&(s[c]??null)===m)return o[i]=l[i]??null,o;a=!0;const h=null===m?null:F(u,m,i);return o[i]=h??null,s&&(s[c]=m),o}),{});if(!a){const t=Object.keys(e),r=Object.keys(l??{});a=t.length!==r.length||t.some((e=>!r.includes(e)))}return{state:o,hasChanged:a}}function I(e,t){return Object.fromEntries(Object.keys(e).map((r=>[r,e[r]??t[r]??null])))}var z=r(22767),R=(r(26910),r(46942)),D=r.n(R),B=r(44961),V=r(93971),H=r(96706),$=r(3409);const J={sm:{dot:"h-16 w-16",inner:"h-[6px] w-[6px]"},md:{dot:"h-20 w-20",inner:"h-[8px] w-[8px]"}};var K=e=>{let{id:t,name:r,value:s,checked:l=!1,onChange:a,className:o,size:i="sm",label:c,labelColor:u=H.Q.Black}=e;const{dot:d,inner:m}=J[i];return n.createElement("div",{className:D()("group flex-shrink-0",o)},n.createElement("input",{type:"radio",id:t,name:r,value:s,checked:l,onChange:a,className:"sr-only","aria-checked":l}),n.createElement("label",{htmlFor:t,className:"flex cursor-pointer items-center"},n.createElement("div",{className:D()("relative block flex-shrink-0",d)},n.createElement("div",{className:D()("absolute inset-0 rounded-full border border-charcoal/20 transition-opacity duration-200 group-hover:border-charcoal/60",l?"opacity-0":"opacity-100")}),n.createElement("div",{className:D()("absolute inset-0 rounded-full bg-blue transition-opacity duration-200",l?"opacity-100":"opacity-0")},n.createElement("div",{className:D()("absolute left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2 rounded-full bg-white transition-opacity duration-200",m)}))),c&&n.createElement($.A,{color:u,text:c,font:"grotesk",size:"body-md",weight:"book",className:"ml-10 mt-[2px]"})))},W=r(3463),Z=r(84193),Y=r(4287);var G=e=>{let{isOpen:t,filters:r=[],activeFilters:s,onFilterChange:l,onClearAllFilters:a,subFilterTitle:o,subFilterDescription:i,subFilterCtaText:c,subFilterCtaLink:u,sortByMobileOrder:d=!1}=e;const m=(0,n.useMemo)((()=>d?(0,A.A)(r).sort(((e,t)=>e.mobileOrder-t.mobileOrder)):r),[r,d]);return n.createElement("div",{className:D()("relative h-full min-h-[400px] shrink-0 overflow-x-hidden transition-all duration-300 lg:min-h-[500px]",t?"w-full lg:w-[280px]":"hidden w-0 lg:block lg:w-0")},n.createElement("div",{className:D()("h-full w-full bg-white px-2 pb-24 pt-2 transition-transform duration-300 ease-in-out",{"translate-x-0":t,"-translate-x-full":!t})},n.createElement("div",{className:"h-full overflow-y-auto pr-2"},n.createElement("div",{className:"flex h-fit w-full flex-shrink-0 flex-col gap-[10px] overflow-y-auto pb-[10px] pl-[10px] pr-[10px] lg:w-[251px]"},n.createElement("div",{className:"pb-1"},n.createElement($.A,{font:"grotesk",color:H.Q.Black,text:"Filter Products",size:"lead-md-fixed",weight:"medium",className:"tracking-tight"})),n.createElement("div",{className:"flex flex-col gap-[10px]"},m.map(((e,t)=>{const r=e.tags||[];return n.createElement(B.A,{key:e._uid,title:e.title,textColor:H.Q.Black,iconColor:H.Q.Black,icon:"arrow",openByDefault:0===t,contentTopPadding:!0,titleSize:"body-lg",titleFontWeight:"book",titleClassName:"hover:text-blue",className:"w-full border-b border-gray pb-5"},n.createElement("ul",{className:"m-0 mt-4 list-none space-y-5 p-0"},r.map(((t,r)=>{const a=e._uid+"-"+r,o=s.includes(t);return n.createElement("li",{key:a},"single"===e.selectionMode?n.createElement("div",{className:"transition-all",onClick:()=>o&&l(t,!1,e)},n.createElement(K,{id:a,name:e._uid,checked:o,onChange:()=>l(t,!0,e),size:"md",label:t})):n.createElement(Y.S,{id:a,label:t,isChecked:o,onChange:r=>l(t,r.target.checked,e),className:D()("transition-all",o&&"[&_div.h-20]:ring-1 [&_div.h-20]:ring-blue/30 [&_div.h-20]:ring-offset-1")}))}))))}))),a&&n.createElement("div",{className:"pl-[2px]"},n.createElement(W.A,{style:"underlined",color:H.Q.Blue,weight:"book",text:"Clear All",onClick:a,textSize:"body-sm-fixed"})),o&&n.createElement("div",{className:"mt-4 border-gray pl-[2px] pt-5"},n.createElement($.A,{font:"grotesk",color:H.Q.Black,text:o,size:"body-md",weight:"medium"}),i&&n.createElement($.A,{font:"grotesk",color:H.Q.Black,text:i,size:"body-sm",weight:"book",className:"mt-1"}),c&&u&&n.createElement(n.Fragment,null,n.createElement(W.A,{style:"underlined",color:H.Q.Blue,weight:"medium",text:c,linkUrl:u,textSize:"body-sm-fixed",className:"mt-3 lg:hidden"}),n.createElement(V.A,{style:"solid",size:"medium",color:H.Q.Blue,text:c,linkUrl:u,fontSize:"body-sm-fixed",icon:n.createElement(Z.A,{className:"!h-[14px] !w-[14px]"}),className:"mt-3 hidden lg:flex"})))))))},X=r(41118),ee=r(22149),te=r(15290);var re=e=>{let{width:t="25px",height:r="25px",className:s}=e;return n.createElement("svg",{width:t,height:r,viewBox:"0 0 25 25",fill:"none",xmlns:"http://www.w3.org/2000/svg",className:D()("shrink-0",s)}
1,n.createElement("path",{d:"M21.5 7.5H13.82C13.43 5.79 11.92 4.5 10.11 4.5C8.3 4.5 6.79 5.79 6.4 7.5H3.5C3.09 7.5 2.75 7.84 2.75 8.25C2.75 8.66 3.09 9 3.5 9H6.4C6.79 10.71 8.3 12 10.11 12C11.92 12 13.43 10.71 13.82 9H21.5C21.91 9 22.25 8.66 22.25 8.25C22.25 7.84 21.91 7.5 21.5 7.5ZM10.11 10.5C8.87 10.5 7.86 9.49 7.86 8.25C7.86 7.01 8.87 6 10.11 6C11.35 6 12.36 7.01 12.36 8.25C12.36 9.49 11.35 10.5 10.11 10.5Z",fill:"currentColor"}),n.createElement("path",{d:"M21.5 16H18.6C18.21 14.29 16.7 13 14.89 13C13.08 13 11.57 14.29 11.18 16H3.5C3.09 16 2.75 16.34 2.75 16.75C2.75 17.16 3.09 17.5 3.5 17.5H11.18C11.57 19.21 13.08 20.5 14.89 20.5C16.7 20.5 18.21 19.21 18.6 17.5H21.5C21.91 17.5 22.25 17.16 22.25 17.75C22.25 17.34 21.91 17 21.5 16ZM14.89 19C13.65 19 12.64 17.99 12.64 16.75C12.64 15.51 13.65 14.5 14.89 14.5C16.13 14.5 17.14 15.51 17.14 16.75C17.14 17.99 16.13 19 14.89 19Z",fill:"currentColor"}))},ne=r(86630),se=r(6160);const le=["filterPanel","products","subFilterTitle","subFilterDescription","subFilterCtaText","subFilterCtaLink"];var ae=e=>{let{filterPanel:t,products:r,subFilterTitle:s,subFilterDescription:l,subFilterCtaText:a,subFilterCtaLink:o}=e,i=(0,M.A)(e,le);const{0:c,1:u}=(0,n.useState)(!0),{0:d,1:m}=(0,n.useState)(!1),{0:h,1:p}=(0,n.useState)(!1);(0,n.useEffect)((()=>{p(!0)}),[]);const[f,g]=function(e,t={}){const{parse:r=e=>e,serialize:s,eq:l,defaultValue:a,...o}=t,[{[e]:i},c]=T({[e]:{parse:r,serialize:s,eq:l,defaultValue:a}},o);return[i,(0,n.useCallback)(((t,r={})=>c((r=>({[e]:"function"==typeof t?t(r[e]):t})),r)),[e,c])]}("filters",function(e,t=","){const r=e.eq??((e,t)=>e===t),n=encodeURIComponent(t);return U({parse:r=>""===r?[]:r.split(t).map(((r,s)=>F(e.parse,r.replaceAll(n,t),`[${s}]`))).filter((e=>null!=e)),serialize:r=>r.map((r=>(e.serialize?e.serialize(r):String(r)).replaceAll(t,n))).join(t),eq(e,t){return e===t||e.length===t.length&&e.every(((e,n)=>r(e,t[n])))}})}(P).withDefault([]).withOptions({history:"replace"})),b=(0,n.useMemo)((()=>h?t.filter((e=>"single"===e.selectionMode)).reduce(((e,t)=>{const r=new Set(t.tags),n=e.filter((e=>r.has(e)));if(n.length<=1)return e;const s=n[n.length-1];return e.filter((e=>!r.has(e)||e===s))}),f):[]),[h,f,t]),v=(e,t,r)=>{let n;if("single"===r.selectionMode){const s=new Set(r.tags),l=f.filter((e=>!s.has(e)));n=t?[].concat((0,A.A)(l),[e]):l}else n=t?[].concat((0,A.A)(f),[e]):f.filter((t=>t!==e));t&&(0,se.Dg)(e),g(n)},y=()=>{g([])},w=(0,n.useMemo)((()=>0===b.length?null!=r?r:[]:(null!=r?r:[]).filter((e=>t.every((t=>{const r=t.tags.filter((e=>b.includes(e)));return 0===r.length||("single"===t.selectionMode?r.some((t=>{var r;return null===(r=e.filterTags)||void 0===r?void 0:r.includes(t)})):r.every((t=>{var r;return null===(r=e.filterTags)||void 0===r?void 0:r.includes(t)})))}))))),[r,b,t]);return n.createElement(ee.A,Object.assign({as:X.A,primaryBackgroundColor:H.Q.White,id:"product-catalogue",className:"relative col-span-full -mt-10 w-full overflow-hidden rounded-t-[32px] !bg-white !p-0 md:-mt-16 lg:-mt-[88px]"},i),n.createElement("div",{className:"w-full bg-white pb-24 lg:pt-24"},n.createElement("div",{className:"flex w-full justify-center gap-24 px-4 sm:px-24 md:px-8 lg:justify-end lg:px-12"},n.createElement(W.A,{text:"Filter my options",style:"icon",color:H.Q.Black,weight:"book",icon:n.createElement(re,{className:"text-black"}),onClick:()=>m(!0),className:"lg:hidden"}),n.createElement("div",{className:"relative hidden overflow-hidden lg:block"},n.createElement("div",{className:"grid"},n.createElement("div",{className:"col-start-1 row-start-1 transition-transform duration-300 ease-in-out "+(c?"pointer-events-auto translate-y-0":"pointer-events-none translate-y-full")},n.createElement(W.A,{text:"Hide Filters",style:"icon",color:H.Q.Black,weight:"book",icon:n.createElement(re,{className:"text-black"}),onClick:()=>u(!1)})),n.createElement("div",{className:"col-start-1 row-start-1 transition-transform duration-300 ease-in-out "+(c?"pointer-events-none -translate-y-full":"pointer-events-auto translate-y-0")},n.createElement(W.A,{text:"Show Filters",style:"icon",color:H.Q.Black,weight:"book",icon:n.createElement(re,{className:"text-black"}),onClick:()=>u(!0)}))))),n.createElement("div",{className:"mb-2 mt-2 w-full border-b border-light-gray md:mb-4 md:mt-4 lg:my-24"})),n.createElement(z._s.Root,{open:d,direction:"bottom",onOpenChange:m},n.createElement(z._s.Portal,null,n.createElement(z._s.Overlay,{className:"backdrop-blur-xs fixed inset-0 z-50 bg-black/40"}),n.createElement(z._s.Content,{className:"fixed inset-0 z-50 flex h-[100dvh] flex-col bg-white shadow-xl"},n.createElement(z._s.Title,{className:"sr-only"},"Filter Products"),n.createElement("div",{className:"relative w-full flex-1 overflow-y-auto px-2 pb-40 pt-2"},n.createElement("button",{type:"button",className:"absolute right-24 top-[18px] z-30 rounded-full p-1 transition-colors active:bg-light-gray",onClick:()=>m(!1),"aria-label":"Close filters"},n.createElement(te.A,{strokeColor:H.Q.Black,width:"20px",height:"20px"})),n.createElement(G,{isOpen:!0,filters:t,activeFilters:b,onFilterChange:v,subFilterTitle:s,subFilterDescription:l,subFilterCtaText:a,subFilterCtaLink:o,sortByMobileOrder:!0})),n.createElement("div",{className:"pb-safe absolute bottom-0 left-0 right-0 z-20 flex items-center justify-center gap-10 bg-white px-24 pb-14 pt-5"},n.createElement(V.A,{style:"bordered",size:"small",color:H.Q.Blue,overrideTextColor:H.Q.Black,text:f.length>0?"Clear ("+f.length+")":"Clear",hideIcon:!0,transparentHover:!0,disabled:0===f.length,onClick:y,className:"!w-max min-w-[130px] !border-blue text-center font-medium !text-black hover:!bg-transparent active:!bg-transparent"}),n.createElement(V.A,{style:"solid",size:"small",color:H.Q.Blue,overrideTextColor:H.Q.White,text:"Apply",hideIcon:!0,onClick:()=>m(!1),className:"!w-max min-w-[130px] !border-blue !bg-blue text-center font-medium text-white"}))))),n.createElement("div",{className:"mx-auto mt-8 flex w-full flex-col items-center gap-24 px-4 sm:px-24 lg:flex-row lg:items-start lg:gap-10 lg:px-8"},n.createElement("div",{className:"hidden shrink-0 lg:block"},n.createElement(G,{isOpen:c,filters:t,activeFilters:b,onFilterChange:v,onClearAllFilters:y,subFilterTitle:s,subFilterDescription:l,subFilterCtaText:a,subFilterCtaLink:o})),n.createElement("div",{className:"grid w-full flex-1 grid-cols-[repeat(auto-fit,minmax(320px,388px))] justify-center gap-24 pb-16 transition-[width,margin] duration-300 ease-in-out xl:gap-[84px]"},0===w.length&&b.length>0?n.createElement("div",{className:"col-span-full flex min-h-[400px] items-center justify-center py-16"},n.createElement($.A,{text:"No products found",size:"body-lg",font:"grotesk",weight:"book",color:H.Q.Charcoal})):w.map(((e,t)=>n.createElement("div",{key:e.productName+"-"+t,className:"w-full min-w-0 justify-self-center"},n.createElement(ne.A,{productName:e.productName,imageUrl:e.imageUrl,imageAlt:e.imageAlt,priceValue:e.priceValue,priceLabelOverride:e.priceLabelOverride,shortDe
1scription:e.shortDescription,ctaText:e.ctaText,ctaLink:e.ctaLink,learnMoreButtonUrl:e.learnMoreButtonUrl,purchasableItem:e.purchasableItem,reviewSkus:e.reviewSkus,badge:e.badge,wasPrice:e.wasPrice,backgroundColor:H.Q.White,className:"mb-0 h-full w-full max-w-full rounded-24"})))))))},oe=r(42023),ie=r(897),ce=r(7816);var ue=e=>{let{blok:t}=e;const{catalogueItems:r}=(0,oe.I)(t.useInternalItems),s=r.map(ce.t);return n.createElement(N,null,n.createElement(ae,{filterPanel:t.filterPanel.map((e=>Object.assign({},e,{mobileOrder:Number(e.mobileOrder)}))),products:s,subFilterTitle:t.subFilterTitle,subFilterDescription:t.subFilterDescription,subFilterCtaText:t.subFilterCtaText,subFilterCtaLink:(0,ie.RO)(t.subFilterCtaLink)}))}}}]);
2//# sourceMappingURL=components-StoryBlok-V2-Layout-ProductCatalogueSection-2da633696188c4994d4b.js.map

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.