UNPKG

redux-signal

Version:

A scalable solution for modals using React and Redux

356 lines 63.1 kB
(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?");

/***/ })

/******/ });
});