{"version":3,"file":"FunctionsAnimation.DR39RXbc.mjs","names":["tokenizeLine","tokenColor","COLORS","CodeBlock","_Fragment","useState","useRef"],"sources":["https:/framerusercontent.com/modules/jooZGt6a2cOxgi25M4y6/1697fHQbcrcldCIuEEh1/RunFunctionAsset.js","https:/framerusercontent.com/modules/0Jpfo3bYCvrhkzGYc7Oj/VZOWrSvmBHMJzvMYpYty/FunctionsAnimation.js"],"sourcesContent":["import{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{addPropertyControls,ControlType}from\"framer\";import{AnimatePresence,motion}from\"framer-motion\";/* Border/radius straight from RunFunctionAsset.module.css: *//* border: 1px var(--grey-70) solid; border-radius: var(--token-24). */const COLORS={border:\"#383a4d\",background:\"#010314\",base:\"#dfe1f4\",comment:\"#5e6077\",stringPunctuation:\"#9fa2b9\",keywordProperty:\"#f92672\",boolean:\"#7546f9\",number:\"#f8f8f2\",accessor:\"#8e64ff\"};const KEYWORDS=new Set([\"const\",\"let\",\"var\",\"await\",\"async\",\"function\",\"return\",\"new\",\"if\",\"else\",\"for\",\"while\",\"import\",\"from\",\"export\",\"default\",\"class\",\"extends\",\"this\",\"typeof\",\"instanceof\",\"of\",\"in\",\"try\",\"catch\",\"finally\",\"throw\",\"switch\",\"case\",\"break\",\"continue\",\"require\",\"def\"]);const LITERALS=new Set([\"true\",\"false\",\"null\",\"undefined\",\"True\",\"False\",\"None\"]);function tokenizeLine(line){const trimmed=line.trimStart();if(trimmed.startsWith(\"//\")||trimmed.startsWith(\"#\")){return[{type:\"comment\",value:line}];}const tokens=[];const regex=/('(?:[^'\\\\]|\\\\.)*'|\"(?:[^\"\\\\]|\\\\.)*\"|`(?:[^`\\\\]|\\\\.)*`)|(\\b\\d+(?:\\.\\d+)?\\b)|([A-Za-z_$][\\w$]*)|([{}()[\\];,.:])|(\\s+)|(.)/g;let match;while(match=regex.exec(line)){const[,string,number,word,punct,space,other]=match;if(string){tokens.push({type:\"string\",value:string});}else if(number){tokens.push({type:\"number\",value:number});}else if(word){const prevToken=tokens[tokens.length-1];const isAccess=prevToken?.type===\"punctuation\"&&prevToken.value===\".\";let idx=regex.lastIndex;while(line[idx]===\" \")idx++;const nextChar=line[idx];if(KEYWORDS.has(word)){tokens.push({type:\"keyword\",value:word});}else if(LITERALS.has(word)){tokens.push({type:\"literal\",value:word});}else if(nextChar===\"(\"||isAccess){tokens.push({type:\"accessor\",value:word});}else if(nextChar===\":\"){tokens.push({type:\"property\",value:word});}else{tokens.push({type:\"plain\",value:word});}}else if(punct){tokens.push({type:\"punctuation\",value:punct});}else if(space){tokens.push({type:\"plain\",value:space});}else if(other){tokens.push({type:\"plain\",value:other});}}return tokens;}function tokenColor(type){switch(type){case\"comment\":return COLORS.comment;case\"string\":case\"punctuation\":return COLORS.stringPunctuation;case\"number\":return COLORS.number;case\"keyword\":case\"property\":return COLORS.keywordProperty;case\"literal\":return COLORS.boolean;case\"accessor\":return COLORS.accessor;default:return COLORS.base;}}function CodeBlock({code}){const lines=code.split(\"\\n\");return /*#__PURE__*/_jsx(\"div\",{style:{fontFamily:\"'Roboto Mono', Monaco, 'Andale Mono', 'Ubuntu Mono', monospace\",fontSize:13,lineHeight:1.4,textShadow:\"0 1px rgba(0, 0, 0, 0.3)\",padding:16,overflow:\"auto\",whiteSpace:\"pre\"},children:lines.map((line,lineIndex)=>/*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\"},children:[/*#__PURE__*/_jsx(\"span\",{style:{display:\"inline-block\",minWidth:24,marginRight:16,textAlign:\"right\",color:COLORS.comment,userSelect:\"none\",flexShrink:0},children:lineIndex+1}),/*#__PURE__*/_jsxs(\"span\",{children:[tokenizeLine(line).map((token,tokenIndex)=>/*#__PURE__*/_jsx(\"span\",{style:{color:tokenColor(token.type)},children:token.value},tokenIndex)),line.length===0?\" \":null]})]},lineIndex))});}/**\n * Run Function Asset\n *\n * Code preview panel that shows either the Node.js or Python SDK snippet for\n * invoking `evervault.run(...)` on encrypted data, matching the \"Run the\n * Function\" product UI. This is a straight structural port of\n * IntegrateRelayAsset.tsx (Relay's equivalent): no internal tab UI - pair it\n * with an external tab/toggle control (e.g. RunTheFunctionAsset_Toggle) and\n * drive the `variant` prop from it to switch between the two, the same way\n * IntegrateRelayAsset_Toggle drives IntegrateRelayAsset's `variant` prop.\n * Since react-syntax-highlighter isn't resolvable in Framer code components,\n * this hand-rolls the same tokenizer approach as IntegrateRelayAsset.tsx,\n * styled with the Monokai-derived palette from\n * utils/reactSyntaxHighlighterTheme.js. Ported from\n * components/Primitives/Functions/RunFunctionAsset in the Next.js site.\n *\n * @framerIntrinsicWidth 420\n * @framerIntrinsicHeight 220\n *\n * @framerSupportedLayoutWidth any-prefer-fixed\n * @framerSupportedLayoutHeight any-prefer-fixed\n */export default function RunFunctionAsset(props){const{variant=\"node\",nodeCode=`// Import and initialize the Evervault SDK\nconst Evervault = require('@evervault/sdk');\nconst evervault = new Evervault('<APP_ID>', '<API_KEY>');\n\n// When you pass encrypted data to a Function\n// it gets decrypted by the Function's runtime,\n// allowing you to process the data in plaintext\nconst result = await evervault.run(\"function-id\", {\n  data: encryptedData\n});`,pythonCode=`# Import and initialize the Evervault SDK\nimport evervault\nevervault.init(\"<APP_ID>\", \"<API_KEY>\")\n\n# When you pass encrypted data to a Function\n# it gets decrypted by the Function's runtime,\n# allowing you to process the data in plaintext\nresult = evervault.run(\"function-id\", {\n    \"data\": encrypted_data\n})`,style}=props;const activeCode=variant===\"node\"?nodeCode:pythonCode;return /*#__PURE__*/_jsxs(\"div\",{style:{border:`1px solid ${COLORS.border}`,borderRadius:19.2,background:COLORS.background,overflow:\"hidden\",...style},children:[/*#__PURE__*/_jsx(\"link\",{href:\"https://fonts.googleapis.com/css2?family=Roboto+Mono:wght@400;500&display=swap\",rel:\"stylesheet\"}),/*#__PURE__*/_jsx(AnimatePresence,{mode:\"wait\",children:/*#__PURE__*/_jsx(motion.div,{initial:{opacity:0},animate:{opacity:1},exit:{opacity:0},transition:{duration:.2},children:/*#__PURE__*/_jsx(CodeBlock,{code:activeCode})},variant)})]});}addPropertyControls(RunFunctionAsset,{variant:{type:ControlType.Enum,title:\"Active Tab\",options:[\"node\",\"python\"],optionTitles:[\"Node.js\",\"Python\"],defaultValue:\"node\",displaySegmentedControl:true},nodeCode:{type:ControlType.String,title:\"Node Code\",displayTextArea:true,defaultValue:`// Import and initialize the Evervault SDK\nconst Evervault = require('@evervault/sdk');\nconst evervault = new Evervault('<APP_ID>', '<API_KEY>');\n\n// When you pass encrypted data to a Function\n// it gets decrypted by the Function's runtime,\n// allowing you to process the data in plaintext\nconst result = await evervault.run(\"function-id\", {\n  data: encryptedData\n});`},pythonCode:{type:ControlType.String,title:\"Python Code\",displayTextArea:true,defaultValue:`# Import and initialize the Evervault SDK\nimport evervault\nevervault.init(\"<APP_ID>\", \"<API_KEY>\")\n\n# When you pass encrypted data to a Function\n# it gets decrypted by the Function's runtime,\n# allowing you to process the data in plaintext\nresult = evervault.run(\"function-id\", {\n    \"data\": encrypted_data\n})`}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"RunFunctionAsset\",\"slots\":[],\"annotations\":{\"framerSupportedLayoutWidth\":\"any-prefer-fixed\",\"framerIntrinsicWidth\":\"420\",\"framerSupportedLayoutHeight\":\"any-prefer-fixed\",\"framerIntrinsicHeight\":\"220\",\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./RunFunctionAsset.map","import{jsx as _jsx,jsxs as _jsxs,Fragment as _Fragment}from\"react/jsx-runtime\";import{useEffect,useRef,useState}from\"react\";import{addPropertyControls,ControlType,useIsStaticRenderer}from\"framer\";import{AnimatePresence,motion,useAnimationControls,useInView}from\"framer-motion\";/* Framer code components can't resolve npm packages like lucide-react at   *//* runtime (\"Unable to resolve 'lucide-react'\"), so the two icons the       *//* source imports from it (Shovel, Wand2) are inlined here verbatim from    *//* lucide's own SVG source (24x24, stroke=currentColor, strokeWidth=2,      *//* round caps/joins) instead of being reimagined.                          */function Shovel({size=12,style}){return /*#__PURE__*/_jsxs(\"svg\",{width:size,height:size,viewBox:\"0 0 24 24\",fill:\"none\",stroke:\"currentColor\",strokeWidth:2,strokeLinecap:\"round\",strokeLinejoin:\"round\",style:style,children:[/*#__PURE__*/_jsx(\"path\",{d:\"M21.56 4.56a1.5 1.5 0 0 1 0 2.122l-.47.47a3 3 0 0 1-4.212-.03 3 3 0 0 1 0-4.243l.44-.44a1.5 1.5 0 0 1 2.121 0z\"}),/*#__PURE__*/_jsx(\"path\",{d:\"M3 22a1 1 0 0 1-1-1v-3.586a1 1 0 0 1 .293-.707l3.355-3.355a1.205 1.205 0 0 1 1.704 0l3.296 3.296a1.205 1.205 0 0 1 0 1.704l-3.355 3.355a1 1 0 0 1-.707.293z\"}),/*#__PURE__*/_jsx(\"path\",{d:\"m9 15 7.879-7.878\"})]});}function Wand2({size=12,style}){return /*#__PURE__*/_jsxs(\"svg\",{width:size,height:size,viewBox:\"0 0 24 24\",fill:\"none\",stroke:\"currentColor\",strokeWidth:2,strokeLinecap:\"round\",strokeLinejoin:\"round\",style:style,children:[/*#__PURE__*/_jsx(\"path\",{d:\"m21.64 3.64-1.28-1.28a1.21 1.21 0 0 0-1.72 0L2.36 18.64a1.21 1.21 0 0 0 0 1.72l1.28 1.28a1.2 1.2 0 0 0 1.72 0L21.64 5.36a1.2 1.2 0 0 0 0-1.72\"}),/*#__PURE__*/_jsx(\"path\",{d:\"m14 7 3 3\"}),/*#__PURE__*/_jsx(\"path\",{d:\"M5 6v4\"}),/*#__PURE__*/_jsx(\"path\",{d:\"M19 14v4\"}),/*#__PURE__*/_jsx(\"path\",{d:\"M10 2v2\"}),/*#__PURE__*/_jsx(\"path\",{d:\"M7 8H3\"}),/*#__PURE__*/_jsx(\"path\",{d:\"M21 16h-4\"}),/*#__PURE__*/_jsx(\"path\",{d:\"M11 3H9\"})]});}/* ------------------------------------------------------------------ *//* Colors                                                             *//* ------------------------------------------------------------------ *//* Grey/brand scale mirrors styles/_root.css in the Next.js site.     */const COLORS={grey100:\"#010314\",grey90:\"#171825\",grey80:\"#2a2b3a\",grey70:\"#383a4d\",grey60:\"#5e6077\",grey50:\"#9fa2b9\",grey30:\"#dfe1f4\",grey20:\"#ececfb\",grey00:\"#ffffff\",primary:\"#6633ee\",primaryLight:\"#8e64ff\"};/* Monokai-derived code palette, matches utils/reactSyntaxHighlighterTheme.js */const CODE_COLORS={keyword:\"#f92672\",variable:\"#7546f9\",accessor:\"#8e64ff\",number:\"#f8f8f2\",builtin:\"#a6e22e\",string:COLORS.grey50,punctuation:COLORS.grey50,comment:COLORS.grey60,important:\"#fd971f\",plain:COLORS.grey30};const MONO_FONT=\"'Roboto Mono', Monaco, 'Andale Mono', 'Ubuntu Mono', monospace\";/* Base UI font mirrors --font-family-base ('Inter') in the Next.js site. */const BASE_FONT=\"'Inter', sans-serif\";/* ------------------------------------------------------------------ *//* Code snippets, ported verbatim from                                *//* components/Primitives/Functions/FunctionsAnimation/config.js       *//* ------------------------------------------------------------------ */const serverCodeNode=`const isValid = await ev.run('validateEmail', { encrypted });\nconsole.log(isValid ? 'Valid Email' : 'Invalid Email')`;const functionCodeNode=`// Encrypted payloads are automatically decrypted\nexports.handler = async function({ encrypted }){\n  const regex = new RegExp('[a-z0-9]+@[a-z]+\\\\.[a-z]');\n  return regex.test(encrypted.emailAddress);\n};`;const serverCodePython=`is_valid = ev.run('validateEmail', { \"encrypted\": encrypted })\nconsole.log('Valid Email' if is_valid else 'Invalid Email')`;const functionCodePython=`import re\n// Encrypted payloads are automatically decrypted\ndef handler(data, context):\n  regex = re.search('[a-z0-9]+@[a-z]+.[a-z]', data.encrypted)\n  return bool(regex)`;/* ------------------------------------------------------------------ *//* Hand-rolled tokenizer (no react-syntax-highlighter available in    *//* Framer code components) - same spirit as RelaySDKAsset's           *//* tokenizeLine/tokenColor, extended with comments + a python keyword *//* list.                                                               *//* ------------------------------------------------------------------ */const JS_KEYWORDS=new Set([\"const\",\"let\",\"var\",\"await\",\"async\",\"function\",\"return\",\"new\",\"import\",\"from\",\"exports\",\"module\",\"if\",\"else\",\"typeof\"]);const PY_KEYWORDS=new Set([\"def\",\"import\",\"return\",\"if\",\"else\",\"elif\",\"for\",\"while\",\"class\",\"and\",\"or\",\"not\",\"in\",\"is\",\"from\",\"await\",\"async\"]);const BOOLEAN_WORDS=new Set([\"true\",\"false\",\"True\",\"False\",\"None\",\"null\",\"undefined\"]);function tokenizeLine(line,keywords){const tokens=[];const trimmed=line.trimStart();const leadingWhitespace=line.slice(0,line.length-trimmed.length);if(leadingWhitespace)tokens.push({type:\"plain\",value:leadingWhitespace});if(trimmed.startsWith(\"//\")||trimmed.startsWith(\"#\")){tokens.push({type:\"comment\",value:trimmed});return tokens;}const regex=/('(?:[^'\\\\]|\\\\.)*'|\"(?:[^\"\\\\]|\\\\.)*\")|(\\b\\d[\\w.]*\\b)|([A-Za-z_$][\\w$]*)|([{}()[\\];,.:?])|(\\s+)|(.)/g;let match;while(match=regex.exec(trimmed)){const[,string,number,word,punct,space,other]=match;if(string){tokens.push({type:\"string\",value:string});}else if(number){tokens.push({type:\"number\",value:number});}else if(word){const prev=tokens[tokens.length-1];const isAccess=prev?.type===\"punctuation\"&&prev.value===\".\";let idx=regex.lastIndex;while(trimmed[idx]===\" \")idx++;const nextChar=trimmed[idx];if(BOOLEAN_WORDS.has(word))tokens.push({type:\"boolean\",value:word});else if(keywords.has(word))tokens.push({type:\"keyword\",value:word});else if(nextChar===\"(\")tokens.push({type:\"function\",value:word});else if(isAccess)tokens.push({type:\"accessor\",value:word});else if(nextChar===\":\")tokens.push({type:\"property\",value:word});else tokens.push({type:\"plain\",value:word});}else if(punct){tokens.push({type:\"punctuation\",value:punct});}else if(space){tokens.push({type:\"plain\",value:space});}else if(other){tokens.push({type:\"plain\",value:other});}}return tokens;}function tokenColor(type){switch(type){case\"keyword\":case\"property\":return CODE_COLORS.keyword;case\"boolean\":return CODE_COLORS.variable;case\"accessor\":case\"function\":return CODE_COLORS.accessor;case\"number\":return CODE_COLORS.number;case\"string\":return CODE_COLORS.string;case\"punctuation\":return CODE_COLORS.punctuation;case\"comment\":return CODE_COLORS.comment;default:return CODE_COLORS.plain;}}function LineSweep({children,state}){return /*#__PURE__*/_jsx(motion.div,{initial:false,animate:{backgroundPosition:state===\"animateIn\"?[\"100% 0%\",\"0% 0%\"]:state===\"animateOut\"?[\"0% 0%\",\"100% 0%\"]:\"100% 0%\"},transition:{duration:.6,ease:\"easeOut\"},style:{backgroundImage:\"linear-gradient(90deg, rgba(255,255,255,0.25), transparent, transparent)\",backgroundSize:\"200% 100%\",borderRadius:3,margin:\"0 -4px\",padding:\"1px 4px 3px\"},children:children});}function CodeLine({line,keywords,sweep}){const content=/*#__PURE__*/_jsxs(_Fragment,{children:[tokenizeLine(line,keywords).map((token,tokenIndex)=>/*#__PURE__*/_jsx(\"span\",{style:{color:tokenColor(token.type)},children:token.value},tokenIndex)),line.length===0?\" \":null]});if(sweep)return /*#__PURE__*/_jsx(LineSweep,{state:sweep,children:content});return /*#__PURE__*/_jsx(\"div\",{children:content});}function CodeBlock({code,language,highlightLine,highlightState}){const keywords=language===\"py\"?PY_KEYWORDS:JS_KEYWORDS;const lines=code.split(\"\\n\");return /*#__PURE__*/_jsx(\"div\",{style:{fontFamily:MONO_FONT,fontSize:\"0.8em\",lineHeight:1.5,textShadow:\"0 1px rgba(0, 0, 0, 0.3)\",padding:\"14.4px 19.2px\",overflow:\"auto\",whiteSpace:\"pre\"},children:lines.map((line,lineIndex)=>/*#__PURE__*/_jsx(CodeLine,{line:line,keywords:keywords,sweep:lineIndex+1===highlightLine?highlightState:undefined},lineIndex))});}/* ------------------------------------------------------------------ *//* Tab bar - straight port of components/CodeTabs (CodeTabs.js /      *//* CodeTabs.module.css): a row of tabs plus a trailing \"filler\" cell, *//* with border-radius/border logic keyed off which tab is active,     *//* the one just after it, the one just before it, and tab 0 when it   *//* isn't the active tab.                                              *//* ------------------------------------------------------------------ */function CodeTabs({tabs,value,onChange,className}){const active=value?tabs.indexOf(value):0;return /*#__PURE__*/_jsx(\"div\",{className:className,style:{borderBottom:\"1px solid rgba(255,255,255,0.15)\",padding:\"6.4px 6.4px 0\",position:\"relative\"},children:/*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",position:\"relative\"},children:[tabs.map((tab,index)=>{const isActive=active===index;const isAfterActive=active+1===index;const isBeforeActive=active-1===index;const isFirstActive=index===0&&active!==0;return /*#__PURE__*/_jsxs(\"button\",{onClick:()=>onChange&&onChange(tab),style:{border:\"1px solid rgba(255,255,255,0)\",borderBottom:\"none\",borderTop:\"1px solid rgba(255,255,255,0.1)\",borderRight:\"1px solid rgba(255,255,255,0.1)\",borderTopLeftRadius:index===0?9.6:0,background:\"rgba(255,255,255,0.075)\",color:\"rgba(255,255,255,0.25)\",fontFamily:BASE_FONT,fontSize:\"0.75rem\",padding:\"3.2px 12.8px\",position:\"relative\",cursor:onChange?\"pointer\":\"default\",whiteSpace:\"nowrap\",transition:\"color 0.25s\",...isActive&&{color:COLORS.grey00,background:\"transparent\",borderTop:\"1px solid rgba(255,255,255,0)\",borderRight:\"1px solid rgba(255,255,255,0)\"},...isAfterActive&&{borderTopLeftRadius:9.6,borderLeft:\"1px solid rgba(255,255,255,0.1)\"},...isBeforeActive&&{borderTopRightRadius:9.6,borderRight:\"1px solid rgba(255,255,255,0.1)\"},...isFirstActive&&{borderLeft:\"1px solid rgba(255,255,255,0.15)\"}},children:[isActive&&/*#__PURE__*/_jsx(\"div\",{style:{position:\"absolute\",left:0,top:\"100%\",height:19.2,width:\"100%\",opacity:.1,background:\"linear-gradient(#ffffff, transparent)\",pointerEvents:\"none\"}}),tab]},tab);}),/*#__PURE__*/_jsx(\"div\",{style:{display:\"flex\",flex:1,justifyContent:\"flex-end\",alignItems:\"center\",borderTopRightRadius:9.6,border:\"1px solid rgba(255,255,255,0.175)\",borderBottom:\"none\",borderLeft:\"none\",padding:\"0 6.4px\",position:\"relative\",overflow:\"hidden\",...active===tabs.length-1&&{borderTopLeftRadius:9.6,borderLeft:\"1px solid rgba(255,255,255,0.15)\"}},children:/*#__PURE__*/_jsx(\"div\",{style:{position:\"absolute\",left:0,bottom:0,width:\"100%\",height:\"calc(100% + 1px)\",background:\"linear-gradient(90deg, rgba(255,255,255,0.075), transparent)\",pointerEvents:\"none\"}})})]})});}/* ------------------------------------------------------------------ *//* Main component                                                      *//* ------------------------------------------------------------------ *//**\n * Functions Animation\n *\n * Port of FunctionsAnimation: a \"Playground\" code panel (server.js /\n * server.py) with a Run button and a scrolling Terminal log, paired with a\n * Function code panel (validateEmail.js / validate-email.py) that pulses\n * with a glow when it's \"called\". Clicking Run replays the same sequence as\n * the source: line 1 of the server snippet sweeps (the function call) ->\n * the function panel glows -> line 2 sweeps (the log call) -> a new\n * \"Valid Email\" entry appears in the terminal. The server/function language\n * tabs are kept in lockstep (switching to server.py flips the function tab\n * to validate-email.py and vice versa) via the same paired-effect approach\n * as the source. Since react-syntax-highlighter isn't available in Framer\n * code components, this ports a small hand-rolled JS/Python tokenizer\n * (keywords, strings, numbers, comments, function calls) styled with the\n * Monokai-derived palette from utils/reactSyntaxHighlighterTheme.js. Ported\n * from components/Primitives/Functions/FunctionsAnimation in the Next.js\n * site.\n *\n * @framerIntrinsicWidth 460\n * @framerIntrinsicHeight 560\n *\n * @framerSupportedLayoutWidth any-prefer-fixed\n * @framerSupportedLayoutHeight any-prefer-fixed\n */export default function FunctionsAnimation(props){const{autoRunOnView=false,runDelay=600,style}=props;const[functionCall,setFunctionCall]=useState(undefined);const[logCall,setLogCall]=useState(undefined);const[logs,setLogs]=useState([]);const[serverTab,setServerTab]=useState(\"server.js\");const[functionTab,setFunctionTab]=useState(\"validateEmail.js\");const functionAnim=useAnimationControls();const isStatic=useIsStaticRenderer();const ref=useRef(null);const inView=useInView(ref);const hasAutoRun=useRef(false);const wait=time=>new Promise(resolve=>setTimeout(resolve,time));const animate=async()=>{setFunctionCall(\"animateIn\");await wait(1e3);await functionAnim.start({boxShadow:[\"0px 0px 0px 0px rgba(255,255,255,.3)\",\"0px 0px 0px 20px rgba(255,255,255,0)\"],transition:{duration:1,ease:\"easeOut\"}});setFunctionCall(\"animateOut\");setLogCall(\"animateIn\");await wait(1e3);setLogCall(\"animateOut\");setLogs(current=>[{id:Math.random()*10,language:serverTab},...current]);await wait(1e3);setFunctionCall(undefined);setLogCall(undefined);};// Keep the server/function language tabs in lockstep, mirroring the\n// paired useEffects in the source component.\nuseEffect(()=>{if(functionTab===\"validateEmail.js\"&&serverTab===\"server.py\")setFunctionTab(\"validate-email.py\");else if(functionTab===\"validate-email.py\"&&serverTab===\"server.js\")setFunctionTab(\"validateEmail.js\");},[serverTab]);useEffect(()=>{if(serverTab===\"server.js\"&&functionTab===\"validate-email.py\")setServerTab(\"server.py\");else if(serverTab===\"server.py\"&&functionTab===\"validateEmail.js\")setServerTab(\"server.js\");},[functionTab]);useEffect(()=>{if(isStatic||hasAutoRun.current||!autoRunOnView||!inView)return;hasAutoRun.current=true;const timer=setTimeout(()=>{animate();},runDelay);return()=>clearTimeout(timer);// eslint-disable-next-line react-hooks/exhaustive-deps\n},[isStatic,autoRunOnView,inView,runDelay]);const serverLanguage=serverTab===\"server.py\"?\"py\":\"js\";const functionLanguage=functionTab===\"validate-email.py\"?\"py\":\"js\";return /*#__PURE__*/_jsxs(\"div\",{ref:ref,style:{position:\"relative\",width:\"100%\",height:\"100%\",display:\"flex\",flexDirection:\"column\",gap:38.4,justifyContent:\"flex-end\",padding:\"0 19.2px\",fontFamily:BASE_FONT,...style},children:[/*#__PURE__*/_jsxs(\"div\",{style:{maxWidth:\"100%\",borderBottomLeftRadius:16,borderBottomRightRadius:16,border:`1px solid ${COLORS.grey90}`,background:COLORS.grey100,boxShadow:\"0 12px 32px rgba(0,0,0,0.35)\",overflow:\"hidden\",maskImage:\"linear-gradient(180deg, rgba(0,0,0,0), #fff 15%)\",WebkitMaskImage:\"linear-gradient(180deg, rgba(0,0,0,0), #fff 15%)\"},children:[/*#__PURE__*/_jsxs(\"div\",{style:{borderBottom:\"1px solid rgba(255,255,255,0.1)\",padding:\"32px 9.6px 9.6px 9.6px\",display:\"flex\",alignItems:\"center\",gap:9.6,fontFamily:BASE_FONT},children:[/*#__PURE__*/_jsxs(\"div\",{style:{border:\"1px solid rgba(255,255,255,0.15)\",display:\"inline-flex\",alignItems:\"center\",fontSize:\"0.75rem\",color:COLORS.grey00,padding:\"2px 9.6px\",borderRadius:12.8},children:[/*#__PURE__*/_jsx(Shovel,{size:12,style:{marginRight:4}}),\"Playground\"]}),/*#__PURE__*/_jsxs(motion.button,{onClick:animate,animate:{boxShadow:[\"0 0 0 0 rgba(255,255,255,0.25)\",\"0 0 0 8px rgba(255,255,255,0)\",\"0 0 0 0 rgba(255,255,255,0)\"]},transition:{duration:2,times:[0,.7,1],repeat:Infinity,ease:\"easeOut\"},style:{border:\"none\",borderRadius:19.2,fontSize:\"0.75rem\",fontWeight:400,fontFamily:BASE_FONT,padding:\"2px 9.6px\",color:COLORS.grey00,background:\"rgba(255,255,255,0.15)\",display:\"inline-flex\",alignItems:\"center\",cursor:\"pointer\",transition:\"opacity 0.4s\"},children:[/*#__PURE__*/_jsx(Wand2,{size:12,style:{marginRight:4}}),\"Run\"]})]}),/*#__PURE__*/_jsx(CodeTabs,{tabs:[\"server.js\",\"server.py\"],value:serverTab,onChange:setServerTab}),/*#__PURE__*/_jsx(AnimatePresence,{mode:\"wait\",children:/*#__PURE__*/_jsx(motion.div,{initial:{opacity:0,y:-5},animate:{opacity:1,y:0},exit:{opacity:0,y:5},transition:{duration:.3},children:/*#__PURE__*/_jsx(CodeBlock,{code:serverLanguage===\"py\"?serverCodePython:serverCodeNode,language:serverLanguage,highlightLine:1,highlightState:functionCall})},serverTab)}),/*#__PURE__*/_jsx(\"div\",{style:{width:\"100%\",height:1,background:COLORS.grey90}}),/*#__PURE__*/_jsx(CodeTabs,{tabs:[\"Terminal\"]}),/*#__PURE__*/_jsxs(\"div\",{style:{padding:\"9.6px 19.2px\",height:96,position:\"relative\",overflow:\"hidden\"},children:[logs.map(({id,language},index)=>/*#__PURE__*/_jsxs(motion.div,{layout:true,initial:{opacity:0,y:-5},animate:{opacity:1,y:0},transition:{delay:index===0?.25:0,duration:.25},style:{display:\"flex\",alignItems:\"center\",justifyContent:\"space-between\"},children:[/*#__PURE__*/_jsx(\"p\",{style:{fontSize:\"0.75rem\",fontFamily:MONO_FONT,color:COLORS.grey30,margin:0},children:\"Valid Email\"}),/*#__PURE__*/_jsx(\"p\",{style:{fontSize:\"0.75rem\",fontFamily:MONO_FONT,color:COLORS.grey60,margin:0},children:language===\"server.js\"?\"server.js:2\":\"server.py:2\"})]},id)),/*#__PURE__*/_jsx(\"div\",{style:{position:\"absolute\",width:\"100%\",height:\"100%\",left:0,top:0,background:`linear-gradient(transparent, ${COLORS.grey100})`,pointerEvents:\"none\"}})]})]}),/*#__PURE__*/_jsxs(motion.div,{animate:functionAnim,style:{borderTopLeftRadius:16,borderTopRightRadius:16,position:\"relative\",overflow:\"hidden\",background:COLORS.grey100,boxShadow:\"inset 0 0.5px 0 rgba(255,255,255,0.5)\",border:`1px solid ${COLORS.grey90}`,borderBottom:\"none\"},children:[/*#__PURE__*/_jsx(\"div\",{style:{position:\"absolute\",left:0,top:16,width:1,height:\"calc(100% - 16px)\",background:\"linear-gradient(rgba(255,255,255,0.1), rgba(255,255,255,0))\",pointerEvents:\"none\"}}),/*#__PURE__*/_jsx(\"div\",{style:{position:\"absolute\",right:0,top:16,width:1,height:\"calc(100% - 16px)\",background:\"linear-gradient(rgba(255,255,255,0.1), rgba(255,255,255,0))\",pointerEvents:\"none\"}}),/*#__PURE__*/_jsx(CodeTabs,{tabs:[\"validateEmail.js\",\"validate-email.py\"],value:functionTab,onChange:setFunctionTab}),/*#__PURE__*/_jsx(AnimatePresence,{mode:\"wait\",children:/*#__PURE__*/_jsx(motion.div,{initial:{opacity:0,y:-5},animate:{opacity:1,y:0},exit:{opacity:0,y:5},transition:{duration:.3},children:/*#__PURE__*/_jsx(CodeBlock,{code:functionLanguage===\"py\"?functionCodePython:functionCodeNode,language:functionLanguage})},functionTab)})]})]});}addPropertyControls(FunctionsAnimation,{autoRunOnView:{type:ControlType.Boolean,title:\"Auto Run\",defaultValue:false,description:\"Automatically trigger the Run sequence once when scrolled into view.\"},runDelay:{type:ControlType.Number,title:\"Run Delay\",defaultValue:600,min:0,max:5e3,step:100,unit:\"ms\",hidden(props){return!props.autoRunOnView;}}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"FunctionsAnimation\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\",\"framerSupportedLayoutHeight\":\"any-prefer-fixed\",\"framerIntrinsicWidth\":\"460\",\"framerSupportedLayoutWidth\":\"any-prefer-fixed\",\"framerIntrinsicHeight\":\"560\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./FunctionsAnimation.map"],"mappings":"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"}