(()=>{"use strict";var e={857: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!==n},n="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 r(e,t,n){return e.concat(t).map(function(e){return i(e,n)})}function s(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,n,c){(c=c||{}).arrayMerge=c.arrayMerge||r,c.isMergeableObject=c.isMergeableObject||t,c.cloneUnlessOtherwiseSpecified=i;var l,u,d=Array.isArray(n);return d!==Array.isArray(e)?i(n,c):d?c.arrayMerge(e,n,c):(u={},(l=c).isMergeableObject(e)&&s(e).forEach(function(t){u[t]=i(e[t],l)}),s(n).forEach(function(t){(!o(e,t)||Object.hasOwnProperty.call(e,t)&&Object.propertyIsEnumerable.call(e,t))&&(o(e,t)&&l.isMergeableObject(n[t])?u[t]=(function(e,t){if(!t.customMerge)return a;var n=t.customMerge(e);return"function"==typeof n?n:a})(t,l)(e[t],n[t],l):u[t]=i(n[t],l))}),u)}a.all=function(e,t){if(!Array.isArray(e))throw Error("first argument should be an array");return e.reduce(function(e,n){return a(e,n,t)},{})},e.exports=a}},t={};function n(i){var r=t[i];if(void 0!==r)return r.exports;var s=t[i]={exports:{}};return e[i](s,s.exports,n),s.exports}(()=>{n.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return n.d(t,{a:t}),t}})(),(()=>{n.d=(e,t)=>{for(var i in t)n.o(t,i)&&!n.o(e,i)&&Object.defineProperty(e,i,{enumerable:!0,get:t[i]})}})(),(()=>{n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t)})(),(()=>{var e=n(857),t=n.n(e);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 n=i.toUpperCamelCase(e,t);return i.lcFirst(n)}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()}}}class r{static isNode(e){return"object"==typeof e&&null!==e&&(e===document||e===window||e instanceof Node)}static hasAttribute(e,t){if(!r.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 n=!(arguments.length>2)||void 0===arguments[2]||arguments[2];if(n&&!1===r.hasAttribute(e,t))throw Error('The required property "'.concat(t,'" does not exist!'));if("function"!=typeof e.getAttribute){if(n)throw Error("This node doesn't support the getAttribute function!");return}return e.getAttribute(t)}static getDataAttribute(e,t){let n=!(arguments.length>2)||void 0===arguments[2]||arguments[2],s=t.replace(/^data(|-)/,""),o=i.toLowerCamelCase(s,"-");if(!r.isNode(e)){if(n)throw Error("The passed node is not a valid HTML Node!");return}if(void 0===e.dataset){if(n)throw Error("This node doesn't support the dataset attribute!");return}let a=e.dataset[o];if(void 0===a){if(n)throw Error('The required data attribute "'.concat(t,'" does not exist on ').concat(e,"!"));return a}return i.parsePrimitive(a)}static querySelector(e,t){let n=!(arguments.length>2)||void 0===arguments[2]||arguments[2];if(n&&!r.isNode(e))throw Error("The parent node is not a valid HTML Node!");let i=e.querySelector(t)||!1;if(n&&!1===i)throw Error('The required element "'.concat(t,'" does not exist in parent node!'));return i}static querySelectorAll(e,t){let n=!(arguments.length>2)||void 0===arguments[2]||arguments[2];if(n&&!r.isNode(e))throw Error("The parent node is not a valid HTML Node!");let i=e.querySelectorAll(t);if(0===i.length&&(i=!1),n&&!1===i)throw Error('At least one item of "'.concat(t,'" must exist in parent node!'));return i}}class s{publish(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],i=new CustomEvent(e,{detail:t,cancelable:n});return this.el.dispatchEvent(i),i}subscribe(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},i=this,r=e.split("."),s=n.scope?t.bind(n.scope):t;if(n.once&&!0===n.once){let t=s;s=function(n){i.unsubscribe(e),t(n)}}return this.el.addEventListener(r[0],s),this.listeners.push({splitEventName:r,opts:n,cb:s}),!0}unsubscribe(e){let t=e.split(".");return this.listeners=this.listeners.reduce((e,n)=>([...n.splitEventName].sort().toString()===t.sort().toString()?this.el.removeEventListener(n.splitEventName[0],n.cb):e.push(n),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}constructor(e=document){this._el=e,e.$emitter=this,this._listeners=[]}}class o{init(){throw Error('The "init" method for the plugin "'.concat(this._pluginName,'" is not defined.'))}update(){}_init(){this._initialized||(this.init(),this._initialized=!0)}_update(){this._initialized&&this.update()}_mergeOptions(e){let n=i.toDashCase(this._pluginName),s=r.getDataAttribute(this.el,"data-".concat(n,"-config"),!1),o=r.getAttribute(this.el,"data-".concat(n,"-options"),!1),a=[this.constructor.options,this.options,e];s&&a.push(window.PluginConfigManager.get(this._pluginName,s));try{o&&a.push(JSON.parse(o))}catch(e){throw console.error(this.el),Error('The data attribute "data-'.concat(n,'-options" could not be parsed to json: ').concat(e.message))}return t().all(a.filter(e=>e instanceof Object&&!(e instanceof Array)).map(e=>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}constructor(e,t={},n=!1){if(!r.isNode(e))throw Error("There is no valid element given.");this.el=e,this.$emitter=new s(this.el),this._pluginName=this._getPluginName(n),this.options=this._mergeOptions(t),this._initialized=!1,this._registerInstance(),this._init()}}class a{static iterate(e,t){if(e instanceof Map||Array.isArray(e))return e.forEach(t);if(e instanceof FormData){for(var n of e.entries())t(n[1],n[0]);return}if(e instanceof NodeList)return e.forEach(t);if(e instanceof HTMLCollection)return Array.from(e).forEach(t);if(e instanceof Object)return Object.keys(e).forEach(n=>{t(e[n],n)});throw Error("The element type ".concat(typeof e," is not iterable!"))}}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":c.isIEBrowser(),"is-edge":c.isEdgeBrowser()}}}let l="offcanvas";class u{open(e,t,n,i,r,s,o){this._removeExistingOffCanvas();let a=this._createOffCanvas(n,s,o,i);this.setContent(e,i,r),this._openOffcanvas(a,t)}setContent(e,t){let n=this.getOffCanvas();n[0]&&(n[0].innerHTML=e,this._registerEvents(t))}setAdditionalClassName(e){this.getOffCanvas()[0].classList.add(e)}getOffCanvas(){return document.querySelectorAll(".".concat(l))}close(e){let t=this.getOffCanvas();a.iterate(t,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){u.bsOffcanvas.show(),window.history.pushState("offcanvas-open",""),"function"==typeof t&&t()}_registerEvents(e){let t=c.isTouchDevice()?"touchend":"click",n=this.getOffCanvas();a.iterate(n,t=>{let i=()=>{setTimeout(()=>{t.remove(),this.$emitter.publish("onCloseOffcanvas",{offCanvasContent:n})},e),t.removeEventListener("hide.bs.offcanvas",i)};t.addEventListener("hide.bs.offcanvas",i)}),window.addEventListener("popstate",this.close.bind(this,e),{once:!0});let i=document.querySelectorAll(".".concat("js-offcanvas-close"));a.iterate(i,n=>n.addEventListener(t,this.close.bind(this,e)))}_removeExistingOffCanvas(){u.bsOffcanvas=null;let e=this.getOffCanvas();return a.iterate(e,e=>e.remove())}_getPositionClass(e){return"left"===e?"offcanvas-start":"right"===e?"offcanvas-end":"offcanvas-".concat(e)}_createOffCanvas(e,t,n,i){let r=document.createElement("div");if(r.classList.add(l),r.classList.add(this._getPositionClass(e)),!0===t&&r.classList.add("is-fullwidth"),n){let e=typeof n;if("string"===e)r.classList.add(n);else if(Array.isArray(n))n.forEach(e=>{r.classList.add(e)});else throw Error('The type "'.concat(e,'" is not supported. Please pass an array or a string.'))}return document.body.appendChild(r),u.bsOffcanvas=new bootstrap.Offcanvas(r,{backdrop:!1!==i||"static"}),r}constructor(){this.$emitter=new s}}let d=Object.freeze(new u);class h{static open(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,n=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,s=arguments.length>5&&void 0!==arguments[5]&&arguments[5],o=arguments.length>6&&void 0!==arguments[6]?arguments[6]:"";d.open(e,t,n,i,r,s,o)}static setContent(e){let t=!(arguments.length>1)||void 0===arguments[1]||arguments[1],n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:350;d.setContent(e,t,n)}static setAdditionalClassName(e){d.setAdditionalClassName(e)}static close(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:350;d.close(e)}static exists(){return d.exists()}static getOffCanvas(){return d.getOffCanvas()}static REMOVE_OFF_CANVAS_DELAY(){return 350}}class f{get(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"application/json",i=this._createPreparedRequest("GET",e,n);return this._sendRequest(i,null,t)}post(e,t,n){let i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"application/json";i=this._getContentType(t,i);let r=this._createPreparedRequest("POST",e,i);return this._sendRequest(r,t,n)}delete(e,t,n){let i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"application/json";i=this._getContentType(t,i);let r=this._createPreparedRequest("DELETE",e,i);return this._sendRequest(r,t,n)}patch(e,t,n){let i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"application/json";i=this._getContentType(t,i);let r=this._createPreparedRequest("PATCH",e,i);return this._sendRequest(r,t,n)}abort(){if(this._request)return this._request.abort()}_registerOnLoaded(e,t){t&&e.addEventListener("loadend",()=>{t(e.responseText,e)})}_sendRequest(e,t,n){return this._registerOnLoaded(e,n),e.send(t),e}_getContentType(e,t){return e instanceof FormData&&(t=!1),t}_createPreparedRequest(e,t,n){return this._request=new XMLHttpRequest,this._request.open(e,t),this._request.setRequestHeader("X-Requested-With","XMLHttpRequest"),n&&this._request.setRequestHeader("Content-type",n),this._request}constructor(){this._request=null}}let p="loader",g={BEFORE:"before",INNER:"inner"};class b{create(){if(!this.exists()){if(this.position===g.INNER){this.parent.innerHTML=b.getTemplate();return}this.parent.insertAdjacentHTML(this._getPosition(),b.getTemplate())}}remove(){let e=this.parent.querySelectorAll(".".concat(p));a.iterate(e,e=>e.remove())}exists(){return this.parent.querySelectorAll(".".concat(p)).length>0}_getPosition(){return this.position===g.BEFORE?"afterbegin":"beforeend"}static getTemplate(){return'<div class="'.concat(p,'" role="status">\n                    <span class="').concat("visually-hidden",'">Loading...</span>\n                </div>')}static SELECTOR_CLASS(){return p}constructor(e,t=g.BEFORE){this.parent=e instanceof Element?e:document.body.querySelector(e),this.position=t}}let m=null;class v extends h{static open(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0],t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=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],s=arguments.length>5&&void 0!==arguments[5]?arguments[5]:h.REMOVE_OFF_CANVAS_DELAY(),o=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!");d._removeExistingOffCanvas();let c=d._createOffCanvas(i,o,a,r);this.setContent(e,t,n,r,s),d._openOffcanvas(c)}static setContent(e,t,n,i,r){let s=new f;super.setContent('<div class="offcanvas-body">'.concat(b.getTemplate(),"</div>"),i,r),m&&m.abort();let o=e=>{super.setContent(e,i,r),"function"==typeof n&&n(e)};m=t?s.post(e,t,v.executeCallback.bind(this,o)):s.get(e,v.executeCallback.bind(this,o))}static executeCallback(e,t){"function"==typeof e&&e(t),window.PluginManager.initializePlugins()}}let _="element-loader-backdrop";class w extends b{static create(e){e.classList.add("has-element-loader"),w.exists(e)||(w.appendLoader(e),setTimeout(()=>{let t=e.querySelector(".".concat(_));t&&t.classList.add("element-loader-backdrop-open")},1))}static remove(e){e.classList.remove("has-element-loader");let t=e.querySelector(".".concat(_));t&&t.remove()}static exists(e){return e.querySelectorAll(".".concat(_)).length>0}static getTemplate(){return'\n        <div class="'.concat(_,'">\n            <div class="loader" role="status">\n                <span class="').concat("visually-hidden",'">Loading...</span>\n            </div>\n        </div>\n        ')}static appendLoader(e){e.insertAdjacentHTML("beforeend",w.getTemplate())}}window.router["frontend.cookie.offcanvas"],window.PluginManager.register("BilobaAdFacebookPixel",class extends o{init(){this.cookieEnabledName="biloba-facebook-pixel",this.cookieOptOutName="biloba-facebook-pixel-opt-out",this._registerEvents(),this.initialized=!0}_update(){this.init()}_registerEvents(){var e=this;this.initialized||(window.PluginManager.getPluginInstances("AddToCart").forEach(function(t){t.$emitter.subscribe("beforeFormSubmit",function(t){e._onAddToCart(t)})}),window.PluginManager.getPluginInstances("SearchWidget").forEach(function(t){t.$emitter.subscribe("afterSuggest",function(t){e._registerOnSearch(t)})}),document.$emitter.subscribe("CookieConfiguration_Update",this.handleCookies.bind(this))),e._registerPaymentOptionsEventListener(),e._registerViewManufacturer(),e._registerProductCustomized(),e._registerOnSearch(),e._registerOnContact()}handleCookies(e){let t=e.detail;if(t.hasOwnProperty(this.cookieEnabledName)&&t[this.cookieEnabledName]&&!t[this.cookieOptOutName]){window.fbq=null,function(e,t,n,i,r,s,o){e.fbq||(r=e.fbq=function(){r.callMethod?r.callMethod.apply(r,arguments):r.queue.push(arguments)},e._fbq||(e._fbq=r),r.push=r,r.loaded=!0,r.version="2.0",r.queue=[],(s=t.createElement(n)).async=!0,s.src=i,(o=t.getElementsByTagName(n)[0]).parentNode.insertBefore(s,o))}(window,document,"script","https://connect.facebook.net/en_US/fbevents.js",void 0,void 0,void 0),setTimeout(function(){window.fbq&&(window.fbq("init",window.facebookPixelId),window.fbq("track","PageView"))},2e3);return}}_onContact(e){e.checkValidity()&&(window.fbq?this._onContactFire(e):setTimeout(()=>this._onContactFire(e),3e3))}_onContactFire(e){let t=e.getAttribute("action").replace(/\//,"").replace(/\//g,"_");e.checkValidity()&&window.fbq&&window.fbq("trackCustom","Contact",{content_type:t,content_name:t,value:1,currency:window.bilobaFacebookPixelCurrency,contents:[{content_name:t}]})}_registerOnContact(){let e=r.querySelector(document,'form[action*="/form/"]',!1);if(e){let t=r.querySelector(e,'button[type="submit"]',!1);this.uniqueBind(t,"click",this._onContact.bind(this,e))}}_onSearch(e,t){let n=this;window.fbq?n._onSearchFire(e,t):setTimeout(()=>n._onSearchFire(e,t),3e3)}_onSearchFire(e,t){let n;n="suggest"==t?e.getAttribute("title"):e,window.fbq&&window.fbq("track","Search",{content_type:"product",search_string:n,value:1,currency:window.bilobaFacebookPixelCurrency})}_registerOnSearch(){var e=this;if(r.querySelector(document,".header-search",!1)){var t=r.querySelectorAll(document,".search-suggest-product-link",!1);if(!1!=t){var n=document.querySelector(".search-suggest-total-link",!1).getAttribute("href").replace("/search?search=",""),i=r.querySelector(document,".header-search-form",!1);e.uniqueBind(i,"submit",e._onSearch.bind(e,n)),a.iterate(t,function(t){e.uniqueBind(t,"click",e._onSearch.bind(e,t,"suggest"))})}}}_onAddToCart(e){let t=this;window.fbq?t._onAddToCartFire(e):setTimeout(()=>t._onAddToCartFire(e),3e3)}_onAddToCartFire(e){var t=r.querySelector(e.target,'input[name="bit-fbq-id"]',!0).value,n=r.querySelector(e.target,'input[name="bit-fbq-price"]',!0).value,i=r.querySelector(e.target,'input[name="bit-fbq-currency"]',!0).value,s=r.querySelector(e.target,'input[name="bit-fbq-name"]',!0).value,o=r.querySelector(e.target,'input[name="bit-fbq-context-token"]',!0).value,a=(r.querySelector(e.target,'input[name="bit-fbq-quantity"]',!1)||r.querySelector(e.target,"select.product-detail-quantity-select",!1)||r.querySelector(e.target,'.bit--article-quantity-selector input[name^="lineItems["][name$="[quantity]"]',!1)).value;window.fbq&&window.fbq("track","AddToCart",{content_type:"product",content_ids:[t],content_name:s,value:n,currency:i,contents:[{id:t,item_price:n,item_currency:i,quantity:a}]},{eventID:(t+o).replace('"',"'")})}_onViewManufacturer(e){let t=this;window.fbq?t._onViewManufacturerFire(e):setTimeout(()=>t._onViewManufacturerFire(e),3e3)}_onViewManufacturerFire(e){var t=r.querySelector(e,'input[name="bit-fbq-manufacturer-id"]',!0).value,n=r.querySelector(e,'input[name="bit-fbq-manufacturer-name"]',!0).value;window.fbq&&window.fbq("trackCustom","ViewManufacturer",{content_type:"manufacturer",content_ids:[t],content_name:n,value:1,currency:window.bilobaFacebookPixelCurrency,contents:[{id:t,content_name:n}]})}_registerViewManufacturer(){var e=r.querySelector(document,".product-detail-manufacturer-link",!1);if(!1!=e){var t=r.querySelector(document,".product-detail",!1);this.uniqueBind(e,"click",this._onViewManufacturer.bind(this,t))}}_onProductCustomized(e){let t=this;window.fbq?t._onProductCustomizedFire(e):setTimeout(()=>t._onProductCustomizedFire(e),3e3)}_onProductCustomizedFire(e){var t=e.getAttribute("title"),n=e.getAttribute("for");window.fbq&&window.fbq("trackCustom","CustomizeProduct",{content_type:"customizedProduct",value:1,content_name:t,currency:window.bilobaFacebookPixelCurrency,content_ids:[n],contents:[{id:n,content_name:t}]})}_registerProductCustomized(){var e=this,t=r.querySelectorAll(document,".product-detail-configurator-option-label",!1);!1!=t&&a.iterate(t,function(t){e.uniqueBind(t,"click",e._onProductCustomized.bind(e,t))})}_registerCheckoutProgressEventListener(){var e=r.querySelector(document,".register-form",!1);!1!=e&&this.uniqueBind(e,"submit",this._onCheckoutProgress)}_onPaymentOption(e){let t=this;window.fbq?t._onPaymentOptionFire(e):setTimeout(()=>t._onPaymentOptionFire(e),3e3)}_onPaymentOptionFire(e){window.fbq&&window.fbq("track","AddPaymentInfo",{content_type:"product",checkout_option:e,currency:window.bilobaFacebookPixelCurrency,value:window.bilobaFacebookPixelCartValue})}_registerPaymentOptionsEventListener(){var e=this,t=document.getElementById("changePaymentForm");t&&t.addEventListener("change",function(t){var n=t.target.labels[0].querySelector(".payment-method-description strong");n?e._onPaymentOption.bind(e,n.textContent)():console.log("No selector for payment selector found!")})}uniqueBind(e,t,n){var i=e.getAttribute("id");i||(i="_"+Math.random().toString(36).substr(2,9),e.setAttribute("id",i)),this.listeners=this.listeners||{},this.listeners[i]=this.listeners[i]||{},this.listeners[i][t]&&e.removeEventListener(t,this.listeners[i][t]),this.listeners[i][t]=n,e.addEventListener(t,n)}})})()})();