Skip to content

@ue-too/board / index / ObservableInputTracker

類別: ObservableInputTracker

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

Production implementation of KmtInputContext that tracks input state for the state machine.

備註

This class provides the concrete implementation of the KMT input context, maintaining all state required by the state machine to recognize and track gestures:

State Tracking:

  • Initial cursor position for calculating pan deltas
  • Input modality score to distinguish mouse vs trackpad
  • Determined input mode (kmt/trackpad/TBD)
  • Coordinate system alignment preference

Input Modality Detection: The kmtTrackpadTrackScore accumulates evidence about the input device:

  • Positive values indicate mouse behavior (middle-click, no horizontal scroll)
  • Negative values indicate trackpad behavior (horizontal scroll, two-finger gestures)
  • Score is used to determine zoom behavior (Ctrl+Scroll for mouse vs Scroll for trackpad)

Design Pattern: This class follows the Context pattern from the @ue-too/being state machine library, providing stateful data and operations that states can access and modify during transitions.

範例

typescript
const canvasProxy = new CanvasProxy(canvasElement);
const context = new ObservableInputTracker(canvasProxy);
const stateMachine = createKmtInputStateMachine(context);

// Context tracks state as the state machine processes events
stateMachine.happens("leftPointerDown", {x: 100, y: 200});
console.log(context.initialCursorPosition); // {x: 100, y: 200}

實作

建構函式

建構函式

new ObservableInputTracker(canvasOperator): ObservableInputTracker

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

參數

canvasOperator

Canvas

回傳

ObservableInputTracker

存取器

alignCoordinateSystem

Getter 簽章

get alignCoordinateSystem(): boolean

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

Whether to use standard screen coordinate system (vs inverted Y-axis)

回傳

boolean

Setter 簽章

set alignCoordinateSystem(value): void

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

Whether to use standard screen coordinate system (vs inverted Y-axis)

參數
value

boolean

回傳

void

Whether to use standard screen coordinate system (vs inverted Y-axis)

實作了

KmtInputContext.alignCoordinateSystem


canvas

Getter 簽章

get canvas(): Canvas

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

Canvas accessor for dimensions and cursor control

回傳

Canvas

Canvas accessor for dimensions and cursor control

實作了

KmtInputContext.canvas


initialCursorPosition

Getter 簽章

get initialCursorPosition(): Point

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

The cursor position when a pan gesture started

回傳

Point

The cursor position when a pan gesture started

實作了

KmtInputContext.initialCursorPosition


kmtTrackpadTrackScore

Getter 簽章

get kmtTrackpadTrackScore(): number

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

Score tracking input modality: >0 for mouse, <0 for trackpad, 0 for undetermined

回傳

number

Score tracking input modality: >0 for mouse, <0 for trackpad, 0 for undetermined

實作了

KmtInputContext.kmtTrackpadTrackScore


mode

Getter 簽章

get mode(): "kmt" | "trackpad" | "TBD"

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

The current input modality: 'kmt' (mouse), 'trackpad', or 'TBD' (to be determined)

回傳

"kmt" | "trackpad" | "TBD"

The current input modality: 'kmt' (mouse), 'trackpad', or 'TBD' (to be determined)

實作了

KmtInputContext.mode

方法

addKmtTrackpadTrackScore()

addKmtTrackpadTrackScore(): void

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

Increases the score toward mouse

回傳

void

實作了

KmtInputContext.addKmtTrackpadTrackScore


cancelCurrentAction()

cancelCurrentAction(): void

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

Cancels the current action and resets cursor position

回傳

void

實作了

KmtInputContext.cancelCurrentAction


cleanup()

cleanup(): void

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

回傳

void

實作了

KmtInputContext.cleanup


enableInputModeDetection()

enableInputModeDetection(): void

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

回傳

void


setInitialCursorPosition()

setInitialCursorPosition(position): void

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

Sets the initial cursor position when starting a pan gesture

參數

position

Point

回傳

void

實作了

KmtInputContext.setInitialCursorPosition


setMode()

setMode(mode): void

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

Sets the determined input modality

參數

mode

"kmt" | "trackpad" | "TBD"

回傳

void

實作了

KmtInputContext.setMode


setup()

setup(): void

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

回傳

void

實作了

KmtInputContext.setup


subtractKmtTrackpadTrackScore()

subtractKmtTrackpadTrackScore(): void

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

Decreases the score toward trackpad

回傳

void

實作了

KmtInputContext.subtractKmtTrackpadTrackScore