{"version":3,"file":"binom-sdk-utils-color.mjs","sources":["../../../../../../binom/public/sdks/sdk-utils/color/src/bn-color-utils.ts","../../../../../../binom/public/sdks/sdk-utils/color/src/binom-sdk-utils-color.ts"],"sourcesContent":["import { BnColorObject } from \"./interfaces/bn-color-object\";\n\nexport class BnColorUtils {\n\n    public static channelToHex(c: number): string {\n      const hex = c.toString(16);\n      return hex.length === 1 ? '0' + hex : hex;\n    }\n  \n    public static rgbToHex(r: number, g: number, b: number, a = 1): string {\n      return '#' + this.channelToHex(r) + this.channelToHex(g) + this.channelToHex(b) + this.channelToHex(Math.round(a * 255));\n    }\n  \n    public static rgbToHsl(r: number, g: number, b: number, a = 1): number[] {\n        const R = r / 255, G = g / 255, B = b / 255;\n        const max = Math.max(R, G, B), min = Math.min(R, G, B);\n        let h = 0, s = 0; \n        const l = (max + min) / 2;\n        if (max !== min) {\n            const d = max - min;\n            s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n            switch (max) {\n            case R: h = (G - B) / d + (G < B ? 6 : 0); break;\n            case G: h = (B - R) / d + 2; break;\n            case B: h = (R - G) / d + 4; break;\n            }\n            h /= 6;\n        }\n        return [h, s, l, a];\n    }\n  \n    public static hue2rgbChannel(p: number, q: number, t: number): number {\n      if (t < 0) t += 1;\n      if (t > 1) t -= 1;\n      if (t < 1 / 6) return p + (q - p) * 6 * t;\n      if (t < 1 / 2) return q;\n      if (t < 2 / 3) return p + (q - p) * (2 / 3 - t) * 6;\n      return p;\n    }\n  \n    public static hslToRgb(h: number, s: number, l: number, a = 1): number[] {\n        let r, g, b;\n        if (s === 0) {\n            r = g = b = l;\n        } else {\n        const q = l < 0.5 ? l * (1 + s) : l + s - l * s;\n        const p = 2 * l - q;\n            r = this.hue2rgbChannel(p, q, h + 1 / 3);\n            g = this.hue2rgbChannel(p, q, h);\n            b = this.hue2rgbChannel(p, q, h - 1 / 3);\n        }\n\n        return [Math.round(r * 255), Math.round(g * 255), Math.round(b * 255), a];\n    }\n  \n    public static hexToRgb(hex: string, a = 1): number[] {\n        hex = hex.replace(/^#/, '');\n        const bigint = parseInt(hex, 16);\n        return [(bigint >> 16) & 255, (bigint >> 8) & 255, bigint & 255, a];\n    }\n\n    public static getContrastColor(r:number, g:number, b:number): string {\n        const luminance = (0.299 * r + 0.587 * g + 0.114 * b) / 255;\n        return luminance > 0.5 ? '#000000' : '#ffffff';\n    }\n  \n    public static allValuesFromRgba(r:number, g:number, b:number, a=1 ):BnColorObject{\n        return {\n            rgba: [r,g,b,a],\n            hsla: this.rgbToHsl(r,g,b,a),\n            hex: this.rgbToHex(r,g,b,a),\n            contrast:this.getContrastColor(r,g,b)\n        }\n    }\n\n    public static allValuesFromHSL(h:number, s:number, l:number, a=1):BnColorObject{\n        const rgb = this.hslToRgb(h,s,l,a);\n        return {\n            rgba: rgb,\n            hsla: [h,s,l,a],\n            hex: this.rgbToHex(rgb[0],rgb[1],rgb[2],a),\n            contrast: this.getContrastColor(rgb[0],rgb[1],rgb[2])\n        }\n    }\n\n    public static allValuesFromHex(hex:string, a=1):BnColorObject{\n        const rgb = this.hexToRgb(hex);\n        return {\n            rgba: rgb,\n            hsla: this.rgbToHsl(rgb[0],rgb[1],rgb[2],a),\n            hex: this.rgbToHex(rgb[0],rgb[1],rgb[2],a),\n            contrast: this.getContrastColor(rgb[0],rgb[1],rgb[2])\n        }\n    }\n\n    public static getBackgroundColor(element: HTMLElement): string {\n        let bgColor: string | null = null;\n    \n        while (element) {\n            const computedStyle = getComputedStyle(element);\n            bgColor = computedStyle.backgroundColor;\n            if (bgColor && bgColor !== 'rgba(0, 0, 0, 0)' && bgColor !== 'transparent') {\n            break;\n            }\n            const background = computedStyle.background.split('')[0];\n            if (background && background !== 'rgba(0, 0, 0, 0)' && background !== 'transparent') {\n            const bgColorFromBackground = this.extractBackgroundColorFromBackground(background);\n            if (bgColorFromBackground) {\n                bgColor = bgColorFromBackground;\n                break;\n            }\n            }\n        element = element.parentNode as HTMLElement;\n        if (!element) { break; }\n        \n        }\n        return bgColor || 'rgb(255, 255, 255)';\n    }\n\n    public static extractBackgroundColorFromBackground(background: string): string | null {\n        const colors = background.match(/rgba?\\((\\d+,\\s*\\d+,\\s*\\d+(?:,\\s*\\d+(\\.\\d+)?)?)\\)|rgb\\((\\d+,\\s*\\d+,\\s*\\d+)\\)/);\n        if (colors && colors.length > 0) {\n            return colors[0];\n        }\n        return null;\n    }\n\n    public static extractRgb(color: string): number[] {\n        const rgb = color.match(/\\d+/g);\n        if (rgb && rgb.length >= 3) {\n            return [parseInt(rgb[0], 10), parseInt(rgb[1], 10), parseInt(rgb[2], 10)];\n        }\n        return [255, 255, 255];\n    }\n\n    public static getContrastRatio(rgb1: number[], rgb2: number[]): number {\n        const lum1 = this.relativeLuminance(rgb1);\n        const lum2 = this.relativeLuminance(rgb2);\n        return (Math.max(lum1, lum2) + 0.05) / (Math.min(lum1, lum2) + 0.05);\n    }\n\n    private static relativeLuminance(rgb: number[]): number {\n        const [r, g, b] = rgb.map(c => {\n            c /= 255;\n            return c <= 0.03928 ? c / 12.92 : Math.pow((c + 0.055) / 1.055, 2.4);\n        });\n        return 0.2126 * r + 0.7152 * g + 0.0722 * b;\n    }\n\n    public static getBestContrastColor(rgb: number[]): string {\n        return this.getContrastColor(rgb[0], rgb[1], rgb[2]);\n    }\n\n    // Neue Validierungsmethoden\n    public static isValidHex(hex: string): boolean {\n        return /^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8}|[A-Fa-f0-9]{4})$/.test(hex);\n    }\n\n    public static isValidRgb(r: number, g: number, b: number, a = 1): boolean {\n        return [r, g, b, a].every(val => typeof val === 'number' && !isNaN(val)) &&\n               r >= 0 && r <= 255 && g >= 0 && g <= 255 && b >= 0 && b <= 255 &&\n               a >= 0 && a <= 1;\n    }\n\n    public static isValidHsl(h: number, s: number, l: number, a = 1): boolean {\n        return [h, s, l, a].every(val => typeof val === 'number' && !isNaN(val)) &&\n               h >= 0 && h <= 360 && s >= 0 && s <= 1 && l >= 0 && l <= 1 &&\n               a >= 0 && a <= 1;\n    }\n\n    // Farbnamen-Unterstützung\n    private static readonly COLOR_NAMES: Record<string, string> = {\n        'aliceblue': '#f0f8ff',\n        'antiquewhite': '#faebd7',\n        'aqua': '#00ffff',\n        'aquamarine': '#7fffd4',\n        'azure': '#f0ffff',\n        'beige': '#f5f5dc',\n        'bisque': '#ffe4c4',\n        'black': '#000000',\n        'blanchedalmond': '#ffebcd',\n        'blue': '#0000ff',\n        'blueviolet': '#8a2be2',\n        'brown': '#a52a2a',\n        'burlywood': '#deb887',\n        'cadetblue': '#5f9ea0',\n        'chartreuse': '#7fff00',\n        'chocolate': '#d2691e',\n        'coral': '#ff7f50',\n        'cornflowerblue': '#6495ed',\n        'cornsilk': '#fff8dc',\n        'crimson': '#dc143c',\n        'cyan': '#00ffff',\n        'darkblue': '#00008b',\n        'darkcyan': '#008b8b',\n        'darkgoldenrod': '#b8860b',\n        'darkgray': '#a9a9a9',\n        'darkgreen': '#006400',\n        'darkkhaki': '#bdb76b',\n        'darkmagenta': '#8b008b',\n        'darkolivegreen': '#556b2f',\n        'darkorange': '#ff8c00',\n        'darkorchid': '#9932cc',\n        'darkred': '#8b0000',\n        'darksalmon': '#e9967a',\n        'darkseagreen': '#8fbc8f',\n        'darkslateblue': '#483d8b',\n        'darkslategray': '#2f4f4f',\n        'darkturquoise': '#00ced1',\n        'darkviolet': '#9400d3',\n        'deeppink': '#ff1493',\n        'deepskyblue': '#00bfff',\n        'dimgray': '#696969',\n        'dodgerblue': '#1e90ff',\n        'firebrick': '#b22222',\n        'floralwhite': '#fffaf0',\n        'forestgreen': '#228b22',\n        'fuchsia': '#ff00ff',\n        'gainsboro': '#dcdcdc',\n        'ghostwhite': '#f8f8ff',\n        'gold': '#ffd700',\n        'goldenrod': '#daa520',\n        'gray': '#808080',\n        'green': '#008000',\n        'greenyellow': '#adff2f',\n        'honeydew': '#f0fff0',\n        'hotpink': '#ff69b4',\n        'indianred': '#cd5c5c',\n        'indigo': '#4b0082',\n        'ivory': '#fffff0',\n        'khaki': '#f0e68c',\n        'lavender': '#e6e6fa',\n        'lavenderblush': '#fff0f5',\n        'lawngreen': '#7cfc00',\n        'lemonchiffon': '#fffacd',\n        'lightblue': '#add8e6',\n        'lightcoral': '#f08080',\n        'lightcyan': '#e0ffff',\n        'lightgoldenrodyellow': '#fafad2',\n        'lightgray': '#d3d3d3',\n        'lightgreen': '#90ee90',\n        'lightpink': '#ffb6c1',\n        'lightsalmon': '#ffa07a',\n        'lightseagreen': '#20b2aa',\n        'lightskyblue': '#87ceeb',\n        'lightslategray': '#778899',\n        'lightsteelblue': '#b0c4de',\n        'lightyellow': '#ffffe0',\n        'lime': '#00ff00',\n        'limegreen': '#32cd32',\n        'linen': '#faf0e6',\n        'magenta': '#ff00ff',\n        'maroon': '#800000',\n        'mediumaquamarine': '#66cdaa',\n        'mediumblue': '#0000cd',\n        'mediumorchid': '#ba55d3',\n        'mediumpurple': '#9370db',\n        'mediumseagreen': '#3cb371',\n        'mediumslateblue': '#7b68ee',\n        'mediumspringgreen': '#00fa9a',\n        'mediumturquoise': '#48d1cc',\n        'mediumvioletred': '#c71585',\n        'midnightblue': '#191970',\n        'mintcream': '#f5fffa',\n        'mistyrose': '#ffe4e1',\n        'moccasin': '#ffe4b5',\n        'navajowhite': '#ffdead',\n        'navy': '#000080',\n        'oldlace': '#fdf5e6',\n        'olive': '#808000',\n        'olivedrab': '#6b8e23',\n        'orange': '#ffa500',\n        'orangered': '#ff4500',\n        'orchid': '#da70d6',\n        'palegoldenrod': '#eee8aa',\n        'palegreen': '#98fb98',\n        'paleturquoise': '#afeeee',\n        'palevioletred': '#db7093',\n        'papayawhip': '#ffefd5',\n        'peachpuff': '#ffdab9',\n        'peru': '#cd853f',\n        'pink': '#ffc0cb',\n        'plum': '#dda0dd',\n        'powderblue': '#b0e0e6',\n        'purple': '#800080',\n        'rebeccapurple': '#663399',\n        'red': '#ff0000',\n        'rosybrown': '#bc8f8f',\n        'royalblue': '#4169e1',\n        'saddlebrown': '#8b4513',\n        'salmon': '#fa8072',\n        'sandybrown': '#f4a460',\n        'seagreen': '#2e8b57',\n        'seashell': '#fff5ee',\n        'sienna': '#a0522d',\n        'silver': '#c0c0c0',\n        'skyblue': '#87ceeb',\n        'slateblue': '#6a5acd',\n        'slategray': '#708090',\n        'snow': '#fffafa',\n        'springgreen': '#00ff7f',\n        'steelblue': '#4682b4',\n        'tan': '#d2b48c',\n        'teal': '#008080',\n        'thistle': '#d8bfd8',\n        'tomato': '#ff6347',\n        'turquoise': '#40e0d0',\n        'violet': '#ee82ee',\n        'wheat': '#f5deb3',\n        'white': '#ffffff',\n        'whitesmoke': '#f5f5f5',\n        'yellow': '#ffff00',\n        'yellowgreen': '#9acd32'\n    };\n\n    public static nameToHex(name: string): string | null {\n        const normalizedName = name.toLowerCase().replace(/\\s+/g, '');\n        return this.COLOR_NAMES[normalizedName] || null;\n    }\n\n    public static hexToName(hex: string): string | null {\n        const normalizedHex = hex.toLowerCase();\n        for (const [name, hexValue] of Object.entries(this.COLOR_NAMES)) {\n            if (hexValue.toLowerCase() === normalizedHex) {\n                return name;\n            }\n        }\n        return null;\n    }\n\n    // Farbpaletten\n    public static generateComplementaryPalette(baseColor: string): string[] {\n        const hsl = this.hexToHsl(baseColor);\n        if (!hsl) return [baseColor];\n\n        const complementaryHue = (hsl[0] + 180) % 360;\n        return [\n            baseColor,\n            this.hslToHex(complementaryHue, hsl[1], hsl[2])\n        ];\n    }\n\n    public static generateTriadicPalette(baseColor: string): string[] {\n        const hsl = this.hexToHsl(baseColor);\n        if (!hsl) return [baseColor];\n\n        const hue1 = (hsl[0] + 120) % 360;\n        const hue2 = (hsl[0] + 240) % 360;\n\n        return [\n            baseColor,\n            this.hslToHex(hue1, hsl[1], hsl[2]),\n            this.hslToHex(hue2, hsl[1], hsl[2])\n        ];\n    }\n\n    public static generateAnalogousPalette(baseColor: string, count = 5): string[] {\n        const hsl = this.hexToHsl(baseColor);\n        if (!hsl) return [baseColor];\n\n        const palette: string[] = [];\n        const step = 30; // 30 degrees between colors\n\n        for (let i = -(count - 1) / 2; i <= (count - 1) / 2; i++) {\n            const hue = (hsl[0] + i * step + 360) % 360;\n            palette.push(this.hslToHex(hue, hsl[1], hsl[2]));\n        }\n\n        return palette;\n    }\n\n    public static generateMonochromaticPalette(baseColor: string, count = 5): string[] {\n        const hsl = this.hexToHsl(baseColor);\n        if (!hsl) return [baseColor];\n\n        const palette: string[] = [];\n        const lightnessStep = 0.2; // 20% lightness steps\n\n        for (let i = 0; i < count; i++) {\n            const lightness = Math.max(0.1, Math.min(0.9, hsl[2] - (count - 1) / 2 * lightnessStep + i * lightnessStep));\n            palette.push(this.hslToHex(hsl[0], hsl[1], lightness));\n        }\n\n        return palette;\n    }\n\n    // Hilfsmethoden für bessere Alpha-Behandlung\n    public static blendColors(color1: string, color2: string, ratio = 0.5): string {\n        const rgb1 = this.hexToRgb(color1);\n        const rgb2 = this.hexToRgb(color2);\n\n        if (!rgb1 || !rgb2) return color1;\n\n        const r = Math.round(rgb1[0] * (1 - ratio) + rgb2[0] * ratio);\n        const g = Math.round(rgb1[1] * (1 - ratio) + rgb2[1] * ratio);\n        const b = Math.round(rgb1[2] * (1 - ratio) + rgb2[2] * ratio);\n\n        return this.rgbToHex(r, g, b);\n    }\n\n    public static lighten(color: string, amount: number): string {\n        const hsl = this.hexToHsl(color);\n        if (!hsl) return color;\n\n        const newLightness = Math.min(1, hsl[2] + amount);\n        return this.hslToHex(hsl[0], hsl[1], newLightness);\n    }\n\n    public static darken(color: string, amount: number): string {\n        const hsl = this.hexToHsl(color);\n        if (!hsl) return color;\n\n        const newLightness = Math.max(0, hsl[2] - amount);\n        return this.hslToHex(hsl[0], hsl[1], newLightness);\n    }\n\n    public static saturate(color: string, amount: number): string {\n        const hsl = this.hexToHsl(color);\n        if (!hsl) return color;\n\n        const newSaturation = Math.min(1, hsl[1] + amount);\n        return this.hslToHex(hsl[0], newSaturation, hsl[2]);\n    }\n\n    public static desaturate(color: string, amount: number): string {\n        const hsl = this.hexToHsl(color);\n        if (!hsl) return color;\n\n        const newSaturation = Math.max(0, hsl[1] - amount);\n        return this.hslToHex(hsl[0], newSaturation, hsl[2]);\n    }\n\n    // Hilfsmethoden für Hex/HSL Konvertierung (wurden in den bestehenden Methoden verwendet)\n    private static hexToHsl(hex: string): number[] | null {\n        const rgb = this.hexToRgb(hex);\n        if (!rgb) return null;\n        return this.rgbToHsl(rgb[0], rgb[1], rgb[2]);\n    }\n\n    private static hslToHex(h: number, s: number, l: number): string {\n        const rgb = this.hslToRgb(h, s, l);\n        return this.rgbToHex(rgb[0], rgb[1], rgb[2]);\n    }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}