UNPKG

@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
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