diff --git a/lib/fromEvent.js b/lib/fromEvent.js deleted file mode 100644 index 5b392a6..0000000 --- a/lib/fromEvent.js +++ /dev/null @@ -1,71 +0,0 @@ -'use strict'; - -var _Stream = require('most/lib/Stream'); - -var _Stream2 = _interopRequireDefault(_Stream); - -var _MulticastSource = require('most/lib/source/MulticastSource'); - -var _MulticastSource2 = _interopRequireDefault(_MulticastSource); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -var tryEvent = function tryEvent(t, x, sink) { - try { - sink.event(t, x); - } catch (e) { - sink.error(t, e); - } -}; - -var EventAdapter = function EventAdapter( // eslint-disable-line -init, event, source, useCapture, sink, scheduler) { - this.event = event; - this.source = source; - this.useCapture = useCapture; - - var addEvent = function addEvent(ev) { - tryEvent(scheduler.now(), ev, sink); - }; - - this._dispose = init(source, event, addEvent, useCapture); -}; - -EventAdapter.prototype.dispose = function dispose() { - return this._dispose(this.event, this.source); -}; - -var initEventTarget = function initEventTarget(source, event, addEvent, useCapture) { - // eslint-disable-line - source.addEventListener(event, addEvent, useCapture); - - var dispose = function dispose(_event, target) { - target.removeEventListener(_event, addEvent, useCapture); - }; - - return dispose; -}; - -function EventTargetSource(event, source, useCapture) { - this.event = event; - this.source = source; - this.useCapture = useCapture; -} - -EventTargetSource.prototype.run = function run(sink, scheduler) { - return new EventAdapter(initEventTarget, this.event, this.source, this.useCapture, sink, scheduler); -}; - -var fromEvent = function fromEvent(event, source) { - var useCapture = arguments.length <= 2 || arguments[2] === undefined ? false : arguments[2]; - - var s = undefined; - if (source.addEventListener && source.removeEventListener) { - s = new _MulticastSource2.default(new EventTargetSource(event, source, useCapture)); - } else { - throw new Error('source must support addEventListener/removeEventListener'); - } - return new _Stream2.default(s); -}; - -module.exports = fromEvent; \ No newline at end of file diff --git a/lib/index.js b/lib/index.js deleted file mode 100644 index 3a2f534..0000000 --- a/lib/index.js +++ /dev/null @@ -1,118 +0,0 @@ -'use strict'; - -var _slicedToArray = (function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; })(); - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.h = exports.makeDOMDriver = undefined; - -var _most = require('most'); - -var _most2 = _interopRequireDefault(_most); - -var _snabbdom = require('snabbdom'); - -var _snabbdom2 = _interopRequireDefault(_snabbdom); - -var _h = require('snabbdom/h'); - -var _h2 = _interopRequireDefault(_h); - -var _utils = require('./utils'); - -var _fromEvent = require('./fromEvent'); - -var _fromEvent2 = _interopRequireDefault(_fromEvent); - -var _parseTree = require('./parseTree'); - -var _parseTree2 = _interopRequireDefault(_parseTree); - -var _map = require('fast.js/array/map'); - -var _map2 = _interopRequireDefault(_map); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) arr2[i] = arr[i]; return arr2; } else { return Array.from(arr); } } - -function makeEventsSelector(element$) { - return function events(eventName) { - var useCapture = arguments.length <= 1 || arguments[1] === undefined ? false : arguments[1]; - - if (typeof eventName !== 'string') { - throw new Error('DOM driver\'s events() expects argument to be a ' + 'string representing the event type to listen for.'); - } - return element$.flatMap(function (elements) { - if (!elements) { - return _most2.default.empty(); - } - return _most2.default.merge.apply(_most2.default, _toConsumableArray((0, _map2.default)(elements, function (el) { - console.log(el); - return (0, _fromEvent2.default)(eventName, el, useCapture); - }))); - }).multicast(); - }; -} - -function makeElementSelector(rootElem$) { - return function select(selector) { - if (typeof selector !== 'string') { - throw new Error('DOM driver\'s select() expects first argument to be a ' + 'string as a CSS selector'); - } - var element$ = selector.trim() === ':root' ? rootElem$ : rootElem$.map(function (rootElem) { - return rootElem.querySelectorAll(selector); - }); - return { - observable: element$, - events: makeEventsSelector(element$, rootElem$) - }; - }; -} - -function validateDOMDriverInput(view$) { - if (!view$ || typeof view$.observe !== 'function') { - throw new Error('The DOM driver function expects as input an ' + 'Observable of virtual DOM elements'); - } -} - -function firstRender(rootElem, renderContainer) { - if (rootElem.hasChildNodes) { - rootElem.innerHTML = ''; - } - rootElem.appendChild(renderContainer); - return rootElem; -} - -function makeDOMDriver(container) { - var modules = arguments.length <= 1 || arguments[1] === undefined ? [require('snabbdom/modules/class'), require('snabbdom/modules/props'), require('snabbdom/modules/attributes'), require('snabbdom/modules/style')] : arguments[1]; - - var patch = _snabbdom2.default.init(modules); - var rootElem = (0, _utils.getDomElement)(container); - var renderContainer = document.createElement('div'); - - return function DOMDriver(view$) { - validateDOMDriverInput(view$); - - var rootElem$ = _most2.default.create(function (add) { - view$.flatMap(_parseTree2.default).reduce(function (buffer, x) { - var _buffer = _slicedToArray(buffer, 2); - - var viewContainer = _buffer[0]; - var view = _buffer[1]; - - add(viewContainer === rootElem ? firstRender(viewContainer, view) : view.elm); - patch(view, x); - return [view, x]; - }, [rootElem, renderContainer]); - }); - - return { - select: makeElementSelector(rootElem$.skipRepeats()) - }; - }; -} - -exports.makeDOMDriver = makeDOMDriver; -exports.h = _h2.default; \ No newline at end of file diff --git a/lib/parseTree.js b/lib/parseTree.js deleted file mode 100644 index 09f0f4a..0000000 --- a/lib/parseTree.js +++ /dev/null @@ -1,47 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.parseTree = undefined; - -var _most = require('most'); - -var _most2 = _interopRequireDefault(_most); - -var _assign = require('fast.js/object/assign'); - -var _assign2 = _interopRequireDefault(_assign); - -var _map = require('fast.js/array/map'); - -var _map2 = _interopRequireDefault(_map); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) arr2[i] = arr[i]; return arr2; } else { return Array.from(arr); } } - -function _typeof(obj) { return obj && typeof Symbol !== "undefined" && obj.constructor === Symbol ? "symbol" : typeof obj; } - -function combineVTreeStreams(vTree) { - for (var _len = arguments.length, children = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { - children[_key - 1] = arguments[_key]; - } - - return (0, _assign2.default)(vTree, { children: children }); -} - -function parseTree(vTree) { - if (vTree.observe) { - return vTree.flatMap(parseTree); - } else if ('object' === (typeof vTree === 'undefined' ? 'undefined' : _typeof(vTree)) && Array.isArray(vTree.children) && vTree.children.length > 0) { - return _most2.default.zip.apply(_most2.default, [combineVTreeStreams, _most2.default.just(vTree)].concat(_toConsumableArray((0, _map2.default)(vTree.children, parseTree)))); - } else if ('object' === (typeof vTree === 'undefined' ? 'undefined' : _typeof(vTree))) { - return _most2.default.just(vTree); - } else { - throw new Error('Unhandled tree value'); - } -} - -exports.default = parseTree; -exports.parseTree = parseTree; \ No newline at end of file diff --git a/lib/utils.js b/lib/utils.js deleted file mode 100644 index 894f19a..0000000 --- a/lib/utils.js +++ /dev/null @@ -1,81 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.Subject = exports.getDomElement = undefined; - -var _most = require('most'); - -var _most2 = _interopRequireDefault(_most); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function isElement(obj) { - return typeof HTMLElement === 'object' ? obj instanceof HTMLElement || obj instanceof DocumentFragment : //DOM2 - obj && typeof obj === 'object' && obj !== null && (obj.nodeType === 1 || obj.nodeType === 11) && typeof obj.nodeName === 'string'; -} - -function getDomElement(_el) { - var domElement = typeof _el === 'string' ? document.querySelector(_el) : _el; - - if (typeof domElement === 'string' && domElement === null) { - throw new Error('Cannot render into unknown element `' + _el + '`'); - } else if (!isElement(domElement)) { - throw new Error('Given container is not a DOM element neither a ' + 'selector string.'); - } - return domElement; -} - -function setImmediate(fn) { - return setTimeout(fn, 0); -} - -function Subject() { - var initial = arguments.length <= 0 || arguments[0] === undefined ? null : arguments[0]; - - var _add = undefined; - var _end = undefined; - var _error = undefined; - - var stream = _most2.default.create(function (add, end, error) { - _add = add; - _end = end; - _error = error; - return _error; - }); - - stream.push = function (v) { - return setImmediate(function () { - return typeof _add === 'function' ? _add(v) : void 0; - }); - }; - - stream.end = function () { - return setImmediate(function () { - return typeof _end === 'function' ? _end() : void 0; - }); - }; - - stream.error = function (e) { - return setImmediate(function () { - return typeof _error === 'function' ? _error(e) : void 0; - }); - }; - - stream.plug = function (value$) { - var subject = Subject(); - value$.forEach(subject.push); - subject.forEach(stream.push); - return subject.end; - }; - - if (initial !== null) { - stream.push(initial); - } - - return stream; -} - -exports.getDomElement = getDomElement; -exports.Subject = Subject; \ No newline at end of file