ConstAggregate finite-edge clamp fired after axis-specific gridEventsEnum.BOUNDARY_X / gridEventsEnum.BOUNDARY_Y.
X-axis requested outside row length while IOptions.infiniteX is falsy — coordinate clamped.
Y-axis requested outside matrix height while IOptions.infiniteY is falsy — coordinate clamped.
Dispatched at the end of construction (after optional initial GameGrid.render).
Dispatched from GameGrid.destroy; always fired even if the grid stayed headless or unmounted.
Target rejected by IOptions.blockOnType or IOptions.moveOnType allow-list; coords roll back.
Avatar entered an IOptions.collideOnType cell (movement may still succeed).
Avatar left a collide-type cell (IOptions.collideOnType) from the square it occupied before this move attempt.
Finished resolving block/collide boundary/wrap choreography; mirrors the onLand callback in IOptions.callbacks.
onMove already ran; precedes GameGrid.setActiveCell for keyboard/pointer navigation.
Dispatched after GameGrid.render wires the container; detail follows IGameGridEventDetail.
Aggregate wrap fired after gridEventsEnum.WRAP_X / gridEventsEnum.WRAP_Y repositioning with IOptions.infiniteX / IOptions.infiniteY enabled.
Horizontal infinite teleport to opposite edge (runs alongside onWrapX in IOptions.callbacks).
Vertical infinite teleport (runs alongside onWrapY in IOptions.callbacks).
Compatibility alias exporting the identical object references as gridEventsEnum.