{"version":3,"file":"client.mjs","sources":["../app/client.ts"],"sourcesContent":["/// <reference types=\"../.check24-home/types/client\" />\n\nimport type { Language } from '../.check24-home/types/check24';\nimport type { HomeClientComponentElement, HomeClientComponentProps, UserInfo } from '../.check24-home/types/client';\nimport styles from './styles.css?inline';\n\ninterface ShoautTeaserProps extends HomeClientComponentProps {\n    // No custom props beyond HomeClientComponentProps\n}\n\nexport default class ShoautTeaserClient extends HTMLElement implements HomeClientComponentElement {\n    deviceOutput: 'desktop' | 'mobile' | 'tabletapp' | 'app' = 'desktop';\n    language: Language = 'de-DE';\n    user?: UserInfo | undefined;\n    platform: 'app' | 'web' = 'web';\n\n    private shadow: ShadowRoot | null = null;\n    private readonly productSlug = 'shoaut';\n\n    constructor() {\n        super();\n    }\n\n    static get observedAttributes(): string[] {\n        return ['product-slug', 'deviceoutput', 'device-output', 'language', 'platform', 'env', 'sso-env', 'user'];\n    }\n\n    private applyAttributesFromHost(): void {\n        type C24Global = { C24Home?: { validateAttributes?: (attrs: NamedNodeMap) => Partial<ShoautTeaserProps> } };\n        const validator = (globalThis as C24Global).C24Home?.validateAttributes;\n\n        if (typeof validator === 'function') {\n            const validated = validator(this.attributes) as Partial<ShoautTeaserProps>;\n            this.deviceOutput = (validated.deviceOutput ?? this.deviceOutput) as ShoautTeaserProps['deviceOutput'];\n            this.platform = (validated.platform ?? this.platform) as ShoautTeaserProps['platform'];\n            this.user = validated.user ?? this.user;\n            this.language =\n                validated.language !== undefined\n                    ? validated.language === 'en-GB'\n                        ? 'en-GB'\n                        : 'de-DE'\n                    : this.language;\n            return;\n        }\n\n        const parsed: Partial<ShoautTeaserProps> = {};\n        const attrs = this.attributes;\n        for (let i = 0; i < attrs.length; i++) {\n            const attr = attrs[i];\n            const name = attr.name;\n            const value = attr.value;\n            const camelName = name.replace(/-([a-z])/g, (_, c: string) => c.toUpperCase());\n\n            if (camelName === 'deviceOutput' || name === 'deviceoutput') {\n                parsed.deviceOutput = (value || 'desktop') as ShoautTeaserProps['deviceOutput'];\n            } else if (camelName === 'language') {\n                parsed.language = (value || 'de-DE') as Language;\n            } else if (camelName === 'platform') {\n                parsed.platform = (value || 'web') as ShoautTeaserProps['platform'];\n            } else if (camelName === 'user' && value) {\n                try {\n                    parsed.user = JSON.parse(value) as UserInfo;\n                } catch {\n                    parsed.user = undefined;\n                }\n            }\n        }\n\n        this.deviceOutput = (parsed.deviceOutput ?? 'desktop') as ShoautTeaserProps['deviceOutput'];\n        this.platform = (parsed.platform ?? 'web') as ShoautTeaserProps['platform'];\n        const rawLang = parsed.language ?? 'de-DE';\n        this.language = rawLang === 'en-GB' ? 'en-GB' : 'de-DE';\n        this.user = parsed.user;\n    }\n\n    attributeChangedCallback(_name: string, oldValue: string, newValue: string): void {\n        if (oldValue === newValue) {\n            return;\n        }\n\n        this.applyAttributesFromHost();\n\n        if (this.shadow) {\n            this.render();\n        }\n    }\n\n    connectedCallback(): void {\n        try {\n            if (!this.shadow) {\n                this.shadow = this.attachShadow({ mode: 'closed' });\n            }\n\n            this.applyAttributesFromHost();\n\n            this.render();\n            this.setupRadioButtons();\n            this.setupKeyboardNavigation();\n            this.setupResponsiveBackground();\n            this.setupTracking();\n        } catch (error) {\n            this.handleError(error);\n        }\n    }\n\n    private render(): void {\n        const root = this.shadow;\n        if (!root) {\n            return;\n        }\n\n        const content = this.getDesktopContent();\n\n        root.innerHTML = `\n      <style>${styles}</style>\n      <div class=\"product-teaser-container\">\n        ${content}\n      </div>\n    `;\n\n        this.setupRadioButtons();\n    }\n\n    private getDesktopContent(): string {\n        return `\n      <div class=\"c24-aut-slidercontainer\">\n        <a class=\"c24-teaser clearfix teaser-link\" href=\"https://reifen.auto.check24.de/ul?cpwpset=web_teaser_tires\" aria-label=\"Günstige Reifen kaufen bei CHECK24 und direkt wechseln lassen\" style=\"background-size: cover; background-position: center; background-repeat: no-repeat;\">\n          <div class=\"c24-teaser-head\">\n            <div class=\"c24-teaser-headline-wrapper c24-teaser-headline-light\">\n              <div class=\"c24-teaser-headline\"><span class=\"c24-teaser-headline-text\">Günstige Reifen </span><span class=\"c24-teaser-headline-text\">bei CHECK24 kaufen</span></div>\n            </div>\n            <div class=\"c24-teaser-subline-wrapper c24-teaser-subline-light\">\n              <div class=\"c24-teaser-subline\">und direkt wechseln lassen</div>\n            </div>\n          </div>\n        </a>\n        <div class=\"c24-yellow-box c24-teaser-slider-shoaut\">\n          <div>\n\n            <form action=\"https://reifen.auto.check24.de/suche?cpwpset=web_teaser_tires\" method=\"get\" class=\"c24-yellow-box-4-columns\" aria-label=\"Reifensuche nach Saison\">\n              <div class=\"c24-select-tabs\" role=\"radiogroup\" aria-label=\"Saison auswählen\">\n                <label class=\"c24-yellow-select c24-yellow-select-toggle-wrapper c24-aut-type-chip carpartsSeason-Ganzjahresreifen \" data-value=\"ganzjahresreifen\" data-trigger=\"\">\n                  <input type=\"radio\" name=\"season\" value=\"ganzjahresreifen\" class=\"c24-yellow-select-input\" aria-label=\"Ganzjahresreifen\">\n                  <div class=\"c24-yellow-select-img\">\n                    <svg class=\"whole-year-icon\" viewBox=\"0 0 20 20\" width=\"25\" height=\"25\">\n                      <path class=\"whole-year-icon-yellow\" vector-effect=\"non-scaling-stroke\" d=\"M14.438,5.773c.212,0,.466-.078.636-.235l1.868-1.725c.164-.143.258-.361.255-.589.003-.228-.091-.445-.255-.588-.166-.152-.377-.236-.595-.235-.255,0-.467.078-.637.235l-1.868,1.726c-.164.143-.257.36-.254.588,0,.235.085.431.254.588.128.157.34.235.595.235h0ZM15.032,13.459c-.34-.313-.892-.313-1.231,0-.164.143-.258.36-.255.588,0,.236.085.432.255.588l1.868,1.726c.169.157.382.235.637.235s.467-.078.595-.235c.339-.314.339-.823,0-1.138l-1.869-1.764h0ZM19.107,8.675h-2.631c-.468,0-.892.353-.892.823s.382.823.892.823h2.632c.467,0,.892-.353.892-.823s-.382-.824-.892-.824h0Z\"/>\n                      <path class=\"whole-year-icon-blue\" d=\"M9.109.83c0-.435-.335-.83-.781-.83s-.781.356-.781.83v2.332l-1.004-1.067c-.3-.316-.778-.316-1.078,0-.148.155-.228.37-.223.593,0,.238.074.435.223.553l2.081,2.213v3.163l-2.602-1.581-.781-3.044c-.112-.435-.52-.673-.929-.593-.186.039-.372.198-.483.356-.112.198-.112.395-.075.633l.372,1.463-1.896-1.185c-.185-.118-.372-.118-.558-.079-.198.047-.364.194-.446.395-.223.396-.073.87.298,1.107l1.896,1.147-1.413.395c-.408.158-.632.593-.52,1.028.074.356.408.593.743.593.038,0,.112,0,.186-.04l2.863-.83,2.602,1.582-2.602,1.581-2.863-.751c-.372-.119-.818.158-.929.553-.038.198-.038.395.074.593s.261.356.446.395l1.377.396-1.897,1.186c-.171.107-.302.274-.372.474C-.037,14.589,0,14.826.112,15.024c.186.395.669.513,1.041.317l1.896-1.187-.033.131-.338,1.332c-.112.435.148.87.558.988.446.118.818-.158.929-.593l.781-3.043,2.602-1.581v3.163l-2.081,2.213c-.143.151-.223.357-.223.573s.08.422.223.573c.297.317.781.317,1.078,0l1.004-1.067v2.332c0,.435.335.83.781.83s.781-.356.781-.83\"/>\n                      <path class=\"whole-year-icon-yellow\" d=\"M12.309,10.106c0-2-1.4-3.8-3.2-4.1v1.7c1,.4,1.6,1.3,1.6,2.4s-.7,2.1-1.6,2.4v1.6c1.8-.3,3.2-2.1,3.2-4h0Z\"/>\n                    </svg>\n                  </div>\n                  <div class=\"c24-yellow-box-select-label\">Ganzjahr</div>\n                </label>\n                <label class=\"c24-yellow-select c24-yellow-select-toggle-wrapper c24-aut-type-chip carpartsSeason-Winterreifen active\" data-value=\"winterreifen\" data-trigger=\"\">\n                  <input type=\"radio\" name=\"season\" value=\"winterreifen\" class=\"c24-yellow-select-input\" aria-label=\"Winterreifen\">\n                  <div class=\"c24-yellow-select-img\">\n                    <svg class=\"winter-icon\" viewBox=\"0 0 512 512\" width=\"25\" height=\"25\">\n                      <path d=\"M240 16c0-8.8-7.2-16-16-16s-16 7.2-16 16V89.4L171.3 52.7c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6L208 134.6v93.7l-81.1-46.8-21.7-81c-2.3-8.5-11.1-13.6-19.6-11.3S72 100.2 74.3 108.7l13.4 50.1L24.2 122.1c-7.7-4.4-17.4-1.8-21.9 5.9s-1.8 17.4 5.9 21.9l63.5 36.7L21.6 200C13 202.3 8 211 10.3 219.6s11.1 13.6 19.6 11.3l81-21.7L192 256l-81.1 46.8-81-21.7c-8.5-2.3-17.3 2.8-19.6 11.3S13 309.7 21.6 312l50.1 13.4L8.2 362.1C.5 366.6-2.1 376.3 2.3 384s14.2 10.3 21.9 5.9l63.5-36.7L74.3 403.3c-2.3 8.5 2.8 17.3 11.3 19.6s17.3-2.8 19.6-11.3l21.7-81L208 283.7v93.7l-59.3 59.3c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0L208 422.6V496c0 8.8 7.2 16 16 16s16-7.2 16-16V422.6l36.7 36.7c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6L240 377.4V283.7l81.1 46.8 21.7 81c2.3 8.5 11.1 13.6 19.6 11.3s13.6-11.1 11.3-19.6l-13.4-50.1 63.5 36.7c7.7 4.4 17.4 1.8 21.9-5.9s1.8-17.4-5.9-21.9l-63.5-36.7L426.4 312c8.5-2.3 13.6-11.1 11.3-19.6s-11.1-13.6-19.6-11.3l-81 21.7L256 256l81.1-46.8 81 21.7c8.5 2.3 17.3-2.8 19.6-11.3s-2.8-17.3-11.3-19.6l-50.1-13.4 63.5-36.7c7.7-4.4 10.3-14.2 5.9-21.9s-14.2-10.3-21.9-5.9l-63.5 36.7 13.4-50.1c2.3-8.5-2.8-17.3-11.3-19.6s-17.3 2.8-19.6 11.3l-21.7 81L240 228.3V134.6l59.3-59.3c6.2-6.2 6.2-16.4 0-22.6s-16.4-6.2-22.6 0L240 89.4V16z\"/>\n                    </svg>\n                  </div>\n                  <div class=\"c24-yellow-box-select-label\">Winter</div>\n                </label>\n                <label class=\"c24-yellow-select c24-yellow-select-toggle-wrapper c24-aut-type-chip carpartsSeason-Sommerreifen \" data-value=\"sommerreifen\" data-trigger=\"\">\n                  <input type=\"radio\" name=\"season\" value=\"sommerreifen\" class=\"c24-yellow-select-input\" aria-label=\"Sommerreifen\" checked>\n                  <div class=\"c24-yellow-select-img\">\n                    <svg class=\"summer-icon\" viewBox=\"0 0 512 512\" width=\"25\" height=\"25\">\n                      <path d=\"M280 24V88c0 13.3-10.7 24-24 24s-24-10.7-24-24V24c0-13.3 10.7-24 24-24s24 10.7 24 24zm157 84.9l-45.3 45.3c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9L403.1 75c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9zM108.9 75l45.3 45.3c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0L75 108.9c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0zM24 232H88c13.3 0 24 10.7 24 24s-10.7 24-24 24H24c-13.3 0-24-10.7-24-24s10.7-24 24-24zm400 0h64c13.3 0 24 10.7 24 24s-10.7 24-24 24H424c-13.3 0-24-10.7-24-24s10.7-24 24-24zM154.2 391.8L108.9 437c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l45.3-45.3c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9zm237.6-33.9L437 403.1c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-45.3-45.3c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0zM280 424v64c0 13.3-10.7 24-24 24s-24-10.7-24-24V424c0-13.3 10.7-24 24-24s24 10.7 24 24zm40-168a64 64 0 1 0 -128 0 64 64 0 1 0 128 0zm-176 0a112 112 0 1 1 224 0 112 112 0 1 1 -224 0z\"/>\n                    </svg>\n                  </div>\n                  <div class=\"c24-yellow-box-select-label\">Sommer</div>\n                </label>\n              </div>\n              <button type=\"submit\" class=\"c24-yellow-box-button\" aria-label=\"Reifen finden\">Reifen finden</button>\n            </form>\n          </div>\n        </div>\n      </div>\n    `;\n    }\n\n    private setupRadioButtons(): void {\n        const root = this.shadow;\n        if (!root) {\n            return;\n        }\n\n        const radioButtons = root.querySelectorAll<HTMLInputElement>('input[type=\"radio\"][name=\"season\"]');\n        const labels = root.querySelectorAll<HTMLLabelElement>('label.c24-yellow-select');\n\n        const checkedRadio = Array.from(radioButtons).find((radio) => radio.checked);\n        if (!checkedRadio) {\n            const winterRadio = Array.from(radioButtons).find((r) => r.value === 'winterreifen');\n            if (winterRadio) {\n                winterRadio.checked = true;\n                this.updateActiveClass(winterRadio);\n            }\n        } else {\n            this.updateActiveClass(checkedRadio);\n        }\n\n        labels.forEach((label) => {\n            label.addEventListener('click', () => {\n                const radio = label.querySelector<HTMLInputElement>('input[type=\"radio\"]');\n                if (radio) {\n                    radio.checked = true;\n                    this.updateActiveClass(radio);\n                }\n            });\n        });\n\n        radioButtons.forEach((radio) => {\n            radio.addEventListener('change', () => {\n                if (radio.checked) {\n                    this.updateActiveClass(radio);\n                }\n            });\n\n            radio.addEventListener('keydown', (e) => {\n                if (e.key === ' ' || e.key === 'Enter') {\n                    e.preventDefault();\n                    radio.checked = true;\n                    radio.dispatchEvent(new Event('change'));\n                }\n            });\n        });\n    }\n\n    private setupKeyboardNavigation(): void {\n        const root = this.shadow;\n        if (!root) {\n            return;\n        }\n\n        const tabs = root.querySelectorAll<HTMLAnchorElement>('.c24-yellow-tab[role=\"tab\"]');\n\n        tabs.forEach((tab, index) => {\n            tab.addEventListener('keydown', (e) => {\n                let targetIndex = index;\n\n                if (e.key === 'ArrowRight' || e.key === 'ArrowDown') {\n                    e.preventDefault();\n                    targetIndex = (index + 1) % tabs.length;\n                } else if (e.key === 'ArrowLeft' || e.key === 'ArrowUp') {\n                    e.preventDefault();\n                    targetIndex = (index - 1 + tabs.length) % tabs.length;\n                } else if (e.key === 'Home') {\n                    e.preventDefault();\n                    targetIndex = 0;\n                } else if (e.key === 'End') {\n                    e.preventDefault();\n                    targetIndex = tabs.length - 1;\n                }\n\n                if (targetIndex !== index) {\n                    tabs[targetIndex].focus();\n                    tabs.forEach((t) => t.setAttribute('aria-selected', 'false'));\n                    tabs[targetIndex].setAttribute('aria-selected', 'true');\n                }\n            });\n        });\n    }\n\n    private updateActiveClass(radio: HTMLInputElement): void {\n        const form = radio.closest('form');\n\n        if (!form) {\n            return;\n        }\n\n        const allLabels = form.querySelectorAll<HTMLLabelElement>('label.c24-yellow-select');\n        allLabels.forEach((label) => {\n            label.classList.remove('active');\n        });\n\n        if (radio.checked) {\n            const label = radio.closest<HTMLLabelElement>('label.c24-yellow-select');\n\n            if (label) {\n                label.classList.add('active');\n            }\n        }\n    }\n\n    private setupResponsiveBackground(): void {\n        const mobileQuery = window.matchMedia('(max-width: 768px)');\n\n        const updateBackground = (matches: boolean): void => {\n            if (matches) {\n                this.dispatchEvent(\n                    new CustomEvent('c24-background-update', {\n                        bubbles: true,\n                        detail: {\n                            productSlug: this.productSlug,\n                            backgroundPosition: 'center bottom',\n                            backgroundSize: 'cover',\n                        },\n                    })\n                );\n            } else {\n                this.dispatchEvent(\n                    new CustomEvent('c24-background-update', {\n                        bubbles: true,\n                        detail: {\n                            productSlug: this.productSlug,\n                            backgroundSize: 'cover',\n                        },\n                    })\n                );\n            }\n        };\n\n        updateBackground(mobileQuery.matches);\n\n        mobileQuery.addEventListener('change', (e) => updateBackground(e.matches));\n    }\n    \n    private setupTracking(): void {\n        const root = this.shadow;\n        if (!root) return;\n\n        root.querySelector<HTMLFormElement>('form')?.addEventListener('submit', (e) => {\n            e.preventDefault();\n            const form = e.currentTarget as HTMLFormElement;\n            const season = new FormData(form).get('season');\n            const url = new URL('https://reifen.auto.check24.de/suche');\n            if (season) url.searchParams.set('season', String(season));\n            url.searchParams.set('cpwpset', 'web_teaser_tires');\n            window.location.href = url.toString();\n        });\n    }\n\n    private handleError(error: unknown): void {\n        const errorMessage = error instanceof Error ? error.message : 'Unknown error occurred';\n        console.error('ShoautTeaser error:', errorMessage);\n\n        const root = this.shadow;\n        if (!root) {\n            return;\n        }\n\n        root.innerHTML = `\n      <style>${styles}</style>\n      <div class=\"product-teaser-container\">\n        <div class=\"product-teaser-error\">\n          <p>Error loading teaser: ${errorMessage}</p>\n        </div>\n      </div>\n    `;\n    }\n}\n\nif (!customElements.get('shoaut-summer2026default')) {\n    customElements.define('shoaut-summer2026default', ShoautTeaserClient);\n}"],"names":["ShoautTeaserClient","HTMLElement","constructor","super","__publicField","this","observedAttributes","applyAttributesFromHost","validator","_a","globalThis","C24Home","validateAttributes","validated","attributes","deviceOutput","_b","platform","_c","user","_d","language","parsed","attrs","i","length","attr","name","value","camelName","replace","_","c","toUpperCase","JSON","parse","e","_e","_f","rawLang","_g","attributeChangedCallback","_name","oldValue","newValue","shadow","render","connectedCallback","attachShadow","mode","setupRadioButtons","setupKeyboardNavigation","setupResponsiveBackground","setupTracking","error","handleError","root","content","getDesktopContent","innerHTML","styles","radioButtons","querySelectorAll","labels","checkedRadio","Array","from","find","radio","checked","updateActiveClass","winterRadio","r","forEach","label","addEventListener","querySelector","key","preventDefault","dispatchEvent","Event","tabs","tab","index","targetIndex","focus","t","setAttribute","form","closest","classList","remove","add","mobileQuery","window","matchMedia","updateBackground","matches","CustomEvent","bubbles","detail","productSlug","backgroundPosition","backgroundSize","currentTarget","season","FormData","get","url","URL","searchParams","set","String","location","href","toString","errorMessage","Error","message","console","customElements","define"],"mappings":"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"}