@searchstax-inc/searchstudio-ux-js 0.0.1

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 ADDED
@@ -0,0 +1,15 @@
1
+ # Change Log
2
+
3
+ All notable changes to the "vite-vanilla-ts-lib-starter" project will be documented in this file.
4
+
5
+ ## [0.0.1] - 2023-01-18
6
+
7
+ - Update all packages to the latest versions (update to vite 4.x)
8
+
9
+ ## [0.0.1] - 2022-09-08
10
+
11
+ - Update all packages to the latest versions (update to vite 3.x)
12
+
13
+ ## [0.0.0] - 2022-03-28
14
+
15
+ - Initial release
package/LICENSE.md ADDED
@@ -0,0 +1,9 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2022 Kamil Bysiec
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
6
+
7
+ The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
8
+
9
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,61 @@
1
+ # vite-vanilla-ts-lib-starter
2
+
3
+ The starter is built on top of Vite 4.x and prepared for writing libraries in TypeScript. It generates a hybrid package - both support for CommonJS and ESM modules.
4
+
5
+ ## Features
6
+
7
+ - Hybrid support - CommonJS and ESM modules
8
+ - IIFE bundle for direct browser support without bundler
9
+ - Typings bundle
10
+ - ESLint - scripts linter
11
+ - Stylelint - styles linter
12
+ - Prettier - formatter
13
+ - Vitest - test framework
14
+ - Husky + lint-staged - pre-commit git hook set up for formatting
15
+
16
+ ## GitHub Template
17
+
18
+ This is a template repo. Click the green [Use this template](https://github.com/kbysiec/vite-vanilla-ts-lib-starter/generate) button to get started.
19
+
20
+ ## Clone to local
21
+
22
+ If you prefer to do it manually with the cleaner git history
23
+
24
+ ```bash
25
+ git clone https://github.com/kbysiec/vite-vanilla-ts-lib-starter.git
26
+ cd vite-vanilla-ts-lib-starter
27
+ npm i
28
+ ```
29
+
30
+ ## Checklist
31
+
32
+ When you use this template, update the following:
33
+
34
+ - Remove `.git` directory and run `git init` to clean up the history
35
+ - Change the name in `package.json` - it will be the name of the IIFE bundle global variable and bundle files name (`.cjs`, `.mjs`, `.iife.js`, `d.ts`)
36
+ - Change the author name in `LICENSE`
37
+ - Clean up the `README` and `CHANGELOG` files
38
+
39
+ And, enjoy :)
40
+
41
+ ## Usage
42
+
43
+ The starter contains the following scripts:
44
+
45
+ - `dev` - starts dev server
46
+ - `build` - generates the following bundles: CommonJS (`.cjs`) ESM (`.mjs`) and IIFE (`.iife.js`). The name of bundle is automatically taken from `package.json` name property
47
+ - `test` - starts vitest and runs all tests
48
+ - `test:coverage` - starts vitest and run all tests with code coverage report
49
+ - `lint:scripts` - lint `.ts` files with eslint
50
+ - `lint:styles` - lint `.css` and `.scss` files with stylelint
51
+ - `format:scripts` - format `.ts`, `.html` and `.json` files with prettier
52
+ - `format:styles` - format `.cs` and `.scss` files with stylelint
53
+ - `format` - format all with prettier and stylelint
54
+ - `prepare` - script for setting up husky pre-commit hook
55
+ - `uninstall-husky` - script for removing husky from repository
56
+
57
+ ## Acknowledgment
58
+
59
+ If you found it useful somehow, I would be grateful if you could leave a star in the project's GitHub repository.
60
+
61
+ Thank you.
@@ -0,0 +1,69 @@
1
+ "use strict";var U=Object.defineProperty;var K=(i,e,t)=>e in i?U(i,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):i[e]=t;var u=(i,e,t)=>(K(i,typeof e!="symbol"?e+"":e,t),t);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});class A{constructor(e){u(this,"value");u(this,"observers",[]);this.value=e,this.observers=[]}subscribe(e){this.observers.push(e),e(this.value)}unsubscribe(e){const t=this.observers.indexOf(e);t!==-1&&this.observers.splice(t,1)}setValue(e){this.value=e,this.notify()}getValue(){return this.value}notify(){this.observers.forEach(e=>e(this.value))}}class j{constructor(){u(this,"searchTermChangeObservable",new A(""));u(this,"loadingChangeObservable",new A(!1));u(this,"searchResultsObservable",new A(null));u(this,"searchResultsMetadataObservable",new A(null));u(this,"searchAutosuggestObservable",new A(null));u(this,"currentPage",1);u(this,"renderingEngine","mustache")}setSearchTerm(e){this.searchTermChangeObservable.setValue(e)}setRenderingEngine(e){this.renderingEngine=e}setCurrentPage(e){this.currentPage=e}setLoading(e){this.loadingChangeObservable.setValue(e)}setSearchResults(e){this.searchResultsObservable.setValue(e)}setSearchResultsMetadata(e){this.searchResultsMetadataObservable.setValue(e)}setSearchAutosuggest(e){this.searchAutosuggestObservable.setValue(e)}get searchResultsValue(){return this.searchResultsObservable.getValue()}get searchTermValue(){return this.searchTermChangeObservable.getValue()}get loadingValue(){return this.loadingChangeObservable.getValue()}get searchAutosuggestValue(){return this.searchAutosuggestObservable.getValue()}get searchResultsMetadataValue(){return this.searchResultsMetadataObservable.getValue()}get currentPageValue(){return this.currentPage}get renderingEngineValue(){return this.renderingEngine}}class E{static combineResultsWithMetadata(e){const t=[],s=parseInt(e.response.start+"");return e.response.docs.forEach((a,r)=>{const n={custom:null,uniqueId:this.getValueByKey(e.responseHeader.params.uniqueId,a,e)??"",position:s+r+1,ribbon:this.doesMapExist("ribbon",e)?this.getValueByKey("ribbon",a,e):null,paths:this.doesMapExist("paths",e)?this.getValueByKey("paths",a,e):null,url:this.doesMapExist("url",e)?this.getValueByKey("url",a,e):null,title:this.doesMapExist("title",e)?this.getValueByKey("title",a,e):null,promoted:a["[elevated]"]?a["[elevated]"]:!1,thumbnail:this.doesMapExist("thumbnail",e)?this.getValueByKey("thumbnail",a,e):null,date:this.doesMapExist("date",e)?this.getValueByKey("date",a,e):null,snippet:this.doesMapExist("snippet",e)?this.getValueByKey("snippet",a,e):null,description:this.doesMapExist("description",e)?this.getValueByKey("description",a,e):null,unmappedFields:this.getUnmappedFields(a,e),allFields:this.getAllFields(a,e)};t.push(n)}),t}static extractSearchResultsMetadata(e){var s,a,r,n;let t="";return t=((n=(r=(a=(s=e==null?void 0:e.spellcheck)==null?void 0:s.suggestions)==null?void 0:a[0])==null?void 0:r.suggestion)==null?void 0:n[0])??"",typeof t!="string"&&(t=(t==null?void 0:t.word)??""),{recordsPerPageValue:parseInt(e.responseHeader.params.rows),startDocVal:parseInt(e.response.start+""),totalResultsValue:parseInt(e.response.numFound+""),latency:parseInt(e.responseHeader.QTime+""),endDocValue:parseInt(e.responseHeader.params.rows)+parseInt(e.response.start+""),spellingSuggestion:t}}static findResultByUniqueId(e,t){return t.find(s=>s.uniqueId===e)??null}static getUnmappedFields(e,t){const s=t.metadata.results.filter(r=>r.result_card==="").map(r=>r.name),a=[];for(const r of Object.keys(e))if(s.indexOf(r)!==-1){const n=Array.isArray(e[r])?e[r].join(", "):e[r];a.push({key:r,value:n,isImage:this.checkIfImage(e[r])})}return a}static checkIfImage(e){return e===void 0||typeof e!="string"?!1:/\.(gif|jpe?g|tiff?|png|webp|bmp)$/i.test(e)}static getAllFields(e,t){const s=t.metadata.results.map(r=>r.name),a=[];for(const r of Object.keys(e))s.indexOf(r)!==-1&&a.push({key:r,value:e[r],isImage:this.checkIfImage(e[r])});return a}static doesMapExist(e,t){return t.metadata.results.find(s=>s.result_card===e)!==void 0}static getValueByKey(e,t,s){const a=s.metadata.results.find(n=>n.result_card===e);if(a===void 0)return null;const r=t[a.name];return r===void 0?null:typeof r=="string"?r:Array.isArray(r)?r.join(", "):null}}class W{constructor(e,t){u(this,"url","");u(this,"relatedSearches","");u(this,"suggester","");u(this,"authHeader");u(this,"authHeaderRelated");u(this,"language","en");u(this,"trackApiKey","");u(this,"session","");u(this,"searchAdditionalArgs","");u(this,"searchAuthType");u(this,"selectAuthToken");u(this,"suggesterAuthToken");u(this,"controllerSearch");u(this,"signalSearch");u(this,"controllerSuggest");u(this,"signalSuggest");u(this,"dataLayer");this.dataLayer=t,this.url=e.searchURL,this.language=e.language,this.suggester=e.suggesterURL,this.trackApiKey=e.trackApiKey,this.session=e.sessionId,this.searchAuthType=e.authType,this.selectAuthToken=e.searchToken??"",this.suggesterAuthToken=e.suggesterToken??"",this.authHeader=new Headers,this.authHeader.append("Accept","application/json");const s=this.searchAuthType==="token"?`Token ${this.suggesterAuthToken}`:`Basic ${e.authenticationValue}`;this.authHeader.append("Authorization",s),this.authHeaderRelated=new Headers,this.authHeaderRelated.append("Accept","application/json"),this.authHeaderRelated.append("Authorization",e.searchApiKey)}search(e,t,s){this.dataLayer.setSearchTerm(e),this.dataLayer.setLoading(!0),this.controllerSearch&&this.controllerSearch.abort(),this.controllerSearch=new AbortController,this.signalSearch=this.controllerSearch.signal;const a=new Proxy(new URLSearchParams(window.location.search),{get:(h,c)=>h.get(c)??""}),r=a.languageVariant?"&fq=_language:"+a.languageVariant:"",n=this.url+"?q="+encodeURIComponent(e.trim())+this.toQueryString(s)+this.searchAdditionalArgs+"&language="+this.language+r;fetch(n,{method:"GET",headers:this.authHeader,credentials:"same-origin",signal:this.signalSearch}).then(h=>h.json()).then(h=>{this.dataLayer.setLoading(!1),t(h)}).catch(h=>{this.dataLayer.setLoading(!1),console.log(h)})}suggest(e,t,s){this.controllerSuggest&&this.controllerSuggest.abort(),this.controllerSuggest=new AbortController,this.signalSuggest=this.controllerSuggest.signal;const a=this.suggester+"?q="+e.trim()+this.toQueryString(s)+"&language="+this.language;fetch(a,{method:"GET",headers:this.authHeader,credentials:"same-origin",signal:this.signalSuggest}).then(r=>r.json()).then(r=>{t(r)}).catch(r=>console.log(r))}fields(){return this.fields}toQueryString(e){return"&"+e.join("&")}}class F{static getOrSetCookie(e){let t=this.getCookie(e);return t==null&&(t=this.makeid(25),this.setCookie(e,t,{secure:!0,"max-age":3600})),t}static makeid(e){let t="";const s="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",a=s.length;for(let r=0;r<e;r++)t+=s.charAt(Math.floor(Math.random()*a));return t}static getCookie(e){const t=document.cookie.match(new RegExp("(?:^|; )"+e.replace(/([.$?*|{}()[\]\\/+^])/g,"\\$1")+"=([^;]*)"));return t?decodeURIComponent(t[1]):void 0}static setCookie(e,t,s){const a={path:"/",...s};s.expires instanceof Date&&(a.expires=s.expires.toUTCString());let r=encodeURIComponent(e)+"="+encodeURIComponent(t);for(const n in a){r+="; "+n;const h=a[n];h!==!0&&(r+="="+h)}document.cookie=r}}class D{static trackClick(e){const t={key:e.trackApiKey,query:e.searchTermValue,shownHits:e.recordsPerPage,totalHits:e.totalResults,pageNo:e.currentPage,latency:e.latencyVal,session:e.session,cDocId:e.result.uniqueId,cDocTitle:e.result.title,position:e.result.position,language:e.language};_msq.push(["trackClick",t])}}/*!
2
+ * mustache.js - Logic-less {{mustache}} templates with JavaScript
3
+ * http://github.com/janl/mustache.js
4
+ */var _=Object.prototype.toString,S=Array.isArray||function(e){return _.call(e)==="[object Array]"};function M(i){return typeof i=="function"}function $(i){return S(i)?"array":typeof i}function V(i){return i.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")}function O(i,e){return i!=null&&typeof i=="object"&&e in i}function N(i,e){return i!=null&&typeof i!="object"&&i.hasOwnProperty&&i.hasOwnProperty(e)}var z=RegExp.prototype.test;function Q(i,e){return z.call(i,e)}var G=/\S/;function X(i){return!Q(G,i)}var J={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;","/":"&#x2F;","`":"&#x60;","=":"&#x3D;"};function Y(i){return String(i).replace(/[&<>"'`=\/]/g,function(t){return J[t]})}var Z=/\s*/,ee=/\s+/,B=/\s*=/,te=/\s*\}/,se=/#|\^|\/|>|\{|&|=|!/;function ae(i,e){if(!i)return[];var t=!1,s=[],a=[],r=[],n=!1,h=!1,c="",l=0;function p(){if(n&&!h)for(;r.length;)delete a[r.pop()];else r=[];n=!1,h=!1}var m,C,P;function H(y){if(typeof y=="string"&&(y=y.split(ee,2)),!S(y)||y.length!==2)throw new Error("Invalid tags: "+y);m=new RegExp(V(y[0])+"\\s*"),C=new RegExp("\\s*"+V(y[1])),P=new RegExp("\\s*"+V("}"+y[1]))}H(e||g.tags);for(var o=new T(i),b,f,v,R,x,k;!o.eos();){if(b=o.pos,v=o.scanUntil(m),v)for(var w=0,q=v.length;w<q;++w)R=v.charAt(w),X(R)?(r.push(a.length),c+=R):(h=!0,t=!0,c+=" "),a.push(["text",R,b,b+1]),b+=1,R===`
5
+ `&&(p(),c="",l=0,t=!1);if(!o.scan(m))break;if(n=!0,f=o.scan(se)||"name",o.scan(Z),f==="="?(v=o.scanUntil(B),o.scan(B),o.scanUntil(C)):f==="{"?(v=o.scanUntil(P),o.scan(te),o.scanUntil(C),f="&"):v=o.scanUntil(C),!o.scan(C))throw new Error("Unclosed tag at "+o.pos);if(f==">"?x=[f,v,b,o.pos,c,l,t]:x=[f,v,b,o.pos],l++,a.push(x),f==="#"||f==="^")s.push(x);else if(f==="/"){if(k=s.pop(),!k)throw new Error('Unopened section "'+v+'" at '+b);if(k[1]!==v)throw new Error('Unclosed section "'+k[1]+'" at '+b)}else f==="name"||f==="{"||f==="&"?h=!0:f==="="&&H(v)}if(p(),k=s.pop(),k)throw new Error('Unclosed section "'+k[1]+'" at '+o.pos);return ie(re(a))}function re(i){for(var e=[],t,s,a=0,r=i.length;a<r;++a)t=i[a],t&&(t[0]==="text"&&s&&s[0]==="text"?(s[1]+=t[1],s[3]=t[3]):(e.push(t),s=t));return e}function ie(i){for(var e=[],t=e,s=[],a,r,n=0,h=i.length;n<h;++n)switch(a=i[n],a[0]){case"#":case"^":t.push(a),s.push(a),t=a[4]=[];break;case"/":r=s.pop(),r[5]=a[2],t=s.length>0?s[s.length-1][4]:e;break;default:t.push(a)}return e}function T(i){this.string=i,this.tail=i,this.pos=0}T.prototype.eos=function(){return this.tail===""};T.prototype.scan=function(e){var t=this.tail.match(e);if(!t||t.index!==0)return"";var s=t[0];return this.tail=this.tail.substring(s.length),this.pos+=s.length,s};T.prototype.scanUntil=function(e){var t=this.tail.search(e),s;switch(t){case-1:s=this.tail,this.tail="";break;case 0:s="";break;default:s=this.tail.substring(0,t),this.tail=this.tail.substring(t)}return this.pos+=s.length,s};function I(i,e){this.view=i,this.cache={".":this.view},this.parent=e}I.prototype.push=function(e){return new I(e,this)};I.prototype.lookup=function(e){var t=this.cache,s;if(t.hasOwnProperty(e))s=t[e];else{for(var a=this,r,n,h,c=!1;a;){if(e.indexOf(".")>0)for(r=a.view,n=e.split("."),h=0;r!=null&&h<n.length;)h===n.length-1&&(c=O(r,n[h])||N(r,n[h])),r=r[n[h++]];else r=a.view[e],c=O(a.view,e);if(c){s=r;break}a=a.parent}t[e]=s}return M(s)&&(s=s.call(this.view)),s};function d(){this.templateCache={_cache:{},set:function(e,t){this._cache[e]=t},get:function(e){return this._cache[e]},clear:function(){this._cache={}}}}d.prototype.clearCache=function(){typeof this.templateCache<"u"&&this.templateCache.clear()};d.prototype.parse=function(e,t){var s=this.templateCache,a=e+":"+(t||g.tags).join(":"),r=typeof s<"u",n=r?s.get(a):void 0;return n==null&&(n=ae(e,t),r&&s.set(a,n)),n};d.prototype.render=function(e,t,s,a){var r=this.getConfigTags(a),n=this.parse(e,r),h=t instanceof I?t:new I(t,void 0);return this.renderTokens(n,h,s,e,a)};d.prototype.renderTokens=function(e,t,s,a,r){for(var n="",h,c,l,p=0,m=e.length;p<m;++p)l=void 0,h=e[p],c=h[0],c==="#"?l=this.renderSection(h,t,s,a,r):c==="^"?l=this.renderInverted(h,t,s,a,r):c===">"?l=this.renderPartial(h,t,s,r):c==="&"?l=this.unescapedValue(h,t):c==="name"?l=this.escapedValue(h,t,r):c==="text"&&(l=this.rawValue(h)),l!==void 0&&(n+=l);return n};d.prototype.renderSection=function(e,t,s,a,r){var n=this,h="",c=t.lookup(e[1]);function l(C){return n.render(C,t,s,r)}if(c){if(S(c))for(var p=0,m=c.length;p<m;++p)h+=this.renderTokens(e[4],t.push(c[p]),s,a,r);else if(typeof c=="object"||typeof c=="string"||typeof c=="number")h+=this.renderTokens(e[4],t.push(c),s,a,r);else if(M(c)){if(typeof a!="string")throw new Error("Cannot use higher-order sections without the original template");c=c.call(t.view,a.slice(e[3],e[5]),l),c!=null&&(h+=c)}else h+=this.renderTokens(e[4],t,s,a,r);return h}};d.prototype.renderInverted=function(e,t,s,a,r){var n=t.lookup(e[1]);if(!n||S(n)&&n.length===0)return this.renderTokens(e[4],t,s,a,r)};d.prototype.indentPartial=function(e,t,s){for(var a=t.replace(/[^ \t]/g,""),r=e.split(`
6
+ `),n=0;n<r.length;n++)r[n].length&&(n>0||!s)&&(r[n]=a+r[n]);return r.join(`
7
+ `)};d.prototype.renderPartial=function(e,t,s,a){if(s){var r=this.getConfigTags(a),n=M(s)?s(e[1]):s[e[1]];if(n!=null){var h=e[6],c=e[5],l=e[4],p=n;c==0&&l&&(p=this.indentPartial(n,l,h));var m=this.parse(p,r);return this.renderTokens(m,t,s,p,a)}}};d.prototype.unescapedValue=function(e,t){var s=t.lookup(e[1]);if(s!=null)return s};d.prototype.escapedValue=function(e,t,s){var a=this.getConfigEscape(s)||g.escape,r=t.lookup(e[1]);if(r!=null)return typeof r=="number"&&a===g.escape?String(r):a(r)};d.prototype.rawValue=function(e){return e[1]};d.prototype.getConfigTags=function(e){return S(e)?e:e&&typeof e=="object"?e.tags:void 0};d.prototype.getConfigEscape=function(e){if(e&&typeof e=="object"&&!S(e))return e.escape};var g={name:"mustache.js",version:"4.2.0",tags:["{{","}}"],clearCache:void 0,escape:void 0,parse:void 0,render:void 0,Scanner:void 0,Context:void 0,Writer:void 0,set templateCache(i){L.templateCache=i},get templateCache(){return L.templateCache}},L=new d;g.clearCache=function(){return L.clearCache()};g.parse=function(e,t){return L.parse(e,t)};g.render=function(e,t,s,a){if(typeof e!="string")throw new TypeError('Invalid template! Template should be a "string" but "'+$(e)+'" was given as the first argument for mustache#render(template, view, partials)');return L.render(e,t,s,a)};g.escape=Y;g.Scanner=T;g.Context=I;g.Writer=d;class ne{constructor(e){u(this,"dataLayer");u(this,"config");u(this,"suggestAfterMinChars");u(this,"hideBranding");u(this,"containerId");u(this,"currentInputValue","");u(this,"autosuggestResults");u(this,"searchInput");u(this,"actionButton");u(this,"autosuggestContainer");u(this,"buttonState","search");u(this,"selectedAutosuggestItem",-1);u(this,"suggestTrigger");u(this,"searchTrigger");this.dataLayer=e.dataLayer,this.config=e.config,this.searchTrigger=e.searchTrigger,this.suggestTrigger=e.suggestTrigger,this.containerId=e.containerId,this.suggestAfterMinChars=e.config.suggestAfterMinChars,this.hideBranding=e.config.hideBranding,this.renderMainTemplate(),this.actionButtonInit(),this.updateActionButtonState("search"),this.searchInput&&(this.createAutosuggestContainer(),this.attachSubscriptions())}renderMainTemplate(){var r,n;const e=document.getElementById(this.containerId);if(!e)throw new Error("Search input container not found");const t=((r=this.config.templates)==null?void 0:r.mainTemplate)||`
8
+ <div class="searchstax-search-input-container">
9
+ <div class="searchstax-search-input-wrapper">
10
+ <input type="text" id="searchstax-search-input" class="searchstax-search-input" placeholder="SEARCH FOR..." />
11
+ <button class="searchstax-spinner-icon" id="searchstax-search-input-action-button"></button>
12
+ </div>
13
+ </div>
14
+ `;if(console.log("this.dataLayer.renderingEngineValue",this.dataLayer.renderingEngineValue),this.dataLayer.renderingEngineValue==="mustache"){const h=g.render(t,{});e.innerHTML=h}const s=((n=this.config.templates)==null?void 0:n.searchInputId)||"searchstax-search-input",a=document.querySelector(`#${s}`);if(a)this.searchInput=a,a.addEventListener("keyup",this.inputKeyupEvent.bind(this)),a.addEventListener("blur",this.hideAutosuggest.bind(this)),a.addEventListener("paste",this.inputPasteEvent.bind(this));else throw new Error("Input not found")}createAutosuggestContainer(){var e;this.autosuggestContainer=document.createElement("div"),this.autosuggestContainer.classList.add("searchstax-autosuggest-container"),this.autosuggestContainer.addEventListener("mouseleave",()=>{this.resetAutosuggestSelection(),this.markActiveAutosuggestItem()}),(e=this.searchInput)==null||e.after(this.autosuggestContainer)}actionButtonInit(){this.actionButton=document.getElementById("searchstax-search-input-action-button"),this.actionButton&&this.actionButton.addEventListener("click",()=>{var e;this.buttonState==="search"?this.executeSearch(((e=this.searchInput)==null?void 0:e.value)??""):this.buttonState==="close"&&this.searchInput&&(this.searchInput.value="",this.executeSearch(""))})}attachSubscriptions(){this.dataLayer.searchTermChangeObservable.subscribe(()=>{this.handleSearchTermChange()}),this.dataLayer.loadingChangeObservable.subscribe(()=>{this.handleLoadingChange()}),this.dataLayer.searchAutosuggestObservable.subscribe(e=>{e&&this.appendSuggestions(e)})}handleLoadingChange(){this.dataLayer.loadingValue?this.updateActionButtonState("loading"):this.handleSearchTermChange()}handleSearchTermChange(){var e;this.dataLayer.searchTermValue===((e=this.searchInput)==null?void 0:e.value)&&this.searchInput.value!==""?this.updateActionButtonState("close"):this.updateActionButtonState("search")}updateActionButtonState(e){if(this.buttonState=e,this.actionButton)switch(this.actionButton.classList.remove("searchstax-spinner-icon"),this.actionButton.classList.remove("searchstax-search-close"),this.actionButton.classList.remove("searchstax-search-icon"),e){case"loading":this.actionButton.classList.add("searchstax-spinner-icon");break;case"search":this.actionButton.classList.add("searchstax-search-icon");break;case"close":this.actionButton.classList.add("searchstax-search-close");break}}selectPreviousAutosuggestItem(){this.selectedAutosuggestItem>0?this.selectedAutosuggestItem--:this.selectedAutosuggestItem=this.autosuggestResults.suggestions.length-1,this.markActiveAutosuggestItem()}selectNextAutosuggestItem(){this.selectedAutosuggestItem<this.autosuggestResults.suggestions.length-1?this.selectedAutosuggestItem++:this.selectedAutosuggestItem=0,this.markActiveAutosuggestItem()}resetAutosuggestSelection(){this.selectedAutosuggestItem=-1,this.markActiveAutosuggestItem()}markActiveAutosuggestItem(){const e=document.getElementsByClassName("searchstax-autosuggest-item");for(let t=0;t<e.length;t++){const s=e[t];t===this.selectedAutosuggestItem?s.classList.add("active"):s.classList.remove("active")}}inputKeyupEvent(e){const t=e.key;this.currentInputValue=e.target.value,t==="Enter"?this.suggestionChosen():t==="Escape"?this.hideAutosuggest():t==="ArrowUp"?this.selectPreviousAutosuggestItem():t==="ArrowDown"?this.selectNextAutosuggestItem():this.autosuggestHandling(e),this.handleSearchTermChange()}autosuggestHandling(e){e.target&&e.target.value.length>=this.suggestAfterMinChars?this.executeSuggest(e.target.value):this.hideAutosuggest()}inputPasteEvent(e){setTimeout(()=>{this.autosuggestHandling(e),this.handleSearchTermChange()},0)}executeSuggest(e){this.suggestTrigger(e)}executeSearch(e){this.hideAutosuggest(),this.searchTrigger(e===""?"*":e)}suggestionChosen(){this.selectedAutosuggestItem>-1?this.autosuggestItemClicked(this.autosuggestResults.suggestions[this.selectedAutosuggestItem]):this.executeSearch(this.currentInputValue)}hideAutosuggest(){this.autosuggestContainer&&(this.autosuggestContainer.innerHTML="",this.autosuggestContainer.classList.add("hidden")),this.resetAutosuggestSelection()}cleanSuggestionTerm(e){return e.replace(/(<([^>]+)>)/gi,"").trim()}autosuggestItemClicked(e){this.searchInput.value=this.cleanSuggestionTerm(e.term),this.executeSearch(this.cleanSuggestionTerm(e.term))}createAutosuggestItem(e){var a;const t=document.createElement("div");t.classList.add("searchstax-autosuggest-item"),t.addEventListener("click",()=>{this.autosuggestItemClicked(e)}),t.addEventListener("mouseenter",()=>{var r;this.selectedAutosuggestItem=((r=this.autosuggestResults)==null?void 0:r.suggestions.indexOf(e))||0,this.markActiveAutosuggestItem()});const s=((a=this.config.templates)==null?void 0:a.autosuggestItemTemplate)||'<div class="searchstax-autosuggest-item-term-container">{{{term}}}</div>';return t.innerHTML=g.render(s,e),t}appendSuggestions(e){if(this.autosuggestContainer){this.autosuggestContainer.innerHTML="",this.autosuggestContainer.classList.remove("hidden");for(const t in e.suggest)if(Object.prototype.hasOwnProperty.call(e.suggest,t)){const s=e.suggest[t];for(const a in s)if(Object.prototype.hasOwnProperty.call(s,a)){const r=s[a];this.autosuggestResults=r,r.numFound>0?r.suggestions.forEach(n=>{this.autosuggestContainer.appendChild(this.createAutosuggestItem(n))}):this.autosuggestContainer.classList.add("hidden")}}}}}class ue{constructor(e){u(this,"dataLayer");u(this,"config");u(this,"linkClickCallback");u(this,"searchCallback");u(this,"containerId");u(this,"searchResultsMainContainer");u(this,"searchResultsContainer");u(this,"searchResultLinks",[]);this.linkClickCallback=e.linkClickCallback,this.searchCallback=e.searchTrigger,this.dataLayer=e.dataLayer,this.config=e.config,this.containerId=e.containerId;const t=document.getElementById(this.containerId);if(console.log("resultsContainer",t),t)this.searchResultsMainContainer=t;else throw new Error(`Search Results Main Container with id ${this.containerId} not found`);this.initializeSubscriptions(),this.renderMainTemplate()}initializeSubscriptions(){this.dataLayer.searchResultsObservable.subscribe(e=>{e&&this.searchResultsContainer&&this.renderResults(e)})}renderNoResultsTemplate(){var s,a,r;const e=((a=(s=this.config)==null?void 0:s.templates)==null?void 0:a.noSearchResultTemplate)||`
15
+ <div class="searchstax-no-results">
16
+ Showing <strong>no results</strong> for <strong>"{{ searchTerm }}"</strong>
17
+ <br>
18
+ {{#spellingSuggestion}}
19
+ <span>&nbsp;Did you mean <a href="#"
20
+ class="searchstax-suggestion-term">{{ spellingSuggestion }}</a>?</span>
21
+ {{/spellingSuggestion}}
22
+ </div>
23
+ <div>
24
+ <p>Try searching for search related terms or topics. We offer a wide variety of content to help you get the information you need.</p>
25
+ <p>Lost? Click on the ‘X” in the Search Box to reset your search.</p>
26
+ </div>
27
+ `,t=((r=this.dataLayer.searchResultsMetadataValue)==null?void 0:r.spellingSuggestion)??"";if(this.dataLayer.renderingEngineValue==="mustache"&&this.searchResultsContainer&&(this.searchResultsContainer.innerHTML=g.render(e,{spellingSuggestion:t,searchTerm:this.dataLayer.searchTermValue})),t&&this.searchResultsContainer){const n=this.searchResultsContainer.querySelector("a");n&&n.addEventListener("click",h=>{h.preventDefault(),h.stopPropagation(),this.searchCallback(t)})}}renderResults(e){var t,s;if(this.dataLayer.renderingEngineValue==="mustache"&&this.searchResultsContainer)if(this.removeLinkClickEvents(),e.length===0)this.renderNoResultsTemplate();else{const a=((s=(t=this.config)==null?void 0:t.templates)==null?void 0:s.searchResultTemplate)||`
28
+ <div class="searchstax-search-result">
29
+ {{#url}}
30
+ <a href="{{url}}" data-searchstax-unique-result-id="{{uniqueId}}" class="searchstax-result-item-link"></a>
31
+ {{/url}}
32
+ {{#ribbon}}
33
+ <div class="searchstax-search-result-ribbon">
34
+ {{ribbon}}
35
+ </div>
36
+ {{/ribbon}}
37
+ {{#thumbnail}}
38
+ <img :src="thumbnail" class="searchstax-thumbnail">
39
+ {{/thumbnail}}
40
+ <div class="searchstax-search-result-title-container">
41
+ <span class="searchstax-search-result-title">{{title}}</span>
42
+ </div>
43
+ {{#paths}}
44
+ <p class="searchstax-search-result-common">
45
+ {{paths}}
46
+ </p>
47
+ {{/paths}}
48
+ {{#description}}
49
+ <p class="searchstax-search-result-description searchstax-search-result-common">
50
+ {{description}}
51
+ </p>
52
+ {{/description}}
53
+ {{#unmappedFields}}
54
+ {{#isImage}}
55
+ <div class="searchstax-search-result-image-container">
56
+ <img :src="result[value]" class="searchstax-result-image">
57
+ </div>
58
+ {{/isImage}}
59
+ {{^isImage}}
60
+ <p class="searchstax-search-result-common">
61
+ {{value}}
62
+ </p>
63
+ {{/isImage}}
64
+ {{/unmappedFields}}
65
+ </div>`,r=e.map(n=>g.render(a,n));this.searchResultsContainer.innerHTML=r.join(""),this.searchResultLinks=Array.from(this.searchResultsContainer.querySelectorAll(`[${this.uniqueIdAttribute}]`)),this.attachLinkClickEvents()}}removeLinkClickEvents(){this.searchResultLinks.forEach(e=>{e.removeEventListener("click",()=>{})})}get uniqueIdAttribute(){return this.config.searchResultUniqueIdAttribute||"data-searchstax-unique-result-id"}attachLinkClickEvents(){this.searchResultLinks.forEach(e=>{e.addEventListener("click",t=>{t.preventDefault(),t.stopPropagation();const s=e.getAttribute(this.uniqueIdAttribute)??"";s&&this.linkClickCallback(s)})})}renderMainTemplate(){var t,s;const e=((s=(t=this.config)==null?void 0:t.templates)==null?void 0:s.mainTemplate)||`
66
+ <div class="searchstax-search-results-container">
67
+ <div class="searchstax-search-results"></div>
68
+ </div>
69
+ `;this.dataLayer.renderingEngineValue==="mustache"&&(this.searchResultsMainContainer.innerHTML=g.render(e,{})),setTimeout(()=>{var n,h;const a=(n=this.config)!=null&&n.searchResultsContainerId?(h=this.config)==null?void 0:h.searchResultsContainerId:"searchstax-search-results",r=document.getElementById(a);if(r)this.searchResultsContainer=r;else throw new Error(`Search Results Container with id ${a} not found`)},0)}}class he{constructor(e="mustache"){u(this,"sessionId");u(this,"searchstaxConfig");u(this,"searchHelper");u(this,"searchInputConfig");u(this,"searchResultsConfig");u(this,"searchInputWidget");u(this,"searchResultsWidget");u(this,"dataLayer",new j);e&&this.dataLayer.setRenderingEngine(e),this.sessionId=F.getOrSetCookie("searchstax_session_id"),this.handleHooks()}setRenderingEngine(e="mustache"){this.dataLayer.setRenderingEngine(e)}handleHooks(){var e,t;(t=(e=this.searchInputConfig)==null?void 0:e.hooks)!=null&&t.afterSearch&&this.dataLayer.searchResultsObservable.subscribe(s=>{this.searchInputConfig.hooks.afterSearch(s)})}initialize(e){this.searchstaxConfig||(this.searchstaxConfig=e,this.searchHelper=new W({...e,sessionId:this.sessionId},this.dataLayer))}search(e,t){this.searchHelper&&this.searchHelper.search(e,this.parseSearchResultsResponse.bind(this),t)}parseSearchResultsResponse(e){var s,a;let t=E.combineResultsWithMetadata(e);(a=(s=this.searchInputConfig)==null?void 0:s.hooks)!=null&&a.afterSearch&&(t=this.searchInputConfig.hooks.afterSearch(t)),this.dataLayer.setSearchResults(t),this.dataLayer.setSearchResultsMetadata(E.extractSearchResultsMetadata(e))}parseSuggestSuggestResponse(e){var s,a;let t=e;(a=(s=this.searchInputConfig)==null?void 0:s.hooks)!=null&&a.afterAutosuggest&&(t=this.searchInputConfig.hooks.afterAutosuggest(e)),this.dataLayer.setSearchAutosuggest(t)}suggest(e,t){this.searchHelper&&this.searchHelper.suggest(e,this.parseSuggestSuggestResponse.bind(this),t)}changeLanguage(e){this.searchHelper&&(this.searchHelper.language=e)}addSearchInputWidget(e,t){this.searchInputConfig||(this.searchInputConfig=t,this.searchInputWidget=new ne({containerId:e,config:t,searchTrigger:this.executeSearch.bind(this),suggestTrigger:this.executeSuggest.bind(this),dataLayer:this.dataLayer}))}addSearchResultsWidget(e,t){this.searchResultsConfig||(this.searchResultsConfig=t,this.searchResultsWidget=new ue({containerId:e,linkClickCallback:this.executeLinkClick.bind(this),searchTrigger:this.executeSearch.bind(this),config:t,dataLayer:this.dataLayer}))}executeSearch(e){var s,a;let t={term:e,queryParams:[]};(a=(s=this.searchInputConfig)==null?void 0:s.hooks)!=null&&a.beforeSearch&&(t=this.searchInputConfig.hooks.beforeSearch(t)),t&&t.term!==void 0&&t.queryParams!==void 0&&this.search(t.term,t.queryParams)}executeSuggest(e){var s,a;let t={term:e,queryParams:[]};(a=(s=this.searchInputConfig)==null?void 0:s.hooks)!=null&&a.beforeAutosuggest&&(t=this.searchInputConfig.hooks.beforeAutosuggest(t)),t&&t.term!==void 0&&t.queryParams!==void 0&&this.suggest(t.term,t.queryParams)}executeLinkClick(e){var s,a,r,n;let t=E.findResultByUniqueId(e,this.dataLayer.searchResultsValue??[]);t&&((a=(s=this.searchResultsConfig)==null?void 0:s.hooks)!=null&&a.afterLinkClick&&(t=this.searchResultsConfig.hooks.afterLinkClick(t)),t&&(console.log("foundResult",t),this.dataLayer.searchResultsMetadataValue&&D.trackClick({result:t,searchTermValue:this.dataLayer.searchTermValue,trackApiKey:((r=this.searchstaxConfig)==null?void 0:r.trackApiKey)??"",session:this.sessionId,language:((n=this.searchHelper)==null?void 0:n.language)??"",recordsPerPage:this.dataLayer.searchResultsMetadataValue.recordsPerPageValue,totalResults:this.dataLayer.searchResultsMetadataValue.totalResultsValue,currentPage:this.dataLayer.currentPageValue,latencyVal:this.dataLayer.searchResultsMetadataValue.latency})))}}exports.Searchstax=he;
@@ -0,0 +1,163 @@
1
+ // Generated by dts-bundle-generator v7.1.0
2
+
3
+ export interface ISearchstaxParsedResult {
4
+ custom?: any;
5
+ ribbon: string | null;
6
+ paths: string | null;
7
+ url: string | null;
8
+ title: string | null;
9
+ promoted: boolean | null;
10
+ thumbnail: string | null;
11
+ date: string | null;
12
+ snippet: string | null;
13
+ description: string | null;
14
+ uniqueId: string;
15
+ position: number;
16
+ unmappedFields: {
17
+ key: string;
18
+ value: string | string[] | boolean;
19
+ }[];
20
+ allFields: {
21
+ key: string;
22
+ value: string | string[] | boolean;
23
+ }[];
24
+ }
25
+ export interface ISearchstaxSearchMetadata {
26
+ recordsPerPageValue: number;
27
+ startDocVal: number;
28
+ totalResultsValue: number;
29
+ latency: number;
30
+ endDocValue: number;
31
+ spellingSuggestion: string;
32
+ }
33
+ export interface ISearchstaxSuggestResponseHeader {
34
+ zkConnected: boolean;
35
+ status: number;
36
+ qTime: number;
37
+ }
38
+ export interface ISearchstaxSuggestion {
39
+ term: string;
40
+ weight: number;
41
+ payload: string;
42
+ }
43
+ export interface ISearchstaxSEARCHTERM {
44
+ numFound: number;
45
+ suggestions: ISearchstaxSuggestion[];
46
+ }
47
+ export interface ISearchstaxStudio_suggestor_LANG {
48
+ [key: string]: ISearchstaxSEARCHTERM;
49
+ }
50
+ export interface ISearchstaxSuggest {
51
+ [key: string]: ISearchstaxStudio_suggestor_LANG;
52
+ }
53
+ export interface ISearchstaxSuggestResponse {
54
+ responseHeader: ISearchstaxSuggestResponseHeader;
55
+ suggest: ISearchstaxSuggest;
56
+ }
57
+ declare class Observable {
58
+ value: any;
59
+ observers: Function[];
60
+ constructor(value: any);
61
+ subscribe(observer: (data: any) => void): void;
62
+ unsubscribe(observer: (data: any) => void): void;
63
+ setValue(value: any): void;
64
+ getValue(): any;
65
+ notify(): void;
66
+ }
67
+ declare class DataLAyer {
68
+ searchTermChangeObservable: Observable;
69
+ loadingChangeObservable: Observable;
70
+ searchResultsObservable: Observable;
71
+ searchResultsMetadataObservable: Observable;
72
+ searchAutosuggestObservable: Observable;
73
+ private currentPage;
74
+ private renderingEngine;
75
+ setSearchTerm(value: string): void;
76
+ setRenderingEngine(value: "mustache" | "vue" | "react"): void;
77
+ setCurrentPage(value: number): void;
78
+ setLoading(value: boolean): void;
79
+ setSearchResults(value: ISearchstaxParsedResult[]): void;
80
+ setSearchResultsMetadata(value: ISearchstaxSearchMetadata): void;
81
+ setSearchAutosuggest(value: ISearchstaxSuggestResponse): void;
82
+ get searchResultsValue(): ISearchstaxParsedResult[] | null;
83
+ get searchTermValue(): string;
84
+ get loadingValue(): boolean;
85
+ get searchAutosuggestValue(): ISearchstaxSuggestResponse | null;
86
+ get searchResultsMetadataValue(): ISearchstaxSearchMetadata | null;
87
+ get currentPageValue(): number;
88
+ get renderingEngineValue(): "mustache" | "vue" | "react";
89
+ }
90
+ export interface ISearchstaxConfig {
91
+ language: string;
92
+ searchURL: string;
93
+ suggesterURL: string;
94
+ authenticationValue: string;
95
+ trackApiKey: string;
96
+ searchApiKey: string;
97
+ authType: "token" | "basic";
98
+ searchToken?: string;
99
+ suggesterToken?: string;
100
+ }
101
+ export interface ISearchstaxSearchProps {
102
+ term: string;
103
+ queryParams: string[];
104
+ }
105
+ export interface ISearchstaxSuggestProps {
106
+ term: string;
107
+ queryParams: string[];
108
+ }
109
+ export interface ISearchstaxSearchInputConfig {
110
+ searchAdditionalArgs?: string;
111
+ suggestAfterMinChars: number;
112
+ hideBranding: boolean;
113
+ templates?: {
114
+ mainTemplate?: string;
115
+ searchInputId?: string;
116
+ autosuggestItemTemplate?: string;
117
+ };
118
+ hooks?: {
119
+ beforeSearch?: (props: ISearchstaxSearchProps) => ISearchstaxSearchProps | null;
120
+ afterSearch?: (results: ISearchstaxParsedResult[]) => ISearchstaxParsedResult[];
121
+ beforeAutosuggest?: (props: ISearchstaxSuggestProps) => ISearchstaxSuggestProps | null;
122
+ afterAutosuggest?: (result: ISearchstaxSuggestResponse) => ISearchstaxSuggestResponse;
123
+ };
124
+ }
125
+ export interface ISearchstaxSearcResultsConfig {
126
+ hideUniqueKey: boolean;
127
+ searchResultsContainerId?: string;
128
+ searchResultUniqueIdAttribute?: string;
129
+ templates?: {
130
+ mainTemplate?: string;
131
+ searchResultTemplate?: string;
132
+ noSearchResultTemplate?: string;
133
+ };
134
+ hooks?: {
135
+ afterLinkClick?: (resultClicked: ISearchstaxParsedResult) => ISearchstaxParsedResult | null;
136
+ };
137
+ }
138
+ export declare class Searchstax {
139
+ private sessionId;
140
+ private searchstaxConfig?;
141
+ private searchHelper?;
142
+ private searchInputConfig?;
143
+ private searchResultsConfig?;
144
+ private searchInputWidget?;
145
+ private searchResultsWidget?;
146
+ dataLayer: DataLAyer;
147
+ constructor(renderEngine?: "mustache" | "vue" | "react");
148
+ setRenderingEngine(engine?: "mustache" | "vue" | "react"): void;
149
+ private handleHooks;
150
+ initialize(config: ISearchstaxConfig): void;
151
+ search(term: string, queryParams: string[]): void;
152
+ private parseSearchResultsResponse;
153
+ private parseSuggestSuggestResponse;
154
+ suggest(term: string, queryParams: string[]): void;
155
+ changeLanguage(language: string): void;
156
+ addSearchInputWidget(containerId: string, config: ISearchstaxSearchInputConfig): void;
157
+ addSearchResultsWidget(containerId: string, config: ISearchstaxSearcResultsConfig): void;
158
+ private executeSearch;
159
+ private executeSuggest;
160
+ executeLinkClick(uniqueId: string): void;
161
+ }
162
+
163
+ export {};
@@ -0,0 +1,69 @@
1
+ var he=Object.defineProperty;var ce=(C,v,I)=>v in C?he(C,v,{enumerable:!0,configurable:!0,writable:!0,value:I}):C[v]=I;var u=(C,v,I)=>(ce(C,typeof v!="symbol"?v+"":v,I),I);(function(C){"use strict";class v{constructor(e){u(this,"value");u(this,"observers",[]);this.value=e,this.observers=[]}subscribe(e){this.observers.push(e),e(this.value)}unsubscribe(e){const t=this.observers.indexOf(e);t!==-1&&this.observers.splice(t,1)}setValue(e){this.value=e,this.notify()}getValue(){return this.value}notify(){this.observers.forEach(e=>e(this.value))}}class I{constructor(){u(this,"searchTermChangeObservable",new v(""));u(this,"loadingChangeObservable",new v(!1));u(this,"searchResultsObservable",new v(null));u(this,"searchResultsMetadataObservable",new v(null));u(this,"searchAutosuggestObservable",new v(null));u(this,"currentPage",1);u(this,"renderingEngine","mustache")}setSearchTerm(e){this.searchTermChangeObservable.setValue(e)}setRenderingEngine(e){this.renderingEngine=e}setCurrentPage(e){this.currentPage=e}setLoading(e){this.loadingChangeObservable.setValue(e)}setSearchResults(e){this.searchResultsObservable.setValue(e)}setSearchResultsMetadata(e){this.searchResultsMetadataObservable.setValue(e)}setSearchAutosuggest(e){this.searchAutosuggestObservable.setValue(e)}get searchResultsValue(){return this.searchResultsObservable.getValue()}get searchTermValue(){return this.searchTermChangeObservable.getValue()}get loadingValue(){return this.loadingChangeObservable.getValue()}get searchAutosuggestValue(){return this.searchAutosuggestObservable.getValue()}get searchResultsMetadataValue(){return this.searchResultsMetadataObservable.getValue()}get currentPageValue(){return this.currentPage}get renderingEngineValue(){return this.renderingEngine}}class V{static combineResultsWithMetadata(e){const t=[],s=parseInt(e.response.start+"");return e.response.docs.forEach((a,r)=>{const n={custom:null,uniqueId:this.getValueByKey(e.responseHeader.params.uniqueId,a,e)??"",position:s+r+1,ribbon:this.doesMapExist("ribbon",e)?this.getValueByKey("ribbon",a,e):null,paths:this.doesMapExist("paths",e)?this.getValueByKey("paths",a,e):null,url:this.doesMapExist("url",e)?this.getValueByKey("url",a,e):null,title:this.doesMapExist("title",e)?this.getValueByKey("title",a,e):null,promoted:a["[elevated]"]?a["[elevated]"]:!1,thumbnail:this.doesMapExist("thumbnail",e)?this.getValueByKey("thumbnail",a,e):null,date:this.doesMapExist("date",e)?this.getValueByKey("date",a,e):null,snippet:this.doesMapExist("snippet",e)?this.getValueByKey("snippet",a,e):null,description:this.doesMapExist("description",e)?this.getValueByKey("description",a,e):null,unmappedFields:this.getUnmappedFields(a,e),allFields:this.getAllFields(a,e)};t.push(n)}),t}static extractSearchResultsMetadata(e){var s,a,r,n;let t="";return t=((n=(r=(a=(s=e==null?void 0:e.spellcheck)==null?void 0:s.suggestions)==null?void 0:a[0])==null?void 0:r.suggestion)==null?void 0:n[0])??"",typeof t!="string"&&(t=(t==null?void 0:t.word)??""),{recordsPerPageValue:parseInt(e.responseHeader.params.rows),startDocVal:parseInt(e.response.start+""),totalResultsValue:parseInt(e.response.numFound+""),latency:parseInt(e.responseHeader.QTime+""),endDocValue:parseInt(e.responseHeader.params.rows)+parseInt(e.response.start+""),spellingSuggestion:t}}static findResultByUniqueId(e,t){return t.find(s=>s.uniqueId===e)??null}static getUnmappedFields(e,t){const s=t.metadata.results.filter(r=>r.result_card==="").map(r=>r.name),a=[];for(const r of Object.keys(e))if(s.indexOf(r)!==-1){const n=Array.isArray(e[r])?e[r].join(", "):e[r];a.push({key:r,value:n,isImage:this.checkIfImage(e[r])})}return a}static checkIfImage(e){return e===void 0||typeof e!="string"?!1:/\.(gif|jpe?g|tiff?|png|webp|bmp)$/i.test(e)}static getAllFields(e,t){const s=t.metadata.results.map(r=>r.name),a=[];for(const r of Object.keys(e))s.indexOf(r)!==-1&&a.push({key:r,value:e[r],isImage:this.checkIfImage(e[r])});return a}static doesMapExist(e,t){return t.metadata.results.find(s=>s.result_card===e)!==void 0}static getValueByKey(e,t,s){const a=s.metadata.results.find(n=>n.result_card===e);if(a===void 0)return null;const r=t[a.name];return r===void 0?null:typeof r=="string"?r:Array.isArray(r)?r.join(", "):null}}class K{constructor(e,t){u(this,"url","");u(this,"relatedSearches","");u(this,"suggester","");u(this,"authHeader");u(this,"authHeaderRelated");u(this,"language","en");u(this,"trackApiKey","");u(this,"session","");u(this,"searchAdditionalArgs","");u(this,"searchAuthType");u(this,"selectAuthToken");u(this,"suggesterAuthToken");u(this,"controllerSearch");u(this,"signalSearch");u(this,"controllerSuggest");u(this,"signalSuggest");u(this,"dataLayer");this.dataLayer=t,this.url=e.searchURL,this.language=e.language,this.suggester=e.suggesterURL,this.trackApiKey=e.trackApiKey,this.session=e.sessionId,this.searchAuthType=e.authType,this.selectAuthToken=e.searchToken??"",this.suggesterAuthToken=e.suggesterToken??"",this.authHeader=new Headers,this.authHeader.append("Accept","application/json");const s=this.searchAuthType==="token"?`Token ${this.suggesterAuthToken}`:`Basic ${e.authenticationValue}`;this.authHeader.append("Authorization",s),this.authHeaderRelated=new Headers,this.authHeaderRelated.append("Accept","application/json"),this.authHeaderRelated.append("Authorization",e.searchApiKey)}search(e,t,s){this.dataLayer.setSearchTerm(e),this.dataLayer.setLoading(!0),this.controllerSearch&&this.controllerSearch.abort(),this.controllerSearch=new AbortController,this.signalSearch=this.controllerSearch.signal;const a=new Proxy(new URLSearchParams(window.location.search),{get:(h,c)=>h.get(c)??""}),r=a.languageVariant?"&fq=_language:"+a.languageVariant:"",n=this.url+"?q="+encodeURIComponent(e.trim())+this.toQueryString(s)+this.searchAdditionalArgs+"&language="+this.language+r;fetch(n,{method:"GET",headers:this.authHeader,credentials:"same-origin",signal:this.signalSearch}).then(h=>h.json()).then(h=>{this.dataLayer.setLoading(!1),t(h)}).catch(h=>{this.dataLayer.setLoading(!1),console.log(h)})}suggest(e,t,s){this.controllerSuggest&&this.controllerSuggest.abort(),this.controllerSuggest=new AbortController,this.signalSuggest=this.controllerSuggest.signal;const a=this.suggester+"?q="+e.trim()+this.toQueryString(s)+"&language="+this.language;fetch(a,{method:"GET",headers:this.authHeader,credentials:"same-origin",signal:this.signalSuggest}).then(r=>r.json()).then(r=>{t(r)}).catch(r=>console.log(r))}fields(){return this.fields}toQueryString(e){return"&"+e.join("&")}}class j{static getOrSetCookie(e){let t=this.getCookie(e);return t==null&&(t=this.makeid(25),this.setCookie(e,t,{secure:!0,"max-age":3600})),t}static makeid(e){let t="";const s="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",a=s.length;for(let r=0;r<e;r++)t+=s.charAt(Math.floor(Math.random()*a));return t}static getCookie(e){const t=document.cookie.match(new RegExp("(?:^|; )"+e.replace(/([.$?*|{}()[\]\\/+^])/g,"\\$1")+"=([^;]*)"));return t?decodeURIComponent(t[1]):void 0}static setCookie(e,t,s){const a={path:"/",...s};s.expires instanceof Date&&(a.expires=s.expires.toUTCString());let r=encodeURIComponent(e)+"="+encodeURIComponent(t);for(const n in a){r+="; "+n;const h=a[n];h!==!0&&(r+="="+h)}document.cookie=r}}class W{static trackClick(e){const t={key:e.trackApiKey,query:e.searchTermValue,shownHits:e.recordsPerPage,totalHits:e.totalResults,pageNo:e.currentPage,latency:e.latencyVal,session:e.session,cDocId:e.result.uniqueId,cDocTitle:e.result.title,position:e.result.position,language:e.language};_msq.push(["trackClick",t])}}/*!
2
+ * mustache.js - Logic-less {{mustache}} templates with JavaScript
3
+ * http://github.com/janl/mustache.js
4
+ */var F=Object.prototype.toString,A=Array.isArray||function(e){return F.call(e)==="[object Array]"};function M(i){return typeof i=="function"}function D(i){return A(i)?"array":typeof i}function P(i){return i.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")}function O(i,e){return i!=null&&typeof i=="object"&&e in i}function _(i,e){return i!=null&&typeof i!="object"&&i.hasOwnProperty&&i.hasOwnProperty(e)}var $=RegExp.prototype.test;function N(i,e){return $.call(i,e)}var z=/\S/;function Q(i){return!N(z,i)}var G={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;","/":"&#x2F;","`":"&#x60;","=":"&#x3D;"};function J(i){return String(i).replace(/[&<>"'`=\/]/g,function(t){return G[t]})}var X=/\s*/,Y=/\s+/,B=/\s*=/,Z=/\s*\}/,ee=/#|\^|\/|>|\{|&|=|!/;function te(i,e){if(!i)return[];var t=!1,s=[],a=[],r=[],n=!1,h=!1,c="",l=0;function p(){if(n&&!h)for(;r.length;)delete a[r.pop()];else r=[];n=!1,h=!1}var y,S,q;function U(b){if(typeof b=="string"&&(b=b.split(Y,2)),!A(b)||b.length!==2)throw new Error("Invalid tags: "+b);y=new RegExp(P(b[0])+"\\s*"),S=new RegExp("\\s*"+P(b[1])),q=new RegExp("\\s*"+P("}"+b[1]))}U(e||g.tags);for(var o=new T(i),k,f,m,w,E,R;!o.eos();){if(k=o.pos,m=o.scanUntil(y),m)for(var H=0,ue=m.length;H<ue;++H)w=m.charAt(H),Q(w)?(r.push(a.length),c+=w):(h=!0,t=!0,c+=" "),a.push(["text",w,k,k+1]),k+=1,w===`
5
+ `&&(p(),c="",l=0,t=!1);if(!o.scan(y))break;if(n=!0,f=o.scan(ee)||"name",o.scan(X),f==="="?(m=o.scanUntil(B),o.scan(B),o.scanUntil(S)):f==="{"?(m=o.scanUntil(q),o.scan(Z),o.scanUntil(S),f="&"):m=o.scanUntil(S),!o.scan(S))throw new Error("Unclosed tag at "+o.pos);if(f==">"?E=[f,m,k,o.pos,c,l,t]:E=[f,m,k,o.pos],l++,a.push(E),f==="#"||f==="^")s.push(E);else if(f==="/"){if(R=s.pop(),!R)throw new Error('Unopened section "'+m+'" at '+k);if(R[1]!==m)throw new Error('Unclosed section "'+R[1]+'" at '+k)}else f==="name"||f==="{"||f==="&"?h=!0:f==="="&&U(m)}if(p(),R=s.pop(),R)throw new Error('Unclosed section "'+R[1]+'" at '+o.pos);return ae(se(a))}function se(i){for(var e=[],t,s,a=0,r=i.length;a<r;++a)t=i[a],t&&(t[0]==="text"&&s&&s[0]==="text"?(s[1]+=t[1],s[3]=t[3]):(e.push(t),s=t));return e}function ae(i){for(var e=[],t=e,s=[],a,r,n=0,h=i.length;n<h;++n)switch(a=i[n],a[0]){case"#":case"^":t.push(a),s.push(a),t=a[4]=[];break;case"/":r=s.pop(),r[5]=a[2],t=s.length>0?s[s.length-1][4]:e;break;default:t.push(a)}return e}function T(i){this.string=i,this.tail=i,this.pos=0}T.prototype.eos=function(){return this.tail===""},T.prototype.scan=function(e){var t=this.tail.match(e);if(!t||t.index!==0)return"";var s=t[0];return this.tail=this.tail.substring(s.length),this.pos+=s.length,s},T.prototype.scanUntil=function(e){var t=this.tail.search(e),s;switch(t){case-1:s=this.tail,this.tail="";break;case 0:s="";break;default:s=this.tail.substring(0,t),this.tail=this.tail.substring(t)}return this.pos+=s.length,s};function L(i,e){this.view=i,this.cache={".":this.view},this.parent=e}L.prototype.push=function(e){return new L(e,this)},L.prototype.lookup=function(e){var t=this.cache,s;if(t.hasOwnProperty(e))s=t[e];else{for(var a=this,r,n,h,c=!1;a;){if(e.indexOf(".")>0)for(r=a.view,n=e.split("."),h=0;r!=null&&h<n.length;)h===n.length-1&&(c=O(r,n[h])||_(r,n[h])),r=r[n[h++]];else r=a.view[e],c=O(a.view,e);if(c){s=r;break}a=a.parent}t[e]=s}return M(s)&&(s=s.call(this.view)),s};function d(){this.templateCache={_cache:{},set:function(e,t){this._cache[e]=t},get:function(e){return this._cache[e]},clear:function(){this._cache={}}}}d.prototype.clearCache=function(){typeof this.templateCache<"u"&&this.templateCache.clear()},d.prototype.parse=function(e,t){var s=this.templateCache,a=e+":"+(t||g.tags).join(":"),r=typeof s<"u",n=r?s.get(a):void 0;return n==null&&(n=te(e,t),r&&s.set(a,n)),n},d.prototype.render=function(e,t,s,a){var r=this.getConfigTags(a),n=this.parse(e,r),h=t instanceof L?t:new L(t,void 0);return this.renderTokens(n,h,s,e,a)},d.prototype.renderTokens=function(e,t,s,a,r){for(var n="",h,c,l,p=0,y=e.length;p<y;++p)l=void 0,h=e[p],c=h[0],c==="#"?l=this.renderSection(h,t,s,a,r):c==="^"?l=this.renderInverted(h,t,s,a,r):c===">"?l=this.renderPartial(h,t,s,r):c==="&"?l=this.unescapedValue(h,t):c==="name"?l=this.escapedValue(h,t,r):c==="text"&&(l=this.rawValue(h)),l!==void 0&&(n+=l);return n},d.prototype.renderSection=function(e,t,s,a,r){var n=this,h="",c=t.lookup(e[1]);function l(S){return n.render(S,t,s,r)}if(c){if(A(c))for(var p=0,y=c.length;p<y;++p)h+=this.renderTokens(e[4],t.push(c[p]),s,a,r);else if(typeof c=="object"||typeof c=="string"||typeof c=="number")h+=this.renderTokens(e[4],t.push(c),s,a,r);else if(M(c)){if(typeof a!="string")throw new Error("Cannot use higher-order sections without the original template");c=c.call(t.view,a.slice(e[3],e[5]),l),c!=null&&(h+=c)}else h+=this.renderTokens(e[4],t,s,a,r);return h}},d.prototype.renderInverted=function(e,t,s,a,r){var n=t.lookup(e[1]);if(!n||A(n)&&n.length===0)return this.renderTokens(e[4],t,s,a,r)},d.prototype.indentPartial=function(e,t,s){for(var a=t.replace(/[^ \t]/g,""),r=e.split(`
6
+ `),n=0;n<r.length;n++)r[n].length&&(n>0||!s)&&(r[n]=a+r[n]);return r.join(`
7
+ `)},d.prototype.renderPartial=function(e,t,s,a){if(s){var r=this.getConfigTags(a),n=M(s)?s(e[1]):s[e[1]];if(n!=null){var h=e[6],c=e[5],l=e[4],p=n;c==0&&l&&(p=this.indentPartial(n,l,h));var y=this.parse(p,r);return this.renderTokens(y,t,s,p,a)}}},d.prototype.unescapedValue=function(e,t){var s=t.lookup(e[1]);if(s!=null)return s},d.prototype.escapedValue=function(e,t,s){var a=this.getConfigEscape(s)||g.escape,r=t.lookup(e[1]);if(r!=null)return typeof r=="number"&&a===g.escape?String(r):a(r)},d.prototype.rawValue=function(e){return e[1]},d.prototype.getConfigTags=function(e){return A(e)?e:e&&typeof e=="object"?e.tags:void 0},d.prototype.getConfigEscape=function(e){if(e&&typeof e=="object"&&!A(e))return e.escape};var g={name:"mustache.js",version:"4.2.0",tags:["{{","}}"],clearCache:void 0,escape:void 0,parse:void 0,render:void 0,Scanner:void 0,Context:void 0,Writer:void 0,set templateCache(i){x.templateCache=i},get templateCache(){return x.templateCache}},x=new d;g.clearCache=function(){return x.clearCache()},g.parse=function(e,t){return x.parse(e,t)},g.render=function(e,t,s,a){if(typeof e!="string")throw new TypeError('Invalid template! Template should be a "string" but "'+D(e)+'" was given as the first argument for mustache#render(template, view, partials)');return x.render(e,t,s,a)},g.escape=J,g.Scanner=T,g.Context=L,g.Writer=d;class re{constructor(e){u(this,"dataLayer");u(this,"config");u(this,"suggestAfterMinChars");u(this,"hideBranding");u(this,"containerId");u(this,"currentInputValue","");u(this,"autosuggestResults");u(this,"searchInput");u(this,"actionButton");u(this,"autosuggestContainer");u(this,"buttonState","search");u(this,"selectedAutosuggestItem",-1);u(this,"suggestTrigger");u(this,"searchTrigger");this.dataLayer=e.dataLayer,this.config=e.config,this.searchTrigger=e.searchTrigger,this.suggestTrigger=e.suggestTrigger,this.containerId=e.containerId,this.suggestAfterMinChars=e.config.suggestAfterMinChars,this.hideBranding=e.config.hideBranding,this.renderMainTemplate(),this.actionButtonInit(),this.updateActionButtonState("search"),this.searchInput&&(this.createAutosuggestContainer(),this.attachSubscriptions())}renderMainTemplate(){var r,n;const e=document.getElementById(this.containerId);if(!e)throw new Error("Search input container not found");const t=((r=this.config.templates)==null?void 0:r.mainTemplate)||`
8
+ <div class="searchstax-search-input-container">
9
+ <div class="searchstax-search-input-wrapper">
10
+ <input type="text" id="searchstax-search-input" class="searchstax-search-input" placeholder="SEARCH FOR..." />
11
+ <button class="searchstax-spinner-icon" id="searchstax-search-input-action-button"></button>
12
+ </div>
13
+ </div>
14
+ `;if(console.log("this.dataLayer.renderingEngineValue",this.dataLayer.renderingEngineValue),this.dataLayer.renderingEngineValue==="mustache"){const h=g.render(t,{});e.innerHTML=h}const s=((n=this.config.templates)==null?void 0:n.searchInputId)||"searchstax-search-input",a=document.querySelector(`#${s}`);if(a)this.searchInput=a,a.addEventListener("keyup",this.inputKeyupEvent.bind(this)),a.addEventListener("blur",this.hideAutosuggest.bind(this)),a.addEventListener("paste",this.inputPasteEvent.bind(this));else throw new Error("Input not found")}createAutosuggestContainer(){var e;this.autosuggestContainer=document.createElement("div"),this.autosuggestContainer.classList.add("searchstax-autosuggest-container"),this.autosuggestContainer.addEventListener("mouseleave",()=>{this.resetAutosuggestSelection(),this.markActiveAutosuggestItem()}),(e=this.searchInput)==null||e.after(this.autosuggestContainer)}actionButtonInit(){this.actionButton=document.getElementById("searchstax-search-input-action-button"),this.actionButton&&this.actionButton.addEventListener("click",()=>{var e;this.buttonState==="search"?this.executeSearch(((e=this.searchInput)==null?void 0:e.value)??""):this.buttonState==="close"&&this.searchInput&&(this.searchInput.value="",this.executeSearch(""))})}attachSubscriptions(){this.dataLayer.searchTermChangeObservable.subscribe(()=>{this.handleSearchTermChange()}),this.dataLayer.loadingChangeObservable.subscribe(()=>{this.handleLoadingChange()}),this.dataLayer.searchAutosuggestObservable.subscribe(e=>{e&&this.appendSuggestions(e)})}handleLoadingChange(){this.dataLayer.loadingValue?this.updateActionButtonState("loading"):this.handleSearchTermChange()}handleSearchTermChange(){var e;this.dataLayer.searchTermValue===((e=this.searchInput)==null?void 0:e.value)&&this.searchInput.value!==""?this.updateActionButtonState("close"):this.updateActionButtonState("search")}updateActionButtonState(e){if(this.buttonState=e,this.actionButton)switch(this.actionButton.classList.remove("searchstax-spinner-icon"),this.actionButton.classList.remove("searchstax-search-close"),this.actionButton.classList.remove("searchstax-search-icon"),e){case"loading":this.actionButton.classList.add("searchstax-spinner-icon");break;case"search":this.actionButton.classList.add("searchstax-search-icon");break;case"close":this.actionButton.classList.add("searchstax-search-close");break}}selectPreviousAutosuggestItem(){this.selectedAutosuggestItem>0?this.selectedAutosuggestItem--:this.selectedAutosuggestItem=this.autosuggestResults.suggestions.length-1,this.markActiveAutosuggestItem()}selectNextAutosuggestItem(){this.selectedAutosuggestItem<this.autosuggestResults.suggestions.length-1?this.selectedAutosuggestItem++:this.selectedAutosuggestItem=0,this.markActiveAutosuggestItem()}resetAutosuggestSelection(){this.selectedAutosuggestItem=-1,this.markActiveAutosuggestItem()}markActiveAutosuggestItem(){const e=document.getElementsByClassName("searchstax-autosuggest-item");for(let t=0;t<e.length;t++){const s=e[t];t===this.selectedAutosuggestItem?s.classList.add("active"):s.classList.remove("active")}}inputKeyupEvent(e){const t=e.key;this.currentInputValue=e.target.value,t==="Enter"?this.suggestionChosen():t==="Escape"?this.hideAutosuggest():t==="ArrowUp"?this.selectPreviousAutosuggestItem():t==="ArrowDown"?this.selectNextAutosuggestItem():this.autosuggestHandling(e),this.handleSearchTermChange()}autosuggestHandling(e){e.target&&e.target.value.length>=this.suggestAfterMinChars?this.executeSuggest(e.target.value):this.hideAutosuggest()}inputPasteEvent(e){setTimeout(()=>{this.autosuggestHandling(e),this.handleSearchTermChange()},0)}executeSuggest(e){this.suggestTrigger(e)}executeSearch(e){this.hideAutosuggest(),this.searchTrigger(e===""?"*":e)}suggestionChosen(){this.selectedAutosuggestItem>-1?this.autosuggestItemClicked(this.autosuggestResults.suggestions[this.selectedAutosuggestItem]):this.executeSearch(this.currentInputValue)}hideAutosuggest(){this.autosuggestContainer&&(this.autosuggestContainer.innerHTML="",this.autosuggestContainer.classList.add("hidden")),this.resetAutosuggestSelection()}cleanSuggestionTerm(e){return e.replace(/(<([^>]+)>)/gi,"").trim()}autosuggestItemClicked(e){this.searchInput.value=this.cleanSuggestionTerm(e.term),this.executeSearch(this.cleanSuggestionTerm(e.term))}createAutosuggestItem(e){var a;const t=document.createElement("div");t.classList.add("searchstax-autosuggest-item"),t.addEventListener("click",()=>{this.autosuggestItemClicked(e)}),t.addEventListener("mouseenter",()=>{var r;this.selectedAutosuggestItem=((r=this.autosuggestResults)==null?void 0:r.suggestions.indexOf(e))||0,this.markActiveAutosuggestItem()});const s=((a=this.config.templates)==null?void 0:a.autosuggestItemTemplate)||'<div class="searchstax-autosuggest-item-term-container">{{{term}}}</div>';return t.innerHTML=g.render(s,e),t}appendSuggestions(e){if(this.autosuggestContainer){this.autosuggestContainer.innerHTML="",this.autosuggestContainer.classList.remove("hidden");for(const t in e.suggest)if(Object.prototype.hasOwnProperty.call(e.suggest,t)){const s=e.suggest[t];for(const a in s)if(Object.prototype.hasOwnProperty.call(s,a)){const r=s[a];this.autosuggestResults=r,r.numFound>0?r.suggestions.forEach(n=>{this.autosuggestContainer.appendChild(this.createAutosuggestItem(n))}):this.autosuggestContainer.classList.add("hidden")}}}}}class ie{constructor(e){u(this,"dataLayer");u(this,"config");u(this,"linkClickCallback");u(this,"searchCallback");u(this,"containerId");u(this,"searchResultsMainContainer");u(this,"searchResultsContainer");u(this,"searchResultLinks",[]);this.linkClickCallback=e.linkClickCallback,this.searchCallback=e.searchTrigger,this.dataLayer=e.dataLayer,this.config=e.config,this.containerId=e.containerId;const t=document.getElementById(this.containerId);if(console.log("resultsContainer",t),t)this.searchResultsMainContainer=t;else throw new Error(`Search Results Main Container with id ${this.containerId} not found`);this.initializeSubscriptions(),this.renderMainTemplate()}initializeSubscriptions(){this.dataLayer.searchResultsObservable.subscribe(e=>{e&&this.searchResultsContainer&&this.renderResults(e)})}renderNoResultsTemplate(){var s,a,r;const e=((a=(s=this.config)==null?void 0:s.templates)==null?void 0:a.noSearchResultTemplate)||`
15
+ <div class="searchstax-no-results">
16
+ Showing <strong>no results</strong> for <strong>"{{ searchTerm }}"</strong>
17
+ <br>
18
+ {{#spellingSuggestion}}
19
+ <span>&nbsp;Did you mean <a href="#"
20
+ class="searchstax-suggestion-term">{{ spellingSuggestion }}</a>?</span>
21
+ {{/spellingSuggestion}}
22
+ </div>
23
+ <div>
24
+ <p>Try searching for search related terms or topics. We offer a wide variety of content to help you get the information you need.</p>
25
+ <p>Lost? Click on the ‘X” in the Search Box to reset your search.</p>
26
+ </div>
27
+ `,t=((r=this.dataLayer.searchResultsMetadataValue)==null?void 0:r.spellingSuggestion)??"";if(this.dataLayer.renderingEngineValue==="mustache"&&this.searchResultsContainer&&(this.searchResultsContainer.innerHTML=g.render(e,{spellingSuggestion:t,searchTerm:this.dataLayer.searchTermValue})),t&&this.searchResultsContainer){const n=this.searchResultsContainer.querySelector("a");n&&n.addEventListener("click",h=>{h.preventDefault(),h.stopPropagation(),this.searchCallback(t)})}}renderResults(e){var t,s;if(this.dataLayer.renderingEngineValue==="mustache"&&this.searchResultsContainer)if(this.removeLinkClickEvents(),e.length===0)this.renderNoResultsTemplate();else{const a=((s=(t=this.config)==null?void 0:t.templates)==null?void 0:s.searchResultTemplate)||`
28
+ <div class="searchstax-search-result">
29
+ {{#url}}
30
+ <a href="{{url}}" data-searchstax-unique-result-id="{{uniqueId}}" class="searchstax-result-item-link"></a>
31
+ {{/url}}
32
+ {{#ribbon}}
33
+ <div class="searchstax-search-result-ribbon">
34
+ {{ribbon}}
35
+ </div>
36
+ {{/ribbon}}
37
+ {{#thumbnail}}
38
+ <img :src="thumbnail" class="searchstax-thumbnail">
39
+ {{/thumbnail}}
40
+ <div class="searchstax-search-result-title-container">
41
+ <span class="searchstax-search-result-title">{{title}}</span>
42
+ </div>
43
+ {{#paths}}
44
+ <p class="searchstax-search-result-common">
45
+ {{paths}}
46
+ </p>
47
+ {{/paths}}
48
+ {{#description}}
49
+ <p class="searchstax-search-result-description searchstax-search-result-common">
50
+ {{description}}
51
+ </p>
52
+ {{/description}}
53
+ {{#unmappedFields}}
54
+ {{#isImage}}
55
+ <div class="searchstax-search-result-image-container">
56
+ <img :src="result[value]" class="searchstax-result-image">
57
+ </div>
58
+ {{/isImage}}
59
+ {{^isImage}}
60
+ <p class="searchstax-search-result-common">
61
+ {{value}}
62
+ </p>
63
+ {{/isImage}}
64
+ {{/unmappedFields}}
65
+ </div>`,r=e.map(n=>g.render(a,n));this.searchResultsContainer.innerHTML=r.join(""),this.searchResultLinks=Array.from(this.searchResultsContainer.querySelectorAll(`[${this.uniqueIdAttribute}]`)),this.attachLinkClickEvents()}}removeLinkClickEvents(){this.searchResultLinks.forEach(e=>{e.removeEventListener("click",()=>{})})}get uniqueIdAttribute(){return this.config.searchResultUniqueIdAttribute||"data-searchstax-unique-result-id"}attachLinkClickEvents(){this.searchResultLinks.forEach(e=>{e.addEventListener("click",t=>{t.preventDefault(),t.stopPropagation();const s=e.getAttribute(this.uniqueIdAttribute)??"";s&&this.linkClickCallback(s)})})}renderMainTemplate(){var t,s;const e=((s=(t=this.config)==null?void 0:t.templates)==null?void 0:s.mainTemplate)||`
66
+ <div class="searchstax-search-results-container">
67
+ <div class="searchstax-search-results"></div>
68
+ </div>
69
+ `;this.dataLayer.renderingEngineValue==="mustache"&&(this.searchResultsMainContainer.innerHTML=g.render(e,{})),setTimeout(()=>{var n,h;const a=(n=this.config)!=null&&n.searchResultsContainerId?(h=this.config)==null?void 0:h.searchResultsContainerId:"searchstax-search-results",r=document.getElementById(a);if(r)this.searchResultsContainer=r;else throw new Error(`Search Results Container with id ${a} not found`)},0)}}class ne{constructor(e="mustache"){u(this,"sessionId");u(this,"searchstaxConfig");u(this,"searchHelper");u(this,"searchInputConfig");u(this,"searchResultsConfig");u(this,"searchInputWidget");u(this,"searchResultsWidget");u(this,"dataLayer",new I);e&&this.dataLayer.setRenderingEngine(e),this.sessionId=j.getOrSetCookie("searchstax_session_id"),this.handleHooks()}setRenderingEngine(e="mustache"){this.dataLayer.setRenderingEngine(e)}handleHooks(){var e,t;(t=(e=this.searchInputConfig)==null?void 0:e.hooks)!=null&&t.afterSearch&&this.dataLayer.searchResultsObservable.subscribe(s=>{this.searchInputConfig.hooks.afterSearch(s)})}initialize(e){this.searchstaxConfig||(this.searchstaxConfig=e,this.searchHelper=new K({...e,sessionId:this.sessionId},this.dataLayer))}search(e,t){this.searchHelper&&this.searchHelper.search(e,this.parseSearchResultsResponse.bind(this),t)}parseSearchResultsResponse(e){var s,a;let t=V.combineResultsWithMetadata(e);(a=(s=this.searchInputConfig)==null?void 0:s.hooks)!=null&&a.afterSearch&&(t=this.searchInputConfig.hooks.afterSearch(t)),this.dataLayer.setSearchResults(t),this.dataLayer.setSearchResultsMetadata(V.extractSearchResultsMetadata(e))}parseSuggestSuggestResponse(e){var s,a;let t=e;(a=(s=this.searchInputConfig)==null?void 0:s.hooks)!=null&&a.afterAutosuggest&&(t=this.searchInputConfig.hooks.afterAutosuggest(e)),this.dataLayer.setSearchAutosuggest(t)}suggest(e,t){this.searchHelper&&this.searchHelper.suggest(e,this.parseSuggestSuggestResponse.bind(this),t)}changeLanguage(e){this.searchHelper&&(this.searchHelper.language=e)}addSearchInputWidget(e,t){this.searchInputConfig||(this.searchInputConfig=t,this.searchInputWidget=new re({containerId:e,config:t,searchTrigger:this.executeSearch.bind(this),suggestTrigger:this.executeSuggest.bind(this),dataLayer:this.dataLayer}))}addSearchResultsWidget(e,t){this.searchResultsConfig||(this.searchResultsConfig=t,this.searchResultsWidget=new ie({containerId:e,linkClickCallback:this.executeLinkClick.bind(this),searchTrigger:this.executeSearch.bind(this),config:t,dataLayer:this.dataLayer}))}executeSearch(e){var s,a;let t={term:e,queryParams:[]};(a=(s=this.searchInputConfig)==null?void 0:s.hooks)!=null&&a.beforeSearch&&(t=this.searchInputConfig.hooks.beforeSearch(t)),t&&t.term!==void 0&&t.queryParams!==void 0&&this.search(t.term,t.queryParams)}executeSuggest(e){var s,a;let t={term:e,queryParams:[]};(a=(s=this.searchInputConfig)==null?void 0:s.hooks)!=null&&a.beforeAutosuggest&&(t=this.searchInputConfig.hooks.beforeAutosuggest(t)),t&&t.term!==void 0&&t.queryParams!==void 0&&this.suggest(t.term,t.queryParams)}executeLinkClick(e){var s,a,r,n;let t=V.findResultByUniqueId(e,this.dataLayer.searchResultsValue??[]);t&&((a=(s=this.searchResultsConfig)==null?void 0:s.hooks)!=null&&a.afterLinkClick&&(t=this.searchResultsConfig.hooks.afterLinkClick(t)),t&&(console.log("foundResult",t),this.dataLayer.searchResultsMetadataValue&&W.trackClick({result:t,searchTermValue:this.dataLayer.searchTermValue,trackApiKey:((r=this.searchstaxConfig)==null?void 0:r.trackApiKey)??"",session:this.sessionId,language:((n=this.searchHelper)==null?void 0:n.language)??"",recordsPerPage:this.dataLayer.searchResultsMetadataValue.recordsPerPageValue,totalResults:this.dataLayer.searchResultsMetadataValue.totalResultsValue,currentPage:this.dataLayer.currentPageValue,latencyVal:this.dataLayer.searchResultsMetadataValue.latency})))}}C.Searchstax=ne,Object.defineProperty(C,Symbol.toStringTag,{value:"Module"})})(this["@searchstaxInc/searchstudioUxJs"]=this["@searchstaxInc/searchstudioUxJs"]||{});