@cycle/dom
Version:
The standard DOM Driver for Cycle.js, based on Snabbdom
59 lines • 2.11 kB
JavaScript
import xs from 'xstream';
import { adapt } from '@cycle/run/lib/adapt';
var SCOPE_PREFIX = '___';
var MockedDOMSource = /** @class */ (function () {
function MockedDOMSource(_mockConfig) {
this._mockConfig = _mockConfig;
if (_mockConfig.elements) {
this._elements = _mockConfig.elements;
}
else {
this._elements = adapt(xs.empty());
}
}
MockedDOMSource.prototype.elements = function () {
var out = this
._elements;
out._isCycleSource = 'MockedDOM';
return out;
};
MockedDOMSource.prototype.element = function () {
var output$ = this.elements()
.filter(function (arr) { return arr.length > 0; })
.map(function (arr) { return arr[0]; })
.remember();
var out = adapt(output$);
out._isCycleSource = 'MockedDOM';
return out;
};
MockedDOMSource.prototype.events = function (eventType, options, bubbles) {
var streamForEventType = this._mockConfig[eventType];
var out = adapt(streamForEventType || xs.empty());
out._isCycleSource = 'MockedDOM';
return out;
};
MockedDOMSource.prototype.select = function (selector) {
var mockConfigForSelector = this._mockConfig[selector] || {};
return new MockedDOMSource(mockConfigForSelector);
};
MockedDOMSource.prototype.isolateSource = function (source, scope) {
return source.select('.' + SCOPE_PREFIX + scope);
};
MockedDOMSource.prototype.isolateSink = function (sink, scope) {
return adapt(xs.fromObservable(sink).map(function (vnode) {
if (vnode.sel && vnode.sel.indexOf(SCOPE_PREFIX + scope) !== -1) {
return vnode;
}
else {
vnode.sel += "." + SCOPE_PREFIX + scope;
return vnode;
}
}));
};
return MockedDOMSource;
}());
export { MockedDOMSource };
export function mockDOMSource(mockConfig) {
return new MockedDOMSource(mockConfig);
}
//# sourceMappingURL=mockDOMSource.js.map