@aurigma/design-atoms
Version:
Design Atoms is a part of Customer's Canvas SDK which allows for manipulating individual design elements through your code.
45 lines • 2.09 kB
JavaScript
import { GrayscaleColor, RgbColor, CmykColor, LabColor, SpotColor, Ink, ColorSpace } from "@aurigma/design-atoms-model/Colors";
import { Exception } from "@aurigma/design-atoms-model/Exception";
export class JsonColorParser {
static parse(data) {
if (data == null)
return null;
if (data.colorSpace == null)
throw new Exception("Unable to parse color, data colorSpace is not set");
const colorSpace = ColorSpace[data.colorSpace.toString()];
if (colorSpace == null)
throw new Exception(`Unable to parse color, unknown data colorSpace: '${data.colorSpace}'`);
const parse = JsonColorParser._mappedParsers[ColorSpace[colorSpace]];
if (parse == null)
throw new Exception(`Unable to parse color, color space '${colorSpace}' is not supported`);
return parse(data);
}
static parseRgbColor(data) {
return new RgbColor(data.r, data.g, data.b, data.alpha, data.profile);
}
static _parseCmykColor(data) {
return new CmykColor(data.c, data.m, data.y, data.k, data.alpha, data.profile);
}
static _parseGrayscaleColor(data) {
return new GrayscaleColor(data.l, data.alpha, data.profile);
}
static _parseLabColor(data) {
return new LabColor(data.l, data.a, data.b, data.alpha, data.profile);
}
static _parseSpotColor(data) {
const ink = JsonColorParser._parseInk(data.ink);
return new SpotColor(ink, data.tint, data.alpha);
}
static _parseInk(data) {
const altColor = JsonColorParser.parse(data.alternativeColor);
return new Ink(data.name, altColor, data.solidity);
}
}
JsonColorParser._mappedParsers = {
[ColorSpace.Rgb]: JsonColorParser.parseRgbColor,
[ColorSpace.Cmyk]: JsonColorParser._parseCmykColor,
[ColorSpace.Grayscale]: JsonColorParser._parseGrayscaleColor,
[ColorSpace.Lab]: JsonColorParser._parseLabColor,
[ColorSpace.Spot]: JsonColorParser._parseSpotColor
};
//# sourceMappingURL=JsonColorParser.js.map