PageSourceSearch

https://junglueck.de/cdn/shop/t/676/assets/apply-discount.js?v=20983589157699768591784807644

js junglueck.de collected 2026-10-02 07:19:38 UTC 5,216 bytes, 2 lines download raw bytes

1Shopify.theme=Shopify.theme||{},Shopify.theme.cart=Shopify.theme.cart||{},Shopify.theme.cart.sections=Shopify.theme.cart.sections||[],Object.defineProperty(Array.prototype,"uniq",{value:function(){return Array.from(new Set(this))}});class ApplyDiscount extends HTMLElement{constructor(){super(),this.applyDiscount=this.applyDiscount.bind(this)}connectedCallback(){const input=document.querySelector(`#${this.getAttribute("for")}`);input&&(this.disabled=!this.value,input.addEventListener("input",()=>{this.disabled=!this.value})),this.addEventListener("click",this.applyDiscount)}disconnectedCallback(){this.removeEventListener("click",this.applyDiscount)}async applyDiscount(){if(console.log(`[${this.tagName}] Apply discount clicked`),this.disabled)console.log(`[${this.tagName}] Button disabled`);else{this.loading=!0;const newDiscountCode=this.value.trim(),discounts={discount:[newDiscountCode,this.appliedDiscounts].uniq().join(",")};fetch(window.Shopify.routes.cartUpdateUrl+`.js?sections=${Shopify.theme.cart.sections.uniq().join(",")}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(discounts)}).then(res=>res.json()).then(json=>{const currentDiscount=json.discount_codes.filter(code_entry=>code_entry.code==newDiscountCode)[0]||null;this.discountApplications=json.discount_codes,console.log(`[${this.tagName}] Applied discount`,json.discount_codes),localStorage.setItem("_discountCodes",json.discount_codes.map(code_entry=>code_entry.applicable?code_entry.code:null).join(",")),window.dispatchEvent(new CustomEvent("cg:attributesUpdated")),this.loading=!1,currentDiscount&&currentDiscount.applicable?this.closest("cart-form")?.updateView(json.sections["cart-drawer"]):this.showDiscountError()}).catch(function(err){console.error(err),this.loading=!1})}}showDiscountError(){document.querySelectorAll("[discount-error]").forEach(node=>node.removeAttribute("hidden")),document.querySelectorAll("[discount-success]").forEach(node=>node.setAttribute("hidden","true"))}showDiscountSuccess(){document.querySelectorAll("[discount-error]").forEach(node=>node.setAttribute("hidden","true")),document.querySelectorAll("[discount-success]").forEach(node=>node.removeAttribute("hidden"))}hideDiscountSuccess(){document.querySelectorAll("[discount-success]").forEach(node=>node.setAttribute("hidden","true"))}hideDiscountError(){document.querySelectorAll("[discount-error]").forEach(node=>node.setAttribute("hidden","true"))}get section(){return this.getAttribute("section")||"cart-main"}set discountApplications(v){document.getElementById("discountApplications").innerHTML=JSON.stringify(v?.filter(code_entry=>code_entry.applicable)?.map(code_entry=>code_entry.code?.toUpperCase()))||JSON.stringify(this.appliedDiscounts)}set loading(v){v?this.setAttribute("loading",v):this.removeAttribute("loading")}get loading(){return this.hasAttribute("loading")}set disabled(v){v?this.setAttribute("disabled",v):this.removeAttribute("disabled")}get disabled(){return this.hasAttribute("disabled")}set value(v){this.getAttribute("for")&&document.querySelector(`#${this.getAttribute("for")}`)&&(document.querySelector(`#${this.getAttribute("for")}`).value=v)}get value(){return this.hasAttribute("for")?document.querySelector(`#${this.getAttribute("for")}`)?.value??null:this.getAttribute("value")||""}get appliedDiscounts(){return JSON.parse(document.getElementById("discountApplications")?.text)||[]}static get observedAttributes(){return[]}attributeChangedCallback(property,oldValue,newValue){oldValue!==newValue&&(this[property]=newValue)}}customElements.get("apply-discount")||customElements.define("apply-discount",ApplyDiscount);class RemoveDiscount extends ApplyDiscount{constructor(){super()}connectedCallback(){this.addEventListener("click",()=>{if(!this.disabled){this.loading=!0;const removalDiscounts=this.appliedDiscounts;removalDiscounts.splice(this.appliedDiscounts.indexOf(this.value.toUpperCase()),1);const discounts={discount:removalDiscounts.join(",")};fetch(window.Shopify.routes.cartUpdateUrl+`.js?sections=${Shopify.theme.cart.sections.uniq().join(",")}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(discounts)}).then(res=>res.json()).then(json=>{console.log("Discount response",json),this.discountApplications=json.discount_codes,localStorage.setItem("_discountCodes",json.discount_codes.map(code_entry=>code_entry.applicable?code_entry.code:null).join(",")),window.dispatchEvent(new CustomEvent("cg:attributesUpdated")),this.closest("cart-form")?.updateView(json.sections["cart-drawer"]),this.hideDiscountSuccess(),this.hideDiscountError(),this.loading=!1}
1).catch(function(err){console.error(err),this.loading=!1})}})}}customElements.get("remove-discount")||customElements.define("remove-discount",RemoveDiscount);class DiscountMessage extends HTMLElement{static observedAttributes=["hidden"];constructor(){super()}attributeChangedCallback(property,oldValue,newValue){newValue!="true"&&setTimeout(()=>{this.setAttribute("hidden","true")},4e3)}}customElements.get("discount-message")||customElements.define("discount-message",DiscountMessage);
2//# sourceMappingURL=/cdn/shop/t/676/assets/apply-discount.js.map?v=20983589157699768591784807644

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.