diff --git a/.gitignore b/.gitignore index 491fc359..178ad9ca 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,2 @@ node_modules -lib +.idea/* diff --git a/lib/Decorator.js b/lib/Decorator.js new file mode 100644 index 00000000..9b69fb5e --- /dev/null +++ b/lib/Decorator.js @@ -0,0 +1,33 @@ +'use strict'; + +var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; + +var React = global.React || require('react'); +var createReactClass = require('create-react-class'); +var Mixin = require('./Mixin.js'); +module.exports = function () { + return function (Component) { + return createReactClass({ + mixins: [Mixin], + render: function render() { + return React.createElement(Component, _extends({ + setValidations: this.setValidations, + setValue: this.setValue, + resetValue: this.resetValue, + getValue: this.getValue, + hasValue: this.hasValue, + getErrorMessage: this.getErrorMessage, + getErrorMessages: this.getErrorMessages, + isFormDisabled: this.isFormDisabled, + isValid: this.isValid, + isPristine: this.isPristine, + isFormSubmitted: this.isFormSubmitted, + isRequired: this.isRequired, + showRequired: this.showRequired, + showError: this.showError, + isValidValue: this.isValidValue + }, this.props)); + } + }); + }; +}; \ No newline at end of file diff --git a/lib/HOC.js b/lib/HOC.js new file mode 100644 index 00000000..10a89fc6 --- /dev/null +++ b/lib/HOC.js @@ -0,0 +1,44 @@ +'use strict'; + +var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; + +var React = global.React || require('react'); +var createReactClass = require('create-react-class'); +var Mixin = require('./Mixin.js'); +module.exports = function (Component) { + return createReactClass({ + displayName: 'Formsy(' + getDisplayName(Component) + ')', + mixins: [Mixin], + + render: function render() { + var innerRef = this.props.innerRef; + + var propsForElement = _extends({ + setValidations: this.setValidations, + setValue: this.setValue, + resetValue: this.resetValue, + getValue: this.getValue, + hasValue: this.hasValue, + getErrorMessage: this.getErrorMessage, + getErrorMessages: this.getErrorMessages, + isFormDisabled: this.isFormDisabled, + isValid: this.isValid, + isPristine: this.isPristine, + isFormSubmitted: this.isFormSubmitted, + isRequired: this.isRequired, + showRequired: this.showRequired, + showError: this.showError, + isValidValue: this.isValidValue + }, this.props); + + if (innerRef) { + propsForElement.ref = innerRef; + } + return React.createElement(Component, propsForElement); + } + }); +}; + +function getDisplayName(Component) { + return Component.displayName || Component.name || (typeof Component === 'string' ? Component : 'Component'); +} \ No newline at end of file diff --git a/lib/Mixin.js b/lib/Mixin.js new file mode 100644 index 00000000..f6814410 --- /dev/null +++ b/lib/Mixin.js @@ -0,0 +1,180 @@ +'use strict'; + +var PropTypes = require('prop-types'); +var utils = require('./utils.js'); +var React = global.React || require('react'); + +var convertValidationsToObject = function convertValidationsToObject(validations) { + + if (typeof validations === 'string') { + + return validations.split(/\,(?![^{\[]*[}\]])/g).reduce(function (validations, validation) { + var args = validation.split(':'); + var validateMethod = args.shift(); + + args = args.map(function (arg) { + try { + return JSON.parse(arg); + } catch (e) { + return arg; // It is a string if it can not parse it + } + }); + + if (args.length > 1) { + throw new Error('Formsy does not support multiple args on string validations. Use object format of validations instead.'); + } + + validations[validateMethod] = args.length ? args[0] : true; + return validations; + }, {}); + } + + return validations || {}; +}; + +module.exports = { + getInitialState: function getInitialState() { + return { + _value: this.props.value, + _isRequired: false, + _isValid: !this.props.required, + _isPristine: true, + _pristineValue: this.props.value, + _validationError: [], + _externalError: null, + _formSubmitted: false + }; + }, + contextTypes: { + formsy: PropTypes.object // What about required? + }, + getDefaultProps: function getDefaultProps() { + return { + validationError: '', + validationErrors: {} + }; + }, + + componentWillMount: function componentWillMount() { + this.canSetValue = true; + var configure = function () { + this.setValidations(this.props.validations, this.props.required); + + // Pass a function instead? + this.context.formsy.attachToForm(this); + //this.props._attachToForm(this); + }.bind(this); + + if (!this.props.name) { + throw new Error('Form Input requires a name property when used'); + } + + /* + if (!this.props._attachToForm) { + return setTimeout(function () { + if (!this.isMounted()) return; + if (!this.props._attachToForm) { + throw new Error('Form Mixin requires component to be nested in a Form'); + } + configure(); + }.bind(this), 0); + } + */ + configure(); + }, + + // We have to make the validate method is kept when new props are added + componentWillReceiveProps: function componentWillReceiveProps(nextProps) { + this.setValidations(nextProps.validations, nextProps.required); + }, + + componentDidUpdate: function componentDidUpdate(prevProps) { + + // If the value passed has changed, set it. If value is not passed it will + // internally update, and this will never run + if (!utils.isSame(this.props.value, prevProps.value)) { + this.setValue(this.props.value); + } + + // If validations or required is changed, run a new validation + if (!utils.isSame(this.props.validations, prevProps.validations) || !utils.isSame(this.props.required, prevProps.required)) { + this.context.formsy.validate(this); + } + }, + + // Detach it when component unmounts + componentWillUnmount: function componentWillUnmount() { + this.canSetValue = false; + this.context.formsy.detachFromForm(this); + //this.props._detachFromForm(this); + }, + + setValidations: function setValidations(validations, required) { + + // Add validations to the store itself as the props object can not be modified + this._validations = convertValidationsToObject(validations) || {}; + this._requiredValidations = required === true ? { isDefaultRequiredValue: true } : convertValidationsToObject(required); + }, + + // We validate after the value has been set + setValue: function setValue(value) { + if (!this.canSetValue) { + return; + } + this.setState({ + _value: value, + _isPristine: false + }, function () { + this.context.formsy.validate(this); + //this.props._validate(this); + }.bind(this)); + }, + resetValue: function resetValue() { + this.setState({ + _value: this.state._pristineValue, + _isPristine: true + }, function () { + this.context.formsy.validate(this); + //this.props._validate(this); + }); + }, + getValue: function getValue() { + return this.state._value; + }, + hasValue: function hasValue() { + return this.state._value !== ''; + }, + getErrorMessage: function getErrorMessage() { + var messages = this.getErrorMessages(); + return messages.length ? messages[0] : null; + }, + getErrorMessages: function getErrorMessages() { + return !this.isValid() || this.showRequired() ? this.state._externalError || this.state._validationError || [] : []; + }, + isFormDisabled: function isFormDisabled() { + return this.context.formsy.isFormDisabled(); + //return this.props._isFormDisabled(); + }, + isValid: function isValid() { + return this.state._isValid; + }, + isPristine: function isPristine() { + return this.state._isPristine; + }, + isFormSubmitted: function isFormSubmitted() { + return this.state._formSubmitted; + }, + isRequired: function isRequired() { + return !!this.props.required; + }, + showRequired: function showRequired() { + return this.state._isRequired; + }, + showError: function showError() { + return !this.showRequired() && !this.isValid(); + }, + isValidValue: function isValidValue(value) { + return this.context.formsy.isValidValue.call(null, this, value); + //return this.props._isValidValue.call(null, this, value); + } +}; \ No newline at end of file diff --git a/lib/main.js b/lib/main.js new file mode 100644 index 00000000..23598011 --- /dev/null +++ b/lib/main.js @@ -0,0 +1,513 @@ +'use strict'; + +var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; + +var _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"); } }; }(); + +var _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; }; + +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 PropTypes = require('prop-types'); +var React = global.React || require('react'); +var createReactClass = require('create-react-class'); +var Formsy = {}; +var validationRules = require('./validationRules.js'); +var formDataToObject = require('form-data-to-object'); +var utils = require('./utils.js'); +var Mixin = require('./Mixin.js'); +var HOC = require('./HOC.js'); +var Decorator = require('./Decorator.js'); +var options = {}; +var emptyArray = []; + +Formsy.Mixin = Mixin; +Formsy.HOC = HOC; +Formsy.Decorator = Decorator; + +Formsy.defaults = function (passedOptions) { + options = passedOptions; +}; + +Formsy.addValidationRule = function (name, func) { + validationRules[name] = func; +}; + +Formsy.Form = createReactClass({ + displayName: 'Formsy', + getInitialState: function getInitialState() { + return { + isValid: true, + isSubmitting: false, + canChange: false + }; + }, + getDefaultProps: function getDefaultProps() { + return { + onSuccess: function onSuccess() {}, + onError: function onError() {}, + onSubmit: function onSubmit() {}, + onValidSubmit: function onValidSubmit() {}, + onInvalidSubmit: function onInvalidSubmit() {}, + onValid: function onValid() {}, + onInvalid: function onInvalid() {}, + onChange: function onChange() {}, + validationErrors: null, + preventExternalInvalidation: false + }; + }, + + childContextTypes: { + formsy: PropTypes.object + }, + getChildContext: function getChildContext() { + var _this = this; + + return { + formsy: { + attachToForm: this.attachToForm, + detachFromForm: this.detachFromForm, + validate: this.validate, + isFormDisabled: this.isFormDisabled, + isValidValue: function isValidValue(component, value) { + return _this.runValidation(component, value).then(function (info) { + return info.isValid; + }); + } + } + }; + }, + + // Add a map to store the inputs of the form, a model to store + // the values of the form and register child inputs + componentWillMount: function componentWillMount() { + this.inputs = []; + this.cachedValues = {}; + }, + + componentDidMount: function componentDidMount() { + this.validateForm(); + }, + + componentWillUpdate: function componentWillUpdate() { + // Keep a reference to input names before form updates, + // to check if inputs has changed after render + this.prevInputNames = this.inputs.map(function (component) { + return component.props.name; + }); + }, + + componentDidUpdate: function componentDidUpdate() { + + if (this.props.validationErrors && _typeof(this.props.validationErrors) === 'object' && Object.keys(this.props.validationErrors).length > 0) { + this.setInputValidationErrors(this.props.validationErrors); + } + + var newInputNames = this.inputs.map(function (component) { + return component.props.name; + }); + if (utils.arraysDiffer(this.prevInputNames, newInputNames)) { + this.validateForm(); + } + }, + + shouldCache: function shouldCache() { + return this.props.cacheValues; + }, + + // Allow resetting to specified data + reset: function reset(data) { + this.setFormPristine(true); + this.resetModel(data); + }, + + // Update model, submit to url prop and send the model + submit: function submit(event) { + + event && event.preventDefault(); + + // Trigger form as not pristine. + // If any inputs have not been touched yet this will make them dirty + // so validation becomes visible (if based on isPristine) + this.setFormPristine(false); + var model = this.getModel(); + this.props.onSubmit(model, this.resetModel, this.updateInputsWithError); + this.state.isValid ? this.props.onValidSubmit(model, this.resetModel, this.updateInputsWithError) : this.props.onInvalidSubmit(model, this.resetModel, this.updateInputsWithError); + }, + + mapModel: function mapModel(model) { + + if (this.props.mapping) { + return this.props.mapping(model); + } else { + return formDataToObject.toObj(Object.keys(model).reduce(function (mappedModel, key) { + + var keyArray = key.split('.'); + var base = mappedModel; + while (keyArray.length) { + var currentKey = keyArray.shift(); + base = base[currentKey] = keyArray.length ? base[currentKey] || {} : model[key]; + } + + return mappedModel; + }, {})); + } + }, + + getModel: function getModel() { + var currentValues = this.getCurrentValues(); + return this.mapModel(currentValues); + }, + + // Reset each key in the model to the original / initial / specified value + resetModel: function resetModel(data) { + this.inputs.forEach(function (component) { + var name = component.props.name; + if (data && data.hasOwnProperty(name)) { + component.setValue(data[name]); + } else { + component.resetValue(); + } + }); + this.validateForm(); + }, + + setInputValidationErrors: function setInputValidationErrors(errors) { + this.inputs.forEach(function (component) { + var name = component.props.name; + if (!(name in errors)) { + return; + } + var args = [{ + _isValid: errors[name] === null, + _validationError: typeof errors[name] === 'string' ? [errors[name]] : errors[name] + }]; + component.setState.apply(component, args); + }); + }, + + // Checks if the values have changed from their initial value + isChanged: function isChanged() { + return !utils.isSame(this.getPristineValues(), this.getCurrentValues()); + }, + + getPristineValues: function getPristineValues() { + return this.inputs.reduce(function (data, component) { + var name = component.props.name; + data[name] = component.props.value; + return data; + }, {}); + }, + + // Go through errors from server and grab the components + // stored in the inputs map. Change their state to invalid + // and set the serverError message + updateInputsWithError: function updateInputsWithError(errors) { + var _this2 = this; + + Object.keys(errors).forEach(function (name, index) { + var component = utils.find(_this2.inputs, function (component) { + return component.props.name === name; + }); + if (!component) { + throw new Error('You are trying to update an input that does not exist. ' + 'Verify errors object with input names. ' + JSON.stringify(errors)); + } + var args = [{ + _isValid: _this2.props.preventExternalInvalidation || false, + _externalError: typeof errors[name] === 'string' ? [errors[name]] : errors[name] + }]; + component.setState.apply(component, args); + }); + }, + + isFormDisabled: function isFormDisabled() { + return this.props.disabled; + }, + + getCurrentValues: function getCurrentValues() { + return this.inputs.reduce(function (data, component) { + var name = component.props.name; + data[name] = component.state._value; + return data; + }, {}); + }, + + setFormPristine: function setFormPristine(isPristine) { + this.setState({ + _formSubmitted: !isPristine + }); + + // Iterate through each component and set it as pristine + // or "dirty". + this.inputs.forEach(function (component, index) { + component.setState({ + _formSubmitted: !isPristine, + _isPristine: isPristine + }); + }); + }, + + // Use the binded values and the actual input value to + // validate the input and set its state. Then check the + // state of the form itself + validate: function validate(component) { + var _this3 = this; + + // Trigger onChange + if (this.state.canChange) { + this.props.onChange(this.getModel(), this.isChanged()); + } + + this.runValidation(component).then(function (validation) { + if (!validation) { + return; + } + // Run through the validations, split them up and call + // the validator IF there is a value or it is required + component.setState({ + _isValid: validation.isValid, + _isRequired: validation.isRequired, + _validationError: validation.error, + _externalError: null + }, _this3.validateForm); + }); + }, + + // Checks validation on current value or a passed value + runValidation: function runValidation(component, value) { + var _this4 = this; + + var currentValues = this.getCurrentValues(); + var validationErrors = component.props.validationErrors; + var validationError = component.props.validationError; + value = arguments.length === 2 ? value : component.state._value; + + if (this.shouldCache() && this.cachedValues[component.props.name] === value) { + var isValid = component.isValid(); + var isRequired = component.showRequired(); + var error = [component.getErrorMessage()]; + return new Promise(function (resolve, reject) { + resolve({ + isValid: isValid, + isRequired: isRequired, + error: error + }); + }); + } + + this.cachedValues[component.props.name] = value; + + return Promise.all([this.runRules(value, currentValues, component._validations), this.runRules(value, currentValues, component._requiredValidations)]).then(function (_ref) { + var _ref2 = _slicedToArray(_ref, 2), + validationResults = _ref2[0], + requiredResults = _ref2[1]; + + var validateComponent = Promise.resolve(); + + // the component defines an explicit validate function + if (typeof component.validate === "function") { + validateComponent = Promise.resolve(component.validate()).then(function (validated) { + validationResults.failed = validated ? [] : ['failed']; + }); + } + + return validateComponent.then(function () { + if (_this4.inputs.indexOf(component) < 0) { + return; + } + + var isRequired = Object.keys(component._requiredValidations).length ? !!requiredResults.success.length : false; + var isValid = !validationResults.failed.length && !(_this4.props.validationErrors && _this4.props.validationErrors[component.props.name]); + + return { + isRequired: isRequired, + isValid: isRequired ? false : isValid, + error: function () { + + if (isValid && !isRequired) { + return emptyArray; + } + + if (validationResults.errors.length) { + return validationResults.errors; + } + + if (this.props.validationErrors && this.props.validationErrors[component.props.name]) { + return typeof this.props.validationErrors[component.props.name] === 'string' ? [this.props.validationErrors[component.props.name]] : this.props.validationErrors[component.props.name]; + } + + if (isRequired) { + var error = validationErrors[requiredResults.success[0]]; + return error ? [error] : null; + } + + if (validationResults.failed.length) { + return validationResults.failed.map(function (failed) { + return validationErrors[failed] ? validationErrors[failed] : validationError; + }).filter(function (x, pos, arr) { + // Remove duplicates + return arr.indexOf(x) === pos; + }); + } + }.call(_this4) + }; + }); + }); + }, + + runRules: function runRules(value, currentValues, validations) { + + var results = { + errors: [], + failed: [], + success: [] + }; + + return Promise.all(Object.keys(validations).map(function (validationMethod) { + + if (validationRules[validationMethod] && typeof validations[validationMethod] === 'function') { + throw new Error('Formsy does not allow you to override default validations: ' + validationMethod); + } + + if (!validationRules[validationMethod] && typeof validations[validationMethod] !== 'function') { + throw new Error('Formsy does not have the validation rule: ' + validationMethod); + } + + if (typeof validations[validationMethod] === 'function') { + return Promise.resolve(validations[validationMethod](currentValues, value)).then(function (validation) { + if (typeof validation === 'string') { + results.errors.push(validation); + results.failed.push(validationMethod); + } else if (!validation) { + results.failed.push(validationMethod); + } + return; + }); + } else if (typeof validations[validationMethod] !== 'function') { + return Promise.resolve(validationRules[validationMethod](currentValues, value, validations[validationMethod])).then(function (validation) { + if (typeof validation === 'string') { + results.errors.push(validation); + results.failed.push(validationMethod); + } else if (!validation) { + results.failed.push(validationMethod); + } else { + results.success.push(validationMethod); + } + return; + }); + } + + return results.success.push(validationMethod); + })).then(function () { + return results; + }); + }, + + // Validate the form by going through all child input components + // and check their state + validateForm: function validateForm() { + var _this5 = this; + + // We need a callback as we are validating all inputs again. This will + // run when the last component has set its state + var onValidationComplete = function () { + var allIsValid = this.inputs.every(function (component) { + return component.state._isValid; + }); + + this.setState({ + isValid: allIsValid + }); + + if (allIsValid) { + this.props.onValid(); + } else { + this.props.onInvalid(); + } + + // Tell the form that it can start to trigger change events + this.setState({ + canChange: true + }); + }.bind(this); + + // Run validation again in case affected by other inputs. The + // last component validated will run the onValidationComplete callback + this.inputs.forEach(function (component, index) { + _this5.runValidation(component).then(function (validation) { + if (!validation) { + return; + } + if (validation.isValid && component.state._externalError) { + validation.isValid = false; + } + component.setState({ + _isValid: validation.isValid, + _isRequired: validation.isRequired, + _validationError: validation.error, + _externalError: !validation.isValid && component.state._externalError ? component.state._externalError : null + }, index === _this5.inputs.length - 1 ? onValidationComplete : null); + }); + }); + + // If there are no inputs, set state where form is ready to trigger + // change event. New inputs might be added later + if (!this.inputs.length) { + this.setState({ + canChange: true + }); + } + }, + + // Method put on each input component to register + // itself to the form + attachToForm: function attachToForm(component) { + + if (this.inputs.indexOf(component) === -1) { + this.inputs.push(component); + } + + this.validate(component); + }, + + // Method put on each input component to unregister + // itself from the form + detachFromForm: function detachFromForm(component) { + var componentPos = this.inputs.indexOf(component); + + if (componentPos !== -1) { + this.inputs = this.inputs.slice(0, componentPos).concat(this.inputs.slice(componentPos + 1)); + } + + this.validateForm(); + }, + render: function render() { + var _props = this.props, + mapping = _props.mapping, + validationErrors = _props.validationErrors, + onSubmit = _props.onSubmit, + onValid = _props.onValid, + onValidSubmit = _props.onValidSubmit, + onInvalid = _props.onInvalid, + onInvalidSubmit = _props.onInvalidSubmit, + onChange = _props.onChange, + reset = _props.reset, + preventExternalInvalidation = _props.preventExternalInvalidation, + onSuccess = _props.onSuccess, + onError = _props.onError, + cacheValues = _props.cacheValues, + nonFormsyProps = _objectWithoutProperties(_props, ['mapping', 'validationErrors', 'onSubmit', 'onValid', 'onValidSubmit', 'onInvalid', 'onInvalidSubmit', 'onChange', 'reset', 'preventExternalInvalidation', 'onSuccess', 'onError', 'cacheValues']); + + return React.createElement( + 'form', + _extends({}, nonFormsyProps, { onSubmit: this.submit }), + this.props.children + ); + } +}); + +if (!global.exports && !global.module && (!global.define || !global.define.amd)) { + global.Formsy = Formsy; +} + +module.exports = Formsy; \ No newline at end of file diff --git a/lib/utils.js b/lib/utils.js new file mode 100644 index 00000000..e59bf6d5 --- /dev/null +++ b/lib/utils.js @@ -0,0 +1,57 @@ +'use strict'; + +var _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; }; + +module.exports = { + arraysDiffer: function arraysDiffer(a, b) { + var isDifferent = false; + if (a.length !== b.length) { + isDifferent = true; + } else { + a.forEach(function (item, index) { + if (!this.isSame(item, b[index])) { + isDifferent = true; + } + }, this); + } + return isDifferent; + }, + + objectsDiffer: function objectsDiffer(a, b) { + var isDifferent = false; + if (Object.keys(a).length !== Object.keys(b).length) { + isDifferent = true; + } else { + Object.keys(a).forEach(function (key) { + if (!this.isSame(a[key], b[key])) { + isDifferent = true; + } + }, this); + } + return isDifferent; + }, + + isSame: function isSame(a, b) { + if ((typeof a === 'undefined' ? 'undefined' : _typeof(a)) !== (typeof b === 'undefined' ? 'undefined' : _typeof(b))) { + return false; + } else if (Array.isArray(a) && Array.isArray(b)) { + return !this.arraysDiffer(a, b); + } else if (typeof a === 'function') { + return a.toString() === b.toString(); + } else if ((typeof a === 'undefined' ? 'undefined' : _typeof(a)) === 'object' && a !== null && b !== null) { + return !this.objectsDiffer(a, b); + } + + return a === b; + }, + + find: function find(collection, fn) { + for (var i = 0, l = collection.length; i < l; i++) { + var item = collection[i]; + if (fn(item)) { + return item; + } + } + return null; + } +}; \ No newline at end of file diff --git a/lib/validationRules.js b/lib/validationRules.js new file mode 100644 index 00000000..6baaf501 --- /dev/null +++ b/lib/validationRules.js @@ -0,0 +1,80 @@ +'use strict'; + +var _isExisty = function _isExisty(value) { + return value !== null && value !== undefined; +}; + +var isEmpty = function isEmpty(value) { + return value === ''; +}; + +var validations = { + isDefaultRequiredValue: function isDefaultRequiredValue(values, value) { + return value === undefined || value === ''; + }, + isExisty: function isExisty(values, value) { + return _isExisty(value); + }, + matchRegexp: function matchRegexp(values, value, regexp) { + return !_isExisty(value) || isEmpty(value) || regexp.test(value); + }, + isUndefined: function isUndefined(values, value) { + return value === undefined; + }, + isEmptyString: function isEmptyString(values, value) { + return isEmpty(value); + }, + isEmail: function isEmail(values, value) { + return validations.matchRegexp(values, value, /^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))$/i); + }, + isUrl: function isUrl(values, value) { + return validations.matchRegexp(values, value, /^(https?|s?ftp):\/\/(((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(#((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/i); + }, + isTrue: function isTrue(values, value) { + return value === true; + }, + isFalse: function isFalse(values, value) { + return value === false; + }, + isNumeric: function isNumeric(values, value) { + if (typeof value === 'number') { + return true; + } + return validations.matchRegexp(values, value, /^[-+]?(?:\d*[.])?\d+$/); + }, + isAlpha: function isAlpha(values, value) { + return validations.matchRegexp(values, value, /^[A-Z]+$/i); + }, + isAlphanumeric: function isAlphanumeric(values, value) { + return validations.matchRegexp(values, value, /^[0-9A-Z]+$/i); + }, + isInt: function isInt(values, value) { + return validations.matchRegexp(values, value, /^(?:[-+]?(?:0|[1-9]\d*))$/); + }, + isFloat: function isFloat(values, value) { + return validations.matchRegexp(values, value, /^(?:[-+]?(?:\d+))?(?:\.\d*)?(?:[eE][\+\-]?(?:\d+))?$/); + }, + isWords: function isWords(values, value) { + return validations.matchRegexp(values, value, /^[A-Z\s]+$/i); + }, + isSpecialWords: function isSpecialWords(values, value) { + return validations.matchRegexp(values, value, /^[A-Z\s\u00C0-\u017F]+$/i); + }, + isLength: function isLength(values, value, length) { + return !_isExisty(value) || isEmpty(value) || value.length === length; + }, + equals: function equals(values, value, eql) { + return !_isExisty(value) || isEmpty(value) || value == eql; + }, + equalsField: function equalsField(values, value, field) { + return value == values[field]; + }, + maxLength: function maxLength(values, value, length) { + return !_isExisty(value) || value.length <= length; + }, + minLength: function minLength(values, value, length) { + return !_isExisty(value) || isEmpty(value) || value.length >= length; + } +}; + +module.exports = validations; \ No newline at end of file diff --git a/release/formsy-react.js b/release/formsy-react.js index 4ade308d..a9b4adb0 100644 --- a/release/formsy-react.js +++ b/release/formsy-react.js @@ -1,7 +1,7 @@ -!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e(require("react")):"function"==typeof define&&define.amd?define(["react"],e):"object"==typeof exports?exports.Formsy=e(require("react")):t.Formsy=e(t.react)}(this,function(t){return function(t){function e(r){if(n[r])return n[r].exports;var i=n[r]={exports:{},id:r,loaded:!1};return t[r].call(i.exports,i,i.exports,e),i.loaded=!0,i.exports}var n={};return e.m=t,e.c=n,e.p="",e(0)}([function(t,e,n){(function(e){"use strict";function r(t,e){var n={};for(var r in t)e.indexOf(r)>=0||Object.prototype.hasOwnProperty.call(t,r)&&(n[r]=t[r]);return n}var i=Object.assign||function(t){for(var e=1;e0&&this.setInputValidationErrors(this.props.validationErrors);var t=this.inputs.map(function(t){return t.props.name});f.arraysDiffer(this.prevInputNames,t)&&this.validateForm()},reset:function(t){this.setFormPristine(!0),this.resetModel(t)},submit:function(t){t&&t.preventDefault(),this.setFormPristine(!1);var e=this.getModel();this.props.onSubmit(e,this.resetModel,this.updateInputsWithError),this.state.isValid?this.props.onValidSubmit(e,this.resetModel,this.updateInputsWithError):this.props.onInvalidSubmit(e,this.resetModel,this.updateInputsWithError)},mapModel:function(t){return this.props.mapping?this.props.mapping(t):p.toObj(Object.keys(t).reduce(function(e,n){for(var r=n.split("."),i=e;r.length;){var o=r.shift();i=i[o]=r.length?i[o]||{}:t[n]}return e},{}))},getModel:function(){var t=this.getCurrentValues();return this.mapModel(t)},resetModel:function(t){this.inputs.forEach(function(e){var n=e.props.name;t&&t.hasOwnProperty(n)?e.setValue(t[n]):e.resetValue()}),this.validateForm()},setInputValidationErrors:function(t){this.inputs.forEach(function(e){var n=e.props.name,r=[{_isValid:!(n in t),_validationError:"string"==typeof t[n]?[t[n]]:t[n]}];e.setState.apply(e,r)})},isChanged:function(){return!f.isSame(this.getPristineValues(),this.getCurrentValues())},getPristineValues:function(){return this.inputs.reduce(function(t,e){var n=e.props.name;return t[n]=e.props.value,t},{})},updateInputsWithError:function(t){var e=this;Object.keys(t).forEach(function(n,r){var i=f.find(e.inputs,function(t){return t.props.name===n});if(!i)throw new Error("You are trying to update an input that does not exist. Verify errors object with input names. "+JSON.stringify(t));var o=[{_isValid:e.props.preventExternalInvalidation||!1,_externalError:"string"==typeof t[n]?[t[n]]:t[n]}];i.setState.apply(i,o)})},isFormDisabled:function(){return this.props.disabled},getCurrentValues:function(){return this.inputs.reduce(function(t,e){var n=e.props.name;return t[n]=e.state._value,t},{})},setFormPristine:function(t){this.setState({_formSubmitted:!t}),this.inputs.forEach(function(e,n){e.setState({_formSubmitted:!t,_isPristine:t})})},validate:function(t){this.state.canChange&&this.props.onChange(this.getCurrentValues(),this.isChanged());var e=this.runValidation(t);t.setState({_isValid:e.isValid,_isRequired:e.isRequired,_validationError:e.error,_externalError:null},this.validateForm)},runValidation:function(t,e){var n=this.getCurrentValues(),r=t.props.validationErrors,i=t.props.validationError;e=2===arguments.length?e:t.state._value;var o=this.runRules(e,n,t._validations),s=this.runRules(e,n,t._requiredValidations);"function"==typeof t.validate&&(o.failed=t.validate()?[]:["failed"]);var a=!!Object.keys(t._requiredValidations).length&&!!s.success.length,u=!(o.failed.length||this.props.validationErrors&&this.props.validationErrors[t.props.name]);return{isRequired:a,isValid:!a&&u,error:function(){if(u&&!a)return v;if(o.errors.length)return o.errors;if(this.props.validationErrors&&this.props.validationErrors[t.props.name])return"string"==typeof this.props.validationErrors[t.props.name]?[this.props.validationErrors[t.props.name]]:this.props.validationErrors[t.props.name];if(a){var e=r[s.success[0]];return e?[e]:null}return o.failed.length?o.failed.map(function(t){return r[t]?r[t]:i}).filter(function(t,e,n){return n.indexOf(t)===e}):void 0}.call(this)}},runRules:function(t,e,n){var r={errors:[],failed:[],success:[]};return Object.keys(n).length&&Object.keys(n).forEach(function(i){if(l[i]&&"function"==typeof n[i])throw new Error("Formsy does not allow you to override default validations: "+i);if(!l[i]&&"function"!=typeof n[i])throw new Error("Formsy does not have the validation rule: "+i);if("function"==typeof n[i]){var o=n[i](e,t);return void("string"==typeof o?(r.errors.push(o),r.failed.push(i)):o||r.failed.push(i))}if("function"!=typeof n[i]){var o=l[i](e,t,n[i]);return void("string"==typeof o?(r.errors.push(o),r.failed.push(i)):o?r.success.push(i):r.failed.push(i))}return r.success.push(i)}),r},validateForm:function(){var t=this,e=function(){var t=this.inputs.every(function(t){return t.state._isValid});this.setState({isValid:t}),t?this.props.onValid():this.props.onInvalid(),this.setState({canChange:!0})}.bind(this);this.inputs.forEach(function(n,r){var i=t.runValidation(n);i.isValid&&n.state._externalError&&(i.isValid=!1),n.setState({_isValid:i.isValid,_isRequired:i.isRequired,_validationError:i.error,_externalError:!i.isValid&&n.state._externalError?n.state._externalError:null},r===t.inputs.length-1?e:null)}),this.inputs.length||this.setState({canChange:!0})},attachToForm:function(t){this.inputs.indexOf(t)===-1&&this.inputs.push(t),this.validate(t)},detachFromForm:function(t){var e=this.inputs.indexOf(t);e!==-1&&(this.inputs=this.inputs.slice(0,e).concat(this.inputs.slice(e+1))),this.validateForm()},render:function(){var t=this.props,e=(t.mapping,t.validationErrors,t.onSubmit,t.onValid,t.onValidSubmit,t.onInvalid,t.onInvalidSubmit,t.onChange,t.reset,t.preventExternalInvalidation,t.onSuccess,t.onError,r(t,["mapping","validationErrors","onSubmit","onValid","onValidSubmit","onInvalid","onInvalidSubmit","onChange","reset","preventExternalInvalidation","onSuccess","onError"]));return a.createElement("form",i({},e,{onSubmit:this.submit}),this.props.children)}}),e.exports||e.module||e.define&&e.define.amd||(e.Formsy=c),t.exports=c}).call(e,function(){return this}())},function(t,e){function n(){throw new Error("setTimeout has not been defined")}function r(){throw new Error("clearTimeout has not been defined")}function i(t){if(l===setTimeout)return setTimeout(t,0);if((l===n||!l)&&setTimeout)return l=setTimeout,setTimeout(t,0);try{return l(t,0)}catch(e){try{return l.call(null,t,0)}catch(e){return l.call(this,t,0)}}}function o(t){if(p===clearTimeout)return clearTimeout(t);if((p===r||!p)&&clearTimeout)return p=clearTimeout,clearTimeout(t);try{return p(t)}catch(e){try{return p.call(null,t)}catch(e){return p.call(this,t)}}}function s(){m&&d&&(m=!1,d.length?h=d.concat(h):y=-1,h.length&&a())}function a(){if(!m){var t=i(s);m=!0;for(var e=h.length;e;){for(d=h,h=[];++y1)for(var n=1;n1)throw new Error("Formsy does not support multiple args on string validations. Use object format of validations instead.");return t[r]=!n.length||n[0],t},{}):t||{}});t.exports={getInitialState:function(){return{_value:this.props.value,_isRequired:!1,_isValid:!0,_isPristine:!0,_pristineValue:this.props.value,_validationError:[],_externalError:null,_formSubmitted:!1}},contextTypes:{formsy:r.object},getDefaultProps:function(){return{validationError:"",validationErrors:{}}},componentWillMount:function(){var t=function(){this.setValidations(this.props.validations,this.props.required),this.context.formsy.attachToForm(this)}.bind(this);if(!this.props.name)throw new Error("Form Input requires a name property when used");t()},componentWillReceiveProps:function(t){this.setValidations(t.validations,t.required)},componentDidUpdate:function(t){i.isSame(this.props.value,t.value)||this.setValue(this.props.value),i.isSame(this.props.validations,t.validations)&&i.isSame(this.props.required,t.required)||this.context.formsy.validate(this)},componentWillUnmount:function(){this.context.formsy.detachFromForm(this)},setValidations:function(t,e){this._validations=o(t)||{},this._requiredValidations=e===!0?{isDefaultRequiredValue:!0}:o(e)},setValue:function(t){this.setState({_value:t,_isPristine:!1},function(){this.context.formsy.validate(this)}.bind(this))},resetValue:function(){this.setState({_value:this.state._pristineValue,_isPristine:!0},function(){this.context.formsy.validate(this)})},getValue:function(){return this.state._value},hasValue:function(){return""!==this.state._value},getErrorMessage:function(){var t=this.getErrorMessages();return t.length?t[0]:null},getErrorMessages:function(){return!this.isValid()||this.showRequired()?this.state._externalError||this.state._validationError||[]:[]},isFormDisabled:function(){return this.context.formsy.isFormDisabled()},isValid:function(){return this.state._isValid},isPristine:function(){return this.state._isPristine},isFormSubmitted:function(){return this.state._formSubmitted},isRequired:function(){return!!this.props.required},showRequired:function(){return this.state._isRequired},showError:function(){return!this.showRequired()&&!this.isValid()},isValidValue:function(t){return this.context.formsy.isValidValue.call(null,this,t)}}}).call(e,function(){return this}())},function(t,e,n){"use strict";var r=n(2),i=n(14);if("undefined"==typeof r)throw Error("create-react-class could not find the React object. If you are using script tags, make sure that React is being loaded before create-react-class.");var o=(new r.Component).updater;t.exports=i(r.Component,r.isValidElement,o)},function(t,e){"use strict";function n(t){return function(){return t}}var r=function(){};r.thatReturns=n,r.thatReturnsFalse=n(!1),r.thatReturnsTrue=n(!0),r.thatReturnsNull=n(null),r.thatReturnsThis=function(){return this},r.thatReturnsArgument=function(t){return t},t.exports=r},function(t,e,n){(function(e){"use strict";var r=n(6),i=r;"production"!==e.env.NODE_ENV&&!function(){var t=function(t){for(var e=arguments.length,n=Array(e>1?e-1:0),r=1;r2?r-2:0),o=2;o=i}};t.exports=i},function(t,e,n){(function(e){"use strict";function r(t){return t}function i(t,n,i){function p(t,n,r){for(var i in n)n.hasOwnProperty(i)&&"production"!==e.env.NODE_ENV&&u("function"==typeof n[i],"%s: %s type `%s` is invalid; it must be a function, usually from React.PropTypes.",t.displayName||"ReactClass",c[r],i)}function f(t,e){var n=D.hasOwnProperty(e)?D[e]:null;V.hasOwnProperty(e)&&a("OVERRIDE_BASE"===n,"ReactClassInterface: You are attempting to override `%s` from your class specification. Ensure that your method names do not overlap with React methods.",e),t&&a("DEFINE_MANY"===n||"DEFINE_MANY_MERGED"===n,"ReactClassInterface: You are attempting to define `%s` on your component more than once. This conflict may be due to a mixin.",e)}function d(t,r){if(r){a("function"!=typeof r,"ReactClass: You're attempting to use a component class or function as a mixin. Instead, just use a regular object."),a(!n(r),"ReactClass: You're attempting to use a component as a mixin. Instead, just use a regular object.");var i=t.prototype,o=i.__reactAutoBindPairs;r.hasOwnProperty(l)&&x.mixins(t,r.mixins);for(var s in r)if(r.hasOwnProperty(s)&&s!==l){var c=r[s],p=i.hasOwnProperty(s);if(f(p,s),x.hasOwnProperty(s))x[s](t,c);else{var d=D.hasOwnProperty(s),h="function"==typeof c,m=h&&!d&&!p&&r.autobind!==!1;if(m)o.push(s,c),i[s]=c;else if(p){var F=D[s];a(d&&("DEFINE_MANY_MERGED"===F||"DEFINE_MANY"===F),"ReactClass: Unexpected spec policy %s for key %s when mixing in component specs.",F,s),"DEFINE_MANY_MERGED"===F?i[s]=y(i[s],c):"DEFINE_MANY"===F&&(i[s]=v(i[s],c))}else i[s]=c,"production"!==e.env.NODE_ENV&&"function"==typeof c&&r.displayName&&(i[s].displayName=r.displayName+"_"+s)}}}else if("production"!==e.env.NODE_ENV){var E=typeof r,g="object"===E&&null!==r;"production"!==e.env.NODE_ENV&&u(g,"%s: You're attempting to include a mixin that is either null or not an object. Check the mixins included by the component, as well as any mixins they include themselves. Expected object but got %s.",t.displayName||"ReactClass",null===r?null:E)}}function h(t,e){if(e)for(var n in e){var r=e[n];if(e.hasOwnProperty(n)){var i=n in x;a(!i,'ReactClass: You are attempting to define a reserved property, `%s`, that shouldn\'t be on the "statics" key. Define it as an instance property instead; it will still be accessible on the constructor.',n);var o=n in t;a(!o,"ReactClass: You are attempting to define `%s` on your component more than once. This conflict may be due to a mixin.",n),t[n]=r}}}function m(t,e){a(t&&e&&"object"==typeof t&&"object"==typeof e,"mergeIntoWithNoDuplicateKeys(): Cannot merge non-objects.");for(var n in e)e.hasOwnProperty(n)&&(a(void 0===t[n],"mergeIntoWithNoDuplicateKeys(): Tried to merge two objects with the same key: `%s`. This conflict may be due to a mixin; in particular, this may be caused by two getInitialState() or getDefaultProps() methods returning objects with clashing keys.",n),t[n]=e[n]);return t}function y(t,e){return function(){var n=t.apply(this,arguments),r=e.apply(this,arguments);if(null==n)return r;if(null==r)return n;var i={};return m(i,n),m(i,r),i}}function v(t,e){return function(){t.apply(this,arguments),e.apply(this,arguments)}}function F(t,n){var r=n.bind(t);if("production"!==e.env.NODE_ENV){r.__reactBoundContext=t,r.__reactBoundMethod=n,r.__reactBoundArguments=null;var i=t.constructor.displayName,o=r.bind;r.bind=function(s){for(var a=arguments.length,c=Array(a>1?a-1:0),l=1;l=0||Object.prototype.hasOwnProperty.call(t,r)&&(n[r]=t[r]);return n}var i=Object.assign||function(t){for(var e=1;e0&&this.setInputValidationErrors(this.props.validationErrors);var t=this.inputs.map(function(t){return t.props.name});d.arraysDiffer(this.prevInputNames,t)&&this.validateForm()},shouldCache:function(){return this.props.cacheValues},reset:function(t){this.setFormPristine(!0),this.resetModel(t)},submit:function(t){t&&t.preventDefault(),this.setFormPristine(!1);var e=this.getModel();this.props.onSubmit(e,this.resetModel,this.updateInputsWithError),this.state.isValid?this.props.onValidSubmit(e,this.resetModel,this.updateInputsWithError):this.props.onInvalidSubmit(e,this.resetModel,this.updateInputsWithError)},mapModel:function(t){return this.props.mapping?this.props.mapping(t):f.toObj(Object.keys(t).reduce(function(e,n){for(var r=n.split("."),i=e;r.length;){var o=r.shift();i=i[o]=r.length?i[o]||{}:t[n]}return e},{}))},getModel:function(){var t=this.getCurrentValues();return this.mapModel(t)},resetModel:function(t){this.inputs.forEach(function(e){var n=e.props.name;t&&t.hasOwnProperty(n)?e.setValue(t[n]):e.resetValue()}),this.validateForm()},setInputValidationErrors:function(t){this.inputs.forEach(function(e){var n=e.props.name;if(n in t){var r=[{_isValid:null===t[n],_validationError:"string"==typeof t[n]?[t[n]]:t[n]}];e.setState.apply(e,r)}})},isChanged:function(){return!d.isSame(this.getPristineValues(),this.getCurrentValues())},getPristineValues:function(){return this.inputs.reduce(function(t,e){var n=e.props.name;return t[n]=e.props.value,t},{})},updateInputsWithError:function(t){var e=this;Object.keys(t).forEach(function(n,r){var i=d.find(e.inputs,function(t){return t.props.name===n});if(!i)throw new Error("You are trying to update an input that does not exist. Verify errors object with input names. "+JSON.stringify(t));var o=[{_isValid:e.props.preventExternalInvalidation||!1,_externalError:"string"==typeof t[n]?[t[n]]:t[n]}];i.setState.apply(i,o)})},isFormDisabled:function(){return this.props.disabled},getCurrentValues:function(){return this.inputs.reduce(function(t,e){var n=e.props.name;return t[n]=e.state._value,t},{})},setFormPristine:function(t){this.setState({_formSubmitted:!t}),this.inputs.forEach(function(e,n){e.setState({_formSubmitted:!t,_isPristine:t})})},validate:function(t){var e=this;this.state.canChange&&this.props.onChange(this.getModel(),this.isChanged()),this.runValidation(t).then(function(n){n&&t.setState({_isValid:n.isValid,_isRequired:n.isRequired,_validationError:n.error,_externalError:null},e.validateForm)})},runValidation:function(t,e){var n=this,r=this.getCurrentValues(),i=t.props.validationErrors,s=t.props.validationError;if(e=2===arguments.length?e:t.state._value,this.shouldCache()&&this.cachedValues[t.props.name]===e){var a=t.isValid(),u=t.showRequired(),c=[t.getErrorMessage()];return new Promise(function(t,e){t({isValid:a,isRequired:u,error:c})})}return this.cachedValues[t.props.name]=e,Promise.all([this.runRules(e,r,t._validations),this.runRules(e,r,t._requiredValidations)]).then(function(e){var r=o(e,2),a=r[0],u=r[1],c=Promise.resolve();return"function"==typeof t.validate&&(c=Promise.resolve(t.validate()).then(function(t){a.failed=t?[]:["failed"]})),c.then(function(){if(!(n.inputs.indexOf(t)<0)){var e=!!Object.keys(t._requiredValidations).length&&!!u.success.length,r=!(a.failed.length||n.props.validationErrors&&n.props.validationErrors[t.props.name]);return{isRequired:e,isValid:!e&&r,error:function(){if(r&&!e)return F;if(a.errors.length)return a.errors;if(this.props.validationErrors&&this.props.validationErrors[t.props.name])return"string"==typeof this.props.validationErrors[t.props.name]?[this.props.validationErrors[t.props.name]]:this.props.validationErrors[t.props.name];if(e){var n=i[u.success[0]];return n?[n]:null}return a.failed.length?a.failed.map(function(t){return i[t]?i[t]:s}).filter(function(t,e,n){return n.indexOf(t)===e}):void 0}.call(n)}}})})},runRules:function(t,e,n){var r={errors:[],failed:[],success:[]};return Promise.all(Object.keys(n).map(function(i){if(p[i]&&"function"==typeof n[i])throw new Error("Formsy does not allow you to override default validations: "+i);if(!p[i]&&"function"!=typeof n[i])throw new Error("Formsy does not have the validation rule: "+i);return"function"==typeof n[i]?Promise.resolve(n[i](e,t)).then(function(t){"string"==typeof t?(r.errors.push(t),r.failed.push(i)):t||r.failed.push(i)}):"function"!=typeof n[i]?Promise.resolve(p[i](e,t,n[i])).then(function(t){"string"==typeof t?(r.errors.push(t),r.failed.push(i)):t?r.success.push(i):r.failed.push(i)}):r.success.push(i)})).then(function(){return r})},validateForm:function(){var t=this,e=function(){var t=this.inputs.every(function(t){return t.state._isValid});this.setState({isValid:t}),t?this.props.onValid():this.props.onInvalid(),this.setState({canChange:!0})}.bind(this);this.inputs.forEach(function(n,r){t.runValidation(n).then(function(i){i&&(i.isValid&&n.state._externalError&&(i.isValid=!1),n.setState({_isValid:i.isValid,_isRequired:i.isRequired,_validationError:i.error,_externalError:!i.isValid&&n.state._externalError?n.state._externalError:null},r===t.inputs.length-1?e:null))})}),this.inputs.length||this.setState({canChange:!0})},attachToForm:function(t){this.inputs.indexOf(t)===-1&&this.inputs.push(t),this.validate(t)},detachFromForm:function(t){var e=this.inputs.indexOf(t);e!==-1&&(this.inputs=this.inputs.slice(0,e).concat(this.inputs.slice(e+1))),this.validateForm()},render:function(){var t=this.props,e=(t.mapping,t.validationErrors,t.onSubmit,t.onValid,t.onValidSubmit,t.onInvalid,t.onInvalidSubmit,t.onChange,t.reset,t.preventExternalInvalidation,t.onSuccess,t.onError,t.cacheValues,r(t,["mapping","validationErrors","onSubmit","onValid","onValidSubmit","onInvalid","onInvalidSubmit","onChange","reset","preventExternalInvalidation","onSuccess","onError","cacheValues"]));return u.createElement("form",i({},e,{onSubmit:this.submit}),this.props.children)}}),e.exports||e.module||e.define&&e.define.amd||(e.Formsy=l),t.exports=l}).call(e,function(){return this}())},function(t,e){function n(){throw new Error("setTimeout has not been defined")}function r(){throw new Error("clearTimeout has not been defined")}function i(t){if(l===setTimeout)return setTimeout(t,0);if((l===n||!l)&&setTimeout)return l=setTimeout,setTimeout(t,0);try{return l(t,0)}catch(e){try{return l.call(null,t,0)}catch(e){return l.call(this,t,0)}}}function o(t){if(p===clearTimeout)return clearTimeout(t);if((p===r||!p)&&clearTimeout)return p=clearTimeout,clearTimeout(t);try{return p(t)}catch(e){try{return p.call(null,t)}catch(e){return p.call(this,t)}}}function s(){m&&d&&(m=!1,d.length?h=d.concat(h):y=-1,h.length&&a())}function a(){if(!m){var t=i(s);m=!0;for(var e=h.length;e;){for(d=h,h=[];++y1)for(var n=1;n1)throw new Error("Formsy does not support multiple args on string validations. Use object format of validations instead.");return t[r]=!n.length||n[0],t},{}):t||{}});t.exports={getInitialState:function(){return{_value:this.props.value,_isRequired:!1,_isValid:!this.props.required,_isPristine:!0,_pristineValue:this.props.value,_validationError:[],_externalError:null,_formSubmitted:!1}},contextTypes:{formsy:r.object},getDefaultProps:function(){return{validationError:"",validationErrors:{}}},componentWillMount:function(){this.canSetValue=!0;var t=function(){this.setValidations(this.props.validations,this.props.required),this.context.formsy.attachToForm(this)}.bind(this);if(!this.props.name)throw new Error("Form Input requires a name property when used");t()},componentWillReceiveProps:function(t){this.setValidations(t.validations,t.required)},componentDidUpdate:function(t){i.isSame(this.props.value,t.value)||this.setValue(this.props.value),i.isSame(this.props.validations,t.validations)&&i.isSame(this.props.required,t.required)||this.context.formsy.validate(this)},componentWillUnmount:function(){this.canSetValue=!1,this.context.formsy.detachFromForm(this)},setValidations:function(t,e){this._validations=o(t)||{},this._requiredValidations=e===!0?{isDefaultRequiredValue:!0}:o(e)},setValue:function(t){this.canSetValue&&this.setState({_value:t,_isPristine:!1},function(){this.context.formsy.validate(this)}.bind(this))},resetValue:function(){this.setState({_value:this.state._pristineValue,_isPristine:!0},function(){this.context.formsy.validate(this)})},getValue:function(){return this.state._value},hasValue:function(){return""!==this.state._value},getErrorMessage:function(){var t=this.getErrorMessages();return t.length?t[0]:null},getErrorMessages:function(){return!this.isValid()||this.showRequired()?this.state._externalError||this.state._validationError||[]:[]},isFormDisabled:function(){return this.context.formsy.isFormDisabled()},isValid:function(){return this.state._isValid},isPristine:function(){return this.state._isPristine},isFormSubmitted:function(){return this.state._formSubmitted},isRequired:function(){return!!this.props.required},showRequired:function(){return this.state._isRequired},showError:function(){return!this.showRequired()&&!this.isValid()},isValidValue:function(t){return this.context.formsy.isValidValue.call(null,this,t)}}}).call(e,function(){return this}())},function(t,e,n){"use strict";var r=n(2),i=n(14);if("undefined"==typeof r)throw Error("create-react-class could not find the React object. If you are using script tags, make sure that React is being loaded before create-react-class.");var o=(new r.Component).updater;t.exports=i(r.Component,r.isValidElement,o)},function(t,e){"use strict";function n(t){return function(){return t}}var r=function(){};r.thatReturns=n,r.thatReturnsFalse=n(!1),r.thatReturnsTrue=n(!0),r.thatReturnsNull=n(null),r.thatReturnsThis=function(){return this},r.thatReturnsArgument=function(t){return t},t.exports=r},function(t,e,n){(function(e){"use strict";var r=n(6),i=r;if("production"!==e.env.NODE_ENV){var o=function(t){for(var e=arguments.length,n=Array(e>1?e-1:0),r=1;r2?n-2:0),i=2;i=i}};t.exports=i},function(t,e,n){(function(e){"use strict";function r(t){return t}function i(t,n,i){function p(t,n,r){for(var i in n)n.hasOwnProperty(i)&&"production"!==e.env.NODE_ENV&&u("function"==typeof n[i],"%s: %s type `%s` is invalid; it must be a function, usually from React.PropTypes.",t.displayName||"ReactClass",c[r],i)}function f(t,e){var n=D.hasOwnProperty(e)?D[e]:null;N.hasOwnProperty(e)&&a("OVERRIDE_BASE"===n,"ReactClassInterface: You are attempting to override `%s` from your class specification. Ensure that your method names do not overlap with React methods.",e),t&&a("DEFINE_MANY"===n||"DEFINE_MANY_MERGED"===n,"ReactClassInterface: You are attempting to define `%s` on your component more than once. This conflict may be due to a mixin.",e)}function d(t,r){if(r){a("function"!=typeof r,"ReactClass: You're attempting to use a component class or function as a mixin. Instead, just use a regular object."),a(!n(r),"ReactClass: You're attempting to use a component as a mixin. Instead, just use a regular object.");var i=t.prototype,o=i.__reactAutoBindPairs;r.hasOwnProperty(l)&&x.mixins(t,r.mixins);for(var s in r)if(r.hasOwnProperty(s)&&s!==l){var c=r[s],p=i.hasOwnProperty(s);if(f(p,s),x.hasOwnProperty(s))x[s](t,c);else{var d=D.hasOwnProperty(s),h="function"==typeof c,m=h&&!d&&!p&&r.autobind!==!1;if(m)o.push(s,c),i[s]=c;else if(p){var F=D[s];a(d&&("DEFINE_MANY_MERGED"===F||"DEFINE_MANY"===F),"ReactClass: Unexpected spec policy %s for key %s when mixing in component specs.",F,s),"DEFINE_MANY_MERGED"===F?i[s]=y(i[s],c):"DEFINE_MANY"===F&&(i[s]=v(i[s],c))}else i[s]=c,"production"!==e.env.NODE_ENV&&"function"==typeof c&&r.displayName&&(i[s].displayName=r.displayName+"_"+s)}}}else if("production"!==e.env.NODE_ENV){var E=typeof r,g="object"===E&&null!==r;"production"!==e.env.NODE_ENV&&u(g,"%s: You're attempting to include a mixin that is either null or not an object. Check the mixins included by the component, as well as any mixins they include themselves. Expected object but got %s.",t.displayName||"ReactClass",null===r?null:E)}}function h(t,e){if(e)for(var n in e){var r=e[n];if(e.hasOwnProperty(n)){var i=n in x;a(!i,'ReactClass: You are attempting to define a reserved property, `%s`, that shouldn\'t be on the "statics" key. Define it as an instance property instead; it will still be accessible on the constructor.',n);var o=n in t;a(!o,"ReactClass: You are attempting to define `%s` on your component more than once. This conflict may be due to a mixin.",n),t[n]=r}}}function m(t,e){a(t&&e&&"object"==typeof t&&"object"==typeof e,"mergeIntoWithNoDuplicateKeys(): Cannot merge non-objects.");for(var n in e)e.hasOwnProperty(n)&&(a(void 0===t[n],"mergeIntoWithNoDuplicateKeys(): Tried to merge two objects with the same key: `%s`. This conflict may be due to a mixin; in particular, this may be caused by two getInitialState() or getDefaultProps() methods returning objects with clashing keys.",n),t[n]=e[n]);return t}function y(t,e){return function(){var n=t.apply(this,arguments),r=e.apply(this,arguments);if(null==n)return r;if(null==r)return n;var i={};return m(i,n),m(i,r),i}}function v(t,e){return function(){t.apply(this,arguments),e.apply(this,arguments)}}function F(t,n){var r=n.bind(t);if("production"!==e.env.NODE_ENV){r.__reactBoundContext=t,r.__reactBoundMethod=n,r.__reactBoundArguments=null;var i=t.constructor.displayName,o=r.bind;r.bind=function(s){for(var a=arguments.length,c=Array(a>1?a-1:0),l=1;l= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\t\n\tvar PropTypes = __webpack_require__(10);\n\tvar React = global.React || __webpack_require__(2);\n\tvar createReactClass = __webpack_require__(5);\n\tvar Formsy = {};\n\tvar validationRules = __webpack_require__(13);\n\tvar formDataToObject = __webpack_require__(16);\n\tvar utils = __webpack_require__(9);\n\tvar Mixin = __webpack_require__(4);\n\tvar HOC = __webpack_require__(12);\n\tvar Decorator = __webpack_require__(11);\n\tvar options = {};\n\tvar emptyArray = [];\n\t\n\tFormsy.Mixin = Mixin;\n\tFormsy.HOC = HOC;\n\tFormsy.Decorator = Decorator;\n\t\n\tFormsy.defaults = function (passedOptions) {\n\t options = passedOptions;\n\t};\n\t\n\tFormsy.addValidationRule = function (name, func) {\n\t validationRules[name] = func;\n\t};\n\t\n\tFormsy.Form = createReactClass({\n\t displayName: 'Formsy',\n\t getInitialState: function getInitialState() {\n\t return {\n\t isValid: true,\n\t isSubmitting: false,\n\t canChange: false\n\t };\n\t },\n\t getDefaultProps: function getDefaultProps() {\n\t return {\n\t onSuccess: function onSuccess() {},\n\t onError: function onError() {},\n\t onSubmit: function onSubmit() {},\n\t onValidSubmit: function onValidSubmit() {},\n\t onInvalidSubmit: function onInvalidSubmit() {},\n\t onValid: function onValid() {},\n\t onInvalid: function onInvalid() {},\n\t onChange: function onChange() {},\n\t validationErrors: null,\n\t preventExternalInvalidation: false\n\t };\n\t },\n\t\n\t childContextTypes: {\n\t formsy: PropTypes.object\n\t },\n\t getChildContext: function getChildContext() {\n\t var _this = this;\n\t\n\t return {\n\t formsy: {\n\t attachToForm: this.attachToForm,\n\t detachFromForm: this.detachFromForm,\n\t validate: this.validate,\n\t isFormDisabled: this.isFormDisabled,\n\t isValidValue: function isValidValue(component, value) {\n\t return _this.runValidation(component, value).isValid;\n\t }\n\t }\n\t };\n\t },\n\t\n\t // Add a map to store the inputs of the form, a model to store\n\t // the values of the form and register child inputs\n\t componentWillMount: function componentWillMount() {\n\t this.inputs = [];\n\t },\n\t\n\t componentDidMount: function componentDidMount() {\n\t this.validateForm();\n\t },\n\t\n\t componentWillUpdate: function componentWillUpdate() {\n\t // Keep a reference to input names before form updates,\n\t // to check if inputs has changed after render\n\t this.prevInputNames = this.inputs.map(function (component) {\n\t return component.props.name;\n\t });\n\t },\n\t\n\t componentDidUpdate: function componentDidUpdate() {\n\t\n\t if (this.props.validationErrors && _typeof(this.props.validationErrors) === 'object' && Object.keys(this.props.validationErrors).length > 0) {\n\t this.setInputValidationErrors(this.props.validationErrors);\n\t }\n\t\n\t var newInputNames = this.inputs.map(function (component) {\n\t return component.props.name;\n\t });\n\t if (utils.arraysDiffer(this.prevInputNames, newInputNames)) {\n\t this.validateForm();\n\t }\n\t },\n\t\n\t // Allow resetting to specified data\n\t reset: function reset(data) {\n\t this.setFormPristine(true);\n\t this.resetModel(data);\n\t },\n\t\n\t // Update model, submit to url prop and send the model\n\t submit: function submit(event) {\n\t\n\t event && event.preventDefault();\n\t\n\t // Trigger form as not pristine.\n\t // If any inputs have not been touched yet this will make them dirty\n\t // so validation becomes visible (if based on isPristine)\n\t this.setFormPristine(false);\n\t var model = this.getModel();\n\t this.props.onSubmit(model, this.resetModel, this.updateInputsWithError);\n\t this.state.isValid ? this.props.onValidSubmit(model, this.resetModel, this.updateInputsWithError) : this.props.onInvalidSubmit(model, this.resetModel, this.updateInputsWithError);\n\t },\n\t\n\t mapModel: function mapModel(model) {\n\t\n\t if (this.props.mapping) {\n\t return this.props.mapping(model);\n\t } else {\n\t return formDataToObject.toObj(Object.keys(model).reduce(function (mappedModel, key) {\n\t\n\t var keyArray = key.split('.');\n\t var base = mappedModel;\n\t while (keyArray.length) {\n\t var currentKey = keyArray.shift();\n\t base = base[currentKey] = keyArray.length ? base[currentKey] || {} : model[key];\n\t }\n\t\n\t return mappedModel;\n\t }, {}));\n\t }\n\t },\n\t\n\t getModel: function getModel() {\n\t var currentValues = this.getCurrentValues();\n\t return this.mapModel(currentValues);\n\t },\n\t\n\t // Reset each key in the model to the original / initial / specified value\n\t resetModel: function resetModel(data) {\n\t this.inputs.forEach(function (component) {\n\t var name = component.props.name;\n\t if (data && data.hasOwnProperty(name)) {\n\t component.setValue(data[name]);\n\t } else {\n\t component.resetValue();\n\t }\n\t });\n\t this.validateForm();\n\t },\n\t\n\t setInputValidationErrors: function setInputValidationErrors(errors) {\n\t this.inputs.forEach(function (component) {\n\t var name = component.props.name;\n\t var args = [{\n\t _isValid: !(name in errors),\n\t _validationError: typeof errors[name] === 'string' ? [errors[name]] : errors[name]\n\t }];\n\t component.setState.apply(component, args);\n\t });\n\t },\n\t\n\t // Checks if the values have changed from their initial value\n\t isChanged: function isChanged() {\n\t return !utils.isSame(this.getPristineValues(), this.getCurrentValues());\n\t },\n\t\n\t getPristineValues: function getPristineValues() {\n\t return this.inputs.reduce(function (data, component) {\n\t var name = component.props.name;\n\t data[name] = component.props.value;\n\t return data;\n\t }, {});\n\t },\n\t\n\t // Go through errors from server and grab the components\n\t // stored in the inputs map. Change their state to invalid\n\t // and set the serverError message\n\t updateInputsWithError: function updateInputsWithError(errors) {\n\t var _this2 = this;\n\t\n\t Object.keys(errors).forEach(function (name, index) {\n\t var component = utils.find(_this2.inputs, function (component) {\n\t return component.props.name === name;\n\t });\n\t if (!component) {\n\t throw new Error('You are trying to update an input that does not exist. ' + 'Verify errors object with input names. ' + JSON.stringify(errors));\n\t }\n\t var args = [{\n\t _isValid: _this2.props.preventExternalInvalidation || false,\n\t _externalError: typeof errors[name] === 'string' ? [errors[name]] : errors[name]\n\t }];\n\t component.setState.apply(component, args);\n\t });\n\t },\n\t\n\t isFormDisabled: function isFormDisabled() {\n\t return this.props.disabled;\n\t },\n\t\n\t getCurrentValues: function getCurrentValues() {\n\t return this.inputs.reduce(function (data, component) {\n\t var name = component.props.name;\n\t data[name] = component.state._value;\n\t return data;\n\t }, {});\n\t },\n\t\n\t setFormPristine: function setFormPristine(isPristine) {\n\t this.setState({\n\t _formSubmitted: !isPristine\n\t });\n\t\n\t // Iterate through each component and set it as pristine\n\t // or \"dirty\".\n\t this.inputs.forEach(function (component, index) {\n\t component.setState({\n\t _formSubmitted: !isPristine,\n\t _isPristine: isPristine\n\t });\n\t });\n\t },\n\t\n\t // Use the binded values and the actual input value to\n\t // validate the input and set its state. Then check the\n\t // state of the form itself\n\t validate: function validate(component) {\n\t\n\t // Trigger onChange\n\t if (this.state.canChange) {\n\t this.props.onChange(this.getCurrentValues(), this.isChanged());\n\t }\n\t\n\t var validation = this.runValidation(component);\n\t // Run through the validations, split them up and call\n\t // the validator IF there is a value or it is required\n\t component.setState({\n\t _isValid: validation.isValid,\n\t _isRequired: validation.isRequired,\n\t _validationError: validation.error,\n\t _externalError: null\n\t }, this.validateForm);\n\t },\n\t\n\t // Checks validation on current value or a passed value\n\t runValidation: function runValidation(component, value) {\n\t\n\t var currentValues = this.getCurrentValues();\n\t var validationErrors = component.props.validationErrors;\n\t var validationError = component.props.validationError;\n\t value = arguments.length === 2 ? value : component.state._value;\n\t\n\t var validationResults = this.runRules(value, currentValues, component._validations);\n\t var requiredResults = this.runRules(value, currentValues, component._requiredValidations);\n\t\n\t // the component defines an explicit validate function\n\t if (typeof component.validate === \"function\") {\n\t validationResults.failed = component.validate() ? [] : ['failed'];\n\t }\n\t\n\t var isRequired = Object.keys(component._requiredValidations).length ? !!requiredResults.success.length : false;\n\t var isValid = !validationResults.failed.length && !(this.props.validationErrors && this.props.validationErrors[component.props.name]);\n\t\n\t return {\n\t isRequired: isRequired,\n\t isValid: isRequired ? false : isValid,\n\t error: function () {\n\t\n\t if (isValid && !isRequired) {\n\t return emptyArray;\n\t }\n\t\n\t if (validationResults.errors.length) {\n\t return validationResults.errors;\n\t }\n\t\n\t if (this.props.validationErrors && this.props.validationErrors[component.props.name]) {\n\t return typeof this.props.validationErrors[component.props.name] === 'string' ? [this.props.validationErrors[component.props.name]] : this.props.validationErrors[component.props.name];\n\t }\n\t\n\t if (isRequired) {\n\t var error = validationErrors[requiredResults.success[0]];\n\t return error ? [error] : null;\n\t }\n\t\n\t if (validationResults.failed.length) {\n\t return validationResults.failed.map(function (failed) {\n\t return validationErrors[failed] ? validationErrors[failed] : validationError;\n\t }).filter(function (x, pos, arr) {\n\t // Remove duplicates\n\t return arr.indexOf(x) === pos;\n\t });\n\t }\n\t }.call(this)\n\t };\n\t },\n\t\n\t runRules: function runRules(value, currentValues, validations) {\n\t\n\t var results = {\n\t errors: [],\n\t failed: [],\n\t success: []\n\t };\n\t if (Object.keys(validations).length) {\n\t Object.keys(validations).forEach(function (validationMethod) {\n\t\n\t if (validationRules[validationMethod] && typeof validations[validationMethod] === 'function') {\n\t throw new Error('Formsy does not allow you to override default validations: ' + validationMethod);\n\t }\n\t\n\t if (!validationRules[validationMethod] && typeof validations[validationMethod] !== 'function') {\n\t throw new Error('Formsy does not have the validation rule: ' + validationMethod);\n\t }\n\t\n\t if (typeof validations[validationMethod] === 'function') {\n\t var validation = validations[validationMethod](currentValues, value);\n\t if (typeof validation === 'string') {\n\t results.errors.push(validation);\n\t results.failed.push(validationMethod);\n\t } else if (!validation) {\n\t results.failed.push(validationMethod);\n\t }\n\t return;\n\t } else if (typeof validations[validationMethod] !== 'function') {\n\t var validation = validationRules[validationMethod](currentValues, value, validations[validationMethod]);\n\t if (typeof validation === 'string') {\n\t results.errors.push(validation);\n\t results.failed.push(validationMethod);\n\t } else if (!validation) {\n\t results.failed.push(validationMethod);\n\t } else {\n\t results.success.push(validationMethod);\n\t }\n\t return;\n\t }\n\t\n\t return results.success.push(validationMethod);\n\t });\n\t }\n\t\n\t return results;\n\t },\n\t\n\t // Validate the form by going through all child input components\n\t // and check their state\n\t validateForm: function validateForm() {\n\t var _this3 = this;\n\t\n\t // We need a callback as we are validating all inputs again. This will\n\t // run when the last component has set its state\n\t var onValidationComplete = function () {\n\t var allIsValid = this.inputs.every(function (component) {\n\t return component.state._isValid;\n\t });\n\t\n\t this.setState({\n\t isValid: allIsValid\n\t });\n\t\n\t if (allIsValid) {\n\t this.props.onValid();\n\t } else {\n\t this.props.onInvalid();\n\t }\n\t\n\t // Tell the form that it can start to trigger change events\n\t this.setState({\n\t canChange: true\n\t });\n\t }.bind(this);\n\t\n\t // Run validation again in case affected by other inputs. The\n\t // last component validated will run the onValidationComplete callback\n\t this.inputs.forEach(function (component, index) {\n\t var validation = _this3.runValidation(component);\n\t if (validation.isValid && component.state._externalError) {\n\t validation.isValid = false;\n\t }\n\t component.setState({\n\t _isValid: validation.isValid,\n\t _isRequired: validation.isRequired,\n\t _validationError: validation.error,\n\t _externalError: !validation.isValid && component.state._externalError ? component.state._externalError : null\n\t }, index === _this3.inputs.length - 1 ? onValidationComplete : null);\n\t });\n\t\n\t // If there are no inputs, set state where form is ready to trigger\n\t // change event. New inputs might be added later\n\t if (!this.inputs.length) {\n\t this.setState({\n\t canChange: true\n\t });\n\t }\n\t },\n\t\n\t // Method put on each input component to register\n\t // itself to the form\n\t attachToForm: function attachToForm(component) {\n\t\n\t if (this.inputs.indexOf(component) === -1) {\n\t this.inputs.push(component);\n\t }\n\t\n\t this.validate(component);\n\t },\n\t\n\t // Method put on each input component to unregister\n\t // itself from the form\n\t detachFromForm: function detachFromForm(component) {\n\t var componentPos = this.inputs.indexOf(component);\n\t\n\t if (componentPos !== -1) {\n\t this.inputs = this.inputs.slice(0, componentPos).concat(this.inputs.slice(componentPos + 1));\n\t }\n\t\n\t this.validateForm();\n\t },\n\t render: function render() {\n\t var _props = this.props,\n\t mapping = _props.mapping,\n\t validationErrors = _props.validationErrors,\n\t onSubmit = _props.onSubmit,\n\t onValid = _props.onValid,\n\t onValidSubmit = _props.onValidSubmit,\n\t onInvalid = _props.onInvalid,\n\t onInvalidSubmit = _props.onInvalidSubmit,\n\t onChange = _props.onChange,\n\t reset = _props.reset,\n\t preventExternalInvalidation = _props.preventExternalInvalidation,\n\t onSuccess = _props.onSuccess,\n\t onError = _props.onError,\n\t nonFormsyProps = _objectWithoutProperties(_props, ['mapping', 'validationErrors', 'onSubmit', 'onValid', 'onValidSubmit', 'onInvalid', 'onInvalidSubmit', 'onChange', 'reset', 'preventExternalInvalidation', 'onSuccess', 'onError']);\n\t\n\t return React.createElement(\n\t 'form',\n\t _extends({}, nonFormsyProps, { onSubmit: this.submit }),\n\t this.props.children\n\t );\n\t }\n\t});\n\t\n\tif (!global.exports && !global.module && (!global.define || !global.define.amd)) {\n\t global.Formsy = Formsy;\n\t}\n\t\n\tmodule.exports = Formsy;\n\t/* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }())))\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports) {\n\n\t// shim for using process in browser\n\tvar process = module.exports = {};\n\t\n\t// cached from whatever global is present so that test runners that stub it\n\t// don't break things. But we need to wrap it in a try catch in case it is\n\t// wrapped in strict mode code which doesn't define any globals. It's inside a\n\t// function because try/catches deoptimize in certain engines.\n\t\n\tvar cachedSetTimeout;\n\tvar cachedClearTimeout;\n\t\n\tfunction defaultSetTimout() {\n\t throw new Error('setTimeout has not been defined');\n\t}\n\tfunction defaultClearTimeout () {\n\t throw new Error('clearTimeout has not been defined');\n\t}\n\t(function () {\n\t try {\n\t if (typeof setTimeout === 'function') {\n\t cachedSetTimeout = setTimeout;\n\t } else {\n\t cachedSetTimeout = defaultSetTimout;\n\t }\n\t } catch (e) {\n\t cachedSetTimeout = defaultSetTimout;\n\t }\n\t try {\n\t if (typeof clearTimeout === 'function') {\n\t cachedClearTimeout = clearTimeout;\n\t } else {\n\t cachedClearTimeout = defaultClearTimeout;\n\t }\n\t } catch (e) {\n\t cachedClearTimeout = defaultClearTimeout;\n\t }\n\t} ())\n\tfunction runTimeout(fun) {\n\t if (cachedSetTimeout === setTimeout) {\n\t //normal enviroments in sane situations\n\t return setTimeout(fun, 0);\n\t }\n\t // if setTimeout wasn't available but was latter defined\n\t if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n\t cachedSetTimeout = setTimeout;\n\t return setTimeout(fun, 0);\n\t }\n\t try {\n\t // when when somebody has screwed with setTimeout but no I.E. maddness\n\t return cachedSetTimeout(fun, 0);\n\t } catch(e){\n\t try {\n\t // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n\t return cachedSetTimeout.call(null, fun, 0);\n\t } catch(e){\n\t // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n\t return cachedSetTimeout.call(this, fun, 0);\n\t }\n\t }\n\t\n\t\n\t}\n\tfunction runClearTimeout(marker) {\n\t if (cachedClearTimeout === clearTimeout) {\n\t //normal enviroments in sane situations\n\t return clearTimeout(marker);\n\t }\n\t // if clearTimeout wasn't available but was latter defined\n\t if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n\t cachedClearTimeout = clearTimeout;\n\t return clearTimeout(marker);\n\t }\n\t try {\n\t // when when somebody has screwed with setTimeout but no I.E. maddness\n\t return cachedClearTimeout(marker);\n\t } catch (e){\n\t try {\n\t // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n\t return cachedClearTimeout.call(null, marker);\n\t } catch (e){\n\t // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n\t // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n\t return cachedClearTimeout.call(this, marker);\n\t }\n\t }\n\t\n\t\n\t\n\t}\n\tvar queue = [];\n\tvar draining = false;\n\tvar currentQueue;\n\tvar queueIndex = -1;\n\t\n\tfunction cleanUpNextTick() {\n\t if (!draining || !currentQueue) {\n\t return;\n\t }\n\t draining = false;\n\t if (currentQueue.length) {\n\t queue = currentQueue.concat(queue);\n\t } else {\n\t queueIndex = -1;\n\t }\n\t if (queue.length) {\n\t drainQueue();\n\t }\n\t}\n\t\n\tfunction drainQueue() {\n\t if (draining) {\n\t return;\n\t }\n\t var timeout = runTimeout(cleanUpNextTick);\n\t draining = true;\n\t\n\t var len = queue.length;\n\t while(len) {\n\t currentQueue = queue;\n\t queue = [];\n\t while (++queueIndex < len) {\n\t if (currentQueue) {\n\t currentQueue[queueIndex].run();\n\t }\n\t }\n\t queueIndex = -1;\n\t len = queue.length;\n\t }\n\t currentQueue = null;\n\t draining = false;\n\t runClearTimeout(timeout);\n\t}\n\t\n\tprocess.nextTick = function (fun) {\n\t var args = new Array(arguments.length - 1);\n\t if (arguments.length > 1) {\n\t for (var i = 1; i < arguments.length; i++) {\n\t args[i - 1] = arguments[i];\n\t }\n\t }\n\t queue.push(new Item(fun, args));\n\t if (queue.length === 1 && !draining) {\n\t runTimeout(drainQueue);\n\t }\n\t};\n\t\n\t// v8 likes predictible objects\n\tfunction Item(fun, array) {\n\t this.fun = fun;\n\t this.array = array;\n\t}\n\tItem.prototype.run = function () {\n\t this.fun.apply(null, this.array);\n\t};\n\tprocess.title = 'browser';\n\tprocess.browser = true;\n\tprocess.env = {};\n\tprocess.argv = [];\n\tprocess.version = ''; // empty string to avoid regexp issues\n\tprocess.versions = {};\n\t\n\tfunction noop() {}\n\t\n\tprocess.on = noop;\n\tprocess.addListener = noop;\n\tprocess.once = noop;\n\tprocess.off = noop;\n\tprocess.removeListener = noop;\n\tprocess.removeAllListeners = noop;\n\tprocess.emit = noop;\n\tprocess.prependListener = noop;\n\tprocess.prependOnceListener = noop;\n\t\n\tprocess.listeners = function (name) { return [] }\n\t\n\tprocess.binding = function (name) {\n\t throw new Error('process.binding is not supported');\n\t};\n\t\n\tprocess.cwd = function () { return '/' };\n\tprocess.chdir = function (dir) {\n\t throw new Error('process.chdir is not supported');\n\t};\n\tprocess.umask = function() { return 0; };\n\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports) {\n\n\tmodule.exports = __WEBPACK_EXTERNAL_MODULE_2__;\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t/* WEBPACK VAR INJECTION */(function(process) {/**\n\t * Copyright (c) 2013-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t */\n\t\n\t'use strict';\n\t\n\t/**\n\t * Use invariant() to assert state which your program assumes to be true.\n\t *\n\t * Provide sprintf-style format (only %s is supported) and arguments\n\t * to provide information about what broke and what you were\n\t * expecting.\n\t *\n\t * The invariant message will be stripped in production, but the invariant\n\t * will remain to ensure logic does not differ in production.\n\t */\n\t\n\tvar validateFormat = function validateFormat(format) {};\n\t\n\tif (process.env.NODE_ENV !== 'production') {\n\t validateFormat = function validateFormat(format) {\n\t if (format === undefined) {\n\t throw new Error('invariant requires an error message argument');\n\t }\n\t };\n\t}\n\t\n\tfunction invariant(condition, format, a, b, c, d, e, f) {\n\t validateFormat(format);\n\t\n\t if (!condition) {\n\t var error;\n\t if (format === undefined) {\n\t error = new Error('Minified exception occurred; use the non-minified dev environment ' + 'for the full error message and additional helpful warnings.');\n\t } else {\n\t var args = [a, b, c, d, e, f];\n\t var argIndex = 0;\n\t error = new Error(format.replace(/%s/g, function () {\n\t return args[argIndex++];\n\t }));\n\t error.name = 'Invariant Violation';\n\t }\n\t\n\t error.framesToPop = 1; // we don't care about invariant's own frame\n\t throw error;\n\t }\n\t}\n\t\n\tmodule.exports = invariant;\n\t/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(1)))\n\n/***/ }),\n/* 4 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t/* WEBPACK VAR INJECTION */(function(global) {'use strict';\n\t\n\tvar PropTypes = __webpack_require__(10);\n\tvar utils = __webpack_require__(9);\n\tvar React = global.React || __webpack_require__(2);\n\t\n\tvar convertValidationsToObject = function convertValidationsToObject(validations) {\n\t\n\t if (typeof validations === 'string') {\n\t\n\t return validations.split(/\\,(?![^{\\[]*[}\\]])/g).reduce(function (validations, validation) {\n\t var args = validation.split(':');\n\t var validateMethod = args.shift();\n\t\n\t args = args.map(function (arg) {\n\t try {\n\t return JSON.parse(arg);\n\t } catch (e) {\n\t return arg; // It is a string if it can not parse it\n\t }\n\t });\n\t\n\t if (args.length > 1) {\n\t throw new Error('Formsy does not support multiple args on string validations. Use object format of validations instead.');\n\t }\n\t\n\t validations[validateMethod] = args.length ? args[0] : true;\n\t return validations;\n\t }, {});\n\t }\n\t\n\t return validations || {};\n\t};\n\t\n\tmodule.exports = {\n\t getInitialState: function getInitialState() {\n\t return {\n\t _value: this.props.value,\n\t _isRequired: false,\n\t _isValid: true,\n\t _isPristine: true,\n\t _pristineValue: this.props.value,\n\t _validationError: [],\n\t _externalError: null,\n\t _formSubmitted: false\n\t };\n\t },\n\t contextTypes: {\n\t formsy: PropTypes.object // What about required?\n\t },\n\t getDefaultProps: function getDefaultProps() {\n\t return {\n\t validationError: '',\n\t validationErrors: {}\n\t };\n\t },\n\t\n\t componentWillMount: function componentWillMount() {\n\t var configure = function () {\n\t this.setValidations(this.props.validations, this.props.required);\n\t\n\t // Pass a function instead?\n\t this.context.formsy.attachToForm(this);\n\t //this.props._attachToForm(this);\n\t }.bind(this);\n\t\n\t if (!this.props.name) {\n\t throw new Error('Form Input requires a name property when used');\n\t }\n\t\n\t /*\n\t if (!this.props._attachToForm) {\n\t return setTimeout(function () {\n\t if (!this.isMounted()) return;\n\t if (!this.props._attachToForm) {\n\t throw new Error('Form Mixin requires component to be nested in a Form');\n\t }\n\t configure();\n\t }.bind(this), 0);\n\t }\n\t */\n\t configure();\n\t },\n\t\n\t // We have to make the validate method is kept when new props are added\n\t componentWillReceiveProps: function componentWillReceiveProps(nextProps) {\n\t this.setValidations(nextProps.validations, nextProps.required);\n\t },\n\t\n\t componentDidUpdate: function componentDidUpdate(prevProps) {\n\t\n\t // If the value passed has changed, set it. If value is not passed it will\n\t // internally update, and this will never run\n\t if (!utils.isSame(this.props.value, prevProps.value)) {\n\t this.setValue(this.props.value);\n\t }\n\t\n\t // If validations or required is changed, run a new validation\n\t if (!utils.isSame(this.props.validations, prevProps.validations) || !utils.isSame(this.props.required, prevProps.required)) {\n\t this.context.formsy.validate(this);\n\t }\n\t },\n\t\n\t // Detach it when component unmounts\n\t componentWillUnmount: function componentWillUnmount() {\n\t this.context.formsy.detachFromForm(this);\n\t //this.props._detachFromForm(this);\n\t },\n\t\n\t setValidations: function setValidations(validations, required) {\n\t\n\t // Add validations to the store itself as the props object can not be modified\n\t this._validations = convertValidationsToObject(validations) || {};\n\t this._requiredValidations = required === true ? { isDefaultRequiredValue: true } : convertValidationsToObject(required);\n\t },\n\t\n\t // We validate after the value has been set\n\t setValue: function setValue(value) {\n\t this.setState({\n\t _value: value,\n\t _isPristine: false\n\t }, function () {\n\t this.context.formsy.validate(this);\n\t //this.props._validate(this);\n\t }.bind(this));\n\t },\n\t resetValue: function resetValue() {\n\t this.setState({\n\t _value: this.state._pristineValue,\n\t _isPristine: true\n\t }, function () {\n\t this.context.formsy.validate(this);\n\t //this.props._validate(this);\n\t });\n\t },\n\t getValue: function getValue() {\n\t return this.state._value;\n\t },\n\t hasValue: function hasValue() {\n\t return this.state._value !== '';\n\t },\n\t getErrorMessage: function getErrorMessage() {\n\t var messages = this.getErrorMessages();\n\t return messages.length ? messages[0] : null;\n\t },\n\t getErrorMessages: function getErrorMessages() {\n\t return !this.isValid() || this.showRequired() ? this.state._externalError || this.state._validationError || [] : [];\n\t },\n\t isFormDisabled: function isFormDisabled() {\n\t return this.context.formsy.isFormDisabled();\n\t //return this.props._isFormDisabled();\n\t },\n\t isValid: function isValid() {\n\t return this.state._isValid;\n\t },\n\t isPristine: function isPristine() {\n\t return this.state._isPristine;\n\t },\n\t isFormSubmitted: function isFormSubmitted() {\n\t return this.state._formSubmitted;\n\t },\n\t isRequired: function isRequired() {\n\t return !!this.props.required;\n\t },\n\t showRequired: function showRequired() {\n\t return this.state._isRequired;\n\t },\n\t showError: function showError() {\n\t return !this.showRequired() && !this.isValid();\n\t },\n\t isValidValue: function isValidValue(value) {\n\t return this.context.formsy.isValidValue.call(null, this, value);\n\t //return this.props._isValidValue.call(null, this, value);\n\t }\n\t};\n\t/* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }())))\n\n/***/ }),\n/* 5 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t/**\n\t * Copyright 2013-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t */\n\t\n\t'use strict';\n\t\n\tvar React = __webpack_require__(2);\n\tvar factory = __webpack_require__(14);\n\t\n\tif (typeof React === 'undefined') {\n\t throw Error(\n\t 'create-react-class could not find the React object. If you are using script tags, ' +\n\t 'make sure that React is being loaded before create-react-class.'\n\t );\n\t}\n\t\n\t// Hack to grab NoopUpdateQueue from isomorphic React\n\tvar ReactNoopUpdateQueue = new React.Component().updater;\n\t\n\tmodule.exports = factory(\n\t React.Component,\n\t React.isValidElement,\n\t ReactNoopUpdateQueue\n\t);\n\n\n/***/ }),\n/* 6 */\n/***/ (function(module, exports) {\n\n\t\"use strict\";\n\t\n\t/**\n\t * Copyright (c) 2013-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t * \n\t */\n\t\n\tfunction makeEmptyFunction(arg) {\n\t return function () {\n\t return arg;\n\t };\n\t}\n\t\n\t/**\n\t * This function accepts and discards inputs; it has no side effects. This is\n\t * primarily useful idiomatically for overridable function endpoints which\n\t * always need to be callable, since JS lacks a null-call idiom ala Cocoa.\n\t */\n\tvar emptyFunction = function emptyFunction() {};\n\t\n\temptyFunction.thatReturns = makeEmptyFunction;\n\temptyFunction.thatReturnsFalse = makeEmptyFunction(false);\n\temptyFunction.thatReturnsTrue = makeEmptyFunction(true);\n\temptyFunction.thatReturnsNull = makeEmptyFunction(null);\n\temptyFunction.thatReturnsThis = function () {\n\t return this;\n\t};\n\temptyFunction.thatReturnsArgument = function (arg) {\n\t return arg;\n\t};\n\t\n\tmodule.exports = emptyFunction;\n\n/***/ }),\n/* 7 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t/* WEBPACK VAR INJECTION */(function(process) {/**\n\t * Copyright 2014-2015, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t */\n\t\n\t'use strict';\n\t\n\tvar emptyFunction = __webpack_require__(6);\n\t\n\t/**\n\t * Similar to invariant but only logs a warning if the condition is not met.\n\t * This can be used to log issues in development environments in critical\n\t * paths. Removing the logging code for production environments will keep the\n\t * same logic and follow the same code paths.\n\t */\n\t\n\tvar warning = emptyFunction;\n\t\n\tif (process.env.NODE_ENV !== 'production') {\n\t (function () {\n\t var printWarning = function printWarning(format) {\n\t for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n\t args[_key - 1] = arguments[_key];\n\t }\n\t\n\t var argIndex = 0;\n\t var message = 'Warning: ' + format.replace(/%s/g, function () {\n\t return args[argIndex++];\n\t });\n\t if (typeof console !== 'undefined') {\n\t console.error(message);\n\t }\n\t try {\n\t // --- Welcome to debugging React ---\n\t // This error was thrown as a convenience so that you can use this stack\n\t // to find the callsite that caused this warning to fire.\n\t throw new Error(message);\n\t } catch (x) {}\n\t };\n\t\n\t warning = function warning(condition, format) {\n\t if (format === undefined) {\n\t throw new Error('`warning(condition, format, ...args)` requires a warning ' + 'message argument');\n\t }\n\t\n\t if (format.indexOf('Failed Composite propType: ') === 0) {\n\t return; // Ignore CompositeComponent proptype check.\n\t }\n\t\n\t if (!condition) {\n\t for (var _len2 = arguments.length, args = Array(_len2 > 2 ? _len2 - 2 : 0), _key2 = 2; _key2 < _len2; _key2++) {\n\t args[_key2 - 2] = arguments[_key2];\n\t }\n\t\n\t printWarning.apply(undefined, [format].concat(args));\n\t }\n\t };\n\t })();\n\t}\n\t\n\tmodule.exports = warning;\n\t/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(1)))\n\n/***/ }),\n/* 8 */\n/***/ (function(module, exports) {\n\n\t/**\n\t * Copyright 2013-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t */\n\t\n\t'use strict';\n\t\n\tvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\t\n\tmodule.exports = ReactPropTypesSecret;\n\n\n/***/ }),\n/* 9 */\n/***/ (function(module, exports) {\n\n\t'use strict';\n\t\n\tvar _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\t\n\tmodule.exports = {\n\t arraysDiffer: function arraysDiffer(a, b) {\n\t var isDifferent = false;\n\t if (a.length !== b.length) {\n\t isDifferent = true;\n\t } else {\n\t a.forEach(function (item, index) {\n\t if (!this.isSame(item, b[index])) {\n\t isDifferent = true;\n\t }\n\t }, this);\n\t }\n\t return isDifferent;\n\t },\n\t\n\t objectsDiffer: function objectsDiffer(a, b) {\n\t var isDifferent = false;\n\t if (Object.keys(a).length !== Object.keys(b).length) {\n\t isDifferent = true;\n\t } else {\n\t Object.keys(a).forEach(function (key) {\n\t if (!this.isSame(a[key], b[key])) {\n\t isDifferent = true;\n\t }\n\t }, this);\n\t }\n\t return isDifferent;\n\t },\n\t\n\t isSame: function isSame(a, b) {\n\t if ((typeof a === 'undefined' ? 'undefined' : _typeof(a)) !== (typeof b === 'undefined' ? 'undefined' : _typeof(b))) {\n\t return false;\n\t } else if (Array.isArray(a) && Array.isArray(b)) {\n\t return !this.arraysDiffer(a, b);\n\t } else if (typeof a === 'function') {\n\t return a.toString() === b.toString();\n\t } else if ((typeof a === 'undefined' ? 'undefined' : _typeof(a)) === 'object' && a !== null && b !== null) {\n\t return !this.objectsDiffer(a, b);\n\t }\n\t\n\t return a === b;\n\t },\n\t\n\t find: function find(collection, fn) {\n\t for (var i = 0, l = collection.length; i < l; i++) {\n\t var item = collection[i];\n\t if (fn(item)) {\n\t return item;\n\t }\n\t }\n\t return null;\n\t }\n\t};\n\n/***/ }),\n/* 10 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t/* WEBPACK VAR INJECTION */(function(process) {/**\n\t * Copyright 2013-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t */\n\t\n\tif (process.env.NODE_ENV !== 'production') {\n\t var REACT_ELEMENT_TYPE = (typeof Symbol === 'function' &&\n\t Symbol.for &&\n\t Symbol.for('react.element')) ||\n\t 0xeac7;\n\t\n\t var isValidElement = function(object) {\n\t return typeof object === 'object' &&\n\t object !== null &&\n\t object.$$typeof === REACT_ELEMENT_TYPE;\n\t };\n\t\n\t // By explicitly using `prop-types` you are opting into new development behavior.\n\t // http://fb.me/prop-types-in-prod\n\t var throwOnDirectAccess = true;\n\t module.exports = __webpack_require__(20)(isValidElement, throwOnDirectAccess);\n\t} else {\n\t // By explicitly using `prop-types` you are opting into new production behavior.\n\t // http://fb.me/prop-types-in-prod\n\t module.exports = __webpack_require__(19)();\n\t}\n\t\n\t/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(1)))\n\n/***/ }),\n/* 11 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t/* WEBPACK VAR INJECTION */(function(global) {'use strict';\n\t\n\tvar _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\t\n\tvar React = global.React || __webpack_require__(2);\n\tvar createReactClass = __webpack_require__(5);\n\tvar Mixin = __webpack_require__(4);\n\tmodule.exports = function () {\n\t return function (Component) {\n\t return createReactClass({\n\t mixins: [Mixin],\n\t render: function render() {\n\t return React.createElement(Component, _extends({\n\t setValidations: this.setValidations,\n\t setValue: this.setValue,\n\t resetValue: this.resetValue,\n\t getValue: this.getValue,\n\t hasValue: this.hasValue,\n\t getErrorMessage: this.getErrorMessage,\n\t getErrorMessages: this.getErrorMessages,\n\t isFormDisabled: this.isFormDisabled,\n\t isValid: this.isValid,\n\t isPristine: this.isPristine,\n\t isFormSubmitted: this.isFormSubmitted,\n\t isRequired: this.isRequired,\n\t showRequired: this.showRequired,\n\t showError: this.showError,\n\t isValidValue: this.isValidValue\n\t }, this.props));\n\t }\n\t });\n\t };\n\t};\n\t/* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }())))\n\n/***/ }),\n/* 12 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t/* WEBPACK VAR INJECTION */(function(global) {'use strict';\n\t\n\tvar _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\t\n\tvar React = global.React || __webpack_require__(2);\n\tvar createReactClass = __webpack_require__(5);\n\tvar Mixin = __webpack_require__(4);\n\tmodule.exports = function (Component) {\n\t return createReactClass({\n\t displayName: 'Formsy(' + getDisplayName(Component) + ')',\n\t mixins: [Mixin],\n\t\n\t render: function render() {\n\t var innerRef = this.props.innerRef;\n\t\n\t var propsForElement = _extends({\n\t setValidations: this.setValidations,\n\t setValue: this.setValue,\n\t resetValue: this.resetValue,\n\t getValue: this.getValue,\n\t hasValue: this.hasValue,\n\t getErrorMessage: this.getErrorMessage,\n\t getErrorMessages: this.getErrorMessages,\n\t isFormDisabled: this.isFormDisabled,\n\t isValid: this.isValid,\n\t isPristine: this.isPristine,\n\t isFormSubmitted: this.isFormSubmitted,\n\t isRequired: this.isRequired,\n\t showRequired: this.showRequired,\n\t showError: this.showError,\n\t isValidValue: this.isValidValue\n\t }, this.props);\n\t\n\t if (innerRef) {\n\t propsForElement.ref = innerRef;\n\t }\n\t return React.createElement(Component, propsForElement);\n\t }\n\t });\n\t};\n\t\n\tfunction getDisplayName(Component) {\n\t return Component.displayName || Component.name || (typeof Component === 'string' ? Component : 'Component');\n\t}\n\t/* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }())))\n\n/***/ }),\n/* 13 */\n/***/ (function(module, exports) {\n\n\t'use strict';\n\t\n\tvar _isExisty = function _isExisty(value) {\n\t return value !== null && value !== undefined;\n\t};\n\t\n\tvar isEmpty = function isEmpty(value) {\n\t return value === '';\n\t};\n\t\n\tvar validations = {\n\t isDefaultRequiredValue: function isDefaultRequiredValue(values, value) {\n\t return value === undefined || value === '';\n\t },\n\t isExisty: function isExisty(values, value) {\n\t return _isExisty(value);\n\t },\n\t matchRegexp: function matchRegexp(values, value, regexp) {\n\t return !_isExisty(value) || isEmpty(value) || regexp.test(value);\n\t },\n\t isUndefined: function isUndefined(values, value) {\n\t return value === undefined;\n\t },\n\t isEmptyString: function isEmptyString(values, value) {\n\t return isEmpty(value);\n\t },\n\t isEmail: function isEmail(values, value) {\n\t return validations.matchRegexp(values, value, /^((([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+(\\.([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+)*)|((\\x22)((((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(([\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f]|\\x21|[\\x23-\\x5b]|[\\x5d-\\x7e]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(\\\\([\\x01-\\x09\\x0b\\x0c\\x0d-\\x7f]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]))))*(((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(\\x22)))@((([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.)+(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))$/i);\n\t },\n\t isUrl: function isUrl(values, value) {\n\t return validations.matchRegexp(values, value, /^(https?|s?ftp):\\/\\/(((([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:)*@)?(((\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\.(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\.(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\.(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5]))|((([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.)+(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.?)(:\\d*)?)(\\/((([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:|@)+(\\/(([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:|@)*)*)?)?(\\?((([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:|@)|[\\uE000-\\uF8FF]|\\/|\\?)*)?(#((([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:|@)|\\/|\\?)*)?$/i);\n\t },\n\t isTrue: function isTrue(values, value) {\n\t return value === true;\n\t },\n\t isFalse: function isFalse(values, value) {\n\t return value === false;\n\t },\n\t isNumeric: function isNumeric(values, value) {\n\t if (typeof value === 'number') {\n\t return true;\n\t }\n\t return validations.matchRegexp(values, value, /^[-+]?(?:\\d*[.])?\\d+$/);\n\t },\n\t isAlpha: function isAlpha(values, value) {\n\t return validations.matchRegexp(values, value, /^[A-Z]+$/i);\n\t },\n\t isAlphanumeric: function isAlphanumeric(values, value) {\n\t return validations.matchRegexp(values, value, /^[0-9A-Z]+$/i);\n\t },\n\t isInt: function isInt(values, value) {\n\t return validations.matchRegexp(values, value, /^(?:[-+]?(?:0|[1-9]\\d*))$/);\n\t },\n\t isFloat: function isFloat(values, value) {\n\t return validations.matchRegexp(values, value, /^(?:[-+]?(?:\\d+))?(?:\\.\\d*)?(?:[eE][\\+\\-]?(?:\\d+))?$/);\n\t },\n\t isWords: function isWords(values, value) {\n\t return validations.matchRegexp(values, value, /^[A-Z\\s]+$/i);\n\t },\n\t isSpecialWords: function isSpecialWords(values, value) {\n\t return validations.matchRegexp(values, value, /^[A-Z\\s\\u00C0-\\u017F]+$/i);\n\t },\n\t isLength: function isLength(values, value, length) {\n\t return !_isExisty(value) || isEmpty(value) || value.length === length;\n\t },\n\t equals: function equals(values, value, eql) {\n\t return !_isExisty(value) || isEmpty(value) || value == eql;\n\t },\n\t equalsField: function equalsField(values, value, field) {\n\t return value == values[field];\n\t },\n\t maxLength: function maxLength(values, value, length) {\n\t return !_isExisty(value) || value.length <= length;\n\t },\n\t minLength: function minLength(values, value, length) {\n\t return !_isExisty(value) || isEmpty(value) || value.length >= length;\n\t }\n\t};\n\t\n\tmodule.exports = validations;\n\n/***/ }),\n/* 14 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t/* WEBPACK VAR INJECTION */(function(process) {/**\n\t * Copyright 2013-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t */\n\t\n\t'use strict';\n\t\n\tvar _assign = __webpack_require__(17);\n\t\n\tvar emptyObject = __webpack_require__(15);\n\tvar _invariant = __webpack_require__(3);\n\t\n\tif (process.env.NODE_ENV !== 'production') {\n\t var warning = __webpack_require__(7);\n\t}\n\t\n\tvar MIXINS_KEY = 'mixins';\n\t\n\t// Helper function to allow the creation of anonymous functions which do not\n\t// have .name set to the name of the variable being assigned to.\n\tfunction identity(fn) {\n\t return fn;\n\t}\n\t\n\tvar ReactPropTypeLocationNames;\n\tif (process.env.NODE_ENV !== 'production') {\n\t ReactPropTypeLocationNames = {\n\t prop: 'prop',\n\t context: 'context',\n\t childContext: 'child context'\n\t };\n\t} else {\n\t ReactPropTypeLocationNames = {};\n\t}\n\t\n\tfunction factory(ReactComponent, isValidElement, ReactNoopUpdateQueue) {\n\t /**\n\t * Policies that describe methods in `ReactClassInterface`.\n\t */\n\t\n\t var injectedMixins = [];\n\t\n\t /**\n\t * Composite components are higher-level components that compose other composite\n\t * or host components.\n\t *\n\t * To create a new type of `ReactClass`, pass a specification of\n\t * your new class to `React.createClass`. The only requirement of your class\n\t * specification is that you implement a `render` method.\n\t *\n\t * var MyComponent = React.createClass({\n\t * render: function() {\n\t * return
Hello World
;\n\t * }\n\t * });\n\t *\n\t * The class specification supports a specific protocol of methods that have\n\t * special meaning (e.g. `render`). See `ReactClassInterface` for\n\t * more the comprehensive protocol. Any other properties and methods in the\n\t * class specification will be available on the prototype.\n\t *\n\t * @interface ReactClassInterface\n\t * @internal\n\t */\n\t var ReactClassInterface = {\n\t /**\n\t * An array of Mixin objects to include when defining your component.\n\t *\n\t * @type {array}\n\t * @optional\n\t */\n\t mixins: 'DEFINE_MANY',\n\t\n\t /**\n\t * An object containing properties and methods that should be defined on\n\t * the component's constructor instead of its prototype (static methods).\n\t *\n\t * @type {object}\n\t * @optional\n\t */\n\t statics: 'DEFINE_MANY',\n\t\n\t /**\n\t * Definition of prop types for this component.\n\t *\n\t * @type {object}\n\t * @optional\n\t */\n\t propTypes: 'DEFINE_MANY',\n\t\n\t /**\n\t * Definition of context types for this component.\n\t *\n\t * @type {object}\n\t * @optional\n\t */\n\t contextTypes: 'DEFINE_MANY',\n\t\n\t /**\n\t * Definition of context types this component sets for its children.\n\t *\n\t * @type {object}\n\t * @optional\n\t */\n\t childContextTypes: 'DEFINE_MANY',\n\t\n\t // ==== Definition methods ====\n\t\n\t /**\n\t * Invoked when the component is mounted. Values in the mapping will be set on\n\t * `this.props` if that prop is not specified (i.e. using an `in` check).\n\t *\n\t * This method is invoked before `getInitialState` and therefore cannot rely\n\t * on `this.state` or use `this.setState`.\n\t *\n\t * @return {object}\n\t * @optional\n\t */\n\t getDefaultProps: 'DEFINE_MANY_MERGED',\n\t\n\t /**\n\t * Invoked once before the component is mounted. The return value will be used\n\t * as the initial value of `this.state`.\n\t *\n\t * getInitialState: function() {\n\t * return {\n\t * isOn: false,\n\t * fooBaz: new BazFoo()\n\t * }\n\t * }\n\t *\n\t * @return {object}\n\t * @optional\n\t */\n\t getInitialState: 'DEFINE_MANY_MERGED',\n\t\n\t /**\n\t * @return {object}\n\t * @optional\n\t */\n\t getChildContext: 'DEFINE_MANY_MERGED',\n\t\n\t /**\n\t * Uses props from `this.props` and state from `this.state` to render the\n\t * structure of the component.\n\t *\n\t * No guarantees are made about when or how often this method is invoked, so\n\t * it must not have side effects.\n\t *\n\t * render: function() {\n\t * var name = this.props.name;\n\t * return
Hello, {name}!
;\n\t * }\n\t *\n\t * @return {ReactComponent}\n\t * @required\n\t */\n\t render: 'DEFINE_ONCE',\n\t\n\t // ==== Delegate methods ====\n\t\n\t /**\n\t * Invoked when the component is initially created and about to be mounted.\n\t * This may have side effects, but any external subscriptions or data created\n\t * by this method must be cleaned up in `componentWillUnmount`.\n\t *\n\t * @optional\n\t */\n\t componentWillMount: 'DEFINE_MANY',\n\t\n\t /**\n\t * Invoked when the component has been mounted and has a DOM representation.\n\t * However, there is no guarantee that the DOM node is in the document.\n\t *\n\t * Use this as an opportunity to operate on the DOM when the component has\n\t * been mounted (initialized and rendered) for the first time.\n\t *\n\t * @param {DOMElement} rootNode DOM element representing the component.\n\t * @optional\n\t */\n\t componentDidMount: 'DEFINE_MANY',\n\t\n\t /**\n\t * Invoked before the component receives new props.\n\t *\n\t * Use this as an opportunity to react to a prop transition by updating the\n\t * state using `this.setState`. Current props are accessed via `this.props`.\n\t *\n\t * componentWillReceiveProps: function(nextProps, nextContext) {\n\t * this.setState({\n\t * likesIncreasing: nextProps.likeCount > this.props.likeCount\n\t * });\n\t * }\n\t *\n\t * NOTE: There is no equivalent `componentWillReceiveState`. An incoming prop\n\t * transition may cause a state change, but the opposite is not true. If you\n\t * need it, you are probably looking for `componentWillUpdate`.\n\t *\n\t * @param {object} nextProps\n\t * @optional\n\t */\n\t componentWillReceiveProps: 'DEFINE_MANY',\n\t\n\t /**\n\t * Invoked while deciding if the component should be updated as a result of\n\t * receiving new props, state and/or context.\n\t *\n\t * Use this as an opportunity to `return false` when you're certain that the\n\t * transition to the new props/state/context will not require a component\n\t * update.\n\t *\n\t * shouldComponentUpdate: function(nextProps, nextState, nextContext) {\n\t * return !equal(nextProps, this.props) ||\n\t * !equal(nextState, this.state) ||\n\t * !equal(nextContext, this.context);\n\t * }\n\t *\n\t * @param {object} nextProps\n\t * @param {?object} nextState\n\t * @param {?object} nextContext\n\t * @return {boolean} True if the component should update.\n\t * @optional\n\t */\n\t shouldComponentUpdate: 'DEFINE_ONCE',\n\t\n\t /**\n\t * Invoked when the component is about to update due to a transition from\n\t * `this.props`, `this.state` and `this.context` to `nextProps`, `nextState`\n\t * and `nextContext`.\n\t *\n\t * Use this as an opportunity to perform preparation before an update occurs.\n\t *\n\t * NOTE: You **cannot** use `this.setState()` in this method.\n\t *\n\t * @param {object} nextProps\n\t * @param {?object} nextState\n\t * @param {?object} nextContext\n\t * @param {ReactReconcileTransaction} transaction\n\t * @optional\n\t */\n\t componentWillUpdate: 'DEFINE_MANY',\n\t\n\t /**\n\t * Invoked when the component's DOM representation has been updated.\n\t *\n\t * Use this as an opportunity to operate on the DOM when the component has\n\t * been updated.\n\t *\n\t * @param {object} prevProps\n\t * @param {?object} prevState\n\t * @param {?object} prevContext\n\t * @param {DOMElement} rootNode DOM element representing the component.\n\t * @optional\n\t */\n\t componentDidUpdate: 'DEFINE_MANY',\n\t\n\t /**\n\t * Invoked when the component is about to be removed from its parent and have\n\t * its DOM representation destroyed.\n\t *\n\t * Use this as an opportunity to deallocate any external resources.\n\t *\n\t * NOTE: There is no `componentDidUnmount` since your component will have been\n\t * destroyed by that point.\n\t *\n\t * @optional\n\t */\n\t componentWillUnmount: 'DEFINE_MANY',\n\t\n\t // ==== Advanced methods ====\n\t\n\t /**\n\t * Updates the component's currently mounted DOM representation.\n\t *\n\t * By default, this implements React's rendering and reconciliation algorithm.\n\t * Sophisticated clients may wish to override this.\n\t *\n\t * @param {ReactReconcileTransaction} transaction\n\t * @internal\n\t * @overridable\n\t */\n\t updateComponent: 'OVERRIDE_BASE'\n\t };\n\t\n\t /**\n\t * Mapping from class specification keys to special processing functions.\n\t *\n\t * Although these are declared like instance properties in the specification\n\t * when defining classes using `React.createClass`, they are actually static\n\t * and are accessible on the constructor instead of the prototype. Despite\n\t * being static, they must be defined outside of the \"statics\" key under\n\t * which all other static methods are defined.\n\t */\n\t var RESERVED_SPEC_KEYS = {\n\t displayName: function(Constructor, displayName) {\n\t Constructor.displayName = displayName;\n\t },\n\t mixins: function(Constructor, mixins) {\n\t if (mixins) {\n\t for (var i = 0; i < mixins.length; i++) {\n\t mixSpecIntoComponent(Constructor, mixins[i]);\n\t }\n\t }\n\t },\n\t childContextTypes: function(Constructor, childContextTypes) {\n\t if (process.env.NODE_ENV !== 'production') {\n\t validateTypeDef(Constructor, childContextTypes, 'childContext');\n\t }\n\t Constructor.childContextTypes = _assign(\n\t {},\n\t Constructor.childContextTypes,\n\t childContextTypes\n\t );\n\t },\n\t contextTypes: function(Constructor, contextTypes) {\n\t if (process.env.NODE_ENV !== 'production') {\n\t validateTypeDef(Constructor, contextTypes, 'context');\n\t }\n\t Constructor.contextTypes = _assign(\n\t {},\n\t Constructor.contextTypes,\n\t contextTypes\n\t );\n\t },\n\t /**\n\t * Special case getDefaultProps which should move into statics but requires\n\t * automatic merging.\n\t */\n\t getDefaultProps: function(Constructor, getDefaultProps) {\n\t if (Constructor.getDefaultProps) {\n\t Constructor.getDefaultProps = createMergedResultFunction(\n\t Constructor.getDefaultProps,\n\t getDefaultProps\n\t );\n\t } else {\n\t Constructor.getDefaultProps = getDefaultProps;\n\t }\n\t },\n\t propTypes: function(Constructor, propTypes) {\n\t if (process.env.NODE_ENV !== 'production') {\n\t validateTypeDef(Constructor, propTypes, 'prop');\n\t }\n\t Constructor.propTypes = _assign({}, Constructor.propTypes, propTypes);\n\t },\n\t statics: function(Constructor, statics) {\n\t mixStaticSpecIntoComponent(Constructor, statics);\n\t },\n\t autobind: function() {}\n\t };\n\t\n\t function validateTypeDef(Constructor, typeDef, location) {\n\t for (var propName in typeDef) {\n\t if (typeDef.hasOwnProperty(propName)) {\n\t // use a warning instead of an _invariant so components\n\t // don't show up in prod but only in __DEV__\n\t if (process.env.NODE_ENV !== 'production') {\n\t warning(\n\t typeof typeDef[propName] === 'function',\n\t '%s: %s type `%s` is invalid; it must be a function, usually from ' +\n\t 'React.PropTypes.',\n\t Constructor.displayName || 'ReactClass',\n\t ReactPropTypeLocationNames[location],\n\t propName\n\t );\n\t }\n\t }\n\t }\n\t }\n\t\n\t function validateMethodOverride(isAlreadyDefined, name) {\n\t var specPolicy = ReactClassInterface.hasOwnProperty(name)\n\t ? ReactClassInterface[name]\n\t : null;\n\t\n\t // Disallow overriding of base class methods unless explicitly allowed.\n\t if (ReactClassMixin.hasOwnProperty(name)) {\n\t _invariant(\n\t specPolicy === 'OVERRIDE_BASE',\n\t 'ReactClassInterface: You are attempting to override ' +\n\t '`%s` from your class specification. Ensure that your method names ' +\n\t 'do not overlap with React methods.',\n\t name\n\t );\n\t }\n\t\n\t // Disallow defining methods more than once unless explicitly allowed.\n\t if (isAlreadyDefined) {\n\t _invariant(\n\t specPolicy === 'DEFINE_MANY' || specPolicy === 'DEFINE_MANY_MERGED',\n\t 'ReactClassInterface: You are attempting to define ' +\n\t '`%s` on your component more than once. This conflict may be due ' +\n\t 'to a mixin.',\n\t name\n\t );\n\t }\n\t }\n\t\n\t /**\n\t * Mixin helper which handles policy validation and reserved\n\t * specification keys when building React classes.\n\t */\n\t function mixSpecIntoComponent(Constructor, spec) {\n\t if (!spec) {\n\t if (process.env.NODE_ENV !== 'production') {\n\t var typeofSpec = typeof spec;\n\t var isMixinValid = typeofSpec === 'object' && spec !== null;\n\t\n\t if (process.env.NODE_ENV !== 'production') {\n\t warning(\n\t isMixinValid,\n\t \"%s: You're attempting to include a mixin that is either null \" +\n\t 'or not an object. Check the mixins included by the component, ' +\n\t 'as well as any mixins they include themselves. ' +\n\t 'Expected object but got %s.',\n\t Constructor.displayName || 'ReactClass',\n\t spec === null ? null : typeofSpec\n\t );\n\t }\n\t }\n\t\n\t return;\n\t }\n\t\n\t _invariant(\n\t typeof spec !== 'function',\n\t \"ReactClass: You're attempting to \" +\n\t 'use a component class or function as a mixin. Instead, just use a ' +\n\t 'regular object.'\n\t );\n\t _invariant(\n\t !isValidElement(spec),\n\t \"ReactClass: You're attempting to \" +\n\t 'use a component as a mixin. Instead, just use a regular object.'\n\t );\n\t\n\t var proto = Constructor.prototype;\n\t var autoBindPairs = proto.__reactAutoBindPairs;\n\t\n\t // By handling mixins before any other properties, we ensure the same\n\t // chaining order is applied to methods with DEFINE_MANY policy, whether\n\t // mixins are listed before or after these methods in the spec.\n\t if (spec.hasOwnProperty(MIXINS_KEY)) {\n\t RESERVED_SPEC_KEYS.mixins(Constructor, spec.mixins);\n\t }\n\t\n\t for (var name in spec) {\n\t if (!spec.hasOwnProperty(name)) {\n\t continue;\n\t }\n\t\n\t if (name === MIXINS_KEY) {\n\t // We have already handled mixins in a special case above.\n\t continue;\n\t }\n\t\n\t var property = spec[name];\n\t var isAlreadyDefined = proto.hasOwnProperty(name);\n\t validateMethodOverride(isAlreadyDefined, name);\n\t\n\t if (RESERVED_SPEC_KEYS.hasOwnProperty(name)) {\n\t RESERVED_SPEC_KEYS[name](Constructor, property);\n\t } else {\n\t // Setup methods on prototype:\n\t // The following member methods should not be automatically bound:\n\t // 1. Expected ReactClass methods (in the \"interface\").\n\t // 2. Overridden methods (that were mixed in).\n\t var isReactClassMethod = ReactClassInterface.hasOwnProperty(name);\n\t var isFunction = typeof property === 'function';\n\t var shouldAutoBind =\n\t isFunction &&\n\t !isReactClassMethod &&\n\t !isAlreadyDefined &&\n\t spec.autobind !== false;\n\t\n\t if (shouldAutoBind) {\n\t autoBindPairs.push(name, property);\n\t proto[name] = property;\n\t } else {\n\t if (isAlreadyDefined) {\n\t var specPolicy = ReactClassInterface[name];\n\t\n\t // These cases should already be caught by validateMethodOverride.\n\t _invariant(\n\t isReactClassMethod &&\n\t (specPolicy === 'DEFINE_MANY_MERGED' ||\n\t specPolicy === 'DEFINE_MANY'),\n\t 'ReactClass: Unexpected spec policy %s for key %s ' +\n\t 'when mixing in component specs.',\n\t specPolicy,\n\t name\n\t );\n\t\n\t // For methods which are defined more than once, call the existing\n\t // methods before calling the new property, merging if appropriate.\n\t if (specPolicy === 'DEFINE_MANY_MERGED') {\n\t proto[name] = createMergedResultFunction(proto[name], property);\n\t } else if (specPolicy === 'DEFINE_MANY') {\n\t proto[name] = createChainedFunction(proto[name], property);\n\t }\n\t } else {\n\t proto[name] = property;\n\t if (process.env.NODE_ENV !== 'production') {\n\t // Add verbose displayName to the function, which helps when looking\n\t // at profiling tools.\n\t if (typeof property === 'function' && spec.displayName) {\n\t proto[name].displayName = spec.displayName + '_' + name;\n\t }\n\t }\n\t }\n\t }\n\t }\n\t }\n\t }\n\t\n\t function mixStaticSpecIntoComponent(Constructor, statics) {\n\t if (!statics) {\n\t return;\n\t }\n\t for (var name in statics) {\n\t var property = statics[name];\n\t if (!statics.hasOwnProperty(name)) {\n\t continue;\n\t }\n\t\n\t var isReserved = name in RESERVED_SPEC_KEYS;\n\t _invariant(\n\t !isReserved,\n\t 'ReactClass: You are attempting to define a reserved ' +\n\t 'property, `%s`, that shouldn\\'t be on the \"statics\" key. Define it ' +\n\t 'as an instance property instead; it will still be accessible on the ' +\n\t 'constructor.',\n\t name\n\t );\n\t\n\t var isInherited = name in Constructor;\n\t _invariant(\n\t !isInherited,\n\t 'ReactClass: You are attempting to define ' +\n\t '`%s` on your component more than once. This conflict may be ' +\n\t 'due to a mixin.',\n\t name\n\t );\n\t Constructor[name] = property;\n\t }\n\t }\n\t\n\t /**\n\t * Merge two objects, but throw if both contain the same key.\n\t *\n\t * @param {object} one The first object, which is mutated.\n\t * @param {object} two The second object\n\t * @return {object} one after it has been mutated to contain everything in two.\n\t */\n\t function mergeIntoWithNoDuplicateKeys(one, two) {\n\t _invariant(\n\t one && two && typeof one === 'object' && typeof two === 'object',\n\t 'mergeIntoWithNoDuplicateKeys(): Cannot merge non-objects.'\n\t );\n\t\n\t for (var key in two) {\n\t if (two.hasOwnProperty(key)) {\n\t _invariant(\n\t one[key] === undefined,\n\t 'mergeIntoWithNoDuplicateKeys(): ' +\n\t 'Tried to merge two objects with the same key: `%s`. This conflict ' +\n\t 'may be due to a mixin; in particular, this may be caused by two ' +\n\t 'getInitialState() or getDefaultProps() methods returning objects ' +\n\t 'with clashing keys.',\n\t key\n\t );\n\t one[key] = two[key];\n\t }\n\t }\n\t return one;\n\t }\n\t\n\t /**\n\t * Creates a function that invokes two functions and merges their return values.\n\t *\n\t * @param {function} one Function to invoke first.\n\t * @param {function} two Function to invoke second.\n\t * @return {function} Function that invokes the two argument functions.\n\t * @private\n\t */\n\t function createMergedResultFunction(one, two) {\n\t return function mergedResult() {\n\t var a = one.apply(this, arguments);\n\t var b = two.apply(this, arguments);\n\t if (a == null) {\n\t return b;\n\t } else if (b == null) {\n\t return a;\n\t }\n\t var c = {};\n\t mergeIntoWithNoDuplicateKeys(c, a);\n\t mergeIntoWithNoDuplicateKeys(c, b);\n\t return c;\n\t };\n\t }\n\t\n\t /**\n\t * Creates a function that invokes two functions and ignores their return vales.\n\t *\n\t * @param {function} one Function to invoke first.\n\t * @param {function} two Function to invoke second.\n\t * @return {function} Function that invokes the two argument functions.\n\t * @private\n\t */\n\t function createChainedFunction(one, two) {\n\t return function chainedFunction() {\n\t one.apply(this, arguments);\n\t two.apply(this, arguments);\n\t };\n\t }\n\t\n\t /**\n\t * Binds a method to the component.\n\t *\n\t * @param {object} component Component whose method is going to be bound.\n\t * @param {function} method Method to be bound.\n\t * @return {function} The bound method.\n\t */\n\t function bindAutoBindMethod(component, method) {\n\t var boundMethod = method.bind(component);\n\t if (process.env.NODE_ENV !== 'production') {\n\t boundMethod.__reactBoundContext = component;\n\t boundMethod.__reactBoundMethod = method;\n\t boundMethod.__reactBoundArguments = null;\n\t var componentName = component.constructor.displayName;\n\t var _bind = boundMethod.bind;\n\t boundMethod.bind = function(newThis) {\n\t for (\n\t var _len = arguments.length,\n\t args = Array(_len > 1 ? _len - 1 : 0),\n\t _key = 1;\n\t _key < _len;\n\t _key++\n\t ) {\n\t args[_key - 1] = arguments[_key];\n\t }\n\t\n\t // User is trying to bind() an autobound method; we effectively will\n\t // ignore the value of \"this\" that the user is trying to use, so\n\t // let's warn.\n\t if (newThis !== component && newThis !== null) {\n\t if (process.env.NODE_ENV !== 'production') {\n\t warning(\n\t false,\n\t 'bind(): React component methods may only be bound to the ' +\n\t 'component instance. See %s',\n\t componentName\n\t );\n\t }\n\t } else if (!args.length) {\n\t if (process.env.NODE_ENV !== 'production') {\n\t warning(\n\t false,\n\t 'bind(): You are binding a component method to the component. ' +\n\t 'React does this for you automatically in a high-performance ' +\n\t 'way, so you can safely remove this call. See %s',\n\t componentName\n\t );\n\t }\n\t return boundMethod;\n\t }\n\t var reboundMethod = _bind.apply(boundMethod, arguments);\n\t reboundMethod.__reactBoundContext = component;\n\t reboundMethod.__reactBoundMethod = method;\n\t reboundMethod.__reactBoundArguments = args;\n\t return reboundMethod;\n\t };\n\t }\n\t return boundMethod;\n\t }\n\t\n\t /**\n\t * Binds all auto-bound methods in a component.\n\t *\n\t * @param {object} component Component whose method is going to be bound.\n\t */\n\t function bindAutoBindMethods(component) {\n\t var pairs = component.__reactAutoBindPairs;\n\t for (var i = 0; i < pairs.length; i += 2) {\n\t var autoBindKey = pairs[i];\n\t var method = pairs[i + 1];\n\t component[autoBindKey] = bindAutoBindMethod(component, method);\n\t }\n\t }\n\t\n\t var IsMountedPreMixin = {\n\t componentDidMount: function() {\n\t this.__isMounted = true;\n\t }\n\t };\n\t\n\t var IsMountedPostMixin = {\n\t componentWillUnmount: function() {\n\t this.__isMounted = false;\n\t }\n\t };\n\t\n\t /**\n\t * Add more to the ReactClass base class. These are all legacy features and\n\t * therefore not already part of the modern ReactComponent.\n\t */\n\t var ReactClassMixin = {\n\t /**\n\t * TODO: This will be deprecated because state should always keep a consistent\n\t * type signature and the only use case for this, is to avoid that.\n\t */\n\t replaceState: function(newState, callback) {\n\t this.updater.enqueueReplaceState(this, newState, callback);\n\t },\n\t\n\t /**\n\t * Checks whether or not this composite component is mounted.\n\t * @return {boolean} True if mounted, false otherwise.\n\t * @protected\n\t * @final\n\t */\n\t isMounted: function() {\n\t if (process.env.NODE_ENV !== 'production') {\n\t warning(\n\t this.__didWarnIsMounted,\n\t '%s: isMounted is deprecated. Instead, make sure to clean up ' +\n\t 'subscriptions and pending requests in componentWillUnmount to ' +\n\t 'prevent memory leaks.',\n\t (this.constructor && this.constructor.displayName) ||\n\t this.name ||\n\t 'Component'\n\t );\n\t this.__didWarnIsMounted = true;\n\t }\n\t return !!this.__isMounted;\n\t }\n\t };\n\t\n\t var ReactClassComponent = function() {};\n\t _assign(\n\t ReactClassComponent.prototype,\n\t ReactComponent.prototype,\n\t ReactClassMixin\n\t );\n\t\n\t /**\n\t * Creates a composite component class given a class specification.\n\t * See https://facebook.github.io/react/docs/top-level-api.html#react.createclass\n\t *\n\t * @param {object} spec Class specification (which must define `render`).\n\t * @return {function} Component constructor function.\n\t * @public\n\t */\n\t function createClass(spec) {\n\t // To keep our warnings more understandable, we'll use a little hack here to\n\t // ensure that Constructor.name !== 'Constructor'. This makes sure we don't\n\t // unnecessarily identify a class without displayName as 'Constructor'.\n\t var Constructor = identity(function(props, context, updater) {\n\t // This constructor gets overridden by mocks. The argument is used\n\t // by mocks to assert on what gets mounted.\n\t\n\t if (process.env.NODE_ENV !== 'production') {\n\t warning(\n\t this instanceof Constructor,\n\t 'Something is calling a React component directly. Use a factory or ' +\n\t 'JSX instead. See: https://fb.me/react-legacyfactory'\n\t );\n\t }\n\t\n\t // Wire up auto-binding\n\t if (this.__reactAutoBindPairs.length) {\n\t bindAutoBindMethods(this);\n\t }\n\t\n\t this.props = props;\n\t this.context = context;\n\t this.refs = emptyObject;\n\t this.updater = updater || ReactNoopUpdateQueue;\n\t\n\t this.state = null;\n\t\n\t // ReactClasses doesn't have constructors. Instead, they use the\n\t // getInitialState and componentWillMount methods for initialization.\n\t\n\t var initialState = this.getInitialState ? this.getInitialState() : null;\n\t if (process.env.NODE_ENV !== 'production') {\n\t // We allow auto-mocks to proceed as if they're returning null.\n\t if (\n\t initialState === undefined &&\n\t this.getInitialState._isMockFunction\n\t ) {\n\t // This is probably bad practice. Consider warning here and\n\t // deprecating this convenience.\n\t initialState = null;\n\t }\n\t }\n\t _invariant(\n\t typeof initialState === 'object' && !Array.isArray(initialState),\n\t '%s.getInitialState(): must return an object or null',\n\t Constructor.displayName || 'ReactCompositeComponent'\n\t );\n\t\n\t this.state = initialState;\n\t });\n\t Constructor.prototype = new ReactClassComponent();\n\t Constructor.prototype.constructor = Constructor;\n\t Constructor.prototype.__reactAutoBindPairs = [];\n\t\n\t injectedMixins.forEach(mixSpecIntoComponent.bind(null, Constructor));\n\t\n\t mixSpecIntoComponent(Constructor, IsMountedPreMixin);\n\t mixSpecIntoComponent(Constructor, spec);\n\t mixSpecIntoComponent(Constructor, IsMountedPostMixin);\n\t\n\t // Initialize the defaultProps property after all mixins have been merged.\n\t if (Constructor.getDefaultProps) {\n\t Constructor.defaultProps = Constructor.getDefaultProps();\n\t }\n\t\n\t if (process.env.NODE_ENV !== 'production') {\n\t // This is a tag to indicate that the use of these method names is ok,\n\t // since it's used with createClass. If it's not, then it's likely a\n\t // mistake so we'll warn you to use the static property, property\n\t // initializer or constructor respectively.\n\t if (Constructor.getDefaultProps) {\n\t Constructor.getDefaultProps.isReactClassApproved = {};\n\t }\n\t if (Constructor.prototype.getInitialState) {\n\t Constructor.prototype.getInitialState.isReactClassApproved = {};\n\t }\n\t }\n\t\n\t _invariant(\n\t Constructor.prototype.render,\n\t 'createClass(...): Class specification must implement a `render` method.'\n\t );\n\t\n\t if (process.env.NODE_ENV !== 'production') {\n\t warning(\n\t !Constructor.prototype.componentShouldUpdate,\n\t '%s has a method called ' +\n\t 'componentShouldUpdate(). Did you mean shouldComponentUpdate()? ' +\n\t 'The name is phrased as a question because the function is ' +\n\t 'expected to return a value.',\n\t spec.displayName || 'A component'\n\t );\n\t warning(\n\t !Constructor.prototype.componentWillRecieveProps,\n\t '%s has a method called ' +\n\t 'componentWillRecieveProps(). Did you mean componentWillReceiveProps()?',\n\t spec.displayName || 'A component'\n\t );\n\t }\n\t\n\t // Reduce time spent doing lookups by setting these on the prototype.\n\t for (var methodName in ReactClassInterface) {\n\t if (!Constructor.prototype[methodName]) {\n\t Constructor.prototype[methodName] = null;\n\t }\n\t }\n\t\n\t return Constructor;\n\t }\n\t\n\t return createClass;\n\t}\n\t\n\tmodule.exports = factory;\n\t\n\t/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(1)))\n\n/***/ }),\n/* 15 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t/* WEBPACK VAR INJECTION */(function(process) {/**\n\t * Copyright (c) 2013-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t */\n\t\n\t'use strict';\n\t\n\tvar emptyObject = {};\n\t\n\tif (process.env.NODE_ENV !== 'production') {\n\t Object.freeze(emptyObject);\n\t}\n\t\n\tmodule.exports = emptyObject;\n\t/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(1)))\n\n/***/ }),\n/* 16 */\n/***/ (function(module, exports) {\n\n\tfunction toObj(source) {\n\t return Object.keys(source).reduce(function (output, key) {\n\t var parentKey = key.match(/[^\\[]*/i);\n\t var paths = key.match(/\\[.*?\\]/g) || [];\n\t paths = [parentKey[0]].concat(paths).map(function (key) {\n\t return key.replace(/\\[|\\]/g, '');\n\t });\n\t var currentPath = output;\n\t while (paths.length) {\n\t var pathKey = paths.shift();\n\t\n\t if (pathKey in currentPath) {\n\t currentPath = currentPath[pathKey];\n\t } else {\n\t currentPath[pathKey] = paths.length ? isNaN(paths[0]) ? {} : [] : source[key];\n\t currentPath = currentPath[pathKey];\n\t }\n\t }\n\t\n\t return output;\n\t }, {});\n\t}\n\t\n\tfunction fromObj(obj) {\n\t function recur(newObj, propName, currVal) {\n\t if (Array.isArray(currVal) || Object.prototype.toString.call(currVal) === '[object Object]') {\n\t Object.keys(currVal).forEach(function(v) {\n\t recur(newObj, propName + \"[\" + v + \"]\", currVal[v]);\n\t });\n\t return newObj;\n\t }\n\t\n\t newObj[propName] = currVal;\n\t return newObj;\n\t }\n\t\n\t var keys = Object.keys(obj);\n\t return keys.reduce(function(newObj, propName) {\n\t return recur(newObj, propName, obj[propName]);\n\t }, {});\n\t}\n\t\n\tmodule.exports = {\n\t fromObj: fromObj,\n\t toObj: toObj\n\t}\n\n/***/ }),\n/* 17 */\n/***/ (function(module, exports) {\n\n\t/*\n\tobject-assign\n\t(c) Sindre Sorhus\n\t@license MIT\n\t*/\n\t\n\t'use strict';\n\t/* eslint-disable no-unused-vars */\n\tvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\n\tvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\tvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\t\n\tfunction toObject(val) {\n\t\tif (val === null || val === undefined) {\n\t\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t\t}\n\t\n\t\treturn Object(val);\n\t}\n\t\n\tfunction shouldUseNative() {\n\t\ttry {\n\t\t\tif (!Object.assign) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\n\t\t\t// Detect buggy property enumeration order in older V8 versions.\n\t\n\t\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\t\ttest1[5] = 'de';\n\t\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\t\treturn false;\n\t\t\t}\n\t\n\t\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\t\tvar test2 = {};\n\t\t\tfor (var i = 0; i < 10; i++) {\n\t\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t\t}\n\t\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\t\treturn test2[n];\n\t\t\t});\n\t\t\tif (order2.join('') !== '0123456789') {\n\t\t\t\treturn false;\n\t\t\t}\n\t\n\t\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\t\tvar test3 = {};\n\t\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\t\ttest3[letter] = letter;\n\t\t\t});\n\t\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\t\treturn false;\n\t\t\t}\n\t\n\t\t\treturn true;\n\t\t} catch (err) {\n\t\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\t\treturn false;\n\t\t}\n\t}\n\t\n\tmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\t\tvar from;\n\t\tvar to = toObject(target);\n\t\tvar symbols;\n\t\n\t\tfor (var s = 1; s < arguments.length; s++) {\n\t\t\tfrom = Object(arguments[s]);\n\t\n\t\t\tfor (var key in from) {\n\t\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\t\tto[key] = from[key];\n\t\t\t\t}\n\t\t\t}\n\t\n\t\t\tif (getOwnPropertySymbols) {\n\t\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\n\t\treturn to;\n\t};\n\n\n/***/ }),\n/* 18 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t/* WEBPACK VAR INJECTION */(function(process) {/**\n\t * Copyright 2013-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t */\n\t\n\t'use strict';\n\t\n\tif (process.env.NODE_ENV !== 'production') {\n\t var invariant = __webpack_require__(3);\n\t var warning = __webpack_require__(7);\n\t var ReactPropTypesSecret = __webpack_require__(8);\n\t var loggedTypeFailures = {};\n\t}\n\t\n\t/**\n\t * Assert that the values match with the type specs.\n\t * Error messages are memorized and will only be shown once.\n\t *\n\t * @param {object} typeSpecs Map of name to a ReactPropType\n\t * @param {object} values Runtime values that need to be type-checked\n\t * @param {string} location e.g. \"prop\", \"context\", \"child context\"\n\t * @param {string} componentName Name of the component for error messages.\n\t * @param {?Function} getStack Returns the component stack.\n\t * @private\n\t */\n\tfunction checkPropTypes(typeSpecs, values, location, componentName, getStack) {\n\t if (process.env.NODE_ENV !== 'production') {\n\t for (var typeSpecName in typeSpecs) {\n\t if (typeSpecs.hasOwnProperty(typeSpecName)) {\n\t var error;\n\t // Prop type validation may throw. In case they do, we don't want to\n\t // fail the render phase where it didn't fail before. So we log it.\n\t // After these have been cleaned up, we'll let them throw.\n\t try {\n\t // This is intentionally an invariant that gets caught. It's the same\n\t // behavior as without this statement except with a better message.\n\t invariant(typeof typeSpecs[typeSpecName] === 'function', '%s: %s type `%s` is invalid; it must be a function, usually from ' + 'React.PropTypes.', componentName || 'React class', location, typeSpecName);\n\t error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret);\n\t } catch (ex) {\n\t error = ex;\n\t }\n\t warning(!error || error instanceof Error, '%s: type specification of %s `%s` is invalid; the type checker ' + 'function must return `null` or an `Error` but returned a %s. ' + 'You may have forgotten to pass an argument to the type checker ' + 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' + 'shape all require an argument).', componentName || 'React class', location, typeSpecName, typeof error);\n\t if (error instanceof Error && !(error.message in loggedTypeFailures)) {\n\t // Only monitor this failure once because there tends to be a lot of the\n\t // same error.\n\t loggedTypeFailures[error.message] = true;\n\t\n\t var stack = getStack ? getStack() : '';\n\t\n\t warning(false, 'Failed %s type: %s%s', location, error.message, stack != null ? stack : '');\n\t }\n\t }\n\t }\n\t }\n\t}\n\t\n\tmodule.exports = checkPropTypes;\n\t\n\t/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(1)))\n\n/***/ }),\n/* 19 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t/**\n\t * Copyright 2013-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t */\n\t\n\t'use strict';\n\t\n\tvar emptyFunction = __webpack_require__(6);\n\tvar invariant = __webpack_require__(3);\n\tvar ReactPropTypesSecret = __webpack_require__(8);\n\t\n\tmodule.exports = function() {\n\t function shim(props, propName, componentName, location, propFullName, secret) {\n\t if (secret === ReactPropTypesSecret) {\n\t // It is still safe when called from React.\n\t return;\n\t }\n\t invariant(\n\t false,\n\t 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n\t 'Use PropTypes.checkPropTypes() to call them. ' +\n\t 'Read more at http://fb.me/use-check-prop-types'\n\t );\n\t };\n\t shim.isRequired = shim;\n\t function getShim() {\n\t return shim;\n\t };\n\t // Important!\n\t // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n\t var ReactPropTypes = {\n\t array: shim,\n\t bool: shim,\n\t func: shim,\n\t number: shim,\n\t object: shim,\n\t string: shim,\n\t symbol: shim,\n\t\n\t any: shim,\n\t arrayOf: getShim,\n\t element: shim,\n\t instanceOf: getShim,\n\t node: shim,\n\t objectOf: getShim,\n\t oneOf: getShim,\n\t oneOfType: getShim,\n\t shape: getShim\n\t };\n\t\n\t ReactPropTypes.checkPropTypes = emptyFunction;\n\t ReactPropTypes.PropTypes = ReactPropTypes;\n\t\n\t return ReactPropTypes;\n\t};\n\n\n/***/ }),\n/* 20 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t/* WEBPACK VAR INJECTION */(function(process) {/**\n\t * Copyright 2013-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t */\n\t\n\t'use strict';\n\t\n\tvar emptyFunction = __webpack_require__(6);\n\tvar invariant = __webpack_require__(3);\n\tvar warning = __webpack_require__(7);\n\t\n\tvar ReactPropTypesSecret = __webpack_require__(8);\n\tvar checkPropTypes = __webpack_require__(18);\n\t\n\tmodule.exports = function(isValidElement, throwOnDirectAccess) {\n\t /* global Symbol */\n\t var ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\n\t var FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec.\n\t\n\t /**\n\t * Returns the iterator method function contained on the iterable object.\n\t *\n\t * Be sure to invoke the function with the iterable as context:\n\t *\n\t * var iteratorFn = getIteratorFn(myIterable);\n\t * if (iteratorFn) {\n\t * var iterator = iteratorFn.call(myIterable);\n\t * ...\n\t * }\n\t *\n\t * @param {?object} maybeIterable\n\t * @return {?function}\n\t */\n\t function getIteratorFn(maybeIterable) {\n\t var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);\n\t if (typeof iteratorFn === 'function') {\n\t return iteratorFn;\n\t }\n\t }\n\t\n\t /**\n\t * Collection of methods that allow declaration and validation of props that are\n\t * supplied to React components. Example usage:\n\t *\n\t * var Props = require('ReactPropTypes');\n\t * var MyArticle = React.createClass({\n\t * propTypes: {\n\t * // An optional string prop named \"description\".\n\t * description: Props.string,\n\t *\n\t * // A required enum prop named \"category\".\n\t * category: Props.oneOf(['News','Photos']).isRequired,\n\t *\n\t * // A prop named \"dialog\" that requires an instance of Dialog.\n\t * dialog: Props.instanceOf(Dialog).isRequired\n\t * },\n\t * render: function() { ... }\n\t * });\n\t *\n\t * A more formal specification of how these methods are used:\n\t *\n\t * type := array|bool|func|object|number|string|oneOf([...])|instanceOf(...)\n\t * decl := ReactPropTypes.{type}(.isRequired)?\n\t *\n\t * Each and every declaration produces a function with the same signature. This\n\t * allows the creation of custom validation functions. For example:\n\t *\n\t * var MyLink = React.createClass({\n\t * propTypes: {\n\t * // An optional string or URI prop named \"href\".\n\t * href: function(props, propName, componentName) {\n\t * var propValue = props[propName];\n\t * if (propValue != null && typeof propValue !== 'string' &&\n\t * !(propValue instanceof URI)) {\n\t * return new Error(\n\t * 'Expected a string or an URI for ' + propName + ' in ' +\n\t * componentName\n\t * );\n\t * }\n\t * }\n\t * },\n\t * render: function() {...}\n\t * });\n\t *\n\t * @internal\n\t */\n\t\n\t var ANONYMOUS = '<>';\n\t\n\t // Important!\n\t // Keep this list in sync with production version in `./factoryWithThrowingShims.js`.\n\t var ReactPropTypes = {\n\t array: createPrimitiveTypeChecker('array'),\n\t bool: createPrimitiveTypeChecker('boolean'),\n\t func: createPrimitiveTypeChecker('function'),\n\t number: createPrimitiveTypeChecker('number'),\n\t object: createPrimitiveTypeChecker('object'),\n\t string: createPrimitiveTypeChecker('string'),\n\t symbol: createPrimitiveTypeChecker('symbol'),\n\t\n\t any: createAnyTypeChecker(),\n\t arrayOf: createArrayOfTypeChecker,\n\t element: createElementTypeChecker(),\n\t instanceOf: createInstanceTypeChecker,\n\t node: createNodeChecker(),\n\t objectOf: createObjectOfTypeChecker,\n\t oneOf: createEnumTypeChecker,\n\t oneOfType: createUnionTypeChecker,\n\t shape: createShapeTypeChecker\n\t };\n\t\n\t /**\n\t * inlined Object.is polyfill to avoid requiring consumers ship their own\n\t * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n\t */\n\t /*eslint-disable no-self-compare*/\n\t function is(x, y) {\n\t // SameValue algorithm\n\t if (x === y) {\n\t // Steps 1-5, 7-10\n\t // Steps 6.b-6.e: +0 != -0\n\t return x !== 0 || 1 / x === 1 / y;\n\t } else {\n\t // Step 6.a: NaN == NaN\n\t return x !== x && y !== y;\n\t }\n\t }\n\t /*eslint-enable no-self-compare*/\n\t\n\t /**\n\t * We use an Error-like object for backward compatibility as people may call\n\t * PropTypes directly and inspect their output. However, we don't use real\n\t * Errors anymore. We don't inspect their stack anyway, and creating them\n\t * is prohibitively expensive if they are created too often, such as what\n\t * happens in oneOfType() for any type before the one that matched.\n\t */\n\t function PropTypeError(message) {\n\t this.message = message;\n\t this.stack = '';\n\t }\n\t // Make `instanceof Error` still work for returned errors.\n\t PropTypeError.prototype = Error.prototype;\n\t\n\t function createChainableTypeChecker(validate) {\n\t if (process.env.NODE_ENV !== 'production') {\n\t var manualPropTypeCallCache = {};\n\t var manualPropTypeWarningCount = 0;\n\t }\n\t function checkType(isRequired, props, propName, componentName, location, propFullName, secret) {\n\t componentName = componentName || ANONYMOUS;\n\t propFullName = propFullName || propName;\n\t\n\t if (secret !== ReactPropTypesSecret) {\n\t if (throwOnDirectAccess) {\n\t // New behavior only for users of `prop-types` package\n\t invariant(\n\t false,\n\t 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n\t 'Use `PropTypes.checkPropTypes()` to call them. ' +\n\t 'Read more at http://fb.me/use-check-prop-types'\n\t );\n\t } else if (process.env.NODE_ENV !== 'production' && typeof console !== 'undefined') {\n\t // Old behavior for people using React.PropTypes\n\t var cacheKey = componentName + ':' + propName;\n\t if (\n\t !manualPropTypeCallCache[cacheKey] &&\n\t // Avoid spamming the console because they are often not actionable except for lib authors\n\t manualPropTypeWarningCount < 3\n\t ) {\n\t warning(\n\t false,\n\t 'You are manually calling a React.PropTypes validation ' +\n\t 'function for the `%s` prop on `%s`. This is deprecated ' +\n\t 'and will throw in the standalone `prop-types` package. ' +\n\t 'You may be seeing this warning due to a third-party PropTypes ' +\n\t 'library. See https://fb.me/react-warning-dont-call-proptypes ' + 'for details.',\n\t propFullName,\n\t componentName\n\t );\n\t manualPropTypeCallCache[cacheKey] = true;\n\t manualPropTypeWarningCount++;\n\t }\n\t }\n\t }\n\t if (props[propName] == null) {\n\t if (isRequired) {\n\t if (props[propName] === null) {\n\t return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required ' + ('in `' + componentName + '`, but its value is `null`.'));\n\t }\n\t return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required in ' + ('`' + componentName + '`, but its value is `undefined`.'));\n\t }\n\t return null;\n\t } else {\n\t return validate(props, propName, componentName, location, propFullName);\n\t }\n\t }\n\t\n\t var chainedCheckType = checkType.bind(null, false);\n\t chainedCheckType.isRequired = checkType.bind(null, true);\n\t\n\t return chainedCheckType;\n\t }\n\t\n\t function createPrimitiveTypeChecker(expectedType) {\n\t function validate(props, propName, componentName, location, propFullName, secret) {\n\t var propValue = props[propName];\n\t var propType = getPropType(propValue);\n\t if (propType !== expectedType) {\n\t // `propValue` being instance of, say, date/regexp, pass the 'object'\n\t // check, but we can offer a more precise error message here rather than\n\t // 'of type `object`'.\n\t var preciseType = getPreciseType(propValue);\n\t\n\t return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + preciseType + '` supplied to `' + componentName + '`, expected ') + ('`' + expectedType + '`.'));\n\t }\n\t return null;\n\t }\n\t return createChainableTypeChecker(validate);\n\t }\n\t\n\t function createAnyTypeChecker() {\n\t return createChainableTypeChecker(emptyFunction.thatReturnsNull);\n\t }\n\t\n\t function createArrayOfTypeChecker(typeChecker) {\n\t function validate(props, propName, componentName, location, propFullName) {\n\t if (typeof typeChecker !== 'function') {\n\t return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside arrayOf.');\n\t }\n\t var propValue = props[propName];\n\t if (!Array.isArray(propValue)) {\n\t var propType = getPropType(propValue);\n\t return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an array.'));\n\t }\n\t for (var i = 0; i < propValue.length; i++) {\n\t var error = typeChecker(propValue, i, componentName, location, propFullName + '[' + i + ']', ReactPropTypesSecret);\n\t if (error instanceof Error) {\n\t return error;\n\t }\n\t }\n\t return null;\n\t }\n\t return createChainableTypeChecker(validate);\n\t }\n\t\n\t function createElementTypeChecker() {\n\t function validate(props, propName, componentName, location, propFullName) {\n\t var propValue = props[propName];\n\t if (!isValidElement(propValue)) {\n\t var propType = getPropType(propValue);\n\t return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement.'));\n\t }\n\t return null;\n\t }\n\t return createChainableTypeChecker(validate);\n\t }\n\t\n\t function createInstanceTypeChecker(expectedClass) {\n\t function validate(props, propName, componentName, location, propFullName) {\n\t if (!(props[propName] instanceof expectedClass)) {\n\t var expectedClassName = expectedClass.name || ANONYMOUS;\n\t var actualClassName = getClassName(props[propName]);\n\t return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + actualClassName + '` supplied to `' + componentName + '`, expected ') + ('instance of `' + expectedClassName + '`.'));\n\t }\n\t return null;\n\t }\n\t return createChainableTypeChecker(validate);\n\t }\n\t\n\t function createEnumTypeChecker(expectedValues) {\n\t if (!Array.isArray(expectedValues)) {\n\t process.env.NODE_ENV !== 'production' ? warning(false, 'Invalid argument supplied to oneOf, expected an instance of array.') : void 0;\n\t return emptyFunction.thatReturnsNull;\n\t }\n\t\n\t function validate(props, propName, componentName, location, propFullName) {\n\t var propValue = props[propName];\n\t for (var i = 0; i < expectedValues.length; i++) {\n\t if (is(propValue, expectedValues[i])) {\n\t return null;\n\t }\n\t }\n\t\n\t var valuesString = JSON.stringify(expectedValues);\n\t return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of value `' + propValue + '` ' + ('supplied to `' + componentName + '`, expected one of ' + valuesString + '.'));\n\t }\n\t return createChainableTypeChecker(validate);\n\t }\n\t\n\t function createObjectOfTypeChecker(typeChecker) {\n\t function validate(props, propName, componentName, location, propFullName) {\n\t if (typeof typeChecker !== 'function') {\n\t return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside objectOf.');\n\t }\n\t var propValue = props[propName];\n\t var propType = getPropType(propValue);\n\t if (propType !== 'object') {\n\t return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an object.'));\n\t }\n\t for (var key in propValue) {\n\t if (propValue.hasOwnProperty(key)) {\n\t var error = typeChecker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n\t if (error instanceof Error) {\n\t return error;\n\t }\n\t }\n\t }\n\t return null;\n\t }\n\t return createChainableTypeChecker(validate);\n\t }\n\t\n\t function createUnionTypeChecker(arrayOfTypeCheckers) {\n\t if (!Array.isArray(arrayOfTypeCheckers)) {\n\t process.env.NODE_ENV !== 'production' ? warning(false, 'Invalid argument supplied to oneOfType, expected an instance of array.') : void 0;\n\t return emptyFunction.thatReturnsNull;\n\t }\n\t\n\t for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n\t var checker = arrayOfTypeCheckers[i];\n\t if (typeof checker !== 'function') {\n\t warning(\n\t false,\n\t 'Invalid argument supplid to oneOfType. Expected an array of check functions, but ' +\n\t 'received %s at index %s.',\n\t getPostfixForTypeWarning(checker),\n\t i\n\t );\n\t return emptyFunction.thatReturnsNull;\n\t }\n\t }\n\t\n\t function validate(props, propName, componentName, location, propFullName) {\n\t for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n\t var checker = arrayOfTypeCheckers[i];\n\t if (checker(props, propName, componentName, location, propFullName, ReactPropTypesSecret) == null) {\n\t return null;\n\t }\n\t }\n\t\n\t return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`.'));\n\t }\n\t return createChainableTypeChecker(validate);\n\t }\n\t\n\t function createNodeChecker() {\n\t function validate(props, propName, componentName, location, propFullName) {\n\t if (!isNode(props[propName])) {\n\t return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`, expected a ReactNode.'));\n\t }\n\t return null;\n\t }\n\t return createChainableTypeChecker(validate);\n\t }\n\t\n\t function createShapeTypeChecker(shapeTypes) {\n\t function validate(props, propName, componentName, location, propFullName) {\n\t var propValue = props[propName];\n\t var propType = getPropType(propValue);\n\t if (propType !== 'object') {\n\t return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n\t }\n\t for (var key in shapeTypes) {\n\t var checker = shapeTypes[key];\n\t if (!checker) {\n\t continue;\n\t }\n\t var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n\t if (error) {\n\t return error;\n\t }\n\t }\n\t return null;\n\t }\n\t return createChainableTypeChecker(validate);\n\t }\n\t\n\t function isNode(propValue) {\n\t switch (typeof propValue) {\n\t case 'number':\n\t case 'string':\n\t case 'undefined':\n\t return true;\n\t case 'boolean':\n\t return !propValue;\n\t case 'object':\n\t if (Array.isArray(propValue)) {\n\t return propValue.every(isNode);\n\t }\n\t if (propValue === null || isValidElement(propValue)) {\n\t return true;\n\t }\n\t\n\t var iteratorFn = getIteratorFn(propValue);\n\t if (iteratorFn) {\n\t var iterator = iteratorFn.call(propValue);\n\t var step;\n\t if (iteratorFn !== propValue.entries) {\n\t while (!(step = iterator.next()).done) {\n\t if (!isNode(step.value)) {\n\t return false;\n\t }\n\t }\n\t } else {\n\t // Iterator will provide entry [k,v] tuples rather than values.\n\t while (!(step = iterator.next()).done) {\n\t var entry = step.value;\n\t if (entry) {\n\t if (!isNode(entry[1])) {\n\t return false;\n\t }\n\t }\n\t }\n\t }\n\t } else {\n\t return false;\n\t }\n\t\n\t return true;\n\t default:\n\t return false;\n\t }\n\t }\n\t\n\t function isSymbol(propType, propValue) {\n\t // Native Symbol.\n\t if (propType === 'symbol') {\n\t return true;\n\t }\n\t\n\t // 19.4.3.5 Symbol.prototype[@@toStringTag] === 'Symbol'\n\t if (propValue['@@toStringTag'] === 'Symbol') {\n\t return true;\n\t }\n\t\n\t // Fallback for non-spec compliant Symbols which are polyfilled.\n\t if (typeof Symbol === 'function' && propValue instanceof Symbol) {\n\t return true;\n\t }\n\t\n\t return false;\n\t }\n\t\n\t // Equivalent of `typeof` but with special handling for array and regexp.\n\t function getPropType(propValue) {\n\t var propType = typeof propValue;\n\t if (Array.isArray(propValue)) {\n\t return 'array';\n\t }\n\t if (propValue instanceof RegExp) {\n\t // Old webkits (at least until Android 4.0) return 'function' rather than\n\t // 'object' for typeof a RegExp. We'll normalize this here so that /bla/\n\t // passes PropTypes.object.\n\t return 'object';\n\t }\n\t if (isSymbol(propType, propValue)) {\n\t return 'symbol';\n\t }\n\t return propType;\n\t }\n\t\n\t // This handles more types than `getPropType`. Only used for error messages.\n\t // See `createPrimitiveTypeChecker`.\n\t function getPreciseType(propValue) {\n\t if (typeof propValue === 'undefined' || propValue === null) {\n\t return '' + propValue;\n\t }\n\t var propType = getPropType(propValue);\n\t if (propType === 'object') {\n\t if (propValue instanceof Date) {\n\t return 'date';\n\t } else if (propValue instanceof RegExp) {\n\t return 'regexp';\n\t }\n\t }\n\t return propType;\n\t }\n\t\n\t // Returns a string that is postfixed to a warning about an invalid type.\n\t // For example, \"undefined\" or \"of type array\"\n\t function getPostfixForTypeWarning(value) {\n\t var type = getPreciseType(value);\n\t switch (type) {\n\t case 'array':\n\t case 'object':\n\t return 'an ' + type;\n\t case 'boolean':\n\t case 'date':\n\t case 'regexp':\n\t return 'a ' + type;\n\t default:\n\t return type;\n\t }\n\t }\n\t\n\t // Returns class name of the object, if any.\n\t function getClassName(propValue) {\n\t if (!propValue.constructor || !propValue.constructor.name) {\n\t return ANONYMOUS;\n\t }\n\t return propValue.constructor.name;\n\t }\n\t\n\t ReactPropTypes.checkPropTypes = checkPropTypes;\n\t ReactPropTypes.PropTypes = ReactPropTypes;\n\t\n\t return ReactPropTypes;\n\t};\n\t\n\t/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(1)))\n\n/***/ })\n/******/ ])\n});\n;\n\n\n// WEBPACK FOOTER //\n// formsy-react.js"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId])\n \t\t\treturn installedModules[moduleId].exports;\n\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\texports: {},\n \t\t\tid: moduleId,\n \t\t\tloaded: false\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.loaded = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(0);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap 67aa5951eee519299929","var PropTypes = require('prop-types');\nvar React = global.React || require('react');\nvar createReactClass = require('create-react-class');\nvar Formsy = {};\nvar validationRules = require('./validationRules.js');\nvar formDataToObject = require('form-data-to-object');\nvar utils = require('./utils.js');\nvar Mixin = require('./Mixin.js');\nvar HOC = require('./HOC.js');\nvar Decorator = require('./Decorator.js');\nvar options = {};\nvar emptyArray = [];\n\nFormsy.Mixin = Mixin;\nFormsy.HOC = HOC;\nFormsy.Decorator = Decorator;\n\nFormsy.defaults = function (passedOptions) {\n options = passedOptions;\n};\n\nFormsy.addValidationRule = function (name, func) {\n validationRules[name] = func;\n};\n\nFormsy.Form = createReactClass({\n displayName: 'Formsy',\n getInitialState: function () {\n return {\n isValid: true,\n isSubmitting: false,\n canChange: false\n };\n },\n getDefaultProps: function () {\n return {\n onSuccess: function () {},\n onError: function () {},\n onSubmit: function () {},\n onValidSubmit: function () {},\n onInvalidSubmit: function () {},\n onValid: function () {},\n onInvalid: function () {},\n onChange: function () {},\n validationErrors: null,\n preventExternalInvalidation: false\n };\n },\n\n childContextTypes: {\n formsy: PropTypes.object\n },\n getChildContext: function () {\n return {\n formsy: {\n attachToForm: this.attachToForm,\n detachFromForm: this.detachFromForm,\n validate: this.validate,\n isFormDisabled: this.isFormDisabled,\n isValidValue: (component, value) => {\n return this.runValidation(component, value).isValid;\n }\n }\n }\n },\n\n // Add a map to store the inputs of the form, a model to store\n // the values of the form and register child inputs\n componentWillMount: function () {\n this.inputs = [];\n },\n\n componentDidMount: function () {\n this.validateForm();\n },\n\n componentWillUpdate: function () {\n // Keep a reference to input names before form updates,\n // to check if inputs has changed after render\n this.prevInputNames = this.inputs.map(component => component.props.name);\n },\n\n componentDidUpdate: function () {\n\n if (this.props.validationErrors && typeof this.props.validationErrors === 'object' && Object.keys(this.props.validationErrors).length > 0) {\n this.setInputValidationErrors(this.props.validationErrors);\n }\n\n var newInputNames = this.inputs.map(component => component.props.name);\n if (utils.arraysDiffer(this.prevInputNames, newInputNames)) {\n this.validateForm();\n }\n\n },\n\n // Allow resetting to specified data\n reset: function (data) {\n this.setFormPristine(true);\n this.resetModel(data);\n },\n\n // Update model, submit to url prop and send the model\n submit: function (event) {\n\n event && event.preventDefault();\n\n // Trigger form as not pristine.\n // If any inputs have not been touched yet this will make them dirty\n // so validation becomes visible (if based on isPristine)\n this.setFormPristine(false);\n var model = this.getModel();\n this.props.onSubmit(model, this.resetModel, this.updateInputsWithError);\n this.state.isValid ? this.props.onValidSubmit(model, this.resetModel, this.updateInputsWithError) : this.props.onInvalidSubmit(model, this.resetModel, this.updateInputsWithError);\n\n },\n\n mapModel: function (model) {\n\n if (this.props.mapping) {\n return this.props.mapping(model)\n } else {\n return formDataToObject.toObj(Object.keys(model).reduce((mappedModel, key) => {\n\n var keyArray = key.split('.');\n var base = mappedModel;\n while (keyArray.length) {\n var currentKey = keyArray.shift();\n base = (base[currentKey] = keyArray.length ? base[currentKey] || {} : model[key]);\n }\n\n return mappedModel;\n\n }, {}));\n }\n },\n\n getModel: function () {\n var currentValues = this.getCurrentValues();\n return this.mapModel(currentValues);\n },\n\n // Reset each key in the model to the original / initial / specified value\n resetModel: function (data) {\n this.inputs.forEach(component => {\n var name = component.props.name;\n if (data && data.hasOwnProperty(name)) {\n component.setValue(data[name]);\n } else {\n component.resetValue();\n }\n });\n this.validateForm();\n },\n\n setInputValidationErrors: function (errors) {\n this.inputs.forEach(component => {\n var name = component.props.name;\n var args = [{\n _isValid: !(name in errors),\n _validationError: typeof errors[name] === 'string' ? [errors[name]] : errors[name]\n }];\n component.setState.apply(component, args);\n });\n },\n\n // Checks if the values have changed from their initial value\n isChanged: function() {\n return !utils.isSame(this.getPristineValues(), this.getCurrentValues());\n },\n\n getPristineValues: function() {\n return this.inputs.reduce((data, component) => {\n var name = component.props.name;\n data[name] = component.props.value;\n return data;\n }, {});\n },\n\n // Go through errors from server and grab the components\n // stored in the inputs map. Change their state to invalid\n // and set the serverError message\n updateInputsWithError: function (errors) {\n Object.keys(errors).forEach((name, index) => {\n var component = utils.find(this.inputs, component => component.props.name === name);\n if (!component) {\n throw new Error('You are trying to update an input that does not exist. ' +\n 'Verify errors object with input names. ' + JSON.stringify(errors));\n }\n var args = [{\n _isValid: this.props.preventExternalInvalidation || false,\n _externalError: typeof errors[name] === 'string' ? [errors[name]] : errors[name]\n }];\n component.setState.apply(component, args);\n });\n },\n\n isFormDisabled: function () {\n return this.props.disabled;\n },\n\n getCurrentValues: function () {\n return this.inputs.reduce((data, component) => {\n var name = component.props.name;\n data[name] = component.state._value;\n return data;\n }, {});\n },\n\n setFormPristine: function (isPristine) {\n this.setState({\n _formSubmitted: !isPristine\n });\n\n // Iterate through each component and set it as pristine\n // or \"dirty\".\n this.inputs.forEach((component, index) => {\n component.setState({\n _formSubmitted: !isPristine,\n _isPristine: isPristine\n });\n });\n },\n\n // Use the binded values and the actual input value to\n // validate the input and set its state. Then check the\n // state of the form itself\n validate: function (component) {\n\n // Trigger onChange\n if (this.state.canChange) {\n this.props.onChange(this.getCurrentValues(), this.isChanged());\n }\n\n var validation = this.runValidation(component);\n // Run through the validations, split them up and call\n // the validator IF there is a value or it is required\n component.setState({\n _isValid: validation.isValid,\n _isRequired: validation.isRequired,\n _validationError: validation.error,\n _externalError: null\n }, this.validateForm);\n\n },\n\n // Checks validation on current value or a passed value\n runValidation: function (component, value) {\n\n var currentValues = this.getCurrentValues();\n var validationErrors = component.props.validationErrors;\n var validationError = component.props.validationError;\n value = arguments.length === 2 ? value : component.state._value;\n\n var validationResults = this.runRules(value, currentValues, component._validations);\n var requiredResults = this.runRules(value, currentValues, component._requiredValidations);\n\n // the component defines an explicit validate function\n if (typeof component.validate === \"function\") {\n validationResults.failed = component.validate() ? [] : ['failed'];\n }\n\n var isRequired = Object.keys(component._requiredValidations).length ? !!requiredResults.success.length : false;\n var isValid = !validationResults.failed.length && !(this.props.validationErrors && this.props.validationErrors[component.props.name]);\n\n return {\n isRequired: isRequired,\n isValid: isRequired ? false : isValid,\n error: (function () {\n\n if (isValid && !isRequired) {\n return emptyArray;\n }\n\n if (validationResults.errors.length) {\n return validationResults.errors;\n }\n\n if (this.props.validationErrors && this.props.validationErrors[component.props.name]) {\n return typeof this.props.validationErrors[component.props.name] === 'string' ? [this.props.validationErrors[component.props.name]] : this.props.validationErrors[component.props.name];\n }\n\n if (isRequired) {\n var error = validationErrors[requiredResults.success[0]];\n return error ? [error] : null;\n }\n\n if (validationResults.failed.length) {\n return validationResults.failed.map(function(failed) {\n return validationErrors[failed] ? validationErrors[failed] : validationError;\n }).filter(function(x, pos, arr) {\n // Remove duplicates\n return arr.indexOf(x) === pos;\n });\n }\n\n }.call(this))\n };\n\n },\n\n runRules: function (value, currentValues, validations) {\n\n var results = {\n errors: [],\n failed: [],\n success: []\n };\n if (Object.keys(validations).length) {\n Object.keys(validations).forEach(function (validationMethod) {\n\n if (validationRules[validationMethod] && typeof validations[validationMethod] === 'function') {\n throw new Error('Formsy does not allow you to override default validations: ' + validationMethod);\n }\n\n if (!validationRules[validationMethod] && typeof validations[validationMethod] !== 'function') {\n throw new Error('Formsy does not have the validation rule: ' + validationMethod);\n }\n\n if (typeof validations[validationMethod] === 'function') {\n var validation = validations[validationMethod](currentValues, value);\n if (typeof validation === 'string') {\n results.errors.push(validation);\n results.failed.push(validationMethod);\n } else if (!validation) {\n results.failed.push(validationMethod);\n }\n return;\n\n } else if (typeof validations[validationMethod] !== 'function') {\n var validation = validationRules[validationMethod](currentValues, value, validations[validationMethod]);\n if (typeof validation === 'string') {\n results.errors.push(validation);\n results.failed.push(validationMethod);\n } else if (!validation) {\n results.failed.push(validationMethod);\n } else {\n results.success.push(validationMethod);\n }\n return;\n\n }\n\n return results.success.push(validationMethod);\n\n });\n }\n\n return results;\n\n },\n\n // Validate the form by going through all child input components\n // and check their state\n validateForm: function () {\n\n // We need a callback as we are validating all inputs again. This will\n // run when the last component has set its state\n var onValidationComplete = function () {\n var allIsValid = this.inputs.every(component => {\n return component.state._isValid;\n });\n\n this.setState({\n isValid: allIsValid\n });\n\n if (allIsValid) {\n this.props.onValid();\n } else {\n this.props.onInvalid();\n }\n\n // Tell the form that it can start to trigger change events\n this.setState({\n canChange: true\n });\n\n }.bind(this);\n\n // Run validation again in case affected by other inputs. The\n // last component validated will run the onValidationComplete callback\n this.inputs.forEach((component, index) => {\n var validation = this.runValidation(component);\n if (validation.isValid && component.state._externalError) {\n validation.isValid = false;\n }\n component.setState({\n _isValid: validation.isValid,\n _isRequired: validation.isRequired,\n _validationError: validation.error,\n _externalError: !validation.isValid && component.state._externalError ? component.state._externalError : null\n }, index === this.inputs.length - 1 ? onValidationComplete : null);\n });\n\n // If there are no inputs, set state where form is ready to trigger\n // change event. New inputs might be added later\n if (!this.inputs.length) {\n this.setState({\n canChange: true\n });\n }\n },\n\n // Method put on each input component to register\n // itself to the form\n attachToForm: function (component) {\n\n if (this.inputs.indexOf(component) === -1) {\n this.inputs.push(component);\n }\n\n this.validate(component);\n },\n\n // Method put on each input component to unregister\n // itself from the form\n detachFromForm: function (component) {\n var componentPos = this.inputs.indexOf(component);\n\n if (componentPos !== -1) {\n this.inputs = this.inputs.slice(0, componentPos)\n .concat(this.inputs.slice(componentPos + 1));\n }\n\n this.validateForm();\n },\n render: function () {\n var {\n mapping,\n validationErrors,\n onSubmit,\n onValid,\n onValidSubmit,\n onInvalid,\n onInvalidSubmit,\n onChange,\n reset,\n preventExternalInvalidation,\n onSuccess,\n onError,\n ...nonFormsyProps\n } = this.props;\n\n return (\n
\n {this.props.children}\n
\n );\n\n }\n});\n\nif (!global.exports && !global.module && (!global.define || !global.define.amd)) {\n global.Formsy = Formsy;\n}\n\nmodule.exports = Formsy;\n\n\n\n// WEBPACK FOOTER //\n// ./src/main.js","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/process/browser.js\n// module id = 1\n// module chunks = 0","module.exports = __WEBPACK_EXTERNAL_MODULE_2__;\n\n\n//////////////////\n// WEBPACK FOOTER\n// external \"react\"\n// module id = 2\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\n/**\n * Use invariant() to assert state which your program assumes to be true.\n *\n * Provide sprintf-style format (only %s is supported) and arguments\n * to provide information about what broke and what you were\n * expecting.\n *\n * The invariant message will be stripped in production, but the invariant\n * will remain to ensure logic does not differ in production.\n */\n\nvar validateFormat = function validateFormat(format) {};\n\nif (process.env.NODE_ENV !== 'production') {\n validateFormat = function validateFormat(format) {\n if (format === undefined) {\n throw new Error('invariant requires an error message argument');\n }\n };\n}\n\nfunction invariant(condition, format, a, b, c, d, e, f) {\n validateFormat(format);\n\n if (!condition) {\n var error;\n if (format === undefined) {\n error = new Error('Minified exception occurred; use the non-minified dev environment ' + 'for the full error message and additional helpful warnings.');\n } else {\n var args = [a, b, c, d, e, f];\n var argIndex = 0;\n error = new Error(format.replace(/%s/g, function () {\n return args[argIndex++];\n }));\n error.name = 'Invariant Violation';\n }\n\n error.framesToPop = 1; // we don't care about invariant's own frame\n throw error;\n }\n}\n\nmodule.exports = invariant;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/fbjs/lib/invariant.js\n// module id = 3\n// module chunks = 0","var PropTypes = require('prop-types');\nvar utils = require('./utils.js');\nvar React = global.React || require('react');\n\nvar convertValidationsToObject = function (validations) {\n\n if (typeof validations === 'string') {\n\n return validations.split(/\\,(?![^{\\[]*[}\\]])/g).reduce(function (validations, validation) {\n var args = validation.split(':');\n var validateMethod = args.shift();\n\n args = args.map(function (arg) {\n try {\n return JSON.parse(arg);\n } catch (e) {\n return arg; // It is a string if it can not parse it\n }\n });\n\n if (args.length > 1) {\n throw new Error('Formsy does not support multiple args on string validations. Use object format of validations instead.');\n }\n\n validations[validateMethod] = args.length ? args[0] : true;\n return validations;\n }, {});\n\n }\n\n return validations || {};\n};\n\nmodule.exports = {\n getInitialState: function () {\n return {\n _value: this.props.value,\n _isRequired: false,\n _isValid: true,\n _isPristine: true,\n _pristineValue: this.props.value,\n _validationError: [],\n _externalError: null,\n _formSubmitted: false\n };\n },\n contextTypes: {\n formsy: PropTypes.object // What about required?\n },\n getDefaultProps: function () {\n return {\n validationError: '',\n validationErrors: {}\n };\n },\n\n componentWillMount: function () {\n var configure = function () {\n this.setValidations(this.props.validations, this.props.required);\n\n // Pass a function instead?\n this.context.formsy.attachToForm(this);\n //this.props._attachToForm(this);\n }.bind(this);\n\n if (!this.props.name) {\n throw new Error('Form Input requires a name property when used');\n }\n\n /*\n if (!this.props._attachToForm) {\n return setTimeout(function () {\n if (!this.isMounted()) return;\n if (!this.props._attachToForm) {\n throw new Error('Form Mixin requires component to be nested in a Form');\n }\n configure();\n }.bind(this), 0);\n }\n */\n configure();\n },\n\n // We have to make the validate method is kept when new props are added\n componentWillReceiveProps: function (nextProps) {\n this.setValidations(nextProps.validations, nextProps.required);\n\n },\n\n componentDidUpdate: function (prevProps) {\n\n // If the value passed has changed, set it. If value is not passed it will\n // internally update, and this will never run\n if (!utils.isSame(this.props.value, prevProps.value)) {\n this.setValue(this.props.value);\n }\n\n // If validations or required is changed, run a new validation\n if (!utils.isSame(this.props.validations, prevProps.validations) || !utils.isSame(this.props.required, prevProps.required)) {\n this.context.formsy.validate(this);\n }\n },\n\n // Detach it when component unmounts\n componentWillUnmount: function () {\n this.context.formsy.detachFromForm(this);\n //this.props._detachFromForm(this);\n },\n\n setValidations: function (validations, required) {\n\n // Add validations to the store itself as the props object can not be modified\n this._validations = convertValidationsToObject(validations) || {};\n this._requiredValidations = required === true ? {isDefaultRequiredValue: true} : convertValidationsToObject(required);\n\n },\n\n // We validate after the value has been set\n setValue: function (value) {\n this.setState({\n _value: value,\n _isPristine: false\n }, function () {\n this.context.formsy.validate(this);\n //this.props._validate(this);\n }.bind(this));\n },\n resetValue: function () {\n this.setState({\n _value: this.state._pristineValue,\n _isPristine: true\n }, function () {\n this.context.formsy.validate(this);\n //this.props._validate(this);\n });\n },\n getValue: function () {\n return this.state._value;\n },\n hasValue: function () {\n return this.state._value !== '';\n },\n getErrorMessage: function () {\n var messages = this.getErrorMessages();\n return messages.length ? messages[0] : null;\n },\n getErrorMessages: function () {\n return !this.isValid() || this.showRequired() ? (this.state._externalError || this.state._validationError || []) : [];\n },\n isFormDisabled: function () {\n return this.context.formsy.isFormDisabled();\n //return this.props._isFormDisabled();\n },\n isValid: function () {\n return this.state._isValid;\n },\n isPristine: function () {\n return this.state._isPristine;\n },\n isFormSubmitted: function () {\n return this.state._formSubmitted;\n },\n isRequired: function () {\n return !!this.props.required;\n },\n showRequired: function () {\n return this.state._isRequired;\n },\n showError: function () {\n return !this.showRequired() && !this.isValid();\n },\n isValidValue: function (value) {\n return this.context.formsy.isValidValue.call(null, this, value);\n //return this.props._isValidValue.call(null, this, value);\n }\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/Mixin.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar React = require('react');\nvar factory = require('./factory');\n\nif (typeof React === 'undefined') {\n throw Error(\n 'create-react-class could not find the React object. If you are using script tags, ' +\n 'make sure that React is being loaded before create-react-class.'\n );\n}\n\n// Hack to grab NoopUpdateQueue from isomorphic React\nvar ReactNoopUpdateQueue = new React.Component().updater;\n\nmodule.exports = factory(\n React.Component,\n React.isValidElement,\n ReactNoopUpdateQueue\n);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/create-react-class/index.js\n// module id = 5\n// module chunks = 0","\"use strict\";\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\nfunction makeEmptyFunction(arg) {\n return function () {\n return arg;\n };\n}\n\n/**\n * This function accepts and discards inputs; it has no side effects. This is\n * primarily useful idiomatically for overridable function endpoints which\n * always need to be callable, since JS lacks a null-call idiom ala Cocoa.\n */\nvar emptyFunction = function emptyFunction() {};\n\nemptyFunction.thatReturns = makeEmptyFunction;\nemptyFunction.thatReturnsFalse = makeEmptyFunction(false);\nemptyFunction.thatReturnsTrue = makeEmptyFunction(true);\nemptyFunction.thatReturnsNull = makeEmptyFunction(null);\nemptyFunction.thatReturnsThis = function () {\n return this;\n};\nemptyFunction.thatReturnsArgument = function (arg) {\n return arg;\n};\n\nmodule.exports = emptyFunction;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/fbjs/lib/emptyFunction.js\n// module id = 6\n// module chunks = 0","/**\n * Copyright 2014-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar emptyFunction = require('./emptyFunction');\n\n/**\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\nvar warning = emptyFunction;\n\nif (process.env.NODE_ENV !== 'production') {\n (function () {\n var printWarning = function printWarning(format) {\n for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n var argIndex = 0;\n var message = 'Warning: ' + format.replace(/%s/g, function () {\n return args[argIndex++];\n });\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n };\n\n warning = function warning(condition, format) {\n if (format === undefined) {\n throw new Error('`warning(condition, format, ...args)` requires a warning ' + 'message argument');\n }\n\n if (format.indexOf('Failed Composite propType: ') === 0) {\n return; // Ignore CompositeComponent proptype check.\n }\n\n if (!condition) {\n for (var _len2 = arguments.length, args = Array(_len2 > 2 ? _len2 - 2 : 0), _key2 = 2; _key2 < _len2; _key2++) {\n args[_key2 - 2] = arguments[_key2];\n }\n\n printWarning.apply(undefined, [format].concat(args));\n }\n };\n })();\n}\n\nmodule.exports = warning;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/fbjs/lib/warning.js\n// module id = 7\n// module chunks = 0","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/prop-types/lib/ReactPropTypesSecret.js\n// module id = 8\n// module chunks = 0","module.exports = {\n arraysDiffer: function (a, b) {\n var isDifferent = false;\n if (a.length !== b.length) {\n isDifferent = true;\n } else {\n a.forEach(function (item, index) {\n if (!this.isSame(item, b[index])) {\n isDifferent = true;\n }\n }, this);\n }\n return isDifferent;\n },\n\n objectsDiffer: function (a, b) {\n var isDifferent = false;\n if (Object.keys(a).length !== Object.keys(b).length) {\n isDifferent = true;\n } else {\n Object.keys(a).forEach(function (key) {\n if (!this.isSame(a[key], b[key])) {\n isDifferent = true;\n }\n }, this);\n }\n return isDifferent;\n },\n\n isSame: function (a, b) {\n if (typeof a !== typeof b) {\n return false;\n } else if (Array.isArray(a) && Array.isArray(b)) {\n return !this.arraysDiffer(a, b);\n } else if (typeof a === 'function') {\n return a.toString() === b.toString();\n } else if (typeof a === 'object' && a !== null && b !== null) {\n return !this.objectsDiffer(a, b);\n }\n\n return a === b;\n },\n\n find: function (collection, fn) {\n for (var i = 0, l = collection.length; i < l; i++) {\n var item = collection[i];\n if (fn(item)) {\n return item;\n }\n }\n return null;\n }\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/utils.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var REACT_ELEMENT_TYPE = (typeof Symbol === 'function' &&\n Symbol.for &&\n Symbol.for('react.element')) ||\n 0xeac7;\n\n var isValidElement = function(object) {\n return typeof object === 'object' &&\n object !== null &&\n object.$$typeof === REACT_ELEMENT_TYPE;\n };\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(isValidElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/prop-types/index.js\n// module id = 10\n// module chunks = 0","var React = global.React || require('react');\nvar createReactClass = require('create-react-class');\nvar Mixin = require('./Mixin.js');\nmodule.exports = function () {\n return function (Component) {\n return createReactClass({\n mixins: [Mixin],\n render: function () {\n return React.createElement(Component, {\n setValidations: this.setValidations,\n setValue: this.setValue,\n resetValue: this.resetValue,\n getValue: this.getValue,\n hasValue: this.hasValue,\n getErrorMessage: this.getErrorMessage,\n getErrorMessages: this.getErrorMessages,\n isFormDisabled: this.isFormDisabled,\n isValid: this.isValid,\n isPristine: this.isPristine,\n isFormSubmitted: this.isFormSubmitted,\n isRequired: this.isRequired,\n showRequired: this.showRequired,\n showError: this.showError,\n isValidValue: this.isValidValue,\n ...this.props\n });\n }\n });\n };\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/Decorator.js","var React = global.React || require('react');\nvar createReactClass = require('create-react-class');\nvar Mixin = require('./Mixin.js');\nmodule.exports = function (Component) {\n return createReactClass({\n displayName: 'Formsy(' + getDisplayName(Component) + ')',\n mixins: [Mixin],\n\n render: function () {\n const { innerRef } = this.props;\n const propsForElement = {\n setValidations: this.setValidations,\n setValue: this.setValue,\n resetValue: this.resetValue,\n getValue: this.getValue,\n hasValue: this.hasValue,\n getErrorMessage: this.getErrorMessage,\n getErrorMessages: this.getErrorMessages,\n isFormDisabled: this.isFormDisabled,\n isValid: this.isValid,\n isPristine: this.isPristine,\n isFormSubmitted: this.isFormSubmitted,\n isRequired: this.isRequired,\n showRequired: this.showRequired,\n showError: this.showError,\n isValidValue: this.isValidValue,\n ...this.props\n };\n\n if (innerRef) {\n propsForElement.ref = innerRef;\n }\n return React.createElement(Component, propsForElement);\n }\n });\n};\n\nfunction getDisplayName(Component) {\n return (\n Component.displayName ||\n Component.name ||\n (typeof Component === 'string' ? Component : 'Component')\n );\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/HOC.js","var isExisty = function (value) {\n return value !== null && value !== undefined;\n};\n\nvar isEmpty = function (value) {\n return value === '';\n};\n\nvar validations = {\n isDefaultRequiredValue: function (values, value) {\n return value === undefined || value === '';\n },\n isExisty: function (values, value) {\n return isExisty(value);\n },\n matchRegexp: function (values, value, regexp) {\n return !isExisty(value) || isEmpty(value) || regexp.test(value);\n },\n isUndefined: function (values, value) {\n return value === undefined;\n },\n isEmptyString: function (values, value) {\n return isEmpty(value);\n },\n isEmail: function (values, value) {\n return validations.matchRegexp(values, value, /^((([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+(\\.([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+)*)|((\\x22)((((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(([\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f]|\\x21|[\\x23-\\x5b]|[\\x5d-\\x7e]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(\\\\([\\x01-\\x09\\x0b\\x0c\\x0d-\\x7f]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]))))*(((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(\\x22)))@((([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.)+(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))$/i);\n },\n isUrl: function (values, value) {\n return validations.matchRegexp(values, value, /^(https?|s?ftp):\\/\\/(((([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:)*@)?(((\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\.(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\.(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\.(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5]))|((([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.)+(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.?)(:\\d*)?)(\\/((([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:|@)+(\\/(([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:|@)*)*)?)?(\\?((([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:|@)|[\\uE000-\\uF8FF]|\\/|\\?)*)?(#((([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:|@)|\\/|\\?)*)?$/i);\n },\n isTrue: function (values, value) {\n return value === true;\n },\n isFalse: function (values, value) {\n return value === false;\n },\n isNumeric: function (values, value) {\n if (typeof value === 'number') {\n return true;\n }\n return validations.matchRegexp(values, value, /^[-+]?(?:\\d*[.])?\\d+$/);\n },\n isAlpha: function (values, value) {\n return validations.matchRegexp(values, value, /^[A-Z]+$/i);\n },\n isAlphanumeric: function (values, value) {\n return validations.matchRegexp(values, value, /^[0-9A-Z]+$/i);\n },\n isInt: function (values, value) {\n return validations.matchRegexp(values, value, /^(?:[-+]?(?:0|[1-9]\\d*))$/);\n },\n isFloat: function (values, value) {\n return validations.matchRegexp(values, value, /^(?:[-+]?(?:\\d+))?(?:\\.\\d*)?(?:[eE][\\+\\-]?(?:\\d+))?$/);\n },\n isWords: function (values, value) {\n return validations.matchRegexp(values, value, /^[A-Z\\s]+$/i);\n },\n isSpecialWords: function (values, value) {\n return validations.matchRegexp(values, value, /^[A-Z\\s\\u00C0-\\u017F]+$/i);\n },\n isLength: function (values, value, length) {\n return !isExisty(value) || isEmpty(value) || value.length === length;\n },\n equals: function (values, value, eql) {\n return !isExisty(value) || isEmpty(value) || value == eql;\n },\n equalsField: function (values, value, field) {\n return value == values[field];\n },\n maxLength: function (values, value, length) {\n return !isExisty(value) || value.length <= length;\n },\n minLength: function (values, value, length) {\n return !isExisty(value) || isEmpty(value) || value.length >= length;\n }\n};\n\nmodule.exports = validations;\n\n\n\n// WEBPACK FOOTER //\n// ./src/validationRules.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar _assign = require('object-assign');\n\nvar emptyObject = require('fbjs/lib/emptyObject');\nvar _invariant = require('fbjs/lib/invariant');\n\nif (process.env.NODE_ENV !== 'production') {\n var warning = require('fbjs/lib/warning');\n}\n\nvar MIXINS_KEY = 'mixins';\n\n// Helper function to allow the creation of anonymous functions which do not\n// have .name set to the name of the variable being assigned to.\nfunction identity(fn) {\n return fn;\n}\n\nvar ReactPropTypeLocationNames;\nif (process.env.NODE_ENV !== 'production') {\n ReactPropTypeLocationNames = {\n prop: 'prop',\n context: 'context',\n childContext: 'child context'\n };\n} else {\n ReactPropTypeLocationNames = {};\n}\n\nfunction factory(ReactComponent, isValidElement, ReactNoopUpdateQueue) {\n /**\n * Policies that describe methods in `ReactClassInterface`.\n */\n\n var injectedMixins = [];\n\n /**\n * Composite components are higher-level components that compose other composite\n * or host components.\n *\n * To create a new type of `ReactClass`, pass a specification of\n * your new class to `React.createClass`. The only requirement of your class\n * specification is that you implement a `render` method.\n *\n * var MyComponent = React.createClass({\n * render: function() {\n * return
Hello World
;\n * }\n * });\n *\n * The class specification supports a specific protocol of methods that have\n * special meaning (e.g. `render`). See `ReactClassInterface` for\n * more the comprehensive protocol. Any other properties and methods in the\n * class specification will be available on the prototype.\n *\n * @interface ReactClassInterface\n * @internal\n */\n var ReactClassInterface = {\n /**\n * An array of Mixin objects to include when defining your component.\n *\n * @type {array}\n * @optional\n */\n mixins: 'DEFINE_MANY',\n\n /**\n * An object containing properties and methods that should be defined on\n * the component's constructor instead of its prototype (static methods).\n *\n * @type {object}\n * @optional\n */\n statics: 'DEFINE_MANY',\n\n /**\n * Definition of prop types for this component.\n *\n * @type {object}\n * @optional\n */\n propTypes: 'DEFINE_MANY',\n\n /**\n * Definition of context types for this component.\n *\n * @type {object}\n * @optional\n */\n contextTypes: 'DEFINE_MANY',\n\n /**\n * Definition of context types this component sets for its children.\n *\n * @type {object}\n * @optional\n */\n childContextTypes: 'DEFINE_MANY',\n\n // ==== Definition methods ====\n\n /**\n * Invoked when the component is mounted. Values in the mapping will be set on\n * `this.props` if that prop is not specified (i.e. using an `in` check).\n *\n * This method is invoked before `getInitialState` and therefore cannot rely\n * on `this.state` or use `this.setState`.\n *\n * @return {object}\n * @optional\n */\n getDefaultProps: 'DEFINE_MANY_MERGED',\n\n /**\n * Invoked once before the component is mounted. The return value will be used\n * as the initial value of `this.state`.\n *\n * getInitialState: function() {\n * return {\n * isOn: false,\n * fooBaz: new BazFoo()\n * }\n * }\n *\n * @return {object}\n * @optional\n */\n getInitialState: 'DEFINE_MANY_MERGED',\n\n /**\n * @return {object}\n * @optional\n */\n getChildContext: 'DEFINE_MANY_MERGED',\n\n /**\n * Uses props from `this.props` and state from `this.state` to render the\n * structure of the component.\n *\n * No guarantees are made about when or how often this method is invoked, so\n * it must not have side effects.\n *\n * render: function() {\n * var name = this.props.name;\n * return
Hello, {name}!
;\n * }\n *\n * @return {ReactComponent}\n * @required\n */\n render: 'DEFINE_ONCE',\n\n // ==== Delegate methods ====\n\n /**\n * Invoked when the component is initially created and about to be mounted.\n * This may have side effects, but any external subscriptions or data created\n * by this method must be cleaned up in `componentWillUnmount`.\n *\n * @optional\n */\n componentWillMount: 'DEFINE_MANY',\n\n /**\n * Invoked when the component has been mounted and has a DOM representation.\n * However, there is no guarantee that the DOM node is in the document.\n *\n * Use this as an opportunity to operate on the DOM when the component has\n * been mounted (initialized and rendered) for the first time.\n *\n * @param {DOMElement} rootNode DOM element representing the component.\n * @optional\n */\n componentDidMount: 'DEFINE_MANY',\n\n /**\n * Invoked before the component receives new props.\n *\n * Use this as an opportunity to react to a prop transition by updating the\n * state using `this.setState`. Current props are accessed via `this.props`.\n *\n * componentWillReceiveProps: function(nextProps, nextContext) {\n * this.setState({\n * likesIncreasing: nextProps.likeCount > this.props.likeCount\n * });\n * }\n *\n * NOTE: There is no equivalent `componentWillReceiveState`. An incoming prop\n * transition may cause a state change, but the opposite is not true. If you\n * need it, you are probably looking for `componentWillUpdate`.\n *\n * @param {object} nextProps\n * @optional\n */\n componentWillReceiveProps: 'DEFINE_MANY',\n\n /**\n * Invoked while deciding if the component should be updated as a result of\n * receiving new props, state and/or context.\n *\n * Use this as an opportunity to `return false` when you're certain that the\n * transition to the new props/state/context will not require a component\n * update.\n *\n * shouldComponentUpdate: function(nextProps, nextState, nextContext) {\n * return !equal(nextProps, this.props) ||\n * !equal(nextState, this.state) ||\n * !equal(nextContext, this.context);\n * }\n *\n * @param {object} nextProps\n * @param {?object} nextState\n * @param {?object} nextContext\n * @return {boolean} True if the component should update.\n * @optional\n */\n shouldComponentUpdate: 'DEFINE_ONCE',\n\n /**\n * Invoked when the component is about to update due to a transition from\n * `this.props`, `this.state` and `this.context` to `nextProps`, `nextState`\n * and `nextContext`.\n *\n * Use this as an opportunity to perform preparation before an update occurs.\n *\n * NOTE: You **cannot** use `this.setState()` in this method.\n *\n * @param {object} nextProps\n * @param {?object} nextState\n * @param {?object} nextContext\n * @param {ReactReconcileTransaction} transaction\n * @optional\n */\n componentWillUpdate: 'DEFINE_MANY',\n\n /**\n * Invoked when the component's DOM representation has been updated.\n *\n * Use this as an opportunity to operate on the DOM when the component has\n * been updated.\n *\n * @param {object} prevProps\n * @param {?object} prevState\n * @param {?object} prevContext\n * @param {DOMElement} rootNode DOM element representing the component.\n * @optional\n */\n componentDidUpdate: 'DEFINE_MANY',\n\n /**\n * Invoked when the component is about to be removed from its parent and have\n * its DOM representation destroyed.\n *\n * Use this as an opportunity to deallocate any external resources.\n *\n * NOTE: There is no `componentDidUnmount` since your component will have been\n * destroyed by that point.\n *\n * @optional\n */\n componentWillUnmount: 'DEFINE_MANY',\n\n // ==== Advanced methods ====\n\n /**\n * Updates the component's currently mounted DOM representation.\n *\n * By default, this implements React's rendering and reconciliation algorithm.\n * Sophisticated clients may wish to override this.\n *\n * @param {ReactReconcileTransaction} transaction\n * @internal\n * @overridable\n */\n updateComponent: 'OVERRIDE_BASE'\n };\n\n /**\n * Mapping from class specification keys to special processing functions.\n *\n * Although these are declared like instance properties in the specification\n * when defining classes using `React.createClass`, they are actually static\n * and are accessible on the constructor instead of the prototype. Despite\n * being static, they must be defined outside of the \"statics\" key under\n * which all other static methods are defined.\n */\n var RESERVED_SPEC_KEYS = {\n displayName: function(Constructor, displayName) {\n Constructor.displayName = displayName;\n },\n mixins: function(Constructor, mixins) {\n if (mixins) {\n for (var i = 0; i < mixins.length; i++) {\n mixSpecIntoComponent(Constructor, mixins[i]);\n }\n }\n },\n childContextTypes: function(Constructor, childContextTypes) {\n if (process.env.NODE_ENV !== 'production') {\n validateTypeDef(Constructor, childContextTypes, 'childContext');\n }\n Constructor.childContextTypes = _assign(\n {},\n Constructor.childContextTypes,\n childContextTypes\n );\n },\n contextTypes: function(Constructor, contextTypes) {\n if (process.env.NODE_ENV !== 'production') {\n validateTypeDef(Constructor, contextTypes, 'context');\n }\n Constructor.contextTypes = _assign(\n {},\n Constructor.contextTypes,\n contextTypes\n );\n },\n /**\n * Special case getDefaultProps which should move into statics but requires\n * automatic merging.\n */\n getDefaultProps: function(Constructor, getDefaultProps) {\n if (Constructor.getDefaultProps) {\n Constructor.getDefaultProps = createMergedResultFunction(\n Constructor.getDefaultProps,\n getDefaultProps\n );\n } else {\n Constructor.getDefaultProps = getDefaultProps;\n }\n },\n propTypes: function(Constructor, propTypes) {\n if (process.env.NODE_ENV !== 'production') {\n validateTypeDef(Constructor, propTypes, 'prop');\n }\n Constructor.propTypes = _assign({}, Constructor.propTypes, propTypes);\n },\n statics: function(Constructor, statics) {\n mixStaticSpecIntoComponent(Constructor, statics);\n },\n autobind: function() {}\n };\n\n function validateTypeDef(Constructor, typeDef, location) {\n for (var propName in typeDef) {\n if (typeDef.hasOwnProperty(propName)) {\n // use a warning instead of an _invariant so components\n // don't show up in prod but only in __DEV__\n if (process.env.NODE_ENV !== 'production') {\n warning(\n typeof typeDef[propName] === 'function',\n '%s: %s type `%s` is invalid; it must be a function, usually from ' +\n 'React.PropTypes.',\n Constructor.displayName || 'ReactClass',\n ReactPropTypeLocationNames[location],\n propName\n );\n }\n }\n }\n }\n\n function validateMethodOverride(isAlreadyDefined, name) {\n var specPolicy = ReactClassInterface.hasOwnProperty(name)\n ? ReactClassInterface[name]\n : null;\n\n // Disallow overriding of base class methods unless explicitly allowed.\n if (ReactClassMixin.hasOwnProperty(name)) {\n _invariant(\n specPolicy === 'OVERRIDE_BASE',\n 'ReactClassInterface: You are attempting to override ' +\n '`%s` from your class specification. Ensure that your method names ' +\n 'do not overlap with React methods.',\n name\n );\n }\n\n // Disallow defining methods more than once unless explicitly allowed.\n if (isAlreadyDefined) {\n _invariant(\n specPolicy === 'DEFINE_MANY' || specPolicy === 'DEFINE_MANY_MERGED',\n 'ReactClassInterface: You are attempting to define ' +\n '`%s` on your component more than once. This conflict may be due ' +\n 'to a mixin.',\n name\n );\n }\n }\n\n /**\n * Mixin helper which handles policy validation and reserved\n * specification keys when building React classes.\n */\n function mixSpecIntoComponent(Constructor, spec) {\n if (!spec) {\n if (process.env.NODE_ENV !== 'production') {\n var typeofSpec = typeof spec;\n var isMixinValid = typeofSpec === 'object' && spec !== null;\n\n if (process.env.NODE_ENV !== 'production') {\n warning(\n isMixinValid,\n \"%s: You're attempting to include a mixin that is either null \" +\n 'or not an object. Check the mixins included by the component, ' +\n 'as well as any mixins they include themselves. ' +\n 'Expected object but got %s.',\n Constructor.displayName || 'ReactClass',\n spec === null ? null : typeofSpec\n );\n }\n }\n\n return;\n }\n\n _invariant(\n typeof spec !== 'function',\n \"ReactClass: You're attempting to \" +\n 'use a component class or function as a mixin. Instead, just use a ' +\n 'regular object.'\n );\n _invariant(\n !isValidElement(spec),\n \"ReactClass: You're attempting to \" +\n 'use a component as a mixin. Instead, just use a regular object.'\n );\n\n var proto = Constructor.prototype;\n var autoBindPairs = proto.__reactAutoBindPairs;\n\n // By handling mixins before any other properties, we ensure the same\n // chaining order is applied to methods with DEFINE_MANY policy, whether\n // mixins are listed before or after these methods in the spec.\n if (spec.hasOwnProperty(MIXINS_KEY)) {\n RESERVED_SPEC_KEYS.mixins(Constructor, spec.mixins);\n }\n\n for (var name in spec) {\n if (!spec.hasOwnProperty(name)) {\n continue;\n }\n\n if (name === MIXINS_KEY) {\n // We have already handled mixins in a special case above.\n continue;\n }\n\n var property = spec[name];\n var isAlreadyDefined = proto.hasOwnProperty(name);\n validateMethodOverride(isAlreadyDefined, name);\n\n if (RESERVED_SPEC_KEYS.hasOwnProperty(name)) {\n RESERVED_SPEC_KEYS[name](Constructor, property);\n } else {\n // Setup methods on prototype:\n // The following member methods should not be automatically bound:\n // 1. Expected ReactClass methods (in the \"interface\").\n // 2. Overridden methods (that were mixed in).\n var isReactClassMethod = ReactClassInterface.hasOwnProperty(name);\n var isFunction = typeof property === 'function';\n var shouldAutoBind =\n isFunction &&\n !isReactClassMethod &&\n !isAlreadyDefined &&\n spec.autobind !== false;\n\n if (shouldAutoBind) {\n autoBindPairs.push(name, property);\n proto[name] = property;\n } else {\n if (isAlreadyDefined) {\n var specPolicy = ReactClassInterface[name];\n\n // These cases should already be caught by validateMethodOverride.\n _invariant(\n isReactClassMethod &&\n (specPolicy === 'DEFINE_MANY_MERGED' ||\n specPolicy === 'DEFINE_MANY'),\n 'ReactClass: Unexpected spec policy %s for key %s ' +\n 'when mixing in component specs.',\n specPolicy,\n name\n );\n\n // For methods which are defined more than once, call the existing\n // methods before calling the new property, merging if appropriate.\n if (specPolicy === 'DEFINE_MANY_MERGED') {\n proto[name] = createMergedResultFunction(proto[name], property);\n } else if (specPolicy === 'DEFINE_MANY') {\n proto[name] = createChainedFunction(proto[name], property);\n }\n } else {\n proto[name] = property;\n if (process.env.NODE_ENV !== 'production') {\n // Add verbose displayName to the function, which helps when looking\n // at profiling tools.\n if (typeof property === 'function' && spec.displayName) {\n proto[name].displayName = spec.displayName + '_' + name;\n }\n }\n }\n }\n }\n }\n }\n\n function mixStaticSpecIntoComponent(Constructor, statics) {\n if (!statics) {\n return;\n }\n for (var name in statics) {\n var property = statics[name];\n if (!statics.hasOwnProperty(name)) {\n continue;\n }\n\n var isReserved = name in RESERVED_SPEC_KEYS;\n _invariant(\n !isReserved,\n 'ReactClass: You are attempting to define a reserved ' +\n 'property, `%s`, that shouldn\\'t be on the \"statics\" key. Define it ' +\n 'as an instance property instead; it will still be accessible on the ' +\n 'constructor.',\n name\n );\n\n var isInherited = name in Constructor;\n _invariant(\n !isInherited,\n 'ReactClass: You are attempting to define ' +\n '`%s` on your component more than once. This conflict may be ' +\n 'due to a mixin.',\n name\n );\n Constructor[name] = property;\n }\n }\n\n /**\n * Merge two objects, but throw if both contain the same key.\n *\n * @param {object} one The first object, which is mutated.\n * @param {object} two The second object\n * @return {object} one after it has been mutated to contain everything in two.\n */\n function mergeIntoWithNoDuplicateKeys(one, two) {\n _invariant(\n one && two && typeof one === 'object' && typeof two === 'object',\n 'mergeIntoWithNoDuplicateKeys(): Cannot merge non-objects.'\n );\n\n for (var key in two) {\n if (two.hasOwnProperty(key)) {\n _invariant(\n one[key] === undefined,\n 'mergeIntoWithNoDuplicateKeys(): ' +\n 'Tried to merge two objects with the same key: `%s`. This conflict ' +\n 'may be due to a mixin; in particular, this may be caused by two ' +\n 'getInitialState() or getDefaultProps() methods returning objects ' +\n 'with clashing keys.',\n key\n );\n one[key] = two[key];\n }\n }\n return one;\n }\n\n /**\n * Creates a function that invokes two functions and merges their return values.\n *\n * @param {function} one Function to invoke first.\n * @param {function} two Function to invoke second.\n * @return {function} Function that invokes the two argument functions.\n * @private\n */\n function createMergedResultFunction(one, two) {\n return function mergedResult() {\n var a = one.apply(this, arguments);\n var b = two.apply(this, arguments);\n if (a == null) {\n return b;\n } else if (b == null) {\n return a;\n }\n var c = {};\n mergeIntoWithNoDuplicateKeys(c, a);\n mergeIntoWithNoDuplicateKeys(c, b);\n return c;\n };\n }\n\n /**\n * Creates a function that invokes two functions and ignores their return vales.\n *\n * @param {function} one Function to invoke first.\n * @param {function} two Function to invoke second.\n * @return {function} Function that invokes the two argument functions.\n * @private\n */\n function createChainedFunction(one, two) {\n return function chainedFunction() {\n one.apply(this, arguments);\n two.apply(this, arguments);\n };\n }\n\n /**\n * Binds a method to the component.\n *\n * @param {object} component Component whose method is going to be bound.\n * @param {function} method Method to be bound.\n * @return {function} The bound method.\n */\n function bindAutoBindMethod(component, method) {\n var boundMethod = method.bind(component);\n if (process.env.NODE_ENV !== 'production') {\n boundMethod.__reactBoundContext = component;\n boundMethod.__reactBoundMethod = method;\n boundMethod.__reactBoundArguments = null;\n var componentName = component.constructor.displayName;\n var _bind = boundMethod.bind;\n boundMethod.bind = function(newThis) {\n for (\n var _len = arguments.length,\n args = Array(_len > 1 ? _len - 1 : 0),\n _key = 1;\n _key < _len;\n _key++\n ) {\n args[_key - 1] = arguments[_key];\n }\n\n // User is trying to bind() an autobound method; we effectively will\n // ignore the value of \"this\" that the user is trying to use, so\n // let's warn.\n if (newThis !== component && newThis !== null) {\n if (process.env.NODE_ENV !== 'production') {\n warning(\n false,\n 'bind(): React component methods may only be bound to the ' +\n 'component instance. See %s',\n componentName\n );\n }\n } else if (!args.length) {\n if (process.env.NODE_ENV !== 'production') {\n warning(\n false,\n 'bind(): You are binding a component method to the component. ' +\n 'React does this for you automatically in a high-performance ' +\n 'way, so you can safely remove this call. See %s',\n componentName\n );\n }\n return boundMethod;\n }\n var reboundMethod = _bind.apply(boundMethod, arguments);\n reboundMethod.__reactBoundContext = component;\n reboundMethod.__reactBoundMethod = method;\n reboundMethod.__reactBoundArguments = args;\n return reboundMethod;\n };\n }\n return boundMethod;\n }\n\n /**\n * Binds all auto-bound methods in a component.\n *\n * @param {object} component Component whose method is going to be bound.\n */\n function bindAutoBindMethods(component) {\n var pairs = component.__reactAutoBindPairs;\n for (var i = 0; i < pairs.length; i += 2) {\n var autoBindKey = pairs[i];\n var method = pairs[i + 1];\n component[autoBindKey] = bindAutoBindMethod(component, method);\n }\n }\n\n var IsMountedPreMixin = {\n componentDidMount: function() {\n this.__isMounted = true;\n }\n };\n\n var IsMountedPostMixin = {\n componentWillUnmount: function() {\n this.__isMounted = false;\n }\n };\n\n /**\n * Add more to the ReactClass base class. These are all legacy features and\n * therefore not already part of the modern ReactComponent.\n */\n var ReactClassMixin = {\n /**\n * TODO: This will be deprecated because state should always keep a consistent\n * type signature and the only use case for this, is to avoid that.\n */\n replaceState: function(newState, callback) {\n this.updater.enqueueReplaceState(this, newState, callback);\n },\n\n /**\n * Checks whether or not this composite component is mounted.\n * @return {boolean} True if mounted, false otherwise.\n * @protected\n * @final\n */\n isMounted: function() {\n if (process.env.NODE_ENV !== 'production') {\n warning(\n this.__didWarnIsMounted,\n '%s: isMounted is deprecated. Instead, make sure to clean up ' +\n 'subscriptions and pending requests in componentWillUnmount to ' +\n 'prevent memory leaks.',\n (this.constructor && this.constructor.displayName) ||\n this.name ||\n 'Component'\n );\n this.__didWarnIsMounted = true;\n }\n return !!this.__isMounted;\n }\n };\n\n var ReactClassComponent = function() {};\n _assign(\n ReactClassComponent.prototype,\n ReactComponent.prototype,\n ReactClassMixin\n );\n\n /**\n * Creates a composite component class given a class specification.\n * See https://facebook.github.io/react/docs/top-level-api.html#react.createclass\n *\n * @param {object} spec Class specification (which must define `render`).\n * @return {function} Component constructor function.\n * @public\n */\n function createClass(spec) {\n // To keep our warnings more understandable, we'll use a little hack here to\n // ensure that Constructor.name !== 'Constructor'. This makes sure we don't\n // unnecessarily identify a class without displayName as 'Constructor'.\n var Constructor = identity(function(props, context, updater) {\n // This constructor gets overridden by mocks. The argument is used\n // by mocks to assert on what gets mounted.\n\n if (process.env.NODE_ENV !== 'production') {\n warning(\n this instanceof Constructor,\n 'Something is calling a React component directly. Use a factory or ' +\n 'JSX instead. See: https://fb.me/react-legacyfactory'\n );\n }\n\n // Wire up auto-binding\n if (this.__reactAutoBindPairs.length) {\n bindAutoBindMethods(this);\n }\n\n this.props = props;\n this.context = context;\n this.refs = emptyObject;\n this.updater = updater || ReactNoopUpdateQueue;\n\n this.state = null;\n\n // ReactClasses doesn't have constructors. Instead, they use the\n // getInitialState and componentWillMount methods for initialization.\n\n var initialState = this.getInitialState ? this.getInitialState() : null;\n if (process.env.NODE_ENV !== 'production') {\n // We allow auto-mocks to proceed as if they're returning null.\n if (\n initialState === undefined &&\n this.getInitialState._isMockFunction\n ) {\n // This is probably bad practice. Consider warning here and\n // deprecating this convenience.\n initialState = null;\n }\n }\n _invariant(\n typeof initialState === 'object' && !Array.isArray(initialState),\n '%s.getInitialState(): must return an object or null',\n Constructor.displayName || 'ReactCompositeComponent'\n );\n\n this.state = initialState;\n });\n Constructor.prototype = new ReactClassComponent();\n Constructor.prototype.constructor = Constructor;\n Constructor.prototype.__reactAutoBindPairs = [];\n\n injectedMixins.forEach(mixSpecIntoComponent.bind(null, Constructor));\n\n mixSpecIntoComponent(Constructor, IsMountedPreMixin);\n mixSpecIntoComponent(Constructor, spec);\n mixSpecIntoComponent(Constructor, IsMountedPostMixin);\n\n // Initialize the defaultProps property after all mixins have been merged.\n if (Constructor.getDefaultProps) {\n Constructor.defaultProps = Constructor.getDefaultProps();\n }\n\n if (process.env.NODE_ENV !== 'production') {\n // This is a tag to indicate that the use of these method names is ok,\n // since it's used with createClass. If it's not, then it's likely a\n // mistake so we'll warn you to use the static property, property\n // initializer or constructor respectively.\n if (Constructor.getDefaultProps) {\n Constructor.getDefaultProps.isReactClassApproved = {};\n }\n if (Constructor.prototype.getInitialState) {\n Constructor.prototype.getInitialState.isReactClassApproved = {};\n }\n }\n\n _invariant(\n Constructor.prototype.render,\n 'createClass(...): Class specification must implement a `render` method.'\n );\n\n if (process.env.NODE_ENV !== 'production') {\n warning(\n !Constructor.prototype.componentShouldUpdate,\n '%s has a method called ' +\n 'componentShouldUpdate(). Did you mean shouldComponentUpdate()? ' +\n 'The name is phrased as a question because the function is ' +\n 'expected to return a value.',\n spec.displayName || 'A component'\n );\n warning(\n !Constructor.prototype.componentWillRecieveProps,\n '%s has a method called ' +\n 'componentWillRecieveProps(). Did you mean componentWillReceiveProps()?',\n spec.displayName || 'A component'\n );\n }\n\n // Reduce time spent doing lookups by setting these on the prototype.\n for (var methodName in ReactClassInterface) {\n if (!Constructor.prototype[methodName]) {\n Constructor.prototype[methodName] = null;\n }\n }\n\n return Constructor;\n }\n\n return createClass;\n}\n\nmodule.exports = factory;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/create-react-class/factory.js\n// module id = 14\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar emptyObject = {};\n\nif (process.env.NODE_ENV !== 'production') {\n Object.freeze(emptyObject);\n}\n\nmodule.exports = emptyObject;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/fbjs/lib/emptyObject.js\n// module id = 15\n// module chunks = 0","function toObj(source) {\n return Object.keys(source).reduce(function (output, key) {\n var parentKey = key.match(/[^\\[]*/i);\n var paths = key.match(/\\[.*?\\]/g) || [];\n paths = [parentKey[0]].concat(paths).map(function (key) {\n return key.replace(/\\[|\\]/g, '');\n });\n var currentPath = output;\n while (paths.length) {\n var pathKey = paths.shift();\n\n if (pathKey in currentPath) {\n currentPath = currentPath[pathKey];\n } else {\n currentPath[pathKey] = paths.length ? isNaN(paths[0]) ? {} : [] : source[key];\n currentPath = currentPath[pathKey];\n }\n }\n\n return output;\n }, {});\n}\n\nfunction fromObj(obj) {\n function recur(newObj, propName, currVal) {\n if (Array.isArray(currVal) || Object.prototype.toString.call(currVal) === '[object Object]') {\n Object.keys(currVal).forEach(function(v) {\n recur(newObj, propName + \"[\" + v + \"]\", currVal[v]);\n });\n return newObj;\n }\n\n newObj[propName] = currVal;\n return newObj;\n }\n\n var keys = Object.keys(obj);\n return keys.reduce(function(newObj, propName) {\n return recur(newObj, propName, obj[propName]);\n }, {});\n}\n\nmodule.exports = {\n fromObj: fromObj,\n toObj: toObj\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/form-data-to-object/index.js\n// module id = 16\n// module chunks = 0","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/object-assign/index.js\n// module id = 17\n// module chunks = 0","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\n'use strict';\n\nif (process.env.NODE_ENV !== 'production') {\n var invariant = require('fbjs/lib/invariant');\n var warning = require('fbjs/lib/warning');\n var ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n var loggedTypeFailures = {};\n}\n\n/**\n * Assert that the values match with the type specs.\n * Error messages are memorized and will only be shown once.\n *\n * @param {object} typeSpecs Map of name to a ReactPropType\n * @param {object} values Runtime values that need to be type-checked\n * @param {string} location e.g. \"prop\", \"context\", \"child context\"\n * @param {string} componentName Name of the component for error messages.\n * @param {?Function} getStack Returns the component stack.\n * @private\n */\nfunction checkPropTypes(typeSpecs, values, location, componentName, getStack) {\n if (process.env.NODE_ENV !== 'production') {\n for (var typeSpecName in typeSpecs) {\n if (typeSpecs.hasOwnProperty(typeSpecName)) {\n var error;\n // Prop type validation may throw. In case they do, we don't want to\n // fail the render phase where it didn't fail before. So we log it.\n // After these have been cleaned up, we'll let them throw.\n try {\n // This is intentionally an invariant that gets caught. It's the same\n // behavior as without this statement except with a better message.\n invariant(typeof typeSpecs[typeSpecName] === 'function', '%s: %s type `%s` is invalid; it must be a function, usually from ' + 'React.PropTypes.', componentName || 'React class', location, typeSpecName);\n error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret);\n } catch (ex) {\n error = ex;\n }\n warning(!error || error instanceof Error, '%s: type specification of %s `%s` is invalid; the type checker ' + 'function must return `null` or an `Error` but returned a %s. ' + 'You may have forgotten to pass an argument to the type checker ' + 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' + 'shape all require an argument).', componentName || 'React class', location, typeSpecName, typeof error);\n if (error instanceof Error && !(error.message in loggedTypeFailures)) {\n // Only monitor this failure once because there tends to be a lot of the\n // same error.\n loggedTypeFailures[error.message] = true;\n\n var stack = getStack ? getStack() : '';\n\n warning(false, 'Failed %s type: %s%s', location, error.message, stack != null ? stack : '');\n }\n }\n }\n }\n}\n\nmodule.exports = checkPropTypes;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/prop-types/checkPropTypes.js\n// module id = 18\n// module chunks = 0","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\n'use strict';\n\nvar emptyFunction = require('fbjs/lib/emptyFunction');\nvar invariant = require('fbjs/lib/invariant');\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n invariant(\n false,\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim\n };\n\n ReactPropTypes.checkPropTypes = emptyFunction;\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/prop-types/factoryWithThrowingShims.js\n// module id = 19\n// module chunks = 0","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\n'use strict';\n\nvar emptyFunction = require('fbjs/lib/emptyFunction');\nvar invariant = require('fbjs/lib/invariant');\nvar warning = require('fbjs/lib/warning');\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\nvar checkPropTypes = require('./checkPropTypes');\n\nmodule.exports = function(isValidElement, throwOnDirectAccess) {\n /* global Symbol */\n var ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\n var FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec.\n\n /**\n * Returns the iterator method function contained on the iterable object.\n *\n * Be sure to invoke the function with the iterable as context:\n *\n * var iteratorFn = getIteratorFn(myIterable);\n * if (iteratorFn) {\n * var iterator = iteratorFn.call(myIterable);\n * ...\n * }\n *\n * @param {?object} maybeIterable\n * @return {?function}\n */\n function getIteratorFn(maybeIterable) {\n var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);\n if (typeof iteratorFn === 'function') {\n return iteratorFn;\n }\n }\n\n /**\n * Collection of methods that allow declaration and validation of props that are\n * supplied to React components. Example usage:\n *\n * var Props = require('ReactPropTypes');\n * var MyArticle = React.createClass({\n * propTypes: {\n * // An optional string prop named \"description\".\n * description: Props.string,\n *\n * // A required enum prop named \"category\".\n * category: Props.oneOf(['News','Photos']).isRequired,\n *\n * // A prop named \"dialog\" that requires an instance of Dialog.\n * dialog: Props.instanceOf(Dialog).isRequired\n * },\n * render: function() { ... }\n * });\n *\n * A more formal specification of how these methods are used:\n *\n * type := array|bool|func|object|number|string|oneOf([...])|instanceOf(...)\n * decl := ReactPropTypes.{type}(.isRequired)?\n *\n * Each and every declaration produces a function with the same signature. This\n * allows the creation of custom validation functions. For example:\n *\n * var MyLink = React.createClass({\n * propTypes: {\n * // An optional string or URI prop named \"href\".\n * href: function(props, propName, componentName) {\n * var propValue = props[propName];\n * if (propValue != null && typeof propValue !== 'string' &&\n * !(propValue instanceof URI)) {\n * return new Error(\n * 'Expected a string or an URI for ' + propName + ' in ' +\n * componentName\n * );\n * }\n * }\n * },\n * render: function() {...}\n * });\n *\n * @internal\n */\n\n var ANONYMOUS = '<>';\n\n // Important!\n // Keep this list in sync with production version in `./factoryWithThrowingShims.js`.\n var ReactPropTypes = {\n array: createPrimitiveTypeChecker('array'),\n bool: createPrimitiveTypeChecker('boolean'),\n func: createPrimitiveTypeChecker('function'),\n number: createPrimitiveTypeChecker('number'),\n object: createPrimitiveTypeChecker('object'),\n string: createPrimitiveTypeChecker('string'),\n symbol: createPrimitiveTypeChecker('symbol'),\n\n any: createAnyTypeChecker(),\n arrayOf: createArrayOfTypeChecker,\n element: createElementTypeChecker(),\n instanceOf: createInstanceTypeChecker,\n node: createNodeChecker(),\n objectOf: createObjectOfTypeChecker,\n oneOf: createEnumTypeChecker,\n oneOfType: createUnionTypeChecker,\n shape: createShapeTypeChecker\n };\n\n /**\n * inlined Object.is polyfill to avoid requiring consumers ship their own\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n */\n /*eslint-disable no-self-compare*/\n function is(x, y) {\n // SameValue algorithm\n if (x === y) {\n // Steps 1-5, 7-10\n // Steps 6.b-6.e: +0 != -0\n return x !== 0 || 1 / x === 1 / y;\n } else {\n // Step 6.a: NaN == NaN\n return x !== x && y !== y;\n }\n }\n /*eslint-enable no-self-compare*/\n\n /**\n * We use an Error-like object for backward compatibility as people may call\n * PropTypes directly and inspect their output. However, we don't use real\n * Errors anymore. We don't inspect their stack anyway, and creating them\n * is prohibitively expensive if they are created too often, such as what\n * happens in oneOfType() for any type before the one that matched.\n */\n function PropTypeError(message) {\n this.message = message;\n this.stack = '';\n }\n // Make `instanceof Error` still work for returned errors.\n PropTypeError.prototype = Error.prototype;\n\n function createChainableTypeChecker(validate) {\n if (process.env.NODE_ENV !== 'production') {\n var manualPropTypeCallCache = {};\n var manualPropTypeWarningCount = 0;\n }\n function checkType(isRequired, props, propName, componentName, location, propFullName, secret) {\n componentName = componentName || ANONYMOUS;\n propFullName = propFullName || propName;\n\n if (secret !== ReactPropTypesSecret) {\n if (throwOnDirectAccess) {\n // New behavior only for users of `prop-types` package\n invariant(\n false,\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use `PropTypes.checkPropTypes()` to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n } else if (process.env.NODE_ENV !== 'production' && typeof console !== 'undefined') {\n // Old behavior for people using React.PropTypes\n var cacheKey = componentName + ':' + propName;\n if (\n !manualPropTypeCallCache[cacheKey] &&\n // Avoid spamming the console because they are often not actionable except for lib authors\n manualPropTypeWarningCount < 3\n ) {\n warning(\n false,\n 'You are manually calling a React.PropTypes validation ' +\n 'function for the `%s` prop on `%s`. This is deprecated ' +\n 'and will throw in the standalone `prop-types` package. ' +\n 'You may be seeing this warning due to a third-party PropTypes ' +\n 'library. See https://fb.me/react-warning-dont-call-proptypes ' + 'for details.',\n propFullName,\n componentName\n );\n manualPropTypeCallCache[cacheKey] = true;\n manualPropTypeWarningCount++;\n }\n }\n }\n if (props[propName] == null) {\n if (isRequired) {\n if (props[propName] === null) {\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required ' + ('in `' + componentName + '`, but its value is `null`.'));\n }\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required in ' + ('`' + componentName + '`, but its value is `undefined`.'));\n }\n return null;\n } else {\n return validate(props, propName, componentName, location, propFullName);\n }\n }\n\n var chainedCheckType = checkType.bind(null, false);\n chainedCheckType.isRequired = checkType.bind(null, true);\n\n return chainedCheckType;\n }\n\n function createPrimitiveTypeChecker(expectedType) {\n function validate(props, propName, componentName, location, propFullName, secret) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== expectedType) {\n // `propValue` being instance of, say, date/regexp, pass the 'object'\n // check, but we can offer a more precise error message here rather than\n // 'of type `object`'.\n var preciseType = getPreciseType(propValue);\n\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + preciseType + '` supplied to `' + componentName + '`, expected ') + ('`' + expectedType + '`.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createAnyTypeChecker() {\n return createChainableTypeChecker(emptyFunction.thatReturnsNull);\n }\n\n function createArrayOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside arrayOf.');\n }\n var propValue = props[propName];\n if (!Array.isArray(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an array.'));\n }\n for (var i = 0; i < propValue.length; i++) {\n var error = typeChecker(propValue, i, componentName, location, propFullName + '[' + i + ']', ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createElementTypeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n if (!isValidElement(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createInstanceTypeChecker(expectedClass) {\n function validate(props, propName, componentName, location, propFullName) {\n if (!(props[propName] instanceof expectedClass)) {\n var expectedClassName = expectedClass.name || ANONYMOUS;\n var actualClassName = getClassName(props[propName]);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + actualClassName + '` supplied to `' + componentName + '`, expected ') + ('instance of `' + expectedClassName + '`.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createEnumTypeChecker(expectedValues) {\n if (!Array.isArray(expectedValues)) {\n process.env.NODE_ENV !== 'production' ? warning(false, 'Invalid argument supplied to oneOf, expected an instance of array.') : void 0;\n return emptyFunction.thatReturnsNull;\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n for (var i = 0; i < expectedValues.length; i++) {\n if (is(propValue, expectedValues[i])) {\n return null;\n }\n }\n\n var valuesString = JSON.stringify(expectedValues);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of value `' + propValue + '` ' + ('supplied to `' + componentName + '`, expected one of ' + valuesString + '.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createObjectOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside objectOf.');\n }\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an object.'));\n }\n for (var key in propValue) {\n if (propValue.hasOwnProperty(key)) {\n var error = typeChecker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createUnionTypeChecker(arrayOfTypeCheckers) {\n if (!Array.isArray(arrayOfTypeCheckers)) {\n process.env.NODE_ENV !== 'production' ? warning(false, 'Invalid argument supplied to oneOfType, expected an instance of array.') : void 0;\n return emptyFunction.thatReturnsNull;\n }\n\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n if (typeof checker !== 'function') {\n warning(\n false,\n 'Invalid argument supplid to oneOfType. Expected an array of check functions, but ' +\n 'received %s at index %s.',\n getPostfixForTypeWarning(checker),\n i\n );\n return emptyFunction.thatReturnsNull;\n }\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n if (checker(props, propName, componentName, location, propFullName, ReactPropTypesSecret) == null) {\n return null;\n }\n }\n\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createNodeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n if (!isNode(props[propName])) {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`, expected a ReactNode.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n for (var key in shapeTypes) {\n var checker = shapeTypes[key];\n if (!checker) {\n continue;\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function isNode(propValue) {\n switch (typeof propValue) {\n case 'number':\n case 'string':\n case 'undefined':\n return true;\n case 'boolean':\n return !propValue;\n case 'object':\n if (Array.isArray(propValue)) {\n return propValue.every(isNode);\n }\n if (propValue === null || isValidElement(propValue)) {\n return true;\n }\n\n var iteratorFn = getIteratorFn(propValue);\n if (iteratorFn) {\n var iterator = iteratorFn.call(propValue);\n var step;\n if (iteratorFn !== propValue.entries) {\n while (!(step = iterator.next()).done) {\n if (!isNode(step.value)) {\n return false;\n }\n }\n } else {\n // Iterator will provide entry [k,v] tuples rather than values.\n while (!(step = iterator.next()).done) {\n var entry = step.value;\n if (entry) {\n if (!isNode(entry[1])) {\n return false;\n }\n }\n }\n }\n } else {\n return false;\n }\n\n return true;\n default:\n return false;\n }\n }\n\n function isSymbol(propType, propValue) {\n // Native Symbol.\n if (propType === 'symbol') {\n return true;\n }\n\n // 19.4.3.5 Symbol.prototype[@@toStringTag] === 'Symbol'\n if (propValue['@@toStringTag'] === 'Symbol') {\n return true;\n }\n\n // Fallback for non-spec compliant Symbols which are polyfilled.\n if (typeof Symbol === 'function' && propValue instanceof Symbol) {\n return true;\n }\n\n return false;\n }\n\n // Equivalent of `typeof` but with special handling for array and regexp.\n function getPropType(propValue) {\n var propType = typeof propValue;\n if (Array.isArray(propValue)) {\n return 'array';\n }\n if (propValue instanceof RegExp) {\n // Old webkits (at least until Android 4.0) return 'function' rather than\n // 'object' for typeof a RegExp. We'll normalize this here so that /bla/\n // passes PropTypes.object.\n return 'object';\n }\n if (isSymbol(propType, propValue)) {\n return 'symbol';\n }\n return propType;\n }\n\n // This handles more types than `getPropType`. Only used for error messages.\n // See `createPrimitiveTypeChecker`.\n function getPreciseType(propValue) {\n if (typeof propValue === 'undefined' || propValue === null) {\n return '' + propValue;\n }\n var propType = getPropType(propValue);\n if (propType === 'object') {\n if (propValue instanceof Date) {\n return 'date';\n } else if (propValue instanceof RegExp) {\n return 'regexp';\n }\n }\n return propType;\n }\n\n // Returns a string that is postfixed to a warning about an invalid type.\n // For example, \"undefined\" or \"of type array\"\n function getPostfixForTypeWarning(value) {\n var type = getPreciseType(value);\n switch (type) {\n case 'array':\n case 'object':\n return 'an ' + type;\n case 'boolean':\n case 'date':\n case 'regexp':\n return 'a ' + type;\n default:\n return type;\n }\n }\n\n // Returns class name of the object, if any.\n function getClassName(propValue) {\n if (!propValue.constructor || !propValue.constructor.name) {\n return ANONYMOUS;\n }\n return propValue.constructor.name;\n }\n\n ReactPropTypes.checkPropTypes = checkPropTypes;\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/prop-types/factoryWithTypeCheckers.js\n// module id = 20\n// module chunks = 0"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///formsy-react.js","webpack:///webpack/bootstrap ab445ef5c18fe70be9dc","webpack:///./src/main.js","webpack:///./~/process/browser.js","webpack:///external \"react\"","webpack:///./~/fbjs/lib/invariant.js","webpack:///./src/Mixin.js","webpack:///./~/create-react-class/index.js","webpack:///./~/fbjs/lib/emptyFunction.js","webpack:///./~/fbjs/lib/warning.js","webpack:///./~/prop-types/lib/ReactPropTypesSecret.js","webpack:///./src/utils.js","webpack:///./~/prop-types/index.js","webpack:///./src/Decorator.js","webpack:///./src/HOC.js","webpack:///./src/validationRules.js","webpack:///./~/create-react-class/factory.js","webpack:///./~/fbjs/lib/emptyObject.js","webpack:///./~/form-data-to-object/index.js","webpack:///./~/object-assign/index.js","webpack:///./~/prop-types/checkPropTypes.js","webpack:///./~/prop-types/factoryWithThrowingShims.js","webpack:///./~/prop-types/factoryWithTypeCheckers.js"],"names":["root","factory","exports","module","require","define","amd","this","__WEBPACK_EXTERNAL_MODULE_2__","modules","__webpack_require__","moduleId","installedModules","id","loaded","call","m","c","p","global","_objectWithoutProperties","obj","keys","target","i","indexOf","Object","prototype","hasOwnProperty","_extends","assign","arguments","length","source","key","_slicedToArray","sliceIterator","arr","_arr","_n","_d","_e","undefined","_s","_i","Symbol","iterator","next","done","push","value","err","Array","isArray","TypeError","_typeof","constructor","PropTypes","React","createReactClass","Formsy","validationRules","formDataToObject","utils","Mixin","HOC","Decorator","options","emptyArray","defaults","passedOptions","addValidationRule","name","func","Form","displayName","getInitialState","isValid","isSubmitting","canChange","getDefaultProps","onSuccess","onError","onSubmit","onValidSubmit","onInvalidSubmit","onValid","onInvalid","onChange","validationErrors","preventExternalInvalidation","childContextTypes","formsy","object","getChildContext","_this","attachToForm","detachFromForm","validate","isFormDisabled","isValidValue","component","runValidation","then","info","componentWillMount","inputs","cachedValues","componentDidMount","validateForm","componentWillUpdate","prevInputNames","map","props","componentDidUpdate","setInputValidationErrors","newInputNames","arraysDiffer","shouldCache","cacheValues","reset","data","setFormPristine","resetModel","submit","event","preventDefault","model","getModel","updateInputsWithError","state","mapModel","mapping","toObj","reduce","mappedModel","keyArray","split","base","currentKey","shift","currentValues","getCurrentValues","forEach","setValue","resetValue","errors","args","_isValid","_validationError","setState","apply","isChanged","isSame","getPristineValues","_this2","index","find","Error","JSON","stringify","_externalError","disabled","_value","isPristine","_formSubmitted","_isPristine","_this3","validation","_isRequired","isRequired","error","_this4","validationError","showRequired","getErrorMessage","Promise","resolve","reject","all","runRules","_validations","_requiredValidations","_ref","_ref2","validationResults","requiredResults","validateComponent","validated","failed","success","filter","x","pos","validations","results","validationMethod","_this5","onValidationComplete","allIsValid","every","bind","componentPos","slice","concat","render","_props","nonFormsyProps","createElement","children","defaultSetTimout","defaultClearTimeout","runTimeout","fun","cachedSetTimeout","setTimeout","e","runClearTimeout","marker","cachedClearTimeout","clearTimeout","cleanUpNextTick","draining","currentQueue","queue","queueIndex","drainQueue","timeout","len","run","Item","array","noop","process","nextTick","title","browser","env","argv","version","versions","on","addListener","once","off","removeListener","removeAllListeners","emit","prependListener","prependOnceListener","listeners","binding","cwd","chdir","dir","umask","invariant","condition","format","a","b","d","f","validateFormat","argIndex","replace","framesToPop","NODE_ENV","convertValidationsToObject","validateMethod","arg","parse","required","_pristineValue","contextTypes","canSetValue","configure","setValidations","context","componentWillReceiveProps","nextProps","prevProps","componentWillUnmount","isDefaultRequiredValue","getValue","hasValue","messages","getErrorMessages","isFormSubmitted","showError","ReactNoopUpdateQueue","Component","updater","isValidElement","makeEmptyFunction","emptyFunction","thatReturns","thatReturnsFalse","thatReturnsTrue","thatReturnsNull","thatReturnsThis","thatReturnsArgument","warning","printWarning","_len","_key","message","console","_len2","_key2","ReactPropTypesSecret","isDifferent","item","objectsDiffer","toString","collection","fn","l","REACT_ELEMENT_TYPE","for","$$typeof","throwOnDirectAccess","mixins","getDisplayName","innerRef","propsForElement","ref","isExisty","isEmpty","values","matchRegexp","regexp","test","isUndefined","isEmptyString","isEmail","isUrl","isTrue","isFalse","isNumeric","isAlpha","isAlphanumeric","isInt","isFloat","isWords","isSpecialWords","isLength","equals","eql","equalsField","field","maxLength","minLength","identity","ReactComponent","validateTypeDef","Constructor","typeDef","location","propName","ReactPropTypeLocationNames","validateMethodOverride","isAlreadyDefined","specPolicy","ReactClassInterface","ReactClassMixin","_invariant","mixSpecIntoComponent","spec","proto","autoBindPairs","__reactAutoBindPairs","MIXINS_KEY","RESERVED_SPEC_KEYS","property","isReactClassMethod","isFunction","shouldAutoBind","autobind","createMergedResultFunction","createChainedFunction","typeofSpec","isMixinValid","mixStaticSpecIntoComponent","statics","isReserved","isInherited","mergeIntoWithNoDuplicateKeys","one","two","bindAutoBindMethod","method","boundMethod","__reactBoundContext","__reactBoundMethod","__reactBoundArguments","componentName","_bind","newThis","reboundMethod","bindAutoBindMethods","pairs","autoBindKey","createClass","refs","emptyObject","initialState","_isMockFunction","ReactClassComponent","injectedMixins","IsMountedPreMixin","IsMountedPostMixin","defaultProps","isReactClassApproved","componentShouldUpdate","componentWillRecieveProps","methodName","propTypes","shouldComponentUpdate","updateComponent","_assign","__isMounted","replaceState","newState","callback","enqueueReplaceState","isMounted","__didWarnIsMounted","prop","childContext","freeze","output","parentKey","match","paths","currentPath","pathKey","isNaN","fromObj","recur","newObj","currVal","v","toObject","val","shouldUseNative","test1","String","getOwnPropertyNames","test2","fromCharCode","order2","n","join","test3","letter","getOwnPropertySymbols","propIsEnumerable","propertyIsEnumerable","from","symbols","to","s","checkPropTypes","typeSpecs","getStack","typeSpecName","ex","loggedTypeFailures","stack","shim","propFullName","secret","getShim","ReactPropTypes","bool","number","string","symbol","any","arrayOf","element","instanceOf","node","objectOf","oneOf","oneOfType","shape","getIteratorFn","maybeIterable","iteratorFn","ITERATOR_SYMBOL","FAUX_ITERATOR_SYMBOL","is","y","PropTypeError","createChainableTypeChecker","checkType","ANONYMOUS","cacheKey","manualPropTypeCallCache","manualPropTypeWarningCount","chainedCheckType","createPrimitiveTypeChecker","expectedType","propValue","propType","getPropType","preciseType","getPreciseType","createAnyTypeChecker","createArrayOfTypeChecker","typeChecker","createElementTypeChecker","createInstanceTypeChecker","expectedClass","expectedClassName","actualClassName","getClassName","createEnumTypeChecker","expectedValues","valuesString","createObjectOfTypeChecker","createUnionTypeChecker","arrayOfTypeCheckers","checker","getPostfixForTypeWarning","createNodeChecker","isNode","createShapeTypeChecker","shapeTypes","step","entries","entry","isSymbol","RegExp","Date","type"],"mappings":"CAAA,SAAAA,EAAAC,GACA,gBAAAC,UAAA,gBAAAC,QACAA,OAAAD,QAAAD,EAAAG,QAAA,UACA,kBAAAC,gBAAAC,IACAD,QAAA,SAAAJ,GACA,gBAAAC,SACAA,QAAA,OAAAD,EAAAG,QAAA,UAEAJ,EAAA,OAAAC,EAAAD,EAAA,QACCO,KAAA,SAAAC,GACD,MCAgB,UAAUC,GCN1B,QAAAC,GAAAC,GAGA,GAAAC,EAAAD,GACA,MAAAC,GAAAD,GAAAT,OAGA,IAAAC,GAAAS,EAAAD,IACAT,WACAW,GAAAF,EACAG,QAAA,EAUA,OANAL,GAAAE,GAAAI,KAAAZ,EAAAD,QAAAC,IAAAD,QAAAQ,GAGAP,EAAAW,QAAA,EAGAX,EAAAD,QAvBA,GAAAU,KAqCA,OATAF,GAAAM,EAAAP,EAGAC,EAAAO,EAAAL,EAGAF,EAAAQ,EAAA,GAGAR,EAAA,KDgBM,SAAUP,EAAQD,EAASQ,IAEJ,SAASS,GAAS,YAQ9C,SAASC,GAAyBC,EAAKC,GAAQ,GAAIC,KAAa,KAAK,GAAIC,KAAKH,GAAWC,EAAKG,QAAQD,IAAM,GAAkBE,OAAOC,UAAUC,eAAeb,KAAKM,EAAKG,KAAcD,EAAOC,GAAKH,EAAIG,GAAM,OAAOD,GANnN,GAAIM,GAAWH,OAAOI,QAAU,SAAUP,GAAU,IAAK,GAAIC,GAAI,EAAGA,EAAIO,UAAUC,OAAQR,IAAK,CAAE,GAAIS,GAASF,UAAUP,EAAI,KAAK,GAAIU,KAAOD,GAAcP,OAAOC,UAAUC,eAAeb,KAAKkB,EAAQC,KAAQX,EAAOW,GAAOD,EAAOC,IAAY,MAAOX,IAEnPY,EAAiB,WAAc,QAASC,GAAcC,EAAKb,GAAK,GAAIc,MAAeC,GAAK,EAAUC,GAAK,EAAWC,EAAKC,MAAW,KAAM,IAAK,GAAiCC,GAA7BC,EAAKP,EAAIQ,OAAOC,cAAmBP,GAAMI,EAAKC,EAAGG,QAAQC,QAAoBV,EAAKW,KAAKN,EAAGO,QAAY1B,GAAKc,EAAKN,SAAWR,GAA3De,GAAK,IAAoE,MAAOY,GAAOX,GAAK,EAAMC,EAAKU,EAAO,QAAU,KAAWZ,GAAMK,EAAW,QAAGA,EAAW,SAAO,QAAU,GAAIJ,EAAI,KAAMC,IAAQ,MAAOH,GAAQ,MAAO,UAAUD,EAAKb,GAAK,GAAI4B,MAAMC,QAAQhB,GAAQ,MAAOA,EAAY,IAAIQ,OAAOC,WAAYpB,QAAOW,GAAQ,MAAOD,GAAcC,EAAKb,EAAa,MAAM,IAAI8B,WAAU,4DAEllBC,EAA4B,kBAAXV,SAAoD,gBAApBA,QAAOC,SAAwB,SAAUzB,GAAO,aAAcA,IAAS,SAAUA,GAAO,MAAOA,IAAyB,kBAAXwB,SAAyBxB,EAAImC,cAAgBX,QAAUxB,IAAQwB,OAAOlB,UAAY,eAAkBN,IE9DnQoC,EAAY/C,EAAQ,IACpBgD,EAAQvC,EAAOuC,OAAShD,EAAQ,GAChCiD,EAAmBjD,EAAQ,GAC3BkD,KACAC,EAAkBnD,EAAQ,IAC1BoD,EAAmBpD,EAAQ,IAC3BqD,EAAQrD,EAAQ,GAChBsD,EAAQtD,EAAQ,GAChBuD,EAAMvD,EAAQ,IACdwD,EAAYxD,EAAQ,IACpByD,KACAC,IAEJR,GAAOI,MAAQA,EACfJ,EAAOK,IAAMA,EACbL,EAAOM,UAAYA,EAEnBN,EAAOS,SAAW,SAAUC,GAC1BH,EAAUG,GAGZV,EAAOW,kBAAoB,SAAUC,EAAMC,GACzCZ,EAAgBW,GAAQC,GAG1Bb,EAAOc,KAAOf,GACZgB,YAAa,SACbC,gBAAiB,WACf,OACEC,SAAS,EACTC,cAAc,EACdC,WAAW,IAGfC,gBAAiB,WACf,OACEC,UAAW,aACXC,QAAS,aACTC,SAAU,aACVC,cAAe,aACfC,gBAAiB,aACjBC,QAAS,aACTC,UAAW,aACXC,SAAU,aACVC,iBAAkB,KAClBC,6BAA6B,IAIjCC,mBACEC,OAAQnC,EAAUoC,QAEpBC,gBAAiB,WAAY,GAAAC,GAAAxF,IAC3B,QACEqF,QACEI,aAAczF,KAAKyF,aACnBC,eAAgB1F,KAAK0F,eACrBC,SAAU3F,KAAK2F,SACfC,eAAgB5F,KAAK4F,eACrBC,aAAc,SAACC,EAAWnD,GACxB,MAAO6C,GAAKO,cAAcD,EAAWnD,GAAOqD,KAAK,SAAAC,GAAA,MAAQA,GAAK3B,cAQtE4B,mBAAoB,WAClBlG,KAAKmG,UACLnG,KAAKoG,iBAGPC,kBAAmB,WACjBrG,KAAKsG,gBAGPC,oBAAqB,WAGnBvG,KAAKwG,eAAiBxG,KAAKmG,OAAOM,IAAI,SAAAX,GAAA,MAAaA,GAAUY,MAAMzC,QAGrE0C,mBAAoB,WAEd3G,KAAK0G,MAAMxB,kBAA2D,WAAvClC,EAAOhD,KAAK0G,MAAMxB,mBAAiC/D,OAAOJ,KAAKf,KAAK0G,MAAMxB,kBAAkBzD,OAAS,GACtIzB,KAAK4G,yBAAyB5G,KAAK0G,MAAMxB,iBAG3C,IAAI2B,GAAgB7G,KAAKmG,OAAOM,IAAI,SAAAX,GAAA,MAAaA,GAAUY,MAAMzC,MAC7DT,GAAMsD,aAAa9G,KAAKwG,eAAgBK,IAC1C7G,KAAKsG,gBAKTS,YAAa,WACX,MAAO/G,MAAK0G,MAAMM,aAIpBC,MAAO,SAAUC,GACflH,KAAKmH,iBAAgB,GACrBnH,KAAKoH,WAAWF,IAIlBG,OAAQ,SAAUC,GAEhBA,GAASA,EAAMC,iBAKfvH,KAAKmH,iBAAgB,EACrB,IAAIK,GAAQxH,KAAKyH,UACjBzH,MAAK0G,MAAM9B,SAAS4C,EAAOxH,KAAKoH,WAAYpH,KAAK0H,uBACjD1H,KAAK2H,MAAMrD,QAAUtE,KAAK0G,MAAM7B,cAAc2C,EAAOxH,KAAKoH,WAAYpH,KAAK0H,uBAAyB1H,KAAK0G,MAAM5B,gBAAgB0C,EAAOxH,KAAKoH,WAAYpH,KAAK0H,wBAI9JE,SAAU,SAAUJ,GAElB,MAAIxH,MAAK0G,MAAMmB,QACN7H,KAAK0G,MAAMmB,QAAQL,GAEnBjE,EAAiBuE,MAAM3G,OAAOJ,KAAKyG,GAAOO,OAAO,SAACC,EAAarG,GAIpE,IAFA,GAAIsG,GAAWtG,EAAIuG,MAAM,KACrBC,EAAOH,EACJC,EAASxG,QAAQ,CACtB,GAAI2G,GAAaH,EAASI,OAC1BF,GAAQA,EAAKC,GAAcH,EAASxG,OAAS0G,EAAKC,OAAoBZ,EAAM7F,GAG9E,MAAOqG,UAMbP,SAAU,WACR,GAAIa,GAAgBtI,KAAKuI,kBACzB,OAAOvI,MAAK4H,SAASU,IAIvBlB,WAAY,SAAUF,GACpBlH,KAAKmG,OAAOqC,QAAQ,SAAA1C,GAClB,GAAI7B,GAAO6B,EAAUY,MAAMzC,IACvBiD,IAAQA,EAAK7F,eAAe4C,GAC9B6B,EAAU2C,SAASvB,EAAKjD,IAExB6B,EAAU4C,eAGd1I,KAAKsG,gBAGPM,yBAA0B,SAAU+B,GAClC3I,KAAKmG,OAAOqC,QAAQ,SAAA1C,GAClB,GAAI7B,GAAO6B,EAAUY,MAAMzC,IAC3B,IAAMA,IAAQ0E,GAAd,CAGA,GAAIC,KACFC,SAA2B,OAAjBF,EAAO1E,GACjB6E,iBAA0C,gBAAjBH,GAAO1E,IAAsB0E,EAAO1E,IAAS0E,EAAO1E,IAE/E6B,GAAUiD,SAASC,MAAMlD,EAAW8C,OAKxCK,UAAW,WACT,OAAQzF,EAAM0F,OAAOlJ,KAAKmJ,oBAAqBnJ,KAAKuI,qBAGtDY,kBAAmB,WACjB,MAAOnJ,MAAKmG,OAAO4B,OAAO,SAACb,EAAMpB,GAC/B,GAAI7B,GAAO6B,EAAUY,MAAMzC,IAE3B,OADAiD,GAAKjD,GAAQ6B,EAAUY,MAAM/D,MACtBuE,QAOXQ,sBAAuB,SAAUiB,GAAQ,GAAAS,GAAApJ,IACvCmB,QAAOJ,KAAK4H,GAAQH,QAAQ,SAACvE,EAAMoF,GACjC,GAAIvD,GAAYtC,EAAM8F,KAAKF,EAAKjD,OAAQ,SAAAL,GAAA,MAAaA,GAAUY,MAAMzC,OAASA,GAC9E,KAAK6B,EACH,KAAM,IAAIyD,OAAM,iGAC8BC,KAAKC,UAAUd,GAE/D,IAAIC,KACFC,SAAUO,EAAK1C,MAAMvB,8BAA+B,EACpDuE,eAAwC,gBAAjBf,GAAO1E,IAAsB0E,EAAO1E,IAAS0E,EAAO1E,IAE7E6B,GAAUiD,SAASC,MAAMlD,EAAW8C,MAIxChD,eAAgB,WACd,MAAO5F,MAAK0G,MAAMiD,UAGpBpB,iBAAkB,WAChB,MAAOvI,MAAKmG,OAAO4B,OAAO,SAACb,EAAMpB,GAC/B,GAAI7B,GAAO6B,EAAUY,MAAMzC,IAE3B,OADAiD,GAAKjD,GAAQ6B,EAAU6B,MAAMiC,OACtB1C,QAIXC,gBAAiB,SAAU0C,GACzB7J,KAAK+I,UACHe,gBAAiBD,IAKnB7J,KAAKmG,OAAOqC,QAAQ,SAAC1C,EAAWuD,GAC9BvD,EAAUiD,UACRe,gBAAiBD,EACjBE,YAAaF,OAQnBlE,SAAU,SAAUG,GAAW,GAAAkE,GAAAhK,IAGzBA,MAAK2H,MAAMnD,WACbxE,KAAK0G,MAAMzB,SAASjF,KAAKyH,WAAYzH,KAAKiJ,aAG5CjJ,KAAK+F,cAAcD,GAChBE,KAAK,SAAAiE,GACCA,GAKLnE,EAAUiD,UACRF,SAAUoB,EAAW3F,QACrB4F,YAAaD,EAAWE,WACxBrB,iBAAkBmB,EAAWG,MAC7BV,eAAgB,MACfM,EAAK1D,iBAKdP,cAAe,SAAUD,EAAWnD,GAAO,GAAA0H,GAAArK,KAErCsI,EAAgBtI,KAAKuI,mBACrBrD,EAAmBY,EAAUY,MAAMxB,iBACnCoF,EAAkBxE,EAAUY,MAAM4D,eAGtC,IAFA3H,EAA6B,IAArBnB,UAAUC,OAAekB,EAAQmD,EAAU6B,MAAMiC,OAErD5J,KAAK+G,eAAiB/G,KAAKoG,aAAaN,EAAUY,MAAMzC,QAAUtB,EAAO,CAC3E,GAAM2B,GAAUwB,EAAUxB,UACpB6F,EAAarE,EAAUyE,eACvBH,GAAStE,EAAU0E,kBACzB,OAAO,IAAIC,SAAQ,SAAUC,EAASC,GACpCD,GACEpG,QAASA,EACT6F,WAAYA,EACZC,MAAOA,MAOb,MAFApK,MAAKoG,aAAaN,EAAUY,MAAMzC,MAAQtB,EAEnC8H,QAAQG,KACb5K,KAAK6K,SAASlI,EAAO2F,EAAexC,EAAUgF,cAC9C9K,KAAK6K,SAASlI,EAAO2F,EAAexC,EAAUiF,wBAE7C/E,KAAK,SAAAgF,GAA0C,GAAAC,GAAArJ,EAAAoJ,EAAA,GAAxCE,EAAwCD,EAAA,GAArBE,EAAqBF,EAAA,GAE1CG,EAAoBX,QAAQC,SAShC,OANkC,kBAAvB5E,GAAUH,WACnByF,EAAoBX,QAAQC,QAAQ5E,EAAUH,YAAYK,KAAK,SAAAqF,GAC7DH,EAAkBI,OAAUD,MAAkB,aAI3CD,EAAkBpF,KAAK,WAC5B,KAAIqE,EAAKlE,OAAOjF,QAAQ4E,GAAa,GAArC,CAIA,GAAIqE,KAAahJ,OAAOJ,KAAK+E,EAAUiF,sBAAsBtJ,UAAW0J,EAAgBI,QAAQ9J,OAC5F6C,IAAW4G,EAAkBI,OAAO7J,QAAY4I,EAAK3D,MAAMxB,kBAAoBmF,EAAK3D,MAAMxB,iBAAiBY,EAAUY,MAAMzC,MAE/H,QACEkG,WAAYA,EACZ7F,SAAS6F,GAAqB7F,EAC9B8F,MAAQ,WAEN,GAAI9F,IAAY6F,EACd,MAAOtG,EAGT,IAAIqH,EAAkBvC,OAAOlH,OAC3B,MAAOyJ,GAAkBvC,MAG3B,IAAI3I,KAAK0G,MAAMxB,kBAAoBlF,KAAK0G,MAAMxB,iBAAiBY,EAAUY,MAAMzC,MAC7E,MAAoE,gBAAtDjE,MAAK0G,MAAMxB,iBAAiBY,EAAUY,MAAMzC,OAAsBjE,KAAK0G,MAAMxB,iBAAiBY,EAAUY,MAAMzC,OAASjE,KAAK0G,MAAMxB,iBAAiBY,EAAUY,MAAMzC,KAGnL,IAAIkG,EAAY,CACd,GAAIC,GAAQlF,EAAiBiG,EAAgBI,QAAQ,GACrD,OAAOnB,IAASA,GAAS,KAG3B,MAAIc,GAAkBI,OAAO7J,OACpByJ,EAAkBI,OAAO7E,IAAI,SAAS6E,GAC3C,MAAOpG,GAAiBoG,GAAUpG,EAAiBoG,GAAUhB,IAC5DkB,OAAO,SAASC,EAAGC,EAAK5J,GAEzB,MAAOA,GAAIZ,QAAQuK,KAAOC,IAL9B,QASAlL,KA5BM6J,UAkClBQ,SAAU,SAAUlI,EAAO2F,EAAeqD,GAExC,GAAIC,IACFjD,UACA2C,UACAC,WAGF,OAAOd,SAAQG,IAAIzJ,OAAOJ,KAAK4K,GAAalF,IAAI,SAAUoF,GAExD,GAAIvI,EAAgBuI,IAA8D,kBAAlCF,GAAYE,GAC1D,KAAM,IAAItC,OAAM,8DAAgEsC,EAGlF,KAAKvI,EAAgBuI,IAA8D,kBAAlCF,GAAYE,GAC3D,KAAM,IAAItC,OAAM,6CAA+CsC,EAGjE,OAA6C,kBAAlCF,GAAYE,GACdpB,QAAQC,QAAQiB,EAAYE,GAAkBvD,EAAe3F,IACjEqD,KAAK,SAAAiE,GACsB,gBAAfA,IACT2B,EAAQjD,OAAOjG,KAAKuH,GACpB2B,EAAQN,OAAO5I,KAAKmJ,IACV5B,GACV2B,EAAQN,OAAO5I,KAAKmJ,KAKwB,kBAAlCF,GAAYE,GACrBpB,QAAQC,QAAQpH,EAAgBuI,GAAkBvD,EAAe3F,EAAOgJ,EAAYE,KACxF7F,KAAK,SAAAiE,GACsB,gBAAfA,IACT2B,EAAQjD,OAAOjG,KAAKuH,GACpB2B,EAAQN,OAAO5I,KAAKmJ,IACV5B,EAGV2B,EAAQL,QAAQ7I,KAAKmJ,GAFrBD,EAAQN,OAAO5I,KAAKmJ,KAQrBD,EAAQL,QAAQ7I,KAAKmJ,MAG3B7F,KAAK,iBAAM4F,MAKhBtF,aAAc,WAAY,GAAAwF,GAAA9L,KAIpB+L,EAAuB,WACzB,GAAIC,GAAahM,KAAKmG,OAAO8F,MAAM,SAAAnG,GACjC,MAAOA,GAAU6B,MAAMkB,UAGzB7I,MAAK+I,UACHzE,QAAS0H,IAGPA,EACFhM,KAAK0G,MAAM3B,UAEX/E,KAAK0G,MAAM1B,YAIbhF,KAAK+I,UACHvE,WAAW,KAGb0H,KAAKlM,KAIPA,MAAKmG,OAAOqC,QAAQ,SAAC1C,EAAWuD,GAC9ByC,EAAK/F,cAAcD,GAChBE,KAAK,SAAAiE,GACCA,IAGDA,EAAW3F,SAAWwB,EAAU6B,MAAM+B,iBACxCO,EAAW3F,SAAU,GAEvBwB,EAAUiD,UACRF,SAAUoB,EAAW3F,QACrB4F,YAAaD,EAAWE,WACxBrB,iBAAkBmB,EAAWG,MAC7BV,gBAAiBO,EAAW3F,SAAWwB,EAAU6B,MAAM+B,eAAiB5D,EAAU6B,MAAM+B,eAAiB,MACxGL,IAAUyC,EAAK3F,OAAO1E,OAAS,EAAIsK,EAAuB,WAM9D/L,KAAKmG,OAAO1E,QACfzB,KAAK+I,UACHvE,WAAW,KAOjBiB,aAAc,SAAUK,GAElB9F,KAAKmG,OAAOjF,QAAQ4E,MAAe,GACrC9F,KAAKmG,OAAOzD,KAAKoD,GAGnB9F,KAAK2F,SAASG,IAKhBJ,eAAgB,SAAUI,GACxB,GAAIqG,GAAenM,KAAKmG,OAAOjF,QAAQ4E,EAEnCqG,MAAiB,IACnBnM,KAAKmG,OAASnG,KAAKmG,OAAOiG,MAAM,EAAGD,GAChCE,OAAOrM,KAAKmG,OAAOiG,MAAMD,EAAe,KAG7CnM,KAAKsG,gBAEPgG,OAAQ,WAAY,GAAAC,GAgBdvM,KAAK0G,MADJ8F,GAfaD,EAEhB1E,QAFgB0E,EAGhBrH,iBAHgBqH,EAIhB3H,SAJgB2H,EAKhBxH,QALgBwH,EAMhB1H,cANgB0H,EAOhBvH,UAPgBuH,EAQhBzH,gBARgByH,EAShBtH,SATgBsH,EAUhBtF,MAVgBsF,EAWhBpH,4BAXgBoH,EAYhB7H,UAZgB6H,EAahB5H,QAbgB4H,EAchBvF,YAdgBnG,EAAA0L,GAAA,uLAkBlB,OACEpJ,GAAAsJ,cAAA,OAAAnL,KAAUkL,GAAgB5H,SAAU5E,KAAKqH,SACtCrH,KAAK0G,MAAMgG,aAOf9L,EAAOjB,SAAYiB,EAAOhB,QAAYgB,EAAOd,QAAWc,EAAOd,OAAOC,MACzEa,EAAOyC,OAASA,GAGlBzD,EAAOD,QAAU0D,IFmEa7C,KAAKb,EAAU,WAAa,MAAOK,WAI3D,SAAUJ,EAAQD,GGljBxB,QAAAgN,KACA,SAAApD,OAAA,mCAEA,QAAAqD,KACA,SAAArD,OAAA,qCAsBA,QAAAsD,GAAAC,GACA,GAAAC,IAAAC,WAEA,MAAAA,YAAAF,EAAA,EAGA,KAAAC,IAAAJ,IAAAI,IAAAC,WAEA,MADAD,GAAAC,WACAA,WAAAF,EAAA,EAEA,KAEA,MAAAC,GAAAD,EAAA,GACK,MAAAG,GACL,IAEA,MAAAF,GAAAvM,KAAA,KAAAsM,EAAA,GACS,MAAAG,GAET,MAAAF,GAAAvM,KAAAR,KAAA8M,EAAA,KAMA,QAAAI,GAAAC,GACA,GAAAC,IAAAC,aAEA,MAAAA,cAAAF,EAGA,KAAAC,IAAAR,IAAAQ,IAAAC,aAEA,MADAD,GAAAC,aACAA,aAAAF,EAEA,KAEA,MAAAC,GAAAD,GACK,MAAAF,GACL,IAEA,MAAAG,GAAA5M,KAAA,KAAA2M,GACS,MAAAF,GAGT,MAAAG,GAAA5M,KAAAR,KAAAmN,KAYA,QAAAG,KACAC,GAAAC,IAGAD,GAAA,EACAC,EAAA/L,OACAgM,EAAAD,EAAAnB,OAAAoB,GAEAC,GAAA,EAEAD,EAAAhM,QACAkM,KAIA,QAAAA,KACA,IAAAJ,EAAA,CAGA,GAAAK,GAAAf,EAAAS,EACAC,IAAA,CAGA,KADA,GAAAM,GAAAJ,EAAAhM,OACAoM,GAAA,CAGA,IAFAL,EAAAC,EACAA,OACAC,EAAAG,GACAL,GACAA,EAAAE,GAAAI,KAGAJ,IAAA,EACAG,EAAAJ,EAAAhM,OAEA+L,EAAA,KACAD,GAAA,EACAL,EAAAU,IAiBA,QAAAG,GAAAjB,EAAAkB,GACAhO,KAAA8M,MACA9M,KAAAgO,QAYA,QAAAC,MAhKA,GAOAlB,GACAK,EARAc,EAAAtO,EAAAD,YAgBA,WACA,IAEAoN,EADA,kBAAAC,YACAA,WAEAL,EAEK,MAAAM,GACLF,EAAAJ,EAEA,IAEAS,EADA,kBAAAC,cACAA,aAEAT,EAEK,MAAAK,GACLG,EAAAR,KAuDA,IAEAY,GAFAC,KACAF,GAAA,EAEAG,GAAA,CAyCAQ,GAAAC,SAAA,SAAArB,GACA,GAAAlE,GAAA,GAAA/F,OAAArB,UAAAC,OAAA,EACA,IAAAD,UAAAC,OAAA,EACA,OAAAR,GAAA,EAAuBA,EAAAO,UAAAC,OAAsBR,IAC7C2H,EAAA3H,EAAA,GAAAO,UAAAP,EAGAwM,GAAA/K,KAAA,GAAAqL,GAAAjB,EAAAlE,IACA,IAAA6E,EAAAhM,QAAA8L,GACAV,EAAAc,IASAI,EAAA3M,UAAA0M,IAAA,WACA9N,KAAA8M,IAAA9D,MAAA,KAAAhJ,KAAAgO,QAEAE,EAAAE,MAAA,UACAF,EAAAG,SAAA,EACAH,EAAAI,OACAJ,EAAAK,QACAL,EAAAM,QAAA,GACAN,EAAAO,YAIAP,EAAAQ,GAAAT,EACAC,EAAAS,YAAAV,EACAC,EAAAU,KAAAX,EACAC,EAAAW,IAAAZ,EACAC,EAAAY,eAAAb,EACAC,EAAAa,mBAAAd,EACAC,EAAAc,KAAAf,EACAC,EAAAe,gBAAAhB,EACAC,EAAAgB,oBAAAjB,EAEAC,EAAAiB,UAAA,SAAAlL,GAAqC,UAErCiK,EAAAkB,QAAA,SAAAnL,GACA,SAAAsF,OAAA,qCAGA2E,EAAAmB,IAAA,WAA2B,WAC3BnB,EAAAoB,MAAA,SAAAC,GACA,SAAAhG,OAAA,mCAEA2E,EAAAsB,MAAA,WAA4B,WHokBtB,SAAU5P,EAAQD,GI3vBxBC,EAAAD,QAAAM,GJiwBM,SAAUL,EAAQD,EAASQ,IKjwBjC,SAAA+N,GAUA,YAuBA,SAAAuB,GAAAC,EAAAC,EAAAC,EAAAC,EAAAnP,EAAAoP,EAAA7C,EAAA8C,GAGA,GAFAC,EAAAL,IAEAD,EAAA,CACA,GAAAtF,EACA,IAAAjI,SAAAwN,EACAvF,EAAA,GAAAb,OAAA,qIACK,CACL,GAAAX,IAAAgH,EAAAC,EAAAnP,EAAAoP,EAAA7C,EAAA8C,GACAE,EAAA,CACA7F,GAAA,GAAAb,OAAAoG,EAAAO,QAAA,iBACA,MAAAtH,GAAAqH,QAEA7F,EAAAnG,KAAA,sBAIA,KADAmG,GAAA+F,YAAA,EACA/F,GA3BA,GAAA4F,GAAA,SAAAL,IAEA,gBAAAzB,EAAAI,IAAA8B,WACAJ,EAAA,SAAAL,GACA,GAAAxN,SAAAwN,EACA,SAAApG,OAAA,kDA0BA3J,EAAAD,QAAA8P,ILowB8BjP,KAAKb,EAASQ,EAAoB,KAI1D,SAAUP,EAAQD,EAASQ,IAEJ,SAASS,GAAS,YMh0B/C,IAAIsC,GAAY/C,EAAQ,IACpBqD,EAAQrD,EAAQ,GAGhBkQ,GAFQzP,EAAOuC,OAAShD,EAAQ,GAEH,SAAUwL,GAEzC,MAA2B,gBAAhBA,GAEFA,EAAYzD,MAAM,uBAAuBH,OAAO,SAAU4D,EAAa1B,GAC5E,GAAIrB,GAAOqB,EAAW/B,MAAM,KACxBoI,EAAiB1H,EAAKP,OAU1B,IARAO,EAAOA,EAAKnC,IAAI,SAAU8J,GACxB,IACE,MAAO/G,MAAKgH,MAAMD,GAClB,MAAOtD,GACP,MAAOsD,MAIP3H,EAAKnH,OAAS,EAChB,KAAM,IAAI8H,OAAM,yGAIlB,OADAoC,GAAY2E,IAAkB1H,EAAKnH,QAASmH,EAAK,GAC1C+C,OAKJA,OAGT/L,GAAOD,SACL0E,gBAAiB,WACf,OACEuF,OAAQ5J,KAAK0G,MAAM/D,MACnBuH,aAAa,EACbrB,UAAW7I,KAAK0G,MAAM+J,SACtB1G,aAAa,EACb2G,eAAgB1Q,KAAK0G,MAAM/D,MAC3BmG,oBACAY,eAAgB,KAChBI,gBAAgB,IAGpB6G,cACEtL,OAAQnC,EAAUoC,QAEpBb,gBAAiB,WACf,OACE6F,gBAAiB,GACjBpF,sBAIJgB,mBAAoB,WAClBlG,KAAK4Q,aAAc,CACnB,IAAIC,GAAY,WACd7Q,KAAK8Q,eAAe9Q,KAAK0G,MAAMiF,YAAa3L,KAAK0G,MAAM+J,UAGvDzQ,KAAK+Q,QAAQ1L,OAAOI,aAAazF,OAEjCkM,KAAKlM,KAEP,KAAKA,KAAK0G,MAAMzC,KACd,KAAM,IAAIsF,OAAM,gDAclBsH,MAIFG,0BAA2B,SAAUC,GACnCjR,KAAK8Q,eAAeG,EAAUtF,YAAasF,EAAUR,WAIvD9J,mBAAoB,SAAUuK,GAIvB1N,EAAM0F,OAAOlJ,KAAK0G,MAAM/D,MAAOuO,EAAUvO,QAC5C3C,KAAKyI,SAASzI,KAAK0G,MAAM/D,OAItBa,EAAM0F,OAAOlJ,KAAK0G,MAAMiF,YAAauF,EAAUvF,cAAiBnI,EAAM0F,OAAOlJ,KAAK0G,MAAM+J,SAAUS,EAAUT,WAC/GzQ,KAAK+Q,QAAQ1L,OAAOM,SAAS3F,OAKjCmR,qBAAsB,WACpBnR,KAAK4Q,aAAc,EACnB5Q,KAAK+Q,QAAQ1L,OAAOK,eAAe1F,OAIrC8Q,eAAgB,SAAUnF,EAAa8E,GAGrCzQ,KAAK8K,aAAeuF,EAA2B1E,OAC/C3L,KAAK+K,qBAAuB0F,KAAa,GAAQW,wBAAwB,GAAQf,EAA2BI,IAK9GhI,SAAU,SAAU9F,GACb3C,KAAK4Q,aAGV5Q,KAAK+I,UACHa,OAAQjH,EACRoH,aAAa,GACZ,WACD/J,KAAK+Q,QAAQ1L,OAAOM,SAAS3F,OAE7BkM,KAAKlM,QAET0I,WAAY,WACV1I,KAAK+I,UACHa,OAAQ5J,KAAK2H,MAAM+I,eACnB3G,aAAa,GACZ,WACD/J,KAAK+Q,QAAQ1L,OAAOM,SAAS3F,SAIjCqR,SAAU,WACR,MAAOrR,MAAK2H,MAAMiC,QAEpB0H,SAAU,WACR,MAA6B,KAAtBtR,KAAK2H,MAAMiC,QAEpBY,gBAAiB,WACf,GAAI+G,GAAWvR,KAAKwR,kBACpB,OAAOD,GAAS9P,OAAS8P,EAAS,GAAK,MAEzCC,iBAAkB,WAChB,OAAQxR,KAAKsE,WAAatE,KAAKuK,eAAkBvK,KAAK2H,MAAM+B,gBAAkB1J,KAAK2H,MAAMmB,yBAE3FlD,eAAgB,WACd,MAAO5F,MAAK+Q,QAAQ1L,OAAOO,kBAG7BtB,QAAS,WACP,MAAOtE,MAAK2H,MAAMkB,UAEpBgB,WAAY,WACV,MAAO7J,MAAK2H,MAAMoC,aAEpB0H,gBAAiB,WACf,MAAOzR,MAAK2H,MAAMmC,gBAEpBK,WAAY,WACV,QAASnK,KAAK0G,MAAM+J,UAEtBlG,aAAc,WACZ,MAAOvK,MAAK2H,MAAMuC,aAEpBwH,UAAW,WACT,OAAQ1R,KAAKuK,iBAAmBvK,KAAKsE,WAEvCuB,aAAc,SAAUlD,GACtB,MAAO3C,MAAK+Q,QAAQ1L,OAAOQ,aAAarF,KAAK,KAAMR,KAAM2C,ONm0B/BnC,KAAKb,EAAU,WAAa,MAAOK,WAI3D,SAAUJ,EAAQD,EAASQ,GO9+BjC,YAEA,IAAAgD,GAAAhD,EAAA,GACAT,EAAAS,EAAA,GAEA,uBAAAgD,GACA,KAAAoG,OACA,oJAMA,IAAAoI,IAAA,GAAAxO,GAAAyO,WAAAC,OAEAjS,GAAAD,QAAAD,EACAyD,EAAAyO,UACAzO,EAAA2O,eACAH,IPggCM,SAAU/R,EAAQD,GQ5hCxB,YAaA,SAAAoS,GAAAxB,GACA,kBACA,MAAAA,IASA,GAAAyB,GAAA,YAEAA,GAAAC,YAAAF,EACAC,EAAAE,iBAAAH,GAAA,GACAC,EAAAG,gBAAAJ,GAAA,GACAC,EAAAI,gBAAAL,EAAA,MACAC,EAAAK,gBAAA,WACA,MAAArS,OAEAgS,EAAAM,oBAAA,SAAA/B,GACA,MAAAA,IAGA3Q,EAAAD,QAAAqS,GRkiCM,SAAUpS,EAAQD,EAASQ,ISvkCjC,SAAA+N,GAUA,YAEA,IAAA8D,GAAA7R,EAAA,GASAoS,EAAAP,CAEA,mBAAA9D,EAAAI,IAAA8B,SAAA,CACA,GAAAoC,GAAA,SAAA7C,GACA,OAAA8C,GAAAjR,UAAAC,OAAAmH,EAAA/F,MAAA4P,EAAA,EAAAA,EAAA,KAAAC,EAAA,EAAsFA,EAAAD,EAAaC,IACnG9J,EAAA8J,EAAA,GAAAlR,UAAAkR,EAGA,IAAAzC,GAAA,EACA0C,EAAA,YAAAhD,EAAAO,QAAA,iBACA,MAAAtH,GAAAqH,MAEA,oBAAA2C,UACAA,QAAAxI,MAAAuI,EAEA,KAIA,SAAApJ,OAAAoJ,GACK,MAAAlH,KAGL8G,GAAA,SAAA7C,EAAAC,GACA,GAAAxN,SAAAwN,EACA,SAAApG,OAAA,4EAGA,QAAAoG,EAAAzO,QAAA,iCAIAwO,EAAA,CACA,OAAAmD,GAAArR,UAAAC,OAAAmH,EAAA/F,MAAAgQ,EAAA,EAAAA,EAAA,KAAAC,EAAA,EAA4FA,EAAAD,EAAeC,IAC3GlK,EAAAkK,EAAA,GAAAtR,UAAAsR,EAGAN,GAAAxJ,MAAA7G,QAAAwN,GAAAtD,OAAAzD,MAKAhJ,EAAAD,QAAA4S,IT0kC8B/R,KAAKb,EAASQ,EAAoB,KAI1D,SAAUP,EAAQD,GUpoCxB,YAEA,IAAAoT,GAAA,8CAEAnT,GAAAD,QAAAoT,GVopCM,SAAUnT,EAAQD,GAEvB,YAEA,IAAIqD,GAA4B,kBAAXV,SAAoD,gBAApBA,QAAOC,SAAwB,SAAUzB,GAAO,aAAcA,IAAS,SAAUA,GAAO,MAAOA,IAAyB,kBAAXwB,SAAyBxB,EAAImC,cAAgBX,QAAUxB,IAAQwB,OAAOlB,UAAY,eAAkBN,GWrqCvQlB,GAAOD,SACLmH,aAAc,SAAU8I,EAAGC,GACzB,GAAImD,IAAc,CAUlB,OATIpD,GAAEnO,SAAWoO,EAAEpO,OACjBuR,GAAc,EAEdpD,EAAEpH,QAAQ,SAAUyK,EAAM5J,GACnBrJ,KAAKkJ,OAAO+J,EAAMpD,EAAExG,MACvB2J,GAAc,IAEfhT,MAEEgT,GAGTE,cAAe,SAAUtD,EAAGC,GAC1B,GAAImD,IAAc,CAUlB,OATI7R,QAAOJ,KAAK6O,GAAGnO,SAAWN,OAAOJ,KAAK8O,GAAGpO,OAC3CuR,GAAc,EAEd7R,OAAOJ,KAAK6O,GAAGpH,QAAQ,SAAU7G,GAC1B3B,KAAKkJ,OAAO0G,EAAEjO,GAAMkO,EAAElO,MACzBqR,GAAc,IAEfhT,MAEEgT,GAGT9J,OAAQ,SAAU0G,EAAGC,GACnB,OAAI,mBAAOD,GAAP,YAAA5M,EAAO4M,OAAP,mBAAoBC,GAApB,YAAA7M,EAAoB6M,MAEbhN,MAAMC,QAAQ8M,IAAM/M,MAAMC,QAAQ+M,IACnC7P,KAAK8G,aAAa8I,EAAGC,GACP,kBAAND,GACTA,EAAEuD,aAAetD,EAAEsD,WACJ,YAAb,mBAAOvD,GAAP,YAAA5M,EAAO4M,KAAwB,OAANA,GAAoB,OAANC,GACxC7P,KAAKkT,cAActD,EAAGC,GAGzBD,IAAMC,IAGfvG,KAAM,SAAU8J,EAAYC,GAC1B,IAAK,GAAIpS,GAAI,EAAGqS,EAAIF,EAAW3R,OAAQR,EAAIqS,EAAGrS,IAAK,CACjD,GAAIgS,GAAOG,EAAWnS,EACtB,IAAIoS,EAAGJ,GACL,MAAOA,GAGX,MAAO,SX6qCL,SAAUrT,EAAQD,EAASQ,IY/tCjC,SAAA+N,GASA,kBAAAA,EAAAI,IAAA8B,SAAA,CACA,GAAAmD,GAAA,kBAAAjR,SACAA,OAAAkR,KACAlR,OAAAkR,IAAA,kBACA,MAEA1B,EAAA,SAAAxM,GACA,sBAAAA,IACA,OAAAA,GACAA,EAAAmO,WAAAF,GAKAG,GAAA,CACA9T,GAAAD,QAAAQ,EAAA,IAAA2R,EAAA4B,OAIA9T,GAAAD,QAAAQ,EAAA,QZouC8BK,KAAKb,EAASQ,EAAoB,KAI1D,SAAUP,EAAQD,EAASQ,IAEJ,SAASS,GAAS,YAE9C,IAAIU,GAAWH,OAAOI,QAAU,SAAUP,GAAU,IAAK,GAAIC,GAAI,EAAGA,EAAIO,UAAUC,OAAQR,IAAK,CAAE,GAAIS,GAASF,UAAUP,EAAI,KAAK,GAAIU,KAAOD,GAAcP,OAAOC,UAAUC,eAAeb,KAAKkB,EAAQC,KAAQX,EAAOW,GAAOD,EAAOC,IAAY,MAAOX,IaxwCpPmC,EAAQvC,EAAOuC,OAAShD,EAAQ,GAChCiD,EAAmBjD,EAAQ,GAC3BsD,EAAQtD,EAAQ,EACpBP,GAAOD,QAAU,WACf,MAAO,UAAUiS,GACf,MAAOxO,IACLuQ,QAASlQ,GACT6I,OAAQ,WACN,MAAOnJ,GAAMsJ,cAAcmF,EAApBtQ,GACLwP,eAAgB9Q,KAAK8Q,eACrBrI,SAAUzI,KAAKyI,SACfC,WAAY1I,KAAK0I,WACjB2I,SAAUrR,KAAKqR,SACfC,SAAUtR,KAAKsR,SACf9G,gBAAiBxK,KAAKwK,gBACtBgH,iBAAkBxR,KAAKwR,iBACvB5L,eAAgB5F,KAAK4F,eACrBtB,QAAStE,KAAKsE,QACduF,WAAY7J,KAAK6J,WACjB4H,gBAAiBzR,KAAKyR,gBACtBtH,WAAYnK,KAAKmK,WACjBI,aAAcvK,KAAKuK,aACnBmH,UAAW1R,KAAK0R,UAChB7L,aAAc7F,KAAK6F,cAChB7F,KAAK0G,eb+wCYlG,KAAKb,EAAU,WAAa,MAAOK,WAI3D,SAAUJ,EAAQD,EAASQ,IAEJ,SAASS,GAAS,YcxwC/C,SAASgT,GAAehC,GACtB,MACEA,GAAUxN,aACVwN,EAAU3N,OACY,gBAAd2N,GAAyBA,EAAY,adswChD,GAAItQ,GAAWH,OAAOI,QAAU,SAAUP,GAAU,IAAK,GAAIC,GAAI,EAAGA,EAAIO,UAAUC,OAAQR,IAAK,CAAE,GAAIS,GAASF,UAAUP,EAAI,KAAK,GAAIU,KAAOD,GAAcP,OAAOC,UAAUC,eAAeb,KAAKkB,EAAQC,KAAQX,EAAOW,GAAOD,EAAOC,IAAY,MAAOX,Ic/yCpPmC,EAAQvC,EAAOuC,OAAShD,EAAQ,GAChCiD,EAAmBjD,EAAQ,GAC3BsD,EAAQtD,EAAQ,EACpBP,GAAOD,QAAU,SAAUiS,GACzB,MAAOxO,IACLgB,YAAa,UAAYwP,EAAehC,GAAa,IACrD+B,QAASlQ,GAET6I,OAAQ,WAAY,GACVuH,GAAa7T,KAAK0G,MAAlBmN,SACFC,KACJhD,eAAgB9Q,KAAK8Q,eACrBrI,SAAUzI,KAAKyI,SACfC,WAAY1I,KAAK0I,WACjB2I,SAAUrR,KAAKqR,SACfC,SAAUtR,KAAKsR,SACf9G,gBAAiBxK,KAAKwK,gBACtBgH,iBAAkBxR,KAAKwR,iBACvB5L,eAAgB5F,KAAK4F,eACrBtB,QAAStE,KAAKsE,QACduF,WAAY7J,KAAK6J,WACjB4H,gBAAiBzR,KAAKyR,gBACtBtH,WAAYnK,KAAKmK,WACjBI,aAAcvK,KAAKuK,aACnBmH,UAAW1R,KAAK0R,UAChB7L,aAAc7F,KAAK6F,cAChB7F,KAAK0G,MAMV,OAHImN,KACFC,EAAgBC,IAAMF,GAEjB1Q,EAAMsJ,cAAcmF,EAAWkC,SdyzCdtT,KAAKb,EAAU,WAAa,MAAOK,WAI3D,SAAUJ,EAAQD,GAEvB,Ye/1CD,IAAIqU,GAAW,SAAUrR,GACvB,MAAiB,QAAVA,GAA4BR,SAAVQ,GAGvBsR,EAAU,SAAUtR,GACtB,MAAiB,KAAVA,GAGLgJ,GACFyF,uBAAwB,SAAU8C,EAAQvR,GACxC,MAAiBR,UAAVQ,GAAiC,KAAVA,GAEhCqR,SAAU,SAAUE,EAAQvR,GAC1B,MAAOqR,GAASrR,IAElBwR,YAAa,SAAUD,EAAQvR,EAAOyR,GACpC,OAAQJ,EAASrR,IAAUsR,EAAQtR,IAAUyR,EAAOC,KAAK1R,IAE3D2R,YAAa,SAAUJ,EAAQvR,GAC7B,MAAiBR,UAAVQ,GAET4R,cAAe,SAAUL,EAAQvR,GAC/B,MAAOsR,GAAQtR,IAEjB6R,QAAS,SAAUN,EAAQvR,GACzB,MAAOgJ,GAAYwI,YAAYD,EAAQvR,EAAO,44BAEhD8R,MAAO,SAAUP,EAAQvR,GACvB,MAAOgJ,GAAYwI,YAAYD,EAAQvR,EAAO,yqCAEhD+R,OAAQ,SAAUR,EAAQvR,GACxB,MAAOA,MAAU,GAEnBgS,QAAS,SAAUT,EAAQvR,GACzB,MAAOA,MAAU,GAEnBiS,UAAW,SAAUV,EAAQvR,GAC3B,MAAqB,gBAAVA,IAGJgJ,EAAYwI,YAAYD,EAAQvR,EAAO,0BAEhDkS,QAAS,SAAUX,EAAQvR,GACzB,MAAOgJ,GAAYwI,YAAYD,EAAQvR,EAAO,cAEhDmS,eAAgB,SAAUZ,EAAQvR,GAChC,MAAOgJ,GAAYwI,YAAYD,EAAQvR,EAAO,iBAEhDoS,MAAO,SAAUb,EAAQvR,GACvB,MAAOgJ,GAAYwI,YAAYD,EAAQvR,EAAO,8BAEhDqS,QAAS,SAAUd,EAAQvR,GACzB,MAAOgJ,GAAYwI,YAAYD,EAAQvR,EAAO,yDAEhDsS,QAAS,SAAUf,EAAQvR,GACzB,MAAOgJ,GAAYwI,YAAYD,EAAQvR,EAAO,gBAEhDuS,eAAgB,SAAUhB,EAAQvR,GAChC,MAAOgJ,GAAYwI,YAAYD,EAAQvR,EAAO,6BAEhDwS,SAAU,SAAUjB,EAAQvR,EAAOlB,GACjC,OAAQuS,EAASrR,IAAUsR,EAAQtR,IAAUA,EAAMlB,SAAWA,GAEhE2T,OAAQ,SAAUlB,EAAQvR,EAAO0S,GAC/B,OAAQrB,EAASrR,IAAUsR,EAAQtR,IAAUA,GAAS0S,GAExDC,YAAa,SAAUpB,EAAQvR,EAAO4S,GACpC,MAAO5S,IAASuR,EAAOqB,IAEzBC,UAAW,SAAUtB,EAAQvR,EAAOlB,GAClC,OAAQuS,EAASrR,IAAUA,EAAMlB,QAAUA,GAE7CgU,UAAW,SAAUvB,EAAQvR,EAAOlB,GAClC,OAAQuS,EAASrR,IAAUsR,EAAQtR,IAAUA,EAAMlB,QAAUA,GAIjE7B,GAAOD,QAAUgM,Gfq2CX,SAAU/L,EAAQD,EAASQ,IgBl7CjC,SAAA+N,GAUA,YAeA,SAAAwH,GAAArC,GACA,MAAAA,GAcA,QAAA3T,GAAAiW,EAAA7D,EAAAH,GA2TA,QAAAiE,GAAAC,EAAAC,EAAAC,GACA,OAAAC,KAAAF,GACAA,EAAAzU,eAAA2U,IAGA,eAAA9H,EAAAI,IAAA8B,UACAmC,EACA,kBAAAuD,GAAAE,GACA,oFAEAH,EAAAzR,aAAA,aACA6R,EAAAF,GACAC,GAOA,QAAAE,GAAAC,EAAAlS,GACA,GAAAmS,GAAAC,EAAAhV,eAAA4C,GACAoS,EAAApS,GACA,IAGAqS,GAAAjV,eAAA4C,IACAsS,EACA,kBAAAH,EACA,2JAGAnS,GAKAkS,GACAI,EACA,gBAAAH,GAAA,uBAAAA,EACA,gIAGAnS,GASA,QAAAuS,GAAAX,EAAAY,GACA,GAAAA,EAAA,CAqBAF,EACA,kBAAAE,GACA,sHAIAF,GACAzE,EAAA2E,GACA,mGAIA,IAAAC,GAAAb,EAAAzU,UACAuV,EAAAD,EAAAE,oBAKAH,GAAApV,eAAAwV,IACAC,EAAAnD,OAAAkC,EAAAY,EAAA9C,OAGA,QAAA1P,KAAAwS,GACA,GAAAA,EAAApV,eAAA4C,IAIAA,IAAA4S,EAAA,CAKA,GAAAE,GAAAN,EAAAxS,GACAkS,EAAAO,EAAArV,eAAA4C,EAGA,IAFAiS,EAAAC,EAAAlS,GAEA6S,EAAAzV,eAAA4C,GACA6S,EAAA7S,GAAA4R,EAAAkB,OACO,CAKP,GAAAC,GAAAX,EAAAhV,eAAA4C,GACAgT,EAAA,kBAAAF,GACAG,EACAD,IACAD,IACAb,GACAM,EAAAU,YAAA,CAEA,IAAAD,EACAP,EAAAjU,KAAAuB,EAAA8S,GACAL,EAAAzS,GAAA8S,MAEA,IAAAZ,EAAA,CACA,GAAAC,GAAAC,EAAApS,EAGAsS,GACAS,IACA,uBAAAZ,GACA,gBAAAA,GACA,mFAEAA,EACAnS,GAKA,uBAAAmS,EACAM,EAAAzS,GAAAmT,EAAAV,EAAAzS,GAAA8S,GACa,gBAAAX,IACbM,EAAAzS,GAAAoT,EAAAX,EAAAzS,GAAA8S,QAGAL,GAAAzS,GAAA8S,EACA,eAAA7I,EAAAI,IAAA8B,UAGA,kBAAA2G,IAAAN,EAAArS,cACAsS,EAAAzS,GAAAG,YAAAqS,EAAArS,YAAA,IAAAH,SAtGA,mBAAAiK,EAAAI,IAAA8B,SAAA,CACA,GAAAkH,SAAAb,GACAc,EAAA,WAAAD,GAAA,OAAAb,CAEA,gBAAAvI,EAAAI,IAAA8B,UACAmC,EACAgF,EACA,wMAIA1B,EAAAzR,aAAA,aACA,OAAAqS,EAAA,KAAAa,IAmGA,QAAAE,GAAA3B,EAAA4B,GACA,GAAAA,EAGA,OAAAxT,KAAAwT,GAAA,CACA,GAAAV,GAAAU,EAAAxT,EACA,IAAAwT,EAAApW,eAAA4C,GAAA,CAIA,GAAAyT,GAAAzT,IAAA6S,EACAP,IACAmB,EACA,0MAIAzT,EAGA,IAAA0T,GAAA1T,IAAA4R,EACAU,IACAoB,EACA,uHAGA1T,GAEA4R,EAAA5R,GAAA8S,IAWA,QAAAa,GAAAC,EAAAC,GACAvB,EACAsB,GAAAC,GAAA,gBAAAD,IAAA,gBAAAC,GACA,4DAGA,QAAAnW,KAAAmW,GACAA,EAAAzW,eAAAM,KACA4U,EACApU,SAAA0V,EAAAlW,GACA,yPAKAA,GAEAkW,EAAAlW,GAAAmW,EAAAnW,GAGA,OAAAkW,GAWA,QAAAT,GAAAS,EAAAC,GACA,kBACA,GAAAlI,GAAAiI,EAAA7O,MAAAhJ,KAAAwB,WACAqO,EAAAiI,EAAA9O,MAAAhJ,KAAAwB,UACA,UAAAoO,EACA,MAAAC,EACO,UAAAA,EACP,MAAAD,EAEA,IAAAlP,KAGA,OAFAkX,GAAAlX,EAAAkP,GACAgI,EAAAlX,EAAAmP,GACAnP,GAYA,QAAA2W,GAAAQ,EAAAC,GACA,kBACAD,EAAA7O,MAAAhJ,KAAAwB,WACAsW,EAAA9O,MAAAhJ,KAAAwB,YAWA,QAAAuW,GAAAjS,EAAAkS,GACA,GAAAC,GAAAD,EAAA9L,KAAApG,EACA,mBAAAoI,EAAAI,IAAA8B,SAAA,CACA6H,EAAAC,oBAAApS,EACAmS,EAAAE,mBAAAH,EACAC,EAAAG,sBAAA,IACA,IAAAC,GAAAvS,EAAA7C,YAAAmB,YACAkU,EAAAL,EAAA/L,IACA+L,GAAA/L,KAAA,SAAAqM,GACA,IACA,GAAA9F,GAAAjR,UAAAC,OACAmH,EAAA/F,MAAA4P,EAAA,EAAAA,EAAA,KACAC,EAAA,EACAA,EAAAD,EACAC,IAEA9J,EAAA8J,EAAA,GAAAlR,UAAAkR,EAMA,IAAA6F,IAAAzS,GAAA,OAAAyS,EACA,eAAArK,EAAAI,IAAA8B,UACAmC,GACA,EACA,sFAEA8F,OAGS,KAAAzP,EAAAnH,OAUT,MATA,eAAAyM,EAAAI,IAAA8B,UACAmC,GACA,EACA,2KAGA8F,GAGAJ,CAEA,IAAAO,GAAAF,EAAAtP,MAAAiP,EAAAzW,UAIA,OAHAgX,GAAAN,oBAAApS,EACA0S,EAAAL,mBAAAH,EACAQ,EAAAJ,sBAAAxP,EACA4P,GAGA,MAAAP,GAQA,QAAAQ,GAAA3S,GAEA,OADA4S,GAAA5S,EAAA8Q,qBACA3V,EAAA,EAAmBA,EAAAyX,EAAAjX,OAAkBR,GAAA,GACrC,GAAA0X,GAAAD,EAAAzX,GACA+W,EAAAU,EAAAzX,EAAA,EACA6E,GAAA6S,GAAAZ,EAAAjS,EAAAkS,IAmEA,QAAAY,GAAAnC,GAIA,GAAAZ,GAAAH,EAAA,SAAAhP,EAAAqK,EAAAc,GAIA,eAAA3D,EAAAI,IAAA8B,UACAmC,EACAvS,eAAA6V,GACA,yHAMA7V,KAAA4W,qBAAAnV,QACAgX,EAAAzY,MAGAA,KAAA0G,QACA1G,KAAA+Q,UACA/Q,KAAA6Y,KAAAC,EACA9Y,KAAA6R,WAAAF,EAEA3R,KAAA2H,MAAA,IAKA,IAAAoR,GAAA/Y,KAAAqE,gBAAArE,KAAAqE,kBAAA,IACA,gBAAA6J,EAAAI,IAAA8B,UAGAjO,SAAA4W,GACA/Y,KAAAqE,gBAAA2U,kBAIAD,EAAA,MAGAxC,EACA,gBAAAwC,KAAAlW,MAAAC,QAAAiW,GACA,sDACAlD,EAAAzR,aAAA,2BAGApE,KAAA2H,MAAAoR,GAEAlD,GAAAzU,UAAA,GAAA6X,GACApD,EAAAzU,UAAA6B,YAAA4S,EACAA,EAAAzU,UAAAwV,wBAEAsC,EAAA1Q,QAAAgO,EAAAtK,KAAA,KAAA2J,IAEAW,EAAAX,EAAAsD,GACA3C,EAAAX,EAAAY,GACAD,EAAAX,EAAAuD,GAGAvD,EAAApR,kBACAoR,EAAAwD,aAAAxD,EAAApR,mBAGA,eAAAyJ,EAAAI,IAAA8B,WAKAyF,EAAApR,kBACAoR,EAAApR,gBAAA6U,yBAEAzD,EAAAzU,UAAAiD,kBACAwR,EAAAzU,UAAAiD,gBAAAiV,0BAIA/C,EACAV,EAAAzU,UAAAkL,OACA,2EAGA,eAAA4B,EAAAI,IAAA8B,WACAmC,GACAsD,EAAAzU,UAAAmY,sBACA,8KAIA9C,EAAArS,aAAA,eAEAmO,GACAsD,EAAAzU,UAAAoY,0BACA,gGAEA/C,EAAArS,aAAA,eAKA,QAAAqV,KAAApD,GACAR,EAAAzU,UAAAqY,KACA5D,EAAAzU,UAAAqY,GAAA,KAIA,OAAA5D,GApzBA,GAAAqD,MAwBA7C,GAOA1C,OAAA,cASA8D,QAAA,cAQAiC,UAAA,cAQA/I,aAAA,cAQAvL,kBAAA,cAcAX,gBAAA,qBAgBAJ,gBAAA,qBAMAkB,gBAAA,qBAiBA+G,OAAA,cAWApG,mBAAA,cAYAG,kBAAA,cAqBA2K,0BAAA,cAsBA2I,sBAAA,cAiBApT,oBAAA,cAcAI,mBAAA,cAaAwK,qBAAA,cAcAyI,gBAAA,iBAYA9C,GACA1S,YAAA,SAAAyR,EAAAzR,GACAyR,EAAAzR,eAEAuP,OAAA,SAAAkC,EAAAlC,GACA,GAAAA,EACA,OAAA1S,GAAA,EAAuBA,EAAA0S,EAAAlS,OAAmBR,IAC1CuV,EAAAX,EAAAlC,EAAA1S,KAIAmE,kBAAA,SAAAyQ,EAAAzQ,GACA,eAAA8I,EAAAI,IAAA8B,UACAwF,EAAAC,EAAAzQ,EAAA,gBAEAyQ,EAAAzQ,kBAAAyU,KAEAhE,EAAAzQ,kBACAA,IAGAuL,aAAA,SAAAkF,EAAAlF,GACA,eAAAzC,EAAAI,IAAA8B,UACAwF,EAAAC,EAAAlF,EAAA,WAEAkF,EAAAlF,aAAAkJ,KAEAhE,EAAAlF,aACAA,IAOAlM,gBAAA,SAAAoR,EAAApR,GACAoR,EAAApR,gBACAoR,EAAApR,gBAAA2S,EACAvB,EAAApR,gBACAA,GAGAoR,EAAApR,mBAGAiV,UAAA,SAAA7D,EAAA6D,GACA,eAAAxL,EAAAI,IAAA8B,UACAwF,EAAAC,EAAA6D,EAAA,QAEA7D,EAAA6D,UAAAG,KAAwChE,EAAA6D,cAExCjC,QAAA,SAAA5B,EAAA4B,GACAD,EAAA3B,EAAA4B,IAEAN,SAAA,cAsVAgC,GACA9S,kBAAA,WACArG,KAAA8Z,aAAA,IAIAV,GACAjI,qBAAA,WACAnR,KAAA8Z,aAAA,IAQAxD,GAKAyD,aAAA,SAAAC,EAAAC,GACAja,KAAA6R,QAAAqI,oBAAAla,KAAAga,EAAAC,IASAE,UAAA,WAaA,MAZA,eAAAjM,EAAAI,IAAA8B,WACAmC,EACAvS,KAAAoa,mBACA,kJAGApa,KAAAiD,aAAAjD,KAAAiD,YAAAmB,aACApE,KAAAiE,MACA,aAEAjE,KAAAoa,oBAAA,KAEApa,KAAA8Z,cAIAb,EAAA,YA8HA,OA7HAY,GACAZ,EAAA7X,UACAuU,EAAAvU,UACAkV,GA0HAsC,EAx1BA,GAAAiB,GAAA1Z,EAAA,IAEA2Y,EAAA3Y,EAAA,IACAoW,EAAApW,EAAA,EAEA,mBAAA+N,EAAAI,IAAA8B,SACA,GAAAmC,GAAApS,EAAA,EAGA,IAQA8V,GARAY,EAAA,QAUAZ,GADA,eAAA/H,EAAAI,IAAA8B,UAEAiK,KAAA,OACAtJ,QAAA,UACAuJ,aAAA,oBAq0BA1a,EAAAD,QAAAD,IhBs7C8Bc,KAAKb,EAASQ,EAAoB,KAI1D,SAAUP,EAAQD,EAASQ,IiBjyEjC,SAAA+N,GAUA,YAEA,IAAA4K,KAEA,gBAAA5K,EAAAI,IAAA8B,UACAjP,OAAAoZ,OAAAzB,GAGAlZ,EAAAD,QAAAmZ,IjBoyE8BtY,KAAKb,EAASQ,EAAoB,KAI1D,SAAUP,EAAQD,GkB1zExB,QAAAmI,GAAApG,GACA,MAAAP,QAAAJ,KAAAW,GAAAqG,OAAA,SAAAyS,EAAA7Y,GACA,GAAA8Y,GAAA9Y,EAAA+Y,MAAA,WACAC,EAAAhZ,EAAA+Y,MAAA,eACAC,IAAAF,EAAA,IAAApO,OAAAsO,GAAAlU,IAAA,SAAA9E,GACA,MAAAA,GAAAuO,QAAA,cAGA,KADA,GAAA0K,GAAAJ,EACAG,EAAAlZ,QAAA,CACA,GAAAoZ,GAAAF,EAAAtS,OAEAwS,KAAAD,GACAA,IAAAC,IAEAD,EAAAC,GAAAF,EAAAlZ,OAAAqZ,MAAAH,EAAA,UAAkEjZ,EAAAC,GAClEiZ,IAAAC,IAIA,MAAAL,QAIA,QAAAO,GAAAja,GACA,QAAAka,GAAAC,EAAAjF,EAAAkF,GACA,MAAArY,OAAAC,QAAAoY,IAAA,oBAAA/Z,OAAAC,UAAA+R,SAAA3S,KAAA0a,IACA/Z,OAAAJ,KAAAma,GAAA1S,QAAA,SAAA2S,GACAH,EAAAC,EAAAjF,EAAA,IAAAmF,EAAA,IAAAD,EAAAC,MAEAF,IAGAA,EAAAjF,GAAAkF,EACAD,GAGA,GAAAla,GAAAI,OAAAJ,KAAAD,EACA,OAAAC,GAAAgH,OAAA,SAAAkT,EAAAjF,GACA,MAAAgF,GAAAC,EAAAjF,EAAAlV,EAAAkV,SAIApW,EAAAD,SACAob,UACAjT,UlBi0EM,SAAUlI,EAAQD;;;;;AmBv2ExB,YAMA,SAAAyb,GAAAC,GACA,UAAAA,GAAAlZ,SAAAkZ,EACA,SAAAtY,WAAA,wDAGA,OAAA5B,QAAAka,GAGA,QAAAC,KACA,IACA,IAAAna,OAAAI,OACA,QAMA,IAAAga,GAAA,GAAAC,QAAA,MAEA,IADAD,EAAA,QACA,MAAApa,OAAAsa,oBAAAF,GAAA,GACA,QAKA,QADAG,MACAza,EAAA,EAAiBA,EAAA,GAAQA,IACzBya,EAAA,IAAAF,OAAAG,aAAA1a,KAEA,IAAA2a,GAAAza,OAAAsa,oBAAAC,GAAAjV,IAAA,SAAAoV,GACA,MAAAH,GAAAG,IAEA,mBAAAD,EAAAE,KAAA,IACA,QAIA,IAAAC,KAIA,OAHA,uBAAA7T,MAAA,IAAAM,QAAA,SAAAwT,GACAD,EAAAC,OAGA,yBADA7a,OAAAJ,KAAAI,OAAAI,UAAkCwa,IAAAD,KAAA,IAMhC,MAAAlZ,GAEF,UApDA,GAAAqZ,GAAA9a,OAAA8a,sBACA5a,EAAAF,OAAAC,UAAAC,eACA6a,EAAA/a,OAAAC,UAAA+a,oBAsDAvc,GAAAD,QAAA2b,IAAAna,OAAAI,OAAA,SAAAP,EAAAU,GAKA,OAJA0a,GAEAC,EADAC,EAAAlB,EAAApa,GAGAub,EAAA,EAAgBA,EAAA/a,UAAAC,OAAsB8a,IAAA,CACtCH,EAAAjb,OAAAK,UAAA+a,GAEA,QAAA5a,KAAAya,GACA/a,EAAAb,KAAA4b,EAAAza,KACA2a,EAAA3a,GAAAya,EAAAza,GAIA,IAAAsa,EAAA,CACAI,EAAAJ,EAAAG,EACA,QAAAnb,GAAA,EAAkBA,EAAAob,EAAA5a,OAAoBR,IACtCib,EAAA1b,KAAA4b,EAAAC,EAAApb,MACAqb,EAAAD,EAAApb,IAAAmb,EAAAC,EAAApb,MAMA,MAAAqb,KnBq3EM,SAAU1c,EAAQD,EAASQ,IoB78EjC,SAAA+N,GASA,YAoBA,SAAAsO,GAAAC,EAAAvI,EAAA6B,EAAAsC,EAAAqE,GACA,kBAAAxO,EAAAI,IAAA8B,SACA,OAAAuM,KAAAF,GACA,GAAAA,EAAApb,eAAAsb,GAAA,CACA,GAAAvS,EAIA,KAGAqF,EAAA,kBAAAgN,GAAAE,GAAA,oFAAgGtE,GAAA,cAAAtC,EAAA4G,GAChGvS,EAAAqS,EAAAE,GAAAzI,EAAAyI,EAAAtE,EAAAtC,EAAA,KAAAhD,GACS,MAAA6J,GACTxS,EAAAwS,EAGA,GADArK,GAAAnI,eAAAb,OAAA,2RAAgG8O,GAAA,cAAAtC,EAAA4G,QAAAvS,IAChGA,YAAAb,UAAAa,EAAAuI,UAAAkK,IAAA,CAGAA,EAAAzS,EAAAuI,UAAA,CAEA,IAAAmK,GAAAJ,MAAA,EAEAnK,IAAA,yBAAAwD,EAAA3L,EAAAuI,QAAA,MAAAmK,IAAA,MA1CA,kBAAA5O,EAAAI,IAAA8B,SACA,GAAAX,GAAAtP,EAAA,GACAoS,EAAApS,EAAA,GACA4S,EAAA5S,EAAA,GACA0c,IA6CAjd,GAAAD,QAAA6c,IpBi9E8Bhc,KAAKb,EAASQ,EAAoB,KAI1D,SAAUP,EAAQD,EAASQ,GqBxgFjC,YAEA,IAAA6R,GAAA7R,EAAA,GACAsP,EAAAtP,EAAA,GACA4S,EAAA5S,EAAA,EAEAP,GAAAD,QAAA,WACA,QAAAod,GAAArW,EAAAsP,EAAAqC,EAAAtC,EAAAiH,EAAAC,GACAA,IAAAlK,GAIAtD,GACA,EACA,mLAMA,QAAAyN,KACA,MAAAH,GAFAA,EAAA5S,WAAA4S,CAMA,IAAAI,IACAnP,MAAA+O,EACAK,KAAAL,EACA7Y,KAAA6Y,EACAM,OAAAN,EACAzX,OAAAyX,EACAO,OAAAP,EACAQ,OAAAR,EAEAS,IAAAT,EACAU,QAAAP,EACAQ,QAAAX,EACAY,WAAAT,EACAU,KAAAb,EACAc,SAAAX,EACAY,MAAAZ,EACAa,UAAAb,EACAc,MAAAd,EAMA,OAHAC,GAAAX,eAAAxK,EACAmL,EAAAja,UAAAia,EAEAA,IrByhFM,SAAUvd,EAAQD,EAASQ,IsBllFjC,SAAA+N,GASA,YAEA,IAAA8D,GAAA7R,EAAA,GACAsP,EAAAtP,EAAA,GACAoS,EAAApS,EAAA,GAEA4S,EAAA5S,EAAA,GACAqc,EAAArc,EAAA,GAEAP,GAAAD,QAAA,SAAAmS,EAAA4B,GAmBA,QAAAuK,GAAAC,GACA,GAAAC,GAAAD,IAAAE,GAAAF,EAAAE,IAAAF,EAAAG,GACA,sBAAAF,GACA,MAAAA,GAgFA,QAAAG,GAAA7S,EAAA8S,GAEA,MAAA9S,KAAA8S,EAGA,IAAA9S,GAAA,EAAAA,IAAA,EAAA8S,EAGA9S,OAAA8S,MAYA,QAAAC,GAAA7L,GACA3S,KAAA2S,UACA3S,KAAA8c,MAAA,GAKA,QAAA2B,GAAA9Y,GAKA,QAAA+Y,GAAAvU,EAAAzD,EAAAsP,EAAAqC,EAAAtC,EAAAiH,EAAAC,GAIA,GAHA5E,KAAAsG,EACA3B,KAAAhH,EAEAiH,IAAAlK,EACA,GAAAW,EAEAjE,GACA,EACA,yLAIS,mBAAAvB,EAAAI,IAAA8B,UAAA,mBAAAwC,SAAA,CAET,GAAAgM,GAAAvG,EAAA,IAAArC,GAEA6I,EAAAD,IAEAE,EAAA,IAEAvM,GACA,EACA,8SAKAyK,EACA3E,GAEAwG,EAAAD,IAAA,EACAE,KAIA,aAAApY,EAAAsP,GACA7L,EAEA,GAAAqU,GADA,OAAA9X,EAAAsP,GACA,OAAAD,EAAA,KAAAiH,EAAA,mCAAA3E,EAAA,+BAEA,OAAAtC,EAAA,KAAAiH,EAAA,mCAAA3E,EAAA,qCAEA,KAEA1S,EAAAe,EAAAsP,EAAAqC,EAAAtC,EAAAiH,GAjDA,kBAAA9O,EAAAI,IAAA8B,SACA,GAAAyO,MACAC,EAAA,CAmDA,IAAAC,GAAAL,EAAAxS,KAAA,QAGA,OAFA6S,GAAA5U,WAAAuU,EAAAxS,KAAA,SAEA6S,EAGA,QAAAC,GAAAC,GACA,QAAAtZ,GAAAe,EAAAsP,EAAAqC,EAAAtC,EAAAiH,EAAAC,GACA,GAAAiC,GAAAxY,EAAAsP,GACAmJ,EAAAC,EAAAF,EACA,IAAAC,IAAAF,EAAA,CAIA,GAAAI,GAAAC,EAAAJ,EAEA,WAAAV,GAAA,WAAAzI,EAAA,KAAAiH,EAAA,kBAAAqC,EAAA,kBAAAhH,EAAA,qBAAA4G,EAAA,OAEA,YAEA,MAAAR,GAAA9Y,GAGA,QAAA4Z,KACA,MAAAd,GAAAzM,EAAAI,iBAGA,QAAAoN,GAAAC,GACA,QAAA9Z,GAAAe,EAAAsP,EAAAqC,EAAAtC,EAAAiH,GACA,qBAAAyC,GACA,UAAAjB,GAAA,aAAAxB,EAAA,mBAAA3E,EAAA,kDAEA,IAAA6G,GAAAxY,EAAAsP,EACA,KAAAnT,MAAAC,QAAAoc,GAAA,CACA,GAAAC,GAAAC,EAAAF,EACA,WAAAV,GAAA,WAAAzI,EAAA,KAAAiH,EAAA,kBAAAmC,EAAA,kBAAA9G,EAAA,0BAEA,OAAApX,GAAA,EAAqBA,EAAAie,EAAAzd,OAAsBR,IAAA,CAC3C,GAAAmJ,GAAAqV,EAAAP,EAAAje,EAAAoX,EAAAtC,EAAAiH,EAAA,IAAA/b,EAAA,IAAA8R,EACA,IAAA3I,YAAAb,OACA,MAAAa,GAGA,YAEA,MAAAqU,GAAA9Y,GAGA,QAAA+Z,KACA,QAAA/Z,GAAAe,EAAAsP,EAAAqC,EAAAtC,EAAAiH,GACA,GAAAkC,GAAAxY,EAAAsP,EACA,KAAAlE,EAAAoN,GAAA,CACA,GAAAC,GAAAC,EAAAF,EACA,WAAAV,GAAA,WAAAzI,EAAA,KAAAiH,EAAA,kBAAAmC,EAAA,kBAAA9G,EAAA,uCAEA,YAEA,MAAAoG,GAAA9Y,GAGA,QAAAga,GAAAC,GACA,QAAAja,GAAAe,EAAAsP,EAAAqC,EAAAtC,EAAAiH,GACA,KAAAtW,EAAAsP,YAAA4J,IAAA,CACA,GAAAC,GAAAD,EAAA3b,MAAA0a,EACAmB,EAAAC,EAAArZ,EAAAsP,GACA,WAAAwI,GAAA,WAAAzI,EAAA,KAAAiH,EAAA,kBAAA8C,EAAA,kBAAAzH,EAAA,iCAAAwH,EAAA,OAEA,YAEA,MAAApB,GAAA9Y,GAGA,QAAAqa,GAAAC,GAMA,QAAAta,GAAAe,EAAAsP,EAAAqC,EAAAtC,EAAAiH,GAEA,OADAkC,GAAAxY,EAAAsP,GACA/U,EAAA,EAAqBA,EAAAgf,EAAAxe,OAA2BR,IAChD,GAAAqd,EAAAY,EAAAe,EAAAhf,IACA,WAIA,IAAAif,GAAA1W,KAAAC,UAAAwW,EACA,WAAAzB,GAAA,WAAAzI,EAAA,KAAAiH,EAAA,eAAAkC,EAAA,sBAAA7G,EAAA,sBAAA6H,EAAA,MAdA,MAAArd,OAAAC,QAAAmd,GAgBAxB,EAAA9Y,IAfA,eAAAuI,EAAAI,IAAA8B,SAAAmC,GAAA,+EACAP,EAAAI,iBAiBA,QAAA+N,GAAAV,GACA,QAAA9Z,GAAAe,EAAAsP,EAAAqC,EAAAtC,EAAAiH,GACA,qBAAAyC,GACA,UAAAjB,GAAA,aAAAxB,EAAA,mBAAA3E,EAAA,mDAEA,IAAA6G,GAAAxY,EAAAsP,GACAmJ,EAAAC,EAAAF,EACA,eAAAC,EACA,UAAAX,GAAA,WAAAzI,EAAA,KAAAiH,EAAA,kBAAAmC,EAAA,kBAAA9G,EAAA,0BAEA,QAAA1W,KAAAud,GACA,GAAAA,EAAA7d,eAAAM,GAAA,CACA,GAAAyI,GAAAqV,EAAAP,EAAAvd,EAAA0W,EAAAtC,EAAAiH,EAAA,IAAArb,EAAAoR,EACA,IAAA3I,YAAAb,OACA,MAAAa,GAIA,YAEA,MAAAqU,GAAA9Y,GAGA,QAAAya,GAAAC,GAoBA,QAAA1a,GAAAe,EAAAsP,EAAAqC,EAAAtC,EAAAiH,GACA,OAAA/b,GAAA,EAAqBA,EAAAof,EAAA5e,OAAgCR,IAAA,CACrD,GAAAqf,GAAAD,EAAApf,EACA,UAAAqf,EAAA5Z,EAAAsP,EAAAqC,EAAAtC,EAAAiH,EAAAjK,GACA,YAIA,UAAAyL,GAAA,WAAAzI,EAAA,KAAAiH,EAAA,sBAAA3E,EAAA,OA3BA,IAAAxV,MAAAC,QAAAud,GAEA,MADA,eAAAnS,EAAAI,IAAA8B,SAAAmC,GAAA,mFACAP,EAAAI,eAGA,QAAAnR,GAAA,EAAmBA,EAAAof,EAAA5e,OAAgCR,IAAA,CACnD,GAAAqf,GAAAD,EAAApf,EACA,sBAAAqf,GAQA,MAPA/N,IACA,EACA,4GAEAgO,EAAAD,GACArf,GAEA+Q,EAAAI,gBAcA,MAAAqM,GAAA9Y,GAGA,QAAA6a,KACA,QAAA7a,GAAAe,EAAAsP,EAAAqC,EAAAtC,EAAAiH,GACA,MAAAyD,GAAA/Z,EAAAsP,IAGA,KAFA,GAAAwI,GAAA,WAAAzI,EAAA,KAAAiH,EAAA,sBAAA3E,EAAA,6BAIA,MAAAoG,GAAA9Y,GAGA,QAAA+a,GAAAC,GACA,QAAAhb,GAAAe,EAAAsP,EAAAqC,EAAAtC,EAAAiH,GACA,GAAAkC,GAAAxY,EAAAsP,GACAmJ,EAAAC,EAAAF,EACA,eAAAC,EACA,UAAAX,GAAA,WAAAzI,EAAA,KAAAiH,EAAA,cAAAmC,EAAA,sBAAA9G,EAAA,yBAEA,QAAA1W,KAAAgf,GAAA,CACA,GAAAL,GAAAK,EAAAhf,EACA,IAAA2e,EAAA,CAGA,GAAAlW,GAAAkW,EAAApB,EAAAvd,EAAA0W,EAAAtC,EAAAiH,EAAA,IAAArb,EAAAoR,EACA,IAAA3I,EACA,MAAAA,IAGA,YAEA,MAAAqU,GAAA9Y,GAGA,QAAA8a,GAAAvB,GACA,aAAAA,IACA,aACA,aACA,gBACA,QACA,eACA,OAAAA,CACA,cACA,GAAArc,MAAAC,QAAAoc,GACA,MAAAA,GAAAjT,MAAAwU,EAEA,WAAAvB,GAAApN,EAAAoN,GACA,QAGA,IAAAf,GAAAF,EAAAiB,EACA,KAAAf,EAqBA,QApBA,IACAyC,GADAre,EAAA4b,EAAA3d,KAAA0e,EAEA,IAAAf,IAAAe,EAAA2B,SACA,OAAAD,EAAAre,EAAAC,QAAAC,MACA,IAAAge,EAAAG,EAAAje,OACA,aAKA,QAAAie,EAAAre,EAAAC,QAAAC,MAAA,CACA,GAAAqe,GAAAF,EAAAje,KACA,IAAAme,IACAL,EAAAK,EAAA,IACA,SASA,QACA,SACA,UAIA,QAAAC,GAAA5B,EAAAD,GAEA,iBAAAC,IAKA,WAAAD,EAAA,kBAKA,kBAAA5c,SAAA4c,YAAA5c,SAQA,QAAA8c,GAAAF,GACA,GAAAC,SAAAD,EACA,OAAArc,OAAAC,QAAAoc,GACA,QAEAA,YAAA8B,QAIA,SAEAD,EAAA5B,EAAAD,GACA,SAEAC,EAKA,QAAAG,GAAAJ,GACA,sBAAAA,IAAA,OAAAA,EACA,SAAAA,CAEA,IAAAC,GAAAC,EAAAF,EACA,eAAAC,EAAA,CACA,GAAAD,YAAA+B,MACA,YACO,IAAA/B,YAAA8B,QACP,eAGA,MAAA7B,GAKA,QAAAoB,GAAA5d,GACA,GAAAue,GAAA5B,EAAA3c,EACA,QAAAue,GACA,YACA,aACA,YAAAA,CACA,eACA,WACA,aACA,WAAAA,CACA,SACA,MAAAA,IAKA,QAAAnB,GAAAb,GACA,MAAAA,GAAAjc,aAAAic,EAAAjc,YAAAgB,KAGAib,EAAAjc,YAAAgB,KAFA0a,EAleA,GAAAP,GAAA,kBAAA9b,gBAAAC,SACA8b,EAAA,aAsEAM,EAAA,gBAIAxB,GACAnP,MAAAgR,EAAA,SACA5B,KAAA4B,EAAA,WACA9a,KAAA8a,EAAA,YACA3B,OAAA2B,EAAA,UACA1Z,OAAA0Z,EAAA,UACA1B,OAAA0B,EAAA,UACAzB,OAAAyB,EAAA,UAEAxB,IAAA+B,IACA9B,QAAA+B,EACA9B,QAAAgC,IACA/B,WAAAgC,EACA/B,KAAA4C,IACA3C,SAAAsC,EACArC,MAAAkC,EACAjC,UAAAqC,EACApC,MAAA0C,EA8YA,OA7WAlC,GAAApd,UAAAmI,MAAAnI,UA0WA+b,EAAAX,iBACAW,EAAAja,UAAAia,EAEAA,KtBulF8B3c,KAAKb,EAASQ,EAAoB","file":"formsy-react.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"react\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"react\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"Formsy\"] = factory(require(\"react\"));\n\telse\n\t\troot[\"Formsy\"] = factory(root[\"react\"]);\n})(this, function(__WEBPACK_EXTERNAL_MODULE_2__) {\nreturn \n\n\n// WEBPACK FOOTER //\n// webpack/universalModuleDefinition","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"react\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"react\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"Formsy\"] = factory(require(\"react\"));\n\telse\n\t\troot[\"Formsy\"] = factory(root[\"react\"]);\n})(this, function(__WEBPACK_EXTERNAL_MODULE_2__) {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId])\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.loaded = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(0);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t/* WEBPACK VAR INJECTION */(function(global) {'use strict';\n\t\n\tvar _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\t\n\tvar _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\t\n\tvar _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\t\n\tfunction _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\t\n\tvar PropTypes = __webpack_require__(10);\n\tvar React = global.React || __webpack_require__(2);\n\tvar createReactClass = __webpack_require__(5);\n\tvar Formsy = {};\n\tvar validationRules = __webpack_require__(13);\n\tvar formDataToObject = __webpack_require__(16);\n\tvar utils = __webpack_require__(9);\n\tvar Mixin = __webpack_require__(4);\n\tvar HOC = __webpack_require__(12);\n\tvar Decorator = __webpack_require__(11);\n\tvar options = {};\n\tvar emptyArray = [];\n\t\n\tFormsy.Mixin = Mixin;\n\tFormsy.HOC = HOC;\n\tFormsy.Decorator = Decorator;\n\t\n\tFormsy.defaults = function (passedOptions) {\n\t options = passedOptions;\n\t};\n\t\n\tFormsy.addValidationRule = function (name, func) {\n\t validationRules[name] = func;\n\t};\n\t\n\tFormsy.Form = createReactClass({\n\t displayName: 'Formsy',\n\t getInitialState: function getInitialState() {\n\t return {\n\t isValid: true,\n\t isSubmitting: false,\n\t canChange: false\n\t };\n\t },\n\t getDefaultProps: function getDefaultProps() {\n\t return {\n\t onSuccess: function onSuccess() {},\n\t onError: function onError() {},\n\t onSubmit: function onSubmit() {},\n\t onValidSubmit: function onValidSubmit() {},\n\t onInvalidSubmit: function onInvalidSubmit() {},\n\t onValid: function onValid() {},\n\t onInvalid: function onInvalid() {},\n\t onChange: function onChange() {},\n\t validationErrors: null,\n\t preventExternalInvalidation: false\n\t };\n\t },\n\t\n\t childContextTypes: {\n\t formsy: PropTypes.object\n\t },\n\t getChildContext: function getChildContext() {\n\t var _this = this;\n\t\n\t return {\n\t formsy: {\n\t attachToForm: this.attachToForm,\n\t detachFromForm: this.detachFromForm,\n\t validate: this.validate,\n\t isFormDisabled: this.isFormDisabled,\n\t isValidValue: function isValidValue(component, value) {\n\t return _this.runValidation(component, value).then(function (info) {\n\t return info.isValid;\n\t });\n\t }\n\t }\n\t };\n\t },\n\t\n\t // Add a map to store the inputs of the form, a model to store\n\t // the values of the form and register child inputs\n\t componentWillMount: function componentWillMount() {\n\t this.inputs = [];\n\t this.cachedValues = {};\n\t },\n\t\n\t componentDidMount: function componentDidMount() {\n\t this.validateForm();\n\t },\n\t\n\t componentWillUpdate: function componentWillUpdate() {\n\t // Keep a reference to input names before form updates,\n\t // to check if inputs has changed after render\n\t this.prevInputNames = this.inputs.map(function (component) {\n\t return component.props.name;\n\t });\n\t },\n\t\n\t componentDidUpdate: function componentDidUpdate() {\n\t\n\t if (this.props.validationErrors && _typeof(this.props.validationErrors) === 'object' && Object.keys(this.props.validationErrors).length > 0) {\n\t this.setInputValidationErrors(this.props.validationErrors);\n\t }\n\t\n\t var newInputNames = this.inputs.map(function (component) {\n\t return component.props.name;\n\t });\n\t if (utils.arraysDiffer(this.prevInputNames, newInputNames)) {\n\t this.validateForm();\n\t }\n\t },\n\t\n\t shouldCache: function shouldCache() {\n\t return this.props.cacheValues;\n\t },\n\t\n\t // Allow resetting to specified data\n\t reset: function reset(data) {\n\t this.setFormPristine(true);\n\t this.resetModel(data);\n\t },\n\t\n\t // Update model, submit to url prop and send the model\n\t submit: function submit(event) {\n\t\n\t event && event.preventDefault();\n\t\n\t // Trigger form as not pristine.\n\t // If any inputs have not been touched yet this will make them dirty\n\t // so validation becomes visible (if based on isPristine)\n\t this.setFormPristine(false);\n\t var model = this.getModel();\n\t this.props.onSubmit(model, this.resetModel, this.updateInputsWithError);\n\t this.state.isValid ? this.props.onValidSubmit(model, this.resetModel, this.updateInputsWithError) : this.props.onInvalidSubmit(model, this.resetModel, this.updateInputsWithError);\n\t },\n\t\n\t mapModel: function mapModel(model) {\n\t\n\t if (this.props.mapping) {\n\t return this.props.mapping(model);\n\t } else {\n\t return formDataToObject.toObj(Object.keys(model).reduce(function (mappedModel, key) {\n\t\n\t var keyArray = key.split('.');\n\t var base = mappedModel;\n\t while (keyArray.length) {\n\t var currentKey = keyArray.shift();\n\t base = base[currentKey] = keyArray.length ? base[currentKey] || {} : model[key];\n\t }\n\t\n\t return mappedModel;\n\t }, {}));\n\t }\n\t },\n\t\n\t getModel: function getModel() {\n\t var currentValues = this.getCurrentValues();\n\t return this.mapModel(currentValues);\n\t },\n\t\n\t // Reset each key in the model to the original / initial / specified value\n\t resetModel: function resetModel(data) {\n\t this.inputs.forEach(function (component) {\n\t var name = component.props.name;\n\t if (data && data.hasOwnProperty(name)) {\n\t component.setValue(data[name]);\n\t } else {\n\t component.resetValue();\n\t }\n\t });\n\t this.validateForm();\n\t },\n\t\n\t setInputValidationErrors: function setInputValidationErrors(errors) {\n\t this.inputs.forEach(function (component) {\n\t var name = component.props.name;\n\t if (!(name in errors)) {\n\t return;\n\t }\n\t var args = [{\n\t _isValid: errors[name] === null,\n\t _validationError: typeof errors[name] === 'string' ? [errors[name]] : errors[name]\n\t }];\n\t component.setState.apply(component, args);\n\t });\n\t },\n\t\n\t // Checks if the values have changed from their initial value\n\t isChanged: function isChanged() {\n\t return !utils.isSame(this.getPristineValues(), this.getCurrentValues());\n\t },\n\t\n\t getPristineValues: function getPristineValues() {\n\t return this.inputs.reduce(function (data, component) {\n\t var name = component.props.name;\n\t data[name] = component.props.value;\n\t return data;\n\t }, {});\n\t },\n\t\n\t // Go through errors from server and grab the components\n\t // stored in the inputs map. Change their state to invalid\n\t // and set the serverError message\n\t updateInputsWithError: function updateInputsWithError(errors) {\n\t var _this2 = this;\n\t\n\t Object.keys(errors).forEach(function (name, index) {\n\t var component = utils.find(_this2.inputs, function (component) {\n\t return component.props.name === name;\n\t });\n\t if (!component) {\n\t throw new Error('You are trying to update an input that does not exist. ' + 'Verify errors object with input names. ' + JSON.stringify(errors));\n\t }\n\t var args = [{\n\t _isValid: _this2.props.preventExternalInvalidation || false,\n\t _externalError: typeof errors[name] === 'string' ? [errors[name]] : errors[name]\n\t }];\n\t component.setState.apply(component, args);\n\t });\n\t },\n\t\n\t isFormDisabled: function isFormDisabled() {\n\t return this.props.disabled;\n\t },\n\t\n\t getCurrentValues: function getCurrentValues() {\n\t return this.inputs.reduce(function (data, component) {\n\t var name = component.props.name;\n\t data[name] = component.state._value;\n\t return data;\n\t }, {});\n\t },\n\t\n\t setFormPristine: function setFormPristine(isPristine) {\n\t this.setState({\n\t _formSubmitted: !isPristine\n\t });\n\t\n\t // Iterate through each component and set it as pristine\n\t // or \"dirty\".\n\t this.inputs.forEach(function (component, index) {\n\t component.setState({\n\t _formSubmitted: !isPristine,\n\t _isPristine: isPristine\n\t });\n\t });\n\t },\n\t\n\t // Use the binded values and the actual input value to\n\t // validate the input and set its state. Then check the\n\t // state of the form itself\n\t validate: function validate(component) {\n\t var _this3 = this;\n\t\n\t // Trigger onChange\n\t if (this.state.canChange) {\n\t this.props.onChange(this.getModel(), this.isChanged());\n\t }\n\t\n\t this.runValidation(component).then(function (validation) {\n\t if (!validation) {\n\t return;\n\t }\n\t // Run through the validations, split them up and call\n\t // the validator IF there is a value or it is required\n\t component.setState({\n\t _isValid: validation.isValid,\n\t _isRequired: validation.isRequired,\n\t _validationError: validation.error,\n\t _externalError: null\n\t }, _this3.validateForm);\n\t });\n\t },\n\t\n\t // Checks validation on current value or a passed value\n\t runValidation: function runValidation(component, value) {\n\t var _this4 = this;\n\t\n\t var currentValues = this.getCurrentValues();\n\t var validationErrors = component.props.validationErrors;\n\t var validationError = component.props.validationError;\n\t value = arguments.length === 2 ? value : component.state._value;\n\t\n\t if (this.shouldCache() && this.cachedValues[component.props.name] === value) {\n\t var isValid = component.isValid();\n\t var isRequired = component.showRequired();\n\t var error = [component.getErrorMessage()];\n\t return new Promise(function (resolve, reject) {\n\t resolve({\n\t isValid: isValid,\n\t isRequired: isRequired,\n\t error: error\n\t });\n\t });\n\t }\n\t\n\t this.cachedValues[component.props.name] = value;\n\t\n\t return Promise.all([this.runRules(value, currentValues, component._validations), this.runRules(value, currentValues, component._requiredValidations)]).then(function (_ref) {\n\t var _ref2 = _slicedToArray(_ref, 2),\n\t validationResults = _ref2[0],\n\t requiredResults = _ref2[1];\n\t\n\t var validateComponent = Promise.resolve();\n\t\n\t // the component defines an explicit validate function\n\t if (typeof component.validate === \"function\") {\n\t validateComponent = Promise.resolve(component.validate()).then(function (validated) {\n\t validationResults.failed = validated ? [] : ['failed'];\n\t });\n\t }\n\t\n\t return validateComponent.then(function () {\n\t if (_this4.inputs.indexOf(component) < 0) {\n\t return;\n\t }\n\t\n\t var isRequired = Object.keys(component._requiredValidations).length ? !!requiredResults.success.length : false;\n\t var isValid = !validationResults.failed.length && !(_this4.props.validationErrors && _this4.props.validationErrors[component.props.name]);\n\t\n\t return {\n\t isRequired: isRequired,\n\t isValid: isRequired ? false : isValid,\n\t error: function () {\n\t\n\t if (isValid && !isRequired) {\n\t return emptyArray;\n\t }\n\t\n\t if (validationResults.errors.length) {\n\t return validationResults.errors;\n\t }\n\t\n\t if (this.props.validationErrors && this.props.validationErrors[component.props.name]) {\n\t return typeof this.props.validationErrors[component.props.name] === 'string' ? [this.props.validationErrors[component.props.name]] : this.props.validationErrors[component.props.name];\n\t }\n\t\n\t if (isRequired) {\n\t var error = validationErrors[requiredResults.success[0]];\n\t return error ? [error] : null;\n\t }\n\t\n\t if (validationResults.failed.length) {\n\t return validationResults.failed.map(function (failed) {\n\t return validationErrors[failed] ? validationErrors[failed] : validationError;\n\t }).filter(function (x, pos, arr) {\n\t // Remove duplicates\n\t return arr.indexOf(x) === pos;\n\t });\n\t }\n\t }.call(_this4)\n\t };\n\t });\n\t });\n\t },\n\t\n\t runRules: function runRules(value, currentValues, validations) {\n\t\n\t var results = {\n\t errors: [],\n\t failed: [],\n\t success: []\n\t };\n\t\n\t return Promise.all(Object.keys(validations).map(function (validationMethod) {\n\t\n\t if (validationRules[validationMethod] && typeof validations[validationMethod] === 'function') {\n\t throw new Error('Formsy does not allow you to override default validations: ' + validationMethod);\n\t }\n\t\n\t if (!validationRules[validationMethod] && typeof validations[validationMethod] !== 'function') {\n\t throw new Error('Formsy does not have the validation rule: ' + validationMethod);\n\t }\n\t\n\t if (typeof validations[validationMethod] === 'function') {\n\t return Promise.resolve(validations[validationMethod](currentValues, value)).then(function (validation) {\n\t if (typeof validation === 'string') {\n\t results.errors.push(validation);\n\t results.failed.push(validationMethod);\n\t } else if (!validation) {\n\t results.failed.push(validationMethod);\n\t }\n\t return;\n\t });\n\t } else if (typeof validations[validationMethod] !== 'function') {\n\t return Promise.resolve(validationRules[validationMethod](currentValues, value, validations[validationMethod])).then(function (validation) {\n\t if (typeof validation === 'string') {\n\t results.errors.push(validation);\n\t results.failed.push(validationMethod);\n\t } else if (!validation) {\n\t results.failed.push(validationMethod);\n\t } else {\n\t results.success.push(validationMethod);\n\t }\n\t return;\n\t });\n\t }\n\t\n\t return results.success.push(validationMethod);\n\t })).then(function () {\n\t return results;\n\t });\n\t },\n\t\n\t // Validate the form by going through all child input components\n\t // and check their state\n\t validateForm: function validateForm() {\n\t var _this5 = this;\n\t\n\t // We need a callback as we are validating all inputs again. This will\n\t // run when the last component has set its state\n\t var onValidationComplete = function () {\n\t var allIsValid = this.inputs.every(function (component) {\n\t return component.state._isValid;\n\t });\n\t\n\t this.setState({\n\t isValid: allIsValid\n\t });\n\t\n\t if (allIsValid) {\n\t this.props.onValid();\n\t } else {\n\t this.props.onInvalid();\n\t }\n\t\n\t // Tell the form that it can start to trigger change events\n\t this.setState({\n\t canChange: true\n\t });\n\t }.bind(this);\n\t\n\t // Run validation again in case affected by other inputs. The\n\t // last component validated will run the onValidationComplete callback\n\t this.inputs.forEach(function (component, index) {\n\t _this5.runValidation(component).then(function (validation) {\n\t if (!validation) {\n\t return;\n\t }\n\t if (validation.isValid && component.state._externalError) {\n\t validation.isValid = false;\n\t }\n\t component.setState({\n\t _isValid: validation.isValid,\n\t _isRequired: validation.isRequired,\n\t _validationError: validation.error,\n\t _externalError: !validation.isValid && component.state._externalError ? component.state._externalError : null\n\t }, index === _this5.inputs.length - 1 ? onValidationComplete : null);\n\t });\n\t });\n\t\n\t // If there are no inputs, set state where form is ready to trigger\n\t // change event. New inputs might be added later\n\t if (!this.inputs.length) {\n\t this.setState({\n\t canChange: true\n\t });\n\t }\n\t },\n\t\n\t // Method put on each input component to register\n\t // itself to the form\n\t attachToForm: function attachToForm(component) {\n\t\n\t if (this.inputs.indexOf(component) === -1) {\n\t this.inputs.push(component);\n\t }\n\t\n\t this.validate(component);\n\t },\n\t\n\t // Method put on each input component to unregister\n\t // itself from the form\n\t detachFromForm: function detachFromForm(component) {\n\t var componentPos = this.inputs.indexOf(component);\n\t\n\t if (componentPos !== -1) {\n\t this.inputs = this.inputs.slice(0, componentPos).concat(this.inputs.slice(componentPos + 1));\n\t }\n\t\n\t this.validateForm();\n\t },\n\t render: function render() {\n\t var _props = this.props,\n\t mapping = _props.mapping,\n\t validationErrors = _props.validationErrors,\n\t onSubmit = _props.onSubmit,\n\t onValid = _props.onValid,\n\t onValidSubmit = _props.onValidSubmit,\n\t onInvalid = _props.onInvalid,\n\t onInvalidSubmit = _props.onInvalidSubmit,\n\t onChange = _props.onChange,\n\t reset = _props.reset,\n\t preventExternalInvalidation = _props.preventExternalInvalidation,\n\t onSuccess = _props.onSuccess,\n\t onError = _props.onError,\n\t cacheValues = _props.cacheValues,\n\t nonFormsyProps = _objectWithoutProperties(_props, ['mapping', 'validationErrors', 'onSubmit', 'onValid', 'onValidSubmit', 'onInvalid', 'onInvalidSubmit', 'onChange', 'reset', 'preventExternalInvalidation', 'onSuccess', 'onError', 'cacheValues']);\n\t\n\t return React.createElement(\n\t 'form',\n\t _extends({}, nonFormsyProps, { onSubmit: this.submit }),\n\t this.props.children\n\t );\n\t }\n\t});\n\t\n\tif (!global.exports && !global.module && (!global.define || !global.define.amd)) {\n\t global.Formsy = Formsy;\n\t}\n\t\n\tmodule.exports = Formsy;\n\t/* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }())))\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports) {\n\n\t// shim for using process in browser\n\tvar process = module.exports = {};\n\t\n\t// cached from whatever global is present so that test runners that stub it\n\t// don't break things. But we need to wrap it in a try catch in case it is\n\t// wrapped in strict mode code which doesn't define any globals. It's inside a\n\t// function because try/catches deoptimize in certain engines.\n\t\n\tvar cachedSetTimeout;\n\tvar cachedClearTimeout;\n\t\n\tfunction defaultSetTimout() {\n\t throw new Error('setTimeout has not been defined');\n\t}\n\tfunction defaultClearTimeout () {\n\t throw new Error('clearTimeout has not been defined');\n\t}\n\t(function () {\n\t try {\n\t if (typeof setTimeout === 'function') {\n\t cachedSetTimeout = setTimeout;\n\t } else {\n\t cachedSetTimeout = defaultSetTimout;\n\t }\n\t } catch (e) {\n\t cachedSetTimeout = defaultSetTimout;\n\t }\n\t try {\n\t if (typeof clearTimeout === 'function') {\n\t cachedClearTimeout = clearTimeout;\n\t } else {\n\t cachedClearTimeout = defaultClearTimeout;\n\t }\n\t } catch (e) {\n\t cachedClearTimeout = defaultClearTimeout;\n\t }\n\t} ())\n\tfunction runTimeout(fun) {\n\t if (cachedSetTimeout === setTimeout) {\n\t //normal enviroments in sane situations\n\t return setTimeout(fun, 0);\n\t }\n\t // if setTimeout wasn't available but was latter defined\n\t if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n\t cachedSetTimeout = setTimeout;\n\t return setTimeout(fun, 0);\n\t }\n\t try {\n\t // when when somebody has screwed with setTimeout but no I.E. maddness\n\t return cachedSetTimeout(fun, 0);\n\t } catch(e){\n\t try {\n\t // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n\t return cachedSetTimeout.call(null, fun, 0);\n\t } catch(e){\n\t // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n\t return cachedSetTimeout.call(this, fun, 0);\n\t }\n\t }\n\t\n\t\n\t}\n\tfunction runClearTimeout(marker) {\n\t if (cachedClearTimeout === clearTimeout) {\n\t //normal enviroments in sane situations\n\t return clearTimeout(marker);\n\t }\n\t // if clearTimeout wasn't available but was latter defined\n\t if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n\t cachedClearTimeout = clearTimeout;\n\t return clearTimeout(marker);\n\t }\n\t try {\n\t // when when somebody has screwed with setTimeout but no I.E. maddness\n\t return cachedClearTimeout(marker);\n\t } catch (e){\n\t try {\n\t // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n\t return cachedClearTimeout.call(null, marker);\n\t } catch (e){\n\t // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n\t // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n\t return cachedClearTimeout.call(this, marker);\n\t }\n\t }\n\t\n\t\n\t\n\t}\n\tvar queue = [];\n\tvar draining = false;\n\tvar currentQueue;\n\tvar queueIndex = -1;\n\t\n\tfunction cleanUpNextTick() {\n\t if (!draining || !currentQueue) {\n\t return;\n\t }\n\t draining = false;\n\t if (currentQueue.length) {\n\t queue = currentQueue.concat(queue);\n\t } else {\n\t queueIndex = -1;\n\t }\n\t if (queue.length) {\n\t drainQueue();\n\t }\n\t}\n\t\n\tfunction drainQueue() {\n\t if (draining) {\n\t return;\n\t }\n\t var timeout = runTimeout(cleanUpNextTick);\n\t draining = true;\n\t\n\t var len = queue.length;\n\t while(len) {\n\t currentQueue = queue;\n\t queue = [];\n\t while (++queueIndex < len) {\n\t if (currentQueue) {\n\t currentQueue[queueIndex].run();\n\t }\n\t }\n\t queueIndex = -1;\n\t len = queue.length;\n\t }\n\t currentQueue = null;\n\t draining = false;\n\t runClearTimeout(timeout);\n\t}\n\t\n\tprocess.nextTick = function (fun) {\n\t var args = new Array(arguments.length - 1);\n\t if (arguments.length > 1) {\n\t for (var i = 1; i < arguments.length; i++) {\n\t args[i - 1] = arguments[i];\n\t }\n\t }\n\t queue.push(new Item(fun, args));\n\t if (queue.length === 1 && !draining) {\n\t runTimeout(drainQueue);\n\t }\n\t};\n\t\n\t// v8 likes predictible objects\n\tfunction Item(fun, array) {\n\t this.fun = fun;\n\t this.array = array;\n\t}\n\tItem.prototype.run = function () {\n\t this.fun.apply(null, this.array);\n\t};\n\tprocess.title = 'browser';\n\tprocess.browser = true;\n\tprocess.env = {};\n\tprocess.argv = [];\n\tprocess.version = ''; // empty string to avoid regexp issues\n\tprocess.versions = {};\n\t\n\tfunction noop() {}\n\t\n\tprocess.on = noop;\n\tprocess.addListener = noop;\n\tprocess.once = noop;\n\tprocess.off = noop;\n\tprocess.removeListener = noop;\n\tprocess.removeAllListeners = noop;\n\tprocess.emit = noop;\n\tprocess.prependListener = noop;\n\tprocess.prependOnceListener = noop;\n\t\n\tprocess.listeners = function (name) { return [] }\n\t\n\tprocess.binding = function (name) {\n\t throw new Error('process.binding is not supported');\n\t};\n\t\n\tprocess.cwd = function () { return '/' };\n\tprocess.chdir = function (dir) {\n\t throw new Error('process.chdir is not supported');\n\t};\n\tprocess.umask = function() { return 0; };\n\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports) {\n\n\tmodule.exports = __WEBPACK_EXTERNAL_MODULE_2__;\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t/* WEBPACK VAR INJECTION */(function(process) {/**\n\t * Copyright (c) 2013-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t */\n\t\n\t'use strict';\n\t\n\t/**\n\t * Use invariant() to assert state which your program assumes to be true.\n\t *\n\t * Provide sprintf-style format (only %s is supported) and arguments\n\t * to provide information about what broke and what you were\n\t * expecting.\n\t *\n\t * The invariant message will be stripped in production, but the invariant\n\t * will remain to ensure logic does not differ in production.\n\t */\n\t\n\tvar validateFormat = function validateFormat(format) {};\n\t\n\tif (process.env.NODE_ENV !== 'production') {\n\t validateFormat = function validateFormat(format) {\n\t if (format === undefined) {\n\t throw new Error('invariant requires an error message argument');\n\t }\n\t };\n\t}\n\t\n\tfunction invariant(condition, format, a, b, c, d, e, f) {\n\t validateFormat(format);\n\t\n\t if (!condition) {\n\t var error;\n\t if (format === undefined) {\n\t error = new Error('Minified exception occurred; use the non-minified dev environment ' + 'for the full error message and additional helpful warnings.');\n\t } else {\n\t var args = [a, b, c, d, e, f];\n\t var argIndex = 0;\n\t error = new Error(format.replace(/%s/g, function () {\n\t return args[argIndex++];\n\t }));\n\t error.name = 'Invariant Violation';\n\t }\n\t\n\t error.framesToPop = 1; // we don't care about invariant's own frame\n\t throw error;\n\t }\n\t}\n\t\n\tmodule.exports = invariant;\n\t/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(1)))\n\n/***/ }),\n/* 4 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t/* WEBPACK VAR INJECTION */(function(global) {'use strict';\n\t\n\tvar PropTypes = __webpack_require__(10);\n\tvar utils = __webpack_require__(9);\n\tvar React = global.React || __webpack_require__(2);\n\t\n\tvar convertValidationsToObject = function convertValidationsToObject(validations) {\n\t\n\t if (typeof validations === 'string') {\n\t\n\t return validations.split(/\\,(?![^{\\[]*[}\\]])/g).reduce(function (validations, validation) {\n\t var args = validation.split(':');\n\t var validateMethod = args.shift();\n\t\n\t args = args.map(function (arg) {\n\t try {\n\t return JSON.parse(arg);\n\t } catch (e) {\n\t return arg; // It is a string if it can not parse it\n\t }\n\t });\n\t\n\t if (args.length > 1) {\n\t throw new Error('Formsy does not support multiple args on string validations. Use object format of validations instead.');\n\t }\n\t\n\t validations[validateMethod] = args.length ? args[0] : true;\n\t return validations;\n\t }, {});\n\t }\n\t\n\t return validations || {};\n\t};\n\t\n\tmodule.exports = {\n\t getInitialState: function getInitialState() {\n\t return {\n\t _value: this.props.value,\n\t _isRequired: false,\n\t _isValid: !this.props.required,\n\t _isPristine: true,\n\t _pristineValue: this.props.value,\n\t _validationError: [],\n\t _externalError: null,\n\t _formSubmitted: false\n\t };\n\t },\n\t contextTypes: {\n\t formsy: PropTypes.object // What about required?\n\t },\n\t getDefaultProps: function getDefaultProps() {\n\t return {\n\t validationError: '',\n\t validationErrors: {}\n\t };\n\t },\n\t\n\t componentWillMount: function componentWillMount() {\n\t this.canSetValue = true;\n\t var configure = function () {\n\t this.setValidations(this.props.validations, this.props.required);\n\t\n\t // Pass a function instead?\n\t this.context.formsy.attachToForm(this);\n\t //this.props._attachToForm(this);\n\t }.bind(this);\n\t\n\t if (!this.props.name) {\n\t throw new Error('Form Input requires a name property when used');\n\t }\n\t\n\t /*\n\t if (!this.props._attachToForm) {\n\t return setTimeout(function () {\n\t if (!this.isMounted()) return;\n\t if (!this.props._attachToForm) {\n\t throw new Error('Form Mixin requires component to be nested in a Form');\n\t }\n\t configure();\n\t }.bind(this), 0);\n\t }\n\t */\n\t configure();\n\t },\n\t\n\t // We have to make the validate method is kept when new props are added\n\t componentWillReceiveProps: function componentWillReceiveProps(nextProps) {\n\t this.setValidations(nextProps.validations, nextProps.required);\n\t },\n\t\n\t componentDidUpdate: function componentDidUpdate(prevProps) {\n\t\n\t // If the value passed has changed, set it. If value is not passed it will\n\t // internally update, and this will never run\n\t if (!utils.isSame(this.props.value, prevProps.value)) {\n\t this.setValue(this.props.value);\n\t }\n\t\n\t // If validations or required is changed, run a new validation\n\t if (!utils.isSame(this.props.validations, prevProps.validations) || !utils.isSame(this.props.required, prevProps.required)) {\n\t this.context.formsy.validate(this);\n\t }\n\t },\n\t\n\t // Detach it when component unmounts\n\t componentWillUnmount: function componentWillUnmount() {\n\t this.canSetValue = false;\n\t this.context.formsy.detachFromForm(this);\n\t //this.props._detachFromForm(this);\n\t },\n\t\n\t setValidations: function setValidations(validations, required) {\n\t\n\t // Add validations to the store itself as the props object can not be modified\n\t this._validations = convertValidationsToObject(validations) || {};\n\t this._requiredValidations = required === true ? { isDefaultRequiredValue: true } : convertValidationsToObject(required);\n\t },\n\t\n\t // We validate after the value has been set\n\t setValue: function setValue(value) {\n\t if (!this.canSetValue) {\n\t return;\n\t }\n\t this.setState({\n\t _value: value,\n\t _isPristine: false\n\t }, function () {\n\t this.context.formsy.validate(this);\n\t //this.props._validate(this);\n\t }.bind(this));\n\t },\n\t resetValue: function resetValue() {\n\t this.setState({\n\t _value: this.state._pristineValue,\n\t _isPristine: true\n\t }, function () {\n\t this.context.formsy.validate(this);\n\t //this.props._validate(this);\n\t });\n\t },\n\t getValue: function getValue() {\n\t return this.state._value;\n\t },\n\t hasValue: function hasValue() {\n\t return this.state._value !== '';\n\t },\n\t getErrorMessage: function getErrorMessage() {\n\t var messages = this.getErrorMessages();\n\t return messages.length ? messages[0] : null;\n\t },\n\t getErrorMessages: function getErrorMessages() {\n\t return !this.isValid() || this.showRequired() ? this.state._externalError || this.state._validationError || [] : [];\n\t },\n\t isFormDisabled: function isFormDisabled() {\n\t return this.context.formsy.isFormDisabled();\n\t //return this.props._isFormDisabled();\n\t },\n\t isValid: function isValid() {\n\t return this.state._isValid;\n\t },\n\t isPristine: function isPristine() {\n\t return this.state._isPristine;\n\t },\n\t isFormSubmitted: function isFormSubmitted() {\n\t return this.state._formSubmitted;\n\t },\n\t isRequired: function isRequired() {\n\t return !!this.props.required;\n\t },\n\t showRequired: function showRequired() {\n\t return this.state._isRequired;\n\t },\n\t showError: function showError() {\n\t return !this.showRequired() && !this.isValid();\n\t },\n\t isValidValue: function isValidValue(value) {\n\t return this.context.formsy.isValidValue.call(null, this, value);\n\t //return this.props._isValidValue.call(null, this, value);\n\t }\n\t};\n\t/* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }())))\n\n/***/ }),\n/* 5 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t/**\n\t * Copyright 2013-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t */\n\t\n\t'use strict';\n\t\n\tvar React = __webpack_require__(2);\n\tvar factory = __webpack_require__(14);\n\t\n\tif (typeof React === 'undefined') {\n\t throw Error(\n\t 'create-react-class could not find the React object. If you are using script tags, ' +\n\t 'make sure that React is being loaded before create-react-class.'\n\t );\n\t}\n\t\n\t// Hack to grab NoopUpdateQueue from isomorphic React\n\tvar ReactNoopUpdateQueue = new React.Component().updater;\n\t\n\tmodule.exports = factory(\n\t React.Component,\n\t React.isValidElement,\n\t ReactNoopUpdateQueue\n\t);\n\n\n/***/ }),\n/* 6 */\n/***/ (function(module, exports) {\n\n\t\"use strict\";\n\t\n\t/**\n\t * Copyright (c) 2013-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t * \n\t */\n\t\n\tfunction makeEmptyFunction(arg) {\n\t return function () {\n\t return arg;\n\t };\n\t}\n\t\n\t/**\n\t * This function accepts and discards inputs; it has no side effects. This is\n\t * primarily useful idiomatically for overridable function endpoints which\n\t * always need to be callable, since JS lacks a null-call idiom ala Cocoa.\n\t */\n\tvar emptyFunction = function emptyFunction() {};\n\t\n\temptyFunction.thatReturns = makeEmptyFunction;\n\temptyFunction.thatReturnsFalse = makeEmptyFunction(false);\n\temptyFunction.thatReturnsTrue = makeEmptyFunction(true);\n\temptyFunction.thatReturnsNull = makeEmptyFunction(null);\n\temptyFunction.thatReturnsThis = function () {\n\t return this;\n\t};\n\temptyFunction.thatReturnsArgument = function (arg) {\n\t return arg;\n\t};\n\t\n\tmodule.exports = emptyFunction;\n\n/***/ }),\n/* 7 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t/* WEBPACK VAR INJECTION */(function(process) {/**\n\t * Copyright 2014-2015, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t */\n\t\n\t'use strict';\n\t\n\tvar emptyFunction = __webpack_require__(6);\n\t\n\t/**\n\t * Similar to invariant but only logs a warning if the condition is not met.\n\t * This can be used to log issues in development environments in critical\n\t * paths. Removing the logging code for production environments will keep the\n\t * same logic and follow the same code paths.\n\t */\n\t\n\tvar warning = emptyFunction;\n\t\n\tif (process.env.NODE_ENV !== 'production') {\n\t var printWarning = function printWarning(format) {\n\t for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n\t args[_key - 1] = arguments[_key];\n\t }\n\t\n\t var argIndex = 0;\n\t var message = 'Warning: ' + format.replace(/%s/g, function () {\n\t return args[argIndex++];\n\t });\n\t if (typeof console !== 'undefined') {\n\t console.error(message);\n\t }\n\t try {\n\t // --- Welcome to debugging React ---\n\t // This error was thrown as a convenience so that you can use this stack\n\t // to find the callsite that caused this warning to fire.\n\t throw new Error(message);\n\t } catch (x) {}\n\t };\n\t\n\t warning = function warning(condition, format) {\n\t if (format === undefined) {\n\t throw new Error('`warning(condition, format, ...args)` requires a warning ' + 'message argument');\n\t }\n\t\n\t if (format.indexOf('Failed Composite propType: ') === 0) {\n\t return; // Ignore CompositeComponent proptype check.\n\t }\n\t\n\t if (!condition) {\n\t for (var _len2 = arguments.length, args = Array(_len2 > 2 ? _len2 - 2 : 0), _key2 = 2; _key2 < _len2; _key2++) {\n\t args[_key2 - 2] = arguments[_key2];\n\t }\n\t\n\t printWarning.apply(undefined, [format].concat(args));\n\t }\n\t };\n\t}\n\t\n\tmodule.exports = warning;\n\t/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(1)))\n\n/***/ }),\n/* 8 */\n/***/ (function(module, exports) {\n\n\t/**\n\t * Copyright 2013-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t */\n\t\n\t'use strict';\n\t\n\tvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\t\n\tmodule.exports = ReactPropTypesSecret;\n\n\n/***/ }),\n/* 9 */\n/***/ (function(module, exports) {\n\n\t'use strict';\n\t\n\tvar _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\t\n\tmodule.exports = {\n\t arraysDiffer: function arraysDiffer(a, b) {\n\t var isDifferent = false;\n\t if (a.length !== b.length) {\n\t isDifferent = true;\n\t } else {\n\t a.forEach(function (item, index) {\n\t if (!this.isSame(item, b[index])) {\n\t isDifferent = true;\n\t }\n\t }, this);\n\t }\n\t return isDifferent;\n\t },\n\t\n\t objectsDiffer: function objectsDiffer(a, b) {\n\t var isDifferent = false;\n\t if (Object.keys(a).length !== Object.keys(b).length) {\n\t isDifferent = true;\n\t } else {\n\t Object.keys(a).forEach(function (key) {\n\t if (!this.isSame(a[key], b[key])) {\n\t isDifferent = true;\n\t }\n\t }, this);\n\t }\n\t return isDifferent;\n\t },\n\t\n\t isSame: function isSame(a, b) {\n\t if ((typeof a === 'undefined' ? 'undefined' : _typeof(a)) !== (typeof b === 'undefined' ? 'undefined' : _typeof(b))) {\n\t return false;\n\t } else if (Array.isArray(a) && Array.isArray(b)) {\n\t return !this.arraysDiffer(a, b);\n\t } else if (typeof a === 'function') {\n\t return a.toString() === b.toString();\n\t } else if ((typeof a === 'undefined' ? 'undefined' : _typeof(a)) === 'object' && a !== null && b !== null) {\n\t return !this.objectsDiffer(a, b);\n\t }\n\t\n\t return a === b;\n\t },\n\t\n\t find: function find(collection, fn) {\n\t for (var i = 0, l = collection.length; i < l; i++) {\n\t var item = collection[i];\n\t if (fn(item)) {\n\t return item;\n\t }\n\t }\n\t return null;\n\t }\n\t};\n\n/***/ }),\n/* 10 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t/* WEBPACK VAR INJECTION */(function(process) {/**\n\t * Copyright 2013-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t */\n\t\n\tif (process.env.NODE_ENV !== 'production') {\n\t var REACT_ELEMENT_TYPE = (typeof Symbol === 'function' &&\n\t Symbol.for &&\n\t Symbol.for('react.element')) ||\n\t 0xeac7;\n\t\n\t var isValidElement = function(object) {\n\t return typeof object === 'object' &&\n\t object !== null &&\n\t object.$$typeof === REACT_ELEMENT_TYPE;\n\t };\n\t\n\t // By explicitly using `prop-types` you are opting into new development behavior.\n\t // http://fb.me/prop-types-in-prod\n\t var throwOnDirectAccess = true;\n\t module.exports = __webpack_require__(20)(isValidElement, throwOnDirectAccess);\n\t} else {\n\t // By explicitly using `prop-types` you are opting into new production behavior.\n\t // http://fb.me/prop-types-in-prod\n\t module.exports = __webpack_require__(19)();\n\t}\n\t\n\t/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(1)))\n\n/***/ }),\n/* 11 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t/* WEBPACK VAR INJECTION */(function(global) {'use strict';\n\t\n\tvar _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\t\n\tvar React = global.React || __webpack_require__(2);\n\tvar createReactClass = __webpack_require__(5);\n\tvar Mixin = __webpack_require__(4);\n\tmodule.exports = function () {\n\t return function (Component) {\n\t return createReactClass({\n\t mixins: [Mixin],\n\t render: function render() {\n\t return React.createElement(Component, _extends({\n\t setValidations: this.setValidations,\n\t setValue: this.setValue,\n\t resetValue: this.resetValue,\n\t getValue: this.getValue,\n\t hasValue: this.hasValue,\n\t getErrorMessage: this.getErrorMessage,\n\t getErrorMessages: this.getErrorMessages,\n\t isFormDisabled: this.isFormDisabled,\n\t isValid: this.isValid,\n\t isPristine: this.isPristine,\n\t isFormSubmitted: this.isFormSubmitted,\n\t isRequired: this.isRequired,\n\t showRequired: this.showRequired,\n\t showError: this.showError,\n\t isValidValue: this.isValidValue\n\t }, this.props));\n\t }\n\t });\n\t };\n\t};\n\t/* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }())))\n\n/***/ }),\n/* 12 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t/* WEBPACK VAR INJECTION */(function(global) {'use strict';\n\t\n\tvar _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\t\n\tvar React = global.React || __webpack_require__(2);\n\tvar createReactClass = __webpack_require__(5);\n\tvar Mixin = __webpack_require__(4);\n\tmodule.exports = function (Component) {\n\t return createReactClass({\n\t displayName: 'Formsy(' + getDisplayName(Component) + ')',\n\t mixins: [Mixin],\n\t\n\t render: function render() {\n\t var innerRef = this.props.innerRef;\n\t\n\t var propsForElement = _extends({\n\t setValidations: this.setValidations,\n\t setValue: this.setValue,\n\t resetValue: this.resetValue,\n\t getValue: this.getValue,\n\t hasValue: this.hasValue,\n\t getErrorMessage: this.getErrorMessage,\n\t getErrorMessages: this.getErrorMessages,\n\t isFormDisabled: this.isFormDisabled,\n\t isValid: this.isValid,\n\t isPristine: this.isPristine,\n\t isFormSubmitted: this.isFormSubmitted,\n\t isRequired: this.isRequired,\n\t showRequired: this.showRequired,\n\t showError: this.showError,\n\t isValidValue: this.isValidValue\n\t }, this.props);\n\t\n\t if (innerRef) {\n\t propsForElement.ref = innerRef;\n\t }\n\t return React.createElement(Component, propsForElement);\n\t }\n\t });\n\t};\n\t\n\tfunction getDisplayName(Component) {\n\t return Component.displayName || Component.name || (typeof Component === 'string' ? Component : 'Component');\n\t}\n\t/* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }())))\n\n/***/ }),\n/* 13 */\n/***/ (function(module, exports) {\n\n\t'use strict';\n\t\n\tvar _isExisty = function _isExisty(value) {\n\t return value !== null && value !== undefined;\n\t};\n\t\n\tvar isEmpty = function isEmpty(value) {\n\t return value === '';\n\t};\n\t\n\tvar validations = {\n\t isDefaultRequiredValue: function isDefaultRequiredValue(values, value) {\n\t return value === undefined || value === '';\n\t },\n\t isExisty: function isExisty(values, value) {\n\t return _isExisty(value);\n\t },\n\t matchRegexp: function matchRegexp(values, value, regexp) {\n\t return !_isExisty(value) || isEmpty(value) || regexp.test(value);\n\t },\n\t isUndefined: function isUndefined(values, value) {\n\t return value === undefined;\n\t },\n\t isEmptyString: function isEmptyString(values, value) {\n\t return isEmpty(value);\n\t },\n\t isEmail: function isEmail(values, value) {\n\t return validations.matchRegexp(values, value, /^((([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+(\\.([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+)*)|((\\x22)((((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(([\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f]|\\x21|[\\x23-\\x5b]|[\\x5d-\\x7e]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(\\\\([\\x01-\\x09\\x0b\\x0c\\x0d-\\x7f]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]))))*(((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(\\x22)))@((([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.)+(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))$/i);\n\t },\n\t isUrl: function isUrl(values, value) {\n\t return validations.matchRegexp(values, value, /^(https?|s?ftp):\\/\\/(((([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:)*@)?(((\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\.(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\.(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\.(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5]))|((([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.)+(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.?)(:\\d*)?)(\\/((([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:|@)+(\\/(([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:|@)*)*)?)?(\\?((([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:|@)|[\\uE000-\\uF8FF]|\\/|\\?)*)?(#((([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:|@)|\\/|\\?)*)?$/i);\n\t },\n\t isTrue: function isTrue(values, value) {\n\t return value === true;\n\t },\n\t isFalse: function isFalse(values, value) {\n\t return value === false;\n\t },\n\t isNumeric: function isNumeric(values, value) {\n\t if (typeof value === 'number') {\n\t return true;\n\t }\n\t return validations.matchRegexp(values, value, /^[-+]?(?:\\d*[.])?\\d+$/);\n\t },\n\t isAlpha: function isAlpha(values, value) {\n\t return validations.matchRegexp(values, value, /^[A-Z]+$/i);\n\t },\n\t isAlphanumeric: function isAlphanumeric(values, value) {\n\t return validations.matchRegexp(values, value, /^[0-9A-Z]+$/i);\n\t },\n\t isInt: function isInt(values, value) {\n\t return validations.matchRegexp(values, value, /^(?:[-+]?(?:0|[1-9]\\d*))$/);\n\t },\n\t isFloat: function isFloat(values, value) {\n\t return validations.matchRegexp(values, value, /^(?:[-+]?(?:\\d+))?(?:\\.\\d*)?(?:[eE][\\+\\-]?(?:\\d+))?$/);\n\t },\n\t isWords: function isWords(values, value) {\n\t return validations.matchRegexp(values, value, /^[A-Z\\s]+$/i);\n\t },\n\t isSpecialWords: function isSpecialWords(values, value) {\n\t return validations.matchRegexp(values, value, /^[A-Z\\s\\u00C0-\\u017F]+$/i);\n\t },\n\t isLength: function isLength(values, value, length) {\n\t return !_isExisty(value) || isEmpty(value) || value.length === length;\n\t },\n\t equals: function equals(values, value, eql) {\n\t return !_isExisty(value) || isEmpty(value) || value == eql;\n\t },\n\t equalsField: function equalsField(values, value, field) {\n\t return value == values[field];\n\t },\n\t maxLength: function maxLength(values, value, length) {\n\t return !_isExisty(value) || value.length <= length;\n\t },\n\t minLength: function minLength(values, value, length) {\n\t return !_isExisty(value) || isEmpty(value) || value.length >= length;\n\t }\n\t};\n\t\n\tmodule.exports = validations;\n\n/***/ }),\n/* 14 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t/* WEBPACK VAR INJECTION */(function(process) {/**\n\t * Copyright 2013-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t */\n\t\n\t'use strict';\n\t\n\tvar _assign = __webpack_require__(17);\n\t\n\tvar emptyObject = __webpack_require__(15);\n\tvar _invariant = __webpack_require__(3);\n\t\n\tif (process.env.NODE_ENV !== 'production') {\n\t var warning = __webpack_require__(7);\n\t}\n\t\n\tvar MIXINS_KEY = 'mixins';\n\t\n\t// Helper function to allow the creation of anonymous functions which do not\n\t// have .name set to the name of the variable being assigned to.\n\tfunction identity(fn) {\n\t return fn;\n\t}\n\t\n\tvar ReactPropTypeLocationNames;\n\tif (process.env.NODE_ENV !== 'production') {\n\t ReactPropTypeLocationNames = {\n\t prop: 'prop',\n\t context: 'context',\n\t childContext: 'child context'\n\t };\n\t} else {\n\t ReactPropTypeLocationNames = {};\n\t}\n\t\n\tfunction factory(ReactComponent, isValidElement, ReactNoopUpdateQueue) {\n\t /**\n\t * Policies that describe methods in `ReactClassInterface`.\n\t */\n\t\n\t var injectedMixins = [];\n\t\n\t /**\n\t * Composite components are higher-level components that compose other composite\n\t * or host components.\n\t *\n\t * To create a new type of `ReactClass`, pass a specification of\n\t * your new class to `React.createClass`. The only requirement of your class\n\t * specification is that you implement a `render` method.\n\t *\n\t * var MyComponent = React.createClass({\n\t * render: function() {\n\t * return
Hello World
;\n\t * }\n\t * });\n\t *\n\t * The class specification supports a specific protocol of methods that have\n\t * special meaning (e.g. `render`). See `ReactClassInterface` for\n\t * more the comprehensive protocol. Any other properties and methods in the\n\t * class specification will be available on the prototype.\n\t *\n\t * @interface ReactClassInterface\n\t * @internal\n\t */\n\t var ReactClassInterface = {\n\t /**\n\t * An array of Mixin objects to include when defining your component.\n\t *\n\t * @type {array}\n\t * @optional\n\t */\n\t mixins: 'DEFINE_MANY',\n\t\n\t /**\n\t * An object containing properties and methods that should be defined on\n\t * the component's constructor instead of its prototype (static methods).\n\t *\n\t * @type {object}\n\t * @optional\n\t */\n\t statics: 'DEFINE_MANY',\n\t\n\t /**\n\t * Definition of prop types for this component.\n\t *\n\t * @type {object}\n\t * @optional\n\t */\n\t propTypes: 'DEFINE_MANY',\n\t\n\t /**\n\t * Definition of context types for this component.\n\t *\n\t * @type {object}\n\t * @optional\n\t */\n\t contextTypes: 'DEFINE_MANY',\n\t\n\t /**\n\t * Definition of context types this component sets for its children.\n\t *\n\t * @type {object}\n\t * @optional\n\t */\n\t childContextTypes: 'DEFINE_MANY',\n\t\n\t // ==== Definition methods ====\n\t\n\t /**\n\t * Invoked when the component is mounted. Values in the mapping will be set on\n\t * `this.props` if that prop is not specified (i.e. using an `in` check).\n\t *\n\t * This method is invoked before `getInitialState` and therefore cannot rely\n\t * on `this.state` or use `this.setState`.\n\t *\n\t * @return {object}\n\t * @optional\n\t */\n\t getDefaultProps: 'DEFINE_MANY_MERGED',\n\t\n\t /**\n\t * Invoked once before the component is mounted. The return value will be used\n\t * as the initial value of `this.state`.\n\t *\n\t * getInitialState: function() {\n\t * return {\n\t * isOn: false,\n\t * fooBaz: new BazFoo()\n\t * }\n\t * }\n\t *\n\t * @return {object}\n\t * @optional\n\t */\n\t getInitialState: 'DEFINE_MANY_MERGED',\n\t\n\t /**\n\t * @return {object}\n\t * @optional\n\t */\n\t getChildContext: 'DEFINE_MANY_MERGED',\n\t\n\t /**\n\t * Uses props from `this.props` and state from `this.state` to render the\n\t * structure of the component.\n\t *\n\t * No guarantees are made about when or how often this method is invoked, so\n\t * it must not have side effects.\n\t *\n\t * render: function() {\n\t * var name = this.props.name;\n\t * return
Hello, {name}!
;\n\t * }\n\t *\n\t * @return {ReactComponent}\n\t * @required\n\t */\n\t render: 'DEFINE_ONCE',\n\t\n\t // ==== Delegate methods ====\n\t\n\t /**\n\t * Invoked when the component is initially created and about to be mounted.\n\t * This may have side effects, but any external subscriptions or data created\n\t * by this method must be cleaned up in `componentWillUnmount`.\n\t *\n\t * @optional\n\t */\n\t componentWillMount: 'DEFINE_MANY',\n\t\n\t /**\n\t * Invoked when the component has been mounted and has a DOM representation.\n\t * However, there is no guarantee that the DOM node is in the document.\n\t *\n\t * Use this as an opportunity to operate on the DOM when the component has\n\t * been mounted (initialized and rendered) for the first time.\n\t *\n\t * @param {DOMElement} rootNode DOM element representing the component.\n\t * @optional\n\t */\n\t componentDidMount: 'DEFINE_MANY',\n\t\n\t /**\n\t * Invoked before the component receives new props.\n\t *\n\t * Use this as an opportunity to react to a prop transition by updating the\n\t * state using `this.setState`. Current props are accessed via `this.props`.\n\t *\n\t * componentWillReceiveProps: function(nextProps, nextContext) {\n\t * this.setState({\n\t * likesIncreasing: nextProps.likeCount > this.props.likeCount\n\t * });\n\t * }\n\t *\n\t * NOTE: There is no equivalent `componentWillReceiveState`. An incoming prop\n\t * transition may cause a state change, but the opposite is not true. If you\n\t * need it, you are probably looking for `componentWillUpdate`.\n\t *\n\t * @param {object} nextProps\n\t * @optional\n\t */\n\t componentWillReceiveProps: 'DEFINE_MANY',\n\t\n\t /**\n\t * Invoked while deciding if the component should be updated as a result of\n\t * receiving new props, state and/or context.\n\t *\n\t * Use this as an opportunity to `return false` when you're certain that the\n\t * transition to the new props/state/context will not require a component\n\t * update.\n\t *\n\t * shouldComponentUpdate: function(nextProps, nextState, nextContext) {\n\t * return !equal(nextProps, this.props) ||\n\t * !equal(nextState, this.state) ||\n\t * !equal(nextContext, this.context);\n\t * }\n\t *\n\t * @param {object} nextProps\n\t * @param {?object} nextState\n\t * @param {?object} nextContext\n\t * @return {boolean} True if the component should update.\n\t * @optional\n\t */\n\t shouldComponentUpdate: 'DEFINE_ONCE',\n\t\n\t /**\n\t * Invoked when the component is about to update due to a transition from\n\t * `this.props`, `this.state` and `this.context` to `nextProps`, `nextState`\n\t * and `nextContext`.\n\t *\n\t * Use this as an opportunity to perform preparation before an update occurs.\n\t *\n\t * NOTE: You **cannot** use `this.setState()` in this method.\n\t *\n\t * @param {object} nextProps\n\t * @param {?object} nextState\n\t * @param {?object} nextContext\n\t * @param {ReactReconcileTransaction} transaction\n\t * @optional\n\t */\n\t componentWillUpdate: 'DEFINE_MANY',\n\t\n\t /**\n\t * Invoked when the component's DOM representation has been updated.\n\t *\n\t * Use this as an opportunity to operate on the DOM when the component has\n\t * been updated.\n\t *\n\t * @param {object} prevProps\n\t * @param {?object} prevState\n\t * @param {?object} prevContext\n\t * @param {DOMElement} rootNode DOM element representing the component.\n\t * @optional\n\t */\n\t componentDidUpdate: 'DEFINE_MANY',\n\t\n\t /**\n\t * Invoked when the component is about to be removed from its parent and have\n\t * its DOM representation destroyed.\n\t *\n\t * Use this as an opportunity to deallocate any external resources.\n\t *\n\t * NOTE: There is no `componentDidUnmount` since your component will have been\n\t * destroyed by that point.\n\t *\n\t * @optional\n\t */\n\t componentWillUnmount: 'DEFINE_MANY',\n\t\n\t // ==== Advanced methods ====\n\t\n\t /**\n\t * Updates the component's currently mounted DOM representation.\n\t *\n\t * By default, this implements React's rendering and reconciliation algorithm.\n\t * Sophisticated clients may wish to override this.\n\t *\n\t * @param {ReactReconcileTransaction} transaction\n\t * @internal\n\t * @overridable\n\t */\n\t updateComponent: 'OVERRIDE_BASE'\n\t };\n\t\n\t /**\n\t * Mapping from class specification keys to special processing functions.\n\t *\n\t * Although these are declared like instance properties in the specification\n\t * when defining classes using `React.createClass`, they are actually static\n\t * and are accessible on the constructor instead of the prototype. Despite\n\t * being static, they must be defined outside of the \"statics\" key under\n\t * which all other static methods are defined.\n\t */\n\t var RESERVED_SPEC_KEYS = {\n\t displayName: function(Constructor, displayName) {\n\t Constructor.displayName = displayName;\n\t },\n\t mixins: function(Constructor, mixins) {\n\t if (mixins) {\n\t for (var i = 0; i < mixins.length; i++) {\n\t mixSpecIntoComponent(Constructor, mixins[i]);\n\t }\n\t }\n\t },\n\t childContextTypes: function(Constructor, childContextTypes) {\n\t if (process.env.NODE_ENV !== 'production') {\n\t validateTypeDef(Constructor, childContextTypes, 'childContext');\n\t }\n\t Constructor.childContextTypes = _assign(\n\t {},\n\t Constructor.childContextTypes,\n\t childContextTypes\n\t );\n\t },\n\t contextTypes: function(Constructor, contextTypes) {\n\t if (process.env.NODE_ENV !== 'production') {\n\t validateTypeDef(Constructor, contextTypes, 'context');\n\t }\n\t Constructor.contextTypes = _assign(\n\t {},\n\t Constructor.contextTypes,\n\t contextTypes\n\t );\n\t },\n\t /**\n\t * Special case getDefaultProps which should move into statics but requires\n\t * automatic merging.\n\t */\n\t getDefaultProps: function(Constructor, getDefaultProps) {\n\t if (Constructor.getDefaultProps) {\n\t Constructor.getDefaultProps = createMergedResultFunction(\n\t Constructor.getDefaultProps,\n\t getDefaultProps\n\t );\n\t } else {\n\t Constructor.getDefaultProps = getDefaultProps;\n\t }\n\t },\n\t propTypes: function(Constructor, propTypes) {\n\t if (process.env.NODE_ENV !== 'production') {\n\t validateTypeDef(Constructor, propTypes, 'prop');\n\t }\n\t Constructor.propTypes = _assign({}, Constructor.propTypes, propTypes);\n\t },\n\t statics: function(Constructor, statics) {\n\t mixStaticSpecIntoComponent(Constructor, statics);\n\t },\n\t autobind: function() {}\n\t };\n\t\n\t function validateTypeDef(Constructor, typeDef, location) {\n\t for (var propName in typeDef) {\n\t if (typeDef.hasOwnProperty(propName)) {\n\t // use a warning instead of an _invariant so components\n\t // don't show up in prod but only in __DEV__\n\t if (process.env.NODE_ENV !== 'production') {\n\t warning(\n\t typeof typeDef[propName] === 'function',\n\t '%s: %s type `%s` is invalid; it must be a function, usually from ' +\n\t 'React.PropTypes.',\n\t Constructor.displayName || 'ReactClass',\n\t ReactPropTypeLocationNames[location],\n\t propName\n\t );\n\t }\n\t }\n\t }\n\t }\n\t\n\t function validateMethodOverride(isAlreadyDefined, name) {\n\t var specPolicy = ReactClassInterface.hasOwnProperty(name)\n\t ? ReactClassInterface[name]\n\t : null;\n\t\n\t // Disallow overriding of base class methods unless explicitly allowed.\n\t if (ReactClassMixin.hasOwnProperty(name)) {\n\t _invariant(\n\t specPolicy === 'OVERRIDE_BASE',\n\t 'ReactClassInterface: You are attempting to override ' +\n\t '`%s` from your class specification. Ensure that your method names ' +\n\t 'do not overlap with React methods.',\n\t name\n\t );\n\t }\n\t\n\t // Disallow defining methods more than once unless explicitly allowed.\n\t if (isAlreadyDefined) {\n\t _invariant(\n\t specPolicy === 'DEFINE_MANY' || specPolicy === 'DEFINE_MANY_MERGED',\n\t 'ReactClassInterface: You are attempting to define ' +\n\t '`%s` on your component more than once. This conflict may be due ' +\n\t 'to a mixin.',\n\t name\n\t );\n\t }\n\t }\n\t\n\t /**\n\t * Mixin helper which handles policy validation and reserved\n\t * specification keys when building React classes.\n\t */\n\t function mixSpecIntoComponent(Constructor, spec) {\n\t if (!spec) {\n\t if (process.env.NODE_ENV !== 'production') {\n\t var typeofSpec = typeof spec;\n\t var isMixinValid = typeofSpec === 'object' && spec !== null;\n\t\n\t if (process.env.NODE_ENV !== 'production') {\n\t warning(\n\t isMixinValid,\n\t \"%s: You're attempting to include a mixin that is either null \" +\n\t 'or not an object. Check the mixins included by the component, ' +\n\t 'as well as any mixins they include themselves. ' +\n\t 'Expected object but got %s.',\n\t Constructor.displayName || 'ReactClass',\n\t spec === null ? null : typeofSpec\n\t );\n\t }\n\t }\n\t\n\t return;\n\t }\n\t\n\t _invariant(\n\t typeof spec !== 'function',\n\t \"ReactClass: You're attempting to \" +\n\t 'use a component class or function as a mixin. Instead, just use a ' +\n\t 'regular object.'\n\t );\n\t _invariant(\n\t !isValidElement(spec),\n\t \"ReactClass: You're attempting to \" +\n\t 'use a component as a mixin. Instead, just use a regular object.'\n\t );\n\t\n\t var proto = Constructor.prototype;\n\t var autoBindPairs = proto.__reactAutoBindPairs;\n\t\n\t // By handling mixins before any other properties, we ensure the same\n\t // chaining order is applied to methods with DEFINE_MANY policy, whether\n\t // mixins are listed before or after these methods in the spec.\n\t if (spec.hasOwnProperty(MIXINS_KEY)) {\n\t RESERVED_SPEC_KEYS.mixins(Constructor, spec.mixins);\n\t }\n\t\n\t for (var name in spec) {\n\t if (!spec.hasOwnProperty(name)) {\n\t continue;\n\t }\n\t\n\t if (name === MIXINS_KEY) {\n\t // We have already handled mixins in a special case above.\n\t continue;\n\t }\n\t\n\t var property = spec[name];\n\t var isAlreadyDefined = proto.hasOwnProperty(name);\n\t validateMethodOverride(isAlreadyDefined, name);\n\t\n\t if (RESERVED_SPEC_KEYS.hasOwnProperty(name)) {\n\t RESERVED_SPEC_KEYS[name](Constructor, property);\n\t } else {\n\t // Setup methods on prototype:\n\t // The following member methods should not be automatically bound:\n\t // 1. Expected ReactClass methods (in the \"interface\").\n\t // 2. Overridden methods (that were mixed in).\n\t var isReactClassMethod = ReactClassInterface.hasOwnProperty(name);\n\t var isFunction = typeof property === 'function';\n\t var shouldAutoBind =\n\t isFunction &&\n\t !isReactClassMethod &&\n\t !isAlreadyDefined &&\n\t spec.autobind !== false;\n\t\n\t if (shouldAutoBind) {\n\t autoBindPairs.push(name, property);\n\t proto[name] = property;\n\t } else {\n\t if (isAlreadyDefined) {\n\t var specPolicy = ReactClassInterface[name];\n\t\n\t // These cases should already be caught by validateMethodOverride.\n\t _invariant(\n\t isReactClassMethod &&\n\t (specPolicy === 'DEFINE_MANY_MERGED' ||\n\t specPolicy === 'DEFINE_MANY'),\n\t 'ReactClass: Unexpected spec policy %s for key %s ' +\n\t 'when mixing in component specs.',\n\t specPolicy,\n\t name\n\t );\n\t\n\t // For methods which are defined more than once, call the existing\n\t // methods before calling the new property, merging if appropriate.\n\t if (specPolicy === 'DEFINE_MANY_MERGED') {\n\t proto[name] = createMergedResultFunction(proto[name], property);\n\t } else if (specPolicy === 'DEFINE_MANY') {\n\t proto[name] = createChainedFunction(proto[name], property);\n\t }\n\t } else {\n\t proto[name] = property;\n\t if (process.env.NODE_ENV !== 'production') {\n\t // Add verbose displayName to the function, which helps when looking\n\t // at profiling tools.\n\t if (typeof property === 'function' && spec.displayName) {\n\t proto[name].displayName = spec.displayName + '_' + name;\n\t }\n\t }\n\t }\n\t }\n\t }\n\t }\n\t }\n\t\n\t function mixStaticSpecIntoComponent(Constructor, statics) {\n\t if (!statics) {\n\t return;\n\t }\n\t for (var name in statics) {\n\t var property = statics[name];\n\t if (!statics.hasOwnProperty(name)) {\n\t continue;\n\t }\n\t\n\t var isReserved = name in RESERVED_SPEC_KEYS;\n\t _invariant(\n\t !isReserved,\n\t 'ReactClass: You are attempting to define a reserved ' +\n\t 'property, `%s`, that shouldn\\'t be on the \"statics\" key. Define it ' +\n\t 'as an instance property instead; it will still be accessible on the ' +\n\t 'constructor.',\n\t name\n\t );\n\t\n\t var isInherited = name in Constructor;\n\t _invariant(\n\t !isInherited,\n\t 'ReactClass: You are attempting to define ' +\n\t '`%s` on your component more than once. This conflict may be ' +\n\t 'due to a mixin.',\n\t name\n\t );\n\t Constructor[name] = property;\n\t }\n\t }\n\t\n\t /**\n\t * Merge two objects, but throw if both contain the same key.\n\t *\n\t * @param {object} one The first object, which is mutated.\n\t * @param {object} two The second object\n\t * @return {object} one after it has been mutated to contain everything in two.\n\t */\n\t function mergeIntoWithNoDuplicateKeys(one, two) {\n\t _invariant(\n\t one && two && typeof one === 'object' && typeof two === 'object',\n\t 'mergeIntoWithNoDuplicateKeys(): Cannot merge non-objects.'\n\t );\n\t\n\t for (var key in two) {\n\t if (two.hasOwnProperty(key)) {\n\t _invariant(\n\t one[key] === undefined,\n\t 'mergeIntoWithNoDuplicateKeys(): ' +\n\t 'Tried to merge two objects with the same key: `%s`. This conflict ' +\n\t 'may be due to a mixin; in particular, this may be caused by two ' +\n\t 'getInitialState() or getDefaultProps() methods returning objects ' +\n\t 'with clashing keys.',\n\t key\n\t );\n\t one[key] = two[key];\n\t }\n\t }\n\t return one;\n\t }\n\t\n\t /**\n\t * Creates a function that invokes two functions and merges their return values.\n\t *\n\t * @param {function} one Function to invoke first.\n\t * @param {function} two Function to invoke second.\n\t * @return {function} Function that invokes the two argument functions.\n\t * @private\n\t */\n\t function createMergedResultFunction(one, two) {\n\t return function mergedResult() {\n\t var a = one.apply(this, arguments);\n\t var b = two.apply(this, arguments);\n\t if (a == null) {\n\t return b;\n\t } else if (b == null) {\n\t return a;\n\t }\n\t var c = {};\n\t mergeIntoWithNoDuplicateKeys(c, a);\n\t mergeIntoWithNoDuplicateKeys(c, b);\n\t return c;\n\t };\n\t }\n\t\n\t /**\n\t * Creates a function that invokes two functions and ignores their return vales.\n\t *\n\t * @param {function} one Function to invoke first.\n\t * @param {function} two Function to invoke second.\n\t * @return {function} Function that invokes the two argument functions.\n\t * @private\n\t */\n\t function createChainedFunction(one, two) {\n\t return function chainedFunction() {\n\t one.apply(this, arguments);\n\t two.apply(this, arguments);\n\t };\n\t }\n\t\n\t /**\n\t * Binds a method to the component.\n\t *\n\t * @param {object} component Component whose method is going to be bound.\n\t * @param {function} method Method to be bound.\n\t * @return {function} The bound method.\n\t */\n\t function bindAutoBindMethod(component, method) {\n\t var boundMethod = method.bind(component);\n\t if (process.env.NODE_ENV !== 'production') {\n\t boundMethod.__reactBoundContext = component;\n\t boundMethod.__reactBoundMethod = method;\n\t boundMethod.__reactBoundArguments = null;\n\t var componentName = component.constructor.displayName;\n\t var _bind = boundMethod.bind;\n\t boundMethod.bind = function(newThis) {\n\t for (\n\t var _len = arguments.length,\n\t args = Array(_len > 1 ? _len - 1 : 0),\n\t _key = 1;\n\t _key < _len;\n\t _key++\n\t ) {\n\t args[_key - 1] = arguments[_key];\n\t }\n\t\n\t // User is trying to bind() an autobound method; we effectively will\n\t // ignore the value of \"this\" that the user is trying to use, so\n\t // let's warn.\n\t if (newThis !== component && newThis !== null) {\n\t if (process.env.NODE_ENV !== 'production') {\n\t warning(\n\t false,\n\t 'bind(): React component methods may only be bound to the ' +\n\t 'component instance. See %s',\n\t componentName\n\t );\n\t }\n\t } else if (!args.length) {\n\t if (process.env.NODE_ENV !== 'production') {\n\t warning(\n\t false,\n\t 'bind(): You are binding a component method to the component. ' +\n\t 'React does this for you automatically in a high-performance ' +\n\t 'way, so you can safely remove this call. See %s',\n\t componentName\n\t );\n\t }\n\t return boundMethod;\n\t }\n\t var reboundMethod = _bind.apply(boundMethod, arguments);\n\t reboundMethod.__reactBoundContext = component;\n\t reboundMethod.__reactBoundMethod = method;\n\t reboundMethod.__reactBoundArguments = args;\n\t return reboundMethod;\n\t };\n\t }\n\t return boundMethod;\n\t }\n\t\n\t /**\n\t * Binds all auto-bound methods in a component.\n\t *\n\t * @param {object} component Component whose method is going to be bound.\n\t */\n\t function bindAutoBindMethods(component) {\n\t var pairs = component.__reactAutoBindPairs;\n\t for (var i = 0; i < pairs.length; i += 2) {\n\t var autoBindKey = pairs[i];\n\t var method = pairs[i + 1];\n\t component[autoBindKey] = bindAutoBindMethod(component, method);\n\t }\n\t }\n\t\n\t var IsMountedPreMixin = {\n\t componentDidMount: function() {\n\t this.__isMounted = true;\n\t }\n\t };\n\t\n\t var IsMountedPostMixin = {\n\t componentWillUnmount: function() {\n\t this.__isMounted = false;\n\t }\n\t };\n\t\n\t /**\n\t * Add more to the ReactClass base class. These are all legacy features and\n\t * therefore not already part of the modern ReactComponent.\n\t */\n\t var ReactClassMixin = {\n\t /**\n\t * TODO: This will be deprecated because state should always keep a consistent\n\t * type signature and the only use case for this, is to avoid that.\n\t */\n\t replaceState: function(newState, callback) {\n\t this.updater.enqueueReplaceState(this, newState, callback);\n\t },\n\t\n\t /**\n\t * Checks whether or not this composite component is mounted.\n\t * @return {boolean} True if mounted, false otherwise.\n\t * @protected\n\t * @final\n\t */\n\t isMounted: function() {\n\t if (process.env.NODE_ENV !== 'production') {\n\t warning(\n\t this.__didWarnIsMounted,\n\t '%s: isMounted is deprecated. Instead, make sure to clean up ' +\n\t 'subscriptions and pending requests in componentWillUnmount to ' +\n\t 'prevent memory leaks.',\n\t (this.constructor && this.constructor.displayName) ||\n\t this.name ||\n\t 'Component'\n\t );\n\t this.__didWarnIsMounted = true;\n\t }\n\t return !!this.__isMounted;\n\t }\n\t };\n\t\n\t var ReactClassComponent = function() {};\n\t _assign(\n\t ReactClassComponent.prototype,\n\t ReactComponent.prototype,\n\t ReactClassMixin\n\t );\n\t\n\t /**\n\t * Creates a composite component class given a class specification.\n\t * See https://facebook.github.io/react/docs/top-level-api.html#react.createclass\n\t *\n\t * @param {object} spec Class specification (which must define `render`).\n\t * @return {function} Component constructor function.\n\t * @public\n\t */\n\t function createClass(spec) {\n\t // To keep our warnings more understandable, we'll use a little hack here to\n\t // ensure that Constructor.name !== 'Constructor'. This makes sure we don't\n\t // unnecessarily identify a class without displayName as 'Constructor'.\n\t var Constructor = identity(function(props, context, updater) {\n\t // This constructor gets overridden by mocks. The argument is used\n\t // by mocks to assert on what gets mounted.\n\t\n\t if (process.env.NODE_ENV !== 'production') {\n\t warning(\n\t this instanceof Constructor,\n\t 'Something is calling a React component directly. Use a factory or ' +\n\t 'JSX instead. See: https://fb.me/react-legacyfactory'\n\t );\n\t }\n\t\n\t // Wire up auto-binding\n\t if (this.__reactAutoBindPairs.length) {\n\t bindAutoBindMethods(this);\n\t }\n\t\n\t this.props = props;\n\t this.context = context;\n\t this.refs = emptyObject;\n\t this.updater = updater || ReactNoopUpdateQueue;\n\t\n\t this.state = null;\n\t\n\t // ReactClasses doesn't have constructors. Instead, they use the\n\t // getInitialState and componentWillMount methods for initialization.\n\t\n\t var initialState = this.getInitialState ? this.getInitialState() : null;\n\t if (process.env.NODE_ENV !== 'production') {\n\t // We allow auto-mocks to proceed as if they're returning null.\n\t if (\n\t initialState === undefined &&\n\t this.getInitialState._isMockFunction\n\t ) {\n\t // This is probably bad practice. Consider warning here and\n\t // deprecating this convenience.\n\t initialState = null;\n\t }\n\t }\n\t _invariant(\n\t typeof initialState === 'object' && !Array.isArray(initialState),\n\t '%s.getInitialState(): must return an object or null',\n\t Constructor.displayName || 'ReactCompositeComponent'\n\t );\n\t\n\t this.state = initialState;\n\t });\n\t Constructor.prototype = new ReactClassComponent();\n\t Constructor.prototype.constructor = Constructor;\n\t Constructor.prototype.__reactAutoBindPairs = [];\n\t\n\t injectedMixins.forEach(mixSpecIntoComponent.bind(null, Constructor));\n\t\n\t mixSpecIntoComponent(Constructor, IsMountedPreMixin);\n\t mixSpecIntoComponent(Constructor, spec);\n\t mixSpecIntoComponent(Constructor, IsMountedPostMixin);\n\t\n\t // Initialize the defaultProps property after all mixins have been merged.\n\t if (Constructor.getDefaultProps) {\n\t Constructor.defaultProps = Constructor.getDefaultProps();\n\t }\n\t\n\t if (process.env.NODE_ENV !== 'production') {\n\t // This is a tag to indicate that the use of these method names is ok,\n\t // since it's used with createClass. If it's not, then it's likely a\n\t // mistake so we'll warn you to use the static property, property\n\t // initializer or constructor respectively.\n\t if (Constructor.getDefaultProps) {\n\t Constructor.getDefaultProps.isReactClassApproved = {};\n\t }\n\t if (Constructor.prototype.getInitialState) {\n\t Constructor.prototype.getInitialState.isReactClassApproved = {};\n\t }\n\t }\n\t\n\t _invariant(\n\t Constructor.prototype.render,\n\t 'createClass(...): Class specification must implement a `render` method.'\n\t );\n\t\n\t if (process.env.NODE_ENV !== 'production') {\n\t warning(\n\t !Constructor.prototype.componentShouldUpdate,\n\t '%s has a method called ' +\n\t 'componentShouldUpdate(). Did you mean shouldComponentUpdate()? ' +\n\t 'The name is phrased as a question because the function is ' +\n\t 'expected to return a value.',\n\t spec.displayName || 'A component'\n\t );\n\t warning(\n\t !Constructor.prototype.componentWillRecieveProps,\n\t '%s has a method called ' +\n\t 'componentWillRecieveProps(). Did you mean componentWillReceiveProps()?',\n\t spec.displayName || 'A component'\n\t );\n\t }\n\t\n\t // Reduce time spent doing lookups by setting these on the prototype.\n\t for (var methodName in ReactClassInterface) {\n\t if (!Constructor.prototype[methodName]) {\n\t Constructor.prototype[methodName] = null;\n\t }\n\t }\n\t\n\t return Constructor;\n\t }\n\t\n\t return createClass;\n\t}\n\t\n\tmodule.exports = factory;\n\t\n\t/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(1)))\n\n/***/ }),\n/* 15 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t/* WEBPACK VAR INJECTION */(function(process) {/**\n\t * Copyright (c) 2013-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t */\n\t\n\t'use strict';\n\t\n\tvar emptyObject = {};\n\t\n\tif (process.env.NODE_ENV !== 'production') {\n\t Object.freeze(emptyObject);\n\t}\n\t\n\tmodule.exports = emptyObject;\n\t/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(1)))\n\n/***/ }),\n/* 16 */\n/***/ (function(module, exports) {\n\n\tfunction toObj(source) {\n\t return Object.keys(source).reduce(function (output, key) {\n\t var parentKey = key.match(/[^\\[]*/i);\n\t var paths = key.match(/\\[.*?\\]/g) || [];\n\t paths = [parentKey[0]].concat(paths).map(function (key) {\n\t return key.replace(/\\[|\\]/g, '');\n\t });\n\t var currentPath = output;\n\t while (paths.length) {\n\t var pathKey = paths.shift();\n\t\n\t if (pathKey in currentPath) {\n\t currentPath = currentPath[pathKey];\n\t } else {\n\t currentPath[pathKey] = paths.length ? isNaN(paths[0]) ? {} : [] : source[key];\n\t currentPath = currentPath[pathKey];\n\t }\n\t }\n\t\n\t return output;\n\t }, {});\n\t}\n\t\n\tfunction fromObj(obj) {\n\t function recur(newObj, propName, currVal) {\n\t if (Array.isArray(currVal) || Object.prototype.toString.call(currVal) === '[object Object]') {\n\t Object.keys(currVal).forEach(function(v) {\n\t recur(newObj, propName + \"[\" + v + \"]\", currVal[v]);\n\t });\n\t return newObj;\n\t }\n\t\n\t newObj[propName] = currVal;\n\t return newObj;\n\t }\n\t\n\t var keys = Object.keys(obj);\n\t return keys.reduce(function(newObj, propName) {\n\t return recur(newObj, propName, obj[propName]);\n\t }, {});\n\t}\n\t\n\tmodule.exports = {\n\t fromObj: fromObj,\n\t toObj: toObj\n\t}\n\n/***/ }),\n/* 17 */\n/***/ (function(module, exports) {\n\n\t/*\n\tobject-assign\n\t(c) Sindre Sorhus\n\t@license MIT\n\t*/\n\t\n\t'use strict';\n\t/* eslint-disable no-unused-vars */\n\tvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\n\tvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\tvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\t\n\tfunction toObject(val) {\n\t\tif (val === null || val === undefined) {\n\t\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t\t}\n\t\n\t\treturn Object(val);\n\t}\n\t\n\tfunction shouldUseNative() {\n\t\ttry {\n\t\t\tif (!Object.assign) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\n\t\t\t// Detect buggy property enumeration order in older V8 versions.\n\t\n\t\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\t\ttest1[5] = 'de';\n\t\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\t\treturn false;\n\t\t\t}\n\t\n\t\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\t\tvar test2 = {};\n\t\t\tfor (var i = 0; i < 10; i++) {\n\t\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t\t}\n\t\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\t\treturn test2[n];\n\t\t\t});\n\t\t\tif (order2.join('') !== '0123456789') {\n\t\t\t\treturn false;\n\t\t\t}\n\t\n\t\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\t\tvar test3 = {};\n\t\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\t\ttest3[letter] = letter;\n\t\t\t});\n\t\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\t\treturn false;\n\t\t\t}\n\t\n\t\t\treturn true;\n\t\t} catch (err) {\n\t\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\t\treturn false;\n\t\t}\n\t}\n\t\n\tmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\t\tvar from;\n\t\tvar to = toObject(target);\n\t\tvar symbols;\n\t\n\t\tfor (var s = 1; s < arguments.length; s++) {\n\t\t\tfrom = Object(arguments[s]);\n\t\n\t\t\tfor (var key in from) {\n\t\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\t\tto[key] = from[key];\n\t\t\t\t}\n\t\t\t}\n\t\n\t\t\tif (getOwnPropertySymbols) {\n\t\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\n\t\treturn to;\n\t};\n\n\n/***/ }),\n/* 18 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t/* WEBPACK VAR INJECTION */(function(process) {/**\n\t * Copyright 2013-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t */\n\t\n\t'use strict';\n\t\n\tif (process.env.NODE_ENV !== 'production') {\n\t var invariant = __webpack_require__(3);\n\t var warning = __webpack_require__(7);\n\t var ReactPropTypesSecret = __webpack_require__(8);\n\t var loggedTypeFailures = {};\n\t}\n\t\n\t/**\n\t * Assert that the values match with the type specs.\n\t * Error messages are memorized and will only be shown once.\n\t *\n\t * @param {object} typeSpecs Map of name to a ReactPropType\n\t * @param {object} values Runtime values that need to be type-checked\n\t * @param {string} location e.g. \"prop\", \"context\", \"child context\"\n\t * @param {string} componentName Name of the component for error messages.\n\t * @param {?Function} getStack Returns the component stack.\n\t * @private\n\t */\n\tfunction checkPropTypes(typeSpecs, values, location, componentName, getStack) {\n\t if (process.env.NODE_ENV !== 'production') {\n\t for (var typeSpecName in typeSpecs) {\n\t if (typeSpecs.hasOwnProperty(typeSpecName)) {\n\t var error;\n\t // Prop type validation may throw. In case they do, we don't want to\n\t // fail the render phase where it didn't fail before. So we log it.\n\t // After these have been cleaned up, we'll let them throw.\n\t try {\n\t // This is intentionally an invariant that gets caught. It's the same\n\t // behavior as without this statement except with a better message.\n\t invariant(typeof typeSpecs[typeSpecName] === 'function', '%s: %s type `%s` is invalid; it must be a function, usually from ' + 'React.PropTypes.', componentName || 'React class', location, typeSpecName);\n\t error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret);\n\t } catch (ex) {\n\t error = ex;\n\t }\n\t warning(!error || error instanceof Error, '%s: type specification of %s `%s` is invalid; the type checker ' + 'function must return `null` or an `Error` but returned a %s. ' + 'You may have forgotten to pass an argument to the type checker ' + 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' + 'shape all require an argument).', componentName || 'React class', location, typeSpecName, typeof error);\n\t if (error instanceof Error && !(error.message in loggedTypeFailures)) {\n\t // Only monitor this failure once because there tends to be a lot of the\n\t // same error.\n\t loggedTypeFailures[error.message] = true;\n\t\n\t var stack = getStack ? getStack() : '';\n\t\n\t warning(false, 'Failed %s type: %s%s', location, error.message, stack != null ? stack : '');\n\t }\n\t }\n\t }\n\t }\n\t}\n\t\n\tmodule.exports = checkPropTypes;\n\t\n\t/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(1)))\n\n/***/ }),\n/* 19 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t/**\n\t * Copyright 2013-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t */\n\t\n\t'use strict';\n\t\n\tvar emptyFunction = __webpack_require__(6);\n\tvar invariant = __webpack_require__(3);\n\tvar ReactPropTypesSecret = __webpack_require__(8);\n\t\n\tmodule.exports = function() {\n\t function shim(props, propName, componentName, location, propFullName, secret) {\n\t if (secret === ReactPropTypesSecret) {\n\t // It is still safe when called from React.\n\t return;\n\t }\n\t invariant(\n\t false,\n\t 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n\t 'Use PropTypes.checkPropTypes() to call them. ' +\n\t 'Read more at http://fb.me/use-check-prop-types'\n\t );\n\t };\n\t shim.isRequired = shim;\n\t function getShim() {\n\t return shim;\n\t };\n\t // Important!\n\t // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n\t var ReactPropTypes = {\n\t array: shim,\n\t bool: shim,\n\t func: shim,\n\t number: shim,\n\t object: shim,\n\t string: shim,\n\t symbol: shim,\n\t\n\t any: shim,\n\t arrayOf: getShim,\n\t element: shim,\n\t instanceOf: getShim,\n\t node: shim,\n\t objectOf: getShim,\n\t oneOf: getShim,\n\t oneOfType: getShim,\n\t shape: getShim\n\t };\n\t\n\t ReactPropTypes.checkPropTypes = emptyFunction;\n\t ReactPropTypes.PropTypes = ReactPropTypes;\n\t\n\t return ReactPropTypes;\n\t};\n\n\n/***/ }),\n/* 20 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t/* WEBPACK VAR INJECTION */(function(process) {/**\n\t * Copyright 2013-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t */\n\t\n\t'use strict';\n\t\n\tvar emptyFunction = __webpack_require__(6);\n\tvar invariant = __webpack_require__(3);\n\tvar warning = __webpack_require__(7);\n\t\n\tvar ReactPropTypesSecret = __webpack_require__(8);\n\tvar checkPropTypes = __webpack_require__(18);\n\t\n\tmodule.exports = function(isValidElement, throwOnDirectAccess) {\n\t /* global Symbol */\n\t var ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\n\t var FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec.\n\t\n\t /**\n\t * Returns the iterator method function contained on the iterable object.\n\t *\n\t * Be sure to invoke the function with the iterable as context:\n\t *\n\t * var iteratorFn = getIteratorFn(myIterable);\n\t * if (iteratorFn) {\n\t * var iterator = iteratorFn.call(myIterable);\n\t * ...\n\t * }\n\t *\n\t * @param {?object} maybeIterable\n\t * @return {?function}\n\t */\n\t function getIteratorFn(maybeIterable) {\n\t var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);\n\t if (typeof iteratorFn === 'function') {\n\t return iteratorFn;\n\t }\n\t }\n\t\n\t /**\n\t * Collection of methods that allow declaration and validation of props that are\n\t * supplied to React components. Example usage:\n\t *\n\t * var Props = require('ReactPropTypes');\n\t * var MyArticle = React.createClass({\n\t * propTypes: {\n\t * // An optional string prop named \"description\".\n\t * description: Props.string,\n\t *\n\t * // A required enum prop named \"category\".\n\t * category: Props.oneOf(['News','Photos']).isRequired,\n\t *\n\t * // A prop named \"dialog\" that requires an instance of Dialog.\n\t * dialog: Props.instanceOf(Dialog).isRequired\n\t * },\n\t * render: function() { ... }\n\t * });\n\t *\n\t * A more formal specification of how these methods are used:\n\t *\n\t * type := array|bool|func|object|number|string|oneOf([...])|instanceOf(...)\n\t * decl := ReactPropTypes.{type}(.isRequired)?\n\t *\n\t * Each and every declaration produces a function with the same signature. This\n\t * allows the creation of custom validation functions. For example:\n\t *\n\t * var MyLink = React.createClass({\n\t * propTypes: {\n\t * // An optional string or URI prop named \"href\".\n\t * href: function(props, propName, componentName) {\n\t * var propValue = props[propName];\n\t * if (propValue != null && typeof propValue !== 'string' &&\n\t * !(propValue instanceof URI)) {\n\t * return new Error(\n\t * 'Expected a string or an URI for ' + propName + ' in ' +\n\t * componentName\n\t * );\n\t * }\n\t * }\n\t * },\n\t * render: function() {...}\n\t * });\n\t *\n\t * @internal\n\t */\n\t\n\t var ANONYMOUS = '<>';\n\t\n\t // Important!\n\t // Keep this list in sync with production version in `./factoryWithThrowingShims.js`.\n\t var ReactPropTypes = {\n\t array: createPrimitiveTypeChecker('array'),\n\t bool: createPrimitiveTypeChecker('boolean'),\n\t func: createPrimitiveTypeChecker('function'),\n\t number: createPrimitiveTypeChecker('number'),\n\t object: createPrimitiveTypeChecker('object'),\n\t string: createPrimitiveTypeChecker('string'),\n\t symbol: createPrimitiveTypeChecker('symbol'),\n\t\n\t any: createAnyTypeChecker(),\n\t arrayOf: createArrayOfTypeChecker,\n\t element: createElementTypeChecker(),\n\t instanceOf: createInstanceTypeChecker,\n\t node: createNodeChecker(),\n\t objectOf: createObjectOfTypeChecker,\n\t oneOf: createEnumTypeChecker,\n\t oneOfType: createUnionTypeChecker,\n\t shape: createShapeTypeChecker\n\t };\n\t\n\t /**\n\t * inlined Object.is polyfill to avoid requiring consumers ship their own\n\t * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n\t */\n\t /*eslint-disable no-self-compare*/\n\t function is(x, y) {\n\t // SameValue algorithm\n\t if (x === y) {\n\t // Steps 1-5, 7-10\n\t // Steps 6.b-6.e: +0 != -0\n\t return x !== 0 || 1 / x === 1 / y;\n\t } else {\n\t // Step 6.a: NaN == NaN\n\t return x !== x && y !== y;\n\t }\n\t }\n\t /*eslint-enable no-self-compare*/\n\t\n\t /**\n\t * We use an Error-like object for backward compatibility as people may call\n\t * PropTypes directly and inspect their output. However, we don't use real\n\t * Errors anymore. We don't inspect their stack anyway, and creating them\n\t * is prohibitively expensive if they are created too often, such as what\n\t * happens in oneOfType() for any type before the one that matched.\n\t */\n\t function PropTypeError(message) {\n\t this.message = message;\n\t this.stack = '';\n\t }\n\t // Make `instanceof Error` still work for returned errors.\n\t PropTypeError.prototype = Error.prototype;\n\t\n\t function createChainableTypeChecker(validate) {\n\t if (process.env.NODE_ENV !== 'production') {\n\t var manualPropTypeCallCache = {};\n\t var manualPropTypeWarningCount = 0;\n\t }\n\t function checkType(isRequired, props, propName, componentName, location, propFullName, secret) {\n\t componentName = componentName || ANONYMOUS;\n\t propFullName = propFullName || propName;\n\t\n\t if (secret !== ReactPropTypesSecret) {\n\t if (throwOnDirectAccess) {\n\t // New behavior only for users of `prop-types` package\n\t invariant(\n\t false,\n\t 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n\t 'Use `PropTypes.checkPropTypes()` to call them. ' +\n\t 'Read more at http://fb.me/use-check-prop-types'\n\t );\n\t } else if (process.env.NODE_ENV !== 'production' && typeof console !== 'undefined') {\n\t // Old behavior for people using React.PropTypes\n\t var cacheKey = componentName + ':' + propName;\n\t if (\n\t !manualPropTypeCallCache[cacheKey] &&\n\t // Avoid spamming the console because they are often not actionable except for lib authors\n\t manualPropTypeWarningCount < 3\n\t ) {\n\t warning(\n\t false,\n\t 'You are manually calling a React.PropTypes validation ' +\n\t 'function for the `%s` prop on `%s`. This is deprecated ' +\n\t 'and will throw in the standalone `prop-types` package. ' +\n\t 'You may be seeing this warning due to a third-party PropTypes ' +\n\t 'library. See https://fb.me/react-warning-dont-call-proptypes ' + 'for details.',\n\t propFullName,\n\t componentName\n\t );\n\t manualPropTypeCallCache[cacheKey] = true;\n\t manualPropTypeWarningCount++;\n\t }\n\t }\n\t }\n\t if (props[propName] == null) {\n\t if (isRequired) {\n\t if (props[propName] === null) {\n\t return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required ' + ('in `' + componentName + '`, but its value is `null`.'));\n\t }\n\t return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required in ' + ('`' + componentName + '`, but its value is `undefined`.'));\n\t }\n\t return null;\n\t } else {\n\t return validate(props, propName, componentName, location, propFullName);\n\t }\n\t }\n\t\n\t var chainedCheckType = checkType.bind(null, false);\n\t chainedCheckType.isRequired = checkType.bind(null, true);\n\t\n\t return chainedCheckType;\n\t }\n\t\n\t function createPrimitiveTypeChecker(expectedType) {\n\t function validate(props, propName, componentName, location, propFullName, secret) {\n\t var propValue = props[propName];\n\t var propType = getPropType(propValue);\n\t if (propType !== expectedType) {\n\t // `propValue` being instance of, say, date/regexp, pass the 'object'\n\t // check, but we can offer a more precise error message here rather than\n\t // 'of type `object`'.\n\t var preciseType = getPreciseType(propValue);\n\t\n\t return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + preciseType + '` supplied to `' + componentName + '`, expected ') + ('`' + expectedType + '`.'));\n\t }\n\t return null;\n\t }\n\t return createChainableTypeChecker(validate);\n\t }\n\t\n\t function createAnyTypeChecker() {\n\t return createChainableTypeChecker(emptyFunction.thatReturnsNull);\n\t }\n\t\n\t function createArrayOfTypeChecker(typeChecker) {\n\t function validate(props, propName, componentName, location, propFullName) {\n\t if (typeof typeChecker !== 'function') {\n\t return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside arrayOf.');\n\t }\n\t var propValue = props[propName];\n\t if (!Array.isArray(propValue)) {\n\t var propType = getPropType(propValue);\n\t return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an array.'));\n\t }\n\t for (var i = 0; i < propValue.length; i++) {\n\t var error = typeChecker(propValue, i, componentName, location, propFullName + '[' + i + ']', ReactPropTypesSecret);\n\t if (error instanceof Error) {\n\t return error;\n\t }\n\t }\n\t return null;\n\t }\n\t return createChainableTypeChecker(validate);\n\t }\n\t\n\t function createElementTypeChecker() {\n\t function validate(props, propName, componentName, location, propFullName) {\n\t var propValue = props[propName];\n\t if (!isValidElement(propValue)) {\n\t var propType = getPropType(propValue);\n\t return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement.'));\n\t }\n\t return null;\n\t }\n\t return createChainableTypeChecker(validate);\n\t }\n\t\n\t function createInstanceTypeChecker(expectedClass) {\n\t function validate(props, propName, componentName, location, propFullName) {\n\t if (!(props[propName] instanceof expectedClass)) {\n\t var expectedClassName = expectedClass.name || ANONYMOUS;\n\t var actualClassName = getClassName(props[propName]);\n\t return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + actualClassName + '` supplied to `' + componentName + '`, expected ') + ('instance of `' + expectedClassName + '`.'));\n\t }\n\t return null;\n\t }\n\t return createChainableTypeChecker(validate);\n\t }\n\t\n\t function createEnumTypeChecker(expectedValues) {\n\t if (!Array.isArray(expectedValues)) {\n\t process.env.NODE_ENV !== 'production' ? warning(false, 'Invalid argument supplied to oneOf, expected an instance of array.') : void 0;\n\t return emptyFunction.thatReturnsNull;\n\t }\n\t\n\t function validate(props, propName, componentName, location, propFullName) {\n\t var propValue = props[propName];\n\t for (var i = 0; i < expectedValues.length; i++) {\n\t if (is(propValue, expectedValues[i])) {\n\t return null;\n\t }\n\t }\n\t\n\t var valuesString = JSON.stringify(expectedValues);\n\t return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of value `' + propValue + '` ' + ('supplied to `' + componentName + '`, expected one of ' + valuesString + '.'));\n\t }\n\t return createChainableTypeChecker(validate);\n\t }\n\t\n\t function createObjectOfTypeChecker(typeChecker) {\n\t function validate(props, propName, componentName, location, propFullName) {\n\t if (typeof typeChecker !== 'function') {\n\t return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside objectOf.');\n\t }\n\t var propValue = props[propName];\n\t var propType = getPropType(propValue);\n\t if (propType !== 'object') {\n\t return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an object.'));\n\t }\n\t for (var key in propValue) {\n\t if (propValue.hasOwnProperty(key)) {\n\t var error = typeChecker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n\t if (error instanceof Error) {\n\t return error;\n\t }\n\t }\n\t }\n\t return null;\n\t }\n\t return createChainableTypeChecker(validate);\n\t }\n\t\n\t function createUnionTypeChecker(arrayOfTypeCheckers) {\n\t if (!Array.isArray(arrayOfTypeCheckers)) {\n\t process.env.NODE_ENV !== 'production' ? warning(false, 'Invalid argument supplied to oneOfType, expected an instance of array.') : void 0;\n\t return emptyFunction.thatReturnsNull;\n\t }\n\t\n\t for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n\t var checker = arrayOfTypeCheckers[i];\n\t if (typeof checker !== 'function') {\n\t warning(\n\t false,\n\t 'Invalid argument supplid to oneOfType. Expected an array of check functions, but ' +\n\t 'received %s at index %s.',\n\t getPostfixForTypeWarning(checker),\n\t i\n\t );\n\t return emptyFunction.thatReturnsNull;\n\t }\n\t }\n\t\n\t function validate(props, propName, componentName, location, propFullName) {\n\t for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n\t var checker = arrayOfTypeCheckers[i];\n\t if (checker(props, propName, componentName, location, propFullName, ReactPropTypesSecret) == null) {\n\t return null;\n\t }\n\t }\n\t\n\t return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`.'));\n\t }\n\t return createChainableTypeChecker(validate);\n\t }\n\t\n\t function createNodeChecker() {\n\t function validate(props, propName, componentName, location, propFullName) {\n\t if (!isNode(props[propName])) {\n\t return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`, expected a ReactNode.'));\n\t }\n\t return null;\n\t }\n\t return createChainableTypeChecker(validate);\n\t }\n\t\n\t function createShapeTypeChecker(shapeTypes) {\n\t function validate(props, propName, componentName, location, propFullName) {\n\t var propValue = props[propName];\n\t var propType = getPropType(propValue);\n\t if (propType !== 'object') {\n\t return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n\t }\n\t for (var key in shapeTypes) {\n\t var checker = shapeTypes[key];\n\t if (!checker) {\n\t continue;\n\t }\n\t var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n\t if (error) {\n\t return error;\n\t }\n\t }\n\t return null;\n\t }\n\t return createChainableTypeChecker(validate);\n\t }\n\t\n\t function isNode(propValue) {\n\t switch (typeof propValue) {\n\t case 'number':\n\t case 'string':\n\t case 'undefined':\n\t return true;\n\t case 'boolean':\n\t return !propValue;\n\t case 'object':\n\t if (Array.isArray(propValue)) {\n\t return propValue.every(isNode);\n\t }\n\t if (propValue === null || isValidElement(propValue)) {\n\t return true;\n\t }\n\t\n\t var iteratorFn = getIteratorFn(propValue);\n\t if (iteratorFn) {\n\t var iterator = iteratorFn.call(propValue);\n\t var step;\n\t if (iteratorFn !== propValue.entries) {\n\t while (!(step = iterator.next()).done) {\n\t if (!isNode(step.value)) {\n\t return false;\n\t }\n\t }\n\t } else {\n\t // Iterator will provide entry [k,v] tuples rather than values.\n\t while (!(step = iterator.next()).done) {\n\t var entry = step.value;\n\t if (entry) {\n\t if (!isNode(entry[1])) {\n\t return false;\n\t }\n\t }\n\t }\n\t }\n\t } else {\n\t return false;\n\t }\n\t\n\t return true;\n\t default:\n\t return false;\n\t }\n\t }\n\t\n\t function isSymbol(propType, propValue) {\n\t // Native Symbol.\n\t if (propType === 'symbol') {\n\t return true;\n\t }\n\t\n\t // 19.4.3.5 Symbol.prototype[@@toStringTag] === 'Symbol'\n\t if (propValue['@@toStringTag'] === 'Symbol') {\n\t return true;\n\t }\n\t\n\t // Fallback for non-spec compliant Symbols which are polyfilled.\n\t if (typeof Symbol === 'function' && propValue instanceof Symbol) {\n\t return true;\n\t }\n\t\n\t return false;\n\t }\n\t\n\t // Equivalent of `typeof` but with special handling for array and regexp.\n\t function getPropType(propValue) {\n\t var propType = typeof propValue;\n\t if (Array.isArray(propValue)) {\n\t return 'array';\n\t }\n\t if (propValue instanceof RegExp) {\n\t // Old webkits (at least until Android 4.0) return 'function' rather than\n\t // 'object' for typeof a RegExp. We'll normalize this here so that /bla/\n\t // passes PropTypes.object.\n\t return 'object';\n\t }\n\t if (isSymbol(propType, propValue)) {\n\t return 'symbol';\n\t }\n\t return propType;\n\t }\n\t\n\t // This handles more types than `getPropType`. Only used for error messages.\n\t // See `createPrimitiveTypeChecker`.\n\t function getPreciseType(propValue) {\n\t if (typeof propValue === 'undefined' || propValue === null) {\n\t return '' + propValue;\n\t }\n\t var propType = getPropType(propValue);\n\t if (propType === 'object') {\n\t if (propValue instanceof Date) {\n\t return 'date';\n\t } else if (propValue instanceof RegExp) {\n\t return 'regexp';\n\t }\n\t }\n\t return propType;\n\t }\n\t\n\t // Returns a string that is postfixed to a warning about an invalid type.\n\t // For example, \"undefined\" or \"of type array\"\n\t function getPostfixForTypeWarning(value) {\n\t var type = getPreciseType(value);\n\t switch (type) {\n\t case 'array':\n\t case 'object':\n\t return 'an ' + type;\n\t case 'boolean':\n\t case 'date':\n\t case 'regexp':\n\t return 'a ' + type;\n\t default:\n\t return type;\n\t }\n\t }\n\t\n\t // Returns class name of the object, if any.\n\t function getClassName(propValue) {\n\t if (!propValue.constructor || !propValue.constructor.name) {\n\t return ANONYMOUS;\n\t }\n\t return propValue.constructor.name;\n\t }\n\t\n\t ReactPropTypes.checkPropTypes = checkPropTypes;\n\t ReactPropTypes.PropTypes = ReactPropTypes;\n\t\n\t return ReactPropTypes;\n\t};\n\t\n\t/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(1)))\n\n/***/ })\n/******/ ])\n});\n;\n\n\n// WEBPACK FOOTER //\n// formsy-react.js"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId])\n \t\t\treturn installedModules[moduleId].exports;\n\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\texports: {},\n \t\t\tid: moduleId,\n \t\t\tloaded: false\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.loaded = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(0);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap ab445ef5c18fe70be9dc","var PropTypes = require('prop-types');\nvar React = global.React || require('react');\nvar createReactClass = require('create-react-class');\nvar Formsy = {};\nvar validationRules = require('./validationRules.js');\nvar formDataToObject = require('form-data-to-object');\nvar utils = require('./utils.js');\nvar Mixin = require('./Mixin.js');\nvar HOC = require('./HOC.js');\nvar Decorator = require('./Decorator.js');\nvar options = {};\nvar emptyArray = [];\n\nFormsy.Mixin = Mixin;\nFormsy.HOC = HOC;\nFormsy.Decorator = Decorator;\n\nFormsy.defaults = function (passedOptions) {\n options = passedOptions;\n};\n\nFormsy.addValidationRule = function (name, func) {\n validationRules[name] = func;\n};\n\nFormsy.Form = createReactClass({\n displayName: 'Formsy',\n getInitialState: function () {\n return {\n isValid: true,\n isSubmitting: false,\n canChange: false\n };\n },\n getDefaultProps: function () {\n return {\n onSuccess: function () {},\n onError: function () {},\n onSubmit: function () {},\n onValidSubmit: function () {},\n onInvalidSubmit: function () {},\n onValid: function () {},\n onInvalid: function () {},\n onChange: function () {},\n validationErrors: null,\n preventExternalInvalidation: false\n };\n },\n\n childContextTypes: {\n formsy: PropTypes.object\n },\n getChildContext: function () {\n return {\n formsy: {\n attachToForm: this.attachToForm,\n detachFromForm: this.detachFromForm,\n validate: this.validate,\n isFormDisabled: this.isFormDisabled,\n isValidValue: (component, value) => {\n return this.runValidation(component, value).then(info => info.isValid);\n }\n }\n }\n },\n\n // Add a map to store the inputs of the form, a model to store\n // the values of the form and register child inputs\n componentWillMount: function () {\n this.inputs = [];\n this.cachedValues = {};\n },\n\n componentDidMount: function () {\n this.validateForm();\n },\n\n componentWillUpdate: function () {\n // Keep a reference to input names before form updates,\n // to check if inputs has changed after render\n this.prevInputNames = this.inputs.map(component => component.props.name);\n },\n\n componentDidUpdate: function () {\n\n if (this.props.validationErrors && typeof this.props.validationErrors === 'object' && Object.keys(this.props.validationErrors).length > 0) {\n this.setInputValidationErrors(this.props.validationErrors);\n }\n\n var newInputNames = this.inputs.map(component => component.props.name);\n if (utils.arraysDiffer(this.prevInputNames, newInputNames)) {\n this.validateForm();\n }\n\n },\n\n shouldCache: function () {\n return this.props.cacheValues;\n },\n\n // Allow resetting to specified data\n reset: function (data) {\n this.setFormPristine(true);\n this.resetModel(data);\n },\n\n // Update model, submit to url prop and send the model\n submit: function (event) {\n\n event && event.preventDefault();\n\n // Trigger form as not pristine.\n // If any inputs have not been touched yet this will make them dirty\n // so validation becomes visible (if based on isPristine)\n this.setFormPristine(false);\n var model = this.getModel();\n this.props.onSubmit(model, this.resetModel, this.updateInputsWithError);\n this.state.isValid ? this.props.onValidSubmit(model, this.resetModel, this.updateInputsWithError) : this.props.onInvalidSubmit(model, this.resetModel, this.updateInputsWithError);\n\n },\n\n mapModel: function (model) {\n\n if (this.props.mapping) {\n return this.props.mapping(model)\n } else {\n return formDataToObject.toObj(Object.keys(model).reduce((mappedModel, key) => {\n\n var keyArray = key.split('.');\n var base = mappedModel;\n while (keyArray.length) {\n var currentKey = keyArray.shift();\n base = (base[currentKey] = keyArray.length ? base[currentKey] || {} : model[key]);\n }\n\n return mappedModel;\n\n }, {}));\n }\n },\n\n getModel: function () {\n var currentValues = this.getCurrentValues();\n return this.mapModel(currentValues);\n },\n\n // Reset each key in the model to the original / initial / specified value\n resetModel: function (data) {\n this.inputs.forEach(component => {\n var name = component.props.name;\n if (data && data.hasOwnProperty(name)) {\n component.setValue(data[name]);\n } else {\n component.resetValue();\n }\n });\n this.validateForm();\n },\n\n setInputValidationErrors: function (errors) {\n this.inputs.forEach(component => {\n var name = component.props.name;\n if (!(name in errors)) {\n return\n }\n var args = [{\n _isValid: errors[name] === null,\n _validationError: typeof errors[name] === 'string' ? [errors[name]] : errors[name],\n }];\n component.setState.apply(component, args);\n });\n },\n\n // Checks if the values have changed from their initial value\n isChanged: function() {\n return !utils.isSame(this.getPristineValues(), this.getCurrentValues());\n },\n\n getPristineValues: function() {\n return this.inputs.reduce((data, component) => {\n var name = component.props.name;\n data[name] = component.props.value;\n return data;\n }, {});\n },\n\n // Go through errors from server and grab the components\n // stored in the inputs map. Change their state to invalid\n // and set the serverError message\n updateInputsWithError: function (errors) {\n Object.keys(errors).forEach((name, index) => {\n var component = utils.find(this.inputs, component => component.props.name === name);\n if (!component) {\n throw new Error('You are trying to update an input that does not exist. ' +\n 'Verify errors object with input names. ' + JSON.stringify(errors));\n }\n var args = [{\n _isValid: this.props.preventExternalInvalidation || false,\n _externalError: typeof errors[name] === 'string' ? [errors[name]] : errors[name]\n }];\n component.setState.apply(component, args);\n });\n },\n\n isFormDisabled: function () {\n return this.props.disabled;\n },\n\n getCurrentValues: function () {\n return this.inputs.reduce((data, component) => {\n var name = component.props.name;\n data[name] = component.state._value;\n return data;\n }, {});\n },\n\n setFormPristine: function (isPristine) {\n this.setState({\n _formSubmitted: !isPristine\n });\n\n // Iterate through each component and set it as pristine\n // or \"dirty\".\n this.inputs.forEach((component, index) => {\n component.setState({\n _formSubmitted: !isPristine,\n _isPristine: isPristine\n });\n });\n },\n\n // Use the binded values and the actual input value to\n // validate the input and set its state. Then check the\n // state of the form itself\n validate: function (component) {\n\n // Trigger onChange\n if (this.state.canChange) {\n this.props.onChange(this.getModel(), this.isChanged());\n }\n\n this.runValidation(component)\n .then(validation => {\n if (!validation) {\n return\n }\n // Run through the validations, split them up and call\n // the validator IF there is a value or it is required\n component.setState({\n _isValid: validation.isValid,\n _isRequired: validation.isRequired,\n _validationError: validation.error,\n _externalError: null\n }, this.validateForm);\n })\n },\n\n // Checks validation on current value or a passed value\n runValidation: function (component, value) {\n\n var currentValues = this.getCurrentValues();\n var validationErrors = component.props.validationErrors;\n var validationError = component.props.validationError;\n value = arguments.length === 2 ? value : component.state._value;\n\n if (this.shouldCache() && this.cachedValues[component.props.name] === value) {\n const isValid = component.isValid();\n const isRequired = component.showRequired();\n const error = [component.getErrorMessage()];\n return new Promise(function (resolve, reject) {\n resolve({\n isValid: isValid,\n isRequired: isRequired,\n error: error,\n });\n });\n }\n\n this.cachedValues[component.props.name] = value\n\n return Promise.all([\n this.runRules(value, currentValues, component._validations),\n this.runRules(value, currentValues, component._requiredValidations)\n ])\n .then(([validationResults, requiredResults]) => {\n\n let validateComponent = Promise.resolve()\n\n // the component defines an explicit validate function\n if (typeof component.validate === \"function\") {\n validateComponent = Promise.resolve(component.validate()).then(validated => {\n validationResults.failed = validated ? [] : ['failed'];\n })\n }\n\n return validateComponent.then(() => {\n if (this.inputs.indexOf(component) < 0) {\n return;\n }\n\n var isRequired = Object.keys(component._requiredValidations).length ? !!requiredResults.success.length : false;\n var isValid = !validationResults.failed.length && !(this.props.validationErrors && this.props.validationErrors[component.props.name]);\n\n return {\n isRequired: isRequired,\n isValid: isRequired ? false : isValid,\n error: (function () {\n\n if (isValid && !isRequired) {\n return emptyArray;\n }\n\n if (validationResults.errors.length) {\n return validationResults.errors;\n }\n\n if (this.props.validationErrors && this.props.validationErrors[component.props.name]) {\n return typeof this.props.validationErrors[component.props.name] === 'string' ? [this.props.validationErrors[component.props.name]] : this.props.validationErrors[component.props.name];\n }\n\n if (isRequired) {\n var error = validationErrors[requiredResults.success[0]];\n return error ? [error] : null;\n }\n\n if (validationResults.failed.length) {\n return validationResults.failed.map(function(failed) {\n return validationErrors[failed] ? validationErrors[failed] : validationError;\n }).filter(function(x, pos, arr) {\n // Remove duplicates\n return arr.indexOf(x) === pos;\n });\n }\n\n }.call(this))\n };\n })\n })\n },\n\n runRules: function (value, currentValues, validations) {\n\n var results = {\n errors: [],\n failed: [],\n success: []\n };\n\n return Promise.all(Object.keys(validations).map(function (validationMethod) {\n\n if (validationRules[validationMethod] && typeof validations[validationMethod] === 'function') {\n throw new Error('Formsy does not allow you to override default validations: ' + validationMethod);\n }\n\n if (!validationRules[validationMethod] && typeof validations[validationMethod] !== 'function') {\n throw new Error('Formsy does not have the validation rule: ' + validationMethod);\n }\n\n if (typeof validations[validationMethod] === 'function') {\n return Promise.resolve(validations[validationMethod](currentValues, value))\n .then(validation => {\n if (typeof validation === 'string') {\n results.errors.push(validation);\n results.failed.push(validationMethod);\n } else if (!validation) {\n results.failed.push(validationMethod);\n }\n return;\n })\n\n } else if (typeof validations[validationMethod] !== 'function') {\n return Promise.resolve(validationRules[validationMethod](currentValues, value, validations[validationMethod]))\n .then(validation => {\n if (typeof validation === 'string') {\n results.errors.push(validation);\n results.failed.push(validationMethod);\n } else if (!validation) {\n results.failed.push(validationMethod);\n } else {\n results.success.push(validationMethod);\n }\n return;\n })\n }\n\n return results.success.push(validationMethod);\n\n }))\n .then(() => results)\n },\n\n // Validate the form by going through all child input components\n // and check their state\n validateForm: function () {\n\n // We need a callback as we are validating all inputs again. This will\n // run when the last component has set its state\n var onValidationComplete = function () {\n var allIsValid = this.inputs.every(component => {\n return component.state._isValid;\n });\n\n this.setState({\n isValid: allIsValid\n });\n\n if (allIsValid) {\n this.props.onValid();\n } else {\n this.props.onInvalid();\n }\n\n // Tell the form that it can start to trigger change events\n this.setState({\n canChange: true\n });\n\n }.bind(this);\n\n // Run validation again in case affected by other inputs. The\n // last component validated will run the onValidationComplete callback\n this.inputs.forEach((component, index) => {\n this.runValidation(component)\n .then(validation => {\n if (!validation) {\n return\n }\n if (validation.isValid && component.state._externalError) {\n validation.isValid = false;\n }\n component.setState({\n _isValid: validation.isValid,\n _isRequired: validation.isRequired,\n _validationError: validation.error,\n _externalError: !validation.isValid && component.state._externalError ? component.state._externalError : null\n }, index === this.inputs.length - 1 ? onValidationComplete : null);\n })\n });\n\n // If there are no inputs, set state where form is ready to trigger\n // change event. New inputs might be added later\n if (!this.inputs.length) {\n this.setState({\n canChange: true\n });\n }\n },\n\n // Method put on each input component to register\n // itself to the form\n attachToForm: function (component) {\n\n if (this.inputs.indexOf(component) === -1) {\n this.inputs.push(component);\n }\n\n this.validate(component);\n },\n\n // Method put on each input component to unregister\n // itself from the form\n detachFromForm: function (component) {\n var componentPos = this.inputs.indexOf(component);\n\n if (componentPos !== -1) {\n this.inputs = this.inputs.slice(0, componentPos)\n .concat(this.inputs.slice(componentPos + 1));\n }\n\n this.validateForm();\n },\n render: function () {\n var {\n mapping,\n validationErrors,\n onSubmit,\n onValid,\n onValidSubmit,\n onInvalid,\n onInvalidSubmit,\n onChange,\n reset,\n preventExternalInvalidation,\n onSuccess,\n onError,\n cacheValues,\n ...nonFormsyProps\n } = this.props;\n\n return (\n
\n {this.props.children}\n
\n );\n\n }\n});\n\nif (!global.exports && !global.module && (!global.define || !global.define.amd)) {\n global.Formsy = Formsy;\n}\n\nmodule.exports = Formsy;\n\n\n\n// WEBPACK FOOTER //\n// ./src/main.js","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/process/browser.js\n// module id = 1\n// module chunks = 0","module.exports = __WEBPACK_EXTERNAL_MODULE_2__;\n\n\n//////////////////\n// WEBPACK FOOTER\n// external \"react\"\n// module id = 2\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\n/**\n * Use invariant() to assert state which your program assumes to be true.\n *\n * Provide sprintf-style format (only %s is supported) and arguments\n * to provide information about what broke and what you were\n * expecting.\n *\n * The invariant message will be stripped in production, but the invariant\n * will remain to ensure logic does not differ in production.\n */\n\nvar validateFormat = function validateFormat(format) {};\n\nif (process.env.NODE_ENV !== 'production') {\n validateFormat = function validateFormat(format) {\n if (format === undefined) {\n throw new Error('invariant requires an error message argument');\n }\n };\n}\n\nfunction invariant(condition, format, a, b, c, d, e, f) {\n validateFormat(format);\n\n if (!condition) {\n var error;\n if (format === undefined) {\n error = new Error('Minified exception occurred; use the non-minified dev environment ' + 'for the full error message and additional helpful warnings.');\n } else {\n var args = [a, b, c, d, e, f];\n var argIndex = 0;\n error = new Error(format.replace(/%s/g, function () {\n return args[argIndex++];\n }));\n error.name = 'Invariant Violation';\n }\n\n error.framesToPop = 1; // we don't care about invariant's own frame\n throw error;\n }\n}\n\nmodule.exports = invariant;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/fbjs/lib/invariant.js\n// module id = 3\n// module chunks = 0","var PropTypes = require('prop-types');\nvar utils = require('./utils.js');\nvar React = global.React || require('react');\n\nvar convertValidationsToObject = function (validations) {\n\n if (typeof validations === 'string') {\n\n return validations.split(/\\,(?![^{\\[]*[}\\]])/g).reduce(function (validations, validation) {\n var args = validation.split(':');\n var validateMethod = args.shift();\n\n args = args.map(function (arg) {\n try {\n return JSON.parse(arg);\n } catch (e) {\n return arg; // It is a string if it can not parse it\n }\n });\n\n if (args.length > 1) {\n throw new Error('Formsy does not support multiple args on string validations. Use object format of validations instead.');\n }\n\n validations[validateMethod] = args.length ? args[0] : true;\n return validations;\n }, {});\n\n }\n\n return validations || {};\n};\n\nmodule.exports = {\n getInitialState: function () {\n return {\n _value: this.props.value,\n _isRequired: false,\n _isValid: !this.props.required,\n _isPristine: true,\n _pristineValue: this.props.value,\n _validationError: [],\n _externalError: null,\n _formSubmitted: false\n };\n },\n contextTypes: {\n formsy: PropTypes.object // What about required?\n },\n getDefaultProps: function () {\n return {\n validationError: '',\n validationErrors: {}\n };\n },\n\n componentWillMount: function () {\n this.canSetValue = true;\n var configure = function () {\n this.setValidations(this.props.validations, this.props.required);\n\n // Pass a function instead?\n this.context.formsy.attachToForm(this);\n //this.props._attachToForm(this);\n }.bind(this);\n\n if (!this.props.name) {\n throw new Error('Form Input requires a name property when used');\n }\n\n /*\n if (!this.props._attachToForm) {\n return setTimeout(function () {\n if (!this.isMounted()) return;\n if (!this.props._attachToForm) {\n throw new Error('Form Mixin requires component to be nested in a Form');\n }\n configure();\n }.bind(this), 0);\n }\n */\n configure();\n },\n\n // We have to make the validate method is kept when new props are added\n componentWillReceiveProps: function (nextProps) {\n this.setValidations(nextProps.validations, nextProps.required);\n\n },\n\n componentDidUpdate: function (prevProps) {\n\n // If the value passed has changed, set it. If value is not passed it will\n // internally update, and this will never run\n if (!utils.isSame(this.props.value, prevProps.value)) {\n this.setValue(this.props.value);\n }\n\n // If validations or required is changed, run a new validation\n if (!utils.isSame(this.props.validations, prevProps.validations) || !utils.isSame(this.props.required, prevProps.required)) {\n this.context.formsy.validate(this);\n }\n },\n\n // Detach it when component unmounts\n componentWillUnmount: function () {\n this.canSetValue = false;\n this.context.formsy.detachFromForm(this);\n //this.props._detachFromForm(this);\n },\n\n setValidations: function (validations, required) {\n\n // Add validations to the store itself as the props object can not be modified\n this._validations = convertValidationsToObject(validations) || {};\n this._requiredValidations = required === true ? {isDefaultRequiredValue: true} : convertValidationsToObject(required);\n\n },\n\n // We validate after the value has been set\n setValue: function (value) {\n if (!this.canSetValue) {\n return\n }\n this.setState({\n _value: value,\n _isPristine: false\n }, function () {\n this.context.formsy.validate(this);\n //this.props._validate(this);\n }.bind(this));\n },\n resetValue: function () {\n this.setState({\n _value: this.state._pristineValue,\n _isPristine: true\n }, function () {\n this.context.formsy.validate(this);\n //this.props._validate(this);\n });\n },\n getValue: function () {\n return this.state._value;\n },\n hasValue: function () {\n return this.state._value !== '';\n },\n getErrorMessage: function () {\n var messages = this.getErrorMessages();\n return messages.length ? messages[0] : null;\n },\n getErrorMessages: function () {\n return !this.isValid() || this.showRequired() ? (this.state._externalError || this.state._validationError || []) : [];\n },\n isFormDisabled: function () {\n return this.context.formsy.isFormDisabled();\n //return this.props._isFormDisabled();\n },\n isValid: function () {\n return this.state._isValid;\n },\n isPristine: function () {\n return this.state._isPristine;\n },\n isFormSubmitted: function () {\n return this.state._formSubmitted;\n },\n isRequired: function () {\n return !!this.props.required;\n },\n showRequired: function () {\n return this.state._isRequired;\n },\n showError: function () {\n return !this.showRequired() && !this.isValid();\n },\n isValidValue: function (value) {\n return this.context.formsy.isValidValue.call(null, this, value);\n //return this.props._isValidValue.call(null, this, value);\n }\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/Mixin.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar React = require('react');\nvar factory = require('./factory');\n\nif (typeof React === 'undefined') {\n throw Error(\n 'create-react-class could not find the React object. If you are using script tags, ' +\n 'make sure that React is being loaded before create-react-class.'\n );\n}\n\n// Hack to grab NoopUpdateQueue from isomorphic React\nvar ReactNoopUpdateQueue = new React.Component().updater;\n\nmodule.exports = factory(\n React.Component,\n React.isValidElement,\n ReactNoopUpdateQueue\n);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/create-react-class/index.js\n// module id = 5\n// module chunks = 0","\"use strict\";\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\nfunction makeEmptyFunction(arg) {\n return function () {\n return arg;\n };\n}\n\n/**\n * This function accepts and discards inputs; it has no side effects. This is\n * primarily useful idiomatically for overridable function endpoints which\n * always need to be callable, since JS lacks a null-call idiom ala Cocoa.\n */\nvar emptyFunction = function emptyFunction() {};\n\nemptyFunction.thatReturns = makeEmptyFunction;\nemptyFunction.thatReturnsFalse = makeEmptyFunction(false);\nemptyFunction.thatReturnsTrue = makeEmptyFunction(true);\nemptyFunction.thatReturnsNull = makeEmptyFunction(null);\nemptyFunction.thatReturnsThis = function () {\n return this;\n};\nemptyFunction.thatReturnsArgument = function (arg) {\n return arg;\n};\n\nmodule.exports = emptyFunction;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/fbjs/lib/emptyFunction.js\n// module id = 6\n// module chunks = 0","/**\n * Copyright 2014-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar emptyFunction = require('./emptyFunction');\n\n/**\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\nvar warning = emptyFunction;\n\nif (process.env.NODE_ENV !== 'production') {\n var printWarning = function printWarning(format) {\n for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n var argIndex = 0;\n var message = 'Warning: ' + format.replace(/%s/g, function () {\n return args[argIndex++];\n });\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n };\n\n warning = function warning(condition, format) {\n if (format === undefined) {\n throw new Error('`warning(condition, format, ...args)` requires a warning ' + 'message argument');\n }\n\n if (format.indexOf('Failed Composite propType: ') === 0) {\n return; // Ignore CompositeComponent proptype check.\n }\n\n if (!condition) {\n for (var _len2 = arguments.length, args = Array(_len2 > 2 ? _len2 - 2 : 0), _key2 = 2; _key2 < _len2; _key2++) {\n args[_key2 - 2] = arguments[_key2];\n }\n\n printWarning.apply(undefined, [format].concat(args));\n }\n };\n}\n\nmodule.exports = warning;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/fbjs/lib/warning.js\n// module id = 7\n// module chunks = 0","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/prop-types/lib/ReactPropTypesSecret.js\n// module id = 8\n// module chunks = 0","module.exports = {\n arraysDiffer: function (a, b) {\n var isDifferent = false;\n if (a.length !== b.length) {\n isDifferent = true;\n } else {\n a.forEach(function (item, index) {\n if (!this.isSame(item, b[index])) {\n isDifferent = true;\n }\n }, this);\n }\n return isDifferent;\n },\n\n objectsDiffer: function (a, b) {\n var isDifferent = false;\n if (Object.keys(a).length !== Object.keys(b).length) {\n isDifferent = true;\n } else {\n Object.keys(a).forEach(function (key) {\n if (!this.isSame(a[key], b[key])) {\n isDifferent = true;\n }\n }, this);\n }\n return isDifferent;\n },\n\n isSame: function (a, b) {\n if (typeof a !== typeof b) {\n return false;\n } else if (Array.isArray(a) && Array.isArray(b)) {\n return !this.arraysDiffer(a, b);\n } else if (typeof a === 'function') {\n return a.toString() === b.toString();\n } else if (typeof a === 'object' && a !== null && b !== null) {\n return !this.objectsDiffer(a, b);\n }\n\n return a === b;\n },\n\n find: function (collection, fn) {\n for (var i = 0, l = collection.length; i < l; i++) {\n var item = collection[i];\n if (fn(item)) {\n return item;\n }\n }\n return null;\n }\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/utils.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var REACT_ELEMENT_TYPE = (typeof Symbol === 'function' &&\n Symbol.for &&\n Symbol.for('react.element')) ||\n 0xeac7;\n\n var isValidElement = function(object) {\n return typeof object === 'object' &&\n object !== null &&\n object.$$typeof === REACT_ELEMENT_TYPE;\n };\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(isValidElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/prop-types/index.js\n// module id = 10\n// module chunks = 0","var React = global.React || require('react');\nvar createReactClass = require('create-react-class');\nvar Mixin = require('./Mixin.js');\nmodule.exports = function () {\n return function (Component) {\n return createReactClass({\n mixins: [Mixin],\n render: function () {\n return React.createElement(Component, {\n setValidations: this.setValidations,\n setValue: this.setValue,\n resetValue: this.resetValue,\n getValue: this.getValue,\n hasValue: this.hasValue,\n getErrorMessage: this.getErrorMessage,\n getErrorMessages: this.getErrorMessages,\n isFormDisabled: this.isFormDisabled,\n isValid: this.isValid,\n isPristine: this.isPristine,\n isFormSubmitted: this.isFormSubmitted,\n isRequired: this.isRequired,\n showRequired: this.showRequired,\n showError: this.showError,\n isValidValue: this.isValidValue,\n ...this.props\n });\n }\n });\n };\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/Decorator.js","var React = global.React || require('react');\nvar createReactClass = require('create-react-class');\nvar Mixin = require('./Mixin.js');\nmodule.exports = function (Component) {\n return createReactClass({\n displayName: 'Formsy(' + getDisplayName(Component) + ')',\n mixins: [Mixin],\n\n render: function () {\n const { innerRef } = this.props;\n const propsForElement = {\n setValidations: this.setValidations,\n setValue: this.setValue,\n resetValue: this.resetValue,\n getValue: this.getValue,\n hasValue: this.hasValue,\n getErrorMessage: this.getErrorMessage,\n getErrorMessages: this.getErrorMessages,\n isFormDisabled: this.isFormDisabled,\n isValid: this.isValid,\n isPristine: this.isPristine,\n isFormSubmitted: this.isFormSubmitted,\n isRequired: this.isRequired,\n showRequired: this.showRequired,\n showError: this.showError,\n isValidValue: this.isValidValue,\n ...this.props\n };\n\n if (innerRef) {\n propsForElement.ref = innerRef;\n }\n return React.createElement(Component, propsForElement);\n }\n });\n};\n\nfunction getDisplayName(Component) {\n return (\n Component.displayName ||\n Component.name ||\n (typeof Component === 'string' ? Component : 'Component')\n );\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/HOC.js","var isExisty = function (value) {\n return value !== null && value !== undefined;\n};\n\nvar isEmpty = function (value) {\n return value === '';\n};\n\nvar validations = {\n isDefaultRequiredValue: function (values, value) {\n return value === undefined || value === '';\n },\n isExisty: function (values, value) {\n return isExisty(value);\n },\n matchRegexp: function (values, value, regexp) {\n return !isExisty(value) || isEmpty(value) || regexp.test(value);\n },\n isUndefined: function (values, value) {\n return value === undefined;\n },\n isEmptyString: function (values, value) {\n return isEmpty(value);\n },\n isEmail: function (values, value) {\n return validations.matchRegexp(values, value, /^((([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+(\\.([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+)*)|((\\x22)((((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(([\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f]|\\x21|[\\x23-\\x5b]|[\\x5d-\\x7e]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(\\\\([\\x01-\\x09\\x0b\\x0c\\x0d-\\x7f]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]))))*(((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(\\x22)))@((([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.)+(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))$/i);\n },\n isUrl: function (values, value) {\n return validations.matchRegexp(values, value, /^(https?|s?ftp):\\/\\/(((([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:)*@)?(((\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\.(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\.(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\.(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5]))|((([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.)+(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.?)(:\\d*)?)(\\/((([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:|@)+(\\/(([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:|@)*)*)?)?(\\?((([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:|@)|[\\uE000-\\uF8FF]|\\/|\\?)*)?(#((([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:|@)|\\/|\\?)*)?$/i);\n },\n isTrue: function (values, value) {\n return value === true;\n },\n isFalse: function (values, value) {\n return value === false;\n },\n isNumeric: function (values, value) {\n if (typeof value === 'number') {\n return true;\n }\n return validations.matchRegexp(values, value, /^[-+]?(?:\\d*[.])?\\d+$/);\n },\n isAlpha: function (values, value) {\n return validations.matchRegexp(values, value, /^[A-Z]+$/i);\n },\n isAlphanumeric: function (values, value) {\n return validations.matchRegexp(values, value, /^[0-9A-Z]+$/i);\n },\n isInt: function (values, value) {\n return validations.matchRegexp(values, value, /^(?:[-+]?(?:0|[1-9]\\d*))$/);\n },\n isFloat: function (values, value) {\n return validations.matchRegexp(values, value, /^(?:[-+]?(?:\\d+))?(?:\\.\\d*)?(?:[eE][\\+\\-]?(?:\\d+))?$/);\n },\n isWords: function (values, value) {\n return validations.matchRegexp(values, value, /^[A-Z\\s]+$/i);\n },\n isSpecialWords: function (values, value) {\n return validations.matchRegexp(values, value, /^[A-Z\\s\\u00C0-\\u017F]+$/i);\n },\n isLength: function (values, value, length) {\n return !isExisty(value) || isEmpty(value) || value.length === length;\n },\n equals: function (values, value, eql) {\n return !isExisty(value) || isEmpty(value) || value == eql;\n },\n equalsField: function (values, value, field) {\n return value == values[field];\n },\n maxLength: function (values, value, length) {\n return !isExisty(value) || value.length <= length;\n },\n minLength: function (values, value, length) {\n return !isExisty(value) || isEmpty(value) || value.length >= length;\n }\n};\n\nmodule.exports = validations;\n\n\n\n// WEBPACK FOOTER //\n// ./src/validationRules.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar _assign = require('object-assign');\n\nvar emptyObject = require('fbjs/lib/emptyObject');\nvar _invariant = require('fbjs/lib/invariant');\n\nif (process.env.NODE_ENV !== 'production') {\n var warning = require('fbjs/lib/warning');\n}\n\nvar MIXINS_KEY = 'mixins';\n\n// Helper function to allow the creation of anonymous functions which do not\n// have .name set to the name of the variable being assigned to.\nfunction identity(fn) {\n return fn;\n}\n\nvar ReactPropTypeLocationNames;\nif (process.env.NODE_ENV !== 'production') {\n ReactPropTypeLocationNames = {\n prop: 'prop',\n context: 'context',\n childContext: 'child context'\n };\n} else {\n ReactPropTypeLocationNames = {};\n}\n\nfunction factory(ReactComponent, isValidElement, ReactNoopUpdateQueue) {\n /**\n * Policies that describe methods in `ReactClassInterface`.\n */\n\n var injectedMixins = [];\n\n /**\n * Composite components are higher-level components that compose other composite\n * or host components.\n *\n * To create a new type of `ReactClass`, pass a specification of\n * your new class to `React.createClass`. The only requirement of your class\n * specification is that you implement a `render` method.\n *\n * var MyComponent = React.createClass({\n * render: function() {\n * return
Hello World
;\n * }\n * });\n *\n * The class specification supports a specific protocol of methods that have\n * special meaning (e.g. `render`). See `ReactClassInterface` for\n * more the comprehensive protocol. Any other properties and methods in the\n * class specification will be available on the prototype.\n *\n * @interface ReactClassInterface\n * @internal\n */\n var ReactClassInterface = {\n /**\n * An array of Mixin objects to include when defining your component.\n *\n * @type {array}\n * @optional\n */\n mixins: 'DEFINE_MANY',\n\n /**\n * An object containing properties and methods that should be defined on\n * the component's constructor instead of its prototype (static methods).\n *\n * @type {object}\n * @optional\n */\n statics: 'DEFINE_MANY',\n\n /**\n * Definition of prop types for this component.\n *\n * @type {object}\n * @optional\n */\n propTypes: 'DEFINE_MANY',\n\n /**\n * Definition of context types for this component.\n *\n * @type {object}\n * @optional\n */\n contextTypes: 'DEFINE_MANY',\n\n /**\n * Definition of context types this component sets for its children.\n *\n * @type {object}\n * @optional\n */\n childContextTypes: 'DEFINE_MANY',\n\n // ==== Definition methods ====\n\n /**\n * Invoked when the component is mounted. Values in the mapping will be set on\n * `this.props` if that prop is not specified (i.e. using an `in` check).\n *\n * This method is invoked before `getInitialState` and therefore cannot rely\n * on `this.state` or use `this.setState`.\n *\n * @return {object}\n * @optional\n */\n getDefaultProps: 'DEFINE_MANY_MERGED',\n\n /**\n * Invoked once before the component is mounted. The return value will be used\n * as the initial value of `this.state`.\n *\n * getInitialState: function() {\n * return {\n * isOn: false,\n * fooBaz: new BazFoo()\n * }\n * }\n *\n * @return {object}\n * @optional\n */\n getInitialState: 'DEFINE_MANY_MERGED',\n\n /**\n * @return {object}\n * @optional\n */\n getChildContext: 'DEFINE_MANY_MERGED',\n\n /**\n * Uses props from `this.props` and state from `this.state` to render the\n * structure of the component.\n *\n * No guarantees are made about when or how often this method is invoked, so\n * it must not have side effects.\n *\n * render: function() {\n * var name = this.props.name;\n * return
Hello, {name}!
;\n * }\n *\n * @return {ReactComponent}\n * @required\n */\n render: 'DEFINE_ONCE',\n\n // ==== Delegate methods ====\n\n /**\n * Invoked when the component is initially created and about to be mounted.\n * This may have side effects, but any external subscriptions or data created\n * by this method must be cleaned up in `componentWillUnmount`.\n *\n * @optional\n */\n componentWillMount: 'DEFINE_MANY',\n\n /**\n * Invoked when the component has been mounted and has a DOM representation.\n * However, there is no guarantee that the DOM node is in the document.\n *\n * Use this as an opportunity to operate on the DOM when the component has\n * been mounted (initialized and rendered) for the first time.\n *\n * @param {DOMElement} rootNode DOM element representing the component.\n * @optional\n */\n componentDidMount: 'DEFINE_MANY',\n\n /**\n * Invoked before the component receives new props.\n *\n * Use this as an opportunity to react to a prop transition by updating the\n * state using `this.setState`. Current props are accessed via `this.props`.\n *\n * componentWillReceiveProps: function(nextProps, nextContext) {\n * this.setState({\n * likesIncreasing: nextProps.likeCount > this.props.likeCount\n * });\n * }\n *\n * NOTE: There is no equivalent `componentWillReceiveState`. An incoming prop\n * transition may cause a state change, but the opposite is not true. If you\n * need it, you are probably looking for `componentWillUpdate`.\n *\n * @param {object} nextProps\n * @optional\n */\n componentWillReceiveProps: 'DEFINE_MANY',\n\n /**\n * Invoked while deciding if the component should be updated as a result of\n * receiving new props, state and/or context.\n *\n * Use this as an opportunity to `return false` when you're certain that the\n * transition to the new props/state/context will not require a component\n * update.\n *\n * shouldComponentUpdate: function(nextProps, nextState, nextContext) {\n * return !equal(nextProps, this.props) ||\n * !equal(nextState, this.state) ||\n * !equal(nextContext, this.context);\n * }\n *\n * @param {object} nextProps\n * @param {?object} nextState\n * @param {?object} nextContext\n * @return {boolean} True if the component should update.\n * @optional\n */\n shouldComponentUpdate: 'DEFINE_ONCE',\n\n /**\n * Invoked when the component is about to update due to a transition from\n * `this.props`, `this.state` and `this.context` to `nextProps`, `nextState`\n * and `nextContext`.\n *\n * Use this as an opportunity to perform preparation before an update occurs.\n *\n * NOTE: You **cannot** use `this.setState()` in this method.\n *\n * @param {object} nextProps\n * @param {?object} nextState\n * @param {?object} nextContext\n * @param {ReactReconcileTransaction} transaction\n * @optional\n */\n componentWillUpdate: 'DEFINE_MANY',\n\n /**\n * Invoked when the component's DOM representation has been updated.\n *\n * Use this as an opportunity to operate on the DOM when the component has\n * been updated.\n *\n * @param {object} prevProps\n * @param {?object} prevState\n * @param {?object} prevContext\n * @param {DOMElement} rootNode DOM element representing the component.\n * @optional\n */\n componentDidUpdate: 'DEFINE_MANY',\n\n /**\n * Invoked when the component is about to be removed from its parent and have\n * its DOM representation destroyed.\n *\n * Use this as an opportunity to deallocate any external resources.\n *\n * NOTE: There is no `componentDidUnmount` since your component will have been\n * destroyed by that point.\n *\n * @optional\n */\n componentWillUnmount: 'DEFINE_MANY',\n\n // ==== Advanced methods ====\n\n /**\n * Updates the component's currently mounted DOM representation.\n *\n * By default, this implements React's rendering and reconciliation algorithm.\n * Sophisticated clients may wish to override this.\n *\n * @param {ReactReconcileTransaction} transaction\n * @internal\n * @overridable\n */\n updateComponent: 'OVERRIDE_BASE'\n };\n\n /**\n * Mapping from class specification keys to special processing functions.\n *\n * Although these are declared like instance properties in the specification\n * when defining classes using `React.createClass`, they are actually static\n * and are accessible on the constructor instead of the prototype. Despite\n * being static, they must be defined outside of the \"statics\" key under\n * which all other static methods are defined.\n */\n var RESERVED_SPEC_KEYS = {\n displayName: function(Constructor, displayName) {\n Constructor.displayName = displayName;\n },\n mixins: function(Constructor, mixins) {\n if (mixins) {\n for (var i = 0; i < mixins.length; i++) {\n mixSpecIntoComponent(Constructor, mixins[i]);\n }\n }\n },\n childContextTypes: function(Constructor, childContextTypes) {\n if (process.env.NODE_ENV !== 'production') {\n validateTypeDef(Constructor, childContextTypes, 'childContext');\n }\n Constructor.childContextTypes = _assign(\n {},\n Constructor.childContextTypes,\n childContextTypes\n );\n },\n contextTypes: function(Constructor, contextTypes) {\n if (process.env.NODE_ENV !== 'production') {\n validateTypeDef(Constructor, contextTypes, 'context');\n }\n Constructor.contextTypes = _assign(\n {},\n Constructor.contextTypes,\n contextTypes\n );\n },\n /**\n * Special case getDefaultProps which should move into statics but requires\n * automatic merging.\n */\n getDefaultProps: function(Constructor, getDefaultProps) {\n if (Constructor.getDefaultProps) {\n Constructor.getDefaultProps = createMergedResultFunction(\n Constructor.getDefaultProps,\n getDefaultProps\n );\n } else {\n Constructor.getDefaultProps = getDefaultProps;\n }\n },\n propTypes: function(Constructor, propTypes) {\n if (process.env.NODE_ENV !== 'production') {\n validateTypeDef(Constructor, propTypes, 'prop');\n }\n Constructor.propTypes = _assign({}, Constructor.propTypes, propTypes);\n },\n statics: function(Constructor, statics) {\n mixStaticSpecIntoComponent(Constructor, statics);\n },\n autobind: function() {}\n };\n\n function validateTypeDef(Constructor, typeDef, location) {\n for (var propName in typeDef) {\n if (typeDef.hasOwnProperty(propName)) {\n // use a warning instead of an _invariant so components\n // don't show up in prod but only in __DEV__\n if (process.env.NODE_ENV !== 'production') {\n warning(\n typeof typeDef[propName] === 'function',\n '%s: %s type `%s` is invalid; it must be a function, usually from ' +\n 'React.PropTypes.',\n Constructor.displayName || 'ReactClass',\n ReactPropTypeLocationNames[location],\n propName\n );\n }\n }\n }\n }\n\n function validateMethodOverride(isAlreadyDefined, name) {\n var specPolicy = ReactClassInterface.hasOwnProperty(name)\n ? ReactClassInterface[name]\n : null;\n\n // Disallow overriding of base class methods unless explicitly allowed.\n if (ReactClassMixin.hasOwnProperty(name)) {\n _invariant(\n specPolicy === 'OVERRIDE_BASE',\n 'ReactClassInterface: You are attempting to override ' +\n '`%s` from your class specification. Ensure that your method names ' +\n 'do not overlap with React methods.',\n name\n );\n }\n\n // Disallow defining methods more than once unless explicitly allowed.\n if (isAlreadyDefined) {\n _invariant(\n specPolicy === 'DEFINE_MANY' || specPolicy === 'DEFINE_MANY_MERGED',\n 'ReactClassInterface: You are attempting to define ' +\n '`%s` on your component more than once. This conflict may be due ' +\n 'to a mixin.',\n name\n );\n }\n }\n\n /**\n * Mixin helper which handles policy validation and reserved\n * specification keys when building React classes.\n */\n function mixSpecIntoComponent(Constructor, spec) {\n if (!spec) {\n if (process.env.NODE_ENV !== 'production') {\n var typeofSpec = typeof spec;\n var isMixinValid = typeofSpec === 'object' && spec !== null;\n\n if (process.env.NODE_ENV !== 'production') {\n warning(\n isMixinValid,\n \"%s: You're attempting to include a mixin that is either null \" +\n 'or not an object. Check the mixins included by the component, ' +\n 'as well as any mixins they include themselves. ' +\n 'Expected object but got %s.',\n Constructor.displayName || 'ReactClass',\n spec === null ? null : typeofSpec\n );\n }\n }\n\n return;\n }\n\n _invariant(\n typeof spec !== 'function',\n \"ReactClass: You're attempting to \" +\n 'use a component class or function as a mixin. Instead, just use a ' +\n 'regular object.'\n );\n _invariant(\n !isValidElement(spec),\n \"ReactClass: You're attempting to \" +\n 'use a component as a mixin. Instead, just use a regular object.'\n );\n\n var proto = Constructor.prototype;\n var autoBindPairs = proto.__reactAutoBindPairs;\n\n // By handling mixins before any other properties, we ensure the same\n // chaining order is applied to methods with DEFINE_MANY policy, whether\n // mixins are listed before or after these methods in the spec.\n if (spec.hasOwnProperty(MIXINS_KEY)) {\n RESERVED_SPEC_KEYS.mixins(Constructor, spec.mixins);\n }\n\n for (var name in spec) {\n if (!spec.hasOwnProperty(name)) {\n continue;\n }\n\n if (name === MIXINS_KEY) {\n // We have already handled mixins in a special case above.\n continue;\n }\n\n var property = spec[name];\n var isAlreadyDefined = proto.hasOwnProperty(name);\n validateMethodOverride(isAlreadyDefined, name);\n\n if (RESERVED_SPEC_KEYS.hasOwnProperty(name)) {\n RESERVED_SPEC_KEYS[name](Constructor, property);\n } else {\n // Setup methods on prototype:\n // The following member methods should not be automatically bound:\n // 1. Expected ReactClass methods (in the \"interface\").\n // 2. Overridden methods (that were mixed in).\n var isReactClassMethod = ReactClassInterface.hasOwnProperty(name);\n var isFunction = typeof property === 'function';\n var shouldAutoBind =\n isFunction &&\n !isReactClassMethod &&\n !isAlreadyDefined &&\n spec.autobind !== false;\n\n if (shouldAutoBind) {\n autoBindPairs.push(name, property);\n proto[name] = property;\n } else {\n if (isAlreadyDefined) {\n var specPolicy = ReactClassInterface[name];\n\n // These cases should already be caught by validateMethodOverride.\n _invariant(\n isReactClassMethod &&\n (specPolicy === 'DEFINE_MANY_MERGED' ||\n specPolicy === 'DEFINE_MANY'),\n 'ReactClass: Unexpected spec policy %s for key %s ' +\n 'when mixing in component specs.',\n specPolicy,\n name\n );\n\n // For methods which are defined more than once, call the existing\n // methods before calling the new property, merging if appropriate.\n if (specPolicy === 'DEFINE_MANY_MERGED') {\n proto[name] = createMergedResultFunction(proto[name], property);\n } else if (specPolicy === 'DEFINE_MANY') {\n proto[name] = createChainedFunction(proto[name], property);\n }\n } else {\n proto[name] = property;\n if (process.env.NODE_ENV !== 'production') {\n // Add verbose displayName to the function, which helps when looking\n // at profiling tools.\n if (typeof property === 'function' && spec.displayName) {\n proto[name].displayName = spec.displayName + '_' + name;\n }\n }\n }\n }\n }\n }\n }\n\n function mixStaticSpecIntoComponent(Constructor, statics) {\n if (!statics) {\n return;\n }\n for (var name in statics) {\n var property = statics[name];\n if (!statics.hasOwnProperty(name)) {\n continue;\n }\n\n var isReserved = name in RESERVED_SPEC_KEYS;\n _invariant(\n !isReserved,\n 'ReactClass: You are attempting to define a reserved ' +\n 'property, `%s`, that shouldn\\'t be on the \"statics\" key. Define it ' +\n 'as an instance property instead; it will still be accessible on the ' +\n 'constructor.',\n name\n );\n\n var isInherited = name in Constructor;\n _invariant(\n !isInherited,\n 'ReactClass: You are attempting to define ' +\n '`%s` on your component more than once. This conflict may be ' +\n 'due to a mixin.',\n name\n );\n Constructor[name] = property;\n }\n }\n\n /**\n * Merge two objects, but throw if both contain the same key.\n *\n * @param {object} one The first object, which is mutated.\n * @param {object} two The second object\n * @return {object} one after it has been mutated to contain everything in two.\n */\n function mergeIntoWithNoDuplicateKeys(one, two) {\n _invariant(\n one && two && typeof one === 'object' && typeof two === 'object',\n 'mergeIntoWithNoDuplicateKeys(): Cannot merge non-objects.'\n );\n\n for (var key in two) {\n if (two.hasOwnProperty(key)) {\n _invariant(\n one[key] === undefined,\n 'mergeIntoWithNoDuplicateKeys(): ' +\n 'Tried to merge two objects with the same key: `%s`. This conflict ' +\n 'may be due to a mixin; in particular, this may be caused by two ' +\n 'getInitialState() or getDefaultProps() methods returning objects ' +\n 'with clashing keys.',\n key\n );\n one[key] = two[key];\n }\n }\n return one;\n }\n\n /**\n * Creates a function that invokes two functions and merges their return values.\n *\n * @param {function} one Function to invoke first.\n * @param {function} two Function to invoke second.\n * @return {function} Function that invokes the two argument functions.\n * @private\n */\n function createMergedResultFunction(one, two) {\n return function mergedResult() {\n var a = one.apply(this, arguments);\n var b = two.apply(this, arguments);\n if (a == null) {\n return b;\n } else if (b == null) {\n return a;\n }\n var c = {};\n mergeIntoWithNoDuplicateKeys(c, a);\n mergeIntoWithNoDuplicateKeys(c, b);\n return c;\n };\n }\n\n /**\n * Creates a function that invokes two functions and ignores their return vales.\n *\n * @param {function} one Function to invoke first.\n * @param {function} two Function to invoke second.\n * @return {function} Function that invokes the two argument functions.\n * @private\n */\n function createChainedFunction(one, two) {\n return function chainedFunction() {\n one.apply(this, arguments);\n two.apply(this, arguments);\n };\n }\n\n /**\n * Binds a method to the component.\n *\n * @param {object} component Component whose method is going to be bound.\n * @param {function} method Method to be bound.\n * @return {function} The bound method.\n */\n function bindAutoBindMethod(component, method) {\n var boundMethod = method.bind(component);\n if (process.env.NODE_ENV !== 'production') {\n boundMethod.__reactBoundContext = component;\n boundMethod.__reactBoundMethod = method;\n boundMethod.__reactBoundArguments = null;\n var componentName = component.constructor.displayName;\n var _bind = boundMethod.bind;\n boundMethod.bind = function(newThis) {\n for (\n var _len = arguments.length,\n args = Array(_len > 1 ? _len - 1 : 0),\n _key = 1;\n _key < _len;\n _key++\n ) {\n args[_key - 1] = arguments[_key];\n }\n\n // User is trying to bind() an autobound method; we effectively will\n // ignore the value of \"this\" that the user is trying to use, so\n // let's warn.\n if (newThis !== component && newThis !== null) {\n if (process.env.NODE_ENV !== 'production') {\n warning(\n false,\n 'bind(): React component methods may only be bound to the ' +\n 'component instance. See %s',\n componentName\n );\n }\n } else if (!args.length) {\n if (process.env.NODE_ENV !== 'production') {\n warning(\n false,\n 'bind(): You are binding a component method to the component. ' +\n 'React does this for you automatically in a high-performance ' +\n 'way, so you can safely remove this call. See %s',\n componentName\n );\n }\n return boundMethod;\n }\n var reboundMethod = _bind.apply(boundMethod, arguments);\n reboundMethod.__reactBoundContext = component;\n reboundMethod.__reactBoundMethod = method;\n reboundMethod.__reactBoundArguments = args;\n return reboundMethod;\n };\n }\n return boundMethod;\n }\n\n /**\n * Binds all auto-bound methods in a component.\n *\n * @param {object} component Component whose method is going to be bound.\n */\n function bindAutoBindMethods(component) {\n var pairs = component.__reactAutoBindPairs;\n for (var i = 0; i < pairs.length; i += 2) {\n var autoBindKey = pairs[i];\n var method = pairs[i + 1];\n component[autoBindKey] = bindAutoBindMethod(component, method);\n }\n }\n\n var IsMountedPreMixin = {\n componentDidMount: function() {\n this.__isMounted = true;\n }\n };\n\n var IsMountedPostMixin = {\n componentWillUnmount: function() {\n this.__isMounted = false;\n }\n };\n\n /**\n * Add more to the ReactClass base class. These are all legacy features and\n * therefore not already part of the modern ReactComponent.\n */\n var ReactClassMixin = {\n /**\n * TODO: This will be deprecated because state should always keep a consistent\n * type signature and the only use case for this, is to avoid that.\n */\n replaceState: function(newState, callback) {\n this.updater.enqueueReplaceState(this, newState, callback);\n },\n\n /**\n * Checks whether or not this composite component is mounted.\n * @return {boolean} True if mounted, false otherwise.\n * @protected\n * @final\n */\n isMounted: function() {\n if (process.env.NODE_ENV !== 'production') {\n warning(\n this.__didWarnIsMounted,\n '%s: isMounted is deprecated. Instead, make sure to clean up ' +\n 'subscriptions and pending requests in componentWillUnmount to ' +\n 'prevent memory leaks.',\n (this.constructor && this.constructor.displayName) ||\n this.name ||\n 'Component'\n );\n this.__didWarnIsMounted = true;\n }\n return !!this.__isMounted;\n }\n };\n\n var ReactClassComponent = function() {};\n _assign(\n ReactClassComponent.prototype,\n ReactComponent.prototype,\n ReactClassMixin\n );\n\n /**\n * Creates a composite component class given a class specification.\n * See https://facebook.github.io/react/docs/top-level-api.html#react.createclass\n *\n * @param {object} spec Class specification (which must define `render`).\n * @return {function} Component constructor function.\n * @public\n */\n function createClass(spec) {\n // To keep our warnings more understandable, we'll use a little hack here to\n // ensure that Constructor.name !== 'Constructor'. This makes sure we don't\n // unnecessarily identify a class without displayName as 'Constructor'.\n var Constructor = identity(function(props, context, updater) {\n // This constructor gets overridden by mocks. The argument is used\n // by mocks to assert on what gets mounted.\n\n if (process.env.NODE_ENV !== 'production') {\n warning(\n this instanceof Constructor,\n 'Something is calling a React component directly. Use a factory or ' +\n 'JSX instead. See: https://fb.me/react-legacyfactory'\n );\n }\n\n // Wire up auto-binding\n if (this.__reactAutoBindPairs.length) {\n bindAutoBindMethods(this);\n }\n\n this.props = props;\n this.context = context;\n this.refs = emptyObject;\n this.updater = updater || ReactNoopUpdateQueue;\n\n this.state = null;\n\n // ReactClasses doesn't have constructors. Instead, they use the\n // getInitialState and componentWillMount methods for initialization.\n\n var initialState = this.getInitialState ? this.getInitialState() : null;\n if (process.env.NODE_ENV !== 'production') {\n // We allow auto-mocks to proceed as if they're returning null.\n if (\n initialState === undefined &&\n this.getInitialState._isMockFunction\n ) {\n // This is probably bad practice. Consider warning here and\n // deprecating this convenience.\n initialState = null;\n }\n }\n _invariant(\n typeof initialState === 'object' && !Array.isArray(initialState),\n '%s.getInitialState(): must return an object or null',\n Constructor.displayName || 'ReactCompositeComponent'\n );\n\n this.state = initialState;\n });\n Constructor.prototype = new ReactClassComponent();\n Constructor.prototype.constructor = Constructor;\n Constructor.prototype.__reactAutoBindPairs = [];\n\n injectedMixins.forEach(mixSpecIntoComponent.bind(null, Constructor));\n\n mixSpecIntoComponent(Constructor, IsMountedPreMixin);\n mixSpecIntoComponent(Constructor, spec);\n mixSpecIntoComponent(Constructor, IsMountedPostMixin);\n\n // Initialize the defaultProps property after all mixins have been merged.\n if (Constructor.getDefaultProps) {\n Constructor.defaultProps = Constructor.getDefaultProps();\n }\n\n if (process.env.NODE_ENV !== 'production') {\n // This is a tag to indicate that the use of these method names is ok,\n // since it's used with createClass. If it's not, then it's likely a\n // mistake so we'll warn you to use the static property, property\n // initializer or constructor respectively.\n if (Constructor.getDefaultProps) {\n Constructor.getDefaultProps.isReactClassApproved = {};\n }\n if (Constructor.prototype.getInitialState) {\n Constructor.prototype.getInitialState.isReactClassApproved = {};\n }\n }\n\n _invariant(\n Constructor.prototype.render,\n 'createClass(...): Class specification must implement a `render` method.'\n );\n\n if (process.env.NODE_ENV !== 'production') {\n warning(\n !Constructor.prototype.componentShouldUpdate,\n '%s has a method called ' +\n 'componentShouldUpdate(). Did you mean shouldComponentUpdate()? ' +\n 'The name is phrased as a question because the function is ' +\n 'expected to return a value.',\n spec.displayName || 'A component'\n );\n warning(\n !Constructor.prototype.componentWillRecieveProps,\n '%s has a method called ' +\n 'componentWillRecieveProps(). Did you mean componentWillReceiveProps()?',\n spec.displayName || 'A component'\n );\n }\n\n // Reduce time spent doing lookups by setting these on the prototype.\n for (var methodName in ReactClassInterface) {\n if (!Constructor.prototype[methodName]) {\n Constructor.prototype[methodName] = null;\n }\n }\n\n return Constructor;\n }\n\n return createClass;\n}\n\nmodule.exports = factory;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/create-react-class/factory.js\n// module id = 14\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar emptyObject = {};\n\nif (process.env.NODE_ENV !== 'production') {\n Object.freeze(emptyObject);\n}\n\nmodule.exports = emptyObject;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/fbjs/lib/emptyObject.js\n// module id = 15\n// module chunks = 0","function toObj(source) {\n return Object.keys(source).reduce(function (output, key) {\n var parentKey = key.match(/[^\\[]*/i);\n var paths = key.match(/\\[.*?\\]/g) || [];\n paths = [parentKey[0]].concat(paths).map(function (key) {\n return key.replace(/\\[|\\]/g, '');\n });\n var currentPath = output;\n while (paths.length) {\n var pathKey = paths.shift();\n\n if (pathKey in currentPath) {\n currentPath = currentPath[pathKey];\n } else {\n currentPath[pathKey] = paths.length ? isNaN(paths[0]) ? {} : [] : source[key];\n currentPath = currentPath[pathKey];\n }\n }\n\n return output;\n }, {});\n}\n\nfunction fromObj(obj) {\n function recur(newObj, propName, currVal) {\n if (Array.isArray(currVal) || Object.prototype.toString.call(currVal) === '[object Object]') {\n Object.keys(currVal).forEach(function(v) {\n recur(newObj, propName + \"[\" + v + \"]\", currVal[v]);\n });\n return newObj;\n }\n\n newObj[propName] = currVal;\n return newObj;\n }\n\n var keys = Object.keys(obj);\n return keys.reduce(function(newObj, propName) {\n return recur(newObj, propName, obj[propName]);\n }, {});\n}\n\nmodule.exports = {\n fromObj: fromObj,\n toObj: toObj\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/form-data-to-object/index.js\n// module id = 16\n// module chunks = 0","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/object-assign/index.js\n// module id = 17\n// module chunks = 0","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\n'use strict';\n\nif (process.env.NODE_ENV !== 'production') {\n var invariant = require('fbjs/lib/invariant');\n var warning = require('fbjs/lib/warning');\n var ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n var loggedTypeFailures = {};\n}\n\n/**\n * Assert that the values match with the type specs.\n * Error messages are memorized and will only be shown once.\n *\n * @param {object} typeSpecs Map of name to a ReactPropType\n * @param {object} values Runtime values that need to be type-checked\n * @param {string} location e.g. \"prop\", \"context\", \"child context\"\n * @param {string} componentName Name of the component for error messages.\n * @param {?Function} getStack Returns the component stack.\n * @private\n */\nfunction checkPropTypes(typeSpecs, values, location, componentName, getStack) {\n if (process.env.NODE_ENV !== 'production') {\n for (var typeSpecName in typeSpecs) {\n if (typeSpecs.hasOwnProperty(typeSpecName)) {\n var error;\n // Prop type validation may throw. In case they do, we don't want to\n // fail the render phase where it didn't fail before. So we log it.\n // After these have been cleaned up, we'll let them throw.\n try {\n // This is intentionally an invariant that gets caught. It's the same\n // behavior as without this statement except with a better message.\n invariant(typeof typeSpecs[typeSpecName] === 'function', '%s: %s type `%s` is invalid; it must be a function, usually from ' + 'React.PropTypes.', componentName || 'React class', location, typeSpecName);\n error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret);\n } catch (ex) {\n error = ex;\n }\n warning(!error || error instanceof Error, '%s: type specification of %s `%s` is invalid; the type checker ' + 'function must return `null` or an `Error` but returned a %s. ' + 'You may have forgotten to pass an argument to the type checker ' + 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' + 'shape all require an argument).', componentName || 'React class', location, typeSpecName, typeof error);\n if (error instanceof Error && !(error.message in loggedTypeFailures)) {\n // Only monitor this failure once because there tends to be a lot of the\n // same error.\n loggedTypeFailures[error.message] = true;\n\n var stack = getStack ? getStack() : '';\n\n warning(false, 'Failed %s type: %s%s', location, error.message, stack != null ? stack : '');\n }\n }\n }\n }\n}\n\nmodule.exports = checkPropTypes;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/prop-types/checkPropTypes.js\n// module id = 18\n// module chunks = 0","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\n'use strict';\n\nvar emptyFunction = require('fbjs/lib/emptyFunction');\nvar invariant = require('fbjs/lib/invariant');\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n invariant(\n false,\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim\n };\n\n ReactPropTypes.checkPropTypes = emptyFunction;\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/prop-types/factoryWithThrowingShims.js\n// module id = 19\n// module chunks = 0","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\n'use strict';\n\nvar emptyFunction = require('fbjs/lib/emptyFunction');\nvar invariant = require('fbjs/lib/invariant');\nvar warning = require('fbjs/lib/warning');\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\nvar checkPropTypes = require('./checkPropTypes');\n\nmodule.exports = function(isValidElement, throwOnDirectAccess) {\n /* global Symbol */\n var ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\n var FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec.\n\n /**\n * Returns the iterator method function contained on the iterable object.\n *\n * Be sure to invoke the function with the iterable as context:\n *\n * var iteratorFn = getIteratorFn(myIterable);\n * if (iteratorFn) {\n * var iterator = iteratorFn.call(myIterable);\n * ...\n * }\n *\n * @param {?object} maybeIterable\n * @return {?function}\n */\n function getIteratorFn(maybeIterable) {\n var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);\n if (typeof iteratorFn === 'function') {\n return iteratorFn;\n }\n }\n\n /**\n * Collection of methods that allow declaration and validation of props that are\n * supplied to React components. Example usage:\n *\n * var Props = require('ReactPropTypes');\n * var MyArticle = React.createClass({\n * propTypes: {\n * // An optional string prop named \"description\".\n * description: Props.string,\n *\n * // A required enum prop named \"category\".\n * category: Props.oneOf(['News','Photos']).isRequired,\n *\n * // A prop named \"dialog\" that requires an instance of Dialog.\n * dialog: Props.instanceOf(Dialog).isRequired\n * },\n * render: function() { ... }\n * });\n *\n * A more formal specification of how these methods are used:\n *\n * type := array|bool|func|object|number|string|oneOf([...])|instanceOf(...)\n * decl := ReactPropTypes.{type}(.isRequired)?\n *\n * Each and every declaration produces a function with the same signature. This\n * allows the creation of custom validation functions. For example:\n *\n * var MyLink = React.createClass({\n * propTypes: {\n * // An optional string or URI prop named \"href\".\n * href: function(props, propName, componentName) {\n * var propValue = props[propName];\n * if (propValue != null && typeof propValue !== 'string' &&\n * !(propValue instanceof URI)) {\n * return new Error(\n * 'Expected a string or an URI for ' + propName + ' in ' +\n * componentName\n * );\n * }\n * }\n * },\n * render: function() {...}\n * });\n *\n * @internal\n */\n\n var ANONYMOUS = '<>';\n\n // Important!\n // Keep this list in sync with production version in `./factoryWithThrowingShims.js`.\n var ReactPropTypes = {\n array: createPrimitiveTypeChecker('array'),\n bool: createPrimitiveTypeChecker('boolean'),\n func: createPrimitiveTypeChecker('function'),\n number: createPrimitiveTypeChecker('number'),\n object: createPrimitiveTypeChecker('object'),\n string: createPrimitiveTypeChecker('string'),\n symbol: createPrimitiveTypeChecker('symbol'),\n\n any: createAnyTypeChecker(),\n arrayOf: createArrayOfTypeChecker,\n element: createElementTypeChecker(),\n instanceOf: createInstanceTypeChecker,\n node: createNodeChecker(),\n objectOf: createObjectOfTypeChecker,\n oneOf: createEnumTypeChecker,\n oneOfType: createUnionTypeChecker,\n shape: createShapeTypeChecker\n };\n\n /**\n * inlined Object.is polyfill to avoid requiring consumers ship their own\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n */\n /*eslint-disable no-self-compare*/\n function is(x, y) {\n // SameValue algorithm\n if (x === y) {\n // Steps 1-5, 7-10\n // Steps 6.b-6.e: +0 != -0\n return x !== 0 || 1 / x === 1 / y;\n } else {\n // Step 6.a: NaN == NaN\n return x !== x && y !== y;\n }\n }\n /*eslint-enable no-self-compare*/\n\n /**\n * We use an Error-like object for backward compatibility as people may call\n * PropTypes directly and inspect their output. However, we don't use real\n * Errors anymore. We don't inspect their stack anyway, and creating them\n * is prohibitively expensive if they are created too often, such as what\n * happens in oneOfType() for any type before the one that matched.\n */\n function PropTypeError(message) {\n this.message = message;\n this.stack = '';\n }\n // Make `instanceof Error` still work for returned errors.\n PropTypeError.prototype = Error.prototype;\n\n function createChainableTypeChecker(validate) {\n if (process.env.NODE_ENV !== 'production') {\n var manualPropTypeCallCache = {};\n var manualPropTypeWarningCount = 0;\n }\n function checkType(isRequired, props, propName, componentName, location, propFullName, secret) {\n componentName = componentName || ANONYMOUS;\n propFullName = propFullName || propName;\n\n if (secret !== ReactPropTypesSecret) {\n if (throwOnDirectAccess) {\n // New behavior only for users of `prop-types` package\n invariant(\n false,\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use `PropTypes.checkPropTypes()` to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n } else if (process.env.NODE_ENV !== 'production' && typeof console !== 'undefined') {\n // Old behavior for people using React.PropTypes\n var cacheKey = componentName + ':' + propName;\n if (\n !manualPropTypeCallCache[cacheKey] &&\n // Avoid spamming the console because they are often not actionable except for lib authors\n manualPropTypeWarningCount < 3\n ) {\n warning(\n false,\n 'You are manually calling a React.PropTypes validation ' +\n 'function for the `%s` prop on `%s`. This is deprecated ' +\n 'and will throw in the standalone `prop-types` package. ' +\n 'You may be seeing this warning due to a third-party PropTypes ' +\n 'library. See https://fb.me/react-warning-dont-call-proptypes ' + 'for details.',\n propFullName,\n componentName\n );\n manualPropTypeCallCache[cacheKey] = true;\n manualPropTypeWarningCount++;\n }\n }\n }\n if (props[propName] == null) {\n if (isRequired) {\n if (props[propName] === null) {\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required ' + ('in `' + componentName + '`, but its value is `null`.'));\n }\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required in ' + ('`' + componentName + '`, but its value is `undefined`.'));\n }\n return null;\n } else {\n return validate(props, propName, componentName, location, propFullName);\n }\n }\n\n var chainedCheckType = checkType.bind(null, false);\n chainedCheckType.isRequired = checkType.bind(null, true);\n\n return chainedCheckType;\n }\n\n function createPrimitiveTypeChecker(expectedType) {\n function validate(props, propName, componentName, location, propFullName, secret) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== expectedType) {\n // `propValue` being instance of, say, date/regexp, pass the 'object'\n // check, but we can offer a more precise error message here rather than\n // 'of type `object`'.\n var preciseType = getPreciseType(propValue);\n\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + preciseType + '` supplied to `' + componentName + '`, expected ') + ('`' + expectedType + '`.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createAnyTypeChecker() {\n return createChainableTypeChecker(emptyFunction.thatReturnsNull);\n }\n\n function createArrayOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside arrayOf.');\n }\n var propValue = props[propName];\n if (!Array.isArray(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an array.'));\n }\n for (var i = 0; i < propValue.length; i++) {\n var error = typeChecker(propValue, i, componentName, location, propFullName + '[' + i + ']', ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createElementTypeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n if (!isValidElement(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createInstanceTypeChecker(expectedClass) {\n function validate(props, propName, componentName, location, propFullName) {\n if (!(props[propName] instanceof expectedClass)) {\n var expectedClassName = expectedClass.name || ANONYMOUS;\n var actualClassName = getClassName(props[propName]);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + actualClassName + '` supplied to `' + componentName + '`, expected ') + ('instance of `' + expectedClassName + '`.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createEnumTypeChecker(expectedValues) {\n if (!Array.isArray(expectedValues)) {\n process.env.NODE_ENV !== 'production' ? warning(false, 'Invalid argument supplied to oneOf, expected an instance of array.') : void 0;\n return emptyFunction.thatReturnsNull;\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n for (var i = 0; i < expectedValues.length; i++) {\n if (is(propValue, expectedValues[i])) {\n return null;\n }\n }\n\n var valuesString = JSON.stringify(expectedValues);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of value `' + propValue + '` ' + ('supplied to `' + componentName + '`, expected one of ' + valuesString + '.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createObjectOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside objectOf.');\n }\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an object.'));\n }\n for (var key in propValue) {\n if (propValue.hasOwnProperty(key)) {\n var error = typeChecker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createUnionTypeChecker(arrayOfTypeCheckers) {\n if (!Array.isArray(arrayOfTypeCheckers)) {\n process.env.NODE_ENV !== 'production' ? warning(false, 'Invalid argument supplied to oneOfType, expected an instance of array.') : void 0;\n return emptyFunction.thatReturnsNull;\n }\n\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n if (typeof checker !== 'function') {\n warning(\n false,\n 'Invalid argument supplid to oneOfType. Expected an array of check functions, but ' +\n 'received %s at index %s.',\n getPostfixForTypeWarning(checker),\n i\n );\n return emptyFunction.thatReturnsNull;\n }\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n if (checker(props, propName, componentName, location, propFullName, ReactPropTypesSecret) == null) {\n return null;\n }\n }\n\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createNodeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n if (!isNode(props[propName])) {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`, expected a ReactNode.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n for (var key in shapeTypes) {\n var checker = shapeTypes[key];\n if (!checker) {\n continue;\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function isNode(propValue) {\n switch (typeof propValue) {\n case 'number':\n case 'string':\n case 'undefined':\n return true;\n case 'boolean':\n return !propValue;\n case 'object':\n if (Array.isArray(propValue)) {\n return propValue.every(isNode);\n }\n if (propValue === null || isValidElement(propValue)) {\n return true;\n }\n\n var iteratorFn = getIteratorFn(propValue);\n if (iteratorFn) {\n var iterator = iteratorFn.call(propValue);\n var step;\n if (iteratorFn !== propValue.entries) {\n while (!(step = iterator.next()).done) {\n if (!isNode(step.value)) {\n return false;\n }\n }\n } else {\n // Iterator will provide entry [k,v] tuples rather than values.\n while (!(step = iterator.next()).done) {\n var entry = step.value;\n if (entry) {\n if (!isNode(entry[1])) {\n return false;\n }\n }\n }\n }\n } else {\n return false;\n }\n\n return true;\n default:\n return false;\n }\n }\n\n function isSymbol(propType, propValue) {\n // Native Symbol.\n if (propType === 'symbol') {\n return true;\n }\n\n // 19.4.3.5 Symbol.prototype[@@toStringTag] === 'Symbol'\n if (propValue['@@toStringTag'] === 'Symbol') {\n return true;\n }\n\n // Fallback for non-spec compliant Symbols which are polyfilled.\n if (typeof Symbol === 'function' && propValue instanceof Symbol) {\n return true;\n }\n\n return false;\n }\n\n // Equivalent of `typeof` but with special handling for array and regexp.\n function getPropType(propValue) {\n var propType = typeof propValue;\n if (Array.isArray(propValue)) {\n return 'array';\n }\n if (propValue instanceof RegExp) {\n // Old webkits (at least until Android 4.0) return 'function' rather than\n // 'object' for typeof a RegExp. We'll normalize this here so that /bla/\n // passes PropTypes.object.\n return 'object';\n }\n if (isSymbol(propType, propValue)) {\n return 'symbol';\n }\n return propType;\n }\n\n // This handles more types than `getPropType`. Only used for error messages.\n // See `createPrimitiveTypeChecker`.\n function getPreciseType(propValue) {\n if (typeof propValue === 'undefined' || propValue === null) {\n return '' + propValue;\n }\n var propType = getPropType(propValue);\n if (propType === 'object') {\n if (propValue instanceof Date) {\n return 'date';\n } else if (propValue instanceof RegExp) {\n return 'regexp';\n }\n }\n return propType;\n }\n\n // Returns a string that is postfixed to a warning about an invalid type.\n // For example, \"undefined\" or \"of type array\"\n function getPostfixForTypeWarning(value) {\n var type = getPreciseType(value);\n switch (type) {\n case 'array':\n case 'object':\n return 'an ' + type;\n case 'boolean':\n case 'date':\n case 'regexp':\n return 'a ' + type;\n default:\n return type;\n }\n }\n\n // Returns class name of the object, if any.\n function getClassName(propValue) {\n if (!propValue.constructor || !propValue.constructor.name) {\n return ANONYMOUS;\n }\n return propValue.constructor.name;\n }\n\n ReactPropTypes.checkPropTypes = checkPropTypes;\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/prop-types/factoryWithTypeCheckers.js\n// module id = 20\n// module chunks = 0"],"sourceRoot":""} \ No newline at end of file diff --git a/src/Mixin.js b/src/Mixin.js index b8be8be2..105d3e90 100644 --- a/src/Mixin.js +++ b/src/Mixin.js @@ -36,7 +36,7 @@ module.exports = { return { _value: this.props.value, _isRequired: false, - _isValid: true, + _isValid: !this.props.required, _isPristine: true, _pristineValue: this.props.value, _validationError: [], @@ -55,6 +55,7 @@ module.exports = { }, componentWillMount: function () { + this.canSetValue = true; var configure = function () { this.setValidations(this.props.validations, this.props.required); @@ -103,6 +104,7 @@ module.exports = { // Detach it when component unmounts componentWillUnmount: function () { + this.canSetValue = false; this.context.formsy.detachFromForm(this); //this.props._detachFromForm(this); }, @@ -117,6 +119,9 @@ module.exports = { // We validate after the value has been set setValue: function (value) { + if (!this.canSetValue) { + return + } this.setState({ _value: value, _isPristine: false diff --git a/src/main.js b/src/main.js index 27ee7276..d4b462dc 100644 --- a/src/main.js +++ b/src/main.js @@ -58,7 +58,7 @@ Formsy.Form = createReactClass({ validate: this.validate, isFormDisabled: this.isFormDisabled, isValidValue: (component, value) => { - return this.runValidation(component, value).isValid; + return this.runValidation(component, value).then(info => info.isValid); } } } @@ -68,6 +68,7 @@ Formsy.Form = createReactClass({ // the values of the form and register child inputs componentWillMount: function () { this.inputs = []; + this.cachedValues = {}; }, componentDidMount: function () { @@ -93,6 +94,10 @@ Formsy.Form = createReactClass({ }, + shouldCache: function () { + return this.props.cacheValues; + }, + // Allow resetting to specified data reset: function (data) { this.setFormPristine(true); @@ -155,9 +160,12 @@ Formsy.Form = createReactClass({ setInputValidationErrors: function (errors) { this.inputs.forEach(component => { var name = component.props.name; + if (!(name in errors)) { + return + } var args = [{ - _isValid: !(name in errors), - _validationError: typeof errors[name] === 'string' ? [errors[name]] : errors[name] + _isValid: errors[name] === null, + _validationError: typeof errors[name] === 'string' ? [errors[name]] : errors[name], }]; component.setState.apply(component, args); }); @@ -168,7 +176,7 @@ Formsy.Form = createReactClass({ return !utils.isSame(this.getPristineValues(), this.getCurrentValues()); }, - getPristineValues: function() { + getPristineValues: function() { return this.inputs.reduce((data, component) => { var name = component.props.name; data[name] = component.props.value; @@ -228,19 +236,23 @@ Formsy.Form = createReactClass({ // Trigger onChange if (this.state.canChange) { - this.props.onChange(this.getCurrentValues(), this.isChanged()); + this.props.onChange(this.getModel(), this.isChanged()); } - var validation = this.runValidation(component); - // Run through the validations, split them up and call - // the validator IF there is a value or it is required - component.setState({ - _isValid: validation.isValid, - _isRequired: validation.isRequired, - _validationError: validation.error, - _externalError: null - }, this.validateForm); - + this.runValidation(component) + .then(validation => { + if (!validation) { + return + } + // Run through the validations, split them up and call + // the validator IF there is a value or it is required + component.setState({ + _isValid: validation.isValid, + _isRequired: validation.isRequired, + _validationError: validation.error, + _externalError: null + }, this.validateForm); + }) }, // Checks validation on current value or a passed value @@ -251,51 +263,79 @@ Formsy.Form = createReactClass({ var validationError = component.props.validationError; value = arguments.length === 2 ? value : component.state._value; - var validationResults = this.runRules(value, currentValues, component._validations); - var requiredResults = this.runRules(value, currentValues, component._requiredValidations); - - // the component defines an explicit validate function - if (typeof component.validate === "function") { - validationResults.failed = component.validate() ? [] : ['failed']; + if (this.shouldCache() && this.cachedValues[component.props.name] === value) { + const isValid = component.isValid(); + const isRequired = component.showRequired(); + const error = [component.getErrorMessage()]; + return new Promise(function (resolve, reject) { + resolve({ + isValid: isValid, + isRequired: isRequired, + error: error, + }); + }); } - var isRequired = Object.keys(component._requiredValidations).length ? !!requiredResults.success.length : false; - var isValid = !validationResults.failed.length && !(this.props.validationErrors && this.props.validationErrors[component.props.name]); + this.cachedValues[component.props.name] = value - return { - isRequired: isRequired, - isValid: isRequired ? false : isValid, - error: (function () { + return Promise.all([ + this.runRules(value, currentValues, component._validations), + this.runRules(value, currentValues, component._requiredValidations) + ]) + .then(([validationResults, requiredResults]) => { - if (isValid && !isRequired) { - return emptyArray; - } + let validateComponent = Promise.resolve() - if (validationResults.errors.length) { - return validationResults.errors; + // the component defines an explicit validate function + if (typeof component.validate === "function") { + validateComponent = Promise.resolve(component.validate()).then(validated => { + validationResults.failed = validated ? [] : ['failed']; + }) } - if (this.props.validationErrors && this.props.validationErrors[component.props.name]) { - return typeof this.props.validationErrors[component.props.name] === 'string' ? [this.props.validationErrors[component.props.name]] : this.props.validationErrors[component.props.name]; - } - - if (isRequired) { - var error = validationErrors[requiredResults.success[0]]; - return error ? [error] : null; - } - - if (validationResults.failed.length) { - return validationResults.failed.map(function(failed) { - return validationErrors[failed] ? validationErrors[failed] : validationError; - }).filter(function(x, pos, arr) { - // Remove duplicates - return arr.indexOf(x) === pos; - }); - } - - }.call(this)) - }; + return validateComponent.then(() => { + if (this.inputs.indexOf(component) < 0) { + return; + } + var isRequired = Object.keys(component._requiredValidations).length ? !!requiredResults.success.length : false; + var isValid = !validationResults.failed.length && !(this.props.validationErrors && this.props.validationErrors[component.props.name]); + + return { + isRequired: isRequired, + isValid: isRequired ? false : isValid, + error: (function () { + + if (isValid && !isRequired) { + return emptyArray; + } + + if (validationResults.errors.length) { + return validationResults.errors; + } + + if (this.props.validationErrors && this.props.validationErrors[component.props.name]) { + return typeof this.props.validationErrors[component.props.name] === 'string' ? [this.props.validationErrors[component.props.name]] : this.props.validationErrors[component.props.name]; + } + + if (isRequired) { + var error = validationErrors[requiredResults.success[0]]; + return error ? [error] : null; + } + + if (validationResults.failed.length) { + return validationResults.failed.map(function(failed) { + return validationErrors[failed] ? validationErrors[failed] : validationError; + }).filter(function(x, pos, arr) { + // Remove duplicates + return arr.indexOf(x) === pos; + }); + } + + }.call(this)) + }; + }) + }) }, runRules: function (value, currentValues, validations) { @@ -305,48 +345,48 @@ Formsy.Form = createReactClass({ failed: [], success: [] }; - if (Object.keys(validations).length) { - Object.keys(validations).forEach(function (validationMethod) { - if (validationRules[validationMethod] && typeof validations[validationMethod] === 'function') { - throw new Error('Formsy does not allow you to override default validations: ' + validationMethod); - } - - if (!validationRules[validationMethod] && typeof validations[validationMethod] !== 'function') { - throw new Error('Formsy does not have the validation rule: ' + validationMethod); - } - - if (typeof validations[validationMethod] === 'function') { - var validation = validations[validationMethod](currentValues, value); - if (typeof validation === 'string') { - results.errors.push(validation); - results.failed.push(validationMethod); - } else if (!validation) { - results.failed.push(validationMethod); - } - return; - - } else if (typeof validations[validationMethod] !== 'function') { - var validation = validationRules[validationMethod](currentValues, value, validations[validationMethod]); - if (typeof validation === 'string') { - results.errors.push(validation); - results.failed.push(validationMethod); - } else if (!validation) { - results.failed.push(validationMethod); - } else { - results.success.push(validationMethod); - } - return; + return Promise.all(Object.keys(validations).map(function (validationMethod) { - } + if (validationRules[validationMethod] && typeof validations[validationMethod] === 'function') { + throw new Error('Formsy does not allow you to override default validations: ' + validationMethod); + } - return results.success.push(validationMethod); + if (!validationRules[validationMethod] && typeof validations[validationMethod] !== 'function') { + throw new Error('Formsy does not have the validation rule: ' + validationMethod); + } - }); - } + if (typeof validations[validationMethod] === 'function') { + return Promise.resolve(validations[validationMethod](currentValues, value)) + .then(validation => { + if (typeof validation === 'string') { + results.errors.push(validation); + results.failed.push(validationMethod); + } else if (!validation) { + results.failed.push(validationMethod); + } + return; + }) + + } else if (typeof validations[validationMethod] !== 'function') { + return Promise.resolve(validationRules[validationMethod](currentValues, value, validations[validationMethod])) + .then(validation => { + if (typeof validation === 'string') { + results.errors.push(validation); + results.failed.push(validationMethod); + } else if (!validation) { + results.failed.push(validationMethod); + } else { + results.success.push(validationMethod); + } + return; + }) + } - return results; + return results.success.push(validationMethod); + })) + .then(() => results) }, // Validate the form by going through all child input components @@ -380,16 +420,21 @@ Formsy.Form = createReactClass({ // Run validation again in case affected by other inputs. The // last component validated will run the onValidationComplete callback this.inputs.forEach((component, index) => { - var validation = this.runValidation(component); - if (validation.isValid && component.state._externalError) { - validation.isValid = false; - } - component.setState({ - _isValid: validation.isValid, - _isRequired: validation.isRequired, - _validationError: validation.error, - _externalError: !validation.isValid && component.state._externalError ? component.state._externalError : null - }, index === this.inputs.length - 1 ? onValidationComplete : null); + this.runValidation(component) + .then(validation => { + if (!validation) { + return + } + if (validation.isValid && component.state._externalError) { + validation.isValid = false; + } + component.setState({ + _isValid: validation.isValid, + _isRequired: validation.isRequired, + _validationError: validation.error, + _externalError: !validation.isValid && component.state._externalError ? component.state._externalError : null + }, index === this.inputs.length - 1 ? onValidationComplete : null); + }) }); // If there are no inputs, set state where form is ready to trigger @@ -438,6 +483,7 @@ Formsy.Form = createReactClass({ preventExternalInvalidation, onSuccess, onError, + cacheValues, ...nonFormsyProps } = this.props;