@zodiac-ui/ng-observable
Version:
Create powerful reactive components with Angular. AoT compatible and Ivy ready.
33 lines • 2.81 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLWxpZmVjeWNsZS1ob29rLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHpvZGlhYy11aS9uZy1vYnNlcnZhYmxlL29wZXJhdG9ycy8iLCJzb3VyY2VzIjpbImxpYi9pbnRlcm5hbHMvY3JlYXRlLWxpZmVjeWNsZS1ob29rLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBQzdDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUE7Ozs7Ozs7OztBQUVuQyxNQUFNLFVBQVUsbUJBQW1CLENBQy9CLE1BQVMsRUFDVCxJQUFPLEVBQ1AsSUFBYyxFQUNkLEtBQUssR0FBRyxDQUFDLE1BQU07Ozs7SUFBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksS0FBSyxNQUFNLEVBQUMsQ0FBQzs7VUFFbkMsSUFBSSxHQUFRLE1BQU0sQ0FBQyxJQUFJLENBQUM7SUFFOUIsSUFBSSxJQUFJLEVBQUU7UUFDTixLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO0tBQ3RCO0lBRUQsSUFBSSxZQUFZLENBQUMsSUFBSSxDQUFDLEVBQUU7UUFDcEIsT0FBTyxDQUFDLG1CQUFLLElBQUksRUFBQSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUE7S0FDcEM7U0FBTTtRQUNILE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxJQUFJLHdDQUF3QyxFQUFFLE1BQU0sQ0FBQyxDQUFBO1FBQ3RFLE1BQU0sSUFBSSxLQUFLLEVBQUUsQ0FBQTtLQUNwQjtBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBmaWx0ZXIsIHRha2UgfSBmcm9tIFwicnhqcy9vcGVyYXRvcnNcIlxyXG5pbXBvcnQgeyBpc09ic2VydmFibGUgfSBmcm9tIFwicnhqc1wiXHJcblxyXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlTGlmZWN5Y2xlSG9vazxVIGV4dGVuZHMgeyBba2V5IGluIFZdOiBhbnkgfSwgViBleHRlbmRzIHN0cmluZz4oXHJcbiAgICBzb3VyY2U6IFUsXHJcbiAgICBuYW1lOiBWLFxyXG4gICAgb25jZT86IGJvb2xlYW4sXHJcbiAgICBwaXBlcyA9IFtmaWx0ZXIoaW5zdCA9PiBpbnN0ID09PSBzb3VyY2UpXSxcclxuKSB7XHJcbiAgICBjb25zdCBob29rOiBhbnkgPSBzb3VyY2VbbmFtZV1cclxuXHJcbiAgICBpZiAob25jZSkge1xyXG4gICAgICAgIHBpcGVzLnB1c2godGFrZSgxKSlcclxuICAgIH1cclxuXHJcbiAgICBpZiAoaXNPYnNlcnZhYmxlKGhvb2spKSB7XHJcbiAgICAgICAgcmV0dXJuICg8YW55Pmhvb2spLnBpcGUoLi4ucGlwZXMpXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoYCR7bmFtZX0gaXMgbm90IGFuIG9ic2VydmFibGUhIEVycm9yIGNvbnRleHQ6IGAsIHNvdXJjZSlcclxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoKVxyXG4gICAgfVxyXG59XHJcbiJdfQ==