{"version":3,"file":"shared-lib.CDFG27pF.mjs","names":["React.useRef","React.useMemo","React.useCallback"],"sources":["https:/framerusercontent.com/modules/Alf1mO2RnWNoQoo2KSjl/O53Qr19osd3tVrrzYTth/Bound.js"],"sourcesContent":["import{jsx as _jsx}from\"react/jsx-runtime\";import{addPropertyControls,ControlType,useIsStaticRenderer}from\"framer\";import{motion,useMotionValue,useAnimationFrame}from\"framer-motion\";import*as React from\"react\";/**\n * Bouncing Ball\n *\n * A self-contained round ball that bounces on the FLOOR — the bottom edge of\n * this component. It never sinks below that line (unlike a Spring, which\n * overshoots).\n *\n * Start modes:\n *   • Drop In ON  — the ball falls from `Drop Distance` above the floor\n *     (accelerating like gravity), lands, and bounces back up (rebound set by\n *     Bounciness).\n *   • Drop In OFF — the ball launches up from the floor to `Bounce Height`.\n *\n * Plus squash-and-stretch on impact, energy decay, start delay, and looping.\n * Animation runs in Preview (▶) / on the published site — the static canvas\n * shows a representative frame.\n *\n * @framerSupportedLayoutWidth any-prefer-fixed\n * @framerSupportedLayoutHeight any-prefer-fixed\n */export default function BouncingBall(props){const{sizeMode=\"fill\",ballSize=80,widthPercent=100,ballColor=\"#111111\",colors=[],colorInterval=.3,dropIn=true,dropHeight=240,bounceHeight=160,bounceDuration=.7,bounciness=.6,gap=.06,restAfterSettle=.8,squash=.18,startDelay=0,startOpacity=1,fadeInTime=.4,loop=true,paused=false,style}=props;const isStatic=useIsStaticRenderer();const y=useMotionValue(0);const scaleX=useMotionValue(1);const scaleY=useMotionValue(1);const opacity=useMotionValue(1);const elapsed=React.useRef(0);// Color blink: cycle through `colors` at `colorInterval`. Empty list → the\n// single fallback `ballColor` (no blink).\nconst palette=colors&&colors.length?colors:[ballColor];const bg=useMotionValue(palette[0]);const colorIdx=React.useRef(0);React.useEffect(()=>{colorIdx.current=0;bg.set(palette[0]);// eslint-disable-next-line react-hooks/exhaustive-deps\n},[palette.join(\"|\")]);// Build the motion schedule: an optional intro (played once) + a body that\n// repeats. Segments are either a \"bounce\"/\"fall\" (air time h/air) or a rest.\nconst schedule=React.useMemo(()=>{const baseAir=Math.max(.05,bounceDuration);const b=Math.min(1,Math.max(0,bounciness));const H=dropIn?Math.max(0,dropHeight):Math.max(0,bounceHeight);const Href=H>0?H:1;const air=h=>baseAir*Math.sqrt(h/Href);const continuous=b>=.985;let intro=[];let body=[];if(H===0){body=[{rest:true,dur:Math.max(.1,restAfterSettle)}];}else if(dropIn){if(continuous){// fall in once, then bounce at the same height forever\nintro=[{fall:true,h:H,air:air(H)/2}];body=[{h:H,air:air(H)}];if(gap>0)body.push({rest:true,dur:gap});}else{// real dropped ball: fall, then decaying rebounds, rest, repeat\nbody=[{fall:true,h:H,air:air(H)/2}];let h=H*b;let guard=0;while(h>.5&&guard<60){body.push({h,air:air(h)});h*=b;guard++;}body.push({rest:true,dur:Math.max(0,restAfterSettle)});}}else{// launch up from the floor\nif(continuous){body=[{h:H,air:air(H)}];if(gap>0)body.push({rest:true,dur:gap});}else{let h=H;let guard=0;while(h>.5&&guard<60){body.push({h,air:air(h)});h*=b;guard++;}body.push({rest:true,dur:Math.max(0,restAfterSettle)});}}const sum=arr=>arr.reduce((a,s)=>a+(s.rest?s.dur??0:s.air??0),0);return{intro,introTotal:sum(intro),body,bodyTotal:Math.max(1e-4,sum(body)),Href};},[dropIn,dropHeight,bounceHeight,bounceDuration,bounciness,gap,restAfterSettle]);const apply=React.useCallback(t=>{const{intro,introTotal,body,bodyTotal,Href}=schedule;let segArr=body;let localT=0;if(t<introTotal){segArr=intro;localT=t;}else{let tb=t-introTotal;if(loop)tb=tb%bodyTotal;else tb=Math.min(tb,bodyTotal-1e-4);localT=tb;}let acc=0;let cur=segArr[segArr.length-1];let lp=0;for(let i=0;i<segArr.length;i++){const s=segArr[i];const len=s.rest?s.dur??0:s.air??0;if(localT<acc+len||i===segArr.length-1){cur=s;lp=localT-acc;break;}acc+=len;}if(!cur||cur.rest||!cur.air){y.set(0);scaleX.set(1);scaleY.set(1);return;}const p=Math.min(1,Math.max(0,lp/cur.air));const h=cur.h??0;const height=cur.fall?h*(1-p*p):h*4*p*(1-p);y.set(-height);// squash at floor contact: fall → land only (p≈1); bounce → both ends\nconst pw=.14;let edge=0;if(!cur.fall&&p<pw)edge=1-p/pw;if(p>1-pw)edge=Math.max(edge,1-(1-p)/pw);const energy=Href>0?Math.sqrt(h/Href):0;const amt=squash*energy*edge;scaleY.set(1-amt);scaleX.set(1+amt*.6);},[schedule,loop,squash,y,scaleX,scaleY]);// Reset on relevant prop changes; seed the starting frame.\nReact.useEffect(()=>{const top=(dropIn?dropHeight:bounceHeight)||0;if(isStatic){y.set(-top*.6);opacity.set(1);}else{elapsed.current=0;y.set(dropIn?-Math.max(0,dropHeight):0);opacity.set(startOpacity);}scaleX.set(1);scaleY.set(1);},[isStatic,dropIn,dropHeight,bounceHeight,startOpacity,y,scaleX,scaleY,opacity]);useAnimationFrame((_,delta)=>{if(isStatic||paused)return;elapsed.current+=delta/1e3;// color blink (hard switch through the palette)\nif(palette.length>1){const idx=Math.floor(elapsed.current/Math.max(.02,colorInterval))%palette.length;if(idx!==colorIdx.current){colorIdx.current=idx;bg.set(palette[idx]);}}const t=elapsed.current-startDelay;if(t<0){// waiting to start: hold at the start position & opacity\ny.set(dropIn?-Math.max(0,dropHeight):0);scaleX.set(1);scaleY.set(1);opacity.set(startOpacity);return;}// fade in once, over fadeInTime, as it enters\nconst f=fadeInTime>0?Math.min(1,t/fadeInTime):1;opacity.set(startOpacity+(1-startOpacity)*f);apply(t);});// Size mode: \"fixed\" = ballSize px; \"fill\" = widthPercent of the parent's\n// width, and — being a circle — its height tracks the width via aspectRatio.\nconst fill=sizeMode===\"fill\";const wp=Math.max(0,widthPercent);return /*#__PURE__*/_jsx(\"div\",{style:{position:\"relative\",width:\"100%\",height:\"100%\",overflow:\"visible\",...style},children:/*#__PURE__*/_jsx(motion.div,{style:{position:\"absolute\",bottom:0,left:fill?`${(100-wp)/2}%`:\"50%\",marginLeft:fill?0:-ballSize/2,width:fill?`${wp}%`:ballSize,height:fill?undefined:ballSize,aspectRatio:fill?\"1 / 1\":undefined,borderRadius:\"50%\",backgroundColor:bg,y,scaleX,scaleY,opacity,transformOrigin:\"50% 100%\",willChange:\"transform, opacity\"}})});}BouncingBall.displayName=\"Bouncing Ball\";addPropertyControls(BouncingBall,{sizeMode:{type:ControlType.Enum,title:\"Size Mode\",options:[\"fixed\",\"fill\"],optionTitles:[\"Fixed px\",\"Fill Width\"],displaySegmentedControl:true,defaultValue:\"fill\",description:\"Fill Width = the ball spans the parent's width (a circle, so its height matches).\"},ballSize:{type:ControlType.Number,title:\"Size\",min:4,max:400,step:1,unit:\"px\",defaultValue:80,hidden:p=>p.sizeMode===\"fill\"},widthPercent:{type:ControlType.Number,title:\"Width\",min:1,max:100,step:1,unit:\"%\",defaultValue:100,hidden:p=>p.sizeMode!==\"fill\",description:\"Share of the parent's width the ball fills.\"},ballColor:{type:ControlType.Color,title:\"Color\",defaultValue:\"#111111\",description:\"単色（Colorsが空の時に使用）。\"},colors:{type:ControlType.Array,title:\"Colors\",control:{type:ControlType.Color},defaultValue:[],description:\"2色以上入れると、その色を順番に点滅（切替）します。\"},colorInterval:{type:ControlType.Number,title:\"Blink Speed\",min:.02,max:3,step:.02,unit:\"s\",defaultValue:.3,hidden:p=>(p.colors?.length??0)<2,description:\"1色あたりの表示時間。短いほど速く点滅。\"},dropIn:{type:ControlType.Boolean,title:\"Drop In\",defaultValue:true,enabledTitle:\"Fall\",disabledTitle:\"From Floor\",description:\"Start by falling from above (vs. launching up from the floor).\"},dropHeight:{type:ControlType.Number,title:\"Drop Distance\",min:0,max:1200,step:1,unit:\"px\",defaultValue:240,hidden:p=>!p.dropIn,description:\"How high above the floor it starts.\"},bounceHeight:{type:ControlType.Number,title:\"Bounce Height\",min:0,max:800,step:1,unit:\"px\",defaultValue:160,hidden:p=>!!p.dropIn},bounceDuration:{type:ControlType.Number,title:\"Bounce Time\",min:.2,max:2,step:.05,unit:\"s\",defaultValue:.7},bounciness:{type:ControlType.Number,title:\"Bounciness\",min:0,max:1,step:.01,defaultValue:.6,description:\"Rebound kept per bounce. 1 = never settles. Lower = decays & rests.\"},gap:{type:ControlType.Number,title:\"Floor Pause\",min:0,max:1,step:.01,unit:\"s\",defaultValue:.06,description:\"Rest on the floor between bounces (continuous mode).\"},restAfterSettle:{type:ControlType.Number,title:\"Rest / Loop\",min:0,max:3,step:.1,unit:\"s\",defaultValue:.8,description:\"Pause after it settles, before looping.\"},squash:{type:ControlType.Number,title:\"Squash\",min:0,max:.6,step:.01,defaultValue:.18},startDelay:{type:ControlType.Number,title:\"Start Delay\",min:0,max:10,step:.1,unit:\"s\",defaultValue:0,description:\"Waits this long before it starts.\"},startOpacity:{type:ControlType.Number,title:\"Start Opacity\",min:0,max:1,step:.01,defaultValue:1,description:\"Opacity as it enters (0 = fades in from invisible). 1 = no fade.\"},fadeInTime:{type:ControlType.Number,title:\"Fade In Time\",min:0,max:3,step:.05,unit:\"s\",defaultValue:.4,hidden:p=>(p.startOpacity??1)>=1,description:\"Time to reach full opacity.\"},loop:{type:ControlType.Boolean,title:\"Loop\",defaultValue:true},paused:{type:ControlType.Boolean,title:\"Paused\",defaultValue:false}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"BouncingBall\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\",\"framerSupportedLayoutWidth\":\"any-prefer-fixed\",\"framerSupportedLayoutHeight\":\"any-prefer-fixed\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./Bound.map"],"mappings":"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"}