{"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"}