Files
nothoughts/node_modules/pixi.js/lib/scene/container/container-mixins/childrenHelperMixin.mjs.map
2025-08-04 18:57:35 +02:00

1 line
14 KiB
Plaintext

{"version":3,"file":"childrenHelperMixin.mjs","sources":["../../../../src/scene/container/container-mixins/childrenHelperMixin.ts"],"sourcesContent":["import { removeItems } from '../../../utils/data/removeItems';\nimport { deprecation, v8_0_0 } from '../../../utils/logging/deprecation';\n\nimport type { Container, ContainerChild } from '../Container';\n\nexport interface ChildrenHelperMixin<C = ContainerChild>\n{\n allowChildren: boolean;\n addChild<U extends C[]>(...children: U): U[0];\n removeChild<U extends C[]>(...children: U): U[0];\n removeChildren(beginIndex?: number, endIndex?: number): C[];\n removeChildAt<U extends C>(index: number): U;\n getChildAt<U extends C>(index: number): U;\n setChildIndex(child: C, index: number): void;\n getChildIndex(child: C): number;\n addChildAt<U extends C>(child: U, index: number): U;\n swapChildren<U extends C>(child: U, child2: U): void;\n removeFromParent(): void;\n\n reparentChild<U extends C[]>(...child: U): U[0];\n reparentChildAt<U extends C>(child: U, index: number): U;\n}\n\nexport const childrenHelperMixin: Partial<Container> = {\n\n allowChildren: true,\n\n /**\n * Removes all children from this container that are within the begin and end indexes.\n * @param beginIndex - The beginning position.\n * @param endIndex - The ending position. Default value is size of the container.\n * @returns - List of removed children\n * @memberof scene.Container#\n */\n removeChildren(beginIndex = 0, endIndex?: number): ContainerChild[]\n {\n const end = endIndex ?? this.children.length;\n const range = end - beginIndex;\n const removed: ContainerChild[] = [];\n\n if (range > 0 && range <= end)\n {\n for (let i = end - 1; i >= beginIndex; i--)\n {\n const child = this.children[i];\n\n if (!child) continue;\n removed.push(child);\n child.parent = null;\n }\n\n removeItems(this.children, beginIndex, end);\n\n const renderGroup = this.renderGroup || this.parentRenderGroup;\n\n if (renderGroup)\n {\n renderGroup.removeChildren(removed);\n }\n\n for (let i = 0; i < removed.length; ++i)\n {\n this.emit('childRemoved', removed[i], this, i);\n removed[i].emit('removed', this);\n }\n\n return removed;\n }\n else if (range === 0 && this.children.length === 0)\n {\n return removed;\n }\n\n throw new RangeError('removeChildren: numeric values are outside the acceptable range.');\n },\n\n /**\n * Removes a child from the specified index position.\n * @param index - The index to get the child from\n * @returns The child that was removed.\n * @memberof scene.Container#\n */\n removeChildAt<U extends ContainerChild>(index: number): U\n {\n const child = this.getChildAt<U>(index);\n\n return this.removeChild(child);\n },\n\n /**\n * Returns the child at the specified index\n * @param index - The index to get the child at\n * @returns - The child at the given index, if any.\n * @memberof scene.Container#\n */\n getChildAt<U extends ContainerChild>(index: number): U\n {\n if (index < 0 || index >= this.children.length)\n {\n throw new Error(`getChildAt: Index (${index}) does not exist.`);\n }\n\n return this.children[index] as U;\n },\n\n /**\n * Changes the position of an existing child in the container container\n * @param child - The child Container instance for which you want to change the index number\n * @param index - The resulting index number for the child container\n * @memberof scene.Container#\n */\n setChildIndex(child: ContainerChild, index: number): void\n {\n if (index < 0 || index >= this.children.length)\n {\n throw new Error(`The index ${index} supplied is out of bounds ${this.children.length}`);\n }\n\n this.getChildIndex(child); // check if child exists\n this.addChildAt(child, index);\n },\n\n /**\n * Returns the index position of a child Container instance\n * @param child - The Container instance to identify\n * @returns - The index position of the child container to identify\n * @memberof scene.Container#\n */\n getChildIndex(child: ContainerChild): number\n {\n const index = this.children.indexOf(child);\n\n if (index === -1)\n {\n throw new Error('The supplied Container must be a child of the caller');\n }\n\n return index;\n },\n\n /**\n * Adds a child to the container at a specified index. If the index is out of bounds an error will be thrown.\n * If the child is already in this container, it will be moved to the specified index.\n * @param {Container} child - The child to add.\n * @param {number} index - The absolute index where the child will be positioned at the end of the operation.\n * @returns {Container} The child that was added.\n * @memberof scene.Container#\n */\n addChildAt<U extends ContainerChild>(child: U, index: number): U\n {\n // #if _DEBUG\n if (!this.allowChildren)\n {\n deprecation(v8_0_0, 'addChildAt: Only Containers will be allowed to add children in v8.0.0');\n }\n // #endif\n\n const { children } = this;\n\n if (index < 0 || index > children.length)\n {\n throw new Error(`${child}addChildAt: The index ${index} supplied is out of bounds ${children.length}`);\n }\n\n // TODO - check if child is already in the list?\n // we should be able to optimise this!\n\n if (child.parent)\n {\n const currentIndex = child.parent.children.indexOf(child);\n\n // If this child is in the container and in the same position, do nothing\n if (child.parent === this && currentIndex === index)\n {\n return child;\n }\n\n if (currentIndex !== -1)\n {\n child.parent.children.splice(currentIndex, 1);\n }\n }\n\n if (index === children.length)\n {\n children.push(child);\n }\n else\n {\n children.splice(index, 0, child);\n }\n\n child.parent = this;\n child.didChange = true;\n child.didViewUpdate = false;\n child._updateFlags = 0b1111;\n\n const renderGroup = this.renderGroup || this.parentRenderGroup;\n\n if (renderGroup)\n {\n renderGroup.addChild(child);\n }\n\n if (this.sortableChildren) this.sortDirty = true;\n\n this.emit('childAdded', child, this, index);\n child.emit('added', this);\n\n return child;\n },\n /**\n * Swaps the position of 2 Containers within this container.\n * @param child - First container to swap\n * @param child2 - Second container to swap\n */\n swapChildren<U extends ContainerChild>(child: U, child2: U): void\n {\n if (child === child2)\n {\n return;\n }\n\n const index1 = this.getChildIndex(child);\n const index2 = this.getChildIndex(child2);\n\n this.children[index1] = child2;\n this.children[index2] = child;\n\n const renderGroup = this.renderGroup || this.parentRenderGroup;\n\n if (renderGroup)\n {\n renderGroup.structureDidChange = true;\n }\n\n this._didContainerChangeTick++;\n },\n /**\n * Remove the Container from its parent Container. If the Container has no parent, do nothing.\n * @memberof scene.Container#\n */\n removeFromParent()\n {\n this.parent?.removeChild(this);\n },\n\n /**\n * Reparent the child to this container, keeping the same worldTransform.\n * @param child - The child to reparent\n * @returns The first child that was reparented.\n * @memberof scene.Container#\n */\n reparentChild<U extends ContainerChild[]>(...child: U): U[0]\n {\n if (child.length === 1)\n {\n return this.reparentChildAt(child[0], this.children.length);\n }\n\n child.forEach((c) => this.reparentChildAt(c, this.children.length));\n\n return child[0];\n },\n\n /**\n * Reparent the child to this container at the specified index, keeping the same worldTransform.\n * @param child - The child to reparent\n * @param index - The index to reparent the child to\n * @memberof scene.Container#\n */\n reparentChildAt<U extends ContainerChild>(child: U, index: number): U\n {\n if (child.parent === this)\n {\n this.setChildIndex(child, index);\n\n return child;\n }\n\n const childMat = child.worldTransform.clone();\n\n child.removeFromParent();\n this.addChildAt(child, index);\n\n const newMatrix = this.worldTransform.clone();\n\n newMatrix.invert();\n childMat.prepend(newMatrix);\n\n child.setFromMatrix(childMat);\n\n return child;\n }\n} as Container;\n"],"names":[],"mappings":"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"}