UNPKG

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">

140 lines (137 loc) 4.44 kB
import { removeItems } from '../../../utils/data/removeItems.mjs'; import { deprecation, v8_0_0 } from '../../../utils/logging/deprecation.mjs'; "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(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(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; } }; export { childrenHelperMixin }; //# sourceMappingURL=childrenHelperMixin.mjs.map