@ec0lint/plugin-css
Version:
ec0lint plugin that provides rules to verify CSS definition objects
87 lines (86 loc) • 2.88 kB
JavaScript
;
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;