pixi.js
Version:
<p align="center"> <a href="https://pixijs.com" target="_blank" rel="noopener noreferrer"> <img height="150" src="https://files.pixijs.download/branding/pixijs-logo-transparent-dark.svg?v=1" alt="PixiJS logo"> </a> </p> <br/> <p align="center">
142 lines (138 loc) • 4.5 kB
JavaScript
'use strict';
var removeItems = require('../../../utils/data/removeItems.js');
var deprecation = require('../../../utils/logging/deprecation.js');
"use strict";
const childrenHelperMixin = {
allowChildren: true,
removeChildren(beginIndex = 0, endIndex) {
const end = endIndex ?? this.children.length;
const range = end - beginIndex;
const removed = [];
if (range > 0 && range <= end) {
for (let i = end - 1; i >= beginIndex; i--) {
const child = this.children[i];
if (!child)
continue;
removed.push(child);
child.parent = null;
}
removeItems.removeItems(this.children, beginIndex, end);
const renderGroup = this.renderGroup || this.parentRenderGroup;
if (renderGroup) {
renderGroup.removeChildren(removed);
}
for (let i = 0; i < removed.length; ++i) {
const child = removed[i];
child.parentRenderLayer?.detach(child);
this.emit("childRemoved", child, this, i);
removed[i].emit("removed", this);
}
if (removed.length > 0) {
this._didViewChangeTick++;
}
return removed;
} else if (range === 0 && this.children.length === 0) {
return removed;
}
throw new RangeError("removeChildren: numeric values are outside the acceptable range.");
},
removeChildAt(index) {
const child = this.getChildAt(index);
return this.removeChild(child);
},
getChildAt(index) {
if (index < 0 || index >= this.children.length) {
throw new Error(`getChildAt: Index (${index}) does not exist.`);
}
return this.children[index];
},
setChildIndex(child, index) {
if (index < 0 || index >= this.children.length) {
throw new Error(`The index ${index} supplied is out of bounds ${this.children.length}`);
}
this.getChildIndex(child);
this.addChildAt(child, index);
},
getChildIndex(child) {
const index = this.children.indexOf(child);
if (index === -1) {
throw new Error("The supplied Container must be a child of the caller");
}
return index;
},
addChildAt(child, index) {
if (!this.allowChildren) {
deprecation.deprecation(deprecation.v8_0_0, "addChildAt: Only Containers will be allowed to add children in v8.0.0");
}
const { children } = this;
if (index < 0 || index > children.length) {
throw new Error(`${child}addChildAt: The index ${index} supplied is out of bounds ${children.length}`);
}
if (child.parent) {
const currentIndex = child.parent.children.indexOf(child);
if (child.parent === this && currentIndex === index) {
return child;
}
if (currentIndex !== -1) {
child.parent.children.splice(currentIndex, 1);
}
}
if (index === children.length) {
children.push(child);
} else {
children.splice(index, 0, child);
}
child.parent = this;
child.didChange = true;
child._updateFlags = 15;
const renderGroup = this.renderGroup || this.parentRenderGroup;
if (renderGroup) {
renderGroup.addChild(child);
}
if (this.sortableChildren)
this.sortDirty = true;
this.emit("childAdded", child, this, index);
child.emit("added", this);
return child;
},
swapChildren(child, child2) {
if (child === child2) {
return;
}
const index1 = this.getChildIndex(child);
const index2 = this.getChildIndex(child2);
this.children[index1] = child2;
this.children[index2] = child;
const renderGroup = this.renderGroup || this.parentRenderGroup;
if (renderGroup) {
renderGroup.structureDidChange = true;
}
this._didContainerChangeTick++;
},
removeFromParent() {
this.parent?.removeChild(this);
},
reparentChild(...child) {
if (child.length === 1) {
return this.reparentChildAt(child[0], this.children.length);
}
child.forEach((c) => this.reparentChildAt(c, this.children.length));
return child[0];
},
reparentChildAt(child, index) {
if (child.parent === this) {
this.setChildIndex(child, index);
return child;
}
const childMat = child.worldTransform.clone();
child.removeFromParent();
this.addChildAt(child, index);
const newMatrix = this.worldTransform.clone();
newMatrix.invert();
childMat.prepend(newMatrix);
child.setFromMatrix(childMat);
return child;
}
};
exports.childrenHelperMixin = childrenHelperMixin;
//# sourceMappingURL=childrenHelperMixin.js.map