{"version":3,"file":"discount-message-element-section-xxxxxxxxxxxxxxxxxxxx.min.js","mappings":"yBAQA,MAAMA,wBAAwBC,YAC5B,6BAAWC,GACT,MAAO,CACL,eAEJ,CASO,iBAAAC,GACLC,KAAKC,uBACLD,KAAKE,QACP,CAEO,wBAAAC,CAAyBC,EAAcC,EAAmBC,GAC/DN,KAAKC,uBAEAD,KAAKO,aAAwB,iBAATH,GAIzBJ,KAAKE,QACP,CAEQ,oBAAAD,GACDD,KAAKQ,aACRR,KAAKS,aAAa,CAAEC,KAAM,SAC1BV,KAAKQ,WAAWG,UAAY,mZAEhC,CAEQ,MAAAT,GACUF,KAAKQ,WAAWI,cAA2B,YACnDD,UAAYX,KAAKa,QAAQC,OACnC,EASGC,eAAeC,IAAI,qBACtBD,eAAeE,OAAO,mBAAoBrB","sources":["webpack://lange/./scripts/sections/discount-message-element/discount-message/index.ts"],"sourcesContent":["import type { CustomElement } from '@integrabeauty/custom-elements';\nimport html from './index.html';\nimport styles from './index.scss';\n\n/**\n * A custom HTML element that displays a product variant's discount message. It observes the 'data-\n * message' attribute and updates the rendered message accordingly when the attribute changes.\n */\nclass DiscountMessage extends HTMLElement implements CustomElement {\n  static get observedAttributes() {\n    return [\n      'data-message'\n    ];\n  }\n\n  declare readonly dataset: {\n    /**\n     * Discount offer message\n     */\n    message: string;\n  };\n\n  public connectedCallback() {\n    this.initializeShadowRoot();\n    this.render();\n  }\n\n  public attributeChangedCallback(name: string, _oldValue: string, _newValue: string) {\n    this.initializeShadowRoot();\n\n    if (!this.isConnected || name !== 'data-message') {\n      return;\n    }\n\n    this.render();\n  }\n\n  private initializeShadowRoot() {\n    if (!this.shadowRoot) {\n      this.attachShadow({ mode: 'open' });\n      this.shadowRoot.innerHTML = `<style>${styles}</style>${html}`;\n    }\n  }\n\n  private render() {\n    const message = this.shadowRoot.querySelector<HTMLElement>('.message');\n    message.innerHTML = this.dataset.message;\n  }\n}\n\ndeclare global {\n  interface HTMLElementTagNameMap {\n    'discount-message': DiscountMessage;\n  }\n}\n\nif (!customElements.get('discount-message')) {\n  customElements.define('discount-message', DiscountMessage);\n}\n"],"names":["DiscountMessage","HTMLElement","observedAttributes","connectedCallback","this","initializeShadowRoot","render","attributeChangedCallback","name","_oldValue","_newValue","isConnected","shadowRoot","attachShadow","mode","innerHTML","querySelector","dataset","message","customElements","get","define"],"sourceRoot":""}