{"version":3,"file":"Infinity.BTQ8Xw5U.mjs","names":["React.useRef","React.useState","H"],"sources":["https:/framerusercontent.com/modules/SgsPqJ4aDrr7JxLFLDhv/RK9xS411N16GMpQ3GNCl/Infinity.js"],"sourcesContent":["import{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import*as React from\"react\";import{addPropertyControls,ControlType}from\"framer\";/**\n * InfiniteWheelCarousel (v1 — Horizontal)\n *\n * @framerDisableUnlink\n */export default function InfiniteWheelCarousel(props){const{// content\ncards,cardLinks,// layout\ncardWidth,cardHeight,gap,paddingX,paddingTop,paddingBottom,bg,radius,// focus (пока не используются)\nfocusRadius,focusFalloff,// motion\nwheelSensitivity,startIndex,smoothing,// alignment\nverticalAlign,// drag (mobile/desktop)\ndragEnabled,dragSensitivity,flingMultiplier,tapThreshold,// extras\nextraEnabled,extraCards,extraPosition,extraWidth,extraHeight,extraGap,extraRadius,extraAbove}=props;const containerRef=React.useRef(null);const[containerWidth,setContainerWidth]=React.useState(0);const[containerHeight,setContainerHeight]=React.useState(0);// smooth controller\nconst targetOffsetRef=React.useRef(0);const currentOffsetRef=React.useRef(0);const[,rerender]=React.useState(0);// drag state\nconst isDragging=React.useRef(false);const isPointerDown=React.useRef(false);const startX=React.useRef(0);const startY=React.useRef(0);const lastX=React.useRef(0);const lastT=React.useRef(0);const velocity=React.useRef(0)// px/ms\n;const hasDragged=React.useRef(false);// тип указателя (mouse / touch / pen)\nconst lastPointerType=React.useRef(\"unknown\");// measure container\nReact.useLayoutEffect(()=>{const el=containerRef.current;if(!el)return;const measure=()=>{setContainerWidth(el.clientWidth);setContainerHeight(el.clientHeight);};measure();const ro=new ResizeObserver(measure);ro.observe(el);return()=>ro.disconnect();},[]);// wheel (horizontal preference, falls back to vertical)\nReact.useEffect(()=>{const el=containerRef.current;if(!el)return;const onWheel=e=>{if(e.deltaX===0&&e.deltaY===0)return;e.preventDefault();const delta=(Math.abs(e.deltaX)>=Math.abs(e.deltaY)?e.deltaX:e.deltaY)*wheelSensitivity;if(smoothing>0){targetOffsetRef.current+=delta;}else{targetOffsetRef.current+=delta;currentOffsetRef.current=targetOffsetRef.current;}scheduleFrame();};el.addEventListener(\"wheel\",onWheel,{passive:false});return()=>el.removeEventListener(\"wheel\",onWheel);},[wheelSensitivity,smoothing]);// keys\nReact.useEffect(()=>{const onKey=e=>{const step=cardWidth+gap;if(e.key===\"ArrowRight\"){if(smoothing>0)targetOffsetRef.current+=step;else{targetOffsetRef.current+=step;currentOffsetRef.current=targetOffsetRef.current;}scheduleFrame();}else if(e.key===\"ArrowLeft\"){if(smoothing>0)targetOffsetRef.current-=step;else{targetOffsetRef.current-=step;currentOffsetRef.current=targetOffsetRef.current;}scheduleFrame();}};window.addEventListener(\"keydown\",onKey);return()=>window.removeEventListener(\"keydown\",onKey);},[cardWidth,gap,smoothing]);// start index\nReact.useEffect(()=>{const base=startIndex*(cardWidth+gap);targetOffsetRef.current=base;currentOffsetRef.current=base;scheduleFrame();// eslint-disable-next-line react-hooks/exhaustive-deps\n},[startIndex,cardWidth,gap]);// RAF + smoothing\nconst rafRef=React.useRef(null);const scheduleFrame=()=>{if(rafRef.current!=null)return;rafRef.current=requestAnimationFrame(tick);};const tick=()=>{rafRef.current=null;if(smoothing>0){const cur=currentOffsetRef.current;const tgt=targetOffsetRef.current;const next=cur+(tgt-cur)*smoothing;currentOffsetRef.current=next;if(Math.abs(tgt-next)>.1){rafRef.current=requestAnimationFrame(tick);}}rerender(v=>v+1);};// drag (mobile + desktop)\nReact.useEffect(()=>{if(!dragEnabled)return;const el=containerRef.current;if(!el)return;const threshold=Math.max(0,tapThreshold??6)// tap-порог\n;const onPointerDown=e=>{isPointerDown.current=true;isDragging.current=false;hasDragged.current=false;const pt=e.pointerType||\"mouse\";lastPointerType.current=pt===\"mouse\"||pt===\"touch\"||pt===\"pen\"?pt:\"unknown\";startX.current=e.clientX;startY.current=e.clientY;lastX.current=e.clientX;lastT.current=performance.now();e.target.setPointerCapture?.(e.pointerId);};const onPointerMove=e=>{if(!isPointerDown.current)return;// решаем: tap или swipe\nif(!isDragging.current){const dxTotal=Math.abs(e.clientX-startX.current);const dyTotal=Math.abs(e.clientY-startY.current);// начинаем drag только если превысили порог и движение более горизонтальное\nif(dxTotal>threshold&&dxTotal>dyTotal){isDragging.current=true;hasDragged.current=true;lastX.current=e.clientX;lastT.current=performance.now();}else{// пока не достигли порога — считаем потенциальный tap, не двигаем карусель\nreturn;}}if(isDragging.current){const now=performance.now();const dx=(e.clientX-lastX.current)*dragSensitivity;if(smoothing>0){targetOffsetRef.current+=dx;}else{targetOffsetRef.current+=dx;currentOffsetRef.current=targetOffsetRef.current;}scheduleFrame();const dt=Math.max(1,now-lastT.current);velocity.current=(e.clientX-lastX.current)/dt// px/ms\n;lastX.current=e.clientX;lastT.current=now;}};const onPointerUp=()=>{if(!isPointerDown.current)return;isPointerDown.current=false;if(isDragging.current){isDragging.current=false;const v=velocity.current// px/ms\n;const MIN_FLING_VELOCITY=.05// порог скорости для fling\n;if(Math.abs(v)>MIN_FLING_VELOCITY){const fling=v*flingMultiplier;targetOffsetRef.current+=fling;scheduleFrame();}}};el.addEventListener(\"pointerdown\",onPointerDown,{passive:true});window.addEventListener(\"pointermove\",onPointerMove,{passive:true});window.addEventListener(\"pointerup\",onPointerUp,{passive:true});window.addEventListener(\"pointercancel\",onPointerUp,{passive:true});return()=>{el.removeEventListener(\"pointerdown\",onPointerDown);window.removeEventListener(\"pointermove\",onPointerMove);window.removeEventListener(\"pointerup\",onPointerUp);window.removeEventListener(\"pointercancel\",onPointerUp);};},[dragEnabled,dragSensitivity,flingMultiplier,smoothing,tapThreshold]);// derived layout (horizontal)\nconst n=cards.length;const stride=cardWidth+gap;const bandWidth=n*stride;const links=cardLinks||[]// NEW\n;// offset normalized to [-bandWidth, 0)\nconst normOffset=(()=>{const use=currentOffsetRef.current;if(bandWidth<=0)return use;const raw=-use;const m=(raw%bandWidth+bandWidth)%bandWidth;return-m;})();// scaling by distance to horizontal center (пока без эффекта)\nconst scaleForX=cardCenterX=>{return 1;};// vertical rail position\nconst railTop=(()=>{const H=containerHeight;return Math.max(0,(H-cardHeight)/2);})();const transformOrigin=\"center center\";const scaledTopOffset=scaledH=>{return(cardHeight-scaledH)/2;};const renderBand=bandIndex=>{const bandOffsetX=normOffset+bandIndex*bandWidth;const items=[];for(let i=0;i<n;i++){const x=paddingX+bandOffsetX+i*stride;const centerX=x+cardWidth/2;const scale=scaleForX(centerX);const z=Math.round(scale*1e3);const child=cards[i];const extra=extraCards&&extraCards[i]||null;const href=links[i]||null// NEW\n;const scaledW=cardWidth*scale;const scaledH=cardHeight*scale;const mainLeft=(cardWidth-scaledW)/2;const mainRight=mainLeft+scaledW;const mainTop=scaledTopOffset(scaledH);const mainBottom=mainTop+scaledH;let exLeft=0,exTop=0;if(extraEnabled&&extra){if(extraPosition===\"right\"){exLeft=mainRight+extraGap;exTop=mainTop+(scaledH-extraHeight)/2;}else if(extraPosition===\"left\"){exLeft=mainLeft-extraGap-extraWidth;exTop=mainTop+(scaledH-extraHeight)/2;}else if(extraPosition===\"top\"){exLeft=mainLeft+(scaledW-extraWidth)/2;exTop=mainTop-extraGap-extraHeight;}else{// bottom\nexLeft=mainLeft+(scaledW-extraWidth)/2;exTop=mainBottom+extraGap;}}const isTouchLikeLocal=lastPointerType.current===\"touch\"||lastPointerType.current===\"pen\";items.push(/*#__PURE__*/_jsxs(\"div\",{style:{position:\"absolute\",left:0,top:0,width:cardWidth,height:cardHeight,transform:`translate3d(${x}px, 0, 0)`,zIndex:z,willChange:\"transform\"},children:[/*#__PURE__*/_jsx(\"div\",{style:{position:\"absolute\",left:0,top:0,width:cardWidth,height:cardHeight,transform:`translate3d(0, 0, 0) scale(${scale})`,transformOrigin},children:/*#__PURE__*/_jsx(\"div\",{style:{width:\"100%\",height:\"100%\",overflow:\"hidden\",borderRadius:radius,cursor:href?\"pointer\":\"default\"},onClick:e=>{if(!href)return;// если был swipe — не навигируем\nif(hasDragged.current){e.stopPropagation();e.preventDefault();return;}// tap → открываем ссылку\nwindow.open(href,\"_self\");},children:child})}),extraEnabled&&extra&&/*#__PURE__*/_jsx(\"div\",{style:{position:\"absolute\",left:exLeft,top:exTop,width:extraWidth,height:extraHeight,borderRadius:extraRadius,overflow:\"hidden\",zIndex:extraAbove?z+1:z-1},children:extra})]},`${bandIndex}-${i}`));}return items;};return /*#__PURE__*/_jsx(\"div\",{ref:containerRef,// блокируем pointerup/tap после swipe только на touch/pen\nonPointerUpCapture:e=>{const isTouchLike=lastPointerType.current===\"touch\"||lastPointerType.current===\"pen\";if(isTouchLike&&hasDragged.current){e.stopPropagation();e.preventDefault();// hasDragged сбросится при следующем pointerdown\n}},onClickCapture:e=>{const isTouchLike=lastPointerType.current===\"touch\"||lastPointerType.current===\"pen\";if(isTouchLike&&hasDragged.current){e.stopPropagation();e.preventDefault();}},style:{width:\"100%\",height:\"100%\",position:\"relative\",overflow:\"hidden\",background:bg,overscrollBehavior:\"none\",touchAction:\"none\",borderRadius:radius},children:/*#__PURE__*/_jsxs(\"div\",{style:{position:\"absolute\",left:0,right:0,top:\"50%\",height:cardHeight,transform:\"translate3d(0, -50%, 0)\",willChange:\"transform\"},children:[renderBand(-1),renderBand(0),renderBand(1)]})});}InfiniteWheelCarousel.defaultProps={cards:[],cardLinks:[],cardWidth:280,cardHeight:180,gap:24,paddingX:60,paddingTop:24,paddingBottom:24,bg:\"transparent\",radius:16,focusRadius:420,focusFalloff:2.5,wheelSensitivity:.6,startIndex:0,smoothing:.08,verticalAlign:\"center\",// drag\ndragEnabled:true,dragSensitivity:1,flingMultiplier:220,tapThreshold:6,// extras\nextraEnabled:false,extraCards:[],extraPosition:\"right\",extraWidth:120,extraHeight:120,extraGap:10,extraRadius:12,extraAbove:true};/* -------------------- Property Controls -------------------- */addPropertyControls(InfiniteWheelCarousel,{cards:{type:ControlType.Array,title:\"Cards\",propertyControl:{type:ControlType.ComponentInstance}},cardLinks:{// NEW\ntype:ControlType.Array,title:\"Links\",propertyControl:{type:ControlType.String}},// motion\nwheelSensitivity:{type:ControlType.Number,title:\"Wheel\",min:.1,max:3,step:.05},smoothing:{type:ControlType.Number,title:\"Smooth\",min:0,max:.5,step:.01},// drag (mobile)\ndragEnabled:{type:ControlType.Boolean,title:\"Drag\"},dragSensitivity:{type:ControlType.Number,title:\"Drag Sens.\",min:.2,max:3,step:.1},flingMultiplier:{type:ControlType.Number,title:\"Fling\",min:50,max:800,step:10},tapThreshold:{type:ControlType.Number,title:\"Tap Thresh\",min:0,max:30,step:1},// size/spacing\ncardWidth:{type:ControlType.Number,title:\"Card W\",min:80,max:1200,step:1},cardHeight:{type:ControlType.Number,title:\"Card H\",min:60,max:900,step:1},gap:{type:ControlType.Number,title:\"Gap\",min:0,max:200,step:1},// focus\nfocusRadius:{type:ControlType.Number,title:\"Radius\",min:80,max:1200,step:1},focusFalloff:{type:ControlType.Number,title:\"Falloff\",min:1,max:6,step:.1},// vertical alignment\nverticalAlign:{type:ControlType.Enum,title:\"V Align\",options:[\"center\"],optionTitles:[\"Center\"]},// padding / style\npaddingX:{type:ControlType.Number,title:\"Pad X\",min:0,max:200,step:1},paddingTop:{type:ControlType.Number,title:\"Pad Top\",min:0,max:200,step:1},paddingBottom:{type:ControlType.Number,title:\"Pad Bottom\",min:0,max:200,step:1},bg:{type:ControlType.Color,title:\"Background\"},radius:{type:ControlType.Number,title:\"Radius\",min:0,max:40,step:1},// extras\nextraEnabled:{type:ControlType.Boolean,title:\"Extra On\"},extraCards:{type:ControlType.Array,title:\"Extra Cards\",propertyControl:{type:ControlType.ComponentInstance}},extraPosition:{type:ControlType.Enum,title:\"Extra Pos\",options:[\"top\",\"bottom\",\"left\",\"right\"],optionTitles:[\"Top\",\"Bottom\",\"Left\",\"Right\"]},extraWidth:{type:ControlType.Number,title:\"Extra W\",min:20,max:1200,step:1},extraHeight:{type:ControlType.Number,title:\"Extra H\",min:20,max:1200,step:1},extraGap:{type:ControlType.Number,title:\"Extra Gap\",min:0,max:200,step:1},extraRadius:{type:ControlType.Number,title:\"Extra Radius\",min:0,max:40,step:1},extraAbove:{type:ControlType.Boolean,title:\"Extra Above\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"InfiniteWheelCarousel\",\"slots\":[],\"annotations\":{\"framerDisableUnlink\":\"\",\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./Infinity.map"],"mappings":"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"}