@zodiac-ui/ng-observable
Version:
Create powerful reactive components with Angular. AoT compatible and Ivy ready.
160 lines (154 loc) • 4.01 kB
JavaScript
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