{"version":3,"file":"Flow_Field.CWcbcvnd.mjs","names":["useState","useMemo","useRef","useCallback"],"sources":["https:/framerusercontent.com/modules/mp7GcDPjJHL6d0aSm4qc/R3OjdFOohQ42DSZmLVXO/Flow_Field.js"],"sourcesContent":["import{jsx as _jsx}from\"react/jsx-runtime\";import{useEffect,useRef,useCallback,useMemo,useState}from\"react\";import{addPropertyControls,ControlType,useIsStaticRenderer}from\"framer\";// ============ 颜色工具 ============\n// Framer 的 Color 控件返回 hex 字符串，转成 RGB 整数\nfunction parseColor(c,fallback){if(typeof c===\"number\")return c;if(typeof c===\"string\"){const v=parseInt(c.replace(\"#\",\"\"),16);return Number.isFinite(v)?v:fallback;}if(c&&typeof c===\"object\"&&typeof c.value===\"string\"){const v=parseInt(c.value.replace(\"#\",\"\"),16);return Number.isFinite(v)?v:fallback;}return fallback;}// 返回 \"R,G,B\" 字符串，供 rgba(...) 使用\n// t: 0~1 的渐变位置；mode: 是否启用渐变\nfunction colorAt(t,mode,start,end){const sr=start>>16&255;const sg=start>>8&255;const sb=start&255;if(!mode)return`${sr},${sg},${sb}`;const k=Math.max(0,Math.min(1,t));const er=end>>16&255;const eg=end>>8&255;const eb=end&255;return[Math.round(sr+(er-sr)*k),Math.round(sg+(eg-sg)*k),Math.round(sb+(eb-sb)*k)].join(\",\");}const DEFAULT_COLOR_START=15921386// 米白\n;const DEFAULT_COLOR_END=8895487// 冰蓝\n;// ============ 数学工具 ============\nconst TAU=Math.PI*2;const TABLE_SIZE=2048;const clamp=(v,min,max)=>Math.min(max,Math.max(min,v));const pseudoRandom=seed=>{const t=Math.sin(seed*127.1+311.7)*43758.5453;return t-Math.floor(t);};const isSafeCount=(n,max)=>Number.isSafeInteger(n)&&n>=0&&n<=max;function buildEaseTable(parameter){const accum=new Float64Array(TABLE_SIZE+1);const shape=t=>Math.max(0,1-parameter)+Math.min(parameter,1)*.035+parameter*5*Math.abs(Math.cos(t+.55))**8;for(let i=1;i<=TABLE_SIZE;i++){accum[i]=accum[i-1]+(shape((i-1)/TABLE_SIZE*TAU)+shape(i/TABLE_SIZE*TAU))/2;}const result=new Float64Array(TABLE_SIZE+1);let cursor=1;for(let i=0;i<=TABLE_SIZE;i++){const target=accum[TABLE_SIZE]*i/TABLE_SIZE;while(cursor<TABLE_SIZE&&accum[cursor]<target)cursor++;const frac=(target-accum[cursor-1])/(accum[cursor]-accum[cursor-1]);result[i]=(cursor-1+frac)/TABLE_SIZE*TAU;}result[0]=0;result[TABLE_SIZE]=TAU;return result;}function lookup(table,t){const scaled=(t-Math.floor(t))*(table.length-1);const idx=Math.floor(scaled);return table[idx]+(table[idx+1]-table[idx])*(scaled-idx);}function computeFlowPoint(phase,lane,width,height,s){const sinP=Math.sin(phase);const cosP=Math.cos(phase);const sinPc=Math.sin(phase+.55);const cosPc=Math.cos(phase+.55);const cross=phase*3+lane*6;const radialMul=1+lane*s.bundleWidth*(.55+.45*sinPc*sinPc)+Math.sin(cross)*s.bend;const tangentMul=lane*s.bundleWidth*.9*sinPc*cosPc+Math.cos(cross)*s.bend*3;const rx=width*s.orbitWidth;const ry=height*s.orbitHeight;const px=cosP*rx*radialMul;const py=sinP*ry*radialMul;const tx=rx*(-sinP*radialMul+cosP*tangentMul);const ty=ry*(cosP*radialMul+sinP*tangentMul);const tiltRad=s.tilt*Math.PI/180;const cosT=Math.cos(tiltRad);const sinT=Math.sin(tiltRad);return{x:width/2+px*cosT-py*sinT,y:height/2+px*sinT+py*cosT,tangentX:tx*cosT-ty*sinT,tangentY:tx*sinT+ty*cosT,brightness:.12+.78*Math.abs(Math.cos(phase+.55))**8};}function sizeFromUnit(u,s){const n=clamp(u,0,1);return n<.5?s.minSize+(s.medianSize-s.minSize)*(1-(1-n*2)**3):s.medianSize+(s.maxSize-s.medianSize)*(n*2-1)**3;}function lengthFromUnit(u,s){const n=clamp(u,0,1);return n<.5?s.minLength+(s.medianLength-s.minLength)*(1-(1-n*2)**3):s.medianLength+(s.maxLength-s.medianLength)*(n*2-1)**3;}function repelFromPointer(px,py,pointer,radius){const dx=px-pointer.x;const dy=py-pointer.y;const dist=Math.hypot(dx,dy);if(dist===0||dist>=radius)return{x:0,y:0};const force=(1-dist/radius)*3.2;return{x:dx/dist*force,y:dy/dist*force};}function validateSettings(input){const out={countMultiplier:1.5,minSize:.5,maxSize:5,medianSize:1,minLength:1,maxLength:1,medianLength:1,density:.2,orbitWidth:.45,orbitHeight:.34,tilt:-10.5,bend:0,bundleWidth:.65,speed:1.15,autoMorph:0,autoPeriod:24,autoAmount:.6};const allowNegative=[\"tilt\",\"bend\",\"speed\"];for(const key of Object.keys(out)){const value=input[key];if(typeof value===\"number\"&&Number.isFinite(value)&&(allowNegative.includes(key)||value>=0)&&(key!==\"autoPeriod\"||value>0)){out[key]=value;}}out.maxSize=Math.max(out.minSize,out.maxSize);out.autoMorph=out.autoMorph>=.5?1:0;out.medianSize=clamp(out.medianSize,out.minSize,out.maxSize);out.maxLength=Math.max(out.minLength,out.maxLength);out.medianLength=clamp(out.medianLength,out.minLength,out.maxLength);return out;}function applyAutoMorph(s,time,reducedMotion){if(!s.autoMorph||reducedMotion)return s;const phase=time/s.autoPeriod*Math.PI*2;const sinA=Math.sin(phase);const sinB=Math.sin(phase*2);const amt=s.autoAmount;return validateSettings({...s,density:s.density+.35*amt*sinA,orbitHeight:s.orbitHeight-.12*amt*sinA,tilt:s.tilt+24*amt*sinB,bend:s.bend+.05*amt*sinA,speed:s.speed*(1+.5*amt*sinB)});}// ============ 滚动场景 Hook ============\nfunction useScrollScene(mode,startProgress,endProgress,fadeRange){const[progress,setProgress]=useState(0);useEffect(()=>{if(mode!==\"scroll\")return;const update=()=>{const doc=document.documentElement;const max=doc.scrollHeight-window.innerHeight;setProgress(max>0?window.scrollY/max:0);};update();window.addEventListener(\"scroll\",update,{passive:true});window.addEventListener(\"resize\",update,{passive:true});return()=>{window.removeEventListener(\"scroll\",update);window.removeEventListener(\"resize\",update);};},[mode]);return useMemo(()=>{if(mode!==\"scroll\"){return{active:true,opacity:1};}const start=Math.min(startProgress,endProgress);const end=Math.max(startProgress,endProgress);if(end-start<=.001){return{active:false,opacity:0};}const span=end-start;const fadeZone=span*clamp(fadeRange,.02,.5);// 起点为 0 时不淡入；终点为 1 时不淡出\nconst fadeIn=start<=.001?1:Math.min(1,Math.max(0,(progress-start)/fadeZone));const fadeOut=end>=.999?1:Math.min(1,Math.max(0,(end-progress)/fadeZone));const opacity=Math.min(fadeIn,fadeOut);return{active:opacity>.02,opacity};},[mode,startProgress,endProgress,fadeRange,progress]);}function useCanvas(onFrame,options={}){const{active=true}=options;const canvasRef=useRef(null);const callbackRef=useRef(onFrame);callbackRef.current=onFrame;const visibleRef=useRef(true);useEffect(()=>{const canvas=canvasRef.current;if(!canvas)return;const ctx=canvas.getContext(\"2d\");if(!ctx)return;let rafId=0;let lastTime=performance.now();let viewport={width:1,height:1,dpr:1};const pointer={x:0,y:0,active:false};const motionQuery=window.matchMedia(\"(prefers-reduced-motion: reduce)\");const resize=()=>{const rect=canvas.getBoundingClientRect();const dpr=Math.min(window.devicePixelRatio||1,2);viewport={width:rect.width,height:rect.height,dpr};canvas.width=Math.max(1,Math.round(rect.width*dpr));canvas.height=Math.max(1,Math.round(rect.height*dpr));ctx.setTransform(dpr,0,0,dpr,0,0);};const onPointerMove=event=>{const rect=canvas.getBoundingClientRect();const x=event.clientX-rect.left;const y=event.clientY-rect.top;if(x>=0&&x<=rect.width&&y>=0&&y<=rect.height){pointer.x=x;pointer.y=y;pointer.active=true;}else{pointer.active=false;}};const onPointerOut=event=>{if(!event.relatedTarget)pointer.active=false;};const tick=time=>{const delta=Math.min(50,time-lastTime);lastTime=time;if(active&&visibleRef.current&&!document.hidden){callbackRef.current({context:ctx,viewport,pointer,elapsed:time/1e3,delta:delta/1e3,reducedMotion:motionQuery.matches});}rafId=requestAnimationFrame(tick);};const onVisibility=()=>{lastTime=performance.now();};resize();const observer=new ResizeObserver(resize);observer.observe(canvas);// ★ 视口感知：离开视口时暂停动画\nconst intersectionObserver=new IntersectionObserver(entries=>{visibleRef.current=entries[0]?.isIntersecting??true;lastTime=performance.now();},{threshold:0});intersectionObserver.observe(canvas);window.addEventListener(\"pointermove\",onPointerMove,{passive:true});window.addEventListener(\"pointerout\",onPointerOut,{passive:true});document.addEventListener(\"visibilitychange\",onVisibility);rafId=requestAnimationFrame(tick);return()=>{cancelAnimationFrame(rafId);observer.disconnect();intersectionObserver.disconnect();window.removeEventListener(\"pointermove\",onPointerMove);window.removeEventListener(\"pointerout\",onPointerOut);document.removeEventListener(\"visibilitychange\",onVisibility);};},[active]);return canvasRef;}// ============ 静态预览（编辑器画布 & 导出时使用） ============\nfunction StaticFlowPreview({intensity,style}){const canvasRef=useRef(null);useEffect(()=>{const canvas=canvasRef.current;if(!canvas)return;const ctx=canvas.getContext(\"2d\");if(!ctx)return;const rect=canvas.getBoundingClientRect();const dpr=Math.min(window.devicePixelRatio||1,2);canvas.width=Math.max(1,Math.round(rect.width*dpr));canvas.height=Math.max(1,Math.round(rect.height*dpr));ctx.setTransform(dpr,0,0,dpr,0,0);const w=rect.width;const h=rect.height;// 一次性绘制简化版粒子\nctx.fillStyle=`rgba(242,240,234,${.85*intensity})`;const count=800;for(let i=0;i<count;i++){// 使用和实际组件相同的 pseudoRandom\nconst u=pseudoRandom(i+1);const lane=(pseudoRandom(i+20001)-.5)*1.35;const radius=pseudoRandom(i+40001);// 简化版椭圆轨道分布\nconst angle=u*Math.PI*2;const rx=w*.45;const ry=h*.34;const radialMul=1+lane*.65*.6;const px=Math.cos(angle)*rx*radialMul;const py=Math.sin(angle)*ry*radialMul;// 倾斜\nconst tiltRad=-10.5*Math.PI/180;const cosT=Math.cos(tiltRad);const sinT=Math.sin(tiltRad);const x=w/2+px*cosT-py*sinT;const y=h/2+px*sinT+py*cosT;// 亮度衰减（模拟真实的中心聚散效果）\nconst brightness=.12+.78*Math.abs(Math.cos(angle+.55))**8;const alpha=brightness*intensity;// 尺寸\nconst size=.5+radius*1.5;ctx.fillStyle=`rgba(242,240,234,${alpha})`;ctx.beginPath();ctx.arc(x,y,size/2,0,Math.PI*2);ctx.fill();}},[intensity]);return /*#__PURE__*/_jsx(\"div\",{style:{width:\"100%\",height:\"100%\",background:\"#070707\",...style},children:/*#__PURE__*/_jsx(\"canvas\",{ref:canvasRef,style:{width:\"100%\",height:\"100%\",display:\"block\"}})});}export default function FlowFieldParticles(props){const isStaticRenderer=useIsStaticRenderer();const colorMode=props.colorMode;const colorStartInt=useMemo(()=>parseColor(props.colorStart,DEFAULT_COLOR_START),[props.colorStart]);const colorEndInt=useMemo(()=>parseColor(props.colorEnd,DEFAULT_COLOR_END),[props.colorEnd]);const settings=useMemo(()=>validateSettings({countMultiplier:props.countMultiplier,speed:props.speed,density:props.density,tilt:props.tilt,bend:props.bend,orbitWidth:props.orbitWidth,orbitHeight:props.orbitHeight,bundleWidth:props.bundleWidth,minSize:props.minSize,maxSize:props.maxSize,medianSize:props.medianSize,minLength:props.minLength,maxLength:props.maxLength,medianLength:props.medianLength,autoMorph:props.autoMorph?1:0,autoPeriod:props.autoPeriod,autoAmount:props.autoAmount}),[props.countMultiplier,props.speed,props.density,props.tilt,props.bend,props.orbitWidth,props.orbitHeight,props.bundleWidth,props.minSize,props.maxSize,props.medianSize,props.minLength,props.maxLength,props.medianLength,props.autoMorph,props.autoPeriod,props.autoAmount]);const count=Math.round(9e3*settings.countMultiplier);const validCount=isSafeCount(count,2e5);const timeAccumulator=useRef(0);const morphAccumulator=useRef(0);const lastSettings=useRef(null);const easeTableCacheRef=useRef(null);const tables=useMemo(()=>Array.from({length:33},(_,i)=>buildEaseTable(i/32)),[]);const particles=useMemo(()=>Array.from({length:validCount?count:0},(_,i)=>({u:pseudoRandom(i+1),lane:(pseudoRandom(i+20001)-.5)*(i%4===0?3.7:1.35),width:sizeFromUnit(pseudoRandom(i+40001),settings),length:lengthFromUnit(pseudoRandom(i+50001),settings),rate:.75+pseudoRandom(i+60001)*.5})),[count,validCount,settings.minSize,settings.maxSize,settings.medianSize,settings.minLength,settings.maxLength,settings.medianLength]);const{active,opacity}=useScrollScene(props.visibilityMode,props.startProgress,props.endProgress,props.fadeRange);const canvasRef=useCanvas(useCallback(({context:ctx,viewport,pointer,delta,reducedMotion})=>{const{width,height}=viewport;if(!validCount){ctx.clearRect(0,0,width,height);return;}if(settings.autoMorph&&!reducedMotion&&settings.speed!==0){morphAccumulator.current+=delta;}else if(!settings.autoMorph){morphAccumulator.current=0;}const targetSettings=applyAutoMorph(settings,morphAccumulator.current,reducedMotion);const previous=lastSettings.current||settings;const blend=1-Math.exp(-delta*4);const smoothed={...targetSettings};for(const key of[\"density\",\"orbitHeight\",\"tilt\",\"bend\",\"speed\"]){smoothed[key]=previous[key]+(targetSettings[key]-previous[key])*blend;}if(settings.speed===0)smoothed.speed=0;lastSettings.current=smoothed;const densityRaw=Math.max(0,Math.min(1,smoothed.density))*32;const densityIndex=Math.min(31,Math.floor(densityRaw));const densityFrac=densityRaw-densityIndex;let highDensityTable=null;if(smoothed.density>1){const cached=easeTableCacheRef.current;if(cached&&Math.abs(cached.density-smoothed.density)<.001){highDensityTable=cached.table;}else{highDensityTable=buildEaseTable(smoothed.density);easeTableCacheRef.current={density:smoothed.density,table:highDensityTable};}}timeAccumulator.current+=delta*smoothed.speed*(reducedMotion?.025:1);ctx.clearRect(0,0,width,height);ctx.lineCap=\"round\";for(let i=0;i<count;i++){const p=particles[i];const phase=p.u+timeAccumulator.current*.012*p.rate;const phaseValue=highDensityTable?lookup(highDensityTable,phase):lookup(tables[densityIndex],phase)+(lookup(tables[densityIndex+1],phase)-lookup(tables[densityIndex],phase))*densityFrac;const point=computeFlowPoint(phaseValue,p.lane,width,height,smoothed);let px=point.x;let py=point.y;if(pointer.active&&!reducedMotion){const force=repelFromPointer(point.x,point.y,pointer,Math.min(width,height)*.22);px+=force.x*9;py+=force.y*9;}const edgeDist=Math.hypot((px-width/2)/(width*.25),(py-height/2)/(height*.13));const alpha=(.2+point.brightness*.8)*(1-Math.min(.9,Math.abs(p.lane)*.35))*Math.min(1,Math.max(0,(edgeDist-.8)*2))*props.intensity;if(!Number.isFinite(px)||!Number.isFinite(py)||alpha<=.01||px<-20||px>width+20||py<-20||py>height+20||p.width===0){continue;}// 按粒子 X 位置映射渐变\nconst gradientT=px/width;const rgb=colorAt(gradientT,colorMode,colorStartInt,colorEndInt);const color=`rgba(${rgb},${alpha})`;ctx.strokeStyle=color;ctx.fillStyle=color;if(i%3===0){const angle=Math.atan2(point.tangentY,point.tangentX);ctx.lineWidth=p.width;ctx.beginPath();ctx.moveTo(px,py);ctx.lineTo(px-Math.cos(angle)*p.length,py-Math.sin(angle)*p.length);ctx.stroke();}else{ctx.beginPath();ctx.arc(px,py,p.width/2,0,Math.PI*2);ctx.fill();}}},[props.intensity,particles,count,settings,tables,validCount]),{active:active&&!isStaticRenderer});if(isStaticRenderer){return /*#__PURE__*/_jsx(StaticFlowPreview,{intensity:props.intensity,style:props.style});}return /*#__PURE__*/_jsx(\"div\",{style:{width:\"100%\",height:\"100%\",opacity,transition:\"opacity 0.35s ease\",pointerEvents:\"none\",...props.style},children:/*#__PURE__*/_jsx(\"canvas\",{ref:canvasRef,style:{width:\"100%\",height:\"100%\",display:\"block\",pointerEvents:\"none\"}})});}// ============ Framer 属性面板 ============\naddPropertyControls(FlowFieldParticles,{colorMode:{type:ControlType.Boolean,title:\"启用渐变\",defaultValue:false,enabledTitle:\"渐变\",disabledTitle:\"单色\"},colorStart:{type:ControlType.Color,title:\"主色\",defaultValue:\"#F2F0EA\",description:\"单色模式下使用此颜色；渐变模式下作为起点\"},colorEnd:{type:ControlType.Color,title:\"渐变终点色\",defaultValue:\"#87BBFF\",hidden:props=>!props.colorMode},intensity:{type:ControlType.Number,title:\"亮度\",defaultValue:1,min:0,max:2,step:.05},countMultiplier:{type:ControlType.Number,title:\"数量倍数\",defaultValue:1.5,min:.25,max:6,step:.25,displayStepper:true},minSize:{type:ControlType.Number,title:\"最小尺寸\",defaultValue:.5,min:.5,max:16,step:.5,unit:\"px\"},maxSize:{type:ControlType.Number,title:\"最大尺寸\",defaultValue:5,min:3,max:20,step:.5,unit:\"px\"},medianSize:{type:ControlType.Number,title:\"尺寸中位数\",defaultValue:1,min:.5,max:20,step:.5,unit:\"px\"},minLength:{type:ControlType.Number,title:\"最短长度\",defaultValue:1,min:1,max:160,step:1,unit:\"px\"},maxLength:{type:ControlType.Number,title:\"最长长度\",defaultValue:1,min:1,max:200,step:1,unit:\"px\"},medianLength:{type:ControlType.Number,title:\"长度中位数\",defaultValue:1,min:1,max:200,step:1,unit:\"px\"},density:{type:ControlType.Number,title:\"疏密对比\",defaultValue:.2,min:0,max:1,step:.01},orbitWidth:{type:ControlType.Number,title:\"轨道宽度\",defaultValue:.45,min:.15,max:.7,step:.01},orbitHeight:{type:ControlType.Number,title:\"轨道高度\",defaultValue:.34,min:.12,max:.6,step:.01},tilt:{type:ControlType.Number,title:\"倾斜角度\",defaultValue:-10.5,min:-90,max:90,step:.5,unit:\"\\xb0\"},bend:{type:ControlType.Number,title:\"弯曲幅度\",defaultValue:0,min:0,max:.15,step:.005},bundleWidth:{type:ControlType.Number,title:\"粒子束宽\",defaultValue:.65,min:.02,max:.65,step:.01},speed:{type:ControlType.Number,title:\"运动速度\",defaultValue:1.15,min:0,max:3,step:.05,unit:\"\\xd7\"},autoMorph:{type:ControlType.Boolean,title:\"自动变换\",defaultValue:false,enabledTitle:\"开启\",disabledTitle:\"关闭\"},autoPeriod:{type:ControlType.Number,title:\"变换周期\",defaultValue:24,min:8,max:120,step:1,unit:\"秒\"},autoAmount:{type:ControlType.Number,title:\"变换幅度\",defaultValue:.6,min:0,max:1,step:.01},// ============ 滚动控制 ============\nvisibilityMode:{type:ControlType.Enum,title:\"可见模式\",defaultValue:\"always\",options:[\"always\",\"scroll\"],optionTitles:[\"始终显示\",\"随滚动\"],description:\"单独用选「始终」；组合成滚动故事选「随滚动」\"},startProgress:{type:ControlType.Number,title:\"开始进度\",defaultValue:0,min:0,max:1,step:.01,description:\"页面滚动到此进度时开始淡入（0=顶部, 1=底部）\"},endProgress:{type:ControlType.Number,title:\"结束进度\",defaultValue:.15,min:0,max:1,step:.01,description:\"页面滚动到此进度时完全淡出\"},fadeRange:{type:ControlType.Number,title:\"过渡区比例\",defaultValue:.4,min:.02,max:.5,step:.01,description:\"淡入淡出各占区间长度的比例，越大越柔和\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"FlowFieldParticles\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./Flow_Field.map"],"mappings":"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"}