{"version":3,"file":"static/js/12.76a71d93b0073804ae51.chunk.js","mappings":";yKASkBA,moBAAlB,SAAkBA,GACdA,EAAA,8BACAA,EAAA,8BACAA,EAAA,oCACAA,EAAA,8BACAA,EAAA,YACAA,EAAA,oBACAA,EAAA,gDACAA,EAAA,wBACAA,EAAA,oBACAA,EAAA,0BACAA,EAAA,8BACAA,EAAA,gCACAA,EAAA,kCACAA,EAAA,8BACAA,EAAA,4BACAA,EAAA,0BAhBJ,CAAkBA,IAAAA,EAAQ,KCuD1B,MAAMC,UAA0BC,EAAAA,cAC5BC,YAAYC,GACRC,MAAMD,GAgBO,KAAAE,gBAA2BC,KAAKH,MAAMI,QAAQC,QAAQC,QAAQC,iBAf3EJ,KAAKK,MAAQ,CAAEC,cAAUC,GAGtB,0BACH,GAAIP,KAAKH,MAAMW,OAAOf,WAAaA,EAASgB,uBAAwB,CAChE,MAAMC,QAAyBC,EAAAA,EAAAA,cAAaX,KAAKH,MAAMI,QAAQW,oBAEtCL,IAArBG,GACAV,KAAKa,SAAS,CACVP,SAAUI,KAOnBI,SACH,MAAMC,EAAaf,KAAKH,MAAMW,OAAOO,YAAc,OAC7C,QAAEC,EAAU,IAAOhB,KAAKH,MAAMI,QAAQC,QAAQe,OAAS,GAC7D,GAAID,GAAuB,OAAZA,GAAgC,KAAZA,EAAgB,CAC/C,MAAME,EAAmC,CACrCC,QAAQ,EACRC,SAAU,OAEdF,OAAuB,SACvBlB,KAAKH,MAAMI,QAAQC,QAAQC,QAAQkB,IAAIN,EAAYC,EAASE,GAKhE,IAAII,EAA2B,KAC3BC,EAAuC,KAHvBvB,KAAKD,iBAAmBC,KAAKH,MAAMW,OAAOgB,cAKtDxB,KAAKH,MAAMW,OAAOf,WAAaA,EAASgB,uBACxCa,EAAUtB,KAAKyB,cAEfF,EAAgBvB,KAAK0B,qBAG7B,MAAMC,EAASC,EAAAA,EAAA,GACR5B,KAAKH,OAAK,IACbO,eAAgBJ,KAAKD,gBACrByB,YAAaxB,KAAKD,iBAAmBC,KAAKH,MAAMW,OAAOgB,YACvDF,QAASA,EACTC,cAAeA,IAEnB,OAAOvB,KAAKH,MAAMgC,WAAWF,GAGzBF,cACJ,MAAMK,EAAe9B,KAAKH,MAAMW,OAAOsB,aACvC,IAAIC,EACJ,QAAqDxB,IAAjDP,KAAKH,MAAMI,QAAQC,QAAQ8B,KAAKC,cAA+E,OAAjDjC,KAAKH,MAAMI,QAAQC,QAAQ8B,KAAKC,aAAuB,CACrH,MAAMC,EAAQlC,KAAKH,MAAMI,QAAQC,QAAQ8B,KAAKC,aAAaE,oBAAoBC,OAC/EL,EAAmBM,IAAAA,OAAgBH,GAAOI,SAASD,IAAAA,IAAaE,KAEpE,MAAMC,EAAwB,GAC9B,IAAIC,EAAyB,EAC7BA,EAAkBzC,KAAKK,MAAMC,UAAYN,KAAKK,MAAMC,SAASoC,KAAKC,gBAAmB,EACrF,MAAMC,EAAY5C,KAAKK,MAAMC,UAAYN,KAAKK,MAAMC,SAASoC,KAAKG,UAclE,OAbID,IAAaA,MAAAA,OAAS,EAATA,EAAWE,QAAS,GACjCF,EAAUG,KAAIC,IACV,MAAMC,EAAO,CACTC,OAAQF,EAASG,OACjBC,UAAWJ,EAASK,MACpBC,SAAUN,EAASO,SACnBC,SAAUR,EAASS,gBAGvBjB,EAAMkB,KAAKT,MAIZ,CACHnB,aAAcA,EACdrC,SAAUO,KAAKH,MAAMW,OAAOf,SAC5BkE,OAAQ3D,KAAKH,MAAMI,QAAQC,QAAQ8B,KAAK4B,uBAAyB,GACjEC,UAAW9B,GAAoB,GAC/B+B,aAAcrB,EACdD,MAAOA,GAIPd,oBAAiB,IAAAqC,EACrB,MAAM,QAAEC,EAAU,GAAE,cAAEC,EAAgB,IAAOjE,KAAKH,MAAMI,QAAQC,QAAQe,OAAS,GAC3EiD,GAA+B,QAAVH,EAAA/D,KAAKH,aAAK,IAAAkE,GAAY,QAAZA,EAAVA,EAAYI,kBAAU,IAAAJ,OAAA,EAAtBA,EAAwBK,qBAAsB,GACnEtC,EAAe9B,KAAKH,MAAMW,OAAOsB,aACjCuC,EAAiBrE,KAAKH,MAAMI,QAAQC,QAAQC,QAAQmE,IAAYtE,KAAKH,MAAMW,OAAOO,YAAc,OAAOwD,MACvG/B,EAAwB,GACxB2B,EAAanE,KAAKH,MAAMsE,WACxBK,EAAkCL,GAAcA,EAAWM,oBAC3DC,EAAmCP,GAAcA,EAAWQ,aAC5DC,EAA8BZ,GAAWE,GAAsBD,EACrE,IAAIlC,EACJ,QAAqDxB,IAAjDP,KAAKH,MAAMI,QAAQC,QAAQ8B,KAAKC,cAA+E,OAAjDjC,KAAKH,MAAMI,QAAQC,QAAQ8B,KAAKC,aAAuB,CACrH,MAAMC,EAAQlC,KAAKH,MAAMI,QAAQC,QAAQ8B,KAAKC,aAAaE,oBAAoBC,OAC/EL,EAAmBM,IAAAA,OAAgBH,GAAOI,SAASD,IAAAA,IAAaE,KAEpE,MAAMsC,EAAoB,GAEpBC,EAAaX,MAAAA,OAAU,EAAVA,EAAYY,WAmB/B,GAlBID,IAAcA,MAAAA,OAAU,EAAVA,EAAYhC,QAAS,GACnCgC,EAAW/B,KAAIiC,IACX,MAAM/B,EAAqB,CACvBC,OAAQ8B,EAAU7B,OAClBC,UAAW4B,EAAU3B,MACrBC,SAAU0B,EAAUzB,UAExByB,EAAUC,cAAelC,KAAIS,IAErBA,EAAS0B,cAA0C,KAA1B1B,EAAS0B,cAClCL,EAAQnB,KAAKF,EAAS0B,cAE1BjC,EAAKO,UAAYP,EAAKO,UAAY,IAAMA,EAAS2B,iBAAmB,MAExE3C,EAAMkB,KAAKT,WAIE1C,IAAjBmE,QAA+CnE,IAAjBuB,QAA0CvB,IAAZqE,QAAyCrE,IAAhBiE,EAA2B,CAChH,MAAMY,EAAa,IAAI,IAAIC,IAAIR,IAC/B,MAAO,CACHS,gBAAiB,OACjBC,OAAQf,EACRgB,aAAcnB,GAAkB,GAChCoB,OAAQL,EAAWtC,OAAS,EAAI,GAAGsC,EAAWM,KAAK,OAAS,GAC5DC,SAAUjB,EACV5C,aAAcA,EACd8C,QAASA,EACTnF,SAAUO,KAAKH,MAAMW,OAAOf,SAC5BkE,OAAQ3D,KAAKH,MAAMI,QAAQC,QAAQ8B,KAAK4B,uBAAyB,GACjEC,UAAW9B,GAAoB,GAC/BS,MAAOA,GAIf,OAAO,MAIf,iFCxMA,MAAMoD,UAAmCjG,EAAAA,cACrCC,YAAmBC,GACfC,MAAMD,GA+BO,KAAAgG,YAAc,KACrBC,OAAeC,KAChBD,OAAeC,GAAK,IAExBD,OAAeC,GAAGC,SAAWhG,KAAKH,MAAMyB,SAG5B,KAAA2E,kBAAoB,KAC3BH,OAAeC,KAChBD,OAAeC,GAAK,IAExBD,OAAeC,GAAGG,MAAQlG,KAAKH,MAAM0B,eAvCnC4E,iBACCnG,KAAKH,MAAM2B,cACXxB,KAAKH,MAAMyB,SAAWtB,KAAK6F,cAC3B7F,KAAKH,MAAM0B,eAAiBvB,KAAKiG,qBAIlCG,oBACHpG,KAAKmG,iBAGFE,qBACHrG,KAAKmG,iBACL,MAAMG,EAASC,SAASC,cAAc,UACtCF,EAAOG,IAAM,0CACbH,EAAOI,KAAO,kBACdJ,EAAOK,OAAQ,EACfL,EAAOM,GAAK,WACZL,SAASM,KAAKC,YAAYR,GAGvBxF,SACH,OAAOnB,EAAAA,cAAAA,EAAAA,SAAA,OAoBf,iFCnCA,MAAMoH,UAAkBpH,EAAAA,cACbmB,SACH,MAAMkG,EAAYhH,KAAKH,MAAMW,OAAOwG,WAAa,GAGjD,OAAOrH,EAAAA,cAAA,OAAKsH,0BAAwB,EAACC,wBAAyB,CAAEC,OAAQH,MAGhF,6sBCRA,MAAMI,UAA0BzH,EAAAA,cAAhCC,kCAoBW,KAAAyH,iBAAoBC,GAA0CtH,KAAKH,MAAMW,OAAOwG,UAAYM,EAAMC,OAAOhD,MAnBzGzD,SACH,MAAM,UAAEkG,EAAS,UAAEQ,GAAcxH,KAAKH,MAAMW,OACtCiH,EAAOT,GACTrH,EAAAA,cAAC+H,EAAAA,GAA0B,CACvBD,KAAMT,EACNW,UAAW,CACPC,OAAQ5H,KAAKqH,iBACbQ,eAAgB7H,KAAKH,MAAMI,QAAQC,WAIzC4H,EAA0BlG,EAAAA,EAAA,GACzB5B,KAAKH,OAAK,IACbmH,UAAWS,EACXD,UAAWO,GAAAA,CAAW,gBAAiBP,KAE3C,OAAOxH,KAAKH,MAAMgC,WAAWiG,IAKrC,sGCjCA,MAyGA,EAzGqEjI,IAAQ,IAAAmI,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EACzE,MACMC,EAAezI,MAAAA,GAAc,QAATmI,EAALnI,EAAOI,eAAO,IAAA+H,GAAS,QAATA,EAAdA,EAAgB9H,eAAO,IAAA8H,GAAvBA,EAAyBO,OAAS1I,MAAAA,GAAc,QAAToI,EAALpI,EAAOI,eAAO,IAAAgI,GAAS,QAATA,EAAdA,EAAgB/H,eAAO,IAAA+H,GAAQ,QAARA,EAAvBA,EAAyBM,cAAM,IAAAN,OAAA,EAA/BA,EAAiCO,cAAgB,GAClGC,EAAW5I,MAAAA,GAAc,QAATqI,EAALrI,EAAOI,eAAO,IAAAiI,GAAS,QAATA,EAAdA,EAAgBhI,eAAO,IAAAgI,GAAvBA,EAAyBO,SAAW5I,MAAAA,GAAc,QAATsI,EAALtI,EAAOI,eAAO,IAAAkI,GAAS,QAATA,EAAdA,EAAgBjI,eAAO,IAAAiI,GAAU,QAAVA,EAAvBA,EAAyBM,gBAAQ,IAAAN,OAAA,EAAjCA,EAAmCO,UAAU,GAAK,GAEjGC,GAAS9I,MAAAA,GAAa,QAARuI,EAALvI,EAAOW,cAAM,IAAA4H,OAAA,EAAbA,EAAeO,SAAU,GAClCC,GAAW/I,MAAAA,GAAc,QAATwI,EAALxI,EAAOI,eAAO,IAAAoI,GAAS,QAATA,EAAdA,EAAgBnI,eAAO,IAAAmI,GAAK,QAALA,EAAvBA,EAAyBQ,WAAG,IAAAR,GAAY,QAAZA,EAA5BA,EAA8BS,kBAAU,IAAAT,OAAA,EAAxCA,EAA0CO,WAAY,GACvE,IAAIL,EAEAA,EARe,kBAOfK,EAASJ,eAA6C,KAAbC,EAChC,KAEa,KAAbA,EAAkBA,EAAWH,EAG1C,MAAMS,EAAoBlJ,EAAMI,QAAQC,QAAQ8I,YAAYD,UACtDE,EAAgBpJ,EAAMI,QAAQC,QAAQe,MACtCiB,EAAQ+G,MAAAA,OAAa,EAAbA,EAAe/G,MACvBgH,EAAQD,MAAAA,OAAa,EAAbA,EAAeC,MAC7B,IAAIC,EAAUtJ,EAAMuJ,UAAUC,gCAC9B,MAAOC,EAASC,GAAc5J,EAAAA,UAAe,IACtC6J,EAAkBC,GAAuB9J,EAAAA,SAAe,CAC3DU,OAAO,EACP8I,QAAS,GACTO,MAAO,KA6DX,OA3DA/J,EAAAA,WAAgB,KACQ,IAAAgK,EAAhBzH,GAASgH,IACTK,GAAW,IAEXK,EAAAA,EAAAA,IACI,CAAEC,cAA4B,QAAfF,EAAE9J,EAAMI,eAAO,IAAA0J,OAAA,EAAbA,EAAe/I,eAChCmI,EACA7G,EACAgH,EACAX,EACAI,GAECmB,MAAKC,IAGF,GADAR,GAAW,GACPQ,EAAOC,OACPP,EAAoB,CAChBpJ,OAAO,EACP8I,QAASA,EACTO,MAAO,gBAER,CAEH,OADAP,EAAUY,EAAOE,MAAQF,EAAOE,MAAQ,GAChCd,GACJ,IAAK,uBACDA,EAAUtJ,EAAMuJ,UAAUc,mBAC1B,MACJ,IAAK,sBACDf,EAAUtJ,EAAMuJ,UAAUe,mBAC1B,MACJ,IAAK,mBACDhB,EAAUtJ,EAAMuJ,UAAUgB,gBAC1B,MACJ,IAAK,oBACDjB,EAAUtJ,EAAMuJ,UAAUiB,sBAC1B,MACJ,IAAK,qBACDlB,EAAUtJ,EAAMuJ,UAAUkB,sBAKlCb,EAAoB,CAChBpJ,OAAO,EACP8I,QAASA,EACTO,MAAO,cAIlBa,OAAMC,IACHrB,EAAUqB,EAAMrB,QAChBM,EAAoB,CAChBpJ,OAAO,EACP8I,QAASqB,EAAMrB,QACfO,MAAO,gBAIxB,IAEC/J,EAAAA,cAAA,MAAA8K,OAAAC,OAAA,CAAKlD,UAAW3H,EAAM2H,UAAWZ,GAAI/G,EAAM+G,IAAQ/G,EAAM8K,uBAAuB9K,IAC3EA,EAAMmH,UACNsC,EACG3J,EAAAA,cAAA,OAAK6H,UAAW,+BACZ7H,EAAAA,cAAA,OAAK6H,UAAW,aAGpB,GAEHgC,EAAiBnJ,MACdV,EAAAA,cAAA,OAAK6H,UAAW,uBAAuBgC,EAAiBE,QAASkB,KAAK,SACjEpB,EAAiBL,SAGtB,6FCjGhB,MAWA,EAX+EtJ,IAC3E,MAAM,MAAEgL,EAAK,GAAEjE,EAAE,OAAEpG,GAAWX,EAC9B,OACIF,EAAAA,cAAA,OAAKiH,GAAIpG,EAAOsK,UAAYlE,EAAIY,UAAWO,GAAAA,CAAW,mBAAoBvH,EAAOgH,YAC5EqD,EAAME,QAAQhI,KAAI,CAACiI,EAA2BC,IAC3CtL,EAAAA,cAACA,EAAAA,SAAc,CAACuL,IAAKD,GAAQD,8ECE7C,MAAMG,UAAiBxL,EAAAA,cACZmB,SACH,OAAOd,KAAKH,MAAMgC,WAAW7B,KAAKH,QAI1C,iFCvBO,MCSP,EAAgBA,IAA6B,IAAAuL,EACzC,OACIzL,EAAAA,cAAA,OAAKiH,GAAG,WAAU,aAAa/G,EAAMW,OAAO6K,OACxC1L,EAAAA,cAAA,UACIA,EAAAA,cAAA,OAAK6H,UAAU,QAAO,cAAa,SAChB,QADyB4D,EAC3CvL,EAAMW,OAAOgC,aAAK,IAAA4I,OAAA,EAAlBA,EAAoBrI,KAAI,CAACuI,EAAUJ,KAAQ,OACxCvL,EAAAA,cAAA,MAAIuL,IAAKA,EAAKK,QAASA,IAAOC,SAASC,KAAO,IAAIH,EAASI,UACtDJ,EAASK,OACNhM,EAAAA,cAAA,OACIiM,MAAO,CACHC,gBAAiB,OAAOP,EAASK,MAAMlF,qCAInD9G,EAAAA,cAAA,KAAG8L,KAAM,IAAIH,EAASI,SAAQ,cDvBjBI,ECuBoDR,EAASQ,SDvB3CC,ECuBqDT,EAASS,QDtB1GA,EAAU,GAAGA,KAAWD,IAAaA,ICuBnBR,EAASS,SACNpM,EAAAA,cAAA,QAAM6H,UAAU,wBAAuB,kBAClC8D,EAASS,SAGlBpM,EAAAA,cAAA,0BAAmB2L,EAASQ,YD7BpBE,IAACF,EAAkBC,+EEYvD,YAAqBpM,EAAAA,cAAA,oICIrB,MAAMsM,UAA8BtM,EAAAA,cAChCC,YAAYC,GACRC,MAAMD,GAGHiB,SACH,MAAM,OAAEN,GAAWR,KAAKH,OACxBqM,EAAAA,EAAAA,IAAS,2BAA2BlM,KAAKH,MAAM+G,MAAM5G,KAAKH,MAAMsM,YAAanM,KAAKH,MAAMuM,WACxF,IAAIzD,EAASnI,EAAO6L,aAEhBC,EAA0B,GAO9B,GALItM,KAAKH,MAAMI,UACXqM,GAAmBtM,KAAKH,MAAMI,QAAQC,QAAQ2I,IAAI0D,aAClDD,GAAmBE,EAAAA,GAAiBC,uBAAuB,iBAAmB,KAG9EC,EAAAA,EAAAA,IAAc/D,GAEdA,EAAS,GAAG2D,KAAmBK,EAAAA,KAAUhE,UACtC,GAAe,KAAXA,KAAkBiE,EAAAA,EAAAA,IAAcjE,GAKvC,OAJAkE,EAAAA,EAAAA,IACI,mKACA7M,KAAKH,MAAMuM,WAER,KAEX,MAAMU,EAAa,gBAAgBnE,cAAmBnI,EAAOmG,iBAAiBnG,EAAOuM,oBAErF,OAAOpN,EAAAA,cAAoBqN,EAAAA,GAAmB,CAAE9B,IAAKlL,KAAKH,MAAM+G,GAAIM,wBAAyB,CAAEC,OAAQ2F,MAI/G,yGClCA,MAAMG,UAA4BtN,EAAAA,cAC9BC,YAAYC,GACRC,MAAMD,GAGHiB,SACH,MAAM,OAAEN,GAAWR,KAAKH,OACxBqM,EAAAA,EAAAA,IAAS,2BAA2BlM,KAAKH,MAAM+G,MAAM5G,KAAKH,MAAMsM,YAAanM,KAAKH,MAAMuM,WACxF,MAAMzD,EAASnI,EAAO0M,aAEtB,IAAKvE,GAAqB,KAAXA,IAAiBiE,EAAAA,EAAAA,IAAcjE,KAAW+D,EAAAA,EAAAA,IAAc/D,GAKnE,OAJAkE,EAAAA,EAAAA,IACI,wKACA7M,KAAKH,MAAMuM,WAER,KAGX,GAAIzD,EAAOwE,SAAS,cAEhB,OADAN,EAAAA,EAAAA,IAAS,qEAAsE7M,KAAKH,MAAMuM,WACnF,KAGX,MAAMgB,EAAapN,KAAKH,MAAMI,UAAWoN,EAAAA,EAAAA,IAAerN,KAAKH,MAAMI,QAAQC,SACrE4M,EAAa,WAAWM,EAAa,UAAUA,KAAgB,MAAMzE,cAC3E,OAAOhJ,EAAAA,cAAoBqN,EAAAA,GAAmB,CAAE9B,IAAKlL,KAAKH,MAAM+G,GAAIM,wBAAyB,CAAEC,OAAQ2F,MAI/G,yGC5BA,MAmBA,EAnB4BjN,IACxB,MAAM,OAAEW,EAAM,GAAEoG,EAAE,SAAEuF,EAAQ,UAAEC,GAAcvM,GAC5CqM,EAAAA,EAAAA,IAAS,0BAA0BtF,KAAMuF,KAAaC,GACtD,MAAMzD,EAASnI,EAAO8M,YAEtB,IAAK3E,GAAqB,KAAXA,IAAiBiE,EAAAA,EAAAA,IAAcjE,KAAW+D,EAAAA,EAAAA,IAAc/D,GAEnE,OADAkE,EAAAA,EAAAA,IAAS,yFAA0FT,GAC5F,KAGX,GAAIzD,EAAOwE,SAAS,YAEhB,OADAN,EAAAA,EAAAA,IAAS,mEAAoET,GACtE,KAGX,MAAMmB,EAAY,UAAU5E,YAC5B,OAAOhJ,EAAAA,cAAoBqN,EAAAA,GAAmB,CAAE9B,IAAKtE,EAAIM,wBAAyB,CAAEC,OAAQoG,iECzBhG,aAAsD,+FCA/C,MAAMrB,EAAWA,CAACsB,EAAsBpB,KAC3CA,GAAaA,EAAUqB,IAAIC,EAAAA,GAASC,MAAOH,IAGlCX,EAAWA,CAACe,EAAsBxB,KAC3CA,GAAaA,EAAUqB,IAAIC,EAAAA,GAASzD,MAAO2D,IAQlChB,EAAiBjE,GAEnB,kFAAkFkF,KAAKlF,GAGrF+D,EAAiB/D,GACnB,8DAA8DkF,KAAKlF,0EClB9E,YAAqBhJ,EAAAA,cAAA,msBCarB,MAAMmO,UAAkBnO,EAAAA,cAAxBC,cAAA,oBAiBW,KAAAyH,iBAAoBC,GAA0CtH,KAAKH,MAAMW,OAAOuK,QAAUzD,EAAMC,OAAOhD,MAhBvGzD,SACH,MAAM,QAAEiK,EAAO,UAAEvD,GAAcxH,KAAKH,MAAMW,OACpCiH,EAAOsD,GACTpL,EAAAA,cAAC+H,EAAAA,GAA0B,CACvBD,KAAMsD,EACNpD,UAAW,CAAEC,OAAQ5H,KAAKqH,iBAAkBQ,eAAgB7H,KAAKH,MAAMI,QAAQC,WAGjF6N,EAAkBnM,EAAAA,EAAA,GACjB5B,KAAKH,OAAK,IACbkL,QAAStD,EACTD,UAAWO,GAAAA,CAAW,gBAAiBP,KAE3C,OAAOxH,KAAKH,MAAMgC,WAAWkM,IAMrC,wFCjCA,MAMA,EANqDlO,GACjDF,EAAAA,cAAA,MAAA8K,OAAAC,OAAA,CAAKlD,UAAW3H,EAAM2H,UAAWZ,GAAI/G,EAAM+G,IAAQ/G,EAAM8K,uBAAuB9K,IAC3EA,EAAMkL,6FCMf,MAAMiD,UAA2BrO,EAAAA,cACtBmB,SAAM,IAAAmN,EACT,QAAkD1N,IAA9CP,KAAKH,MAAMqO,KAAKC,mBAAmBpE,OACnC,MAAM,IAAIE,MAAM,uFAEpB,IACIiE,MACIC,oBACIpE,QAAQ,MAAEsB,EAAK,YAAE+C,EAAW,SAAEC,EAAQ,gBAAEC,EAAe,WAAEC,MAGjEvO,KAAKH,MAET,MAAM,OACFW,EAAM,QACNP,EACAiO,MACIC,oBACIpE,QAAQ,aAAEyE,EAAY,UAAEC,EAAS,aAAEC,EAAY,MAAEC,MAGzD3O,KAAKH,MAGH+O,EAAcvD,EACdwD,EAAqBT,EACrBU,EAAkBR,EAGxBjD,EAAQ7K,EAAO6K,OAASA,EACxB+C,EAAc5N,EAAO4N,aAAeA,EACpCC,EAAW7N,EAAO6N,UAAYA,EAC9BC,EAAmB9N,EAAOuO,cAAgBvO,EAAOuO,aAAatI,KAAQ6H,EACtEC,EAAa/N,EAAO+N,YAAcA,EAGlC,MAAMS,EAAYhP,KAAKiP,oBAAoB5D,EAAOpL,GAAWA,EAAQC,SAAWD,EAAQC,QAAQgP,KAChG,OACIvP,EAAAA,cAAAA,EAAAA,SAAA,KACIA,EAAAA,cAACwP,EAAAA,GAAe,KACXH,GAAarP,EAAAA,cAAA,aAAQqP,GACrBZ,GAAezO,EAAAA,cAAA,QAAMyP,KAAK,cAAcrE,QAASqD,IACjDC,GAAY1O,EAAAA,cAAA,QAAMyP,KAAK,WAAWrE,QAASsD,IAC3CG,GAAgB7O,EAAAA,cAAA,QAAM0P,IAAI,YAAY5D,KAAM+C,IAC5CD,GAAc5O,EAAAA,cAAA,QAAM0P,IAAI,gBAAgB5D,KAAM8C,KAElDvO,KAAKsP,uBACFV,EACAC,EACAC,EACAN,EACAC,EACAE,EACuB,QADlBV,EACLhO,EAAQC,QAAQqP,eAAO,IAAAtB,OAAA,EAAvBA,EAAyBuB,SACzBd,IAEFlO,EAAOiP,eAAiBzP,KAAK0P,cAAcV,EAAWZ,EAAaE,IACnE9N,EAAOmP,oBAAsB3P,KAAK4P,mBAAmBZ,EAAWZ,EAAaE,IAYnFoB,cAAcrE,EAA2B+C,EAAiCE,GAC9E,OACI3O,EAAAA,cAACwP,EAAAA,GAAe,KACX9D,GAAS1L,EAAAA,cAAA,QAAMkQ,SAAS,WAAW9E,QAASM,IAC5C+C,GAAezO,EAAAA,cAAA,QAAMkQ,SAAS,iBAAiB9E,QAASqD,IACxDE,GAAmB3O,EAAAA,cAAA,QAAMkQ,SAAS,WAAW9E,QAASuD,IACvD3O,EAAAA,cAAA,QAAMkQ,SAAS,UAAU9E,QAAQ,aAiBrCuE,uBACJV,EACAR,EACAE,EACAE,EACAC,EACAE,EACAjK,EACAgK,GAGA,MAAMoB,EAAkBC,KAAKC,UAAU,CACnC,WAAY,oBACZ,QAAS,UACTZ,KAAMR,EACNR,YAAAA,EACAzC,MAAO2C,EACP2B,IAAKxB,EACLyB,MAAO,CACH,QAAS,QACTd,KAAMV,GAEVyB,OAAQ,CACJ,QAAS,QACTtH,IAAK2F,EACL4B,cAAe1L,EACfiK,MAAAA,KAGR,OACIhP,EAAAA,cAACwP,EAAAA,GAAe,KAEZxP,EAAAA,cAAA,4BAAwB,UAAU+G,KAAK,sBAAsBQ,wBAAyB,CAAEC,OAAQ2I,MAWpGF,mBACJvE,EACA+C,EACAE,GAEA,OACI3O,EAAAA,cAACwP,EAAAA,GAAe,KACX9D,GAAS1L,EAAAA,cAAA,QAAMyP,KAAK,gBAAgBrE,QAASM,IAC7C+C,GAAezO,EAAAA,cAAA,QAAMyP,KAAK,sBAAsBrE,QAASqD,IACzDE,GAAmB3O,EAAAA,cAAA,QAAMyP,KAAK,gBAAgBrE,QAASuD,IACxD3O,EAAAA,cAAA,QAAMyP,KAAK,eAAerE,QAAQ,aAUtCkE,oBAAoB5D,EAA2B6D,GAC9C7D,IACDA,EAAQ,IAEZ,MAAMgF,EAAerQ,KAAKH,MAAMW,OAChC,GAAI6P,GAAgBA,EAAaC,wBAC7B,OAAOjF,EAEX,MAAMkF,EAAYrB,GAAOA,EAAIsB,SAU7B,OATID,IACIA,EAAUE,kBACVpF,EAAQ,GAAGkF,EAAUE,kBAAkBpF,KAEvCkF,EAAUG,kBACVrF,EAAQ,GAAGA,IAAQkF,EAAUG,oBAI9BrF,GAIf,iFCzLA,YAAqB1L,EAAAA,cAAA,kFCArB,YAAqBA,EAAAA,cAAA","sources":["webpack://Msdyn365.Commerce.Online/./src/modules/commision-junction/commision-junction.props.autogenerated.ts?52cb","webpack://Msdyn365.Commerce.Online/./src/modules/commision-junction/commision-junction.tsx?9c98","webpack://Msdyn365.Commerce.Online/./src/modules/commision-junction/commision-junction.view.tsx?eff9","webpack://Msdyn365.Commerce.Online/./src/modules/custom-contentcode-block/custom-contentcode-block.tsx?3093","webpack://Msdyn365.Commerce.Online/./src/modules/email-verification/email-verification.tsx?5d82","webpack://Msdyn365.Commerce.Online/./src/modules/email-verification/email-verification.view.tsx?2421","webpack://Msdyn365.Commerce.Online/./src/modules/linked-container/linked-container.tsx?090c","webpack://Msdyn365.Commerce.Online/./src/modules/timeline/timeline.tsx?62a2","webpack://Msdyn365.Commerce.Online/./src/modules/timeline/getTimelineItemLabel.ts?1b0d","webpack://Msdyn365.Commerce.Online/./src/modules/timeline/timeline.view.tsx?f138","webpack://Msdyn365.Commerce.Online/./src/themes/venchi/venchi.tsx?30fb","webpack://Msdyn365.Commerce.Online/./src/modules/default-external-script/default-external-script.tsx?2a33","webpack://Msdyn365.Commerce.Online/./src/modules/default-inline-script/default-inline-script.tsx?5ccd","webpack://Msdyn365.Commerce.Online/./src/modules/default-inline-style/default-inline-style.tsx?3552","webpack://Msdyn365.Commerce.Online/./src/modules/place-holder-for-container-preview/place-holder-for-container-preview.tsx?605e","webpack://Msdyn365.Commerce.Online/./src/utils/script-utils.ts?cb52","webpack://Msdyn365.Commerce.Online/./src/modules/fabrikam/fabrikam.tsx?5b10","webpack://Msdyn365.Commerce.Online/./src/modules/html-block/html-block.tsx?c080","webpack://Msdyn365.Commerce.Online/./src/modules/html-block/html-block.view.tsx?b072","webpack://Msdyn365.Commerce.Online/./src/modules/product-page-summary/product-page-summary.tsx?2924","webpack://Msdyn365.Commerce.Online/./src/modules/starter/starter.tsx?aade","webpack://Msdyn365.Commerce.Online/./src/modules/adventureworks/adventureworks.tsx?8342"],"sourcesContent":["/**\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. See License.txt in the project root for license information.\r\n * ICommisionJunction contentModule Interface Properties\r\n * THIS FILE IS AUTO-GENERATED - MANUAL MODIFICATIONS WILL BE LOST\r\n */\r\n\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\n\r\nexport const enum pageType {\r\n accountCenter = 'accountCenter',\r\n accountSignup = 'accountSignup',\r\n applicationStart = 'applicationStart',\r\n branchLocator = 'branchLocator',\r\n cart = 'cart',\r\n category = 'category',\r\n conversionConfirmation = 'conversionConfirmation',\r\n department = 'department',\r\n homepage = 'homepage',\r\n information = 'information',\r\n productDetail = 'productDetail',\r\n propertyDetail = 'propertyDetail',\r\n propertyResults = 'propertyResults',\r\n searchResults = 'searchResults',\r\n storeLocator = 'storeLocator',\r\n subCategory = 'subCategory'\r\n}\r\n\r\nexport interface ICommisionJunctionConfig extends Msdyn365.IModuleConfig {\r\n isCJEnabled?: boolean;\r\n cookieName?: string;\r\n enterpriseId?: string;\r\n pageType?: pageType;\r\n}\r\n\r\nexport interface ICommisionJunctionProps extends Msdyn365.IModule {\r\n config: ICommisionJunctionConfig;\r\n}\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\nimport { ICookieSetOptions } from '@msdyn365-commerce/core-internal';\r\nimport { getCartState, ICartState } from '@msdyn365-commerce/global-state';\r\nimport { SalesOrder } from '@msdyn365-commerce/retail-proxy';\r\nimport CryptoJS from 'crypto-js';\r\nimport * as React from 'react';\r\nimport { ICommisionJunctionData } from './commision-junction.data';\r\nimport { ICommisionJunctionProps, pageType } from './commision-junction.props.autogenerated';\r\n\r\ninterface ISiteTagItem {\r\n itemId: string | undefined;\r\n unitPrice: number | undefined;\r\n quantity: number | undefined;\r\n discount?: number | undefined;\r\n}\r\n\r\ninterface ISiteTag {\r\n enterpriseId: string | undefined;\r\n pageType: pageType | undefined;\r\n userId: string;\r\n emailHash: string;\r\n cartSubtotal: number | undefined;\r\n items: ISiteTagItem[];\r\n}\r\n\r\ninterface IConversionTag {\r\n actionTrackerId: number;\r\n amount: number;\r\n cjeventOrder: string;\r\n coupon?: string;\r\n currency: string;\r\n enterpriseId: string | undefined;\r\n orderId: string;\r\n pageType: pageType | undefined;\r\n userId: string;\r\n emailHash: string;\r\n items: ISiteTagItem[];\r\n}\r\n\r\nexport interface ICommisionJunctionViewProps extends ICommisionJunctionExtentedProps {\r\n isCJEnabled: boolean;\r\n siteTag: ISiteTag;\r\n conversionTag?: IConversionTag;\r\n}\r\n\r\nexport interface ICommisionJunctionExtentedProps extends ICommisionJunctionProps {\r\n salesOrder?: SalesOrder;\r\n}\r\n\r\n/**\r\n * Age Gate state.\r\n */\r\nexport interface ICommisionJunctionState {\r\n cartData?: ICartState;\r\n}\r\n/**\r\n *\r\n * CommisionJunction component\r\n * @extends {React.PureComponent, ICommisionJunctionState>}\r\n */\r\nclass CommisionJunction extends React.PureComponent, ICommisionJunctionState> {\r\n constructor(props: ICommisionJunctionExtentedProps) {\r\n super(props);\r\n this.state = { cartData: undefined };\r\n }\r\n\r\n public async componentDidMount() {\r\n if (this.props.config.pageType !== pageType.conversionConfirmation) {\r\n const currentCartState = await getCartState(this.props.context.actionContext);\r\n\r\n if (currentCartState !== undefined) {\r\n this.setState({\r\n cartData: currentCartState\r\n });\r\n }\r\n }\r\n }\r\n\r\n private readonly _isConsentGiven: boolean = this.props.context.request.cookies.isConsentGiven();\r\n public render(): JSX.Element | null {\r\n const cookieName = this.props.config.cookieName || 'cje';\r\n const { cjevent = '' } = this.props.context.request.query || {};\r\n if (cjevent && cjevent !== null && cjevent !== '') {\r\n const cookieOptions: ICookieSetOptions = {\r\n secure: true,\r\n sameSite: 'none'\r\n };\r\n cookieOptions.maxAge = 395 * 24 * 60 * 60;\r\n this.props.context.request.cookies.set(cookieName, cjevent, cookieOptions);\r\n }\r\n\r\n const isCJEnabled = this._isConsentGiven && this.props.config.isCJEnabled;\r\n\r\n let siteTag: ISiteTag | null = null;\r\n let conversionTag: IConversionTag | null = null;\r\n if (isCJEnabled) {\r\n if (this.props.config.pageType !== pageType.conversionConfirmation) {\r\n siteTag = this._setSiteTag();\r\n } else {\r\n conversionTag = this._setConversionTag();\r\n }\r\n }\r\n const viewProps = {\r\n ...this.props,\r\n isConsentGiven: this._isConsentGiven,\r\n isCJEnabled: this._isConsentGiven && this.props.config.isCJEnabled,\r\n siteTag: siteTag,\r\n conversionTag: conversionTag\r\n };\r\n return this.props.renderView(viewProps);\r\n }\r\n\r\n private _setSiteTag(): ISiteTag {\r\n const enterpriseId = this.props.config.enterpriseId;\r\n let emailAddressHash;\r\n if (this.props.context.request.user.emailAddress !== undefined && this.props.context.request.user.emailAddress !== null) {\r\n const email = this.props.context.request.user.emailAddress.toLocaleLowerCase().trim();\r\n emailAddressHash = CryptoJS.SHA256(email).toString(CryptoJS.enc.Hex);\r\n }\r\n const items: ISiteTagItem[] = [];\r\n let subTotalAmount: number = 0;\r\n subTotalAmount = (this.state.cartData && this.state.cartData.cart.SubtotalAmount) || 0;\r\n const cartLines = this.state.cartData && this.state.cartData.cart.CartLines;\r\n if (cartLines && cartLines?.length > 0) {\r\n cartLines.map(cartline => {\r\n const item = {\r\n itemId: cartline.ItemId,\r\n unitPrice: cartline.Price,\r\n quantity: cartline.Quantity,\r\n discount: cartline.DiscountAmount\r\n };\r\n\r\n items.push(item);\r\n });\r\n }\r\n\r\n return {\r\n enterpriseId: enterpriseId,\r\n pageType: this.props.config.pageType,\r\n userId: this.props.context.request.user.customerAccountNumber || '',\r\n emailHash: emailAddressHash || '',\r\n cartSubtotal: subTotalAmount,\r\n items: items\r\n };\r\n }\r\n\r\n private _setConversionTag(): IConversionTag | null {\r\n const { salesId = '', transactionId = '' } = this.props.context.request.query || {};\r\n const channelReferenceId = this.props?.salesOrder?.ChannelReferenceId || '';\r\n const enterpriseId = this.props.config.enterpriseId;\r\n const cjeCookieValue = this.props.context.request.cookies.get(this.props.config.cookieName || 'cje').value;\r\n const items: ISiteTagItem[] = [];\r\n const salesOrder = this.props.salesOrder;\r\n const totalAmount: number | undefined = salesOrder && salesOrder.NetAmountWithoutTax;\r\n const currencyCode: string | undefined = salesOrder && salesOrder.CurrencyCode;\r\n const orderId: string | undefined = salesId || channelReferenceId || transactionId;\r\n let emailAddressHash;\r\n if (this.props.context.request.user.emailAddress !== undefined && this.props.context.request.user.emailAddress !== null) {\r\n const email = this.props.context.request.user.emailAddress.toLocaleLowerCase().trim();\r\n emailAddressHash = CryptoJS.SHA256(email).toString(CryptoJS.enc.Hex);\r\n }\r\n const coupons: string[] = [];\r\n\r\n const salesLines = salesOrder?.SalesLines;\r\n if (salesLines && salesLines?.length > 0) {\r\n salesLines.map(salesLine => {\r\n const item: ISiteTagItem = {\r\n itemId: salesLine.ItemId,\r\n unitPrice: salesLine.Price,\r\n quantity: salesLine.Quantity\r\n };\r\n salesLine.DiscountLines!.map(discount => {\r\n // eslint-disable-next-line @typescript-eslint/restrict-plus-operands\r\n if (discount.DiscountCode && discount.DiscountCode !== '') {\r\n coupons.push(discount.DiscountCode);\r\n }\r\n item.discount = (item.discount || 0) + (discount.EffectiveAmount || 0);\r\n });\r\n items.push(item);\r\n });\r\n }\r\n\r\n if (currencyCode !== undefined && enterpriseId !== undefined && orderId !== undefined && totalAmount !== undefined) {\r\n const couponsUnq = [...new Set(coupons)];\r\n return {\r\n actionTrackerId: 430475,\r\n amount: totalAmount,\r\n cjeventOrder: cjeCookieValue || '',\r\n coupon: couponsUnq.length > 0 ? `${couponsUnq.join(',')}` : '',\r\n currency: currencyCode,\r\n enterpriseId: enterpriseId,\r\n orderId: orderId,\r\n pageType: this.props.config.pageType,\r\n userId: this.props.context.request.user.customerAccountNumber || '',\r\n emailHash: emailAddressHash || '',\r\n items: items\r\n };\r\n }\r\n\r\n return null;\r\n }\r\n}\r\n\r\nexport default CommisionJunction;\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\nimport * as React from 'react';\r\nimport { ICommisionJunctionViewProps } from './commision-junction';\r\n\r\nclass CommisionJunctionViewProps extends React.PureComponent {\r\n public constructor(props: ICommisionJunctionViewProps) {\r\n super(props);\r\n }\r\n\r\n public windowFunction(): void {\r\n if (this.props.isCJEnabled) {\r\n this.props.siteTag && this._addSiteTag();\r\n this.props.conversionTag && this._addConversionTag();\r\n }\r\n }\r\n\r\n public componentDidMount(): void {\r\n this.windowFunction();\r\n }\r\n\r\n public componentDidUpdate(): void {\r\n this.windowFunction();\r\n const script = document.createElement('script');\r\n script.src = 'https://www.mczbf.com/tags/12703/tag.js';\r\n script.type = 'text/javascript';\r\n script.async = true;\r\n script.id = 'cjapitag';\r\n document.body.appendChild(script);\r\n }\r\n\r\n public render(): JSX.Element | null {\r\n return <>;\r\n }\r\n\r\n /**\r\n * HandlePageLoad.\r\n */\r\n private readonly _addSiteTag = () => {\r\n if (!(window as any).cj) {\r\n (window as any).cj = {};\r\n }\r\n (window as any).cj.sitePage = this.props.siteTag;\r\n };\r\n\r\n private readonly _addConversionTag = () => {\r\n if (!(window as any).cj) {\r\n (window as any).cj = {};\r\n }\r\n (window as any).cj.order = this.props.conversionTag;\r\n };\r\n}\r\nexport default CommisionJunctionViewProps;\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n/* eslint-disable no-duplicate-imports */\r\n//import * as MsDyn365 from '@msdyn365-commerce/core';\r\n//import classnames from 'classnames';\r\nimport * as React from 'react';\r\nimport { ICustomContentcodeBlockProps } from './custom-contentcode-block.props.autogenerated';\r\n\r\nexport interface ITextBlockViewProps extends ICustomContentcodeBlockProps<{}> {\r\n paragraph?: React.ReactNode;\r\n className?: string;\r\n}\r\n\r\n/**\r\n *\r\n * TextBlock component\r\n */\r\nclass TextBlock extends React.PureComponent> {\r\n public render(): JSX.Element | null {\r\n const paragraph = this.props.config.paragraph || '';\r\n\r\n // tslint:disable:react-no-dangerous-html -- intentionally set inner html\r\n return
;\r\n }\r\n}\r\nexport default TextBlock;\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as MsDyn365 from '@msdyn365-commerce/core';\r\nimport classnames from 'classnames';\r\nimport * as React from 'react';\r\nimport { IEmailVerificationProps } from './email-verification.props.autogenerated';\r\n\r\nexport interface IEmailVerificationViewProps extends IEmailVerificationProps<{}> {\r\n paragraph?: React.ReactNode;\r\n source?: React.ReactNode;\r\n className?: string;\r\n}\r\n\r\n/**\r\n *\r\n * EmailVerification component\r\n */\r\nclass EmailVerification extends React.PureComponent> {\r\n public render(): JSX.Element | null {\r\n const { paragraph, className } = this.props.config;\r\n const text = paragraph && (\r\n \r\n );\r\n const EmailVerificationViewProps = {\r\n ...this.props,\r\n paragraph: text,\r\n className: classnames('ms-text-block', className)\r\n };\r\n return this.props.renderView(EmailVerificationViewProps) as React.ReactElement;\r\n }\r\n\r\n public handleTextChange = (event: MsDyn365.ContentEditableEvent) => (this.props.config.paragraph = event.target.value);\r\n}\r\nexport default EmailVerification;\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as React from 'react';\r\nimport { addToNewsLetterWelcomeOffer_Len_CAPAsync } from '../../actions/DataActionExtension.g';\r\nimport { IEmailVerificationViewProps } from './email-verification';\r\n\r\nconst EmailVerificationView: React.FC = props => {\r\n const euHostname = 'eu.venchi.com';\r\n const localeString = props?.context?.request?.locale ? props?.context?.request?.locale?.toLowerCase() : '';\r\n const sitePath = props?.context?.request?.sitePath ? props?.context?.request?.sitePath?.substring(1) : '';\r\n // TODO: enable loyalty flow\r\n const source = props?.config?.source || '';\r\n const hostname = props?.context?.request?.url?.requestUrl?.hostname || '';\r\n let locale: string;\r\n if (hostname.toLowerCase() === euHostname && sitePath === '') {\r\n locale = 'eu';\r\n } else {\r\n locale = sitePath !== '' ? sitePath : localeString;\r\n }\r\n\r\n const channelId: number = props.context.request.apiSettings.channelId;\r\n const requestParams = props.context.request.query;\r\n const email = requestParams?.email;\r\n const token = requestParams?.token;\r\n let message = props.resources.emailVerificationSuccessMessage;\r\n const [loading, setLoading] = React.useState(false);\r\n const [subscribeMessage, setSubscribeMessage] = React.useState({\r\n state: false,\r\n message: '',\r\n class: ''\r\n });\r\n React.useEffect(() => {\r\n if (email && token) {\r\n setLoading(true);\r\n // TODO: enable loyalty flow\r\n addToNewsLetterWelcomeOffer_Len_CAPAsync(\r\n { callerContext: props.context?.actionContext },\r\n channelId,\r\n email,\r\n token,\r\n locale,\r\n source\r\n )\r\n .then(result => {\r\n // message = result[0].Error ? result[0].Error : message;\r\n setLoading(false);\r\n if (result.Status) {\r\n setSubscribeMessage({\r\n state: true,\r\n message: message,\r\n class: 'success'\r\n });\r\n } else {\r\n message = result.Error ? result.Error : '';\r\n switch (message) {\r\n case 'token-email_notValid':\r\n message = props.resources.tokenEmailNotValid;\r\n break;\r\n case 'registerToCRM_error':\r\n message = props.resources.registerToCrmError;\r\n break;\r\n case 'SendCoupon_error':\r\n message = props.resources.sendCouponError;\r\n break;\r\n case 'already_confirmed':\r\n message = props.resources.emailAlreadyConfirmed;\r\n break;\r\n case 'already_subscribed':\r\n message = props.resources.alreadySubscribedText;\r\n break;\r\n default:\r\n // code block\r\n }\r\n setSubscribeMessage({\r\n state: true,\r\n message: message,\r\n class: 'error'\r\n });\r\n }\r\n })\r\n .catch(error => {\r\n message = error.message;\r\n setSubscribeMessage({\r\n state: true,\r\n message: error.message,\r\n class: 'error'\r\n });\r\n });\r\n }\r\n }, []);\r\n return (\r\n
\r\n {props.paragraph}\r\n {loading ? (\r\n
\r\n
\r\n
\r\n ) : (\r\n ''\r\n )}\r\n {subscribeMessage.state ? (\r\n
\r\n {subscribeMessage.message}\r\n
\r\n ) : (\r\n ''\r\n )}\r\n
\r\n );\r\n};\r\n\r\nexport default EmailVerificationView;\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\nimport * as React from 'react';\r\nimport { ILinkedContainerProps } from './linked-container.props.autogenerated';\r\nimport { ILinkedContainerData } from './linked-container.data';\r\nimport classnames from 'classnames';\r\n\r\nconst LinkedContainer: React.FC> = props => {\r\n const { slots, id, config } = props;\r\n return (\r\n
\r\n {slots.content.map((children: React.ReactNode, index: number) => (\r\n {children}\r\n ))}\r\n
\r\n );\r\n};\r\n\r\nexport default LinkedContainer;\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\nimport * as React from 'react';\r\n\r\nimport { ITimelineData } from './timeline.data';\r\nimport { ITimelineProps } from './timeline.props.autogenerated';\r\n\r\nexport interface ITimelineViewProps extends ITimelineProps {}\r\n\r\n/**\r\n *\r\n * Timeline component\r\n * @extends {React.PureComponent>}\r\n */\r\nclass Timeline extends React.PureComponent> {\r\n public render(): JSX.Element | null {\r\n return this.props.renderView(this.props);\r\n }\r\n}\r\n\r\nexport default Timeline;\r\n","export const getTimelineItemLabel = (linkText: string, heading?: string) => {\r\n return heading ? `${heading} ${linkText}` : linkText;\r\n};\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\nimport * as React from 'react';\r\nimport { ITimelineViewProps } from './timeline';\r\nimport { getTimelineItemLabel } from './getTimelineItemLabel';\r\n\r\nexport default (props: ITimelineViewProps) => {\r\n return (\r\n \r\n );\r\n};\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\nimport * as React from 'react';\r\ndeclare global {\r\n interface Window {\r\n dataLayer: any;\r\n }\r\n}\r\n// TODO: Current build require at least one tsx file\r\nexport default () =>
;\r\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { SDK_FRAGMENT_NAME, msdyn365Commerce } from '@msdyn365-commerce/core-internal';\nimport * as path from 'path';\nimport * as React from 'react';\nimport { isAbsoluteUrl, isRelativeUrl, logDebug, logError } from '../../utils/script-utils';\nimport { IDefaultExternalScriptProps } from './default-external-script.props.autogenerated';\n\n/**\n *\n * DefaultExternalScript component\n * @extends {React.PureComponent>}\n */\nclass DefaultExternalScript extends React.PureComponent> {\n constructor(props: IDefaultExternalScriptProps<{}>) {\n super(props);\n }\n\n public render(): JSX.Element | null {\n const { config } = this.props;\n logDebug(`Adding script tags for '${this.props.id}/${this.props.typeName}'`, this.props.telemetry);\n let source = config.scriptSource;\n\n let relativeBaseUrl: string = '';\n // Construct the relative base url, i.e. the base url from which statics will be served\n if (this.props.context) {\n relativeBaseUrl += this.props.context.request.url.staticCdnUrl;\n relativeBaseUrl += msdyn365Commerce.getEnvironmentVariable('SUBMISSIONID') || '';\n }\n\n if (isRelativeUrl(source)) {\n // If the source is a relative URL prepend the relative base url to the resolved source url for the actual source\n source = `${relativeBaseUrl}/${path.join(source)}`;\n } else if (source === '' || !isAbsoluteUrl(source)) {\n logError(\n 'Invalid external script - not a url. The external source is not an external or relative url, please use default-inline-script if you wish to load inline scripts',\n this.props.telemetry\n );\n return null;\n }\n const scriptHtml = ``;\n\n return React.createElement(SDK_FRAGMENT_NAME, { key: this.props.id, dangerouslySetInnerHTML: { __html: scriptHtml } });\n }\n}\n\nexport default DefaultExternalScript;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { isNonceEnabled, SDK_FRAGMENT_NAME } from '@msdyn365-commerce/core-internal';\nimport * as React from 'react';\nimport { isAbsoluteUrl, isRelativeUrl, logDebug, logError } from '../../utils/script-utils';\nimport { IDefaultInlineScriptProps } from './default-inline-script.props.autogenerated';\n\n/**\n *\n * DefaultScript\n * @extends {React.PureComponent>}\n */\nclass DefaultInlineScript extends React.PureComponent> {\n constructor(props: IDefaultInlineScriptProps<{}>) {\n super(props);\n }\n\n public render(): JSX.Element | null {\n const { config } = this.props;\n logDebug(`Adding script tags for '${this.props.id}/${this.props.typeName}'`, this.props.telemetry);\n const source = config.inlineScript;\n\n if (!source || source === '' || isAbsoluteUrl(source) || isRelativeUrl(source)) {\n logError(\n 'Invalid inline script - Empty inline source defined or a url is being used as a source. Use default-external-script to load scripts from an external or relative url.',\n this.props.telemetry\n );\n return null;\n }\n\n if (source.includes('')) {\n logError('Invalid inline script - inline script should not contain html tags', this.props.telemetry);\n return null;\n }\n\n const nonceToken = this.props.context && isNonceEnabled(this.props.context.request);\n const scriptHtml = ``;\n return React.createElement(SDK_FRAGMENT_NAME, { key: this.props.id, dangerouslySetInnerHTML: { __html: scriptHtml } });\n }\n}\n\nexport default DefaultInlineScript;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { SDK_FRAGMENT_NAME } from '@msdyn365-commerce/core-internal';\nimport * as React from 'react';\nimport { isAbsoluteUrl, isRelativeUrl, logDebug, logError } from '../../utils/script-utils';\nimport { IDefaultInlineStyleProps } from './default-inline-style.props.autogenerated';\n\n/**\n *\n * DefaultStyle\n * @extends {React.PureComponent>}\n */\n\nconst DefaultInlineStyle = (props: IDefaultInlineStyleProps<{}>) => {\n const { config, id, typeName, telemetry } = props;\n logDebug(`Adding style tags for '${id}/${typeName}'`, telemetry);\n const source = config.inlineStyle;\n\n if (!source || source === '' || isAbsoluteUrl(source) || isRelativeUrl(source)) {\n logError('Invalid inline style - Empty inline source defined or a url is being used as a source.', telemetry);\n return null;\n }\n\n if (source.includes('')) {\n logError('Invalid inline style - inline style should not contain html tags', telemetry);\n return null;\n }\n\n const styleHtml = ``;\n return React.createElement(SDK_FRAGMENT_NAME, { key: id, dangerouslySetInnerHTML: { __html: styleHtml } });\n};\n\nexport default DefaultInlineStyle;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { PlaceholderForContainerPreviewComponent } from '@msdyn365-commerce/core';\n\nexport default PlaceholderForContainerPreviewComponent;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IInternalTelemetry, LogLevel } from '@msdyn365-commerce/telemetry-internal';\n\nexport const logDebug = (debugMessage: string, telemetry: IInternalTelemetry | undefined): void => {\n telemetry && telemetry.log(LogLevel.Debug, debugMessage);\n};\n\nexport const logError = (errorMessage: string, telemetry: IInternalTelemetry | undefined): void => {\n telemetry && telemetry.log(LogLevel.Error, errorMessage);\n};\n\n/**\n * Returns true if the given string matches an URL pattern\n *\n * @param source The string to check against\n */\nexport const isAbsoluteUrl = (source: string): boolean => {\n // eslint-disable-next-line security/detect-unsafe-regex\n return /^(http|https):\\/\\/(\\w+:{0,1}\\w*@)?(\\S+)(:[0-9]+)?(\\/|\\/([\\w#!:.?+=&%@!\\-\\/]))?$/.test(source);\n};\n\nexport const isRelativeUrl = (source: string): boolean => {\n return /^(?!www\\.|(?:http|ftp)s?:\\/\\/|[A-Za-z]:\\\\|\\/\\/).*(\\.js){1}$/.test(source);\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\n// TODO: Current build require at least one tsx file\nexport default () =>
;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\nimport * as MsDyn365 from '@msdyn365-commerce/core';\nimport classnames from 'classnames';\n\nimport { IHtmlBlockProps } from './html-block.props.autogenerated';\n\nexport interface IHtmlBlockViewProps extends IHtmlBlockProps<{}> {\n content?: React.ReactNode;\n className?: string;\n}\n\n/**\n *\n * HtmlBlock component\n * @extends {React.PureComponent>}\n */\nclass HtmlBlock extends React.PureComponent> {\n public render(): JSX.Element | null {\n const { content, className } = this.props.config;\n const text = content && (\n \n );\n const htmlBlockViewProps = {\n ...this.props,\n content: text,\n className: classnames('ms-html-block', className)\n };\n return this.props.renderView(htmlBlockViewProps) as React.ReactElement;\n }\n\n public handleTextChange = (event: MsDyn365.ContentEditableEvent) => (this.props.config.content = event.target.value);\n}\n\nexport default HtmlBlock;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\nimport { IHtmlBlockViewProps } from './html-block';\n\nconst HtmlBlockView: React.FC = props => (\n
\n {props.content}\n
\n);\n\nexport default HtmlBlockView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { HtmlHeadInclude, IAny, IGeneric } from '@msdyn365-commerce/core';\nimport * as React from 'react';\n\nimport { IProductPageSummaryData } from './product-page-summary.data';\nimport { IProductPageSummaryProps } from './product-page-summary.props.autogenerated';\n\n/**\n *\n * ProductPageSummary component.\n * @extends {React.PureComponent}\n */\nclass ProductPageSummary extends React.PureComponent> {\n public render(): JSX.Element {\n if (this.props.data.productPageSummary.result === undefined) {\n throw new Error('PageSummaryData input to page-summary is undefined. Unable to generate page-summary');\n }\n let {\n data: {\n productPageSummary: {\n result: { title, description, keywords, sharingImageUrl, faviconUrl }\n }\n }\n } = this.props;\n\n const {\n config,\n context,\n data: {\n productPageSummary: {\n result: { canonicalUrl, productId, productBrand, price }\n }\n }\n } = this.props;\n\n // Product SEO metadata specific information - non-overridable\n const productName = title;\n const productDescription = description;\n const productImageUrl = sharingImageUrl;\n\n // Override values coming from data action if config values are provided\n title = config.title || title;\n description = config.description || description;\n keywords = config.keywords || keywords;\n sharingImageUrl = (config.sharingImage && config.sharingImage.src) || sharingImageUrl;\n faviconUrl = config.faviconUrl || faviconUrl;\n\n // Construct page title with suffix and prefix if provided from app settings\n const pageTitle = this._constructPageTitle(title, context && context.request && context.request.app);\n return (\n <>\n \n {pageTitle && {pageTitle}}\n {description && }\n {keywords && }\n {canonicalUrl && }\n {faviconUrl && }\n \n {this._renderProductMetadata(\n productName,\n productDescription,\n productImageUrl,\n canonicalUrl,\n productId,\n price,\n context.request.channel?.Currency,\n productBrand\n )}\n {!config.disableOgTags && this._renderOgTags(pageTitle, description, sharingImageUrl)}\n {!config.disableTwitterTags && this._renderTwitterTags(pageTitle, description, sharingImageUrl)}\n \n );\n }\n\n /**\n * Renders the facebook and other social media specific metadata tags.\n *\n * @param title Page title.\n * @param description Product description.\n * @param sharingImageUrl Primary product image url.\n */\n private _renderOgTags(title: string | undefined, description: string | undefined, sharingImageUrl: string | undefined): JSX.Element {\n return (\n \n {title && }\n {description && }\n {sharingImageUrl && }\n \n \n );\n }\n\n /**\n * Constructs and renders the JSON-LD tag used to output product specific metadata used by search engine crawlers.\n *\n * @param productName Product name.\n * @param description Product description.\n * @param sharingImageUrl Primary product image url.\n * @param canonicalUrl Product canonical url.\n * @param productId Master product id.\n * @param price Proudct price.\n * @param currencyCode Current channel currency code.\n * @param productBrand Product brand.\n */\n private _renderProductMetadata(\n productName: string | undefined,\n description: string | undefined,\n sharingImageUrl: string | undefined,\n canonicalUrl: string | undefined,\n productId: number | undefined,\n price: number | undefined,\n currencyCode: string | undefined,\n productBrand: string | undefined\n ): JSX.Element {\n // Construct the JSON-LD data that contains the product metadata information used by search enginge crawlers\n const productMetaData = JSON.stringify({\n '@context': 'http://schema.org',\n '@type': 'Product',\n name: productName,\n description,\n image: sharingImageUrl,\n sku: productId,\n brand: {\n '@type': 'Brand',\n name: productBrand\n },\n offers: {\n '@type': 'Offer',\n url: canonicalUrl,\n priceCurrency: currencyCode,\n price\n }\n });\n return (\n \n {/* eslint-disable-next-line react/no-danger -- Implementation is a copy.*/}\n