{"version":3,"file":"Loader.cjs","sources":["../../../src/components/Loader/Loader.tsx"],"sourcesContent":["import {\n  Box,\n  BoxProps,\n  createVarsResolver,\n  factory,\n  Factory,\n  getSize,\n  getThemeColor,\n  RaikouColor,\n  RaikouSize,\n  StylesApiProps,\n  useProps,\n  useStyles,\n} from '../../core';\nimport type { RaikouLoader, RaikouLoadersRecord } from './Loader.types';\nimport { Bars } from './loaders/Bars';\nimport { Dots } from './loaders/Dots';\nimport { Oval } from './loaders/Oval';\nimport { Progress } from './loaders/Progress';\nimport { Trail } from './loaders/Trail';\nimport { LoaderRootStyle } from './Loader.css';\n\nexport type LoaderStylesNames = 'root';\nexport type LoaderCssVariables = {\n  root: '--loader-size' | '--loader-color';\n};\n\nexport interface LoaderProps\n  extends BoxProps,\n    StylesApiProps<LoaderFactory>,\n    Omit<React.ComponentPropsWithoutRef<'svg'>, keyof BoxProps> {\n  /** Controls `width` and `height` of the loader. `Loader` has predefined `xs`-`xl` values. Numbers are converted to rem. Default value is `'md'` */\n  size?: RaikouSize | (string & {}) | number;\n\n  /** Key of `theme.colors` or any valid CSS color, default value is `theme.primaryColor`  */\n  color?: RaikouColor;\n\n  /** Loader type, key of `loaders` prop, default value is `'oval'` */\n  type?: RaikouLoader;\n\n  /** Object of loaders components, can be customized via default props or inline. Default value contains `bars`, `oval` and `dots` */\n  loaders?: RaikouLoadersRecord;\n\n  /** Overrides default loader with given content */\n  children?: React.ReactNode;\n}\n\nexport type LoaderFactory = Factory<{\n  props: LoaderProps;\n  ref: HTMLSpanElement;\n  stylesNames: LoaderStylesNames;\n  vars: LoaderCssVariables;\n  staticComponents: {\n    defaultLoaders: typeof defaultLoaders;\n  };\n}>;\n\nexport const defaultLoaders: RaikouLoadersRecord = {\n  bars: Bars,\n  oval: Oval,\n  dots: Dots,\n  progress: Progress,\n  trail: Trail,\n};\n\nconst defaultProps: Partial<LoaderProps> = {\n  loaders: defaultLoaders,\n  type: 'oval',\n};\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, ref) => {\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    ...others\n  } = props;\n\n  const getStyles = useStyles<LoaderFactory>({\n    name: 'Loader',\n    props,\n    classes: {\n      root: LoaderRootStyle,\n    },\n    className,\n    style,\n    classNames,\n    styles,\n    unstyled,\n    vars,\n    varsResolver,\n  });\n\n  if (children) {\n    return (\n      <Box {...getStyles('root')} ref={ref as any} {...(others as any)}>\n        {children}\n      </Box>\n    );\n  }\n\n  return (\n    <Box\n      {...getStyles('root')}\n      ref={ref}\n      component={(loaders as any)[type!]}\n      variant={variant}\n      size={size}\n      {...others}\n    />\n  );\n});\n\nLoader.defaultLoaders = defaultLoaders;\nLoader.displayName = '@raikou/core/Loader';\n"],"names":["Bars","Oval","Dots","Progress","Trail","createVarsResolver","getSize","getThemeColor","factory","useProps","useStyles","LoaderRootStyle","jsx","Box"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAyDO,MAAM,cAAsC,GAAA;AAAA,EACjD,IAAM,EAAAA,UAAA;AAAA,EACN,IAAM,EAAAC,YAAA;AAAA,EACN,IAAM,EAAAC,YAAA;AAAA,EACN,QAAU,EAAAC,gBAAA;AAAA,EACV,KAAO,EAAAC;AACT;AAEA,MAAM,YAAqC,GAAA;AAAA,EACzC,OAAS,EAAA,cAAA;AAAA,EACT,IAAM,EAAA;AACR,CAAA;AAEA,MAAM,eAAeC,qCAAkC,CAAA,CAAC,OAAO,EAAE,IAAA,EAAM,OAAa,MAAA;AAAA,EAClF,IAAM,EAAA;AAAA,IACJ,eAAA,EAAiBC,eAAQ,CAAA,IAAA,EAAM,aAAa,CAAA;AAAA,IAC5C,gBAAkB,EAAA,KAAA,GAAQC,2BAAc,CAAA,KAAA,EAAO,KAAK,CAAI,GAAA,KAAA;AAAA;AAE5D,CAAE,CAAA,CAAA;AAEK,MAAM,MAAS,GAAAC,eAAA,CAAuB,CAAC,MAAA,EAAQ,GAAQ,KAAA;AAC5D,EAAA,MAAM,KAAQ,GAAAC,iBAAA,CAAS,QAAU,EAAA,YAAA,EAAc,MAAM,CAAA;AACrD,EAAM,MAAA;AAAA,IACJ,IAAA;AAAA,IACA,KAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA;AAAA,IACA,SAAA;AAAA,IACA,KAAA;AAAA,IACA,UAAA;AAAA,IACA,MAAA;AAAA,IACA,QAAA;AAAA,IACA,OAAA;AAAA,IACA,OAAA;AAAA,IACA,QAAA;AAAA,IACA,GAAG;AAAA,GACD,GAAA,KAAA;AAEJ,EAAA,MAAM,YAAYC,mBAAyB,CAAA;AAAA,IACzC,IAAM,EAAA,QAAA;AAAA,IACN,KAAA;AAAA,IACA,OAAS,EAAA;AAAA,MACP,IAAM,EAAAC;AAAA,KACR;AAAA,IACA,SAAA;AAAA,IACA,KAAA;AAAA,IACA,UAAA;AAAA,IACA,MAAA;AAAA,IACA,QAAA;AAAA,IACA,IAAA;AAAA,IACA;AAAA,GACD,CAAA;AAED,EAAA,IAAI,QAAU,EAAA;AACZ,IACE,uBAAAC,cAAA,CAACC,WAAK,GAAG,SAAA,CAAU,MAAM,CAAG,EAAA,GAAA,EAAkB,GAAI,MAAA,EAC/C,QACH,EAAA,CAAA;AAAA;AAIJ,EACE,uBAAAD,cAAA;AAAA,IAACC,OAAA;AAAA,IAAA;AAAA,MACE,GAAG,UAAU,MAAM,CAAA;AAAA,MACpB,GAAA;AAAA,MACA,SAAA,EAAY,QAAgB,IAAK,CAAA;AAAA,MACjC,OAAA;AAAA,MACA,IAAA;AAAA,MACC,GAAG;AAAA;AAAA,GACN;AAEJ,CAAC;AAED,MAAA,CAAO,cAAiB,GAAA,cAAA;AACxB,MAAA,CAAO,WAAc,GAAA,qBAAA;;;;;"}