// import * as Phaser from 'phaser'; import Container from '../container/Container'; // ContainerLite import GetBoundsConfig from '../../../plugins/utils/bounds/GetBoundsConfig'; import Anchor from '../anchor/Anchor'; import Click from '../click/Click'; import ClickOutside from '../clickoutside/ClickOutside'; import InTouching from '../intouching/InTouching'; import SetChildrenInteractive from '../utils/setchildreninteractive/SetChildrenInteractive'; import { ModalBehavoir } from '../modal/Modal'; export default BaseSizer; declare namespace BaseSizer { type AlignTypes = number | 'center' | 'left' | 'right' | 'top' | 'bottom' | 'left-top' | 'left-center' | 'left-bottom' | 'center-top' | 'center-center' | 'center-bottom' | 'right-top' | 'right-center' | 'right-bottom'; type PaddingTypes = GetBoundsConfig.PaddingConfigType; interface IConfig { space?: { /** * Left space. */ left?: number, /** * Right space. */ right?: number, /** * Top space. */ top?: number, /** * Bottom space. */ bottom?: number, }, /** * Anchor configuration. */ anchor?: Anchor.IConfig, /** * Origin applied to both axes. */ origin?: number, /** * Origin x value. */ originX?: number, /** * Origin y value. */ originY?: number, /** * Optional name for this sizer. */ name?: string, /** * True to enable layer support. */ enableLayer?: boolean, /** * Draggable config or target key/object. */ draggable?: boolean | string | Phaser.GameObjects.GameObject, /** * True to emit sizer events. */ sizerEvents?: boolean, } type PrevState = { /** * Previous x position. */ x: number, /** * Previous y position. */ y: number, /** * Previous width. */ width: number, /** * Previous height. */ height: number, /** * Previous display width. */ displayWidth: number, /** * Previous display height. */ displayHeight: number, /** * Previous scale x. */ scaleX: number, /** * Previous scale y. */ scaleY: number } interface IDrawBoundsConfig { /** * Line color. */ color?: number, /** * Line width. */ lineWidth?: number, /** * Name label config or enabled flag. */ name?: boolean | { /** * Create label text object. */ createTextCallback: (scene: Phaser.Scene) => Phaser.GameObjects.GameObject, /** * Callback scope for createTextCallback. */ createTextCallbackScope?: object, /** * Label alignment. */ align?: BaseSizer.AlignTypes } } interface IAnchorConfig { /** * Left anchor target. */ left?: string, /** * Right anchor target. */ right?: string, /** * Center X anchor target. */ centerX?: string, /** * X anchor target. */ x?: string, /** * Top anchor target. */ top?: string, /** * Bottom anchor target. */ bottom?: string, /** * Center Y anchor target. */ centerY?: string, /** * Y anchor target. */ y?: string } interface IDraggableConfig { /** * Sensor object, key, or boolean to enable sensor. */ sensor?: boolean | string | Phaser.GameObjects.GameObject, /** * Target game object to drag. */ target?: Phaser.GameObjects.GameObject, /** * True to enable dragging. */ draggable?: boolean, } interface IPadding { /** * Left padding. */ left?: number, /** * Right padding. */ right?: number, /** * Top padding. */ top?: number, /** * Bottom padding. */ bottom?: number } /** * Click callback signature. * @param click - Click component instance. * @param gameObject - Target game object. * @param pointer - Input pointer. * @param event - Input event data. */ type OnClickCallbackType = ( click: Click, gameObject: Phaser.GameObjects.GameObject, pointer: Phaser.Input.Pointer, event: Phaser.Types.Input.EventData ) => void /** * Click-outside callback signature. * @param clickOutside - ClickOutside component instance. * @param gameObject - Target game object. * @param pointer - Input pointer. */ type OnClickOutsideCallbackType = ( clickOutside: ClickOutside, gameObject: Phaser.GameObjects.GameObject, pointer: Phaser.Input.Pointer ) => void; /** * Touching callback signature. * @param inTouch - InTouching component instance. * @param gameObject - Target game object. * @param pointer - Input pointer. */ type OnTouchingCallbackType = ( inTouch: InTouching, gameObject: Phaser.GameObjects.GameObject, pointer: Phaser.Input.Pointer, ) => void; /** * Touching end callback signature. * @param inTouch - InTouching component instance. * @param gameObject - Target game object. * @param pointer - Input pointer. */ type OnTouchingEndCallbackType = ( inTouch: InTouching, gameObject: Phaser.GameObjects.GameObject, pointer: Phaser.Input.Pointer, ) => void; /** * Pointer over callback signature. * @param pointer - Input pointer. * @param localX - Local x position. * @param localY - Local y position. * @param event - Input event data. */ type OnOverCallbackType = ( pointer: Phaser.Input.Pointer, localX: number, localY: number, event: Phaser.Types.Input.EventData ) => void; /** * Pointer out callback signature. * @param pointer - Input pointer. * @param event - Input event data. */ type OnOutCallbackType = ( pointer: Phaser.Input.Pointer, event: Phaser.Types.Input.EventData ) => void /** * Modal close callback signature. * @param data - Close event payload. */ type OnModalCloseCallbackType = ( data: Object ) => void; } /** * Base class for rexUI sizers with layout and interaction helpers. * @remarks Provides layout, alignment, and input behaviors for child objects. */ declare class BaseSizer extends Container { /** * Type flag for rex sizers. */ isRexSizer: true; /** * Named spacing values used by this sizer. */ space: { [name: string]: number }; /** * Create a BaseSizer instance. * @param scene - The Scene to which this object belongs. * @param x - The x position of the sizer. * @param y - The y position of the sizer. * @param minWidth - Minimum width of the sizer. * @param minHeight - Minimum height of the sizer. * @param config - Configuration options. */ constructor( scene: Phaser.Scene, x?: number, y?: number, minWidth?: number, minHeight?: number, config?: BaseSizer.IConfig ); /** * Set minimum width and height. * @param minWidth - Minimum width. * @param minHeight - Minimum height. * @returns This instance. */ setMinSize(minWidth: number, minHeight: number): this; /** * Set minimum width. * @param minWidth - Minimum width. * @returns This instance. */ setMinWidth(minWidth: number): this; /** * Set minimum height. * @param minHeight - Minimum height. * @returns This instance. */ setMinHeight(minHeight: number): this; /** * Minimum width value. */ minWidth: number; /** * Minimum height value. */ minHeight: number; /** * Mark this sizer as dirty or clean. * @remarks Dirty elements skip layout() and default to true unless changed manually. * @param dirty - True to mark dirty, false to mark clean. * @returns This instance. */ setDirty(dirty?: boolean): this; /** * Enable or disable sizer events. * @param enable - True to enable. * @returns This instance. */ setSizerEventsEnable(enable?: boolean): this; /** * True if sizer events are enabled. */ sizerEventsEnable: boolean; /** * Left edge position. */ left: number; /** * Align left edge to a value. * @param value - Target left value. * @returns This instance. */ alignLeft(value: number): this; /** * Right edge position. */ right: number; /** * Align right edge to a value. * @param value - Target right value. * @returns This instance. */ alignRight(value: number): this; /** * Horizontal center position. */ centerX: number; /** * Align horizontal center to a value. * @param value - Target center x value. * @returns This instance. */ alignCenterX(value: number): this; /** * Top edge position. */ top: number; /** * Align top edge to a value. * @param value - Target top value. * @returns This instance. */ alignTop(value: number): this; /** * Bottom edge position. */ bottom: number; /** * Align bottom edge to a value. * @param value - Target bottom value. * @returns This instance. */ alignBottom(value: number): this; /** * Vertical center position. */ centerY: number; /** * Align vertical center to a value. * @param value - Target center y value. * @returns This instance. */ alignCenterY(value: number): this; /** * Clamp the sizer within bounds. * @param bounds - The bounds to clamp to. * @returns This instance. */ pushIntoBounds( bounds?: Phaser.Geom.Rectangle | BaseSizer.IPadding ): this; /** * Inner left edge after padding. */ readonly innerLeft: number; /** * Inner right edge after padding. */ readonly innerRight: number; /** * Inner top edge after padding. */ readonly innerTop: number; /** * Inner bottom edge after padding. */ readonly innerBottom: number; /** * Inner width after padding. */ readonly innerWidth: number; /** * Inner height after padding. */ readonly innerHeight: number; /** * Minimum inner width after padding. */ readonly minInnerWidth: number; /** * Minimum inner height after padding. */ readonly minInnerHeight: number; /** * Add a background game object. * @param gameObject - Background object to add. * @param padding - Padding applied to the background. * @param childKey - Optional key to register the background. * @returns This instance. */ addBackground( gameObject: Phaser.GameObjects.GameObject, padding?: BaseSizer.PaddingTypes, childKey?: string ): this; /** * Check if a game object is a background. * @param gameObject - The game object to check. * @returns True if the object is a background. */ isBackground( gameObject: Phaser.GameObjects.GameObject ): boolean; /** * Perform layout on this sizer. * @returns This instance. */ layout(): this; /** * Enable or disable layout warnings. * @param enable - True to enable warnings. * @returns This instance. */ enableLayoutWarn(enable?: boolean): this; /** * Draw bounds using a Graphics object. * @param graphics - The Graphics object to draw to. * @param color - Line color. * @returns This instance. */ drawBounds( graphics: Phaser.GameObjects.Graphics, color?: number ): this; /** * Draw bounds using a Graphics object with options. * @param graphics - The Graphics object to draw to. * @param config - Draw options. * @returns This instance. */ drawBounds( graphics: Phaser.GameObjects.Graphics, config?: BaseSizer.IDrawBoundsConfig ): this; /** * Mapping of named children. */ childrenMap: { [key: string]: Phaser.GameObjects.GameObject }; /** * Add a child to the named map. * @param key - Name to register. * @param gameObject - The child to register. * @returns This instance. */ addChildrenMap( key: string, gameObject: Phaser.GameObjects.GameObject ): this; /** * Add multiple named children at once. * @param config - Key to game object map. * @returns This instance. */ addChildrenMap( config: { [key: string]: Phaser.GameObjects.GameObject } ): this; /** * Remove this sizer from its parent sizer. * @returns This instance. */ removeFromParentSizer(): this; /** * Remove a background object. * @param gameObject - The background to remove. * @param destroyChild - True to destroy the background. * @returns This instance. */ removeBackground( gameObject: Phaser.GameObjects.GameObject, destroyChild?: boolean ): this; /** * Remove all background objects. * @param destroyChild - True to destroy removed backgrounds. * @returns This instance. */ removeAllBackgrounds(destroyChild?: boolean): this; /** * Callback used when removing a child. * @param gameObject - The child being removed. * @param destroyChild - True to destroy the child. * @returns This instance. */ removeChildCallback( gameObject: Phaser.GameObjects.GameObject, destroyChild?: boolean ): this; /** * Remove a named child from the map. * @param key - Name of the child to remove. * @returns This instance. */ removeChildrenMap(key: string): this; /** * Remove a child from the map by object. * @param gameObject - The child to remove. * @returns This instance. */ removeChildrenMap(gameObject: Phaser.GameObjects.GameObject): this; /** * Get a child or children by name. * @param name - The name to search for. * @param recursive - True to search recursively. * @returns The matched child, children array, map, or null. */ getElement( name: string, recursive?: boolean ): Phaser.GameObjects.GameObject | Phaser.GameObjects.GameObject[] | { [name: string]: Phaser.GameObjects.GameObject } | null; /** * Get a child index or key. * @param child - The child to look up. * @returns The index, key, or null. */ getChildIndex( child: Phaser.GameObjects.GameObject ): number | string | null; /** * Get parent sizer by name. * @param name - Optional parent name to match. * @returns The matched parent sizer or null. */ getParentSizer( name?: string ): BaseSizer | null; /** * Get parent sizer of a game object. * @param gameObject - The child game object. * @param name - Optional parent name to match. * @returns The matched parent sizer or null. */ getParentSizer( gameObject?: Phaser.GameObjects.GameObject, name?: string ): BaseSizer | null; /** * Get the topmost sizer for a game object. * @param gameObject - The child game object. * @returns The topmost sizer or null. */ getTopmostSizer( gameObject?: Phaser.GameObjects.GameObject ): BaseSizer | null; /** * Check if a game object has a parent sizer. * @param parentGameObject - The parent candidate. * @param gameObject - The child to check. * @returns True if the parent relationship exists. */ hasParentSizer( parentGameObject: Phaser.GameObjects.GameObject, gameObject?: Phaser.GameObjects.GameObject ): boolean; /** * Check if a game object is a child of another. * @param childGameObject - The child candidate. * @param gameObject - The parent to check. * @returns True if the child relationship exists. */ hasChild( childGameObject: Phaser.GameObjects.GameObject, gameObject?: Phaser.GameObjects.GameObject ): boolean; /** * Get the sizer configuration for a child. * @param gameObject - The child to query. * @returns The sizer configuration object. */ getSizerConfig( gameObject?: Phaser.GameObjects.GameObject ): { [name: string]: any }; /** * Get the previous state for a child. * @param gameObject - The child to query. * @returns The previous state snapshot. */ getChildPrevState( gameObject: Phaser.GameObjects.GameObject ): BaseSizer.PrevState; /** * Check if any touch is active on this sizer. * @returns True if in touching state. */ isInTouching(): boolean; /** * Check if a pointer is touching this sizer or a child. * @param pointer - The input pointer. * @param gameObject - Optional child or name to test. * @returns True if in touching state. */ isInTouching( pointer: Phaser.Input.Pointer, gameObject?: Phaser.GameObjects.GameObject | string ): boolean; /** * Check if any pointer is touching this sizer or a child. * @param gameObject - Optional child or name to test. * @returns True if in touching state. */ isInTouching( gameObject?: Phaser.GameObjects.GameObject | string ): boolean; /** * Move from a position over time. * @param duration - Duration in ms. * @param x - Start x. * @param y - Start y. * @param ease - Easing name. * @returns This instance. */ moveFrom( duration: number, x: number, y: number, ease?: string ): this; /** * Move from a position using a config object. * @param config - Move configuration. * @returns This instance. */ moveFrom( config: { x: number, y: number, speed?: number, duration?: number, ease?: string, } ): this; /** * Move from a position and return a promise. * @param duration - Duration in ms. * @param x - Start x. * @param y - Start y. * @param ease - Easing name. * @returns A promise that resolves when complete. */ moveFromPromise( duration: number, x: number, y: number, ease?: string ): Promise; /** * Move from a position using a config object and return a promise. * @param config - Move configuration. * @returns A promise that resolves when complete. */ moveFromPromise( config: { x: number, y: number, speed?: number, duration?: number, ease?: string, } ): Promise; /** * Move from a position then destroy on completion. * @param duration - Duration in ms. * @param x - Start x. * @param y - Start y. * @param ease - Easing name. * @returns This instance. */ moveFromDestroy( duration: number, x: number, y: number, ease?: string ): this; /** * Move from a position using config, then destroy on completion. * @param config - Move configuration. * @returns This instance. */ moveFromDestroy( config: { x: number, y: number, speed?: number, duration?: number, ease?: string, } ): this; /** * Move from a position then destroy and return a promise. * @param duration - Duration in ms. * @param x - Start x. * @param y - Start y. * @param ease - Easing name. * @returns A promise that resolves when complete. */ moveFromDestroyPromise( duration: number, x: number, y: number, ease?: string ): Promise; /** * Move from a position using config, then destroy and return a promise. * @param config - Move configuration. * @returns A promise that resolves when complete. */ moveFromDestroyPromise( config: { x: number, y: number, speed?: number, duration?: number, ease?: string, } ): Promise; /** * Check if move-from is running. * @returns True if move-from is active. */ isRunningMoveFrom(): boolean; /** * Move to a position over time. * @param duration - Duration in ms. * @param x - Target x. * @param y - Target y. * @param ease - Easing name. * @returns This instance. */ moveTo( duration: number, x: number, y: number, ease?: string ): this; /** * Move to a position using a config object. * @param config - Move configuration. * @returns This instance. */ moveTo( config: { x: number, y: number, speed?: number, duration?: number, ease?: string, } ): this; /** * Move to a position and return a promise. * @param duration - Duration in ms. * @param x - Target x. * @param y - Target y. * @param ease - Easing name. * @returns A promise that resolves when complete. */ moveToPromise( duration: number, x: number, y: number, ease?: string ): Promise; /** * Move to a position using config and return a promise. * @param config - Move configuration. * @returns A promise that resolves when complete. */ moveToPromise( config: { x: number, y: number, speed?: number, duration?: number, ease?: string, } ): Promise; /** * Move to a position then destroy on completion. * @param duration - Duration in ms. * @param x - Target x. * @param y - Target y. * @param ease - Easing name. * @returns This instance. */ moveToDestroy( duration: number, x: number, y: number, ease?: string ): this; /** * Move to a position using config, then destroy on completion. * @param config - Move configuration. * @returns This instance. */ moveToDestroy( config: { x: number, y: number, speed?: number, duration?: number, ease?: string, } ): this; /** * Move to a position then destroy and return a promise. * @param duration - Duration in ms. * @param x - Target x. * @param y - Target y. * @param ease - Easing name. * @returns A promise that resolves when complete. */ moveToDestroyPromise( duration: number, x: number, y: number, ease?: string ): Promise; /** * Move to a position using config, then destroy and return a promise. * @param config - Move configuration. * @returns A promise that resolves when complete. */ moveToDestroyPromise( config: { x: number, y: number, speed?: number, duration?: number, ease?: string, } ): Promise; /** * Check if move-to is running. * @returns True if move-to is active. */ isRunningMoveTo(): boolean; /** * Check if any move easing is running. * @returns True if move easing is active. */ isRunningEaseMove(): boolean; /** * Stop move easing. * @param toEnd - True to jump to the end. * @returns This instance. */ moveStop(toEnd?: boolean): this; /** * Fade in over time. * @param duration - Duration in ms. * @param alpha - Target alpha. * @returns This instance. */ fadeIn( duration: number, alpha?: number ): this; /** * Fade in and return a promise. * @param duration - Duration in ms. * @param alpha - Target alpha. * @returns A promise that resolves when complete. */ fadeInPromise( duration: number, alpha?: number ): Promise; /** * Check if fade-in is running. * @returns True if fade-in is active. */ isRunningFadeIn(): boolean; /** * Fade out then destroy. * @param duration - Duration in ms. * @returns This instance. */ fadeOutDestroy( duration: number ): this; /** * Fade out then destroy and return a promise. * @param duration - Duration in ms. * @returns A promise that resolves when complete. */ fadeOutDestroyPromise( duration: number ): Promise; /** * Fade out over time. * @param duration - Duration in ms. * @returns This instance. */ fadeOut( duration: number ): this; /** * Fade out and return a promise. * @param duration - Duration in ms. * @returns A promise that resolves when complete. */ fadeOutPromise( duration: number ): Promise; /** * Check if fade-out is running. * @returns True if fade-out is active. */ isRunningFadeOut(): boolean; /** * Check if any fade easing is running. * @returns True if fade easing is active. */ isRunningEaseFade(): boolean; /** * Pop up with scale animation. * @param duration - Duration in ms. * @param orientation - Axis or orientation. * @param ease - Easing name. * @returns This instance. */ popUp( duration: number, orientation?: 0 | 1 | 'x' | 'y', ease?: string ): this; /** * Pop up with scale animation and return a promise. * @param duration - Duration in ms. * @param orientation - Axis or orientation. * @param ease - Easing name. * @returns A promise that resolves when complete. */ popUpPromise( duration: number, orientation?: 0 | 1 | 'x' | 'y', ease?: string ): Promise; /** * Check if pop-up is running. * @returns True if pop-up is active. */ isRunningPopUp(): boolean; /** * Scale down then destroy. * @param duration - Duration in ms. * @param orientation - Axis or orientation. * @param ease - Easing name. * @returns This instance. */ scaleDownDestroy( duration: number, orientation?: 0 | 1 | 'x' | 'y', ease?: string ): this; /** * Scale down then destroy and return a promise. * @param duration - Duration in ms. * @param orientation - Axis or orientation. * @param ease - Easing name. * @returns A promise that resolves when complete. */ scaleDownDestroyPromise( duration: number, orientation?: 0 | 1 | 'x' | 'y', ease?: string ): Promise; /** * Scale down over time. * @param duration - Duration in ms. * @param orientation - Axis or orientation. * @param ease - Easing name. * @returns This instance. */ scaleDown( duration: number, orientation?: 0 | 1 | 'x' | 'y', ease?: string ): this; /** * Scale down and return a promise. * @param duration - Duration in ms. * @param orientation - Axis or orientation. * @param ease - Easing name. * @returns A promise that resolves when complete. */ scaleDownPromise( duration: number, orientation?: 0 | 1 | 'x' | 'y', ease?: string ): Promise; /** * Check if scale-down is running. * @returns True if scale-down is active. */ isRunningScaleDown(): boolean; /** * Scale up and down repeatedly. * @param duration - Duration in ms. * @param peakValue - Peak scale value. * @param repeat - Repeat count. * @param orientation - Axis or orientation. * @param ease - Easing name. * @returns This instance. */ scaleYoyo( duration: number, peakValue?: number, repeat?: number, orientation?: 0 | 1 | 'x' | 'y', ease?: string ): this; /** * Scale up and down repeatedly and return a promise. * @param duration - Duration in ms. * @param peakValue - Peak scale value. * @param repeat - Repeat count. * @param orientation - Axis or orientation. * @param ease - Easing name. * @returns A promise that resolves when complete. */ scaleYoyoPromise( duration: number, peakValue?: number, repeat?: number, orientation?: 0 | 1 | 'x' | 'y', ease?: string ): Promise; /** * Check if scale-yoyo is running. * @returns True if scale-yoyo is active. */ isRunningScaleYoyo(): boolean; /** * Check if any scale easing is running. * @returns True if scale easing is active. */ isRunningEaseScale(): boolean; /** * Shake this sizer. * @param duration - Duration in ms. * @param magnitude - Shake magnitude. * @param magnitudeMode - 0/'constant' or 1/'decay'. * @returns This instance. */ shake( duration?: number, magnitude?: number, magnitudeMode?: 0 | 1 | 'constant' | 'decay' ): this; /** * Shake this sizer and return a promise. * @param duration - Duration in ms. * @param magnitude - Shake magnitude. * @param magnitudeMode - 0/'constant' or 1/'decay'. * @returns A promise that resolves when complete. */ shakePromise( duration?: number, magnitude?: number, magnitudeMode?: 0 | 1 | 'constant' | 'decay' ): Promise; /** * Ease a data value to a target. * @param key - Data key. * @param value - Target value. * @param duration - Duration in ms. * @param ease - Easing name. * @returns This instance. */ easeDataTo( key: string, value: number, duration?: number, ease?: string ): this; /** * Ease a data value using a config object. * @param config - Ease configuration. * @returns This instance. */ easeDataTo( config: { key: string, value: number, duration?: number, ease?: string, speed?: number } ): this; /** * Ease a data value to a target and return a promise. * @param key - Data key. * @param value - Target value. * @param duration - Duration in ms. * @param ease - Easing name. * @returns A promise that resolves when complete. */ easeDataToPromise( key: string, value: number, duration?: number, ease?: string ): Promise; /** * Ease a data value using a config object and return a promise. * @param config - Ease configuration. * @returns A promise that resolves when complete. */ easeDataToPromise( config: { key: string, value: number, duration?: number, ease?: string, speed?: number } ): Promise; /** * Stop easing a data key. * @param key - Data key. * @param toEnd - True to jump to the end. * @returns This instance. */ stopEaseData( key: string, toEnd?: boolean ): this; /** * Stop easing all data keys. * @param toEnd - True to jump to the end. * @returns This instance. */ stopAllEaseData( toEnd?: boolean ): this; /** * Delay a callback invocation. * @param delay - Delay in ms. * @param callback - Callback function. * @param scope - Callback scope. * @returns This instance. */ delayCall( delay: number, callback: Function, scope?: object, ): this; /** * Set anchor configuration. * @param config - Anchor configuration. * @returns This instance. */ setAnchor(config: BaseSizer.IAnchorConfig): this; /** * Enable dragging with optional sensor and target. * @param sensor - Sensor object, key, or boolean. * @param draggable - True to enable dragging. * @param target - Drag target object. * @returns This instance. */ setDraggable( sensor?: boolean | string | Phaser.GameObjects.GameObject, draggable?: boolean, target?: Phaser.GameObjects.GameObject ): this; /** * Enable dragging using a config object. * @param config - Drag configuration. * @returns This instance. */ setDraggable( config: BaseSizer.IDraggableConfig ): this; /** * Register a click handler for this sizer. * @param callback - Callback invoked on click. * @param scope - Callback scope. * @param config - Click configuration. * @returns This instance. */ onClick( callback: BaseSizer.OnClickCallbackType, scope?: object, config?: Click.IConfig ): this; /** * Register a click handler for a specific child. * @param gameObject - Target child. * @param callback - Callback invoked on click. * @param scope - Callback scope. * @param config - Click configuration. * @returns This instance. */ onClick( gameObject: Phaser.GameObjects.GameObject, callback: BaseSizer.OnClickCallbackType, scope?: object, config?: Click.IConfig ): this; /** * Remove a click handler from this sizer. * @param callback - Callback to remove. * @param scope - Callback scope. * @returns This instance. */ offClick( callback: Function, scope?: object ): this; /** * Remove a click handler from a specific child. * @param gameObject - Target child. * @param callback - Callback to remove. * @param scope - Callback scope. * @returns This instance. */ offClick( gameObject: Phaser.GameObjects.GameObject, callback: Function, scope?: object ): this; /** * Enable or disable click handling on this sizer. * @param enabled - True to enable. * @returns This instance. */ enableClick(enabled?: boolean): this; /** * Enable or disable click handling on a child. * @param gameObject - Target child. * @param enabled - True to enable. * @returns This instance. */ enableClick( gameObject: Phaser.GameObjects.GameObject, enabled?: boolean ): this; /** * Disable click handling on this sizer. * @returns This instance. */ disableClick(): this; /** * Disable click handling on a child. * @param gameObject - Target child. * @returns This instance. */ disableClick(gameObject: Phaser.GameObjects.GameObject): this; /** * Register a click-outside handler for this sizer. * @param callback - Callback invoked on click outside. * @param scope - Callback scope. * @param config - ClickOutside configuration. * @returns This instance. */ onClickOutside( callback: BaseSizer.OnClickOutsideCallbackType, scope?: object, config?: ClickOutside.IConfig ): this; /** * Register a click-outside handler for a child. * @param gameObject - Target child. * @param callback - Callback invoked on click outside. * @param scope - Callback scope. * @param config - ClickOutside configuration. * @returns This instance. */ onClickOutside( gameObject: Phaser.GameObjects.GameObject, callback: BaseSizer.OnClickOutsideCallbackType, scope?: object, config?: ClickOutside.IConfig ): this; /** * Remove a click-outside handler from this sizer. * @param callback - Callback to remove. * @param scope - Callback scope. * @returns This instance. */ offClickOutside( callback: Function, scope?: object ): this; /** * Remove a click-outside handler from a child. * @param gameObject - Target child. * @param callback - Callback to remove. * @param scope - Callback scope. * @returns This instance. */ offClickOutside( gameObject: Phaser.GameObjects.GameObject, callback: Function, scope?: object ): this; /** * Enable or disable click-outside on this sizer. * @param enabled - True to enable. * @returns This instance. */ enableClickOutside(enabled?: boolean): this; /** * Enable or disable click-outside on a child. * @param gameObject - Target child. * @param enabled - True to enable. * @returns This instance. */ enableClickOutside( gameObject: Phaser.GameObjects.GameObject, enabled?: boolean ): this; /** * Disable click-outside on this sizer. * @returns This instance. */ disableClickOutside(): this; /** * Disable click-outside on a child. * @param gameObject - Target child. * @returns This instance. */ disableClickOutside(gameObject: Phaser.GameObjects.GameObject): this; /** * Check if pointer is within bounds. * @returns True if pointer is in bounds. */ isPointerInBounds(): boolean; /** * Check if pointer is within bounds of a child. * @param gameObject - Target child. * @returns True if pointer is in bounds. */ isPointerInBounds(gameObject: Phaser.GameObjects.GameObject): boolean; /** * Check if pointer is within bounds of a named child. * @param name - Target child name. * @returns True if pointer is in bounds. */ isPointerInBounds(name: string): boolean; /** * Register a touching handler for this sizer. * @param callback - Callback invoked on touch. * @param scope - Callback scope. * @param config - Touch configuration. * @returns This instance. */ onTouching( callback: BaseSizer.OnTouchingCallbackType, scope?: object, config?: InTouching.IConfig ): this; /** * Register a touching handler for a child. * @param gameObject - Target child. * @param callback - Callback invoked on touch. * @param scope - Callback scope. * @param config - Touch configuration. * @returns This instance. */ onTouching( gameObject: Phaser.GameObjects.GameObject, callback: BaseSizer.OnTouchingCallbackType, scope?: object, config?: InTouching.IConfig ): this; /** * Remove a touching handler from this sizer. * @param callback - Callback to remove. * @param scope - Callback scope. * @returns This instance. */ offTouching( callback: Function, scope?: object ): this; /** * Remove a touching handler from a child. * @param gameObject - Target child. * @param callback - Callback to remove. * @param scope - Callback scope. * @returns This instance. */ offTouching( gameObject: Phaser.GameObjects.GameObject, callback: Function, scope?: object ): this; /** * Register a touching-end handler for this sizer. * @param callback - Callback invoked on touch end. * @param scope - Callback scope. * @param config - Touch configuration. * @returns This instance. */ onTouchingEnd( callback: BaseSizer.OnTouchingEndCallbackType, scope?: object, config?: InTouching.IConfig ): this; /** * Register a touching-end handler for a child. * @param gameObject - Target child. * @param callback - Callback invoked on touch end. * @param scope - Callback scope. * @param config - Touch configuration. * @returns This instance. */ onTouchingEnd( gameObject: Phaser.GameObjects.GameObject, callback: BaseSizer.OnTouchingEndCallbackType, scope?: object, config?: InTouching.IConfig ): this; /** * Remove a touching-end handler from this sizer. * @param callback - Callback to remove. * @param scope - Callback scope. * @returns This instance. */ offTouchingEnd( callback: Function, scope?: object ): this; /** * Remove a touching-end handler from a child. * @param gameObject - Target child. * @param callback - Callback to remove. * @param scope - Callback scope. * @returns This instance. */ offTouchingEnd( gameObject: Phaser.GameObjects.GameObject, callback: Function, scope?: object ): this; /** * Enable or disable touching on this sizer. * @param enable - True to enable. * @returns This instance. */ enableTouching(enable?: boolean): this; /** * Enable or disable touching on a child. * @param gameObject - Target child. * @param enable - True to enable. * @returns This instance. */ enableTouching( gameObject: Phaser.GameObjects.GameObject, enable?: boolean ): this; /** * Disable touching on this sizer. * @returns This instance. */ disableTouching(): this; /** * Disable touching on a child. * @param gameObject - Target child. * @returns This instance. */ disableTouching(gameObject: Phaser.GameObjects.GameObject): this; /** * Register a pointer-over handler for this sizer. * @param callback - Callback invoked on over. * @param scope - Callback scope. * @returns This instance. */ onOver( callback: BaseSizer.OnOverCallbackType, scope?: object, ): this; /** * Register a pointer-over handler for a child. * @param gameObject - Target child. * @param callback - Callback invoked on over. * @param scope - Callback scope. * @returns This instance. */ onOver( gameObject: Phaser.GameObjects.GameObject, callback: BaseSizer.OnOverCallbackType, scope?: object, ): this; /** * Register a pointer-out handler for this sizer. * @param callback - Callback invoked on out. * @param scope - Callback scope. * @returns This instance. */ onOut( callback: BaseSizer.OnOutCallbackType, scope?: object, ): this; /** * Register a pointer-out handler for a child. * @param gameObject - Target child. * @param callback - Callback invoked on out. * @param scope - Callback scope. * @returns This instance. */ onOut( gameObject: Phaser.GameObjects.GameObject, callback: BaseSizer.OnOutCallbackType, scope?: object, ): this; /** * Set children interactive using a config. * @param config - Interaction configuration. * @returns This instance. */ setChildrenInteractive( config: SetChildrenInteractive.IConfig ): this; /** * Show this sizer or a child. * @param gameObject - Optional child to show. * @returns This instance. */ show( gameObject?: Phaser.GameObjects.GameObject ): this; /** * Hide this sizer or a child. * @param gameObject - Optional child to hide. * @returns This instance. */ hide( gameObject?: Phaser.GameObjects.GameObject ): this; /** * Check if a child is shown. * @param gameObject - The child to check. * @returns True if shown. */ isShow( gameObject: Phaser.GameObjects.GameObject ): boolean; /** * Hook invoked when modal behavior is created. */ onCreateModalBehavior: (self: this) => void; /** * Open modal behavior. * @param config - Modal configuration. * @param onClose - Optional close callback. * @returns This instance. */ modal( config?: ModalBehavoir.IConfig, onClose?: BaseSizer.OnModalCloseCallbackType ): this; /** * Open modal behavior with a close callback. * @param onClose - Optional close callback. * @returns This instance. */ modal( onClose?: BaseSizer.OnModalCloseCallbackType ): this; /** * Open modal behavior and return a promise. * @param config - Modal configuration. * @returns A promise that resolves on close. */ modalPromise( config?: ModalBehavoir.IConfig ): Promise; /** * Close the modal behavior. * @param closeEventData - Optional close payload. * @returns This instance. */ modalClose(closeEventData?: Object): this; /** * Broadcast an event to children. * @param event - Event name. * @param args - Event arguments. * @returns This instance. */ broadcastEvent( event: string, ...args: any[] ): this; /** * Bind an event to an emitter. * @param eventEmitter - Event emitter. * @param eventName - Event name. * @param callback - Callback function. * @param scope - Callback scope. * @param once - True to listen once. * @returns This instance. */ bindEvent( eventEmitter: Phaser.Events.EventEmitter, eventName: string, callback: Function, scope?: unknown, once?: boolean, ): this; /** * Bind an event to an emitter for a game object. * @param gameObject - Target game object. * @param eventEmitter - Event emitter. * @param eventName - Event name. * @param callback - Callback function. * @param scope - Callback scope. * @param once - True to listen once. * @returns This instance. */ bindEvent( gameObject: Phaser.GameObjects.GameObject, eventEmitter: Phaser.Events.EventEmitter, eventName: string, callback: Function, scope?: unknown, once?: boolean, ): this; /** * Bind to the Scene preupdate event. * @param callback - Callback function. * @param scope - Callback scope. * @param once - True to listen once. * @returns This instance. */ bindScenePreupdateEvent( callback: Function, scope?: unknown, once?: boolean, ): this; /** * Bind to the Scene preupdate event for a game object. * @param gameObject - Target game object. * @param callback - Callback function. * @param scope - Callback scope. * @param once - True to listen once. * @returns This instance. */ bindScenePreupdateEvent( gameObject: Phaser.GameObjects.GameObject, callback: Function, scope?: unknown, once?: boolean, ): this; /** * Bind to the Scene update event. * @param callback - Callback function. * @param scope - Callback scope. * @param once - True to listen once. * @returns This instance. */ bindSceneUpdateEvent( callback: Function, scope?: unknown, once?: boolean, ): this; /** * Bind to the Scene update event for a game object. * @param gameObject - Target game object. * @param callback - Callback function. * @param scope - Callback scope. * @param once - True to listen once. * @returns This instance. */ bindSceneUpdateEvent( gameObject: Phaser.GameObjects.GameObject, callback: Function, scope?: unknown, once?: boolean, ): this; /** * Bind to the Scene postupdate event. * @param callback - Callback function. * @param scope - Callback scope. * @param once - True to listen once. * @returns This instance. */ bindScenePostupdateEvent( callback: Function, scope?: unknown, once?: boolean, ): this; /** * Bind to the Scene postupdate event for a game object. * @param gameObject - Target game object. * @param callback - Callback function. * @param scope - Callback scope. * @param once - True to listen once. * @returns This instance. */ bindScenePostupdateEvent( gameObject: Phaser.GameObjects.GameObject, callback: Function, scope?: unknown, once?: boolean, ): this; /** * Bind to the Scene render event. * @param callback - Callback function. * @param scope - Callback scope. * @param once - True to listen once. * @returns This instance. */ bindSceneRenderEvent( callback: Function, scope?: unknown, once?: boolean, ): this; /** * Bind to the Scene render event for a game object. * @param gameObject - Target game object. * @param callback - Callback function. * @param scope - Callback scope. * @param once - True to listen once. * @returns This instance. */ bindSceneRenderEvent( gameObject: Phaser.GameObjects.GameObject, callback: Function, scope?: unknown, once?: boolean, ): this; /** * Bind to the Scene pause event. * @param callback - Callback function. * @param scope - Callback scope. * @param once - True to listen once. * @returns This instance. */ bindScenePauseEvent( callback: Function, scope?: unknown, once?: boolean, ): this; /** * Bind to the Scene pause event for a game object. * @param gameObject - Target game object. * @param callback - Callback function. * @param scope - Callback scope. * @param once - True to listen once. * @returns This instance. */ bindScenePauseEvent( gameObject: Phaser.GameObjects.GameObject, callback: Function, scope?: unknown, once?: boolean, ): this; /** * Bind to the Scene resume event. * @param callback - Callback function. * @param scope - Callback scope. * @param once - True to listen once. * @returns This instance. */ bindSceneResumeEvent( callback: Function, scope?: unknown, once?: boolean, ): this; /** * Bind to the Scene resume event for a game object. * @param gameObject - Target game object. * @param callback - Callback function. * @param scope - Callback scope. * @param once - True to listen once. * @returns This instance. */ bindSceneResumeEvent( gameObject: Phaser.GameObjects.GameObject, callback: Function, scope?: unknown, once?: boolean, ): this; /** * Bind to the Scene sleep event. * @param callback - Callback function. * @param scope - Callback scope. * @param once - True to listen once. * @returns This instance. */ bindSceneSleepEvent( callback: Function, scope?: unknown, once?: boolean, ): this; /** * Bind to the Scene sleep event for a game object. * @param gameObject - Target game object. * @param callback - Callback function. * @param scope - Callback scope. * @param once - True to listen once. * @returns This instance. */ bindSceneSleepEvent( gameObject: Phaser.GameObjects.GameObject, callback: Function, scope?: unknown, once?: boolean, ): this; /** * Bind to the Scene wake event. * @param callback - Callback function. * @param scope - Callback scope. * @param once - True to listen once. * @returns This instance. */ bindSceneWakeEvent( callback: Function, scope?: unknown, once?: boolean, ): this; /** * Bind to the Scene wake event for a game object. * @param gameObject - Target game object. * @param callback - Callback function. * @param scope - Callback scope. * @param once - True to listen once. * @returns This instance. */ bindSceneWakeEvent( gameObject: Phaser.GameObjects.GameObject, callback: Function, scope?: unknown, once?: boolean, ): this; /** * Bind to the Scene shutdown event. * @param callback - Callback function. * @param scope - Callback scope. * @param once - True to listen once. * @returns This instance. */ bindSceneShutdownEvent( callback: Function, scope?: unknown, once?: boolean, ): this; /** * Bind to the Scene shutdown event for a game object. * @param gameObject - Target game object. * @param callback - Callback function. * @param scope - Callback scope. * @param once - True to listen once. * @returns This instance. */ bindSceneShutdownEvent( gameObject: Phaser.GameObjects.GameObject, callback: Function, scope?: unknown, once?: boolean, ): this; /** * Bind to the Scene resize event. * @param callback - Callback function. * @param scope - Callback scope. * @param once - True to listen once. * @returns This instance. */ bindSceneResizeEvent( callback: Function, scope?: unknown, once?: boolean, ): this; /** * Get shown children. * @param out - Optional array to store results. * @returns Shown children. */ getShownChildren( out?: Phaser.GameObjects.GameObject[] ): Phaser.GameObjects.GameObject[]; /** * Get all shown children including nested ones. * @param out - Optional array to store results. * @returns Shown children. */ getAllShownChildren( out?: Phaser.GameObjects.GameObject[] ): Phaser.GameObjects.GameObject[]; /** * Get inner padding. * @param key - Optional padding key. * @returns Padding value or object. */ getInnerPadding( key?: string ): number | BaseSizer.IPadding; /** * Set inner padding by key. * @param key - Padding key. * @param value - Padding value. * @returns This instance. */ setInnerPadding( key: string, value?: number ): this; /** * Set inner padding for all sides. * @param padding - Padding value or object. * @returns This instance. */ setInnerPadding( padding: number | BaseSizer.IPadding, ): this; /** * Get outer padding. * @param key - Optional padding key. * @returns Padding value or object. */ getOutterPadding( key?: string ): number | BaseSizer.IPadding; /** * Set outer padding by key. * @param key - Padding key. * @param value - Padding value. * @returns This instance. */ setOuterPadding( key: string, value?: number ): this; /** * Set outer padding for all sides. * @param padding - Padding value or object. * @returns This instance. */ setOuterPadding( padding: number | BaseSizer.IPadding, ): this; /** * Get outer padding for a child. * @param child - Child key or game object. * @param key - Optional padding key. * @returns Padding value or object. */ getChildOutterPadding( child: string | Phaser.GameObjects.GameObject, key?: string ): number | BaseSizer.IPadding; /** * Set outer padding for a child by key. * @param child - Child key or game object. * @param key - Padding key. * @param value - Padding value. * @returns This instance. */ setChildOuterPadding( child: string | Phaser.GameObjects.GameObject, key: string, value?: number ): this; /** * Set outer padding for a child. * @param child - Child key or game object. * @param padding - Padding value or object. * @returns This instance. */ setChildOuterPadding( child: string | Phaser.GameObjects.GameObject, padding: number | BaseSizer.IPadding, ): this; /** * Find child at a point. * @param x - World x. * @param y - World y. * @param preTest - Optional pre-test filter. * @param postTest - Optional post-test filter. * @param children - Optional children list to test. * @returns The matched child. */ pointToChild( x: number, y: number, preTest?: (gameObject: Phaser.GameObjects.GameObject, x: number, y: number) => boolean, postTest?: (gameObject: Phaser.GameObjects.GameObject, x: number, y: number) => boolean, children?: Phaser.GameObjects.GameObject[] ): Phaser.GameObjects.GameObject; }