35 lines
916 B
TypeScript
35 lines
916 B
TypeScript
/**
|
||
* session.ts – Minimaler Werkzeug-Sitzungszustand (Task A2).
|
||
*
|
||
* phase 'idle' : kein Ziehen aktiv, Tool wartet auf down
|
||
* phase 'active' : down ist erfolgt; Tool zieht/zeichnet bis up/cancel
|
||
*
|
||
* Der Dispatcher nutzt das, um move-Events nur während aktiver Sitzung an
|
||
* Handler durchzureichen (und als Guard gegen verlorene up-Events).
|
||
*/
|
||
export type ToolPhase = 'idle' | 'active';
|
||
|
||
export class ToolSession {
|
||
private current: ToolPhase = 'idle';
|
||
|
||
/** Ist eine Zeichensitzung aktiv (zwischen down und up)? */
|
||
get isActive(): boolean {
|
||
return this.current === 'active';
|
||
}
|
||
|
||
/** Aktuelle Phase. */
|
||
get phase(): ToolPhase {
|
||
return this.current;
|
||
}
|
||
|
||
/** Startet eine Sitzung (nach einem gültigen down). */
|
||
begin(): void {
|
||
this.current = 'active';
|
||
}
|
||
|
||
/** Beendet die Sitzung regulär (up) oder abgebrochen (cancel/ESC). */
|
||
end(): void {
|
||
this.current = 'idle';
|
||
}
|
||
}
|