{"version":3,"file":"client.mjs","sources":["../config.ts","../app/styles.ts","../app/PopularDestinations.ts","../app/index.client.ts"],"sourcesContent":["declare const WEBCOMPONENT_ENV: string | undefined;\n\nexport const COMPONENT_NAME = 'holidayflat-widget';\n// export const COMPONENT_NAME = 'c24-test';\n\nexport const ITEMS_TO_DISPLAY = 4;\n\nconst API_URL = {\n    dev: 'https://apistaging.ferienwohnung.check24-test.de/proxy/holding/locations/widgets/nearby.json',\n    staging: 'https://apistaging.ferienwohnung.check24-test.de/proxy/holding/locations/widgets/nearby.json',\n    prod: 'https://api.ferienwohnung.check24.de/proxy/holding/locations/widgets/nearby.json',\n} as const;\n\nconst HOST_URLS = {\n    staging: 'https://staging.ferienwohnung.check24.de',\n    prod: 'https://ferienwohnung.check24.de',\n}\n\nconst FALLBACK_API_URL = API_URL.prod;\n// const FALLBACK_API_URL = API_URL.staging;\n\nfunction getEnvironment(): 'dev' | 'staging' | 'prod' | null {\n    if (typeof WEBCOMPONENT_ENV !== 'undefined') {\n        if (WEBCOMPONENT_ENV === 'dev' || WEBCOMPONENT_ENV === 'staging' || WEBCOMPONENT_ENV === 'prod') {\n            return WEBCOMPONENT_ENV;\n        }\n    }\n\n    if (typeof window !== 'undefined') {\n        try {\n            const hostname = window.location.hostname;\n\n            if (hostname.includes('check24-test.de') || hostname.includes('check24-test.at')) {\n                return 'staging';\n            }\n\n            return 'prod';\n        } catch (e) {\n            return 'prod';\n        }\n    }\n\n    return null;\n}\n\nexport function getHost(): string {\n    const env = getEnvironment();\n\n    if (env !== 'prod') {\n        HOST_URLS.staging;\n    }\n\n    return HOST_URLS.prod;\n}\n\nexport function getApiUrl(): string {\n    const env = getEnvironment();\n\n    if (env) {\n        return API_URL[env];\n    }\n\n    return FALLBACK_API_URL;\n}\n\nexport const FALLBACK_DATA = {\n    \"headline\": \"Beliebte Reiseziele f\\u00fcr Ferienwohnungen\",\n    \"requestedData\": null,\n    \"locationWidgets\": [\n        {\n            \"locationId\": 398652,\n            \"locationName\": \"Mallorca\",\n            \"imageUrl\": \"https:\\/\\/assets.ferienwohnung.check24.de\\/size=0x720\\/di=4\\/nfc=301\\/source=bG9jYWw6Ly9sb2NhdGlvbnMvMzk4NjUyLmpwZw==!eaa2e0\\/picture.jpg\",\n            \"distanceInKmLabel\": null,\n            \"accommodationCountLabel\": null,\n            \"placeholderClickoutUrl\": \"https:\\/\\/ferienwohnung.check24.de\\/search\\/Mallorca-398652\\/2026-04-25\\/2026-05-02\\/[A|A]?reason=private\",\n            \"priceLabel\": null,\n            \"configurationLabel\": null,\n            \"locationLatitude\": 39.62006567,\n            \"locationLongitude\": 2.93573489,\n            \"polygonId\": 91382\n        },\n        {\n            \"locationId\": 399063,\n            \"locationName\": \"Gardasee\",\n            \"imageUrl\": \"https:\\/\\/assets.ferienwohnung.check24.de\\/size=0x720\\/di=4\\/nfc=301\\/source=bG9jYWw6Ly9sb2NhdGlvbnMvMzk5MDYzLmpwZw==!e3f86e\\/picture.jpg\",\n            \"distanceInKmLabel\": null,\n            \"accommodationCountLabel\": null,\n            \"placeholderClickoutUrl\": \"https:\\/\\/ferienwohnung.check24.de\\/search\\/Gardasee-399063\\/2026-04-25\\/2026-05-02\\/[A|A]?reason=private\",\n            \"priceLabel\": null,\n            \"configurationLabel\": null,\n            \"locationLatitude\": 45.622425,\n            \"locationLongitude\": 10.68745007,\n            \"polygonId\": 91384\n        },\n        {\n            \"locationId\": 399100,\n            \"locationName\": \"Allg\\u00e4u\",\n            \"imageUrl\": \"https:\\/\\/assets.ferienwohnung.check24.de\\/size=0x720\\/di=4\\/nfc=301\\/source=bG9jYWw6Ly9sb2NhdGlvbnMvMzk5MTAwLmpwZw==!c5d3ae\\/picture.jpg\",\n            \"distanceInKmLabel\": null,\n            \"accommodationCountLabel\": null,\n            \"placeholderClickoutUrl\": \"https:\\/\\/ferienwohnung.check24.de\\/search\\/Allg%C3%A4u-399100\\/2026-04-25\\/2026-05-02\\/[A|A]?reason=private\",\n            \"priceLabel\": null,\n            \"configurationLabel\": null,\n            \"locationLatitude\": 47.69323655,\n            \"locationLongitude\": 10.29657072,\n            \"polygonId\": 149258\n        },\n        {\n            \"locationId\": 399283,\n            \"locationName\": \"Istrien\",\n            \"imageUrl\": \"https:\\/\\/assets.ferienwohnung.check24.de\\/size=0x720\\/di=4\\/nfc=301\\/source=bG9jYWw6Ly9sb2NhdGlvbnMvMzk5MjgzLmpwZw==!880d10\\/picture.jpg\",\n            \"distanceInKmLabel\": null,\n            \"accommodationCountLabel\": null,\n            \"placeholderClickoutUrl\": \"https:\\/\\/ferienwohnung.check24.de\\/search\\/Istrien-399283\\/2026-04-25\\/2026-05-02\\/[A|A]?reason=private\",\n            \"priceLabel\": null,\n            \"configurationLabel\": null,\n            \"locationLatitude\": 45.14774,\n            \"locationLongitude\": 14.00124,\n            \"polygonId\": 91385\n        },\n        {\n            \"locationId\": 399128,\n            \"locationName\": \"R\\u00fcgen\",\n            \"imageUrl\": \"https:\\/\\/assets.ferienwohnung.check24.de\\/size=0x720\\/di=4\\/nfc=301\\/source=bG9jYWw6Ly9sb2NhdGlvbnMvMzk5MTI4LmpwZw==!05abeb\\/picture.jpg\",\n            \"distanceInKmLabel\": null,\n            \"accommodationCountLabel\": null,\n            \"placeholderClickoutUrl\": \"https:\\/\\/ferienwohnung.check24.de\\/search\\/R%C3%BCgen-399128\\/2026-04-25\\/2026-05-02\\/[A|A]?reason=private\",\n            \"priceLabel\": null,\n            \"configurationLabel\": null,\n            \"locationLatitude\": 54.46113,\n            \"locationLongitude\": 13.437234,\n            \"polygonId\": 91387\n        }\n    ]\n} as const;\n","export const componentStyles = `\n:host {\n    display: block;\n    box-sizing: border-box;\n    width: 100%;\n}\n.container {\n    width: 100%;\n    margin: 0;\n    padding: 0;\n}\n.title {\n    font-size: 24px;\n    line-height: 30px;\n    font-weight: bold;\n    color: #181818;\n    text-align: start;\n    overflow: hidden;\n    text-overflow: ellipsis;\n    width: 100%;\n    margin: 0 0 16px 0;\n    display: -webkit-box;\n    -webkit-box-orient: vertical;\n    -webkit-line-clamp: 2;\n    line-clamp: 2;\n}\n@media (max-width: 768px) {\n    .title {\n        font-size: 20px;\n        line-height: 22px;\n    }\n}\n.content {\n    display: grid;\n    grid-template-columns: repeat(4, 1fr);\n    gap: 16px;\n    width: 100%;\n}\n@media (max-width: 768px) {\n    .content {\n        grid-template-columns: repeat(2, 1fr);\n    }\n}\n.tile {\n    height: 220px;\n    box-sizing: border-box;\n    text-decoration: none;\n    border-radius: 10px;\n    padding: 16px;\n    box-shadow: 0 0 8px rgb(0 0 0 / 0.16);\n    overflow: hidden;\n    position: relative;\n    display: flex;\n    text-align: center;\n    align-items: flex-end;\n    justify-content: center;\n}\n.tile-bg-image {\n    position: absolute;\n    top: 0;\n    left: 0;\n    width: 100%;\n    height: 100%;\n    object-fit: cover;\n    transition: transform 0.7s ease-in-out;\n}\n@media (hover: hover) and (pointer: fine) {\n    .tile:hover .tile-bg-image {\n        transform: scale(1.05);\n    }\n}\n.tile-overlay {\n    position: absolute;\n    height: 100%;\n    width: 100%;\n    border-radius: 10px;\n    top: 0;\n    left: 0;\n    background: linear-gradient(to top, #000000 -80px, transparent 40%, transparent 100%);\n    z-index: 1;\n}\n.tile-text {\n    color: #fff;\n    position: relative;\n    z-index: 2;\n}\n.tile-title {\n    font-size: 18px;\n    font-weight: bold;\n    margin-bottom: 8px;\n    line-height: 1;\n}\n.tile-subtitle {\n    font-size: 14px;\n}\n.show-more-link {\n    display: inline-block;\n    font-size: 14px;\n    text-align: left;\n    text-decoration: none;\n    color: #0563C1;\n}\n.show-more-link:hover {\n    text-decoration: underline;\n}\n.show-more-container {\n    display: flex;\n    justify-content: flex-start;\n    width: 100%;\n    margin-top: 16px;\n}\n.loading-wrapper {\n    width: 100%;\n}\n.loading-shimmer {\n    display: grid;\n    grid-template-columns: repeat(4, 1fr);\n    gap: 16px;\n    width: 100%;\n}\n@media (max-width: 768px) {\n    .loading-shimmer {\n        grid-template-columns: repeat(2, 1fr);\n    }\n}\n.loading-tile {\n    background-color: var(--skeleton-dark, #EBEBEB);\n    box-sizing: border-box;\n    height: 220px;\n    border-radius: 10px;\n    position: relative;\n    overflow: hidden;\n}\n@keyframes skeleton-pulse {\n    0% {\n        background-color: var(--skeleton-dark, #EBEBEB);\n    }\n    9% {\n        background-color: var(--skeleton-dark, #EBEBEB);\n    }\n    50% {\n        background-color: var(--skeleton-light, #F5F6F5);\n    }\n    59% {\n        background-color: var(--skeleton-light, #F5F6F5);\n    }\n    100% {\n        background-color: var(--skeleton-dark, #EBEBEB);\n    }\n}\n.loading-headline-group {\n    display: flex;\n    box-sizing: border-box;\n    flex-direction: column;\n    gap: 2px;\n    align-items: flex-start;\n    height: 30px;\n    margin: 0 0 16px;\n}\n.loading-headline {\n    background-color: var(--skeleton-dark, #EBEBEB);\n    border-radius: 50px;\n    box-sizing: border-box;\n    width: 50%;\n    height: 30px;\n    position: relative;\n    overflow: hidden;\n}\n.loading-headline.mobile-only {\n    display: none;\n}\n@media (max-width: 768px) {\n    .loading-headline-group, .loading-headline {\n        height: 22px;\n    }\n}\n@media (max-width: 410px) {\n    .loading-headline.mobile-only {\n        display: block;\n    }\n    .loading-headline-group {\n        height: 44px;\n    }\n    .loading-headline {\n        height: 20px;\n        width: 70%;\n    }\n    .loading-headline:not(.mobile-only) {\n        width: 50%;\n    }\n}\n.loading-link {\n    width: 72px;\n    height: 16px;\n    border-radius: 10px;\n    background-color: var(--skeleton-dark, #EBEBEB);\n    position: relative;\n    overflow: hidden;\n}\n.container-overlay {\n    background: var(--skeleton-dark, #EBEBEB);\n    animation: skeleton-pulse 1100ms ease-in-out infinite;\n    animation-delay: 100ms;\n    width: 100%;\n    height: 100%;\n}\n`;\n","import { FALLBACK_DATA, getApiUrl, getHost, ITEMS_TO_DISPLAY } from '../config';\nimport { componentStyles } from './styles';\n\ninterface LocationWidget {\n    locationId: number;\n    locationName: string;\n    imageUrl: string;\n    distanceInKmLabel: string | null;\n    accommodationCountLabel: string | null;\n    placeholderClickoutUrl: string;\n    priceLabel: string | null;\n    configurationLabel: string | null;\n    locationLatitude: number;\n    locationLongitude: number;\n    polygonId: number | null;\n}\n\ninterface ApiResponse {\n    headline: string;\n    requestedData: unknown | null;\n    locationWidgets: Array<LocationWidget>;\n}\n\nexport default class PopularDestinations extends HTMLElement {\n    public readonly shadowRoot: ShadowRoot;\n    private apiUrl: string = '';\n    private headline: string = 'Beliebte Reiseziele für Ferienwohnungen';\n    private locations: Array<LocationWidget> = [];\n    private isLoading: boolean = false;\n\n    public constructor() {\n        super();\n        try {\n            this.shadowRoot = this.attachShadow({ mode: 'closed' });\n        } catch (error) {\n            // eslint-disable-next-line no-console\n            console.error('[PopularDestinations] Error in constructor:', error);\n            throw error;\n        }\n    }\n\n    public connectedCallback(): void {\n        try {\n            this.readAttributes();\n            this.fetchLocations();\n        } catch (error) {\n            // eslint-disable-next-line no-console\n            console.error('[PopularDestinations] Error in connectedCallback:', error);\n        }\n    }\n\n    private readAttributes(): void {\n        this.apiUrl = getApiUrl();\n    }\n\n    private async fetchLocations(): Promise<void> {\n        if (this.isLoading) {\n            return;\n        }\n\n        this.isLoading = true;\n        this.render();\n\n        try {\n            const response = await fetch(this.apiUrl, {\n                method: 'GET',\n                credentials: 'omit',\n                headers: {\n                    'Accept': 'application/json',\n                },\n            });\n\n            if (!response.ok) {\n                const errorText = await response.text().catch(() => 'Unknown error');\n                throw new Error(`HTTP error! status: ${response.status}, message: ${errorText}`);\n            }\n\n            const data: ApiResponse = await response.json();\n\n            if (!Array.isArray(data.locationWidgets)) {\n                throw new Error('Invalid API response format');\n            }\n\n            this.headline = data.headline || 'Beliebte Reiseziele für Ferienwohnungen';\n            this.locations = data.locationWidgets.slice(0, ITEMS_TO_DISPLAY);\n        } catch (error) {\n            // eslint-disable-next-line no-console\n            console.error('[PopularDestinations] Error fetching locations:', error);\n            this.headline = FALLBACK_DATA.headline || 'Beliebte Reiseziele für Ferienwohnungen';\n            this.locations = FALLBACK_DATA.locationWidgets\n                .slice(0, ITEMS_TO_DISPLAY)\n                .map((location) => ({ ...location }));\n        } finally {\n            this.isLoading = false;\n            this.render();\n        }\n    }\n\n\n    private render(): void {\n        const style = document.createElement('style');\n        style.textContent = componentStyles;\n\n        const container = document.createElement('div');\n        container.className = 'container';\n\n        if (this.isLoading) {\n            const loadingTiles = Array.from({ length: ITEMS_TO_DISPLAY }, () =>\n                '<div class=\"loading-tile\"><div class=\"container-overlay\"></div></div>'\n            ).join('\\n');\n\n            container.innerHTML = `\n                <div class=\"loading-headline-group\">\n                    <div class=\"loading-headline\">\n                        <div class=\"container-overlay\"></div>\n                    </div>\n                    <div class=\"loading-headline mobile-only\">\n                        <div class=\"container-overlay\"></div>\n                    </div>\n                </div>\n                <div class=\"loading-wrapper\">\n                    <div class=\"loading-shimmer\">\n                        ${loadingTiles}\n                    </div>\n                </div>\n                <div class=\"show-more-container\">\n                    <div class=\"loading-link\"><div class=\"container-overlay\"></div></div>\n                </div>\n            `;\n        } else {\n            let content = `<h2 class=\"title\">${this.headline}</h2>`;\n\n            if (this.locations.length > 0) {\n                const tiles = this.locations.map((location) => `\n                    <a\n                        href=\"${location.placeholderClickoutUrl}\"\n                        class=\"tile\"\n                        aria-label=\"Suche nach Ferienwohnungen in ${location.locationName}\"\n                    >\n                        <img\n                            class=\"tile-bg-image\"\n                            src=\"${location.imageUrl}\"\n                            alt=\"${location.locationName}\"\n                            loading=\"lazy\"\n                        />\n                        <div class=\"tile-overlay\"></div>\n                        <div class=\"tile-text\">\n                            <div class=\"tile-title\">${location.locationName}</div>\n                            <div class=\"tile-subtitle\">${location.accommodationCountLabel ?? ''}</div>\n                        </div>\n                    </a>\n                `).join('\\n');\n\n                content += `\n                <div class=\"content\">\n                    ${tiles}\n                </div>\n                <div class=\"show-more-container\">\n                    <a href=\"${getHost()}\" class=\"show-more-link\">Mehr Reiseziele entdecken</a>\n                </div>\n            `;\n            }\n\n            container.innerHTML = content;\n        }\n\n        // Clear and update shadow root\n        this.shadowRoot.innerHTML = '';\n        this.shadowRoot.appendChild(style);\n        this.shadowRoot.appendChild(container);\n    }\n}\n","import PopularDestinations from './PopularDestinations';\n\nif (typeof customElements !== 'undefined') {\n    customElements.define('holidayflat-widget', PopularDestinations);\n}\n\nexport default PopularDestinations;\n"],"names":[],"mappings":"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"}