{
  "version": 3,
  "sources": ["ssg:https://framerusercontent.com/modules/rjwJWB8TiXMB4q9V5p47/x2N1K9AA9OMUuBkP1Zee/siteMetadata.js"],
  "sourcesContent": ["// Generated by Framer (400c93f)\nexport default function metadata(params,activeLocale){return{customHTMLHeadEnd:\"<style>\\n    li.framer-text p {\\n        margin-bottom: 0.75em;\\n    }\\n</style>\",customHTMLHeadStart:'<script>\\n\\n  const URLS_TO_IGNORE = new Set([\\n    \\'/v2\\', \\n    \\'/unsupported-browser\\', \\n    \\'/bdgvba-dbeef-jfc-fex@23.4.2\\', \\n    \\'/project/1E9Wep-samples\\', \\n    \\'/prototype/12K2Kp-ios-gui-kit/edit\\',\\n    \\'/YWN0aW9uLW\\',\\n    \\'/d/Ygz3VAqC1GMT\\',\\n    \\'/d/2F2J4EKI1Ejr\\',\\n    \\'/d/47Zw774YXrVT\\',\\n    \\'/d/5BSnEiGzRRK6\\',\\n    \\'/d/7hS3xr1c4RRA\\',\\n    \\'/d/BLz5U8ooxOvQ\\',\\n    \\'/d/DT9wVOWYW3wJ\\',\\n    \\'/d/VsxJ1iC2Lin7\\',\\n    \\'/d/n0GzbZJNK5iY\\',\\n    \\'/d/nGdrmyPgr57A\\',\\n    \\'/d/t68G3iUq6W8b\\',\\n    \\'/d/zVUZEnncTaDM\\',\\n    \\'/d/zkPt4XFSbiXn\\',\\n    \\'/design/prototyping-isn-t-about-hitting-home-runs/\\',\\n    \\'/designs/1q6BNV-untitled-design/edit\\',\\n    \\'/null\\',\\n    \\'/project/\\',\\n    \\'/project/1JlxJE-samples\\',\\n    \\'/project/1ZE4JG-sample-project\\',\\n    \\'/team/\\',\\n    \\'/v2-demo/\\',\\n    \\'/wp-admin/\\',\\n    \\'/free/\\',\\n    \\'/project/1E9Wep-samples\\',\\n  ]\\n)\\n  const blacklisted = (path) => URLS_TO_IGNORE.has(path)\\n  \\n  function trackPageView(name, properties = {}) {\\n      if (blacklisted(properties.path)){\\n        console.log(`Pageview not tracked: ${properties.path}`)\\n        return\\n      }\\n      if (typeof analytics !== \\'undefined\\' && typeof analytics.page === \\'function\\') {\\n          try {\\n              analytics.page(name, properties);\\n              console.info(\\'Pageview tracked:\\', name, properties);\\n          } catch (error) {\\n              console.error(\\'Error tracking pageview:\\', error);\\n          }\\n      } else {\\n          console.warn(\\'Segment.js not loaded. Pageview not tracked:\\', name);\\n      }\\n  }\\n  </script>\\n  \\n  \\n  <script>\\n  \\n  const visitedPages = [];\\n\\nconst updateVisited = (urlChangeCallback, titleChangeTimeout) => () => {\\n  const now = Date.now();\\n  const currentUrl = window.location.href;\\n  const currentTitle = document.title;\\n\\n  const previousVisit = visitedPages[1];\\n  const mostRecentVisit = visitedPages[0];\\n\\n  // check if our last outstanding visit has been tracked\\n  if (\\n    mostRecentVisit &&\\n    !mostRecentVisit.tracked &&\\n    mostRecentVisit.visitedAt + titleChangeTimeout < now\\n  ) {\\n    urlChangeCallback({\\n      prevUrl: previousVisit ? previousVisit.url : undefined,\\n      prevTitle: previousVisit ? previousVisit.title : undefined,\\n      newUrl: mostRecentVisit.url,\\n      newTitle: mostRecentVisit.title,\\n    });\\n    mostRecentVisit.tracked = true;\\n  }\\n\\n  // Check if the current URL is already the most recent entry in the list\\n  if (mostRecentVisit && mostRecentVisit.url === currentUrl) {\\n    // update the title if it has changed\\n    if (mostRecentVisit.title !== currentTitle) {\\n      mostRecentVisit.title = currentTitle;\\n      // track the change if the title has changed\\n      if (!mostRecentVisit.tracked) {\\n        urlChangeCallback({\\n          prevUrl: previousVisit ? previousVisit.url : undefined,\\n          prevTitle: previousVisit ? previousVisit.title : undefined,\\n          newUrl: currentUrl,\\n          newTitle: currentTitle,\\n        });\\n        mostRecentVisit.tracked = true;\\n      }\\n    }\\n    return; // don\\'t add the page again\\n  }\\n\\n  let newVisit = undefined;\\n  // Easy case - check if both the URL and title changed at the same time, if so call the callback\\n  if (\\n    (mostRecentVisit &&\\n      currentUrl !== mostRecentVisit.url &&\\n      currentTitle !== mostRecentVisit.title) ||\\n    (!mostRecentVisit && currentTitle) // the first time and we have a title\\n  ) {\\n    urlChangeCallback({\\n      prevUrl: mostRecentVisit ? mostRecentVisit.url : undefined,\\n      prevTitle: mostRecentVisit ? mostRecentVisit.title : undefined,\\n      newUrl: currentUrl,\\n      newTitle: currentTitle,\\n    });\\n    newVisit = {\\n      tracked: true,\\n      url: currentUrl,\\n      title: currentTitle,\\n      visitedAt: Date.now(),\\n    };\\n  } else {\\n    // Add as untracked since we don\\'t know if the title will change\\n    newVisit = {\\n      tracked: false,\\n      url: currentUrl,\\n      title: currentTitle,\\n      visitedAt: Date.now(),\\n    };\\n  }\\n\\n  // add it to the start of the list\\n  visitedPages.unshift(newVisit);\\n\\n  // Keep only the last 3 entries\\n  if (visitedPages.length > 3) {\\n    visitedPages.pop();\\n  }\\n};\\n\\nfunction onUrlChange(callback) {\\n  // Wrap the history methods to detect `pushState` and `replaceState` calls\\n  const originalPushState = history.pushState;\\n  const originalReplaceState = history.replaceState;\\n\\n  history.pushState = function (...args) {\\n    originalPushState.apply(history, args);\\n    callback();\\n  };\\n\\n  history.replaceState = function (...args) {\\n    originalReplaceState.apply(history, args);\\n    callback();\\n  };\\n\\n  // Listen to the `popstate` event, which triggers on browser navigation (back/forward)\\n  window.addEventListener(\"popstate\", () => {\\n    callback();\\n  });\\n}\\n\\nconst gatherInfoAndTrack = ({ prevUrl, newUrl, newTitle }) => {\\n  const path = window.location.pathname; // Updated path part of the URL\\n  const query = window.location.search; // Updated query string\\n  const hash = window.location.hash; // Updated hash portion (if any)\\n\\n  trackPageView(newTitle, { path, url:newUrl, query, hash, ...(prevUrl? {referrer:prevUrl} : {}) });\\n};\\n\\n// Poll the title & url every 150ms\\nconst initPageViewTracking = () => {\\n  const callback = updateVisited(gatherInfoAndTrack, 400)\\n  // run once immediately\\n  callback()\\n  // start polling\\n  setInterval(callback, 100);\\n}\\n    </script>\\n  \\n  <script>\\n  \\n    !function(){var i=\"analytics\",analytics=window[i]=window[i]||[];if(!analytics.initialize)if(analytics.invoked)window.console&&console.error&&console.error(\"Segment snippet included twice.\");else{analytics.invoked=!0;analytics.methods=[\"trackSubmit\",\"trackClick\",\"trackLink\",\"trackForm\",\"pageview\",\"identify\",\"reset\",\"group\",\"track\",\"ready\",\"alias\",\"debug\",\"page\",\"screen\",\"once\",\"off\",\"on\",\"addSourceMiddleware\",\"addIntegrationMiddleware\",\"setAnonymousId\",\"addDestinationMiddleware\",\"register\"];analytics.factory=function(e){return function(){if(window[i].initialized)return window[i][e].apply(window[i],arguments);var n=Array.prototype.slice.call(arguments);if([\"track\",\"screen\",\"alias\",\"group\",\"page\",\"identify\"].indexOf(e)>-1){var c=document.querySelector(\"link[rel=\\'canonical\\']\");n.push({__t:\"bpc\",c:c&&c.getAttribute(\"href\")||void 0,p:location.pathname,u:location.href,s:location.search,t:document.title,r:document.referrer})}n.unshift(e);analytics.push(n);return analytics}};for(var n=0;n<analytics.methods.length;n++){var key=analytics.methods[n];analytics[key]=analytics.factory(key)}analytics.load=function(key,n){var t=document.createElement(\"script\");t.type=\"text/javascript\";t.async=!0;t.setAttribute(\"data-global-segment-analytics-key\",i);t.src=\"https://cdn.segment.com/analytics.js/v1/\" + key + \"/analytics.min.js\";var r=document.getElementsByTagName(\"script\")[0];r.parentNode.insertBefore(t,r);analytics._loadOptions=n};analytics._writeKey=\"AZVfPTsQQXMi5xuDe9cFE41g0mZhnmCW\";;analytics.SNIPPET_VERSION=\"5.2.0\";\\n    analytics.load(\"AZVfPTsQQXMi5xuDe9cFE41g0mZhnmCW\");\\n    initPageViewTracking()\\n    }}();\\n  </script>',description:\"Atomic's in-app messaging platform helps you reach your customers in your most impactful channel - your app.\",favicon:\"https://framerusercontent.com/assets/0qiDrBSPd1zBKVjz1raG8YBa7g.png\",robots:\"max-image-preview:large\",socialImage:\"https://framerusercontent.com/assets/OQ4RbaGsXaLXaXFl8wQoGaWhGsU.png\",title:\"Atomic.io In-App Messaging Platform\"};}export const metadataVersion=1;\nexport const __FramerMetadata__ = {\"exports\":{\"metadataVersion\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"default\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}"],
  "mappings": "AACe,SAARA,EAA0BC,EAAOC,EAAa,CAAC,MAAM,CAAC,kBAAkB;AAAA;AAAA;AAAA;AAAA,UAAmF,oBAAoB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,cAA++N,YAAY,+GAA+G,QAAQ,sEAAsE,OAAO,0BAA0B,YAAY,uEAAuE,MAAM,qCAAqC,CAAE",
  "names": ["metadata", "params", "activeLocale"]
}
