{"version":3,"file":"Embed.BU7GD0OS.mjs","names":["React.useMemo","React.useState","React.useRef","React.useCallback","p","useState","useRef"],"sources":["https:/framerusercontent.com/modules/fiKhsLPdrfWQKc4eQPoL/zQQ6Rh7yVYyuhKxBRwZJ/ProTextType.js","https:/framerusercontent.com/modules/o1PI5S8YtkA5bP5g4dFz/cAPMVEI6osbJ1UvICgTq/Embed.js"],"sourcesContent":["import{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{addPropertyControls,ControlType}from\"framer\";import*as React from\"react\";import{motion}from\"framer-motion\";/**\n * @framerSupportedLayoutWidth any-prefer-fixed\n * @framerSupportedLayoutHeight any-prefer-fixed\n * @framerIntrinsicWidth 600\n * @framerIntrinsicHeight 120\n */export default function ProTextTypeEffect(props){const{text,as:asTag,typingSpeed,initialDelay,pauseDuration,deletingSpeed,loop,className,showCursor,hideCursorWhileTyping,cursorMode,cursorCharacterPreset,customCursorCharacter,cursorClassName,cursorBlinkDuration,textColors,cursorColorMode,cursorCustomColor,variableSpeed,startOnVisible,reverseMode,sizingMode,minFont,maxFont,fluidVw,style,...rest}=props;// Accept single string or array\nconst textArray=React.useMemo(()=>Array.isArray(text)?text:[text??\"\"],[text]);// Cursor character resolution\nconst cursorChar=cursorMode===\"custom\"?customCursorCharacter?.length?customCursorCharacter:\"|\":cursorCharacterPreset;const[displayedText,setDisplayedText]=React.useState(\"\");const[currentCharIndex,setCurrentCharIndex]=React.useState(0);const[isDeleting,setIsDeleting]=React.useState(false);const[currentTextIndex,setCurrentTextIndex]=React.useState(0);const[isVisible,setIsVisible]=React.useState(!startOnVisible);// Colors\nconst firstColor=textColors&&textColors[0]||\"#000000\";const resolvedCursorColor=cursorColorMode===\"custom\"&&cursorCustomColor?cursorCustomColor:firstColor;const containerRef=React.useRef(null);const As=asTag||\"div\";// Variable typing speed\nconst getRandomSpeed=React.useCallback(()=>{if(!variableSpeed)return typingSpeed;const{min,max}=variableSpeed;const lo=Math.max(0,Number(min)||0);const hi=Math.max(lo,Number(max)||lo);return Math.random()*(hi-lo)+lo;},[variableSpeed,typingSpeed]);const getCurrentTextColor=React.useCallback(()=>{if(!textColors||textColors.length===0)return\"#000000\";return textColors[currentTextIndex%textColors.length];},[textColors,currentTextIndex]);// Start on visible\nReact.useEffect(()=>{if(!startOnVisible||!containerRef.current)return;const el=containerRef.current;const obs=new IntersectionObserver(entries=>{entries.forEach(entry=>{if(entry.isIntersecting)setIsVisible(true);});},{threshold:.1});obs.observe(el);return()=>obs.disconnect();},[startOnVisible]);// Typing loop\nReact.useEffect(()=>{if(!isVisible)return;let timeout;const currentText=textArray[currentTextIndex]??\"\";const processed=reverseMode?currentText.split(\"\").reverse().join(\"\"):currentText;const run=()=>{if(isDeleting){if(displayedText.length===0){setIsDeleting(false);if(currentTextIndex===textArray.length-1&&!loop)return;setCurrentTextIndex(i=>(i+1)%textArray.length);setCurrentCharIndex(0);timeout=setTimeout(()=>{},pauseDuration);}else{timeout=setTimeout(()=>{setDisplayedText(prev=>prev.slice(0,-1));},deletingSpeed);}}else{if(currentCharIndex<processed.length){timeout=setTimeout(()=>{setDisplayedText(prev=>prev+processed[currentCharIndex]);setCurrentCharIndex(i=>i+1);},variableSpeed?getRandomSpeed():typingSpeed);}else{if(textArray.length>1&&(loop||currentTextIndex<textArray.length-1)){timeout=setTimeout(()=>setIsDeleting(true),pauseDuration);}else{// stop on last sentence; keep cursor blinking\n}}}};if(currentCharIndex===0&&!isDeleting&&displayedText===\"\"){timeout=setTimeout(run,initialDelay);}else{run();}return()=>timeout&&clearTimeout(timeout);},[isVisible,textArray,currentTextIndex,loop,currentCharIndex,displayedText,isDeleting,typingSpeed,deletingSpeed,pauseDuration,initialDelay,reverseMode,variableSpeed,getRandomSpeed]);// Fluid font style via CSS clamp\nconst fluidStyle=sizingMode===\"fluid\"?{fontSize:`clamp(${minFont}px, ${fluidVw}vw, ${maxFont}px)`}:{};// Base container style\nconst{clipOverflow=false}=props;const baseStyle={display:\"block\",width:\"100%\",height:\"100%\",whiteSpace:\"pre-wrap\",overflow:clipOverflow?\"hidden\":\"visible\",textAlign:props.textAlign,...style};const shouldHideCursor=hideCursorWhileTyping&&(currentCharIndex<(textArray[currentTextIndex]??\"\").length||isDeleting);return /*#__PURE__*/_jsxs(As,{ref:containerRef,className:`text-type ${className||\"\"}`,style:baseStyle,...rest,children:[/*#__PURE__*/_jsx(\"span\",{className:\"text-type__content\",style:{all:\"unset\",display:\"inline\",color:getCurrentTextColor(),...props.font,...fluidStyle},children:displayedText}),showCursor&&!shouldHideCursor&&/*#__PURE__*/_jsx(motion.span,{className:`text-type__cursor ${cursorClassName||\"\"}`,style:{marginLeft:\"0.25rem\",display:\"inline-block\",color:resolvedCursorColor,...props.font,...fluidStyle},animate:{opacity:[1,0]},transition:{duration:cursorBlinkDuration,repeat:Infinity,repeatType:\"reverse\",ease:\"easeInOut\"},children:cursorChar})]});}ProTextTypeEffect.displayName=\"Pro Text Type Effect\";addPropertyControls(ProTextTypeEffect,{text:{type:ControlType.Array,title:\"Text\",defaultValue:[\"Hello, Framer folks!\",\"This is the ultimate typing text component\",\"Checkout what all you can do from the panel on the right →\"],control:{type:ControlType.String,displayTextArea:true,defaultValue:\"\"}},font:{type:\"font\",controls:\"extended\",defaultFontType:\"sans-serif\",defaultValue:{fontSize:16,lineHeight:1.2}},sizingMode:{type:ControlType.Enum,title:\"Sizing\",options:[\"fixed\",\"fluid\"],optionTitles:[\"Fixed\",\"Fluid (clamp)\"],defaultValue:\"fluid\",description:\"Choose how the text scales\"},minFont:{type:ControlType.Number,title:\"Min px\",defaultValue:18,min:8,max:200,hidden:p=>p.sizingMode!==\"fluid\",description:\"Smallest allowed font size\"},maxFont:{type:ControlType.Number,title:\"Max px\",defaultValue:64,min:8,max:200,hidden:p=>p.sizingMode!==\"fluid\",description:\"Largest allowed font size\"},fluidVw:{type:ControlType.Number,title:\"Scale (vw)\",defaultValue:6,min:.1,max:20,step:.1,hidden:p=>p.sizingMode!==\"fluid\",description:\"How quickly the font grows as the screen width increases\"},textColors:{type:ControlType.Array,title:\"Text Colors\",control:{type:ControlType.Color,defaultValue:\"#000000\"},defaultValue:[\"#000000\"],description:\"Cycles through colors per sentence\"},textAlign:{type:ControlType.Enum,title:\"Text Align\",options:[\"left\",\"center\",\"right\",\"justify\"],optionTitles:[\"Left\",\"Center\",\"Right\",\"Justify\"],defaultValue:\"left\"},as:{type:ControlType.Enum,title:\"Tag\",options:[\"div\",\"p\",\"span\",\"h1\",\"h2\",\"h3\",\"h4\",\"h5\",\"h6\"],optionTitles:[\"div\",\"p\",\"span\",\"H1\",\"H2\",\"H3\",\"H4\",\"H5\",\"H6\"],defaultValue:\"p\"},typingSpeed:{type:ControlType.Number,title:\"Type (ms)\",min:1,max:500,step:1,defaultValue:50,description:\"Time between charachters\"},deletingSpeed:{type:ControlType.Number,title:\"Delete (ms)\",min:1,max:500,step:1,defaultValue:30,description:\"Time between deletions\"},initialDelay:{type:ControlType.Number,title:\"Delay (ms)\",min:0,max:5e3,step:10,defaultValue:0,description:\"Waiting time before starting\"},pauseDuration:{type:ControlType.Number,title:\"Pause (ms)\",min:0,max:1e4,step:50,defaultValue:2e3,description:\"Waiting time before deleting/next\"},loop:{type:ControlType.Boolean,title:\"Loop\",defaultValue:true},reverseMode:{type:ControlType.Boolean,title:\"Reverse text\",defaultValue:false},startOnVisible:{type:ControlType.Boolean,title:\"Start on visible\",defaultValue:false,description:\"Begin typing only when in view\"},showCursor:{type:ControlType.Boolean,title:\"Show cursor\",defaultValue:true},cursorMode:{type:ControlType.Enum,title:\"Cursor\",options:[\"preset\",\"custom\"],optionTitles:[\"Preset\",\"Custom\"],defaultValue:\"preset\",hidden:p=>!p.showCursor},cursorCharacterPreset:{type:ControlType.Enum,title:\"Preset\",options:[\"|\",\"_\",\"‖\",\"❚\",\"▋\",\"▌\",\"█\"],optionTitles:[\"Pipe |\",\"Underscore _\",\"Double Bar ‖\",\"Block ❚\",\"Left Half ▋\",\"Right Half ▌\",\"Full Block █\"],defaultValue:\"|\",hidden:p=>!p.showCursor||p.cursorMode!==\"preset\"},customCursorCharacter:{type:ControlType.String,title:\"Custom char\",placeholder:\"Any character(s)\",defaultValue:\"|\",hidden:p=>!p.showCursor||p.cursorMode!==\"custom\"},cursorColorMode:{type:ControlType.Enum,title:\"Cursor color\",options:[\"matchFirst\",\"custom\"],optionTitles:[\"Match first color\",\"Custom\"],defaultValue:\"matchFirst\",hidden:p=>!p.showCursor},cursorCustomColor:{type:ControlType.Color,title:\"Custom color\",optional:true,hidden:p=>!p.showCursor||p.cursorColorMode!==\"custom\"},cursorBlinkDuration:{type:ControlType.Number,title:\"Blink (s)\",min:.05,max:2,step:.05,defaultValue:.5,hidden:p=>!p.showCursor},hideCursorWhileTyping:{type:ControlType.Boolean,title:\"Hide while typing\",defaultValue:false,hidden:p=>!p.showCursor},variableSpeed:{type:ControlType.Object,title:\"Variable speed\",optional:true,controls:{min:{type:ControlType.Number,title:\"Min (ms)\",min:1,max:500,step:1,defaultValue:30},max:{type:ControlType.Number,title:\"Max (ms)\",min:1,max:500,step:1,defaultValue:80}},description:\"Random delay between characters\\n\\nComponent crafted by [Vaibhav](https://contra.com/vaibhav_khulbe)\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"ProTextTypeEffect\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\",\"framerSupportedLayoutHeight\":\"any-prefer-fixed\",\"framerSupportedLayoutWidth\":\"any-prefer-fixed\",\"framerIntrinsicHeight\":\"120\",\"framerIntrinsicWidth\":\"600\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./ProTextType.map","import{jsx as _jsx}from\"react/jsx-runtime\";import{useEffect,useRef,useState}from\"react\";import{addPropertyControls,ControlType}from\"framer\";import{useIsOnCanvas,emptyStateStyle,containerStyles}from\"https://framer.com/m/framer/default-utils.js\";/**\n * @framerIntrinsicWidth 600\n * @framerIntrinsicHeight 400\n *\n * @framerSupportedLayoutWidth fixed\n * @framerSupportedLayoutHeight any-prefer-fixed\n *\n * @framerDisableUnlink\n */export default function Embed({type,url,html,zoom,radius,border,style={}}){if(type===\"url\"&&url){return /*#__PURE__*/_jsx(EmbedUrl,{url:url,zoom:zoom,radius:radius,border:border,style:style});}if(type===\"html\"&&html){return /*#__PURE__*/_jsx(EmbedHtml,{html:html,style:style});}return /*#__PURE__*/_jsx(Instructions,{style:style});}addPropertyControls(Embed,{type:{type:ControlType.Enum,defaultValue:\"url\",displaySegmentedControl:true,options:[\"url\",\"html\"],optionTitles:[\"URL\",\"HTML\"]},url:{title:\"URL\",type:ControlType.String,description:\"Some websites don’t support embedding.\",hidden(props){return props.type!==\"url\";}},html:{title:\"HTML\",type:ControlType.String,displayTextArea:true,hidden(props){return props.type!==\"html\";}},border:{title:\"Border\",type:ControlType.Border,optional:true,hidden(props){return props.type!==\"url\";}},radius:{type:ControlType.BorderRadius,title:\"Radius\",hidden(props){return props.type!==\"url\";}},zoom:{title:\"Zoom\",defaultValue:1,type:ControlType.Number,hidden(props){return props.type!==\"url\";},min:.1,max:1,step:.1,displayStepper:true}});function Instructions({style}){return /*#__PURE__*/_jsx(\"div\",{style:{minHeight:getMinHeight(style),...emptyStateStyle,overflow:\"hidden\",...style},children:/*#__PURE__*/_jsx(\"div\",{style:centerTextStyle,children:\"To embed a website or widget, add it to the properties\\xa0panel.\"})});}function EmbedUrl({url,zoom,radius,border,style}){const hasAutoHeight=!style.height;// Add https:// if the URL does not have a protocol.\nif(!/[a-z]+:\\/\\//.test(url)){url=\"https://\"+url;}const onCanvas=useIsOnCanvas();// We need to check if the url is blocked inside an iframe by the X-Frame-Options\n// or Content-Security-Policy headers on the backend.\nconst[state,setState]=useState(onCanvas?undefined:false);useEffect(()=>{// We only want to check on the canvas.\n// On the website we want to avoid the additional delay.\nif(!onCanvas)return;// TODO: We could also use AbortController here.\nlet isLastEffect=true;setState(undefined);async function load(){const response=await fetch(\"https://api.framer.com/functions/check-iframe-url?url=\"+encodeURIComponent(url));if(response.status==200){const{isBlocked}=await response.json();if(isLastEffect){setState(isBlocked);}}else{const message=await response.text();console.error(message);const error=new Error(\"This site can’t be reached.\");setState(error);}}load().catch(error=>{console.error(error);setState(error);});return()=>{isLastEffect=false;};},[url]);if(onCanvas&&hasAutoHeight){return /*#__PURE__*/_jsx(ErrorMessage,{message:\"URL embeds do not support auto height.\",style:style});}if(!url.startsWith(\"https://\")){return /*#__PURE__*/_jsx(ErrorMessage,{message:\"Unsupported protocol.\",style:style});}if(state===undefined){return /*#__PURE__*/_jsx(LoadingIndicator,{});}if(state instanceof Error){return /*#__PURE__*/_jsx(ErrorMessage,{message:state.message,style:style});}if(state===true){const message=`Can’t embed ${url} due to its content security policy.`;return /*#__PURE__*/_jsx(ErrorMessage,{message:message,style:style});}return /*#__PURE__*/_jsx(\"iframe\",{src:url,style:{...iframeStyle,...style,...border,zoom:zoom,borderRadius:radius,transformOrigin:\"top center\"},loading:\"lazy\",// @ts-ignore\nfetchPriority:onCanvas?\"low\":\"auto\",referrerPolicy:\"no-referrer\",sandbox:getSandbox(onCanvas),allowFullScreen:true,allow:\"presentation; fullscreen; accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture; clipboard-write\"});}const iframeStyle={width:\"100%\",height:\"100%\",border:\"none\"};function getSandbox(onCanvas){const result=[\"allow-same-origin\",\"allow-scripts\"];if(!onCanvas){result.push(\"allow-downloads\",\"allow-forms\",\"allow-modals\",\"allow-orientation-lock\",\"allow-pointer-lock\",\"allow-popups\",\"allow-popups-to-escape-sandbox\",\"allow-presentation\",\"allow-storage-access-by-user-activation\",\"allow-top-navigation-by-user-activation\");}return result.join(\" \");}function EmbedHtml({html,...props}){const hasScript=html.includes(\"</script>\");if(hasScript){const hasSplineViewer=html.includes(\"</spline-viewer>\");const hasComment=html.includes(\"<!-- framer-direct-embed -->\");if(hasSplineViewer||hasComment){return /*#__PURE__*/_jsx(EmbedHtmlWithScripts,{html:html,...props});}return /*#__PURE__*/_jsx(EmbedHtmlInsideIframe,{html:html,...props});}return /*#__PURE__*/_jsx(EmbedHtmlWithoutScripts,{html:html,...props});}function EmbedHtmlInsideIframe({html,style}){const ref=useRef();const[iframeHeight,setIframeHeight]=useState(0);// Handle auto sizing\nuseEffect(()=>{const iframeWindow=ref.current?.contentWindow;function handleMessage(event){if(event.source!==iframeWindow)return;const data=event.data;if(typeof data!==\"object\"||data===null)return;const height=data.embedHeight;if(typeof height!==\"number\")return;setIframeHeight(height);}window.addEventListener(\"message\",handleMessage);// After SSG the iframe loads before we attach the event handler,\n// therefore we need to request the latest height from the iframe.\niframeWindow?.postMessage(\"getEmbedHeight\",\"*\");return()=>{window.removeEventListener(\"message\",handleMessage);};},[]);// The CSS is mainly copied from:\n// FramerStudio/src/app/vekter/src/renderer/setDefaultFont.ts\n// FramerStudio/src/app/vekter/src/export/globalStylesForExport.ts\nconst srcDoc=`\n<html>\n    <head>\n        <style>\n            html, body {\n                margin: 0;\n                padding: 0;\n            }\n\n            body {\n                display: flex;\n                justify-content: center;\n                align-items: center;\n            }\n\n            :root {\n                -webkit-font-smoothing: antialiased;\n                -moz-osx-font-smoothing: grayscale;\n            }\n\n            * {\n                box-sizing: border-box;\n                -webkit-font-smoothing: inherit;\n            }\n\n            h1, h2, h3, h4, h5, h6, p, figure {\n                margin: 0;\n            }\n\n            body, input, textarea, select, button {\n                font-size: 12px;\n                font-family: sans-serif;\n            }\n        </style>\n    </head>\n    <body>\n        ${html}\n        <script type=\"module\">\n            let height = 0\n\n            function sendEmbedHeight() {\n                window.parent.postMessage({\n                    embedHeight: height\n                }, \"*\")\n            }\n\n            const observer = new ResizeObserver((entries) => {\n                if (entries.length !== 1) return\n                const entry = entries[0]\n                if (entry.target !== document.body) return\n\n                height = entry.contentRect.height\n                sendEmbedHeight()\n            })\n\n            observer.observe(document.body)\n\n            window.addEventListener(\"message\", (event) => {\n                if (event.source !== window.parent) return\n                if (event.data !== \"getEmbedHeight\") return\n                sendEmbedHeight()\n            })\n        </script>\n    <body>\n</html>\n`;const currentStyle={...iframeStyle,...style};const hasAutoHeight=!style.height;if(hasAutoHeight){currentStyle.height=iframeHeight+\"px\";}return /*#__PURE__*/_jsx(\"iframe\",{ref:ref,style:currentStyle,srcDoc:srcDoc});}function EmbedHtmlWithScripts({html,style}){const ref=useRef();useEffect(()=>{const div=ref.current;if(!div)return;div.innerHTML=html;executeScripts(div);return()=>{div.innerHTML=\"\";};},[html]);return /*#__PURE__*/_jsx(\"div\",{ref:ref,style:{...htmlStyle,...style}});}function EmbedHtmlWithoutScripts({html,style}){return /*#__PURE__*/_jsx(\"div\",{style:{...htmlStyle,...style},dangerouslySetInnerHTML:{__html:html}});}const htmlStyle={width:\"100%\",height:\"100%\",display:\"flex\",flexDirection:\"column\",justifyContent:\"center\",alignItems:\"center\"};// This function replaces scripts with executable ones.\n// https://stackoverflow.com/questions/1197575/can-scripts-be-inserted-with-innerhtml\nfunction executeScripts(node){if(node instanceof Element&&node.tagName===\"SCRIPT\"){const script=document.createElement(\"script\");script.text=node.innerHTML;for(const{name,value}of node.attributes){script.setAttribute(name,value);}node.parentElement.replaceChild(script,node);}else{for(const child of node.childNodes){executeScripts(child);}}}// Generic components\nfunction LoadingIndicator(){return /*#__PURE__*/_jsx(\"div\",{className:\"framerInternalUI-componentPlaceholder\",style:{...containerStyles,overflow:\"hidden\"},children:/*#__PURE__*/_jsx(\"div\",{style:centerTextStyle,children:\"Loading…\"})});}function ErrorMessage({message,style}){return /*#__PURE__*/_jsx(\"div\",{className:\"framerInternalUI-errorPlaceholder\",style:{minHeight:getMinHeight(style),...containerStyles,overflow:\"hidden\",...style},children:/*#__PURE__*/_jsx(\"div\",{style:centerTextStyle,children:message})});}const centerTextStyle={textAlign:\"center\",minWidth:140};// Returns a min-height if the component is using auto-height.\nfunction getMinHeight(style){const hasAutoHeight=!style.height;if(hasAutoHeight)return 200;}\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"Embed\",\"slots\":[],\"annotations\":{\"framerSupportedLayoutHeight\":\"any-prefer-fixed\",\"framerIntrinsicWidth\":\"600\",\"framerDisableUnlink\":\"\",\"framerContractVersion\":\"1\",\"framerSupportedLayoutWidth\":\"fixed\",\"framerIntrinsicHeight\":\"400\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./Embed.map"],"mappings":"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"}