in packages/maker.js/src/core/model.ts [250:304]
export function mirror(modelToMirror: IModel, mirrorX: boolean, mirrorY: boolean): IModel {
var newModel: IModel = {};
if (!modelToMirror) return null;
if (modelToMirror.origin) {
newModel.origin = point.mirror(modelToMirror.origin, mirrorX, mirrorY);
}
if (modelToMirror.type) {
newModel.type = modelToMirror.type;
}
if ('layer' in modelToMirror) {
newModel.layer = modelToMirror.layer;
}
if (modelToMirror.units) {
newModel.units = modelToMirror.units;
}
if (modelToMirror.type === models.BezierCurve.typeName) {
newModel.type = models.BezierCurve.typeName;
(newModel as models.BezierCurve).seed = path.mirror((modelToMirror as models.BezierCurve).seed, mirrorX, mirrorY) as IPathBezierSeed;
}
if (modelToMirror.paths) {
newModel.paths = {};
for (var id in modelToMirror.paths) {
var pathToMirror = modelToMirror.paths[id];
if (!pathToMirror) continue;
var pathMirrored = path.mirror(pathToMirror, mirrorX, mirrorY);
if (!pathMirrored) continue;
newModel.paths[id] = pathMirrored;
}
}
if (modelToMirror.models) {
newModel.models = {};
for (var id in modelToMirror.models) {
var childModelToMirror = modelToMirror.models[id];
if (!childModelToMirror) continue;
var childModelMirrored = mirror(childModelToMirror, mirrorX, mirrorY);
if (!childModelMirrored) continue;
newModel.models[id] = childModelMirrored;
}
}
if (modelToMirror.caption) {
newModel.caption = cloneObject(modelToMirror.caption);
newModel.caption.anchor = path.mirror(modelToMirror.caption.anchor, mirrorX, mirrorY) as IPathLine;
}
return newModel;
}