{"version":3,"file":"593-58d3e1685be085ae07a6.js","mappings":"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","sources":["webpack://voresby.web/./Scripts/api/index.ts","webpack://voresby.web/./Scripts/components/forms/email-subscribe-form.tsx","webpack://voresby.web/./Scripts/components/subscribe-modal.tsx","webpack://voresby.web/./Scripts/cookieconsent.ts","webpack://voresby.web/./node_modules/jose/dist/browser/lib/buffer_utils.js","webpack://voresby.web/./node_modules/jose/dist/browser/util/errors.js","webpack://voresby.web/./node_modules/jose/dist/browser/runtime/webcrypto.js","webpack://voresby.web/./node_modules/jose/dist/browser/jwks/remote.js","webpack://voresby.web/./node_modules/jose/dist/browser/runtime/random.js","webpack://voresby.web/./node_modules/jose/dist/browser/jwe/flattened/encrypt.js","webpack://voresby.web/./node_modules/jose/dist/browser/util/decode_jwt.js","webpack://voresby.web/./node_modules/jose/dist/browser/runtime/base64url.js","webpack://voresby.web/./node_modules/jose/dist/browser/lib/is_object.js","webpack://voresby.web/./Scripts/components/forms/confirm-subscription-form.tsx","webpack://voresby.web/./Scripts/components/email-subscription/confirm-subscription-modal.tsx","webpack://voresby.web/./Scripts/util/is-first-page-view.ts","webpack://voresby.web/./Scripts/features/newsletter-popups/index.ts","webpack://voresby.web/./Scripts/features/newsletter-popups/one-tap/google-one-tap.tsx","webpack://voresby.web/./Scripts/util/fb.ts","webpack://voresby.web/./Scripts/util/gtm.ts","webpack://voresby.web/./node_modules/core-js/internals/create-property.js","webpack://voresby.web/./node_modules/core-js/modules/es.object.from-entries.js"],"sourcesContent":["import Cookies from \"js-cookie\";\r\nimport { SubscribeForm, SubscriptionApi } from \"../lib-api\";\r\nimport { CookieKeys } from \"../util/cookie\";\r\nimport { trackGaEvent } from \"../util/gtm\";\r\nimport { trackEventFbLead } from \"../util/fb\";\r\nimport { apiConfiguration } from \"../api-configuration\";\r\nimport clientConfiguration from \"../client-configuration\";\r\n\r\nconst subscriptionApi = new SubscriptionApi(apiConfiguration);\r\n\r\nexport const api = {\r\n  subscribeToNewsletter: async (values: SubscribeForm, location: string) => {\r\n    await subscriptionApi.apiSubscriptionsPut({\r\n      subscribeForm: values,\r\n    });\r\n    Cookies.set(CookieKeys.EmailSubscribed, \"true\", { expires: 365 });\r\n\r\n    trackGaEvent(\r\n      \"on_newsletter_subscribe\",\r\n      {\r\n        in_section: location,\r\n      },\r\n      {\r\n        email: values.email,\r\n        city: clientConfiguration.site.name,\r\n        country: \"Danmark\",\r\n      }\r\n    );\r\n    trackEventFbLead(\"Newsletter\");\r\n  },\r\n};\r\n","import { SubscribeForm } from \"../../lib-api\";\r\nimport React, { useState } from \"react\";\r\nimport { useFormik } from \"formik\";\r\nimport { object, string } from \"yup\";\r\nimport { Form, Button } from \"react-bootstrap\";\r\nimport { api } from \"../../api\";\r\n\r\nenum SubmitState {\r\n  None,\r\n  Submitted,\r\n  Error,\r\n}\r\n\r\nexport const EmailSubscribeForm = (props: {\r\n  location: string;\r\n  onSubscribed?: () => void;\r\n  hasAutofocus: boolean;\r\n}) => {\r\n  const [submitState, setSubmitState] = useState(SubmitState.None);\r\n\r\n  const {\r\n    values,\r\n    errors,\r\n    isSubmitting,\r\n    handleChange,\r\n    handleSubmit,\r\n    submitForm,\r\n  } = useFormik<SubscribeForm>({\r\n    initialValues: {\r\n      name: \"\",\r\n      email: \"\",\r\n    },\r\n    validationSchema: object({\r\n      email: string().required().email(),\r\n      name: string().max(100),\r\n    }),\r\n    onSubmit: async (values) => {\r\n      try {\r\n        await api.subscribeToNewsletter(values, props.location);\r\n        setSubmitState(SubmitState.Submitted);\r\n        if (props.onSubscribed != null) {\r\n          props.onSubscribed();\r\n        }\r\n      } catch (e) {\r\n        setSubmitState(SubmitState.Error);\r\n      }\r\n    },\r\n  });\r\n\r\n  return (\r\n    <div>\r\n      {submitState != SubmitState.Submitted && (\r\n        <Form onSubmit={handleSubmit}>\r\n          <Form.Group controlId=\"formSubscribeEmail\">\r\n            <Form.Label srOnly={true}>Email</Form.Label>\r\n            <Form.Control\r\n              isInvalid={errors.email != null}\r\n              name=\"email\"\r\n              type=\"email\"\r\n              placeholder=\"E-mail\"\r\n              value={values.email}\r\n              disabled={isSubmitting}\r\n              onChange={handleChange}\r\n              autoFocus={props.hasAutofocus}\r\n            />\r\n          </Form.Group>\r\n          <Button\r\n            disabled={isSubmitting}\r\n            variant=\"primary\"\r\n            block={true}\r\n            type=\"submit\"\r\n          >\r\n            Tilmeld\r\n          </Button>\r\n        </Form>\r\n      )}\r\n      {submitState == SubmitState.Error && (\r\n        <div>\r\n          Ups, der opstod en fejl.\r\n          <br />\r\n          <a className=\"text-primary\" onClick={() => submitForm()}>\r\n            Prøv igen...\r\n          </a>\r\n        </div>\r\n      )}\r\n      {submitState == SubmitState.Submitted && (\r\n        <div>Tak for din tilmelding.</div>\r\n      )}\r\n    </div>\r\n  );\r\n};\r\n","import React, { useState, useEffect } from \"react\";\r\nimport styled from \"styled-components\";\r\nimport clientConfiguration from \"../client-configuration\";\r\nimport Cookies from \"js-cookie\";\r\nimport { EmailSubscribeForm } from \"../components/forms/email-subscribe-form\";\r\nimport { CookieKeys } from \"../util/cookie\";\r\nimport { CampaignApi } from \"../lib-api/apis/CampaignApi\";\r\nimport { apiConfiguration } from \"../api-configuration\";\r\nimport { CampaignBookingDto } from \"../lib-api\";\r\nimport { createRoot, Root } from \"react-dom/client\";\r\n\r\nconst SlideUpContainer = styled(\"div\")({\r\n  position: \"fixed\",\r\n  zIndex: 20,\r\n  left: 0,\r\n  right: 0,\r\n  top: 0,\r\n  transition: \"linear 0.1s\",\r\n  pointerEvents: \"none\",\r\n});\r\n\r\nconst BoxContainer = styled.div({\r\n  margin: \"auto\",\r\n  maxWidth: \"400px\",\r\n});\r\n\r\nconst SlideUpBox = styled.div({\r\n  backgroundColor: \"white\",\r\n  pointerEvents: \"all\",\r\n  border: \"1px solid #333\",\r\n  position: \"relative\",\r\n  marginLeft: \"25px\",\r\n  marginRight: \"25px\",\r\n});\r\n\r\nconst CornerIcon = styled.div({\r\n  border: \"0\",\r\n  borderRadius: \"50%\",\r\n  backgroundColor: \"#D03822\",\r\n  color: \"#FFF\",\r\n  padding: \"10px\",\r\n  position: \"absolute\",\r\n  top: \"-30px\",\r\n  left: \"-30px\",\r\n  fontSize: \"12px\",\r\n  textAlign: \"center\",\r\n});\r\n\r\nconst api = new CampaignApi(apiConfiguration);\r\n\r\nconst getPreview = async (id: string) => {\r\n  const preview = await api.getCampaignBookingAsync({ id });\r\n  if (preview) {\r\n    return preview;\r\n  }\r\n\r\n  return null;\r\n};\r\n\r\nconst getCampaign = async () => {\r\n  const campaign = await api.getActiveCampaignBookingBySiteAsync();\r\n\r\n  if (campaign) {\r\n    return campaign;\r\n  }\r\n\r\n  return null;\r\n};\r\n\r\nconst SubscribeModal: React.FC<{\r\n  root: Root;\r\n  container: HTMLElement;\r\n  onDismiss: (didSubscribe: boolean) => void;\r\n  location?: string;\r\n  campaignId?: string;\r\n}> = (props) => {\r\n  const [shown, setShown] = useState(false);\r\n\r\n  const detach = (didSubscribe: boolean) => {\r\n    props.root.unmount();\r\n    props.container.parentNode?.removeChild(props.container);\r\n\r\n    if (didSubscribe) {\r\n      Cookies.set(CookieKeys.EmailSubscribed, \"true\", { expires: 365 });\r\n    } else {\r\n      Cookies.set(CookieKeys.SuppressSlideUp, \"true\", { expires: 3 });\r\n    }\r\n\r\n    props.onDismiss(didSubscribe);\r\n  };\r\n\r\n  const [campaign, setCampaign] = useState<CampaignBookingDto | undefined>();\r\n\r\n  useEffect(() => {\r\n    (async () => {\r\n      try {\r\n        if (props.campaignId) {\r\n          const result = await getPreview(props.campaignId);\r\n\r\n          if (result) {\r\n            setCampaign(result);\r\n          }\r\n        } else {\r\n          //ID is not set\r\n          //setCampaign(await getCampaign());\r\n        }\r\n      } catch (e) {\r\n        //ID is invalid\r\n        try {\r\n          //setCampaign(await getCampaign());\r\n        } catch (e) {\r\n          setCampaign(undefined);\r\n        }\r\n      }\r\n      setShown(true);\r\n    })();\r\n  }, [props.campaignId]);\r\n\r\n  return (\r\n    <>\r\n      <SlideUpContainer\r\n        style={{ transform: shown ? `translateY(10%)` : `translateY(-100%)` }}\r\n        onClick={(e) => e.stopPropagation()}\r\n      >\r\n        <BoxContainer>\r\n          <SlideUpBox className=\"shadow p-4\">\r\n            {campaign ? (\r\n              <CornerIcon\r\n                className=\"shadow\"\r\n                dangerouslySetInnerHTML={{ __html: campaign.prize! }}\r\n              ></CornerIcon>\r\n            ) : (\r\n              <></>\r\n            )}\r\n            <button\r\n              type=\"button\"\r\n              onClick={() => detach(false)}\r\n              className=\"close pl-3 pb-3 text-primary\"\r\n              style={{ opacity: 1 }}\r\n              aria-label=\"Close\"\r\n            >\r\n              <span aria-hidden=\"true\">&times;</span>\r\n            </button>\r\n            {campaign ? (\r\n              <h5 dangerouslySetInnerHTML={{ __html: campaign.title! }}></h5>\r\n            ) : (\r\n              <h5>Modtag gratis nyheder fra {clientConfiguration.site.name}</h5>\r\n            )}\r\n\r\n            {campaign ? (\r\n              <p dangerouslySetInnerHTML={{ __html: campaign.body! }}></p>\r\n            ) : (\r\n              <p>\r\n                Tilmeld dig VORES nyhedsbrev og få nyheder og lokaltilbud\r\n                direkte i indbakken hver uge.\r\n              </p>\r\n            )}\r\n            <EmailSubscribeForm\r\n              location={props.location || \"SlideUp\"}\r\n              onSubscribed={() => {\r\n                setTimeout(() => {\r\n                  detach(true);\r\n                }, 1500);\r\n              }}\r\n              hasAutofocus={true}\r\n            />\r\n          </SlideUpBox>\r\n        </BoxContainer>\r\n      </SlideUpContainer>\r\n    </>\r\n  );\r\n};\r\n\r\nlet isModalVisible = false;\r\n\r\nexport const showSubscribeModal = (\r\n  location?: string,\r\n  onDismis?: (didSubscribe: boolean) => void,\r\n  campaignId?: string\r\n) => {\r\n  if (!isModalVisible) {\r\n    const containerElement = document.createElement(\"div\");\r\n    document.body.appendChild(containerElement);\r\n    const root = createRoot(containerElement);\r\n    root.render(\r\n      <SubscribeModal\r\n        root={root}\r\n        container={containerElement}\r\n        onDismiss={(didSubscribe: boolean) => {\r\n          isModalVisible = false;\r\n          if (onDismis) {\r\n            onDismis(didSubscribe);\r\n          }\r\n        }}\r\n        location={location}\r\n        campaignId={campaignId}\r\n      />\r\n    );\r\n\r\n    isModalVisible = true;\r\n  }\r\n};\r\n","/* eslint-disable @typescript-eslint/ban-types */\r\n/* eslint-disable @typescript-eslint/no-unused-vars */\r\n/* eslint-disable no-var */\r\nimport clientConfiguration from \"./client-configuration\";\r\nimport { isNo3rdparty } from \"./util/browser-detection\";\r\n\r\nlet fbLoaded = false;\r\nlet gtmLoaded = false;\r\n\r\ndeclare const fbq: any;\r\nconst loadFb = () => {\r\n  console.log(\"loadFb\");\r\n  if (fbLoaded) return;\r\n  (function (f: any, b: any, e: any, v: any, n?: any, t?: any, s?: any) {\r\n    if (f.fbq) return;\r\n    n = f.fbq = function () {\r\n      n.callMethod ? n.callMethod.apply(n, arguments) : n.queue.push(arguments);\r\n    };\r\n    if (!f._fbq) f._fbq = n;\r\n    n.push = n;\r\n    n.loaded = !0;\r\n    n.version = \"2.0\";\r\n    n.queue = [];\r\n    t = b.createElement(e);\r\n    t.async = !0;\r\n    t.src = v;\r\n    s = b.getElementsByTagName(e)[0];\r\n    s.parentNode.insertBefore(t, s);\r\n  })(\r\n    window,\r\n    document,\r\n    \"script\",\r\n    \"https://connect.facebook.net/en_US/fbevents.js\"\r\n  );\r\n  fbq(\"init\", \"653644375453926\");\r\n  fbq(\"track\", \"PageView\", { hostname: location.hostname });\r\n\r\n  //const appId = \"603210533761694\";\r\n  //const script = document.createElement(\"script\");\r\n  //script.async = true;\r\n  //script.crossOrigin = \"anonymous\"\r\n  //script.src = `https://connect.facebook.net/da_DK/sdk.js#xfbml=1&version=v6.0&appId=${appId}&autoLogAppEvents=1`\r\n  //document.getElementsByTagName(\"script\")[0].parentNode.insertBefore(script, document.getElementsByTagName(\"script\")[0]);\r\n  fbLoaded = true;\r\n};\r\n\r\ninterface Window {\r\n  _sp_queue: any[];\r\n  _sp_: {\r\n    config: {\r\n      accountId: number;\r\n      baseEndpoint: string;\r\n      propertyHref: string;\r\n      gdpr: any;\r\n      events: {\r\n        onMessageChoiceSelect: Function;\r\n        onMessageReady: Function;\r\n        onMessageChoiceError: Function;\r\n        onPrivacyManagerAction: Function;\r\n        onPMCancel: Function;\r\n        onMessageReceiveData: Function;\r\n        onSPPMObjectReady: Function;\r\n        onConsentReady: (consentUUID: string, euconsent: string) => void;\r\n        onError: Function;\r\n      };\r\n    };\r\n  };\r\n}\r\n\r\ninterface SpecificConsent {\r\n  purpose?: string;\r\n  allowed: boolean;\r\n}\r\n\r\ninterface Concept {\r\n  specificConsent: SpecificConsent[];\r\n}\r\n\r\nconst loadGtm = () => {\r\n  if (gtmLoaded) return;\r\n\r\n  (function (w, d, s, l, i) {\r\n    w[l] = w[l] || [];\r\n    w[l].push({\r\n      \"gtm.start\": new Date().getTime(),\r\n      event: \"gtm.js\",\r\n    });\r\n    const f = d.getElementsByTagName(s)[0],\r\n      j: any = d.createElement(s),\r\n      dl = l != \"dataLayer\" ? \"&l=\" + l : \"\";\r\n    j.async = true;\r\n    j.src = \"https://www.googletagmanager.com/gtm.js?id=\" + i + dl;\r\n    f.parentNode!.insertBefore(j, f);\r\n  })(window, document, \"script\", \"dataLayer\", clientConfiguration.gtmId);\r\n  gtmLoaded = true;\r\n};\r\n\r\nfunction generateDeferredPromise() {\r\n  let resolve, reject;\r\n  const promise = new Promise((res, rej) => {\r\n    [resolve, reject] = [res, rej];\r\n  });\r\n  return { promise, reject, resolve };\r\n}\r\n\r\nconst { promise, resolve } = generateDeferredPromise();\r\n\r\nexport const cookieDecision = promise;\r\n\r\ndeclare const concept: Concept;\r\n\r\ndeclare const window: Window;\r\n\r\nwindow._sp_queue = [];\r\nwindow._sp_ = {\r\n  config: {\r\n    accountId: 1423,\r\n    baseEndpoint: \"https://cdn.privacy-mgmt.com\",\r\n    propertyHref: \"https://vores.dk\",\r\n    gdpr: {},\r\n    events: {\r\n      onMessageChoiceSelect: function () {\r\n        //console.log(\"[event] onMessageChoiceSelect\", arguments);\r\n      },\r\n      onMessageReady: function () {\r\n        //console.log(\"[event] onMessageReady\", arguments);\r\n      },\r\n      onMessageChoiceError: function () {\r\n        //console.log(\"[event] onMessageChoiceError\", arguments);\r\n      },\r\n      onPrivacyManagerAction: function () {\r\n        //console.log(\"[event] onPrivacyManagerAction\", arguments);\r\n      },\r\n      onPMCancel: function () {\r\n        //console.log(\"[event] onPMCancel\", arguments);\r\n      },\r\n      onMessageReceiveData: function () {\r\n        //console.log(\"[event] onMessageReceiveData\", arguments);\r\n      },\r\n      onSPPMObjectReady: function () {\r\n        //console.log(\"[event] onSPPMObjectReady\", arguments);\r\n      },\r\n      onConsentReady: function (consentUUID, euconsent) {\r\n        //console.log(\"[event] onConsentReady\", arguments);\r\n        //console.log(consentUUID);\r\n        //console.log(euconsent);\r\n\r\n        const fbConsent = concept.specificConsent.find(\r\n          (c) => c.purpose === \"Measure content performance\"\r\n        );\r\n\r\n        if (fbConsent) {\r\n          loadFb();\r\n        }\r\n\r\n        //Always load gtm\r\n        if (!isNo3rdparty()) {\r\n          loadGtm();\r\n        }\r\n\r\n        resolve();\r\n      },\r\n      onError: function () {\r\n        //console.log(\"[event] onError\", arguments);\r\n      },\r\n    },\r\n  },\r\n};\r\n\r\n// loadGtm();\r\n\r\nconst script = document.createElement(\"script\");\r\nscript.src =\r\n  \"https://cdn.privacy-mgmt.com/unified/wrapperMessagingWithoutDetection.js\";\r\nscript.async = true;\r\ndocument.head.appendChild(script);\r\n","import digest from '../runtime/digest.js';\nexport const encoder = new TextEncoder();\nexport const decoder = new TextDecoder();\nconst MAX_INT32 = 2 ** 32;\nexport function concat(...buffers) {\n    const size = buffers.reduce((acc, { length }) => acc + length, 0);\n    const buf = new Uint8Array(size);\n    let i = 0;\n    buffers.forEach((buffer) => {\n        buf.set(buffer, i);\n        i += buffer.length;\n    });\n    return buf;\n}\nexport function p2s(alg, p2sInput) {\n    return concat(encoder.encode(alg), new Uint8Array([0]), p2sInput);\n}\nfunction writeUInt32BE(buf, value, offset) {\n    if (value < 0 || value >= MAX_INT32) {\n        throw new RangeError(`value must be >= 0 and <= ${MAX_INT32 - 1}. Received ${value}`);\n    }\n    buf.set([value >>> 24, value >>> 16, value >>> 8, value & 0xff], offset);\n}\nexport function uint64be(value) {\n    const high = Math.floor(value / MAX_INT32);\n    const low = value % MAX_INT32;\n    const buf = new Uint8Array(8);\n    writeUInt32BE(buf, high, 0);\n    writeUInt32BE(buf, low, 4);\n    return buf;\n}\nexport function uint32be(value) {\n    const buf = new Uint8Array(4);\n    writeUInt32BE(buf, value);\n    return buf;\n}\nexport function lengthAndInput(input) {\n    return concat(uint32be(input.length), input);\n}\nexport async function concatKdf(secret, bits, value) {\n    const iterations = Math.ceil((bits >> 3) / 32);\n    const res = new Uint8Array(iterations * 32);\n    for (let iter = 0; iter < iterations; iter++) {\n        const buf = new Uint8Array(4 + secret.length + value.length);\n        buf.set(uint32be(iter + 1));\n        buf.set(secret, 4);\n        buf.set(value, 4 + secret.length);\n        res.set(await digest('sha256', buf), iter * 32);\n    }\n    return res.slice(0, bits >> 3);\n}\n","export class JOSEError extends Error {\n    static get code() {\n        return 'ERR_JOSE_GENERIC';\n    }\n    constructor(message) {\n        super(message);\n        this.code = 'ERR_JOSE_GENERIC';\n        this.name = this.constructor.name;\n        Error.captureStackTrace?.(this, this.constructor);\n    }\n}\nexport class JWTClaimValidationFailed extends JOSEError {\n    static get code() {\n        return 'ERR_JWT_CLAIM_VALIDATION_FAILED';\n    }\n    constructor(message, claim = 'unspecified', reason = 'unspecified') {\n        super(message);\n        this.code = 'ERR_JWT_CLAIM_VALIDATION_FAILED';\n        this.claim = claim;\n        this.reason = reason;\n    }\n}\nexport class JWTExpired extends JOSEError {\n    static get code() {\n        return 'ERR_JWT_EXPIRED';\n    }\n    constructor(message, claim = 'unspecified', reason = 'unspecified') {\n        super(message);\n        this.code = 'ERR_JWT_EXPIRED';\n        this.claim = claim;\n        this.reason = reason;\n    }\n}\nexport class JOSEAlgNotAllowed extends JOSEError {\n    constructor() {\n        super(...arguments);\n        this.code = 'ERR_JOSE_ALG_NOT_ALLOWED';\n    }\n    static get code() {\n        return 'ERR_JOSE_ALG_NOT_ALLOWED';\n    }\n}\nexport class JOSENotSupported extends JOSEError {\n    constructor() {\n        super(...arguments);\n        this.code = 'ERR_JOSE_NOT_SUPPORTED';\n    }\n    static get code() {\n        return 'ERR_JOSE_NOT_SUPPORTED';\n    }\n}\nexport class JWEDecryptionFailed extends JOSEError {\n    constructor() {\n        super(...arguments);\n        this.code = 'ERR_JWE_DECRYPTION_FAILED';\n        this.message = 'decryption operation failed';\n    }\n    static get code() {\n        return 'ERR_JWE_DECRYPTION_FAILED';\n    }\n}\nexport class JWEInvalid extends JOSEError {\n    constructor() {\n        super(...arguments);\n        this.code = 'ERR_JWE_INVALID';\n    }\n    static get code() {\n        return 'ERR_JWE_INVALID';\n    }\n}\nexport class JWSInvalid extends JOSEError {\n    constructor() {\n        super(...arguments);\n        this.code = 'ERR_JWS_INVALID';\n    }\n    static get code() {\n        return 'ERR_JWS_INVALID';\n    }\n}\nexport class JWTInvalid extends JOSEError {\n    constructor() {\n        super(...arguments);\n        this.code = 'ERR_JWT_INVALID';\n    }\n    static get code() {\n        return 'ERR_JWT_INVALID';\n    }\n}\nexport class JWKInvalid extends JOSEError {\n    constructor() {\n        super(...arguments);\n        this.code = 'ERR_JWK_INVALID';\n    }\n    static get code() {\n        return 'ERR_JWK_INVALID';\n    }\n}\nexport class JWKSInvalid extends JOSEError {\n    constructor() {\n        super(...arguments);\n        this.code = 'ERR_JWKS_INVALID';\n    }\n    static get code() {\n        return 'ERR_JWKS_INVALID';\n    }\n}\nexport class JWKSNoMatchingKey extends JOSEError {\n    constructor() {\n        super(...arguments);\n        this.code = 'ERR_JWKS_NO_MATCHING_KEY';\n        this.message = 'no applicable key found in the JSON Web Key Set';\n    }\n    static get code() {\n        return 'ERR_JWKS_NO_MATCHING_KEY';\n    }\n}\nexport class JWKSMultipleMatchingKeys extends JOSEError {\n    constructor() {\n        super(...arguments);\n        this.code = 'ERR_JWKS_MULTIPLE_MATCHING_KEYS';\n        this.message = 'multiple matching keys found in the JSON Web Key Set';\n    }\n    static get code() {\n        return 'ERR_JWKS_MULTIPLE_MATCHING_KEYS';\n    }\n}\nSymbol.asyncIterator;\nexport class JWKSTimeout extends JOSEError {\n    constructor() {\n        super(...arguments);\n        this.code = 'ERR_JWKS_TIMEOUT';\n        this.message = 'request timed out';\n    }\n    static get code() {\n        return 'ERR_JWKS_TIMEOUT';\n    }\n}\nexport class JWSSignatureVerificationFailed extends JOSEError {\n    constructor() {\n        super(...arguments);\n        this.code = 'ERR_JWS_SIGNATURE_VERIFICATION_FAILED';\n        this.message = 'signature verification failed';\n    }\n    static get code() {\n        return 'ERR_JWS_SIGNATURE_VERIFICATION_FAILED';\n    }\n}\n","export default crypto;\nexport const isCryptoKey = (key) => key instanceof CryptoKey;\n","import fetchJwks from '../runtime/fetch_jwks.js';\nimport { JWKSInvalid, JWKSNoMatchingKey } from '../util/errors.js';\nimport { isJWKSLike, LocalJWKSet } from './local.js';\nfunction isCloudflareWorkers() {\n    return (typeof WebSocketPair !== 'undefined' ||\n        (typeof navigator !== 'undefined' && navigator.userAgent === 'Cloudflare-Workers') ||\n        (typeof EdgeRuntime !== 'undefined' && EdgeRuntime === 'vercel'));\n}\nlet USER_AGENT;\nif (typeof navigator === 'undefined' || !navigator.userAgent?.startsWith?.('Mozilla/5.0 ')) {\n    const NAME = 'jose';\n    const VERSION = 'v5.2.0';\n    USER_AGENT = `${NAME}/${VERSION}`;\n}\nclass RemoteJWKSet extends LocalJWKSet {\n    constructor(url, options) {\n        super({ keys: [] });\n        this._jwks = undefined;\n        if (!(url instanceof URL)) {\n            throw new TypeError('url must be an instance of URL');\n        }\n        this._url = new URL(url.href);\n        this._options = { agent: options?.agent, headers: options?.headers };\n        this._timeoutDuration =\n            typeof options?.timeoutDuration === 'number' ? options?.timeoutDuration : 5000;\n        this._cooldownDuration =\n            typeof options?.cooldownDuration === 'number' ? options?.cooldownDuration : 30000;\n        this._cacheMaxAge = typeof options?.cacheMaxAge === 'number' ? options?.cacheMaxAge : 600000;\n    }\n    coolingDown() {\n        return typeof this._jwksTimestamp === 'number'\n            ? Date.now() < this._jwksTimestamp + this._cooldownDuration\n            : false;\n    }\n    fresh() {\n        return typeof this._jwksTimestamp === 'number'\n            ? Date.now() < this._jwksTimestamp + this._cacheMaxAge\n            : false;\n    }\n    async getKey(protectedHeader, token) {\n        if (!this._jwks || !this.fresh()) {\n            await this.reload();\n        }\n        try {\n            return await super.getKey(protectedHeader, token);\n        }\n        catch (err) {\n            if (err instanceof JWKSNoMatchingKey) {\n                if (this.coolingDown() === false) {\n                    await this.reload();\n                    return super.getKey(protectedHeader, token);\n                }\n            }\n            throw err;\n        }\n    }\n    async reload() {\n        if (this._pendingFetch && isCloudflareWorkers()) {\n            this._pendingFetch = undefined;\n        }\n        const headers = new Headers(this._options.headers);\n        if (USER_AGENT && !headers.has('User-Agent')) {\n            headers.set('User-Agent', USER_AGENT);\n            this._options.headers = Object.fromEntries(headers.entries());\n        }\n        this._pendingFetch || (this._pendingFetch = fetchJwks(this._url, this._timeoutDuration, this._options)\n            .then((json) => {\n            if (!isJWKSLike(json)) {\n                throw new JWKSInvalid('JSON Web Key Set malformed');\n            }\n            this._jwks = { keys: json.keys };\n            this._jwksTimestamp = Date.now();\n            this._pendingFetch = undefined;\n        })\n            .catch((err) => {\n            this._pendingFetch = undefined;\n            throw err;\n        }));\n        await this._pendingFetch;\n    }\n}\nexport function createRemoteJWKSet(url, options) {\n    const set = new RemoteJWKSet(url, options);\n    return async function (protectedHeader, token) {\n        return set.getKey(protectedHeader, token);\n    };\n}\n","import crypto from './webcrypto.js';\nexport default crypto.getRandomValues.bind(crypto);\n","import { encode as base64url } from '../../runtime/base64url.js';\nimport encrypt from '../../runtime/encrypt.js';\nimport generateIv from '../../lib/iv.js';\nimport encryptKeyManagement from '../../lib/encrypt_key_management.js';\nimport { JOSENotSupported, JWEInvalid } from '../../util/errors.js';\nimport isDisjoint from '../../lib/is_disjoint.js';\nimport { encoder, decoder, concat } from '../../lib/buffer_utils.js';\nimport validateCrit from '../../lib/validate_crit.js';\nexport const unprotected = Symbol();\nexport class FlattenedEncrypt {\n    constructor(plaintext) {\n        if (!(plaintext instanceof Uint8Array)) {\n            throw new TypeError('plaintext must be an instance of Uint8Array');\n        }\n        this._plaintext = plaintext;\n    }\n    setKeyManagementParameters(parameters) {\n        if (this._keyManagementParameters) {\n            throw new TypeError('setKeyManagementParameters can only be called once');\n        }\n        this._keyManagementParameters = parameters;\n        return this;\n    }\n    setProtectedHeader(protectedHeader) {\n        if (this._protectedHeader) {\n            throw new TypeError('setProtectedHeader can only be called once');\n        }\n        this._protectedHeader = protectedHeader;\n        return this;\n    }\n    setSharedUnprotectedHeader(sharedUnprotectedHeader) {\n        if (this._sharedUnprotectedHeader) {\n            throw new TypeError('setSharedUnprotectedHeader can only be called once');\n        }\n        this._sharedUnprotectedHeader = sharedUnprotectedHeader;\n        return this;\n    }\n    setUnprotectedHeader(unprotectedHeader) {\n        if (this._unprotectedHeader) {\n            throw new TypeError('setUnprotectedHeader can only be called once');\n        }\n        this._unprotectedHeader = unprotectedHeader;\n        return this;\n    }\n    setAdditionalAuthenticatedData(aad) {\n        this._aad = aad;\n        return this;\n    }\n    setContentEncryptionKey(cek) {\n        if (this._cek) {\n            throw new TypeError('setContentEncryptionKey can only be called once');\n        }\n        this._cek = cek;\n        return this;\n    }\n    setInitializationVector(iv) {\n        if (this._iv) {\n            throw new TypeError('setInitializationVector can only be called once');\n        }\n        this._iv = iv;\n        return this;\n    }\n    async encrypt(key, options) {\n        if (!this._protectedHeader && !this._unprotectedHeader && !this._sharedUnprotectedHeader) {\n            throw new JWEInvalid('either setProtectedHeader, setUnprotectedHeader, or sharedUnprotectedHeader must be called before #encrypt()');\n        }\n        if (!isDisjoint(this._protectedHeader, this._unprotectedHeader, this._sharedUnprotectedHeader)) {\n            throw new JWEInvalid('JWE Protected, JWE Shared Unprotected and JWE Per-Recipient Header Parameter names must be disjoint');\n        }\n        const joseHeader = {\n            ...this._protectedHeader,\n            ...this._unprotectedHeader,\n            ...this._sharedUnprotectedHeader,\n        };\n        validateCrit(JWEInvalid, new Map(), options?.crit, this._protectedHeader, joseHeader);\n        if (joseHeader.zip !== undefined) {\n            throw new JOSENotSupported('JWE \"zip\" (Compression Algorithm) Header Parameter is not supported.');\n        }\n        const { alg, enc } = joseHeader;\n        if (typeof alg !== 'string' || !alg) {\n            throw new JWEInvalid('JWE \"alg\" (Algorithm) Header Parameter missing or invalid');\n        }\n        if (typeof enc !== 'string' || !enc) {\n            throw new JWEInvalid('JWE \"enc\" (Encryption Algorithm) Header Parameter missing or invalid');\n        }\n        let encryptedKey;\n        if (alg === 'dir') {\n            if (this._cek) {\n                throw new TypeError('setContentEncryptionKey cannot be called when using Direct Encryption');\n            }\n        }\n        else if (alg === 'ECDH-ES') {\n            if (this._cek) {\n                throw new TypeError('setContentEncryptionKey cannot be called when using Direct Key Agreement');\n            }\n        }\n        let cek;\n        {\n            let parameters;\n            ({ cek, encryptedKey, parameters } = await encryptKeyManagement(alg, enc, key, this._cek, this._keyManagementParameters));\n            if (parameters) {\n                if (options && unprotected in options) {\n                    if (!this._unprotectedHeader) {\n                        this.setUnprotectedHeader(parameters);\n                    }\n                    else {\n                        this._unprotectedHeader = { ...this._unprotectedHeader, ...parameters };\n                    }\n                }\n                else {\n                    if (!this._protectedHeader) {\n                        this.setProtectedHeader(parameters);\n                    }\n                    else {\n                        this._protectedHeader = { ...this._protectedHeader, ...parameters };\n                    }\n                }\n            }\n        }\n        this._iv || (this._iv = generateIv(enc));\n        let additionalData;\n        let protectedHeader;\n        let aadMember;\n        if (this._protectedHeader) {\n            protectedHeader = encoder.encode(base64url(JSON.stringify(this._protectedHeader)));\n        }\n        else {\n            protectedHeader = encoder.encode('');\n        }\n        if (this._aad) {\n            aadMember = base64url(this._aad);\n            additionalData = concat(protectedHeader, encoder.encode('.'), encoder.encode(aadMember));\n        }\n        else {\n            additionalData = protectedHeader;\n        }\n        const { ciphertext, tag } = await encrypt(enc, this._plaintext, cek, this._iv, additionalData);\n        const jwe = {\n            ciphertext: base64url(ciphertext),\n            iv: base64url(this._iv),\n            tag: base64url(tag),\n        };\n        if (encryptedKey) {\n            jwe.encrypted_key = base64url(encryptedKey);\n        }\n        if (aadMember) {\n            jwe.aad = aadMember;\n        }\n        if (this._protectedHeader) {\n            jwe.protected = decoder.decode(protectedHeader);\n        }\n        if (this._sharedUnprotectedHeader) {\n            jwe.unprotected = this._sharedUnprotectedHeader;\n        }\n        if (this._unprotectedHeader) {\n            jwe.header = this._unprotectedHeader;\n        }\n        return jwe;\n    }\n}\n","import { decode as base64url } from './base64url.js';\nimport { decoder } from '../lib/buffer_utils.js';\nimport isObject from '../lib/is_object.js';\nimport { JWTInvalid } from './errors.js';\nexport function decodeJwt(jwt) {\n    if (typeof jwt !== 'string')\n        throw new JWTInvalid('JWTs must use Compact JWS serialization, JWT must be a string');\n    const { 1: payload, length } = jwt.split('.');\n    if (length === 5)\n        throw new JWTInvalid('Only JWTs using Compact JWS serialization can be decoded');\n    if (length !== 3)\n        throw new JWTInvalid('Invalid JWT');\n    if (!payload)\n        throw new JWTInvalid('JWTs must contain a payload');\n    let decoded;\n    try {\n        decoded = base64url(payload);\n    }\n    catch {\n        throw new JWTInvalid('Failed to base64url decode the payload');\n    }\n    let result;\n    try {\n        result = JSON.parse(decoder.decode(decoded));\n    }\n    catch {\n        throw new JWTInvalid('Failed to parse the decoded payload as JSON');\n    }\n    if (!isObject(result))\n        throw new JWTInvalid('Invalid JWT Claims Set');\n    return result;\n}\n","import { encoder, decoder } from '../lib/buffer_utils.js';\nexport const encodeBase64 = (input) => {\n    let unencoded = input;\n    if (typeof unencoded === 'string') {\n        unencoded = encoder.encode(unencoded);\n    }\n    const CHUNK_SIZE = 0x8000;\n    const arr = [];\n    for (let i = 0; i < unencoded.length; i += CHUNK_SIZE) {\n        arr.push(String.fromCharCode.apply(null, unencoded.subarray(i, i + CHUNK_SIZE)));\n    }\n    return btoa(arr.join(''));\n};\nexport const encode = (input) => {\n    return encodeBase64(input).replace(/=/g, '').replace(/\\+/g, '-').replace(/\\//g, '_');\n};\nexport const decodeBase64 = (encoded) => {\n    const binary = atob(encoded);\n    const bytes = new Uint8Array(binary.length);\n    for (let i = 0; i < binary.length; i++) {\n        bytes[i] = binary.charCodeAt(i);\n    }\n    return bytes;\n};\nexport const decode = (input) => {\n    let encoded = input;\n    if (encoded instanceof Uint8Array) {\n        encoded = decoder.decode(encoded);\n    }\n    encoded = encoded.replace(/-/g, '+').replace(/_/g, '/').replace(/\\s/g, '');\n    try {\n        return decodeBase64(encoded);\n    }\n    catch {\n        throw new TypeError('The input to be decoded is not correctly encoded.');\n    }\n};\n","function isObjectLike(value) {\n    return typeof value === 'object' && value !== null;\n}\nexport default function isObject(input) {\n    if (!isObjectLike(input) || Object.prototype.toString.call(input) !== '[object Object]') {\n        return false;\n    }\n    if (Object.getPrototypeOf(input) === null) {\n        return true;\n    }\n    let proto = input;\n    while (Object.getPrototypeOf(proto) !== null) {\n        proto = Object.getPrototypeOf(proto);\n    }\n    return Object.getPrototypeOf(input) === proto;\n}\n","import { useFormik } from \"formik\";\r\nimport React, { } from \"react\";\r\nimport { Button, Form } from \"react-bootstrap\";\r\nimport { Schema, object, string } from \"yup\";\r\nimport voresConfiguration from \"../../client-configuration\";\r\nimport { api } from \"../../api\";\r\nimport { SubscribeForm } from \"../../lib-api\";\r\n\r\n\r\n\r\nconst validationSchema: Schema<SubscribeForm> = object().shape({\r\n    email: string().required(),\r\n    name: string(),\r\n    source: string()\r\n});\r\n\r\nexport const ConfirmSubscriptionForm: React.FC<{ name: string; email: string; close: (confirmed: boolean) => void }> = ({ name, email, close }) => {\r\n\r\n    const { handleSubmit, isSubmitting } = useFormik<SubscribeForm>({\r\n        initialValues: {\r\n            email: email,\r\n            name: name,\r\n            source: \"Website-OneTap\"\r\n        },\r\n        validationSchema: validationSchema,\r\n        onSubmit: async (values) => {\r\n            await api.subscribeToNewsletter(values, \"one-tap\");\r\n            close(true);\r\n        }\r\n    })\r\n\r\n    return (\r\n        <Form onSubmit={handleSubmit}>\r\n            <Form.Group>\r\n                <p>\r\n                    Hej {name}<br />\r\n                    <br />\r\n                    Du modtager fremover nyhedsbrevet for {voresConfiguration.site.name}. Nyhedsbrevet er gratis, og kan til enhver tid afmeldes.\r\n                </p>\r\n            </Form.Group>\r\n            <Form.Group>\r\n                <Form.Text className=\"font-weight-light\">\r\n                    Nyhedsbrevet kan indeholde tilbud fra lokale erhvervsdrivende, og partnere.&nbsp;\r\n                    <a href=\"https://voresdigital.dk/privatlivspolitik/\" target=\"_blank\" className=\"text-primary\" rel=\"noreferrer\">Læs brugerbetingelser</a>\r\n                </Form.Text>\r\n            </Form.Group>\r\n            <Form.Group className=\"d-flex justify-content-between mt-4\">\r\n                <Button className=\"mr-3\" variant=\"outline-primary\" onClick={() => close(false)}>\r\n                    Afmeld\r\n                </Button>\r\n                <Button type=\"submit\" disabled={isSubmitting} className=\"px-5\">\r\n                    OK\r\n                </Button>\r\n            </Form.Group>\r\n        </Form>\r\n    );\r\n};\r\n","import React, { useCallback, useState } from \"react\";\r\nimport { Modal } from \"react-bootstrap\";\r\nimport { ConfirmSubscriptionForm } from \"../forms/confirm-subscription-form\";\r\n\r\n\r\nexport const ConfirmSubscriptionModal: React.FC<{ name: string; email: string; onDecision: (confirmed: boolean) => void }> = ({ name, email, onDecision }) => {\r\n    const [show, setShow] = useState(true);\r\n\r\n    const handleClose = useCallback((confirmed: boolean) => {\r\n        setShow(false);\r\n        onDecision(confirmed);\r\n    }, [setShow]);\r\n\r\n    return (\r\n        <Modal size=\"sm\" show={show} onHide={() => handleClose(false)} backdrop=\"static\">\r\n            <Modal.Header closeButton>\r\n                <Modal.Title>Bekræft tilmelding</Modal.Title>\r\n            </Modal.Header>\r\n            <Modal.Body>\r\n                <ConfirmSubscriptionForm name={name} email={email} close={handleClose} />\r\n            </Modal.Body>\r\n        </Modal>\r\n    );\r\n};\r\n","import { Cookie, CookieKeys } from \"../util/cookie\";\r\n\r\nlet _firstPageView = true;\r\nif (Cookie.get(CookieKeys.IsNewVisitor) == \"false\") {\r\n    _firstPageView = false;\r\n}\r\nCookie.set(CookieKeys.IsNewVisitor, \"false\", { expires: 365 });\r\n\r\nexport const isFirstPageView = () => {\r\n    return _firstPageView;\r\n}","import { cookieDecision } from \"../../cookieconsent\";\r\nimport { Cookie, CookieKeys } from \"../../util/cookie\";\r\nimport { loadOneTap } from \"./one-tap/google-one-tap\";\r\nimport { showSubscribeModal } from \"../../components/subscribe-modal\";\r\nimport { isFirstPageView } from \"../../util/is-first-page-view\";\r\n\r\n\r\nconst shouldSuppress = Cookie.get(CookieKeys.SuppressSlideUp) == \"true\";\r\nconst alreadySubscribed = (Cookie.get(CookieKeys.EmailSubscribed) == \"true\");\r\nconst query = new URLSearchParams(window.location.search);\r\nconst forceShow = query.get(\"showsub\") !== null;\r\n//const previewId = query.get(\"id\");\r\n\r\ncookieDecision.then(() => {\r\n    if (forceShow) {\r\n        return showSubscribeModal();\r\n    }\r\n\r\n    if (!shouldSuppress && !alreadySubscribed) {\r\n        if (isFirstPageView()) {\r\n            loadOneTap();\r\n        }\r\n        else {\r\n            setTimeout(() => {\r\n                showSubscribeModal();\r\n            }, 16 * 1000);\r\n        }\r\n    }\r\n});\r\n\r\n\r\n","import React from \"react\";\r\nimport * as jose from 'jose';\r\nimport { createRoot } from \"react-dom/client\";\r\nimport { JWTPayload } from \"jose\";\r\nimport { trackGaEvent } from \"../../../util/gtm\";\r\nimport voresConfiguration from \"../../../client-configuration\";\r\nimport { Cookie, CookieKeys } from \"../../../util/cookie\";\r\nimport { ConfirmSubscriptionModal } from \"../../../components/email-subscription/confirm-subscription-modal\";\r\n\r\nconst loadModal = (name: string, email: string) => {\r\n  const container = document.createElement(\"div\");\r\n  container.id = \"onetap-subscribe-modal\";\r\n\r\n  const root = createRoot(container);\r\n\r\n  const onDecision = (confirmed: boolean) => {\r\n    trackGaEvent(\"on_one_tap\", {\r\n      action: confirmed ? \"confirm_subscription\" : \"deny_subscription\"\r\n    });\r\n\r\n    root.unmount();\r\n\r\n    Cookie.set(CookieKeys.SuppressSlideUp, \"true\", { expires: 3 });\r\n  }\r\n\r\n  root.render(<ConfirmSubscriptionModal name={name} email={email} onDecision={onDecision} />);\r\n\r\n  document.body.appendChild(container);\r\n\r\n  trackGaEvent(\"on_one_tap\", {\r\n    action: \"show_confirm_modal\"\r\n  });\r\n}\r\n\r\nexport const loadOneTap = () => {\r\n  const scriptSrc = \"https://accounts.google.com/gsi/client\";\r\n\r\n  const scriptElement = document.createElement(\"script\");\r\n  scriptElement.defer = true;\r\n  scriptElement.async = true;\r\n\r\n  const handleCredentialResponse = (e) => {\r\n    const data = jose.decodeJwt(e.credential) as JWTPayload & { given_name: string; email: string };\r\n    loadModal(data.given_name, data.email);\r\n\r\n  }\r\n\r\n  scriptElement.onload = () => {\r\n    window.google?.accounts?.id?.initialize({\r\n      client_id: voresConfiguration.googleSignInClientId,\r\n      callback: handleCredentialResponse,\r\n      context: \"use\",\r\n        cancel_on_tap_outside: false,\r\n        use_fedcm_for_prompt: true\r\n    });\r\n    window.google?.accounts?.id?.prompt((moment) => {\r\n      console.log(moment);\r\n    });\r\n\r\n    trackGaEvent(\"on_one_tap\", {\r\n      action: \"prompt\"\r\n    });\r\n  }\r\n\r\n  scriptElement.src = scriptSrc;\r\n  document.body.appendChild(scriptElement);\r\n}\r\n\r\n\r\n\r\n","declare const window: {\r\n    fbq: any;\r\n};\r\n\r\nexport function trackEventFbLead(\r\n    category?: any\r\n) {\r\n    if (\"fbq\" in window) {\r\n        window.fbq('track', \"Lead\", { content_category: category  });\r\n    }\r\n}","declare const window: {\r\n  dataLayer: any[];\r\n};\r\n\r\n/* If you add new ones here. Remeber to add them in Google Tag Manager GA4 Event Tag */\r\ntype validEvents =\r\n  | \"on_cookie_consent\"\r\n  | \"on_company_contact\"\r\n  | \"on_facebook_carousel_clicked\"\r\n  | \"on_shared_with_friend\"\r\n  | \"on_content_task_feedback\"\r\n  | \"on_newsletter_subscribe\"\r\n  | \"on_external_link_clicked\"\r\n  | \"on_questionnaire_submitted\"\r\n  | \"on_one_tap\"\r\n  | \"on_kpi\"\r\n  | \"lead_generated\";\r\n\r\n/* If you add new ones here. Remeber to add them in Google Tag Manager GA4 Event Tag, And in CustomDefinitions IN GA4 */\r\ntype validParameters =\r\n  | \"in_section\"\r\n  | \"action\"\r\n  | \"href\"\r\n  | \"variant\"\r\n  | \"lead_type\"\r\n  | \"customer_id\"\r\n  | \"customer_name\"\r\n  | \"user_data\";\r\n\r\ntype validUserData = \"email\" | \"phone\" | \"zip\" | \"city\" | \"country\";\r\n\r\nexport function trackGaEvent(\r\n  type: validEvents,\r\n  parameters?: { [key in validParameters]?: string | number },\r\n  userData?: { [key in validUserData]?: string | number },\r\n  callback?: (id: string) => void\r\n) {\r\n  window.dataLayer = window.dataLayer || [];\r\n  //convert parameter keys to dlv_* for Tag Manager.\r\n  const convertedParams = convertParams(parameters);\r\n\r\n  const event: any = {\r\n    event: type,\r\n    ...convertedParams,\r\n  };\r\n\r\n  if (userData) {\r\n    event.user_data = userData;\r\n  }\r\n\r\n  if (callback) {\r\n    event.eventCallback = callback;\r\n  }\r\n\r\n  window.dataLayer.push(event);\r\n}\r\n\r\n/* If you add new ones here. Remeber to add them in Google Tag Manager GA4 DLV */\r\ntype validDataLayerVariables = \"page_type\" | \"category\";\r\n\r\nexport function setDataLayerVariables(parameters: {\r\n  [key in validDataLayerVariables]?: string | number;\r\n}) {\r\n  window.dataLayer = window.dataLayer || [];\r\n  //convert parameter keys to dlv_* for Tag Manager.\r\n  const convertedParams = convertParams(parameters);\r\n  window.dataLayer.push({\r\n    ...convertedParams,\r\n  });\r\n}\r\n\r\nfunction convertParams(parameters?: { [key: string]: string | number }) {\r\n  return parameters\r\n    ? Object.fromEntries(\r\n        Object.entries(parameters).map(([key, value]) => [`dlv_${key}`, value])\r\n      )\r\n    : {};\r\n}\r\n\r\nexport function trackVirtualPageView(url: string) {\r\n  window.dataLayer = window.dataLayer || [];\r\n  window.dataLayer.push({\r\n    event: \"GAVirtualPageView\",\r\n    virtualPageUrl: url,\r\n  });\r\n}\r\n","'use strict';\nvar toPropertyKey = require('../internals/to-property-key');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = function (object, key, value) {\n  var propertyKey = toPropertyKey(key);\n  if (propertyKey in object) definePropertyModule.f(object, propertyKey, createPropertyDescriptor(0, value));\n  else object[propertyKey] = value;\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar iterate = require('../internals/iterate');\nvar createProperty = require('../internals/create-property');\n\n// `Object.fromEntries` method\n// https://github.com/tc39/proposal-object-from-entries\n$({ target: 'Object', stat: true }, {\n  fromEntries: function fromEntries(iterable) {\n    var obj = {};\n    iterate(iterable, function (k, v) {\n      createProperty(obj, k, v);\n    }, { AS_ENTRIES: true });\n    return obj;\n  }\n});\n"],"names":["_subscribeToNewsletter","subscriptionApi","SubscriptionApi","apiConfiguration","api","subscribeToNewsletter","values","location","apiSubscriptionsPut","subscribeForm","Cookies","set","CookieKeys","EmailSubscribed","expires","trackGaEvent","in_section","email","city","clientConfiguration","site","name","country","trackEventFbLead","_x","_x2","apply","arguments","SubmitState","EmailSubscribeForm","props","_onSubmit","submitState","setSubmitState","useState","None","errors","isSubmitting","handleChange","handleSubmit","submitForm","useFormik","initialValues","validationSchema","object","string","required","max","onSubmit","Submitted","onSubscribed","e","Error","React","Form","Group","controlId","Label","srOnly","Control","isInvalid","type","placeholder","value","disabled","onChange","autoFocus","hasAutofocus","Button","variant","block","className","onClick","SlideUpContainer","styled","position","zIndex","left","right","top","transition","pointerEvents","BoxContainer","div","margin","maxWidth","SlideUpBox","backgroundColor","border","marginLeft","marginRight","CornerIcon","borderRadius","color","padding","fontSize","textAlign","CampaignApi","getPreview","_ref","_asyncToGenerator","id","getCampaignBookingAsync","SubscribeModal","shown","setShown","detach","didSubscribe","_props$container$pare","root","unmount","container","parentNode","removeChild","SuppressSlideUp","onDismiss","campaign","setCampaign","useEffect","campaignId","result","style","transform","stopPropagation","dangerouslySetInnerHTML","__html","prize","opacity","title","body","setTimeout","isModalVisible","showSubscribeModal","onDismis","containerElement","document","createElement","appendChild","createRoot","render","fbLoaded","gtmLoaded","promise","resolve","reject","Promise","res","rej","generateDeferredPromise","cookieDecision","window","_sp_queue","_sp_","config","accountId","baseEndpoint","propertyHref","gdpr","events","onMessageChoiceSelect","onMessageReady","onMessageChoiceError","onPrivacyManagerAction","onPMCancel","onMessageReceiveData","onSPPMObjectReady","onConsentReady","consentUUID","euconsent","f","b","n","t","s","concept","specificConsent","find","c","purpose","console","log","fbq","callMethod","queue","push","_fbq","loaded","version","async","src","getElementsByTagName","insertBefore","hostname","isNo3rdparty","w","d","l","i","Date","getTime","event","j","gtmId","onError","script","head","TextEncoder","TextDecoder","code","constructor","message","super","this","captureStackTrace","Symbol","asyncIterator","USER_AGENT","getRandomValues","bind","navigator","userAgent","startsWith","decodeJwt","jwt","payload","length","split","decoded","input","encoded","Uint8Array","decode","replace","binary","atob","bytes","charCodeAt","TypeError","JSON","parse","Object","prototype","toString","call","getPrototypeOf","proto","shape","source","ConfirmSubscriptionForm","close","voresConfiguration","Text","href","target","rel","ConfirmSubscriptionModal","onDecision","show","setShow","handleClose","useCallback","confirmed","Modal","size","onHide","backdrop","Header","closeButton","Title","Body","_firstPageView","Cookie","get","IsNewVisitor","shouldSuppress","alreadySubscribed","forceShow","URLSearchParams","search","then","loadOneTap","scriptElement","defer","handleCredentialResponse","data","jose","credential","loadModal","action","given_name","onload","_window$google","_window$google2","google","accounts","initialize","client_id","googleSignInClientId","callback","context","cancel_on_tap_outside","use_fedcm_for_prompt","prompt","moment","category","content_category","parameters","userData","dataLayer","_objectSpread","fromEntries","entries","map","key","concat","convertParams","user_data","eventCallback","toPropertyKey","definePropertyModule","createPropertyDescriptor","module","exports","propertyKey","$","iterate","createProperty","stat","iterable","obj","k","v","AS_ENTRIES"],"sourceRoot":""}