UNPKG

@angular-package/spectre.css

Version:

Modified Spectre.css - a lightweight, responsive, and modern CSS framework originally designed by Yan Zhu

1 lines 30.1 kB
{"version":3,"file":"angular-package-spectre.css.mjs","sources":["../../../packages/spectre.css/src/helper/name/src/affix.class.ts","../../../packages/spectre.css/src/helper/name/src/prefix.class.ts","../../../packages/spectre.css/src/helper/name/src/suffix.class.ts","../../../packages/spectre.css/src/helper/name/src/name.class.ts","../../../packages/spectre.css/src/helper/color/src/color.class.ts","../../../packages/spectre.css/src/helper/color/src/css-property-color.class.ts","../../../packages/spectre.css/src/public-api.ts"],"sourcesContent":["/**\n *\n */\nexport abstract class Affix<Value extends string | undefined> extends String {\n //#region instance properties.\n //#region instance public properties.\n /**\n * Gets the primitive value of an instance.\n */\n public get get(): Value {\n return this.valueOf() as Value;\n }\n\n public get value(): Value {\n return super.valueOf() as Value;\n }\n //#endregion instance public properties.\n\n //#region instance private properties.\n /**\n * The pattern of a `RegExp` type for the affix.\n */\n #pattern: RegExp | undefined;\n\n //#endregion instance private properties.\n //#endregion instance properties.\n\n //#region static private methods.\n /**\n *\n * @param affix\n * @param pattern\n * @returns\n */\n static #defineAffix<Min extends number, Max extends number>(\n affix: string | undefined,\n pattern: RegExp\n ): string {\n return typeof affix === 'string' ? affix.replace(pattern || '', '') : '';\n }\n //#endregion static private methods.\n\n //#region constructor.\n /**\n * Creates an instance and initially sets the affix `length` and `pattern`.\n * @angularpackage\n */\n constructor(affix: string | undefined, pattern = /[^a-zA-Z0-9$_]/g) {\n super(Affix.#defineAffix(affix, pattern));\n this.#pattern = pattern;\n }\n //#endregion constructor.\n\n //#region instance methods.\n //#region instance public methods.\n /**\n * Returns `pattern` of the actual settings for the affix, which by default is set to `/[^a-zA-Z0-9$_]/g`.\n * @returns The return value is a privately stored regular expression of a `RegExp` type.\n * @angularpackage\n */\n public getPattern(): RegExp | undefined {\n return this.#pattern;\n }\n //#endregion instance public methods.\n //#endregion instance methods.\n}\n","// Class.\nimport { Affix } from './affix.class';\n\n/**\n *\n */\nexport class Prefix<Value extends string | undefined> extends Affix<Value> {}\n","// Class.\nimport { Affix } from './affix.class';\n\n/**\n *\n */\nexport class Suffix<Value extends string | undefined> extends Affix<Value> {}\n","// Class.\nimport { Prefix } from './prefix.class';\nimport { Suffix } from './suffix.class';\n\n// Type.\nimport { AffixedName } from '../type/affixed-name.type';\nimport { PrefixedName } from '../type/prefixed-name.type';\nimport { SuffixedName } from '../type/suffixed-name.type';\n\n/**\n *\n */\nexport class Name<\n AvailableNames extends string = string,\n N extends AvailableNames = AvailableNames,\n PrefixValue extends string | undefined = undefined,\n SuffixValue extends string | undefined = undefined\n> extends String {\n /**\n *\n */\n public get availableNames(): AvailableNames[] | undefined {\n return this.#availableNames;\n }\n\n /**\n *\n */\n public get name(): N {\n return this.#name;\n }\n\n /**\n *\n */\n public get prefix(): Prefix<PrefixValue> | undefined {\n return this.#prefix;\n }\n\n /**\n *\n */\n public get suffix(): Suffix<SuffixValue> | undefined {\n return this.#suffix;\n }\n\n /**\n *\n */\n public get value(): AffixedName<PrefixValue, N, SuffixValue> {\n return this.valueOf() as any;\n }\n\n /**\n *\n */\n public get withPrefix(): PrefixedName<PrefixValue, N> {\n return [this.#prefix?.value, this.name]\n .filter((v) => typeof v === 'string')\n .join('-') as any;\n }\n\n /**\n *\n */\n public get withSuffix(): SuffixedName<N, SuffixValue> {\n return [this.name, this.#suffix?.value]\n .filter((v) => typeof v === 'string')\n .join('-') as any;\n }\n\n /**\n *\n */\n #availableNames?: AvailableNames[];\n\n /**\n *\n */\n #name: N;\n\n /**\n *\n */\n #prefix?: Prefix<PrefixValue>;\n\n /**\n *\n */\n #suffix?: Suffix<SuffixValue>;\n\n /**\n *\n * @param strings\n * @param values\n * @returns\n * @angularpackage\n */\n protected static template<\n AvailableNames extends string | undefined,\n PrefixValue extends string | undefined,\n SuffixValue extends string | undefined,\n N extends string\n >(\n strings: TemplateStringsArray,\n ...values: [AvailableNames[] | undefined, PrefixValue, N, SuffixValue]\n ): string {\n let availableNames: AvailableNames[] | undefined,\n prefix: PrefixValue,\n name: N,\n suffix: SuffixValue;\n [availableNames, prefix, name, suffix] = values;\n const ingredients = [prefix, name, suffix];\n return availableNames\n ? availableNames.indexOf(name as any) > -1\n ? ingredients.filter((v) => typeof v === 'string').join('-')\n : ''\n : ingredients.filter((v) => typeof v === 'string').join('-');\n }\n\n /**\n *\n * @param name\n * @param prefix\n * @param availableNames\n * @angularpackage\n */\n constructor(\n name: N,\n prefix?: PrefixValue,\n suffix?: SuffixValue,\n availableNames?: AvailableNames[]\n ) {\n super(Name.template`${availableNames}${prefix}${name}${suffix}`);\n this.#availableNames = availableNames;\n this.#name = name;\n this.#prefix = new Prefix(prefix);\n this.#suffix = new Suffix(suffix);\n }\n\n /**\n *\n */\n public toNgClass(active = true): { [index: string]: boolean } {\n return { [this.value]: active };\n }\n\n /**\n *\n * @returns\n * @angularpackage\n */\n public valueOf(): AffixedName<PrefixValue, N, SuffixValue> {\n return super.valueOf() as any;\n }\n}\n","// Class.\nimport { Name } from '../../name';\n\n// Type.\nimport { Colors } from '../type/colors.type';\nimport { HSL } from '../type/hsl.type';\n\n/**\n *\n */\nexport class Color<\n Prefix extends string | undefined,\n Suffix extends string | undefined,\n AvailableColor extends string = Colors,\n C extends AvailableColor = AvailableColor\n> extends Name<AvailableColor, C, Prefix, Suffix> {\n /**\n * The method `colorToHex` converts a decimal value to hexadecimal.\n * @param color The color in decimal of the number type.\n * @returns The return value is a string hexadecimal color.\n * @angularpackage\n */\n public static colorToHex(color: number): string {\n const hexadecimal = Math.round(color).toString(16);\n return hexadecimal.length === 1 ? '0' + hexadecimal : hexadecimal;\n }\n\n /**\n *\n * @param hex\n * @returns\n * @angularpackage\n */\n public static hexToRgb(\n hex: string\n ): { red: number; green: number; blue: number } | undefined {\n const getHex = hex.replace('#', '').match(/.{1,2}/g);\n if (getHex !== null) {\n return {\n red: parseInt(getHex[0], 16),\n green: parseInt(getHex[1], 16),\n blue: parseInt(getHex[2], 16),\n };\n }\n return;\n }\n\n public static hexToHsl(hex: string): HSL | undefined {\n const rgb = Color.hexToRgb(hex);\n return typeof rgb === 'object'\n ? this.rgbToHsl(rgb.red, rgb.green, rgb.blue)\n : undefined;\n }\n\n /**\n *\n * @param hue\n * @param saturation\n * @param lightness\n * @returns\n * @angularpackage\n */\n public static hslToRgb(\n hue: number,\n saturation: number,\n lightness: number\n ): { red: number; green: number; blue: number } {\n const HSLToRGB = (h: number, s: number, l: number) => {\n s /= 100;\n l /= 100;\n const k = (n: any) => (n + h / 30) % 12;\n const a = s * Math.min(l, 1 - l);\n const f = (n: any) =>\n l - a * Math.max(-1, Math.min(k(n) - 3, Math.min(9 - k(n), 1)));\n return {\n red: 255 * f(0),\n green: 255 * f(8),\n blue: 255 * f(4),\n };\n };\n return HSLToRGB(hue, saturation, lightness);\n }\n\n /**\n *\n * @param red\n * @param green\n * @param blue\n * @returns\n * @angularpackage\n */\n public static rgbToHex(red: number, green: number, blue: number): string {\n return (\n '#' +\n this.colorToHex(red) +\n this.colorToHex(green) +\n this.colorToHex(blue)\n );\n }\n\n /**\n *\n * @param red\n * @param green\n * @param blue\n * @returns\n * @angularpackage\n */\n public static rgbToHsl(red: number, green: number, blue: number): HSL {\n (red /= 255), (green /= 255), (blue /= 255);\n const max = Math.max(red, green, blue),\n min = Math.min(red, green, blue);\n let hue = 0,\n saturation,\n lightness = (max + min) / 2;\n\n if (max === min) {\n hue = saturation = 0; // achromatic\n } else {\n const d = max - min;\n saturation = lightness > 0.5 ? d / (2 - max - min) : d / (max + min);\n switch (max) {\n case red:\n hue = (green - blue) / d + (green < blue ? 6 : 0);\n break;\n case green:\n hue = (blue - red) / d + 2;\n break;\n case blue:\n hue = (red - green) / d + 4;\n break;\n }\n hue && (hue /= 6);\n }\n hue && (hue *= 360);\n saturation *= 100;\n lightness *= 100;\n return {\n hue,\n saturation,\n lightness,\n };\n }\n\n /**\n *\n * @param color\n * @param prefix\n * @param suffix\n * @param availableColor\n * @angularpackage\n */\n constructor(\n color: C,\n prefix?: Prefix,\n suffix?: Suffix,\n availableColor: AvailableColor[] = [\n 'accent',\n 'basic',\n 'dark',\n 'default',\n 'disabled',\n 'error',\n 'gray',\n 'gray-dark',\n 'gray-light',\n 'info',\n 'light',\n 'primary',\n 'secondary',\n 'success',\n 'warning',\n ] as AvailableColor[]\n ) {\n super(color, prefix, suffix, availableColor);\n }\n}\n","// Class.\nimport { Color } from './color.class';\n\n// Type.\nimport { AffixedName } from '../../name';\nimport { Colors } from '../type/colors.type';\nimport { HSL } from '../type/hsl.type';\nimport { Shade } from '../type/shade.type';\n\n/**\n *\n */\nexport class CssPropertyColor<\n Prefix extends string | undefined,\n AvailableColor extends string = Colors,\n C extends AvailableColor = AvailableColor\n> extends Color<Prefix, 'color', AvailableColor, C> {\n public static rootStyle = (document.querySelector(':root') as HTMLElement)\n .style;\n\n public get hue(): number {\n return CssPropertyColor.getHueOfVar(this.valueOf());\n }\n\n public get hex(): string {\n return CssPropertyColor.getHexOfVar(this.valueOf());\n }\n\n public get hsl(): HSL {\n return {\n hue: this.hue,\n lightness: this.lightness,\n saturation: this.saturation,\n };\n }\n\n public get lightness(): number {\n return CssPropertyColor.getLightnessOfVar(this.valueOf());\n }\n\n public get saturation(): number {\n return CssPropertyColor.getSaturationOfVar(this.valueOf());\n }\n\n /**\n *\n * @param name\n * @returns\n * @angularpackage\n */\n public static getHueOfVar(name: string): number {\n return this.#getPropertyValue(`--${name}-h`);\n }\n\n /**\n *\n * @param name\n * @returns\n * @angularpackage\n */\n public static getLightnessOfVar(name: string): number {\n return this.#getPropertyValue(`--${name}-l`);\n }\n\n /**\n *\n * @param name\n * @returns\n * @angularpackage\n */\n public static getSaturationOfVar(name: string): number {\n return this.#getPropertyValue(`--${name}-s`);\n }\n\n /**\n *\n * @param name\n * @returns\n * @angularpackage\n */\n public static getHexOfVar(name: string): string {\n const rgbColor = Color.hslToRgb(\n this.getHueOfVar(name),\n this.getSaturationOfVar(name),\n this.getLightnessOfVar(name)\n );\n return this.rgbToHex(\n Math.round(rgbColor.red),\n Math.round(rgbColor.green),\n Math.round(rgbColor.blue)\n );\n }\n\n public static removeHueOfVar(name: string): typeof CssPropertyColor {\n this.rootStyle.removeProperty(`--${name}-h`);\n return this;\n }\n\n public static removeLightnessOfVar(name: string): typeof CssPropertyColor {\n this.rootStyle.removeProperty(`--${name}-l`);\n return this;\n }\n\n public static removeSaturationOfVar(name: string): typeof CssPropertyColor {\n this.rootStyle.removeProperty(`--${name}-s`);\n return this;\n }\n\n public static removeColorOfVar(name: string): typeof CssPropertyColor {\n this.removeHueOfVar(name)\n .removeLightnessOfVar(name)\n .removeSaturationOfVar(name);\n return this;\n }\n\n /**\n *\n * @param name\n * @param value\n * @param priority\n * @returns\n * @angularpackage\n */\n public static setHueOfVar(\n name: string,\n value: number | null,\n priority?: 'important' | ''\n ): typeof CssPropertyColor {\n (document.querySelector(':root') as HTMLElement).style.setProperty(\n `--${name}-h`,\n `${String(value)}deg`,\n priority\n );\n return this;\n }\n\n /**\n *\n * @param name\n * @param value\n * @param priority\n * @returns\n * @angularpackage\n */\n public static setLightnessOfVar(\n name: string,\n value: number | null,\n priority?: 'important' | ''\n ): typeof CssPropertyColor {\n (document.querySelector(':root') as HTMLElement).style.setProperty(\n `--${name}-l`,\n `${String(value)}%`,\n priority\n );\n return this;\n }\n\n /**\n *\n * @param name\n * @param value\n * @param priority\n * @returns\n * @angularpackage\n */\n public static setSaturationOfVar(\n name: string,\n value: number | null,\n priority?: 'important' | ''\n ): typeof CssPropertyColor {\n (document.querySelector(':root') as HTMLElement).style.setProperty(\n `--${name}-s`,\n `${String(value)}%`,\n priority\n );\n return this;\n }\n\n static #calcLightness(lightness: string): any {\n let l = 0;\n lightness\n .match(/[+-]?\\d+(\\.\\d+)?/g)\n ?.forEach((value) => (l += Number(value)));\n return l;\n }\n\n static #getPropertyValue(name: string): number {\n const value = getComputedStyle(document.body)\n .getPropertyValue(name)\n .replace('deg', '')\n .replace('%', '');\n\n return value.indexOf('calc') ? this.#calcLightness(value) : Number(value);\n }\n\n /**\n *\n * @param color\n * @param prefix\n * @param availableColor\n * @angularpackage\n */\n constructor(\n color: C,\n prefix?: Prefix,\n availableColor: AvailableColor[] = [\n 'accent',\n 'basic',\n 'bg',\n 'dark',\n 'default',\n 'disabled',\n 'error',\n 'gray',\n 'gray-dark',\n 'gray-light',\n 'info',\n 'light',\n 'primary',\n 'secondary',\n 'success',\n 'warning',\n ] as AvailableColor[]\n ) {\n super(color, prefix, 'color', availableColor);\n }\n\n public getHex(shade?: Shade): string {\n return CssPropertyColor.getHexOfVar(this.getValue(shade));\n }\n\n public getHSL(shade?: Shade): HSL {\n return {\n hue: this.getHue(shade),\n lightness: this.getLightness(shade),\n saturation: this.getSaturation(shade),\n };\n }\n\n public getHue(shade?: Shade): number {\n return CssPropertyColor.getHueOfVar(this.getValue(shade));\n }\n\n public getLightness(shade?: Shade): number {\n return CssPropertyColor.getLightnessOfVar(this.getValue(shade));\n }\n\n public getSaturation(shade?: Shade): number {\n return CssPropertyColor.getSaturationOfVar(this.getValue(shade));\n }\n\n public getValue<S extends Shade>(\n shade?: S\n ):\n | AffixedName<Prefix, C, 'color'>\n | `${AffixedName<Prefix, C, 'color'>}-${S}` {\n return shade ? this.valueOfShade(shade) : this.valueOf();\n }\n\n public removeColor(shade?: Shade): this {\n CssPropertyColor.removeColorOfVar(this.getValue(shade));\n return this;\n }\n\n public setHex(hex: string, shade?: Shade): this {\n const hsl = CssPropertyColor.hexToHsl(hex);\n\n if (hsl) {\n this.setHue(hsl.hue, shade)\n .setLightnessOfVar(hsl.lightness, shade)\n .setSaturationOfVar(hsl.saturation, shade);\n }\n return this;\n }\n\n public setHsl(hue: number, saturation: number, lightness: number): this {\n this.setHue(hue)\n .setSaturationOfVar(saturation)\n .setLightnessOfVar(lightness);\n\n return this;\n }\n\n public setHue(\n value: number,\n shade?: Shade,\n priority?: 'important' | ''\n ): this {\n CssPropertyColor.setHueOfVar(this.getValue(shade), value, priority);\n return this;\n }\n\n public setLightnessOfVar(\n value: number,\n shade?: Shade,\n priority?: 'important' | ''\n ): this {\n CssPropertyColor.setLightnessOfVar(this.getValue(shade), value, priority);\n return this;\n }\n\n public setSaturationOfVar(\n value: number,\n shade?: Shade,\n priority?: 'important' | ''\n ): this {\n CssPropertyColor.setSaturationOfVar(this.getValue(shade), value, priority);\n return this;\n }\n\n public valueOfShade<S extends Shade>(\n shade: S\n ): `${AffixedName<Prefix, C, 'color'>}-${S}` {\n return `${this.valueOf()}-${shade}`;\n }\n}\n","/*\n * Public API Surface of spectre.css\n */\nexport const SPECTRE_CSS = true;\n\nexport { CssPropertyColor } from './helper/color';\n"],"names":["_a"],"mappings":"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"}