@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.
51 lines • 2.05 kB
JavaScript
import { ModelComponent } from "./ModelComponent";
import { Collection } from "../Collection";
export class SurfaceMockup extends ModelComponent {
constructor(downContainers = [], upContainers = []) {
super();
this.parentSurface = null;
this._underContainers = new Collection();
this._overContainers = new Collection();
this._onContainerAdded = ({ item: container }) => {
container.parentComponent = this;
};
this.underContainers.add_itemAdded(this._onContainerAdded);
this.underContainers.setRange(downContainers);
this.overContainers.add_itemAdded(this._onContainerAdded);
this.overContainers.setRange(upContainers);
}
isEmpty() {
return this.underContainers
.concat(this.overContainers)
.all(c => c.items.empty);
}
get underContainers() {
return this._underContainers;
}
get overContainers() {
return this._overContainers;
}
get allContainers() {
return this._overContainers.concat(this._underContainers);
}
getSimplifiedObject() {
var simplified = super.getSimplifiedObject(["parentSurface", "allContainers"]);
return simplified;
}
clone(generateNewIds = false) {
const surfaceMockup = new SurfaceMockup();
this._copy(this, surfaceMockup, generateNewIds);
return surfaceMockup;
}
generateNewIds() {
this._generateNewId();
this._underContainers.forEach(i => i.generateNewIds());
this._overContainers.forEach(i => i.generateNewIds());
}
_copy(source, destination, generateNewIds) {
super._copy(source, destination, generateNewIds);
destination.underContainers.addRange(source.underContainers.toArray().map(c => c.clone(generateNewIds)));
destination.overContainers.addRange(source.overContainers.toArray().map(c => c.clone(generateNewIds)));
}
}
//# sourceMappingURL=SurfaceMockup.js.map