{"version":3,"file":"ClientTickerLine.C8aFKryz.mjs","names":["useRef","useState","useMemo","useCallback"],"sources":["https:/framerusercontent.com/modules/7WLoPiPILX4Hjg532Shr/7qQs4dmj5wP2XeZ3cSGI/ClientTickerLine.js"],"sourcesContent":["import{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{useCallback,useMemo,useRef,useState,startTransition}from\"react\";import{addPropertyControls,ControlType,useIsStaticRenderer}from\"framer\";import{useInView}from\"framer-motion\";const defaultLogos=[{image:{src:\"https://framerusercontent.com/images/wOOA9jnpBZeJnEBz0bCwqV9ERMs.png\",alt:\"Client logo 1\"}},{image:{src:\"https://framerusercontent.com/images/geKANsTAygyvutkyEE2xnFt36IA.png\",alt:\"Client logo 2\"}},{image:{src:\"https://framerusercontent.com/images/xctW820wa4SOERUu51Zi5j85W0.png\",alt:\"Client logo 3\"}},{image:{src:\"https://framerusercontent.com/images/O7Pt2fLKFXtvMcbB60s4wJXFCw.png\",alt:\"Client logo 4\"}},{image:{src:\"https://framerusercontent.com/images/QPimCRAYLWgubXVeOBNXAQVyLpY.png\",alt:\"Client logo 5\"}},{image:{src:\"https://framerusercontent.com/images/3qcWZdzYfGC5JELQl141a2a3w.png\",alt:\"Client logo 6\"}},{image:{src:\"https://framerusercontent.com/images/4aQNQ6MbDrST7tsUF7f6tfsxx58.png\",alt:\"Client logo 7\"}},{image:{src:\"https://framerusercontent.com/images/ZKaCiKPATwnvCsNUqdcGl1isooM.png\",alt:\"Client logo 8\"}},{image:{src:\"https://framerusercontent.com/images/uFMTM2mbRkJvXo3b2JPhU7KDyTI.png\",alt:\"Client logo 9\"}},{image:{src:\"https://framerusercontent.com/images/3QpvuvWhExo6Rkz9lRaZqHFvHoY.png\",alt:\"Client logo 10\"}},{image:{src:\"https://framerusercontent.com/images/qR05EVMoWpAV4FprArSPqtofuqY.png\",alt:\"Client logo 11\"}},{image:{src:\"https://framerusercontent.com/images/hHglyDVqttZuQTK3CDK6Dj3r6no.png\",alt:\"Client logo 12\"}},{image:{src:\"https://framerusercontent.com/images/w7RpETThyi8pMf5NQwy1d6bK6d0.png\",alt:\"Client logo 13\"}},{image:{src:\"https://framerusercontent.com/images/Al6s6u1ZQWv0loR1TwaWRvWTs.png\",alt:\"Client logo 14\"}}];/**\n * User request: Create a new Framer code component named ClientTickerLine for a shared layout template with a full-width black horizontal ticker line (square edges, ~122px height) and a continuous looping row of the provided client logos in order, plus controls for height, backgroundColor, speed, gap, paddingX, logoHeight, and images array.\n *//**\n * @framerSupportedLayoutWidth any-prefer-fixed\n * @framerSupportedLayoutHeight fixed\n */export default function ClientTickerLine(props){const{height,backgroundColor,speed,gap,paddingX,logoHeight,pauseOnHover,animate=true,logosVisible=0,images=defaultLogos,style}=props;const isStatic=useIsStaticRenderer();const containerRef=useRef(null);const isInView=useInView(containerRef,{amount:.1});const[hovered,setHovered]=useState(false);const safeImages=useMemo(()=>images&&images.length>0?images:defaultLogos,[images]);const duration=useMemo(()=>{const estimatedLogoWidth=logoHeight*1.8;const rowWidth=safeImages.length*estimatedLogoWidth+Math.max(0,safeImages.length-1)*gap+paddingX*2;const pxPerSecond=Math.max(20,speed);return Math.max(8,rowWidth/pxPerSecond);},[safeImages.length,logoHeight,gap,paddingX,speed]);const shouldPause=isStatic||!isInView||pauseOnHover&&hovered;const marqueeStyle=animate?{animationName:\"clientTickerLineMarquee\",animationDuration:`${duration}s`,animationTimingFunction:\"linear\",animationIterationCount:\"infinite\",animationPlayState:shouldPause?\"paused\":\"running\",willChange:\"transform\"}:{};// Fit-Modus: feste Anzahl Logos gleichmäßig über die volle Breite, Größe passt sich an.\nconst fitCount=Math.max(0,Math.floor(logosVisible));const useFit=fitCount>0;const fitImages=useFit?safeImages.slice(0,Math.min(fitCount,safeImages.length)):[];const onMouseEnter=useCallback(()=>{startTransition(()=>setHovered(true));},[]);const onMouseLeave=useCallback(()=>{startTransition(()=>setHovered(false));},[]);const logoNodes=useMemo(()=>{return safeImages.map((item,index)=>{const image=item.image;return /*#__PURE__*/_jsx(\"div\",{style:{flex:\"0 0 auto\",height:logoHeight,display:\"flex\",alignItems:\"center\",justifyContent:\"center\"},children:image?.src?/*#__PURE__*/_jsx(\"img\",{src:image.src,srcSet:image.srcSet,alt:image.alt||\"\",draggable:false,style:{height:\"100%\",width:\"auto\",maxWidth:\"none\",objectFit:\"contain\",display:\"block\",userSelect:\"none\",pointerEvents:\"none\"}}):null},`logo-${index}`);});},[safeImages,logoHeight]);return /*#__PURE__*/_jsxs(\"div\",{ref:containerRef,style:{position:\"relative\",width:\"100%\",height,overflow:\"hidden\",backgroundColor,borderRadius:0,...style},onMouseEnter:onMouseEnter,onMouseLeave:onMouseLeave,children:[/*#__PURE__*/_jsx(\"style\",{children:`\n                @keyframes clientTickerLineMarquee {\n                    0% { transform: translate3d(0, 0, 0); }\n                    100% { transform: translate3d(-50%, 0, 0); }\n                }\n            `}),useFit?/*#__PURE__*/_jsx(\"div\",{style:{display:\"flex\",width:\"100%\",height:\"100%\",alignItems:\"center\",gap,paddingLeft:paddingX,paddingRight:paddingX,boxSizing:\"border-box\"},children:fitImages.map((item,index)=>{const image=item.image;return /*#__PURE__*/_jsx(\"div\",{style:{flex:\"1 1 0\",minWidth:0,height:logoHeight,display:\"flex\",alignItems:\"center\",justifyContent:\"center\"},children:image?.src?/*#__PURE__*/_jsx(\"img\",{src:image.src,srcSet:image.srcSet,alt:image.alt||\"\",draggable:false,style:{maxWidth:\"100%\",maxHeight:\"100%\",width:\"auto\",height:\"auto\",objectFit:\"contain\",display:\"block\",userSelect:\"none\",pointerEvents:\"none\"}}):null},`fit-${index}`);})}):/*#__PURE__*/_jsx(\"div\",{style:{display:\"flex\",width:\"max-content\",minWidth:\"max-content\",height:\"100%\",alignItems:\"center\",...marqueeStyle},children:[0,1].map(copyIndex=>/*#__PURE__*/_jsx(\"div\",{style:{flex:\"0 0 auto\",display:\"flex\",alignItems:\"center\",gap,paddingLeft:paddingX,paddingRight:paddingX,height:\"100%\"},children:logoNodes},`group-${copyIndex}`))})]});}addPropertyControls(ClientTickerLine,{height:{type:ControlType.Number,title:\"Height\",defaultValue:122,min:60,max:260,step:1,unit:\"px\"},backgroundColor:{type:ControlType.Color,title:\"Background\",defaultValue:\"#000000\"},animate:{type:ControlType.Boolean,title:\"Animation\",enabledTitle:\"An\",disabledTitle:\"Aus\",defaultValue:true},speed:{type:ControlType.Number,title:\"Speed\",defaultValue:110,min:20,max:400,step:5},gap:{type:ControlType.Number,title:\"Gap\",defaultValue:26,min:0,max:120,step:1,unit:\"px\"},logosVisible:{type:ControlType.Number,title:\"Logos anzeigen\",description:\"0 = Aus (Lauf-Modus). Ab 1: zeigt genau so viele Logos gleichm\\xe4\\xdfig \\xfcber die volle Breite verteilt, Gr\\xf6\\xdfe passt sich automatisch an, nichts wird abgeschnitten. Abstand dazwischen \\xfcber Gap.\",defaultValue:0,min:0,max:20,step:1},paddingX:{type:ControlType.Number,title:\"Padding X\",defaultValue:28,min:0,max:240,step:1,unit:\"px\"},logoHeight:{type:ControlType.Number,title:\"Logo Height\",defaultValue:42,min:12,max:100,step:1,unit:\"px\"},pauseOnHover:{type:ControlType.Boolean,title:\"Pause Hover\",defaultValue:false},images:{type:ControlType.Array,title:\"Images\",defaultValue:defaultLogos,control:{type:ControlType.Object,controls:{image:{type:ControlType.ResponsiveImage,title:\"Logo\"}}}}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"ClientTickerLine\",\"slots\":[],\"annotations\":{\"framerSupportedLayoutWidth\":\"any-prefer-fixed\",\"framerContractVersion\":\"1\",\"framerSupportedLayoutHeight\":\"fixed\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./ClientTickerLine.map"],"mappings":"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"}