@zodiac-ui/ng-observable
Version:
Create powerful reactive components with Angular. AoT compatible and Ivy ready.
33 lines • 2.8 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import { filter, take } from "rxjs/operators";
import { isObservable } from "rxjs";
/**
* @template U, V
* @param {?} source
* @param {?} name
* @param {?=} once
* @param {?=} pipes
* @return {?}
*/
export function createLifecycleHook(source, name, once, pipes = [filter((/**
* @param {?} inst
* @return {?}
*/
inst => inst === source))]) {
/** @type {?} */
const hook = source[name];
if (once) {
pipes.push(take(1));
}
if (isObservable(hook)) {
return ((/** @type {?} */ (hook))).pipe(...pipes);
}
else {
console.error(`${name} is not an observable! Error context: `, source);
throw new Error();
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLWxpZmVjeWNsZS1ob29rLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHpvZGlhYy11aS9uZy1vYnNlcnZhYmxlLyIsInNvdXJjZXMiOlsibGliL2ludGVybmFscy9jcmVhdGUtbGlmZWN5Y2xlLWhvb2sudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFDN0MsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQTs7Ozs7Ozs7O0FBRW5DLE1BQU0sVUFBVSxtQkFBbUIsQ0FDL0IsTUFBUyxFQUNULElBQU8sRUFDUCxJQUFjLEVBQ2QsS0FBSyxHQUFHLENBQUMsTUFBTTs7OztJQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxLQUFLLE1BQU0sRUFBQyxDQUFDOztVQUVuQyxJQUFJLEdBQVEsTUFBTSxDQUFDLElBQUksQ0FBQztJQUU5QixJQUFJLElBQUksRUFBRTtRQUNOLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7S0FDdEI7SUFFRCxJQUFJLFlBQVksQ0FBQyxJQUFJLENBQUMsRUFBRTtRQUNwQixPQUFPLENBQUMsbUJBQUssSUFBSSxFQUFBLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQTtLQUNwQztTQUFNO1FBQ0gsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLElBQUksd0NBQXdDLEVBQUUsTUFBTSxDQUFDLENBQUE7UUFDdEUsTUFBTSxJQUFJLEtBQUssRUFBRSxDQUFBO0tBQ3BCO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGZpbHRlciwgdGFrZSB9IGZyb20gXCJyeGpzL29wZXJhdG9yc1wiXHJcbmltcG9ydCB7IGlzT2JzZXJ2YWJsZSB9IGZyb20gXCJyeGpzXCJcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVMaWZlY3ljbGVIb29rPFUgZXh0ZW5kcyB7IFtrZXkgaW4gVl06IGFueSB9LCBWIGV4dGVuZHMgc3RyaW5nPihcclxuICAgIHNvdXJjZTogVSxcclxuICAgIG5hbWU6IFYsXHJcbiAgICBvbmNlPzogYm9vbGVhbixcclxuICAgIHBpcGVzID0gW2ZpbHRlcihpbnN0ID0+IGluc3QgPT09IHNvdXJjZSldLFxyXG4pIHtcclxuICAgIGNvbnN0IGhvb2s6IGFueSA9IHNvdXJjZVtuYW1lXVxyXG5cclxuICAgIGlmIChvbmNlKSB7XHJcbiAgICAgICAgcGlwZXMucHVzaCh0YWtlKDEpKVxyXG4gICAgfVxyXG5cclxuICAgIGlmIChpc09ic2VydmFibGUoaG9vaykpIHtcclxuICAgICAgICByZXR1cm4gKDxhbnk+aG9vaykucGlwZSguLi5waXBlcylcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgICAgY29uc29sZS5lcnJvcihgJHtuYW1lfSBpcyBub3QgYW4gb2JzZXJ2YWJsZSEgRXJyb3IgY29udGV4dDogYCwgc291cmNlKVxyXG4gICAgICAgIHRocm93IG5ldyBFcnJvcigpXHJcbiAgICB9XHJcbn1cclxuIl19