PageSourceSearch

https://www.secabo.com/theme/50e7e71448014bce086e68606d37fb02/js/a…natural-language-search.plugin.ts.5adda2.js

js secabo.com collected 2026-09-25 03:06:40 UTC 14,678 bytes, 8 lines download raw bytes

1"use strict";(self.webpackChunka_i_search=self.webpackChunka_i_search||[]).push([[1215],{68(e,t,r){r.d(t,{A:()=>i});class i{constructor(){this._request=null,this._errorHandlingInternal=!1}get(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"application/json",i=this._createPreparedRequest("GET",e,r);return this._sendRequest(i,null,t)}post(e,t,r){let i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"application/json";i=this._getContentType(t,i);let s=this._createPreparedRequest("POST",e,i);return this._sendRequest(s,t,r)}delete(e,t,r){let i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"application/json";i=this._getContentType(t,i);let s=this._createPreparedRequest("DELETE",e,i);return this._sendRequest(s,t,r)}patch(e,t,r){let i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"application/json";i=this._getContentType(t,i);let s=this._createPreparedRequest("PATCH",e,i);return this._sendRequest(s,t,r)}abort(){if(this._request)return this._request.abort()}setErrorHandlingInternal(e){this._errorHandlingInternal=e}_registerOnLoaded(e,t){t&&(!0===this._errorHandlingInternal?(e.addEventListener("load",()=>{t(e.responseText,e)}),e.addEventListener("abort",()=>{console.warn(`the request to ${e.responseURL} was aborted`)}),e.addEventListener("error",()=>{console.warn(`the request to ${e.responseURL} failed with status ${e.status}`)}),e.addEventListener("timeout",()=>{console.warn(`the request to ${e.responseURL} timed out`)})):e.addEventListener("loadend",()=>{t(e.responseText,e)}))}_sendRequest(e,t,r){return this._registerOnLoaded(e,r),e.send(t),e}_getContentType(e,t){return e instanceof FormData&&(t=!1),t}_createPreparedRequest(e,t,r){return this._request=new XMLHttpRequest,this._request.open(e,t),this._request.setRequestHeader("X-Requested-With","XMLHttpRequest"),r&&this._request.setRequestHeader("Content-type",r),this._request}}},156(e){var t=function(e){var t;return!!e&&"object"==typeof e&&"[object RegExp]"!==(t=Object.prototype.toString.call(e))&&"[object Date]"!==t&&e.$$typeof!==r},r="function"==typeof Symbol&&Symbol.for?Symbol.for("react.element"):60103;function i(e,t){return!1!==t.clone&&t.isMergeableObject(e)?a(Array.isArray(e)?[]:{},e,t):e}function s(e,t,r){return e.concat(t).map(function(e){return i(e,r)})}function n(e){return Object.keys(e).concat(Object.getOwnPropertySymbols?Object.getOwnPropertySymbols(e).filter(function(t){return Object.propertyIsEnumerable.call(e,t)}):[])}function o(e,t){try{return t in e}catch(e){return!1}}function a(e,r,l){(l=l||{}).arrayMerge=l.arrayMerge||s,l.isMergeableObject=l.isMergeableObject||t,l.cloneUnlessOtherwiseSpecified=i;var h,c,u=Array.isArray(r);return u!==Array.isArray(e)?i(r,l):u?l.arrayMerge(e,r,l):(c={},(h=l).isMergeableObject(e)&&n(e).forEach(function(t){c[t]=i(e[t],h)}),n(r).forEach(function(t){(!o(e,t)||Object.hasOwnProperty.call(e,t)&&Object.propertyIsEnumerable.call(e,t))&&(o(e,t)&&h.isMergeableObject(r[t])?c[t]=(function(e,t){if(!t.customMerge)return a;var r=t.customMerge(e);return"function"==typeof r?r:a})(t,h)(e[t],r[t],h):c[t]=i(r[t],h))}),c)}a.all=function(e,t){if(!Array.isArray(e))throw Error("first argument should be an array");return e.reduce(function(e,r){return a(e,r,t)},{})},e.exports=a},215(e,t,r){r.r(t),r.d(t,{default:()=>o});var i=r(737),s=r(795),n=r(68);class o extends i.A{static #e=this.options={fieldSelector:{searchInput:".nls-search-input",searchCharCounter:".nls-input-counter",searchButton:".nls-search-bar-button",primaryTitle:".ai-search-title-primary",secondaryTitle:".ai-search-title-secondary",searchExamples:".nls-example",searchExampleItem:".nls-example-item",searchResults:".ai-search-results",loadingSpinner:".ai-search-loading-spinner",serviceErrorBlock:".nls-search-error",serviceErrorContent:".nls-search-error .alert-content-container"}};init(){this.inputField=s.A.querySelector(this.el,this.options.fieldSelector.searchInput),this.inputCharCount=s.A.querySelector(this.el,this.options.fieldSelector.searchCharCounter),this.submitButton=s.A.querySelector(this.el,this.options.fieldSelector.searchButton),this.searchExamples=s.A.querySelector(this.el,this.options.fieldSelector.searchExamples),this.searchResults=s.A.querySelector(this.el,this.options.fieldSelector.searchResults),this.titlePrimary=s.A.querySelector(this.el,this.options.fieldSelector.primaryTitle),this.loadingSpinner=s.A.querySelector(this.el,this.options.fieldSelector.loadingSpinner),this.serviceErrorBlock=s.A.querySelector(this.el,this.options.fieldSelector.serviceErrorBlock),this.serviceErrorContent=s.A.querySelector(this.el,this.options.fieldSelector.serviceErrorContent),this.client=new n.A,this._registerEvents(),this.inputField.value.trim()&&(this.inputCharCount.innerText=this.inputField.value.length.toString().trim(),this._searchTerms())}_registerEvents(){this.inputField.addEventListener("keydown",this._onKeyDown.bind(this)),this.inputField.addEventListener("input",this._onInput.bind(this)),this.submitButton.addEventListener("click",this._onButtonClick.bind(this)),this.searchExamples.querySelectorAll(this.options.fieldSelector.searchExampleItem).forEach(e
1=>{e.addEventListener("click",this._onSearchExampleClick.bind(this))})}_onKeyDown(e){"Enter"===e.key&&(e.preventDefault(),e.stopPropagation(),this._searchTerms())}_onInput(e){e.preventDefault(),e.stopPropagation(),this.inputCharCount.innerText=this.inputField.value.length.toString().trim()}_onButtonClick(e){e.preventDefault(),e.stopPropagation(),this._searchTerms()}_onSearchExampleClick(e){e.preventDefault(),e.stopPropagation(),this.inputField.value=e.target.innerHTML}_searchTerms(){let e=this.inputField.value.trim();if(""===e)return;let t=new URL(window.location.toString());t.searchParams.set("searchQuery",e),window.history.pushState({},"",t),this._showState("loading"),this.client.abort(),this.client.post(this.options.searchTermsUrl,JSON.stringify({query:e}),(e,t)=>{if(200!==t.status){try{let t=JSON.parse(e);this.setErrorMessage(t.code,t.message)}catch(e){this.setErrorMessage("default")}this._showState("error");return}let r=[],i=JSON.parse(e);if(0===i.length){this._showState("empty");return}i.forEach(e=>{r.push(this._searchProducts(e))}),Promise.all(r).then(e=>{if(this.searchResults.innerHTML=e.join(""),""===this.searchResults.innerHTML){this._showState("empty");return}window.PluginManager.initializePlugins(),this._showState("finish")}).catch(()=>{this.setErrorMessage("default",""),this._showState("error")})})}setErrorMessage(e,t){let r="";switch(e){case"NATURAL_LANGUAGE_SEARCH__EMPTY_QUERY":r=this.options.snippets.serviceErrorEmptyQuery;break;case"NATURAL_LANGUAGE_SEARCH__QUERY_TOO_LONG":let i=this.extractMaxLength(t);r=(r=this.options.snippets.serviceErrorQueryTooLong).replace("{number}",i.toString());break;case"NATURAL_LANGUAGE_SEARCH__EMPTY_CONTEXT":case"NATURAL_LANGUAGE_SEARCH__CONTEXT_TOO_LONG":case"NATURAL_LANGUAGE_SEARCH__LOCALE_NOT_FOUND":r=this.options.snippets.serviceErrorIncorrectConfig;break;default:r=this.options.snippets.serviceErrorDefault}this.serviceErrorContent.innerHTML=r}extractMaxLength(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.options.maxQueryLength;if(!e)return String(t);let r=e.match(/\b(\d+)\s+maximum number\b/i);return r&&r[1]?r[1]:String(t)}_searchProducts(e){return new Promise((t,r)=>{this.client.post(this.options.searchProductsUrl,JSON.stringify({term:e.term,reason:e.reason}),(e,i)=>{if(200!==i.status){r();return}t(e.trim())})})}_showState(e){let t=s.A.querySelector(this.el,this.options.fieldSelector.secondaryTitle,!1);switch(t instanceof HTMLElement&&t.remove(),e){case"loading":this.searchResults.innerHTML="",this.serviceErrorBlock.classList.add("d-none"),this.searchExamples.classList.add("d-none"),this.loadingSpinner.classList.remove("d-none"),this.titlePrimary.innerText=this.options.snippets.loadingTitle;break;case"error":this.loadingSpinner.classList.add("d-none"),this.serviceErrorBlock.classList.remove("d-none");break;case"empty":this.loadingSpinner.classList.add("d-none"),this.searchExamples.classList.remove("d-none"),this.titlePrimary.innerText=this.options.snippets.noResultsTitle,this.titlePrimary.insertAdjacentHTML("afterend",`<h2 class="ai-search-title-secondary align-self-stretch text-primary m-0">${this.options.snippets.noResultsSubTitle}</h2>`);break;case"finish":this.loadingSpinner.classList.add("d-none"),this.titlePrimary.innerText=this.options.snippets.resultTitle}}}},707(e,t,r){r.d(t,{A:()=>i});class i{static ucFirst(e){return e.charAt(0).toUpperCase()+e.slice(1)}static lcFirst(e){return e.charAt(0).toLowerCase()+e.slice(1)}static toDashCase(e){return e.replace(/([A-Z])/g,"-$1").replace(/^-/,"").toLowerCase()}static toLowerCamelCase(e,t){let r=i.toUpperCamelCase(e,t);return i.lcFirst(r)}static toUpperCamelCase(e,t){return t?e.split(t).map(e=>i.ucFirst(e.toLowerCase())).join(""):i.ucFirst(e.toLowerCase())}static parsePrimitive(e){try{return/^\d+(.|,)\d+$/.test(e)&&(e=e.replace(",",".")),JSON.parse(e)}catch(t){return e.toString()}}}},737(e,t,r){r.d(t,{A:()=>a});var i=r(156),s=r.n(i),n=r(707);class o{constructor(e=document){this._el=e,e.$emitter=this,this._listeners=[]}publish(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=arguments.length>2&&void 0!==arguments[2]&&arguments[2],i=new CustomEvent(e,{detail:t,cancelable:r});return this.el.dispatchEvent(i),i}subscribe(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},i=this,s=e.split("."),n=r.scope?t.bind(r.scope):t;if(r.once&&!0===r.once){let t=n;n=function(r){i.unsubscribe(e),t(r)}}return this.el.addEventListener(s[0],n),this.listeners.push({splitEventName:s,opts:r,cb:n}),!0}unsubscribe(e){arguments.length>1&&"function"==typeof arguments[1]&&console.warn(`[NativeEventEmitter] Unsubscribing by passing the subscriber function as a second argument is not supported. By default, all listeners for the event will be removed. Use a suffix (separated by a dot) on the event name when subscribing/unsubscribing to identify/target your specific listener only, e.g. "${e}.MyCustomPlugin"`);let t=e.split(".");return this.listeners=this.listeners.reduce((e,r)=>([...r.splitEventName].sort().toString()===t.sort().toString()?this.el.removeEventListener(r.splitEventName[0],r.cb):e.push(r),e),[]),!0}
1reset(){return this.listeners.forEach(e=>{this.el.removeEventListener(e.splitEventName[0],e.cb)}),this.listeners=[],!0}get el(){return this._el}set el(e){this._el=e}get listeners(){return this._listeners}set listeners(e){this._listeners=e}}class a{constructor(e,t={},r=!1){if(!(e instanceof Node)){console.warn(`There is no valid element given while trying to create a plugin instance for "${r}".`);return}this.el=e,this.$emitter=new o(this.el),this._pluginName=this._getPluginName(r),this.options=this._mergeOptions(t),this._initialized=!1,this._registerInstance(),this._init()}init(){console.warn(`The "init" method for the plugin "${this._pluginName}" is not defined. The plugin will not be initialized.`)}update(){}destroy(){}_init(){this._initialized||(this.init(),this._initialized=!0)}_update(){this._initialized&&this.update()}_mergeOptions(e){let t=[this.constructor.options,this.options,e];return t.push(this._getConfigFromDataAttribute()),t.push(this._getOptionsFromDataAttribute()),s().all(t.filter(e=>e instanceof Object&&!(e instanceof Array)).map(e=>e||{}))}_getConfigFromDataAttribute(){let e={};if("function"!=typeof this.el.getAttribute)return e;let t=n.A.toDashCase(this._pluginName),r=this.el.getAttribute(`data-${t}-config`);return r?window.PluginConfigManager.get(this._pluginName,r):e}_getOptionsFromDataAttribute(){let e={};if("function"!=typeof this.el.getAttribute)return e;let t=n.A.toDashCase(this._pluginName),r=this.el.getAttribute(`data-${t}-options`);if(r)try{return JSON.parse(r)}catch(e){console.error(`The data attribute "data-${t}-options" could not be parsed to json: ${e.message}`)}return e}_registerInstance(){window.PluginManager.getPluginInstancesFromElement(this.el).set(this._pluginName,this),window.PluginManager.getPlugin(this._pluginName,!1).get("instances").push(this)}_getPluginName(e){return e||(e=this.constructor.name),e}}},795(e,t,r){r.d(t,{A:()=>s});var i=r(707);class s{static isNode(e){return"object"==typeof e&&null!==e&&(e===document||e===window||e instanceof Node)}static hasAttribute(e,t){if(!s.isNode(e))throw Error("The element must be a valid HTML Node!");return"function"==typeof e.hasAttribute&&e.hasAttribute(t)}static getAttribute(e,t){let r=!(arguments.length>2)||void 0===arguments[2]||arguments[2];if(r&&!1===s.hasAttribute(e,t))throw Error(`The required property "${t}" does not exist!`);if("function"!=typeof e.getAttribute){if(r)throw Error("This node doesn't support the getAttribute function!");return}return e.getAttribute(t)}static getDataAttribute(e,t){let r=!(arguments.length>2)||void 0===arguments[2]||arguments[2],n=t.replace(/^data(|-)/,""),o=i.A.toLowerCamelCase(n,"-");if(!s.isNode(e)){if(r)throw Error("The passed node is not a valid HTML Node!");return}if(void 0===e.dataset){if(r)throw Error("This node doesn't support the dataset attribute!");return}let a=e.dataset[o];if(void 0===a){if(r)throw Error(`The required data attribute "${t}" does not exist on ${e}!`);return a}return i.A.parsePrimitive(a)}static querySelector(e,t){let r=!(arguments.length>2)||void 0===arguments[2]||arguments[2];if(r&&!s.isNode(e))throw Error("The parent node is not a valid HTML Node!");let i=e.querySelector(t)||!1;if(r&&!1===i)throw Error(`The required element "${t}" does not exist in parent node!`);return i}static querySelectorAll(e,t){let r=!(arguments.length>2)||void 0===arguments[2]||arguments[2];if(r&&!s.isNode(e))throw Error("The parent node is not a valid HTML Node!");let i=e.querySelectorAll(t);if(0===i.length&&(i=!1),r&&!1===i)throw Error(`At least one item of "${t}" must exist in parent node!`);return i}static getFocusableElements(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:document.body,t=`
2            input:not([tabindex^="-"]):not([disabled]):not([type="hidden"]),
3            select:not([tabindex^="-"]):not([disabled]),
4            textarea:not([tabindex^="-"]):not([disabled]),
5            button:not([tabindex^="-"]):not([disabled]),
6            a[href]:not([tabindex^="-"]):not([disabled]),
7            [tabindex]:not([tabindex^="-"]):not([disabled])
8        `;return e.querySelectorAll(t)}static getFirstFocusableElement(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:document.body;return this.getFocusableElements(e)[0]}static getLastFocusableElement(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:document,t=this.getFocusableElements(e);return t[t.length-1]}}}}]);

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