@bridgeline-digital/hawksearch-handlebars-ui 6.3.0 → 6.3.2
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.
- package/changelog.md +13 -0
- package/dist/hawksearch-handlebars-ui.cjs +2 -2
- package/dist/hawksearch-handlebars-ui.js +8 -4
- package/dist/hawksearch-handlebars-ui.min.js +4 -4
- package/dist/hawksearch-handlebars-ui.umd.cjs +2 -2
- package/dist/index.d.ts +8 -0
- package/docs/assets/search.js +1 -1
- package/docs/index.html +2 -2
- package/docs/interfaces/Configuration.SearchFieldComponentConfig.html +13 -0
- package/docs/interfaces/Configuration.SmartSearchFieldComponentConfig.html +2 -1
- package/docs/interfaces/Configuration.UnifiedSearchFieldComponentConfig.html +1 -1
- package/package.json +1 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* name: @bridgeline-digital/hawksearch-handlebars-ui
|
|
3
3
|
*
|
|
4
|
-
* version: v6.3.
|
|
4
|
+
* version: v6.3.2
|
|
5
5
|
*
|
|
6
6
|
* description: The HawkSearch Handlebars UI package allows you to add a highly-customizable search results page to your website powered by HawkSearch.
|
|
7
7
|
*
|
|
@@ -8733,6 +8733,10 @@ class SearchFieldComponent extends BaseComponent {
|
|
|
8733
8733
|
var _a;
|
|
8734
8734
|
return ((_a = HawkSearch.config.autocomplete) == null ? void 0 : _a.recommendationsEnabled) ?? false;
|
|
8735
8735
|
}
|
|
8736
|
+
get searchDebounceValue() {
|
|
8737
|
+
var _a;
|
|
8738
|
+
return ((_a = this.configuration) == null ? void 0 : _a.searchDebounceValue) ?? 250;
|
|
8739
|
+
}
|
|
8736
8740
|
get disableAutofill() {
|
|
8737
8741
|
var _a, _b;
|
|
8738
8742
|
return ((_b = (_a = HawkSearch.config.components) == null ? void 0 : _a["search-field"]) == null ? void 0 : _b.disableAutofill) ?? false;
|
|
@@ -8815,7 +8819,7 @@ class SearchFieldComponent extends BaseComponent {
|
|
|
8815
8819
|
if (Array.isArray(this.placeholder)) {
|
|
8816
8820
|
this.animatePlaceholder();
|
|
8817
8821
|
}
|
|
8818
|
-
e.addEventListener("keyup", debounce(onKeyUp,
|
|
8822
|
+
e.addEventListener("keyup", debounce(onKeyUp, this.searchDebounceValue));
|
|
8819
8823
|
});
|
|
8820
8824
|
this.rootElement.querySelectorAll("hawksearch-autocomplete").forEach((e) => {
|
|
8821
8825
|
e.addEventListener("hawksearch:close-autocomplete", (event) => {
|
|
@@ -9977,7 +9981,7 @@ class VisualSearchFieldComponent extends BaseComponent {
|
|
|
9977
9981
|
this.bindFromEvent = true;
|
|
9978
9982
|
this.previousValue = "";
|
|
9979
9983
|
this.maxSize = 4 * 1024 * 1024;
|
|
9980
|
-
this.allowedExtensions = ["jpg", "jpeg", "png", "webp"];
|
|
9984
|
+
this.allowedExtensions = ["jpg", "jpeg", "png", "webp", "avif"];
|
|
9981
9985
|
}
|
|
9982
9986
|
handleFiles(files) {
|
|
9983
9987
|
var _a;
|
|
@@ -10327,7 +10331,7 @@ class BaseService {
|
|
|
10327
10331
|
stripHtml(input) {
|
|
10328
10332
|
let output = input.replace(/<[^>]+>/g, "");
|
|
10329
10333
|
output = unescape(output);
|
|
10330
|
-
output = decodeURIComponent(output);
|
|
10334
|
+
output = decodeURIComponent(output.replace(/%(?![0-9][0-9a-fA-F]+)/g, "%25"));
|
|
10331
10335
|
return output;
|
|
10332
10336
|
}
|
|
10333
10337
|
getValue(data, fieldMappings) {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* name: @bridgeline-digital/hawksearch-handlebars-ui
|
|
3
3
|
*
|
|
4
|
-
* version: v6.3.
|
|
4
|
+
* version: v6.3.2
|
|
5
5
|
*
|
|
6
6
|
* description: The HawkSearch Handlebars UI package allows you to add a highly-customizable search results page to your website powered by HawkSearch.
|
|
7
7
|
*
|
|
@@ -722,7 +722,7 @@ Expecting `+C.join(", ")+", got '"+(this.terminals_[b]||b)+"'":T="Parse error on
|
|
|
722
722
|
</div>`;class oc extends U{constructor(){super(...arguments),this.componentName="query-suggestions",this.defaultHtml=sc,this.bindFromEvent=!0}registerHelpers(){var e,t,r,a;super.registerHelpers();const i=((t=(e=this.configuration)==null?void 0:e.strings)==null?void 0:t.orDelimeter)??"or",s=((a=(r=this.configuration)==null?void 0:r.strings)==null?void 0:a.prompt)??"Did you mean to search for ${suggestions}?";this.handlebars.registerHelper("query-suggestions",function(d){function u(_){return`<a hawksearch-query="${encodeURIComponent(_)}" class="query-suggestions__link">${_}</a>`}const g=", ",y=`, ${i} `;let h="";d.length<=2?h=d.map(u).join(` ${i} `):h=d.slice(0,d.length-1).map(u).join(g)+y+u(d[d.length-1]);const v=s.replace("${suggestions}",h);return new HawkSearch.handlebars.SafeString(v)})}renderContent(){var e;return!!this.data&&!!this.data.display&&!!((e=this.data.querySuggestions)!=null&&e.length)}getContentModel(){return{querySuggestions:this.data.querySuggestions??[]}}onRender(){super.onRender(),this.rootElement.querySelectorAll("[hawksearch-query]").forEach(e=>{e.addEventListener("click",t=>{t.preventDefault();const a=t.currentTarget.getAttribute("hawksearch-query");a&&HawkSearch.services.search.query(a)})})}}const lc=`<div class="search-field">
|
|
723
723
|
<input type="text" hawksearch-input value="{{query}}" placeholder="{{strings.placeholder}}" />
|
|
724
724
|
<hawksearch-autocomplete></hawksearch-autocomplete>
|
|
725
|
-
</div>`;class cc extends U{constructor(){super(...arguments),this.componentName="search-field",this.defaultHtml=lc,this.bindFromEvent=!0,this.previousValue="",this.placeholderIdx=0,this.intervalId=setTimeout(()=>{}),this.charIdx=0}get autocompleteMinCharacterCount(){var e;return((e=HawkSearch.config.autocomplete)==null?void 0:e.minCharacterCount)??1}get recommendationsEnabled(){var e;return((e=HawkSearch.config.autocomplete)==null?void 0:e.recommendationsEnabled)??!1}get disableAutofill(){var e,t;return((t=(e=HawkSearch.config.components)==null?void 0:e["search-field"])==null?void 0:t.disableAutofill)??!1}get placeholder(){var e,t;return((t=(e=this.configuration)==null?void 0:e.strings)==null?void 0:t.placeholder)??"Enter keywords"}connectedCallback(){super.connectedCallback(),this.clickEventHandler=e=>{!!e.target.closest("hawksearch-search-field")||this.toggleAutocomplete(!1)},this.rootElement.ownerDocument.addEventListener("click",this.clickEventHandler)}disconnectedCallback(){super.disconnectedCallback(),this.rootElement.ownerDocument.removeEventListener("click",this.connectedCallback)}getContentModel(){var e;return{query:(e=this.data)==null?void 0:e.query,strings:{placeholder:this.placeholder}}}onRender(){super.onRender();const e=["Enter","NumpadEnter"];Array.isArray(this.placeholder)&&this.placeholder.length>1&&clearInterval(this.intervalId),this.rootElement.querySelectorAll("[hawksearch-input]").forEach(t=>{if(this.disableAutofill){const a=t;a.value=""}t.addEventListener("focus",a=>{const s=t.value.trim();s&&this.previousAutocompleteResponse?HawkSearch.services.autocomplete.bindComponent(this.previousAutocompleteResponse):s||this.displayDefaultAutocomplete()}),t.addEventListener("keyup",a=>{if(!e.includes(a.code))return;const s=a.currentTarget.value.trim();s||(clearInterval(this.intervalId),this.animatePlaceholder()),this.toggleAutocomplete(!1),HawkSearch.services.search.query(s)});const r=async a=>{const s=t.value.trim();e.includes(a.code)||s===this.previousValue||(this.previousValue=s,this.toggleAutocomplete(!!s),s&&s.length>this.autocompleteMinCharacterCount?this.previousAutocompleteResponse=await HawkSearch.services.autocomplete.query(s):this.displayDefaultAutocomplete())};Array.isArray(this.placeholder)&&this.animatePlaceholder(),t.addEventListener("keyup",oe(r,
|
|
725
|
+
</div>`;class cc extends U{constructor(){super(...arguments),this.componentName="search-field",this.defaultHtml=lc,this.bindFromEvent=!0,this.previousValue="",this.placeholderIdx=0,this.intervalId=setTimeout(()=>{}),this.charIdx=0}get autocompleteMinCharacterCount(){var e;return((e=HawkSearch.config.autocomplete)==null?void 0:e.minCharacterCount)??1}get recommendationsEnabled(){var e;return((e=HawkSearch.config.autocomplete)==null?void 0:e.recommendationsEnabled)??!1}get searchDebounceValue(){var e;return((e=this.configuration)==null?void 0:e.searchDebounceValue)??250}get disableAutofill(){var e,t;return((t=(e=HawkSearch.config.components)==null?void 0:e["search-field"])==null?void 0:t.disableAutofill)??!1}get placeholder(){var e,t;return((t=(e=this.configuration)==null?void 0:e.strings)==null?void 0:t.placeholder)??"Enter keywords"}connectedCallback(){super.connectedCallback(),this.clickEventHandler=e=>{!!e.target.closest("hawksearch-search-field")||this.toggleAutocomplete(!1)},this.rootElement.ownerDocument.addEventListener("click",this.clickEventHandler)}disconnectedCallback(){super.disconnectedCallback(),this.rootElement.ownerDocument.removeEventListener("click",this.connectedCallback)}getContentModel(){var e;return{query:(e=this.data)==null?void 0:e.query,strings:{placeholder:this.placeholder}}}onRender(){super.onRender();const e=["Enter","NumpadEnter"];Array.isArray(this.placeholder)&&this.placeholder.length>1&&clearInterval(this.intervalId),this.rootElement.querySelectorAll("[hawksearch-input]").forEach(t=>{if(this.disableAutofill){const a=t;a.value=""}t.addEventListener("focus",a=>{const s=t.value.trim();s&&this.previousAutocompleteResponse?HawkSearch.services.autocomplete.bindComponent(this.previousAutocompleteResponse):s||this.displayDefaultAutocomplete()}),t.addEventListener("keyup",a=>{if(!e.includes(a.code))return;const s=a.currentTarget.value.trim();s||(clearInterval(this.intervalId),this.animatePlaceholder()),this.toggleAutocomplete(!1),HawkSearch.services.search.query(s)});const r=async a=>{const s=t.value.trim();e.includes(a.code)||s===this.previousValue||(this.previousValue=s,this.toggleAutocomplete(!!s),s&&s.length>this.autocompleteMinCharacterCount?this.previousAutocompleteResponse=await HawkSearch.services.autocomplete.query(s):this.displayDefaultAutocomplete())};Array.isArray(this.placeholder)&&this.animatePlaceholder(),t.addEventListener("keyup",oe(r,this.searchDebounceValue))}),this.rootElement.querySelectorAll("hawksearch-autocomplete").forEach(t=>{t.addEventListener("hawksearch:close-autocomplete",r=>{this.toggleAutocomplete(!1)})})}toggleAutocomplete(e){this.rootElement.querySelectorAll("hawksearch-autocomplete").forEach(t=>{const r=t;r.style.display=e?"block":"none"})}async displayDefaultAutocomplete(){if(!(!this.recommendationsEnabled||this.defaultAutocompleteResponse===!1)){if(this.defaultAutocompleteResponse===void 0){const e=await HawkSearch.services.autocomplete.query();this.defaultAutocompleteResponse=e||!1}this.defaultAutocompleteResponse&&HawkSearch.services.autocomplete.bindComponent(this.defaultAutocompleteResponse)}}animatePlaceholder(){this.intervalId=setInterval(this.onTick.bind(this),50)}setPlaceholder(){const t=this.placeholder[this.placeholderIdx].substring(0,this.charIdx+1);this.rootElement.querySelectorAll("[hawksearch-input]").forEach(r=>{r.setAttribute("placeholder",t)})}onTick(){const e=this.placeholder[this.placeholderIdx];this.charIdx===e.length&&setTimeout(this.goReverse.bind(this),1e3),this.setPlaceholder(),this.charIdx++}goReverse(){clearInterval(this.intervalId),this.intervalId=setInterval(this.onTickReverse.bind(this,()=>{this.charIdx=0,this.placeholderIdx++,this.placeholderIdx===this.placeholder.length&&(this.placeholderIdx=0)}),100)}onTickReverse(e){this.charIdx===0?(e.bind(this)(),clearInterval(this.intervalId),this.animatePlaceholder()):(this.setPlaceholder(),this.charIdx--)}}const dc=`<div class="search-field">
|
|
726
726
|
<input type="text" hawksearch-input hawksearch-concept-search value="{{query}}" placeholder="{{strings.placeholder}}" />
|
|
727
727
|
</div>`;class uc extends U{constructor(){super(...arguments),this.componentName="conceptsearch-field",this.defaultHtml=dc,this.bindFromEvent=!0,this.previousValue="",this.placeholderIdx=0,this.intervalId=setTimeout(()=>{}),this.charIdx=0}get searchOnKeyPress(){var e;return((e=this.configuration)==null?void 0:e.searchOnKeyPress)??!1}get searchMinCharacterCount(){var e;return((e=this.configuration)==null?void 0:e.searchMinCharacterCount)??10}get searchDebounceValue(){var e;return((e=this.configuration)==null?void 0:e.searchDebounceValue)??350}get placeholder(){var e,t;return((t=(e=this.configuration)==null?void 0:e.strings)==null?void 0:t.placeholder)??"Enter Keyword"}connectedCallback(){super.connectedCallback()}disconnectedCallback(){super.disconnectedCallback(),this.rootElement.ownerDocument.removeEventListener("click",this.connectedCallback)}getContentModel(){var e;return{query:(e=this.data)==null?void 0:e.query,strings:{placeholder:this.placeholder}}}onRender(){super.onRender();const e=["Enter","NumpadEnter"];Array.isArray(this.placeholder)&&this.placeholder.length>1&&clearInterval(this.intervalId),this.rootElement.querySelectorAll("[hawksearch-input]").forEach(t=>{t.addEventListener("keyup",a=>{if(!e.includes(a.code))return;const s=a.currentTarget.value.trim();s||(clearInterval(this.intervalId),this.animatePlaceholder()),this.handleSearchRequest(s)});const r=a=>{const s=t.value.trim();!this.searchOnKeyPress||s===this.previousValue||s&&s.length>this.searchMinCharacterCount&&this.handleSearchRequest(s)};Array.isArray(this.placeholder)&&this.animatePlaceholder(),t.addEventListener("keyup",oe(r,this.searchDebounceValue))})}handleSearchRequest(e){this.previousValue=e,HawkSearch.services.search.query({queryString:e,requestType:"ConceptSearch"})}animatePlaceholder(){this.intervalId=setInterval(this.onTick.bind(this),50)}setPlaceholder(){const t=this.placeholder[this.placeholderIdx].substring(0,this.charIdx+1);this.rootElement.querySelectorAll("[hawksearch-input]").forEach(r=>{r.setAttribute("placeholder",t)})}onTick(){const e=this.placeholder[this.placeholderIdx];this.charIdx===e.length&&setTimeout(this.goReverse.bind(this),1e3),this.setPlaceholder(),this.charIdx++}goReverse(){clearInterval(this.intervalId),this.intervalId=setInterval(this.onTickReverse.bind(this,()=>{this.charIdx=0,this.placeholderIdx++,this.placeholderIdx===this.placeholder.length&&(this.placeholderIdx=0)}),100)}onTickReverse(e){this.charIdx===0?(e.bind(this)(),clearInterval(this.intervalId),this.animatePlaceholder()):(this.setPlaceholder(),this.charIdx--)}}const hc=`<div class="conversationalsearch">
|
|
728
728
|
<div class="conversationalsearch__body">
|
|
@@ -961,7 +961,7 @@ Expecting `+C.join(", ")+", got '"+(this.terminals_[b]||b)+"'":T="Parse error on
|
|
|
961
961
|
</p>
|
|
962
962
|
<p class="visualsearch-field__drop-area__drop-msg">{{strings.dropImageMessage}}</p>
|
|
963
963
|
</div>
|
|
964
|
-
</div>`;class Dc extends U{constructor(){super(...arguments),this.componentName="visualsearch-field",this.defaultHtml=Tc,this.bindFromEvent=!0,this.previousValue="",this.maxSize=4*1024*1024,this.allowedExtensions=["jpg","jpeg","png","webp"]}handleFiles(e){var t;const r=e[0],a=(t=r.name.split(".").pop())==null?void 0:t.toLowerCase();if(!this.isValidFile(r,a))return;const i=new FileReader;i.onload=s=>{var d;const u=new Image;u.src=i.result,this.rootElement.querySelectorAll("[hawksearch-visualsearch-display]").forEach(y=>{y.lastChild&&y.removeChild(y.lastChild),y.appendChild(u)});const g=(d=s.target)==null?void 0:d.result;g&&(this.previousValue=g,HawkSearch.services.search.query({queryString:g,requestType:"ImageData"}))},i.onerror=s=>{this.triggerUploadFailed("file_read_unsuccessful",{error:s})},i.readAsDataURL(r)}connectedCallback(){super.connectedCallback(),this.clickEventHandler=e=>{e.target.closest("hawksearch-visualsearch-droparea")},this.rootElement.ownerDocument.addEventListener("click",this.clickEventHandler)}disconnectedCallback(){super.disconnectedCallback(),this.rootElement.ownerDocument.removeEventListener("click",this.connectedCallback)}getContentModel(){var e,t,r,a,i,s,d,u,g;return{query:(e=this.data)==null?void 0:e.query,strings:{dragImageMessage:((r=(t=this.configuration)==null?void 0:t.strings)==null?void 0:r.dragImageMessage)??"Drag an image here or ",uploadImageMessage:((i=(a=this.configuration)==null?void 0:a.strings)==null?void 0:i.uploadImageMessage)??"upload an image",dropImageMessage:((d=(s=this.configuration)==null?void 0:s.strings)==null?void 0:d.dropImageMessage)??"Drop an image here",errorMessage:((g=(u=this.configuration)==null?void 0:u.strings)==null?void 0:g.errorMessage)??"Drop an image here"}}}onRender(){super.onRender(),this.rootElement.querySelectorAll("[hawksearch-visualsearch-fileinput]").forEach(e=>{e.addEventListener("change",t=>{t.preventDefault(),t.stopPropagation();const a=t.currentTarget.files;this.handleFiles(a)})}),this.rootElement.querySelectorAll("[hawksearch-visualsearch-droparea]").forEach(e=>{e.addEventListener("drop",t=>{t.preventDefault(),t.stopPropagation();const a=t.dataTransfer.files;this.handleFiles(a),e.classList.remove("dragging-state")}),e.addEventListener("dragover",t=>{t.preventDefault()}),e.addEventListener("dragenter",t=>{t.preventDefault(),t.stopPropagation(),e.classList.add("dragging-state")}),e.addEventListener("dragleave",t=>{t.preventDefault(),t.stopPropagation(),e.classList.remove("dragging-state")})})}isValidFile(e,t){return e.type.startsWith("image/")?e.size>this.maxSize?(this.triggerUploadFailed("file_too_large",{size:`${Math.round(e.size/1024/1024)}MB`}),!1):this.allowedExtensions.includes(t)?!0:(this.triggerUploadFailed("file_extension_unsupported",{extension:t}),!1):(this.triggerUploadFailed("file_type_unsupported",{type:e.type}),!1)}triggerUploadFailed(e,t){this.triggerEvent("hawksearch:visualsearch-upload-failed",{reason:e,...t})}}const Lc=`{{#if (arrayHasObjectsWithValue items "color")}}
|
|
964
|
+
</div>`;class Dc extends U{constructor(){super(...arguments),this.componentName="visualsearch-field",this.defaultHtml=Tc,this.bindFromEvent=!0,this.previousValue="",this.maxSize=4*1024*1024,this.allowedExtensions=["jpg","jpeg","png","webp","avif"]}handleFiles(e){var t;const r=e[0],a=(t=r.name.split(".").pop())==null?void 0:t.toLowerCase();if(!this.isValidFile(r,a))return;const i=new FileReader;i.onload=s=>{var d;const u=new Image;u.src=i.result,this.rootElement.querySelectorAll("[hawksearch-visualsearch-display]").forEach(y=>{y.lastChild&&y.removeChild(y.lastChild),y.appendChild(u)});const g=(d=s.target)==null?void 0:d.result;g&&(this.previousValue=g,HawkSearch.services.search.query({queryString:g,requestType:"ImageData"}))},i.onerror=s=>{this.triggerUploadFailed("file_read_unsuccessful",{error:s})},i.readAsDataURL(r)}connectedCallback(){super.connectedCallback(),this.clickEventHandler=e=>{e.target.closest("hawksearch-visualsearch-droparea")},this.rootElement.ownerDocument.addEventListener("click",this.clickEventHandler)}disconnectedCallback(){super.disconnectedCallback(),this.rootElement.ownerDocument.removeEventListener("click",this.connectedCallback)}getContentModel(){var e,t,r,a,i,s,d,u,g;return{query:(e=this.data)==null?void 0:e.query,strings:{dragImageMessage:((r=(t=this.configuration)==null?void 0:t.strings)==null?void 0:r.dragImageMessage)??"Drag an image here or ",uploadImageMessage:((i=(a=this.configuration)==null?void 0:a.strings)==null?void 0:i.uploadImageMessage)??"upload an image",dropImageMessage:((d=(s=this.configuration)==null?void 0:s.strings)==null?void 0:d.dropImageMessage)??"Drop an image here",errorMessage:((g=(u=this.configuration)==null?void 0:u.strings)==null?void 0:g.errorMessage)??"Drop an image here"}}}onRender(){super.onRender(),this.rootElement.querySelectorAll("[hawksearch-visualsearch-fileinput]").forEach(e=>{e.addEventListener("change",t=>{t.preventDefault(),t.stopPropagation();const a=t.currentTarget.files;this.handleFiles(a)})}),this.rootElement.querySelectorAll("[hawksearch-visualsearch-droparea]").forEach(e=>{e.addEventListener("drop",t=>{t.preventDefault(),t.stopPropagation();const a=t.dataTransfer.files;this.handleFiles(a),e.classList.remove("dragging-state")}),e.addEventListener("dragover",t=>{t.preventDefault()}),e.addEventListener("dragenter",t=>{t.preventDefault(),t.stopPropagation(),e.classList.add("dragging-state")}),e.addEventListener("dragleave",t=>{t.preventDefault(),t.stopPropagation(),e.classList.remove("dragging-state")})})}isValidFile(e,t){return e.type.startsWith("image/")?e.size>this.maxSize?(this.triggerUploadFailed("file_too_large",{size:`${Math.round(e.size/1024/1024)}MB`}),!1):this.allowedExtensions.includes(t)?!0:(this.triggerUploadFailed("file_extension_unsupported",{extension:t}),!1):(this.triggerUploadFailed("file_type_unsupported",{type:e.type}),!1)}triggerUploadFailed(e,t){this.triggerEvent("hawksearch:visualsearch-upload-failed",{reason:e,...t})}}const Lc=`{{#if (arrayHasObjectsWithValue items "color")}}
|
|
965
965
|
<div class="variant-selector-list">
|
|
966
966
|
{{#each (arrayFilterObjects items "color")}}
|
|
967
967
|
<div
|
|
@@ -977,4 +977,4 @@ Expecting `+C.join(", ")+", got '"+(this.terminals_[b]||b)+"'":T="Parse error on
|
|
|
977
977
|
</div>
|
|
978
978
|
{{/each}}
|
|
979
979
|
</div>
|
|
980
|
-
{{/if}}`;class Rc extends U{constructor(){super(...arguments),this.componentName="variant-selector",this.defaultHtml=Lc,this.bindFromEvent=!1}renderContent(){return!!this.data&&this.data.items.length>1}getContentModel(){return{...this.data}}onRender(){super.onRender(),this.rootElement.querySelectorAll("[hawksearch-variant]").forEach(e=>{e.addEventListener("click",t=>{if(!this.data)return;const a=t.currentTarget.getAttribute("hawksearch-variant")??void 0;if(a===void 0)return;const i=this.data.items.find(s=>s.id===a);i&&this.dispatchEvent(new CustomEvent("hawksearch:variant-selected",{detail:i}))})})}}let Ge;const Oc=new Uint8Array(16);function Fc(){if(!Ge&&(Ge=typeof crypto<"u"&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto),!Ge))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return Ge(Oc)}const K=[];for(let n=0;n<256;++n)K.push((n+256).toString(16).slice(1));function Nc(n,e=0){return(K[n[e+0]]+K[n[e+1]]+K[n[e+2]]+K[n[e+3]]+"-"+K[n[e+4]]+K[n[e+5]]+"-"+K[n[e+6]]+K[n[e+7]]+"-"+K[n[e+8]]+K[n[e+9]]+"-"+K[n[e+10]]+K[n[e+11]]+K[n[e+12]]+K[n[e+13]]+K[n[e+14]]+K[n[e+15]]).toLowerCase()}const qc=typeof crypto<"u"&&crypto.randomUUID&&crypto.randomUUID.bind(crypto),ka={randomUUID:qc};function Vc(n,e,t){if(ka.randomUUID&&!e&&!n)return ka.randomUUID();n=n||{};const r=n.random||(n.rng||Fc)();if(r[6]=r[6]&15|64,r[8]=r[8]&63|128,e){t=t||0;for(let a=0;a<16;++a)e[t+a]=r[a];return e}return Nc(r)}class Re{constructor(){var e,t,r,a,i,s,d,u,g,y,h,v,_,l,E,c,f,m,o,p,b,w,S,A,k,H,x,I,C,T,P,B,L,M,D,F,R,N,Z,G,ge,we,ke,xe,Se,Ee,Oe,Fe,Ae,q,O,V,j,Y,$,ee,Ne,ce,ft,vt,bt,yt,_t;this.queryStringParams={disableSpellcheck:((t=(e=HawkSearch.config.search)==null?void 0:e.queryStringMappings)==null?void 0:t.disableSpellcheck)||"disableSpellcheck",page:((a=(r=HawkSearch.config.search)==null?void 0:r.queryStringMappings)==null?void 0:a.page)||"page",pageSize:((s=(i=HawkSearch.config.search)==null?void 0:i.queryStringMappings)==null?void 0:s.pageSize)||"pageSize",query:((u=(d=HawkSearch.config.search)==null?void 0:d.queryStringMappings)==null?void 0:u.query)||"query",searchWithin:((y=(g=HawkSearch.config.search)==null?void 0:g.queryStringMappings)==null?void 0:y.searchWithin)||"searchWithin",sort:((v=(h=HawkSearch.config.search)==null?void 0:h.queryStringMappings)==null?void 0:v.sort)||"sort",requestType:((l=(_=HawkSearch.config.search)==null?void 0:_.queryStringMappings)==null?void 0:l.requestType)||"requestType"},this.searchUrl=((E=HawkSearch.config.search)==null?void 0:E.url)??"/search",this.fieldMappings={description:this.getFieldMappings((c=HawkSearch.config.fieldMappings)==null?void 0:c.description,["description","longdescription"]),imageUrl:this.getFieldMappings((f=HawkSearch.config.fieldMappings)==null?void 0:f.imageUrl,["imageurl","image"]),price:this.getFieldMappings((m=HawkSearch.config.fieldMappings)==null?void 0:m.price,["price"]),rating:this.getFieldMappings((o=HawkSearch.config.fieldMappings)==null?void 0:o.rating,["rating"]),salePrice:this.getFieldMappings((p=HawkSearch.config.fieldMappings)==null?void 0:p.salePrice,["saleprice"]),sku:this.getFieldMappings((b=HawkSearch.config.fieldMappings)==null?void 0:b.sku,["sku"]),title:this.getFieldMappings((w=HawkSearch.config.fieldMappings)==null?void 0:w.title,["title","name","itemname"]),type:this.getFieldMappings((S=HawkSearch.config.fieldMappings)==null?void 0:S.type,["type"]),url:this.getFieldMappings((A=HawkSearch.config.fieldMappings)==null?void 0:A.url,["url"])},this.variantFieldMappings={color:{name:this.getFieldMappings((x=(H=(k=HawkSearch.config.variants)==null?void 0:k.fieldMappings)==null?void 0:H.color)==null?void 0:x.name,["colorname","color"],(I=HawkSearch.config.variants)==null?void 0:I.fieldPrefix),hex:this.getFieldMappings((P=(T=(C=HawkSearch.config.variants)==null?void 0:C.fieldMappings)==null?void 0:T.color)==null?void 0:P.hex,["colorhex","colorvalue"],(B=HawkSearch.config.variants)==null?void 0:B.fieldPrefix),imageUrl:this.getFieldMappings((D=(M=(L=HawkSearch.config.variants)==null?void 0:L.fieldMappings)==null?void 0:M.color)==null?void 0:D.imageUrl,["colorimageurl","colorimage"],(F=HawkSearch.config.variants)==null?void 0:F.fieldPrefix)},id:this.getFieldMappings((N=(R=HawkSearch.config.variants)==null?void 0:R.fieldMappings)==null?void 0:N.id,["id"],(Z=HawkSearch.config.variants)==null?void 0:Z.fieldPrefix),imageUrl:this.getFieldMappings((ge=(G=HawkSearch.config.variants)==null?void 0:G.fieldMappings)==null?void 0:ge.imageUrl,["imageurl","image"],(we=HawkSearch.config.variants)==null?void 0:we.fieldPrefix),price:this.getFieldMappings((xe=(ke=HawkSearch.config.variants)==null?void 0:ke.fieldMappings)==null?void 0:xe.price,["price"],(Se=HawkSearch.config.variants)==null?void 0:Se.fieldPrefix),rating:this.getFieldMappings((Oe=(Ee=HawkSearch.config.variants)==null?void 0:Ee.fieldMappings)==null?void 0:Oe.rating,["rating"],(Fe=HawkSearch.config.variants)==null?void 0:Fe.fieldPrefix),salePrice:this.getFieldMappings((q=(Ae=HawkSearch.config.variants)==null?void 0:Ae.fieldMappings)==null?void 0:q.salePrice,["salePrice","saleprice"],(O=HawkSearch.config.variants)==null?void 0:O.fieldPrefix),sku:this.getFieldMappings((j=(V=HawkSearch.config.variants)==null?void 0:V.fieldMappings)==null?void 0:j.sku,["title","name","itemname"],(Y=HawkSearch.config.variants)==null?void 0:Y.fieldPrefix),title:this.getFieldMappings((ee=($=HawkSearch.config.variants)==null?void 0:$.fieldMappings)==null?void 0:ee.title,["title","name","itemname"],(Ne=HawkSearch.config.variants)==null?void 0:Ne.fieldPrefix),description:this.getFieldMappings((ft=(ce=HawkSearch.config.variants)==null?void 0:ce.fieldMappings)==null?void 0:ft.description,["description","longdescription"],(vt=HawkSearch.config.variants)==null?void 0:vt.fieldPrefix),url:this.getFieldMappings((yt=(bt=HawkSearch.config.variants)==null?void 0:bt.fieldMappings)==null?void 0:yt.url,["url"],(_t=HawkSearch.config.variants)==null?void 0:_t.fieldPrefix)}}get onSearchPage(){const e=/\/+$/;return window.location.pathname.replace(e,"")===this.searchUrl.replace(e,"")}async httpPost(e,t,r,a){const i=a?e:this.baseUrl+e,s=r||this.getHeaders(),d=await fetch(i,{method:"POST",headers:s,body:JSON.stringify(t)}),u=d.headers.get("content-type");if(u?.startsWith("application/json"))return d.json()}getHeaders(){const e=new Headers;return e.set("Content-Type","application/json"),e.set("X-Requested-With","XMLHttpRequest"),e}getFieldMappings(e,t,r){return typeof e=="string"&&(e=[e]),e?.length||(e=t),r&&(e=e.map(a=>r+a)),e}getVisitorId(){const e="VisitorId";let t=localStorage.getItem(e);return t||(t=this.generateGuid(),localStorage.setItem(e,t)),t}getVisitId(){const e="VisitId";let t=sessionStorage.getItem(e);return t||(t=this.generateGuid(),sessionStorage.setItem(e,t)),t}generateGuid(){return Vc()}stripHtml(e){let t=e.replace(/<[^>]+>/g,"");return t=Eo(t),t=decodeURIComponent(t),t}getValue(e,t){for(const r of t){let a=Te(e,r);if(a){if(typeof a=="string"&&(a=a.split("|^|")),a.length===0)continue;return a}}}getString(e,t,r){var a;return((a=this.getValue(e,t))==null?void 0:a[0])??r}getNumber(e,t,r){var a;const i=(a=this.getValue(e,t))==null?void 0:a[0];let s=i?parseFloat(i):void 0;return s!==void 0&&isNaN(s)&&(s=void 0),s??r}getUrl(e,t,r){var a;const i=(a=this.getValue(e,t))==null?void 0:a[0];return this.getFullUrl(i,r)}getFullUrl(e,t){if(e)return t&&!/^(?:https?:)?\/\//.test(e)?`${t}/${e.replace(/^\/+/,"")}`:e}getVariants(e){var t,r,a,i,s,d;if(((t=HawkSearch.config.variants)==null?void 0:t.enabled)===!1)return{items:void 0,selectedItem:void 0};const u=(r=HawkSearch.config.variants)==null?void 0:r.fieldPrefix,g=u?new RegExp("^"+u):void 0,y=l=>{const E=this.getString(l,this.variantFieldMappings.color.name),c=this.getString(l,this.variantFieldMappings.color.imageUrl);let f=this.getString(l,this.variantFieldMappings.color.hex);if(!f&&E&&(f=qo(E)),!(!f&&!c))return{name:E,hex:f,imageUrl:c}},h=((s=(i=(a=e.hawk_child_attributes_hits)==null?void 0:a[0])==null?void 0:i.Items)==null?void 0:s.reduce((l,E)=>{const c=this.getString(E,this.variantFieldMappings.id);return c&&l.push(c),l},[]))??[];let v=(d=e.hawk_child_attributes)==null?void 0:d.map((l,E)=>{const c=this.getString(l,this.variantFieldMappings.id)??"";return{attributes:Object.fromEntries(Object.entries(l).map(([f,m])=>(g&&(f=f.replace(g,"")),[f,m]))),color:y(l),description:this.getString(l,this.variantFieldMappings.description),id:c,imageUrl:this.getString(l,this.variantFieldMappings.imageUrl),price:this.getNumber(l,this.variantFieldMappings.price)||void 0,queryMatch:h.includes(c),rating:this.getNumber(l,this.variantFieldMappings.rating),salePrice:this.getNumber(l,this.variantFieldMappings.salePrice)||void 0,title:this.getString(l,this.variantFieldMappings.title),url:this.getString(l,this.variantFieldMappings.url)}}).filter(l=>!!l.id);v?.length||(v=void 0);let _;for(const l of h){const E=v?.find(c=>c.id===l);if(E){_=E;break}}return _||(_=v?.[0]),{items:v,selectedItem:_}}triggerBindEvent(e,t,r){let a=`hawksearch:bind-${e}`;r&&(a=`${a}:${r}`),this.triggerEvent(a,t)}triggerEvent(e,t){const r=new CustomEvent(e,{detail:t});window.dispatchEvent(r)}}class Bc extends Re{constructor(){var e,t,r;super(...arguments),this.baseUrl=((e=HawkSearch.config.autocomplete)==null?void 0:e.endpointUrl)||((t=HawkSearch.config.search)==null?void 0:t.endpointUrl)||"https://searchapi-dev.hawksearch.net",this.decodeQuery=((r=HawkSearch.config.autocomplete)==null?void 0:r.decodeQuery)||!0}async query(e){const t={query:e};return await this.executeAutocomplete(t)}async executeAutocomplete(e){this.decodeQuery&&e.query&&(e.query=le(e.query));const t={ClientGuid:HawkSearch.config.clientId,IndexName:HawkSearch.config.index,Keyword:e.query,DisplayFullResponse:!0};try{this.triggerEvent("hawksearch:before-autocomplete-executed",t);const r=await this.httpPost("/api/v2/autocomplete",t);this.triggerEvent("hawksearch:after-autocomplete-executed",r);const a=this.convertResponse(e.query,r);return this.triggerEvent("hawksearch:autocomplete-completed",a),this.bindComponent(a),a}catch{throw new Error("Error retrieving autocomplete response")}}convertResponse(e,t){var r,a;const i=s=>{var d,u,g;const y=this.getVariants(s.Results.Document);return{attributes:Object.fromEntries(Object.entries(s.Results.Document).filter(([h,v])=>!["hawk_child_attributes","hawk_child_attributes_hits"].includes(h))),description:this.getString(s.Results.Document,this.fieldMappings.description),id:s.Results.DocId,imageUrl:((d=s.Thumb)==null?void 0:d.Url)||this.getUrl(s.Results.Document,this.fieldMappings.imageUrl,(u=HawkSearch.config.urlPrefixes)==null?void 0:u.content),pinned:s.Results.IsPin,price:this.getNumber(s.Results.Document,this.fieldMappings.price)||void 0,rating:this.getNumber(s.Results.Document,this.fieldMappings.rating),salePrice:this.getNumber(s.Results.Document,this.fieldMappings.salePrice)||void 0,score:s.Results.Score,selectedVariant:y.selectedItem,sku:s.Sku||this.getString(s.Results.Document,this.fieldMappings.sku),title:this.stripHtml(s.ProductName)||this.getString(s.Results.Document,this.fieldMappings.title),url:s.Url||this.getUrl(s.Results.Document,this.fieldMappings.url,(g=HawkSearch.config.urlPrefixes)==null?void 0:g.content),variants:y.items}};return{query:e,categories:{title:t.CategoryHeading,results:t.Categories.map(s=>({title:this.stripHtml(s.Value),field:s.FieldQSName,value:le(s.FieldQSValue),url:`${this.searchUrl}?${s.FieldQSName}=${le(encodeURIComponent(s.FieldQSValue))}`}))},content:{title:t.ContentHeading,results:t.Content.map(s=>({id:s.Results.DocId,pinned:s.Results.IsPin,score:s.Results.Score,attributes:s.Results.Document,title:this.stripHtml(s.Value),url:s.Url})),totalRecords:t.ContentCount},queries:{title:t.PopularHeading,results:t.Popular.map(s=>({query:this.stripHtml(s.RawValue),url:`${this.searchUrl}?${this.queryStringParams.query}=${encodeURIComponent(this.stripHtml(s.RawValue))}`}))},contentSuggestedQueries:{title:t.DYMContentHeading,results:((r=t.DymContentSearch)==null?void 0:r.map(s=>({query:this.stripHtml(s.RawValue),url:`${this.searchUrl}?${this.queryStringParams.query}=${encodeURIComponent(this.stripHtml(s.RawValue))}`})))??[]},productSuggestedQueries:{title:t.DYMProductHeading,results:((a=t.DymProductsSearch)==null?void 0:a.map(s=>({query:this.stripHtml(s.RawValue),url:`${this.searchUrl}?${this.queryStringParams.query}=${encodeURIComponent(this.stripHtml(s.RawValue))}`})))??[]},products:{title:t.ProductHeading,results:t.Products.map(s=>i(s)),totalRecords:t.ProductCount},totalRecords:t.Count,viewAllText:t.ViewAllButtonLabel}}bindComponent(e){this.triggerBindEvent("autocomplete",e)}}class Uc extends Re{constructor(){super(...arguments),this.baseUrl="https://genai.bridgeline.com/api",this.API_KEY="ba0279e8-6df6-11ee-a9fd-9df2e7adae60"}async query(e,t){return e?await this.executeSearch(e,t):[]}async executeSearch(e,t){this.bindComponents(e);const r={api_key:this.API_KEY,messages:e,...t};HawkSearch.config.debug&&console.log("hawksearch:debug ",{rawConversationalSearchRequest:r.messages});try{this.triggerEvent("hawksearch:before-send-message-executed",e);const a=new Headers;a.set("Content-Type","application/json");const i=await this.httpPost(this.baseUrl,r,a,!0);if(this.triggerEvent("hawksearch:after-send-message-executed",i),!i.success)throw new Error("Network response was not ok");this.triggerEvent("hawksearch:before-received-message-executed",i);const s=this.convertResponse(i);return this.triggerEvent("hawksearch:after-receive-message-executed",s),this.bindComponents(s),s}catch{throw new Error("Error retrieving search response")}}convertResponse(e){return e.response.choices[0].message}bindComponents(e){this.triggerBindEvent("conversationalsearch",{conversationResponse:e})}}class jc extends Re{constructor(){var e;super(...arguments),this.baseUrl=((e=HawkSearch.config.recommendations)==null?void 0:e.endpointUrl)||"https://recs-dev.hawksearch.net"}getItems(e){return this.executeRecommendations(e)}async executeRecommendations(e){const t={clientGuid:HawkSearch.config.clientId,indexName:HawkSearch.config.index,landingPageUrl:e.url,renderHTML:!1,visitId:this.getVisitId(),visitorId:this.getVisitorId(),widgetUids:[{widgetGuid:e.widgetId,uniqueid:e.itemId}]};try{this.triggerEvent("hawksearch:before-recommendations-executed",t);const r=await this.httpPost("/api/recommendation/v2/getwidgetitems",t);this.triggerEvent("hawksearch:after-recommendations-executed",r);const a=this.convertResponse(r);this.triggerEvent("hawksearch:recommendations-completed",a);const i=e.itemId?`${e.widgetId}:${e.itemId}`:e.widgetId;return HawkSearch.recommendationsResponses={...HawkSearch.recommendationsResponses??{},[i]:a},this.bindComponents(a),a}catch{throw new Error("Error retrieving recommendations response")}}convertResponse(e){var t;const r=i=>{if(i)return typeof i=="string"?i.split("|^|"):i},a=i=>{var s,d;const u=this.getVariants(i.customDict);return{attributes:Object.fromEntries(Object.entries(i.customDict).filter(([g,y])=>!["hawk_child_attributes","hawk_child_attributes_hits"].includes(g)).map(([g,y])=>[g,r(y)])),description:i.shortDescription||this.getString(i.customDict,this.fieldMappings.description),id:i.id,imageUrl:i.imageUrl||this.getUrl(i.customDict,this.fieldMappings.imageUrl,(s=HawkSearch.config.urlPrefixes)==null?void 0:s.content),price:parseFloat(i.price)||this.getNumber(i.customDict,this.fieldMappings.price)||void 0,rating:parseFloat(i.rating)||this.getNumber(i.customDict,this.fieldMappings.rating)||void 0,salePrice:parseFloat(i.salePrice)||this.getNumber(i.customDict,this.fieldMappings.salePrice)||void 0,selectedVariant:u.selectedItem,sku:i.Sku||this.getString(i.customDict,this.fieldMappings.sku),title:i.itemName||this.getString(i.customDict,this.fieldMappings.title),url:i.url||this.getUrl(i.customDict,this.fieldMappings.url,(d=HawkSearch.config.urlPrefixes)==null?void 0:d.content),variants:u.items}};return{requestId:e.requestId,widgets:(t=e?.widgetItems)==null?void 0:t.map(i=>{var s;return{id:i.widgetGuid,requestId:e.requestId,title:i.widgetName,carousel:i.isCarousel,carouselData:i.carouselData,items:(s=i.recommendationItems)==null?void 0:s.map(d=>a(d))}})}}bindComponents(e){var t;(t=e.widgets)==null||t.forEach(r=>{this.triggerBindEvent("recommendations",r,r.id)})}}class zc extends Re{constructor(){var e,t,r,a;super(...arguments),this.baseUrl=((e=HawkSearch.config.search)==null?void 0:e.endpointUrl)||"https://searchapi-dev.hawksearch.net",this.facetExclusionPrefix=((t=HawkSearch.config.search)==null?void 0:t.facetExclusionPrefix)||"-",this.decodeQuery=((r=HawkSearch.config.search)==null?void 0:r.decodeQuery)||!0,this.decodeFacetValues=((a=HawkSearch.config.search)==null?void 0:a.decodeFacetValues)||!0,this.shouldRenderUI=!0}async search(e){const t=await this.executeSearch(e,!0,!1);return this.shouldRenderUI&&this.bindComponents(t),t}async query(e,t=void 0,r=!1){const a=typeof e=="string"?{queryString:e,requestType:"DefaultSearch"}:e,i=a?.queryString,s={disableSpellcheck:!!r||void 0,facets:t,newRequest:!0,query:i,requestType:a?.requestType};if(!this.onSearchPage){const u=this.getSearchUrl(s);return window.location.assign(u),Promise.resolve()}if(i&&!wa(i)){const u=this.getRecentQueries(),g=5;u.includes(i)||(u.length>=g&&u.splice(g-1),u.unshift(i),this.saveRecentQueries(u))}const d=await this.executeSearch(s,!0,!1);return this.shouldRenderUI&&this.bindComponents(d),d}async addFacetValue(e,t){var r;this.ensureSearchRequest();const a=ne(HawkSearch.searchRequest);a.newRequest=!1,a.page=void 0,a.facets||(a.facets={}),this.clearExistingFacetValue(a,e,t),a.facets[e]=[...((r=a.facets[e])==null?void 0:r.filter(s=>s!==t))??[],t];const i=await this.executeSearch(a,!1);return this.bindFacetsListComponent(i),this.bindPaginationComponent(i),this.bindSelectedFacetsComponent(i),this.bindTabsComponent(i),this.bindZoneComponent(i),i}async removeFacetValue(e,t){if(this.ensureSearchRequest(),e==="searchWithin")return await this.searchWithin("");const r=ne(HawkSearch.searchRequest);r.newRequest=!1,r.page=void 0,this.clearExistingFacetValue(r,e,t);const a=await this.executeSearch(r,!1);return this.bindFacetsListComponent(a),this.bindPaginationComponent(a),this.bindSelectedFacetsComponent(a),this.bindTabsComponent(a),this.bindZoneComponent(a),a}includeFacetValue(e,t){const r=`${this.facetExclusionPrefix}${t}`;return this.removeFacetValue(e,r)}async excludeFacetValue(e,t){this.ensureSearchRequest();const r=`${this.facetExclusionPrefix}${t}`,a=ne(HawkSearch.searchRequest);a.newRequest=!1,a.page=void 0,a.facets||(a.facets={}),this.clearExistingFacetValue(a,e,t),a.facets={...a.facets,[e]:[...a.facets[e]??[],r]};const i=await this.executeSearch(a,!1);return this.bindFacetsListComponent(i),this.bindPaginationComponent(i),this.bindSelectedFacetsComponent(i),this.bindTabsComponent(i),this.bindZoneComponent(i),i}clearExistingFacetValue(e,t,r){var a,i;r=r.replace(new RegExp("^"+this.facetExclusionPrefix),"");const s=`${this.facetExclusionPrefix}${r}`;e.facets||(e.facets={}),e.facets={...e.facets,[t]:[...((a=e.facets[t])==null?void 0:a.filter(d=>d!==r&&d!==s))??[]]},(i=e.facets[t])!=null&&i.length||delete e.facets[t]}async setFacetValue(e,t){this.ensureSearchRequest();const r=ne(HawkSearch.searchRequest);r.newRequest=!1,r.page=void 0,r.facets||(r.facets={}),r.facets[e]=[t];const a=await this.executeSearch(r,!1);return this.bindFacetsListComponent(a),this.bindPaginationComponent(a),this.bindSelectedFacetsComponent(a),this.bindTabsComponent(a),this.bindZoneComponent(a),a}async searchWithin(e){this.ensureSearchRequest();const t=ne(HawkSearch.searchRequest);t.newRequest=!1,t.page=void 0,t.searchWithin=e||void 0;const r=await this.executeSearch(t,!1);return this.bindFacetsListComponent(r),this.bindPaginationComponent(r),this.bindSelectedFacetsComponent(r),this.bindTabsComponent(r),this.bindZoneComponent(r),r}async selectTab(e){var t,r,a;this.ensureSearchRequest();const i=ne(HawkSearch.searchRequest);i.newRequest=!1,i.page=void 0,i.facets||(i.facets={});const s=(a=(r=(t=HawkSearch.searchResponse)==null?void 0:t.facets)==null?void 0:r.find(u=>u.type==="tabs"))==null?void 0:a.field;s&&(e?i.facets[s]=[e]:delete i.facets[s]);const d=await this.executeSearch(i,!1);return this.bindFacetsListComponent(d),this.bindPaginationComponent(d),this.bindSelectedFacetsComponent(d),this.bindTabsComponent(d),this.bindZoneComponent(d),d}async paginate(e){this.ensureSearchRequest();const t=ne(HawkSearch.searchRequest);t.newRequest=!1,t.page=e;const r=await this.executeSearch(t,!1);return this.bindPaginationComponent(r),r}async setPageSize(e){this.ensureSearchRequest();const t=ne(HawkSearch.searchRequest);t.newRequest=!1,t.page=1,t.pageSize=e;const r=await this.executeSearch(t,!1);return this.bindPageSizeComponent(r),this.bindPaginationComponent(r),r}async sort(e){this.ensureSearchRequest();const t=ne(HawkSearch.searchRequest);t.newRequest=!1,t.page=1,t.sort=e;const r=await this.executeSearch(t,!1);return this.bindPaginationComponent(r),this.bindSortingComponent(r),r}async executeSearch(e,t,r=!0){var a,i;if(this.decodeQuery&&e.query&&(e.query=le(e.query)),this.decodeFacetValues&&e.facets){for(const y in e.facets)if(Object.prototype.hasOwnProperty.call(e.facets,y)){const h=[],v=e.facets[y];for(const _ in v)Object.prototype.hasOwnProperty.call(v,_)&&h.push(le(v[parseInt(_)]));e.facets[y]=h}}HawkSearch.searchRequest=e;const s=e.requestType==="ImageData",d=s?"ImageData":e.requestType==="ImageSearch"?"ImageText":"Keyword",u=s?"ImageSearch":e.requestType,g={ClientData:{UserAgent:window.navigator.userAgent,VisitorId:this.getVisitorId(),VisitId:this.getVisitId()},ClientGuid:HawkSearch.config.clientId,CustomURL:e.url,RequestType:u||"DefaultSearch",IgnoreSpellcheck:e.disableSpellcheck,IndexName:HawkSearch.config.index,kValue:(a=HawkSearch.config.search)==null?void 0:a.kValue,[d||"Keyword"]:e.query,FacetSelections:e.facets,MaxPerPage:e.pageSize,PageNo:e.page,SearchWithin:e.searchWithin,SortBy:e.sort,Variants:{CountFacetHitOnChild:(i=HawkSearch.config.variants)==null?void 0:i.baseFacetCountOnVariants}};HawkSearch.config.debug&&console.log("hawksearch:debug ",{rawSearchRequest:g});try{this.triggerEvent("hawksearch:before-search-executed",g);const y=await this.httpPost("/api/v2/search",g),h=this.convertResponse(e,y);return HawkSearch.searchResponse=h,this.triggerEvent("hawksearch:after-search-executed",y),HawkSearch.services.tracking.trackSearch(s?"image-upload":e.query,t),s||this.setQueryString(h),this.setSeoElements(h),t&&h.redirect&&h.redirect.url&&(h.redirect.target!=="_blank"&&(this.shouldRenderUI=!1),h.redirect.target==="_blank"?window.open(h.redirect.url,"_blank"):h.redirect.target==="_parent"?window.open(h.redirect.url,"_parent"):h.redirect.target==="_top"?window.open(h.redirect.url,"_top"):window.open(h.redirect.url,"_self")),r&&this.shouldRenderUI&&(this.bindModifiedQueryComponent(h),this.bindQuerySuggestionsComponent(h),this.bindSearchFieldComponent(h),this.bindConceptSearchFieldComponent(h),this.bindUnifiedSearchFieldComponent(h),this.bindSearchResultsListComponent(h),this.bindImageSearchFieldComponent(h)),this.triggerEvent("hawksearch:search-completed",h),h}catch(y){throw this.triggerEvent("hawksearch:search-failed",y||"Error retrieving search response"),new Error("Error retrieving search response")}}ensureSearchRequest(){if(!HawkSearch.searchRequest)throw this.triggerEvent("hawksearch:search-failed","You cannot refine search results until an initial search has been executed"),new Error("You cannot refine search results until an initial search has been executed")}convertResponse(e,t){var r,a,i,s,d;const u=k=>{if(k.FieldType==="tab")return"tabs";switch(k.FacetType.toLowerCase()){case"checkbox":case"nestedcheckbox":return"checkbox";case"color":return"color";case"link":return"link";case"openrange":if(k.DataType==="datetime")return"date-range";if(k.IsCurrency||k.IsNumeric)return"numeric-range";case"recentsearches":return"recent-searches";case"related":return"related-searches";case"search":return"search";case"size":return"size";case"slider":return"range-slider";case"swatch":return"color";default:return"unsupported"}},g=k=>{if(k.DisplayType==="scrolling")return{height:k.ScrollHeight||void 0,threshold:k.ScrollThreshold||0}},y=["date-range","numeric-range","range-slider"],h=k=>{var H;const x=u(k);if(!(!y.includes(x)||!((H=k.Values)!=null&&H.length)))return k.DataType==="datetime"?{type:"date",min:new Date(Date.parse(k.Values[0].RangeMin)),max:new Date(Date.parse(k.Values[0].RangeMax)),start:new Date(Date.parse(k.Values[0].RangeStart)),end:new Date(Date.parse(k.Values[0].RangeEnd))}:{type:"numeric",min:parseFloat(k.Values[0].RangeMin),max:parseFloat(k.Values[0].RangeMax),start:parseFloat(k.Values[0].RangeStart),end:parseFloat(k.Values[0].RangeEnd)}},v=(k,H)=>{var x,I;const C=(x=k.Ranges)==null?void 0:x.find(T=>T.Value.toLowerCase()===H.Value.toLowerCase());if(C?.AssetFullUrl)return this.getFullUrl(C.AssetFullUrl,(I=HawkSearch.config.urlPrefixes)==null?void 0:I.assets)},_=(k,H)=>{var x,I,C;let T=(x=k.SwatchData)==null?void 0:x.find(P=>P.Value.toLowerCase()===H.Value.toLowerCase());if(T||(T=(I=k.SwatchData)==null?void 0:I.find(P=>P.IsDefault)),!!T)return{name:H.Label,hex:T.Color||T.Value,imageUrl:this.getFullUrl(T.AssetUrl||T.AssetName,(C=HawkSearch.config.urlPrefixes)==null?void 0:C.assets)}},l=(k,H,x)=>u(k)==="recent-searches"?this.getRecentQueries().map(T=>({title:this.decodeFacetValues?le(T):T})):H?.map(C=>{var T;return{title:C.Label,imageUrl:v(k,C),value:C.Value,color:_(k,C),count:C.Count,level:C.Level,selected:C.Selected,excluded:(T=x?.Items)==null?void 0:T.some(P=>P.Value===`${this.facetExclusionPrefix}${C.Value}`),children:l(k,C.Children,x)}}),E=k=>{if(u(k)==="recent-searches"){const x=l(k,void 0,void 0);return!!x?.length}return k.IsVisible??!0},c=k=>{if(k.DisplayType==="truncating")return{threshold:parseFloat(k.TruncateThreshold)||0}},f=k=>{var H,x;const I=(T,P)=>{var B,L,M,D;typeof P=="string"&&(P=[P]);const F=(((L=(B=HawkSearch.config.search)==null?void 0:B.itemTypes)==null?void 0:L.productValues)??["item","product"]).map(R=>R.toLowerCase());for(const R of P){let N=Te(T,R);if(N&&N instanceof Array&&(N=N[0]),N&&F.includes(N.toLowerCase()))return"product"}return((D=(M=HawkSearch.config.search)==null?void 0:M.itemTypes)==null?void 0:D.default)??"content"},C=this.getVariants(k.Document);return{attributes:Object.fromEntries(Object.entries(k.Document).filter(([T,P])=>!["hawk_child_attributes","hawk_child_attributes_hits"].includes(T))),description:this.getString(k.Document,this.fieldMappings.description),id:k.DocId,imageUrl:this.getUrl(k.Document,this.fieldMappings.imageUrl,(H=HawkSearch.config.urlPrefixes)==null?void 0:H.content),pinned:k.IsPin??!1,price:this.getNumber(k.Document,this.fieldMappings.price)||void 0,rating:this.getNumber(k.Document,this.fieldMappings.rating),salePrice:this.getNumber(k.Document,this.fieldMappings.salePrice)||void 0,score:k.Score,sku:this.getString(k.Document,this.fieldMappings.sku),selectedVariant:C.selectedItem,title:this.getString(k.Document,this.fieldMappings.title),type:I(k.Document,this.fieldMappings.type),url:this.getUrl(k.Document,this.fieldMappings.url,(x=HawkSearch.config.urlPrefixes)==null?void 0:x.content),variants:C.items,visible:k.IsVisible??!0}},m=k=>{if(k.IsSearch)return{threshold:parseFloat(k.SearchThreshold)||0}},o=()=>[...Object.keys(t.Selections??[]).map(k=>{var H;const x=t.Selections[k],I=(H=t.Facets)==null?void 0:H.find(T=>(T.ParamName||T.Field)===k),C=new RegExp("^"+this.facetExclusionPrefix);return{field:k,currency:I?.IsCurrency??!1,title:x.Label,values:x.Items.map(T=>({title:T.Label.replace(C,""),value:T.Value,excluded:C.test(T.Value)}))}}),...p()],p=()=>{var k;const H="searchWithin",x=(k=t.Facets)==null?void 0:k.find(I=>I.Field===H);return!e.searchWithin||!x?[]:[{field:H,title:x.Name,currency:!1,values:[{title:e.searchWithin,value:e.searchWithin,excluded:!1}]}]},b=(k,H,x)=>{var I;(H==="Mobile"&&!k.IsMobile||H==="Tablet"&&!k.IsTablet)&&(H="");const C={campaignId:k.CampaignId,id:k.BannerId,title:k.Title,trackingEnabled:k.IsTrackingEnabled??!0,type:k[H+"ContentType"],zone:x??k.Zone};switch(C.type){case"custom":{const T=C;T.content=k[H+"Output"];break}case"featured":{const T=C;T.type="featured-items",T.items=[...(k.Items??[]).map(f),...(k.FeaturedItems??[]).map(f)];break}case"image":{const T=C;T.image={url:this.getFullUrl(k[H+"ImageUrl"],(I=HawkSearch.config.urlPrefixes)==null?void 0:I.assets),height:k[H+"Height"]||void 0,width:k[H+"Width"]||void 0,altText:k[H+"AltTag"],title:k[H+"AltTag"]},T.link=k[H+"ForwardUrl"]?{url:k[H+"ForwardUrl"],target:k[H+"Target"]||"_self"}:void 0;break}case"widget":switch(k[H+"WidgetType"]){case"PopularSearchesWidget":{const P=C;P.type="popular-queries";const B=Math.min(...k[H+"Output"].map(R=>R.count)),M=Math.max(...k[H+"Output"].map(R=>R.count))-B,D=5,F=new Array(D).fill(0);F.forEach((R,N)=>{N===D-1?F[N]=0:F[N]=Math.floor(M/(N+1))+B}),P.items=k[H+"Output"]instanceof Array?k[H+"Output"].map(R=>({query:R.keyword,count:R.count,weight:D-F.findIndex(N=>R.count>=N)})).sort((R,N)=>R.query.localeCompare(N.query)):[];break}default:{const P=C;P.type="custom-widget",P.data=k.AltTag}}}return C},w=()=>{var k,H,x;const I={};return(k=t.FeaturedItems)==null||k.Items.forEach(C=>{const T=I[C.Zone]??{name:C.Zone},P={mobile:b(C,""),tablet:b(C,""),desktop:b(C,"")};T.items=[...T.items??[],P],I[C.Zone]=T}),(H=t.Merchandising)==null||H.Items.forEach(C=>{const T=I[C.Zone]??{name:C.Zone},P={mobile:b(C,"Mobile"),tablet:b(C,"Tablet"),desktop:b(C,"")};T.items=[...T.items??[],P],I[C.Zone]=T}),(x=t.PageContent)==null||x.forEach(C=>{const T=I[C.ZoneName]??{name:C.ZoneName};C.Items.forEach(P=>{const B={mobile:b(P,"Mobile",T.name),tablet:b(P,"Tablet",T.name),desktop:b(P,"",T.name)};T.items=[...T.items??[],B]}),I[C.ZoneName]=T}),I},S={content:{breadcrumbs:t.Breadcrumb||void 0,customHtml:t.CustomHtml||void 0,heading:t.PageHeading||void 0},contentZones:w(),customLayout:t.PageLayoutHtml||void 0,facets:(r=t.Facets)==null?void 0:r.map(k=>{var H;return{id:k.FacetId,type:u(k),title:k.Name,field:k.ParamName||k.Field,collapsible:k.IsCollapsible??!1,collapsed:k.IsCollapsedDefault,displayCount:k.ShowItemsCount,range:h(k),scrolling:g(k),search:m(k),searchWithin:e.searchWithin,tooltip:this.stripHtml(k.Tooltip??"")||void 0,truncation:c(k),values:l(k,k.Values,(H=t.Selections)==null?void 0:H[k.ParamName||k.Field]),visible:E(k)}}).filter(k=>k.type!=="unsupported"&&!(y.includes(k.type)&&!k.range)),modifiedQuery:t.AdjustedKeyword,pagination:t.Pagination?{page:t.Pagination.CurrentPage,pageSize:t.Pagination.MaxPerPage,totalPages:t.Pagination.NofPages,totalResults:t.Pagination.NofResults,maxPageLinks:t.Pagination.NumberOfPageLinks>0?t.Pagination.NumberOfPageLinks:void 0,displayFirstLink:t.Pagination.IsShowFirstLink,displayLastLink:t.Pagination.IsShowLastLink,options:t.Pagination.Items.map(k=>({title:k.Label,pageSize:k.PageSize,selected:k.Selected,default:k.Default}))??[]}:void 0,query:t.Keyword,querySuggestions:t.DidYouMean,redirect:t.Redirect?{url:t.Redirect.Location,target:t.Redirect.Target}:void 0,results:(a=t.Results)==null?void 0:a.map(f),selectedFacets:o(),seo:{canonicalUrl:t.RelCanonical,description:t.MetaDescription,keywords:t.MetaKeywords,robots:t.MetaRobots,title:t.HeaderTitle},success:t.Success,sorting:{value:(i=t.Sorting)==null?void 0:i.Value,options:((s=t.Sorting)==null?void 0:s.Items.map(k=>({title:k.Label,value:k.Value,selected:k.Selected,default:k.IsDefault})))??[]},trackingId:t.TrackingId},A=new URL(this.getSearchUrl(e));return S.seo||(S.seo={}),S.seo.canonicalUrl=(((d=S.seo.canonicalUrl)==null?void 0:d.replace(/\?.*$/,""))||A.origin+A.pathname)+A.search,S}bindComponents(e){this.bindLandingPageComponent(e),this.bindSearchResultsComponent(e),setTimeout(()=>{this.bindConceptSearchFieldComponent(e),this.bindFacetsListComponent(e),this.bindImageSearchFieldComponent(e),this.bindModifiedQueryComponent(e),this.bindPageSizeComponent(e),this.bindPaginationComponent(e),this.bindQuerySuggestionsComponent(e),this.bindSearchFieldComponent(e),this.bindSearchResultsListComponent(e),this.bindSelectedFacetsComponent(e),this.bindUnifiedSearchFieldComponent(e),this.bindSmartResponseComponent(e),this.bindSortingComponent(e),this.bindTabsComponent(e),this.bindZoneComponent(e)})}bindFacetsListComponent(e){this.triggerBindEvent("facets-list",e?.facets)}bindLandingPageComponent(e){this.triggerBindEvent("landing-page",e)}bindModifiedQueryComponent(e){const t={display:!!e?.query&&!!e?.modifiedQuery&&HawkSearch.searchRequest.newRequest,query:e?.query,modifiedQuery:e?.modifiedQuery};this.triggerBindEvent("modified-query",t)}bindPageSizeComponent(e){var t;this.triggerBindEvent("page-size",(t=e?.pagination)==null?void 0:t.options)}bindPaginationComponent(e){this.triggerBindEvent("pagination",e?.pagination)}bindSearchFieldComponent(e){this.triggerBindEvent("search-field",e)}bindConceptSearchFieldComponent(e){this.triggerBindEvent("conceptsearch-field",e)}bindImageSearchFieldComponent(e){this.triggerBindEvent("imagesearch-field",e)}bindUnifiedSearchFieldComponent(e){this.triggerBindEvent("unifiedsearch-field",e)}bindSearchResultsComponent(e){this.triggerBindEvent("search-results",e)}bindSearchResultsListComponent(e){this.triggerBindEvent("search-results-list",e?.results)}bindQuerySuggestionsComponent(e){var t;const r={display:!!((t=e?.querySuggestions)!=null&&t.length)&&HawkSearch.searchRequest.newRequest,querySuggestions:e?.querySuggestions};this.triggerBindEvent("query-suggestions",r)}bindSmartResponseComponent(e){this.triggerBindEvent("smartresponse",e)}bindSortingComponent(e){this.triggerBindEvent("sorting",e?.sorting)}bindSelectedFacetsComponent(e){this.triggerBindEvent("selected-facets",e?.selectedFacets)}bindTabsComponent(e){var t;this.triggerBindEvent("tabs",(t=e?.facets)==null?void 0:t.find(r=>r.type==="tabs"))}bindZoneComponent(e){this.triggerBindEvent("content-zone",e)}getRequestFromUrl(){const e=new URL(window.location.href),t=Object.values(this.queryStringParams),r={};for(const a of Array.from(e.searchParams.keys()).filter(i=>!t.includes(i))){const i=a;r[i]=e.searchParams.getAll(a)}return{disableSpellcheck:this.getBooleanParameter(e.searchParams.get(this.queryStringParams.disableSpellcheck)),facets:r,newRequest:!0,pageSize:this.getPositiveIntegerParameter(e.searchParams.get(this.queryStringParams.pageSize)),page:this.getPositiveIntegerParameter(e.searchParams.get(this.queryStringParams.page)),query:this.getStringParameter(e.searchParams.get(this.queryStringParams.query)),searchWithin:this.getStringParameter(e.searchParams.get(this.queryStringParams.searchWithin)),sort:this.getStringParameter(e.searchParams.get(this.queryStringParams.sort)),requestType:this.getStringParameter(e.searchParams.get(this.queryStringParams.requestType))}}setQueryString(e){if(!HawkSearch.searchRequest)return;const t=this.getSearchUrl(HawkSearch.searchRequest),r={searchRequest:HawkSearch.searchRequest,searchResponse:e};t.toString()===window.location.href?window.history.replaceState(r,""):window.history.pushState(r,"",t.toString())}getSearchUrl(e){const t=window.location.pathname===this.searchUrl||!!e.url,r=new URL(t?window.location.href:this.searchUrl,window.location.origin),a=Object.values(this.queryStringParams);return r.searchParams.delete(this.queryStringParams.query),e.query&&!wa(e.query)&&r.searchParams.set(this.queryStringParams.query,e.query),Array.from(r.searchParams.keys()).filter(i=>!a.includes(i)).forEach(i=>r.searchParams.delete(i)),e.disableSpellcheck&&r.searchParams.set(this.queryStringParams.disableSpellcheck,e.disableSpellcheck.toString()),e.facets&&Object.keys(e.facets).sort((i,s)=>i>s?1:-1).forEach(i=>{const s=e.facets[i];s?.forEach(d=>r.searchParams.append(i,d))}),r.searchParams.delete(this.queryStringParams.searchWithin),e.searchWithin&&r.searchParams.set(this.queryStringParams.searchWithin,e.searchWithin),r.searchParams.delete(this.queryStringParams.sort),e.sort&&r.searchParams.set(this.queryStringParams.sort,e.sort),r.searchParams.delete(this.queryStringParams.pageSize),e.pageSize&&r.searchParams.set(this.queryStringParams.pageSize,e.pageSize.toString()),r.searchParams.delete(this.queryStringParams.page),e.page&&r.searchParams.set(this.queryStringParams.page,e.page.toString()),r.searchParams.delete(this.queryStringParams.requestType),e.requestType&&r.searchParams.set(this.queryStringParams.requestType,e.requestType.toString()),r.toString()}getBooleanParameter(e){if(e!==null)return e==="true"}getPositiveIntegerParameter(e){if(!e)return;const t=parseInt(e);return t>0?t:void 0}getStringParameter(e){if(!(!e||!e.trim()))return e.trim()}getRecentQueries(){const e=sessionStorage.getItem("recent-queries");return e?JSON.parse(e):[]}saveRecentQueries(e){const t=JSON.stringify(e);sessionStorage.setItem("recent-queries",t)}setSeoElements(e){var t,r,a,i;if(!e?.seo)return;let s=e.seo.title;s&&((r=(t=HawkSearch.config.seo)==null?void 0:t.title)!=null&&r.prefix)&&(s=`${HawkSearch.config.seo.title.prefix}${s}`),s&&((i=(a=HawkSearch.config.seo)==null?void 0:a.title)!=null&&i.suffix)&&(s=`${s}${HawkSearch.config.seo.title.suffix}`),this.setTitle(s),this.setLinkTag("canonical",e.seo.canonicalUrl),this.setMetaTag("description",e.seo.description),this.setMetaTag("keywords",e.seo.keywords),this.setMetaTag("robots",e.seo.robots)}removeElement(e){const t=document.head.querySelector(e);t&&t.remove()}setLinkTag(e,t){if(!t)return;this.removeElement(`link[rel="${e}"]`);const r=document.createElement("link");r.rel=e,r.href=t,document.head.append(r)}setMetaTag(e,t){if(!t)return;this.removeElement(`meta[name="${e}"]`);const r=document.createElement("meta");r.name=e,r.content=t,document.head.append(r)}setTitle(e){e&&(document.title=e)}}class Qc extends Re{constructor(){var e;super(...arguments),this.baseUrl=((e=HawkSearch.config.tracking)==null?void 0:e.endpointUrl)||"https://tracking-dev.hawksearch.net"}trackAddToCart(e,t,r,a){const i={UniqueId:e,Quantity:t,Price:r,Currency:a};return this.trackEvent(J.AddToCart,i)}trackAddToCartMultiple(e){const t={ItemsList:e.map(r=>({UniqueId:r.productId,Quantity:r.quantity,Price:r.price,Currency:r.currencyIsoCode}))};return this.trackEvent(J.AddToCartMultiple,t)}trackAutocompleteClick(e,t,r,a){const i={Keyword:e,Name:r,SuggestType:t,Url:a};return this.trackEvent(J.AutocompleteClick,i)}trackBannerClick(e,t){var r;if(!((r=HawkSearch.searchResponse)!=null&&r.trackingId))return Promise.resolve();const a={BannerId:e,CampaignId:t,TrackingId:HawkSearch.searchResponse.trackingId};return this.trackEvent(J.BannerClick,a)}trackBannerImpression(e,t){var r;if(!((r=HawkSearch.searchResponse)!=null&&r.trackingId)||!e||!t)return Promise.resolve();const a={BannerId:e,CampaignId:t,TrackingId:HawkSearch.searchResponse.trackingId};return this.trackEvent(J.BannerImpression,a)}trackOrder(e,t,r,a,i,s){const d={OrderNo:e,ItemList:t.map(u=>({UniqueId:u.productId,Quantity:u.quantity,ItemPrice:u.price})),SubTotal:r,Tax:a,Total:i,Currency:s};return this.trackEvent(J.Sale,d)}trackPageLoad(e,t){if(e===Ye.Item&&!t)throw new Error("productId is required for tracking product detail page requests");const r={PageTypeId:e,RequestPath:window.location.pathname,Qs:window.location.search,UniqueId:t,ViewportHeight:document.documentElement.clientHeight,ViewportWidth:document.documentElement.clientWidth};return this.trackEvent(J.PageLoad,r)}trackRating(e,t){const r={UniqueId:e,Value:t};return this.trackEvent(J.Rate,r)}trackRecommendationClick(e,t,r){const a={WidgetGuid:e,RequestId:t,UniqueId:r};return this.trackEvent(J.RecommendationClick,a)}trackSearchResultClick(e,t,r){var a;if(!((a=HawkSearch.searchResponse)!=null&&a.trackingId))return Promise.resolve();const i={UniqueId:e,Url:t,TrackingId:HawkSearch.searchResponse.trackingId,ElementNo:this.getElementNo(e),RequestPath:window.location.pathname,Qs:window.location.search,ScrollX:window.scrollX,ScrollY:window.scrollY,ViewportHeight:document.documentElement.clientHeight,ViewportWidth:document.documentElement.clientWidth,MouseX:r?.pageX,MouseY:r?.pageY};return this.trackEvent(J.Click,i)}trackSearch(e,t){var r;if(!((r=HawkSearch.searchResponse)!=null&&r.trackingId))return Promise.resolve();const a={QueryId:t?this.setNewQueryId():this.getQueryId(),TrackingId:HawkSearch.searchResponse.trackingId,TypeId:t?mt.Initial:mt.Refinement,ViewportHeight:document.documentElement.clientHeight,ViewportWidth:document.documentElement.clientWidth,keyword:e};return this.trackEvent(J.Search,a)}async trackEvent(e,t){var r;if(((r=HawkSearch.config.tracking)==null?void 0:r.enabled)===!1)return;const a={ClientGuid:HawkSearch.config.clientId,EventType:e,EventData:btoa(JSON.stringify(t)),VisitorId:this.getVisitorId(),VisitId:this.getVisitId()};try{await this.httpPost("/api/trackevent",a)}catch{throw new Error("Error recording search activity")}}getQueryId(){const e="QueryId";let t=localStorage.getItem(e);return t||(t=this.setNewQueryId()),t}setNewQueryId(){const e=this.generateGuid();return localStorage.setItem("QueryId",e),e}getElementNo(e){var t,r;const a=HawkSearch.searchResponse;if(!a||!a.results)return 0;const i=a.results.findIndex(g=>g.id===e);if(i===-1)return 0;const s=((t=a.pagination)==null?void 0:t.pageSize)??1,d=((r=a.pagination)==null?void 0:r.page)??1;return i+1+s*(d-1)}}window.HawkSearch||(window.HawkSearch={});const z=window.HawkSearch;z.init=n=>{z.config=n,z.handlebars=Sa.noConflict(),z.handlebars.registerHelper("add",ol),z.handlebars.registerHelper("and",ll),z.handlebars.registerHelper("arrayFilterObjects",ml),z.handlebars.registerHelper("arrayHasObjectsWithValue",fl),z.handlebars.registerHelper("attribute",cl),z.handlebars.registerHelper("concat",dl),z.handlebars.registerHelper("currency",gl),z.handlebars.registerHelper("decode",Al),z.handlebars.registerHelper("decodeNested",Cl),z.handlebars.registerHelper("eq",ul),z.handlebars.registerHelper("exclude",hl),z.handlebars.registerHelper("html",pl),z.handlebars.registerHelper("number",kl),z.handlebars.registerHelper("if-else",yl),z.handlebars.registerHelper("lt",_l),z.handlebars.registerHelper("lte",wl),z.handlebars.registerHelper("gt",vl),z.handlebars.registerHelper("gte",bl),z.handlebars.registerHelper("or",xl),z.handlebars.registerHelper("string",Sl),z.handlebars.registerHelper("subtract",El),z.services={autocomplete:new Bc,conversational:new Uc,recommendations:new jc,search:new zc,tracking:new Qc},Object.entries({autocomplete:sl,"checkbox-list-facet":Ml,"color-facet":Dl,"conceptsearch-field":uc,"content-zone":No,conversationalsearch:pc,"custom-content":Po,"date-picker":jo,"date-range-facet":Rl,"facet-wrapper":Gl,"facets-list":Xl,"featured-items-content":Ho,"featured-items-content-item":To,icon:Wo,"image-content":Lo,"imagesearch-field":mc,"landing-page":el,"link-list-facet":Fl,"modified-query":tc,"numeric-range-facet":ql,"page-size":rc,pagination:ic,"popular-queries-content":Oo,"query-suggestions":oc,"range-slider":$o,"range-slider-facet":Bl,rating:Yo,recommendations:al,"recommendations-item":nl,"recent-searches-facet":jl,"related-searches-facet":Ql,"search-field":cc,"search-results":wc,"search-results-item":vc,"search-results-list":yc,"search-within-facet":Zl,"selected-facets":xc,"size-facet":Kl,smartresponse:Ec,sorting:Cc,tabs:Ic,tooltip:Jo,"unifiedsearch-field":Mc,"variant-selector":Rc,"visualsearch-field":Dc}).forEach(([t,r])=>{const a=`hawksearch-${t}`;customElements.get(a)||customElements.define(a,r)}),window.addEventListener("popstate",t=>{const r=t.state;z.searchRequest=r.searchRequest,z.searchResponse=r.searchResponse,z.services.search.bindComponents(r.searchResponse)}),window.dispatchEvent(new CustomEvent("hawksearch:initialized"))},window.dispatchEvent(new CustomEvent("hawksearch:loaded"));export{z as default};
|
|
980
|
+
{{/if}}`;class Rc extends U{constructor(){super(...arguments),this.componentName="variant-selector",this.defaultHtml=Lc,this.bindFromEvent=!1}renderContent(){return!!this.data&&this.data.items.length>1}getContentModel(){return{...this.data}}onRender(){super.onRender(),this.rootElement.querySelectorAll("[hawksearch-variant]").forEach(e=>{e.addEventListener("click",t=>{if(!this.data)return;const a=t.currentTarget.getAttribute("hawksearch-variant")??void 0;if(a===void 0)return;const i=this.data.items.find(s=>s.id===a);i&&this.dispatchEvent(new CustomEvent("hawksearch:variant-selected",{detail:i}))})})}}let Ge;const Oc=new Uint8Array(16);function Fc(){if(!Ge&&(Ge=typeof crypto<"u"&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto),!Ge))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return Ge(Oc)}const K=[];for(let n=0;n<256;++n)K.push((n+256).toString(16).slice(1));function Nc(n,e=0){return(K[n[e+0]]+K[n[e+1]]+K[n[e+2]]+K[n[e+3]]+"-"+K[n[e+4]]+K[n[e+5]]+"-"+K[n[e+6]]+K[n[e+7]]+"-"+K[n[e+8]]+K[n[e+9]]+"-"+K[n[e+10]]+K[n[e+11]]+K[n[e+12]]+K[n[e+13]]+K[n[e+14]]+K[n[e+15]]).toLowerCase()}const qc=typeof crypto<"u"&&crypto.randomUUID&&crypto.randomUUID.bind(crypto),ka={randomUUID:qc};function Vc(n,e,t){if(ka.randomUUID&&!e&&!n)return ka.randomUUID();n=n||{};const r=n.random||(n.rng||Fc)();if(r[6]=r[6]&15|64,r[8]=r[8]&63|128,e){t=t||0;for(let a=0;a<16;++a)e[t+a]=r[a];return e}return Nc(r)}class Re{constructor(){var e,t,r,a,i,s,d,u,g,y,h,v,_,l,E,c,f,m,o,p,b,w,S,A,k,H,x,I,C,T,P,B,L,M,D,F,R,N,Z,G,ge,we,ke,xe,Se,Ee,Oe,Fe,Ae,q,O,V,j,Y,$,ee,Ne,ce,ft,vt,bt,yt,_t;this.queryStringParams={disableSpellcheck:((t=(e=HawkSearch.config.search)==null?void 0:e.queryStringMappings)==null?void 0:t.disableSpellcheck)||"disableSpellcheck",page:((a=(r=HawkSearch.config.search)==null?void 0:r.queryStringMappings)==null?void 0:a.page)||"page",pageSize:((s=(i=HawkSearch.config.search)==null?void 0:i.queryStringMappings)==null?void 0:s.pageSize)||"pageSize",query:((u=(d=HawkSearch.config.search)==null?void 0:d.queryStringMappings)==null?void 0:u.query)||"query",searchWithin:((y=(g=HawkSearch.config.search)==null?void 0:g.queryStringMappings)==null?void 0:y.searchWithin)||"searchWithin",sort:((v=(h=HawkSearch.config.search)==null?void 0:h.queryStringMappings)==null?void 0:v.sort)||"sort",requestType:((l=(_=HawkSearch.config.search)==null?void 0:_.queryStringMappings)==null?void 0:l.requestType)||"requestType"},this.searchUrl=((E=HawkSearch.config.search)==null?void 0:E.url)??"/search",this.fieldMappings={description:this.getFieldMappings((c=HawkSearch.config.fieldMappings)==null?void 0:c.description,["description","longdescription"]),imageUrl:this.getFieldMappings((f=HawkSearch.config.fieldMappings)==null?void 0:f.imageUrl,["imageurl","image"]),price:this.getFieldMappings((m=HawkSearch.config.fieldMappings)==null?void 0:m.price,["price"]),rating:this.getFieldMappings((o=HawkSearch.config.fieldMappings)==null?void 0:o.rating,["rating"]),salePrice:this.getFieldMappings((p=HawkSearch.config.fieldMappings)==null?void 0:p.salePrice,["saleprice"]),sku:this.getFieldMappings((b=HawkSearch.config.fieldMappings)==null?void 0:b.sku,["sku"]),title:this.getFieldMappings((w=HawkSearch.config.fieldMappings)==null?void 0:w.title,["title","name","itemname"]),type:this.getFieldMappings((S=HawkSearch.config.fieldMappings)==null?void 0:S.type,["type"]),url:this.getFieldMappings((A=HawkSearch.config.fieldMappings)==null?void 0:A.url,["url"])},this.variantFieldMappings={color:{name:this.getFieldMappings((x=(H=(k=HawkSearch.config.variants)==null?void 0:k.fieldMappings)==null?void 0:H.color)==null?void 0:x.name,["colorname","color"],(I=HawkSearch.config.variants)==null?void 0:I.fieldPrefix),hex:this.getFieldMappings((P=(T=(C=HawkSearch.config.variants)==null?void 0:C.fieldMappings)==null?void 0:T.color)==null?void 0:P.hex,["colorhex","colorvalue"],(B=HawkSearch.config.variants)==null?void 0:B.fieldPrefix),imageUrl:this.getFieldMappings((D=(M=(L=HawkSearch.config.variants)==null?void 0:L.fieldMappings)==null?void 0:M.color)==null?void 0:D.imageUrl,["colorimageurl","colorimage"],(F=HawkSearch.config.variants)==null?void 0:F.fieldPrefix)},id:this.getFieldMappings((N=(R=HawkSearch.config.variants)==null?void 0:R.fieldMappings)==null?void 0:N.id,["id"],(Z=HawkSearch.config.variants)==null?void 0:Z.fieldPrefix),imageUrl:this.getFieldMappings((ge=(G=HawkSearch.config.variants)==null?void 0:G.fieldMappings)==null?void 0:ge.imageUrl,["imageurl","image"],(we=HawkSearch.config.variants)==null?void 0:we.fieldPrefix),price:this.getFieldMappings((xe=(ke=HawkSearch.config.variants)==null?void 0:ke.fieldMappings)==null?void 0:xe.price,["price"],(Se=HawkSearch.config.variants)==null?void 0:Se.fieldPrefix),rating:this.getFieldMappings((Oe=(Ee=HawkSearch.config.variants)==null?void 0:Ee.fieldMappings)==null?void 0:Oe.rating,["rating"],(Fe=HawkSearch.config.variants)==null?void 0:Fe.fieldPrefix),salePrice:this.getFieldMappings((q=(Ae=HawkSearch.config.variants)==null?void 0:Ae.fieldMappings)==null?void 0:q.salePrice,["salePrice","saleprice"],(O=HawkSearch.config.variants)==null?void 0:O.fieldPrefix),sku:this.getFieldMappings((j=(V=HawkSearch.config.variants)==null?void 0:V.fieldMappings)==null?void 0:j.sku,["title","name","itemname"],(Y=HawkSearch.config.variants)==null?void 0:Y.fieldPrefix),title:this.getFieldMappings((ee=($=HawkSearch.config.variants)==null?void 0:$.fieldMappings)==null?void 0:ee.title,["title","name","itemname"],(Ne=HawkSearch.config.variants)==null?void 0:Ne.fieldPrefix),description:this.getFieldMappings((ft=(ce=HawkSearch.config.variants)==null?void 0:ce.fieldMappings)==null?void 0:ft.description,["description","longdescription"],(vt=HawkSearch.config.variants)==null?void 0:vt.fieldPrefix),url:this.getFieldMappings((yt=(bt=HawkSearch.config.variants)==null?void 0:bt.fieldMappings)==null?void 0:yt.url,["url"],(_t=HawkSearch.config.variants)==null?void 0:_t.fieldPrefix)}}get onSearchPage(){const e=/\/+$/;return window.location.pathname.replace(e,"")===this.searchUrl.replace(e,"")}async httpPost(e,t,r,a){const i=a?e:this.baseUrl+e,s=r||this.getHeaders(),d=await fetch(i,{method:"POST",headers:s,body:JSON.stringify(t)}),u=d.headers.get("content-type");if(u?.startsWith("application/json"))return d.json()}getHeaders(){const e=new Headers;return e.set("Content-Type","application/json"),e.set("X-Requested-With","XMLHttpRequest"),e}getFieldMappings(e,t,r){return typeof e=="string"&&(e=[e]),e?.length||(e=t),r&&(e=e.map(a=>r+a)),e}getVisitorId(){const e="VisitorId";let t=localStorage.getItem(e);return t||(t=this.generateGuid(),localStorage.setItem(e,t)),t}getVisitId(){const e="VisitId";let t=sessionStorage.getItem(e);return t||(t=this.generateGuid(),sessionStorage.setItem(e,t)),t}generateGuid(){return Vc()}stripHtml(e){let t=e.replace(/<[^>]+>/g,"");return t=Eo(t),t=decodeURIComponent(t.replace(/%(?![0-9][0-9a-fA-F]+)/g,"%25")),t}getValue(e,t){for(const r of t){let a=Te(e,r);if(a){if(typeof a=="string"&&(a=a.split("|^|")),a.length===0)continue;return a}}}getString(e,t,r){var a;return((a=this.getValue(e,t))==null?void 0:a[0])??r}getNumber(e,t,r){var a;const i=(a=this.getValue(e,t))==null?void 0:a[0];let s=i?parseFloat(i):void 0;return s!==void 0&&isNaN(s)&&(s=void 0),s??r}getUrl(e,t,r){var a;const i=(a=this.getValue(e,t))==null?void 0:a[0];return this.getFullUrl(i,r)}getFullUrl(e,t){if(e)return t&&!/^(?:https?:)?\/\//.test(e)?`${t}/${e.replace(/^\/+/,"")}`:e}getVariants(e){var t,r,a,i,s,d;if(((t=HawkSearch.config.variants)==null?void 0:t.enabled)===!1)return{items:void 0,selectedItem:void 0};const u=(r=HawkSearch.config.variants)==null?void 0:r.fieldPrefix,g=u?new RegExp("^"+u):void 0,y=l=>{const E=this.getString(l,this.variantFieldMappings.color.name),c=this.getString(l,this.variantFieldMappings.color.imageUrl);let f=this.getString(l,this.variantFieldMappings.color.hex);if(!f&&E&&(f=qo(E)),!(!f&&!c))return{name:E,hex:f,imageUrl:c}},h=((s=(i=(a=e.hawk_child_attributes_hits)==null?void 0:a[0])==null?void 0:i.Items)==null?void 0:s.reduce((l,E)=>{const c=this.getString(E,this.variantFieldMappings.id);return c&&l.push(c),l},[]))??[];let v=(d=e.hawk_child_attributes)==null?void 0:d.map((l,E)=>{const c=this.getString(l,this.variantFieldMappings.id)??"";return{attributes:Object.fromEntries(Object.entries(l).map(([f,m])=>(g&&(f=f.replace(g,"")),[f,m]))),color:y(l),description:this.getString(l,this.variantFieldMappings.description),id:c,imageUrl:this.getString(l,this.variantFieldMappings.imageUrl),price:this.getNumber(l,this.variantFieldMappings.price)||void 0,queryMatch:h.includes(c),rating:this.getNumber(l,this.variantFieldMappings.rating),salePrice:this.getNumber(l,this.variantFieldMappings.salePrice)||void 0,title:this.getString(l,this.variantFieldMappings.title),url:this.getString(l,this.variantFieldMappings.url)}}).filter(l=>!!l.id);v?.length||(v=void 0);let _;for(const l of h){const E=v?.find(c=>c.id===l);if(E){_=E;break}}return _||(_=v?.[0]),{items:v,selectedItem:_}}triggerBindEvent(e,t,r){let a=`hawksearch:bind-${e}`;r&&(a=`${a}:${r}`),this.triggerEvent(a,t)}triggerEvent(e,t){const r=new CustomEvent(e,{detail:t});window.dispatchEvent(r)}}class Bc extends Re{constructor(){var e,t,r;super(...arguments),this.baseUrl=((e=HawkSearch.config.autocomplete)==null?void 0:e.endpointUrl)||((t=HawkSearch.config.search)==null?void 0:t.endpointUrl)||"https://searchapi-dev.hawksearch.net",this.decodeQuery=((r=HawkSearch.config.autocomplete)==null?void 0:r.decodeQuery)||!0}async query(e){const t={query:e};return await this.executeAutocomplete(t)}async executeAutocomplete(e){this.decodeQuery&&e.query&&(e.query=le(e.query));const t={ClientGuid:HawkSearch.config.clientId,IndexName:HawkSearch.config.index,Keyword:e.query,DisplayFullResponse:!0};try{this.triggerEvent("hawksearch:before-autocomplete-executed",t);const r=await this.httpPost("/api/v2/autocomplete",t);this.triggerEvent("hawksearch:after-autocomplete-executed",r);const a=this.convertResponse(e.query,r);return this.triggerEvent("hawksearch:autocomplete-completed",a),this.bindComponent(a),a}catch{throw new Error("Error retrieving autocomplete response")}}convertResponse(e,t){var r,a;const i=s=>{var d,u,g;const y=this.getVariants(s.Results.Document);return{attributes:Object.fromEntries(Object.entries(s.Results.Document).filter(([h,v])=>!["hawk_child_attributes","hawk_child_attributes_hits"].includes(h))),description:this.getString(s.Results.Document,this.fieldMappings.description),id:s.Results.DocId,imageUrl:((d=s.Thumb)==null?void 0:d.Url)||this.getUrl(s.Results.Document,this.fieldMappings.imageUrl,(u=HawkSearch.config.urlPrefixes)==null?void 0:u.content),pinned:s.Results.IsPin,price:this.getNumber(s.Results.Document,this.fieldMappings.price)||void 0,rating:this.getNumber(s.Results.Document,this.fieldMappings.rating),salePrice:this.getNumber(s.Results.Document,this.fieldMappings.salePrice)||void 0,score:s.Results.Score,selectedVariant:y.selectedItem,sku:s.Sku||this.getString(s.Results.Document,this.fieldMappings.sku),title:this.stripHtml(s.ProductName)||this.getString(s.Results.Document,this.fieldMappings.title),url:s.Url||this.getUrl(s.Results.Document,this.fieldMappings.url,(g=HawkSearch.config.urlPrefixes)==null?void 0:g.content),variants:y.items}};return{query:e,categories:{title:t.CategoryHeading,results:t.Categories.map(s=>({title:this.stripHtml(s.Value),field:s.FieldQSName,value:le(s.FieldQSValue),url:`${this.searchUrl}?${s.FieldQSName}=${le(encodeURIComponent(s.FieldQSValue))}`}))},content:{title:t.ContentHeading,results:t.Content.map(s=>({id:s.Results.DocId,pinned:s.Results.IsPin,score:s.Results.Score,attributes:s.Results.Document,title:this.stripHtml(s.Value),url:s.Url})),totalRecords:t.ContentCount},queries:{title:t.PopularHeading,results:t.Popular.map(s=>({query:this.stripHtml(s.RawValue),url:`${this.searchUrl}?${this.queryStringParams.query}=${encodeURIComponent(this.stripHtml(s.RawValue))}`}))},contentSuggestedQueries:{title:t.DYMContentHeading,results:((r=t.DymContentSearch)==null?void 0:r.map(s=>({query:this.stripHtml(s.RawValue),url:`${this.searchUrl}?${this.queryStringParams.query}=${encodeURIComponent(this.stripHtml(s.RawValue))}`})))??[]},productSuggestedQueries:{title:t.DYMProductHeading,results:((a=t.DymProductsSearch)==null?void 0:a.map(s=>({query:this.stripHtml(s.RawValue),url:`${this.searchUrl}?${this.queryStringParams.query}=${encodeURIComponent(this.stripHtml(s.RawValue))}`})))??[]},products:{title:t.ProductHeading,results:t.Products.map(s=>i(s)),totalRecords:t.ProductCount},totalRecords:t.Count,viewAllText:t.ViewAllButtonLabel}}bindComponent(e){this.triggerBindEvent("autocomplete",e)}}class Uc extends Re{constructor(){super(...arguments),this.baseUrl="https://genai.bridgeline.com/api",this.API_KEY="ba0279e8-6df6-11ee-a9fd-9df2e7adae60"}async query(e,t){return e?await this.executeSearch(e,t):[]}async executeSearch(e,t){this.bindComponents(e);const r={api_key:this.API_KEY,messages:e,...t};HawkSearch.config.debug&&console.log("hawksearch:debug ",{rawConversationalSearchRequest:r.messages});try{this.triggerEvent("hawksearch:before-send-message-executed",e);const a=new Headers;a.set("Content-Type","application/json");const i=await this.httpPost(this.baseUrl,r,a,!0);if(this.triggerEvent("hawksearch:after-send-message-executed",i),!i.success)throw new Error("Network response was not ok");this.triggerEvent("hawksearch:before-received-message-executed",i);const s=this.convertResponse(i);return this.triggerEvent("hawksearch:after-receive-message-executed",s),this.bindComponents(s),s}catch{throw new Error("Error retrieving search response")}}convertResponse(e){return e.response.choices[0].message}bindComponents(e){this.triggerBindEvent("conversationalsearch",{conversationResponse:e})}}class jc extends Re{constructor(){var e;super(...arguments),this.baseUrl=((e=HawkSearch.config.recommendations)==null?void 0:e.endpointUrl)||"https://recs-dev.hawksearch.net"}getItems(e){return this.executeRecommendations(e)}async executeRecommendations(e){const t={clientGuid:HawkSearch.config.clientId,indexName:HawkSearch.config.index,landingPageUrl:e.url,renderHTML:!1,visitId:this.getVisitId(),visitorId:this.getVisitorId(),widgetUids:[{widgetGuid:e.widgetId,uniqueid:e.itemId}]};try{this.triggerEvent("hawksearch:before-recommendations-executed",t);const r=await this.httpPost("/api/recommendation/v2/getwidgetitems",t);this.triggerEvent("hawksearch:after-recommendations-executed",r);const a=this.convertResponse(r);this.triggerEvent("hawksearch:recommendations-completed",a);const i=e.itemId?`${e.widgetId}:${e.itemId}`:e.widgetId;return HawkSearch.recommendationsResponses={...HawkSearch.recommendationsResponses??{},[i]:a},this.bindComponents(a),a}catch{throw new Error("Error retrieving recommendations response")}}convertResponse(e){var t;const r=i=>{if(i)return typeof i=="string"?i.split("|^|"):i},a=i=>{var s,d;const u=this.getVariants(i.customDict);return{attributes:Object.fromEntries(Object.entries(i.customDict).filter(([g,y])=>!["hawk_child_attributes","hawk_child_attributes_hits"].includes(g)).map(([g,y])=>[g,r(y)])),description:i.shortDescription||this.getString(i.customDict,this.fieldMappings.description),id:i.id,imageUrl:i.imageUrl||this.getUrl(i.customDict,this.fieldMappings.imageUrl,(s=HawkSearch.config.urlPrefixes)==null?void 0:s.content),price:parseFloat(i.price)||this.getNumber(i.customDict,this.fieldMappings.price)||void 0,rating:parseFloat(i.rating)||this.getNumber(i.customDict,this.fieldMappings.rating)||void 0,salePrice:parseFloat(i.salePrice)||this.getNumber(i.customDict,this.fieldMappings.salePrice)||void 0,selectedVariant:u.selectedItem,sku:i.Sku||this.getString(i.customDict,this.fieldMappings.sku),title:i.itemName||this.getString(i.customDict,this.fieldMappings.title),url:i.url||this.getUrl(i.customDict,this.fieldMappings.url,(d=HawkSearch.config.urlPrefixes)==null?void 0:d.content),variants:u.items}};return{requestId:e.requestId,widgets:(t=e?.widgetItems)==null?void 0:t.map(i=>{var s;return{id:i.widgetGuid,requestId:e.requestId,title:i.widgetName,carousel:i.isCarousel,carouselData:i.carouselData,items:(s=i.recommendationItems)==null?void 0:s.map(d=>a(d))}})}}bindComponents(e){var t;(t=e.widgets)==null||t.forEach(r=>{this.triggerBindEvent("recommendations",r,r.id)})}}class zc extends Re{constructor(){var e,t,r,a;super(...arguments),this.baseUrl=((e=HawkSearch.config.search)==null?void 0:e.endpointUrl)||"https://searchapi-dev.hawksearch.net",this.facetExclusionPrefix=((t=HawkSearch.config.search)==null?void 0:t.facetExclusionPrefix)||"-",this.decodeQuery=((r=HawkSearch.config.search)==null?void 0:r.decodeQuery)||!0,this.decodeFacetValues=((a=HawkSearch.config.search)==null?void 0:a.decodeFacetValues)||!0,this.shouldRenderUI=!0}async search(e){const t=await this.executeSearch(e,!0,!1);return this.shouldRenderUI&&this.bindComponents(t),t}async query(e,t=void 0,r=!1){const a=typeof e=="string"?{queryString:e,requestType:"DefaultSearch"}:e,i=a?.queryString,s={disableSpellcheck:!!r||void 0,facets:t,newRequest:!0,query:i,requestType:a?.requestType};if(!this.onSearchPage){const u=this.getSearchUrl(s);return window.location.assign(u),Promise.resolve()}if(i&&!wa(i)){const u=this.getRecentQueries(),g=5;u.includes(i)||(u.length>=g&&u.splice(g-1),u.unshift(i),this.saveRecentQueries(u))}const d=await this.executeSearch(s,!0,!1);return this.shouldRenderUI&&this.bindComponents(d),d}async addFacetValue(e,t){var r;this.ensureSearchRequest();const a=ne(HawkSearch.searchRequest);a.newRequest=!1,a.page=void 0,a.facets||(a.facets={}),this.clearExistingFacetValue(a,e,t),a.facets[e]=[...((r=a.facets[e])==null?void 0:r.filter(s=>s!==t))??[],t];const i=await this.executeSearch(a,!1);return this.bindFacetsListComponent(i),this.bindPaginationComponent(i),this.bindSelectedFacetsComponent(i),this.bindTabsComponent(i),this.bindZoneComponent(i),i}async removeFacetValue(e,t){if(this.ensureSearchRequest(),e==="searchWithin")return await this.searchWithin("");const r=ne(HawkSearch.searchRequest);r.newRequest=!1,r.page=void 0,this.clearExistingFacetValue(r,e,t);const a=await this.executeSearch(r,!1);return this.bindFacetsListComponent(a),this.bindPaginationComponent(a),this.bindSelectedFacetsComponent(a),this.bindTabsComponent(a),this.bindZoneComponent(a),a}includeFacetValue(e,t){const r=`${this.facetExclusionPrefix}${t}`;return this.removeFacetValue(e,r)}async excludeFacetValue(e,t){this.ensureSearchRequest();const r=`${this.facetExclusionPrefix}${t}`,a=ne(HawkSearch.searchRequest);a.newRequest=!1,a.page=void 0,a.facets||(a.facets={}),this.clearExistingFacetValue(a,e,t),a.facets={...a.facets,[e]:[...a.facets[e]??[],r]};const i=await this.executeSearch(a,!1);return this.bindFacetsListComponent(i),this.bindPaginationComponent(i),this.bindSelectedFacetsComponent(i),this.bindTabsComponent(i),this.bindZoneComponent(i),i}clearExistingFacetValue(e,t,r){var a,i;r=r.replace(new RegExp("^"+this.facetExclusionPrefix),"");const s=`${this.facetExclusionPrefix}${r}`;e.facets||(e.facets={}),e.facets={...e.facets,[t]:[...((a=e.facets[t])==null?void 0:a.filter(d=>d!==r&&d!==s))??[]]},(i=e.facets[t])!=null&&i.length||delete e.facets[t]}async setFacetValue(e,t){this.ensureSearchRequest();const r=ne(HawkSearch.searchRequest);r.newRequest=!1,r.page=void 0,r.facets||(r.facets={}),r.facets[e]=[t];const a=await this.executeSearch(r,!1);return this.bindFacetsListComponent(a),this.bindPaginationComponent(a),this.bindSelectedFacetsComponent(a),this.bindTabsComponent(a),this.bindZoneComponent(a),a}async searchWithin(e){this.ensureSearchRequest();const t=ne(HawkSearch.searchRequest);t.newRequest=!1,t.page=void 0,t.searchWithin=e||void 0;const r=await this.executeSearch(t,!1);return this.bindFacetsListComponent(r),this.bindPaginationComponent(r),this.bindSelectedFacetsComponent(r),this.bindTabsComponent(r),this.bindZoneComponent(r),r}async selectTab(e){var t,r,a;this.ensureSearchRequest();const i=ne(HawkSearch.searchRequest);i.newRequest=!1,i.page=void 0,i.facets||(i.facets={});const s=(a=(r=(t=HawkSearch.searchResponse)==null?void 0:t.facets)==null?void 0:r.find(u=>u.type==="tabs"))==null?void 0:a.field;s&&(e?i.facets[s]=[e]:delete i.facets[s]);const d=await this.executeSearch(i,!1);return this.bindFacetsListComponent(d),this.bindPaginationComponent(d),this.bindSelectedFacetsComponent(d),this.bindTabsComponent(d),this.bindZoneComponent(d),d}async paginate(e){this.ensureSearchRequest();const t=ne(HawkSearch.searchRequest);t.newRequest=!1,t.page=e;const r=await this.executeSearch(t,!1);return this.bindPaginationComponent(r),r}async setPageSize(e){this.ensureSearchRequest();const t=ne(HawkSearch.searchRequest);t.newRequest=!1,t.page=1,t.pageSize=e;const r=await this.executeSearch(t,!1);return this.bindPageSizeComponent(r),this.bindPaginationComponent(r),r}async sort(e){this.ensureSearchRequest();const t=ne(HawkSearch.searchRequest);t.newRequest=!1,t.page=1,t.sort=e;const r=await this.executeSearch(t,!1);return this.bindPaginationComponent(r),this.bindSortingComponent(r),r}async executeSearch(e,t,r=!0){var a,i;if(this.decodeQuery&&e.query&&(e.query=le(e.query)),this.decodeFacetValues&&e.facets){for(const y in e.facets)if(Object.prototype.hasOwnProperty.call(e.facets,y)){const h=[],v=e.facets[y];for(const _ in v)Object.prototype.hasOwnProperty.call(v,_)&&h.push(le(v[parseInt(_)]));e.facets[y]=h}}HawkSearch.searchRequest=e;const s=e.requestType==="ImageData",d=s?"ImageData":e.requestType==="ImageSearch"?"ImageText":"Keyword",u=s?"ImageSearch":e.requestType,g={ClientData:{UserAgent:window.navigator.userAgent,VisitorId:this.getVisitorId(),VisitId:this.getVisitId()},ClientGuid:HawkSearch.config.clientId,CustomURL:e.url,RequestType:u||"DefaultSearch",IgnoreSpellcheck:e.disableSpellcheck,IndexName:HawkSearch.config.index,kValue:(a=HawkSearch.config.search)==null?void 0:a.kValue,[d||"Keyword"]:e.query,FacetSelections:e.facets,MaxPerPage:e.pageSize,PageNo:e.page,SearchWithin:e.searchWithin,SortBy:e.sort,Variants:{CountFacetHitOnChild:(i=HawkSearch.config.variants)==null?void 0:i.baseFacetCountOnVariants}};HawkSearch.config.debug&&console.log("hawksearch:debug ",{rawSearchRequest:g});try{this.triggerEvent("hawksearch:before-search-executed",g);const y=await this.httpPost("/api/v2/search",g),h=this.convertResponse(e,y);return HawkSearch.searchResponse=h,this.triggerEvent("hawksearch:after-search-executed",y),HawkSearch.services.tracking.trackSearch(s?"image-upload":e.query,t),s||this.setQueryString(h),this.setSeoElements(h),t&&h.redirect&&h.redirect.url&&(h.redirect.target!=="_blank"&&(this.shouldRenderUI=!1),h.redirect.target==="_blank"?window.open(h.redirect.url,"_blank"):h.redirect.target==="_parent"?window.open(h.redirect.url,"_parent"):h.redirect.target==="_top"?window.open(h.redirect.url,"_top"):window.open(h.redirect.url,"_self")),r&&this.shouldRenderUI&&(this.bindModifiedQueryComponent(h),this.bindQuerySuggestionsComponent(h),this.bindSearchFieldComponent(h),this.bindConceptSearchFieldComponent(h),this.bindUnifiedSearchFieldComponent(h),this.bindSearchResultsListComponent(h),this.bindImageSearchFieldComponent(h)),this.triggerEvent("hawksearch:search-completed",h),h}catch(y){throw this.triggerEvent("hawksearch:search-failed",y||"Error retrieving search response"),new Error("Error retrieving search response")}}ensureSearchRequest(){if(!HawkSearch.searchRequest)throw this.triggerEvent("hawksearch:search-failed","You cannot refine search results until an initial search has been executed"),new Error("You cannot refine search results until an initial search has been executed")}convertResponse(e,t){var r,a,i,s,d;const u=k=>{if(k.FieldType==="tab")return"tabs";switch(k.FacetType.toLowerCase()){case"checkbox":case"nestedcheckbox":return"checkbox";case"color":return"color";case"link":return"link";case"openrange":if(k.DataType==="datetime")return"date-range";if(k.IsCurrency||k.IsNumeric)return"numeric-range";case"recentsearches":return"recent-searches";case"related":return"related-searches";case"search":return"search";case"size":return"size";case"slider":return"range-slider";case"swatch":return"color";default:return"unsupported"}},g=k=>{if(k.DisplayType==="scrolling")return{height:k.ScrollHeight||void 0,threshold:k.ScrollThreshold||0}},y=["date-range","numeric-range","range-slider"],h=k=>{var H;const x=u(k);if(!(!y.includes(x)||!((H=k.Values)!=null&&H.length)))return k.DataType==="datetime"?{type:"date",min:new Date(Date.parse(k.Values[0].RangeMin)),max:new Date(Date.parse(k.Values[0].RangeMax)),start:new Date(Date.parse(k.Values[0].RangeStart)),end:new Date(Date.parse(k.Values[0].RangeEnd))}:{type:"numeric",min:parseFloat(k.Values[0].RangeMin),max:parseFloat(k.Values[0].RangeMax),start:parseFloat(k.Values[0].RangeStart),end:parseFloat(k.Values[0].RangeEnd)}},v=(k,H)=>{var x,I;const C=(x=k.Ranges)==null?void 0:x.find(T=>T.Value.toLowerCase()===H.Value.toLowerCase());if(C?.AssetFullUrl)return this.getFullUrl(C.AssetFullUrl,(I=HawkSearch.config.urlPrefixes)==null?void 0:I.assets)},_=(k,H)=>{var x,I,C;let T=(x=k.SwatchData)==null?void 0:x.find(P=>P.Value.toLowerCase()===H.Value.toLowerCase());if(T||(T=(I=k.SwatchData)==null?void 0:I.find(P=>P.IsDefault)),!!T)return{name:H.Label,hex:T.Color||T.Value,imageUrl:this.getFullUrl(T.AssetUrl||T.AssetName,(C=HawkSearch.config.urlPrefixes)==null?void 0:C.assets)}},l=(k,H,x)=>u(k)==="recent-searches"?this.getRecentQueries().map(T=>({title:this.decodeFacetValues?le(T):T})):H?.map(C=>{var T;return{title:C.Label,imageUrl:v(k,C),value:C.Value,color:_(k,C),count:C.Count,level:C.Level,selected:C.Selected,excluded:(T=x?.Items)==null?void 0:T.some(P=>P.Value===`${this.facetExclusionPrefix}${C.Value}`),children:l(k,C.Children,x)}}),E=k=>{if(u(k)==="recent-searches"){const x=l(k,void 0,void 0);return!!x?.length}return k.IsVisible??!0},c=k=>{if(k.DisplayType==="truncating")return{threshold:parseFloat(k.TruncateThreshold)||0}},f=k=>{var H,x;const I=(T,P)=>{var B,L,M,D;typeof P=="string"&&(P=[P]);const F=(((L=(B=HawkSearch.config.search)==null?void 0:B.itemTypes)==null?void 0:L.productValues)??["item","product"]).map(R=>R.toLowerCase());for(const R of P){let N=Te(T,R);if(N&&N instanceof Array&&(N=N[0]),N&&F.includes(N.toLowerCase()))return"product"}return((D=(M=HawkSearch.config.search)==null?void 0:M.itemTypes)==null?void 0:D.default)??"content"},C=this.getVariants(k.Document);return{attributes:Object.fromEntries(Object.entries(k.Document).filter(([T,P])=>!["hawk_child_attributes","hawk_child_attributes_hits"].includes(T))),description:this.getString(k.Document,this.fieldMappings.description),id:k.DocId,imageUrl:this.getUrl(k.Document,this.fieldMappings.imageUrl,(H=HawkSearch.config.urlPrefixes)==null?void 0:H.content),pinned:k.IsPin??!1,price:this.getNumber(k.Document,this.fieldMappings.price)||void 0,rating:this.getNumber(k.Document,this.fieldMappings.rating),salePrice:this.getNumber(k.Document,this.fieldMappings.salePrice)||void 0,score:k.Score,sku:this.getString(k.Document,this.fieldMappings.sku),selectedVariant:C.selectedItem,title:this.getString(k.Document,this.fieldMappings.title),type:I(k.Document,this.fieldMappings.type),url:this.getUrl(k.Document,this.fieldMappings.url,(x=HawkSearch.config.urlPrefixes)==null?void 0:x.content),variants:C.items,visible:k.IsVisible??!0}},m=k=>{if(k.IsSearch)return{threshold:parseFloat(k.SearchThreshold)||0}},o=()=>[...Object.keys(t.Selections??[]).map(k=>{var H;const x=t.Selections[k],I=(H=t.Facets)==null?void 0:H.find(T=>(T.ParamName||T.Field)===k),C=new RegExp("^"+this.facetExclusionPrefix);return{field:k,currency:I?.IsCurrency??!1,title:x.Label,values:x.Items.map(T=>({title:T.Label.replace(C,""),value:T.Value,excluded:C.test(T.Value)}))}}),...p()],p=()=>{var k;const H="searchWithin",x=(k=t.Facets)==null?void 0:k.find(I=>I.Field===H);return!e.searchWithin||!x?[]:[{field:H,title:x.Name,currency:!1,values:[{title:e.searchWithin,value:e.searchWithin,excluded:!1}]}]},b=(k,H,x)=>{var I;(H==="Mobile"&&!k.IsMobile||H==="Tablet"&&!k.IsTablet)&&(H="");const C={campaignId:k.CampaignId,id:k.BannerId,title:k.Title,trackingEnabled:k.IsTrackingEnabled??!0,type:k[H+"ContentType"],zone:x??k.Zone};switch(C.type){case"custom":{const T=C;T.content=k[H+"Output"];break}case"featured":{const T=C;T.type="featured-items",T.items=[...(k.Items??[]).map(f),...(k.FeaturedItems??[]).map(f)];break}case"image":{const T=C;T.image={url:this.getFullUrl(k[H+"ImageUrl"],(I=HawkSearch.config.urlPrefixes)==null?void 0:I.assets),height:k[H+"Height"]||void 0,width:k[H+"Width"]||void 0,altText:k[H+"AltTag"],title:k[H+"AltTag"]},T.link=k[H+"ForwardUrl"]?{url:k[H+"ForwardUrl"],target:k[H+"Target"]||"_self"}:void 0;break}case"widget":switch(k[H+"WidgetType"]){case"PopularSearchesWidget":{const P=C;P.type="popular-queries";const B=Math.min(...k[H+"Output"].map(R=>R.count)),M=Math.max(...k[H+"Output"].map(R=>R.count))-B,D=5,F=new Array(D).fill(0);F.forEach((R,N)=>{N===D-1?F[N]=0:F[N]=Math.floor(M/(N+1))+B}),P.items=k[H+"Output"]instanceof Array?k[H+"Output"].map(R=>({query:R.keyword,count:R.count,weight:D-F.findIndex(N=>R.count>=N)})).sort((R,N)=>R.query.localeCompare(N.query)):[];break}default:{const P=C;P.type="custom-widget",P.data=k.AltTag}}}return C},w=()=>{var k,H,x;const I={};return(k=t.FeaturedItems)==null||k.Items.forEach(C=>{const T=I[C.Zone]??{name:C.Zone},P={mobile:b(C,""),tablet:b(C,""),desktop:b(C,"")};T.items=[...T.items??[],P],I[C.Zone]=T}),(H=t.Merchandising)==null||H.Items.forEach(C=>{const T=I[C.Zone]??{name:C.Zone},P={mobile:b(C,"Mobile"),tablet:b(C,"Tablet"),desktop:b(C,"")};T.items=[...T.items??[],P],I[C.Zone]=T}),(x=t.PageContent)==null||x.forEach(C=>{const T=I[C.ZoneName]??{name:C.ZoneName};C.Items.forEach(P=>{const B={mobile:b(P,"Mobile",T.name),tablet:b(P,"Tablet",T.name),desktop:b(P,"",T.name)};T.items=[...T.items??[],B]}),I[C.ZoneName]=T}),I},S={content:{breadcrumbs:t.Breadcrumb||void 0,customHtml:t.CustomHtml||void 0,heading:t.PageHeading||void 0},contentZones:w(),customLayout:t.PageLayoutHtml||void 0,facets:(r=t.Facets)==null?void 0:r.map(k=>{var H;return{id:k.FacetId,type:u(k),title:k.Name,field:k.ParamName||k.Field,collapsible:k.IsCollapsible??!1,collapsed:k.IsCollapsedDefault,displayCount:k.ShowItemsCount,range:h(k),scrolling:g(k),search:m(k),searchWithin:e.searchWithin,tooltip:this.stripHtml(k.Tooltip??"")||void 0,truncation:c(k),values:l(k,k.Values,(H=t.Selections)==null?void 0:H[k.ParamName||k.Field]),visible:E(k)}}).filter(k=>k.type!=="unsupported"&&!(y.includes(k.type)&&!k.range)),modifiedQuery:t.AdjustedKeyword,pagination:t.Pagination?{page:t.Pagination.CurrentPage,pageSize:t.Pagination.MaxPerPage,totalPages:t.Pagination.NofPages,totalResults:t.Pagination.NofResults,maxPageLinks:t.Pagination.NumberOfPageLinks>0?t.Pagination.NumberOfPageLinks:void 0,displayFirstLink:t.Pagination.IsShowFirstLink,displayLastLink:t.Pagination.IsShowLastLink,options:t.Pagination.Items.map(k=>({title:k.Label,pageSize:k.PageSize,selected:k.Selected,default:k.Default}))??[]}:void 0,query:t.Keyword,querySuggestions:t.DidYouMean,redirect:t.Redirect?{url:t.Redirect.Location,target:t.Redirect.Target}:void 0,results:(a=t.Results)==null?void 0:a.map(f),selectedFacets:o(),seo:{canonicalUrl:t.RelCanonical,description:t.MetaDescription,keywords:t.MetaKeywords,robots:t.MetaRobots,title:t.HeaderTitle},success:t.Success,sorting:{value:(i=t.Sorting)==null?void 0:i.Value,options:((s=t.Sorting)==null?void 0:s.Items.map(k=>({title:k.Label,value:k.Value,selected:k.Selected,default:k.IsDefault})))??[]},trackingId:t.TrackingId},A=new URL(this.getSearchUrl(e));return S.seo||(S.seo={}),S.seo.canonicalUrl=(((d=S.seo.canonicalUrl)==null?void 0:d.replace(/\?.*$/,""))||A.origin+A.pathname)+A.search,S}bindComponents(e){this.bindLandingPageComponent(e),this.bindSearchResultsComponent(e),setTimeout(()=>{this.bindConceptSearchFieldComponent(e),this.bindFacetsListComponent(e),this.bindImageSearchFieldComponent(e),this.bindModifiedQueryComponent(e),this.bindPageSizeComponent(e),this.bindPaginationComponent(e),this.bindQuerySuggestionsComponent(e),this.bindSearchFieldComponent(e),this.bindSearchResultsListComponent(e),this.bindSelectedFacetsComponent(e),this.bindUnifiedSearchFieldComponent(e),this.bindSmartResponseComponent(e),this.bindSortingComponent(e),this.bindTabsComponent(e),this.bindZoneComponent(e)})}bindFacetsListComponent(e){this.triggerBindEvent("facets-list",e?.facets)}bindLandingPageComponent(e){this.triggerBindEvent("landing-page",e)}bindModifiedQueryComponent(e){const t={display:!!e?.query&&!!e?.modifiedQuery&&HawkSearch.searchRequest.newRequest,query:e?.query,modifiedQuery:e?.modifiedQuery};this.triggerBindEvent("modified-query",t)}bindPageSizeComponent(e){var t;this.triggerBindEvent("page-size",(t=e?.pagination)==null?void 0:t.options)}bindPaginationComponent(e){this.triggerBindEvent("pagination",e?.pagination)}bindSearchFieldComponent(e){this.triggerBindEvent("search-field",e)}bindConceptSearchFieldComponent(e){this.triggerBindEvent("conceptsearch-field",e)}bindImageSearchFieldComponent(e){this.triggerBindEvent("imagesearch-field",e)}bindUnifiedSearchFieldComponent(e){this.triggerBindEvent("unifiedsearch-field",e)}bindSearchResultsComponent(e){this.triggerBindEvent("search-results",e)}bindSearchResultsListComponent(e){this.triggerBindEvent("search-results-list",e?.results)}bindQuerySuggestionsComponent(e){var t;const r={display:!!((t=e?.querySuggestions)!=null&&t.length)&&HawkSearch.searchRequest.newRequest,querySuggestions:e?.querySuggestions};this.triggerBindEvent("query-suggestions",r)}bindSmartResponseComponent(e){this.triggerBindEvent("smartresponse",e)}bindSortingComponent(e){this.triggerBindEvent("sorting",e?.sorting)}bindSelectedFacetsComponent(e){this.triggerBindEvent("selected-facets",e?.selectedFacets)}bindTabsComponent(e){var t;this.triggerBindEvent("tabs",(t=e?.facets)==null?void 0:t.find(r=>r.type==="tabs"))}bindZoneComponent(e){this.triggerBindEvent("content-zone",e)}getRequestFromUrl(){const e=new URL(window.location.href),t=Object.values(this.queryStringParams),r={};for(const a of Array.from(e.searchParams.keys()).filter(i=>!t.includes(i))){const i=a;r[i]=e.searchParams.getAll(a)}return{disableSpellcheck:this.getBooleanParameter(e.searchParams.get(this.queryStringParams.disableSpellcheck)),facets:r,newRequest:!0,pageSize:this.getPositiveIntegerParameter(e.searchParams.get(this.queryStringParams.pageSize)),page:this.getPositiveIntegerParameter(e.searchParams.get(this.queryStringParams.page)),query:this.getStringParameter(e.searchParams.get(this.queryStringParams.query)),searchWithin:this.getStringParameter(e.searchParams.get(this.queryStringParams.searchWithin)),sort:this.getStringParameter(e.searchParams.get(this.queryStringParams.sort)),requestType:this.getStringParameter(e.searchParams.get(this.queryStringParams.requestType))}}setQueryString(e){if(!HawkSearch.searchRequest)return;const t=this.getSearchUrl(HawkSearch.searchRequest),r={searchRequest:HawkSearch.searchRequest,searchResponse:e};t.toString()===window.location.href?window.history.replaceState(r,""):window.history.pushState(r,"",t.toString())}getSearchUrl(e){const t=window.location.pathname===this.searchUrl||!!e.url,r=new URL(t?window.location.href:this.searchUrl,window.location.origin),a=Object.values(this.queryStringParams);return r.searchParams.delete(this.queryStringParams.query),e.query&&!wa(e.query)&&r.searchParams.set(this.queryStringParams.query,e.query),Array.from(r.searchParams.keys()).filter(i=>!a.includes(i)).forEach(i=>r.searchParams.delete(i)),e.disableSpellcheck&&r.searchParams.set(this.queryStringParams.disableSpellcheck,e.disableSpellcheck.toString()),e.facets&&Object.keys(e.facets).sort((i,s)=>i>s?1:-1).forEach(i=>{const s=e.facets[i];s?.forEach(d=>r.searchParams.append(i,d))}),r.searchParams.delete(this.queryStringParams.searchWithin),e.searchWithin&&r.searchParams.set(this.queryStringParams.searchWithin,e.searchWithin),r.searchParams.delete(this.queryStringParams.sort),e.sort&&r.searchParams.set(this.queryStringParams.sort,e.sort),r.searchParams.delete(this.queryStringParams.pageSize),e.pageSize&&r.searchParams.set(this.queryStringParams.pageSize,e.pageSize.toString()),r.searchParams.delete(this.queryStringParams.page),e.page&&r.searchParams.set(this.queryStringParams.page,e.page.toString()),r.searchParams.delete(this.queryStringParams.requestType),e.requestType&&r.searchParams.set(this.queryStringParams.requestType,e.requestType.toString()),r.toString()}getBooleanParameter(e){if(e!==null)return e==="true"}getPositiveIntegerParameter(e){if(!e)return;const t=parseInt(e);return t>0?t:void 0}getStringParameter(e){if(!(!e||!e.trim()))return e.trim()}getRecentQueries(){const e=sessionStorage.getItem("recent-queries");return e?JSON.parse(e):[]}saveRecentQueries(e){const t=JSON.stringify(e);sessionStorage.setItem("recent-queries",t)}setSeoElements(e){var t,r,a,i;if(!e?.seo)return;let s=e.seo.title;s&&((r=(t=HawkSearch.config.seo)==null?void 0:t.title)!=null&&r.prefix)&&(s=`${HawkSearch.config.seo.title.prefix}${s}`),s&&((i=(a=HawkSearch.config.seo)==null?void 0:a.title)!=null&&i.suffix)&&(s=`${s}${HawkSearch.config.seo.title.suffix}`),this.setTitle(s),this.setLinkTag("canonical",e.seo.canonicalUrl),this.setMetaTag("description",e.seo.description),this.setMetaTag("keywords",e.seo.keywords),this.setMetaTag("robots",e.seo.robots)}removeElement(e){const t=document.head.querySelector(e);t&&t.remove()}setLinkTag(e,t){if(!t)return;this.removeElement(`link[rel="${e}"]`);const r=document.createElement("link");r.rel=e,r.href=t,document.head.append(r)}setMetaTag(e,t){if(!t)return;this.removeElement(`meta[name="${e}"]`);const r=document.createElement("meta");r.name=e,r.content=t,document.head.append(r)}setTitle(e){e&&(document.title=e)}}class Qc extends Re{constructor(){var e;super(...arguments),this.baseUrl=((e=HawkSearch.config.tracking)==null?void 0:e.endpointUrl)||"https://tracking-dev.hawksearch.net"}trackAddToCart(e,t,r,a){const i={UniqueId:e,Quantity:t,Price:r,Currency:a};return this.trackEvent(J.AddToCart,i)}trackAddToCartMultiple(e){const t={ItemsList:e.map(r=>({UniqueId:r.productId,Quantity:r.quantity,Price:r.price,Currency:r.currencyIsoCode}))};return this.trackEvent(J.AddToCartMultiple,t)}trackAutocompleteClick(e,t,r,a){const i={Keyword:e,Name:r,SuggestType:t,Url:a};return this.trackEvent(J.AutocompleteClick,i)}trackBannerClick(e,t){var r;if(!((r=HawkSearch.searchResponse)!=null&&r.trackingId))return Promise.resolve();const a={BannerId:e,CampaignId:t,TrackingId:HawkSearch.searchResponse.trackingId};return this.trackEvent(J.BannerClick,a)}trackBannerImpression(e,t){var r;if(!((r=HawkSearch.searchResponse)!=null&&r.trackingId)||!e||!t)return Promise.resolve();const a={BannerId:e,CampaignId:t,TrackingId:HawkSearch.searchResponse.trackingId};return this.trackEvent(J.BannerImpression,a)}trackOrder(e,t,r,a,i,s){const d={OrderNo:e,ItemList:t.map(u=>({UniqueId:u.productId,Quantity:u.quantity,ItemPrice:u.price})),SubTotal:r,Tax:a,Total:i,Currency:s};return this.trackEvent(J.Sale,d)}trackPageLoad(e,t){if(e===Ye.Item&&!t)throw new Error("productId is required for tracking product detail page requests");const r={PageTypeId:e,RequestPath:window.location.pathname,Qs:window.location.search,UniqueId:t,ViewportHeight:document.documentElement.clientHeight,ViewportWidth:document.documentElement.clientWidth};return this.trackEvent(J.PageLoad,r)}trackRating(e,t){const r={UniqueId:e,Value:t};return this.trackEvent(J.Rate,r)}trackRecommendationClick(e,t,r){const a={WidgetGuid:e,RequestId:t,UniqueId:r};return this.trackEvent(J.RecommendationClick,a)}trackSearchResultClick(e,t,r){var a;if(!((a=HawkSearch.searchResponse)!=null&&a.trackingId))return Promise.resolve();const i={UniqueId:e,Url:t,TrackingId:HawkSearch.searchResponse.trackingId,ElementNo:this.getElementNo(e),RequestPath:window.location.pathname,Qs:window.location.search,ScrollX:window.scrollX,ScrollY:window.scrollY,ViewportHeight:document.documentElement.clientHeight,ViewportWidth:document.documentElement.clientWidth,MouseX:r?.pageX,MouseY:r?.pageY};return this.trackEvent(J.Click,i)}trackSearch(e,t){var r;if(!((r=HawkSearch.searchResponse)!=null&&r.trackingId))return Promise.resolve();const a={QueryId:t?this.setNewQueryId():this.getQueryId(),TrackingId:HawkSearch.searchResponse.trackingId,TypeId:t?mt.Initial:mt.Refinement,ViewportHeight:document.documentElement.clientHeight,ViewportWidth:document.documentElement.clientWidth,keyword:e};return this.trackEvent(J.Search,a)}async trackEvent(e,t){var r;if(((r=HawkSearch.config.tracking)==null?void 0:r.enabled)===!1)return;const a={ClientGuid:HawkSearch.config.clientId,EventType:e,EventData:btoa(JSON.stringify(t)),VisitorId:this.getVisitorId(),VisitId:this.getVisitId()};try{await this.httpPost("/api/trackevent",a)}catch{throw new Error("Error recording search activity")}}getQueryId(){const e="QueryId";let t=localStorage.getItem(e);return t||(t=this.setNewQueryId()),t}setNewQueryId(){const e=this.generateGuid();return localStorage.setItem("QueryId",e),e}getElementNo(e){var t,r;const a=HawkSearch.searchResponse;if(!a||!a.results)return 0;const i=a.results.findIndex(g=>g.id===e);if(i===-1)return 0;const s=((t=a.pagination)==null?void 0:t.pageSize)??1,d=((r=a.pagination)==null?void 0:r.page)??1;return i+1+s*(d-1)}}window.HawkSearch||(window.HawkSearch={});const z=window.HawkSearch;z.init=n=>{z.config=n,z.handlebars=Sa.noConflict(),z.handlebars.registerHelper("add",ol),z.handlebars.registerHelper("and",ll),z.handlebars.registerHelper("arrayFilterObjects",ml),z.handlebars.registerHelper("arrayHasObjectsWithValue",fl),z.handlebars.registerHelper("attribute",cl),z.handlebars.registerHelper("concat",dl),z.handlebars.registerHelper("currency",gl),z.handlebars.registerHelper("decode",Al),z.handlebars.registerHelper("decodeNested",Cl),z.handlebars.registerHelper("eq",ul),z.handlebars.registerHelper("exclude",hl),z.handlebars.registerHelper("html",pl),z.handlebars.registerHelper("number",kl),z.handlebars.registerHelper("if-else",yl),z.handlebars.registerHelper("lt",_l),z.handlebars.registerHelper("lte",wl),z.handlebars.registerHelper("gt",vl),z.handlebars.registerHelper("gte",bl),z.handlebars.registerHelper("or",xl),z.handlebars.registerHelper("string",Sl),z.handlebars.registerHelper("subtract",El),z.services={autocomplete:new Bc,conversational:new Uc,recommendations:new jc,search:new zc,tracking:new Qc},Object.entries({autocomplete:sl,"checkbox-list-facet":Ml,"color-facet":Dl,"conceptsearch-field":uc,"content-zone":No,conversationalsearch:pc,"custom-content":Po,"date-picker":jo,"date-range-facet":Rl,"facet-wrapper":Gl,"facets-list":Xl,"featured-items-content":Ho,"featured-items-content-item":To,icon:Wo,"image-content":Lo,"imagesearch-field":mc,"landing-page":el,"link-list-facet":Fl,"modified-query":tc,"numeric-range-facet":ql,"page-size":rc,pagination:ic,"popular-queries-content":Oo,"query-suggestions":oc,"range-slider":$o,"range-slider-facet":Bl,rating:Yo,recommendations:al,"recommendations-item":nl,"recent-searches-facet":jl,"related-searches-facet":Ql,"search-field":cc,"search-results":wc,"search-results-item":vc,"search-results-list":yc,"search-within-facet":Zl,"selected-facets":xc,"size-facet":Kl,smartresponse:Ec,sorting:Cc,tabs:Ic,tooltip:Jo,"unifiedsearch-field":Mc,"variant-selector":Rc,"visualsearch-field":Dc}).forEach(([t,r])=>{const a=`hawksearch-${t}`;customElements.get(a)||customElements.define(a,r)}),window.addEventListener("popstate",t=>{const r=t.state;z.searchRequest=r.searchRequest,z.searchResponse=r.searchResponse,z.services.search.bindComponents(r.searchResponse)}),window.dispatchEvent(new CustomEvent("hawksearch:initialized"))},window.dispatchEvent(new CustomEvent("hawksearch:loaded"));export{z as default};
|