UNPKG

@mantine/core

Version:

React components library focused on usability, accessibility and developer experience

1 lines 4.14 kB
{"version":3,"file":"Loader.cjs","names":["Bars","Oval","Dots","createVarsResolver","getSize","getThemeColor","factory","useProps","useStyles","Box","classes"],"sources":["../../../src/components/Loader/Loader.tsx"],"sourcesContent":["import {\n Box,\n BoxProps,\n createVarsResolver,\n ElementProps,\n factory,\n Factory,\n getSize,\n getThemeColor,\n MantineColor,\n MantineSize,\n StylesApiProps,\n useProps,\n useStyles,\n} from '../../core';\nimport type { MantineLoader, MantineLoadersRecord } from './Loader.types';\nimport { Bars } from './loaders/Bars';\nimport { Dots } from './loaders/Dots';\nimport { Oval } from './loaders/Oval';\nimport classes from './Loader.module.css';\n\nexport type LoaderStylesNames = 'root';\nexport type LoaderCssVariables = {\n root: '--loader-size' | '--loader-color';\n};\n\nexport interface LoaderProps\n extends BoxProps, StylesApiProps<LoaderFactory>, ElementProps<'svg', 'display' | 'opacity'> {\n /** Controls `width` and `height` of the loader. `Loader` has predefined `xs`-`xl` values. Numbers are converted to rem. @default 'md' */\n size?: MantineSize | (string & {}) | number;\n\n /** Key of `theme.colors` or any valid CSS color @default theme.primaryColor */\n color?: MantineColor;\n\n /** Loader type, key of `loaders` prop @default 'oval' */\n type?: MantineLoader;\n\n /** Object of loaders components, can be customized via default props or inline. */\n loaders?: MantineLoadersRecord;\n\n /** Overrides default loader with given content */\n children?: React.ReactNode;\n}\n\nexport type LoaderFactory = Factory<{\n props: LoaderProps;\n ref: SVGSVGElement;\n stylesNames: LoaderStylesNames;\n vars: LoaderCssVariables;\n staticComponents: {\n defaultLoaders: typeof defaultLoaders;\n };\n}>;\n\nexport const defaultLoaders: MantineLoadersRecord = {\n bars: Bars,\n oval: Oval,\n dots: Dots,\n};\n\nconst defaultProps = {\n loaders: defaultLoaders,\n type: 'oval',\n} satisfies Partial<LoaderProps>;\n\nconst varsResolver = createVarsResolver<LoaderFactory>((theme, { size, color }) => ({\n root: {\n '--loader-size': getSize(size, 'loader-size'),\n '--loader-color': color ? getThemeColor(color, theme) : undefined,\n },\n}));\n\nexport const Loader = factory<LoaderFactory>((_props) => {\n const props = useProps('Loader', defaultProps, _props);\n const {\n size,\n color,\n type,\n vars,\n className,\n style,\n classNames,\n styles,\n unstyled,\n loaders,\n variant,\n children,\n attributes,\n ...others\n } = props;\n\n const getStyles = useStyles<LoaderFactory>({\n name: 'Loader',\n props,\n classes,\n className,\n style,\n classNames,\n styles,\n unstyled,\n attributes,\n vars,\n varsResolver,\n });\n\n if (children) {\n return (\n <Box {...getStyles('root')} {...(others as any)}>\n {children}\n </Box>\n );\n }\n\n return (\n <Box\n {...getStyles('root')}\n component={loaders[type]}\n variant={variant}\n size={size}\n {...others}\n />\n );\n});\n\nLoader.defaultLoaders = defaultLoaders;\nLoader.classes = classes;\nLoader.varsResolver = varsResolver;\nLoader.displayName = '@mantine/core/Loader';\n"],"mappings":";;;;;;;;;;;;;;;AAsDA,MAAa,iBAAuC;CAClD,MAAMA,aAAAA;CACN,MAAMC,aAAAA;CACN,MAAMC,aAAAA;CACP;AAED,MAAM,eAAe;CACnB,SAAS;CACT,MAAM;CACP;AAED,MAAM,eAAeC,6BAAAA,oBAAmC,OAAO,EAAE,MAAM,aAAa,EAClF,MAAM;CACJ,iBAAiBC,iBAAAA,QAAQ,MAAM,cAAc;CAC7C,kBAAkB,QAAQC,wBAAAA,cAAc,OAAO,MAAM,GAAG,KAAA;CACzD,EACF,EAAE;AAEH,MAAa,SAASC,gBAAAA,SAAwB,WAAW;CACvD,MAAM,QAAQC,kBAAAA,SAAS,UAAU,cAAc,OAAO;CACtD,MAAM,EACJ,MACA,OACA,MACA,MACA,WACA,OACA,YACA,QACA,UACA,SACA,SACA,UACA,YACA,GAAG,WACD;CAEJ,MAAM,YAAYC,mBAAAA,UAAyB;EACzC,MAAM;EACN;EACA,SAAA,sBAAA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACD,CAAC;AAEF,KAAI,SACF,QACE,iBAAA,GAAA,kBAAA,KAACC,YAAAA,KAAD;EAAK,GAAI,UAAU,OAAO;EAAE,GAAK;EAC9B;EACG,CAAA;AAIV,QACE,iBAAA,GAAA,kBAAA,KAACA,YAAAA,KAAD;EACE,GAAI,UAAU,OAAO;EACrB,WAAW,QAAQ;EACV;EACH;EACN,GAAI;EACJ,CAAA;EAEJ;AAEF,OAAO,iBAAiB;AACxB,OAAO,UAAUC,sBAAAA;AACjB,OAAO,eAAe;AACtB,OAAO,cAAc"}