{"version":3,"sources":["js/components/formfields/RTE.js","js/components/formfields/GalleryImageField.js","js/modules/ReactFormBuilder.js"],"names":["useState","React","RTE","props","componentClassname","concat","labelPlaceholderClassname","labelplaceholder","hasErrors","hideErrors","errors","length","showErrors","maxMatch","className","match","_useState","RichTextEditor","createValueFromString","value","_useState2","Object","slicedToArray","content","setContent","react_default","a","createElement","type","classes","inheritedClasses","isDisabled","isIncomplete","isFocused","hasValue","isValid","isInvalid","checked","htmlFor","accessibilityIds","input","label","id","required","hideOptional","info","description","icon","react_rte_default","onChange","target","toString","name","ref","inputElement","current","_","get","onFocus","onBlur","error","GalleryImageField","cloneElement","aria-labelledby","aria-describedby","href","defaultImage","file","src","URL","createObjectURL","alt","onClick","event","preventDefault","files","document","getElementById","ReactFormBuilder","_React$useState","_React$useState2","activeStep","setStep","defaultValues","fieldReferences","reactFormReference","useRef","_iteratorNormalCompletion","_didIteratorError","_iteratorError","undefined","_step","_iterator","formData","Symbol","iterator","next","done","section","_iteratorNormalCompletion4","_didIteratorError4","_iteratorError4","_step4","_loop2","field","gallery","forEach","row","idx","captionName","youtubeIdName","imageName","indexName","fileName","filefield","actionName","caption","youtube","image","options","map","option","_iterator4","fields","err","return","useEffect","PubSub","subscribe","data","setInputValues","defineProperty","date","focus","_useMergableState","useMergableState","_useMergableState2","inputValues","customValidators","push","ID","validate","replace","isLastStep","steps","addCustomValidator","validatorsList","fieldName","_iteratorNormalCompletion2","_didIteratorError2","_iteratorError2","_step2","_loop","validationObject","validatorId","errorMessage","regex","RegExp","size","extension","split","pop","toLowerCase","includes","moment","Config","dateFormat","dateBefore","isBefore","isSame","_iterator2","mapValidators","validatorKeys","_iteratorNormalCompletion3","_didIteratorError3","_iteratorError3","_step3","_iterator3","mapPropsToReactField","text","tel","email","textarea","select","mappedFields","placeholder","title","tooltip","validators","validations","each","validation","errorMessages","autoFormatDate","format","renderElement","element","index","isActive","arguments","disabled","react","build","assign","fieldComponent","TextField","customProps","TextArea","RadioGroup","key","CustomField","CheckboxGroup","newValue","FileUploadField","accept","_setInputValues9","_setInputValues10","HiddenField","rteCustomProps","min","roundedPrice","Math","round","autoFormatPrice","renderSection","sectionIndex","halfSize","subHeading","data-sub-heading","publish","aria-label","onSuccess","state","e","formDataObject","resetErrors","scrollTo","formRef","formProcessor","step","Title","stepIndex","Sections","RecaptchaField","hideGoogleRecaptcha","recaptchaSiteKey","cancelUrl","window","open","cancelText","history","back","submitText"],"mappings":"sNAGQA,EAAaC,IAAbD,SAyJOE,EArJH,SAAAC,GACR,IAAMC,EAAoC,GAAAC,OAHtB,aAGsB,WAIpCC,EAA4BH,EAAMI,iBAAN,GAAAF,OACzBD,EADyB,6BAE5B,GAEAI,GACDL,EAAMM,YACPN,EAAMO,QACNP,EAAMO,OAAOC,QACbR,EAAMS,WAGJC,EAAWV,EAAMW,WAAaX,EAAMW,UAAUC,MADnC,cAfAC,EAkBahB,EAC1BiB,IAAeC,sBAAsBf,EAAMgB,MAAO,SAnBrCC,EAAAC,OAAAC,EAAA,EAAAD,CAAAL,EAAA,GAkBVO,EAlBUH,EAAA,GAkBDI,EAlBCJ,EAAA,GAkCjB,OACIK,EAAAC,EAAAC,cAAA,OACIb,UAAS,GAAAT,OAAKD,EAAL,eAAAC,OACfD,EADe,MAAAC,OACQF,EAAMyB,KADd,cAAAvB,OAEfF,EAAM0B,QAAQC,iBAFC,eAAAzB,OAGfF,EAAM0B,QAAQE,WAHC,eAAA1B,OAIfF,EAAM0B,QAAQG,aAJC,eAAA3B,OAKfF,EAAM0B,QAAQI,UALC,eAAA5B,OAMfF,EAAM0B,QAAQK,SANC,cAAA7B,OAOfF,EAAM0B,QAAQM,QAPC,sBAAA9B,OAQHF,EAAM0B,QAAQO,UARX,sBAAA/B,OASHF,EAAMkC,QAAU,aAAe,GAT5B,aAYTZ,EAAAC,EAAAC,cAAA,SAAOW,QAASnC,EAAMoC,iBAAiBC,OAElCrC,EAAMsC,MACHhB,EAAAC,EAAAC,cAAA,OACIb,UAAS,GAAAT,OAAKD,EAAL,aAAAC,OAAmCC,EAAnC,KAAAD,OAtDT,aAsDS,kBAEToB,EAAAC,EAAAC,cAAA,OACIb,UAAS,GAAAT,OAAKD,EAAL,kBACTsC,GAAIvC,EAAMoC,iBAAiBE,OAE1BtC,EAAMsC,MACNtC,EAAMwC,SAAW,KAAQxC,EAAMyC,aAI5B,KAHAnB,EAAAC,EAAAC,cAAA,QACIb,UAAS,GAAAT,OAAKD,EAAL,+BAKzB,KAEHD,EAAM0C,KACHpB,EAAAC,EAAAC,cAAA,OACIb,UAAS,GAAAT,OAAKD,EAAL,WAAAC,OAxET,aAwES,uBACTqC,GAAIvC,EAAMoC,iBAAiBO,aAE1B3C,EAAM0C,MAEX,KACJpB,EAAAC,EAAAC,cAAA,OACIb,UAAS,GAAAT,OAAKD,EAAL,sBAAAC,OACLF,EAAM4C,KAAO,WAAa,KAG7B5C,EAAM4C,KACHtB,EAAAC,EAAAC,cAAA,SACIW,QAASnC,EAAMoC,iBAAiBC,MAChC1B,UAAS,GAAAT,OAAKD,EAAL,iBAETqB,EAAAC,EAAAC,cAAA,KAAGb,UAAS,aAAAT,OAAeF,EAAM4C,SAErC,KAEJtB,EAAAC,EAAAC,cAACqB,EAAAtB,EAAD,CACIZ,UAAS,GAAAT,OAAKD,EAAL,SACTe,MAAOI,EACP0B,SAvEO,SAAA1B,GACvBC,EAAWD,GACPpB,EAAM8C,UACN9C,EAAM8C,SAAS,CACXC,OAAQ,CACJ/B,MAAOI,EAAQ4B,SAAS,QACxBC,KAAMjD,EAAMiD,SAkERC,IAAK,SAAAb,GACDrC,EAAMmD,aAAaD,IAAIE,QAAUC,IAAEC,IAC/BjB,EACA,qBACA,OAGRkB,QAAS,WACLvD,EAAMuD,SACFvD,EAAMuD,QAAQ,CACVR,OAAQ,CACJ/B,MAAOI,EAAQ4B,SAAS,QACxBC,KAAMjD,EAAMiD,SAI5BO,OAAQ,WACJxD,EAAMwD,QACFxD,EAAMwD,OAAO,CACTT,OAAQ,CACJ/B,MAAOI,EAAQ4B,SAAS,QACxBC,KAAMjD,EAAMiD,WAM/B5C,EACGiB,EAAAC,EAAAC,cAAA,OAAKb,UAAS,GAAAT,OAAKD,EAAL,iBACVqB,EAAAC,EAAAC,cAAA,KAAGb,UAAU,8BAEjB,MAEPD,GACGY,EAAAC,EAAAC,cAAA,OAAKb,UAAS,GAAAT,OAAKD,EAAL,cACTD,EAAMmD,aAAanD,MAAMgB,MAAMR,OADpC,MAC+CE,EAAS,KAM/DL,EACGiB,EAAAC,EAAAC,cAAA,OAAKb,UAAS,GAAAT,OAAKD,EAAL,aACVqB,EAAAC,EAAAC,cAAA,OACIb,UAAS,GAAAT,OAAKD,EAAL,kBACTsC,GAAIvC,EAAMoC,iBAAiBqB,OAF/B,UAIYzD,EAAMO,OAAO,KAG7B,eC1DDmD,EA3FW,SAAA1D,GACtB,IAEMK,GACDL,EAAMM,YACPN,EAAMO,QACNP,EAAMS,YACNT,EAAMO,OAAOC,OAEjB,OACIc,EAAAC,EAAAC,cAAA,OACIb,UAAS,GAAAT,OAVU,uBAUV,cAAAA,OAVU,uBAUV,MAAAA,OACQF,EAAMyB,KADd,cAAAvB,OAEfF,EAAM0B,QAAQC,iBAFC,cAAAzB,OAGfF,EAAM0B,QAAQE,WAHC,cAAA1B,OAIfF,EAAM0B,QAAQG,aAJC,cAAA3B,OAKfF,EAAM0B,QAAQI,UALC,cAAA5B,OAMfF,EAAM0B,QAAQK,SANC,cAAA7B,OAOfF,EAAM0B,QAAQM,QAPC,sBAAA9B,OAQHF,EAAM0B,QAAQO,UARX,sBAAA/B,OASHF,EAAMkC,QAAU,aAAe,GAT5B,sBAAAhC,OAUHG,EAAY,aAAe,GAVxB,aAcTiB,EAAAC,EAAAC,cAAA,OAAKb,UAAS,GAAAT,OAxBK,uBAwBL,sBAETJ,IAAM6D,aAAa3D,EAAMmD,aAAc,CACpCS,kBAAmB5D,EAAMsC,MACnBtC,EAAMoC,iBAAiBE,MACvB,KACNuB,mBAAoB7D,EAAM0C,KACpB1C,EAAMoC,iBAAiBO,YACvB,QAGdrB,EAAAC,EAAAC,cAAA,SAAOW,QAASnC,EAAMoC,iBAAiBC,OACnCf,EAAAC,EAAAC,cAAA,OAAKb,UAAS,GAAAT,OApCC,uBAoCD,sBACVoB,EAAAC,EAAAC,cAAA,QACIsC,KAAK,IACLnD,UAAS,GAAAT,OAvCF,uBAuCE,oBAFb,WAOJoB,EAAAC,EAAAC,cAAA,QAAMb,UAAS,GAAAT,OA5CA,uBA4CA,eACVF,EAAM+D,cACH/D,EAAMgE,KAAKf,MACX,qBAENjD,EAAMgE,KAAKf,MAAQjD,EAAM+D,eACvBzC,EAAAC,EAAAC,cAAA,OACIb,UAAS,GAAAT,OAnDF,uBAmDE,aACT+D,IACIjE,EAAM+D,cACNG,IAAIC,gBAAgBnE,EAAMgE,MAE9BI,IAAK,gBAGXpE,EAAMgE,KAAKf,MAAQjD,EAAM+D,eACvBzC,EAAAC,EAAAC,cAAA,UACIC,KAAK,SACL4C,QAAS,SAAAC,GACLA,EAAMC,iBACNvE,EAAM8C,SAAS,CACXC,OAAQ,CAAEyB,MAAO,GAAIvB,KAAMjD,EAAMiD,QAErCwB,SAASC,eACL1E,EAAMoC,iBAAiBC,OACzBrB,MAAQ,IAEdL,UAAS,GAAAT,OAvEF,uBAuEE,sCAKpBG,EACGiB,EAAAC,EAAAC,cAAA,OAAKb,UAAS,GAAAT,OA7EC,uBA6ED,aACVoB,EAAAC,EAAAC,cAAA,OACIb,UAAS,GAAAT,OA/EF,uBA+EE,kBACTqC,GAAIvC,EAAMoC,iBAAiBqB,OAF/B,UAIYzD,EAAMO,OAAO,KAG7B,oECg1BDoE,UAl4BU,SAAC3E,GAAiC,IAAA4E,EACzB9E,WAAe,GADU+E,EAAA3D,OAAAC,EAAA,EAAAD,CAAA0D,EAAA,GAChDE,EADgDD,EAAA,GACpCE,EADoCF,EAAA,GAEjDG,EAAgB,GAChBC,EAAkB,GAClBC,EAA0BC,iBAAO,MAJgBC,GAAA,EAAAC,GAAA,EAAAC,OAAAC,EAAA,IAKvD,QAAAC,EAAAC,EAAsBzF,EAAM0F,SAA5BC,OAAAC,cAAAR,GAAAI,EAAAC,EAAAI,QAAAC,MAAAV,GAAA,EAAsC,KAA3BW,EAA2BP,EAAAxE,MAAAgF,GAAA,EAAAC,GAAA,EAAAC,OAAAX,EAAA,IAClC,IADkC,IAClCY,EADkCC,EAAA,eACvBC,EADuBF,EAAAnF,MAE9B,GAAmB,YAAfqF,EAAM5E,KAgBN,OAfA4E,EAAMC,QAAQC,QAAQ,SAACC,EAAaC,GAChC,IAAMC,EAAW,GAAAxG,OAAMmG,EAAMpD,KAAZ,KAAA/C,OAAoBuG,EAAM,EAA1B,YACXE,EAAa,GAAAzG,OAAMmG,EAAMpD,KAAZ,KAAA/C,OAAoBuG,EAAM,EAA1B,cACbG,EAAS,GAAA1G,OAAMmG,EAAMpD,KAAZ,KAAA/C,OAAoBuG,EAAM,EAA1B,UACTI,EAAS,GAAA3G,OAAMmG,EAAMpD,KAAZ,KAAA/C,OAAoBuG,EAAM,EAA1B,eACTK,EAAQ,GAAA5G,OAAMmG,EAAMpD,KAAZ,KAAA/C,OAAoBuG,EAAM,EAA1B,SACRM,EAAS,GAAA7G,OAAMmG,EAAMpD,KAAZ,KAAA/C,OAAoBuG,EAAM,EAA1B,cACTO,EAAU,GAAA9G,OAAMmG,EAAMpD,KAAZ,KAAA/C,OAAoBuG,EAAM,EAA1B,WAChBzB,EAAc0B,GAAd,GAAAxG,OAAgCsG,EAAIS,SACpCjC,EAAc2B,GAAd,GAAAzG,OAAkCsG,EAAIU,SACtClC,EAAc4B,GAAd,GAAA1G,OAA8BsG,EAAIW,OAClCnC,EAAc6B,GAAd,GAAA3G,OAA8BuG,EAAM,GACpCzB,EAAc+B,GAAaD,EAC3B9B,EAAcgC,GAAd,WAEJ,WAEJ,IAAIhG,EAAQqF,EAAMrF,MACC,aAAfqF,EAAM5E,OACNT,EAAQ,GACRqF,EAAMe,QAAQC,IAAI,SAACC,GAEf,OADAtG,EAAMsG,EAAOtG,OAASsG,EAAOpF,QACtB,QAGf8C,EAAcqB,EAAMpD,MAAQjC,GA3BhCuG,EAAoBxB,EAAQyB,OAA5B7B,OAAAC,cAAAI,GAAAG,EAAAoB,EAAA1B,QAAAC,MAAAE,GAAA,EAAoCI,IADF,MAAAqB,GAAAxB,GAAA,EAAAC,EAAAuB,EAAA,YAAAzB,GAAA,MAAAuB,EAAAG,QAAAH,EAAAG,SAAA,WAAAzB,EAAA,MAAAC,KALiB,MAAAuB,GAAApC,GAAA,EAAAC,EAAAmC,EAAA,YAAArC,GAAA,MAAAK,EAAAiC,QAAAjC,EAAAiC,SAAA,WAAArC,EAAA,MAAAC,GAoCvDqC,oBAAU,WACNC,IAAOC,UAAP,aAA+B,SAACC,GACV,kBAAdA,EAAKrG,OACLsG,EAAe7G,OAAA8G,EAAA,EAAA9G,CAAA,GACV4G,EAAKvF,GAAKuF,EAAKG,OAEhBhD,EAAgB6C,EAAKvF,IAAIa,SACzB6B,EAAgB6C,EAAKvF,IAAIa,QAAQ8E,YAI9C,IA/CoD,IAAAC,EAiDjBC,YAAiBpD,GAjDAqD,EAAAnH,OAAAC,EAAA,EAAAD,CAAAiH,EAAA,GAiDhDG,EAjDgDD,EAAA,GAiDnCN,EAjDmCM,EAAA,GAkDjDE,EAAmB,GAEzBA,EAAiBC,KAAK,CAClBC,GAAI,eACJC,SAAU,SAACrG,GACP,QACMA,EAAMrB,OAASqB,EAAMrB,MAAM2H,QAAQ,WAAY,IAAInI,OAAS,GAGtEiD,MAAO,yCAGX,IAAMmF,GACD5I,EAAM6I,OACgB,IAAvB7I,EAAM6I,MAAMrI,QACZsE,IAAe9E,EAAM6I,MAAMrI,OAAS,EAElCsI,EAAqB,SAACC,EAAwBC,GAAsB,IAAAC,GAAA,EAAAC,GAAA,EAAAC,OAAA5D,EAAA,IACtE,IADsE,IACtE6D,EADsEC,EAAA,eAC3DC,EAD2DF,EAAApI,MAE5DuI,EAAW,GAAArJ,OAAM8I,EAAN,KAAA9I,OAAmBoJ,EAAiB7H,MAErD,GAA8B,kBAA1B6H,EAAiB7H,KACjB8G,EAAiBC,KAAK,CAClBC,GAAIc,EACJb,SAAU,SAACrG,GACP,OAAOA,EAAMrB,MAAMR,QAAU8I,EAAiBtI,OAElDyC,MAAO6F,EAAiBE,oBAEzB,GAA8B,kBAA1BF,EAAiB7H,KACxB8G,EAAiBC,KAAK,CAClBC,GAAIc,EACJb,SAAU,SAACrG,GACP,OAAOA,EAAMrB,MAAMR,QAAU8I,EAAiBtI,OAElDyC,MAAO6F,EAAiBE,oBAEzB,GAA8B,sBAA1BF,EAAiB7H,KAA8B,CACtD,IAAMgI,EAAQ,IAAIC,OAAOJ,EAAiBtI,OAC1CuH,EAAiBC,KAAK,CAClBC,GAAIc,EACJb,SAAU,SAACrG,GACP,OAAOA,EAAMrB,MAAMJ,MAAM6I,IAE7BhG,MAAO6F,EAAiBE,mBAEK,aAA1BF,EAAiB7H,KACxB8G,EAAiBC,KAAK,CAClBC,GAAIc,EACJb,SAAU,SAACrG,GACP,OACIA,EAAMrB,OACNqB,EAAMrB,MAAM2I,MAAQL,EAAiBtI,OAG7CyC,MAAO6F,EAAiBE,eAEK,aAA1BF,EAAiB7H,KACxB8G,EAAiBC,KAAK,CAClBC,GAAIc,EACJb,SAAU,SAACrG,GACP,IAAMuH,EAAYvH,EAAMrB,MAAMiC,KACzB4G,MAAM,KACNC,MACAC,cAGL,OAAOT,EAAiBtI,MAAMgJ,SAASJ,IAE3CnG,MAAO6F,EAAiBE,eAEK,cAA1BF,EAAiB7H,KACxB8G,EAAiBC,KAAK,CAClBC,GAAIc,EACJb,SAAU,SAACrG,GAEP,OADa4H,IAAO5H,EAAMrB,MAAOkJ,IAAOC,YAC5BnI,WAEhByB,MAAO,wBAEsB,eAA1B6F,EAAiB7H,MAExB8G,EAAiBC,KAAK,CAClBC,GAAIc,EACJb,SAAU,SAACrG,GACP,IAAM4F,EAAOgC,IAAO5H,EAAMrB,MAAOkJ,IAAOC,YAClCC,EAAaH,IACfhF,EAAgBqE,EAAiBtI,OAAOoC,QACnCpC,MACLkJ,IAAOC,YAEX,OACIlC,EAAKjG,WACLoI,EAAWpI,YACVoI,EAAWC,SAASpC,IACjBmC,EAAWE,OAAOrC,KAG9BxE,MAAO,mCAhFnB8G,EAA+BxB,EAA/BpD,OAAAC,cAAAqD,GAAAG,EAAAmB,EAAA1E,QAAAC,MAAAmD,GAAA,EAA+CI,IADuB,MAAA5B,GAAAyB,GAAA,EAAAC,EAAA1B,EAAA,YAAAwB,GAAA,MAAAsB,EAAA7C,QAAA6C,EAAA7C,SAAA,WAAAwB,EAAA,MAAAC,KAsFpEqB,EAAgB,SAACzB,EAAwBC,GAC3C,IAAMyB,EAAgB,GADgDC,GAAA,EAAAC,GAAA,EAAAC,OAAArF,EAAA,IAEtE,QAAAsF,EAAAC,EAA+B/B,EAA/BpD,OAAAC,cAAA8E,GAAAG,EAAAC,EAAAjF,QAAAC,MAAA4E,GAAA,EAA+C,KAApCpB,EAAoCuB,EAAA7J,MACrCuI,EAAW,GAAArJ,OAAM8I,EAAN,KAAA9I,OAAmBoJ,EAAiB7H,MACrDgJ,EAAcjC,KAAKe,GACnBkB,EAAcjC,KAAKc,EAAiB7H,OAL8B,MAAAgG,GAAAkD,GAAA,EAAAC,EAAAnD,EAAA,YAAAiD,GAAA,MAAAI,EAAApD,QAAAoD,EAAApD,SAAA,WAAAiD,EAAA,MAAAC,GAOtE,OAAOH,GAELM,EAAuB,SAAC1I,GAC1B,IAWMZ,EAXc,CAChBuJ,KAAM,OACNC,IAAK,MACLC,MAAO,QACPC,SAAU,WACVC,OAAQ,SACRpH,KAAM,OACNiE,KAAM,OACN3F,MAAO,SAGcD,EAAMZ,MAEzB4J,EAAoB,CACtB5J,OACAa,MAAOD,EAAMC,MACbW,KAAMZ,EAAMY,KACZqI,YAAajJ,EAAMiJ,aAAe,GAClC9I,SAAUH,EAAMG,WAAY,EAC5B+I,MAAOlJ,EAAMmJ,SAAW,GACxB9I,KAAML,EAAMK,KACZ+I,WAAYjB,EAAcnI,EAAMqJ,YAAarJ,EAAMY,OAsEvD,OApEA6F,EAAmBzG,EAAMqJ,YAAarJ,EAAMY,MAE/B,SAATxB,IACA4J,EAAarK,MAAQqB,EAAMrB,OAAS,IAIrB,QAAfqB,EAAMZ,MACN4J,EAAaI,WAAWjD,KAAK,UAEd,UAAfnG,EAAMZ,MACN4J,EAAaI,WAAWjD,KAAK,SAGjCnF,IAAEsI,KAAKtJ,EAAMqJ,YAAa,SAACE,GACC,aAApBA,EAAWnK,OACX4J,EAAaQ,cAAgB,CACzBrJ,SAAUoJ,EAAWpC,cAEzB6B,EAAa7I,UAAW,KAIb,SAAfH,EAAMZ,OACNqH,EACI,CACI,CACIrH,KAAM,cAGdY,EAAMY,MAEVoI,EAAaI,WAAWjD,KAAxB,GAAAtI,OAAgCmC,EAAMY,KAAtC,gBAEe,SAAfZ,EAAMZ,OACNqH,EACI,CACI,CACIrH,KAAM,WACNT,MAAO,CACH,MACA,OACA,MACA,MACA,MACA,MACA,OACA,MACA,OACA,MACA,OAEJwI,aACI,kHAER,CACI/H,KAAM,WACNT,MAAO,QACPwI,aACI,mHAGZnH,EAAMY,MAEVoI,EAAaI,WAAWjD,KAAxB,GAAAtI,OAAgCmC,EAAMY,KAAtC,cACAoI,EAAaI,WAAWjD,KAAxB,GAAAtI,OAAgCmC,EAAMY,KAAtC,eAGGoI,GAGLS,EAAiB,SAACxH,EAAY7C,EAAcwB,GAC9C,GAAa,SAATxB,EAAiB,CACjB,IAAMwG,EAAOgC,IAAO3F,EAAMvB,OAAO/B,MAAOkJ,IAAOC,YAC3ClC,EAAKjG,WACL+F,EAAe7G,OAAA8G,EAAA,EAAA9G,CAAA,GACV+B,EAAOgF,EAAK8D,OAAO7B,IAAOC,gBAerC6B,EAAgB,SAClBC,EACAC,GAEa,IADbC,IACaC,UAAA5L,OAAA,QAAA+E,IAAA6G,UAAA,KAAAA,UAAA,GACb,OAAQH,EAAQxK,MACZ,IAAK,OACL,IAAK,SACL,IAAK,QACL,IAAK,MACL,IAAK,OACDwD,EAAgBgH,EAAQhJ,MAAQkC,iBAAO,MACvC,IAAIkH,GAAW,EAQf,MANqB,kBAAjBJ,EAAQhJ,MACRqF,EAAW,MACXA,EAAW,KAAX,OAEA+D,GAAW,GAGXC,EAAA,cAACC,EAAA,eAADrL,OAAAsL,OAAA,GACQzB,EAAqBkB,GAD7B,CAEItL,UACqB,SAAjBsL,EAAQxK,KAAkB,iBAAmB,GAEjDe,UACI6J,GAEMF,GACApB,EAAqBkB,GAASzJ,SAExCxB,MAAOsH,EAAY2D,EAAQhJ,MAC3BxB,KAAuB,SAAjBwK,EAAQxK,KAAkB,OAASwK,EAAQxK,KACjDgL,eAAgBC,IAChBxJ,IAAK+B,EAAgBgH,EAAQhJ,MAC7BH,SAAU,SAACwB,GACPyD,EAAe7G,OAAA8G,EAAA,EAAA9G,CAAA,GACV+K,EAAQhJ,KAAOqB,EAAMvB,OAAO/B,SAGrCwC,OAAQ,SAACc,GACLwH,EAAexH,EAAO2H,EAAQxK,KAAMwK,EAAQhJ,OAEhDoJ,SAAUA,KAGtB,IAAK,WACD,IAAMM,EAAc,GAOpB,OANAtJ,IAAEsI,KAAKM,EAAQP,YAAa,SAACE,GACD,kBAApBA,EAAWnK,OACXkL,EAAW,UAAX,OAAAzM,OAAkC0L,EAAW5K,UAKjDsL,EAAA,cAACC,EAAA,eAADrL,OAAAsL,OAAA,GACQzB,EAAqBkB,GACrBU,EAFR,CAGI3L,MAAOsH,EAAY2D,EAAQhJ,MAC3BT,SACI2J,GAAYpB,EAAqBkB,GAASzJ,SAE9Cf,KAAMwK,EAAQxK,KACdgL,eAAgBG,IAChB9J,SAAU,SAACwB,GACPyD,EAAe7G,OAAA8G,EAAA,EAAA9G,CAAA,GACV+K,EAAQhJ,KAAOqB,EAAMvB,OAAO/B,YAKjD,IAAK,QACD,OACIsL,EAAA,cAACO,EAAA,EAAD,CACIvK,MAAO2J,EAAQ3J,MACfI,KAAMuJ,EAAQvJ,MAAQ,GACtB8I,QAASS,EAAQT,SAAW,IAE5Bc,EAAA,qBAAK3L,UAAU,mBACVsL,EAAQ7E,QAAQC,IACb,SAACC,EAAa4E,GAAd,OACII,EAAA,cAACC,EAAA,eAAD,CACIO,IAAKZ,EACLzK,KAAM,QACNwB,KAAMqE,EAAOrE,KACbX,MAAOgF,EAAOhF,MACdtB,MAAOsG,EAAOtG,MACd0B,KAAM,GACN+J,eAAgBM,IAChB7K,QACIoG,EAAYhB,EAAOrE,QACnBqE,EAAOtG,MAEX8B,SAAU,SAACwB,GACPyD,EAAe7G,OAAA8G,EAAA,EAAA9G,CAAA,GACVoG,EAAOrE,KAAOqE,EAAOtG,SAG9BwB,SAAUyJ,EAAQzJ,eAO9C,IAAK,WACD,OACI8J,EAAA,cAACU,EAAA,EAAD,CACI1K,MAAO2J,EAAQ3J,MACfI,KAAMuJ,EAAQvJ,KACd8I,QAASS,EAAQT,SAAW,IAE5Bc,EAAA,qBAAK3L,UAAU,mBACVsL,EAAQ7E,QAAQC,IACb,SAACC,EAAa4E,GAAd,OACII,EAAA,cAACC,EAAA,eAADrL,OAAAsL,OAAA,GACQzB,EAAqBkB,GAD7B,CAEIa,IAAKZ,EACLzK,KAAM,WACNgL,eAAgBM,IAChB9J,KAAMqE,EAAOtG,MACb0B,KAAM,GACN1B,MACIsH,EAAYhB,EAAOrE,MACfqE,EAAOtG,OAEL,KACA,GAEVsB,MAAOgF,EAAOhF,MACdC,GAAI+E,EAAOtG,MACXkB,QACIoG,EAAYhB,EAAOrE,MACfqE,EAAOtG,OAGf8B,SAAU,SAACwB,GACP,IAAM2I,EACF3E,EAAYhB,EAAOrE,MACvBgK,EAAS3F,EAAOtG,OACZsD,EAAMvB,OAAOb,QACjB6F,EAAe7G,OAAA8G,EAAA,EAAA9G,CAAA,GACVoG,EAAOrE,KAAOgK,YASnD,IAAK,SACD,OACIX,EAAA,cAACC,EAAA,eAADrL,OAAAsL,OAAA,GACQzB,EAAqBkB,GAD7B,CAEIjL,MAAOsH,EAAY2D,EAAQhJ,OAAS,GACpCtC,UACIsL,EAAQX,cAAgBhD,EAAY2D,EAAQhJ,MACtC,kBACA,GAEVH,SAAU,SAACwB,GACPyD,EAAe7G,OAAA8G,EAAA,EAAA9G,CAAA,GACV+K,EAAQhJ,KAAOqB,EAAMvB,OAAO/B,WAIpCiL,EAAQX,cAAgBhD,EAAY2D,EAAQhJ,OACzCqJ,EAAA,wBAAQtL,MAAM,IAAIiL,EAAQX,aAE7BW,EAAQ7E,QAAQC,IACb,SAACC,EAAa4E,GAAd,OACII,EAAA,wBAAQtL,MAAOsG,EAAOtG,MAAO8L,IAAKZ,GAC7B5E,EAAOhF,UAMhC,IAAK,OACD,OACIgK,EAAA,cAACC,EAAA,eAADrL,OAAAsL,OAAA,GACQzB,EAAqBkB,GAD7B,CAEIQ,eAAgBS,IAChBzL,KAAMwK,EAAQxK,QAG1B,IAAK,QACD,OACI6K,EAAA,cAAAA,EAAA,cACIA,EAAA,mBAAG3L,UAAW,sBAAuBsL,EAAQV,OAC7Ce,EAAA,mBAAG3L,UAAW,4BACTsL,EAAQtJ,cAIzB,IAAK,UACD,OACI2J,EAAA,cAAAA,EAAA,cACIA,EAAA,mBAAG3L,UAAW,kBAAmBsL,EAAQ3J,QAGrD,IAAK,UACD,OACIgK,EAAA,cAAAA,EAAA,cACKL,EAAQ3F,QAAQe,IACb,SAACb,EAAaC,GACV,IAAMM,EAAS,GAAA7G,OAAM+L,EAAQhJ,KAAd,KAAA/C,OAAsBuG,EACjC,EADW,cAETK,EAAQ,GAAA5G,OAAM+L,EAAQhJ,KAAd,KAAA/C,OAAsBuG,EAChC,EADU,SAERC,EAAW,GAAAxG,OAAM+L,EAAQhJ,KAAd,KAAA/C,OAAsBuG,EACnC,EADa,YAEXE,EAAa,GAAAzG,OAAM+L,EAAQhJ,KAAd,KAAA/C,OAAsBuG,EACrC,EADe,cAEbI,EAAS,GAAA3G,OAAM+L,EAAQhJ,KAAd,KAAA/C,OAAsBuG,EACjC,EADW,eAETO,EAAU,GAAA9G,OAAM+L,EAAQhJ,KAAd,KAAA/C,OAAsBuG,EAClC,EADY,WAEVG,EAAS,GAAA1G,OAAM+L,EAAQhJ,KAAd,KAAA/C,OAAsBuG,EACjC,EADW,UAEf,OACI6F,EAAA,qBACI3L,UAAU,sBACVmM,IAAKb,EAAQhJ,KAAOwD,GAEpB6F,EAAA,cAACC,EAAA,eAAD,CACItJ,KAAM6D,EACNrF,KAAM,OACN0L,OAAO,UACPV,eAAgB/I,EAChBlB,SACI2J,IACC7D,EAAY1B,IACbmE,EAAqBkB,GAChBzJ,SAETqJ,cAAe,CACXrJ,SACI,2BAERuB,aACIuE,EAAY1B,GAEhB9D,SAAU,SAACwB,GAIL,IAAA8I,EAQKC,EAVH/I,EAAMvB,OAAOyB,MAAMhE,OACnB,EAEAuH,GAAcqF,EAAA,GAAAlM,OAAA8G,EAAA,EAAA9G,CAAAkM,EACTtG,EACGxC,EAAMvB,OACDyB,MAAM,IAHLtD,OAAA8G,EAAA,EAAA9G,CAAAkM,EAITpG,EAAa,UAJJ9F,OAAA8G,EAAA,EAAA9G,CAAAkM,EAKTxG,EAAY,IALHwG,IAQdrF,GAAcsF,EAAA,GAAAnM,OAAA8G,EAAA,EAAA9G,CAAAmM,EACTvG,EAAW,MADF5F,OAAA8G,EAAA,EAAA9G,CAAAmM,EAETrG,EAAa,UAFJ9F,OAAA8G,EAAA,EAAA9G,CAAAmM,EAGTzG,EAAY,IAHHyG,OAQ1Bf,EAAA,yBACIA,EAAA,cAACC,EAAA,eAAD,CACItJ,KAAMyD,EACN1F,MAAOsH,EAAY5B,GACnBjF,KAAM,OACNa,MAAM,qBACNmK,eAAgBC,IAChB5J,SAAU,SAACwB,GACPyD,EAAe7G,OAAA8G,EAAA,EAAA9G,CAAA,GACVwF,EACGpC,EAAMvB,OAAO/B,SAGzBwC,OAAQ,SAACc,GACLwH,EACIxH,EACA,OACAoC,MAIZ4F,EAAA,cAACC,EAAA,eAAD,CACItJ,KAAM0D,EACN3F,MACIsH,EAAY3B,GAEhBlF,KAAM,OACNgL,eAAgBC,IAChBpK,MAAM,wBACNQ,SAAU,SAACwB,GACPyD,EAAe7G,OAAA8G,EAAA,EAAA9G,CAAA,GACVyF,EACGrC,EAAMvB,OAAO/B,SAGzBwC,OAAQ,SAACc,GACLwH,EACIxH,EACA,OACAqC,OAKhB2F,EAAA,yBACIA,EAAA,cAACC,EAAA,eAAD,CACItJ,KAAM4D,EACN7F,MAAOsH,EAAYzB,GACnBpF,KAAM,OACNgL,eAAgBC,IAChBpK,MAAM,QACNQ,SAAU,SAACwB,GACPyD,EAAe7G,OAAA8G,EAAA,EAAA9G,CAAA,GACV2F,EACGvC,EAAMvB,OAAO/B,SAGzBwC,OAAQ,SAACc,GACLwH,EACIxH,EACA,OACAuC,OAKhByF,EAAA,yBACIA,EAAA,cAACC,EAAA,eAAD,CACIvL,MACIsH,EAAYvB,IAAc,GAE9BtF,KAAK,OACLgL,eAAgBa,IAChB9K,UAAU,EACVS,KAAM8D,IAEVuF,EAAA,cAACC,EAAA,eAAD,CACIvL,MACIsH,EAAYtB,IACZ,GAEJvF,KAAK,OACLgL,eAAgBa,IAChB9K,UAAU,EACVS,KAAM+D,SAS1C,IAAK,MACD,IAAMuG,EAAiB,GACvBlK,IAAEsI,KAAKM,EAAQP,YAAa,SAACE,GACD,kBAApBA,EAAWnK,OACX8L,EAAc,UAAd,OAAArN,OAAqC0L,EAAW5K,UAGxD,IAAMyK,EAAaV,EAAqBkB,GAASR,WAIjD,OAHIU,GAAYpB,EAAqBkB,GAASzJ,UAC1CiJ,EAAWjD,KAAK,gBAGhB8D,EAAA,cAACC,EAAA,eAADrL,OAAAsL,OAAA,GACQzB,EAAqBkB,GACrBsB,EAFR,CAGIvM,MAAOsH,EAAY2D,EAAQhJ,MAC3BT,SACI2J,GAAYpB,EAAqBkB,GAASzJ,SAE9CiJ,WAAYA,EACZhK,KAAM,WACNgL,eAAgB1M,EAChB+C,SAAU,SAACwB,GACPyD,EAAe7G,OAAA8G,EAAA,EAAA9G,CAAA,GACV+K,EAAQhJ,KAAOqB,EAAMvB,OAAO/B,YAKjD,IAAK,YACD,OAAOsL,EAAA,0BACX,IAAK,QAED,OADArH,EAAgBgH,EAAQhJ,MAAQkC,iBAAO,MAEnCmH,EAAA,cAACC,EAAA,eAADrL,OAAAsL,OAAA,GACQzB,EAAqBkB,GAD7B,CAEItL,UAAU,WACV6B,SACI2J,GAAYpB,EAAqBkB,GAASzJ,SAE9CxB,MAAOsH,EAAY2D,EAAQhJ,MAC3BxB,KAAK,SACL+L,IAAK,EACLf,eAAgBC,IAChBxJ,IAAK+B,EAAgBgH,EAAQhJ,MAC7BH,SAAU,SAACwB,GACPyD,EAAe7G,OAAA8G,EAAA,EAAA9G,CAAA,GACV+K,EAAQhJ,KAAOqB,EAAMvB,OAAO/B,SAGrCwC,OAAQ,SAACc,IAlaL,SAACA,EAAY7C,EAAcwB,GAC/C,GAAa,UAATxB,EAAkB,CAClB,IAAMgM,EAAeC,KAAKC,MAA2B,IAArBrJ,EAAMvB,OAAO/B,OAAe,IAC5D+G,EAAe7G,OAAA8G,EAAA,EAAA9G,CAAA,GACV+B,EAAOwK,KA+ZIG,CAAgBtJ,EAAO2H,EAAQxK,KAAMwK,EAAQhJ,UAI7D,QACI,OAAOqJ,EAAA,oDAA8BL,EAAQxK,QAInDoM,EAAgB,SAClB9H,EACA+H,GAFkB,IAGlB3B,IAHkBC,UAAA5L,OAAA,QAAA+E,IAAA6G,UAAA,KAAAA,UAAA,UAKlBE,EAAA,0BAAU3L,UAAU,sBAAsBmM,IAAKgB,GAC1C/H,EAAQwF,OACLe,EAAA,wBAAQ3L,UAAU,6BACboF,EAAQwF,OAIjBe,EAAA,qBAAK3L,UAAU,kCACVoF,EAAQyB,OAAOH,IACZ,SAAC4E,EAAcC,GAAf,OACII,EAAA,qBACI3L,UAAS,4CAAAT,OACL+L,EAAQxK,KADH,KAAAvB,OAGL+L,EAAQ8B,SACF,4BACA,GALD,KAAA7N,OAOL+L,EAAQ+B,WACF,sCACA,IAEVlB,IAAKZ,EACL+B,mBAAkBhC,EAAQ+B,YAEzBhC,EAAcC,EAASC,EAAOC,GACb,SAAjBF,EAAQxK,KACL6K,EAAA,wBACI7K,KAAK,SACLd,UAAU,8BACV0D,QAAS,SAACC,GACNA,EAAMC,iBACNqD,IAAOsG,QAAQ,aAAc,CACzBzM,KAAM,eACNc,GAAI0J,EAAQhJ,QAGpBkL,aAAW,mBAEX7B,EAAA,mBAAG3L,UAAU,wBAEjB,WAO5B,OACI2L,EAAA,cAACC,EAAA,UAAD,CACId,WAAYlD,EACZ6F,UAAW,SACPtG,EACAuG,EACAC,EACAC,GAEA,GACIvO,EAAM6I,OACN7I,EAAM6I,MAAMrI,OAAS,GACrBsE,EAAa9E,EAAM6I,MAAMrI,OAAS,EASlC,OAPA0E,EAAmB9B,QAAQoL,cAC3BzJ,EAAQD,EAAa,QACrB2J,YACIvJ,EAAmB9B,QAAQsL,QAAQtL,QACnC,EACA,KAIRpD,EAAM2O,cAAcJ,IAExB5N,UAAU,mBACVuC,IAAKgC,GAEJlF,EAAM6I,OAAS7I,EAAM6I,MAAMrI,QACxB8L,EAAA,qBAAK3L,UAAU,6BACVX,EAAM6I,MAAMxB,IAAI,SAACuH,EAAW1C,GACzB,OACII,EAAA,qBACIQ,IAAKZ,EACLvL,UAAS,kBAAAT,OACLgM,GAASpH,EAAa,aAAe,KAGzCwH,EAAA,qBAAK3L,UAAS,uBACTuL,EAAQpH,EACLwH,EAAA,mBAAG3L,UAAS,mBAEZuL,EAAQ,GAGhBI,EAAA,qBAAK3L,UAAS,uBACTiO,EAAKC,WAO7B7O,EAAM6I,OAAS7I,EAAM6I,MAAMrI,OACtBR,EAAM6I,MAAMxB,IACR,SAACuH,EAAWE,GAAZ,OACIxC,EAAA,0BACI3L,UAAS,oBAAAT,OACL4O,IAAchK,EAAa,UAAY,IAE3CgI,IAAKgC,GAEJF,EAAKC,OACFvC,EAAA,wBAAQ3L,UAAU,0BACbiO,EAAKC,OAGdvC,EAAA,qBAAK3L,UAAU,+BACViO,EAAKG,SAAS1H,IACX,SACIyG,EACA5B,GAFJ,OAII2B,EACI7N,EAAM0F,SAASoI,GACf5B,EACA4C,GAAahK,SAOzC9E,EAAM0F,SAAS2B,IAAIwG,GAGzBvB,EAAA,cAACC,EAAA,eAAD,CACIvL,MAAOsH,EAAW,yBAA+B,GACjD7G,KAAK,OACLgL,eAAgBuC,IAChBxM,UAAWxC,EAAMiP,qBAAuBrG,EACxCsG,iBAAkBlP,EAAMkP,iBACxBjM,KAAK,0BACLC,IAAK+B,EAAe,OACpBnC,SAAU,SAACwB,GACPyD,EAAe7G,OAAA8G,EAAA,EAAA9G,CAAA,GACVoD,EAAMvB,OAAOE,KAAOqB,EAAMvB,OAAO/B,WAK7ChB,EAAMmP,WAAavG,EAChB0D,EAAA,wBACI7K,KAAK,SACLd,UAAU,6DACV0D,QAAS,WACL+K,OAAOC,KAAKrP,EAAMmP,UAAW,WAGhCnP,EAAMsP,YAAc,UAGzBtP,EAAM6I,OACN7I,EAAM6I,MAAMrI,OAAS,GACjB8L,EAAA,wBACI7K,KAAK,SACLd,UAAU,6DACV0D,QAAS,WACc,IAAfS,EACAsK,OAAOG,QAAQC,QAEftK,EAAmB9B,QAAQoL,cAC3BzJ,EAAQD,EAAa,GACrB2J,YACIvJ,EAAmB9B,QAAQsL,QAAQtL,QACnC,EACA,QAKX,YAIbkJ,EAAA,wBACI7K,KAAK,SACLd,UAAU,+CAETX,EAAM6I,OACP7I,EAAM6I,MAAMrI,OAAS,GACrBsE,EAAa9E,EAAM6I,MAAMrI,OAAS,EAC5B,OACAR,EAAMyP,YAAc","file":"static/js/1.c523a8bf.chunk.js","sourcesContent":["import React from \"react\";\r\nimport RichTextEditor from \"react-rte\";\r\nimport _ from \"lodash\";\r\nconst { useState } = React;\r\n\r\nconst parentClassname = \"react-form\";\r\n\r\nconst RTE = props => {\r\n    const componentClassname = parentClassname\r\n        ? `${parentClassname}__field`\r\n        : \"field\";\r\n\r\n    const labelPlaceholderClassname = props.labelplaceholder\r\n        ? `${componentClassname}__label--labelplaceholder`\r\n        : \"\";\r\n\r\n    const hasErrors =\r\n        !props.hideErrors &&\r\n        props.errors &&\r\n        props.errors.length &&\r\n        props.showErrors;\r\n\r\n    const maxRegex = /max-(\\d+)/i;\r\n    const maxMatch = props.className && props.className.match(maxRegex);\r\n\r\n    const [content, setContent] = useState(\r\n        RichTextEditor.createValueFromString(props.value, \"html\")\r\n    );\r\n\r\n    const handleEditorChange = content => {\r\n        setContent(content);\r\n        if (props.onChange) {\r\n            props.onChange({\r\n                target: {\r\n                    value: content.toString(\"html\"),\r\n                    name: props.name,\r\n                },\r\n            });\r\n        }\r\n    };\r\n\r\n    return (\r\n        <div\r\n            className={`${componentClassname} \r\n\t\t\t\t${componentClassname}--${props.type}\r\n\t\t\t\t${props.classes.inheritedClasses} \r\n\t\t\t\t${props.classes.isDisabled} \r\n\t\t\t\t${props.classes.isIncomplete} \r\n\t\t\t\t${props.classes.isFocused} \r\n\t\t\t\t${props.classes.hasValue}\r\n\t\t\t\t${props.classes.isValid}\r\n                ${props.classes.isInvalid}\r\n                ${props.checked ? \"is-checked\" : \"\"}\r\n\t\t\t`}\r\n        >\r\n            <label htmlFor={props.accessibilityIds.input}>\r\n                {/*label*/}\r\n                {props.label ? (\r\n                    <div\r\n                        className={`${componentClassname}__label  ${labelPlaceholderClassname} ${parentClassname}__label-title`}\r\n                    >\r\n                        <div\r\n                            className={`${componentClassname}__label__inner`}\r\n                            id={props.accessibilityIds.label}\r\n                        >\r\n                            {props.label}\r\n                            {props.required ? null : !props.hideOptional ? (\r\n                                <span\r\n                                    className={`${componentClassname}__label__optional-label`}\r\n                                ></span>\r\n                            ) : null}\r\n                        </div>\r\n                    </div>\r\n                ) : null}\r\n                {/*info*/}\r\n                {props.info ? (\r\n                    <div\r\n                        className={`${componentClassname}__info ${parentClassname}__label-description`}\r\n                        id={props.accessibilityIds.description}\r\n                    >\r\n                        {props.info}\r\n                    </div>\r\n                ) : null}\r\n                <div\r\n                    className={`${componentClassname}__input-container ${\r\n                        props.icon ? \"has-icon\" : \"\"\r\n                    }`}\r\n                >\r\n                    {props.icon ? (\r\n                        <label\r\n                            htmlFor={props.accessibilityIds.input}\r\n                            className={`${componentClassname}__input-icon`}\r\n                        >\r\n                            <i className={`icon icon-${props.icon}`}></i>\r\n                        </label>\r\n                    ) : null}\r\n                    {/*input element*/}\r\n                    <RichTextEditor\r\n                        className={`${componentClassname}__rte`}\r\n                        value={content}\r\n                        onChange={handleEditorChange}\r\n                        ref={input => {\r\n                            props.inputElement.ref.current = _.get(\r\n                                input,\r\n                                \"refs.editor.editor\",\r\n                                null\r\n                            );\r\n                        }}\r\n                        onFocus={() => {\r\n                            props.onFocus &&\r\n                                props.onFocus({\r\n                                    target: {\r\n                                        value: content.toString(\"html\"),\r\n                                        name: props.name,\r\n                                    },\r\n                                });\r\n                        }}\r\n                        onBlur={() => {\r\n                            props.onBlur &&\r\n                                props.onBlur({\r\n                                    target: {\r\n                                        value: content.toString(\"html\"),\r\n                                        name: props.name,\r\n                                    },\r\n                                });\r\n                        }}\r\n                    />\r\n                    {/* Error icon */}\r\n                    {hasErrors ? (\r\n                        <div className={`${componentClassname}__error-icon`}>\r\n                            <i className=\"icon icon-alert-triangle\"></i>\r\n                        </div>\r\n                    ) : null}\r\n                </div>\r\n                {maxMatch && (\r\n                    <div className={`${componentClassname}__counter`}>\r\n                        {props.inputElement.props.value.length} / {maxMatch[1]}\r\n                    </div>\r\n                )}\r\n            </label>\r\n\r\n            {/*errors*/}\r\n            {hasErrors ? (\r\n                <div className={`${componentClassname}__errors`}>\r\n                    <div\r\n                        className={`${componentClassname}__errors__item`}\r\n                        id={props.accessibilityIds.error}\r\n                    >\r\n                        Error: {props.errors[0]}\r\n                    </div>\r\n                </div>\r\n            ) : null}\r\n        </div>\r\n    );\r\n};\r\n\r\nexport default RTE;\r\n","import React from \"react\";\r\n\r\nconst GalleryImageField = props => {\r\n    const componentClassname = \"gallery-image__field\";\r\n\r\n    const hasErrors =\r\n        !props.hideErrors &&\r\n        props.errors &&\r\n        props.showErrors &&\r\n        props.errors.length;\r\n\r\n    return (\r\n        <div\r\n            className={`${componentClassname}\r\n\t\t\t\t${componentClassname}--${props.type}\r\n\t\t\t\t${props.classes.inheritedClasses}\r\n\t\t\t\t${props.classes.isDisabled}\r\n\t\t\t\t${props.classes.isIncomplete}\r\n\t\t\t\t${props.classes.isFocused}\r\n\t\t\t\t${props.classes.hasValue}\r\n\t\t\t\t${props.classes.isValid}\r\n                ${props.classes.isInvalid}\r\n                ${props.checked ? \"is-checked\" : \"\"}\r\n                ${hasErrors ? \"is-invalid\" : \"\"}\r\n\t\t\t`}\r\n        >\r\n            {/*label*/}\r\n            <div className={`${componentClassname}__input-container`}>\r\n                {/*input element*/}\r\n                {React.cloneElement(props.inputElement, {\r\n                    \"aria-labelledby\": props.label\r\n                        ? props.accessibilityIds.label\r\n                        : null,\r\n                    \"aria-describedby\": props.info\r\n                        ? props.accessibilityIds.description\r\n                        : null,\r\n                })}\r\n            </div>\r\n            <label htmlFor={props.accessibilityIds.input}>\r\n                <div className={`${componentClassname}__field-container`}>\r\n                    <span\r\n                        href=\"#\"\r\n                        className={`${componentClassname}__browse-button`}\r\n                    >\r\n                        Browse\r\n                    </span>\r\n                </div>\r\n                <span className={`${componentClassname}__filename`}>\r\n                    {props.defaultImage ||\r\n                        props.file.name ||\r\n                        \"No file selected\"}\r\n                </span>\r\n                {(props.file.name || props.defaultImage) && (\r\n                    <img\r\n                        className={`${componentClassname}__preview`}\r\n                        src={\r\n                            props.defaultImage ||\r\n                            URL.createObjectURL(props.file)\r\n                        }\r\n                        alt={\"can't load\"}\r\n                    />\r\n                )}\r\n                {(props.file.name || props.defaultImage) && (\r\n                    <button\r\n                        type=\"button\"\r\n                        onClick={event => {\r\n                            event.preventDefault();\r\n                            props.onChange({\r\n                                target: { files: [], name: props.name },\r\n                            });\r\n                            document.getElementById(\r\n                                props.accessibilityIds.input\r\n                            ).value = \"\";\r\n                        }}\r\n                        className={`${componentClassname}__delete-button icon icon-close`}\r\n                    ></button>\r\n                )}\r\n            </label>\r\n            {/*errors*/}\r\n            {hasErrors ? (\r\n                <div className={`${componentClassname}__errors`}>\r\n                    <div\r\n                        className={`${componentClassname}__errors__item`}\r\n                        id={props.accessibilityIds.error}\r\n                    >\r\n                        Error: {props.errors[0]}\r\n                    </div>\r\n                </div>\r\n            ) : null}\r\n        </div>\r\n    );\r\n};\r\n\r\nexport default GalleryImageField;\r\n","// @flow\r\nimport RadioGroup from \"../components/formfields/RadioGroup\";\r\nimport CheckboxGroup from \"../components/formfields/CheckboxGroup\";\r\nimport CustomField from \"../components/formfields/CustomField\";\r\nimport HiddenField from \"../components/formfields/HiddenField\";\r\nimport TextField from \"../components/formfields/TextField\";\r\nimport TextArea from \"../components/formfields/TextArea\";\r\nimport RTE from \"../components/formfields/RTE\";\r\nimport FileUploadField from \"../components/formfields/FileUpload\";\r\nimport GalleryImageField from \"../components/formfields/GalleryImageField\";\r\n\r\nimport RecaptchaField from \"../components/formfields/RecaptchaField\";\r\nimport * as React from \"react\";\r\nimport PubSub from \"../utils/pubsub\";\r\nimport moment from \"moment\";\r\nimport Config from \"../constants/Config\";\r\nimport _ from \"lodash\";\r\nimport { scrollTo } from \"@utils/\";\r\n\r\nimport { ReactForm, ReactFormField } from \"@adrenalin/react-form\";\r\n\r\n// $FlowFixMe\r\n//import { ReactForm, ReactFormField } from \"../../../../../adrenalin/react-form/build\"; // prettier-ignore\r\n\r\nimport useMergableState from \"../hooks/useMergableState\";\r\nimport { useEffect, useRef } from \"react\";\r\n\r\ntype PropsType = {\r\n    formData: Object,\r\n    steps: ?Array<Object>,\r\n    formProcessor: Function,\r\n    recaptchaSiteKey: string,\r\n    submitText: ?string,\r\n    cancelUrl: ?string,\r\n    cancelText: ?string,\r\n    hideGoogleRecaptcha: ?boolean,\r\n};\r\n\r\nconst ReactFormBuilder = (props: PropsType): React.Node => {\r\n    const [activeStep, setStep] = React.useState(0);\r\n    const defaultValues = {};\r\n    const fieldReferences = {};\r\n    const reactFormReference: any = useRef(null);\r\n    for (const section of props.formData) {\r\n        for (const field of section.fields) {\r\n            if (field.type === \"gallery\") {\r\n                field.gallery.forEach((row: Object, idx: number): any => {\r\n                    const captionName = `${field.name}_${idx + 1}_caption`;\r\n                    const youtubeIdName = `${field.name}_${idx + 1}_youtubeId`;\r\n                    const imageName = `${field.name}_${idx + 1}_image`;\r\n                    const indexName = `${field.name}_${idx + 1}_orderIndex`;\r\n                    const fileName = `${field.name}_${idx + 1}_file`;\r\n                    const filefield = `${field.name}_${idx + 1}_filefield`;\r\n                    const actionName = `${field.name}_${idx + 1}_action`;\r\n                    defaultValues[captionName] = `${row.caption}`;\r\n                    defaultValues[youtubeIdName] = `${row.youtube}`;\r\n                    defaultValues[imageName] = `${row.image}`;\r\n                    defaultValues[indexName] = `${idx + 1}`;\r\n                    defaultValues[filefield] = fileName;\r\n                    defaultValues[actionName] = `ignore`;\r\n                });\r\n                continue;\r\n            }\r\n            let value = field.value;\r\n            if (field.type === \"checkbox\") {\r\n                value = {};\r\n                field.options.map((option: Object): any => {\r\n                    value[option.value] = option.checked;\r\n                    return null;\r\n                });\r\n            }\r\n            defaultValues[field.name] = value;\r\n        }\r\n    }\r\n    useEffect(() => {\r\n        PubSub.subscribe(`datepicker`, (data: any) => {\r\n            if (data.type === \"dateSelection\") {\r\n                setInputValues({\r\n                    [data.id]: data.date,\r\n                });\r\n                if (fieldReferences[data.id].current) {\r\n                    fieldReferences[data.id].current.focus();\r\n                }\r\n            }\r\n        });\r\n    }, []);\r\n\r\n    const [inputValues, setInputValues] = useMergableState(defaultValues);\r\n    const customValidators = [];\r\n\r\n    customValidators.push({\r\n        ID: \"notEmptyHtml\",\r\n        validate: (input: Object): boolean => {\r\n            return (\r\n                !!input.value && input.value.replace(/<[^>]*>/g, \"\").length > 0\r\n            );\r\n        },\r\n        error: \"Please enter a value for this field.\",\r\n    });\r\n\r\n    const isLastStep =\r\n        !props.steps ||\r\n        props.steps.length === 0 ||\r\n        activeStep === props.steps.length - 1;\r\n\r\n    const addCustomValidator = (validatorsList: Object, fieldName: string) => {\r\n        for (const validationObject of validatorsList) {\r\n            const validatorId = `${fieldName}_${validationObject.type}`;\r\n\r\n            if (validationObject.type === \"minCharLength\") {\r\n                customValidators.push({\r\n                    ID: validatorId,\r\n                    validate: (input: Object): boolean => {\r\n                        return input.value.length >= validationObject.value;\r\n                    },\r\n                    error: validationObject.errorMessage,\r\n                });\r\n            } else if (validationObject.type === \"maxCharLength\") {\r\n                customValidators.push({\r\n                    ID: validatorId,\r\n                    validate: (input: Object): boolean => {\r\n                        return input.value.length <= validationObject.value;\r\n                    },\r\n                    error: validationObject.errorMessage,\r\n                });\r\n            } else if (validationObject.type === \"regularExpression\") {\r\n                const regex = new RegExp(validationObject.value);\r\n                customValidators.push({\r\n                    ID: validatorId,\r\n                    validate: (input: Object): boolean => {\r\n                        return input.value.match(regex);\r\n                    },\r\n                    error: validationObject.errorMessage,\r\n                });\r\n            } else if (validationObject.type === \"fileSize\") {\r\n                customValidators.push({\r\n                    ID: validatorId,\r\n                    validate: (input: Object): boolean => {\r\n                        return (\r\n                            input.value &&\r\n                            input.value.size <= validationObject.value\r\n                        );\r\n                    },\r\n                    error: validationObject.errorMessage,\r\n                });\r\n            } else if (validationObject.type === \"fileType\") {\r\n                customValidators.push({\r\n                    ID: validatorId,\r\n                    validate: (input: Object): boolean => {\r\n                        const extension = input.value.name\r\n                            .split(\".\")\r\n                            .pop()\r\n                            .toLowerCase();\r\n\r\n                        //return false;\r\n                        return validationObject.value.includes(extension);\r\n                    },\r\n                    error: validationObject.errorMessage,\r\n                });\r\n            } else if (validationObject.type === \"validDate\") {\r\n                customValidators.push({\r\n                    ID: validatorId,\r\n                    validate: (input: Object): boolean => {\r\n                        const date = moment(input.value, Config.dateFormat);\r\n                        return date.isValid();\r\n                    },\r\n                    error: \"Invalid date format\",\r\n                });\r\n            } else if (validationObject.type === \"beforeDate\") {\r\n                //This validator doesn't work because the validation function can't access state from other components\r\n                customValidators.push({\r\n                    ID: validatorId,\r\n                    validate: (input: Object): boolean => {\r\n                        const date = moment(input.value, Config.dateFormat);\r\n                        const dateBefore = moment(\r\n                            fieldReferences[validationObject.value].current\r\n                                .value,\r\n                            Config.dateFormat\r\n                        );\r\n                        return (\r\n                            date.isValid() &&\r\n                            dateBefore.isValid() &&\r\n                            (dateBefore.isBefore(date) ||\r\n                                dateBefore.isSame(date))\r\n                        );\r\n                    },\r\n                    error: \"Date must be after start date\",\r\n                });\r\n            }\r\n        }\r\n    };\r\n    const mapValidators = (validatorsList: Object, fieldName: string): any => {\r\n        const validatorKeys = [];\r\n        for (const validationObject of validatorsList) {\r\n            const validatorId = `${fieldName}_${validationObject.type}`;\r\n            validatorKeys.push(validatorId);\r\n            validatorKeys.push(validationObject.type);\r\n        }\r\n        return validatorKeys;\r\n    };\r\n    const mapPropsToReactField = (input: any): any => {\r\n        const typeMapping = {\r\n            text: \"text\",\r\n            tel: \"tel\",\r\n            email: \"email\",\r\n            textarea: \"textarea\",\r\n            select: \"select\",\r\n            file: \"file\",\r\n            date: \"date\",\r\n            label: \"label\",\r\n        };\r\n\r\n        const type = typeMapping[input.type];\r\n\r\n        const mappedFields: any = {\r\n            type,\r\n            label: input.label,\r\n            name: input.name,\r\n            placeholder: input.placeholder || \"\",\r\n            required: input.required || false,\r\n            title: input.tooltip || \"\",\r\n            info: input.info,\r\n            validators: mapValidators(input.validations, input.name),\r\n        };\r\n        addCustomValidator(input.validations, input.name);\r\n\r\n        if (type !== \"file\") {\r\n            mappedFields.value = input.value || \"\";\r\n        }\r\n\r\n        // Add validators\r\n        if (input.type === \"tel\") {\r\n            mappedFields.validators.push(\"mobile\");\r\n        }\r\n        if (input.type === \"email\") {\r\n            mappedFields.validators.push(\"email\");\r\n        }\r\n\r\n        _.each(input.validations, (validation: Object) => {\r\n            if (validation.type === \"required\") {\r\n                mappedFields.errorMessages = {\r\n                    required: validation.errorMessage,\r\n                };\r\n                mappedFields.required = true;\r\n            }\r\n        });\r\n\r\n        if (input.type === \"date\") {\r\n            addCustomValidator(\r\n                [\r\n                    {\r\n                        type: \"validDate\",\r\n                    },\r\n                ],\r\n                input.name\r\n            );\r\n            mappedFields.validators.push(`${input.name}_validDate`);\r\n        }\r\n        if (input.type === \"file\") {\r\n            addCustomValidator(\r\n                [\r\n                    {\r\n                        type: \"fileType\",\r\n                        value: [\r\n                            \"jpg\",\r\n                            \"jpeg\",\r\n                            \"png\",\r\n                            \"pdf\",\r\n                            \"txt\",\r\n                            \"doc\",\r\n                            \"docx\",\r\n                            \"xls\",\r\n                            \"xlsx\",\r\n                            \"zip\",\r\n                            \"csv\",\r\n                        ],\r\n                        errorMessage:\r\n                            \"Invalid File Type or size for images. Only images with type: jpg or png and maximum size: 4mb can be uploaded.\",\r\n                    },\r\n                    {\r\n                        type: \"fileSize\",\r\n                        value: 4194304,\r\n                        errorMessage:\r\n                            \"Invalid File Type or size for images. Only images with type: jpg or png and maximum size: 4mb can be uploaded.\",\r\n                    },\r\n                ],\r\n                input.name\r\n            );\r\n            mappedFields.validators.push(`${input.name}_fileSize`);\r\n            mappedFields.validators.push(`${input.name}_fileType`);\r\n        }\r\n\r\n        return mappedFields;\r\n    };\r\n\r\n    const autoFormatDate = (event: any, type: string, name: string) => {\r\n        if (type === \"date\") {\r\n            const date = moment(event.target.value, Config.dateFormat);\r\n            if (date.isValid()) {\r\n                setInputValues({\r\n                    [name]: date.format(Config.dateFormat),\r\n                });\r\n            }\r\n        }\r\n    };\r\n\r\n    const autoFormatPrice = (event: any, type: string, name: string) => {\r\n        if (type === \"price\") {\r\n            const roundedPrice = Math.round(event.target.value * 100) / 100;\r\n            setInputValues({\r\n                [name]: roundedPrice,\r\n            });\r\n        }\r\n    };\r\n\r\n    const renderElement = (\r\n        element: any,\r\n        index: number,\r\n        isActive: boolean = true\r\n    ): React.Node => {\r\n        switch (element.type) {\r\n            case \"text\":\r\n            case \"number\":\r\n            case \"email\":\r\n            case \"tel\":\r\n            case \"date\":\r\n                fieldReferences[element.name] = useRef(null);\r\n                let disabled = false;\r\n                if (\r\n                    element.name === \"SuppliedPrice\" &&\r\n                    inputValues[\"Free\"] &&\r\n                    inputValues[\"Free\"][\"Free\"]\r\n                ) {\r\n                    disabled = true;\r\n                }\r\n                return (\r\n                    <ReactFormField\r\n                        {...mapPropsToReactField(element)}\r\n                        className={\r\n                            element.type === \"date\" ? \"has-datepicker\" : \"\"\r\n                        }\r\n                        required={\r\n                            disabled\r\n                                ? false\r\n                                : isActive &&\r\n                                  mapPropsToReactField(element).required\r\n                        }\r\n                        value={inputValues[element.name]}\r\n                        type={element.type === \"date\" ? \"text\" : element.type}\r\n                        fieldComponent={TextField}\r\n                        ref={fieldReferences[element.name]}\r\n                        onChange={(event: any) => {\r\n                            setInputValues({\r\n                                [element.name]: event.target.value,\r\n                            });\r\n                        }}\r\n                        onBlur={(event: any) => {\r\n                            autoFormatDate(event, element.type, element.name);\r\n                        }}\r\n                        disabled={disabled}\r\n                    ></ReactFormField>\r\n                );\r\n            case \"textarea\":\r\n                const customProps = {};\r\n                _.each(element.validations, (validation: Object) => {\r\n                    if (validation.type === \"maxCharLength\") {\r\n                        customProps[\"className\"] = `max-${validation.value}`;\r\n                    }\r\n                });\r\n\r\n                return (\r\n                    <ReactFormField\r\n                        {...mapPropsToReactField(element)}\r\n                        {...customProps}\r\n                        value={inputValues[element.name]}\r\n                        required={\r\n                            isActive && mapPropsToReactField(element).required\r\n                        }\r\n                        type={element.type}\r\n                        fieldComponent={TextArea}\r\n                        onChange={(event: any) => {\r\n                            setInputValues({\r\n                                [element.name]: event.target.value,\r\n                            });\r\n                        }}\r\n                    ></ReactFormField>\r\n                );\r\n            case \"radio\":\r\n                return (\r\n                    <RadioGroup\r\n                        label={element.label}\r\n                        info={element.info || \"\"}\r\n                        tooltip={element.tooltip || \"\"}\r\n                    >\r\n                        <div className=\"radio-group-col\">\r\n                            {element.options.map(\r\n                                (option: any, index: number): React.Node => (\r\n                                    <ReactFormField\r\n                                        key={index}\r\n                                        type={\"radio\"}\r\n                                        name={option.name}\r\n                                        label={option.label}\r\n                                        value={option.value}\r\n                                        info={\"\"}\r\n                                        fieldComponent={CustomField}\r\n                                        checked={\r\n                                            inputValues[option.name] ===\r\n                                            option.value\r\n                                        }\r\n                                        onChange={(event: any) => {\r\n                                            setInputValues({\r\n                                                [option.name]: option.value,\r\n                                            });\r\n                                        }}\r\n                                        required={element.required}\r\n                                    ></ReactFormField>\r\n                                )\r\n                            )}\r\n                        </div>\r\n                    </RadioGroup>\r\n                );\r\n            case \"checkbox\":\r\n                return (\r\n                    <CheckboxGroup\r\n                        label={element.label}\r\n                        info={element.info}\r\n                        tooltip={element.tooltip || \"\"}\r\n                    >\r\n                        <div className=\"radio-group-col\">\r\n                            {element.options.map(\r\n                                (option: any, index: number): React.Node => (\r\n                                    <ReactFormField\r\n                                        {...mapPropsToReactField(element)}\r\n                                        key={index}\r\n                                        type={\"checkbox\"}\r\n                                        fieldComponent={CustomField}\r\n                                        name={option.value}\r\n                                        info={\"\"}\r\n                                        value={\r\n                                            inputValues[option.name][\r\n                                                option.value\r\n                                            ]\r\n                                                ? \"on\"\r\n                                                : \"\"\r\n                                        }\r\n                                        label={option.label}\r\n                                        id={option.value}\r\n                                        checked={\r\n                                            inputValues[option.name][\r\n                                                option.value\r\n                                            ]\r\n                                        }\r\n                                        onChange={(event: any) => {\r\n                                            const newValue =\r\n                                                inputValues[option.name];\r\n                                            newValue[option.value] =\r\n                                                event.target.checked;\r\n                                            setInputValues({\r\n                                                [option.name]: newValue,\r\n                                            });\r\n                                        }}\r\n                                    ></ReactFormField>\r\n                                )\r\n                            )}\r\n                        </div>\r\n                    </CheckboxGroup>\r\n                );\r\n            case \"select\":\r\n                return (\r\n                    <ReactFormField\r\n                        {...mapPropsToReactField(element)}\r\n                        value={inputValues[element.name] || \"\"}\r\n                        className={\r\n                            element.placeholder && !inputValues[element.name]\r\n                                ? \"has-placeholder\"\r\n                                : \"\"\r\n                        }\r\n                        onChange={(event: any) => {\r\n                            setInputValues({\r\n                                [element.name]: event.target.value,\r\n                            });\r\n                        }}\r\n                    >\r\n                        {element.placeholder && !inputValues[element.name] && (\r\n                            <option value=\"\">{element.placeholder}</option>\r\n                        )}\r\n                        {element.options.map(\r\n                            (option: any, index: number): React.Node => (\r\n                                <option value={option.value} key={index}>\r\n                                    {option.label}\r\n                                </option>\r\n                            )\r\n                        )}\r\n                    </ReactFormField>\r\n                );\r\n            case \"file\":\r\n                return (\r\n                    <ReactFormField\r\n                        {...mapPropsToReactField(element)}\r\n                        fieldComponent={FileUploadField}\r\n                        type={element.type}\r\n                    ></ReactFormField>\r\n                );\r\n            case \"label\":\r\n                return (\r\n                    <>\r\n                        <p className={\"sub-heading__title\"}>{element.title}</p>\r\n                        <p className={\"sub-heading__description\"}>\r\n                            {element.description}\r\n                        </p>\r\n                    </>\r\n                );\r\n            case \"heading\":\r\n                return (\r\n                    <>\r\n                        <p className={\"heading__title\"}>{element.label}</p>\r\n                    </>\r\n                );\r\n            case \"gallery\":\r\n                return (\r\n                    <>\r\n                        {element.gallery.map(\r\n                            (row: Object, idx: number): React.Node => {\r\n                                const filefield = `${element.name}_${idx +\r\n                                    1}_filefield`;\r\n                                const fileName = `${element.name}_${idx +\r\n                                    1}_file`;\r\n                                const captionName = `${element.name}_${idx +\r\n                                    1}_caption`;\r\n                                const youtubeIdName = `${element.name}_${idx +\r\n                                    1}_youtubeId`;\r\n                                const indexName = `${element.name}_${idx +\r\n                                    1}_orderIndex`;\r\n                                const actionName = `${element.name}_${idx +\r\n                                    1}_action`;\r\n                                const imageName = `${element.name}_${idx +\r\n                                    1}_image`;\r\n                                return (\r\n                                    <div\r\n                                        className=\"react-form__gallery\"\r\n                                        key={element.name + idx}\r\n                                    >\r\n                                        <ReactFormField\r\n                                            name={fileName}\r\n                                            type={\"file\"}\r\n                                            accept=\"image/*\"\r\n                                            fieldComponent={GalleryImageField}\r\n                                            required={\r\n                                                isActive &&\r\n                                                !inputValues[imageName] &&\r\n                                                mapPropsToReactField(element)\r\n                                                    .required\r\n                                            }\r\n                                            errorMessages={{\r\n                                                required:\r\n                                                    \"Please upload an image.\",\r\n                                            }}\r\n                                            defaultImage={\r\n                                                inputValues[imageName]\r\n                                            }\r\n                                            onChange={(event: any) => {\r\n                                                if (\r\n                                                    event.target.files.length >\r\n                                                    0\r\n                                                ) {\r\n                                                    setInputValues({\r\n                                                        [fileName]:\r\n                                                            event.target\r\n                                                                .files[0],\r\n                                                        [actionName]: \"upload\",\r\n                                                        [imageName]: \"\",\r\n                                                    });\r\n                                                } else {\r\n                                                    setInputValues({\r\n                                                        [fileName]: null,\r\n                                                        [actionName]: \"delete\",\r\n                                                        [imageName]: \"\",\r\n                                                    });\r\n                                                }\r\n                                            }}\r\n                                        ></ReactFormField>\r\n                                        <div>\r\n                                            <ReactFormField\r\n                                                name={captionName}\r\n                                                value={inputValues[captionName]}\r\n                                                type={\"text\"}\r\n                                                label=\"Caption (optional)\"\r\n                                                fieldComponent={TextField}\r\n                                                onChange={(event: any) => {\r\n                                                    setInputValues({\r\n                                                        [captionName]:\r\n                                                            event.target.value,\r\n                                                    });\r\n                                                }}\r\n                                                onBlur={(event: any) => {\r\n                                                    autoFormatDate(\r\n                                                        event,\r\n                                                        \"text\",\r\n                                                        captionName\r\n                                                    );\r\n                                                }}\r\n                                            ></ReactFormField>\r\n                                            <ReactFormField\r\n                                                name={youtubeIdName}\r\n                                                value={\r\n                                                    inputValues[youtubeIdName]\r\n                                                }\r\n                                                type={\"text\"}\r\n                                                fieldComponent={TextField}\r\n                                                label=\"Youtube ID (optional)\"\r\n                                                onChange={(event: any) => {\r\n                                                    setInputValues({\r\n                                                        [youtubeIdName]:\r\n                                                            event.target.value,\r\n                                                    });\r\n                                                }}\r\n                                                onBlur={(event: any) => {\r\n                                                    autoFormatDate(\r\n                                                        event,\r\n                                                        \"text\",\r\n                                                        youtubeIdName\r\n                                                    );\r\n                                                }}\r\n                                            ></ReactFormField>\r\n                                        </div>\r\n                                        <div>\r\n                                            <ReactFormField\r\n                                                name={indexName}\r\n                                                value={inputValues[indexName]}\r\n                                                type={\"text\"}\r\n                                                fieldComponent={TextField}\r\n                                                label=\"Order\"\r\n                                                onChange={(event: any) => {\r\n                                                    setInputValues({\r\n                                                        [indexName]:\r\n                                                            event.target.value,\r\n                                                    });\r\n                                                }}\r\n                                                onBlur={(event: any) => {\r\n                                                    autoFormatDate(\r\n                                                        event,\r\n                                                        \"text\",\r\n                                                        indexName\r\n                                                    );\r\n                                                }}\r\n                                            ></ReactFormField>\r\n                                        </div>\r\n                                        <div>\r\n                                            <ReactFormField\r\n                                                value={\r\n                                                    inputValues[filefield] || \"\"\r\n                                                }\r\n                                                type=\"text\"\r\n                                                fieldComponent={HiddenField}\r\n                                                required={true}\r\n                                                name={filefield}\r\n                                            ></ReactFormField>\r\n                                            <ReactFormField\r\n                                                value={\r\n                                                    inputValues[actionName] ||\r\n                                                    \"\"\r\n                                                }\r\n                                                type=\"text\"\r\n                                                fieldComponent={HiddenField}\r\n                                                required={true}\r\n                                                name={actionName}\r\n                                            ></ReactFormField>\r\n                                        </div>\r\n                                    </div>\r\n                                );\r\n                            }\r\n                        )}\r\n                    </>\r\n                );\r\n            case \"rte\":\r\n                const rteCustomProps = {};\r\n                _.each(element.validations, (validation: Object) => {\r\n                    if (validation.type === \"maxCharLength\") {\r\n                        rteCustomProps[\"className\"] = `max-${validation.value}`;\r\n                    }\r\n                });\r\n                const validators = mapPropsToReactField(element).validators;\r\n                if (isActive && mapPropsToReactField(element).required) {\r\n                    validators.push(\"notEmptyHtml\");\r\n                }\r\n                return (\r\n                    <ReactFormField\r\n                        {...mapPropsToReactField(element)}\r\n                        {...rteCustomProps}\r\n                        value={inputValues[element.name]}\r\n                        required={\r\n                            isActive && mapPropsToReactField(element).required\r\n                        }\r\n                        validators={validators}\r\n                        type={\"textarea\"}\r\n                        fieldComponent={RTE}\r\n                        onChange={(event: any) => {\r\n                            setInputValues({\r\n                                [element.name]: event.target.value,\r\n                            });\r\n                        }}\r\n                    ></ReactFormField>\r\n                );\r\n            case \"recaptcha\":\r\n                return <div></div>;\r\n            case \"price\":\r\n                fieldReferences[element.name] = useRef(null);\r\n                return (\r\n                    <ReactFormField\r\n                        {...mapPropsToReactField(element)}\r\n                        className=\"is-price\"\r\n                        required={\r\n                            isActive && mapPropsToReactField(element).required\r\n                        }\r\n                        value={inputValues[element.name]}\r\n                        type=\"number\"\r\n                        min={0}\r\n                        fieldComponent={TextField}\r\n                        ref={fieldReferences[element.name]}\r\n                        onChange={(event: any) => {\r\n                            setInputValues({\r\n                                [element.name]: event.target.value,\r\n                            });\r\n                        }}\r\n                        onBlur={(event: any) => {\r\n                            autoFormatPrice(event, element.type, element.name);\r\n                        }}\r\n                    ></ReactFormField>\r\n                );\r\n            default:\r\n                return <p>Unkown form element type: {element.type}</p>;\r\n        }\r\n    };\r\n\r\n    const renderSection = (\r\n        section: any,\r\n        sectionIndex: number,\r\n        isActive: boolean = true\r\n    ): React.Node => (\r\n        <fieldset className=\"react-form__section\" key={sectionIndex}>\r\n            {section.title && (\r\n                <legend className=\"react-form__section-label\">\r\n                    {section.title}\r\n                </legend>\r\n            )}\r\n\r\n            <div className=\"react-form__section__container\">\r\n                {section.fields.map(\r\n                    (element: any, index: number): React.Node => (\r\n                        <div\r\n                            className={`react-form__element react-form__element--${\r\n                                element.type\r\n                            } ${\r\n                                element.halfSize\r\n                                    ? \"react-form__element--half\"\r\n                                    : \"\"\r\n                            } ${\r\n                                element.subHeading\r\n                                    ? \"react-form__element--has-subheading\"\r\n                                    : \"\"\r\n                            }`}\r\n                            key={index}\r\n                            data-sub-heading={element.subHeading}\r\n                        >\r\n                            {renderElement(element, index, isActive)}\r\n                            {element.type === \"date\" ? (\r\n                                <button\r\n                                    type=\"button\"\r\n                                    className=\"react-form__datepicker-icon\"\r\n                                    onClick={(event: any) => {\r\n                                        event.preventDefault();\r\n                                        PubSub.publish(\"datepicker\", {\r\n                                            type: \"openLightbox\",\r\n                                            id: element.name,\r\n                                        });\r\n                                    }}\r\n                                    aria-label=\"Open Datepicker\"\r\n                                >\r\n                                    <i className=\"icon icon-calendar\" />\r\n                                </button>\r\n                            ) : null}\r\n                        </div>\r\n                    )\r\n                )}\r\n            </div>\r\n        </fieldset>\r\n    );\r\n    return (\r\n        <ReactForm\r\n            validators={customValidators}\r\n            onSuccess={(\r\n                data: Object,\r\n                state: any,\r\n                e: any,\r\n                formDataObject: any\r\n            ) => {\r\n                if (\r\n                    props.steps &&\r\n                    props.steps.length > 0 &&\r\n                    activeStep < props.steps.length - 1\r\n                ) {\r\n                    reactFormReference.current.resetErrors();\r\n                    setStep(activeStep + 1);\r\n                    scrollTo(\r\n                        reactFormReference.current.formRef.current,\r\n                        0,\r\n                        500\r\n                    );\r\n                    return;\r\n                }\r\n                props.formProcessor(formDataObject);\r\n            }}\r\n            className=\"react-form__form\"\r\n            ref={reactFormReference}\r\n        >\r\n            {props.steps && props.steps.length && (\r\n                <div className=\"step-indicators-container\">\r\n                    {props.steps.map((step: any, index: number): React.Node => {\r\n                        return (\r\n                            <div\r\n                                key={index}\r\n                                className={`step-indicator ${\r\n                                    index <= activeStep ? \"hightlight\" : \"\"\r\n                                }`}\r\n                            >\r\n                                <div className={`step-indicator-icon`}>\r\n                                    {index < activeStep ? (\r\n                                        <i className={`icon icon-tick`}></i>\r\n                                    ) : (\r\n                                        index + 1\r\n                                    )}\r\n                                </div>\r\n                                <div className={`step-indicator-text`}>\r\n                                    {step.Title}\r\n                                </div>\r\n                            </div>\r\n                        );\r\n                    })}\r\n                </div>\r\n            )}\r\n            {props.steps && props.steps.length\r\n                ? props.steps.map(\r\n                      (step: any, stepIndex: number): React.Node => (\r\n                          <fieldset\r\n                              className={`react-form__step ${\r\n                                  stepIndex === activeStep ? \"actived\" : \"\"\r\n                              }`}\r\n                              key={stepIndex}\r\n                          >\r\n                              {step.Title && (\r\n                                  <legend className=\"react-form__step-label\">\r\n                                      {step.Title}\r\n                                  </legend>\r\n                              )}\r\n                              <div className=\"react-form__step__container\">\r\n                                  {step.Sections.map(\r\n                                      (\r\n                                          sectionIndex: number,\r\n                                          index: number\r\n                                      ): React.Node =>\r\n                                          renderSection(\r\n                                              props.formData[sectionIndex],\r\n                                              index,\r\n                                              stepIndex <= activeStep\r\n                                          )\r\n                                  )}\r\n                              </div>\r\n                          </fieldset>\r\n                      )\r\n                  )\r\n                : props.formData.map(renderSection)}\r\n            {/* Render main inputs of form */}\r\n\r\n            <ReactFormField\r\n                value={inputValues[\"GoogleRecaptchaResponse\"] || \"\"}\r\n                type=\"text\"\r\n                fieldComponent={RecaptchaField}\r\n                required={!props.hideGoogleRecaptcha && isLastStep}\r\n                recaptchaSiteKey={props.recaptchaSiteKey}\r\n                name=\"GoogleRecaptchaResponse\"\r\n                ref={fieldReferences[\"foobar\"]}\r\n                onChange={(event: any) => {\r\n                    setInputValues({\r\n                        [event.target.name]: event.target.value,\r\n                    });\r\n                }}\r\n            ></ReactFormField>\r\n\r\n            {props.cancelUrl && isLastStep ? (\r\n                <button\r\n                    type=\"button\"\r\n                    className=\"react-form__button cta cta--inline cta--big cta--secondary\"\r\n                    onClick={() => {\r\n                        window.open(props.cancelUrl, \"_self\");\r\n                    }}\r\n                >\r\n                    {props.cancelText || \"Cancel\"}\r\n                </button>\r\n            ) : (\r\n                props.steps &&\r\n                props.steps.length > 0 && (\r\n                    <button\r\n                        type=\"button\"\r\n                        className=\"react-form__button cta cta--inline cta--big cta--secondary\"\r\n                        onClick={() => {\r\n                            if (activeStep === 0) {\r\n                                window.history.back();\r\n                            } else {\r\n                                reactFormReference.current.resetErrors();\r\n                                setStep(activeStep - 1);\r\n                                scrollTo(\r\n                                    reactFormReference.current.formRef.current,\r\n                                    0,\r\n                                    500\r\n                                );\r\n                            }\r\n                        }}\r\n                    >\r\n                        {\"Previous\"}\r\n                    </button>\r\n                )\r\n            )}\r\n            <button\r\n                type=\"submit\"\r\n                className=\"react-form__button cta cta--inline cta--big\"\r\n            >\r\n                {props.steps &&\r\n                props.steps.length > 0 &&\r\n                activeStep < props.steps.length - 1\r\n                    ? \"Next\"\r\n                    : props.submitText || \"Submit\"}\r\n            </button>\r\n        </ReactForm>\r\n    );\r\n};\r\n\r\nexport default ReactFormBuilder;\r\n"],"sourceRoot":""}