UNPKG

@aurigma/design-atoms

Version:

Design Atoms is a part of Customer's Canvas SDK which allows for manipulating individual design elements through your code.

60 lines 3.46 kB
import { Exception } from "@aurigma/design-atoms-model/Exception"; import { EventObject } from "@aurigma/design-atoms-model/EventObject"; import { InputState } from "./../../../Input/InputManager/IInputManager"; export class CreateInputHandlerStateMachine { constructor() { this._stateChanged = new EventObject(); this._currentState = CreateInputHandlerState.Initial; this._allowedTransitions = new Map([ [CreateInputHandlerState.Initial, [CreateInputHandlerState.PointSelected, CreateInputHandlerState.RectangleSelectionStarted]], [CreateInputHandlerState.RectangleSelectionStarted, [CreateInputHandlerState.RectangleSelected, CreateInputHandlerState.RectangleSelectionChanged]], [CreateInputHandlerState.RectangleSelectionChanged, [CreateInputHandlerState.RectangleSelected, CreateInputHandlerState.RectangleSelectionChanged]], [CreateInputHandlerState.RectangleSelected, [CreateInputHandlerState.Initial]], [CreateInputHandlerState.PointSelected, [CreateInputHandlerState.Initial]], ]); } onMove(params) { switch (params.state) { case InputState.Started: this._changeState(CreateInputHandlerState.RectangleSelectionStarted, params.startWorkspace); this._changeState(CreateInputHandlerState.RectangleSelectionChanged, params.workspace); // TODO: It's strange decision, but there is no time to change logic. Need to refactor to new Input System break; case InputState.InProgress: this._changeState(CreateInputHandlerState.RectangleSelectionChanged, params.workspace); break; case InputState.Finished: this._changeState(CreateInputHandlerState.RectangleSelected, params.workspace); this._changeState(CreateInputHandlerState.Initial, params.workspace); break; } } onLongTap(params) { this._changeState(CreateInputHandlerState.PointSelected, params.workspace); this._changeState(CreateInputHandlerState.Initial, params.workspace); } onClick(params) { this._changeState(CreateInputHandlerState.PointSelected, params.workspace); this._changeState(CreateInputHandlerState.Initial, params.workspace); } addStateChanged(handler) { this._stateChanged.add(handler); } removeStateChanged(handler) { this._stateChanged.remove(handler); } _changeState(state, point) { if (!this._allowedTransitions.get(this._currentState).includes(state)) throw new Exception(`${this._currentState} to ${state} transition is restricted`); this._currentState = state; this._stateChanged.notify({ state: state, point: point }); } } export var CreateInputHandlerState; (function (CreateInputHandlerState) { CreateInputHandlerState["Initial"] = "Initial"; CreateInputHandlerState["PointSelected"] = "PointSelected"; CreateInputHandlerState["RectangleSelectionStarted"] = "RectangleSelectionStarted"; CreateInputHandlerState["RectangleSelectionChanged"] = "RectangleSelectionChanged"; CreateInputHandlerState["RectangleSelected"] = "RectangleSelected"; })(CreateInputHandlerState || (CreateInputHandlerState = {})); //# sourceMappingURL=CreateInputHandlerStateMachine.js.map