{"version":3,"file":"PartnerLogos.Caf_770M.mjs","names":["useRef","useState","useMemo","__esmMin","init_npm_react_18_3_1","pe","_e","de","init_jsx_runtime","c","ce","useInView","useIsStaticRenderer","addPropertyControls","init_framer_D6uXRwWs","ControlType","mod","n","m","PartnerLogos","DEFAULT_LOGOS","props","isStatic","ref","inView","phase","setPhase","groupIndex","setGroupIndex","animStates","setAnimStates","logosPerRow","paused","setPaused","lastInView","setLastInView","mounted","setMounted","logoList","logos","arr","i","group","timeouts","next","prev","stagger","entryDuration","visibleDuration","exitDuration","style","spacingMode","logoSpacing","state","translateY","opacity","transition","isFile","logo","logoScale","init_PartnerLogos"],"sources":["https:/framerusercontent.com/modules/5HNlf0Qtv90ivoldtRpe/uYciwcZwkwBN7EMXZuef/PartnerLogos.js"],"sourcesContent":["// Partner Logos Looping Animation Component\n// Requirements: 5 logos visible, SVG upload, custom alt, sharp aspect, entry/exit up+fade, staggered, loop, pause on out-of-viewport, all controls\nimport{jsx as _jsx}from\"react/jsx-runtime\";import{useEffect,useRef,useState,useMemo}from\"react\";import{addPropertyControls,ControlType,useInView,useIsStaticRenderer}from\"framer\";const DEFAULT_LOGOS=[{svg:'<svg width=\"64\" height=\"32\" viewBox=\"0 0 64 32\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><rect width=\"64\" height=\"32\" rx=\"8\" fill=\"#0099FF\"/><text x=\"50%\" y=\"50%\" text-anchor=\"middle\" dominant-baseline=\"middle\" font-size=\"14\" fill=\"#fff\">Logo 1</text></svg>',alt:\"Logo 1\"},{svg:'<svg width=\"64\" height=\"32\" viewBox=\"0 0 64 32\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><rect width=\"64\" height=\"32\" rx=\"8\" fill=\"#8855FF\"/><text x=\"50%\" y=\"50%\" text-anchor=\"middle\" dominant-baseline=\"middle\" font-size=\"14\" fill=\"#fff\">Logo 2</text></svg>',alt:\"Logo 2\"},{svg:'<svg width=\"64\" height=\"32\" viewBox=\"0 0 64 32\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><rect width=\"64\" height=\"32\" rx=\"8\" fill=\"#FFBB00\"/><text x=\"50%\" y=\"50%\" text-anchor=\"middle\" dominant-baseline=\"middle\" font-size=\"14\" fill=\"#fff\">Logo 3</text></svg>',alt:\"Logo 3\"},{svg:'<svg width=\"64\" height=\"32\" viewBox=\"0 0 64 32\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><rect width=\"64\" height=\"32\" rx=\"8\" fill=\"#22CC66\"/><text x=\"50%\" y=\"50%\" text-anchor=\"middle\" dominant-baseline=\"middle\" font-size=\"14\" fill=\"#fff\">Logo 4</text></svg>',alt:\"Logo 4\"},{svg:'<svg width=\"64\" height=\"32\" viewBox=\"0 0 64 32\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><rect width=\"64\" height=\"32\" rx=\"8\" fill=\"#FF5588\"/><text x=\"50%\" y=\"50%\" text-anchor=\"middle\" dominant-baseline=\"middle\" font-size=\"14\" fill=\"#fff\">Logo 5</text></svg>',alt:\"Logo 5\"}];const LOGOS_VISIBLE=5;function mod(n,m){return(n%m+m)%m;}/**\n * Partner Logos Looping Animation\n *\n * @framerIntrinsicWidth 480\n * @framerIntrinsicHeight 64\n *\n * @framerSupportedLayoutWidth any-prefer-fixed\n * @framerSupportedLayoutHeight fixed\n */export default function PartnerLogos(props){const{logos=DEFAULT_LOGOS,logoScale=1,spacing=32,entryDuration=.6,visibleDuration=4,exitDuration=.6,stagger=.12,style,logosPerRow=5,spacingMode=\"auto\",logoSpacing=32}=props;const isStatic=useIsStaticRenderer();const ref=useRef(null);const inView=useInView(ref,{amount:.2});const[phase,setPhase]=useState(\"entry\")// entry, visible, exit\n;const[groupIndex,setGroupIndex]=useState(0);const[animStates,setAnimStates]=useState(Array(logosPerRow).fill(\"hidden\"))// hidden, entering, visible, exiting\n;const[paused,setPaused]=useState(false);const[lastInView,setLastInView]=useState(true);const[mounted,setMounted]=useState(false);// Repeat logos if fewer than logosPerRow\nconst logoList=useMemo(()=>{if(!logos||logos.length===0)return DEFAULT_LOGOS;if(logos.length>=logosPerRow)return logos;// Repeat to fill\nconst arr=[];for(let i=0;i<logosPerRow;i++){arr.push(logos[i%logos.length]);}return arr;},[logos,logosPerRow]);// Compute which N logos to show for this group\nconst group=useMemo(()=>{const arr=[];for(let i=0;i<logosPerRow;i++){arr.push(logoList[mod(groupIndex*logosPerRow+i,logoList.length)]);}return arr;},[logoList,groupIndex,logosPerRow]);// Animation state machine\nuseEffect(()=>{if(!mounted)return;if(isStatic){setAnimStates(Array(logosPerRow).fill(\"visible\"));return;}if(!inView){setPaused(true);return;}if(paused){setPaused(false);}let timeouts=[];if(phase===\"entry\"){setAnimStates(Array(logosPerRow).fill(\"hidden\"));setTimeout(()=>{for(let i=0;i<logosPerRow;i++){timeouts.push(setTimeout(()=>{setAnimStates(prev=>{const next=[...prev];next[i]=\"entering\";return next;});},i*stagger*1e3));timeouts.push(setTimeout(()=>{setAnimStates(prev=>{const next=[...prev];next[i]=\"visible\";return next;});},entryDuration*1e3+i*stagger*1e3));}timeouts.push(setTimeout(()=>{setPhase(\"visible\");},entryDuration*1e3+(logosPerRow-1)*stagger*1e3));},20);}else if(phase===\"visible\"){timeouts.push(setTimeout(()=>{setPhase(\"exit\");},visibleDuration*1e3));}else if(phase===\"exit\"){for(let i=0;i<logosPerRow;i++){timeouts.push(setTimeout(()=>{setAnimStates(prev=>{const next=[...prev];next[i]=\"exiting\";return next;});},i*stagger*1e3));timeouts.push(setTimeout(()=>{setAnimStates(prev=>{const next=[...prev];next[i]=\"hidden\";return next;});},exitDuration*1e3+i*stagger*1e3));}timeouts.push(setTimeout(()=>{setGroupIndex(prev=>prev+1);setAnimStates(Array(logosPerRow).fill(\"hidden\"));setPhase(\"entry\");},exitDuration*1e3+(logosPerRow-1)*stagger*1e3));}return()=>{timeouts.forEach(clearTimeout);};},[phase,inView,paused,entryDuration,visibleDuration,exitDuration,stagger,isStatic,mounted,logosPerRow]);// Mount effect to trigger animation after mount\nuseEffect(()=>{setMounted(true);},[]);// Pause/resume on viewport\nuseEffect(()=>{if(lastInView!==inView){setLastInView(inView);if(!inView){setPaused(true);}else{setPaused(false);}}},[inView,lastInView]);// If paused, freeze phase\n// (No-op: handled by not running timeouts when paused)\n// Render\nreturn /*#__PURE__*/_jsx(\"div\",{ref:ref,style:{...style,width:\"100%\",height:\"100%\",display:\"flex\",flexDirection:\"row\",alignItems:\"center\",justifyContent:spacingMode===\"auto\"?\"space-between\":\"flex-start\",gap:spacingMode===\"fixed\"?logoSpacing:undefined,position:\"relative\",overflow:\"hidden\",background:\"transparent\"},children:group.map((logo,i)=>{// Animation state for this logo\nconst state=isStatic?\"visible\":animStates[i];// Animation\nlet translateY=0;let opacity=1;if(state===\"hidden\"){opacity=0;translateY=40;}else if(state===\"entering\"){opacity=1;translateY=0;}else if(state===\"exiting\"){opacity=0;translateY=-40;}// Animate with CSS transitions\nconst transition=state===\"entering\"?`transform ${entryDuration}s cubic-bezier(0.4,0,0.2,1), opacity ${entryDuration}s cubic-bezier(0.4,0,0.2,1)`:state===\"exiting\"?`transform ${exitDuration}s cubic-bezier(0.4,0,0.2,1), opacity ${exitDuration}s cubic-bezier(0.4,0,0.2,1)`:\"none\";// Render SVG as <img src> if svg is a file URL, else inline\nconst isFile=logo.svg&&typeof logo.svg===\"string\"&&logo.svg.trim().startsWith(\"http\");return /*#__PURE__*/_jsx(\"div\",{style:{display:\"flex\",alignItems:\"center\",justifyContent:\"center\",width:\"auto\",height:\"auto\",minWidth:0,minHeight:0,transition,opacity,transform:`translateY(${translateY}px) scale(${logoScale})`,willChange:\"transform,opacity\",pointerEvents:\"none\"},\"aria-hidden\":state!==\"visible\",children:isFile?/*#__PURE__*/_jsx(\"img\",{src:logo.svg,alt:logo.alt||\"Logo\",style:{display:\"block\",width:\"auto\",height:\"auto\",maxWidth:\"100%\",maxHeight:\"100%\",objectFit:\"contain\",aspectRatio:\"auto\"},draggable:false}):/*#__PURE__*/_jsx(\"span\",{style:{display:\"inline-block\",width:\"auto\",height:\"auto\",lineHeight:0,verticalAlign:\"middle\"},dangerouslySetInnerHTML:{__html:logo.svg},\"aria-label\":logo.alt||\"Logo\",role:\"img\"})},i+\"-\"+groupIndex);})});}addPropertyControls(PartnerLogos,{logos:{type:ControlType.Array,title:\"Logos\",control:{type:ControlType.Object,controls:{svg:{type:ControlType.File,allowedFileTypes:[\"svg\"],title:\"SVG File\"},alt:{type:ControlType.String,title:\"Alt Text\",defaultValue:\"Logo\"}}},defaultValue:DEFAULT_LOGOS},logoScale:{type:ControlType.Number,title:\"Logo Scale\",defaultValue:1,min:.2,max:2,step:.01},logosPerRow:{type:ControlType.Number,title:\"Logos per Row\",defaultValue:5,min:1,max:10,step:1},spacingMode:{type:ControlType.Enum,title:\"Spacing Mode\",options:[\"auto\",\"fixed\"],optionTitles:[\"Auto\",\"Fixed\"],defaultValue:\"auto\"},logoSpacing:{type:ControlType.Number,title:\"Logo Spacing\",defaultValue:32,min:0,max:96,step:1,unit:\"px\",hidden:props=>props.spacingMode!==\"fixed\"},entryDuration:{type:ControlType.Number,title:\"Entry Duration\",defaultValue:.6,min:.2,max:2,step:.01,unit:\"s\"},visibleDuration:{type:ControlType.Number,title:\"Visible Duration\",defaultValue:4,min:1,max:10,step:.1,unit:\"s\"},exitDuration:{type:ControlType.Number,title:\"Exit Duration\",defaultValue:.6,min:.2,max:2,step:.01,unit:\"s\"},stagger:{type:ControlType.Number,title:\"Stagger Delay\",defaultValue:.12,min:.05,max:.5,step:.01,unit:\"s\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"PartnerLogos\",\"slots\":[],\"annotations\":{\"framerSupportedLayoutHeight\":\"fixed\",\"framerIntrinsicHeight\":\"64\",\"framerContractVersion\":\"1\",\"framerSupportedLayoutWidth\":\"any-prefer-fixed\",\"framerIntrinsicWidth\":\"480\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./PartnerLogos.map"],"mappings":"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"}