angular-material-css-vars
Version:
Little library to use css variables for @angular/material
1 lines • 40.1 kB
Source Map (JSON)
{"version":3,"file":"angular-material-css-vars.mjs","sources":["../../../projects/material-css-vars/src/lib/model.ts","../../../projects/material-css-vars/src/lib/default-cfg.const.ts","../../../projects/material-css-vars/src/mat-css-config-token.const.ts","../../../projects/material-css-vars/src/lib/material-css-vars.service.ts","../../../projects/material-css-vars/src/lib/material-css-vars.module.ts","../../../projects/material-css-vars/src/public-api.ts","../../../projects/material-css-vars/src/angular-material-css-vars.ts"],"sourcesContent":["export type HueValue =\n | \"50\"\n | \"100\"\n | \"200\"\n | \"300\"\n | \"400\"\n | \"500\"\n | \"600\"\n | \"700\"\n | \"800\"\n | \"900\"\n | \"A100\"\n | \"A200\"\n | \"A400\"\n | \"A700\";\n\nexport enum MatCssPalettePrefix {\n Primary = \"--palette-primary-\",\n Accent = \"--palette-accent-\",\n Warn = \"--palette-warn-\",\n}\n\nexport interface MatCssHueColorMapItem {\n hue: HueValue;\n isLight: boolean;\n color: {\n r: number;\n g: number;\n b: number;\n a: number;\n str: string;\n };\n}\n\nexport interface MatCssHueColorContrastMapItem extends MatCssHueColorMapItem {\n contrast: {\n r: number;\n g: number;\n b: number;\n a: number;\n str: string;\n };\n}\n\nexport interface MaterialCssColorMapperEntry {\n name: HueValue;\n map: [number, number, number];\n}\n\nexport interface MaterialCssVariablesConfig {\n isAutoContrast: boolean;\n isAlternativeColorAlgorithm: boolean;\n\n darkThemeClass: string;\n lightThemeClass: string;\n\n /**\n * Selector to which the CSS variables are added.\n * If not specified, the document's HTML element is used.\n */\n rootSelector?: string;\n\n colorMap: MaterialCssColorMapperEntry[];\n sortedHues: HueValue[];\n\n isDarkTheme?: boolean;\n primary?: string;\n accent?: string;\n warn?: string;\n}\n\nexport enum MaterialCssVariables {\n \"Primary50\" = \"--palette-primary-50\",\n \"Primary100\" = \"--palette-primary-100\",\n \"Primary200\" = \"--palette-primary-200\",\n \"Primary300\" = \"--palette-primary-300\",\n \"Primary400\" = \"--palette-primary-400\",\n \"Primary500\" = \"--palette-primary-500\",\n \"Primary600\" = \"--palette-primary-600\",\n \"Primary700\" = \"--palette-primary-700\",\n \"Primary800\" = \"--palette-primary-800\",\n \"Primary900\" = \"--palette-primary-900\",\n \"PrimaryA100\" = \"--palette-primary-A100\",\n \"PrimaryA200\" = \"--palette-primary-A200\",\n \"PrimaryA400\" = \"--palette-primary-A400\",\n \"PrimaryA700\" = \"--palette-primary-A700\",\n\n \"PrimaryContrast50\" = \"--palette-primary-contrast-50\",\n \"PrimaryContrast100\" = \"--palette-primary-contrast-100\",\n \"PrimaryContrast200\" = \"--palette-primary-contrast-200\",\n \"PrimaryContrast300\" = \"--palette-primary-contrast-300\",\n \"PrimaryContrast400\" = \"--palette-primary-contrast-400\",\n \"PrimaryContrast500\" = \"--palette-primary-contrast-500\",\n \"PrimaryContrast600\" = \"--palette-primary-contrast-600\",\n \"PrimaryContrast700\" = \"--palette-primary-contrast-700\",\n \"PrimaryContrast800\" = \"--palette-primary-contrast-800\",\n \"PrimaryContrast900\" = \"--palette-primary-contrast-900\",\n \"PrimaryContrastA100\" = \"--palette-primary-contrast-A100\",\n \"PrimaryContrastA200\" = \"--palette-primary-contrast-A200\",\n \"PrimaryContrastA400\" = \"--palette-primary-contrast-A400\",\n \"PrimaryContrastA700\" = \"--palette-primary-contrast-A700\",\n\n // ACCENT\n \"Accent50\" = \"--palette-accent-50\",\n \"Accent100\" = \"--palette-accent-100\",\n \"Accent200\" = \"--palette-accent-200\",\n \"Accent300\" = \"--palette-accent-300\",\n \"Accent400\" = \"--palette-accent-400\",\n \"Accent500\" = \"--palette-accent-500\",\n \"Accent600\" = \"--palette-accent-600\",\n \"Accent700\" = \"--palette-accent-700\",\n \"Accent800\" = \"--palette-accent-800\",\n \"Accent900\" = \"--palette-accent-900\",\n \"AccentA100\" = \"--palette-accent-A100\",\n \"AccentA200\" = \"--palette-accent-A200\",\n \"AccentA400\" = \"--palette-accent-A400\",\n \"AccentA700\" = \"--palette-accent-A700\",\n \"DarkAccentText\" = \"--dark-accent-text\",\n \"LightAccentText\" = \"--light-accent-text\",\n\n // WARN\n \"Warn50\" = \"--palette-warn-50\",\n \"Warn100\" = \"--palette-warn-100\",\n \"Warn200\" = \"--palette-warn-200\",\n \"Warn300\" = \"--palette-warn-300\",\n \"Warn400\" = \"--palette-warn-400\",\n \"Warn500\" = \"--palette-warn-500\",\n \"Warn600\" = \"--palette-warn-600\",\n \"Warn700\" = \"--palette-warn-700\",\n \"Warn800\" = \"--palette-warn-800\",\n \"Warn900\" = \"--palette-warn-900\",\n \"WarnA100\" = \"--palette-warn-A100\",\n \"WarnA200\" = \"--palette-warn-A200\",\n \"WarnA400\" = \"--palette-warn-A400\",\n \"WarnA700\" = \"--palette-warn-A700\",\n \"DarkWarnText\" = \"--dark-warn-text\",\n \"LightWarnText\" = \"--light-warn-text\",\n}\n","import { MaterialCssVariablesConfig } from \"./model\";\n\nexport const DEFAULT_MAT_CSS_CFG: MaterialCssVariablesConfig = {\n isAutoContrast: true,\n isAlternativeColorAlgorithm: false,\n darkThemeClass: \"isDarkTheme\",\n lightThemeClass: \"isLightTheme\",\n colorMap: [\n { name: \"50\", map: [52, 0, 0] },\n { name: \"100\", map: [37, 0, 0] },\n { name: \"200\", map: [26, 0, 0] },\n { name: \"300\", map: [12, 0, 0] },\n { name: \"400\", map: [6, 0, 0] },\n { name: \"500\", map: [0, 0, 0] },\n { name: \"600\", map: [0, 6, 0] },\n { name: \"700\", map: [0, 12, 0] },\n { name: \"800\", map: [0, 18, 0] },\n { name: \"900\", map: [0, 24, 0] },\n { name: \"A100\", map: [50, 0, 30] },\n { name: \"A200\", map: [30, 0, 30] },\n { name: \"A400\", map: [10, 0, 15] },\n { name: \"A700\", map: [5, 0, 5] },\n ],\n sortedHues: [\n \"50\",\n \"100\",\n \"200\",\n \"300\",\n \"400\",\n \"500\",\n \"600\",\n \"700\",\n \"800\",\n \"900\",\n ],\n};\n","import { InjectionToken } from \"@angular/core\";\nimport { MaterialCssVariablesConfig } from \"./lib/model\";\n\nexport const MATERIAL_CSS_VARS_CFG = new InjectionToken<\n MaterialCssVariablesConfig | undefined\n>(\"Mat Css Config\");\n","import {\n Injectable,\n Renderer2,\n RendererFactory2,\n RendererStyleFlags2,\n DOCUMENT,\n isDevMode,\n inject,\n} from \"@angular/core\";\nimport { Numberify, RGBA, TinyColor } from \"@ctrl/tinycolor\";\nimport {\n HueValue,\n MatCssHueColorContrastMapItem,\n MatCssHueColorMapItem,\n MatCssPalettePrefix,\n MaterialCssVariables,\n MaterialCssVariablesConfig,\n} from \"./model\";\nimport { DEFAULT_MAT_CSS_CFG } from \"./default-cfg.const\";\nimport { MATERIAL_CSS_VARS_CFG } from \"../mat-css-config-token.const\";\n\ninterface CssVariable {\n name: string;\n val: string;\n}\n\ninterface Color {\n rgb: Numberify<RGBA>;\n isLight: boolean;\n}\n\n// @see: https://github.com/angular/angular/issues/20351\n/** @dynamic */\n@Injectable({\n providedIn: \"root\",\n})\nexport class MaterialCssVarsService {\n private static CONTRAST_PREFIX = \"contrast-\";\n private static DARK_TEXT_VAR = \"--dark-text-contrast\";\n private static LIGHT_TEXT_VAR = \"--light-text-contrast\";\n // This should be readonly from the outside\n cfg: MaterialCssVariablesConfig;\n primary = \"#03a9f4\";\n accent = \"#e91e63\";\n warn = \"#f44336\";\n isDarkTheme?: boolean;\n contrastColorThresholdPrimary: HueValue = \"400\";\n contrastColorThresholdAccent: HueValue = \"400\";\n contrastColorThresholdWarn: HueValue = \"400\";\n isAutoContrast = false;\n private renderer: Renderer2;\n private ROOT: HTMLElement;\n private readonly _black = new TinyColor(\"#000000\");\n private readonly _white = new TinyColor(\"#ffffff\");\n private readonly document = inject(DOCUMENT);\n\n constructor() {\n this.renderer = inject(RendererFactory2).createRenderer(null, null);\n const cfg = inject(MATERIAL_CSS_VARS_CFG);\n\n this.cfg = {\n ...DEFAULT_MAT_CSS_CFG,\n ...cfg,\n };\n this.isAutoContrast = this.cfg.isAutoContrast;\n this.ROOT = this._getRootElement(this.cfg.rootSelector);\n\n if (typeof this.cfg.isDarkTheme === \"boolean\") {\n this.setDarkTheme(this.cfg.isDarkTheme);\n }\n if (this.cfg.primary) {\n this.setPrimaryColor(this.cfg.primary);\n }\n if (this.cfg.accent) {\n this.setAccentColor(this.cfg.accent);\n }\n if (this.cfg.warn) {\n this.setWarnColor(this.cfg.warn);\n }\n }\n\n setPrimaryColor(hex: string) {\n this.primary = hex;\n const varPrefix = MatCssPalettePrefix.Primary;\n const stylePrimary = this._computePaletteColors(varPrefix, this.primary);\n this._setStyle(stylePrimary);\n\n if (this.isAutoContrast) {\n this._recalculateAndSetContrastColor(varPrefix);\n }\n }\n\n setAccentColor(hex: string) {\n this.accent = hex;\n const varPrefix = MatCssPalettePrefix.Accent;\n const styleAccent = this._computePaletteColors(varPrefix, this.accent);\n this._setStyle(styleAccent);\n\n if (this.isAutoContrast) {\n this._recalculateAndSetContrastColor(varPrefix);\n }\n }\n\n setWarnColor(hex: string) {\n this.warn = hex;\n const varPrefix = MatCssPalettePrefix.Warn;\n const styleWarn = this._computePaletteColors(varPrefix, this.warn);\n this._setStyle(styleWarn);\n\n if (this.isAutoContrast) {\n this._recalculateAndSetContrastColor(varPrefix);\n }\n }\n\n setVariable(cssVarName: MaterialCssVariables, value: string) {\n this._setStyle([\n {\n name: cssVarName,\n val: value,\n },\n ]);\n }\n\n setDarkTheme(isDark: boolean) {\n if (isDark) {\n this.document.body.classList.remove(this.cfg.lightThemeClass);\n this.document.body.classList.add(this.cfg.darkThemeClass);\n } else {\n this.document.body.classList.remove(this.cfg.darkThemeClass);\n this.document.body.classList.add(this.cfg.lightThemeClass);\n }\n this.isDarkTheme = isDark;\n }\n\n setAutoContrastEnabled(val: boolean) {\n this.isAutoContrast = val;\n if (val) {\n this._recalculateAndSetContrastColor(MatCssPalettePrefix.Primary);\n this._recalculateAndSetContrastColor(MatCssPalettePrefix.Accent);\n this._recalculateAndSetContrastColor(MatCssPalettePrefix.Warn);\n } else {\n this.setContrastColorThresholdPrimary(this.contrastColorThresholdPrimary);\n this.setContrastColorThresholdAccent(this.contrastColorThresholdAccent);\n this.setContrastColorThresholdWarn(this.contrastColorThresholdWarn);\n }\n }\n\n setContrastColorThresholdPrimary(threshold: HueValue) {\n this.contrastColorThresholdPrimary = threshold;\n this.setContrastColorThreshold(threshold, MatCssPalettePrefix.Primary);\n }\n\n setContrastColorThresholdAccent(threshold: HueValue) {\n this.contrastColorThresholdAccent = threshold;\n this.setContrastColorThreshold(threshold, MatCssPalettePrefix.Accent);\n }\n\n setContrastColorThresholdWarn(threshold: HueValue) {\n this.contrastColorThresholdWarn = threshold;\n this.setContrastColorThreshold(threshold, MatCssPalettePrefix.Warn);\n }\n\n setContrastColorThreshold(\n threshold: HueValue,\n palettePrefix: MatCssPalettePrefix,\n ) {\n if (this.isAutoContrast) {\n return;\n }\n let color = MaterialCssVarsService.DARK_TEXT_VAR;\n const updates = this.cfg.sortedHues.map((hue) => {\n if (hue === threshold) {\n color = MaterialCssVarsService.LIGHT_TEXT_VAR;\n }\n return {\n val: `var(${color})`, //val: this._getCssVarValue(color),\n name: `${palettePrefix + MaterialCssVarsService.CONTRAST_PREFIX}${hue}`,\n };\n });\n this._setStyle(updates);\n }\n\n /**\n * Generate palette color based on traditional values\n */\n setAlternativeColorAlgorithm(traditional: boolean): void {\n this.cfg.isAlternativeColorAlgorithm = traditional;\n this.setPrimaryColor(this.primary);\n this.setAccentColor(this.accent);\n this.setWarnColor(this.warn);\n }\n\n getPaletteForColor(hex: string): MatCssHueColorMapItem[] {\n if (this.cfg.isAlternativeColorAlgorithm) {\n return this.getTraditionalPaletteForColor(hex);\n } else {\n return this.getConstantinPaletteForColor(hex);\n }\n }\n\n getPaletteWithContrastForColor(hex: string): MatCssHueColorContrastMapItem[] {\n const lightText = this._getCssVarValue(\n MaterialCssVarsService.LIGHT_TEXT_VAR,\n );\n const darkText = this._getCssVarValue(MaterialCssVarsService.DARK_TEXT_VAR);\n const palette = this.getPaletteForColor(hex);\n\n // TODO handle non auto case\n return palette.map((item) => {\n const contrastStr = item.isLight ? lightText : darkText;\n\n const sLight = this._replaceNoRgbValue(\"\", contrastStr)\n .split(\",\")\n .map((v) => +v);\n const cco = { r: sLight[0], g: sLight[1], b: sLight[2], a: 1 };\n return {\n ...item,\n contrast: {\n ...cco,\n str: `${cco.r},${cco.g},${cco.b}`,\n },\n };\n });\n }\n\n private getTraditionalPaletteForColor(hex: string): MatCssHueColorMapItem[] {\n return this.cfg.colorMap.map((item) => {\n const mappedColor = new TinyColor(hex)\n .lighten(item.map[0])\n .darken(item.map[1])\n .saturate(item.map[2]);\n const c = new TinyColor(mappedColor);\n return {\n hue: item.name,\n isLight: c.isLight(),\n color: {\n ...c.toRgb(),\n str: `rgb(${c.toRgb().r},${c.toRgb().g},${c.toRgb().b})`,\n },\n };\n });\n }\n\n private getConstantinPaletteForColor(hex: string): MatCssHueColorMapItem[] {\n return this.cfg.colorMap.map((item) => {\n const c = this.computePalletTriad(hex, item.name);\n return {\n hue: item.name,\n isLight: c.isLight,\n color: {\n ...c.rgb,\n str: `rgb(${c.rgb.r},${c.rgb.g},${c.rgb.b})`,\n },\n };\n });\n }\n\n private _computePaletteColors(\n prefix: MatCssPalettePrefix,\n hex: string,\n ): CssVariable[] {\n return this.getPaletteForColor(hex).map((item) => {\n const c = item.color;\n return {\n name: `${prefix}${item.hue}`,\n val: `rgb(${c.r}, ${c.g}, ${c.b})`,\n };\n });\n }\n\n private _recalculateAndSetContrastColor(palettePrefix: MatCssPalettePrefix) {\n const updates = this._calculateContrastColorsForCurrentValues(\n palettePrefix,\n ).map(({ contrastColorVar, hue }) => {\n return {\n val: `var(${contrastColorVar})`, //this._getCssVarValue(contrastColorVar),\n name: `${palettePrefix + MaterialCssVarsService.CONTRAST_PREFIX}${hue}`,\n };\n });\n this._setStyle(updates);\n }\n\n private _calculateContrastColorsForCurrentValues(\n palettePrefix: MatCssPalettePrefix,\n ): { contrastColorVar: string; hue: HueValue }[] {\n return this.cfg.sortedHues.map((hue) => {\n const hueVarVal = this._getCssVarValue(`${palettePrefix}${hue}`);\n const c = new TinyColor(`rgb(${hueVarVal})`);\n const contrastColorVar = this._getContrastColorVar(c);\n return {\n contrastColorVar,\n hue,\n };\n });\n }\n\n private _setStyle(vars: CssVariable[]) {\n vars.forEach((s) => {\n this.renderer.setStyle(\n this.ROOT,\n s.name,\n s.val,\n RendererStyleFlags2.DashCase,\n );\n this.renderer.setStyle(\n this.ROOT,\n s.name + \"-no-rgb\",\n this._replaceNoRgbValue(s.name, s.val),\n RendererStyleFlags2.DashCase,\n );\n });\n }\n\n /**\n * Replace variables that are formatted as rgba(var(rgb(xxx))) to be var(xxx) to allow proper formatting\n * in variable overrides.\n * @param value\n * @returns\n */\n private _replaceNoRgbValue(name: string, value: string) {\n const isContrast: boolean = name.includes(\n MaterialCssVarsService.CONTRAST_PREFIX,\n );\n let noRgb = \"\";\n if (isContrast) {\n noRgb = value.replace(\")\", \"-no-rgb)\");\n } else {\n noRgb = value.replace(\"rgba(\", \"\").replace(\"rgb(\", \"\").replace(\")\", \"\");\n if (noRgb.startsWith(\"var(\")) {\n noRgb = noRgb.concat(\")\");\n }\n }\n return noRgb;\n }\n\n private _getCssVarValue(v: string): string {\n return getComputedStyle(this.ROOT).getPropertyValue(v);\n }\n\n /**\n * Compute pallet colors based on a Triad (Constantin)\n * see: https://github.com/mbitson/mcg\n */\n private computePalletTriad(hex: string, hue: HueValue): Color {\n const baseLight = new TinyColor(\"#ffffff\");\n const baseDark = this.multiply(\n new TinyColor(hex).toRgb(),\n new TinyColor(hex).toRgb(),\n );\n const baseTriad = new TinyColor(hex).tetrad();\n let color: Color;\n\n switch (hue) {\n case \"50\":\n color = this.getColorObject(baseLight.mix(hex, 12));\n break;\n case \"100\":\n color = this.getColorObject(baseLight.mix(hex, 30));\n break;\n case \"200\":\n color = this.getColorObject(baseLight.mix(hex, 50));\n break;\n case \"300\":\n color = this.getColorObject(baseLight.mix(hex, 70));\n break;\n case \"400\":\n color = this.getColorObject(baseLight.mix(hex, 85));\n break;\n case \"500\":\n color = this.getColorObject(baseLight.mix(hex, 100));\n break;\n case \"600\":\n color = this.getColorObject(baseDark.mix(hex, 87));\n break;\n case \"700\":\n color = this.getColorObject(baseDark.mix(hex, 70));\n break;\n case \"800\":\n color = this.getColorObject(baseDark.mix(hex, 54));\n break;\n case \"900\":\n color = this.getColorObject(baseDark.mix(hex, 25));\n break;\n case \"A100\":\n color = this.getColorObject(\n baseDark.mix(baseTriad[4], 15).saturate(80).lighten(65),\n );\n break;\n case \"A200\":\n color = this.getColorObject(\n baseDark.mix(baseTriad[4], 15).saturate(80).lighten(55),\n );\n break;\n case \"A400\":\n color = this.getColorObject(\n baseDark.mix(baseTriad[4], 15).saturate(100).lighten(45),\n );\n break;\n case \"A700\":\n color = this.getColorObject(\n baseDark.mix(baseTriad[4], 15).saturate(100).lighten(40),\n );\n break;\n }\n return color;\n }\n\n private multiply(rgb1: Numberify<RGBA>, rgb2: Numberify<RGBA>): TinyColor {\n rgb1.b = Math.floor((rgb1.b * rgb2.b) / 255);\n rgb1.g = Math.floor((rgb1.g * rgb2.g) / 255);\n rgb1.r = Math.floor((rgb1.r * rgb2.r) / 255);\n return new TinyColor(\"rgb \" + rgb1.r + \" \" + rgb1.g + \" \" + rgb1.b);\n }\n\n private getColorObject(value: TinyColor): Color {\n const c = new TinyColor(value);\n return { rgb: c.toRgb(), isLight: c.isLight() };\n }\n\n private _getContrastColorVar(color: TinyColor): string {\n const contrastDark = this._getContrast(color, this._black);\n const contrastLight = this._getContrast(color, this._white);\n return contrastLight > contrastDark\n ? MaterialCssVarsService.LIGHT_TEXT_VAR\n : MaterialCssVarsService.DARK_TEXT_VAR;\n }\n\n private _getContrast(color1: TinyColor, color2: TinyColor): number {\n const luminance1 = color1.getLuminance();\n const luminance2 = color2.getLuminance();\n const brightest = Math.max(luminance1, luminance2);\n const darkest = Math.min(luminance1, luminance2);\n return (brightest + 0.05) / (darkest + 0.05);\n }\n\n private _getRootElement(rootSelector: string | undefined): HTMLElement {\n if (typeof rootSelector !== \"string\") {\n return this.document.documentElement;\n }\n const rootElement = document.querySelector<HTMLElement>(rootSelector);\n if (rootElement) {\n return rootElement;\n }\n if (isDevMode()) {\n console.warn(\n `[MaterialCssVars] Could not find root element: ${rootSelector}. Falling back to HTML element.`,\n );\n }\n return this.document.documentElement;\n }\n}\n","import {\n EnvironmentProviders,\n inject,\n makeEnvironmentProviders,\n ModuleWithProviders,\n NgModule,\n provideEnvironmentInitializer,\n} from \"@angular/core\";\nimport { CommonModule } from \"@angular/common\";\nimport { MaterialCssVariablesConfig } from \"./model\";\nimport { MATERIAL_CSS_VARS_CFG } from \"../mat-css-config-token.const\";\nimport { MaterialCssVarsService } from \"./material-css-vars.service\";\n\n@NgModule({\n imports: [CommonModule],\n})\n// eslint-disable-next-line @typescript-eslint/no-extraneous-class\nexport class MaterialCssVarsModule {\n static forRoot(\n config?: Partial<MaterialCssVariablesConfig>,\n ): ModuleWithProviders<MaterialCssVarsModule> {\n return {\n ngModule: MaterialCssVarsModule,\n providers: [provideMaterialCssVars(config)],\n };\n }\n}\n\nexport function provideMaterialCssVars(\n config?: Partial<MaterialCssVariablesConfig>,\n): EnvironmentProviders {\n return makeEnvironmentProviders([\n { provide: MATERIAL_CSS_VARS_CFG, useValue: config },\n provideEnvironmentInitializer(() => inject(MaterialCssVarsService)),\n ]);\n}\n","/*\n * Public API Surface of material-css-vars\n */\n\nexport * from \"./lib/material-css-vars.service\";\nexport * from \"./lib/material-css-vars.module\";\nexport * from \"./lib/model\";\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}