{"version":3,"file":"ScrollResizeContainer.DFTA4has.mjs","names":["useRef","useId","useMemo","useState","__esmMin","window","pe","init_ssg_sandbox_shims","init_npm_react_18_3_1","_e","de","p","init_jsx_runtime","ie","ce","cubicBezier","easeOut","motion","circOut","easeInOut","useMotionValue","circIn","useScroll","backIn","anticipate","useTransform","animate","init_framer_motion_DhsWWWsN","useSpring","backOut","easeIn","circInOut","addPropertyControls","init_framer_DKWANagr","ControlType","ScrollResizeContainer","props","ref","cls","scrollEasingFn","makeEasingFn","pageEasing","pageBezierCurve","scrollStart","scrollEnd","easedScrub","scrollYProgress","t","smoothedScrub","scrubProgress","smoothing","windowScrollY","windowScrollProgress","viewportH","update","rawPageProgress","y","vh","pProgress","pageUnit","startFrac","pageScrollStart","range","pageScrollEnd","startPx","easedPage","smoothedPage","pageProgress","triggerProgress","isTriggered","setIsTriggered","mode","raf","check","el","rect","top","bottom","visible","denom","triggered","triggerAmount","resetOnExit","prev","onScroll","ease","easing","parseBezier","bezierCurve","controls","delay","duration","progress","width","mixUnits","startWidth","startWidthUnit","endWidth","endWidthUnit","height","startHeight","startHeightUnit","endHeight","endHeightUnit","fillCss","style","str","parts","s","n","easingName","bez","backInOut","startUnit","endUnit","startVal","endVal","SIZE_UNITS","OFFSET_OPTIONS","OFFSET_TITLES","init_ScrollResizeContainer"],"sources":["https:/framerusercontent.com/modules/QvzSLIIP7PWGELZEDAWu/97ZFa0ELJ9GWmUmX78Y0/ScrollResizeContainer.js"],"sourcesContent":["import{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{addPropertyControls,ControlType}from\"framer\";import{useEffect,useId,useMemo,useRef,useState}from\"react\";import{motion,useScroll,useTransform,useSpring,useMotionValue,animate,cubicBezier,easeIn,easeOut,easeInOut,circIn,circOut,circInOut,backIn,backOut,backInOut,anticipate}from\"framer-motion\";/**\n * @framerSupportedLayoutWidth any\n * @framerSupportedLayoutHeight any\n */export default function ScrollResizeContainer(props){const{children,mode,startWidth,startWidthUnit,endWidth,endWidthUnit,startHeight,startHeightUnit,endHeight,endHeightUnit,scrollStart,scrollEnd,pageScrollStart,pageScrollEnd,pageUnit,pageEasing,pageBezierCurve,smoothing,duration,delay,easing,bezierCurve,triggerAmount,resetOnExit,style}=props;const ref=useRef(null);const rawId=useId();const cls=`srz-${rawId.replace(/[^a-zA-Z0-9]/g,\"\")}`;// Shared easing function for both scroll modes. Memoized so the\n// useTransform callbacks don't rebuild it every render.\nconst scrollEasingFn=useMemo(()=>makeEasingFn(pageEasing,pageBezierCurve),[pageEasing,pageBezierCurve]);// --- Scrub-mode progress: bound to this element's scroll position ---\nconst{scrollYProgress}=useScroll({target:ref,offset:[scrollStart,scrollEnd]});const easedScrub=useTransform(scrollYProgress,t=>scrollEasingFn(t));const smoothedScrub=useSpring(easedScrub,{stiffness:120,damping:30,mass:.4,restDelta:.001});const scrubProgress=smoothing?smoothedScrub:easedScrub;// --- Page-mode progress: bound to the window's absolute scroll Y ---\n// Values are interpreted per pageUnit:\n//  • px: raw pixel scroll positions\n//  • vh: viewport heights scrolled (converted using live innerHeight)\n//  • %:  fraction of the total document scrollable range (0 = top of\n//         page, 100 = the very bottom reachable by scroll)\nconst{scrollY:windowScrollY,scrollYProgress:windowScrollProgress}=useScroll();const viewportH=useMotionValue(typeof window!==\"undefined\"?window.innerHeight:800);useEffect(()=>{if(typeof window===\"undefined\")return;const update=()=>viewportH.set(window.innerHeight);update();window.addEventListener(\"resize\",update);return()=>window.removeEventListener(\"resize\",update);},[]);const rawPageProgress=useTransform([windowScrollY,viewportH,windowScrollProgress],([y,vh,pProgress])=>{if(pageUnit===\"%\"){const startFrac=pageScrollStart/100;const endFrac=pageScrollEnd/100;const range=endFrac-startFrac;if(range<=0)return 0;return Math.max(0,Math.min(1,(pProgress-startFrac)/range));}const startPx=pageUnit===\"vh\"?pageScrollStart/100*vh:pageScrollStart;const endPx=pageUnit===\"vh\"?pageScrollEnd/100*vh:pageScrollEnd;const range=endPx-startPx;if(range<=0)return 0;return Math.max(0,Math.min(1,(y-startPx)/range));});const easedPage=useTransform(rawPageProgress,t=>scrollEasingFn(t));const smoothedPage=useSpring(easedPage,{stiffness:120,damping:30,mass:.4,restDelta:.001});const pageProgress=smoothing?smoothedPage:easedPage;// --- Trigger-mode progress: animated on viewport entry ---\n// Compute \"how much of the element is on screen\" as a ratio against the\n// smaller of (element height, viewport height). This way a value of 1.0\n// is always achievable, even when the element is taller than the viewport.\nconst triggerProgress=useMotionValue(0);const[isTriggered,setIsTriggered]=useState(false);useEffect(()=>{if(typeof window===\"undefined\"||!ref.current)return;if(mode!==\"trigger\")return;let raf=0;const check=()=>{raf=0;const el=ref.current;if(!el)return;const rect=el.getBoundingClientRect();const vh=window.innerHeight;const top=Math.max(0,rect.top);const bottom=Math.min(vh,rect.bottom);const visible=Math.max(0,bottom-top);const denom=Math.min(rect.height,vh);const ratio=denom>0?visible/denom:0;const triggered=ratio>=triggerAmount;setIsTriggered(prev=>{// Once mode: latch true and never go back.\nif(!resetOnExit&&prev)return prev;return triggered;});};const onScroll=()=>{if(raf)return;raf=requestAnimationFrame(check);};check();window.addEventListener(\"scroll\",onScroll,{passive:true});window.addEventListener(\"resize\",onScroll);return()=>{window.removeEventListener(\"scroll\",onScroll);window.removeEventListener(\"resize\",onScroll);if(raf)cancelAnimationFrame(raf);};},[mode,triggerAmount,resetOnExit]);useEffect(()=>{if(mode!==\"trigger\")return;const ease=easing===\"custom\"?parseBezier(bezierCurve)??\"easeInOut\":easing;// Only delay the \"in\" animation, not the reset back to 0.\nconst animDelay=isTriggered?delay:0;const controls=animate(triggerProgress,isTriggered?1:0,{duration,delay:animDelay,ease});return()=>controls.stop();},[mode,isTriggered,duration,delay,easing,bezierCurve]);const progress=mode===\"trigger\"?triggerProgress:mode===\"page\"?pageProgress:scrubProgress;// Use calc() to interpolate between mixed units (e.g. 100% → 500px).\n// CSS resolves the expression at layout time, so percentages stay\n// responsive to the parent while pixels stay absolute.\nconst width=useTransform(progress,p=>mixUnits(startWidth,startWidthUnit,endWidth,endWidthUnit,p));const height=useTransform(progress,p=>mixUnits(startHeight,startHeightUnit,endHeight,endHeightUnit,p));// Force the direct child of the resizing box to fill. !important beats\n// Framer's inline styles on specificity. Deeper elements are the child's\n// own internal layout — leave them alone.\nconst fillCss=`\n        .${cls} > * {\n            width: 100% !important;\n            height: 100% !important;\n            max-width: 100% !important;\n            max-height: 100% !important;\n        }\n    `;return /*#__PURE__*/_jsxs(\"div\",{ref:ref,style:{...style,display:\"flex\",alignItems:\"center\",justifyContent:\"center\",overflow:\"hidden\"},children:[/*#__PURE__*/_jsx(\"style\",{children:fillCss}),/*#__PURE__*/_jsx(motion.div,{className:cls,style:{width,height,position:\"relative\",flexShrink:0,minWidth:0,minHeight:0,transition:\"none\"},children:children})]});}function parseBezier(str){if(!str)return null;// Strip optional cubic-bezier() wrapper.\nconst cleaned=str.replace(/^\\s*cubic-bezier\\s*\\(/i,\"\").replace(/\\)\\s*$/,\"\");const parts=cleaned.split(\",\").map(s=>parseFloat(s.trim()));if(parts.length!==4||parts.some(n=>Number.isNaN(n)))return null;return parts;}// Resolve an easing name (or a custom cubic-bezier string) to a function of\n// t → eased t. Used by the scroll-driven modes where we apply easing inside\n// the useTransform callback (unlike the trigger mode, which passes ease\n// directly to framer-motion's animate()).\nfunction makeEasingFn(easingName,bezierCurve){if(easingName===\"custom\"){const bez=parseBezier(bezierCurve);return bez?cubicBezier(bez[0],bez[1],bez[2],bez[3]):easeInOut;}switch(easingName){case\"linear\":return t=>t;case\"easeIn\":return easeIn;case\"easeOut\":return easeOut;case\"easeInOut\":return easeInOut;case\"circIn\":return circIn;case\"circOut\":return circOut;case\"circInOut\":return circInOut;case\"backIn\":return backIn;case\"backOut\":return backOut;case\"backInOut\":return backInOut;case\"anticipate\":return anticipate;default:return easeInOut;}}function mixUnits(startVal,startUnit,endVal,endUnit,p){// If both units match, skip the calc wrapper for slightly cleaner output.\nif(startUnit===endUnit){const v=startVal*(1-p)+endVal*p;return`${v}${startUnit}`;}return`calc(${startVal*(1-p)}${startUnit} + ${endVal*p}${endUnit})`;}const SIZE_UNITS=[\"px\",\"%\",\"vw\",\"vh\"];const OFFSET_OPTIONS=[\"start end\",\"start center\",\"start start\",\"center end\",\"center center\",\"center start\",\"end end\",\"end center\",\"end start\"];const OFFSET_TITLES=[\"Top enters viewport\",\"Top hits center\",\"Top hits top\",\"Center enters viewport\",\"Center hits center\",\"Center hits top\",\"Bottom enters viewport\",\"Bottom hits center\",\"Bottom hits top\"];addPropertyControls(ScrollResizeContainer,{children:{type:ControlType.ComponentInstance,title:\"Content\",description:\"Drop in the layer you want to resize. It stretches to fill the box at every size.\"},mode:{type:ControlType.Enum,title:\"Mode\",defaultValue:\"scrub\",options:[\"scrub\",\"page\",\"trigger\"],optionTitles:[\"Element\",\"Page\",\"Trigger\"],displaySegmentedControl:true,description:\"**Element** — size follows scroll based on *this layer's* position in the viewport.\\n**Page** — size follows the overall *page* scroll between two pixel values.\\n**Trigger** — size plays out automatically once the layer enters view.\"},// ---------- Size ----------\nstartWidth:{type:ControlType.Number,title:\"Start W\",defaultValue:200,min:0,max:5e3,step:1,description:\"How wide it starts.\"},startWidthUnit:{type:ControlType.Enum,title:\"Start W Unit\",defaultValue:\"px\",options:SIZE_UNITS,displaySegmentedControl:true,description:\"*px* is exact pixels, *%* fills a share of the parent, *vw* / *vh* uses screen width / height.\"},endWidth:{type:ControlType.Number,title:\"End W\",defaultValue:600,min:0,max:5e3,step:1,description:\"How wide it ends up.\"},endWidthUnit:{type:ControlType.Enum,title:\"End W Unit\",defaultValue:\"px\",options:SIZE_UNITS,displaySegmentedControl:true,description:\"Unit for the ending width. You can mix units — e.g. start at *100%*, end at *500px*.\"},startHeight:{type:ControlType.Number,title:\"Start H\",defaultValue:200,min:0,max:5e3,step:1,description:\"How tall it starts.\"},startHeightUnit:{type:ControlType.Enum,title:\"Start H Unit\",defaultValue:\"px\",options:SIZE_UNITS,displaySegmentedControl:true,description:\"Unit for the starting height.\"},endHeight:{type:ControlType.Number,title:\"End H\",defaultValue:600,min:0,max:5e3,step:1,description:\"How tall it ends up.\"},endHeightUnit:{type:ControlType.Enum,title:\"End H Unit\",defaultValue:\"px\",options:SIZE_UNITS,displaySegmentedControl:true,description:\"Unit for the ending height.\"},// ---------- Element scrub mode ----------\nscrollStart:{type:ControlType.Enum,title:\"Start At\",defaultValue:\"start end\",options:OFFSET_OPTIONS,optionTitles:OFFSET_TITLES,description:\"When during scroll the size sits at its starting values.\",hidden:props=>props.mode!==\"scrub\"},scrollEnd:{type:ControlType.Enum,title:\"End At\",defaultValue:\"end start\",options:OFFSET_OPTIONS,optionTitles:OFFSET_TITLES,description:\"When during scroll the size reaches its ending values.\",hidden:props=>props.mode!==\"scrub\"},// ---------- Page scroll mode ----------\npageScrollStart:{type:ControlType.Number,title:\"Page Start\",defaultValue:0,min:0,max:2e4,step:10,description:\"Page scroll position where the size sits at its starting values. Unit set below.\",hidden:props=>props.mode!==\"page\"},pageScrollEnd:{type:ControlType.Number,title:\"Page End\",defaultValue:1e3,min:0,max:2e4,step:10,description:\"Page scroll position where the size reaches its ending values.\",hidden:props=>props.mode!==\"page\"},pageUnit:{type:ControlType.Enum,title:\"Page Unit\",defaultValue:\"px\",options:[\"px\",\"vh\",\"%\"],displaySegmentedControl:true,description:\"Unit for Page Start and Page End.\\n*px* — exact pixel scroll position.\\n*vh* — viewport heights scrolled (e.g. *100vh* = one full screen scrolled).\\n*%* — fraction of the total page scroll range (*0* = top, *100* = the very bottom).\",hidden:props=>props.mode!==\"page\"},pageEasing:{type:ControlType.Enum,title:\"Scroll Easing\",defaultValue:\"linear\",options:[\"linear\",\"easeIn\",\"easeOut\",\"easeInOut\",\"circIn\",\"circOut\",\"circInOut\",\"backIn\",\"backOut\",\"backInOut\",\"anticipate\",\"custom\"],description:\"Shape of the resize as you scroll through the range (applies to both Element and Page modes).\\n*linear* — size changes evenly with scroll.\\n*easeInOut* — slow at both ends, fast in the middle.\\n*back* — overshoots slightly.\\nPick *custom* to draw your own curve below.\",hidden:props=>props.mode===\"trigger\"},pageBezierCurve:{type:ControlType.String,title:\"Scroll Curve\",defaultValue:\".42, 0, .58, 1\",placeholder:\".63, 0, .48, 1.01\",description:\"Four cubic-bezier values, separated by commas. Paste straight from [cubic-bezier.com](https://cubic-bezier.com) or any CSS snippet — both `.63,0,.48,1.01` and `cubic-bezier(.63, 0, .48, 1.01)` work.\",hidden:props=>props.mode===\"trigger\"||props.pageEasing!==\"custom\"},// ---------- Shared: both scroll modes ----------\nsmoothing:{type:ControlType.Boolean,title:\"Smoothing\",defaultValue:true,enabledTitle:\"On\",disabledTitle:\"Off\",description:\"Adds a gentle lag so the resize feels less robotic as you scroll.\",hidden:props=>props.mode===\"trigger\"},// ---------- Trigger mode ----------\nduration:{type:ControlType.Number,title:\"Duration\",defaultValue:.8,min:0,max:10,step:.05,unit:\"s\",description:\"How long the resize takes, in seconds.\",hidden:props=>props.mode!==\"trigger\"},delay:{type:ControlType.Number,title:\"Delay\",defaultValue:0,min:0,max:10,step:.05,unit:\"s\",description:\"How long to wait after the trigger fires before the resize starts.\\nThe delay only applies on the way in — reset (if enabled) plays back immediately.\",hidden:props=>props.mode!==\"trigger\"},easing:{type:ControlType.Enum,title:\"Easing\",defaultValue:\"easeInOut\",options:[\"linear\",\"easeIn\",\"easeOut\",\"easeInOut\",\"circIn\",\"circOut\",\"circInOut\",\"backIn\",\"backOut\",\"backInOut\",\"anticipate\",\"custom\"],description:\"Shape of the motion — *linear* is steady, *easeOut* slows toward the end, *back* overshoots slightly.\\nPick *custom* to draw your own curve below.\",hidden:props=>props.mode!==\"trigger\"},bezierCurve:{type:ControlType.String,title:\"Curve\",defaultValue:\".42, 0, .58, 1\",placeholder:\".63, 0, .48, 1.01\",description:\"Four cubic-bezier values, separated by commas. Paste straight from [cubic-bezier.com](https://cubic-bezier.com) or any CSS snippet — both `.63,0,.48,1.01` and `cubic-bezier(.63, 0, .48, 1.01)` work.\",hidden:props=>props.mode!==\"trigger\"||props.easing!==\"custom\"},triggerAmount:{type:ControlType.Number,title:\"Trigger At\",defaultValue:.3,min:0,max:1,step:.05,description:\"How much of this layer needs to be on screen before it plays. *0.3* ≈ a third visible, *1* = filling the viewport (or fully visible if it's shorter).\\n\\nWorks for any layer height — tall layers don't need a special value.\",hidden:props=>props.mode!==\"trigger\"},resetOnExit:{type:ControlType.Boolean,title:\"Reset\",defaultValue:false,enabledTitle:\"On\",disabledTitle:\"Off\",description:\"Replay the resize every time the layer scrolls in and out, instead of just once.\",hidden:props=>props.mode!==\"trigger\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"ScrollResizeContainer\",\"slots\":[],\"annotations\":{\"framerSupportedLayoutHeight\":\"any\",\"framerContractVersion\":\"1\",\"framerSupportedLayoutWidth\":\"any\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./ScrollResizeContainer.map"],"mappings":"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"}