@antischematic/angular-state-library
Version:
Reactive state without boilerplate
30 lines • 5.42 kB
JavaScript
import { inject } from "@angular/core";
import { concatAll, exhaustAll, mergeAll, pipe, Subscription, switchAll } from "rxjs";
import { Changes, EffectScheduler, Teardown } from "./providers";
export function useOperator(operator) {
const effect = inject(EffectScheduler);
if (!effect.operator) {
effect.operator = operator;
}
}
export function useSwitch(operator) {
useOperator(operator ? pipe(operator, switchAll()) : switchAll());
}
export function useMerge(operator, concurrent = operator) {
useOperator(typeof operator === "function" ? pipe(operator, mergeAll(concurrent)) : mergeAll(concurrent));
}
export function useConcat(operator) {
useOperator(operator ? pipe(operator, concatAll()) : concatAll());
}
export function useExhaust(operator) {
useOperator(operator ? pipe(operator, exhaustAll()) : exhaustAll());
}
export function addTeardown(teardown) {
const subscription = new Subscription();
subscription.add(teardown);
inject(Teardown).subscriptions.push(subscription);
}
export function useInputs() {
return inject(Changes).value;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG9va3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9wcm9qZWN0cy9jb3JlL3NyYy9ob29rcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3JDLE9BQU8sRUFDSixTQUFTLEVBQ1QsVUFBVSxFQUNWLFFBQVEsRUFJUixJQUFJLEVBQ0osWUFBWSxFQUNaLFNBQVMsRUFFWCxNQUFNLE1BQU0sQ0FBQztBQUVkLE9BQU8sRUFBQyxPQUFPLEVBQUUsZUFBZSxFQUFFLFFBQVEsRUFBQyxNQUFNLGFBQWEsQ0FBQztBQUUvRCxNQUFNLFVBQVUsV0FBVyxDQUEyRCxRQUFXO0lBQzlGLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQTtJQUN0QyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRTtRQUNuQixNQUFNLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQTtLQUM1QjtBQUNKLENBQUM7QUFFRCxNQUFNLFVBQVUsU0FBUyxDQUFDLFFBQXdEO0lBQy9FLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQTtBQUNwRSxDQUFDO0FBS0QsTUFBTSxVQUFVLFFBQVEsQ0FBQyxRQUFpRSxFQUFFLGFBQXFCLFFBQWtCO0lBQ2hJLFdBQVcsQ0FBQyxPQUFPLFFBQVEsS0FBSyxVQUFVLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFBO0FBQzVHLENBQUM7QUFFRCxNQUFNLFVBQVUsU0FBUyxDQUFDLFFBQXdEO0lBQy9FLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQTtBQUNwRSxDQUFDO0FBRUQsTUFBTSxVQUFVLFVBQVUsQ0FBQyxRQUF3RDtJQUNoRixXQUFXLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUE7QUFDdEUsQ0FBQztBQUVELE1BQU0sVUFBVSxXQUFXLENBQUMsUUFBdUI7SUFDaEQsTUFBTSxZQUFZLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQTtJQUN2QyxZQUFZLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFBO0lBQzFCLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFBO0FBQ3BELENBQUM7QUFFRCxNQUFNLFVBQVUsU0FBUztJQUN0QixPQUFPLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLENBQUE7QUFDL0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7aW5qZWN0fSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHtcbiAgIGNvbmNhdEFsbCxcbiAgIGV4aGF1c3RBbGwsXG4gICBtZXJnZUFsbCxcbiAgIE1vbm9UeXBlT3BlcmF0b3JGdW5jdGlvbixcbiAgIE9ic2VydmFibGUsXG4gICBPcGVyYXRvckZ1bmN0aW9uLFxuICAgcGlwZSxcbiAgIFN1YnNjcmlwdGlvbixcbiAgIHN3aXRjaEFsbCxcbiAgIFRlYXJkb3duTG9naWNcbn0gZnJvbSBcInJ4anNcIjtcbmltcG9ydCB7VHlwZWRDaGFuZ2VzfSBmcm9tIFwiLi9pbnRlcmZhY2VzXCI7XG5pbXBvcnQge0NoYW5nZXMsIEVmZmVjdFNjaGVkdWxlciwgVGVhcmRvd259IGZyb20gXCIuL3Byb3ZpZGVyc1wiO1xuXG5leHBvcnQgZnVuY3Rpb24gdXNlT3BlcmF0b3I8VCBleHRlbmRzIE9wZXJhdG9yRnVuY3Rpb248T2JzZXJ2YWJsZTx1bmtub3duPiwgdW5rbm93bj4+KG9wZXJhdG9yOiBUKSB7XG4gICBjb25zdCBlZmZlY3QgPSBpbmplY3QoRWZmZWN0U2NoZWR1bGVyKVxuICAgaWYgKCFlZmZlY3Qub3BlcmF0b3IpIHtcbiAgICAgIGVmZmVjdC5vcGVyYXRvciA9IG9wZXJhdG9yXG4gICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1c2VTd2l0Y2gob3BlcmF0b3I/OiBNb25vVHlwZU9wZXJhdG9yRnVuY3Rpb248T2JzZXJ2YWJsZTx1bmtub3duPj4pIHtcbiAgIHVzZU9wZXJhdG9yKG9wZXJhdG9yID8gcGlwZShvcGVyYXRvciwgc3dpdGNoQWxsKCkpIDogc3dpdGNoQWxsKCkpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1c2VNZXJnZSgpOiB2b2lkXG5leHBvcnQgZnVuY3Rpb24gdXNlTWVyZ2UoY29uY3VycmVudDogbnVtYmVyKTogdm9pZFxuZXhwb3J0IGZ1bmN0aW9uIHVzZU1lcmdlKG9wZXJhdG9yPzogTW9ub1R5cGVPcGVyYXRvckZ1bmN0aW9uPE9ic2VydmFibGU8dW5rbm93bj4+LCBjb25jdXJyZW50PzogbnVtYmVyKTogdm9pZFxuZXhwb3J0IGZ1bmN0aW9uIHVzZU1lcmdlKG9wZXJhdG9yPzogTW9ub1R5cGVPcGVyYXRvckZ1bmN0aW9uPE9ic2VydmFibGU8dW5rbm93bj4+IHwgbnVtYmVyLCBjb25jdXJyZW50OiBudW1iZXIgPSBvcGVyYXRvciBhcyBudW1iZXIpIHtcbiAgIHVzZU9wZXJhdG9yKHR5cGVvZiBvcGVyYXRvciA9PT0gXCJmdW5jdGlvblwiID8gcGlwZShvcGVyYXRvciwgbWVyZ2VBbGwoY29uY3VycmVudCkpIDogbWVyZ2VBbGwoY29uY3VycmVudCkpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1c2VDb25jYXQob3BlcmF0b3I/OiBNb25vVHlwZU9wZXJhdG9yRnVuY3Rpb248T2JzZXJ2YWJsZTx1bmtub3duPj4pIHtcbiAgIHVzZU9wZXJhdG9yKG9wZXJhdG9yID8gcGlwZShvcGVyYXRvciwgY29uY2F0QWxsKCkpIDogY29uY2F0QWxsKCkpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1c2VFeGhhdXN0KG9wZXJhdG9yPzogTW9ub1R5cGVPcGVyYXRvckZ1bmN0aW9uPE9ic2VydmFibGU8dW5rbm93bj4+KSB7XG4gICB1c2VPcGVyYXRvcihvcGVyYXRvciA/IHBpcGUob3BlcmF0b3IsIGV4aGF1c3RBbGwoKSkgOiBleGhhdXN0QWxsKCkpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhZGRUZWFyZG93bih0ZWFyZG93bjogVGVhcmRvd25Mb2dpYykge1xuICAgY29uc3Qgc3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpXG4gICBzdWJzY3JpcHRpb24uYWRkKHRlYXJkb3duKVxuICAgaW5qZWN0KFRlYXJkb3duKS5zdWJzY3JpcHRpb25zLnB1c2goc3Vic2NyaXB0aW9uKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdXNlSW5wdXRzPFQ+KCk6IFR5cGVkQ2hhbmdlczxUPiB7XG4gICByZXR1cm4gaW5qZWN0KENoYW5nZXMpLnZhbHVlXG59XG4iXX0=