@zodiac-ui/ng-observable
Version:
Create powerful reactive components with Angular. AoT compatible and Ivy ready.
35 lines • 3.01 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import * as tslib_1 from "tslib";
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) {
if (pipes === void 0) { pipes = [filter((/**
* @param {?} inst
* @return {?}
*/
function (inst) { return inst === source; }))]; }
/** @type {?} */
var hook = source[name];
if (once) {
pipes.push(take(1));
}
if (isObservable(hook)) {
return ((/** @type {?} */ (hook))).pipe.apply(((/** @type {?} */ (hook))), tslib_1.__spread(pipes));
}
else {
console.error(name + " is not an observable! Error context: ", source);
throw new Error();
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLWxpZmVjeWNsZS1ob29rLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHpvZGlhYy11aS9uZy1vYnNlcnZhYmxlLyIsInNvdXJjZXMiOlsibGliL2ludGVybmFscy9jcmVhdGUtbGlmZWN5Y2xlLWhvb2sudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBQzdDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUE7Ozs7Ozs7OztBQUVuQyxNQUFNLFVBQVUsbUJBQW1CLENBQy9CLE1BQVMsRUFDVCxJQUFPLEVBQ1AsSUFBYyxFQUNkLEtBQXlDO0lBQXpDLHNCQUFBLEVBQUEsU0FBUyxNQUFNOzs7O1FBQUMsVUFBQSxJQUFJLElBQUksT0FBQSxJQUFJLEtBQUssTUFBTSxFQUFmLENBQWUsRUFBQyxDQUFDOztRQUVuQyxJQUFJLEdBQVEsTUFBTSxDQUFDLElBQUksQ0FBQztJQUU5QixJQUFJLElBQUksRUFBRTtRQUNOLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7S0FDdEI7SUFFRCxJQUFJLFlBQVksQ0FBQyxJQUFJLENBQUMsRUFBRTtRQUNwQixPQUFPLENBQUMsbUJBQUssSUFBSSxFQUFBLENBQUMsQ0FBQyxJQUFJLE9BQWhCLENBQUMsbUJBQUssSUFBSSxFQUFBLENBQUMsbUJBQVMsS0FBSyxHQUFDO0tBQ3BDO1NBQU07UUFDSCxPQUFPLENBQUMsS0FBSyxDQUFJLElBQUksMkNBQXdDLEVBQUUsTUFBTSxDQUFDLENBQUE7UUFDdEUsTUFBTSxJQUFJLEtBQUssRUFBRSxDQUFBO0tBQ3BCO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGZpbHRlciwgdGFrZSB9IGZyb20gXCJyeGpzL29wZXJhdG9yc1wiXHJcbmltcG9ydCB7IGlzT2JzZXJ2YWJsZSB9IGZyb20gXCJyeGpzXCJcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVMaWZlY3ljbGVIb29rPFUgZXh0ZW5kcyB7IFtrZXkgaW4gVl06IGFueSB9LCBWIGV4dGVuZHMgc3RyaW5nPihcclxuICAgIHNvdXJjZTogVSxcclxuICAgIG5hbWU6IFYsXHJcbiAgICBvbmNlPzogYm9vbGVhbixcclxuICAgIHBpcGVzID0gW2ZpbHRlcihpbnN0ID0+IGluc3QgPT09IHNvdXJjZSldLFxyXG4pIHtcclxuICAgIGNvbnN0IGhvb2s6IGFueSA9IHNvdXJjZVtuYW1lXVxyXG5cclxuICAgIGlmIChvbmNlKSB7XHJcbiAgICAgICAgcGlwZXMucHVzaCh0YWtlKDEpKVxyXG4gICAgfVxyXG5cclxuICAgIGlmIChpc09ic2VydmFibGUoaG9vaykpIHtcclxuICAgICAgICByZXR1cm4gKDxhbnk+aG9vaykucGlwZSguLi5waXBlcylcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgICAgY29uc29sZS5lcnJvcihgJHtuYW1lfSBpcyBub3QgYW4gb2JzZXJ2YWJsZSEgRXJyb3IgY29udGV4dDogYCwgc291cmNlKVxyXG4gICAgICAgIHRocm93IG5ldyBFcnJvcigpXHJcbiAgICB9XHJcbn1cclxuIl19