State

State class. Parent state class. Extend this class for your state logic.

Constructor

new State(app, routeParamsopt, parentStateopt)

Parameters:
NameTypeAttributesDefaultDescription
appApp

App instance

routeParamsRouteParams<optional>

Current route params

parentStateState<optional>
null

Parent state for sub-states

Example
Create a state called MyState with is executed when the url 'my-state' is called. When executed,
it prints 'Hello from MyState' to the console.

class MyState extends State
{
    asnyc enter()
    {
        console.log( "Hello from MyState" );
    }
}

Members

ID :string|null

ID of state. Should be an unique identifier. If not set it will be auto-generated.

Type:
  • string | null

ROUTE :string|array

Route(s) which trigger this state

Type:
  • string | array

Methods

addEventListener(target, type, listener, options)

Add event listener with automatic cleanup tracking

Parameters:
NameTypeDefaultDescription
targetEventTarget

Event target (element, window, document, etc.)

typestring

Event type

listenerfunction

Event listener function

optionsboolean | objectfalse

Event listener options

canEnter() → {boolean}

Called before entering state.

Returns:
Type: 
boolean

canExit() → {boolean}

Called before exiting state. Return false to prevent state transition. Also checks if sub-states can exit.

Returns:
  • True to allow exit, false to prevent exit
Type: 
boolean

clearInterval(intervalId)

Clear specific interval

Parameters:
NameTypeDescription
intervalIdnumber

Interval ID to clear

clearTimeout(timeoutId)

Clear specific timeout

Parameters:
NameTypeDescription
timeoutIdnumber

Timeout ID to clear

(async) createSubStateManager() → {Promise.<StateManager>}

Create a sub-state manager for nested states

Returns:

Sub-state manager instance

Type: 
Promise.<StateManager>

(async) dispose() → {Promise.<void>}

Dispose of the state and cleanup all resources Called automatically by StateManager when exiting state Handles hierarchical cleanup of sub-states Override onDispose() for custom cleanup logic

Returns:
Type: 
Promise.<void>

(async) enter() → {Promise.<void>}

Called when entering scene and after canEnter() call returned true.

Returns:
Type: 
Promise.<void>

(async) exit() → {Promise.<void>}

Called when exiting scene and after canExit() call return true. Also handles sub-state cleanup.

Returns:
Type: 
Promise.<void>

findStateInHierarchy(stateId, visited) → {State|null}

Find a state in the hierarchy by ID

Parameters:
NameTypeDescription
stateIdstring

State ID to find

visitedSet

Set of already visited states (internal use)

Returns:

Found state or null

Type: 
State | null

getCurrentSubState() → {State|null}

Get current sub-state

Returns:
Type: 
State | null

getFullStatePath() → {Array.<string>}

Get full state path including current sub-state

Returns:

Complete path including sub-states

Type: 
Array.<string>

getId() → {string}

Return current ID

Returns:
Type: 
string

getRedirectUrl() → {string|null}

Called when canEnter() function returns false.

Returns:
  • Return redirect route.
Type: 
string | null

getRootState() → {State}

Get the root state (top-level parent)

Returns:
Type: 
State

getStateData() → {*}

Get data for this state

Returns:
  • State data
Type: 
*

getStatePath() → {Array.<string>}

Get state path (hierarchy chain)

Returns:

Array of state IDs from root to current

Type: 
Array.<string>

hasActiveSubState() → {boolean}

Check if this state has an active sub-state

Returns:
Type: 
boolean

hasSubStates() → {boolean}

Check if this state has sub-states

Returns:
Type: 
boolean

isDisposed() → {boolean}

Check if state has been disposed

Returns:

True if state is disposed

Type: 
boolean

onCanExit() → {boolean}

Override this method for custom exit validation logic

Returns:
  • True to allow exit, false to prevent exit
Type: 
boolean

(async) onDispose() → {Promise.<void>}

Override this method for custom cleanup logic Called before automatic resource cleanup in dispose()

Returns:
Type: 
Promise.<void>

(async) onEnter() → {Promise.<void>}

Override this method for custom enter logic

Returns:
Type: 
Promise.<void>

(async) onExit() → {Promise.<void>}

Override this method for custom exit logic

Returns:
Type: 
Promise.<void>

removeEventListener(target, type, listener, options)

Remove specific event listener

Parameters:
NameTypeDefaultDescription
targetEventTarget

Event target

typestring

Event type

listenerfunction

Event listener function

optionsboolean | objectfalse

Event listener options

setInterval(callback, delay) → {number}

Set interval with automatic cleanup tracking

Parameters:
NameTypeDescription
callbackfunction

Callback function

delaynumber

Delay in milliseconds

Returns:

Interval ID

Type: 
number

setStateData(data)

Set data for this state (used for data transfer between states)

Parameters:
NameTypeDescription
data*

Data to set

setTimeout(callback, delay) → {number}

Set timeout with automatic cleanup tracking

Parameters:
NameTypeDescription
callbackfunction

Callback function

delaynumber

Delay in milliseconds

Returns:

Timeout ID

Type: 
number

(async) switchToSubState(subStateId, stateData) → {Promise.<boolean>}

Switch to a sub-state

Parameters:
NameTypeDefaultDescription
subStateIdstring

Sub-state ID to switch to

stateData*null

Data to pass to sub-state

Returns:
Type: 
Promise.<boolean>