@zodiac-ui/ng-observable
Version:
Create powerful reactive components with Angular. AoT compatible and Ivy ready.
50 lines • 6.41 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import { InvokeSubject } from "../invoke-subject";
import { createMask } from "./create-mask";
/**
* Future API for declaring lifecycle hooks at runtime without extending a base class. Will
* become available if/when Angular supports runtime lifecycle hooks that work AoT or when
* the compiler can be configured to add lifecycle features without adding them to the class.
*
* @param {...?} flags Enum flags for toggling which lifecycle hooks to enable
*
* @return {?}
*/
export function UseHooks(...flags) {
/** @type {?} */
const features = createMask(...flags);
return (/**
* @param {?} target
* @return {?}
*/
function (target) {
if (features & 1) {
target.prototype.ngOnChanges = new InvokeSubject(target.prototype.ngOnChanges);
}
if (features & 2) {
target.prototype.ngOnInit = new InvokeSubject(target.prototype.ngOnInit);
}
if (features & 4) {
target.prototype.ngDoCheck = new InvokeSubject(target.prototype.ngDoCheck);
}
if (features & 8) {
target.prototype.ngAfterContentInit = new InvokeSubject(target.prototype.ngAfterContentInit);
}
if (features & 16) {
target.prototype.ngAfterContentChecked = new InvokeSubject(target.prototype.ngAfterContentChecked);
}
if (features & 32) {
target.prototype.ngAfterViewInit = new InvokeSubject(target.prototype.ngAfterViewInit);
}
if (features & 64) {
target.prototype.ngAfterViewChecked = new InvokeSubject(target.prototype.ngAfterViewChecked);
}
if (features & 128) {
target.prototype.ngOnDestroy = new InvokeSubject(target.prototype.ngOnDestroy);
}
});
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlLWhvb2tzLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHpvZGlhYy11aS9uZy1vYnNlcnZhYmxlLyIsInNvdXJjZXMiOlsibGliL2ludGVybmFscy91c2UtaG9va3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQTtBQUNqRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFBOzs7Ozs7Ozs7O0FBVTFDLE1BQU0sVUFBVSxRQUFRLENBQUMsR0FBRyxLQUFlOztVQUNqQyxRQUFRLEdBQUcsVUFBVSxDQUFDLEdBQUcsS0FBSyxDQUFDO0lBQ3JDOzs7O0lBQU8sVUFBUyxNQUFXO1FBQ3ZCLElBQUksUUFBUSxHQUFHLENBQUMsRUFBRTtZQUNkLE1BQU0sQ0FBQyxTQUFTLENBQUMsV0FBVyxHQUFHLElBQUksYUFBYSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLENBQUE7U0FDakY7UUFDRCxJQUFJLFFBQVEsR0FBRyxDQUFDLEVBQUU7WUFDZCxNQUFNLENBQUMsU0FBUyxDQUFDLFFBQVEsR0FBRyxJQUFJLGFBQWEsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFBO1NBQzNFO1FBQ0QsSUFBSSxRQUFRLEdBQUcsQ0FBQyxFQUFFO1lBQ2QsTUFBTSxDQUFDLFNBQVMsQ0FBQyxTQUFTLEdBQUcsSUFBSSxhQUFhLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQTtTQUM3RTtRQUNELElBQUksUUFBUSxHQUFHLENBQUMsRUFBRTtZQUNkLE1BQU0sQ0FBQyxTQUFTLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxhQUFhLENBQ25ELE1BQU0sQ0FBQyxTQUFTLENBQUMsa0JBQWtCLENBQ3RDLENBQUE7U0FDSjtRQUNELElBQUksUUFBUSxHQUFHLEVBQUUsRUFBRTtZQUNmLE1BQU0sQ0FBQyxTQUFTLENBQUMscUJBQXFCLEdBQUcsSUFBSSxhQUFhLENBQ3RELE1BQU0sQ0FBQyxTQUFTLENBQUMscUJBQXFCLENBQ3pDLENBQUE7U0FDSjtRQUNELElBQUksUUFBUSxHQUFHLEVBQUUsRUFBRTtZQUNmLE1BQU0sQ0FBQyxTQUFTLENBQUMsZUFBZSxHQUFHLElBQUksYUFBYSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsZUFBZSxDQUFDLENBQUE7U0FDekY7UUFDRCxJQUFJLFFBQVEsR0FBRyxFQUFFLEVBQUU7WUFDZixNQUFNLENBQUMsU0FBUyxDQUFDLGtCQUFrQixHQUFHLElBQUksYUFBYSxDQUNuRCxNQUFNLENBQUMsU0FBUyxDQUFDLGtCQUFrQixDQUN0QyxDQUFBO1NBQ0o7UUFDRCxJQUFJLFFBQVEsR0FBRyxHQUFHLEVBQUU7WUFDaEIsTUFBTSxDQUFDLFNBQVMsQ0FBQyxXQUFXLEdBQUcsSUFBSSxhQUFhLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsQ0FBQTtTQUNqRjtJQUNMLENBQUMsRUFBQTtBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbnZva2VTdWJqZWN0IH0gZnJvbSBcIi4uL2ludm9rZS1zdWJqZWN0XCJcclxuaW1wb3J0IHsgY3JlYXRlTWFzayB9IGZyb20gXCIuL2NyZWF0ZS1tYXNrXCJcclxuXHJcbi8qKlxyXG4gKiBGdXR1cmUgQVBJIGZvciBkZWNsYXJpbmcgbGlmZWN5Y2xlIGhvb2tzIGF0IHJ1bnRpbWUgd2l0aG91dCBleHRlbmRpbmcgYSBiYXNlIGNsYXNzLiBXaWxsXHJcbiAqIGJlY29tZSBhdmFpbGFibGUgaWYvd2hlbiBBbmd1bGFyIHN1cHBvcnRzIHJ1bnRpbWUgbGlmZWN5Y2xlIGhvb2tzIHRoYXQgd29yayBBb1Qgb3Igd2hlblxyXG4gKiB0aGUgY29tcGlsZXIgY2FuIGJlIGNvbmZpZ3VyZWQgdG8gYWRkIGxpZmVjeWNsZSBmZWF0dXJlcyB3aXRob3V0IGFkZGluZyB0aGVtIHRvIHRoZSBjbGFzcy5cclxuICpcclxuICogQHBhcmFtIGZsYWdzIEVudW0gZmxhZ3MgZm9yIHRvZ2dsaW5nIHdoaWNoIGxpZmVjeWNsZSBob29rcyB0byBlbmFibGVcclxuICpcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBVc2VIb29rcyguLi5mbGFnczogbnVtYmVyW10pIHtcclxuICAgIGNvbnN0IGZlYXR1cmVzID0gY3JlYXRlTWFzayguLi5mbGFncylcclxuICAgIHJldHVybiBmdW5jdGlvbih0YXJnZXQ6IGFueSkge1xyXG4gICAgICAgIGlmIChmZWF0dXJlcyAmIDEpIHtcclxuICAgICAgICAgICAgdGFyZ2V0LnByb3RvdHlwZS5uZ09uQ2hhbmdlcyA9IG5ldyBJbnZva2VTdWJqZWN0KHRhcmdldC5wcm90b3R5cGUubmdPbkNoYW5nZXMpXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChmZWF0dXJlcyAmIDIpIHtcclxuICAgICAgICAgICAgdGFyZ2V0LnByb3RvdHlwZS5uZ09uSW5pdCA9IG5ldyBJbnZva2VTdWJqZWN0KHRhcmdldC5wcm90b3R5cGUubmdPbkluaXQpXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChmZWF0dXJlcyAmIDQpIHtcclxuICAgICAgICAgICAgdGFyZ2V0LnByb3RvdHlwZS5uZ0RvQ2hlY2sgPSBuZXcgSW52b2tlU3ViamVjdCh0YXJnZXQucHJvdG90eXBlLm5nRG9DaGVjaylcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGZlYXR1cmVzICYgOCkge1xyXG4gICAgICAgICAgICB0YXJnZXQucHJvdG90eXBlLm5nQWZ0ZXJDb250ZW50SW5pdCA9IG5ldyBJbnZva2VTdWJqZWN0KFxyXG4gICAgICAgICAgICAgICAgdGFyZ2V0LnByb3RvdHlwZS5uZ0FmdGVyQ29udGVudEluaXQsXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGZlYXR1cmVzICYgMTYpIHtcclxuICAgICAgICAgICAgdGFyZ2V0LnByb3RvdHlwZS5uZ0FmdGVyQ29udGVudENoZWNrZWQgPSBuZXcgSW52b2tlU3ViamVjdChcclxuICAgICAgICAgICAgICAgIHRhcmdldC5wcm90b3R5cGUubmdBZnRlckNvbnRlbnRDaGVja2VkLFxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChmZWF0dXJlcyAmIDMyKSB7XHJcbiAgICAgICAgICAgIHRhcmdldC5wcm90b3R5cGUubmdBZnRlclZpZXdJbml0ID0gbmV3IEludm9rZVN1YmplY3QodGFyZ2V0LnByb3RvdHlwZS5uZ0FmdGVyVmlld0luaXQpXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChmZWF0dXJlcyAmIDY0KSB7XHJcbiAgICAgICAgICAgIHRhcmdldC5wcm90b3R5cGUubmdBZnRlclZpZXdDaGVja2VkID0gbmV3IEludm9rZVN1YmplY3QoXHJcbiAgICAgICAgICAgICAgICB0YXJnZXQucHJvdG90eXBlLm5nQWZ0ZXJWaWV3Q2hlY2tlZCxcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoZmVhdHVyZXMgJiAxMjgpIHtcclxuICAgICAgICAgICAgdGFyZ2V0LnByb3RvdHlwZS5uZ09uRGVzdHJveSA9IG5ldyBJbnZva2VTdWJqZWN0KHRhcmdldC5wcm90b3R5cGUubmdPbkRlc3Ryb3kpXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcbiJdfQ==