nxt-color-picker
Version:
Color picker widget for Angular
1 lines • 169 kB
Source Map (JSON)
{"version":3,"file":"nxt-color-picker.mjs","sources":["../../../packages/color-picker/src/util/formats.ts","../../../packages/color-picker/src/util/types.ts","../../../packages/color-picker/src/util/color.ts","../../../packages/color-picker/src/util/contrast.ts","../../../packages/color-picker/src/util/helpers.ts","../../../packages/color-picker/src/lib/color-picker.service.ts","../../../packages/color-picker/src/lib/slider.directive.ts","../../../packages/color-picker/src/lib/text.directive.ts","../../../packages/color-picker/src/lib/color-picker/color-picker.component.ts","../../../packages/color-picker/src/lib/color-picker/color-picker.component.html","../../../packages/color-picker/src/lib/color-picker.directive.ts","../../../packages/color-picker/src/lib/color-picker.module.ts","../../../packages/color-picker/src/public-api.ts","../../../packages/color-picker/src/nxt-color-picker.ts"],"sourcesContent":["export class Cmyk {\r\n constructor(\r\n public c: number,\r\n public m: number,\r\n public y: number,\r\n public k: number,\r\n public a: number,\r\n /** Wheter values are normalized to [0..1] */\r\n readonly normalized = true\r\n ) { }\r\n}\r\n\r\nexport class Hsla {\r\n constructor(\r\n public h: number,\r\n public s: number,\r\n public l: number,\r\n public a: number,\r\n /** Wheter values are normalized to [0..1] */\r\n readonly normalized = true\r\n ) { }\r\n}\r\n\r\nexport class Hsva {\r\n constructor(\r\n public h: number,\r\n public s: number,\r\n public v: number,\r\n public a: number,\r\n /** Wheter values are normalized to [0..1] */\r\n readonly normalized = true\r\n ) { }\r\n}\r\n\r\nexport class Rgba {\r\n constructor(\r\n public r: number,\r\n public g: number,\r\n public b: number,\r\n public a: number,\r\n /** Wheter values are normalized to [0..1] */\r\n readonly normalized = true\r\n ) { }\r\n}\r\n","export enum ColorFormatEnum {\r\n hex = 'hex',\r\n rgba = 'rgba',\r\n hsla = 'hsla',\r\n cmyk = 'cmyk'\r\n}\r\n\r\nexport type ColorFormat = `${ColorFormatEnum}`\r\n\r\nexport const AlphaEnabledFormats = new Set<ColorFormat>([ColorFormatEnum.hsla, ColorFormatEnum.rgba, ColorFormatEnum.cmyk])\r\n\r\nexport enum OutputFormatEnum {\r\n auto = 'auto',\r\n hex = 'hex',\r\n rgba = 'rgba',\r\n hsla = 'hsla'\r\n}\r\n\r\nexport type OutputFormat = `${OutputFormatEnum}`\r\n\r\nexport enum AlphaChannelEnum {\r\n enabled = 'enabled',\r\n disabled = 'disabled',\r\n always = 'always',\r\n forced = 'forced'\r\n}\r\n\r\nexport type AlphaChannel = `${AlphaChannelEnum}`\r\n\r\nexport enum DialogPositionEnum {\r\n auto = 'auto',\r\n top = 'top',\r\n left = 'left',\r\n right = 'right',\r\n bottom = 'bottom'\r\n}\r\n\r\nexport type DialogPosition = `${DialogPositionEnum}`\r\n\r\nexport enum DialogDisplayEnum {\r\n popup = 'popup',\r\n inline = 'inline'\r\n}\r\n\r\nexport type DialogDisplay = `${DialogDisplayEnum}`\r\n\r\nexport type ColorMode = 'color' | 'c' | '1' | 'grayscale' | 'g' | '2' | 'presets' | 'p' | '3'\r\n\r\nexport interface InputChangeEvent {\r\n input: string\r\n valid: boolean\r\n value: number | string\r\n color: string\r\n}\r\n\r\nexport interface SliderChangeEvent {\r\n slider: string\r\n value?: number | string\r\n color: string\r\n}\r\n","import { Cmyk, Hsla, Hsva, Rgba } from './formats'\r\nimport { AlphaChannel, AlphaChannelEnum, OutputFormat, OutputFormatEnum } from './types'\r\n\r\nfunction clamp(val: number, min: number, max: number) {\r\n return Math.min(max, Math.max(val, min))\r\n}\r\n\r\nexport function hsvaToHsla(hsva: Hsva) {\r\n hsva = normalizeHSVA(hsva)\r\n const h = hsva.h\r\n const s = hsva.s\r\n const v = hsva.v\r\n const a = hsva.a\r\n\r\n if (v == 0) {\r\n return new Hsla(h, 0, 0, a, true)\r\n } else if (s == 0 && v == 1) {\r\n return new Hsla(h, 1, 1, a, true)\r\n } else {\r\n const l = v * (2 - s) / 2\r\n\r\n return new Hsla(h, v * s / (1 - Math.abs(2 * l - 1)), l, a, true)\r\n }\r\n}\r\n\r\nexport function hslaToHsva(hsla: Hsla) {\r\n hsla = normalizeHSLA(hsla)\r\n const h = Math.min(hsla.h, 1)\r\n const s = Math.min(hsla.s, 1)\r\n const l = Math.min(hsla.l, 1)\r\n const a = Math.min(hsla.a, 1)\r\n\r\n if (l == 0) {\r\n return new Hsva(h, 0, 0, a, true)\r\n } else {\r\n const v = l + s * (1 - Math.abs(2 * l - 1)) / 2\r\n\r\n return new Hsva(h, 2 * (v - l) / v, v, a, true)\r\n }\r\n}\r\n\r\nexport function hsvaToRgba(hsva: Hsva) {\r\n hsva = normalizeHSVA(hsva)\r\n let r: number; let g: number; let b: number\r\n\r\n const h = hsva.h; const s = hsva.s; const v = hsva.v; const a = hsva.a\r\n\r\n const i = Math.floor(h * 6)\r\n const f = h * 6 - i\r\n const p = v * (1 - s)\r\n const q = v * (1 - f * s)\r\n const t = v * (1 - (1 - f) * s)\r\n\r\n switch (i % 6) {\r\n case 0:\r\n r = v\r\n g = t\r\n b = p\r\n break\r\n case 1:\r\n r = q\r\n g = v\r\n b = p\r\n break\r\n case 2:\r\n r = p\r\n g = v\r\n b = t\r\n break\r\n case 3:\r\n r = p\r\n g = q\r\n b = v\r\n break\r\n case 4:\r\n r = t\r\n g = p\r\n b = v\r\n break\r\n case 5:\r\n r = v\r\n g = p\r\n b = q\r\n break\r\n default:\r\n r = 0\r\n g = 0\r\n b = 0\r\n }\r\n\r\n return new Rgba(r, g, b, a, true)\r\n}\r\n\r\nexport function rgbaToCmyk(rgba: Rgba) {\r\n rgba = normalizeRGBA(rgba)\r\n const k: number = 1 - Math.max(rgba.r, rgba.g, rgba.b)\r\n\r\n if (k == 1) {\r\n return new Cmyk(0, 0, 0, 1, rgba.a, true)\r\n } else {\r\n const c = (1 - rgba.r - k) / (1 - k)\r\n const m = (1 - rgba.g - k) / (1 - k)\r\n const y = (1 - rgba.b - k) / (1 - k)\r\n\r\n return new Cmyk(c, m, y, k, rgba.a, true)\r\n }\r\n}\r\n\r\nexport function rgbaToHsva(rgba: Rgba) {\r\n rgba = normalizeRGBA(rgba)\r\n let h: number\r\n\r\n const r = Math.min(rgba.r, 1); const g = Math.min(rgba.g, 1)\r\n const b = Math.min(rgba.b, 1); const a = Math.min(rgba.a, 1)\r\n\r\n const max = Math.max(r, g, b); const min = Math.min(r, g, b)\r\n\r\n const v: number = max; const d = max - min\r\n\r\n const s = (max == 0) ? 0 : d / max\r\n\r\n if (max == min) {\r\n h = 0\r\n } else {\r\n switch (max) {\r\n case r:\r\n h = (g - b) / d + (g < b ? 6 : 0)\r\n break\r\n case g:\r\n h = (b - r) / d + 2\r\n break\r\n case b:\r\n h = (r - g) / d + 4\r\n break\r\n default:\r\n h = 0\r\n }\r\n\r\n h /= 6\r\n }\r\n\r\n return new Hsva(h, s, v, a, true)\r\n}\r\n\r\nexport function rgbaToHex(rgba: Rgba, allowHex8?: boolean) {\r\n rgba = denormalizeRGBA(rgba)\r\n /* tslint:disable:no-bitwise */\r\n let hex = '#' + ((1 << 24) | (Math.round(rgba.r) << 16) | (Math.round(rgba.g) << 8) | Math.round(rgba.b)).toString(16).substring(1)\r\n\r\n if (allowHex8) {\r\n hex += ((1 << 8) | clamp(Math.round(rgba.a * 255), 0, 255)).toString(16).substring(1)\r\n }\r\n /* tslint:enable:no-bitwise */\r\n\r\n return hex\r\n}\r\n\r\nexport function cmykToRgb(cmyk: Cmyk): Rgba {\r\n cmyk = normalizeCMYK(cmyk)\r\n const r = (1 - cmyk.c) * (1 - cmyk.k)\r\n const g = (1 - cmyk.m) * (1 - cmyk.k)\r\n const b = (1 - cmyk.y) * (1 - cmyk.k)\r\n\r\n return new Rgba(r, g, b, cmyk.a, true)\r\n}\r\n\r\nexport function normalizeCMYK(cmyk: Cmyk): Cmyk {\r\n if (cmyk.normalized)\r\n return cmyk\r\n return new Cmyk(\r\n clamp(cmyk.c / 100, 0, 1),\r\n clamp(cmyk.m / 100, 0, 1),\r\n clamp(cmyk.y / 100, 0, 1),\r\n clamp(cmyk.k / 100, 0, 1),\r\n clamp(cmyk.a, 0, 1),\r\n true\r\n )\r\n}\r\n\r\nexport function denormalizeCMYK(cmyk: Cmyk): Cmyk {\r\n if (!cmyk.normalized)\r\n return cmyk\r\n\r\n return new Cmyk(\r\n clamp(cmyk.c * 100, 0, 100),\r\n clamp(cmyk.m * 100, 0, 100),\r\n clamp(cmyk.y * 100, 0, 100),\r\n clamp(cmyk.k * 100, 0, 100),\r\n clamp(cmyk.a, 0, 1),\r\n false\r\n )\r\n}\r\n\r\nexport function normalizeRGBA(rgba: Rgba) {\r\n if (rgba.normalized)\r\n return rgba\r\n return new Rgba(\r\n clamp(rgba.r / 255, 0, 1),\r\n clamp(rgba.g / 255, 0, 1),\r\n clamp(rgba.b / 255, 0, 1),\r\n clamp(rgba.a, 0, 1),\r\n true\r\n )\r\n}\r\n\r\nexport function denormalizeRGBA(rgba: Rgba) {\r\n if (!rgba.normalized)\r\n return rgba\r\n return new Rgba(\r\n clamp(rgba.r * 255, 0, 255),\r\n clamp(rgba.g * 255, 0, 255),\r\n clamp(rgba.b * 255, 0, 255),\r\n clamp(rgba.a, 0, 1),\r\n false\r\n )\r\n}\r\n\r\nexport function normalizeHSVA(hsva: Hsva) {\r\n if (hsva.normalized)\r\n return hsva\r\n return new Hsva(\r\n clamp(hsva.h / 360, 0, 1),\r\n clamp(hsva.s / 100, 0, 1),\r\n clamp(hsva.v / 100, 0, 1),\r\n clamp(hsva.a, 0, 1),\r\n true\r\n )\r\n}\r\n\r\nexport function denormalizeHSVA(hsva: Hsva) {\r\n if (!hsva.normalized)\r\n return hsva\r\n return new Hsva(\r\n clamp(hsva.h * 360, 0, 360),\r\n clamp(hsva.s * 100, 0, 100),\r\n clamp(hsva.v * 100, 0, 100),\r\n clamp(hsva.a, 0, 1),\r\n false\r\n )\r\n}\r\n\r\nexport function normalizeHSLA(hsla: Hsla) {\r\n if (hsla.normalized)\r\n return hsla\r\n return new Hsla(\r\n clamp(hsla.h / 360, 0, 1),\r\n clamp(hsla.s / 100, 0, 1),\r\n clamp(hsla.l / 100, 0, 1),\r\n clamp(hsla.a, 0, 1),\r\n true\r\n )\r\n}\r\n\r\nexport function denormalizeHSLA(hsla: Hsla) {\r\n if (!hsla.normalized)\r\n return hsla\r\n return new Hsla(\r\n clamp(hsla.h * 360, 0, 360),\r\n clamp(hsla.s * 100, 0, 100),\r\n clamp(hsla.l * 100, 0, 100),\r\n clamp(hsla.a, 0, 1),\r\n false\r\n )\r\n}\r\n\r\nexport function stringToHsva(colorString: string = '', allowHex8: boolean = false) {\r\n let hsva: Hsva | undefined\r\n\r\n colorString = (colorString || '').toLowerCase()\r\n\r\n const stringParsers = [\r\n {\r\n re: /(cmyk)a?\\(\\s*(\\d{1,3})\\s*,\\s*(\\d{1,3})\\s*%?,\\s*(\\d{1,3})\\s*%?,\\s*(\\d{1,3})\\s*%?(?:,\\s*(\\d+(?:\\.\\d+)?)\\s*)?\\)/,\r\n parse: (execResult: any) => new Cmyk(\r\n parseFloat(execResult[2]) / 100,\r\n parseFloat(execResult[3]) / 100,\r\n parseFloat(execResult[4]) / 100,\r\n parseFloat(execResult[5]) / 100,\r\n isNaN(parseFloat(execResult[6])) ? 1 : parseFloat(execResult[6]),\r\n true\r\n )\r\n },\r\n {\r\n re: /(rgb)a?\\(\\s*(\\d{1,3})\\s*,\\s*(\\d{1,3})\\s*%?,\\s*(\\d{1,3})\\s*%?(?:,\\s*(\\d+(?:\\.\\d+)?)\\s*)?\\)/,\r\n parse: (execResult: any) => new Rgba(\r\n parseFloat(execResult[2]) / 255,\r\n parseFloat(execResult[3]) / 255,\r\n parseFloat(execResult[4]) / 255,\r\n isNaN(parseFloat(execResult[5])) ? 1 : parseFloat(execResult[5]),\r\n true\r\n )\r\n }, {\r\n re: /(hsl)a?\\(\\s*(\\d{1,3})\\s*,\\s*(\\d{1,3})%\\s*,\\s*(\\d{1,3})%\\s*(?:,\\s*(\\d+(?:\\.\\d+)?)\\s*)?\\)/,\r\n parse: (execResult: any) => new Hsla(\r\n parseFloat(execResult[2]) / 360,\r\n parseFloat(execResult[3]) / 100,\r\n parseFloat(execResult[4]) / 100,\r\n isNaN(parseFloat(execResult[5])) ? 1 : parseFloat(execResult[5]),\r\n true\r\n )\r\n }\r\n ]\r\n\r\n if (allowHex8) {\r\n stringParsers.push({\r\n re: /#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})?$/,\r\n parse: (execResult: any) => new Rgba(\r\n parseInt(execResult[1], 16) / 255,\r\n parseInt(execResult[2], 16) / 255,\r\n parseInt(execResult[3], 16) / 255,\r\n parseInt(execResult[4] || 'FF', 16) / 255,\r\n true\r\n )\r\n })\r\n } else {\r\n stringParsers.push({\r\n re: /#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})$/,\r\n parse: (execResult: any) => new Rgba(\r\n parseInt(execResult[1], 16) / 255,\r\n parseInt(execResult[2], 16) / 255,\r\n parseInt(execResult[3], 16) / 255,\r\n 1,\r\n true\r\n )\r\n })\r\n }\r\n\r\n stringParsers.push({\r\n re: /#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])$/,\r\n parse: (execResult: any) => new Rgba(\r\n parseInt(execResult[1] + execResult[1], 16) / 255,\r\n parseInt(execResult[2] + execResult[2], 16) / 255,\r\n parseInt(execResult[3] + execResult[3], 16) / 255,\r\n 1,\r\n true\r\n )\r\n })\r\n\r\n for (const key in stringParsers) {\r\n if (stringParsers.hasOwnProperty(key)) {\r\n const parser = stringParsers[key]\r\n\r\n const match = parser.re.exec(colorString); const color = match && parser.parse(match)\r\n\r\n if (color) {\r\n if (color instanceof Rgba) {\r\n hsva = rgbaToHsva(color)\r\n } else if (color instanceof Hsla) {\r\n hsva = hslaToHsva(color)\r\n } else if (color instanceof Cmyk) {\r\n hsva = rgbaToHsva(cmykToRgb(color))\r\n } else {\r\n hsva = color\r\n }\r\n\r\n return hsva\r\n }\r\n }\r\n }\r\n\r\n return hsva\r\n}\r\nexport function stringToCmyk(colorString: string = '', allowHex8: boolean = false) {\r\n let cmyk: Cmyk | undefined\r\n\r\n colorString = (colorString || '').toLowerCase()\r\n\r\n const stringParsers = [\r\n {\r\n re: /(cmyk)a?\\(\\s*(\\d{1,3})\\s*,\\s*(\\d{1,3})\\s*%?,\\s*(\\d{1,3})\\s*%?,\\s*(\\d{1,3})\\s*%?(?:,\\s*(\\d+(?:\\.\\d+)?)\\s*)?\\)/,\r\n parse: (execResult: any) => new Cmyk(\r\n parseFloat(execResult[2]) / 100,\r\n parseFloat(execResult[3]) / 100,\r\n parseFloat(execResult[4]) / 100,\r\n parseFloat(execResult[5]) / 100,\r\n isNaN(parseFloat(execResult[6])) ? 1 : parseFloat(execResult[6]),\r\n true\r\n )\r\n },\r\n {\r\n re: /(rgb)a?\\(\\s*(\\d{1,3})\\s*,\\s*(\\d{1,3})\\s*%?,\\s*(\\d{1,3})\\s*%?(?:,\\s*(\\d+(?:\\.\\d+)?)\\s*)?\\)/,\r\n parse: (execResult: any) => new Rgba(\r\n parseFloat(execResult[2]) / 255,\r\n parseFloat(execResult[3]) / 255,\r\n parseFloat(execResult[4]) / 255,\r\n isNaN(parseFloat(execResult[5])) ? 1 : parseFloat(execResult[5]),\r\n true\r\n )\r\n }, {\r\n re: /(hsl)a?\\(\\s*(\\d{1,3})\\s*,\\s*(\\d{1,3})%\\s*,\\s*(\\d{1,3})%\\s*(?:,\\s*(\\d+(?:\\.\\d+)?)\\s*)?\\)/,\r\n parse: (execResult: any) => new Hsla(\r\n parseFloat(execResult[2]) / 360,\r\n parseFloat(execResult[3]) / 100,\r\n parseFloat(execResult[4]) / 100,\r\n isNaN(parseFloat(execResult[5])) ? 1 : parseFloat(execResult[5]),\r\n true\r\n )\r\n }\r\n ]\r\n\r\n if (allowHex8) {\r\n stringParsers.push({\r\n re: /#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})?$/,\r\n parse: (execResult: any) => new Rgba(\r\n parseInt(execResult[1], 16) / 255,\r\n parseInt(execResult[2], 16) / 255,\r\n parseInt(execResult[3], 16) / 255,\r\n parseInt(execResult[4] || 'FF', 16) / 255,\r\n true\r\n )\r\n })\r\n } else {\r\n stringParsers.push({\r\n re: /#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})$/,\r\n parse: (execResult: any) => new Rgba(\r\n parseInt(execResult[1], 16) / 255,\r\n parseInt(execResult[2], 16) / 255,\r\n parseInt(execResult[3], 16) / 255,\r\n 1,\r\n true\r\n )\r\n })\r\n }\r\n\r\n stringParsers.push({\r\n re: /#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])$/,\r\n parse: (execResult: any) => new Rgba(\r\n parseInt(execResult[1] + execResult[1], 16) / 255,\r\n parseInt(execResult[2] + execResult[2], 16) / 255,\r\n parseInt(execResult[3] + execResult[3], 16) / 255,\r\n 1,\r\n true\r\n )\r\n })\r\n\r\n for (const key in stringParsers) {\r\n if (stringParsers.hasOwnProperty(key)) {\r\n const parser = stringParsers[key]\r\n\r\n const match = parser.re.exec(colorString); const color = match && parser.parse(match)\r\n\r\n if (color) {\r\n if (color instanceof Rgba) {\r\n cmyk = rgbaToCmyk(color)\r\n } else if (color instanceof Hsva) {\r\n cmyk = rgbaToCmyk(hsvaToRgba(color))\r\n } else if (color instanceof Hsla) {\r\n cmyk = rgbaToCmyk(hsvaToRgba(hslaToHsva(color)))\r\n } else {\r\n cmyk = color\r\n }\r\n\r\n return cmyk\r\n }\r\n }\r\n }\r\n\r\n return cmyk\r\n}\r\n\r\nexport function formatOutput(hsva: Hsva, outputFormat: OutputFormat, alphaChannel?: AlphaChannel) {\r\n if (outputFormat == OutputFormatEnum.auto) {\r\n outputFormat = hsva.a < 1 ? OutputFormatEnum.rgba : OutputFormatEnum.hex\r\n }\r\n\r\n switch (outputFormat) {\r\n case OutputFormatEnum.hsla:\r\n const hsla = denormalizeHSLA(hsvaToHsla(hsva))\r\n\r\n if (hsva.a < 1 || alphaChannel == AlphaChannelEnum.always) {\r\n return 'hsla(' + hsla.h.toFixed(0) + ',' + hsla.s.toFixed(0) + '%,' + hsla.l.toFixed(0) + '%,' + hsla.a.toFixed(2) + ')'\r\n } else {\r\n return 'hsl(' + hsla.h.toFixed(0) + ',' + hsla.s.toFixed(0) + '%,' + hsla.l.toFixed(0) + '%)'\r\n }\r\n\r\n case OutputFormatEnum.rgba:\r\n const rgba = denormalizeRGBA(hsvaToRgba(hsva))\r\n\r\n if (hsva.a < 1 || alphaChannel == AlphaChannelEnum.always) {\r\n return 'rgba(' + rgba.r.toFixed(0) + ',' + rgba.g.toFixed(0) + ',' + rgba.b.toFixed(0) + ',' + rgba.a.toFixed(2) + ')'\r\n } else {\r\n return 'rgb(' + rgba.r.toFixed(0) + ',' + rgba.g.toFixed(0) + ',' + rgba.b.toFixed(0) + ')'\r\n }\r\n\r\n default:\r\n const allowHex8 = (alphaChannel == AlphaChannelEnum.always || alphaChannel == AlphaChannelEnum.forced)\r\n\r\n return rgbaToHex(denormalizeRGBA(hsvaToRgba(hsva)), allowHex8)\r\n }\r\n}\r\n\r\nexport function formatCmyk(cmyk: Cmyk, alphaChannel: AlphaChannel) {\r\n cmyk = denormalizeCMYK(cmyk)\r\n if (cmyk.a < 1 || alphaChannel == AlphaChannelEnum.always) {\r\n return 'cmyka(' + cmyk.c.toFixed(0) + ',' + cmyk.m.toFixed(0) + ',' + cmyk.y.toFixed(0) + ',' + cmyk.k.toFixed(0) + ',' + cmyk.a.toFixed(2) + ')'\r\n } else {\r\n return 'cmyk(' + cmyk.c.toFixed(0) + ',' + cmyk.m.toFixed(0) + ',' + cmyk.y.toFixed(0) + ',' + cmyk.k.toFixed(0) + ')'\r\n }\r\n}\r\n\r\nexport function calculateContrast(foreground: Rgba, background: Rgba) {\r\n foreground = normalizeRGBA(foreground)\r\n background = normalizeRGBA(background)\r\n\r\n if (Math.round(foreground.a * 100) < 100) {\r\n foreground = compositeColors(foreground, background)\r\n }\r\n\r\n const luminance1 = calculateLuminance(foreground) + 0.05\r\n const luminance2 = calculateLuminance(background) + 0.05\r\n\r\n return Math.max(luminance1, luminance2) / Math.min(luminance1, luminance2)\r\n}\r\n\r\nexport function compositeColors(foreground: Rgba, background: Rgba) {\r\n foreground = normalizeRGBA(foreground)\r\n background = normalizeRGBA(background)\r\n const a = compositeAlpha(foreground.a, background.a)\r\n\r\n const r = compositeComponent(foreground.r, foreground.a, background.r, background.a, a)\r\n const g = compositeComponent(foreground.g, foreground.a, background.g, background.a, a)\r\n const b = compositeComponent(foreground.b, foreground.a, background.b, background.a, a)\r\n\r\n return new Rgba(r, g, b, a, true)\r\n}\r\n\r\nexport function compositeAlpha(foregroundAlpha: number, backgroundAlpha: number) {\r\n return 1 - (1 - backgroundAlpha) * (1 - foregroundAlpha)\r\n}\r\n\r\nexport function compositeComponent(fgC: number, fgA: number, bgC: number, bgA: number, a: number) {\r\n if (a == 0) {\r\n return 0\r\n }\r\n return ((fgC * fgA) + (bgC * bgA * (1 - fgA))) / a\r\n}\r\n\r\nexport function calculateLuminance(color: Rgba) {\r\n color = normalizeRGBA(color)\r\n let red = color.r\r\n red = red < 0.03928 ? red / 12.92 : Math.pow((red + 0.055) / 1.055, 2.4)\r\n\r\n let green = color.g\r\n green = green < 0.03928 ? green / 12.92 : Math.pow((green + 0.055) / 1.055, 2.4)\r\n\r\n let blue = color.b\r\n blue = blue < 0.03928 ? blue / 12.92 : Math.pow((blue + 0.055) / 1.055, 2.4)\r\n\r\n return (0.2126 * red) + (0.7152 * green) + (0.0722 * blue)\r\n}\r\n\r\nexport function calculateMinimumAlpha(foreground: Rgba, background: Rgba, minContrastRatio: number) {\r\n foreground = normalizeRGBA(foreground)\r\n background = normalizeRGBA(background)\r\n if (Math.round(background.a * 100) < 100) {\r\n return -1\r\n }\r\n\r\n let testForeground = new Rgba(foreground.r, foreground.g, foreground.b, 1)\r\n let testRatio = calculateContrast(testForeground, background)\r\n if (testRatio < minContrastRatio) {\r\n return -1\r\n }\r\n\r\n let numIterations = 0\r\n let minAlpha = 0\r\n let maxAlpha = 1\r\n\r\n while (numIterations <= 10 && (maxAlpha - minAlpha) > 0.01) {\r\n const testAlpha = (minAlpha + maxAlpha) / 2\r\n\r\n testForeground = new Rgba(foreground.r, foreground.g, foreground.b, testAlpha)\r\n testRatio = calculateContrast(testForeground, background)\r\n\r\n if (testRatio < minContrastRatio) {\r\n minAlpha = testAlpha\r\n } else {\r\n maxAlpha = testAlpha\r\n }\r\n\r\n numIterations++\r\n }\r\n\r\n return maxAlpha\r\n}\r\n","import { calculateContrast, compositeColors } from './color'\r\nimport { Rgba } from './formats'\r\n\r\n/**\r\n * @internal\r\n */\r\nconst light = new Rgba(218, 218, 218, 1, false)\r\n\r\n/**\r\n * @internal\r\n */\r\nconst dark = new Rgba(34, 34, 34, 1, false)\r\n\r\n/**\r\n * @internal\r\n */\r\nexport function opaqueSliderLight(background: Rgba) {\r\n const cWhite = calculateContrast(light, new Rgba(background.r, background.g, background.b, 1, background.normalized))\r\n const cBlack = calculateContrast(dark, new Rgba(background.r, background.g, background.b, 1, background.normalized))\r\n\r\n return cWhite > cBlack\r\n}\r\n\r\n/**\r\n * @internal\r\n */\r\nexport function transparentSliderLight(background: Rgba) {\r\n const bg = compositeColors(background, light)\r\n const cWhite = calculateContrast(light, new Rgba(bg.r, bg.g, bg.b, 1, bg.normalized))\r\n const cBlack = calculateContrast(dark, new Rgba(bg.r, bg.g, bg.b, 1, bg.normalized))\r\n\r\n return cWhite > cBlack\r\n}\r\n","import { ElementRef, InputSignal } from '@angular/core'\r\nimport { AlphaChannel, ColorMode, DialogDisplay, DialogPosition, InputChangeEvent, OutputFormat, SliderChangeEvent } from './types'\r\n\r\n/**\r\n * @internal\r\n */\r\nexport class SliderPosition {\r\n constructor(public h: number, public s: number, public v: number, public a: number) { }\r\n}\r\n\r\n/**\r\n * @internal\r\n */\r\nexport class SliderDimension {\r\n constructor(public h: number, public s: number, public v: number, public a: number) { }\r\n}\r\n\r\n/**\r\n * @internal\r\n */\r\nexport enum ColorModeInternal {\r\n color,\r\n grayscale,\r\n presets\r\n}\r\n\r\n/**\r\n * @internal\r\n */\r\nexport function parseColorMode(mode: string) {\r\n switch (mode.toString().toUpperCase()) {\r\n case '1':\r\n case 'C':\r\n case 'COLOR':\r\n return ColorModeInternal.color\r\n\r\n case '2':\r\n case 'G':\r\n case 'GRAYSCALE':\r\n return ColorModeInternal.grayscale\r\n\r\n case '3':\r\n case 'P':\r\n case 'PRESETS':\r\n return ColorModeInternal.presets\r\n\r\n default:\r\n return ColorModeInternal.color\r\n }\r\n}\r\n\r\n/**\r\n * @internal\r\n */\r\nexport function sizeToString(val: any) {\r\n const strVal = ((val || 'auto') + '').trim().toLowerCase()\r\n if (strVal.match(/^\\d+[a-z%]+$/) || strVal == 'auto') {\r\n return strVal\r\n }\r\n\r\n const num = parseInt(strVal, 10)\r\n if (!Number.isNaN(num)) {\r\n return `${num}px`\r\n }\r\n\r\n return 'auto'\r\n}\r\n\r\n/**\r\n * @internal\r\n */\r\nexport type CursorEvent = { v: number, rgX: number } | { v: number, rgY: number } | { v: number, s: number, rgX: number, rgY: number }\r\n\r\n/**\r\n * @internal\r\n */\r\nexport type TextEvent = string | { v: number, rg: number }\r\n\r\n/**\r\n * @internal\r\n */\r\nexport interface DirectiveCallbacks {\r\n stateChanged(state: boolean): void\r\n cmykChanged(valuse: string, ignore?: boolean): void\r\n colorChanged(value: string, ignore?: boolean): void\r\n colorSelectCanceled(): void\r\n colorSelected(value: string): void\r\n inputChanged(event: InputChangeEvent): void\r\n sliderDragStart(event: SliderChangeEvent): void\r\n sliderChanged(event: SliderChangeEvent): void\r\n sliderDragEnd(event: SliderChangeEvent): void\r\n presetColorsChanged(value?: string[]): void\r\n}\r\n\r\n/**\r\n * @internal\r\n */\r\nexport interface DialogConfig {\r\n callbacks: DirectiveCallbacks\r\n elementRef: ElementRef\r\n color: any\r\n width: InputSignal<string>\r\n height: InputSignal<string>\r\n dialogDisplay: InputSignal<DialogDisplay>\r\n fallbackColor: InputSignal<string | undefined>\r\n mode: InputSignal<ColorMode>\r\n cmykEnabled: InputSignal<boolean>\r\n alphaChannel: InputSignal<AlphaChannel>\r\n outputFormat: InputSignal<OutputFormat>\r\n disableInput: InputSignal<boolean>\r\n ignoredElements: InputSignal<any[] | undefined>\r\n saveClickOutside: InputSignal<boolean>\r\n closeClickOutside: InputSignal<boolean>\r\n useRootViewContainer: InputSignal<boolean>\r\n position: InputSignal<DialogPosition | DialogPosition[]>\r\n presetLabel: InputSignal<boolean | string>\r\n presetColors: InputSignal<string[] | undefined>\r\n maxPresetColors: InputSignal<number | undefined>\r\n okButton: InputSignal<boolean>\r\n cancelButton: InputSignal<boolean>\r\n presetColorsEditable: InputSignal<boolean>\r\n}\r\n\r\n/**\r\n * @internal\r\n */\r\nexport function composedPath(event: Event): EventTarget[] {\r\n if (event.composedPath) {\r\n return event.composedPath()\r\n }\r\n\r\n const _evt: any = event\r\n\r\n if (_evt.path) {\r\n return _evt.path\r\n }\r\n\r\n let t = _evt.target\r\n _evt.path = []\r\n while (t.parentNode !== null) {\r\n _evt.path.push(t)\r\n t = t.parentNode\r\n }\r\n\r\n _evt.path.push(document, window)\r\n return _evt.path\r\n}\r\n","import { Injectable } from '@angular/core'\r\nimport { DialogDisplayEnum } from '../util/types'\r\nimport { ColorPickerComponent } from './color-picker/color-picker.component'\r\n\r\n/**\r\n * @internal\r\n */\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ColorPickerService {\r\n\r\n private active?: ColorPickerComponent\r\n\r\n setActive(active: ColorPickerComponent) {\r\n if (active && active.dialogDisplay == DialogDisplayEnum.popup) {\r\n if (this.active && this.active != active) {\r\n this.active.closeDialog()\r\n }\r\n\r\n this.active = active\r\n }\r\n }\r\n}\r\n","import { Directive, ElementRef, inject, input, output } from '@angular/core'\r\nimport { CursorEvent } from '../util/helpers'\r\n\r\n/**\r\n * @internal\r\n */\r\n@Directive({\r\n selector: '[nxtSlider]',\r\n host: {\r\n '(mousedown)': 'onStart($event)',\r\n '(touchstart)': 'onStart($event)',\r\n '(document:mousemove)': 'onMove($event)',\r\n '(document:touchmove)': 'onMove($event)',\r\n '(document:mouseup)': 'onStop($event)',\r\n '(document:touchend)': 'onStop($event)'\r\n }\r\n})\r\nexport class SliderDirective {\r\n\r\n private isMoving = false\r\n\r\n readonly rgX = input<number>()\r\n readonly rgY = input<number>()\r\n\r\n readonly slider = input<string>(undefined, { alias: 'nxtSlider' })\r\n\r\n readonly dragEnd = output()\r\n readonly dragStart = output()\r\n\r\n readonly newValue = output<CursorEvent>()\r\n private readonly elRef = inject(ElementRef)\r\n\r\n onStart(event: MouseEvent | TouchEvent) {\r\n event.stopPropagation()\r\n event.preventDefault()\r\n\r\n this.setCursor(event)\r\n this.isMoving = true\r\n this.dragStart.emit(undefined)\r\n }\r\n\r\n onMove(event: MouseEvent | TouchEvent) {\r\n if (this.isMoving) {\r\n event.stopPropagation()\r\n event.preventDefault()\r\n\r\n this.setCursor(event)\r\n }\r\n }\r\n\r\n onStop(event: MouseEvent | TouchEvent) {\r\n if (this.isMoving) {\r\n event.stopPropagation()\r\n event.preventDefault()\r\n\r\n this.isMoving = false\r\n this.dragEnd.emit(undefined)\r\n }\r\n }\r\n\r\n private getX(event: MouseEvent | TouchEvent) {\r\n const position = this.elRef.nativeElement.getBoundingClientRect()\r\n\r\n const pageX = 'pageX' in event ? event.pageX : event.touches[0].pageX\r\n\r\n return pageX - position.left - window.scrollX\r\n }\r\n\r\n private getY(event: MouseEvent | TouchEvent) {\r\n const position = this.elRef.nativeElement.getBoundingClientRect()\r\n\r\n const pageY = 'pageX' in event ? event.pageY : event.touches[0].pageY\r\n\r\n return pageY - position.top - window.scrollY\r\n }\r\n\r\n private setCursor(event: MouseEvent | TouchEvent) {\r\n const width = this.elRef.nativeElement.offsetWidth\r\n const height = this.elRef.nativeElement.offsetHeight\r\n\r\n const x = Math.max(0, Math.min(this.getX(event), width))\r\n const y = Math.max(0, Math.min(this.getY(event), height))\r\n\r\n const rgX = this.rgX()\r\n const rgY = this.rgY()\r\n if (rgX != undefined && rgY != undefined) {\r\n this.newValue.emit({ s: x / width, v: (1 - y / height), rgX, rgY })\r\n } else if (rgX == undefined && rgY != undefined) {\r\n this.newValue.emit({ v: y / height, rgY })\r\n } else if (rgX != undefined && rgY == undefined) {\r\n this.newValue.emit({ v: x / width, rgX })\r\n }\r\n }\r\n}\r\n","import { Directive, input, output } from '@angular/core'\r\nimport { TextEvent } from '../util/helpers'\r\n\r\n/**\r\n * @internal\r\n */\r\n@Directive({\r\n selector: '[nxtText]',\r\n host: {\r\n '(input)': 'inputChange($event)',\r\n '(change)': 'inputChange($event)'\r\n }\r\n})\r\nexport class TextDirective {\r\n\r\n readonly rg = input<number>()\r\n readonly text = input<any>(undefined, { alias: 'nxtText' })\r\n\r\n readonly newValue = output<TextEvent>()\r\n\r\n inputChange(event: Event) {\r\n const value = (((event?.target as HTMLInputElement | null)?.['value'] || '') + '').trim()\r\n\r\n const rg = this.rg()\r\n if (rg == undefined) {\r\n this.newValue.emit(value)\r\n } else {\r\n const numeric = parseFloat(value)\r\n this.newValue.emit({ v: numeric, rg })\r\n }\r\n }\r\n}\r\n","import { AfterViewChecked, Component, ElementRef, inject, OnDestroy, OnInit, ViewEncapsulation } from '@angular/core'\r\nimport { cmykToRgb, denormalizeCMYK, denormalizeHSLA, denormalizeRGBA, formatCmyk, formatOutput, hslaToHsva, hsvaToHsla, hsvaToRgba, rgbaToCmyk, rgbaToHex, rgbaToHsva, stringToCmyk, stringToHsva } from '../../util/color'\r\nimport { opaqueSliderLight, transparentSliderLight } from '../../util/contrast'\r\nimport { Cmyk, Hsla, Hsva, Rgba } from '../../util/formats'\r\nimport { ColorModeInternal, composedPath, CursorEvent, DialogConfig, DirectiveCallbacks, parseColorMode, sizeToString, SliderPosition, TextEvent } from '../../util/helpers'\r\nimport { AlphaChannel, AlphaChannelEnum, AlphaEnabledFormats, ColorFormat, ColorFormatEnum, DialogDisplay, DialogDisplayEnum, OutputFormat, OutputFormatEnum } from '../../util/types'\r\nimport { ColorPickerService } from '../color-picker.service'\r\nimport { SliderDirective } from '../slider.directive'\r\nimport { TextDirective } from '../text.directive'\r\n\r\n/**\r\n * @internal\r\n */\r\n@Component({\r\n selector: 'nxt-color-picker',\r\n templateUrl: './color-picker.component.html',\r\n styleUrls: ['./color-picker.component.scss'],\r\n encapsulation: ViewEncapsulation.Emulated,\r\n imports: [\r\n SliderDirective,\r\n TextDirective\r\n ],\r\n host: {\r\n '(document:keyup.esc)': 'onCancel($event)',\r\n '(document:keyup.enter)': 'onAccept($event)',\r\n '(document:mousedown)': 'onFocusChange($event)',\r\n '(document:focusin)': 'onFocusChange($event)',\r\n '(click)': 'onClick($event)'\r\n }\r\n})\r\nexport class ColorPickerComponent implements OnInit, OnDestroy, AfterViewChecked {\r\n\r\n readonly colorModeInternal = ColorModeInternal\r\n\r\n private hsva?: Hsva\r\n private cmyk?: Cmyk\r\n\r\n private cmykColor = ''\r\n private outputColor = ''\r\n private initialColor = ''\r\n private fallbackColor?: string\r\n\r\n private sliderH?: number\r\n\r\n private dialogInputFields: ColorFormat[] = [\r\n ColorFormatEnum.hex,\r\n ColorFormatEnum.rgba,\r\n ColorFormatEnum.hsla,\r\n ColorFormatEnum.cmyk\r\n ]\r\n\r\n private callbacks?: DirectiveCallbacks\r\n\r\n show = false\r\n\r\n format: ColorFormat = ColorFormatEnum.hex\r\n slider?: SliderPosition\r\n\r\n hexText?: string\r\n hexAlpha?: number\r\n\r\n cmykText?: Cmyk\r\n hslaText?: Hsla\r\n rgbaText?: Rgba\r\n\r\n selectedColor = ''\r\n hueSliderColor?: string\r\n alphaSliderColor?: string\r\n\r\n svSliderLight = false\r\n hueSliderLight = false\r\n valueSliderLight = false\r\n alphaSliderLight = false\r\n\r\n width?: string\r\n height?: string\r\n\r\n mode: ColorModeInternal = ColorModeInternal.color\r\n\r\n cmykEnabled = false\r\n alphaChannel: AlphaChannel = AlphaChannelEnum.enabled\r\n outputFormat: OutputFormat = OutputFormatEnum.auto\r\n\r\n disableInput = false\r\n dialogDisplay?: DialogDisplay\r\n\r\n ignoredElements?: any[]\r\n\r\n saveClickOutside = false\r\n closeClickOutside = false\r\n\r\n okButton = false\r\n\r\n cancelButton = false\r\n\r\n presetLabel: boolean | string = false\r\n presetColors?: string[]\r\n maxPresetColors?: number\r\n\r\n presetColorsEditable: boolean = false\r\n private readonly elRef = inject(ElementRef)\r\n private readonly service = inject(ColorPickerService)\r\n\r\n onCancel(event: Event) {\r\n event.stopPropagation()\r\n event.preventDefault()\r\n\r\n if (this.initialColor) {\r\n this.setColorFromString(this.initialColor, true)\r\n }\r\n\r\n if (this.callbacks) {\r\n this.callbacks.colorSelectCanceled()\r\n }\r\n\r\n if (this.show && this.dialogDisplay == DialogDisplayEnum.popup) {\r\n this.closeColorPicker()\r\n }\r\n }\r\n\r\n onAccept(event: Event) {\r\n event.stopPropagation()\r\n event.preventDefault()\r\n\r\n if (this.show && this.dialogDisplay == DialogDisplayEnum.popup) {\r\n if (this.outputColor && this.callbacks) {\r\n this.callbacks.colorSelected(this.outputColor)\r\n }\r\n\r\n if (this.dialogDisplay == DialogDisplayEnum.popup) {\r\n this.closeColorPicker()\r\n }\r\n }\r\n }\r\n\r\n onClick(event: MouseEvent) {\r\n event.stopPropagation()\r\n }\r\n\r\n onFocusChange(event: MouseEvent | FocusEvent) {\r\n const path = new Set(composedPath(event))\r\n const intersect = this.ignoredElements?.find(el => path.has(el))\r\n\r\n if (!intersect) {\r\n if (this.show && this.dialogDisplay == DialogDisplayEnum.popup) {\r\n if (this.saveClickOutside) {\r\n if (this.outputColor && this.callbacks) {\r\n this.callbacks.colorSelected(this.outputColor)\r\n }\r\n } else {\r\n this.setColorFromString(this.initialColor, false)\r\n\r\n if (this.callbacks) {\r\n if (this.cmykEnabled) {\r\n this.callbacks.cmykChanged(this.cmykColor)\r\n }\r\n\r\n this.callbacks.colorChanged(this.initialColor)\r\n }\r\n }\r\n\r\n if (this.closeClickOutside) {\r\n this.closeColorPicker()\r\n }\r\n } else if (this.saveClickOutside && this.outputColor && this.callbacks) {\r\n this.callbacks.colorSelected(this.outputColor)\r\n }\r\n }\r\n }\r\n\r\n ngOnInit() {\r\n this.slider = new SliderPosition(0, 0, 0, 0)\r\n\r\n if (this.cmykEnabled) {\r\n this.format = ColorFormatEnum.cmyk\r\n } else if (this.outputFormat == OutputFormatEnum.rgba) {\r\n this.format = ColorFormatEnum.rgba\r\n } else if (this.outputFormat == OutputFormatEnum.hsla) {\r\n this.format = ColorFormatEnum.hsla\r\n } else {\r\n this.format = ColorFormatEnum.hex\r\n }\r\n\r\n this.openDialog(this.initialColor, false)\r\n }\r\n\r\n ngOnDestroy() {\r\n this.closeDialog()\r\n }\r\n\r\n ngAfterViewChecked() { }\r\n\r\n openDialog(color: any, emit: boolean = true) {\r\n this.service.setActive(this)\r\n\r\n this.setInitialColor(color)\r\n\r\n this.setColorFromString(color, emit)\r\n\r\n this.openColorPicker()\r\n }\r\n\r\n closeDialog() {\r\n this.closeColorPicker()\r\n }\r\n\r\n setupDialog(config: DialogConfig) {\r\n this.setInitialColor(config.color)\r\n\r\n this.mode = parseColorMode(config.mode())\r\n\r\n this.callbacks = config.callbacks\r\n\r\n this.disableInput = config.disableInput()\r\n\r\n this.cmykEnabled = config.cmykEnabled()\r\n this.alphaChannel = config.alphaChannel()\r\n this.outputFormat = config.outputFormat()\r\n this.dialogDisplay = config.dialogDisplay()\r\n\r\n this.ignoredElements = [\r\n ...config.ignoredElements() ?? [],\r\n this.elRef && this.elRef.nativeElement,\r\n config.elementRef && config.elementRef.nativeElement\r\n ].filter(e => !!e)\r\n\r\n this.saveClickOutside = config.saveClickOutside()\r\n this.closeClickOutside = config.closeClickOutside()\r\n\r\n this.width = sizeToString(config.width())\r\n this.height = sizeToString(config.height())\r\n\r\n this.okButton = config.okButton()\r\n\r\n this.cancelButton = config.cancelButton()\r\n\r\n this.fallbackColor = config.fallbackColor() || '#fff'\r\n\r\n this.setPresetConfig(config.presetLabel(), config.presetColors())\r\n\r\n this.maxPresetColors = config.maxPresetColors()\r\n\r\n this.presetColorsEditable = config.presetColorsEditable()\r\n\r\n if (config.outputFormat() == OutputFormatEnum.hex &&\r\n config.alphaChannel() != AlphaChannelEnum.always && config.alphaChannel() != AlphaChannelEnum.forced) {\r\n this.alphaChannel = AlphaChannelEnum.disabled\r\n }\r\n }\r\n\r\n setInitialColor(color: string) {\r\n this.initialColor = color\r\n this.setColorFromString(this.initialColor, false, true)\r\n }\r\n\r\n setPresetConfig(presetLabel: boolean | string, presetColors?: string[]) {\r\n this.presetLabel = presetLabel\r\n this.presetColors = presetColors\r\n }\r\n\r\n setColorFromString(value: string, emit: boolean = true, update: boolean = true) {\r\n let hsva = stringToHsva(value, true)\r\n let cmyk = stringToCmyk(value, true)\r\n\r\n if ((!hsva && !this.hsva) && (!cmyk && !this.cmyk)) {\r\n hsva = stringToHsva(this.fallbackColor, true)\r\n cmyk = stringToCmyk(this.fallbackColor, true)\r\n }\r\n\r\n if (hsva || cmyk) {\r\n if (this.alphaChannel == AlphaChannelEnum.disabled) {\r\n if (hsva)\r\n hsva.a = 1\r\n if (cmyk)\r\n cmyk.a = 1\r\n }\r\n\r\n this.hsva = hsva\r\n this.cmyk = cmyk\r\n\r\n this.sliderH = this.hsva?.h\r\n\r\n this.updateColorPicker(emit, update, (cmyk && this.cmykEnabled))\r\n }\r\n }\r\n\r\n stringToRgba(value: string) {\r\n const hsva = stringToHsva(value, true)\r\n if (hsva)\r\n return formatOutput(hsva, OutputFormatEnum.rgba, AlphaChannelEnum.enabled)\r\n\r\n return undefined\r\n }\r\n\r\n onDragEnd(slider: string) {\r\n if (this.callbacks) {\r\n this.callbacks.sliderDragEnd({ slider, color: this.outputColor })\r\n }\r\n }\r\n\r\n onDragStart(slider: string) {\r\n if (this.callbacks) {\r\n this.callbacks.sliderDragStart({ slider, color: this.outputColor })\r\n }\r\n }\r\n\r\n onFormatToggle(change: number) {\r\n const availableFormats = this.dialogInputFields.length - (this.cmykEnabled ? 0 : 1)\r\n\r\n const nextFormat = (((this.dialogInputFields.indexOf(this.format) + change) %\r\n availableFormats) + availableFormats) % availableFormats\r\n\r\n this.format = this.dialogInputFields[nextFormat]\r\n }\r\n\r\n onColorChange(value: CursorEvent) {\r\n if ('rgX' in value && 'rgY' in value) {\r\n if (this.hsva) {\r\n this.hsva.s = value.s / value.rgX\r\n this.hsva.v = value.v / value.rgY\r\n }\r\n\r\n this.updateColorPicker()\r\n\r\n if (this.callbacks) {\r\n this.callbacks.sliderChanged({\r\n slider: 'lightness',\r\n value: this.hsva?.v,\r\n color: this.outputColor\r\n })\r\n }\r\n\r\n if (this.callbacks) {\r\n this.callbacks.sliderChanged({\r\n slider: 'saturation',\r\n value: this.hsva?.s,\r\n color: this.outputColor\r\n })\r\n }\r\n }\r\n }\r\n\r\n onHueChange(value: CursorEvent) {\r\n if ('v' in value && 'rgX' in value) {\r\n if (this.hsva)\r\n this.hsva.h = value.v / value.rgX\r\n this.sliderH = this.hsva?.h\r\n\r\n this.updateColorPicker()\r\n\r\n if (this.callbacks) {\r\n this.callbacks.sliderChanged({\r\n slider: 'hue',\r\n value: this.hsva?.h,\r\n color: this.outputColor\r\n })\r\n }\r\n }\r\n }\r\n\r\n onValueChange(value: CursorEvent) {\r\n if ('v' in value && 'rgX' in value) {\r\n if (this.hsva)\r\n this.hsva.v = value.v / value.rgX\r\n\r\n this.updateColorPicker()\r\n\r\n if (this.callbacks) {\r\n this.callbacks.sliderChanged({\r\n slider: 'value',\r\n value: this.hsva?.v,\r\n color: this.outputColor\r\n })\r\n }\r\n }\r\n }\r\n\r\n onAlphaChange(value: CursorEvent) {\r\n if ('v' in value && 'rgX' in value) {\r\n if (this.hsva)\r\n this.hsva.a = value.v / value.rgX\r\n\r\n this.updateColorPicker()\r\n\r\n if (this.callbacks) {\r\n this.callbacks.sliderChanged({\r\n slider: 'alpha',\r\n value: this.hsva?.a,\r\n color: this.outputColor\r\n })\r\n }\r\n }\r\n }\r\n\r\n onHexInput(value?: TextEvent) {\r\n if (typeof value == 'string') {\r\n if (value && value[0] != '#') {\r\n value = '#' + value\r\n }\r\n\r\n const validHex = /^#([a-f0-9]{3}|[a-f0-9]{6}|[a-f0-9]{8})$/gi\r\n\r\n const valid = validHex.test(value)\r\n\r\n if (valid) {\r\n // Short hex\r\n if (value.length == 4) {\r\n value = '#' + value.substring(1)\r\n .split('')\r\n .map(c => c + c)\r\n .join('')\r\n }\r\n\r\n // Hex without alpha\r\n if (value.length == 7 && this.alphaChannel == AlphaChannelEnum.forced) {\r\n value += ((this.hsva?.a || 0) * 255).toString(16)\r\n }\r\n\r\n this.setColorFromString(value, true, false)\r\n }\r\n\r\n if (this.callbacks) {\r\n this.callbacks.inputChanged({\r\n input: 'hex',\r\n valid,\r\n value,\r\n color: this.outputColor\r\n })\r\n }\r\n } else {\r\n this.updateColorPicker()\r\n }\r\n }\r\n\r\n onRedInput(value: TextEvent) {\r\n if (typeof value != 'string') {\r\n const rgba = this.hsva ? hsvaToRgba(this.hsva) : new Rgba(0, 0, 0, 0, true)\r\n\r\n const valid = !isNaN(value.v) && value.v >= 0 && value.v <= value.rg\r\n\r\n if (valid) {\r\n rgba.r = value.v / value.rg\r\n\r\n this.hsva = rgbaToHsva(rgba)\r\n\r\n this.sliderH = this.hsva.h\r\n\r\n this.updateColorPicker()\r\n }\r\n\r\n if (this.callbacks) {\r\n this.callbacks.inputChanged({\r\n input: 'red',\r\n valid,\r\n value: rgba.r,\r\n color: this.outputColor\r\n })\r\n }\r\n }\r\n }\r\n\r\n onBlueInput(value: TextEvent) {\r\n if (typeof value != 'string') {\r\n const rgba = this.hsva ? hsvaToRgba(this.hsva) : new Rgba(0, 0, 0, 0, true)\r\n\r\n const valid = !isNaN(value.v) && value.v >= 0 && value.v <= value.rg\r\n\r\n if (valid) {\r\n rgba.b = value.v / value.rg\r\n\r\n this.hsva = rgbaToHsva(rgba)\r\n\r\n this.sliderH = this.hsva.h\r\n\r\n this.updateColorPicker()\r\n }\r\n\r\n if (this.callbacks) {\r\n this.callbacks.inputChanged({\r\n input: 'blue',\r\n valid,\r\n value: rgba.b,\r\n color: this.outputColor\r\n })\r\n }\r\n }\r\n }\r\n\r\n onGreenInput(value: TextEvent) {\r\n if (typeof value != 'string') {\r\n const rgba = this.hsva ? hsvaToRgba(this.hsva) : new Rgba(0, 0, 0, 0, true)\r\n\r\n const valid = !isNaN(value.v) && value.v >= 0 && value.v <= value.rg\r\n\r\n if (valid) {\r\n rgba.g = value.v / value.rg\r\n\r\n this.hsva = rgbaToHsva(rgba)\r\n\r\n this.sliderH = this.hsva.h\r\n\r\n this.updateColorPicker()\r\n }\r\n\r\n if (this.callbacks) {\r\n this.callbacks.inputChanged({\r\n input: 'green',\r\n valid,\r\n value: rgba.g,\r\n color: this.outputColor\r\n })\r\n }\r\n }\r\n }\r\n\r\n onHueInput(value: TextEvent) {\r\n if (typeof value != 'string') {\r\n const valid = !isNaN(value.v) && value.v >= 0 && value.v <= value.rg\r\n\r\n this.hsva = this.hsva || new Hsva(0, 0, 0, 0, true)\r\n\r\n if (valid) {\r\n this.hsva.h = value.v / value.rg\r\n\r\n this.sliderH = this.hsva.h\r\n\r\n this.updateColorPicker()\r\n }\r\n\r\n if (this.callbacks) {\r\n this.callbacks.inputChanged({\r\n input: 'hue',\r\n valid,\r\n value: this.hsva.h,\r\n color: this.outputColor\r\n })\r\n }\r\n }\r\n }\r\n\r\n onValueInput(value: TextEvent) {\r\n if (typeof value != 'string') {\r\n const valid = !isNaN(value.v) && value.v >= 0 && value.v <= value.rg\r\n\r\n this.hsva = this.hsva || new Hsva(0, 0, 0, 0, true)\r\n\r\n if (valid) {\r\n this.hsva.v = value.v / value.rg\r\n\r\n this.updateColorPicker()\r\n }\r\n\r\n if (this.callbacks) {\r\n this.callbacks.inputChanged({\r\n input: 'value',\r\n valid,\r\n value: this.hsva.v,\r\n color: this.outputColor\r\n })\r\n }\r\n }\r\n }\r\n\r\n onAlphaInput(value: TextEvent) {\r\n if (typeof value != 'string') {\r\n const valid = !isNaN(value.v) && value.v >= 0 && value.v <= value.rg\r\n\r\n this.hsva = this.hsva || new Hsva(0, 0, 0, 0, true)\r\n\r\n if (valid) {\r\n this.hsva.a = value.v / value.rg\r\n\r\n this.updateColorPicker()\r\n }\r\n\r\n if (this.callbacks) {\r\n this.callbacks.inputChanged({\r\n input: 'alpha',\r\n valid,\r\n value: this.hsva.a,\r\n color: this.outputColor\r\n })\r\n }\r\n }\r\n }\r\n\r\n onLightnessInput(value: TextEvent) {\r\n if (typeof value != 'string') {\r\n const hsla = this.hsva ? hsvaToHsla(this.hsva) : new Hsla(0, 0, 0, 0, true)\r\n\r\n const valid = !isNaN(value.v) && value.v >= 0 && value.v <= value.rg\r\n\r\n if (valid) {\r\n hsla.l = value.v / value.rg\r\n\r\n this.hsva = hslaToHsva(hsla)\r\n\r\n this.sliderH = this.hsva.h\r\n\r\n this.updateColorPicker()\r\n }\r\n\r\n if (this.callbacks) {\r\n this.callbacks.inputChanged({\r\n input: 'lightness',\r\n valid,\r\n value: hsla.l,\r\n color: this.outputColor\r\n })\r\n }\r\n }\r\n }\r\n\r\n onSaturationInput(value: TextEvent) {\r\n if (typeof value != 'string') {\r\n const hsla = this.hsva ? hsvaToHsla(this.hsva) : new Hsla(0, 0, 0, 0, true)\r\n\r\n const valid = !isNaN(value.v) && value.v >= 0 && value.v <= value.rg\r\n\r\n if (valid) {\r\n hsla.s = value.v / value.rg\r\n\r\n this.hsva = hslaToHsva(hsla)\r\n\r\n this.sliderH = this.hsva.h\r\n\r\n this.updateColorPicker()\r\n }\r\n\r\n if (this.callbacks) {\r\n this.callbacks.inputChanged({\r\n input: 'saturation',\r\n valid,\r\n value: hsla.s,\r\n color: this.outputColor\r\n })\r\n }\r\n }\r\n }\r\n\r\n onCyanInput(value: TextEvent) {\r\n if (typeof value != 'string') {\r\n const valid = !isNaN(value.v) && value.v >= 0 && value.v <= value.rg\r\n\r\n this.cmyk = this.cmyk || new Cmyk(0, 0, 0, 0, 0, true)\r\n\r\n if (valid) {\r\n this.cmyk.c = value.v / value.rg\r\n\r\n this.updateColorPicker(true, true, true)\r\n }\r\n\r\n if (this.callbacks) {\r\n this.callbacks.inputChanged({\r\n input: 'cyan',\r\n valid: true,\r\n value: this.cmyk.c,\r\n color: this.outputColor\r\n })\r\n }\r\n }\r\n }\r\n\r\n onMagentaInput(value: TextEvent) {\r\n if (typeof value != 'string') {\r\n const valid = !isNaN(value.v) && value.v >= 0 && value.v <= value.rg\r\n\r\n this.cmyk = this.cmyk || new Cmyk(0, 0, 0, 0, 0, true)\r\n\r\n if (valid) {\r\n this.cmyk.m = value.v / value.rg\r\n\r\n this.updateColorPicker(true, true, true)\r\n }\r\n\r\n if (this.callbacks) {\r\n this.callbacks.inputChanged({\r\n input: 'magenta',\r\n valid: true,\r\n value: this.cmyk.m,\r\n color: this.outputColor\r\n })\r\n }\r\n }\r\n }\r\n\r\n onYellowInput(value: TextEvent) {\r\n if (typeof value != 'string') {\r\n const valid = !isNaN(value.v) && value.v >= 0 && value.v <= value.rg\r\n\r\n this.cmyk = this.cmyk || new Cmyk(0, 0, 0, 0, 0, true)\r\n\r\n if (valid) {\r\n this.cmyk.y = value.v / value.rg\r\n\r\n this.updateColorPicker(true, true, true)\r\n }\r\n\r\n if (this.callbacks) {\r\n this.callbacks.inputChanged({\r\n input: 'yellow',\r\n valid: true,\r\n value: this.cmyk.y,\r\n color: this.outputColor\r\n })\r\n }\r\n }\r\n }\r\n\r\n onBlackInput(value: TextEvent) {\r\n if (typeof value != 'string') {\r\n const valid = !isNaN(value.v) && value.v >= 0 && value.v <= value.rg\r\n\r\n this.cmyk = this.cmyk || new Cmyk(0, 0, 0, 0, 0, true)\r\n\r\n if (valid) {\r\n this.cmyk.k = value.v / value.rg\r\n\r\n this.updateColorPicker(true, true, true)\r\n }\r\n\r\n if (this.callbacks) {\r\n this.callbacks.inputChanged({\r\n input: 'black',\r\n valid: true,\r\n value: this.cmyk.k,\r\n color: this.outputColor\r\n })\r\n }\r\n }\r\n }\r\n\r\n onAddPresetColor(value: string) {\r\n if (!this.presetColors?.filter((color) => (color == value)).length) {\r\n this.presetColors = this.presetColors?.concat(value)\r\n\r\n if (this.callbacks) {\r\n this.callbacks.presetColorsChanged(this.presetColors)\r\n }\r\n }\r\n }\r\n\r\n onRemovePresetColor(value: string) {\r\n this.presetColors = this.presetColors?.filter((color) => (color != value))\r\n\r\n if (this.callbacks) {\r\n this.callbacks.presetColorsChanged(this.presetColors)\r\n }\r\n }\r\n\r\n // Private helper functions for the color picker dialog status\r\n\r\n private openColorPicker() {\r\n if (!this.show) {\r\n this.show = true\r\n\r\n if (this.callbacks) {\r\n this.callbacks.stateChanged(true)\r\n }\r\n }\r\n }\r\n\r\n private closeColorPicker() {\r\n if (this.show) {\r\n this.show = false\r\n\r\n if (this.callbacks) {\r\n this.callbacks.stateChanged(false)\r\n }\r\n }\r\n }\r\n\r\n private updateColorPicker(emit: boolean = true, update: boolean = true, cmykInput: boolean = false) {\r\n this.hsva = this.hsva || new Hsva(0, 0, 0, 0, true)\r\n this.cmyk = this.cmyk || new Cmyk(0, 0, 0, 0, 0, true)\r\n\r\n if (this.mode == ColorModeInternal.grayscale) {\r\n this.hsva.s = 0\r\n }\r\n\r\n const lastOutput = this.outputColor\r\n\r\n const hsla = hsvaToHsla(this.hsva)\r\n\r\n if (this.cmykEnabled) {\r\n if (!cmykInput) {\r\n this.cmyk = rgbaToCmyk(hsvaToRgba(this.hsva))\r\n } else {\r\n this.hsva = rgbaToHsva(cmykToRgb(this.cmyk))\r\n }\r\n\r\n this.sliderH = this.hsva.h\r\n }\r\n\r\n const hue = new Hsva(this.sliderH || this.hsva.h, 1, 1, 1, true)\r\n\r\n const rgba = hsvaToRgba(this.hsva)\r\n\r\n if (update) {\r\n this.hslaText = denormalizeHSLA(hsla)\r\n this.rgbaText = denormalizeRGBA(rgba)\r\n\r\n if (this.cmykEnabled) {\r\n this.cmykText = denormalizeCMYK(this.cmyk)\r\n }\r\n\r\n const allowHex8 = this.alphaChannel === AlphaChannelEnum.always\r\n\r\n this.hexText = rgbaToHex(rgba, allowHex8)\r\n this.hexAlpha = this.rgbaText.a\r\n }\r\n\r\n if (this.outputFormat == OutputFormatEnum.auto && this.hsva.a < 1 && !AlphaEnabledFormats.has(this.format)) {\r\n this.format = this.hsva.a < 1 ? ColorFormatEnum.rgba : ColorFormatEnum.hex\r\n }\r\n\r\n const hsvaTransparent = new Hsva(\r\n this.hsva.h,\r\n this.hsva.s,\r\n this.hsva.v,\r\n 0,\r\n this.hsva.normalized\r\n )\r\n\r\n const hsvaFull = new Hsva(\r\n this.hsva.h,\r\n this.hsva.s,\r\n this.hsva.v,\r\n 1,\r\n this.hsva.normalized\r\n )\r\n\r\n this.hueSliderColor = formatOutput(hue, 'auto', 'disabled')\r\n this.alphaSliderColor = 'linear-gradient(to right, ' + formatOutput(hsvaTransparent, 'auto', 'forced') + ' 0%, ' + formatOutput(hsvaFull, 'auto', 'disabled') + ' 100%)'\r\n\r\n this.svSliderLight = opaqueSliderLight(rgba)\r\n this.hueSliderLight = opaqueSliderLight(hsvaToRgba(hue))\r\n this.valueSliderLight = opaqueSliderLight(rgba)\r\n this.alphaSliderLight = transparentSliderLight(rgba)\r\n\r\n this.outputColor = formatOutput(this.hsva, this.outputFormat, this.alphaChannel)\r\n this.selectedColor = formatOutput(this.hsva, OutputFormatEnum.rgba)\r\n\r\n if (this.format !== ColorFormatEnum.cmyk) {\r\n this.cmykColor = ''\r\n } else {\r\n this.cmykColor = formatCmyk(this.cmyk, this.alphaChannel)\r\n }\r\n\r\n this.slider = new SliderPosition(\r\n (this.sliderH || this.hsva.h),\r\n this.hsva.s,\r\n (1 - this.hsva.v),\r\n this.hsva.a\r\n )\r\n\r\n if (emit && lastOutput != this.outputColor && this.callbacks) {\r\n if (this.cmykEnabled) {\r\n this.callbacks.cmykChanged(this.cmykColor)\r\n }\r\n\r\n this.callbacks.colorChanged(this.outputColor)\r\n }\r\n }\r\n\r\n fill(n: number) {\r\n return new Array(n).fill(1)\r\n }\r\n\r\n formatAlpha(a?: number) {\r\n return a?.toFixed(2).replace(/\\.?0+$/, '')\r\n }\r\n}\r\n","@if (show) {\r\n<div class=\"color-picker\"\r\n [style]=\"{\r\n visibility: !show ? 'hidden' : 'visible',\r\n width: width || '',\r\n height: height || ''\r\n }\">\r\n @if (dialogDisplay == 'popup') {\r\n <div class=\"color-picker__arrow\"></div>\r\n }\r\n @if (mode == colorModeInternal.color) {\r\n <div class=\"color-picker__sv\"\r\n nxtSlider\r\n [rgX]=\"1\"\r\n [rgY]=\"1\"\r\n (newValue)=\"onColorChange($event)\"\r\n (dragStart)=\"onDragStart('saturation-lightness')\"\r\n (dragEnd)=\"onDragEnd('saturation-lightness')\"\r\n [style.backgroundColor]=\"hueSliderColor || ''\">\r\n <div class=\"color-picker__cursor color-picker__cursor--sv\"\r\n [class.color-picker__cursor--light]=\"svSliderLight\"\r\n [style]=\"{\r\n top: (slider?.v || 0) * 100 + '%',\r\n left: (slider?.s || 0) * 100 + '%'\r\n }\"></div>\r\n </div>\r\n }\r\n <div class=\"color-picker__controls\">\r\n <div class=\"color-picker__selected\">\r\n <div class=\"color-picker__selected-color\">\r\n <div [style.backgroundColor]=\"selectedColor || ''\">@if (presetColorsEditable && !(maxPresetColors && (presetColors?.length || 0) >= maxPresetColors)) {\r\n <button type=\"button\"\r\n title=\"Add color to preset\"\r\n i18n-title=\"@@nxt-color-picker.button.add-color\"\r\n class=\"color-picker__add-selected\"\r\n [class.color-picker__add-selected--light]=\"alphaSliderLight\"\r\n (click)=\"onAddPresetColor(selectedColor)\"><svg xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"24\"\r\n height=\"24\"\r\n viewBox=\"0 0 24 24\">\r\n <path d=\"M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z\" />\r\n <path d=\"M0 0h24v24H0z\"\r\n fill=\"none\" />\r\n </svg></button>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"color-picker__hav\">\r\n @if (mode == colorModeInternal.color) {\r\n <div class=\"color-picker__slider color-picker__slider--hue\"\r\n nxtSlider\r\n [rgX]=\"1\"\r\n (newValue)=\"onHueChange($event)\"\r\n (dragStart)=\"onDragStart('hue')\"\r\n (dragEnd)=\"onDragEnd('hue')\">\r\n <div class=\"color-picker__cursor\"\r\n [class.color-picker__cursor--light]=\"hueSliderLight\"\r\n [style.left]=\"(slider?.h || 0) * 100 + '%'\"></div>\r\n </div>\r\n }\r\n @if (mode == colorModeInternal.grayscale) {\r\n <div class=\"color-picker__slider color-picker__slider--value\"\r\n nxtSlider\r\n [rgX]=\"1\"\r\n (newValue)=\"onValueChange($event)\"\r\n (dragStart)=\"onDragStart('value')\"\r\n (dragEnd)=\"onDragEnd('value')\">\r\n <div class=\"color-picker__cursor\"\r\n [class.color-picker__cursor--light]=\"valueSliderLight\"\r\n [style.left]=\"(1 - (slider?.v || 0)) * 100 + '%'\"></div>\r\n </div>\r\n }\r\n @if (alphaChannel != 'disabled') {\r\n <div class=\"color-picker__slider color-picker__slider--alpha\"\r\n nxtSlider\r\n [rgX]=\"1\"\r\n (newValue)=\"onAlphaChange($event)\"\r\n (dragStart)=\"onDragStart('alpha')\"\r\n (dragEnd)=\"onDragEnd('alpha')\">\r\n <div class=\"color-picker__slider--alpha-bg\"\r\n [style.backgroundImage]=\"alphaSliderColor || ''\">\r\n <div class=\"color-picker__cursor\"\r\n [class.color-picker__cursor--light]=\"alphaSliderLight\"\r\n [style.left]=\"(slider?.a || 0) * 100 + '%'\"></div>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n @if (!disableInput && (mode == colorModeInternal.color || mode == colorModeInternal.grayscale)) {\r\n <div class=\"color-picker__inputs\">\r\n <div class=\"color-picker__input-fields\">\r\n @if (mode == colorModeInternal.grayscale) {\r\n <div class=\"color-picker__input-field\">\r\n <input type=\"number\"\r\n pattern=\"[0-9]*\"\r\n min=\"0\"\r\n max=\"100\"\r\n nxtText\r\n [rg]=\"100\"\r\n [value]=\"hslaText?.l?.toFixed(0)\"\r\n (keyup.enter)=\"onAccept($event)\"\r\n (newValue)=\"onValueInput($event)\" />\r\n <span class=\"color-picker__input-field-label\">V</span>\r\n </div>\r\n @if (alphaChannel != 'disabled') {\r\n <div class=\"color-picker__input-field\">\r\n <input type=\"number\"\r\n pattern=\"[0-9]+([\\.,][0-9]{1,2})?\"\r\n min=\"0\"\r\n max=\"1\"\r\n step=\"0.01\"\r\n nxtText\r\n [rg]=\"1\"\r\n [value]=\"formatAlpha(hslaText?.a)\"\r\n (keyup.enter)=\"onAccept($event)\"\r\n (newValue)=\"onAlphaInput($event)\" />\r\n <span class=\"color-picker__input-field-label\">A</span>\r\n </div>\r\n }\r\n } @else {\r\n @switch (format) {\r\n @case ('hsla') {\r\n <div class=\"color-picker__input-field\">\r\n <input type=\"number\"\r\n pattern=\"[0-9]*\"\r\n min=\"0\"\r\n max=\"360\"\r\n nxtText\r\n [rg]=\"360\"\r\n [value]=\"hslaText?.h?.toFixed(0)\"\r\n (keyup.enter)=\"onAccept($event)\"\r\n (newValue)=\"onHueInput($event)\" />\r\n <span class=\"color-picker__input-field-label\">H</span>\r\n </div>\r\n <div class=\"color-picker__input-field\">\r\n <input type=\"number\"\r\n pattern=\"[0-9]*\"\r\n min=\"0\"\r\n max=\"100\"\r\n nxtText\r\n [rg]=\"100\"\r\n [value]=\"hslaText?.s?.toFixed(0)\"\r\n (keyup.enter)=\"onAccept($event)\"\r\n (newValue)=\"onSaturationInput($event)\" />\r\n <span class=\"color-picker__input-field-label\">S</span>\r\n </div>\r\n <div class=\"color-picker__input-field\">\r\n <input type=\"number\"\r\n pattern=\"[0-9]*\"\r\n min=\"0\"\r\n max=\"100\"\r\n nxtText\r\n [rg]=\"100\"\r\n [value]=\"hslaText?.l?.toFixed(0)\"\r\n (keyup.enter)=\"onAccept($event)\"\r\n (newValue)=\"onLightnessInput($event)\" />\r\n <span class=\"color-picker__input-field-label\">L</span>\r\n </div>\r\n @if (alphaChannel != 'disabled') {\r\n <div class=\"color-picker__input-field\">\r\n <input type=\"number\"\r\n pattern=\"[0-9]+([\\.,][0-9]{1,2})?\"\r\n min=\"0\"\r\n max=\"1\"\r\n step=\"0.01\"\r\n nxtText\r\n [rg]=\"1\"\r\n [value]=\"formatAlpha(hslaText?.a)\"\r\n (keyup.enter)=\"onAccept($event)\"\r\n (newValue)=\"onAlphaInput($event)\" />\r\n <span class=\"color-picker__input-field-label\">A</span>\r\n </div>\r\n }\r\n }\r\n @case ('rgba') {\r\n <div class=\"color-picker__input-field\">\r\n <input type=\"number\"\r\n pattern=\"[0-9]*\"\r\n min=\"0\"\r\n max=\"255\"\r\n nxtText\r\n [rg]=\"255\"\r\n [value]=\"rgbaText?.r?.toFixed(0)\"\r\n (keyup.enter)=\"onAccept($event)\"\r\n (newValue)=\"onRedInput($event)\" />\r\n <span class=\"color-picker__input-field-label\">R</span>\r\n </div>\r\n <div class=\"color-picker__input-field\">\r\n <input type=\"number\"\r\n pattern=\"[0-9]*\"\r\n min=\"0\"\r\n max=\"255\"\r\n nxtText\r\n [rg]=\"255\"\r\n [value]=\"rgbaText?.g?.toFixed(0)\"\r\n (keyup.enter)=\"onAccept($event)\"\r\n (newValue)=\"onGreenInput($event)\" />\r\n <span class=\"color-picker__input-field-label\">G</span>\r\n </div>\r\n <div class=\"color-picker__input-field\">\r\n <input type=\"number\"\r\n pattern=\"[0-9]*\"\r\n min=\"0\"\r\n max=\"255\"\r\n nxtText\r\n [rg]=\"255\"\r\n [value]=\"rgbaText?.b?.toFixed(0)\"\r\n (keyup.enter)=\"onAccept($event)\"\r\n (newValue)=\"onBlueInput($event)\" />\r\n <span class=\"color-picker__input-field-label\">B</span>\r\n </div>\r\n @if (alphaChannel != 'disabled') {\r\n <div class=\"color-picker__input-field\">\r\n <input type=\"number\"\r\n pattern=\"[0-9]+([\\.,][0-9]{1,2})?\"\r\n min=\"0\"\r\n max=\"1\"\r\n step=\"0.01\"\r\n nxtText\r\n [rg]=\"1\"\r\n [value]=\"formatAlpha(hslaText?.a)\"\r\n (keyup.enter)=\"onAccept($event)\"\r\n (newValue)=\"onAlphaInput($event)\" />\r\n <span class=\"color-picker__input-field-label\">A</span>\r\n </div>\r\n }\r\n }\r\n @case ('cmyk') {\r\n <div class=\"color-picker__input-field\">\r\n <input type=\"number\"\r\n pattern=\"[0-9]*\"\r\n min=\"0\"\r\n max=\"100\"\r\n nxtText\r\n [rg]=\"100\"\r\n [value]=\"cmykText?.c?.toFixed(0)\"\r\n (keyup.enter)=\"onAccept($event)\"\r\n (newValue)=\"onCyanInput($event)\" />\r\n <span class=\"color-picker__input-field-label\">C</span>\r\n </div>\r\n <div class=\"color-picker__input-field\">\r\n <input type=\"number\"\r\n pattern=\"[0-9]*\"\r\n min=\"0\"\r\n max=\"100\"\r\n nxtText\r\n [rg]=\"100\"\r\n [value]=\"cmykText?.m?.toFixed(0)\"\r\n (keyup.enter)=\"onAccept($event)\"\r\n (newValue)=\"onMagentaInput($event)\" />\r\n <span class=\"color-picker__input-field-label\">M</span>\r\n </div>\r\n <div class=\"color-picker__input-field\">\r\n <input type=\"number\"\r\n pattern=\"[0-9]*\"\r\n min=\"0\"\r\n max=\"100\"\r\n nxtText\r\n [rg]=\"100\"\r\n [value]=\"cmykText?.y?.toFixed(0)\"\r\n (keyup.enter)=\"onAccept($event)\"\r\n (newValue)=\"onYellowInput($event)\" />\r\n <span class=\"color-picker__input-field-label\">Y</span>\r\n </div>\r\n <div class=\"color-picker__input-field\">\r\n <input type=\"number\"\r\n pattern=\"[0-9]*\"\r\n min=\"0\"\r\n max=\"100\"\r\n nxtText\r\n [rg]=\"100\"\r\n [value]=\"cmykText?.k?.toFixed(0)\"\r\n (keyup.enter)=\"onAccept($event)\"\r\n (newValue)=\"onBlackInput($event)\" />\r\n <span class=\"color-picker__input-field-label\">K</span>\r\n </div>\r\n @if (alphaChannel != 'disabled') {\r\n <div class=\"color-picker__input-field\">\r\n <input type=\"number\"\r\n pattern=\"[0-9]+([\\.,][0-9]{1,2})?\"\r\n min=\"0\"\r\n max=\"1\"\r\n step=\"0.01\"\r\n nxtText\r\n [rg]=\"1\"\r\n [value]=\"formatAlpha(cmykText?.a)\"\r\n (keyup.enter)=\"onAccept($event)\"\r\n (newValue)=\"onAlphaInput($event)\" />\r\n <span class=\"color-picker__input-field-label\">A</span>\r\n </div>\r\n }\r\n }\r\n @default {\r\n <div class=\"color-picker__input-field\">\r\n <input nxtText\r\n [value]=\"hexText\"\r\n (blur)=\"onHexInput()\"\r\n (keyup.enter)=\"onAccept($event)\"\r\n (newValue)=\"onHexInput($event)\" />\r\n <span class=\"color-picker__input-field-label\">Hex</span>\r\n </div>\r\n @if (alphaChannel == 'forced') {\r\n <div class=\"color-picker__input-field\">\r\n <input type=\"number\"\r\n pattern=\"[0-9]+([\\.,][0-9]{1,2})?\"\r\n min=\"0\"\r\n max=\"1\"\r\n step=\"0.01\"\r\n nxtText\r\n [rg]=\"1\"\r\n [value]=\"formatAlpha(hexAlpha)\"\r\n (keyup.enter)=\"onAccept($event)\"\r\n (newValue)=\"onAlphaInput($event)\" />\r\n <span class=\"color-picker__input-field-label\">A</span>\r\n </div>\r\n }\r\n }\r\n }\r\n }\r\n </div>\r\n @if (mode == colorModeInternal.color) {\r\n <div class=\"color-picker__input-type\">\r\n <span class=\"color-picker__input-type-arrow\"\r\n (click)=\"onFormatToggle(1)\"\r\n tabindex=\"0\"\r\n (keydown.enter)=\"onFormatToggle(1)\"></span>\r\n <span class=\"color-picker__input-type-arrow\"\r\n (click)=\"onFormatToggle(-1)\"\r\n tabindex=\"0\"\r\n (keydown.enter)=\"onFormatToggle(-1)\"></span>\r\n </div>\r\n }\r\n </div>\r\n }\r\n @if (presetColors?.length) {\r\n <div class=\"color-picker__separator\"></div>\r\n <div class=\"color-picker__preset\">\r\n @if (presetLabel) {\r\n <div class=\"color-picker__preset-label\">\r\n @if (presetLabel === true) {\r\n <ng-container i18n=\"@@nxt-color-picker.preset-colors\">Preset colors</ng-container>\r\n } @else {\r\n {{ presetLabel }}\r\n }\r\n </div>\r\n }\r\n @if (presetColors?.length) {\r\n <div class=\"color-picker__preset-items\">\r\n @for (color of presetColors; track color) {\r\n @if (stringToRgba(color); as rgba) {\r\n <div class=\"color-picker__preset-item\"\r\n [title]=\"color\"\r\n (click)=\"setColorFromString(color)\"\r\n tabindex=\"0\"\r\n (keydown.enter)=\"setColorFromString(color)\">\r\n <div class=\"color-picker__preset-item-fill\"\r\n [style.backgroundColor]=\"rgba || ''\">@if (presetColorsEditable) {\r\n <button type=\"button\"\r\n title=\"Remove Color\"\r\n i18n-title=\"@@nxt-color-picker.button.remove-color\"\r\n class=\"color-picker__remove-selected\"\r\n (click)=\"onRemovePresetColor(color)\"\r\n tabindex=\"0\"\r\n (keydown.enter)=\"onRemovePresetColor(color)\"><svg xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"24\"\r\n height=\"24\"\r\n viewBox=\"0 0 24 24\">\r\n <path d=\"M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z\" />\r\n <path d=\"M0 0h24v24H0z\"\r\n fill=\"none\" />\r\n </svg></button>\r\n }\r\n </div>\r\n </div>\r\n }\r\n }\r\n @for (i of fill(50); track $index) {\r\n <div class=\"color-picker__preset-item\"></div>\r\n }\r\n </div>\r\n }\r\n </div>\r\n }\r\n @if (okButton || cancelButton) {\r\n <div class=\"color-picker__buttons\">\r\n @if (cancelButton) {\r\n <button type=\"button\"\r\n (click)=\"onCancel($event)\"\r\n i18n=\"@@nxt-color-picker.button.cancel\">Cancel</button>\r\n }\r\n @if (okButton) {\r\n <button type=\"button\"\r\n (click)=\"onAccept($event)\"\r\n i18n=\"@@nxt-color-picker.button.ok\">OK</button>\r\n }\r\n </div>\r\n }\r\n</div>\r\n}\r\n","import { ConnectedPosition, Overlay, OverlayRef } from '@angular/cdk/overlay'\r\nimport { ComponentPortal } from '@angular/cdk/portal'\r\nimport { ApplicationRef, ComponentRef, Directive, ElementRef, Injector, OnChanges, OnDestroy, SimpleChanges, ViewContainerRef, inject, output, input, linkedSignal } from '@angular/core'\r\nimport { compositeColors, hsvaToRgba, stringToHsva } from '../util/color'\r\nimport { opaqueSliderLight } from '../util/contrast'\r\nimport { Hsva, Rgba } from '../util/formats'\r\nimport { composedPath, DirectiveCallbacks } from '../util/helpers'\r\nimport { AlphaChannel, AlphaChannelEnum, ColorMode, DialogDisplay, DialogDisplayEnum, DialogPosition, DialogPositionEnum, InputChangeEvent, OutputFormat, OutputFormatEnum, SliderChangeEvent } from '../util/types'\r\nimport { ColorPickerComponent } from './color-picker/color-picker.component'\r\n\r\n@Directive({\r\n selector: '[nxtColor]',\r\n exportAs: 'nxtColorPicker',\r\n host: {\r\n '(focus)': 'handleOpen($event)',\r\n '(click)': 'handleOpen($event)',\r\n '(input)': 'handleInput($event)',\r\n '(change)': 'handleInput($event)'\r\n }\r\n})\r\nexport class ColorPickerDirective implements OnChanges, OnDestroy {\r\n\r\n private dialog?: ColorPickerComponent\r\n\r\n private dialogCreated: boolean = false\r\n private ignoreChanges: boolean = false\r\n\r\n private cmpRef?: ComponentRef<ColorPickerComponent>\r\n\r\n private readonly _callbacks: DirectiveCallbacks = {\r\n stateChanged: (state: boolean) => {\r\n this.toggleChange.emit(state)\r\n\r\n if (state) {\r\n this.open.emit(this.nxtColor())\r\n } else {\r\n this.close.emit(this.nxtColor())\r\n }\r\n },\r\n cmykChanged: (value: string, ignore: boolean = true) => {\r\n this.ignoreChanges = ignore\r\n\r\n this.cmykColorChange.emit(value)\r\n },\r\n colorChanged: (value: string, ignore: boolean = true) => {\r\n this.ignoreChanges = ignore\r\n\r\n this.nxtColorChange.emit(value)\r\n },\r\n colorSelectCanceled: () => {\r\n this.colorSelectCancel.emit(undefined)\r\n },\r\n colorSelected: (value: string) => {\r\n this.colorSelect.emit(value)\r\n },\r\n inputChanged: (event: InputChangeEvent) => {\r\n this.inputChange.emit(event)\r\n },\r\n sliderDragStart: (event: SliderChangeEvent) => {\r\n this.sliderDragStart.emit(event)\r\n },\r\n sliderChanged: (event: SliderChangeEvent) => {\r\n this.sliderChange.emit(event)\r\n },\r\n sliderDragEnd: (event: SliderChangeEvent) => {\r\n this.sliderDragEnd.emit(event)\r\n },\r\n presetColorsChanged: (value: string[]) => {\r\n this.presetColorsChange.emit(value)\r\n }\r\n }\r\n private overlayRef?: OverlayRef\r\n\r\n private get resIgnoredElements() {\r\n const ignoredElements = this.ignoredElements()\r\n const ign = Array.isArray(ignoredElements) ? ignoredElements : [ignoredElements]\r\n return ign.filter(el => !!el)\r\n }\r\n\r\n /** The color to show in the color picker dialog */\r\n readonly _nxtColor = input<string | undefined>(undefined, { alias: 'nxtColor' })\r\n readonly nxtColor = linkedSignal({\r\n source: () => this._nxtColor(),\r\n computation: v => v\r\n })\r\n\r\n /** Use this option to set color picker dialog width */\r\n readonly width = input<string>('230px')\r\n /** Use this option to force color picker dialog height */\r\n readonly height = input<string>('auto')\r\n\r\n /** Sets the default open / close state of the color picker */\r\n readonly toggle = input<boolean>(false)\r\n /** Disables opening of the color picker dialog via toggle */\r\n readonly disabled = input<boolean>(false)\r\n\r\n /** Dialog color mode */\r\n readonly mode = input<ColorMode>('color')\r\n\r\n /** Enables CMYK input format and color change event */\r\n readonly cmykEnabled = input<boolean>(false)\r\n\r\n /** Output color format */\r\n readonly outputFormat = input<OutputFormat>(OutputFormatEnum.auto)\r\n /** Alpha channel mode */\r\n readonly alphaChannel = input<AlphaChannel>(AlphaChannelEnum.enabled)\r\n /** Used when the color is not well-formed or is undefined */\r\n readonly fallbackColor = input<string>()\r\n\r\n /** Dialog position */\r\n readonly position = input<DialogPosition | DialogPosition[]>(DialogPositionEnum.auto)\r\n /** Dialog offset percentage relative to the directive element */\r\n readonly positionOffset = input<number>(0)\r\n\r\n /**\r\n * Show label for preset colors\r\n *\r\n * If string is given, it overrides the default label.\r\n */\r\n readonly presetLabel = input<boolean | string>(true)\r\n /** Array of preset colors to show in the color picker dialog */\r\n readonly presetColors = input<string[]>()\r\n\r\n /** Disables / hides the color input field from the dialog */\r\n readonly disableInput = input<boolean>(false)\r\n\r\n /** Dialog positioning mode */\r\n readonly dialogDisplay = input<DialogDisplay>(DialogDisplayEnum.popup)\r\n\r\n /** Array of HTML elements that will be ignored when clicked */\r\n readonly ignoredElements = input<any[]>()\r\n\r\n /** Save currently selected color when user clicks outside */\r\n readonly saveClickOutside = input<boolean>(true)\r\n /** Close the color picker dialog when user clicks outside */\r\n readonly closeClickOutside = input<boolean>(true)\r\n\r\n /** Show an OK / Apply button which saves the color */\r\n readonly okButton = input<boolean>(false)\r\n\r\n /** Show a Cancel / Reset button which resets the color */\r\n readonly cancelButton = input<boolean>(false)\r\n\r\n /** Show buttons to add / remove preset colors */\r\n readonly presetColorsEditable = input<boolean>(false)\r\n\r\n /** Use this option to set the max colors allowed in presets */\r\n readonly maxPresetColors = input<number>()\r\n\r\n /**\r\n * Create dialog component in the root view container\r\n *\r\n * Note: The root component needs to have public viewContainerRef.\r\n */\r\n readonly useRootViewContainer = input<boolean>(false)\r\n\r\n /** Current color value, emit when dialog is isOpen */\r\n readonly open = output<string | undefined>()\r\n /** Current color value, emit when dialog is closed */\r\n readonly close = output<string | undefined>()\r\n\r\n /** Input name and its value, emit when user changes color through inputs */\r\n readonly inputChange = output<InputChangeEvent>()\r\n\r\n /** Status of the dialog, emit when dialog is isOpen / closed */\r\n readonly toggleChange = output<boolean>()\r\n\r\n /** Slider name and current color, emit when slider dragging starts */\r\n readonly sliderDragStart = output<SliderChangeEvent>()\r\n /** Slider name and its value, emit when user changes color through slider */\r\n readonly sliderChange = output<SliderChangeEvent>()\r\n /** Slider name and current color, emit when slider dragging ends */\r\n readonly sliderDragEnd = output<SliderChangeEvent>()\r\n\r\n /** Color select canceled, emit when Cancel button is pressed */\r\n readonly colorSelect = output<string>()\r\n /** Selected color value, emit when OK button pressed or user clicks outside (if saveClickOutside is true) */\r\n readonly colorSelectCancel = output<void>()\r\n /** Changed color value, emit when color changes */\r\n readonly nxtColorChange = output<string>()\r\n\r\n /** Outputs the color as CMYK string if CMYK is enabled */\r\n readonly cmykColorChange = output<string>()\r\n\r\n /** Preset colors, emit when preset color is added / removed */\r\n readonly presetColorsChange = output<string[]>()\r\n\r\n private readonly injector = inject(Injector)\r\n private readonly appRef = inject(ApplicationRef)\r\n private readonly vcRef = inject(ViewContainerRef)\r\n private readonly elRef = inject(ElementRef)\r\n private readonly overlay = inject(Overlay)\r\n\r\n /** @internal */\r\n handleOpen(event: Event) {\r\n const path = new Set(composedPath(event))\r\n const ignored = this.resIgnoredElements.find(el => path.has(el))\r\n\r\n if (!this.disabled() && !ignored) {\r\n this.openDialog()\r\n }\r\n }\r\n\r\n /** @internal */\r\n handleInput(event: Event) {\r\n const value = (((event?.target as HTMLInputElement | null)?.['value'] || '') + '').trim()\r\n\r\n if (this.dialog) {\r\n this.dialog.setColorFromString(value, true)\r\n } else {\r\n this.nxtColor.set(value)\r\n this.nxtColorChange.emit(value)\r\n }\r\n }\r\n\r\n /** @internal */\r\n ngOnDestroy() {\r\n this.dispose()\r\n }\r\n\r\n /** @internal */\r\n ngOnChanges(changes: SimpleChanges) {\r\n if (changes['toggle'] && !this.disabled()) {\r\n if (changes['toggle'].currentValue) {\r\n this.openDialog()\r\n } else {\r\n this.closeDialog()\r\n }\r\n }\r\n\r\n if (changes['_nxtColor']) {\r\n if (this.dialog && !this.ignoreChanges) {\r\n if (this.dialogDisplay() == DialogDisplayEnum.inline) {\r\n this.dialog.setInitialColor(changes['_nxtColor'].currentValue)\r\n }\r\n\r\n this.dialog.setColorFromString(changes['_nxtColor'].currentValue, false)\r\n\r\n if (this.useRootViewContainer() && this.dialogDisplay() != DialogDisplayEnum.inline) {\r\n this.cmpRef?.changeDetectorRef.detectChanges()\r\n }\r\n }\r\n\r\n this.ignoreChanges = false\r\n }\r\n\r\n if ((changes['presetLabel'] || changes['presetColors']) && this.dialog) {\r\n this.dialog.setPresetConfig(this.presetLabel(), this.presetColors())\r\n }\r\n\r\n if (changes['dialogDisplay']) {\r\n this.dispose()\r\n this.create()\r\n }\r\n\r\n if ((changes['position'] || changes['positionOffset']) && this.dialogDisplay() == DialogDisplayEnum.popup) {\r\n if (this.overlayRef) {\r\n this.overlayRef.updatePositionStrategy(this.overlay.position()\r\n .flexibleConnectedTo(this.elRef)\r\n .withPositions(this.getPositions(this.positionOffset())))\r\n }\r\n }\r\n }\r\n\r\n openDialog() {\r\n if (!this.dialogCreated) {\r\n this.create()\r\n } else if (this.dialog) {\r\n if (this.overlayRef && !this.overlayRef.hasAttached()) {\r\n this.cmpRef = this.overlayRef.attach(new ComponentPortal(ColorPickerComponent, null, this.injector))\r\n this.dialog = this.cmpRef.instance\r\n this.setupDialog()\r\n }\r\n this.dialog.openDialog(this.nxtColor())\r\n }\r\n }\r\n\r\n closeDialog() {\r\n if (this.dialog && this.dialogDisplay() == DialogDisplayEnum.popup) {\r\n this.dialog.closeDialog()\r\n }\r\n }\r\n\r\n /**\r\n * Get text color mode to ensure good contrast with selected color\r\n *\r\n * @param bg Solid background color; this is used when selected color has transparency\r\n * @param fg Foreground color, defaults to current picker value\r\n * @returns\r\n */\r\n textColorMode(\r\n bg: string | Rgba = new Rgba(1, 1, 1, 1, true),\r\n fg = this.dialog?.rgbaText\r\n ) {\r\n if (typeof bg == 'string')\r\n bg = hsvaToRgba(stringToHsva(bg) ?? new Hsva(1, 1, 1, 1, true))\r\n const color = compositeColors(fg || bg, new Rgba(bg.r, bg.g, bg.b, 1, bg.normalized))\r\n const useLightColor = opaqueSliderLight(color)\r\n return useLightColor ? 'light' : 'dark'\r\n }\r\n\r\n private dispose() {\r\n if (this.cmpRef)\r\n this.cmpRef.destroy()\r\n if (this.overlayRef)\r\n this.overlayRef.dispose()\r\n\r\n this.cmpRef = undefined\r\n this.overlayRef = undefined\r\n this.dialogCreated = false\r\n }\r\n\r\n private create() {\r\n let vcRef = this.vcRef\r\n\r\n this.dialogCreated = true\r\n\r\n if (this.useRootViewContainer() && this.dialogDisplay() != DialogDisplayEnum.inline) {\r\n const classOfRootComponent = this.appRef.componentTypes[0]\r\n const appInstance = this.injector.get(classOfRootComponent)\r\n\r\n vcRef = appInstance.vcRef || appInstance.viewContainerRef || this.vcRef\r\n\r\n if (vcRef == this.vcRef) {\r\n console.warn('You are using useRootViewContainer, but the root component is not exposing viewContainerRef! Please expose it by adding \\'vcRef: ViewContainerRef\\' to the constructor.')\r\n }\r\n }\r\n\r\n if (this.dialogDisplay() != DialogDisplayEnum.inline) {\r\n const pos = this.overlay.position()\r\n .flexibleConnectedTo(this.elRef)\r\n .withFlexibleDimensions(false)\r\n .withPush(false)\r\n .withPositions(this.getPositions(this.positionOffset()))\r\n this.overlayRef = this.overlay.create({ positionStrategy: pos, scrollStrategy: this.overlay.scrollStrategies.reposition({ autoClose: true }) })\r\n this.cmpRef = this.overlayRef.attach(new ComponentPortal(ColorPickerComponent, null, this.injector))\r\n } else {\r\n this.cmpRef = vcRef.createComponent(ColorPickerComponent, { injector: this.injector, index: 0 })\r\n }\r\n\r\n this.dialog = this.cmpRef.instance\r\n\r\n this.setupDialog()\r\n\r\n if (this.vcRef != vcRef) {\r\n this.cmpRef.changeDetectorRef.detectChanges()\r\n }\r\n }\r\n\r\n private setupDialog() {\r\n this.dialog?.setupDialog({ ...this, callbacks: this._callbacks, elementRef: this.elRef, color: this.nxtColor() })\r\n }\r\n\r\n private getPositions(offset = 0) {\r\n const pos: ConnectedPosition[] = []\r\n const position = this.position()\r\n const positions = Array.isArray(position)\r\n ? position\r\n : [position || DialogPositionEnum.auto]\r\n\r\n const bb = this.elRef.nativeElement.getBoundingClientRect()\r\n const positionCfg = {\r\n [DialogPositionEnum.right]: {\r\n originX: 'end',\r\n originY: 'top',\r\n overlayX: 'start',\r\n overlayY: 'top',\r\n panelClass: 'color-picker__arrow--right',\r\n offsetX: bb.width * offset\r\n } as ConnectedPosition,\r\n [DialogPositionEnum.left]: {\r\n originX: 'start',\r\n originY: 'top',\r\n overlayX: 'end',\r\n overlayY: 'top',\r\n panelClass: 'color-picker__arrow--left',\r\n offsetX: -bb.width * offset\r\n } as ConnectedPosition,\r\n [DialogPositionEnum.top]: {\r\n originX: 'start',\r\n originY: 'top',\r\n overlayX: 'start',\r\n overlayY: 'bottom',\r\n panelClass: 'color-picker__arrow--top',\r\n offsetY: -bb.height * offset\r\n } as ConnectedPosition,\r\n [DialogPositionEnum.bottom]: {\r\n originX: 'start',\r\n originY: 'bottom',\r\n overlayX: 'start',\r\n overlayY: 'top',\r\n panelClass: 'color-picker__arrow--bottom',\r\n offsetY: bb.height * offset\r\n } as ConnectedPosition\r\n }\r\n const usedPositions = new Set<DialogPosition>()\r\n positions.forEach(p => {\r\n // Add positions in order as specified\r\n if (!usedPositions.has(p) && p in positionCfg) {\r\n usedPositions.add(p)\r\n pos.push(positionCfg[p as keyof typeof positionCfg])\r\n }\r\n })\r\n if (positions.find(p => p == DialogPositionEnum.auto)) {\r\n // If using auto positioning, append the remaining positioning strategies\r\n [\r\n DialogPositionEnum.right,\r\n DialogPositionEnum.top,\r\n DialogPositionEnum.bottom,\r\n DialogPositionEnum.left\r\n ].forEach(p => {\r\n if (!usedPositions.has(p) && p in positionCfg) {\r\n usedPositions.add(p)\r\n pos.push(positionCfg[p as keyof typeof positionCfg])\r\n }\r\n })\r\n }\r\n\r\n return pos\r\n }\r\n}\r\n","import { NgModule } from '@angular/core'\r\nimport { ColorPickerDirective } from './color-picker.directive'\r\n\r\n/** @deprecated use standalone imports */\r\n@NgModule({\r\n imports: [\r\n ColorPickerDirective\r\n ],\r\n exports: [\r\n ColorPickerDirective\r\n ]\r\n})\r\nexport class ColorPickerModule { }\r\n","/*\r\n * Public API Surface of nxt-color-picker\r\n */\r\n\r\nexport { ColorPickerDirective } from './lib/color-picker.directive'\r\nexport { ColorPickerModule } from './lib/color-picker.module'\r\nexport * from './util/color'\r\nexport * from './util/formats'\r\nexport * from './util/types'\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}