{"version":3,"file":"shared-lib.DSbRmNnl.mjs","names":[],"sources":["https:/framerusercontent.com/modules/vzjZSIQ8syXm32qVQGAI/Qd7Z6rDKv0uZ4w9i8dRH/siteMetadata.js"],"sourcesContent":["// Generated by Framer (98b71dc)\nconst valuesByLocaleId={PHBzkDRNL:{v0:\"CreateNew – Het netwerk van digitale professionals\",v1:\"CreateNew is recruitment opnieuw vormgegeven. Wij zijn een netwerk van zelfstandige digitale professionals dat zijn leden verbindt met de bedrijven die hen nodig hebben.\"}};function getLocalizedValue(key,locale){while(locale){const values=valuesByLocaleId[locale.id];if(values){const value=values[key];if(value)return value;}locale=locale.fallback;}}export default function metadata(params,activeLocale){return{customHTMLBodyEnd:'<script>\\n(function () {\\n  // ---------------------------------------------------------\\n  // • Stores UTMs on first landing.\\n  // • Keeps UTMs visible in the URL bar on every route.\\n  // • Appends UTMs to allowed links (same-site + app.createnew.co) and form actions.\\n  // • Plays nice with Framer SPA routing.\\n  // • Does not touch aria-labels.\\n  // • Ensures UTMs are present in <a href> attributes so that\\n  //   middle-clicks, right-click \"open in new tab\", or target=\"_blank\"\\n  //   also carry UTMs correctly.\\n  // ---------------------------------------------------------\\n\\n  var STORAGE_KEY = \"__cn_utm__\";\\n  var UTM_KEYS = [\"utm_source\",\"utm_medium\",\"utm_campaign\",\"utm_term\",\"utm_content\"];\\n\\n  // --- Extract UTMs from current location ---\\n  function readUTMFromLocation(search) {\\n    var params = new URLSearchParams(search || \"\");\\n    var utm = new URLSearchParams();\\n    for (var i = 0; i < UTM_KEYS.length; i++) {\\n      var k = UTM_KEYS[i];\\n      var v = params.get(k);\\n      if (v) utm.set(k, v);\\n    }\\n    return utm;\\n  }\\n\\n  // --- Retrieve stored UTMs from sessionStorage (if any) ---\\n  function getStoredUTM() {\\n    try { return new URLSearchParams(sessionStorage.getItem(STORAGE_KEY) || \"\"); }\\n    catch (e) { return new URLSearchParams(); }\\n  }\\n\\n  // --- Save UTMs to sessionStorage ---\\n  function storeUTM(params) {\\n    try {\\n      if ([...params.keys()].length > 0) {\\n        sessionStorage.setItem(STORAGE_KEY, params.toString());\\n      }\\n    } catch (e) {}\\n  }\\n\\n  // --- Determine which UTMs to use: current URL or stored ---\\n  function effectiveUTM() {\\n    var current = readUTMFromLocation(window.location.search);\\n    if ([...current.keys()].length > 0) { storeUTM(current); return current; }\\n    return getStoredUTM();\\n  }\\n\\n  // --- Ensure the UTMs are visible in the address bar ---\\n  function ensureUrlBarHasUTM(utm) {\\n    if ([...utm.keys()].length === 0) return;\\n    var url = new URL(window.location.href);\\n    // Keep other query params, only overwrite/add UTM keys\\n    UTM_KEYS.forEach(function(k){ if (utm.has(k)) url.searchParams.set(k, utm.get(k)); });\\n    if (url.toString() !== window.location.href) {\\n      history.replaceState(history.state, \"\", url.toString());\\n    }\\n  }\\n\\n  // --- Helpers for decorating links/forms ---\\n  function isAllowedLink(href) {\\n    try {\\n      var url = new URL(href, location.origin);\\n      // Always allow same-site\\n      if (url.origin === location.origin) return true;\\n      // Allow app.createnew.co\\n      if (url.origin === \"https://app.createnew.co\") return true;\\n      return false; // all others blocked\\n    } catch (e) {\\n      return true; // treat relative as allowed\\n    }\\n  }\\n\\n  function mergeUTMIntoURL(href, utm, mode) {\\n    if (!href || [...utm.keys()].length === 0) return href;\\n    var url = new URL(href, location.origin);\\n    var sp = url.searchParams;\\n    utm.forEach(function(v, k){ if (mode === \"fill\" && sp.has(k)) return; sp.set(k, v); });\\n    url.search = sp.toString();\\n    return url.toString();\\n  }\\n\\n  // --- Initial load: get UTMs and show them in URL bar ---\\n  var utm = effectiveUTM();\\n  ensureUrlBarHasUTM(utm);\\n\\n  // --- Safely decorate one anchor with UTMs (preserves aria-label) ---\\n  function decorateAnchor(a) {\\n    if (!a) return;\\n    var href = a.getAttribute(\"href\"); if (!href) return;\\n    if (!isAllowedLink(href)) return; // only decorate allowed domains\\n    var savedAria = a.getAttribute(\"aria-label\");\\n    var finalHref = mergeUTMIntoURL(href, utm, \"overwrite\"); // or \"fill\"\\n    if (finalHref && finalHref !== href) a.setAttribute(\"href\", finalHref);\\n    if (savedAria && a.getAttribute(\"aria-label\") !== savedAria) a.setAttribute(\"aria-label\", savedAria);\\n  }\\n\\n  // --- Decorate all anchors currently in the DOM ---\\n  function decorateAllAnchors() {\\n    document.querySelectorAll(\"a[href]\").forEach(decorateAnchor);\\n  }\\n\\n  // --- Just-in-time decoration on click/touch/keyboard navigation ---\\n  // (ensures href is correct before Framer/GTM handlers run)\\n  function findAnchor(target) {\\n    return (target && target.closest) ? target.closest(\"a[href]\") : null;\\n  }\\n  document.addEventListener(\"mousedown\", function(e){ decorateAnchor(findAnchor(e.target)); }, true);\\n  document.addEventListener(\"touchstart\", function(e){ decorateAnchor(findAnchor(e.target)); }, true);\\n  document.addEventListener(\"keydown\", function(e){ if (e.key === \"Enter\" || e.key === \" \") decorateAnchor(findAnchor(e.target)); }, true);\\n\\n  // --- Add UTMs to form actions just before submit ---\\n  document.addEventListener(\"submit\", function (e) {\\n    var form = e.target; if (!(form instanceof HTMLFormElement)) return;\\n    var action = form.getAttribute(\"action\"); if (!action) return;\\n    if (!isAllowedLink(action)) return;\\n    form.setAttribute(\"action\", mergeUTMIntoURL(action, utm, \"overwrite\"));\\n  }, true);\\n\\n  // --- Decorate all anchors immediately so middle-click/new tab works ---\\n  decorateAllAnchors();\\n\\n  // --- Watch DOM for new anchors being added dynamically (Framer SPA) ---\\n  var mo = new MutationObserver(function(muts){\\n    muts.forEach(function(m){\\n      m.addedNodes.forEach(function(node){\\n        if (node.nodeType !== 1) return;\\n        if (node.tagName === \"A\") decorateAnchor(node);\\n        node.querySelectorAll && node.querySelectorAll(\"a[href]\").forEach(decorateAnchor);\\n      });\\n    });\\n  });\\n  mo.observe(document.documentElement, { childList: true, subtree: true });\\n\\n  // --- Ensure UTMs stay in bar and links stay decorated across SPA route changes ---\\n  var origPush = history.pushState;\\n  var origReplace = history.replaceState;\\n  function rerun() {\\n    utm = effectiveUTM();           // refresh from current or stored\\n    ensureUrlBarHasUTM(utm);        // keep UTMs visible in the bar\\n    decorateAllAnchors();           // refresh all links so new tabs/windows carry UTMs\\n  }\\n  history.pushState = function () { var r = origPush.apply(this, arguments); rerun(); return r; };\\n  history.replaceState = function () { var r = origReplace.apply(this, arguments); rerun(); return r; };\\n  window.addEventListener(\"popstate\", rerun);\\n})();\\n</script>\\n<!-- Plugin: 495b0d --> <script async=\"\" src=\"https://scripts.simpleanalyticscdn.com/latest.js\"></script>\\n<script async=\"\" src=\"https://scripts.simpleanalyticscdn.com/auto-events.js\"></script>',customHTMLBodyStart:'<!-- Cal.com Embed Code -->\\n<script type=\"text/javascript\">\\n  (function (C, A, L) {\\n    let p = function (a, ar) { a.q.push(ar); };\\n    let d = C.document;\\n    C.Cal = C.Cal || function () {\\n      let cal = C.Cal;\\n      let ar = arguments;\\n      if (!cal.loaded) {\\n        cal.ns = {};\\n        cal.q = cal.q || [];\\n        d.head.appendChild(d.createElement(\"script\")).src = A;\\n        cal.loaded = true;\\n      }\\n      if (ar[0] === L) {\\n        const api = function () { p(api, arguments); };\\n        const namespace = ar[1];\\n        api.q = api.q || [];\\n        if (typeof namespace === \"string\") {\\n          cal.ns[namespace] = cal.ns[namespace] || api;\\n          p(cal.ns[namespace], ar);\\n          p(cal, [\"initNamespace\", namespace]);\\n        } else p(cal, ar);\\n        return;\\n      }\\n      p(cal, ar);\\n    };\\n  })(window, \"https://app.cal.com/embed/embed.js\", \"init\");\\n\\n  Cal(\"init\", \"intro\", { origin: \"https://cal.com\" });\\n\\n  Cal.ns[\"intro\"](\"ui\", {\\n    \"cssVarsPerTheme\": {\\n      \"light\": { \"cal-brand\": \"#0D0D12\" },\\n      \"dark\": { \"cal-brand\": \"#F1F4F7\" }\\n    },\\n    \"hideEventTypeDetails\": false,\\n    \"layout\": \"month_view\"\\n  });\\n</script>',customHTMLHeadStart:\"<!-- Google Tag Manager -->\\n<script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':\\nnew Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],\\nj=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=\\n'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);\\n})(window,document,'script','dataLayer','GTM-MQNPSPCB');</script>\\n<!-- End Google Tag Manager -->\",description:getLocalizedValue(\"v1\",activeLocale)??\"CreateNew is recruitment reimagined. We’re a network of independent digital professionals that connects its members with the companies that need them.\",favicon:\"https://framerusercontent.com/assets/zKS6O7vXiDDm2XM2QS4VZ3WaA.svg\",robots:\"max-image-preview:large\",socialImage:\"https://framerusercontent.com/assets/BuA17dmEqCZezUjBCt0JNWhD48.png\",title:getLocalizedValue(\"v0\",activeLocale)??\"CreateNew – The network of digital professionals\"};}export const metadataVersion=1;\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"metadataVersion\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}"],"mappings":"2DAC4Q,SAAS,EAAkB,EAAI,EAAO,CAAC,KAAM,GAAO,CAAC,IAAM,EAAO,EAAiB,EAAO,IAAI,GAAG,EAAO,CAAC,IAAM,EAAM,EAAO,GAAK,GAAG,EAAM,OAAO,EAAO,EAAO,EAAO,UAAW,SAAwB,EAAS,EAAO,EAAa,CAAC,MAAM,CAAC,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;yFAAmxM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;YAA2qC,oBAAoB;;;;;;iCAA4a,YAAY,EAAkB,KAAK,EAAa,EAAE,yJAAyJ,QAAQ,qEAAqE,OAAO,0BAA0B,YAAY,sEAAsE,MAAM,EAAkB,KAAK,EAAa,EAAE,mDAAmD,iBAAl4R,EAAiB,CAAC,UAAU,CAAC,GAAG,qDAAqD,GAAG,4KAA4K,CAAC"}