UNPKG

elliptical-observe

Version:
71 lines (52 loc) 1.79 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _typeof2 = require('babel-runtime/helpers/typeof'); var _typeof3 = _interopRequireDefault(_typeof2); exports.default = createStore; var _lodash = require('lodash'); var _lodash2 = _interopRequireDefault(_lodash); var _zenObservable = require('zen-observable'); var _zenObservable2 = _interopRequireDefault(_zenObservable); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function createStore() { var items = []; var observer = void 0; var data = new _zenObservable2.default(function (newObserver) { observer = newObserver; }); function register(element) { var existing = _lodash2.default.find(items, function (item) { return _lodash2.default.isEqual(element, item.element); }); if (existing) { return existing.value; } else { var _ret = function () { var newItem = { element: element }; items.push(newItem); var fetched = element.type.fetch(element); var subscription = fetched.subscribe({ next: function next(value) { newItem.value = value; if (observer) { observer.next({ element: element, value: value }); } } }); newItem.subscription = subscription; return { v: newItem.value }; }(); if ((typeof _ret === 'undefined' ? 'undefined' : (0, _typeof3.default)(_ret)) === "object") return _ret.v; } } function remove(item) { var index = items.indexOf(item); var removed = items.splice(index, 1); removed[0].subscription.unsubscribe(); } return { data: data, register: register, items: items, remove: remove }; }