{"version":3,"sources":["components/elements/Navigation/Navigation.js","components/elements/Header/Header.js","components/elements/CalendarFields/CalendarFields.js","components/elements/PaymentForm/PaymentForm.js","components/elements/Banner/Banner.js","components/elements/GridElement/GridElement.js","components/elements/ThreeColGrid/ThreeColGrid.js","components/Home/Home.js","components/elements/Footer/Footer.js","components/RV-List/RV-List.js","components/Slider/Slider.js","components/RV-Details/RV-Details.js","components/Reviews/Reviews.js","components/Contact/Contact.js","components/elements/Delivery/Delivery.js","components/Amenities/Amenities.js","components/Policies/Policies.js","components/elements/UserPaymentInfo/UserPaymentInfo.js","components/Payment/Payment.js","components/App/App.js","index.js"],"names":["Navigation","props","className","footer","onClick","callback","to","activeClassName","exact","Header","useState","menu","setMenu","history","useHistory","menuClick","event","menuChange","document","body","style","overflowY","height","bookNowClick","getElementsByClassName","length","push","pathname","state","redirected","src","e","Date","prototype","addDays","days","date","this","valueOf","setDate","getDate","CalendarFields","price","rvName","successCallback","id","start","end","googlePay","startDate","setStartDate","endDate","setEndDate","result","setResult","details","selected","onChange","availCallback","placeholderText","minDate","fetch","method","headers","JSON","stringify","rv","then","r","json","isAvail","console","log","res","avail","idList","Banner","bgImage","amenities","backgroundImage","GridElement","images","text","data","name","list","ThreeColGrid","divClass","home","title","rvData","map","element","i","rvImages","description","rvDescription","requiredOptions","options","pricePerNight","reviewsData","Home","Accept","response","findresponse","setState","location","focus","Component","Footer","href","target","RVList","rvList","availableRVS","Array","forEach","Slider","slider","ref","s","dots","arrows","infinite","slidestoShow","slidesToScroll","slickGoTo","RVDetails","setStart","setEnd","available","setAvailable","Reviews","Contact","firstName","setFirstName","lastName","setLastName","email","setEmail","phone","setPhone","message","setMessage","sentMessage","setSentMessage","sendingMessage","setSendingMessage","errorEmail","setErrorEmail","errorPhone","setErrorPhone","errorMessage","setErrorMessage","touched","setTouched","checkEmail","error","test","checkPhone","htmlFor","type","value","onKeyUp","onKeyDown","user","sent","getElementById","innerHTML","background","window","scrollTo","Delivery","destination","setDestination","calculatingCost","setCalculatingCost","deliveryMessage","setDeliveryMessage","formtitle","buttontitle","distancetext","distancemiles","durationtext","durationhours","deliveryResult","costResult","changeDeliveryCost","deliveryCostInfo","deliveryCost","onChangeDeliveryCost","payment","placeholder","rows","elements","status","destination_addresses","distance","duration","toFixed","Amenities","addOns","renderBox","add_ons","Policies","policies","faqs","UserPaymentInfo","checkForm","clientInfo","PaymentForm","formError","validMailPhone","fn","ln","p","setPaymentForm","a","priceUpdate","payments","Square","googlePayContainer","paymentRequest","total","amount","label","countryCode","currencyCode","attach","buttons","children","remove","card","addEventListener","tokenize","submit","token","idempotency_key","replace","c","Math","random","toString","source_id","location_id","rvId","client","catch","err","alert","ok","errorInfo","Promise","reject","success","nextProps","disabled","Payment","formatDate","d","month","getMonth","day","year","getFullYear","setOptions","setSuccess","floor","getTime","setPrice","setDeliveryCost","selectedDestination","setSelectedDestiantion","selectedDeliveryCost","setSelectedDeliveryCost","useEffect","calcRequiredOptions","selectedOptions","firstOption","cost","secondOption","elem","checked","includes","optionPrice","option","changePrice","paymentForm","App","loaded","that","sqPaymentScript","createElement","async","onload","getElementsByTagName","appendChild","Fragment","path","component","ReactDOM","render","StrictMode"],"mappings":"msBA8BeA,EA1BI,SAACC,GAEhB,OACI,sBAAKC,UAAW,eAAiBD,EAAME,OAAS,aAAe,IAAKC,QAASH,EAAMI,SAAnF,UACI,cAAC,IAAD,CAASC,GAAG,IAAIC,gBAAgB,SAASC,OAAK,EAA9C,kBAGA,cAAC,IAAD,CAASF,GAAG,WAAWC,gBAAgB,SAASC,OAAK,EAArD,iBAGA,cAAC,IAAD,CAASF,GAAG,aAAaC,gBAAgB,SAASC,OAAK,EAAvD,iCAGA,cAAC,IAAD,CAASF,GAAG,YAAYC,gBAAgB,SAASC,OAAK,EAAtD,6BAGA,cAAC,IAAD,CAASF,GAAG,WAAWC,gBAAgB,SAASC,OAAK,EAArD,qBAGA,cAAC,IAAD,CAASF,GAAG,cAAcC,gBAAgB,SAASC,OAAK,EAAxD,4BCiDGC,G,OAnEA,SAACR,GAAW,IAAD,EACAS,oBAAS,GADT,mBACjBC,EADiB,KACXC,EADW,KAGlBC,EAAUC,cAEVC,EAAY,SAACC,GACjB,IAAMC,GAAaN,EACfM,GACFC,SAASC,KAAKC,MAAMC,UAAY,SAChCH,SAASC,KAAKC,MAAME,OAAS,UAE7BJ,SAASC,KAAKC,MAAMC,UAAY,OAChCH,SAASC,KAAKC,MAAME,OAAS,QAE/BV,EAAQK,IAGJM,EAAe,WACFL,SAASM,uBAAuB,gBACpCC,OAAS,EACpBxB,EAAMI,WAENQ,EAAQa,KAAK,CACXC,SAAU,IACVC,MAAO,CAAEC,YAAY,MAK3B,OACE,sBAAK3B,UAAU,iBAAf,UACGS,EACC,qBAAKT,UAAU,eAAf,SACE,sBAAKA,UAAU,eAAf,UACE,sCACA,cAAC,EAAD,CAAYG,SAAUU,IACtB,qBAAKb,UAAU,WAAWE,QAASmB,EAAnC,2BAKF,KACJ,sBAAKrB,UAAU,uBAAf,UACE,cAAC,IAAD,CAASI,GAAG,IAAIJ,UAAU,cAA1B,SACE,qBAAK4B,IAAI,gCAEX,sBAAK5B,UAAU,WAAf,UACE,cAAC,EAAD,IACA,qBAAKA,UAAU,WAAWE,QAASmB,EAAnC,yBAIF,qBAAKrB,UAAU,WAAf,SACE,sBACEA,UAAW,aAAeS,EAAO,QAAU,IAC3CP,QAAS,SAAC2B,GAAD,OAAOhB,KAFlB,UAIE,yBACA,yBACA,sC,yCC2CZiB,KAAKC,UAAUC,QAAU,SAASC,GAChC,IAAIC,EAAO,IAAIJ,KAAKK,KAAKC,WAEzB,OADAF,EAAKG,QAAQH,EAAKI,UAAYL,GACvBC,GAGMK,ICrGXC,EACAC,EACAC,EACAC,EACAC,EACAC,EASAC,EDuFWP,EA3GQ,SAACxC,GAAW,IAAD,EACES,mBAAST,EAAMgD,WADjB,mBACzBA,EADyB,KACdC,EADc,OAEFxC,mBAAST,EAAMkD,SAFb,mBAEzBA,EAFyB,KAEhBC,EAFgB,OAIJ1C,mBAAS,MAJL,mBAIzB2C,EAJyB,KAIjBC,EAJiB,KAO1BzC,EAAUC,cA+DhB,OACE,sBAAKZ,UAAW,mBAAqBD,EAAMsD,QAAU,UAAY,IAAjE,UACE,sBAAKrD,UAAU,eAAf,UACE,cAAC,IAAD,CACEsD,SAAUP,EACVQ,SAAU,SAACrB,GAAUc,EAAad,GAAOnC,EAAMyD,eAAiBzD,EAAMyD,gBAAiBJ,EAAU,OACjGK,gBAAgB,OAChBzD,UAAU,aACV0D,QAAS,IAAI5B,OAEf,qBAAK9B,UAAU,eAAe4B,IAAI,6BAEpC,sBAAK5B,UAAU,eAAf,UACE,cAAC,IAAD,CACEsD,SAAUL,EACVM,SAAU,SAACrB,GAAUgB,EAAWhB,GAAQnC,EAAMyD,eAAiBzD,EAAMyD,gBAAiBJ,EAAU,OAChGK,gBAAgB,KAChBC,QAAUX,EAAa,IAAIjB,KAAKiB,GAAWf,QAAQ,GAAI,IAAIF,OAE7D,qBAAK9B,UAAU,eAAe4B,IAAI,6BAEpC,qBAAK5B,UAAU,WAAWE,QAASH,EAAMsD,QAlF1B,WACA,MAAbN,GAAgC,MAAXE,EAKzBU,MAAM,mDAAoD,CACxDC,OAAQ,OACRC,QAAS,CACP,eAAgB,oBAElB5C,KAAM6C,KAAKC,UAAU,CACnBC,GAAI,CACFrB,GAAI5C,EAAM4C,GACVC,MAAO,IAAId,KAAKiB,GAChBF,IAAK,IAAIf,KAAKmB,QAIjBgB,MAAK,SAACC,GACL,OAAOA,EAAEC,UAEVF,MAAK,SAACC,GACLnE,EAAMI,SAAS+D,EAAEE,QAASrB,EAAWE,MArBvCoB,QAAQC,IAAI,mBAyBK,WACF,MAAbvB,GAAgC,MAAXE,EAKzBU,MAAM,4CAA6C,CACjDC,OAAQ,OACRC,QAAS,CACP,eAAgB,oBAElB5C,KAAM6C,KAAKC,UAAU,CACnBC,GAAI,CACFpB,MAAOG,EACPF,IAAKI,OAIRgB,MAAK,SAACC,GACL,OAAOA,EAAEC,UAEVF,MAAK,SAACM,GACFA,EAAIC,MAAMjD,OAAS,EACpB6B,GAAU,IAGZA,GAAU,GACVzC,EAAQa,KAAK,CACXC,SAAU,WACVC,MAAO,CAAC+C,OAAQF,EAAK3B,MAAOG,EAAWF,IAAKI,SA3BhDoB,QAAQC,IAAI,mBAqDZ,SACGvE,EAAMsD,QAAU,QAAU,cAE1BF,GAAoB,MAAVA,GAAmB,qBAAKnD,UAAU,SAAf,qDE7DvB0E,G,OAlCA,SAAC3E,GACd,IAAI4E,EAAU,GAYd,OARIA,EAFA5E,EAAME,OACJF,EAAM6E,UACE,4BAEA,mCAGF,4BAIV,qBACE5E,UACE,WACCD,EAAME,OAAS,gBAAkB,SACjCF,EAAM6E,UAAY,oBAAsB,IAE3C1D,MAAO,CAAE2D,iBAAkB9E,EAAME,QAAP,eAAyB0E,EAAzB,OAN5B,SAQE,sBAAK3E,UAAU,+BAAf,UACGD,EAAME,OACL,oBAAID,UAAU,eAAd,uCAEA,oBAAIA,UAAU,eAAd,iCAEF,cAAC,EAAD,WCmBO8E,G,OAhDK,SAAC/E,GA2CjB,SAvCcA,EAAMgF,QAAwB,MAAdhF,EAAMiF,MAI5B,sBAAKhF,UAAU,aAAf,UACI,cAAC,IAAD,CAASI,GAAI,CAACqB,SAAU,cAAeC,MAAO,CAACuD,KAAMlF,EAAOgD,UAAWhD,EAAMgD,UAAWE,QAASlD,EAAMkD,UAAvG,SACI,qBAAKjD,UAAU,aAAakB,MAAO,CAAC2D,gBAAgB,OAAD,OAAS9E,EAAMgF,OAAO,GAAtB,UAGvD,oBAAI/E,UAAU,UAAd,SACKD,EAAMmF,OAEVnF,EAAMoF,KAAO,sBAAKnF,UAAU,QAAf,cAAyBD,EAAMyC,MAA/B,gBAAwD,KACtE,cAAC,IAAD,CAASpC,GAAI,CAACqB,SAAU,cAAeC,MAAO,CAACuD,KAAMlF,EAAOgD,UAAWhD,EAAMgD,UAAWE,QAASlD,EAAMkD,UAAvG,2CASJ,sBAAKjD,UAAU,iBAAf,UACI,qBAAK4B,IAAI,4BACT,mBAAG5B,UAAU,OAAb,SACKD,EAAMiF,OAEX,sBAAKhF,UAAU,OAAf,UACI,qBAAKA,UAAU,OAAf,SACKD,EAAMmF,OAEX,qBAAKlF,UAAU,WAAf,SACKD,EAAMmC,eCwBhBkD,G,OA5DM,SAACrF,GAUpB,IAuCMsF,EAAW,2BAA6BtF,EAAMuF,MAAQ,QAC5D,OACE,sBAAKtF,UAAWqF,EAAhB,UACE,6BAAKtF,EAAMwF,QACX,qBAAKvF,UAAU,iBAAf,SA1CED,EAAMyF,OAEDzF,EAAMyF,OAAOC,KAAI,SAACC,EAASC,GAChC,OACE,cAAC,EAAD,CAEEZ,OAAQW,EAAQE,SAChBV,KAAMQ,EAAQjD,OACdoD,YAAaH,EAAQI,cACrBC,gBAAiBL,EAAQK,gBACzBC,QAASN,EAAQM,QACjBrD,GAAI+C,EAAQ/C,GACZI,UAAWhD,EAAMgD,UACjBE,QAASlD,EAAMkD,QACfT,MAAOkD,EAAQO,cACfd,KAAMpF,EAAMoF,MAVPQ,MAcF5F,EAAMmG,YAERnG,EAAMmG,YAAYT,KAAI,SAACC,EAASC,GACrC,OACE,cAAC,EAAD,CAEEX,KAAMU,EAAQV,KACdE,KAAMQ,EAAQR,KACdhD,KAAMwD,EAAQxD,MAHTyD,MAQJ,qBAAK3F,UAAU,QAAf,yCCmEEmG,E,4MA3GbzE,MAAQ,CACN8D,OAAQ,KACRU,YAAa,M,uDAIf,WAAqB,IAAD,OAClBvC,MAAM,oDAAqD,CACzDC,OAAQ,MACRC,QAAS,CACP,eAAgB,mBAChBuC,OAAQ,sBAGTnC,MAAK,SAACoC,GAAD,OAAcA,EAASlC,UAC5BF,MAAK,SAACqC,GACL,EAAKC,SAAS,CACZf,OAAQc,OAId3C,MAAM,wDAAyD,CAC7DC,OAAQ,MACRC,QAAS,CACP,eAAgB,mBAChBuC,OAAQ,sBAGTnC,MAAK,SAACoC,GAAD,OAAcA,EAASlC,UAC5BF,MAAK,SAACqC,GACL,EAAKC,SAAS,CACZL,YAAaI,OAIfnE,KAAKpC,MAAMyG,SAAS9E,OAClBS,KAAKpC,MAAMyG,SAAS9E,MAAMC,YAC5BX,SAASM,uBAAuB,cAAc,GAAGmF,U,oBAKvD,WACE,OACE,sBAAKzG,UAAU,eAAf,UACE,cAAC,EAAD,IACA,sBAAKA,UAAU,eAAf,UACE,sBAAKA,UAAU,yBAAf,UACE,kDACA,8BACE,gDADF,glBAWA,khBAWF,sBAAKA,UAAU,yBAAf,UACE,qEACA,8BACE,gDADF,mlCAcJ,qBAAKA,UAAU,gBAAf,SACE,cAAC,EAAD,CAAcuF,MAAM,aAAaC,OAAQrD,KAAKT,MAAM8D,WAEtD,sBAAKxF,UAAU,mBAAf,UACE,qBAAKA,UAAU,YACf,qBAAKA,UAAU,WAAW4B,IAAI,qCAC9B,sBAAK5B,UAAU,iCAAf,UACE,cAAC,EAAD,CACEuF,MAAM,iBACNW,YAAa/D,KAAKT,MAAMwE,YACxBZ,MAAM,IAER,cAAC,EAAD,CAAQrF,QAAQ,iB,GApGTyG,aC+BJC,G,OAjCA,WACb,OACE,qBAAK3G,UAAU,SAAf,SACE,sBAAKA,UAAU,+BAAf,UACE,sBAAKA,UAAU,eAAf,UACE,sBAAKA,UAAU,OAAf,UACE,sBAAKA,UAAU,sBAAf,UACE,qBAAKA,UAAU,cAAc4B,IAAI,6BACjC,qBAAK5B,UAAU,eAAf,sCAEF,sBAAKA,UAAU,iBAAf,UACI,oBAAG4G,KAAK,uCAAuCC,OAAO,SAAtD,UACE,qBAAKjF,IAAI,gCAAiC,OAE5C,oBAAGgF,KAAK,2BAA2BC,OAAO,SAA1C,UACE,qBAAKjF,IAAI,wBAAyB,aAI1C,sBAAK5B,UAAU,QAAf,UACE,mBAAG4G,KAAK,mBAAmB5G,UAAU,QAArC,iCAGA,cAAC,EAAD,CAAYC,QAAQ,UAIxB,qBAAKD,UAAU,YAAf,yDCkCO8G,G,yDAzDb,WAAY/G,GAAQ,IAAD,8BACjB,cAAMA,IACD2B,MAAQ,CACX+C,OAAQ1E,EAAMyG,SAAS9E,MAAQ3B,EAAMyG,SAAS9E,MAAM+C,OAAOD,MAAQ,KACnEzB,UAAWhD,EAAMyG,SAAS9E,MAAQ3B,EAAMyG,SAAS9E,MAAMkB,MAAQ,KAC/DK,QAASlD,EAAMyG,SAAS9E,MAAQ3B,EAAMyG,SAAS9E,MAAMmB,IAAM,KAC3DkE,OAAQ,MANO,E,qDAWnB,WAAqB,IAAD,OAClBpD,MAAM,+CAAgD,CACpDC,OAAQ,MACRC,QAAS,CACP,eAAgB,mBAChBuC,OAAQ,sBAGTnC,MAAK,SAACoC,GAAD,OAAcA,EAASlC,UAC5BF,MAAK,SAACqC,GACL,GAAyB,MAArB,EAAK5E,MAAM+C,OAAgB,CAC7B,IAAIuC,EAAe,IAAIC,MAEvB,EAAKvF,MAAM+C,OAAOyC,SAAQ,SAACrF,GACzByE,EAAaY,SAAQ,SAACxB,GAChB7D,GAAK6D,EAAQ/C,IACfqE,EAAaxF,KAAKkE,SAIxB,EAAKa,SAAS,CACZQ,OAAQC,SAGV,EAAKT,SAAS,CACZQ,OAAQT,S,oBAMlB,WACE,OACE,qBAAKtG,UAAU,gCAAf,SACE,cAAC,EAAD,CACEuF,MAAOpD,KAAKpC,MAAMyG,SAAS9E,MAAQ,iBAAmB,UACtD8D,OAAQrD,KAAKT,MAAMqF,OACnBhE,UAAWZ,KAAKT,MAAMqB,UACtBE,QAASd,KAAKT,MAAMuB,QACpBkC,MAAM,U,GAtDKuB,c,4CC4CNS,G,OA3CA,SAACpH,GACd,IAAIqH,EAUJ,OACE,gCACE,cAAC,IAAD,UACE,cAAC,IAAD,yBAAaC,IAAK,SAACC,GAAD,OAAQF,EAASE,IAXxB,CACfC,MAAM,EACNC,QAAQ,EACRC,UAAU,EACVC,aAAc,EACdC,eAAgB,IAMZ,aACG5H,EAAMgF,OAAOU,KAAI,SAACC,EAASC,GAC1B,OAAO,qBAAK/D,IAAK8D,EAAiB1F,UAAU,eAAb2F,WAKrC,qBACE3F,UACE,WAAaD,EAAMgF,OAAOxD,OAAS,EAAI,YAAc,aAFzD,SAKGxB,EAAMgF,OAAOU,KAAI,SAACC,EAASC,GAC1B,OACE,qBAEE3F,UAAU,WACV4B,IAAK8D,EACLxF,QAAS,WACPkH,EAAOQ,UAAUjC,KAJdA,aC2CJkC,EAvEG,SAAC9H,GAAW,IACpBkF,EAASlF,EAAMyG,SAAS9E,MAAxBuD,KADmB,EAGDzE,qBAHC,mBAGpBoC,EAHoB,KAGbkF,EAHa,OAILtH,qBAJK,mBAIpBqC,EAJoB,KAIfkF,EAJe,OAMOvH,mBAASyE,EAAKF,OAAO,IAN5B,gCAQOvE,mBAAS,OARhB,mBAQpBwH,EARoB,KAQTC,EARS,KAqB3B,OACE,qBAAKjI,UAAU,qBAAf,SACE,sBAAKA,UAAU,2BAAf,UACE,qBAAKA,UAAU,OAAf,SACE,cAAC,EAAD,CAAQ+E,OAAQE,EAAKF,WAEvB,sBAAK/E,UAAU,QAAf,UACE,oBAAIA,UAAU,OAAd,SAAsBiF,EAAKC,OAC3B,8CACA,oBAAIlF,UAAU,iBAAd,SACGiF,EAAKY,YAAYJ,KAAI,SAACC,EAASC,GAC9B,OACE,6BACE,4BAAID,KADGC,QAMf,oBAAI3F,UAAU,cAAd,iCACA,cAAC,EAAD,CACEqD,SAAS,EACTlD,SAhCU,SAACiE,EAASxB,EAAOC,GACzBoF,IAAV7D,GACA0D,EAASlF,GACTmF,EAAOlF,IA8BCF,GAAIsC,EAAKtC,GACTI,UAAWkC,EAAKlC,UAChBE,QAASgC,EAAKhC,QACdO,cA7BS,WACjByE,EAAa,SA8BLD,GAA0B,MAAbA,EAMXA,GAA0B,MAAbA,EACb,cAAC,IAAD,CACAhI,UAAU,qBACRI,GAAI,CACFqB,SAAU,WACVC,MAAO,CAAE8D,OAAQP,EAAMlC,UAAWH,EAAOK,QAASJ,IAJtD,sCASA,KAfF,qBAAK7C,UAAU,qBAAf,SACE,qBAAKA,UAAU,aAAf,0DCZCkI,G,mNAtCbxG,MAAQ,CACNwE,YAAa,M,uDAIf,WAAqB,IAAD,OAClBvC,MAAM,mDAAoD,CACxDC,OAAQ,MACRC,QAAS,CACP,eAAgB,mBAChBuC,OAAQ,sBAGTnC,MAAK,SAACoC,GAAD,OAAcA,EAASlC,UAC5BF,MAAK,SAACqC,GACL,EAAKC,SAAS,CACZL,YAAaI,S,oBAKrB,WACE,OACE,sBAAKtG,UAAU,mBAAf,UACE,qBAAKA,UAAU,YACf,qBAAKA,UAAU,WAAW4B,IAAI,4BAC9B,sBAAK5B,UAAU,iCAAf,UACE,cAAC,EAAD,CACEuF,MAAM,mBACNW,YAAa/D,KAAKT,MAAMwE,cAE1B,cAAC,EAAD,CAAQjG,QAAQ,c,GAhCJyG,cCsQPyB,G,OAxQC,WAAO,IAAD,EACc3H,mBAAS,IADvB,mBACb4H,EADa,KACFC,EADE,OAEY7H,mBAAS,IAFrB,mBAEb8H,EAFa,KAEHC,EAFG,OAGM/H,mBAAS,IAHf,mBAGbgI,EAHa,KAGNC,EAHM,OAIMjI,mBAAS,IAJf,mBAIbkI,EAJa,KAINC,EAJM,OAKUnI,mBAAS,IALnB,mBAKboI,EALa,KAKJC,EALI,OAMkBrI,oBAAS,GAN3B,mBAMbsI,EANa,KAMAC,EANA,OAOwBvI,oBAAS,GAPjC,mBAObwI,EAPa,KAOGC,EAPH,OASgBzI,oBAAS,GATzB,mBASb0I,EATa,KASDC,EATC,OAUgB3I,oBAAS,GAVzB,mBAUb4I,EAVa,KAUDC,EAVC,OAWoB7I,oBAAS,GAX7B,mBAWb8I,EAXa,KAWCC,EAXD,OAYU/I,oBAAS,GAZnB,mBAYbgJ,EAZa,KAYJC,EAZI,KAsBdC,EAAa,WACjB,IAAIC,GAAQ,EAcZ,MAbkB,wJAEHC,KAAKpB,IAAmB,IAATA,GAK5BW,GAAc,GACTK,GAAoB,IAATd,GACde,GAAW,KANbN,GAAc,GACdM,GAAW,GACXE,GAAQ,GAQHA,GAGHE,EAAa,WAGjB,MAFmB,8DAEHD,KAAKlB,IAKnBW,GAAc,GACTG,GAAoB,IAAThB,GACdiB,GAAW,IAIR,IAVLJ,GAAc,GACdI,GAAW,IACJ,IAwEX,OACE,sBAAKzJ,UAAU,gCAAf,UACE,4CACA,sBAAKA,UAAU,kBAAf,UACE,sBAAKA,UAAU,OAAf,UACE,sBAAKA,UAAU,eAAf,UACE,qDACA,qBAAKA,UAAU,OAAf,SACE,mBAAG4G,KAAK,iBAAR,8BAEF,qBAAK5G,UAAU,OAAf,SACE,mBAAG4G,KAAK,8BAAR,uCAGJ,sBAAK5G,UAAU,gBAAf,UACE,+CACA,sBAAKA,UAAU,QAAf,UACE,sBAAKA,UAAU,OAAf,UACE,wCADF,uBAGA,sBAAKA,UAAU,OAAf,UACE,wCADF,uBAGA,sBAAKA,UAAU,OAAf,UACE,wCADF,uBAGA,sBAAKA,UAAU,OAAf,UACE,wCADF,uBAGA,sBAAKA,UAAU,OAAf,UACE,wCADF,uBAGA,sBAAKA,UAAU,OAAf,UACE,wCADF,YAGA,sBAAKA,UAAU,OAAf,UACE,wCADF,YAGA,sBAAKA,UAAU,OAAf,UACE,gDADF,8BAMN,sBAAKA,UAAU,QAAf,UACG8I,GAAe,qBAAKnG,GAAG,UAAU3C,UAAU,aAC5C,sBAAKA,UAAU,UAAf,UACE,sBAAKA,UAAU,gBAAf,UACE,uBAAO8J,QAAQ,YAAf,wBACA,uBACE9J,UAAU,gBACV+J,KAAK,OACLpH,GAAG,YACHuC,KAAK,YACL8E,MAAO5B,EACP7E,SAAU,SAACzC,GAAD,OAAWuH,EAAavH,EAAM+F,OAAOmD,aAGnD,sBAAKhK,UAAU,gBAAf,UACE,uBAAO8J,QAAQ,WAAf,uBACA,uBACE9J,UAAU,gBACV+J,KAAK,OACLpH,GAAG,WACHuC,KAAK,WACL8E,MAAO1B,EACP/E,SAAU,SAACzC,GAAD,OAAWyH,EAAYzH,EAAM+F,OAAOmD,gBAIpD,sBAAKhK,UAAU,UAAf,UACE,sBAAKA,UAAU,gBAAf,UACE,uBAAO8J,QAAQ,QAAf,0BACA,uBACE9J,UACE,kBAAoBoJ,EAAa,cAAgB,MAEnDW,KAAK,OACLpH,GAAG,QACHuC,KAAK,QACL8E,MAAOtB,EACPnF,SAAU,SAACzC,GAAD,OAAW6H,EAAS7H,EAAM+F,OAAOmD,QAC3CC,QAAS,kBAAMJ,OAEhBT,EACC,sBAAMpJ,UAAU,YAAhB,mCACE,QAEN,sBAAKA,UAAU,gBAAf,UACE,uBAAO8J,QAAQ,QAAf,mBACA,uBACE9J,UACE,kBAAoBkJ,EAAa,cAAgB,MAEnDa,KAAK,QACLpH,GAAG,QACHuC,KAAK,QACL8E,MAAOxB,EACPjF,SAAU,SAACzC,GAAD,OAAW2H,EAAS3H,EAAM+F,OAAOmD,QAC3CC,QAAS,kBAAMP,OAEhBR,GAAuB,IAATV,EACb,sBAAMxI,UAAU,YAAhB,mCACE,KACHkJ,GAAuB,IAATV,EACb,sBAAMxI,UAAU,YAAhB,6BACE,WAGR,sBAAKA,UAAU,gBAAf,UACE,uBAAO8J,QAAQ,UAAf,qBACA,0BACEnH,GAAG,UACHuC,KAAK,UACL8E,MAAOpB,EACPrF,SAAU,SAACzC,GAAD,OAAW+H,EAAW/H,EAAM+F,OAAOmD,QAC7CE,UAAW,WACLZ,GACFC,GAAgB,MAIrBD,EACC,sBAAMtJ,UAAU,YAAhB,+BACE,QAEN,sBACEA,UACE,qBACCkJ,GAAcE,GAAcE,IAAiBE,EAC1C,YACA,IAENtJ,QAlMQ,WAChB,IAAI8I,EAAJ,CAIA,IAAIW,GAAQ,EAERD,MACFC,GAAQ,GAGNE,MACFF,GAAQ,GAGK,IAAXf,IACFW,GAAgB,GAChBI,GAAQ,GAGNA,IAIJV,GAAkB,GAElBtF,MAAM,kDAAmD,CACvDC,OAAQ,OACRC,QAAS,CACP,eAAgB,oBAElB5C,KAAM6C,KAAKC,UAAU,CACnBoG,KAAM,CACJ/B,UAAWA,EACXE,SAAUA,EACVI,MAAOA,EACPF,MAAOA,EACPI,QAASA,OAIZ3E,MAAK,SAACC,GACL,OAAOA,EAAEC,UAEVF,MAAK,SAACM,GACL0E,GAAkB,GAClBF,GAAe,GACXxE,EAAI6F,MACNpJ,SAASqJ,eAAe,WAAWC,UACjC,8EACFtJ,SAASqJ,eAAe,WAAWnJ,MAAMqJ,WAAa,YAEtDvJ,SAASqJ,eAAe,WAAWC,UACjC,mCACFtJ,SAASqJ,eAAe,WAAWnJ,MAAMqJ,WAAa,WAExDC,OAAOC,SAAS,EAAG,GAlGvBpC,EAAa,IACbE,EAAY,IACZE,EAAS,IACTE,EAAS,IACTE,EAAW,UAiOL,iBAUGG,EACC,qBAAKhJ,UAAU,eAAe4B,IAAI,8BAChC,mBChJD8I,G,cA9GE,SAAC3K,GAAW,IAAD,EACYS,oBAAS,GADrB,mBACnBmK,EADmB,KACNC,EADM,OAEoBpK,oBAAS,GAF7B,mBAEnBqK,EAFmB,KAEFC,EAFE,OAGoBtK,oBAAS,GAH7B,mBAGnBuK,EAHmB,KAGFC,EAHE,KAKtBC,EAAY,GACZC,EAAc,GAEdC,EAAe,KACfC,EAAgB,KAChBC,EAAe,KACfC,EAAgB,KAGhBC,EAAiB,KACjBC,EAAa,KAWjB,SAASC,EAAmBC,EAAkBf,EAAagB,GAEvB,MAA9B5L,EAAM6L,sBAER7L,EAAM6L,qBAAqBjB,EAAagB,GAG1CX,EAAmBU,GAhBjB3L,EAAM8L,SACRZ,EAAY,mBACZC,EAAc,mBAGdD,EAAY,0BACZC,EAAc,kBAmEhB,OACE,qBAAKlL,UAAU,WAAf,SACE,sBAAKA,UAAU,mBAAf,UACE,oBAAIA,UAAU,iBAAd,SAAgCiL,IAChC,uBACEtI,GAAG,cACHuC,KAAK,cACL4G,YAAY,yBACZ9B,MAAOW,GAA4B,GACnCpH,SAAU,SAACzC,GAAD,OAAW8J,EAAe9J,EAAM+F,OAAOmD,UAElD,6BAAKe,IACN,qBAAK/K,UAAU,WAAWE,QAlER,WAClB2K,GAAkC,GAAfF,GAAuC,IAAfA,IAI/CG,GAAmB,GAEnBnH,MAAM,yDAA0D,CAC9DC,OAAQ,OACRC,QAAS,CACP,eAAgB,oBAElB5C,KAAM6C,KAAKC,UAAU,CACnB4G,YAAaA,MAGd1G,MAAK,SAACC,GACL,OAAOA,EAAEC,UAEVF,MAAK,SAACM,GAGL,GAFAuG,GAAmB,GAEfvG,EAAI8B,UAEN,GAA+C,MAA3C9B,EAAI8B,SAAS0F,KAAK,GAAGC,SAAS,GAAGC,OACrC,CACE,IAAItB,EAAcpG,EAAI8B,SAAS6F,sBAAsB,GAErDf,EAAe5G,EAAI8B,SAAS0F,KAAK,GAAGC,SAAS,GAAGG,SAASnH,KACzDoG,EAAgB7G,EAAI8B,SAAS0F,KAAK,GAAGC,SAAS,GAAGG,SAASnC,MAAQ,QAElEqB,EAAe9G,EAAI8B,SAAS0F,KAAK,GAAGC,SAAS,GAAGI,SAASpH,KACzDsG,EAAgB/G,EAAI8B,SAAS0F,KAAK,GAAGC,SAAS,GAAGI,SAASpC,MAAQ,KAGlEwB,GADAA,EAA4B,EAAIF,EA1DzB,GA0D2D,EAAIF,EAzD9D,IA0DgBiB,QAAQ,GAEhCd,EAAiB,iCAAmCZ,EAAc,OAASQ,EAAe,QAAUE,EAAe,wBAA0BG,EAAa,IAEtJzL,EAAM8L,UAERN,GAAkC,iGAGpCE,EAAmBF,EAAgBZ,EAAaa,SAKlDC,EAAmB,wEAAyE,QAiB9F,SACGP,WClCIoB,G,mNAjEb5K,MAAQ,CACNkD,UAAW,KACX2H,OAAQ,M,EAqBVC,UAAY,SAACvH,EAAM8E,GACjB,OACE,qBACE/J,UACE,QAAkB,aAAR+J,EAAsB,gBAAkB,eAFtD,SAKG9E,EAAKQ,KAAI,SAACC,EAASC,GAClB,OACE,sBAAK3F,UAAU,cAAf,UACE,6BAAK0F,EAAQR,OACJ,aAAR6E,EAAsB,qCAAiB,KACxC,oBAAG/J,UAAU,OAAb,UAAqB0F,EAAQG,YAA7B,IAAmD,aAARkE,GAAuB,sBAAM/J,UAAU,QAAhB,SAA0C,GAAjB0F,EAAQlD,MAAa,aAAe,IAAMkD,EAAQlD,aAH7GmD,S,uDA3B5C,WAAqB,IAAD,OAClBhC,MAAM,qDAAsD,CAC1DC,OAAQ,MACRC,QAAS,CACP,eAAgB,mBAChBuC,OAAQ,sBAGTnC,MAAK,SAACoC,GAAD,OAAcA,EAASlC,UAC5BF,MAAK,SAACqC,GACL,EAAKC,SAAS,CACZ3B,UAAW0B,EAAa1B,UACxB2H,OAAQjG,EAAamG,e,oBA0B7B,WACE,OACE,sBAAKzM,UAAU,qCAAf,UACE,qBAAKA,UAAU,YACf,qBAAKA,UAAU,WAAW4B,IAAI,8BAC9B,sBAAK5B,UAAU,iCAAf,UACE,2CACCmC,KAAKT,MAAMkD,UACRzC,KAAKqK,UAAUrK,KAAKT,MAAMkD,UAAW,aACrC,KACJ,yCACCzC,KAAKT,MAAM6K,OACRpK,KAAKqK,UAAUrK,KAAKT,MAAM6K,OAAQ,WAClC,KACJ,cAAC,EAAD,CAAUV,SAAS,EAAOD,qBAAwB,OAClD,cAAC,EAAD,CAAQ3L,QAAQ,c,GA3DFyG,cC4DTgG,G,mNA5DbhL,MAAQ,CACNiL,SAAU,KACVC,KAAM,M,EAoBRJ,UAAY,SAACvH,EAAM8E,GACjB,OACE,qBACE/J,UAAU,mBADZ,SAGGiF,EAAKQ,KAAI,SAACC,EAASC,GAClB,OACE,sBAAK3F,UAAU,cAAf,UACE,6BAAK0F,EAAQR,OACb,mBAAGlF,UAAU,OAAb,SAAqB0F,EAAQG,gBAFGF,S,uDAxB5C,WAAqB,IAAD,OAClBhC,MAAM,oDAAqD,CACzDC,OAAQ,MACRC,QAAS,CACP,eAAgB,mBAChBuC,OAAQ,sBAGTnC,MAAK,SAACoC,GAAD,OAAcA,EAASlC,UAC5BF,MAAK,SAACqC,GACL,EAAKC,SAAS,CACZoG,SAAUrG,EAAaqG,SACvBC,KAAMtG,EAAasG,Y,oBAsB3B,WACE,OACE,sBAAK5M,UAAU,oCAAf,UACE,qBAAKA,UAAU,YACf,qBAAKA,UAAU,WAAW4B,IAAI,6BAC9B,sBAAK5B,UAAU,iCAAf,UACE,0CACCmC,KAAKT,MAAMiL,SACRxK,KAAKqK,UAAUrK,KAAKT,MAAMiL,SAAU,YACpC,KACJ,sCACCxK,KAAKT,MAAMkL,KACRzK,KAAKqK,UAAUrK,KAAKT,MAAMkL,KAAM,QAChC,KACJ,cAAC,EAAD,CAAQ3M,QAAQ,c,GAtDHyG,c,yBCoDRmG,G,OAxDS,SAAC9M,GAIvB,OACE,sBAAKC,UAAU,4BAAf,UACE,sBAAKA,UAAU,UAAf,UACE,sBAAKA,UAAU,gBAAf,UACE,uBAAO8J,QAAQ,YAAf,wBACA,uBACE9J,UAAU,gBACV+J,KAAK,OACLpH,GAAG,YACHuC,KAAK,YACL3B,SAAU,SAACzC,GAAD,OAAWf,EAAMsI,aAAavH,EAAM+F,OAAOmD,aAGzD,sBAAKhK,UAAU,gBAAf,UACE,uBAAO8J,QAAQ,WAAf,uBACA,uBACE9J,UAAU,gBACV+J,KAAK,OACLpH,GAAG,WACHuC,KAAK,WACL3B,SAAU,SAACzC,GAAD,OAAWf,EAAMwI,YAAYzH,EAAM+F,OAAOmD,gBAI1D,sBAAKhK,UAAU,UAAf,UACE,sBAAKA,UAAU,gBAAf,UACE,uBAAO8J,QAAQ,QAAf,0BACA,uBACE9J,UAAU,gBACV+J,KAAK,OACLpH,GAAG,QACHuC,KAAK,QACL3B,SAAU,SAACzC,GAAD,OAAWf,EAAM4I,SAAS7H,EAAM+F,OAAOmD,QACjDC,QAAS,WAAOlK,EAAM8J,aAAc9J,EAAM+M,kBAG9C,sBAAK9M,UAAU,gBAAf,UACE,uBAAO8J,QAAQ,QAAf,mBACA,uBACE9J,UAAU,gBACV+J,KAAK,QACLpH,GAAG,QACHuC,KAAK,QACL3B,SAAU,SAACzC,GAAD,OAAWf,EAAM0I,SAAS3H,EAAM+F,OAAOmD,QACjDC,QAAS,WAAOlK,EAAM2J,aAAc3J,EAAM+M,0BdjClDC,G,OAAa,CACf3E,UAAW,GACXE,SAAU,GACVE,MAAO,GACPE,MAAO,KAEL1C,EAAU,GAqSCgH,E,4MAhSbtL,MAAQ,CACN0G,UAAW,GACXE,SAAU,GACVI,MAAO,GACPF,MAAO,GACPU,YAAY,EACZE,YAAY,EACZ6D,WAAW,EACXC,gBAAgB,G,EAGlB7E,aAAe,SAAC8E,GACd,EAAK5G,SAAS,CAAE6B,UAAW+E,EAAIF,WAAW,K,EAG5C1E,YAAc,SAAC6E,GACb,EAAK7G,SAAS,CAAE+B,SAAU8E,EAAIH,WAAW,K,EAG3CtE,SAAW,SAAC0E,GACV,EAAK9G,SAAS,CAAEmC,MAAO2E,EAAGJ,WAAW,K,EAGvCxE,SAAW,SAAC5G,GACV,EAAK0E,SAAS,CAAEiC,MAAO3G,EAAGoL,WAAW,EAAO/D,YAAY,K,EAG1DQ,WAAa,WACX,IAAIC,GAAQ,EAeZ,MAbE,wJAEaC,KAAK,EAAKlI,MAAM8G,QAK7B,EAAKjC,SAAS,CAAE2C,YAAY,IACvB,EAAKxH,MAAMwL,gBAAsC,IAApB,EAAKxL,MAAMgH,OAC3C,EAAKnC,SAAS,CAAE2G,gBAAgB,MANlC,EAAK3G,SAAS,CAAE2C,YAAY,IAC5B,EAAK3C,SAAS,CAAE2G,gBAAgB,IAChCvD,GAAQ,GAQHA,G,EAGTE,WAAa,WAIX,MAFE,kDAEcD,KAAK,EAAKlI,MAAMgH,QAK9B,EAAKnC,SAAS,CAAE6C,YAAY,IACvB,EAAK1H,MAAMwL,gBAAsC,IAApB,EAAKxL,MAAM8G,OAC3C,EAAKjC,SAAS,CAAE2G,gBAAgB,KAI7B,IAVL,EAAK3G,SAAS,CAAE6C,YAAY,IAC5B,EAAK7C,SAAS,CAAE2G,gBAAgB,KACzB,I,EAWXJ,UAAY,WACV,OAC0B,IAAxB,EAAKpL,MAAM0G,WACY,IAAvB,EAAK1G,MAAM4G,UACS,IAApB,EAAK5G,MAAM8G,OACS,IAApB,EAAK9G,MAAMgH,SAEX,EAAKnC,SAAS,CACZ0G,WAAW,KAEN,I,EAMXK,e,sBAAiB,sDAAAC,EAAA,yDAAOC,EAAP,gCACTC,EAAWjD,OAAOkD,OAAOD,SAC7B,gCACA,iBAGIE,EAAqB3M,SAASqJ,eAAe,cANpC,UASTmD,EATS,wBAULI,EAAiBH,EAASG,eAAe,CAC7CC,MAAO,CACLC,OAAQtL,EACRuL,MAAO,SAETC,YAAa,KACbC,aAAc,QAIhBN,EAAmBrD,UAAY,GApBpB,SAqBOmD,EAAS3K,UAAU8K,GArB1B,cAqBX9K,EArBW,iBAsBLA,EAAUoL,OAAO,eAtBZ,QAwBX,IADIC,EAAUnN,SAASqJ,eAAe,cAAc+D,SAC3CzI,EAAI,EAAGA,EAAIwI,EAAQ5M,OAAQoE,IAC/BA,GAAMwI,EAAQ5M,OAAS,GACxB4M,EAAQxI,GAAG0I,SA1BJ,mDAgCMZ,EAASa,OAhCf,eAgCPA,EAhCO,iBAiCPA,EAAKJ,OAAO,YAjCL,eAkCSlN,SAASqJ,eAAe,OAChCkE,iBAAiB,QAA/B,sBAAwC,4BAAAhB,EAAA,sEACjBe,EAAKE,WADY,OAChCrL,EADgC,OAEtC,EAAKsL,OAAOtL,EAAOuL,OAFmB,4CAKlCd,EAAiBH,EAASG,eAAe,CAC7CC,MAAO,CACLC,OAAQtL,EACRuL,MAAO,SAETC,YAAa,KACbC,aAAc,QAGhBN,EAAmBrD,UAAY,GAjDlB,UAkDKmD,EAAS3K,UAAU8K,GAlDxB,eAkDb9K,EAlDa,iBAmDPA,EAAUoL,OAAO,eAnDV,QAoDWlN,SAASqJ,eAAe,cAChCkE,iBAAiB,QAAjC,sBAA0C,4BAAAhB,EAAA,0DACrC,EAAK1D,eAAgB,EAAKH,aADW,oDAIb,IAAxB,EAAKhI,MAAM0G,WAA0C,IAAvB,EAAK1G,MAAM4G,SAJJ,uBAKtC,EAAK/B,SAAS,CACZ0G,WAAW,IANyB,0CAUnBnK,EAAU0L,WAVS,QAUlCrL,EAVkC,QAW9BE,SACR,EAAKoL,OAAOtL,EAAOuL,OAZmB,4CArD7B,kDAsEbrK,QAAQC,IAAR,MAtEa,0D,4CA0EjB,SAAOoK,GACL,IAAMC,EAnLD,uCAAuCC,QAAQ,SAAS,SAAUC,GACvE,IAAI3K,EAAqB,GAAhB4K,KAAKC,SAAiB,EAE/B,OADW,KAALF,EAAW3K,EAAS,EAAJA,EAAW,GACxB8K,SAAS,OAiLlBjC,EAAW3E,UAAYjG,KAAKT,MAAM0G,UAClC2E,EAAWzE,SAAWnG,KAAKT,MAAM4G,SACjCyE,EAAWrE,MAAQvG,KAAKT,MAAMgH,MAC9BqE,EAAWvE,MAAQrG,KAAKT,MAAM8G,MAC9B7E,MAAM,uDAAwD,CAC5DC,OAAQ,OACRC,QAAS,CACPuC,OAAQ,mBACR,eAAgB,oBAElBnF,KAAM6C,KAAKC,UAAU,CACnBkL,UAAWP,EACXC,gBAAiBA,EACjBO,YAAa,gBACbpB,OAAQtL,EACR2M,KAAMxM,EACNI,UAAWH,EACXK,QAASJ,EACTuM,OAAQrC,EACR/G,QAASA,EACTvD,OAAQA,MAGT4M,OAAM,SAACC,GACNC,MAAM,kBAAoBD,MAE3BrL,MAAK,SAACoC,GACL,OAAKA,EAASmJ,GAGPnJ,EAASlC,OAFPkC,EAASlC,OAAOF,MAAK,SAACwL,GAAD,OAAeC,QAAQC,OAAOF,SAI7DxL,MAAK,SAACgB,GACLvC,EAAgBuC,EAAK9B,WAEtBkM,OAAM,SAACC,GACN5M,GAAgB,Q,+BA4BtB,WACEP,KAAKmL,iBACL9K,EAAQL,KAAKpC,MAAMyC,MACnBG,EAAKR,KAAKpC,MAAM4C,GAChBC,EAAQT,KAAKpC,MAAMgD,UACnBF,EAAMV,KAAKpC,MAAMkD,QACjB+C,EAAU7D,KAAKpC,MAAMiG,QACrBtD,EAAkBP,KAAKpC,MAAM6P,QAC7BnN,EAASN,KAAKpC,MAAM0C,S,uCAGtB,SAA0BoN,GACpBA,EAAUrN,QAAUL,KAAKT,MAAMc,QACjCA,EAAQqN,EAAUrN,MAClBL,KAAKmL,gBAAe,M,oBAIxB,WACE,OACE,sBAAK3K,GAAG,iBAAiB3C,UAAU,eAAnC,UACE,sBAAKA,UAAU,OAAf,UACE,cAAC,EAAD,CACEqI,aAAclG,KAAKkG,aACnBE,YAAapG,KAAKoG,YAClBE,SAAUtG,KAAKsG,SACfE,SAAUxG,KAAKwG,SACfe,WAAYvH,KAAKuH,WACjBG,WAAY1H,KAAK0H,WACjBiD,UAAW3K,KAAK2K,YAEjB3K,KAAKT,MAAMwH,YACV,qBAAKlJ,UAAU,qBAAf,mCAEDmC,KAAKT,MAAM0H,YACV,qBAAKpJ,UAAU,qBAAf,mCAEDmC,KAAKT,MAAMuL,WACV9K,KAAKT,MAAMwL,gBACT,qBAAKlN,UAAU,qBAAf,yCAGN,qBAAK2C,GAAG,YACR,qBAAKA,GAAG,cACR,wBACEA,GAAG,MACH3C,UAAU,8BACV8P,aACE3N,KAAKT,MAAMwH,YACX/G,KAAKT,MAAM0H,YACXjH,KAAKT,MAAMuL,WACS,IAApB9K,KAAKT,MAAM8G,OACS,IAApBrG,KAAKT,MAAMgH,OACa,IAAxBvG,KAAKT,MAAM0G,WACY,IAAvBjG,KAAKT,MAAM4G,WACVnG,KAAKT,MAAMwL,gBAXhB,oBAkBA,qBAAKlN,UAAU,aAAa2C,GAAG,sB,GA3Rb+D,aeyNXqJ,G,OA9OC,SAAChQ,GAAW,IAAD,EACDS,mBAAS,IADR,mBAGnBwP,GAHmB,UAGN,SAAC9N,GAClB,IAAI+N,EAAI,IAAInO,KAAKI,GACfgO,EAAQ,IAAMD,EAAEE,WAAa,GAC7BC,EAAM,GAAKH,EAAE3N,UACb+N,EAAOJ,EAAEK,cAIX,OAHIJ,EAAM3O,OAAS,IAAG2O,EAAQ,IAAMA,GAChCE,EAAI7O,OAAS,IAAG6O,EAAM,IAAMA,GAEzBF,EAAQ,IAAME,EAAM,IAAMC,IAG7BtN,EAAYiN,EAAWjQ,EAAMyG,SAAS9E,MAAMqB,WAC5CE,EAAU+M,EAAWjQ,EAAMyG,SAAS9E,MAAMuB,SAfvB,EAiBKzC,mBAC5B,IAAIyG,MAAMlH,EAAMyG,SAAS9E,MAAM8D,OAAOQ,QAAQzE,SAlBvB,mBAiBlByE,EAjBkB,KAiBTuK,EAjBS,OAqBK/P,qBArBL,mBAqBlBoP,EArBkB,KAqBTY,EArBS,OAuBChQ,oBACvBT,EAAMyG,SAAS9E,MAAM8D,OAAOhD,OAC1BsM,KAAK2B,MAAM1Q,EAAMyG,SAAS9E,MAAMuB,QAAQyN,UAAY,IAAO,KAAO,IACjE5B,KAAK2B,MACH1Q,EAAMyG,SAAS9E,MAAMqB,UAAU2N,UAAY,IAAO,KAAO,MA3BxC,mBAuBlBlO,EAvBkB,KAuBXmO,EAvBW,OA+BanQ,qBA/Bb,mBA+BlBmK,EA/BkB,KA+BLC,EA/BK,OAgCepK,qBAhCf,mBAgClBmL,EAhCkB,KAgCJiF,EAhCI,OAiC6BpQ,qBAjC7B,mBAiClBqQ,EAjCkB,KAiCGC,EAjCH,OAkC+BtQ,qBAlC/B,mBAkClBuQ,EAlCkB,KAkCIC,EAlCJ,KAoC1BC,qBAAU,WACTC,EAAoB1O,KAClB,IAEH,IAAM0O,EAAsB,SAAC1O,GAC5B,IAAI2O,EAAkBnL,EAElBoL,EACJ,CACClM,KAAM,GACNmM,KAAM,IAGPD,EAAYlM,KAAO,oDACnBkM,EAAYC,KAAO,KAEnBF,EAAgB,GAAKC,EAErB,IAAIE,EACJ,CACCpM,KAAM,GACNmM,KAAM,IAGPC,EAAapM,KAAO,8CACpBoM,EAAaD,KAAO,KAEpBF,EAAgB,GAAKG,EAErBX,EAASnO,EAAQ,IACjB+N,EAAWY,IAqEX,OAAQvB,EA2FN,sBAAK5P,UAAU,gCAAf,UACE,qBAAK4B,IAAI,2BACT,qDACA,sBAAK5B,UAAU,eAAf,mJAE8B,uBAC5B,cAAC,IAAD,CAASI,GAAG,IAAZ,kCA/FJ,sBAAKJ,UAAU,gCAAf,UACE,sBAAKA,UAAU,kBAAf,UACE,sBAAKA,UAAU,UAAf,UACE,6BAAKD,EAAMyG,SAAS9E,MAAM8D,OAAON,OACjC,sBAAKlF,UAAU,OAAf,yBACc,+BAAO+C,OAErB,sBAAK/C,UAAU,OAAf,uBACY,+BAAOiD,OAEnB,sBAAKjD,UAAU,OAAf,8BACmB,qCAAQD,EAAMyG,SAAS9E,MAAM8D,OAAOhD,eAGzD,qBAAKxC,UAAU,WAAW4B,IAAK7B,EAAMyG,SAAS9E,MAAM8D,OAAOT,OAAO,QAEpE,sBAAK/E,UAAU,aAAf,UACH,kDACMD,EAAMyG,SAAS9E,MAAM8D,OAAOQ,QAC3B,qBAAKhG,UAAU,iBAAf,SACE,qBAAKA,UAAU,UAAf,SACGD,EAAMyG,SAAS9E,MAAM8D,OAAOO,gBAAgBN,KAAI,SAAC8L,EAAM5L,GACtD,OACE,sBAAK3F,UAAU,cAAf,UACE,uBACEA,UAAU,WACV+J,KAAK,WACL7E,KAAK,UACL8E,MAAOuH,EAAK/O,MACZgP,SAAS,IAEX,sBAAKxR,UAAU,cAAf,UACIuR,EAAKrM,KAAKuM,SAAS,YAAgBZ,GAA6C,iDAAqDU,EAAKrM,KAD9I,IACwJqM,EAAKrM,KAAKuM,SAAS,YAAeV,GAAyB,qCAAQA,KAA+B,qCAAQQ,EAAK/O,cATvOmD,UAgBxC,KACJ,yCACC5F,EAAMyG,SAAS9E,MAAM8D,OAAOQ,QAC3B,qBAAKhG,UAAU,iBAAf,SACE,qBAAKA,UAAU,UAAf,SACGD,EAAMyG,SAAS9E,MAAM8D,OAAOQ,QAAQP,KAAI,SAAC8L,EAAM5L,GAC9C,OACE,sBAAK3F,UAAU,cAAf,UACE,uBACEA,UAAU,WACV+J,KAAK,WACL7E,KAAK,UACL8E,MAAOuH,EAAK/O,MACZe,SAAU,SAAC1B,GAAD,OAxHV,SAACf,EAAO4Q,EAAaxM,EAAMS,GAC7C,IAAIwL,EAAkBnL,EAClB2L,EAAS,CACXzM,KAAM,GACNmM,KAAM,IAGJvQ,EAAM+F,OAAO2K,QAEXtM,EAAKuM,SAAS,YAEI,MAAhB9F,GAEFgG,EAAOzM,KAAOyF,EACdgH,EAAON,KAAO1F,EAEdwF,EAAgBxL,GAAKgM,EACrBhB,EAASnO,IAASmJ,GAElBmF,EAAuBnG,GACvBqG,EAAwBrF,IAIxB7K,EAAM+F,OAAO2K,SAAU,GAKzBG,EAAOzM,KAAOA,EACdyM,EAAON,KAAOK,EAEdP,EAAgBxL,GAAKgM,EACrBhB,EAASnO,IAASkP,IAKhBxM,EAAKuM,SAAS,YAEI,MAAhB9F,GAEFwF,EAAgBxL,GAAK,KACrBgL,EAASnO,GAASuO,IAIlBjQ,EAAM+F,OAAO2K,SAAU,GAKzBL,EAAgBxL,GAAK,KACrBgL,EAASnO,GAASkP,IAItBnB,EAAWY,GA+DwBS,CAAY/P,EAAG0P,EAAK/O,MAAO+O,EAAKrM,KAAMS,EAAI,MAE7D,sBAAK3F,UAAU,cAAf,UACIuR,EAAKrM,KAAKuM,SAAS,YAAgBZ,GAA6C,iDAAqDU,EAAKrM,KAD9I,IACwJqM,EAAKrM,KAAKuM,SAAS,YAAeV,GAAyB,qCAAQA,KAA+B,qCAAQQ,EAAK/O,cATvOmD,UAgBxC,KACJ,cAAC,EAAD,CAAUkG,SAAS,EAAMD,qBAvE/B,SAA4BjB,EAAagB,GAEvCf,EAAe,mBAAqBD,GACpCiG,EAAgBjF,SAsEd,sBAAK3L,UAAU,cAAf,oBACS,qCAAQwC,EAAM6J,QAAQ,SAE/B,oBAAIrM,UAAU,gBAAd,sBACa,MAAX4P,IAAoBA,IACpB,cAAC,EAAD,CACEiC,YAAa9R,EAAM8R,YACnBrP,MAAOA,EAAM6J,QAAQ,GACrB1J,GAAI5C,EAAMyG,SAAS9E,MAAM8D,OAAO7C,GAChCI,UAAWhD,EAAMyG,SAAS9E,MAAMqB,UAChCE,QAASlD,EAAMyG,SAAS9E,MAAMuB,QAC9B+C,QAASA,EACT4J,QAAS,SAAC1L,GAAD,OAAOsM,EAAWtM,IAC3BzB,OAAQ1C,EAAMyG,SAAS9E,MAAM8D,OAAON,OAI5B,GAAX0K,GACC,qBAAK5P,UAAU,gBAAf,wFClKO8R,E,4MAlDbpQ,MAAQ,CACNqQ,QAAQ,G,EAkBV1Q,aAAe,WACb,IAAIkQ,EAAOvQ,SAASM,uBAAuB,cACvCiQ,EAAKhQ,OAAS,GAChBgQ,EAAK,GAAG9K,S,uDAlBZ,WACE,IAAMuL,EAAO7P,KACT8P,EAAkBjR,SAASkR,cAAc,UAC7CD,EAAgBrQ,IAAM,yCACtBqQ,EAAgBlI,KAAO,kBACvBkI,EAAgBE,OAAQ,EACxBF,EAAgBG,OAAS,WACvBJ,EAAKzL,SAAS,CACZwL,QAAQ,KAGZ/Q,SAASqR,qBAAqB,QAAQ,GAAGC,YAAYL,K,oBAWvD,WACE,OACE,cAAC,IAAD,UACE,eAAC,IAAMM,SAAP,WACE,cAAC,EAAD,CAAQpS,SAAUgC,KAAKd,eACvB,eAAC,IAAD,WACE,cAAC,IAAD,CAAOmR,KAAK,IAAIC,UAAWtM,EAAM7F,OAAK,IACtC,cAAC,IAAD,CAAOkS,KAAK,WAAWC,UAAW3L,EAAQxG,OAAK,IAC/C,cAAC,IAAD,CAAOkS,KAAK,cAAcC,UAAW5K,EAAWvH,OAAK,IACrD,cAAC,IAAD,CAAOkS,KAAK,aAAaC,UAAWnG,EAAWhM,OAAK,IACpD,cAAC,IAAD,CAAOkS,KAAK,YAAYC,UAAW/F,EAAUpM,OAAK,IAClD,cAAC,IAAD,CAAOkS,KAAK,WAAWC,UAAWvK,EAAS5H,OAAK,IAChD,cAAC,IAAD,CAAOkS,KAAK,cAAcC,UAAWtK,EAAS7H,OAAK,IAClD6B,KAAKT,MAAMqQ,QACV,cAAC,IAAD,CAAOS,KAAK,WAAWlS,OAAK,EAACmS,UAAW1C,OAG5C,cAAC,EAAD,a,GA5CQrJ,aCRlBgM,IAASC,OACP,cAAC,IAAMC,WAAP,UACE,cAAC,IAAD,UACE,cAAC,EAAD,QAGJ5R,SAASqJ,eAAe,W","file":"static/js/main.d093fac8.chunk.js","sourcesContent":["import React from 'react';\nimport './Navigation.css';\nimport { NavLink } from 'react-router-dom';\n\nconst Navigation = (props) => {\n\n return (\n
\n \n Home\n \n \n RVs\n \n \n Amenities & Add Ons\n \n \n Policies & FAQs\n \n \n Reviews\n \n \n Contact Us\n \n
\n )\n}\n\nexport default Navigation;","import React, { useState } from \"react\";\nimport { NavLink, useHistory } from \"react-router-dom\";\nimport Navigation from \"../Navigation/Navigation\";\nimport \"./Header.css\";\n\nconst Header = (props) => {\n const [menu, setMenu] = useState(false);\n\n const history = useHistory();\n\n const menuClick = (event) => {\n const menuChange = menu ? false : true;\n if (menuChange) {\n document.body.style.overflowY = \"hidden\";\n document.body.style.height = \"100vh\";\n } else {\n document.body.style.overflowY = \"auto\";\n document.body.style.height = \"auto\";\n }\n setMenu(menuChange);\n };\n\n const bookNowClick = () => {\n const hasField = document.getElementsByClassName(\"date-wrapper\");\n if (hasField.length > 0) {\n props.callback();\n } else {\n history.push({\n pathname: \"/\",\n state: { redirected: true},\n });\n }\n };\n\n return (\n
\n {menu ? (\n
\n
\n

MENU

\n \n
\n Book Now\n
\n
\n
\n ) : null}\n
\n \n \n \n
\n \n
\n Book Now\n
\n
\n
\n menuClick(e)}\n >\n \n \n \n
\n
\n
\n \n );\n};\n\nexport default Header;\n","import React, { useState } from \"react\";\nimport DatePicker from \"react-datepicker\";\nimport \"react-datepicker/dist/react-datepicker.css\";\nimport \"./CalendarFields.css\";\nimport { useHistory } from \"react-router-dom\";\n\nconst CalendarFields = (props) => {\n const [startDate, setStartDate] = useState(props.startDate);\n const [endDate, setEndDate] = useState(props.endDate);\n\n const [result, setResult] = useState(null);\n\n\n const history = useHistory();\n\n const checkForRv = () => {\n if (startDate == null || endDate == null) {\n console.log(\"pick the dates\");\n return;\n }\n\n fetch(\"https://nhrvrentalapi.nhrvrental.com/check-avail\", {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({\n rv: {\n id: props.id,\n start: new Date(startDate),\n end: new Date(endDate),\n },\n }),\n })\n .then((r) => {\n return r.json();\n })\n .then((r) => {\n props.callback(r.isAvail, startDate, endDate);\n });\n };\n\n const findAllAvail = () => {\n if (startDate == null || endDate == null) {\n console.log(\"pick the dates\");\n return;\n }\n\n fetch(\"https://nhrvrentalapi.nhrvrental.com/find\", {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({\n rv: {\n start: startDate,\n end: endDate,\n },\n }),\n })\n .then((r) => {\n return r.json();\n })\n .then((res) => {\n if(res.avail.length < 1) {\n setResult(false);\n return;\n }\n setResult(true);\n history.push({\n pathname: \"/rv-list\",\n state: {idList: res, start: startDate, end: endDate}\n });\n });\n };\n\n return (\n
\n
\n {setStartDate(date); props.availCallback && props.availCallback(); setResult(null)}}\n placeholderText=\"From\"\n className=\"start-date\"\n minDate={new Date()}\n />\n \n
\n
\n {setEndDate(date); {props.availCallback && props.availCallback(); setResult(null)}}}\n placeholderText=\"To\"\n minDate={(startDate ? new Date(startDate).addDays(1): new Date())}\n />\n \n
\n
\n {props.details ? \"Check\" : \"FIND RVs\"}\n
\n {(!result && result != null) &&
\n Please contact us for availability.\n
}\n
\n );\n};\n\nDate.prototype.addDays = function(days) {\n var date = new Date(this.valueOf());\n date.setDate(date.getDate() + days);\n return date;\n}\n\nexport default CalendarFields;\n","import React, { Component } from \"react\";\nimport UserPaymentInfo from \"../UserPaymentInfo/UserPaymentInfo\";\nimport \"./PaymentForm.css\";\n\nconst uuidv4 = () => {\n return \"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\".replace(/[xy]/g, function (c) {\n var r = (Math.random() * 16) | 0,\n v = c == \"x\" ? r : (r & 0x3) | 0x8;\n return v.toString(16);\n });\n};\n\nlet price;\nlet rvName;\nlet successCallback;\nlet id;\nlet start;\nlet end;\nlet clientInfo = {\n firstName: \"\",\n lastName: \"\",\n email: \"\",\n phone: \"\",\n};\nlet options = [];\n\nlet googlePay;\n\nclass PaymentForm extends Component {\n state = {\n firstName: \"\",\n lastName: \"\",\n phone: \"\",\n email: \"\",\n errorEmail: false,\n errorPhone: false,\n formError: false,\n validMailPhone: false,\n };\n\n setFirstName = (fn) => {\n this.setState({ firstName: fn, formError: false });\n };\n\n setLastName = (ln) => {\n this.setState({ lastName: ln, formError: false });\n };\n\n setPhone = (p) => {\n this.setState({ phone: p, formError: false });\n };\n\n setEmail = (e) => {\n this.setState({ email: e, formError: false, errorEmail: false });\n };\n\n checkEmail = () => {\n let error = false;\n const mailRegex =\n /^(([^<>()[\\]\\\\.,;:\\s@\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\n\n if (!mailRegex.test(this.state.email)) {\n this.setState({ errorEmail: true });\n this.setState({ validMailPhone: false });\n error = true;\n } else {\n this.setState({ errorEmail: false });\n if (!this.state.validMailPhone && this.state.phone != \"\") {\n this.setState({ validMailPhone: true });\n }\n }\n \n return error;\n };\n\n checkPhone = () => {\n const phoneRegex =\n /^(\\+0?1\\s)?\\(?\\d{3}\\)?[\\s.-]\\d{3}[\\s.-]\\d{4}$/im;\n\n if (!phoneRegex.test(this.state.phone)) {\n this.setState({ errorPhone: true });\n this.setState({ validMailPhone: false });\n return true;\n } else {\n this.setState({ errorPhone: false });\n if (!this.state.validMailPhone && this.state.email != \"\") {\n this.setState({ validMailPhone: true });\n }\n }\n\n return false;\n };\n\n checkForm = () => {\n if (\n this.state.firstName == \"\" ||\n this.state.lastName == \"\" ||\n this.state.email == \"\" ||\n this.state.phone == \"\"\n ) {\n this.setState({\n formError: true,\n });\n return true;\n }\n\n return false;\n };\n\n setPaymentForm = async (priceUpdate = false) => {\n const payments = window.Square.payments(\n \"sq0idp-PfQdQZAJ_ZcCkunFKM9RFQ\",\n \"LYXVMMQDSWF9X\"\n );\n\n const googlePayContainer = document.getElementById(\"google-pay\");\n\n try {\n if (priceUpdate) {\n const paymentRequest = payments.paymentRequest({\n total: {\n amount: price,\n label: \"Total\",\n },\n countryCode: \"US\",\n currencyCode: \"USD\",\n });\n\n \n googlePayContainer.innerHTML = \"\";\n googlePay = await payments.googlePay(paymentRequest);\n await googlePay.attach(\"#google-pay\");\n var buttons = document.getElementById('google-pay').children;\n for (let i = 0; i < buttons.length; i++) {\n if(i != (buttons.length - 1)) {\n buttons[i].remove();\n }\n }\n \n return;\n }\n const card = await payments.card();\n await card.attach(\"#sq-card\");\n const cardPayButton = document.getElementById(\"pay\");\n cardPayButton.addEventListener(\"click\", async () => {\n const result = await card.tokenize();\n this.submit(result.token);\n });\n\n const paymentRequest = payments.paymentRequest({\n total: {\n amount: price,\n label: \"Total\",\n },\n countryCode: \"US\",\n currencyCode: \"USD\",\n });\n\n googlePayContainer.innerHTML = \"\";\n googlePay = await payments.googlePay(paymentRequest);\n await googlePay.attach(\"#google-pay\");\n const googlePayButton = document.getElementById(\"google-pay\");\n googlePayButton.addEventListener(\"click\", async () => {\n if(this.checkPhone() || this.checkEmail()) {\n return;\n }\n if(this.state.firstName == '' || this.state.lastName == '') {\n this.setState({\n formError: true\n })\n return;\n }\n const result = await googlePay.tokenize();\n if(result.details) {\n this.submit(result.token);\n }\n\n });\n } catch (e) {\n console.log(e);\n }\n };\n\n submit(token) {\n const idempotency_key = uuidv4();\n clientInfo.firstName = this.state.firstName;\n clientInfo.lastName = this.state.lastName;\n clientInfo.phone = this.state.phone;\n clientInfo.email = this.state.email;\n fetch(\"https://nhrvrentalapi.nhrvrental.com/process-payment\", {\n method: \"POST\",\n headers: {\n Accept: \"application/json\",\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({\n source_id: token,\n idempotency_key: idempotency_key,\n location_id: \"LYXVMMQDSWF9X\",\n amount: price,\n rvId: id,\n startDate: start,\n endDate: end,\n client: clientInfo,\n options: options,\n rvName: rvName,\n }),\n })\n .catch((err) => {\n alert(\"Network error: \" + err);\n })\n .then((response) => {\n if (!response.ok) {\n return response.json().then((errorInfo) => Promise.reject(errorInfo));\n }\n return response.json();\n })\n .then((data) => {\n successCallback(data.result);\n })\n .catch((err) => {\n successCallback(false);\n });\n }\n\n /*onGetCardNonce = (event) => {\n if (this.state.errorForm) {\n return;\n }\n\n if (this.state.errorEmail) {\n return;\n }\n\n if (this.state.errorPhone) {\n return;\n }\n\n clientInfo.firstName = this.state.firstName;\n clientInfo.lastName = this.state.lastName;\n clientInfo.phone = this.state.phone;\n clientInfo.email = this.state.email;\n price = this.props.price;\n // Don't submit the form until SqPaymentForm returns with a nonce\n //event.preventDefault();\n // Request a nonce from the SqPaymentForm object\n //this.paymentForm.requestCardNonce();\n };*/\n\n componentDidMount() {\n this.setPaymentForm();\n price = this.props.price;\n id = this.props.id;\n start = this.props.startDate;\n end = this.props.endDate;\n options = this.props.options;\n successCallback = this.props.success;\n rvName = this.props.rvName;\n }\n\n componentWillReceiveProps(nextProps) {\n if (nextProps.price !== this.state.price) {\n price = nextProps.price;\n this.setPaymentForm(true);\n }\n }\n\n render() {\n return (\n
\n
\n \n {this.state.errorEmail && (\n
Invalid email format.
\n )}\n {this.state.errorPhone && (\n
Invalid phone format.
\n )}\n {this.state.formError &&\n this.state.validMailPhone && (\n
All fields are required.
\n )}\n
\n
\n
\n \n Submit\n \n
\n
\n );\n }\n}\n\nexport default PaymentForm;\n","import React from \"react\";\n\nimport CalendarFields from \"../CalendarFields/CalendarFields\";\nimport \"./Banner.css\";\n\nconst Banner = (props) => {\n let bgImage = \"\";\n\n if (props.footer) {\n if (props.amenities) {\n bgImage = \"./images/amenities-bg.png\";\n } else {\n bgImage = \"./images/banner-image-footer.jpg\";\n }\n } else {\n bgImage = \"./images/banner-image.png\";\n }\n\n return (\n \n
\n {props.footer ? (\n

BOOK YOUR ADVENTURE TODAY

\n ) : (\n

Check available RVs

\n )}\n \n
\n \n );\n};\n\nexport default Banner;\n","import React from 'react';\nimport { NavLink } from 'react-router-dom';\nimport './GridElement.css';\n\nconst GridElement = (props) => {\n\n // If we have image, and don't have review property, it means that we should render a RV Element\n // In other case, we should render a Review Element.\n const isRV = (props.images && props.text == null ? true : false);\n\n const renderRv = () => {\n return (\n
\n \n
\n
\n
\n

\n {props.name}\n

\n {props.list ?
${props.price} per night
: null}\n \n See details & availability\n \n
\n )\n }\n\n const renderReview = () => {\n return (\n
\n \n

\n {props.text}\n

\n
\n
\n {props.name}\n
\n
\n {props.date}\n
\n
\n
\n )\n }\n\n return (\n isRV ? renderRv() : renderReview()\n )\n}\n\nexport default GridElement;","import React from \"react\";\nimport GridElement from \"../GridElement/GridElement\";\nimport \"./ThreeColGrid.css\";\n\nconst ThreeColGrid = (props) => {\n /* \n Function for rendering elements based on their type, so that we can use the same GridElement\n regardless of it being a RV or a Review. \n In the first IF, we're checking if property 'rvData' exists. If it does, then it means\n that we are passing RV List as a property. \n Same applies for the second IF, only for Reviews.\n And finally, if none of the above is true, there is an error.\n */\n\n const renderElements = () => {\n if (props.rvData) {\n // Render RV Box\n return props.rvData.map((element, i) => {\n return (\n \n );\n });\n } else if (props.reviewsData) {\n // Render Review Box\n return props.reviewsData.map((element, i) => {\n return (\n \n );\n });\n } else {\n return
Error fetching list.
;\n }\n };\n\n // props.title is the name of current section that we are rendering (RVs or Reviews)\n // Received from Home component as a property\n const divClass = 'three-col-grid-wrapper ' + (props.home && 'home');\n return (\n
\n

{props.title}

\n
\n {renderElements()}\n
\n
\n );\n};\n\nexport default ThreeColGrid;\n","import react, { Component } from \"react\";\nimport \"./Home.css\";\nimport Banner from \"../elements/Banner/Banner\";\nimport CalendarFields from \"../elements/CalendarFields/CalendarFields\";\nimport ThreeColGrid from \"../elements/ThreeColGrid/ThreeColGrid\";\n\nclass Home extends Component {\n state = {\n rvData: null,\n reviewsData: null,\n };\n\n // Fetching RV and Review Items for HomePage and storing them into the state\n componentDidMount() {\n fetch(\"https://nhrvrentalapi.nhrvrental.com/get-home-rvs\", {\n method: \"get\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n })\n .then((response) => response.json())\n .then((findresponse) => {\n this.setState({\n rvData: findresponse,\n });\n });\n\n fetch(\"https://nhrvrentalapi.nhrvrental.com/get-home-reviews\", {\n method: \"get\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n })\n .then((response) => response.json())\n .then((findresponse) => {\n this.setState({\n reviewsData: findresponse,\n });\n });\n\n if (this.props.location.state) {\n if (this.props.location.state.redirected) {\n document.getElementsByClassName(\"start-date\")[0].focus();\n }\n }\n }\n\n render() {\n return (\n
\n \n
\n
\n

LUXURY RV RENTAL

\n

\n NH RV Rental is an affordable Luxury RV Rental company\n specializing in Light Weight, Luxurious, All Packed, Clean & Ready\n to Tow Hotels on Wheels. We pick up where other rental companies\n leave off. With delivery and setup options available, we will be sure to\n take the hassle out of camping and let you relax and enjoy the\n most from your camping vacation without doing any of the work! \n We are in our seventh year of business with all Five-Star Reviews and \n we are expanding our fleet fast. Our prices and rental experience will \n not be beat, contact us today to enjoy the Ultimate Camping Experience!\n

\n

\n As the owner of the business, I started RV'ing with my family in 2018\n and am absolutely hooked on it! Nothing can beat the convenience of\n having a second home on wheels while enjoying America's finest\n attractions! With our RVs, we hope to share this wonderful\n experience with you and your family. We believe that the best way\n to be introduced to RV'ing is to rent an RV and try it for\n yourself. We assure, that you too will also be hooked, and\n hopefully you will enjoy camping as much as we do!\n

\n
\n
\n

WHAT MAKES US BETTER THAN THE REST?

\n

\n NH RV Rental is the largest, the most experienced, RV Rental company \n in NH, and the only Luxury RV Rental company in NH to equip all of our RV's with \n Linens and Towels, Kitchenware, Kitchen Applicances, and all the Camping Essentials, so that \n you can spend more time enjoying your camping vacation rather than buying expensive custom RV sheets and towels and\n spending hours setting up camp. Don't chance ruining your vacation, we are they only RV Rental company \n permitted to rent campers at ALL major campgrounds in NH. NH RV Rental has delivered to almost every campground in NH since 2018 \n and if you choose to tow yourself, we will ask you several questions after booking, and with our extensive unmatched expereince, \n we will make sure that your vechile is safe to tow and that you will not have any problems when you arrive to your camp site, becasue \n we've been there, done that, for you. If you're brand new to RV'ing or have any questions, we are available via text 24/7/365! \n Just bring yourselves and your food, leave the cleaning to us, and start enjoying all that the great outdoors has to offer!\n

\n
\n
\n
\n \n
\n
\n
\n \n
\n \n \n
\n
\n
\n );\n }\n}\n\nexport default Home;\n","import React from \"react\";\nimport Navigation from \"../Navigation/Navigation\";\nimport \"./Footer.css\";\n\nconst Footer = () => {\n return (\n
\n
\n
\n
\n
\n \n
KGR Technologies, LLC
\n
\n \n
\n \n
\n\n
Copyright 2025 | All rights reserved
\n
\n
\n );\n};\n\nexport default Footer;\n","import React, { Component } from \"react\";\nimport \"./RV-List.css\";\nimport ThreeColGrid from \"../elements/ThreeColGrid/ThreeColGrid\";\n\nclass RVList extends Component {\n // If we have 'props.location.state.data' it means that we are coming to this page from 'Find Available RVs' option\n // So we are using that data (which contains IDs of available RVs) to filter our search\n // Also, we are storing start and end date in the same data.\n constructor(props) {\n super(props);\n this.state = {\n idList: props.location.state ? props.location.state.idList.avail : null,\n startDate: props.location.state ? props.location.state.start : null,\n endDate: props.location.state ? props.location.state.end : null,\n rvList: null,\n };\n }\n\n // Fetching Complete RV List\n componentDidMount() {\n fetch(\"https://nhrvrentalapi.nhrvrental.com/get-rvs\", {\n method: \"get\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n })\n .then((response) => response.json())\n .then((findresponse) => {\n if (this.state.idList != null) {\n let availableRVS = new Array();\n\n this.state.idList.forEach((e) => {\n findresponse.forEach((element) => {\n if (e == element.id) {\n availableRVS.push(element);\n }\n });\n });\n this.setState({\n rvList: availableRVS,\n });\n } else {\n this.setState({\n rvList: findresponse,\n });\n }\n });\n }\n\n render() {\n return (\n
\n \n
\n );\n }\n}\n\nexport default RVList;\n","import React, { useState } from \"react\";\nimport SlickSlider from \"react-slick\";\nimport { SRLWrapper } from \"simple-react-lightbox\";\nimport \"./Slider.css\";\n\nconst Slider = (props) => {\n let slider;\n\n const settings = {\n dots: false,\n arrows: true,\n infinite: true,\n slidestoShow: 1,\n slidesToScroll: 1,\n };\n\n return (\n
\n \n (slider = s)} {...settings}>\n {props.images.map((element, i) => {\n return ;\n })}\n \n \n\n 2 ? \"more-than\" : \"less-than\")\n }\n >\n {props.images.map((element, i) => {\n return (\n {\n slider.slickGoTo(i);\n }}\n />\n );\n })}\n
\n \n );\n};\n\nexport default Slider;\n","import React, { useState } from \"react\";\nimport CalendarFields from \"../elements/CalendarFields/CalendarFields\";\nimport { NavLink } from \"react-router-dom\";\nimport \"./RV-Details.css\";\nimport Slider from \"../Slider/Slider\";\n\nconst RVDetails = (props) => {\n const { data } = props.location.state;\n\n const [start, setStart] = useState();\n const [end, setEnd] = useState();\n\n const [mainImage, setMainImage] = useState(data.images[0]);\n\n const [available, setAvailable] = useState(null);\n\n const checkResult = (isAvail, start, end) => {\n isAvail ? setAvailable(true) : setAvailable(false);\n setStart(start);\n setEnd(end);\n };\n\n // When changing dates, reset availability status for new check\n const resetAvail = () => {\n setAvailable(null);\n }\n\n return (\n
\n
\n
\n \n
\n
\n

{data.name}

\n

About the RV

\n
    \n {data.description.map((element, i) => {\n return (\n
  • \n

    {element}

    \n
  • \n );\n })}\n
\n

Check availability:

\n \n {!available && available != null ? (\n
\n
\n Not available for selected dates.\n
\n
\n ) : available && available != null ? (\n \n Available! Click to Book\n \n ) : null}\n
\n
\n
\n );\n};\n\nexport default RVDetails;\n","import React, { Component } from \"react\";\nimport ThreeColGrid from \"../elements/ThreeColGrid/ThreeColGrid\";\nimport Banner from \"../elements/Banner/Banner\";\nimport \"./Reviews.css\";\n\nclass Reviews extends Component {\n state = {\n reviewsData: null,\n };\n\n // Fetching Complete Reviews List\n componentDidMount() {\n fetch(\"https://nhrvrentalapi.nhrvrental.com/get-reviews\", {\n method: \"get\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n })\n .then((response) => response.json())\n .then((findresponse) => {\n this.setState({\n reviewsData: findresponse,\n });\n });\n }\n\n render() {\n return (\n
\n
\n \n
\n \n \n
\n
\n );\n }\n}\n\nexport default Reviews;\n","import React, { useState } from \"react\";\nimport \"./Contact.css\";\n\nconst Contact = () => {\n const [firstName, setFirstName] = useState(\"\");\n const [lastName, setLastName] = useState(\"\");\n const [email, setEmail] = useState(\"\");\n const [phone, setPhone] = useState(\"\");\n const [message, setMessage] = useState(\"\");\n const [sentMessage, setSentMessage] = useState(false);\n const [sendingMessage, setSendingMessage] = useState(false);\n\n const [errorEmail, setErrorEmail] = useState(false);\n const [errorPhone, setErrorPhone] = useState(false);\n const [errorMessage, setErrorMessage] = useState(false);\n const [touched, setTouched] = useState(false);\n\n const resetForm = () => {\n setFirstName(\"\");\n setLastName(\"\");\n setEmail(\"\");\n setPhone(\"\");\n setMessage(\"\");\n };\n\n const checkEmail = () => {\n let error = false;\n const mailRegex = /^(([^<>()[\\]\\\\.,;:\\s@\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\n\n if (!mailRegex.test(email) && email != \"\") {\n setErrorEmail(true);\n setTouched(false);\n error = true;\n } else {\n setErrorEmail(false);\n if (!touched && phone != \"\") {\n setTouched(true);\n }\n }\n\n return error;\n };\n\n const checkPhone = () => {\n const phoneRegex = /^[\\+]?[(]?[0-9]{3}[)]?[-\\s\\.]?[0-9]{3}[-\\s\\.]?[0-9]{4,6}$/im;\n\n if (!phoneRegex.test(phone)) {\n setErrorPhone(true);\n setTouched(false);\n return true;\n } else {\n setErrorPhone(false);\n if (!touched && email != \"\") {\n setTouched(true);\n }\n }\n\n return false;\n };\n\n const sendEmail = () => {\n if (sendingMessage) {\n return;\n }\n\n let error = false;\n\n if (checkEmail()) {\n error = true;\n }\n\n if (checkPhone()) {\n error = true;\n }\n\n if (message == \"\") {\n setErrorMessage(true);\n error = true;\n }\n\n if (error) {\n return;\n }\n\n setSendingMessage(true);\n\n fetch(\"https://nhrvrentalapi.nhrvrental.com/send-email\", {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({\n user: {\n firstName: firstName,\n lastName: lastName,\n phone: phone,\n email: email,\n message: message,\n },\n }),\n })\n .then((r) => {\n return r.json();\n })\n .then((res) => {\n setSendingMessage(false);\n setSentMessage(true);\n if (res.sent) {\n document.getElementById(\"sentMsg\").innerHTML =\n \"Thank you for getting in touch! We will reply by email as soon as possible.\";\n document.getElementById(\"sentMsg\").style.background = \"#38a638\";\n } else {\n document.getElementById(\"sentMsg\").innerHTML =\n \"Something went wrong, try again.\";\n document.getElementById(\"sentMsg\").style.background = \"#b90000\";\n }\n window.scrollTo(0, 0);\n resetForm();\n });\n };\n\n return (\n
\n

CONTACT US

\n
\n
\n
\n

Contact Information

\n \n \n
\n
\n

Working Hours

\n
\n
\n Mon:8:00 AM - 5:00 PM\n
\n
\n Tue:8:00 AM - 5:00 PM\n
\n
\n Wed:8:00 AM - 5:00 PM\n
\n
\n Thu:8:00 AM - 5:00 PM\n
\n
\n Fri:8:00 AM - 5:00 PM\n
\n
\n Sat:Closed\n
\n
\n Sun:Closed\n
\n
\n After Hours:Email/Text Only\n
\n
\n
\n
\n
\n {sentMessage &&
}\n
\n
\n \n setFirstName(event.target.value)}\n />\n
\n
\n \n setLastName(event.target.value)}\n />\n
\n
\n
\n
\n \n setPhone(event.target.value)}\n onKeyUp={() => checkPhone()}\n />\n {errorPhone ? (\n Invalid phone format.\n ) : null}\n
\n
\n \n setEmail(event.target.value)}\n onKeyUp={() => checkEmail()}\n />\n {errorEmail && email != \"\" ? (\n Invalid email format.\n ) : null}\n {errorEmail && email == \"\" ? (\n Email required.\n ) : null}\n
\n
\n
\n \n setMessage(event.target.value)}\n onKeyDown={() => {\n if (errorMessage) {\n setErrorMessage(false);\n }\n }}\n >\n {errorMessage ? (\n Message required.\n ) : null}\n
\n \n Send\n {sendingMessage ? (\n \n ) : null}\n
\n
\n
\n \n );\n};\n\nexport default Contact;\n","import React, { useState } from \"react\";\n\nimport CalendarFields from \"../CalendarFields/CalendarFields\";\nimport \"./Delivery.css\";\n\nconst Delivery = (props) => {\n const [destination, setDestination] = useState(false);\n const [calculatingCost, setCalculatingCost] = useState(false);\n const [deliveryMessage, setDeliveryMessage] = useState(false);\n\n var formtitle = \"\";\n var buttontitle = \"\";\n\n var distancetext = null;\n var distancemiles = null;\n var durationtext = null;\n var durationhours = null;\n var hourlyrate = 25;\n var costpermile = .90;\n var deliveryResult = null;\n var costResult = null;\n\n if (props.payment) {\n formtitle = \"DELIVERY ADDRESS\";\n buttontitle = \"PRICE DELIVERY\";\n }\n else {\n formtitle = \"CALCULATE DELIVERY COST\";\n buttontitle = \"CALCULATE COST\";\n }\n\n function changeDeliveryCost(deliveryCostInfo, destination, deliveryCost) \n {\n if (props.onChangeDeliveryCost != null) \n {\n props.onChangeDeliveryCost(destination, deliveryCost)\n }\n\n setDeliveryMessage(deliveryCostInfo);\n }\n\n const getDeliveryCost = () => {\n if (calculatingCost || destination == false || destination == '') {\n return;\n }\n\n setCalculatingCost(true);\n\n fetch(\"https://nhrvrentalapi.nhrvrental.com/get-delivery-info\", {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({\n destination: destination,\n }),\n })\n .then((r) => {\n return r.json();\n })\n .then((res) => {\n setCalculatingCost(false);\n\n if (res.response) \n {\n if (res.response.rows[0].elements[0].status == 'OK') \n {\n var destination = res.response.destination_addresses[0];\n\n distancetext = res.response.rows[0].elements[0].distance.text;\n distancemiles = res.response.rows[0].elements[0].distance.value / 1609.34;\n\n durationtext = res.response.rows[0].elements[0].duration.text;\n durationhours = res.response.rows[0].elements[0].duration.value / 3600;\n \n costResult = (hourlyrate * (4 * durationhours)) + (costpermile * (4 * distancemiles));\n costResult = costResult.toFixed(2);\n\n deliveryResult = 'Distance from NH RV Rental to ' + destination + ' is ' + distancetext + ' and ' + durationtext + '. Delivery Cost is $' + costResult + '.';\n\n if (props.payment) \n {\n deliveryResult = deliveryResult + ' Please select the Truck Delivery check box above to add Truck Delivery to your reservation.';\n }\n \n changeDeliveryCost(deliveryResult, destination, costResult);\n }\n }\n else \n {\n changeDeliveryCost('There was an error calculating delivery cost. Please try again later', 0);\n }\n });\n };\n\n return (\n
\n
\n

{formtitle}

\n setDestination(event.target.value)}\n >\n {

{deliveryMessage}

}\n
\n {buttontitle}\n
\n
\n
\n );\n};\n\nexport default Delivery;","import React, { Component } from \"react\";\nimport \"./Amenities.css\";\nimport ThreeColGrid from \"../elements/ThreeColGrid/ThreeColGrid\";\nimport CalendarFields from \"../elements/CalendarFields/CalendarFields\";\nimport Delivery from \"../elements/Delivery/Delivery\";\nimport Banner from \"../elements/Banner/Banner\";\nimport { render } from \"@testing-library/react\";\n\nclass Amenities extends Component {\n state = {\n amenities: null,\n addOns: null,\n };\n\n componentDidMount() {\n fetch(\"https://nhrvrentalapi.nhrvrental.com/get-amenities\", {\n method: 'get',\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n })\n .then((response) => response.json())\n .then((findresponse) => {\n this.setState({\n amenities: findresponse.amenities,\n addOns: findresponse.add_ons,\n });\n });\n }\n\n // We are using 'type' parameter to check if it's Amenities data or Add Ons data because of styling.\n renderBox = (data, type) => {\n return (\n \n {data.map((element, i) => {\n return (\n
\n

{element.name}

\n {type != \"amenities\" ? - : null}\n

{element.description} {type != 'amenities' && {element.price == 0 ? 'Calculated' : '$' + element.price}}

\n
\n );\n })}\n \n );\n };\n\n render() {\n return (\n
\n
\n \n
\n

AMENITIES

\n {this.state.amenities\n ? this.renderBox(this.state.amenities, \"amenities\")\n : null}\n

Add Ons

\n {this.state.addOns\n ? this.renderBox(this.state.addOns, \"add-ons\")\n : null}\n \n \n
\n
\n );\n }\n}\n\nexport default Amenities;\n","import React, { Component } from \"react\";\nimport \"./Policies.css\";\nimport ThreeColGrid from \"../elements/ThreeColGrid/ThreeColGrid\";\nimport CalendarFields from \"../elements/CalendarFields/CalendarFields\";\nimport Banner from \"../elements/Banner/Banner\";\nimport { render } from \"@testing-library/react\";\n\nclass Policies extends Component {\n state = {\n policies: null,\n faqs: null,\n };\n\n componentDidMount() {\n fetch(\"https://nhrvrentalapi.nhrvrental.com/get-policies\", {\n method: 'get',\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n })\n .then((response) => response.json())\n .then((findresponse) => {\n this.setState({\n policies: findresponse.policies,\n faqs: findresponse.faqs,\n });\n });\n }\n\n renderBox = (data, type) => {\n return (\n \n {data.map((element, i) => {\n return (\n
\n

{element.name}

\n

{element.description}

\n
\n );\n })}\n \n );\n };\n\n render() {\n return (\n
\n
\n \n
\n

POLICIES

\n {this.state.policies\n ? this.renderBox(this.state.policies, \"policies\")\n : null}\n

FAQS

\n {this.state.faqs\n ? this.renderBox(this.state.faqs, \"faqs\")\n : null}\n \n
\n
\n );\n }\n}\n\nexport default Policies;","import React, { useState } from \"react\";\nimport \"./UserPaymentInfo.css\";\n\nconst UserPaymentInfo = (props) => {\n\n \n\n return (\n
\n
\n
\n \n props.setFirstName(event.target.value)}\n />\n
\n
\n \n props.setLastName(event.target.value)}\n />\n
\n
\n
\n
\n \n props.setPhone(event.target.value)}\n onKeyUp={() => {props.checkPhone(); props.checkForm()}}\n />\n
\n
\n \n props.setEmail(event.target.value)}\n onKeyUp={() => {props.checkEmail(); props.checkForm()}}\n />\n
\n
\n
\n );\n};\n\nexport default UserPaymentInfo;\n","import React, { useState } from \"react\";\nimport { useEffect } from 'react';\nimport { NavLink } from 'react-router-dom';\nimport PaymentForm from \"../elements/PaymentForm/PaymentForm\";\nimport Delivery from \"../elements/Delivery/Delivery\";\nimport \"./Payment.css\";\n\nconst Payment = (props) => {\n const [cost, setCost] = useState(\"\");\n\n const formatDate = (date) => {\n var d = new Date(date),\n month = \"\" + (d.getMonth() + 1),\n day = \"\" + d.getDate(),\n year = d.getFullYear();\n if (month.length < 2) month = \"0\" + month;\n if (day.length < 2) day = \"0\" + day;\n\n return month + \"/\" + day + \"/\" + year;\n };\n\n const startDate = formatDate(props.location.state.startDate);\n const endDate = formatDate(props.location.state.endDate);\n\n const [options, setOptions] = useState(\n new Array(props.location.state.rvData.options.length)\n );\n\n const [success, setSuccess] = useState();\n\n const [price, setPrice] = useState(\n +props.location.state.rvData.price *\n (Math.floor(props.location.state.endDate.getTime() / 1000 / 3600 / 24) -\n Math.floor(\n props.location.state.startDate.getTime() / 1000 / 3600 / 24\n ))\n );\n\n const [destination, setDestination] = useState();\n const [deliveryCost, setDeliveryCost] = useState();\n const [selectedDestination, setSelectedDestiantion] = useState();\n const [selectedDeliveryCost, setSelectedDeliveryCost] = useState();\n\n\tuseEffect(() => {\n\t\tcalcRequiredOptions(price);\n\t}, []);\n\n\tconst calcRequiredOptions = (price) => {\n\t\tlet selectedOptions = options;\n\t\n\t\tlet firstOption =\n\t\t{\n\t\t\tname: \"\",\n\t\t\tcost: \"\"\n\t\t};\n\t\n\t\tfirstOption.name = \"Luxury Package (Linens, Towels, and Camping Gear)\";\n\t\tfirstOption.cost = \"25\";\n\t\n\t\tselectedOptions[0] = firstOption;\n\t\n\t\tlet secondOption =\n\t\t{\n\t\t\tname: \"\",\n\t\t\tcost: \"\"\n\t\t}\n\t\n\t\tsecondOption.name = \"Convenience Package (Cleaning, and Propane)\";\n\t\tsecondOption.cost = \"50\";\n\t\n\t\tselectedOptions[1] = secondOption;\n\t\n\t\tsetPrice(price + +\"75\");\t\n\t\tsetOptions(selectedOptions);\n\t}\n\n const changePrice = (event, optionPrice, name, i) => {\n let selectedOptions = options;\n let option = {\n name: \"\",\n cost: \"\"\n };\n \n if (event.target.checked) \n {\n if (name.includes(\"Delivery\"))\n {\n if (deliveryCost != null)\n {\n option.name = destination;\n option.cost = deliveryCost;\n \n selectedOptions[i] = option;\n setPrice(price + +deliveryCost);\n\n setSelectedDestiantion(destination);\n setSelectedDeliveryCost(deliveryCost);\n }\n else\n {\n event.target.checked = false;\n }\n }\n else\n {\n option.name = name;\n option.cost = optionPrice;\n\n selectedOptions[i] = option;\n setPrice(price + +optionPrice);\n }\n } \n else \n {\n if (name.includes(\"Delivery\"))\n {\n if (deliveryCost != null)\n {\n selectedOptions[i] = null;\n setPrice(price - +selectedDeliveryCost);\n }\n else\n {\n event.target.checked = false;\n }\n }\n else\n {\n selectedOptions[i] = null;\n setPrice(price - +optionPrice);\n }\n }\n\n setOptions(selectedOptions);\n };\n\n function changeDeliveryCost(destination, deliveryCost)\n {\n setDestination('Truck Delivery: ' + destination);\n setDeliveryCost(deliveryCost);\n };\n\n return !success ? (\n \n
\n
\n
\n

{props.location.state.rvData.name}

\n
\n Start date: {startDate}\n
\n
\n End date: {endDate}\n
\n
\n Price per night: ${props.location.state.rvData.price}\n
\n
\n \n
\n
\n\t\t\t

Required Add Ons

\n {props.location.state.rvData.options ? (\n
\n
\n {props.location.state.rvData.requiredOptions.map((elem, i) => {\n return (\n
\n \n
\n {(elem.name.includes(\"Delivery\") ? ((selectedDestination) ? selectedDestination : \"Truck Delivery: (Enter Delivery Address Below)\") : (elem.name))} {(elem.name.includes(\"Delivery\") ? (selectedDeliveryCost) && ${selectedDeliveryCost} : ${elem.price})}\n
\n
\n );\n })}\n
\n
\n ) : null}\n

Add Ons

\n {props.location.state.rvData.options ? (\n
\n
\n {props.location.state.rvData.options.map((elem, i) => {\n return (\n
\n changePrice(e, elem.price, elem.name, i + 2)}\n />\n
\n {(elem.name.includes(\"Delivery\") ? ((selectedDestination) ? selectedDestination : \"Truck Delivery: (Enter Delivery Address Below)\") : (elem.name))} {(elem.name.includes(\"Delivery\") ? (selectedDeliveryCost) && ${selectedDeliveryCost} : ${elem.price})}\n
\n
\n );\n })}\n
\n
\n ) : null}\n \n
\n
\n Total: ${price.toFixed(2)}\n
\n

Payment

\n {(success == null || !success) && (\n setSuccess(r)}\n rvName={props.location.state.rvData.name}\n />\n )}\n\n {success == false && (\n
\n There was an error. Please check your card credentials and try again.\n
\n )}\n
\n ) : (\n
\n \n

Payment successful!

\n
\n Thank you for renting from NH RV Rental. You account has been charged and your transaction is successful.\n We will contact you shortly.
\n Go to Homepage\n
\n
\n );\n};\n\nexport default Payment;","import React, { Component } from \"react\";\nimport \"./App.css\";\nimport Header from \"../elements/Header/Header\";\nimport Home from \"../Home/Home\";\nimport Footer from \"../elements/Footer/Footer\";\nimport { BrowserRouter, Route, Switch } from \"react-router-dom\";\nimport RVList from \"../RV-List/RV-List\";\nimport RVDetails from \"../RV-Details/RV-Details\";\nimport Reviews from \"../Reviews/Reviews\";\nimport Contact from \"../Contact/Contact\";\nimport Amenities from \"../Amenities/Amenities\";\nimport Policies from \"../Policies/Policies\";\nimport Payment from \"../Payment/Payment\";\n\nclass App extends Component {\n state = {\n loaded: false,\n };\n\n componentDidMount() {\n const that = this;\n let sqPaymentScript = document.createElement(\"script\");\n sqPaymentScript.src = \"https://web.squarecdn.com/v1/square.js\";\n sqPaymentScript.type = \"text/javascript\";\n sqPaymentScript.async = false;\n sqPaymentScript.onload = () => {\n that.setState({\n loaded: true,\n });\n };\n document.getElementsByTagName(\"head\")[0].appendChild(sqPaymentScript);\n }\n\n // Focus on the datepicker when user clicks on 'Book Now' button in the Header\n bookNowClick = () => {\n var elem = document.getElementsByClassName(\"start-date\");\n if (elem.length > 0) {\n elem[0].focus();\n }\n };\n\n render() {\n return (\n \n \n
\n \n \n \n \n \n \n \n \n {this.state.loaded && (\n \n )}\n \n