redux-signal
Version:
A scalable solution for modals using React and Redux
356 lines • 63.1 kB
JavaScript
(function webpackUniversalModuleDefinition(root, factory) {
if(typeof exports === 'object' && typeof module === 'object')
module.exports = factory(require("immutable"), require("prop-types"), require("react"), require("react-redux"), require("reselect"));
else if(typeof define === 'function' && define.amd)
define(["immutable", "prop-types", "react", "react-redux", "reselect"], factory);
else if(typeof exports === 'object')
exports["ReduxSignal"] = factory(require("immutable"), require("prop-types"), require("react"), require("react-redux"), require("reselect"));
else
root["ReduxSignal"] = factory(root["Immutable"], root["PropTypes"], root["React"], root["ReactRedux"], root[undefined]);
})(window, function(__WEBPACK_EXTERNAL_MODULE_immutable__, __WEBPACK_EXTERNAL_MODULE_prop_types__, __WEBPACK_EXTERNAL_MODULE_react__, __WEBPACK_EXTERNAL_MODULE_react_redux__, __WEBPACK_EXTERNAL_MODULE_reselect__) {
return /******/ (function(modules) { // webpackBootstrap
/******/ // The module cache
/******/ var installedModules = {};
/******/
/******/ // The require function
/******/ function __webpack_require__(moduleId) {
/******/
/******/ // Check if module is in cache
/******/ if(installedModules[moduleId]) {
/******/ return installedModules[moduleId].exports;
/******/ }
/******/ // Create a new module (and put it into the cache)
/******/ var module = installedModules[moduleId] = {
/******/ i: moduleId,
/******/ l: false,
/******/ exports: {}
/******/ };
/******/
/******/ // Execute the module function
/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
/******/
/******/ // Flag the module as loaded
/******/ module.l = true;
/******/
/******/ // Return the exports of the module
/******/ return module.exports;
/******/ }
/******/
/******/
/******/ // expose the modules object (__webpack_modules__)
/******/ __webpack_require__.m = modules;
/******/
/******/ // expose the module cache
/******/ __webpack_require__.c = installedModules;
/******/
/******/ // define getter function for harmony exports
/******/ __webpack_require__.d = function(exports, name, getter) {
/******/ if(!__webpack_require__.o(exports, name)) {
/******/ Object.defineProperty(exports, name, {
/******/ configurable: false,
/******/ enumerable: true,
/******/ get: getter
/******/ });
/******/ }
/******/ };
/******/
/******/ // define __esModule on exports
/******/ __webpack_require__.r = function(exports) {
/******/ Object.defineProperty(exports, '__esModule', { value: true });
/******/ };
/******/
/******/ // getDefaultExport function for compatibility with non-harmony modules
/******/ __webpack_require__.n = function(module) {
/******/ var getter = module && module.__esModule ?
/******/ function getDefault() { return module['default']; } :
/******/ function getModuleExports() { return module; };
/******/ __webpack_require__.d(getter, 'a', getter);
/******/ return getter;
/******/ };
/******/
/******/ // Object.prototype.hasOwnProperty.call
/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
/******/
/******/ // __webpack_public_path__
/******/ __webpack_require__.p = "";
/******/
/******/
/******/ // Load entry module and return exports
/******/ return __webpack_require__(__webpack_require__.s = "./src/index.js");
/******/ })
/************************************************************************/
/******/ ({
/***/ "./node_modules/lru-memoize/lib/deepEquals.js":
/*!****************************************************!*\
!*** ./node_modules/lru-memoize/lib/deepEquals.js ***!
\****************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
eval("\n\nexports.__esModule = true;\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nexports.default = deepEquals;\nvar hasOwn = function hasOwn(object, key) {\n return Object.prototype.hasOwnProperty.call(object, key);\n};\nfunction deepEquals(equals, deepObjects) {\n function deep(valueA, valueB) {\n if (equals(valueA, valueB)) {\n return true;\n }\n\n if (Array.isArray(valueA)) {\n if (!Array.isArray(valueB) || valueA.length !== valueB.length) {\n return false;\n }\n\n // Check deep equality of each value in A against the same indexed value in B\n if (!valueA.every(function (value, index) {\n return deep(value, valueB[index]);\n })) {\n return false;\n }\n\n // could not find unequal items\n return true;\n }\n\n if (Array.isArray(valueB)) {\n return false;\n }\n\n if ((typeof valueA === 'undefined' ? 'undefined' : _typeof(valueA)) === 'object') {\n if ((typeof valueB === 'undefined' ? 'undefined' : _typeof(valueB)) !== 'object') {\n return false;\n }\n\n var isANull = valueA === null;\n var isBNull = valueB === null;\n if (isANull || isBNull) {\n return isANull === isBNull;\n }\n\n var aKeys = Object.keys(valueA);\n var bKeys = Object.keys(valueB);\n\n if (aKeys.length !== bKeys.length) {\n return false;\n }\n\n // Should we compare with shallow equivalence or deep equivalence?\n var equalityChecker = deepObjects ? deep : equals;\n\n // Check if objects share same keys, and each of those keys are equal\n if (!aKeys.every(function (aKey) {\n return hasOwn(valueA, aKey) && hasOwn(valueB, aKey) && equalityChecker(valueA[aKey], valueB[aKey]);\n })) {\n return false;\n }\n\n // could not find unequal keys or values\n return true;\n }\n return false;\n }\n\n return deep;\n}\n\n//# sourceURL=webpack://ReduxSignal/./node_modules/lru-memoize/lib/deepEquals.js?");
/***/ }),
/***/ "./node_modules/lru-memoize/lib/index.js":
/*!***********************************************!*\
!*** ./node_modules/lru-memoize/lib/index.js ***!
\***********************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
eval("\n\nexports.__esModule = true;\n\nvar _memoize = __webpack_require__(/*! ./memoize */ \"./node_modules/lru-memoize/lib/memoize.js\");\n\nvar _memoize2 = _interopRequireDefault(_memoize);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = _memoize2.default;\n\n//# sourceURL=webpack://ReduxSignal/./node_modules/lru-memoize/lib/index.js?");
/***/ }),
/***/ "./node_modules/lru-memoize/lib/lruCache.js":
/*!**************************************************!*\
!*** ./node_modules/lru-memoize/lib/lruCache.js ***!
\**************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
eval("\n\nexports.__esModule = true;\nexports.default = lruCache;\nfunction lruCache(limit, equals) {\n var entries = [];\n\n function get(key) {\n var cacheIndex = entries.findIndex(function (entry) {\n return equals(key, entry.key);\n });\n\n // We found a cached entry\n if (cacheIndex > -1) {\n var entry = entries[cacheIndex];\n\n // Cached entry not at top of cache, move it to the top\n if (cacheIndex > 0) {\n entries.slice(cacheIndex, 1);\n entries.unshift(entry);\n }\n\n return entry.value;\n }\n\n // No entry found in cache, return null\n return undefined;\n }\n\n function put(key, value) {\n if (!get(key)) {\n entries.unshift({ key: key, value: value });\n if (entries.length > limit) {\n entries.pop();\n }\n }\n }\n\n return { get: get, put: put };\n}\n\n//# sourceURL=webpack://ReduxSignal/./node_modules/lru-memoize/lib/lruCache.js?");
/***/ }),
/***/ "./node_modules/lru-memoize/lib/memoize.js":
/*!*************************************************!*\
!*** ./node_modules/lru-memoize/lib/memoize.js ***!
\*************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
eval("\n\nexports.__esModule = true;\nexports.default = memoize;\n\nvar _deepEquals = __webpack_require__(/*! ./deepEquals */ \"./node_modules/lru-memoize/lib/deepEquals.js\");\n\nvar _deepEquals2 = _interopRequireDefault(_deepEquals);\n\nvar _lruCache = __webpack_require__(/*! ./lruCache */ \"./node_modules/lru-memoize/lib/lruCache.js\");\n\nvar _lruCache2 = _interopRequireDefault(_lruCache);\n\nvar _singletonCache = __webpack_require__(/*! ./singletonCache */ \"./node_modules/lru-memoize/lib/singletonCache.js\");\n\nvar _singletonCache2 = _interopRequireDefault(_singletonCache);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction createCache(limit, equals) {\n return limit === 1 ? (0, _singletonCache2.default)(equals) : (0, _lruCache2.default)(limit, equals);\n}\n\nfunction createEqualsFn(basicEquals, deepObjects) {\n // Choose strategy for basic or deep object equals\n var equals = deepObjects ? (0, _deepEquals2.default)(basicEquals, deepObjects) : basicEquals;\n\n return function (valueA, valueB) {\n // The arguments are always the argument array-like objects\n\n // Different lengths means they are not the same\n if (valueA.length !== valueB.length) {\n return false;\n }\n\n // Compare the values\n for (var index = 0; index < valueA.length; index += 1) {\n if (!equals(valueA[index], valueB[index])) {\n return false;\n }\n }\n // Found no conflicts\n return true;\n };\n}\n\nfunction memoize() {\n var limit = 1;\n var equals = function equals(valueA, valueB) {\n return valueA === valueB;\n };\n var deepObjects = false;\n\n for (var _len = arguments.length, config = Array(_len), _key = 0; _key < _len; _key++) {\n config[_key] = arguments[_key];\n }\n\n if (typeof config[0] === 'number') {\n limit = config.shift();\n }\n if (typeof config[0] === 'function') {\n equals = config.shift();\n } else if (typeof config[0] === 'undefined') {\n // Support passing undefined equal argument;\n config.shift();\n }\n if (typeof config[0] === 'boolean') {\n deepObjects = config[0];\n }\n\n var cache = createCache(limit, createEqualsFn(equals, deepObjects));\n\n return function (fn) {\n return function () {\n for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n var value = cache.get(args);\n if (value === undefined) {\n value = fn.apply(fn, args);\n cache.put(args, value);\n }\n return value;\n };\n };\n}\n\n//# sourceURL=webpack://ReduxSignal/./node_modules/lru-memoize/lib/memoize.js?");
/***/ }),
/***/ "./node_modules/lru-memoize/lib/singletonCache.js":
/*!********************************************************!*\
!*** ./node_modules/lru-memoize/lib/singletonCache.js ***!
\********************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
eval("\n\nexports.__esModule = true;\nexports.default = singletonCache;\nfunction singletonCache(equals) {\n var entry = void 0;\n return {\n get: function get(key) {\n if (entry && equals(key, entry.key)) {\n return entry.value;\n }\n },\n put: function put(key, value) {\n entry = { key: key, value: value };\n }\n };\n}\n\n//# sourceURL=webpack://ReduxSignal/./node_modules/lru-memoize/lib/singletonCache.js?");
/***/ }),
/***/ "./src/actions.js":
/*!************************!*\
!*** ./src/actions.js ***!
\************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.queueDestroy = exports.feedbackQueueShift = exports.eventQueueShift = exports.signalEvent = exports.setModalState = exports.destroySignal = exports.setModalBusy = exports.hideModal = exports.showModal = exports.destroyModal = exports.createModal = exports.createSignal = undefined;\n\nvar _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; };\n\nvar _immutable = __webpack_require__(/*! immutable */ \"immutable\");\n\nvar _utils = __webpack_require__(/*! ./utils */ \"./src/utils.js\");\n\nvar _ModalStates = __webpack_require__(/*! ./constants/ModalStates */ \"./src/constants/ModalStates.js\");\n\nvar ModalStates = _interopRequireWildcard(_ModalStates);\n\nvar _ActionTypes = __webpack_require__(/*! ./constants/ActionTypes */ \"./src/constants/ActionTypes.js\");\n\nvar ActionTypes = _interopRequireWildcard(_ActionTypes);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nvar __DEV__ = \"development\" === 'development';\n\nvar createSignal = function createSignal(_ref) {\n var type = _ref.type,\n eventHandler = _ref.eventHandler,\n props = _objectWithoutProperties(_ref, ['type', 'eventHandler']);\n\n if (__DEV__) {\n if (!type) {\n throw new Error('Signal requires a `type`');\n }\n }\n\n return {\n type: ActionTypes.SIGNAL_CREATE,\n modal: (0, _immutable.fromJS)(_extends({\n id: (0, _utils.uid)(10),\n type: type,\n eventHandlerId: eventHandler ? eventHandler.eventQueueId : null,\n state: ModalStates.CREATED\n }, props))\n };\n};\n\nexports.createSignal = createSignal;\nvar createModal = exports.createModal = function createModal(instanceId) {\n return {\n instanceId: instanceId,\n type: ActionTypes.MODAL_CREATE\n };\n};\n\nvar destroyModal = exports.destroyModal = function destroyModal(instanceId) {\n return {\n instanceId: instanceId,\n type: ActionTypes.MODAL_DESTROY\n };\n};\n\nvar showModal = exports.showModal = function showModal(instanceId, data) {\n return {\n data: data,\n instanceId: instanceId,\n type: ActionTypes.MODAL_SHOW\n };\n};\n\nvar hideModal = exports.hideModal = function hideModal(instanceId) {\n return {\n instanceId: instanceId,\n type: ActionTypes.MODAL_HIDE\n };\n};\n\nvar setModalBusy = exports.setModalBusy = function setModalBusy(instanceId, isBusy) {\n return {\n instanceId: instanceId,\n isBusy: isBusy,\n type: ActionTypes.MODAL_SET_BUSY\n };\n};\n\nvar destroySignal = exports.destroySignal = function destroySignal(id) {\n return {\n type: ActionTypes.SIGNAL_DESTROY,\n id: id\n };\n};\n\nvar setModalState = exports.setModalState = function setModalState(id, state) {\n return {\n type: ActionTypes.MODAL_SET_STATE,\n id: id,\n value: state\n };\n};\n\nvar signalEvent = exports.signalEvent = function signalEvent(id, type) {\n return {\n type: ActionTypes.SIGNAL_EVENT,\n id: id,\n event: {\n type: type,\n modalId: id\n }\n };\n};\n\nvar eventQueueShift = exports.eventQueueShift = function eventQueueShift(eventQueueId) {\n return {\n eventQueueId: eventQueueId,\n type: ActionTypes.SIGNAL_EVENT_QUEUE_SHIFT\n };\n};\n\nvar feedbackQueueShift = exports.feedbackQueueShift = function feedbackQueueShift(eventQueueId) {\n return {\n eventQueueId: eventQueueId,\n type: ActionTypes.SIGNAL_FEEDBACK_QUEUE_SHIFT\n };\n};\n\nvar queueDestroy = exports.queueDestroy = function queueDestroy(eventQueueId) {\n return {\n eventQueueId: eventQueueId,\n type: ActionTypes.SIGNAL_QUEUE_DESTROY\n };\n};\n\n//# sourceURL=webpack://ReduxSignal/./src/actions.js?");
/***/ }),
/***/ "./src/constants/ActionTypes.js":
/*!**************************************!*\
!*** ./src/constants/ActionTypes.js ***!
\**************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar prefix = '@@redux-signal/';\n\nvar MODAL_CREATE = exports.MODAL_CREATE = prefix + 'MODAL_CREATE';\nvar MODAL_DESTROY = exports.MODAL_DESTROY = prefix + 'MODAL_DESTROY';\nvar MODAL_HIDE = exports.MODAL_HIDE = prefix + 'MODAL_HIDE';\nvar MODAL_SHOW = exports.MODAL_SHOW = prefix + 'MODAL_SHOW';\nvar MODAL_SET_BUSY = exports.MODAL_SET_BUSY = prefix + 'MODAL_SET_BUSY';\nvar MODAL_SET_STATE = exports.MODAL_SET_STATE = prefix + 'MODAL_SET_STATE';\n\nvar SIGNAL_CREATE = exports.SIGNAL_CREATE = prefix + 'SIGNAL_CREATE';\nvar SIGNAL_DESTROY = exports.SIGNAL_DESTROY = prefix + 'SIGNAL_DESTROY';\nvar SIGNAL_EVENT = exports.SIGNAL_EVENT = prefix + 'SIGNAL_EVENT';\nvar SIGNAL_EVENT_QUEUE_SHIFT = exports.SIGNAL_EVENT_QUEUE_SHIFT = prefix + 'SIGNAL_EVENT_QUEUE_SHIFT';\nvar SIGNAL_FEEDBACK_QUEUE_SHIFT = exports.SIGNAL_FEEDBACK_QUEUE_SHIFT = prefix + 'SIGNAL_FEEDBACK_QUEUE_SHIFT';\nvar SIGNAL_QUEUE_DESTROY = exports.SIGNAL_QUEUE_DESTROY = prefix + 'SIGNAL_QUEUE_DESTROY';\n\n//# sourceURL=webpack://ReduxSignal/./src/constants/ActionTypes.js?");
/***/ }),
/***/ "./src/constants/ModalStates.js":
/*!**************************************!*\
!*** ./src/constants/ModalStates.js ***!
\**************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar CREATED = exports.CREATED = 'CREATED';\nvar VISIBLE = exports.VISIBLE = 'VISIBLE';\nvar DESTROYED = exports.DESTROYED = 'DESTROYED';\n\n//# sourceURL=webpack://ReduxSignal/./src/constants/ModalStates.js?");
/***/ }),
/***/ "./src/constants/SignalEvents.js":
/*!***************************************!*\
!*** ./src/constants/SignalEvents.js ***!
\***************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar CLOSE = exports.CLOSE = 'CLOSE';\nvar BTN_CANCEL = exports.BTN_CANCEL = 'BTN_CANCEL';\nvar BTN_OK = exports.BTN_OK = 'BTN_OK';\nvar BTN_YES = exports.BTN_YES = 'BTN_YES';\nvar BTN_NO = exports.BTN_NO = 'BTN_NO';\n\n//# sourceURL=webpack://ReduxSignal/./src/constants/SignalEvents.js?");
/***/ }),
/***/ "./src/constants/SignalTypes.js":
/*!**************************************!*\
!*** ./src/constants/SignalTypes.js ***!
\**************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar OK = exports.OK = 'OK';\nvar OK_CANCEL = exports.OK_CANCEL = 'OK_CANCEL';\nvar YES_NO = exports.YES_NO = 'YES_NO';\nvar YES_NO_CANCEL = exports.YES_NO_CANCEL = 'YES_NO_CANCEL';\n\n//# sourceURL=webpack://ReduxSignal/./src/constants/SignalTypes.js?");
/***/ }),
/***/ "./src/createContainer.js":
/*!********************************!*\
!*** ./src/createContainer.js ***!
\********************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _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; };\n\nvar _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; }; }();\n\nvar _react = __webpack_require__(/*! react */ \"react\");\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = __webpack_require__(/*! prop-types */ \"prop-types\");\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _reactRedux = __webpack_require__(/*! react-redux */ \"react-redux\");\n\nvar _immutable = __webpack_require__(/*! immutable */ \"immutable\");\n\nvar _selectors = __webpack_require__(/*! ./selectors */ \"./src/selectors.js\");\n\nvar _utils = __webpack_require__(/*! ./utils */ \"./src/utils.js\");\n\nvar _actions = __webpack_require__(/*! ./actions */ \"./src/actions.js\");\n\nvar _SignalEvents = __webpack_require__(/*! ./constants/SignalEvents */ \"./src/constants/SignalEvents.js\");\n\nvar ModalEvents = _interopRequireWildcard(_SignalEvents);\n\nvar _ModalStates = __webpack_require__(/*! ./constants/ModalStates */ \"./src/constants/ModalStates.js\");\n\nvar ModalStates = _interopRequireWildcard(_ModalStates);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar createContainer = function createContainer(Modal) {\n var SignalContainer = function (_React$Component) {\n _inherits(SignalContainer, _React$Component);\n\n function SignalContainer() {\n _classCallCheck(this, SignalContainer);\n\n return _possibleConstructorReturn(this, (SignalContainer.__proto__ || Object.getPrototypeOf(SignalContainer)).apply(this, arguments));\n }\n\n _createClass(SignalContainer, [{\n key: 'componentWillMount',\n value: function componentWillMount() {\n this.props.updateModals();\n }\n }, {\n key: 'componentWillReceiveProps',\n value: function componentWillReceiveProps(nextProps) {\n nextProps.updateModals();\n nextProps.handleEventFeedback();\n }\n }, {\n key: 'render',\n value: function render() {\n var _props = this.props,\n modals = _props.modals,\n rawModal = _props.rawModal,\n onModalExited = _props.onModalExited,\n onModalClose = _props.onModalClose,\n onModalEvent = _props.onModalEvent;\n\n\n return modals.map(function (modal) {\n var id = modal.get('id');\n var currentRawModal = rawModal.get(id);\n\n return _react2.default.createElement(Modal, {\n key: 'signal-' + id,\n event: onModalEvent,\n destroy: function destroy() {\n return onModalExited(id);\n },\n close: function close() {\n return onModalClose(id);\n },\n modal: _extends({}, modal.toJS(), currentRawModal)\n });\n });\n }\n }]);\n\n return SignalContainer;\n }(_react2.default.Component);\n\n SignalContainer.propTypes = {\n updateModals: _propTypes2.default.func.isRequired,\n handleEventFeedback: _propTypes2.default.func.isRequired,\n onModalExited: _propTypes2.default.func.isRequired,\n onModalClose: _propTypes2.default.func.isRequired,\n onModalEvent: _propTypes2.default.func.isRequired,\n modals: _propTypes2.default.instanceOf(_immutable.List),\n rawModal: _propTypes2.default.instanceOf(_immutable.Map)\n };\n\n\n var mapStateToProps = function mapStateToProps(state) {\n var modals = (0, _selectors.getSignal)(state);\n\n var rawModal = (0, _immutable.Map)(modals.map(function (modal) {\n return [modal.get('id'), (0, _selectors.getModal)((0, _utils.getSignalModalId)(modal.get('id')))(state)];\n }));\n\n var eventFeedback = (0, _immutable.Map)(modals.map(function (modal) {\n var feedback = null;\n\n var eventQueueId = modal.get('eventHandlerId');\n if (eventQueueId) {\n var events = state.signal.getIn(['signal', 'feedbackQueue', eventQueueId]);\n\n if (events && events.size > 0) {\n feedback = events.first();\n }\n }\n\n return [modal.get('id'), feedback];\n }));\n\n return {\n eventFeedback: eventFeedback,\n modals: modals,\n rawModal: rawModal\n };\n };\n\n var mapDispatchToProps = function mapDispatchToProps(dispatch) {\n return {\n dispatch: dispatch,\n\n onModalExited: function onModalExited(modalId) {\n dispatch((0, _actions.destroySignal)(modalId));\n },\n\n onModalClose: function onModalClose(modalId) {\n dispatch((0, _actions.signalEvent)(modalId, ModalEvents.CLOSE));\n dispatch((0, _actions.setModalState)(modalId, ModalStates.DESTROYED));\n }\n };\n };\n\n var mergeProps = function mergeProps(stateProps, dispatchProps) {\n var eventFeedback = stateProps.eventFeedback,\n modals = stateProps.modals,\n rawModal = stateProps.rawModal;\n var dispatch = dispatchProps.dispatch;\n\n\n return _extends({}, stateProps, dispatchProps, {\n\n handleEventFeedback: function handleEventFeedback() {\n modals.forEach(function (modal) {\n var event = eventFeedback.get(modal.get('id'));\n\n if (!event) {\n return;\n }\n\n var modalId = modal.get('id');\n\n dispatch((0, _actions.feedbackQueueShift)(modal.get('eventHandlerId')));\n\n // By default, BTN_* events trigger modal close\n if (event.type.startsWith('BTN_')) {\n dispatch((0, _actions.signalEvent)(modalId, ModalEvents.CLOSE));\n dispatch((0, _actions.setModalState)(modalId, ModalStates.DESTROYED));\n }\n });\n },\n\n onModalEvent: function onModalEvent(modal, eventType) {\n var modalId = modal.id;\n\n if (modal.eventHandlerId) {\n dispatch((0, _actions.signalEvent)(modalId, eventType));\n } else {\n // If we do not have an event handler, just close the modal on any button\n if (eventType.startsWith('BTN_')) {\n dispatch((0, _actions.setModalState)(modalId, ModalStates.DESTROYED));\n }\n }\n },\n\n updateModals: function updateModals() {\n modals.forEach(function (modal) {\n var modalId = modal.get('id');\n var state = rawModal.getIn([modalId]).state;\n\n switch (state) {\n case ModalStates.CREATED:\n dispatch((0, _actions.setModalState)(modalId, ModalStates.VISIBLE));\n break;\n }\n });\n }\n });\n };\n\n return (0, _reactRedux.connect)(mapStateToProps, mapDispatchToProps, mergeProps)(SignalContainer);\n};\n\nexports.default = createContainer;\n\n//# sourceURL=webpack://ReduxSignal/./src/createContainer.js?");
/***/ }),
/***/ "./src/eventHandler.js":
/*!*****************************!*\
!*** ./src/eventHandler.js ***!
\*****************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _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; }; }();\n\nvar _react = __webpack_require__(/*! react */ \"react\");\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = __webpack_require__(/*! prop-types */ \"prop-types\");\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _reactRedux = __webpack_require__(/*! react-redux */ \"react-redux\");\n\nvar _utils = __webpack_require__(/*! ./utils */ \"./src/utils.js\");\n\nvar _actions = __webpack_require__(/*! ./actions */ \"./src/actions.js\");\n\nvar _selectors = __webpack_require__(/*! ./selectors */ \"./src/selectors.js\");\n\nvar _SignalEvents = __webpack_require__(/*! ./constants/SignalEvents */ \"./src/constants/SignalEvents.js\");\n\nvar ModalEvents = _interopRequireWildcard(_SignalEvents);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _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; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar eventHandler = function eventHandler() {\n var _class, _temp2;\n\n var eventQueueId = (0, _utils.uid)(10);\n\n var Component = (_temp2 = _class = function (_React$Component) {\n _inherits(Component, _React$Component);\n\n function Component() {\n var _ref;\n\n var _temp, _this, _ret;\n\n _classCallCheck(this, Component);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = Component.__proto__ || Object.getPrototypeOf(Component)).call.apply(_ref, [this].concat(args))), _this), _this.callHandler = function (handler, props) {\n if (handler) {\n handler(props.modal.toJS());\n }\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n _createClass(Component, [{\n key: 'componentWillMount',\n value: function componentWillMount() {\n this.processEvents(this.props);\n }\n }, {\n key: 'componentWillReceiveProps',\n value: function componentWillReceiveProps(nextProps) {\n this.processEvents(nextProps);\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n this.props.destroyQueue();\n }\n }, {\n key: 'processEvents',\n value: function processEvents(props) {\n if (props.event) {\n var _handlers;\n\n var handlers = (_handlers = {}, _defineProperty(_handlers, ModalEvents.BTN_OK, props.onOk), _defineProperty(_handlers, ModalEvents.BTN_CANCEL, props.onCancel), _defineProperty(_handlers, ModalEvents.BTN_YES, props.onYes), _defineProperty(_handlers, ModalEvents.BTN_NO, props.onNo), _defineProperty(_handlers, ModalEvents.CLOSE, props.onClose), _handlers);\n\n this.callHandler(handlers[props.event.type], props);\n props.handledEvent();\n }\n }\n }, {\n key: 'render',\n value: function render() {\n return null;\n }\n }]);\n\n return Component;\n }(_react2.default.Component), _class.propTypes = {\n destroyQueue: _propTypes2.default.func.isRequired,\n\n /* eslint-disable react/no-unused-prop-types */\n handledEvent: _propTypes2.default.func.isRequired,\n onOk: _propTypes2.default.func,\n onCancel: _propTypes2.default.func,\n onYes: _propTypes2.default.func,\n onNo: _propTypes2.default.func,\n modal: _propTypes2.default.object\n /* eslint-enable */\n }, _temp2);\n\n var mapStateToProps = function mapStateToProps(state) {\n var events = (0, _selectors.getModalEvents)(eventQueueId)(state);\n var event = events ? events.first() : null;\n\n return {\n event: event,\n modal: (0, _selectors.getModalByEventQueueId)(eventQueueId)(state)\n };\n };\n\n var mapDispatchToProps = function mapDispatchToProps(dispatch) {\n return {\n handledEvent: function handledEvent() {\n return dispatch((0, _actions.eventQueueShift)(eventQueueId));\n },\n destroyQueue: function destroyQueue() {\n return dispatch((0, _actions.queueDestroy)(eventQueueId));\n }\n };\n };\n\n var Connected = (0, _reactRedux.connect)(mapStateToProps, mapDispatchToProps)(Component);\n\n Connected.eventQueueId = eventQueueId;\n\n return Connected;\n};\n\nexports.default = eventHandler;\n\n//# sourceURL=webpack://ReduxSignal/./src/eventHandler.js?");
/***/ }),
/***/ "./src/index.js":
/*!**********************!*\
!*** ./src/index.js ***!
\**********************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.ModalStates = exports.SignalTypes = exports.SignalEvents = exports.createContainer = exports.reducer = exports.eventHandler = exports.getSignalModalId = exports.isModalPropTypes = exports.isModal = exports.withSignalPropTypes = exports.withSignal = exports.getHasVisibleModal = exports.getModalEvents = exports.getModalByEventQueueId = exports.getSignal = exports.getModal = exports.setModalState = exports.signalEvent = exports.destroySignal = exports.setModalBusy = exports.hideModal = exports.showModal = undefined;\n\nvar _actions = __webpack_require__(/*! ./actions */ \"./src/actions.js\");\n\nObject.defineProperty(exports, 'showModal', {\n enumerable: true,\n get: function get() {\n return _actions.showModal;\n }\n});\nObject.defineProperty(exports, 'hideModal', {\n enumerable: true,\n get: function get() {\n return _actions.hideModal;\n }\n});\nObject.defineProperty(exports, 'setModalBusy', {\n enumerable: true,\n get: function get() {\n return _actions.setModalBusy;\n }\n});\nObject.defineProperty(exports, 'destroySignal', {\n enumerable: true,\n get: function get() {\n return _actions.destroySignal;\n }\n});\nObject.defineProperty(exports, 'signalEvent', {\n enumerable: true,\n get: function get() {\n return _actions.signalEvent;\n }\n});\nObject.defineProperty(exports, 'setModalState', {\n enumerable: true,\n get: function get() {\n return _actions.setModalState;\n }\n});\n\nvar _selectors = __webpack_require__(/*! ./selectors */ \"./src/selectors.js\");\n\nObject.defineProperty(exports, 'getModal', {\n enumerable: true,\n get: function get() {\n return _selectors.getModal;\n }\n});\nObject.defineProperty(exports, 'getSignal', {\n enumerable: true,\n get: function get() {\n return _selectors.getSignal;\n }\n});\nObject.defineProperty(exports, 'getModalByEventQueueId', {\n enumerable: true,\n get: function get() {\n return _selectors.getModalByEventQueueId;\n }\n});\nObject.defineProperty(exports, 'getModalEvents', {\n enumerable: true,\n get: function get() {\n return _selectors.getModalEvents;\n }\n});\nObject.defineProperty(exports, 'getHasVisibleModal', {\n enumerable: true,\n get: function get() {\n return _selectors.getHasVisibleModal;\n }\n});\n\nvar _withSignal = __webpack_require__(/*! ./withSignal */ \"./src/withSignal.js\");\n\nObject.defineProperty(exports, 'withSignal', {\n enumerable: true,\n get: function get() {\n return _interopRequireDefault(_withSignal).default;\n }\n});\nObject.defineProperty(exports, 'withSignalPropTypes', {\n enumerable: true,\n get: function get() {\n return _withSignal.withSignalPropTypes;\n }\n});\n\nvar _isModal = __webpack_require__(/*! ./isModal */ \"./src/isModal.js\");\n\nObject.defineProperty(exports, 'isModal', {\n enumerable: true,\n get: function get() {\n return _interopRequireDefault(_isModal).default;\n }\n});\nObject.defineProperty(exports, 'isModalPropTypes', {\n enumerable: true,\n get: function get() {\n return _isModal.isModalPropTypes;\n }\n});\n\nvar _utils = __webpack_require__(/*! ./utils */ \"./src/utils.js\");\n\nObject.defineProperty(exports, 'getSignalModalId', {\n enumerable: true,\n get: function get() {\n return _utils.getSignalModalId;\n }\n});\n\nvar _eventHandler = __webpack_require__(/*! ./eventHandler */ \"./src/eventHandler.js\");\n\nObject.defineProperty(exports, 'eventHandler', {\n enumerable: true,\n get: function get() {\n return _interopRequireDefault(_eventHandler).default;\n }\n});\n\nvar _reducer = __webpack_require__(/*! ./reducer */ \"./src/reducer.js\");\n\nObject.defineProperty(exports, 'reducer', {\n enumerable: true,\n get: function get() {\n return _interopRequireDefault(_reducer).default;\n }\n});\n\nvar _createContainer = __webpack_require__(/*! ./createContainer */ \"./src/createContainer.js\");\n\nObject.defineProperty(exports, 'createContainer', {\n enumerable: true,\n get: function get() {\n return _interopRequireDefault(_createContainer).default;\n }\n});\n\nvar _SignalEvents = __webpack_require__(/*! ./constants/SignalEvents */ \"./src/constants/SignalEvents.js\");\n\nvar SignalEvents = _interopRequireWildcard(_SignalEvents);\n\nvar _SignalTypes = __webpack_require__(/*! ./constants/SignalTypes */ \"./src/constants/SignalTypes.js\");\n\nvar SignalTypes = _interopRequireWildcard(_SignalTypes);\n\nvar _ModalStates = __webpack_require__(/*! ./constants/ModalStates */ \"./src/constants/ModalStates.js\");\n\nvar ModalStates = _interopRequireWildcard(_ModalStates);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.SignalEvents = SignalEvents;\nexports.SignalTypes = SignalTypes;\nexports.ModalStates = ModalStates;\n\n//# sourceURL=webpack://ReduxSignal/./src/index.js?");
/***/ }),
/***/ "./src/isModal.js":
/*!************************!*\
!*** ./src/isModal.js ***!
\************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.isModalPropTypes = undefined;\n\nvar _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; };\n\nvar _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; }; }();\n\nvar _react = __webpack_require__(/*! react */ \"react\");\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = __webpack_require__(/*! prop-types */ \"prop-types\");\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _reactRedux = __webpack_require__(/*! react-redux */ \"react-redux\");\n\nvar _actions = __webpack_require__(/*! ./actions */ \"./src/actions.js\");\n\nvar _selectors = __webpack_require__(/*! ./selectors */ \"./src/selectors.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar isModalPropTypes = exports.isModalPropTypes = {\n instanceId: _propTypes2.default.string.isRequired,\n close: _propTypes2.default.func.isRequired,\n setBusy: _propTypes2.default.func.isRequired,\n modal: _propTypes2.default.object.isRequired\n};\n\nvar isModal = function isModal(WrappedComponent) {\n var _class, _temp;\n\n var Component = (_temp = _class = function (_React$Component) {\n _inherits(Component, _React$Component);\n\n function Component() {\n _classCallCheck(this, Component);\n\n return _possibleConstructorReturn(this, (Component.__proto__ || Object.getPrototypeOf(Component)).apply(this, arguments));\n }\n\n _createClass(Component, [{\n key: 'componentWillMount',\n value: function componentWillMount() {\n this.props.create();\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n this.props.destroy();\n }\n }, {\n key: 'render',\n value: function render() {\n var _props = this.props,\n instanceId = _props.instanceId,\n close = _props.close,\n setBusy = _props.setBusy,\n modal = _props.modal;\n\n\n var componentProps = {\n instanceId: instanceId,\n close: close,\n setBusy: setBusy,\n modal: modal\n };\n\n return _react2.default.createElement(WrappedComponent, componentProps);\n }\n }]);\n\n return Component;\n }(_react2.default.Component), _class.propTypes = _extends({}, isModalPropTypes, {\n create: _propTypes2.default.func.isRequired,\n destroy: _propTypes2.default.func.isRequired\n }), _temp);\n\n var mapStateToProps = function mapStateToProps(state, _ref) {\n var instanceId = _ref.instanceId;\n return {\n modal: (0, _selectors.getModal)(instanceId)(state)\n };\n };\n\n var mapDispatchToProps = function mapDispatchToProps(dispatch, _ref2) {\n var instanceId = _ref2.instanceId;\n return {\n create: function create() {\n return dispatch((0, _actions.createModal)(instanceId));\n },\n destroy: function destroy() {\n return dispatch((0, _actions.destroyModal)(instanceId));\n },\n close: function close() {\n return dispatch((0, _actions.hideModal)(instanceId));\n },\n setBusy: function setBusy(isBusy) {\n return dispatch((0, _actions.setModalBusy)(instanceId, isBusy));\n }\n };\n };\n\n return (0, _reactRedux.connect)(mapStateToProps, mapDispatchToProps)(Component);\n};\n\nexports.default = isModal;\n\n//# sourceURL=webpack://ReduxSignal/./src/isModal.js?");
/***/ }),
/***/ "./src/reducer.js":
/*!************************!*\
!*** ./src/reducer.js ***!
\************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.initialState = undefined;\nexports.default = reduxSignalReducer;\n\nvar _immutable = __webpack_require__(/*! immutable */ \"immutable\");\n\nvar _ActionTypes = __webpack_require__(/*! ./constants/ActionTypes */ \"./src/constants/ActionTypes.js\");\n\nvar ActionTypes = _interopRequireWildcard(_ActionTypes);\n\nvar _ModalStates = __webpack_require__(/*! ./constants/ModalStates */ \"./src/constants/ModalStates.js\");\n\nvar ModalStates = _interopRequireWildcard(_ModalStates);\n\nvar _utils = __webpack_require__(/*! ./utils */ \"./src/utils.js\");\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nvar initialState = exports.initialState = (0, _immutable.fromJS)({\n signal: {\n data: {},\n eventQueue: {},\n feedbackQueue: {},\n order: []\n },\n modals: {}\n});\n\nvar emptyModal = (0, _immutable.Map)({\n isBusy: false,\n state: ModalStates.CREATED\n});\n\nfunction signalCreate(state, action) {\n var modalInstanceId = (0, _utils.getSignalModalId)(action.modal.get('id'));\n\n return state.setIn(['modals', modalInstanceId], emptyModal).setIn(['signal', 'data', action.modal.get('id')], action.modal).updateIn(['signal', 'order'], function (e) {\n return e.push(action.modal.get('id'));\n }).update('signal', function (state) {\n var eventHandlerId = action.modal.get('eventHandlerId');\n\n if (!eventHandlerId) {\n return state;\n }\n\n return state.setIn(['eventQueue', eventHandlerId], (0, _immutable.List)()).setIn(['feedbackQueue', eventHandlerId], (0, _immutable.List)());\n });\n}\n\nfunction signalDestroy(state, action) {\n var modalInstanceId = (0, _utils.getSignalModalId)(action.id);\n\n return state.deleteIn(['signal', 'data', action.id]).updateIn(['signal', 'order'], function (e) {\n return e.delete(e.indexOf(action.id));\n }).deleteIn(['modals', modalInstanceId]);\n}\n\nfunction signalSetState(state, action) {\n var translatedAction = {\n instanceId: (0, _utils.getSignalModalId)(action.id),\n value: action.value\n };\n\n return state.setIn(['modals', translatedAction.instanceId, 'state'], translatedAction.value);\n}\n\nfunction signalEvent(state, action) {\n var eventHandlerId = state.getIn(['signal', 'data', action.id, 'eventHandlerId']);\n\n if (eventHandlerId !== null) {\n return state.updateIn(['signal', 'eventQueue', eventHandlerId], function (e) {\n return e.push(action.event);\n });\n }\n\n return state;\n}\n\nfunction signalEventQueueShift(state, action) {\n var event = state.getIn(['signal', 'eventQueue', action.eventQueueId]).first();\n\n // Move event from eventQueue to feedbackQueue\n return state.updateIn(['signal', 'eventQueue', action.eventQueueId], function (e) {\n return e.shift();\n }).updateIn(['signal', 'feedbackQueue', action.eventQueueId], function (e) {\n return e.push(event);\n });\n}\n\nfunction reduxSignalReducer() {\n var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : initialState;\n var action = arguments[1];\n\n switch (action.type) {\n case ActionTypes.MODAL_CREATE:\n case ActionTypes.MODAL_HIDE:\n return state.setIn(['modals', action.instanceId], emptyModal);\n case ActionTypes.MODAL_DESTROY:\n return state.deleteIn(['modals', action.instanceId]);\n case ActionTypes.MODAL_SHOW:\n return state.updateIn(['modals', action.instanceId], function (modal) {\n return modal.set('isBusy', false).set('state', ModalStates.VISIBLE).set('data', action.data);\n });\n case ActionTypes.MODAL_SET_BUSY:\n return state.setIn(['modals', action.instanceId, 'isBusy'], action.isBusy);\n case ActionTypes.SIGNAL_CREATE:\n return signalCreate(state, action);\n case ActionTypes.SIGNAL_DESTROY:\n return signalDestroy(state, action);\n case ActionTypes.MODAL_SET_STATE:\n return signalSetState(state, action);\n case ActionTypes.SIGNAL_EVENT:\n return signalEvent(state, action);\n case ActionTypes.SIGNAL_EVENT_QUEUE_SHIFT:\n return signalEventQueueShift(state, action);\n case ActionTypes.SIGNAL_FEEDBACK_QUEUE_SHIFT:\n return state.updateIn(['signal', 'feedbackQueue', action.eventQueueId], function (e) {\n return e.shift();\n });\n case ActionTypes.SIGNAL_QUEUE_DESTROY:\n return state.deleteIn(['signal', 'eventQueue', action.eventQueueId]).deleteIn(['signal', 'feedbackQueue', action.eventQueueId]);\n default:\n return state;\n }\n}\n\n//# sourceURL=webpack://ReduxSignal/./src/reducer.js?");
/***/ }),
/***/ "./src/selectors.js":
/*!**************************!*\
!*** ./src/selectors.js ***!
\**************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.getModalByEventQueueId = exports.getModalEvents = exports.getSignal = exports.getHasVisibleModal = exports.getModal = undefined;\n\nvar _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\"); } }; }();\n\nvar _reselect = __webpack_require__(/*! reselect */ \"reselect\");\n\nvar _lruMemoize = __webpack_require__(/*! lru-memoize */ \"./node_modules/lru-memoize/lib/index.js\");\n\nvar _lruMemoize2 = _interopRequireDefault(_lruMemoize);\n\nvar _ModalStates = __webpack_require__(/*! ./constants/ModalStates */ \"./src/constants/ModalStates.js\");\n\nvar ModalStates = _interopRequireWildcard(_ModalStates);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// TODO: make this configurable? 8 seems to be a reasonable default\nvar customSelectorCreator = (0, _reselect.createSelectorCreator)(function (s, n) {\n return (0, _lruMemoize2.default)(n)(s);\n}, 8);\n\nvar getModal = exports.getModal = customSelectorCreator(function (instanceId) {\n return instanceId;\n}, function (instanceId) {\n return (0, _reselect.createSelector)(function (state) {\n return state.signal.get('modals');\n }, function (modals) {\n var modalState = modals.get(instanceId);\n\n if (!modalState) {\n return {\n data: null,\n isBusy: false,\n isFirst: false,\n isVisible: false,\n state: null\n };\n }\n\n var firstVisibleModal = null;\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = modals.entries()[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var _step$value = _slicedToArray(_step.value, 2),\n key = _step$value[0],\n value = _step$value[1];\n\n if (value.get('state') === ModalStates.VISIBLE) {\n firstVisibleModal = key;\n break;\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n return {\n instanceId: instanceId,\n data: modalState.get('data'),\n isBusy: modalState.get('isBusy'),\n isFirst: firstVisibleModal === instanceId,\n isVisible: modalState.get('state') === ModalStates.VISIBLE,\n state: modalState.get('state')\n };\n });\n});\n\nvar getHasVisibleModal = exports.getHasVisibleModal = (0, _reselect.createSelector)(function (state) {\n return state.signal.get('modals');\n}, function (modals) {\n var _iteratorNormalCompletion2 = true;\n var _didIteratorError2 = false;\n var _iteratorError2 = undefined;\n\n try {\n for (var _iterator2 = modals.valueSeq()[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var value = _step2.value;\n\n if (value.get('state') === ModalStates.VISIBLE) {\n return true;\n }\n }\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2.return) {\n _iterator2.return();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n\n return false;\n});\n\nvar getSignal = exports.getSignal = (0, _reselect.createSelector)(function (state) {\n return state.signal.get('signal');\n}, function (signal) {\n return signal.get('order').map(function (id) {\n return signal.getIn(['data', id]);\n });\n});\n\nvar getModalEvents = exports.getModalEvents = (0, _reselect.createSelector)(function (eventQueueId) {\n return eventQueueId;\n}, function (eventQueueId) {\n return (0, _reselect.createSelector)(function (state) {\n return state.signal.getIn(['signal', 'eventQueue']);\n }, function (eventQueue) {\n return eventQueue.get(eventQueueId);\n });\n});\n\nvar getModalByEventQueueId = exports.getModalByEventQueueId = (0, _reselect.createSelector)(function (eventQueueId) {\n return eventQueueId;\n}, function (eventQueueId) {\n return (0, _reselect.createSelector)(function (state) {\n return state.signal.getIn(['signal', 'data']);\n }, function (data) {\n if (!data) {\n return null;\n }\n\n var _iteratorNormalCompletion3 = true;\n var _didIteratorError3 = false;\n var _iteratorError3 = undefined;\n\n try {\n for (var _iterator3 = data.valueSeq()[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {\n var value = _step3.value;\n\n if (value.get('eventHandlerId') === eventQueueId) {\n return value;\n }\n }\n } catch (err) {\n _didIteratorError3 = true;\n _iteratorError3 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion3 && _iterator3.return) {\n _iterator3.return();\n }\n } finally {\n if (_didIteratorError3) {\n throw _iteratorError3;\n }\n }\n }\n\n return null;\n });\n});\n\n//# sourceURL=webpack://ReduxSignal/./src/selectors.js?");
/***/ }),
/***/ "./src/utils.js":
/*!**********************!*\
!*** ./src/utils.js ***!
\**********************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.uid = uid;\nvar getSignalModalId = exports.getSignalModalId = function getSignalModalId(id) {\n return \"signal-\" + id;\n};\n\nfunction uid(len) {\n len = len || 7;\n return Math.random().toString(35).substr(2, len);\n}\n\n//# sourceURL=webpack://ReduxSignal/./src/utils.js?");
/***/ }),
/***/ "./src/withSignal.js":
/*!***************************!*\
!*** ./src/withSignal.js ***!
\***************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.withSignalPropTypes = undefined;\n\nvar _propTypes = __webpack_require__(/*! prop-types */ \"prop-types\");\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _reactRedux = __webpack_require__(/*! react-redux */ \"react-redux\");\n\nvar _actions = __webpack_require__(/*! ./actions */ \"./src/actions.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar withSignalPropTypes = exports.withSignalPropTypes = {\n createSignal: _propTypes2.default.func.isRequired,\n setModalState: _propTypes2.default.func.isRequired,\n signalEvent: _propTypes2.default.func.isRequired,\n showModal: _propTypes2.default.func.isRequired,\n hideModal: _propTypes2.default.func.isRequired\n};\n\nvar withSignal = function withSignal(Component) {\n var mapDispatchToProps = {\n createSignal: _actions.createSignal,\n setModalState: _actions.setModalState,\n signalEvent: _actions.signalEvent,\n showModal: _actions.showModal,\n hideModal: _actions.hideModal\n };\n\n return (0, _reactRedux.connect)(null, mapDispatchToProps)(Component);\n};\n\nexports.default = withSignal;\n\n//# sourceURL=webpack://ReduxSignal/./src/withSignal.js?");
/***/ }),
/***/ "immutable":
/*!******************************************************************************************************!*\
!*** external {"root":"Immutable","commonjs2":"immutable","commonjs":"immutable","amd":"immutable"} ***!
\******************************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports) {
eval("module.exports = __WEBPACK_EXTERNAL_MODULE_immutable__;\n\n//# sourceURL=webpack://ReduxSignal/external_%7B%22root%22:%22Immutable%22,%22commonjs2%22:%22immutable%22,%22commonjs%22:%22immutable%22,%22amd%22:%22immutable%22%7D?");
/***/ }),
/***/ "prop-types":
/*!*********************************************************************************************************!*\
!*** external {"root":"PropTypes","commonjs2":"prop-types","commonjs":"prop-types","amd":"prop-types"} ***!
\*********************************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports) {
eval("module.exports = __WEBPACK_EXTERNAL_MODULE_prop_types__;\n\n//# sourceURL=webpack://ReduxSignal/external_%7B%22root%22:%22PropTypes%22,%22commonjs2%22:%22prop-types%22,%22commonjs%22:%22prop-types%22,%22amd%22:%22prop-types%22%7D?");
/***/ }),
/***/ "react":
/*!**************************************************************************************!*\
!*** external {"root":"React","commonjs2":"react","commonjs":"react","amd":"react"} ***!
\**************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports) {
eval("module.exports = __WEBPACK_EXTERNAL_MODULE_react__;\n\n//# sourceURL=webpack://ReduxSignal/external_%7B%22root%22:%22React%22,%22commonjs2%22:%22react%22,%22commonjs%22:%22react%22,%22amd%22:%22react%22%7D?");
/***/ }),
/***/ "react-redux":
/*!*************************************************************************************************************!*\
!*** external {"root":"ReactRedux","commonjs2":"react-redux","commonjs":"react-redux","amd":"react-redux"} ***!
\*************************************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports) {
eval("module.exports = __WEBPACK_EXTERNAL_MODULE_react_redux__;\n\n//# sourceURL=webpack://ReduxSignal/external_%7B%22root%22:%22ReactRedux%22,%22commonjs2%22:%22react-redux%22,%22commonjs%22:%22react-redux%22,%22amd%22:%22react-redux%22%7D?");
/***/ }),
/***/ "reselect":
/*!********************************************************************************!*\
!*** external {"commonjs2":"reselect","commonjs":"reselect","amd":"reselect"} ***!
\********************************************************************************/
/*! no static exports found */
/***/ (function(module, exports) {
eval("module.exports = __WEBPACK_EXTERNAL_MODULE_reselect__;\n\n//# sourceURL=webpack://ReduxSignal/external_%7B%22commonjs2%22:%22reselect%22,%22commonjs%22:%22reselect%22,%22amd%22:%22reselect%22%7D?");
/***/ })
/******/ });
});