{"version":3,"file":"static/js/17.2cd5ccf674a0c9e64580.chunk.js","mappings":";uaAgDc,MAAOA,UAAeC,EAAAA,UAOhCC,YAAYC,GACRC,MAAMD,GACNE,KAAKC,QAAUD,KAAKC,QAAQC,KAAKF,MACjCA,KAAKG,mBAAoB,EACzBH,KAAKI,MAAQ,CAAEC,OAASP,EAAMQ,eAAiBR,EAAMQ,cAAcD,SAAW,GAC9EL,KAAKO,iBAAmBC,IAAW,gBAE/BR,KAAKF,MAAMW,qBACPT,KAAKF,MAAMW,qBAAuB,IAEtCT,KAAKF,MAAMY,cACXV,KAAKW,gBAAkBH,IAAWR,KAAKO,iBAEnCP,KAAKF,MAAMc,UACPZ,KAAKF,MAAMc,UACXZ,KAAKF,MAAMe,WACPb,KAAKF,MAAMe,WAAa,IACpCb,KAAKc,iBAAmBd,KAAKW,kBAE7BX,KAAKW,gBAAkBH,IAAWR,KAAKO,iBAEnCP,KAAKF,MAAMc,UACPZ,KAAKF,MAAMc,UAAY,IAC/BZ,KAAKc,iBAAmBN,IAAWR,KAAKO,iBAEpCP,KAAKF,MAAMe,WACPb,KAAKF,MAAMe,WAAa,IAExC,CAEOE,SACH,MAAMT,uWAAaU,CAAA,GAAQhB,KAAKF,MAAMQ,oBAGTW,IAAzBX,EAAcD,QAAwBL,KAAKG,kBAC3CG,EAAcD,OAASL,KAAKI,MAAMC,OAElCL,KAAKI,MAAMC,OAASC,EAAcD,OAEtCC,EAAcY,SAAWlB,KAAKF,MAAMoB,SACpC,MAAMC,EAAcX,IAAW,SAE3BR,KAAKF,MAAMsB,UACPpB,KAAKF,MAAMsB,UAAY,IAE/B,OADApB,KAAKG,mBAAoB,EAErBP,EAAAA,cAAA,OAAKwB,UAAWD,GACZvB,EAAAA,cAACyB,EAAAA,OAAMC,OAAAC,OAAA,GACCvB,KAAKF,MAAM0B,kBAAiB,CAChCC,QAASzB,KAAKC,QAAO,gBACNK,EAAcD,OAC7BqB,OAAK,EACLC,SAAU3B,KAAKF,MAAM6B,SACrBP,UAAW,iBACXQ,MAAM,cAEL5B,KAAKF,MAAM+B,kBAAoBjC,EAAAA,cAAA,OAAKwB,UAAU,eAC3CxB,EAAAA,cAAA,SAAOkC,KAAK,QAAQC,KAAK,aAAaC,GAAIhC,KAAKF,MAAMmC,iBAAkBR,QAASzB,KAAKC,QAASiC,QAASlC,KAAKF,MAAMqC,qBAElHvC,EAAAA,cAAA,SAAOwC,QAASpC,KAAKF,MAAMmC,iBAAkBb,UAAU,eAClD,KACRpB,KAAKqC,iCAAiC/B,EAAcD,SAEzDT,EAAAA,cAAC0C,EAAAA,SAAQhB,OAAAC,OAAA,GAAKjB,IAG1B,CAEQ+B,iCAAiCE,GACrC,MAAMC,EAAwBhC,IAAW,qBAErCR,KAAKF,MAAM2C,sBACPzC,KAAKF,MAAM2C,sBAAwB,IAC3C,MAAkC,QAA9BzC,KAAKF,MAAM4C,eAEP9C,EAAAA,cAAAA,EAAAA,SAAA,KACIA,EAAAA,cAAA,QAAMwB,UAAWZ,IAAWgC,EAAuB,YAAaxC,KAAKF,MAAMmC,kBAC1EjC,KAAK2C,qBAAqB,qBAAsBJ,IAK3B,UAA9BvC,KAAKF,MAAM4C,eAEP9C,EAAAA,cAAAA,EAAAA,SAAA,KACKI,KAAK2C,qBAAqB,uBAAwBJ,GACnD3C,EAAAA,cAAA,QAAMwB,UAAWZ,IAAWgC,EAAuB,UAAWxC,KAAKF,MAAMmC,mBAI1ErC,EAAAA,cAAA,QAAMwB,UAAWZ,IAAWgC,EAAuB,YAAaxC,KAAKF,MAAMmC,iBAE1F,CAEQU,qBAAqBC,EAAkBL,GAC3C,IAAIM,EAAaN,EAAgBvC,KAAKW,gBAAkBX,KAAKc,iBAE7D,OADA+B,EAAa,GAAGA,KAAcD,IAE1BhD,EAAAA,cAAA,QAAMwB,UAAWyB,GAEzB,CAEQ5C,QAAQ6C,GACZA,EAAEC,iBACF/C,KAAKgD,SAAS,CAAE3C,QAASL,KAAKI,MAAMC,SACpCL,KAAKG,mBAAoB,EACrBH,KAAKF,MAAMmD,UACXjD,KAAKF,MAAMmD,UAEnB,eC1IJ,IAAMC,EAAN,cAAkCtD,EAAAA,UAG9BC,YAAYC,GACRC,MAAMD,GAHF,KAAAqD,sBAAiC,EA6FjC,KAAAC,uBAAyB,CAACC,EAA2BC,IAAuB,KAChF,MAAMC,EAAOvD,KAAKF,OAASE,KAAKF,MAAMyD,KAEhCC,GAD+BD,GAAQA,EAAKE,wBAA0BF,EAAKE,uBAAuBC,QAClDF,gBACtD,KAAIF,KAAatD,KAAKmD,qBAAuBK,IAAoBxD,KAAKI,MAAMuD,mBAAoC3D,KAAKI,MAAMwD,aAI3H5D,KAAKgD,UAASa,IAAa,CACvBD,UAAWC,EAAUD,aAGrB5D,KAAKmD,sBAAsB,CAC3B,MAAMW,EAAqB9D,KAAKF,MAAMyD,MAAQvD,KAAKF,MAAMyD,KAAKE,wBAA0BzD,KAAKF,MAAMyD,KAAKE,uBAAuBC,OAAQF,gBAEjIO,EAAiB,CAAEP,gBADTxD,KAAKI,MAAMuD,qBAAuBG,EACE,GAAKT,EAAmBW,eAAe,GAC3FhE,KAAKF,MAAMmE,QAAQC,cAAcC,QAAOC,EAAAA,EAAAA,2BAA0BL,GAAiBA,KAzGvF/D,KAAKoD,uBAAyBpD,KAAKoD,uBAAuBlD,KAAKF,MAC/DA,KAAKqE,gBAAkBrE,KAAKqE,gBAAgBnE,KAAKF,MACjDA,KAAKsE,4BAA8BtE,KAAKsE,4BAA4BpE,KAAKF,MACzEA,KAAKuE,iCAAmCvE,KAAKuE,iCAAiCrE,KAAKF,MACnFA,KAAKI,MAAQ,CACTwD,UAAU,EACVD,mBAAoB3D,KAAKF,MAAM0E,OAAOb,oBAE1C3D,KAAKmD,qBAAuBnD,KAAKF,MAAMyD,KAAKE,uBAAuBC,QAAU1D,KAAKF,MAAMyD,KAAKE,uBAAuBC,OAAOP,oBAC/H,CAEOsB,oBAEH,IADyBzE,KAAKF,OAASE,KAAKF,MAAM0E,QAAUxE,KAAKF,MAAM0E,OAAOE,0BAA2B,KAErG1E,KAAKgD,UAASa,IAAa,CACvBD,UAAWC,EAAUD,aAGrB5D,KAAKmD,sBAAsB,CAC3B,MAAMW,EAAqB9D,KAAKF,MAAMyD,MAAQvD,KAAKF,MAAMyD,KAAKE,wBAA0BzD,KAAKF,MAAMyD,KAAKE,uBAAuBC,OAAQF,gBAEjIO,EAAiB,CAAEP,gBADTxD,KAAKI,MAAMuD,qBAAuBG,EACE,GAAK9D,KAAKF,MAAM0E,OAAOb,mBAAoBK,eAAe,GAC9GhE,KAAKF,MAAMmE,QAAQC,cAAcC,QAAOC,EAAAA,EAAAA,2BAA0BL,GAAiBA,GAG/F,CAEOhD,SACH,MAAM,MAAE4D,GAAU3E,KAAKF,MACjB0E,EAASxE,KAAKF,OAASE,KAAKF,MAAM0E,OAClCI,EAAc5E,KAAKqE,gBAAgBG,GAAUA,EAAOK,WAEpDC,EAA+BH,GAASA,EAAMI,sBAAwBJ,EAAMI,qBAAqBC,OAEvG,OACIpF,EAAAA,cAAA,WACKkF,GACGlF,EAAAA,cAAA,OAAKwB,UAAU,yBACXxB,EAAAA,cAACyB,EAAAA,OAAM,CACHI,QAASzB,KAAKoD,uBAAuBpD,KAAKF,MAAM0E,OAAOb,oBAAoB,GAC3EvC,UAAU,iCAEdxB,EAAAA,cAAA,OAAKwB,UAAU,wBACToD,GACE5E,EAAAA,cAACqF,EAAgB3D,OAAAC,OAAA,GAAKqD,GACnBhF,EAAAA,cAAA,OAAKwB,UAAW,0BACV0D,GAAiC9E,KAAKuE,iCAAiCI,EAAMI,0BAUlH,CAEQV,gBAAgBQ,GACpB,MAAMtB,EAAOvD,KAAKF,OAASE,KAAKF,MAAMyD,KAChCiB,EAASxE,KAAKF,OAASE,KAAKF,MAAM0E,OAClCU,EAA+B3B,GAAQA,EAAKE,wBAA0BF,EAAKE,uBAAuBC,OAGlGE,EAAW5D,KAAKI,MAAMwD,SACtBJ,EAAkB0B,EAA8B1B,gBAEtD,OAAIqB,EACO,CACH5C,iBAAmBuC,EAAOb,oBAAsBa,EAAOb,oBAAuB,GAC9ErD,cAAe,CAAED,OAAQuD,GACzBhD,UAAW,eACXC,WAAY,iBACZ6B,eAAgB8B,GAAUA,EAAO9B,eACjCO,SAAUjD,KAAKoD,uBAAuBoB,EAAOb,oBAC7C9B,kBAAmB2C,GAAUA,EAAO3C,kBACpCM,mBAAoBqB,IAAoBgB,EAAOb,oBAIhD,CACH1B,iBAAkBuC,EAAOb,oBAAsB,GAC/CrD,cAAe,CAAED,OAAQL,KAAKmD,qBAAuBK,IAAoBxD,KAAKI,MAAMuD,mBAAoCC,GACxHX,SAAUjD,KAAKoD,uBAAuBoB,EAAOb,oBAC7C9B,kBAAmB2C,GAAUA,EAAO3C,kBACpCM,mBAAoBqB,IAAoBgB,EAAOb,mBAEvD,CAkCQW,4BAA4Ba,GAChC,OACIvF,EAAAA,cAAA,OAAKwB,UAAU,aACXxB,EAAAA,cAAA,SAAIuF,GAGhB,CAEQZ,iCAAiCa,GACrC,OACIxF,EAAAA,cAACA,EAAAA,SAAc,KACVwF,GAASA,EAAMJ,OACZI,EAAMC,KAAI,CAACC,EAAuBC,IAE1B3F,EAAAA,cAACA,EAAAA,SAAc,CAAC4F,IAAKD,GAChBD,KAIb,KAGhB,GApJEpC,GAAmBuC,EAAAA,EAAAA,IAAA,CADxBC,EAAAA,IACKxC,GAuJN,mEC1KA,YAEQtD,EAAAA,cAAA,OAAKwB,UAAU,OACXxB,EAAAA,cAAA,qrBCWZ,MAAM+F,UAAuB/F,EAAAA,cAClBmB,SACH,IAAIf,KAAKF,MAAM6E,QAAU3E,KAAKF,MAAM6E,MAAMQ,UAAYnF,KAAKF,MAAM6E,MAAMQ,QAAQH,OAE3E,OADAhF,KAAKF,MAAMmE,QAAQ2B,UAAUC,MAAM,qDAC5B,KAEX,MAAMC,EAAS9E,EAAAA,EAAA,GACRhB,KAAKF,OAAK,IACbiG,WAAY/F,KAAKF,MAAM6E,MAAMQ,QAC7Ba,WAAY,CACRC,YAAajG,KAAKF,MAClBsB,UAAWZ,IAAW,kBAAmBR,KAAKF,MAAM0E,OAAOpD,WAC3D8E,IAAI,MAERC,eAAgB,CACZ/E,UAAWZ,IAAW,uBAAwBR,KAAKF,MAAM0E,OAAOpD,WAChE8E,IAAK,QAIb,OAAOlG,KAAKF,MAAMsG,WAAWN,EACjC,EAGJ,mHCpCO,MAAMO,EAAyDvG,IAClE,MAAM,WAACiG,EAAU,WAAEC,EAAU,eAAEG,GAAkBrG,EACjD,OAAIiG,GAAeA,EAAWf,OAK1BpF,IAAAA,cAAC0G,EAAAA,OAAMhF,OAAAC,OAAA,GAAKyE,GACND,EAAWV,KAAI,CAACkB,EAAqBhB,IAE3B3F,IAAAA,cAAC4G,EAAAA,KAAIlF,OAAAC,OAAA,GAAK4E,EAAc,CAAEX,IAAKD,IAC1BgB,OARrBzG,EAAMmE,QAAQ2B,UAAUC,MAAM,+CACvB,KAYE,EAIjB,qtBCwBA,MAAMY,UAA4B7G,EAAAA,cAgB9BC,YAAYC,GACRC,MAAMD,GAfF,KAAA4G,gBAA0B,oBAE1B,KAAAC,iBAA2B,EAC3B,KAAAC,iBAA2B,EAuL3B,KAAAC,cAAiBC,GAAkBhE,IACvC9C,KAAKgD,SAAS,CAAC+D,uBAAwB,KACvC,MAAMC,EAAQlE,EAAEmE,OAAOD,MACvB,GACS,eADDF,EAEA9G,KAAKgD,SAAS,CAAEkE,eAAgBF,EAAOG,SAAS,EAAOC,UAAU,EAAOC,YAAY,EAAOC,UAAU,SAIrGC,QAAQC,IAAI,wBACZxH,KAAKgD,SAAS,CAAEoE,UAAU,EAAOC,YAAY,EAAOC,UAAU,KAsDzD,KAAAG,oBAAsB,CAACC,EAA+BV,KAC/DU,IACAA,EAAUC,UAAYX,EACtBU,EAAUE,sBAAwB,GAClCF,EAAU,eAAiB,qEAExBA,GAGO,KAAAG,oBAAsB,CAACf,EAAcE,KAC5C,CACHc,KAAOhB,EACPa,UAAWX,EACXY,sBAAuB,GACvB,cAAe,sEAIvB,KAAAG,kBAAoB,CAACC,EAAYxC,EAAawB,KAC1CgB,EAAKC,oBAAsBD,EAAKC,qBAAuB,GACvD,MAAMC,EAAWF,EAAKC,oBAAoBE,MAAMC,GAAcA,EAAUC,MAAQ7C,IAC5E0C,EACAA,EAASI,MAAQ,CAAEC,YAAavB,GAEhCgB,EAAKC,oBAAoBO,KAAK,CAC1BH,IAAK7C,EACL8C,MAAO,CACHC,YAAavB,MArQzBhH,KAAKyI,eAAiB7I,EAAAA,YACtBI,KAAK0I,cAAgB1I,KAAK0I,cAAcxI,KAAKF,MAC7CA,KAAKI,MAAQ,CACT8G,eAAgB,GAChBH,uBAAuB,GACvBM,YAAY,EACZF,SAAS,EACTG,UAAU,EACVqB,UAAU,EACVvB,UAAU,EACVwB,kBAAkB,EAClBC,eAAe,EACfC,kBAAkB,EAClBC,iBAAiB,EACjBC,WAAW,EAEnB,CA1BqBC,2BACjB,OAAIjJ,KAAKyI,eAAeS,QACblJ,KAAKyI,eAAeS,QAASlC,MAE7B,EAEf,CAsBOmC,0BAAuB,IAAAC,EAC1B,IAAIC,QAAkBC,EAAAA,EAAAA,cAAatJ,KAAKF,MAAMmE,QAAQC,eAItD,GAHAlE,KAAKgI,KAAOqB,EACZrJ,KAAKuJ,oBAAsBC,EAAAA,EAAAA,kBAAiBxJ,KAAKF,MAAMmE,QAAQC,gBAElD,QAATkF,EAAApJ,KAAKgI,YAAI,IAAAoB,GAAM,QAANA,EAATA,EAAWpB,YAAI,IAAAoB,GAAsB,QAAtBA,EAAfA,EAAiBnB,2BAAoB,IAAAmB,OAAA,EAArCA,EAAuCpE,QAAS,EAAG,KAAAyE,EAEnD,MAAMvB,EAAoB,QAAZuB,EAAGzJ,KAAKgI,YAAI,IAAAyB,GAAM,QAANA,EAATA,EAAWzB,YAAI,IAAAyB,GAAsB,QAAtBA,EAAfA,EAAiBxB,2BAAoB,IAAAwB,OAAA,EAArCA,EAAuCtB,MAAMC,GAAgC,eAAlBA,EAAUC,MAEjD,IAAAqB,EADrC,GAAIxB,EACA,GAAIlI,KAAKyI,eAAeS,QACpBlJ,KAAKyI,eAAeS,QAASlC,MAAsB,QAAjB0C,EAAGxB,EAASI,aAAK,IAAAoB,OAAA,EAAdA,EAAgBnB,YAOrE,CAGOxH,SAGH,MAAM4I,EAAS3I,EAAAA,EAAA,GACPhB,KAAKF,OAA6D,IACtE8J,sBAAuB,CACnB3D,YAAajG,KAAKF,MAClBsB,UAAWZ,IAAWR,KAAK0G,kBAE/BmD,uBAAwB7J,KAAK8J,wBAC7BC,mBAAoB/J,KAAKgK,cACzBjB,gBAAiB/I,KAAKI,MAAM2I,gBAC5BkB,iBAAkBjK,KAAKkK,4BAE3B,OAAOlK,KAAKF,MAAMsG,WAAWuD,EACjC,CAEQO,0BACJ,OACIlK,KAAKI,MAAM2G,wBAA0BnH,EAAAA,cAAA,QAAMwB,UAAU,iBAAiB+I,MAAO,CAACC,QAAQ,SAAO,kBAAkBpK,KAAKI,MAAM2G,uBAElI,CAGQsD,yBACJ,OACIzK,EAAAA,cAAA,WACIA,EAAAA,cAAA,OAAKwB,UAAW,oBAAkB,WAK9C,CACQ4I,cACJ,MAAO,CACHM,YAAa,CACTlJ,UAAW,2BAEfmJ,cAAe,CACXnJ,UAAW,+BAEfoJ,oBAAqBxK,KAAKyK,6BAC1BC,cAAe1K,KAAKI,MAAM2G,uBAAyB,KAAO/G,KAAK2K,yBAC/DC,aAAc5K,KAAKqK,yBACnBQ,WAAY7K,KAAK8K,oBAEzB,CAEQH,yBACJ,OACI/K,EAAAA,cAAA,OAAKwB,UAAU,mCACXxB,EAAAA,cAACyB,EAAAA,OAAM,CACH0J,MAAM,aACNnJ,MAAM,UACNH,QAASzB,KAAK0I,cACdtH,UAAU,yDAAuD,gBAKjF,CAEQ0J,oBACJ,OACIlL,EAAAA,cAAA,WACIA,EAAAA,cAACyB,EAAAA,OAAM,CACH0J,MAAM,OACNnJ,MAAM,UACNH,QAASzB,KAAKgL,aAAW,QAKzC,CAEQ7B,kBAAkBrG,GACtB9C,KAAK2G,mBAAmB3G,KAAKyI,gBAAkBzI,KAAKyI,eAAeS,SAAWlJ,KAAKyI,eAAeS,QAAQlC,OAC1GhH,KAAKgD,SAAS,CAAC+F,iBAAiB,GACpC,CAEQI,oBAAoBrG,GACxB9C,KAAK2G,mBAAmB3G,KAAKyI,gBAAkBzI,KAAKyI,eAAeS,SAAWlJ,KAAKyI,eAAeS,QAAQlC,OAE1G,MAAMiE,EAAMjL,KAAKyI,gBAAkBzI,KAAKyI,eAAeS,SAAWlJ,KAAKyI,eAAeS,QAAQlC,MAAShH,KAAKyI,eAAeS,QAAQlC,MAAQ,GAC3I,GAAKhH,KAAK2G,iBAON,GADA3G,KAAK4G,kBAAmB5G,KAAK2G,gBACzB3G,KAAK4G,kBAAoB5G,KAAKI,MAAMiH,WACpC,UACUrH,KAAKkL,wBAAwBD,GAErC,MAAOnI,GACLyE,QAAQC,IAAI1E,EAAG,+BAXvB9C,KAAKgD,SAAS,CACVmE,SAAS,EACTC,UAAU,GAatB,CAOQ+B,8BAA8BgC,GAAkB,IAAAC,EAEpDpL,KAAK+H,kBAA2B,QAAVqD,EAACpL,KAAKgI,YAAI,IAAAoD,OAAA,EAATA,EAAWpD,KAAO,aAAcmD,GACvDnL,KAAKqL,oBAAoBrL,KAAKgI,KAAOmD,GACrCnL,KAAKgD,SAAS,CAAC+F,iBAAiB,EAAMhC,uBAAwBoE,GAClE,CAGQV,6BACJ,OACI7K,EAAAA,cAAA,OAAKwB,UAAU,uBACXxB,EAAAA,cAAA,SAAOwB,UAAU,qDAAmD,mBACpExB,EAAAA,cAAA,SACI0L,IAAKtL,KAAKyI,eACV3G,KAAK,QACLyJ,SAAUvL,KAAK6G,cAAc,cAAa,aAC/B,qBACXzF,UAAU,wCACV4F,MAAOhH,KAAKI,MAAM8G,eAClBsE,UAAQ,IAIxB,CAgBQ1B,wBACJ,OACI9J,KAAKI,MAAMwI,kBAA6C,KAAzB5I,KAAKyL,gBAE5B7L,EAAAA,cAAA,OAAKwB,UAAW,qBAAoBpB,KAAKI,MAAMyI,cAAgB,iBAAmB,KAC9EjJ,EAAAA,cAAA,KAAGwB,UAAU,4BAA4BpB,KAAKyL,kBAGpD,IAEd,CAEQtC,0BAA0BnB,EAAkB0D,GAChD,IAAK1D,EAED,MADAhI,KAAKF,MAAM8F,UAAUC,MAAM,wBACrB,IAAI8F,MAAM,kDAEpB,MAAMC,EAA0B5D,EAAKA,KAAKC,oBAC1C,GAAIjI,KAAKuJ,cAAe,KAAAsC,EACpB,IAAIC,EAAqE,QAAvDD,EAAG7L,KAAKuJ,cAAcwC,aAAa/D,KAAKgE,uBAAe,IAAAH,EAAAA,EAAI,GACzEI,GAAa,EAC1B,MAAMC,EAA8B,aAErBC,EAA0BL,aAAc,EAAdA,EAAgB3D,MAAKiE,GAAKA,EAAEtE,OAASoE,IAEjEC,EACIA,EAAwBxE,YAAc+D,EACtC1L,KAAKyH,oBAAoB0E,EAA+CT,GAGxEO,GAAa,EAGjBH,SAAAA,EAAgBtD,KAAKxI,KAAK6H,oBAAoBqE,EAA6BR,IAG3EO,SACMjM,KAAKuJ,cAAcwC,aAAaM,sBAAsB,CAAEC,mBAAoBR,UAIpFS,EAAAA,EAAAA,aAAY,CAAEC,cAAexM,KAAKF,MAAMmE,QAAQC,eAAiB,CAAEuI,GAAIzE,EAAKA,KAAKyE,GAAIxE,oBAAqB2D,IAA2Bc,MAAKC,IACxIA,GACA3M,KAAKF,MAAMmE,QAAQC,cAAcC,OAAO,IAAIyI,EAAAA,qBAAqB5M,KAAKF,MAAMmE,QAAQ4I,QAAQC,aAAcH,MAE/GI,OAAMlH,IACL,MAAM,IAAI8F,MAAM,sBAAsB9F,IAAQ,GAEtD,GAlPUJ,EAAAA,EAAAA,IAAA,CAATuH,EAAAA,IAAQ,yCAqRb,gHCjUM,MAAOC,UAAiCrN,EAAAA,cAEnCmB,SACH,MAAM,sBAAE6I,EAAqB,mBAAEG,EAAkB,iBAAEE,GAAqBjK,KAAKF,OACvE,YAAEwK,EAAW,cAAEC,EAAa,oBAACC,EAAmB,cAAEE,GAAkBX,EACpEmD,EAActN,EAAAA,cAAC4G,EAAAA,KAAIlF,OAAAC,OAAA,GAAK+I,GACN1K,EAAAA,cAAC4G,EAAAA,KAAIlF,OAAAC,OAAA,GAAKgJ,GACLC,EACAP,EACAS,IAI7B,OACI9K,EAAAA,cAAC0G,EAAAA,OAAMhF,OAAAC,OAAA,GAAKqI,GACPsD,EAGb,EAEJ,+uBCqBO,MAAMC,UAAmCvN,IAAAA,UAmC5CC,YAAmBC,GACfC,MAAMD,GAENE,KAAKoN,KAAOtN,EAAM0E,OAAO4I,KAGpBC,EAAAA,iBAAiBC,kBAAkBxN,EAAM0E,OAAO+I,eAChDF,EAAAA,iBAAiBC,kBAAkBxN,EAAM0E,OAAOgJ,gBAEjDxN,KAAKyN,qBAAuB,CACxBF,aAAczN,EAAM0E,OAAO+I,aAC3BC,aAAc1N,EAAM0E,OAAOgJ,eAInCxN,KAAK0N,4BAA8B,GAEnC1N,KAAKI,MAAQ,CACTuN,2BAA4B,IAGhC3N,KAAK4N,iBAAmB5N,KAAK4N,iBAAiB1N,KAAKF,MACnDA,KAAK6N,uBAAyB7N,KAAK6N,uBAAuB3N,KAAKF,KACnE,CAQO8N,sBACHC,EACAC,GAEA,MAAMC,EACFjO,KAAKoN,OAASW,EAAUvJ,OAAO4I,MAC/BpN,KAAKF,MAAM0E,OAAO0J,wBAA0BH,EAAUvJ,OAAO0J,uBAC7DlO,KAAKF,MAAM0E,OAAOgJ,eAAiBO,EAAUvJ,OAAOgJ,cACpDxN,KAAKF,MAAM0E,OAAO+I,eAAiBQ,EAAUvJ,OAAO+I,cACpDvN,KAAKF,MAAM0E,OAAOpD,YAAc2M,EAAUvJ,OAAOpD,WACjDpB,KAAKF,MAAMkC,KAAO+L,EAAU/L,GAC1BmM,EACFnO,KAAKI,MAAMgO,MAAQJ,EAAUI,KAC7BpO,KAAKI,MAAMuN,2BAA2B3I,SAAWgJ,EAAUL,2BAA2B3I,QACtFhF,KAAKI,MAAMuN,2BAA2BU,OAAMrH,GACxCgH,EAAUL,2BAA2BxF,MAAKmG,GAAcA,EAAWxO,MAAMyO,aAAavM,KAAOgF,EAAMlH,MAAMyO,aAAavM,OAE9H,OAAOiM,GAAoBE,CAC/B,CAMO1J,oBACH+J,EAAAA,mCAAmCC,UAAUzO,MAE7CA,KAAK0O,YAAc,8BAA8BC,EAAAA,OAAOC,KAAKC,iBAEzDC,EAAAA,GAASC,gBAA2C9N,IAA9BjB,KAAKyN,sBAC3BuB,OAAOC,iBAAiB,SAAUjP,KAAK4N,iBAE/C,CAMOsB,uBACHV,EAAAA,mCAAmCW,YAAYnP,MAE/CA,KAAK0N,4BAA4B0B,SAAQC,IAAS,IAAAC,EAAA,OACkC,QADlCA,EAC9CD,EAAUvP,MAAMyO,aAAagB,OAAOC,SAASC,EAAAA,mBAAmBC,wBAAgB,IAAAJ,OAAA,EAAhFA,EAAkFH,YAAYnP,KAAK0O,YAAa,IAGhHI,EAAAA,GAASC,gBAA2C9N,IAA9BjB,KAAKyN,sBAC3BuB,OAAOW,oBAAoB,SAAU3P,KAAK4N,iBAElD,CAMOgC,yBAAyBC,GAAiD,IAAAC,EAC7E,QAAyB7O,IAArBjB,KAAK0O,YAAT,CAIA,IACKrB,EAAAA,iBAAiBC,kBAAkBtN,KAAKF,MAAM0E,OAAO0J,wBACtDlO,KAAK0N,4BAA4B1I,QAAUhF,KAAKF,MAAM0E,OAAO0J,sBAE7D,MAAM,IAAIvC,MAAM,gEAIwE,QAA5FmE,EAAAD,EAAsB/P,MAAMyO,aAAagB,OAAOC,SAASC,EAAAA,mBAAmBC,wBAAgB,IAAAI,GAA5FA,EAA8FrB,UAAU,CACpGsB,WAAY/P,KAAK0O,YACjBsB,QAASA,KAAK,IAAAC,EAEuC,QADjDA,EAAAJ,EAAsB/P,MAAMyO,aAAagB,OACpCC,SAASC,EAAAA,mBAAmBC,wBAAgB,IAAAO,GADjDA,EAEMd,YAAYnP,KAAK0O,aACvB,MAAMwB,EAAUlQ,KAAK0N,4BAA4ByC,QAAOd,GAAaA,IAAcQ,IACnF7P,KAAK0N,4BAA8BwC,EACnClQ,KAAKgD,SAAS,CAAE2K,2BAA4B3N,KAAK0N,6BAA8B,IAKvF1N,KAAK0N,4BAA4B0C,QAAQP,GACzC7P,KAAKgD,SAAS,CAAE2K,2BAA4B3N,KAAK0N,8BACjD1N,KAAK4N,kBA1BM,CA2Bf,CAEO7M,SACH,MAAMK,EAAYZ,IACd2M,EAA2BkD,WAC3B,GAAGlD,EAA2BkD,eAAerQ,KAAKoN,OAClDpN,KAAKF,MAAM0E,OAAOpD,WAGhBuI,EAAS3I,EAAAA,EAAA,GACRhB,KAAKF,OAAK,IACbwQ,UAAW,CACPrK,YAAajG,KAAKF,MAClBsB,YACAY,GAAIhC,KAAK0O,YACTvE,MAAO,CAAEiE,IAAKpO,KAAKI,MAAMgO,MAE7BmC,kBAAmBvQ,KAAKwQ,6BAG5B,OAAOxQ,KAAKF,MAAMsG,WAAWuD,EACjC,CAMQ6G,2BACJ,MAAMC,EAAmBC,EAAAA,gBAAgBC,YAAY3Q,KAAKI,MAAMuN,4BAC1DiD,EAAqBpQ,IACvB,GAAG2M,EAA2BkD,yBAC9BI,EACM,GAAGtD,EAA2BkD,gCAC9B,GAAGlD,EAA2BkD,qBAGxC,OACIzQ,IAAAA,cAAA,OAAKwB,UAAWwP,EAAoBzG,MAAO,CAAE0G,UAAW7Q,KAAKI,MAAMgO,KAAO,gBAAgBpO,KAAKI,MAAMgO,WAChGpO,KAAKI,MAAMuN,2BAA2BtI,KAAIgK,IACvC,MAAMyB,EAAiBzB,EAAU0B,eACjC,OAAOnR,IAAAA,cAACkR,EAAcxP,OAAAC,OAAA,GAAK8N,EAAUvP,MAAK,CAAE0F,IAAK6J,EAAUvP,MAAMyO,aAAavM,KAAM,IAIpG,CAKQ6L,yBACJ,MAAMmD,EAAgBhR,KAAKyN,qBAE3B,QAAsBxM,IAAlB+P,EACA,OAGJ,IAAIC,EAAc,EAKlB,OAJInC,EAAAA,GAASC,YACTkC,EAAcjC,OAAOiC,aAGlBC,KAAKC,IAAID,KAAKE,IAAIJ,EAAcxD,aAAcwD,EAAcxD,aAAeyD,GAAcD,EAAczD,aAClH,CAKQK,mBACJ,MAAMyD,EAASrR,KAAK6N,yBACpB7N,KAAKgD,SAAS,CAAEoL,IAAKiD,GACzB,EAtNwBlE,EAAAkD,WAAqB,yBAyNjD,6GC9QO,MAAMiB,EAA+DxR,GACjEF,EAAAA,cAAC0G,EAAAA,OAAMhF,OAAAC,OAAA,GAAKzB,EAAMwQ,WAAYxQ,EAAMyQ,mBAG/C,+FCeYgB,wnBAAZ,SAAYA,GACRA,EAAAA,EAAA,yBACAA,EAAAA,EAAA,0BACH,CAHD,CAAYA,IAAAA,EAAW,KAWvB,IAAMC,EAAN,cAAsB5R,EAAAA,cAKlBC,YAAYC,GACRC,MAAMD,GALO,KAAA2R,uBAAiC,sBAEjC,KAAAC,sBAAgC,qBAI7C1R,KAAK2R,iBAAmB3R,KAAK2R,iBAAiBzR,KAAKF,KACvD,CAEOe,SACH,MAAM,MAAE4D,EAAK,WAAEyB,EAAU,OAAE5B,EAAM,KAAEjB,EAAI,WAAEqO,EAAU,UAAEC,GAAc7R,KAAKF,MAClEyF,EAAQsM,GAAa,EACrBC,EAAYC,EAAaxM,EAAOvF,KAAKF,MAAMkS,OAAS,IACpDC,EAAwB1O,GAAQA,EAAK2O,gBAAkB3O,EAAK2O,eAAexO,OAC3EyO,EACFF,GACAA,EAAsBD,QAAUhS,KAAKF,MAAMkS,YACE/Q,IAA7CgR,EAAsBG,mBAChBH,EAAsBG,qBAAuB7M,EAC7CqM,IAAc,EAsBxB,OAAOxL,EArBQpF,EAAAA,EAAA,GACRhB,KAAKF,OAAK,IACbuS,oBAAqB,CACjBpM,YAAajG,KAAKF,MAClBsB,UAAWZ,IAAWR,KAAKyR,uBAAwBjN,EAAOpD,YAE9DkR,mBAAoB,CAChBrM,YAAajG,KAAKF,MAClBsB,UAAWZ,IAAWR,KAAK0R,sBAAuBlN,EAAOpD,YAE7DmR,eAAgB,CACZnR,UAAW,+BACX8E,IAAK,UACL,eAAgBiM,EAChBpQ,KAAM,WACNyQ,SAAUL,EAAQ,GAAK,EACvBnQ,GAAI8P,GAERW,UAAWzS,KAAK2R,mBAChBe,SAAU/N,IAGlB,CAEQgN,mBACJ,OAAO/R,EAAAA,cAAAA,EAAAA,SAAA,KAAGI,KAAKF,MAAM0E,OAAOmO,aAChC,GA/CEnB,GAAO/L,EAAAA,EAAAA,IAAA,CADZC,EAAAA,IACK8L,GAkDC,MAAMO,EAAeA,CAACxM,EAAevD,IACjC,oBAAoBA,KAAMuD,IAGrC,oFCpFA,MAsBMqN,EAAyBxN,GAEvBxF,EAAAA,cAAAA,EAAAA,SAAA,KACKwF,GAASA,EAAMJ,OAAS,EACnBI,EAAMC,KAAI,CAACwN,EAAuBtN,IACvB3F,EAAAA,cAACA,EAAAA,SAAc,CAAC4F,IAAKD,GAAQsN,KAExC,MAIlB,EAjCiD/S,IAC7C,MAAM,YAAEgT,EAAW,SAAEJ,EAAQ,oBAAEL,EAAmB,mBAAEC,EAAkB,eAAEC,EAAc,UAAEE,GAAc3S,EAEtG,OAAQgT,GACJ,KAAKvB,EAAAA,YAAYwB,WACb,OACInT,EAAAA,cAAC0G,EAAAA,OAAMhF,OAAAC,OAAA,GAAK8Q,GACRzS,EAAAA,cAAC4G,EAAAA,KAAIlF,OAAAC,OAAA,GAAKgR,GACLG,GACGA,EAASM,gBACTN,EAASM,eAAehO,QACxB4N,EAAsBF,EAASM,kBAInD,KAAKzB,EAAAA,YAAY0B,UACb,OAAOrT,EAAAA,cAAC0G,EAAAA,OAAMhF,OAAAC,OAAA,GAAK+Q,GAAqBG,GAC5C,QACI,OAAO,KAAK,iwBCkBxB,IAAMS,EAAN,cAAkBtT,EAAAA,UAKdC,YAAYC,GACRC,MAAMD,GALM,KAAAqT,cAAwB,YAgFjC,KAAAC,oBAAuBC,GAA0CrT,KAAKF,MAAM0E,OAAO8O,QAASC,KAAOF,EAAMpM,OAAOD,MAgCtG,KAAAwM,YAAeC,IAC5BzT,KAAK0T,WAAaD,CAAI,EAsCT,KAAAE,SAAW,CAACpO,EAAevD,IAAgBc,IACxD,MAAMoP,EAAiB,CAAEE,mBAAoB7M,EAAOyM,MAAOhQ,GAC3DhC,KAAKF,MAAMmE,QAAQC,cAAcC,QAAOyP,EAAAA,EAAAA,qBAAoB1B,GAAiBA,GAC7ElS,KAAKgD,SAAS,CAAE6Q,gBAAiBtO,IAGjC,MAAMuO,EAAiB9T,KAAKF,MAAMmE,QAAQ4I,QACpCkH,EAAS/T,KAAKgU,iBAAiBF,EAAgB9T,KAAKmT,cAAe,GAAGnT,KAAKF,MAAMkC,MAAMiS,OAAO1O,EAAQ,MAC5GuO,GAAkB9E,OAAOkF,QAAQC,UAAU,CAAEC,KAAML,GAAU,GAAIA,EAAO,EAG3D,KAAAM,WAAa,CAAC9O,EAAevD,IAAgBc,IAC1D,GAAkB,KAAdA,EAAEwR,QAAgB,CAClB,MAAMpC,EAAiB,CAAEE,mBAAoB7M,EAAOyM,MAAOhQ,GAC3DhC,KAAKF,MAAMmE,QAAQC,cAAcC,QAAOyP,EAAAA,EAAAA,qBAAoB1B,GAAiBA,GAC7ElS,KAAKgD,SAAS,CAAE6Q,gBAAiBtO,IAGjC,MAAMuO,EAAiB9T,KAAKF,MAAMmE,QAAQ4I,QACpCkH,EAAS/T,KAAKgU,iBAAiBF,EAAgB9T,KAAKmT,cAAe,GAAGnT,KAAKF,MAAMkC,MAAMiS,OAAO1O,EAAQ,MAC5GuO,GAAkB9E,OAAOkF,QAAQC,UAAU,CAAEC,KAAML,GAAU,GAAIA,EAAQ,CAG7E,GAAkB,KAAdjR,EAAEwR,SAAgC,KAAdxR,EAAEwR,QAAgB,CACtC,MAAM,MAAE3P,GAAU3E,KAAKF,MACjByU,EAAc5P,GAASA,EAAM6P,UAAY7P,EAAM6P,SAASxP,QAAW,EAEzE,GAAkB,KAAdlC,EAAEwR,QAAgB,CAEd/O,EAAQ,IAAMgP,IACdhP,GAAS,GAEb,MAAM2M,EAAiB,CAAEE,mBAAoB7M,EAAQ,EAAGyM,MAAOhQ,GAC/DhC,KAAKF,MAAMmE,QAAQC,cAAcC,QAAOyP,EAAAA,EAAAA,qBAAoB1B,GAAiBA,GAC7ElS,KAAKgD,SAAS,CAAE6Q,gBAAiBtO,EAAQ,IAGzC,MAAMuO,EAAiB9T,KAAKF,MAAMmE,QAAQ4I,QACpCkH,EAAS/T,KAAKgU,iBAAiBF,EAAgB9T,KAAKmT,cAAe,GAAGnT,KAAKF,MAAMkC,MAAMiS,OAAO1O,EAAQ,MAC5GuO,GAAkB9E,OAAOkF,QAAQC,UAAU,CAAEC,KAAML,GAAU,GAAIA,EAAQ,MAGtE,GAAkB,KAAdjR,EAAEwR,QAAgB,CAEX,IAAV/O,IACAA,EAAQgP,GAEZ,MAAMrC,EAAiB,CAAEE,mBAAoB7M,EAAQ,EAAGyM,MAAOhQ,GAC/DhC,KAAKF,MAAMmE,QAAQC,cAAcC,QAAOyP,EAAAA,EAAAA,qBAAoB1B,GAAiBA,GAC7ElS,KAAKgD,SAAS,CAAE6Q,gBAAiBtO,EAAQ,IAGzC,MAAMuO,EAAiB9T,KAAKF,MAAMmE,QAAQ4I,QACpCkH,EAAS/T,KAAKgU,iBAAiBF,EAAgB9T,KAAKmT,cAAe,GAAGnT,KAAKF,MAAMkC,MAAMiS,OAAO1O,MACpGuO,GAAkB9E,OAAOkF,QAAQC,UAAU,CAAEC,KAAML,GAAU,GAAIA,EAAQ,CAAD,GAvMhF,MAAM,gBAAEU,GAAoBzU,KAAKF,MAAM0E,QACjC,MAAEG,GAAU3E,KAAKF,MACjByU,EAAc5P,GAASA,EAAM6P,UAAY7P,EAAM6P,SAASxP,QAAW,EACzE,IAAI0P,EAAeD,GAAmBA,GAAmBF,GAAcE,EAAkB,EAAIA,EAAkB,EAAI,EACnH,MAAME,EACD3U,KAAKF,MAAMmE,SACRjE,KAAKF,MAAMmE,QAAQ4I,SACnB7M,KAAKF,MAAMmE,QAAQ4I,QAAQ+H,OAC3B5U,KAAKF,MAAMmE,QAAQ4I,QAAQ+H,MAAMC,WACrC,GACJ,IAAIC,EAAwB,EAC5B,GAAIH,EAAYI,QAAQ,KAAO,EAAG,CAC9B,MAAMC,EAAML,EAAYM,MAAM,KACbD,EAAI,KACJhV,KAAKF,MAAMkC,KACxB8S,EAAgBI,OAAOC,SAASH,EAAI,GAAI,IAAG,CAGnDN,EAAeI,EAAgB,GAAKA,GAAiBP,EAAaO,EAAgB,EAAIJ,EACtF1U,KAAKI,MAAQ,CAAEyT,gBAAiBa,GAEhC1U,KAAKoV,cAAgBpV,KAAKoV,cAAclV,KAAKF,MAC7CA,KAAKqV,eAAiBrV,KAAKqV,eAAenV,KAAKF,MAC/CA,KAAK2T,SAAW3T,KAAK2T,SAASzT,KAAKF,MACnCA,KAAKqU,WAAarU,KAAKqU,WAAWnU,KAAKF,MACvCA,KAAKgU,iBAAmBhU,KAAKgU,iBAAiB9T,KAAKF,MACnDA,KAAK0T,WAAa,IACtB,CAEO5F,sBAAsBC,EAAgCC,GACzD,OAAIhO,KAAKI,QAAU4N,GAAahO,KAAKF,MAAMyD,OAASwK,EAAUxK,IAIlE,CAEOxC,SACH,MAAM,MAAE4D,GAAU3E,KAAKF,OACjB,QAAEwT,EAAO,UAAElS,GAAcpB,KAAKF,MAAM0E,OAEpC8Q,EAAmBhC,GACrB1T,EAAAA,cAACkP,EAAAA,GAAa,CACV1N,UAAU,iCACV8E,IAAKoN,EAAQpN,KAAO,KACpBqN,KAAMD,EAAQC,KACdgC,UAAW,CAAEC,OAAQxV,KAAKoT,oBAAqBU,eAAgB9T,KAAKF,MAAMmE,QAAQ4I,WAGpF0H,EAAc5P,GAASA,EAAM6P,UAAY7P,EAAM6P,SAASxP,QAAW,EAMnEyQ,EAAYzU,EAAAA,EAAA,GACXhB,KAAKF,OAAK,IACb4V,aAAc,CACVzP,YAAajG,KAAKF,MAClBsB,UAAWZ,IAAW,SAAUY,IAEpCuU,cAAe,CAAEvU,UAAW,yBAC5BwU,YAAa,CAAExU,UAAW,sBAAuB8E,IAAK,KAAiBnE,KAAM,WAC7EuR,QAASgC,EACT9Q,OAAQxE,KAAKF,OAASE,KAAKF,MAAM0E,OACjCqR,iBAAkB,CACd3P,IAAK,MACL9E,UAAW,0BAEf0U,YAAavB,EAAa,GAAK5P,EAAM6P,SAASnP,KAAI,CAACwN,EAAuBtN,IAAkBvF,KAAKqV,eAAexC,EAAMtN,KACtHwQ,WAAYxB,EAAa,GAAK5P,EAAM6P,SAASnP,KAAI,CAACwN,EAAuBtN,IAAkBvF,KAAKoV,cAAcvC,EAAMtN,OAExH,OAAOvF,KAAKF,MAAMsG,WAAWqP,EACjC,CAIOO,qBACH,MAAM,KAAEzS,GAASvD,KAAKF,MACtB,IAAKE,KAAKF,MAAMmE,QAAQ4I,QAAQoJ,OAAOC,SAAU,CAC7C,MAAMC,EAAkB5S,GAAQA,EAAK2O,gBAAkB3O,EAAK2O,eAAexO,QAAUH,EAAK2O,eAAexO,OAAOsO,MAChH,GAAImE,EACInW,KAAKF,MAAMkC,KAAOmU,GAClBnW,KAAK0T,YAAc1T,KAAK0T,WAAW0C,YAEpC,CACH,MAAMzB,EACD3U,KAAKF,MAAMmE,SACRjE,KAAKF,MAAMmE,QAAQ4I,SACnB7M,KAAKF,MAAMmE,QAAQ4I,QAAQ+H,OAC3B5U,KAAKF,MAAMmE,QAAQ4I,QAAQ+H,MAAMC,WACrC,GACJ,GAAIF,EAAYI,QAAQ,KAAO,EAAG,CAClBJ,EAAYM,MAAM,KACT,KACJjV,KAAKF,MAAMkC,IACxBhC,KAAK0T,YAAc1T,KAAK0T,WAAW0C,OAAO,GAK9D,CAUQhB,cAAcvC,EAAuBtN,GACzC,MAAM,KAAEhC,GAASvD,KAAKF,MAChBsS,EACF7O,GAAQA,EAAK2O,gBAAkB3O,EAAK2O,eAAexO,QAAUH,EAAK2O,eAAexO,OAAO0O,mBACtF+D,EAAkB5S,GAAQA,EAAK2O,gBAAkB3O,EAAK2O,eAAexO,QAAUH,EAAK2O,eAAexO,OAAOsO,MAC1GqE,OACqBpV,IAAvBmR,GAAoC+D,IAAoBnW,KAAKF,MAAMkC,GAC7DoQ,IAAuB7M,EACvBvF,KAAKI,MAAMyT,kBAAoBtO,EACnCuM,GAAYC,EAAAA,EAAAA,cAAaxM,EAAOvF,KAAKF,MAAMkC,IAEjD,OACIpC,EAAAA,cAAA,MACI4F,IAAKD,EACLnE,UAAU,yBACVoR,SAAU6D,EAAW,GAAK,EAC1B5U,QAASzB,KAAK2T,SAASpO,EAAOvF,KAAKF,MAAMkC,IACzCsU,UAAWtW,KAAKqU,WAAW9O,EAAOvF,KAAKF,MAAMkC,IAC7CsJ,IAAKtL,KAAKI,MAAMyT,kBAAoBtO,EAAQvF,KAAKwT,iBAAcvS,EAAS,gBACzD6Q,EAAS,gBACTuE,EACftU,KAAK,OAELnC,EAAAA,cAACA,EAAAA,SAAc,CAAC4F,IAAKD,GAChB3F,EAAAA,aAAmBiT,EAA4B,CAC5CC,YAAavB,EAAAA,YAAY0B,UACzBrB,WAAYrM,IAAUvF,KAAKI,MAAMyT,gBACjChC,UAAWtM,EACXyM,MAAOhS,KAAKF,MAAMkC,MAKtC,CA6DQqT,eAAexC,EAAuBtN,GAC1C,OACI3F,EAAAA,cAACA,EAAAA,SAAc,CAAC4F,IAAKD,GAChB3F,EAAAA,aAAmBiT,EAA4B,CAC5CC,YAAavB,EAAAA,YAAYwB,WACzBnB,WAAYrM,IAAUvF,KAAKI,MAAMyT,gBACjChC,UAAWtM,EACXyM,MAAOhS,KAAKF,MAAMkC,KAIlC,CAEQgS,iBAAiBF,EAA0CyC,EAAmBC,GAClF,IAAIC,EAGAA,EADA3H,EAAAA,GAA0BC,UACpB,IAAI2H,IAAI1H,OAAOpM,SAAS+T,MAExB,IAAID,IAAI5C,EAAe2C,IAAIG,WAAWD,MAGhD,MAAMV,EAAS,IAAIjH,OAAO6H,gBAAgBJ,EAAIK,QAG9C,OAFAb,EAAOc,IAAIR,EAAWC,GACtBC,EAAIK,OAASE,mBAAmBf,EAAOgB,YAChCR,EAAIQ,UACf,GA7OE/D,GAAGzN,EAAAA,EAAAA,IAAA,CADRC,EAAAA,IACKwN,GAgPN,iFCpRA,MAeA,EAfyCpT,IACrC,MAAM,QAAEwT,EAAO,aAAEoC,EAAY,WAAEK,EAAU,YAAED,GAAgBhW,EAC3D,OAAKA,EAAMwT,SAAYxT,EAAMiW,YAAejW,EAAMgW,YAK9ClW,EAAAA,cAAC0G,EAAAA,OAAMhF,OAAAC,OAAA,GAAKmU,GACR9V,EAAAA,cAAC4G,EAAAA,KAAIlF,OAAAC,OAAA,GAAKzB,EAAM6V,eAAgBrC,GAChC1T,EAAAA,cAAC4G,EAAAA,KAAIlF,OAAAC,OAAA,GAAKzB,EAAM8V,aAAcG,GAC9BnW,EAAAA,cAAC4G,EAAAA,KAAIlF,OAAAC,OAAA,GAAKzB,EAAM+V,kBAAmBC,KAPvChW,EAAMmE,QAAQ2B,UAAUC,MAAM,4CACvB,KAOE,2rBCiBV,MAAMqR,UAAiBtX,EAAAA,cAY1BC,YAAmBC,GACfC,MAAMD,GAZO,KAAAqX,mBAAuCC,EAAAA,EAAAA,oBACpDpX,KAAKF,MAAMmE,QAAQ4I,QAAQwK,kBAC3BrX,KAAKF,MAAMwX,aACXtX,KAAKF,MAAM8F,UAUf,CARQ2R,sBAAsBjE,GAC1B,OAAKA,GAAYA,EAAQC,OAAQiE,EAAAA,iBAAiBC,mBAAmBnE,EAAQC,MAGtE3T,EAAAA,cAAC8X,EAAAA,QAAO,CAACC,WAAYrE,EAAQpN,IAAKqN,KAAMD,EAAQC,KAAMnS,UAAU,wBAF5D,IAGf,CAKOL,SAAM,IAAA6W,EACT,MAAM,UAAEC,GAAc7X,KAAKF,OACrB,MAAEiL,EAAK,UAAE3J,GAAcpB,KAAKF,MAAM0E,OAClCsT,EAAgE,CAClE5R,IAAK6R,EAAAA,oBACL3W,UAAsC,QAA7BwW,EAAE5X,KAAKF,MAAM0E,OAAOpD,iBAAS,IAAAwW,EAAAA,EAAI,GAC1CI,iBAAkBH,EAAUI,gBAC5BC,iBAAkBL,EAAUM,YAC5BC,SAAUpY,KAAKF,MAAMkC,GACrBqW,iBAAkBrY,KAAKmX,kBACvBmB,UAAU,GAGR3O,EAAS3I,EAAAA,EAAA,GACRhB,KAAKF,OAAK,IACbiL,MAAOmM,EAASqB,eAAexN,GAC/ByN,kCAAmCV,EACnCW,kBAAmB,CACfvS,IAAK,KACL9E,UAAW,gBACXW,KAAM,YAEV2W,kBAAmB,CAAEtX,UAAWZ,IAAW,eAAgBY,IAC3DuX,gBAAiB,CAAEvX,UAAW,yBAC9BwX,MAAO5Y,KAAKF,MAAM6E,MAAMQ,UAE5B,OAAOnF,KAAKF,MAAMsG,WAAWuD,EACjC,EAGJ,6GCrEO,MAAMkP,EAA6C/Y,IACtD,MAAM,MAAEiL,EAAK,MAAE6N,EAAK,kBAAEF,EAAiB,gBAAEC,EAAe,kBAAEF,EAAiB,kCAAED,GAAsC1Y,EACnH,OACIF,IAAAA,cAAC4G,EAAAA,KAAIlF,OAAAC,OAAA,GAAKmX,GACN9Y,IAAAA,cAAC4G,EAAAA,KAAIlF,OAAAC,OAAA,GAAKoX,GAAkB5N,GAC5BnL,IAAAA,cAAC4G,EAAAA,KAAIlF,OAAAC,OAAA,GAAKiX,GACLI,EAAMvT,KAAI,CAACyT,EAAqBvT,KAC7B,MAAMwT,EAAW,mBAAmBxT,IACpC,OACI3F,IAAAA,cAAC4G,EAAAA,KAAIlF,OAAAC,OAAA,GAAKkX,EAAiB,CAAEjT,IAAKuT,IAC7BD,EACE,KAIhB,EAIf","sources":["webpack://Citta2.0/./src/components/citta-accordion-drawer/Drawer.tsx?b849","webpack://Citta2.0/./src/modules/citta-accordion-item-custom/citta-accordion-item-custom.tsx?88ab","webpack://Citta2.0/./src/modules/citta-accordion-item-custom/citta-accordion-item-custom.view.tsx?411f","webpack://Citta2.0/./src/modules/citta-footer-category/citta-footer-category.tsx?5bae","webpack://Citta2.0/./src/modules/citta-footer-category/citta-footer-category.view.tsx?8fa0","webpack://Citta2.0/./src/modules/citta-orderreference/citta-orderreference.tsx?a2af","webpack://Citta2.0/./src/modules/citta-orderreference/citta-orderreference.view.tsx?837d","webpack://Citta2.0/./src/modules/notifications-list/notifications-list.tsx?8377","webpack://Citta2.0/./src/modules/notifications-list/notifications-list.view.tsx?d466","webpack://Citta2.0/./src/modules/tab-item/tab-item.tsx?b1b8","webpack://Citta2.0/./src/modules/tab-item/tab-item.view.tsx?ee3b","webpack://Citta2.0/./src/modules/tab/tab.tsx?9ac6","webpack://Citta2.0/./src/modules/tab/tab.view.tsx?a99d","webpack://Citta2.0/./src/modules/tile-list/tile-list.tsx?78cb","webpack://Citta2.0/./src/modules/tile-list/tile-list.view.tsx?1b00"],"sourcesContent":["import { Button, Collapse } from '@msdyn365-commerce-modules/utilities';\r\nimport classnames from 'classnames';\r\nimport * as React from 'react';\r\nimport { IDrawerProps } from './Drawer.props';\r\n\r\nexport interface IDrawerState {\r\n isOpen: boolean;\r\n}\r\nexport interface ICollapseProps {\r\n\r\n /** Flag to toggle collapse open */\r\n isOpen?: boolean;\r\n\r\n /** Class that needs to be applied to the button */\r\n className?: string;\r\n\r\n /** Property to set if you want the HTML tag to be something else */\r\n // @ts-ignore\r\n tag?: React.ReactType;\r\n\r\n /** Children for the React element */\r\n // tslint:disable-next-line:no-any\r\n children?: any;\r\n\r\n /** Show the component, triggers the collapse animation */\r\n in?: boolean;\r\n\r\n /** Set the timeout */\r\n timeout?: number;\r\n\r\n /** Flag to set if this is navbar */\r\n navbar?: boolean;\r\n\r\n /** CssModule Property to set any CSS classModule on the nav */\r\n cssModule?: object;\r\n\r\n /**\r\n * Property to set for announcing the state -(expand or collapse) on Button.\r\n */\r\n 'aria-expanded'?: boolean;\r\n}\r\nexport type GlyphPlacement = 'start' | 'end';\r\n\r\n/**\r\n * Drawer - This is a full width uncontrolled collapse where the button glyph changes\r\n * when the drawer is open and closed\r\n */\r\n\r\nexport default class Drawer extends React.Component {\r\n public state: IDrawerState;\r\n private drawerOpenGlyph: string;\r\n private drawerCloseGlyph: string;\r\n private drawerGlyphClass: string;\r\n private isManuallyToggled: boolean;\r\n\r\n constructor(props: IDrawerProps) {\r\n super(props);\r\n this._toggle = this._toggle.bind(this);\r\n this.isManuallyToggled = false;\r\n this.state = { isOpen: (props.collapseProps && props.collapseProps.isOpen) || false };\r\n this.drawerGlyphClass = classnames('drawer__glyph',\r\n // tslint:disable-next-line:align\r\n this.props.toggleGlyphClassName ?\r\n this.props.toggleGlyphClassName : '');\r\n\r\n if (this.props.animateGlyph) {\r\n this.drawerOpenGlyph = classnames(this.drawerGlyphClass,\r\n // tslint:disable-next-line:align\r\n this.props.openGlyph ?\r\n this.props.openGlyph :\r\n this.props.closeGlyph ?\r\n this.props.closeGlyph : '');\r\n this.drawerCloseGlyph = this.drawerOpenGlyph;\r\n } else {\r\n this.drawerOpenGlyph = classnames(this.drawerGlyphClass,\r\n // tslint:disable-next-line:align\r\n this.props.openGlyph ?\r\n this.props.openGlyph : '');\r\n this.drawerCloseGlyph = classnames(this.drawerGlyphClass,\r\n // tslint:disable-next-line:align\r\n this.props.closeGlyph ?\r\n this.props.closeGlyph : '');\r\n }\r\n }\r\n\r\n public render(): JSX.Element {\r\n const collapseProps = { ...this.props.collapseProps } as ICollapseProps;\r\n\r\n // If the drawer is manually toggled by pressing the button, then we use the internal state\r\n if (collapseProps.isOpen === undefined || this.isManuallyToggled) {\r\n collapseProps.isOpen = this.state.isOpen;\r\n } else {\r\n this.state.isOpen = collapseProps.isOpen;\r\n }\r\n collapseProps.children = this.props.children;\r\n const drawerClass = classnames('drawer',\r\n // tslint:disable-next-line:align\r\n this.props.className ?\r\n this.props.className : '');\r\n this.isManuallyToggled = false;\r\n return (\r\n
\r\n \r\n {this.props.radioButtonOption ?
\r\n \r\n {/* tslint:disable-next-line: jsx-self-close */}\r\n \r\n
: null}\r\n {this._generateDrawerButtonInnerMarkup(collapseProps.isOpen)}\r\n \r\n \r\n
\r\n );\r\n }\r\n\r\n private _generateDrawerButtonInnerMarkup(collapseState: boolean): JSX.Element {\r\n const drawerButtonTextClass = classnames('drawer__buttontext',\r\n // tslint:disable-next-line:align\r\n this.props.toggleButtonClassName ?\r\n this.props.toggleButtonClassName : '');\r\n if (this.props.glyphPlacement === 'end') {\r\n return (\r\n <>\r\n {this.props.toggleButtonText}\r\n {this._generateGlyphMarkup('drawer__glyph__end', collapseState)}\r\n \r\n );\r\n }\r\n\r\n if (this.props.glyphPlacement === 'start') {\r\n return (\r\n <>\r\n {this._generateGlyphMarkup('drawer__glyph__start', collapseState)}\r\n {this.props.toggleButtonText}\r\n \r\n );\r\n } else {\r\n return {this.props.toggleButtonText};\r\n }\r\n }\r\n\r\n private _generateGlyphMarkup(location: string, collapseState: boolean): JSX.Element {\r\n let glyphClass = collapseState ? this.drawerOpenGlyph : this.drawerCloseGlyph;\r\n glyphClass = `${glyphClass} ${location}`;\r\n return (\r\n \r\n );\r\n }\r\n\r\n private _toggle(e: React.MouseEvent | React.KeyboardEvent): void {\r\n e.preventDefault();\r\n this.setState({ isOpen: !this.state.isOpen });\r\n this.isManuallyToggled = true;\r\n if (this.props.onToggle) {\r\n this.props.onToggle();\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\nimport { Button } from '@msdyn365-commerce-modules/utilities';\r\nimport { observer } from 'mobx-react';\r\nimport * as React from 'react';\r\nimport ControlledDrawer from '../../components/citta-accordion-drawer/Drawer';\r\nimport { IDrawerProps } from '../../components/citta-accordion-drawer/Drawer.props';\r\nimport { createAccordionStateInput } from '../../data-actions/accordion/accordion-state-data-action';\r\nimport { ICittaAccordionItemCustomData } from './citta-accordion-item-custom.data';\r\nimport { ICittaAccordionItemCustomProps } from './citta-accordion-item-custom.props.autogenerated';\r\nexport interface IAccordionItemState extends React.ComponentState {\r\n /**\r\n * Indicates whether a submenu is expanded or collapsed\r\n */\r\n expanded: boolean;\r\n accordionItemTitle: string;\r\n}\r\n\r\n/**\r\n *\r\n * AccordionItem component\r\n * @extends {React.Component>}\r\n */\r\n@observer\r\nclass AccordionItemCustom extends React.Component, IAccordionItemState> {\r\n private expandSingleItemOnly?: boolean = false;\r\n\r\n constructor(props: ICittaAccordionItemCustomProps) {\r\n super(props);\r\n this._onToggleAccordionItem = this._onToggleAccordionItem.bind(this);\r\n this._getDrawerProps = this._getDrawerProps.bind(this);\r\n this._renderAccordionItemContent = this._renderAccordionItemContent.bind(this);\r\n this._renderAccordionItemSlotsContent = this._renderAccordionItemSlotsContent.bind(this);\r\n this.state = {\r\n expanded: false, // isExpanded\r\n accordionItemTitle: this.props.config.accordionItemTitle\r\n };\r\n this.expandSingleItemOnly = this.props.data.accordionExpandedState.result && this.props.data.accordionExpandedState.result.expandSingleItemOnly;\r\n }\r\n\r\n public componentDidMount(): void {\r\n const initialExpansion = this.props && this.props.config && this.props.config.isExpandedOnInitialLoad || false;\r\n if (initialExpansion) {\r\n this.setState(prevState => ({\r\n expanded: !prevState.expanded\r\n }));\r\n\r\n if (this.expandSingleItemOnly) {\r\n const oldRadioButtonText = this.props.data && this.props.data.accordionExpandedState && this.props.data.accordionExpandedState.result!.radioButtonText;\r\n const closing = this.state.accordionItemTitle === oldRadioButtonText;\r\n const accordionState = { radioButtonText: closing ? '' : this.props.config.accordionItemTitle, isAllExpanded: false };\r\n this.props.context.actionContext.update(createAccordionStateInput(accordionState), accordionState);\r\n }\r\n }\r\n }\r\n\r\n public render(): JSX.Element {\r\n const { slots } = this.props;\r\n const config = this.props && this.props.config;\r\n const drawerProps = this._getDrawerProps(config && config.showGlyph);\r\n\r\n const hasAccordionItemSlotsContent = slots && slots.accordionItemContent && slots.accordionItemContent.length;\r\n\r\n return (\r\n
\r\n {hasAccordionItemSlotsContent && (\r\n
\r\n \r\n
\r\n {(config) && (\r\n \r\n
\r\n {hasAccordionItemSlotsContent && (this._renderAccordionItemSlotsContent(slots.accordionItemContent))}\r\n
\r\n
\r\n )\r\n }\r\n
\r\n
)\r\n }\r\n
\r\n );\r\n }\r\n\r\n private _getDrawerProps(showGlyph: boolean | undefined): IDrawerProps {\r\n const data = this.props && this.props.data;\r\n const config = this.props && this.props.config;\r\n const accordionExpandedStateResult = data && data.accordionExpandedState && data.accordionExpandedState.result;\r\n // const expanded = accordionExpandedStateResult ? accordionExpandedStateResult!.isAllExpanded === undefined ?\r\n // data && config.isExpandedOnInitialLoad : accordionExpandedStateResult!.isAllExpanded : false;\r\n const expanded = this.state.expanded;\r\n const radioButtonText = accordionExpandedStateResult!.radioButtonText;\r\n\r\n if (showGlyph) {\r\n return {\r\n toggleButtonText: (config.accordionItemTitle && config.accordionItemTitle) || '',\r\n collapseProps: { isOpen: expanded },\r\n openGlyph: 'expand-glyph',\r\n closeGlyph: 'collapse-glyph',\r\n glyphPlacement: config && config.glyphPlacement,\r\n onToggle: this._onToggleAccordionItem(config.accordionItemTitle),\r\n radioButtonOption: config && config.radioButtonOption,\r\n radioButtonChecked: radioButtonText === config.accordionItemTitle ? true : false\r\n };\r\n }\r\n\r\n return {\r\n toggleButtonText: config.accordionItemTitle || '',\r\n collapseProps: { isOpen: this.expandSingleItemOnly ? radioButtonText === this.state.accordionItemTitle ? true : false : expanded },\r\n onToggle: this._onToggleAccordionItem(config.accordionItemTitle),\r\n radioButtonOption: config && config.radioButtonOption,\r\n radioButtonChecked: radioButtonText === config.accordionItemTitle ? true : false\r\n };\r\n }\r\n\r\n private _onToggleAccordionItem = (AccordionItemText: string, openOnly?: boolean) => (): void => {\r\n const data = this.props && this.props.data;\r\n const accordionExpandedStateResult = data && data.accordionExpandedState && data.accordionExpandedState.result;\r\n const radioButtonText = accordionExpandedStateResult!.radioButtonText;\r\n if (openOnly && (this.expandSingleItemOnly ? radioButtonText === this.state.accordionItemTitle ? true : false : this.state.expanded)) {\r\n return;\r\n }\r\n\r\n this.setState(prevState => ({\r\n expanded: !prevState.expanded\r\n }));\r\n\r\n if (this.expandSingleItemOnly) {\r\n const oldRadioButtonText = this.props.data && this.props.data.accordionExpandedState && this.props.data.accordionExpandedState.result!.radioButtonText;\r\n const closing = this.state.accordionItemTitle === oldRadioButtonText;\r\n const accordionState = { radioButtonText: closing ? '' : AccordionItemText, isAllExpanded: false };\r\n this.props.context.actionContext.update(createAccordionStateInput(accordionState), accordionState);\r\n }\r\n }\r\n\r\n // private _closeAllAccordionItems = (AccordionItemText: string) => (): void => {\r\n // if (this.expandSingleItemOnly) {\r\n // const accordionState = { radioButtonText: AccordionItemText, isAllExpanded: false };\r\n // this.props.context.actionContext.update(createAccordionStateInput(accordionState), accordionState);\r\n // }\r\n // if (AccordionItemText !== this.state.accordionItemTitle) {\r\n // this.setState({ accordionItemTitle: AccordionItemText });\r\n // } else {\r\n // this.setState({ accordionItemTitle: '' });\r\n // }\r\n // }\r\n\r\n private _renderAccordionItemContent(content: string): JSX.Element | null {\r\n return (\r\n
\r\n

{content}

\r\n
\r\n );\r\n }\r\n\r\n private _renderAccordionItemSlotsContent(items: React.ReactNode[]): JSX.Element | null {\r\n return (\r\n \r\n {items && items.length ? (\r\n items.map((slot: React.ReactNode, index: number) => {\r\n return (\r\n \r\n {slot}\r\n \r\n );\r\n })\r\n ) : null}\r\n \r\n );\r\n }\r\n}\r\n\r\nexport default AccordionItemCustom;\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\nexport default () => {\r\n return (\r\n
\r\n

Hello world

\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 { IModuleProps, INodeProps } from '@msdyn365-commerce-modules/utilities';\r\nimport classnames from 'classnames';\r\nimport * as React from 'react';\r\nimport { ICittaFooterCategoryConfig, ICittaFooterCategoryProps } from './citta-footer-category.props.autogenerated';\r\n\r\nexport interface IFooterCategoryViewProps extends ICittaFooterCategoryProps {\r\n categories: React.ReactNode[];\r\n FooterList: IModuleProps;\r\n FooterListItem: INodeProps;\r\n}\r\n\r\n/**\r\n *\r\n * FooterCategory component\r\n * @extends {React.PureComponent>}\r\n */\r\nclass FooterCategory extends React.PureComponent> {\r\n public render(): JSX.Element | null {\r\n if(!this.props.slots || !this.props.slots.content || !this.props.slots.content.length) {\r\n this.props.context.telemetry.error('footer slots content is empty, module wont render');\r\n return null;\r\n }\r\n const viewprops = {\r\n ...this.props,\r\n categories: this.props.slots.content,\r\n FooterList: {\r\n moduleProps: this.props,\r\n className: classnames('ms-footer__list', this.props.config.className),\r\n tag:'ul'\r\n },\r\n FooterListItem: {\r\n className: classnames('ms-footer__list-item', this.props.config.className),\r\n tag: 'li'\r\n },\r\n };\r\n\r\n return this.props.renderView(viewprops) as React.ReactElement;\r\n }\r\n}\r\n\r\nexport default FooterCategory;\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 { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport React, { ReactNode } from 'react';\r\nimport { IFooterCategoryViewProps } from './citta-footer-category';\r\n\r\nexport const FooterCategoryView: React.FC = props => {\r\n const {categories, FooterList, FooterListItem} = props;\r\n if(!categories || !categories.length) {\r\n props.context.telemetry.error('Footer content is empty, module wont render');\r\n return null;\r\n }\r\n return(\r\n \r\n { categories.map((category: ReactNode, index: number) => {\r\n return (\r\n \r\n {category}\r\n \r\n );\r\n })\r\n }\r\n \r\n );\r\n};\r\n\r\nexport default FooterCategoryView;","/*!\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 classnames from 'classnames';\r\nimport { ICittaOrderreferenceData } from './citta-orderreference.data';\r\nimport { ICittaOrderreferenceProps } from './citta-orderreference.props.autogenerated';\r\nimport { Button, IModuleProps, INodeProps } from '@msdyn365-commerce-modules/utilities';\r\nimport { computed } from 'mobx';\r\nimport { ICartState, getCartState, ICheckoutState, getCheckoutState } from '@msdyn365-commerce/global-state';\r\nimport { GetCheckoutCartInput } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { updateAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/CartsDataActions.g';\r\nimport { Cart, AttributeTextValue } from '@msdyn365-commerce/retail-proxy';\r\n\r\ninterface ICittaOrderReferenceFormState {\r\n orderreference: string;\r\n orderreferenceSubmited: string;\r\n eAValError: boolean;\r\n eAError: boolean;\r\n pPCError: boolean;\r\n rCCError: boolean;\r\n reqError: boolean;\r\n responseReceived: boolean;\r\n responseError: boolean;\r\n responseSuccess: boolean;\r\n reCaptchaChecked: boolean;\r\n submitted: boolean;\r\n}\r\nexport interface ICittaOrderReferenceForm {\r\n FormWrapper: INodeProps;\r\n FormContainer: INodeProps;\r\n orderreferenceInput: React.ReactNode;\r\n submitButtton: React.ReactNode;\r\n submitThanks: React.ReactNode;\r\n editButton: React.ReactNode;\r\n\r\n}\r\n\r\nexport interface ICittaOrderreferenceViewProps extends ICittaOrderreferenceProps {\r\n orderreferenceWrapper: IModuleProps;\r\n orderreferenceResponse: React.ReactNode;\r\n orderreferenceForm: ICittaOrderReferenceForm;\r\n responseSuccess: boolean;\r\n orderreferenceno: React.ReactNode;\r\n}\r\n\r\n/**\r\n *\r\n * CittaOrderreference component\r\n * @extends {React.PureComponent>}\r\n */\r\nclass CittaOrderreference extends React.PureComponent, ICittaOrderReferenceFormState> {\r\n private _OrderRefNoRef: React.RefObject;\r\n private moduleClassName: string = 'newsletterSubWrap';\r\n private responseMessage: string | undefined;\r\n private orderrefnoValue: boolean = false;\r\n private formInputValues: boolean = false;\r\n private cart: ICartState | undefined;\r\n private checkoutState: ICheckoutState | undefined; \r\n @computed public get userorderreferenceno(): Readonly {\r\n if (this._OrderRefNoRef.current) {\r\n return this._OrderRefNoRef.current!.value;\r\n } else {\r\n return '';\r\n }\r\n }\r\n\r\n constructor(props: ICittaOrderreferenceProps) {\r\n super(props);\r\n this._OrderRefNoRef = React.createRef();\r\n this._handlesubmit = this._handlesubmit.bind(this);\r\n this.state = {\r\n orderreference: '',\r\n orderreferenceSubmited:'',\r\n eAValError: false,\r\n eAError: false,\r\n pPCError: false,\r\n rCCError: false,\r\n reqError: false,\r\n responseReceived: false,\r\n responseError: false,\r\n reCaptchaChecked: false,\r\n responseSuccess: false,\r\n submitted: false\r\n };\r\n }\r\n\r\n public async componentDidMount(): Promise {\r\n let cartState = await getCartState(this.props.context.actionContext);\r\n this.cart = cartState;\r\n this.checkoutState = await getCheckoutState(this.props.context.actionContext);\r\n\r\n if (this.cart?.cart?.ExtensionProperties!?.length > 0) {\r\n\r\n const property = this.cart?.cart?.ExtensionProperties!?.find((extension) => extension.Key === 'HSOCustRef');\r\n if (property) {\r\n if (this._OrderRefNoRef.current) {\r\n this._OrderRefNoRef.current!.value = property.Value?.StringValue!;\r\n //this.setState({orderreference: property.Value?.StringValue!})\r\n //this.setState({orderreferenceSubmited: property.Value?.StringValue!})\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n\r\n public render(): JSX.Element | null {\r\n // return this.props.renderView(this.props); \r\n\r\n const viewProps: ICittaOrderreferenceViewProps = {\r\n ...(this.props as ICittaOrderreferenceProps),\r\n orderreferenceWrapper: {\r\n moduleProps: this.props,\r\n className: classnames(this.moduleClassName)\r\n },\r\n orderreferenceResponse: this._getSubscribeResponse(),\r\n orderreferenceForm: this._renderForm(),\r\n responseSuccess: this.state.responseSuccess,\r\n orderreferenceno: this._renderorderreferenceno()\r\n };\r\n return this.props.renderView(viewProps) as React.ReactElement;\r\n }\r\n\r\n private _renderorderreferenceno(): React.ReactNode {\r\n return (\r\n this.state.orderreferenceSubmited && Applied value: {this.state.orderreferenceSubmited}\r\n );\r\n }\r\n\r\n\r\n private _renderSubscribeThanks(): React.ReactNode {\r\n return (\r\n
\r\n
\r\n Thanks!\r\n
\r\n
\r\n );\r\n }\r\n private _renderForm(): ICittaOrderReferenceForm {\r\n return {\r\n FormWrapper: {\r\n className: 'newsletter-subscription',\r\n },\r\n FormContainer: {\r\n className: 'newsletter-subscription-div',\r\n },\r\n orderreferenceInput: this._renderorderreferenceInput(),\r\n submitButtton: this.state.orderreferenceSubmited ? null : this._renderSubscribeButton(),\r\n submitThanks: this._renderSubscribeThanks(),\r\n editButton: this._renderEditButton()\r\n };\r\n }\r\n\r\n private _renderSubscribeButton(): React.ReactNode {\r\n return (\r\n
\r\n Save & apply\r\n \r\n
\r\n );\r\n }\r\n\r\n private _renderEditButton(): React.ReactNode {\r\n return (\r\n
\r\n Edit\r\n \r\n
\r\n );\r\n }\r\n\r\n private async _handleEdit(e: React.MouseEvent | React.KeyboardEvent | React.FormEvent): Promise {\r\n this.orderrefnoValue = (this._OrderRefNoRef && this._OrderRefNoRef.current && this._OrderRefNoRef.current.value) ? true : false;\r\n this.setState({responseSuccess: false});\r\n }\r\n\r\n private async _handlesubmit(e: React.MouseEvent | React.KeyboardEvent | React.FormEvent): Promise {\r\n this.orderrefnoValue = (this._OrderRefNoRef && this._OrderRefNoRef.current && this._OrderRefNoRef.current.value) ? true : false;\r\n\r\n const eA = (this._OrderRefNoRef && this._OrderRefNoRef.current && this._OrderRefNoRef.current.value) ? this._OrderRefNoRef.current.value : '';\r\n if (!this.orderrefnoValue) {\r\n this.setState({\r\n eAError: true,\r\n reqError: true\r\n });\r\n } else {\r\n this.formInputValues = (this.orderrefnoValue) ? true : false;\r\n if (this.formInputValues && !this.state.eAValError) {\r\n try {\r\n await this._SaveExtenstionproperty(eA);\r\n // this._clearValues();\r\n } catch (e) {\r\n console.log(e, 'Please fill the form!');\r\n }\r\n }\r\n }\r\n }\r\n\r\n // private _clearValues(): void {\r\n // if (this._OrderRefNoRef.current) {\r\n // this._OrderRefNoRef.current!.value = '';\r\n // }\r\n // }\r\n private async _SaveExtenstionproperty(orderrefno: string): Promise {\r\n\r\n this._addCartExtension(this.cart?.cart!, \"HSOCustRef\", orderrefno);\r\n this._saveCartExtensions(this.cart!, orderrefno);\r\n this.setState({responseSuccess: true, orderreferenceSubmited: orderrefno});\r\n }\r\n\r\n\r\n private _renderorderreferenceInput(): React.ReactNode {\r\n return (\r\n
\r\n \r\n \r\n
\r\n );\r\n }\r\n\r\n private _handleChange = (name: string) => (e: React.ChangeEvent) => {\r\n this.setState({orderreferenceSubmited: ''});\r\n const value = e.target.value;\r\n switch (name) {\r\n case 'orderrefno': {\r\n this.setState({ orderreference: value, eAError: false, reqError: false, eAValError: false, pPCError: false });\r\n break;\r\n }\r\n default: {\r\n console.log('No input box changes');\r\n this.setState({ reqError: false, eAValError: false, pPCError: false });\r\n }\r\n }\r\n }\r\n private _getSubscribeResponse(): React.ReactNode {\r\n return (\r\n this.state.responseReceived && this.responseMessage !== '' || undefined\r\n ? (\r\n
\r\n

{this.responseMessage}

\r\n
\r\n )\r\n : null\r\n );\r\n }\r\n\r\n private async _saveCartExtensions(cart: ICartState, orderReferenceString: string) {\r\n if (!cart) {\r\n this.props.telemetry.error('No cart object given');\r\n throw new Error(`saveCartExtensions error: No cart object given`);\r\n }\r\n const cartExtensionProperties = cart.cart.ExtensionProperties;\r\n if (this.checkoutState) {\r\n let cartAttributes = this.checkoutState.checkoutCart.cart.AttributeValues ?? [];\r\n let updateCart = true;\r\n\t\t\tconst orderReferenceAttributeName = \"HSOCustRef\";\r\n\r\n const orderReferenceAttribute = cartAttributes?.find(x => x.Name === orderReferenceAttributeName) as AttributeTextValue;\r\n\r\n if (orderReferenceAttribute) {\r\n if (orderReferenceAttribute.TextValue !== orderReferenceString) {\r\n this.updateTextAttribute(orderReferenceAttribute as AttributeTextValue, orderReferenceString);\r\n }\r\n else {\r\n updateCart = false;\r\n }\r\n } else {\r\n cartAttributes?.push(this.createTextAttribute(orderReferenceAttributeName, orderReferenceString));\r\n }\r\n\r\n if (updateCart) {\r\n await this.checkoutState.checkoutCart.updateAttributeValues({ newAttributeValues: cartAttributes });\r\n }\r\n }\r\n\r\n await updateAsync({ callerContext: this.props.context.actionContext }, { Id: cart.cart.Id, ExtensionProperties: cartExtensionProperties }).then(newCart => {\r\n if (newCart) {\r\n this.props.context.actionContext.update(new GetCheckoutCartInput(this.props.context.request.apiSettings), newCart);\r\n }\r\n }).catch(error => {\r\n throw new Error(`saveCartExtensions ${error}`);\r\n });\r\n }\r\n\r\n private readonly updateTextAttribute = (attribute: AttributeTextValue, value: string) => {\r\n if (attribute) {\r\n attribute.TextValue = value;\r\n attribute.TextValueTranslations = [];\r\n attribute['@odata.type'] = \"#Microsoft.Dynamics.Commerce.Runtime.DataModel.AttributeTextValue\";\r\n } \r\n return attribute;\r\n };\r\n\r\n private readonly createTextAttribute = (name: string, value: string) => {\r\n return { \r\n Name : name, \r\n TextValue: value,\r\n TextValueTranslations: [],\r\n '@odata.type': \"#Microsoft.Dynamics.Commerce.Runtime.DataModel.AttributeTextValue\"\r\n };\r\n };\r\n\r\n _addCartExtension = (cart: Cart, key: string, value: string) => {\r\n cart.ExtensionProperties = cart.ExtensionProperties || [];\r\n const property = cart.ExtensionProperties.find((extension) => extension.Key === key);\r\n if (property) {\r\n property.Value = { StringValue: value };\r\n } else {\r\n cart.ExtensionProperties.push({\r\n Key: key,\r\n Value: {\r\n StringValue: value\r\n }\r\n });\r\n }\r\n };\r\n}\r\nexport default CittaOrderreference;\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 { ICittaOrderreferenceViewProps } from './citta-orderreference';\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\n// export default (props: ICittaOrderreferenceViewProps) => {\r\n// return (\r\n//
\r\n//

Config Value: {props.config.showText}

\r\n//

Resource Value: {props.resources.resourceKey}

\r\n//
\r\n// );\r\n// };\r\n\r\nexport class ICittaOrderreferenceView extends React.PureComponent {\r\n\r\n public render(): JSX.Element | null {\r\n const { orderreferenceWrapper, orderreferenceForm, orderreferenceno } = this.props;\r\n const { FormWrapper, FormContainer,orderreferenceInput, submitButtton } = orderreferenceForm;\r\n const orderForm = \r\n \r\n {orderreferenceInput}\r\n {orderreferenceno}\r\n {submitButtton}\r\n \r\n ;\r\n \r\n return (\r\n \r\n {orderForm}\r\n \r\n );\r\n }\r\n}\r\nexport default ICittaOrderreferenceView;\r\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport MsDyn365 from '@msdyn365-commerce/core';\nimport {\n INotificationComponentsList,\n INotificationComponentsListState,\n INotificationComponentType,\n NotificationComponentsListsManager,\n NotificationEvents,\n NotificationFeedType\n} from '@msdyn365-commerce-modules/notifications-core';\nimport { ArrayExtensions, ObjectExtensions, Random } from '@msdyn365-commerce-modules/retail-actions';\nimport { IModuleProps } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport React from 'react';\n\nimport { INotificationsListProps } from './notifications-list.props.autogenerated';\n\n/**\n * View for the notifications list which specifies the container and notifications items.\n */\nexport interface INotificationsListViewProps extends INotificationsListProps<{}> {\n container: IModuleProps;\n notificationsList: React.ReactNode;\n}\n\n/**\n * Configuration to make the list stickable to the page without overlapping any content on top.\n */\nexport interface INotificationComponentStickyConfiguration {\n /**\n * Minimum offset for top (default for the page).\n */\n minTopOffset: number;\n\n /**\n * Maximum offset for top (to limit the top offset while scrolling).\n */\n maxTopOffset: number;\n}\n\n/**\n * Stickable notification list state which defines the top position of the list at the moment.\n */\nexport interface IStickableNotificationComponentsListState extends INotificationComponentsListState {\n /**\n * The top position of the list on the page.\n */\n top?: number;\n}\n\n/**\n * A notification list which is operated by notification manager.\n * It is responsible for rendering the received notifications.\n */\nexport class NotificationComponentsList extends React.Component, IStickableNotificationComponentsListState>\n implements INotificationComponentsList {\n /**\n * The class name to use.\n */\n private static readonly _className: string = 'msc-notifications-list';\n\n /**\n * The feed which the list is responsible for displaying.\n */\n public readonly feed: NotificationFeedType;\n\n /**\n * Configuration which specifies if and how the list should be stickable.\n * If undefined, the configuration will not be used at all. And list will not be stickable.\n */\n private readonly _stickyConfiguration?: INotificationComponentStickyConfiguration;\n\n /**\n * The list of notification which should be shown in the list at the moment.\n * @remarks Should be used to retrieve the latest list of notifications\n * as the list from the state is updated only after rendering.\n */\n private _notificationsComponentList: INotificationComponentType[];\n\n /**\n * Unique identifier of the list.\n * Uses format 'NotificationComponentsList-GUID';.\n */\n private _instanceId?: string;\n\n /**\n * Initializes instance with the given props.\n * @param props - The configuration of the list.\n */\n public constructor(props: INotificationsListProps<{}>) {\n super(props);\n\n this.feed = props.config.feed;\n\n if (\n !ObjectExtensions.isNullOrUndefined(props.config.minTopOffset) &&\n !ObjectExtensions.isNullOrUndefined(props.config.maxTopOffset)\n ) {\n this._stickyConfiguration = {\n minTopOffset: props.config.minTopOffset,\n maxTopOffset: props.config.maxTopOffset\n };\n }\n\n this._notificationsComponentList = [];\n\n this.state = {\n notificationsComponentList: []\n };\n\n this._handleTopUpdate = this._handleTopUpdate.bind(this);\n this._getCurrentTopPosition = this._getCurrentTopPosition.bind(this);\n }\n\n /**\n * Specifies if the component should be re-rendered.\n * @param nextProps - The next configuration the component is receiving.\n * @param nextState - The next state the component is receiving.\n * @returns True if component should be re-rendered, false if component should not be changed.\n */\n public shouldComponentUpdate(\n nextProps: Readonly>,\n nextState: Readonly\n ): boolean {\n const isPropsDifferent =\n this.feed !== nextProps.config.feed ||\n this.props.config.maxNotificationsCount !== nextProps.config.maxNotificationsCount ||\n this.props.config.maxTopOffset !== nextProps.config.maxTopOffset ||\n this.props.config.minTopOffset !== nextProps.config.minTopOffset ||\n this.props.config.className !== nextProps.config.className ||\n this.props.id !== nextProps.id;\n const isStateDifferent =\n this.state.top !== nextState.top ||\n this.state.notificationsComponentList.length !== nextState.notificationsComponentList.length ||\n this.state.notificationsComponentList.every(value =>\n nextState.notificationsComponentList.find(otherValue => otherValue.props.notification.id === value.props.notification.id)\n );\n return isPropsDifferent || isStateDifferent;\n }\n\n /**\n * Adds the current instance to the global list of instances so that it becomes available for the notification manager.\n * In case the list is specified to be stickable, also subscribes to the scroll event to update the offsets.\n */\n public componentDidMount(): void {\n NotificationComponentsListsManager.subscribe(this);\n\n this._instanceId = `NotificationComponentsList-${Random.Guid.generateGuid()}`;\n\n if (MsDyn365.isBrowser && this._stickyConfiguration !== undefined) {\n window.addEventListener('scroll', this._handleTopUpdate);\n }\n }\n\n /**\n * Remove the instance from the global list of instances so that it becomes unavailable for the notification manager.\n * Unsubscribes itself from the notification events and scroll event.\n */\n public componentWillUnmount(): void {\n NotificationComponentsListsManager.unsubscribe(this);\n\n this._notificationsComponentList.forEach(component =>\n component.props.notification.events.getValue(NotificationEvents.RemovedFromList)?.unsubscribe(this._instanceId!)\n );\n\n if (MsDyn365.isBrowser && this._stickyConfiguration !== undefined) {\n window.removeEventListener('scroll', this._handleTopUpdate);\n }\n }\n\n /**\n * Adds a new notification to the list.\n * @param {INotificationComponentType} notificationComponent Data required to render the notification. @see INotificationComponentType.\n */\n public addNotificationComponent(notificationComponent: INotificationComponentType): void {\n if (this._instanceId === undefined) {\n return;\n }\n\n if (\n !ObjectExtensions.isNullOrUndefined(this.props.config.maxNotificationsCount) &&\n this._notificationsComponentList.length >= this.props.config.maxNotificationsCount\n ) {\n throw new Error('Notifications limit reached, cannot show more notifications.');\n }\n\n // Subscribe to the remove event to filter the removed notifications out from the list.\n notificationComponent.props.notification.events.getValue(NotificationEvents.RemovedFromList)?.subscribe({\n instanceId: this._instanceId,\n handler: () => {\n notificationComponent.props.notification.events\n .getValue(NotificationEvents.RemovedFromList)\n ?.unsubscribe(this._instanceId!);\n const newList = this._notificationsComponentList.filter(component => component !== notificationComponent);\n this._notificationsComponentList = newList;\n this.setState({ notificationsComponentList: this._notificationsComponentList });\n }\n });\n\n // Prepend the notification as newest should come to the top.\n this._notificationsComponentList.unshift(notificationComponent);\n this.setState({ notificationsComponentList: this._notificationsComponentList });\n this._handleTopUpdate();\n }\n\n public render(): React.ReactNode {\n const className = classnames(\n NotificationComponentsList._className,\n `${NotificationComponentsList._className}__${this.feed}`,\n this.props.config.className\n );\n\n const viewProps: INotificationsListViewProps = {\n ...this.props,\n container: {\n moduleProps: this.props,\n className,\n id: this._instanceId,\n style: { top: this.state.top }\n },\n notificationsList: this._renderNotificationsList()\n };\n\n return this.props.renderView(viewProps);\n }\n\n /**\n * Renders the list of notifications.\n * @returns React node with a list of notifications.\n */\n private _renderNotificationsList(): React.ReactNode {\n const hasNotifications = ArrayExtensions.hasElements(this.state.notificationsComponentList);\n const containerClassName = classnames(\n `${NotificationComponentsList._className}__scrollable`,\n hasNotifications\n ? `${NotificationComponentsList._className}__has-notifications`\n : `${NotificationComponentsList._className}__empty`\n );\n\n return (\n
\n {this.state.notificationsComponentList.map(component => {\n const ComponentClass = component.componentClass;\n return ;\n })}\n
\n );\n }\n\n /**\n * Retrieves current top offset position by looking at scroll position and rounding it to the stickable limits.\n */\n private _getCurrentTopPosition(): number | undefined {\n const configuration = this._stickyConfiguration;\n\n if (configuration === undefined) {\n return undefined;\n }\n\n let pageYOffset = 0;\n if (MsDyn365.isBrowser) {\n pageYOffset = window.pageYOffset;\n }\n\n return Math.max(Math.min(configuration.maxTopOffset, configuration.maxTopOffset - pageYOffset), configuration.minTopOffset);\n }\n\n /**\n * Updates the top offset on scroll event to make the list stickable.\n */\n private _handleTopUpdate(): void {\n const newTop = this._getCurrentTopPosition();\n this.setState({ top: newTop });\n }\n}\n\nexport default NotificationComponentsList;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { INotificationsListViewProps } from './notifications-list';\n\nexport const NotificationsListView: React.FC = props => {\n return {props.notificationsList};\n};\n\nexport default NotificationsListView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IModuleProps, INodeProps, NodeTag } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { ITabItemData } from './tab-item.data';\nimport { ITabItemProps } from './tab-item.props.autogenerated';\n\nexport interface ITabItemViewProps {\n TabContentContainer: IModuleProps;\n TabHeaderContainer: IModuleProps;\n tabSlots: INodeProps;\n TabItemContent: INodeProps;\n tabItemType?: TabItemType;\n tabHeader: React.ReactNode;\n}\n\nexport interface ITabItemExtentedProps extends ITabItemProps {\n tabItemType?: TabItemType;\n isSelected?: boolean;\n itemIndex?: number;\n tabId?: string;\n}\n\nexport enum TabItemType {\n TabHeader,\n TabContent\n}\n\n/**\n *\n * TabItem component.\n * @extends {React.Component}\n */\n@observer\nclass TabItem extends React.PureComponent {\n private readonly moduleContentClassName: string = 'ms-tab-item-content';\n\n private readonly moduleHeaderClassName: string = 'ms-tab-item-header';\n\n constructor(props: ITabItemProps) {\n super(props);\n this._renderTabHeader = this._renderTabHeader.bind(this);\n }\n\n public render(): JSX.Element {\n const { slots, renderView, config, data, isSelected, itemIndex } = this.props;\n const index = itemIndex || 0;\n const contentID = getContentID(index, this.props.tabId || '');\n const activeContentIDResult = data && data.activeTabState && data.activeTabState.result;\n const shown =\n activeContentIDResult &&\n activeContentIDResult.tabId === this.props.tabId &&\n activeContentIDResult.activeContentIndex !== undefined\n ? activeContentIDResult.activeContentIndex === index\n : isSelected || false;\n const viewProps = {\n ...this.props,\n TabContentContainer: {\n moduleProps: this.props,\n className: classnames(this.moduleContentClassName, config.className)\n },\n TabHeaderContainer: {\n moduleProps: this.props,\n className: classnames(this.moduleHeaderClassName, config.className)\n },\n TabItemContent: {\n className: 'ms-tab-item-content__content',\n tag: 'section' as NodeTag,\n 'aria-hidden': !shown,\n role: 'tabpanel',\n tabIndex: shown ? 0 : -1,\n id: contentID\n },\n tabHeader: this._renderTabHeader(),\n tabSlots: slots\n };\n return renderView(viewProps) as React.ReactElement;\n }\n\n private _renderTabHeader(): React.ReactNode {\n return <>{this.props.config.tabItemTitle};\n }\n}\n\nexport const getContentID = (index: number, id: string) => {\n return `tab-item-content-${id}-${index}`;\n};\n\nexport default TabItem;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ITabItemViewProps, TabItemType } from './tab-item';\n\nconst TabItemView: React.FC = props => {\n const { tabItemType, tabSlots, TabContentContainer, TabHeaderContainer, TabItemContent, tabHeader } = props;\n\n switch (tabItemType) {\n case TabItemType.TabContent:\n return (\n \n \n {tabSlots &&\n tabSlots.tabItemContent &&\n tabSlots.tabItemContent.length &&\n _renderTabItemContent(tabSlots.tabItemContent)}\n \n \n );\n case TabItemType.TabHeader:\n return {tabHeader};\n default:\n return null;\n }\n};\n\nconst _renderTabItemContent = (items: React.ReactNode[]): JSX.Element | null => {\n return (\n <>\n {items && items.length > 0\n ? items.map((item: React.ReactNode, index: number) => {\n return {item};\n })\n : null}\n \n );\n};\nexport default TabItemView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as MsDyn365 from '@msdyn365-commerce/core';\nimport { IModuleProps, INodeProps, NodeTag } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { createTabStateInput, getContentID, TabItemType } from '../..';\nimport { ITabData } from './tab.data';\nimport { ITabProps } from './tab.props.autogenerated';\n\n/**\n *\n * Tab component.\n * @extends {React.PureComponent>}\n */\n\nexport interface ICallToActionProps {\n link: INodeProps[];\n}\n\nexport interface ITabViewProps extends ITabProps<{}> {\n heading?: React.ReactNode;\n TabContainer: IModuleProps;\n headerSection: INodeProps;\n tabHeaderSection: INodeProps;\n tabsSection: INodeProps;\n tabItemContainer: INodeProps;\n tabHeaders: React.ReactNode;\n tabContents: React.ReactNode;\n}\n\nexport interface ITabViewStates {\n currentTabIndex: number;\n}\n\n/**\n *\n * Tab component.\n * @extends {React.Component>}\n */\n@observer\nclass Tab extends React.Component, ITabViewStates> {\n public readonly tabIndexQuery: string = 'activeTab';\n\n private activeLink: HTMLLIElement | null;\n\n constructor(props: ITabProps) {\n super(props);\n const { defaultTabIndex } = this.props.config;\n const { slots } = this.props;\n const slotLength = (slots && slots.tabItems && slots.tabItems.length) || 0;\n let initialIndex = defaultTabIndex && defaultTabIndex <= slotLength && defaultTabIndex > 0 ? defaultTabIndex - 1 : 0;\n const queryString: string =\n (this.props.context &&\n this.props.context.request &&\n this.props.context.request.query &&\n this.props.context.request.query.activeTab) ||\n '';\n let queryTabIndex: number = 0;\n if (queryString.indexOf(':') > 0) {\n const arr = queryString.split(':');\n const moduleId = arr[0];\n if (moduleId === this.props.id) {\n queryTabIndex = Number.parseInt(arr[1], 10);\n }\n }\n initialIndex = queryTabIndex > 0 && queryTabIndex <= slotLength ? queryTabIndex - 1 : initialIndex;\n this.state = { currentTabIndex: initialIndex };\n\n this._getTabHeader = this._getTabHeader.bind(this);\n this._getTabContent = this._getTabContent.bind(this);\n this._onClick = this._onClick.bind(this);\n this._onKeyDown = this._onKeyDown.bind(this);\n this._setGetParameter = this._setGetParameter.bind(this);\n this.activeLink = null;\n }\n\n public shouldComponentUpdate(nextProps: ITabProps, nextState: ITabViewStates): boolean {\n if (this.state === nextState && this.props.data === nextProps.data) {\n return false;\n }\n return true;\n }\n\n public render(): JSX.Element {\n const { slots } = this.props;\n const { heading, className } = this.props.config;\n\n const headingComponent = heading && (\n \n );\n const slotLength = (slots && slots.tabItems && slots.tabItems.length) || 0;\n\n // Const queryTabIndex = this.props.context && this.props.context.request && this.props.context.request.query && +this.props.context.request.query.activeTabIndex || 0;\n // let activeIndex = defaultTabIndex && defaultTabIndex <= slotLength && defaultTabIndex > 0 ? defaultTabIndex - 1 : 0;\n // activeIndex = queryTabIndex > 0 && queryTabIndex <= slotLength ? queryTabIndex - 1 : activeIndex;\n\n const tabViewProps = {\n ...this.props,\n TabContainer: {\n moduleProps: this.props,\n className: classnames('ms-tab', className)\n },\n headerSection: { className: 'ms-tab-header-section' },\n tabsSection: { className: 'ms-tab-tabs-section', tag: 'ul' as NodeTag, role: 'tablist' },\n heading: headingComponent,\n config: this.props && this.props.config,\n tabItemContainer: {\n tag: 'div' as NodeTag,\n className: 'ms-tab-content-section'\n },\n tabContents: slotLength > 0 && slots.tabItems.map((item: React.ReactNode, index: number) => this._getTabContent(item, index)),\n tabHeaders: slotLength > 0 && slots.tabItems.map((item: React.ReactNode, index: number) => this._getTabHeader(item, index))\n };\n return this.props.renderView(tabViewProps) as React.ReactElement;\n }\n\n public handleHeadingChange = (event: MsDyn365.ContentEditableEvent) => (this.props.config.heading!.text = event.target.value);\n\n public componentDidUpdate(): void {\n const { data } = this.props;\n if (!this.props.context.request.params.isEditor) {\n const dataActionTabId = data && data.activeTabState && data.activeTabState.result && data.activeTabState.result.tabId;\n if (dataActionTabId) {\n if (this.props.id === dataActionTabId) {\n this.activeLink && this.activeLink.focus();\n }\n } else {\n const queryString: string =\n (this.props.context &&\n this.props.context.request &&\n this.props.context.request.query &&\n this.props.context.request.query.activeTab) ||\n '';\n if (queryString.indexOf(':') > 0) {\n const arr = queryString.split(':');\n const moduleId = arr[0];\n if (moduleId === this.props.id) {\n this.activeLink && this.activeLink.focus();\n }\n }\n }\n }\n }\n\n /**\n *Set the activate link value on tab click.\n * @param link -Ref link value.\n */\n private readonly _refHandler = (link: HTMLLIElement | null) => {\n this.activeLink = link;\n };\n\n private _getTabHeader(item: React.ReactNode, index: number): React.ReactNode {\n const { data } = this.props;\n const activeContentIndex =\n data && data.activeTabState && data.activeTabState.result && data.activeTabState.result.activeContentIndex;\n const dataActionTabId = data && data.activeTabState && data.activeTabState.result && data.activeTabState.result.tabId;\n const selected =\n activeContentIndex !== undefined && dataActionTabId === this.props.id\n ? activeContentIndex === index\n : this.state.currentTabIndex === index;\n const contentID = getContentID(index, this.props.id);\n\n return (\n \n \n {React.cloneElement(item as React.ReactElement, {\n tabItemType: TabItemType.TabHeader,\n isSelected: index === this.state.currentTabIndex,\n itemIndex: index,\n tabId: this.props.id\n })}\n \n \n );\n }\n\n private readonly _onClick = (index: number, id: string) => (e: React.MouseEvent) => {\n const activeTabState = { activeContentIndex: index, tabId: id };\n this.props.context.actionContext.update(createTabStateInput(activeTabState), activeTabState);\n this.setState({ currentTabIndex: index });\n\n // Update query paramter\n const requestContext = this.props.context.request;\n const newUrl = this._setGetParameter(requestContext, this.tabIndexQuery, `${this.props.id}:${String(index + 1)}`);\n requestContext && window.history.pushState({ path: newUrl }, '', newUrl);\n };\n\n private readonly _onKeyDown = (index: number, id: string) => (e: React.KeyboardEvent) => {\n if (e.keyCode === 13) {\n const activeTabState = { activeContentIndex: index, tabId: id };\n this.props.context.actionContext.update(createTabStateInput(activeTabState), activeTabState);\n this.setState({ currentTabIndex: index });\n\n // Update query paramter\n const requestContext = this.props.context.request;\n const newUrl = this._setGetParameter(requestContext, this.tabIndexQuery, `${this.props.id}:${String(index + 1)}`);\n requestContext && window.history.pushState({ path: newUrl }, '', newUrl);\n }\n\n if (e.keyCode === 39 || e.keyCode === 37) {\n const { slots } = this.props;\n const slotLength = (slots && slots.tabItems && slots.tabItems.length) || 0;\n\n if (e.keyCode === 39) {\n // If we're at the end, go to the start\n if (index + 1 === slotLength) {\n index = -1;\n }\n const activeTabState = { activeContentIndex: index + 1, tabId: id };\n this.props.context.actionContext.update(createTabStateInput(activeTabState), activeTabState);\n this.setState({ currentTabIndex: index + 1 });\n\n // Update query paramter\n const requestContext = this.props.context.request;\n const newUrl = this._setGetParameter(requestContext, this.tabIndexQuery, `${this.props.id}:${String(index + 2)}`);\n requestContext && window.history.pushState({ path: newUrl }, '', newUrl);\n\n // Move left\n } else if (e.keyCode === 37) {\n // If we're at the start, move to the end\n if (index === 0) {\n index = slotLength;\n }\n const activeTabState = { activeContentIndex: index - 1, tabId: id };\n this.props.context.actionContext.update(createTabStateInput(activeTabState), activeTabState);\n this.setState({ currentTabIndex: index - 1 });\n\n // Update query paramter\n const requestContext = this.props.context.request;\n const newUrl = this._setGetParameter(requestContext, this.tabIndexQuery, `${this.props.id}:${String(index)}`);\n requestContext && window.history.pushState({ path: newUrl }, '', newUrl);\n }\n }\n };\n\n private _getTabContent(item: React.ReactNode, index: number): React.ReactNode {\n return (\n \n {React.cloneElement(item as React.ReactElement, {\n tabItemType: TabItemType.TabContent,\n isSelected: index === this.state.currentTabIndex,\n itemIndex: index,\n tabId: this.props.id\n })}\n \n );\n }\n\n private _setGetParameter(requestContext: MsDyn365.IRequestContext, paramName: string, paramValue: string): string {\n let url;\n\n if (MsDyn365.msdyn365Commerce.isBrowser) {\n url = new URL(window.location.href);\n } else {\n url = new URL(requestContext.url.requestUrl.href);\n }\n\n const params = new window.URLSearchParams(url.search);\n params.set(paramName, paramValue);\n url.search = decodeURIComponent(params.toString());\n return url.toString();\n }\n}\n\nexport default Tab;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ITabViewProps } from './tab';\n\nconst tabView: React.FC = props => {\n const { heading, TabContainer, tabHeaders, tabContents } = props;\n if (!props.heading && !props.tabHeaders && !props.tabContents) {\n props.context.telemetry.error('Tab content is empty, module wont render');\n return null;\n }\n return (\n \n {heading}\n {tabHeaders}\n {tabContents}\n \n );\n};\n\nexport default tabView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n getTelemetryObject,\n Heading,\n IComponentNodeProps,\n INodeProps,\n ISingleSlideCarouselProps,\n ITelemetryContent,\n NodeTag,\n SingleSlideCarousel\n} from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { ITileListProps, ITitleData } from './tile-list.props.autogenerated';\n\n/**\n * Tile-list view props.\n */\nexport interface ITileListViewProps extends ITileListProps<{}> {\n title?: React.ReactNode;\n tiles: React.ReactNode[];\n tileItemContainer: INodeProps;\n tileListContainer: INodeProps;\n tileListHeading: INodeProps;\n singleSlideCarouselComponentProps: INodeProps;\n}\n\n/**\n *\n * TileList component.\n * @extends {React.PureComponent>}\n */\nexport class TileList extends React.PureComponent> {\n private readonly _telemetryContent: ITelemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n private static _createHeading(heading?: ITitleData): React.ReactNode | null {\n if (!heading || !heading.text || StringExtensions.isNullOrWhitespace(heading.text)) {\n return null;\n }\n return ;\n }\n public constructor(props: ITileListProps<{}>) {\n super(props);\n }\n\n public render(): JSX.Element | null {\n const { resources } = this.props;\n const { title, className } = this.props.config;\n const propsCarousel: IComponentNodeProps = {\n tag: SingleSlideCarousel,\n className: this.props.config.className ?? '',\n flipperPrevLabel: resources.flipperPrevious,\n flipperNextLabel: resources.flipperNext,\n parentId: this.props.id,\n telemetryContent: this._telemetryContent,\n vertical: false\n };\n\n const viewProps = {\n ...this.props,\n title: TileList._createHeading(title),\n singleSlideCarouselComponentProps: propsCarousel,\n tileItemContainer: {\n tag: 'li' as NodeTag,\n className: 'ms-tile__item',\n role: 'listitem'\n },\n tileListContainer: { className: classnames('ms-tile-list', className) },\n tileListHeading: { className: 'ms-tile-list__heading' },\n tiles: this.props.slots.content\n };\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n}\n\nexport default TileList;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Node } from '@msdyn365-commerce-modules/utilities';\nimport React, { ReactNode } from 'react';\n\nimport { ITileListViewProps } from './tile-list';\n\n/**\n * View component.\n * @param props - The view properties.\n * @returns Returns props.\n */\nexport const tileListView: React.FC = props => {\n const { title, tiles, tileListContainer, tileListHeading, tileItemContainer, singleSlideCarouselComponentProps } = props;\n return (\n \n {title}\n \n {tiles.map((tileItem: ReactNode, index: number) => {\n const keyIndex = `tile-list-item__${index}`;\n return (\n \n {tileItem}\n \n );\n })}\n \n \n );\n};\n\nexport default tileListView;\n"],"names":["Drawer","React","constructor","props","super","this","_toggle","bind","isManuallyToggled","state","isOpen","collapseProps","drawerGlyphClass","classnames","toggleGlyphClassName","animateGlyph","drawerOpenGlyph","openGlyph","closeGlyph","drawerCloseGlyph","render","_objectSpread","undefined","children","drawerClass","className","Button","Object","assign","toggleButtonProps","onClick","block","disabled","color","radioButtonOption","type","role","id","toggleButtonText","checked","radioButtonChecked","htmlFor","_generateDrawerButtonInnerMarkup","Collapse","collapseState","drawerButtonTextClass","toggleButtonClassName","glyphPlacement","_generateGlyphMarkup","location","glyphClass","e","preventDefault","setState","onToggle","AccordionItemCustom","expandSingleItemOnly","_onToggleAccordionItem","AccordionItemText","openOnly","data","radioButtonText","accordionExpandedState","result","accordionItemTitle","expanded","prevState","oldRadioButtonText","accordionState","isAllExpanded","context","actionContext","update","createAccordionStateInput","_getDrawerProps","_renderAccordionItemContent","_renderAccordionItemSlotsContent","config","componentDidMount","isExpandedOnInitialLoad","slots","drawerProps","showGlyph","hasAccordionItemSlotsContent","accordionItemContent","length","ControlledDrawer","accordionExpandedStateResult","content","items","map","slot","index","key","__decorate","observer","FooterCategory","telemetry","error","viewprops","categories","FooterList","moduleProps","tag","FooterListItem","renderView","FooterCategoryView","Module","category","Node","CittaOrderreference","moduleClassName","orderrefnoValue","formInputValues","_handleChange","name","orderreferenceSubmited","value","target","orderreference","eAError","reqError","eAValError","pPCError","console","log","updateTextAttribute","attribute","TextValue","TextValueTranslations","createTextAttribute","Name","_addCartExtension","cart","ExtensionProperties","property","find","extension","Key","Value","StringValue","push","_OrderRefNoRef","_handlesubmit","rCCError","responseReceived","responseError","reCaptchaChecked","responseSuccess","submitted","userorderreferenceno","current","async","_this$cart","cartState","getCartState","checkoutState","getCheckoutState","_this$cart2","_property$Value","viewProps","orderreferenceWrapper","orderreferenceResponse","_getSubscribeResponse","orderreferenceForm","_renderForm","orderreferenceno","_renderorderreferenceno","style","display","_renderSubscribeThanks","FormWrapper","FormContainer","orderreferenceInput","_renderorderreferenceInput","submitButtton","_renderSubscribeButton","submitThanks","editButton","_renderEditButton","title","_handleEdit","eA","_SaveExtenstionproperty","orderrefno","_this$cart3","_saveCartExtensions","ref","onChange","required","responseMessage","orderReferenceString","Error","cartExtensionProperties","_this$checkoutState$c","cartAttributes","checkoutCart","AttributeValues","updateCart","orderReferenceAttributeName","orderReferenceAttribute","x","updateAttributeValues","newAttributeValues","updateAsync","callerContext","Id","then","newCart","GetCheckoutCartInput","request","apiSettings","catch","computed","ICittaOrderreferenceView","orderForm","NotificationComponentsList","feed","ObjectExtensions","isNullOrUndefined","minTopOffset","maxTopOffset","_stickyConfiguration","_notificationsComponentList","notificationsComponentList","_handleTopUpdate","_getCurrentTopPosition","shouldComponentUpdate","nextProps","nextState","isPropsDifferent","maxNotificationsCount","isStateDifferent","top","every","otherValue","notification","NotificationComponentsListsManager","subscribe","_instanceId","Random","Guid","generateGuid","MsDyn365","isBrowser","window","addEventListener","componentWillUnmount","unsubscribe","forEach","component","_component$props$noti","events","getValue","NotificationEvents","RemovedFromList","removeEventListener","addNotificationComponent","notificationComponent","_notificationComponen","instanceId","handler","_notificationComponen2","newList","filter","unshift","_className","container","notificationsList","_renderNotificationsList","hasNotifications","ArrayExtensions","hasElements","containerClassName","maxHeight","ComponentClass","componentClass","configuration","pageYOffset","Math","max","min","newTop","NotificationsListView","TabItemType","TabItem","moduleContentClassName","moduleHeaderClassName","_renderTabHeader","isSelected","itemIndex","contentID","getContentID","tabId","activeContentIDResult","activeTabState","shown","activeContentIndex","TabContentContainer","TabHeaderContainer","TabItemContent","tabIndex","tabHeader","tabSlots","tabItemTitle","_renderTabItemContent","item","tabItemType","TabContent","tabItemContent","TabHeader","Tab","tabIndexQuery","handleHeadingChange","event","heading","text","_refHandler","link","activeLink","_onClick","createTabStateInput","currentTabIndex","requestContext","newUrl","_setGetParameter","String","history","pushState","path","_onKeyDown","keyCode","slotLength","tabItems","defaultTabIndex","initialIndex","queryString","query","activeTab","queryTabIndex","indexOf","arr","split","Number","parseInt","_getTabHeader","_getTabContent","headingComponent","editProps","onEdit","tabViewProps","TabContainer","headerSection","tabsSection","tabItemContainer","tabContents","tabHeaders","componentDidUpdate","params","isEditor","dataActionTabId","focus","selected","onKeyDown","paramName","paramValue","url","URL","href","requestUrl","URLSearchParams","search","set","decodeURIComponent","toString","TileList","_telemetryContent","getTelemetryObject","telemetryPageName","friendlyName","static","StringExtensions","isNullOrWhitespace","Heading","headingTag","_this$props$config$cl","resources","propsCarousel","SingleSlideCarousel","flipperPrevLabel","flipperPrevious","flipperNextLabel","flipperNext","parentId","telemetryContent","vertical","_createHeading","singleSlideCarouselComponentProps","tileItemContainer","tileListContainer","tileListHeading","tiles","tileListView","tileItem","keyIndex"],"sourceRoot":""}