{"version":3,"file":"utils.mjs","sources":["../../../../../../theme/src/core/utils.ts"],"sourcesContent":["/* eslint-disable quote-props */\nimport { injectGlobal } from '@emotion/css'\nimport type {\n  CustomColorGroup,\n  Scheme,\n} from '@material/material-color-utilities'\nimport { hexFromArgb, rgbaFromArgb } from '@material/material-color-utilities'\nimport type ThemeMode from '../mode'\nimport type { AdditionalPalette, Palette, ParsedScheme, Theme } from './types'\n\nexport const parseShceme = (scheme: Scheme): ParsedScheme => {\n  const palette: Palette = {} as any\n  const styles: Record<string, string> = {} as any\n  for (const [key, value] of Object.entries(scheme.toJSON())) {\n    const token = key.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase()\n    const color = hexFromArgb(value)\n    const { r, g, b } = rgbaFromArgb(value)\n    palette[key as keyof Palette] = color\n    styles[`--md-sys-color-${token}`] = color\n    styles[`--md-sys-color-${token}-rgb`] = `${r} ${g} ${b}`\n  }\n\n  return { palette, styles }\n}\n\nexport const parseCustomScheme = (\n  schemes: CustomColorGroup[],\n  mode: ThemeMode\n) => {\n  const palette: AdditionalPalette = {} as any\n  const styles: Record<string, string> = {} as any\n\n  schemes.forEach(scheme => {\n    const { name } = scheme.color\n    const _palette = mode === 'light' ? scheme.light : scheme.dark\n    for (const [key, value] of Object.entries(_palette)) {\n      const _key = key.startsWith('on')\n        ? key.replace('Color', `${name[0].toUpperCase()}${name.slice(1)}`)\n        : key.replace('color', name)\n      const token = _key.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase()\n      const color = hexFromArgb(value)\n      const { r, g, b } = rgbaFromArgb(value)\n      palette[_key as keyof AdditionalPalette] = color\n      styles[`--md-sys-color-${token}`] = color\n      styles[`--md-sys-color-${token}-rgb`] = `${r} ${g} ${b}`\n    }\n  })\n\n  return { palette, styles }\n}\n\nexport const mergeParsedScheme = (...args: ParsedScheme[]): ParsedScheme => {\n  const palette: Palette = {} as any\n  const styles: Record<string, string> = {} as any\n\n  args.forEach(parsedScheme => {\n    Object.assign(palette, parsedScheme.palette)\n    Object.assign(styles, parsedScheme.styles)\n  })\n\n  return { palette, styles }\n}\n\nexport const injectJSS = (\n  lightPalette: ParsedScheme,\n  darkPalette: ParsedScheme,\n  theme: Theme\n) => {\n  const { fontFamily, htmlFontSize } = theme.typography\n\n  // Init style\n  injectGlobal({\n    ':root': {\n      colorScheme: 'light',\n      ...lightPalette?.styles,\n    },\n    ':root[data-theme=\"dark\"]': {\n      colorScheme: 'dark',\n      ...darkPalette?.styles,\n    },\n    html: {\n      fontSize: htmlFontSize,\n    },\n    body: {\n      fontFamily,\n      color: 'var(--md-sys-color-on-surface)',\n      fontSize: '1rem',\n    },\n  })\n}\n"],"names":[],"mappings":"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"}