{"version":3,"file":"index-DrLG5zRj.js","sources":["../../src/modules/cookieconsent.ts","../../src/utils/isMobile.js","../../src/modules/crispChat.ts","../../src/modules/googleTagManager.ts","../../src/modules/hotjar.ts","../../src/components/MapLibre/maplibrePlugin.ts","../../src/modules/maplibre.ts","../../src/modules/passwordStrength.ts","../../src/modules/sentry.ts","../../src/modules/stripe.ts","../../src/main.ts"],"sourcesContent":["import type { AppModule } from '@/types'\nimport 'vanilla-cookieconsent'\n\nimport 'vanilla-cookieconsent/dist/cookieconsent.css'\n\nconst defaultCookieConsentConfig: UserConfig = {\n current_lang: 'en',\n autoclear_cookies: true, // default: false\n page_scripts: true, // default: false\n\n // mode: 'opt-in' // default: 'opt-in'; value: 'opt-in' or 'opt-out'\n // delay: 0, // default: 0\n // auto_language: '', // default: null; could also be 'browser' or 'document'\n // autorun: true, // default: true\n // force_consent: false, // default: false\n // hide_from_bots: true, // default: true\n // remove_cookie_tables: false // default: false\n // cookie_name: 'cc_cookie', // default: 'cc_cookie'\n // cookie_expiration: 182, // default: 182 (days)\n // cookie_necessary_only_expiration: 182 // default: disabled\n // cookie_domain: location.hostname, // default: current domain\n // cookie_path: '/', // default: root\n // cookie_same_site: 'Lax', // default: 'Lax'\n // use_rfc_cookie: false, // default: false\n // revision: 0, // default: 0\n\n // callback triggered only once on the first accept/reject action\n // user_preferences, cookie\n onFirstAction() {},\n\n // callback triggered on the first accept/reject action, and after each page load\n // cookie\n onAccept() {},\n\n // callback triggered when user changes preferences after consent has already been given\n // cookie, changed_categories\n onChange() {},\n\n languages: {\n en: {\n consent_modal: {\n title: '🍪 We use cookies!',\n description:\n 'Hi, this website uses essential cookies to ensure its proper operation and tracking cookies to understand how you interact with it. The latter will be set only after consent. ',\n primary_btn: {\n text: 'Accept all',\n role: 'accept_all', // 'accept_selected' or 'accept_all'\n },\n secondary_btn: {\n text: 'Reject all',\n role: 'accept_necessary', // 'settings' or 'accept_necessary'\n },\n },\n settings_modal: {\n title: 'Cookie preferences',\n save_settings_btn: 'Save settings',\n accept_all_btn: 'Accept all',\n reject_all_btn: 'Reject all',\n close_btn_label: 'Close',\n cookie_table_headers: [\n { col1: 'Name' },\n { col2: 'Domain' },\n { col3: 'Expiration' },\n { col4: 'Description' },\n ],\n blocks: [\n {\n title: 'Cookie usage 📢',\n description:\n 'I use cookies to ensure the basic functionalities of the website and to enhance your online experience. You can choose for each category to opt-in/out whenever you want. For more details relative to cookies and other sensitive data, please read the full privacy policy.',\n },\n {\n title: 'Strictly necessary cookies',\n description:\n 'These cookies are essential for the proper functioning of my website. Without these cookies, the website would not work properly',\n toggle: {\n value: 'necessary',\n enabled: true,\n readonly: true, // cookie categories with readonly=true are all treated as \"necessary cookies\"\n },\n },\n {\n title: 'Performance and Analytics cookies',\n description:\n 'These cookies collect information about how you use the website, which pages you visited and which links you clicked on. All of the data is anonymized and cannot be used to identify you',\n toggle: {\n value: 'analytics',\n enabled: false,\n readonly: false,\n },\n },\n {\n title: 'More information',\n description:\n 'For any queries in relation to our policy on cookies and your choices, please contact us.',\n },\n ],\n },\n },\n },\n}\n\nexport default {\n install: (app) => {\n if (!document.getElementById('cc--main')) {\n const cc = window.initCookieConsent()\n const cookieConsent = {\n ...cc,\n setup(config: UserConfig) {\n cc.run({\n ...defaultCookieConsentConfig,\n ...config,\n })\n },\n }\n\n app.config.globalProperties.cookieConsent = cookieConsent\n app.provide('cookieConsent', cookieConsent)\n }\n },\n} as AppModule\n","function isMobile() {\n return (\n 'ontouchstart' in document.documentElement\n && window.matchMedia('(any-pointer:coarse)').matches\n )\n}\n\nexport const IS_MOBILE = isMobile()\n","import type { AppModule } from '@/types'\nimport { ChatboxColors, Crisp } from 'crisp-sdk-web'\n\nexport default {\n install(app) {\n const WEBSITE_ID = import.meta.env.VITE_CRISP_WEBSITE_ID\n\n if (WEBSITE_ID) {\n Crisp.configure(WEBSITE_ID, {\n autoload: false,\n })\n Crisp.setColorTheme(ChatboxColors.Blue)\n Crisp.setHideOnMobile(true)\n\n if (IS_MOBILE) {\n Crisp.chat.onChatClosed(() => {\n Crisp.chat.hide()\n })\n }\n\n app.config.globalProperties.crisp = Crisp\n app.provide('crisp', Crisp)\n } else {\n app.config.globalProperties.crisp = null\n app.provide('crisp', null)\n }\n },\n} as AppModule\n","import type { AppModule } from '@/types'\nimport router from '@/modules/router'\nimport { createGtm } from '@gtm-support/vue-gtm'\n\nexport default {\n install: (app) => {\n if (import.meta.env.VITE_GA_KEY) {\n app.use(\n createGtm({\n id: import.meta.env.VITE_GA_KEY,\n // queryParams: {\n // gtm_auth: 'AB7cDEf3GHIjkl-MnOP8qr',\n // gtm_preview: 'env-4',\n // gtm_cookies_win: 'x',\n // },\n defer: false, // Script can be set to `defer` to speed up page load at the cost of less accurate results (in case visitor leaves before script is loaded, which is unlikely but possible). Defaults to false, so the script is loaded `async` by default\n compatibility: false, // Will add `async` and `defer` to the script tag to not block requests for old browsers that do not support `async`\n // nonce: '2726c7f26c', // Will add `nonce` to the script tag\n enabled: false,\n debug: IS_DEV,\n loadScript: true,\n vueRouter: router,\n // ignoredViews: ['Home'],\n trackOnNextTick: false,\n }),\n )\n }\n },\n} as AppModule\n","import type { AppModule } from '@/types'\n\nexport default {\n install: (app) => {\n const hotjarId = import.meta.env.VITE_HOTJAR_SITE_ID\n\n const isEnabled = ref(false)\n const isLoaded = ref(false)\n\n const hotjarInstance = computed(() => (get(isLoaded) && window.hj) || null)\n\n const hotjar = reactive({\n enabled: isEnabled,\n loaded: isLoaded,\n init: () => initHotjar(hotjarId),\n event: (...args: any[]) => get(hotjarInstance)?.('event', ...args),\n identify: (...args: any[]) => get(hotjarInstance)?.('identify', ...args),\n stateChange: (...args: any[]) => get(hotjarInstance)?.('stateChange', ...args),\n })\n\n const a: HTMLHeadElement | undefined = undefined\n const r: HTMLScriptElement | undefined = undefined\n\n function initHotjar(hotjarId: string, snippetVersion = 6) {\n ;(function (h, o, t, j, a, r) {\n h.hj\n = h.hj\n || function (...args: any[]) {\n ;(h.hj.q = h.hj.q || []).push(args)\n }\n h._hjSettings = {\n hjid: hotjarId, // Hotjar ID\n hjsv: snippetVersion, // Hotjar Snippet Version\n }\n a = o.getElementsByTagName('head')[0]\n r = o.createElement('script')\n r.async = true\n r.src = t + h._hjSettings.hjid + j + h._hjSettings.hjsv\n a.appendChild(r)\n\n r.onload = async () => {\n await nextTick()\n set(isLoaded, true)\n }\n\n set(isEnabled, true)\n })(window, document, 'https://static.hotjar.com/c/hotjar-', '.js?sv=', a, r)\n }\n\n if (hotjarId) {\n app.config.globalProperties.hotjar = hotjar\n app.provide('hotjar', hotjar)\n }\n },\n} as AppModule\n","import type { Plugin } from 'vue'\nimport type { MapLibreConfig } from './maplibreUtils'\nimport { defaultMapLibreConfig } from './maplibreUtils'\n\nexport default {\n install: (app, options: MapLibreConfig) => {\n const maplibreConfig = {\n ...defaultMapLibreConfig,\n ...options,\n }\n\n app.config.globalProperties.maplibre = maplibreConfig\n app.provide('maplibre', maplibreConfig)\n },\n} as Plugin\n","import type { AppModule } from '@/types'\nimport MapLibrePlugin from '@/components/MapLibre/maplibrePlugin'\n\nexport default {\n install: (app) => {\n app.use(MapLibrePlugin, {\n style: 'mapbox://styles/tdelmas/cm3mwqog400mq01s93lfs02ol',\n i18n: true,\n })\n },\n} as AppModule\n","import type { AppModule } from '@/types'\nimport { zxcvbnOptions } from '@zxcvbn-ts/core'\nimport * as zxcvbnCommonPackage from '@zxcvbn-ts/language-common'\n\nexport default {\n install: () => {\n const options = {\n // recommended\n dictionary: {\n ...zxcvbnCommonPackage.dictionary,\n },\n // recommended\n graphs: zxcvbnCommonPackage.adjacencyGraphs,\n // recommended\n useLevenshteinDistance: true,\n }\n\n zxcvbnOptions.setOptions(options)\n },\n} as AppModule\n","import type { AppModule } from '@/types'\nimport * as Sentry from '@sentry/vue'\n\nexport default {\n install: (app) => {\n if (import.meta.env.VITE_SENTRY_DSN) {\n Sentry.init({\n app,\n dsn: import.meta.env.VITE_SENTRY_DSN,\n environment: import.meta.env.VITE_SENTRY_ENVIRONMENT,\n release: __APP_VERSION__,\n beforeSend(event, hint) {\n // Filter out 401 errors from apollo ?\n const error = hint.originalException as { networkError?: { statusCode: number } }\n\n if (error.networkError?.statusCode === 401) {\n return null\n }\n\n return event\n },\n })\n }\n },\n} as AppModule\n","import type { AppModule } from '@/types'\nimport type { Stripe } from '@stripe/stripe-js'\nimport { loadStripe } from '@stripe/stripe-js/pure'\nimport { ref } from 'vue'\n\nexport default {\n install: async (app, options) => {\n loadStripe.setLoadParameters({\n advancedFraudSignals: import.meta.env.PROD,\n ...options,\n })\n\n const stripeLoaded = ref(false)\n const stripe = ref(null)\n loadStripe('pk_test_TYooMQauvdEDq54NiTphI7jx').then((stripeScript) => {\n stripe.value = stripeScript\n stripeLoaded.value = true\n })\n\n app.provide(PROVIDE_STRIPE, stripe)\n app.provide(PROVIDE_STRIPE_LOADED, stripeLoaded)\n },\n} as AppModule\n","import type { AppModule } from './types'\nimport App from '@/App.vue'\n\nimport { clients } from '@/graphql'\nimport { createHead } from '@unhead/vue'\nimport { ApolloClients } from '@vue/apollo-composable'\n\nimport { createApp, h, provide } from 'vue'\nimport 'swagger-ui/dist/swagger-ui.css'\nimport 'v-calendar/dist/style.css'\n\nimport '@/assets/style/index.css'\n\nconst head = createHead()\n\nexport const app = createApp({\n setup() {\n provide(ApolloClients, clients)\n },\n render: () => h(App),\n})\n\n// app.config.errorHandler = (err, instance, info) => {\n// // report error to tracking services\n// console.error(err, instance, info)\n// }\n\n// install all modules under `modules/`\nObject.values(import.meta.glob<{ default: AppModule }>('./modules/*.ts', { eager: true })).forEach(\n (module) => {\n if (module?.default) {\n app.use(module?.default)\n }\n },\n)\n\napp.use(head)\napp.mount('#app')\n"],"names":["defaultCookieConsentConfig","cookieconsent","app","cc","cookieConsent","config","isMobile","IS_MOBILE","crispChat","Crisp","ChatboxColors","googleTagManager","createGtm","IS_DEV","router","hotjar","hotjarId","isEnabled","ref","isLoaded","hotjarInstance","computed","get","reactive","initHotjar","args","_a","a","r","snippetVersion","h","o","t","j","r2","nextTick","set","MapLibrePlugin","options","maplibreConfig","defaultMapLibreConfig","maplibre","passwordStrength","zxcvbnCommonPackage.dictionary","zxcvbnCommonPackage.adjacencyGraphs","zxcvbnOptions","sentry","Sentry.init","event","hint","stripe","loadStripe","stripeLoaded","stripeScript","PROVIDE_STRIPE","PROVIDE_STRIPE_LOADED","head","createHead","createApp","provide","ApolloClients","clients","App","module"],"mappings":"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"}