From 2d28c523c1a447e8ac1fee470a6dee1ec4d549f8 Mon Sep 17 00:00:00 2001 From: Eugene Obrezkov Date: Fri, 8 May 2020 20:31:42 +0300 Subject: [PATCH] =?UTF-8?q?feat:=20=F0=9F=8E=B8=20Deck=20extends=20an=20Ev?= =?UTF-8?q?entEmitter=20and=20produces=20exit=20event?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Deck extends from EventEmitter now and is able to emit event "exit" when deck is got a request to exit. It is useful when you want to call some routine after deck exits the presentation. --- packages/kittik-deck/src/Deck.ts | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/packages/kittik-deck/src/Deck.ts b/packages/kittik-deck/src/Deck.ts index d169bb3..75c05ed 100644 --- a/packages/kittik-deck/src/Deck.ts +++ b/packages/kittik-deck/src/Deck.ts @@ -1,6 +1,7 @@ import { Animationable } from 'kittik-animation-basic'; import { Canvas } from 'terminal-canvas'; import { DeckDeclaration } from './DeckDeclaration'; +import { EventEmitter } from 'events'; import { ShapeRenderable } from 'kittik-shape-basic'; import { Slide } from 'kittik-slide'; import readline from 'readline'; @@ -12,13 +13,20 @@ export { DeckDeclaration } from './DeckDeclaration'; export { ShapeBuilder } from 'kittik-slide'; export { SlideBuilder } from 'kittik-slide'; -export class Deck { +export declare interface Deck { + on: (event: 'exit', listener: () => void) => this + emit: (event: 'exit') => boolean +} + +export class Deck extends EventEmitter { public canvas: Canvas = Canvas.create(); private readonly slides: Slide[] = []; private isRendering = false; private currentSlideIndex = 0; public constructor (declaration?: DeckDeclaration) { + super(); + if (typeof declaration?.canvas !== 'undefined') { this.canvas = declaration.canvas; } @@ -106,6 +114,8 @@ export class Deck { public exit (): void { process.stdin.pause(); process.stdin.removeAllListeners(); + + this.emit('exit'); } private initSlides (declaration: DeckDeclaration): void {