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.

Remarks

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

署名を取得する

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

署名を設定する

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

署名を取得する

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

署名を取得する

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

署名を取得する

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

署名を取得する

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