UNPKG

@ec0lint/plugin-css

Version:

ec0lint plugin that provides rules to verify CSS definition objects

87 lines (86 loc) 2.88 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.parseLab = exports.ColorFromLab = void 0; const colord_1 = require("./colord"); const color_class_1 = require("./color-class"); const parser_1 = require("./parser"); class ColorFromLab extends color_class_1.AbsColor { constructor(lab) { super(); this.type = "lab"; this.lab = lab; } isComplete() { var _a; return (this.lab.complete && ((_a = this.getColord()) === null || _a === void 0 ? void 0 : _a.isValid())) || false; } getAlpha() { var _a, _b; return (_b = (_a = this.lab.alpha) === null || _a === void 0 ? void 0 : _a.value) !== null && _b !== void 0 ? _b : null; } removeAlpha() { return new ColorFromLab(Object.assign(Object.assign({}, this.lab), { alpha: null })); } toColorString() { return `${this.lab.rawName}(${this.lab.lab}${this.lab.alpha || ""}${(this.lab.extraArgs || []).join("")})`; } newColord() { var _a, _b; const lab = this.lab; if (lab.complete) { return (0, colord_1.parseColord)({ l: lab.lab.value.lightness.number, a: lab.lab.value.a.number, b: lab.lab.value.b.number, alpha: (_b = (_a = lab.alpha) === null || _a === void 0 ? void 0 : _a.value) !== null && _b !== void 0 ? _b : undefined, }); } return null; } } exports.ColorFromLab = ColorFromLab; function parseLab(input) { const fn = (0, parser_1.parseFunction)(input, "lab"); if (fn == null) { return null; } const values = (0, parser_1.parseArgumentValuesWithSpace)(fn.arguments, { generate: (tokens) => { if (tokens.length !== 3) { return null; } const lightness = (0, parser_1.parseNumberUnit)(tokens[0], ["%"]); if (!(0, parser_1.isPercentRange)(lightness)) { return null; } const a = (0, parser_1.parseNumberUnit)(tokens[1], [""]); const b = (0, parser_1.parseNumberUnit)(tokens[2], [""]); if (!a || !b) { return null; } return { lightness, a, b, }; }, }); const lab = values.values; const alpha = values.alpha; if (lab.complete && (!alpha || alpha.valid) && fn.arguments.length === 0) { return { complete: true, rawName: fn.rawName, lab, alpha, }; } return { complete: false, rawName: fn.rawName, lab, alpha, extraArgs: fn.arguments, }; } exports.parseLab = parseLab;