{"version":3,"file":"DashedBorder.CSKGLi71.mjs","names":["useMemo","useRef","useState","useCallback"],"sources":["https:/framerusercontent.com/modules/aeEe477xpzEFqqaZhiTE/ltgP15qtviN0Ho7MrfaG/RollingText.js","https:/framerusercontent.com/modules/XBWSgdKr3syOFOYW80i8/4FKsp3EPd3QDaqVONEJD/DashedBorder.js"],"sourcesContent":["import{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{addPropertyControls,ControlType}from\"framer\";import{motion}from\"framer-motion\";// --- Helper Functions ---\nconst uuidv4=()=>{return\"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\".replace(/[xy]/g,c=>{const r=Math.random()*16|0;const v=c===\"x\"?r:r&3|8;return v.toString(16);});};/**\n * RollingText with variable font support for optical and weight axes\n *\n * @framerIntrinsicWidth 200\n * @framerIntrinsicHeight 50\n * @framerDisableUnlink\n * @framerSupportedLayoutWidth fixed\n * @framerSupportedLayoutHeight fixed\n */export default function RollingText({text,transition,stagger,reverse,font,color,textTransform,tag,padding,variable,state}){const innerClassName=`rolling-text-inner-${uuidv4()}`;const Tag=tag;const fontSizeStr=font?.fontSize??\"16px\";const letterSpacingStr=font?.letterSpacing??\"0px\";const rawLineHeight=font?.lineHeight;const fontFamily=font?.fontFamily??\"Inter\";const fontSizeNum=parseInt(fontSizeStr,10)||16;let absoluteLineHeightPx;if(typeof rawLineHeight===\"number\"){absoluteLineHeightPx=fontSizeNum*rawLineHeight;}else if(typeof rawLineHeight===\"string\"&&rawLineHeight.includes(\"em\")){const emValue=parseFloat(rawLineHeight)||1.2;absoluteLineHeightPx=fontSizeNum*emValue;}else if(typeof rawLineHeight===\"string\"){const pxValue=parseFloat(rawLineHeight);absoluteLineHeightPx=isNaN(pxValue)?rawLineHeight:`${pxValue}px`;}else{absoluteLineHeightPx=fontSizeNum*1.2;}const absoluteLineHeightStr=typeof absoluteLineHeightPx===\"number\"?`${absoluteLineHeightPx}px`:absoluteLineHeightPx;const yOffset=`-${absoluteLineHeightStr}`;const variableFontStyles=variable?{fontVariationSettings:`'wght' ${variable.weight}, 'opsz' ${variable.optical}`}:{};const styles=`\n    .${innerClassName} {\n      --font-size: ${fontSizeStr};\n      --text: ${color};\n      --line-height-abs: ${absoluteLineHeightStr};\n      box-sizing: border-box; margin: 0; padding: 0; vertical-align: top;\n      display: flex; overflow: hidden; width: max-content;\n      font-family: ${fontFamily}; font-size: ${fontSizeStr};\n      text-transform: ${textTransform}; user-select: none;\n      text-shadow: 0 var(--line-height-abs) 0 var(--text);\n    }\n    .${innerClassName} span {\n      display: block; -webkit-backface-visibility: hidden; backface-visibility: hidden;\n      white-space: pre; flex-shrink: 0;\n      font-family: inherit; font-weight: inherit; font-style: inherit;\n      font-size: inherit; letter-spacing: inherit;\n      line-height: ${rawLineHeight??1.2};\n      color: var(--text);\n    }\n  `;const wrapperStyle={display:\"flex\",alignItems:\"center\",justifyContent:\"center\",width:\"100%\",height:\"100%\",overflow:\"hidden\",padding:padding,boxSizing:\"border-box\"};const spanVariants={initial:{y:\"0%\"},roll:{y:yOffset}};const baseDuration=typeof transition?.duration===\"number\"?transition.duration:.5;// Convert stagger percentage (0-100) to a factor (0-1)\nconst staggerFactor=stagger/100;// Animation state based on prop\nconst animateState=state===\"Roll\"?\"roll\":\"initial\";return /*#__PURE__*/_jsxs(\"div\",{style:wrapperStyle,children:[/*#__PURE__*/_jsx(Tag,{className:innerClassName,style:variableFontStyles,children:[...text].map((str,index)=>{const charIndex=reverse?text.length-1-index:index;// Apply staggerFactor to the delay calculation\nconst delay=text.length>0?baseDuration/text.length*charIndex*staggerFactor// Multiply by factor\n:0;const motionSpanStyle={display:\"block\",...font,...variableFontStyles};return /*#__PURE__*/_jsx(motion.span,{variants:spanVariants,initial:\"initial\",animate:animateState,transition:{...transition,delay:delay},style:motionSpanStyle,children:str===\" \"?\"\\xa0\":str},index);})}),/*#__PURE__*/_jsx(\"style\",{children:styles})]});}RollingText.displayName=\"Rolling Text\";const defaultFont={fontFamily:\"Inter\",fontWeight:\"400\",fontSize:\"16px\",fontStyle:\"normal\",letterSpacing:\"0px\",lineHeight:1.2};const defaultTransition={type:\"spring\",duration:.4,bounce:0};addPropertyControls(RollingText,{text:{type:ControlType.String,title:\"Text\",defaultValue:\"Rolling Text\"},font:{type:ControlType.Font,title:\"Font\",controls:\"extended\",defaultValue:defaultFont},variable:{type:ControlType.Object,title:\"Variable\",controls:{optical:{type:ControlType.Number,title:\"Optical\",min:14,max:32,step:1,defaultValue:16},weight:{type:ControlType.Number,title:\"Weight\",min:100,max:900,step:1,defaultValue:400}},defaultValue:{optical:16,weight:400}},color:{type:ControlType.Color,title:\"Color\",defaultValue:\"#808080\"},transition:{type:ControlType.Transition,title:\"Transition\",defaultValue:defaultTransition},stagger:{title:\"Stagger\",type:ControlType.Number,min:0,max:100,step:1,defaultValue:35,unit:\"%\"},padding:{title:\"Padding\",type:ControlType.Padding,defaultValue:\"0px\"},reverse:{type:ControlType.Boolean,title:\"Reverse\",defaultValue:false,enabledTitle:\"Yes\",disabledTitle:\"No\"},textTransform:{title:\"Transform\",type:ControlType.Enum,defaultValue:\"none\",options:[\"none\",\"uppercase\",\"lowercase\",\"capitalize\"],optionTitles:[\"None\",\"Uppercase\",\"Lowercase\",\"Capitalize\"]},tag:{type:ControlType.Enum,title:\"Tag\",options:[\"p\",\"span\",\"h1\",\"h2\",\"h3\",\"h4\",\"h5\",\"h6\"],optionTitles:[\"p\",\"span\",\"h1\",\"h2\",\"h3\",\"h4\",\"h5\",\"h6\"],defaultValue:\"p\"},state:{type:ControlType.Enum,title:\"State\",options:[\"Default\",\"Roll\"],optionTitles:[\"Default\",\"Roll\"],displaySegmentedControl:true,segmentedControlDirection:\"vertical\",defaultValue:\"Default\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"RollingText\",\"slots\":[],\"annotations\":{\"framerIntrinsicHeight\":\"50\",\"framerSupportedLayoutHeight\":\"fixed\",\"framerDisableUnlink\":\"* @framerSupportedLayoutWidth fixed\",\"framerIntrinsicWidth\":\"200\",\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./RollingText.map","import{jsx as _jsx}from\"react/jsx-runtime\";import{useEffect,useRef,useState,useMemo,useCallback}from\"react\";import{addPropertyControls,ControlType,RenderTarget}from\"framer\";/**\n * Animated Dashed Border Frame\n *\n * @framerDisableUnlink\n * @framerIntrinsicWidth 400\n * @framerIntrinsicHeight 250\n * @framerSupportedLayoutWidth any-prefer-fixed\n * @framerSupportedLayoutHeight any-prefer-fixed\n */export default function DashedBorderFrame(props){// --- Default props moved outside for stability ---\nconst defaultProps=useMemo(()=>({borderColor:\"#0099FF\",borderWidth:3,borderRadius:16,dashLength:12,gapLength:8,animation:{animated:true,speed:2,direction:\"clockwise\"},top:true,right:true,bottom:true,left:true}),[]);const{borderColor=defaultProps.borderColor,borderWidth=defaultProps.borderWidth,borderRadius=defaultProps.borderRadius,dashLength=defaultProps.dashLength,gapLength=defaultProps.gapLength,animation=defaultProps.animation,style={}}=props;const{animated,speed,direction}=animation;// --- Unique animation name per instance ---\nconst uniqueIdRef=useRef(Math.random().toString(36).substr(2,9));const animName=`dash-anim-${direction}-${uniqueIdRef.current}`;// --- Animation duration ---\nconst minDuration=.1;const animationDuration=`${Math.max(minDuration,2/Math.max(.01,speed))}s`;// --- Responsive sizing ---\nconst containerRef=useRef(null);const resizeObserverRef=useRef(null);const[size,setSize]=useState({width:400,height:250});// Function to get size (memoized)\nconst getCurrentSize=useCallback(()=>{let w=200,h=100;if(!containerRef.current)return{width:w,height:h};if(RenderTarget.current()===RenderTarget.canvas||RenderTarget.current()===RenderTarget.thumbnail){if(props.style&&typeof props.style.width===\"number\")w=props.style.width;else w=containerRef.current.offsetWidth;if(props.style&&typeof props.style.height===\"number\")h=props.style.height;else h=containerRef.current.offsetHeight;}else{const rect=containerRef.current.getBoundingClientRect();w=rect.width;h=rect.height;}return{width:w,height:h};},[props.style?.width,props.style?.height]);// --- ResizeObserver with memory leak fix and redundant state update fix ---\nuseEffect(()=>{if(!containerRef.current)return;const updateSize=()=>{const{width:w,height:h}=getCurrentSize();setSize(prev=>prev.width!==w||prev.height!==h?{width:w,height:h}:prev);};updateSize();if(resizeObserverRef.current){resizeObserverRef.current.disconnect();}resizeObserverRef.current=new window.ResizeObserver(updateSize);resizeObserverRef.current.observe(containerRef.current);return()=>{if(resizeObserverRef.current){resizeObserverRef.current.disconnect();resizeObserverRef.current=null;}};},[getCurrentSize]);const width=size.width;const height=size.height;const bw=Math.max(1,Math.min(16,borderWidth));// --- Border radius calculation (robust, keeps correct roundness on resize) ---\nconst normalizedRadius=useMemo(()=>{if(typeof borderRadius===\"number\")return borderRadius;if(typeof borderRadius===\"string\"){if(borderRadius.endsWith(\"px\"))return parseFloat(borderRadius);if(borderRadius.endsWith(\"%\")){// % is based on the smaller of width/height, divided by 2 for proper rounding\nconst ratio=parseFloat(borderRadius)/100;return Math.max(0,ratio*Math.min(width,height)/2);}return parseFloat(borderRadius);}return 0;},[borderRadius,width,height]);const half=bw/2;// --- Sides control, memoized ---\nconst sides=useMemo(()=>({top:props.top??true,right:props.right??true,bottom:props.bottom??true,left:props.left??true}),[props.top,props.right,props.bottom,props.left]);// --- Perimeter calculation, memoized ---\nconst perimeter=useMemo(()=>{// Clamp r to max possible\nconst maxR=Math.min(width-bw,height-bw)/2;const cr=Math.max(0,Math.min(normalizedRadius,maxR));return 2*(width-bw+height-bw-4*cr)+2*Math.PI*cr;},[width,height,bw,normalizedRadius]);const patternLength=dashLength+gapLength;const animOffset=direction===\"clockwise\"?-patternLength:patternLength;// --- getBorderPath, memoized and simplified ---\nconst getBorderPath=useCallback((w,h,bw,r,sides)=>{const half=bw/2;const maxR=Math.min(r,(w-bw)/2,(h-bw)/2);if(!sides.top&&!sides.right&&!sides.bottom&&!sides.left)return\"\";if(sides.top&&sides.right&&sides.bottom&&sides.left){return[`M${half+maxR},${half}`,`H${w-half-maxR}`,`A${maxR},${maxR} 0 0 1 ${w-half},${half+maxR}`,`V${h-half-maxR}`,`A${maxR},${maxR} 0 0 1 ${w-half-maxR},${h-half}`,`H${half+maxR}`,`A${maxR},${maxR} 0 0 1 ${half},${h-half-maxR}`,`V${half+maxR}`,`A${maxR},${maxR} 0 0 1 ${half+maxR},${half}`,\"Z\"].join(\" \");}let d=\"\";// Top\nif(sides.top){d+=`M${half+maxR},${half} H${w-half-maxR} `;// Top-right corner\nif(sides.right&&maxR>0){d+=`A${maxR},${maxR} 0 0 1 ${w-half},${half+maxR} `;}}// Right\nif(sides.right){d+=`M${w-half},${half+maxR} V${h-half-maxR} `;// Bottom-right corner\nif(sides.bottom&&maxR>0){d+=`A${maxR},${maxR} 0 0 1 ${w-half-maxR},${h-half} `;}}// Bottom\nif(sides.bottom){d+=`M${w-half-maxR},${h-half} H${half+maxR} `;// Bottom-left corner\nif(sides.left&&maxR>0){d+=`A${maxR},${maxR} 0 0 1 ${half},${h-half-maxR} `;}}// Left\nif(sides.left){d+=`M${half},${h-half-maxR} V${half+maxR} `;// Top-left corner\nif(sides.top&&maxR>0){d+=`A${maxR},${maxR} 0 0 1 ${half+maxR},${half} `;}}return d.trim();},[]);const borderPath=useMemo(()=>getBorderPath(width,height,bw,normalizedRadius,sides),[width,height,bw,normalizedRadius,sides,getBorderPath]);// --- Animation ready state ---\nconst[animationReady,setAnimationReady]=useState(false);// --- Keyframes injection with cleanup ---\nuseEffect(()=>{setAnimationReady(false);const styleId=`dashed-border-keyframes-${direction}-${uniqueIdRef.current}`;let styleEl=null;if(typeof document!==\"undefined\"){styleEl=document.getElementById(styleId);if(!styleEl){styleEl=document.createElement(\"style\");styleEl.id=styleId;document.head.appendChild(styleEl);}styleEl.innerHTML=`\n                @keyframes ${animName} {\n                    100% {\n                        stroke-dashoffset: ${animOffset};\n                    }\n                }\n            `;setTimeout(()=>setAnimationReady(true),0);}// Cleanup: remove style tag on unmount or change\nreturn()=>{if(styleEl&&styleEl.parentNode){styleEl.parentNode.removeChild(styleEl);}};},[direction,animName,animOffset]);// --- Visibility logic (unchanged, but could be simplified further) ---\nconst[visible,setVisible]=useState(false);useEffect(()=>{const loaded=props.borderColor!==defaultProps.borderColor||props.borderWidth!==defaultProps.borderWidth||props.borderRadius!==defaultProps.borderRadius||props.dashLength!==defaultProps.dashLength||props.gapLength!==defaultProps.gapLength||props.animation&&(props.animation.animated!==defaultProps.animation.animated||props.animation.speed!==defaultProps.animation.speed||props.animation.direction!==defaultProps.animation.direction)||props.top!==defaultProps.top||props.right!==defaultProps.right||props.bottom!==defaultProps.bottom||props.left!==defaultProps.left;if(loaded&&!visible){setTimeout(()=>setVisible(true),10);}},[props.borderColor,props.borderWidth,props.borderRadius,props.dashLength,props.gapLength,props.animation,props.top,props.right,props.bottom,props.left,visible,defaultProps]);return /*#__PURE__*/_jsx(\"div\",{ref:containerRef,style:{...style,minWidth:20,minHeight:20,width:\"100%\",height:\"100%\",position:\"relative\",background:\"transparent\",borderRadius:borderRadius,overflow:\"visible\",pointerEvents:\"none\",opacity:visible?1:0,transition:visible?\"opacity 0.4s cubic-bezier(.4,0,.2,1)\":undefined},children:/*#__PURE__*/_jsx(\"svg\",{width:width,height:height,viewBox:`0 0 ${width} ${height}`,style:{position:\"absolute\",top:0,left:0,width:\"100%\",height:\"100%\",pointerEvents:\"none\"},\"aria-hidden\":\"true\",preserveAspectRatio:\"none\",children:/*#__PURE__*/_jsx(\"path\",{d:borderPath,fill:\"none\",stroke:borderColor,strokeWidth:bw,strokeDasharray:`${dashLength},${gapLength}`,strokeDashoffset:0,style:{animation:!animated||RenderTarget.current()===RenderTarget.canvas||RenderTarget.current()===RenderTarget.thumbnail||!animationReady?\"none\":`${animName} ${animationDuration} linear infinite`}})})});}DashedBorderFrame.displayName=\"Animated Dashed Border\";addPropertyControls(DashedBorderFrame,{borderColor:{type:ControlType.Color,title:\"Dash Color\",defaultValue:\"#0099FF\"},borderWidth:{type:ControlType.Number,title:\"Thickness\",defaultValue:3,min:1,max:16,step:1,displayStepper:true},borderRadius:{type:ControlType.Number,title:\"Radius\",defaultValue:16,min:0,max:200,step:1,displayStepper:false},dashLength:{type:ControlType.Number,title:\"Dash\",defaultValue:12,min:2,max:40,step:1},gapLength:{type:ControlType.Number,title:\"Gap\",defaultValue:8,min:0,max:40,step:1},top:{type:ControlType.Boolean,title:\"Top\",defaultValue:true,enabledTitle:\"Yes\",disabledTitle:\"No\"},right:{type:ControlType.Boolean,title:\"Right\",defaultValue:true,enabledTitle:\"Yes\",disabledTitle:\"No\"},bottom:{type:ControlType.Boolean,title:\"Bottom\",defaultValue:true,enabledTitle:\"Yes\",disabledTitle:\"No\"},left:{type:ControlType.Boolean,title:\"Left\",defaultValue:true,enabledTitle:\"Yes\",disabledTitle:\"No\"},animation:{type:ControlType.Object,title:\"Animation\",controls:{animated:{type:ControlType.Boolean,title:\"Animated\",defaultValue:true,enabledTitle:\"On\",disabledTitle:\"Off\"},speed:{type:ControlType.Number,title:\"Speed\",defaultValue:2,min:.1,max:10,step:.1,hidden:obj=>!obj.animated},direction:{type:ControlType.Enum,title:\"Direction\",options:[\"clockwise\",\"counterclockwise\"],optionTitles:[\"Clockwise\",\"Counterclockwise\"],defaultValue:\"clockwise\",displaySegmentedControl:true,segmentedControlDirection:\"vertical\",hidden:obj=>!obj.animated}},defaultValue:{animated:true,speed:2,direction:\"clockwise\"}}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"DashedBorderFrame\",\"slots\":[],\"annotations\":{\"framerDisableUnlink\":\"* @framerIntrinsicWidth 400\",\"framerSupportedLayoutWidth\":\"any-prefer-fixed\",\"framerContractVersion\":\"1\",\"framerIntrinsicHeight\":\"250\",\"framerSupportedLayoutHeight\":\"any-prefer-fixed\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./DashedBorder.map"],"mappings":"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"}