##// END OF EJS Templates
fixed NlsBundle locale package loading...
fixed NlsBundle locale package loading corrected DjxFragment params and return value fixed regression in DjxWidgetBase attach points processing fixed empty RenditionBase startup

File last commit:

r109:4a375b9c654a default
r112:2ccfaae984e9 v1.4.4 default
Show More
Scope.ts
42 lines | 1.2 KiB | video/mp2t | TypeScriptLexer
import { IDestroyable, IRemovable } from "@implab/core-amd/interfaces";
import { isDestroyable, isRemovable } from "@implab/core-amd/safe";
import { isUnsubsribable, Unsubscribable } from "../observable";
export interface IScope {
own(target: (() => void) | IDestroyable | IRemovable | Unsubscribable): void;
}
export class Scope implements IDestroyable, IScope {
private readonly _cleanup: (() => void)[] = [];
static readonly dummy: IScope = { own() { } };
own(target: (() => void) | IDestroyable | IRemovable | Unsubscribable) {
if (target instanceof Function) {
this._cleanup.push(target);
} else if (isDestroyable(target)) {
this._cleanup.push(() => target.destroy());
} else if (isRemovable(target)) {
this._cleanup.push(() => target.remove());
} else if (isUnsubsribable(target)) {
this._cleanup.push(() => target.unsubscribe());
}
}
clean() {
const guard = (cb: () => void) => {
try {
cb();
} catch {
// guard
}
};
this._cleanup.forEach(guard);
this._cleanup.length = 0;
}
destroy() {
this.clean();
}
}