@wcardinal/wcardinal-geditor
Version:
WebGL-based graphic editor, tester and viewer for supervisory systems
128 lines • 4.69 kB
JavaScript
import { UtilShapeSearch } from "./util-shape-search";
var UtilShapeDeleter = /** @class */ (function () {
function UtilShapeDeleter() {
}
UtilShapeDeleter.addAll = function (shapes, result) {
for (var i = 0, imax = shapes.length; i < imax; ++i) {
var shape = shapes[i];
result.add(shape);
this.addAll(shape.children, result);
}
return result;
};
UtilShapeDeleter.delete = function (parent, shapes, generateDeletedShapeList, deletedShapeSet) {
var _a;
var children = parent.children;
var length = children.length;
// Update indices
deletedShapeSet !== null && deletedShapeSet !== void 0 ? deletedShapeSet : (deletedShapeSet = (_a = UtilShapeDeleter.EXCEPTIONS) !== null && _a !== void 0 ? _a : (UtilShapeDeleter.EXCEPTIONS = new Set()));
for (var i = 0; i < length; ++i) {
var child = children[i];
if (child.selected) {
child.index = length + i;
deletedShapeSet.add(child);
this.addAll(child.children, deletedShapeSet);
}
else {
child.index = i;
}
}
// Sort
children.sort(UtilShapeSearch.COMPARATOR_INDEX);
// Detach
if (generateDeletedShapeList === true) {
for (var i = length - 1; 0 <= i; --i) {
var child = children[i];
if (child.selected) {
child.index -= length;
child.parent = null;
child.selected = false;
child.uploaded = undefined;
child.onDetach(deletedShapeSet);
}
else {
if (UtilShapeDeleter.EXCEPTIONS === deletedShapeSet) {
deletedShapeSet.clear();
}
var size = children.length - (i + 1);
if (0 < size) {
var result = children.splice(i + 1, size);
if (shapes != null) {
shapes.length = 0;
}
parent.onChildTransformChange();
parent.toDirty();
return result;
}
else {
if (shapes != null) {
shapes.length = 0;
}
return null;
}
}
}
if (UtilShapeDeleter.EXCEPTIONS === deletedShapeSet) {
deletedShapeSet.clear();
}
if (0 < children.length) {
var result = children.splice(0, children.length);
if (shapes != null) {
shapes.length = 0;
}
parent.onChildTransformChange();
parent.toDirty();
return result;
}
else {
if (shapes != null) {
shapes.length = 0;
}
return null;
}
}
else {
for (var i = length - 1; 0 <= i; --i) {
var child = children[i];
if (child.selected) {
child.parent = null;
child.selected = false;
child.uploaded = undefined;
child.onDetach(deletedShapeSet);
}
else {
if (UtilShapeDeleter.EXCEPTIONS === deletedShapeSet) {
deletedShapeSet.clear();
}
children.length = i + 1;
if (shapes != null) {
shapes.length = 0;
}
parent.onChildTransformChange();
parent.toDirty();
return null;
}
}
if (UtilShapeDeleter.EXCEPTIONS === deletedShapeSet) {
deletedShapeSet.clear();
}
if (0 < children.length) {
children.length = 0;
if (shapes != null) {
shapes.length = 0;
}
parent.onChildTransformChange();
parent.toDirty();
}
else {
if (shapes != null) {
shapes.length = 0;
}
}
return null;
}
};
return UtilShapeDeleter;
}());
export { UtilShapeDeleter };
//# sourceMappingURL=util-shape-deleter.js.map