UNPKG

addsearch-search-ui

Version:

JavaScript library to develop Search UIs for the web

2 lines 209 kB
/*! addsearch-search-ui 0.8.14 */ !function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.AddSearchUI=t():e.AddSearchUI=t()}(this,(function(){return function(){var e={3497:function(e,t,n){"use strict";e.exports=n(2879).default,e.exports.AUTOCOMPLETE_TYPE=n(3488).AUTOCOMPLETE_TYPE,e.exports.FILTER_TYPE=n(9538).FILTER_TYPE,e.exports.SORTBY_TYPE=n(2807).SORTBY_TYPE,e.exports.LOAD_MORE_TYPE=n(7407).LOAD_MORE_TYPE,e.exports.RECOMMENDATION_TYPE=n(2931).RECOMMENDATION_TYPE,e.exports.RANGE_FACETS_TYPE=n(66).RANGE_FACETS_TYPE,e.exports.Handlebars_runtime=n(6834)},8640:function(e,t,n){"use strict";n.d(t,{AJ:function(){return S},Cn:function(){return x},ES:function(){return _},JD:function(){return v},NF:function(){return m},NY:function(){return h},PK:function(){return O},PU:function(){return y},QU:function(){return C},R8:function(){return o},SQ:function(){return d},T$:function(){return a},VP:function(){return f},WT:function(){return k},eP:function(){return b},fp:function(){return u},gK:function(){return P},ms:function(){return l},og:function(){return p},px:function(){return A},qN:function(){return g},t4:function(){return r},v1:function(){return w},vA:function(){return c},xl:function(){return i},zS:function(){return s}});const r="AUTOCOMPLETE_FETCH_START",i="AUTOCOMPLETE_SUGGESTIONS_RESULTS",o="AUTOCOMPLETE_CUSTOM_FIELDS_RESULTS",s="AUTOCOMPLETE_SUGGESTIONS_CLEAR",a="AUTOCOMPLETE_CUSTOM_FIELDS_CLEAR",l="AUTOCOMPLETE_SEARCH_RESULTS",c="AUTOCOMPLETE_SEARCH_CLEAR",u="AUTOCOMPLETE_SHOW",h="AUTOCOMPLETE_HIDE",p="AUTOCOMPLETE_HIDE_AND_DROP_RENDERING",d="HIDE_AUTOMATICALLY",f="KEYBOARD_EVENT",m="ARROW_UP",g="ARROW_DOWN",v="SET_ACTIVE_SUGGESTION",y="suggestions",S="custom_fields";function b(e,t){return t&&""!==t?n=>{n(E(y)),e.suggestions(t,(e=>n(function(e,t){return{type:i,keyword:e,results:t}}(t,e))))}:{type:s}}function x(e,t,n){return t&&""!==t?r=>{r(E(S)),e.autocomplete(n,t,(e=>r({type:o,results:e})))}:{type:a}}function k(e,t,n,r){return n&&""!==n?i=>{i(E(t)),e.search(n,(e=>i(function(e,t,n,r){return{type:l,keyword:e,results:t,jsonKey:n,appendResults:r}}(n,e,t,r))))}:{type:c}}function E(e){return{type:r,jsonKey:e}}function O(){return{type:u}}function _(){return{type:h}}function P(){return{type:p}}function w(e){return{type:f,direction:e}}function C(e,t){return{type:v,index:e,setSuggestionToSearchField:t}}function A(e){return{type:d,hideAutomatically:e}}},1234:function(e,t,n){"use strict";n.d(t,{S1:function(){return o},lW:function(){return s},o6:function(){return r},zt:function(){return i}});const r="SET_FIELD_STATS",i="CLEAR_FIELD_STATS";function o(e,t){return{type:r,fieldStats:e,callBy:t}}function s(){return{type:i}}},9651:function(e,t,n){"use strict";n.d(t,{D5:function(){return v},D_:function(){return y},MO:function(){return c},Pu:function(){return f},RP:function(){return k},U7:function(){return s},WF:function(){return a},Wk:function(){return d},Xk:function(){return p},Y$:function(){return b},ZJ:function(){return o},_h:function(){return h},az:function(){return E},cT:function(){return m},dN:function(){return i},eU:function(){return x},fk:function(){return u},fr:function(){return l},m4:function(){return r},nw:function(){return g},w$:function(){return S},x_:function(){return O}});const r="TOGGLE_FILTER",i="SET_RANGE_FILTER",o="REGISTER_FILTER",s="SET_ACTIVE_FILTERS",a="SET_ACTIVE_FACETS",l="SET_ACTIVE_RANGE_FACETS",c="TOGGLE_FACET_FILTER",u="TOGGLE_HIERARCHICAL_FACET_FILTER",h="TOGGLE_RANGE_FACET_FILTER",p="CLEAR_SELECTED_FILTERS_AND_FACETS",d="CLEAR_SELECTED_RANGE_FACETS";function f(e){return{type:o,filterObj:e}}function m(e,t,n){return{type:r,filterName:e,value:t,refreshSearch:n}}function g(e,t,n){return{type:i,field:e,from:t,to:n}}function v(e){return{type:s,json:e}}function y(e){return{type:a,json:e}}function S(e,t,n){return{type:l,json:e,refreshSearch:t,field:n}}function b(e,t,n){return{type:c,field:e,value:t,refreshSearch:n}}function x(e,t,n,r,i){return{type:u,field:e,container:t,confFields:n,value:r,refreshSearch:i}}function k(e,t,n,r,i){return{type:h,field:e,values:t,key:n,refreshSearch:r,byActiveFilterComponent:i}}function E(e,t){return{type:d,refreshSearch:e,setHistory:t}}function O(e,t){return{type:p,refreshSearch:e,byActiveFilterComponent:t}}},6484:function(e,t,n){"use strict";n.d(t,{q:function(){return i},r:function(){return r}});const r="KEYWORD";function i(e,t,n,i){return{type:r,value:e,skipAutocomplete:t,searchFieldContainerId:n||null,setSearchFieldValue:i||!1}}},8268:function(e,t,n){"use strict";n.d(t,{R:function(){return i},Y:function(){return o}});var r=n(8266);const i="SET_PAGE";function o(e,t,n,o){!1===n||e.getSettings().paging.page===t&&1!==t||(0,r.JB)(r.rS.PAGE,t+"",null,o);const s=e.getSettings().paging;return e.setPaging(t,s.pageSize,s.sortBy,s.sortOrder),{type:i,page:t}}},5880:function(e,t,n){"use strict";n.d(t,{E5:function(){return l},PF:function(){return o},bD:function(){return s},l8:function(){return a},r5:function(){return i}});n(2879),n(8266);var r=n(3292);const i="FETCH_RECO_FBT",o="FETCH_RELATED_ITEMS",s="CLEAR_RECOMMENDATION";function a(e,t){return n=>{switch(t.type){case r.QR:e.recommendations(t,(e=>{var r;n((r=t.container,{type:i,container:r,recommendType:"frequently-bought-together",results:e}))}));break;case r.Oq:e.recommendations(t,(e=>{var r;n((r=t.container,{type:o,container:r,recommendType:"related-items",results:e}))}))}}}function l(){return{type:s}}},5762:function(e,t,n){"use strict";n.d(t,{BL:function(){return h},EV:function(){return l},L5:function(){return a},Ug:function(){return d},WE:function(){return f},Zs:function(){return u},fP:function(){return c},tj:function(){return s},yC:function(){return p}});var r=n(2879),i=n(8266),o=n(1410);const s="START",a="SET_SEARCH_RESULTS_PAGE_URL",l="SEARCH_FETCH_START",c="SEARCH_RESULTS",u="CLEAR_SEARCH_RESULTS";function h(){return{type:s}}function p(e,t,n,s,a,h,p,d,f){return(0,i.JB)(i.rS.SEARCH,t,a,h),t&&""!==t?i=>{i({type:l}),e.search(t,(l=>{if((f||p)&&l&&l.hits&&l.hits.length){var u=(f||p).replace("custom_fields.",""),h=function(e,t,n){return t.find((t=>{if(!t.custom_fields||!t.custom_fields[n])return!1;if("string"==typeof t.custom_fields[n])return e.toLowerCase()===t.custom_fields[n].toLowerCase();if("object"==typeof t.custom_fields[n]&&t.custom_fields[n].length){const r=t.custom_fields[n].map((e=>e.toLowerCase())),i=e.toLowerCase();return r.indexOf(i)>-1}return!1}))}(t,l.hits,u);if(h&&!a)return void window.location.replace(h.url)}i(function(e,t,n,i,s,a){if(/top-delay-\d*$/.test(i)){var l=parseInt(i.replace("top-delay-",""),10);window.setTimeout((function(){window.scrollTo(0,0)}),l)}else"top"===i&&window.scrollTo(0,0);if(t&&-1===t.indexOf(r.o)){const r=n?n.total_hits:0,i=n?n.processing_time_ms:0;(0,o.WW)(e,t,r,i)}return{type:c,keyword:t,results:n,appendResults:s,requestBy:a}}(e,t,l,n,s,d))}))}:{type:u}}function d(e){return"top"===e&&window.scrollTo(0,0),{type:u}}function f(e){return{type:a,url:e}}},2932:function(e,t,n){"use strict";n.d(t,{SM:function(){return o},cR:function(){return s},j0:function(){return i},s8:function(){return r}});const r="SEGMENTED_SEARCH_START",i="SEGMENTED_SEARCH_RESULTS",o="CLEAR_SEGMENTED_SEARCH_RESULTS";function s(e,t,n){return n&&""!==n?o=>{o(function(e){return{type:r,jsonKey:e}}(t)),e.search(n,(e=>o(function(e,t,n){return{type:i,jsonKey:e,keyword:t,results:n}}(t,n,e))))}:{type:o}}},5306:function(e,t,n){"use strict";n.d(t,{MR:function(){return s},jo:function(){return o},mh:function(){return i}});var r=n(8266);const i="SORTBY",o="desc";function s(e,t,n,o){o&&(0,r.JB)(r.rS.SORTBY,JSON.stringify({field:t,order:n}),null,o);const s=e.getSettings().paging;return e.setPaging(s.page,s.pageSize,t,n),{type:i,field:t,order:n}}},3488:function(e,t,n){"use strict";n.d(t,{AUTOCOMPLETE_TYPE:function(){return g},Z:function(){return m}});var r=n(177),i=n.n(r),o=n(8640),s=n(5762),a=n(6484),l=n(2445),c=n(5047),u=n(1410),h=n(8266),p=n(1514),d=n(900),f=n.n(d);class m{constructor(e,t,n){this.client=e,this.reduxStore=t,this.conf=n,this.lastOnmouseOver=null,!1===this.conf.hideAutomatically&&this.reduxStore.dispatch((0,o.px)(!1));const r=this.conf.categorySelectionFunction||p._P;(0,p.Au)("selectSearchResultCategory",(e=>r(e,this.conf.categoryAliases))),(0,c.g)(n.containerId)&&((0,l.D)(this.reduxStore,"autocomplete",(e=>this.autocompleteResultsChanged(e))),(0,l.D)(this.reduxStore,"keyword",(e=>this.keywordChanged(e)))),n.infiniteScrollElement&&this.conf.infiniteScrollElement.addEventListener("scroll",(()=>this.onScroll())),n.sources&&n.sources.length&&n.sources.forEach((e=>{e.client&&e.client.setCollectAnalytics(!1)}))}autocompleteResultsChanged(e){0===e.pendingRequests.length&&(e.keyword&&""!==e.keyword&&this.sendSearchAnalytics(e),this.render(e))}sendSearchAnalytics(e){let t=[];this.conf.sources.forEach((n=>{if(n.type===g.SEARCH&&n.collectSearchAnalytics){const r=n.client||this.client,i=e.searchResultsStats[n.jsonKey]?e.searchResultsStats[n.jsonKey].total_hits:0;t.push({client:r,numberOfResults:i})}})),(0,u.hb)(e.keyword,t)}keywordChanged(e){const t=!1===e.skipAutocomplete?e.value:null;""===t&&this.reduxStore.dispatch((0,o.gK)()),this.conf.sources.forEach((e=>{const n=e.client||this.client;if(e.type===g.SUGGESTIONS)this.reduxStore.dispatch((0,o.eP)(n,t));else if(e.type===g.CUSTOM_FIELDS)this.reduxStore.dispatch((0,o.Cn)(n,t,e.field));else if(e.type===g.SEARCH){const r=n.getSettings().paging;n.setPaging(1,r.pageSize,r.sortBy,r.sortOrder),this.reduxStore.dispatch((0,o.WT)(n,e.jsonKey,t))}}))}loadMore(e){this.conf.sources.forEach((t=>{const n=t.client;n&&t.type===g.SEARCH&&(n.nextPage(),this.reduxStore.dispatch((0,o.WT)(n,t.jsonKey,e,!0)))}))}render(e){if(e.dropRendering&&this.renderedHtml)return document.getElementById(this.conf.containerId).innerHTML="",void(this.renderedHtml="");if(0!==e.pendingRequests.length||e.dropRendering)return;if(!1===e.visible)return document.getElementById(this.conf.containerId).innerHTML="",void(this.renderedHtml="");const{suggestions:t,customFields:n,searchResults:r,activeSuggestionIndex:o}=e,s={activeSuggestionIndex:o,suggestions:t,customFields:n,searchResults:r};let a;if(a=this.conf.precompiledTemplate?this.conf.precompiledTemplate(s):this.conf.template?i().compile(this.conf.template)(s):f()(s),this.renderedHtml===a)return;const l=document.getElementById(this.conf.containerId);l.innerHTML=a,this.renderedHtml=a,this.conf.renderCompleteCallback&&"function"==typeof this.conf.renderCompleteCallback&&this.conf.renderCompleteCallback();const c=l.querySelector(".suggestions")?l.querySelectorAll(".suggestions > li"):[],h=l.querySelectorAll(".suggestions");for(let e=0;e<c.length;e++)c[e].onmousedown=e=>this.suggestionMouseDown(e),h.length<=1&&(c[e].onmouseenter=e=>this.suggestionMouseEnter(e));if(r[Object.keys(r)[0]]){const e=l.querySelectorAll("[data-analytics-click]");let t=null;this.conf.sources.forEach((e=>{e.type===g.SEARCH&&(t||(t=e.client))})),t||(t=this.client),(0,u.Qc)(t,e,{hits:r[Object.keys(r)[0]]})}this.conf.infiniteScrollElement&&!e.appendResults&&(this.conf.infiniteScrollElement.scrollTop=0),this.conf.onShow&&this.conf.onShow(l)}suggestionMouseDown(e){const t=e.target.getAttribute("data-keyword"),n=this.reduxStore;n.dispatch((0,a.q)(t,!0,null,!0));const r=n.getState().search.searchResultsPageUrl;r?(0,h.Rl)(r,t):n.dispatch((0,s.yC)(this.client,t,null,null,null,n))}suggestionMouseEnter(e){const t=parseInt(e.target.getAttribute("data-index"),10);null!==t&&t!==this.lastOnmouseOver&&(this.lastOnmouseOver=t,this.reduxStore.dispatch((0,o.QU)(t,!1)))}onScroll(){if(0===this.reduxStore.getState().autocomplete.pendingRequests.length){const e=this.conf.infiniteScrollElement;if(e.scrollHeight>0&&Math.ceil(e.offsetHeight+e.scrollTop)>=e.scrollHeight){const e=this.reduxStore.getState().keyword.value;this.loadMore(e)}}}}const g={SEARCH:"SEARCH",SUGGESTIONS:"SUGGESTIONS",CUSTOM_FIELDS:"CUSTOM_FIELDS"}},6490:function(e,t,n){"use strict";n.d(t,{Z:function(){return c},w:function(){return l}});var r=n(5762),i=n(8268),o=n(2445),s=n(8266),a=n(2932);function l(e,t,n){let r={and:[]};t&&r.and.push(t);let i={};e.allAvailableFilters.forEach((t=>{let n={or:[]};for(let r in t)e.activeFilters[r]&&!i[r]&&(n.or.push(t[r].filter),i[r]=!0);n.or.length>0&&r.and.push(n)}));for(let t in e.activeRangeFilters)r.and.push({range:{[t]:Object.assign({},e.activeRangeFilters[t])}});for(let t in e.activeFacets){let i={or:[]};for(let r in e.activeFacets[t])if(t!==n){const e={};e[t]=r,i.or.push(e)}i.or.length>0&&r.and.push(i)}for(let t in e.activeHierarchicalFacets){let i={or:[]};for(let r in e.activeHierarchicalFacets[t])for(let o in e.activeHierarchicalFacets[t][r])if(!n||-1===n.indexOf(r)){const e={};e[r]=o,i.or.push(e)}i.or.length>0&&r.and.push(i)}for(let t in e.activeRangeFacets){let i={or:[]};for(let r in e.activeRangeFacets[t])if(t!==n){const n={range:{[t]:e.activeRangeFacets[t][r]}};i.or.push(n)}i.or.length>0&&r.and.push(i)}return r.and.length>0?r:{}}class c{constructor(e,t,n,r,i,s){this.client=e,this.reduxStore=t,this.createFilterObjectFunction=n,this.onFilterChange=r,this.segmentedSearchClients=s,(0,o.D)(this.reduxStore,"filters",(e=>this.onFilterStateChange(e,i)))}onFilterStateChange(e,t){if(e.refreshSearch){(0,s.JB)(s.rS.FILTERS,(0,s.kb)(e.activeFilters),null,this.reduxStore),(0,s.JB)(s.rS.FACETS,(0,s.kb)(e.activeFacets),null,this.reduxStore),(0,s.JB)(s.rS.RANGE_FACETS,(0,s.kb)(e.activeRangeFacets),null,this.reduxStore);const n=this.createFilterObjectFunction(e,t);this.client.setFilterObject(n);const o=this.reduxStore.getState().keyword.value;this.reduxStore.dispatch((0,i.Y)(this.client,1,null,this.reduxStore)),this.reduxStore.dispatch((0,r.yC)(this.client,o,null,null,null,this.reduxStore,null,e.targetFacetGroup));for(let t in this.segmentedSearchClients){const n=this.createFilterObjectFunction(e,this.segmentedSearchClients[t].originalFilters);this.segmentedSearchClients[t].client.setFilterObject(n),this.reduxStore.dispatch((0,a.cR)(this.segmentedSearchClients[t].client,t,o))}}else if(e.setHistory){const n=this.createFilterObjectFunction(e,t);this.client.setFilterObject(n),(0,s.JB)(s.rS.RANGE_FACETS,(0,s.kb)(e.activeRangeFacets),null,this.reduxStore)}this.onFilterChange&&this.onFilterChange(e.activeFilters)}}},9538:function(e,t,n){"use strict";n.d(t,{FILTER_TYPE:function(){return E},Z:function(){return k}});var r=n(177),i=n.n(r),o=n(2445),s=n(9651),a=n(5306),l=n(5047),c=n(502),u=n.n(c),h=n(5904),p=n.n(h),d=n(6856),f=n.n(d),m=n(3049),g=n.n(m),v=n(3890),y=n.n(v),S=n(3368),b=n.n(S);const x="nofilter";class k{constructor(e,t,n){this.client=e,this.reduxStore=t,this.conf=n,this.activeFilter=null,(0,l.g)(n.containerId)&&(this.reduxStore.dispatch((0,s.Pu)(this.conf)),(0,o.D)(this.reduxStore,"filters",(e=>this.render(e))),this.conf.type===E.RANGE&&(0,o.D)(this.reduxStore,"search",(e=>this.searchResultsChanged(e))))}searchResultsChanged(e){!e.loading&&e.results.fieldStats&&e.results.fieldStats[this.conf.field]&&this.render(this.reduxStore.getState().filters)}render(e){let t=Object.assign({},this.conf);this.activeFilter=null;let n=!1;for(let r in t.options)e.activeFilters[r]?(t.options[r].active=!0,this.activeFilter=r,n=!0):t.options[r].active=!1;!n&&t.options&&t.options[x]&&(t.options[x].active=!0);let r,o=null;if(this.conf.type===E.TABS)o=g();else if(this.conf.type===E.TAGS)o=f();else if(this.conf.type===E.CHECKBOX_GROUP)o=u();else if(this.conf.type===E.RADIO_GROUP)o=p();else if(this.conf.type===E.RANGE){e.activeRangeFilters[this.conf.field]&&(t.from=e.activeRangeFilters[this.conf.field].gte,t.to=e.activeRangeFilters[this.conf.field].lte);const n=this.reduxStore.getState().search.results;if(n&&n.fieldStats&&n.fieldStats[this.conf.field]){const{min:e,max:r}=n.fieldStats[this.conf.field];t.fromPlaceholder="Infinity"===e?"":e,t.toPlaceholder="-Infinity"===r?"":r}o=b()}else o=y();if(r=this.conf.precompiledTemplate?this.conf.precompiledTemplate(t):this.conf.template?i().compile(this.conf.template)(t):o(t),this.renderedHtml===r)return;const a=document.getElementById(this.conf.containerId);if(a.innerHTML=r,this.renderedHtml=r,this.conf.type===E.SELECT_LIST)a.querySelector("select").addEventListener("change",(e=>this.singleActiveChangeEvent(e.target.value)));else if(this.conf.type===E.TABS){const e=a.querySelectorAll("[data-filter]");for(let t=0;t<e.length;t++)e[t].addEventListener("click",(e=>this.singleActiveChangeEvent(e.target.getAttribute("data-filter"))))}else if(this.conf.type===E.RADIO_GROUP){const e=a.querySelectorAll("input");for(let t=0;t<e.length;t++)e[t].addEventListener("click",(e=>this.singleActiveChangeEvent(e.target.value)))}else this.conf.type===E.RANGE?this.attachRangeFilterEvents(a):(0,l.$)(a,"data-filter","click",(e=>{this.reduxStore.dispatch((0,s.cT)(e,1))}))}singleActiveChangeEvent(e){const t=e===x,n=this.reduxStore;e!==this.activeFilter&&(this.conf.setSorting&&n.dispatch((0,a.MR)(this.client,this.conf.setSorting.field,this.conf.setSorting.order,this.reduxStore)),!0===this.conf.clearOtherFilters?n.dispatch((0,s.x_)(t)):this.activeFilter&&n.dispatch((0,s.cT)(this.activeFilter,1,t)),t?this.activeFilter=null:(this.activeFilter=e,n.dispatch((0,s.cT)(e,1,!0))))}attachRangeFilterEvents(e){const t=e.querySelectorAll("input");for(let n=0;n<t.length;n++)t[n].addEventListener("change",(t=>{this.conf.validator&&!new RegExp(this.conf.validator).test(t.target.value)?t.target.setAttribute("data-valid","false"):(t.target.setAttribute("data-valid","true"),this.rangeChangeEvent(this.conf.field,e.querySelector('input[name="from"]').value,e.querySelector('input[name="to"]').value))}));const n=e.querySelector("button");n&&n.addEventListener("click",(e=>this.reduxStore.dispatch((0,s.nw)(this.conf.field,null,null))))}rangeChangeEvent(e,t,n){const r=""!==t?t:null,i=""!==n?n:null;this.reduxStore.dispatch((0,s.nw)(e,r,i))}}const E={CHECKBOX_GROUP:"CHECKBOX_GROUP",RADIO_GROUP:"RADIO_GROUP",SELECT_LIST:"SELECT_LIST",RANGE:"RANGE",TABS:"TABS",TAGS:"TAGS"}},7407:function(e,t,n){"use strict";n.d(t,{LOAD_MORE_TYPE:function(){return p},Z:function(){return h}});var r=n(177),i=n.n(r),o=n(8268),s=n(5762),a=n(2445),l=n(5047),c=n(4409),u=n.n(c);class h{constructor(e,t,n){this.client=e,this.reduxStore=t,this.conf=n,(0,l.g)(n.containerId)&&(0,a.D)(this.reduxStore,"search",(e=>this.render(e))),n.type===p.INFINITE_SCROLL&&this.conf.infiniteScrollElement.addEventListener("scroll",(()=>this.onScroll()))}render(e){const t=e.results.page||1,n=this.client.getSettings().paging.pageSize,r=e.results.total_hits||0,o=Math.ceil(r/n),s={type:this.conf.type,hasMorePages:t<o,isLoading:e.loading,totalHits:r};let a;if(a=this.conf.precompiledTemplate?this.conf.precompiledTemplate(s):this.conf.template?i().compile(this.conf.template)(s):u()(s),this.renderedHtml===a)return;const l=document.getElementById(this.conf.containerId);if(l.innerHTML=a,this.renderedHtml=a,this.conf.type===p.BUTTON){const e=l.querySelector("button");e&&(e.onclick=e=>this.loadMore())}else this.conf.type===p.INFINITE_SCROLL&&this.conf.infiniteScrollElement.tagName&&1===e.results.page&&!e.loading&&(this.conf.infiniteScrollElement.scrollTop=0)}loadMore(){const e=(this.reduxStore.getState().pagination.page||1)+1;this.reduxStore.dispatch((0,o.Y)(this.client,e,!1,this.reduxStore));const t=this.reduxStore.getState().keyword.value;this.reduxStore.dispatch((0,s.yC)(this.client,t,null,!0,null,this.reduxStore,null,"component.loadMore"))}onScroll(){const e=this.reduxStore.getState().search.loading,t=document.querySelector("#"+this.conf.containerId+" .loadmore-infinite-scroll");if(!e&&t)if(this.conf.infiniteScrollElement.tagName){const e=this.conf.infiniteScrollElement;Math.ceil(e.offsetHeight+e.scrollTop)>=e.scrollHeight&&this.loadMore()}else{const e=window.innerHeight,n=t.getBoundingClientRect().top;n>0&&n<e&&this.loadMore()}}}const p={BUTTON:"BUTTON",INFINITE_SCROLL:"INFINITE_SCROLL"}},66:function(e,t,n){"use strict";n.d(t,{RANGE_FACETS_TYPE:function(){return b},Z:function(){return S}});var r=n(177),i=n.n(r),o=n(9651),s=n(2445),a=n(5047),l=n(6490),c=n(1234);function u(e){var t=Math.ceil(Math.log10(e+1));if(1===t)return 0;var n=Math.pow(10,t-1);return Math.floor(e/n)*n}function h(e){var t=Math.ceil(Math.log10(e+1)),n=Math.pow(10,t-1);return Math.ceil(e/n)*n}var p=n(8669),d=n(976),f=n.n(d),m=n(1298),g=n.n(m);function v(){let e,t;function n(e,t){e&&(e.textContent=t)}function r(t,n){const[r,o]=i(t,n);"function"==typeof e&&e({activeRange:[r,o]})}function i(e,t){return[parseFloat(e.value),parseFloat(t.value)]}function o(e,t,n,r,i){const o=t.max-t.min,s=e.value-t.min,a=t.value-t.min;i.style.background="linear-gradient(\n to right,\n ".concat(n," 0%,\n ").concat(n," ").concat(s/o*100,"%,\n ").concat(r," ").concat(s/o*100,"%,\n ").concat(r," ").concat(a/o*100,"%, \n ").concat(n," ").concat(a/o*100,"%, \n ").concat(n," 100%)")}function s(e){const n=document.querySelector("#"+t+" [data-id=adds-slider-control-from]"),r=document.querySelector("#"+t+" [data-id=adds-slider-control-to]");Number(e.value)<=n.value?r.style.zIndex="2":r.style.zIndex="0"}this.initialize=function(a,l,c){e=l,t=a;const[u,h,p,d]=function(){const e=document.querySelector("#"+t+" .adds-range-slider-container");return[e.getAttribute("data-slider-min"),e.getAttribute("data-slider-max"),e.getAttribute("data-slider-start"),e.getAttribute("data-slider-end")]}(),f=Math.ceil(parseFloat(h));!function(e,n){const r=document.querySelector("#"+t+" .adds-range-slider-container"),[i,o,s,a]=e,l='\n <div class="adds-range-slider-control">\n <input data-id="adds-slider-control-from" type="range" value="'.concat(s||i,'" min="').concat(i,'" max="').concat(o,'" step="').concat(n,'" />\n <input data-id="adds-slider-control-to" type="range" value="').concat(a||o,'" min="').concat(i,'" max="').concat(o,'" step="').concat(n,'" />\n </div>\n ');r.innerHTML=l}([Math.floor(parseFloat(u)),f,p,d],c.step);const m=c.styles,g=document.querySelector("#"+a+" [data-id=adds-slider-control-from]"),v=document.querySelector("#"+a+" [data-id=adds-slider-control-to]"),y=document.querySelector("#"+a+" [data-id=adds-slider-display-start]"),S=document.querySelector("#"+a+" [data-id=adds-slider-display-end]");o(g,v,m.trackColor,m.progressColor,v),s(v),n(y,p||u),n(S,d||h),g.oninput=()=>function(e,t,r,s){const[a,l]=i(e,t);o(e,t,s.trackColor,s.progressColor,t),a>l?(e.value=l,n(r,l)):n(r,a)}(g,v,y,m),v.oninput=()=>function(e,t,r,a){const[l,c]=i(e,t);o(e,t,a.trackColor,a.progressColor,t),s(t),l<=c?(t.value=c,n(r,c)):(t.value=l,n(r,l))}(g,v,S,m),g.onchange=()=>r(g,v),v.onchange=()=>r(g,v)}}v.init=function(e,t,n){(new v).initialize(e,t,n)};var y=v;class S{constructor(e,t,n){this.client=e,this.reduxStore=t,this.conf=n,this.maxNumberOfRangeBuckets=this.conf.maxNumberOfRangeBuckets||5,this.ranges=[];var r=["component.loadMore","component.pagination","component.sortby"];function i(){var e=t.getState().filters.activeRangeFacets[n.field];return!!e&&!(0,p.x)(e)}this.conf.type===b.SLIDER?(this.maxNumberOfRangeBuckets=1,this.conf.styles=this.conf.styles||{trackColor:"#C6C6C6",progressColor:"#25daa5"}):this.conf.type=b.CHECKBOX,(0,a.g)(n.containerId)&&((0,s.D)(this.reduxStore,"search",(e=>{const t=i();if(!(!e.started||e.loading||e.callBy===this.conf.field&&t||r.indexOf(e.callBy)>-1))if(e.results.hits&&e.results.hits.length){if(t&&this.conf.type===b.SLIDER){var n=this.getActiveRangeFacets(this.conf.field)[0];this.reduxStore.dispatch((0,c.S1)({[this.conf.field]:{min:n.gte,max:n.lte}},this.conf.field))}else if(t&&this.conf.type===b.CHECKBOX){const e=(0,l.w)(this.reduxStore.getState().filters,this.reduxStore.getState().configuration.baseFilters,this.conf.field);this.client.fetchCustomApi(this.conf.field,e,(e=>{this.reduxStore.dispatch((0,c.S1)(e.fieldStats,this.conf.field))}))}else"component.activeFilters"===e.callBy?(this.reduxStore.dispatch((0,c.lW)()),this.reduxStore.dispatch((0,c.S1)(e.results.fieldStats,this.conf.field))):this.reduxStore.dispatch((0,c.S1)(e.results.fieldStats,this.conf.field));this.handleCheckboxStates(!1)}else this.renderClear()})),(0,s.D)(this.reduxStore,"fieldstats",(e=>{var t=e.fieldStats[this.conf.field];if(e.callBy!==this.conf.field||void 0===t)return;if(null===t)return void this.renderRangeSlider();if(i()?this.ranges=function(e){const t=[];for(const n in e)t.push({from:e[n].gte,to:e[n].lt});return t}(this.reduxStore.getState().filters.activeRangeFacets[this.conf.field]):this.ranges=function(e,t,n){const r=e>=0?u(e):-1*h(-1*e),i=t>=0?h(t):-1*u(-1*t),o=[];let s=r;const a=h((i-r)/n);for(var l=0;l<n;l++)o.push({from:s,to:s+a}),s+=a;return o}(t.min,t.max,this.maxNumberOfRangeBuckets),this.conf.type===b.SLIDER)return void this.renderRangeSlider(e);var n={field:this.conf.field,ranges:this.ranges};const r=(0,l.w)(this.reduxStore.getState().filters,this.reduxStore.getState().configuration.baseFilters,this.conf.field);this.client.fetchRangeFacets(n,r,(e=>{this.render(e)}))})))}setRangeFilter(e,t,n){const r={min:t,max:n};this.reduxStore.dispatch((0,o.RP)(this.conf.field,r,e,!0))}setRangeSlider(e){this.reduxStore.dispatch((0,o.w$)(function(e,t,n){const r="".concat(t,"-").concat(n);return{[e]:{[r]:{gte:t,lte:n}}}}(this.conf.field,e[0],e[1]),!0,this.conf.field))}render(e){const t=document.getElementById(this.conf.containerId);if(e){const n={conf:this.conf,rangeFacets:e.rangeFacets[this.conf.field]};let r;r=this.conf.precompiledTemplate?this.conf.precompiledTemplate(n):this.conf.template?i().compile(this.conf.template)(n):f()(n),t.innerHTML=r}else t.innerHTML="";this.handleCheckboxStates(!0)}renderClear(){this.reduxStore.dispatch((0,c.lW)());document.getElementById(this.conf.containerId).innerHTML=""}renderRangeSlider(e){const t=this,n=document.getElementById(this.conf.containerId),r={conf:this.conf};if(!e)return void(n.innerHTML="");const o=this.getActiveRangeFacets(this.conf.field);let s;r.sliderConfig=Object.assign({},function(e,t){if(!e.fieldStats&&!e.fieldStats[t])return{min:null,max:null};return{min:e.fieldStats[t].min,max:e.fieldStats[t].max}}(e,this.conf.field),function(e){let t,n;return e.forEach((e=>{const r=e.gte,i=e.lte;(void 0===t||r<t)&&(t=r),(void 0===n||i>n)&&(n=i)})),{start:t,end:n}}(o)),s=this.conf.precompiledTemplate?this.conf.precompiledTemplate(r):this.conf.template?i().compile(this.conf.template)(r):g()(r),n.innerHTML=s,y.init(this.conf.containerId,(function(e){e.activeRange.length&&t.setRangeSlider(e.activeRange)}),{styles:{trackColor:this.conf.styles.trackColor,progressColor:this.conf.styles.progressColor},step:this.conf.step||1})}handleCheckboxStates(e){const t=document.getElementById(this.conf.containerId),n=this.getActiveRangeFacets(this.conf.field),r=t.getElementsByTagName("input");for(let t=0;t<r.length;t++){let i=r[t];i.checked=!!n.find((e=>e.key===i.value)),e&&(i.onchange=e=>{this.setRangeFilter(e.target.value,e.target.getAttribute("data-value-min"),e.target.getAttribute("data-value-max"))})}}getActiveRangeFacets(e){let t=[];const n=this.reduxStore.getState().filters.activeRangeFacets;if(n[e])for(let r in n[e])t.push(n[e][r]);return t}}const b={CHECKBOX:"CHECKBOX",SLIDER:"SLIDER"}},2931:function(e,t,n){"use strict";n.d(t,{RECOMMENDATION_TYPE:function(){return i},Z:function(){return r.ZP}});var r=n(3292);const i={FREQUENTLY_BOUGHT_TOGETHER:"FREQUENTLY_BOUGHT_TOGETHER",RELATED_ITEMS:"RELATED_ITEMS"}},3292:function(e,t,n){"use strict";n.d(t,{QR:function(){return u},Oq:function(){return h},ZP:function(){return p}});const r='\n <div class="addsearch-recommendations">\n {{#each hits}}\n <div class="hit">\n <div class="hit-top"> \n <span class="main-image" style="background-image: url(data:image/jpeg;base64,{{images.main_b64}})">\n <a href="{{url}}">\n <img src="{{images.main}}" alt="{{title}}" />\n </a> \n </span> \n <h3>\n <a href="{{url}}">{{title}}</a>\n </h3>\n </div>\n <div class="hit-bottom">\n <div class="highlight-content">\n {{{highlight}}}\n </div> \n \n </div>\n </div>\n {{/each}}\n </div>\n';var i=n(177),o=n.n(i),s=n(2445),a=n(5047),l=n(5880),c=n(2931);const u=c.RECOMMENDATION_TYPE.FREQUENTLY_BOUGHT_TOGETHER,h=c.RECOMMENDATION_TYPE.RELATED_ITEMS;class p{constructor(e,t,n,r){this.client=e,this.conf=n,this.reduxStore=t,r.push(n),(0,a.g)(n.containerId)&&(0,s.D)(this.reduxStore,"recommendation",(e=>{e.container===n.containerId&&this.render(e)}))}render(e){const t=e.results||{};t.blockId=this.conf.blockId;let n,i=this.conf.template||r;if(this.conf.precompiledTemplate?n=this.conf.precompiledTemplate(t):(i=this.conf.template||r,n=o().compile(i)(t)),this.renderedHtml===n)return;document.getElementById(this.conf.containerId).innerHTML=n,this.renderedHtml=n,this.reduxStore.dispatch((0,l.E5)())}}},2807:function(e,t,n){"use strict";n.d(t,{SORTBY_TYPE:function(){return m},Z:function(){return f}});var r=n(177),i=n.n(r),o=n(5306),s=n(5762),a=n(8268),l=n(2445),c=n(5047),u=n(1325),h=n.n(u),p=n(5441),d=n.n(p);class f{constructor(e,t,n){this.client=e,this.conf=n,this.reduxStore=t,this.conf.options.forEach((e=>{e.sortBy="string"==typeof e.sortBy?e.sortBy.split(","):e.sortBy,e.order="string"==typeof e.order?e.order.split(","):e.order})),(0,c.g)(n.containerId)&&(0,l.D)(this.reduxStore,"sortby",(e=>this.render(e)))}onChangeSelect(e){const t=e.options[e.selectedIndex],n=t.getAttribute("data-field"),r=t.getAttribute("data-order");this.dispatchAndRefresh(n,r)}onChangeRadio(e){const t=e.target.getAttribute("data-field"),n=e.target.getAttribute("data-order");this.dispatchAndRefresh(t,n)}dispatchAndRefresh(e,t){const n=e.split(","),r=t.split(",");this.reduxStore.dispatch((0,o.MR)(this.client,n,r,this.reduxStore)),this.reduxStore.dispatch((0,a.Y)(this.client,1,null,this.reduxStore));const i=this.reduxStore.getState().keyword.value;this.reduxStore.dispatch((0,s.yC)(this.client,i,null,null,null,this.reduxStore,null,"component.sortby"))}arraysMatch(e,t){return e.length===t.length&&e.every(((e,n)=>e===t[n]))}render(e){const{field:t,order:n}=e;let r=null;r=this.conf.type===m.RADIO_GROUP?h():d();let o,s=Object.assign({},this.conf);if(s.options.forEach((e=>{this.arraysMatch(e.sortBy,t)&&this.arraysMatch(e.order,n)?e.active=!0:e.active=!1})),o=this.conf.precompiledTemplate?this.conf.precompiledTemplate(s):this.conf.template?i().compile(this.conf.template)(s):r(s),this.renderedHtml===o)return;const a=document.getElementById(this.conf.containerId);if(a.innerHTML=o,this.renderedHtml=o,this.conf.type===m.RADIO_GROUP){const e=a.querySelectorAll("input");for(let t=0;t<e.length;t++)e[t].onclick=e=>this.onChangeRadio(e)}else if(a.querySelector("select").onchange=e=>this.onChangeSelect(e.target),e){const e=a.getElementsByTagName("option");for(let r=0;r<e.length;r++)if(e[r].getAttribute("data-field")===t&&e[r].getAttribute("data-order")===n){a.querySelector("select").value=e[r].text;break}}}}const m={SELECT_LIST:"SELECT_LIST",RADIO_GROUP:"RADIO_GROUP"}},2879:function(e,t,n){"use strict";n.d(t,{B:function(){return he},o:function(){return ue},default:function(){return pe}});var r=n(8091),i=n.n(r),o=n(177),s=n.n(o),a=n(9651),l=n(5047),c=n(2445),u=n(7569),h=n.n(u);const p="FILTER",d="RANGE_FILTER",f="FACET",m="RANGE_FACET",g="HIERARCHICAL_FACET";class v{constructor(e,t,n){this.client=e,this.conf=n,this.reduxStore=t,(0,l.g)(n.containerId)&&(0,c.D)(this.reduxStore,"filters",(e=>this.render(e)))}getFilterLabel(e,t){for(let n=0;n<t.length;n++)if(t[n][e])return t[n][e].label}emptyIfNull(e){return null==e?"":e}render(e){let t=[];for(let n in e.activeFilters)t.push({type:p,name:n,value:e.activeFilters[n],label:this.getFilterLabel(n,e.allAvailableFilters)});for(let n in e.activeRangeFilters){const r=e.activeRangeFilters[n];t.push({type:d,name:n,label:this.getFilterLabel(n,e.allAvailableFilters)+": "+this.emptyIfNull(r.gte)+"-"+this.emptyIfNull(r.lte)})}for(let r in e.activeFacets)if("category"===r||0===r.indexOf("custom_fields."))for(var n in e.activeFacets[r])t.push({name:r,type:f,value:n,label:n.replace(/^[0-9]+[x]{1}/,"")});for(let n in e.activeHierarchicalFacets)for(let r in e.activeHierarchicalFacets[n])for(let i in e.activeHierarchicalFacets[n][r])t.push({name:r,type:g,container:n,value:i,label:i});for(let n in e.activeRangeFacets)if(e.activeRangeFacets.hasOwnProperty(n))for(let r in e.activeRangeFacets[n])e.activeRangeFacets[n].hasOwnProperty(r)&&t.push({name:n,type:m,value:r,label:r,rangeMin:e.activeRangeFacets[n][r].gte,rangeMax:e.activeRangeFacets[n][r].lte});const r={active:t,clearAll:!1!==this.conf.clearAll};let i;if(i=this.conf.precompiledTemplate?this.conf.precompiledTemplate(r):this.conf.template?s().compile(this.conf.template)(r):h()(r),this.renderedHtml===i)return;const o=document.getElementById(this.conf.containerId);o.innerHTML=i,this.renderedHtml=i;const l=o.querySelectorAll("[data-type]");for(let e=0;e<l.length;e++)l[e].addEventListener("click",(e=>this.handleFilterClick(e)));const c=o.querySelector("[data-clearall]");c&&c.addEventListener("click",(e=>this.reduxStore.dispatch((0,a.x_)(!0,!0))))}handleFilterClick(e){const t=e.target.getAttribute("data-type"),n=e.target.getAttribute("data-name"),r=e.target.getAttribute("data-value"),i=e.target.getAttribute("data-container"),o=e.target.getAttribute("data-conf-fields")?e.target.getAttribute("data-conf-fields").split(","):[],s=e.target.getAttribute("data-range-min"),l=e.target.getAttribute("data-range-max");if(t===p)this.reduxStore.dispatch((0,a.cT)(n,r,!0));else if(t===d)this.reduxStore.dispatch((0,a.nw)(n,null,null));else if(t===f)this.reduxStore.dispatch((0,a.Y$)(n,r));else if(t===g)this.reduxStore.dispatch((0,a.eU)(n,i,o,r,!0));else if(t===m){const e={min:s,max:l};this.reduxStore.dispatch((0,a.RP)(n,e,r,!0,!0))}}}var y=n(3488),S=n(6490),b=n(3874),x=n.n(b);class k{constructor(e,t,n,r){this.client=e,this.reduxStore=t,this.conf=n;var i=["component.loadMore","component.pagination","component.sortby"];(0,l.g)(n.containerId)&&(0,c.D)(this.reduxStore,"search",(t=>{var n,o=this.reduxStore.getState().filters.activeFacets;if(!(t.loading||i.indexOf(t.callBy)>-1))if((n=o[this.conf.field])&&0!==Object.keys(n).length&&this.conf.advancedSticky){var s=(0,S.w)(this.reduxStore.getState().filters,r,this.conf.field);if(t.callBy!==this.conf.field)e.fetchCustomApi(this.conf.field,s,(e=>{this.render(e,!0)}));else{const e=this.getActiveFacets(this.conf.field);this.updateCheckboxStates(e)}}else this.render(t)}))}setFilter(e){this.reduxStore.dispatch((0,a.Y$)(this.conf.field,e,!0))}render(e,t){if(e.loading)return;const n=this.conf.field,r=t?e:e.results;let i=[];r&&r.facets&&r.facets[n]&&(i=r.facets[n]);const o=this.getActiveFacets(n);!0!==this.conf.sticky||this.conf.advancedSticky||(this.keyword===e.keyword&&this.stickyFacets&&0!==o.length?i=this.stickyFacets:(this.keyword=e.keyword,this.stickyFacets=i)),this.conf.facetsFilter&&(i=this.conf.facetsFilter(i));const a={conf:this.conf,facets:i};let l;if(l=this.conf.precompiledTemplate?this.conf.precompiledTemplate(a):this.conf.template?s().compile(this.conf.template)(a):x()(a),this.renderedHtml===l&&o===this.renderedActiveFacets)return;this.renderedActiveFacets=o;const c=document.getElementById(this.conf.containerId);c.innerHTML=l,this.renderedHtml=l;const u=c.getElementsByTagName("input");for(let e=0;e<u.length;e++){let t=u[e];t.checked=-1!==o.indexOf(t.value),t.onchange=e=>{this.setFilter(e.target.value,e.target.checked)}}}getActiveFacets(e){let t=[];const n=this.reduxStore.getState().filters.activeFacets;if(n[e])for(let r in n[e])t.push(r);return t}updateCheckboxStates(e){const t=document.getElementById(this.conf.containerId).getElementsByTagName("input");for(let n=0;n<t.length;n++){let r=t[n];r.checked=-1!==e.indexOf(r.value)}}}var E=n(7985),O=n.n(E),_=n(1514),P=n(1063),w=n.n(P);class C{constructor(e,t,n,r){function i(e,t){let n=!0;return e?(t.forEach((t=>{var r;(r=e[t])&&0!==Object.keys(r).length&&(n=!1)})),n):n}this.client=e,this.reduxStore=t,this.conf=n;var o=["component.loadMore","component.pagination","component.sortby"];const s=this.conf.template_subHierarchicalFacetsTemplate||w();(0,_.CW)("subHierarchicalFacetsTemplate",s),(0,_.Au)("validateOpenState",(function(e){return-1===t.getState().filters.openedHierarchicalFacetGroups.indexOf(e)})),(0,l.g)(n.containerId)&&(0,c.D)(this.reduxStore,"search",(t=>{var n=this.reduxStore.getState().filters.activeHierarchicalFacets[this.conf.containerId];if(!(t.loading||o.indexOf(t.callBy)>-1))if(i(n,this.conf.fields)||!t.results.hits.length)this.render(t);else{var s=(0,S.w)(this.reduxStore.getState().filters,r,this.conf.fields);if(-1===this.conf.fields.indexOf(t.callBy))e.fetchCustomApi(this.conf.field,s,(e=>{this.render(e,!0)}));else{var a=document.getElementById(this.conf.containerId);this._updateCheckBoxes(a,this.getActiveFacets(this.conf.fields,this.conf.containerId),!1,this.reduxStore.getState().filters.indeterminateHierarchicalFacets)}}}))}setFilter(e,t){this.reduxStore.dispatch((0,a.eU)(t,this.conf.containerId,this.conf.fields,e,!0))}render(e,t){if(e.loading)return;const n=this.conf.fields,r=t?e:e.results;let i=[];r&&r.hierarchicalFacets&&r.hierarchicalFacets[n[0]]&&(i=r.hierarchicalFacets[n[0]],i=i.map((e=>(e.field=e.field.replace("hierarchical_facet.",""),e))));const o=this.getActiveFacets(n,this.conf.containerId);this.conf.facetsFilter&&(i=this.conf.facetsFilter(i));const a={conf:this.conf,facets:i};let l;if(l=this.conf.precompiledTemplate?this.conf.precompiledTemplate(a):this.conf.template?s().compile(this.conf.template)(a):O()(a),this.renderedHtml===l&&o===this.renderedActiveFacets)return;this.renderedActiveFacets=o;const c=document.getElementById(this.conf.containerId);c.innerHTML=l,this.renderedHtml=l,this._updateCheckBoxes(c,o,!0,this.reduxStore.getState().filters.indeterminateHierarchicalFacets);const u=c.getElementsByClassName("addsearch-facet-group-expansion-arrow");for(let e=0;e<u.length;e++)u[e].addEventListener("click",(()=>{u[e].parentNode.parentNode.classList.toggle("shrink"),this._toggleFacetGroupOpenState(u[e].parentNode.parentNode.getAttribute("data-facet"))}))}getActiveFacets(e,t){let n=[];const r=this.reduxStore.getState().filters.activeHierarchicalFacets;return e.forEach((function(e){if(r[t]&&r[t][e])for(let i in r[t][e])n.push(i)})),n}_toggleFacetGroupOpenState(e){const t=this.reduxStore.getState().filters.openedHierarchicalFacetGroups,n=t.indexOf(e);-1===n?t.push(e):t.splice(n,1)}_updateCheckBoxes(e,t,n,r){const i=e.getElementsByTagName("input");for(let e=0;e<i.length;e++){let o=i[e];o.checked=-1!==t.indexOf(o.value),o.indeterminate=r.indexOf(o.value)>-1,n&&(o.onchange=e=>{this.setFilter(e.target.value,e.target.getAttribute("data-field"))})}}}var A=n(66),R=n(9538),T=n(7407);var I=n(8268),F=n(5762),L=n(5623),M=n.n(L);class N{constructor(e,t,n){this.client=e,this.conf=n,this.reduxStore=t,(0,l.g)(n.containerId)&&(0,c.D)(this.reduxStore,"search",(()=>this.render()))}render(){const e=this.reduxStore.getState(),t=e.search.results.page||1,n=this.client.getSettings().paging.pageSize,r=e.search.results.total_hits||0,i=Math.ceil(r/n),o=function(e,t){if(!t||t<2||!e||e>t)return null;for(var n=[],r=0;r<t;r++)n.push(r+1);if(t<=9)return n;if(t>9&&e<7)return n.slice(0,9);if(t>9&&e>=t-3)return n.slice(t-9);var i=n.indexOf(e);return i-4>=0&&i+5<=n.length?n.slice(i-4,i+5):null}(t,i),a={currentPage:t,lastPage:o?o[o.length-1]:0,totalPages:i,pages:o};let l;if(l=this.conf.precompiledTemplate?this.conf.precompiledTemplate(a):this.conf.template?s().compile(this.conf.template)(a):M()(a),this.renderedHtml===l)return;const c=document.getElementById(this.conf.containerId);c.innerHTML=l,this.renderedHtml=l;const u=c.getElementsByTagName("button");for(let e=0;e<u.length;e++){u[e].onclick=e=>this.handleOnclick(e)}}handleOnclick(e){const t=e.target;let n=null;if("previous"===t.getAttribute("data-page")){n=this.reduxStore.getState().pagination.page-1}else if("next"===t.getAttribute("data-page")){n=(this.reduxStore.getState().pagination.page||1)+1}else n=parseInt(t.getAttribute("data-page"),10);this.reduxStore.dispatch((0,I.Y)(this.client,n,null,this.reduxStore));const r=this.reduxStore.getState().keyword.value,i=this.conf.onResultsScrollTo||"top";this.reduxStore.dispatch((0,F.yC)(this.client,r,i,null,null,this.reduxStore,null,"component.pagination"))}}var j=n(8291),H=n.n(j),D=n(8640),B=n(6484),U=n(8266);const q=40,G=38,V=13,$=8,K=46;class Y{constructor(e,t,n,r,i){this.client=e,this.reduxStore=t,this.conf=n,this.matchAllQuery=r,this.minLengthToShowResults=n.minLengthToShowResults||1,this.firstRenderDone=!1,this.firstSelectorBindDone=!1,this.onSearch=i,n.selectorToBind?(this.bindContainer(),(0,c.D)(this.reduxStore,"keyword",(e=>{e.setSearchFieldValue&&this.updateValueOnAllBoundFields(e.value)})),(0,c.D)(this.reduxStore,"autocomplete",(e=>this.onAutocompleteUpdateBoundField(e)))):(0,l.g)(n.containerId)&&((0,c.D)(this.reduxStore,"keyword",(e=>{e.searchFieldContainerId!==this.conf.containerId&&null!==e.searchFieldContainerId||this.render(e.value)})),(0,c.D)(this.reduxStore,"autocomplete",(e=>this.onAutocompleteUpdate(e))))}updateValueOnAllBoundFields(e){for(var t=0;t<this.boundFields.length;t++)this.boundFields[t].value=e}onAutocompleteUpdate(e){if((e.suggestions.length>0||e.customFields.length>0)&&e.setSuggestionToSearchField)if(null!==e.activeSuggestionIndex&&e.setSuggestionToSearchField){const t=(e.suggestions[e.activeSuggestionIndex]||e.customFields[e.activeSuggestionIndex]).value;this.render(t)}else null===e.activeSuggestionIndex&&this.render(this.reduxStore.getState().keyword.value)}onAutocompleteUpdateBoundField(e){if(e.setSuggestionToSearchField)if(null!==e.activeSuggestionIndex){const t=e.suggestions[e.activeSuggestionIndex]||e.customFields[e.activeSuggestionIndex];if(!t)return;const n=t.value;this.updateValueOnAllBoundFields(n)}else this.updateValueOnAllBoundFields(this.reduxStore.getState().keyword.value)}executeSearch(e,t,n){n||this.reduxStore.dispatch((0,D.gK)());let r=t;""===r&&this.matchAllQuery&&(r=he),0!==r.indexOf(ue)&&this.reduxStore.dispatch((0,I.Y)(e,1,null,this.reduxStore)),this.reduxStore.dispatch((0,a.az)(!1,!0)),this.onSearch(r,!1,n,this.conf.fieldForInstantRedirect,this.reduxStore.getState().configuration.fieldForInstantRedirect)}redirectOrSearch(e){const t=this.reduxStore.getState().search.searchResultsPageUrl;t&&!0!==this.conf.ignoreSearchResultsPageUrl&&e&&e.length>0?(0,U.Rl)(t,e):this.executeSearch(this.client,e,!1)}addEventListenersToField(e){e.oninput=e=>this.oninput(e),e.onkeypress=e=>this.onkeypress(e),e.onkeyup=e=>this.onkeyup(e),e.onfocus=e=>this.onfocus(e),e.onblur=e=>setTimeout((()=>this.onblur()),200)}handleAutoFocus(e){!1!==this.conf.autofocus&&!1===this.firstRenderDone&&(e.focus(),this.firstRenderDone=!0)}handleSubmitKeyword(e){const t=this.reduxStore;""===e&&this.matchAllQuery&&(e=he),t.dispatch((0,B.q)(e,!0,null,!1)),t.dispatch((0,D.ES)()),this.redirectOrSearch(e)}render(e){const t=document.getElementById(this.conf.containerId);t.querySelector("input")?null!==e&&e!==he&&t.querySelector("input").value!==e&&(t.querySelector("input").value=e):(this.conf.precompiledTemplate?t.innerHTML=this.conf.precompiledTemplate(this.conf):this.conf.template?t.innerHTML=s().compile(this.conf.template)(this.conf):t.innerHTML=H()(this.conf),this.field=t.querySelector("input"),e!==he&&(this.field.value=e),this.addEventListenersToField(this.field),t.querySelector("button")&&(t.querySelector("button").onclick=()=>{let e=this.field.value;this.handleSubmitKeyword(e)}),t.querySelector("form")&&(t.querySelector("form").onsubmit=e=>e.preventDefault()),this.handleAutoFocus(this.field))}bindContainer(){this.boundFields=document.querySelectorAll(this.conf.selectorToBind);for(var e=0;e<this.boundFields.length;e++)this.addEventListenersToField(this.boundFields[e]),this.boundFields[e].form&&(this.boundFields[e].form.onsubmit=e=>{e.preventDefault()});if(this.conf.buttonSelector&&document.querySelector(this.conf.buttonSelector)){const e=document.querySelector(this.conf.buttonSelector);"submit"===e.type&&(e.type="button"),e.onclick=()=>{let e=this.boundFields[0].value;this.handleSubmitKeyword(e)}}1===this.boundFields.length&&this.handleAutoFocus(this.boundFields[0])}oninput(e){const t=this.reduxStore;let n=e.target.value;""===n&&this.matchAllQuery&&(n=he),e.keyCode!==$&&e.keyCode!==K||t.dispatch((0,D.QU)(null,!1));const r=!0===this.conf.ignoreAutocomplete;n.length<this.minLengthToShowResults||(t.dispatch((0,B.q)(n,r,this.conf.containerId)),!0===this.conf.searchAsYouType&&this.executeSearch(this.client,n,!0))}onkeyup(e){const t=this.reduxStore;e.keyCode===q?t.dispatch((0,D.v1)(D.qN)):e.keyCode===G&&t.dispatch((0,D.v1)(D.NF))}onkeypress(e){if(e.keyCode===V){const t=e.target.value;this.handleSubmitKeyword(t)}}onfocus(e){""===e.target.value&&(this.conf.onfocusAutocompleteMatchAllQuery?this.reduxStore.dispatch((0,B.q)(he,!1)):this.warmupQueryCompleted||this.matchAllQuery||(this.executeSearch(this.client,ue+Math.random(),!1),this.warmupQueryCompleted=!0)),this.reduxStore.dispatch((0,D.PK)())}onblur(){this.reduxStore.getState().autocomplete.hideAutomatically&&this.reduxStore.dispatch((0,D.ES)())}}var W=n(1410),J=n(147),Q=n.n(J),Z=n(2773),z=n.n(Z),X=n(6927),ee=n.n(X),te=n(9368),ne=n.n(te);class re{constructor(e,t,n){this.client=e,this.conf=n,this.reduxStore=t;const r=this.conf.template_resultcount||ee(),i=this.conf.template_image||ne();(0,_.CW)("numberOfResultsTemplate",r),(0,_.CW)("searchResultImageTemplate",i),(0,_.Au)("removeTrailingQueriesFromUrl",(e=>{if(e)return e.replace(/\?.*$/,"")}));const o=this.conf.categorySelectionFunction||_._P;(0,_.Au)("selectCategory",(e=>o(e,this.conf.categoryAliases))),(0,l.g)(n.containerId)&&(0,c.D)(this.reduxStore,"search",(()=>this.render()))}render(){const e=this.reduxStore.getState().search,t=e.results||{};let n;if(t.resultcount=t.hits&&!1!==this.conf.showNumberOfResults,t.keyword=e.keyword,n=t.hits&&0===t.hits.length?this.conf.precompiledTemplateNoResults?this.conf.precompiledTemplateNoResults(t):this.conf.template_noresults?s().compile(this.conf.template_noresults)(t):z()(t):this.conf.precompiledTemplate?this.conf.precompiledTemplate(t):this.conf.template?s().compile(this.conf.template)(t):Q()(t),this.renderedHtml===n)return;const r=document.getElementById(this.conf.containerId);r.innerHTML=n,this.renderedHtml=n,this.conf.renderCompleteCallback&&"function"==typeof this.conf.renderCompleteCallback&&this.conf.renderCompleteCallback();const i=r.querySelectorAll("[data-analytics-click]");(0,W.Qc)(this.client,i,t)}}class ie{constructor(e,t,n){this.client=e,this.reduxStore=t,this.conf=n,(0,l.g)(n.containerId)&&(n.template||n.precompiledTemplate)&&(0,c.D)(this.reduxStore,"segmentedsearch",(e=>this.render(e))),this.client.setCollectAnalytics(!1)}render(e){if(0!==e.pendingSegments.length)return;let t;if(t=this.conf.precompiledTemplate?this.conf.precompiledTemplate(e):s().compile(this.conf.template)(e),this.renderedHtml===t)return;const n=document.getElementById(this.conf.containerId);n.innerHTML=t,this.renderedHtml=t;const r=n.querySelectorAll("[data-analytics-click]");(0,W.Qc)(this.client,r,e)}}var oe=n(2807),se=n(2932),ae=n(5306),le=n(2931),ce=n(5880);const ue="_addsearch_",he="*";i().polyfill(),(0,_.Ur)();class pe{constructor(e,t){this.client=e,this.segmentedSearchClients={},this.recommendationsSettings=[],this.settings=t||{},U.rS.SEARCH=this.settings.searchParameter||U.rS.SEARCH,U.rS.FACETS=this.settings.facetsParameter||U.rS.FACETS,this.hasSearchResultsComponent=!1,this.reduxStore=(0,c.$)(this.settings)}start(){this.initFromClientSettings(),this.client.setCollectAnalytics(!1),(0,W.d6)(this.settings.analyticsCallback),(0,W.WV)(this.settings.collectAnalytics),this.reduxStore.dispatch((0,F.WE)(this.settings.searchResultsPageUrl));const e=this.settings&&this.settings.createFilterObjectFunction?this.settings.createFilterObjectFunction:S.w;this.hasSearchResultsComponent&&(0,U.Vc)(this.client,this.reduxStore,e,((e,t)=>this.executeSearch(e,t,!1,null,this.settings.fieldForInstantRedirect)),this.settings.matchAllQuery,this.settings.baseFilters),new S.Z(this.client,this.reduxStore,e,this.settings.onFilterChange,this.settings.baseFilters,this.segmentedSearchClients),!0===this.settings.matchAllQuery&&this.matchAllQuery();for(var t=0;t<this.recommendationsSettings.length;t++)this.recommendationsSettings[t].ignoreFetchOnStart||this.fetchRecommendation(this.recommendationsSettings[t].containerId);this.reduxStore.dispatch((0,F.BL)())}executeSearch(e,t,n,r,i){this.reduxStore.dispatch((0,F.yC)(this.client,e,t,!1,n,this.reduxStore,r,"executeSearch",i));for(let t in this.segmentedSearchClients)this.reduxStore.dispatch((0,se.cR)(this.segmentedSearchClients[t].client,t,e))}fetchRecommendation(e){const t=this.recommendationsSettings.filter((t=>t.containerId===e))[0];t&&this.reduxStore.dispatch((0,ce.l8)(this.client,{container:t.containerId,type:t.type,blockId:t.blockId,configurationKey:t.configurationKey,itemId:t.getProductIdFunction?t.getProductIdFunction.call(void 0,void 0):null}))}initFromClientSettings(){const e=this.client.getSettings().paging;this.reduxStore.dispatch((0,ae.MR)(this.client,e.sortBy,e.sortOrder))}matchAllQuery(e){const t=this.reduxStore;""===t.getState().keyword.value&&(t.dispatch((0,B.q)(he,!0)),this.executeSearch(he,e,!1))}log(e){this.settings.debug&&console.log(e)}searchField(e){e.fieldForInstantRedirect&&console.log('WARNING: searchField setting "fieldForInstantRedirect" is deprecated. Use it in Search UI configuration object instead.');new Y(this.client,this.reduxStore,e,!0===this.settings.matchAllQuery,((e,t,n,r,i)=>this.executeSearch(e,t,n,r,i)))}autocomplete(e){new y.Z(this.client,this.reduxStore,e)}searchResults(e){this.hasSearchResultsComponent=!0,new re(this.client,this.reduxStore,e)}segmentedSearchResults(e){e.client?(this.hasSearchResultsComponent=!0,this.segmentedSearchClients[e.containerId]={},this.segmentedSearchClients[e.containerId].client=e.client,this.segmentedSearchClients[e.containerId].originalFilters=Object.assign({},e.