@aurigma/design-atoms
Version:
Design Atoms is a part of Customer's Canvas SDK which allows for manipulating individual design elements through your code.
88 lines • 3.81 kB
JavaScript
import * as _ from "underscore";
import { ProductParser } from "./ProductParser";
import { ModelComponent } from "@aurigma/design-atoms-model/Product/ModelComponent";
import { Color } from "@aurigma/design-atoms-model/Colors";
import { Color as ColorNew } from "@aurigma/design-atoms-model/Colors/Color";
import { Transform } from "@aurigma/design-atoms-model/Math/Transform";
import { Path, SizeF } from "@aurigma/design-atoms-model/Math";
import { SafetyLine } from "@aurigma/design-atoms-model/Product/SafetyLine";
import { Collection } from "@aurigma/design-atoms-model/Collection";
import { OverlayEffect } from "@aurigma/design-atoms-model/Product/Items/OverlayEffect";
var JsonProductSerializer = /** @class */ (function () {
function JsonProductSerializer(additionalConverters) {
this._additionalConverters = _.isArray(additionalConverters) ? additionalConverters : [];
this.productParser = new ProductParser(additionalConverters);
}
JsonProductSerializer.prototype.deserialize = function (json) {
var rawProduct = json;
if (typeof json === "string") {
rawProduct = JSON.parse(json);
}
if (!_.isObject(rawProduct)) {
return null;
}
return this.productParser.parseProduct(rawProduct);
};
JsonProductSerializer.prototype.serialize = function (product, forServer) {
return this.serializeModelComponent(product, forServer);
};
JsonProductSerializer.prototype.serializeModelComponent = function (component, forServer) {
var _this = this;
if (forServer == null)
forServer = false;
var componentReviewer = function (key, value) {
if (value instanceof ModelComponent) {
return value.getSimplifiedObject();
}
if (value instanceof Color) {
return value.getData();
}
if (value instanceof ColorNew) {
return value.getData();
}
if (value instanceof Transform) {
return {
"scaleX": value.scaleX,
"scaleY": value.scaleY,
"translateX": value.translateX,
"translateY": value.translateY,
"angle": value.angle
};
}
if (value instanceof SafetyLine) {
return {
"name": value.name,
"altColor": value.altColor,
"color": value.color,
"margin": value.margin,
"stepPx": value.stepPx,
"widthPx": value.widthPx,
"borderRadius": value.borderRadius,
"pdfBox": value.pdfBox
};
}
if (value instanceof SizeF) {
return value.width + ", " + value.height;
}
if (value instanceof Path) {
return value.toString();
}
if (value instanceof Collection) {
return value.toArray();
}
if (value instanceof OverlayEffect) {
return value.getSimplifiedObject();
}
var converter = _.find(_this._additionalConverters, function (c) { return value instanceof c.typeCtor; });
if (converter != null) {
value = _.clone(value);
value["$type"] = converter.type;
}
return value;
};
return JSON.stringify(component, componentReviewer, 2);
};
return JsonProductSerializer;
}());
export { JsonProductSerializer };
//# sourceMappingURL=JsonProductSerializer.js.map