/**
 * Minified by jsDelivr using Terser v5.37.0.
 * Original file: /npm/rfv@0.0.41/build/Rfv.js
 *
 * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files
 */
var _extends=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var a=arguments[t];for(var n in a)Object.prototype.hasOwnProperty.call(a,n)&&(e[n]=a[n])}return e};function _objectWithoutProperties(e,t){var a={};for(var n in e)t.indexOf(n)>=0||Object.prototype.hasOwnProperty.call(e,n)&&(a[n]=e[n]);return a}import React,{Fragment,useEffect,useState}from"react";import validator from"validator";import axios from"axios";const _Form=e=>{const{runValidation:t,preSubmit:a,onSubmit:n,postSubmit:o,removeItems:s,postOptions:i,store:r}=e,c=_objectWithoutProperties(e,["runValidation","preSubmit","onSubmit","postSubmit","removeItems","postOptions","store"]);return useEffect((()=>{r.runValidation(t)}),[t]),useEffect((()=>{void 0!==s&&s.length&&r.removeItems(s)}),[s]),React.createElement("form",_extends({noValidate:!0},c,{onSubmit:e=>r.formOnSubmit({preSubmit:a,onSubmit:n,postSubmit:o,postOptions:i},e)}),e.children)},Item=e=>{const{opts:t,store:a,validations:n,className:o,onChange:s}=e,i=_objectWithoutProperties(e,["opts","store","validations","className","onChange"]);useEffect((()=>{a.itemInitialize(e)}),[e.value]),useEffect((()=>{a.itemInitialize(_extends({},e,{action:"validations"}))}),[n]);const r=a.state.items[e.name]||{value:"",className:"",invalidFeedback:""},c=(o||"")+(r.className?(o?" ":"")+r.className:"");let l;return"input"===t.element?l="checkbox"===t.type?React.createElement("input",_extends({},i,{value:r.value,className:c,checked:"on"===r.value,onChange:t=>a.itemOnChange({props:e,e:t,onChange:s})})):React.createElement("input",_extends({},i,{value:r.value,className:c,onChange:t=>a.itemOnChange({props:e,e:t,onChange:s})})):"textarea"===t.element?l=React.createElement("textarea",_extends({},i,{value:r.value,className:c,onChange:t=>a.itemOnChange({props:e,e:t,onChange:s})})):"select"===t.element&&(l=React.createElement("select",_extends({},i,{value:r.value,className:c,onChange:t=>a.itemOnChange({props:e,e:t,onChange:s})}),e.children)),React.createElement(Fragment,null,l,r.invalidFeedback?React.createElement("div",{className:"invalid-feedback"},r.invalidFeedback):null)},_Input=e=>React.createElement(Item,_extends({},e,{opts:{element:"input",type:e.type}})),_Textarea=e=>React.createElement(Item,_extends({},e,{opts:{element:"textarea"}})),_Select=e=>React.createElement(Item,_extends({},e,{opts:{element:"select"}})),Context=React.createContext(),Provider=e=>{const[t,a]=useState({}),[n,o]=useState(""),[s,i]=useState(!1),r=()=>{let e=0,n=0;for(const a in t){const o=t[a];for(const t in o.validations){const a=o.validations[t];n++;validator[a.rule](o.value,a.args)?(a.validated=!0,e++):a.validated=!1}const s=[];for(const e in o.validations){const t=o.validations[e];t.validated||s.push(t)}s.length&&(o.invalidFeedback=s[0].invalidFeedback,o.className="is-invalid")}return a(t),n===e||!1},c=()=>{const e={};for(const a in t){const n=t[a];e[a]=n.value}return e},l=e=>{let n=e.value||"";Object.prototype.hasOwnProperty.call(t,e.name)&&Object.prototype.hasOwnProperty.call(t[e.name],"value")&&"validations"===e.action&&(n=t[e.name].value),"input"===e.opts.element&&"checkbox"===e.opts.type&&Object.prototype.hasOwnProperty.call(e,"checked")&&(n=e.checked?"on":"off");const i=e.validations||[];t[e.name]={value:n,validations:i},o(n);const c=Object.assign({},t);a(c),s&&r()},m=e=>{for(const a in t)-1!==e.indexOf(a)&&delete t[a];a(_extends({},t))},d=e=>{if(e){const n=Object.keys(e),o=Object.keys(t);if(n.length)for(const a in o){const n=o[a],s=t[n];Object.prototype.hasOwnProperty.call(e,n)&&(s.value=e[n])}else for(const e in o){const a=o[e];t[a].value=""}a(_extends({},t))}},u={formOnSubmit:(e,n)=>{n.preventDefault(),e.preSubmit&&e.preSubmit({e:n,removeItems:m,setItems:d,items:c()}),i(!0);const o=r();e.onSubmit&&e.onSubmit({e:n,removeItems:m,setItems:d,items:c(),isFormValid:o}),o&&e.postOptions&&(e.postOptions.data=c(),axios(_extends({},e.postOptions)).then((s=>{const i=s.data.validations||{};let r=!0;if(Object.keys(i).length){r=!1;for(const e in i){const a=i[e];t[e].invalidFeedback=a,t[e].className="is-invalid"}const e=Object.assign({},t);a(e)}e.postSubmit&&e.postSubmit({e:n,removeItems:m,isFormValid:o,data:s.data,setItems:d,isPostSubmitFormValid:r,items:c()})})).catch((t=>{e.postSubmit&&e.postSubmit({error:t,isFormValid:o,setItems:d,items:c()})})))},itemInitialize:l,itemOnChange:e=>{const a=_extends({},e.props,{checked:e.e.target.checked,value:e.e.target.value});l(a),e.onChange&&((e=>{const a=t[e.name];for(const e in a.validations){const t=a.validations[e],n=validator[t.rule](a.value,t.args);t.validated=!!n}const n=[];for(const e in a.validations){const t=a.validations[e];t.validated||n.push(t)}a.validated=!n.length||!1})({name:e.props.name}),e.onChange({e:e.e,validated:t[e.props.name].validated}))},runValidation:e=>{i(e),e?r():(()=>{for(const e in t)t[e].className="";a(t)})()},removeItems:m,setItems:d,state:{items:t}};return React.createElement(Context.Provider,{value:u},e.children)},connectProvider=e=>t=>React.createElement(Provider,null,React.createElement(Context.Consumer,null,(a=>React.createElement(e,_extends({},t,{store:a}))))),connectConsumer=e=>t=>React.createElement(Context.Consumer,null,(a=>React.createElement(e,_extends({},t,{store:a})))),Form=connectProvider(_Form),Input=connectConsumer(_Input),Textarea=connectConsumer(_Textarea),Select=connectConsumer(_Select);export{Form,Input,Textarea,Select};
//# sourceMappingURL=/sm/3f296844e249198cfab4fe17fe40415eb444b8fc98fc71f8474eda253b421822.map