Skip to content

@ue-too/board / index / KmtIdleState

類別: KmtIdleState ​

定義於: packages/board/src/input-interpretation/input-state-machine/kmt-input-state-machine.ts:236

IDLE state - default state waiting for user input.

備註 ​

This is the default state of the KMT input state machine. It handles scroll events for panning and zooming, and transitions to pan-ready states when the user presses spacebar or middle-click.

Responsibilities:

  • Process scroll events (pan or zoom depending on device and modifiers)
  • Detect spacebar press to enter pan mode
  • Detect middle-click to enter pan mode
  • Distinguish between mouse and trackpad input modalities

Scroll Behavior:

  • Ctrl + Scroll: Always zoom (both mouse and trackpad)
  • Scroll (no Ctrl): Pan (trackpad) or Zoom (mouse, determined by modality detection)

Input Modality Detection: The state tracks horizontal scroll deltas to distinguish trackpads (which produce deltaX) from mice (which typically only produce deltaY). This affects zoom behavior.

Extends ​

建構函式 ​

建構函式 ​

new KmtIdleState(): KmtIdleState

定義於: packages/board/src/input-interpretation/input-state-machine/kmt-input-state-machine.ts:242

回傳 ​

KmtIdleState

覆寫了 ​

TemplateState< KmtInputEventMapping, KmtInputContext, KmtInputStates, KmtInputEventOutputMapping >.constructor

屬性 ​

_defer ​

protected _defer: Defer<KmtInputContext, KmtInputEventMapping, "IDLE" | "READY_TO_PAN_VIA_SPACEBAR" | "READY_TO_PAN_VIA_SCROLL_WHEEL" | "PAN" | "INITIAL_PAN" | "PAN_VIA_SCROLL_WHEEL" | "DISABLED", KmtInputEventOutputMapping> | undefined

定義於: packages/being/dist/interface.d.ts:581

繼承自 ​

TemplateState._defer


_delay ​

protected _delay: Delay<KmtInputContext, KmtInputEventMapping, "IDLE" | "READY_TO_PAN_VIA_SPACEBAR" | "READY_TO_PAN_VIA_SCROLL_WHEEL" | "PAN" | "INITIAL_PAN" | "PAN_VIA_SCROLL_WHEEL" | "DISABLED", KmtInputEventOutputMapping> | undefined

定義於: packages/being/dist/interface.d.ts:580

繼承自 ​

TemplateState._delay


_eventGuards ​

protected _eventGuards: Partial<EventGuards<KmtInputEventMapping, KmtInputStates, KmtInputContext, Guard<KmtInputContext>>> = {}

定義於: packages/board/src/input-interpretation/input-state-machine/kmt-input-state-machine.ts:250

覆寫了 ​

TemplateState._eventGuards


_eventPreconditions ​

protected _eventPreconditions: Partial<EventPreconditions<EventPayloadMapping, Context, Guard<Context>>>

定義於: packages/being/dist/interface.d.ts:579

繼承自 ​

TemplateState._eventPreconditions


_eventReactions ​

protected _eventReactions: EventReactions<KmtInputEventMapping, KmtInputContext, KmtInputStates, KmtInputEventOutputMapping>

定義於: packages/board/src/input-interpretation/input-state-machine/kmt-input-state-machine.ts:321

覆寫了 ​

TemplateState._eventReactions


_guards ​

protected _guards: Guard<KmtInputContext, "isIdle">

定義於: packages/board/src/input-interpretation/input-state-machine/kmt-input-state-machine.ts:246

覆寫了 ​

TemplateState._guards

存取器 ​

delay ​

Getter 簽章 ​

get delay(): Delay<Context, EventPayloadMapping, States, EventOutputMapping> | undefined

定義於: packages/being/dist/interface.d.ts:587

回傳 ​

Delay<Context, EventPayloadMapping, States, EventOutputMapping> | undefined

繼承自 ​

TemplateState.delay


eventGuards ​

Getter 簽章 ​

get eventGuards(): Partial<EventGuards<EventPayloadMapping, States, Context, Guard<Context>>>

定義於: packages/being/dist/interface.d.ts:584

回傳 ​

Partial<EventGuards<EventPayloadMapping, States, Context, Guard<Context>>>

繼承自 ​

TemplateState.eventGuards


eventPreconditions ​

Getter 簽章 ​

get eventPreconditions(): Partial<EventPreconditions<EventPayloadMapping, Context, Guard<Context>>>

定義於: packages/being/dist/interface.d.ts:585

Pre-action vetoes: named guards that must all pass before this state handles an event. Optional so existing State implementations remain valid; TemplateState always provides it.

回傳 ​

Partial<EventPreconditions<EventPayloadMapping, Context, Guard<Context>>>

繼承自 ​

TemplateState.eventPreconditions


eventReactions ​

Getter 簽章 ​

get eventReactions(): EventReactions<EventPayloadMapping, Context, States, EventOutputMapping>

定義於: packages/being/dist/interface.d.ts:586

回傳 ​

EventReactions<EventPayloadMapping, Context, States, EventOutputMapping>

繼承自 ​

TemplateState.eventReactions


guards ​

Getter 簽章 ​

get guards(): Guard<Context>

定義於: packages/being/dist/interface.d.ts:583

回傳 ​

Guard<Context>

繼承自 ​

TemplateState.guards


handlingEvents ​

Getter 簽章 ​

get handlingEvents(): keyof EventPayloadMapping[]

定義於: packages/being/dist/interface.d.ts:582

回傳 ​

keyof EventPayloadMapping[]

繼承自 ​

TemplateState.handlingEvents

方法 ​

beforeExit() ​

beforeExit(context, stateMachine, to): void

定義於: packages/being/dist/interface.d.ts:589

參數 ​

context ​

KmtInputContext

stateMachine ​

StateMachine<KmtInputEventMapping, KmtInputContext, "IDLE" | "READY_TO_PAN_VIA_SPACEBAR" | "READY_TO_PAN_VIA_SCROLL_WHEEL" | "PAN" | "INITIAL_PAN" | "PAN_VIA_SCROLL_WHEEL" | "DISABLED", KmtInputEventOutputMapping>

to ​

"TERMINAL" | "IDLE" | "READY_TO_PAN_VIA_SPACEBAR" | "READY_TO_PAN_VIA_SCROLL_WHEEL" | "PAN" | "INITIAL_PAN" | "PAN_VIA_SCROLL_WHEEL" | "DISABLED"

回傳 ​

void

繼承自 ​

TemplateState.beforeExit


handles() ​

handles<K>(args, context, stateMachine): EventResult<"IDLE" | "READY_TO_PAN_VIA_SPACEBAR" | "READY_TO_PAN_VIA_SCROLL_WHEEL" | "PAN" | "INITIAL_PAN" | "PAN_VIA_SCROLL_WHEEL" | "DISABLED", K extends keyof KmtInputEventOutputMapping ? KmtInputEventOutputMapping[K<K>] : void>

定義於: packages/being/dist/interface.d.ts:590

型別參數 ​

K ​

K extends string

參數 ​

args ​

EventArgs<KmtInputEventMapping, K>

context ​

KmtInputContext

stateMachine ​

StateMachine<KmtInputEventMapping, KmtInputContext, "IDLE" | "READY_TO_PAN_VIA_SPACEBAR" | "READY_TO_PAN_VIA_SCROLL_WHEEL" | "PAN" | "INITIAL_PAN" | "PAN_VIA_SCROLL_WHEEL" | "DISABLED", KmtInputEventOutputMapping>

回傳 ​

EventResult<"IDLE" | "READY_TO_PAN_VIA_SPACEBAR" | "READY_TO_PAN_VIA_SCROLL_WHEEL" | "PAN" | "INITIAL_PAN" | "PAN_VIA_SCROLL_WHEEL" | "DISABLED", K extends keyof KmtInputEventOutputMapping ? KmtInputEventOutputMapping[K<K>] : void>

繼承自 ​

TemplateState.handles


middlePointerDownHandler() ​

middlePointerDownHandler(context, payload): void

定義於: packages/board/src/input-interpretation/input-state-machine/kmt-input-state-machine.ts:361

參數 ​

context ​

KmtInputContext

payload ​

PointerEventPayload

回傳 ​

void


scrollHandler() ​

scrollHandler(context, payload): KmtOutputEvent

定義於: packages/board/src/input-interpretation/input-state-machine/kmt-input-state-machine.ts:298

參數 ​

context ​

KmtInputContext

payload ​

ScrollWithCtrlEventPayload

回傳 ​

KmtOutputEvent


scrollPan() ​

scrollPan(context, payload): KmtOutputEvent

定義於: packages/board/src/input-interpretation/input-state-machine/kmt-input-state-machine.ts:260

參數 ​

context ​

KmtInputContext

payload ​

ScrollEventPayload

回傳 ​

KmtOutputEvent


scrollWithCtrlHandler() ​

scrollWithCtrlHandler(context, payload): KmtOutputEvent

定義於: packages/board/src/input-interpretation/input-state-machine/kmt-input-state-machine.ts:314

參數 ​

context ​

KmtInputContext

payload ​

ScrollWithCtrlEventPayload

回傳 ​

KmtOutputEvent


scrollZoom() ​

scrollZoom(context, payload): KmtOutputEvent

定義於: packages/board/src/input-interpretation/input-state-machine/kmt-input-state-machine.ts:274

參數 ​

context ​

KmtInputContext

payload ​

ScrollWithCtrlEventPayload

回傳 ​

KmtOutputEvent


spacebarDownHandler() ​

spacebarDownHandler(context, payload): number

定義於: packages/board/src/input-interpretation/input-state-machine/kmt-input-state-machine.ts:353

參數 ​

context ​

KmtInputContext

payload ​

EmptyPayload

回傳 ​

number


uponEnter() ​

uponEnter(context): void

定義於: packages/board/src/input-interpretation/input-state-machine/kmt-input-state-machine.ts:349

參數 ​

context ​

KmtInputContext

回傳 ​

void

覆寫了 ​

TemplateState.uponEnter