UNPKG

surrogate

Version:

Object method hooks made easy

98 lines (89 loc) 4.05 kB
import {SurrogateHandlerContainer as $bccRj$SurrogateHandlerContainer} from "./surrogate.b769cedc.js"; import {OptionsHandler as $cd88bf3e08824493$export$8bcac92dafadbaee} from "./surrogate.cafd13cf.js"; import {HookType as $96586206eab52612$export$b3a402ce9f993bc7} from "./surrogate.5d082a84.js"; import {wrapDefaults as $bccRj$wrapDefaults} from "@status/defaults"; import {asArray as $bccRj$asArray} from "@jfrazx/asarray"; class $6ff15ac1913fdb95$export$cc74486daaaef499 { constructor(globalOptions = {}){ this.globalOptions = globalOptions; this.events = (0, $bccRj$wrapDefaults)({ defaultValue: { [(0, $96586206eab52612$export$b3a402ce9f993bc7).POST]: [], [(0, $96586206eab52612$export$b3a402ce9f993bc7).PRE]: [] }, setUndefined: true, shallowCopy: false }); } getEventMap() { return this.events; } getEventHandlers(event) { return this.events[event]; } getPreEventHandlers(event) { return this.getEventHandlersFor(event, (0, $96586206eab52612$export$b3a402ce9f993bc7).PRE); } getPostEventHandlers(event) { return this.getEventHandlersFor(event, (0, $96586206eab52612$export$b3a402ce9f993bc7).POST); } eventIsHandled(event) { const { pre: pre, post: post } = this.getEventHandlers(event); return Boolean(pre?.length + post?.length); } registerHook(event, type, handler, options) { return this.setEventHandlers(event, type, (0, $bccRj$asArray)(handler), options); } registerPreHook(event, handler, options) { return this.setEventHandlers(event, (0, $96586206eab52612$export$b3a402ce9f993bc7).PRE, (0, $bccRj$asArray)(handler), options); } registerPostHook(event, handler, options) { return this.setEventHandlers(event, (0, $96586206eab52612$export$b3a402ce9f993bc7).POST, (0, $bccRj$asArray)(handler), options); } setEventHandlers(event, type, handlers, options = {}) { const currentContainers = this.getEventHandlersFor(event, type); const optionsHandler = new (0, $cd88bf3e08824493$export$8bcac92dafadbaee)({ handler: options, global: this.globalOptions }); const containers = handlers.map((handler)=>new (0, $bccRj$SurrogateHandlerContainer)(handler, type, optionsHandler)); const combinedContainers = [ ...currentContainers, ...containers ]; this.setEventHandlersFor(event, type, combinedContainers); return this; } getEventHandlersFor(event, which) { return this.getEventHandlers(event)[which]; } setEventHandlersFor(event, type, containers = []) { this.getEventHandlers(event)[type] = containers; return this; } deregisterHooks() { Object.keys(this.events).forEach((event)=>this.deregisterHooksFor(event)); return this; } deregisterHooksFor(event) { return this.deregisterPreHooks(event).deregisterPostHooks(event); } deregisterPreHook(event, handler) { return this.deregisterHookType(event, (0, $96586206eab52612$export$b3a402ce9f993bc7).PRE, handler); } deregisterPostHook(event, handler) { return this.deregisterHookType(event, (0, $96586206eab52612$export$b3a402ce9f993bc7).POST, handler); } deregisterHookType(event, which, handlerToRemove) { const containers = this.getEventHandlersFor(event, which); return this.setEventHandlersFor(event, which, containers.filter(({ handler: handler })=>handler !== handlerToRemove)); } deregisterPostHooks(event) { return this.setEventHandlersFor(event, (0, $96586206eab52612$export$b3a402ce9f993bc7).POST); } deregisterPreHooks(event) { return this.setEventHandlersFor(event, (0, $96586206eab52612$export$b3a402ce9f993bc7).PRE); } } export {$6ff15ac1913fdb95$export$cc74486daaaef499 as EventManager}; //# sourceMappingURL=surrogate.1b0659b6.js.map