{"version":3,"file":"TestimonialCarouselControls.Bh0NxtAF.mjs","names":["React.forwardRef","useRef","useCallback"],"sources":["https:/framerusercontent.com/modules/BO5wiJq1V5ZunT8iPSjo/SeHxyrmIkCJJ8pIxUV3H/MRp3P10aE.js","https:/framerusercontent.com/modules/NKec8crEQ9LXwWhJfjPS/jaA1CwLS2hCCXprKp5gB/TestimonialCarouselControls.js"],"sourcesContent":["// Generated by Framer (85eaff3)\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 7 14 L 0 7 L 7 0\" fill=\"transparent\" height=\"14px\" id=\"MZQyihG1W\" stroke-dasharray=\"\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"var(--js9iwy, 2)\" stroke=\"var(--1m973uw, rgb(0,0,0))\" transform=\"translate(5 5)\" width=\"7px\"/><path d=\"M 14 0 L 0 0\" fill=\"transparent\" height=\"1px\" id=\"Icbu9SXUE\" stroke-dasharray=\"\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"var(--js9iwy, 2)\" stroke=\"var(--1m973uw, rgb(0,0,0))\" transform=\"translate(5 12)\" width=\"14px\"/></svg>';const getProps=({color,height,id,width,width1,...props})=>{return{...props,JEeZYcamG:width1??props.JEeZYcamG??2,P_DcoRcrY:color??props.P_DcoRcrY??\"rgb(0, 0, 0)\"};};const Component=/*#__PURE__*/React.forwardRef(function(props,ref){const{style,className,layoutId,variant,P_DcoRcrY,JEeZYcamG,...restProps}=getProps(props);const href=useSVGTemplate(\"3838275970\",svg);return /*#__PURE__*/_jsx(SVG,{...restProps,className:cx(\"framer-kVQN1\",className),layoutId:layoutId,ref:ref,role:\"presentation\",style:{\"--1m973uw\":P_DcoRcrY,\"--js9iwy\":JEeZYcamG,...style},viewBox:\"0 0 24 24\",children:/*#__PURE__*/_jsx(\"use\",{href:href})});});const css=[`.framer-kVQN1 { -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 {\"P_DcoRcrY\":\"color\",\"JEeZYcamG\":\"width1\"}\n * @framerImmutableVariables true\n * @framerVector {\"name\":\"Arrow Left\",\"color\":{\"type\":\"variable\",\"value\":\"1m973uw\"},\"set\":{\"localId\":\"vectorSet/ZsiCCGPvG\",\"id\":\"ZsiCCGPvG\",\"moduleId\":\"Y7SpbVH16cWqMhj75z1M\"}}\n */const Icon=withCSS(Component,css,\"framer-kVQN1\");Icon.displayName=\"Arrow Left\";export default Icon;addPropertyControls(Icon,{P_DcoRcrY:{defaultValue:\"rgb(0, 0, 0)\",hidden:false,title:\"Color\",type:ControlType.Color},JEeZYcamG:{defaultValue:2,displayStepper:true,hidden:false,max:16,min:1,title:\"Width\",type:ControlType.Number}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"Icon\",\"slots\":[],\"annotations\":{\"framerVariables\":\"{\\\"P_DcoRcrY\\\":\\\"color\\\",\\\"JEeZYcamG\\\":\\\"width1\\\"}\",\"framerSupportedLayoutWidth\":\"any-prefer-fixed\",\"framerSupportedLayoutHeight\":\"any-prefer-fixed\",\"framerVector\":\"{\\\"name\\\":\\\"Arrow Left\\\",\\\"color\\\":{\\\"type\\\":\\\"variable\\\",\\\"value\\\":\\\"1m973uw\\\"},\\\"set\\\":{\\\"localId\\\":\\\"vectorSet/ZsiCCGPvG\\\",\\\"id\\\":\\\"ZsiCCGPvG\\\",\\\"moduleId\\\":\\\"Y7SpbVH16cWqMhj75z1M\\\"}}\",\"framerIntrinsicWidth\":\"24\",\"framerIntrinsicHeight\":\"24\",\"framerImmutableVariables\":\"true\",\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","import{jsx as _jsx}from\"react/jsx-runtime\";import{forwardRef,useCallback,useEffect,useRef}from\"react\";function setDisabledState(button,disabled){if(!button)return;button.setAttribute(\"aria-disabled\",disabled?\"true\":\"false\");}function findNamedDescendant(root,name){const selectors=[`[data-framer-name=\"${name}\"]`,`[data-name=\"${name}\"]`,`#${name}`,`[name=\"${name}\"]`,`[aria-label=\"${name}\"]`];for(const selector of selectors){const match=root.querySelector(selector);if(match instanceof HTMLElement)return match;}return null;}export function TestimonialCarouselControls(Component){return /*#__PURE__*/forwardRef((props,ref)=>{const rootRef=useRef(null);const setRefs=useCallback(node=>{rootRef.current=node;if(typeof ref===\"function\"){ref(node);}else if(ref&&typeof ref===\"object\"){ref.current=node;}},[ref]);useEffect(()=>{const root=rootRef.current;if(!root)return;const viewport=findNamedDescendant(root,\"testimonial-viewport\");const prevButton=findNamedDescendant(root,\"testimonial-prev\");const nextButton=findNamedDescendant(root,\"testimonial-next\");if(!viewport)return;const stepPx=()=>Math.max(1,viewport.clientWidth*.52);const updateDisabledState=()=>{const maxLeft=Math.max(0,viewport.scrollWidth-viewport.clientWidth);const atStart=viewport.scrollLeft<=1;const atEnd=viewport.scrollLeft>=maxLeft-1;setDisabledState(prevButton,atStart);setDisabledState(nextButton,atEnd);};const scrollByAmount=direction=>{const target=viewport.scrollLeft+direction*stepPx();viewport.scrollTo({left:target,behavior:\"smooth\"});};const onPrevClick=()=>{if(prevButton?.getAttribute(\"aria-disabled\")===\"true\")return;scrollByAmount(-1);};const onNextClick=()=>{if(nextButton?.getAttribute(\"aria-disabled\")===\"true\")return;scrollByAmount(1);};prevButton?.addEventListener(\"click\",onPrevClick);nextButton?.addEventListener(\"click\",onNextClick);viewport.addEventListener(\"scroll\",updateDisabledState,{passive:true});if(typeof window!==\"undefined\"){window.addEventListener(\"resize\",updateDisabledState);}updateDisabledState();return()=>{prevButton?.removeEventListener(\"click\",onPrevClick);nextButton?.removeEventListener(\"click\",onNextClick);viewport.removeEventListener(\"scroll\",updateDisabledState);if(typeof window!==\"undefined\"){window.removeEventListener(\"resize\",updateDisabledState);}};},[]);return /*#__PURE__*/_jsx(Component,{ref:setRefs,...props});});}\nexport const __FramerMetadata__ = {\"exports\":{\"TestimonialCarouselControls\":{\"type\":\"reactHoc\",\"name\":\"TestimonialCarouselControls\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./TestimonialCarouselControls.map"],"mappings":"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"}