UNPKG

@zodiac-ui/ng-observable

Version:

Create powerful reactive components with Angular. AoT compatible and Ivy ready.

160 lines (154 loc) 4.01 kB
import { take, filter, map, distinctUntilChanged, mapTo } from 'rxjs/operators'; import { isObservable } from 'rxjs'; /** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ /** * @template U, V * @param {?} source * @param {?} name * @param {?=} once * @param {?=} pipes * @return {?} */ 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(); } } /** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ /** * @template T, U * @param {?} source * @return {?} */ function ngOnChanges(source) { /** @type {?} */ const onChangesPipe = [filter((/** * @param {?} args * @return {?} */ (args) => args[0] === source)), map((/** * @param {?} args * @return {?} */ (args) => args[1]))]; return createLifecycleHook(source, "ngOnChanges", false, onChangesPipe); } /** * @template T * @param {?} source * @return {?} */ function ngOnInit(source) { return createLifecycleHook(source, "ngOnInit", true); } /** * @template T * @param {?} source * @return {?} */ function ngDoCheck(source) { return createLifecycleHook(source, "ngDoCheck"); } /** * @template T * @param {?} source * @return {?} */ function ngAfterContentInit(source) { return createLifecycleHook(source, "ngAfterContentInit", true); } /** * @template T * @param {?} source * @return {?} */ function ngAfterContentChecked(source) { return createLifecycleHook(source, "ngAfterContentChecked"); } /** * @template T * @param {?} source * @return {?} */ function ngAfterViewInit(source) { return createLifecycleHook(source, "ngAfterViewInit", true); } /** * @template T * @param {?} source * @return {?} */ function ngAfterViewChecked(source) { return createLifecycleHook(source, "ngAfterViewChecked"); } /** * @template T * @param {?} source * @return {?} */ function ngOnDestroy(source) { return createLifecycleHook(source, "ngOnDestroy", true); } /** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ /** * @template T, U * @param {...?} args * @return {?} */ function select(...args) { /** @type {?} */ const selector = args[args.length - 1]; /** * @param {?} source * @return {?} */ function pipeState(source) { return source.pipe(map(selector), distinctUntilChanged()); } return args.length > 1 ? pipeState(args[0]) : pipeState; } /** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ /** * @template T * @param {?=} value * @return {?} */ function defaultMapFn(value) { return value; } /** * @template T, U * @param {?} source * @param {?=} mapFn * @return {?} */ function mapInputsToState(source, mapFn = defaultMapFn) { return ngOnChanges(source).pipe(mapTo(Object.create(source)), map(mapFn)); } export { mapInputsToState, ngAfterContentChecked, ngAfterContentInit, ngAfterViewChecked, ngAfterViewInit, ngDoCheck, ngOnChanges, ngOnDestroy, ngOnInit, select, createLifecycleHook as ɵa }; //# sourceMappingURL=zodiac-ui-ng-observable-operators.js.map