@equinor/fusion-observable
Version:
12 lines • 613 B
JavaScript
import { useMemo } from 'react';
import { distinctUntilChanged, map } from 'rxjs/operators';
import { mapProp } from '../operators';
const selectorFn = (subject, selector, compare) => {
const selectorFn = typeof selector === 'function' ? map(selector) : mapProp(selector);
return subject.pipe(selectorFn, distinctUntilChanged(compare));
};
/** Implementation of `useObservableSelector`. */
export function useObservableSelector(subject, selector, compare) {
return useMemo(() => selectorFn(subject, selector, compare), [subject, selector, compare]);
}
//# sourceMappingURL=useObservableSelector.js.map