{"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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"}