{
  "version": 3,
  "sources": ["/cdn/shop/t/5/assets/bb-gewaehrleistungslabel.js?cb=151531"],
  "sourcesContent": ["/**\n * bb: \u00D6ffnet das EU-Gew\u00E4hrleistungslabel im Modal (snippets/bb-gewaehrleistungslabel.liquid).\n * Der Dialog bleibt im Element und damit im Cart-Drawer: Prestiges Focus-Trap schlie\u00DFt den Drawer bei\n * Klicks au\u00DFerhalb und zieht den Fokus zur\u00FCck. Escape und Tab fangen wir ab, solange das Label offen ist,\n * sonst reagiert die Focus-Trap (document, capture) darauf und schlie\u00DFt den Drawer mit.\n */\nclass BbGewaehrleistungslabel extends HTMLElement {\n  #dialog = null;\n  #lockedByUs = false;\n\n  connectedCallback() {\n    const button = this.querySelector('.bb-gewaehrleistung__open');\n    button?.addEventListener('click', this.#open);\n    // Dialog (und damit das Label-Bild) schon vor dem Klick anlegen, damit es beim \u00D6ffnen geladen ist\n    button?.addEventListener('pointerenter', this.#prepare, { once: true });\n    button?.addEventListener('focus', this.#prepare, { once: true });\n  }\n\n  disconnectedCallback() {\n    this.querySelector('.bb-gewaehrleistung__open')?.removeEventListener('click', this.#open);\n    window.removeEventListener('keydown', this.#onKeydown, true);\n  }\n\n  #prepare = () => this.#getDialog();\n\n  #open = () => {\n    const dialog = this.#getDialog();\n    if (!dialog || dialog.open) return;\n\n    // Scroll-Sperre nur setzen, wenn nicht schon der Drawer sperrt\n    const root = document.documentElement;\n    this.#lockedByUs = !root.classList.contains('lock');\n    if (this.#lockedByUs) root.classList.add('lock');\n\n    window.addEventListener('keydown', this.#onKeydown, true);\n    dialog.showModal();\n  };\n\n  #onKeydown = (event) => {\n    if (!this.#dialog?.open) return;\n\n    if (event.key === 'Escape') {\n      event.preventDefault();\n      event.stopPropagation();\n      this.#dialog.close();\n    } else if (event.key === 'Tab') {\n      // Der native Modal-Dialog h\u00E4lt den Fokus selbst\n      event.stopPropagation();\n    }\n  };\n\n  #getDialog() {\n    if (this.#dialog) return this.#dialog;\n\n    const template = this.querySelector('template');\n    const dialog = template?.content.firstElementChild?.cloneNode(true);\n    if (!(dialog instanceof HTMLDialogElement)) return null;\n\n    dialog.addEventListener('click', (event) => {\n      // Klick auf den Hintergrund trifft den Dialog selbst (padding: 0)\n      if (event.target === dialog || event.target.closest('[data-bb-gewaehrleistung-close]')) dialog.close();\n    });\n    dialog.addEventListener('close', () => {\n      window.removeEventListener('keydown', this.#onKeydown, true);\n      if (this.#lockedByUs) document.documentElement.classList.remove('lock');\n      this.#lockedByUs = false;\n    });\n\n    this.append(dialog);\n    this.#dialog = dialog;\n    return dialog;\n  }\n}\n\nif (!customElements.get('bb-gewaehrleistungslabel')) {\n  customElements.define('bb-gewaehrleistungslabel', BbGewaehrleistungslabel);\n}\n"],
  "mappings": "AAMA,MAAM,gCAAgC,WAAY,CAChD,QAAU,KACV,YAAc,GAEd,mBAAoB,CAClB,MAAM,OAAS,KAAK,cAAc,2BAA2B,EAC7D,QAAQ,iBAAiB,QAAS,KAAK,KAAK,EAE5C,QAAQ,iBAAiB,eAAgB,KAAK,SAAU,CAAE,KAAM,EAAK,CAAC,EACtE,QAAQ,iBAAiB,QAAS,KAAK,SAAU,CAAE,KAAM,EAAK,CAAC,CACjE,CAEA,sBAAuB,CACrB,KAAK,cAAc,2BAA2B,GAAG,oBAAoB,QAAS,KAAK,KAAK,EACxF,OAAO,oBAAoB,UAAW,KAAK,WAAY,EAAI,CAC7D,CAEA,SAAW,IAAM,KAAK,WAAW,EAEjC,MAAQ,IAAM,CACZ,MAAM,OAAS,KAAK,WAAW,EAC/B,GAAI,CAAC,QAAU,OAAO,KAAM,OAG5B,MAAM,KAAO,SAAS,gBACtB,KAAK,YAAc,CAAC,KAAK,UAAU,SAAS,MAAM,EAC9C,KAAK,aAAa,KAAK,UAAU,IAAI,MAAM,EAE/C,OAAO,iBAAiB,UAAW,KAAK,WAAY,EAAI,EACxD,OAAO,UAAU,CACnB,EAEA,WAAc,OAAU,CACjB,KAAK,SAAS,OAEf,MAAM,MAAQ,UAChB,MAAM,eAAe,EACrB,MAAM,gBAAgB,EACtB,KAAK,QAAQ,MAAM,GACV,MAAM,MAAQ,OAEvB,MAAM,gBAAgB,EAE1B,EAEA,YAAa,CACX,GAAI,KAAK,QAAS,OAAO,KAAK,QAG9B,MAAM,OADW,KAAK,cAAc,UAAU,GACrB,QAAQ,mBAAmB,UAAU,EAAI,EAClE,OAAM,kBAAkB,mBAExB,OAAO,iBAAiB,QAAU,OAAU,EAEtC,MAAM,SAAW,QAAU,MAAM,OAAO,QAAQ,iCAAiC,IAAG,OAAO,MAAM,CACvG,CAAC,EACD,OAAO,iBAAiB,QAAS,IAAM,CACrC,OAAO,oBAAoB,UAAW,KAAK,WAAY,EAAI,EACvD,KAAK,aAAa,SAAS,gBAAgB,UAAU,OAAO,MAAM,EACtE,KAAK,YAAc,EACrB,CAAC,EAED,KAAK,OAAO,MAAM,EAClB,KAAK,QAAU,OACR,QAd4C,IAerD,CACF,CAEK,eAAe,IAAI,0BAA0B,GAChD,eAAe,OAAO,2BAA4B,uBAAuB",
  "names": []
}
