1"use strict";(self.webpackChunkswag_cms_extensions=self.webpackChunkswag_cms_extensions||[]).push([[1086,34895,84076],{68(e,t,i){i.d(t,{A:()=>s});class s{constructor(){this._request=null,this._errorHandlingInternal=!1}get(e,t){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"application/json",s=this._createPreparedRequest("GET",e,i);return this._sendRequest(s,null,t)}post(e,t,i){let s=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"application/json";s=this._getContentType(t,s);let r=this._createPreparedRequest("POST",e,s);return this._sendRequest(r,t,i)}delete(e,t,i){let s=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"application/json";s=this._getContentType(t,s);let r=this._createPreparedRequest("DELETE",e,s);return this._sendRequest(r,t,i)}patch(e,t,i){let s=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"application/json";s=this._getContentType(t,s);let r=this._createPreparedRequest("PATCH",e,s);return this._sendRequest(r,t,i)}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,i){return this._registerOnLoaded(e,i),e.send(t),e}_getContentType(e,t){return e instanceof FormData&&(t=!1),t}_createPreparedRequest(e,t,i){return this._request=new XMLHttpRequest,this._request.open(e,t),this._request.setRequestHeader("X-Requested-With","XMLHttpRequest"),i&&this._request.setRequestHeader("Content-type",i),this._request}}},76(e,t,i){i.r(t),i.d(t,{SWAG_CMS_EXTENSIONS_CROSS_SELLING_EXTENSION:()=>a,default:()=>l});var s=i(220);class r{static debounce(e,t){let i,s=arguments.length>2&&void 0!==arguments[2]&&arguments[2];return function(){for(var r=arguments.length,n=Array(r),o=0;o<r;o++)n[o]=arguments[o];s&&!i&&setTimeout(e.bind(e,...n),0),clearTimeout(i),i=setTimeout(e.bind(e,...n),t)}}}class n{constructor(){this.previousViewport=null,this.currentViewport=n.getCurrentViewport(),this._registerEvents()}_registerEvents(){window.addEventListener("DOMContentLoaded",this._onDOMContentLoaded.bind(this)),window.addEventListener("resize",r.debounce(this._onResize.bind(this),200),{capture:!0,passive:!0})}_onDOMContentLoaded(){this._dispatchEvents()}_onResize(){this._viewportHasChanged(n.getCurrentViewport())&&(this._dispatchEvents(),this._dispatchViewportEvent("Viewport/hasChanged"))}_dispatchEvents(){n.isXS()?this._dispatchViewportEvent("Viewport/isXS"):n.isSM()?this._dispatchViewportEvent("Viewport/isSM"):n.isMD()?this._dispatchViewportEvent("Viewport/isMD"):n.isLG()?this._dispatchViewportEvent("Viewport/isLG"):n.isXL()?this._dispatchViewportEvent("Viewport/isXL"):n.isXXL()&&this._dispatchViewportEvent("Viewport/isXXL")}_viewportHasChanged(e){let t=e!==this.currentViewport;return t&&(this.previousViewport=this.currentViewport,this.currentViewport=e),t}_dispatchViewportEvent(e){document.$emitter.publish(e,{previousViewport:this.previousViewport})}static isXS(){return"XS"===n.getCurrentViewport()}static isSM(){return"SM"===n.getCurrentViewport()}static isMD(){return"MD"===n.getCurrentViewport()}static isLG(){return"LG"===n.getCurrentViewport()}static isXL(){return"XL"===n.getCurrentViewport()}static isXXL(){return"XXL"===n.getCurrentViewport()}static getCurrentViewport(){return window.getComputedStyle(document.documentElement).getPropertyValue("--sw-current-breakpoint").replace(/['"]+/g,"").toUpperCase()}}class o extends s.A{static #e=this.options={tabSelector:'a[data-bs-toggle="tab"]',productSliderSelector:'[data-product-slider="true"]'};init(){this._registerEvents()}_registerEvents(){this.el.querySelectorAll(this.options.tabSelector).forEach(e=>{e.addEventListener("shown.bs.tab",this._rebuildCrossSellingSlider.bind(this))})}_rebuildCrossSellingSlider(e){if(!e.target.hasAttribute("id"))return;let t=e.target.id,i=document.querySelector(`#${t}-pane`).querySelector(this.options.productSliderSelector);null!==i&&window.PluginManager.getPluginInstanceFromElement(i,"ProductSlider").rebuild(n.getCurrentViewport(),!0)}}let a={EVENT:{RENDER_RESPONSE:"SwagCmsExtensionsCrossSellingPluginRenderResponse"}};class l extends o{_rebuildCrossSellingSlider(e){super._rebuildCrossSellingSlider(e),this.$emitter.publish(a.EVENT.RENDER_RESPONSE)}}},86(e,t,i){i.r(t),i.d(t,{SWAG_CMS_EXTENSIONS_QUICKVIEW:()=>S,default:()=>E});var s=i(308),r=i(220),n=i(592);let o="js-pseudo-modal",a="js-pseudo-modal-template-root-element";class l{constructor(e,t=!0,i=".js-pseudo-modal-template",s=".js-pseudo-modal-template-content-element",r=".js-pseudo-modal-template-title-element"){this._content=e,this._useBackdrop=t,this._templateSelector=i,this._templateContentSelector=s,this._templateTitleSelector=r}open(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:n.Kq;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(`.${o} .modal`);if(!e)return;let t=bootstrap.Modal.getInstance(e);if(!t)return;t.hide(),window.focusHandler._removeFocusTrapGuard()}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("hidden.bs.modal",()=>window.focusHandler._removeFocusTrapGuard()),this._modal.addEventListener("hide.bs.modal",()=>{document.activeElement instanceof HTMLElement&&document.activeElement.blur()}),this._modalInstance.show(),window.focusHandler._addFocusTrapGuard(this._modalWrapper)}_create(){this._modalMarkupEl=document.querySelector(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=document.querySelector(`.${o}`),this._modalWrapper||(this._modalWrapper=document.createElement("div"),this._modalWrapper.classList.add(o))}_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 i=t.querySelector(`.${a}`);if(i){this._modalWrapper.querySelector(`.${a}`).replaceChildren(i);return}try{let e=t.querySelector(this._templateTitleSelector);e&&(this._setModalTitle(e.innerHTML),e.parentNode.removeChild(e))}catch(e){}}}var d=i(68),c=i(795),u=i(76),h=i(895),p=i(683);class _ extends p.A{static getTemplate(){return` 2 <div class="container quickview-loading-indicator"> 3 ${super.getTemplate()} 4 </div> 5 `}}class g{constructor(e,t,i){this._id=e,this._variantId=null,this._loaded=t,this._quickview=i,this._variants=new Map}get id(){return this._id}get variantId(){return this._variantId}get loaded(){return this._loaded}get quickview(){return this._quickview}get variants(){return this._variants}set variantId(e){this._variantId=e}set loaded(e){this._loaded=e}set quickview(e){this._quickview=e}}let m="swag-cms-extensions-quickview-carousel",v="data-swag-cms-extensions-quickview-carousel-product-id";class w{constructor(e,t,i=m,s=v){this._arrowHeadLeft=e,this._arrowHeadRight=t,this._id=i,this._carouselItemProductIdAttribute=s}create(e){return` 6 <div id="${this._id}" class="carousel slide" data-interval="0"> 7 ${this._createNavigationElement("prev")} 8 <div class="carousel-inner"> 9 ${e.join("")} 10 </div> 11 ${this._createNavigationElement("next")} 12 </div> 13 `}createItem(e,t){let i=arguments.length>2&&void 0!==arguments[2]&&arguments[2],s=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"";return` 14 <div class="carousel-item ${i?"active":""}" 15 ${this._carouselItemProductIdAttribute}="${t}" 16 data-announcement-snippet="${s}"> 17 ${e} 18 </div> 19 `}_createNavigationElement(e){let t="prev"===e;return` 20 <a class="carousel-control-${e}" href="#${this._id}" role="button" data-bs-slide=${e}> 21 ${t?this._arrowHeadLeft:this._arrowHeadRight} 22 <span class="visually-hidden">${t?"Previous":"Next"}</span> 23 </a> 24 `}}let S={EVENT:{INITIALISED:"SwagCmsExtensions/quickviewInitialised",PRODUCT_REGISTERED:"SwagCmsExtensions/productRegistered",EVENTS_REGISTERED:"SwagCmsExtensions/eventsRegistered",MODAL_OPENED:"SwagCmsExtensions/modalOpened",PRODUCT_UPDATED:"SwagCmsExtensions/quickviewProductUpdated",BUY_FORM_BEFORE_SUBMIT:"beforeFormSubmit",BS_CAROUSEL_SLIDE:"slide.bs.carousel"}};class E extends r.A{static #e=this.options={isSearchPage:!1,crossSellingSelector:"[data-cross-selling]",listingSelector:"[data-listing]",variantSwitchSelector:"[data-variant-switch]",addToCartSelector:"[data-add-to-cart]",taxLinkSelector:".product-detail-tax-link",productBoxSelector:"[data-swag-cms-extensions-quickview-box]",productBoxLinkSelector:".product-name, .product-image-link, .swag-cms-extensions-quickview-listing-button-detail a.btn",quickviewContainerSelector:".swag-cms-extensions-quickview-container",productBoxFocusableSelector:".product-name.stretched-link",productBoxFocusStateName:"swag-cms-extensions-quickview-focus-entrypoint",productBoxFocusIdAttribute:"data-focus-id",modalClass:"swag-cms-extensions-quickview-modal",quickviewControllerRoute:"widgets.swag.cmsExtensions.quickview",quickviewControllerVariantRoute:"widgets.swag.cmsExtensions.quickview.variant",sectionId:"",arrowHeadLeft:"",arrowHeadRight:""};
24init(){this._firstLoad=!1,this._currentProductId="",this._pseudoModal=null,this._scrollPos=0,this._products=new Map,this._isModalLoading=!1,this._client=new d.A(window.accessKey,window.contextToken),this._carouselTemplateUtil=new w(this.options.arrowHeadLeft,this.options.arrowHeadRight),this._createLiveRegion(),this._registerEventListeners(),this._registerProducts(),this.$emitter.publish(S.EVENT.INITIALISED,this)}_createLiveRegion(){this._liveRegion=this.el.querySelector("[aria-live]")}_reInitialise(){this._products.clear(),this._registerProductBoxListeners(),this._registerProducts()}_restoreFocusAfterClose(e){e.preventDefault(),window.focusHandler.resumeFocusState(this.options.productBoxFocusStateName)}_registerProducts(){let e=this._getProductBoxes(this.el.parentNode);return e?(e.forEach(e=>{let t=this._getProductBoxDataset(e),i=t.productId,s=t.announcement||"";this._registerProduct(i,s)}),!0):e}_registerProduct(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",i=new g(e,!1,_.getTemplate());i.announcement=t,this._products.set(e,i),this.$emitter.publish(S.EVENT.PRODUCT_REGISTERED,e)}_registerEventListeners(){this._registerProductBoxListeners(),this._registerListingListener(),this._registerCrossSellingListener()}_registerFocusControl(e){let t=`[${this.options.productBoxFocusIdAttribute}="${e}"] ${this.options.productBoxFocusableSelector}`;window.focusHandler.saveFocusState(this.options.productBoxFocusStateName,t);let i=document.querySelector(`.${this.options.modalClass}`);i?.addEventListener("hidden.bs.modal",this._restoreFocusAfterClose.bind(this)),document.addEventListener("onCloseOffcanvas",this._restoreFocusAfterClose.bind(this))}_registerProductBoxListeners(){let e=this._getProductBoxes(this.el.parentNode);return e?(e.forEach(this._registerLinkClickListeners.bind(this)),!0):e}_registerCrossSellingListener(){this._addEventListener(u.SWAG_CMS_EXTENSIONS_CROSS_SELLING_EXTENSION.EVENT.RENDER_RESPONSE,this._reInitialise,c.A.querySelector(document,this.options.crossSellingSelector,!1))}_registerListingListener(){this._addEventListener("Listing/afterRenderResponse",this._reInitialise,c.A.querySelector(document,this.options.listingSelector,!1))}_getProductBoxes(e){let t=c.A.querySelectorAll(e,this.options.productBoxSelector,!1);return!t||this.options.isSearchPage?t:[...t].filter(e=>this._getProductBoxDataset(e).sectionId===this.options.sectionId)}_getProductBoxDataset(e){return JSON.parse(e.dataset.swagCmsExtensionsQuickviewBoxOptions)}_registerLinkClickListeners(e){let t=this._onProductBoxLinkClick.bind(this,{productId:this._getProductBoxDataset(e).productId});c.A.querySelectorAll(e,this.options.productBoxLinkSelector).forEach(e=>{this._addEventListener("click",t,e)})}_onProductBoxLinkClick(e,t){t.preventDefault(),this._openModal(e)}_openModal(e){let{productId:t}=e;this._isModalLoading||(this._isModalLoading=!0,this._firstLoad=!0,this._currentProductId=t,this._pseudoModal=new l(this._carouselTemplateUtil.create([this._carouselTemplateUtil.createItem(_.getTemplate(),"",!0)])),this._pseudoModal.open(this._fetchWindow.bind(this,t)),this._addPluginClasses(this._pseudoModal),this._registerFocusControl(t),this.$emitter.publish(S.EVENT.MODAL_OPENED,this))}_addPluginClasses(e){e.getModal().classList.add(this.options.modalClass),c.A.querySelector(e.getModal(),".modal-dialog").classList.add("modal-dialog-centered","modal-xl"),c.A.querySelector(e.getModal(),".modal-header").remove()}_fetchWindow(e){let t=this._getSibling(e,-1,this._products),i=this._getSibling(e,1,this._products);for(let s of[t,e,i].filter((e,t,i)=>i.indexOf(e)===t))this._updateProductQuickview(s)}_updateProductQuickview(e){this._fetchQuickview(e,this._setProductQuickview.bind(this,e))}_fetchQuickview(e,t){if(this._products.get(e).loaded){t(this._products.get(e).quickview);return}this._client.get(`${window.router[this.options.quickviewControllerRoute]}/${e}`,t.bind(this))}_fetchVariantQuickview(e,t,i){let s=window.router[this.options.quickviewControllerVariantRoute],r=new URLSearchParams(t).toString();this._client.get(`${s}/${e}?${r}`,i.bind(this))}_setProductQuickview(e,t){this._products.get(e).loaded=!0,this._products.get(e).quickview=t,this._syncProductsAndDom(e)}_setVariantQuickview(e,t,i){let s=this._products.get(e),r=new g(t,!1,i);s.variants.set(r.id,r),s.variantId=r.id,this._syncProductsAndDom(e)}_syncProductsAndDom(e){if(this._firstLoad){let e=[];
24this._products.forEach(t=>{let i=t.announcement||"";e.push(this._carouselTemplateUtil.createItem(t.quickview,t.id,t.id===this._currentProductId,i))}),this._pseudoModal.updateContent(this._carouselTemplateUtil.create(e)),this._registerCarouselListener(),this._firstLoad=!1}let t=this._products.get(e),i=t.variantId;this._updateCarouselItemContent(e,i?t.variants.get(i).quickview:t.quickview),this._isModalLoading=!1}_registerBuyFormListener(e){this._addEventListener(S.EVENT.BUY_FORM_BEFORE_SUBMIT,this._pseudoModal.close.bind(this._pseudoModal),c.A.querySelector(e,this.options.addToCartSelector))}_registerTaxLinkListener(e){this._addEventListener("click",this._onTaxLinkClick,c.A.querySelector(e,this.options.taxLinkSelector))}_registerVariantSwitchListener(e){this._addEventListener(h.SWAG_CMS_EXTENSIONS_VARIANT_SWITCH_EXTENSION.EVENT.VARIANT_SWITCHED,this._onVariantSwitch,c.A.querySelector(e,this.options.variantSwitchSelector,!1))}_registerCarouselListener(){let e=c.A.querySelector(document,"#swag-cms-extensions-quickview-carousel",!1);e&&(c.A.querySelector(document,`#${m}`,!1).addEventListener(S.EVENT.BS_CAROUSEL_SLIDE,this._onCarouselSlide.bind(this)),e.addEventListener("slid.bs.carousel",()=>{let t=c.A.querySelector(e,".carousel-item.active");this._liveRegion.textContent=t.getAttribute("data-announcement-snippet")||""}))}_onCarouselSlide(e){let t="left"===e.direction?-1:1,i=e.relatedTarget.dataset.swagCmsExtensionsQuickviewCarouselProductId,s=this._getSibling(i,t,this._products);this._fetchWindow(i),this._currentProductId=s}_updateCarouselItemContent(e,t){let i=this._getCarouselItem(e,this._pseudoModal.getModal());i&&(i.innerHTML=t,window.PluginManager.initializePlugins(),this._registerBuyFormListener(i),this._registerVariantSwitchListener(i),this._registerTaxLinkListener(i),this._scrollPos>0&&(this._setContainerScrollPosition(e,this._scrollPos),this._scrollPos=0))}_getCarouselItem(e,t){return c.A.querySelector(t,`[${v}="${e}"]`,!1)}_onVariantSwitch(e){let t=e.detail.listingProductId,i={switched:e.detail.switched,options:e.detail.options,parentId:e.detail.parentId},s=this._setVariantQuickview.bind(this,t,this._joinValues(JSON.parse(i.options)));this._scrollPos=this._getContainerScrollPosition(t),this._fetchVariantQuickview(t,i,s)}_onTaxLinkClick(e){e.preventDefault(),this._client.get(e.target.dataset.url,e=>{this._pseudoModal.close(),new l(e).open()})}_addEventListener(e,t,i){let r=t.bind(this);i&&(i.$emitter||new s.A(i),this._listenerPresent(i,e,r)||i.$emitter.subscribe(e,r))}_listenerPresent(e,t){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;return!!e.$emitter&&e.$emitter.listeners.some(e=>e.splitEventName[0]===t&&(null===i||e.cb===i))}_setContainerScrollPosition(e,t){c.A.querySelector(this._getCarouselItem(e,this._pseudoModal.getModal()),this.options.quickviewContainerSelector).scrollTop=t}_getContainerScrollPosition(e){return c.A.querySelector(this._getCarouselItem(e,this._pseudoModal.getModal()),this.options.quickviewContainerSelector).scrollTop}_joinValues(e){return Object.keys(e).map(t=>e[t]).join("")}_getSibling(e,t,i){let s=[...i.values()],r=s.findIndex(t=>t.id===e);if(r<0)return null;let n=(t>0?r+1:r-1)%s.length;return n<0&&(n=s.length-1),s[n].id}}},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!==i},i="function"==typeof Symbol&&Symbol.for?Symbol.for("react.element"):60103;function s(e,t){return!1!==t.clone&&t.isMergeableObject(e)?a(Array.isArray(e)?[]:{},e,t):e}function r(e,t,i){return e.concat(t).map(function(e){return s(e,i)})}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,i,l){(l=l||{}).arrayMerge=l.arrayMerge||r,l.isMergeableObject=l.isMergeableObject||t,l.cloneUnlessOtherwiseSpecified=s;var d,c,u=Array.isArray(i);return u!==Array.isArray(e)?s(i,l):u?l.arrayMerge(e,i,l):(c={},(d=l).isMergeableObject(e)&&n(e).forEach(function(t){c[t]=s(e[t],d)}
24),n(i).forEach(function(t){(!o(e,t)||Object.hasOwnProperty.call(e,t)&&Object.propertyIsEnumerable.call(e,t))&&(o(e,t)&&d.isMergeableObject(i[t])?c[t]=(function(e,t){if(!t.customMerge)return a;var i=t.customMerge(e);return"function"==typeof i?i:a})(t,d)(e[t],i[t],d):c[t]=s(i[t],d))}),c)}a.all=function(e,t){if(!Array.isArray(e))throw Error("first argument should be an array");return e.reduce(function(e,i){return a(e,i,t)},{})},e.exports=a},220(e,t,i){i.d(t,{A:()=>a});var s=i(156),r=i.n(s),n=i(707),o=i(308);class a{constructor(e,t={},i=!1){if(!(e instanceof Node)){console.warn(`There is no valid element given while trying to create a plugin instance for "${i}".`);return}this.el=e,this.$emitter=new o.A(this.el),this._pluginName=this._getPluginName(i),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()),r().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),i=this.el.getAttribute(`data-${t}-config`);return i?window.PluginConfigManager.get(this._pluginName,i):e}_getOptionsFromDataAttribute(){let e={};if("function"!=typeof this.el.getAttribute)return e;let t=n.A.toDashCase(this._pluginName),i=this.el.getAttribute(`data-${t}-options`);if(i)try{return JSON.parse(i)}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}}},308(e,t,i){i.d(t,{A:()=>s});class s{constructor(e=document){this._el=e,e.$emitter=this,this._listeners=[]}publish(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},i=arguments.length>2&&void 0!==arguments[2]&&arguments[2],s=new CustomEvent(e,{detail:t,cancelable:i});return this.el.dispatchEvent(s),s}subscribe(e,t){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},s=this,r=e.split("."),n=i.scope?t.bind(i.scope):t;if(i.once&&!0===i.once){let t=n;n=function(i){s.unsubscribe(e),t(i)}}return this.el.addEventListener(r[0],n),this.listeners.push({splitEventName:r,opts:i,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,i)=>([...i.splitEventName].sort().toString()===t.sort().toString()?this.el.removeEventListener(i.splitEventName[0],i.cb):e.push(i),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}}},592(e,t,i){i.d(t,{Kq:()=>a,Ay:()=>u});class s{static isTouchDevice(){return"ontouchstart"in document.documentElement}static isIOSDevice(){return s.isIPhoneDevice()||s.isIPadDevice()}static isNativeWindowsBrowser(){return s.isIEBrowser()||s.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":s.isTouchDevice(),"is-ios":s.isIOSDevice(),"is-native-windows":s.isNativeWindowsBrowser(),"is-iphone":s.isIPhoneDevice(),"is-ipad":s.isIPadDevice(),"is-ie"
24:s.isIEBrowser(),"is-edge":s.isEdgeBrowser()}}}let r="modal-backdrop",n="modal-backdrop-open",o="no-scroll",a=350,l={ON_CLICK:"backdrop/onclick"};class d{constructor(){return d.instance||(d.instance=this),d.instance}create(e){this._removeExistingBackdrops(),document.body.insertAdjacentHTML("beforeend",this._getTemplate());let t=document.body.lastChild;document.documentElement.classList.add(o),setTimeout(function(){t.classList.add(n),"function"==typeof e&&e()},75),this._dispatchEvents()}remove(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:a;this._getBackdrops().forEach(e=>e.classList.remove(n)),setTimeout(this._removeExistingBackdrops.bind(this),e),document.documentElement.classList.remove(o)}_dispatchEvents(){let e=s.isTouchDevice()?"touchstart":"click";document.addEventListener(e,function(e){e.target.classList.contains(r)&&document.dispatchEvent(new CustomEvent(l.ON_CLICK))})}_getBackdrops(){return document.querySelectorAll(`.${r}`)}_removeExistingBackdrops(){!1!==this._exists()&&this._getBackdrops().forEach(e=>e.remove())}_exists(){return document.querySelectorAll(`.${r}`).length>0}_getTemplate(){return`<div class="${r}"></div>`}}let c=Object.freeze(new d);class u{static create(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;c.create(e)}static remove(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:a;c.remove(e)}static SELECTOR_CLASS(){return r}}},683(e,t,i){i.d(t,{A:()=>n});let s="loader",r={BEFORE:"before",INNER:"inner"};class n{constructor(e,t=r.BEFORE){this.parent=e instanceof Element?e:document.body.querySelector(e),this.position=t}create(){if(!this.exists()){if(this.position===r.INNER){this._previousHTML=this.parent.innerHTML,this.parent.innerHTML=n.getTemplate();return}this.parent.insertAdjacentHTML(this._getPosition(),n.getTemplate())}}remove(){if(this.position===r.INNER){this.parent.innerHTML=this._previousHTML;return}this.parent.querySelectorAll(`.${s}`).forEach(e=>e.remove())}exists(){return this.parent.querySelectorAll(`.${s}`).length>0}_getPosition(){return this.position===r.BEFORE?"afterbegin":"beforeend"}static getTemplate(){return`<div class="${s}" role="status"> 25 <span class="visually-hidden">Loading...</span> 26 </div>`}static SELECTOR_CLASS(){return s}}},707(e,t,i){i.d(t,{A:()=>s});class s{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 i=s.toUpperCamelCase(e,t);return s.lcFirst(i)}static toUpperCamelCase(e,t){return t?e.split(t).map(e=>s.ucFirst(e.toLowerCase())).join(""):s.ucFirst(e.toLowerCase())}static parsePrimitive(e){try{return/^\d+(.|,)\d+$/.test(e)&&(e=e.replace(",",".")),JSON.parse(e)}catch(t){return e.toString()}}}},795(e,t,i){i.d(t,{A:()=>r});var s=i(707);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 i=!(arguments.length>2)||void 0===arguments[2]||arguments[2];if(i&&!1===r.hasAttribute(e,t))throw Error(`The required property "${t}" does not exist!`);if("function"!=typeof e.getAttribute){if(i)throw Error("This node doesn't support the getAttribute function!");return}return e.getAttribute(t)}static getDataAttribute(e,t){let i=!(arguments.length>2)||void 0===arguments[2]||arguments[2],n=t.replace(/^data(|-)/,""),o=s.A.toLowerCamelCase(n,"-");if(!r.isNode(e)){if(i)throw Error("The passed node is not a valid HTML Node!");return}if(void 0===e.dataset){if(i)throw Error("This node doesn't support the dataset attribute!");return}let a=e.dataset[o];if(void 0===a){if(i)throw Error(`The required data attribute "${t}" does not exist on ${e}!`);return a}return s.A.parsePrimitive(a)}static querySelector(e,t){let i=!(arguments.length>2)||void 0===arguments[2]||arguments[2];if(i&&!r.isNode(e))throw Error("The parent node is not a valid HTML Node!");let s=e.querySelector(t)||!1;if(i&&!1===s)throw Error(`The required element "${t}" does not exist in parent node!`);return s}static querySelectorAll(e,t){let i=!(arguments.length>2)||void 0===arguments[2]||arguments[2];if(i&&!r.isNode(e))throw Error("The parent node is not a valid HTML Node!");let s=e.querySelectorAll(t);if(0===s.length&&(s=!1),i&&!1===s)throw Error(`At least one item of "${t}" must exist in parent node!`);return s}static getFocusableElements(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:document.body,t=` 27 input:not([tabindex^="-"]):not([disabled]):not([type="hidden"]), 28 select:not([tabindex^="-"]):not([disabled]), 29 textarea:not([tabindex^="-"]):not([disabled]), 30 button:not([tabindex^="-"]):not([disabled]), 31 a[href]:not([tabindex^="-"]):not([disabled]),
32 [tabindex]:not([tabindex^="-"]):not([disabled]) 33 `;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]}}},895(e,t,i){i.r(t),i.d(t,{SWAG_CMS_EXTENSIONS_VARIANT_SWITCH_EXTENSION:()=>p,default:()=>_});var s=i(220),r=i(683),n=i(592);class o extends r.A{constructor(){super(document.body)}create(){let e=!(arguments.length>0)||void 0===arguments[0]||arguments[0];!this.exists()&&e&&(n.Ay.create(),document.querySelector(`.${n.Ay.SELECTOR_CLASS()}`).insertAdjacentHTML("beforeend",r.A.getTemplate()))}remove(){let e=!(arguments.length>0)||void 0===arguments[0]||arguments[0];super.remove(),e&&n.Ay.remove()}}let a=Object.freeze(new o);class l{static create(){let e=!(arguments.length>0)||void 0===arguments[0]||arguments[0];a.create(e)}static remove(){let e=!(arguments.length>0)||void 0===arguments[0]||arguments[0];a.remove(e)}}var d=i(68);class c extends s.A{static #e=this.options={url:"",elementId:"",pageType:"",radioFieldSelector:".product-detail-configurator-option-input",selectFieldSelector:".product-detail-configurator-select-input",focusHandlerKey:"variant-switch"};init(){this._httpClient=new d.A,this._radioFields=this.el.querySelectorAll(this.options.radioFieldSelector),this._selectFields=this.el.querySelectorAll(this.options.selectFieldSelector),this._elementId=this.options.elementId,this._pageType=this.options.pageType,this._ensureFormElement(),this._preserveCurrentValues(),this._registerEvents(),this._resumeFocusState()}_ensureFormElement(){if("form"!==this.el.nodeName.toLowerCase())throw Error("This plugin can only be applied on a form element!")}_preserveCurrentValues(){this._radioFields&&this._radioFields.forEach(e=>{c._isFieldSerializable(e)&&e.dataset&&(e.dataset.variantSwitchValue=e.value)})}_registerEvents(){this.el.addEventListener("change",e=>this._onChange(e))}_onChange(e){let t=this._getSwitchedOptionId(e.target),i=this._getFormValue();this._preserveCurrentValues(),this.$emitter.publish("onChange");let s={switched:t,options:JSON.stringify(i)};if(this._elementId&&"product_detail"!==this._pageType){let e=`${this.options.url}?${new URLSearchParams({...s,elementId:this._elementId}).toString()}`;document.$emitter.publish("updateBuyWidget",{url:e,elementId:this._elementId});return}this._saveFocusState(e.target),this._redirectToVariant(s)}_getSwitchedOptionId(e){return!!c._isFieldSerializable(e)&&e.name}_getFormValue(){let e={};return this._radioFields&&this._radioFields.forEach(t=>{c._isFieldSerializable(t)&&t.checked&&(e[t.name]=t.value)}),this._selectFields&&this._selectFields.forEach(t=>{if(c._isFieldSerializable(t)){let i=[...t.options].find(e=>e.selected);e[t.name]=i.value}}),e}static _isFieldSerializable(e){return!e.name||e.disabled||-1===["file","reset","submit","button"].indexOf(e.type)}_disableFields(){this._radioFields.forEach(e=>{e.classList&&e.classList.add("disabled","disabled")})}_redirectToVariant(e){l.create(),fetch(`${this.options.url}?${new URLSearchParams(e).toString()}`,{headers:{"X-Requested-With":"XMLHttpRequest"}}).then(e=>e.json()).then(e=>window.location.replace(e.url))}_saveFocusState(e){window.focusHandler.saveFocusStatePersistent(this.options.focusHandlerKey,`[id="${e.id}"]`)}_resumeFocusState(){window.focusHandler.resumeFocusStatePersistent(this.options.focusHandlerKey)}}let u="element-loader-backdrop";class h extends r.A{static create(e){e.classList.add("has-element-loader"),h.exists(e)||(h.appendLoader(e),setTimeout(()=>{let t=e.querySelector(`.${u}`);t&&t.classList.add("element-loader-backdrop-open")},1))}static remove(e){e.classList.remove("has-element-loader");let t=e.querySelector(`.${u}`);t&&t.remove()}static exists(e){return e.querySelectorAll(`.${u}`).length>0}static getTemplate(){return` 34 <div class="${u}"> 35 <div class="loader" role="status"> 36 <span class="visually-hidden">Loading...</span> 37 </div> 38 </div> 39 `}static appendLoader(e){e.insertAdjacentHTML("beforeend",h.getTemplate())}}let p={EVENT:{VARIANT_SWITCHED:"SwagCmsExtensionsVariantSwitchPluginVariantSwitched"}};class _ extends c{static #e=this.options={parentId:"",listingProductId:"",focusHandlerKey:"variant-switch",...super.options};_onChange(e){let t=`[data-swag-cms-extensions-quickview-carousel-product-id="${this.options.listingProductId}"]`;if(this._contains(this.el,t)){let i=document.querySelector(`${t} .product-detail-buy`).firstElementChild;h.create(i),this._emitVariantSwitchEvent(e,this.$emitter)}else super._onChange(e)}_saveFocusState(e){window.focusHandler&&"function"==typeof window.focusHandler.saveFocusStatePersistent&&window.focusHandler.saveFocusStatePersistent
39(this.options.focusHandlerKey,`[data-variant-switch-value="${e.dataset.variantSwitchValue}"]`)}_resumeFocusState(){window.focusHandler&&"function"==typeof window.focusHandler.resumeFocusStatePersistent&&window.focusHandler.resumeFocusStatePersistent(this.options.focusHandlerKey)}_emitVariantSwitchEvent(e,t){t.publish(p.EVENT.VARIANT_SWITCHED,{parentId:this.options.parentId,listingProductId:this.options.listingProductId,switched:this._getSwitchedOptionId(e.target),options:JSON.stringify(this._getFormValue())})}_contains(e,t){return[...document.querySelectorAll(t)].map(t=>t.contains(e)).reduce((e,t)=>!!e||t,!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.