@ngx-cocktail/destroyable
Version:
The library contains code for destoyable feature.
18 lines • 2.96 kB
JavaScript
import { Destroyed } from './destroyable.class';
export function DestroyableFeature() {
return (directiveDef) => {
const { factory, type } = directiveDef;
const { ngOnDestroy } = directiveDef.type.prototype;
directiveDef.factory = () => {
const instance = factory?.(type);
const destroyed = Reflect.construct(Destroyed, []);
Object.assign(instance, destroyed);
directiveDef.type.prototype.ngOnDestroy = function () {
ngOnDestroy?.call(this);
destroyed.ngOnDestroy?.call(this);
};
return instance;
};
};
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVzdG95YWJsZS5mZWF0dXJlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvZGVzdHJveWFibGUvc3JjL2xpYi9kZXN0b3lhYmxlLmZlYXR1cmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBR2hELE1BQU0sVUFBVSxrQkFBa0I7SUFDaEMsT0FBTyxDQUNMLFlBQXdDLEVBQ3hDLEVBQUU7UUFDRixNQUFNLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxHQUFHLFlBQVksQ0FBQztRQUN2QyxNQUFNLEVBQUUsV0FBVyxFQUFFLEdBQUcsWUFBWSxDQUFDLElBQUksQ0FBQyxTQUFzQixDQUFDO1FBRWpFLFlBQVksQ0FBQyxPQUFPLEdBQUcsR0FBRyxFQUFFO1lBQzFCLE1BQU0sUUFBUSxHQUFHLE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBTSxDQUFDO1lBQ3RDLE1BQU0sU0FBUyxHQUFHLE9BQU8sQ0FBQyxTQUFTLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBZ0IsQ0FBQztZQUVsRSxNQUFNLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxTQUFTLENBQUMsQ0FBQztZQUVuQyxZQUFZLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLEdBQUc7Z0JBQ3hDLFdBQVcsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ3hCLFNBQVMsQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3BDLENBQUMsQ0FBQztZQUVGLE9BQU8sUUFBUSxDQUFDO1FBQ2xCLENBQUMsQ0FBQztJQUNKLENBQUMsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPbkRlc3Ryb3ksIMm1RGlyZWN0aXZlRGVmLCBUeXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBXcml0YWJsZSB9IGZyb20gJ0BuZ3gtY29ja3RhaWwvY29tbW9uJztcblxuaW1wb3J0IHsgRGVzdHJveWVkIH0gZnJvbSAnLi9kZXN0cm95YWJsZS5jbGFzcyc7XG5pbXBvcnQgeyBEZXN0cm95YWJsZSB9IGZyb20gJy4vZGVzdHJveWFibGUuaW50ZXJmYWNlJztcblxuZXhwb3J0IGZ1bmN0aW9uIERlc3Ryb3lhYmxlRmVhdHVyZSgpIHtcbiAgcmV0dXJuIDxUIGV4dGVuZHMgVHlwZTx1bmtub3duPj4oXG4gICAgZGlyZWN0aXZlRGVmOiBXcml0YWJsZTzJtURpcmVjdGl2ZURlZjxUPj5cbiAgKSA9PiB7XG4gICAgY29uc3QgeyBmYWN0b3J5LCB0eXBlIH0gPSBkaXJlY3RpdmVEZWY7XG4gICAgY29uc3QgeyBuZ09uRGVzdHJveSB9ID0gZGlyZWN0aXZlRGVmLnR5cGUucHJvdG90eXBlIGFzIE9uRGVzdHJveTtcblxuICAgIGRpcmVjdGl2ZURlZi5mYWN0b3J5ID0gKCkgPT4ge1xuICAgICAgY29uc3QgaW5zdGFuY2UgPSBmYWN0b3J5Py4odHlwZSkgYXMgVDtcbiAgICAgIGNvbnN0IGRlc3Ryb3llZCA9IFJlZmxlY3QuY29uc3RydWN0KERlc3Ryb3llZCwgW10pIGFzIERlc3Ryb3lhYmxlO1xuXG4gICAgICBPYmplY3QuYXNzaWduKGluc3RhbmNlLCBkZXN0cm95ZWQpO1xuXG4gICAgICBkaXJlY3RpdmVEZWYudHlwZS5wcm90b3R5cGUubmdPbkRlc3Ryb3kgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIG5nT25EZXN0cm95Py5jYWxsKHRoaXMpO1xuICAgICAgICBkZXN0cm95ZWQubmdPbkRlc3Ryb3k/LmNhbGwodGhpcyk7XG4gICAgICB9O1xuXG4gICAgICByZXR1cm4gaW5zdGFuY2U7XG4gICAgfTtcbiAgfTtcbn1cbiJdfQ==