Class: ParentTrait
traits.ParentTrait
Important trait
Entity will behave as container to hold all other entities with ChildTrait
.
Has many methods for adding, fetching, removing and manipulating order of children.
Can behave as:
- an array - all children are indexed next to each other
- a map - there can be empty spaces between children
Constructors
constructor
• new ParentTrait()
Other Properties
childAdded
• childAdded: ChildAddedHandler
childRemoved
• childRemoved: ChildRemovedHandler
ParentTrait Properties
childrenPointers
• childrenPointers: Map
<ChildTrait
, string
>
ChildTrait object -> its constructor's name Also good spot to count all children
collectionBehaviour
• collectionBehaviour: "map"
| "array"
How children and their indexes behave when added into or removed from this parent.
- array: there can be no empty spots, children will always move to fill in the gaps
- map: no automatic movement is performed, adding to first empty spot, otherwise you need to ensure given spot isn't occupied
Default
"array"
hijacksInteractionTarget
• hijacksInteractionTarget: boolean
Used by ChildTrait.isInteractive
.
If set to true, will prevent its direct children from getting interaction events.
maxChildren
• maxChildren: number
Default
Infinity
Methods
addChild
▸ addChild(entity
): void
Adds new item.
Parameters
Name | Type |
---|---|
entity | ChildTrait |
Returns
void
▸ addChild(entity
, prepend
): void
Adds new item.
Parameters
Name | Type |
---|---|
entity | ChildTrait |
prepend | boolean |
Returns
void
▸ addChild(entity
, atIndex
): void
Adds new item.
Parameters
Name | Type | Description |
---|---|---|
entity | ChildTrait | |
atIndex | number | squeeze into desired spot, moving other children away. |
Returns
void
▸ addChild(entity
, arg1
): void
Adds new item.
Parameters
Name | Type |
---|---|
entity | ChildTrait |
arg1 | number | boolean |
Returns
void
addChildren
▸ addChildren(entities
): void
Parameters
Name | Type |
---|---|
entities | ChildTrait [] |
Returns
void
countChildren
▸ countChildren(): number
Number of child elements
Returns
number
getBottom
▸ getBottom<T
>(): T
Get the element with the lowest 'idx' value
Type parameters
Name | Type |
---|---|
T | extends ChildTrait <T > |
Returns
T
getChild
▸ getChild<T
>(idx
): T
Get one direct child of parent
by its idx
Type parameters
Name | Type |
---|---|
T | extends ChildTrait <T > |
Parameters
Name | Type |
---|---|
idx | number |
Returns
T
getChildren
▸ getChildren<T
>(): T
[]
Gets all direct children in array form, "sorted" by idx
Type parameters
Name | Type |
---|---|
T | extends ChildTrait <T > |
Returns
T
[]
getClosestEmptySpot
▸ getClosestEmptySpot(index
): number
unused?
Parameters
Name | Type |
---|---|
index | number |
Returns
number
getFirstEmptySpot
▸ getFirstEmptySpot(): number
For map behaviour, seeks out first available spot, starting from index 0. Arrays don't have gaps, so first "available" spot is always after last child.
Returns
number
index of first vacant spot, or -1 if no spot is available
getLastEmptySpot
▸ getLastEmptySpot(): number
unused?
Returns
number
getTop
▸ getTop<T
>(): T
Get the element with highest 'idx' value
Type parameters
Name | Type |
---|---|
T | extends ChildTrait <T > |
Returns
T
indexFits
▸ indexFits(index
): boolean
Does index fit in range of this container.
Doesn't check if index is occupied.
Considering maxChildren
and if index is negative or otherwise invalid.
Parameters
Name | Type |
---|---|
index | number |
Returns
boolean
move
▸ Protected
move(where
, start
, end?
): IndexUpdate
[]
Takes care of manipulating indexes, and updating every internal things related to children spot movements
Parameters
Name | Type | Description |
---|---|---|
where | number | direction and range. (+1) - one up, (-2) - two in direction of array start |
start | number | left-most child to manipulate |
end? | number | rightmost child, omit to have only one child moved |
Returns
IndexUpdate
[]
moveChildTo
▸ moveChildTo(from
, to
): void
In array, moves child to target idx, rearranging everything between from
and to
.
In map, swaps children at from
and to
(for now...)
Parameters
Name | Type | Description |
---|---|---|
from | number | index of child to move |
to | number | desired target position |
Returns
void
query
▸ query<T
>(props
): T
Find one item matching props.
Type parameters
Name | Type |
---|---|
T | extends ChildTrait <T > |
Parameters
Name | Type |
---|---|
props | QuerableProps |
Returns
T
queryAll
▸ queryAll<T
>(props
): T
[]
Looks for every matching entity here and deeper
Type parameters
Name | Type |
---|---|
T | extends ChildTrait <T > |
Parameters
Name | Type |
---|---|
props | QuerableProps |
Returns
T
[]
removeChild
▸ removeChild(child
): boolean
Parameters
Name | Type |
---|---|
child | ChildTrait |
Returns
boolean
removeChildAt
▸ removeChildAt(idx
): boolean
Parameters
Name | Type |
---|---|
idx | number |
Returns
boolean