{"version":3,"file":"static/js/496.3bbd4f5f.chunk.js","mappings":"iIAAA,SAASA,EAAEC,GAAG,IAAIC,EAAEC,EAAEC,EAAE,GAAG,GAAG,iBAAiBH,GAAG,iBAAiBA,EAAEG,GAAGH,OAAO,GAAG,iBAAiBA,EAAE,GAAGI,MAAMC,QAAQL,GAAG,CAAC,IAAIM,EAAEN,EAAEO,OAAO,IAAIN,EAAE,EAAEA,EAAEK,EAAEL,IAAID,EAAEC,KAAKC,EAAEH,EAAEC,EAAEC,OAAOE,IAAIA,GAAG,KAAKA,GAAGD,EAAE,MAAM,IAAIA,KAAKF,EAAEA,EAAEE,KAAKC,IAAIA,GAAG,KAAKA,GAAGD,GAAG,OAAOC,CAAC,CAAgI,QAAxH,WAAgB,IAAI,IAAIH,EAAEC,EAAEC,EAAE,EAAEC,EAAE,GAAGG,EAAEE,UAAUD,OAAOL,EAAEI,EAAEJ,KAAKF,EAAEQ,UAAUN,MAAMD,EAAEF,EAAEC,MAAMG,IAAIA,GAAG,KAAKA,GAAGF,GAAG,OAAOE,CAAC,GCC/W,SAAqBF,GACnB,IAAKA,GAA2B,oBAAbQ,SAA0B,OAE7C,IAAMH,EAAOG,SAASC,MAAQD,SAASE,qBAAqB,QAAQ,GAC9DX,EAAQS,SAASG,cAAc,SACrCZ,EAAMa,KAAO,WAEVP,EAAKQ,WACNR,EAAKS,aAAaf,EAAOM,EAAKQ,YAE9BR,EAAKU,YAAYhB,GAGhBA,EAAMiB,WACPjB,EAAMiB,WAAWC,QAAUjB,EAE3BD,EAAMgB,YAAYP,SAASU,eAAelB,GAE9C,CACAmB,CAAY,g1bCjBL,IAAMC,EAASpB,GAAqC,iBAANA,IAAmBqB,MAAMrB,GAEjEsB,EAAStB,GAAqC,iBAANA,EAExCuB,EAAQvB,GAAuC,mBAANA,EAEzCwB,EAAQxB,GAAwBsB,EAAMtB,IAAMoB,EAAMpB,GAElDyB,EAAkBzB,GAAYsB,EAAMtB,IAAMuB,EAAKvB,GAAKA,EAAI,KAExD0B,EAAoBC,CAAC3B,EAAiCK,KAC9C,IAAnBL,GAA6BoB,EAAMpB,IAAmBA,EAAiB,EAAKA,EAAiBK,EAElFuB,EAAoB5B,IAC/B6B,EAAAA,EAAAA,gBAAe7B,IAAYsB,EAAMtB,IAAYuB,EAAKvB,IAAYoB,EAAMpB,GCuC/D,SAAS8B,EAAAC,GAMO,IALrBC,MAAAhC,EACAiC,KAAA5B,EACA6B,eAAAnC,GAAiB,EACjBoC,SAAArC,GAAW,EACXsC,iBAAAC,EAAA,KACFN,EACE,OAAO,SAAAO,GAQkB,IAPvBC,SAAAC,EACAC,SAAAC,EACAC,sBAAAC,EACAC,KAAAC,EACAC,QAAAC,EACAC,KAAAC,EACAC,UAAAC,GACFd,EACQe,EAAiBtD,EAAiB,GAAGC,MAAU0C,IAAa1C,EAC5DsD,EAAgBvD,EAAiB,GAAGM,MAASqC,IAAarC,EAC1DkD,GAAgBC,EAAAA,EAAAA,QAAO,GAE7B,OAAAC,EAAAA,EAAAA,kBAAgB,KACd,IAAMxD,EAAO+C,EAAQU,QACfC,EAAeN,EAAeO,MAAM,KAEpCC,EAAa3D,IACbA,EAAE4D,SAAWd,EAAQU,UAEzBN,IACAnD,EAAK8D,oBAAoB,eAAgBF,GACzC5D,EAAK8D,oBAAoB,kBAAmBF,GACd,IAA1BN,EAAcG,SAA8C,oBAAXxD,EAAEU,MACrDX,EAAK+D,UAAUC,UAAUN,GAE7B,EAGE1D,EAAK+D,UAAUE,OAAOP,GACtB1D,EAAKkE,iBAAiB,eAAgBN,GACtC5D,EAAKkE,iBAAiB,kBAAmBN,EAI7C,GAAG,KAEHO,EAAAA,EAAAA,YAAU,KACR,IAAMnE,EAAO+C,EAAQU,QAEfC,EAAWU,KACfpE,EAAK8D,oBAAoB,eAAgBJ,GACzC7D,ECpGD,SAAuBE,EAAmBK,GAAwD,IAAtCN,EAAAQ,UAAAD,OAAA,QAAAgE,IAAA/D,UAAA,GAAAA,UAAA,QACzDgE,aAAAzE,EAAc0E,MAAAnC,GAAUrC,EAEhCyE,uBAAsB,KACpBpC,EAAMqC,UAAY,UAClBrC,EAAMsC,OAAS7E,EAAe,KAC9BuC,EAAMuC,WAAa,OAAO7E,MAE1B0E,uBAAsB,KACpBpC,EAAMsC,OAAS,IACftC,EAAMwC,QAAU,IAChBxC,EAAMyC,OAAS,IACfC,WAAW1E,EAAMN,EACnB,GACF,GACF,CDqFmBiF,CAAc/E,EAAM6C,EAAMT,GAAoBS,GAC3D,EAQKI,IAAMN,EAAwBe,KALjCJ,EAAcG,QAAU,EACxBzD,EAAKgF,WAAa,IAAI3B,IACtBrD,EAAKkE,iBAAiB,eAAgBR,IAI1C,GAAG,CAACT,IAEGgC,EAAAA,cAAAA,EAAAA,SAAA,KAAG1C,EACZ,CACF,CEnHO,SAAS2C,EAAYnF,EAAcK,GACxC,MAAO,CACL+E,QAASC,EAAcrF,EAAMoF,QAASpF,EAAMsF,OAC5CC,YAAavF,EAAMsF,MAAMC,YACzBC,GAAIxF,EAAMsF,MAAMG,QAChBC,MAAO1F,EAAMsF,MAAMI,MACnB9E,KAAMZ,EAAMsF,MAAM1E,KAClB+E,KAAM3F,EAAMsF,MAAMK,MAAQ,CAAC,EAC3BC,UAAW5F,EAAMsF,MAAMM,UACvBC,KAAM7F,EAAMsF,MAAMO,KAClBC,OAAQ9F,EAAM+F,cACdC,OAAA3F,EAEJ,CAEO,SAASgF,EAAcrF,EAAkBK,GAA8C,IAA3BN,EAAAQ,UAAAD,OAAA,QAAAgE,IAAA/D,UAAA,IAAAA,UAAA,GACjE,OAAI0F,EAAAA,EAAAA,gBAAejG,KAAasB,EAAMtB,EAAQY,OACrCsF,EAAAA,EAAAA,cAAgClG,EAA8B,CACnEmG,WAAY9F,EAAM8F,WAClBC,WAAY/F,EACZsF,KAAMtF,EAAMsF,KACZU,SAAAtG,IAEOwB,EAAKvB,GACPA,EAAQ,CACbmG,WAAY9F,EAAM8F,WAClBC,WAAY/F,EACZsF,KAAMtF,EAAMsF,KACZU,SAAAtG,IAIGC,CACT,CC0BO,SAASsG,EAAAC,GAYK,IAXnBC,MAAAxG,EACAyG,UAAApG,EACA8F,WAAApG,EACAa,KAAAd,EAAA,UACA4G,KAAArE,EACA4C,UAAA0B,EACAC,mBAAApE,EACAqE,SAAAnE,EACAoE,IAAAlE,EACAK,KAAAH,EACA4C,MAAA1C,GACFuD,EACQrD,EAAWb,GAASG,GAAmC,IAAbE,EAC1CU,EAA6B,CACjC2D,kBAAmB,GAAG/G,MACtBgH,mBAAoB3G,EAAY,UAAY,UAG1CmC,IAAoBY,EAAM6D,UAAY,UAAUvE,MACpD,IAAMW,EAAmB6D,EAAA,yBAEvB1E,EAAA,wEAGA,iCAAiDQ,IACjD,2BAA2ClD,IAC3C,CACE,8BAAiD8C,IAG/CU,EAAa/B,EAAKoF,GACpBA,EAAU,CACRG,IAAAlE,EACAhC,KAAAd,EACAqH,iBAAA9D,IAEF6D,EAAG7D,EAAkBsD,GAKnBpD,EAAiB,CACrB,CAACf,GAAuBE,GAAwB,EAAI,kBAAoB,kBACtEF,GAAuBE,EAAuB,EAC1C,KACA,KACEI,GAAQ/C,GACV,GAKR,OACEqH,EAAAA,cAAC,OAAInC,UAAA,8BAA0D,cAAa/B,GAC1EkE,EAAAA,cAAC,OACCnC,UAAW,4DAA4FjC,6BAAiDlD,MAE1JsH,EAAAA,cAAC,OACCC,KAAK,cACL,cAAanE,EAAW,OAAS,QACjC,aAAW,qBACX+B,UAAW3B,EACXkB,MAAOpB,KACHG,IAIZ,CCnIA,IAAI+D,EAAW,EAEFC,EAAaC,IAAM,GAAGF,ICa5B,SAASG,EACdzH,EACAK,EACAN,GAEA,IAAID,EAAW,EACXuC,EAAa,EACbsE,EAAiB,GACjBnE,EAAoB,GACpBE,EAAQrC,EACNuC,EAAS,IAAI8E,IACb5E,EAAY,IAAI6E,IAOhBzE,EAAS0E,KACbpF,EAAWrC,MAAM0H,KAAKjF,EAAOkF,UAC7BhF,EAAUiF,SAAQC,GAAMA,KAC1B,EAeM1E,EAAiB0E,IAnDzB,IAAA9H,EAAA+H,EAoDI,OAAAA,EAAA,OAAA/H,EAAA8H,EAAE1C,YAAF,EAAApF,EAASgI,UAATD,EAAAE,KAAAjI,EAAmB8H,EAAEjC,eACrBiC,EAAEI,UAAW,CACf,EAEM7E,EAAeyE,IACnB,GAAU,MAANA,EACFpF,EAAOmF,QAAQzE,OACV,CACL,IAAMpD,EAAI0C,EAAOyF,IAAIL,GACjB9H,GAAGoD,EAAcpD,EACvB,CACAgD,GACF,EAOMS,EAAkBqE,IAvE1B,IAAAM,EAAAC,EAwEI,IAAQ9C,QAAAvF,EAASsI,SAAAP,GAAaD,EAAM1C,MAC9BmD,EAAoB,MAAZR,EAEVD,EAAMU,SAAS9F,EAAO+F,OAAOX,EAAMU,SACvCV,EAAMI,UAAW,EAEjBxF,EAAOgG,IAAI1I,EAAS8H,GACpB9E,IACAnD,EAAgBoF,EAAY6C,EAAOS,EAAQ,QAAU,YAEjDA,IAAO,OAAAF,GAAAD,EAAAN,EAAM1C,OAAMuD,SAAZN,EAAAJ,KAAAG,GACb,EAyEA,MAAO,CACL9C,GAAAxF,EACAsF,MAAA5C,EACAoG,QAnIed,IACflF,EAAUoB,IAAI8D,GACP,IAAMlF,EAAU6F,OAAOX,IAkI9Be,OAnHaA,CAACf,EAAY9H,KAC1B0C,EAAOmF,SAAQE,IA9CnB,IAAAQ,GA+CgB,MAANvI,GAAcA,IAAO+H,EAAE3C,MAAMG,WAAS,OAAAgD,EAAAR,EAAEc,SAAFN,EAAAN,KAAAF,EAAWD,GACvD,GACF,EAgHEgB,YAAAzF,EACA0F,OAAArG,EACAsG,WAjGiBA,KACjB7G,GAAcsE,EAAMrG,OACpBqG,EAAQ,EACV,EA+FEwC,WA/EiBA,CAAkBnB,EAA8B9H,KACjE,GAhDwBkJ,KAAgE,IAA7D7D,YAAAyC,EAAavC,QAAAvF,EAASsI,SAAAP,GAASmB,EACpDX,EAAoBT,EAAcA,IAAgBhI,EAAY,IAAPA,EACvDsI,EAAc1F,EAAOyG,IAAInJ,IAAwB,MAAZ+H,EAE3C,OAAOQ,GAAqBH,CAC9B,EA2CMlF,CAAkBlD,GAAU,OAEhC,IAAQuF,QAAAwC,EAASO,SAAAC,EAAU9C,KAAA2C,EAAMI,QAAAH,EAAS/B,MAAA8C,GAAUpJ,EAE9CqJ,EAA4B,MAAZd,EAElBc,GAAelH,IAEnB,IAAMmH,EAAa,IACd9G,EACH8B,MAAO9B,EAAM+G,WACbC,IAAK5J,OACF6J,OAAOC,YAAYD,OAAOE,QAAQ3J,GAAS4J,QAAOC,IAAA,IAAEC,EAAGC,GAACF,EAAA,OAAW,MAALE,CAAS,KAC1ExE,QAAAwC,EACAO,SAAAC,EACA9C,KAAA2C,EACArF,MAAM,EACNgC,UAAWxD,EAAevB,EAAQ+E,WAAavC,EAAMwH,gBACrDC,kBAAmB1I,EAAevB,EAAQiK,mBAAqBzH,EAAMyH,mBACrEC,WAAWlK,EAAQ0F,WAAoBlE,EAAkBxB,EAAQkK,UAAW1H,EAAM0H,WAClFjE,UAAAA,CAAW6D,GACTpH,EAAOyF,IAAIJ,GAAUlC,cAAgBiE,EACrCzG,EAAY0E,EACd,EACAoC,WAAAA,GACE,IAAML,EAAgBpH,EAAOyF,IAAIJ,GAEjC,GAAqB,MAAjB+B,EAQJ,IANAjK,EAAgBoF,EAAY6E,EAAe,YAC3CpH,EAAO+F,OAAOV,GAEd5F,IACIA,EAAa,IAAGA,EAAa,GAE7BsE,EAAMrG,OAAS,EAEjB,YADAqD,EAAegD,EAAM2D,SAIvBpH,GAAO,CACT,GAGFsG,EAAWe,YAAc7H,EAAM6H,aAEH,IAAxBrK,EAAQqK,aAAyB3I,EAAc1B,EAAQqK,aACzDf,EAAWe,YAAcrK,EAAQqK,aACA,IAAxBrK,EAAQqK,cACjBf,EAAWe,aAAc3I,EAAcc,EAAM6H,cAAe7H,EAAM6H,aAGpE,IAAMC,EAAc,CAClBpF,QAAA4C,EACA1C,MAAOkE,EACPd,QAAAH,GAIE7F,EAAM+H,OAAS/H,EAAM+H,MAAQ,GAAKpI,EAAaK,EAAM+H,OAASlB,EAChE5C,EAAM+D,KAAKF,GACFpJ,EAAMkI,GACfvE,YAAW,KACTpB,EAAe6G,EACjB,GAAGlB,GAEH3F,EAAe6G,EAEnB,EAWEG,QAAAA,CAAS3C,GACPtF,EAAQsF,CACV,EACA4C,UAAWA,CAAC5C,EAAQ9H,KAClB,IAAM+H,EAAIrF,EAAOyF,IAAIL,GACjBC,IAAGA,EAAEc,OAAS7I,EACpB,EACA2K,cAAgB7C,IA5KpB,IAAA9H,EA4K+B,cAAAA,EAAA0C,EAAOyF,IAAIL,SAAX,EAAA9H,EAAgBkI,QAAA,EAC3C0C,YAAaA,IAAMtI,EAEvB,CCxJA,IAAMuI,EAAa,IAAIrD,IACnBsD,EAA+B,GAC7BC,EAAY,IAAItD,IAEhBuD,EAAmBlL,GAAoBiL,EAAUlD,SAAQ1H,GAAMA,EAAGL,KAElEmL,EAAgBC,IAAML,EAAWM,KAAO,EAUvC,SAASC,EAActL,EAAQK,GAvCtC,IAAAP,EAwCE,GAAIO,EAAa,QAAS,OAAAP,EAAAiL,EAAW1C,IAAIhI,MAAfP,EAA6B+K,cAAc7K,IAErE,IAAID,GAAW,EACf,OAAAgL,EAAWhD,SAAQ1F,IACbA,EAAEwI,cAAc7K,KAAKD,GAAW,EACtC,IAEOA,CACT,CA8BO,SAASwL,EAAiBvL,EAA8BK,GACxDuB,EAAc5B,KACdmL,KAAiBH,EAAYN,KAAK,CAAEtF,QAAApF,EAASwL,QAAAnL,IAElD0K,EAAWhD,SAAQhI,IACjBA,EAAEoJ,WAAWnJ,EAASK,EACxB,IACF,CAiBO,SAASoL,EAAYzL,EAAYK,GACtC0K,EAAWhD,SAAQhI,KACN,MAAPM,GAAgB,MAAAA,IAAAA,EAAKkF,cAEd,MAAAlF,OAAA,EAAAA,EAAKkF,eAAgBxF,EAAEyF,KAChCzF,EAAEgJ,OAAO/I,EAAG,MAAAK,OAAA,EAAAA,EAAKmF,GAErB,GACF,CAEO,SAASkG,EAAkB1L,GAChC,IAAMK,EAAKL,EAAMuF,aAAe,EAChC,MAAO,CACLoG,SAAAA,CAAU5L,GACR,IAAMD,EAAY2H,EAAwBpH,EAAIL,EAAOkL,GAErDH,EAAWnC,IAAIvI,EAAIP,GACnB,IAAMuC,EAAYvC,EAAUgJ,QAAQ/I,GACpC,OAxFJiL,EAAYjD,SAAQ/H,GAAKuL,EAAUvL,EAAEoF,QAASpF,EAAEwL,WAChDR,EAAc,GAyFH,KACL3I,IACA0I,EAAWpC,OAAOtI,EACpB,CACF,EACAsK,QAAAA,CAAS5K,GA/Hb,IAAAD,EAgIM,OAAAA,EAAAiL,EAAW1C,IAAIhI,KAAfP,EAAoB6K,SAAS5K,EAC/B,EACA+K,WAAAA,GAlIJ,IAAA/K,EAmIM,OAAO,OAAAA,EAAAgL,EAAW1C,IAAIhI,SAAf,EAAAN,EAAoB+K,aAC7B,EAEJ,CCnHA,SAASc,EAAkB5L,GACzB,OAAOA,IAAYsB,EAAMtB,EAAQyF,UAAYrE,EAAMpB,EAAQyF,UAAYzF,EAAQyF,QAAU8B,GAC3F,CAKA,SAASsE,EAAqB7L,EAA8BK,GAC1D,OAAAkL,EAAUvL,EAASK,GACZA,EAAQoF,OACjB,CAKA,SAASqG,EAAoB9L,EAAcK,GACzC,MAAO,IACFA,EACHO,KAAOP,GAAWA,EAAQO,MAASZ,EACnCyF,QAASmG,EAAWvL,GAExB,CAEA,SAAS0L,EAAkB/L,GACzB,MAAO,CAAkBK,EAA8BN,IACrD8L,EAAcxL,EAASyL,EAAa9L,EAAMD,GAC9C,CAEA,SAASiM,EAAuBhM,EAA8BK,GAC5D,OAAOwL,EAAc7L,EAAS8L,EAAA,UAA2BzL,GAC3D,CClCO,SAAS4L,EAASjM,GACvB,IAAOK,EAAWN,IAAgBmM,EAAAA,EAAAA,WAAS,IACpCpM,EAAuBuC,IAA4B6J,EAAAA,EAAAA,WAAS,GAC7DvF,GAAWwF,EAAAA,EAAAA,QAAuB,MAClC3J,GAAO2J,EAAAA,EAAAA,QAAkB,CAC7BC,MAAO,EACPC,MAAO,EACPC,gBAAiB,EACjBC,iBAAiB,EACjBC,SAAS,EACTC,SAAS,IACR/I,SACK0G,UAAA1H,EAAWgK,aAAA9J,EAAcuD,WAAArD,EAAY6J,QAAA3J,EAAS4J,aAAA1J,GAAiBlD,EAsEvE,SAASC,IACPF,GAAa,EACf,CAEA,SAAS4D,IACP5D,GAAa,EACf,CAaA,SAASG,EAAWoI,GAClB,IAAMC,EAAQ5B,EAASjD,QACvB,GAAIlB,EAAKgK,SAAWjE,EAAO,CACzB/F,EAAKiK,SAAU,EACXpM,GAAWsD,IACkB,MAA7B3D,EAAM6M,mBACRrK,EAAK6J,MAAQ/D,EAAEwE,QAAUtK,EAAK4J,MAE9B5J,EAAK6J,MAAQ/D,EAAEyE,QAAUvK,EAAK4J,MAI5B5J,EAAK4J,QAAU9D,EAAEwE,UAAStK,EAAK+J,iBAAkB,GACrD,IAAMjD,EACyB,MAA7BtJ,EAAM6M,mBAA6B,GAAGrK,EAAK6J,oBAAsB,WAAW7J,EAAK6J,sBACnF9D,EAAM/D,MAAMyC,UAAY,eAAeqC,OACvCf,EAAM/D,MAAMwI,QAAU,IAAG,EAAIC,KAAKC,IAAI1K,EAAK6J,MAAQ7J,EAAK8J,iBAC1D,CACF,CAEA,SAASrE,IAxBPzH,SAASuD,oBAAoB,cAAe7D,GAC5CM,SAASuD,oBAAoB,YAAakE,GAyB1C,IAAMK,EAAQ3B,EAASjD,QACvB,GAAIlB,EAAKgK,SAAWhK,EAAKiK,SAAWnE,EAAO,CAEzC,GADA9F,EAAKgK,SAAU,EACXS,KAAKC,IAAI1K,EAAK6J,OAAS7J,EAAK8J,gBAI9B,OAHAjK,GAAyB,GACzBrC,EAAMmG,YAAW,QACjBnG,EAAMmN,cAIR7E,EAAM9D,MAAMI,WAAa,+BACzB0D,EAAM9D,MAAM4I,eAAe,aAC3B9E,EAAM9D,MAAM4I,eAAe,UAC7B,CACF,EFtDK,SAAwBpN,GAlG/B,IAAAK,EAmGE,OAAAA,EAAA0K,EAAW1C,IAAIrI,EAAKuF,aAAe,KAAnClF,EAA0DuK,UAAU5K,EAAKwF,GAAIxF,EAAKqN,GACpF,EEvEEC,CAAe,CACb9H,GAAIxF,EAAMyF,QACVF,YAAavF,EAAMuF,YACnB8H,GAAItN,KAGNwN,EAAAA,EAAAA,YAAU,KACR,GAAIvN,EAAMwN,iBACR,OASGhN,SAASiN,YAAY9J,IAE1B+J,OAAOvJ,iBAAiB,QAASlE,GACjCyN,OAAOvJ,iBAAiB,OAAQR,GAVvB,KAcT+J,OAAO3J,oBAAoB,QAAS9D,GACpCyN,OAAO3J,oBAAoB,OAAQJ,EAbjC,CAEJ,GAAG,CAAC3D,EAAMwN,mBA+GV,IAAM/E,EAA4C,CAChDkF,cAlGF,SAAqBrF,GACnB,IAAwB,IAApBtI,EAAM4N,WAAsB5N,EAAM4N,YAActF,EAAEuF,YAAa,CAgDnErL,EAAKiK,SAAU,EACfjM,SAAS2D,iBAAiB,cAAejE,GACzCM,SAAS2D,iBAAiB,YAAa8D,GAhDrC,IAAMM,EAAQ5B,EAASjD,QACvBlB,EAAK+J,iBAAkB,EACvB/J,EAAKgK,SAAU,EACfjE,EAAM/D,MAAMI,WAAa,OAEQ,MAA7B5E,EAAM6M,oBACRrK,EAAK4J,MAAQ9D,EAAEwE,QACftK,EAAK8J,gBAAkB/D,EAAMuF,aAAe9N,EAAM+N,iBAAmB,OAErEvL,EAAK4J,MAAQ9D,EAAEyE,QACfvK,EAAK8J,gBACF/D,EAAMyF,cACuB,KAA3BhO,EAAM+N,iBACsB,IAAzB/N,EAAM+N,iBACN/N,EAAM+N,kBACZ,IAEN,CACF,EA8EEE,YA5EF,SAA6B3F,GAC3B,IAAQ4F,IAAA3F,EAAK4F,OAAA7E,EAAQ8E,KAAA7E,EAAM8E,MAAA7E,GAAU7C,EAASjD,QAAS4K,wBAG9B,aAAvBhG,EAAEiG,YAAY3N,MACdZ,EAAM0M,cACNpE,EAAEwE,SAAWvD,GACbjB,EAAEwE,SAAWtD,GACblB,EAAEyE,SAAWxE,GACbD,EAAEyE,SAAWzD,EAEb3F,IAEA1D,GAEJ,GAgEA,OAAIyC,GAAaE,IACf6F,EAAc+F,aAAe7K,EAGxB3D,EAAMyO,UAAShG,EAAciG,aAAezO,IAI/CiD,IACFuF,EAAckE,QAAWrE,IACvBtF,GAAWA,EAAQsF,GACnB9F,EAAK+J,iBAAmBzJ,GAAW,EACrC,GAGK,CACLK,UAAAlD,EACA0O,WAAAhL,EACA8C,UAAApG,EACAsC,sBAAA7C,EACA8O,SAAAjI,EACAkI,cAAApG,EAEJ,CDnIAuD,EAAM8C,QAAU,CAAkB9O,EAA8BK,IAC9DwL,EACE7L,EACA8L,EAAA,UAA2B,CACzBlG,WAAW,EACXwE,WAAW,EACXwC,cAAc,EACdrC,aAAa,EACbqD,WAAW,KACRvN,KAoHT2L,EAAM+C,QA1GN,SACE/O,EAAAgP,EAEA3M,GACA,IACIsE,GAHFsI,QAAA5O,EAAS6O,MAAAnP,EAAOoP,QAAArP,GAAQkP,EAKtB3O,IACFsG,EAAKrF,EAAMjB,GACP2L,EAAM8C,QAAQzO,EAASgC,GACvB2J,EAAM8C,QAAQzO,EAAQ+O,OAAQ,IACzB/M,KACChC,KAIZ,IAAMmC,EAAc,CAClBoD,UAAW,KACXwE,UAAW,KACXwC,aAAc,KACdrC,YAAa,KACbqD,UAAW,MAGPlL,EAAW2M,CAAIvM,EAAmBE,EAA8CE,KAGpF,GAAa,MAATF,EAEF,YADAgJ,EAAMsD,QAAQ3I,GAIhB,IAAMvD,EAAa,CACjBxC,KAAAkC,KACGN,KACAH,EACHsD,KAAMzC,GAEFG,EAAS/B,EAAM0B,GAAS,CAAEoM,OAAQpM,GAAUA,EAGlD,OAAI2D,EACFqF,EAAMuD,OAAO5I,EAAI,IACZvD,KACAC,IAIL2I,EAAM3I,EAAQ+L,OAAQ,IACjBhM,KACAC,IAIAH,CACT,EAEMN,EAAIrB,EAAKvB,GAAWA,IAAYA,EAGtC,OAAA4C,EAAE4M,MAAK1M,GAAUJ,EAAS,UAAW5C,EAASgD,KAAS2M,OAAM3M,GAAOJ,EAAS,QAAS3C,EAAO+C,KAEtFF,CACT,EA4CAoJ,EAAMmD,QAAUpD,EAAA,WAChBC,EAAM0D,KAAO3D,EAAA,QACbC,EAAMkD,MAAQnD,EAAA,SACdC,EAAM2D,QAAU5D,EAAA,WAChBC,EAAM4D,KAAO5D,EAAM2D,QACnB3D,EAAM6D,KAAO,CAAC7P,EAAuBK,IACnCwL,EACE7L,EACA8L,EAAA,UAA2B,CACzBpG,MAAO,UACJrF,KAsCT2L,EAAMsD,QA3BN,SAAiBtP,IDpJV,SAAqBA,GAC1B,GAAKmL,KAKL,GAAc,MAAVnL,GAAkBwB,EAAKxB,GACzB+K,EAAWhD,SAAQ1H,IACjBA,EAAE2I,YAAYhJ,EAChB,SAAC,GACQA,IAAW,gBAAiBA,GAAU,OAAQA,GAAS,CAChE,IAAMK,EAAY0K,EAAW1C,IAAIrI,EAAOuF,aACxClF,EACIA,EAAU2I,YAAYhJ,EAAOwF,IAC7BuF,EAAWhD,SAAQhI,IACjBA,EAAEiJ,YAAYhJ,EAAOwF,GACvB,GACN,OAfEwF,EAAcA,EAAYlB,QAAOzJ,GAAe,MAAVL,GAAkBK,EAAEmL,QAAQ/F,UAAYzF,GAgBlF,CCmIE8P,CAAY9P,EACd,EA8BAgM,EAAM+D,kBDhK2B,WAAqC,IAApC/P,EAAAO,UAAAD,OAAA,QAAAgE,IAAA/D,UAAA,GAAAA,UAAA,GAA6B,CAAC,EAC9DwK,EAAWhD,SAAQ1H,IACbA,EAAEiF,MAAMmF,SAAWzK,EAAEuF,aAAelF,EAAEmF,KAAOxF,EAAEuF,cACjDlF,EAAE6I,YAEN,GACF,ECyKA8C,EAAM5D,SAAWkD,EA+BjBU,EAAMuD,OAAS,SAAkBvP,GAAoD,IAAvCK,EAAAE,UAAAD,OAAA,QAAAgE,IAAA/D,UAAA,GAAAA,UAAA,GAAgC,CAAC,EACvER,EDjPgBiQ,EAAChQ,EAAAiQ,KAAuC,IAA7B1K,YAAAlF,GAAY4P,EApC/C,IAAAlQ,EAqCE,cAAAA,EAAAgL,EAAW1C,IAAIhI,GAAe,SAA9B,EAAAN,EAAqDkJ,OAAOZ,IAAIrI,EAAA,ECgPlDkQ,CAASlQ,EAASK,GAEhC,GAAIN,EAAO,CACT,IAAQuF,MAAOxF,EAAYsF,QAAS/C,GAAetC,EAE7C4G,EAAc,CAClBH,MAAO,OACJ1G,KACAO,EACHoF,QAASpF,EAAQoF,SAAWzF,EAC5BwI,SAAUjB,KAGRZ,EAAYlB,UAAYzF,IAAS2G,EAAY+B,QAAU1I,GAE3D,IAAMwC,EAAUmE,EAAYyI,QAAU/M,SAC/BsE,EAAYyI,OAEnBvD,EAAcrJ,EAASmE,EACzB,CACF,EAgBAqF,EAAMnJ,KAAQ7C,IACZgM,EAAMuD,OAAOvP,EAAI,CACf6G,SAAU,GAEd,EAsBAmF,EAAMmE,SD3MC,SAAkBnQ,GACvB,OAAAiL,EAAU/G,IAAIlE,GAEP,KACLiL,EAAUtC,OAAO3I,EACnB,CACF,ECgOAgM,EAAMoE,KAAQpQ,GAAkByL,GAAY,EAAMzL,GA2BlDgM,EAAMqE,MAASrQ,GAAkByL,GAAY,EAAOzL,GEvY7C,IAAMsQ,EAA8C,oBAAX5C,OAAyB6C,EAAAA,gBAAkBC,EAAAA,UCcrFC,EAAkCC,IAAA,IAAGhL,MAAA1F,EAAOY,KAAAP,EAAMuF,UAAA7F,KAAcD,GAAK4Q,EAAA,OACzEC,EAAAA,cAAC,OACCC,QAAQ,YACRC,MAAM,OACNlM,OAAO,OACPmM,KAAgB,YAAV9Q,EAAsB,eAAiB,6BAA6BK,QACtEP,GACN,EAuCK,IAAMiR,EAAQ,CACnBrB,KA7BF,SAAc1P,GACZ,OACE2Q,EAAAA,cAACF,EAAA,IAAQzQ,GACP2Q,EAAAA,cAAC,QAAKjO,EAAE,kPAGd,EAwBEiN,QAtCF,SAAiB3P,GACf,OACE2Q,EAAAA,cAACF,EAAA,IAAQzQ,GACP2Q,EAAAA,cAAC,QAAKjO,EAAE,+eAGd,EAiCEyM,QAvBF,SAAiBnP,GACf,OACE2Q,EAAAA,cAACF,EAAA,IAAQzQ,GACP2Q,EAAAA,cAAC,QAAKjO,EAAE,+KAGd,EAkBEwM,MAhBF,SAAelP,GACb,OACE2Q,EAAAA,cAACF,EAAA,IAAQzQ,GACP2Q,EAAAA,cAAC,QAAKjO,EAAE,uUAGd,EAWEsO,QATF,WACE,OAAOL,EAAAA,cAAC,OAAI1L,UAAA,qBACd,GAcO,SAASgM,EAAAC,GAAsD,IAA5CxL,MAAA1F,EAAOY,KAAAP,EAAMuF,UAAA7F,EAAW8F,KAAA/F,GAAKoR,EACjD7O,EAAwB,KACtBsE,EAAY,CAAEjB,MAAA1F,EAAOY,KAAAP,GAE3B,OAAa,IAATP,IAEOyB,EAAKzB,GACduC,EAAOvC,EAAK,IAAK6G,EAAWf,UAAA7F,KACnBoR,EAAAA,EAAAA,gBAAerR,GACxBuC,GAAO+O,EAAAA,EAAAA,cAAatR,EAAM6G,GACjB5G,EACTsC,EAAO0O,EAAMC,UAfEhR,IAA6CA,KAAQ+Q,EAgB3DM,CAAUhR,KACnBgC,EAAO0O,EAAM1Q,GAAMsG,KAGdtE,CACT,CCjFO,IAAMiP,EAA8BtR,IACzC,IAAQyG,UAAApG,EAAWsC,sBAAA5C,EAAuB6O,SAAA9O,EAAU+O,cAAAxM,EAAec,UAAAwD,GAAcsF,EAASjM,IAExFuK,YAAA/H,EACAD,SAAAG,EACA0H,UAAAxH,EACA+J,QAAA7J,EACAlC,KAAAoC,EACAuO,gBAAArO,EACAiD,WAAA/C,EACAwB,WAAYvB,EACZZ,SAAAa,EACA2B,UAAA1B,EACAiB,MAAAvE,EACAkK,kBAAAxG,EACA6E,SAAA3E,EACAwD,KAAAW,EACAnB,SAAA3G,EACA4G,IAAAmB,EACAxC,QAAAgD,EACA4B,YAAA/B,EACArF,KAAAsF,EACA3C,UAAA0D,EACAsD,aAAArD,EACA7D,MAAA8D,EACAgI,UAAAhH,GACExK,EACEgK,EAAmByH,EAAA,kBAEvB,0BAA0CjI,IAC1C,oBAAoCxG,IACpC,CACE,uBAA0CiF,GAE5C,CACE,kCAAqDsB,IAGnDU,EAAa1I,EAAKgC,GACpBA,EAAU,CACRuD,IAAAmB,EACAxF,SAAAa,EACA1C,KAAAoC,EACAmE,iBAAA6C,IAEFyH,EAAGzH,EAAkBzG,GACnBmO,EAAOT,EAAQjR,GACf2R,IAAyBzR,IAAa0C,EAEtCgP,EAAmB,CAAEzL,WAAA/C,EAAYxC,KAAAoC,EAAM0C,MAAA8D,GACzCqI,EAAyB,KAE7B,OAAoB,IAAhBrP,IAGFqP,EADStQ,EAAKiB,GACNA,EAAYoP,IACXE,EAAAA,EAAAA,gBAAetP,IAChBuP,EAAAA,EAAAA,cAAavP,EAAaoP,GCxD/B,SAASI,GAA0E,IAA5D7L,WAAAnG,EAAY0F,MAAArF,EAAOmR,UAAAzR,EAAY,SAAQiS,EACnE,OACEC,EAAAA,cAAC,UACChN,UAAW,kDAAkF5E,IAC7FO,KAAK,SACL+L,QAAS7M,IACPA,EAAEoS,kBACFlS,GAAW,EACb,EACA,aAAYD,GAEZkS,EAAAA,cAAC,OAAI,cAAY,OAAOrB,QAAQ,aAC9BqB,EAAAA,cAAC,QACCE,SAAS,UACTzP,EAAE,8HAKZ,CDuCY0P,CAAYR,IAIpBS,EAAAA,cAAChP,EAAA,CACCJ,KAAMsF,EACN1F,KAAMyF,EACN7F,SAAUa,EACVX,sBAAuB5C,EACvBgD,QAASjD,EACTqD,UAAWwD,GAEX0L,EAAAA,cAAC,OACC7M,GAAIiD,EACJ6J,SAAU,EACV3F,QAAS7J,EACT,UAASyF,EACTtD,UAAWgF,KACP5H,EACJmC,MAAOvE,EACPsS,IAAKzS,KACAyI,GAAQ,CAAElB,KAAMW,EAAM,aAAcwC,IAEhC,MAARkH,GACCW,EAAAA,cAAC,OACCpN,UAAWwM,EAAA,uBAA2C,CACpD,+CAAkFnI,KAGnFoI,GAGJrM,EAAc3C,EAAU1C,GAAQK,GAChCwR,GACC7R,EAAMwS,mBACNH,EAAAA,cAAC/L,EAAA,IACMzC,IAAa8N,EAAuB,CAAEjI,IAAK,KAAK7F,KAAe,CAAC,EACrEiD,IAAKmB,EACLvC,MAAO8D,EACPhD,MAAO5D,EACP6D,UAAWpG,EACX4C,KAAMsF,EACNpC,WAAY/C,EACZsD,KAAMxD,EACNtC,KAAMoC,EACNiC,UAAWtB,EACXiD,mBAAoB+K,EACpB9K,SAAU3G,GAAY,KAMlC,EExHMuS,EAAY,SAACzS,GAAwC,MAAW,CACpEgC,MAAO,+BAA+DhC,UACtEiC,KAAM,+BAA+DjC,SACrEkC,eAHwC3B,UAAAD,OAAA,QAAAgE,IAAA/D,UAAA,IAAAA,UAAA,GAI1C,EAEMmS,EAAS5Q,EAAc2Q,EAAU,UAAU,ICGpCE,GDDC7Q,EAAc2Q,EAAU,SAAS,IAElC3Q,EAAc2Q,EAAU,SAExB3Q,EAAc2Q,EAAU,SCHY,CAC/ChQ,SAAU,YACVmC,WAAY8N,EACZtI,UAAW,IACXG,aAAa,EACbmC,cAAc,EACdc,kBAAkB,EAClBI,UAAW,QACXG,iBAAA,GACAlB,mBAAA,IACAxF,KAAM,QACN3B,MAAO,QACP,aAAc,sBACdkN,QAAS5S,GAAKA,EAAE6S,QAAqB,SAAX7S,EAAE8S,OAGvB,SAASC,EAAe/S,GAC7B,IAAIK,EAAsC,IACrCsS,KACA3S,GAECD,EAAUC,EAAMyO,SACf3O,EAAWuC,IAAkB2Q,EAAAA,EAAAA,WAAS,GACvCrM,GAAesM,EAAAA,EAAAA,QAAuB,OACpCC,iBAAA1Q,EAAkBqI,cAAAnI,EAAeyQ,MAAAvQ,GC/BpC,SAA2B5C,GAJlC,IAAAwC,EAKE,IAAQmJ,UAAAtL,EAAWyK,YAAA/K,EAAa4K,SAAA7K,IAAasT,EAAAA,EAAAA,QAAO1H,EAAkB1L,IAAQ0D,QAC9E5D,EAASE,GACT,IAAMqC,EAAW,OAAAG,GAAA6Q,EAAAA,EAAAA,sBAAqBhT,EAAWN,EAAaA,SAA7C,EAAAyC,EAA2D8Q,QAkB5E,MAAO,CACLJ,iBAjBF,SAA6BxQ,GAC3B,IAAKL,EAAU,MAAO,GAEtB,IAAMO,EAAW,IAAI8E,IAErB,OAAI1H,EAAMuT,aAAalR,EAASmR,UAEhCnR,EAAS0F,SAAQjF,IACf,IAAQL,SAAAO,GAAaF,EAAMwC,MAC3B1C,EAASyG,IAAIrG,IAAaJ,EAASgG,IAAI5F,EAAU,IACjDJ,EAASyF,IAAIrF,GAAW0H,KAAK5H,EAC/B,IAEO3C,MAAM0H,KAAKjF,GAAUE,GAAKJ,EAAGI,EAAE,GAAIA,EAAE,KAC9C,EAIE+H,cAAAS,EACA6H,MAAO,MAAA9Q,OAAA,EAAAA,EAAU/B,OAErB,CDKqDmT,CAAkBpT,IAC7D4E,UAAAnC,EAAW0B,MAAAxB,EAAO8D,IAAA5D,EAAKqC,YAAAnC,EAAawP,QAAAvP,GAAYhD,EAExD,SAASiD,EAAarD,GACpB,IAAM0D,EAAmB+P,EAAA,4BAEvB,8BAA8CzT,IAC9C,CAAE,iCAAoDiD,IAExD,OAAO3B,EAAKuB,GACRA,EAAU,CACRL,SAAAxC,EACA6G,IAAA5D,EACAiE,iBAAAxD,IAEF+P,EAAG/P,EAAkBlC,EAAeqB,GAC1C,CAEA,SAASS,IACHxD,IACFsC,GAAe,GACf2J,EAAMoE,OAEV,CAEA,OAAAE,GAA0B,KA5D5B,IAAArQ,EA6DI,GAAIF,EAAS,CACX,IAAM4D,EAAQgD,EAAajD,QAASiQ,iBAAiB,oBAC/C9P,EAAM,GACNmE,EAAQ,OAAA/H,EAAAI,EAAeoC,eAAf,EAAAxC,EAAyB2T,SAAS,OAC5C1T,EAAa,EACb+H,EAAQ,EAEZ9H,MAAM0H,KAAKlE,GACR6P,UACAzL,SAAQ,CAACU,EAAGH,KACX,IAAMC,EAAOE,EACbF,EAAKvE,UAAUE,IAAA,4BAEXoE,EAAI,IAAGC,EAAKsL,QAAQC,UAAY,GAAGhU,KAElCyI,EAAKsL,QAAQE,MAAKxL,EAAKsL,QAAQE,IAAM/L,EAAQ,MAAQ,OAE1D,IAAMsB,EAAIpJ,GAAcJ,EAAY,GAAM,IAAMA,EAAY,EAAI+D,EAAMyE,GAEtEC,EAAK/D,MAAMwP,YAAY,MAAO,GAAGhM,EAAQsB,GAAS,EAALA,OAC7Cf,EAAK/D,MAAMwP,YAAY,MAAO,GAAGnQ,KACjC0E,EAAK/D,MAAMwP,YAAY,MAAO,IAAG,GAAKlU,EAAYmI,EAAQ,KAE1D/H,GAAcqI,EAAKyF,aACnB/F,GAAS,IACX,GACJ,IACC,CAACnI,EAAW8C,EAAO7C,KAEtBkU,EAAAA,EAAAA,YAAU,KACR,SAAShU,EAAW0D,GA3FxB,IAAAqE,EA4FM,IAAMnE,EAAO8C,EAAajD,QACtBL,EAAQM,KACT,OAAAqE,EAAAnE,EAAKqQ,cAAc,oBAAnBlM,EAAsDmM,QACvD9R,GAAe,GACf2J,EAAMqE,SAEM,WAAV1M,EAAE+F,MAAqBlJ,SAAS4T,gBAAkBvQ,GAAQ,MAAAA,GAAAA,EAAMwQ,SAAS7T,SAAS4T,kBACpF/R,GAAe,GACf2J,EAAMoE,OAEV,CAEA,OAAA5P,SAAS2D,iBAAiB,UAAWlE,GAE9B,KACLO,SAASuD,oBAAoB,UAAW9D,EAC1C,CACF,GAAG,CAACoD,IAGFiR,EAAAA,cAAC,WACC/B,IAAK5L,EACL1B,UAAA,WACAO,GAAIpC,EACJoL,aAAcA,KACRzO,IACFsC,GAAe,GACf2J,EAAMqE,QAEV,EACA3B,aAAcnL,EACd,YAAU,SACV,cAAY,QACZ,gBAAc,iBACd,aAAYlD,EAAe,eAE1BmC,GAAiB,CAACvC,EAAU0D,KAC3B,IAAME,EAAuCF,EAAUrD,OAEnD,IAAK0C,GADL,IAAKA,EAAOuR,cAAe,QAG/B,OACED,EAAAA,cAAC,OACChC,UAAW,EACXrN,UAAW3B,EAAarD,GACxB,eAAcF,EACdyE,MAAOX,EACP6F,IAAK,KAAKzJ,KAET0D,EAAU6Q,KAAIC,IAAA,IAAGrP,QAAA4C,EAAS1C,MAAOpF,GAAWuU,EAAA,OAEzCH,EAAAA,cAAChD,EAAA,IACKpR,EACJuO,QAAS1O,EACToN,YAAa5J,EACbN,KAAMP,EAAcxC,EAAWuF,QAASvF,EAAWqF,aACnDmE,IAAK,KAAKxJ,EAAWwJ,OAEpB1B,EAGN,IAGP,IAGN,C,mQEzJA,IAAM3F,EAAW,CAKfqS,QAAS,CACP,kCACA,+BACA,gBACA,qBAEFC,eAAgB,KAKhBC,UAAW,EAKXC,WAAY,EAKZC,UAAW,EAKXC,gBAAA,EAKAC,SAAA,EAKAC,UAAW,IAOXC,SAAA,EACAC,aAAc,iBACdC,aAAc,IAMdC,MAAA,EACAC,UAAWC,IAOXC,YAAA,EACAC,WAAY,IACZC,eAAA,EAMAC,KAAM,KAKNC,sBAAA,EAKAC,YAAa,OAMbC,QAAS,SAAC9V,GAAW,EAMrB+V,WAAY,SAAC/V,GAAS,EAOtBgW,eAAgB,SAAChW,EAAUqC,GAAW,EAOtC4T,cAAe,SAACjW,EAAUqC,GAAS,EAMnC6T,uBAAwB,SAAClW,GAAS,EAOlCmW,eAAgB,SAACnW,EAAUqC,GAAS,EAOpC+T,gBAAiB,SAACpW,EAAUqC,GAAS,EAMrCgU,QAAS,SAACrW,GAAS,EAOnBsW,OAAQ,SAACtW,EAAUqC,GAAA,EAOnBkU,QAAS,SAACvW,EAAUqC,GAAW,EAM/BmU,UAAW,SAACxW,GAAS,GCyDZD,EAAc,IApNO,oBAAAA,IAAA,KAAAG,EAAAH,EAAA0W,UAiN7B,OAjN6BvW,EAS9BwW,KAAA,SAAK3W,EAAMG,EAAS8H,GAiElB,GA9DEjI,EAAK4W,GADkB,iBAAd3O,EACCxH,SAAS0T,cAAclM,GAEvBA,EAGZjI,EAAKyL,QAAOxL,EAAA,GAAQqC,EAAanC,GAGjCH,EAAK6W,QAA4C,UAAlC7W,EAAK4W,GAAGE,QAAQC,cAC/B/W,EAAK4V,KAAO5V,EAAKyL,QAAQmK,KACzB5V,EAAK6V,qBAAuB7V,EAAKyL,QAAQoK,qBAGzC7V,EAAKyV,YAAazV,EAAK6W,SAAkB7W,EAAKyL,QAAQgK,WAGtDzV,EAAK0V,WAAa1V,EAAKyL,QAAQiK,WAG/B1V,EAAKgX,gBAAA,EAGLhX,EAAKiX,UAAYjX,EAAK4V,KAClB5V,EAAK4W,GAAGM,aAAalX,EAAK4V,MAC1B5V,EAAK4W,GAAGO,YAGZnX,EAAK8V,YAAc9V,EAAKyL,QAAQqK,YAGhC9V,EAAK6U,UAAY7U,EAAKyL,QAAQoJ,UAG9B7U,EAAK8U,WAAa9U,EAAKyL,QAAQqJ,WAG/B9U,EAAK+U,UAAY/U,EAAKyL,QAAQsJ,UAG9B/U,EAAKgV,eAAiBhV,EAAKyL,QAAQuJ,eAGnChV,EAAKkV,UAAYlV,EAAKyL,QAAQyJ,UAG9BlV,EAAKmV,QAAUnV,EAAKyL,QAAQ0J,QAC5BnV,EAAKoV,aAAepV,EAAKyL,QAAQ2J,aACjCpV,EAAKqV,aAAerV,EAAKyL,QAAQ4J,aAGjCrV,EAAKsG,UAAA,EAGLtG,EAAK2U,QAAU3U,EAAKyL,QAAQkJ,QAAQF,KAAI,SAACxU,GAAM,OAAAA,EAAEmX,MAAM,IAIrDpX,EAAK4U,eADoC,iBAAhC5U,EAAKyL,QAAQmJ,eACAnU,SAAS0T,cAAcnU,EAAKyL,QAAQmJ,gBAEpC5U,EAAKyL,QAAQmJ,eAGjC5U,EAAK4U,eAAgB,CACvB5U,EAAK2U,QAAU,GACf3U,EAAK4U,eAAenQ,MAAMvD,QACxB,sHAEF,IAAMnB,EAAUK,MAAMsW,UAAUnD,MAAM8D,MAAMrX,EAAK4U,eAAepS,UAC1DlC,EAAgBP,EAAQQ,OAE9B,GAAID,EACF,IAAK,IAAImC,EAAI,EAAGA,EAAInC,EAAemC,GAAK,EAEtCzC,EAAK2U,QAAQhK,KADI5K,EAAQ0C,GACE6U,UAAUF,OAG3C,CAiBA,IAAK,IAAIlP,KAdTlI,EAAKuX,OAAS,EAGdvX,EAAKwX,iBAAmBC,KAAKC,oBAAoB1X,GAE7CA,EAAKwX,kBAAoBxX,EAAKwX,iBAAiBjX,OAAS,IAC1DP,EAAKuX,OAASvX,EAAKwX,iBAAiBjX,OAAS,EAC7CP,EAAK2U,QAAQgD,QAAQ3X,EAAKwX,mBAI5BxX,EAAK4X,SAAW,GAGF5X,EAAK2U,QACjB3U,EAAK4X,SAAS1P,GAAKA,EAIrBlI,EAAK6X,SAAW,EAGhB7X,EAAK8X,QAAU,EAGf9X,EAAKsV,KAAOtV,EAAKyL,QAAQ6J,KACzBtV,EAAKuV,UAAYvV,EAAKyL,QAAQ8J,UAC9BvV,EAAK+X,QAAU,EAGf/X,EAAKiV,QAAUjV,EAAKyL,QAAQwJ,QAE5BjV,EAAKsQ,MAAQ,CACXrK,QAAA,EACA+R,WAAA,EACAC,UAAW,GACXC,UAAW,GAIblY,EAAKmY,gBAAA,EAELnY,EAAK2V,cAAgB3V,EAAKyL,QAAQkK,cAE9B3V,EAAK2V,gBACP8B,KAAKW,yBAAyBpY,GAC9ByX,KAAKY,0BAA0BrY,GAEnC,EAACG,EAEDuX,oBAAA,SAAoBzX,GAWlB,OATIA,EAAK2V,KACK3V,EAAK2W,GAAGM,aAAajX,EAAK2V,MAC7B3V,EAAK4W,QACF5W,EAAK2W,GAAG0B,MACU,SAArBrY,EAAK6V,YACF7V,EAAK2W,GAAGU,UAERrX,EAAK2W,GAAGO,WAGxB,EAAChX,EAEDiY,yBAAA,SAAyBnY,GACvB,IAAMqC,EAAc,2BAEpB,GAAKrC,EAAKwV,aAAchV,SAAS0T,cAAkB,IAAA7R,EAAe,KAAlE,CAIA,IAAItC,EAAMS,SAASG,cAAc,SACjCZ,EAAIuY,aAAajW,EAAa,QAE9BtC,EAAIsX,UAiBD,ogBAEH7W,SAAS+X,KAAKxX,YAAYhB,EAxB1B,CAyBF,EAACG,EAEDkY,0BAAA,SAA0BpY,GACxB,IAAMqC,EAAc,4BAEpB,GAAKrC,EAAKkV,UAAW1U,SAAS0T,cAAa,IAAK7R,EAAW,KAA3D,CAIA,IAAItC,EAAMS,SAASG,cAAc,SACjCZ,EAAIuY,aAAajW,EAAa,QAE9BtC,EAAIsX,UAAS,4OAWb7W,SAAS+X,KAAKxX,YAAYhB,EAhB1B,CAiBF,EAACA,CAAA,CAG0B,ICvJlBG,EAAa,IA7DO,oBAAAF,IAAA,KAAAqC,EAAArC,EAAAyW,UA0D5B,OA1D4BpU,EAU7BmW,cAAA,SAAcxY,EAAWqC,EAAWtC,GAClC,GAAyB,SAArBA,EAAK8V,YAAwB,OAAOxT,EACxC,IAAMnC,EAAUF,EAAUyY,UAAUpW,GAAWqW,OAAO,GACtD,GAAgB,MAAZxY,GAA+B,MAAZA,EAAiB,CACtC,IAAI8H,EAMJ,IAJEA,EADc,MAAZ9H,EACO,IAEA,IAEJF,EAAUyY,UAAUpW,EAAY,GAAGqW,OAAO,KAAO1Q,KAEtC,KADhB3F,EACoBrC,EAAUM,UAIhC+B,GACF,CACA,OAAOA,CACT,EAACA,EAUDsW,mBAAA,SAAmB3Y,EAAWqC,EAAWtC,GACvC,GAAyB,SAArBA,EAAK8V,YAAwB,OAAOxT,EACxC,IAAMnC,EAAUF,EAAUyY,UAAUpW,GAAWqW,OAAO,GACtD,GAAgB,MAAZxY,GAA+B,MAAZA,EAAiB,CACtC,IAAI8H,EAMJ,IAJEA,EADc,MAAZ9H,EACO,IAEA,IAEJF,EAAUyY,UAAUpW,EAAY,GAAGqW,OAAO,KAAO1Q,OACtD3F,EACgB,KAIlBA,GACF,CACA,OAAOA,CACT,EAACrC,CAAA,CAGyB,ICzDPgI,EAAA,WACnB,SAAAhI,EAAYA,EAAWqC,GAErBtC,EAAY2W,KAAKc,KAAMnV,EAASrC,GAEhCwX,KAAKoB,OACP,CAAC,IAAAvW,EAAArC,EAAAyW,UAgaA,OAhaApU,EAMD0G,OAAA,WACEyO,KAAKnH,MAAMrK,OAASwR,KAAKpL,QAAUoL,KAAKqB,MAC1C,EAACxW,EAMDwW,KAAA,WACMrB,KAAKU,gBACLV,KAAKnH,MAAMrK,SACfwR,KAAKsB,gBAAA,GACLtB,KAAKnH,MAAMrK,QAAA,EACXwR,KAAKhM,QAAQ8K,OAAOkB,KAAKI,SAAUJ,MACrC,EAACnV,EAMD+J,MAAA,WACMoL,KAAKU,gBACJV,KAAKnH,MAAMrK,SAChBwR,KAAKnH,MAAMrK,QAAA,EACPwR,KAAKnH,MAAM0H,UACbP,KAAKO,UAAUP,KAAKnH,MAAM2H,UAAWR,KAAKnH,MAAM4H,WAEhDT,KAAKuB,UAAUvB,KAAKnH,MAAM2H,UAAWR,KAAKnH,MAAM4H,WAElDT,KAAKhM,QAAQ+K,QAAQiB,KAAKI,SAAUJ,MACtC,EAACnV,EAMD2W,QAAA,WACExB,KAAKyB,OAAA,GACLzB,KAAKhM,QAAQgL,UAAUgB,KACzB,EAACnV,EAOD4W,MAAA,SAAMjZ,QAAA,IAAAA,IAAAA,GAAA,GACJkZ,cAAc1B,KAAK2B,SACnB3B,KAAK4B,YAAY,IACb5B,KAAK6B,QAAU7B,KAAK6B,OAAOC,aAC7B9B,KAAK6B,OAAOC,WAAWC,YAAY/B,KAAK6B,QACxC7B,KAAK6B,OAAS,MAEhB7B,KAAKF,OAAS,EACdE,KAAKI,SAAW,EAChBJ,KAAKM,QAAU,EACX9X,IACFwX,KAAKgC,eACLhC,KAAKhM,QAAQ6K,QAAQmB,MACrBA,KAAKoB,QAET,EAACvW,EAMDuW,MAAA,WAAQ,IAAA5Y,EACNwX,KAAAA,KAAKhM,QAAQsK,QAAQ0B,MACrBA,KAAKU,gBAAA,EACLV,KAAKiC,uBAAuBjC,MAC5BA,KAAKgC,eACDhC,KAAK5B,sBAAsB4B,KAAKkC,kBACpClC,KAAK2B,QAAUpU,YAAW,WAGJ,IAAhB/E,EAAKsX,OACPtX,EAAK+X,UAAU/X,EAAK0U,QAAQ1U,EAAK2X,SAAS3X,EAAK4X,WAAY5X,EAAKsX,QAEhEtX,EAAK+Y,UAAU/Y,EAAK0U,QAAQ1U,EAAK2X,SAAS3X,EAAK4X,WAAY5X,EAAKsX,OAEpE,GAAGE,KAAK3C,WACV,EAACxS,EAQD0V,UAAA,SAAU/X,EAAWqC,GAAW,IAAAtC,EAC9B,KAAIyX,KAAKtC,SAAWsC,KAAKb,GAAG3S,UAAUqQ,SAASmD,KAAKrC,gBAClDqC,KAAKb,GAAG3S,UAAUC,OAAOuT,KAAKrC,cAC1BqC,KAAK6B,QAAQ7B,KAAK6B,OAAOrV,UAAUC,OAAOuT,KAAKrC,eAGrD,IAAMnN,EAAWwP,KAAKmC,UAAUnC,KAAK5C,WACjC9U,EAAW,OAEX0X,KAAKnH,MAAMrK,OAMfwR,KAAK2B,QAAUpU,YAAW,WAExB1C,EAAYnC,EAAWsY,cAAcxY,EAAWqC,EAAWtC,GAE3D,IAAIiI,EAAY,EACZ3H,EAASL,EAAUyY,UAAUpW,GAIjC,GAAyB,MAArBhC,EAAOqY,OAAO,IACZ,SAASkB,KAAKvZ,GAAS,CACzB,IAAImC,EAAO,EAEXA,IADAnC,EAAS,MAAMwZ,KAAKxZ,GAAQ,IACbC,OACf0H,EAAY8R,SAASzZ,GACrBN,EAAKga,gBAAA,EACLha,EAAKyL,QAAQ2K,eAAepW,EAAK6X,SAAU7X,GAE3CC,EACEA,EAAUyY,UAAU,EAAGpW,GACvBrC,EAAUyY,UAAUpW,EAAYG,GAClCzC,EAAK+Y,gBAAA,EACP,CAKF,GAAyB,MAArBzY,EAAOqY,OAAO,GAAY,CAC5B,KAA+D,MAAxD1Y,EAAUyY,UAAUpW,EAAYvC,GAAU4Y,OAAO,KACtD5Y,MACIuC,EAAYvC,EAAWE,EAAUM,WAGvC,IAAM2H,EAAmBjI,EAAUyY,UAAU,EAAGpW,GAC1CsB,EAAgB3D,EAAUyY,UAC9BxQ,EAAiB3H,OAAS,EAC1B+B,EAAYvC,GAER8C,EAAkB5C,EAAUyY,UAAUpW,EAAYvC,EAAW,GACnEE,EAAYiI,EAAmBtE,EAAgBf,EAC/C9C,GACF,CAGAC,EAAKoZ,QAAUpU,YAAW,WAExBhF,EAAK+Y,gBAAA,GAGDzW,GAAarC,EAAUM,OACzBP,EAAKia,WAAWha,EAAWqC,GAE3BtC,EAAKka,WAAWja,EAAWqC,EAAWvC,GAGpCC,EAAKga,iBACPha,EAAKga,gBAAA,EACLha,EAAKyL,QAAQ4K,gBAAgBrW,EAAK6X,SAAU7X,GAEhD,GAAGiI,EAGL,GAAGA,GAnEDwP,KAAK0C,eAAela,EAAWqC,GAAA,EAoEnC,EAACA,EAQD4X,WAAA,SAAWja,EAAWqC,EAAWtC,GAEb,IAAdsC,IACFmV,KAAKsB,gBAAA,GACLtB,KAAKhM,QAAQwK,eAAewB,KAAKI,SAAUJ,OAK7C,IAAMtX,EAAaF,EAAUyY,UAAU,EADvCpW,GAAatC,GAEbyX,KAAK4B,YAAYlZ,GAEjBsX,KAAKO,UAAU/X,EAAWqC,EAC5B,EAACA,EAQD2X,WAAA,SAAWha,EAAWqC,GAAW,IAAAtC,EAAA,KAE/ByX,KAAKhM,QAAQyK,cAAcuB,KAAKI,SAAUJ,MAC1CA,KAAKsB,gBAAA,GAEDtB,KAAKI,WAAaJ,KAAK9C,QAAQpU,OAAS,IAE1CkX,KAAK2C,YAAA,IAED3C,KAAKnC,MAAkBmC,KAAKM,UAAYN,KAAKlC,aAInDkC,KAAK2B,QAAUpU,YAAW,WACxBhF,EAAKgZ,UAAU/Y,EAAWqC,EAC5B,GAAGmV,KAAKvC,WACV,EAAC5S,EAQD0W,UAAA,SAAU/Y,EAAWqC,GAAW,IAAAtC,EAAA,KAC9B,IAAI,IAAAyX,KAAKnH,MAAMrK,OAAf,CAIA,GAAIwR,KAAKtC,QAAS,OAAOsC,KAAK4C,cAE9B5C,KAAKsB,gBAAA,GACL,IAAM9Q,EAAWwP,KAAKmC,UAAUnC,KAAK1C,WAErC0C,KAAK2B,QAAUpU,YAAW,WACxB1C,EAAYnC,EAAWyY,mBAAmB3Y,EAAWqC,EAAWtC,GAEhE,IAAMiI,EAAsBhI,EAAUyY,UAAU,EAAGpW,GAInD,GAHAtC,EAAKqZ,YAAYpR,GAGbjI,EAAKgV,eAAgB,CAEvB,IAAIjV,EAAaC,EAAK2U,QAAQ3U,EAAK6X,SAAW,GAK5C7X,EAAK8X,QAHL/X,GACAkI,IAAwBlI,EAAW2Y,UAAU,EAAGpW,GAEjCA,EAEA,CAEnB,CAIIA,EAAYtC,EAAK8X,SAEnBxV,IAEAtC,EAAKgZ,UAAU/Y,EAAWqC,IACjBA,GAAatC,EAAK8X,UAG3B9X,EAAK6X,WAED7X,EAAK6X,WAAa7X,EAAK2U,QAAQpU,QACjCP,EAAK6X,SAAW,EAChB7X,EAAKyL,QAAQ0K,yBACbnW,EAAK0Z,yBACL1Z,EAAK6Y,SAEL7Y,EAAKgY,UAAUhY,EAAK2U,QAAQ3U,EAAK4X,SAAS5X,EAAK6X,WAAYvV,GAIjE,GAAG2F,EAhDH,MAFEwP,KAAK0C,eAAela,EAAWqC,GAAA,EAmDnC,EAACA,EAMD8X,SAAA,WACE3C,KAAKhM,QAAQuK,WAAWyB,MACpBA,KAAKnC,KACPmC,KAAKM,UAELN,KAAKU,gBAAA,CAET,EAAC7V,EASD6X,eAAA,SAAela,EAAWqC,EAAWtC,GACnCyX,KAAKnH,MAAM0H,UAAYhY,EACvByX,KAAKnH,MAAM2H,UAAYhY,EACvBwX,KAAKnH,MAAM4H,UAAY5V,CACzB,EAACA,EAODyW,eAAA,SAAe9Y,GACRwX,KAAK6B,SAEN7B,KAAKnH,MAAMrK,QACXwR,KAAKT,iBAAmB/W,IAC5BwX,KAAKT,eAAiB/W,EAClBA,EACFwX,KAAK6B,OAAOrV,UAAUE,IAAI,uBAE1BsT,KAAK6B,OAAOrV,UAAUC,OAAO,wBAEjC,EAAC5B,EAODsX,UAAA,SAAU3Z,GACR,OAAOiN,KAAKoN,MAAOpN,KAAKqN,SAAWta,EAAS,GAAKA,CACnD,EAACqC,EAMDoX,uBAAA,WACOjC,KAAKxC,UACVwC,KAAKG,SAAWH,KAAKG,SAAS4C,MAAK,WAAM,OAAAtN,KAAKqN,SAAW,EAAG,IAC9D,EAACjY,EAMD+X,YAAA,WAAc,IAAApa,EACZwX,KAEA,OAFAA,KAAKb,GAAG1R,WAAA,IAAiBuS,KAAKrC,aAC1BqC,KAAK6B,SAAQ7B,KAAK6B,OAAOpU,WAAS,IAAQuS,KAAKrC,cAC5CpQ,YAAW,WAChB/E,EAAK4X,WACL5X,EAAKoZ,YAAY,IAGbpZ,EAAK0U,QAAQpU,OAASN,EAAK4X,SAC7B5X,EAAK+X,UAAU/X,EAAK0U,QAAQ1U,EAAK2X,SAAS3X,EAAK4X,WAAY,IAE3D5X,EAAK+X,UAAU/X,EAAK0U,QAAQ,GAAI,GAChC1U,EAAK4X,SAAW,EAEpB,GAAGJ,KAAKpC,aACV,EAAC/S,EAQD+W,YAAA,SAAYpZ,GACNwX,KAAK7B,KACP6B,KAAKb,GAAG2B,aAAad,KAAK7B,KAAM3V,GAE5BwX,KAAKZ,QACPY,KAAKb,GAAG0B,MAAQrY,EACc,SAArBwX,KAAK3B,YACd2B,KAAKb,GAAGU,UAAYrX,EAEpBwX,KAAKb,GAAGO,YAAclX,CAG5B,EAACqC,EAODqX,gBAAA,eAAkB1Z,EAAA,KACXwX,KAAKZ,UACVY,KAAKb,GAAGxS,iBAAiB,SAAS,SAAC9B,GACjCrC,EAAK6Y,MACP,IACArB,KAAKb,GAAGxS,iBAAiB,QAAQ,SAAC9B,GAC5BrC,EAAK2W,GAAG0B,OAAkC,IAAzBrY,EAAK2W,GAAG0B,MAAM/X,QAGnCN,EAAKoM,OACP,IACF,EAAC/J,EAMDmX,aAAA,WACOhC,KAAKhC,aACNgC,KAAK6B,SACT7B,KAAK6B,OAAS7Y,SAASG,cAAc,QACrC6W,KAAK6B,OAAOpU,UAAY,eACxBuS,KAAK6B,OAAOf,aAAa,kBACzBd,KAAK6B,OAAOhC,UAAYG,KAAK/B,WAC7B+B,KAAKb,GAAG2C,YACN9B,KAAKb,GAAG2C,WAAWxY,aAAa0W,KAAK6B,OAAQ7B,KAAKb,GAAG6D,cACzD,EAACxa,CAAA,CAtakB,IC0KgCya,EAAAA,EAAAA,OACnD1Y,IASK,IATJ,MACCyC,EAAK,UACLS,EAAS,SACTyV,EACAC,SAAUC,EAAY,QACtBC,EAAO,SACPtY,EAAQ,iBACRuY,KACGC,GACJhZ,EACC,MAAMiZ,GAAcC,EAAAA,EAAAA,QAAY,MAC1BC,GAAmBC,EAAAA,EAAAA,UACvB,IAAM,IACDxR,OAAO7B,OAAOiT,GAAcjR,QAC5B5G,GACc,mBAANA,GACM,kBAANA,GACM,kBAANA,IAEX6X,EAAarG,SAAS0G,KAAK,OAE7B,CAACL,KAEHM,EAAAA,EAAAA,YAAU,KACR,MAAMC,EACHV,GAAgBA,EAAaI,IAAiBA,EAAYtX,QACvD6X,EAAQ,IAAIC,EAAMF,EAAS,IAAKP,IAMtC,IAJIF,GAAWC,IACbS,GAAO1C,OAGLiC,EAAkB,CACpB,MAAMW,EAAW,IAAIC,sBAAqBpZ,IAAY,IAAVqZ,GAAMrZ,EAC5CqZ,EAAMC,iBACRL,GAAOnP,QACPqP,EAASI,aACX,IAEFJ,EAAS3S,QAAQwS,EACnB,CAKA,OAHIZ,GAAYa,GACdb,EAASa,GAEJ,KACLA,EAAMvC,SAAS,CAChB,GACAkC,GAEH,MAAMY,EAASvZ,EAGbwZ,EAAAA,aAAmBxZ,EAAU,CAC3BgQ,IAAKyI,IAHPe,EAAAA,cAAA,QAAMvX,MAAOA,EAAO+N,IAAKyI,IAM3B,OACEe,EAAAA,cAAA,QAAMvX,MAAOA,EAAOS,UAAWA,EAAS,cAAc,eACnD6W,EACI,G","sources":["../node_modules/clsx/dist/clsx.mjs","../node_modules/react-toastify/src/style.css","../node_modules/react-toastify/src/utils/propValidator.ts","../node_modules/react-toastify/src/utils/cssTransition.tsx","../node_modules/react-toastify/src/utils/collapseToast.ts","../node_modules/react-toastify/src/utils/mapper.ts","../node_modules/react-toastify/src/components/ProgressBar.tsx","../node_modules/react-toastify/src/core/genToastId.ts","../node_modules/react-toastify/src/core/containerObserver.ts","../node_modules/react-toastify/src/core/store.ts","../node_modules/react-toastify/src/core/toast.ts","../node_modules/react-toastify/src/hooks/useToast.ts","../node_modules/react-toastify/src/hooks/useIsomorphicLayoutEffect.ts","../node_modules/react-toastify/src/components/Icons.tsx","../node_modules/react-toastify/src/components/Toast.tsx","../node_modules/react-toastify/src/components/CloseButton.tsx","../node_modules/react-toastify/src/components/Transitions.tsx","../node_modules/react-toastify/src/components/ToastContainer.tsx","../node_modules/react-toastify/src/hooks/useToastContainer.ts","../node_modules/typed.js/src/defaults.js","../node_modules/typed.js/src/initializer.js","../node_modules/typed.js/src/html-parser.js","../node_modules/typed.js/src/typed.js","../node_modules/react-typed/src/index.tsx"],"sourcesContent":["function r(e){var t,f,n=\"\";if(\"string\"==typeof e||\"number\"==typeof e)n+=e;else if(\"object\"==typeof e)if(Array.isArray(e)){var o=e.length;for(t=0;t*{opacity:0}.Toastify__toast--stacked:after{content:\\\"\\\";position:absolute;left:0;right:0;height:calc(var(--g) * 1px);bottom:100%}.Toastify__toast--stacked[data-pos=top]{top:0}.Toastify__toast--stacked[data-pos=bot]{bottom:0}.Toastify__toast--stacked[data-pos=bot].Toastify__toast--stacked:before{transform-origin:top}.Toastify__toast--stacked[data-pos=top].Toastify__toast--stacked:before{transform-origin:bottom}.Toastify__toast--stacked:before{content:\\\"\\\";position:absolute;left:0;right:0;bottom:0;height:100%;transform:scaleY(3);z-index:-1}.Toastify__toast--rtl{direction:rtl}.Toastify__toast--close-on-click{cursor:pointer}.Toastify__toast-icon{margin-inline-end:10px;width:22px;flex-shrink:0;display:flex}.Toastify--animate{animation-fill-mode:both;animation-duration:.5s}.Toastify--animate-icon{animation-fill-mode:both;animation-duration:.3s}.Toastify__toast-theme--dark{background:var(--toastify-color-dark);color:var(--toastify-text-color-dark)}.Toastify__toast-theme--light,.Toastify__toast-theme--colored.Toastify__toast--default{background:var(--toastify-color-light);color:var(--toastify-text-color-light)}.Toastify__toast-theme--colored.Toastify__toast--info{color:var(--toastify-text-color-info);background:var(--toastify-color-info)}.Toastify__toast-theme--colored.Toastify__toast--success{color:var(--toastify-text-color-success);background:var(--toastify-color-success)}.Toastify__toast-theme--colored.Toastify__toast--warning{color:var(--toastify-text-color-warning);background:var(--toastify-color-warning)}.Toastify__toast-theme--colored.Toastify__toast--error{color:var(--toastify-text-color-error);background:var(--toastify-color-error)}.Toastify__progress-bar-theme--light{background:var(--toastify-color-progress-light)}.Toastify__progress-bar-theme--dark{background:var(--toastify-color-progress-dark)}.Toastify__progress-bar--info{background:var(--toastify-color-progress-info)}.Toastify__progress-bar--success{background:var(--toastify-color-progress-success)}.Toastify__progress-bar--warning{background:var(--toastify-color-progress-warning)}.Toastify__progress-bar--error{background:var(--toastify-color-progress-error)}.Toastify__progress-bar-theme--colored.Toastify__progress-bar--info,.Toastify__progress-bar-theme--colored.Toastify__progress-bar--success,.Toastify__progress-bar-theme--colored.Toastify__progress-bar--warning,.Toastify__progress-bar-theme--colored.Toastify__progress-bar--error{background:var(--toastify-color-transparent)}.Toastify__close-button{color:#fff;position:absolute;top:6px;right:6px;background:transparent;outline:none;border:none;padding:0;cursor:pointer;opacity:.7;transition:.3s ease;z-index:1}.Toastify__toast--rtl .Toastify__close-button{left:6px;right:unset}.Toastify__close-button--light{color:#000;opacity:.3}.Toastify__close-button>svg{fill:currentColor;height:16px;width:14px}.Toastify__close-button:hover,.Toastify__close-button:focus{opacity:1}@keyframes Toastify__trackProgress{0%{transform:scaleX(1)}to{transform:scaleX(0)}}.Toastify__progress-bar{position:absolute;bottom:0;left:0;width:100%;height:100%;z-index:1;opacity:.7;transform-origin:left}.Toastify__progress-bar--animated{animation:Toastify__trackProgress linear 1 forwards}.Toastify__progress-bar--controlled{transition:transform .2s}.Toastify__progress-bar--rtl{right:0;left:initial;transform-origin:right;border-bottom-left-radius:initial}.Toastify__progress-bar--wrp{position:absolute;overflow:hidden;bottom:0;left:0;width:100%;height:5px;border-bottom-left-radius:var(--toastify-toast-bd-radius);border-bottom-right-radius:var(--toastify-toast-bd-radius)}.Toastify__progress-bar--wrp[data-hidden=true]{opacity:0}.Toastify__progress-bar--bg{opacity:var(--toastify-color-progress-bgo);width:100%;height:100%}.Toastify__spinner{width:20px;height:20px;box-sizing:border-box;border:2px solid;border-radius:100%;border-color:var(--toastify-spinner-color-empty-area);border-right-color:var(--toastify-spinner-color);animation:Toastify__spin .65s linear infinite}@keyframes Toastify__bounceInRight{0%,60%,75%,90%,to{animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;transform:translate3d(3000px,0,0)}60%{opacity:1;transform:translate3d(-25px,0,0)}75%{transform:translate3d(10px,0,0)}90%{transform:translate3d(-5px,0,0)}to{transform:none}}@keyframes Toastify__bounceOutRight{20%{opacity:1;transform:translate3d(-20px,var(--y),0)}to{opacity:0;transform:translate3d(2000px,var(--y),0)}}@keyframes Toastify__bounceInLeft{0%,60%,75%,90%,to{animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;transform:translate3d(-3000px,0,0)}60%{opacity:1;transform:translate3d(25px,0,0)}75%{transform:translate3d(-10px,0,0)}90%{transform:translate3d(5px,0,0)}to{transform:none}}@keyframes Toastify__bounceOutLeft{20%{opacity:1;transform:translate3d(20px,var(--y),0)}to{opacity:0;transform:translate3d(-2000px,var(--y),0)}}@keyframes Toastify__bounceInUp{0%,60%,75%,90%,to{animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;transform:translate3d(0,3000px,0)}60%{opacity:1;transform:translate3d(0,-20px,0)}75%{transform:translate3d(0,10px,0)}90%{transform:translate3d(0,-5px,0)}to{transform:translateZ(0)}}@keyframes Toastify__bounceOutUp{20%{transform:translate3d(0,calc(var(--y) - 10px),0)}40%,45%{opacity:1;transform:translate3d(0,calc(var(--y) + 20px),0)}to{opacity:0;transform:translate3d(0,-2000px,0)}}@keyframes Toastify__bounceInDown{0%,60%,75%,90%,to{animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;transform:translate3d(0,-3000px,0)}60%{opacity:1;transform:translate3d(0,25px,0)}75%{transform:translate3d(0,-10px,0)}90%{transform:translate3d(0,5px,0)}to{transform:none}}@keyframes Toastify__bounceOutDown{20%{transform:translate3d(0,calc(var(--y) - 10px),0)}40%,45%{opacity:1;transform:translate3d(0,calc(var(--y) + 20px),0)}to{opacity:0;transform:translate3d(0,2000px,0)}}.Toastify__bounce-enter--top-left,.Toastify__bounce-enter--bottom-left{animation-name:Toastify__bounceInLeft}.Toastify__bounce-enter--top-right,.Toastify__bounce-enter--bottom-right{animation-name:Toastify__bounceInRight}.Toastify__bounce-enter--top-center{animation-name:Toastify__bounceInDown}.Toastify__bounce-enter--bottom-center{animation-name:Toastify__bounceInUp}.Toastify__bounce-exit--top-left,.Toastify__bounce-exit--bottom-left{animation-name:Toastify__bounceOutLeft}.Toastify__bounce-exit--top-right,.Toastify__bounce-exit--bottom-right{animation-name:Toastify__bounceOutRight}.Toastify__bounce-exit--top-center{animation-name:Toastify__bounceOutUp}.Toastify__bounce-exit--bottom-center{animation-name:Toastify__bounceOutDown}@keyframes Toastify__zoomIn{0%{opacity:0;transform:scale3d(.3,.3,.3)}50%{opacity:1}}@keyframes Toastify__zoomOut{0%{opacity:1}50%{opacity:0;transform:translate3d(0,var(--y),0) scale3d(.3,.3,.3)}to{opacity:0}}.Toastify__zoom-enter{animation-name:Toastify__zoomIn}.Toastify__zoom-exit{animation-name:Toastify__zoomOut}@keyframes Toastify__flipIn{0%{transform:perspective(400px) rotateX(90deg);animation-timing-function:ease-in;opacity:0}40%{transform:perspective(400px) rotateX(-20deg);animation-timing-function:ease-in}60%{transform:perspective(400px) rotateX(10deg);opacity:1}80%{transform:perspective(400px) rotateX(-5deg)}to{transform:perspective(400px)}}@keyframes Toastify__flipOut{0%{transform:translate3d(0,var(--y),0) perspective(400px)}30%{transform:translate3d(0,var(--y),0) perspective(400px) rotateX(-20deg);opacity:1}to{transform:translate3d(0,var(--y),0) perspective(400px) rotateX(90deg);opacity:0}}.Toastify__flip-enter{animation-name:Toastify__flipIn}.Toastify__flip-exit{animation-name:Toastify__flipOut}@keyframes Toastify__slideInRight{0%{transform:translate3d(110%,0,0);visibility:visible}to{transform:translate3d(0,var(--y),0)}}@keyframes Toastify__slideInLeft{0%{transform:translate3d(-110%,0,0);visibility:visible}to{transform:translate3d(0,var(--y),0)}}@keyframes Toastify__slideInUp{0%{transform:translate3d(0,110%,0);visibility:visible}to{transform:translate3d(0,var(--y),0)}}@keyframes Toastify__slideInDown{0%{transform:translate3d(0,-110%,0);visibility:visible}to{transform:translate3d(0,var(--y),0)}}@keyframes Toastify__slideOutRight{0%{transform:translate3d(0,var(--y),0)}to{visibility:hidden;transform:translate3d(110%,var(--y),0)}}@keyframes Toastify__slideOutLeft{0%{transform:translate3d(0,var(--y),0)}to{visibility:hidden;transform:translate3d(-110%,var(--y),0)}}@keyframes Toastify__slideOutDown{0%{transform:translate3d(0,var(--y),0)}to{visibility:hidden;transform:translate3d(0,500px,0)}}@keyframes Toastify__slideOutUp{0%{transform:translate3d(0,var(--y),0)}to{visibility:hidden;transform:translate3d(0,-500px,0)}}.Toastify__slide-enter--top-left,.Toastify__slide-enter--bottom-left{animation-name:Toastify__slideInLeft}.Toastify__slide-enter--top-right,.Toastify__slide-enter--bottom-right{animation-name:Toastify__slideInRight}.Toastify__slide-enter--top-center{animation-name:Toastify__slideInDown}.Toastify__slide-enter--bottom-center{animation-name:Toastify__slideInUp}.Toastify__slide-exit--top-left,.Toastify__slide-exit--bottom-left{animation-name:Toastify__slideOutLeft;animation-timing-function:ease-in;animation-duration:.3s}.Toastify__slide-exit--top-right,.Toastify__slide-exit--bottom-right{animation-name:Toastify__slideOutRight;animation-timing-function:ease-in;animation-duration:.3s}.Toastify__slide-exit--top-center{animation-name:Toastify__slideOutUp;animation-timing-function:ease-in;animation-duration:.3s}.Toastify__slide-exit--bottom-center{animation-name:Toastify__slideOutDown;animation-timing-function:ease-in;animation-duration:.3s}@keyframes Toastify__spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}\\n\");","import { isValidElement } from 'react';\nimport { Id } from '../types';\n\nexport const isNum = (v: any): v is Number => typeof v === 'number' && !isNaN(v);\n\nexport const isStr = (v: any): v is String => typeof v === 'string';\n\nexport const isFn = (v: any): v is Function => typeof v === 'function';\n\nexport const isId = (v: unknown): v is Id => isStr(v) || isNum(v);\n\nexport const parseClassName = (v: any) => (isStr(v) || isFn(v) ? v : null);\n\nexport const getAutoCloseDelay = (toastAutoClose?: false | number, containerAutoClose?: false | number) =>\n toastAutoClose === false || (isNum(toastAutoClose) && toastAutoClose > 0) ? toastAutoClose : containerAutoClose;\n\nexport const canBeRendered = (content: T): boolean =>\n isValidElement(content) || isStr(content) || isFn(content) || isNum(content);\n","import React, { useEffect, useLayoutEffect, useRef } from 'react';\nimport { collapseToast } from './collapseToast';\nimport { Default } from './constant';\n\nimport { ToastTransitionProps } from '../types';\n\nexport interface CSSTransitionProps {\n /**\n * Css class to apply when toast enter\n */\n enter: string;\n\n /**\n * Css class to apply when toast leave\n */\n exit: string;\n\n /**\n * Append current toast position to the classname.\n * If multiple classes are provided, only the last one will get the position\n * For instance `myclass--top-center`...\n * `Default: false`\n */\n appendPosition?: boolean;\n\n /**\n * Collapse toast smoothly when exit animation end\n * `Default: true`\n */\n collapse?: boolean;\n\n /**\n * Collapse transition duration\n * `Default: 300`\n */\n collapseDuration?: number;\n}\n\nconst enum AnimationStep {\n Enter,\n Exit\n}\n\n/**\n * Css animation that just work.\n * You could use animate.css for instance\n *\n *\n * ```\n * cssTransition({\n * enter: \"animate__animated animate__bounceIn\",\n * exit: \"animate__animated animate__bounceOut\"\n * })\n * ```\n *\n */\nexport function cssTransition({\n enter,\n exit,\n appendPosition = false,\n collapse = true,\n collapseDuration = Default.COLLAPSE_DURATION\n}: CSSTransitionProps) {\n return function ToastTransition({\n children,\n position,\n preventExitTransition,\n done,\n nodeRef,\n isIn,\n playToast\n }: ToastTransitionProps) {\n const enterClassName = appendPosition ? `${enter}--${position}` : enter;\n const exitClassName = appendPosition ? `${exit}--${position}` : exit;\n const animationStep = useRef(AnimationStep.Enter);\n\n useLayoutEffect(() => {\n const node = nodeRef.current!;\n const classToToken = enterClassName.split(' ');\n\n const onEntered = (e: AnimationEvent) => {\n if (e.target !== nodeRef.current) return;\n\n playToast();\n node.removeEventListener('animationend', onEntered);\n node.removeEventListener('animationcancel', onEntered);\n if (animationStep.current === AnimationStep.Enter && e.type !== 'animationcancel') {\n node.classList.remove(...classToToken);\n }\n };\n\n const onEnter = () => {\n node.classList.add(...classToToken);\n node.addEventListener('animationend', onEntered);\n node.addEventListener('animationcancel', onEntered);\n };\n\n onEnter();\n }, []);\n\n useEffect(() => {\n const node = nodeRef.current!;\n\n const onExited = () => {\n node.removeEventListener('animationend', onExited);\n collapse ? collapseToast(node, done, collapseDuration) : done();\n };\n\n const onExit = () => {\n animationStep.current = AnimationStep.Exit;\n node.className += ` ${exitClassName}`;\n node.addEventListener('animationend', onExited);\n };\n\n if (!isIn) preventExitTransition ? onExited() : onExit();\n }, [isIn]);\n\n return <>{children};\n };\n}\n","import { Default } from './constant';\n\n/**\n * Used to collapse toast after exit animation\n */\nexport function collapseToast(node: HTMLElement, done: () => void, duration = Default.COLLAPSE_DURATION) {\n const { scrollHeight, style } = node;\n\n requestAnimationFrame(() => {\n style.minHeight = 'initial';\n style.height = scrollHeight + 'px';\n style.transition = `all ${duration}ms`;\n\n requestAnimationFrame(() => {\n style.height = '0';\n style.padding = '0';\n style.margin = '0';\n setTimeout(done, duration as number);\n });\n });\n}\n","import { Toast, ToastContentProps, ToastItem, ToastItemStatus, ToastProps } from '../types';\nimport { cloneElement, isValidElement, ReactElement } from 'react';\nimport { isFn, isStr } from './propValidator';\n\nexport function toToastItem(toast: Toast, status: ToastItemStatus): ToastItem {\n return {\n content: renderContent(toast.content, toast.props),\n containerId: toast.props.containerId,\n id: toast.props.toastId,\n theme: toast.props.theme,\n type: toast.props.type,\n data: toast.props.data || {},\n isLoading: toast.props.isLoading,\n icon: toast.props.icon,\n reason: toast.removalReason,\n status\n };\n}\n\nexport function renderContent(content: unknown, props: ToastProps, isPaused: boolean = false) {\n if (isValidElement(content) && !isStr(content.type)) {\n return cloneElement(content as ReactElement, {\n closeToast: props.closeToast,\n toastProps: props,\n data: props.data,\n isPaused\n });\n } else if (isFn(content)) {\n return content({\n closeToast: props.closeToast,\n toastProps: props,\n data: props.data,\n isPaused\n });\n }\n\n return content;\n}\n","import React from 'react';\nimport cx from 'clsx';\n\nimport { Default, isFn, Type } from '../utils';\nimport { Theme, ToastClassName, TypeOptions } from '../types';\n\nexport interface ProgressBarProps {\n /**\n * The animation delay which determine when to close the toast\n */\n delay: number;\n\n /**\n * The animation is running or paused\n */\n isRunning: boolean;\n\n /**\n * Func to close the current toast\n */\n closeToast: () => void;\n\n /**\n * Optional type : info, success ...\n */\n type?: TypeOptions;\n\n /**\n * The theme that is currently used\n */\n theme: Theme;\n\n /**\n * Hide or not the progress bar\n */\n hide?: boolean;\n\n /**\n * Optional className\n */\n className?: ToastClassName;\n\n /**\n * Tell whether a controlled progress bar is used\n */\n controlledProgress?: boolean;\n\n /**\n * Controlled progress value\n */\n progress?: number | string;\n\n /**\n * Support rtl content\n */\n rtl?: boolean;\n\n /**\n * Tell if the component is visible on screen or not\n */\n isIn?: boolean;\n}\n\nexport function ProgressBar({\n delay,\n isRunning,\n closeToast,\n type = Type.DEFAULT,\n hide,\n className,\n controlledProgress,\n progress,\n rtl,\n isIn,\n theme\n}: ProgressBarProps) {\n const isHidden = hide || (controlledProgress && progress === 0);\n const style: React.CSSProperties = {\n animationDuration: `${delay}ms`,\n animationPlayState: isRunning ? 'running' : 'paused'\n };\n\n if (controlledProgress) style.transform = `scaleX(${progress})`;\n const defaultClassName = cx(\n `${Default.CSS_NAMESPACE}__progress-bar`,\n controlledProgress\n ? `${Default.CSS_NAMESPACE}__progress-bar--controlled`\n : `${Default.CSS_NAMESPACE}__progress-bar--animated`,\n `${Default.CSS_NAMESPACE}__progress-bar-theme--${theme}`,\n `${Default.CSS_NAMESPACE}__progress-bar--${type}`,\n {\n [`${Default.CSS_NAMESPACE}__progress-bar--rtl`]: rtl\n }\n );\n const classNames = isFn(className)\n ? className({\n rtl,\n type,\n defaultClassName\n })\n : cx(defaultClassName, className);\n\n // 🧐 controlledProgress is derived from progress\n // so if controlledProgress is set\n // it means that this is also the case for progress\n const animationEvent = {\n [controlledProgress && (progress as number)! >= 1 ? 'onTransitionEnd' : 'onAnimationEnd']:\n controlledProgress && (progress as number)! < 1\n ? null\n : () => {\n isIn && closeToast();\n }\n };\n\n // TODO: add aria-valuenow, aria-valuemax, aria-valuemin\n\n return (\n
\n \n \n
\n );\n}\n","let TOAST_ID = 1;\n\nexport const genToastId = () => `${TOAST_ID++}`;\n","import {\n Id,\n NotValidatedToastProps,\n OnChangeCallback,\n Toast,\n ToastContainerProps,\n ToastContent,\n ToastProps\n} from '../types';\nimport { canBeRendered, getAutoCloseDelay, isNum, parseClassName, toToastItem } from '../utils';\n\ntype Notify = () => void;\n\nexport type ContainerObserver = ReturnType;\n\nexport function createContainerObserver(\n id: Id,\n containerProps: ToastContainerProps,\n dispatchChanges: OnChangeCallback\n) {\n let toastKey = 1;\n let toastCount = 0;\n let queue: Toast[] = [];\n let snapshot: Toast[] = [];\n let props = containerProps;\n const toasts = new Map();\n const listeners = new Set();\n\n const observe = (notify: Notify) => {\n listeners.add(notify);\n return () => listeners.delete(notify);\n };\n\n const notify = () => {\n snapshot = Array.from(toasts.values());\n listeners.forEach(cb => cb());\n };\n\n const shouldIgnoreToast = ({ containerId, toastId, updateId }: NotValidatedToastProps) => {\n const containerMismatch = containerId ? containerId !== id : id !== 1;\n const isDuplicate = toasts.has(toastId) && updateId == null;\n\n return containerMismatch || isDuplicate;\n };\n\n const toggle = (v: boolean, id?: Id) => {\n toasts.forEach(t => {\n if (id == null || id === t.props.toastId) t.toggle?.(v);\n });\n };\n\n const markAsRemoved = (v: Toast) => {\n v.props?.onClose?.(v.removalReason);\n v.isActive = false;\n };\n\n const removeToast = (id?: Id) => {\n if (id == null) {\n toasts.forEach(markAsRemoved);\n } else {\n const t = toasts.get(id);\n if (t) markAsRemoved(t);\n }\n notify();\n };\n\n const clearQueue = () => {\n toastCount -= queue.length;\n queue = [];\n };\n\n const addActiveToast = (toast: Toast) => {\n const { toastId, updateId } = toast.props;\n const isNew = updateId == null;\n\n if (toast.staleId) toasts.delete(toast.staleId);\n toast.isActive = true;\n\n toasts.set(toastId, toast);\n notify();\n dispatchChanges(toToastItem(toast, isNew ? 'added' : 'updated'));\n\n if (isNew) toast.props.onOpen?.();\n };\n\n const buildToast = (content: ToastContent, options: NotValidatedToastProps) => {\n if (shouldIgnoreToast(options)) return;\n\n const { toastId, updateId, data, staleId, delay } = options;\n\n const isNotAnUpdate = updateId == null;\n\n if (isNotAnUpdate) toastCount++;\n\n const toastProps = {\n ...props,\n style: props.toastStyle,\n key: toastKey++,\n ...Object.fromEntries(Object.entries(options).filter(([_, v]) => v != null)),\n toastId,\n updateId,\n data,\n isIn: false,\n className: parseClassName(options.className || props.toastClassName),\n progressClassName: parseClassName(options.progressClassName || props.progressClassName),\n autoClose: options.isLoading ? false : getAutoCloseDelay(options.autoClose, props.autoClose),\n closeToast(reason?: true) {\n toasts.get(toastId)!.removalReason = reason;\n removeToast(toastId);\n },\n deleteToast() {\n const toastToRemove = toasts.get(toastId);\n\n if (toastToRemove == null) return;\n\n dispatchChanges(toToastItem(toastToRemove, 'removed'));\n toasts.delete(toastId);\n\n toastCount--;\n if (toastCount < 0) toastCount = 0;\n\n if (queue.length > 0) {\n addActiveToast(queue.shift());\n return;\n }\n\n notify();\n }\n } as ToastProps;\n\n toastProps.closeButton = props.closeButton;\n\n if (options.closeButton === false || canBeRendered(options.closeButton)) {\n toastProps.closeButton = options.closeButton;\n } else if (options.closeButton === true) {\n toastProps.closeButton = canBeRendered(props.closeButton) ? props.closeButton : true;\n }\n\n const activeToast = {\n content,\n props: toastProps,\n staleId\n } as Toast;\n\n // not handling limit + delay by design. Waiting for user feedback first\n if (props.limit && props.limit > 0 && toastCount > props.limit && isNotAnUpdate) {\n queue.push(activeToast);\n } else if (isNum(delay)) {\n setTimeout(() => {\n addActiveToast(activeToast);\n }, delay);\n } else {\n addActiveToast(activeToast);\n }\n };\n\n return {\n id,\n props,\n observe,\n toggle,\n removeToast,\n toasts,\n clearQueue,\n buildToast,\n setProps(p: ToastContainerProps) {\n props = p;\n },\n setToggle: (id: Id, fn: (v: boolean) => void) => {\n const t = toasts.get(id);\n if (t) t.toggle = fn;\n },\n isToastActive: (id: Id) => toasts.get(id)?.isActive,\n getSnapshot: () => snapshot\n };\n}\n","import {\n ClearWaitingQueueParams,\n Id,\n NotValidatedToastProps,\n OnChangeCallback,\n ToastContainerProps,\n ToastContent,\n ToastItem,\n ToastOptions\n} from '../types';\nimport { Default, canBeRendered, isId } from '../utils';\nimport { ContainerObserver, createContainerObserver } from './containerObserver';\n\ninterface EnqueuedToast {\n content: ToastContent;\n options: NotValidatedToastProps;\n}\n\ninterface RemoveParams {\n id?: Id;\n containerId: Id;\n}\n\nconst containers = new Map();\nlet renderQueue: EnqueuedToast[] = [];\nconst listeners = new Set();\n\nconst dispatchChanges = (data: ToastItem) => listeners.forEach(cb => cb(data));\n\nconst hasContainers = () => containers.size > 0;\n\nfunction flushRenderQueue() {\n renderQueue.forEach(v => pushToast(v.content, v.options));\n renderQueue = [];\n}\n\nexport const getToast = (id: Id, { containerId }: ToastOptions) =>\n containers.get(containerId || Default.CONTAINER_ID)?.toasts.get(id);\n\nexport function isToastActive(id: Id, containerId?: Id) {\n if (containerId) return !!containers.get(containerId)?.isToastActive(id);\n\n let isActive = false;\n containers.forEach(c => {\n if (c.isToastActive(id)) isActive = true;\n });\n\n return isActive;\n}\n\nexport function removeToast(params?: Id | RemoveParams) {\n if (!hasContainers()) {\n renderQueue = renderQueue.filter(v => params != null && v.options.toastId !== params);\n return;\n }\n\n if (params == null || isId(params)) {\n containers.forEach(c => {\n c.removeToast(params as Id);\n });\n } else if (params && ('containerId' in params || 'id' in params)) {\n const container = containers.get(params.containerId);\n container\n ? container.removeToast(params.id)\n : containers.forEach(c => {\n c.removeToast(params.id);\n });\n }\n}\n\nexport const clearWaitingQueue = (p: ClearWaitingQueueParams = {}) => {\n containers.forEach(c => {\n if (c.props.limit && (!p.containerId || c.id === p.containerId)) {\n c.clearQueue();\n }\n });\n};\n\nexport function pushToast(content: ToastContent, options: NotValidatedToastProps) {\n if (!canBeRendered(content)) return;\n if (!hasContainers()) renderQueue.push({ content, options });\n\n containers.forEach(c => {\n c.buildToast(content, options);\n });\n}\n\ninterface ToggleToastParams {\n id?: Id;\n containerId?: Id;\n}\n\ntype RegisterToggleOpts = {\n id: Id;\n containerId?: Id;\n fn: (v: boolean) => void;\n};\n\nexport function registerToggle(opts: RegisterToggleOpts) {\n containers.get(opts.containerId || Default.CONTAINER_ID)?.setToggle(opts.id, opts.fn);\n}\n\nexport function toggleToast(v: boolean, opt?: ToggleToastParams) {\n containers.forEach(c => {\n if (opt == null || !opt?.containerId) {\n c.toggle(v, opt?.id);\n } else if (opt?.containerId === c.id) {\n c.toggle(v, opt?.id);\n }\n });\n}\n\nexport function registerContainer(props: ToastContainerProps) {\n const id = props.containerId || Default.CONTAINER_ID;\n return {\n subscribe(notify: () => void) {\n const container = createContainerObserver(id, props, dispatchChanges);\n\n containers.set(id, container);\n const unobserve = container.observe(notify);\n flushRenderQueue();\n\n return () => {\n unobserve();\n containers.delete(id);\n };\n },\n setProps(p: ToastContainerProps) {\n containers.get(id)?.setProps(p);\n },\n getSnapshot() {\n return containers.get(id)?.getSnapshot();\n }\n };\n}\n\nexport function onChange(cb: OnChangeCallback) {\n listeners.add(cb);\n\n return () => {\n listeners.delete(cb);\n };\n}\n","import {\n ClearWaitingQueueFunc,\n Id,\n IdOpts,\n NotValidatedToastProps,\n OnChangeCallback,\n ToastContent,\n ToastOptions,\n ToastProps,\n TypeOptions,\n UpdateOptions\n} from '../types';\nimport { isFn, isNum, isStr, Type } from '../utils';\nimport { genToastId } from './genToastId';\nimport { clearWaitingQueue, getToast, isToastActive, onChange, pushToast, removeToast, toggleToast } from './store';\n\n/**\n * Generate a toastId or use the one provided\n */\nfunction getToastId(options?: ToastOptions) {\n return options && (isStr(options.toastId) || isNum(options.toastId)) ? options.toastId : genToastId();\n}\n\n/**\n * If the container is not mounted, the toast is enqueued\n */\nfunction dispatchToast(content: ToastContent, options: NotValidatedToastProps): Id {\n pushToast(content, options);\n return options.toastId;\n}\n\n/**\n * Merge provided options with the defaults settings and generate the toastId\n */\nfunction mergeOptions(type: string, options?: ToastOptions) {\n return {\n ...options,\n type: (options && options.type) || type,\n toastId: getToastId(options)\n } as NotValidatedToastProps;\n}\n\nfunction createToastByType(type: string) {\n return (content: ToastContent, options?: ToastOptions) =>\n dispatchToast(content, mergeOptions(type, options));\n}\n\nfunction toast(content: ToastContent, options?: ToastOptions) {\n return dispatchToast(content, mergeOptions(Type.DEFAULT, options));\n}\n\ntoast.loading = (content: ToastContent, options?: ToastOptions) =>\n dispatchToast(\n content,\n mergeOptions(Type.DEFAULT, {\n isLoading: true,\n autoClose: false,\n closeOnClick: false,\n closeButton: false,\n draggable: false,\n ...options\n })\n );\n\nexport interface ToastPromiseParams {\n pending?: string | UpdateOptions;\n success?: string | UpdateOptions;\n error?: string | UpdateOptions;\n}\n\nfunction handlePromise(\n promise: Promise | (() => Promise),\n { pending, error, success }: ToastPromiseParams,\n options?: ToastOptions\n) {\n let id: Id;\n\n if (pending) {\n id = isStr(pending)\n ? toast.loading(pending, options)\n : toast.loading(pending.render, {\n ...options,\n ...(pending as ToastOptions)\n } as ToastOptions);\n }\n\n const resetParams = {\n isLoading: null,\n autoClose: null,\n closeOnClick: null,\n closeButton: null,\n draggable: null\n };\n\n const resolver = (type: TypeOptions, input: string | UpdateOptions | undefined, result: T) => {\n // Remove the toast if the input has not been provided. This prevents the toast from hanging\n // in the pending state if a success/error toast has not been provided.\n if (input == null) {\n toast.dismiss(id);\n return;\n }\n\n const baseParams = {\n type,\n ...resetParams,\n ...options,\n data: result\n };\n const params = isStr(input) ? { render: input } : input;\n\n // if the id is set we know that it's an update\n if (id) {\n toast.update(id, {\n ...baseParams,\n ...params\n } as UpdateOptions);\n } else {\n // using toast.promise without loading\n toast(params!.render, {\n ...baseParams,\n ...params\n } as ToastOptions);\n }\n\n return result;\n };\n\n const p = isFn(promise) ? promise() : promise;\n\n //call the resolvers only when needed\n p.then(result => resolver('success', success, result)).catch(err => resolver('error', error, err));\n\n return p;\n}\n\n/**\n * Supply a promise or a function that return a promise and the notification will be updated if it resolves or fails.\n * When the promise is pending a spinner is displayed by default.\n * `toast.promise` returns the provided promise so you can chain it.\n *\n * Simple example:\n *\n * ```\n * toast.promise(MyPromise,\n * {\n * pending: 'Promise is pending',\n * success: 'Promise resolved 👌',\n * error: 'Promise rejected 🤯'\n * }\n * )\n *\n * ```\n *\n * Advanced usage:\n * ```\n * toast.promise<{name: string}, {message: string}, undefined>(\n * resolveWithSomeData,\n * {\n * pending: {\n * render: () => \"I'm loading\",\n * icon: false,\n * },\n * success: {\n * render: ({data}) => `Hello ${data.name}`,\n * icon: \"🟢\",\n * },\n * error: {\n * render({data}){\n * // When the promise reject, data will contains the error\n * return \n * }\n * }\n * }\n * )\n * ```\n */\ntoast.promise = handlePromise;\ntoast.success = createToastByType(Type.SUCCESS);\ntoast.info = createToastByType(Type.INFO);\ntoast.error = createToastByType(Type.ERROR);\ntoast.warning = createToastByType(Type.WARNING);\ntoast.warn = toast.warning;\ntoast.dark = (content: ToastContent, options?: ToastOptions) =>\n dispatchToast(\n content,\n mergeOptions(Type.DEFAULT, {\n theme: 'dark',\n ...options\n })\n );\n\ninterface RemoveParams {\n id?: Id;\n containerId: Id;\n}\n\nfunction dismiss(params: RemoveParams): void;\nfunction dismiss(params?: Id): void;\nfunction dismiss(params?: Id | RemoveParams) {\n removeToast(params);\n}\n\n/**\n * Remove toast programmatically\n *\n * - Remove all toasts:\n * ```\n * toast.dismiss()\n * ```\n *\n * - Remove all toasts that belongs to a given container\n * ```\n * toast.dismiss({ container: \"123\" })\n * ```\n *\n * - Remove toast that has a given id regardless the container\n * ```\n * toast.dismiss({ id: \"123\" })\n * ```\n *\n * - Remove toast that has a given id for a specific container\n * ```\n * toast.dismiss({ id: \"123\", containerId: \"12\" })\n * ```\n */\ntoast.dismiss = dismiss;\n\n/**\n * Clear waiting queue when limit is used\n */\ntoast.clearWaitingQueue = clearWaitingQueue as ClearWaitingQueueFunc;\n\n/**\n * Check if a toast is active\n *\n * - Check regardless the container\n * ```\n * toast.isActive(\"123\")\n * ```\n *\n * - Check in a specific container\n * ```\n * toast.isActive(\"123\", \"containerId\")\n * ```\n */\ntoast.isActive = isToastActive;\n\n/**\n * Update a toast, see https://fkhadra.github.io/react-toastify/update-toast/ for more\n *\n * Example:\n * ```\n * // With a string\n * toast.update(toastId, {\n * render: \"New content\",\n * type: \"info\",\n * });\n *\n * // Or with a component\n * toast.update(toastId, {\n * render: MyComponent\n * });\n *\n * // Or a function\n * toast.update(toastId, {\n * render: () =>
New content
\n * });\n *\n * // Apply a transition\n * toast.update(toastId, {\n * render: \"New Content\",\n * type: toast.TYPE.INFO,\n * transition: Rotate\n * })\n * ```\n */\ntoast.update = (toastId: Id, options: UpdateOptions = {}) => {\n const toast = getToast(toastId, options as ToastOptions);\n\n if (toast) {\n const { props: oldOptions, content: oldContent } = toast;\n\n const nextOptions = {\n delay: 100,\n ...oldOptions,\n ...options,\n toastId: options.toastId || toastId,\n updateId: genToastId()\n } as ToastProps & UpdateOptions;\n\n if (nextOptions.toastId !== toastId) nextOptions.staleId = toastId;\n\n const content = nextOptions.render || oldContent;\n delete nextOptions.render;\n\n dispatchToast(content, nextOptions);\n }\n};\n\n/**\n * Used for controlled progress bar. It will automatically close the notification.\n *\n * If you don't want your notification to be clsoed when the timer is done you should use `toast.update` instead as follow instead:\n *\n * ```\n * toast.update(id, {\n * progress: null, // remove controlled progress bar\n * render: \"ok\",\n * type: \"success\",\n * autoClose: 5000 // set autoClose to the desired value\n * });\n * ```\n */\ntoast.done = (id: Id) => {\n toast.update(id, {\n progress: 1\n });\n};\n\n/**\n * Subscribe to change when a toast is added, removed and updated\n *\n * Usage:\n * ```\n * const unsubscribe = toast.onChange((payload) => {\n * switch (payload.status) {\n * case \"added\":\n * // new toast added\n * break;\n * case \"updated\":\n * // toast updated\n * break;\n * case \"removed\":\n * // toast has been removed\n * break;\n * }\n * })\n * ```\n */\ntoast.onChange = onChange as (cb: OnChangeCallback) => () => void;\n\n/**\n * Play a toast(s) timer progammatically\n *\n * Usage:\n *\n * - Play all toasts\n * ```\n * toast.play()\n * ```\n *\n * - Play all toasts for a given container\n * ```\n * toast.play({ containerId: \"123\" })\n * ```\n *\n * - Play toast that has a given id regardless the container\n * ```\n * toast.play({ id: \"123\" })\n * ```\n *\n * - Play toast that has a given id for a specific container\n * ```\n * toast.play({ id: \"123\", containerId: \"12\" })\n * ```\n */\ntoast.play = (opts?: IdOpts) => toggleToast(true, opts);\n\n/**\n * Pause a toast(s) timer progammatically\n *\n * Usage:\n *\n * - Pause all toasts\n * ```\n * toast.pause()\n * ```\n *\n * - Pause all toasts for a given container\n * ```\n * toast.pause({ containerId: \"123\" })\n * ```\n *\n * - Pause toast that has a given id regardless the container\n * ```\n * toast.pause({ id: \"123\" })\n * ```\n *\n * - Pause toast that has a given id for a specific container\n * ```\n * toast.pause({ id: \"123\", containerId: \"12\" })\n * ```\n */\ntoast.pause = (opts?: IdOpts) => toggleToast(false, opts);\n\nexport { toast };\n","import { DOMAttributes, useEffect, useRef, useState } from 'react';\n\nimport { ToastProps } from '../types';\nimport { Default, Direction } from '../utils';\nimport { registerToggle } from '../core/store';\n\ninterface Draggable {\n start: number;\n delta: number;\n removalDistance: number;\n canCloseOnClick: boolean;\n canDrag: boolean;\n didMove: boolean;\n}\n\nexport function useToast(props: ToastProps) {\n const [isRunning, setIsRunning] = useState(false);\n const [preventExitTransition, setPreventExitTransition] = useState(false);\n const toastRef = useRef(null);\n const drag = useRef({\n start: 0,\n delta: 0,\n removalDistance: 0,\n canCloseOnClick: true,\n canDrag: false,\n didMove: false\n }).current;\n const { autoClose, pauseOnHover, closeToast, onClick, closeOnClick } = props;\n\n registerToggle({\n id: props.toastId,\n containerId: props.containerId,\n fn: setIsRunning\n });\n\n useEffect(() => {\n if (props.pauseOnFocusLoss) {\n bindFocusEvents();\n\n return () => {\n unbindFocusEvents();\n };\n }\n }, [props.pauseOnFocusLoss]);\n\n function bindFocusEvents() {\n if (!document.hasFocus()) pauseToast();\n\n window.addEventListener('focus', playToast);\n window.addEventListener('blur', pauseToast);\n }\n\n function unbindFocusEvents() {\n window.removeEventListener('focus', playToast);\n window.removeEventListener('blur', pauseToast);\n }\n\n function onDragStart(e: React.PointerEvent) {\n if (props.draggable === true || props.draggable === e.pointerType) {\n bindDragEvents();\n const toast = toastRef.current!;\n drag.canCloseOnClick = true;\n drag.canDrag = true;\n toast.style.transition = 'none';\n\n if (props.draggableDirection === Direction.X) {\n drag.start = e.clientX;\n drag.removalDistance = toast.offsetWidth * (props.draggablePercent / 100);\n } else {\n drag.start = e.clientY;\n drag.removalDistance =\n (toast.offsetHeight *\n (props.draggablePercent === Default.DRAGGABLE_PERCENT\n ? props.draggablePercent * 1.5\n : props.draggablePercent)) /\n 100;\n }\n }\n }\n\n function onDragTransitionEnd(e: React.PointerEvent) {\n const { top, bottom, left, right } = toastRef.current!.getBoundingClientRect();\n\n if (\n e.nativeEvent.type !== 'touchend' &&\n props.pauseOnHover &&\n e.clientX >= left &&\n e.clientX <= right &&\n e.clientY >= top &&\n e.clientY <= bottom\n ) {\n pauseToast();\n } else {\n playToast();\n }\n }\n\n function playToast() {\n setIsRunning(true);\n }\n\n function pauseToast() {\n setIsRunning(false);\n }\n\n function bindDragEvents() {\n drag.didMove = false;\n document.addEventListener('pointermove', onDragMove);\n document.addEventListener('pointerup', onDragEnd);\n }\n\n function unbindDragEvents() {\n document.removeEventListener('pointermove', onDragMove);\n document.removeEventListener('pointerup', onDragEnd);\n }\n\n function onDragMove(e: PointerEvent) {\n const toast = toastRef.current!;\n if (drag.canDrag && toast) {\n drag.didMove = true;\n if (isRunning) pauseToast();\n if (props.draggableDirection === Direction.X) {\n drag.delta = e.clientX - drag.start;\n } else {\n drag.delta = e.clientY - drag.start;\n }\n\n // prevent false positive during a toast click\n if (drag.start !== e.clientX) drag.canCloseOnClick = false;\n const translate =\n props.draggableDirection === 'x' ? `${drag.delta}px, var(--y)` : `0, calc(${drag.delta}px + var(--y))`;\n toast.style.transform = `translate3d(${translate},0)`;\n toast.style.opacity = `${1 - Math.abs(drag.delta / drag.removalDistance)}`;\n }\n }\n\n function onDragEnd() {\n unbindDragEvents();\n const toast = toastRef.current!;\n if (drag.canDrag && drag.didMove && toast) {\n drag.canDrag = false;\n if (Math.abs(drag.delta) > drag.removalDistance) {\n setPreventExitTransition(true);\n props.closeToast(true);\n props.collapseAll();\n return;\n }\n\n toast.style.transition = 'transform 0.2s, opacity 0.2s';\n toast.style.removeProperty('transform');\n toast.style.removeProperty('opacity');\n }\n }\n\n const eventHandlers: DOMAttributes = {\n onPointerDown: onDragStart,\n onPointerUp: onDragTransitionEnd\n };\n\n if (autoClose && pauseOnHover) {\n eventHandlers.onMouseEnter = pauseToast;\n\n // progress control is delegated to the container\n if (!props.stacked) eventHandlers.onMouseLeave = playToast;\n }\n\n // prevent toast from closing when user drags the toast\n if (closeOnClick) {\n eventHandlers.onClick = (e: React.MouseEvent) => {\n onClick && onClick(e);\n drag.canCloseOnClick && closeToast(true);\n };\n }\n\n return {\n playToast,\n pauseToast,\n isRunning,\n preventExitTransition,\n toastRef,\n eventHandlers\n };\n}\n","import { useEffect, useLayoutEffect } from 'react';\n\nexport const useIsomorphicLayoutEffect = typeof window !== 'undefined' ? useLayoutEffect : useEffect;\n","import React, { cloneElement, isValidElement } from 'react';\n\nimport { Theme, ToastProps, TypeOptions } from '../types';\nimport { Default, isFn } from '../utils';\n\n/**\n * Used when providing custom icon\n */\nexport interface IconProps {\n theme: Theme;\n type: TypeOptions;\n isLoading?: boolean;\n}\n\nexport type BuiltInIconProps = React.SVGProps & IconProps;\n\nconst Svg: React.FC = ({ theme, type, isLoading, ...rest }) => (\n \n);\n\nfunction Warning(props: BuiltInIconProps) {\n return (\n \n \n \n );\n}\n\nfunction Info(props: BuiltInIconProps) {\n return (\n \n \n \n );\n}\n\nfunction Success(props: BuiltInIconProps) {\n return (\n \n \n \n );\n}\n\nfunction Error(props: BuiltInIconProps) {\n return (\n \n \n \n );\n}\n\nfunction Spinner() {\n return
;\n}\n\nexport const Icons = {\n info: Info,\n warning: Warning,\n success: Success,\n error: Error,\n spinner: Spinner\n};\n\nconst maybeIcon = (type: string): type is keyof typeof Icons => type in Icons;\n\nexport type IconParams = Pick;\n\nexport function getIcon({ theme, type, isLoading, icon }: IconParams) {\n let Icon: React.ReactNode = null;\n const iconProps = { theme, type };\n\n if (icon === false) {\n // hide\n } else if (isFn(icon)) {\n Icon = icon({ ...iconProps, isLoading });\n } else if (isValidElement(icon)) {\n Icon = cloneElement(icon, iconProps);\n } else if (isLoading) {\n Icon = Icons.spinner();\n } else if (maybeIcon(type)) {\n Icon = Icons[type](iconProps);\n }\n\n return Icon;\n}\n","import cx from 'clsx';\nimport React, { cloneElement, isValidElement } from 'react';\n\nimport { useToast } from '../hooks/useToast';\nimport { ToastProps } from '../types';\nimport { Default, isFn, renderContent } from '../utils';\nimport { CloseButton } from './CloseButton';\nimport { ProgressBar } from './ProgressBar';\nimport { getIcon } from './Icons';\n\nexport const Toast: React.FC = props => {\n const { isRunning, preventExitTransition, toastRef, eventHandlers, playToast } = useToast(props);\n const {\n closeButton,\n children,\n autoClose,\n onClick,\n type,\n hideProgressBar,\n closeToast,\n transition: Transition,\n position,\n className,\n style,\n progressClassName,\n updateId,\n role,\n progress,\n rtl,\n toastId,\n deleteToast,\n isIn,\n isLoading,\n closeOnClick,\n theme,\n ariaLabel\n } = props;\n const defaultClassName = cx(\n `${Default.CSS_NAMESPACE}__toast`,\n `${Default.CSS_NAMESPACE}__toast-theme--${theme}`,\n `${Default.CSS_NAMESPACE}__toast--${type}`,\n {\n [`${Default.CSS_NAMESPACE}__toast--rtl`]: rtl\n },\n {\n [`${Default.CSS_NAMESPACE}__toast--close-on-click`]: closeOnClick\n }\n );\n const cssClasses = isFn(className)\n ? className({\n rtl,\n position,\n type,\n defaultClassName\n })\n : cx(defaultClassName, className);\n const icon = getIcon(props);\n const isProgressControlled = !!progress || !autoClose;\n\n const closeButtonProps = { closeToast, type, theme };\n let Close: React.ReactNode = null;\n\n if (closeButton === false) {\n // hide\n } else if (isFn(closeButton)) {\n Close = closeButton(closeButtonProps);\n } else if (isValidElement(closeButton)) {\n Close = cloneElement(closeButton, closeButtonProps);\n } else {\n Close = CloseButton(closeButtonProps);\n }\n\n return (\n \n \n {icon != null && (\n \n {icon}\n
\n )}\n {renderContent(children, props, !isRunning)}\n {Close}\n {!props.customProgressBar && (\n \n )}\n \n \n );\n};\n","import React from 'react';\nimport { Default } from '../utils';\nimport { CloseToastFunc, Theme, TypeOptions } from '../types';\n\nexport interface CloseButtonProps {\n closeToast: CloseToastFunc;\n type: TypeOptions;\n ariaLabel?: string;\n theme: Theme;\n}\n\nexport function CloseButton({ closeToast, theme, ariaLabel = 'close' }: CloseButtonProps) {\n return (\n {\n e.stopPropagation();\n closeToast(true);\n }}\n aria-label={ariaLabel}\n >\n \n \n \n \n );\n}\n","import { cssTransition, Default } from '../utils';\n\nconst getConfig = (animationName: string, appendPosition = false) => ({\n enter: `${Default.CSS_NAMESPACE}--animate ${Default.CSS_NAMESPACE}__${animationName}-enter`,\n exit: `${Default.CSS_NAMESPACE}--animate ${Default.CSS_NAMESPACE}__${animationName}-exit`,\n appendPosition\n});\n\nconst Bounce = cssTransition(getConfig('bounce', true));\n\nconst Slide = cssTransition(getConfig('slide', true));\n\nconst Zoom = cssTransition(getConfig('zoom'));\n\nconst Flip = cssTransition(getConfig('flip'));\n\nexport { Bounce, Slide, Zoom, Flip };\n","import cx from 'clsx';\nimport React, { useEffect, useRef, useState } from 'react';\n\nimport { toast } from '../core';\nimport { useToastContainer } from '../hooks';\nimport { useIsomorphicLayoutEffect } from '../hooks/useIsomorphicLayoutEffect';\nimport { ToastContainerProps, ToastPosition } from '../types';\nimport { Default, Direction, isFn, parseClassName } from '../utils';\nimport { Toast } from './Toast';\nimport { Bounce } from './Transitions';\n\nexport const defaultProps: ToastContainerProps = {\n position: 'top-right',\n transition: Bounce,\n autoClose: 5000,\n closeButton: true,\n pauseOnHover: true,\n pauseOnFocusLoss: true,\n draggable: 'touch',\n draggablePercent: Default.DRAGGABLE_PERCENT as number,\n draggableDirection: Direction.X,\n role: 'alert',\n theme: 'light',\n 'aria-label': 'Notifications Alt+T',\n hotKeys: e => e.altKey && e.code === 'KeyT'\n};\n\nexport function ToastContainer(props: ToastContainerProps) {\n let containerProps: ToastContainerProps = {\n ...defaultProps,\n ...props\n };\n const stacked = props.stacked;\n const [collapsed, setIsCollapsed] = useState(true);\n const containerRef = useRef(null);\n const { getToastToRender, isToastActive, count } = useToastContainer(containerProps);\n const { className, style, rtl, containerId, hotKeys } = containerProps;\n\n function getClassName(position: ToastPosition) {\n const defaultClassName = cx(\n `${Default.CSS_NAMESPACE}__toast-container`,\n `${Default.CSS_NAMESPACE}__toast-container--${position}`,\n { [`${Default.CSS_NAMESPACE}__toast-container--rtl`]: rtl }\n );\n return isFn(className)\n ? className({\n position,\n rtl,\n defaultClassName\n })\n : cx(defaultClassName, parseClassName(className));\n }\n\n function collapseAll() {\n if (stacked) {\n setIsCollapsed(true);\n toast.play();\n }\n }\n\n useIsomorphicLayoutEffect(() => {\n if (stacked) {\n const nodes = containerRef.current!.querySelectorAll('[data-in=\"true\"]');\n const gap = 12;\n const isTop = containerProps.position?.includes('top');\n let usedHeight = 0;\n let prevS = 0;\n\n Array.from(nodes)\n .reverse()\n .forEach((n, i) => {\n const node = n as HTMLElement;\n node.classList.add(`${Default.CSS_NAMESPACE}__toast--stacked`);\n\n if (i > 0) node.dataset.collapsed = `${collapsed}`;\n\n if (!node.dataset.pos) node.dataset.pos = isTop ? 'top' : 'bot';\n\n const y = usedHeight * (collapsed ? 0.2 : 1) + (collapsed ? 0 : gap * i);\n\n node.style.setProperty('--y', `${isTop ? y : y * -1}px`);\n node.style.setProperty('--g', `${gap}`);\n node.style.setProperty('--s', `${1 - (collapsed ? prevS : 0)}`);\n\n usedHeight += node.offsetHeight;\n prevS += 0.025;\n });\n }\n }, [collapsed, count, stacked]);\n\n useEffect(() => {\n function focusFirst(e: KeyboardEvent) {\n const node = containerRef.current;\n if (hotKeys(e)) {\n (node.querySelector('[tabIndex=\"0\"]') as HTMLElement)?.focus();\n setIsCollapsed(false);\n toast.pause();\n }\n if (e.key === 'Escape' && (document.activeElement === node || node?.contains(document.activeElement))) {\n setIsCollapsed(true);\n toast.play();\n }\n }\n\n document.addEventListener('keydown', focusFirst);\n\n return () => {\n document.removeEventListener('keydown', focusFirst);\n };\n }, [hotKeys]);\n\n return (\n {\n if (stacked) {\n setIsCollapsed(false);\n toast.pause();\n }\n }}\n onMouseLeave={collapseAll}\n aria-live=\"polite\"\n aria-atomic=\"false\"\n aria-relevant=\"additions text\"\n aria-label={containerProps['aria-label']}\n >\n {getToastToRender((position, toastList) => {\n const containerStyle: React.CSSProperties = !toastList.length\n ? { ...style, pointerEvents: 'none' }\n : { ...style };\n\n return (\n \n {toastList.map(({ content, props: toastProps }) => {\n return (\n \n {content}\n \n );\n })}\n \n );\n })}\n \n );\n}\n","import { useRef, useSyncExternalStore } from 'react';\nimport { isToastActive, registerContainer } from '../core/store';\nimport { Toast, ToastContainerProps, ToastPosition } from '../types';\n\nexport function useToastContainer(props: ToastContainerProps) {\n const { subscribe, getSnapshot, setProps } = useRef(registerContainer(props)).current;\n setProps(props);\n const snapshot = useSyncExternalStore(subscribe, getSnapshot, getSnapshot)?.slice();\n\n function getToastToRender(cb: (position: ToastPosition, toastList: Toast[]) => T) {\n if (!snapshot) return [];\n\n const toRender = new Map();\n\n if (props.newestOnTop) snapshot.reverse();\n\n snapshot.forEach(toast => {\n const { position } = toast.props;\n toRender.has(position) || toRender.set(position, []);\n toRender.get(position)!.push(toast);\n });\n\n return Array.from(toRender, p => cb(p[0], p[1]));\n }\n\n return {\n getToastToRender,\n isToastActive,\n count: snapshot?.length\n };\n}\n","/**\n * Defaults & options\n * @returns {object} Typed defaults & options\n * @public\n */\n\nconst defaults = {\n /**\n * @property {array} strings strings to be typed\n * @property {string} stringsElement ID of element containing string children\n */\n strings: [\n 'These are the default values...',\n 'You know what you should do?',\n 'Use your own!',\n 'Have a great day!',\n ],\n stringsElement: null,\n\n /**\n * @property {number} typeSpeed type speed in milliseconds\n */\n typeSpeed: 0,\n\n /**\n * @property {number} startDelay time before typing starts in milliseconds\n */\n startDelay: 0,\n\n /**\n * @property {number} backSpeed backspacing speed in milliseconds\n */\n backSpeed: 0,\n\n /**\n * @property {boolean} smartBackspace only backspace what doesn't match the previous string\n */\n smartBackspace: true,\n\n /**\n * @property {boolean} shuffle shuffle the strings\n */\n shuffle: false,\n\n /**\n * @property {number} backDelay time before backspacing in milliseconds\n */\n backDelay: 700,\n\n /**\n * @property {boolean} fadeOut Fade out instead of backspace\n * @property {string} fadeOutClass css class for fade animation\n * @property {boolean} fadeOutDelay Fade out delay in milliseconds\n */\n fadeOut: false,\n fadeOutClass: 'typed-fade-out',\n fadeOutDelay: 500,\n\n /**\n * @property {boolean} loop loop strings\n * @property {number} loopCount amount of loops\n */\n loop: false,\n loopCount: Infinity,\n\n /**\n * @property {boolean} showCursor show cursor\n * @property {string} cursorChar character for cursor\n * @property {boolean} autoInsertCss insert CSS for cursor and fadeOut into HTML \n */\n showCursor: true,\n cursorChar: '|',\n autoInsertCss: true,\n\n /**\n * @property {string} attr attribute for typing\n * Ex: input placeholder, value, or just HTML text\n */\n attr: null,\n\n /**\n * @property {boolean} bindInputFocusEvents bind to focus and blur if el is text input\n */\n bindInputFocusEvents: false,\n\n /**\n * @property {string} contentType 'html' or 'null' for plaintext\n */\n contentType: 'html',\n\n /**\n * Before it begins typing\n * @param {Typed} self\n */\n onBegin: (self) => {},\n\n /**\n * All typing is complete\n * @param {Typed} self\n */\n onComplete: (self) => {},\n\n /**\n * Before each string is typed\n * @param {number} arrayPos\n * @param {Typed} self\n */\n preStringTyped: (arrayPos, self) => {},\n\n /**\n * After each string is typed\n * @param {number} arrayPos\n * @param {Typed} self\n */\n onStringTyped: (arrayPos, self) => {},\n\n /**\n * During looping, after last string is typed\n * @param {Typed} self\n */\n onLastStringBackspaced: (self) => {},\n\n /**\n * Typing has been stopped\n * @param {number} arrayPos\n * @param {Typed} self\n */\n onTypingPaused: (arrayPos, self) => {},\n\n /**\n * Typing has been started after being stopped\n * @param {number} arrayPos\n * @param {Typed} self\n */\n onTypingResumed: (arrayPos, self) => {},\n\n /**\n * After reset\n * @param {Typed} self\n */\n onReset: (self) => {},\n\n /**\n * After stop\n * @param {number} arrayPos\n * @param {Typed} self\n */\n onStop: (arrayPos, self) => {},\n\n /**\n * After start\n * @param {number} arrayPos\n * @param {Typed} self\n */\n onStart: (arrayPos, self) => {},\n\n /**\n * After destroy\n * @param {Typed} self\n */\n onDestroy: (self) => {},\n};\n\nexport default defaults;\n","import defaults from './defaults.js';\n/**\n * Initialize the Typed object\n */\n\nexport default class Initializer {\n /**\n * Load up defaults & options on the Typed instance\n * @param {Typed} self instance of Typed\n * @param {object} options options object\n * @param {string} elementId HTML element ID _OR_ instance of HTML element\n * @private\n */\n\n load(self, options, elementId) {\n // chosen element to manipulate text\n if (typeof elementId === 'string') {\n self.el = document.querySelector(elementId);\n } else {\n self.el = elementId;\n }\n\n self.options = { ...defaults, ...options };\n\n // attribute to type into\n self.isInput = self.el.tagName.toLowerCase() === 'input';\n self.attr = self.options.attr;\n self.bindInputFocusEvents = self.options.bindInputFocusEvents;\n\n // show cursor\n self.showCursor = self.isInput ? false : self.options.showCursor;\n\n // custom cursor\n self.cursorChar = self.options.cursorChar;\n\n // Is the cursor blinking\n self.cursorBlinking = true;\n\n // text content of element\n self.elContent = self.attr\n ? self.el.getAttribute(self.attr)\n : self.el.textContent;\n\n // html or plain text\n self.contentType = self.options.contentType;\n\n // typing speed\n self.typeSpeed = self.options.typeSpeed;\n\n // add a delay before typing starts\n self.startDelay = self.options.startDelay;\n\n // backspacing speed\n self.backSpeed = self.options.backSpeed;\n\n // only backspace what doesn't match the previous string\n self.smartBackspace = self.options.smartBackspace;\n\n // amount of time to wait before backspacing\n self.backDelay = self.options.backDelay;\n\n // Fade out instead of backspace\n self.fadeOut = self.options.fadeOut;\n self.fadeOutClass = self.options.fadeOutClass;\n self.fadeOutDelay = self.options.fadeOutDelay;\n\n // variable to check whether typing is currently paused\n self.isPaused = false;\n\n // input strings of text\n self.strings = self.options.strings.map((s) => s.trim());\n\n // div containing strings\n if (typeof self.options.stringsElement === 'string') {\n self.stringsElement = document.querySelector(self.options.stringsElement);\n } else {\n self.stringsElement = self.options.stringsElement;\n }\n\n if (self.stringsElement) {\n self.strings = [];\n self.stringsElement.style.cssText =\n 'clip: rect(0 0 0 0);clip-path:inset(50%);height:1px;overflow:hidden;position:absolute;white-space:nowrap;width:1px;';\n\n const strings = Array.prototype.slice.apply(self.stringsElement.children);\n const stringsLength = strings.length;\n\n if (stringsLength) {\n for (let i = 0; i < stringsLength; i += 1) {\n const stringEl = strings[i];\n self.strings.push(stringEl.innerHTML.trim());\n }\n }\n }\n\n // character number position of current string\n self.strPos = 0;\n\n // If there is some text in the element\n self.currentElContent = this.getCurrentElContent(self);\n\n if (self.currentElContent && self.currentElContent.length > 0) {\n self.strPos = self.currentElContent.length - 1;\n self.strings.unshift(self.currentElContent);\n }\n\n // the order of strings\n self.sequence = [];\n\n // Set the order in which the strings are typed\n for (let i in self.strings) {\n self.sequence[i] = i;\n }\n\n // current array position\n self.arrayPos = 0;\n\n // index of string to stop backspacing on\n self.stopNum = 0;\n\n // Looping logic\n self.loop = self.options.loop;\n self.loopCount = self.options.loopCount;\n self.curLoop = 0;\n\n // shuffle the strings\n self.shuffle = self.options.shuffle;\n\n self.pause = {\n status: false,\n typewrite: true,\n curString: '',\n curStrPos: 0,\n };\n\n // When the typing is complete (when not looped)\n self.typingComplete = false;\n\n self.autoInsertCss = self.options.autoInsertCss;\n\n if (self.autoInsertCss) {\n this.appendCursorAnimationCss(self);\n this.appendFadeOutAnimationCss(self);\n }\n }\n\n getCurrentElContent(self) {\n let elContent = '';\n if (self.attr) {\n elContent = self.el.getAttribute(self.attr);\n } else if (self.isInput) {\n elContent = self.el.value;\n } else if (self.contentType === 'html') {\n elContent = self.el.innerHTML;\n } else {\n elContent = self.el.textContent;\n }\n return elContent;\n }\n\n appendCursorAnimationCss(self) {\n const cssDataName = 'data-typed-js-cursor-css';\n\n if (!self.showCursor || document.querySelector(`[${cssDataName}]`)) {\n return;\n }\n\n let css = document.createElement('style');\n css.setAttribute(cssDataName, 'true');\n\n css.innerHTML = `\n .typed-cursor{\n opacity: 1;\n }\n .typed-cursor.typed-cursor--blink{\n animation: typedjsBlink 0.7s infinite;\n -webkit-animation: typedjsBlink 0.7s infinite;\n animation: typedjsBlink 0.7s infinite;\n }\n @keyframes typedjsBlink{\n 50% { opacity: 0.0; }\n }\n @-webkit-keyframes typedjsBlink{\n 0% { opacity: 1; }\n 50% { opacity: 0.0; }\n 100% { opacity: 1; }\n }\n `;\n\n document.body.appendChild(css);\n }\n\n appendFadeOutAnimationCss(self) {\n const cssDataName = 'data-typed-fadeout-js-css';\n\n if (!self.fadeOut || document.querySelector(`[${cssDataName}]`)) {\n return;\n }\n\n let css = document.createElement('style');\n css.setAttribute(cssDataName, 'true');\n\n css.innerHTML = `\n .typed-fade-out{\n opacity: 0;\n transition: opacity .25s;\n }\n .typed-cursor.typed-cursor--blink.typed-fade-out{\n -webkit-animation: 0;\n animation: 0;\n }\n `;\n\n document.body.appendChild(css);\n }\n}\n\nexport let initializer = new Initializer();\n","/**\n * TODO: These methods can probably be combined somehow\n * Parse HTML tags & HTML Characters\n */\n\nexport default class HTMLParser {\n /**\n * Type HTML tags & HTML Characters\n * @param {string} curString Current string\n * @param {number} curStrPos Position in current string\n * @param {Typed} self instance of Typed\n * @returns {number} a new string position\n * @private\n */\n\n typeHtmlChars(curString, curStrPos, self) {\n if (self.contentType !== 'html') return curStrPos;\n const curChar = curString.substring(curStrPos).charAt(0);\n if (curChar === '<' || curChar === '&') {\n let endTag = '';\n if (curChar === '<') {\n endTag = '>';\n } else {\n endTag = ';';\n }\n while (curString.substring(curStrPos + 1).charAt(0) !== endTag) {\n curStrPos++;\n if (curStrPos + 1 > curString.length) {\n break;\n }\n }\n curStrPos++;\n }\n return curStrPos;\n }\n\n /**\n * Backspace HTML tags and HTML Characters\n * @param {string} curString Current string\n * @param {number} curStrPos Position in current string\n * @param {Typed} self instance of Typed\n * @returns {number} a new string position\n * @private\n */\n backSpaceHtmlChars(curString, curStrPos, self) {\n if (self.contentType !== 'html') return curStrPos;\n const curChar = curString.substring(curStrPos).charAt(0);\n if (curChar === '>' || curChar === ';') {\n let endTag = '';\n if (curChar === '>') {\n endTag = '<';\n } else {\n endTag = '&';\n }\n while (curString.substring(curStrPos - 1).charAt(0) !== endTag) {\n curStrPos--;\n if (curStrPos < 0) {\n break;\n }\n }\n curStrPos--;\n }\n return curStrPos;\n }\n}\n\nexport let htmlParser = new HTMLParser();\n","import { initializer } from './initializer.js';\nimport { htmlParser } from './html-parser.js';\n\n/**\n * Welcome to Typed.js!\n * @param {string} elementId HTML element ID _OR_ HTML element\n * @param {object} options options object\n * @returns {object} a new Typed object\n */\nexport default class Typed {\n constructor(elementId, options) {\n // Initialize it up\n initializer.load(this, options, elementId);\n // All systems go!\n this.begin();\n }\n\n /**\n * Toggle start() and stop() of the Typed instance\n * @public\n */\n toggle() {\n this.pause.status ? this.start() : this.stop();\n }\n\n /**\n * Stop typing / backspacing and enable cursor blinking\n * @public\n */\n stop() {\n if (this.typingComplete) return;\n if (this.pause.status) return;\n this.toggleBlinking(true);\n this.pause.status = true;\n this.options.onStop(this.arrayPos, this);\n }\n\n /**\n * Start typing / backspacing after being stopped\n * @public\n */\n start() {\n if (this.typingComplete) return;\n if (!this.pause.status) return;\n this.pause.status = false;\n if (this.pause.typewrite) {\n this.typewrite(this.pause.curString, this.pause.curStrPos);\n } else {\n this.backspace(this.pause.curString, this.pause.curStrPos);\n }\n this.options.onStart(this.arrayPos, this);\n }\n\n /**\n * Destroy this instance of Typed\n * @public\n */\n destroy() {\n this.reset(false);\n this.options.onDestroy(this);\n }\n\n /**\n * Reset Typed and optionally restarts\n * @param {boolean} restart\n * @public\n */\n reset(restart = true) {\n clearInterval(this.timeout);\n this.replaceText('');\n if (this.cursor && this.cursor.parentNode) {\n this.cursor.parentNode.removeChild(this.cursor);\n this.cursor = null;\n }\n this.strPos = 0;\n this.arrayPos = 0;\n this.curLoop = 0;\n if (restart) {\n this.insertCursor();\n this.options.onReset(this);\n this.begin();\n }\n }\n\n /**\n * Begins the typing animation\n * @private\n */\n begin() {\n this.options.onBegin(this);\n this.typingComplete = false;\n this.shuffleStringsIfNeeded(this);\n this.insertCursor();\n if (this.bindInputFocusEvents) this.bindFocusEvents();\n this.timeout = setTimeout(() => {\n // If the strPos is 0, we're starting from the beginning of a string\n // else, we're starting with a previous string that needs to be backspaced first\n if (this.strPos === 0) {\n this.typewrite(this.strings[this.sequence[this.arrayPos]], this.strPos);\n } else {\n this.backspace(this.strings[this.sequence[this.arrayPos]], this.strPos);\n }\n }, this.startDelay);\n }\n\n /**\n * Called for each character typed\n * @param {string} curString the current string in the strings array\n * @param {number} curStrPos the current position in the curString\n * @private\n */\n typewrite(curString, curStrPos) {\n if (this.fadeOut && this.el.classList.contains(this.fadeOutClass)) {\n this.el.classList.remove(this.fadeOutClass);\n if (this.cursor) this.cursor.classList.remove(this.fadeOutClass);\n }\n\n const humanize = this.humanizer(this.typeSpeed);\n let numChars = 1;\n\n if (this.pause.status === true) {\n this.setPauseStatus(curString, curStrPos, true);\n return;\n }\n\n // contain typing function in a timeout humanize'd delay\n this.timeout = setTimeout(() => {\n // skip over any HTML chars\n curStrPos = htmlParser.typeHtmlChars(curString, curStrPos, this);\n\n let pauseTime = 0;\n let substr = curString.substring(curStrPos);\n // check for an escape character before a pause value\n // format: \\^\\d+ .. eg: ^1000 .. should be able to print the ^ too using ^^\n // single ^ are removed from string\n if (substr.charAt(0) === '^') {\n if (/^\\^\\d+/.test(substr)) {\n let skip = 1; // skip at least 1\n substr = /\\d+/.exec(substr)[0];\n skip += substr.length;\n pauseTime = parseInt(substr);\n this.temporaryPause = true;\n this.options.onTypingPaused(this.arrayPos, this);\n // strip out the escape character and pause value so they're not printed\n curString =\n curString.substring(0, curStrPos) +\n curString.substring(curStrPos + skip);\n this.toggleBlinking(true);\n }\n }\n\n // check for skip characters formatted as\n // \"this is a `string to print NOW` ...\"\n if (substr.charAt(0) === '`') {\n while (curString.substring(curStrPos + numChars).charAt(0) !== '`') {\n numChars++;\n if (curStrPos + numChars > curString.length) break;\n }\n // strip out the escape characters and append all the string in between\n const stringBeforeSkip = curString.substring(0, curStrPos);\n const stringSkipped = curString.substring(\n stringBeforeSkip.length + 1,\n curStrPos + numChars\n );\n const stringAfterSkip = curString.substring(curStrPos + numChars + 1);\n curString = stringBeforeSkip + stringSkipped + stringAfterSkip;\n numChars--;\n }\n\n // timeout for any pause after a character\n this.timeout = setTimeout(() => {\n // Accounts for blinking while paused\n this.toggleBlinking(false);\n\n // We're done with this sentence!\n if (curStrPos >= curString.length) {\n this.doneTyping(curString, curStrPos);\n } else {\n this.keepTyping(curString, curStrPos, numChars);\n }\n // end of character pause\n if (this.temporaryPause) {\n this.temporaryPause = false;\n this.options.onTypingResumed(this.arrayPos, this);\n }\n }, pauseTime);\n\n // humanized value for typing\n }, humanize);\n }\n\n /**\n * Continue to the next string & begin typing\n * @param {string} curString the current string in the strings array\n * @param {number} curStrPos the current position in the curString\n * @private\n */\n keepTyping(curString, curStrPos, numChars) {\n // call before functions if applicable\n if (curStrPos === 0) {\n this.toggleBlinking(false);\n this.options.preStringTyped(this.arrayPos, this);\n }\n // start typing each new char into existing string\n // curString: arg, this.el.html: original text inside element\n curStrPos += numChars;\n const nextString = curString.substring(0, curStrPos);\n this.replaceText(nextString);\n // loop the function\n this.typewrite(curString, curStrPos);\n }\n\n /**\n * We're done typing the current string\n * @param {string} curString the current string in the strings array\n * @param {number} curStrPos the current position in the curString\n * @private\n */\n doneTyping(curString, curStrPos) {\n // fires callback function\n this.options.onStringTyped(this.arrayPos, this);\n this.toggleBlinking(true);\n // is this the final string\n if (this.arrayPos === this.strings.length - 1) {\n // callback that occurs on the last typed string\n this.complete();\n // quit if we wont loop back\n if (this.loop === false || this.curLoop === this.loopCount) {\n return;\n }\n }\n this.timeout = setTimeout(() => {\n this.backspace(curString, curStrPos);\n }, this.backDelay);\n }\n\n /**\n * Backspaces 1 character at a time\n * @param {string} curString the current string in the strings array\n * @param {number} curStrPos the current position in the curString\n * @private\n */\n backspace(curString, curStrPos) {\n if (this.pause.status === true) {\n this.setPauseStatus(curString, curStrPos, false);\n return;\n }\n if (this.fadeOut) return this.initFadeOut();\n\n this.toggleBlinking(false);\n const humanize = this.humanizer(this.backSpeed);\n\n this.timeout = setTimeout(() => {\n curStrPos = htmlParser.backSpaceHtmlChars(curString, curStrPos, this);\n // replace text with base text + typed characters\n const curStringAtPosition = curString.substring(0, curStrPos);\n this.replaceText(curStringAtPosition);\n\n // if smartBack is enabled\n if (this.smartBackspace) {\n // the remaining part of the current string is equal of the same part of the new string\n let nextString = this.strings[this.arrayPos + 1];\n if (\n nextString &&\n curStringAtPosition === nextString.substring(0, curStrPos)\n ) {\n this.stopNum = curStrPos;\n } else {\n this.stopNum = 0;\n }\n }\n\n // if the number (id of character in current string) is\n // less than the stop number, keep going\n if (curStrPos > this.stopNum) {\n // subtract characters one by one\n curStrPos--;\n // loop the function\n this.backspace(curString, curStrPos);\n } else if (curStrPos <= this.stopNum) {\n // if the stop number has been reached, increase\n // array position to next string\n this.arrayPos++;\n // When looping, begin at the beginning after backspace complete\n if (this.arrayPos === this.strings.length) {\n this.arrayPos = 0;\n this.options.onLastStringBackspaced();\n this.shuffleStringsIfNeeded();\n this.begin();\n } else {\n this.typewrite(this.strings[this.sequence[this.arrayPos]], curStrPos);\n }\n }\n // humanized value for typing\n }, humanize);\n }\n\n /**\n * Full animation is complete\n * @private\n */\n complete() {\n this.options.onComplete(this);\n if (this.loop) {\n this.curLoop++;\n } else {\n this.typingComplete = true;\n }\n }\n\n /**\n * Has the typing been stopped\n * @param {string} curString the current string in the strings array\n * @param {number} curStrPos the current position in the curString\n * @param {boolean} isTyping\n * @private\n */\n setPauseStatus(curString, curStrPos, isTyping) {\n this.pause.typewrite = isTyping;\n this.pause.curString = curString;\n this.pause.curStrPos = curStrPos;\n }\n\n /**\n * Toggle the blinking cursor\n * @param {boolean} isBlinking\n * @private\n */\n toggleBlinking(isBlinking) {\n if (!this.cursor) return;\n // if in paused state, don't toggle blinking a 2nd time\n if (this.pause.status) return;\n if (this.cursorBlinking === isBlinking) return;\n this.cursorBlinking = isBlinking;\n if (isBlinking) {\n this.cursor.classList.add('typed-cursor--blink');\n } else {\n this.cursor.classList.remove('typed-cursor--blink');\n }\n }\n\n /**\n * Speed in MS to type\n * @param {number} speed\n * @private\n */\n humanizer(speed) {\n return Math.round((Math.random() * speed) / 2) + speed;\n }\n\n /**\n * Shuffle the sequence of the strings array\n * @private\n */\n shuffleStringsIfNeeded() {\n if (!this.shuffle) return;\n this.sequence = this.sequence.sort(() => Math.random() - 0.5);\n }\n\n /**\n * Adds a CSS class to fade out current string\n * @private\n */\n initFadeOut() {\n this.el.className += ` ${this.fadeOutClass}`;\n if (this.cursor) this.cursor.className += ` ${this.fadeOutClass}`;\n return setTimeout(() => {\n this.arrayPos++;\n this.replaceText('');\n\n // Resets current string if end of loop reached\n if (this.strings.length > this.arrayPos) {\n this.typewrite(this.strings[this.sequence[this.arrayPos]], 0);\n } else {\n this.typewrite(this.strings[0], 0);\n this.arrayPos = 0;\n }\n }, this.fadeOutDelay);\n }\n\n /**\n * Replaces current text in the HTML element\n * depending on element type\n * @param {string} str\n * @private\n */\n replaceText(str) {\n if (this.attr) {\n this.el.setAttribute(this.attr, str);\n } else {\n if (this.isInput) {\n this.el.value = str;\n } else if (this.contentType === 'html') {\n this.el.innerHTML = str;\n } else {\n this.el.textContent = str;\n }\n }\n }\n\n /**\n * If using input elements, bind focus in order to\n * start and stop the animation\n * @private\n */\n bindFocusEvents() {\n if (!this.isInput) return;\n this.el.addEventListener('focus', (e) => {\n this.stop();\n });\n this.el.addEventListener('blur', (e) => {\n if (this.el.value && this.el.value.length !== 0) {\n return;\n }\n this.start();\n });\n }\n\n /**\n * On init, insert the cursor element\n * @private\n */\n insertCursor() {\n if (!this.showCursor) return;\n if (this.cursor) return;\n this.cursor = document.createElement('span');\n this.cursor.className = 'typed-cursor';\n this.cursor.setAttribute('aria-hidden', true);\n this.cursor.innerHTML = this.cursorChar;\n this.el.parentNode &&\n this.el.parentNode.insertBefore(this.cursor, this.el.nextSibling);\n }\n}\n","import React, { memo, useMemo, useRef, useEffect } from \"react\";\nimport Typed from \"typed.js\";\nexport interface ReactTypedProps {\n stopped?: boolean;\n /**\n * if true will be initialized in stopped state\n * @default false\n * */\n startWhenVisible?: boolean;\n /**\n * Styles for the created element in case children is not provided\n * */\n style?: React.CSSProperties;\n /**\n * class name for the created element in case children is not provided\n * */\n className?: string;\n /**\n * In some custom component dom element is not in the ref.current property.\n * ie an Input by antd the element is in input property ( ref.current.input )\n * you can use this function to get the element from the ref\n * @default (ref)=>ref.current\n * */\n parseRef?: (ref: React.RefObject) => HTMLElement;\n /**\n * Returns the typed instance\n * */\n typedRef?: (typed: Typed) => void;\n /**\n * strings to be typed\n * @default [\n 'These are the default values...',\n 'You know what you should do?',\n 'Use your own!',\n 'Have a great day!',\n ]\n * */\n children?: React.ReactElement;\n strings?: string[];\n /**\n * ID or instance of HTML element of element containing string children\n * @default null\n */\n stringsElement?: string | Element;\n /**\n * type speed in milliseconds\n * @default 0\n */\n typeSpeed?: number;\n /**\n * time before typing starts in milliseconds\n * @default 0\n */\n startDelay?: number;\n /**\n * backspacing speed in milliseconds\n * @default 0\n */\n backSpeed?: number;\n /**\n * only backspace what doesn't match the previous string\n * @default true\n */\n smartBackspace?: boolean;\n /**\n * shuffle the strings\n * @default true\n */\n shuffle?: boolean;\n /**\n * time before backspacing in milliseconds\n * @default 700\n */\n backDelay?: number;\n /**\n * Fade out instead of backspace\n * @default false\n */\n fadeOut?: boolean;\n /**\n * css class for fade animation\n * @default typed-fade-out\n */\n fadeOutClass?: string;\n /**\n * Fade out delay in milliseconds\n * @default 500\n */\n fadeOutDelay?: number;\n /**\n * loop strings\n * @default false\n */\n loop?: boolean;\n /**\n * amount of loops\n * @default Infinity\n */\n loopCount?: number;\n /**\n * show cursor\n * @default true\n */\n showCursor?: boolean;\n /**\n * character for cursor\n * @default |\n */\n cursorChar?: string;\n /**\n * insert CSS for cursor and fadeOut into HTML\n * @default true\n */\n autoInsertCss?: boolean;\n /**\n * attribute for typing Ex: input placeholder, value, or just HTML text\n * @default null\n */\n attr?: string;\n /**\n * bind to focus and blur if el is text input\n * @default false\n */\n bindInputFocusEvents?: boolean;\n /**\n * 'html' or 'null' for plaintext\n * @default html\n */\n contentType?: string;\n /**\n * Before it begins typing the first string\n */\n onBegin?: (self: Typed) => number;\n /**\n * All typing is complete\n */\n onComplete?(self: Typed): void;\n /**\n * Before each string is typed\n */\n preStringTyped?(arrayPos: number, self: Typed): void;\n /**\n * After each string is typed\n */\n onStringTyped?(arrayPos: number, self: Typed): void;\n /**\n * During looping, after last string is typed\n */\n onLastStringBackspaced?(self: Typed): void;\n /**\n * Typing has been stopped\n */\n onTypingPaused?(arrayPos: number, self: Typed): void;\n /**\n * Typing has been started after being stopped\n */\n onTypingResumed?(arrayPos: number, self: Typed): void;\n /**\n * After reset\n */\n onReset?(self: Typed): void;\n /**\n * After stop\n */\n onStop?(arrayPos: number, self: Typed): void;\n /**\n * After start\n */\n onStart?(arrayPos: number, self: Typed): void;\n /**\n * After destroy\n */\n onDestroy?(self: Typed): void;\n}\n\nexport const ReactTyped: React.FC = memo(\n ({\n style,\n className,\n typedRef,\n parseRef,\n stopped,\n children,\n startWhenVisible,\n ...typedOptions\n }) => {\n const rootElement = useRef(null);\n const shouldUpdateArgs = useMemo(\n () => [\n ...Object.values(typedOptions).filter(\n (v) =>\n typeof v === \"boolean\" ||\n typeof v === \"number\" ||\n typeof v === \"string\"\n ),\n typedOptions.strings?.join(\",\"),\n ],\n [typedOptions]\n );\n useEffect(() => {\n const element =\n (parseRef && parseRef(rootElement)) || rootElement.current;\n const typed = new Typed(element, { ...typedOptions });\n\n if (stopped || startWhenVisible) {\n typed?.stop();\n }\n\n if (startWhenVisible) {\n const observer = new IntersectionObserver(([entry]) => {\n if (entry.isIntersecting) {\n typed?.start();\n observer.disconnect();\n }\n });\n observer.observe(element);\n }\n\n if (typedRef && typed) {\n typedRef(typed);\n }\n return () => {\n typed.destroy();\n };\n }, shouldUpdateArgs);\n\n const child = !children ? (\n \n ) : (\n React.cloneElement(children, {\n ref: rootElement,\n })\n );\n return child;\n }\n);\n\nexport { Typed };\n"],"names":["r","e","t","f","n","Array","isArray","o","length","arguments","document","head","getElementsByTagName","createElement","type","firstChild","insertBefore","appendChild","styleSheet","cssText","createTextNode","Mt","L","isNaN","N","P","mt","B","pt","getAutoCloseDelay","z","$t","$","_ref","enter","exit","appendPosition","collapse","collapseDuration","s","_ref2","children","a","position","d","preventExitTransition","c","done","T","nodeRef","g","isIn","v","playToast","x","C","S","E","zt","Bt","current","p","split","b","target","removeEventListener","classList","remove","add","addEventListener","Rt","onExited","undefined","scrollHeight","style","requestAnimationFrame","minHeight","height","transition","padding","margin","setTimeout","Z","className","ut","J","content","tt","props","containerId","id","toastId","theme","data","isLoading","icon","reason","removalReason","status","Ut","Ft","closeToast","toastProps","isPaused","gt","_ref4","delay","isRunning","hide","l","controlledProgress","progress","rtl","animationDuration","animationPlayState","transform","Tt","defaultClassName","et","role","Xt","at","genToastId","_t","Map","Set","notify","from","values","forEach","i","u","onClose","call","isActive","get","m","_","updateId","h","staleId","delete","set","onOpen","observe","toggle","removeToast","toasts","clearQueue","buildToast","_ref5","has","k","M","A","toastStyle","key","Object","fromEntries","entries","filter","_ref6","D","Y","toastClassName","progressClassName","autoClose","deleteToast","shift","closeButton","R","limit","push","setProps","setToggle","isToastActive","getSnapshot","I","F","st","Vt","bt","hasContainers","size","X","nt","options","rt","Et","subscribe","Wt","U","V","Q","y","At","kt","St","start","delta","removalDistance","canCloseOnClick","canDrag","didMove","pauseOnHover","onClick","closeOnClick","draggableDirection","clientX","clientY","opacity","Math","abs","collapseAll","removeProperty","fn","xt","Zt","pauseOnFocusLoss","hasFocus","window","onPointerDown","draggable","pointerType","offsetWidth","draggablePercent","offsetHeight","onPointerUp","top","bottom","left","right","getBoundingClientRect","nativeEvent","onMouseEnter","stacked","onMouseLeave","pauseToast","toastRef","eventHandlers","loading","promise","_ref8","pending","error","success","render","resolver","dismiss","update","then","catch","info","warning","warn","dark","ht","clearWaitingQueue","getToast","_ref7","vt","onChange","play","pause","Ot","to","Jt","G","_ref9","O","viewBox","width","fill","W","spinner","Nt","_ref10","eo","oo","lo","wt","hideProgressBar","ariaLabel","it","ft","dt","j","H","fo","co","_ref3","ot","stopPropagation","fillRule","yt","q","tabIndex","ref","customProgressBar","K","lt","_o","hotKeys","altKey","code","Lt","go","To","getToastToRender","count","Kt","Yt","slice","newestOnTop","reverse","It","Dt","querySelectorAll","includes","dataset","collapsed","pos","setProperty","yo","querySelector","focus","activeElement","contains","ct","pointerEvents","map","_ref11","strings","stringsElement","typeSpeed","startDelay","backSpeed","smartBackspace","shuffle","backDelay","fadeOut","fadeOutClass","fadeOutDelay","loop","loopCount","Infinity","showCursor","cursorChar","autoInsertCss","attr","bindInputFocusEvents","contentType","onBegin","onComplete","preStringTyped","onStringTyped","onLastStringBackspaced","onTypingPaused","onTypingResumed","onReset","onStop","onStart","onDestroy","prototype","load","el","isInput","tagName","toLowerCase","cursorBlinking","elContent","getAttribute","textContent","trim","apply","innerHTML","strPos","currentElContent","this","getCurrentElContent","unshift","sequence","arrayPos","stopNum","curLoop","typewrite","curString","curStrPos","typingComplete","appendCursorAnimationCss","appendFadeOutAnimationCss","value","setAttribute","body","typeHtmlChars","substring","charAt","backSpaceHtmlChars","begin","stop","toggleBlinking","backspace","destroy","reset","clearInterval","timeout","replaceText","cursor","parentNode","removeChild","insertCursor","shuffleStringsIfNeeded","bindFocusEvents","humanizer","test","exec","parseInt","temporaryPause","doneTyping","keepTyping","setPauseStatus","complete","initFadeOut","round","random","sort","nextSibling","memo","typedRef","parseRef","transformRef","stopped","startWhenVisible","typedOptions","rootElement","useRef","shouldUpdateArgs","useMemo","join","useEffect","element","typed","Typed","observer","IntersectionObserver","entry","isIntersecting","disconnect","child","React"],"sourceRoot":""}