UNPKG

@ngx-cocktail/destroyable

Version:

The library contains code for destoyable feature.

18 lines 2.96 kB
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==