@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.
範例
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
回傳
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 accessor for dimensions and cursor control
實作了
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)
實作了
方法
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
實作了
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
實作了
setup()
setup():
void
定義於: packages/board/src/input-interpretation/input-state-machine/kmt-input-context.ts:798
回傳
void
實作了
subtractKmtTrackpadTrackScore()
subtractKmtTrackpadTrackScore():
void
定義於: packages/board/src/input-interpretation/input-state-machine/kmt-input-context.ts:750
Decreases the score toward trackpad
回傳
void