{"version":3,"file":"Marquee.cjs","names":["createVarsResolver","getSpacing","factory","useProps","useStyles","Box","classes"],"sources":["../../../src/components/Marquee/Marquee.tsx"],"sourcesContent":["import {\n  Box,\n  BoxProps,\n  createVarsResolver,\n  ElementProps,\n  factory,\n  Factory,\n  getSpacing,\n  MantineSpacing,\n  StylesApiProps,\n  useProps,\n  useStyles,\n} from '../../core';\nimport classes from './Marquee.module.css';\n\nexport type MarqueeStylesNames = 'root' | 'content' | 'group';\nexport type MarqueeCssVariables = {\n  root:\n    | '--marquee-duration'\n    | '--marquee-gap'\n    | '--marquee-repeat'\n    | '--marquee-fade-color'\n    | '--marquee-fade-size';\n};\n\nexport interface MarqueeProps\n  extends BoxProps, StylesApiProps<MarqueeFactory>, ElementProps<'div'> {\n  /** Reverses animation direction @default false */\n  reverse?: boolean;\n\n  /** Pauses animation on hover @default false */\n  pauseOnHover?: boolean;\n\n  /** Content to scroll */\n  children: React.ReactNode;\n\n  /** Scroll orientation @default 'horizontal' */\n  orientation?: 'horizontal' | 'vertical';\n\n  /** Number of times children are repeated inline for seamless scrolling @default 4 */\n  repeat?: number;\n\n  /** Animation duration in ms @default 40000 */\n  duration?: number;\n\n  /** Gap between repeated children, key of `theme.spacing` or any valid CSS value @default 'md' */\n  gap?: MantineSpacing;\n\n  /** Whether to show gradient fade on edges, @default true */\n  fadeEdges?: boolean;\n\n  /** Color of the fade gradient, @default 'var(--mantine-color-body)' */\n  fadeEdgeColor?: string;\n\n  /** Size of the fade gradient, @default '5%' */\n  fadeEdgeSize?: string;\n}\n\nexport type MarqueeFactory = Factory<{\n  props: MarqueeProps;\n  ref: HTMLDivElement;\n  stylesNames: MarqueeStylesNames;\n  vars: MarqueeCssVariables;\n}>;\n\nconst defaultProps = {\n  repeat: 4,\n  duration: 100_000,\n  orientation: 'horizontal',\n  fadeEdges: true,\n} satisfies Partial<MarqueeProps>;\n\nconst varsResolver = createVarsResolver<MarqueeFactory>(\n  (_, { duration, gap, repeat, fadeEdgeColor, fadeEdgeSize }) => ({\n    root: {\n      '--marquee-duration': `${duration}ms`,\n      '--marquee-gap': getSpacing(gap),\n      '--marquee-repeat': (repeat ?? 4).toString(),\n      '--marquee-fade-color': fadeEdgeColor,\n      '--marquee-fade-size': fadeEdgeSize,\n    },\n  })\n);\n\nexport const Marquee = factory<MarqueeFactory>((_props) => {\n  const props = useProps('Marquee', defaultProps, _props);\n  const {\n    classNames,\n    className,\n    style,\n    styles,\n    unstyled,\n    vars,\n    children,\n    reverse,\n    pauseOnHover,\n    orientation,\n    repeat,\n    duration,\n    gap,\n    fadeEdges,\n    fadeEdgeColor,\n    fadeEdgeSize,\n    mod,\n    attributes,\n    ...others\n  } = props;\n\n  const getStyles = useStyles<MarqueeFactory>({\n    name: 'Marquee',\n    classes,\n    props,\n    className,\n    style,\n    classNames,\n    styles,\n    unstyled,\n    attributes,\n    vars,\n    varsResolver,\n  });\n\n  const repeatedChildren = Array(repeat)\n    .fill(0)\n    .map((_, index) => (\n      <div key={index} {...getStyles('group')}>\n        {children}\n      </div>\n    ));\n\n  return (\n    <Box\n      {...getStyles('root')}\n      mod={[{ orientation, reverse, pauseOnHover, 'fade-edges': fadeEdges }, mod]}\n      {...others}\n    >\n      <div {...getStyles('content')}>{repeatedChildren}</div>\n    </Box>\n  );\n});\n\nMarquee.classes = classes;\nMarquee.varsResolver = varsResolver;\nMarquee.displayName = '@mantine/core/Marquee';\n\nexport namespace Marquee {\n  export type Props = MarqueeProps;\n  export type StylesNames = MarqueeStylesNames;\n  export type CssVariables = MarqueeCssVariables;\n  export type Factory = MarqueeFactory;\n}\n"],"mappings":";;;;;;;;;;;AAiEA,MAAM,eAAe;CACnB,QAAQ;CACR,UAAU;CACV,aAAa;CACb,WAAW;CACZ;AAED,MAAM,eAAeA,6BAAAA,oBAClB,GAAG,EAAE,UAAU,KAAK,QAAQ,eAAe,oBAAoB,EAC9D,MAAM;CACJ,sBAAsB,GAAG,SAAS;CAClC,iBAAiBC,iBAAAA,WAAW,IAAI;CAChC,qBAAqB,UAAU,GAAG,UAAU;CAC5C,wBAAwB;CACxB,uBAAuB;CACxB,EACF,EACF;AAED,MAAa,UAAUC,gBAAAA,SAAyB,WAAW;CACzD,MAAM,QAAQC,kBAAAA,SAAS,WAAW,cAAc,OAAO;CACvD,MAAM,EACJ,YACA,WACA,OACA,QACA,UACA,MACA,UACA,SACA,cACA,aACA,QACA,UACA,KACA,WACA,eACA,cACA,KACA,YACA,GAAG,WACD;CAEJ,MAAM,YAAYC,mBAAAA,UAA0B;EAC1C,MAAM;EACN,SAAA,uBAAA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACD,CAAC;CAEF,MAAM,mBAAmB,MAAM,OAAO,CACnC,KAAK,EAAE,CACP,KAAK,GAAG,UACP,iBAAA,GAAA,kBAAA,KAAC,OAAD;EAAiB,GAAI,UAAU,QAAQ;EACpC;EACG,EAFI,MAEJ,CACN;AAEJ,QACE,iBAAA,GAAA,kBAAA,KAACC,YAAAA,KAAD;EACE,GAAI,UAAU,OAAO;EACrB,KAAK,CAAC;GAAE;GAAa;GAAS;GAAc,cAAc;GAAW,EAAE,IAAI;EAC3E,GAAI;YAEJ,iBAAA,GAAA,kBAAA,KAAC,OAAD;GAAK,GAAI,UAAU,UAAU;aAAG;GAAuB,CAAA;EACnD,CAAA;EAER;AAEF,QAAQ,UAAUC,uBAAAA;AAClB,QAAQ,eAAe;AACvB,QAAQ,cAAc"}