@bridgeline-digital/hawksearch-handlebars-ui 6.2.7 → 6.2.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * name: @bridgeline-digital/hawksearch-handlebars-ui
3
3
  *
4
- * version: v6.2.6
4
+ * version: v6.2.9
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
  *
@@ -11226,7 +11226,7 @@ class SearchService extends BaseService {
11226
11226
  // #region Query String
11227
11227
  getRequestFromUrl() {
11228
11228
  const url = new URL(window.location.href);
11229
- const nonFacetParams = Object.keys(this.queryStringParams);
11229
+ const nonFacetParams = Object.values(this.queryStringParams);
11230
11230
  const facets = {};
11231
11231
  for (const param of Array.from(url.searchParams.keys()).filter((p) => !nonFacetParams.includes(p))) {
11232
11232
  const field = param;
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * name: @bridgeline-digital/hawksearch-handlebars-ui
3
3
  *
4
- * version: v6.2.6
4
+ * version: v6.2.9
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
  *
@@ -973,4 +973,4 @@ Expecting `+C.join(", ")+", got '"+(this.terminals_[b]||b)+"'":T="Parse error on
973
973
  </div>
974
974
  {{/each}}
975
975
  </div>
976
- {{/if}}`;class Dc extends U{constructor(){super(...arguments),this.componentName="variant-selector",this.defaultHtml=Tc,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 r=t.currentTarget.getAttribute("hawksearch-variant")??void 0;if(r===void 0)return;const i=this.data.items.find(s=>s.id===r);i&&this.dispatchEvent(new CustomEvent("hawksearch:variant-selected",{detail:i}))})})}}let Ge;const Lc=new Uint8Array(16);function Oc(){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(Lc)}const K=[];for(let n=0;n<256;++n)K.push((n+256).toString(16).slice(1));function Rc(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 Fc=typeof crypto<"u"&&crypto.randomUUID&&crypto.randomUUID.bind(crypto),ka={randomUUID:Fc};function Nc(n,e,t){if(ka.randomUUID&&!e&&!n)return ka.randomUUID();n=n||{};const a=n.random||(n.rng||Oc)();if(a[6]=a[6]&15|64,a[8]=a[8]&63|128,e){t=t||0;for(let r=0;r<16;++r)e[t+r]=a[r];return e}return Rc(a)}class Oe{constructor(){var e,t,a,r,i,s,u,d,g,y,h,v,_,l,E,c,f,m,o,p,b,w,S,A,k,I,x,H,C,T,P,V,L,M,D,F,O,N,Z,G,ge,we,ke,xe,Se,Ee,Re,Fe,Ae,q,R,B,j,Y,$,ee,Ne,le,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:((r=(a=HawkSearch.config.search)==null?void 0:a.queryStringMappings)==null?void 0:r.page)||"page",pageSize:((s=(i=HawkSearch.config.search)==null?void 0:i.queryStringMappings)==null?void 0:s.pageSize)||"pageSize",query:((d=(u=HawkSearch.config.search)==null?void 0:u.queryStringMappings)==null?void 0:d.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=(I=(k=HawkSearch.config.variants)==null?void 0:k.fieldMappings)==null?void 0:I.color)==null?void 0:x.name,["colorname","color"],(H=HawkSearch.config.variants)==null?void 0:H.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"],(V=HawkSearch.config.variants)==null?void 0:V.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=(O=HawkSearch.config.variants)==null?void 0:O.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((Re=(Ee=HawkSearch.config.variants)==null?void 0:Ee.fieldMappings)==null?void 0:Re.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"],(R=HawkSearch.config.variants)==null?void 0:R.fieldPrefix),sku:this.getFieldMappings((j=(B=HawkSearch.config.variants)==null?void 0:B.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=(le=HawkSearch.config.variants)==null?void 0:le.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,a,r){const i=r?e:this.baseUrl+e,s=a||this.getHeaders(),u=await fetch(i,{method:"POST",headers:s,body:JSON.stringify(t)}),d=u.headers.get("content-type");if(d?.startsWith("application/json"))return u.json()}getHeaders(){const e=new Headers;return e.set("Content-Type","application/json"),e.set("X-Requested-With","XMLHttpRequest"),e}getFieldMappings(e,t,a){return typeof e=="string"&&(e=[e]),e?.length||(e=t),a&&(e=e.map(r=>a+r)),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 Nc()}stripHtml(e){let t=e.replace(/<[^>]+>/g,"");return t=Eo(t),t=decodeURIComponent(t),t}getValue(e,t){for(const a of t){let r=Te(e,a);if(r){if(typeof r=="string"&&(r=r.split("|^|")),r.length===0)continue;return r}}}getString(e,t,a){var r;return((r=this.getValue(e,t))==null?void 0:r[0])??a}getNumber(e,t,a){var r;const i=(r=this.getValue(e,t))==null?void 0:r[0];let s=i?parseFloat(i):void 0;return s!==void 0&&isNaN(s)&&(s=void 0),s??a}getUrl(e,t,a){var r;const i=(r=this.getValue(e,t))==null?void 0:r[0];return this.getFullUrl(i,a)}getFullUrl(e,t){if(e)return t&&!/^(?:https?:)?\/\//.test(e)?`${t}/${e.replace(/^\/+/,"")}`:e}getVariants(e){var t,a,r,i,s,u;if(((t=HawkSearch.config.variants)==null?void 0:t.enabled)===!1)return{items:void 0,selectedItem:void 0};const d=(a=HawkSearch.config.variants)==null?void 0:a.fieldPrefix,g=d?new RegExp("^"+d):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=(r=e.hawk_child_attributes_hits)==null?void 0:r[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=(u=e.hawk_child_attributes)==null?void 0:u.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,a){let r=`hawksearch:bind-${e}`;a&&(r=`${r}:${a}`),this.triggerEvent(r,t)}triggerEvent(e,t){const a=new CustomEvent(e,{detail:t});window.dispatchEvent(a)}}class qc extends Oe{constructor(){var e,t,a;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=((a=HawkSearch.config.autocomplete)==null?void 0:a.decodeQuery)||!0}async query(e){const t={query:e};return await this.executeAutocomplete(t)}async executeAutocomplete(e){this.decodeQuery&&e.query&&(e.query=oe(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 a=await this.httpPost("/api/v2/autocomplete",t);this.triggerEvent("hawksearch:after-autocomplete-executed",a);const r=this.convertResponse(e.query,a);return this.triggerEvent("hawksearch:autocomplete-completed",r),this.bindComponent(r),r}catch{throw new Error("Error retrieving autocomplete response")}}convertResponse(e,t){var a,r;const i=s=>{var u,d,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:((u=s.Thumb)==null?void 0:u.Url)||this.getUrl(s.Results.Document,this.fieldMappings.imageUrl,(d=HawkSearch.config.urlPrefixes)==null?void 0:d.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:oe(s.FieldQSValue),url:`${this.searchUrl}?${s.FieldQSName}=${oe(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:((a=t.DymContentSearch)==null?void 0:a.map(s=>({query:this.stripHtml(s.RawValue),url:`${this.searchUrl}?${this.queryStringParams.query}=${encodeURIComponent(this.stripHtml(s.RawValue))}`})))??[]},productSuggestedQueries:{title:t.DYMProductHeading,results:((r=t.DymProductsSearch)==null?void 0:r.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 Bc extends Oe{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 a={api_key:this.API_KEY,messages:e,...t};HawkSearch.config.debug&&console.log("hawksearch:debug ",{rawConversationalSearchRequest:a.messages});try{this.triggerEvent("hawksearch:before-send-message-executed",e);const r=new Headers;r.set("Content-Type","application/json");const i=await this.httpPost(this.baseUrl,a,r,!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 Vc extends Oe{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 a=await this.httpPost("/api/recommendation/v2/getwidgetitems",t);this.triggerEvent("hawksearch:after-recommendations-executed",a);const r=this.convertResponse(a);this.triggerEvent("hawksearch:recommendations-completed",r);const i=e.itemId?`${e.widgetId}:${e.itemId}`:e.widgetId;return HawkSearch.recommendationsResponses={...HawkSearch.recommendationsResponses??{},[i]:r},this.bindComponents(r),r}catch{throw new Error("Error retrieving recommendations response")}}convertResponse(e){var t;const a=i=>{if(i)return typeof i=="string"?i.split("|^|"):i},r=i=>{var s,u;const d=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,a(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:d.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,(u=HawkSearch.config.urlPrefixes)==null?void 0:u.content),variants:d.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(u=>r(u))}})}}bindComponents(e){var t;(t=e.widgets)==null||t.forEach(a=>{this.triggerBindEvent("recommendations",a,a.id)})}}class Uc extends Oe{constructor(){var e,t,a,r;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=((a=HawkSearch.config.search)==null?void 0:a.decodeQuery)||!0,this.decodeFacetValues=((r=HawkSearch.config.search)==null?void 0:r.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,a=!1){const r=typeof e=="string"?{queryString:e,requestType:"DefaultSearch"}:e,i=r?.queryString,s={disableSpellcheck:!!a||void 0,facets:t,newRequest:!0,query:i,requestType:r?.requestType};if(!this.onSearchPage){const d=this.getSearchUrl(s);return window.location.assign(d),Promise.resolve()}if(i&&!wa(i)){const d=this.getRecentQueries(),g=5;d.includes(i)||(d.length>=g&&d.splice(g-1),d.unshift(i),this.saveRecentQueries(d))}const u=await this.executeSearch(s,!0,!1);return this.shouldRenderUI&&this.bindComponents(u),u}async addFacetValue(e,t){var a;this.ensureSearchRequest();const r=ne(HawkSearch.searchRequest);r.newRequest=!1,r.page=void 0,r.facets||(r.facets={}),this.clearExistingFacetValue(r,e,t),r.facets[e]=[...((a=r.facets[e])==null?void 0:a.filter(s=>s!==t))??[],t];const i=await this.executeSearch(r,!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 a=ne(HawkSearch.searchRequest);a.newRequest=!1,a.page=void 0,this.clearExistingFacetValue(a,e,t);const r=await this.executeSearch(a,!1);return this.bindFacetsListComponent(r),this.bindPaginationComponent(r),this.bindSelectedFacetsComponent(r),this.bindTabsComponent(r),this.bindZoneComponent(r),r}includeFacetValue(e,t){const a=`${this.facetExclusionPrefix}${t}`;return this.removeFacetValue(e,a)}async excludeFacetValue(e,t){this.ensureSearchRequest();const a=`${this.facetExclusionPrefix}${t}`,r=ne(HawkSearch.searchRequest);r.newRequest=!1,r.page=void 0,r.facets||(r.facets={}),this.clearExistingFacetValue(r,e,t),r.facets={...r.facets,[e]:[...r.facets[e]??[],a]};const i=await this.executeSearch(r,!1);return this.bindFacetsListComponent(i),this.bindPaginationComponent(i),this.bindSelectedFacetsComponent(i),this.bindTabsComponent(i),this.bindZoneComponent(i),i}clearExistingFacetValue(e,t,a){var r,i;a=a.replace(new RegExp("^"+this.facetExclusionPrefix),"");const s=`${this.facetExclusionPrefix}${a}`;e.facets||(e.facets={}),e.facets={...e.facets,[t]:[...((r=e.facets[t])==null?void 0:r.filter(u=>u!==a&&u!==s))??[]]},(i=e.facets[t])!=null&&i.length||delete e.facets[t]}async setFacetValue(e,t){this.ensureSearchRequest();const a=ne(HawkSearch.searchRequest);a.newRequest=!1,a.page=void 0,a.facets||(a.facets={}),a.facets[e]=[t];const r=await this.executeSearch(a,!1);return this.bindFacetsListComponent(r),this.bindPaginationComponent(r),this.bindSelectedFacetsComponent(r),this.bindTabsComponent(r),this.bindZoneComponent(r),r}async searchWithin(e){this.ensureSearchRequest();const t=ne(HawkSearch.searchRequest);t.newRequest=!1,t.page=void 0,t.searchWithin=e||void 0;const a=await this.executeSearch(t,!1);return this.bindFacetsListComponent(a),this.bindPaginationComponent(a),this.bindSelectedFacetsComponent(a),this.bindTabsComponent(a),this.bindZoneComponent(a),a}async selectTab(e){var t,a,r;this.ensureSearchRequest();const i=ne(HawkSearch.searchRequest);i.newRequest=!1,i.page=void 0,i.facets||(i.facets={});const s=(r=(a=(t=HawkSearch.searchResponse)==null?void 0:t.facets)==null?void 0:a.find(d=>d.type==="tabs"))==null?void 0:r.field;s&&(e?i.facets[s]=[e]:delete i.facets[s]);const u=await this.executeSearch(i,!1);return this.bindFacetsListComponent(u),this.bindPaginationComponent(u),this.bindSelectedFacetsComponent(u),this.bindTabsComponent(u),this.bindZoneComponent(u),u}async paginate(e){this.ensureSearchRequest();const t=ne(HawkSearch.searchRequest);t.newRequest=!1,t.page=e;const a=await this.executeSearch(t,!1);return this.bindPaginationComponent(a),a}async setPageSize(e){this.ensureSearchRequest();const t=ne(HawkSearch.searchRequest);t.newRequest=!1,t.page=1,t.pageSize=e;const a=await this.executeSearch(t,!1);return this.bindPageSizeComponent(a),this.bindPaginationComponent(a),a}async sort(e){this.ensureSearchRequest();const t=ne(HawkSearch.searchRequest);t.newRequest=!1,t.page=1,t.sort=e;const a=await this.executeSearch(t,!1);return this.bindPaginationComponent(a),this.bindSortingComponent(a),a}async executeSearch(e,t,a=!0){var r,i;if(this.decodeQuery&&e.query&&(e.query=oe(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(oe(v[parseInt(_)]));e.facets[y]=h}}HawkSearch.searchRequest=e;const s=e.requestType==="ImageData",u=s?"ImageData":e.requestType==="ImageSearch"?"ImageText":"Keyword",d=s?"ImageSearch":e.requestType,g={ClientData:{UserAgent:window.navigator.userAgent,VisitorId:this.getVisitorId(),VisitId:this.getVisitId()},ClientGuid:HawkSearch.config.clientId,CustomURL:e.url,RequestType:d||"DefaultSearch",IgnoreSpellcheck:e.disableSpellcheck,IndexName:HawkSearch.config.index,kValue:(r=HawkSearch.config.search)==null?void 0:r.kValue,[u||"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")),a&&this.shouldRenderUI&&(this.bindModifiedQueryComponent(h),this.bindQuerySuggestionsComponent(h),this.bindSearchFieldComponent(h),this.bindConceptSearchFieldComponent(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 a,r,i,s,u;const d=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 I;const x=d(k);if(!(!y.includes(x)||!((I=k.Values)!=null&&I.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,I)=>{var x,H;const C=(x=k.Ranges)==null?void 0:x.find(T=>T.Value.toLowerCase()===I.Value.toLowerCase());if(C?.AssetFullUrl)return this.getFullUrl(C.AssetFullUrl,(H=HawkSearch.config.urlPrefixes)==null?void 0:H.assets)},_=(k,I)=>{var x,H,C;let T=(x=k.SwatchData)==null?void 0:x.find(P=>P.Value.toLowerCase()===I.Value.toLowerCase());if(T||(T=(H=k.SwatchData)==null?void 0:H.find(P=>P.IsDefault)),!!T)return{name:I.Label,hex:T.Color||T.Value,imageUrl:this.getFullUrl(T.AssetUrl||T.AssetName,(C=HawkSearch.config.urlPrefixes)==null?void 0:C.assets)}},l=(k,I,x)=>d(k)==="recent-searches"?this.getRecentQueries().map(T=>({title:this.decodeFacetValues?oe(T):T})):I?.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(d(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 I,x;const H=(T,P)=>{var V,L,M,D;typeof P=="string"&&(P=[P]);const F=(((L=(V=HawkSearch.config.search)==null?void 0:V.itemTypes)==null?void 0:L.productValues)??["item","product"]).map(O=>O.toLowerCase());for(const O of P){let N=Te(T,O);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,(I=HawkSearch.config.urlPrefixes)==null?void 0:I.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:H(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 I;const x=t.Selections[k],H=(I=t.Facets)==null?void 0:I.find(T=>(T.ParamName||T.Field)===k),C=new RegExp("^"+this.facetExclusionPrefix);return{field:k,currency:H?.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 I="searchWithin",x=(k=t.Facets)==null?void 0:k.find(H=>H.Field===I);return!e.searchWithin||!x?[]:[{field:I,title:x.Name,currency:!1,values:[{title:e.searchWithin,value:e.searchWithin,excluded:!1}]}]},b=(k,I,x)=>{var H;(I==="Mobile"&&!k.IsMobile||I==="Tablet"&&!k.IsTablet)&&(I="");const C={campaignId:k.CampaignId,id:k.BannerId,title:k.Title,trackingEnabled:k.IsTrackingEnabled??!0,type:k[I+"ContentType"],zone:x??k.Zone};switch(C.type){case"custom":{const T=C;T.content=k[I+"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[I+"ImageUrl"],(H=HawkSearch.config.urlPrefixes)==null?void 0:H.assets),height:k[I+"Height"]||void 0,width:k[I+"Width"]||void 0,altText:k[I+"AltTag"],title:k[I+"AltTag"]},T.link=k[I+"ForwardUrl"]?{url:k[I+"ForwardUrl"],target:k[I+"Target"]||"_self"}:void 0;break}case"widget":switch(k[I+"WidgetType"]){case"PopularSearchesWidget":{const P=C;P.type="popular-queries";const V=Math.min(...k[I+"Output"].map(O=>O.count)),M=Math.max(...k[I+"Output"].map(O=>O.count))-V,D=5,F=new Array(D).fill(0);F.forEach((O,N)=>{N===D-1?F[N]=0:F[N]=Math.floor(M/(N+1))+V}),P.items=k[I+"Output"]instanceof Array?k[I+"Output"].map(O=>({query:O.keyword,count:O.count,weight:D-F.findIndex(N=>O.count>=N)})).sort((O,N)=>O.query.localeCompare(N.query)):[];break}default:{const P=C;P.type="custom-widget",P.data=k.AltTag}}}return C},w=()=>{var k,I,x;const H={};return(k=t.FeaturedItems)==null||k.Items.forEach(C=>{const T=H[C.Zone]??{name:C.Zone},P={mobile:b(C,""),tablet:b(C,""),desktop:b(C,"")};T.items=[...T.items??[],P],H[C.Zone]=T}),(I=t.Merchandising)==null||I.Items.forEach(C=>{const T=H[C.Zone]??{name:C.Zone},P={mobile:b(C,"Mobile"),tablet:b(C,"Tablet"),desktop:b(C,"")};T.items=[...T.items??[],P],H[C.Zone]=T}),(x=t.PageContent)==null||x.forEach(C=>{const T=H[C.ZoneName]??{name:C.ZoneName};C.Items.forEach(P=>{const V={mobile:b(P,"Mobile",T.name),tablet:b(P,"Tablet",T.name),desktop:b(P,"",T.name)};T.items=[...T.items??[],V]}),H[C.ZoneName]=T}),H},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:(a=t.Facets)==null?void 0:a.map(k=>{var I;return{id:k.FacetId,type:d(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,(I=t.Selections)==null?void 0:I[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:(r=t.Results)==null?void 0:r.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=(((u=S.seo.canonicalUrl)==null?void 0:u.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.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)}bindSearchResultsComponent(e){this.triggerBindEvent("search-results",e)}bindSearchResultsListComponent(e){this.triggerBindEvent("search-results-list",e?.results)}bindQuerySuggestionsComponent(e){var t;const a={display:!!((t=e?.querySuggestions)!=null&&t.length)&&HawkSearch.searchRequest.newRequest,querySuggestions:e?.querySuggestions};this.triggerBindEvent("query-suggestions",a)}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(a=>a.type==="tabs"))}bindZoneComponent(e){this.triggerBindEvent("content-zone",e)}getRequestFromUrl(){const e=new URL(window.location.href),t=Object.keys(this.queryStringParams),a={};for(const r of Array.from(e.searchParams.keys()).filter(i=>!t.includes(i))){const i=r;a[i]=e.searchParams.getAll(r)}return{disableSpellcheck:this.getBooleanParameter(e.searchParams.get(this.queryStringParams.disableSpellcheck)),facets:a,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),a={searchRequest:HawkSearch.searchRequest,searchResponse:e};t.toString()===window.location.href?window.history.replaceState(a,""):window.history.pushState(a,"",t.toString())}getSearchUrl(e){const t=window.location.pathname===this.searchUrl||!!e.url,a=new URL(t?window.location.href:this.searchUrl,window.location.origin),r=Object.values(this.queryStringParams);return a.searchParams.delete(this.queryStringParams.query),e.query&&!wa(e.query)&&a.searchParams.set(this.queryStringParams.query,e.query),Array.from(a.searchParams.keys()).filter(i=>!r.includes(i)).forEach(i=>a.searchParams.delete(i)),e.disableSpellcheck&&a.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(u=>a.searchParams.append(i,u))}),a.searchParams.delete(this.queryStringParams.searchWithin),e.searchWithin&&a.searchParams.set(this.queryStringParams.searchWithin,e.searchWithin),a.searchParams.delete(this.queryStringParams.sort),e.sort&&a.searchParams.set(this.queryStringParams.sort,e.sort),a.searchParams.delete(this.queryStringParams.pageSize),e.pageSize&&a.searchParams.set(this.queryStringParams.pageSize,e.pageSize.toString()),a.searchParams.delete(this.queryStringParams.page),e.page&&a.searchParams.set(this.queryStringParams.page,e.page.toString()),a.searchParams.delete(this.queryStringParams.requestType),e.requestType&&a.searchParams.set(this.queryStringParams.requestType,e.requestType.toString()),a.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,a,r,i;if(!e?.seo)return;let s=e.seo.title;s&&((a=(t=HawkSearch.config.seo)==null?void 0:t.title)!=null&&a.prefix)&&(s=`${HawkSearch.config.seo.title.prefix}${s}`),s&&((i=(r=HawkSearch.config.seo)==null?void 0:r.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 a=document.createElement("link");a.rel=e,a.href=t,document.head.append(a)}setMetaTag(e,t){if(!t)return;this.removeElement(`meta[name="${e}"]`);const a=document.createElement("meta");a.name=e,a.content=t,document.head.append(a)}setTitle(e){e&&(document.title=e)}}class jc extends Oe{constructor(){var e;super(...arguments),this.baseUrl=((e=HawkSearch.config.tracking)==null?void 0:e.endpointUrl)||"https://tracking-dev.hawksearch.net"}trackAddToCart(e,t,a,r){const i={UniqueId:e,Quantity:t,Price:a,Currency:r};return this.trackEvent(J.AddToCart,i)}trackAddToCartMultiple(e){const t={ItemsList:e.map(a=>({UniqueId:a.productId,Quantity:a.quantity,Price:a.price,Currency:a.currencyIsoCode}))};return this.trackEvent(J.AddToCartMultiple,t)}trackAutocompleteClick(e,t,a,r){const i={Keyword:e,Name:a,SuggestType:t,Url:r};return this.trackEvent(J.AutocompleteClick,i)}trackBannerClick(e,t){var a;if(!((a=HawkSearch.searchResponse)!=null&&a.trackingId))return Promise.resolve();const r={BannerId:e,CampaignId:t,TrackingId:HawkSearch.searchResponse.trackingId};return this.trackEvent(J.BannerClick,r)}trackBannerImpression(e,t){var a;if(!((a=HawkSearch.searchResponse)!=null&&a.trackingId)||!e||!t)return Promise.resolve();const r={BannerId:e,CampaignId:t,TrackingId:HawkSearch.searchResponse.trackingId};return this.trackEvent(J.BannerImpression,r)}trackOrder(e,t,a,r,i,s){const u={OrderNo:e,ItemList:t.map(d=>({UniqueId:d.productId,Quantity:d.quantity,ItemPrice:d.price})),SubTotal:a,Tax:r,Total:i,Currency:s};return this.trackEvent(J.Sale,u)}trackPageLoad(e,t){if(e===Ye.Item&&!t)throw new Error("productId is required for tracking product detail page requests");const a={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,a)}trackRating(e,t){const a={UniqueId:e,Value:t};return this.trackEvent(J.Rate,a)}trackRecommendationClick(e,t,a){const r={WidgetGuid:e,RequestId:t,UniqueId:a};return this.trackEvent(J.RecommendationClick,r)}trackSearchResultClick(e,t,a){var r;if(!((r=HawkSearch.searchResponse)!=null&&r.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:a?.pageX,MouseY:a?.pageY};return this.trackEvent(J.Click,i)}trackSearch(e,t){var a;if(!((a=HawkSearch.searchResponse)!=null&&a.trackingId))return Promise.resolve();const r={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,r)}async trackEvent(e,t){var a;if(((a=HawkSearch.config.tracking)==null?void 0:a.enabled)===!1)return;const r={ClientGuid:HawkSearch.config.clientId,EventType:e,EventData:btoa(JSON.stringify(t)),VisitorId:this.getVisitorId(),VisitId:this.getVisitId()};try{await this.httpPost("/api/trackevent",r)}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,a;const r=HawkSearch.searchResponse;if(!r||!r.results)return 0;const i=r.results.findIndex(g=>g.id===e);if(i===-1)return 0;const s=((t=r.pagination)==null?void 0:t.pageSize)??1,u=((a=r.pagination)==null?void 0:a.page)??1;return i+1+s*(u-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",ul),z.handlebars.registerHelper("currency",gl),z.handlebars.registerHelper("decode",Al),z.handlebars.registerHelper("decodeNested",Cl),z.handlebars.registerHelper("eq",dl),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 qc,conversational:new Bc,recommendations:new Vc,search:new Uc,tracking:new jc},Object.entries({autocomplete:sl,"checkbox-list-facet":Ml,"color-facet":Dl,"conceptsearch-field":dc,"content-zone":No,conversationalsearch:pc,"custom-content":Po,"date-picker":jo,"date-range-facet":Ol,"facet-wrapper":Gl,"facets-list":Xl,"featured-items-content":Io,"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":Ro,"query-suggestions":oc,"range-slider":$o,"range-slider-facet":Vl,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:Hc,tooltip:Jo,"variant-selector":Dc,"visualsearch-field":Mc}).forEach(([t,a])=>{const r=`hawksearch-${t}`;customElements.get(r)||customElements.define(r,a)}),window.addEventListener("popstate",t=>{const a=t.state;z.searchRequest=a.searchRequest,z.searchResponse=a.searchResponse,z.services.search.bindComponents(a.searchResponse)}),window.dispatchEvent(new CustomEvent("hawksearch:initialized"))},window.dispatchEvent(new CustomEvent("hawksearch:loaded"));export{z as default};
976
+ {{/if}}`;class Dc extends U{constructor(){super(...arguments),this.componentName="variant-selector",this.defaultHtml=Tc,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 r=t.currentTarget.getAttribute("hawksearch-variant")??void 0;if(r===void 0)return;const i=this.data.items.find(s=>s.id===r);i&&this.dispatchEvent(new CustomEvent("hawksearch:variant-selected",{detail:i}))})})}}let Ge;const Lc=new Uint8Array(16);function Oc(){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(Lc)}const K=[];for(let n=0;n<256;++n)K.push((n+256).toString(16).slice(1));function Rc(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 Fc=typeof crypto<"u"&&crypto.randomUUID&&crypto.randomUUID.bind(crypto),ka={randomUUID:Fc};function Nc(n,e,t){if(ka.randomUUID&&!e&&!n)return ka.randomUUID();n=n||{};const a=n.random||(n.rng||Oc)();if(a[6]=a[6]&15|64,a[8]=a[8]&63|128,e){t=t||0;for(let r=0;r<16;++r)e[t+r]=a[r];return e}return Rc(a)}class Oe{constructor(){var e,t,a,r,i,s,u,d,g,y,h,v,_,l,E,c,f,m,o,p,b,w,S,A,k,I,x,H,C,T,P,V,L,M,D,F,O,N,Z,G,ge,we,ke,xe,Se,Ee,Re,Fe,Ae,q,R,B,j,Y,$,ee,Ne,le,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:((r=(a=HawkSearch.config.search)==null?void 0:a.queryStringMappings)==null?void 0:r.page)||"page",pageSize:((s=(i=HawkSearch.config.search)==null?void 0:i.queryStringMappings)==null?void 0:s.pageSize)||"pageSize",query:((d=(u=HawkSearch.config.search)==null?void 0:u.queryStringMappings)==null?void 0:d.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=(I=(k=HawkSearch.config.variants)==null?void 0:k.fieldMappings)==null?void 0:I.color)==null?void 0:x.name,["colorname","color"],(H=HawkSearch.config.variants)==null?void 0:H.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"],(V=HawkSearch.config.variants)==null?void 0:V.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=(O=HawkSearch.config.variants)==null?void 0:O.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((Re=(Ee=HawkSearch.config.variants)==null?void 0:Ee.fieldMappings)==null?void 0:Re.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"],(R=HawkSearch.config.variants)==null?void 0:R.fieldPrefix),sku:this.getFieldMappings((j=(B=HawkSearch.config.variants)==null?void 0:B.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=(le=HawkSearch.config.variants)==null?void 0:le.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,a,r){const i=r?e:this.baseUrl+e,s=a||this.getHeaders(),u=await fetch(i,{method:"POST",headers:s,body:JSON.stringify(t)}),d=u.headers.get("content-type");if(d?.startsWith("application/json"))return u.json()}getHeaders(){const e=new Headers;return e.set("Content-Type","application/json"),e.set("X-Requested-With","XMLHttpRequest"),e}getFieldMappings(e,t,a){return typeof e=="string"&&(e=[e]),e?.length||(e=t),a&&(e=e.map(r=>a+r)),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 Nc()}stripHtml(e){let t=e.replace(/<[^>]+>/g,"");return t=Eo(t),t=decodeURIComponent(t),t}getValue(e,t){for(const a of t){let r=Te(e,a);if(r){if(typeof r=="string"&&(r=r.split("|^|")),r.length===0)continue;return r}}}getString(e,t,a){var r;return((r=this.getValue(e,t))==null?void 0:r[0])??a}getNumber(e,t,a){var r;const i=(r=this.getValue(e,t))==null?void 0:r[0];let s=i?parseFloat(i):void 0;return s!==void 0&&isNaN(s)&&(s=void 0),s??a}getUrl(e,t,a){var r;const i=(r=this.getValue(e,t))==null?void 0:r[0];return this.getFullUrl(i,a)}getFullUrl(e,t){if(e)return t&&!/^(?:https?:)?\/\//.test(e)?`${t}/${e.replace(/^\/+/,"")}`:e}getVariants(e){var t,a,r,i,s,u;if(((t=HawkSearch.config.variants)==null?void 0:t.enabled)===!1)return{items:void 0,selectedItem:void 0};const d=(a=HawkSearch.config.variants)==null?void 0:a.fieldPrefix,g=d?new RegExp("^"+d):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=(r=e.hawk_child_attributes_hits)==null?void 0:r[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=(u=e.hawk_child_attributes)==null?void 0:u.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,a){let r=`hawksearch:bind-${e}`;a&&(r=`${r}:${a}`),this.triggerEvent(r,t)}triggerEvent(e,t){const a=new CustomEvent(e,{detail:t});window.dispatchEvent(a)}}class qc extends Oe{constructor(){var e,t,a;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=((a=HawkSearch.config.autocomplete)==null?void 0:a.decodeQuery)||!0}async query(e){const t={query:e};return await this.executeAutocomplete(t)}async executeAutocomplete(e){this.decodeQuery&&e.query&&(e.query=oe(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 a=await this.httpPost("/api/v2/autocomplete",t);this.triggerEvent("hawksearch:after-autocomplete-executed",a);const r=this.convertResponse(e.query,a);return this.triggerEvent("hawksearch:autocomplete-completed",r),this.bindComponent(r),r}catch{throw new Error("Error retrieving autocomplete response")}}convertResponse(e,t){var a,r;const i=s=>{var u,d,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:((u=s.Thumb)==null?void 0:u.Url)||this.getUrl(s.Results.Document,this.fieldMappings.imageUrl,(d=HawkSearch.config.urlPrefixes)==null?void 0:d.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:oe(s.FieldQSValue),url:`${this.searchUrl}?${s.FieldQSName}=${oe(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:((a=t.DymContentSearch)==null?void 0:a.map(s=>({query:this.stripHtml(s.RawValue),url:`${this.searchUrl}?${this.queryStringParams.query}=${encodeURIComponent(this.stripHtml(s.RawValue))}`})))??[]},productSuggestedQueries:{title:t.DYMProductHeading,results:((r=t.DymProductsSearch)==null?void 0:r.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 Bc extends Oe{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 a={api_key:this.API_KEY,messages:e,...t};HawkSearch.config.debug&&console.log("hawksearch:debug ",{rawConversationalSearchRequest:a.messages});try{this.triggerEvent("hawksearch:before-send-message-executed",e);const r=new Headers;r.set("Content-Type","application/json");const i=await this.httpPost(this.baseUrl,a,r,!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 Vc extends Oe{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 a=await this.httpPost("/api/recommendation/v2/getwidgetitems",t);this.triggerEvent("hawksearch:after-recommendations-executed",a);const r=this.convertResponse(a);this.triggerEvent("hawksearch:recommendations-completed",r);const i=e.itemId?`${e.widgetId}:${e.itemId}`:e.widgetId;return HawkSearch.recommendationsResponses={...HawkSearch.recommendationsResponses??{},[i]:r},this.bindComponents(r),r}catch{throw new Error("Error retrieving recommendations response")}}convertResponse(e){var t;const a=i=>{if(i)return typeof i=="string"?i.split("|^|"):i},r=i=>{var s,u;const d=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,a(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:d.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,(u=HawkSearch.config.urlPrefixes)==null?void 0:u.content),variants:d.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(u=>r(u))}})}}bindComponents(e){var t;(t=e.widgets)==null||t.forEach(a=>{this.triggerBindEvent("recommendations",a,a.id)})}}class Uc extends Oe{constructor(){var e,t,a,r;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=((a=HawkSearch.config.search)==null?void 0:a.decodeQuery)||!0,this.decodeFacetValues=((r=HawkSearch.config.search)==null?void 0:r.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,a=!1){const r=typeof e=="string"?{queryString:e,requestType:"DefaultSearch"}:e,i=r?.queryString,s={disableSpellcheck:!!a||void 0,facets:t,newRequest:!0,query:i,requestType:r?.requestType};if(!this.onSearchPage){const d=this.getSearchUrl(s);return window.location.assign(d),Promise.resolve()}if(i&&!wa(i)){const d=this.getRecentQueries(),g=5;d.includes(i)||(d.length>=g&&d.splice(g-1),d.unshift(i),this.saveRecentQueries(d))}const u=await this.executeSearch(s,!0,!1);return this.shouldRenderUI&&this.bindComponents(u),u}async addFacetValue(e,t){var a;this.ensureSearchRequest();const r=ne(HawkSearch.searchRequest);r.newRequest=!1,r.page=void 0,r.facets||(r.facets={}),this.clearExistingFacetValue(r,e,t),r.facets[e]=[...((a=r.facets[e])==null?void 0:a.filter(s=>s!==t))??[],t];const i=await this.executeSearch(r,!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 a=ne(HawkSearch.searchRequest);a.newRequest=!1,a.page=void 0,this.clearExistingFacetValue(a,e,t);const r=await this.executeSearch(a,!1);return this.bindFacetsListComponent(r),this.bindPaginationComponent(r),this.bindSelectedFacetsComponent(r),this.bindTabsComponent(r),this.bindZoneComponent(r),r}includeFacetValue(e,t){const a=`${this.facetExclusionPrefix}${t}`;return this.removeFacetValue(e,a)}async excludeFacetValue(e,t){this.ensureSearchRequest();const a=`${this.facetExclusionPrefix}${t}`,r=ne(HawkSearch.searchRequest);r.newRequest=!1,r.page=void 0,r.facets||(r.facets={}),this.clearExistingFacetValue(r,e,t),r.facets={...r.facets,[e]:[...r.facets[e]??[],a]};const i=await this.executeSearch(r,!1);return this.bindFacetsListComponent(i),this.bindPaginationComponent(i),this.bindSelectedFacetsComponent(i),this.bindTabsComponent(i),this.bindZoneComponent(i),i}clearExistingFacetValue(e,t,a){var r,i;a=a.replace(new RegExp("^"+this.facetExclusionPrefix),"");const s=`${this.facetExclusionPrefix}${a}`;e.facets||(e.facets={}),e.facets={...e.facets,[t]:[...((r=e.facets[t])==null?void 0:r.filter(u=>u!==a&&u!==s))??[]]},(i=e.facets[t])!=null&&i.length||delete e.facets[t]}async setFacetValue(e,t){this.ensureSearchRequest();const a=ne(HawkSearch.searchRequest);a.newRequest=!1,a.page=void 0,a.facets||(a.facets={}),a.facets[e]=[t];const r=await this.executeSearch(a,!1);return this.bindFacetsListComponent(r),this.bindPaginationComponent(r),this.bindSelectedFacetsComponent(r),this.bindTabsComponent(r),this.bindZoneComponent(r),r}async searchWithin(e){this.ensureSearchRequest();const t=ne(HawkSearch.searchRequest);t.newRequest=!1,t.page=void 0,t.searchWithin=e||void 0;const a=await this.executeSearch(t,!1);return this.bindFacetsListComponent(a),this.bindPaginationComponent(a),this.bindSelectedFacetsComponent(a),this.bindTabsComponent(a),this.bindZoneComponent(a),a}async selectTab(e){var t,a,r;this.ensureSearchRequest();const i=ne(HawkSearch.searchRequest);i.newRequest=!1,i.page=void 0,i.facets||(i.facets={});const s=(r=(a=(t=HawkSearch.searchResponse)==null?void 0:t.facets)==null?void 0:a.find(d=>d.type==="tabs"))==null?void 0:r.field;s&&(e?i.facets[s]=[e]:delete i.facets[s]);const u=await this.executeSearch(i,!1);return this.bindFacetsListComponent(u),this.bindPaginationComponent(u),this.bindSelectedFacetsComponent(u),this.bindTabsComponent(u),this.bindZoneComponent(u),u}async paginate(e){this.ensureSearchRequest();const t=ne(HawkSearch.searchRequest);t.newRequest=!1,t.page=e;const a=await this.executeSearch(t,!1);return this.bindPaginationComponent(a),a}async setPageSize(e){this.ensureSearchRequest();const t=ne(HawkSearch.searchRequest);t.newRequest=!1,t.page=1,t.pageSize=e;const a=await this.executeSearch(t,!1);return this.bindPageSizeComponent(a),this.bindPaginationComponent(a),a}async sort(e){this.ensureSearchRequest();const t=ne(HawkSearch.searchRequest);t.newRequest=!1,t.page=1,t.sort=e;const a=await this.executeSearch(t,!1);return this.bindPaginationComponent(a),this.bindSortingComponent(a),a}async executeSearch(e,t,a=!0){var r,i;if(this.decodeQuery&&e.query&&(e.query=oe(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(oe(v[parseInt(_)]));e.facets[y]=h}}HawkSearch.searchRequest=e;const s=e.requestType==="ImageData",u=s?"ImageData":e.requestType==="ImageSearch"?"ImageText":"Keyword",d=s?"ImageSearch":e.requestType,g={ClientData:{UserAgent:window.navigator.userAgent,VisitorId:this.getVisitorId(),VisitId:this.getVisitId()},ClientGuid:HawkSearch.config.clientId,CustomURL:e.url,RequestType:d||"DefaultSearch",IgnoreSpellcheck:e.disableSpellcheck,IndexName:HawkSearch.config.index,kValue:(r=HawkSearch.config.search)==null?void 0:r.kValue,[u||"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")),a&&this.shouldRenderUI&&(this.bindModifiedQueryComponent(h),this.bindQuerySuggestionsComponent(h),this.bindSearchFieldComponent(h),this.bindConceptSearchFieldComponent(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 a,r,i,s,u;const d=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 I;const x=d(k);if(!(!y.includes(x)||!((I=k.Values)!=null&&I.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,I)=>{var x,H;const C=(x=k.Ranges)==null?void 0:x.find(T=>T.Value.toLowerCase()===I.Value.toLowerCase());if(C?.AssetFullUrl)return this.getFullUrl(C.AssetFullUrl,(H=HawkSearch.config.urlPrefixes)==null?void 0:H.assets)},_=(k,I)=>{var x,H,C;let T=(x=k.SwatchData)==null?void 0:x.find(P=>P.Value.toLowerCase()===I.Value.toLowerCase());if(T||(T=(H=k.SwatchData)==null?void 0:H.find(P=>P.IsDefault)),!!T)return{name:I.Label,hex:T.Color||T.Value,imageUrl:this.getFullUrl(T.AssetUrl||T.AssetName,(C=HawkSearch.config.urlPrefixes)==null?void 0:C.assets)}},l=(k,I,x)=>d(k)==="recent-searches"?this.getRecentQueries().map(T=>({title:this.decodeFacetValues?oe(T):T})):I?.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(d(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 I,x;const H=(T,P)=>{var V,L,M,D;typeof P=="string"&&(P=[P]);const F=(((L=(V=HawkSearch.config.search)==null?void 0:V.itemTypes)==null?void 0:L.productValues)??["item","product"]).map(O=>O.toLowerCase());for(const O of P){let N=Te(T,O);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,(I=HawkSearch.config.urlPrefixes)==null?void 0:I.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:H(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 I;const x=t.Selections[k],H=(I=t.Facets)==null?void 0:I.find(T=>(T.ParamName||T.Field)===k),C=new RegExp("^"+this.facetExclusionPrefix);return{field:k,currency:H?.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 I="searchWithin",x=(k=t.Facets)==null?void 0:k.find(H=>H.Field===I);return!e.searchWithin||!x?[]:[{field:I,title:x.Name,currency:!1,values:[{title:e.searchWithin,value:e.searchWithin,excluded:!1}]}]},b=(k,I,x)=>{var H;(I==="Mobile"&&!k.IsMobile||I==="Tablet"&&!k.IsTablet)&&(I="");const C={campaignId:k.CampaignId,id:k.BannerId,title:k.Title,trackingEnabled:k.IsTrackingEnabled??!0,type:k[I+"ContentType"],zone:x??k.Zone};switch(C.type){case"custom":{const T=C;T.content=k[I+"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[I+"ImageUrl"],(H=HawkSearch.config.urlPrefixes)==null?void 0:H.assets),height:k[I+"Height"]||void 0,width:k[I+"Width"]||void 0,altText:k[I+"AltTag"],title:k[I+"AltTag"]},T.link=k[I+"ForwardUrl"]?{url:k[I+"ForwardUrl"],target:k[I+"Target"]||"_self"}:void 0;break}case"widget":switch(k[I+"WidgetType"]){case"PopularSearchesWidget":{const P=C;P.type="popular-queries";const V=Math.min(...k[I+"Output"].map(O=>O.count)),M=Math.max(...k[I+"Output"].map(O=>O.count))-V,D=5,F=new Array(D).fill(0);F.forEach((O,N)=>{N===D-1?F[N]=0:F[N]=Math.floor(M/(N+1))+V}),P.items=k[I+"Output"]instanceof Array?k[I+"Output"].map(O=>({query:O.keyword,count:O.count,weight:D-F.findIndex(N=>O.count>=N)})).sort((O,N)=>O.query.localeCompare(N.query)):[];break}default:{const P=C;P.type="custom-widget",P.data=k.AltTag}}}return C},w=()=>{var k,I,x;const H={};return(k=t.FeaturedItems)==null||k.Items.forEach(C=>{const T=H[C.Zone]??{name:C.Zone},P={mobile:b(C,""),tablet:b(C,""),desktop:b(C,"")};T.items=[...T.items??[],P],H[C.Zone]=T}),(I=t.Merchandising)==null||I.Items.forEach(C=>{const T=H[C.Zone]??{name:C.Zone},P={mobile:b(C,"Mobile"),tablet:b(C,"Tablet"),desktop:b(C,"")};T.items=[...T.items??[],P],H[C.Zone]=T}),(x=t.PageContent)==null||x.forEach(C=>{const T=H[C.ZoneName]??{name:C.ZoneName};C.Items.forEach(P=>{const V={mobile:b(P,"Mobile",T.name),tablet:b(P,"Tablet",T.name),desktop:b(P,"",T.name)};T.items=[...T.items??[],V]}),H[C.ZoneName]=T}),H},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:(a=t.Facets)==null?void 0:a.map(k=>{var I;return{id:k.FacetId,type:d(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,(I=t.Selections)==null?void 0:I[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:(r=t.Results)==null?void 0:r.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=(((u=S.seo.canonicalUrl)==null?void 0:u.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.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)}bindSearchResultsComponent(e){this.triggerBindEvent("search-results",e)}bindSearchResultsListComponent(e){this.triggerBindEvent("search-results-list",e?.results)}bindQuerySuggestionsComponent(e){var t;const a={display:!!((t=e?.querySuggestions)!=null&&t.length)&&HawkSearch.searchRequest.newRequest,querySuggestions:e?.querySuggestions};this.triggerBindEvent("query-suggestions",a)}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(a=>a.type==="tabs"))}bindZoneComponent(e){this.triggerBindEvent("content-zone",e)}getRequestFromUrl(){const e=new URL(window.location.href),t=Object.values(this.queryStringParams),a={};for(const r of Array.from(e.searchParams.keys()).filter(i=>!t.includes(i))){const i=r;a[i]=e.searchParams.getAll(r)}return{disableSpellcheck:this.getBooleanParameter(e.searchParams.get(this.queryStringParams.disableSpellcheck)),facets:a,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),a={searchRequest:HawkSearch.searchRequest,searchResponse:e};t.toString()===window.location.href?window.history.replaceState(a,""):window.history.pushState(a,"",t.toString())}getSearchUrl(e){const t=window.location.pathname===this.searchUrl||!!e.url,a=new URL(t?window.location.href:this.searchUrl,window.location.origin),r=Object.values(this.queryStringParams);return a.searchParams.delete(this.queryStringParams.query),e.query&&!wa(e.query)&&a.searchParams.set(this.queryStringParams.query,e.query),Array.from(a.searchParams.keys()).filter(i=>!r.includes(i)).forEach(i=>a.searchParams.delete(i)),e.disableSpellcheck&&a.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(u=>a.searchParams.append(i,u))}),a.searchParams.delete(this.queryStringParams.searchWithin),e.searchWithin&&a.searchParams.set(this.queryStringParams.searchWithin,e.searchWithin),a.searchParams.delete(this.queryStringParams.sort),e.sort&&a.searchParams.set(this.queryStringParams.sort,e.sort),a.searchParams.delete(this.queryStringParams.pageSize),e.pageSize&&a.searchParams.set(this.queryStringParams.pageSize,e.pageSize.toString()),a.searchParams.delete(this.queryStringParams.page),e.page&&a.searchParams.set(this.queryStringParams.page,e.page.toString()),a.searchParams.delete(this.queryStringParams.requestType),e.requestType&&a.searchParams.set(this.queryStringParams.requestType,e.requestType.toString()),a.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,a,r,i;if(!e?.seo)return;let s=e.seo.title;s&&((a=(t=HawkSearch.config.seo)==null?void 0:t.title)!=null&&a.prefix)&&(s=`${HawkSearch.config.seo.title.prefix}${s}`),s&&((i=(r=HawkSearch.config.seo)==null?void 0:r.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 a=document.createElement("link");a.rel=e,a.href=t,document.head.append(a)}setMetaTag(e,t){if(!t)return;this.removeElement(`meta[name="${e}"]`);const a=document.createElement("meta");a.name=e,a.content=t,document.head.append(a)}setTitle(e){e&&(document.title=e)}}class jc extends Oe{constructor(){var e;super(...arguments),this.baseUrl=((e=HawkSearch.config.tracking)==null?void 0:e.endpointUrl)||"https://tracking-dev.hawksearch.net"}trackAddToCart(e,t,a,r){const i={UniqueId:e,Quantity:t,Price:a,Currency:r};return this.trackEvent(J.AddToCart,i)}trackAddToCartMultiple(e){const t={ItemsList:e.map(a=>({UniqueId:a.productId,Quantity:a.quantity,Price:a.price,Currency:a.currencyIsoCode}))};return this.trackEvent(J.AddToCartMultiple,t)}trackAutocompleteClick(e,t,a,r){const i={Keyword:e,Name:a,SuggestType:t,Url:r};return this.trackEvent(J.AutocompleteClick,i)}trackBannerClick(e,t){var a;if(!((a=HawkSearch.searchResponse)!=null&&a.trackingId))return Promise.resolve();const r={BannerId:e,CampaignId:t,TrackingId:HawkSearch.searchResponse.trackingId};return this.trackEvent(J.BannerClick,r)}trackBannerImpression(e,t){var a;if(!((a=HawkSearch.searchResponse)!=null&&a.trackingId)||!e||!t)return Promise.resolve();const r={BannerId:e,CampaignId:t,TrackingId:HawkSearch.searchResponse.trackingId};return this.trackEvent(J.BannerImpression,r)}trackOrder(e,t,a,r,i,s){const u={OrderNo:e,ItemList:t.map(d=>({UniqueId:d.productId,Quantity:d.quantity,ItemPrice:d.price})),SubTotal:a,Tax:r,Total:i,Currency:s};return this.trackEvent(J.Sale,u)}trackPageLoad(e,t){if(e===Ye.Item&&!t)throw new Error("productId is required for tracking product detail page requests");const a={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,a)}trackRating(e,t){const a={UniqueId:e,Value:t};return this.trackEvent(J.Rate,a)}trackRecommendationClick(e,t,a){const r={WidgetGuid:e,RequestId:t,UniqueId:a};return this.trackEvent(J.RecommendationClick,r)}trackSearchResultClick(e,t,a){var r;if(!((r=HawkSearch.searchResponse)!=null&&r.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:a?.pageX,MouseY:a?.pageY};return this.trackEvent(J.Click,i)}trackSearch(e,t){var a;if(!((a=HawkSearch.searchResponse)!=null&&a.trackingId))return Promise.resolve();const r={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,r)}async trackEvent(e,t){var a;if(((a=HawkSearch.config.tracking)==null?void 0:a.enabled)===!1)return;const r={ClientGuid:HawkSearch.config.clientId,EventType:e,EventData:btoa(JSON.stringify(t)),VisitorId:this.getVisitorId(),VisitId:this.getVisitId()};try{await this.httpPost("/api/trackevent",r)}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,a;const r=HawkSearch.searchResponse;if(!r||!r.results)return 0;const i=r.results.findIndex(g=>g.id===e);if(i===-1)return 0;const s=((t=r.pagination)==null?void 0:t.pageSize)??1,u=((a=r.pagination)==null?void 0:a.page)??1;return i+1+s*(u-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",ul),z.handlebars.registerHelper("currency",gl),z.handlebars.registerHelper("decode",Al),z.handlebars.registerHelper("decodeNested",Cl),z.handlebars.registerHelper("eq",dl),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 qc,conversational:new Bc,recommendations:new Vc,search:new Uc,tracking:new jc},Object.entries({autocomplete:sl,"checkbox-list-facet":Ml,"color-facet":Dl,"conceptsearch-field":dc,"content-zone":No,conversationalsearch:pc,"custom-content":Po,"date-picker":jo,"date-range-facet":Ol,"facet-wrapper":Gl,"facets-list":Xl,"featured-items-content":Io,"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":Ro,"query-suggestions":oc,"range-slider":$o,"range-slider-facet":Vl,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:Hc,tooltip:Jo,"variant-selector":Dc,"visualsearch-field":Mc}).forEach(([t,a])=>{const r=`hawksearch-${t}`;customElements.get(r)||customElements.define(r,a)}),window.addEventListener("popstate",t=>{const a=t.state;z.searchRequest=a.searchRequest,z.searchResponse=a.searchResponse,z.services.search.bindComponents(a.searchResponse)}),window.dispatchEvent(new CustomEvent("hawksearch:initialized"))},window.dispatchEvent(new CustomEvent("hawksearch:loaded"));export{z as default};