{"version":3,"sources":["../../../../../src/main/resources/assets/scripts/submit-form-on-change.ts","../../../../../src/main/resources/assets/scripts/line-clamp.ts","../../../../../src/main/resources/assets/scripts/link-opens-details.ts","../../../../../src/main/resources/assets/scripts/pdf-download.ts"],"sourcesContent":["export default class SubmitFormOnChange extends HTMLElement {\n  formEl: HTMLFormElement | null = null;\n  cleanup: () => void = () => {};\n\n  connectedCallback(): void {\n    this.formEl = this.querySelector(\"form\");\n    const submitButtonEl = this.formEl?.querySelector<HTMLButtonElement>(\"button[type=submit]\");\n    const inputEls = this.formEl?.querySelectorAll(\"input, select, textarea\");\n\n    if (!this.formEl || !inputEls) {\n      console.error(\"SubmitFormOnChange: No form or input elements found\");\n      return;\n    }\n\n    // Use setTimeout to wait for reset to finish before submitting\n    const eventHandler: EventListenerOrEventListenerObject = (e: Event) => setTimeout(() => this.requestSubmit(e));\n\n    submitButtonEl?.setAttribute(\"hidden\", \"\");\n    this.formEl.addEventListener(\"reset\", eventHandler);\n    inputEls.forEach((inputEl) => inputEl.addEventListener(\"change\", eventHandler));\n\n    this.cleanup = () => {\n      submitButtonEl?.removeAttribute(\"hidden\");\n      this.formEl?.removeEventListener(\"reset\", eventHandler);\n      inputEls.forEach((el) => el.removeEventListener(\"change\", eventHandler));\n    };\n  }\n\n  disconnectedCallback(): void {\n    this.cleanup();\n  }\n\n  // eslint-disable-next-line @typescript-eslint/no-unused-vars\n  requestSubmit(e: Event): void {\n    this.formEl?.requestSubmit();\n  }\n}\n\nif (window.customElements.get(\"submit-form-on-change\") === undefined) {\n  window.customElements.define(\"submit-form-on-change\", SubmitFormOnChange);\n}\n","export default class LineClamp extends HTMLElement {\n  static observedAttributes = [\"open\"];\n\n  constructor() {\n    super();\n  }\n\n  connectedCallback(): void {\n    const CLASS_LINE_CLAMP = \"line-clamp\";\n    const shadow = this.attachShadow({ mode: \"open\" });\n    const lines = this.dataset.lines ?? \"4\";\n\n    const style = document.createElement(\"style\");\n    // language=css\n    style.textContent = `\n      button {\n        display: block;\n        background: none;\n        color: inherit;\n        border: none;\n        padding: 0;\n        font: inherit;\n        cursor: pointer;\n        outline: inherit;\n        text-decoration: underline;\n      }\n\n      .line-clamp-content {\n        interpolate-size: allow-keywords;\n        overflow: hidden;\n        transition: height 200ms ease-in-out;\n        height: auto;\n      }\n\n      .line-clamp {\n        height: ${lines}lh;\n      }\n    `;\n\n    this.querySelector(`[slot=\"button\"]`)?.removeAttribute(\"hidden\");\n\n    const el = document.createElement(\"div\");\n    el.classList.add(\"line-clamp-content\");\n    el.part = \"content\";\n    el.classList.add(CLASS_LINE_CLAMP);\n    el.appendChild(document.createElement(\"slot\"));\n\n    const buttonSlotEl = document.createElement(\"slot\");\n    buttonSlotEl.name = \"button\";\n\n    const buttonEl = document.createElement(\"button\");\n    buttonEl.appendChild(buttonSlotEl);\n    buttonEl.part = \"read-more-button\";\n    buttonEl.addEventListener(\"click\", () => {\n      const isClampedClosed = el.classList.toggle(CLASS_LINE_CLAMP);\n\n      if (isClampedClosed) {\n        this.removeAttribute(\"open\");\n      } else {\n        this.setAttribute(\"open\", \"\");\n      }\n    });\n\n    shadow.appendChild(style);\n    shadow.appendChild(el);\n    shadow.appendChild(buttonEl);\n  }\n}\n\nif (window.customElements.get(\"line-clamp\") === undefined) {\n  window.customElements.define(\"line-clamp\", LineClamp);\n}\n","export default class LinkOpensDetails extends HTMLElement {\n  constructor() {\n    super();\n  }\n\n  connectedCallback(): void {\n    this.querySelectorAll(\"a\").forEach((link) => {\n      const target = link.hash.replace(\"#\", \"\");\n      const targetEl = document.getElementById(target);\n\n      if (targetEl) {\n        link.addEventListener(\"click\", (e) => {\n          e.preventDefault();\n          targetEl.setAttribute(\"open\", \"\");\n          // Scroll when whole element is visible\n          setTimeout(() => {\n            targetEl.scrollIntoView({\n              behavior: \"smooth\",\n              block: \"end\",\n            });\n          }, 100);\n        });\n      }\n    });\n  }\n}\n\nif (window.customElements.get(\"link-opens-details\") === undefined) {\n  window.customElements.define(\"link-opens-details\", LinkOpensDetails);\n}\n","document.querySelectorAll<HTMLAnchorElement>(\"a[download$='.pdf']\").forEach((link) => {\n  link.addEventListener(\"click\", () => {\n    const originalText = link.textContent;\n    link.textContent = \"Genererer PDF …\";\n    link.classList.add(\"disabled\");\n    link.style.pointerEvents = \"none\";\n\n    setTimeout(() => {\n      link.textContent = originalText;\n      link.classList.remove(\"disabled\");\n      link.style.pointerEvents = \"\";\n    }, 15000);\n  });\n});\n"],"mappings":"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","names":["_a"]}