{"version":3,"file":"shared-lib.vDMTOvQb.mjs","names":["r","uuid"],"sources":["https:/framerusercontent.com/modules/qGoVzbWYhJxr4Ja3txj9/6vqF7BNXsC0gn7u6dtlv/constants.js","https:/ga.jspm.io/npm:superhuman-node-uuid@1.4.9/uuid.js","https:/framerusercontent.com/modules/HDlWka8tZOtRsv3kRGg4/3MIuWxgNTfE51T19t0Gv/backend.js","https:/framerusercontent.com/modules/wIdDaQBcSMjVXFnAekhM/mSmA2RlD0eOK3GDpSuju/devices.js","https:/framerusercontent.com/modules/Bh7OD6mPVlBw5dTkdVTZ/A3mtfMP5DL7a6ZzetZZG/events.js","https:/framerusercontent.com/modules/dBL2vbDV3sJ2ZEsyWyCN/VNfd8kDDFADwJfrdlweH/siteMetadata.js"],"sourcesContent":["export const IS_SSR=typeof window===\"undefined\";// The second condition covers two types of Framer URLs:\n// 1. Our base URL:   https://end-smash-758509.framer.app\n// 2. Versioned URLs: https://end-smash-758509-<version>.framer.app\nexport const IS_STAGING=!IS_SSR&&(window.location.hostname===\"staging-superhuman.com\"||window.location.hostname.startsWith(\"end-smash-758509\"));export const IS_PRODUCTION=!IS_SSR&&[\"superhuman.com\",\"superhuman.framer.website\"].includes(window.location.hostname);// This should only be false when previewing a page in Framer's editor.\nexport const SHOULD_TRACK=IS_STAGING||IS_PRODUCTION;export const ORIGIN=IS_PRODUCTION?\"https://superhuman.com\":\"https://staging-superhuman.com\";export const SERVER_ORIGIN=IS_PRODUCTION?\"https://mail.superhuman.com\":\"https://mail.staging-superhuman.com\";export const WEB_APP_ORIGIN=IS_PRODUCTION?\"https://mail.superhuman.com\":\"https://mail.staging-superhuman.com\";export const BACKEND_URL=`${SERVER_ORIGIN}/~backend`;export const NATIVE_PROTOCOL=IS_PRODUCTION?\"superhuman://\":\"staging-superhuman://\";export const LAUNCH_DARKLY_KEY=IS_PRODUCTION?\"62fd433bd6769811fb0cefc0\":\"62fd433bd6769811fb0cefbf\";export const SIGNUP_MODALS={ERROR:\"Error\",LOADING:\"Loading\",MAYBE_PROCEED:\"Maybe Proceed\",SECURITY_BLOCKED:\"Security Blocked\",SIGNUP_FORM:\"Signup Form\",TURNED_DOWN:\"Turned Down\",TURNED_DOWN_WITH_CONTEXT:\"Turned Down with Context\"};// OAuth Client IDs\nexport const GOOGLE_CLIENT_ID=IS_PRODUCTION?\"649336022844-oq8a3tl77u107d1j8dbm705lkaj77v1h.apps.googleusercontent.com\":\"885908629539-0r1ub3cf1sbrq26qk6kls4qtu0lt80ls.apps.googleusercontent.com\";export const MICROSOFT_CLIENT_ID=IS_PRODUCTION?\"c025cbf5-f77d-47f5-8c47-7e740cf01726\":\"88aa9707-6fd8-4fc9-9e81-c925a99f3295\";export const MISSING_EMAIL=\"missing-email@example.com\";export const EMAIL_SESSION_STORAGE_KEY=\"email_store_key\";// Chrome Extension\nexport const CHROME_EXTENSION_ID=IS_PRODUCTION?\"dcgcnpooblobhncpnddnhoendgbnglpn\":\"jjpbibigahifheoipgfgfdgakiljmlpl\";export const CHROME_EXTENSION_LINK=`https://chromewebstore.google.com/detail/${CHROME_EXTENSION_ID}`;// Feature Flags\nexport const EXTERNAL_CHROME_EXTENSION_DOWNLOAD_LINK_FLAG=\"external-chrome-extension-download-link\";export const URL_HASHES={MARKETING_PREFERENCES:\"marketing-preferences\"};\nexport const __FramerMetadata__ = {\"exports\":{\"BACKEND_URL\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"GOOGLE_CLIENT_ID\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"NATIVE_PROTOCOL\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"SERVER_ORIGIN\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"MICROSOFT_CLIENT_ID\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"LAUNCH_DARKLY_KEY\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"SIGNUP_MODALS\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"EMAIL_SESSION_STORAGE_KEY\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"ORIGIN\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"URL_HASHES\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"WEB_APP_ORIGIN\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"CHROME_EXTENSION_LINK\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"CHROME_EXTENSION_ID\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"SHOULD_TRACK\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"IS_SSR\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"IS_PRODUCTION\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"EXTERNAL_CHROME_EXTENSION_DOWNLOAD_LINK_FLAG\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"IS_STAGING\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"MISSING_EMAIL\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./constants.map","var r={};var t=new Uint8Array(16);var a=[];for(var v=0;v<256;v++)a[v]=(v+256).toString(16).substr(1);function v4(){crypto.getRandomValues(t);t[6]=15&t[6]|64;t[8]=63&t[8]|128;var r=0;return a[t[r++]]+a[t[r++]]+a[t[r++]]+a[t[r++]]+\"-\"+a[t[r++]]+a[t[r++]]+\"-\"+a[t[r++]]+a[t[r++]]+\"-\"+a[t[r++]]+a[t[r++]]+\"-\"+a[t[r++]]+a[t[r++]]+a[t[r++]]+a[t[r++]]+a[t[r++]]+a[t[r++]]}r.v4=v4;const n=r.v4;export default r;export{n as v4};\n\n//# sourceMappingURL=uuid.js.map","import{BACKEND_URL}from\"https://framerusercontent.com/modules/qGoVzbWYhJxr4Ja3txj9/6vqF7BNXsC0gn7u6dtlv/constants.js\";export function backendFetch(path,init){const request=init??{};const{headers}=request;const headersWithVersion={...headers,\"x-superhuman-version\":getFramerOptimizedAt()??\"\"};return fetch(`${BACKEND_URL}${path}`,{...request,headers:headersWithVersion});}function getFramerOptimizedAt(){const main=document.querySelector(\"#main\");if(!main){return undefined;}return main.dataset.framerPageOptimizedAt;}\nexport const __FramerMetadata__ = {\"exports\":{\"backendFetch\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","export const isAndroid=()=>{return Boolean(navigator.userAgent.match(/android/i));};export const isIOS=()=>Boolean(navigator.userAgent.match(/ipad|iphone|ipod/i)||navigator.userAgent.match(/macintosh/i)&&navigator.maxTouchPoints>2);export const isMac=()=>{return Boolean(navigator?.userAgent.match(/mac/i));};export const isWindows=()=>{return Boolean(navigator.userAgent.match(/win/i));};export const isLinux=()=>{return Boolean(navigator.userAgent.match(/linux/i));};export const isMobile=()=>{return navigator.userAgent.match(/android|webos|iphone|ipod|blackberry|iemobile|opera mini/i)!==null;};// https://stackoverflow.com/questions/4565112/javascript-how-to-find-out-if-the-user-browser-is-chrome\nexport const isChrome=()=>{var isChromium=window.chrome;var winNav=window.navigator;var vendorName=winNav.vendor;var isOpera=typeof window.opr!==\"undefined\";var isIEedge=winNav.userAgent.includes(\"Edg\");var isChromebook=winNav.userAgent.includes(\"CrOS\");return Boolean(isChromium!==null&&typeof isChromium!==\"undefined\"&&vendorName===\"Google Inc.\"&&isOpera===false&&isIEedge===false)||isChromebook;};\nexport const __FramerMetadata__ = {\"exports\":{\"isWindows\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"isMac\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"isLinux\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"isMobile\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"isChrome\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"isIOS\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"isAndroid\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./devices.map","/**\n * Overview:\n * This is a lightweight event tracking framework.\n *\n * Usage:\n * 1. Import Events into a file.\n * 2. Optionally, call Events.setEmail(\"example@email.com\") to identify a visitor.\n * 3. Call Events.visitPage(\"page_name\") to log the visit and set the page for further events.\n * 4. Call Events.action(\"action_name\") to log other events.\n */function _define_property(obj,key,value){if(key in obj){Object.defineProperty(obj,key,{value:value,enumerable:true,configurable:true,writable:true});}else{obj[key]=value;}return obj;}import uuid from\"superhuman-node-uuid\";import{IS_SSR,IS_PRODUCTION,IS_STAGING,SHOULD_TRACK,MISSING_EMAIL}from\"https://framerusercontent.com/modules/qGoVzbWYhJxr4Ja3txj9/6vqF7BNXsC0gn7u6dtlv/constants.js\";import{backendFetch}from\"https://framerusercontent.com/modules/HDlWka8tZOtRsv3kRGg4/3MIuWxgNTfE51T19t0Gv/backend.js\";import{isMobile}from\"https://framerusercontent.com/modules/wIdDaQBcSMjVXFnAekhM/mSmA2RlD0eOK3GDpSuju/devices.js\";const COOKIE_NAME=\"web-device\";// These are sensitive values that we never want to log.\nconst URL_PARAMS_TO_EXCLUDE=[\"token\",\"auth\",\"secret\"];// These are non-sensitive values we always want to log.\nconst URL_PARAMS_TO_INCLUDE=[\"source\",\"via\",\"utm_source\",\"utm_medium\",\"utm_campaign\"];function filterParamsFromURL(url){try{// We use `replace` instead of `replaceAll` to support more browsers.\n// We don't use look behind assertion since some browsers (like Safari) don't support them.\nfor(const param of URL_PARAMS_TO_EXCLUDE){url=url.replace(new RegExp(\"&\\\\w*\"+param+\"\\\\w*=[^?#&]*\",\"gi\"),\"&\");url=url.replace(new RegExp(\"\\\\?\\\\w*\"+param+\"\\\\w*=[^?#&]*\",\"gi\"),\"?\");url=url.replace(new RegExp(\"#\\\\w*\"+param+\"\\\\w*=[^?#&]*\",\"gi\"),\"#\");}return url;}catch(e){console.error(e);window.Bugsnag.notify(e);// Return a blank URL if there was an error and it wasn't filtered.\nreturn\"\";}}function trackPodscribeEvents(eventType,fields,retries=10){if(SHOULD_TRACK||!window){return;}const podscribe=window.podscribe;if(typeof podscribe===\"function\"){podscribe(eventType,fields);}else if(retries>0){setTimeout(()=>trackPodscribeEvents(eventType,fields,retries-1),500);}}// Reads the gnar_containerId cookie set by .superhuman.com.\n// document.cookie only exposes cookies scoped to the current domain,\n// so this won't pick up the .grammarly.com cookie of the same name.\nfunction getGnarContainerId(){if(IS_SSR)return null;const cookie=document.cookie.split(\"; \").find(row=>row.startsWith(\"gnar_containerId=\"));return cookie?cookie.split(\"=\")[1]:null;}class Events{// Creates a semi-persistent ID for people who visit the site repeatedly.\nstatic setDevice(){if(IS_SSR)return;const cookieStr=document.cookie.split(\"; \").find(row=>row.startsWith(COOKIE_NAME));if(cookieStr){Events.deviceID=cookieStr.split(\"=\")[1];return;}Events.deviceID=uuid.v4();const expiresDate=new Date(Date.now()+60*864e5).toUTCString();const domain=IS_PRODUCTION?\"superhuman.com\":\"staging-superhuman.com\";const cookieValue=`${Events.deviceID}; path=/; expires=${expiresDate}; domain=${domain}`;document.cookie=COOKIE_NAME+\"=\"+cookieValue;}// Sets the global email for all events.\nstatic setEmail(email){Events.email=email;}// Sets the global location and fires ui.visit for the page.\nstatic visitPage(page,fields={}){Events._page=page;const gnarContainerId=getGnarContainerId();if(gnarContainerId){fields.gnar_container_id=gnarContainerId;}Events.fire(\"ui.visit\",fields);trackPodscribeEvents(\"visit\",{device_id:this.deviceID});}static action(actionName,fields={}){return Events.fire(\"ui.action\",{action:actionName,device_type:isMobile()?\"mobile\":\"desktop\",...fields});}static logGoogleAdsIdentifier(){// Fallback to param in case there's a problem with localStorage.\nconst searchParams=new URLSearchParams(window?.location?.search||\"\");const gclid=localStorage?.getItem(\"googleAdsIdentifier\")||searchParams.get(\"gclid\");if(gclid){Events.fire(\"log.google_ads_identifier\",{gclid});}}static async fire(metric,fields={}){// don't fire events if we're in the framer on-custom domain staging environment\nif(typeof window!==\"undefined\"&&window.location?.href?.includes(\"superhuman\")===false){return;}if(!Events.email){Events.email=MISSING_EMAIL;}if(!IS_SSR){const searchParams=new URLSearchParams(window.location.search);for(const param of URL_PARAMS_TO_INCLUDE){const p=searchParams.get(param);if(p){fields[param]=p;}}}const nextTS=new Date;fields.value=nextTS.getTime()-Events._timestamp.getTime();Events._timestamp=nextTS;if(!IS_SSR){const referrer=document.referrer?filterParamsFromURL(document.referrer):\"\";Object.assign(fields,{// If we ever store sensitive info in paths, we need to filter path.\npath:window.location.pathname,page:Events._page,user_agent:navigator&&navigator.userAgent,referrer,url:filterParamsFromURL(window.location.href)});}if(IS_STAGING){console.log(`Firing event ${metric} for ${Events.email}`,fields);}if(SHOULD_TRACK&&Events.email){try{await backendFetch(\"/v3/metrics.write\",{headers:{\"x-superhuman-user-email\":Events.email,\"x-superhuman-device-id\":Events.deviceID},method:\"POST\",body:JSON.stringify({dataset:\"website\",metrics:[{name:metric,fields}]}),keepalive:true});}catch(e){console.error(e);// skip Bugsnag when error is 'Failed to fetch'\nif(e.message===\"Failed to fetch\"){return;}window.Bugsnag.notify(e,event=>{event.addMetadata(\"details\",{fetchUrl:\"/v3/metrics.write\",metric,fields});});}}}}_define_property(Events,\"deviceID\",\"<no device>\");// The backend doesn't accept events with no email.\n// This is the same default our iOS app uses.\n_define_property(Events,\"email\",MISSING_EMAIL);_define_property(Events,\"_page\",\"<no page>\");_define_property(Events,\"_timestamp\",new Date);export{Events as default};Events.setDevice();\nexport const __FramerMetadata__ = {\"exports\":{\"EventsType\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"default\":{\"type\":\"class\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","// Generated by Framer (4ded5ed)\nexport default function metadata(params,activeLocale){return{description:\"Collaborate faster and get more done with AI-native email. Save 4 hours per person every single week. \",favicon:\"https://framerusercontent.com/assets/OcVjwzzZw3hqFLcHspEbJj6oaY.png\",robots:\"max-image-preview:large\",socialImage:\"https://framerusercontent.com/assets/7ziz922VO7zBDrQC3R0jGjSNcYI.png\",title:\"Superhuman Mail\"};}export const metadataVersion=1;\nexport const __FramerMetadata__ = {\"exports\":{\"metadataVersion\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"default\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}"],"mappings":"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"}