UNPKG

@vuesax-alpha/nightly

Version:
1 lines 9.44 kB
{"version":3,"file":"color.mjs","sources":["../../../../packages/utils/color.ts"],"sourcesContent":["import { unref } from 'vue'\nimport {\n hexFullRE,\n hexShorthandRE,\n leadingHashRE,\n rgbNumberRE,\n rgbRE,\n vuesaxColors,\n} from '@vuesax-alpha/constants'\nimport { debugWarn } from './error'\nimport type { MaybeRef } from './typescript'\nimport type { VuesaxColor } from '@vuesax-alpha/constants'\n\nexport const getCssVariable = (el: HTMLElement, property: string) => {\n return getComputedStyle(el).getPropertyValue(property)\n}\n\nexport const isColorDark = (color?: string | boolean): boolean => {\n if (color === undefined || color === false) return false\n return color === 'dark' || color === true\n}\n\nexport const isVsColor = (color: string): boolean =>\n vuesaxColors.includes(color as any)\n\n/**\n * #eee -> length hex shorthand, shorthand with alpha, classic, hex alpha\n */\nexport const isHexColor = (color: string) =>\n leadingHashRE.test(color) && [4, 7, 5, 9].includes(color.length)\n\nexport const isRgbColor = (color: string) => rgbRE.test(color)\n\nexport const isRGBNumbers = (color: string) => rgbNumberRE.test(color)\n\nexport const hexToRgb = (color: string) => {\n color = color.replace(\n hexShorthandRE,\n (_, r: string, g: string, b: string) => r + r + g + g + b + b\n )\n const res = hexFullRE.exec(color)\n\n return res\n ? {\n r: Number.parseInt(res[1], 16),\n g: Number.parseInt(res[2], 16),\n b: Number.parseInt(res[3], 16),\n }\n : null\n}\n\nexport const setColor = (\n colorName: string,\n color: string,\n el: HTMLElement,\n addClass?: boolean,\n namespace = 'vs'\n) => {\n let newColor\n if (color == 'dark' && el) {\n if (addClass) {\n el.classList.add(`${namespace}-component-dark`)\n }\n }\n if (isRgbColor(color)) {\n const arrayColor = color.replace(/[rgba()]/g, '').split(',')\n newColor = `${arrayColor[0]},${arrayColor[1]},${arrayColor[2]}`\n setCssVar(colorName, newColor, el)\n if (addClass) {\n el.classList.add(`${namespace}-change-color`)\n }\n } else if (isHexColor(color)) {\n const rgb = hexToRgb(color)\n newColor = `${rgb!.r},${rgb!.g},${rgb!.b}`\n setCssVar(colorName, newColor, el)\n if (addClass) {\n el.classList.add(`${namespace}-change-color`)\n }\n } else if (isVsColor(color)) {\n const style = window.getComputedStyle(document.body)\n newColor = style.getPropertyValue(`--${namespace}-${color}`)\n setCssVar(colorName, newColor, el)\n if (addClass) {\n el.classList.add(`${namespace}-change-color`)\n }\n } else if (isRGBNumbers(color)) {\n setCssVar(colorName, color, el)\n if (addClass) {\n el.classList.add(`${namespace}-change-color`)\n }\n }\n}\n\n/**\n * accept Vuesax's color, hex color, rgb color\n * @param color string\n */\nexport const acceptColor = (color: string) => {\n const isValid = isVsColor(color) || isHexColor(color) || isRgbColor(color)\n\n if (isValid) return true\n debugWarn(\n 'Invalid Color',\n 'Vuesax only accepts colors like hex, rgb, rgba or rgb number'\n )\n return false\n}\n\n/**\n * Convert color to rgb number, accept Vuesax's color, hex color, rgb color\n *\n * e.g 'rgb(23,34,34)' -> '23, 34, 34'\n */\nexport const getVsColor = (\n colorRef: MaybeRef<string | undefined>,\n namespace = 'vs'\n): string => {\n const color = unref(colorRef)\n if (!color) return ''\n\n const isRGB = rgbRE.test(color)\n const isRGBNumbers = rgbNumberRE.test(color)\n const isHEX = leadingHashRE.test(color)\n\n let newColor = ''\n\n if (isRGB) {\n const arrayColor = color.replace(/[rgba()]/g, '').split(',')\n newColor = `${arrayColor[0]}, ${arrayColor[1]}, ${arrayColor[2]}`\n } else if (isHEX) {\n const rgb = hexToRgb(color)\n newColor = `${rgb?.r}, ${rgb?.g}, ${rgb?.b}`\n } else if (isVsColor(color as VuesaxColor)) {\n newColor = `var(--${namespace}-${color})`\n } else if (isRGBNumbers) {\n newColor = color\n }\n return newColor\n}\n\n/**\n * @param propertyName The name of the property\n * @param value The value of the property\n * @param el The element to set the property. Default document.documentElement\n * @param namespace The namespace of vs app. Default'vs'\n */\nexport const setCssVar = (\n propertyName: string,\n value: string,\n el?: HTMLElement,\n namespace = 'vs'\n) => {\n if (!el && document?.documentElement) {\n document.documentElement.style.setProperty(\n `--${namespace}-${propertyName}`,\n value\n )\n } else {\n if (el?.nodeName !== '#comment') {\n el?.style.setProperty(`--${namespace}-${propertyName}`, value)\n }\n }\n}\n"],"names":["isRGBNumbers"],"mappings":"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"}