{"version":3,"file":"colors-ovWAwnZI.mjs","names":[],"sources":["../src/drawing/dml/colors.ts"],"sourcesContent":["// DrawingML colors.\n//\n// ECMA-376 spreads \"color\" across six element kinds (`<a:srgbClr>`,\n// `<a:sysClr>`, `<a:schemeClr>`, `<a:prstClr>`, `<a:hslClr>`, `<a:scrgbClr>`)\n// plus a long modifier list (`<a:lumMod>`, `<a:tint>`, etc.) that may follow\n// the base color. The model splits the two: a `DmlColor` discriminated union\n// for the base, and a `ColorMod[]` carrying the ordered modifier list. Wrapping\n// them in `DmlColorWithMods` keeps the modifier order — Excel re-applies them\n// in the same sequence.\n\n/** ECMA-376 scheme-color names (`<a:schemeClr val=\"...\">`). */\nexport type SchemeColorName =\n  | 'bg1'\n  | 'tx1'\n  | 'bg2'\n  | 'tx2'\n  | 'accent1'\n  | 'accent2'\n  | 'accent3'\n  | 'accent4'\n  | 'accent5'\n  | 'accent6'\n  | 'hlink'\n  | 'folHlink'\n  | 'phClr'\n  | 'dk1'\n  | 'lt1'\n  | 'dk2'\n  | 'lt2';\n\nexport const SCHEME_COLOR_NAMES: ReadonlyArray<SchemeColorName> = [\n  'bg1',\n  'tx1',\n  'bg2',\n  'tx2',\n  'accent1',\n  'accent2',\n  'accent3',\n  'accent4',\n  'accent5',\n  'accent6',\n  'hlink',\n  'folHlink',\n  'phClr',\n  'dk1',\n  'lt1',\n  'dk2',\n  'lt2',\n];\n\nexport type DmlColor =\n  | { kind: 'srgb'; value: string /* RRGGBB */ }\n  | { kind: 'sysClr'; value: string; lastClr?: string }\n  | { kind: 'schemeClr'; value: SchemeColorName }\n  | { kind: 'prstClr'; value: string }\n  | { kind: 'hslClr'; hue: number; sat: number; lum: number }\n  | { kind: 'scrgbClr'; r: number; g: number; b: number };\n\nexport type ColorMod =\n  | { kind: 'lumMod'; val: number }\n  | { kind: 'lumOff'; val: number }\n  | { kind: 'satMod'; val: number }\n  | { kind: 'satOff'; val: number }\n  | { kind: 'hueMod'; val: number }\n  | { kind: 'hueOff'; val: number }\n  | { kind: 'tint'; val: number }\n  | { kind: 'shade'; val: number }\n  | { kind: 'alpha'; val: number }\n  | { kind: 'alphaMod'; val: number }\n  | { kind: 'alphaOff'; val: number }\n  | { kind: 'red'; val: number }\n  | { kind: 'green'; val: number }\n  | { kind: 'blue'; val: number }\n  | { kind: 'redMod'; val: number }\n  | { kind: 'greenMod'; val: number }\n  | { kind: 'blueMod'; val: number }\n  | { kind: 'redOff'; val: number }\n  | { kind: 'greenOff'; val: number }\n  | { kind: 'blueOff'; val: number }\n  | { kind: 'gray' }\n  | { kind: 'comp' }\n  | { kind: 'inv' }\n  | { kind: 'invGamma' }\n  | { kind: 'gamma' };\n\n/** Color mod kinds that take no `val` attribute (their elements are empty). */\nexport const VALUELESS_COLOR_MOD_KINDS: ReadonlyArray<ColorMod['kind']> = ['gray', 'comp', 'inv', 'invGamma', 'gamma'];\n\n/** Color mod kinds that carry a numeric `val` attribute. */\nexport const VALUED_COLOR_MOD_KINDS: ReadonlyArray<ColorMod['kind']> = [\n  'lumMod',\n  'lumOff',\n  'satMod',\n  'satOff',\n  'hueMod',\n  'hueOff',\n  'tint',\n  'shade',\n  'alpha',\n  'alphaMod',\n  'alphaOff',\n  'red',\n  'green',\n  'blue',\n  'redMod',\n  'greenMod',\n  'blueMod',\n  'redOff',\n  'greenOff',\n  'blueOff',\n];\n\nexport interface DmlColorWithMods {\n  base: DmlColor;\n  mods: ColorMod[];\n}\n\nexport const makeSrgbColor = (rrggbb: string): DmlColor => ({ kind: 'srgb', value: rrggbb.toUpperCase() });\n\nexport const makeSchemeColor = (name: SchemeColorName): DmlColor => ({ kind: 'schemeClr', value: name });\n\nexport const makeColor = (base: DmlColor, mods: ColorMod[] = []): DmlColorWithMods => ({ base, mods });\n"],"mappings":";AA8BA,MAAa,qBAAqD;CAChE;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACF;;AAsCA,MAAa,4BAA6D;CAAC;CAAQ;CAAQ;CAAO;CAAY;AAAO;;AAGrH,MAAa,yBAA0D;CACrE;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACF;AAOA,MAAa,iBAAiB,YAA8B;CAAE,MAAM;CAAQ,OAAO,OAAO,YAAY;AAAE;AAExG,MAAa,mBAAmB,UAAqC;CAAE,MAAM;CAAa,OAAO;AAAK;AAEtG,MAAa,aAAa,MAAgB,OAAmB,CAAC,OAAyB;CAAE;CAAM;AAAK"}