{"version":3,"file":"CarouselVariables.mjs","names":[],"sources":["../../src/CarouselVariables/CarouselVariables.tsx"],"sourcesContent":["import {\n  filterProps,\n  getBaseValue,\n  getSortedBreakpoints,\n  getSpacing,\n  InlineStyles,\n  keys,\n  MantineBreakpoint,\n  px,\n  rem,\n  useMantineTheme,\n} from '@mantine/core';\nimport type { CarouselProps } from '../Carousel';\n\ninterface CarouselVariablesProps extends CarouselProps {\n  selector: string;\n}\n\nexport function CarouselVariables({ slideGap, slideSize, selector }: CarouselVariablesProps) {\n  const theme = useMantineTheme();\n\n  const baseStyles: Record<string, string | undefined> = filterProps({\n    '--carousel-slide-gap': getSpacing(getBaseValue(slideGap)),\n    '--carousel-slide-size': rem(getBaseValue(slideSize)),\n  });\n\n  const queries = keys(theme.breakpoints).reduce<Record<string, Record<string, any>>>(\n    (acc, breakpoint) => {\n      if (!acc[breakpoint]) {\n        acc[breakpoint] = {};\n      }\n\n      if (typeof slideGap === 'object' && slideGap[breakpoint] !== undefined) {\n        acc[breakpoint]['--carousel-slide-gap'] = getSpacing(slideGap[breakpoint]);\n      }\n\n      if (typeof slideSize === 'object' && slideSize[breakpoint] !== undefined) {\n        acc[breakpoint]['--carousel-slide-size'] = getSpacing(slideSize[breakpoint]);\n      }\n\n      return acc;\n    },\n    {}\n  );\n\n  const sortedBreakpoints = getSortedBreakpoints(keys(queries), theme.breakpoints).filter(\n    (breakpoint) => keys(queries[breakpoint.value]).length > 0\n  );\n\n  const media = sortedBreakpoints.map((breakpoint) => ({\n    query: `(min-width: ${theme.breakpoints[breakpoint.value as MantineBreakpoint]})`,\n    styles: queries[breakpoint.value],\n  }));\n\n  return <InlineStyles styles={baseStyles} media={media} selector={selector} />;\n}\n\nfunction getBreakpoints(values: unknown) {\n  if (typeof values === 'object' && values !== null) {\n    return keys(values);\n  }\n\n  return [];\n}\n\nfunction sortBreakpoints(breakpoints: string[]) {\n  return breakpoints.sort((a, b) => (px(a) as number) - (px(b) as number));\n}\n\nfunction getUniqueBreakpoints({ slideGap, slideSize }: Omit<CarouselVariablesProps, 'selector'>) {\n  const breakpoints = Array.from(\n    new Set([...getBreakpoints(slideGap), ...getBreakpoints(slideSize)])\n  );\n\n  return sortBreakpoints(breakpoints);\n}\n\nexport function CarouselContainerVariables({\n  slideGap,\n  slideSize,\n  selector,\n}: CarouselVariablesProps) {\n  const baseStyles: Record<string, string | undefined> = filterProps({\n    '--carousel-slide-gap': getSpacing(getBaseValue(slideGap)),\n    '--carousel-slide-size': rem(getBaseValue(slideSize)),\n  });\n\n  const queries = getUniqueBreakpoints({ slideGap, slideSize }).reduce<\n    Record<string, Record<string, any>>\n  >((acc, breakpoint) => {\n    if (!acc[breakpoint]) {\n      acc[breakpoint] = {};\n    }\n\n    if (typeof slideGap === 'object' && slideGap[breakpoint] !== undefined) {\n      acc[breakpoint]['--carousel-slide-gap'] = getSpacing(slideGap[breakpoint]);\n    }\n\n    if (typeof slideSize === 'object' && slideSize[breakpoint] !== undefined) {\n      acc[breakpoint]['--carousel-slide-size'] = getSpacing(slideSize[breakpoint]);\n    }\n\n    return acc;\n  }, {});\n\n  const media = Object.keys(queries).map((breakpoint) => ({\n    query: `carousel (min-width: ${breakpoint})`,\n    styles: queries[breakpoint],\n  }));\n\n  return <InlineStyles styles={baseStyles} container={media} selector={selector} />;\n}\n"],"mappings":";;;;AAkBA,SAAgB,kBAAkB,EAAE,UAAU,WAAW,YAAoC;CAC3F,MAAM,QAAQ,gBAAgB;CAE9B,MAAM,aAAiD,YAAY;EACjE,wBAAwB,WAAW,aAAa,QAAQ,CAAC;EACzD,yBAAyB,IAAI,aAAa,SAAS,CAAC;CACtD,CAAC;CAED,MAAM,UAAU,KAAK,MAAM,WAAW,EAAE,QACrC,KAAK,eAAe;EACnB,IAAI,CAAC,IAAI,aACP,IAAI,cAAc,CAAC;EAGrB,IAAI,OAAO,aAAa,YAAY,SAAS,gBAAgB,KAAA,GAC3D,IAAI,YAAY,0BAA0B,WAAW,SAAS,WAAW;EAG3E,IAAI,OAAO,cAAc,YAAY,UAAU,gBAAgB,KAAA,GAC7D,IAAI,YAAY,2BAA2B,WAAW,UAAU,WAAW;EAG7E,OAAO;CACT,GACA,CAAC,CACH;CAWA,OAAO,oBAAC,cAAD;EAAc,QAAQ;EAAY,OATf,qBAAqB,KAAK,OAAO,GAAG,MAAM,WAAW,EAAE,QAC9E,eAAe,KAAK,QAAQ,WAAW,MAAM,EAAE,SAAS,CAG7B,EAAE,KAAK,gBAAgB;GACnD,OAAO,eAAe,MAAM,YAAY,WAAW,OAA4B;GAC/E,QAAQ,QAAQ,WAAW;EAC7B,EAEoD;EAAa;CAAW,CAAA;AAC9E;AAEA,SAAS,eAAe,QAAiB;CACvC,IAAI,OAAO,WAAW,YAAY,WAAW,MAC3C,OAAO,KAAK,MAAM;CAGpB,OAAO,CAAC;AACV;AAEA,SAAS,gBAAgB,aAAuB;CAC9C,OAAO,YAAY,MAAM,GAAG,MAAO,GAAG,CAAC,IAAgB,GAAG,CAAC,CAAY;AACzE;AAEA,SAAS,qBAAqB,EAAE,UAAU,aAAuD;CAK/F,OAAO,gBAJa,MAAM,KACxB,IAAI,IAAI,CAAC,GAAG,eAAe,QAAQ,GAAG,GAAG,eAAe,SAAS,CAAC,CAAC,CAGpC,CAAC;AACpC;AAEA,SAAgB,2BAA2B,EACzC,UACA,WACA,YACyB;CACzB,MAAM,aAAiD,YAAY;EACjE,wBAAwB,WAAW,aAAa,QAAQ,CAAC;EACzD,yBAAyB,IAAI,aAAa,SAAS,CAAC;CACtD,CAAC;CAED,MAAM,UAAU,qBAAqB;EAAE;EAAU;CAAU,CAAC,EAAE,QAE3D,KAAK,eAAe;EACrB,IAAI,CAAC,IAAI,aACP,IAAI,cAAc,CAAC;EAGrB,IAAI,OAAO,aAAa,YAAY,SAAS,gBAAgB,KAAA,GAC3D,IAAI,YAAY,0BAA0B,WAAW,SAAS,WAAW;EAG3E,IAAI,OAAO,cAAc,YAAY,UAAU,gBAAgB,KAAA,GAC7D,IAAI,YAAY,2BAA2B,WAAW,UAAU,WAAW;EAG7E,OAAO;CACT,GAAG,CAAC,CAAC;CAOL,OAAO,oBAAC,cAAD;EAAc,QAAQ;EAAY,WAL3B,OAAO,KAAK,OAAO,EAAE,KAAK,gBAAgB;GACtD,OAAO,wBAAwB,WAAW;GAC1C,QAAQ,QAAQ;EAClB,EAEwD;EAAa;CAAW,CAAA;AAClF"}