frontend/.pnpm-store/v3/files/16/df9d0cfc28661463899b6544214e24d5a66c93784bb6fe7966cd13d128529878a2fb5111c965ca6ba8bde57406408bf7b2d3d22b4352d16fdd940df2829e40

26 lines
855 B
Plaintext

import { Subject } from '../Subject';
import { Observable } from '../Observable';
import { defer } from './defer';
const DEFAULT_CONFIG = {
connector: () => new Subject(),
resetOnDisconnect: true,
};
export function connectable(source, config = DEFAULT_CONFIG) {
let connection = null;
const { connector, resetOnDisconnect = true } = config;
let subject = connector();
const result = new Observable((subscriber) => {
return subject.subscribe(subscriber);
});
result.connect = () => {
if (!connection || connection.closed) {
connection = defer(() => source).subscribe(subject);
if (resetOnDisconnect) {
connection.add(() => (subject = connector()));
}
}
return connection;
};
return result;
}
//# sourceMappingURL=connectable.js.map