diff --git a/src/lib/utils/operators.ts b/src/lib/utils/operators.ts index 4835fce..347a411 100644 --- a/src/lib/utils/operators.ts +++ b/src/lib/utils/operators.ts @@ -27,3 +27,12 @@ export function shareDistinctLast(values = 1): UnaryFunction, O export const toLengthValue = (entities: unknown[]): number => entities?.length ?? 0; export const getLength = pipe(map(toLengthValue), distinctUntilChanged()); + +export function boolFactory(obs: Observable, project: (value: T) => boolean): Observable[] { + const result = obs.pipe(map(project), shareDistinctLast()); + const inverse = result.pipe( + map(value => !value), + shareDistinctLast(), + ); + return [result, inverse]; +}