@tronicboy/svelte-rxjs-subjects
Version:
RxJS Subjects written to be used as a Svelte Store.
63 lines (62 loc) • 2.06 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.SvelteReplaySubject = exports.SvelteBehaviorSubject = exports.SvelteSubject = void 0;
const rxjs_1 = require("rxjs");
/**
* Adjusted to be usable with Svelte templates.
*
* A Subject is a special type of Observable that allows values to be
* multicasted to many Observers. Subjects are like EventEmitters.
*
* Every Subject is an Observable and an Observer. You can subscribe to a
* Subject, and you can call next to feed values as well as error and complete.
*
* @example
* <script>
* const text$ = new SvelteSubject();
* setTimeout(() => text$.next('Hello World'), 100);
* </script>
*
* <h1>{$text$}</h1>
*/
class SvelteSubject extends rxjs_1.Subject {
set(value) {
this.next(value);
}
}
exports.SvelteSubject = SvelteSubject;
/**
* Adjusted to be usable with Svelte templates.
*
* A variant of Subject that requires an initial value and emits its current
* value whenever it is subscribed to.
*
* @example
* <script>
* const text$ = new SvelteBehaviorSubject('Hello');
* setTimeout(() => text$.next('Hello Carl'), 100);
* </script>
*
* <h1>{$text$}</h1>
*/
class SvelteBehaviorSubject extends rxjs_1.BehaviorSubject {
set(value) {
this.next(value);
}
}
exports.SvelteBehaviorSubject = SvelteBehaviorSubject;
/**
* Adjusted to be usable with Svelte templates.
*
* A variant of {@link Subject} that "replays" old values to new subscribers by emitting them when they first subscribe.
*
* `ReplaySubject` has an internal buffer that will store a specified number of values that it has observed. Like `Subject`,
* `ReplaySubject` "observes" values by having them passed to its `next` method. When it observes a value, it will store that
* value for a time determined by the configuration of the `ReplaySubject`, as passed to its constructor.
*/
class SvelteReplaySubject extends rxjs_1.ReplaySubject {
set(value) {
this.next(value);
}
}
exports.SvelteReplaySubject = SvelteReplaySubject;