frint-react
Advanced tools
Comparing version 2.2.1 to 2.3.0-alpha.f9a1b324
@@ -64,3 +64,3 @@ this["FrintReact"] = | ||
/******/ // Load entry module and return exports | ||
/******/ return __webpack_require__(__webpack_require__.s = 3); | ||
/******/ return __webpack_require__(__webpack_require__.s = 4); | ||
/******/ }) | ||
@@ -78,3 +78,3 @@ /************************************************************************/ | ||
(function() { module.exports = this["Rx"]; }()); | ||
(function() { module.exports = this["_"]; }()); | ||
@@ -85,6 +85,12 @@ /***/ }), | ||
(function() { module.exports = this["Rx"]; }()); | ||
/***/ }), | ||
/* 3 */ | ||
/***/ (function(module, exports) { | ||
(function() { module.exports = this["PropTypes"]; }()); | ||
/***/ }), | ||
/* 3 */ | ||
/* 4 */ | ||
/***/ (function(module, exports, __webpack_require__) { | ||
@@ -99,11 +105,11 @@ | ||
var _render = __webpack_require__(8); | ||
var _render = __webpack_require__(10); | ||
var _render2 = _interopRequireDefault(_render); | ||
var _streamProps = __webpack_require__(10); | ||
var _streamProps = __webpack_require__(12); | ||
var _streamProps2 = _interopRequireDefault(_streamProps); | ||
var _isObservable = __webpack_require__(5); | ||
var _isObservable = __webpack_require__(14); | ||
@@ -116,7 +122,7 @@ var _isObservable2 = _interopRequireDefault(_isObservable); | ||
var _observe = __webpack_require__(11); | ||
var _observe = __webpack_require__(15); | ||
var _observe2 = _interopRequireDefault(_observe); | ||
var _Region = __webpack_require__(12); | ||
var _Region = __webpack_require__(18); | ||
@@ -129,3 +135,3 @@ var _Region2 = _interopRequireDefault(_Region); | ||
var _Region3 = __webpack_require__(13); | ||
var _Region3 = __webpack_require__(20); | ||
@@ -151,8 +157,2 @@ var _Region4 = _interopRequireDefault(_Region3); | ||
/***/ }), | ||
/* 4 */ | ||
/***/ (function(module, exports) { | ||
(function() { module.exports = this["_"]; }()); | ||
/***/ }), | ||
/* 5 */ | ||
@@ -168,10 +168,2 @@ /***/ (function(module, exports, __webpack_require__) { | ||
exports.default = isObservable; | ||
/** | ||
* Check if given `obj` is an Observable or not. | ||
* | ||
* @TODO: this function needs to be more proper and reliable | ||
* | ||
* @param any obj | ||
* @return boolean | ||
*/ | ||
function isObservable(obj) { | ||
@@ -241,3 +233,3 @@ if (obj && typeof obj.subscribe === 'function' && typeof obj.map === 'function' && typeof obj.filter === 'function') { | ||
var _propTypes = __webpack_require__(2); | ||
var _propTypes = __webpack_require__(3); | ||
@@ -306,2 +298,84 @@ var _propTypes2 = _interopRequireDefault(_propTypes); | ||
}); | ||
exports.default = composeHandlers; | ||
var _DefaultHandler = __webpack_require__(16); | ||
var _DefaultHandler2 = _interopRequireDefault(_DefaultHandler); | ||
function _interopRequireDefault(obj) { | ||
return obj && obj.__esModule ? obj : { default: obj }; | ||
} | ||
function Handler() { | ||
var _this = this; | ||
for (var _len = arguments.length, handlers = Array(_len), _key = 0; _key < _len; _key++) { | ||
handlers[_key] = arguments[_key]; | ||
} | ||
[_DefaultHandler2.default].concat(handlers).forEach(function (options) { | ||
Object.keys(options).forEach(function (k) { | ||
_this[k] = options[k]; | ||
if (typeof options[k] === 'function') { | ||
_this[k] = _this[k].bind(_this); | ||
} | ||
}); | ||
}); | ||
} | ||
function composeHandlers() { | ||
for (var _len2 = arguments.length, handlers = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { | ||
handlers[_key2] = arguments[_key2]; | ||
} | ||
return new (Function.prototype.bind.apply(Handler, [null].concat(handlers)))(); | ||
} | ||
module.exports = exports['default']; | ||
/***/ }), | ||
/* 9 */ | ||
/***/ (function(module, exports, __webpack_require__) { | ||
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { | ||
value: true | ||
}); | ||
var _getMountableComponent = __webpack_require__(6); | ||
var _getMountableComponent2 = _interopRequireDefault(_getMountableComponent); | ||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | ||
exports.default = { | ||
setData: function setData(key, value) { | ||
this.component.state[key] = value; | ||
}, | ||
getData: function getData(key) { | ||
return this.component.state[key]; | ||
}, | ||
getProps: function getProps() { | ||
return this.component.props; | ||
}, | ||
getProp: function getProp(key) { | ||
return this.component.props[key]; | ||
}, | ||
getMountableComponent: _getMountableComponent2.default | ||
}; | ||
module.exports = exports['default']; | ||
/***/ }), | ||
/* 10 */ | ||
/***/ (function(module, exports, __webpack_require__) { | ||
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { | ||
value: true | ||
}); | ||
exports.default = render; | ||
@@ -313,7 +387,7 @@ | ||
var _reactDom = __webpack_require__(9); | ||
var _reactDom = __webpack_require__(11); | ||
var _reactDom2 = _interopRequireDefault(_reactDom); | ||
var _ = __webpack_require__(3); | ||
var _ = __webpack_require__(4); | ||
@@ -332,3 +406,3 @@ var _2 = _interopRequireDefault(_); | ||
/***/ }), | ||
/* 9 */ | ||
/* 11 */ | ||
/***/ (function(module, exports) { | ||
@@ -339,3 +413,3 @@ | ||
/***/ }), | ||
/* 10 */ | ||
/* 12 */ | ||
/***/ (function(module, exports, __webpack_require__) { | ||
@@ -350,15 +424,49 @@ | ||
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; | ||
var _streamProps = __webpack_require__(13); | ||
var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); /* eslint-disable no-underscore-dangle */ | ||
// @TODO: should go to frint-utils package? | ||
var _streamProps2 = _interopRequireDefault(_streamProps); | ||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | ||
exports.default = _streamProps2.default; | ||
module.exports = exports['default']; | ||
/***/ }), | ||
/* 13 */ | ||
/***/ (function(module, exports, __webpack_require__) { | ||
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { | ||
value: true | ||
}); | ||
var _extends = Object.assign || function (target) { | ||
for (var i = 1; i < arguments.length; i++) { | ||
var source = arguments[i];for (var key in source) { | ||
if (Object.prototype.hasOwnProperty.call(source, key)) { | ||
target[key] = source[key]; | ||
} | ||
} | ||
}return target; | ||
}; | ||
var _createClass = function () { | ||
function defineProperties(target, props) { | ||
for (var i = 0; i < props.length; i++) { | ||
var descriptor = props[i];descriptor.enumerable = descriptor.enumerable || false;descriptor.configurable = true;if ("value" in descriptor) descriptor.writable = true;Object.defineProperty(target, descriptor.key, descriptor); | ||
} | ||
}return function (Constructor, protoProps, staticProps) { | ||
if (protoProps) defineProperties(Constructor.prototype, protoProps);if (staticProps) defineProperties(Constructor, staticProps);return Constructor; | ||
}; | ||
}(); | ||
exports.default = streamProps; | ||
var _lodash = __webpack_require__(4); | ||
var _lodash = __webpack_require__(1); | ||
var _lodash2 = _interopRequireDefault(_lodash); | ||
var _rxjs = __webpack_require__(1); | ||
var _rxjs = __webpack_require__(2); | ||
@@ -369,9 +477,29 @@ var _isObservable = __webpack_require__(5); | ||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | ||
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 _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 _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } | ||
function _defineProperty(obj, key, value) { | ||
if (key in obj) { | ||
Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); | ||
} else { | ||
obj[key] = value; | ||
}return obj; | ||
} | ||
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } | ||
function _classCallCheck(instance, Constructor) { | ||
if (!(instance instanceof Constructor)) { | ||
throw new TypeError("Cannot call a class as a function"); | ||
} | ||
} | ||
@@ -492,3 +620,3 @@ var Streamer = function () { | ||
/***/ }), | ||
/* 11 */ | ||
/* 14 */ | ||
/***/ (function(module, exports, __webpack_require__) { | ||
@@ -503,2 +631,22 @@ | ||
var _isObservable = __webpack_require__(5); | ||
var _isObservable2 = _interopRequireDefault(_isObservable); | ||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | ||
exports.default = _isObservable2.default; | ||
module.exports = exports['default']; | ||
/***/ }), | ||
/* 15 */ | ||
/***/ (function(module, exports, __webpack_require__) { | ||
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { | ||
value: true | ||
}); | ||
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; | ||
@@ -514,8 +662,20 @@ | ||
var _propTypes = __webpack_require__(2); | ||
var _propTypes = __webpack_require__(3); | ||
var _propTypes2 = _interopRequireDefault(_propTypes); | ||
var _rxjs = __webpack_require__(1); | ||
var _rxjs = __webpack_require__(2); | ||
var _composeHandlers = __webpack_require__(8); | ||
var _composeHandlers2 = _interopRequireDefault(_composeHandlers); | ||
var _ObserveHandler = __webpack_require__(17); | ||
var _ObserveHandler2 = _interopRequireDefault(_ObserveHandler); | ||
var _ReactHandler = __webpack_require__(9); | ||
var _ReactHandler2 = _interopRequireDefault(_ReactHandler); | ||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | ||
@@ -546,5 +706,8 @@ | ||
_this.state = { | ||
computedProps: {} | ||
}; | ||
_this._handler = (0, _composeHandlers2.default)(_ReactHandler2.default, _ObserveHandler2.default, { | ||
component: _this, | ||
getProps$: fn | ||
}); | ||
_this.state = _this._handler.getInitialData(); | ||
return _this; | ||
@@ -556,13 +719,4 @@ } | ||
value: function componentWillMount() { | ||
var _this2 = this; | ||
var observableFn = typeof fn !== 'undefined' ? fn : function () { | ||
return _rxjs.Observable.of({}); | ||
}; | ||
this.subscription = observableFn(this.context.app).subscribe(function (computedProps) { | ||
_this2.setState({ | ||
computedProps: computedProps | ||
}); | ||
}); | ||
this._handler.app = this.context.app; | ||
this._handler.beforeMount(); | ||
} | ||
@@ -572,3 +726,3 @@ }, { | ||
value: function componentWillUnmount() { | ||
this.subscription.unsubscribe(); | ||
this._handler.beforeDestroy(); | ||
} | ||
@@ -600,3 +754,3 @@ }, { | ||
/***/ }), | ||
/* 12 */ | ||
/* 16 */ | ||
/***/ (function(module, exports, __webpack_require__) { | ||
@@ -610,6 +764,110 @@ | ||
}); | ||
/* eslint-disable no-unused-vars */ | ||
exports.default = { | ||
// options | ||
app: null, | ||
component: null, | ||
// lifecycle: creation | ||
initialize: function initialize() { | ||
return null; | ||
}, | ||
beforeDestroy: function beforeDestroy() { | ||
return null; | ||
}, | ||
// data | ||
getInitialData: function getInitialData() { | ||
return {}; | ||
}, | ||
setData: function setData(key, value) { | ||
return null; | ||
}, | ||
setDataWithCallback: function setDataWithCallback(key, value, cb) { | ||
this.setData(key, value); | ||
cb(); | ||
}, | ||
getData: function getData(key) { | ||
return null; | ||
}, | ||
// props | ||
getProp: function getProp(key) { | ||
return null; | ||
}, | ||
getProps: function getProps() { | ||
return {}; | ||
}, | ||
// lifecycle: mounting | ||
beforeMount: function beforeMount() { | ||
return null; | ||
}, | ||
afterMount: function afterMount() { | ||
return null; | ||
}, | ||
// lifecycle: re-rendering | ||
beforeUpdate: function beforeUpdate() { | ||
return null; | ||
}, | ||
shouldUpdate: function shouldUpdate(nextProps, nextData) { | ||
return true; | ||
}, | ||
afterUpdate: function afterUpdate() { | ||
return null; | ||
}, | ||
// other | ||
getMountableComponent: function getMountableComponent(app) { | ||
return null; | ||
} | ||
}; | ||
module.exports = exports["default"]; | ||
/***/ }), | ||
/* 17 */ | ||
/***/ (function(module, exports, __webpack_require__) { | ||
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { | ||
value: true | ||
}); | ||
exports.default = { | ||
getProps$: null, | ||
getInitialData: function getInitialData() { | ||
return { | ||
computedProps: {} | ||
}; | ||
}, | ||
beforeMount: function beforeMount() { | ||
var _this = this; | ||
this._subscription = this.getProps$(this.app).subscribe(function (props) { | ||
_this.setData('computedProps', props); | ||
}); | ||
}, | ||
beforeDestroy: function beforeDestroy() { | ||
console.log('ObserveHandler: beforeDestroy'); | ||
this._subscription.unsubsribe(); | ||
} | ||
}; | ||
module.exports = exports['default']; | ||
/***/ }), | ||
/* 18 */ | ||
/***/ (function(module, exports, __webpack_require__) { | ||
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { | ||
value: true | ||
}); | ||
var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); | ||
var _lodash = __webpack_require__(4); | ||
var _lodash = __webpack_require__(1); | ||
@@ -622,10 +880,18 @@ var _lodash2 = _interopRequireDefault(_lodash); | ||
var _propTypes = __webpack_require__(2); | ||
var _propTypes = __webpack_require__(3); | ||
var _propTypes2 = _interopRequireDefault(_propTypes); | ||
var _getMountableComponent = __webpack_require__(6); | ||
var _composeHandlers = __webpack_require__(8); | ||
var _getMountableComponent2 = _interopRequireDefault(_getMountableComponent); | ||
var _composeHandlers2 = _interopRequireDefault(_composeHandlers); | ||
var _RegionHandler = __webpack_require__(19); | ||
var _RegionHandler2 = _interopRequireDefault(_RegionHandler); | ||
var _ReactHandler = __webpack_require__(9); | ||
var _ReactHandler2 = _interopRequireDefault(_ReactHandler); | ||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | ||
@@ -655,35 +921,14 @@ | ||
_this.state = { | ||
list: [], // array of apps ==> { name, instance } | ||
listForRendering: [] // array of {name, Component} objects | ||
}; | ||
_this._handler = (0, _composeHandlers2.default)(_ReactHandler2.default, _RegionHandler2.default, { | ||
component: _this | ||
}); | ||
_this.state = _this._handler.getInitialData(); | ||
return _this; | ||
} | ||
/** | ||
* Determines if the the component should be updated or not. | ||
* Since we are calling setState multiple times, we need to make sure that only when | ||
* the list of apps to render, i.e. this.state.listForRendering, is changed should | ||
* trigger a re-render of the region component. | ||
* @param {Object} nextProps the next set of props | ||
* @param {Object} nextState the next component state to be set | ||
* @return {Boolean} a boolean flag indicating whether the component should be updated | ||
*/ | ||
_createClass(Region, [{ | ||
key: 'shouldComponentUpdate', | ||
value: function shouldComponentUpdate(nextProps, nextState) { | ||
var shouldUpdate = !_lodash2.default.isEqual(this.props, nextProps); | ||
if (!shouldUpdate) { | ||
var listForRendering = nextState.listForRendering; | ||
shouldUpdate = shouldUpdate || this.state.listForRendering.length !== listForRendering.length; | ||
shouldUpdate = shouldUpdate || _lodash2.default.zipWith(this.state.listForRendering, listForRendering, function (prev, next) { | ||
return prev.name === next.name; | ||
}).some(function (value) { | ||
return !value; | ||
}); | ||
} | ||
return shouldUpdate; | ||
return this._handler.shouldUpdate(nextProps, nextState); | ||
} | ||
@@ -693,86 +938,9 @@ }, { | ||
value: function componentWillMount() { | ||
var _this2 = this; | ||
var rootApp = !this.context || !this.context.app ? window.app // @TODO: can we avoid globals? | ||
: this.context.app.getRootApp(); | ||
if (!rootApp) { | ||
return; | ||
} | ||
this.rootApp = rootApp; | ||
var apps$ = rootApp.getApps$(this.props.name, this.props.uniqueKey); | ||
this.subscription = apps$.subscribe({ | ||
next: function next(list) { | ||
_this2.setState({ | ||
list: list | ||
}, function () { | ||
_this2.state.list.forEach(function (item) { | ||
var appName = item.name, | ||
appWeight = item.weight, | ||
multi = item.multi; | ||
var existsInState = _this2.state.listForRendering.some(function (w) { | ||
return w.name === appName; | ||
}); | ||
// @TODO: take care of removal in streamed list too? | ||
if (existsInState) { | ||
return; | ||
} | ||
var regionArgs = _this2.props.uniqueKey ? [_this2.props.name, _this2.props.uniqueKey] : [_this2.props.name]; | ||
if (_this2.props.uniqueKey && !rootApp.hasAppInstance.apply(rootApp, [appName].concat(regionArgs))) { | ||
rootApp.instantiateApp.apply(rootApp, [appName].concat(regionArgs)); | ||
} | ||
var appInstance = rootApp.getAppInstance.apply(rootApp, [appName].concat(regionArgs)); | ||
if (appInstance) { | ||
_this2.sendProps(appInstance, _this2.props); | ||
} | ||
_this2.setState({ | ||
listForRendering: _this2.state.listForRendering.concat({ | ||
name: appName, | ||
weight: appWeight, | ||
instance: appInstance, | ||
multi: multi, | ||
Component: (0, _getMountableComponent2.default)(appInstance) | ||
}).sort(function (a, b) { | ||
return a.weight - b.weight; | ||
}) | ||
}); | ||
}); | ||
}); | ||
}, | ||
error: function error(err) { | ||
console.warn('Subscription error for <Region name="' + _this2.props.name + '" />:', err); | ||
} | ||
}); | ||
this._handler.app = this.context.app; | ||
this._handler.beforeMount(); | ||
} | ||
}, { | ||
key: 'sendProps', | ||
value: function sendProps(appInstance, props) { | ||
// eslint-disable-line | ||
var regionService = appInstance.get(appInstance.options.providerNames.region); | ||
if (!regionService) { | ||
return; | ||
} | ||
regionService.emit(props); | ||
} | ||
}, { | ||
key: 'componentWillReceiveProps', | ||
value: function componentWillReceiveProps(nextProps) { | ||
var _this3 = this; | ||
this.state.listForRendering.filter(function (item) { | ||
return item.instance; | ||
}).forEach(function (item) { | ||
return _this3.sendProps(item.instance, nextProps); | ||
}); | ||
this._handler.afterUpdate(nextProps); | ||
} | ||
@@ -782,15 +950,3 @@ }, { | ||
value: function componentWillUnmount() { | ||
var _this4 = this; | ||
if (this.subscription) { | ||
this.subscription.unsubscribe(); | ||
} | ||
if (this.rootApp) { | ||
this.state.listForRendering.filter(function (item) { | ||
return item.multi; | ||
}).forEach(function (item) { | ||
_this4.rootApp.destroyApp(item.name, _this4.props.name, _this4.props.uniqueKey); | ||
}); | ||
} | ||
this._handler.beforeDestroy(); | ||
} | ||
@@ -833,3 +989,3 @@ }, { | ||
/***/ }), | ||
/* 13 */ | ||
/* 19 */ | ||
/***/ (function(module, exports, __webpack_require__) { | ||
@@ -844,8 +1000,200 @@ | ||
var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); | ||
var _lodash = __webpack_require__(1); | ||
var _rxjs = __webpack_require__(1); | ||
var _lodash2 = _interopRequireDefault(_lodash); | ||
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } | ||
function _interopRequireDefault(obj) { | ||
return obj && obj.__esModule ? obj : { default: obj }; | ||
} | ||
exports.default = { | ||
getInitialData: function getInitialData() { | ||
return { | ||
list: [], // array of apps ==> { name, instance } | ||
listForRendering: [] // array of {name, Component} objects | ||
}; | ||
}, | ||
sendProps: function sendProps(appInstance, props) { | ||
var regionService = appInstance.get(appInstance.options.providerNames.region); | ||
if (!regionService) { | ||
return; | ||
} | ||
regionService.emit(props); | ||
}, | ||
beforeMount: function beforeMount() { | ||
var _this = this; | ||
var rootApp = !this.app ? window.app // @TODO: can we avoid globals? | ||
: this.app.getRootApp(); | ||
if (!rootApp) { | ||
return; | ||
} | ||
this.rootApp = rootApp; | ||
var apps$ = rootApp.getApps$(this.getProp('name'), this.getProp('uniqueKey')); | ||
this._subscription = apps$.subscribe({ | ||
next: function next(list) { | ||
_this.setData('list', list); | ||
_this.getData('list').forEach(function (item) { | ||
var appName = item.name, | ||
appWeight = item.weight, | ||
multi = item.multi; | ||
var existsInState = _this.getData('listForRendering').some(function (w) { | ||
return w.name === appName; | ||
}); | ||
// @TODO: take care of removal in streamed list too? | ||
if (existsInState) { | ||
return; | ||
} | ||
var regionArgs = _this.getProp('uniqueKey') ? [_this.getProp('name'), _this.getProp('uniqueKey')] : [_this.getProp('name')]; | ||
if (_this.getProp('uniqueKey') && !rootApp.hasAppInstance.apply(rootApp, [appName].concat(regionArgs))) { | ||
rootApp.instantiateApp.apply(rootApp, [appName].concat(regionArgs)); | ||
} | ||
var appInstance = rootApp.getAppInstance.apply(rootApp, [appName].concat(regionArgs)); | ||
if (appInstance) { | ||
_this.sendProps(appInstance, { | ||
name: _this.getProp('name'), | ||
uniqueKey: _this.getProp('uniqueKey'), | ||
data: _this.getProp('data') | ||
}); | ||
} | ||
_this.setData('listForRendering', _this.getData('listForRendering').concat({ | ||
name: appName, | ||
weight: appWeight, | ||
instance: appInstance, | ||
multi: multi, | ||
Component: _this.getMountableComponent(appInstance) | ||
}).sort(function (a, b) { | ||
return a.weight - b.weight; | ||
})); | ||
}); | ||
}, | ||
error: function error(err) { | ||
console.warn('Subscription error for <Region name="' + _this.name + '" />:', err); | ||
} | ||
}); | ||
}, | ||
shouldUpdate: function shouldUpdate(nextProps, nextData) { | ||
var shouldUpdate = !_lodash2.default.isEqual(this.getProps(), nextProps); | ||
if (!shouldUpdate) { | ||
var listForRendering = nextData.listForRendering; | ||
shouldUpdate = shouldUpdate || this.getData('listForRendering').length !== listForRendering.length; | ||
shouldUpdate = shouldUpdate || _lodash2.default.zipWith(this.getData('listForRendering'), listForRendering, function (prev, next) { | ||
return prev.name === next.name; | ||
}).some(function (value) { | ||
return !value; | ||
}); | ||
} | ||
return shouldUpdate; | ||
}, | ||
afterUpdate: function afterUpdate() { | ||
var _this2 = this; | ||
var newProps = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null; | ||
var name = void 0; | ||
var uniqueKey = void 0; | ||
var data = void 0; | ||
if (newProps) { | ||
name = newProps.name; | ||
uniqueKey = newProps.uniqueKey; | ||
data = newProps.data; | ||
} else { | ||
name = this.getProp('name'); | ||
uniqueKey = this.getProp('uniqueKey'); | ||
data = this.getProp('data'); | ||
} | ||
this.getData('listForRendering').filter(function (item) { | ||
return item.instance; | ||
}).forEach(function (item) { | ||
return _this2.sendProps(item.instance, { | ||
name: name, | ||
uniqueKey: uniqueKey, | ||
data: data | ||
}); | ||
}); | ||
}, | ||
beforeDestroy: function beforeDestroy() { | ||
var _this3 = this; | ||
this._subscription.unsubsribe(); | ||
if (this.rootApp) { | ||
this.getData('listForRendering').filter(function (item) { | ||
return item.multi; | ||
}).forEach(function (item) { | ||
_this3.rootApp.destroyApp(item.name, _this3.getProp('name'), _this3.getProp('uniqueKey')); | ||
}); | ||
} | ||
} | ||
}; /* global window */ | ||
/* eslint-disable no-console */ | ||
module.exports = exports['default']; | ||
/***/ }), | ||
/* 20 */ | ||
/***/ (function(module, exports, __webpack_require__) { | ||
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { | ||
value: true | ||
}); | ||
var _RegionService = __webpack_require__(21); | ||
var _RegionService2 = _interopRequireDefault(_RegionService); | ||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | ||
exports.default = _RegionService2.default; | ||
module.exports = exports['default']; | ||
/***/ }), | ||
/* 21 */ | ||
/***/ (function(module, exports, __webpack_require__) { | ||
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { | ||
value: true | ||
}); | ||
var _createClass = function () { | ||
function defineProperties(target, props) { | ||
for (var i = 0; i < props.length; i++) { | ||
var descriptor = props[i];descriptor.enumerable = descriptor.enumerable || false;descriptor.configurable = true;if ("value" in descriptor) descriptor.writable = true;Object.defineProperty(target, descriptor.key, descriptor); | ||
} | ||
}return function (Constructor, protoProps, staticProps) { | ||
if (protoProps) defineProperties(Constructor.prototype, protoProps);if (staticProps) defineProperties(Constructor, staticProps);return Constructor; | ||
}; | ||
}(); | ||
var _rxjs = __webpack_require__(2); | ||
function _classCallCheck(instance, Constructor) { | ||
if (!(instance instanceof Constructor)) { | ||
throw new TypeError("Cannot call a class as a function"); | ||
} | ||
} | ||
var RegionService = function () { | ||
@@ -852,0 +1200,0 @@ function RegionService() { |
@@ -1,1 +0,1 @@ | ||
this.FrintReact=function(e){function t(r){if(n[r])return n[r].exports;var o=n[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,t),o.l=!0,o.exports}var n={};return t.m=e,t.c=n,t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:r})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=3)}([function(e,t){!function(){e.exports=this.React}()},function(e,t){!function(){e.exports=this.Rx}()},function(e,t){!function(){e.exports=this.PropTypes}()},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var o=n(8),u=r(o),i=n(10),a=r(i),s=n(5),c=r(s),f=n(6),l=r(f),p=n(11),d=r(p),b=n(12),h=r(b),v=n(7),y=r(v),m=n(13),g=r(m);t.default={render:u.default,streamProps:a.default,isObservable:c.default,getMountableComponent:l.default,observe:d.default,Region:h.default,Provider:y.default,RegionService:g.default},e.exports=t.default},function(e,t){!function(){e.exports=this._}()},function(e,t,n){"use strict";function r(e){return!(!e||"function"!=typeof e.subscribe||"function"!=typeof e.map||"function"!=typeof e.filter)}Object.defineProperty(t,"__esModule",{value:!0}),t.default=r,e.exports=t.default},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function o(e){var t=e.get("component"),n={app:e},r=function(e){return i.default.createElement(s.default,n,i.default.createElement(t,e))};return function(e){return i.default.createElement(r,e)}}Object.defineProperty(t,"__esModule",{value:!0}),t.default=o;var u=n(0),i=r(u),a=n(7),s=r(a);e.exports=t.default},function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function u(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{value:!0});var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),a=n(0),s=n(2),c=function(e){return e&&e.__esModule?e:{default:e}}(s),f=function(e){function t(e,n){r(this,t);var u=o(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e,n));return u.app=e.app,u}return u(t,e),i(t,[{key:"getChildContext",value:function(){return{app:this.app}}}]),i(t,[{key:"render",value:function(){return a.Children.only(this.props.children)}}]),t}(a.Component);f.propTypes={app:c.default.object.isRequired,children:c.default.element.isRequired},f.childContextTypes={app:c.default.object.isRequired},t.default=f,e.exports=t.default},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function o(e,t){var n=f.default.getMountableComponent(e);return s.default.render(i.default.createElement(n,null),t)}Object.defineProperty(t,"__esModule",{value:!0}),t.default=o;var u=n(0),i=r(u),a=n(9),s=r(a),c=n(3),f=r(c);e.exports=t.default},function(e,t){!function(){e.exports=this.ReactDOM}()},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function o(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t<e.length;t++)n[t]=e[t];return n}return Array.from(e)}function u(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function a(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return new h(e)}Object.defineProperty(t,"__esModule",{value:!0});var s=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},c=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();t.default=a;var f=n(4),l=r(f),p=n(1),d=n(5),b=r(d),h=function(){function e(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};i(this,e),this._observables=[p.Observable.of(t)]}return c(e,[{key:"_push",value:function(e){this._observables.push(e)}},{key:"set",value:function(e){for(var t=arguments.length,n=Array(t>1?t-1:0),r=1;r<t;r++)n[r-1]=arguments[r];return"string"==typeof e?this.setKey(e,n[0]):l.default.isPlainObject(e)?this.setPlainObject(e):(0,b.default)(e)?this.setObservable.apply(this,[e].concat(n)):this}},{key:"setKey",value:function(e,t){return this._push(p.Observable.of(u({},e,t))),this}},{key:"setPlainObject",value:function(e){return this._push(p.Observable.of(e)),this}},{key:"setObservable",value:function(e){for(var t=e,n=arguments.length,r=Array(n>1?n-1:0),o=1;o<n;o++)r[o-1]=arguments[o];return r.forEach(function(e){t=t.concatMap(function(t){var n=e(t);return(0,b.default)(n)?n:p.Observable.of(n)})}),this._push(t),this}},{key:"setDispatch",value:function(e,t){var n={};return Object.keys(e).forEach(function(r){var o=e[r];n[r]=function(){return t.dispatch(o.apply(void 0,arguments))}}),this._push(p.Observable.of(n)),this}},{key:"get$",value:function(){return p.Observable.merge.apply(p.Observable,o(this._observables)).scan(function(e,t){return s({},e,t)})}}]),e}();e.exports=t.default},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function u(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function i(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}function a(e){return function(t){var n=function(n){function r(){var e;o(this,r);for(var t=arguments.length,n=Array(t),i=0;i<t;i++)n[i]=arguments[i];var a=u(this,(e=r.__proto__||Object.getPrototypeOf(r)).call.apply(e,[this].concat(n)));return a.state={computedProps:{}},a}return i(r,n),c(r,[{key:"componentWillMount",value:function(){var t=this,n=void 0!==e?e:function(){return b.Observable.of({})};this.subscription=n(this.context.app).subscribe(function(e){t.setState({computedProps:e})})}},{key:"componentWillUnmount",value:function(){this.subscription.unsubscribe()}},{key:"render",value:function(){var e=this.state.computedProps;return l.default.createElement(t,s({},e,this.props))}}]),r}(l.default.Component);return n.displayName=void 0!==t.displayName?"observe("+t.displayName+")":"observe",n.contextTypes={app:d.default.object.isRequired},n}}Object.defineProperty(t,"__esModule",{value:!0});var s=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},c=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();t.default=a;var f=n(0),l=r(f),p=n(2),d=r(p),b=n(1);e.exports=t.default},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function u(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function i(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{value:!0});var a=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),s=n(4),c=r(s),f=n(0),l=r(f),p=n(2),d=r(p),b=n(6),h=r(b),v=function(e){function t(){var e;o(this,t);for(var n=arguments.length,r=Array(n),i=0;i<n;i++)r[i]=arguments[i];var a=u(this,(e=t.__proto__||Object.getPrototypeOf(t)).call.apply(e,[this].concat(r)));return a.state={list:[],listForRendering:[]},a}return i(t,e),a(t,[{key:"shouldComponentUpdate",value:function(e,t){var n=!c.default.isEqual(this.props,e);if(!n){var r=t.listForRendering;n=n||this.state.listForRendering.length!==r.length,n=n||c.default.zipWith(this.state.listForRendering,r,function(e,t){return e.name===t.name}).some(function(e){return!e})}return n}},{key:"componentWillMount",value:function(){var e=this,t=this.context&&this.context.app?this.context.app.getRootApp():window.app;if(t){this.rootApp=t;var n=t.getApps$(this.props.name,this.props.uniqueKey);this.subscription=n.subscribe({next:function(n){e.setState({list:n},function(){e.state.list.forEach(function(n){var r=n.name,o=n.weight,u=n.multi;if(!e.state.listForRendering.some(function(e){return e.name===r})){var i=e.props.uniqueKey?[e.props.name,e.props.uniqueKey]:[e.props.name];e.props.uniqueKey&&!t.hasAppInstance.apply(t,[r].concat(i))&&t.instantiateApp.apply(t,[r].concat(i));var a=t.getAppInstance.apply(t,[r].concat(i));a&&e.sendProps(a,e.props),e.setState({listForRendering:e.state.listForRendering.concat({name:r,weight:o,instance:a,multi:u,Component:(0,h.default)(a)}).sort(function(e,t){return e.weight-t.weight})})}})})},error:function(t){console.warn('Subscription error for <Region name="'+e.props.name+'" />:',t)}})}}},{key:"sendProps",value:function(e,t){var n=e.get(e.options.providerNames.region);n&&n.emit(t)}},{key:"componentWillReceiveProps",value:function(e){var t=this;this.state.listForRendering.filter(function(e){return e.instance}).forEach(function(n){return t.sendProps(n.instance,e)})}},{key:"componentWillUnmount",value:function(){var e=this;this.subscription&&this.subscription.unsubscribe(),this.rootApp&&this.state.listForRendering.filter(function(e){return e.multi}).forEach(function(t){e.rootApp.destroyApp(t.name,e.props.name,e.props.uniqueKey)})}},{key:"render",value:function(){var e=this.state.listForRendering;return 0===e.length?null:l.default.createElement("div",null,e.map(function(e){var t=e.Component,n=e.name;return l.default.createElement(t,{key:"app-"+n})}))}}]),t}(l.default.Component);v.propTypes={name:d.default.string.isRequired,uniqueKey:d.default.string,data:d.default.any},t.default=v,e.exports=t.default},function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(t,"__esModule",{value:!0});var o=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),u=n(1),i=function(){function e(){r(this,e),this.props$=new u.BehaviorSubject({})}return o(e,[{key:"emit",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this.props$.next(e)}},{key:"getProps$",value:function(){return this.props$}},{key:"getData$",value:function(){return this.props$.map(function(e){return e.data})}}]),e}();t.default=i,e.exports=t.default}]); | ||
this.FrintReact=function(e){function t(r){if(n[r])return n[r].exports;var o=n[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,t),o.l=!0,o.exports}var n={};return t.m=e,t.c=n,t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:r})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=4)}([function(e,t){!function(){e.exports=this.React}()},function(e,t){!function(){e.exports=this._}()},function(e,t){!function(){e.exports=this.Rx}()},function(e,t){!function(){e.exports=this.PropTypes}()},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var o=n(10),u=r(o),a=n(12),i=r(a),l=n(14),f=r(l),s=n(6),c=r(s),p=n(15),d=r(p),h=n(18),b=r(h),y=n(7),v=r(y),g=n(20),_=r(g);t.default={render:u.default,streamProps:i.default,isObservable:f.default,getMountableComponent:c.default,observe:d.default,Region:b.default,Provider:v.default,RegionService:_.default},e.exports=t.default},function(e,t,n){"use strict";function r(e){return!(!e||"function"!=typeof e.subscribe||"function"!=typeof e.map||"function"!=typeof e.filter)}Object.defineProperty(t,"__esModule",{value:!0}),t.default=r,e.exports=t.default},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function o(e){var t=e.get("component"),n={app:e},r=function(e){return a.default.createElement(l.default,n,a.default.createElement(t,e))};return function(e){return a.default.createElement(r,e)}}Object.defineProperty(t,"__esModule",{value:!0}),t.default=o;var u=n(0),a=r(u),i=n(7),l=r(i);e.exports=t.default},function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function u(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{value:!0});var a=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),i=n(0),l=n(3),f=function(e){return e&&e.__esModule?e:{default:e}}(l),s=function(e){function t(e,n){r(this,t);var u=o(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e,n));return u.app=e.app,u}return u(t,e),a(t,[{key:"getChildContext",value:function(){return{app:this.app}}}]),a(t,[{key:"render",value:function(){return i.Children.only(this.props.children)}}]),t}(i.Component);s.propTypes={app:f.default.object.isRequired,children:f.default.element.isRequired},s.childContextTypes={app:f.default.object.isRequired},t.default=s,e.exports=t.default},function(e,t,n){"use strict";function r(){for(var e=this,t=arguments.length,n=Array(t),r=0;r<t;r++)n[r]=arguments[r];[a.default].concat(n).forEach(function(t){Object.keys(t).forEach(function(n){e[n]=t[n],"function"==typeof t[n]&&(e[n]=e[n].bind(e))})})}function o(){for(var e=arguments.length,t=Array(e),n=0;n<e;n++)t[n]=arguments[n];return new(Function.prototype.bind.apply(r,[null].concat(t)))}Object.defineProperty(t,"__esModule",{value:!0}),t.default=o;var u=n(16),a=function(e){return e&&e.__esModule?e:{default:e}}(u);e.exports=t.default},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(6),o=function(e){return e&&e.__esModule?e:{default:e}}(r);t.default={setData:function(e,t){this.component.state[e]=t},getData:function(e){return this.component.state[e]},getProps:function(){return this.component.props},getProp:function(e){return this.component.props[e]},getMountableComponent:o.default},e.exports=t.default},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function o(e,t){var n=s.default.getMountableComponent(e);return l.default.render(a.default.createElement(n,null),t)}Object.defineProperty(t,"__esModule",{value:!0}),t.default=o;var u=n(0),a=r(u),i=n(11),l=r(i),f=n(4),s=r(f);e.exports=t.default},function(e,t){!function(){e.exports=this.ReactDOM}()},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(13),o=function(e){return e&&e.__esModule?e:{default:e}}(r);t.default=o.default,e.exports=t.default},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function o(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t<e.length;t++)n[t]=e[t];return n}return Array.from(e)}function u(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function i(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return new b(e)}Object.defineProperty(t,"__esModule",{value:!0});var l=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},f=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();t.default=i;var s=n(1),c=r(s),p=n(2),d=n(5),h=r(d),b=function(){function e(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};a(this,e),this._observables=[p.Observable.of(t)]}return f(e,[{key:"_push",value:function(e){this._observables.push(e)}},{key:"set",value:function(e){for(var t=arguments.length,n=Array(t>1?t-1:0),r=1;r<t;r++)n[r-1]=arguments[r];return"string"==typeof e?this.setKey(e,n[0]):c.default.isPlainObject(e)?this.setPlainObject(e):(0,h.default)(e)?this.setObservable.apply(this,[e].concat(n)):this}},{key:"setKey",value:function(e,t){return this._push(p.Observable.of(u({},e,t))),this}},{key:"setPlainObject",value:function(e){return this._push(p.Observable.of(e)),this}},{key:"setObservable",value:function(e){for(var t=e,n=arguments.length,r=Array(n>1?n-1:0),o=1;o<n;o++)r[o-1]=arguments[o];return r.forEach(function(e){t=t.concatMap(function(t){var n=e(t);return(0,h.default)(n)?n:p.Observable.of(n)})}),this._push(t),this}},{key:"setDispatch",value:function(e,t){var n={};return Object.keys(e).forEach(function(r){var o=e[r];n[r]=function(){return t.dispatch(o.apply(void 0,arguments))}}),this._push(p.Observable.of(n)),this}},{key:"get$",value:function(){return p.Observable.merge.apply(p.Observable,o(this._observables)).scan(function(e,t){return l({},e,t)})}}]),e}();e.exports=t.default},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(5),o=function(e){return e&&e.__esModule?e:{default:e}}(r);t.default=o.default,e.exports=t.default},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function u(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}function i(e){return function(t){var n=function(n){function r(){var t;o(this,r);for(var n=arguments.length,a=Array(n),i=0;i<n;i++)a[i]=arguments[i];var l=u(this,(t=r.__proto__||Object.getPrototypeOf(r)).call.apply(t,[this].concat(a)));return l._handler=(0,b.default)(_.default,v.default,{component:l,getProps$:e}),l.state=l._handler.getInitialData(),l}return a(r,n),f(r,[{key:"componentWillMount",value:function(){this._handler.app=this.context.app,this._handler.beforeMount()}},{key:"componentWillUnmount",value:function(){this._handler.beforeDestroy()}},{key:"render",value:function(){var e=this.state.computedProps;return c.default.createElement(t,l({},e,this.props))}}]),r}(c.default.Component);return n.displayName=void 0!==t.displayName?"observe("+t.displayName+")":"observe",n.contextTypes={app:d.default.object.isRequired},n}}Object.defineProperty(t,"__esModule",{value:!0});var l=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},f=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();t.default=i;var s=n(0),c=r(s),p=n(3),d=r(p),h=(n(2),n(8)),b=r(h),y=n(17),v=r(y),g=n(9),_=r(g);e.exports=t.default},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={app:null,component:null,initialize:function(){return null},beforeDestroy:function(){return null},getInitialData:function(){return{}},setData:function(e,t){return null},setDataWithCallback:function(e,t,n){this.setData(e,t),n()},getData:function(e){return null},getProp:function(e){return null},getProps:function(){return{}},beforeMount:function(){return null},afterMount:function(){return null},beforeUpdate:function(){return null},shouldUpdate:function(e,t){return!0},afterUpdate:function(){return null},getMountableComponent:function(e){return null}},e.exports=t.default},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={getProps$:null,getInitialData:function(){return{computedProps:{}}},beforeMount:function(){var e=this;this._subscription=this.getProps$(this.app).subscribe(function(t){e.setData("computedProps",t)})},beforeDestroy:function(){console.log("ObserveHandler: beforeDestroy"),this._subscription.unsubsribe()}},e.exports=t.default},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function u(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{value:!0});var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),l=n(1),f=(r(l),n(0)),s=r(f),c=n(3),p=r(c),d=n(8),h=r(d),b=n(19),y=r(b),v=n(9),g=r(v),_=function(e){function t(){var e;o(this,t);for(var n=arguments.length,r=Array(n),a=0;a<n;a++)r[a]=arguments[a];var i=u(this,(e=t.__proto__||Object.getPrototypeOf(t)).call.apply(e,[this].concat(r)));return i._handler=(0,h.default)(g.default,y.default,{component:i}),i.state=i._handler.getInitialData(),i}return a(t,e),i(t,[{key:"shouldComponentUpdate",value:function(e,t){return this._handler.shouldUpdate(e,t)}},{key:"componentWillMount",value:function(){this._handler.app=this.context.app,this._handler.beforeMount()}},{key:"componentWillReceiveProps",value:function(e){this._handler.afterUpdate(e)}},{key:"componentWillUnmount",value:function(){this._handler.beforeDestroy()}},{key:"render",value:function(){var e=this.state.listForRendering;return 0===e.length?null:s.default.createElement("div",null,e.map(function(e){var t=e.Component,n=e.name;return s.default.createElement(t,{key:"app-"+n})}))}}]),t}(s.default.Component);_.propTypes={name:p.default.string.isRequired,uniqueKey:p.default.string,data:p.default.any},t.default=_,e.exports=t.default},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(1),o=function(e){return e&&e.__esModule?e:{default:e}}(r);t.default={getInitialData:function(){return{list:[],listForRendering:[]}},sendProps:function(e,t){var n=e.get(e.options.providerNames.region);n&&n.emit(t)},beforeMount:function(){var e=this,t=this.app?this.app.getRootApp():window.app;if(t){this.rootApp=t;var n=t.getApps$(this.getProp("name"),this.getProp("uniqueKey"));this._subscription=n.subscribe({next:function(n){e.setData("list",n),e.getData("list").forEach(function(n){var r=n.name,o=n.weight,u=n.multi;if(!e.getData("listForRendering").some(function(e){return e.name===r})){var a=e.getProp("uniqueKey")?[e.getProp("name"),e.getProp("uniqueKey")]:[e.getProp("name")];e.getProp("uniqueKey")&&!t.hasAppInstance.apply(t,[r].concat(a))&&t.instantiateApp.apply(t,[r].concat(a));var i=t.getAppInstance.apply(t,[r].concat(a));i&&e.sendProps(i,{name:e.getProp("name"),uniqueKey:e.getProp("uniqueKey"),data:e.getProp("data")}),e.setData("listForRendering",e.getData("listForRendering").concat({name:r,weight:o,instance:i,multi:u,Component:e.getMountableComponent(i)}).sort(function(e,t){return e.weight-t.weight}))}})},error:function(t){console.warn('Subscription error for <Region name="'+e.name+'" />:',t)}})}},shouldUpdate:function(e,t){var n=!o.default.isEqual(this.getProps(),e);if(!n){var r=t.listForRendering;n=n||this.getData("listForRendering").length!==r.length,n=n||o.default.zipWith(this.getData("listForRendering"),r,function(e,t){return e.name===t.name}).some(function(e){return!e})}return n},afterUpdate:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,n=void 0,r=void 0,o=void 0;t?(n=t.name,r=t.uniqueKey,o=t.data):(n=this.getProp("name"),r=this.getProp("uniqueKey"),o=this.getProp("data")),this.getData("listForRendering").filter(function(e){return e.instance}).forEach(function(t){return e.sendProps(t.instance,{name:n,uniqueKey:r,data:o})})},beforeDestroy:function(){var e=this;this._subscription.unsubsribe(),this.rootApp&&this.getData("listForRendering").filter(function(e){return e.multi}).forEach(function(t){e.rootApp.destroyApp(t.name,e.getProp("name"),e.getProp("uniqueKey"))})}},e.exports=t.default},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(21),o=function(e){return e&&e.__esModule?e:{default:e}}(r);t.default=o.default,e.exports=t.default},function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(t,"__esModule",{value:!0});var o=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),u=n(2),a=function(){function e(){r(this,e),this.props$=new u.BehaviorSubject({})}return o(e,[{key:"emit",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this.props$.next(e)}},{key:"getProps$",value:function(){return this.props$}},{key:"getData$",value:function(){return this.props$.map(function(e){return e.data})}}]),e}();t.default=a,e.exports=t.default}]); |
@@ -23,2 +23,14 @@ 'use strict'; | ||
var _composeHandlers = require('frint-component-utils/lib/composeHandlers'); | ||
var _composeHandlers2 = _interopRequireDefault(_composeHandlers); | ||
var _ObserveHandler = require('frint-component-handlers/lib/ObserveHandler'); | ||
var _ObserveHandler2 = _interopRequireDefault(_ObserveHandler); | ||
var _ReactHandler = require('../handlers/ReactHandler'); | ||
var _ReactHandler2 = _interopRequireDefault(_ReactHandler); | ||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | ||
@@ -49,5 +61,8 @@ | ||
_this.state = { | ||
computedProps: {} | ||
}; | ||
_this._handler = (0, _composeHandlers2.default)(_ReactHandler2.default, _ObserveHandler2.default, { | ||
component: _this, | ||
getProps$: fn | ||
}); | ||
_this.state = _this._handler.getInitialData(); | ||
return _this; | ||
@@ -59,13 +74,4 @@ } | ||
value: function componentWillMount() { | ||
var _this2 = this; | ||
var observableFn = typeof fn !== 'undefined' ? fn : function () { | ||
return _rxjs.Observable.of({}); | ||
}; | ||
this.subscription = observableFn(this.context.app).subscribe(function (computedProps) { | ||
_this2.setState({ | ||
computedProps: computedProps | ||
}); | ||
}); | ||
this._handler.app = this.context.app; | ||
this._handler.beforeMount(); | ||
} | ||
@@ -75,3 +81,3 @@ }, { | ||
value: function componentWillUnmount() { | ||
this.subscription.unsubscribe(); | ||
this._handler.beforeDestroy(); | ||
} | ||
@@ -78,0 +84,0 @@ }, { |
@@ -21,6 +21,14 @@ 'use strict'; | ||
var _getMountableComponent = require('./getMountableComponent'); | ||
var _composeHandlers = require('frint-component-utils/lib/composeHandlers'); | ||
var _getMountableComponent2 = _interopRequireDefault(_getMountableComponent); | ||
var _composeHandlers2 = _interopRequireDefault(_composeHandlers); | ||
var _RegionHandler = require('frint-component-handlers/lib/RegionHandler'); | ||
var _RegionHandler2 = _interopRequireDefault(_RegionHandler); | ||
var _ReactHandler = require('../handlers/ReactHandler'); | ||
var _ReactHandler2 = _interopRequireDefault(_ReactHandler); | ||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | ||
@@ -50,35 +58,14 @@ | ||
_this.state = { | ||
list: [], // array of apps ==> { name, instance } | ||
listForRendering: [] // array of {name, Component} objects | ||
}; | ||
_this._handler = (0, _composeHandlers2.default)(_ReactHandler2.default, _RegionHandler2.default, { | ||
component: _this | ||
}); | ||
_this.state = _this._handler.getInitialData(); | ||
return _this; | ||
} | ||
/** | ||
* Determines if the the component should be updated or not. | ||
* Since we are calling setState multiple times, we need to make sure that only when | ||
* the list of apps to render, i.e. this.state.listForRendering, is changed should | ||
* trigger a re-render of the region component. | ||
* @param {Object} nextProps the next set of props | ||
* @param {Object} nextState the next component state to be set | ||
* @return {Boolean} a boolean flag indicating whether the component should be updated | ||
*/ | ||
_createClass(Region, [{ | ||
key: 'shouldComponentUpdate', | ||
value: function shouldComponentUpdate(nextProps, nextState) { | ||
var shouldUpdate = !_lodash2.default.isEqual(this.props, nextProps); | ||
if (!shouldUpdate) { | ||
var listForRendering = nextState.listForRendering; | ||
shouldUpdate = shouldUpdate || this.state.listForRendering.length !== listForRendering.length; | ||
shouldUpdate = shouldUpdate || _lodash2.default.zipWith(this.state.listForRendering, listForRendering, function (prev, next) { | ||
return prev.name === next.name; | ||
}).some(function (value) { | ||
return !value; | ||
}); | ||
} | ||
return shouldUpdate; | ||
return this._handler.shouldUpdate(nextProps, nextState); | ||
} | ||
@@ -88,86 +75,9 @@ }, { | ||
value: function componentWillMount() { | ||
var _this2 = this; | ||
var rootApp = !this.context || !this.context.app ? window.app // @TODO: can we avoid globals? | ||
: this.context.app.getRootApp(); | ||
if (!rootApp) { | ||
return; | ||
} | ||
this.rootApp = rootApp; | ||
var apps$ = rootApp.getApps$(this.props.name, this.props.uniqueKey); | ||
this.subscription = apps$.subscribe({ | ||
next: function next(list) { | ||
_this2.setState({ | ||
list: list | ||
}, function () { | ||
_this2.state.list.forEach(function (item) { | ||
var appName = item.name, | ||
appWeight = item.weight, | ||
multi = item.multi; | ||
var existsInState = _this2.state.listForRendering.some(function (w) { | ||
return w.name === appName; | ||
}); | ||
// @TODO: take care of removal in streamed list too? | ||
if (existsInState) { | ||
return; | ||
} | ||
var regionArgs = _this2.props.uniqueKey ? [_this2.props.name, _this2.props.uniqueKey] : [_this2.props.name]; | ||
if (_this2.props.uniqueKey && !rootApp.hasAppInstance.apply(rootApp, [appName].concat(regionArgs))) { | ||
rootApp.instantiateApp.apply(rootApp, [appName].concat(regionArgs)); | ||
} | ||
var appInstance = rootApp.getAppInstance.apply(rootApp, [appName].concat(regionArgs)); | ||
if (appInstance) { | ||
_this2.sendProps(appInstance, _this2.props); | ||
} | ||
_this2.setState({ | ||
listForRendering: _this2.state.listForRendering.concat({ | ||
name: appName, | ||
weight: appWeight, | ||
instance: appInstance, | ||
multi: multi, | ||
Component: (0, _getMountableComponent2.default)(appInstance) | ||
}).sort(function (a, b) { | ||
return a.weight - b.weight; | ||
}) | ||
}); | ||
}); | ||
}); | ||
}, | ||
error: function error(err) { | ||
console.warn('Subscription error for <Region name="' + _this2.props.name + '" />:', err); | ||
} | ||
}); | ||
this._handler.app = this.context.app; | ||
this._handler.beforeMount(); | ||
} | ||
}, { | ||
key: 'sendProps', | ||
value: function sendProps(appInstance, props) { | ||
// eslint-disable-line | ||
var regionService = appInstance.get(appInstance.options.providerNames.region); | ||
if (!regionService) { | ||
return; | ||
} | ||
regionService.emit(props); | ||
} | ||
}, { | ||
key: 'componentWillReceiveProps', | ||
value: function componentWillReceiveProps(nextProps) { | ||
var _this3 = this; | ||
this.state.listForRendering.filter(function (item) { | ||
return item.instance; | ||
}).forEach(function (item) { | ||
return _this3.sendProps(item.instance, nextProps); | ||
}); | ||
this._handler.afterUpdate(nextProps); | ||
} | ||
@@ -177,15 +87,3 @@ }, { | ||
value: function componentWillUnmount() { | ||
var _this4 = this; | ||
if (this.subscription) { | ||
this.subscription.unsubscribe(); | ||
} | ||
if (this.rootApp) { | ||
this.state.listForRendering.filter(function (item) { | ||
return item.multi; | ||
}).forEach(function (item) { | ||
_this4.rootApp.destroyApp(item.name, _this4.props.name, _this4.props.uniqueKey); | ||
}); | ||
} | ||
this._handler.beforeDestroy(); | ||
} | ||
@@ -192,0 +90,0 @@ }, { |
@@ -6,18 +6,10 @@ 'use strict'; | ||
}); | ||
exports.default = isObservable; | ||
/** | ||
* Check if given `obj` is an Observable or not. | ||
* | ||
* @TODO: this function needs to be more proper and reliable | ||
* | ||
* @param any obj | ||
* @return boolean | ||
*/ | ||
function isObservable(obj) { | ||
if (obj && typeof obj.subscribe === 'function' && typeof obj.map === 'function' && typeof obj.filter === 'function') { | ||
return true; | ||
} | ||
return false; | ||
} | ||
var _isObservable = require('frint-component-utils/lib/isObservable'); | ||
var _isObservable2 = _interopRequireDefault(_isObservable); | ||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | ||
exports.default = _isObservable2.default; | ||
module.exports = exports['default']; |
@@ -7,45 +7,9 @@ 'use strict'; | ||
var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); | ||
var _RegionService = require('frint-component-handlers/lib/RegionService'); | ||
var _rxjs = require('rxjs'); | ||
var _RegionService2 = _interopRequireDefault(_RegionService); | ||
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } | ||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | ||
var RegionService = function () { | ||
function RegionService() { | ||
_classCallCheck(this, RegionService); | ||
this.props$ = new _rxjs.BehaviorSubject({}); | ||
} | ||
_createClass(RegionService, [{ | ||
key: 'emit', | ||
value: function emit() { | ||
var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; | ||
this.props$.next(props); | ||
} | ||
// @TODO: support synchronous versions | ||
// getName() {} | ||
// getKey() {} | ||
}, { | ||
key: 'getProps$', | ||
value: function getProps$() { | ||
return this.props$; | ||
} | ||
}, { | ||
key: 'getData$', | ||
value: function getData$() { | ||
return this.props$.map(function (props) { | ||
return props.data; | ||
}); | ||
} | ||
}]); | ||
return RegionService; | ||
}(); | ||
exports.default = RegionService; | ||
exports.default = _RegionService2.default; | ||
module.exports = exports['default']; |
@@ -7,139 +7,9 @@ 'use strict'; | ||
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; | ||
var _streamProps = require('frint-component-utils/lib/streamProps'); | ||
var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); /* eslint-disable no-underscore-dangle */ | ||
// @TODO: should go to frint-utils package? | ||
var _streamProps2 = _interopRequireDefault(_streamProps); | ||
exports.default = streamProps; | ||
var _lodash = require('lodash'); | ||
var _lodash2 = _interopRequireDefault(_lodash); | ||
var _rxjs = require('rxjs'); | ||
var _isObservable = require('./isObservable'); | ||
var _isObservable2 = _interopRequireDefault(_isObservable); | ||
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 _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } | ||
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } | ||
var Streamer = function () { | ||
function Streamer() { | ||
var defaults = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; | ||
_classCallCheck(this, Streamer); | ||
this._observables = [_rxjs.Observable.of(defaults)]; | ||
} | ||
_createClass(Streamer, [{ | ||
key: '_push', | ||
value: function _push(observable) { | ||
this._observables.push(observable); | ||
} | ||
}, { | ||
key: 'set', | ||
value: function set(value) { | ||
for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { | ||
args[_key - 1] = arguments[_key]; | ||
} | ||
// (key, value) | ||
if (typeof value === 'string') { | ||
return this.setKey(value, args[0]); | ||
} | ||
// (plainObject) | ||
if (_lodash2.default.isPlainObject(value)) { | ||
return this.setPlainObject(value); | ||
} | ||
// (observable$, ...mapperFns) | ||
if ((0, _isObservable2.default)(value)) { | ||
return this.setObservable.apply(this, [value].concat(args)); | ||
} | ||
return this; | ||
} | ||
}, { | ||
key: 'setKey', | ||
value: function setKey(key, value) { | ||
this._push(_rxjs.Observable.of(_defineProperty({}, key, value))); | ||
return this; | ||
} | ||
}, { | ||
key: 'setPlainObject', | ||
value: function setPlainObject(object) { | ||
this._push(_rxjs.Observable.of(object)); | ||
return this; | ||
} | ||
}, { | ||
key: 'setObservable', | ||
value: function setObservable(object$) { | ||
var mappedObject$ = object$; | ||
for (var _len2 = arguments.length, mappers = Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) { | ||
mappers[_key2 - 1] = arguments[_key2]; | ||
} | ||
mappers.forEach(function (mapperFn) { | ||
mappedObject$ = mappedObject$.concatMap(function (object) { | ||
var result = mapperFn(object); | ||
if ((0, _isObservable2.default)(result)) { | ||
return result; | ||
} | ||
return _rxjs.Observable.of(result); | ||
}); | ||
}); | ||
this._push(mappedObject$); | ||
return this; | ||
} | ||
}, { | ||
key: 'setDispatch', | ||
value: function setDispatch(actions, store) { | ||
var object = {}; | ||
Object.keys(actions).forEach(function (propKey) { | ||
var actionFn = actions[propKey]; | ||
object[propKey] = function () { | ||
return store.dispatch(actionFn.apply(undefined, arguments)); | ||
}; | ||
}); | ||
this._push(_rxjs.Observable.of(object)); | ||
return this; | ||
} | ||
}, { | ||
key: 'get$', | ||
value: function get$() { | ||
return _rxjs.Observable.merge.apply(_rxjs.Observable, _toConsumableArray(this._observables)).scan(function (props, emitted) { | ||
return _extends({}, props, emitted); | ||
}); | ||
} | ||
}]); | ||
return Streamer; | ||
}(); | ||
function streamProps() { | ||
var defaultProps = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; | ||
return new Streamer(defaultProps); | ||
} | ||
exports.default = _streamProps2.default; | ||
module.exports = exports['default']; |
@@ -103,4 +103,3 @@ 'use strict'; | ||
name: 'Alex', | ||
number: 6 // 3 * 2 | ||
}); | ||
number: 6 }); | ||
@@ -107,0 +106,0 @@ done(); |
{ | ||
"name": "frint-react", | ||
"version": "2.2.1", | ||
"version": "2.3.0-alpha.f9a1b324", | ||
"description": "React package for Frint", | ||
@@ -31,2 +31,4 @@ "main": "lib/index.js", | ||
"dependencies": { | ||
"frint-component-handlers": "^2.3.0-alpha.f9a1b324", | ||
"frint-component-utils": "^2.3.0-alpha.f9a1b324", | ||
"lodash": "^4.13.1", | ||
@@ -36,4 +38,4 @@ "rxjs": "^5.2.0" | ||
"devDependencies": { | ||
"frint": "^2.2.1", | ||
"frint-test-utils": "^2.2.1" | ||
"frint": "^2.3.0-alpha.f9a1b324", | ||
"frint-test-utils": "^2.3.0-alpha.f9a1b324" | ||
}, | ||
@@ -40,0 +42,0 @@ "bugs": { |
No v1
QualityPackage is not semver >=1. This means it is not stable and does not support ^ ranges.
Found 1 instance in 1 package
114366
26
2069
4
1
+ Addedcross-env@5.2.1(transitive)
+ Addedcross-spawn@6.0.6(transitive)
+ Addedfrint-component-handlers@2.8.1(transitive)
+ Addedfrint-component-utils@2.8.1(transitive)
+ Addedisexe@2.0.0(transitive)
+ Addednice-try@1.0.5(transitive)
+ Addedpath-key@2.0.1(transitive)
+ Addedsemver@5.7.2(transitive)
+ Addedshebang-command@1.2.0(transitive)
+ Addedshebang-regex@1.0.0(transitive)
+ Addedwhich@1.3.1(transitive)