1(()=>{"use strict";class t{static iterate(t,e){if(t instanceof Map||Array.isArray(t))return t.forEach(e);if(t instanceof FormData){for(var s of t.entries())e(s[1],s[0]);return}if(t instanceof NodeList)return t.forEach(e);if(t instanceof HTMLCollection)return Array.from(t).forEach(e);if(t instanceof Object)return Object.keys(t).forEach(s=>{e(t[s],s)});throw Error("The element type ".concat(typeof t," is not iterable!"))}}let e="loader",s={BEFORE:"before",INNER:"inner"};class i{create(){if(!this.exists()){if(this.position===s.INNER){this.parent.innerHTML=i.getTemplate();return}this.parent.insertAdjacentHTML(this._getPosition(),i.getTemplate())}}remove(){let s=this.parent.querySelectorAll(".".concat(e));t.iterate(s,t=>t.remove())}exists(){return this.parent.querySelectorAll(".".concat(e)).length>0}_getPosition(){return this.position===s.BEFORE?"afterbegin":"beforeend"}static getTemplate(){return'<div class="'.concat(e,'" role="status">\n <span class="').concat("visually-hidden",'">Loading...</span>\n </div>')}static SELECTOR_CLASS(){return e}constructor(t,e=s.BEFORE){this.parent=t instanceof Element?t:document.body.querySelector(t),this.position=e}}let r="element-loader-backdrop";class o extends i{static create(t){t.classList.add("has-element-loader"),o.exists(t)||(o.appendLoader(t),setTimeout(()=>{let e=t.querySelector(".".concat(r));e&&e.classList.add("element-loader-backdrop-open")},1))}static remove(t){t.classList.remove("has-element-loader");let e=t.querySelector(".".concat(r));e&&e.remove()}static exists(t){return t.querySelectorAll(".".concat(r)).length>0}static getTemplate(){return'\n <div class="'.concat(r,'">\n <div class="loader" role="status">\n <span class="').concat("visually-hidden",'">Loading...</span>\n </div>\n </div>\n ')}static appendLoader(t){t.insertAdjacentHTML("beforeend",o.getTemplate())}}class n{static getAddedProductsList(){let t;try{t=JSON.parse(window.localStorage.getItem(this.key))||[]}catch(e){this.clear(),t={}}return this._checkCompareProductStorage(t)?t:(this.clear(),{})}static add(t){let e=this.getAddedProductsList(),s=e.length;return document.$emitter.publish("beforeAddProductCompare",{productCount:s}),!(s+1>this.maximumCompareProducts)&&(e.push(t),this.persist(e),!0)}static remove(t){let e=this.getAddedProductsList(),s=e.indexOf(t);return -1!==s&&(e.splice(s,1),this.persist(e),!0)}static persist(t){window.localStorage.setItem(this.key,JSON.stringify(t)),document.$emitter.publish("changedProductCompare",{products:t})}static clear(){window.localStorage.removeItem(this.key)}static _checkCompareProductStorage(t){return t.length<=this.maximumCompareProducts}}n.key="compare-widget-added-products",n.maximumCompareProducts=4;let a=n;class l extends window.PluginBaseClass{init(){this._clearBtn=this.el.querySelector(".btn-clear"),this._printBtn=this.el.querySelector(".btn-printer"),this.registerShowDifferencesBtnEvent(),this.insertStoredContent(),this._registerEvents()}registerShowDifferencesBtnEvent(){let t=document.querySelector(".btn-show-differences");t.addEventListener("change",()=>{t.checked?document.querySelectorAll("tbody#specification tr.property:not(:first-child)").forEach(t=>{let e=Array.from(t.querySelectorAll("td.properties-value")).map(t=>t.textContent.trim());e.every(t=>t===e[0])&&(t.style.display="none")}):document.querySelectorAll("tbody#specification tr.property").forEach(t=>{t.style.display="table-row"})})}insertStoredContent(){this.fetch()}fetch(){let t={};t.productIds=a.getAddedProductsList(),o.create(this.el),fetch(window.router["frontend.compare.content"],{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(t)}).then(t=>t.text()).then(t=>{o.remove(this.el),this.renderCompareProducts(t),this.$emitter.publish("insertStoredContent",{response:t})})}renderCompareProducts(t){this.el.querySelector(".compare-product-content").innerHTML=t,window.PluginManager.initializePlugins()}_registerEvents(){document.$emitter.subscribe("removeCompareProduct",t=>{let e=this.el.querySelector("table"),s=e.rows;if(2===e.querySelectorAll("thead tr td").length){e.style.display="none",a.clear(),this.insertStoredContent();return}for(let e=0;e<s.length;e+=1)try{s[e].deleteCell(t.detail.product.productRow)}catch(t){}}),this._clearBtn.addEventListener("click",()=>{a.clear(),this.fetch()}),this._printBtn.addEventListener("click",()=>{window.print()})}}class d extends window.PluginBaseClass{init(){this.REMOVE_COMPARE_PRODUCT_EVENT="removeCompareProduct",this._checkAddedProduct(),this._registerEvents()}_isAddedProduct(t){return a.getAddedProductsList().indexOf(t)>-1}_checkAddedProduct(){let{productId:t,addedText:e,isAddedToCompareClass:s}=this.options;this._isAddedProduct(t)&&e&&(this._toggleText(this.el,e),this.el.classList.add(s))}_toggleText(t,e){if(this.options.showIconOnly)return;let s=t.querySelector(".compare-button-text");if(s){s.textContent=e;return}t.textContent=e}_registerCompareButtonSelection(){let t=this.el,{isAddedToCompareClass:e,productId:s}=this.options;t.addEventListener("click",()=>{try{t.classList.contains(e)?(this._handleBeforeRemove(),a.remove(s)):a.add(s)&&this._handleBeforeAdd()}catch(t){a.clear()}})}_handleBeforeRemove(){let{defaultText:t,isAddedToCompareClass:e,productId:s}=this.options,i={productId:s};this.el.closest("td")?i.productRow=this.el.closest("td").cellIndex:this.el.closest(".offcanvas-comparison-item")?this.el.closest(".offcanvas-comparison-item").style.display="none":(this._toggleText(this.el,t),this.el.classList.remove(e)),document.$emitter.publish(this.REMOVE_COMPARE_PRODUCT_EVENT,{product:i})}_handleBeforeAdd(){let{addedText:t,isAddedToCompareClass:e}=this.options;this._toggleText(this.el,t),this.el.classList.add(e)}_registerEvents(){this._registerCompareButtonSelection();let{productId:t,isAddedToCompareClass:e,defaultText:s}=this.options;document.$emitter.subscribe(this.REMOVE_COMPARE_PRODUCT_EVENT,i=>{i.detail.product.productId===t&&(this._toggleText(this.el,s),this.el.classList.remove(e))})}}d.options={isAddedToCompareClass:"is-added-to-compare"};class c{static isTouchDevice(){return"ontouchstart"in document.documentElement}static isIOSDevice(){return c.isIPhoneDevice()||c.isIPadDevice()}static isNativeWindowsBrowser(){return c.isIEBrowser()||c.isEdgeBrowser()}static isIPhoneDevice(){return!!navigator.userAgent.match(/iPhone/i)}static isIPadDevice(){return!!navigator.userAgent.match(/iPad/i)}static isIEBrowser(){return -1!==navigator.userAgent.toLowerCase().indexOf("msie")||!!navigator.userAgent.match(/Trident.*rv:\d+\./)}static isEdgeBrowser(){return!!navigator.userAgent.match(/Edge\/\d+/i)}static getList(){return{"is-touch":c.isTouchDevice(),"is-ios":c.isIOSDevice(),"is-native-windows":c.isNativeWindowsBrowser(),"is-iphone":c.isIPhoneDevice(),"is-ipad":c.isIPadDevice(),"is-ie"
1:c.isIEBrowser(),"is-edge":c.isEdgeBrowser()}}}class h{publish(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},s=arguments.length>2&&void 0!==arguments[2]&&arguments[2],i=new CustomEvent(t,{detail:e,cancelable:s});return this.el.dispatchEvent(i),i}subscribe(t,e){let s=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},i=this,r=t.split("."),o=s.scope?e.bind(s.scope):e;if(s.once&&!0===s.once){let e=o;o=function(s){i.unsubscribe(t),e(s)}}return this.el.addEventListener(r[0],o),this.listeners.push({splitEventName:r,opts:s,cb:o}),!0}unsubscribe(t){let e=t.split(".");return this.listeners=this.listeners.reduce((t,s)=>([...s.splitEventName].sort().toString()===e.sort().toString()?this.el.removeEventListener(s.splitEventName[0],s.cb):t.push(s),t),[]),!0}reset(){return this.listeners.forEach(t=>{this.el.removeEventListener(t.splitEventName[0],t.cb)}),this.listeners=[],!0}get el(){return this._el}set el(t){this._el=t}get listeners(){return this._listeners}set listeners(t){this._listeners=t}constructor(t=document){this._el=t,t.$emitter=this,this._listeners=[]}}let u="offcanvas";class p{open(t,e,s,i,r,o,n){this._removeExistingOffCanvas();let a=this._createOffCanvas(s,o,n,i);this.setContent(t,i,r),this._openOffcanvas(a,e)}setContent(t,e){let s=this.getOffCanvas();s[0]&&(s[0].innerHTML=t,this._registerEvents(e))}setAdditionalClassName(t){this.getOffCanvas()[0].classList.add(t)}getOffCanvas(){return document.querySelectorAll(".".concat(u))}close(e){let s=this.getOffCanvas();t.iterate(s,t=>{bootstrap.Offcanvas.getInstance(t).hide()}),setTimeout(()=>{this.$emitter.publish("onCloseOffcanvas",{offCanvasContent:s})},e)}goBackInHistory(){window.history.back()}exists(){return this.getOffCanvas().length>0}_openOffcanvas(t,e){p.bsOffcanvas.show(),window.history.pushState("offcanvas-open",""),"function"==typeof e&&e()}_registerEvents(e){let s=c.isTouchDevice()?"touchend":"click",i=this.getOffCanvas();t.iterate(i,t=>{let s=()=>{setTimeout(()=>{t.remove(),this.$emitter.publish("onCloseOffcanvas",{offCanvasContent:i})},e),t.removeEventListener("hide.bs.offcanvas",s)};t.addEventListener("hide.bs.offcanvas",s)}),window.addEventListener("popstate",this.close.bind(this,e),{once:!0});let r=document.querySelectorAll(".".concat("js-offcanvas-close"));t.iterate(r,t=>t.addEventListener(s,this.close.bind(this,e)))}_removeExistingOffCanvas(){p.bsOffcanvas=null;let e=this.getOffCanvas();return t.iterate(e,t=>t.remove())}_getPositionClass(t){return"left"===t?"offcanvas-start":"right"===t?"offcanvas-end":"offcanvas-".concat(t)}_createOffCanvas(t,e,s,i){let r=document.createElement("div");if(r.classList.add(u),r.classList.add(this._getPositionClass(t)),!0===e&&r.classList.add("is-fullwidth"),s){let t=typeof s;if("string"===t)r.classList.add(s);else if(Array.isArray(s))s.forEach(t=>{r.classList.add(t)});else throw Error('The type "'.concat(t,'" is not supported. Please pass an array or a string.'))}return document.body.appendChild(r),p.bsOffcanvas=new bootstrap.Offcanvas(r,{backdrop:!1!==i||"static"}),r}constructor(){this.$emitter=new h}}let m=Object.freeze(new p);class f{static open(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,s=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"left",i=!(arguments.length>3)||void 0===arguments[3]||arguments[3],r=arguments.length>4&&void 0!==arguments[4]?arguments[4]:350,o=arguments.length>5&&void 0!==arguments[5]&&arguments[5],n=arguments.length>6&&void 0!==arguments[6]?arguments[6]:"";m.open(t,e,s,i,r,o,n)}static setContent(t){let e=!(arguments.length>1)||void 0===arguments[1]||arguments[1],s=arguments.length>2&&void 0!==arguments[2]?arguments[2]:350;m.setContent(t,e,s)}static setAdditionalClassName(t){m.setAdditionalClassName(t)}static close(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:350;m.close(t)}static exists(){return m.exists()}static getOffCanvas(){return m.getOffCanvas()}static REMOVE_OFF_CANVAS_DELAY(){return 350}}class g{get(t,e){let s=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"application/json",i=this._createPreparedRequest("GET",t,s);return this._sendRequest(i,null,e)}post(t,e,s){let i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"application/json";i=this._getContentType(e,i);let r=this._createPreparedRequest("POST",t,i);return this._sendRequest(r,e,s)}delete(t,e,s){let i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"application/json";i=this._getContentType(e,i);let r=this._createPreparedRequest("DELETE",t,i);return this._sendRequest(r,e,s)}patch(t,e,s){let i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"application/json";i=this._getContentType(e,i);let r=this._createPreparedRequest("PATCH",t,i);return this._sendRequest(r,e,s)}
1abort(){if(this._request)return this._request.abort()}_registerOnLoaded(t,e){e&&t.addEventListener("loadend",()=>{e(t.responseText,t)})}_sendRequest(t,e,s){return this._registerOnLoaded(t,s),t.send(e),t}_getContentType(t,e){return t instanceof FormData&&(e=!1),e}_createPreparedRequest(t,e,s){return this._request=new XMLHttpRequest,this._request.open(t,e),this._request.setRequestHeader("X-Requested-With","XMLHttpRequest"),s&&this._request.setRequestHeader("Content-type",s),this._request}constructor(){this._request=null}}let v=null;class _ extends f{static open(){let t=arguments.length>0&&void 0!==arguments[0]&&arguments[0],e=arguments.length>1&&void 0!==arguments[1]&&arguments[1],s=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"left",r=!(arguments.length>4)||void 0===arguments[4]||arguments[4],o=arguments.length>5&&void 0!==arguments[5]?arguments[5]:f.REMOVE_OFF_CANVAS_DELAY(),n=arguments.length>6&&void 0!==arguments[6]&&arguments[6],a=arguments.length>7&&void 0!==arguments[7]?arguments[7]:"";if(!t)throw Error("A url must be given!");m._removeExistingOffCanvas();let l=m._createOffCanvas(i,n,a,r);this.setContent(t,e,s,r,o),m._openOffcanvas(l)}static setContent(t,e,s,r,o){let n=new g;super.setContent('<div class="offcanvas-body">'.concat(i.getTemplate(),"</div>"),r,o),v&&v.abort();let a=t=>{super.setContent(t,r,o),"function"==typeof s&&s(t)};v=e?n.post(t,e,_.executeCallback.bind(this,a)):n.get(t,_.executeCallback.bind(this,a))}static executeCallback(t,e){"function"==typeof t&&t(e),window.PluginManager.initializePlugins()}}class b{static ucFirst(t){return t.charAt(0).toUpperCase()+t.slice(1)}static lcFirst(t){return t.charAt(0).toLowerCase()+t.slice(1)}static toDashCase(t){return t.replace(/([A-Z])/g,"-$1").replace(/^-/,"").toLowerCase()}static toLowerCamelCase(t,e){let s=b.toUpperCamelCase(t,e);return b.lcFirst(s)}static toUpperCamelCase(t,e){return e?t.split(e).map(t=>b.ucFirst(t.toLowerCase())).join(""):b.ucFirst(t.toLowerCase())}static parsePrimitive(t){try{return/^\d+(.|,)\d+$/.test(t)&&(t=t.replace(",",".")),JSON.parse(t)}catch(e){return t.toString()}}}class C{static isNode(t){return"object"==typeof t&&null!==t&&(t===document||t===window||t instanceof Node)}static hasAttribute(t,e){if(!C.isNode(t))throw Error("The element must be a valid HTML Node!");return"function"==typeof t.hasAttribute&&t.hasAttribute(e)}static getAttribute(t,e){let s=!(arguments.length>2)||void 0===arguments[2]||arguments[2];if(s&&!1===C.hasAttribute(t,e))throw Error('The required property "'.concat(e,'" does not exist!'));if("function"!=typeof t.getAttribute){if(s)throw Error("This node doesn't support the getAttribute function!");return}return t.getAttribute(e)}static getDataAttribute(t,e){let s=!(arguments.length>2)||void 0===arguments[2]||arguments[2],i=e.replace(/^data(|-)/,""),r=b.toLowerCamelCase(i,"-");if(!C.isNode(t)){if(s)throw Error("The passed node is not a valid HTML Node!");return}if(void 0===t.dataset){if(s)throw Error("This node doesn't support the dataset attribute!");return}let o=t.dataset[r];if(void 0===o){if(s)throw Error('The required data attribute "'.concat(e,'" does not exist on ').concat(t,"!"));return o}return b.parsePrimitive(o)}static querySelector(t,e){let s=!(arguments.length>2)||void 0===arguments[2]||arguments[2];if(s&&!C.isNode(t))throw Error("The parent node is not a valid HTML Node!");let i=t.querySelector(e)||!1;if(s&&!1===i)throw Error('The required element "'.concat(e,'" does not exist in parent node!'));return i}static querySelectorAll(t,e){let s=!(arguments.length>2)||void 0===arguments[2]||arguments[2];if(s&&!C.isNode(t))throw Error("The parent node is not a valid HTML Node!");let i=t.querySelectorAll(e);if(0===i.length&&(i=!1),s&&!1===i)throw Error('At least one item of "'.concat(e,'" must exist in parent node!'));return i}}let E="js-pseudo-modal";class y{open(t){this._hideExistingModal(),this._create(),this._open(t)}close(){let t=this.getModal();this._modalInstance=bootstrap.Modal.getInstance(t),this._modalInstance.hide()}getModal(){return this._modal||this._create(),this._modal}updatePosition(){this._modalInstance.handleUpdate()}updateContent(t,e){this._content=t,this._setModalContent(t),this.updatePosition(),"function"==typeof e&&e.bind(this)()}_hideExistingModal(){try{let t=C.querySelector(document,".".concat(E," .modal"),!1);if(!t)return;let e=bootstrap.Modal.getInstance(t);if(!e)return;e.hide()}catch(t){console.warn("[PseudoModalUtil] Unable to hide existing pseudo modal before opening pseudo modal: ".concat(t.message))}}_open(t){this.getModal(),this._modal.addEventListener("hidden.bs.modal",this._modalWrapper.remove),this._modal.addEventListener("shown.bs.modal",t),this._modalInstance.show()}_create(){this._modalMarkupEl=C.querySelector(document,this._templateSelector),this._createModalWrapper(),this._modalWrapper.innerHTML=this._content,this._modal=this._createModalMar
1kup(),this._modalInstance=new bootstrap.Modal(this._modal,{backdrop:this._useBackdrop}),document.body.insertAdjacentElement("beforeend",this._modalWrapper)}_createModalWrapper(){this._modalWrapper=C.querySelector(document,".".concat(E),!1),this._modalWrapper||(this._modalWrapper=document.createElement("div"),this._modalWrapper.classList.add(E))}_createModalMarkup(){let t=C.querySelector(this._modalWrapper,".modal",!1);if(t)return t;let e=this._modalWrapper.innerHTML;return this._modalWrapper.innerHTML=this._modalMarkupEl.innerHTML,this._setModalContent(e),C.querySelector(this._modalWrapper,".modal")}_setModalTitle(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";try{C.querySelector(this._modalWrapper,this._templateTitleSelector).innerHTML=t}catch(t){}}_setModalContent(t){let e=C.querySelector(this._modalWrapper,this._templateContentSelector);e.innerHTML=t;try{let t=C.querySelector(e,this._templateTitleSelector);t&&(this._setModalTitle(t.innerHTML),t.parentNode.removeChild(t))}catch(t){}}constructor(t,e=!0,s=".".concat("js-pseudo-modal-template"),i=".".concat("js-pseudo-modal-template-content-element"),r=".".concat("js-pseudo-modal-template-title-element")){this._content=t,this._useBackdrop=e,this._templateSelector=s,this._templateContentSelector=i,this._templateTitleSelector=r}}class w extends window.PluginBaseClass{init(){this._button=this.el.querySelector(this.options.buttonSelector),this._defaultPadding=window.getComputedStyle(this._button).getPropertyValue("bottom"),this._badge=this._button.querySelector(".badge"),this._updateButtonCounter(a.getAddedProductsList()),this._addBodyPadding(),this._registerEvents()}_updateButtonCounter(t){let e=t.length;this._badge.innerText=e,0===e?this._button.classList.remove("is-visible"):this._button.classList.contains("is-visible")||this._button.classList.add("is-visible")}_registerEvents(){let t="ontouchstart"in document.documentElement?"touchstart":"click";this._button&&this._button.addEventListener(t,t=>{t.preventDefault(),this._openOffcanvas(),this.$emitter.publish("onClickCompareFloatButton")}),document.$emitter.subscribe("beforeAddProductCompare",t=>
1{let{productCount:e}=t.detail;e>=a.maximumCompareProducts&&new y(this.options.maximumNumberCompareProductsText).open()}),document.$emitter.subscribe("changedProductCompare",t=>{this._updateButtonCounter(t.detail.products)}),document.addEventListener("scroll",this._debouncedOnScroll,!1),new MutationObserver(this._addBodyPadding.bind(this)).observe(document.body,{attributes:!0,attributeFilter:["style"]})}_addBodyPadding(){this._button.style.bottom="calc(".concat(this._defaultPadding," + ").concat(document.body.style.paddingBottom||"0px",")")}_openOffcanvas(){let t={productIds:a.getAddedProductsList()};_.open(window.router["frontend.compare.offcanvas"],JSON.stringify(t),t=>{this.$emitter.publish("insertStoredContent",{response:t})})}}w.options={buttonSelector:".js-compare-float-button"},window.PluginManager.register("AddToCompareButton",d,"[data-add-to-compare-button]"),window.PluginManager.register("CompareWidget",l,"[data-compare-widget]"),window.PluginManager.register("CompareFloat",w,"[data-compare-float]")})();
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.