// import * as Phaser from 'phaser'; import Buttons from '../buttons/Buttons'; export default Menu; declare namespace Menu { /** * Configuration of menu show/hide easing. */ type EaseConfigTypes = number | { /** * Ease duration in milliseconds. */ duration?: number, /** * Ease orientation. */ orientation?: 0 | 1 | 'x' | 'y' | 'h' | 'v', /** * Ease function name. */ ease?: string }; /** * Events that can trigger submenu expansion. */ type ExpandEventTypes = 'button.click' | 'button.over'; /** * Preferred side for placing submenus. */ type SubMenuSideTypes = 0 | 1 | 2 | 3 | 'right' | 'down' | 'left' | 'up'; /** * Callback used to create menu background object. */ type CreateBackgroundCallbackType = ( /** * Item list used to build this menu. */ items: any[] ) => Phaser.GameObjects.GameObject; /** * Callback used to create menu buttons. */ type CreateButtonCallbackType = ( /** * Current item data. */ item: any, /** * Zero-based item index. */ index: number, /** * Full item list. */ items: any[] ) => Phaser.GameObjects.GameObject; /** * Configuration options for creating a menu. */ interface IConfig extends Buttons.IConfig { /** * Set to true to show menu as popup. */ popUp?: boolean, /** * Source item list for building menu entries. */ items: any[], /** * Callback used to create menu background. */ createBackgroundCallback?: CreateBackgroundCallbackType, /** * Scope used when invoking background callback. */ createBackgroundCallbackScope?: object, /** * Callback used to create each menu button. */ createButtonCallback?: CreateButtonCallbackType, /** * Scope used when invoking button callback. */ createButtonCallbackScope?: object, /** * Ease configuration used when menu expands. */ easeIn?: EaseConfigTypes, /** * Ease configuration used when menu collapses. */ easeOut?: EaseConfigTypes, /** * Event used to expand submenus. */ expandEvent?: ExpandEventTypes, /** * Preferred side of submenus. */ subMenuSide?: SubMenuSideTypes, } } /** * Hierarchical menu component built on top of `Buttons`. */ declare class Menu extends Buttons { /** * Create a menu component. * * @param scene - Scene that owns this component. * @param config - Optional menu configuration. */ constructor( scene: Phaser.Scene, config?: Menu.IConfig ); /** * Collapse this menu. * * @returns This component instance. */ collapse(): this; /** * Collapse active submenu. * * @returns This component instance. */ collapseSubMenu(): this; }