@ngneat/loadoff
Version:
<p align="center"> <img width="20%" height="20%" src="./logo.svg"> </p>
24 lines • 3 kB
JavaScript
import { BehaviorSubject, defer } from 'rxjs';
import { finalize } from 'rxjs/operators';
function loadingTracker(tracker) {
return function (source) {
return defer(() => {
tracker.next(true);
return source;
}).pipe(finalize(() => tracker.next(false)));
};
}
export function loadingFor(...keys) {
const result = {};
for (const key of keys) {
const subject = new BehaviorSubject(false);
result[key] = {
inProgress$: subject.asObservable(),
track() {
return loadingTracker(subject);
},
};
}
return result;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9hZGluZ0Zvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nbmVhdC9sb2Fkb2ZmL3NyYy9saWIvbG9hZGluZ0Zvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZUFBZSxFQUFFLEtBQUssRUFBd0MsTUFBTSxNQUFNLENBQUM7QUFDcEYsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTFDLFNBQVMsY0FBYyxDQUFJLE9BQWlDO0lBQzFELE9BQU8sVUFBVSxNQUFxQjtRQUNwQyxPQUFPLEtBQUssQ0FBQyxHQUFHLEVBQUU7WUFDaEIsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUVuQixPQUFPLE1BQU0sQ0FBQztRQUNoQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQy9DLENBQUMsQ0FBQztBQUNKLENBQUM7QUFFRCxNQUFNLFVBQVUsVUFBVSxDQUF3QixHQUFHLElBQVM7SUFDNUQsTUFBTSxNQUFNLEdBTVIsRUFBUyxDQUFDO0lBRWQsS0FBSyxNQUFNLEdBQUcsSUFBSSxJQUFJLEVBQUU7UUFDdEIsTUFBTSxPQUFPLEdBQUcsSUFBSSxlQUFlLENBQVUsS0FBSyxDQUFDLENBQUM7UUFFcEQsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHO1lBQ1osV0FBVyxFQUFFLE9BQU8sQ0FBQyxZQUFZLEVBQUU7WUFDbkMsS0FBSztnQkFDSCxPQUFPLGNBQWMsQ0FBSSxPQUFPLENBQUMsQ0FBQztZQUNwQyxDQUFDO1NBQ0YsQ0FBQztLQUNIO0lBRUQsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgZGVmZXIsIE1vbm9UeXBlT3BlcmF0b3JGdW5jdGlvbiwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZmluYWxpemUgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmZ1bmN0aW9uIGxvYWRpbmdUcmFja2VyPFQ+KHRyYWNrZXI6IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPikge1xuICByZXR1cm4gZnVuY3Rpb24gKHNvdXJjZTogT2JzZXJ2YWJsZTxUPikge1xuICAgIHJldHVybiBkZWZlcigoKSA9PiB7XG4gICAgICB0cmFja2VyLm5leHQodHJ1ZSk7XG5cbiAgICAgIHJldHVybiBzb3VyY2U7XG4gICAgfSkucGlwZShmaW5hbGl6ZSgoKSA9PiB0cmFja2VyLm5leHQoZmFsc2UpKSk7XG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBsb2FkaW5nRm9yPEsgZXh0ZW5kcyBQcm9wZXJ0eUtleT4oLi4ua2V5czogS1tdKSB7XG4gIGNvbnN0IHJlc3VsdDogUmVjb3JkPFxuICAgIEssXG4gICAge1xuICAgICAgaW5Qcm9ncmVzcyQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XG4gICAgICB0cmFjazogPFQ+KCkgPT4gTW9ub1R5cGVPcGVyYXRvckZ1bmN0aW9uPFQ+O1xuICAgIH1cbiAgPiA9IHt9IGFzIGFueTtcblxuICBmb3IgKGNvbnN0IGtleSBvZiBrZXlzKSB7XG4gICAgY29uc3Qgc3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuXG4gICAgcmVzdWx0W2tleV0gPSB7XG4gICAgICBpblByb2dyZXNzJDogc3ViamVjdC5hc09ic2VydmFibGUoKSxcbiAgICAgIHRyYWNrPFQ+KCkge1xuICAgICAgICByZXR1cm4gbG9hZGluZ1RyYWNrZXI8VD4oc3ViamVjdCk7XG4gICAgICB9LFxuICAgIH07XG4gIH1cblxuICByZXR1cm4gcmVzdWx0O1xufVxuIl19