{"version":3,"file":"Carousel3d.DkhWDB5i.mjs","names":["useMemo","useState","useRef","p","useCallback"],"sources":["https:/framerusercontent.com/modules/uJ0OzlA6YxRYrNgETWW4/Xl3BY2SR32u8qDVG4fsr/Carousel3d.js"],"sourcesContent":["import{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{useRef,useEffect,useState,useMemo,useCallback}from\"react\";import{addPropertyControls,ControlType}from\"framer\";import{motion,useMotionValue,useTransform,useAnimationFrame,useInView,animate,AnimatePresence}from\"framer-motion\";/* ── Constants ────────────────────────────────────────────────────── */const BASE_SPEED=12;const INITIAL_SPIN_SPEED=180;const INTRO_SPIN_DURATION=2;const INTRO_SCALE_DURATION=1.2;const INITIAL_SCALE=.1;const INITIAL_ROTATION=12;const FINAL_ROTATION=5;const STAGGER_DURATION=.8;const FADE_DURATION=.5;const MIN_PANELS=6;const MAX_ITEMS=12;const ASPECT_RATIOS=[\"1/1\",\"5/4\",\"3/4\",\"7/5\",\"4/5\",\"1/1\",\"3/4\",\"5/4\",\"4/5\",\"7/5\",\"1/1\",\"3/4\",\"5/4\",\"4/5\"];const expoInOut=t=>{if(t===0||t===1)return t;return t<.5?Math.pow(2,20*t-10)/2:(2-Math.pow(2,-20*t+10))/2;};const expoIn=t=>{if(t===0)return 0;return Math.pow(2,10*t-10);};/* ── MediaSlot sub-component ─────────────────────────────────────── */const PLACEHOLDER=\"__placeholder__\";function MediaSlot({src}){if(src===PLACEHOLDER){return /*#__PURE__*/_jsx(\"div\",{style:{width:\"100%\",height:\"100%\",position:\"absolute\",inset:\"0%\",background:\"#e0e0e0\",display:\"flex\",alignItems:\"center\",justifyContent:\"center\"},children:/*#__PURE__*/_jsx(\"svg\",{width:\"32\",height:\"32\",viewBox:\"0 0 32 32\",fill:\"none\",xmlns:\"http://www.w3.org/2000/svg\",children:/*#__PURE__*/_jsx(\"path\",{d:\"M16 6v20M6 16h20\",stroke:\"#999\",strokeWidth:\"3\",strokeLinecap:\"round\"})})});}return /*#__PURE__*/_jsx(\"img\",{src:src,alt:\"\",style:{objectFit:\"cover\",width:\"100%\",maxWidth:\"none\",height:\"100%\",position:\"absolute\",inset:\"0%\"}});}/* ── Panel sub-component ─────────────────────────────────────────── */function CarouselPanel({index,total,angle,radius,width,height,justifyContent,children}){const base=index*360/total;const rotateY=useTransform(angle,v=>base+v);return /*#__PURE__*/_jsx(motion.div,{style:{position:\"absolute\",display:\"flex\",flexDirection:\"column\",justifyContent:justifyContent,alignItems:\"center\",width,height,rotateY,transformOrigin:`50% 50% ${-radius}px`,transformStyle:\"preserve-3d\",pointerEvents:\"none\",userSelect:\"none\"},children:children});}/* ── TabBar sub-component ────────────────────────────────────────── */function TabBar({tabs,activeIndex,onTabClick,visible}){return /*#__PURE__*/_jsx(AnimatePresence,{children:visible&&/*#__PURE__*/_jsx(motion.div,{initial:{opacity:0,y:20},animate:{opacity:1,y:0},transition:{duration:.5,ease:[.16,1,.3,1]},style:{position:\"absolute\",bottom:\"8%\",left:0,right:0,width:\"fit-content\",margin:\"0 auto\",display:\"flex\",gap:4,padding:4,background:\"#555\",borderRadius:50,zIndex:10},children:tabs.map((tab,i)=>/*#__PURE__*/_jsx(\"button\",{onClick:()=>onTabClick(i),style:{all:\"unset\",cursor:\"pointer\",padding:\"8px 20px\",borderRadius:50,fontFamily:\"'SF Mono', 'Fira Code', 'Courier New', monospace\",fontSize:12,fontWeight:700,letterSpacing:\"0.05em\",textTransform:\"uppercase\",whiteSpace:\"nowrap\",color:i===activeIndex?\"#1a1a1a\":\"#fff\",background:i===activeIndex?\"#D4FF00\":\"transparent\",transition:\"background 0.2s, color 0.2s\"},children:tab.title},tab.title))})});}/* ── Helper: distribute items into panels ────────────────────────── */function buildPanels(validItems){if(validItems.length===0)return[];const raw=[];let i=0;let oneNext=true;while(i<validItems.length){if(oneNext||i+1>=validItems.length){raw.push({items:[validItems[i]]});i+=1;}else{raw.push({items:[validItems[i],validItems[i+1]]});i+=2;}oneNext=!oneNext;}if(raw.length>0&&raw.length<MIN_PANELS){const result=[...raw];let idx=0;while(result.length<MIN_PANELS){result.push(raw[idx%raw.length]);idx++;}return result;}return raw;}function normalizeItems(items){const provided=items.filter(item=>item&&item.length>0).slice(0,MAX_ITEMS);const placeholderCount=Math.max(0,MAX_ITEMS-provided.length);const placeholders=Array.from({length:placeholderCount},()=>PLACEHOLDER);return[...provided,...placeholders];}/* ── Main component ──────────────────────────────────────────────── */function Carousel3D(props){const{tabs:rawTabs,itemGap,introDelay}=props;// Ensure we always have at least one tab\nconst tabs=useMemo(()=>{if(!rawTabs||rawTabs.length===0){return[{title:\"Tab 1\",items:[]}];}return rawTabs;},[rawTabs]);const[activeTabIndex,setActiveTabIndex]=useState(0);const safeTabIndex=Math.min(activeTabIndex,tabs.length-1);const validItems=useMemo(()=>normalizeItems(tabs[safeTabIndex]?.items??[]),[tabs,safeTabIndex]);const panels=useMemo(()=>buildPanels(validItems),[validItems]);/* ── Motion values ─────────────────────────────────────────── */const angle=useMotionValue(0);const speedRef=useRef(BASE_SPEED);const hasIntroPlayed=useRef(false);const isAnimatingRef=useRef(false);const[introComplete,setIntroComplete]=useState(false);const wrapRef=useRef(null);const contentRefs=useRef([]);const pendingTimeoutsRef=useRef([]);const isInView=useInView(wrapRef,{once:false,amount:0,margin:\"0px 0px -20% 0px\"});const wrapScale=useMotionValue(INITIAL_SCALE);const wrapRotation=useMotionValue(INITIAL_ROTATION);/* ── Responsive sizing ─────────────────────────────────────── */const[containerWidth,setContainerWidth]=useState(800);useEffect(()=>{const el=wrapRef.current;if(!el)return;const ro=new ResizeObserver(entries=>{for(const entry of entries)setContainerWidth(entry.contentRect.width);});ro.observe(el);return()=>ro.disconnect();},[]);const unit=containerWidth/80;const panelWidth=13*unit;const panelHeight=(26+itemGap)*unit;const radius=containerWidth*.625;const perspective=containerWidth*1.125;/* ── Stable ref indices ────────────────────────────────────── */const contentIndices=useMemo(()=>{let idx=0;return panels.map(p=>p.items.map(()=>idx++));},[panels]);/* ── Cleanup on unmount ────────────────────────────────────── */useEffect(()=>{return()=>{pendingTimeoutsRef.current.forEach(clearTimeout);};},[]);/* ── Animation functions ───────────────────────────────────── */const playIntro=useCallback(()=>{return new Promise(resolve=>{speedRef.current=INITIAL_SPIN_SPEED;animate(INITIAL_SPIN_SPEED,BASE_SPEED,{duration:INTRO_SPIN_DURATION,ease:expoInOut,onUpdate:v=>{speedRef.current=v;}});animate(wrapScale,1,{duration:INTRO_SCALE_DURATION,ease:expoInOut});animate(wrapRotation,FINAL_ROTATION,{duration:INTRO_SCALE_DURATION,ease:expoInOut});const items=contentRefs.current.filter(Boolean);const indices=items.map((_,i)=>i);for(let i=indices.length-1;i>0;i-=1){const j=Math.floor(Math.random()*(i+1));[indices[i],indices[j]]=[indices[j],indices[i]];}indices.forEach((origIdx,order)=>{const delay=order*(STAGGER_DURATION/Math.max(indices.length-1,1));const item=items[origIdx];const timeoutId=window.setTimeout(()=>{item.style.visibility=\"visible\";animate(item,{opacity:1},{duration:FADE_DURATION,ease:expoInOut});},delay*1e3);pendingTimeoutsRef.current.push(timeoutId);});const doneTimeout=window.setTimeout(resolve,INTRO_SPIN_DURATION*1e3+100);pendingTimeoutsRef.current.push(doneTimeout);});},[wrapScale,wrapRotation]);const playOutro=useCallback(()=>{return new Promise(resolve=>{// Speed up rotation first (leads the other animations)\nspeedRef.current=BASE_SPEED;animate(BASE_SPEED,INITIAL_SPIN_SPEED,{duration:1.2,ease:expoIn,onUpdate:v=>{speedRef.current=v;}});// After a delay, scale down + tilt back + fade out content\nconst delayTimeout=window.setTimeout(()=>{animate(wrapScale,INITIAL_SCALE,{duration:.8,ease:expoIn});animate(wrapRotation,INITIAL_ROTATION,{duration:.8,ease:expoIn,onComplete:resolve});// Stagger fade-out content items in random order\nconst items=contentRefs.current.filter(Boolean);const indices=items.map((_,i)=>i);for(let i=indices.length-1;i>0;i-=1){const j=Math.floor(Math.random()*(i+1));[indices[i],indices[j]]=[indices[j],indices[i]];}indices.forEach((origIdx,order)=>{const delay=order*(.6/Math.max(indices.length-1,1));const item=items[origIdx];const timeoutId=window.setTimeout(()=>{animate(item,{opacity:0},{duration:.3,ease:expoIn,onComplete:()=>{item.style.visibility=\"hidden\";}});},delay*1e3);pendingTimeoutsRef.current.push(timeoutId);});},400);pendingTimeoutsRef.current.push(delayTimeout);});},[wrapScale,wrapRotation]);/* ── Tab switch handler ─────────────────────────────────────── */const handleTabSwitch=useCallback(async newIndex=>{if(newIndex===activeTabIndex)return;if(isAnimatingRef.current)return;isAnimatingRef.current=true;await playOutro();setActiveTabIndex(newIndex);await new Promise(resolve=>{requestAnimationFrame(()=>{requestAnimationFrame(()=>{contentRefs.current.filter(Boolean).forEach(el=>{el.style.opacity=\"0\";el.style.visibility=\"hidden\";});resolve();});});});await playIntro();isAnimatingRef.current=false;},[activeTabIndex,playOutro,playIntro]);/* ── Intro animation ───────────────────────────────────────── */useEffect(()=>{if(isInView&&!hasIntroPlayed.current){hasIntroPlayed.current=true;const delayMs=introDelay*1e3;const mainTid=window.setTimeout(async()=>{isAnimatingRef.current=true;await playIntro();isAnimatingRef.current=false;setIntroComplete(true);},delayMs);pendingTimeoutsRef.current.push(mainTid);return()=>{window.clearTimeout(mainTid);};}else if(isInView&&hasIntroPlayed.current){speedRef.current=BASE_SPEED;}},[isInView,playIntro]);/* ── Auto-rotation ─────────────────────────────────────────── */useAnimationFrame((_,delta)=>{angle.set(angle.get()-speedRef.current*(delta/1e3));});/* ── Render ────────────────────────────────────────────────── */if(panels.length===0){return /*#__PURE__*/_jsx(\"div\",{style:{width:\"100%\",height:\"100%\",display:\"flex\",alignItems:\"center\",justifyContent:\"center\",color:\"#999\",fontFamily:\"Inter, sans-serif\",fontSize:14},children:\"Add media items to the carousel\"});}return /*#__PURE__*/_jsxs(\"div\",{ref:wrapRef,style:{width:\"100%\",height:\"100%\",display:\"flex\",justifyContent:\"center\",alignItems:\"center\",overflow:\"hidden\",position:\"relative\"},children:[/*#__PURE__*/_jsx(motion.div,{style:{perspective,perspectiveOrigin:\"50%\",transformStyle:\"preserve-3d\",display:\"flex\",justifyContent:\"center\",alignItems:\"center\",width:\"100%\",height:\"100%\",position:\"relative\",scale:wrapScale,rotate:wrapRotation,pointerEvents:\"none\"},children:panels.map((panel,pi)=>/*#__PURE__*/_jsx(CarouselPanel,{index:pi,total:panels.length,angle:angle,radius:radius,width:panelWidth,height:panelHeight,justifyContent:panel.items.length===1?\"center\":\"space-between\",children:panel.items.map((item,ji)=>{const idx=contentIndices[pi]?.[ji]??0;return /*#__PURE__*/_jsx(\"div\",{ref:el=>{contentRefs.current[idx]=el;if(!el)return;if(isAnimatingRef.current||!hasIntroPlayed.current){el.style.opacity=\"0\";el.style.visibility=\"hidden\";}else{el.style.opacity=\"1\";el.style.visibility=\"visible\";}},style:{aspectRatio:ASPECT_RATIOS[idx%ASPECT_RATIOS.length],height:panelWidth,position:\"relative\",overflow:\"hidden\",clipPath:\"inset(0%)\"},children:/*#__PURE__*/_jsx(MediaSlot,{src:item})},ji);})},pi))}),tabs.length>1&&/*#__PURE__*/_jsx(TabBar,{tabs:tabs,activeIndex:safeTabIndex,onTabClick:handleTabSwitch,visible:introComplete})]});}/* ── Framer defaults ─────────────────────────────────────────────── */Carousel3D.defaultProps={tabs:[{title:\"Tab 1\",items:[]}],itemGap:7.5,introDelay:1};/* ── Property Controls ───────────────────────────────────────────── */addPropertyControls(Carousel3D,{tabs:{type:ControlType.Array,title:\"Tabs\",maxCount:10,defaultValue:[{title:\"Tab 1\",items:[]}],control:{type:ControlType.Object,controls:{title:{type:ControlType.String,title:\"Title\",defaultValue:\"Tab\"},items:{type:ControlType.Array,title:\"Images\",maxCount:12,control:{type:ControlType.Image}}}}},itemGap:{type:ControlType.Number,title:\"Item Gap\",defaultValue:7.5,min:0,max:30,step:1},introDelay:{type:ControlType.Number,title:\"Intro Delay\",defaultValue:1,min:0,max:5,step:.1,unit:\"s\"}});export default Carousel3D;\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"Carousel3D\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./Carousel3d.map"],"mappings":"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"}