UNPKG

redux-form

Version:

A higher order component decorator for forms using Redux and React

1,517 lines (1,235 loc) 157 kB
(function webpackUniversalModuleDefinition(root, factory) { if(typeof exports === 'object' && typeof module === 'object') module.exports = factory(require("react")); else if(typeof define === 'function' && define.amd) define(["react"], factory); else if(typeof exports === 'object') exports["ReduxForm"] = factory(require("react")); else root["ReduxForm"] = factory(root["React"]); })(this, function(__WEBPACK_EXTERNAL_MODULE_3__) { 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] = { /******/ exports: {}, /******/ id: moduleId, /******/ loaded: false /******/ }; /******/ // Execute the module function /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); /******/ // Flag the module as loaded /******/ module.loaded = 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; /******/ // __webpack_public_path__ /******/ __webpack_require__.p = ""; /******/ // Load entry module and return exports /******/ return __webpack_require__(0); /******/ }) /************************************************************************/ /******/ ([ /* 0 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; exports.__esModule = true; exports.untouchWithKey = exports.untouch = exports.touchWithKey = exports.touch = exports.swapArrayValues = exports.stopSubmit = exports.stopAsyncValidation = exports.startSubmit = exports.startAsyncValidation = exports.reset = exports.propTypes = exports.initializeWithKey = exports.initialize = exports.getValues = exports.removeArrayValue = exports.reduxForm = exports.reducer = exports.focus = exports.destroy = exports.changeWithKey = exports.change = exports.blur = exports.addArrayValue = exports.actionTypes = undefined; var _react = __webpack_require__(3); var _react2 = _interopRequireDefault(_react); var _reactRedux = __webpack_require__(58); var _createAll2 = __webpack_require__(28); var _createAll3 = _interopRequireDefault(_createAll2); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var isNative = typeof window !== 'undefined' && window.navigator && window.navigator.product && window.navigator.product === 'ReactNative'; var _createAll = (0, _createAll3.default)(isNative, _react2.default, _reactRedux.connect); var actionTypes = _createAll.actionTypes; var addArrayValue = _createAll.addArrayValue; var blur = _createAll.blur; var change = _createAll.change; var changeWithKey = _createAll.changeWithKey; var destroy = _createAll.destroy; var focus = _createAll.focus; var reducer = _createAll.reducer; var reduxForm = _createAll.reduxForm; var removeArrayValue = _createAll.removeArrayValue; var getValues = _createAll.getValues; var initialize = _createAll.initialize; var initializeWithKey = _createAll.initializeWithKey; var propTypes = _createAll.propTypes; var reset = _createAll.reset; var startAsyncValidation = _createAll.startAsyncValidation; var startSubmit = _createAll.startSubmit; var stopAsyncValidation = _createAll.stopAsyncValidation; var stopSubmit = _createAll.stopSubmit; var swapArrayValues = _createAll.swapArrayValues; var touch = _createAll.touch; var touchWithKey = _createAll.touchWithKey; var untouch = _createAll.untouch; var untouchWithKey = _createAll.untouchWithKey; exports.actionTypes = actionTypes; exports.addArrayValue = addArrayValue; exports.blur = blur; exports.change = change; exports.changeWithKey = changeWithKey; exports.destroy = destroy; exports.focus = focus; exports.reducer = reducer; exports.reduxForm = reduxForm; exports.removeArrayValue = removeArrayValue; exports.getValues = getValues; exports.initialize = initialize; exports.initializeWithKey = initializeWithKey; exports.propTypes = propTypes; exports.reset = reset; exports.startAsyncValidation = startAsyncValidation; exports.startSubmit = startSubmit; exports.stopAsyncValidation = stopAsyncValidation; exports.stopSubmit = stopSubmit; exports.swapArrayValues = swapArrayValues; exports.touch = touch; exports.touchWithKey = touchWithKey; exports.untouch = untouch; exports.untouchWithKey = untouchWithKey; /***/ }, /* 1 */ /***/ function(module, exports) { 'use strict'; exports.__esModule = true; exports.makeFieldValue = makeFieldValue; exports.isFieldValue = isFieldValue; var flag = '_isFieldValue'; var isObject = function isObject(object) { return typeof object === 'object'; }; function makeFieldValue(object) { if (object && isObject(object)) { Object.defineProperty(object, flag, { value: true }); } return object; } function isFieldValue(object) { return !!(object && isObject(object) && object[flag]); } /***/ }, /* 2 */ /***/ function(module, exports) { 'use strict'; exports.__esModule = true; exports.default = isValid; function isValid(error) { if (Array.isArray(error)) { return error.reduce(function (valid, errorValue) { return valid && isValid(errorValue); }, true); } if (error && typeof error === 'object') { return Object.keys(error).reduce(function (valid, key) { return valid && isValid(error[key]); }, true); } return !error; } /***/ }, /* 3 */ /***/ function(module, exports) { module.exports = __WEBPACK_EXTERNAL_MODULE_3__; /***/ }, /* 4 */ /***/ function(module, exports) { 'use strict'; exports.__esModule = true; var ADD_ARRAY_VALUE = exports.ADD_ARRAY_VALUE = 'redux-form/ADD_ARRAY_VALUE'; var BLUR = exports.BLUR = 'redux-form/BLUR'; var CHANGE = exports.CHANGE = 'redux-form/CHANGE'; var DESTROY = exports.DESTROY = 'redux-form/DESTROY'; var FOCUS = exports.FOCUS = 'redux-form/FOCUS'; var INITIALIZE = exports.INITIALIZE = 'redux-form/INITIALIZE'; var REMOVE_ARRAY_VALUE = exports.REMOVE_ARRAY_VALUE = 'redux-form/REMOVE_ARRAY_VALUE'; var RESET = exports.RESET = 'redux-form/RESET'; var START_ASYNC_VALIDATION = exports.START_ASYNC_VALIDATION = 'redux-form/START_ASYNC_VALIDATION'; var START_SUBMIT = exports.START_SUBMIT = 'redux-form/START_SUBMIT'; var STOP_ASYNC_VALIDATION = exports.STOP_ASYNC_VALIDATION = 'redux-form/STOP_ASYNC_VALIDATION'; var STOP_SUBMIT = exports.STOP_SUBMIT = 'redux-form/STOP_SUBMIT'; var SUBMIT_FAILED = exports.SUBMIT_FAILED = 'redux-form/SUBMIT_FAILED'; var SWAP_ARRAY_VALUES = exports.SWAP_ARRAY_VALUES = 'redux-form/SWAP_ARRAY_VALUES'; var TOUCH = exports.TOUCH = 'redux-form/TOUCH'; var UNTOUCH = exports.UNTOUCH = 'redux-form/UNTOUCH'; /***/ }, /* 5 */ /***/ function(module, exports) { "use strict"; exports.__esModule = true; var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; exports.default = mapValues; /** * Maps all the values in the given object through the given function and saves them, by key, to a result object */ function mapValues(obj, fn) { return obj ? Object.keys(obj).reduce(function (accumulator, key) { var _extends2; return _extends({}, accumulator, (_extends2 = {}, _extends2[key] = fn(obj[key], key), _extends2)); }, {}) : obj; } /***/ }, /* 6 */ /***/ function(module, exports) { module.exports = isPromise; function isPromise(obj) { return !!obj && (typeof obj === 'object' || typeof obj === 'function') && typeof obj.then === 'function'; } /***/ }, /* 7 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; exports.__esModule = true; exports.untouch = exports.touch = exports.swapArrayValues = exports.submitFailed = exports.stopSubmit = exports.stopAsyncValidation = exports.startSubmit = exports.startAsyncValidation = exports.reset = exports.removeArrayValue = exports.initialize = exports.focus = exports.destroy = exports.change = exports.blur = exports.addArrayValue = undefined; var _actionTypes = __webpack_require__(4); var addArrayValue = exports.addArrayValue = function addArrayValue(path, value, index, fields) { return { type: _actionTypes.ADD_ARRAY_VALUE, path: path, value: value, index: index, fields: fields }; }; var blur = exports.blur = function blur(field, value) { return { type: _actionTypes.BLUR, field: field, value: value }; }; var change = exports.change = function change(field, value) { return { type: _actionTypes.CHANGE, field: field, value: value }; }; var destroy = exports.destroy = function destroy() { return { type: _actionTypes.DESTROY }; }; var focus = exports.focus = function focus(field) { return { type: _actionTypes.FOCUS, field: field }; }; var initialize = exports.initialize = function initialize(data, fields) { if (!Array.isArray(fields)) { throw new Error('must provide fields array to initialize() action creator'); } return { type: _actionTypes.INITIALIZE, data: data, fields: fields }; }; var removeArrayValue = exports.removeArrayValue = function removeArrayValue(path, index) { return { type: _actionTypes.REMOVE_ARRAY_VALUE, path: path, index: index }; }; var reset = exports.reset = function reset() { return { type: _actionTypes.RESET }; }; var startAsyncValidation = exports.startAsyncValidation = function startAsyncValidation(field) { return { type: _actionTypes.START_ASYNC_VALIDATION, field: field }; }; var startSubmit = exports.startSubmit = function startSubmit() { return { type: _actionTypes.START_SUBMIT }; }; var stopAsyncValidation = exports.stopAsyncValidation = function stopAsyncValidation(errors) { return { type: _actionTypes.STOP_ASYNC_VALIDATION, errors: errors }; }; var stopSubmit = exports.stopSubmit = function stopSubmit(errors) { return { type: _actionTypes.STOP_SUBMIT, errors: errors }; }; var submitFailed = exports.submitFailed = function submitFailed() { return { type: _actionTypes.SUBMIT_FAILED }; }; var swapArrayValues = exports.swapArrayValues = function swapArrayValues(path, indexA, indexB) { return { type: _actionTypes.SWAP_ARRAY_VALUES, path: path, indexA: indexA, indexB: indexB }; }; var touch = exports.touch = function touch() { for (var _len = arguments.length, fields = Array(_len), _key = 0; _key < _len; _key++) { fields[_key] = arguments[_key]; } return { type: _actionTypes.TOUCH, fields: fields }; }; var untouch = exports.untouch = function untouch() { for (var _len2 = arguments.length, fields = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { fields[_key2] = arguments[_key2]; } return { type: _actionTypes.UNTOUCH, fields: fields }; }; /***/ }, /* 8 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; exports.__esModule = true; var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; exports.default = bindActionData; var _mapValues = __webpack_require__(5); var _mapValues2 = _interopRequireDefault(_mapValues); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } /** * Adds additional properties to the results of the function or map of functions passed */ function bindActionData(action, data) { if (typeof action === 'function') { return function () { return _extends({}, action.apply(undefined, arguments), data); }; } if (typeof action === 'object') { return (0, _mapValues2.default)(action, function (value) { return bindActionData(value, data); }); } return action; } /***/ }, /* 9 */ /***/ function(module, exports) { 'use strict'; exports.__esModule = true; var dataKey = exports.dataKey = 'value'; var createOnDragStart = function createOnDragStart(name, getValue) { return function (event) { event.dataTransfer.setData(dataKey, getValue()); }; }; exports.default = createOnDragStart; /***/ }, /* 10 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; exports.__esModule = true; var _isEvent = __webpack_require__(11); var _isEvent2 = _interopRequireDefault(_isEvent); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var getSelectedValues = function getSelectedValues(options) { var result = []; if (options) { for (var index = 0; index < options.length; index++) { var option = options[index]; if (option.selected) { result.push(option.value); } } } return result; }; var getValue = function getValue(event, isReactNative) { if ((0, _isEvent2.default)(event)) { if (!isReactNative && event.nativeEvent && event.nativeEvent.text !== undefined) { return event.nativeEvent.text; } if (isReactNative && event.nativeEvent !== undefined) { return event.nativeEvent.text; } var _event$target = event.target; var type = _event$target.type; var value = _event$target.value; var checked = _event$target.checked; var files = _event$target.files; var dataTransfer = event.dataTransfer; if (type === 'checkbox') { return checked; } if (type === 'file') { return files || dataTransfer && dataTransfer.files; } if (type === 'select-multiple') { return getSelectedValues(event.target.options); } return value; } // not an event, so must be either our value or an object containing our value in the 'value' key return event && typeof event === 'object' && event.value !== undefined ? event.value : // extract value from { value: value } structure. https://github.com/nikgraf/belle/issues/58 event; }; exports.default = getValue; /***/ }, /* 11 */ /***/ function(module, exports) { "use strict"; exports.__esModule = true; var isEvent = function isEvent(candidate) { return !!(candidate && candidate.stopPropagation && candidate.preventDefault); }; exports.default = isEvent; /***/ }, /* 12 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; exports.__esModule = true; var _isEvent = __webpack_require__(11); var _isEvent2 = _interopRequireDefault(_isEvent); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var silenceEvent = function silenceEvent(event) { var is = (0, _isEvent2.default)(event); if (is) { event.preventDefault(); } return is; }; exports.default = silenceEvent; /***/ }, /* 13 */ /***/ function(module, exports) { 'use strict'; exports.__esModule = true; exports.default = getDisplayName; function getDisplayName(Comp) { return Comp.displayName || Comp.name || 'Component'; } /***/ }, /* 14 */ /***/ function(module, exports) { 'use strict'; exports.__esModule = true; var getValue = function getValue(field, state, dest) { var dotIndex = field.indexOf('.'); var openIndex = field.indexOf('['); var closeIndex = field.indexOf(']'); if (openIndex > 0 && closeIndex !== openIndex + 1) { throw new Error('found [ not followed by ]'); } if (openIndex > 0 && (dotIndex < 0 || openIndex < dotIndex)) { (function () { // array field var key = field.substring(0, openIndex); var rest = field.substring(closeIndex + 1); if (rest[0] === '.') { rest = rest.substring(1); } var array = state && state[key] || []; if (rest) { if (!dest[key]) { dest[key] = []; } array.forEach(function (item, index) { if (!dest[key][index]) { dest[key][index] = {}; } getValue(rest, item, dest[key][index]); }); } else { dest[key] = array.map(function (item) { return item && item.value; }); } })(); } else if (dotIndex > 0) { // subobject field var key = field.substring(0, dotIndex); var rest = field.substring(dotIndex + 1); if (!dest[key]) { dest[key] = {}; } getValue(rest, state && state[key] || {}, dest[key]); } else { dest[field] = state[field] && state[field].value; } }; var getValues = function getValues(fields, state) { return fields.reduce(function (accumulator, field) { getValue(field, state, accumulator); return accumulator; }, {}); }; exports.default = getValues; /***/ }, /* 15 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; exports.__esModule = true; var _fieldValue = __webpack_require__(1); /** * A different version of getValues() that does not need the fields array */ var getValuesFromState = function getValuesFromState(state) { if (!state) { return state; } var keys = Object.keys(state); if (!keys.length) { return undefined; } return keys.reduce(function (accumulator, key) { var field = state[key]; if (field) { if (field.hasOwnProperty && field.hasOwnProperty('value')) { if (field.value !== undefined) { accumulator[key] = field.value; } } else if (Array.isArray(field)) { accumulator[key] = field.map(function (arrayField) { return (0, _fieldValue.isFieldValue)(arrayField) ? arrayField.value : getValuesFromState(arrayField); }); } else if (typeof field === 'object') { var result = getValuesFromState(field); if (result && Object.keys(result).length > 0) { accumulator[key] = result; } } } return accumulator; }, {}); }; exports.default = getValuesFromState; /***/ }, /* 16 */ /***/ function(module, exports) { 'use strict'; exports.__esModule = true; /** * Reads any potentially deep value from an object using dot and array syntax */ var read = function read(path, object) { if (!path || !object) { return object; } var dotIndex = path.indexOf('.'); if (dotIndex === 0) { return read(path.substring(1), object); } var openIndex = path.indexOf('['); var closeIndex = path.indexOf(']'); if (dotIndex >= 0 && (openIndex < 0 || dotIndex < openIndex)) { // iterate down object tree return read(path.substring(dotIndex + 1), object[path.substring(0, dotIndex)]); } if (openIndex >= 0 && (dotIndex < 0 || openIndex < dotIndex)) { if (closeIndex < 0) { throw new Error('found [ but no ]'); } var key = path.substring(0, openIndex); var index = path.substring(openIndex + 1, closeIndex); if (!index.length) { return object[key]; } if (openIndex === 0) { return read(path.substring(closeIndex + 1), object[index]); } if (!object[key]) { return undefined; } return read(path.substring(closeIndex + 1), object[key][index]); } return object[path]; }; exports.default = read; /***/ }, /* 17 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; exports.__esModule = true; exports.initialState = exports.globalErrorKey = undefined; var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; var _initialState, _behaviors; var _actionTypes = __webpack_require__(4); var _mapValues = __webpack_require__(5); var _mapValues2 = _interopRequireDefault(_mapValues); var _read = __webpack_require__(16); var _read2 = _interopRequireDefault(_read); var _write = __webpack_require__(18); var _write2 = _interopRequireDefault(_write); var _getValuesFromState = __webpack_require__(15); var _getValuesFromState2 = _interopRequireDefault(_getValuesFromState); var _initializeState = __webpack_require__(39); var _initializeState2 = _interopRequireDefault(_initializeState); var _resetState = __webpack_require__(45); var _resetState2 = _interopRequireDefault(_resetState); var _setErrors = __webpack_require__(46); var _setErrors2 = _interopRequireDefault(_setErrors); var _fieldValue = __webpack_require__(1); var _normalizeFields = __webpack_require__(41); var _normalizeFields2 = _interopRequireDefault(_normalizeFields); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _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; } var globalErrorKey = exports.globalErrorKey = '_error'; var initialState = exports.initialState = (_initialState = { _active: undefined, _asyncValidating: false }, _initialState[globalErrorKey] = undefined, _initialState._initialized = false, _initialState._submitting = false, _initialState._submitFailed = false, _initialState); var behaviors = (_behaviors = {}, _behaviors[_actionTypes.ADD_ARRAY_VALUE] = function (state, _ref) { var path = _ref.path; var index = _ref.index; var value = _ref.value; var fields = _ref.fields; var array = (0, _read2.default)(path, state); var stateCopy = _extends({}, state); var arrayCopy = array ? [].concat(array) : []; var newValue = value !== null && typeof value === 'object' ? (0, _initializeState2.default)(value, fields || Object.keys(value)) : (0, _fieldValue.makeFieldValue)({ value: value }); if (index === undefined) { arrayCopy.push(newValue); } else { arrayCopy.splice(index, 0, newValue); } return (0, _write2.default)(path, arrayCopy, stateCopy); }, _behaviors[_actionTypes.BLUR] = function (state, _ref2) { var field = _ref2.field; var value = _ref2.value; var touch = _ref2.touch; // remove _active from state var _active = state._active; var stateCopy = _objectWithoutProperties(state, ['_active']); // eslint-disable-line prefer-const return (0, _write2.default)(field, function (previous) { var result = _extends({}, previous); if (value !== undefined) { result.value = value; } if (touch) { result.touched = true; } return (0, _fieldValue.makeFieldValue)(result); }, stateCopy); }, _behaviors[_actionTypes.CHANGE] = function (state, _ref3) { var field = _ref3.field; var value = _ref3.value; var touch = _ref3.touch; return (0, _write2.default)(field, function (previous) { var _previous$value = _extends({}, previous, { value: value }); var asyncError = _previous$value.asyncError; var submitError = _previous$value.submitError; var result = _objectWithoutProperties(_previous$value, ['asyncError', 'submitError']); if (touch) { result.touched = true; } return (0, _fieldValue.makeFieldValue)(result); }, state); }, _behaviors[_actionTypes.DESTROY] = function () { return undefined; }, _behaviors[_actionTypes.FOCUS] = function (state, _ref4) { var field = _ref4.field; var stateCopy = (0, _write2.default)(field, function (previous) { return (0, _fieldValue.makeFieldValue)(_extends({}, previous, { visited: true })); }, state); stateCopy._active = field; return stateCopy; }, _behaviors[_actionTypes.INITIALIZE] = function (state, _ref5) { var _extends2; var data = _ref5.data; var fields = _ref5.fields; return _extends({}, (0, _initializeState2.default)(data, fields, state), (_extends2 = { _asyncValidating: false, _active: undefined }, _extends2[globalErrorKey] = undefined, _extends2._initialized = true, _extends2._submitting = false, _extends2._submitFailed = false, _extends2)); }, _behaviors[_actionTypes.REMOVE_ARRAY_VALUE] = function (state, _ref6) { var path = _ref6.path; var index = _ref6.index; var array = (0, _read2.default)(path, state); var stateCopy = _extends({}, state); var arrayCopy = array ? [].concat(array) : []; if (index === undefined) { arrayCopy.pop(); } else if (isNaN(index)) { delete arrayCopy[index]; } else { arrayCopy.splice(index, 1); } return (0, _write2.default)(path, arrayCopy, stateCopy); }, _behaviors[_actionTypes.RESET] = function (state) { var _extends3; return _extends({}, (0, _resetState2.default)(state), (_extends3 = { _active: undefined, _asyncValidating: false }, _extends3[globalErrorKey] = undefined, _extends3._initialized = state._initialized, _extends3._submitting = false, _extends3._submitFailed = false, _extends3)); }, _behaviors[_actionTypes.START_ASYNC_VALIDATION] = function (state, _ref7) { var field = _ref7.field; return _extends({}, state, { _asyncValidating: field || true }); }, _behaviors[_actionTypes.START_SUBMIT] = function (state) { return _extends({}, state, { _submitting: true }); }, _behaviors[_actionTypes.STOP_ASYNC_VALIDATION] = function (state, _ref8) { var _extends4; var errors = _ref8.errors; return _extends({}, (0, _setErrors2.default)(state, errors, 'asyncError'), (_extends4 = { _asyncValidating: false }, _extends4[globalErrorKey] = errors && errors[globalErrorKey], _extends4)); }, _behaviors[_actionTypes.STOP_SUBMIT] = function (state, _ref9) { var _extends5; var errors = _ref9.errors; return _extends({}, (0, _setErrors2.default)(state, errors, 'submitError'), (_extends5 = {}, _extends5[globalErrorKey] = errors && errors[globalErrorKey], _extends5._submitting = false, _extends5._submitFailed = !!(errors && Object.keys(errors).length), _extends5)); }, _behaviors[_actionTypes.SUBMIT_FAILED] = function (state) { return _extends({}, state, { _submitFailed: true }); }, _behaviors[_actionTypes.SWAP_ARRAY_VALUES] = function (state, _ref10) { var path = _ref10.path; var indexA = _ref10.indexA; var indexB = _ref10.indexB; var array = (0, _read2.default)(path, state); var arrayLength = array.length; if (indexA === indexB || isNaN(indexA) || isNaN(indexB) || indexA >= arrayLength || indexB >= arrayLength) { return state; // do nothing } var stateCopy = _extends({}, state); var arrayCopy = [].concat(array); arrayCopy[indexA] = array[indexB]; arrayCopy[indexB] = array[indexA]; return (0, _write2.default)(path, arrayCopy, stateCopy); }, _behaviors[_actionTypes.TOUCH] = function (state, _ref11) { var fields = _ref11.fields; return _extends({}, state, fields.reduce(function (accumulator, field) { return (0, _write2.default)(field, function (value) { return (0, _fieldValue.makeFieldValue)(_extends({}, value, { touched: true })); }, accumulator); }, state)); }, _behaviors[_actionTypes.UNTOUCH] = function (state, _ref12) { var fields = _ref12.fields; return _extends({}, state, fields.reduce(function (accumulator, field) { return (0, _write2.default)(field, function (value) { if (value) { var touched = value.touched; var rest = _objectWithoutProperties(value, ['touched']); return (0, _fieldValue.makeFieldValue)(rest); } return (0, _fieldValue.makeFieldValue)(value); }, accumulator); }, state)); }, _behaviors); var reducer = function reducer() { var state = arguments.length <= 0 || arguments[0] === undefined ? initialState : arguments[0]; var action = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1]; var behavior = behaviors[action.type]; return behavior ? behavior(state, action) : state; }; function formReducer() { var _extends11; var state = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0]; var action = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1]; var form = action.form; var key = action.key; var rest = _objectWithoutProperties(action, ['form', 'key']); // eslint-disable-line no-redeclare if (!form) { return state; } if (key) { var _extends8, _extends9; if (action.type === _actionTypes.DESTROY) { var _extends7; return _extends({}, state, (_extends7 = {}, _extends7[form] = state[form] && Object.keys(state[form]).reduce(function (accumulator, stateKey) { var _extends6; return stateKey === key ? accumulator : _extends({}, accumulator, (_extends6 = {}, _extends6[stateKey] = state[form][stateKey], _extends6)); }, {}), _extends7)); } return _extends({}, state, (_extends9 = {}, _extends9[form] = _extends({}, state[form], (_extends8 = {}, _extends8[key] = reducer((state[form] || {})[key], rest), _extends8)), _extends9)); } if (action.type === _actionTypes.DESTROY) { return Object.keys(state).reduce(function (accumulator, formName) { var _extends10; return formName === form ? accumulator : _extends({}, accumulator, (_extends10 = {}, _extends10[formName] = state[formName], _extends10)); }, {}); } return _extends({}, state, (_extends11 = {}, _extends11[form] = reducer(state[form], rest), _extends11)); } /** * Adds additional functionality to the reducer */ function decorate(target) { target.plugin = function plugin(reducers) { var _this = this; // use 'function' keyword to enable 'this' return decorate(function () { var state = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0]; var action = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1]; var result = _this(state, action); return _extends({}, result, (0, _mapValues2.default)(reducers, function (pluginReducer, key) { return pluginReducer(result[key] || initialState, action); })); }); }; target.normalize = function normalize(normalizers) { var _this2 = this; // use 'function' keyword to enable 'this' return decorate(function () { var state = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0]; var action = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1]; var result = _this2(state, action); return _extends({}, result, (0, _mapValues2.default)(normalizers, function (formNormalizers, form) { var runNormalize = function runNormalize(previous, currentResult) { var previousValues = (0, _getValuesFromState2.default)(_extends({}, initialState, previous)); var formResult = _extends({}, initialState, currentResult); var values = (0, _getValuesFromState2.default)(formResult); return (0, _normalizeFields2.default)(formNormalizers, formResult, previous, values, previousValues); }; if (action.key) { var _extends12; return _extends({}, result[form], (_extends12 = {}, _extends12[action.key] = runNormalize(state[form][action.key], result[form][action.key]), _extends12)); } return runNormalize(state[form], result[form]); })); }); }; return target; } exports.default = decorate(formReducer); /***/ }, /* 18 */ /***/ function(module, exports) { 'use strict'; exports.__esModule = true; var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; /** * Writes any potentially deep value from an object using dot and array syntax, * and returns a new copy of the object. */ var write = function write(path, value, object) { var _extends7; var dotIndex = path.indexOf('.'); if (dotIndex === 0) { return write(path.substring(1), value, object); } var openIndex = path.indexOf('['); var closeIndex = path.indexOf(']'); if (dotIndex >= 0 && (openIndex < 0 || dotIndex < openIndex)) { var _extends2; // is dot notation var key = path.substring(0, dotIndex); return _extends({}, object, (_extends2 = {}, _extends2[key] = write(path.substring(dotIndex + 1), value, object[key] || {}), _extends2)); } if (openIndex >= 0 && (dotIndex < 0 || openIndex < dotIndex)) { var _ret = function () { var _extends6; // is array notation if (closeIndex < 0) { throw new Error('found [ but no ]'); } var key = path.substring(0, openIndex); var index = path.substring(openIndex + 1, closeIndex); var array = object[key] || []; var rest = path.substring(closeIndex + 1); if (index) { var _extends4; // indexed array if (rest.length) { var _extends3; // need to keep recursing var dest = array[index] || {}; var arrayCopy = [].concat(array); arrayCopy[index] = write(rest, value, dest); return { v: _extends({}, object || {}, (_extends3 = {}, _extends3[key] = arrayCopy, _extends3)) }; } var copy = [].concat(array); copy[index] = typeof value === 'function' ? value(copy[index]) : value; return { v: _extends({}, object || {}, (_extends4 = {}, _extends4[key] = copy, _extends4)) }; } // indexless array if (rest.length) { var _extends5; // need to keep recursing if ((!array || !array.length) && typeof value === 'function') { return { v: object }; // don't even set a value under [key] } var _arrayCopy = array.map(function (dest) { return write(rest, value, dest); }); return { v: _extends({}, object || {}, (_extends5 = {}, _extends5[key] = _arrayCopy, _extends5)) }; } var result = void 0; if (Array.isArray(value)) { result = value; } else if (object[key]) { result = array.map(function (dest) { return typeof value === 'function' ? value(dest) : value; }); } else if (typeof value === 'function') { return { v: object }; // don't even set a value under [key] } else { result = value; } return { v: _extends({}, object || {}, (_extends6 = {}, _extends6[key] = result, _extends6)) }; }(); if (typeof _ret === "object") return _ret.v; } return _extends({}, object, (_extends7 = {}, _extends7[path] = typeof value === 'function' ? value(object[path]) : value, _extends7)); }; exports.default = write; /***/ }, /* 19 */ /***/ function(module, exports, __webpack_require__) { var pSlice = Array.prototype.slice; var objectKeys = __webpack_require__(52); var isArguments = __webpack_require__(51); var deepEqual = module.exports = function (actual, expected, opts) { if (!opts) opts = {}; // 7.1. All identical values are equivalent, as determined by ===. if (actual === expected) { return true; } else if (actual instanceof Date && expected instanceof Date) { return actual.getTime() === expected.getTime(); // 7.3. Other pairs that do not both pass typeof value == 'object', // equivalence is determined by ==. } else if (!actual || !expected || typeof actual != 'object' && typeof expected != 'object') { return opts.strict ? actual === expected : actual == expected; // 7.4. For all other Object pairs, including Array objects, equivalence is // determined by having the same number of owned properties (as verified // with Object.prototype.hasOwnProperty.call), the same set of keys // (although not necessarily the same order), equivalent values for every // corresponding key, and an identical 'prototype' property. Note: this // accounts for both named and indexed properties on Arrays. } else { return objEquiv(actual, expected, opts); } } function isUndefinedOrNull(value) { return value === null || value === undefined; } function isBuffer (x) { if (!x || typeof x !== 'object' || typeof x.length !== 'number') return false; if (typeof x.copy !== 'function' || typeof x.slice !== 'function') { return false; } if (x.length > 0 && typeof x[0] !== 'number') return false; return true; } function objEquiv(a, b, opts) { var i, key; if (isUndefinedOrNull(a) || isUndefinedOrNull(b)) return false; // an identical 'prototype' property. if (a.prototype !== b.prototype) return false; //~~~I've managed to break Object.keys through screwy arguments passing. // Converting to array solves the problem. if (isArguments(a)) { if (!isArguments(b)) { return false; } a = pSlice.call(a); b = pSlice.call(b); return deepEqual(a, b, opts); } if (isBuffer(a)) { if (!isBuffer(b)) { return false; } if (a.length !== b.length) return false; for (i = 0; i < a.length; i++) { if (a[i] !== b[i]) return false; } return true; } try { var ka = objectKeys(a), kb = objectKeys(b); } catch (e) {//happens when one is a string literal and the other isn't return false; } // having the same number of owned properties (keys incorporates // hasOwnProperty) if (ka.length != kb.length) return false; //the same set of keys (although not necessarily the same order), ka.sort(); kb.sort(); //~~~cheap key test for (i = ka.length - 1; i >= 0; i--) { if (ka[i] != kb[i]) return false; } //equivalent values for every corresponding key, and //~~~possibly expensive deep test for (i = ka.length - 1; i >= 0; i--) { key = ka[i]; if (!deepEqual(a[key], b[key], opts)) return false; } return typeof a === typeof b; } /***/ }, /* 20 */ /***/ function(module, exports) { /** * Copyright 2015, Yahoo! Inc. * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms. */ 'use strict'; var REACT_STATICS = { childContextTypes: true, contextTypes: true, defaultProps: true, displayName: true, getDefaultProps: true, mixins: true, propTypes: true, type: true }; var KNOWN_STATICS = { name: true, length: true, prototype: true, caller: true, arguments: true, arity: true }; module.exports = function hoistNonReactStatics(targetComponent, sourceComponent) { var keys = Object.getOwnPropertyNames(sourceComponent); for (var i=0; i<keys.length; ++i) { if (!REACT_STATICS[keys[i]] && !KNOWN_STATICS[keys[i]]) { try { targetComponent[keys[i]] = sourceComponent[keys[i]]; } catch (error) { } } } return targetComponent; }; /***/ }, /* 21 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; exports.__esModule = true; var _react = __webpack_require__(3); exports["default"] = _react.PropTypes.shape({ subscribe: _react.PropTypes.func.isRequired, dispatch: _react.PropTypes.func.isRequired, getState: _react.PropTypes.func.isRequired }); /***/ }, /* 22 */ /***/ function(module, exports) { "use strict"; exports.__esModule = true; exports["default"] = compose; /** * Composes single-argument functions from right to left. * * @param {...Function} funcs The functions to compose. * @returns {Function} A function obtained by composing functions from right to * left. For example, compose(f, g, h) is identical to arg => f(g(h(arg))). */ function compose() { for (var _len = arguments.length, funcs = Array(_len), _key = 0; _key < _len; _key++) { funcs[_key] = arguments[_key]; } return function () { if (funcs.length === 0) { return arguments.length <= 0 ? undefined : arguments[0]; } var last = funcs[funcs.length - 1]; var rest = funcs.slice(0, -1); return rest.reduceRight(function (composed, f) { return f(composed); }, last.apply(undefined, arguments)); }; } /***/ }, /* 23 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; exports.__esModule = true; exports.ActionTypes = undefined; exports["default"] = createStore; var _isPlainObject = __webpack_require__(26); var _isPlainObject2 = _interopRequireDefault(_isPlainObject); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } /** * These are private action types reserved by Redux. * For any unknown actions, you must return the current state. * If the current state is undefined, you must return the initial state. * Do not reference these action types directly in your code. */ var ActionTypes = exports.ActionTypes = { INIT: '@@redux/INIT' }; /** * Creates a Redux store that holds the state tree. * The only way to change the data in the store is to call `dispatch()` on it. * * There should only be a single store in your app. To specify how different * parts of the state tree respond to actions, you may combine several reducers * into a single reducer function by using `combineReducers`. * * @param {Function} reducer A function that returns the next state tree, given * the current state tree and the action to handle. * * @param {any} [initialState] The initial state. You may optionally specify it * to hydrate the state from the server in universal apps, or to restore a * previously serialized user session. * If you use `combineReducers` to produce the root reducer function, this must be * an object with the same shape as `combineReducers` keys. * * @param {Function} enhancer The store enhancer. You may optionally specify it * to enhance the store with third-party capabilities such as middleware, * time travel, persistence, etc. The only store enhancer that ships with Redux * is `applyMiddleware()`. * * @returns {Store} A Redux store that lets you read the state, dispatch actions * and subscribe to changes. */ function createStore(reducer, initialState, enhancer) { if (typeof initialState === 'function' && typeof enhancer === 'undefined') { enhancer = initialState; initialState = undefined; } if (typeof enhancer !== 'undefined') { if (typeof enhancer !== 'function') { throw new Error('Expected the enhancer to be a function.'); } return enhancer(createStore)(reducer, initialState); } if (typeof reducer !== 'function') { throw new Error('Expected the reducer to be a function.'); } var currentReducer = reducer; var currentState = initialState; var currentListeners = []; var nextListeners = currentListeners; var isDispatching = false; function ensureCanMutateNextListeners() { if (nextListeners === currentListeners) { nextListeners = currentListeners.slice(); } } /** * Reads the state tree managed by the store. * * @returns {any} The current state tree of your application. */ function getState() { return currentState; } /** * Adds a change listener. It will be called any time an action is dispatched, * and some part of the state tree may potentially have changed. You may then * call `getState()` to read the current state tree inside the callback. * * You may call `dispatch()` from a change listener, with the following * caveats: * * 1. The subscriptions are snapshotted just before every `dispatch()` call. * If you subscribe or unsubscribe while the listeners are being invoked, this * will not have any effect on the `dispatch()` that is currently in progress. * However, the next `dispatch()` call, whether nested or not, will use a more * recent snapshot of the subscription list. * * 2. The listener should not expect to see all states changes, as the state * might have been updated multiple times during a nested `dispatch()` before * the listener is called. It is, however, guaranteed that all subscribers * registered before the `dispatch()` started will be called with the latest * state by the time it exits. * * @param {Function} listener A callback to be invoked on every dispatch. * @returns {Function} A function to remove this change listener. */ function subscribe(listener) { if (typeof listener !== 'function') { throw new Error('Expected listener to be a function.'); } var isSubscribed = true; ensureCanMutateNextListeners(); nextListeners.push(listener); return function unsubscribe() { if (!isSubscribed) { return; } isSubscribed = false; ensureCanMutateNextListeners(); var index = nextListeners.indexOf(listener); nextListeners.splice(index, 1); }; } /** * Dispatches an action. It is the only way to trigger a state change. * * The `reducer` function, used to create the store, will be called with the * current state tree and the given `action`. Its return value will * be considered the **next** state of the tree, and the change listeners * will be notified. * * The base implementation only supports plain object actions. If you want to * dispatch a Promise, an Observable, a thunk, or something else, you need to * wrap your store creating function into the corresponding middleware. For * example, see the documentation for the `redux-thunk` package. Even the * middleware will eventually dispatch plain object actions using this method. * * @param {Object} action A plain object representing “what changed”. It is * a good idea to keep actions serializable so you can record and replay user * sessions, or use the time travelling `redux-devtools`. An action must have * a `type` property which may not be `undefined`. It is a good idea to use * string constants for action types. * * @returns {Object} For convenience, the same action object you dispatched. * * Note that, if you use a custom middleware, it may wrap `dispatch()` to * return something else (for example, a Promise you can await). */ function dispatch(action) { if (!(0, _isPlainObject2["default"])(action)) { throw new Error('Actions must be plain objects. ' + 'Use custom middleware for async actions.'); } if (typeof action.type === 'undefined') { throw new Error('Actions may not have an undefined "type" property. ' + 'Have you misspelled a constant?'); } if (isDispatching) { throw new Error('Reducers may not dispatch actions.'); } try { isDispatching = true; currentState = currentReducer(currentState, action); } finally { isDispatching = false; } var listeners = currentListeners = nextListeners; for (var i = 0; i < listeners.length; i++) { listeners[i](); } return action; } /** * Replaces the reducer currently used by the store to calculate the state. * * You might need this if your app implements code splitting and you want to * load some of the reducers dynamically. You might also need this if you * implement a hot reloading mechanism for Redux. * * @param {Function} nextReducer The reducer for the store to use instead. * @returns {void} */ function replaceReducer(nextReducer) { if (typeof nextReducer !== 'function') { throw new Error('Expected the nextReducer to be a function.'); } currentReducer = nextReducer; dispatch({ type: ActionTypes.INIT }); } // When a store is created, an "INIT" action is dispatched so that every // reducer returns their initial state. This effectively populates // the initial state tree. dispatch({ type: ActionTypes.INIT }); return { dispatch: dispatch, subscribe: subscribe, getState: getState, replaceReducer: replaceReducer }; } /***/ }, /* 24 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; exports.__esModule = true; exports.compose = exports.applyMiddleware = exports.bindActionCreators = exports.combineReducers = exports.createStore = undefined; var _createStore = __webpack_require__(23); var _createStore2 = _interopRequireDefault(_createStore); var _combineReducers = __webpack_require__(66); var _combineReducers2 = _interopRequireDefault(_combineReducers); var _bindActionCreators = __webpack_require__(65); var _bindActionCreators2 = _interopRequireDefault(_bindActionCreators); var _applyMiddleware = __webpack_require__(64); var _applyMiddleware2 = _interopRequireDefault(_applyMiddleware); var _compose = __webpack_require__(22); var _compose2 = _interopRequireDefault(_compose); var _warning = __webpack_require__(25); var _warning2 = _interopRequireDefault(_warning); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } /* * This is a dummy function to check if the function name has been altered by minification. * If the function has been minified and NODE_ENV !== 'production', warn the us