@lifaon/rx-js-light
Version:
Blazing fast Observables
37 lines (36 loc) • 764 B
JavaScript
import {freeze} from "../helpers/freeze.mjs";
export function createSubscription(subscribe, emit) {
let unsubscribe = null;
const isActivated = () => {
return unsubscribe !== null;
};
const activate = () => {
if (unsubscribe === null) {
unsubscribe = subscribe(emit);
}
return subscription;
};
const deactivate = () => {
if (unsubscribe !== null) {
unsubscribe();
unsubscribe = null;
}
return subscription;
};
const toggle = (_activate = !isActivated()) => {
if (_activate) {
return activate();
} else {
return deactivate();
}
};
const subscription = freeze({
subscribe,
emit,
isActivated,
activate,
deactivate,
toggle
});
return subscription;
}