UNPKG

datainout

Version:

Import and reports data

87 lines (86 loc) 2.1 kB
// src/common/core/EventHandler.ts var ContextEventHook = class { constructor() { this.context = {}; } after(callback) { callback(this.context); } before(callback) { callback(this.context); return this; } }; var ContextEventHandler = class { constructor() { this.groupContext = {}; } setEvent(key) { const eventHook = new ContextEventHook(); if (!this.groupContext[key]) this.groupContext[key] = []; this.groupContext[key].push(eventHook); return eventHook; } get WorkBook() { return this.setEvent("workBook"); } get Sheet() { return this.setEvent("sheet"); } get Row() { return this.setEvent("row"); } get Header() { return this.setEvent("header"); } get Footer() { return this.setEvent("footer"); } get Error() { return this.setEvent("error"); } }; var HookProvider = class { }; var EventHandler = class { constructor() { this.listEvents = {}; } onFile(func) { this.listEvents.workBook = func; } endFile(func) { this.listEvents.endWorkBook = func; } begin(func) { this.listEvents.sheet = func; } end(func) { this.listEvents.endSheet = func; } error(func) { this.listEvents.error = func; } buildHook() { const that = this; return new class extends HookProvider { do(context) { const workBookFunc = that.listEvents.workBook; const endWorkBookFunc = that.listEvents.endWorkBook; const sheetFunc = that.listEvents.sheet; const endSheetFunc = that.listEvents.endSheet; const errorFunc = that.listEvents.error; if (workBookFunc) context.WorkBook.before((ctx) => workBookFunc()); if (endWorkBookFunc) context.WorkBook.after((ctx) => endWorkBookFunc()); if (sheetFunc) context.Sheet.before((ctx) => sheetFunc(ctx.sheetName)); if (endSheetFunc) context.Sheet.after((ctx) => endSheetFunc(ctx.sheetName)); if (errorFunc) context.Error.after((ctx) => errorFunc(ctx.error)); } }(); } }; export { ContextEventHandler, EventHandler, HookProvider };