@aurigma/design-atoms-model
Version:
Design Atoms is a part of Customer's Canvas SDK which allows for manipulating individual design elements through your code.
173 lines • 7.33 kB
JavaScript
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
extendStatics = Object.setPrototypeOf ||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
return extendStatics(d, b);
};
return function (d, b) {
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
})();
import { Color } from "./Color";
import { Utils } from "./Utils";
import { CmykComponentValidator } from "../Validators/CmykComponentValidator";
import { Clamp } from "../Math";
var CmykColor = /** @class */ (function (_super) {
__extends(CmykColor, _super);
function CmykColor(value) {
var _this = _super.call(this, value) || this;
_this.c = 255;
_this.m = 255;
_this.y = 255;
_this.k = 255;
_this.a = 255;
if (value == null)
return _this;
var incorrectCmykColorMessage = "Incorrect CmykColor format: " + JSON.stringify(value);
if (typeof value == "string") {
if (_this._tryInitFromPercentCmyk(value) || _this._tryInitFromRelativeCmyk(value) || _this._tryInitFromDeviceCmyk(value))
_this._previewFromServer = Utils.isValidRgbColor(_this.preview);
else
console.warn(incorrectCmykColorMessage);
}
else {
try {
_this._init(value);
}
catch (e) {
console.warn(incorrectCmykColorMessage);
}
}
return _this;
}
Object.defineProperty(CmykColor.prototype, "type", {
get: function () { return "CmykColor"; },
enumerable: true,
configurable: true
});
Object.defineProperty(CmykColor.prototype, "alpha", {
get: function () { return this.a; },
enumerable: true,
configurable: true
});
CmykColor.prototype._tryInitFromDeviceCmyk = function (value) {
var deviceCmykRegex = /^\s*device-cmyk\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*\,\s*(\d{1,3})\s*(\,\s*(\d{1,}(\.\d{1,})?))?\s*(\,\s*(.*)\s*)?\)\s*;{0,1}\s*$/g;
var match = deviceCmykRegex.exec(value);
if (match != null && match.length === 10) {
var cmyk = {
c: +match[1],
m: +match[2],
y: +match[3],
k: +match[4],
preview: match[9]
};
if (match[6] != undefined)
cmyk.a = this._convertRelativeToByte(match[6]);
this._init(cmyk);
return true;
}
return false;
};
CmykColor.prototype._tryInitFromPercentCmyk = function (value) {
var percentCmykRegex = /^\s*cmyk\(\s*(\d{1,3}(?:\.\d{1,})?)%\s*,\s*(\d{1,3}(?:\.\d{1,})?)%\s*,\s*(\d{1,3}(?:\.\d{1,})?)%\s*,\s*(\d{1,3}(?:\.\d{1,})?)%\s*(?:\,\s*(\d{1,3}(?:\.\d{1,})?)%)?\s*(?:\,\s*(.*)\s*)?\);{0,1}\s*$/g;
var match = percentCmykRegex.exec(value);
if (match != null && match.length === 7) {
new CmykComponentValidator(value, match, 100).validate();
var cmyk = {
c: Utils.convertPercentToByte(match[1]),
m: Utils.convertPercentToByte(match[2]),
y: Utils.convertPercentToByte(match[3]),
k: Utils.convertPercentToByte(match[4]),
preview: match[6]
};
if (match[5] != undefined)
cmyk.a = Utils.convertPercentToByte(match[5]);
this._init(cmyk);
return true;
}
return false;
};
CmykColor.prototype._tryInitFromRelativeCmyk = function (value) {
var relativeCmykRegex = /^\s*cmyk\(\s*(\d{1,3}(?:\.\d{1,})?)\s*,\s*(\d{1,3}(?:\.\d{1,})?)\s*,\s*(\d{1,3}(?:\.\d{1,})?)\s*,\s*(\d{1,3}(?:\.\d{1,})?)\s*(?:\,\s*(\d{1,3}(?:\.\d{1,})?))?\s*(?:\,\s*(.*)\s*)?\);{0,1}\s*$/g;
var match = relativeCmykRegex.exec(value);
if (match != null && match.length === 7) {
new CmykComponentValidator(value, match, 1).validate();
var cmyk = {
c: this._convertRelativeToByte(match[1]),
m: this._convertRelativeToByte(match[2]),
y: this._convertRelativeToByte(match[3]),
k: this._convertRelativeToByte(match[4]),
preview: match[6]
};
if (match[5] != undefined)
cmyk.a = this._convertAlpha(match[5]);
this._init(cmyk);
return true;
}
return false;
};
CmykColor.prototype._convertRelativeToByte = function (value) {
return Clamp(0, parseInt((parseFloat(value) * 255).toFixed(0)), 255);
};
CmykColor.prototype._convertAlpha = function (value) {
return Clamp(parseInt((parseFloat(value) * 255).toFixed(0)), 0, 255);
};
CmykColor.prototype.clone = function () {
return new CmykColor(this);
};
CmykColor.prototype.getData = function () {
var data = _super.prototype.getData.call(this);
data.c = this.c;
data.m = this.m;
data.y = this.y;
data.k = this.k;
data.a = this.a;
return data;
};
CmykColor.prototype.equals = function (color, ignorePreview) {
if (ignorePreview === void 0) { ignorePreview = false; }
if (!(color instanceof CmykColor))
return false;
var baseEquals = _super.prototype.equals.call(this, color, ignorePreview);
return baseEquals &&
color instanceof CmykColor &&
this.c === color.c &&
this.m === color.m &&
this.y === color.y &&
this.k === color.k &&
this.a === color.a;
};
CmykColor.prototype.toString = function () {
var result = "cmyk(" + this._toRelative(this.c) + "," + this._toRelative(this.m) + "," + this._toRelative(this.y) + "," + this._toRelative(this.k) + "," + this._toRelative(this.a);
if (this.preview != null)
result += "," + this.preview;
result += ")";
return result;
};
CmykColor.prototype._toRelative = function (component) {
return (component / 255).toFixed(7);
};
CmykColor.prototype._getPreview = function () {
return this.preview;
};
CmykColor.prototype._init = function (colorObject) {
_super.prototype._init.call(this, colorObject);
colorObject.a = colorObject.a != null ? colorObject.a : 255;
this._validateNumber(colorObject.c);
this._validateNumber(colorObject.m);
this._validateNumber(colorObject.y);
this._validateNumber(colorObject.k);
this._validateNumber(colorObject.a);
this.c = colorObject.c;
this.m = colorObject.m;
this.y = colorObject.y;
this.k = colorObject.k;
this.a = colorObject.a;
};
return CmykColor;
}(Color));
export { CmykColor };
//# sourceMappingURL=CmykColor.js.map