{
  "version": 3,
  "sources": ["ssg:https://framerusercontent.com/modules/fdVI0ipcB31FY7yTHE1j/Y2fOTktvzNvLFe6CsGsV/Treatment_carousel.js"],
  "sourcesContent": ["import{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{addPropertyControls,ControlType}from\"framer\";import*as React from\"react\";/**\n * @framerSupportedLayoutWidth any\n * @framerSupportedLayoutHeight auto\n * @framerDisableUnlink\n */// Constants\nconst VIEWPORT_BREAKPOINT=1199;const VISIBILITY_THRESHOLDS={mobile:.65,desktop:{full:.92,edge:.7,middle:.8}};const UI_CONFIG={dotsGap:24,dotsHeight:4,hoverOffset:8};const RenderCard=/*#__PURE__*/React.memo(({card,index})=>{if(!card)return null;return /*#__PURE__*/_jsx(\"div\",{\"data-card\":\"true\",\"data-framer-name\":`carousel-item-${index}`,style:{flexShrink:0},children:card},`carousel-card-${index}`);});export default function Carousel({gap=16,offset=48,verticalPadding=24,activeDotColor=\"#00836C\",inactiveDotColor=\"#E8E8E8\",desktopCards=[],mobileCards=[]}){const scrollRef=React.useRef(null);const[activeIndices,setActiveIndices]=React.useState([0]);const[cardDimensions,setCardDimensions]=React.useState({width:0,height:0});const[isSmallViewport,setIsSmallViewport]=React.useState(false);// Use mobile cards if available, otherwise fall back to desktop cards\nconst currentCards=React.useMemo(()=>{if(isSmallViewport){return mobileCards?.length>0?mobileCards:desktopCards;}return desktopCards?.length>0?desktopCards:mobileCards;},[isSmallViewport,mobileCards,desktopCards]);const cards=currentCards||[];const scrollToCard=React.useCallback(index=>{if(!scrollRef.current)return;const cardTotalWidth=cardDimensions.width+gap;const scrollPosition=index*cardTotalWidth;scrollRef.current.scrollTo({left:scrollPosition,behavior:\"smooth\"});},[cardDimensions.width,gap]);const handleScroll=React.useCallback(()=>{const container=scrollRef.current;if(!container)return;const scrollLeft=container.scrollLeft;const containerWidth=container.offsetWidth;const cardTotalWidth=cardDimensions.width+gap;const totalCards=cards.length;const startPosition=scrollLeft;const endPosition=scrollLeft+containerWidth;const visibleCards=[];for(let i=0;i<totalCards;i++){const cardStart=i*cardTotalWidth;const cardEnd=cardStart+cardTotalWidth;const cardVisibleWidth=Math.min(cardEnd,endPosition)-Math.max(cardStart,startPosition);const visibilityRatio=cardVisibleWidth/cardTotalWidth;if(isSmallViewport){if(visibilityRatio>=VISIBILITY_THRESHOLDS.mobile){visibleCards.push(i);}}else{const isFirstOrLast=i===0||i===totalCards-1;const isNearlyFullyVisible=visibilityRatio>VISIBILITY_THRESHOLDS.desktop.full;const isPartiallyVisibleEdgeCard=isFirstOrLast&&visibilityRatio>VISIBILITY_THRESHOLDS.desktop.edge;const isMiddleCard=!isFirstOrLast&&visibilityRatio>VISIBILITY_THRESHOLDS.desktop.middle;if(isNearlyFullyVisible||isPartiallyVisibleEdgeCard||isMiddleCard){visibleCards.push(i);}}}const isNearEnd=scrollLeft+containerWidth>=container.scrollWidth-gap*2;if(isNearEnd&&!visibleCards.includes(totalCards-1)){visibleCards.push(totalCards-1);}setActiveIndices(visibleCards);},[cardDimensions.width,gap,cards.length,isSmallViewport]);React.useEffect(()=>{const updateDimensions=()=>{const firstCard=scrollRef.current?.querySelector('[data-card=\"true\"]');if(firstCard){setCardDimensions({width:firstCard.offsetWidth,height:firstCard.offsetHeight});}setIsSmallViewport(window.innerWidth<=VIEWPORT_BREAKPOINT);};updateDimensions();const resizeHandler=()=>{updateDimensions();handleScroll();};window.addEventListener(\"resize\",resizeHandler);return()=>window.removeEventListener(\"resize\",resizeHandler);},[handleScroll]);React.useEffect(()=>{const container=scrollRef.current;if(container){container.style.scrollBehavior=\"smooth\";container.style.webkitOverflowScrolling=\"touch\";handleScroll();}},[cardDimensions,handleScroll]);const renderedCards=React.useMemo(()=>cards.map((card,index)=>/*#__PURE__*/_jsx(RenderCard,{card:card,index:index},`carousel-card-${index}`)),[cards]);const containerHeight=(cardDimensions.height||0)+verticalPadding*2+UI_CONFIG.dotsGap+UI_CONFIG.dotsHeight+UI_CONFIG.hoverOffset;return /*#__PURE__*/_jsxs(\"div\",{\"data-framer-name\":\"carousel-container\",style:{position:\"relative\",height:containerHeight,width:\"100%\",overflow:\"hidden\"},children:[/*#__PURE__*/_jsxs(\"div\",{ref:scrollRef,\"data-framer-name\":\"carousel-scroll\",style:{position:\"absolute\",top:verticalPadding,left:0,right:0,height:(cardDimensions.height||0)+UI_CONFIG.hoverOffset*2,overflowX:\"scroll\",overflowY:\"hidden\",scrollbarWidth:\"none\",msOverflowStyle:\"none\"},onScroll:handleScroll,children:[/*#__PURE__*/_jsx(\"style\",{children:`\n                    div::-webkit-scrollbar {\n                        display: none;\n                    }\n                    `}),/*#__PURE__*/_jsx(\"div\",{\"data-framer-name\":\"carousel-track\",style:{display:\"flex\",gap:`${gap}px`,paddingLeft:offset,paddingRight:offset,paddingTop:UI_CONFIG.hoverOffset,paddingBottom:UI_CONFIG.hoverOffset,width:\"max-content\"},children:renderedCards})]}),cards.length>1&&cardDimensions.height>0&&/*#__PURE__*/_jsx(\"div\",{\"data-framer-name\":\"carousel-dots\",style:{position:\"absolute\",top:verticalPadding+cardDimensions.height+UI_CONFIG.hoverOffset+UI_CONFIG.dotsGap,left:\"50%\",transform:\"translateX(-50%)\",display:\"flex\",gap:4,zIndex:9},children:cards.map((_,index)=>/*#__PURE__*/_jsx(\"button\",{\"data-framer-name\":`carousel-dot-${index}`,onClick:()=>scrollToCard(index),style:{width:16,height:UI_CONFIG.dotsHeight,backgroundColor:activeIndices.includes(index)?activeDotColor:inactiveDotColor,borderRadius:2,transition:\"all 0.3s ease\",cursor:\"pointer\",border:\"none\",padding:0}},`carousel-dot-${index}`))})]});}addPropertyControls(Carousel,{desktopCards:{type:ControlType.Array,title:\"Desktop Cards\",control:{type:ControlType.ComponentInstance},defaultValue:[]},mobileCards:{type:ControlType.Array,title:\"Mobile Cards\",control:{type:ControlType.ComponentInstance},defaultValue:[]},gap:{type:ControlType.Number,title:\"Gap\",defaultValue:16,min:0,max:100,step:1,displayStepper:true},offset:{type:ControlType.Number,title:\"Side Offset\",defaultValue:48,min:0,max:200,step:1,displayStepper:true},verticalPadding:{type:ControlType.Number,title:\"Vertical Padding\",defaultValue:24,min:0,max:200,step:1,displayStepper:true},activeDotColor:{type:ControlType.Color,title:\"Active Dot\",defaultValue:\"#00836C\"},inactiveDotColor:{type:ControlType.Color,title:\"Inactive Dot\",defaultValue:\"#E8E8E8\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"Carousel\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./Treatment_carousel.map"],
  "mappings": "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",
  "names": ["VIEWPORT_BREAKPOINT", "VISIBILITY_THRESHOLDS", "UI_CONFIG", "RenderCard", "X", "card", "index", "p", "Carousel", "gap", "offset", "verticalPadding", "activeDotColor", "inactiveDotColor", "desktopCards", "mobileCards", "scrollRef", "pe", "activeIndices", "setActiveIndices", "ye", "cardDimensions", "setCardDimensions", "isSmallViewport", "setIsSmallViewport", "cards", "se", "scrollToCard", "te", "cardTotalWidth", "scrollPosition", "handleScroll", "container", "scrollLeft", "containerWidth", "totalCards", "startPosition", "endPosition", "visibleCards", "i", "cardStart", "cardEnd", "visibilityRatio", "isFirstOrLast", "isNearlyFullyVisible", "isPartiallyVisibleEdgeCard", "isMiddleCard", "ue", "updateDimensions", "firstCard", "window", "resizeHandler", "renderedCards", "containerHeight", "u", "_", "addPropertyControls", "ControlType"]
}
