"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); function _export(target, all) { for(var name in all)Object.defineProperty(target, name, { enumerable: true, get: all[name] }); } _export(exports, { parseColor: function() { return parseColor; }, formatColor: function() { return formatColor; } }); const _colorNames = /*#__PURE__*/ _interop_require_default(require("./colorNames")); function _interop_require_default(obj) { return obj && obj.__esModule ? obj : { default: obj }; } let HEX = /^#([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})?$/i; let SHORT_HEX = /^#([a-f\d])([a-f\d])([a-f\d])([a-f\d])?$/i; let VALUE = /(?:\d+|\d*\.\d+)%?/; let SEP = /(?:\s*,\s*|\s+)/; let ALPHA_SEP = /\s*[,/]\s*/; let CUSTOM_PROPERTY = /var\(--(?:[^ )]*?)(?:,(?:[^ )]*?|var\(--[^ )]*?\)))?\)/; let RGB = new RegExp(`^(rgba?)\\(\\s*(${VALUE.source}|${CUSTOM_PROPERTY.source})(?:${SEP.source}(${VALUE.source}|${CUSTOM_PROPERTY.source}))?(?:${SEP.source}(${VALUE.source}|${CUSTOM_PROPERTY.source}))?(?:${ALPHA_SEP.source}(${VALUE.source}|${CUSTOM_PROPERTY.source}))?\\s*\\)$`); let HSL = new RegExp(`^(hsla?)\\(\\s*((?:${VALUE.source})(?:deg|rad|grad|turn)?|${CUSTOM_PROPERTY.source})(?:${SEP.source}(${VALUE.source}|${CUSTOM_PROPERTY.source}))?(?:${SEP.source}(${VALUE.source}|${CUSTOM_PROPERTY.source}))?(?:${ALPHA_SEP.source}(${VALUE.source}|${CUSTOM_PROPERTY.source}))?\\s*\\)$`); function parseColor(value, { loose =false } = {}) { var _match_, _match__toString; if (typeof value !== "string") { return null; } value = value.trim(); if (value === "transparent") { return { mode: "rgb", color: [ "0", "0", "0" ], alpha: "0" }; } if (value in _colorNames.default) { return { mode: "rgb", color: _colorNames.default[value].map((v)=>v.toString()) }; } let hex = value.replace(SHORT_HEX, (_, r, g, b, a)=>[ "#", r, r, g, g, b, b, a ? a + a : "" ].join("")).match(HEX); if (hex !== null) { return { mode: "rgb", color: [ parseInt(hex[1], 16), parseInt(hex[2], 16), parseInt(hex[3], 16) ].map((v)=>v.toString()), alpha: hex[4] ? (parseInt(hex[4], 16) / 255).toString() : undefined }; } var _value_match; let match = (_value_match = value.match(RGB)) !== null && _value_match !== void 0 ? _value_match : value.match(HSL); if (match === null) { return null; } let color = [ match[2], match[3], match[4] ].filter(Boolean).map((v)=>v.toString()); // rgba(var(--my-color), 0.1) // hsla(var(--my-color), 0.1) if (color.length === 2 && color[0].startsWith("var(")) { return { mode: match[1], color: [ color[0] ], alpha: color[1] }; } if (!loose && color.length !== 3) { return null; } if (color.length < 3 && !color.some((part)=>/^var\(.*?\)$/.test(part))) { return null; } return { mode: match[1], color, alpha: (_match_ = match[5]) === null || _match_ === void 0 ? void 0 : (_match__toString = _match_.toString) === null || _match__toString === void 0 ? void 0 : _match__toString.call(_match_) }; } function formatColor({ mode , color , alpha }) { let hasAlpha = alpha !== undefined; if (mode === "rgba" || mode === "hsla") { return `${mode}(${color.join(", ")}${hasAlpha ? `, ${alpha}` : ""})`; } return `${mode}(${color.join(" ")}${hasAlpha ? ` / ${alpha}` : ""})`; }