diff options
Diffstat (limited to 'src/background/operators/impls/ZoomOperatorFactoryChain.ts')
-rw-r--r-- | src/background/operators/impls/ZoomOperatorFactoryChain.ts | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/src/background/operators/impls/ZoomOperatorFactoryChain.ts b/src/background/operators/impls/ZoomOperatorFactoryChain.ts new file mode 100644 index 0000000..bf930a7 --- /dev/null +++ b/src/background/operators/impls/ZoomOperatorFactoryChain.ts @@ -0,0 +1,28 @@ +import { inject, injectable } from "tsyringe"; +import Operator from "../Operator"; +import OperatorFactoryChain from "../OperatorFactoryChain"; +import ZoomInOperator from "./ZoomInOperator"; +import ZoomOutOperator from "./ZoomOutOperator"; +import ResetZoomOperator from "./ResetZoomOperator"; +import ZoomPresenter from "../../presenters/ZoomPresenter"; +import * as operations from "../../../shared/operations"; + +@injectable() +export default class ZoomOperatorFactoryChain implements OperatorFactoryChain { + constructor( + @inject("ZoomPresenter") + private readonly zoomPresenter: ZoomPresenter + ) {} + + create(op: operations.Operation): Operator | null { + switch (op.type) { + case operations.ZOOM_IN: + return new ZoomInOperator(this.zoomPresenter); + case operations.ZOOM_OUT: + return new ZoomOutOperator(this.zoomPresenter); + case operations.ZOOM_NEUTRAL: + return new ResetZoomOperator(this.zoomPresenter); + } + return null; + } +} |