{"version":3,"file":"ScrollInvertVideo.DzzZGpaY.mjs","names":["useRef","useState","useMemo","useCallback","React.Fragment","useLayoutEffect","useEffect","useRef","useState"],"sources":["https:/framerusercontent.com/modules/tLeGWF6mMgQwegxlAMwb/SE1atK5Pp5kG9SZmeEkk/Text_Reveal.js","https:/framerusercontent.com/modules/u7RFD2NuyBoj4MxdlORa/aCZaJ25tft9PldqH683K/ScrollInvertVideo.js"],"sourcesContent":["/**\n * Scroll Text Reveal\n * Text that fades in character-by-character (or word / line) as you scroll,\n * with a soft feathered edge — like the MONOLOG-style reveal.\n *\n * @framerSupportedLayoutWidth any-prefer-fixed\n * @framerSupportedLayoutHeight any-prefer-auto\n * @framerIntrinsicWidth 640\n * @framerIntrinsicHeight 240\n */import{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import*as React from\"react\";import{useCallback,useEffect,useLayoutEffect,useMemo,useRef,useState}from\"react\";import{addPropertyControls,ControlType,RenderTarget}from\"framer\";import{useScroll,useSpring}from\"framer-motion\";const useIsoLayoutEffect=typeof window!==\"undefined\"?useLayoutEffect:useEffect;const EASE={linear:t=>t,easeIn:t=>t*t,easeOut:t=>1-(1-t)*(1-t),easeInOut:t=>t<.5?2*t*t:1-Math.pow(-2*t+2,2)/2};const clamp=(v,a=0,b=1)=>Math.min(b,Math.max(a,v));const seeded=i=>{const x=Math.sin(i*12.9898+78.233)*43758.5453;return x-Math.floor(x);};const toPx=(v,fallback)=>{if(typeof v===\"number\")return v;if(typeof v===\"string\"){const n=parseFloat(v);if(!Number.isNaN(n))return n;}return fallback;};export default function ScrollTextReveal(props){const{text,tag,font,color,sizing,minFontSize,maxFontSize,verticalAlign,split,direction,stagger,softness,easing,fromOpacity,blur,offsetY,fromScale,startText,startViewport,endText,endViewport,smoothing,once,indent,indentApply,preview,style}=props;const isCanvas=RenderTarget.current()===RenderTarget.canvas;const Tag=tag;const rootRef=useRef(null);const textRef=useRef(null);const measureRef=useRef(null);const unitRefs=useRef([]);const keysRef=useRef([]);const progressRef=useRef(isCanvas?preview/100:0);const maxProgressRef=useRef(0);const[fitSize,setFitSize]=useState(null);const[frameIsAuto,setFrameIsAuto]=useState(false);const baseFontSize=toPx(font?.fontSize,48);const fontSize=sizing===\"fixed\"?baseFontSize:fitSize??baseFontSize;const useFrame=sizing===\"fitFrame\"&&!frameIsAuto;// ---- Structure: paragraphs → words → (chars) ----\nconst indentPct=clamp(indent||0,0,90);const isIndented=pi=>indentPct>0&&(indentApply===\"all\"||pi===0);const paragraphs=useMemo(()=>(text||\"\").split(\"\\n\").map(p=>p.split(\" \")),[text]);const unitCount=useMemo(()=>{let n=0;for(const words of paragraphs){if(words.length===1&&words[0]===\"\")continue;for(const w of words)n+=split===\"char\"?Array.from(w).length:1;}return n;},[paragraphs,split]);// ---- Apply progress to every unit (direct DOM writes, no re-render) ----\nconst apply=useCallback(p=>{const keys=keysRef.current;const els=unitRefs.current;const s=Math.max(.001,softness);const ease=EASE[easing]||EASE.linear;const hasTransform=offsetY!==0||fromScale!==1;for(let i=0;i<unitCount;i++){const el=els[i];if(!el)continue;const k=keys[i]??i/Math.max(1,unitCount-1);const t=ease(clamp((p-k*(1-s))/s));const inv=1-t;el.style.opacity=String(fromOpacity+(1-fromOpacity)*t);el.style.transform=hasTransform?`translate3d(0, ${offsetY*inv}px, 0) scale(${1+(fromScale-1)*inv})`:\"\";el.style.filter=blur>0&&inv>.001?`blur(${blur*inv}px)`:\"\";}},[unitCount,softness,easing,fromOpacity,offsetY,fromScale,blur]);// ---- Measure unit positions → reveal order keys ----\nconst measure=useCallback(()=>{const box=textRef.current;if(!box)return;const els=unitRefs.current.slice(0,unitCount);const n=els.length;if(!n)return;const W=box.clientWidth||1;const H=box.clientHeight||1;const pos=els.map(el=>el?{x:el.offsetLeft+el.offsetWidth/2,y:el.offsetTop+el.offsetHeight/2,h:el.offsetHeight}:{x:0,y:0,h:0});// Group units into visual lines\nconst hs=pos.map(p=>p.h).filter(Boolean).sort((a,b)=>a-b);const tol=(hs[Math.floor(hs.length/2)]||fontSize)*.5;const lineYs=[];const lineOf=pos.map(p=>{let idx=lineYs.findIndex(y=>Math.abs(y-p.y)<tol);if(idx===-1){lineYs.push(p.y);idx=lineYs.length-1;}return idx;});const order=lineYs.map((y,i)=>({y,i})).sort((a,b)=>a.y-b.y);const rank=[];order.forEach((o,r)=>rank[o.i]=r);const line=lineOf.map(l=>rank[l]);let keys=pos.map((p,i)=>{const xn=p.x/W;const yn=p.y/H;switch(direction){case\"reading\":return i;case\"reverse\":return n-1-i;case\"ltr\":return xn+stagger*line[i];case\"rtl\":return 1-xn+stagger*line[i];case\"ttb\":return line[i]+stagger*xn;case\"btt\":return-line[i]+stagger*xn;case\"center\":return Math.hypot(xn-.5,(yn-.5)*(H/W));case\"edges\":return-Math.hypot(xn-.5,(yn-.5)*(H/W));case\"random\":return seeded(i);default:return i;}});// Line mode: every unit on a line shares the line's average key\nif(split===\"line\"){const sum={};const cnt={};keys.forEach((k,i)=>{sum[line[i]]=(sum[line[i]]||0)+k;cnt[line[i]]=(cnt[line[i]]||0)+1;});keys=keys.map((_,i)=>sum[line[i]]/cnt[line[i]]);}const min=Math.min(...keys);const max=Math.max(...keys);const range=max-min||1;keysRef.current=keys.map(k=>(k-min)/range);apply(progressRef.current);},[unitCount,direction,stagger,split,fontSize,apply]);// ---- Auto font size: fill width / fit inside frame ----\nconst fit=useCallback(()=>{if(sizing===\"fixed\")return;const root=rootRef.current;const m=measureRef.current;if(!root||!m)return;const W=root.clientWidth;if(W<=0)return;const H=root.clientHeight;let size;if(sizing===\"fitFrame\"&&H<=1&&!frameIsAuto){// Height is \"Fit Content\": there is no box to fit into → fall back to Fill Width\nsetFrameIsAuto(true);return;}if(sizing===\"fillWidth\"||frameIsAuto){m.style.whiteSpace=\"pre\";m.style.width=\"max-content\";m.style.fontSize=\"100px\";size=Infinity;Array.from(m.children).forEach((child,pi)=>{const el=child;el.style.textIndent=\"0px\";const w=el.offsetWidth;if(!w)return;const avail=isIndented(pi)?W*(1-indentPct/100):W;size=Math.min(size,100*avail/w);});if(!Number.isFinite(size))size=baseFontSize;}else{m.style.whiteSpace=\"pre-wrap\";m.style.width=W+\"px\";Array.from(m.children).forEach((child,pi)=>{child.style.textIndent=isIndented(pi)?`${indentPct}%`:\"0px\";});let lo=minFontSize;let hi=maxFontSize;for(let i=0;i<18;i++){const mid=(lo+hi)/2;m.style.fontSize=mid+\"px\";if(m.scrollHeight<=H&&m.scrollWidth<=W)lo=mid;else hi=mid;}size=lo;}size=clamp(size*.995,minFontSize,maxFontSize);setFitSize(prev=>prev!=null&&Math.abs(prev-size)<.25?prev:size);},[sizing,minFontSize,maxFontSize,frameIsAuto,indentPct,indentApply,baseFontSize]);useEffect(()=>setFrameIsAuto(false),[sizing]);useIsoLayoutEffect(()=>{fit();},[fit,text,font]);useIsoLayoutEffect(()=>{measure();},[measure,fontSize,text,font,indentPct,indentApply]);// Re-fit / re-measure on resize and after web fonts load\nuseEffect(()=>{const root=rootRef.current;if(!root||typeof ResizeObserver===\"undefined\")return;let raf=0;const ro=new ResizeObserver(()=>{cancelAnimationFrame(raf);raf=requestAnimationFrame(()=>{fit();measure();});});ro.observe(root);document.fonts?.ready?.then(()=>{fit();measure();});return()=>{cancelAnimationFrame(raf);ro.disconnect();};},[fit,measure]);// ---- Scroll ----\nconst{scrollYProgress}=useScroll({target:rootRef,offset:[`${startText/100} ${startViewport/100}`,`${endText/100} ${endViewport/100}`]});const smooth=useSpring(scrollYProgress,{stiffness:420-smoothing*360,damping:40,mass:.4+smoothing,restDelta:1e-4});useEffect(()=>{if(isCanvas){progressRef.current=preview/100;apply(progressRef.current);return;}const reduce=typeof window!==\"undefined\"&&window.matchMedia?.(\"(prefers-reduced-motion: reduce)\").matches;if(reduce){progressRef.current=1;apply(1);return;}const src=smoothing>0?smooth:scrollYProgress;const handle=v=>{let p=clamp(v);if(once){maxProgressRef.current=Math.max(maxProgressRef.current,p);p=maxProgressRef.current;}progressRef.current=p;apply(p);};handle(src.get());return src.on(\"change\",handle);},[isCanvas,preview,smoothing,smooth,scrollYProgress,once,apply]);// ---- Render ----\nconst{fontSize:_fs,...fontRest}=font||{};const textStyle={...fontRest,fontSize,color,margin:0,padding:0,width:\"100%\",position:\"relative\",whiteSpace:sizing===\"fillWidth\"||frameIsAuto?\"nowrap\":\"normal\",overflowWrap:\"normal\"};// textIndent is inherited — reset it so inline-block words/chars don't indent themselves\nconst wordStyle={display:\"inline-block\",whiteSpace:\"nowrap\",textIndent:0};const unitStyle={display:\"inline-block\",textIndent:0,opacity:isCanvas?undefined:fromOpacity,willChange:blur>0?\"opacity, transform, filter\":\"opacity, transform\"};let ui=0;const setRef=i=>el=>{unitRefs.current[i]=el;};const content=paragraphs.map((words,pi)=>/*#__PURE__*/_jsx(\"span\",{style:{display:\"block\",textIndent:isIndented(pi)?`${indentPct}%`:0},children:words.length===1&&words[0]===\"\"?\"\\xa0\":words.map((w,wi)=>/*#__PURE__*/_jsxs(React.Fragment,{children:[split===\"char\"?/*#__PURE__*/_jsx(\"span\",{style:wordStyle,children:Array.from(w).map((ch,ci)=>/*#__PURE__*/_jsx(\"span\",{ref:setRef(ui++),style:unitStyle,children:ch},ci))}):/*#__PURE__*/_jsx(\"span\",{ref:setRef(ui++),style:{...wordStyle,...unitStyle},children:w}),wi<words.length-1?\" \":null]},wi))},pi));const textEl=/*#__PURE__*/_jsx(Tag,{ref:textRef,style:textStyle,\"aria-label\":text,children:/*#__PURE__*/_jsx(\"span\",{\"aria-hidden\":\"true\",children:content})});return /*#__PURE__*/_jsxs(\"div\",{ref:rootRef,style:{...style,position:\"relative\",minWidth:sizing===\"fixed\"?undefined:1},children:[useFrame?/*#__PURE__*/_jsx(\"div\",{style:{position:\"absolute\",inset:0,display:\"flex\",flexDirection:\"column\",justifyContent:verticalAlign},children:textEl}):textEl,/*#__PURE__*/_jsx(\"div\",{\"aria-hidden\":\"true\",style:{position:\"absolute\",top:0,left:0,width:0,height:0,overflow:\"hidden\",visibility:\"hidden\",pointerEvents:\"none\"},children:/*#__PURE__*/_jsx(\"div\",{ref:measureRef,style:{...fontRest,position:\"absolute\",top:0,left:0,margin:0,padding:0,overflowWrap:\"normal\"},children:(text||\"\").split(\"\\n\").map((para,pi)=>/*#__PURE__*/_jsx(\"div\",{style:{width:sizing===\"fitFrame\"&&!frameIsAuto?\"auto\":\"max-content\"},children:para||\"\\xa0\"},pi))})})]});}ScrollTextReveal.displayName=\"Scroll Text Reveal\";addPropertyControls(ScrollTextReveal,{text:{type:ControlType.String,title:\"Text\",displayTextArea:true,defaultValue:\"Great ideas deserve a presence as bold as what you're building. Most teams have made something remarkable, but their story doesn't show it yet.\\n\\nThat gap costs more than attention. It costs the certainty that you're finally being understood.\"},tag:{type:ControlType.Enum,title:\"Tag\",options:[\"h1\",\"h2\",\"h3\",\"p\",\"div\"],defaultValue:\"p\"},font:{type:ControlType.Font,title:\"Font\",controls:\"extended\",defaultFontType:\"sans-serif\",defaultValue:{fontSize:44,lineHeight:\"1.1em\",letterSpacing:\"-0.02em\"}},color:{type:ControlType.Color,title:\"Color\",defaultValue:\"#111111\"},// --- Sizing ---\nsizing:{type:ControlType.Enum,title:\"Font Size\",options:[\"fixed\",\"fillWidth\",\"fitFrame\"],optionTitles:[\"Fixed (from Font)\",\"Fill Width\",\"Fit Frame\"],defaultValue:\"fixed\",description:\"Fill Width: lines scale to span the width. Fit Frame: largest size that fits the box (needs fixed/fill height).\"},minFontSize:{type:ControlType.Number,title:\"Min Size\",min:4,max:400,defaultValue:12,unit:\"px\",hidden:p=>p.sizing===\"fixed\"},maxFontSize:{type:ControlType.Number,title:\"Max Size\",min:8,max:1e3,defaultValue:320,unit:\"px\",hidden:p=>p.sizing===\"fixed\"},verticalAlign:{type:ControlType.Enum,title:\"V Align\",options:[\"flex-start\",\"center\",\"flex-end\"],optionTitles:[\"Top\",\"Center\",\"Bottom\"],displaySegmentedControl:true,defaultValue:\"flex-start\",hidden:p=>p.sizing!==\"fitFrame\"},indent:{type:ControlType.Number,title:\"First Line Indent\",min:0,max:90,step:.5,defaultValue:0,unit:\"%\",description:\"Indent of the first line, as % of the component width.\"},indentApply:{type:ControlType.Enum,title:\"Indent On\",options:[\"first\",\"all\"],optionTitles:[\"First Para\",\"Every Para\"],displaySegmentedControl:true,defaultValue:\"first\",hidden:p=>!p.indent},// --- Reveal ---\nsplit:{type:ControlType.Enum,title:\"Split By\",options:[\"char\",\"word\",\"line\"],optionTitles:[\"Char\",\"Word\",\"Line\"],displaySegmentedControl:true,defaultValue:\"char\"},direction:{type:ControlType.Enum,title:\"Direction\",options:[\"ltr\",\"rtl\",\"ttb\",\"btt\",\"reading\",\"reverse\",\"center\",\"edges\",\"random\"],optionTitles:[\"Left → Right\",\"Right → Left\",\"Top → Bottom\",\"Bottom → Top\",\"Reading Order\",\"Reverse Order\",\"Center Out\",\"Edges In\",\"Random\"],defaultValue:\"ltr\"},stagger:{type:ControlType.Number,title:\"Line Stagger\",min:0,max:2,step:.05,defaultValue:.2,description:\"Diagonal offset between lines (L/R) or spread within a line (T/B).\",hidden:p=>![\"ltr\",\"rtl\",\"ttb\",\"btt\"].includes(p.direction)},softness:{type:ControlType.Number,title:\"Softness\",min:0,max:1,step:.01,defaultValue:.15,description:\"Width of the feathered reveal edge.\"},easing:{type:ControlType.Enum,title:\"Easing\",options:[\"linear\",\"easeOut\",\"easeInOut\",\"easeIn\"],optionTitles:[\"Linear\",\"Ease Out\",\"Ease In Out\",\"Ease In\"],defaultValue:\"linear\"},fromOpacity:{type:ControlType.Number,title:\"From Opacity\",min:0,max:1,step:.01,defaultValue:.15},blur:{type:ControlType.Number,title:\"From Blur\",min:0,max:30,step:.5,defaultValue:0,unit:\"px\"},offsetY:{type:ControlType.Number,title:\"From Y\",min:-100,max:100,step:1,defaultValue:0,unit:\"px\"},fromScale:{type:ControlType.Number,title:\"From Scale\",min:0,max:2,step:.01,defaultValue:1},// --- Viewport / scroll range ---\nstartText:{type:ControlType.Number,title:\"Start: Text\",min:0,max:100,defaultValue:0,unit:\"%\",description:\"Starts when this point of the text (0% = top)…\"},startViewport:{type:ControlType.Number,title:\"Start: Viewport\",min:0,max:100,defaultValue:90,unit:\"%\",description:\"…reaches this point of the viewport (100% = bottom).\"},endText:{type:ControlType.Number,title:\"End: Text\",min:0,max:100,defaultValue:100,unit:\"%\"},endViewport:{type:ControlType.Number,title:\"End: Viewport\",min:0,max:100,defaultValue:60,unit:\"%\"},smoothing:{type:ControlType.Number,title:\"Smoothing\",min:0,max:1,step:.05,defaultValue:.3},once:{type:ControlType.Boolean,title:\"Play Once\",defaultValue:false,enabledTitle:\"Yes\",disabledTitle:\"No\"},preview:{type:ControlType.Number,title:\"Canvas Preview\",min:0,max:100,defaultValue:50,unit:\"%\",description:\"Reveal progress shown on the canvas only.\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"ScrollTextReveal\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./Text_Reveal.map","import{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{useEffect,useRef,useState}from\"react\";import{addPropertyControls,ControlType,RenderTarget}from\"framer\";const clamp01=v=>v<0?0:v>1?1:v;/**\n * Threshold invert: a pixel turns negative once its luminance is below the\n * threshold, which rises from 0 to past 1 as `p` goes 0 → 1. `soft` is the\n * width of the transition band between normal and negative pixels.\n */function thresholdMatrix(p,soft){const s=Math.max(.01,soft);const k=1/s;const t=p*(1+s);return`0 0 0 0 1  0 0 0 0 1  0 0 0 0 1  ${(-.2126*k).toFixed(4)} ${(-.7152*k).toFixed(4)} ${(-.0722*k).toFixed(4)} 0 ${(t*k).toFixed(4)}`;}/**\n * @framerSupportedLayoutWidth any-prefer-fixed\n * @framerSupportedLayoutHeight any-prefer-fixed\n * @framerIntrinsicWidth 1200\n * @framerIntrinsicHeight 800\n */export default function ScrollInvertVideo(props){const{video=\"https://framerusercontent.com/assets/MLWPbW1dUQawJLhhun3dBwpgJak.mp4\",poster,fit,muted,background,invert,invertOn,invertStyle,start,end,amount,softness,canvasPreview,stripes:stripesOn,stripeCount,stripeBand,stripeTaper,stripeStart,stripeEnd,stripeMerge,stripeThin,style}=props;const isCanvas=RenderTarget.current()===RenderTarget.canvas;const rootRef=useRef(null);const mediaRef=useRef(null);const coverRef=useRef(null);const videoRef=useRef(null);const matrixRef=useRef(null);const amountRef=useRef(null);const[filterId]=useState(()=>\"siv-\"+Math.random().toString(36).slice(2,9));const[inView,setInView]=useState(false);// Phones/tablets: mobile Safari can't run the SVG (Threshold) filter on\n// video — it skips it or renders it on the CPU and stutters — so touch\n// devices use the GPU-friendly CSS invert() instead.\nconst[touch]=useState(()=>typeof window!==\"undefined\"&&!!window.matchMedia?.(\"(pointer: coarse)\").matches);/** Write the invert for progress 0..1 straight to the DOM. *//**\n     * Stripe Reveal for progress q 0..1: a gradient mask on the media. Opaque\n     * = shown, transparent = hidden. Positions are % of the media's height.\n     *//**\n     * Stripe Reveal geometry for progress q 0..1, in % of the media's height:\n     * hidden above `top`, then per cell a media gap followed by a bar\n     * [b0, b1] (the background shows through the bars).\n     */const revealGeometry=q=>{const n=Math.max(1,Math.round(stripeCount??5));const band=Math.max(1,stripeBand??30)// % of the height\n;const taper=Math.max(.1,stripeTaper??1);const p=clamp01(q);const cell=band/n;// Merge: the media gaps between the bars close up as the reveal goes\n// on, so the bars fuse with each other and with the solid black above\nconst squeeze=1-clamp01(stripeMerge??1)*p;// Thin: the bars themselves get thinner as the reveal goes on\nconst thin=1-clamp01(stripeThin??0)*p;const bars=[];const gaps=[];for(let k=0;k<n;k++){const bar=cell*Math.pow(1-(k+1)/(n+1),taper)// thins out going down\n;bars.push(bar*thin);gaps.push((cell-bar)*squeeze);}const bandNow=bars.reduce((a,b)=>a+b,0)+gaps.reduce((a,b)=>a+b,0);// Hidden above this line; the whole band has left the top at p = 1\nconst top=(1-p)*100-p*bandNow;const cells=[];let y=top;for(let k=0;k<n;k++){const b0=y+gaps[k];const b1=b0+bars[k];cells.push({y,b0,b1});y=b1;}return{top,cells};};/**\n     * Stripe Reveal for progress q 0..1.\n     * Desktop: a gradient mask on the media (opaque = shown).\n     * Touch: bars in the background colour laid over the media and moved with\n     * GPU transforms, so the video never has to repaint while scrolling.\n     */const paintReveal=q=>{const media=mediaRef.current;if(!media)return;if(touch){const cover=coverRef.current;if(!cover)return;if(!stripesOn||q>=1){cover.style.display=\"none\";return;}cover.style.display=\"\";const{top,cells}=revealGeometry(q);const els=cover.children;const set=(el,from,to)=>{if(!el)return;el.style.transform=`translate3d(0, ${from.toFixed(3)}%, 0) scaleY(${Math.max(0,(to-from)/100).toFixed(5)})`;};set(els[0],top-100,top+.05)// solid block above the edge\n;// a hair of overlap so fused bars never show a sub-pixel seam\ncells.forEach((c,k)=>set(els[k+1],c.b0-.05,c.b1+.05));return;}if(!stripesOn||q>=1){media.style.maskImage=\"\";media.style.webkitMaskImage=\"\";return;}const{top,cells}=revealGeometry(q);const f=v=>v.toFixed(3)+\"%\";const stops=[`transparent ${f(top)}`];let y=top;for(const c of cells){// Each cell: a media gap, then a black bar\nstops.push(`#000 ${f(c.y)}`,`#000 ${f(c.b0)}`,`transparent ${f(c.b0)}`,`transparent ${f(c.b1)}`);y=c.b1;}stops.push(`#000 ${f(y)}`);const g=`linear-gradient(to bottom, ${stops.join(\", \")})`;media.style.maskImage=g;media.style.webkitMaskImage=g;};const paint=raw=>{const media=mediaRef.current;if(!media)return;const a=clamp01(amount);const p=invert?clamp01(raw):0;if(p<=.001||a<=.001){media.style.filter=\"\";return;}if(invertStyle===\"fade\"||touch){media.style.filter=`invert(${(p*a).toFixed(3)})`;return;}matrixRef.current?.setAttribute(\"values\",thresholdMatrix(p,softness));amountRef.current?.setAttribute(\"slope\",String(a));media.style.filter=`url(#${filterId})`;};// Canvas: show the Canvas Preview amount, no scrolling involved.\nuseEffect(()=>{if(isCanvas)paint(canvasPreview);// eslint-disable-next-line react-hooks/exhaustive-deps\n},[isCanvas,canvasPreview,invert,invertStyle,amount,softness]);// Track visibility: drives scroll work and video playback.\nuseEffect(()=>{const el=rootRef.current;if(!el||isCanvas||typeof IntersectionObserver===\"undefined\")return;const io=new IntersectionObserver(([e])=>setInView(e.isIntersecting));io.observe(el);return()=>io.disconnect();},[isCanvas]);// Scroll-linked invert, only while on screen.\nuseEffect(()=>{const el=rootRef.current;if(!el||isCanvas||!inView)return;let raf=0;const update=()=>{raf=0;const r=el.getBoundingClientRect();const span=Math.max(.01,end-start);// Share of the height scrolled into view from the bottom\nconst entered=r.height>0?(window.innerHeight-r.top)/r.height:1;if(stripesOn){const rs=stripeStart??0;paintReveal((entered-rs)/Math.max(.01,(stripeEnd??1)-rs));}if(invertOn===\"in\"){paint(1-(entered-start)/span);}else{const scrolled=r.height>0?-r.top/r.height:0;paint((scrolled-start)/span);}};const onScroll=()=>{if(!raf)raf=requestAnimationFrame(update);};update();window.addEventListener(\"scroll\",onScroll,{passive:true});window.addEventListener(\"resize\",onScroll);return()=>{window.removeEventListener(\"scroll\",onScroll);window.removeEventListener(\"resize\",onScroll);if(raf)cancelAnimationFrame(raf);};// eslint-disable-next-line react-hooks/exhaustive-deps\n},[inView,isCanvas,start,end,invert,invertOn,invertStyle,amount,softness,stripesOn,stripeCount,stripeBand,stripeTaper,stripeStart,stripeEnd,stripeMerge,stripeThin]);// Scroll In / Stripe Reveal: start from the \"before\" state, so nothing\n// flashes before it's on screen. (The scroll effect takes over in view.)\nuseEffect(()=>{if(isCanvas)return paintReveal(1);if(invertOn===\"in\")paint(1);if(stripesOn&&!inView)paintReveal(0);// eslint-disable-next-line react-hooks/exhaustive-deps\n},[isCanvas,invertOn,stripesOn]);// Play only while visible and the tab is shown.\nuseEffect(()=>{const v=videoRef.current;if(!v||isCanvas)return;const sync=()=>{if(inView&&document.visibilityState===\"visible\")v.play().catch(()=>{});else v.pause();};sync();document.addEventListener(\"visibilitychange\",sync);return()=>document.removeEventListener(\"visibilitychange\",sync);},[inView,isCanvas,video]);return /*#__PURE__*/_jsxs(\"div\",{ref:rootRef,style:{...style,position:\"relative\",width:\"100%\",height:\"100%\",overflow:\"hidden\",background},children:[/*#__PURE__*/_jsx(\"svg\",{\"aria-hidden\":true,width:\"0\",height:\"0\",style:{position:\"absolute\"},children:/*#__PURE__*/_jsxs(\"filter\",{id:filterId,x:\"0\",y:\"0\",width:\"1\",height:\"1\",colorInterpolationFilters:\"sRGB\",children:[/*#__PURE__*/_jsx(\"feColorMatrix\",{ref:matrixRef,in:\"SourceGraphic\",type:\"matrix\",values:\"0 0 0 0 1  0 0 0 0 1  0 0 0 0 1  0 0 0 0 0\",result:\"mask\"}),/*#__PURE__*/_jsx(\"feComponentTransfer\",{in:\"mask\",result:\"mask2\",children:/*#__PURE__*/_jsx(\"feFuncA\",{ref:amountRef,type:\"linear\",slope:\"1\"})}),/*#__PURE__*/_jsxs(\"feComponentTransfer\",{in:\"SourceGraphic\",result:\"neg\",children:[/*#__PURE__*/_jsx(\"feFuncR\",{type:\"table\",tableValues:\"1 0\"}),/*#__PURE__*/_jsx(\"feFuncG\",{type:\"table\",tableValues:\"1 0\"}),/*#__PURE__*/_jsx(\"feFuncB\",{type:\"table\",tableValues:\"1 0\"})]}),/*#__PURE__*/_jsx(\"feComposite\",{in:\"neg\",in2:\"mask2\",operator:\"in\",result:\"negMasked\"}),/*#__PURE__*/_jsxs(\"feMerge\",{children:[/*#__PURE__*/_jsx(\"feMergeNode\",{in:\"SourceGraphic\"}),/*#__PURE__*/_jsx(\"feMergeNode\",{in:\"negMasked\"})]})]})}),/*#__PURE__*/_jsxs(\"div\",{ref:mediaRef,style:{position:\"absolute\",inset:0},children:[poster?.src&&/*#__PURE__*/_jsx(\"img\",{src:poster.src,srcSet:poster.srcSet,sizes:\"100vw\",alt:poster.alt||\"\",style:{...mediaStyle,objectFit:fit}}),video&&!isCanvas?/*#__PURE__*/_jsx(\"video\",{ref:videoRef,src:video,poster:poster?.src,muted:muted,loop:true,playsInline:true,autoPlay:true,preload:\"auto\",disablePictureInPicture:true,style:{...mediaStyle,objectFit:fit}}):null,video&&isCanvas&&!poster?.src?/*#__PURE__*/_jsx(\"video\",{src:video,muted:true,playsInline:true,preload:\"metadata\",style:{...mediaStyle,objectFit:fit}}):null]}),stripesOn&&!isCanvas?/*#__PURE__*/_jsx(\"div\",{ref:coverRef,\"aria-hidden\":true,style:{position:\"absolute\",inset:0,overflow:\"hidden\",pointerEvents:\"none\",display:\"none\"},children:Array.from({length:Math.max(1,Math.round(stripeCount??5))+1},(_,k)=>/*#__PURE__*/_jsx(\"div\",{style:{position:\"absolute\",left:0,top:0,width:\"100%\",height:\"100%\",background,transformOrigin:\"0 0\",transform:\"scaleY(0)\",willChange:\"transform\"}},k))}):null]});}const mediaStyle={position:\"absolute\",inset:0,width:\"100%\",height:\"100%\",display:\"block\",pointerEvents:\"none\"};ScrollInvertVideo.defaultProps={fit:\"cover\",muted:true,background:\"#000000\",invert:true,invertOn:\"out\",invertStyle:\"threshold\",start:0,end:.6,amount:1,softness:.12,canvasPreview:0,stripes:false,stripeCount:5,stripeBand:30,stripeTaper:1,stripeStart:0,stripeEnd:1,stripeMerge:1,stripeThin:0};ScrollInvertVideo.displayName=\"Scroll Invert Video\";addPropertyControls(ScrollInvertVideo,{video:{type:ControlType.File,title:\"Video\",allowedFileTypes:[\"mp4\",\"webm\",\"mov\"]},poster:{type:ControlType.ResponsiveImage,title:\"Poster\"},fit:{type:ControlType.Enum,title:\"Fit\",options:[\"cover\",\"contain\"],optionTitles:[\"Cover\",\"Contain\"],defaultValue:\"cover\",displaySegmentedControl:true},muted:{type:ControlType.Boolean,title:\"Muted\",defaultValue:true,description:\"Browsers only autoplay muted video.\"},background:{type:ControlType.Color,title:\"Background\",defaultValue:\"#000000\"},invert:{type:ControlType.Boolean,title:\"Invert\",defaultValue:true},invertOn:{type:ControlType.Enum,title:\"Invert On\",options:[\"out\",\"in\"],optionTitles:[\"Scroll Out\",\"Scroll In\"],defaultValue:\"out\",displaySegmentedControl:true,description:\"Scroll Out: turns negative as it leaves past the top. Scroll In: negative while it enters from the bottom, normal once in place.\",hidden:p=>p.invert===false},invertStyle:{type:ControlType.Enum,title:\"Style\",options:[\"threshold\",\"fade\"],optionTitles:[\"Threshold\",\"Fade\"],defaultValue:\"threshold\",displaySegmentedControl:true,description:\"Threshold: darkest areas flip first, no grey. Fade: classic invert through grey.\",hidden:p=>p.invert===false},start:{type:ControlType.Number,title:\"Start\",min:0,max:1,step:.05,defaultValue:0,description:\"Share of the video's height scrolled (out past the top, or in from the bottom) before the change begins.\",hidden:p=>p.invert===false},end:{type:ControlType.Number,title:\"End\",min:.05,max:1,step:.05,defaultValue:.6,description:\"Share scrolled when the change is complete (fully negative, or fully normal for Scroll In).\",hidden:p=>p.invert===false},amount:{type:ControlType.Number,title:\"Amount\",min:0,max:1,step:.05,defaultValue:1,hidden:p=>p.invert===false},softness:{type:ControlType.Number,title:\"Edge\",min:.01,max:.6,step:.01,defaultValue:.12,description:\"Low: hard, posterized edge. High: smoother blend.\",hidden:p=>p.invert===false||p.invertStyle===\"fade\"},canvasPreview:{type:ControlType.Number,title:\"Canvas Preview\",min:0,max:1,step:.05,defaultValue:0,description:\"Canvas only: preview the invert at this progress.\",hidden:p=>p.invert===false},stripes:{type:ControlType.Boolean,title:\"Stripe Reveal\",defaultValue:false,description:\"Horizontal bars sweep up and reveal the media as it scrolls in from the bottom.\"},stripeCount:{type:ControlType.Number,title:\"Stripes\",min:1,max:20,step:1,defaultValue:5,hidden:p=>!p.stripes},stripeBand:{type:ControlType.Number,title:\"Band\",min:5,max:100,step:1,unit:\"%\",defaultValue:30,description:\"Height of the striped zone, as a share of the media.\",hidden:p=>!p.stripes},stripeTaper:{type:ControlType.Number,title:\"Taper\",min:.2,max:4,step:.1,defaultValue:1,description:\"Higher: bars thin out faster toward the bottom.\",hidden:p=>!p.stripes},stripeStart:{type:ControlType.Number,title:\"Reveal Start\",min:0,max:1,step:.05,defaultValue:0,description:\"Share of the height scrolled in from the bottom when the reveal begins…\",hidden:p=>!p.stripes},stripeEnd:{type:ControlType.Number,title:\"Reveal End\",min:.05,max:1.5,step:.05,defaultValue:1,description:\"…and when the media is fully shown.\",hidden:p=>!p.stripes},stripeMerge:{type:ControlType.Number,title:\"Merge\",min:0,max:1,step:.05,defaultValue:1,description:\"How much the gaps between the bars close as the reveal goes on. 1: the bars fuse into one solid shape. 0: fixed pattern.\",hidden:p=>!p.stripes},stripeThin:{type:ControlType.Number,title:\"Thin\",min:0,max:1,step:.05,defaultValue:0,description:\"How much the black bars thin out as the reveal goes on. 0: they keep their size. 1: they shrink to nothing by the end.\",hidden:p=>!p.stripes}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"ScrollInvertVideo\",\"slots\":[],\"annotations\":{\"framerIntrinsicHeight\":\"800\",\"framerContractVersion\":\"1\",\"framerIntrinsicWidth\":\"1200\",\"framerSupportedLayoutWidth\":\"any-prefer-fixed\",\"framerSupportedLayoutHeight\":\"any-prefer-fixed\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./ScrollInvertVideo.map"],"mappings":"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"}