{"version":3,"file":"static/chunks/2727-4fa28a18a783e7cc.js","mappings":"yMAQMA,EAAkB,SAACC,EAAkBC,EAAgBC,IACvDC,EAAAA,EAAAA,OAAkBC,EAAAA,EAAAA,IAAc,CAC5BC,MAAOC,EAAAA,GAAAA,QACPN,SAAAA,EACAC,OAAAA,EACAC,MAAAA,KAOKK,EAAqB,SAACP,GAC/B,OAAOQ,EAAAA,EAAAA,cAAY,SAACP,EAAgBC,GAChCH,EAAgBC,EAAUC,EAAQC,KACnC,CAACF,KAMKS,EAAqB,SAACT,GAC/B,OAAO,SAACC,EAAgBC,GACpBH,EAAgBC,EAAUC,EAAQC,M,oECxB7BQ,EAAiB,SAACC,GAC3B,IAAkCC,GAAAA,EAAAA,EAAAA,WAAS,GAApCC,EAA2BD,EAAe,GAA/BE,EAAgBF,EAAe,GAEjD,OAAOJ,EAAAA,EAAAA,cAAY,YACdK,GAAaC,GAAa,SAACD,GAKxB,OAJKA,GACDF,KAGG,OAEZ,CAACE,EAAWF,M,q4BCZnB,IAAMI,EACM,EADNA,EAEO,EAFPA,EAGO,EAGPC,EAAgBC,EAAAA,QAAAA,GAAAA,WAAS,C,4BAATA,C,IAOEF,EAAcA,EAGTG,EAAAA,GAAAA,OACDH,EAAeA,EAQrCI,EAAAA,IACW,Y,QAAGC,O,YAAM,IAAG,EAAAC,EAAAA,EAAAA,cAAoB,IAOhCN,EACCA,EACUM,EAAAA,EAAAA,WAQCH,EAAAA,GAAAA,OACRH,EACCA,GAKtB,O,+CCfA,KAAeO,EAAAA,EAAAA,IAvCK,Y,QAEZC,YAAAA,OAAW,IAAG,MAAG,EAGrB,OACI,qB,UACI,UAACC,IAAC,CAACC,GAAI,O,WACH,SAACC,OAAI,CACDC,EAAE,iqCAUFJ,YAAaA,EACbK,iBAAiB,QAErB,SAACF,OAAI,CACDC,EAAE,qEACFJ,YAAaA,EACbM,cAAc,QACdC,eAAe,WAEnB,SAACJ,OAAI,CACDC,EAAE,6BACFJ,YAAaA,EACbM,cAAc,QACdC,eAAe,iBAS/B,iB,+ICiCJ,EA3D+B,Y,IAEvBC,EAAQ,EAARA,SACAC,EAAa,EAAbA,cAAa,IACbC,eAAAA,OAAc,IAAG,WAACC,G,OAAiBA,GAAI,EACvCC,EAAQ,EAARA,SAGsBvB,GAAAA,EAAAA,EAAAA,UAAkC,CACxDwB,MAAO,UACPC,MAAO,IAFJD,EAAmBxB,EAGxB,GAHY0B,EAAY1B,EAGxB,GACI2B,GAAQ/B,EAAAA,EAAAA,cAAY,WACtBgC,EAAaC,QAAUC,YAAYC,MACnCL,GAASM,SAAAA,G,OAAS,kBAAKA,GAAI,CAAER,MAAO,eACrC,IACGS,GAASC,EAAAA,EAAAA,QAAe,GACxBN,GAAeM,EAAAA,EAAAA,QAAe,GAE9BC,EAA6B,SAACb,GAChC,IAAIc,GAAYd,EAAOM,EAAaC,SAAWN,EAC3Ca,EAAW,IACXA,EAAW,GAGf,IAAMX,EAAQJ,EAAee,GAE7BV,GAASM,SAAAA,G,OAAS,kBAAKA,GAAI,CAAEP,MAAAA,OAC7BN,EAASM,GAELW,EAAW,EACXH,EAAOJ,QAAUQ,sBAAsBF,IAEvCP,EAAaC,QAAU,EACvBH,GAASM,SAAAA,G,OAAS,kBAAKA,GAAI,CAAER,MAAO,iBAmB5C,OAfAc,EAAAA,EAAAA,YAAU,WACN,GAAoB,YAAhBd,EAAMA,MAEN,OADAS,EAAOJ,QAAUQ,sBAAsBF,GAChC,W,OAAMI,qBAAqBN,EAAOJ,UAGzB,UAAhBL,EAAMA,OACNE,GAASM,SAAAA,G,OAAS,kBAAKA,GAAI,CAAER,MAAO,eAGpB,YAAhBA,EAAMA,OACNJ,MAEL,CAACI,KAEG,QACHG,MAAAA,GACGH,I,WCtEEgB,GACD,IADCA,EAEH,GAIGC,EAA4BC,GAC5BC,EAAoBF,ECL3BG,EAAQ,SAACC,G,OAA0BA,EAAQL,GAC3CM,EAAQ,SAACD,G,OAA0BA,EAAQL,GAmBjD,EAjBwB,SAACzB,GACrB,IAAMgC,EAAS,GAaf,OAVAA,EAAOC,KAAK,IAAgBjC,OAAZA,EAAEkC,KAAKC,EAAE,KAAc,OAAXnC,EAAEkC,KAAKE,MAEnCJ,EAAOC,KAAK,IAAiBjC,OAAbA,EAAEqC,MAAMF,EAAE,KAAe,OAAZnC,EAAEqC,MAAMD,MAErCJ,EAAOC,KAAK,IAAwBjC,OAApB6B,EAAM7B,EAAEqC,MAAMF,GAAG,KAAkBN,OAAf7B,EAAEqC,MAAMD,IAAI,KAAuBpC,OAApB6B,EAAM7B,EAAEqC,MAAMF,GAAG,KAAqBnC,OAAlBA,EAAEqC,MAAMC,OAAO,KAAgBtC,OAAbA,EAAEqC,MAAMF,EAAE,KAAkB,OAAfnC,EAAEqC,MAAMC,SAE9GN,EAAOC,KAAK,IAAgBjC,OAAZA,EAAEkC,KAAKC,EAAE,KAAiB,OAAdnC,EAAEkC,KAAKI,SAEnCN,EAAOC,KAAK,IAAuBjC,OAAnB+B,EAAM/B,EAAEkC,KAAKC,GAAG,KAAoBJ,OAAjB/B,EAAEkC,KAAKI,OAAO,KAAsBtC,OAAnB+B,EAAM/B,EAAEkC,KAAKC,GAAG,KAAiBnC,OAAdA,EAAEkC,KAAKE,IAAI,KAAepC,OAAZA,EAAEkC,KAAKC,EAAE,KAAc,OAAXnC,EAAEkC,KAAKE,MAEjGJ,GCjBLO,EAA4B,SAAC3B,EAAyB4B,EAAuBC,GAC/E,MAAO,CACHN,EAAGvB,EAAMuB,GAAKK,EAAIL,EAAIvB,EAAMuB,GAAKM,EACjCC,EAAG9B,EAAM8B,GAAKF,EAAIE,EAAI9B,EAAM8B,GAAKD,IAiBzC,EAd4B,SAACzC,EAAuByC,GAChD,IAAML,EAAsB,CAAExB,MAAO,CAAEuB,EAAGnC,EAAEkC,KAAKC,EAAGO,EAAG1C,EAAEkC,KAAKE,KAAOI,IAAK,CAAEL,EAAGnC,EAAEqC,MAAMF,EAAGO,EAAG1C,EAAEqC,MAAMD,MAC/FO,EAAsB,CAAE/B,MAAO,CAAEuB,EAAGnC,EAAEkC,KAAKC,EAAGO,EAAG1C,EAAEkC,KAAKI,QAAUE,IAAK,CAAEL,EAAGnC,EAAEqC,MAAMF,EAAGO,EAAG1C,EAAEqC,MAAMC,SAElGM,EAAIL,EAA0BH,EAAIxB,MAAOwB,EAAII,IAAKC,GAClDI,EAAIN,EAA0BI,EAAI/B,MAAO+B,EAAIH,IAAKC,GAElDT,EAASc,EAAgB9C,GAI/B,OAHAgC,EAAO,GAAK,IAAWY,OAAPA,EAAET,EAAE,KAAO,OAAJS,EAAEF,GACzBV,EAAO,GAAK,IAAWa,OAAPA,EAAEV,EAAE,KAAO,OAAJU,EAAEH,GAElBV,GCNX,EAfuB,SAACe,EAAkBC,EAAgBC,EAAgBC,GACtE,IAAMC,EAAQD,EAERE,GADQJ,EAASD,IACDI,EAAQ,GAE9B,OAAO,OAAIE,MAAMF,IAAQG,KAAI,SAACC,EAAGC,G,MAC7B,CACIrB,EAAGqB,EAAMJ,EAAOL,EAAkB,IAAPK,EAC3BV,EAAG,EACHe,MAAOL,EACPH,OAAAA,O,mBCQZ,EAlBoB,SAACF,EAAkBC,EAAgBE,EAAmBQ,G,OAAyB,SAACC,GAKhG,IAAMC,EAAeF,EAAe,EAE9BG,EAAaH,EAAeE,EAC5BH,EAAQK,KAAKC,IAAIf,EAASD,GAE1BiB,EADOP,GAASP,EAAY,GACVS,EAAaZ,EAErC,MAAO,CACHiB,SAAUA,EACVC,OAAQJ,GAAcG,EAAWP,GAASG,KCuLlD,EA1JkB,Y,QAEVM,WAAAA,OAAU,IAAG,a,OAAM,W,OAAM,IAAI,MAC7BC,UAAAA,OAAS,IAAG,EAAAzE,EAAAA,EAAAA,cAAoB,MAChC0E,cAAAA,OAAa,IAAG,EAAA1E,EAAAA,EAAAA,OAAa,MAE7BwD,UAAAA,OAAS,IAAG,IAAC,MACbmB,MAAAA,OAAK,IAAG,EAAA3E,EAAAA,EAAAA,SAAe,MAEvB4E,iBAAAA,OAAgB,IAAG,EAAA5E,EAAAA,EAAAA,OAAa,MAChC6E,iBAAAA,OAAgB,IAAG,EAAA7E,EAAAA,EAAAA,KAAW,MAC9B8E,aAAAA,OAAY,IAAG,MAAG,MAClB/B,SAAAA,OAAQ,IAAG,IAAC,MAEZgC,gBAAAA,OAAe,IAAG,KAAE,EAAqB,IAEzCC,kBAAAA,OAAiB,IAAG,GAAK,MACzBC,UAAAA,OAAS,IAAG,GAAK,EAGrB,GAAIlC,EAAW,GAAKA,EAAW,EAC3B,MAAM,IAAImC,MAAM,kIAA2I,OAATnC,IAGtJ,GAAIS,GAA2B,IAAdA,GAAmBA,EAAY,EAC5C,MAAM,IAAI0B,MAAM,+HAAyI,OAAV1B,IAInJ,IAAM2B,EAAyB,CAC3B3C,KAAM,CACFC,EAAGT,KACHU,IAAKR,MACLU,OAAQV,OAEZS,MAAO,CACHF,EAAGqC,EAAe/C,EAAc,IAChCW,ILjE+B,IKkE/BE,OAAQwC,OAIVC,GAAgBC,EAAAA,EAAAA,UAClB,W,OAAMC,EAAYvD,EAA2BmD,EAAGxC,MAAMF,EAAGe,EL/ExB,KKgFjC,CLhFiC,EKgFLxB,EAA2BmD,EAAGxC,MAAMF,EAAGe,IAGjEgC,GAAcF,EAAAA,EAAAA,UAChB,W,OAAMG,EAAeN,EAAG3C,KAAKC,EAAG0C,EAAGxC,MAAMF,ELjFpBT,GKiFsCwB,KAC3D,CAAC2B,EAAG3C,KAAKC,EAAG0C,EAAGxC,MAAMF,ELlFAT,GKkFkBwB,IAG3C,OACI,UAACkC,MAAG,CAAC3B,MAAOe,EAAcvB,OLtFLvB,GKsF4B2D,QAAS,OAAuBP,OAAhBN,EAAa,KAAiB,OLtF1E9C,IKsF6E4D,MAAO,CAAEC,OAAQ,W,WAC/G,SAACxF,OAAI,CAACC,EAAG8C,EAAgB+B,GAAIW,KAAK,IAAKC,OAAQtB,EAAWuB,KAAMvB,IAE/DjB,IACG,SAACrD,IAAC,CAACC,GAAI,iB,UACF,OAAIuD,MAAMH,IAAYI,KAAI,SAACC,EAAGC,GAC3B,IAA6BuB,EAAAA,EAAcvB,GAAnCQ,EAAqBe,EAArBf,SAAUC,EAAWc,EAAXd,OAElB,OAAO,UAACpE,IAAC,C,WACL,SAAC8F,SAAM,CACHC,YAAW,gBAEXC,GAAI7B,EACJ8B,GAAIlE,EACJmE,EAAG9B,EACHwB,OAAO,OACPC,KAAMrB,GALD,iBAAqB,OAAJb,KAO1B,SAACmC,SAAM,CACHC,YAAW,uBAEXC,GAAI7B,EACJ8B,GAAIlE,EACJmE,EAAGrE,EACH+D,OAAO,OACPC,KAAM,cACNJ,MAAO,CAAEC,OAAQ,YANZ,iBAAqB,OAAJ/B,EAAI,cAZnB,sBAA0B,OAAJA,SAyBhDkB,IACG,UAAC7E,IAAC,CAACC,GAAI,mB,WACH,SAACC,OAAI,CACDC,EAAGgG,EAAoBnB,EAAIpC,GAAU+C,KAAK,IAC1CC,OAAQrB,EACRsB,KAAM,QAAkCf,QAA1BsB,EAAAA,EAAAA,GAAQ7B,GAAe,KAA0B,OAAvBO,EAAY,KAAO,IAAI,OAGlEzB,IACG,SAACrD,IAAC,CAACC,GAAI,uB,UACF,OAAIuD,MAAMH,IAAYI,KAAI,SAACC,EAAGC,GAC3B,IAA6BuB,EAAAA,EAAcvB,GAAnCQ,EAAqBe,EAArBf,SAAUC,EAAWc,EAAXd,OAElB,OAAOD,GAAYQ,EAAe/B,IAC9B,SAACkD,SAAM,CACHC,YAAW,sBAEXC,GAAI7B,EACJ8B,GAAIlE,EACJmE,EAAG9B,EACHwB,OAAO,OACPC,KAAM,WALD,uBAA2B,OAAJlC,YAcvDN,IACG,SAACrD,IAAC,CAACC,GAAI,uB,SACFoF,EAAY5B,KAAI,SAACF,EAAMI,GACpB,OAAO,SAAC0C,QAAI,QAERT,OAAQd,EAAYjF,EAAAA,EAAAA,MAAe,cACnCgG,KAAM,cACNS,QAASjC,EAAWV,IAChBJ,GAJC,uBAA2B,OAAJI,SAU3CkB,IACG,qB,UAEI,UAAC7E,KAAC,gBAACC,GAAI,2BAA4B8F,YAAW,0BAA8BnB,GAAe,CAAEa,MAAO,CAAEC,OAAQ,W,WAC1G,SAACI,SAAM,CACHC,YAAW,yBACXC,GAAInE,GAA6BmD,EAAGxC,MAAMF,EAAIT,GAA6Be,EAC3EqD,GAAIlE,EACJmE,EAAGrE,EACHgE,KAAM,QAAqCf,QAA7BsB,EAAAA,EAAAA,GAAQ1B,GAAkB,KAA0B,OAAvBI,EAAY,KAAO,IAAI,QAEtE,SAACgB,SAAM,CACHC,YAAW,yBACXC,GAAInE,GAA6BmD,EAAGxC,MAAMF,EAAIT,GAA6Be,EAC3EqD,GAAIlE,EACJmE,ELrLa,EKsLbL,KAAM,QAAqCf,QAA7BsB,EAAAA,EAAAA,GAAQ3B,GAAkB,KAA0B,OAAvBK,EAAY,KAAO,iBC/E1F,EAvGyB,Y,QAEjBH,aAAAA,OAAY,IAAG,MAAG,EAClBtB,EAAS,EAATA,UAAS,IACTkD,SAAAA,OAAQ,IAAG,IAAC,MACZC,cAAAA,OAAa,IAAG,a,OAAM,MAAI,EACvBC,GAAK,UAJR9B,eACAtB,YACAkD,WACAC,kBAIJ,GAAInD,EAAY,EACZ,MAAM,IAAI0B,MAAM,kFAGpB,GAAIwB,EAAWlD,EACX,MAAM,IAAI0B,MAAM,oHAGpB,IAAM2B,GAAapF,EAAAA,EAAAA,QAAuB,MAEVlC,GAAAA,EAAAA,EAAAA,UAAS,CACrC2B,MAAO,EACPE,QAAS,EACT0F,WAAY,EACZC,UAAW,GAAKvD,EAAY,KAJzBT,EAAyBxD,EAK9B,GALeyH,EAAezH,EAK9B,GAEI0H,EAAYC,EAAuB,CACrCpG,SAAU,IACVF,eAAgBuG,SAAAA,G,OAAgB,EAAI/C,KAAKgD,IAAIhD,KAAKiD,KAAKF,KACvDzG,SAAU,SAACM,GACPgG,GAAYzF,SAAAA,G,OAAS,kBAAKA,GAAI,CAAEH,QAASG,EAAKL,OAASK,EAAKuF,WAAavF,EAAKL,OAASF,QAE3FL,cAAe,WACXqG,GAAYzF,SAAAA,G,OAAS,kBAAKA,GAAI,CAAEL,MAAOK,EAAKH,aAC5CuF,EAAcvC,KAAKkD,OAAO9D,EAAY,GAAKT,EAAS3B,aAGtDmG,GAAgBC,EAAAA,EAAAA,IAAa,CAC/BC,SAAU,WACNT,GAAYzF,SAAAA,G,OAAS,kBAAKA,GAAI,CAAEL,MAAOK,EAAKH,aAE5CsG,WAAWT,EAAU/F,QAEzByG,UAAW,Y,IAAGC,EAAG,EAAHA,IAAKC,EAAM,EAANA,OACf,GAAY,SAARD,GAA0B,UAARA,EAAtB,CAIA,IAAIE,EAAO/E,EAAS7B,MAAS2G,EAAS/C,EAElCgD,EAAO,IACPA,EAAO,GAGPA,EAAO,IACPA,EAAO,GAGXd,GAAYzF,SAAAA,G,OAAS,kBAAKA,GAAI,CAAEH,QAAS0G,EAAMhB,WAAY1C,KAAKkD,MAAM/F,EAAKH,QAAUG,EAAKwF,WAAaxF,EAAKwF,iBAGhHgB,sBAAsB,EACtBC,YAAY,EACZC,YAAY,EACZC,cAAe,EACfC,cAAeC,IACfC,kBAAmB,CAAEC,SAAS,MAGlCzG,EAAAA,EAAAA,YAAU,WACF6E,GAAY,GACZM,GAAYzF,SAAAA,G,OAAS,kBACdA,GAAI,CACPL,MAAOwF,GAAYlD,EAAY,GAC/BpC,QAASsF,GAAYlD,EAAY,GACjCuD,UAAW,GAAKvD,EAAY,UAGrC,CAACqD,EAAY/B,EAAc4B,EAAUlD,IAUxC,OACI,SAAC+E,MAAG,CAACC,IAAK3B,E,UACN,SAAC4B,GAAS,kBACF7B,GAAK,CACTpC,WAZW,SAACkE,G,OAAsB,WAC1C1B,GAAYzF,SAAAA,G,OAAS,kBACdA,GAAI,CACPuF,WAAY4B,GAAalF,EAAY,QAEzCkE,WAAWT,EAAU/F,SAQbsC,UAAWA,EACXwB,mBAAmB,EACnBF,aAAcA,EACdC,gBAAiBwC,EACjBxE,SAAUA,EAAS3B,c,2rECjG5B,IAAMuH,EAAU/I,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,IAGjBgJ,EAAAA,GAKmB/I,EAAAA,GAAAA,OACf+I,EAAAA,IAMGC,EAAgBjJ,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,IAWJC,EAAAA,GAAAA,QAOZiJ,EAAWlJ,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,KAeXmJ,EAAYnJ,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,IAMnBE,EAAAA,GAEWE,EAAAA,EAAAA,SAGQH,EAAAA,GAAAA,OACfC,EAAAA,GAIA8I,EAAAA,IAMGI,EAAQpJ,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,IAKXmJ,EAKAA,EAKJE,EAAAA,GACWjJ,EAAAA,EAAAA,SAGX4I,EAAAA,GAImB/I,EAAAA,GAAAA,OAGfoJ,EAAAA,GAIAL,EAAAA,IAMGM,EAAgBtJ,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,KAQvB,Y,OAAS,EAANuJ,QACKC,EAAAA,EAAAA,KAAG,IACCL,GAIJ,MCVd,EA1FsB,Y,IAwD+BM,EAtD7CC,EAAS,EAATA,UACAD,EAAK,EAALA,MACAE,EAAQ,EAARA,SAAQ,IACR7C,SAAAA,OAAQ,IAAG,IAAC,EACZ3C,EAAK,EAALA,MAAK,IAELyF,+BAAAA,OAA8B,IAAG,GAAK,EAGpCC,GAAUhI,EAAAA,EAAAA,QAAuB,MACHlC,GAAAA,EAAAA,EAAAA,UAAiB,GAA9CmK,EAA6BnK,EAAmB,GAA/BoK,EAAYpK,EAAmB,GACjBA,GAAAA,EAAAA,EAAAA,UAAiBmH,GAAhDkD,EAA+BrK,EAA0B,GAA5CsK,EAAkBtK,EAA0B,GAChE,GAAI8J,EAAMS,OAAS,EACf,MAAM,IAAI5E,MAAM,kHAGpB,IAA0EI,GAAAA,EAAAA,EAAAA,UAMvE,WACC,IAAMyE,EAAcC,IAAMX,GACpBY,EAAOZ,EAAMS,OACbI,EAAkB,KAAQD,EAAO,GAAM,EAE7C,MAAO,CACHE,SAAUJ,EAAYK,QAAQ,EAAG,GAAG,GACpCC,UAAWN,EAAYK,OAAO,EAAG,GAAG,GACpCE,cAAeP,EACfvG,UAAWyG,EACXM,eAAyB,IAATN,EAAa,OAAS,GAA2C,OAAxCC,EAAkBA,EAAkB,IAAI,QAEtF,CAACb,IAlBIgB,EAAkE/E,EAAlE+E,UAAWF,EAAuD7E,EAAvD6E,SAAUG,EAA6ChF,EAA7CgF,cAAe9G,EAA8B8B,EAA9B9B,UAAW+G,EAAmBjF,EAAnBiF,gBAoBvD1I,EAAAA,EAAAA,YAAU,WACU,OAAZ4H,GAAwC,OAApBA,EAAQrI,SAC5BuI,EAASF,EAAQrI,QAAQoJ,eAE9B,CAACf,KAEJ5H,EAAAA,EAAAA,YAAU,WACNgI,EAAenD,KAChB,CAACA,EAAU2C,IAOd,OACI,UAACoB,EAAS,CAACjC,IAAKiB,EAASH,UAAWA,E,WAChC,SAACmB,EAAe,C,UACZ,UAAC7B,EAAAA,GAAE,CAAC8B,GAAI,OAAQC,aAAa,E,UAA0B,QAAlBtB,EAAAA,EAAMO,UAAY,IAAlBP,OAAAA,EAAAA,EAAoBuB,MAAM,yCAEnE,SAACC,EAAgB,CAACrH,UAAWA,EAAWmD,cAVtB,SAAC+B,GACvBmB,EAAenB,GACfa,EAASb,IAQqEhC,SAAUA,EAAU5B,aAAcf,GAAS2F,KACrH,UAACe,EAAO,CAAC7E,MAAO,CAAE7B,MAAOA,GAAS2F,G,WAC9B,UAACe,EAAW,CAAuC7E,MAAO,CAAE7B,MAAOwG,G,WAC/D,SAAC3B,EAAAA,GAAE,CAAC8B,GAAI,IAAKC,aAAa,E,SAAQN,EAAUO,SAC5C,SAACE,EAAAA,EAAG,CAACH,aAAa,E,UACd,SAAC7K,EAAAA,GAAU,CAACiL,UAAQ,E,SAAC,uCAEzB,SAAC9B,EAAAA,GAAE,CAACyB,GAAI,O,SAASL,EAAUO,UALb,kCAOlB,UAACH,EAAW,CAAsC7E,MAAO,CAAE7B,MAAOwG,G,WAC9D,SAAC3B,EAAAA,GAAE,CAAC8B,GAAI,IAAKC,aAAa,E,SAAQR,EAASS,SAC3C,SAACE,EAAAA,EAAG,CAACH,aAAa,E,UACd,SAAC7K,EAAAA,GAAU,CAACiL,UAAQ,E,SAAC,uCAEzB,SAAC9B,EAAAA,GAAE,CAACyB,GAAI,O,SAASP,EAASS,UALZ,iCAOlB,UAACH,EAAe,CAACtB,OAAQK,GAAkCwB,QAAQxH,EAAY,G,UAC1E8G,EAAc1G,KAAIqH,SAAAA,G,OAAQ,UAACR,EAAW,C,WACnC,SAAC7B,EAAAA,GAAE,CAAC8B,GAAI,IAAKC,aAAa,E,SAAQM,EAAKL,SACvC,SAACE,EAAAA,EAAG,CAACH,aAAa,E,UACd,SAAC7K,EAAAA,GAAU,CAACiL,UAAQ,E,SAAC,uCAEzB,SAAC9B,EAAAA,GAAE,CAACyB,GAAI,O,SAASO,EAAKL,UALmB,uBAA+B,OAARK,EAAK7K,QAO/C,IAAzBkK,EAAcR,QAAe,qB,SAAE,SAAY,UAGpD,SAACW,EAAU,S,63BC3GhB,IAAMS,EAAkCtL,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,IAUzCD,EAAAA,EAImBE,EAAAA,GAAAA,QAKZgJ,EAAgBjJ,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,IAYJC,EAAAA,GAAAA,QCgDzB,EApDiC,Y,IAEzBwJ,EAAK,EAALA,MAAK,IACL8B,MAAAA,OAAK,IAAG,2IAA0B,MAClCzE,SAAAA,OAAQ,IAAG,IAAC,EACZ6C,EAAQ,EAARA,SAAQ,IAERC,+BAAAA,OAA8B,IAAG,GAAK,EAEnC5C,GAAK,UAPRyC,QACA8B,QACAzE,WACA6C,WAEAC,mCAKoCjK,GAAAA,EAAAA,EAAAA,UAASmH,GAA1C0E,EAAiC7L,EAAkB,GAArC8L,EAAmB9L,EAAkB,IAE1DsC,EAAAA,EAAAA,YAAU,WACNwJ,EAAgB3E,KACjB,CAAC2C,IAOJ,OACI,SAACiC,EAAkC,C,UAC/B,UAACC,EAAAA,EAAY,C,WACT,SAACD,EAAgB,C,UACb,SAAC1C,EAAAA,GAAE,CAAC8B,GAAI,KAAMC,aAAa,E,SAAQQ,OAEvC,SAACK,EAAAA,GAAa,QACVnC,MAAOA,EACP3C,SAAU0E,EACV7B,SAdO,SAACnJ,GACpBiL,EAAgBjL,GAChBmJ,EAASnJ,IAaGoJ,+BAAgCA,GAC5B5C,KAER,SAACjH,EAAAA,EAAa,C,SACT0J,EAAM+B,GAAcK,iBACjBpC,EAAM+B,GAAcK,gBAAgB7H,KAAI8H,SAAAA,G,OACpC,SAAC5L,EAAAA,GAAU,CACP4K,GAAI,KAEJiB,wBAAyB,CAAEC,OAAQF,IAD9B,yBAAqC,OAAZA,EAAY,kB,qECvE1E,MAMMG,EAAe,CACjB7K,MAAO,GACP+G,sBAAsB,EACtBG,cAAe,EACfD,YAAY,EACZD,YAAY,EACZG,cAAeC,IACfC,kBAAmB,CAAEC,SAAS,IAE5BwD,EAAe,CACjBC,OAAO,EACPC,QAAS,CAAC,EAAG,GACb9K,MAAO,EACP+K,SAAS,EACTC,GAAI,CAAC,EAAG,IAENC,EAAY,YACZC,EAAU,UAgBhB,SAASC,EAAgBC,EAAKC,GAC1B,GAAc,IAAVA,EACA,OAAOD,EACX,MAAME,EAAkBpI,KAAKqI,GAAK,IAAOF,EAGzC,MAAO,CAFGD,EAAI,GAAKlI,KAAKsI,IAAIF,GAAkBF,EAAI,GAAKlI,KAAKgD,IAAIoF,GACtDF,EAAI,GAAKlI,KAAKsI,IAAIF,GAAkBF,EAAI,GAAKlI,KAAKgD,IAAIoF,IAGpE,SAASG,EAAYC,EAAKC,GACtB,MAAMC,EAAW9N,IACb,MAAM+N,EAAU,YAAa/N,EAEzB+N,GAAW/N,EAAMgO,QAAQlD,OAAS,GAEtC8C,GAAI,CAAC7L,EAAO6F,KAEJA,EAAMqB,aAAe8E,IACrBE,SAASC,iBAAiBf,EAAWgB,GACrCF,SAASC,iBAAiBd,EAASgB,IAEvC,MAAM,QAAEC,EAAO,QAAEC,GAAYP,EAAU/N,EAAMgO,QAAQ,GAAKhO,EACpDkN,EAAKG,EAAgB,CAACgB,EAASC,GAAU1G,EAAMsB,eAGrD,OAFAtB,EAAM2G,2BACF3G,EAAM2G,0BAA0B,CAAEvO,UAC/BwO,OAAOC,OAAOD,OAAOC,OAAOD,OAAOC,OAAO,GAAI1M,GAAQ+K,GAAe,CAAEE,QAASE,EAAGwB,QAASxB,KAAIhL,MAAOlC,EAAM2O,WAAa,QAGnIR,EAAUnO,IACZ4N,GAAI,CAAC7L,EAAO6F,KACR,MAAMmG,EAAU,YAAa/N,EAG7B,GAAI+N,GAAW/N,EAAMgO,QAAQlD,OAAS,EAClC,OAAO/I,EAGX,GAAI/B,EAAM2O,UAAY5M,EAAMG,MAAQ0F,EAAMuB,cACtC,OAAOpH,EAAMkL,QAAUuB,OAAOC,OAAOD,OAAOC,OAAO,GAAI1M,GAAQ,CAAEkL,SAAS,IAAWlL,EAEzF,MAAM,QAAEsM,EAAO,QAAEC,GAAYP,EAAU/N,EAAMgO,QAAQ,GAAKhO,GACnDyD,EAAGO,GAAKqJ,EAAgB,CAACgB,EAASC,GAAU1G,EAAMsB,eACnDL,EAASpF,EAAI1B,EAAMmL,GAAG,GACtB0B,EAAS5K,EAAIjC,EAAMmL,GAAG,GACtB2B,EAAOzJ,KAAKC,IAAIwD,GAChBiG,EAAO1J,KAAKC,IAAIuJ,GAChB/M,GAAQ7B,EAAM2O,WAAa,GAAK5M,EAAMG,MACtC6M,EAAW3J,KAAK4J,KAAKH,EAAOA,EAAOC,EAAOA,IAASjN,GAAQ,GAC3DoN,EAAO,CAACpG,GAAUhH,GAAQ,GAAI+M,GAAU/M,GAAQ,IAChD+G,EA5DlB,SAAsBiG,EAAMC,EAAMjG,EAAQ+F,GACtC,OAAIC,EAAOC,EACHjG,EAAS,EA5BP,QADD,OAkCA+F,EAAS,EA/BT,OADF,KAqFaM,CAAaL,EAAMC,EAAMjG,EAAQ+F,GAEvC5M,EAA+B,kBAAhB4F,EAAM5F,MACrB4F,EAAM5F,MACN4F,EAAM5F,MAAM4G,EAAIuG,gBACdtC,EAAa7K,MACrB,GAAI6M,EAAO7M,GAAS8M,EAAO9M,IAAUD,EAAMkL,QACvC,OAAOlL,EACX,MAAMqN,EAAY,CACdP,OACAC,OACAjG,SACA+F,SACAhG,MACA5I,QACA+M,MAAOhL,EAAMgL,MACbC,QAASjL,EAAMiL,QACf+B,WACAE,QAGJG,EAAUrC,OAASnF,EAAMyH,cAAgBzH,EAAMyH,aAAaD,GAE5DxH,EAAMe,WAAaf,EAAMe,UAAUyG,GAGnC,IAAIE,GAAsB,EAY1B,OAXI1H,EAAMe,WACNf,EAAMa,UACNb,EAAM,WAAWgB,QACjB0G,GAAsB,GAEtBA,GACA1H,EAAMmB,sBACNnB,EAAMoB,YACNhJ,EAAMuP,YACNvP,EAAMwP,iBAEHhB,OAAOC,OAAOD,OAAOC,OAAO,GAAI1M,GAAQ,CAE3CgL,OAAO,EAAOqC,YAAWnC,SAAS,QAGxCwC,EAASzP,IACX4N,GAAI,CAAC7L,EAAO6F,KACR,IAAIwH,EACJ,GAAIrN,EAAMkL,SAAWlL,EAAMqN,WAEvB,GAAIpP,EAAM2O,UAAY5M,EAAMG,MAAQ0F,EAAMuB,cAAe,CACrDiG,EAAYZ,OAAOC,OAAOD,OAAOC,OAAO,GAAI1M,EAAMqN,WAAY,CAAEpP,UAChE4H,EAAMa,UAAYb,EAAMa,SAAS2G,GACjC,MAAMM,EAAc9H,EAAM,WAAWwH,EAAUxG,OAC/C8G,GAAeA,EAAYN,SAI/BxH,EAAM+H,OAAS/H,EAAM+H,MAAM,CAAE3P,UAGjC,OADA4H,EAAMgI,uBAAyBhI,EAAMgI,sBAAsB,CAAE5P,UACtDwO,OAAOC,OAAOD,OAAOC,OAAOD,OAAOC,OAAO,GAAI1M,GAAQ+K,GAAe,CAAEsC,kBAQhFhB,EAAQyB,IAHV5B,SAAS6B,oBAAoB3C,EAAWgB,GACxCF,SAAS6B,oBAAoB1C,EAASgB,GAItCqB,EAAMI,IAcJE,EAAc,CAACC,EAAIpI,KACrB,IAAIqI,EAAU,OACd,GAAID,GAAMA,EAAG9B,iBAAkB,CAC3B,MAAMgC,EAAc1B,OAAOC,OAAOD,OAAOC,OAAO,GAAI5B,EAAaxD,mBAAoBzB,EAAMyB,mBAErF8G,EAAM,CACR,CAtJG,aAsJUrC,EAASoC,GAEtB,CAzJE,YA2JE/B,EACAK,OAAOC,OAAOD,OAAOC,OAAO,GAAIyB,GAAetI,EAAMmB,qBAAuB,CAAEO,SAAS,GAAU,KAErG,CA/JC,WA+JUmG,EAAOS,IAEtBC,EAAIC,SAAQ,EAAEP,EAAGQ,EAAGC,KAAON,EAAG9B,iBAAiB2B,EAAGQ,EAAGC,KAErDL,EAAU,IAAME,EAAIC,SAAQ,EAAEP,EAAGQ,KAAOL,EAAGF,oBAAoBD,EAAGQ,KAEtE,OAAOJ,GA0BLM,EAAS,CACX/G,IAzBWwG,IAGA,OAAPA,GAEJpC,GAAI,CAAC7L,EAAO6F,KAER,GAAI7F,EAAMiO,KAAOA,EACb,OAAOjO,EACX,MAAMyO,EAAW,GAWjB,OATIzO,EAAMiO,IAAMjO,EAAMiO,KAAOA,GAAMjO,EAAM0O,eACrC1O,EAAM0O,eACND,EAASC,kBAAe,GAGxB7I,EAAMoB,YAAcgH,IACpBQ,EAASC,aAAeV,EAAYC,EAAIpI,IAGrC4G,OAAOC,OAAOD,OAAOC,OAAOD,OAAOC,OAAO,GAAI1M,GAAQ,CAAEiO,OAAOQ,QAW9E,OAHI3C,EAAa5E,aACbsH,EAAOG,YAAc5C,GAElB,CAACyC,EAAQR,GAwBpB,SAASvH,EAAamI,GAClB,MAAM,WAAE1H,GAAe0H,EACjBC,EAAiB,SAAapC,OAAOC,OAAO,GAAI3B,IAChD+D,EAAiB,SAAarC,OAAOC,OAAO,GAAI5B,IAEhDiE,EAAgB,SAAatC,OAAOC,OAAO,GAAIoC,EAAezO,UAKpE,IAAI2O,EACJ,IAAKA,KALLD,EAAc1O,QAAUoM,OAAOC,OAAO,GAAIoC,EAAezO,SAEzDyO,EAAezO,QAAUoM,OAAOC,OAAOD,OAAOC,OAAO,GAAI5B,GAAe8D,GAGrD9D,OAC4B,IAAvCgE,EAAezO,QAAQ2O,KACvBF,EAAezO,QAAQ2O,GAAclE,EAAakE,IAG1D,MAAOC,EAAUjB,GAAe,WAAc,IAAMpC,GAAasD,GAAiBL,EAAexO,QAAU6O,EAAYL,EAAexO,QAASyO,EAAezO,UAAW,CAAE6G,gBAAe,CAACA,IAE3L,OADA2H,EAAexO,QAvCnB,SAA8BL,EAAO6F,EAAOkJ,EAAef,GAEvD,OAAKnI,EAAMoB,YAAejH,EAAMiO,GAO3BjO,EAAM0O,aAMP7I,EAAMmB,uBAAyB+H,EAAc/H,sBAC7CnB,EAAMyB,kBAAkBC,UAAYwH,EAAczH,kBAAkBC,SACpEvH,EAAM0O,eACCjC,OAAOC,OAAOD,OAAOC,OAAO,GAAI1M,GAAQ,CAAE0O,aAAcV,EAAYhO,EAAMiO,GAAIpI,MAElF7F,EAVIyM,OAAOC,OAAOD,OAAOC,OAAO,GAAI1M,GAAQ,CAAE0O,aAAcV,EAAYhO,EAAMiO,GAAIpI,MAPjF7F,EAAM0O,cACN1O,EAAM0O,eAEHjC,OAAOC,OAAOD,OAAOC,OAAO,GAAI1M,GAAQ,CAAE0O,kBAAcS,KAiC1CC,CAAqBP,EAAexO,QAASyO,EAAezO,QAAS0O,EAAc1O,QAAS2N,GAC9GiB","sources":["webpack://_N_E/./src/helpers/hooks/useAnaliticsSender.ts","webpack://_N_E/../../packages/shared/src/hooks/useOnceExecute.ts","webpack://_N_E/../../packages/ui-react/src/components/List/UnorderedList.tsx","webpack://_N_E/../../packages/ui-react/src/components/svg/call/CallCalling.tsx","webpack://_N_E/../../packages/shared/src/hooks/useCompletionAnimation.ts","webpack://_N_E/../../packages/ui-react/src/components/MovingBar/constants.ts","webpack://_N_E/../../packages/ui-react/src/components/MovingBar/helpers/buildBaseFigure.ts","webpack://_N_E/../../packages/ui-react/src/components/MovingBar/helpers/buildOverflowFigure.ts","webpack://_N_E/../../packages/ui-react/src/components/MovingBar/helpers/getAreasOfDots.ts","webpack://_N_E/../../packages/ui-react/src/components/MovingBar/helpers/getDotProps.ts","webpack://_N_E/../../packages/ui-react/src/components/MovingBar/MovingBar.tsx","webpack://_N_E/../../packages/ui-react/src/components/MovingBar/AnimateMovingBar.tsx","webpack://_N_E/../../packages/ui-react/src/organisms/SpeedLine/styled.tsx","webpack://_N_E/../../packages/ui-react/src/organisms/SpeedLine/BaseSpeedLine.tsx","webpack://_N_E/../../packages/ui-react/src/organisms/SpeedLine/SpeedLineWithDescription.styled.tsx","webpack://_N_E/../../packages/ui-react/src/organisms/SpeedLine/SpeedLineWithDescription.tsx","webpack://_N_E/../../node_modules/react-swipeable/es/index.js"],"sourcesContent":["\nimport { useCallback } from 'react';\n\nimport { dataLayerPush } from '@r1-frontend/analytics/dataLayerPush';\n\nimport { EVENTS } from '@r1-frontend/shared/constants/analytics';\nimport { isClientSide } from '@r1-frontend/shared/helpers/ssr';\n\nconst analiticsSender = (category: string, action: string, label?: string) => {\n isClientSide() && dataLayerPush({\n event: EVENTS.UAevent,\n category,\n action,\n label,\n });\n};\n\n/**\n * Возвращает функцию для отправки аналитики\n */\nexport const useAnalyticsSender = (category: string) => {\n return useCallback((action: string, label?: string): void => {\n analiticsSender(category, action, label);\n }, [category]);\n};\n\n/**\n * Возвращает функцию для отправки аналитики, без useCallback\n */\nexport const getAnalyticsSender = (category: string) => {\n return (action: string, label?: string): void => {\n analiticsSender(category, action, label);\n };\n};\n","import { useCallback, useState } from 'react';\n\n/**\n * Вызывает функцию callBack не более одного раза.\n * Использование: отправка события аналитики при начале редактирования.\n */\n// todo: Перенести в shared\nexport const useOnceExecute = (callBack: () => void): () => void => {\n const [wasCalled, setWasCalled] = useState(false);\n\n return useCallback(() => {\n !wasCalled && setWasCalled((wasCalled) => {\n if (!wasCalled) {\n callBack();\n }\n\n return true;\n });\n }, [wasCalled, callBack]);\n};\n","import styled from 'styled-components';\n\nimport { wideBreakpoints } from '@r1-frontend/ui-react/components/layouts/wideContainer';\nimport { Paragraph4 } from '@r1-frontend/ui-react/components/typography/paragraph';\nimport { COLORS } from '@r1-frontend/ui-react/tokens/colors';\n\nconst size = {\n mobile: 6,\n desktop: 8,\n padding: 8,\n};\n\nconst UnorderedList = styled.ul<{ $color?: COLORS }>`\n list-style: none;\n margin: 0;\n padding: 0;\n\n & li {\n position: relative;\n padding-left: ${size.mobile + size.padding}px;\n padding-bottom: 4px;\n\n @media (min-width: ${wideBreakpoints.mobile}) {\n padding-left: ${size.desktop + size.padding}px;\n }\n }\n \n & li:last-child {\n padding-bottom: 0;\n }\n \n ${Paragraph4} {\n color: ${({ $color = COLORS.TextSecondary }) => $color};\n }\n\n & li::before {\n display: inline-block;\n content: '';\n\n width: ${size.mobile}px;\n height: ${size.mobile}px;\n background-color: ${COLORS.Brand_Blue};\n border-radius: 50%;\n margin-right: 8px;\n \n position: absolute;\n top: 0.5em;\n left: 0;\n\n @media (min-width: ${wideBreakpoints.mobile}) {\n width: ${size.desktop}px;\n height: ${size.desktop}px;\n }\n }\n`;\n\nexport default UnorderedList;\n","import { createSvg } from '@r1-frontend/ui-react/components/svg/createSvg';\n\nconst CallCalling = (\n {\n strokeWidth = 1.5,\n },\n): JSX.Element => {\n return (\n <>\n \n \n \n \n \n >\n );\n};\n\nexport default createSvg(\n CallCalling,\n 'call-calling',\n);\n","import { useCallback, useEffect, useRef, useState } from 'react';\n\nexport type TUseAnimationFrameArgs = {\n callback: (delta: number) => void,\n onEndCallback: () => void,\n duration: number,\n timingFunction?: (time: number) => number,\n}\n\nexport type TUseAnimationFrameState = {\n state: 'waiting' | 'process' | 'start',\n delta: number,\n}\n\n/**\n * @link https://javascript.info/js-animation\n */\nconst useCompletionAnimation = (\n {\n callback,\n onEndCallback,\n timingFunction = (time: number) => time,\n duration,\n }: TUseAnimationFrameArgs,\n) => {\n const [state, setState] = useState({\n state: 'waiting',\n delta: 0,\n });\n const start = useCallback(() => {\n startTimeRef.current = performance.now();\n setState(prev => ({ ...prev, state: 'start' }));\n }, []);\n const rafRef = useRef(0);\n const startTimeRef = useRef(0);\n\n const loop: FrameRequestCallback = (time: number) => {\n let fraction = (time - startTimeRef.current) / duration;\n if (fraction > 1) {\n fraction = 1;\n }\n\n const delta = timingFunction(fraction);\n\n setState(prev => ({ ...prev, delta }));\n callback(delta);\n\n if (fraction < 1) {\n rafRef.current = requestAnimationFrame(loop);\n } else {\n startTimeRef.current = 0;\n setState(prev => ({ ...prev, state: 'waiting' }));\n }\n };\n\n useEffect(() => {\n if (state.state === 'process') {\n rafRef.current = requestAnimationFrame(loop);\n return () => cancelAnimationFrame(rafRef.current);\n }\n\n if (state.state === 'start') {\n setState(prev => ({ ...prev, state: 'process' }));\n }\n\n if (state.state === 'waiting') {\n onEndCallback();\n }\n }, [state]);\n\n return {\n start,\n ...state,\n };\n};\n\nexport default useCompletionAnimation;\n","\n// Curve step for the left (front) and the right (back) side\nexport const curves = {\n front: -2.7,\n back: 17,\n};\n\nexport const controlElementInnerRadius = 8;\nexport const controlElementOuterRadius = controlElementInnerRadius * 1.75;\nexport const halfViewBoxHeight = controlElementOuterRadius;\nexport const viewBoxHeight = controlElementOuterRadius * 2;\nexport const firstDotIndent = 6;\n\nexport const indentFromFirstDotForLeftPointX = 2.5;\nexport const indentFromMiddleForLeftPointY = 2.28;\nexport const indentFromTopForRightPointY = 2.3;\n\nexport const additionalShiftForClick = .05;\n","import { curves } from '../constants';\n\nimport { TPolygonDotsShapes } from './../types';\n\nconst addcl = (point: number): number => point + curves.back;\nconst remcl = (point: number): number => point + curves.front;\n\nconst buildBaseFigure = (d: TPolygonDotsShapes) => {\n const result = [];\n\n // start point\n result.push(`M${d.left.x} ${d.left.top}`);\n // line from the start point to the right top point\n result.push(`L${d.right.x} ${d.right.top}`);\n // curve from the top right point to the right bottom point\n result.push(`C${addcl(d.right.x)} ${d.right.top} ${addcl(d.right.x)} ${d.right.bottom} ${d.right.x} ${d.right.bottom}`);\n // line from the right bottom point to the left bottom point\n result.push(`L${d.left.x} ${d.left.bottom}`);\n // curve from the left bottom point to the start point\n result.push(`C${remcl(d.left.x)} ${d.left.bottom} ${remcl(d.left.x)} ${d.left.top} ${d.left.x} ${d.left.top}`);\n\n return result;\n};\n\nexport default buildBaseFigure;\n","import buildBaseFigure from '@r1-frontend/ui-react/components/MovingBar/helpers/buildBaseFigure';\n\nimport { PointCoordinates, TPolygonDotsShapes, TwoPointCoords } from '../types';\n\nconst calculateOverflowEndPoint = (start: PointCoordinates, end: PointCoordinates, distance: number): PointCoordinates => {\n return {\n x: start.x + (end.x - start.x) * distance,\n y: start.y + (end.y - start.y) * distance,\n };\n};\nconst buildOverflowFigure = (d: TPolygonDotsShapes, distance: number) => {\n const top: TwoPointCoords = { start: { x: d.left.x, y: d.left.top }, end: { x: d.right.x, y: d.right.top } };\n const bot: TwoPointCoords = { start: { x: d.left.x, y: d.left.bottom }, end: { x: d.right.x, y: d.right.bottom } };\n\n const t = calculateOverflowEndPoint(top.start, top.end, distance);\n const b = calculateOverflowEndPoint(bot.start, bot.end, distance);\n\n const result = buildBaseFigure(d);\n result[1] = `L${t.x} ${t.y}`;\n result[2] = `L${b.x} ${b.y}`;\n\n return result;\n};\n\nexport default buildOverflowFigure;\n","const getAreasOfDots = (startPos: number, endPos: number, height: number, dotsCount: number) => {\n const areas = dotsCount;\n const width = endPos - startPos;\n const area = width / (areas - 1);\n\n return [...Array(areas)].map((_, idx) => (\n {\n x: idx * area + startPos - area * .55,\n y: 0,\n width: area,\n height,\n }\n ));\n};\n\nexport default getAreasOfDots;\n","const getDotProps = (startPos: number, endPos: number, dotsCount: number, dotMaxRadius: number) => (currentDot: number): {\n position: number,\n radius: number,\n} => {\n // radius ratio, 8 max between 1 min. you could see design pattern ;-)\n const dotMinRadius = dotMaxRadius / 8;\n // difference between the max and min radius\n const radiusDiff = dotMaxRadius - dotMinRadius;\n const width = Math.abs(endPos - startPos);\n const part = width / (dotsCount - 1);\n const position = part * currentDot + startPos;\n\n return {\n position: position,\n radius: radiusDiff * (position / width) + dotMinRadius,\n };\n};\n\nexport default getDotProps;\n","import { SyntheticEvent, useMemo } from 'react';\nimport { SwipeableHandlers } from 'react-swipeable';\n\nimport buildOverflowFigure from '@r1-frontend/ui-react/components/MovingBar/helpers/buildOverflowFigure';\nimport getAreasOfDots from '@r1-frontend/ui-react/components/MovingBar/helpers/getAreasOfDots';\nimport { TPolygonDotsShapes } from '@r1-frontend/ui-react/components/MovingBar/types';\nimport { COLORS } from '@r1-frontend/ui-react/tokens/colors';\nimport { hex2rgb } from '@r1-frontend/shared/helpers/hex2rgb';\n\nimport buildBaseFigure from './helpers/buildBaseFigure';\nimport getDotProps from './helpers/getDotProps';\nimport {\n controlElementInnerRadius,\n controlElementOuterRadius,\n curves,\n firstDotIndent, halfViewBoxHeight,\n indentFromFirstDotForLeftPointX, indentFromMiddleForLeftPointY,\n indentFromTopForRightPointY, viewBoxHeight,\n} from './constants';\n\ntype TMovingBarControlElement = {\n useControlElement?: never,\n distance?: never,\n} | {\n useControlElement: boolean,\n distance: number,\n}\n\nexport type TMovingBarProps = {\n onDotClick?: (dotIdx: number) => (e: SyntheticEvent) => void,\n barMainBg?: COLORS,\n barOverflowBg?: COLORS,\n controlElInnerBg?: COLORS,\n controlElOuterBg?: COLORS,\n viewBoxWidth?: number,\n dotsCount?: number,\n dotBg?: COLORS,\n\n onSwipeHandlers?: SwipeableHandlers,\n\n debugMode?: boolean,\n}\n\nconst MovingBar = (\n {\n onDotClick = () => () => true,\n barMainBg = COLORS.Outline_Light,\n barOverflowBg = COLORS.Locked,\n\n dotsCount = 0,\n dotBg = COLORS.Disabled,\n\n controlElInnerBg = COLORS.BgMain,\n controlElOuterBg = COLORS.Logo,\n viewBoxWidth = 250,\n distance = 0,\n\n onSwipeHandlers = {} as SwipeableHandlers,\n\n useControlElement = false,\n debugMode = false,\n }: TMovingBarProps & TMovingBarControlElement,\n): JSX.Element => {\n if (distance > 1 || distance < 0) {\n throw new Error(`@r1-frontend/ui-react. The MovingBar component Error. The \"distance\" argument must be in float range from 0 to 1. Incoming was ${distance}`);\n }\n\n if (dotsCount && dotsCount !== 0 && dotsCount < 2) {\n throw new Error(`@r1-frontend/ui-react. The MovingBar component Error. The \"dotsCount\" argument must be greater than 1 or be 0. Incoming was ${dotsCount}`);\n }\n\n /** polygonDots **/\n const pd: TPolygonDotsShapes = {\n left: {\n x: controlElementOuterRadius - firstDotIndent + indentFromFirstDotForLeftPointX, // отступ от центра первой точки до края начала скругления\n top: halfViewBoxHeight - indentFromMiddleForLeftPointY, // подобрано опытным путем\n bottom: halfViewBoxHeight + indentFromMiddleForLeftPointY, // подобрано опытным путем\n },\n right: {\n x: viewBoxWidth - curves.back / 1.2, // отступ от правой границы\n top: indentFromTopForRightPointY,\n bottom: viewBoxHeight - indentFromTopForRightPointY,\n },\n };\n\n const getDotPropsFn = useMemo(\n () => getDotProps(controlElementOuterRadius, pd.right.x, dotsCount, controlElementInnerRadius),\n [controlElementInnerRadius, controlElementOuterRadius, pd.right.x, dotsCount],\n );\n\n const areasOfDots = useMemo(\n () => getAreasOfDots(pd.left.x, pd.right.x, viewBoxHeight, dotsCount),\n [pd.left.x, pd.right.x, viewBoxHeight, dotsCount],\n );\n\n return (\n \n );\n};\nexport default MovingBar;\n","import React, { useEffect, useRef, useState } from 'react';\nimport { useSwipeable } from 'react-swipeable';\n\nimport useCompletionAnimation from '@r1-frontend/shared/hooks/useCompletionAnimation';\n\nimport MovingBar, { TMovingBarProps } from './MovingBar';\n\nconst AnimateMovingBar = (\n {\n viewBoxWidth = 500,\n dotsCount,\n startDot = 0,\n onDotSelected = () => null,\n ...props\n }: Omit & { dotsCount: number, startDot?: number, onDotSelected?: (dot: number) => void },\n): JSX.Element => {\n if (dotsCount < 2) {\n throw new Error('The MovingBar component Error. The \"dotsCount\" argument must be greater than 1');\n }\n\n if (startDot > dotsCount) {\n throw new Error('The MovingBar component Error. The \"selectedDot\" argument value can not be greater than the \"dotsCount\" argument');\n }\n\n const wrapperRef = useRef(null);\n\n const [distance, setDistance] = useState({\n start: 0,\n current: 0,\n needToWalk: 0,\n stepWidth: 1 / (dotsCount - 1),\n });\n\n const animation = useCompletionAnimation({\n duration: 150,\n timingFunction: timeFraction => 1 - Math.sin(Math.acos(timeFraction)),\n callback: (delta) => {\n setDistance(prev => ({ ...prev, current: prev.start + (prev.needToWalk - prev.start) * delta }));\n },\n onEndCallback: () => {\n setDistance(prev => ({ ...prev, start: prev.current }));\n onDotSelected(Math.round((dotsCount - 1) * distance.current));\n },\n });\n const swipeHandlers = useSwipeable({\n onSwiped: () => {\n setDistance(prev => ({ ...prev, start: prev.current }));\n // this lifehack needed for delay call of animation before processing the setDistance\n setTimeout(animation.start);\n },\n onSwiping: ({ dir, deltaX }) => {\n if (dir !== 'Left' && dir !== 'Right') {\n return;\n }\n\n let dist = distance.start + (deltaX / viewBoxWidth);\n\n if (dist > 1) {\n dist = 1;\n }\n\n if (dist < 0) {\n dist = 0;\n }\n\n setDistance(prev => ({ ...prev, current: dist, needToWalk: Math.round(prev.current / prev.stepWidth) * prev.stepWidth }));\n },\n // delta: 10, // min distance(px) before a swipe starts. *See Notes*\n preventScrollOnSwipe: true, // prevents scroll during swipe (*See Details*)\n trackTouch: true, // track touch input\n trackMouse: true, // track mouse input\n rotationAngle: 0, // set a rotation angle\n swipeDuration: Infinity, // allowable duration of a swipe (ms). *See Notes*\n touchEventOptions: { passive: true }, // options for touch listeners (*See Details*)\n });\n\n useEffect(() => {\n if (startDot >= 0) {\n setDistance(prev => ({\n ...prev,\n start: startDot / (dotsCount - 1),\n current: startDot / (dotsCount - 1),\n stepWidth: 1 / (dotsCount - 1),\n }));\n }\n }, [wrapperRef, viewBoxWidth, startDot, dotsCount]);\n\n const handleDotClick = (dotNumber: number) => () => {\n setDistance(prev => ({\n ...prev,\n needToWalk: dotNumber / (dotsCount - 1),\n }));\n setTimeout(animation.start);\n };\n\n return (\n \n \n
\n );\n};\n\nexport default AnimateMovingBar;\n","import styled, { css } from 'styled-components';\n\nimport { wideBreakpoints } from '@r1-frontend/ui-react/components/layouts/wideContainer';\nimport { H4, H6 } from '@r1-frontend/ui-react/components/typography/heading';\nimport { Paragraph4 } from '@r1-frontend/ui-react/components/typography/paragraph';\nimport { COLORS } from '@r1-frontend/ui-react/tokens/colors';\n\nexport const Wrapper = styled.div`\n display: block;\n\n ${H4} {\n display: inline-block;\n margin-bottom: 4px;\n }\n\n @media (min-width: ${wideBreakpoints.mobile}) {\n ${H4} {\n display: none;\n }\n }\n`;\n\nexport const HeaderWrapper = styled.div`\n display: flex;\n flex-direction: row;\n flex-wrap: nowrap;\n justify-content: space-between;\n align-items: baseline;\n\n & > p {\n display: inline-block;\n }\n\n @media (min-width: ${wideBreakpoints.mobile}) {\n & > p {\n display: none;\n }\n }\n`;\n\nexport const Clearfix = styled.div`\n display: block;\n zoom: 1;\n\n &:before,\n &:after {\n content: \"\";\n display: table;\n }\n\n &:after {\n clear: both;\n }\n`;\n\nexport const SpeedItem = styled.div`\n display: block;\n width: 80px;\n flex-grow: 1;\n text-align: center;\n\n ${Paragraph4} {\n display: none;\n color: ${COLORS.TextInfo};\n }\n\n @media (min-width: ${wideBreakpoints.mobile}) {\n ${Paragraph4} {\n display: block;\n }\n\n ${H4} {\n margin-bottom: 0;\n }\n }\n`;\n\nexport const Block = styled.div`\n display: block;\n\n margin-top: 4px;\n\n & > ${SpeedItem}:nth-child(1) {\n float: left;\n text-align: left;\n }\n\n & > ${SpeedItem}:nth-child(2) {\n float: right;\n text-align: right;\n }\n\n ${H6} {\n color: ${COLORS.TextInfo};\n }\n\n ${H4} {\n display: none;\n }\n\n @media (min-width: ${wideBreakpoints.mobile}) {\n margin-top: 12px;\n\n ${H6} {\n display: none;\n }\n\n ${H4} {\n display: block;\n }\n }\n`;\n\nexport const SpeedsWrapper = styled.div<{ $isOdd: boolean }>`\n display: flex;\n flex-direction: row;\n flex-wrap: nowrap;\n gap: 0;\n align-items: center;\n justify-content: space-between;\n\n ${({ $isOdd }) => $isOdd\n ? css`\n ${SpeedItem}:nth-child(odd) {\n visibility: hidden;\n }\n `\n : ''\n }\n`;\n","import React, { useEffect, useMemo, useRef, useState } from 'react';\nimport clone from 'lodash/clone';\n\nimport { AnimateMovingBar } from '@r1-frontend/ui-react/components/MovingBar';\nimport { Pre } from '@r1-frontend/ui-react/components/typography/formatting';\nimport { H4, H6 } from '@r1-frontend/ui-react/components/typography/heading';\nimport { Paragraph4 } from '@r1-frontend/ui-react/components/typography/paragraph';\nimport { TArrayTwoOrMore } from '@r1-frontend/shared/types/Array';\n\nimport * as S from './styled';\n\nexport type TBaseSpeedLineItem = {\n id: number | string,\n speed: number | string,\n price?: number | string,\n\n}\nexport type TBaseSpeedLineProps = {\n items: TArrayTwoOrMore,\n startDot?: number,\n onSelect: (indexOfSelectedElement: number) => void,\n width?: number,\n className?: string,\n\n experimentalModeForConstructor?: boolean,\n}\n\nconst BaseSpeedLine = (\n {\n className,\n items,\n onSelect,\n startDot = 0,\n width,\n\n experimentalModeForConstructor = false,\n }: TBaseSpeedLineProps,\n): JSX.Element => {\n const mainRef = useRef(null);\n const [calculatedWidth, setWidth] = useState(0);\n const [selectedDot, setSelectedDot] = useState(startDot);\n if (items.length < 2) {\n throw new Error('@r1-frontend/ui-react. The BaseSpeedLine component Error. The \"items\" argument must contain 2 or more elements');\n }\n\n const { firstItem, lastItem, leftOverItems, dotsCount, firstLastWidth } = useMemo<{\n firstItem: TBaseSpeedLineItem,\n lastItem: TBaseSpeedLineItem,\n leftOverItems: TBaseSpeedLineItem[],\n dotsCount: number,\n firstLastWidth: string,\n }>(() => {\n const clonedItems = clone(items);\n const dots = items.length;\n const percentageWidth = (100 / (dots - 1)) / 2;\n\n return {\n lastItem: clonedItems.splice(-1, 1)[0],\n firstItem: clonedItems.splice(0, 1)[0],\n leftOverItems: clonedItems,\n dotsCount: dots,\n firstLastWidth: dots === 2 ? 'auto' : `${percentageWidth + percentageWidth / 7.5}%`,\n };\n }, [items]);\n\n useEffect(() => {\n if (mainRef !== null && mainRef.current !== null) {\n setWidth(mainRef.current.offsetWidth);\n }\n }, [mainRef]);\n\n useEffect(() => {\n setSelectedDot(startDot);\n }, [startDot, items]);\n\n const handleSelectedDot = (dotNumber: number) => {\n setSelectedDot(dotNumber);\n onSelect(dotNumber);\n };\n\n return (\n \n \n {items[selectedDot]?.speed} Мбит/с
\n \n \n \n \n {firstItem.speed}
\n \n Мбит/с\n
\n {firstItem.speed}
\n \n \n {lastItem.speed}
\n \n Мбит/с\n
\n {lastItem.speed}
\n \n \n {leftOverItems.map(item => \n {item.speed}
\n \n Мбит/с\n
\n {item.speed}
\n )}\n {leftOverItems.length === 0 ? <> > : ''}\n \n \n \n \n );\n};\n\nexport default BaseSpeedLine;\n","import styled from 'styled-components';\n\nimport { wideBreakpoints } from '@r1-frontend/ui-react/components/layouts/wideContainer';\nimport { UnorderedList } from '@r1-frontend/ui-react/components/List';\n\nexport const SpeedLineWithDescriptionWrapper = styled.div`\n display: flex;\n flex-direction: row;\n\n gap: 16px;\n\n & > * {\n width: 100%;\n }\n\n ${UnorderedList} {\n margin-top: 20px;\n }\n\n @media (min-width: ${wideBreakpoints.laptop}) {\n margin-top: 8px;\n }\n`;\n\nexport const HeaderWrapper = styled.div`\n display: flex;\n flex-direction: row;\n flex-wrap: nowrap;\n justify-content: space-between;\n align-items: baseline;\n margin-bottom: 8px;\n \n & > p {\n visibility: hidden;\n }\n \n @media (min-width: ${wideBreakpoints.mobile}) {\n margin-bottom: 12px;\n & > p {\n visibility: visible;\n }\n }\n`;\n","import { ReactNode, useEffect, useState } from 'react';\n\nimport { UnorderedList } from '@r1-frontend/ui-react/components/List';\nimport { H4 } from '@r1-frontend/ui-react/components/typography/heading';\nimport { Paragraph4 } from '@r1-frontend/ui-react/components/typography/paragraph';\nimport { RoundedBlock } from '@r1-frontend/ui-react/experimental/blocks';\nimport BaseSpeedLine, { TBaseSpeedLineItem, TBaseSpeedLineProps } from '@r1-frontend/ui-react/organisms/SpeedLine/BaseSpeedLine';\nimport { TArrayTwoOrMore } from '@r1-frontend/shared/types/Array';\n\nimport * as ST from './SpeedLineWithDescription.styled';\n\nexport type TSpeedLineItemWithDescription = TBaseSpeedLineItem & {\n alias: string,\n title: string,\n descriptionList: string[],\n price: number,\n}\n\nexport type TSpeedLineWithDescription = TBaseSpeedLineProps & {\n items: TArrayTwoOrMore,\n title?: string | ReactNode,\n\n /**\n * This is a forced decision at the designer's request.\n * It is not good, but it has fast implementation.\n * If designers ask about other implementations, we should arrange a meeting. :facepalm:\n *\n * I'm sorry guys, really.\n */\n experimentalModeForConstructor?: boolean,\n}\n\nconst SpeedLineWithDescription = (\n {\n items,\n title = 'Выберите нужную скорость',\n startDot = 0,\n onSelect,\n\n experimentalModeForConstructor = false,\n\n ...props\n }: TSpeedLineWithDescription,\n): JSX.Element => {\n const [selectedItem, setSelectedItem] = useState(startDot);\n\n useEffect(() => {\n setSelectedItem(startDot);\n }, [items]);\n\n const handleOnSelect = (id: number) => {\n setSelectedItem(id);\n onSelect(id);\n };\n\n return (\n \n \n \n {title}
\n \n \n \n {items[selectedItem].descriptionList &&\n items[selectedItem].descriptionList.map(description => (\n \n ))\n }\n \n \n \n );\n};\n\nexport default SpeedLineWithDescription;\n","import * as React from 'react';\n\nconst LEFT = \"Left\";\nconst RIGHT = \"Right\";\nconst UP = \"Up\";\nconst DOWN = \"Down\";\n\n/* global document */\nconst defaultProps = {\n delta: 10,\n preventScrollOnSwipe: false,\n rotationAngle: 0,\n trackMouse: false,\n trackTouch: true,\n swipeDuration: Infinity,\n touchEventOptions: { passive: true },\n};\nconst initialState = {\n first: true,\n initial: [0, 0],\n start: 0,\n swiping: false,\n xy: [0, 0],\n};\nconst mouseMove = \"mousemove\";\nconst mouseUp = \"mouseup\";\nconst touchEnd = \"touchend\";\nconst touchMove = \"touchmove\";\nconst touchStart = \"touchstart\";\nfunction getDirection(absX, absY, deltaX, deltaY) {\n if (absX > absY) {\n if (deltaX > 0) {\n return RIGHT;\n }\n return LEFT;\n }\n else if (deltaY > 0) {\n return DOWN;\n }\n return UP;\n}\nfunction rotateXYByAngle(pos, angle) {\n if (angle === 0)\n return pos;\n const angleInRadians = (Math.PI / 180) * angle;\n const x = pos[0] * Math.cos(angleInRadians) + pos[1] * Math.sin(angleInRadians);\n const y = pos[1] * Math.cos(angleInRadians) - pos[0] * Math.sin(angleInRadians);\n return [x, y];\n}\nfunction getHandlers(set, handlerProps) {\n const onStart = (event) => {\n const isTouch = \"touches\" in event;\n // if more than a single touch don't track, for now...\n if (isTouch && event.touches.length > 1)\n return;\n set((state, props) => {\n // setup mouse listeners on document to track swipe since swipe can leave container\n if (props.trackMouse && !isTouch) {\n document.addEventListener(mouseMove, onMove);\n document.addEventListener(mouseUp, onUp);\n }\n const { clientX, clientY } = isTouch ? event.touches[0] : event;\n const xy = rotateXYByAngle([clientX, clientY], props.rotationAngle);\n props.onTouchStartOrOnMouseDown &&\n props.onTouchStartOrOnMouseDown({ event });\n return Object.assign(Object.assign(Object.assign({}, state), initialState), { initial: xy.slice(), xy, start: event.timeStamp || 0 });\n });\n };\n const onMove = (event) => {\n set((state, props) => {\n const isTouch = \"touches\" in event;\n // Discount a swipe if additional touches are present after\n // a swipe has started.\n if (isTouch && event.touches.length > 1) {\n return state;\n }\n // if swipe has exceeded duration stop tracking\n if (event.timeStamp - state.start > props.swipeDuration) {\n return state.swiping ? Object.assign(Object.assign({}, state), { swiping: false }) : state;\n }\n const { clientX, clientY } = isTouch ? event.touches[0] : event;\n const [x, y] = rotateXYByAngle([clientX, clientY], props.rotationAngle);\n const deltaX = x - state.xy[0];\n const deltaY = y - state.xy[1];\n const absX = Math.abs(deltaX);\n const absY = Math.abs(deltaY);\n const time = (event.timeStamp || 0) - state.start;\n const velocity = Math.sqrt(absX * absX + absY * absY) / (time || 1);\n const vxvy = [deltaX / (time || 1), deltaY / (time || 1)];\n const dir = getDirection(absX, absY, deltaX, deltaY);\n // if swipe is under delta and we have not started to track a swipe: skip update\n const delta = typeof props.delta === \"number\"\n ? props.delta\n : props.delta[dir.toLowerCase()] ||\n defaultProps.delta;\n if (absX < delta && absY < delta && !state.swiping)\n return state;\n const eventData = {\n absX,\n absY,\n deltaX,\n deltaY,\n dir,\n event,\n first: state.first,\n initial: state.initial,\n velocity,\n vxvy,\n };\n // call onSwipeStart if present and is first swipe event\n eventData.first && props.onSwipeStart && props.onSwipeStart(eventData);\n // call onSwiping if present\n props.onSwiping && props.onSwiping(eventData);\n // track if a swipe is cancelable (handler for swiping or swiped(dir) exists)\n // so we can call preventDefault if needed\n let cancelablePageSwipe = false;\n if (props.onSwiping ||\n props.onSwiped ||\n props[`onSwiped${dir}`]) {\n cancelablePageSwipe = true;\n }\n if (cancelablePageSwipe &&\n props.preventScrollOnSwipe &&\n props.trackTouch &&\n event.cancelable) {\n event.preventDefault();\n }\n return Object.assign(Object.assign({}, state), { \n // first is now always false\n first: false, eventData, swiping: true });\n });\n };\n const onEnd = (event) => {\n set((state, props) => {\n let eventData;\n if (state.swiping && state.eventData) {\n // if swipe is less than duration fire swiped callbacks\n if (event.timeStamp - state.start < props.swipeDuration) {\n eventData = Object.assign(Object.assign({}, state.eventData), { event });\n props.onSwiped && props.onSwiped(eventData);\n const onSwipedDir = props[`onSwiped${eventData.dir}`];\n onSwipedDir && onSwipedDir(eventData);\n }\n }\n else {\n props.onTap && props.onTap({ event });\n }\n props.onTouchEndOrOnMouseUp && props.onTouchEndOrOnMouseUp({ event });\n return Object.assign(Object.assign(Object.assign({}, state), initialState), { eventData });\n });\n };\n const cleanUpMouse = () => {\n // safe to just call removeEventListener\n document.removeEventListener(mouseMove, onMove);\n document.removeEventListener(mouseUp, onUp);\n };\n const onUp = (e) => {\n cleanUpMouse();\n onEnd(e);\n };\n /**\n * The value of passive on touchMove depends on `preventScrollOnSwipe`:\n * - true => { passive: false }\n * - false => { passive: true } // Default\n *\n * NOTE: When preventScrollOnSwipe is true, we attempt to call preventDefault to prevent scroll.\n *\n * props.touchEventOptions can also be set for all touch event listeners,\n * but for `touchmove` specifically when `preventScrollOnSwipe` it will\n * supersede and force passive to false.\n *\n */\n const attachTouch = (el, props) => {\n let cleanup = () => { };\n if (el && el.addEventListener) {\n const baseOptions = Object.assign(Object.assign({}, defaultProps.touchEventOptions), props.touchEventOptions);\n // attach touch event listeners and handlers\n const tls = [\n [touchStart, onStart, baseOptions],\n // preventScrollOnSwipe option supersedes touchEventOptions.passive\n [\n touchMove,\n onMove,\n Object.assign(Object.assign({}, baseOptions), (props.preventScrollOnSwipe ? { passive: false } : {})),\n ],\n [touchEnd, onEnd, baseOptions],\n ];\n tls.forEach(([e, h, o]) => el.addEventListener(e, h, o));\n // return properly scoped cleanup method for removing listeners, options not required\n cleanup = () => tls.forEach(([e, h]) => el.removeEventListener(e, h));\n }\n return cleanup;\n };\n const onRef = (el) => {\n // \"inline\" ref functions are called twice on render, once with null then again with DOM element\n // ignore null here\n if (el === null)\n return;\n set((state, props) => {\n // if the same DOM el as previous just return state\n if (state.el === el)\n return state;\n const addState = {};\n // if new DOM el clean up old DOM and reset cleanUpTouch\n if (state.el && state.el !== el && state.cleanUpTouch) {\n state.cleanUpTouch();\n addState.cleanUpTouch = void 0;\n }\n // only attach if we want to track touch\n if (props.trackTouch && el) {\n addState.cleanUpTouch = attachTouch(el, props);\n }\n // store event attached DOM el for comparison, clean up, and re-attachment\n return Object.assign(Object.assign(Object.assign({}, state), { el }), addState);\n });\n };\n // set ref callback to attach touch event listeners\n const output = {\n ref: onRef,\n };\n // if track mouse attach mouse down listener\n if (handlerProps.trackMouse) {\n output.onMouseDown = onStart;\n }\n return [output, attachTouch];\n}\nfunction updateTransientState(state, props, previousProps, attachTouch) {\n // if trackTouch is off or there is no el, then remove handlers if necessary and exit\n if (!props.trackTouch || !state.el) {\n if (state.cleanUpTouch) {\n state.cleanUpTouch();\n }\n return Object.assign(Object.assign({}, state), { cleanUpTouch: undefined });\n }\n // trackTouch is on, so if there are no handlers attached, attach them and exit\n if (!state.cleanUpTouch) {\n return Object.assign(Object.assign({}, state), { cleanUpTouch: attachTouch(state.el, props) });\n }\n // trackTouch is on and handlers are already attached, so if preventScrollOnSwipe changes value,\n // remove and reattach handlers (this is required to update the passive option when attaching\n // the handlers)\n if (props.preventScrollOnSwipe !== previousProps.preventScrollOnSwipe ||\n props.touchEventOptions.passive !== previousProps.touchEventOptions.passive) {\n state.cleanUpTouch();\n return Object.assign(Object.assign({}, state), { cleanUpTouch: attachTouch(state.el, props) });\n }\n return state;\n}\nfunction useSwipeable(options) {\n const { trackMouse } = options;\n const transientState = React.useRef(Object.assign({}, initialState));\n const transientProps = React.useRef(Object.assign({}, defaultProps));\n // track previous rendered props\n const previousProps = React.useRef(Object.assign({}, transientProps.current));\n previousProps.current = Object.assign({}, transientProps.current);\n // update current render props & defaults\n transientProps.current = Object.assign(Object.assign({}, defaultProps), options);\n // Force defaults for config properties\n let defaultKey;\n for (defaultKey in defaultProps) {\n if (transientProps.current[defaultKey] === void 0) {\n transientProps.current[defaultKey] = defaultProps[defaultKey];\n }\n }\n const [handlers, attachTouch] = React.useMemo(() => getHandlers((stateSetter) => (transientState.current = stateSetter(transientState.current, transientProps.current)), { trackMouse }), [trackMouse]);\n transientState.current = updateTransientState(transientState.current, transientProps.current, previousProps.current, attachTouch);\n return handlers;\n}\n\nexport { DOWN, LEFT, RIGHT, UP, useSwipeable };\n//# sourceMappingURL=index.js.map\n"],"names":["analiticsSender","category","action","label","isClientSide","dataLayerPush","event","EVENTS","useAnalyticsSender","useCallback","getAnalyticsSender","useOnceExecute","callBack","useState","wasCalled","setWasCalled","size","UnorderedList","styled","wideBreakpoints","Paragraph4","$color","COLORS","createSvg","strokeWidth","g","id","path","d","strokeMiterlimit","strokeLinecap","strokeLinejoin","callback","onEndCallback","timingFunction","time","duration","state","delta","setState","start","startTimeRef","current","performance","now","prev","rafRef","useRef","loop","fraction","requestAnimationFrame","useEffect","cancelAnimationFrame","curves","controlElementOuterRadius","controlElementInnerRadius","halfViewBoxHeight","addcl","point","remcl","result","push","left","x","top","right","bottom","calculateOverflowEndPoint","end","distance","y","bot","t","b","buildBaseFigure","startPos","endPos","height","dotsCount","areas","area","Array","map","_","idx","width","dotMaxRadius","currentDot","dotMinRadius","radiusDiff","Math","abs","position","radius","onDotClick","barMainBg","barOverflowBg","dotBg","controlElInnerBg","controlElOuterBg","viewBoxWidth","onSwipeHandlers","useControlElement","debugMode","Error","pd","viewBoxHeight","getDotPropsFn","useMemo","getDotProps","areasOfDots","getAreasOfDots","svg","viewBox","style","cursor","join","stroke","fill","circle","data-test","cx","cy","r","buildOverflowFigure","hex2rgb","rect","onClick","startDot","onDotSelected","props","wrapperRef","needToWalk","stepWidth","setDistance","animation","useCompletionAnimation","timeFraction","sin","acos","round","swipeHandlers","useSwipeable","onSwiped","setTimeout","onSwiping","dir","deltaX","dist","preventScrollOnSwipe","trackTouch","trackMouse","rotationAngle","swipeDuration","Infinity","touchEventOptions","passive","div","ref","MovingBar","dotNumber","Wrapper","H4","HeaderWrapper","Clearfix","SpeedItem","Block","H6","SpeedsWrapper","$isOdd","css","items","className","onSelect","experimentalModeForConstructor","mainRef","calculatedWidth","setWidth","selectedDot","setSelectedDot","length","clonedItems","clone","dots","percentageWidth","lastItem","splice","firstItem","leftOverItems","firstLastWidth","offsetWidth","S","as","$withIndent","speed","AnimateMovingBar","Pre","$smaller","Boolean","item","SpeedLineWithDescriptionWrapper","title","selectedItem","setSelectedItem","ST","RoundedBlock","BaseSpeedLine","descriptionList","description","dangerouslySetInnerHTML","__html","defaultProps","initialState","first","initial","swiping","xy","mouseMove","mouseUp","rotateXYByAngle","pos","angle","angleInRadians","PI","cos","getHandlers","set","handlerProps","onStart","isTouch","touches","document","addEventListener","onMove","onUp","clientX","clientY","onTouchStartOrOnMouseDown","Object","assign","slice","timeStamp","deltaY","absX","absY","velocity","sqrt","vxvy","getDirection","toLowerCase","eventData","onSwipeStart","cancelablePageSwipe","cancelable","preventDefault","onEnd","onSwipedDir","onTap","onTouchEndOrOnMouseUp","e","removeEventListener","attachTouch","el","cleanup","baseOptions","tls","forEach","h","o","output","addState","cleanUpTouch","onMouseDown","options","transientState","transientProps","previousProps","defaultKey","handlers","stateSetter","undefined","updateTransientState"],"sourceRoot":""}