PageSourceSearch

https://www.badmagicproductions.com/cdn/shop/t/23/assets/component…?v=20859192700146603461735730635

js badmagicproductions.com collected 2026-09-24 18:59:54 UTC 5,599 bytes, 1 lines download raw bytes

1(()=>{var t={845:t=>{self,t.exports=(()=>{"use strict";var t={};return((t,e)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.isArmadaLoaded=void 0,e.isArmadaLoaded=t=>{var e,i;const n=!0===(null===(i=null===(e=window.eight)||void 0===e?void 0:e.armada)||void 0===i?void 0:i.loaded);if(!t)return n;n?t():document.addEventListener("ARMADA:LOADED",t)},e.default=e.isArmadaLoaded})(0,t),t})()}},e={};function i(n){var a=e[n];if(void 0!==a)return a.exports;var s=e[n]={exports:{}};return t[n](s,s.exports,i),s.exports}i.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return i.d(e,{a:e}),e},i.d=(t,e)=>{for(var n in e)i.o(e,n)&&!i.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},i.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),(()=>{"use strict";var t=i(845);class e extends HTMLElement{constructor(){if(super(),this.buttonWrap=this.querySelector('[data-name="product-submit-wrapper"]'),this.cartTypePage=document.querySelector("body").getAttribute("data-armada-cart-type-page"),this.cartPageUrl=document.querySelector("body").getAttribute("data-cart-url"),!this.buttonWrap||!this.getAttribute("product"))return;["init","handleButtonClick","handleOptionChange","atcSuccess","atcError"].forEach((t=>{this[t]=this[t].bind(this)}))}connectedCallback(){(0,t.isArmadaLoaded)(this.init),document.addEventListener("ARMADA:TRANSLATION:SYNC",this.init)}init(){this.currentVariant=window.eight.productEngine.firstAvailableVariant(this.product),this.templateContent=this.querySelector(`template#quick-add-${this.sectionId}-${this.product.id}
1`).content,this.templateOptionsWrap=this.templateContent.querySelector('[data-name="quick-add-options"]'),this.loadingButtonHtml=this.templateContent.querySelector("[data-button-loading]").outerHTML,this.render(),this.button=this.querySelector('[data-name^="button-"]'),this.button&&this.button.addEventListener("click",this.handleButtonClick),window.eight.armada.elementRegistry.register({key:"quick-add",assetPath:"/assets/components-quick-add.js"})}render(){this._classList=this.templateContent.querySelector('[data-name="product-submit"]')?this.templateContent.querySelector('[data-name="product-submit"]').classList:"",this.buttonWrap=this.querySelector('[data-name="product-submit-wrapper"]'),this.buttonWrap.innerHTML=this.getButton()}loadingButton(){return`\n      <div>\n        ${this.loadingButtonHtml}\n        <span class="sr-only">${window.eight.translationEngine.strings.adding}</span>\n      </div>\n    `}buttonHtml(t="add"){if(!t)return"";const{addToCart:e,choose:i,soldOut:n,added:a,unavailable:s,isSoldOut:r,chooseVariant:o}=window.eight.translationEngine.strings,d={add:e,choose:i,"sold-out":n,added:a,unavailable:s};if(!d[t])return"";return`\n      <button\n        type="button"\n        data-name="button-${t}"\n        aria-label="${{add:e,choose:o,"sold-out":`'${this.currentVariant.title}' ${r}`,added:`${a} '${this.currentVariant.title}'`,unavailable:s}[t]}"\n        class="${this._classList}"\n        ${"add"!==t&&"choose"!==t?"disabled":""}\n      >\n        ${d[t]}\n      </button>\n    `}getButton(){return this.currentVariant?this.currentVariant.available?window.eight.productEngine.hasVariants(this.product)&&!this.allOptionsChosen?this.buttonHtml("choose"):this.buttonHtml("add"):this.buttonHtml("sold-out"):this.buttonHtml("unavailable")}handleButtonClick(t){if(!("name"in t.target.dataset)||t.target.disabled)return;if("choose"===t.target.dataset.name.replace("button-",""))this.insertBefore(this.templateOptionsWrap,this.querySelector('[data-name="basic-product-form"]')),this.selects=this.querySelectorAll('[data-name="quick-add-options"] select'),this.selects.forEach(((t,e)=>{t.addEventListener("change",this.handleOptionChange),0===e&&t.focus()})),this.button.disabled=!0,this.button.classList.add("opacity-20");else{const t=this.loadingButton();this.setButton(t,!1);const e={items:[{id:this.currentVariant.id,quantity:1}]};window.eight.cartEngine.addToCart(e,"items",this.atcSuccess,this.atcError)}}handleOptionChange(t){if(!this.allOptionsChosen)return;const e=this.currentVariant.title;this.currentVariant=window.eight.productEngine.findVariant(this.product,this.selectValIndexes);const i=this.getButton();this.setButton(i),this.currentVariant&&window.eight.eventsEngine&&this.currentVariant.title!==e&&window.eight.eventsEngine.namedEvents.changeVariant(this.product.id,this.currentVariant.id,this.currentVariant)}atcSuccess(t){const e=this.buttonHtml("added");this.setButton(e,!1),this.cartTypePage&&(window.location=this.cartPageUrl);const i=this.getButton();setTimeout((()=>{this.setButton(i)}),window.eight.product.addedTimeout)}atcError(t){console.warn("Quick add error",t);const e=this.getButton();setTimeout((()=>{this.setButton(e)}),window.eight.product.addedTimeout)}setButton(t,e=!0){this.buttonWrap.innerHTML=t,this.button=this.querySelector('[data-name^="button-"]'),this.button&&(this.currentVariant.available&&e?this.button.addEventListener("click",this.handleButtonClick):this.button.classList.add("opacity-20"))}get sectionId(){return this.getAttribute("section-id")?this.getAttribute("section-id"):"1"}get product(){return window.eight.safeJSONParse(this.getAttribute("product"))}get selectVals(){return!!this.selects&&Array.from(this.selects).map((t=>t.value))}get selectValIndexes(){if(!this.selects)return!1;let t=[];return Array.from(this.selects).forEach((e=>{const i=!0===e.options[0].disabled?e.selectedIndex-1:e.selectedIndex;t.push(i)})),t}get allOptionsChosen(){return!!this.selectVals&&!this.selectVals.some((t=>""===t))}}window.customElements.define("quick-add",e)})()})();

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.