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