UNPKG

@mantine/carousel

Version:
1 lines 5.15 kB
{"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"}