{"version":3,"file":"SVGDraw.BzH_E_c2.mjs","names":["useRef","useMemo","useState"],"sources":["https:/framerusercontent.com/modules/exaFAcAz3VTO0KJKJBxA/l9kjac53FBmzyZySwoY0/SVGDraw.js"],"sourcesContent":["import{jsx as _jsx}from\"react/jsx-runtime\";import{addPropertyControls,ControlType,useIsStaticRenderer}from\"framer\";import{useEffect,useMemo,useRef,useState}from\"react\";const EASES={\"power1.out\":\"cubic-bezier(0.25, 0.46, 0.45, 0.94)\",\"power2.out\":\"cubic-bezier(0.22, 0.61, 0.36, 1)\",\"power3.out\":\"cubic-bezier(0.16, 1, 0.3, 1)\",\"expo.out\":\"cubic-bezier(0.19, 1, 0.22, 1)\",linear:\"linear\"};const WIPE_CLOSED={right:\"inset(0% 100% 0% 0%)\",left:\"inset(0% 0% 0% 100%)\",down:\"inset(0% 0% 100% 0%)\",up:\"inset(100% 0% 0% 0%)\"};const DEFAULT_SVG=`<svg viewBox=\"0 0 200 100\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M10 80 C 60 10, 140 10, 190 80\" stroke=\"currentColor\" stroke-width=\"3\"/></svg>`;// Paste-in markup is the designer's own, but it still should not be able to\n// carry script or load anything remote\nfunction clean(markup){return(markup||\"\").replace(/<script[\\s\\S]*?<\\/script>/gi,\"\").replace(/\\son\\w+\\s*=\\s*\"[^\"]*\"/gi,\"\").replace(/\\son\\w+\\s*=\\s*'[^']*'/gi,\"\").replace(/javascript:/gi,\"\");}/**\n * SVG DRAW\n *\n * Paste SVG straight out of Figma and it draws itself into view — each path\n * traced with stroke-dashoffset, or the whole thing wiped in from one side.\n *\n * Shapes exported as fills rather than strokes have no line to trace, so\n * \"Fill After\" hands the fill back once the outline is drawn.\n *\n * @framerIntrinsicWidth 300\n * @framerIntrinsicHeight 200\n *\n * @framerSupportedLayoutWidth any-prefer-fixed\n * @framerSupportedLayoutHeight any-prefer-fixed\n */export default function SVGDraw(props){const{svg,mode,fillAfter,strokeColor,useOwnColor,strokeWidth,reverse,animateColor,colorFrom,duration,stagger,delay,easing,startAt,order,wipeFrom,replay,style}=props;const ref=useRef(null);const isStatic=useIsStaticRenderer();const markup=useMemo(()=>clean(svg)||DEFAULT_SVG,[svg]);const route=useRouteKey(isStatic);const ease=EASES[easing]||EASES[\"power1.out\"];const ms=Math.max(.01,duration)*1e3;const delayMs=Math.max(0,delay)*1e3;const staggerMs=Math.max(0,stagger)*1e3;useEffect(()=>{if(isStatic||typeof window===\"undefined\")return;const root=ref.current;if(!root)return;const node=root.querySelector(\"svg\");if(!node)return;// Let the pasted markup fill whatever box Framer gives the component\nnode.setAttribute(\"width\",\"100%\");node.setAttribute(\"height\",\"100%\");node.style.display=\"block\";node.style.overflow=\"visible\";const reduced=window.matchMedia(\"(prefers-reduced-motion: reduce)\").matches;if(reduced)return;let cleanupFns=[];if(mode===\"wipe\"){root.style.transition=\"none\";root.style.clipPath=WIPE_CLOSED[wipeFrom];void root.offsetWidth;const run=()=>{root.style.willChange=\"clip-path\";root.style.transition=`clip-path ${ms}ms ${ease} ${delayMs}ms`;root.style.clipPath=\"inset(0% 0% 0% 0%)\";};const reset=()=>{root.style.transition=`clip-path ${ms}ms ${ease}`;root.style.clipPath=WIPE_CLOSED[wipeFrom];};cleanupFns.push(watch(root,startAt,replay,run,reset));cleanupFns.push(()=>{root.style.clipPath=\"\";root.style.willChange=\"\";});}else{const shapes=Array.from(node.querySelectorAll(\"path, line, polyline, polygon, circle, ellipse, rect\")).map(el=>{let len=0;try{len=typeof el.getTotalLength===\"function\"?el.getTotalLength():0;}catch{len=0;}return{el,len};}).filter(s=>s.len>0);// Nothing measurable means nothing to draw; leave the art alone\nif(shapes.length===0)return;if(order===\"longest\")shapes.sort((a,b)=>b.len-a.len);else if(order===\"reverse\")shapes.reverse();const fills=shapes.map(({el})=>getComputedStyle(el).fill);const strokes=shapes.map(({el})=>getComputedStyle(el).stroke);// fill-opacity and stroke-opacity are separate attributes from the\n// colour itself. Tracing a 42%-opacity shape with a 100%-opacity\n// line gives the same hue at more than twice the strength, which on\n// a dark background reads as white.\nconst alphas=shapes.map(({el})=>{const cs=getComputedStyle(el);const hasStroke=cs.stroke&&cs.stroke!==\"none\";const a=hasStroke?cs.strokeOpacity:cs.fillOpacity;return a===\"\"||a==null?\"1\":a;});// What the markup literally declares, ignoring currentColor — that\n// one resolves to whatever text colour surrounds the component,\n// which is how a trace ends up mysteriously white\nconst declared=(el,name)=>{const v=el.getAttribute(name);if(!v||v===\"none\"||v===\"currentColor\")return\"\";return v;};const inherits=el=>el.getAttribute(\"stroke\")===\"currentColor\"||el.getAttribute(\"fill\")===\"currentColor\";// The colour each line ends on. A shape that states its own colour\n// keeps it; one that only inherits falls back to the Stroke\n// control, so the result is never a surprise.\nconst targets=shapes.map(({el},i)=>{if(!useOwnColor)return strokeColor;const own=declared(el,\"stroke\")||declared(el,\"fill\");if(own)return own;if(inherits(el))return strokeColor;const s=strokes[i]&&strokes[i]!==\"none\"?strokes[i]:\"\";const f=fills[i]&&fills[i]!==\"none\"?fills[i]:\"\";return s||f||strokeColor;});// Where the fill lands once the trace is done. Overriding the\n// stroke colour but restoring the original fill would put the\n// artwork right back to the colour you were overriding.\nconst blank=v=>!v||v===\"none\"||v===\"rgba(0, 0, 0, 0)\";const fillTargets=shapes.map(({el},i)=>// Art that was never filled stays unfilled\n    blank(fills[i])?\"none\":useOwnColor?fills[i]:strokeColor);const prime=()=>{shapes.forEach(({el,len},i)=>{el.style.transition=\"none\";if(fillAfter)el.style.fill=\"transparent\";// Colour animation starts somewhere else and arrives at the\n// target as the line completes\nel.style.stroke=animateColor?colorFrom:targets[i];// Trace at the artwork's own strength, not full force\nel.style.strokeOpacity=alphas[i];el.style.strokeWidth=String(strokeWidth);el.style.strokeLinecap=\"round\";el.style.strokeLinejoin=\"round\";el.style.strokeDasharray=`${len}`;// A negative offset grows the line from the other end, so\n// the same path can draw either way round\nel.style.strokeDashoffset=`${reverse?-len:len}`;});void root.offsetWidth;};const timers=[];const run=()=>{shapes.forEach(({el},i)=>{const offset=delayMs+i*staggerMs;el.style.willChange=\"stroke-dashoffset\";el.style.transition=`stroke-dashoffset ${ms}ms ${ease} ${offset}ms`+(animateColor?`, stroke ${ms}ms ${ease} ${offset}ms`:\"\");el.style.strokeDashoffset=\"0\";if(animateColor)el.style.stroke=targets[i];if(!fillAfter)return;// The fill returns as the tracing stroke fades, so the shape\n// settles at exactly its designed weight\ntimers.push(window.setTimeout(()=>{el.style.transition=`fill 400ms ease, stroke 400ms ease`;el.style.fill=fillTargets[i];el.style.stroke=\"transparent\";el.style.willChange=\"\";},ms+offset));});};prime();cleanupFns.push(watch(root,startAt,replay,run,()=>{timers.forEach(t=>window.clearTimeout(t));prime();}));cleanupFns.push(()=>{timers.forEach(t=>window.clearTimeout(t));shapes.forEach(({el},i)=>{el.style.transition=\"\";el.style.fill=fills[i];el.style.stroke=\"\";el.style.strokeOpacity=\"\";el.style.strokeDasharray=\"\";el.style.strokeDashoffset=\"\";el.style.willChange=\"\";});});}return()=>cleanupFns.forEach(fn=>fn());},[isStatic,markup,mode,fillAfter,strokeColor,useOwnColor,strokeWidth,reverse,animateColor,colorFrom,ms,staggerMs,delayMs,ease,startAt,order,wipeFrom,replay,route]);return /*#__PURE__*/_jsx(\"div\",{ref:ref,style:{...style,position:\"relative\",// Any currentColor in the pasted markup resolves to this rather\n// than to whatever text colour happens to surround the component\ncolor:strokeColor},dangerouslySetInnerHTML:{__html:markup}});}// Changes whenever the site navigates to another page. Art inside a layout\n// template (like the footer) stays mounted across pages, so this re-arms the\n// draw for each page instead of playing it only on the first one.\nfunction useRouteKey(isStatic){const[path,setPath]=useState(()=>typeof window===\"undefined\"?\"\":window.location.pathname);useEffect(()=>{if(isStatic)return;let frame=0;const check=()=>{if(window.location.pathname!==path)setPath(window.location.pathname);frame=requestAnimationFrame(check);};// Framer's router uses pushState, which fires no event, so poll the\n// path once per frame (a string compare, effectively free)\nframe=requestAnimationFrame(check);return()=>cancelAnimationFrame(frame);},[isStatic,path]);return path;}// Fires on the way in, and on the way out too when replay is on. A watchdog\n// opens the art anyway if the observer never reports it.\nfunction watch(el,startAt,replay,onEnter,onLeave){let entered=false;const io=new IntersectionObserver(entries=>{for(const entry of entries){if(entry.isIntersecting){entered=true;onEnter();if(!replay)io.disconnect();}else if(replay&&entered){onLeave();}}},{threshold:0,rootMargin:`0px 0px -${Math.round((1-startAt)*100)}% 0px`});io.observe(el);const watchdog=window.setTimeout(()=>{if(entered)return;const r=el.getBoundingClientRect();if(r.bottom>0&&r.top<window.innerHeight)onEnter();},4e3);return()=>{io.disconnect();window.clearTimeout(watchdog);};}SVGDraw.displayName=\"SVG Draw\";addPropertyControls(SVGDraw,{svg:{type:ControlType.String,title:\"SVG\",displayTextArea:true,defaultValue:DEFAULT_SVG,description:\"Paste the SVG markup copied from Figma.\"},mode:{type:ControlType.Enum,title:\"Mode\",options:[\"draw\",\"wipe\"],optionTitles:[\"Draw\",\"Wipe\"],displaySegmentedControl:true,defaultValue:\"draw\"},fillAfter:{type:ControlType.Boolean,title:\"Fill After\",defaultValue:true,description:\"For filled art: trace the outline, then bring fill back.\",hidden:props=>props.mode!==\"draw\"},useOwnColor:{type:ControlType.Boolean,title:\"Own Colors\",defaultValue:false,description:\"Keep the colours the SVG declares. Off means Stroke wins, which is what you want for single-colour art.\",hidden:props=>props.mode!==\"draw\"},strokeColor:{type:ControlType.Color,title:\"Stroke\",defaultValue:\"#F1E6D8\",description:\"Also used for any currentColor in the SVG, and for shapes that declare no colour.\",hidden:props=>props.mode!==\"draw\"},strokeWidth:{type:ControlType.Number,title:\"Width\",defaultValue:2,min:.1,max:40,step:.1,hidden:props=>props.mode!==\"draw\"},reverse:{type:ControlType.Boolean,title:\"Direction\",enabledTitle:\"Reverse\",disabledTitle:\"Normal\",defaultValue:false,description:\"Flips which end each line grows from — top-down or bottom-up.\",hidden:props=>props.mode!==\"draw\"},animateColor:{type:ControlType.Boolean,title:\"Animate Color\",defaultValue:false,description:\"Fade from a starting colour as the line draws.\",hidden:props=>props.mode!==\"draw\"},colorFrom:{type:ControlType.Color,title:\"Color From\",defaultValue:\"rgba(241, 230, 216, 0.24)\",hidden:props=>props.mode!==\"draw\"||!Boolean(props.animateColor)},order:{type:ControlType.Enum,title:\"Order\",options:[\"longest\",\"source\",\"reverse\"],optionTitles:[\"Longest First\",\"As Drawn\",\"Reverse\"],defaultValue:\"longest\",hidden:props=>props.mode!==\"draw\"},wipeFrom:{type:ControlType.Enum,title:\"From\",options:[\"right\",\"left\",\"down\",\"up\"],optionTitles:[\"Left Edge\",\"Right Edge\",\"Top Edge\",\"Bottom Edge\"],defaultValue:\"right\",hidden:props=>props.mode!==\"wipe\"},duration:{type:ControlType.Number,title:\"Duration\",defaultValue:1.6,min:.1,max:8,step:.1,unit:\"s\"},stagger:{type:ControlType.Number,title:\"Stagger\",defaultValue:.18,min:0,max:2,step:.01,unit:\"s\",hidden:props=>props.mode!==\"draw\"},delay:{type:ControlType.Number,title:\"Delay\",defaultValue:0,min:0,max:3,step:.05,unit:\"s\"},easing:{type:ControlType.Enum,title:\"Easing\",options:[\"power1.out\",\"power2.out\",\"power3.out\",\"expo.out\",\"linear\"],optionTitles:[\"Soft\",\"Medium\",\"Snappy\",\"Dramatic\",\"Linear\"],defaultValue:\"power1.out\"},startAt:{type:ControlType.Number,title:\"Start At\",defaultValue:.85,min:0,max:1,step:.05},replay:{type:ControlType.Boolean,title:\"Replay\",defaultValue:false,description:\"Redraw each time it comes back into view.\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"SVGDraw\",\"slots\":[],\"annotations\":{\"framerSupportedLayoutHeight\":\"any-prefer-fixed\",\"framerIntrinsicWidth\":\"300\",\"framerIntrinsicHeight\":\"200\",\"framerContractVersion\":\"1\",\"framerSupportedLayoutWidth\":\"any-prefer-fixed\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./SVGDraw.map"],"mappings":"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"}