@udixio/theme 1.0.0-beta.29 → 1.0.0-beta.30

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"theme.cjs.development.js","sources":["../src/color/services/color.service.ts","../src/material-color-utilities/contrastCurve.ts","../src/material-color-utilities/dynamic_color.ts","../src/material-color-utilities/toneDeltaPair.ts","../src/color/entities/color.entity.ts","../src/color/services/color-manager.service.ts","../src/color/color.module.ts","../src/theme/entities/scheme.entity.ts","../src/theme/services/scheme.service.ts","../src/theme/services/theme.service.ts","../src/theme/services/variant.service.ts","../src/theme/theme.module.ts","../src/app.service.ts","../src/app.module.ts","../src/color/models/default-color.model.ts","../src/theme/entities/variant.entity.ts","../src/theme/models/variant.model.ts","../src/config/config.service.ts","../src/config/config.module.ts","../src/plugin/plugin.service.ts","../src/plugin/plugin.module.ts","../src/app.container.ts","../src/main.ts","../src/plugin/pluginAbstract.ts","../src/plugins/font/font.plugin.ts","../src/plugins/tailwind/plugins-tailwind/state.ts","../src/plugins/tailwind/plugins-tailwind/themer.ts","../src/plugins/tailwind/plugins-tailwind/font.ts","../src/plugins/tailwind/tailwind.plugin.ts","../src/plugins/tailwind/main.ts"],"sourcesContent":["import { ColorManagerService } from './color-manager.service';\nimport { ColorInterface } from '../color.interface';\nimport { ColorEntity, ColorOptions } from '../entities';\n\ntype AddColors = {\n colors?: Record<string, Partial<ColorOptions>>;\n fromPalettes?: string[] | string;\n};\n\nexport type AddColorsOptions =\n | AddColors\n | ((colorService: ColorService) => AddColors);\n\nexport class ColorService implements ColorInterface {\n private readonly colorManagerService: ColorManagerService;\n constructor({\n colorManagerService,\n }: {\n colorManagerService: ColorManagerService;\n }) {\n this.colorManagerService = colorManagerService;\n }\n\n getColors() {\n return this.colorManagerService.getAll();\n }\n\n // getColors() {\n // const colors: Record<string, string> = {};\n //\n // for (const [key, value] of this.colorManagerService.getAll()) {\n // colors[key] = hexFromArgb(value.getArgb(this.schemeService.get()));\n // }\n //\n // return colors;\n // }\n\n addColor(key: string, color: Partial<ColorOptions>): ColorEntity {\n return this.colorManagerService.createOrUpdate(key, color);\n }\n\n addColors(args: AddColorsOptions | AddColorsOptions[]) {\n const colorsEntity: ColorEntity[] = [];\n if (!Array.isArray(args)) args = [args];\n args.forEach((args) => {\n if (typeof args === 'function') {\n args = args(this);\n }\n if (args.fromPalettes) {\n if (!Array.isArray(args.fromPalettes))\n args.fromPalettes = [args.fromPalettes];\n args.fromPalettes.map((paletteKey) => {\n this.colorManagerService.addFromPalette(paletteKey);\n });\n }\n if (args.colors) {\n Object.keys(args.colors).map((key) =>\n this.addColor(key, args.colors![key])\n );\n }\n });\n }\n\n getColor(key: string): ColorEntity {\n return this.colorManagerService.get(key);\n }\n\n removeColor(key: string): boolean {\n return this.colorManagerService.remove(key);\n }\n\n updateColor(key: string, newColor: Partial<ColorOptions>): ColorEntity {\n return this.colorManagerService.createOrUpdate(key, newColor);\n }\n}\n","/**\n * @license\n * Copyright 2023 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { lerp } from '@material/material-color-utilities';\n\n/**\n * A class containing a value that changes with the contrast level.\n *\n * Usually represents the contrast requirements for a dynamic color on its\n * background. The four values correspond to values for contrast levels -1.0,\n * 0.0, 0.5, and 1.0, respectively.\n */\nexport class ContrastCurve {\n /**\n * Creates a `ContrastCurve` object.\n *\n * @param low Value for contrast level -1.0\n * @param normal Value for contrast level 0.0\n * @param medium Value for contrast level 0.5\n * @param high Value for contrast level 1.0\n */\n constructor(\n readonly low: number,\n readonly normal: number,\n readonly medium: number,\n readonly high: number\n ) {}\n\n /**\n * Returns the value at a given contrast level.\n *\n * @param contrastLevel The contrast level. 0.0 is the default (normal); -1.0\n * is the lowest; 1.0 is the highest.\n * @return The value. For contrast ratios, a number between 1.0 and 21.0.\n */\n get(contrastLevel: number): number {\n if (contrastLevel <= -1.0) {\n return this.low;\n } else if (contrastLevel < 0.0) {\n return lerp(this.low, this.normal, (contrastLevel - -1) / 1);\n } else if (contrastLevel < 0.5) {\n return lerp(this.normal, this.medium, (contrastLevel - 0) / 0.5);\n } else if (contrastLevel < 1.0) {\n return lerp(this.medium, this.high, (contrastLevel - 0.5) / 0.5);\n } else {\n return this.high;\n }\n }\n}\n","/**\n * @license\n * Copyright 2022 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n clampDouble,\n Contrast,\n Hct,\n TonalPalette,\n} from '@material/material-color-utilities';\nimport { ContrastCurve } from './contrastCurve';\nimport { ToneDeltaPair } from './toneDeltaPair';\nimport { SchemeEntity } from '../theme/entities/scheme.entity';\n\n/**\n * @param name The name of the dynamic color. Defaults to empty.\n * @param palette Function that provides a TonalPalette given\n * SchemeEntity. A TonalPalette is defined by a hue and chroma, so this\n * replaces the need to specify hue/chroma. By providing a tonal palette, when\n * contrast adjustments are made, intended chroma can be preserved.\n * @param tone Function that provides a tone given SchemeEntity.\n * @param isBackground Whether this dynamic color is a background, with\n * some other color as the foreground. Defaults to false.\n * @param background The background of the dynamic color (as a function of a\n * `SchemeEntity`), if it exists.\n * @param secondBackground A second background of the dynamic color (as a\n * function of a `SchemeEntity`), if it\n * exists.\n * @param contrastCurve A `ContrastCurve` object specifying how its contrast\n * against its background should behave in various contrast levels options.\n * @param toneDeltaPair A `ToneDeltaPair` object specifying a tone delta\n * constraint between two colors. One of them must be the color being\n * constructed.\n */\ninterface FromPaletteOptions {\n name?: string;\n palette: (scheme: SchemeEntity) => TonalPalette;\n tone: (scheme: SchemeEntity) => number;\n isBackground?: boolean;\n background?: (scheme: SchemeEntity) => DynamicColor;\n secondBackground?: (scheme: SchemeEntity) => DynamicColor;\n contrastCurve?: ContrastCurve;\n toneDeltaPair?: (scheme: SchemeEntity) => ToneDeltaPair;\n}\n\n/**\n * A color that adjusts itself based on UI state provided by SchemeEntity.\n *\n * Colors without backgrounds do not change tone when contrast changes. Colors\n * with backgrounds become closer to their background as contrast lowers, and\n * further when contrast increases.\n *\n * Prefer static constructors. They require either a hexcode, a palette and\n * tone, or a hue and chroma. Optionally, they can provide a background\n * DynamicColor.\n */\nexport class DynamicColor {\n private readonly hctCache = new Map<SchemeEntity, Hct>();\n\n /**\n * The base constructor for DynamicColor.\n *\n * _Strongly_ prefer using one of the convenience constructors. This class is\n * arguably too flexible to ensure it can support any scenario. Functional\n * arguments allow overriding without risks that come with subclasses.\n *\n * For example, the default behavior of adjust tone at max contrast\n * to be at a 7.0 ratio with its background is principled and\n * matches accessibility guidance. That does not mean it's the desired\n * approach for _every_ design system, and every color pairing,\n * always, in every case.\n *\n * @param name The name of the dynamic color. Defaults to empty.\n * @param palette Function that provides a TonalPalette given\n * SchemeEntity. A TonalPalette is defined by a hue and chroma, so this\n * replaces the need to specify hue/chroma. By providing a tonal palette, when\n * contrast adjustments are made, intended chroma can be preserved.\n * @param tone Function that provides a tone, given a SchemeEntity.\n * @param isBackground Whether this dynamic color is a background, with\n * some other color as the foreground. Defaults to false.\n * @param background The background of the dynamic color (as a function of a\n * `SchemeEntity`), if it exists.\n * @param secondBackground A second background of the dynamic color (as a\n * function of a `SchemeEntity`), if it\n * exists.\n * @param contrastCurve A `ContrastCurve` object specifying how its contrast\n * against its background should behave in various contrast levels options.\n * @param toneDeltaPair A `ToneDeltaPair` object specifying a tone delta\n * constraint between two colors. One of them must be the color being\n * constructed.\n */\n constructor(\n readonly name: string,\n readonly palette: (scheme: SchemeEntity) => TonalPalette,\n readonly tone: (scheme: SchemeEntity) => number,\n readonly isBackground: boolean,\n readonly background?: (scheme: SchemeEntity) => DynamicColor,\n readonly secondBackground?: (scheme: SchemeEntity) => DynamicColor,\n readonly contrastCurve?: ContrastCurve,\n readonly toneDeltaPair?: (scheme: SchemeEntity) => ToneDeltaPair\n ) {\n if (!background && secondBackground) {\n throw new Error(\n `Color ${name} has secondBackground` +\n `defined, but background is not defined.`\n );\n }\n if (!background && contrastCurve) {\n throw new Error(\n `Color ${name} has contrastCurve` +\n `defined, but background is not defined.`\n );\n }\n if (background && !contrastCurve) {\n throw new Error(\n `Color ${name} has background` +\n `defined, but contrastCurve is not defined.`\n );\n }\n }\n\n /**\n * Create a DynamicColor defined by a TonalPalette and HCT tone.\n *\n * @param args Functions with SchemeEntity as input. Must provide a palette\n * and tone. May provide a background DynamicColor and ToneDeltaConstraint.\n */\n static fromPalette(args: FromPaletteOptions): DynamicColor {\n return new DynamicColor(\n args.name ?? '',\n args.palette,\n args.tone,\n args.isBackground ?? false,\n args.background,\n args.secondBackground,\n args.contrastCurve,\n args.toneDeltaPair\n );\n }\n\n /**\n * Given a background tone, find a foreground tone, while ensuring they reach\n * a contrast ratio that is as close to [ratio] as possible.\n *\n * @param bgTone Tone in HCT. Range is 0 to 100, undefined behavior when it\n * falls outside that range.\n * @param ratio The contrast ratio desired between bgTone and the return\n * value.\n */\n static foregroundTone(bgTone: number, ratio: number): number {\n const lighterTone = Contrast.lighterUnsafe(bgTone, ratio);\n const darkerTone = Contrast.darkerUnsafe(bgTone, ratio);\n const lighterRatio = Contrast.ratioOfTones(lighterTone, bgTone);\n const darkerRatio = Contrast.ratioOfTones(darkerTone, bgTone);\n const preferLighter = DynamicColor.tonePrefersLightForeground(bgTone);\n\n if (preferLighter) {\n // This handles an edge case where the initial contrast ratio is high\n // (ex. 13.0), and the ratio passed to the function is that high\n // ratio, and both the lighter and darker ratio fails to pass that\n // ratio.\n //\n // This was observed with Tonal Spot's On Primary Container turning\n // black momentarily between high and max contrast in light mode. PC's\n // standard tone was T90, OPC's was T10, it was light mode, and the\n // contrast value was 0.6568521221032331.\n const negligibleDifference =\n Math.abs(lighterRatio - darkerRatio) < 0.1 &&\n lighterRatio < ratio &&\n darkerRatio < ratio;\n return lighterRatio >= ratio ||\n lighterRatio >= darkerRatio ||\n negligibleDifference\n ? lighterTone\n : darkerTone;\n } else {\n return darkerRatio >= ratio || darkerRatio >= lighterRatio\n ? darkerTone\n : lighterTone;\n }\n }\n\n /**\n * Returns whether [tone] prefers a light foreground.\n *\n * People prefer white foregrounds on ~T60-70. Observed over time, and also\n * by Andrew Somers during research for APCA.\n *\n * T60 used as to create the smallest discontinuity possible when skipping\n * down to T49 in order to ensure light foregrounds.\n * Since `tertiaryContainer` in dark monochrome scheme requires a tone of\n * 60, it should not be adjusted. Therefore, 60 is excluded here.\n */\n static tonePrefersLightForeground(tone: number): boolean {\n return Math.round(tone) < 60.0;\n }\n\n /**\n * Returns whether [tone] can reach a contrast ratio of 4.5 with a lighter\n * color.\n */\n static toneAllowsLightForeground(tone: number): boolean {\n return Math.round(tone) <= 49.0;\n }\n\n /**\n * Adjust a tone such that white has 4.5 contrast, if the tone is\n * reasonably close to supporting it.\n */\n static enableLightForeground(tone: number): number {\n if (\n DynamicColor.tonePrefersLightForeground(tone) &&\n !DynamicColor.toneAllowsLightForeground(tone)\n ) {\n return 49.0;\n }\n return tone;\n }\n\n /**\n * Return a ARGB integer (i.e. a hex code).\n *\n * @param scheme Defines the conditions of the user interface, for example,\n * whether or not it is dark mode or light mode, and what the desired\n * contrast level is.\n */\n getArgb(scheme: SchemeEntity): number {\n return this.getHct(scheme).toInt();\n }\n\n /**\n * Return a color, expressed in the HCT color space, that this\n * DynamicColor is under the conditions in scheme.\n *\n * @param scheme Defines the conditions of the user interface, for example,\n * whether or not it is dark mode or light mode, and what the desired\n * contrast level is.\n */\n getHct(scheme: SchemeEntity): Hct {\n const cachedAnswer = this.hctCache.get(scheme);\n if (cachedAnswer != null) {\n return cachedAnswer;\n }\n const tone = this.getTone(scheme);\n const answer = this.palette(scheme).getHct(tone);\n if (this.hctCache.size > 4) {\n this.hctCache.clear();\n }\n this.hctCache.set(scheme, answer);\n return answer;\n }\n\n /**\n * Return a tone, T in the HCT color space, that this DynamicColor is under\n * the conditions in scheme.\n *\n * @param scheme Defines the conditions of the user interface, for example,\n * whether or not it is dark mode or light mode, and what the desired\n * contrast level is.\n */\n getTone(scheme: SchemeEntity): number {\n const decreasingContrast = scheme.contrastLevel < 0;\n\n // Case 1: dual foreground, pair of colors with delta constraint.\n if (this.toneDeltaPair) {\n const toneDeltaPair = this.toneDeltaPair(scheme);\n const roleA = toneDeltaPair.roleA;\n const roleB = toneDeltaPair.roleB;\n const delta = toneDeltaPair.delta;\n const polarity = toneDeltaPair.polarity;\n const stayTogether = toneDeltaPair.stayTogether;\n\n const bg = this.background!(scheme);\n const bgTone = bg.getTone(scheme);\n\n const aIsNearer =\n polarity === 'nearer' ||\n (polarity === 'lighter' && !scheme.isDark) ||\n (polarity === 'darker' && scheme.isDark);\n const nearer = aIsNearer ? roleA : roleB;\n const farther = aIsNearer ? roleB : roleA;\n const amNearer = this.name === nearer.name;\n const expansionDir = scheme.isDark ? 1 : -1;\n\n // 1st round: solve to min, each\n const nContrast = nearer.contrastCurve!.get(scheme.contrastLevel);\n const fContrast = farther.contrastCurve!.get(scheme.contrastLevel);\n\n // If a color is good enough, it is not adjusted.\n // Initial and adjusted tones for `nearer`\n const nInitialTone = nearer.tone(scheme);\n let nTone =\n Contrast.ratioOfTones(bgTone, nInitialTone) >= nContrast\n ? nInitialTone\n : DynamicColor.foregroundTone(bgTone, nContrast);\n // Initial and adjusted tones for `farther`\n const fInitialTone = farther.tone(scheme);\n let fTone =\n Contrast.ratioOfTones(bgTone, fInitialTone) >= fContrast\n ? fInitialTone\n : DynamicColor.foregroundTone(bgTone, fContrast);\n\n if (decreasingContrast) {\n // If decreasing contrast, adjust color to the \"bare minimum\"\n // that satisfies contrast.\n nTone = DynamicColor.foregroundTone(bgTone, nContrast);\n fTone = DynamicColor.foregroundTone(bgTone, fContrast);\n }\n\n if ((fTone - nTone) * expansionDir >= delta) {\n // Good! Tones satisfy the constraint; no change needed.\n } else {\n // 2nd round: expand farther to match delta.\n fTone = clampDouble(0, 100, nTone + delta * expansionDir);\n if ((fTone - nTone) * expansionDir >= delta) {\n // Good! Tones now satisfy the constraint; no change needed.\n } else {\n // 3rd round: contract nearer to match delta.\n nTone = clampDouble(0, 100, fTone - delta * expansionDir);\n }\n }\n\n // Avoids the 50-59 awkward zone.\n if (50 <= nTone && nTone < 60) {\n // If `nearer` is in the awkward zone, move it away, together with\n // `farther`.\n if (expansionDir > 0) {\n nTone = 60;\n fTone = Math.max(fTone, nTone + delta * expansionDir);\n } else {\n nTone = 49;\n fTone = Math.min(fTone, nTone + delta * expansionDir);\n }\n } else if (50 <= fTone && fTone < 60) {\n if (stayTogether) {\n // Fixes both, to avoid two colors on opposite sides of the \"awkward\n // zone\".\n if (expansionDir > 0) {\n nTone = 60;\n fTone = Math.max(fTone, nTone + delta * expansionDir);\n } else {\n nTone = 49;\n fTone = Math.min(fTone, nTone + delta * expansionDir);\n }\n } else {\n // Not required to stay together; fixes just one.\n if (expansionDir > 0) {\n fTone = 60;\n } else {\n fTone = 49;\n }\n }\n }\n\n // Returns `nTone` if this color is `nearer`, otherwise `fTone`.\n return amNearer ? nTone : fTone;\n } else {\n // Case 2: No contrast pair; just solve for itself.\n let answer = this.tone(scheme);\n\n if (this.background == null) {\n return answer; // No adjustment for colors with no background.\n }\n\n const bgTone = this.background(scheme).getTone(scheme);\n\n const desiredRatio = this.contrastCurve!.get(scheme.contrastLevel);\n\n if (Contrast.ratioOfTones(bgTone, answer) >= desiredRatio) {\n // Don't \"improve\" what's good enough.\n } else {\n // Rough improvement.\n answer = DynamicColor.foregroundTone(bgTone, desiredRatio);\n }\n\n if (decreasingContrast) {\n answer = DynamicColor.foregroundTone(bgTone, desiredRatio);\n }\n\n if (this.isBackground && 50 <= answer && answer < 60) {\n // Must adjust\n if (Contrast.ratioOfTones(49, bgTone) >= desiredRatio) {\n answer = 49;\n } else {\n answer = 60;\n }\n }\n\n if (this.secondBackground) {\n // Case 3: Adjust for dual backgrounds.\n\n const [bg1, bg2] = [this.background, this.secondBackground];\n const [bgTone1, bgTone2] = [\n bg1(scheme).getTone(scheme),\n bg2(scheme).getTone(scheme),\n ];\n const [upper, lower] = [\n Math.max(bgTone1, bgTone2),\n Math.min(bgTone1, bgTone2),\n ];\n\n if (\n Contrast.ratioOfTones(upper, answer) >= desiredRatio &&\n Contrast.ratioOfTones(lower, answer) >= desiredRatio\n ) {\n return answer;\n }\n\n // The darkest light tone that satisfies the desired ratio,\n // or -1 if such ratio cannot be reached.\n const lightOption = Contrast.lighter(upper, desiredRatio);\n\n // The lightest dark tone that satisfies the desired ratio,\n // or -1 if such ratio cannot be reached.\n const darkOption = Contrast.darker(lower, desiredRatio);\n\n // Tones suitable for the foreground.\n const availables = [];\n if (lightOption !== -1) availables.push(lightOption);\n if (darkOption !== -1) availables.push(darkOption);\n\n const prefersLight =\n DynamicColor.tonePrefersLightForeground(bgTone1) ||\n DynamicColor.tonePrefersLightForeground(bgTone2);\n if (prefersLight) {\n return lightOption < 0 ? 100 : lightOption;\n }\n if (availables.length === 1) {\n return availables[0];\n }\n return darkOption < 0 ? 0 : darkOption;\n }\n\n return answer;\n }\n }\n}\n","/**\n * @license\n * Copyright 2023 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { DynamicColor } from './dynamic_color';\n\n/**\n * Describes the different in tone between colors.\n */\nexport type TonePolarity = 'darker' | 'lighter' | 'nearer' | 'farther';\n\n/**\n * Documents a constraint between two DynamicColors, in which their tones must\n * have a certain distance from each other.\n *\n * Prefer a DynamicColor with a background, this is for special cases when\n * designers want tonal distance, literally contrast, between two colors that\n * don't have a background / foreground relationship or a contrast guarantee.\n */\nexport class ToneDeltaPair {\n /**\n * Documents a constraint in tone distance between two DynamicColors.\n *\n * The polarity is an adjective that describes \"A\", compared to \"B\".\n *\n * For instance, ToneDeltaPair(A, B, 15, 'darker', stayTogether) states that\n * A's tone should be at least 15 darker than B's.\n *\n * 'nearer' and 'farther' describes closeness to the surface roles. For\n * instance, ToneDeltaPair(A, B, 10, 'nearer', stayTogether) states that A\n * should be 10 lighter than B in light mode, and 10 darker than B in dark\n * mode.\n *\n * @param roleA The first role in a pair.\n * @param roleB The second role in a pair.\n * @param delta Required difference between tones. Absolute value, negative\n * values have undefined behavior.\n * @param polarity The relative relation between tones of roleA and roleB,\n * as described above.\n * @param stayTogether Whether these two roles should stay on the same side of\n * the \"awkward zone\" (T50-59). This is necessary for certain cases where\n * one role has two backgrounds.\n */\n constructor(\n readonly roleA: DynamicColor,\n readonly roleB: DynamicColor,\n readonly delta: number,\n readonly polarity: TonePolarity,\n readonly stayTogether: boolean\n ) {}\n}\n","import { hexFromArgb, TonalPalette } from '@material/material-color-utilities';\nimport { SchemeEntity } from '../../theme/entities/scheme.entity';\nimport { DynamicColor } from '../../material-color-utilities/dynamic_color';\nimport { ContrastCurve } from '../../material-color-utilities';\nimport { SchemeService } from '../../theme/services/scheme.service';\nimport { ColorManagerService } from '../services/color-manager.service';\n\nexport interface ColorOptions {\n palette: (scheme: SchemeEntity) => TonalPalette;\n tone: (scheme: SchemeEntity) => number;\n isBackground?: boolean;\n background?: (scheme: SchemeEntity) => DynamicColor;\n secondBackground?: (scheme: SchemeEntity) => DynamicColor;\n contrastCurve?: ContrastCurve;\n toneDeltaPair?: (scheme: SchemeEntity) => {\n roleA: DynamicColor;\n readonly roleB: DynamicColor;\n readonly delta: number;\n readonly polarity: 'darker' | 'lighter' | 'nearer' | 'farther';\n readonly stayTogether: boolean;\n };\n}\n\nfunction argbToRgb(argb: number): { r: number; g: number; b: number } {\n return {\n r: (argb >> 16) & 0xff,\n g: (argb >> 8) & 0xff,\n b: argb & 0xff,\n };\n}\n\nexport class ColorEntity {\n private dynamicColor: DynamicColor | null = null;\n\n constructor(\n private option: ColorOptions & { name: string },\n private schemeService: SchemeService,\n private colorService: ColorManagerService\n ) {}\n\n update(args: Partial<ColorOptions & { name: string }>) {\n this.dynamicColor = null;\n this.option = { ...this.option, ...args };\n }\n\n getHex(): string {\n return hexFromArgb(this.getArgb());\n }\n\n getArgb() {\n return this.getDynamicColor().getArgb(this.schemeService.get());\n }\n\n getRgb() {\n return argbToRgb(this.getArgb());\n }\n\n getName(): string {\n return this.option.name.replace(/([A-Z])/g, '_$1').toLowerCase();\n }\n\n getDynamicColor(): DynamicColor {\n if (!this.dynamicColor) {\n this.dynamicColor = DynamicColor.fromPalette({\n ...this.option,\n name: this.getName(),\n });\n }\n return this.dynamicColor;\n }\n}\n","import { ContrastCurve, ToneDeltaPair } from '../../material-color-utilities';\nimport { DynamicColor } from '../../material-color-utilities/dynamic_color';\nimport { SchemeEntity } from '../../theme/entities/scheme.entity';\n\nimport { ColorEntity, ColorOptions } from '../entities/color.entity';\nimport { SchemeService } from '../../theme/services/scheme.service';\nimport { DynamicColorKey } from '../models/default-color.model';\nimport { ColorService } from './color.service';\n\nfunction capitalizeFirstLetter(string: string) {\n return string.charAt(0).toUpperCase() + string.slice(1);\n}\n\nexport const highestSurface = (\n s: SchemeEntity,\n colorService: ColorManagerService | ColorService\n): DynamicColor => {\n if (colorService instanceof ColorService) {\n return s.isDark\n ? colorService.getColor('surfaceBright').getDynamicColor()\n : colorService.getColor('surfaceDim').getDynamicColor();\n } else {\n return s.isDark\n ? colorService.get('surfaceBright').getDynamicColor()\n : colorService.get('surfaceDim').getDynamicColor();\n }\n};\n\nexport class ColorManagerService {\n private colorMap = new Map<string, ColorEntity>();\n private readonly schemeService: SchemeService;\n constructor({ schemeService }: { schemeService: SchemeService }) {\n this.schemeService = schemeService;\n }\n\n createOrUpdate(key: string, args: Partial<ColorOptions>): ColorEntity {\n let colorEntity = this.colorMap.get(key);\n if (!colorEntity) {\n const { palette, tone } = args;\n if (palette && tone) {\n colorEntity = new ColorEntity(\n { ...args, palette, tone, name: key },\n this.schemeService,\n this\n );\n this.colorMap.set(key, colorEntity);\n } else {\n throw new Error(`Palette ${key} does not exist`);\n }\n } else {\n colorEntity.update({ ...args, name: key });\n this.colorMap.set(key, colorEntity);\n }\n return colorEntity;\n }\n\n public remove(key: string) {\n return this.colorMap.delete(key);\n }\n\n public get(key: string): ColorEntity {\n const colorEntity = this.colorMap.get(key);\n if (colorEntity) {\n return colorEntity;\n } else {\n throw new Error(`Color ${key} does not exist`);\n }\n }\n\n public getAll(): ReadonlyMap<string, ColorEntity> {\n return this.colorMap;\n }\n\n addFromPalette(key: string): void {\n const colorKey = key as DynamicColorKey;\n const ColorKey = capitalizeFirstLetter(key);\n const onColorKey = ('on' + ColorKey) as DynamicColorKey;\n const colorKeyContainer = (colorKey + 'Container') as DynamicColorKey;\n const onColorKeyContainer = ('on' +\n ColorKey +\n 'Container') as DynamicColorKey;\n const inverseColorKey = ('inverse' + ColorKey) as DynamicColorKey;\n const colorKeyFixed = (colorKey + 'Fixed') as DynamicColorKey;\n const colorKeyFixedDim = (colorKey + 'FixedDim') as DynamicColorKey;\n const onColorKeyFixed = ('on' + ColorKey + 'Fixed') as DynamicColorKey;\n const onColorKeyFixedVariant = ('on' +\n ColorKey +\n 'FixedVariant') as DynamicColorKey;\n\n this.createOrUpdate(colorKey, {\n palette: (s) => s.getPalette(key),\n tone: (s) => {\n return s.isDark ? 80 : 40;\n },\n isBackground: true,\n background: (s) => highestSurface(s, this),\n contrastCurve: new ContrastCurve(3, 4.5, 7, 11),\n toneDeltaPair: (s) =>\n new ToneDeltaPair(\n this.get(colorKeyContainer).getDynamicColor(),\n this.get(colorKey).getDynamicColor(),\n 10,\n 'nearer',\n false\n ),\n });\n this.createOrUpdate(onColorKey, {\n palette: (s) => s.getPalette(key),\n tone: (s) => {\n return s.isDark ? 20 : 100;\n },\n background: (s) => this.get(colorKey).getDynamicColor(),\n contrastCurve: new ContrastCurve(4.5, 7, 11, 21),\n });\n this.createOrUpdate(colorKeyContainer, {\n palette: (s) => s.getPalette(key),\n tone: (s) => {\n return s.isDark ? 30 : 90;\n },\n isBackground: true,\n background: (s) => highestSurface(s, this),\n contrastCurve: new ContrastCurve(1, 1, 3, 7),\n toneDeltaPair: (s) =>\n new ToneDeltaPair(\n this.get(colorKeyContainer).getDynamicColor(),\n this.get(colorKey).getDynamicColor(),\n 10,\n 'nearer',\n false\n ),\n });\n this.createOrUpdate(onColorKeyContainer, {\n palette: (s) => s.getPalette(key),\n tone: (s) => {\n return s.isDark ? 90 : 10;\n },\n background: (s) => this.get(colorKeyContainer).getDynamicColor(),\n contrastCurve: new ContrastCurve(4.5, 7, 11, 21),\n });\n this.createOrUpdate(inverseColorKey, {\n palette: (s) => s.getPalette(key),\n tone: (s) => (s.isDark ? 40 : 80),\n background: (s) => this.get('inverseSurface').getDynamicColor(),\n contrastCurve: new ContrastCurve(3, 4.5, 7, 11),\n });\n this.createOrUpdate(colorKeyFixed, {\n palette: (s) => s.getPalette(key),\n tone: (s) => 90.0,\n isBackground: true,\n background: (s) => highestSurface(s, this),\n contrastCurve: new ContrastCurve(1, 1, 3, 7),\n toneDeltaPair: (s) =>\n new ToneDeltaPair(\n this.get(colorKeyFixed).getDynamicColor(),\n this.get(colorKeyFixedDim).getDynamicColor(),\n 10,\n 'lighter',\n true\n ),\n });\n this.createOrUpdate(colorKeyFixedDim, {\n palette: (s) => s.getPalette(key),\n tone: (s) => 80.0,\n isBackground: true,\n background: (s) => highestSurface(s, this),\n contrastCurve: new ContrastCurve(1, 1, 3, 7),\n toneDeltaPair: (s) =>\n new ToneDeltaPair(\n this.get(colorKeyFixed).getDynamicColor(),\n this.get(colorKeyFixedDim).getDynamicColor(),\n 10,\n 'lighter',\n true\n ),\n });\n this.createOrUpdate(onColorKeyFixed, {\n palette: (s) => s.getPalette(key),\n tone: (s) => 10.0,\n background: (s) => this.get(colorKeyFixedDim).getDynamicColor(),\n secondBackground: (s) => this.get(colorKeyFixed).getDynamicColor(),\n contrastCurve: new ContrastCurve(4.5, 7, 11, 21),\n });\n this.createOrUpdate(onColorKeyFixedVariant, {\n palette: (s) => s.getPalette(key),\n tone: (s) => 30.0,\n background: (s) => this.get(colorKeyFixedDim).getDynamicColor(),\n secondBackground: (s) => this.get(colorKeyFixed).getDynamicColor(),\n contrastCurve: new ContrastCurve(3, 4.5, 7, 11),\n });\n }\n}\n","import { ColorService } from './services/color.service';\nimport { ColorManagerService } from './services/color-manager.service';\nimport { asClass } from 'awilix';\nimport { Module } from '../app.container';\n\nexport const ColorModule: Module = {\n colorManagerService: asClass(ColorManagerService).singleton(),\n colorService: asClass(ColorService).singleton(),\n};\n","import { Hct, TonalPalette } from '@material/material-color-utilities';\n\nexport interface SchemeOptions {\n sourceColorArgb: number;\n contrastLevel: number;\n isDark: boolean;\n palettes: Map<string, TonalPalette>;\n}\n\nexport class SchemeEntity {\n constructor(private options: SchemeOptions) {}\n\n get contrastLevel() {\n if (!this.options) {\n throw new Error('Scheme options is not set');\n }\n return this.options.contrastLevel;\n }\n\n get isDark() {\n if (!this.options) {\n throw new Error('Scheme options is not set');\n }\n return this.options.isDark;\n }\n\n get sourceColorHct() {\n if (!this.options) {\n throw new Error('Scheme options is not set');\n }\n return Hct.fromInt(this.options.sourceColorArgb);\n }\n\n getPalette(key: string): TonalPalette {\n if (!this.options) {\n throw new Error('Scheme options is not set');\n }\n const palette = this.options.palettes.get(key);\n if (!palette) {\n throw new Error(`Palette ${key} not found`);\n }\n return palette;\n }\n}\n","import { SchemeEntity, SchemeOptions } from '../entities/scheme.entity';\nimport {\n argbFromHex,\n Hct,\n TonalPalette,\n} from '@material/material-color-utilities';\n\nexport type SchemeServiceOptions = Omit<\n SchemeOptions,\n 'palettes' | 'sourceColorArgb'\n> & {\n sourcesColorHex: Record<string, string> & { primary?: string };\n palettes: Record<\n string,\n {\n sourceColorkey?: string;\n tonalPalette: (sourceColorHct: Hct) => TonalPalette;\n }\n >;\n};\n\nexport class SchemeService {\n private schemeEntity?: SchemeEntity;\n private options?: SchemeServiceOptions;\n\n createOrUpdate(options: Partial<SchemeServiceOptions>) {\n this.options = {\n ...this.options,\n ...options,\n sourcesColorHex: {\n ...this.options?.sourcesColorHex,\n ...options.sourcesColorHex,\n },\n palettes: {\n ...this.options?.palettes,\n ...options.palettes,\n },\n } as SchemeServiceOptions;\n const palettes = new Map<string, TonalPalette>();\n\n if (!this.options.sourcesColorHex.primary) {\n throw new Error('Primary source color is not set');\n }\n\n const sourceColorArgb = argbFromHex(this.options.sourcesColorHex.primary);\n const sourceColorHct: Hct = Hct.fromInt(sourceColorArgb);\n\n if (!this.options.palettes) {\n return;\n }\n for (const [\n key,\n { sourceColorkey, tonalPalette: paletteFunction },\n ] of Object.entries(this.options.palettes)) {\n let palette: TonalPalette;\n if (!sourceColorkey) {\n palette = paletteFunction(sourceColorHct);\n } else {\n const sourceColorArgb = argbFromHex(\n this.options.sourcesColorHex[sourceColorkey]\n );\n const sourceColorHct: Hct = Hct.fromInt(sourceColorArgb);\n palette = paletteFunction(sourceColorHct);\n }\n palettes.set(key, palette);\n }\n this.schemeEntity = new SchemeEntity({\n ...this.options,\n palettes: palettes,\n sourceColorArgb: sourceColorArgb,\n });\n }\n\n get(): SchemeEntity {\n if (!this.schemeEntity) {\n throw new Error('Scheme is not created');\n }\n return this.schemeEntity;\n }\n}\n","import { DynamicColor } from '@material/material-color-utilities';\nimport { SchemeService, SchemeServiceOptions } from './scheme.service';\nimport { VariantService } from './variant.service';\nimport { VariantEntity } from '../entities/variant.entity';\n\ntype ThemeOptions = Omit<\n SchemeServiceOptions,\n 'palettes' | 'sourcesColorHex'\n> & { sourceColorHex: string };\n\nconst colorPaletteKeyColor = DynamicColor.fromPalette({\n name: 'primary_palette_key_color',\n palette: (s) => s.primaryPalette,\n tone: (s) => s.primaryPalette.keyColor.tone,\n});\n\nexport class ThemeService {\n private readonly schemeService: SchemeService;\n private readonly variantService: VariantService;\n constructor({\n schemeService,\n variantService,\n }: {\n schemeService: SchemeService;\n variantService: VariantService;\n }) {\n this.schemeService = schemeService;\n this.variantService = variantService;\n\n // this.addPalette({key: \"primary\", addDefaultColors: true})\n // this.addPalette({key: \"secondary\", addDefaultColors: true})\n // this.addPalette({key: \"tertiary\", addDefaultColors: true})\n // this.addPalette({key: \"error\", palette: TonalPalette.fromHueAndChroma(25.0, 84.0)})\n // this.addPalette({key: \"neutral\"})\n // this.addPalette({key: \"neutralVariant\"})\n }\n // addPalette({key, palette, addDefaultColors}: {key: string; palette: TonalPalette; addDefaultColors: boolean}) {\n // this.themeOptions.palettes.set(key, palette);\n // if (addDefaultColors){\n // this.colorService.addPalette(key)\n // }\n // }\n\n // create(args: ThemeOptions): SchemeService {\n // return new SchemeService(args, this.colorService)\n // }\n //\n // update(options: Partial<ThemeOptions>): SchemeService {\n // Object.assign(this.themeOptions, options);\n // return this.theme();\n // }\n\n create(options: ThemeOptions & { variant: VariantEntity }) {\n this.schemeService.createOrUpdate({\n ...options,\n sourcesColorHex: { primary: options.sourceColorHex },\n });\n this.variantService.set(options.variant);\n }\n\n update(options: Partial<ThemeOptions> & { variant?: VariantEntity }) {\n const themeOptions: Partial<SchemeServiceOptions> = { ...options };\n if (options.sourceColorHex)\n themeOptions.sourcesColorHex = { primary: options.sourceColorHex };\n this.schemeService.createOrUpdate(themeOptions);\n if (options.variant) this.variantService.set(options.variant);\n }\n addCustomPalette(key: string, colorHex: string) {\n this.variantService.addCustomPalette(key, colorHex);\n }\n // theme(): SchemeService {\n // return new SchemeService(this.themeOptions, this.colorService)\n // }\n}\n","import { SchemeService } from './scheme.service';\nimport { VariantEntity } from '../entities/variant.entity';\nimport { Hct, TonalPalette } from '@material/material-color-utilities';\n\nexport class VariantService {\n public customPalettes: Record<string, string> = {};\n private variantEntity?: VariantEntity;\n\n private readonly schemeService: SchemeService;\n constructor({ schemeService }: { schemeService: SchemeService }) {\n this.schemeService = schemeService;\n }\n\n addCustomPalette(key: string, colorHex: string) {\n this.customPalettes[key] = colorHex;\n this.update();\n }\n\n set(variantEntity: VariantEntity) {\n this.variantEntity = variantEntity;\n if (!variantEntity.palettes.error) {\n variantEntity.palettes.error = () =>\n TonalPalette.fromHueAndChroma(25.0, 84.0);\n }\n this.update();\n }\n private update() {\n if (!this.variantEntity) return;\n const palettes: Record<\n string,\n {\n sourceColorkey?: string;\n tonalPalette: (sourceColorHct: Hct) => TonalPalette;\n }\n > = {};\n Object.keys(this.variantEntity.palettes).forEach((key) => {\n palettes[key] = { tonalPalette: this.variantEntity!.palettes[key] };\n });\n if (this.variantEntity.customPalettes) {\n Object.keys(this.customPalettes).forEach((key) => {\n palettes[key] = {\n sourceColorkey: key,\n tonalPalette: this.variantEntity!.customPalettes!,\n };\n });\n }\n this.schemeService.createOrUpdate({\n sourcesColorHex: this.customPalettes,\n palettes: palettes,\n });\n }\n}\n","import { SchemeService, ThemeService, VariantService } from './services';\nimport { asClass } from 'awilix';\nimport { Module } from '../app.container';\n\nexport const ThemeModule: Module = {\n schemeService: asClass(SchemeService).singleton(),\n variantService: asClass(VariantService).singleton(),\n themeService: asClass(ThemeService).singleton(),\n};\n","import { ColorService } from './color';\nimport { ThemeService } from './theme';\nimport { PluginService } from './plugin/plugin.service';\n\nexport class AppService {\n public colorService: ColorService;\n public themeService: ThemeService;\n public pluginService: PluginService;\n\n constructor({\n colorService,\n themeService,\n pluginService,\n }: {\n colorService: ColorService;\n themeService: ThemeService;\n pluginService: PluginService;\n }) {\n this.pluginService = pluginService;\n this.colorService = colorService;\n this.themeService = themeService;\n }\n}\n","import { asClass } from 'awilix';\nimport { AppService } from './app.service';\nimport { Module } from './app.container';\n\nexport const AppModule: Module = {\n appService: asClass(AppService).singleton(),\n};\n","import { DislikeAnalyzer, Hct } from '@material/material-color-utilities';\nimport { ContrastCurve, ToneDeltaPair } from '../../material-color-utilities';\nimport { DynamicColor } from '../../material-color-utilities/dynamic_color';\nimport { highestSurface } from '../services/color-manager.service';\nimport { AddColorsOptions, ColorService } from '../services/color.service';\n\nexport type DynamicColorKey =\n | 'background'\n | 'onBackground'\n | 'surface'\n | 'surfaceDim'\n | 'surfaceBright'\n | 'surfaceContainerLowest'\n | 'surfaceContainerLow'\n | 'surfaceContainer'\n | 'surfaceContainerHigh'\n | 'surfaceContainerHighest'\n | 'onSurface'\n | 'surfaceVariant'\n | 'onSurfaceVariant'\n | 'inverseSurface'\n | 'inverseOnSurface'\n | 'outline'\n | 'outlineVariant'\n | 'shadow'\n | 'scrim'\n | 'surfaceTint'\n | 'primary'\n | 'onPrimary'\n | 'primaryContainer'\n | 'onPrimaryContainer'\n | 'inversePrimary'\n | 'secondary'\n | 'onSecondary'\n | 'secondaryContainer'\n | 'onSecondaryContainer'\n | 'tertiary'\n | 'onTertiary'\n | 'tertiaryContainer'\n | 'onTertiaryContainer'\n | 'error'\n | 'onError'\n | 'errorContainer'\n | 'onErrorContainer'\n | 'primaryFixed'\n | 'primaryFixedDim'\n | 'onPrimaryFixed'\n | 'onPrimaryFixedVariant'\n | 'secondaryFixed'\n | 'secondaryFixedDim'\n | 'onSecondaryFixed'\n | 'onSecondaryFixedVariant'\n | 'tertiaryFixed'\n | 'tertiaryFixedDim'\n | 'onTertiaryFixed'\n | 'onTertiaryFixedVariant';\n\nfunction findDesiredChromaByTone(\n hue: number,\n chroma: number,\n tone: number,\n byDecreasingTone: boolean\n): number {\n let answer = tone;\n\n let closestToChroma = Hct.from(hue, chroma, tone);\n if (closestToChroma.chroma < chroma) {\n let chromaPeak = closestToChroma.chroma;\n while (closestToChroma.chroma < chroma) {\n answer += byDecreasingTone ? -1.0 : 1.0;\n const potentialSolution = Hct.from(hue, chroma, answer);\n if (chromaPeak > potentialSolution.chroma) {\n break;\n }\n if (Math.abs(potentialSolution.chroma - chroma) < 0.4) {\n break;\n }\n\n const potentialDelta = Math.abs(potentialSolution.chroma - chroma);\n const currentDelta = Math.abs(closestToChroma.chroma - chroma);\n if (potentialDelta < currentDelta) {\n closestToChroma = potentialSolution;\n }\n chromaPeak = Math.max(chromaPeak, potentialSolution.chroma);\n }\n }\n\n return answer;\n}\n\nexport const defaultColors: AddColorsOptions = (\n colorService: ColorService\n) => ({\n fromPalettes: ['primary', 'secondary', 'tertiary'],\n colors: {\n background: {\n palette: (s) => s.getPalette('neutral'),\n tone: (s) => (s.isDark ? 6 : 98),\n isBackground: true,\n },\n onBackground: {\n palette: (s) => s.getPalette('neutral'),\n tone: (s) => (s.isDark ? 90 : 10),\n background: (s) => colorService.getColor('background').getDynamicColor(),\n contrastCurve: new ContrastCurve(3, 3, 4.5, 7),\n },\n surface: {\n palette: (s) => s.getPalette('neutral'),\n tone: (s) => (s.isDark ? 6 : 98),\n isBackground: true,\n },\n surfaceDim: {\n palette: (s) => s.getPalette('neutral'),\n tone: (s) => (s.isDark ? 6 : 87),\n isBackground: true,\n },\n surfaceBright: {\n palette: (s) => s.getPalette('neutral'),\n tone: (s) => (s.isDark ? 24 : 98),\n isBackground: true,\n },\n surfaceContainerLowest: {\n palette: (s) => s.getPalette('neutral'),\n tone: (s) => (s.isDark ? 4 : 100),\n isBackground: true,\n },\n surfaceContainerLow: {\n palette: (s) => s.getPalette('neutral'),\n tone: (s) => (s.isDark ? 10 : 96),\n isBackground: true,\n },\n surfaceContainer: {\n palette: (s) => s.getPalette('neutral'),\n tone: (s) => (s.isDark ? 12 : 94),\n isBackground: true,\n },\n surfaceContainerHigh: {\n palette: (s) => s.getPalette('neutral'),\n tone: (s) => (s.isDark ? 17 : 92),\n isBackground: true,\n },\n surfaceContainerHighest: {\n palette: (s) => s.getPalette('neutral'),\n tone: (s) => (s.isDark ? 22 : 90),\n isBackground: true,\n },\n onSurface: {\n palette: (s) => s.getPalette('neutral'),\n tone: (s) => (s.isDark ? 90 : 10),\n background: (s) => highestSurface(s, colorService),\n contrastCurve: new ContrastCurve(4.5, 7, 11, 21),\n },\n surfaceVariant: {\n palette: (s) => s.getPalette('neutralVariant'),\n tone: (s) => (s.isDark ? 30 : 90),\n isBackground: true,\n },\n onSurfaceVariant: {\n palette: (s) => s.getPalette('neutralVariant'),\n tone: (s) => (s.isDark ? 80 : 30),\n background: (s) => highestSurface(s, colorService),\n contrastCurve: new ContrastCurve(3, 4.5, 7, 11),\n },\n inverseSurface: {\n palette: (s) => s.getPalette('neutral'),\n tone: (s) => (s.isDark ? 90 : 20),\n },\n inverseOnSurface: {\n palette: (s) => s.getPalette('neutral'),\n tone: (s) => (s.isDark ? 20 : 95),\n background: (s) =>\n colorService.getColor('inverseSurface').getDynamicColor(),\n contrastCurve: new ContrastCurve(4.5, 7, 11, 21),\n },\n outline: {\n palette: (s) => s.getPalette('neutralVariant'),\n tone: (s) => (s.isDark ? 60 : 50),\n background: (s) => highestSurface(s, colorService),\n contrastCurve: new ContrastCurve(1.5, 3, 4.5, 7),\n },\n outlineVariant: {\n palette: (s) => s.getPalette('neutralVariant'),\n tone: (s) => (s.isDark ? 30 : 80),\n background: (s) => highestSurface(s, colorService),\n contrastCurve: new ContrastCurve(1, 1, 3, 7),\n },\n shadow: {\n palette: (s) => s.getPalette('neutral'),\n tone: (s) => 0,\n },\n scrim: {\n palette: (s) => s.getPalette('neutral'),\n tone: (s) => 0,\n },\n surfaceTint: {\n palette: (s) => s.getPalette('neutral'),\n tone: (s) => (s.isDark ? 80 : 40),\n isBackground: true,\n },\n secondaryContainer: {\n tone: (s) => {\n const initialTone = s.isDark ? 30 : 90;\n return findDesiredChromaByTone(\n s.getPalette('secondary').hue,\n s.getPalette('secondary').chroma,\n initialTone,\n !s.isDark\n );\n },\n },\n onSecondaryContainer: {\n tone: (s) => {\n return DynamicColor.foregroundTone(\n colorService.getColor('secondaryContainer').getDynamicColor().tone(s),\n 4.5\n );\n },\n },\n tertiaryContainer: {\n palette: (s) => s.getPalette('tertiary'),\n tone: (s) => {\n const proposedHct = s\n .getPalette('tertiary')\n .getHct(s.sourceColorHct.tone);\n return DislikeAnalyzer.fixIfDisliked(proposedHct).tone;\n },\n },\n onTertiaryContainer: {\n palette: (s) => s.getPalette('tertiary'),\n tone: (s) => {\n return DynamicColor.foregroundTone(\n colorService.getColor('tertiaryContainer').getDynamicColor().tone(s),\n 4.5\n );\n },\n },\n error: {\n palette: (s) => s.getPalette('error'),\n tone: (s) => (s.isDark ? 80 : 40),\n isBackground: true,\n background: (s) => highestSurface(s, colorService),\n contrastCurve: new ContrastCurve(3, 4.5, 7, 11),\n toneDeltaPair: (s) =>\n new ToneDeltaPair(\n colorService.getColor('errorContainer').getDynamicColor(),\n colorService.getColor('error').getDynamicColor(),\n 15,\n 'nearer',\n false\n ),\n },\n onError: {\n palette: (s) => s.getPalette('error'),\n tone: (s) => (s.isDark ? 20 : 100),\n background: (s) => colorService.getColor('error').getDynamicColor(),\n contrastCurve: new ContrastCurve(4.5, 7, 11, 21),\n },\n errorContainer: {\n palette: (s) => s.getPalette('error'),\n tone: (s) => (s.isDark ? 30 : 90),\n isBackground: true,\n background: (s) => highestSurface(s, colorService),\n contrastCurve: new ContrastCurve(1, 1, 3, 7),\n toneDeltaPair: (s) =>\n new ToneDeltaPair(\n colorService.getColor('errorContainer').getDynamicColor(),\n colorService.getColor('error').getDynamicColor(),\n 15,\n 'nearer',\n false\n ),\n },\n onErrorContainer: {\n palette: (s) => s.getPalette('error'),\n tone: (s) => (s.isDark ? 90 : 10),\n background: (s) =>\n colorService.getColor('errorContainer').getDynamicColor(),\n contrastCurve: new ContrastCurve(4.5, 7, 11, 21),\n },\n\n onTertiaryFixed: {\n palette: (s) => s.getPalette('tertiary'),\n tone: (s) => 10.0,\n background: (s) =>\n colorService.getColor('tertiaryFixedDim').getDynamicColor(),\n secondBackground: (s) =>\n colorService.getColor('tertiaryFixed').getDynamicColor(),\n contrastCurve: new ContrastCurve(4.5, 7, 11, 21),\n },\n onTertiaryFixedVariant: {\n palette: (s) => s.getPalette('tertiary'),\n tone: (s) => 30.0,\n background: (s) =>\n colorService.getColor('tertiaryFixedDim').getDynamicColor(),\n secondBackground: (s) =>\n colorService.getColor('tertiaryFixed').getDynamicColor(),\n contrastCurve: new ContrastCurve(3, 4.5, 7, 11),\n },\n },\n});\n","import {\n Hct,\n sanitizeDegreesDouble,\n TonalPalette,\n} from '@material/material-color-utilities';\n\nexport const getRotatedHue = (\n sourceColor: Hct,\n hues: number[],\n rotations: number[]\n): number => {\n const sourceHue = sourceColor.hue;\n if (hues.length !== rotations.length) {\n throw new Error(\n `mismatch between hue length ${hues.length} & rotations ${rotations.length}`\n );\n }\n if (rotations.length === 1) {\n return sanitizeDegreesDouble(sourceColor.hue + rotations[0]);\n }\n const size = hues.length;\n for (let i = 0; i <= size - 2; i++) {\n const thisHue = hues[i];\n const nextHue = hues[i + 1];\n if (thisHue < sourceHue && sourceHue < nextHue) {\n return sanitizeDegreesDouble(sourceHue + rotations[i]);\n }\n }\n // If this statement executes, something is wrong, there should have been a\n // rotation found using the arrays.\n return sourceHue;\n};\n\nexport class VariantEntity {\n constructor(\n public palettes: Record<string, (sourceColorHct: Hct) => TonalPalette> = {},\n public customPalettes?: (colorHct: Hct) => TonalPalette\n ) {}\n}\n","import {\n sanitizeDegreesDouble,\n TonalPalette,\n} from '@material/material-color-utilities';\nimport { getRotatedHue, VariantEntity } from '../entities/variant.entity';\n\nexport class VariantModel {\n static tonalSpot: VariantEntity = {\n palettes: {\n primary: (sourceColorHct) =>\n TonalPalette.fromHueAndChroma(sourceColorHct.hue, 36.0),\n secondary: (sourceColorHct) =>\n TonalPalette.fromHueAndChroma(sourceColorHct.hue, 16.0),\n tertiary: (sourceColorHct) =>\n TonalPalette.fromHueAndChroma(\n sanitizeDegreesDouble(sourceColorHct.hue + 60.0),\n 24.0\n ),\n neutral: (sourceColorHct) =>\n TonalPalette.fromHueAndChroma(sourceColorHct.hue, 6.0),\n neutralVariant: (sourceColorHct) =>\n TonalPalette.fromHueAndChroma(sourceColorHct.hue, 8.0),\n },\n customPalettes: (colorHct) =>\n TonalPalette.fromHueAndChroma(colorHct.hue, 16),\n };\n static vibrant: VariantEntity = {\n palettes: {\n primary: (sourceColorHct) =>\n TonalPalette.fromHueAndChroma(sourceColorHct.hue, 200.0),\n secondary: (sourceColorHct) =>\n TonalPalette.fromHueAndChroma(\n getRotatedHue(sourceColorHct, this.hues, this.secondaryRotations),\n 24.0\n ),\n tertiary: (sourceColorHct) =>\n TonalPalette.fromHueAndChroma(\n getRotatedHue(sourceColorHct, this.hues, this.tertiaryRotations),\n 32.0\n ),\n neutral: (sourceColorHct) =>\n TonalPalette.fromHueAndChroma(sourceColorHct.hue, 6.0),\n neutralVariant: (sourceColorHct) =>\n TonalPalette.fromHueAndChroma(sourceColorHct.hue, 8.0),\n },\n customPalettes: (colorHct) =>\n TonalPalette.fromHueAndChroma(\n getRotatedHue(colorHct, this.hues, this.secondaryRotations),\n 24.0\n ),\n };\n\n private static readonly hues = [\n 0.0, 41.0, 61.0, 101.0, 131.0, 181.0, 251.0, 301.0, 360.0,\n ];\n\n private static readonly secondaryRotations = [\n 18.0, 15.0, 10.0, 12.0, 15.0, 18.0, 15.0, 12.0, 12.0,\n ];\n private static readonly tertiaryRotations = [\n 35.0, 30.0, 20.0, 25.0, 30.0, 35.0, 30.0, 25.0, 25.0,\n ];\n}\n","import { ConfigInterface } from './config.interface';\n\nimport { resolve } from 'node:path';\nimport { defaultColors } from '../color';\nimport { VariantModel } from '../theme';\nimport { AppService } from '../app.service';\nimport { existsSync } from 'node:fs';\n\nexport function defineConfig(configObject: ConfigInterface): ConfigInterface {\n if (!configObject || typeof configObject !== 'object') {\n throw new Error('The configuration is missing or not an object');\n }\n if (!('sourceColor' in configObject)) {\n throw new Error('Invalid configuration');\n }\n return configObject as ConfigInterface;\n}\n\nexport class ConfigService {\n configPath = './theme.config';\n\n private appService: AppService;\n\n constructor({ appService }: { appService: AppService }) {\n this.appService = appService;\n }\n\n public loadConfig(config?: ConfigInterface): void {\n const { themeService, colorService, pluginService } = this.appService;\n const {\n sourceColor,\n contrastLevel = 0,\n isDark = false,\n variant = VariantModel.tonalSpot,\n palettes,\n colors,\n useDefaultColors = true,\n plugins,\n } = config ?? this.getConfig();\n themeService.create({\n contrastLevel: contrastLevel,\n isDark: isDark,\n sourceColorHex: sourceColor,\n variant: variant,\n });\n if (palettes) {\n Object.entries(palettes).forEach(([key, value]) =>\n themeService.addCustomPalette(key, value)\n );\n }\n if (useDefaultColors) {\n colorService.addColors(defaultColors);\n }\n if (colors) {\n colorService.addColors(colors);\n }\n if (plugins) {\n plugins.forEach((plugin) => {\n pluginService.addPlugin(plugin);\n });\n pluginService.loadPlugins(this.appService);\n }\n }\n\n private getConfig(): ConfigInterface {\n const base = resolve(this.configPath);\n const extensions = ['.js', '.ts', '.jms', '.jcs'];\n let configImport = null;\n\n for (const ext of extensions) {\n const path = base + ext;\n if (existsSync(path)) {\n configImport = require(path);\n break;\n }\n }\n\n if (!configImport) {\n throw new Error('Configuration file not found');\n }\n\n let config: unknown;\n if ('default' in configImport) {\n config = configImport.default;\n } else {\n config = configImport;\n }\n\n return config as ConfigInterface;\n }\n}\n","import { asClass } from 'awilix';\nimport { Module } from '../app.container';\nimport { ConfigService } from './config.service';\n\nexport const ConfigModule: Module = {\n configService: asClass(ConfigService).singleton(),\n};\n","import { PluginAbstract } from './pluginAbstract';\nimport { AppService } from '../app.service';\n\nexport class PluginService {\n private plugins = new Map<string, PluginAbstract<any, any>>();\n\n public addPlugin(plugin: PluginAbstract<any, any>) {\n this.plugins.set(plugin.name, plugin);\n }\n\n public loadPlugins(appService: AppService) {\n const plugins = new Map(this.plugins);\n\n let size = 0;\n do {\n size = plugins.size;\n plugins.forEach((plugin, key) => {\n const deps = plugin.dependencies.filter(\n (dep) => !this.plugins.has(new dep().name)\n );\n if (deps.length === 0) {\n this.plugins.set(plugin.name, plugin.init(appService));\n plugins.delete(key);\n }\n });\n } while (plugins.size != 0 && plugins.size < size);\n\n if (plugins.size > 0)\n throw new Error(\n \"Some plugins couldn't be loaded due to missing dependencies: \" +\n Array.from(plugins.keys())\n );\n }\n\n public getPlugin<T extends PluginAbstract<any, any>>(\n plugin: new (...args: any) => T\n ): T {\n const pluginInstance = this.plugins.get(new plugin().name);\n if (!pluginInstance) throw new Error(`Plugin ${plugin.name} not found`);\n return pluginInstance as T;\n }\n}\n","import { asClass } from 'awilix';\nimport { Module } from '../app.container';\nimport { PluginService } from './plugin.service';\n\nexport const PluginModule: Module = {\n pluginService: asClass(PluginService).singleton(),\n};\n","import {\n AwilixContainer,\n BuildResolver,\n createContainer,\n DisposableResolver,\n InjectionMode,\n} from 'awilix';\nimport { ColorModule } from './color/color.module';\nimport { ThemeModule } from './theme/theme.module';\nimport { AppModule } from './app.module';\nimport { ConfigModule } from './config/config.module';\nimport { PluginModule } from './plugin/plugin.module';\n\nexport type Module = Record<\n string,\n BuildResolver<any> & DisposableResolver<any>\n>;\n\nexport function importContainer(\n container: AwilixContainer,\n services: Module[]\n) {\n services.forEach((service) => {\n Object.entries(service).forEach(([name, serviceClass]) => {\n container.register(name, serviceClass);\n });\n });\n return container;\n}\n\nconst AppContainer = createContainer({\n injectionMode: InjectionMode.PROXY,\n});\n\nimportContainer(AppContainer, [\n ConfigModule,\n AppModule,\n PluginModule,\n ColorModule,\n ThemeModule,\n]);\n\n// AppContainer.register(ColorModule.cradle);\n// AppContainer.register(ThemeModule.cradle);\n\nexport default AppContainer;\n","import AppContainer from './app.container';\nimport { AppService } from './app.service';\nimport { ConfigInterface, ConfigService } from './config';\n\nexport function bootstrap(): AppService {\n return AppContainer.resolve<AppService>('appService');\n}\n\nexport function bootstrapFromConfig(args?: {\n path?: string;\n config?: ConfigInterface;\n}): AppService {\n const configService = AppContainer.resolve<ConfigService>('configService');\n if (args?.path) configService.configPath = args.path;\n configService.loadConfig(args?.config);\n return AppContainer.resolve<AppService>('appService');\n}\n","import { AppService } from '../app.service';\n\nexport type PluginConstructor<Plugin extends PluginImplAbstract<any>> = new (\n ...args: any\n) => Plugin;\n\nexport abstract class PluginAbstract<\n Plugin extends PluginImplAbstract<Options>,\n Options extends object\n> {\n public abstract readonly dependencies: (new (...args: any) => PluginAbstract<\n any,\n any\n >)[];\n public abstract readonly name: string;\n public options: Options;\n public abstract readonly pluginClass: PluginConstructor<Plugin>;\n protected pluginInstance: Plugin | undefined;\n\n constructor(options: Options) {\n this.options = options;\n }\n\n public init(appService: AppService) {\n this.pluginInstance = new this.pluginClass(appService, this.options);\n this.pluginInstance.onInit();\n return this;\n }\n\n public getInstance(): Plugin {\n if (!this.pluginInstance) {\n throw new Error(`Plugin ${this.name} is not initialized`);\n }\n return this.pluginInstance;\n }\n}\n\nexport abstract class PluginImplAbstract<Options extends object> {\n constructor(protected appService: AppService, protected options: Options) {\n this.onInit();\n }\n\n abstract onInit(): void;\n}\n","import { PluginAbstract, PluginImplAbstract } from '../../plugin';\n\nexport enum FontFamily {\n Expressive = 'expressive',\n Neutral = 'neutral',\n}\nexport type FontStyle = {\n fontSize: number;\n lineHeight: number;\n fontWeight: number;\n letterSpacing?: number;\n fontFamily: FontFamily;\n};\nexport type FontRole = 'display' | 'headline' | 'title' | 'label' | 'body';\nexport type FontSize = 'large' | 'medium' | 'small';\ninterface FontPluginOptions {\n fontFamily?: {\n expressive?: string[];\n neutral?: string[];\n };\n fontStyles?: Partial<Record<FontRole, Record<FontSize, Partial<FontStyle>>>>;\n}\n\nexport class FontPlugin extends PluginAbstract<\n FontPluginImpl,\n FontPluginOptions\n> {\n dependencies = [];\n name = 'font';\n pluginClass = FontPluginImpl;\n}\n\nclass FontPluginImpl extends PluginImplAbstract<FontPluginOptions> {\n private _fontFamily: { expressive: string[]; neutral: string[] } | undefined;\n\n get fontFamily(): { expressive: string[]; neutral: string[] } {\n if (!this._fontFamily) throw new Error('Font family not initialized');\n return this._fontFamily;\n }\n\n set fontFamily(\n value: { expressive: string[]; neutral: string[] } | undefined\n ) {\n this._fontFamily = value;\n }\n\n private _fontStyles:\n | Record<FontRole, Record<FontSize, FontStyle>>\n | undefined;\n\n get fontStyles(): Record<FontRole, Record<FontSize, FontStyle>> {\n if (!this._fontStyles) throw new Error('Font styles not initialized');\n return this._fontStyles;\n }\n\n set fontStyles(\n value: Record<FontRole, Record<FontSize, FontStyle>> | undefined\n ) {\n this._fontStyles = value;\n }\n\n getFonts() {\n return {\n fontStyles: this.fontStyles,\n fontFamily: this.fontFamily,\n };\n }\n\n onInit(): void {\n this.fontFamily = {\n expressive: this.options?.fontFamily?.expressive ?? [\n 'Roboto',\n 'sans-serif',\n ],\n neutral: this.options?.fontFamily?.neutral ?? ['Roboto', 'sans-serif'],\n };\n this.fontStyles = {\n display: {\n large: {\n fontWeight: 400,\n fontSize: 3.5625,\n lineHeight: 4,\n letterSpacing: -0.015625,\n fontFamily: FontFamily.Expressive,\n },\n medium: {\n fontWeight: 400,\n fontSize: 2.8125,\n lineHeight: 3.25,\n fontFamily: FontFamily.Expressive,\n },\n small: {\n fontWeight: 400,\n fontSize: 2.25,\n lineHeight: 2.75,\n fontFamily: FontFamily.Expressive,\n },\n },\n headline: {\n large: {\n fontWeight: 400,\n fontSize: 2,\n lineHeight: 2.5,\n fontFamily: FontFamily.Expressive,\n },\n medium: {\n fontWeight: 400,\n fontSize: 1.75,\n lineHeight: 2.25,\n fontFamily: FontFamily.Expressive,\n },\n small: {\n fontWeight: 400,\n fontSize: 1.5,\n lineHeight: 2,\n fontFamily: FontFamily.Expressive,\n },\n },\n title: {\n large: {\n fontWeight: 400,\n fontSize: 1.375,\n lineHeight: 1.75,\n fontFamily: FontFamily.Neutral,\n },\n medium: {\n fontWeight: 500,\n fontSize: 1,\n lineHeight: 1.5,\n fontFamily: FontFamily.Neutral,\n letterSpacing: 0.009375,\n },\n small: {\n fontWeight: 500,\n fontSize: 0.875,\n lineHeight: 1.25,\n fontFamily: FontFamily.Neutral,\n letterSpacing: 0.00625,\n },\n },\n label: {\n large: {\n fontWeight: 500,\n fontSize: 0.875,\n lineHeight: 1.25,\n fontFamily: FontFamily.Neutral,\n letterSpacing: 0.00625,\n },\n medium: {\n fontWeight: 500,\n fontSize: 0.75,\n lineHeight: 1,\n fontFamily: FontFamily.Neutral,\n letterSpacing: 0.03125,\n },\n small: {\n fontWeight: 500,\n fontSize: 0.6875,\n lineHeight: 1,\n fontFamily: FontFamily.Neutral,\n letterSpacing: 0.03125,\n },\n },\n body: {\n large: {\n fontWeight: 400,\n fontSize: 1,\n lineHeight: 1.5625,\n fontFamily: FontFamily.Neutral,\n letterSpacing: 0.03125,\n },\n medium: {\n fontWeight: 400,\n fontSize: 0.875,\n lineHeight: 1.25,\n fontFamily: FontFamily.Neutral,\n letterSpacing: 0.015625,\n },\n small: {\n fontWeight: 400,\n fontSize: 0.75,\n lineHeight: 1,\n fontFamily: FontFamily.Neutral,\n letterSpacing: 0.025,\n },\n },\n };\n\n if (this.options && this.options.fontStyles)\n Object.entries(this.options.fontStyles).forEach(([key, fontParam]) => {\n const fontRole: FontRole = key as FontRole;\n Object.entries(fontParam).forEach(([size, fontStyle]) => {\n const fontSize: FontSize = size as FontSize;\n if (fontStyle) {\n this.fontStyles[fontRole][fontSize] = {\n ...this.fontStyles[fontRole][fontSize],\n ...fontStyle,\n };\n }\n });\n });\n }\n}\n","// from tailwindcss src/util/flattenColors\nimport plugin from 'tailwindcss/plugin';\nimport { PluginAPI } from 'tailwindcss/types/config';\n\ntype State = {\n statePrefix: string;\n disabledStyles: {\n textOpacity: number;\n backgroundOpacity: number;\n };\n transition: {\n duration: number;\n };\n};\n\ntype Components = Record<string, Record<string, {}>>;\n\nexport const state = (colorkeys: string[]) =>\n plugin((pluginArgs: PluginAPI) => {\n addAllNewComponents(\n pluginArgs,\n {\n statePrefix: 'state',\n disabledStyles: {\n textOpacity: 0.38,\n backgroundOpacity: 0.12,\n },\n transition: {\n duration: 150,\n },\n },\n colorkeys\n );\n }, {});\n\nconst addAllNewComponents = (\n { addComponents }: PluginAPI,\n { statePrefix, disabledStyles, transition }: State,\n colorKeys: string[]\n) => {\n const newComponents: Components = {};\n\n for (const isGroup of [false, true]) {\n const group = isGroup ? 'group-' : '';\n for (const colorName of colorKeys) {\n const className = `.${group}${statePrefix}-${colorName}`;\n newComponents[className] = {\n [`@apply ${group}hover:bg-${colorName}/[0.08]`]: {},\n [`@apply ${group}active:bg-${colorName}/[0.12]`]: {},\n [`@apply ${group}focus-visible:bg-${colorName}/[0.12]`]: {},\n };\n if (transition) {\n newComponents[className][`@apply transition-colors`] = {};\n newComponents[className][`@apply duration-${transition.duration}`] = {};\n }\n if (disabledStyles) {\n newComponents[className][\n `@apply ${group}disabled:text-on-surface/[${disabledStyles.textOpacity}]`\n ] = {};\n newComponents[className][\n `@apply ${group}disabled:bg-on-surface/[${disabledStyles.backgroundOpacity}]`\n ] = {};\n }\n }\n }\n for (const colorName of colorKeys) {\n for (const stateName of ['hover', 'active', 'focus', 'disabled']) {\n const className = `.${stateName}-${statePrefix}-${colorName}`;\n if (stateName === 'active' || stateName === 'focus') {\n newComponents[className] = {\n [`@apply bg-${colorName}/[0.12]`]: {},\n };\n } else if (stateName === 'hover') {\n newComponents[className] = {\n [`@apply bg-${colorName}/[0.08]`]: {},\n };\n } else if (stateName === 'disabled') {\n newComponents[className] = {\n [`@apply text-on-surface/[${disabledStyles.textOpacity}]`]: {},\n };\n newComponents[className] = {\n [`@apply bg-on-surface/[${disabledStyles.backgroundOpacity}]`]: {},\n };\n }\n }\n }\n addComponents(newComponents);\n};\n","import { AppService } from '../../../app.service';\n\ntype SubTheme = {\n name: string;\n selectors?: string[];\n mediaQuery?: '@media (prefers-color-scheme: dark)';\n extend: {\n colors: Record<string, string>;\n };\n};\n\nfunction createSubTheme({\n name,\n darkMode,\n isDarkTheme,\n colors,\n}: {\n name: string;\n isDarkTheme: boolean;\n darkMode: 'class' | 'media';\n colors: Record<string, string>;\n}): SubTheme {\n const theme: SubTheme = {\n name: isDarkTheme ? name + 'Dark' : name,\n selectors:\n isDarkTheme && darkMode === 'class'\n ? [\n '.dark-mode .theme-' + name,\n '.dark-mode.theme-' + name,\n '[data-theme=\"dark\"] .theme-' + name,\n '[data-theme=\"dark\"].theme-' + name,\n ]\n : [\n '.theme-' + name,\n `.theme-${name} .light-mode`,\n `.theme-${name} [data-theme=\"light\"]`,\n `.light-mode .theme-${name}`,\n `.light-mode.theme-${name}`,\n `[data-theme=\"light\"] .theme-${name}`,\n `[data-theme=\"light\"].theme-${name}`,\n ],\n mediaQuery:\n isDarkTheme && darkMode === 'media'\n ? '@media (prefers-color-scheme: dark)'\n : undefined,\n extend: {\n colors: colors,\n },\n };\n return theme;\n}\n\nexport const themer = (args: {\n colors: Record<\n string,\n {\n light: string;\n dark: string;\n }\n >;\n darkMode: 'class' | 'media';\n subThemes?: Record<string, string>;\n appService: AppService;\n}) => {\n const { themeService, colorService } = args.appService;\n const options: {\n defaultTheme: {\n extend: {\n colors: Record<string, string>;\n };\n };\n themes: [\n {\n name: string;\n selectors?: ['.dark-mode', '[data-theme=\"dark\"]'];\n mediaQuery?: '@media (prefers-color-scheme: dark)';\n extend: {\n colors: Record<string, string>;\n };\n },\n ...SubTheme[]\n ];\n } = {\n defaultTheme: {\n extend: {\n colors: {},\n },\n },\n themes: [\n {\n name: 'darkTheme',\n extend: {\n colors: {},\n },\n },\n ],\n };\n\n Object.entries(args.colors).forEach(([key, value]) => {\n options.defaultTheme.extend.colors[key] = value.light;\n options.themes[0].extend.colors[key] = value.dark;\n });\n options.themes[0].selectors =\n args.darkMode === 'class'\n ? ['.dark-mode', '[data-theme=\"dark\"]']\n : undefined;\n options.themes[0].mediaQuery =\n args.darkMode === 'media'\n ? '@media (prefers-color-scheme: dark)'\n : undefined;\n\n if (args.subThemes) {\n Object.entries(args.subThemes).forEach(([key, value]) => {\n themeService.update({ sourceColorHex: value });\n for (const isDarkTheme of [true, false]) {\n const colors: Record<string, string> = {};\n themeService.update({ isDark: isDarkTheme });\n for (const [key, value] of colorService.getColors().entries()) {\n const newKey = key\n .replace(/([a-z0-9]|(?=[A-Z]))([A-Z])/g, '$1-$2')\n .toLowerCase();\n colors[newKey] = value.getHex();\n }\n options.themes.push(\n createSubTheme({\n name: key,\n isDarkTheme: isDarkTheme,\n darkMode: args.darkMode,\n colors: colors,\n })\n );\n }\n });\n }\n\n return require('tailwindcss-themer')(options);\n};\n","import plugin from 'tailwindcss/plugin';\nimport { CSSRuleObject, PluginAPI } from 'tailwindcss/types/config';\nimport { FontRole, FontSize, FontStyle } from '../../font/font.plugin';\n\nexport const font = (\n fontStyles: Record<FontRole, Record<FontSize, FontStyle>>,\n responsiveBreakPoints: Record<string, number>\n) => {\n const createUtilities = ({\n theme,\n }: Pick<PluginAPI, 'theme'>): CSSRuleObject => {\n const pixelUnit = 'rem';\n const newUtilities: any = {};\n\n const baseTextStyle = (sizeValue: FontStyle) => ({\n fontSize: sizeValue.fontSize + pixelUnit,\n fontWeight: sizeValue.fontWeight as unknown as CSSRuleObject,\n lineHeight: sizeValue.lineHeight + pixelUnit,\n letterSpacing: sizeValue.letterSpacing\n ? sizeValue.letterSpacing + pixelUnit\n : null,\n fontFamily: theme('fontFamily.' + sizeValue.fontFamily),\n });\n\n const responsiveTextStyle = (\n sizeValue: FontStyle,\n breakPointName: string,\n breakPointRatio: number\n ) => ({\n [`@media (min-width: ${theme('screens.' + breakPointName, {})})`]: {\n fontSize: sizeValue.fontSize * breakPointRatio + pixelUnit,\n lineHeight: sizeValue.lineHeight * breakPointRatio + pixelUnit,\n },\n });\n\n for (const [roleName, roleValue] of Object.entries(fontStyles)) {\n for (const [sizeName, sizeValue] of Object.entries(roleValue)) {\n newUtilities['.text-' + roleName + '-' + sizeName] = {\n ...baseTextStyle(sizeValue),\n ...Object.entries(responsiveBreakPoints).reduce(\n (acc, [breakPointName, breakPointRatio]) => {\n acc = {\n ...acc,\n ...responsiveTextStyle(\n sizeValue,\n breakPointName,\n breakPointRatio\n ),\n };\n return acc;\n },\n {}\n ),\n };\n }\n }\n\n return newUtilities as CSSRuleObject;\n };\n return plugin(\n ({\n addUtilities,\n theme,\n }: Pick<PluginAPI, 'theme'> & Pick<PluginAPI, 'addUtilities'>) => {\n const newUtilities = createUtilities({ theme });\n addUtilities(newUtilities);\n }\n );\n};\n","import { PluginAbstract, PluginImplAbstract } from '../../plugin';\nimport { Theme } from './main';\nimport { state, themer } from './plugins-tailwind';\n\nimport { font } from './plugins-tailwind/font';\nimport { FontPlugin } from '../font';\n\ninterface TailwindPluginOptions {\n darkMode?: 'class' | 'media';\n responsiveBreakPoints?: Record<string, number>;\n subThemes?: Record<string, string>;\n}\n\nexport class TailwindPlugin extends PluginAbstract<\n TailwindImplPlugin,\n TailwindPluginOptions\n> {\n public dependencies = [FontPlugin];\n public name = 'tailwind';\n pluginClass = TailwindImplPlugin;\n}\n\nclass TailwindImplPlugin extends PluginImplAbstract<TailwindPluginOptions> {\n onInit() {\n this.options.darkMode ??= 'class';\n this.options.responsiveBreakPoints ??= {\n lg: 1.125,\n };\n }\n\n getTheme(): Theme {\n const colors: Record<\n string,\n {\n light: string;\n dark: string;\n }\n > = {};\n\n for (const isDark of [false, true]) {\n this.appService.themeService.update({ isDark: isDark });\n for (const [key, value] of this.appService.colorService\n .getColors()\n .entries()) {\n const newKey = key\n .replace(/([a-z0-9]|(?=[A-Z]))([A-Z])/g, '$1-$2')\n .toLowerCase();\n colors[newKey] ??= { light: '', dark: '' };\n colors[newKey][isDark ? 'dark' : 'light'] = value.getHex();\n }\n }\n\n const { fontStyles, fontFamily } = this.appService.pluginService\n .getPlugin(FontPlugin)\n .getInstance()\n .getFonts();\n return {\n colors: {},\n fontFamily: fontFamily,\n plugins: [\n state(Object.keys(colors)),\n font(fontStyles, this.options.responsiveBreakPoints!),\n themer({\n colors,\n darkMode: this.options.darkMode!,\n subThemes: this.options.subThemes,\n appService: this.appService,\n }),\n ],\n };\n }\n}\n","import { PluginsConfig } from 'tailwindcss/types/config';\nimport { bootstrapFromConfig } from '../../main';\nimport { AppService } from '../../app.service';\nimport { TailwindPlugin } from './tailwind.plugin';\n\nexport type Theme = {\n colors: Record<string, string>;\n fontFamily: { expressive: string[]; neutral: string[] };\n plugins: Partial<PluginsConfig>;\n};\n\nexport const createTheme = (): Theme & { appService: AppService } => {\n const app = bootstrapFromConfig();\n const plugin = app.pluginService.getPlugin(TailwindPlugin).getInstance();\n return { ...plugin.getTheme(), appService: app };\n};\n"],"names":["ColorService","_ref","colorManagerService","_proto","prototype","getColors","getAll","addColor","key","color","createOrUpdate","addColors","args","_this","Array","isArray","forEach","fromPalettes","map","paletteKey","addFromPalette","colors","Object","keys","getColor","get","removeColor","remove","updateColor","newColor","ContrastCurve","low","normal","medium","high","contrastLevel","lerp","DynamicColor","name","palette","tone","isBackground","background","secondBackground","contrastCurve","toneDeltaPair","hctCache","Map","Error","fromPalette","_args$name","_args$isBackground","foregroundTone","bgTone","ratio","lighterTone","Contrast","lighterUnsafe","darkerTone","darkerUnsafe","lighterRatio","ratioOfTones","darkerRatio","preferLighter","tonePrefersLightForeground","negligibleDifference","Math","abs","round","toneAllowsLightForeground","enableLightForeground","getArgb","scheme","getHct","toInt","cachedAnswer","getTone","answer","size","clear","set","decreasingContrast","roleA","roleB","delta","polarity","stayTogether","bg","aIsNearer","isDark","nearer","farther","amNearer","expansionDir","nContrast","fContrast","nInitialTone","nTone","fInitialTone","fTone","clampDouble","max","min","desiredRatio","bg1","bg2","_ref2","bgTone1","bgTone2","_ref3","upper","lower","lightOption","lighter","darkOption","darker","availables","push","prefersLight","length","ToneDeltaPair","argbToRgb","argb","r","g","b","ColorEntity","option","schemeService","colorService","dynamicColor","update","_extends","getHex","hexFromArgb","getDynamicColor","getRgb","getName","replace","toLowerCase","capitalizeFirstLetter","string","charAt","toUpperCase","slice","highestSurface","s","ColorManagerService","colorMap","colorEntity","colorKey","ColorKey","onColorKey","colorKeyContainer","onColorKeyContainer","inverseColorKey","colorKeyFixed","colorKeyFixedDim","onColorKeyFixed","onColorKeyFixedVariant","getPalette","ColorModule","asClass","singleton","SchemeEntity","options","palettes","_createClass","Hct","fromInt","sourceColorArgb","SchemeService","schemeEntity","_this$options","_this$options2","sourcesColorHex","primary","argbFromHex","sourceColorHct","_i","_Object$entries","entries","_Object$entries$_i","_Object$entries$_i$","sourceColorkey","paletteFunction","tonalPalette","ThemeService","variantService","create","sourceColorHex","variant","themeOptions","addCustomPalette","colorHex","VariantService","customPalettes","variantEntity","error","TonalPalette","fromHueAndChroma","ThemeModule","themeService","AppService","pluginService","AppModule","appService","findDesiredChromaByTone","hue","chroma","byDecreasingTone","closestToChroma","from","chromaPeak","potentialSolution","potentialDelta","currentDelta","defaultColors","onBackground","surface","surfaceDim","surfaceBright","surfaceContainerLowest","surfaceContainerLow","surfaceContainer","surfaceContainerHigh","surfaceContainerHighest","onSurface","surfaceVariant","onSurfaceVariant","inverseSurface","inverseOnSurface","outline","outlineVariant","shadow","scrim","surfaceTint","secondaryContainer","initialTone","onSecondaryContainer","tertiaryContainer","proposedHct","DislikeAnalyzer","fixIfDisliked","onTertiaryContainer","onError","errorContainer","onErrorContainer","onTertiaryFixed","onTertiaryFixedVariant","getRotatedHue","sourceColor","hues","rotations","sourceHue","sanitizeDegreesDouble","i","thisHue","nextHue","VariantEntity","VariantModel","tonalSpot","secondary","tertiary","neutral","neutralVariant","colorHct","vibrant","_VariantModel","secondaryRotations","tertiaryRotations","defineConfig","configObject","ConfigService","configPath","loadConfig","config","_this$appService","getConfig","_ref2$contrastLevel","_ref2$isDark","_ref2$variant","_ref2$useDefaultColor","useDefaultColors","plugins","value","plugin","addPlugin","loadPlugins","base","resolve","extensions","configImport","_extensions","ext","path","existsSync","require","ConfigModule","configService","PluginService","deps","dependencies","filter","dep","has","init","getPlugin","pluginInstance","PluginModule","importContainer","container","services","service","serviceClass","register","AppContainer","createContainer","injectionMode","InjectionMode","PROXY","bootstrap","bootstrapFromConfig","PluginAbstract","pluginClass","onInit","getInstance","PluginImplAbstract","FontFamily","FontPlugin","_PluginAbstract","_len","arguments","_key","call","apply","concat","FontPluginImpl","_inheritsLoose","_PluginImplAbstract","_this2","_len2","_key2","_fontFamily","_fontStyles","getFonts","fontStyles","fontFamily","_this$options$fontFam","_this$options$fontFam2","_this3","expressive","display","large","fontWeight","fontSize","lineHeight","letterSpacing","Expressive","small","headline","title","Neutral","label","body","fontParam","fontRole","fontStyle","state","colorkeys","pluginArgs","addAllNewComponents","statePrefix","disabledStyles","textOpacity","backgroundOpacity","transition","duration","colorKeys","addComponents","newComponents","_arr","isGroup","group","_iterator","_createForOfIteratorHelperLoose","_step","done","_newComponents$classN","colorName","className","_iterator2","_step2","_i2","_arr2","stateName","_newComponents$_class","_newComponents$_class2","_newComponents$_class3","_newComponents$_class4","createSubTheme","darkMode","isDarkTheme","theme","selectors","mediaQuery","undefined","extend","themer","_args$appService","defaultTheme","themes","light","dark","subThemes","_step$value","newKey","font","responsiveBreakPoints","createUtilities","pixelUnit","newUtilities","baseTextStyle","sizeValue","responsiveTextStyle","breakPointName","breakPointRatio","roleName","roleValue","_loop","_Object$entries2$_i","_Object$entries2","sizeName","reduce","acc","_ref4","addUtilities","TailwindPlugin","TailwindImplPlugin","_this$options$darkMod","_this$options2$respon","lg","getTheme","_colors$newKey","_this$appService$plug","createTheme","app"],"mappings":"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"}
1
+ {"version":3,"file":"theme.cjs.development.js","sources":["../src/color/services/color.service.ts","../src/material-color-utilities/contrastCurve.ts","../src/material-color-utilities/dynamic_color.ts","../src/material-color-utilities/toneDeltaPair.ts","../src/color/entities/color.entity.ts","../src/color/services/color-manager.service.ts","../src/color/color.module.ts","../src/theme/entities/scheme.entity.ts","../src/theme/services/scheme.service.ts","../src/theme/services/theme.service.ts","../src/theme/services/variant.service.ts","../src/theme/theme.module.ts","../src/app.service.ts","../src/app.module.ts","../src/color/models/default-color.model.ts","../src/theme/entities/variant.entity.ts","../src/theme/models/variant.model.ts","../src/config/config.service.ts","../src/config/config.module.ts","../src/plugin/plugin.service.ts","../src/plugin/plugin.module.ts","../src/app.container.ts","../src/main.ts","../src/plugin/pluginAbstract.ts","../src/plugins/font/font.plugin.ts","../src/plugins/tailwind/plugins-tailwind/state.ts","../src/plugins/tailwind/plugins-tailwind/themer.ts","../src/plugins/tailwind/plugins-tailwind/font.ts","../src/plugins/tailwind/tailwind.plugin.ts","../src/plugins/tailwind/main.ts"],"sourcesContent":["import { ColorManagerService } from './color-manager.service';\nimport { ColorInterface } from '../color.interface';\nimport { ColorEntity, ColorOptions } from '../entities';\n\ntype AddColors = {\n colors?: Record<string, Partial<ColorOptions>>;\n fromPalettes?: string[] | string;\n};\n\nexport type AddColorsOptions =\n | AddColors\n | ((colorService: ColorService) => AddColors);\n\nexport class ColorService implements ColorInterface {\n private readonly colorManagerService: ColorManagerService;\n constructor({\n colorManagerService,\n }: {\n colorManagerService: ColorManagerService;\n }) {\n this.colorManagerService = colorManagerService;\n }\n\n getColors() {\n return this.colorManagerService.getAll();\n }\n\n // getColors() {\n // const colors: Record<string, string> = {};\n //\n // for (const [key, value] of this.colorManagerService.getAll()) {\n // colors[key] = hexFromArgb(value.getArgb(this.schemeService.get()));\n // }\n //\n // return colors;\n // }\n\n addColor(key: string, color: Partial<ColorOptions>): ColorEntity {\n return this.colorManagerService.createOrUpdate(key, color);\n }\n\n addColors(args: AddColorsOptions | AddColorsOptions[]) {\n const colorsEntity: ColorEntity[] = [];\n if (!Array.isArray(args)) args = [args];\n args.forEach((args) => {\n if (typeof args === 'function') {\n args = args(this);\n }\n if (args.fromPalettes) {\n if (!Array.isArray(args.fromPalettes))\n args.fromPalettes = [args.fromPalettes];\n args.fromPalettes.map((paletteKey) => {\n this.colorManagerService.addFromPalette(paletteKey);\n });\n }\n if (args.colors) {\n Object.keys(args.colors).map((key) =>\n this.addColor(key, args.colors![key])\n );\n }\n });\n }\n\n getColor(key: string): ColorEntity {\n return this.colorManagerService.get(key);\n }\n\n removeColor(key: string): boolean {\n return this.colorManagerService.remove(key);\n }\n\n updateColor(key: string, newColor: Partial<ColorOptions>): ColorEntity {\n return this.colorManagerService.createOrUpdate(key, newColor);\n }\n}\n","/**\n * @license\n * Copyright 2023 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { lerp } from '@material/material-color-utilities';\n\n/**\n * A class containing a value that changes with the contrast level.\n *\n * Usually represents the contrast requirements for a dynamic color on its\n * background. The four values correspond to values for contrast levels -1.0,\n * 0.0, 0.5, and 1.0, respectively.\n */\nexport class ContrastCurve {\n /**\n * Creates a `ContrastCurve` object.\n *\n * @param low Value for contrast level -1.0\n * @param normal Value for contrast level 0.0\n * @param medium Value for contrast level 0.5\n * @param high Value for contrast level 1.0\n */\n constructor(\n readonly low: number,\n readonly normal: number,\n readonly medium: number,\n readonly high: number\n ) {}\n\n /**\n * Returns the value at a given contrast level.\n *\n * @param contrastLevel The contrast level. 0.0 is the default (normal); -1.0\n * is the lowest; 1.0 is the highest.\n * @return The value. For contrast ratios, a number between 1.0 and 21.0.\n */\n get(contrastLevel: number): number {\n if (contrastLevel <= -1.0) {\n return this.low;\n } else if (contrastLevel < 0.0) {\n return lerp(this.low, this.normal, (contrastLevel - -1) / 1);\n } else if (contrastLevel < 0.5) {\n return lerp(this.normal, this.medium, (contrastLevel - 0) / 0.5);\n } else if (contrastLevel < 1.0) {\n return lerp(this.medium, this.high, (contrastLevel - 0.5) / 0.5);\n } else {\n return this.high;\n }\n }\n}\n","/**\n * @license\n * Copyright 2022 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n clampDouble,\n Contrast,\n Hct,\n TonalPalette,\n} from '@material/material-color-utilities';\nimport { ContrastCurve } from './contrastCurve';\nimport { ToneDeltaPair } from './toneDeltaPair';\nimport { SchemeEntity } from '../theme/entities/scheme.entity';\n\n/**\n * @param name The name of the dynamic color. Defaults to empty.\n * @param palette Function that provides a TonalPalette given\n * SchemeEntity. A TonalPalette is defined by a hue and chroma, so this\n * replaces the need to specify hue/chroma. By providing a tonal palette, when\n * contrast adjustments are made, intended chroma can be preserved.\n * @param tone Function that provides a tone given SchemeEntity.\n * @param isBackground Whether this dynamic color is a background, with\n * some other color as the foreground. Defaults to false.\n * @param background The background of the dynamic color (as a function of a\n * `SchemeEntity`), if it exists.\n * @param secondBackground A second background of the dynamic color (as a\n * function of a `SchemeEntity`), if it\n * exists.\n * @param contrastCurve A `ContrastCurve` object specifying how its contrast\n * against its background should behave in various contrast levels options.\n * @param toneDeltaPair A `ToneDeltaPair` object specifying a tone delta\n * constraint between two colors. One of them must be the color being\n * constructed.\n */\ninterface FromPaletteOptions {\n name?: string;\n palette: (scheme: SchemeEntity) => TonalPalette;\n tone: (scheme: SchemeEntity) => number;\n isBackground?: boolean;\n background?: (scheme: SchemeEntity) => DynamicColor;\n secondBackground?: (scheme: SchemeEntity) => DynamicColor;\n contrastCurve?: ContrastCurve;\n toneDeltaPair?: (scheme: SchemeEntity) => ToneDeltaPair;\n}\n\n/**\n * A color that adjusts itself based on UI state provided by SchemeEntity.\n *\n * Colors without backgrounds do not change tone when contrast changes. Colors\n * with backgrounds become closer to their background as contrast lowers, and\n * further when contrast increases.\n *\n * Prefer static constructors. They require either a hexcode, a palette and\n * tone, or a hue and chroma. Optionally, they can provide a background\n * DynamicColor.\n */\nexport class DynamicColor {\n private readonly hctCache = new Map<SchemeEntity, Hct>();\n\n /**\n * The base constructor for DynamicColor.\n *\n * _Strongly_ prefer using one of the convenience constructors. This class is\n * arguably too flexible to ensure it can support any scenario. Functional\n * arguments allow overriding without risks that come with subclasses.\n *\n * For example, the default behavior of adjust tone at max contrast\n * to be at a 7.0 ratio with its background is principled and\n * matches accessibility guidance. That does not mean it's the desired\n * approach for _every_ design system, and every color pairing,\n * always, in every case.\n *\n * @param name The name of the dynamic color. Defaults to empty.\n * @param palette Function that provides a TonalPalette given\n * SchemeEntity. A TonalPalette is defined by a hue and chroma, so this\n * replaces the need to specify hue/chroma. By providing a tonal palette, when\n * contrast adjustments are made, intended chroma can be preserved.\n * @param tone Function that provides a tone, given a SchemeEntity.\n * @param isBackground Whether this dynamic color is a background, with\n * some other color as the foreground. Defaults to false.\n * @param background The background of the dynamic color (as a function of a\n * `SchemeEntity`), if it exists.\n * @param secondBackground A second background of the dynamic color (as a\n * function of a `SchemeEntity`), if it\n * exists.\n * @param contrastCurve A `ContrastCurve` object specifying how its contrast\n * against its background should behave in various contrast levels options.\n * @param toneDeltaPair A `ToneDeltaPair` object specifying a tone delta\n * constraint between two colors. One of them must be the color being\n * constructed.\n */\n constructor(\n readonly name: string,\n readonly palette: (scheme: SchemeEntity) => TonalPalette,\n readonly tone: (scheme: SchemeEntity) => number,\n readonly isBackground: boolean,\n readonly background?: (scheme: SchemeEntity) => DynamicColor,\n readonly secondBackground?: (scheme: SchemeEntity) => DynamicColor,\n readonly contrastCurve?: ContrastCurve,\n readonly toneDeltaPair?: (scheme: SchemeEntity) => ToneDeltaPair\n ) {\n if (!background && secondBackground) {\n throw new Error(\n `Color ${name} has secondBackground` +\n `defined, but background is not defined.`\n );\n }\n if (!background && contrastCurve) {\n throw new Error(\n `Color ${name} has contrastCurve` +\n `defined, but background is not defined.`\n );\n }\n if (background && !contrastCurve) {\n throw new Error(\n `Color ${name} has background` +\n `defined, but contrastCurve is not defined.`\n );\n }\n }\n\n /**\n * Create a DynamicColor defined by a TonalPalette and HCT tone.\n *\n * @param args Functions with SchemeEntity as input. Must provide a palette\n * and tone. May provide a background DynamicColor and ToneDeltaConstraint.\n */\n static fromPalette(args: FromPaletteOptions): DynamicColor {\n return new DynamicColor(\n args.name ?? '',\n args.palette,\n args.tone,\n args.isBackground ?? false,\n args.background,\n args.secondBackground,\n args.contrastCurve,\n args.toneDeltaPair\n );\n }\n\n /**\n * Given a background tone, find a foreground tone, while ensuring they reach\n * a contrast ratio that is as close to [ratio] as possible.\n *\n * @param bgTone Tone in HCT. Range is 0 to 100, undefined behavior when it\n * falls outside that range.\n * @param ratio The contrast ratio desired between bgTone and the return\n * value.\n */\n static foregroundTone(bgTone: number, ratio: number): number {\n const lighterTone = Contrast.lighterUnsafe(bgTone, ratio);\n const darkerTone = Contrast.darkerUnsafe(bgTone, ratio);\n const lighterRatio = Contrast.ratioOfTones(lighterTone, bgTone);\n const darkerRatio = Contrast.ratioOfTones(darkerTone, bgTone);\n const preferLighter = DynamicColor.tonePrefersLightForeground(bgTone);\n\n if (preferLighter) {\n // This handles an edge case where the initial contrast ratio is high\n // (ex. 13.0), and the ratio passed to the function is that high\n // ratio, and both the lighter and darker ratio fails to pass that\n // ratio.\n //\n // This was observed with Tonal Spot's On Primary Container turning\n // black momentarily between high and max contrast in light mode. PC's\n // standard tone was T90, OPC's was T10, it was light mode, and the\n // contrast value was 0.6568521221032331.\n const negligibleDifference =\n Math.abs(lighterRatio - darkerRatio) < 0.1 &&\n lighterRatio < ratio &&\n darkerRatio < ratio;\n return lighterRatio >= ratio ||\n lighterRatio >= darkerRatio ||\n negligibleDifference\n ? lighterTone\n : darkerTone;\n } else {\n return darkerRatio >= ratio || darkerRatio >= lighterRatio\n ? darkerTone\n : lighterTone;\n }\n }\n\n /**\n * Returns whether [tone] prefers a light foreground.\n *\n * People prefer white foregrounds on ~T60-70. Observed over time, and also\n * by Andrew Somers during research for APCA.\n *\n * T60 used as to create the smallest discontinuity possible when skipping\n * down to T49 in order to ensure light foregrounds.\n * Since `tertiaryContainer` in dark monochrome scheme requires a tone of\n * 60, it should not be adjusted. Therefore, 60 is excluded here.\n */\n static tonePrefersLightForeground(tone: number): boolean {\n return Math.round(tone) < 60.0;\n }\n\n /**\n * Returns whether [tone] can reach a contrast ratio of 4.5 with a lighter\n * color.\n */\n static toneAllowsLightForeground(tone: number): boolean {\n return Math.round(tone) <= 49.0;\n }\n\n /**\n * Adjust a tone such that white has 4.5 contrast, if the tone is\n * reasonably close to supporting it.\n */\n static enableLightForeground(tone: number): number {\n if (\n DynamicColor.tonePrefersLightForeground(tone) &&\n !DynamicColor.toneAllowsLightForeground(tone)\n ) {\n return 49.0;\n }\n return tone;\n }\n\n /**\n * Return a ARGB integer (i.e. a hex code).\n *\n * @param scheme Defines the conditions of the user interface, for example,\n * whether or not it is dark mode or light mode, and what the desired\n * contrast level is.\n */\n getArgb(scheme: SchemeEntity): number {\n return this.getHct(scheme).toInt();\n }\n\n /**\n * Return a color, expressed in the HCT color space, that this\n * DynamicColor is under the conditions in scheme.\n *\n * @param scheme Defines the conditions of the user interface, for example,\n * whether or not it is dark mode or light mode, and what the desired\n * contrast level is.\n */\n getHct(scheme: SchemeEntity): Hct {\n const cachedAnswer = this.hctCache.get(scheme);\n if (cachedAnswer != null) {\n return cachedAnswer;\n }\n const tone = this.getTone(scheme);\n const answer = this.palette(scheme).getHct(tone);\n if (this.hctCache.size > 4) {\n this.hctCache.clear();\n }\n this.hctCache.set(scheme, answer);\n return answer;\n }\n\n /**\n * Return a tone, T in the HCT color space, that this DynamicColor is under\n * the conditions in scheme.\n *\n * @param scheme Defines the conditions of the user interface, for example,\n * whether or not it is dark mode or light mode, and what the desired\n * contrast level is.\n */\n getTone(scheme: SchemeEntity): number {\n const decreasingContrast = scheme.contrastLevel < 0;\n\n // Case 1: dual foreground, pair of colors with delta constraint.\n if (this.toneDeltaPair) {\n const toneDeltaPair = this.toneDeltaPair(scheme);\n const roleA = toneDeltaPair.roleA;\n const roleB = toneDeltaPair.roleB;\n const delta = toneDeltaPair.delta;\n const polarity = toneDeltaPair.polarity;\n const stayTogether = toneDeltaPair.stayTogether;\n\n const bg = this.background!(scheme);\n const bgTone = bg.getTone(scheme);\n\n const aIsNearer =\n polarity === 'nearer' ||\n (polarity === 'lighter' && !scheme.isDark) ||\n (polarity === 'darker' && scheme.isDark);\n const nearer = aIsNearer ? roleA : roleB;\n const farther = aIsNearer ? roleB : roleA;\n const amNearer = this.name === nearer.name;\n const expansionDir = scheme.isDark ? 1 : -1;\n\n // 1st round: solve to min, each\n const nContrast = nearer.contrastCurve!.get(scheme.contrastLevel);\n const fContrast = farther.contrastCurve!.get(scheme.contrastLevel);\n\n // If a color is good enough, it is not adjusted.\n // Initial and adjusted tones for `nearer`\n const nInitialTone = nearer.tone(scheme);\n let nTone =\n Contrast.ratioOfTones(bgTone, nInitialTone) >= nContrast\n ? nInitialTone\n : DynamicColor.foregroundTone(bgTone, nContrast);\n // Initial and adjusted tones for `farther`\n const fInitialTone = farther.tone(scheme);\n let fTone =\n Contrast.ratioOfTones(bgTone, fInitialTone) >= fContrast\n ? fInitialTone\n : DynamicColor.foregroundTone(bgTone, fContrast);\n\n if (decreasingContrast) {\n // If decreasing contrast, adjust color to the \"bare minimum\"\n // that satisfies contrast.\n nTone = DynamicColor.foregroundTone(bgTone, nContrast);\n fTone = DynamicColor.foregroundTone(bgTone, fContrast);\n }\n\n if ((fTone - nTone) * expansionDir >= delta) {\n // Good! Tones satisfy the constraint; no change needed.\n } else {\n // 2nd round: expand farther to match delta.\n fTone = clampDouble(0, 100, nTone + delta * expansionDir);\n if ((fTone - nTone) * expansionDir >= delta) {\n // Good! Tones now satisfy the constraint; no change needed.\n } else {\n // 3rd round: contract nearer to match delta.\n nTone = clampDouble(0, 100, fTone - delta * expansionDir);\n }\n }\n\n // Avoids the 50-59 awkward zone.\n if (50 <= nTone && nTone < 60) {\n // If `nearer` is in the awkward zone, move it away, together with\n // `farther`.\n if (expansionDir > 0) {\n nTone = 60;\n fTone = Math.max(fTone, nTone + delta * expansionDir);\n } else {\n nTone = 49;\n fTone = Math.min(fTone, nTone + delta * expansionDir);\n }\n } else if (50 <= fTone && fTone < 60) {\n if (stayTogether) {\n // Fixes both, to avoid two colors on opposite sides of the \"awkward\n // zone\".\n if (expansionDir > 0) {\n nTone = 60;\n fTone = Math.max(fTone, nTone + delta * expansionDir);\n } else {\n nTone = 49;\n fTone = Math.min(fTone, nTone + delta * expansionDir);\n }\n } else {\n // Not required to stay together; fixes just one.\n if (expansionDir > 0) {\n fTone = 60;\n } else {\n fTone = 49;\n }\n }\n }\n\n // Returns `nTone` if this color is `nearer`, otherwise `fTone`.\n return amNearer ? nTone : fTone;\n } else {\n // Case 2: No contrast pair; just solve for itself.\n let answer = this.tone(scheme);\n\n if (this.background == null) {\n return answer; // No adjustment for colors with no background.\n }\n\n const bgTone = this.background(scheme).getTone(scheme);\n\n const desiredRatio = this.contrastCurve!.get(scheme.contrastLevel);\n\n if (Contrast.ratioOfTones(bgTone, answer) >= desiredRatio) {\n // Don't \"improve\" what's good enough.\n } else {\n // Rough improvement.\n answer = DynamicColor.foregroundTone(bgTone, desiredRatio);\n }\n\n if (decreasingContrast) {\n answer = DynamicColor.foregroundTone(bgTone, desiredRatio);\n }\n\n if (this.isBackground && 50 <= answer && answer < 60) {\n // Must adjust\n if (Contrast.ratioOfTones(49, bgTone) >= desiredRatio) {\n answer = 49;\n } else {\n answer = 60;\n }\n }\n\n if (this.secondBackground) {\n // Case 3: Adjust for dual backgrounds.\n\n const [bg1, bg2] = [this.background, this.secondBackground];\n const [bgTone1, bgTone2] = [\n bg1(scheme).getTone(scheme),\n bg2(scheme).getTone(scheme),\n ];\n const [upper, lower] = [\n Math.max(bgTone1, bgTone2),\n Math.min(bgTone1, bgTone2),\n ];\n\n if (\n Contrast.ratioOfTones(upper, answer) >= desiredRatio &&\n Contrast.ratioOfTones(lower, answer) >= desiredRatio\n ) {\n return answer;\n }\n\n // The darkest light tone that satisfies the desired ratio,\n // or -1 if such ratio cannot be reached.\n const lightOption = Contrast.lighter(upper, desiredRatio);\n\n // The lightest dark tone that satisfies the desired ratio,\n // or -1 if such ratio cannot be reached.\n const darkOption = Contrast.darker(lower, desiredRatio);\n\n // Tones suitable for the foreground.\n const availables = [];\n if (lightOption !== -1) availables.push(lightOption);\n if (darkOption !== -1) availables.push(darkOption);\n\n const prefersLight =\n DynamicColor.tonePrefersLightForeground(bgTone1) ||\n DynamicColor.tonePrefersLightForeground(bgTone2);\n if (prefersLight) {\n return lightOption < 0 ? 100 : lightOption;\n }\n if (availables.length === 1) {\n return availables[0];\n }\n return darkOption < 0 ? 0 : darkOption;\n }\n\n return answer;\n }\n }\n}\n","/**\n * @license\n * Copyright 2023 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { DynamicColor } from './dynamic_color';\n\n/**\n * Describes the different in tone between colors.\n */\nexport type TonePolarity = 'darker' | 'lighter' | 'nearer' | 'farther';\n\n/**\n * Documents a constraint between two DynamicColors, in which their tones must\n * have a certain distance from each other.\n *\n * Prefer a DynamicColor with a background, this is for special cases when\n * designers want tonal distance, literally contrast, between two colors that\n * don't have a background / foreground relationship or a contrast guarantee.\n */\nexport class ToneDeltaPair {\n /**\n * Documents a constraint in tone distance between two DynamicColors.\n *\n * The polarity is an adjective that describes \"A\", compared to \"B\".\n *\n * For instance, ToneDeltaPair(A, B, 15, 'darker', stayTogether) states that\n * A's tone should be at least 15 darker than B's.\n *\n * 'nearer' and 'farther' describes closeness to the surface roles. For\n * instance, ToneDeltaPair(A, B, 10, 'nearer', stayTogether) states that A\n * should be 10 lighter than B in light mode, and 10 darker than B in dark\n * mode.\n *\n * @param roleA The first role in a pair.\n * @param roleB The second role in a pair.\n * @param delta Required difference between tones. Absolute value, negative\n * values have undefined behavior.\n * @param polarity The relative relation between tones of roleA and roleB,\n * as described above.\n * @param stayTogether Whether these two roles should stay on the same side of\n * the \"awkward zone\" (T50-59). This is necessary for certain cases where\n * one role has two backgrounds.\n */\n constructor(\n readonly roleA: DynamicColor,\n readonly roleB: DynamicColor,\n readonly delta: number,\n readonly polarity: TonePolarity,\n readonly stayTogether: boolean\n ) {}\n}\n","import { hexFromArgb, TonalPalette } from '@material/material-color-utilities';\nimport { SchemeEntity } from '../../theme/entities/scheme.entity';\nimport { DynamicColor } from '../../material-color-utilities/dynamic_color';\nimport { ContrastCurve } from '../../material-color-utilities';\nimport { SchemeService } from '../../theme/services/scheme.service';\nimport { ColorManagerService } from '../services/color-manager.service';\n\nexport interface ColorOptions {\n palette: (scheme: SchemeEntity) => TonalPalette;\n tone: (scheme: SchemeEntity) => number;\n isBackground?: boolean;\n background?: (scheme: SchemeEntity) => DynamicColor;\n secondBackground?: (scheme: SchemeEntity) => DynamicColor;\n contrastCurve?: ContrastCurve;\n toneDeltaPair?: (scheme: SchemeEntity) => {\n roleA: DynamicColor;\n readonly roleB: DynamicColor;\n readonly delta: number;\n readonly polarity: 'darker' | 'lighter' | 'nearer' | 'farther';\n readonly stayTogether: boolean;\n };\n}\n\nfunction argbToRgb(argb: number): { r: number; g: number; b: number } {\n return {\n r: (argb >> 16) & 0xff,\n g: (argb >> 8) & 0xff,\n b: argb & 0xff,\n };\n}\n\nexport class ColorEntity {\n private dynamicColor: DynamicColor | null = null;\n\n constructor(\n private option: ColorOptions & { name: string },\n private schemeService: SchemeService,\n private colorService: ColorManagerService\n ) {}\n\n update(args: Partial<ColorOptions & { name: string }>) {\n this.dynamicColor = null;\n this.option = { ...this.option, ...args };\n }\n\n getHex(): string {\n return hexFromArgb(this.getArgb());\n }\n\n getArgb() {\n return this.getDynamicColor().getArgb(this.schemeService.get());\n }\n\n getRgb() {\n return argbToRgb(this.getArgb());\n }\n\n getName(): string {\n return this.option.name.replace(/([A-Z])/g, '_$1').toLowerCase();\n }\n\n getDynamicColor(): DynamicColor {\n if (!this.dynamicColor) {\n this.dynamicColor = DynamicColor.fromPalette({\n ...this.option,\n name: this.getName(),\n });\n }\n return this.dynamicColor;\n }\n}\n","import { ContrastCurve, ToneDeltaPair } from '../../material-color-utilities';\nimport { DynamicColor } from '../../material-color-utilities/dynamic_color';\nimport { SchemeEntity } from '../../theme/entities/scheme.entity';\n\nimport { ColorEntity, ColorOptions } from '../entities/color.entity';\nimport { SchemeService } from '../../theme/services/scheme.service';\nimport { DynamicColorKey } from '../models/default-color.model';\nimport { ColorService } from './color.service';\n\nfunction capitalizeFirstLetter(string: string) {\n return string.charAt(0).toUpperCase() + string.slice(1);\n}\n\nexport const highestSurface = (\n s: SchemeEntity,\n colorService: ColorManagerService | ColorService\n): DynamicColor => {\n if (colorService instanceof ColorService) {\n return s.isDark\n ? colorService.getColor('surfaceBright').getDynamicColor()\n : colorService.getColor('surfaceDim').getDynamicColor();\n } else {\n return s.isDark\n ? colorService.get('surfaceBright').getDynamicColor()\n : colorService.get('surfaceDim').getDynamicColor();\n }\n};\n\nexport class ColorManagerService {\n private colorMap = new Map<string, ColorEntity>();\n private readonly schemeService: SchemeService;\n constructor({ schemeService }: { schemeService: SchemeService }) {\n this.schemeService = schemeService;\n }\n\n createOrUpdate(key: string, args: Partial<ColorOptions>): ColorEntity {\n let colorEntity = this.colorMap.get(key);\n if (!colorEntity) {\n const { palette, tone } = args;\n if (palette && tone) {\n colorEntity = new ColorEntity(\n { ...args, palette, tone, name: key },\n this.schemeService,\n this\n );\n this.colorMap.set(key, colorEntity);\n } else {\n throw new Error(`Palette ${key} does not exist`);\n }\n } else {\n colorEntity.update({ ...args, name: key });\n this.colorMap.set(key, colorEntity);\n }\n return colorEntity;\n }\n\n public remove(key: string) {\n return this.colorMap.delete(key);\n }\n\n public get(key: string): ColorEntity {\n const colorEntity = this.colorMap.get(key);\n if (colorEntity) {\n return colorEntity;\n } else {\n throw new Error(`Color ${key} does not exist`);\n }\n }\n\n public getAll(): ReadonlyMap<string, ColorEntity> {\n return this.colorMap;\n }\n\n addFromPalette(key: string): void {\n const colorKey = key as DynamicColorKey;\n const ColorKey = capitalizeFirstLetter(key);\n const onColorKey = ('on' + ColorKey) as DynamicColorKey;\n const colorKeyContainer = (colorKey + 'Container') as DynamicColorKey;\n const onColorKeyContainer = ('on' +\n ColorKey +\n 'Container') as DynamicColorKey;\n const inverseColorKey = ('inverse' + ColorKey) as DynamicColorKey;\n const colorKeyFixed = (colorKey + 'Fixed') as DynamicColorKey;\n const colorKeyFixedDim = (colorKey + 'FixedDim') as DynamicColorKey;\n const onColorKeyFixed = ('on' + ColorKey + 'Fixed') as DynamicColorKey;\n const onColorKeyFixedVariant = ('on' +\n ColorKey +\n 'FixedVariant') as DynamicColorKey;\n\n this.createOrUpdate(colorKey, {\n palette: (s) => s.getPalette(key),\n tone: (s) => {\n return s.isDark ? 80 : 40;\n },\n isBackground: true,\n background: (s) => highestSurface(s, this),\n contrastCurve: new ContrastCurve(3, 4.5, 7, 11),\n toneDeltaPair: (s) =>\n new ToneDeltaPair(\n this.get(colorKeyContainer).getDynamicColor(),\n this.get(colorKey).getDynamicColor(),\n 10,\n 'nearer',\n false\n ),\n });\n this.createOrUpdate(onColorKey, {\n palette: (s) => s.getPalette(key),\n tone: (s) => {\n return s.isDark ? 20 : 100;\n },\n background: (s) => this.get(colorKey).getDynamicColor(),\n contrastCurve: new ContrastCurve(4.5, 7, 11, 21),\n });\n this.createOrUpdate(colorKeyContainer, {\n palette: (s) => s.getPalette(key),\n tone: (s) => {\n return s.isDark ? 30 : 90;\n },\n isBackground: true,\n background: (s) => highestSurface(s, this),\n contrastCurve: new ContrastCurve(1, 1, 3, 7),\n toneDeltaPair: (s) =>\n new ToneDeltaPair(\n this.get(colorKeyContainer).getDynamicColor(),\n this.get(colorKey).getDynamicColor(),\n 10,\n 'nearer',\n false\n ),\n });\n this.createOrUpdate(onColorKeyContainer, {\n palette: (s) => s.getPalette(key),\n tone: (s) => {\n return s.isDark ? 90 : 10;\n },\n background: (s) => this.get(colorKeyContainer).getDynamicColor(),\n contrastCurve: new ContrastCurve(4.5, 7, 11, 21),\n });\n this.createOrUpdate(inverseColorKey, {\n palette: (s) => s.getPalette(key),\n tone: (s) => (s.isDark ? 40 : 80),\n background: (s) => this.get('inverseSurface').getDynamicColor(),\n contrastCurve: new ContrastCurve(3, 4.5, 7, 11),\n });\n this.createOrUpdate(colorKeyFixed, {\n palette: (s) => s.getPalette(key),\n tone: (s) => 90.0,\n isBackground: true,\n background: (s) => highestSurface(s, this),\n contrastCurve: new ContrastCurve(1, 1, 3, 7),\n toneDeltaPair: (s) =>\n new ToneDeltaPair(\n this.get(colorKeyFixed).getDynamicColor(),\n this.get(colorKeyFixedDim).getDynamicColor(),\n 10,\n 'lighter',\n true\n ),\n });\n this.createOrUpdate(colorKeyFixedDim, {\n palette: (s) => s.getPalette(key),\n tone: (s) => 80.0,\n isBackground: true,\n background: (s) => highestSurface(s, this),\n contrastCurve: new ContrastCurve(1, 1, 3, 7),\n toneDeltaPair: (s) =>\n new ToneDeltaPair(\n this.get(colorKeyFixed).getDynamicColor(),\n this.get(colorKeyFixedDim).getDynamicColor(),\n 10,\n 'lighter',\n true\n ),\n });\n this.createOrUpdate(onColorKeyFixed, {\n palette: (s) => s.getPalette(key),\n tone: (s) => 10.0,\n background: (s) => this.get(colorKeyFixedDim).getDynamicColor(),\n secondBackground: (s) => this.get(colorKeyFixed).getDynamicColor(),\n contrastCurve: new ContrastCurve(4.5, 7, 11, 21),\n });\n this.createOrUpdate(onColorKeyFixedVariant, {\n palette: (s) => s.getPalette(key),\n tone: (s) => 30.0,\n background: (s) => this.get(colorKeyFixedDim).getDynamicColor(),\n secondBackground: (s) => this.get(colorKeyFixed).getDynamicColor(),\n contrastCurve: new ContrastCurve(3, 4.5, 7, 11),\n });\n }\n}\n","import { ColorService } from './services/color.service';\nimport { ColorManagerService } from './services/color-manager.service';\nimport { asClass } from 'awilix';\nimport { Module } from '../app.container';\n\nexport const ColorModule: Module = {\n colorManagerService: asClass(ColorManagerService).singleton(),\n colorService: asClass(ColorService).singleton(),\n};\n","import { Hct, TonalPalette } from '@material/material-color-utilities';\n\nexport interface SchemeOptions {\n sourceColorArgb: number;\n contrastLevel: number;\n isDark: boolean;\n palettes: Map<string, TonalPalette>;\n}\n\nexport class SchemeEntity {\n constructor(private options: SchemeOptions) {}\n\n get contrastLevel() {\n if (!this.options) {\n throw new Error('Scheme options is not set');\n }\n return this.options.contrastLevel;\n }\n\n get isDark() {\n if (!this.options) {\n throw new Error('Scheme options is not set');\n }\n return this.options.isDark;\n }\n\n get sourceColorHct() {\n if (!this.options) {\n throw new Error('Scheme options is not set');\n }\n return Hct.fromInt(this.options.sourceColorArgb);\n }\n\n getPalette(key: string): TonalPalette {\n if (!this.options) {\n throw new Error('Scheme options is not set');\n }\n const palette = this.options.palettes.get(key);\n if (!palette) {\n throw new Error(`Palette ${key} not found`);\n }\n return palette;\n }\n}\n","import { SchemeEntity, SchemeOptions } from '../entities/scheme.entity';\nimport {\n argbFromHex,\n Hct,\n TonalPalette,\n} from '@material/material-color-utilities';\n\nexport type SchemeServiceOptions = Omit<\n SchemeOptions,\n 'palettes' | 'sourceColorArgb'\n> & {\n sourcesColorHex: Record<string, string> & { primary?: string };\n palettes: Record<\n string,\n {\n sourceColorkey?: string;\n tonalPalette: (sourceColorHct: Hct) => TonalPalette;\n }\n >;\n};\n\nexport class SchemeService {\n private schemeEntity?: SchemeEntity;\n private options?: SchemeServiceOptions;\n\n createOrUpdate(options: Partial<SchemeServiceOptions>) {\n this.options = {\n ...this.options,\n ...options,\n sourcesColorHex: {\n ...this.options?.sourcesColorHex,\n ...options.sourcesColorHex,\n },\n palettes: {\n ...this.options?.palettes,\n ...options.palettes,\n },\n } as SchemeServiceOptions;\n const palettes = new Map<string, TonalPalette>();\n\n if (!this.options.sourcesColorHex.primary) {\n throw new Error('Primary source color is not set');\n }\n\n const sourceColorArgb = argbFromHex(this.options.sourcesColorHex.primary);\n const sourceColorHct: Hct = Hct.fromInt(sourceColorArgb);\n\n if (!this.options.palettes) {\n return;\n }\n for (const [\n key,\n { sourceColorkey, tonalPalette: paletteFunction },\n ] of Object.entries(this.options.palettes)) {\n let palette: TonalPalette;\n if (!sourceColorkey) {\n palette = paletteFunction(sourceColorHct);\n } else {\n const sourceColorArgb = argbFromHex(\n this.options.sourcesColorHex[sourceColorkey]\n );\n const sourceColorHct: Hct = Hct.fromInt(sourceColorArgb);\n palette = paletteFunction(sourceColorHct);\n }\n palettes.set(key, palette);\n }\n this.schemeEntity = new SchemeEntity({\n ...this.options,\n palettes: palettes,\n sourceColorArgb: sourceColorArgb,\n });\n }\n\n get(): SchemeEntity {\n if (!this.schemeEntity) {\n throw new Error('Scheme is not created');\n }\n return this.schemeEntity;\n }\n}\n","import { DynamicColor } from '@material/material-color-utilities';\nimport { SchemeService, SchemeServiceOptions } from './scheme.service';\nimport { VariantService } from './variant.service';\nimport { VariantEntity } from '../entities/variant.entity';\n\ntype ThemeOptions = Omit<\n SchemeServiceOptions,\n 'palettes' | 'sourcesColorHex'\n> & { sourceColorHex: string };\n\nconst colorPaletteKeyColor = DynamicColor.fromPalette({\n name: 'primary_palette_key_color',\n palette: (s) => s.primaryPalette,\n tone: (s) => s.primaryPalette.keyColor.tone,\n});\n\nexport class ThemeService {\n private readonly schemeService: SchemeService;\n private readonly variantService: VariantService;\n constructor({\n schemeService,\n variantService,\n }: {\n schemeService: SchemeService;\n variantService: VariantService;\n }) {\n this.schemeService = schemeService;\n this.variantService = variantService;\n\n // this.addPalette({key: \"primary\", addDefaultColors: true})\n // this.addPalette({key: \"secondary\", addDefaultColors: true})\n // this.addPalette({key: \"tertiary\", addDefaultColors: true})\n // this.addPalette({key: \"error\", palette: TonalPalette.fromHueAndChroma(25.0, 84.0)})\n // this.addPalette({key: \"neutral\"})\n // this.addPalette({key: \"neutralVariant\"})\n }\n // addPalette({key, palette, addDefaultColors}: {key: string; palette: TonalPalette; addDefaultColors: boolean}) {\n // this.themeOptions.palettes.set(key, palette);\n // if (addDefaultColors){\n // this.colorService.addPalette(key)\n // }\n // }\n\n // create(args: ThemeOptions): SchemeService {\n // return new SchemeService(args, this.colorService)\n // }\n //\n // update(options: Partial<ThemeOptions>): SchemeService {\n // Object.assign(this.themeOptions, options);\n // return this.theme();\n // }\n\n create(options: ThemeOptions & { variant: VariantEntity }) {\n this.schemeService.createOrUpdate({\n ...options,\n sourcesColorHex: { primary: options.sourceColorHex },\n });\n this.variantService.set(options.variant);\n }\n\n update(options: Partial<ThemeOptions> & { variant?: VariantEntity }) {\n const themeOptions: Partial<SchemeServiceOptions> = { ...options };\n if (options.sourceColorHex)\n themeOptions.sourcesColorHex = { primary: options.sourceColorHex };\n this.schemeService.createOrUpdate(themeOptions);\n if (options.variant) this.variantService.set(options.variant);\n }\n addCustomPalette(key: string, colorHex: string) {\n this.variantService.addCustomPalette(key, colorHex);\n }\n // theme(): SchemeService {\n // return new SchemeService(this.themeOptions, this.colorService)\n // }\n}\n","import { SchemeService } from './scheme.service';\nimport { VariantEntity } from '../entities/variant.entity';\nimport { Hct, TonalPalette } from '@material/material-color-utilities';\n\nexport class VariantService {\n public customPalettes: Record<string, string> = {};\n private variantEntity?: VariantEntity;\n\n private readonly schemeService: SchemeService;\n constructor({ schemeService }: { schemeService: SchemeService }) {\n this.schemeService = schemeService;\n }\n\n addCustomPalette(key: string, colorHex: string) {\n this.customPalettes[key] = colorHex;\n this.update();\n }\n\n set(variantEntity: VariantEntity) {\n this.variantEntity = variantEntity;\n if (!variantEntity.palettes.error) {\n variantEntity.palettes.error = () =>\n TonalPalette.fromHueAndChroma(25.0, 84.0);\n }\n this.update();\n }\n private update() {\n if (!this.variantEntity) return;\n const palettes: Record<\n string,\n {\n sourceColorkey?: string;\n tonalPalette: (sourceColorHct: Hct) => TonalPalette;\n }\n > = {};\n Object.keys(this.variantEntity.palettes).forEach((key) => {\n palettes[key] = { tonalPalette: this.variantEntity!.palettes[key] };\n });\n if (this.variantEntity.customPalettes) {\n Object.keys(this.customPalettes).forEach((key) => {\n palettes[key] = {\n sourceColorkey: key,\n tonalPalette: this.variantEntity!.customPalettes!,\n };\n });\n }\n this.schemeService.createOrUpdate({\n sourcesColorHex: this.customPalettes,\n palettes: palettes,\n });\n }\n}\n","import { SchemeService, ThemeService, VariantService } from './services';\nimport { asClass } from 'awilix';\nimport { Module } from '../app.container';\n\nexport const ThemeModule: Module = {\n schemeService: asClass(SchemeService).singleton(),\n variantService: asClass(VariantService).singleton(),\n themeService: asClass(ThemeService).singleton(),\n};\n","import { ColorService } from './color';\nimport { ThemeService } from './theme';\nimport { PluginService } from './plugin/plugin.service';\n\nexport class AppService {\n public colorService: ColorService;\n public themeService: ThemeService;\n public pluginService: PluginService;\n\n constructor({\n colorService,\n themeService,\n pluginService,\n }: {\n colorService: ColorService;\n themeService: ThemeService;\n pluginService: PluginService;\n }) {\n this.pluginService = pluginService;\n this.colorService = colorService;\n this.themeService = themeService;\n }\n}\n","import { asClass } from 'awilix';\nimport { AppService } from './app.service';\nimport { Module } from './app.container';\n\nexport const AppModule: Module = {\n appService: asClass(AppService).singleton(),\n};\n","import { DislikeAnalyzer, Hct } from '@material/material-color-utilities';\nimport { ContrastCurve, ToneDeltaPair } from '../../material-color-utilities';\nimport { DynamicColor } from '../../material-color-utilities/dynamic_color';\nimport { highestSurface } from '../services/color-manager.service';\nimport { AddColorsOptions, ColorService } from '../services/color.service';\n\nexport type DynamicColorKey =\n | 'background'\n | 'onBackground'\n | 'surface'\n | 'surfaceDim'\n | 'surfaceBright'\n | 'surfaceContainerLowest'\n | 'surfaceContainerLow'\n | 'surfaceContainer'\n | 'surfaceContainerHigh'\n | 'surfaceContainerHighest'\n | 'onSurface'\n | 'surfaceVariant'\n | 'onSurfaceVariant'\n | 'inverseSurface'\n | 'inverseOnSurface'\n | 'outline'\n | 'outlineVariant'\n | 'shadow'\n | 'scrim'\n | 'surfaceTint'\n | 'primary'\n | 'onPrimary'\n | 'primaryContainer'\n | 'onPrimaryContainer'\n | 'inversePrimary'\n | 'secondary'\n | 'onSecondary'\n | 'secondaryContainer'\n | 'onSecondaryContainer'\n | 'tertiary'\n | 'onTertiary'\n | 'tertiaryContainer'\n | 'onTertiaryContainer'\n | 'error'\n | 'onError'\n | 'errorContainer'\n | 'onErrorContainer'\n | 'primaryFixed'\n | 'primaryFixedDim'\n | 'onPrimaryFixed'\n | 'onPrimaryFixedVariant'\n | 'secondaryFixed'\n | 'secondaryFixedDim'\n | 'onSecondaryFixed'\n | 'onSecondaryFixedVariant'\n | 'tertiaryFixed'\n | 'tertiaryFixedDim'\n | 'onTertiaryFixed'\n | 'onTertiaryFixedVariant';\n\nfunction findDesiredChromaByTone(\n hue: number,\n chroma: number,\n tone: number,\n byDecreasingTone: boolean\n): number {\n let answer = tone;\n\n let closestToChroma = Hct.from(hue, chroma, tone);\n if (closestToChroma.chroma < chroma) {\n let chromaPeak = closestToChroma.chroma;\n while (closestToChroma.chroma < chroma) {\n answer += byDecreasingTone ? -1.0 : 1.0;\n const potentialSolution = Hct.from(hue, chroma, answer);\n if (chromaPeak > potentialSolution.chroma) {\n break;\n }\n if (Math.abs(potentialSolution.chroma - chroma) < 0.4) {\n break;\n }\n\n const potentialDelta = Math.abs(potentialSolution.chroma - chroma);\n const currentDelta = Math.abs(closestToChroma.chroma - chroma);\n if (potentialDelta < currentDelta) {\n closestToChroma = potentialSolution;\n }\n chromaPeak = Math.max(chromaPeak, potentialSolution.chroma);\n }\n }\n\n return answer;\n}\n\nexport const defaultColors: AddColorsOptions = (\n colorService: ColorService\n) => ({\n fromPalettes: ['primary', 'secondary', 'tertiary'],\n colors: {\n background: {\n palette: (s) => s.getPalette('neutral'),\n tone: (s) => (s.isDark ? 6 : 98),\n isBackground: true,\n },\n onBackground: {\n palette: (s) => s.getPalette('neutral'),\n tone: (s) => (s.isDark ? 90 : 10),\n background: (s) => colorService.getColor('background').getDynamicColor(),\n contrastCurve: new ContrastCurve(3, 3, 4.5, 7),\n },\n surface: {\n palette: (s) => s.getPalette('neutral'),\n tone: (s) => (s.isDark ? 6 : 98),\n isBackground: true,\n },\n surfaceDim: {\n palette: (s) => s.getPalette('neutral'),\n tone: (s) => (s.isDark ? 6 : 87),\n isBackground: true,\n },\n surfaceBright: {\n palette: (s) => s.getPalette('neutral'),\n tone: (s) => (s.isDark ? 24 : 98),\n isBackground: true,\n },\n surfaceContainerLowest: {\n palette: (s) => s.getPalette('neutral'),\n tone: (s) => (s.isDark ? 4 : 100),\n isBackground: true,\n },\n surfaceContainerLow: {\n palette: (s) => s.getPalette('neutral'),\n tone: (s) => (s.isDark ? 10 : 96),\n isBackground: true,\n },\n surfaceContainer: {\n palette: (s) => s.getPalette('neutral'),\n tone: (s) => (s.isDark ? 12 : 94),\n isBackground: true,\n },\n surfaceContainerHigh: {\n palette: (s) => s.getPalette('neutral'),\n tone: (s) => (s.isDark ? 17 : 92),\n isBackground: true,\n },\n surfaceContainerHighest: {\n palette: (s) => s.getPalette('neutral'),\n tone: (s) => (s.isDark ? 22 : 90),\n isBackground: true,\n },\n onSurface: {\n palette: (s) => s.getPalette('neutral'),\n tone: (s) => (s.isDark ? 90 : 10),\n background: (s) => highestSurface(s, colorService),\n contrastCurve: new ContrastCurve(4.5, 7, 11, 21),\n },\n surfaceVariant: {\n palette: (s) => s.getPalette('neutralVariant'),\n tone: (s) => (s.isDark ? 30 : 90),\n isBackground: true,\n },\n onSurfaceVariant: {\n palette: (s) => s.getPalette('neutralVariant'),\n tone: (s) => (s.isDark ? 80 : 30),\n background: (s) => highestSurface(s, colorService),\n contrastCurve: new ContrastCurve(3, 4.5, 7, 11),\n },\n inverseSurface: {\n palette: (s) => s.getPalette('neutral'),\n tone: (s) => (s.isDark ? 90 : 20),\n },\n inverseOnSurface: {\n palette: (s) => s.getPalette('neutral'),\n tone: (s) => (s.isDark ? 20 : 95),\n background: (s) =>\n colorService.getColor('inverseSurface').getDynamicColor(),\n contrastCurve: new ContrastCurve(4.5, 7, 11, 21),\n },\n outline: {\n palette: (s) => s.getPalette('neutralVariant'),\n tone: (s) => (s.isDark ? 60 : 50),\n background: (s) => highestSurface(s, colorService),\n contrastCurve: new ContrastCurve(1.5, 3, 4.5, 7),\n },\n outlineVariant: {\n palette: (s) => s.getPalette('neutralVariant'),\n tone: (s) => (s.isDark ? 30 : 80),\n background: (s) => highestSurface(s, colorService),\n contrastCurve: new ContrastCurve(1, 1, 3, 7),\n },\n shadow: {\n palette: (s) => s.getPalette('neutral'),\n tone: (s) => 0,\n },\n scrim: {\n palette: (s) => s.getPalette('neutral'),\n tone: (s) => 0,\n },\n surfaceTint: {\n palette: (s) => s.getPalette('neutral'),\n tone: (s) => (s.isDark ? 80 : 40),\n isBackground: true,\n },\n secondaryContainer: {\n tone: (s) => {\n const initialTone = s.isDark ? 30 : 90;\n return findDesiredChromaByTone(\n s.getPalette('secondary').hue,\n s.getPalette('secondary').chroma,\n initialTone,\n !s.isDark\n );\n },\n },\n onSecondaryContainer: {\n tone: (s) => {\n return DynamicColor.foregroundTone(\n colorService.getColor('secondaryContainer').getDynamicColor().tone(s),\n 4.5\n );\n },\n },\n tertiaryContainer: {\n palette: (s) => s.getPalette('tertiary'),\n tone: (s) => {\n const proposedHct = s\n .getPalette('tertiary')\n .getHct(s.sourceColorHct.tone);\n return DislikeAnalyzer.fixIfDisliked(proposedHct).tone;\n },\n },\n onTertiaryContainer: {\n palette: (s) => s.getPalette('tertiary'),\n tone: (s) => {\n return DynamicColor.foregroundTone(\n colorService.getColor('tertiaryContainer').getDynamicColor().tone(s),\n 4.5\n );\n },\n },\n error: {\n palette: (s) => s.getPalette('error'),\n tone: (s) => (s.isDark ? 80 : 40),\n isBackground: true,\n background: (s) => highestSurface(s, colorService),\n contrastCurve: new ContrastCurve(3, 4.5, 7, 11),\n toneDeltaPair: (s) =>\n new ToneDeltaPair(\n colorService.getColor('errorContainer').getDynamicColor(),\n colorService.getColor('error').getDynamicColor(),\n 15,\n 'nearer',\n false\n ),\n },\n onError: {\n palette: (s) => s.getPalette('error'),\n tone: (s) => (s.isDark ? 20 : 100),\n background: (s) => colorService.getColor('error').getDynamicColor(),\n contrastCurve: new ContrastCurve(4.5, 7, 11, 21),\n },\n errorContainer: {\n palette: (s) => s.getPalette('error'),\n tone: (s) => (s.isDark ? 30 : 90),\n isBackground: true,\n background: (s) => highestSurface(s, colorService),\n contrastCurve: new ContrastCurve(1, 1, 3, 7),\n toneDeltaPair: (s) =>\n new ToneDeltaPair(\n colorService.getColor('errorContainer').getDynamicColor(),\n colorService.getColor('error').getDynamicColor(),\n 15,\n 'nearer',\n false\n ),\n },\n onErrorContainer: {\n palette: (s) => s.getPalette('error'),\n tone: (s) => (s.isDark ? 90 : 10),\n background: (s) =>\n colorService.getColor('errorContainer').getDynamicColor(),\n contrastCurve: new ContrastCurve(4.5, 7, 11, 21),\n },\n\n onTertiaryFixed: {\n palette: (s) => s.getPalette('tertiary'),\n tone: (s) => 10.0,\n background: (s) =>\n colorService.getColor('tertiaryFixedDim').getDynamicColor(),\n secondBackground: (s) =>\n colorService.getColor('tertiaryFixed').getDynamicColor(),\n contrastCurve: new ContrastCurve(4.5, 7, 11, 21),\n },\n onTertiaryFixedVariant: {\n palette: (s) => s.getPalette('tertiary'),\n tone: (s) => 30.0,\n background: (s) =>\n colorService.getColor('tertiaryFixedDim').getDynamicColor(),\n secondBackground: (s) =>\n colorService.getColor('tertiaryFixed').getDynamicColor(),\n contrastCurve: new ContrastCurve(3, 4.5, 7, 11),\n },\n },\n});\n","import {\n Hct,\n sanitizeDegreesDouble,\n TonalPalette,\n} from '@material/material-color-utilities';\n\nexport const getRotatedHue = (\n sourceColor: Hct,\n hues: number[],\n rotations: number[]\n): number => {\n const sourceHue = sourceColor.hue;\n if (hues.length !== rotations.length) {\n throw new Error(\n `mismatch between hue length ${hues.length} & rotations ${rotations.length}`\n );\n }\n if (rotations.length === 1) {\n return sanitizeDegreesDouble(sourceColor.hue + rotations[0]);\n }\n const size = hues.length;\n for (let i = 0; i <= size - 2; i++) {\n const thisHue = hues[i];\n const nextHue = hues[i + 1];\n if (thisHue < sourceHue && sourceHue < nextHue) {\n return sanitizeDegreesDouble(sourceHue + rotations[i]);\n }\n }\n // If this statement executes, something is wrong, there should have been a\n // rotation found using the arrays.\n return sourceHue;\n};\n\nexport class VariantEntity {\n constructor(\n public palettes: Record<string, (sourceColorHct: Hct) => TonalPalette> = {},\n public customPalettes?: (colorHct: Hct) => TonalPalette\n ) {}\n}\n","import {\n sanitizeDegreesDouble,\n TonalPalette,\n} from '@material/material-color-utilities';\nimport { getRotatedHue, VariantEntity } from '../entities/variant.entity';\n\nexport class VariantModel {\n static tonalSpot: VariantEntity = {\n palettes: {\n primary: (sourceColorHct) =>\n TonalPalette.fromHueAndChroma(sourceColorHct.hue, 36.0),\n secondary: (sourceColorHct) =>\n TonalPalette.fromHueAndChroma(sourceColorHct.hue, 16.0),\n tertiary: (sourceColorHct) =>\n TonalPalette.fromHueAndChroma(\n sanitizeDegreesDouble(sourceColorHct.hue + 60.0),\n 24.0\n ),\n neutral: (sourceColorHct) =>\n TonalPalette.fromHueAndChroma(sourceColorHct.hue, 6.0),\n neutralVariant: (sourceColorHct) =>\n TonalPalette.fromHueAndChroma(sourceColorHct.hue, 8.0),\n },\n customPalettes: (colorHct) =>\n TonalPalette.fromHueAndChroma(colorHct.hue, 16),\n };\n static vibrant: VariantEntity = {\n palettes: {\n primary: (sourceColorHct) =>\n TonalPalette.fromHueAndChroma(sourceColorHct.hue, 200.0),\n secondary: (sourceColorHct) =>\n TonalPalette.fromHueAndChroma(\n getRotatedHue(sourceColorHct, this.hues, this.secondaryRotations),\n 24.0\n ),\n tertiary: (sourceColorHct) =>\n TonalPalette.fromHueAndChroma(\n getRotatedHue(sourceColorHct, this.hues, this.tertiaryRotations),\n 32.0\n ),\n neutral: (sourceColorHct) =>\n TonalPalette.fromHueAndChroma(sourceColorHct.hue, 6.0),\n neutralVariant: (sourceColorHct) =>\n TonalPalette.fromHueAndChroma(sourceColorHct.hue, 8.0),\n },\n customPalettes: (colorHct) =>\n TonalPalette.fromHueAndChroma(\n getRotatedHue(colorHct, this.hues, this.secondaryRotations),\n 24.0\n ),\n };\n\n private static readonly hues = [\n 0.0, 41.0, 61.0, 101.0, 131.0, 181.0, 251.0, 301.0, 360.0,\n ];\n\n private static readonly secondaryRotations = [\n 18.0, 15.0, 10.0, 12.0, 15.0, 18.0, 15.0, 12.0, 12.0,\n ];\n private static readonly tertiaryRotations = [\n 35.0, 30.0, 20.0, 25.0, 30.0, 35.0, 30.0, 25.0, 25.0,\n ];\n}\n","import { ConfigInterface } from './config.interface';\n\nimport { resolve } from 'node:path';\nimport { defaultColors } from '../color';\nimport { VariantModel } from '../theme';\nimport { AppService } from '../app.service';\nimport { existsSync } from 'node:fs';\n\nexport function defineConfig(configObject: ConfigInterface): ConfigInterface {\n if (!configObject || typeof configObject !== 'object') {\n throw new Error('The configuration is missing or not an object');\n }\n if (!('sourceColor' in configObject)) {\n throw new Error('Invalid configuration');\n }\n return configObject as ConfigInterface;\n}\n\nexport class ConfigService {\n configPath = './theme.config';\n\n private appService: AppService;\n\n constructor({ appService }: { appService: AppService }) {\n this.appService = appService;\n }\n\n public loadConfig(config?: ConfigInterface): void {\n const { themeService, colorService, pluginService } = this.appService;\n const {\n sourceColor,\n contrastLevel = 0,\n isDark = false,\n variant = VariantModel.tonalSpot,\n palettes,\n colors,\n useDefaultColors = true,\n plugins,\n } = config ?? this.getConfig();\n themeService.create({\n contrastLevel: contrastLevel,\n isDark: isDark,\n sourceColorHex: sourceColor,\n variant: variant,\n });\n if (palettes) {\n Object.entries(palettes).forEach(([key, value]) =>\n themeService.addCustomPalette(key, value)\n );\n }\n if (useDefaultColors) {\n colorService.addColors(defaultColors);\n }\n if (colors) {\n colorService.addColors(colors);\n }\n if (plugins) {\n plugins.forEach((plugin) => {\n pluginService.addPlugin(plugin);\n });\n pluginService.loadPlugins(this.appService);\n }\n }\n\n private getConfig(): ConfigInterface {\n if (\n typeof process !== 'undefined' &&\n process.release &&\n process.release.name === 'node'\n ) {\n const base = resolve(this.configPath);\n const extensions = ['.js', '.ts', '.jms', '.jcs'];\n let configImport = null;\n\n for (const ext of extensions) {\n const path = base + ext;\n if (existsSync(path)) {\n configImport = require(path);\n break;\n }\n }\n\n if (!configImport) {\n throw new Error('Configuration file not found');\n }\n\n let config: unknown;\n if ('default' in configImport) {\n config = configImport.default;\n } else {\n config = configImport;\n }\n\n return config as ConfigInterface;\n } else {\n throw new Error(\n 'You must provide configuration object when using this library in a browser.'\n );\n }\n }\n}\n","import { asClass } from 'awilix';\nimport { Module } from '../app.container';\nimport { ConfigService } from './config.service';\n\nexport const ConfigModule: Module = {\n configService: asClass(ConfigService).singleton(),\n};\n","import { PluginAbstract } from './pluginAbstract';\nimport { AppService } from '../app.service';\n\nexport class PluginService {\n private plugins = new Map<string, PluginAbstract<any, any>>();\n\n public addPlugin(plugin: PluginAbstract<any, any>) {\n this.plugins.set(plugin.name, plugin);\n }\n\n public loadPlugins(appService: AppService) {\n const plugins = new Map(this.plugins);\n\n let size = 0;\n do {\n size = plugins.size;\n plugins.forEach((plugin, key) => {\n const deps = plugin.dependencies.filter(\n (dep) => !this.plugins.has(new dep().name)\n );\n if (deps.length === 0) {\n this.plugins.set(plugin.name, plugin.init(appService));\n plugins.delete(key);\n }\n });\n } while (plugins.size != 0 && plugins.size < size);\n\n if (plugins.size > 0)\n throw new Error(\n \"Some plugins couldn't be loaded due to missing dependencies: \" +\n Array.from(plugins.keys())\n );\n }\n\n public getPlugin<T extends PluginAbstract<any, any>>(\n plugin: new (...args: any) => T\n ): T {\n const pluginInstance = this.plugins.get(new plugin().name);\n if (!pluginInstance) throw new Error(`Plugin ${plugin.name} not found`);\n return pluginInstance as T;\n }\n}\n","import { asClass } from 'awilix';\nimport { Module } from '../app.container';\nimport { PluginService } from './plugin.service';\n\nexport const PluginModule: Module = {\n pluginService: asClass(PluginService).singleton(),\n};\n","import {\n AwilixContainer,\n BuildResolver,\n createContainer,\n DisposableResolver,\n InjectionMode,\n} from 'awilix';\nimport { ColorModule } from './color/color.module';\nimport { ThemeModule } from './theme/theme.module';\nimport { AppModule } from './app.module';\nimport { ConfigModule } from './config/config.module';\nimport { PluginModule } from './plugin/plugin.module';\n\nexport type Module = Record<\n string,\n BuildResolver<any> & DisposableResolver<any>\n>;\n\nexport function importContainer(\n container: AwilixContainer,\n services: Module[]\n) {\n services.forEach((service) => {\n Object.entries(service).forEach(([name, serviceClass]) => {\n container.register(name, serviceClass);\n });\n });\n return container;\n}\n\nconst AppContainer = createContainer({\n injectionMode: InjectionMode.PROXY,\n});\n\nimportContainer(AppContainer, [\n ConfigModule,\n AppModule,\n PluginModule,\n ColorModule,\n ThemeModule,\n]);\n\n// AppContainer.register(ColorModule.cradle);\n// AppContainer.register(ThemeModule.cradle);\n\nexport default AppContainer;\n","import AppContainer from './app.container';\nimport { AppService } from './app.service';\nimport { ConfigInterface, ConfigService } from './config';\n\nexport function bootstrap(): AppService {\n return AppContainer.resolve<AppService>('appService');\n}\n\nexport function bootstrapFromConfig(args?: {\n path?: string;\n config?: ConfigInterface;\n}): AppService {\n const configService = AppContainer.resolve<ConfigService>('configService');\n if (args?.path) configService.configPath = args.path;\n configService.loadConfig(args?.config);\n return AppContainer.resolve<AppService>('appService');\n}\n","import { AppService } from '../app.service';\n\nexport type PluginConstructor<Plugin extends PluginImplAbstract<any>> = new (\n ...args: any\n) => Plugin;\n\nexport abstract class PluginAbstract<\n Plugin extends PluginImplAbstract<Options>,\n Options extends object\n> {\n public abstract readonly dependencies: (new (...args: any) => PluginAbstract<\n any,\n any\n >)[];\n public abstract readonly name: string;\n public options: Options;\n public abstract readonly pluginClass: PluginConstructor<Plugin>;\n protected pluginInstance: Plugin | undefined;\n\n constructor(options: Options) {\n this.options = options;\n }\n\n public init(appService: AppService) {\n this.pluginInstance = new this.pluginClass(appService, this.options);\n this.pluginInstance.onInit();\n return this;\n }\n\n public getInstance(): Plugin {\n if (!this.pluginInstance) {\n throw new Error(`Plugin ${this.name} is not initialized`);\n }\n return this.pluginInstance;\n }\n}\n\nexport abstract class PluginImplAbstract<Options extends object> {\n constructor(protected appService: AppService, protected options: Options) {\n this.onInit();\n }\n\n abstract onInit(): void;\n}\n","import { PluginAbstract, PluginImplAbstract } from '../../plugin';\n\nexport enum FontFamily {\n Expressive = 'expressive',\n Neutral = 'neutral',\n}\nexport type FontStyle = {\n fontSize: number;\n lineHeight: number;\n fontWeight: number;\n letterSpacing?: number;\n fontFamily: FontFamily;\n};\nexport type FontRole = 'display' | 'headline' | 'title' | 'label' | 'body';\nexport type FontSize = 'large' | 'medium' | 'small';\ninterface FontPluginOptions {\n fontFamily?: {\n expressive?: string[];\n neutral?: string[];\n };\n fontStyles?: Partial<Record<FontRole, Record<FontSize, Partial<FontStyle>>>>;\n}\n\nexport class FontPlugin extends PluginAbstract<\n FontPluginImpl,\n FontPluginOptions\n> {\n dependencies = [];\n name = 'font';\n pluginClass = FontPluginImpl;\n}\n\nclass FontPluginImpl extends PluginImplAbstract<FontPluginOptions> {\n private _fontFamily: { expressive: string[]; neutral: string[] } | undefined;\n\n get fontFamily(): { expressive: string[]; neutral: string[] } {\n if (!this._fontFamily) throw new Error('Font family not initialized');\n return this._fontFamily;\n }\n\n set fontFamily(\n value: { expressive: string[]; neutral: string[] } | undefined\n ) {\n this._fontFamily = value;\n }\n\n private _fontStyles:\n | Record<FontRole, Record<FontSize, FontStyle>>\n | undefined;\n\n get fontStyles(): Record<FontRole, Record<FontSize, FontStyle>> {\n if (!this._fontStyles) throw new Error('Font styles not initialized');\n return this._fontStyles;\n }\n\n set fontStyles(\n value: Record<FontRole, Record<FontSize, FontStyle>> | undefined\n ) {\n this._fontStyles = value;\n }\n\n getFonts() {\n return {\n fontStyles: this.fontStyles,\n fontFamily: this.fontFamily,\n };\n }\n\n onInit(): void {\n this.fontFamily = {\n expressive: this.options?.fontFamily?.expressive ?? [\n 'Roboto',\n 'sans-serif',\n ],\n neutral: this.options?.fontFamily?.neutral ?? ['Roboto', 'sans-serif'],\n };\n this.fontStyles = {\n display: {\n large: {\n fontWeight: 400,\n fontSize: 3.5625,\n lineHeight: 4,\n letterSpacing: -0.015625,\n fontFamily: FontFamily.Expressive,\n },\n medium: {\n fontWeight: 400,\n fontSize: 2.8125,\n lineHeight: 3.25,\n fontFamily: FontFamily.Expressive,\n },\n small: {\n fontWeight: 400,\n fontSize: 2.25,\n lineHeight: 2.75,\n fontFamily: FontFamily.Expressive,\n },\n },\n headline: {\n large: {\n fontWeight: 400,\n fontSize: 2,\n lineHeight: 2.5,\n fontFamily: FontFamily.Expressive,\n },\n medium: {\n fontWeight: 400,\n fontSize: 1.75,\n lineHeight: 2.25,\n fontFamily: FontFamily.Expressive,\n },\n small: {\n fontWeight: 400,\n fontSize: 1.5,\n lineHeight: 2,\n fontFamily: FontFamily.Expressive,\n },\n },\n title: {\n large: {\n fontWeight: 400,\n fontSize: 1.375,\n lineHeight: 1.75,\n fontFamily: FontFamily.Neutral,\n },\n medium: {\n fontWeight: 500,\n fontSize: 1,\n lineHeight: 1.5,\n fontFamily: FontFamily.Neutral,\n letterSpacing: 0.009375,\n },\n small: {\n fontWeight: 500,\n fontSize: 0.875,\n lineHeight: 1.25,\n fontFamily: FontFamily.Neutral,\n letterSpacing: 0.00625,\n },\n },\n label: {\n large: {\n fontWeight: 500,\n fontSize: 0.875,\n lineHeight: 1.25,\n fontFamily: FontFamily.Neutral,\n letterSpacing: 0.00625,\n },\n medium: {\n fontWeight: 500,\n fontSize: 0.75,\n lineHeight: 1,\n fontFamily: FontFamily.Neutral,\n letterSpacing: 0.03125,\n },\n small: {\n fontWeight: 500,\n fontSize: 0.6875,\n lineHeight: 1,\n fontFamily: FontFamily.Neutral,\n letterSpacing: 0.03125,\n },\n },\n body: {\n large: {\n fontWeight: 400,\n fontSize: 1,\n lineHeight: 1.5625,\n fontFamily: FontFamily.Neutral,\n letterSpacing: 0.03125,\n },\n medium: {\n fontWeight: 400,\n fontSize: 0.875,\n lineHeight: 1.25,\n fontFamily: FontFamily.Neutral,\n letterSpacing: 0.015625,\n },\n small: {\n fontWeight: 400,\n fontSize: 0.75,\n lineHeight: 1,\n fontFamily: FontFamily.Neutral,\n letterSpacing: 0.025,\n },\n },\n };\n\n if (this.options && this.options.fontStyles)\n Object.entries(this.options.fontStyles).forEach(([key, fontParam]) => {\n const fontRole: FontRole = key as FontRole;\n Object.entries(fontParam).forEach(([size, fontStyle]) => {\n const fontSize: FontSize = size as FontSize;\n if (fontStyle) {\n this.fontStyles[fontRole][fontSize] = {\n ...this.fontStyles[fontRole][fontSize],\n ...fontStyle,\n };\n }\n });\n });\n }\n}\n","// from tailwindcss src/util/flattenColors\nimport plugin from 'tailwindcss/plugin';\nimport { PluginAPI } from 'tailwindcss/types/config';\n\ntype State = {\n statePrefix: string;\n disabledStyles: {\n textOpacity: number;\n backgroundOpacity: number;\n };\n transition: {\n duration: number;\n };\n};\n\ntype Components = Record<string, Record<string, {}>>;\n\nexport const state = (colorkeys: string[]) =>\n plugin((pluginArgs: PluginAPI) => {\n addAllNewComponents(\n pluginArgs,\n {\n statePrefix: 'state',\n disabledStyles: {\n textOpacity: 0.38,\n backgroundOpacity: 0.12,\n },\n transition: {\n duration: 150,\n },\n },\n colorkeys\n );\n }, {});\n\nconst addAllNewComponents = (\n { addComponents }: PluginAPI,\n { statePrefix, disabledStyles, transition }: State,\n colorKeys: string[]\n) => {\n const newComponents: Components = {};\n\n for (const isGroup of [false, true]) {\n const group = isGroup ? 'group-' : '';\n for (const colorName of colorKeys) {\n const className = `.${group}${statePrefix}-${colorName}`;\n newComponents[className] = {\n [`@apply ${group}hover:bg-${colorName}/[0.08]`]: {},\n [`@apply ${group}active:bg-${colorName}/[0.12]`]: {},\n [`@apply ${group}focus-visible:bg-${colorName}/[0.12]`]: {},\n };\n if (transition) {\n newComponents[className][`@apply transition-colors`] = {};\n newComponents[className][`@apply duration-${transition.duration}`] = {};\n }\n if (disabledStyles) {\n newComponents[className][\n `@apply ${group}disabled:text-on-surface/[${disabledStyles.textOpacity}]`\n ] = {};\n newComponents[className][\n `@apply ${group}disabled:bg-on-surface/[${disabledStyles.backgroundOpacity}]`\n ] = {};\n }\n }\n }\n for (const colorName of colorKeys) {\n for (const stateName of ['hover', 'active', 'focus', 'disabled']) {\n const className = `.${stateName}-${statePrefix}-${colorName}`;\n if (stateName === 'active' || stateName === 'focus') {\n newComponents[className] = {\n [`@apply bg-${colorName}/[0.12]`]: {},\n };\n } else if (stateName === 'hover') {\n newComponents[className] = {\n [`@apply bg-${colorName}/[0.08]`]: {},\n };\n } else if (stateName === 'disabled') {\n newComponents[className] = {\n [`@apply text-on-surface/[${disabledStyles.textOpacity}]`]: {},\n };\n newComponents[className] = {\n [`@apply bg-on-surface/[${disabledStyles.backgroundOpacity}]`]: {},\n };\n }\n }\n }\n addComponents(newComponents);\n};\n","import { AppService } from '../../../app.service';\n\ntype SubTheme = {\n name: string;\n selectors?: string[];\n mediaQuery?: '@media (prefers-color-scheme: dark)';\n extend: {\n colors: Record<string, string>;\n };\n};\n\nfunction createSubTheme({\n name,\n darkMode,\n isDarkTheme,\n colors,\n}: {\n name: string;\n isDarkTheme: boolean;\n darkMode: 'class' | 'media';\n colors: Record<string, string>;\n}): SubTheme {\n const theme: SubTheme = {\n name: isDarkTheme ? name + 'Dark' : name,\n selectors:\n isDarkTheme && darkMode === 'class'\n ? [\n '.dark-mode .theme-' + name,\n '.dark-mode.theme-' + name,\n '[data-theme=\"dark\"] .theme-' + name,\n '[data-theme=\"dark\"].theme-' + name,\n ]\n : [\n '.theme-' + name,\n `.theme-${name} .light-mode`,\n `.theme-${name} [data-theme=\"light\"]`,\n `.light-mode .theme-${name}`,\n `.light-mode.theme-${name}`,\n `[data-theme=\"light\"] .theme-${name}`,\n `[data-theme=\"light\"].theme-${name}`,\n ],\n mediaQuery:\n isDarkTheme && darkMode === 'media'\n ? '@media (prefers-color-scheme: dark)'\n : undefined,\n extend: {\n colors: colors,\n },\n };\n return theme;\n}\n\nexport const themer = (args: {\n colors: Record<\n string,\n {\n light: string;\n dark: string;\n }\n >;\n darkMode: 'class' | 'media';\n subThemes?: Record<string, string>;\n appService: AppService;\n}) => {\n const { themeService, colorService } = args.appService;\n const options: {\n defaultTheme: {\n extend: {\n colors: Record<string, string>;\n };\n };\n themes: [\n {\n name: string;\n selectors?: ['.dark-mode', '[data-theme=\"dark\"]'];\n mediaQuery?: '@media (prefers-color-scheme: dark)';\n extend: {\n colors: Record<string, string>;\n };\n },\n ...SubTheme[]\n ];\n } = {\n defaultTheme: {\n extend: {\n colors: {},\n },\n },\n themes: [\n {\n name: 'darkTheme',\n extend: {\n colors: {},\n },\n },\n ],\n };\n\n Object.entries(args.colors).forEach(([key, value]) => {\n options.defaultTheme.extend.colors[key] = value.light;\n options.themes[0].extend.colors[key] = value.dark;\n });\n options.themes[0].selectors =\n args.darkMode === 'class'\n ? ['.dark-mode', '[data-theme=\"dark\"]']\n : undefined;\n options.themes[0].mediaQuery =\n args.darkMode === 'media'\n ? '@media (prefers-color-scheme: dark)'\n : undefined;\n\n if (args.subThemes) {\n Object.entries(args.subThemes).forEach(([key, value]) => {\n themeService.update({ sourceColorHex: value });\n for (const isDarkTheme of [true, false]) {\n const colors: Record<string, string> = {};\n themeService.update({ isDark: isDarkTheme });\n for (const [key, value] of colorService.getColors().entries()) {\n const newKey = key\n .replace(/([a-z0-9]|(?=[A-Z]))([A-Z])/g, '$1-$2')\n .toLowerCase();\n colors[newKey] = value.getHex();\n }\n options.themes.push(\n createSubTheme({\n name: key,\n isDarkTheme: isDarkTheme,\n darkMode: args.darkMode,\n colors: colors,\n })\n );\n }\n });\n }\n\n return require('tailwindcss-themer')(options);\n};\n","import plugin from 'tailwindcss/plugin';\nimport { CSSRuleObject, PluginAPI } from 'tailwindcss/types/config';\nimport { FontRole, FontSize, FontStyle } from '../../font/font.plugin';\n\nexport const font = (\n fontStyles: Record<FontRole, Record<FontSize, FontStyle>>,\n responsiveBreakPoints: Record<string, number>\n) => {\n const createUtilities = ({\n theme,\n }: Pick<PluginAPI, 'theme'>): CSSRuleObject => {\n const pixelUnit = 'rem';\n const newUtilities: any = {};\n\n const baseTextStyle = (sizeValue: FontStyle) => ({\n fontSize: sizeValue.fontSize + pixelUnit,\n fontWeight: sizeValue.fontWeight as unknown as CSSRuleObject,\n lineHeight: sizeValue.lineHeight + pixelUnit,\n letterSpacing: sizeValue.letterSpacing\n ? sizeValue.letterSpacing + pixelUnit\n : null,\n fontFamily: theme('fontFamily.' + sizeValue.fontFamily),\n });\n\n const responsiveTextStyle = (\n sizeValue: FontStyle,\n breakPointName: string,\n breakPointRatio: number\n ) => ({\n [`@media (min-width: ${theme('screens.' + breakPointName, {})})`]: {\n fontSize: sizeValue.fontSize * breakPointRatio + pixelUnit,\n lineHeight: sizeValue.lineHeight * breakPointRatio + pixelUnit,\n },\n });\n\n for (const [roleName, roleValue] of Object.entries(fontStyles)) {\n for (const [sizeName, sizeValue] of Object.entries(roleValue)) {\n newUtilities['.text-' + roleName + '-' + sizeName] = {\n ...baseTextStyle(sizeValue),\n ...Object.entries(responsiveBreakPoints).reduce(\n (acc, [breakPointName, breakPointRatio]) => {\n acc = {\n ...acc,\n ...responsiveTextStyle(\n sizeValue,\n breakPointName,\n breakPointRatio\n ),\n };\n return acc;\n },\n {}\n ),\n };\n }\n }\n\n return newUtilities as CSSRuleObject;\n };\n return plugin(\n ({\n addUtilities,\n theme,\n }: Pick<PluginAPI, 'theme'> & Pick<PluginAPI, 'addUtilities'>) => {\n const newUtilities = createUtilities({ theme });\n addUtilities(newUtilities);\n }\n );\n};\n","import { PluginAbstract, PluginImplAbstract } from '../../plugin';\nimport { Theme } from './main';\nimport { state, themer } from './plugins-tailwind';\n\nimport { font } from './plugins-tailwind/font';\nimport { FontPlugin } from '../font';\n\ninterface TailwindPluginOptions {\n darkMode?: 'class' | 'media';\n responsiveBreakPoints?: Record<string, number>;\n subThemes?: Record<string, string>;\n}\n\nexport class TailwindPlugin extends PluginAbstract<\n TailwindImplPlugin,\n TailwindPluginOptions\n> {\n public dependencies = [FontPlugin];\n public name = 'tailwind';\n pluginClass = TailwindImplPlugin;\n}\n\nclass TailwindImplPlugin extends PluginImplAbstract<TailwindPluginOptions> {\n onInit() {\n this.options.darkMode ??= 'class';\n this.options.responsiveBreakPoints ??= {\n lg: 1.125,\n };\n }\n\n getTheme(): Theme {\n const colors: Record<\n string,\n {\n light: string;\n dark: string;\n }\n > = {};\n\n for (const isDark of [false, true]) {\n this.appService.themeService.update({ isDark: isDark });\n for (const [key, value] of this.appService.colorService\n .getColors()\n .entries()) {\n const newKey = key\n .replace(/([a-z0-9]|(?=[A-Z]))([A-Z])/g, '$1-$2')\n .toLowerCase();\n colors[newKey] ??= { light: '', dark: '' };\n colors[newKey][isDark ? 'dark' : 'light'] = value.getHex();\n }\n }\n\n const { fontStyles, fontFamily } = this.appService.pluginService\n .getPlugin(FontPlugin)\n .getInstance()\n .getFonts();\n return {\n colors: {},\n fontFamily: fontFamily,\n plugins: [\n state(Object.keys(colors)),\n font(fontStyles, this.options.responsiveBreakPoints!),\n themer({\n colors,\n darkMode: this.options.darkMode!,\n subThemes: this.options.subThemes,\n appService: this.appService,\n }),\n ],\n };\n }\n}\n","import { PluginsConfig } from 'tailwindcss/types/config';\nimport { bootstrapFromConfig } from '../../main';\nimport { AppService } from '../../app.service';\nimport { TailwindPlugin } from './tailwind.plugin';\n\nexport type Theme = {\n colors: Record<string, string>;\n fontFamily: { expressive: string[]; neutral: string[] };\n plugins: Partial<PluginsConfig>;\n};\n\nexport const createTheme = (): Theme & { appService: AppService } => {\n const app = bootstrapFromConfig();\n const plugin = app.pluginService.getPlugin(TailwindPlugin).getInstance();\n return { ...plugin.getTheme(), appService: app };\n};\n"],"names":["ColorService","_ref","colorManagerService","_proto","prototype","getColors","getAll","addColor","key","color","createOrUpdate","addColors","args","_this","Array","isArray","forEach","fromPalettes","map","paletteKey","addFromPalette","colors","Object","keys","getColor","get","removeColor","remove","updateColor","newColor","ContrastCurve","low","normal","medium","high","contrastLevel","lerp","DynamicColor","name","palette","tone","isBackground","background","secondBackground","contrastCurve","toneDeltaPair","hctCache","Map","Error","fromPalette","_args$name","_args$isBackground","foregroundTone","bgTone","ratio","lighterTone","Contrast","lighterUnsafe","darkerTone","darkerUnsafe","lighterRatio","ratioOfTones","darkerRatio","preferLighter","tonePrefersLightForeground","negligibleDifference","Math","abs","round","toneAllowsLightForeground","enableLightForeground","getArgb","scheme","getHct","toInt","cachedAnswer","getTone","answer","size","clear","set","decreasingContrast","roleA","roleB","delta","polarity","stayTogether","bg","aIsNearer","isDark","nearer","farther","amNearer","expansionDir","nContrast","fContrast","nInitialTone","nTone","fInitialTone","fTone","clampDouble","max","min","desiredRatio","bg1","bg2","_ref2","bgTone1","bgTone2","_ref3","upper","lower","lightOption","lighter","darkOption","darker","availables","push","prefersLight","length","ToneDeltaPair","argbToRgb","argb","r","g","b","ColorEntity","option","schemeService","colorService","dynamicColor","update","_extends","getHex","hexFromArgb","getDynamicColor","getRgb","getName","replace","toLowerCase","capitalizeFirstLetter","string","charAt","toUpperCase","slice","highestSurface","s","ColorManagerService","colorMap","colorEntity","colorKey","ColorKey","onColorKey","colorKeyContainer","onColorKeyContainer","inverseColorKey","colorKeyFixed","colorKeyFixedDim","onColorKeyFixed","onColorKeyFixedVariant","getPalette","ColorModule","asClass","singleton","SchemeEntity","options","palettes","_createClass","Hct","fromInt","sourceColorArgb","SchemeService","schemeEntity","_this$options","_this$options2","sourcesColorHex","primary","argbFromHex","sourceColorHct","_i","_Object$entries","entries","_Object$entries$_i","_Object$entries$_i$","sourceColorkey","paletteFunction","tonalPalette","ThemeService","variantService","create","sourceColorHex","variant","themeOptions","addCustomPalette","colorHex","VariantService","customPalettes","variantEntity","error","TonalPalette","fromHueAndChroma","ThemeModule","themeService","AppService","pluginService","AppModule","appService","findDesiredChromaByTone","hue","chroma","byDecreasingTone","closestToChroma","from","chromaPeak","potentialSolution","potentialDelta","currentDelta","defaultColors","onBackground","surface","surfaceDim","surfaceBright","surfaceContainerLowest","surfaceContainerLow","surfaceContainer","surfaceContainerHigh","surfaceContainerHighest","onSurface","surfaceVariant","onSurfaceVariant","inverseSurface","inverseOnSurface","outline","outlineVariant","shadow","scrim","surfaceTint","secondaryContainer","initialTone","onSecondaryContainer","tertiaryContainer","proposedHct","DislikeAnalyzer","fixIfDisliked","onTertiaryContainer","onError","errorContainer","onErrorContainer","onTertiaryFixed","onTertiaryFixedVariant","getRotatedHue","sourceColor","hues","rotations","sourceHue","sanitizeDegreesDouble","i","thisHue","nextHue","VariantEntity","VariantModel","tonalSpot","secondary","tertiary","neutral","neutralVariant","colorHct","vibrant","_VariantModel","secondaryRotations","tertiaryRotations","defineConfig","configObject","ConfigService","configPath","loadConfig","config","_this$appService","getConfig","_ref2$contrastLevel","_ref2$isDark","_ref2$variant","_ref2$useDefaultColor","useDefaultColors","plugins","value","plugin","addPlugin","loadPlugins","process","release","base","resolve","extensions","configImport","_extensions","ext","path","existsSync","require","ConfigModule","configService","PluginService","deps","dependencies","filter","dep","has","init","getPlugin","pluginInstance","PluginModule","importContainer","container","services","service","serviceClass","register","AppContainer","createContainer","injectionMode","InjectionMode","PROXY","bootstrap","bootstrapFromConfig","PluginAbstract","pluginClass","onInit","getInstance","PluginImplAbstract","FontFamily","FontPlugin","_PluginAbstract","_len","arguments","_key","call","apply","concat","FontPluginImpl","_inheritsLoose","_PluginImplAbstract","_this2","_len2","_key2","_fontFamily","_fontStyles","getFonts","fontStyles","fontFamily","_this$options$fontFam","_this$options$fontFam2","_this3","expressive","display","large","fontWeight","fontSize","lineHeight","letterSpacing","Expressive","small","headline","title","Neutral","label","body","fontParam","fontRole","fontStyle","state","colorkeys","pluginArgs","addAllNewComponents","statePrefix","disabledStyles","textOpacity","backgroundOpacity","transition","duration","colorKeys","addComponents","newComponents","_arr","isGroup","group","_iterator","_createForOfIteratorHelperLoose","_step","done","_newComponents$classN","colorName","className","_iterator2","_step2","_i2","_arr2","stateName","_newComponents$_class","_newComponents$_class2","_newComponents$_class3","_newComponents$_class4","createSubTheme","darkMode","isDarkTheme","theme","selectors","mediaQuery","undefined","extend","themer","_args$appService","defaultTheme","themes","light","dark","subThemes","_step$value","newKey","font","responsiveBreakPoints","createUtilities","pixelUnit","newUtilities","baseTextStyle","sizeValue","responsiveTextStyle","breakPointName","breakPointRatio","roleName","roleValue","_loop","_Object$entries2$_i","_Object$entries2","sizeName","reduce","acc","_ref4","addUtilities","TailwindPlugin","TailwindImplPlugin","_this$options$darkMod","_this$options2$respon","lg","getTheme","_colors$newKey","_this$appService$plug","createTheme","app"],"mappings":"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"}