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