{"version":3,"file":"967-ffd4324e5bdab5100995.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/email-subscription/floating-subscribe-button.tsx","webpack://voresby.web/./Scripts/modules/floating-subscribe.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({\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
\r\n {submitState != SubmitState.Submitted && (\r\n
\r\n \r\n Email\r\n \r\n \r\n \r\n Tilmeld\r\n \r\n \r\n )}\r\n {submitState == SubmitState.Error && (\r\n
\r\n Ups, der opstod en fejl.\r\n
\r\n submitForm()}>\r\n Prøv igen...\r\n \r\n
\r\n )}\r\n {submitState == SubmitState.Submitted && (\r\n
Tak for din tilmelding.
\r\n )}\r\n
\r\n );\r\n};\r\n","import React, { useState } from \"react\";\r\nimport { Button } from \"react-bootstrap\";\r\nimport styled from \"styled-components\";\r\nimport { EmailSubscribeForm } from \"../forms/email-subscribe-form\";\r\n\r\nconst FloatingContainer = styled(\"div\")({\r\n position: \"fixed\",\r\n bottom: \"15px\",\r\n right: \"25px\",\r\n zIndex: 20,\r\n});\r\n\r\nexport const FloatingSubscribeButton: React.FC = () => {\r\n const [collapsed, setCollapsed] = useState(true);\r\n const [didSubscribe, setDidSubscribe] = useState(false);\r\n\r\n if (didSubscribe && collapsed) {\r\n return <>;\r\n }\r\n\r\n return (\r\n \r\n {collapsed ? (\r\n \r\n ) : (\r\n
\r\n
\r\n
\r\n {!didSubscribe ? <>Modtag gratis nyheder : <>}\r\n
\r\n setCollapsed(true)}\r\n className=\"close text-primary\"\r\n style={{ opacity: 1 }}\r\n aria-label=\"Close\"\r\n >\r\n ×\r\n \r\n
\r\n setDidSubscribe(true)}\r\n />\r\n
\r\n )}\r\n
\r\n );\r\n};\r\n","import React from \"react\";\r\nimport { createRoot } from \"react-dom/client\";\r\nimport { FloatingSubscribeButton } from \"../components/email-subscription/floating-subscribe-button\";\r\nimport { Cookie, CookieKeys } from \"../util/cookie\";\r\n\r\nconst isSubscribed = Cookie.get(CookieKeys.EmailSubscribed) == \"true\";\r\n\r\nif (!isSubscribed) {\r\n const container = document.createElement(\"div\");\r\n container.id = \"floating-subscribe-button\";\r\n\r\n const root = createRoot(container);\r\n root.render();\r\n\r\n document.body.appendChild(container);\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","FloatingContainer","styled","position","bottom","right","zIndex","FloatingSubscribeButton","collapsed","setCollapsed","didSubscribe","setDidSubscribe","style","opacity","Cookie","get","container","document","createElement","id","createRoot","render","body","appendChild","category","window","fbq","content_category","parameters","userData","callback","dataLayer","event","_objectSpread","Object","fromEntries","entries","map","_ref","key","concat","convertParams","user_data","eventCallback","push","toPropertyKey","definePropertyModule","createPropertyDescriptor","module","exports","propertyKey","f","$","iterate","createProperty","target","stat","iterable","obj","k","v","AS_ENTRIES"],"sourceRoot":""}