{"version":3,"file":"Carousel.cyUf0f_V.mjs","names":["React.forwardRef","useRef","useState","Children"],"sources":["https:/framerusercontent.com/modules/jc2BY4Lzmy4XTp3l3BT7/3Qe9nOsZ7zqzyQA4lJBO/VIAuy7Guc.js","https:/framerusercontent.com/modules/KGkZeAWCp2eLDrxA0MKT/LpssEPaa6pptV0SRMUbt/Carousel.js"],"sourcesContent":["// Generated by Framer (dd59b2c)\nimport{jsx as _jsx}from\"react/jsx-runtime\";import{addPropertyControls,ControlType,cx,motion,useSVGTemplate,withCSS}from\"framer\";import*as React from\"react\";import{forwardRef}from\"react\";const mask=\"var(--framer-icon-mask)\";const Base=/*#__PURE__*/forwardRef(function(props,ref){return /*#__PURE__*/_jsx(\"svg\",{...props,ref:ref,children:props.children});});const MotionSVG=motion.create(Base);const SVG=/*#__PURE__*/forwardRef((props,ref)=>{const{animated,layoutId,children,...rest}=props;return animated?/*#__PURE__*/_jsx(MotionSVG,{...rest,layoutId:layoutId,ref:ref,children:children}):/*#__PURE__*/_jsx(\"svg\",{...rest,ref:ref,children:children});});const svg='<svg display=\"block\" role=\"presentation\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M 18 7 L 0 7 M 0 7 L 7 0 M 0 7 L 7 14\" fill=\"transparent\" height=\"14px\" id=\"GQQ_BEHVE\" stroke-dasharray=\"\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"var(--1ww558a, 2)\" stroke=\"var(--4rxgx6, black)\" transform=\"translate(3 5)\" width=\"18px\"/></svg>';const getProps=({color,height,id,width,width1,...props})=>{return{...props,CRY1Fpez4:color??props.CRY1Fpez4??\"rgb(0, 0, 0)\",vet7gqNu_:width1??props.vet7gqNu_??2};};const Component=/*#__PURE__*/React.forwardRef(function(props,ref){const{style,className,layoutId,variant,CRY1Fpez4,vet7gqNu_,...restProps}=getProps(props);const href=useSVGTemplate(\"3950368055\",svg);return /*#__PURE__*/_jsx(SVG,{...restProps,className:cx(\"framer-0Vdhp\",className),layoutId:layoutId,ref:ref,role:\"presentation\",style:{\"--1ww558a\":vet7gqNu_,\"--4rxgx6\":CRY1Fpez4,...style},viewBox:\"0 0 24 24\",children:/*#__PURE__*/_jsx(\"use\",{href:href})});});const css=[`.framer-0Vdhp { -webkit-mask: ${mask}; aspect-ratio: 1; display: block; mask: ${mask}; width: 24px; }`];/**\n * This is a generated Framer component.\n * @framerIntrinsicWidth 24\n * @framerIntrinsicHeight 24\n * @framerSupportedLayoutWidth any-prefer-fixed\n * @framerSupportedLayoutHeight any-prefer-fixed\n * @framerVariables {\"CRY1Fpez4\":\"color\",\"vet7gqNu_\":\"width1\"}\n * @framerImmutableVariables true\n * @framerVector {\"name\":\"Arrow Left\",\"color\":{\"type\":\"variable\",\"value\":\"4rxgx6\"},\"set\":{\"localId\":\"vectorSet/dSZJyzeMx\",\"id\":\"dSZJyzeMx\",\"moduleId\":\"E1vFg1A6wcWAGuFi9Hz1\"}}\n */const Icon=withCSS(Component,css,\"framer-0Vdhp\");Icon.displayName=\"Arrow Left\";export default Icon;addPropertyControls(Icon,{CRY1Fpez4:{defaultValue:\"rgb(0, 0, 0)\",hidden:false,title:\"Color\",type:ControlType.Color},vet7gqNu_:{defaultValue:2,displayStepper:true,hidden:false,max:4,min:1,title:\"Width\",type:ControlType.Number}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"Icon\",\"slots\":[],\"annotations\":{\"framerSupportedLayoutHeight\":\"any-prefer-fixed\",\"framerSupportedLayoutWidth\":\"any-prefer-fixed\",\"framerIntrinsicWidth\":\"24\",\"framerVariables\":\"{\\\"CRY1Fpez4\\\":\\\"color\\\",\\\"vet7gqNu_\\\":\\\"width1\\\"}\",\"framerIntrinsicHeight\":\"24\",\"framerVector\":\"{\\\"name\\\":\\\"Arrow Left\\\",\\\"color\\\":{\\\"type\\\":\\\"variable\\\",\\\"value\\\":\\\"4rxgx6\\\"},\\\"set\\\":{\\\"localId\\\":\\\"vectorSet/dSZJyzeMx\\\",\\\"id\\\":\\\"dSZJyzeMx\\\",\\\"moduleId\\\":\\\"E1vFg1A6wcWAGuFi9Hz1\\\"}}\",\"framerContractVersion\":\"1\",\"framerImmutableVariables\":\"true\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","// Component - CustomCarousel.tsx\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import React,{useEffect,useRef,useState,Children,cloneElement,isValidElement}from\"react\";import{addPropertyControls,ControlType}from\"framer\";import{motion,useMotionValue,useTransform,animate}from\"framer-motion\";export default function CustomCarousel(props){const{children=[],gap=16,overflow=true,prevButtonName=\"\",nextButtonName=\"\",duration=.6,bounce=0,cardVariant=\"Desktop\",fillWidth=false,progressBackgroundColor=\"rgba(0,0,0,0.1)\",progressBarColor=\"#000000\",progressWidth=200,progressOffset=24,progressAlignment=\"center\"}=props;const containerRef=useRef(null);const trackRef=useRef(null);const[currentIndex,setCurrentIndex]=useState(0);const[dimensions,setDimensions]=useState({container:0,track:0});const x=useMotionValue(0);const animationRef=useRef(null);const cardCount=Children.count(children);const maxOffset=Math.max(0,dimensions.track-dimensions.container);// Update dimensions on mount and resize\nuseEffect(()=>{const updateDimensions=()=>{if(containerRef.current&&trackRef.current){setDimensions({container:containerRef.current.clientWidth,track:trackRef.current.scrollWidth});}};updateDimensions();// Small delay to ensure children are rendered\nconst timeout=setTimeout(updateDimensions,100);window.addEventListener(\"resize\",updateDimensions);return()=>{window.removeEventListener(\"resize\",updateDimensions);clearTimeout(timeout);};},[children,fillWidth,gap]);// Animate to current index with right-edge clamping\nuseEffect(()=>{if(!trackRef.current)return;const cards=Array.from(trackRef.current.children);if(!cards[currentIndex])return;// Clamp offset so last card aligns to right edge\nconst targetOffset=Math.min(cards[currentIndex].offsetLeft,maxOffset);animationRef.current=animate(x,-targetOffset,{type:\"spring\",duration,bounce});},[currentIndex,children,duration,bounce,maxOffset]);const goTo=index=>{const maxIndex=cardCount-1;setCurrentIndex(Math.max(0,Math.min(index,maxIndex)));};// External button listeners\nuseEffect(()=>{if(typeof window===\"undefined\")return;const handlePrev=()=>goTo(currentIndex-1);const handleNext=()=>goTo(currentIndex+1);const prevBtn=prevButtonName?document.querySelector(`[data-framer-name=\"${prevButtonName}\"]`):null;const nextBtn=nextButtonName?document.querySelector(`[data-framer-name=\"${nextButtonName}\"]`):null;prevBtn?.addEventListener(\"click\",handlePrev);nextBtn?.addEventListener(\"click\",handleNext);return()=>{prevBtn?.removeEventListener(\"click\",handlePrev);nextBtn?.removeEventListener(\"click\",handleNext);};},[prevButtonName,nextButtonName,currentIndex]);// Drag handling\nconst isDragging=useRef(false);const startX=useRef(0);const startTranslate=useRef(0);const dragStartTime=useRef(0);const SWIPE_VELOCITY_THRESHOLD=.3// px/ms\n;const handleDragStart=clientX=>{// Cancel any ongoing animation\nif(animationRef.current){animationRef.current.stop();animationRef.current=null;}isDragging.current=true;startX.current=clientX;startTranslate.current=x.get();dragStartTime.current=Date.now();};const handleDragMove=clientX=>{if(!isDragging.current)return;const diff=clientX-startX.current;x.set(startTranslate.current+diff);};const handleDragEnd=()=>{if(!isDragging.current||!trackRef.current)return;isDragging.current=false;const cards=Array.from(trackRef.current.children);const currentX=x.get();const dragDistance=currentX-startTranslate.current;const elapsed=Date.now()-dragStartTime.current;const velocity=Math.abs(dragDistance)/Math.max(elapsed,1);// Velocity-based: fast swipe advances one card in swipe direction\nif(velocity>SWIPE_VELOCITY_THRESHOLD&&Math.abs(dragDistance)>10){const direction=dragDistance>0?-1:1;const nextIndex=Math.max(0,Math.min(currentIndex+direction,cardCount-1));const targetOffset=Math.min(cards[nextIndex].offsetLeft,maxOffset);animationRef.current=animate(x,-targetOffset,{type:\"spring\",duration,bounce});setCurrentIndex(nextIndex);return;}// Distance-based fallback: snap to nearest card\nlet closest=0;let closestDistance=Infinity;cards.forEach((card,i)=>{const cardOffset=Math.min(card.offsetLeft,maxOffset);const distance=Math.abs(-cardOffset-currentX);if(distance<closestDistance){closestDistance=distance;closest=i;}});const targetOffset=Math.min(cards[closest].offsetLeft,maxOffset);animationRef.current=animate(x,-targetOffset,{type:\"spring\",duration,bounce});setCurrentIndex(closest);};// Progress bar positioning (smooth, motion-driven)\nconst progressBarWidthPercent=cardCount>0?100/cardCount:100;const progressLeft=useTransform(x,xVal=>{if(maxOffset===0)return\"0%\";const progress=Math.min(1,Math.max(0,-xVal/maxOffset));return`${progress*(100-progressBarWidthPercent)}%`;});const alignmentMap={left:\"flex-start\",center:\"center\",right:\"flex-end\"};const hasProgress=progressBackgroundColor&&progressBarColor;// Render children with variant and handle fill width\nconst renderChildren=()=>{return Children.map(children,(child,i)=>{if(!/*#__PURE__*/isValidElement(child))return child;const childElement=child;// Navigate to the actual Framer component (3 levels deep)\nconst level2=childElement.props?.children;const level3=level2?.props?.children;if(!level3||!/*#__PURE__*/isValidElement(level3)){// Editor fallback: render with fillWidth applied at top level\nconst fallbackChild=fillWidth?/*#__PURE__*/cloneElement(childElement,{...childElement.props,width:\"100%\",style:{...childElement.props?.style,width:\"100%\"}}):child;return /*#__PURE__*/_jsx(\"div\",{style:{flexShrink:0,...fillWidth&&{width:\"100%\"}},children:fallbackChild},i);}const actualComponent=level3;const componentType=actualComponent.type;// Get variant mapping from propertyControls\nconst variantControls=componentType?.propertyControls?.variant;let targetVariantId=actualComponent.props?.variant// default to current\n;if(cardVariant===\"Mobile\"&&variantControls){const{options,optionTitles}=variantControls;const mobileIndex=optionTitles?.indexOf(\"Mobile\");if(mobileIndex!==-1&&options?.[mobileIndex]){targetVariantId=options[mobileIndex];}}// Rebuild the component tree with the new variant\nconst newLevel3=/*#__PURE__*/React.createElement(actualComponent.type,{...actualComponent.props,variant:targetVariantId,...fillWidth&&{width:\"100%\",style:{...actualComponent.props?.style,width:\"100%\"}}});const newLevel2=/*#__PURE__*/React.cloneElement(level2,{...level2.props,...fillWidth&&{style:{...level2.props?.style,width:\"100%\"}},children:newLevel3});const newChild=/*#__PURE__*/React.cloneElement(childElement,{...childElement.props,...fillWidth&&{width:\"100%\",style:{...childElement.props?.style,width:\"100%\"}},children:newLevel2});return /*#__PURE__*/_jsx(\"div\",{style:{flexShrink:0,...fillWidth&&{width:\"100%\"}},children:newChild},i);});};return /*#__PURE__*/_jsxs(\"div\",{ref:containerRef,style:{width:\"100%\",height:\"100%\",overflow:overflow?\"visible\":\"hidden\",position:\"relative\"},children:[/*#__PURE__*/_jsx(motion.div,{ref:trackRef,style:{display:\"flex\",gap,height:\"100%\",x,cursor:\"grab\"},onMouseDown:e=>handleDragStart(e.clientX),onMouseMove:e=>handleDragMove(e.clientX),onMouseUp:handleDragEnd,onMouseLeave:handleDragEnd,onTouchStart:e=>handleDragStart(e.touches[0].clientX),onTouchMove:e=>handleDragMove(e.touches[0].clientX),onTouchEnd:handleDragEnd,children:renderChildren()}),hasProgress&&/*#__PURE__*/_jsx(\"div\",{style:{position:\"absolute\",top:\"100%\",left:0,right:0,transform:`translateY(${progressOffset}px)`,display:\"flex\",justifyContent:alignmentMap[progressAlignment],alignItems:\"center\"},children:/*#__PURE__*/_jsx(\"div\",{style:{position:\"relative\",width:progressWidth,height:1,borderRadius:1,backgroundColor:progressBackgroundColor,overflow:\"hidden\"},children:/*#__PURE__*/_jsx(motion.div,{style:{position:\"absolute\",top:0,left:progressLeft,width:`${progressBarWidthPercent}%`,height:\"100%\",borderRadius:2,backgroundColor:progressBarColor}})})})]});}addPropertyControls(CustomCarousel,{children:{type:ControlType.Array,title:\"Cards\",control:{type:ControlType.ComponentInstance}},gap:{type:ControlType.Number,title:\"Gap\",defaultValue:16,min:0,max:100},overflow:{type:ControlType.Boolean,title:\"Overflow\",defaultValue:true,enabledTitle:\"Visible\",disabledTitle:\"Hidden\"},cardVariant:{type:ControlType.Enum,title:\"Card Variant\",options:[\"Desktop\",\"Mobile\"],optionTitles:[\"Desktop\",\"Mobile\"],defaultValue:\"Desktop\",displaySegmentedControl:true},fillWidth:{type:ControlType.Boolean,title:\"Card Width\",defaultValue:false,enabledTitle:\"Fill\",disabledTitle:\"Fixed\"},prevButtonName:{type:ControlType.String,title:\"Prev Button\",defaultValue:\"\",placeholder:\"prevBtn\"},nextButtonName:{type:ControlType.String,title:\"Next Button\",defaultValue:\"\",placeholder:\"nextBtn\"},duration:{type:ControlType.Number,title:\"Duration (s)\",defaultValue:.6,min:.1,max:2,step:.1},bounce:{type:ControlType.Number,title:\"Bounce\",defaultValue:0,min:0,max:1,step:.05},progressBackgroundColor:{type:ControlType.Color,title:\"Progress BG\",defaultValue:\"rgba(0,0,0,0.1)\"},progressBarColor:{type:ControlType.Color,title:\"Progress Bar\",defaultValue:\"#000000\"},progressWidth:{type:ControlType.Number,title:\"Progress Width\",defaultValue:200,min:50,max:1e3,step:10},progressOffset:{type:ControlType.Number,title:\"Progress Offset\",defaultValue:24,min:0,max:100},progressAlignment:{type:ControlType.Enum,title:\"Progress Align\",options:[\"left\",\"center\",\"right\"],optionTitles:[\"Left\",\"Center\",\"Right\"],defaultValue:\"center\",displaySegmentedControl:true}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"CustomCarousel\",\"slots\":[\"children\"],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./Carousel.map"],"mappings":"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"}