{"version":3,"file":"static/js/997.bad90359.chunk.js","mappings":"4fAuBA,EAZoD,SAAC,G,IAAEA,EAAO,UAAEC,EAAQ,WAAEC,EAAK,QAAEC,EAAS,YAAO,OAC7FH,EACI,yBAAOG,UAAWA,GAAa,GAAIC,QAASF,IACvC,OAAoBF,GACf,gBAAC,IAAgB,KAAKA,IACtBA,EAELC,GAAY,wBAAME,UAAU,sBAAoB,OAEnD,gCATuF,E,qPCHjG,EANkB,cAAiB,SAACE,EAAeC,GAA4C,OAC3F,uBAAKH,UAAU,cACX,2BAAOG,IAAKA,GAASD,EAAK,CAAEF,UAAU,uBAFiD,ICmH/F,EA/F+C,SAAC,G,IAAEI,EAAQ,WAAEC,EAAQ,WAAEC,EAAM,SAClEC,GAAO,EAAAC,EAAA,KACPC,EAAK,mBAAYL,EAASM,GAAE,YAAIC,KAAKC,OACrCC,EAAoB,SAACC,GACvBT,EAASU,OAAOD,GACpB,EAgBA,OALA,IAAAE,YAAU,YACN,QAAsBT,EAAKU,QAC3B,WAA8B,OAAhBV,EAAKU,OAAkB,QAAUV,EAAKU,OACxD,GAAG,CAACV,EAAKU,SAGL,gCACKb,EAASc,OAAS,IAAaC,MAAQ,KACpC,gBAAC,EAAK,CACFnB,UAAU,iBACVH,QAASO,EAASgB,KAClBtB,SAAUM,EAASiB,SACnBtB,MAAOU,IAGdL,EAASc,OAAS,IAAaI,UAC5B,gBAACC,EAAA,GAAS,CACNC,UAAWpB,EAASqB,UACpB3B,SAAUM,EAASiB,SACnBhB,SAAUQ,EACVa,KAAMH,EAAA,GAAcI,KACpBb,MAAOR,GAAU,GACjBsB,aAAa,EACbnB,GAAIA,IAGXL,EAASc,OAAS,IAAaP,MAC5B,gBAAC,IAAe,CACZkB,gBAAgB,YAChBC,gBAAiB,CACb,CACIC,KAAM,kBACNC,SAAS,EACTC,QAAS,CACLC,aAAc,cAI1BjB,OAAwB,OAAhBV,EAAKU,OAAkB,QAAUV,EAAKU,OAC9CkB,WAAY,MACZC,YAAa,gBAAC,EAAS,MACvBC,qBAAqB,EACrBC,QAAS,MAASC,IAAInC,EAASoC,aAAc,SAASC,SACtDC,QAAS,MAASH,IAAInC,EAASuC,aAAc,SAASF,SACtDpC,SAAU,WAAM,EAChBuC,SAAU,SAACC,GAAS,OAAAxC,GAASwC,aAAI,EAAJA,EAAMC,gBAAiB,GAAhC,EACpBC,OAxDS,SAACC,GACtB,IAAMC,EAAa,IAAOD,EAAME,OAAOpC,MAAO,CAC1C,KACA,aACA,aACA,eAEJT,EAAS4C,EAAWE,UAAYF,EAAWH,cAAgB,GAC/D,EAiDgBM,SAAU9C,EAAS,IAAIK,KAAKL,QAAU+C,EACtCC,mBAAmB,EACnBC,kBAAkB,EAClBC,aAAa,SACbC,kBAAkB,mCAClBhD,GAAIA,IAGXL,EAASc,OAAS,IAAawC,MAC5B,gBAACC,EAAA,EAAM,CACHC,OAAQxD,EAASyD,OAAOC,KAAI,SAACC,GACzB,MAAO,CAAEjD,MAAOiD,EAASC,MAAOC,MAAOF,EAASpC,KACpD,IACAb,MAAOR,EACPD,SAAUA,EACVI,GAAIA,IAGXL,EAASc,OAAS,IAAaC,OAC5B,gBAAC+C,EAAA,EAAQ,CACL1C,UAAWpB,EAASqB,UACpBpB,SAAUQ,EACVf,SAAUM,EAASiB,SACnB8C,QAAkC,SAAzB7D,EAAO8D,eAEfhE,EAASgB,MAK9B,E,6RChGMiD,GAAW,QAAe,CAC5BC,WAAY,CACR7D,GAAI,aACJ8D,eAAgB,kBAIXC,EAAwD,SAAC,G,IAAEC,EAAQ,WAAEC,EAAO,UAAEC,EAAgB,mBAAEtE,EAAQ,WAAES,EAAK,QAClHP,GAAO,EAAAC,EAAA,KACPoE,EAAqBD,IAAoB,IAAIhE,MAAOmC,cAEpD+B,GAAkB,IAAAC,cAAY,kB,OAAA,E,OAAA,E,EAAA,W,mlCAChC,OAAKJ,GAAYC,EAIbF,KAAa,QAAiBA,EAAS/D,IAChC,CAAP,GAAO,QAAuB,CAAEqE,WAAYN,EAAS/D,GAAIsE,UAAWN,EAAQhE,GAAIuE,UAAWN,KAExF,CAAP,GAAO,QAAsB,CAAEK,UAAWN,EAAQhE,GAAIuE,UAAWN,KAN7D,G,iBAF4B,K,gRASjC,CAACA,IAEE,GAAqB,QAAgBE,GAApCK,EAAK,KAeZ,OAfuB,KAiBf,uBAAKlF,UAAU,uBACX,sBAAIA,UAAU,kBACV,gBAAC,IAAgB,KAAKqE,EAASC,cAEnC,uBAAKtE,UAAU,oBACX,gBAAC2D,EAAA,EAAc,CAAC3D,UAAU,yBAMrCkF,GAAUA,EAAMC,OAKjB,uBAAKnF,UAAU,uBACX,sBAAIA,UAAU,kBACV,gBAAC,IAAgB,KAAKqE,EAASC,cAEnC,uBAAKtE,UAAU,oBACX,gBAAC2D,EAAA,EAAM,CACH3D,UAAU,qBACV4D,OACIsB,EAAMpB,KAAI,SAACsB,GACP,MAAO,CACHtE,MAAOsE,EACPnB,MAAO1D,EAAK8E,YAAW,QAAcT,EAAYQ,IAEzD,IACJtE,MA7Cc,WAC1B,GAAKoE,GAAUA,EAAMC,OASrB,OAJIrE,GAASoE,EAAMI,SAASxE,GAClBA,EACAoE,EAAMA,EAAMC,OAAS,EAGnC,CAkCuBI,GACPlF,SAAUA,MAnBf,IAwBf,E,2NClEM,GAAW,QAAe,CAC5BmF,iBAAkB,CACd/E,GAAI,mBACJ8D,eAAgB,6CAwDxB,EApDkE,SAACrE,GAEvD,IAAAwE,EAAuGxE,EAAK,QAAnGuE,EAA8FvE,EAAK,SAAzFuF,EAAoFvF,EAAK,UAA9EwF,EAAyExF,EAAK,QAArEyE,EAAgEzE,EAAK,iBAAnDyF,EAA8CzF,EAAK,mBAA/B0F,EAA0B1F,EAAK,WAAnB2F,EAAc3F,EAAK,UAclH,OAZF,IAAAc,YAAU,WACNyE,EAAUK,SAAQ,SAAC1F,GACP,IAAAM,EAAqBN,EAAQ,GAAzB2F,EAAiB3F,EAAQ,aAEjC2F,IACAL,EAAQhF,GAAMqF,EACd3F,EAAS2F,kBAAe1C,EACxBnD,EAAMG,SAASD,EAAUsF,GAEjC,GACF,GAAG,CAACD,IAGF,uBAAKzF,UAAU,aACVyF,EAAUO,MAAK,SAAAC,GAAK,OAAAA,EAAE5E,QAAF,KACd,qBAAGrB,UAAU,2BAA0B,gBAAC,IAAgB,KAAK,EAASwF,oBAC5Ed,GAAWA,EAAQwB,eAChB,gBAAC1B,EAAU,CACPnE,SAAUH,EAAMiG,mBAChB1B,SAAUA,EACVC,QAASA,EACTC,iBAAkBA,EAClB7D,MAAO6E,IAEdE,EACGJ,EAAU3B,KAAI,SAAAmC,GAAK,OAAe,IAAfA,EAAEG,UACjB,uBAAKpG,UAAU,+BAA+BqG,IAAKJ,EAAEvF,IACjD,uBAAKV,UAAU,oBACX,gBAAC,EAAU,CACPM,YAAgD+C,IAAxCqC,EAAQO,EAAEvF,IAA0CgF,EAAQO,EAAEvF,IAAM,GAC5EN,SAAU6F,EACV5F,SAAU,SAACS,G,MAAU,OAAAZ,EAAMG,SAAS4F,EAAG,OAAKP,KAAO,MAAGO,EAAEvF,IAAKI,EAAK,IAA7C,KAG5B8E,GAAcA,EAAWU,OAAOL,EAAEvF,KAC/B,gBAAC6F,EAAA,EAAiB,CACd1G,QAAS+F,EAAWU,OAAOL,EAAEvF,IAAIb,QACjC2G,aAAcZ,EAAWU,OAAOL,EAAEvF,IAAI+F,gBAZnC,IAiBjB,gBAACC,EAAA,GAAW,MAI9B,C,kcC+FMC,EAAoB,WACtB,8BAAK3G,UAAU,aAAa4G,KAAK,gBAC5BC,MAAMC,KAAK,CAAE3B,OAAQ,KAAM4B,KAAK,GAAGjD,KAAI,SAACkD,EAAGC,GAAM,8BAAKZ,IAAKY,EAAGjH,UAAU,QAAO,gBAAC,KAAI,CAACA,UAAU,eAAc,gBAAC,KAAa,CAACc,MAAO,KAAlF,IADtD,EAKJ,EAhK8D,SAAC,G,IAAEoG,EAAe,kBAAEC,EAAoB,uBAAEC,EAAa,gBAAE3C,EAAQ,WAAEC,EAAO,UAAE2C,EAAW,cAAEC,EAAY,eAAExG,EAAK,QAAEyG,EAAmB,sBAAEC,EAAqB,wBAAEnH,EAAQ,WAAEgF,EAAU,aAAEoC,EAAU,aAAEC,EAAa,gBAE7PC,EAAc,CAChBN,YAAW,EACXpC,UAAWqC,EACXM,QAASN,EACTC,oBAAmB,EACnBC,sBAAqB,GAGnBK,EAAiB,eAAkB,kB,OAAA,E,OAAA,E,EAAA,W,ylCAErC,OAAKnD,GAAY4C,GAEXtC,EAAYN,EAAQhE,GAMnB,CAAP,IAJ4B0G,GAAiB3C,GACvC,QAAyB,EAAD,CAAGM,WAAYN,EAAS/D,GAAIsE,UAAS,GAAK2C,KAClE,QAAwB,EAAD,CAAG3C,UAAS,GAAK2C,KAExBG,MAAK,SAACC,GACxB,OAAAA,GAAgBA,EAAa,IAAMA,EAAa,GAAGC,UAAUlE,KAAI,SAAAmE,GAAY,OAAAA,EAASC,KAAT,KAAmB,EAAhG,MAToC,CAAC,EAAD,G,iBAFH,K,gRAatC,CAACC,KAAKC,UAAUT,GAAcL,EAAc7C,GAAYA,EAAS/D,GAAIgE,GAAWA,EAAQhE,KAErF,GAAyB,QAAgBmH,EAAgB,IAAxDQ,EAAS,KAAEC,EAAS,KACrB,GAAwC,IAAAC,WAAS,GAAhDC,EAAe,KAAEC,EAAkB,KA6B1C,IAnBA,IAAAzH,YAAU,WACN,IAAKsH,IAAcE,EAAiB,CAChC,IAAKH,EAAUlD,OACX,OAEAsC,IAAc,QAAYA,EAAYY,IACtChI,GAAS,QAAQoH,IACjBgB,GAAmB,MAEb3H,GAAUA,IAAWuH,EAAU/C,SAASxE,IAAaA,GAASoG,IAAoBQ,KACxFrH,EAASgI,EAAU,IACnBI,GAAmB,G,CAnBF,IACnBC,EACAC,EADAD,EAAeE,SAASC,cAAc,0BACtCF,EAAeC,SAASC,cAAc,uDACxCH,GAAgBC,IAChB,OAAeA,EAAcD,EAqBrC,GAAG,CAACF,EAAiBf,EAAYY,EAAWC,KAEvC5D,IAAY4C,EACb,OAAO,KAGX,IAgBMrF,EAhBkB,SAACiD,GAKrB,IAJIT,aAAQ,EAARA,EAAUqE,uBAAqC,KAAb5D,EAAM,IACxCA,EAAM6D,QAAQ,IAGd5B,GAAwBM,GAAc,IAAOA,GAAYuB,OAAO1B,EAAc,OAAQ,CACtF,IAAM2B,GAAmB,QAAQxB,GAC5BvC,EAAMI,SAAS2D,KAChB/D,EAAMgE,KAAKD,GACX/D,EAAMiE,O,CAId,OAAOjE,CACX,CAEgBkE,CAAgBf,GAE1BgB,EAEEf,GACO7D,aAAQ,EAARA,EAAUqE,sBACX,uBAAK9I,UAAU,iDAAgD,gBAAC2D,EAAA,EAAc,OAC9E,gBAACgD,EAAiB,MAGvB1E,GAAYA,EAAQkD,QAIrBV,aAAQ,EAARA,EAAUqE,sBAMN,gBAACnF,EAAA,EAAM,CACH3D,UAAU,gDACV4D,OACI3B,EAAQ6B,KAAI,SAACsB,GACT,MAAO,CACHtE,MAAOsE,EACPnB,MAAOmB,EACDC,GAAW,QAAciC,EAAclC,IACvC,GAEd,IACJtE,MAAOA,GAAS,GAChBT,SAjBmB,SAAC+E,GACxB/E,EAAS+E,EACb,IAoBA,gBAAC,IAAY,CAACkE,kBAAkB,GAC5B,gBAACC,EAAA,EAAK,CACFtH,QAASA,EACTmB,SAAUtC,EACV0I,SAAU,SAACpE,EAAMjB,GACb,8BAAKnE,UAAW,sBAAemE,EAAU,wBAA0B,KAC/D,gBAAC,KAAa,CAACrD,OAAO,QAAcwG,EAAclC,KADtD,EAGJ/E,SAAU,SAAC+E,GAAS,OAAA/E,EAAS+E,GAAM,EAAf,EACpBrD,KAAK,OACL0H,cAAc,aACdC,gBAAgB,UArCjB,gBAACC,EAAAC,EAAmB,CAAClI,KAAK,uBAAuBmI,SAAS,cA2CnEC,EAAWhJ,GAAQ,QAAcwG,EAAcxG,IAAS,QAAQwG,GAChEyC,EAAmBzC,GAAgBxG,EACnCkJ,EAAuBD,GAAoBrF,EAAQuF,mBAAqBvF,EAAQwF,eAAiB,EAEvG,OACI,uBAAKlK,UAAU,iCACX,wBAAM8J,SAAUA,EAAU9J,UAAU,+BAChC,gBAAC,KAAa,CACVc,MAAOwG,EACP6C,KAAK,UACLC,MAAM,OACNC,IAAI,UACJC,QAAQ,SAEXP,GAAoB,gC,KAAI,gBAAC,KAAa,CAACjJ,MAAOgJ,KAC9CE,GAAwB,gC,IAAG,gBAAC,KAAa,CAAClJ,MAAO,IAAOgJ,GAAUvH,IAAImC,EAAQwF,eAAgB,WAAWzH,YAC1G,gBAAC,KAAW,MACP,SAAC8H,GAA+B,OAAAA,EAAQC,SAAU,QAAgBD,EAAQC,QAAQC,UAAY,IAA9D,KAGxCpB,EAGb,E,i6CCiDA,EA3M+C,SAAC,G,IAC5CqB,EAAY,eACZ5J,EAAK,QACLT,EAAQ,WACR6G,EAAe,kBACfQ,EAAa,gBACbD,EAAU,aACVhD,EAAQ,WACR2C,EAAa,gBACb1C,EAAO,UACP2C,EAAW,cACXE,EAAmB,sBACnBC,EAAqB,wBACrBL,EAAoB,uBAEd5G,GAAO,EAAAC,EAAA,KACPmK,GAAuB,IAAAC,UACvBC,GAA8B,IAAAD,WACpC,QAAsBrK,EAAKU,QACrB,OAAwC,IAAAsH,UAAS,GAAhDuC,EAAe,KAAEC,EAAkB,KACpC,GAA0D,IAAAxC,WAAS,GAAlEyC,EAAwB,KAAEC,EAA2B,KACtD,GAAwC,IAAA1C,WAAS,GAAhDC,EAAe,KAAEC,EAAkB,KACpC,GAAwC,IAAAF,YAAWd,GAAlDyD,EAAe,KAAEC,EAAkB,KACpC,GAA0B,IAAA5C,UAAmB,IAA5C6C,EAAQ,KAAEC,EAAW,KACtB3I,GAAU,SAAmB+B,aAAQ,EAARA,EAAU6G,eAAgBR,GAoBvDS,EAfkB,SACpBC,EACAC,EACAC,GAGA,IADA,IAAMC,EAAO,GACF1E,EAAI,IAAOuE,GAAMvE,EAAE2E,eAAeH,EAAK,OAAQxE,EAAE1E,IAAI,EAAG,OAC/DoJ,EAAKzC,KAAKjC,EAAE4E,SAGhB,OAAOF,EACFG,QAAO,SAACzB,GAAQ,OAACqB,EAAaK,MAAK,SAACtL,GAAO,OAAA4J,EAAIrB,OAAOvI,EAAX,GAA3B,IAChBqD,KAAI,SAACuG,GAAQ,OAAAA,EAAI5H,QAAJ,GACtB,CAEqBuJ,CAAgBtB,EAAchI,EAAS0I,GA4BtDa,EAAgB,SAAO7B,GAAW,0C,yEAChC8B,EAAkB,IAAO9B,GAAO+B,QAAQ,UAEvC/E,GAAiB3C,IAAaC,GAAWwH,EACX,GAzBZ,mC,2DAClBzH,IAAY2C,IAAiB1C,GAAYsG,EAA1C,YACAH,EAA4BuB,SAAU,QAClC,QAA0B1H,EAAQhE,K,iBAInB,O,sBAAA,GAAMmK,EAA4BuB,QAAQC,S,OACzD,OADMC,EAAS,WAEXvB,EAAmBuB,GACnBrB,GAA4B,GACrB,CAAP,EAAOqB,I,aAGX,O,SAAO,CAAP,EAAOxB,G,OAIf,MAAO,CAAP,EAAOA,G,QAMH,M,OACMyB,EAAyB,SACzBC,EAAoB,MACrBjK,KAAIkC,aAAQ,EAARA,EAAU6G,eAAgBiB,EAAwB,SACtDE,MAAM,QAEPP,EAAgBQ,QAAQF,KACxBN,EAAkB,IAAOxB,GAAcyB,QAAQ,UAG7CQ,EAAa,IAAOT,GAAiBO,MAAM,SAC3CxH,EAAYiH,EAAgBpJ,cAC5B8E,EAAU,QAAW,CAAC+E,EAAYH,IAAoB1J,cAE5D6H,EAAqByB,SAAU,QAC1BhF,GAAiB3C,GACZ,QAAiC,CAC7BM,WAAYN,EAAS/D,GACrBsE,UAAWN,EAAQhE,GACnB2G,YAAW,EACXpC,UAAS,EACT2C,QAAO,EACPL,oBAAmB,EACnBC,sBAAqB,KAEzB,QAAgC,CAC5BxC,UAAWN,EAAQhE,GACnB2G,YAAW,EACXpC,UAAS,EACT2C,QAAO,EACPL,oBAAmB,EACnBC,sBAAqB,KAInCmD,EAAqByB,QAAQC,QACxBvE,MAAK,SAACwE,GACCA,IACInF,GAAwBM,GACxB6E,EAAOpD,KAAKzB,GAEhB6E,EAAOnD,OACPkC,EAAYiB,GAEpB,IACCM,OAAM,WAAM,e,mCAInBC,EAAiB,WACdzB,EAASjG,SAAUqD,IAIpBf,IAAc,QAAYA,EAAY2D,GACtC/K,GAAS,QAAQoH,KAEhB3G,GAASoG,IAAoBQ,IAC7B5G,GACAA,KAAU,QAAYA,EAAOsK,KAE9B/K,EAASqK,GAGbjC,GAAmB,GACvB,EAgDA,OArCA,IAAAzH,YAAU,WACN,IAAKyD,GAAY2C,IAAkB1C,EAAS,CACxC,IAAM7B,EACF4E,GACA,IAAOA,GAAYqF,SACf,MACKvK,KAAIkC,aAAQ,EAARA,EAAU6G,eAAgBR,EAAiB,SAC/C2B,MAAM,SAEThF,EACAiD,EACVuB,EAAc,IAAItL,KAAKG,GAAS+B,G,CAKpC,OAFAgK,IAEO,W,QAC0B,QAA7B,EAAAlC,aAAoB,EAApBA,EAAsByB,eAAO,SAAEW,SACK,QAApC,EAAAlC,aAA2B,EAA3BA,EAA6BuB,eAAO,SAAEW,QAC1C,CACJ,GAAG,KAEH,IAAA/L,YAAU,WACN6L,IA/BI3B,GAAmBE,EAASjG,SACxBsC,KAAe,QAAYA,EAAY2D,IACvCa,EAAc,IAAItL,KAAK+J,IAE3BS,GAAmB,GA6B3B,GAAG,CACC1D,EACA3G,EACA4J,EACAxD,EACAQ,EACA0D,EACA/K,EACAmI,EACA0C,IAIA,gBAAC,IAAe,CACZ8B,QAAQ,EACR/L,OAAQV,EAAKU,OACbmC,SAAUtC,IAAS,QAAYA,EAAOsK,GAAY,IAAIzK,KAAKG,QAASuC,EACpEf,QAAS,IAAI3B,KAAK+J,GAClBhI,QAAS,IAAI/B,KAAK+B,GAClBuK,aAAc1B,EACdlL,SAtJiB,SAACwC,GACtB,IAAMqK,EAAa,IAAOrK,GAAMsK,KAAK,IAAIrK,cACzCzC,EAAS6M,EACb,EAoJQE,cA5KkB,SAAChD,GACvB6B,EAAc7B,EAClB,EA2KQiD,oBAAoB,QAAmB9M,EAAKU,SAGxD,E,WC3IA,EArD8F,SAAC,G,IAAEiG,EAAe,kBAAEwD,EAAY,eAAEjG,EAAQ,WAAEC,EAAO,UAAEnE,EAAI,OAAEkH,EAAU,aAAEN,EAAoB,uBAAE/B,EAAI,OAAEkI,EAAY,eAAEzK,EAAI,OAAE0K,EAAY,eAAElG,EAAW,cAAEmG,EAAmB,sBAAEpG,EAAa,gBAAEG,EAAmB,sBAAEC,EAAqB,wBAAEE,EAAa,gBAEzU,OACI,2BAAS1H,UAAU,oBACdyE,GAAYA,EAASgJ,UAClB,gBAACC,EAAA,EAAY,CAACC,YAAalJ,EAASmJ,eAEtCpG,GACE,gBAACqG,EAAA,EAAW,CACRC,SAAUrJ,EAAWA,EAASsJ,cAAgB,EAC9CC,MAAO3G,EACPhH,SAAUmN,EACVxN,UAAU,mCAGlB,uBAAKA,UAAU,0BACX,gBAAC,EAAU,CACPyE,SAAUA,EACVC,QAASA,EACT2C,YAAaA,EACbqD,aAAcA,EACd5J,MAAO+B,EACPxC,SAAUkN,EACV9F,WAAYA,EACZxG,OAAQV,EAAKU,OACbkG,qBAAsBA,EACtBC,cAAeA,EACfG,oBAAqBA,EACrBC,sBAAuBA,EACvBN,gBAAiBA,EACjBQ,cAAeA,IAEnB,gBAAC,EAAU,CACPjD,SAAUA,EACVC,QAASA,EACT2C,YAAaA,EACbC,aAAczE,EACd/B,MAAOsE,EACP/E,SAAUiN,EACV7F,WAAYA,EACZpC,WAAY9E,EAAK8E,WACjB8B,qBAAsBA,EACtBC,cAAeA,EACfG,oBAAqBA,EACrBC,sBAAuBA,EACvBN,gBAAiBA,EACjBQ,cAAeA,KAKnC,C,8ECnFO,IAAMuG,EAAiB,SAACC,EAAiBC,EAAgBC,EAA2CC,QAA3C,IAAAD,IAAAA,EAAA,WAA2C,IAAAC,IAAAA,GAAA,GAEvG,IACIC,EADEC,EAAiBJ,EAAMK,wBAEzBC,EAAYF,EAAeG,IAC3BC,EAAeJ,EAAeK,OAE9BR,IAEAK,IADAH,EAAqBF,EAAmBI,yBACGK,OAC3CF,GAA8BL,EAAmBO,QAGrD,IAAMC,EAAiBZ,EAAOM,wBACxBO,EAAeD,EAAeF,OAC9BI,EAAYF,EAAeJ,IAE5BL,GAKDW,GAAaP,GAAaE,EAAeI,IACzCE,EAASf,IAAUc,EAAYP,GAAY,KAL3CQ,EAASf,EAAQO,EAAW,EAOpC,EAEaS,EAAe,SAACC,GACzB,IAAMC,EAAS,eAAQD,GACjBE,EAAgBzG,SAAS0G,eAAe,cAC9CrB,EAAerF,SAAS2G,KAAM3G,SAAS0G,eAAeF,GAAUC,GAAgB,EACpF,EAEA,SAASJ,EAASO,EAAkBC,EAAYC,GAC5C,QAD4C,IAAAA,IAAAA,EAAA,GAC3B,IAAbA,EAAJ,CAKA,IAAMC,EAAQH,EAAQI,UAClBC,EAAc,EAGZC,EAAgB,WAGlB,IAAMC,EAWd,SAAuB3K,EAAc4K,EAAkBC,EAAgBP,GAGnE,OAFAtK,GAAQsK,EAAW,GAER,EACCO,EAAS,EAAK7K,EAAOA,EAAO4K,GAG/BC,EAAS,KADlB7K,GACgCA,EAAO,GAAK,GAAK4K,CACrD,CAnBoBE,CAFZL,GAHc,GAKyBF,EAAOF,EAAIC,GAClDF,EAAQI,UAAYG,EAEhBF,EAAcH,GACdS,WAAWL,EATD,GAWlB,EAEAA,G,MAnBIN,EAAQI,UAAYH,CAoB5B,C,uEC3CaW,EATyC,eASzCA,EARyC,eAUzCC,EAAyC,EAClD,QAASD,IACT,QAASA,G","sources":["components/form-components/Label/Label.tsx","components/form-components/DateInput/DateInput.tsx","components/form-components/FormWidget/FormWidget.tsx","components/BookingFlow/modules/CustomerData/ArriveTime/ArriveTime.tsx","components/BookingFlow/modules/CustomerData/CustomerData.tsx","components/BookingFlow/modules/DateTimeSelect/TimePicker/TimePicker.tsx","components/BookingFlow/modules/DateTimeSelect/DatePicker/DatePicker.tsx","components/BookingFlow/modules/DateTimeSelect/DateTimeSelect.tsx","services/scrollerFunctions.ts","services/validations/dateTimeSelectRules.ts"],"sourcesContent":["import React from 'react';\r\nimport { FormattedMessage, MessageDescriptor } from 'react-intl';\r\nimport { isMessageDescriptor } from '../helpers';\r\n\r\ninterface ILabelProps {\r\n message?: MessageDescriptor | string;\r\n required?: boolean;\r\n field: string;\r\n className?: string\r\n}\r\n\r\nconst Label: React.FunctionComponent = ({ message, required, field, className }) => (\r\n message ?\r\n \r\n : <>\r\n);\r\n\r\nexport default Label;","import React from 'react';\r\n\r\nconst DateInput = React.forwardRef((props: object, ref?: React.LegacyRef) => (\r\n
\r\n \r\n
\r\n));\r\n\r\nexport default DateInput;\r\n","import Moment from 'moment';\r\nimport React, { useEffect } from 'react';\r\nimport ReactDatePicker from 'react-datepicker';\r\nimport { IQuestion, QuestionType } from 'src/entities/question';\r\nimport Checkbox from '../Checkbox/Checkbox';\r\nimport TextInput, { TextInputType } from '../TextInput/TextInput';\r\nimport { useIntl } from 'react-intl';\r\nimport { registerDateFnsLocale } from '../../BookingFlow/modules/helpers';\r\nimport Select from '../Select/Select';\r\nimport Label from '../Label/Label';\r\nimport 'moment/locale/hu';\r\nimport 'moment/locale/de';\r\nimport 'moment/locale/sk';\r\nimport 'moment/locale/en-gb';\r\nimport DateInput from '../DateInput/DateInput';\r\n\r\ninterface IFormWidgetProps {\r\n question: IQuestion;\r\n onChange: (answer: string) => void;\r\n answer: string;\r\n}\r\n\r\nconst FormWidget: React.FC = ({ question, onChange, answer }) => {\r\n const intl = useIntl();\r\n const id = `question-${question.Id}-${Date.now()}`;\r\n const handleInputChange = (value: string | boolean) => {\r\n onChange(String(value));\r\n };\r\n const handleDateChange = (event: React.FocusEvent) => {\r\n const parsedDate = Moment(event.target.value, [\r\n 'LL',\r\n 'YYYY-MM-DD',\r\n 'DD-MM-YYYY',\r\n 'MM-DD-YYYY',\r\n ]);\r\n onChange(parsedDate.isValid() ? parsedDate.toISOString() : '');\r\n };\r\n\r\n useEffect(() => {\r\n registerDateFnsLocale(intl.locale);\r\n Moment.locale(intl.locale === 'en' ? 'en-gb' : intl.locale);\r\n }, [intl.locale]);\r\n\r\n return (\r\n <>\r\n {question.Type === QuestionType.YesNo ? null : (\r\n \r\n )}\r\n {question.Type === QuestionType.FreeText && (\r\n \r\n )}\r\n {question.Type === QuestionType.Date && (\r\n }\r\n shouldCloseOnSelect={true}\r\n minDate={Moment().add(question.MinimumValue, 'years').toDate()}\r\n maxDate={Moment().add(question.MaximumValue, 'years').toDate()}\r\n onChange={() => undefined}\r\n onSelect={(date) => onChange(date?.toISOString() || '')}\r\n onBlur={handleDateChange}\r\n selected={answer ? new Date(answer) : undefined}\r\n showMonthDropdown={true}\r\n showYearDropdown={true}\r\n dropdownMode=\"select\"\r\n calendarClassName=\"react-datepicker--without-header\"\r\n id={id}\r\n />\r\n )}\r\n {question.Type === QuestionType.List && (\r\n {\r\n return { value: actValue.Value, label: actValue.Text };\r\n })}\r\n value={answer}\r\n onChange={onChange}\r\n id={id}\r\n />\r\n )}\r\n {question.Type === QuestionType.YesNo && (\r\n \r\n {question.Name}\r\n \r\n )}\r\n \r\n );\r\n};\r\n\r\nexport default FormWidget;\r\n","import React from 'react';\r\nimport { FormattedMessage, defineMessages, useIntl } from 'react-intl';\r\nimport { setTimeOnDate } from 'src/services/dateTime';\r\nimport Select, { SelectSkeleton } from 'src/components/form-components/Select/Select';\r\nimport { useSubscription } from 'src/hooks';\r\nimport { useCallback } from 'react';\r\nimport { getServiceArriveTimes } from 'src/services/api/service';\r\nimport { IService } from 'src/entities/service';\r\nimport { ICalendar, isRandomCalendar } from 'src/entities/calendar';\r\nimport { getCalendarArriveTimes } from 'src/services/api/calendar';\r\n\r\ninterface IArriveTimeProps {\r\n calendar?: ICalendar;\r\n service?: IService;\r\n reservationStart?: string;\r\n onChange: (selectedTime: string) => void;\r\n value?: string;\r\n}\r\n\r\nconst messages = defineMessages({\r\n arriveTime: {\r\n id: 'arriveTime',\r\n defaultMessage: 'Érkezési idő'\r\n }\r\n});\r\n\r\nexport const ArriveTime: React.FunctionComponent = ({ calendar, service, reservationStart, onChange, value }) => {\r\n const intl = useIntl();\r\n const dateString: string = reservationStart || new Date().toISOString();\r\n\r\n const fetchArriveTime = useCallback(async () => {\r\n if (!service || !reservationStart) {\r\n return;\r\n }\r\n\r\n if (calendar && !isRandomCalendar(calendar.Id)) {\r\n return getCalendarArriveTimes({ calendarId: calendar.Id, serviceId: service.Id, startDate: reservationStart })\r\n }\r\n return getServiceArriveTimes({ serviceId: service.Id, startDate: reservationStart })\r\n }, [reservationStart]);\r\n\r\n const [times, isLoading] = useSubscription(fetchArriveTime);\r\n\r\n const getValidSelectedValue = () => {\r\n if (!times || !times.length) {\r\n return;\r\n }\r\n\r\n const arriveTimeValue =\r\n value && times.includes(value)\r\n ? value\r\n : times[times.length - 1];\r\n\r\n return arriveTimeValue;\r\n }\r\n\r\n if (isLoading) {\r\n return (\r\n
\r\n

\r\n \r\n

\r\n
\r\n \r\n
\r\n
\r\n )\r\n }\r\n\r\n if (!times || !times.length) {\r\n return null;\r\n }\r\n\r\n return (\r\n
\r\n

\r\n \r\n

\r\n
\r\n {\r\n return {\r\n value: time,\r\n label: intl.formatTime(setTimeOnDate(dateString, time))\r\n }\r\n })}\r\n value={getValidSelectedValue()}\r\n onChange={onChange}\r\n />\r\n
\r\n
\r\n );\r\n}","import React, { useEffect } from 'react';\r\nimport FormWidget from 'src/components/form-components/FormWidget/FormWidget';\r\nimport Placeholder from 'src/components/Placeholder/Placeholder';\r\nimport { IQuestion } from '../../../../entities/question';\r\nimport { ArriveTime } from './ArriveTime/ArriveTime';\r\nimport { ICalendar } from 'src/entities/calendar';\r\nimport { IService } from 'src/entities/service';\r\nimport { IValidation } from 'src/services/formValidator';\r\nimport ValidationMessage from 'src/components/form-components/ValidationMessage/ValidationMessage';\r\nimport { defineMessages, FormattedMessage } from 'react-intl';\r\n\r\nexport interface ICustomerData {\r\n [key: number]: string\r\n}\r\n\r\ninterface ICustomerDataProps {\r\n calendar?: ICalendar;\r\n service?: IService;\r\n reservationStart?: string;\r\n questions: IQuestion[];\r\n answers: ICustomerData;\r\n validation?: IValidation;\r\n selectedArriveTime: string;\r\n onChange: (question: IQuestion, value: ICustomerData) => void;\r\n onArriveTimeChange: (value: string) => void;\r\n hasLoaded: boolean;\r\n}\r\n\r\nconst messages = defineMessages({\r\n formInstructions: {\r\n id: 'formInstructions',\r\n defaultMessage: '* A megjelölt mezők kitöltése kötelező!'\r\n }\r\n})\r\n\r\nconst CustomerData: React.FunctionComponent = (props) => {\r\n\r\n const { service, calendar, questions, answers, reservationStart, selectedArriveTime, validation, hasLoaded } = props;\r\n\r\n useEffect(() => {\r\n questions.forEach((question) => {\r\n const { Id, DefaultValue } = question;\r\n \r\n if (DefaultValue) {\r\n answers[Id] = DefaultValue as string;\r\n question.DefaultValue = undefined;\r\n props.onChange(question, answers);\r\n }\r\n });\r\n }, [questions]);\r\n\r\n return (\r\n
\r\n {questions.some(q => q.Required)\r\n &&

}\r\n {service && service.HasArriveTime &&\r\n \r\n }\r\n {hasLoaded ?\r\n questions.map(q => q.IsHidden !== true &&\r\n
\r\n
\r\n props.onChange(q, { ...answers, [q.Id]: value })}\r\n />\r\n
\r\n {validation && validation.fields[q.Id] &&\r\n \r\n }\r\n
\r\n )\r\n : \r\n }\r\n
\r\n )\r\n}\r\n\r\nexport default CustomerData","import Moment from 'moment';\r\nimport React from 'react';\r\nimport CustomScroll from 'react-custom-scroll';\r\nimport { FormattedDate, FormattedTime } from 'react-intl';\r\nimport { getCalendarFreeIntervals } from 'src/services/api/calendar';\r\nimport { getTime, isValidTime, setTimeOnDate, getDate, getOffsetString, } from 'src/services/dateTime';\r\nimport { IDateTimeSelectBase } from '../DateTimeSelect';\r\nimport { Bone } from 'src/components/Placeholder/Placeholder';\r\nimport AvailabilityWarning from 'src/components/AvailabilityWarning';\r\nimport { getServiceFreeIntervals } from 'src/services/api/service';\r\nimport { useSubscription } from 'src/hooks';\r\nimport { useState, useEffect } from 'react';\r\nimport Select, { SelectSkeleton } from 'src/components/form-components/Select/Select';\r\nimport Radio from 'src/components/form-components/Radio/Radio';\r\nimport { scrollIntoView } from 'src/services/scrollerFunctions';\r\nimport { AppConsumer, IAppProvidedState } from 'src/contexts/AppContext';\r\n\r\ninterface ITimePickerProps extends IDateTimeSelectBase {\r\n selectedDate: string;\r\n value?: string;\r\n onChange: (selectedTime?: string, clicked?: boolean) => void;\r\n formatTime: (value: string | number | Date) => string;\r\n calendarChanged?: boolean;\r\n clickedByUser?: boolean;\r\n}\r\n\r\nconst TimePicker: React.FunctionComponent = ({ calendarChanged, allowAlreadySelected, isOnlyService, calendar, service, personCount, selectedDate, value, pendingReservations, modifiedReservationId, onChange, formatTime, autoSelect, clickedByUser }) => {\r\n\r\n const queryParams = {\r\n personCount,\r\n startDate: selectedDate,\r\n endDate: selectedDate,\r\n pendingReservations,\r\n modifiedReservationId\r\n };\r\n\r\n const fetchFreeTimes = React.useCallback(async () => {\r\n\r\n if (!service || !selectedDate) { return []; }\r\n\r\n const serviceId = service.Id;\r\n\r\n const getIntervals = () => !isOnlyService && calendar\r\n ? getCalendarFreeIntervals({ calendarId: calendar.Id, serviceId, ...queryParams })\r\n : getServiceFreeIntervals({ serviceId, ...queryParams })\r\n\r\n return getIntervals().then((dateInterval) =>\r\n dateInterval && dateInterval[0] && dateInterval[0].Intervals.map(interval => interval.Start) || []);\r\n\r\n }, [JSON.stringify(queryParams), selectedDate, calendar && calendar.Id, service && service.Id]);\r\n\r\n const [freeTimes, isLoading] = useSubscription(fetchFreeTimes, []);\r\n const [hasAutoSelected, setHasAutoSelected] = useState(false);\r\n\r\n const scrollToSelectedChip = () => {\r\n const selectedChip = document.querySelector('.chip__label--selected');\r\n const scrollParent = document.querySelector('.date-time-select__time-picker .rcs-inner-container');\r\n if (selectedChip && scrollParent) {\r\n scrollIntoView(scrollParent, selectedChip);\r\n }\r\n }\r\n\r\n useEffect(() => {\r\n if (!isLoading && !hasAutoSelected) {\r\n if (!freeTimes.length) {\r\n return;\r\n }\r\n if (autoSelect && isValidTime(autoSelect, freeTimes)) {\r\n onChange(getTime(autoSelect));\r\n setHasAutoSelected(true);\r\n }\r\n else if (!value || (value && !(freeTimes.includes(value))) || (value && calendarChanged && !clickedByUser)) {\r\n onChange(freeTimes[0]);\r\n setHasAutoSelected(false);\r\n }\r\n }\r\n\r\n scrollToSelectedChip();\r\n\r\n }, [hasAutoSelected, autoSelect, freeTimes, isLoading]);\r\n\r\n if (!service || !selectedDate) {\r\n return null;\r\n }\r\n\r\n const addOriginalTime = (times: string[]) => {\r\n if (calendar?.IsTimeSelectDropDown && times[0] !== '') {\r\n times.unshift('');\r\n }\r\n\r\n if (allowAlreadySelected && autoSelect && Moment(autoSelect).isSame(selectedDate, 'day')) {\r\n const autoSelectedTime = getTime(autoSelect);\r\n if (!times.includes(autoSelectedTime)) {\r\n times.push(autoSelectedTime);\r\n times.sort();\r\n }\r\n }\r\n\r\n return times;\r\n }\r\n\r\n const options = addOriginalTime(freeTimes);\r\n\r\n const TimePickerWidget = (() => {\r\n\r\n if (isLoading) {\r\n return calendar?.IsTimeSelectDropDown\r\n ?
\r\n : \r\n }\r\n\r\n if (!options || !options.length) {\r\n return \r\n }\r\n\r\n if (calendar?.IsTimeSelectDropDown) {\r\n const handleSelectChange = (time: string) => {\r\n onChange(time);\r\n }\r\n\r\n return (\r\n {\r\n return {\r\n value: time,\r\n label: time\r\n ? formatTime(setTimeOnDate(selectedDate, time))\r\n : ''\r\n }\r\n })}\r\n value={value || ''}\r\n onChange={handleSelectChange}\r\n />);\r\n }\r\n\r\n return (\r\n \r\n \r\n options={options}\r\n selected={value}\r\n getLabel={(time, checked) =>\r\n
\r\n \r\n
}\r\n onChange={(time) => onChange(time, true)}\r\n name=\"time\"\r\n rootClassName=\"chip-group\"\r\n buttonClassName=\"chip\"\r\n />\r\n
\r\n )\r\n })();\r\n\r\n const dateTime = value ? setTimeOnDate(selectedDate, value) : getDate(selectedDate);\r\n const hasSelectedValue = selectedDate && value;\r\n const shouldDisplayEndTime = hasSelectedValue && service.IsDurationVisible && service.DurationToUser > 0;\r\n\r\n return (\r\n
\r\n \r\n {TimePickerWidget}\r\n
\r\n )\r\n}\r\n\r\nconst ChipGroupSkeleton = () =>\r\n
\r\n {Array.from({ length: 12 }).fill(0).map((_, i) =>
)}\r\n
\r\n\r\n\r\nexport default TimePicker;","import Moment from 'moment';\r\nimport React, { useEffect, useRef, useState } from 'react';\r\nimport ReactDatePicker from 'react-datepicker';\r\nimport { getCalendarDaysWithFreeIntervals } from 'src/services/api/calendar';\r\nimport makeCancelable, { ICancelablePromise } from 'src/services/cancelablePromise';\r\nimport { getDate, isValidDate, getYearMonthFormat } from 'src/services/dateTime';\r\nimport { IDateTimeSelectBase } from '../DateTimeSelect';\r\nimport {\r\n getServiceDaysWithFreeIntervals,\r\n getServiceMaxWeeksForward,\r\n} from 'src/services/api/service';\r\nimport { registerDateFnsLocale } from '../../helpers';\r\nimport { getCalendarMaxDate } from 'src/entities/calendar';\r\nimport { useIntl } from 'react-intl';\r\n\r\ninterface IDatePickerProps extends IDateTimeSelectBase {\r\n firstFreeDay: string;\r\n value: string;\r\n onChange: (selectedDate: string) => void;\r\n locale: string;\r\n calendarChanged?: boolean;\r\n clickedByUser?: boolean;\r\n}\r\n\r\nconst DatePicker: React.FC = ({\r\n firstFreeDay,\r\n value,\r\n onChange,\r\n calendarChanged,\r\n clickedByUser,\r\n autoSelect,\r\n calendar,\r\n isOnlyService,\r\n service,\r\n personCount,\r\n pendingReservations,\r\n modifiedReservationId,\r\n allowAlreadySelected,\r\n}) => {\r\n const intl = useIntl();\r\n const freeDaysSubscription = useRef>();\r\n const maxWeeksForwardSubscription = useRef>();\r\n registerDateFnsLocale(intl.locale);\r\n const [maxWeeksForward, setMaxWeeksForward] = useState(1);\r\n const [hasLoadedMaxWeeksForward, setHasLoadedMaxWeeksForward] = useState(false);\r\n const [hasAutoSelected, setHasAutoSelected] = useState(false);\r\n const [moreFetchNeeded, setMoreFetchNeeded] = useState(!!autoSelect);\r\n const [freeDays, setFreeDays] = useState([]);\r\n const maxDate = getCalendarMaxDate(calendar?.WeeksForward || maxWeeksForward);\r\n const handleMonthChange = (month: Date) => {\r\n fetchFreeDays(month);\r\n };\r\n\r\n const getExcludedDays = (\r\n min: string | Date,\r\n max: string | Date,\r\n includedDays: Array\r\n ) => {\r\n const days = [];\r\n for (const i = Moment(min); i.isSameOrBefore(max, 'day'); i.add(1, 'day')) {\r\n days.push(i.clone());\r\n }\r\n\r\n return days\r\n .filter((day) => !includedDays.find((id) => day.isSame(id)))\r\n .map((day) => day.toDate());\r\n };\r\n\r\n const excludedDays = getExcludedDays(firstFreeDay, maxDate, freeDays);\r\n\r\n const handleDateChange = (date: Date) => {\r\n const stringDate = Moment(date).hour(12).toISOString();\r\n onChange(stringDate);\r\n };\r\n\r\n const getMaxWeeksForward = async () => {\r\n if (!calendar && isOnlyService && service && !hasLoadedMaxWeeksForward) {\r\n maxWeeksForwardSubscription.current = makeCancelable(\r\n getServiceMaxWeeksForward(service.Id)\r\n );\r\n\r\n try {\r\n const result = await maxWeeksForwardSubscription.current.promise;\r\n if (result) {\r\n setMaxWeeksForward(result);\r\n setHasLoadedMaxWeeksForward(true);\r\n return result;\r\n }\r\n } catch (e) {\r\n return maxWeeksForward;\r\n }\r\n }\r\n\r\n return maxWeeksForward;\r\n };\r\n\r\n const fetchFreeDays = async (month: Date) => {\r\n let startDateMoment = Moment(month).startOf('month');\r\n\r\n if ((isOnlyService || calendar) && service && startDateMoment) {\r\n const currentMaxWeeksForward = await getMaxWeeksForward();\r\n const endOfWeeksForward = Moment()\r\n .add(calendar?.WeeksForward || currentMaxWeeksForward, 'weeks')\r\n .endOf('week');\r\n\r\n if (startDateMoment.isAfter(endOfWeeksForward)) {\r\n startDateMoment = Moment(firstFreeDay).startOf('month');\r\n }\r\n\r\n const endOfMonth = Moment(startDateMoment).endOf('month');\r\n const startDate = startDateMoment.toISOString();\r\n const endDate = Moment.min([endOfMonth, endOfWeeksForward]).toISOString();\r\n\r\n freeDaysSubscription.current = makeCancelable(\r\n !isOnlyService && calendar\r\n ? getCalendarDaysWithFreeIntervals({\r\n calendarId: calendar.Id,\r\n serviceId: service.Id,\r\n personCount,\r\n startDate,\r\n endDate,\r\n pendingReservations,\r\n modifiedReservationId,\r\n })\r\n : getServiceDaysWithFreeIntervals({\r\n serviceId: service.Id,\r\n personCount,\r\n startDate,\r\n endDate,\r\n pendingReservations,\r\n modifiedReservationId,\r\n })\r\n );\r\n\r\n freeDaysSubscription.current.promise\r\n .then((result) => {\r\n if (result) {\r\n if (allowAlreadySelected && autoSelect) {\r\n result.push(autoSelect);\r\n }\r\n result.sort();\r\n setFreeDays(result);\r\n }\r\n })\r\n .catch(() => null);\r\n }\r\n };\r\n\r\n const autoSelectDate = () => {\r\n if (!freeDays.length || hasAutoSelected) {\r\n return;\r\n }\r\n\r\n if (autoSelect && isValidDate(autoSelect, freeDays)) {\r\n onChange(getDate(autoSelect));\r\n } else if (\r\n (value && calendarChanged && !clickedByUser) ||\r\n !value ||\r\n (value && !isValidDate(value, freeDays))\r\n ) {\r\n onChange(firstFreeDay);\r\n }\r\n\r\n setHasAutoSelected(true);\r\n };\r\n\r\n const checkAutoSelect = () => {\r\n if (moreFetchNeeded && freeDays.length) {\r\n if (autoSelect && !isValidDate(autoSelect, freeDays)) {\r\n fetchFreeDays(new Date(firstFreeDay));\r\n }\r\n setMoreFetchNeeded(false);\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n if ((calendar || isOnlyService) && service) {\r\n const date: string =\r\n autoSelect &&\r\n Moment(autoSelect).isBefore(\r\n Moment()\r\n .add(calendar?.WeeksForward || maxWeeksForward, 'weeks')\r\n .endOf('week')\r\n )\r\n ? autoSelect\r\n : firstFreeDay;\r\n fetchFreeDays(new Date(value || date));\r\n }\r\n\r\n autoSelectDate();\r\n\r\n return () => {\r\n freeDaysSubscription?.current?.cancel();\r\n maxWeeksForwardSubscription?.current?.cancel();\r\n };\r\n }, []);\r\n\r\n useEffect(() => {\r\n autoSelectDate();\r\n checkAutoSelect();\r\n }, [\r\n autoSelect,\r\n value,\r\n firstFreeDay,\r\n calendarChanged,\r\n clickedByUser,\r\n freeDays,\r\n onChange,\r\n hasAutoSelected,\r\n moreFetchNeeded,\r\n ]);\r\n\r\n return (\r\n \r\n );\r\n};\r\n\r\nexport default DatePicker;\r\n","import React from 'react';\r\nimport PersonCount from './PersonCount/PersonCount';\r\nimport TimePicker from './TimePicker/TimePicker';\r\nimport DatePicker from './DatePicker/DatePicker';\r\nimport { ICalendar } from 'src/entities/calendar';\r\nimport { IService } from 'src/entities/service';\r\nimport { WrappedComponentProps } from 'react-intl';\r\nimport { IPendingReservation } from 'src/entities/reservation';\r\nimport { ReadonlyInfo } from 'src/components/ReadonlyInfo/ReadonlyInfo';\r\n\r\n\r\nexport interface IDateTimeSelectBase {\r\n calendar?: ICalendar;\r\n service?: IService;\r\n personCount: number;\r\n autoSelect?: string;\r\n allowAlreadySelected: boolean;\r\n isOnlyService?: boolean;\r\n pendingReservations: IPendingReservation[];\r\n modifiedReservationId?: number;\r\n}\r\n\r\ninterface IDateTimeSelectProps extends IDateTimeSelectBase {\r\n onDateChange: (newDate: string) => void;\r\n onTimeChange: (newTime?: string, clicked?: boolean) => void;\r\n onPersonCountChange: (newPersonCount: number) => void;\r\n time?: string;\r\n date: string;\r\n firstFreeDay: string;\r\n calendarChanged?: boolean;\r\n clickedByUser?: boolean;\r\n}\r\n\r\nconst DateTimeSelect: React.FunctionComponent = ({ calendarChanged, firstFreeDay, calendar, service, intl, autoSelect, allowAlreadySelected, time, onTimeChange, date, onDateChange, personCount, onPersonCountChange, isOnlyService, pendingReservations, modifiedReservationId, clickedByUser }) => {\r\n\r\n return (\r\n
\r\n {calendar && calendar.Readonly &&\r\n \r\n }\r\n {!modifiedReservationId &&\r\n \r\n }\r\n
\r\n \r\n \r\n
\r\n
\r\n )\r\n}\r\n\r\nexport default DateTimeSelect","// This is the main function where which pass two ref parameters of Parent element & Child element\r\nexport const scrollIntoView = (parent: Element, child: Element, substrahendElement: Element | null = null, isSmartScroll: boolean = true) => {\r\n\r\n const clientBounding = child.getBoundingClientRect();\r\n let substrahendBouning;\r\n let clientTop = clientBounding.top;\r\n let clientBottom = clientBounding.bottom;\r\n\r\n if (substrahendElement) {\r\n substrahendBouning = substrahendElement.getBoundingClientRect();\r\n clientTop = clientTop - substrahendBouning.height;\r\n clientBottom = clientBottom - substrahendBouning.height;\r\n }\r\n\r\n const parentBounding = parent.getBoundingClientRect();\r\n const parentBottom = parentBounding.bottom;\r\n const parentTop = parentBounding.top;\r\n\r\n if (!isSmartScroll) {\r\n scrollTo(parent, clientTop, 0);\r\n return;\r\n }\r\n\r\n if (parentTop >= clientTop || clientBottom > parentBottom) {\r\n scrollTo(parent, -(parentTop - clientTop), 300);\r\n }\r\n};\r\n\r\nexport const scrollToStep = (stepIndex: number) => {\r\n const stepId = `step-${stepIndex}`;\r\n const headerElement = document.getElementById('app-header');\r\n scrollIntoView(document.body, document.getElementById(stepId)!, headerElement!, false);\r\n}\r\n\r\nfunction scrollTo(element: Element, to: number, duration: number = 0) {\r\n if (duration === 0){\r\n element.scrollTop = to;\r\n return;\r\n }\r\n\r\n const start = element.scrollTop;\r\n let currentTime = 0;\r\n const increment = 20;\r\n\r\n const animateScroll = function () {\r\n currentTime += increment;\r\n\r\n const val = easeInOutQuad(currentTime, start, to, duration);\r\n element.scrollTop = val;\r\n\r\n if (currentTime < duration) {\r\n setTimeout(animateScroll, increment);\r\n }\r\n };\r\n\r\n animateScroll();\r\n}\r\n// Function for smooth scroll animation with the time duration\r\nfunction easeInOutQuad(time: number, startPos: number, endPos: number, duration: number) {\r\n time /= duration / 2;\r\n\r\n if (time < 1) {\r\n return (endPos / 2) * time * time + startPos;\r\n }\r\n time--;\r\n return (-endPos / 2) * (time * (time - 2) - 1) + startPos;\r\n}","import { IDateTimeSelectStepState } from 'src/entities/dateTime';\r\nimport { IValidationRule, required } from './validations';\r\n\r\nconst getDateTimeSelectFields = () => {\r\n const dateField: keyof IDateTimeSelectStepState = 'selectedDate';\r\n const timeField: keyof IDateTimeSelectStepState = 'selectedTime';\r\n\r\n return {\r\n Date: dateField,\r\n Time: timeField \r\n }\r\n}\r\n\r\nexport const dateTimeSelectFields = getDateTimeSelectFields();\r\n\r\nexport const dateTimeSelectRules: IValidationRule[] = [\r\n required(dateTimeSelectFields.Date),\r\n required(dateTimeSelectFields.Time)\r\n];"],"names":["message","required","field","className","htmlFor","props","ref","question","onChange","answer","intl","useIntl","id","Id","Date","now","handleInputChange","value","String","useEffect","locale","Type","YesNo","Name","Required","FreeText","TextInput","fieldName","FieldName","type","Text","isMultiLine","popperPlacement","popperModifiers","name","enabled","options","rootBoundary","dateFormat","customInput","shouldCloseOnSelect","minDate","add","MinimumValue","toDate","maxDate","MaximumValue","onSelect","date","toISOString","onBlur","event","parsedDate","target","isValid","selected","undefined","showMonthDropdown","showYearDropdown","dropdownMode","calendarClassName","List","Select","values","Values","map","actValue","Value","label","Checkbox","checked","toLowerCase","messages","arriveTime","defaultMessage","ArriveTime","calendar","service","reservationStart","dateString","fetchArriveTime","useCallback","calendarId","serviceId","startDate","times","length","time","formatTime","includes","getValidSelectedValue","formInstructions","questions","answers","selectedArriveTime","validation","hasLoaded","forEach","DefaultValue","some","q","HasArriveTime","onArriveTimeChange","IsHidden","key","fields","ValidationMessage","formatValues","messageValues","Placeholder","ChipGroupSkeleton","role","Array","from","fill","_","i","calendarChanged","allowAlreadySelected","isOnlyService","personCount","selectedDate","pendingReservations","modifiedReservationId","autoSelect","clickedByUser","queryParams","endDate","fetchFreeTimes","then","dateInterval","Intervals","interval","Start","JSON","stringify","freeTimes","isLoading","useState","hasAutoSelected","setHasAutoSelected","selectedChip","scrollParent","document","querySelector","IsTimeSelectDropDown","unshift","isSame","autoSelectedTime","push","sort","addOriginalTime","TimePickerWidget","allowOuterScroll","Radio","getLabel","rootClassName","buttonClassName","AvailabilityWarning","A","modifier","dateTime","hasSelectedValue","shouldDisplayEndTime","IsDurationVisible","DurationToUser","year","month","day","weekday","context","company","TimeZone","firstFreeDay","freeDaysSubscription","useRef","maxWeeksForwardSubscription","maxWeeksForward","setMaxWeeksForward","hasLoadedMaxWeeksForward","setHasLoadedMaxWeeksForward","moreFetchNeeded","setMoreFetchNeeded","freeDays","setFreeDays","WeeksForward","excludedDays","min","max","includedDays","days","isSameOrBefore","clone","filter","find","getExcludedDays","fetchFreeDays","startDateMoment","startOf","current","promise","result","currentMaxWeeksForward","endOfWeeksForward","endOf","isAfter","endOfMonth","catch","autoSelectDate","isBefore","cancel","inline","excludeDates","stringDate","hour","onMonthChange","dateFormatCalendar","onTimeChange","onDateChange","onPersonCountChange","Readonly","ReadonlyInfo","phoneNumber","PhoneNumber","PersonCount","maxCount","ConcurrentNum","count","scrollIntoView","parent","child","substrahendElement","isSmartScroll","substrahendBouning","clientBounding","getBoundingClientRect","clientTop","top","clientBottom","bottom","height","parentBounding","parentBottom","parentTop","scrollTo","scrollToStep","stepIndex","stepId","headerElement","getElementById","body","element","to","duration","start","scrollTop","currentTime","animateScroll","val","startPos","endPos","easeInOutQuad","setTimeout","dateTimeSelectFields","dateTimeSelectRules"],"sourceRoot":""}