formsy-react-rails 0.17.0 → 0.18.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: a9b9f999158598ee3f725e81620162b1ed2319e3
4
- data.tar.gz: 872ef6d77ab807af96eaa709816240059d49fa2b
3
+ metadata.gz: 91a63ba45173c5cf1b2595ffd49f6713467d2abf
4
+ data.tar.gz: 6ff6a71b5998b2940544cd486d0ea53b429a0633
5
5
  SHA512:
6
- metadata.gz: dc3a5e601eb89b47245d61b4131535673607417d69dc06f628aed33b96ccee305f69bb9fe56f9841a220bb2bafb9c0e2f6adeff68bd7ee9aeb86279384bb75cd
7
- data.tar.gz: 95e5ae3191cd3ecc436e909d5c99ab1502085777035ba73a3ef515aa366cf0a7be80c589233126d75141108ba1417c02b3ab256f7e098f0b277c7b80bc1cc840
6
+ metadata.gz: 5728fe6c20638bc780d6ef173300ba4723660253f133fabd34d2f8febcf9c91dc3a0a026ce8ea0825c0884897e02a32ec3a31d544017968cebfb554203e7d137
7
+ data.tar.gz: 5000dd0f0088d07ff3d714b08b1d1f8a2fbd31953a959efc62b70b8eb2c4bd66415bb6d6bf0b006569dcb2813de2b4c2e96525c32aac358cbead6479800960f2
data/README.md CHANGED
@@ -1 +1,19 @@
1
- Ruby on Rails gem for [formsy-react](https://github.com/christianalfoni/formsy-react), current version: [0.17.0](https://github.com/christianalfoni/formsy-react/releases/tag/v0.17.0)
1
+ # formsy-react-rails
2
+
3
+ Ruby on Rails gem for [formsy-react](https://github.com/christianalfoni/formsy-react), current version: [0.18.1](https://github.com/christianalfoni/formsy-react/releases/tag/v0.18.1)
4
+
5
+ ## Installation
6
+
7
+ Add this line to your application's Gemfile:
8
+
9
+ ```ruby
10
+ gem 'formsy-react-rails'
11
+ ```
12
+
13
+ And then execute:
14
+
15
+ $ bundle
16
+
17
+ Or install it yourself as:
18
+
19
+ $ gem install formsy-react-rails
@@ -1,7 +1,7 @@
1
1
  module Formsy
2
2
  module React
3
3
  module Rails
4
- VERSION = "0.17.0"
4
+ VERSION = "0.18.1"
5
5
  end
6
6
  end
7
7
  end
@@ -1,2 +1,2 @@
1
- !function(t,i){"object"==typeof exports&&"object"==typeof module?module.exports=i(require("react")):"function"==typeof define&&define.amd?define(["react"],i):"object"==typeof exports?exports.Formsy=i(require("react")):t.Formsy=i(t.react)}(this,function(t){return function(t){function i(r){if(e[r])return e[r].exports;var s=e[r]={exports:{},id:r,loaded:!1};return t[r].call(s.exports,s,s.exports,i),s.loaded=!0,s.exports}var e={};return i.m=t,i.c=e,i.p="",i(0)}([function(t,i,e){(function(i){"use strict";var r=Object.assign||function(t){for(var i=1;i<arguments.length;i++){var e=arguments[i];for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])}return t},s=i.React||e(1),n={},u=e(6),o=e(7),a=e(3),l=e(2),d=e(5),h=e(4),F={};n.Mixin=l,n.HOC=d,n.Decorator=h,n.defaults=function(t){F=t},n.addValidationRule=function(t,i){u[t]=i},n.Form=s.createClass({displayName:"Formsy",getInitialState:function(){return{isValid:!0,isSubmitting:!1,canChange:!1}},getDefaultProps:function(){return{onSuccess:function(){},onError:function(){},onSubmit:function(){},onValidSubmit:function(){},onInvalidSubmit:function(){},onSubmitted:function(){},onValid:function(){},onInvalid:function(){},onChange:function(){},validationErrors:null,preventExternalInvalidation:!1}},childContextTypes:{formsy:s.PropTypes.object},getChildContext:function(){return{formsy:{attachToForm:this.attachToForm,detachFromForm:this.detachFromForm,validate:this.validate,isFormDisabled:this.isFormDisabled,isValidValue:function(t,i){return this.runValidation(t,i).isValid}.bind(this)}}},componentWillMount:function(){this.inputs={},this.model={}},componentDidMount:function(){this.validateForm()},componentWillUpdate:function(){this.prevInputKeys=Object.keys(this.inputs)},componentDidUpdate:function(){this.props.validationErrors&&this.setInputValidationErrors(this.props.validationErrors);var t=Object.keys(this.inputs);a.arraysDiffer(this.prevInputKeys,t)&&this.validateForm()},reset:function(t){this.setFormPristine(!0),this.resetModel(t)},submit:function(t){t&&t.preventDefault(),this.setFormPristine(!1),this.updateModel();var i=this.mapModel();this.props.onSubmit(i,this.resetModel,this.updateInputsWithError),this.state.isValid?this.props.onValidSubmit(i,this.resetModel,this.updateInputsWithError):this.props.onInvalidSubmit(i,this.resetModel,this.updateInputsWithError)},mapModel:function(){return this.props.mapping?this.props.mapping(this.model):o(Object.keys(this.model).reduce(function(t,i){for(var e=i.split("."),r=t;e.length;){var s=e.shift();r=r[s]=e.length?r[s]||{}:this.model[i]}return t}.bind(this),{}))},updateModel:function(){Object.keys(this.inputs).forEach(function(t){var i=this.inputs[t];this.model[t]=i.state._value}.bind(this))},resetModel:function(t){Object.keys(this.inputs).forEach(function(i){t&&t[i]?this.inputs[i].setValue(t[i]):this.inputs[i].resetValue()}.bind(this)),this.validateForm()},setInputValidationErrors:function(t){Object.keys(this.inputs).forEach(function(i,e){var r=this.inputs[i],s=[{_isValid:!(i in t),_validationError:"string"==typeof t[i]?[t[i]]:t[i]}];r.setState.apply(r,s)}.bind(this))},isChanged:function(){return!a.isSame(this.getPristineValues(),this.getCurrentValues())},getPristineValues:function(){var t=this.inputs;return Object.keys(t).reduce(function(i,e){var r=t[e];return i[e]=r.props.value,i},{})},updateInputsWithError:function(t){Object.keys(t).forEach(function(i,e){var r=this.inputs[i];if(!r)throw new Error("You are trying to update an input that does not exist. Verify errors object with input names. "+JSON.stringify(t));var s=[{_isValid:this.props.preventExternalInvalidation||!1,_externalError:"string"==typeof t[i]?[t[i]]:t[i]}];r.setState.apply(r,s)}.bind(this))},isFormDisabled:function(){return this.props.disabled},getCurrentValues:function(){return Object.keys(this.inputs).reduce(function(t,i){var e=this.inputs[i];return t[i]=e.state._value,t}.bind(this),{})},setFormPristine:function(t){var i=this.inputs,e=Object.keys(i);this.setState({_formSubmitted:!t}),e.forEach(function(e,r){var s=i[e];s.setState({_formSubmitted:!t,_isPristine:t})}.bind(this))},validate:function(t){this.state.canChange&&this.props.onChange(this.getCurrentValues(),this.isChanged());var i=this.runValidation(t);t.setState({_isValid:i.isValid,_isRequired:i.isRequired,_validationError:i.error,_externalError:null},this.validateForm)},runValidation:function(t,i){var e=this.getCurrentValues(),r=t.props.validationErrors,s=t.props.validationError;i=2===arguments.length?i:t.state._value;var n=this.runRules(i,e,t._validations),u=this.runRules(i,e,t._requiredValidations);"function"==typeof t.validate&&(n.failed=t.validate()?[]:["failed"]);var o=Object.keys(t._requiredValidations).length?!!u.success.length:!1,a=!(n.failed.length||this.props.validationErrors&&this.props.validationErrors[t.props.name]);return{isRequired:o,isValid:o?!1:a,error:function(){if(a&&!o)return[];if(n.errors.length)return n.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(o){var i=r[u.success[0]];return i?[i]:null}return n.failed.length?n.failed.map(function(t){return r[t]?r[t]:s}).filter(function(t,i,e){return e.indexOf(t)===i}):void 0}.call(this)}},runRules:function(t,i,e){var r={errors:[],failed:[],success:[]};return Object.keys(e).length&&Object.keys(e).forEach(function(s){if(u[s]&&"function"==typeof e[s])throw new Error("Formsy does not allow you to override default validations: "+s);if(!u[s]&&"function"!=typeof e[s])throw new Error("Formsy does not have the validation rule: "+s);if("function"==typeof e[s]){var n=e[s](i,t);return void("string"==typeof n?(r.errors.push(n),r.failed.push(s)):n||r.failed.push(s))}if("function"!=typeof e[s]){var n=u[s](i,t,e[s]);return void("string"==typeof n?(r.errors.push(n),r.failed.push(s)):n?r.success.push(s):r.failed.push(s))}return r.success.push(s)}),r},validateForm:function(){var t,i=this.inputs,e=Object.keys(i),r=function(){t=e.every(function(t){return i[t].state._isValid}.bind(this)),this.setState({isValid:t}),t?this.props.onValid():this.props.onInvalid(),this.setState({canChange:!0})}.bind(this);e.forEach(function(t,s){var n=i[t],u=this.runValidation(n);u.isValid&&n.state._externalError&&(u.isValid=!1),n.setState({_isValid:u.isValid,_isRequired:u.isRequired,_validationError:u.error,_externalError:!u.isValid&&n.state._externalError?n.state._externalError:null},s===e.length-1?r:null)}.bind(this)),!e.length&&this.isMounted()&&this.setState({canChange:!0})},attachToForm:function(t){this.inputs[t.props.name]=t,this.model[t.props.name]=t.state._value,this.validate(t)},detachFromForm:function(t){delete this.inputs[t.props.name],delete this.model[t.props.name],this.validateForm()},render:function(){return s.createElement("form",r({},this.props,{onSubmit:this.submit}),this.props.children)}}),i.exports||i.module||i.define&&i.define.amd||(i.Formsy=n),t.exports=n}).call(i,function(){return this}())},function(i,e){i.exports=t},function(t,i,e){(function(i){"use strict";var r=e(3),s=i.React||e(1),n=function(t){return"string"==typeof t?t.split(/\,(?![^{\[]*[}\]])/g).reduce(function(t,i){var e=i.split(":"),r=e.shift();if(e=e.map(function(t){try{return JSON.parse(t)}catch(i){return t}}),e.length>1)throw new Error("Formsy does not support multiple args on string validations. Use object format of validations instead.");return t[r]=e.length?e[0]:!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:s.PropTypes.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){r.isSame(this.props.value,t.value)||this.setValue(this.props.value),r.isSame(this.props.validations,t.validations)&&r.isSame(this.props.required,t.required)||this.context.formsy.validate(this)},componentWillUnmount:function(){this.context.formsy.detachFromForm(this)},setValidations:function(t,i){this._validations=n(t)||{},this._requiredValidations=i===!0?{isDefaultRequiredValue:!0}:n(i)},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(i,function(){return this}())},function(t,i){"use strict";t.exports={arraysDiffer:function(t,i){var e=!1;return t.length!==i.length?e=!0:t.forEach(function(t,r){this.isSame(t,i[r])||(e=!0)},this),e},objectsDiffer:function(t,i){var e=!1;return Object.keys(t).length!==Object.keys(i).length?e=!0:Object.keys(t).forEach(function(r){this.isSame(t[r],i[r])||(e=!0)},this),e},isSame:function(t,i){return typeof t!=typeof i?!1:Array.isArray(t)?!this.arraysDiffer(t,i):"object"==typeof t&&null!==t&&null!==i?!this.objectsDiffer(t,i):t===i}}},function(t,i,e){(function(i){"use strict";var r=Object.assign||function(t){for(var i=1;i<arguments.length;i++){var e=arguments[i];for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])}return t},s=i.React||e(1),n=e(2);t.exports=function(){return function(t){return s.createClass({mixins:[n],render:function(){return s.createElement(t,r({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))}})}}}).call(i,function(){return this}())},function(t,i,e){(function(i){"use strict";var r=Object.assign||function(t){for(var i=1;i<arguments.length;i++){var e=arguments[i];for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])}return t},s=i.React||e(1),n=e(2);t.exports=function(t){return s.createClass({mixins:[n],render:function(){return s.createElement(t,r({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))}})}}).call(i,function(){return this}())},function(t,i){"use strict";var e=function(t){return null!==t&&void 0!==t},r=function(t){return""===t},s={isDefaultRequiredValue:function(t,i){return void 0===i||""===i},isExisty:function(t,i){return e(i)},matchRegexp:function(t,i,s){return!e(i)||r(i)||s.test(i)},isUndefined:function(t,i){return void 0===i},isEmptyString:function(t,i){return r(i)},isEmail:function(t,i){return s.matchRegexp(t,i,/^((([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(t,i){return s.matchRegexp(t,i,/^(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(t,i){return i===!0},isFalse:function(t,i){return i===!1},isNumeric:function(t,i){return"number"==typeof i?!0:s.matchRegexp(t,i,/^[-+]?(?:\d*[.])?\d+$/)},isAlpha:function(t,i){return s.matchRegexp(t,i,/^[A-Z]+$/i)},isAlphanumeric:function(t,i){return s.matchRegexp(t,i,/^[0-9A-Z]+$/i)},isInt:function(t,i){return s.matchRegexp(t,i,/^(?:[-+]?(?:0|[1-9]\d*))$/)},isFloat:function(t,i){return s.matchRegexp(t,i,/^(?:[-+]?(?:\d+))?(?:\.\d*)?(?:[eE][\+\-]?(?:\d+))?$/)},isWords:function(t,i){return s.matchRegexp(t,i,/^[A-Z\s]+$/i)},isSpecialWords:function(t,i){return s.matchRegexp(t,i,/^[A-Z\s\u00C0-\u017F]+$/i)},isLength:function(t,i,s){return!e(i)||r(i)||i.length===s},equals:function(t,i,s){return!e(i)||r(i)||i==s},equalsField:function(t,i,e){return i==t[e]},maxLength:function(t,i,r){return!e(i)||i.length<=r},minLength:function(t,i,s){return!e(i)||r(i)||i.length>=s}};t.exports=s},function(t,i){t.exports=function(t){return Object.keys(t).reduce(function(i,e){var r=e.match(/[^\[]*/i),s=e.match(/\[.*?\]/g)||[];s=[r[0]].concat(s).map(function(t){return t.replace(/\[|\]/g,"")});for(var n=i;s.length;){var u=s.shift();u in n?n=n[u]:(n[u]=s.length?isNaN(s[0])?{}:[]:t[e],n=n[u])}return i},{})}}])});
1
+ !function(t,i){"object"==typeof exports&&"object"==typeof module?module.exports=i(require("react")):"function"==typeof define&&define.amd?define(["react"],i):"object"==typeof exports?exports.Formsy=i(require("react")):t.Formsy=i(t.react)}(this,function(t){return function(t){function i(r){if(e[r])return e[r].exports;var n=e[r]={exports:{},id:r,loaded:!1};return t[r].call(n.exports,n,n.exports,i),n.loaded=!0,n.exports}var e={};return i.m=t,i.c=e,i.p="",i(0)}([function(t,i,e){(function(i){"use strict";function r(t,i){var e={};for(var r in t)i.indexOf(r)>=0||Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r]);return e}var n=Object.assign||function(t){for(var i=1;i<arguments.length;i++){var e=arguments[i];for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])}return t},s="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol?"symbol":typeof t},u=i.React||e(1),o={},a=e(6),l=e(7),d=e(3),c=e(2),f=e(5),F=e(4),h={},p=[];o.Mixin=c,o.HOC=f,o.Decorator=F,o.defaults=function(t){h=t},o.addValidationRule=function(t,i){a[t]=i},o.Form=u.createClass({displayName:"Formsy",getInitialState:function(){return{isValid:!0,isSubmitting:!1,canChange:!1}},getDefaultProps:function(){return{onSuccess:function(){},onError:function(){},onSubmit:function(){},onValidSubmit:function(){},onInvalidSubmit:function(){},onValid:function(){},onInvalid:function(){},onChange:function(){},validationErrors:null,preventExternalInvalidation:!1}},childContextTypes:{formsy:u.PropTypes.object},getChildContext:function(){var t=this;return{formsy:{attachToForm:this.attachToForm,detachFromForm:this.detachFromForm,validate:this.validate,isFormDisabled:this.isFormDisabled,isValidValue:function(i,e){return t.runValidation(i,e).isValid}}}},componentWillMount:function(){this.inputs=[]},componentDidMount:function(){this.validateForm()},componentWillUpdate:function(){this.prevInputNames=this.inputs.map(function(t){return t.props.name})},componentDidUpdate:function(){this.props.validationErrors&&"object"===s(this.props.validationErrors)&&Object.keys(this.props.validationErrors).length>0&&this.setInputValidationErrors(this.props.validationErrors);var t=this.inputs.map(function(t){return t.props.name});d.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 i=this.getModel();this.props.onSubmit(i,this.resetModel,this.updateInputsWithError),this.state.isValid?this.props.onValidSubmit(i,this.resetModel,this.updateInputsWithError):this.props.onInvalidSubmit(i,this.resetModel,this.updateInputsWithError)},mapModel:function(t){return this.props.mapping?this.props.mapping(t):l.toObj(Object.keys(t).reduce(function(i,e){for(var r=e.split("."),n=i;r.length;){var s=r.shift();n=n[s]=r.length?n[s]||{}:t[e]}return i},{}))},getModel:function(){var t=this.getCurrentValues();return this.mapModel(t)},resetModel:function(t){this.inputs.forEach(function(i){var e=i.props.name;t&&t.hasOwnProperty(e)?i.setValue(t[e]):i.resetValue()}),this.validateForm()},setInputValidationErrors:function(t){this.inputs.forEach(function(i){var e=i.props.name,r=[{_isValid:!(e in t),_validationError:"string"==typeof t[e]?[t[e]]:t[e]}];i.setState.apply(i,r)})},isChanged:function(){return!d.isSame(this.getPristineValues(),this.getCurrentValues())},getPristineValues:function(){return this.inputs.reduce(function(t,i){var e=i.props.name;return t[e]=i.props.value,t},{})},updateInputsWithError:function(t){var i=this;Object.keys(t).forEach(function(e,r){var n=d.find(i.inputs,function(t){return t.props.name===e});if(!n)throw new Error("You are trying to update an input that does not exist. Verify errors object with input names. "+JSON.stringify(t));var s=[{_isValid:i.props.preventExternalInvalidation||!1,_externalError:"string"==typeof t[e]?[t[e]]:t[e]}];n.setState.apply(n,s)})},isFormDisabled:function(){return this.props.disabled},getCurrentValues:function(){return this.inputs.reduce(function(t,i){var e=i.props.name;return t[e]=i.state._value,t},{})},setFormPristine:function(t){this.setState({_formSubmitted:!t}),this.inputs.forEach(function(i,e){i.setState({_formSubmitted:!t,_isPristine:t})})},validate:function(t){this.state.canChange&&this.props.onChange(this.getCurrentValues(),this.isChanged());var i=this.runValidation(t);t.setState({_isValid:i.isValid,_isRequired:i.isRequired,_validationError:i.error,_externalError:null},this.validateForm)},runValidation:function(t,i){var e=this.getCurrentValues(),r=t.props.validationErrors,n=t.props.validationError;i=2===arguments.length?i:t.state._value;var s=this.runRules(i,e,t._validations),u=this.runRules(i,e,t._requiredValidations);"function"==typeof t.validate&&(s.failed=t.validate()?[]:["failed"]);var o=Object.keys(t._requiredValidations).length?!!u.success.length:!1,a=!(s.failed.length||this.props.validationErrors&&this.props.validationErrors[t.props.name]);return{isRequired:o,isValid:o?!1:a,error:function(){if(a&&!o)return p;if(s.errors.length)return s.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(o){var i=r[u.success[0]];return i?[i]:null}return s.failed.length?s.failed.map(function(t){return r[t]?r[t]:n}).filter(function(t,i,e){return e.indexOf(t)===i}):void 0}.call(this)}},runRules:function(t,i,e){var r={errors:[],failed:[],success:[]};return Object.keys(e).length&&Object.keys(e).forEach(function(n){if(a[n]&&"function"==typeof e[n])throw new Error("Formsy does not allow you to override default validations: "+n);if(!a[n]&&"function"!=typeof e[n])throw new Error("Formsy does not have the validation rule: "+n);if("function"==typeof e[n]){var s=e[n](i,t);return void("string"==typeof s?(r.errors.push(s),r.failed.push(n)):s||r.failed.push(n))}if("function"!=typeof e[n]){var s=a[n](i,t,e[n]);return void("string"==typeof s?(r.errors.push(s),r.failed.push(n)):s?r.success.push(n):r.failed.push(n))}return r.success.push(n)}),r},validateForm:function(){var t=this,i=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(e,r){var n=t.runValidation(e);n.isValid&&e.state._externalError&&(n.isValid=!1),e.setState({_isValid:n.isValid,_isRequired:n.isRequired,_validationError:n.error,_externalError:!n.isValid&&e.state._externalError?e.state._externalError:null},r===t.inputs.length-1?i:null)}),!this.inputs.length&&this.isMounted()&&this.setState({canChange:!0})},attachToForm:function(t){-1===this.inputs.indexOf(t)&&this.inputs.push(t),this.validate(t)},detachFromForm:function(t){var i=this.inputs.indexOf(t);-1!==i&&(this.inputs=this.inputs.slice(0,i).concat(this.inputs.slice(i+1))),this.validateForm()},render:function(){var t=this.props,i=(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 u.createElement("form",n({},i,{onSubmit:this.submit}),this.props.children)}}),i.exports||i.module||i.define&&i.define.amd||(i.Formsy=o),t.exports=o}).call(i,function(){return this}())},function(i,e){i.exports=t},function(t,i,e){(function(i){"use strict";var r=e(3),n=i.React||e(1),s=function(t){return"string"==typeof t?t.split(/\,(?![^{\[]*[}\]])/g).reduce(function(t,i){var e=i.split(":"),r=e.shift();if(e=e.map(function(t){try{return JSON.parse(t)}catch(i){return t}}),e.length>1)throw new Error("Formsy does not support multiple args on string validations. Use object format of validations instead.");return t[r]=e.length?e[0]:!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:n.PropTypes.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){r.isSame(this.props.value,t.value)||this.setValue(this.props.value),r.isSame(this.props.validations,t.validations)&&r.isSame(this.props.required,t.required)||this.context.formsy.validate(this)},componentWillUnmount:function(){this.context.formsy.detachFromForm(this)},setValidations:function(t,i){this._validations=s(t)||{},this._requiredValidations=i===!0?{isDefaultRequiredValue:!0}:s(i)},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(i,function(){return this}())},function(t,i){"use strict";var e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol?"symbol":typeof t};t.exports={arraysDiffer:function(t,i){var e=!1;return t.length!==i.length?e=!0:t.forEach(function(t,r){this.isSame(t,i[r])||(e=!0)},this),e},objectsDiffer:function(t,i){var e=!1;return Object.keys(t).length!==Object.keys(i).length?e=!0:Object.keys(t).forEach(function(r){this.isSame(t[r],i[r])||(e=!0)},this),e},isSame:function(t,i){return("undefined"==typeof t?"undefined":e(t))!==("undefined"==typeof i?"undefined":e(i))?!1:Array.isArray(t)?!this.arraysDiffer(t,i):"function"==typeof t?t.toString()===i.toString():"object"===("undefined"==typeof t?"undefined":e(t))&&null!==t&&null!==i?!this.objectsDiffer(t,i):t===i},find:function(t,i){for(var e=0,r=t.length;r>e;e++){var n=t[e];if(i(n))return n}return null}}},function(t,i,e){(function(i){"use strict";var r=Object.assign||function(t){for(var i=1;i<arguments.length;i++){var e=arguments[i];for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])}return t},n=i.React||e(1),s=e(2);t.exports=function(){return function(t){return n.createClass({mixins:[s],render:function(){return n.createElement(t,r({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))}})}}}).call(i,function(){return this}())},function(t,i,e){(function(i){"use strict";function r(t){return t.displayName||t.name||("string"==typeof t?t:"Component")}var n=Object.assign||function(t){for(var i=1;i<arguments.length;i++){var e=arguments[i];for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])}return t},s=i.React||e(1),u=e(2);t.exports=function(t){return s.createClass({displayName:"Formsy("+r(t)+")",mixins:[u],render:function(){return s.createElement(t,n({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))}})}}).call(i,function(){return this}())},function(t,i){"use strict";var e=function(t){return null!==t&&void 0!==t},r=function(t){return""===t},n={isDefaultRequiredValue:function(t,i){return void 0===i||""===i},isExisty:function(t,i){return e(i)},matchRegexp:function(t,i,n){return!e(i)||r(i)||n.test(i)},isUndefined:function(t,i){return void 0===i},isEmptyString:function(t,i){return r(i)},isEmail:function(t,i){return n.matchRegexp(t,i,/^((([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(t,i){return n.matchRegexp(t,i,/^(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(t,i){return i===!0},isFalse:function(t,i){return i===!1},isNumeric:function(t,i){return"number"==typeof i?!0:n.matchRegexp(t,i,/^[-+]?(?:\d*[.])?\d+$/)},isAlpha:function(t,i){return n.matchRegexp(t,i,/^[A-Z]+$/i)},isAlphanumeric:function(t,i){return n.matchRegexp(t,i,/^[0-9A-Z]+$/i)},isInt:function(t,i){return n.matchRegexp(t,i,/^(?:[-+]?(?:0|[1-9]\d*))$/)},isFloat:function(t,i){return n.matchRegexp(t,i,/^(?:[-+]?(?:\d+))?(?:\.\d*)?(?:[eE][\+\-]?(?:\d+))?$/)},isWords:function(t,i){return n.matchRegexp(t,i,/^[A-Z\s]+$/i)},isSpecialWords:function(t,i){return n.matchRegexp(t,i,/^[A-Z\s\u00C0-\u017F]+$/i)},isLength:function(t,i,n){return!e(i)||r(i)||i.length===n},equals:function(t,i,n){return!e(i)||r(i)||i==n},equalsField:function(t,i,e){return i==t[e]},maxLength:function(t,i,r){return!e(i)||i.length<=r},minLength:function(t,i,n){return!e(i)||r(i)||i.length>=n}};t.exports=n},function(t,i){function e(t){return Object.keys(t).reduce(function(i,e){var r=e.match(/[^\[]*/i),n=e.match(/\[.*?\]/g)||[];n=[r[0]].concat(n).map(function(t){return t.replace(/\[|\]/g,"")});for(var s=i;n.length;){var u=n.shift();u in s?s=s[u]:(s[u]=n.length?isNaN(n[0])?{}:[]:t[e],s=s[u])}return i},{})}function r(t){function i(t,e,r){return Array.isArray(r)||"[object Object]"===Object.prototype.toString.call(r)?(Object.keys(r).forEach(function(n){i(t,e+"["+n+"]",r[n])}),t):(t[e]=r,t)}var e=Object.keys(t);return e.reduce(function(e,r){return i(e,r,t[r])},{})}t.exports={fromObj:r,toObj:e}}])});
2
2
  //# sourceMappingURL=formsy-react.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///formsy-react.js","webpack:///webpack/bootstrap ccc7697172a5a3985000","webpack:///./src/main.js","webpack:///external \"react\"","webpack:///./src/Mixin.js","webpack:///./src/utils.js","webpack:///./src/Decorator.js","webpack:///./src/HOC.js","webpack:///./src/validationRules.js","webpack:///./~/form-data-to-object/index.js"],"names":["root","factory","exports","module","require","define","amd","this","__WEBPACK_EXTERNAL_MODULE_1__","modules","__webpack_require__","moduleId","installedModules","id","loaded","call","m","c","p","global","_extends","Object","assign","target","i","arguments","length","source","key","prototype","hasOwnProperty","React","Formsy","validationRules","formDataToObject","utils","Mixin","HOC","Decorator","options","defaults","passedOptions","addValidationRule","name","func","Form","createClass","displayName","getInitialState","isValid","isSubmitting","canChange","getDefaultProps","onSuccess","onError","onSubmit","onValidSubmit","onInvalidSubmit","onSubmitted","onValid","onInvalid","onChange","validationErrors","preventExternalInvalidation","childContextTypes","formsy","PropTypes","object","getChildContext","attachToForm","detachFromForm","validate","isFormDisabled","isValidValue","component","value","runValidation","bind","componentWillMount","inputs","model","componentDidMount","validateForm","componentWillUpdate","prevInputKeys","keys","componentDidUpdate","props","setInputValidationErrors","newInputKeys","arraysDiffer","reset","data","setFormPristine","resetModel","submit","event","preventDefault","updateModel","mapModel","updateInputsWithError","state","mapping","reduce","mappedModel","keyArray","split","base","currentKey","shift","forEach","_value","setValue","resetValue","errors","index","args","_isValid","_validationError","setState","apply","isChanged","isSame","getPristineValues","getCurrentValues","Error","JSON","stringify","_externalError","disabled","isPristine","inputKeys","_formSubmitted","_isPristine","validation","_isRequired","isRequired","error","currentValues","validationError","validationResults","runRules","_validations","requiredResults","_requiredValidations","failed","success","map","filter","x","pos","arr","indexOf","validations","results","validationMethod","push","allIsValid","onValidationComplete","every","isMounted","render","createElement","children","convertValidationsToObject","validateMethod","arg","parse","e","_pristineValue","contextTypes","configure","setValidations","required","context","componentWillReceiveProps","nextProps","prevProps","componentWillUnmount","isDefaultRequiredValue","getValue","hasValue","getErrorMessage","messages","getErrorMessages","showRequired","isFormSubmitted","showError","a","b","isDifferent","item","objectsDiffer","Array","isArray","Component","mixins","_isExisty","undefined","isEmpty","values","isExisty","matchRegexp","regexp","test","isUndefined","isEmptyString","isEmail","isUrl","isTrue","isFalse","isNumeric","isAlpha","isAlphanumeric","isInt","isFloat","isWords","isSpecialWords","isLength","equals","eql","equalsField","field","maxLength","minLength","output","parentKey","match","paths","concat","replace","currentPath","pathKey","isNaN"],"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,SAASP,EAAQD,EAASQ,IAEH,SAASS,GAAS,YAE9C,IAAIC,GAAWC,OAAOC,QAAU,SAAUC,GAAU,IAAK,GAAIC,GAAI,EAAGA,EAAIC,UAAUC,OAAQF,IAAK,CAAE,GAAIG,GAASF,UAAUD,EAAI,KAAK,GAAII,KAAOD,GAAcN,OAAOQ,UAAUC,eAAef,KAAKY,EAAQC,KAAQL,EAAOK,GAAOD,EAAOC,IAAY,MAAOL,IE1DpPQ,EAAQZ,EAAOY,OAASrB,EAAQ,GAChCsB,KACAC,EAAkBvB,EAAQ,GAC1BwB,EAAmBxB,EAAQ,GAC3ByB,EAAQzB,EAAQ,GAChB0B,EAAQ1B,EAAQ,GAChB2B,EAAM3B,EAAQ,GACd4B,EAAY5B,EAAQ,GACpB6B,IAEJP,GAAOI,MAAQA,EACfJ,EAAOK,IAAMA,EACbL,EAAOM,UAAYA,EAEnBN,EAAOQ,SAAW,SAAUC,GAC1BF,EAAUE,GAGZT,EAAOU,kBAAoB,SAAUC,EAAMC,GACzCX,EAAgBU,GAAQC,GAG1BZ,EAAOa,KAAOd,EAAMe,aAClBC,YAAa,SACbC,gBAAiB,WACf,OACEC,SAAS,EACTC,cAAc,EACdC,WAAW,IAGfC,gBAAiB,WACf,OACEC,UAAW,aACXC,QAAS,aACTC,SAAU,aACVC,cAAe,aACfC,gBAAiB,aACjBC,YAAa,aACbC,QAAS,aACTC,UAAW,aACXC,SAAU,aACVC,iBAAkB,KAClBC,6BAA6B,IAIjCC,mBACEC,OAAQlC,EAAMmC,UAAUC,QAE1BC,gBAAiB,WACf,OACEH,QACEI,aAAc9D,KAAK8D,aACnBC,eAAgB/D,KAAK+D,eACrBC,SAAUhE,KAAKgE,SACfC,eAAgBjE,KAAKiE,eACrBC,aAAc,SAAUC,EAAWC,GACjC,MAAOpE,MAAKqE,cAAcF,EAAWC,GAAO1B,SAC5C4B,KAAKtE,SAObuE,mBAAoB,WAClBvE,KAAKwE,UACLxE,KAAKyE,UAGPC,kBAAmB,WACjB1E,KAAK2E,gBAGPC,oBAAqB,WAInB5E,KAAK6E,cAAgB/D,OAAOgE,KAAK9E,KAAKwE,SAIxCO,mBAAoB,WAEd/E,KAAKgF,MAAMzB,kBACbvD,KAAKiF,yBAAyBjF,KAAKgF,MAAMzB,iBAG3C,IAAI2B,GAAepE,OAAOgE,KAAK9E,KAAKwE,OAChC5C,GAAMuD,aAAanF,KAAK6E,cAAeK,IACzClF,KAAK2E,gBAMTS,MAAO,SAAUC,GACfrF,KAAKsF,iBAAgB,GACrBtF,KAAKuF,WAAWF,IAIlBG,OAAQ,SAAUC,GAEhBA,GAASA,EAAMC,iBAKf1F,KAAKsF,iBAAgB,GACrBtF,KAAK2F,aACL,IAAIlB,GAAQzE,KAAK4F,UACjB5F,MAAKgF,MAAMhC,SAASyB,EAAOzE,KAAKuF,WAAYvF,KAAK6F,uBACjD7F,KAAK8F,MAAMpD,QAAU1C,KAAKgF,MAAM/B,cAAcwB,EAAOzE,KAAKuF,WAAYvF,KAAK6F,uBAAyB7F,KAAKgF,MAAM9B,gBAAgBuB,EAAOzE,KAAKuF,WAAYvF,KAAK6F,wBAI9JD,SAAU,WACR,MAAI5F,MAAKgF,MAAMe,QACN/F,KAAKgF,MAAMe,QAAQ/F,KAAKyE,OAExB9C,EAAiBb,OAAOgE,KAAK9E,KAAKyE,OAAOuB,OAAO,SAAUC,EAAa5E,GAI5E,IAFA,GAAI6E,GAAW7E,EAAI8E,MAAM,KACrBC,EAAOH,EACJC,EAAS/E,QAAQ,CACtB,GAAIkF,GAAaH,EAASI,OAC1BF,GAAQA,EAAKC,GAAcH,EAAS/E,OAASiF,EAAKC,OAAoBrG,KAAKyE,MAAMpD,GAGnF,MAAO4E,IAEP3B,KAAKtE,YAMX2F,YAAa,WACX7E,OAAOgE,KAAK9E,KAAKwE,QAAQ+B,QAAQ,SAAUnE,GACzC,GAAI+B,GAAYnE,KAAKwE,OAAOpC,EAC5BpC,MAAKyE,MAAMrC,GAAQ+B,EAAU2B,MAAMU,QACnClC,KAAKtE,QAITuF,WAAY,SAAUF,GACpBvE,OAAOgE,KAAK9E,KAAKwE,QAAQ+B,QAAQ,SAAUnE,GACrCiD,GAAQA,EAAKjD,GACfpC,KAAKwE,OAAOpC,GAAMqE,SAASpB,EAAKjD,IAEhCpC,KAAKwE,OAAOpC,GAAMsE,cAEpBpC,KAAKtE,OACPA,KAAK2E,gBAGPM,yBAA0B,SAAU0B,GAClC7F,OAAOgE,KAAK9E,KAAKwE,QAAQ+B,QAAQ,SAAUnE,EAAMwE,GAC/C,GAAIzC,GAAYnE,KAAKwE,OAAOpC,GACxByE,IACFC,WAAY1E,IAAQuE,IACpBI,iBAA0C,gBAAjBJ,GAAOvE,IAAsBuE,EAAOvE,IAASuE,EAAOvE,IAE/E+B,GAAU6C,SAASC,MAAM9C,EAAW0C,IACpCvC,KAAKtE,QAITkH,UAAW,WACT,OAAQtF,EAAMuF,OAAOnH,KAAKoH,oBAAqBpH,KAAKqH,qBAGrDD,kBAAmB,WAClB,GAAI5C,GAASxE,KAAKwE,MAClB,OAAO1D,QAAOgE,KAAKN,GAAQwB,OAAO,SAAUX,EAAMjD,GAChD,GAAI+B,GAAYK,EAAOpC,EAEvB,OADAiD,GAAKjD,GAAQ+B,EAAUa,MAAMZ,MACtBiB,QAOXQ,sBAAuB,SAAUc,GAC/B7F,OAAOgE,KAAK6B,GAAQJ,QAAQ,SAAUnE,EAAMwE,GAC1C,GAAIzC,GAAYnE,KAAKwE,OAAOpC,EAE5B,KAAK+B,EACH,KAAM,IAAImD,OAAM,iGAAmGC,KAAKC,UAAUb,GAEpI,IAAIE,KACFC,SAAU9G,KAAKgF,MAAMxB,8BAA+B,EACpDiE,eAAwC,gBAAjBd,GAAOvE,IAAsBuE,EAAOvE,IAASuE,EAAOvE,IAE7E+B,GAAU6C,SAASC,MAAM9C,EAAW0C,IACpCvC,KAAKtE,QAGTiE,eAAgB,WACd,MAAOjE,MAAKgF,MAAM0C,UAGpBL,iBAAkB,WAChB,MAAOvG,QAAOgE,KAAK9E,KAAKwE,QAAQwB,OAAO,SAAUX,EAAMjD,GACrD,GAAI+B,GAAYnE,KAAKwE,OAAOpC,EAE5B,OADAiD,GAAKjD,GAAQ+B,EAAU2B,MAAMU,OACtBnB,GACPf,KAAKtE,WAGTsF,gBAAiB,SAAUqC,GACzB,GAAInD,GAASxE,KAAKwE,OACdoD,EAAY9G,OAAOgE,KAAKN,EAE5BxE,MAAKgH,UACDa,gBAAiBF,IAKrBC,EAAUrB,QAAQ,SAAUnE,EAAMwE,GAChC,GAAIzC,GAAYK,EAAOpC,EACvB+B,GAAU6C,UACRa,gBAAiBF,EACjBG,YAAaH,KAEfrD,KAAKtE,QAMTgE,SAAU,SAAUG,GAGdnE,KAAK8F,MAAMlD,WACb5C,KAAKgF,MAAM1B,SAAStD,KAAKqH,mBAAoBrH,KAAKkH,YAGpD,IAAIa,GAAa/H,KAAKqE,cAAcF,EAGpCA,GAAU6C,UACRF,SAAUiB,EAAWrF,QACrBsF,YAAaD,EAAWE,WACxBlB,iBAAkBgB,EAAWG,MAC7BT,eAAgB,MACfzH,KAAK2E,eAKVN,cAAe,SAAUF,EAAWC,GAElC,GAAI+D,GAAgBnI,KAAKqH,mBACrB9D,EAAmBY,EAAUa,MAAMzB,iBACnC6E,EAAkBjE,EAAUa,MAAMoD,eACtChE,GAA6B,IAArBlD,UAAUC,OAAeiD,EAAQD,EAAU2B,MAAMU,MAEzD,IAAI6B,GAAoBrI,KAAKsI,SAASlE,EAAO+D,EAAehE,EAAUoE,cAClEC,EAAkBxI,KAAKsI,SAASlE,EAAO+D,EAAehE,EAAUsE,qBAGlC,mBAAvBtE,GAAUH,WACnBqE,EAAkBK,OAASvE,EAAUH,eAAmB,UAG1D,IAAIiE,GAAanH,OAAOgE,KAAKX,EAAUsE,sBAAsBtH,SAAWqH,EAAgBG,QAAQxH,QAAS,EACrGuB,IAAW2F,EAAkBK,OAAOvH,QAAYnB,KAAKgF,MAAMzB,kBAAoBvD,KAAKgF,MAAMzB,iBAAiBY,EAAUa,MAAM5C,MAE/H,QACE6F,WAAYA,EACZvF,QAASuF,GAAa,EAAQvF,EAC9BwF,MAAQ,WAEN,GAAIxF,IAAYuF,EACd,QAGF,IAAII,EAAkB1B,OAAOxF,OAC3B,MAAOkH,GAAkB1B,MAG3B,IAAI3G,KAAKgF,MAAMzB,kBAAoBvD,KAAKgF,MAAMzB,iBAAiBY,EAAUa,MAAM5C,MAC7E,MAAoE,gBAAtDpC,MAAKgF,MAAMzB,iBAAiBY,EAAUa,MAAM5C,OAAsBpC,KAAKgF,MAAMzB,iBAAiBY,EAAUa,MAAM5C,OAASpC,KAAKgF,MAAMzB,iBAAiBY,EAAUa,MAAM5C,KAGnL,IAAI6F,EAAY,CACd,GAAIC,GAAQ3E,EAAiBiF,EAAgBG,QAAQ,GACrD,OAAOT,IAASA,GAAS,KAG3B,MAAIG,GAAkBK,OAAOvH,OACpBkH,EAAkBK,OAAOE,IAAI,SAASF,GAC3C,MAAOnF,GAAiBmF,GAAUnF,EAAiBmF,GAAUN,IAC5DS,OAAO,SAASC,EAAGC,EAAKC,GAEzB,MAAOA,GAAIC,QAAQH,KAAOC,IAL9B,QASAvI,KAAKR,QAKXsI,SAAU,SAAUlE,EAAO+D,EAAee,GAExC,GAAIC,IACFxC,UACA+B,UACAC,WA0CF,OAxCI7H,QAAOgE,KAAKoE,GAAa/H,QAC3BL,OAAOgE,KAAKoE,GAAa3C,QAAQ,SAAU6C,GAEzC,GAAI1H,EAAgB0H,IAA8D,kBAAlCF,GAAYE,GAC1D,KAAM,IAAI9B,OAAM,8DAAgE8B,EAGlF,KAAK1H,EAAgB0H,IAA8D,kBAAlCF,GAAYE,GAC3D,KAAM,IAAI9B,OAAM,6CAA+C8B,EAGjE,IAA6C,kBAAlCF,GAAYE,GAAkC,CACvD,GAAIrB,GAAamB,EAAYE,GAAkBjB,EAAe/D,EAO9D,aAN0B,gBAAf2D,IACToB,EAAQxC,OAAO0C,KAAKtB,GACpBoB,EAAQT,OAAOW,KAAKD,IACVrB,GACVoB,EAAQT,OAAOW,KAAKD,IAIjB,GAA6C,kBAAlCF,GAAYE,GAAkC,CAC9D,GAAIrB,GAAarG,EAAgB0H,GAAkBjB,EAAe/D,EAAO8E,EAAYE,GASrF,aAR0B,gBAAfrB,IACToB,EAAQxC,OAAO0C,KAAKtB,GACpBoB,EAAQT,OAAOW,KAAKD,IACVrB,EAGVoB,EAAQR,QAAQU,KAAKD,GAFrBD,EAAQT,OAAOW,KAAKD,IAQxB,MAAOD,GAAQR,QAAQU,KAAKD,KAKzBD,GAMTxE,aAAc,WACZ,GAAI2E,GACA9E,EAASxE,KAAKwE,OACdoD,EAAY9G,OAAOgE,KAAKN,GAIxB+E,EAAuB,WACzBD,EAAa1B,EAAU4B,MAAM,SAAUpH,GACrC,MAAOoC,GAAOpC,GAAM0D,MAAMgB,UAC1BxC,KAAKtE,OAEPA,KAAKgH,UACHtE,QAAS4G,IAGPA,EACFtJ,KAAKgF,MAAM5B,UAEXpD,KAAKgF,MAAM3B,YAIbrD,KAAKgH,UACHpE,WAAW,KAGb0B,KAAKtE,KAIP4H,GAAUrB,QAAQ,SAAUnE,EAAMwE,GAChC,GAAIzC,GAAYK,EAAOpC,GACnB2F,EAAa/H,KAAKqE,cAAcF,EAChC4D,GAAWrF,SAAWyB,EAAU2B,MAAM2B,iBACxCM,EAAWrF,SAAU,GAEvByB,EAAU6C,UACRF,SAAUiB,EAAWrF,QACrBsF,YAAaD,EAAWE,WACxBlB,iBAAkBgB,EAAWG,MAC7BT,gBAAiBM,EAAWrF,SAAWyB,EAAU2B,MAAM2B,eAAiBtD,EAAU2B,MAAM2B,eAAiB,MACxGb,IAAUgB,EAAUzG,OAAS,EAAIoI,EAAuB,OAC3DjF,KAAKtE,QAIF4H,EAAUzG,QAAUnB,KAAKyJ,aAC5BzJ,KAAKgH,UACHpE,WAAW,KAOjBkB,aAAc,SAAUK,GACtBnE,KAAKwE,OAAOL,EAAUa,MAAM5C,MAAQ+B,EACpCnE,KAAKyE,MAAMN,EAAUa,MAAM5C,MAAQ+B,EAAU2B,MAAMU,OACnDxG,KAAKgE,SAASG,IAKhBJ,eAAgB,SAAUI,SACjBnE,MAAKwE,OAAOL,EAAUa,MAAM5C,YAC5BpC,MAAKyE,MAAMN,EAAUa,MAAM5C,MAClCpC,KAAK2E,gBAEP+E,OAAQ,WAEN,MACElI,GAAAmI,cFgDC,OACA9I,KEjDSb,KAAKgF,OAAOhC,SAAUhD,KAAKwF,SAClCxF,KAAKgF,MAAM4E,aAOfhJ,EAAOjB,SAAYiB,EAAOhB,QAAYgB,EAAOd,QAAWc,EAAOd,OAAOC,MACzEa,EAAOa,OAASA,GAGlB7B,EAAOD,QAAU8B,IFgDajB,KAAKb,EAAU,WAAa,MAAOK,WAI3D,SAASJ,EAAQD,GGlfvBC,EAAAD,QAAAM,GHwfM,SAASL,EAAQD,EAASQ,IAEH,SAASS,GAAS,YI1f/C,IAAIgB,GAAQzB,EAAQ,GAChBqB,EAAQZ,EAAOY,OAASrB,EAAQ,GAEhC0J,EAA6B,SAAUX,GAEzC,MAA2B,gBAAhBA,GAEFA,EAAY/C,MAAM,uBAAuBH,OAAO,SAAUkD,EAAanB,GAC5E,GAAIlB,GAAOkB,EAAW5B,MAAM,KACxB2D,EAAiBjD,EAAKP,OAU1B,IARAO,EAAOA,EAAK+B,IAAI,SAAUmB,GACxB,IACE,MAAOxC,MAAKyC,MAAMD,GAClB,MAAOE,GACP,MAAOF,MAIPlD,EAAK1F,OAAS,EAChB,KAAM,IAAImG,OAAM,yGAIlB,OADA4B,GAAYY,GAAkBjD,EAAK1F,OAAS0F,EAAK,IAAK,EAC/CqC,OAKJA,MAGTtJ,GAAOD,SACL8C,gBAAiB,WACf,OACE+D,OAAQxG,KAAKgF,MAAMZ,MACnB4D,aAAa,EACblB,UAAU,EACVgB,aAAa,EACboC,eAAgBlK,KAAKgF,MAAMZ,MAC3B2C,oBACAU,eAAgB,KAChBI,gBAAgB,IAGpBsC,cACEzG,OAAQlC,EAAMmC,UAAUC,QAE1Bf,gBAAiB,WACf,OACEuF,gBAAiB,GACjB7E,sBAIJgB,mBAAoB,WAClB,GAAI6F,GAAY,WACdpK,KAAKqK,eAAerK,KAAKgF,MAAMkE,YAAalJ,KAAKgF,MAAMsF,UAGvDtK,KAAKuK,QAAQ7G,OAAOI,aAAa9D,OAEjCsE,KAAKtE,KAEP,KAAKA,KAAKgF,MAAM5C,KACd,KAAM,IAAIkF,OAAM,gDAclB8C,MAIFI,0BAA2B,SAAUC,GACnCzK,KAAKqK,eAAeI,EAAUvB,YAAauB,EAAUH,WAIvDvF,mBAAoB,SAAU2F,GAIvB9I,EAAMuF,OAAOnH,KAAKgF,MAAMZ,MAAOsG,EAAUtG,QAC5CpE,KAAKyG,SAASzG,KAAKgF,MAAMZ,OAItBxC,EAAMuF,OAAOnH,KAAKgF,MAAMkE,YAAawB,EAAUxB,cAAiBtH,EAAMuF,OAAOnH,KAAKgF,MAAMsF,SAAUI,EAAUJ,WAC/GtK,KAAKuK,QAAQ7G,OAAOM,SAAShE,OAKjC2K,qBAAsB,WACpB3K,KAAKuK,QAAQ7G,OAAOK,eAAe/D,OAIrCqK,eAAgB,SAAUnB,EAAaoB,GAGrCtK,KAAKuI,aAAesB,EAA2BX,OAC/ClJ,KAAKyI,qBAAuB6B,KAAa,GAAQM,wBAAwB,GAAQf,EAA2BS,IAK9G7D,SAAU,SAAUrC,GAClBpE,KAAKgH,UACHR,OAAQpC,EACR0D,aAAa,GACZ,WACD9H,KAAKuK,QAAQ7G,OAAOM,SAAShE,OAE7BsE,KAAKtE,QAET0G,WAAY,WACV1G,KAAKgH,UACHR,OAAQxG,KAAK8F,MAAMoE,eACnBpC,aAAa,GACZ,WACD9H,KAAKuK,QAAQ7G,OAAOM,SAAShE,SAIjC6K,SAAU,WACR,MAAO7K,MAAK8F,MAAMU,QAEpBsE,SAAU,WACR,MAA6B,KAAtB9K,KAAK8F,MAAMU,QAEpBuE,gBAAiB,WACf,GAAIC,GAAWhL,KAAKiL,kBACpB,OAAOD,GAAS7J,OAAS6J,EAAS,GAAK,MAEzCC,iBAAkB,WAChB,OAAQjL,KAAK0C,WAAa1C,KAAKkL,eAAkBlL,KAAK8F,MAAM2B,gBAAkBzH,KAAK8F,MAAMiB,yBAE3F9C,eAAgB,WACd,MAAOjE,MAAKuK,QAAQ7G,OAAOO,kBAG7BvB,QAAS,WACP,MAAO1C,MAAK8F,MAAMgB,UAEpBa,WAAY,WACV,MAAO3H,MAAK8F,MAAMgC,aAEpBqD,gBAAiB,WACf,MAAOnL,MAAK8F,MAAM+B,gBAEpBI,WAAY,WACV,QAASjI,KAAKgF,MAAMsF,UAEtBY,aAAc,WACZ,MAAOlL,MAAK8F,MAAMkC,aAEpBoD,UAAW,WACT,OAAQpL,KAAKkL,iBAAmBlL,KAAK0C,WAEvCwB,aAAc,SAAUE,GACtB,MAAOpE,MAAKuK,QAAQ7G,OAAOQ,aAAa1D,KAAK,KAAMR,KAAMoE,OJ6f/B5D,KAAKb,EAAU,WAAa,MAAOK,WAI3D,SAASJ,EAAQD,GAEtB,YK9qBDC,GAAOD,SACLwF,aAAc,SAAUkG,EAAGC,GACzB,GAAIC,IAAc,CAUlB,OATIF,GAAElK,SAAWmK,EAAEnK,OACjBoK,GAAc,EAEdF,EAAE9E,QAAQ,SAAUiF,EAAM5E,GACnB5G,KAAKmH,OAAOqE,EAAMF,EAAE1E,MACvB2E,GAAc,IAEfvL,MAEEuL,GAGTE,cAAe,SAAUJ,EAAGC,GAC1B,GAAIC,IAAc,CAUlB,OATIzK,QAAOgE,KAAKuG,GAAGlK,SAAWL,OAAOgE,KAAKwG,GAAGnK,OAC3CoK,GAAc,EAEdzK,OAAOgE,KAAKuG,GAAG9E,QAAQ,SAAUlF,GAC1BrB,KAAKmH,OAAOkE,EAAEhK,GAAMiK,EAAEjK,MACzBkK,GAAc,IAEfvL,MAEEuL,GAGTpE,OAAQ,SAAUkE,EAAGC,GACnB,aAAWD,UAAaC,IACf,EACEI,MAAMC,QAAQN,IACfrL,KAAKmF,aAAakG,EAAGC,GACP,gBAAND,IAAwB,OAANA,GAAoB,OAANC,GACxCtL,KAAKyL,cAAcJ,EAAGC,GAGzBD,IAAMC,KLsrBX,SAAS1L,EAAQD,EAASQ,IAEH,SAASS,GAAS,YAE9C,IAAIC,GAAWC,OAAOC,QAAU,SAAUC,GAAU,IAAK,GAAIC,GAAI,EAAGA,EAAIC,UAAUC,OAAQF,IAAK,CAAE,GAAIG,GAASF,UAAUD,EAAI,KAAK,GAAII,KAAOD,GAAcN,OAAOQ,UAAUC,eAAef,KAAKY,EAAQC,KAAQL,EAAOK,GAAOD,EAAOC,IAAY,MAAOL,IMhuBpPQ,EAAQZ,EAAOY,OAASrB,EAAQ,GAChC0B,EAAQ1B,EAAQ,EACpBP,GAAOD,QAAU,WACf,MAAO,UAAUiM,GACf,MAAOpK,GAAMe,aACXsJ,QAAShK,GACT6H,OAAQ,WACN,MAAOlI,GAAMmI,cAAciC,EAAS/K,GAClCwJ,eAAgBrK,KAAKqK,eACrB5D,SAAUzG,KAAKyG,SACfC,WAAY1G,KAAK0G,WACjBmE,SAAU7K,KAAK6K,SACfC,SAAU9K,KAAK8K,SACfC,gBAAiB/K,KAAK+K,gBACtBE,iBAAkBjL,KAAKiL,iBACvBhH,eAAgBjE,KAAKiE,eACrBvB,QAAS1C,KAAK0C,QACdiF,WAAY3H,KAAK2H,WACjBwD,gBAAiBnL,KAAKmL,gBACtBlD,WAAYjI,KAAKiI,WACjBiD,aAAclL,KAAKkL,aACnBE,UAAWpL,KAAKoL,UAChBlH,aAAclE,KAAKkE,cAChBlE,KAAKgF,eNuuBYxE,KAAKb,EAAU,WAAa,MAAOK,WAI3D,SAASJ,EAAQD,EAASQ,IAEH,SAASS,GAAS,YAE9C,IAAIC,GAAWC,OAAOC,QAAU,SAAUC,GAAU,IAAK,GAAIC,GAAI,EAAGA,EAAIC,UAAUC,OAAQF,IAAK,CAAE,GAAIG,GAASF,UAAUD,EAAI,KAAK,GAAII,KAAOD,GAAcN,OAAOQ,UAAUC,eAAef,KAAKY,EAAQC,KAAQL,EAAOK,GAAOD,EAAOC,IAAY,MAAOL,IOtwBpPQ,EAAQZ,EAAOY,OAASrB,EAAQ,GAChC0B,EAAQ1B,EAAQ,EACpBP,GAAOD,QAAU,SAAUiM,GACzB,MAAOpK,GAAMe,aACXsJ,QAAShK,GACT6H,OAAQ,WACN,MAAOlI,GAAMmI,cAAciC,EAAS/K,GAClCwJ,eAAgBrK,KAAKqK,eACrB5D,SAAUzG,KAAKyG,SACfC,WAAY1G,KAAK0G,WACjBmE,SAAU7K,KAAK6K,SACfC,SAAU9K,KAAK8K,SACfC,gBAAiB/K,KAAK+K,gBACtBE,iBAAkBjL,KAAKiL,iBACvBhH,eAAgBjE,KAAKiE,eACrBvB,QAAS1C,KAAK0C,QACdiF,WAAY3H,KAAK2H,WACjBwD,gBAAiBnL,KAAKmL,gBACtBlD,WAAYjI,KAAKiI,WACjBiD,aAAclL,KAAKkL,aACnBE,UAAWpL,KAAKoL,UAChBlH,aAAclE,KAAKkE,cAChBlE,KAAKgF,cP4wBcxE,KAAKb,EAAU,WAAa,MAAOK,WAI3D,SAASJ,EAAQD,GAEtB,YQxyBD,IAAImM,GAAW,SAAU1H,GACvB,MAAiB,QAAVA,GAA4B2H,SAAV3H,GAGvB4H,EAAU,SAAU5H,GACtB,MAAiB,KAAVA,GAGL8E,GACF0B,uBAAwB,SAAUqB,EAAQ7H,GACxC,MAAiB2H,UAAV3H,GAAiC,KAAVA,GAEhC8H,SAAU,SAAUD,EAAQ7H,GAC1B,MAAO0H,GAAS1H,IAElB+H,YAAa,SAAUF,EAAQ7H,EAAOgI,GACpC,OAAQN,EAAS1H,IAAU4H,EAAQ5H,IAAUgI,EAAOC,KAAKjI,IAE3DkI,YAAa,SAAUL,EAAQ7H,GAC7B,MAAiB2H,UAAV3H,GAETmI,cAAe,SAAUN,EAAQ7H,GAC/B,MAAO4H,GAAQ5H,IAEjBoI,QAAS,SAAUP,EAAQ7H,GACzB,MAAO8E,GAAYiD,YAAYF,EAAQ7H,EAAO,44BAEhDqI,MAAO,SAAUR,EAAQ7H,GACvB,MAAO8E,GAAYiD,YAAYF,EAAQ7H,EAAO,yqCAEhDsI,OAAQ,SAAUT,EAAQ7H,GACxB,MAAOA,MAAU,GAEnBuI,QAAS,SAAUV,EAAQ7H,GACzB,MAAOA,MAAU,GAEnBwI,UAAW,SAAUX,EAAQ7H,GAC3B,MAAqB,gBAAVA,IACF,EAEF8E,EAAYiD,YAAYF,EAAQ7H,EAAO,0BAEhDyI,QAAS,SAAUZ,EAAQ7H,GACzB,MAAO8E,GAAYiD,YAAYF,EAAQ7H,EAAO,cAEhD0I,eAAgB,SAAUb,EAAQ7H,GAChC,MAAO8E,GAAYiD,YAAYF,EAAQ7H,EAAO,iBAEhD2I,MAAO,SAAUd,EAAQ7H,GACvB,MAAO8E,GAAYiD,YAAYF,EAAQ7H,EAAO,8BAEhD4I,QAAS,SAAUf,EAAQ7H,GACzB,MAAO8E,GAAYiD,YAAYF,EAAQ7H,EAAO,yDAEhD6I,QAAS,SAAUhB,EAAQ7H,GACzB,MAAO8E,GAAYiD,YAAYF,EAAQ7H,EAAO,gBAEhD8I,eAAgB,SAAUjB,EAAQ7H,GAChC,MAAO8E,GAAYiD,YAAYF,EAAQ7H,EAAO,6BAEhD+I,SAAU,SAAUlB,EAAQ7H,EAAOjD,GACjC,OAAQ2K,EAAS1H,IAAU4H,EAAQ5H,IAAUA,EAAMjD,SAAWA,GAEhEiM,OAAQ,SAAUnB,EAAQ7H,EAAOiJ,GAC/B,OAAQvB,EAAS1H,IAAU4H,EAAQ5H,IAAUA,GAASiJ,GAExDC,YAAa,SAAUrB,EAAQ7H,EAAOmJ,GACpC,MAAOnJ,IAAS6H,EAAOsB,IAEzBC,UAAW,SAAUvB,EAAQ7H,EAAOjD,GAClC,OAAQ2K,EAAS1H,IAAUA,EAAMjD,QAAUA,GAE7CsM,UAAW,SAAUxB,EAAQ7H,EAAOjD,GAClC,OAAQ2K,EAAS1H,IAAU4H,EAAQ5H,IAAUA,EAAMjD,QAAUA,GAIjEvB,GAAOD,QAAUuJ,GR8yBX,SAAStJ,EAAQD,GS33BvBC,EAAAD,QAAA,SAAAyB,GAIA,MAAAN,QAAAgE,KAAA1D,GAAA4E,OAAA,SAAA0H,EAAArM,GAEA,GAAAsM,GAAAtM,EAAAuM,MAAA,WACAC,EAAAxM,EAAAuM,MAAA,eACAC,IAAAF,EAAA,IAAAG,OAAAD,GAAAjF,IAAA,SAAAvH,GACA,MAAAA,GAAA0M,QAAA,cAIA,KADA,GAAAC,GAAAN,EACAG,EAAA1M,QAAA,CAEA,GAAA8M,GAAAJ,EAAAvH,OAEA2H,KAAAD,GACAA,IAAAC,IAEAD,EAAAC,GAAAJ,EAAA1M,OAAA+M,MAAAL,EAAA,UAAkEzM,EAAAC,GAClE2M,IAAAC,IAKA,MAAAP","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_1__) {\nreturn \n\n\n/** WEBPACK FOOTER **\n ** webpack/universalModuleDefinition\n **/","(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_1__) {\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 React = global.React || __webpack_require__(1);\n\tvar Formsy = {};\n\tvar validationRules = __webpack_require__(6);\n\tvar formDataToObject = __webpack_require__(7);\n\tvar utils = __webpack_require__(3);\n\tvar Mixin = __webpack_require__(2);\n\tvar HOC = __webpack_require__(5);\n\tvar Decorator = __webpack_require__(4);\n\tvar options = {};\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 = React.createClass({\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 onSubmitted: function onSubmitted() {},\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: React.PropTypes.object\n\t },\n\t getChildContext: function getChildContext() {\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 (component, value) {\n\t return this.runValidation(component, value).isValid;\n\t }).bind(this)\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.model = {};\n\t },\n\t\n\t componentDidMount: function componentDidMount() {\n\t this.validateForm();\n\t },\n\t\n\t componentWillUpdate: function componentWillUpdate() {\n\t\n\t // Keep a reference to input keys before form updates,\n\t // to check if inputs has changed after render\n\t this.prevInputKeys = Object.keys(this.inputs);\n\t },\n\t\n\t componentDidUpdate: function componentDidUpdate() {\n\t\n\t if (this.props.validationErrors) {\n\t this.setInputValidationErrors(this.props.validationErrors);\n\t }\n\t\n\t var newInputKeys = Object.keys(this.inputs);\n\t if (utils.arraysDiffer(this.prevInputKeys, newInputKeys)) {\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 this.updateModel();\n\t var model = this.mapModel();\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() {\n\t if (this.props.mapping) {\n\t return this.props.mapping(this.model);\n\t } else {\n\t return formDataToObject(Object.keys(this.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] || {} : this.model[key];\n\t }\n\t\n\t return mappedModel;\n\t }).bind(this), {}));\n\t }\n\t },\n\t\n\t // Goes through all registered components and\n\t // updates the model values\n\t updateModel: function updateModel() {\n\t Object.keys(this.inputs).forEach((function (name) {\n\t var component = this.inputs[name];\n\t this.model[name] = component.state._value;\n\t }).bind(this));\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 Object.keys(this.inputs).forEach((function (name) {\n\t if (data && data[name]) {\n\t this.inputs[name].setValue(data[name]);\n\t } else {\n\t this.inputs[name].resetValue();\n\t }\n\t }).bind(this));\n\t this.validateForm();\n\t },\n\t\n\t setInputValidationErrors: function setInputValidationErrors(errors) {\n\t Object.keys(this.inputs).forEach((function (name, index) {\n\t var component = this.inputs[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 }).bind(this));\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 var inputs = this.inputs;\n\t return Object.keys(inputs).reduce(function (data, name) {\n\t var component = inputs[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 Object.keys(errors).forEach((function (name, index) {\n\t var component = this.inputs[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: this.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 }).bind(this));\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 Object.keys(this.inputs).reduce((function (data, name) {\n\t var component = this.inputs[name];\n\t data[name] = component.state._value;\n\t return data;\n\t }).bind(this), {});\n\t },\n\t\n\t setFormPristine: function setFormPristine(isPristine) {\n\t var inputs = this.inputs;\n\t var inputKeys = Object.keys(inputs);\n\t\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 inputKeys.forEach((function (name, index) {\n\t var component = inputs[name];\n\t component.setState({\n\t _formSubmitted: !isPristine,\n\t _isPristine: isPristine\n\t });\n\t }).bind(this));\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 [];\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 allIsValid;\n\t var inputs = this.inputs;\n\t var inputKeys = Object.keys(inputs);\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 allIsValid = inputKeys.every((function (name) {\n\t return inputs[name].state._isValid;\n\t }).bind(this));\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 inputKeys.forEach((function (name, index) {\n\t var component = inputs[name];\n\t var validation = this.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 === inputKeys.length - 1 ? onValidationComplete : null);\n\t }).bind(this));\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 (!inputKeys.length && this.isMounted()) {\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 this.inputs[component.props.name] = component;\n\t this.model[component.props.name] = component.state._value;\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 delete this.inputs[component.props.name];\n\t delete this.model[component.props.name];\n\t this.validateForm();\n\t },\n\t render: function render() {\n\t\n\t return React.createElement(\n\t 'form',\n\t _extends({}, this.props, { 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\tmodule.exports = __WEBPACK_EXTERNAL_MODULE_1__;\n\n/***/ },\n/* 2 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/* WEBPACK VAR INJECTION */(function(global) {'use strict';\n\t\n\tvar utils = __webpack_require__(3);\n\tvar React = global.React || __webpack_require__(1);\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: React.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/* 3 */\n/***/ function(module, exports) {\n\n\t'use strict';\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 !== typeof b) {\n\t return false;\n\t } else if (Array.isArray(a)) {\n\t return !this.arraysDiffer(a, b);\n\t } else if (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\n/***/ },\n/* 4 */\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__(1);\n\tvar Mixin = __webpack_require__(2);\n\tmodule.exports = function () {\n\t return function (Component) {\n\t return React.createClass({\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/* 5 */\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__(1);\n\tvar Mixin = __webpack_require__(2);\n\tmodule.exports = function (Component) {\n\t return React.createClass({\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/* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }())))\n\n/***/ },\n/* 6 */\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/* 7 */\n/***/ function(module, exports) {\n\n\tmodule.exports = function (source) {\n\t\n\t\n\t // \"foo[0]\"\n\t return Object.keys(source).reduce(function (output, key) {\n\t\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\n\t var currentPath = output;\n\t while (paths.length) {\n\t\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\n\t return output;\n\t\n\t }, {});\n\t\n\t};\n\n\n/***/ }\n/******/ ])\n});\n;\n\n\n/** WEBPACK FOOTER **\n ** formsy-react.js\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/** WEBPACK FOOTER **\n ** webpack/bootstrap ccc7697172a5a3985000\n **/","var React = global.React || require('react');\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 = {};\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 = React.createClass({\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 onSubmitted: function () {},\n onValid: function () {},\n onInvalid: function () {},\n onChange: function () {},\n validationErrors: null,\n preventExternalInvalidation: false\n };\n },\n\n childContextTypes: {\n formsy: React.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: function (component, value) {\n return this.runValidation(component, value).isValid;\n }.bind(this)\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.model = {};\n },\n\n componentDidMount: function () {\n this.validateForm();\n },\n\n componentWillUpdate: function () {\n\n // Keep a reference to input keys before form updates,\n // to check if inputs has changed after render\n this.prevInputKeys = Object.keys(this.inputs);\n\n },\n\n componentDidUpdate: function () {\n\n if (this.props.validationErrors) {\n this.setInputValidationErrors(this.props.validationErrors);\n }\n\n var newInputKeys = Object.keys(this.inputs);\n if (utils.arraysDiffer(this.prevInputKeys, newInputKeys)) {\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 this.updateModel();\n var model = this.mapModel();\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 () {\n if (this.props.mapping) {\n return this.props.mapping(this.model)\n } else {\n return formDataToObject(Object.keys(this.model).reduce(function (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] || {} : this.model[key]);\n }\n\n return mappedModel;\n\n }.bind(this), {}));\n }\n },\n\n // Goes through all registered components and\n // updates the model values\n updateModel: function () {\n Object.keys(this.inputs).forEach(function (name) {\n var component = this.inputs[name];\n this.model[name] = component.state._value;\n }.bind(this));\n },\n\n // Reset each key in the model to the original / initial / specified value\n resetModel: function (data) {\n Object.keys(this.inputs).forEach(function (name) {\n if (data && data[name]) {\n this.inputs[name].setValue(data[name]);\n } else {\n this.inputs[name].resetValue();\n }\n }.bind(this));\n this.validateForm();\n },\n\n setInputValidationErrors: function (errors) {\n Object.keys(this.inputs).forEach(function (name, index) {\n var component = this.inputs[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 }.bind(this));\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 var inputs = this.inputs;\n return Object.keys(inputs).reduce(function (data, name) {\n var component = inputs[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(function (name, index) {\n var component = this.inputs[name];\n\n if (!component) {\n throw new Error('You are trying to update an input that does not exist. 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 }.bind(this));\n },\n\n isFormDisabled: function () {\n return this.props.disabled;\n },\n\n getCurrentValues: function () {\n return Object.keys(this.inputs).reduce(function (data, name) {\n var component = this.inputs[name];\n data[name] = component.state._value;\n return data;\n }.bind(this), {});\n },\n\n setFormPristine: function (isPristine) {\n var inputs = this.inputs;\n var inputKeys = Object.keys(inputs);\n\n this.setState({\n _formSubmitted: !isPristine\n })\n\n // Iterate through each component and set it as pristine\n // or \"dirty\".\n inputKeys.forEach(function (name, index) {\n var component = inputs[name];\n component.setState({\n _formSubmitted: !isPristine,\n _isPristine: isPristine\n });\n }.bind(this));\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 [];\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 var allIsValid;\n var inputs = this.inputs;\n var inputKeys = Object.keys(inputs);\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 allIsValid = inputKeys.every(function (name) {\n return inputs[name].state._isValid;\n }.bind(this));\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 inputKeys.forEach(function (name, index) {\n var component = inputs[name];\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 === inputKeys.length - 1 ? onValidationComplete : null);\n }.bind(this));\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 (!inputKeys.length && this.isMounted()) {\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 this.inputs[component.props.name] = component;\n this.model[component.props.name] = component.state._value;\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 delete this.inputs[component.props.name];\n delete this.model[component.props.name];\n this.validateForm();\n },\n render: function () {\n\n return (\n <form {...this.props} onSubmit={this.submit}>\n {this.props.children}\n </form>\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\n **/","module.exports = __WEBPACK_EXTERNAL_MODULE_1__;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** external \"react\"\n ** module id = 1\n ** module chunks = 0\n **/","var 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: React.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 **/","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)) {\n return !this.arraysDiffer(a, b);\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\n\n\n/** WEBPACK FOOTER **\n ** ./src/utils.js\n **/","var React = global.React || require('react');\nvar Mixin = require('./Mixin.js');\nmodule.exports = function () {\n return function (Component) {\n return React.createClass({\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\n **/","var React = global.React || require('react');\nvar Mixin = require('./Mixin.js');\nmodule.exports = function (Component) {\n return React.createClass({\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/** WEBPACK FOOTER **\n ** ./src/HOC.js\n **/","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 **/","module.exports = function (source) {\n\n\n // \"foo[0]\"\n return Object.keys(source).reduce(function (output, key) {\n\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\n var currentPath = output;\n while (paths.length) {\n\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\n return output;\n\n }, {});\n\n};\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/form-data-to-object/index.js\n ** module id = 7\n ** module chunks = 0\n **/"],"sourceRoot":""}
1
+ {"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///formsy-react.js","webpack:///webpack/bootstrap de6fab39ce2fbdab0e4e","webpack:///./src/main.js","webpack:///external \"react\"","webpack:///./src/Mixin.js","webpack:///./src/utils.js","webpack:///./src/Decorator.js","webpack:///./src/HOC.js","webpack:///./src/validationRules.js","webpack:///./~/form-data-to-object/index.js"],"names":["root","factory","exports","module","require","define","amd","this","__WEBPACK_EXTERNAL_MODULE_1__","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","_typeof","Symbol","iterator","constructor","React","Formsy","validationRules","formDataToObject","utils","Mixin","HOC","Decorator","options","emptyArray","defaults","passedOptions","addValidationRule","name","func","Form","createClass","displayName","getInitialState","isValid","isSubmitting","canChange","getDefaultProps","onSuccess","onError","onSubmit","onValidSubmit","onInvalidSubmit","onValid","onInvalid","onChange","validationErrors","preventExternalInvalidation","childContextTypes","formsy","PropTypes","object","getChildContext","_this","attachToForm","detachFromForm","validate","isFormDisabled","isValidValue","component","value","runValidation","componentWillMount","inputs","componentDidMount","validateForm","componentWillUpdate","prevInputNames","map","props","componentDidUpdate","setInputValidationErrors","newInputNames","arraysDiffer","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","validation","_isRequired","isRequired","error","validationError","validationResults","runRules","_validations","requiredResults","_requiredValidations","failed","success","filter","x","pos","arr","validations","results","validationMethod","push","_this3","onValidationComplete","allIsValid","every","bind","isMounted","componentPos","slice","concat","render","_props","nonFormsyProps","createElement","children","convertValidationsToObject","validateMethod","arg","parse","e","_pristineValue","contextTypes","configure","setValidations","required","context","componentWillReceiveProps","nextProps","prevProps","componentWillUnmount","isDefaultRequiredValue","getValue","hasValue","getErrorMessage","messages","getErrorMessages","showRequired","isFormSubmitted","showError","a","b","isDifferent","item","objectsDiffer","Array","isArray","toString","collection","fn","l","Component","mixins","getDisplayName","_isExisty","undefined","isEmpty","values","isExisty","matchRegexp","regexp","test","isUndefined","isEmptyString","isEmail","isUrl","isTrue","isFalse","isNumeric","isAlpha","isAlphanumeric","isInt","isFloat","isWords","isSpecialWords","isLength","equals","eql","equalsField","field","maxLength","minLength","output","parentKey","match","paths","replace","currentPath","pathKey","isNaN","fromObj","recur","newObj","propName","currVal","v"],"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,SAASP,EAAQD,EAASQ,IAEH,SAASS,GAAS,YAM9C,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,GAJnN,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,EAA4B,kBAAXC,SAAoD,gBAApBA,QAAOC,SAAwB,SAAUhB,GAAO,aAAcA,IAAS,SAAUA,GAAO,MAAOA,IAAyB,kBAAXe,SAAyBf,EAAIiB,cAAgBF,OAAS,eAAkBf,IE5DvOkB,EAAQpB,EAAOoB,OAAS7B,EAAQ,GAChC8B,KACAC,EAAkB/B,EAAQ,GAC1BgC,EAAmBhC,EAAQ,GAC3BiC,EAAQjC,EAAQ,GAChBkC,EAAQlC,EAAQ,GAChBmC,EAAMnC,EAAQ,GACdoC,EAAYpC,EAAQ,GACpBqC,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,EAAMgB,aAClBC,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,OAAQlC,EAAMmC,UAAUC,QAE1BC,gBAAiB,WFiEd,GAAIC,GAAQtE,IEhEb,QACEkE,QACEK,aAAcvE,KAAKuE,aACnBC,eAAgBxE,KAAKwE,eACrBC,SAAUzE,KAAKyE,SACfC,eAAgB1E,KAAK0E,eACrBC,aAAc,SAACC,EAAWC,GACxB,MAAOP,GAAKQ,cAAcF,EAAWC,GAAO1B,YAQpD4B,mBAAoB,WAClB/E,KAAKgF,WAGPC,kBAAmB,WACjBjF,KAAKkF,gBAGPC,oBAAqB,WAGnBnF,KAAKoF,eAAiBpF,KAAKgF,OAAOK,IAAI,SAAAT,GFmEnC,MEnEgDA,GAAUU,MAAMzC,QAGrE0C,mBAAoB,WAEdvF,KAAKsF,MAAMvB,kBAA2D,WAAvCnC,EAAO5B,KAAKsF,MAAMvB,mBAAiC5C,OAAOJ,KAAKf,KAAKsF,MAAMvB,kBAAkBtC,OAAS,GACtIzB,KAAKwF,yBAAyBxF,KAAKsF,MAAMvB,iBAG3C,IAAI0B,GAAgBzF,KAAKgF,OAAOK,IAAI,SAAAT,GFqEjC,MErE8CA,GAAUU,MAAMzC,MAC7DT,GAAMsD,aAAa1F,KAAKoF,eAAgBK,IAC1CzF,KAAKkF,gBAMTS,MAAO,SAAUC,GACf5F,KAAK6F,iBAAgB,GACrB7F,KAAK8F,WAAWF,IAIlBG,OAAQ,SAAUC,GAEhBA,GAASA,EAAMC,iBAFQjG,KAOlB6F,iBAAgB,EACrB,IAAIK,GAAQlG,KAAKmG,UACjBnG,MAAKsF,MAAM7B,SAASyC,EAAOlG,KAAK8F,WAAY9F,KAAKoG,uBACjDpG,KAAKqG,MAAMlD,QAAUnD,KAAKsF,MAAM5B,cAAcwC,EAAOlG,KAAK8F,WAAY9F,KAAKoG,uBAAyBpG,KAAKsF,MAAM3B,gBAAgBuC,EAAOlG,KAAK8F,WAAY9F,KAAKoG,wBAI9JE,SAAU,SAAUJ,GAElB,MAAIlG,MAAKsF,MAAMiB,QACNvG,KAAKsF,MAAMiB,QAAQL,GAEnB/D,EAAiBqE,MAAMrF,OAAOJ,KAAKmF,GAAOO,OAAO,SAACC,EAAa/E,GAIpE,IAFA,GAAIgF,GAAWhF,EAAIiF,MAAM,KACrBC,EAAOH,EACJC,EAASlF,QAAQ,CACtB,GAAIqF,GAAaH,EAASI,OAC1BF,GAAQA,EAAKC,GAAcH,EAASlF,OAASoF,EAAKC,OAAoBZ,EAAMvE,GAG9E,MAAO+E,UAMbP,SAAU,WACR,GAAIa,GAAgBhH,KAAKiH,kBACzB,OAAOjH,MAAKsG,SAASU,IAIvBlB,WAAY,SAAUF,GACpB5F,KAAKgF,OAAOkC,QAAQ,SAAAtC,GAClB,GAAI/B,GAAO+B,EAAUU,MAAMzC,IACvB+C,IAAQA,EAAKvE,eAAewB,GAC9B+B,EAAUuC,SAASvB,EAAK/C,IAExB+B,EAAUwC,eAGdpH,KAAKkF,gBAGPM,yBAA0B,SAAU6B,GAClCrH,KAAKgF,OAAOkC,QAAQ,SAAAtC,GAClB,GAAI/B,GAAO+B,EAAUU,MAAMzC,KACvByE,IACFC,WAAY1E,IAAQwE,IACpBG,iBAA0C,gBAAjBH,GAAOxE,IAAsBwE,EAAOxE,IAASwE,EAAOxE,IAE/E+B,GAAU6C,SAASC,MAAM9C,EAAW0C,MAKxCK,UAAW,WACT,OAAQvF,EAAMwF,OAAO5H,KAAK6H,oBAAqB7H,KAAKiH,qBAGrDY,kBAAmB,WAClB,MAAO7H,MAAKgF,OAAOyB,OAAO,SAACb,EAAMhB,GAC/B,GAAI/B,GAAO+B,EAAUU,MAAMzC,IAE3B,OADA+C,GAAK/C,GAAQ+B,EAAUU,MAAMT,MACtBe,QAOXQ,sBAAuB,SAAUiB,GFoE9B,GAAIS,GAAS9H,IEnEdmB,QAAOJ,KAAKsG,GAAQH,QAAQ,SAACrE,EAAMkF,GACjC,GAAInD,GAAYxC,EAAM4F,KAAKF,EAAK9C,OAAQ,SAAAJ,GFsErC,MEtEkDA,GAAUU,MAAMzC,OAASA,GAC9E,KAAK+B,EACH,KAAM,IAAIqD,OAAM,iGAC8BC,KAAKC,UAAUd,GAE/D,IAAIC,KACFC,SAAUO,EAAKxC,MAAMtB,8BAA+B,EACpDoE,eAAwC,gBAAjBf,GAAOxE,IAAsBwE,EAAOxE,IAASwE,EAAOxE,IAE7E+B,GAAU6C,SAASC,MAAM9C,EAAW0C,MAIxC5C,eAAgB,WACd,MAAO1E,MAAKsF,MAAM+C,UAGpBpB,iBAAkB,WAChB,MAAOjH,MAAKgF,OAAOyB,OAAO,SAACb,EAAMhB,GAC/B,GAAI/B,GAAO+B,EAAUU,MAAMzC,IAE3B,OADA+C,GAAK/C,GAAQ+B,EAAUyB,MAAMiC,OACtB1C,QAIXC,gBAAiB,SAAU0C,GACzBvI,KAAKyH,UACHe,gBAAiBD,IAFkBvI,KAOhCgF,OAAOkC,QAAQ,SAACtC,EAAWmD,GAC9BnD,EAAU6C,UACRe,gBAAiBD,EACjBE,YAAaF,OAQnB9D,SAAU,SAAUG,GAGd5E,KAAKqG,MAAMhD,WACbrD,KAAKsF,MAAMxB,SAAS9D,KAAKiH,mBAAoBjH,KAAK2H,YAGpD,IAAIe,GAAa1I,KAAK8E,cAAcF,EAPPA,GAUnB6C,UACRF,SAAUmB,EAAWvF,QACrBwF,YAAaD,EAAWE,WACxBpB,iBAAkBkB,EAAWG,MAC7BT,eAAgB,MACfpI,KAAKkF,eAKVJ,cAAe,SAAUF,EAAWC,GAElC,GAAImC,GAAgBhH,KAAKiH,mBACrBlD,EAAmBa,EAAUU,MAAMvB,iBACnC+E,EAAkBlE,EAAUU,MAAMwD,eACtCjE,GAA6B,IAArBrD,UAAUC,OAAeoD,EAAQD,EAAUyB,MAAMiC,MAEzD,IAAIS,GAAoB/I,KAAKgJ,SAASnE,EAAOmC,EAAepC,EAAUqE,cAClEC,EAAkBlJ,KAAKgJ,SAASnE,EAAOmC,EAAepC,EAAUuE,qBAGlC,mBAAvBvE,GAAUH,WACnBsE,EAAkBK,OAASxE,EAAUH,eAAmB,UAG1D,IAAImE,GAAazH,OAAOJ,KAAK6D,EAAUuE,sBAAsB1H,SAAWyH,EAAgBG,QAAQ5H,QAAS,EACrG0B,IAAW4F,EAAkBK,OAAO3H,QAAYzB,KAAKsF,MAAMvB,kBAAoB/D,KAAKsF,MAAMvB,iBAAiBa,EAAUU,MAAMzC,MAE/H,QACE+F,WAAYA,EACZzF,QAASyF,GAAa,EAAQzF,EAC9B0F,MAAQ,WAEN,GAAI1F,IAAYyF,EACd,MAAOnG,EAGT,IAAIsG,EAAkB1B,OAAO5F,OAC3B,MAAOsH,GAAkB1B,MAG3B,IAAIrH,KAAKsF,MAAMvB,kBAAoB/D,KAAKsF,MAAMvB,iBAAiBa,EAAUU,MAAMzC,MAC7E,MAAoE,gBAAtD7C,MAAKsF,MAAMvB,iBAAiBa,EAAUU,MAAMzC,OAAsB7C,KAAKsF,MAAMvB,iBAAiBa,EAAUU,MAAMzC,OAAS7C,KAAKsF,MAAMvB,iBAAiBa,EAAUU,MAAMzC,KAGnL,IAAI+F,EAAY,CACd,GAAIC,GAAQ9E,EAAiBmF,EAAgBG,QAAQ,GACrD,OAAOR,IAASA,GAAS,KAG3B,MAAIE,GAAkBK,OAAO3H,OACpBsH,EAAkBK,OAAO/D,IAAI,SAAS+D,GAC3C,MAAOrF,GAAiBqF,GAAUrF,EAAiBqF,GAAUN,IAC5DQ,OAAO,SAASC,EAAGC,EAAKC,GAEzB,MAAOA,GAAIvI,QAAQqI,KAAOC,IAL9B,QASAhJ,KAAKR,QAKXgJ,SAAU,SAAUnE,EAAOmC,EAAe0C,GAExC,GAAIC,IACFtC,UACA+B,UACAC,WA0CF,OAxCIlI,QAAOJ,KAAK2I,GAAajI,QAC3BN,OAAOJ,KAAK2I,GAAaxC,QAAQ,SAAU0C,GAEzC,GAAI1H,EAAgB0H,IAA8D,kBAAlCF,GAAYE,GAC1D,KAAM,IAAI3B,OAAM,8DAAgE2B,EAGlF,KAAK1H,EAAgB0H,IAA8D,kBAAlCF,GAAYE,GAC3D,KAAM,IAAI3B,OAAM,6CAA+C2B,EAGjE,IAA6C,kBAAlCF,GAAYE,GAAkC,CACvD,GAAIlB,GAAagB,EAAYE,GAAkB5C,EAAenC,EAO9D,aAN0B,gBAAf6D,IACTiB,EAAQtC,OAAOwC,KAAKnB,GACpBiB,EAAQP,OAAOS,KAAKD,IACVlB,GACViB,EAAQP,OAAOS,KAAKD,IAIjB,GAA6C,kBAAlCF,GAAYE,GAAkC,CAC9D,GAAIlB,GAAaxG,EAAgB0H,GAAkB5C,EAAenC,EAAO6E,EAAYE,GASrF,aAR0B,gBAAflB,IACTiB,EAAQtC,OAAOwC,KAAKnB,GACpBiB,EAAQP,OAAOS,KAAKD,IACVlB,EAGViB,EAAQN,QAAQQ,KAAKD,GAFrBD,EAAQP,OAAOS,KAAKD,IAQxB,MAAOD,GAAQN,QAAQQ,KAAKD,KAKzBD,GAMTzE,aAAc,WFgEX,GAAI4E,GAAS9J,KE5DV+J,EAAuB,WACzB,GAAIC,GAAahK,KAAKgF,OAAOiF,MAAM,SAAArF,GACjC,MAAOA,GAAUyB,MAAMkB,UAGzBvH,MAAKyH,UACHtE,QAAS6G,IAGPA,EACFhK,KAAKsF,MAAM1B,UAEX5D,KAAKsF,MAAMzB,YAZwB7D,KAgBhCyH,UACHpE,WAAW,KAGb6G,KAAKlK,KAxBiBA,MA4BnBgF,OAAOkC,QAAQ,SAACtC,EAAWmD,GAC9B,GAAIW,GAAaoB,EAAKhF,cAAcF,EAChC8D,GAAWvF,SAAWyB,EAAUyB,MAAM+B,iBACxCM,EAAWvF,SAAU,GAEvByB,EAAU6C,UACRF,SAAUmB,EAAWvF,QACrBwF,YAAaD,EAAWE,WACxBpB,iBAAkBkB,EAAWG,MAC7BT,gBAAiBM,EAAWvF,SAAWyB,EAAUyB,MAAM+B,eAAiBxD,EAAUyB,MAAM+B,eAAiB,MACxGL,IAAU+B,EAAK9E,OAAOvD,OAAS,EAAIsI,EAAuB,SAK1D/J,KAAKgF,OAAOvD,QAAUzB,KAAKmK,aAC9BnK,KAAKyH,UACHpE,WAAW,KAOjBkB,aAAc,SAAUK,GAEiB,KAAnC5E,KAAKgF,OAAO9D,QAAQ0D,IACtB5E,KAAKgF,OAAO6E,KAAKjF,GAGnB5E,KAAKyE,SAASG,IAKhBJ,eAAgB,SAAUI,GACxB,GAAIwF,GAAepK,KAAKgF,OAAO9D,QAAQ0D,EAElB,MAAjBwF,IACFpK,KAAKgF,OAAShF,KAAKgF,OAAOqF,MAAM,EAAGD,GAChCE,OAAOtK,KAAKgF,OAAOqF,MAAMD,EAAe,KAG7CpK,KAAKkF,gBAEPqF,OAAQ,WF+DL,GAAIC,GEhDDxK,KAAKsF,MADJmF,GAZHD,EAAAjE,QACAiE,EAAAzG,iBACAyG,EAAA/G,SACA+G,EAAA5G,QACA4G,EAAA9G,cACA8G,EAAA3G,UACA2G,EAAA7G,gBACA6G,EAAA1G,SACA0G,EAAA7E,MACA6E,EAAAxG,4BACAwG,EAAAjH,UACAiH,EAAAhH,QACG3C,EAAA2J,GAAA,yKAGL,OACExI,GAAA0I,cF8DC,OACApJ,KE/DSmJ,GAAgBhH,SAAUzD,KAAK+F,SACtC/F,KAAKsF,MAAMqF,aAOf/J,EAAOjB,SAAYiB,EAAOhB,QAAYgB,EAAOd,QAAWc,EAAOd,OAAOC,MACzEa,EAAOqB,OAASA,GAGlBrC,EAAOD,QAAUsC,IF8DazB,KAAKb,EAAU,WAAa,MAAOK,WAI3D,SAASJ,EAAQD,GGxgBvBC,EAAAD,QAAAM,GH8gBM,SAASL,EAAQD,EAASQ,IAEH,SAASS,GAAS,YIhhB/C,IAAIwB,GAAQjC,EAAQ,GAChB6B,EAAQpB,EAAOoB,OAAS7B,EAAQ,GAEhCyK,EAA6B,SAAUlB,GAEzC,MAA2B,gBAAhBA,GAEFA,EAAY9C,MAAM,uBAAuBH,OAAO,SAAUiD,EAAahB,GAC5E,GAAIpB,GAAOoB,EAAW9B,MAAM,KACxBiE,EAAiBvD,EAAKP,OAU1B,IARAO,EAAOA,EAAKjC,IAAI,SAAUyF,GACxB,IACE,MAAO5C,MAAK6C,MAAMD,GAClB,MAAOE,GACP,MAAOF,MAIPxD,EAAK7F,OAAS,EAChB,KAAM,IAAIwG,OAAM,yGAIlB,OADAyB,GAAYmB,GAAkBvD,EAAK7F,OAAS6F,EAAK,IAAK,EAC/CoC,OAKJA,MAGT9J,GAAOD,SACLuD,gBAAiB,WACf,OACEoF,OAAQtI,KAAKsF,MAAMT,MACnB8D,aAAa,EACbpB,UAAU,EACVkB,aAAa,EACbwC,eAAgBjL,KAAKsF,MAAMT,MAC3B2C,oBACAY,eAAgB,KAChBI,gBAAgB,IAGpB0C,cACEhH,OAAQlC,EAAMmC,UAAUC,QAE1Bd,gBAAiB,WACf,OACEwF,gBAAiB,GACjB/E,sBAIJgB,mBAAoB,WAClB,GAAIoG,GAAY,WACdnL,KAAKoL,eAAepL,KAAKsF,MAAMoE,YAAa1J,KAAKsF,MAAM+F,UAD7BrL,KAIrBsL,QAAQpH,OAAOK,aAAavE,OAEjCkK,KAAKlK,KAEP,KAAKA,KAAKsF,MAAMzC,KACd,KAAM,IAAIoF,OAAM,gDAVYkD,MA4BhCI,0BAA2B,SAAUC,GACnCxL,KAAKoL,eAAeI,EAAU9B,YAAa8B,EAAUH,WAIvD9F,mBAAoB,SAAUkG,GAIvBrJ,EAAMwF,OAAO5H,KAAKsF,MAAMT,MAAO4G,EAAU5G,QAC5C7E,KAAKmH,SAASnH,KAAKsF,MAAMT,OAItBzC,EAAMwF,OAAO5H,KAAKsF,MAAMoE,YAAa+B,EAAU/B,cAAiBtH,EAAMwF,OAAO5H,KAAKsF,MAAM+F,SAAUI,EAAUJ,WAC/GrL,KAAKsL,QAAQpH,OAAOO,SAASzE,OAKjC0L,qBAAsB,WACpB1L,KAAKsL,QAAQpH,OAAOM,eAAexE,OAIrCoL,eAAgB,SAAU1B,EAAa2B,GAGrCrL,KAAKiJ,aAAe2B,EAA2BlB,OAC/C1J,KAAKmJ,qBAAuBkC,KAAa,GAAQM,wBAAwB,GAAQf,EAA2BS,IAK9GlE,SAAU,SAAUtC,GAClB7E,KAAKyH,UACHa,OAAQzD,EACR4D,aAAa,GACZ,WACDzI,KAAKsL,QAAQpH,OAAOO,SAASzE,OAE7BkK,KAAKlK,QAEToH,WAAY,WACVpH,KAAKyH,UACHa,OAAQtI,KAAKqG,MAAM4E,eACnBxC,aAAa,GACZ,WACDzI,KAAKsL,QAAQpH,OAAOO,SAASzE,SAIjC4L,SAAU,WACR,MAAO5L,MAAKqG,MAAMiC,QAEpBuD,SAAU,WACR,MAA6B,KAAtB7L,KAAKqG,MAAMiC,QAEpBwD,gBAAiB,WACf,GAAIC,GAAW/L,KAAKgM,kBACpB,OAAOD,GAAStK,OAASsK,EAAS,GAAK,MAEzCC,iBAAkB,WAChB,OAAQhM,KAAKmD,WAAanD,KAAKiM,eAAkBjM,KAAKqG,MAAM+B,gBAAkBpI,KAAKqG,MAAMmB,yBAE3F9C,eAAgB,WACd,MAAO1E,MAAKsL,QAAQpH,OAAOQ,kBAG7BvB,QAAS,WACP,MAAOnD,MAAKqG,MAAMkB,UAEpBgB,WAAY,WACV,MAAOvI,MAAKqG,MAAMoC,aAEpByD,gBAAiB,WACf,MAAOlM,MAAKqG,MAAMmC,gBAEpBI,WAAY,WACV,QAAS5I,KAAKsF,MAAM+F,UAEtBY,aAAc,WACZ,MAAOjM,MAAKqG,MAAMsC,aAEpBwD,UAAW,WACT,OAAQnM,KAAKiM,iBAAmBjM,KAAKmD,WAEvCwB,aAAc,SAAUE,GACtB,MAAO7E,MAAKsL,QAAQpH,OAAOS,aAAanE,KAAK,KAAMR,KAAM6E,OJmhB/BrE,KAAKb,EAAU,WAAa,MAAOK,WAI3D,SAASJ,EAAQD,GAEtB,YAEA,IAAIiC,GAA4B,kBAAXC,SAAoD,gBAApBA,QAAOC,SAAwB,SAAUhB,GAAO,aAAcA,IAAS,SAAUA,GAAO,MAAOA,IAAyB,kBAAXe,SAAyBf,EAAIiB,cAAgBF,OAAS,eAAkBf,GKtsB3OlB,GAAOD,SACL+F,aAAc,SAAU0G,EAAGC,GACzB,GAAIC,IAAc,CAUlB,OATIF,GAAE3K,SAAW4K,EAAE5K,OACjB6K,GAAc,EAEdF,EAAElF,QAAQ,SAAUqF,EAAMxE,GACnB/H,KAAK4H,OAAO2E,EAAMF,EAAEtE,MACvBuE,GAAc,IAEftM,MAEEsM,GAGTE,cAAe,SAAUJ,EAAGC,GAC1B,GAAIC,IAAc,CAUlB,OATInL,QAAOJ,KAAKqL,GAAG3K,SAAWN,OAAOJ,KAAKsL,GAAG5K,OAC3C6K,GAAc,EAEdnL,OAAOJ,KAAKqL,GAAGlF,QAAQ,SAAUvF,GAC1B3B,KAAK4H,OAAOwE,EAAEzK,GAAM0K,EAAE1K,MACzB2K,GAAc,IAEftM,MAEEsM,GAGT1E,OAAQ,SAAUwE,EAAGC,GACnB,OAAW,mBAAAD,GAAA,YAAAxK,EAAAwK,OAAa,mBAAAC,GAAA,YAAAzK,EAAAyK,KACf,EACEI,MAAMC,QAAQN,IACfpM,KAAK0F,aAAa0G,EAAGC,GACP,kBAAND,GACTA,EAAEO,aAAeN,EAAEM,WACJ,YAAN,mBAAAP,GAAA,YAAAxK,EAAAwK,KAAwB,OAANA,GAAoB,OAANC,GACxCrM,KAAKwM,cAAcJ,EAAGC,GAGzBD,IAAMC,GAGfrE,KAAM,SAAU4E,EAAYC,GAC1B,IAAK,GAAI5L,GAAI,EAAG6L,EAAIF,EAAWnL,OAAYqL,EAAJ7L,EAAOA,IAAK,CACjD,GAAIsL,GAAOK,EAAW3L,EACtB,IAAI4L,EAAGN,GACL,MAAOA,GAGX,MAAO,SL8sBL,SAAS3M,EAAQD,EAASQ,IAEH,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,IMpwBpPgB,EAAQpB,EAAOoB,OAAS7B,EAAQ,GAChCkC,EAAQlC,EAAQ,EACpBP,GAAOD,QAAU,WACf,MAAO,UAAUoN,GACf,MAAO/K,GAAMgB,aACXgK,QAAS3K,GACTkI,OAAQ,WACN,MAAOvI,GAAM0I,cAAcqC,EAApBzL,GACL8J,eAAgBpL,KAAKoL,eACrBjE,SAAUnH,KAAKmH,SACfC,WAAYpH,KAAKoH,WACjBwE,SAAU5L,KAAK4L,SACfC,SAAU7L,KAAK6L,SACfC,gBAAiB9L,KAAK8L,gBACtBE,iBAAkBhM,KAAKgM,iBACvBtH,eAAgB1E,KAAK0E,eACrBvB,QAASnD,KAAKmD,QACdoF,WAAYvI,KAAKuI,WACjB2D,gBAAiBlM,KAAKkM,gBACtBtD,WAAY5I,KAAK4I,WACjBqD,aAAcjM,KAAKiM,aACnBE,UAAWnM,KAAKmM,UAChBxH,aAAc3E,KAAK2E,cAChB3E,KAAKsF,eN2wBY9E,KAAKb,EAAU,WAAa,MAAOK,WAI3D,SAASJ,EAAQD,EAASQ,IAEH,SAASS,GAAS,YO3wB/C,SAASqM,GAAeF,GACtB,MACEA,GAAU9J,aACV8J,EAAUlK,OACY,gBAAdkK,GAAyBA,EAAY,aPywBhD,GAAIzL,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,IO1yBpPgB,EAAQpB,EAAOoB,OAAS7B,EAAQ,GAChCkC,EAAQlC,EAAQ,EACpBP,GAAOD,QAAU,SAAUoN,GACzB,MAAO/K,GAAMgB,aACXC,YAAa,UAAYgK,EAAeF,GAAa,IACrDC,QAAS3K,GACTkI,OAAQ,WACN,MAAOvI,GAAM0I,cAAcqC,EAApBzL,GACL8J,eAAgBpL,KAAKoL,eACrBjE,SAAUnH,KAAKmH,SACfC,WAAYpH,KAAKoH,WACjBwE,SAAU5L,KAAK4L,SACfC,SAAU7L,KAAK6L,SACfC,gBAAiB9L,KAAK8L,gBACtBE,iBAAkBhM,KAAKgM,iBACvBtH,eAAgB1E,KAAK0E,eACrBvB,QAASnD,KAAKmD,QACdoF,WAAYvI,KAAKuI,WACjB2D,gBAAiBlM,KAAKkM,gBACtBtD,WAAY5I,KAAK4I,WACjBqD,aAAcjM,KAAKiM,aACnBE,UAAWnM,KAAKmM,UAChBxH,aAAc3E,KAAK2E,cAChB3E,KAAKsF,cPozBc9E,KAAKb,EAAU,WAAa,MAAOK,WAI3D,SAASJ,EAAQD,GAEtB,YQj1BD,IAAIuN,GAAW,SAAUrI,GACvB,MAAiB,QAAVA,GAA4BsI,SAAVtI,GAGvBuI,EAAU,SAAUvI,GACtB,MAAiB,KAAVA,GAGL6E,GACFiC,uBAAwB,SAAU0B,EAAQxI,GACxC,MAAiBsI,UAAVtI,GAAiC,KAAVA,GAEhCyI,SAAU,SAAUD,EAAQxI,GAC1B,MAAOqI,GAASrI,IAElB0I,YAAa,SAAUF,EAAQxI,EAAO2I,GACpC,OAAQN,EAASrI,IAAUuI,EAAQvI,IAAU2I,EAAOC,KAAK5I,IAE3D6I,YAAa,SAAUL,EAAQxI,GAC7B,MAAiBsI,UAAVtI,GAET8I,cAAe,SAAUN,EAAQxI,GAC/B,MAAOuI,GAAQvI,IAEjB+I,QAAS,SAAUP,EAAQxI,GACzB,MAAO6E,GAAY6D,YAAYF,EAAQxI,EAAO,44BAEhDgJ,MAAO,SAAUR,EAAQxI,GACvB,MAAO6E,GAAY6D,YAAYF,EAAQxI,EAAO,yqCAEhDiJ,OAAQ,SAAUT,EAAQxI,GACxB,MAAOA,MAAU,GAEnBkJ,QAAS,SAAUV,EAAQxI,GACzB,MAAOA,MAAU,GAEnBmJ,UAAW,SAAUX,EAAQxI,GAC3B,MAAqB,gBAAVA,IACF,EAEF6E,EAAY6D,YAAYF,EAAQxI,EAAO,0BAEhDoJ,QAAS,SAAUZ,EAAQxI,GACzB,MAAO6E,GAAY6D,YAAYF,EAAQxI,EAAO,cAEhDqJ,eAAgB,SAAUb,EAAQxI,GAChC,MAAO6E,GAAY6D,YAAYF,EAAQxI,EAAO,iBAEhDsJ,MAAO,SAAUd,EAAQxI,GACvB,MAAO6E,GAAY6D,YAAYF,EAAQxI,EAAO,8BAEhDuJ,QAAS,SAAUf,EAAQxI,GACzB,MAAO6E,GAAY6D,YAAYF,EAAQxI,EAAO,yDAEhDwJ,QAAS,SAAUhB,EAAQxI,GACzB,MAAO6E,GAAY6D,YAAYF,EAAQxI,EAAO,gBAEhDyJ,eAAgB,SAAUjB,EAAQxI,GAChC,MAAO6E,GAAY6D,YAAYF,EAAQxI,EAAO,6BAEhD0J,SAAU,SAAUlB,EAAQxI,EAAOpD,GACjC,OAAQyL,EAASrI,IAAUuI,EAAQvI,IAAUA,EAAMpD,SAAWA,GAEhE+M,OAAQ,SAAUnB,EAAQxI,EAAO4J,GAC/B,OAAQvB,EAASrI,IAAUuI,EAAQvI,IAAUA,GAAS4J,GAExDC,YAAa,SAAUrB,EAAQxI,EAAO8J,GACpC,MAAO9J,IAASwI,EAAOsB,IAEzBC,UAAW,SAAUvB,EAAQxI,EAAOpD,GAClC,OAAQyL,EAASrI,IAAUA,EAAMpD,QAAUA,GAE7CoN,UAAW,SAAUxB,EAAQxI,EAAOpD,GAClC,OAAQyL,EAASrI,IAAUuI,EAAQvI,IAAUA,EAAMpD,QAAUA,GAIjE7B,GAAOD,QAAU+J,GRu1BX,SAAS9J,EAAQD,GSp6BvB,QAAA6G,GAAA9E,GACA,MAAAP,QAAAJ,KAAAW,GAAA+E,OAAA,SAAAqI,EAAAnN,GACA,GAAAoN,GAAApN,EAAAqN,MAAA,WACAC,EAAAtN,EAAAqN,MAAA,eACAC,IAAAF,EAAA,IAAAzE,OAAA2E,GAAA5J,IAAA,SAAA1D,GACA,MAAAA,GAAAuN,QAAA,cAGA,KADA,GAAAC,GAAAL,EACAG,EAAAxN,QAAA,CACA,GAAA2N,GAAAH,EAAAlI,OAEAqI,KAAAD,GACAA,IAAAC,IAEAD,EAAAC,GAAAH,EAAAxN,OAAA4N,MAAAJ,EAAA,UAAkEvN,EAAAC,GAClEwN,IAAAC,IAIA,MAAAN,QAIA,QAAAQ,GAAAxO,GACA,QAAAyO,GAAAC,EAAAC,EAAAC,GACA,MAAAjD,OAAAC,QAAAgD,IAAA,oBAAAvO,OAAAC,UAAAuL,SAAAnM,KAAAkP,IACAvO,OAAAJ,KAAA2O,GAAAxI,QAAA,SAAAyI,GACAJ,EAAAC,EAAAC,EAAA,IAAAE,EAAA,IAAAD,EAAAC,MAEAH,IAGAA,EAAAC,GAAAC,EACAF,GAGA,GAAAzO,GAAAI,OAAAJ,KAAAD,EACA,OAAAC,GAAA0F,OAAA,SAAA+I,EAAAC,GACA,MAAAF,GAAAC,EAAAC,EAAA3O,EAAA2O,SAIA7P,EAAAD,SACA2P,UACA9I","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_1__) {\nreturn \n\n\n/** WEBPACK FOOTER **\n ** webpack/universalModuleDefinition\n **/","(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_1__) {\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 _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol ? \"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 React = global.React || __webpack_require__(1);\n\tvar Formsy = {};\n\tvar validationRules = __webpack_require__(6);\n\tvar formDataToObject = __webpack_require__(7);\n\tvar utils = __webpack_require__(3);\n\tvar Mixin = __webpack_require__(2);\n\tvar HOC = __webpack_require__(5);\n\tvar Decorator = __webpack_require__(4);\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 = React.createClass({\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: React.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 && this.isMounted()) {\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 var mapping = _props.mapping;\n\t var validationErrors = _props.validationErrors;\n\t var onSubmit = _props.onSubmit;\n\t var onValid = _props.onValid;\n\t var onValidSubmit = _props.onValidSubmit;\n\t var onInvalid = _props.onInvalid;\n\t var onInvalidSubmit = _props.onInvalidSubmit;\n\t var onChange = _props.onChange;\n\t var reset = _props.reset;\n\t var preventExternalInvalidation = _props.preventExternalInvalidation;\n\t var onSuccess = _props.onSuccess;\n\t var onError = _props.onError;\n\t\n\t var 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\tmodule.exports = __WEBPACK_EXTERNAL_MODULE_1__;\n\n/***/ },\n/* 2 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/* WEBPACK VAR INJECTION */(function(global) {'use strict';\n\t\n\tvar utils = __webpack_require__(3);\n\tvar React = global.React || __webpack_require__(1);\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: React.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 /*\r\n\t if (!this.props._attachToForm) {\r\n\t return setTimeout(function () {\r\n\t if (!this.isMounted()) return;\r\n\t if (!this.props._attachToForm) {\r\n\t throw new Error('Form Mixin requires component to be nested in a Form');\r\n\t }\r\n\t configure();\r\n\t }.bind(this), 0);\r\n\t }\r\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/* 3 */\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 ? \"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)) {\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/* 4 */\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__(1);\n\tvar Mixin = __webpack_require__(2);\n\tmodule.exports = function () {\n\t return function (Component) {\n\t return React.createClass({\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/* 5 */\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__(1);\n\tvar Mixin = __webpack_require__(2);\n\tmodule.exports = function (Component) {\n\t return React.createClass({\n\t displayName: 'Formsy(' + getDisplayName(Component) + ')',\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\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/* 6 */\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/* 7 */\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/******/ ])\n});\n;\n\n\n/** WEBPACK FOOTER **\n ** formsy-react.js\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/** WEBPACK FOOTER **\n ** webpack/bootstrap de6fab39ce2fbdab0e4e\n **/","var React = global.React || require('react');\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 = React.createClass({\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: React.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 && this.isMounted()) {\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 <form {...nonFormsyProps} onSubmit={this.submit}>\n {this.props.children}\n </form>\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\n **/","module.exports = __WEBPACK_EXTERNAL_MODULE_1__;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** external \"react\"\n ** module id = 1\n ** module chunks = 0\n **/","var utils = require('./utils.js');\r\nvar React = global.React || require('react');\r\n\r\nvar convertValidationsToObject = function (validations) {\r\n\r\n if (typeof validations === 'string') {\r\n\r\n return validations.split(/\\,(?![^{\\[]*[}\\]])/g).reduce(function (validations, validation) {\r\n var args = validation.split(':');\r\n var validateMethod = args.shift();\r\n\r\n args = args.map(function (arg) {\r\n try {\r\n return JSON.parse(arg);\r\n } catch (e) {\r\n return arg; // It is a string if it can not parse it\r\n }\r\n });\r\n\r\n if (args.length > 1) {\r\n throw new Error('Formsy does not support multiple args on string validations. Use object format of validations instead.');\r\n }\r\n\r\n validations[validateMethod] = args.length ? args[0] : true;\r\n return validations;\r\n }, {});\r\n\r\n }\r\n\r\n return validations || {};\r\n};\r\n\r\nmodule.exports = {\r\n getInitialState: function () {\r\n return {\r\n _value: this.props.value,\r\n _isRequired: false,\r\n _isValid: true,\r\n _isPristine: true,\r\n _pristineValue: this.props.value,\r\n _validationError: [],\r\n _externalError: null,\r\n _formSubmitted: false\r\n };\r\n },\r\n contextTypes: {\r\n formsy: React.PropTypes.object // What about required?\r\n },\r\n getDefaultProps: function () {\r\n return {\r\n validationError: '',\r\n validationErrors: {}\r\n };\r\n },\r\n\r\n componentWillMount: function () {\r\n var configure = function () {\r\n this.setValidations(this.props.validations, this.props.required);\r\n\r\n // Pass a function instead?\r\n this.context.formsy.attachToForm(this);\r\n //this.props._attachToForm(this);\r\n }.bind(this);\r\n\r\n if (!this.props.name) {\r\n throw new Error('Form Input requires a name property when used');\r\n }\r\n\r\n /*\r\n if (!this.props._attachToForm) {\r\n return setTimeout(function () {\r\n if (!this.isMounted()) return;\r\n if (!this.props._attachToForm) {\r\n throw new Error('Form Mixin requires component to be nested in a Form');\r\n }\r\n configure();\r\n }.bind(this), 0);\r\n }\r\n */\r\n configure();\r\n },\r\n\r\n // We have to make the validate method is kept when new props are added\r\n componentWillReceiveProps: function (nextProps) {\r\n this.setValidations(nextProps.validations, nextProps.required);\r\n\r\n },\r\n\r\n componentDidUpdate: function (prevProps) {\r\n\r\n // If the value passed has changed, set it. If value is not passed it will\r\n // internally update, and this will never run\r\n if (!utils.isSame(this.props.value, prevProps.value)) {\r\n this.setValue(this.props.value);\r\n }\r\n\r\n // If validations or required is changed, run a new validation\r\n if (!utils.isSame(this.props.validations, prevProps.validations) || !utils.isSame(this.props.required, prevProps.required)) {\r\n this.context.formsy.validate(this);\r\n }\r\n },\r\n\r\n // Detach it when component unmounts\r\n componentWillUnmount: function () {\r\n this.context.formsy.detachFromForm(this);\r\n //this.props._detachFromForm(this);\r\n },\r\n\r\n setValidations: function (validations, required) {\r\n\r\n // Add validations to the store itself as the props object can not be modified\r\n this._validations = convertValidationsToObject(validations) || {};\r\n this._requiredValidations = required === true ? {isDefaultRequiredValue: true} : convertValidationsToObject(required);\r\n\r\n },\r\n\r\n // We validate after the value has been set\r\n setValue: function (value) {\r\n this.setState({\r\n _value: value,\r\n _isPristine: false\r\n }, function () {\r\n this.context.formsy.validate(this);\r\n //this.props._validate(this);\r\n }.bind(this));\r\n },\r\n resetValue: function () {\r\n this.setState({\r\n _value: this.state._pristineValue,\r\n _isPristine: true\r\n }, function () {\r\n this.context.formsy.validate(this);\r\n //this.props._validate(this);\r\n });\r\n },\r\n getValue: function () {\r\n return this.state._value;\r\n },\r\n hasValue: function () {\r\n return this.state._value !== '';\r\n },\r\n getErrorMessage: function () {\r\n var messages = this.getErrorMessages();\r\n return messages.length ? messages[0] : null;\r\n },\r\n getErrorMessages: function () {\r\n return !this.isValid() || this.showRequired() ? (this.state._externalError || this.state._validationError || []) : [];\r\n },\r\n isFormDisabled: function () {\r\n return this.context.formsy.isFormDisabled();\r\n //return this.props._isFormDisabled();\r\n },\r\n isValid: function () {\r\n return this.state._isValid;\r\n },\r\n isPristine: function () {\r\n return this.state._isPristine;\r\n },\r\n isFormSubmitted: function () {\r\n return this.state._formSubmitted;\r\n },\r\n isRequired: function () {\r\n return !!this.props.required;\r\n },\r\n showRequired: function () {\r\n return this.state._isRequired;\r\n },\r\n showError: function () {\r\n return !this.showRequired() && !this.isValid();\r\n },\r\n isValidValue: function (value) {\r\n return this.context.formsy.isValidValue.call(null, this, value);\r\n //return this.props._isValidValue.call(null, this, value);\r\n }\r\n};\r\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/Mixin.js\n **/","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)) {\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 **/","var React = global.React || require('react');\r\nvar Mixin = require('./Mixin.js');\r\nmodule.exports = function () {\r\n return function (Component) {\r\n return React.createClass({\r\n mixins: [Mixin],\r\n render: function () {\r\n return React.createElement(Component, {\r\n setValidations: this.setValidations,\r\n setValue: this.setValue,\r\n resetValue: this.resetValue,\r\n getValue: this.getValue,\r\n hasValue: this.hasValue,\r\n getErrorMessage: this.getErrorMessage,\r\n getErrorMessages: this.getErrorMessages,\r\n isFormDisabled: this.isFormDisabled,\r\n isValid: this.isValid,\r\n isPristine: this.isPristine,\r\n isFormSubmitted: this.isFormSubmitted,\r\n isRequired: this.isRequired,\r\n showRequired: this.showRequired,\r\n showError: this.showError,\r\n isValidValue: this.isValidValue,\r\n ...this.props\r\n });\r\n }\r\n });\r\n };\r\n};\r\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/Decorator.js\n **/","var React = global.React || require('react');\r\nvar Mixin = require('./Mixin.js');\r\nmodule.exports = function (Component) {\r\n return React.createClass({\r\n displayName: 'Formsy(' + getDisplayName(Component) + ')',\r\n mixins: [Mixin],\r\n render: function () {\r\n return React.createElement(Component, {\r\n setValidations: this.setValidations,\r\n setValue: this.setValue,\r\n resetValue: this.resetValue,\r\n getValue: this.getValue,\r\n hasValue: this.hasValue,\r\n getErrorMessage: this.getErrorMessage,\r\n getErrorMessages: this.getErrorMessages,\r\n isFormDisabled: this.isFormDisabled,\r\n isValid: this.isValid,\r\n isPristine: this.isPristine,\r\n isFormSubmitted: this.isFormSubmitted,\r\n isRequired: this.isRequired,\r\n showRequired: this.showRequired,\r\n showError: this.showError,\r\n isValidValue: this.isValidValue,\r\n ...this.props\r\n });\r\n }\r\n });\r\n};\r\n\r\nfunction getDisplayName(Component) {\r\n return (\r\n Component.displayName ||\r\n Component.name ||\r\n (typeof Component === 'string' ? Component : 'Component')\r\n );\r\n}\r\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/HOC.js\n **/","var isExisty = function (value) {\r\n return value !== null && value !== undefined;\r\n};\r\n\r\nvar isEmpty = function (value) {\r\n return value === '';\r\n};\r\n\r\nvar validations = {\r\n isDefaultRequiredValue: function (values, value) {\r\n return value === undefined || value === '';\r\n },\r\n isExisty: function (values, value) {\r\n return isExisty(value);\r\n },\r\n matchRegexp: function (values, value, regexp) {\r\n return !isExisty(value) || isEmpty(value) || regexp.test(value);\r\n },\r\n isUndefined: function (values, value) {\r\n return value === undefined;\r\n },\r\n isEmptyString: function (values, value) {\r\n return isEmpty(value);\r\n },\r\n isEmail: function (values, value) {\r\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);\r\n },\r\n isUrl: function (values, value) {\r\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);\r\n },\r\n isTrue: function (values, value) {\r\n return value === true;\r\n },\r\n isFalse: function (values, value) {\r\n return value === false;\r\n },\r\n isNumeric: function (values, value) {\r\n if (typeof value === 'number') {\r\n return true;\r\n }\r\n return validations.matchRegexp(values, value, /^[-+]?(?:\\d*[.])?\\d+$/);\r\n },\r\n isAlpha: function (values, value) {\r\n return validations.matchRegexp(values, value, /^[A-Z]+$/i);\r\n },\r\n isAlphanumeric: function (values, value) {\r\n return validations.matchRegexp(values, value, /^[0-9A-Z]+$/i);\r\n },\r\n isInt: function (values, value) {\r\n return validations.matchRegexp(values, value, /^(?:[-+]?(?:0|[1-9]\\d*))$/);\r\n },\r\n isFloat: function (values, value) {\r\n return validations.matchRegexp(values, value, /^(?:[-+]?(?:\\d+))?(?:\\.\\d*)?(?:[eE][\\+\\-]?(?:\\d+))?$/);\r\n },\r\n isWords: function (values, value) {\r\n return validations.matchRegexp(values, value, /^[A-Z\\s]+$/i);\r\n },\r\n isSpecialWords: function (values, value) {\r\n return validations.matchRegexp(values, value, /^[A-Z\\s\\u00C0-\\u017F]+$/i);\r\n },\r\n isLength: function (values, value, length) {\r\n return !isExisty(value) || isEmpty(value) || value.length === length;\r\n },\r\n equals: function (values, value, eql) {\r\n return !isExisty(value) || isEmpty(value) || value == eql;\r\n },\r\n equalsField: function (values, value, field) {\r\n return value == values[field];\r\n },\r\n maxLength: function (values, value, length) {\r\n return !isExisty(value) || value.length <= length;\r\n },\r\n minLength: function (values, value, length) {\r\n return !isExisty(value) || isEmpty(value) || value.length >= length;\r\n }\r\n};\r\n\r\nmodule.exports = validations;\r\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/validationRules.js\n **/","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 = 7\n ** module chunks = 0\n **/"],"sourceRoot":""}
@@ -1 +1,2 @@
1
- !function t(i,e,r){function n(o,u){if(!e[o]){if(!i[o]){var a="function"==typeof require&&require;if(!u&&a)return a(o,!0);if(s)return s(o,!0);var l=new Error("Cannot find module '"+o+"'");throw l.code="MODULE_NOT_FOUND",l}var d=e[o]={exports:{}};i[o][0].call(d.exports,function(t){var e=i[o][1][t];return n(e?e:t)},d,d.exports,t,i,e,r)}return e[o].exports}for(var s="function"==typeof require&&require,o=0;o<r.length;o++)n(r[o]);return n}({1:[function(t,i){(function(e){var r=e.React||t("react"),n={},s=t("./validationRules.js"),o=t("./utils.js"),u=t("./Mixin.js"),a={};n.Mixin=u,n.defaults=function(t){a=t},n.addValidationRule=function(t,i){s[t]=i},n.Form=r.createClass({displayName:"Form",getInitialState:function(){return{isValid:!0,isSubmitting:!1,canChange:!1}},getDefaultProps:function(){return{onSuccess:function(){},onError:function(){},onSubmit:function(){},onValidSubmit:function(){},onInvalidSubmit:function(){},onSubmitted:function(){},onValid:function(){},onInvalid:function(){},onChange:function(){},validationErrors:null}},componentWillMount:function(){this.inputs={},this.model={}},componentDidMount:function(){this.validateForm()},componentWillUpdate:function(){var t=Object.keys(this.inputs);setTimeout(function(){if(this.isMounted()){this.props.validationErrors&&this.setInputValidationErrors(this.props.validationErrors);var i=Object.keys(this.inputs);o.arraysDiffer(t,i)&&this.validateForm()}}.bind(this),0)},reset:function(){this.setFormPristine(!0),this.resetModel()},submit:function(t){t&&t.preventDefault(),this.setFormPristine(!1),this.updateModel();var i=this.mapModel();this.props.onSubmit(i,this.resetModel,this.updateInputsWithError),this.state.isValid?this.props.onValidSubmit(i,this.resetModel,this.updateInputsWithError):this.props.onInvalidSubmit(i,this.resetModel,this.updateInputsWithError)},mapModel:function(){return this.props.mapping?this.props.mapping(this.model):this.model},updateModel:function(){Object.keys(this.inputs).forEach(function(t){var i=this.inputs[t];this.model[t]=i.state._value}.bind(this))},resetModel:function(){Object.keys(this.inputs).forEach(function(t){this.inputs[t].resetValue()}.bind(this)),this.validateForm()},setInputValidationErrors:function(t){Object.keys(this.inputs).forEach(function(i){var e=this.inputs[i],r=[{_isValid:!(i in t),_validationError:t[i]}];e.setState.apply(e,r)}.bind(this))},updateInputsWithError:function(t){Object.keys(t).forEach(function(i){var e=this.inputs[i];if(!e)throw new Error("You are trying to update an input that does not exists. Verify errors object with input names. "+JSON.stringify(t));var r=[{_isValid:!1,_externalError:t[i]}];e.setState.apply(e,r)}.bind(this))},traverseChildrenAndRegisterInputs:function(t){return"object"!=typeof t||null===t?t:r.Children.map(t,function(t){return"object"!=typeof t||null===t?t:t.props&&t.props.name?r.cloneElement(t,{_attachToForm:this.attachToForm,_detachFromForm:this.detachFromForm,_validate:this.validate,_isFormDisabled:this.isFormDisabled,_isValidValue:function(t,i){return this.runValidation(t,i).isValid}.bind(this)},t.props&&t.props.children):r.cloneElement(t,{},this.traverseChildrenAndRegisterInputs(t.props&&t.props.children))},this)},isFormDisabled:function(){return this.props.disabled},getCurrentValues:function(){return Object.keys(this.inputs).reduce(function(t,i){var e=this.inputs[i];return t[i]=e.state._value,t}.bind(this),{})},setFormPristine:function(t){var i=this.inputs,e=Object.keys(i);this.setState({_formSubmitted:!t}),e.forEach(function(e){var r=i[e];r.setState({_formSubmitted:!t,_isPristine:t})}.bind(this))},validate:function(t){this.state.canChange&&this.props.onChange(this.getCurrentValues());var i=this.runValidation(t);t.setState({_isValid:i.isValid,_isRequired:i.isRequired,_validationError:i.error,_externalError:null},this.validateForm)},runValidation:function(t,i){var e=this.getCurrentValues(),r=t.props.validationErrors,n=t.props.validationError;i=2===arguments.length?i:t.state._value;var s=this.runRules(i,e,t._validations),o=this.runRules(i,e,t._requiredValidations);"function"==typeof t.validate&&(s.failed=t.validate()?[]:["failed"]);var u=Object.keys(t._requiredValidations).length?!!o.success.length:!1,a=!(s.failed.length||this.props.validationErrors&&this.props.validationErrors[t.props.name]);return{isRequired:u,isValid:u?!1:a,error:function(){return a&&!u?"":s.errors.length?s.errors[0]:this.props.validationErrors&&this.props.validationErrors[t.props.name]?this.props.validationErrors[t.props.name]:u?r[o.success[0]]||null:a?void 0:r[s.failed[0]]||n}.call(this)}},runRules:function(t,i,e){var r={errors:[],failed:[],success:[]};return Object.keys(e).length&&Object.keys(e).forEach(function(n){if(s[n]&&"function"==typeof e[n])throw new Error("Formsy does not allow you to override default validations: "+n);if(!s[n]&&"function"!=typeof e[n])throw new Error("Formsy does not have the validation rule: "+n);if("function"==typeof e[n]){var o=e[n](i,t);return"string"==typeof o?(r.errors.push(o),r.failed.push(n)):o||r.failed.push(n),void 0}if("function"!=typeof e[n]){var o=s[n](i,t,e[n]);return"string"==typeof o?(r.errors.push(o),r.failed.push(n)):o?r.success.push(n):r.failed.push(n),void 0}return r.success.push(n)}),r},validateForm:function(){var t=!0,i=this.inputs,e=Object.keys(i),r=function(){e.forEach(function(e){i[e].state._isValid||(t=!1)}.bind(this)),this.setState({isValid:t}),t?this.props.onValid():this.props.onInvalid(),this.setState({canChange:!0})}.bind(this);e.forEach(function(t,n){var s=i[t],o=this.runValidation(s);o.isValid&&s.state._externalError&&(o.isValid=!1),s.setState({_isValid:o.isValid,_isRequired:o.isRequired,_validationError:o.error,_externalError:!o.isValid&&s.state._externalError?s.state._externalError:null},n===e.length-1?r:null)}.bind(this)),!e.length&&this.isMounted()&&this.setState({canChange:!0})},attachToForm:function(t){this.inputs[t.props.name]=t,this.model[t.props.name]=t.state._value,this.validate(t)},detachFromForm:function(t){delete this.inputs[t.props.name],delete this.model[t.props.name]},render:function(){return r.DOM.form({onSubmit:this.submit,className:this.props.className},this.traverseChildrenAndRegisterInputs(this.props.children))}}),e.exports||e.module||e.define&&e.define.amd||(e.Formsy=n),i.exports=n}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{"./Mixin.js":2,"./utils.js":3,"./validationRules.js":4,react:"react"}],2:[function(t,i){var e=t("./utils.js"),r=function(t){return"string"==typeof t?t.split(/\,(?![^{\[]*[}\]])/g).reduce(function(t,i){var e=i.split(":"),r=e.shift();if(e=e.map(function(t){try{return JSON.parse(t)}catch(i){return t}}),e.length>1)throw new Error("Formsy does not support multiple args on string validations. Use object format of validations instead.");return t[r]=e.length?e[0]:!0,t},{}):t||{}};i.exports={getInitialState:function(){return{_value:this.props.value,_isRequired:!1,_isValid:!0,_isPristine:!0,_pristineValue:this.props.value,_validationError:"",_externalError:null,_formSubmitted:!1}},getDefaultProps:function(){return{validationError:"",validationErrors:{}}},componentWillMount:function(){var t=function(){this.setValidations(this.props.validations,this.props.required),this.props._attachToForm(this)}.bind(this);if(!this.props.name)throw new Error("Form Input requires a name property when used");return this.props._attachToForm?(t(),void 0):setTimeout(function(){if(this.isMounted()){if(!this.props._attachToForm)throw new Error("Form Mixin requires component to be nested in a Form");t()}}.bind(this),0)},componentWillReceiveProps:function(t){this.setValidations(t.validations,t.required)},componentDidUpdate:function(t){var i=function(){return!e.isSame(this.props.value,t.value)&&e.isSame(this.state._value,t.value)}.bind(this);i()&&this.setValue(this.props.value)},componentWillUnmount:function(){this.props._detachFromForm(this)},setValidations:function(t,i){this._validations=r(t)||{},this._requiredValidations=i===!0?{isDefaultRequiredValue:!0}:r(i)},setValue:function(t){this.setState({_value:t,_isPristine:!1},function(){this.props._validate(this)}.bind(this))},resetValue:function(){this.setState({_value:this.state._pristineValue,_isPristine:!0},function(){this.props._validate(this)})},getValue:function(){return this.state._value},hasValue:function(){return""!==this.state._value},getErrorMessage:function(){return!this.isValid()||this.showRequired()?this.state._externalError||this.state._validationError:null},isFormDisabled:function(){return this.props._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.props._isValidValue.call(null,this,t)}}},{"./utils.js":3}],3:[function(t,i){i.exports={arraysDiffer:function(t,i){var e=!1;return t.length!==i.length?e=!0:t.forEach(function(t,r){this.isSame(t,i[r])||(e=!0)},this),e},objectsDiffer:function(t,i){var e=!1;return Object.keys(t).length!==Object.keys(i).length?e=!0:Object.keys(t).forEach(function(r){this.isSame(t[r],i[r])||(e=!0)},this),e},isSame:function(t,i){return t!==i?!1:Array.isArray(t)?!this.arraysDiffer(t,i):"object"==typeof t&&null!==t?!this.objectsDiffer(t,i):!0}}},{}],4:[function(t,i){var e=function(t){return null!==t&&void 0!==t},r={isDefaultRequiredValue:function(t,i){return void 0===i||""===i},hasValue:function(t,i){return!!i},matchRegexp:function(t,i,r){return e(i)&&r.test(i)},isUndefined:function(t,i){return void 0===i},isEmptyString:function(t,i){return""===i},isEmail:function(t,i){return r.matchRegexp(t,i,/^((([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)},isTrue:function(t,i){return i===!0},isFalse:function(t,i){return i===!1},isNumeric:function(t,i){if(!e(i))return!1;if("number"==typeof i)return!0;var r=i.match(/[-+]?(\d*[.])?\d+/);return r?r[0]==i:!1},isAlpha:function(t,i){return i&&/^[a-zA-Z]+$/.test(i)},isWords:function(t,i){return i&&/^[a-zA-Z\s]+$/.test(i)},isSpecialWords:function(t,i){return!i||/^[a-zA-Z\s\u00C0-\u017F]+$/.test(i)},isLength:function(t,i,r){return e(i)&&i.length===r},equals:function(t,i,e){return i==e},equalsField:function(t,i,e){return i==t[e]},maxLength:function(t,i,r){return e(i)&&i.length<=r},minLength:function(t,i,r){return e(i)&&i.length>=r}};i.exports=r},{}]},{},[1]);
1
+ !function(t,i){"object"==typeof exports&&"object"==typeof module?module.exports=i(require("react")):"function"==typeof define&&define.amd?define(["react"],i):"object"==typeof exports?exports.Formsy=i(require("react")):t.Formsy=i(t.react)}(this,function(t){return function(t){function i(r){if(e[r])return e[r].exports;var n=e[r]={exports:{},id:r,loaded:!1};return t[r].call(n.exports,n,n.exports,i),n.loaded=!0,n.exports}var e={};return i.m=t,i.c=e,i.p="",i(0)}([function(t,i,e){(function(i){"use strict";function r(t,i){var e={};for(var r in t)i.indexOf(r)>=0||Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r]);return e}var n=Object.assign||function(t){for(var i=1;i<arguments.length;i++){var e=arguments[i];for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])}return t},s="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol?"symbol":typeof t},u=i.React||e(1),o={},a=e(6),l=e(7),d=e(3),c=e(2),f=e(5),F=e(4),h={},p=[];o.Mixin=c,o.HOC=f,o.Decorator=F,o.defaults=function(t){h=t},o.addValidationRule=function(t,i){a[t]=i},o.Form=u.createClass({displayName:"Formsy",getInitialState:function(){return{isValid:!0,isSubmitting:!1,canChange:!1}},getDefaultProps:function(){return{onSuccess:function(){},onError:function(){},onSubmit:function(){},onValidSubmit:function(){},onInvalidSubmit:function(){},onValid:function(){},onInvalid:function(){},onChange:function(){},validationErrors:null,preventExternalInvalidation:!1}},childContextTypes:{formsy:u.PropTypes.object},getChildContext:function(){var t=this;return{formsy:{attachToForm:this.attachToForm,detachFromForm:this.detachFromForm,validate:this.validate,isFormDisabled:this.isFormDisabled,isValidValue:function(i,e){return t.runValidation(i,e).isValid}}}},componentWillMount:function(){this.inputs=[]},componentDidMount:function(){this.validateForm()},componentWillUpdate:function(){this.prevInputNames=this.inputs.map(function(t){return t.props.name})},componentDidUpdate:function(){this.props.validationErrors&&"object"===s(this.props.validationErrors)&&Object.keys(this.props.validationErrors).length>0&&this.setInputValidationErrors(this.props.validationErrors);var t=this.inputs.map(function(t){return t.props.name});d.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 i=this.getModel();this.props.onSubmit(i,this.resetModel,this.updateInputsWithError),this.state.isValid?this.props.onValidSubmit(i,this.resetModel,this.updateInputsWithError):this.props.onInvalidSubmit(i,this.resetModel,this.updateInputsWithError)},mapModel:function(t){return this.props.mapping?this.props.mapping(t):l.toObj(Object.keys(t).reduce(function(i,e){for(var r=e.split("."),n=i;r.length;){var s=r.shift();n=n[s]=r.length?n[s]||{}:t[e]}return i},{}))},getModel:function(){var t=this.getCurrentValues();return this.mapModel(t)},resetModel:function(t){this.inputs.forEach(function(i){var e=i.props.name;t&&t.hasOwnProperty(e)?i.setValue(t[e]):i.resetValue()}),this.validateForm()},setInputValidationErrors:function(t){this.inputs.forEach(function(i){var e=i.props.name,r=[{_isValid:!(e in t),_validationError:"string"==typeof t[e]?[t[e]]:t[e]}];i.setState.apply(i,r)})},isChanged:function(){return!d.isSame(this.getPristineValues(),this.getCurrentValues())},getPristineValues:function(){return this.inputs.reduce(function(t,i){var e=i.props.name;return t[e]=i.props.value,t},{})},updateInputsWithError:function(t){var i=this;Object.keys(t).forEach(function(e,r){var n=d.find(i.inputs,function(t){return t.props.name===e});if(!n)throw new Error("You are trying to update an input that does not exist. Verify errors object with input names. "+JSON.stringify(t));var s=[{_isValid:i.props.preventExternalInvalidation||!1,_externalError:"string"==typeof t[e]?[t[e]]:t[e]}];n.setState.apply(n,s)})},isFormDisabled:function(){return this.props.disabled},getCurrentValues:function(){return this.inputs.reduce(function(t,i){var e=i.props.name;return t[e]=i.state._value,t},{})},setFormPristine:function(t){this.setState({_formSubmitted:!t}),this.inputs.forEach(function(i,e){i.setState({_formSubmitted:!t,_isPristine:t})})},validate:function(t){this.state.canChange&&this.props.onChange(this.getCurrentValues(),this.isChanged());var i=this.runValidation(t);t.setState({_isValid:i.isValid,_isRequired:i.isRequired,_validationError:i.error,_externalError:null},this.validateForm)},runValidation:function(t,i){var e=this.getCurrentValues(),r=t.props.validationErrors,n=t.props.validationError;i=2===arguments.length?i:t.state._value;var s=this.runRules(i,e,t._validations),u=this.runRules(i,e,t._requiredValidations);"function"==typeof t.validate&&(s.failed=t.validate()?[]:["failed"]);var o=Object.keys(t._requiredValidations).length?!!u.success.length:!1,a=!(s.failed.length||this.props.validationErrors&&this.props.validationErrors[t.props.name]);return{isRequired:o,isValid:o?!1:a,error:function(){if(a&&!o)return p;if(s.errors.length)return s.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(o){var i=r[u.success[0]];return i?[i]:null}return s.failed.length?s.failed.map(function(t){return r[t]?r[t]:n}).filter(function(t,i,e){return e.indexOf(t)===i}):void 0}.call(this)}},runRules:function(t,i,e){var r={errors:[],failed:[],success:[]};return Object.keys(e).length&&Object.keys(e).forEach(function(n){if(a[n]&&"function"==typeof e[n])throw new Error("Formsy does not allow you to override default validations: "+n);if(!a[n]&&"function"!=typeof e[n])throw new Error("Formsy does not have the validation rule: "+n);if("function"==typeof e[n]){var s=e[n](i,t);return void("string"==typeof s?(r.errors.push(s),r.failed.push(n)):s||r.failed.push(n))}if("function"!=typeof e[n]){var s=a[n](i,t,e[n]);return void("string"==typeof s?(r.errors.push(s),r.failed.push(n)):s?r.success.push(n):r.failed.push(n))}return r.success.push(n)}),r},validateForm:function(){var t=this,i=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(e,r){var n=t.runValidation(e);n.isValid&&e.state._externalError&&(n.isValid=!1),e.setState({_isValid:n.isValid,_isRequired:n.isRequired,_validationError:n.error,_externalError:!n.isValid&&e.state._externalError?e.state._externalError:null},r===t.inputs.length-1?i:null)}),!this.inputs.length&&this.isMounted()&&this.setState({canChange:!0})},attachToForm:function(t){-1===this.inputs.indexOf(t)&&this.inputs.push(t),this.validate(t)},detachFromForm:function(t){var i=this.inputs.indexOf(t);-1!==i&&(this.inputs=this.inputs.slice(0,i).concat(this.inputs.slice(i+1))),this.validateForm()},render:function(){var t=this.props,i=(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 u.createElement("form",n({},i,{onSubmit:this.submit}),this.props.children)}}),i.exports||i.module||i.define&&i.define.amd||(i.Formsy=o),t.exports=o}).call(i,function(){return this}())},function(i,e){i.exports=t},function(t,i,e){(function(i){"use strict";var r=e(3),n=i.React||e(1),s=function(t){return"string"==typeof t?t.split(/\,(?![^{\[]*[}\]])/g).reduce(function(t,i){var e=i.split(":"),r=e.shift();if(e=e.map(function(t){try{return JSON.parse(t)}catch(i){return t}}),e.length>1)throw new Error("Formsy does not support multiple args on string validations. Use object format of validations instead.");return t[r]=e.length?e[0]:!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:n.PropTypes.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){r.isSame(this.props.value,t.value)||this.setValue(this.props.value),r.isSame(this.props.validations,t.validations)&&r.isSame(this.props.required,t.required)||this.context.formsy.validate(this)},componentWillUnmount:function(){this.context.formsy.detachFromForm(this)},setValidations:function(t,i){this._validations=s(t)||{},this._requiredValidations=i===!0?{isDefaultRequiredValue:!0}:s(i)},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(i,function(){return this}())},function(t,i){"use strict";var e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol?"symbol":typeof t};t.exports={arraysDiffer:function(t,i){var e=!1;return t.length!==i.length?e=!0:t.forEach(function(t,r){this.isSame(t,i[r])||(e=!0)},this),e},objectsDiffer:function(t,i){var e=!1;return Object.keys(t).length!==Object.keys(i).length?e=!0:Object.keys(t).forEach(function(r){this.isSame(t[r],i[r])||(e=!0)},this),e},isSame:function(t,i){return("undefined"==typeof t?"undefined":e(t))!==("undefined"==typeof i?"undefined":e(i))?!1:Array.isArray(t)?!this.arraysDiffer(t,i):"function"==typeof t?t.toString()===i.toString():"object"===("undefined"==typeof t?"undefined":e(t))&&null!==t&&null!==i?!this.objectsDiffer(t,i):t===i},find:function(t,i){for(var e=0,r=t.length;r>e;e++){var n=t[e];if(i(n))return n}return null}}},function(t,i,e){(function(i){"use strict";var r=Object.assign||function(t){for(var i=1;i<arguments.length;i++){var e=arguments[i];for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])}return t},n=i.React||e(1),s=e(2);t.exports=function(){return function(t){return n.createClass({mixins:[s],render:function(){return n.createElement(t,r({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))}})}}}).call(i,function(){return this}())},function(t,i,e){(function(i){"use strict";function r(t){return t.displayName||t.name||("string"==typeof t?t:"Component")}var n=Object.assign||function(t){for(var i=1;i<arguments.length;i++){var e=arguments[i];for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])}return t},s=i.React||e(1),u=e(2);t.exports=function(t){return s.createClass({displayName:"Formsy("+r(t)+")",mixins:[u],render:function(){return s.createElement(t,n({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))}})}}).call(i,function(){return this}())},function(t,i){"use strict";var e=function(t){return null!==t&&void 0!==t},r=function(t){return""===t},n={isDefaultRequiredValue:function(t,i){return void 0===i||""===i},isExisty:function(t,i){return e(i)},matchRegexp:function(t,i,n){return!e(i)||r(i)||n.test(i)},isUndefined:function(t,i){return void 0===i},isEmptyString:function(t,i){return r(i)},isEmail:function(t,i){return n.matchRegexp(t,i,/^((([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(t,i){return n.matchRegexp(t,i,/^(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(t,i){return i===!0},isFalse:function(t,i){return i===!1},isNumeric:function(t,i){return"number"==typeof i?!0:n.matchRegexp(t,i,/^[-+]?(?:\d*[.])?\d+$/)},isAlpha:function(t,i){return n.matchRegexp(t,i,/^[A-Z]+$/i)},isAlphanumeric:function(t,i){return n.matchRegexp(t,i,/^[0-9A-Z]+$/i)},isInt:function(t,i){return n.matchRegexp(t,i,/^(?:[-+]?(?:0|[1-9]\d*))$/)},isFloat:function(t,i){return n.matchRegexp(t,i,/^(?:[-+]?(?:\d+))?(?:\.\d*)?(?:[eE][\+\-]?(?:\d+))?$/)},isWords:function(t,i){return n.matchRegexp(t,i,/^[A-Z\s]+$/i)},isSpecialWords:function(t,i){return n.matchRegexp(t,i,/^[A-Z\s\u00C0-\u017F]+$/i)},isLength:function(t,i,n){return!e(i)||r(i)||i.length===n},equals:function(t,i,n){return!e(i)||r(i)||i==n},equalsField:function(t,i,e){return i==t[e]},maxLength:function(t,i,r){return!e(i)||i.length<=r},minLength:function(t,i,n){return!e(i)||r(i)||i.length>=n}};t.exports=n},function(t,i){function e(t){return Object.keys(t).reduce(function(i,e){var r=e.match(/[^\[]*/i),n=e.match(/\[.*?\]/g)||[];n=[r[0]].concat(n).map(function(t){return t.replace(/\[|\]/g,"")});for(var s=i;n.length;){var u=n.shift();u in s?s=s[u]:(s[u]=n.length?isNaN(n[0])?{}:[]:t[e],s=s[u])}return i},{})}function r(t){function i(t,e,r){return Array.isArray(r)||"[object Object]"===Object.prototype.toString.call(r)?(Object.keys(r).forEach(function(n){i(t,e+"["+n+"]",r[n])}),t):(t[e]=r,t)}var e=Object.keys(t);return e.reduce(function(e,r){return i(e,r,t[r])},{})}t.exports={fromObj:r,toObj:e}}])});
2
+ //# sourceMappingURL=formsy-react.js.map
metadata CHANGED
@@ -1,55 +1,55 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: formsy-react-rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.17.0
4
+ version: 0.18.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tomas Achmedovas
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-10-30 00:00:00.000000000 Z
11
+ date: 2016-08-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ~>
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
19
  version: '1.7'
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ~>
24
+ - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: '1.7'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rake
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ~>
31
+ - - "~>"
32
32
  - !ruby/object:Gem::Version
33
33
  version: '10.0'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - ~>
38
+ - - "~>"
39
39
  - !ruby/object:Gem::Version
40
40
  version: '10.0'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: rails
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - '>='
45
+ - - ">="
46
46
  - !ruby/object:Gem::Version
47
47
  version: '3.1'
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - '>='
52
+ - - ">="
53
53
  - !ruby/object:Gem::Version
54
54
  version: '3.1'
55
55
  description: A form input builder and validator for React JS
@@ -59,13 +59,13 @@ executables: []
59
59
  extensions: []
60
60
  extra_rdoc_files: []
61
61
  files:
62
+ - README.md
63
+ - lib/formsy/react/rails.rb
62
64
  - lib/formsy/react/rails/engine.rb
63
65
  - lib/formsy/react/rails/version.rb
64
- - lib/formsy/react/rails.rb
65
66
  - vendor/assets/javascripts/formsy-react.js
66
67
  - vendor/assets/javascripts/formsy-react.js.map
67
68
  - vendor/assets/javascripts/formsy-react.min.js
68
- - README.md
69
69
  homepage: https://github.com/TomasAchmedovas/formsy-react-rails
70
70
  licenses:
71
71
  - MIT
@@ -76,17 +76,17 @@ require_paths:
76
76
  - lib
77
77
  required_ruby_version: !ruby/object:Gem::Requirement
78
78
  requirements:
79
- - - '>='
79
+ - - ">="
80
80
  - !ruby/object:Gem::Version
81
81
  version: '0'
82
82
  required_rubygems_version: !ruby/object:Gem::Requirement
83
83
  requirements:
84
- - - '>='
84
+ - - ">="
85
85
  - !ruby/object:Gem::Version
86
86
  version: '0'
87
87
  requirements: []
88
88
  rubyforge_project:
89
- rubygems_version: 2.0.14
89
+ rubygems_version: 2.5.1
90
90
  signing_key:
91
91
  specification_version: 4
92
92
  summary: A form input builder and validator for React JS