1(()=>{"use strict";let e="loader",t={BEFORE:"before",INNER:"inner"};class s{constructor(e,s=t.BEFORE){this.parent=e instanceof Element?e:document.body.querySelector(e),this.position=s}create(){if(!this.exists()){if(this.position===t.INNER){this._previousHTML=this.parent.innerHTML,this.parent.innerHTML=s.getTemplate();return}this.parent.insertAdjacentHTML(this._getPosition(),s.getTemplate())}}remove(){if(this.position===t.INNER){this.parent.innerHTML=this._previousHTML;return}this.parent.querySelectorAll(`.${e}`).forEach(e=>e.remove())}exists(){return this.parent.querySelectorAll(`.${e}`).length>0}_getPosition(){return this.position===t.BEFORE?"afterbegin":"beforeend"}static getTemplate(){return`<div class="${e}" role="status"> 2 <span class="visually-hidden">Loading...</span> 3 </div>`}static SELECTOR_CLASS(){return e}}let i="element-loader-backdrop";class o extends s{static create(e){e.classList.add("has-element-loader"),o.exists(e)||(o.appendLoader(e),setTimeout(()=>{let t=e.querySelector(`.${i}`);t&&t.classList.add("element-loader-backdrop-open")},1))}static remove(e){e.classList.remove("has-element-loader");let t=e.querySelector(`.${i}`);t&&t.remove()}static exists(e){return e.querySelectorAll(`.${i}`).length>0}static getTemplate(){return` 4 <div class="${i}"> 5 <div class="loader" role="status"> 6 <span class="visually-hidden">Loading...</span> 7 </div> 8 </div> 9 `}static appendLoader(e){e.insertAdjacentHTML("beforeend",o.getTemplate())}}class n{static #e=this.key="compare-widget-added-products";static #t=this.maximumCompareProducts=4;static getAddedProductsList(){let e;try{e=JSON.parse(window.localStorage.getItem(this.key))||[]}catch{this.clear(),e={}}return this._checkCompareProductStorage(e)?e:(this.clear(),{})}static add(e){let t=this.getAddedProductsList(),s=t.length;return document.$emitter.publish("beforeAddProductCompare",{productCount:s}),!(s+1>this.maximumCompareProducts)&&(t.push(e),this.persist(t),!0)}static remove(e){let t=this.getAddedProductsList(),s=t.indexOf(e);return -1!==s&&(t.splice(s,1),this.persist(t),!0)}static persist(e){window.localStorage.setItem(this.key,JSON.stringify(e)),document.$emitter.publish("changedProductCompare",{products:e})}static clear(){window.localStorage.removeItem(this.key)}static _checkCompareProductStorage(e){return e.length<=this.maximumCompareProducts}}class r 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 e=document.querySelector(".btn-show-differences");e.addEventListener("change",()=>{e.checked?document.querySelectorAll("tbody#specification tr.property:not(:first-child)").forEach(e=>{let t=Array.from(e.querySelectorAll("td.properties-value")).map(e=>e.textContent.trim());t.every(e=>e===t[0])&&(e.style.display="none")}):document.querySelectorAll("tbody#specification tr.property").forEach(e=>{e.style.display="table-row"})})}insertStoredContent(){this.fetch()}fetch(){let e=new FormData;for(let t of n.getAddedProductsList())e.append("productIds[]",t);o.create(this.el),fetch(window.router["frontend.compare.content"],{method:"POST",body:e}).then(e=>e.text()).then(e=>{o.remove(this.el),this.renderCompareProducts(e),this.$emitter.publish("insertStoredContent",{response:e})})}renderCompareProducts(e){this.el.querySelector(".compare-product-content").innerHTML=e,window.PluginManager.initializePlugins()}_registerEvents(){document.$emitter.subscribe("removeCompareProduct",e=>{let t=this.el.querySelector("table"),s=t.rows;if(2===t.querySelectorAll("thead tr td").length){t.style.display="none",n.clear(),this.insertStoredContent();return}for(let t=0;t<s.length;t+=1)try{s[t].deleteCell(e.detail.product.productRow)}catch(e){}}),this._clearBtn.addEventListener("click",()=>{n.clear(),this.fetch()}),this._printBtn.addEventListener("click",()=>{window.print()})}}class a extends window.PluginBaseClass{static #e=this.options={isAddedToCompareClass:"is-added-to-compare"};
9init(){this.REMOVE_COMPARE_PRODUCT_EVENT="removeCompareProduct",this._checkAddedProduct(),this._registerEvents()}_isAddedProduct(e){return n.getAddedProductsList().indexOf(e)>-1}_checkAddedProduct(){let{productId:e,addedText:t,isAddedToCompareClass:s}=this.options;this._isAddedProduct(e)&&t&&(this._toggleText(this.el,t),this.el.classList.add(s))}_toggleText(e,t){if(this.options.showIconOnly)return;let s=e.querySelector(".compare-button-text");if(s){s.textContent=t;return}e.textContent=t}_registerCompareButtonSelection(){let e=this.el,{isAddedToCompareClass:t,productId:s}=this.options;e.addEventListener("click",()=>{try{e.classList.contains(t)?(this._handleBeforeRemove(),n.remove(s)):n.add(s)&&this._handleBeforeAdd()}catch(e){n.clear()}})}_handleBeforeRemove(){let{defaultText:e,isAddedToCompareClass:t,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,e),this.el.classList.remove(t)),document.$emitter.publish(this.REMOVE_COMPARE_PRODUCT_EVENT,{product:i})}_handleBeforeAdd(){let{addedText:e,isAddedToCompareClass:t}=this.options;this._toggleText(this.el,e),this.el.classList.add(t)}_registerEvents(){this._registerCompareButtonSelection();let{productId:e,isAddedToCompareClass:t,defaultText:s}=this.options;document.$emitter.subscribe(this.REMOVE_COMPARE_PRODUCT_EVENT,i=>{i.detail.product.productId===e&&(this._toggleText(this.el,s),this.el.classList.remove(t))})}}class l{constructor(e=document){this._el=e,e.$emitter=this,this._listeners=[]}publish(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},s=arguments.length>2&&void 0!==arguments[2]&&arguments[2],i=new CustomEvent(e,{detail:t,cancelable:s});return this.el.dispatchEvent(i),i}subscribe(e,t){let s=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},i=this,o=e.split("."),n=s.scope?t.bind(s.scope):t;if(s.once&&!0===s.once){let t=n;n=function(s){i.unsubscribe(e),t(s)}}return this.el.addEventListener(o[0],n),this.listeners.push({splitEventName:o,opts:s,cb:n}),!0}unsubscribe(e){let t=e.split(".");return this.listeners=this.listeners.reduce((e,s)=>([...s.splitEventName].sort().toString()===t.sort().toString()?this.el.removeEventListener(s.splitEventName[0],s.cb):e.push(s),e),[]),!0}reset(){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}}let d="js-offcanvas-singleton";class c{constructor(){this.$emitter=new l}open(e,t,s,i,o,n,r){this._removeExistingOffCanvas();let a=this._createOffCanvas(s,n,r,i);this.setContent(e,o),this._openOffcanvas(a,t)}setContent(e,t){let s=this.getOffCanvas();s[0]&&(s[0].innerHTML=e,this._registerEvents(t),this._setAriaAttrs())}setAdditionalClassName(e){this.getOffCanvas()[0].classList.add(e)}getOffCanvas(){return document.querySelectorAll(`.${d}`)}close(e){let t=this.getOffCanvas();t.forEach(e=>{bootstrap.Offcanvas.getInstance(e).hide()}),setTimeout(()=>{this.$emitter.publish("onCloseOffcanvas",{offCanvasContent:t})},e)}goBackInHistory(){window.history.back()}exists(){return this.getOffCanvas().length>0}_openOffcanvas(e,t){window.focusHandler.saveFocusState("offcanvas"),c.bsOffcanvas.show(),window.history.pushState("offcanvas-open",""),"function"==typeof t&&t()}_registerEvents(e){let t=this.getOffCanvas();t.forEach(s=>{let i=()=>{setTimeout(()=>{s.remove(),window.focusHandler.resumeFocusState("offcanvas"),this.$emitter.publish("onCloseOffcanvas",{offCanvasContent:t})},e),s.removeEventListener("hide.bs.offcanvas",i)};s.addEventListener("hide.bs.offcanvas",i)}),window.addEventListener("popstate",this.close.bind(this,e),{once:!0}),document.querySelectorAll(".js-offcanvas-close").forEach(t=>t.addEventListener("click",this.close.bind(this,e)))}_setAriaAttrs(){let e=this.getOffCanvas()[0],t="off-canvas-headline",s=e.querySelector(`[data-id="${t}"]`);s&&!e.hasAttribute("aria-labelledby")&&(s.setAttribute("id",t),e.setAttribute("aria-labelledby",t))}_removeExistingOffCanvas(){return c.bsOffcanvas=null,this.getOffCanvas().forEac
9h(e=>e.remove())}_getPositionClass(e){return"left"===e?"offcanvas-start":"right"===e?"offcanvas-end":`offcanvas-${e}`}_createOffCanvas(e,t,s,i){let o=document.createElement("div");if(o.classList.add("offcanvas",d),o.classList.add(this._getPositionClass(e)),o.setAttribute("tabindex","-1"),!0===t&&o.classList.add("is-fullwidth"),s){let e=typeof s;if("string"===e)o.classList.add(s);else if(Array.isArray(s))s.forEach(e=>{o.classList.add(e)});else throw Error(`The type "${e}" is not supported. Please pass an array or a string.`)}return document.body.appendChild(o),c.bsOffcanvas=new bootstrap.Offcanvas(o,{backdrop:!1!==i||"static"}),o}}let h=Object.freeze(new c);class u{static open(e){let t=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],o=arguments.length>4&&void 0!==arguments[4]?arguments[4]:350,n=arguments.length>5&&void 0!==arguments[5]&&arguments[5],r=arguments.length>6&&void 0!==arguments[6]?arguments[6]:"";h.open(e,t,s,i,o,n,r)}static setContent(e){let t=!(arguments.length>1)||void 0===arguments[1]||arguments[1],s=arguments.length>2&&void 0!==arguments[2]?arguments[2]:350;h.setContent(e,t,s)}static setAdditionalClassName(e){h.setAdditionalClassName(e)}static close(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:350;h.close(e)}static exists(){return h.exists()}static getOffCanvas(){return h.getOffCanvas()}static REMOVE_OFF_CANVAS_DELAY(){return 350}}class p extends u{static open(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0],t=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",o=!(arguments.length>4)||void 0===arguments[4]||arguments[4],n=arguments.length>5&&void 0!==arguments[5]?arguments[5]:u.REMOVE_OFF_CANVAS_DELAY(),r=arguments.length>6&&void 0!==arguments[6]&&arguments[6],a=arguments.length>7&&void 0!==arguments[7]?arguments[7]:"";if(!e)throw Error("A url must be given!");h._removeExistingOffCanvas();let l=h._createOffCanvas(i,r,a,o);this.setContent(e,t,s,o,n),h._openOffcanvas(l)}static setContent(e,t,i,o,n){super.setContent(`<div class="offcanvas-body">${s.getTemplate()}</div>`,o,n);let r=e=>{super.setContent(e,o,n),"function"==typeof i&&i(e)};t?fetch(e,{method:"POST",body:t instanceof FormData?t:JSON.stringify(t),headers:{"X-Requested-With":"XMLHttpRequest"}}).then(e=>e.text()).then(e=>p.executeCallback(r,e)):fetch(e,{headers:{"X-Requested-With":"XMLHttpRequest"}}).then(e=>e.text()).then(e=>p.executeCallback(r,e))}static executeCallback(e,t){"function"==typeof e&&e(t),window.PluginManager.initializePlugins()}}class m{static isTouchDevice(){return"ontouchstart"in document.documentElement}static isIOSDevice(){return m.isIPhoneDevice()||m.isIPadDevice()}static isNativeWindowsBrowser(){return m.isIEBrowser()||m.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":m.isTouchDevice(),"is-ios":m.isIOSDevice(),"is-native-windows":m.isNativeWindowsBrowser(),"is-iphone":m.isIPhoneDevice(),"is-ipad":m.isIPadDevice(),"is-ie":m.isIEBrowser(),"is-edge":m.isEdgeBrowser()}}}let f="modal-backdrop",v="modal-backdrop-open",g="no-scroll",_={ON_CLICK:"backdrop/onclick"};class b{constructor(){return b.instance||(b.instance=this),b.instance}create(e){this._removeExistingBackdrops(),document.body.insertAdjacentHTML("beforeend",this._getTemplate());let t=document.body.lastChild;document.documentElement.classList.add(g),setTimeout(function(){t.classList.add(v),"function"==typeof e&&e()},75),this._dispatchEvents()}remove(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:350;this._getBackdrops().forEach(e=>e.classList.remove(v)),setTimeout(this._removeExistingBackdrops.bind(this),e),document.documentElement.classList.remove(g)}
9_dispatchEvents(){let e=m.isTouchDevice()?"touchstart":"click";document.addEventListener(e,function(e){e.target.classList.contains(f)&&document.dispatchEvent(new CustomEvent(_.ON_CLICK))})}_getBackdrops(){return document.querySelectorAll(`.${f}`)}_removeExistingBackdrops(){!1!==this._exists()&&this._getBackdrops().forEach(e=>e.remove())}_exists(){return document.querySelectorAll(`.${f}`).length>0}_getTemplate(){return`<div class="${f}"></div>`}}Object.freeze(new b);let E="js-pseudo-modal",C="js-pseudo-modal-template-root-element";class y{constructor(e,t=!0,s=".js-pseudo-modal-template",i=".js-pseudo-modal-template-content-element",o=".js-pseudo-modal-template-title-element"){this._content=e,this._useBackdrop=t,this._templateSelector=s,this._templateContentSelector=i,this._templateTitleSelector=o}open(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:350;this._hideExistingModal(),this._create(),setTimeout(this._open.bind(this,e),t)}close(){let e=this.getModal();this._modalInstance=bootstrap.Modal.getInstance(e),this._modalInstance.hide()}getModal(){return this._modal||this._create(),this._modal}updatePosition(){this._modalInstance.handleUpdate()}updateContent(e,t){this._content=e,this._setModalContent(e),this.updatePosition(),"function"==typeof t&&t.bind(this)()}_hideExistingModal(){try{let e=document.querySelector(`.${E} .modal`);if(!e)return;let t=bootstrap.Modal.getInstance(e);if(!t)return;t.hide()}catch(e){console.warn(`[PseudoModalUtil] Unable to hide existing pseudo modal before opening pseudo modal: ${e.message}`)}}_open(e){this.getModal(),this._modal.addEventListener("hidden.bs.modal",this._modalWrapper.remove),this._modal.addEventListener("shown.bs.modal",e),this._modal.addEventListener("hide.bs.modal",()=>{document.activeElement instanceof HTMLElement&&document.activeElement.blur()}),this._modalInstance.show()}_create(){this._modalMarkupEl=document.querySelector(this._templateSelector),this._createModalWrapper(),this._modalWrapper.innerHTML=this._content,this._modal=this._createModalMarkup(),this._modalInstance=new bootstrap.Modal(this._modal,{backdrop:this._useBackdrop}),document.body.insertAdjacentElement("beforeend",this._modalWrapper)}_createModalWrapper(){this._modalWrapper=document.querySelector(`.${E}`),this._modalWrapper||(this._modalWrapper=document.createElement("div"),this._modalWrapper.classList.add(E))}_createModalMarkup(){let e=this._modalWrapper.querySelector(".modal");if(e)return e;let t=this._modalWrapper.innerHTML;return this._modalWrapper.innerHTML=this._modalMarkupEl.innerHTML,this._setModalContent(t),this._modalWrapper.querySelector(".modal")}_setModalTitle(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";try{this._modalWrapper.querySelector(this._templateTitleSelector).innerHTML=e}catch(e){}}_setModalContent(e){let t=this._modalWrapper.querySelector(this._templateContentSelector);t.innerHTML=e;let s=t.querySelector(`.${C}`);if(s){this._modalWrapper.querySelector(`.${C}`).replaceChildren(s);return}try{let e=t.querySelector(this._templateTitleSelector);e&&(this._setModalTitle(e.innerHTML),e.parentNode.removeChild(e))}catch(e){}}}class w extends window.PluginBaseClass{static #e=this.options={buttonSelector:".js-compare-float-button"};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(n.getAddedProductsList()),this._addBodyPadding(),this._registerEvents()}_updateButtonCounter(e){let t=e.length;this._badge.innerText=t,0===t?this._button.classList.remove("is-visible"):this._button.classList.contains("is-visible")||this._button.classList.add("is-visible")}_registerEvents(){let e="ontouchstart"in document.documentElement?"touchstart":"click";this._button&&this._button.addEventListener(e,e=>{e.preventDefault(),this._openOffcanvas(),this.$emitter.publish("onClickCompareFloatButton")}),document.$emitter.subscribe("beforeAddProductCompare",e=>
9{let{productCount:t}=e.detail;t>=n.maximumCompareProducts&&new y(this.options.maximumNumberCompareProductsText).open()}),document.$emitter.subscribe("changedProductCompare",e=>{this._updateButtonCounter(e.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(${this._defaultPadding} + ${document.body.style.paddingBottom||"0px"})`}_openOffcanvas(){let e=new FormData;for(let t of n.getAddedProductsList())e.append("productIds[]",t);p.open(window.router["frontend.compare.offcanvas"],e,e=>{this.$emitter.publish("insertStoredContent",{response:e})})}}window.PluginManager.register("AddToCompareButton",a,"[data-add-to-compare-button]"),window.PluginManager.register("CompareWidget",r,"[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.