2018-07-17 14:16:17 +00:00
|
|
|
export class Hooks {
|
2018-07-18 11:45:46 +00:00
|
|
|
hooks: object;
|
|
|
|
all: string[];
|
2018-07-17 14:16:17 +00:00
|
|
|
|
|
|
|
constructor(app) {
|
|
|
|
this._hooks = {};
|
2018-07-18 11:45:46 +00:00
|
|
|
this.all = ['preRenderSvg', 'postRenderSvg'];
|
2018-07-17 14:16:17 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
on(hook, method): void {
|
|
|
|
if(typeof this.hooks._hooks[method] === 'undefined') {
|
|
|
|
this.hooks._hooks[hook] = [];
|
|
|
|
}
|
|
|
|
this.hooks._hooks[hook].push(method);
|
2018-07-18 11:45:46 +00:00
|
|
|
console.log('Hooks::on ', hook, method);
|
2018-07-17 14:16:17 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
list(hook): function[] {
|
|
|
|
if(typeof this._hooks[hook] === 'undefined') {
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
|
|
|
return this._hooks[hook];
|
|
|
|
}
|
|
|
|
|
|
|
|
attachPre (hook: string, obj: object): void {
|
|
|
|
this._attach('pre', hook, obj);
|
|
|
|
}
|
|
|
|
attachPost (hook: string, obj: object): void {
|
|
|
|
this._attach('post', hook, obj);
|
|
|
|
}
|
|
|
|
|
|
|
|
attach (hook: string, obj: object): void {
|
2018-07-18 11:45:46 +00:00
|
|
|
console.log('Hooks::attach', hook, obj, this._hooks);
|
2018-07-17 14:16:17 +00:00
|
|
|
if(typeof this._hooks[hook] === 'undefined') return;
|
|
|
|
for(let func of this._hooks[hook]) {
|
2018-07-18 11:45:46 +00:00
|
|
|
console.log('Hooks::attach', hook, func);
|
2018-07-17 14:16:17 +00:00
|
|
|
obj.pre(hook, func);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|