{"version":3,"file":"static/js/4557f7993d468e1bcb15.bundle.js","mappings":";0JA2LkBA,iBAAlB,SAAkBA,GACdA,EAAA,QACAA,EAAA,QACAA,EAAA,QACAA,EAAA,QACAA,EAAA,QACAA,EAAA,OACH,CAPD,CAAkBA,IAAAA,EAAU,uSChLrB,MCODC,EAAiDC,IAAA,IAAC,KAAEC,EAAI,MAAEC,EAAK,MAAEC,EAAQ,EAAC,aAAEC,GAAcJ,EAAA,OAC5FK,EAAAA,cAAA,KAAGC,UAAW,wCAAwCL,KAClDI,EAAAA,cAAA,QAAMC,UAAU,yCAAyCJ,GACxDE,EACGC,EAAAA,cAACE,EAAAA,eAAcC,OAAAC,OAAA,GACPL,EAAY,CAChBE,UAAU,wCACVI,KAAM,CAAEC,MAAO,CAAEC,wBAAyBT,OAG9CE,EAAAA,cAAA,QAAMC,UAAU,yCAAyCH,GAE7D,EClBKU,EAAgCb,IAaD,IAbE,aAC1CI,EAAY,YACZU,EAAW,uBACXC,EACAC,UAAU,oBACNC,EAAmB,sBACnBC,EAAqB,oBACrBC,EAAmB,mBACnBC,EAAkB,qBAClBC,EAAoB,cACpBC,EAAa,yBACbC,IAEevB,EACnB,MAAMwB,EACO,IADPA,EAEkB,IAFlBA,EAGU,IAHVA,EAIO,IAJPA,EAKkB,IAGlBC,EAAmB,WAAH,IAAIC,EAAMC,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,GAAE,OAAMD,EAASA,EAAOI,QAAQ,GAAK,EAAE,EAiG1E,MAAO,CACHC,oBAAqB,CAAEzB,UAAW,qCAClC0B,MAAO3B,EAAAA,cAAA,OAAKC,UAAU,2CAA2CW,GACjEgB,QAASnB,EAAYoB,QAAO,CAACC,EAA0BC,KACnD,IAAKA,EAAWC,aACZ,OAAOF,EAEX,OAAQpB,EAAuBqB,EAAWC,eACtC,KAAKb,EACDW,EAAMG,KAxGN,SAACF,GAAuD,IAA/BG,EAAAZ,UAAAC,OAAA,QAAAC,IAAAF,UAAA,IAAAA,UAAA,GACrC,MAAMa,EAAoBf,EAAiBW,EAAWK,kBAGhDC,EAAoBF,IAAsBG,MAAMH,GAChDI,GAAUR,EAAWS,kBAAoB,GAAK,EAAIT,EAAWS,iBAAmBT,EAAWU,OAC3FC,KAAuBR,GAAcK,GAAUA,EAAS,GAE9D,OACIvC,EAAAA,cAAA,OAAKC,UAAU,yCAAyC0C,IAAKZ,EAAWC,cACpEhC,EAAAA,cAAA,KAAGC,UAAU,0CACR,GAAG8B,EAAWa,cAAcP,EAAoB,GAAGxB,KAAyBsB,IAAsB,MAEtGO,GACG1C,EAAAA,cAAA,KAAGC,UAAU,sDACRc,EACDf,EAAAA,cAACE,EAAAA,eAAcC,OAAAC,OAAA,GACPL,EAAY,CAChBE,UAAU,gDACVI,KAAM,CAAEC,MAAO,CAAEC,wBAAyBgC,GAAU,QAM5E,CA+E2BM,CAAQd,EAAYtB,EAAYc,OAAS,IACpD,MACJ,KAAKJ,EACDW,EAAMG,KA9DMF,IACxB/B,EAAAA,cAAA,OAAKC,UAAU,yCAAyC0C,IAAKZ,EAAWC,cACpEhC,EAAAA,cAAA,KAAGC,UAAU,sDACRa,EACA,IACAM,EAAiBW,EAAWe,aAEjC9C,EAAAA,cAAA,KAAGC,UAAU,2DACRc,EACDf,EAAAA,cAACE,EAAAA,eAAcC,OAAAC,OAAA,GACPL,EAAY,CAChBE,UAAU,qDACVI,KAAM,CAAEC,MAAO,CAAEC,wBAAyBwB,EAAWU,QAAU,SAkDpDM,CAAmBhB,IAC9B,MACJ,KAAKZ,EACDW,EAAMG,KA/CFF,IAChB/B,EAAAA,cAAA,OAAKC,UAAU,yCAAyC0C,IAAKZ,EAAWC,cACpEhC,EAAAA,cAAA,KAAGC,UAAU,oDACRe,EACA,IACAe,EAAWiB,eAEhBhD,EAAAA,cAAA,KAAGC,UAAU,yDACRc,EACDf,EAAAA,cAACE,EAAAA,eAAcC,OAAAC,OAAA,GACPL,EAAY,CAChBE,UAAU,mDACVI,KAAM,CAAEC,MAAO,CAAEC,wBAAyBwB,EAAWU,QAAU,SAmCpDQ,CAAWlB,IACtB,MACJ,KAAKZ,EACDW,EAAMG,KAhCLF,IACb/B,EAAAA,cAAA,OAAKC,UAAU,yCAAyC0C,IAAKZ,EAAWC,cACpEhC,EAAAA,cAAA,KAAGC,UAAU,0CAA0CgB,GACvDjB,EAAAA,cAAA,KAAGC,UAAU,sDACRc,EACDf,EAAAA,cAACE,EAAAA,eAAcC,OAAAC,OAAA,GACPL,EAAY,CAChBE,UAAU,gDACVI,KAAM,CAAEC,MAAO,CAAEC,wBAAyBwB,EAAWU,QAAU,SAwBpDS,CAAQnB,IACnB,MACJ,KAAKZ,EACDW,EAAMG,KAzFaF,IAC/B/B,EAAAA,cAAA,OAAKC,UAAU,yCAAyC0C,IAAKZ,EAAWC,cACpEhC,EAAAA,cAAA,KAAGC,UAAU,sDACRiB,EACA,IACAa,EAAWoB,YAEhBnD,EAAAA,cAAA,KAAGC,UAAU,2DACRc,EACDf,EAAAA,cAACE,EAAAA,eAAcC,OAAAC,OAAA,GACPL,EAAY,CAChBE,UAAU,4DACVI,KAAM,CAAEC,MAAO,CAAEC,wBAAyBwB,EAAWU,QAAU,SA6EpDW,CAA0BrB,IAM7C,OAAOD,CAAK,GACb,IACN,EChHCuB,EAAgFC,IAClF,MAAMC,EAAqBvD,IAAAA,aAAkB,KACzCsD,EAAME,aAAaF,EAAMG,cAAc,GACxC,CAACH,IAEJ,OACItD,IAAAA,cAAA,SAAOC,UAAWyD,IAAW,GAAGJ,EAAMrD,gCAAiC,uBACnED,IAAAA,cAAA,SACIC,UAAWyD,IAAW,GAAGJ,EAAMrD,4BAA6B,kBAC5D0D,KAAK,WAAU,aACHL,EAAMM,UAAUC,wCAAuC,eACrDP,EAAMG,cACpBK,QAASR,EAAMG,cACfM,SAAUR,IAEdvD,IAAAA,cAAA,QAAMC,UAAWyD,IAAW,GAAGJ,EAAMrD,uBAAwB,eACzD,EASV+D,EAAoFV,IACtF,MAAM,UAAEM,GAAcN,EAEhBW,EAA4B,GAAGX,EAAMrD,qCAErCiE,EACFZ,EAAMa,QAAQC,IAAIC,OAAOC,0BAAkF,SAAtDhB,EAAMa,QAAQC,IAAIC,OAAOC,yBAElF,OACItE,IAAAA,cAAAA,IAAAA,SAAA,KACKsD,EAAMiB,uBACHvE,IAAAA,cAAA,UACIA,IAAAA,cAACqD,EAAmClD,OAAAC,OAAA,GAAKkD,UAG7C9B,EAEJxB,IAAAA,cAAA,WACAA,IAAAA,cAAA,UAAK4D,EAAUY,+BACfxE,IAAAA,cAAA,UAAK4D,EAAUa,yBACfzE,IAAAA,cAAA,MAAIC,UAAWgE,GAA4BL,EAAUc,2BACrD1E,IAAAA,cAAA,UAAK4D,EAAUe,gCACdrB,EAAMsB,+BAA4BpD,EAAYxB,IAAAA,cAAA,UAAK4D,EAAUiB,wBAC9D7E,IAAAA,cAAA,MAAIC,UAAWgE,GAA4BL,EAAUkB,0BACpDZ,GAA8BlE,IAAAA,cAAA,UAAK4D,EAAUmB,+BAE9C/E,IAAAA,cAAA,MAAIC,UAAWgE,GAA4BL,EAAUoB,uBACrDhF,IAAAA,cAAA,UAAK4D,EAAUqB,yBAChB,EASLC,EAAmF5B,IACrF,MAAM,UAAEM,GAAcN,EACtB,OACItD,IAAAA,cAAAA,IAAAA,SAAA,KACKsD,EAAMiB,uBACHvE,IAAAA,cAAA,UACIA,IAAAA,cAACqD,EAAmClD,OAAAC,OAAA,GAAKkD,UAG7C9B,EAEJxB,IAAAA,cAAA,WACAA,IAAAA,cAAA,MAAIC,UAAW,GAAGqD,EAAMrD,kBAAmB2D,EAAUa,yBACtD,EASEU,EAA6E7B,IACtF,MAAM8B,EAAe,GAAG9B,EAAMrD,iBAE9B,IAAIoF,EAQJ,OALIA,EAFiG,QAAhFC,EAAAA,EAAAA,UAAS,CAAEC,QAASC,EAAAA,YAAYC,SAAUtB,QAASb,EAAMa,QAAQuB,UAEpE1F,IAAAA,cAACkF,EAAsC/E,OAAAC,OAAA,GAAKkD,IAE5CtD,IAAAA,cAACgE,EAAuC7D,OAAAC,OAAA,GAAKkD,IAI3DtD,IAAAA,cAAA,SAAOC,UAAWqD,EAAMrD,WACpBD,IAAAA,cAAA,MAAIC,UAAWmF,GAAeC,GAC1B,mlBC5DhB,MAAMM,EAAeA,CAACxB,EAAuB5B,EAA4BqD,SACtDpE,IAAXe,EACO,GAEJ4B,EAAQ0B,iBAAiBC,eAAevD,EAAQqD,GAQrDG,EAA0EzC,IAC5E,MAAM0C,EAAU1C,EAAMjD,KAAK2F,QAErBC,GAAuBC,EAAAA,EAAAA,QAAO5C,EAAMM,UAAUuC,qCAAsCH,EAAQI,UAAUC,WACtGC,EAAetG,IAAAA,aAAkB,KACnCgG,EAAQO,YAAcP,EAAQO,UAAU,GACzC,CAACP,IAEJ,OACIhG,IAAAA,cAAA,SAAOC,UAAWyD,IAAW,GAAGJ,EAAMrD,gCAAiC,uBACnED,IAAAA,cAAA,SACIC,UAAWyD,IAAW,GAAGJ,EAAMrD,4BAA6B,kBAC5D0D,KAAK,WACLG,QAASkC,EAAQQ,oBAAsBR,EAAQO,WAAU,aAC7CN,EAAoB,eAClBD,EAAQQ,oBAAsBR,EAAQO,WACpDxC,SAAUuC,EACVG,UAAWT,EAAQQ,qBAEvBxG,IAAAA,cAAA,QAAMC,UAAWyD,IAAW,GAAGJ,EAAMrD,uBAAwB,eACzD,EASVyG,EAA8EpD,IAAqC,IAAAqD,EAAAC,EAAAC,EAAAC,EAAAC,EACrH,MAAMf,EAAU1C,EAAMjD,KAAK2F,QACrBgB,GAAmBC,EAAAA,EAAAA,qBAAyC,QAAtBN,EAACX,EAAQkB,qBAAa,IAAAP,OAAA,EAArBA,EAAuBQ,OAAQ7D,EAAMa,QAAQiD,cAAcC,eAAeC,aAEjHC,EAAqB,GAAGjE,EAAMrD,qCAE9BuH,EAAyC,QAA9BZ,EAAwB,QAAxBC,EAAGb,EAAQkB,qBAAa,IAAAL,OAAA,EAArBA,EAAuBY,YAAI,IAAAb,EAAAA,EAAIZ,EAAQI,UAAUsB,YAErE,OACI1H,IAAAA,cAAA,OAAKC,UAAWsH,GACZvH,IAAAA,cAAC2H,EAAAA,GAAK,CACFN,eAAgB/D,EAAMa,QAAQiD,cAAcC,eAC5CpH,UAAW,GAAGsH,mBACdK,QAASJ,EAETK,KAA0B,QAArBf,EAAAd,EAAQkB,qBAAa,IAAAJ,OAAA,EAArBA,EAAuBgB,kBAAmB,QAC/CC,YAAaf,EACbgB,aAAc1E,EAAMa,QAAQuB,QAAQsC,aACpCC,cAAkC,QAArBlB,EAAEzD,EAAM2E,qBAAa,IAAAlB,EAAAA,EAAImB,EAAAA,qBACtCC,oBAAoB,UAEtB,EASDC,EAAkF9E,IAAqC,IAAA+E,EAAAC,EAAAC,EAAAC,EAAAC,EAChI,MACIpI,MAAM,QAAE2F,EAAO,WAAE0C,EAAU,gBAAEC,IAC7BrF,EACE8C,EAAYJ,EAAQI,UAEpBwC,GAAaC,EAAAA,EAAAA,mCAAkCzC,EAAUC,UAAWD,EAAU0C,aAAcH,GAC5FI,EAAsD,QAAhCV,EAAG/E,EAAMa,QAAQuB,QAAQsD,eAAO,IAAAX,OAAA,EAA7BA,EAA+BY,uBACxDC,EAAqD,QAAhCZ,EAAGhF,EAAMa,QAAQuB,QAAQsD,eAAO,IAAAV,OAAA,EAA7BA,EAA+Ba,sBACvDC,GAAeC,EAAAA,EAAAA,iBACjBT,EACAxC,EACAA,EAAU0C,aACVC,EACAzF,EAAMgG,oCACNhG,EAAMjD,KAAKkJ,4BACXL,GAEEM,EAAgD,CAClDC,OAAQnG,EAAMM,UAAU8F,mBACxBC,KAAMrG,EAAMM,UAAUgG,oBACtBC,SAAUvG,EAAMM,UAAUkG,mBAC1BC,MAAOzG,EAAMM,UAAUoG,iBAErBC,GAAqBC,EAAAA,EAAAA,uBAAsBd,EAAcI,EAAuBlG,EAAMgG,qCAatFa,EAX8C,CAChDC,SAAU9G,EAAMM,UAAUyG,oBAC1BC,eAAgBhH,EAAMM,UAAU2G,0BAChCC,SAAUlH,EAAMM,UAAU6G,oBAC1BC,WAAYpH,EAAMM,UAAU+G,sBAC5BC,QAAStH,EAAMM,UAAUiH,mBACzBC,aAAStJ,EACTuJ,QAASzH,EAAMM,UAAUoH,qBAGTC,EAAAA,EAAAA,oBAAmB7B,EAAchD,EAAU8E,iBAAkBtC,IAG3E3E,EAA4B,GAAGX,EAAMrD,gCAErCuH,EAAyC,QAA9Be,EAAwB,QAAxBC,EAAGxC,EAAQkB,qBAAa,IAAAsB,OAAA,EAArBA,EAAuBf,YAAI,IAAAc,EAAAA,EAAInC,EAAUsB,YAE7D,IAAIyD,EAAa,GACjB,IAAKC,EAAAA,iBAAiBC,kBAAkB7D,KAAiB4D,EAAAA,iBAAiBC,kBAAkBjF,EAAUC,aAClG8E,GAAaG,EAAAA,EAAAA,uBAAsB9D,EAAapB,EAAUC,UAAW/C,EAAMa,QAAQiD,eAE/EmE,EAAAA,GAASC,YAAaC,EAAAA,EAAAA,IAAiBnI,EAAMa,QAAQiD,cAAcC,iBAAiB,KAAAqE,EACpF,MAAMC,EAAU,IAAIC,IAAIT,EAAYU,OAAOC,SAASC,MACpDJ,EAAQK,aAAaC,IAAI,YAAa,GAAsB,QAAtBP,EAAGtF,EAAU8F,iBAAS,IAAAR,EAAAA,EAAI,KAChEP,EAAaQ,EAAQI,KAK7B,MAAM7H,EACFZ,EAAMa,QAAQC,IAAIC,OAAOC,0BAAkF,SAAtDhB,EAAMa,QAAQC,IAAIC,OAAOC,yBAE5E6H,EAAiB,IAAIC,EAAAA,oBAAoBpG,EAAQI,UAAWJ,EAAQkB,cAAeiE,GAEzF,OACInL,IAAAA,cAAAA,IAAAA,SAAA,KACKsD,EAAMiB,uBACHvE,IAAAA,cAAA,UACIA,IAAAA,cAAC+F,EAAgC5F,OAAAC,OAAA,GAAKkD,UAG1C9B,EAEJxB,IAAAA,cAAA,UACIA,IAAAA,cAAC0G,EAAoCvG,OAAAC,OAAA,GAAKkD,KAE9CtD,IAAAA,cAAA,UAAKoG,EAAUe,QACfnH,IAAAA,cAAA,UACIA,IAAAA,cAAA,OAAKC,UAAW,GAAGqD,EAAMrD,2BACrBD,IAAAA,cAAA,KAAGC,UAAW,GAAGqD,EAAMrD,0BAA2B8L,KAAMZ,GACnD3D,GAELxH,IAAAA,cAAA,QAAMC,UAAW,GAAGqD,EAAMrD,iCACA,QAD+BwI,EACpDzC,EAAQkB,qBAAa,IAAAuB,GAAY,QAAZA,EAArBA,EAAuB4D,kBAAU,IAAA5D,OAAA,EAAjCA,EAAmC6D,KAAIC,IAAS,IAAAC,EAAA,OAA4B,QAA5BA,EAAID,EAAUE,sBAAc,IAAAD,OAAA,EAAxBA,EAA0BE,KAAK,IAC/EC,QAAOC,IAAmBC,EAAAA,iBAAiBC,mBAAmBF,KAC9DG,KAAKzJ,EAAMM,UAAUoJ,0CAE5BhH,EAAQQ,oBACNxG,IAAAA,cAAA,OAAKC,UAAU,oBAAoBqD,EAAMM,UAAUqJ,sCAI/DjN,IAAAA,cAAA,MAAIC,UAAWgE,GAA4B0B,EAAarC,EAAMa,QAASiC,EAAU8G,MAAOxE,EAAWyE,eACnGnN,IAAAA,cAAA,UAAKiK,GACJ3G,EAAMsB,+BAA4BpD,EAAYxB,IAAAA,cAAA,UAAKmK,GACpDnK,IAAAA,cAAA,MAAIC,UAAWgE,GAA4BmC,EAAUgH,UACpDlJ,GAA8BlE,IAAAA,cAAA,UAAKoG,EAAUiH,qBAE9CrN,IAAAA,cAAA,MAAIC,UAAWgE,GAA4B0B,EAAarC,EAAMa,QAASiC,EAAUkH,YAAa5E,EAAWyE,eACzGnN,IAAAA,cAAA,UACIA,IAAAA,cAACuN,EAAAA,qBAAoBpN,OAAAC,OAAA,GACbkD,EAAK,CACTrD,UAAW,GAAGqD,EAAMrD,+BACpBI,KAAM,CAAEmN,SAAU,CAACrB,IACnBvI,UAAS6J,EAAAA,EAAA,GACFnK,EAAMM,WAAS,IAClB8J,kCAAmCpK,EAAMM,UAAU+J,iCACnDC,wCAAwC1H,EAAAA,EAAAA,QACpC5C,EAAMM,UAAUiK,sCAChBrG,QAAAA,EAAe,MAGvBsG,oBAAqBxK,EAAMwK,oBAC3BC,QAAM,MAGf,EAIX,IAAIC,EAOJ,MAAMC,EACF3K,IACoB,IAAA4K,EAAAC,EACpB,MACIvK,WAAW,uCAAEwK,EAAsC,kCAAEC,IACrD/K,GAEGgL,EAAmBC,IAAkBC,EAAAA,EAAAA,WAAS,GAE/CpI,EAAY9C,EAAMjD,KAAK2F,QAAQI,UAE/BoB,EAAoD,QAAzC0G,EAAmC,QAAnCC,EAAG7K,EAAMjD,KAAK2F,QAAQkB,qBAAa,IAAAiH,OAAA,EAAhCA,EAAkC1G,YAAI,IAAAyG,EAAAA,EAAI9H,EAAUsB,YACxE,IAAIyD,EAAa,GACjB,IAAKC,EAAAA,iBAAiBC,kBAAkB7D,KAAiB4D,EAAAA,iBAAiBC,kBAAkBjF,EAAUC,aAClG8E,GAAaG,EAAAA,EAAAA,uBAAsB9D,EAAapB,EAAUC,UAAW/C,EAAMa,QAAQiD,eAE/EmE,EAAAA,GAASC,YAAaC,EAAAA,EAAAA,IAAiBnI,EAAMa,QAAQiD,cAAcC,iBAAiB,KAAAoH,EACpF,MAAM9C,EAAU,IAAIC,IAAIT,EAAYU,OAAOC,SAASC,MACpDJ,EAAQK,aAAaC,IAAI,YAAa,GAAsB,QAAtBwC,EAAGrI,EAAU8F,iBAAS,IAAAuC,EAAAA,EAAI,KAChEtD,EAAaQ,EAAQI,KAG7B,MAAMI,EAAiB,IAAIC,EAAAA,oBAAoB9I,EAAMjD,KAAK2F,QAAQI,UAAW9C,EAAMjD,KAAK2F,QAAQkB,cAAeiE,GAEzGuD,EAAqB1O,IAAAA,aAAkB,KACrCuL,EAAAA,GAASC,YACTK,OAAOC,SAASC,KAAOZ,KAE5B,CAACA,IAEEwD,EAAS3O,IAAAA,aAAkB,KAC7B,MAAM4O,GAA6BN,EAC/BM,GACIZ,GACAA,GAAuB,GAE3BO,EAAeK,GACfZ,EAAyBO,IAEzBP,OAAyBxM,EACzB+M,EAAeK,MAEpB,CAACN,EAAmBC,IAEvB,GAAI1B,EAAAA,iBAAiBC,mBAAmB3B,GACpC,OAAO,KAGX,MAAMlL,EAAY,GAAGqD,EAAMrD,gCACrB4O,EAA4B,GAAG5O,uBAErC,OACID,IAAAA,cAAA,OAAKC,UAAWA,GACZD,IAAAA,cAAC8O,EAAAA,OAAM,CAAC7O,UAAW,GAAGA,YAAqB8O,QAASJ,IACnDL,GACGtO,IAAAA,cAAA,OAAKC,UAAW4O,GACZ7O,IAAAA,cAAC8O,EAAAA,OAAM,CACH7O,UAAW,GAAG4O,kBACdE,QAASL,EAAkB,aACfN,GAEXC,GAELrO,IAAAA,cAACuN,EAAAA,qBAAoBpN,OAAAC,OAAA,GACbkD,EAAK,CACTrD,UAAW,GAAG4O,eACdxO,KAAM,CAAEmN,SAAU,CAACrB,IACnBvI,UAAS6J,EAAAA,EAAA,GACFnK,EAAMM,WAAS,IAClB8J,kCAAmCpK,EAAMM,UAAU+J,iCACnDC,wCAAwC1H,EAAAA,EAAAA,QACpC5C,EAAMM,UAAUiK,sCAChBrG,QAAAA,EAAe,MAGvBsG,oBAAqBxK,EAAMwK,wBAIrC,EASDkB,EAAiF1L,IAAqC,IAAA2L,EAAAC,EAC/H,MACI7O,MAAM,QAAE2F,IACR1C,EACE8C,EAAYJ,EAAQI,UACpBoB,EAAyC,QAA9ByH,EAAwB,QAAxBC,EAAGlJ,EAAQkB,qBAAa,IAAAgI,OAAA,EAArBA,EAAuBzH,YAAI,IAAAwH,EAAAA,EAAI7I,EAAUsB,YAE7D,OACI1H,IAAAA,cAAAA,IAAAA,SAAA,KACKsD,EAAMiB,uBACHvE,IAAAA,cAAA,UACIA,IAAAA,cAAC+F,EAAgC5F,OAAAC,OAAA,GAAKkD,UAG1C9B,EAEJxB,IAAAA,cAAA,UACIA,IAAAA,cAAC0G,EAAoCvG,OAAAC,OAAA,GAAKkD,KAE9CtD,IAAAA,cAAA,UACIA,IAAAA,cAAA,OAAKC,UAAW,GAAGqD,EAAMrD,2BACrBD,IAAAA,cAAA,QAAMC,UAAW,GAAGqD,EAAMrD,2BAA4BuH,GACtDxH,IAAAA,cAAA,QAAMC,UAAW,GAAGqD,EAAMrD,gCACrBiG,EAAAA,EAAAA,QAAO5C,EAAMM,UAAUuL,+BAAgC/I,EAAUgH,aAI9EpN,IAAAA,cAAA,UACIA,IAAAA,cAACiO,EAAsC9N,OAAAC,OAAA,GAAKkD,KAEjD,EASE8L,EAAuE9L,IAChF,MAAM+L,EAA+F,QAAhF/J,EAAAA,EAAAA,UAAS,CAAEC,QAASC,EAAAA,YAAYC,SAAUtB,QAASb,EAAMa,QAAQuB,UAChFzF,EAAYyD,IACdJ,EAAMrD,UACNqD,EAAMjD,KAAK2F,QAAQQ,mBAAqB,GAAGlD,EAAMrD,+BAAiC,GAAGqD,EAAMrD,iCAC3FqD,EAAMrD,UACNqD,EAAMjD,KAAK2F,QAAQO,WAAa,GAAGjD,EAAMrD,sBAAwB,GAAGqD,EAAMrD,yBAG9E,OACID,IAAAA,cAAA,MAAIC,UAAWA,GACVoP,EACGrP,IAAAA,cAACgP,EAAuC7O,OAAAC,OAAA,GAAKkD,IAE7CtD,IAAAA,cAACoI,EAAwCjI,OAAAC,OAAA,GAAKkD,IAEjD,EChXPgM,EAAsBhM,GAAoCiD,IAC5D,IAAK,MAAMP,KAAW1C,EAAMjD,KAAKmN,SAC7BxH,EAAQO,WAAaA,GAShBgJ,EAAiEjM,IAC1E,MAAM8B,EAAe,GAAG9B,EAAMrD,iBACxBuP,EAAkB,GAAGlM,EAAMrD,oBAC3BuN,EAAWlK,EAAMjD,KAAKmN,SACtBiC,EAAoBjC,EAASb,QAAO3G,GAAWA,EAAQQ,qBAE7D,OACIxG,IAAAA,cAAA,SAAOC,UAAWqD,EAAMrD,WACpBD,IAAAA,cAACmF,EAAgC,CAC7BhB,QAASb,EAAMa,QACfuL,SAAUpM,EAAMoM,SAChBC,GAAIH,EACJvP,UAAWuP,EACX5L,UAAWN,EAAMM,UACjBvD,KAAM,CAAC,EACPuE,0BAA2BtB,EAAMsB,0BACjCL,uBAAwBjB,EAAMiB,uBAC9Bd,cAAemM,EAAAA,gBAAgBC,IAAIJ,GAAoBzJ,GAAiCA,EAAQO,aAChG/C,YAAa8L,EAAmBhM,GAChCwM,wCAAyCxM,EAAMwM,0CAElDtC,EAASlB,KAAI,CAACtG,EAAS+J,IAEhB/P,IAAAA,cAACoP,EAA6B,CAC1BjL,QAASb,EAAMa,QACfuL,SAAUpM,EAAMoM,SAChBC,GAAI,GAAGvK,KAAgB2K,IACvBpN,IAAKqD,EAAQI,UAAUe,OACvBlH,UAAWmF,EACXxB,UAAWN,EAAMM,UACjBqE,cAAe3E,EAAM2E,cACrBrD,0BAA2BtB,EAAMsB,0BACjCkJ,oBAAqBxK,EAAMwK,oBAC3BxE,oCAAqChG,EAAMgG,oCAC3C/E,uBAAwBjB,EAAMiB,uBAC9BlE,KAAM,CACFqI,WAAYpF,EAAMjD,KAAK2P,MACvBhK,UACA2C,gBAAiBrF,EAAMjD,KAAKsI,gBAC5BY,4BAA6BjG,EAAMjD,KAAKkJ,6BAE5CuG,wCAAyCxM,EAAMwM,4CAIvD,gBCxGT,MAAMG,EAAgDA,IAWrDjQ,IAAAA,cAAA,QAAMC,UAAU,qDACZD,IAAAA,cAAC8O,EAAAA,EAAM,CAAC7O,UAAU,2DAA2D0B,MAAO,QAASoN,QAXjFmB,KAChB,MAAMC,EAAeC,SAASC,uBAAuB,oBAAoB,GAAGC,UACxEH,GACIA,GACAtE,OAAO0E,UAQPvQ,IAAAA,cAAA,OACIwQ,MAAM,6BACNC,MAAM,KACNC,OAAO,KACPC,KAAK,eACL1Q,UAAU,gBACV2Q,QAAQ,aAER5Q,IAAAA,cAAA,QAAM6Q,EAAE,0CACR7Q,IAAAA,cAAA,QAAM6Q,EAAE,kXCpBrB,IAAWC,EA4IArR,GA5IlB,SAAkBqR,GACdA,EAAA,sDACAA,EAAA,2DACH,CAHD,CAAkBA,IAAAA,EAAc,KA4IhC,SAAkBrR,GACdA,EAAA,QACAA,EAAA,QACAA,EAAA,QACAA,EAAA,QACAA,EAAA,QACAA,EAAA,OACH,CAPD,CAAkBA,IAAAA,EAAU,SC5FhBsR,mmBAAZ,SAAYA,GACRA,EAAAA,EAAA,uBACAA,EAAAA,EAAA,8BACH,CAHD,CAAYA,IAAAA,EAAoB,KAkDzB,MAAMC,EAAmBA,CAACC,EAAwBC,KACjDA,GAAUD,GACVE,QAAQC,IAAIF,EAAQD,IAS5B,IAAMI,EAAN,cAA2BrR,EAAAA,cAwMvBsR,YAAmBhO,GAA8D,IAAAiO,EAAAC,EAC7EC,MAAMnO,GAlMO,KAAAoO,WAAqB,mBAErB,KAAAC,8BAAwC,kEA4dlD,KAAAC,gCAAmCC,GAAiCC,KAAKxO,MAAMe,OAAO0N,QAASC,KAAOH,EAAMI,OAAOnS,MAKzG,KAAAoS,iBAAmB,KAChCJ,KAAKK,UAAYpB,EAAqBqB,QAAQ,EAMjC,KAAAC,qBAAuB,KACpCP,KAAKK,UAAYpB,EAAqBuB,YAAY,EAKrC,KAAAC,aAAe,IAExBvS,EAAAA,cAAA,WAEIA,EAAAA,cAACiQ,EAAc,OAInB,KAAAuC,iBAAmB,KACvB,MAAMC,EAAa5G,OAAOC,SAASC,KAC7B2G,EAAM,IAAI9G,IAAI6G,GAGpBC,EAAI1G,aAAaC,IAAI,YAAa,KAGlC,MAAM0G,EAAS,GAAGD,EAAIE,aAAaF,EAAIG,OAAOH,EAAII,YAAYJ,EAAI1G,aAAa+G,aAG/ElH,OAAOmH,QAAQC,UAAU,CAAEC,KAAMP,GAAU,GAAIA,EAAO,EAIlD,KAAAQ,YAAc,KAClBrB,KAAKsB,SAAS,CAAEC,SAAS,IAEzBvB,KAAKwB,uBACAC,MAAKC,IAIF,MAAMC,IAAwBD,EAC9B1B,KAAKU,mBACLV,KAAKsB,SAAS,CACVM,aAAa,EACbC,kBAAmBF,GACrB,IAELG,OAAMC,IAIH/B,KAAKsB,SAAS,CACVM,aAAa,EACbC,mBAAmB,GACrB,IAELG,SAAQ,KAELhC,KAAKsB,SAAS,CAAEC,SAAS,GAAQ,GACnC,EAGF,KAAAC,qBAAuB,KAAK,IAAAS,EAChC,MAAM,QAAEC,EAAU,GAAE,cAAEC,EAAgB,IAA4D,QAAxDF,EAAGjC,KAAKxO,MAAMa,QAAQiD,cAAcC,eAAe6M,aAAK,IAAAH,EAAAA,EAAI,CAAC,EAEvG,OAAO,IAAII,SAAQ,CAACC,EAASC,MACzBf,EAAAA,EAAAA,IAAqB,CAAEgB,cAAexC,KAAKxO,MAAMa,QAAQiD,eAAiB4M,GAAWC,GAChFV,MAAKgB,GACGA,GAGLzC,KAAKU,mBACE4B,EAAQG,IAHJF,EAAO,IAAIG,MAAM,gCAK/BZ,OAAMC,GAEIQ,EAAOR,IAChB,GACR,EAMW,KAAAY,6BAA+B,KAC5C,MACI7Q,WAAW,gCAAE8Q,IACb5C,KAAKxO,MACT,OAAOtD,EAAAA,cAAA,QAAMC,UAAU,6CAA6CyU,EAAuC,EAK9F,KAAAC,uBAAyB,KACtC,MACI/Q,WAAW,0BAAEgR,IACb9C,KAAKxO,MACT,OACItD,EAAAA,cAAC8O,EAAAA,OAAM,CACHC,QAAS+C,KAAKqB,YACd1M,SAAUqL,KAAK+C,MAAMxB,QACrBpT,UAAU,mCACV0B,MAAOiT,GAENA,EACI,EAOA,KAAAE,yBAA2B,KACxC,MACIlR,WAAW,kCAAEmR,IACbjD,KAAKxO,MACT,OACItD,EAAAA,cAAC8O,EAAAA,OAAM,CACHC,QAAS+C,KAAKqB,YACd1M,SAAUqL,KAAK+C,MAAMxB,QACrBpT,UAAU,qCACV0B,MAAOoT,GAENA,EACI,EAMA,KAAAC,uBAAyB,KACtC,MACIpR,WAAW,gCAAEqR,IACbnD,KAAKxO,MACT,OACItD,EAAAA,cAAC8O,EAAAA,OAAM,CACHC,QAAS+C,KAAKqB,YACd1M,SAAUqL,KAAK+C,MAAMxB,QACrBpT,UAAU,qCACV0B,MAAOsT,GAENA,EACI,EASA,KAAAC,mBAAqB,CAClCC,EACA7L,KACA,IAAA8L,EACA,IAAKD,GAAcrD,KAAKK,YAAcpB,EAAqBuB,aACvD,OAEJ,MAAM,eAAE+C,GAAmBvD,KAAK+C,OAE1B,QAAEb,EAAU,IAAuC,QAAnCoB,EAAGtD,KAAKxO,MAAMa,QAAQuB,QAAQwO,aAAK,IAAAkB,EAAAA,EAAI,CAAC,EACxDE,OACoC9T,IAArCsQ,KAAKxO,MAAMe,OAAOyM,gBACfgB,KAAKxO,MAAMe,OAAOyM,iBAAmBA,EAAeyE,2BACxDzD,KAAKxO,MAAMe,OAAOyM,iBAAmBA,EAAe0E,6BAClD5Q,QACkCpD,IAAnCsQ,KAAK9B,MAAOyF,oBAAuE,KAAnC3D,KAAK9B,MAAOyF,qBAA0C,KAAZzB,EAC/F,OAAO0B,EAAAA,EAAAA,GAAU,CACbhE,WAAYI,KAAKJ,WACjByD,aACAvR,UAAW,CACP+R,eAAgB7D,KAAKxO,MAAMM,UAAU+R,eACrCC,gBAAiB9D,KAAKxO,MAAMM,UAAUgS,iBAE1CC,YAAaP,EACbQ,aAAchE,KAAKxO,MAAMe,OAAOyR,aAChCC,kCAAmCzM,EACnC1E,4BACAL,uBAAwBuN,KAAKkE,wBAC7BC,iBAAiB,EACjBC,kBAAmBb,GAAkBvD,KAAKgD,4BAC5C,EAOW,KAAAqB,oBAAsB,KACnC,GAAIrE,KAAKsE,mBAAqBtE,KAAKK,YAAcpB,EAAqBuB,aAClE,MPjwB+B+D,KAeA,IAfC,MACxCrG,EAAK,aACLjQ,EAAY,aACZuW,EACA3V,UAAU,oBACN4V,EAAmB,4BACnBC,EAA2B,6BAC3BC,EAA4B,qBAC5BC,EAAoB,4BACpBC,EAA2B,kBAC3BC,GACH,QACDC,EAAO,qBACPC,EAAoB,iBACpBC,GACoBV,EACpB,MAAMW,EAAWF,GAAwBC,EAAmB/G,EAAMiH,yBAA2BjH,EAAMkH,eAC7FC,OAAoD3V,IAA9BwO,EAAMoH,oBAAoCpH,EAAMoH,oBAAsB,EAC5FC,OAAsD7V,IAA/BwO,EAAMsH,qBAAqCtH,EAAMsH,qBAAuB,EAM/FC,EACFT,IAAyBC,EAAmBM,EAAuBF,EAAsBnH,EAAMsH,qBACnG,MAAO,CACHlB,kBAAmB,CAAEnW,UAAW,mCAChC8R,QAAS/R,EAAAA,cAAA,KAAGC,UAAU,2CAA2CsW,GACjEiB,SAAUxX,EAAAA,cAACN,EAAgB,CAACE,KAAK,WAAWC,MAAO2W,EAA6B1W,MAAOkX,EAAUjX,aAAcA,IAC/G0X,SAAUZ,EACN7W,EAAAA,cAACN,EAAgB,CAACE,KAAK,WAAWC,MAAO4W,EAA8B3W,MAAOyX,EAAgBxX,aAAcA,IAE5G,GAEJ2X,IAAKX,EACD/W,EAAAA,cAACN,EAAgB,CAACE,KAAK,aAAaC,MAAO6W,EAAsB5W,MAAOkQ,EAAM2H,UAAW5X,aAAcA,IAEvG,GAEJ6X,YACI5X,EAAAA,cAACN,EAAgB,CACbE,KAAK,eACLC,MAAO8W,EACP7W,MAAOkQ,EAAM1C,YACbvN,aAAcA,IAGtBuW,aAAcA,EAAetW,EAAAA,cAACN,EAAgB,CAACE,KAAK,gBAAgBC,MAAO+W,EAAmB9W,MAAOwW,SAAmB9U,EAC3H,EOgtBcqW,CAA4B/F,KAAKsE,kBAE5B,EAOH,KAAA0B,oBAAsB,KACnC,GAAIhG,KAAKpQ,qBAAuBoQ,KAAKK,YAAcpB,EAAqBuB,aACpE,OAAO9R,EAA8BsR,KAAKpQ,oBAE9B,EAOH,KAAAqW,iBAAmB,KAChC,MACInU,WAAW,cAAEoU,EAAa,oBAAEC,EAAmB,yBAAEC,GACjD7T,QAAQ,cAAE8T,IACVrG,KAAKxO,MAET,GAAI6U,GAAiBrG,KAAKK,YAAcpB,EAAqBuB,aACzD,MRlzBuB3S,KAMR,IANS,cAChCqY,EAAa,oBACbC,EAAmB,cACnBE,EAAa,yBACbD,EAAwB,iBACxBE,GACYzY,EACZ,MAAM0Y,GAAoBC,EAAAA,EAAAA,kBAAiB,QAASF,EAAmBG,EAAAA,kBAAkBC,eACnFC,GAAaC,EAAAA,EAAAA,wBAAuBN,EAAmBC,GAC7D,MAAO,CACHM,UAAW,CAAE1Y,UAAW,0BACxB+X,cAAehY,EAAAA,cAAA,KAAGC,UAAU,gCAAgC+X,GAC5DC,oBAAqBjY,EAAAA,cAAA,QAAMC,UAAU,gCAAgCgY,GACrEE,cACInY,EAAAA,cAAA,IAAAG,OAAAC,OAAA,CACIH,UAAU,wCAAuC,aACrC,GAAGiY,KAA4BC,IAC3CpM,KAAM,OAAOoM,KACTM,GAEHN,GAGZ,EQ2xBcS,CAAoB,CACvBZ,gBACAC,sBACAE,gBACAD,2BACAE,iBAAkBtG,KAAKsG,kBAIf,EAOH,KAAAS,yBAA2B,KAAK,IAAAC,EAAAC,EAAAC,EAC7C,GAAIlH,KAAKK,YAAcpB,EAAqBqB,SACxC,OAGJ,MAAM,aAAE6G,GAAiBnH,KAAKxO,MAAMjD,KAE9B6Y,EAAmD,QAAtBJ,EAAGG,EAAazF,cAAM,IAAAsF,GAExD,QAFwDA,EAAnBA,EAAqBK,MACtDC,GAAuBA,EAAK3R,OAASqK,KAAKH,uCAC9C,IAAAmH,OAAA,EAFqCA,EAEnCO,UACGC,EAAsD,QAAtBP,EAAGE,EAAazF,cAAM,IAAAuF,GAE3D,QAF2DA,EAAnBA,EAAqBI,MACzDC,GALkC,2DAKXA,EAAK3R,cAChC,IAAAsR,OAAA,EAFwCA,EAEtCM,WACG,QAAErF,EAAU,IAAuC,QAAnCgF,EAAGlH,KAAKxO,MAAMa,QAAQuB,QAAQwO,aAAK,IAAA8E,EAAAA,EAAI,CAAC,EACxDpU,QACkCpD,IAAnCsQ,KAAK9B,MAAOyF,oBAAuE,KAAnC3D,KAAK9B,MAAOyF,qBAA0C,KAAZzB,EAE/F,OACIlC,KAAK9B,OACDhQ,EAAAA,cAACuP,EAA0B,CACvBI,GAAImC,KAAKxO,MAAMqM,GACfD,SAAUoC,KAAKxO,MAAMoM,SACrBvL,QAAS2N,KAAKxO,MAAMa,QACpBlE,UAAU,+BACVgI,cAAe6J,KAAKxO,MAAMe,OAAO4D,cACjC6F,oBAAqBgE,KAAKxO,MAAMe,OAAOyJ,oBACvCxE,oCAAqC4P,EACrC3U,uBAAwBuN,KAAKkE,wBAC7BpR,0BAA2BA,EAC3BvE,KAAM,CACF2P,MAAO8B,KAAK9B,MACZxC,SAAUsE,KAAKyH,sBACf5Q,gBAAiBmJ,KAAKnJ,gBACtBY,4BAA6BuI,KAAKxO,MAAMjD,KAAKkJ,4BAA4BiK,QAE7E5P,UAAWkO,KAAKxO,MAAMM,UACtBkM,wCACIwJ,IAAoC7N,EAAAA,EAAAA,IAAiBqG,KAAKxO,MAAMa,QAAQiD,cAAcC,iBAGjG,EAOQ,KAAAmS,iBAAmB,KAChC,IAAK,MAAMxT,KAAW8L,KAAK2H,+BACvBzT,EAAQO,YAAa,EAEzBuL,KAAKkE,yBAA0B,CAAI,EAMtB,KAAA0D,kBAAoB,KACjC5H,KAAKkE,yBAA0B,CAAK,EA2DvB,KAAA2D,wBAA0B,KACvC,IAAK7H,KAAKxO,MAAMe,OAAOyJ,oBACnB,OAGJ,MAAMvG,EAAqB,uCAC3B,OACIvH,EAAAA,cAAA,OAAKC,UAAWsH,GACXuK,KAAK8H,mBAAmBrS,GACxBuK,KAAK+H,6BAA6BtS,GAClCuK,KAAKgI,8BAA8BvS,GAClC,EAmBG,KAAAwS,iBAAmB,KAChC,IAAKjI,KAAKxO,MAAMe,OAAO2V,kBACnB,OAAO,KAGX,MAAMC,EAAqB,gDAC3B,OACIja,EAAAA,cAAA,OAAKC,UAAWga,GACZja,EAAAA,cAAC8O,EAAAA,OAAM,CACH7O,UAAWia,IACP,GAAGD,mBACHnI,KAAKK,YAAcpB,EAAqBuB,aAAe,2BAA6B,IAExF6H,KAAK,SACLxY,MAAOmQ,KAAKxO,MAAMM,UAAUwW,sCAAqC,aACrDtI,KAAKxO,MAAMM,UAAUwW,sCACjCrL,QAAS+C,KAAKO,uBAElBrS,EAAAA,cAAC8O,EAAAA,OAAM,CACH7O,UAAWia,IACP,GAAGD,eACHnI,KAAKK,YAAcpB,EAAqBqB,SAAW,2BAA6B,IAEpF+H,KAAK,SACLxY,MAAOmQ,KAAKxO,MAAMM,UAAUyW,kCAAiC,aACjDvI,KAAKxO,MAAMM,UAAUyW,kCACjCtL,QAAS+C,KAAKI,mBAEhB,EAQG,KAAAoI,qBAAuB,KAA6B,IAAAC,EAAAC,EACjE,MACI5W,WAAW,eAAE6W,EAAc,oCAAEC,GAC7BrW,QAAQ,QAAE0N,IACVD,KAAKxO,MACHqX,EAAc,CAAEA,YAAa7I,KAAKxO,MAAOrD,UAAWia,IAAU,mBAAoBpI,KAAKxO,MAAMe,OAAOpE,YACpG2a,EAAwE,QAAvDL,GAAGM,EAAAA,EAAAA,IAAW,OAAQ/I,KAAKxO,MAAMa,QAAQiD,sBAAc,IAAAmT,EAAAA,EAAI,GAElF,OAAA9M,EAAAA,EAAA,GACOqE,KAAKxO,OAAK,IACbqX,cACA5I,QAASA,GACL/R,EAAAA,cAAC8a,EAAAA,GAAI3a,OAAAC,OAAA,GACG2R,EAAO,CACX9R,UAAU,4BACV+R,KAAMF,KAAKkE,wBAA0B0E,EAAsC3I,EAAQC,KACnF+I,IAAgB,QAAbP,EAAEzI,EAAQgJ,WAAG,IAAAP,EAAAA,EAAI,KACpBQ,UAAW,CAAEC,OAAQnJ,KAAKF,gCAAiCvK,eAAgByK,KAAKxO,MAAMa,QAAQuB,YAGtGwV,mBAAoBN,GAChB5a,EAAAA,cAAC8O,EAAAA,OAAM,CAAC7O,UAAU,sCAAsC8L,KAAM6O,GACzDH,GAGTU,YAAa,CAAElb,UAAW,6BAA4B,EAI7C,KAAAmb,gBAAkB,SAC/BhV,GAIA,IAAAiV,EAAA,IAHAC,EAAAha,UAAAC,OAAA,QAAAC,IAAAF,UAAA,IAAAA,UAAA,GACAiI,EAAgEjI,UAAAC,OAAA,EAAAD,UAAA,QAAAE,EAChE+Z,EAA2Bja,UAAAC,OAAA,EAAAD,UAAA,QAAAE,EAE3B,OAAK8Z,EAGE/R,SAAoD,QAAzB8R,EAA3B9R,EAA6BiS,+BAAuB,IAAAH,OAAA,EAApDA,EAAsDlC,MAAKsC,GAAgBA,IAAiBrV,EAAU0C,eAFlGyS,CAGf,EA3uBIzJ,KAAKK,UAAYpB,EAAqBuB,aACtC,MAAM,UAAEoJ,GAAmE,QAAxDnK,EAAGO,KAAKxO,MAAMa,QAAQiD,cAAcC,eAAe6M,aAAK,IAAA3C,EAAAA,EAAI,CAAC,EAC1EoK,EAA2B,MAAdD,EACnB,IAAIE,EAAmC,GACX,IAAAC,EAAd,QAAdrK,EAAIM,KAAK9B,aAAK,IAAAwB,GAAVA,EAAYsK,aACF,QAAVD,EAAA/J,KAAK9B,aAAK,IAAA6L,GAAe,QAAfA,EAAVA,EAAYC,WAAW,UAAE,IAAAD,GAAqB,QAArBA,EAAzBA,EAA2BE,2BAAmB,IAAAF,GAA9CA,EAAgDG,SAAQ,SAAS5C,EAAMrJ,GAClC,IAAAkM,EAAhB,iBAAb7C,EAAK8C,MACLN,EAAyB,QAAbK,EAAG7C,EAAK1M,aAAK,IAAAuP,OAAA,EAAVA,EAAYE,YAEnC,KAEJ,MAAM9G,EAAiBvD,KAAKsK,cAAcR,GAC1C9J,KAAK+C,MAAQ,CACTlB,mBAAmB,EACnBN,SAAS,EACTK,YAAaiI,EACbtG,eAAgBA,EAChBgH,cAAe,CAAC,GAEpBvK,KAAKwK,UAAY,GACjBxK,KAAKsG,kBAAmBmE,EAAAA,EAAAA,oBACpBzK,KAAKxO,MAAMa,QAAQuB,QAAQ8W,kBAC3B1K,KAAKxO,MAAMmZ,aACX3K,KAAKxO,MAAMoZ,WAEf5K,KAAKkE,yBAA0B,CACnC,CAvNc2G,uBACV,QAAK7K,KAAK9B,OAGH8B,KAAK9B,MAAM4M,YAAcC,IAAI/K,KAAKxO,MAAO,wCACpD,CAEcwZ,kBACV,MAAyD,YAAlDD,IAAI/K,KAAKxO,MAAO,6BAC3B,CAEcyZ,eACV,MAAyD,WAAlDF,IAAI/K,KAAKxO,MAAO,6BAC3B,CAEc0M,YACV,OAAO6M,IAAI/K,KAAKxO,MAAO,wCAC3B,CAEckK,eACV,OAAOqP,IAAI/K,KAAKxO,MAAO,wCAA0C,EACrE,CAEcqF,sBACV,OAAOkU,IAAI/K,KAAKxO,MAAO,+CAAiD,EAC5E,CAEcvD,mBACV,MAAM,GACF4P,EAAE,SACFD,EAAQ,QACRvL,EAAO,UACPuY,EACA9Y,WAAW,cAAEoZ,IACblL,KAAKxO,MACT,MAAO,CACHqM,KACAD,WACAvL,UACAuY,YACAM,gBAER,CAEc1G,mBACV,MAAM2G,EAAcnL,KAAKxO,MAAMjD,KAAK4c,YAAYzJ,OAChD,GAAIyJ,GAAeA,EAAYC,cAAgBpL,KAAK9B,MAAO,CACvD,MAAMmN,EAAgB,IAAIC,IAAIH,EAAYC,aAAa5Q,KAAK+Q,GAA8BA,EAAMC,iBAC1FC,EAAczL,KAAK9B,MAAMwN,yBAA2B,GAC1D,IAAIC,EAAQ,EAMZ,OALAF,EAAYvB,SAAQ0B,KACXA,EAAKC,2BAA6B,GAAK,GAAKR,EAAcS,IAAIF,EAAKJ,iBACpEG,GAASC,EAAKC,8BAGfF,EAEX,OAAO,CACX,CAEcrH,wBAAiB,IAAAyH,EAAAC,EAAAC,EAC3B,IAAKjM,KAAK9B,MACN,OAEJ,MAAM,QAAEtK,GAAYoM,KAAKxO,MAAMa,SACzB,4BAAEoF,EAA2B,aAAE0P,GAA2B,QAAb4E,EAAG/L,KAAKxO,aAAK,IAAAua,OAAA,EAAVA,EAAYxd,KAC5D6Y,EAAgCD,SAAoB,QAAR6E,EAAZ7E,EAAczF,cAAM,IAAAsK,GAEzD,QAFyDA,EAApBA,EAAsB3E,MACvDC,GAAuBA,EAAK3R,OAASqK,KAAKH,uCAC9C,IAAAmM,OAAA,EAFqCA,EAEnCzE,UACGtQ,EAAyBrD,GAAWA,EAAQsD,SAAWtD,EAAQsD,QAAQC,uBACvEC,EAAwBxD,GAAWA,EAAQsD,SAAWtD,EAAQsD,QAAQG,sBACtE6U,EAA8B,QAAbD,EAAGjM,KAAK9B,aAAK,IAAA+N,OAAA,EAAVA,EAAYjC,WAEhCmC,GAA2F,IAAlEvY,EAAQtB,IAAIC,OAAO6Z,4CAE5C,QAAElK,EAAU,IAAOtO,EAAQwO,OAAS,CAAC,EAIrC2C,UAFiCrV,IAAlCsQ,KAAK9B,MAAMyF,oBAAsE,KAAlC3D,KAAK9B,MAAMyF,qBAA0C,KAAZzB,KAIzFgK,aAAiB,EAAjBA,EAAmBG,MAAKC,GACpBA,EAAiBtV,cAAkD,KAAlCsV,EAAiBtV,aAC5CsV,EAAiBtV,eACbgJ,KAAKsJ,gBACDgD,EACAlF,EACA3P,aAA2B,EAA3BA,EAA6BiK,OAC7BzK,IACCqV,EAAiBtV,eAAiBI,EAC3CkV,MAIVxa,WAAW,oBACP2S,EAAmB,4BACnBC,EAA2B,6BAC3BC,EAA4B,qBAC5BC,EAAoB,4BACpBC,EAA2B,kBAC3BC,IAEJ9E,KAAKxO,MACT,MAAO,CACH0M,MAAO8B,KAAK9B,MACZsG,aAAcxE,KAAKwE,aACnBvW,aAAc+R,KAAK/R,aACnBY,SAAU,CACN4V,sBACAC,8BACAC,+BACAC,uBACAE,oBACAD,+BAEJE,UACAC,qBAAsBhF,KAAK9B,MAAMqO,qBACjCtH,iBAAkBkH,EAE1B,CAEcvc,0BACV,MAAM4c,EAAcxM,KAAKxO,MAAMjD,KAAKie,YAAY9K,OAChD,IAAK1B,KAAK9B,QAAU8B,KAAK9B,MAAMuO,cAAgBD,EAC3C,OAGJ,MAAME,EAAS3B,IAAI/K,KAAKxO,MAAO,2BAA6B,SAGxDM,WAAW,oBACPhD,EAAmB,sBACnBC,EAAqB,oBACrBC,EAAmB,mBACnBC,EAAkB,cAClBE,EAAa,qBACbD,EAAoB,yBACpBE,IAEJ4Q,KAAKxO,MAET,MAAO,CACHvD,aAAc+R,KAAK/R,aACnBU,YAAaqR,KAAK9B,MAAMuO,YACxB7d,wBAAwB+d,EAAAA,EAAAA,2BAA0BH,GAClDE,SACA7d,SAAU,CACNC,sBACAC,wBACAC,sBACAC,qBACAE,gBACAD,uBACAE,4BAGZ,CAGYqY,4BAKR,OAJK3J,EAAAA,gBAAgB8O,YAAY5M,KAAKwK,YAClCxK,KAAK6M,qBAGF7M,KAAKwK,SAChB,CAGY7C,qCAKR,OAJK7J,EAAAA,gBAAgB8O,YAAY5M,KAAKwK,YAClCxK,KAAK6M,qBAGF7M,KAAKwK,UAAU3P,QAAO3G,GAAWA,EAAQQ,oBACpD,CAGYoY,wBACR,MACMC,EADW/M,KAAK2H,+BACY9M,QAAO3G,GAAWA,EAAQO,aAC5D,OAAKqJ,EAAAA,gBAAgB8O,YAAYG,GAI1BA,EAHI,EAIf,CAgCOC,SAAM,IAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EACT,MAEI3b,WAAW,wBACP4b,EAAuB,aACvBC,EAAY,iCACZC,EAAgC,mCAChCC,EAAkC,mCAClCC,GAEJvb,QAAQ,iBAAEwb,EAAgB,gBAAEC,EAAe,aAAEhK,EAAY,oBAAEhI,IAC3DgE,KAAKxO,OACH,eAAE+R,GAAmBvD,KAAK+C,MAC1BkL,OACmCve,IAArCsQ,KAAKxO,MAAMe,OAAOyM,gBAClBgB,KAAKxO,MAAMe,OAAOyM,iBAAmBA,EAAe0E,6BAClDwK,EAAmD,QAAlCjB,EAAGjN,KAAKxO,MAAMjD,KAAK4f,SAASzM,cAAM,IAAAuL,OAAA,EAA/BA,EAAiCiB,kBACrDE,EAA0D,QAA1ClB,EAAGlN,KAAKxO,MAAMjD,KAAK6f,iBAAiB1M,cAAM,IAAAwL,OAAA,EAAvCA,EAAyCkB,iBAC5DC,EAAWrO,KAAKxO,MAAMjD,KAAK+f,qBAAuBtO,KAAKxO,MAAMjD,KAAK+f,oBAAoB5M,OACtF6M,EAAcvO,KAAKxO,MAAMjD,KAAKigB,kBAAoBxO,KAAKxO,MAAMjD,KAAKigB,iBAAiB9M,OACnF+M,EAA0CF,GAAsC,IAAvBA,EAAY9e,OAAe8e,EAAY,QAAK7e,GAErG,4BAAE+H,EAA2B,aAAE0P,GAAiBnH,KAAKxO,MAAMjD,KAC3D6Y,EAAmD,QAAtB+F,EAAGhG,EAAazF,cAAM,IAAAyL,GAExD,QAFwDA,EAAnBA,EAAqB9F,MACtDC,GAAuBA,EAAK3R,OAASqK,KAAKH,uCAC9C,IAAAsN,OAAA,EAFqCA,EAEnC5F,UACGC,EAAsD,QAAtB4F,EAAGjG,EAAazF,cAAM,IAAA0L,GAE3D,QAF2DA,EAAnBA,EAAqB/F,MACzDC,GANkC,2DAMXA,EAAK3R,cAChC,IAAAyX,OAAA,EAFwCA,EAEtC7F,WASG,eAAEmH,EAAiB,GAAE,QAAExM,EAAU,GAAE,cAAEC,EAAgB,IAA4D,QAAxDkL,EAAGrN,KAAKxO,MAAMa,QAAQiD,cAAcC,eAAe6M,aAAK,IAAAiL,EAAAA,EAAI,CAAC,EAE5H,IAAIsB,EACA3O,KAAK9B,QACL0Q,EAAAA,EAAAA,0BACI5O,KAAKxO,MACLwO,KAAKJ,WACLI,KAAK9B,MACL8B,KAAK/R,aACLigB,EACAE,EACAC,EACAI,EACAT,GACA,EACAD,SAAAA,GAGR,GAAIY,EAAuB,KAAAE,EAAAC,EAGvB,MAAMC,GAAyC,QAArBF,EAAAF,SAAqB,IAAAE,OAAA,EAArBA,EAAuBG,eAAeC,EAAAA,EAAAA,IAAa,IAAIC,KAA0B,QAAtBJ,EAACH,SAAqB,IAAAG,OAAA,EAArBA,EAAuBE,cACvGG,EACFjhB,EAAAA,cAAAA,EAAAA,SAAA,KACK2f,EAAkC,KAAG3f,EAAAA,cAAA,YAAO6gB,IAIrDJ,EAAqBhT,EAAAA,EAAA,GACdgT,GAAqB,IACxBS,MAAOT,EAAsBS,SAAWC,KAAKC,MAAoC,IAA9BX,EAAsBS,OAAe,KAAKG,QAAQ,GACrGP,YAAaG,IAIrB,MAAMK,EACFxP,KAAKkE,0BAA4ByK,OAAwBjf,GAAY+f,EAAAA,EAAAA,qBAAoBd,GAE7F,IAAIe,EAAoC1P,KAAKwI,uBAQ7C,IAPImH,EAAAA,EAAAA,IAAc3P,KAAKxO,MAAMa,QAAQuB,UAAiC,QAAzB0Z,EAAIqB,SAAqB,IAAArB,GAArBA,EAAuBsC,eAAiBnB,IACrFiB,EAAS/T,EAAAA,EAAA,GACF+T,GAAS,IACZG,SAAUL,aAAgB,EAAhBA,EAAkBK,aAI/B3N,GAAWC,KAAmBnC,KAAKxO,MAAMa,QAAQiD,cAAcC,eAAeua,KAAKC,gBAAiB,KAAAC,EACrG,MAAMC,EAAkF,QAAzED,EAAWhQ,KAAKxO,MAAMa,QAAQiD,cAAcC,eAAeua,KAAKG,iBAAS,IAAAD,EAAAA,EAAI,GAK5F,OAJIE,EAAAA,GAASxW,WACTK,OAAOC,SAAS1L,OAAO2hB,GAGpBjQ,KAAKxO,MAAM2e,WAAWT,GAGjC,GAAI1P,KAAKiL,WAAajL,KAAK9B,MAQvB,QAPMgE,GAAWC,IAAkBnC,KAAKxO,MAAMa,QAAQiD,cAAcC,eAAeua,KAAKC,iBAAoBrB,KACxGgB,EAAS/T,EAAAA,EAAA,GACF+T,GAAS,IACZU,MAAOliB,EAAAA,cAACmiB,EAAAA,MAAK,CAACliB,UAAU,0BAA0BJ,MAAO2f,OAI1D1N,KAAKxO,MAAM2e,WAAWT,GAGjC,IAAK1P,KAAKgL,YAKN,OAJA0E,EAAS/T,EAAAA,EAAA,GACF+T,GAAS,IACZnO,QAASrT,EAAAA,cAACmiB,EAAAA,MAAK,CAACliB,UAAU,4BAA4BJ,MAAO4f,MAE1D3N,KAAKxO,MAAM2e,WAAWT,GAGjC,MAAMY,EAAmB9I,IAAoC7N,EAAAA,EAAAA,IAAiBqG,KAAKxO,MAAMa,QAAQiD,cAAcC,gBACzGgb,GAAkBC,EAAAA,EAAAA,oBACpBxQ,KAAKxO,MACLwO,KAAKJ,WACLI,KAAK9B,MACL8B,KAAKtE,SACLsE,KAAK/R,aACLggB,EACAjK,EACAhE,KAAKsG,iBACLc,EACA3P,EAA4BiK,OAC5B1B,KAAKnJ,gBACLmJ,KAAKkE,wBACLlE,KAAKyH,sBACLzL,EACAsU,EACwB,QADR/C,EAChBvN,KAAKxO,MAAMjD,KAAKkiB,gBAAQ,IAAAlD,OAAA,EAAxBA,EAA0B7L,QA4BxBgP,EAAmBH,IAAmBI,EAAAA,EAAAA,eAAcJ,GAG1D,IAAIK,EAEJ,MAAMvN,EAAaqN,aAAgB,EAAhBA,EAAkBlW,KAAI,CAACkW,EAAkBzS,KA2BvC,IAAA4S,EACyDC,EAD5D,IAAV7S,SAC2DvO,KAAxB,QAA/BmhB,EAAAH,EAAiBniB,KAAK+F,iBAAS,IAAAuc,OAAA,EAA/BA,EAAiCE,cAAe,MAChDH,EACI1iB,EAAAA,cAAA,QAAMC,UAAW,mDACZ2f,EAAkC,IAAG,IACtC5f,EAAAA,cAAA,YAAsC,QAAtC4iB,EAAOJ,EAAiBniB,KAAK+F,iBAAS,IAAAwc,OAAA,EAA/BA,EAAiCC,cAAc,GAAGC,iBAUzE,OAAArV,EAAAA,EAAA,GACO+U,GAAgB,IACnBO,eAAgBjR,KAAKxO,MAAMe,OAAO2e,0BAA4BR,aAAgB,EAAhBA,EAAkBO,eAAiB,KACjGE,aAA4BzhB,IAAnBkhB,EAA+BA,OAAiBlhB,EACzD0hB,QA/CJC,WA+CyB,IAI7B,IAAIC,EAAwB,KAgC5B,OA/BqC,QAArC9D,EAAAxN,KAAKxO,MAAMjD,KAAKgjB,eAAe7P,cAAM,IAAA8L,GAAgC,QAAhCA,EAArCA,EAAuC5W,WAAWqT,2BAAmB,IAAAuD,GAArEA,EAAuEtD,SAAQ,SAAS5C,EAAMrJ,GAAK,IAAAuT,EAC9BC,EAAhD,sBAAbnK,EAAK8C,KAAyC,QAAdoH,EAAIlK,EAAK1M,aAAK,IAAA4W,GAAVA,EAAYnH,cAChDiH,EACIpjB,EAAAA,cAAA,QAAMC,UAAW,0DACZyf,EAAgC,KAAG1f,EAAAA,cAAA,YAAiB,QAAjBujB,EAAOnK,EAAK1M,aAAK,IAAA6W,OAAA,EAAVA,EAAYpH,cAIvE,IAGAqF,EAAS/T,EAAAA,EAAA,GACF+T,GAAS,IACZ9Y,WAAYoJ,KAAK9B,MACjBwT,gBAAiBlC,EACjBmC,kBAAmBL,EACnBM,iBAAkB5R,KAAK6H,0BACvBgK,UAAW7R,KAAKiI,mBAChB5E,aACAyO,MAAO9R,KAAK+G,2BACZgL,OAAQ/R,KAAKoD,mBAAmBC,EAAY+D,GAC5C4K,aAAchS,KAAKqE,sBACnB4N,QAASjS,KAAKgG,sBACdkM,KAAMlS,KAAKiG,mBACXkM,SAAUnS,KAAKS,eACf2R,gBAAiBpS,KAAK+C,MAAMnB,aAAe5B,KAAK6C,yBAChDjB,YAAmC,QAAxB6L,EAAEzN,KAAK+C,MAAMnB,mBAAW,IAAA6L,GAAAA,EACnC4E,gBAAiBrS,KAAK2C,+BACtB2P,gBAAiB/O,GAAkBvD,KAAKkD,2BAGrClD,KAAKxO,MAAM2e,WAAWT,EACjC,CACOpF,cAAciI,GACjB,MAAMC,EAAY,IAAItD,KAAKqD,GACrBE,EAAc,IAAIvD,KACPG,KAAKqD,IAAIF,EAAUG,UAAYF,EAAYE,WAE5D,OACW,CAGf,CAgTQ5K,6BAA6B5Z,GACjC,IAAI6R,KAAKkE,yBAA4BpG,EAAAA,gBAAgB8O,YAAY5M,KAAK2H,gCAItE,OACIzZ,EAAAA,cAAC8O,EAAAA,OAAM,CACH7O,UAAW,GAAGA,sBACd8O,QAAS+C,KAAK0H,iBAAgB,aAClB1H,KAAKxO,MAAMM,UAAU8gB,2CACjC/iB,MAAOmQ,KAAKxO,MAAMM,UAAU+gB,uCAE3B7S,KAAKxO,MAAMM,UAAU+gB,sCAGlC,CAEQ7K,8BAA8B7Z,GAClC,GAAK6R,KAAKkE,wBAIV,OACIhW,EAAAA,cAAC8O,EAAAA,OAAM,CACH7O,UAAW,GAAGA,uBACd8O,QAAS+C,KAAK4H,kBAAiB,aACnB5H,KAAKxO,MAAMM,UAAUghB,4CACjCjjB,MAAOmQ,KAAKxO,MAAMM,UAAUihB,wCAE3B/S,KAAKxO,MAAMM,UAAUihB,uCAGlC,CAEQjL,mBAAmB3Z,GACvB,GAAK6R,KAAKkE,wBAIV,OACIhW,EAAAA,cAACuN,EAAAA,qBAAoB,CACjBtN,UAAW,GAAGA,0BACd0P,GAAImC,KAAKxO,MAAMqM,GACfD,SAAUoC,KAAKxO,MAAMoM,SACrBrP,KAAM,CAAEmN,SAAUsE,KAAK8M,mBACvBza,QAAS2N,KAAKxO,MAAMa,QACpBP,UAAWkO,KAAKxO,MAAMM,UACtBkK,oBAAqBgE,KAAKxO,MAAMe,OAAOyJ,qBAGnD,CAqBQ6Q,qBAAkB,IAAAmG,EACtB,MAAMC,EAA2D,QAAxCD,EAAGhT,KAAKxO,MAAMjD,KAAKgjB,eAAe7P,cAAM,IAAAsR,GAAuB,QAAvBA,EAArCA,EAAuCpc,WAAWoT,kBAAU,IAAAgJ,OAAA,EAA5DA,EAA8DxY,KAAIlG,IAAY,IAAA4e,EACtG,MAAMC,EAAyD,QAAxCD,EAAGlT,KAAKxO,MAAMjD,KAAKgjB,eAAe7P,cAAM,IAAAwR,OAAA,EAArCA,EAAuCxX,SAAS2L,MACtEnT,GAAWA,EAAQkf,WAAa9e,EAAUC,YAE9C,OAAO,IAAI+F,EAAAA,oBAAoBhG,EAAW6e,EAAkB,IAGhEnT,KAAKwK,UAAY1M,EAAAA,gBAAgBuV,YAAYJ,EACjD,IAn2BYK,EAAAA,EAAAA,IAAA,CAAXC,EAAAA,IAAU,iCAECD,EAAAA,EAAAA,IAAA,CAAXC,EAAAA,IAAU,iCAECD,EAAAA,EAAAA,IAAA,CAAXC,EAAAA,IAAU,+CAQDD,EAAAA,EAAAA,IAAA,CAATE,EAAAA,IAAQ,sCAOCF,EAAAA,EAAAA,IAAA,CAATE,EAAAA,IAAQ,iCAICF,EAAAA,EAAAA,IAAA,CAATE,EAAAA,IAAQ,8BAICF,EAAAA,EAAAA,IAAA,CAATE,EAAAA,IAAQ,2BAICF,EAAAA,EAAAA,IAAA,CAATE,EAAAA,IAAQ,8BAICF,EAAAA,EAAAA,IAAA,CAATE,EAAAA,IAAQ,qCAICF,EAAAA,EAAAA,IAAA,CAATE,EAAAA,IAAQ,kCAiBCF,EAAAA,EAAAA,IAAA,CAATE,EAAAA,IAAQ,kCAgBCF,EAAAA,EAAAA,IAAA,CAATE,EAAAA,IAAQ,uCA6DCF,EAAAA,EAAAA,IAAA,CAATE,EAAAA,IAAQ,yCAsCTF,EAAAA,EAAAA,IAAA,CADCE,EAAAA,IAAQ,2CAUTF,EAAAA,EAAAA,IAAA,CADCE,EAAAA,IAAQ,oDAUTF,EAAAA,EAAAA,IAAA,CADCE,EAAAA,IAAQ,sCA7LPjU,GAAY+T,EAAAA,EAAAA,IAAA,CADjBG,EAAAA,IACKlU,GAw7BN,4FC/9BA,MAcaqE,EAAY/V,IAwBG,IAxBF,WACtB+R,EAAU,WACVyD,EAAU,YACVU,EAAW,aACXC,EAAY,mBACZ0P,EAAkB,kCAClBzP,EAAiC,0BACjCnR,EAAyB,uBACzBL,EAAsB,aACtBkhB,EAAY,aACZC,EAAY,gBACZzP,EAAe,kBACfC,EACAtS,WAAW,eACP+R,EAAc,gBACdC,EAAe,kBACf+P,EAAiB,kBACjBC,EAAiB,qBACjBC,EAAoB,uBACpBC,EAAsB,+BACtBC,EAA8B,iBAC9BC,EAAgB,mBAChBC,IAEOtmB,EACX,MAAMkkB,GAASqC,EAAAA,EAAAA,iBAAgB/Q,GAAY7I,KAAI6Z,IAC3C,MAAM,aAAE/c,EAAY,YAAEsK,EAAayB,WAAYiR,GAAgBD,EAC/D,IAAIjF,EAAQjL,EAAkBkQ,EAAMjF,MAAQ/L,EAAW5T,OACvD2f,IAAUC,KAAKC,MAAc,IAARF,GAAe,KAAKG,QAAQ,GACjD,MAAMgF,EAAsB,IAAVnF,EAAcvL,EAAiBC,EAC3C0Q,EAAwBV,IAAqB1f,EAAAA,EAAAA,QAAO0f,EAAmB1E,EAAOmF,GAE9EE,EAAsBb,EACtBK,IAAkC7f,EAAAA,EAAAA,QAAO6f,EAAgC7E,EAAOmF,EAAWZ,GAC3FK,IAA0B5f,EAAAA,EAAAA,QAAO4f,EAAwB5E,EAAOmF,GAChEG,EAAyBP,IAAsB/f,EAAAA,EAAAA,QAAO+f,EAAoB/E,EAAOmF,GAEjFI,EAAa,CAAExmB,UAAW,GAAGyR,yBADK,SAAjBtI,EAA0B,OAA0B,UAAjBA,EAA2B,QAAU,wBACIsK,KAE7FgT,EArDmFC,EAC7FjV,EACAnN,KAEA,MAAMtE,EAAY,GAAGyR,iBAOrB,MANoC,CAChCzR,UAAW2mB,IACP3mB,EACAsE,EAAyB,GAAGtE,8BAAwC,GAAGA,gCAGzD,EA0CM0mB,CAAmBjV,EAAYnN,GACjDsiB,EAAUT,EAAY,GAAGS,QACzBC,EAAeV,EAAY,GAAGU,aAC9BC,EAAmD,eAApCX,EAAY,GAAG/lB,KAAKqT,YACnCsT,EAAmBZ,EAAY,GAAGa,mBAClCC,EAAqBd,EAAY,GAAG/lB,KAAKqT,YA2C/C,MAAO,CACH+S,aACAC,kBACAS,SA5C6B,CAC7BC,cAAe,CAAEnnB,UAAW,GAAGyR,qBAFZqE,EAAoC,kBAAoB,MAG3EG,kBAAmBA,EACnBmR,YAAa,CAAEpnB,UAAW,GAAGyR,yBAC7BK,QACI/R,EAAAA,cAAA,QAAMC,UAAW,GAAGyR,6BACfqV,EACKvB,EACqB,WAAjBpc,EACIuc,EACiB,SAAjBvc,EACAyc,EACiB,UAAjBzc,EACA4c,EACA5c,EACJgd,EAAY,GAAGhd,aACnBgd,EAAY,GAAG1S,aAG7BhJ,WAAYqc,EACR/mB,EAAAA,cAAA,QAAMC,UAAW,GAAGyR,sCAAgD0U,EAAY,GAAG1S,kBAEnFlS,EAEJ0f,OAAQsE,GAAsBxlB,EAAAA,cAAA,QAAMC,UAAW,GAAGyR,iCAA2C,IAAIwP,KAASmF,MAC1GiB,mBACI9B,GAAuC,SAAjBpc,EAClBpJ,EAAAA,cAAA,QAAMC,UAAW,GAAGyR,uCAAiD6U,GACpD,WAAjBnd,EACApJ,EAAAA,cAAA,QAAMC,UAAW,GAAGyR,sCAAgD4U,GACnD,UAAjBld,EACApJ,EAAAA,cAAA,QAAMC,UAAW,GAAGyR,uCAAiD8U,GAErExmB,EAAAA,cAAA,QAAMC,UAAW,GAAGyR,sCAAgD4U,GAE5EQ,eACAD,UACAI,mBAAoBD,EACpBlR,aAAcA,IAAgB,EAC9BoR,sBAMA/R,WAAYiR,EACZS,QAAShR,GAAegR,EACxBxmB,KAAM,CACF6gB,QACA9X,eACAsK,eAEJ9O,4BACH,IAGL,MAAO,CACH2iB,YAAa,CAAEtnB,UAAW,GAAGyR,aAC7BmS,SACH","sources":["webpack://Msdyn365.Commerce.Online/./src/modules/bremworth-complaints-form/bremworth-complaints-form.props.autogenerated.ts?53bd","webpack://Msdyn365.Commerce.Online/./src/modules/bremworth-order-details/components/get-help.tsx?dca3","webpack://Msdyn365.Commerce.Online/./src/modules/bremworth-order-details/components/get-order-summary.tsx?f53d","webpack://Msdyn365.Commerce.Online/./src/modules/bremworth-order-details/components/get-payment-methods.tsx?b616","webpack://Msdyn365.Commerce.Online/./src/modules/bremworth-order-details/components/table-view/components/bremworth-order-details-table-header-component.tsx?0e28","webpack://Msdyn365.Commerce.Online/./src/modules/bremworth-order-details/components/table-view/components/bremworth-order-details-table-row-component.tsx?114d","webpack://Msdyn365.Commerce.Online/./src/modules/bremworth-order-details/components/table-view/bremworth-order-details-table.tsx?eaff","webpack://Msdyn365.Commerce.Online/./src/modules/bremworth-order-details/components/get-order-print.tsx?8b07","webpack://Msdyn365.Commerce.Online/./src/modules/bremworth-order-details/bremworth-order-details.props.autogenerated.ts?abd4","webpack://Msdyn365.Commerce.Online/./src/modules/bremworth-order-details/bremworth-order-details.tsx?4352","webpack://Msdyn365.Commerce.Online/./src/modules/bremworth-order-details/common/get-groups.tsx?f45b"],"sourcesContent":["/**\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. See License.txt in the project root for license information.\r\n * IBremworthComplaintsForm 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 interface IBremworthComplaintsFormConfig extends Msdyn365.IModuleConfig {\r\n heading: IHeadingData;\r\n googleReCAPTCHASiteKey?: string;\r\n termAndConditionsDescription: Msdyn365.RichText;\r\n subscribeDescription: Msdyn365.RichText;\r\n formDescription?: Msdyn365.RichText;\r\n disclaimer?: Msdyn365.RichText;\r\n confirmationLink: IConfirmationLinkData;\r\n className?: string;\r\n invoiceInstruction?: string;\r\n invoiceSearchInstruction?: number;\r\n invoiceSearchNoResultFound?: string;\r\n}\r\n\r\nexport interface IBremworthComplaintsFormResources {\r\n formEnquiryTypeLabel: string;\r\n formEnquiryTypePlaceHolder: string;\r\n formEnquiryTypeHelpText: string;\r\n formRetailerStoreNameLabel: string;\r\n formRetailerStoreNamePlaceHolder: string;\r\n formRetailerStoreNameHelpText: string;\r\n formRetailerContactPersonLabel: string;\r\n formRetailerContactPersonPlaceHolder: string;\r\n formRetailerContactPersonHelpText: string;\r\n formRetailerPhoneLabel: string;\r\n formRetailerPhonePlaceHolder: string;\r\n formRetailerPhoneHelpText: string;\r\n formRetailerEmail1Label: string;\r\n formRetailerEmail1PlaceHolder: string;\r\n formRetailerEmail1HelpText: string;\r\n formRetailerEmail2Label: string;\r\n formRetailerEmail2PlaceHolder: string;\r\n formRetailerEmail2HelpText: string;\r\n formProductInvoiceNoLabel: string;\r\n formProductInvoiceNoManualEnterLabel: string;\r\n formProductInvoiceNoPlaceHolder: string;\r\n formProductInvoiceNoHelpText: string;\r\n formProductLabel: string;\r\n formProductLabelPlaceHolder: string;\r\n formProductHelpText: string;\r\n formColourLabel: string;\r\n formColourLabelPlaceHolder: string;\r\n formColourHelpText: string;\r\n formDescriptionLabel: string;\r\n formDescriptionPlaceHolder: string;\r\n formDescriptionHelpText: string;\r\n formBatchNumberLabel: string;\r\n formBatchNumberPlaceHolder: string;\r\n formBatchNumberHelpText: string;\r\n formRollNumberLabel: string;\r\n formRollNumberPlaceHolder: string;\r\n formRollNumberHelpText: string;\r\n formProductConsumerInvoiceValueLabel: string;\r\n formProductConsumerInvoiceValuePlaceHolder: string;\r\n formProductConsumerInvoiceValueHelpText: string;\r\n formProductConsumerBalanceOutstandingLabel: string;\r\n formProductConsumerBalanceOutstandingPlaceHolder: string;\r\n formProductConsumerBalanceOutstandingHelpText: string;\r\n formProductMetresInvolvedToRectifyLabel: string;\r\n formProductMetresInvolvedToRectifyPlaceHolder: string;\r\n formProductMetresInvolvedToRectifyHelpText: string;\r\n formProductTotalMetresInstalledLabel: string;\r\n formProductTotalMetresInstalledPlaceHolder: string;\r\n formProductTotalMetresInstalledHelpText: string;\r\n formProductDateInstallCompletedLabel: string;\r\n formProductDateInstallCompletedPlaceHolder: string;\r\n formProductDateInstallCompletedHelpText: string;\r\n formProductDateIssueReportedToRetailerLabel: string;\r\n formProductDateIssueReportedToRetailerPlaceHolder: string;\r\n formProductDateIssueReportedToRetailerHelpText: string;\r\n formProductReceiveGuideLabel: string;\r\n formProductReceiveGuidePlaceHolder: string;\r\n formProductReceiveGuideHelpText: string;\r\n formProductNewUnderlayLabel: string;\r\n formProductNewUnderlayPlaceHolder: string;\r\n formProductNewUnderlayHelpText: string;\r\n formProductOwnerOccupiedLabel: string;\r\n formProductOwnerOccupiedPlaceHolder: string;\r\n formProductOwnerOccupiedHelpText: string;\r\n formProductPresentLabel: string;\r\n formProductPresentPlaceHolder: string;\r\n formProductPresentHelpText: string;\r\n formConsumerNameLabel: string;\r\n formConsumerNamePlaceHolder: string;\r\n formConsumerNameHelpText: string;\r\n formConsumerPhoneLabel: string;\r\n formConsumerPhonePlaceHolder: string;\r\n formConsumerPhoneHelpText: string;\r\n formConsumerStreetAddress1Label: string;\r\n formConsumerStreetAddress1PlaceHolder: string;\r\n formConsumerStreetAddress1HelpText: string;\r\n formConsumerStreetAddress2Label: string;\r\n formConsumerStreetAddress2PlaceHolder: string;\r\n formConsumerStreetAddress2HelpText: string;\r\n formConsumerSuburbTownLabel: string;\r\n formConsumerSuburbTownPlaceHolder: string;\r\n formConsumerSuburbTownHelpText: string;\r\n formConsumerPostcodeLabel: string;\r\n formConsumerPostcodePlaceHolder: string;\r\n formConsumerPostcodeHelpText: string;\r\n formConsumerEmailLabel: string;\r\n formConsumerEmailPlaceHolder: string;\r\n formConsumerEmailHelpText: string;\r\n formConsumerConcernLabel: string;\r\n formConsumerConcernPlaceHolder: string;\r\n formConsumerConcernHelpText: string;\r\n formRetailerInspectionByLabel: string;\r\n formRetailerInspectionByPlaceHolder: string;\r\n formRetailerInspectionByHelpText: string;\r\n formRetailerInspectionDateLabel: string;\r\n formRetailerInspectionDatePlaceHolder: string;\r\n formRetailerInspectionDateHelpText: string;\r\n formRetailerInspectionPhoneLabel: string;\r\n formRetailerInspectionPhonePlaceHolder: string;\r\n formRetailerInspectionPhoneHelpText: string;\r\n formRetailerInspectionEmailLabel: string;\r\n formRetailerInspectionEmailPlaceHolder: string;\r\n formRetailerInspectionEmailHelpText: string;\r\n formRetailerInspectionPersonPresentLabel: string;\r\n formRetailerInspectionPersonPresentPlaceHolder: string;\r\n formRetailerInspectionPersonPresentHelpText: string;\r\n formRetailerInspectionCarpetLayerNameLabel: string;\r\n formRetailerInspectionCarpetLayerNamePlaceHolder: string;\r\n formRetailerInspectionCarpetLayerNameHelpText: string;\r\n formRetailerInspectionCarpetLayerPhoneLabel: string;\r\n formRetailerInspectionCarpetLayerPhonePlaceHolder: string;\r\n formRetailerInspectionCarpetLayerPhoneHelpText: string;\r\n formRetailerInspectionIssueTypeLabel: string;\r\n formRetailerInspectionIssueTypePlaceHolder: string;\r\n formRetailerInspectionIssueTypeHelpText: string;\r\n formRetailerInspectionRetailerReportLabel: string;\r\n formRetailerInspectionRetailerReportPlaceHolder: string;\r\n formRetailerInspectionRetailerReportHelpText: string;\r\n formPhotoUpload1Label: string;\r\n formPhotoUpload1PlaceHolder: string;\r\n formPhotoUpload1HelpText: string;\r\n formPhotoUpload2Label: string;\r\n formPhotoUpload2PlaceHolder: string;\r\n formPhotoUpload2HelpText: string;\r\n formPhotoUpload3Label: string;\r\n formPhotoUpload3PlaceHolder: string;\r\n formPhotoUpload3HelpText: string;\r\n formPhotoUpload4Label: string;\r\n formPhotoUpload4PlaceHolder: string;\r\n formPhotoUpload4HelpText: string;\r\n formPhotoUpload5Label: string;\r\n formPhotoUpload5PlaceHolder: string;\r\n formPhotoUpload5HelpText: string;\r\n formAgreementLabel: string;\r\n formAgreementHelpText: string;\r\n formSubscribeLabel: string;\r\n formSubscribeHelpText: string;\r\n errorMessage: string;\r\n fromSubmitButtonLabel: string;\r\n fromSubmitButtonHelpText: string;\r\n requiredFieldMissingSummaryError: string;\r\n requiredFieldMissingError: string;\r\n invalidDataFieldError: string;\r\n fieldIncorrectError: string;\r\n formSearchBoxLabel: string;\r\n formSearchBoxPlaceHolder: string;\r\n formSearchBoxHelperText: string;\r\n invoiceLinesSalesOrderText: string;\r\n invoiceLinesItemText: string;\r\n invoiceLinesColourText: string;\r\n invoiceLinesBatchNumberText: string;\r\n invoiceLinesSerialNumberText: string;\r\n invoiceLinesDescriptiontext: string;\r\n invoiceLinesSalesCategoryText: string;\r\n invoiceLinesQuantityText: string;\r\n invoiceLinesUnitPriceText: string;\r\n invoiceLinesAmountText: string;\r\n formProductInvoiceLinesSODate: string;\r\n formProductInvoiceLinesSODatePlaceHolder: string;\r\n formProductInvoiceLinesSODateHelpText: string;\r\n formPostSubmitLoadingMessage: string;\r\n}\r\n\r\nexport const enum HeadingTag {\r\n h1 = 'h1',\r\n h2 = 'h2',\r\n h3 = 'h3',\r\n h4 = 'h4',\r\n h5 = 'h5',\r\n h6 = 'h6'\r\n}\r\n\r\nexport interface IHeadingData {\r\n text: string;\r\n tag?: HeadingTag;\r\n}\r\n\r\nexport interface IConfirmationLinkData {\r\n linkText?: string;\r\n linkUrl: Msdyn365.ILinkData;\r\n ariaLabel?: string;\r\n openInNewTab?: boolean;\r\n}\r\n\r\nexport interface IBremworthComplaintsFormProps<T> extends Msdyn365.IModule<T> {\r\n resources: IBremworthComplaintsFormResources;\r\n config: IBremworthComplaintsFormConfig;\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\n/* eslint-disable no-duplicate-imports */\r\nimport { getPayloadObject, getTelemetryAttributes, IPayLoad, TelemetryConstant } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport { IGetHelpInput, IHelp } from '@msdyn365-commerce-modules/order-management';\r\n\r\nexport const getOrderDetailsHelp = ({\r\n needHelpLabel,\r\n helpLineNumberLabel,\r\n contactNumber,\r\n helpLineContactAriaLabel,\r\n telemetryContent\r\n}: IGetHelpInput): IHelp => {\r\n const payLoad: IPayLoad = getPayloadObject('click', telemetryContent!, TelemetryConstant.ContactNumber);\r\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\r\n return {\r\n helpProps: { className: 'ms-order-details__help' },\r\n needHelpLabel: <p className='ms-order-details__help-title'>{needHelpLabel}</p>,\r\n helpLineNumberLabel: <span className='ms-order-details__help-label'>{helpLineNumberLabel}</span>,\r\n contactNumber: (\r\n <a\r\n className='ms-order-details__help-content-number'\r\n aria-label={`${helpLineContactAriaLabel} ${contactNumber}`}\r\n href={`tel:${contactNumber}`}\r\n {...attributes}\r\n >\r\n {contactNumber}\r\n </a>\r\n )\r\n };\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\n/* eslint-disable no-duplicate-imports */\r\nimport { PriceComponent } from '@msdyn365-commerce/components';\r\nimport * as React from 'react';\r\n\r\nimport { IGetOrderSummaryInput, IOrderSummary, IPriceContext } from '@msdyn365-commerce-modules/order-management';\r\n\r\ninterface ISummaryLineProps {\r\n priceContext?: IPriceContext;\r\n name: string;\r\n label: string;\r\n value?: number;\r\n}\r\n\r\nconst OrderSummaryLine: React.SFC<ISummaryLineProps> = ({ name, label, value = 0, priceContext }) => (\r\n <p className={`ms-order-details__order-summary-line-${name}`}>\r\n <span className='ms-order-details__order-summary-label'>{label}</span>\r\n {priceContext ? (\r\n <PriceComponent\r\n {...priceContext}\r\n className='ms-order-details__order-summary-price'\r\n data={{ price: { CustomerContextualPrice: value } }}\r\n />\r\n ) : (\r\n <span className='ms-order-details__order-summary-price'>{value}</span>\r\n )}\r\n </p>\r\n);\r\n\r\nexport const getOrderDetailsOrderSummary = ({\r\n order,\r\n priceContext,\r\n earnedPoints,\r\n resource: {\r\n orderSummaryHeading,\r\n orderSummaryItemsTotalLabel,\r\n orderSummaryShippingFeeLabel,\r\n orderSummaryTaxLabel,\r\n orderSummaryGrandTotalLabel,\r\n pointsEarnedLabel\r\n },\r\n canShip,\r\n isTaxIncludedInPrice,\r\n isShowTaxBreakUp\r\n}: IGetOrderSummaryInput): IOrderSummary => {\r\n const subTotal = isTaxIncludedInPrice && isShowTaxBreakUp ? order.SubtotalAmountWithoutTax : order.SubtotalAmount;\r\n const taxOnShippingCharge = order.TaxOnShippingCharge !== undefined ? order.TaxOnShippingCharge : 0;\r\n const shippingChargeAmount = order.ShippingChargeAmount !== undefined ? order.ShippingChargeAmount : 0;\r\n\r\n // isTaxIncludedInPrice isShowTaxBreakup useProperties\r\n // False False/True shippingChargeAmount\r\n // True True shippingChargeAmount\r\n // True false shippingChargeAmount + taxOnShippingCharge\r\n const shippingCharge =\r\n isTaxIncludedInPrice && !isShowTaxBreakUp ? shippingChargeAmount + taxOnShippingCharge : order.ShippingChargeAmount;\r\n return {\r\n orderSummaryProps: { className: 'ms-order-details__order-summary' },\r\n heading: <p className='ms-order-details__order-summary-heading'>{orderSummaryHeading}</p>,\r\n subtotal: <OrderSummaryLine name='subtotal' label={orderSummaryItemsTotalLabel} value={subTotal} priceContext={priceContext} />,\r\n shipping: canShip ? (\r\n <OrderSummaryLine name='shipping' label={orderSummaryShippingFeeLabel} value={shippingCharge} priceContext={priceContext} />\r\n ) : (\r\n ''\r\n ),\r\n tax: isShowTaxBreakUp ? (\r\n <OrderSummaryLine name='tax-amount' label={orderSummaryTaxLabel} value={order.TaxAmount} priceContext={priceContext} />\r\n ) : (\r\n ''\r\n ),\r\n totalAmount: (\r\n <OrderSummaryLine\r\n name='total-amount'\r\n label={orderSummaryGrandTotalLabel}\r\n value={order.TotalAmount}\r\n priceContext={priceContext}\r\n />\r\n ),\r\n earnedPoints: earnedPoints ? <OrderSummaryLine name='earned-points' label={pointsEarnedLabel} value={earnedPoints} /> : undefined\r\n };\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\n/* eslint-disable no-duplicate-imports */\r\nimport { PriceComponent } from '@msdyn365-commerce/components';\r\nimport { TenderLine } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\r\nimport * as React from 'react';\r\n\r\nimport { IPaymentMethods, IPaymentMethodsInput } from '@msdyn365-commerce-modules/order-management';\r\n\r\nexport const getOrderDetailsPaymentMethods = ({\r\n priceContext,\r\n tenderLines,\r\n tenderIdOperationIdMap,\r\n resource: {\r\n paymentMethodsTitle,\r\n creditCardEndingLabel,\r\n giftCardEndingLabel,\r\n amountCoveredLabel,\r\n loyaltyCardUsedLabel,\r\n cashUsedLabel,\r\n customerAccountUsedLabel\r\n }\r\n}: IPaymentMethodsInput): IPaymentMethods => {\r\n const OPERATIONS = {\r\n PayCard: 201,\r\n PayGiftCertificate: 214,\r\n PayLoyalty: 207,\r\n PayCash: 200,\r\n PayCustomerAccount: 202\r\n };\r\n\r\n const getLastFourDigit = (digits = '') => (digits ? digits.substr(-4) : '');\r\n\r\n const getCard = (tenderLine: TenderLine, showAmount: boolean = false) => {\r\n const cardLastFourDigit = getLastFourDigit(tenderLine.MaskedCardNumber);\r\n\r\n // @ts-expect-error\r\n const isValidCardNumber = cardLastFourDigit && !isNaN(cardLastFourDigit);\r\n const amount = (tenderLine.AuthorizedAmount || 0) > 0 ? tenderLine.AuthorizedAmount : tenderLine.Amount;\r\n const showAmountCovered = !!(showAmount && amount && amount > 0);\r\n\r\n return (\r\n <div className='ms-order-details__payment-methods-line' key={tenderLine.TenderTypeId}>\r\n <p className='ms-order-details__payment-methods-card'>\r\n {`${tenderLine.CardTypeId} ${isValidCardNumber ? `${creditCardEndingLabel} ${cardLastFourDigit}` : ''}`}\r\n </p>\r\n {showAmountCovered && (\r\n <p className='ms-order-details__payment-methods-card-amount-info'>\r\n {amountCoveredLabel}\r\n <PriceComponent\r\n {...priceContext}\r\n className='ms-order-details__payment-methods-card-amount'\r\n data={{ price: { CustomerContextualPrice: amount || 0 } }}\r\n />\r\n </p>\r\n )}\r\n </div>\r\n );\r\n };\r\n\r\n const getCustomerAccountPayment = (tenderLine: TenderLine) => (\r\n <div className='ms-order-details__payment-methods-line' key={tenderLine.TenderTypeId}>\r\n <p className='ms-order-details__payment-methods-customer-account'>\r\n {customerAccountUsedLabel}\r\n {` `}\r\n {tenderLine.CustomerId}\r\n </p>\r\n <p className='ms-order-details__payment-methods-customer-account-info'>\r\n {amountCoveredLabel}\r\n <PriceComponent\r\n {...priceContext}\r\n className='ms-order-details__payment-methods-customer-account-amount'\r\n data={{ price: { CustomerContextualPrice: tenderLine.Amount || 0 } }}\r\n />\r\n </p>\r\n </div>\r\n );\r\n\r\n const getGiftCertificate = (tenderLine: TenderLine) => (\r\n <div className='ms-order-details__payment-methods-line' key={tenderLine.TenderTypeId}>\r\n <p className='ms-order-details__payment-methods-gift-card-number'>\r\n {giftCardEndingLabel}\r\n {` `}\r\n {getLastFourDigit(tenderLine.GiftCardId)}\r\n </p>\r\n <p className='ms-order-details__payment-methods-gift-card-amount-info'>\r\n {amountCoveredLabel}\r\n <PriceComponent\r\n {...priceContext}\r\n className='ms-order-details__payment-methods-gift-card-amount'\r\n data={{ price: { CustomerContextualPrice: tenderLine.Amount || 0 } }}\r\n />\r\n </p>\r\n </div>\r\n );\r\n\r\n const getLoyalty = (tenderLine: TenderLine) => (\r\n <div className='ms-order-details__payment-methods-line' key={tenderLine.TenderTypeId}>\r\n <p className='ms-order-details__payment-methods-loyalty-number'>\r\n {loyaltyCardUsedLabel}\r\n {` `}\r\n {tenderLine.LoyaltyCardId}\r\n </p>\r\n <p className='ms-order-details__payment-methods-loyalty-amount-info'>\r\n {amountCoveredLabel}\r\n <PriceComponent\r\n {...priceContext}\r\n className='ms-order-details__payment-methods-loyalty-amount'\r\n data={{ price: { CustomerContextualPrice: tenderLine.Amount || 0 } }}\r\n />\r\n </p>\r\n </div>\r\n );\r\n\r\n const getCash = (tenderLine: TenderLine) => (\r\n <div className='ms-order-details__payment-methods-line' key={tenderLine.TenderTypeId}>\r\n <p className='ms-order-details__payment-methods-cash'>{cashUsedLabel}</p>\r\n <p className='ms-order-details__payment-methods-cash-amount-info'>\r\n {amountCoveredLabel}\r\n <PriceComponent\r\n {...priceContext}\r\n className='ms-order-details__payment-methods-cash-amount'\r\n data={{ price: { CustomerContextualPrice: tenderLine.Amount || 0 } }}\r\n />\r\n </p>\r\n </div>\r\n );\r\n\r\n return {\r\n paymentMethodsProps: { className: 'ms-order-details__payment-methods' },\r\n title: <div className='ms-order-details__payment-methods-title'>{paymentMethodsTitle}</div>,\r\n methods: tenderLines.reduce((lines: React.ReactNode[], tenderLine) => {\r\n if (!tenderLine.TenderTypeId) {\r\n return lines;\r\n }\r\n switch (tenderIdOperationIdMap[tenderLine.TenderTypeId]) {\r\n case OPERATIONS.PayCard:\r\n lines.push(getCard(tenderLine, tenderLines.length > 1));\r\n break;\r\n case OPERATIONS.PayGiftCertificate:\r\n lines.push(getGiftCertificate(tenderLine));\r\n break;\r\n case OPERATIONS.PayLoyalty:\r\n lines.push(getLoyalty(tenderLine));\r\n break;\r\n case OPERATIONS.PayCash:\r\n lines.push(getCash(tenderLine));\r\n break;\r\n case OPERATIONS.PayCustomerAccount:\r\n lines.push(getCustomerAccountPayment(tenderLine));\r\n break;\r\n default:\r\n\r\n // Do nothing\r\n }\r\n return lines;\r\n }, [])\r\n };\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\n/* eslint-disable no-duplicate-imports */\r\nimport { IAny, IComponentProps, ICoreContext, IGeneric } from '@msdyn365-commerce/core';\r\nimport { isMobile, VariantType } from '@msdyn365-commerce-modules/utilities';\r\nimport classnames from 'classnames';\r\nimport React from 'react';\r\n\r\n/**\r\n * Resources which are used in order details header.\r\n */\r\nexport interface IOrderDetailsTableHeaderResources {\r\n orderDetailsProductNumberText: string;\r\n orderDetailsProductText: string;\r\n orderDetailsUnitPriceText: string;\r\n orderDetailsModeOfDeliveryText: string;\r\n orderDetailsStatusText: string;\r\n orderDetailsQuantityText: string;\r\n orderDetailsUnitOfMeasureText: string;\r\n orderDetailsTotalText: string;\r\n orderDetailsActionsText: string;\r\n orderDetailsSelectAllRadioAriaLabelText: string;\r\n}\r\n\r\n/**\r\n * Configuration of the component.\r\n */\r\nexport interface IOrderDetailsTableHeaderProps extends IComponentProps {\r\n context: ICoreContext<IGeneric<IAny>>;\r\n className: string;\r\n\r\n resources: IOrderDetailsTableHeaderResources;\r\n\r\n isCashAndCarryTransaction: boolean;\r\n isSelectedAll: boolean;\r\n isSelectionModeEnabled: boolean;\r\n isChannelMultipleCatalogsFeatureEnabled?: boolean;\r\n onSelectAll(isSelected: boolean): void;\r\n}\r\n\r\n/**\r\n * Renders checkbox for order details lines selection.\r\n * @param props - Order detail table header props.\r\n * @returns React element.\r\n */\r\nconst OrderDetailsHeaderCheckboxComponent: React.FC<IOrderDetailsTableHeaderProps> = (props: IOrderDetailsTableHeaderProps) => {\r\n const switchCheckedState = React.useCallback(() => {\r\n props.onSelectAll(!props.isSelectedAll);\r\n }, [props]);\r\n\r\n return (\r\n <label className={classnames(`${props.className}__checkbox-container`, 'checkbox-container')}>\r\n <input\r\n className={classnames(`${props.className}__checkbox-input`, 'checkbox-input')}\r\n type='checkbox'\r\n aria-label={props.resources.orderDetailsSelectAllRadioAriaLabelText}\r\n aria-checked={props.isSelectedAll}\r\n checked={props.isSelectedAll}\r\n onChange={switchCheckedState}\r\n />\r\n <span className={classnames(`${props.className}__checkmark`, 'checkmark')} />\r\n </label>\r\n );\r\n};\r\n\r\n/**\r\n * Renders desktop view cells.\r\n * @param props - Configuration of the module.\r\n * @returns List of cells for the header.\r\n */\r\nconst OrderDetailsDesktopHeaderCellsComponent: React.FC<IOrderDetailsTableHeaderProps> = (props: IOrderDetailsTableHeaderProps) => {\r\n const { resources } = props;\r\n\r\n const columnWithNumberClassName = `${props.className}__row__column-with-number`;\r\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access -- app configs are of generic type\r\n const shouldDisplayUnitOfMeasure =\r\n props.context.app.config.unitOfMeasureDisplayType && props.context.app.config.unitOfMeasureDisplayType !== 'none';\r\n\r\n return (\r\n <>\r\n {props.isSelectionModeEnabled ? (\r\n <th>\r\n <OrderDetailsHeaderCheckboxComponent {...props} />\r\n </th>\r\n ) : (\r\n undefined\r\n )}\r\n <th />\r\n <th>{resources.orderDetailsProductNumberText}</th>\r\n <th>{resources.orderDetailsProductText}</th>\r\n <th className={columnWithNumberClassName}>{resources.orderDetailsUnitPriceText}</th>\r\n <th>{resources.orderDetailsModeOfDeliveryText}</th>\r\n {props.isCashAndCarryTransaction ? undefined : <th>{resources.orderDetailsStatusText}</th>}\r\n <th className={columnWithNumberClassName}>{resources.orderDetailsQuantityText}</th>\r\n {shouldDisplayUnitOfMeasure && <th>{resources.orderDetailsUnitOfMeasureText}</th>}\r\n\r\n <th className={columnWithNumberClassName}>{resources.orderDetailsTotalText}</th>\r\n <th>{resources.orderDetailsActionsText}</th>\r\n </>\r\n );\r\n};\r\n\r\n/**\r\n * Renders mobile view cells.\r\n * @param props - Configuration of the module.\r\n * @returns List of cells for the header.\r\n */\r\nconst OrderDetailsMobileHeaderCellsComponent: React.FC<IOrderDetailsTableHeaderProps> = (props: IOrderDetailsTableHeaderProps) => {\r\n const { resources } = props;\r\n return (\r\n <>\r\n {props.isSelectionModeEnabled ? (\r\n <th>\r\n <OrderDetailsHeaderCheckboxComponent {...props} />\r\n </th>\r\n ) : (\r\n undefined\r\n )}\r\n <th />\r\n <th className={`${props.className}__row`}>{resources.orderDetailsProductText}</th>\r\n </>\r\n );\r\n};\r\n\r\n/**\r\n * Order details table header component.\r\n * @param props - Configuration of the component.\r\n * @returns React node with the header.\r\n */\r\nexport const OrderDetailsTableHeaderComponent: React.FC<IOrderDetailsTableHeaderProps> = (props: IOrderDetailsTableHeaderProps) => {\r\n const rowClassName = `${props.className}__row`;\r\n\r\n let headerCells: JSX.Element;\r\n const isMobileView = isMobile({ variant: VariantType.Viewport, context: props.context.request }) === 'xs';\r\n if (isMobileView) {\r\n headerCells = <OrderDetailsMobileHeaderCellsComponent {...props} />;\r\n } else {\r\n headerCells = <OrderDetailsDesktopHeaderCellsComponent {...props} />;\r\n }\r\n\r\n return (\r\n <thead className={props.className}>\r\n <tr className={rowClassName}>{headerCells}</tr>\r\n </thead>\r\n );\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\n/* eslint-disable no-duplicate-imports */\r\nimport { OrderDetailsProduct } from '@msdyn365-commerce/components';\r\nimport MsDyn365, { IAny, IComponentProps, ICoreContext, IGeneric, IImageSettings, Image, isChannelTypeB2B } from '@msdyn365-commerce/core';\r\nimport { ChannelDeliveryOptionConfiguration, format, ProductDeliveryOptions, SalesOrder } from '@msdyn365-commerce/retail-proxy';\r\nimport { getFallbackImageUrl, getProductPageUrlSync, ObjectExtensions, StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { Button, isMobile, VariantType } from '@msdyn365-commerce-modules/utilities';\r\nimport classnames from 'classnames';\r\nimport React, { useState } from 'react';\r\n\r\nimport { BuySelectedComponent } from '@msdyn365-commerce-modules/order-management';\r\nimport {\r\n getDeliveryDescriptionByProductId,\r\n getDeliveryType,\r\n getDeliveryTypeString,\r\n IDeliveryTypeStringMap,\r\n ISalesStatusStringMap\r\n} from '@msdyn365-commerce-modules/order-management';\r\nimport { defaultImageSettings, getSalesStatusCode } from '@msdyn365-commerce-modules/order-management';\r\n\r\n/**\r\n * Data required to render each order details row.\r\n */\r\nexport interface IOrderDetailsTableRowData {\r\n salesOrder: SalesOrder;\r\n product: OrderDetailsProduct;\r\n deliveryOptions: ProductDeliveryOptions[];\r\n channelDeliveryOptionConfig?: ChannelDeliveryOptionConfiguration;\r\n}\r\n\r\n/**\r\n * Resources for order details table rows.\r\n */\r\nexport interface IOrderDetailsTableRowResources {\r\n orderDetailsProductDimensionsSeparator: string;\r\n orderDetailsQuantityMobileText: string;\r\n orderDetailsViewDetailsButtonText: string;\r\n orderDetailsViewDetailsButtonAriaLabel: string;\r\n pickedUpSalesLines: string;\r\n deliveredSalesLines: string;\r\n carryOutSalesLines: string;\r\n emailSalesLines: string;\r\n orderStatusReadyForPickup: string;\r\n orderStatusProcessing: string;\r\n orderStatusShipped: string;\r\n orderStatusPickedUp: string;\r\n orderStatusCanceled: string;\r\n orderStatusEmailed: string;\r\n\r\n orderDetailsSelectRadioAriaLabelText: string;\r\n\r\n orderDetailsBuyItAgainButtonText: string;\r\n orderDetailsBuyItAgainButtonAriaLabel: string;\r\n orderDetailsBuySelectedAddingToCartErrorNotificationTitle: string;\r\n orderDetailsBuySelectedAddingToCartErrorNotificationCloseAriaLabel: string;\r\n orderDetailsUnavailableProductText?: string;\r\n}\r\n\r\n/**\r\n * Configuration for the order details rows.\r\n */\r\nexport interface IOrderDetailsTableRowProps extends IComponentProps<IOrderDetailsTableRowData> {\r\n context: ICoreContext<IGeneric<IAny>>;\r\n className: string;\r\n\r\n imageSettings?: IImageSettings;\r\n isCashAndCarryTransaction: boolean;\r\n isReorderingEnabled?: boolean;\r\n isRetailMultiplePickUpOptionEnabled?: boolean;\r\n isSelectionModeEnabled: boolean;\r\n\r\n resources: IOrderDetailsTableRowResources;\r\n isChannelMultipleCatalogsFeatureEnabled?: boolean;\r\n}\r\n\r\n/**\r\n * Formats amount.\r\n * @param context - Core context.\r\n * @param amount - Amount to display.\r\n * @param currencyCode - Currency for the amount.\r\n * @returns String value.\r\n */\r\nconst formatAmount = (context: ICoreContext, amount: number | undefined, currencyCode: string | undefined) => {\r\n if (amount === undefined) {\r\n return '';\r\n }\r\n return context.cultureFormatter.formatCurrency(amount, currencyCode);\r\n};\r\n\r\n/**\r\n * Renders checkbox for order details line selection.\r\n * @param props - Order detail table row props.\r\n * @returns React element.\r\n */\r\nconst OrderDetailsRowCheckboxComponent: React.FC<IOrderDetailsTableRowProps> = (props: IOrderDetailsTableRowProps) => {\r\n const product = props.data.product;\r\n\r\n const checkboxRowAriaLabel = format(props.resources.orderDetailsSelectRadioAriaLabelText, product.salesLine.ProductId);\r\n const onSelectLine = React.useCallback(() => {\r\n product.isSelected = !product.isSelected;\r\n }, [product]);\r\n\r\n return (\r\n <label className={classnames(`${props.className}__checkbox-container`, 'checkbox-container')}>\r\n <input\r\n className={classnames(`${props.className}__checkbox-input`, 'checkbox-input')}\r\n type='checkbox'\r\n checked={product.isProductAvailable && product.isSelected}\r\n aria-label={checkboxRowAriaLabel}\r\n aria-checked={product.isProductAvailable && product.isSelected}\r\n onChange={onSelectLine}\r\n disabled={!product.isProductAvailable}\r\n />\r\n <span className={classnames(`${props.className}__checkmark`, 'checkmark')} />\r\n </label>\r\n );\r\n};\r\n\r\n/**\r\n * Renders product image for order details line.\r\n * @param props - Order detail table row props.\r\n * @returns React element.\r\n */\r\nconst OrderDetailsRowProductImageComponent: React.FC<IOrderDetailsTableRowProps> = (props: IOrderDetailsTableRowProps) => {\r\n const product = props.data.product;\r\n const fallbackImageUrl = getFallbackImageUrl(product.simpleProduct?.ItemId, props.context.actionContext.requestContext.apiSettings);\r\n\r\n const containerClassName = `${props.className}__product-image-container`;\r\n\r\n const productName = product.simpleProduct?.Name ?? product.salesLine.Description;\r\n\r\n return (\r\n <div className={containerClassName}>\r\n <Image\r\n requestContext={props.context.actionContext.requestContext}\r\n className={`${containerClassName}__product-image`}\r\n altText={productName}\r\n // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing -- Need to set empty by default.\r\n src={product.simpleProduct?.PrimaryImageUrl || 'empty'}\r\n fallBackSrc={fallbackImageUrl}\r\n gridSettings={props.context.request.gridSettings!}\r\n imageSettings={props.imageSettings ?? defaultImageSettings}\r\n loadFailureBehavior='empty'\r\n />\r\n </div>\r\n );\r\n};\r\n\r\n/**\r\n * Renders rows for desktop view.\r\n * @param props - Configuration for the rows.\r\n * @returns A react node with a list of order details rows for desktop view.\r\n */\r\nexport const OrderDetailsDesktopTableRowCellComponent: React.FC<IOrderDetailsTableRowProps> = (props: IOrderDetailsTableRowProps) => {\r\n const {\r\n data: { product, salesOrder, deliveryOptions }\r\n } = props;\r\n const salesLine = product.salesLine;\r\n\r\n const pickupMode = getDeliveryDescriptionByProductId(salesLine.ProductId, salesLine.DeliveryMode, deliveryOptions);\r\n const pickupDeliveryModeCode = props.context.request.channel?.PickupDeliveryModeCode;\r\n const emailDeliveryModeCode = props.context.request.channel?.EmailDeliveryModeCode;\r\n const deliveryType = getDeliveryType(\r\n pickupMode,\r\n salesLine,\r\n salesLine.DeliveryMode,\r\n pickupDeliveryModeCode,\r\n props.isRetailMultiplePickUpOptionEnabled,\r\n props.data.channelDeliveryOptionConfig,\r\n emailDeliveryModeCode\r\n );\r\n const deliveryTypeStringMap: IDeliveryTypeStringMap = {\r\n pickUp: props.resources.pickedUpSalesLines,\r\n ship: props.resources.deliveredSalesLines,\r\n carryOut: props.resources.carryOutSalesLines,\r\n email: props.resources.emailSalesLines\r\n };\r\n const deliveryTypeString = getDeliveryTypeString(deliveryType, deliveryTypeStringMap, props.isRetailMultiplePickUpOptionEnabled);\r\n\r\n const salesStatusStringMap: ISalesStatusStringMap = {\r\n canceled: props.resources.orderStatusCanceled,\r\n readyForPickup: props.resources.orderStatusReadyForPickup,\r\n pickedUp: props.resources.orderStatusPickedUp,\r\n processing: props.resources.orderStatusProcessing,\r\n shipped: props.resources.orderStatusShipped,\r\n unknown: undefined,\r\n emailed: props.resources.orderStatusEmailed\r\n };\r\n\r\n const salesStatus = getSalesStatusCode(deliveryType, salesLine.SalesStatusValue, pickupMode);\r\n const salesStatusString = salesStatusStringMap[salesStatus];\r\n\r\n const columnWithNumberClassName = `${props.className}__column-with-number`;\r\n\r\n const productName = product.simpleProduct?.Name ?? salesLine.Description;\r\n\r\n let productUrl = '';\r\n if (!ObjectExtensions.isNullOrUndefined(productName) && !ObjectExtensions.isNullOrUndefined(salesLine.ProductId)) {\r\n productUrl = getProductPageUrlSync(productName, salesLine.ProductId, props.context.actionContext);\r\n\r\n if (MsDyn365.isBrowser && isChannelTypeB2B(props.context.actionContext.requestContext)) {\r\n const fullUrl = new URL(productUrl, window.location.href);\r\n fullUrl.searchParams.set('catalogid', `${salesLine.CatalogId ?? 0}`);\r\n productUrl = fullUrl.href;\r\n }\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access -- app configs are of generic type\r\n const shouldDisplayUnitOfMeasure =\r\n props.context.app.config.unitOfMeasureDisplayType && props.context.app.config.unitOfMeasureDisplayType !== 'none';\r\n\r\n const currentProduct = new OrderDetailsProduct(product.salesLine, product.simpleProduct, productUrl);\r\n\r\n return (\r\n <>\r\n {props.isSelectionModeEnabled ? (\r\n <td>\r\n <OrderDetailsRowCheckboxComponent {...props} />\r\n </td>\r\n ) : (\r\n undefined\r\n )}\r\n <td>\r\n <OrderDetailsRowProductImageComponent {...props} />\r\n </td>\r\n <td>{salesLine.ItemId}</td>\r\n <td>\r\n <div className={`${props.className}__product-info`}>\r\n <a className={`${props.className}__product-name`} href={productUrl}>\r\n {productName}\r\n </a>\r\n <span className={`${props.className}__product-dimensions`}>\r\n {product.simpleProduct?.Dimensions?.map(dimension => dimension.DimensionValue?.Value)\r\n .filter(dimensionValue => !StringExtensions.isNullOrWhitespace(dimensionValue))\r\n .join(props.resources.orderDetailsProductDimensionsSeparator)}\r\n </span>\r\n {!product.isProductAvailable && (\r\n <div className='msc-alert-danger'>{props.resources.orderDetailsUnavailableProductText}</div>\r\n )}\r\n </div>\r\n </td>\r\n <td className={columnWithNumberClassName}>{formatAmount(props.context, salesLine.Price, salesOrder.CurrencyCode)}</td>\r\n <td>{deliveryTypeString}</td>\r\n {props.isCashAndCarryTransaction ? undefined : <td>{salesStatusString}</td>}\r\n <td className={columnWithNumberClassName}>{salesLine.Quantity}</td>\r\n {shouldDisplayUnitOfMeasure && <td>{salesLine.UnitOfMeasureSymbol}</td>}\r\n\r\n <td className={columnWithNumberClassName}>{formatAmount(props.context, salesLine.TotalAmount, salesOrder.CurrencyCode)}</td>\r\n <td>\r\n <BuySelectedComponent\r\n {...props}\r\n className={`${props.className}__buy-again msc-btn`}\r\n data={{ products: [currentProduct] }}\r\n resources={{\r\n ...props.resources,\r\n orderDetailsBuySelectedButtonText: props.resources.orderDetailsBuyItAgainButtonText,\r\n orderDetailsBuySelectedButtonAriaLabel: format(\r\n props.resources.orderDetailsBuyItAgainButtonAriaLabel,\r\n productName ?? ''\r\n )\r\n }}\r\n isReorderingEnabled={props.isReorderingEnabled}\r\n isIcon\r\n />\r\n </td>\r\n </>\r\n );\r\n};\r\n\r\nlet setShowPreviousActions: React.Dispatch<React.SetStateAction<boolean>> | undefined;\r\n\r\n/**\r\n * Renders actions popup for the mobile view.\r\n * @param props - Configuration for popup.\r\n * @returns A react node with actions..\r\n */\r\nconst OrderDetailsExtraActionsPopupComponent: React.FC<IOrderDetailsTableRowProps> = (\r\n props: IOrderDetailsTableRowProps\r\n): JSX.Element | null => {\r\n const {\r\n resources: { orderDetailsViewDetailsButtonAriaLabel, orderDetailsViewDetailsButtonText }\r\n } = props;\r\n\r\n const [shouldShowActions, setShowActions] = useState(false);\r\n\r\n const salesLine = props.data.product.salesLine;\r\n\r\n const productName = props.data.product.simpleProduct?.Name ?? salesLine.Description;\r\n let productUrl = '';\r\n if (!ObjectExtensions.isNullOrUndefined(productName) && !ObjectExtensions.isNullOrUndefined(salesLine.ProductId)) {\r\n productUrl = getProductPageUrlSync(productName, salesLine.ProductId, props.context.actionContext);\r\n\r\n if (MsDyn365.isBrowser && isChannelTypeB2B(props.context.actionContext.requestContext)) {\r\n const fullUrl = new URL(productUrl, window.location.href);\r\n fullUrl.searchParams.set('catalogid', `${salesLine.CatalogId ?? 0}`);\r\n productUrl = fullUrl.href;\r\n }\r\n }\r\n const currentProduct = new OrderDetailsProduct(props.data.product.salesLine, props.data.product.simpleProduct, productUrl);\r\n\r\n const onClickViewDetails = React.useCallback(() => {\r\n if (MsDyn365.isBrowser) {\r\n window.location.href = productUrl;\r\n }\r\n }, [productUrl]);\r\n\r\n const toggle = React.useCallback(() => {\r\n const shouldShowActionsNewValue = !shouldShowActions;\r\n if (shouldShowActionsNewValue) {\r\n if (setShowPreviousActions) {\r\n setShowPreviousActions(false);\r\n }\r\n setShowActions(shouldShowActionsNewValue);\r\n setShowPreviousActions = setShowActions;\r\n } else {\r\n setShowPreviousActions = undefined;\r\n setShowActions(shouldShowActionsNewValue);\r\n }\r\n }, [shouldShowActions, setShowActions]);\r\n\r\n if (StringExtensions.isNullOrWhitespace(productUrl)) {\r\n return null;\r\n }\r\n\r\n const className = `${props.className}__extra-actions-cell`;\r\n const actionsContainerClassName = `${className}__actions-container`;\r\n\r\n return (\r\n <div className={className}>\r\n <Button className={`${className}__toggle`} onClick={toggle} />\r\n {shouldShowActions && (\r\n <div className={actionsContainerClassName}>\r\n <Button\r\n className={`${actionsContainerClassName}__view-details`}\r\n onClick={onClickViewDetails}\r\n aria-label={orderDetailsViewDetailsButtonAriaLabel}\r\n >\r\n {orderDetailsViewDetailsButtonText}\r\n </Button>\r\n <BuySelectedComponent\r\n {...props}\r\n className={`${actionsContainerClassName}__buy-again`}\r\n data={{ products: [currentProduct] }}\r\n resources={{\r\n ...props.resources,\r\n orderDetailsBuySelectedButtonText: props.resources.orderDetailsBuyItAgainButtonText,\r\n orderDetailsBuySelectedButtonAriaLabel: format(\r\n props.resources.orderDetailsBuyItAgainButtonAriaLabel,\r\n productName ?? ''\r\n )\r\n }}\r\n isReorderingEnabled={props.isReorderingEnabled}\r\n />\r\n </div>\r\n )}\r\n </div>\r\n );\r\n};\r\n\r\n/**\r\n * Renders rows for mobile view.\r\n * @param props - Configuration for the rows.\r\n * @returns A react node with a list of order details rows for mobile view.\r\n */\r\nexport const OrderDetailsMobileTableRowCellComponent: React.FC<IOrderDetailsTableRowProps> = (props: IOrderDetailsTableRowProps) => {\r\n const {\r\n data: { product }\r\n } = props;\r\n const salesLine = product.salesLine;\r\n const productName = product.simpleProduct?.Name ?? salesLine.Description;\r\n\r\n return (\r\n <>\r\n {props.isSelectionModeEnabled ? (\r\n <td>\r\n <OrderDetailsRowCheckboxComponent {...props} />\r\n </td>\r\n ) : (\r\n undefined\r\n )}\r\n <td>\r\n <OrderDetailsRowProductImageComponent {...props} />\r\n </td>\r\n <td>\r\n <div className={`${props.className}__product-info`}>\r\n <span className={`${props.className}__product-name`}>{productName}</span>\r\n <span className={`${props.className}__product-quantity`}>\r\n {format(props.resources.orderDetailsQuantityMobileText, salesLine.Quantity)}\r\n </span>\r\n </div>\r\n </td>\r\n <td>\r\n <OrderDetailsExtraActionsPopupComponent {...props} />\r\n </td>\r\n </>\r\n );\r\n};\r\n\r\n/**\r\n * Renders order details rows.\r\n * @param props - Configuration for the rows.\r\n * @returns A react node with a list of order details rows.\r\n */\r\nexport const OrderDetailsTableRowComponent: React.FC<IOrderDetailsTableRowProps> = (props: IOrderDetailsTableRowProps) => {\r\n const isMobileView = isMobile({ variant: VariantType.Viewport, context: props.context.request }) === 'xs';\r\n const className = classnames(\r\n props.className,\r\n props.data.product.isProductAvailable ? `${props.className}__available-product` : `${props.className}__unavailable-product`,\r\n props.className,\r\n props.data.product.isSelected ? `${props.className}__selected` : `${props.className}__unselected`\r\n );\r\n\r\n return (\r\n <tr className={className}>\r\n {isMobileView ? (\r\n <OrderDetailsMobileTableRowCellComponent {...props} />\r\n ) : (\r\n <OrderDetailsDesktopTableRowCellComponent {...props} />\r\n )}\r\n </tr>\r\n );\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\n/* eslint-disable no-duplicate-imports */\r\nimport { OrderDetailsProduct } from '@msdyn365-commerce/components';\r\nimport { IComponentProps, ICoreContext, IImageSettings } from '@msdyn365-commerce/core';\r\nimport { ChannelDeliveryOptionConfiguration, ProductDeliveryOptions, SalesOrder } from '@msdyn365-commerce/retail-proxy';\r\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\r\nimport React from 'react';\r\n\r\nimport {\r\n IOrderDetailsTableHeaderResources,\r\n OrderDetailsTableHeaderComponent\r\n} from './components/bremworth-order-details-table-header-component';\r\nimport { IOrderDetailsTableRowResources, OrderDetailsTableRowComponent } from './components/bremworth-order-details-table-row-component';\r\n\r\n/**\r\n * Interface with the data required for order details.\r\n */\r\nexport interface IOrderDetailsTableData {\r\n order: SalesOrder;\r\n products: OrderDetailsProduct[];\r\n deliveryOptions: ProductDeliveryOptions[];\r\n channelDeliveryOptionConfig?: ChannelDeliveryOptionConfiguration;\r\n}\r\n\r\n/**\r\n * Resources needed to render order details table.\r\n */\r\nexport interface IOrderDetailsTableResources extends IOrderDetailsTableHeaderResources, IOrderDetailsTableRowResources {}\r\n\r\n/**\r\n * Configuration of order details table.\r\n */\r\nexport interface IOrderDetailsTableProps extends IComponentProps<IOrderDetailsTableData> {\r\n context: ICoreContext;\r\n className: string;\r\n\r\n imageSettings?: IImageSettings;\r\n isCashAndCarryTransaction: boolean;\r\n isReorderingEnabled?: boolean;\r\n isRetailMultiplePickUpOptionEnabled?: boolean;\r\n isSelectionModeEnabled: boolean;\r\n\r\n resources: IOrderDetailsTableResources;\r\n isChannelMultipleCatalogsFeatureEnabled?: boolean;\r\n}\r\n\r\n/**\r\n * On select all function.\r\n * @param props - Invoice table props.\r\n * @returns On change.\r\n */\r\nconst onSelectAllHandler = (props: IOrderDetailsTableProps) => (isSelected: boolean) => {\r\n for (const product of props.data.products) {\r\n product.isSelected = isSelected;\r\n }\r\n};\r\n\r\n/**\r\n * Renders order details table.\r\n * @param props - Configuration for order details table.\r\n * @returns React node with the table.\r\n */\r\nexport const OrderDetailsTableComponent: React.FC<IOrderDetailsTableProps> = (props: IOrderDetailsTableProps) => {\r\n const rowClassName = `${props.className}__row`;\r\n const headerClassName = `${props.className}__header`;\r\n const products = props.data.products;\r\n const availableProducts = products.filter(product => product.isProductAvailable);\r\n\r\n return (\r\n <table className={props.className}>\r\n <OrderDetailsTableHeaderComponent\r\n context={props.context}\r\n typeName={props.typeName}\r\n id={headerClassName}\r\n className={headerClassName}\r\n resources={props.resources}\r\n data={{}}\r\n isCashAndCarryTransaction={props.isCashAndCarryTransaction}\r\n isSelectionModeEnabled={props.isSelectionModeEnabled}\r\n isSelectedAll={ArrayExtensions.all(availableProducts, (product: OrderDetailsProduct) => product.isSelected)}\r\n onSelectAll={onSelectAllHandler(props)}\r\n isChannelMultipleCatalogsFeatureEnabled={props.isChannelMultipleCatalogsFeatureEnabled}\r\n />\r\n {products.map((product, index) => {\r\n return (\r\n <OrderDetailsTableRowComponent\r\n context={props.context}\r\n typeName={props.typeName}\r\n id={`${rowClassName}-${index}`}\r\n key={product.salesLine.ItemId}\r\n className={rowClassName}\r\n resources={props.resources}\r\n imageSettings={props.imageSettings}\r\n isCashAndCarryTransaction={props.isCashAndCarryTransaction}\r\n isReorderingEnabled={props.isReorderingEnabled}\r\n isRetailMultiplePickUpOptionEnabled={props.isRetailMultiplePickUpOptionEnabled}\r\n isSelectionModeEnabled={props.isSelectionModeEnabled}\r\n data={{\r\n salesOrder: props.data.order,\r\n product,\r\n deliveryOptions: props.data.deliveryOptions,\r\n channelDeliveryOptionConfig: props.data.channelDeliveryOptionConfig\r\n }}\r\n isChannelMultipleCatalogsFeatureEnabled={props.isChannelMultipleCatalogsFeatureEnabled}\r\n />\r\n );\r\n })}\r\n </table>\r\n );\r\n};\r\n","import React from 'react';\r\nimport { Button } from 'reactstrap';\r\n\r\nexport interface PrintComponentProps {\r\n handlePrint?: () => void;\r\n}\r\n\r\nexport const PrintComponent: React.FC<PrintComponentProps> = () => {\r\n const handlePrint = () => {\r\n const printContent = document.getElementsByClassName('ms-order-details')[0].innerHTML;\r\n if (printContent) {\r\n if (printContent) {\r\n window.print();\r\n }\r\n }\r\n };\r\n\r\n return (\r\n <span className='ms-order-details__order-information-print-content'>\r\n <Button className='ms-order-details__order-information-print-content-button' title={'print'} onClick={handlePrint}>\r\n <svg\r\n xmlns='http://www.w3.org/2000/svg'\r\n width='16'\r\n height='16'\r\n fill='currentColor'\r\n className='bi bi-printer'\r\n viewBox='0 0 16 16'\r\n >\r\n <path d='M2.5 8a.5.5 0 1 0 0-1 .5.5 0 0 0 0 1z' />\r\n <path d='M5 1a2 2 0 0 0-2 2v2H2a2 2 0 0 0-2 2v3a2 2 0 0 0 2 2h1v1a2 2 0 0 0 2 2h6a2 2 0 0 0 2-2v-1h1a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2h-1V3a2 2 0 0 0-2-2H5zM4 3a1 1 0 0 1 1-1h6a1 1 0 0 1 1 1v2H4V3zm1 5a2 2 0 0 0-2 2v1H2a1 1 0 0 1-1-1V7a1 1 0 0 1 1-1h12a1 1 0 0 1 1 1v3a1 1 0 0 1-1 1h-1v-1a2 2 0 0 0-2-2H5zm7 2v3a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1v-3a1 1 0 0 1 1-1h6a1 1 0 0 1 1 1z' />\r\n </svg>\r\n </Button>\r\n </span>\r\n );\r\n};\r\n","/**\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. See License.txt in the project root for license information.\r\n * IBremworthOrderDetails 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 addressOptions {\r\n showAddressWithSingleLine = 'showAddressWithSingleLine',\r\n showAddressWithMultiplelines = 'showAddressWithMultiplelines'\r\n}\r\n\r\nexport interface IBremworthOrderDetailsConfig extends Msdyn365.IModuleConfig {\r\n heading?: IHeadingData;\r\n shouldShowQrCode?: boolean;\r\n showChannelInfo?: boolean;\r\n addressOptions?: addressOptions;\r\n showTimeslot?: boolean;\r\n showShippingChargesForLineItems?: boolean;\r\n contactNumber?: string;\r\n imageSettings?: Msdyn365.IImageSettings;\r\n buyItAgainSalesLineButton?: boolean;\r\n isReorderingEnabled?: boolean;\r\n isGridViewEnabled?: boolean;\r\n className?: string;\r\n clientRender?: boolean;\r\n}\r\n\r\nexport interface IBremworthOrderDetailsResources {\r\n loadingLabel: string;\r\n genericErrorMessage: string;\r\n orderItemLabel: string;\r\n orderItemsLabel: string;\r\n orderIdLabel: string;\r\n orderPlacedByText: string;\r\n orderPlacedByFullText: string;\r\n orderOnBehalfOfText: string;\r\n orderPlacedByYouText: string;\r\n confirmationIdLabel: string;\r\n orderDetailCustomerReferenceText: string;\r\n orderSummaryTitle: string;\r\n paymentMethodsTitle: string;\r\n shippingAddressTitle: string;\r\n noSalesOrderDetailsText: string;\r\n creditCardEndingLabel: string;\r\n giftCardEndingLabel: string;\r\n amountCoveredLabel: string;\r\n loyaltyCardUsedLabel: string;\r\n cashUsedLabel: string;\r\n customerAccountUsedLabel: string;\r\n freePriceText: string;\r\n orderSummaryItemsTotalLabel: string;\r\n orderSummaryShippingFeeLabel: string;\r\n orderSummaryTaxLabel: string;\r\n orderSummaryGrandTotalLabel: string;\r\n salesLineQuantityText: string;\r\n processingLabel: string;\r\n needHelpLabel: string;\r\n helpLineNumberLabel: string;\r\n helpLineContactAriaLabel: string;\r\n pickedUpSalesLines: string;\r\n deliveredSalesLines: string;\r\n carryOutSalesLines: string;\r\n orderStatusReadyForPickup: string;\r\n orderStatusProcessing: string;\r\n orderStatusShipped: string;\r\n orderStatusPickedUp: string;\r\n orderStatusCanceled: string;\r\n emailSalesLines: string;\r\n orderStatusEmailed: string;\r\n phoneAriaLabel: string;\r\n buyItAgainLabel: string;\r\n buyItAgainAriaLabel: string;\r\n shipToLabel: string;\r\n storeLabel: string;\r\n productDimensionTypeColor: string;\r\n productDimensionTypeSize: string;\r\n productDimensionTypeStyle: string;\r\n productDimensionTypeAmount: string;\r\n trackingLabel: string;\r\n trackingComingSoonLabel: string;\r\n trackingAriaLabel: string;\r\n pointsEarnedLabel: string;\r\n receiptEmailMessage: string;\r\n receiptIdLabel: string;\r\n backToShopping: string;\r\n configString: string;\r\n phoneLabel: string;\r\n orderSummaryHeading: string;\r\n discountStringText: string;\r\n posChannelNameText: string;\r\n onlineStoreChannelNameText: string;\r\n pickupDateTimeslotText: string;\r\n pickupTimeslotPlaceHolder: string;\r\n shippingCharges: string;\r\n orderDetailsListViewModeAriaLabel: string;\r\n orderDetailsDetailedViewModeAriaLabel: string;\r\n orderDetailsProductNumberText: string;\r\n orderDetailsProductText: string;\r\n orderDetailsUnitPriceText: string;\r\n orderDetailsModeOfDeliveryText: string;\r\n orderDetailsStatusText: string;\r\n orderDetailsQuantityText: string;\r\n orderDetailsUnitOfMeasureText: string;\r\n orderDetailsTotalText: string;\r\n orderDetailsActionsText: string;\r\n orderDetailsViewDetailsButtonText: string;\r\n orderDetailsViewDetailsButtonAriaLabel: string;\r\n orderDetailsProductDimensionsSeparator: string;\r\n orderDetailsQuantityMobileText: string;\r\n orderDetailsBuySelectedButtonText: string;\r\n orderDetailsBuySelectedButtonAriaLabel: string;\r\n orderDetailsDisableSelectionButtonText: string;\r\n orderDetailsDisableSelectionButtonAriaLabel: string;\r\n orderDetailsEnableSelectionButtonText: string;\r\n orderDetailsEnableSelectionButtonAriaLabel: string;\r\n orderDetailsSelectAllRadioAriaLabelText: string;\r\n orderDetailsSelectRadioAriaLabelText: string;\r\n orderDetailsBuySelectedAddingToCartErrorNotificationTitle: string;\r\n orderDetailsBuySelectedAddingToCartErrorNotificationCloseAriaLabel: string;\r\n orderDetailsBuyItAgainButtonText: string;\r\n orderDetailsBuyItAgainButtonAriaLabel: string;\r\n orderDetailsGoToCartText: string;\r\n orderDetailsDialogCloseText: string;\r\n orderDetailsSingleItemText: string;\r\n orderDetailsMultiLineItemFormatText: string;\r\n orderDetailsMultiLinesFormatText: string;\r\n orderDetailsHeaderMessageText: string;\r\n addedQuantityText: string;\r\n originalPriceText: string;\r\n currentPriceText: string;\r\n orderDetailsBuyItemsAgainHeaderText: string;\r\n qrCodeSrText: string;\r\n orderDetailsMultiItemsValidationErrorMessage: string;\r\n orderDetailsOneErrorText: string;\r\n orderDetailsMultiErrorText: string;\r\n orderDetailsUnavailableProductText: string;\r\n orderDetailsInformationOrderedDate: string;\r\n orderDetailsInfromationProjectCode: string;\r\n orderDetailsOrderHoldText: string;\r\n orderDetailsOrderHoldStatusText: string;\r\n orderDetailsOrderCancelButtonText: string;\r\n orderDetailsOrderSaveButtonText: string;\r\n quantityDisplayString: string;\r\n inputQuantityAriaLabel: string;\r\n}\r\n\r\nexport const enum HeadingTag {\r\n h1 = 'h1',\r\n h2 = 'h2',\r\n h3 = 'h3',\r\n h4 = 'h4',\r\n h5 = 'h5',\r\n h6 = 'h6'\r\n}\r\n\r\nexport interface IHeadingData {\r\n text: string;\r\n tag?: HeadingTag;\r\n}\r\n\r\nexport interface IBremworthOrderDetailsProps<T> extends Msdyn365.IModule<T> {\r\n resources: IBremworthOrderDetailsResources;\r\n config: IBremworthOrderDetailsConfig;\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\n/* eslint-disable no-duplicate-imports */\r\nimport { OrderDetailsProduct } from '@msdyn365-commerce/components';\r\nimport Msdyn365, { ContentEditableEvent, getUrlSync, isChannelTypeB2B, Text, isUserTypeB2B } from '@msdyn365-commerce/core';\r\nimport {\r\n ChannelDeliveryOptionConfiguration,\r\n FeatureState,\r\n LoyaltyRewardPoint,\r\n OrderOriginator,\r\n ProductCatalog,\r\n ProductDeliveryOptions,\r\n SalesLine,\r\n SalesOrder,\r\n SimpleProduct\r\n} from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\r\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { Button, getTelemetryObject, IModuleProps, INodeProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\r\nimport classname from 'classnames';\r\nimport get from 'lodash/get';\r\nimport { computed, observable } from 'mobx';\r\nimport { observer } from 'mobx-react';\r\nimport * as React from 'react';\r\n\r\nimport {\r\n BuySelectedComponent,\r\n IGetOrderSummaryInput,\r\n IHelp,\r\n IOrderSummary,\r\n IPaymentMethods,\r\n IPaymentMethodsInput\r\n} from '@msdyn365-commerce-modules/order-management';\r\nimport { IGroups } from '@msdyn365-commerce-modules/order-management';\r\nimport { getOrderInformation, getOrderInformationInput, IOrderInformation } from '@msdyn365-commerce-modules/order-management';\r\nimport { ISalesLine } from '@msdyn365-commerce-modules/order-management';\r\nimport { getSalesLines, getSalesLinesInput } from '@msdyn365-commerce-modules/order-management';\r\nimport { Label } from '@msdyn365-commerce-modules/order-management';\r\nimport { getTenderIdOperationIdMap, IPriceContext } from '@msdyn365-commerce-modules/order-management';\r\nimport { getOrderDetailsHelp } from './components/get-help';\r\nimport { getOrderDetailsOrderSummary } from './components/get-order-summary';\r\nimport { getOrderDetailsPaymentMethods } from './components/get-payment-methods';\r\nimport { OrderDetailsTableComponent } from './components/table-view';\r\nimport { PrintComponent } from './components/get-order-print';\r\nimport { IBremworthOrderDetailsData } from './bremworth-order-details.data';\r\nimport { addressOptions, IBremworthOrderDetailsProps } from './bremworth-order-details.props.autogenerated';\r\nimport { getGroups } from './common/get-groups';\r\nimport { onFormatDate } from '../bremworth-complaints-form';\r\nimport { updateOrderHoldAsync } from '../../actions/DataActionExtension.g';\r\n// import classNames from 'classnames';\r\n// import DispatchDatePicker from './utils/get-delivery-date';\r\n// import { format, parse } from 'date-fns';\r\n/**\r\n * Specifies different layouts for order details.\r\n */\r\nexport enum OrderDetailsViewMode {\r\n listView = 0,\r\n detailedView = 1\r\n}\r\n\r\n// eslint-disable-next-line no-redeclare\r\nexport interface ISalesLineViewProps extends ISalesLine {\r\n coupons?: React.ReactNode;\r\n getData?: React.ReactNode;\r\n}\r\ninterface IOrderDetailsState {\r\n OrderHoldResponse: boolean;\r\n loading: boolean;\r\n salesStatus?: boolean;\r\n isFormEditable?: boolean;\r\n dispatchDates: {\r\n [key: string]: Date | undefined;\r\n };\r\n}\r\nexport interface IOrderDetailsViewProps extends IBremworthOrderDetailsProps<IBremworthOrderDetailsData> {\r\n moduleProps: IModuleProps;\r\n tableViewActions?: React.ReactNode;\r\n viewModes?: React.ReactNode;\r\n table?: React.ReactNode;\r\n salesOrder?: SalesOrder;\r\n footerProps?: INodeProps;\r\n alert?: React.ReactNode;\r\n loading?: React.ReactNode;\r\n heading: React.ReactNode;\r\n placedBy?: React.ReactNode;\r\n backToShoppingLink?: React.ReactNode;\r\n orderInfomation?: IOrderInformation;\r\n // customerReference?: React.ReactNode | null;\r\n salesLines?: ISalesLine[];\r\n groups?: IGroups;\r\n orderSummary?: IOrderSummary;\r\n payment?: IPaymentMethods;\r\n help?: IHelp;\r\n catalogs?: ProductCatalog[];\r\n customerReference?: React.ReactNode | null;\r\n getCouponsCode?: React.ReactNode;\r\n printDiv?: React.ReactNode;\r\n removeOrderHold?: React.ReactNode;\r\n salesStatus?: boolean;\r\n orderHoldStatus?: React.ReactNode;\r\n editOrderButton?: React.ReactNode;\r\n}\r\nexport interface IOrderInformationViewProps extends IOrderInformation {\r\n customerReference?: React.ReactNode | null;\r\n}\r\nexport const handleDateChange = (date: Date | undefined, itemId: string | undefined) => {\r\n if (itemId && date) {\r\n console.log(itemId, date);\r\n }\r\n};\r\n/**\r\n *\r\n * OrderDetails component.\r\n * @extends {React.PureComponent<IBremworthOrderDetailsProps<IBremworthOrderDetailsData>>}\r\n */\r\n@observer\r\nclass OrderDetails extends React.PureComponent<IBremworthOrderDetailsProps<IBremworthOrderDetailsData>, IOrderDetailsState> {\r\n @observable private _viewMode: OrderDetailsViewMode;\r\n\r\n @observable private _products: OrderDetailsProduct[];\r\n\r\n @observable private _isSelectionModeEnabled: boolean;\r\n\r\n private readonly moduleName: string = 'ms-order-details';\r\n\r\n private readonly multiplePickupStoreSwitchName: string = 'Dynamics.AX.Application.RetailMultiplePickupDeliveryModeFeature';\r\n\r\n private readonly telemetryContent: ITelemetryContent;\r\n\r\n @computed get isCurrentChannel(): boolean {\r\n if (!this.order) {\r\n return false;\r\n }\r\n return this.order.ChannelId === get(this.props, 'context.request.apiSettings.channelId');\r\n }\r\n\r\n @computed get isDataReady(): boolean {\r\n return get(this.props, 'data.orderHydration.status') === 'SUCCESS';\r\n }\r\n\r\n @computed get hasError(): boolean {\r\n return get(this.props, 'data.orderHydration.status') === 'FAILED';\r\n }\r\n\r\n @computed get order(): SalesOrder | undefined {\r\n return get(this.props, 'data.orderHydration.result.salesOrder');\r\n }\r\n\r\n @computed get products(): SimpleProduct[] {\r\n return get(this.props, 'data.orderHydration.result.products') || [];\r\n }\r\n\r\n @computed get deliveryOptions(): ProductDeliveryOptions[] {\r\n return get(this.props, 'data.orderHydration.result.deliveryOptions') || [];\r\n }\r\n\r\n @computed get priceContext(): IPriceContext {\r\n const {\r\n id,\r\n typeName,\r\n context,\r\n telemetry,\r\n resources: { freePriceText }\r\n } = this.props;\r\n return {\r\n id,\r\n typeName,\r\n context,\r\n telemetry,\r\n freePriceText\r\n };\r\n }\r\n\r\n @computed get earnedPoints(): number {\r\n const loyaltyCard = this.props.data.loyaltyCard.result;\r\n if (loyaltyCard && loyaltyCard.RewardPoints && this.order) {\r\n const pointPrograms = new Set(loyaltyCard.RewardPoints.map((point: LoyaltyRewardPoint) => point.RewardPointId));\r\n const rewardLines = this.order.LoyaltyRewardPointLines || [];\r\n let total = 0;\r\n rewardLines.forEach(line => {\r\n if ((line.RewardPointAmountQuantity || 0) > 0 && pointPrograms.has(line.RewardPointId)) {\r\n total += line.RewardPointAmountQuantity!;\r\n }\r\n });\r\n return total;\r\n }\r\n return 0;\r\n }\r\n\r\n @computed get orderSummaryProps(): IGetOrderSummaryInput | undefined {\r\n if (!this.order) {\r\n return;\r\n }\r\n const { request } = this.props.context;\r\n const { channelDeliveryOptionConfig, featureState } = this.props?.data;\r\n const isMultiplePickUpOptionEnabled = featureState?.result?.find(\r\n (item: FeatureState) => item.Name === this.multiplePickupStoreSwitchName\r\n )?.IsEnabled;\r\n const pickupDeliveryModeCode = request && request.channel && request.channel.PickupDeliveryModeCode;\r\n const emailDeliveryModeCode = request && request.channel && request.channel.EmailDeliveryModeCode;\r\n const orderDetailsLines = this.order?.SalesLines;\r\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access -- app configs are of generic type\r\n const isShowOrHideTaxEnabled = request.app.config.isEnableShowOrHideSalesTaxECommerceEnabled === true;\r\n\r\n const { salesId = '' } = request.query || {};\r\n const isCashAndCarryTransaction =\r\n (this.order.ChannelReferenceId === undefined || this.order.ChannelReferenceId === '') && salesId === '';\r\n\r\n const canShip =\r\n !isCashAndCarryTransaction &&\r\n orderDetailsLines?.some(orderDetailsLine =>\r\n orderDetailsLine.DeliveryMode && orderDetailsLine.DeliveryMode !== ''\r\n ? orderDetailsLine.DeliveryMode !==\r\n this.getDeliveryMode(\r\n orderDetailsLine,\r\n isMultiplePickUpOptionEnabled,\r\n channelDeliveryOptionConfig?.result,\r\n pickupDeliveryModeCode\r\n ) && orderDetailsLine.DeliveryMode !== emailDeliveryModeCode\r\n : orderDetailsLine\r\n );\r\n\r\n const {\r\n resources: {\r\n orderSummaryHeading,\r\n orderSummaryItemsTotalLabel,\r\n orderSummaryShippingFeeLabel,\r\n orderSummaryTaxLabel,\r\n orderSummaryGrandTotalLabel,\r\n pointsEarnedLabel\r\n }\r\n } = this.props;\r\n return {\r\n order: this.order,\r\n earnedPoints: this.earnedPoints,\r\n priceContext: this.priceContext,\r\n resource: {\r\n orderSummaryHeading,\r\n orderSummaryItemsTotalLabel,\r\n orderSummaryShippingFeeLabel,\r\n orderSummaryTaxLabel,\r\n pointsEarnedLabel,\r\n orderSummaryGrandTotalLabel\r\n },\r\n canShip,\r\n isTaxIncludedInPrice: this.order.IsTaxIncludedInPrice,\r\n isShowTaxBreakUp: isShowOrHideTaxEnabled\r\n };\r\n }\r\n\r\n @computed get paymentMethodsProps(): IPaymentMethodsInput | undefined {\r\n const tenderTypes = this.props.data.tenderTypes.result;\r\n if (!this.order || !this.order.TenderLines || !tenderTypes) {\r\n return;\r\n }\r\n\r\n const locale = get(this.props, 'context.request.locale') || 'en-US';\r\n\r\n const {\r\n resources: {\r\n paymentMethodsTitle,\r\n creditCardEndingLabel,\r\n giftCardEndingLabel,\r\n amountCoveredLabel,\r\n cashUsedLabel,\r\n loyaltyCardUsedLabel,\r\n customerAccountUsedLabel\r\n }\r\n } = this.props;\r\n\r\n return {\r\n priceContext: this.priceContext,\r\n tenderLines: this.order.TenderLines,\r\n tenderIdOperationIdMap: getTenderIdOperationIdMap(tenderTypes),\r\n locale,\r\n resource: {\r\n paymentMethodsTitle,\r\n creditCardEndingLabel,\r\n giftCardEndingLabel,\r\n amountCoveredLabel,\r\n cashUsedLabel,\r\n loyaltyCardUsedLabel,\r\n customerAccountUsedLabel\r\n }\r\n };\r\n }\r\n\r\n @computed\r\n private get _orderDetailsProducts(): OrderDetailsProduct[] {\r\n if (!ArrayExtensions.hasElements(this._products)) {\r\n this._initProductsModel();\r\n }\r\n\r\n return this._products;\r\n }\r\n\r\n @computed\r\n private get _orderDetailsAvailableProducts(): OrderDetailsProduct[] {\r\n if (!ArrayExtensions.hasElements(this._products)) {\r\n this._initProductsModel();\r\n }\r\n\r\n return this._products.filter(product => product.isProductAvailable);\r\n }\r\n\r\n @computed\r\n private get _selectedProducts(): OrderDetailsProduct[] {\r\n const products = this._orderDetailsAvailableProducts;\r\n const selectedProducts = products.filter(product => product.isSelected);\r\n if (!ArrayExtensions.hasElements(selectedProducts)) {\r\n return [];\r\n }\r\n\r\n return selectedProducts;\r\n }\r\n\r\n public constructor(props: IBremworthOrderDetailsProps<IBremworthOrderDetailsData>) {\r\n super(props);\r\n this._viewMode = OrderDetailsViewMode.detailedView;\r\n const { orderHold } = this.props.context.actionContext.requestContext.query ?? {};\r\n const iOrderHold = orderHold === '1' ? true : false;\r\n let deliveryDate: string | undefined = '';\r\n if (this.order?.SalesLines) {\r\n this.order?.SalesLines[0]?.ExtensionProperties?.forEach(function(item, index) {\r\n if (item.Key === 'deliveryDate') {\r\n deliveryDate = item.Value?.StringValue;\r\n }\r\n });\r\n }\r\n const isFormEditable = this.isWithin7Days(deliveryDate);\r\n this.state = {\r\n OrderHoldResponse: false,\r\n loading: false,\r\n salesStatus: iOrderHold,\r\n isFormEditable: isFormEditable,\r\n dispatchDates: {}\r\n };\r\n this._products = [];\r\n this.telemetryContent = getTelemetryObject(\r\n this.props.context.request.telemetryPageName!,\r\n this.props.friendlyName,\r\n this.props.telemetry\r\n );\r\n this._isSelectionModeEnabled = false;\r\n }\r\n\r\n public render(): JSX.Element {\r\n const {\r\n // @ts-ignore\r\n resources: {\r\n noSalesOrderDetailsText,\r\n loadingLabel,\r\n orderDetailCustomerReferenceText,\r\n orderDetailsInformationOrderedDate,\r\n orderDetailsInfromationProjectCode\r\n },\r\n config: { shouldShowQrCode, showChannelInfo, showTimeslot, isReorderingEnabled }\r\n } = this.props;\r\n const { isFormEditable } = this.state;\r\n const showFullAddress =\r\n this.props.config.addressOptions !== undefined &&\r\n this.props.config.addressOptions === addressOptions.showAddressWithMultiplelines;\r\n const channelIdentities = this.props.data.channels.result?.channelIdentities;\r\n const orgUnitLocations = this.props.data.orgUnitLocations.result?.orgUnitLocations;\r\n const customer = this.props.data.customerInformation && this.props.data.customerInformation.result;\r\n const originators = this.props.data.orderOriginators && this.props.data.orderOriginators.result;\r\n const originator: OrderOriginator | undefined = originators && originators.length === 1 ? originators[0] : undefined;\r\n const channelMultipleCatalogsFeature = 'Dynamics.AX.Application.ChannelMultipleCatalogsFeature';\r\n const { channelDeliveryOptionConfig, featureState } = this.props.data;\r\n const isMultiplePickUpOptionEnabled = featureState.result?.find(\r\n (item: FeatureState) => item.Name === this.multiplePickupStoreSwitchName\r\n )?.IsEnabled;\r\n const isMultipleCatalogsFeatureEnabled = featureState.result?.find(\r\n (item: FeatureState) => item.Name === channelMultipleCatalogsFeature\r\n )?.IsEnabled;\r\n // let deliveryDate: string | undefined = '';\r\n // if (this.order?.SalesLines) {\r\n // this.order?.SalesLines[0]?.ExtensionProperties?.forEach(function(item, index) {\r\n // if (item.Key === 'deliveryDate') {\r\n // deliveryDate = item.Value?.StringValue;\r\n // }\r\n // });\r\n // }\r\n const { confirmationId = '', salesId = '', transactionId = '' } = this.props.context.actionContext.requestContext.query ?? {};\r\n\r\n let orderInformationInput =\r\n this.order &&\r\n getOrderInformationInput(\r\n this.props,\r\n this.moduleName,\r\n this.order,\r\n this.priceContext,\r\n channelIdentities,\r\n orgUnitLocations,\r\n customer,\r\n originator,\r\n showChannelInfo,\r\n false,\r\n shouldShowQrCode ?? true\r\n );\r\n\r\n if (orderInformationInput) {\r\n //Create Date: add label and format the date\r\n //console.log(orderInformationInput?.createdDate);\r\n const createdDateFormat = orderInformationInput?.createdDate && onFormatDate(new Date(orderInformationInput?.createdDate));\r\n const createdDateNode: any = (\r\n <>\r\n {orderDetailsInformationOrderedDate}: <span>{createdDateFormat}</span>\r\n </>\r\n );\r\n //end of Create: Date add lable and format the date\r\n orderInformationInput = {\r\n ...orderInformationInput,\r\n count: orderInformationInput.count && +(Math.round(orderInformationInput.count * 100) / 100).toFixed(2),\r\n createdDate: createdDateNode\r\n };\r\n }\r\n\r\n const orderInformation =\r\n this._isSelectionModeEnabled || !orderInformationInput ? undefined : getOrderInformation(orderInformationInput);\r\n\r\n let viewProps: IOrderDetailsViewProps = this.getOrderDetailsProps();\r\n if (isUserTypeB2B(this.props.context.request) && orderInformationInput?.isOnlineStore && originator) {\r\n viewProps = {\r\n ...viewProps,\r\n placedBy: orderInformation?.placedBy\r\n };\r\n }\r\n\r\n if ((salesId || transactionId) && !this.props.context.actionContext.requestContext.user.isAuthenticated) {\r\n const signInUrl: string = this.props.context.actionContext.requestContext.user.signInUrl ?? '';\r\n if (Msdyn365.isBrowser) {\r\n window.location.assign(signInUrl);\r\n }\r\n\r\n return this.props.renderView(viewProps) as React.ReactElement;\r\n }\r\n\r\n if (this.hasError || !this.order) {\r\n if (((salesId || transactionId) && this.props.context.actionContext.requestContext.user.isAuthenticated) || confirmationId) {\r\n viewProps = {\r\n ...viewProps,\r\n alert: <Label className='ms-order-details__alert' label={noSalesOrderDetailsText} />\r\n };\r\n }\r\n\r\n return this.props.renderView(viewProps) as React.ReactElement;\r\n }\r\n\r\n if (!this.isDataReady) {\r\n viewProps = {\r\n ...viewProps,\r\n loading: <Label className='ms-order-details__loading' label={loadingLabel} />\r\n };\r\n return this.props.renderView(viewProps) as React.ReactElement;\r\n }\r\n\r\n const isCatalogFetaure = isMultipleCatalogsFeatureEnabled && isChannelTypeB2B(this.props.context.actionContext.requestContext);\r\n const salesLinesInput = getSalesLinesInput(\r\n this.props,\r\n this.moduleName,\r\n this.order,\r\n this.products,\r\n this.priceContext,\r\n showFullAddress,\r\n showTimeslot,\r\n this.telemetryContent,\r\n isMultiplePickUpOptionEnabled,\r\n channelDeliveryOptionConfig.result,\r\n this.deliveryOptions,\r\n this._isSelectionModeEnabled,\r\n this._orderDetailsProducts,\r\n isReorderingEnabled,\r\n isCatalogFetaure,\r\n this.props.data.catalogs?.result\r\n );\r\n // const salesLines = salesLinesInput && getSalesLines(salesLinesInput);\r\n\r\n // const renderUnitOfMeasure = (\r\n // props: IBremworthOrderDetailsProps<IBremworthOrderDetailsData>,\r\n // product: SimpleProduct | undefined,\r\n // salesLine: SalesLine\r\n // ) => {\r\n // if (salesLine.IsInvoiceLine) {\r\n // return null;\r\n // }\r\n\r\n // // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access -- Do not need type check for appsettings\r\n // if (!props.context.app.config.unitOfMeasureDisplayType || props.context.app.config.unitOfMeasureDisplayType === 'none') {\r\n // return undefined;\r\n // }\r\n\r\n // if (!product || !product.DefaultUnitOfMeasure) {\r\n // return undefined;\r\n // }\r\n\r\n // return (\r\n // <div className='msc-cartline__product-unit-of-measure'>\r\n // <span>{product.DefaultUnitOfMeasure}</span>\r\n // </div>\r\n // );\r\n // };\r\n const salesLinesInputs = salesLinesInput && getSalesLines(salesLinesInput);\r\n\r\n //get and set coupon code form saleslines\r\n let getCouponsCode: JSX.Element | undefined;\r\n let dispatchDate: JSX.Element | undefined;\r\n const salesLines = salesLinesInputs?.map((salesLinesInputs, index) => {\r\n // const salesOrderProduct = this.props.data.orderHydration.result?.products.find(\r\n // product => product.RecordId === salesLinesInputs.data.salesLine.ProductId\r\n // );\r\n // No quantity selector for invoice line\r\n // Get deliveryDate field.\r\n\r\n // dispatchDate = (\r\n // // <div\r\n // // className={classNames('msc-cart-line__quantity', {\r\n // // 'single-quantity': salesLinesInputs.data.salesLine.Quantity === 1\r\n // // })}\r\n // // id='msc-cart-line__quantity'\r\n // // >\r\n // // <label className='quantity-label'>{this.props.resources.quantityDisplayString}:</label>\r\n // // <span className='quantity-value'>\r\n // // {salesLinesInputs.data.salesLine.Quantity}{' '}\r\n // // {renderUnitOfMeasure(this.props, salesOrderProduct, salesLinesInputs.data.salesLine)}\r\n // // </span>\r\n // // </div>\r\n // <div className={classNames('msc-cart-line__delivery-date')}>\r\n // <label className='delivery-date-label'>{'Dispatch date: '}</label>\r\n // <span className='delivery-date-value'>\r\n // <DispatchDatePicker initialDate={new Date(deliveryDate ?? '')} onChange={handleDateChange} />\r\n // </span>\r\n // </div>\r\n // );\r\n if (index === 0) {\r\n if (salesLinesInputs.data.salesLine?.DiscountLines![0] !== undefined) {\r\n getCouponsCode = (\r\n <span className={'ms-order-details__order-information-coupon-code'}>\r\n {orderDetailsInfromationProjectCode}:{' '}\r\n <span>{salesLinesInputs.data.salesLine?.DiscountLines[0].DiscountCode}</span>\r\n </span>\r\n );\r\n }\r\n }\r\n //end get and set coupon code form saleslines\r\n //show/hide buyagain button\r\n {\r\n // console.log('salesLinesInputs', salesLinesInputs);\r\n }\r\n return {\r\n ...salesLinesInputs,\r\n buyAgainButton: this.props.config.buyItAgainSalesLineButton ? salesLinesInputs?.buyAgainButton : null,\r\n coupons: getCouponsCode !== undefined ? getCouponsCode : undefined,\r\n getData: dispatchDate\r\n };\r\n });\r\n // Get customer reference field.\r\n let customerReferenceNode = null;\r\n this.props.data.orderHydration.result?.salesOrder.ExtensionProperties?.forEach(function(item, index) {\r\n if (item.Key === 'customerReference' && item.Value?.StringValue) {\r\n customerReferenceNode = (\r\n <span className={'ms-order-details__order-information-customer-reference'}>\r\n {orderDetailCustomerReferenceText}: <span>{item.Value?.StringValue}</span>\r\n </span>\r\n );\r\n }\r\n });\r\n // const { orderHold } = this.props.context.actionContext.requestContext.query ?? {};\r\n // const { salesStatus } = this.state.salesStatus;\r\n viewProps = {\r\n ...viewProps,\r\n salesOrder: this.order,\r\n orderInfomation: orderInformation,\r\n customerReference: customerReferenceNode,\r\n tableViewActions: this._renderTableViewActions(),\r\n viewModes: this._renderViewModes(),\r\n salesLines,\r\n table: this._renderOrderDetailsTable(),\r\n groups: this._renderOrderGroups(salesLines, isMultiplePickUpOptionEnabled),\r\n orderSummary: this._renderOrderSummary(),\r\n payment: this._renderOrderPayment(),\r\n help: this._renderOrderHelp(),\r\n printDiv: this._renderPrint(),\r\n removeOrderHold: this.state.salesStatus && this._renderRemoveOrderHold(),\r\n salesStatus: this.state.salesStatus ?? false,\r\n orderHoldStatus: this._renderRemoveOrderHoldStatus(),\r\n editOrderButton: isFormEditable && this._renderSaveOrderButton()\r\n };\r\n\r\n return this.props.renderView(viewProps) as React.ReactElement;\r\n }\r\n public isWithin7Days(givenDateString: string): boolean {\r\n const givenDate = new Date(givenDateString);\r\n const currentDate = new Date();\r\n const diffTime = Math.abs(givenDate.getTime() - currentDate.getTime());\r\n const diffDays = diffTime / (1000 * 60 * 60 * 24);\r\n if (diffDays > 0 && diffDays >= 7) {\r\n return false;\r\n }\r\n return false;\r\n }\r\n public handleOrderDetailsHeadingChange = (event: ContentEditableEvent) => (this.props.config.heading!.text = event.target.value);\r\n\r\n /**\r\n * Updates view mode to be list view.\r\n */\r\n private readonly _setListViewMode = () => {\r\n this._viewMode = OrderDetailsViewMode.listView;\r\n };\r\n\r\n /**\r\n * Updates view mode to be detailed view.\r\n */\r\n private readonly _setDetailedViewMode = () => {\r\n this._viewMode = OrderDetailsViewMode.detailedView;\r\n };\r\n /**\r\n * Render Print Button view mode to be detailed view.\r\n */\r\n private readonly _renderPrint = (): JSX.Element => {\r\n return (\r\n <div>\r\n {/* Pass dynamic div content to PrintComponent */}\r\n <PrintComponent />\r\n </div>\r\n );\r\n };\r\n private updateQueryParam = () => {\r\n const currentUrl = window.location.href;\r\n const url = new URL(currentUrl);\r\n\r\n // Update or add the 'arg' query parameter\r\n url.searchParams.set('orderHold', '1');\r\n\r\n // Create the new URL string with updated parameters\r\n const newUrl = `${url.protocol}//${url.host}${url.pathname}?${url.searchParams.toString()}`;\r\n\r\n // Update the URL without reloading the page\r\n window.history.pushState({ path: newUrl }, '', newUrl);\r\n\r\n //console.log('Updated URL:', newUrl); // Optional: Check the updated URL\r\n };\r\n private handleClick = () => {\r\n this.setState({ loading: true });\r\n\r\n this.updateOrderHoldAsync()\r\n .then(result => {\r\n //console.log(result);\r\n\r\n // Ensure result is coerced to a boolean\r\n const isOrderHoldResponse = !!result;\r\n this.updateQueryParam();\r\n this.setState({\r\n salesStatus: true,\r\n OrderHoldResponse: isOrderHoldResponse // Coerce to boolean\r\n });\r\n })\r\n .catch(error => {\r\n //console.error('Error fetching data:', error);\r\n\r\n // Handle error case, set appropriate state values\r\n this.setState({\r\n salesStatus: false,\r\n OrderHoldResponse: false // Ensure this is boolean\r\n });\r\n })\r\n .finally(() => {\r\n // Always stop loading indicator\r\n this.setState({ loading: false });\r\n });\r\n };\r\n\r\n private updateOrderHoldAsync = () => {\r\n const { salesId = '', transactionId = '' } = this.props.context.actionContext.requestContext.query ?? {};\r\n\r\n return new Promise((resolve, reject) => {\r\n updateOrderHoldAsync({ callerContext: this.props.context.actionContext }, salesId || transactionId)\r\n .then(response => {\r\n if (!response) {\r\n return reject(new Error('No data received from API'));\r\n }\r\n this.updateQueryParam();\r\n return resolve(response); // Resolve with the valid response data\r\n })\r\n .catch(error => {\r\n //console.error('Error in updateOAsync:', error);\r\n return reject(error); // Reject with the error in case of failure\r\n });\r\n });\r\n };\r\n\r\n /**\r\n * Render order hold status view mode to be detailed view.\r\n */\r\n private readonly _renderRemoveOrderHoldStatus = (): JSX.Element => {\r\n const {\r\n resources: { orderDetailsOrderHoldStatusText }\r\n } = this.props;\r\n return <span className='ms-order-details__sales-status-order-hold'>{orderDetailsOrderHoldStatusText}</span>;\r\n };\r\n /**\r\n * Render remove order hold Button view mode to be detailed view.\r\n */\r\n private readonly _renderRemoveOrderHold = (): JSX.Element => {\r\n const {\r\n resources: { orderDetailsOrderHoldText }\r\n } = this.props;\r\n return (\r\n <Button\r\n onClick={this.handleClick}\r\n disabled={this.state.loading}\r\n className='ms-order-details__btn-order-hold'\r\n title={orderDetailsOrderHoldText}\r\n >\r\n {orderDetailsOrderHoldText}\r\n </Button>\r\n );\r\n };\r\n\r\n /**\r\n * Render remove order cancel order Button view mode to be detailed view.\r\n */\r\n private readonly _renderCancelOrderButton = (): JSX.Element => {\r\n const {\r\n resources: { orderDetailsOrderCancelButtonText }\r\n } = this.props;\r\n return (\r\n <Button\r\n onClick={this.handleClick}\r\n disabled={this.state.loading}\r\n className='ms-order-details__btn-order-cancel'\r\n title={orderDetailsOrderCancelButtonText}\r\n >\r\n {orderDetailsOrderCancelButtonText}\r\n </Button>\r\n );\r\n };\r\n\r\n /** Render remove order cancel order Button view mode to be detailed view.\r\n */\r\n private readonly _renderSaveOrderButton = (): JSX.Element => {\r\n const {\r\n resources: { orderDetailsOrderSaveButtonText }\r\n } = this.props;\r\n return (\r\n <Button\r\n onClick={this.handleClick}\r\n disabled={this.state.loading}\r\n className='ms-order-details__btn-order-cancel'\r\n title={orderDetailsOrderSaveButtonText}\r\n >\r\n {orderDetailsOrderSaveButtonText}\r\n </Button>\r\n );\r\n };\r\n /**\r\n * Renders order groups for order details.\r\n * @param salesLines - Sale lines.\r\n * @param isRetailMultiplePickUpOptionEnabled - Flag which specifies pick up options.\r\n * @returns A react node or undefined.\r\n */\r\n private readonly _renderOrderGroups = (\r\n salesLines: ISalesLine[] | undefined,\r\n isRetailMultiplePickUpOptionEnabled: boolean | undefined\r\n ) => {\r\n if (!salesLines || this._viewMode !== OrderDetailsViewMode.detailedView) {\r\n return undefined;\r\n }\r\n const { isFormEditable } = this.state;\r\n\r\n const { salesId = '' } = this.props.context.request.query ?? {};\r\n const shouldShowAddress =\r\n (this.props.config.addressOptions !== undefined &&\r\n this.props.config.addressOptions === addressOptions.showAddressWithSingleLine) ||\r\n this.props.config.addressOptions === addressOptions.showAddressWithMultiplelines;\r\n const isCashAndCarryTransaction =\r\n (this.order!.ChannelReferenceId === undefined || this.order!.ChannelReferenceId === '') && salesId === '';\r\n return getGroups({\r\n moduleName: this.moduleName,\r\n salesLines,\r\n resources: {\r\n orderItemLabel: this.props.resources.orderItemLabel,\r\n orderItemsLabel: this.props.resources.orderItemsLabel\r\n },\r\n showAddress: shouldShowAddress,\r\n showTimeslot: this.props.config.showTimeslot,\r\n retailMultiplePickUpOptionEnabled: isRetailMultiplePickUpOptionEnabled,\r\n isCashAndCarryTransaction,\r\n isSelectionModeEnabled: this._isSelectionModeEnabled,\r\n showTotalAmount: true,\r\n orderCancelButton: isFormEditable && this._renderCancelOrderButton()\r\n });\r\n };\r\n\r\n /**\r\n * Renders order summary for order details.\r\n * @returns A react node or undefined.\r\n */\r\n private readonly _renderOrderSummary = () => {\r\n if (this.orderSummaryProps && this._viewMode === OrderDetailsViewMode.detailedView) {\r\n return getOrderDetailsOrderSummary(this.orderSummaryProps);\r\n }\r\n return undefined;\r\n };\r\n\r\n /**\r\n * Renders order payment info for order details.\r\n * @returns A react node or undefined.\r\n */\r\n private readonly _renderOrderPayment = () => {\r\n if (this.paymentMethodsProps && this._viewMode === OrderDetailsViewMode.detailedView) {\r\n return getOrderDetailsPaymentMethods(this.paymentMethodsProps);\r\n }\r\n return undefined;\r\n };\r\n\r\n /**\r\n * Renders order help info for order details.\r\n * @returns A react node or undefined.\r\n */\r\n private readonly _renderOrderHelp = () => {\r\n const {\r\n resources: { needHelpLabel, helpLineNumberLabel, helpLineContactAriaLabel },\r\n config: { contactNumber }\r\n } = this.props;\r\n\r\n if (contactNumber && this._viewMode === OrderDetailsViewMode.detailedView) {\r\n return getOrderDetailsHelp({\r\n needHelpLabel,\r\n helpLineNumberLabel,\r\n contactNumber,\r\n helpLineContactAriaLabel,\r\n telemetryContent: this.telemetryContent\r\n });\r\n }\r\n\r\n return undefined;\r\n };\r\n\r\n /**\r\n * Renders order details table view.\r\n * @returns A react node or undefined.\r\n */\r\n private readonly _renderOrderDetailsTable = () => {\r\n if (this._viewMode !== OrderDetailsViewMode.listView) {\r\n return undefined;\r\n }\r\n\r\n const { featureState } = this.props.data;\r\n const channelMultipleCatalogsFeature = 'Dynamics.AX.Application.ChannelMultipleCatalogsFeature';\r\n const isMultiplePickUpOptionEnabled = featureState.result?.find(\r\n (item: FeatureState) => item.Name === this.multiplePickupStoreSwitchName\r\n )?.IsEnabled;\r\n const isMultipleCatalogsFeatureEnabled = featureState.result?.find(\r\n (item: FeatureState) => item.Name === channelMultipleCatalogsFeature\r\n )?.IsEnabled;\r\n const { salesId = '' } = this.props.context.request.query ?? {};\r\n const isCashAndCarryTransaction =\r\n (this.order!.ChannelReferenceId === undefined || this.order!.ChannelReferenceId === '') && salesId === '';\r\n\r\n return (\r\n this.order && (\r\n <OrderDetailsTableComponent\r\n id={this.props.id}\r\n typeName={this.props.typeName}\r\n context={this.props.context}\r\n className='ms-order-details__table-list'\r\n imageSettings={this.props.config.imageSettings}\r\n isReorderingEnabled={this.props.config.isReorderingEnabled}\r\n isRetailMultiplePickUpOptionEnabled={isMultiplePickUpOptionEnabled}\r\n isSelectionModeEnabled={this._isSelectionModeEnabled}\r\n isCashAndCarryTransaction={isCashAndCarryTransaction}\r\n data={{\r\n order: this.order,\r\n products: this._orderDetailsProducts,\r\n deliveryOptions: this.deliveryOptions,\r\n channelDeliveryOptionConfig: this.props.data.channelDeliveryOptionConfig.result\r\n }}\r\n resources={this.props.resources}\r\n isChannelMultipleCatalogsFeatureEnabled={\r\n isMultipleCatalogsFeatureEnabled && isChannelTypeB2B(this.props.context.actionContext.requestContext)\r\n }\r\n />\r\n )\r\n );\r\n };\r\n\r\n /**\r\n * Switches to selection mode.\r\n */\r\n private readonly _enableSelection = () => {\r\n for (const product of this._orderDetailsAvailableProducts) {\r\n product.isSelected = true;\r\n }\r\n this._isSelectionModeEnabled = true;\r\n };\r\n\r\n /**\r\n * Disables selection mode.\r\n */\r\n private readonly _disableSelection = () => {\r\n this._isSelectionModeEnabled = false;\r\n };\r\n\r\n private _renderEnableSelectionButton(className: string): JSX.Element | undefined {\r\n if (this._isSelectionModeEnabled || !ArrayExtensions.hasElements(this._orderDetailsAvailableProducts)) {\r\n return undefined;\r\n }\r\n\r\n return (\r\n <Button\r\n className={`${className}__enable-selection`}\r\n onClick={this._enableSelection}\r\n aria-label={this.props.resources.orderDetailsEnableSelectionButtonAriaLabel}\r\n title={this.props.resources.orderDetailsEnableSelectionButtonText}\r\n >\r\n {this.props.resources.orderDetailsEnableSelectionButtonText}\r\n </Button>\r\n );\r\n }\r\n\r\n private _renderDisableSelectionButton(className: string): JSX.Element | undefined {\r\n if (!this._isSelectionModeEnabled) {\r\n return undefined;\r\n }\r\n\r\n return (\r\n <Button\r\n className={`${className}__disable-selection`}\r\n onClick={this._disableSelection}\r\n aria-label={this.props.resources.orderDetailsDisableSelectionButtonAriaLabel}\r\n title={this.props.resources.orderDetailsDisableSelectionButtonText}\r\n >\r\n {this.props.resources.orderDetailsDisableSelectionButtonText}\r\n </Button>\r\n );\r\n }\r\n\r\n private _renderBuySelected(className: string): JSX.Element | undefined {\r\n if (!this._isSelectionModeEnabled) {\r\n return undefined;\r\n }\r\n\r\n return (\r\n <BuySelectedComponent\r\n className={`${className}__buy-selected msc-btn`}\r\n id={this.props.id}\r\n typeName={this.props.typeName}\r\n data={{ products: this._selectedProducts }}\r\n context={this.props.context}\r\n resources={this.props.resources}\r\n isReorderingEnabled={this.props.config.isReorderingEnabled}\r\n />\r\n );\r\n }\r\n\r\n /**\r\n * Renders actions for table view.\r\n * @returns A react node.\r\n */\r\n private readonly _renderTableViewActions = () => {\r\n if (!this.props.config.isReorderingEnabled) {\r\n return undefined;\r\n }\r\n\r\n const containerClassName = 'ms-order-details__table-view-actions';\r\n return (\r\n <div className={containerClassName}>\r\n {this._renderBuySelected(containerClassName)}\r\n {this._renderEnableSelectionButton(containerClassName)}\r\n {this._renderDisableSelectionButton(containerClassName)}\r\n </div>\r\n );\r\n };\r\n\r\n private _initProductsModel(): void {\r\n const orderDetailProducts = this.props.data.orderHydration.result?.salesOrder.SalesLines?.map(salesLine => {\r\n const salesOrderProduct = this.props.data.orderHydration.result?.products.find(\r\n product => product.RecordId === salesLine.ProductId\r\n );\r\n return new OrderDetailsProduct(salesLine, salesOrderProduct);\r\n });\r\n\r\n this._products = ArrayExtensions.validValues(orderDetailProducts);\r\n }\r\n\r\n /**\r\n * Renders view mode switches for order details.\r\n * @returns A react node.\r\n */\r\n private readonly _renderViewModes = () => {\r\n if (!this.props.config.isGridViewEnabled) {\r\n return null;\r\n }\r\n\r\n const viewModesClassName = 'ms-order-details__ms-order-details-view-modes';\r\n return (\r\n <div className={viewModesClassName}>\r\n <Button\r\n className={classname(\r\n `${viewModesClassName}__detailed-view`,\r\n this._viewMode === OrderDetailsViewMode.detailedView ? 'msc-view-modes__selected' : ''\r\n )}\r\n role='button'\r\n title={this.props.resources.orderDetailsDetailedViewModeAriaLabel}\r\n aria-label={this.props.resources.orderDetailsDetailedViewModeAriaLabel}\r\n onClick={this._setDetailedViewMode}\r\n />\r\n <Button\r\n className={classname(\r\n `${viewModesClassName}__list-view`,\r\n this._viewMode === OrderDetailsViewMode.listView ? 'msc-view-modes__selected' : ''\r\n )}\r\n role='button'\r\n title={this.props.resources.orderDetailsListViewModeAriaLabel}\r\n aria-label={this.props.resources.orderDetailsListViewModeAriaLabel}\r\n onClick={this._setListViewMode}\r\n />\r\n </div>\r\n );\r\n };\r\n\r\n /**\r\n * Get the order details view properties.\r\n * @returns The initial values of order details view properties.\r\n */\r\n private readonly getOrderDetailsProps = (): IOrderDetailsViewProps => {\r\n const {\r\n resources: { backToShopping, orderDetailsBuyItemsAgainHeaderText },\r\n config: { heading }\r\n } = this.props;\r\n const moduleProps = { moduleProps: this.props, className: classname('ms-order-details', this.props.config.className) };\r\n const backToShoppingUrl = getUrlSync('home', this.props.context.actionContext) ?? '';\r\n\r\n return {\r\n ...this.props,\r\n moduleProps,\r\n heading: heading && (\r\n <Text\r\n {...heading}\r\n className='ms-order-details__heading'\r\n text={this._isSelectionModeEnabled ? orderDetailsBuyItemsAgainHeaderText : heading.text}\r\n tag={heading.tag ?? 'h2'}\r\n editProps={{ onEdit: this.handleOrderDetailsHeadingChange, requestContext: this.props.context.request }}\r\n />\r\n ),\r\n backToShoppingLink: backToShoppingUrl && (\r\n <Button className='ms-order-details__btn-keep-shopping' href={backToShoppingUrl}>\r\n {backToShopping}\r\n </Button>\r\n ),\r\n footerProps: { className: 'ms-order-details__footer' }\r\n };\r\n };\r\n\r\n private readonly getDeliveryMode = (\r\n salesLine: SalesLine,\r\n featureSate: boolean = false,\r\n channelDeliveryOptionConfig?: ChannelDeliveryOptionConfiguration,\r\n pickupDeliveryMode?: string\r\n ) => {\r\n if (!featureSate) {\r\n return pickupDeliveryMode;\r\n }\r\n return channelDeliveryOptionConfig?.PickupDeliveryModeCodes?.find(deliveryMode => deliveryMode === salesLine.DeliveryMode);\r\n };\r\n}\r\n\r\nexport default OrderDetails;\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 { format, INodeProps } from '@msdyn365-commerce-modules/utilities';\r\nimport classNames from 'classnames';\r\nimport * as React from 'react';\r\n\r\nimport { ISalesLine, groupSalesLines, IDeliveryType, ISalesStatusCode } from '@msdyn365-commerce-modules/order-management';\r\n\r\nexport interface IGroupDelivery {\r\n deliveryProps: INodeProps;\r\n pickupProps: INodeProps;\r\n showTimeslot: boolean;\r\n heading: React.ReactNode;\r\n count: React.ReactNode;\r\n processing: React.ReactNode;\r\n trackingInfo: React.ReactNode;\r\n address: React.ReactNode;\r\n shippingItemsToYou?: React.ReactNode;\r\n pickupDateTimeslot?: React.ReactNode;\r\n shippedStatusCheck?: React.ReactNode;\r\n orderCancelButton?: React.ReactNode;\r\n}\r\n\r\nexport interface IGroup {\r\n groupProps: INodeProps;\r\n salesLinesProps: INodeProps;\r\n delivery: IGroupDelivery;\r\n salesLines: ISalesLine[];\r\n address: React.ReactNode;\r\n\r\n // Row data\r\n data: {\r\n count: number;\r\n deliveryType: IDeliveryType;\r\n salesStatus: ISalesStatusCode;\r\n };\r\n isCashAndCarryTransaction?: boolean;\r\n}\r\n\r\nexport interface IGroupsInput {\r\n moduleName: string;\r\n salesLines: ISalesLine[];\r\n resources: {\r\n orderItemLabel: string;\r\n orderItemsLabel: string;\r\n pickupItemsHeader?: string;\r\n pickingItemsLabel?: string;\r\n shippingAddressTitle?: string;\r\n shippingItemToYouLabel?: string;\r\n shippingItemToOBOCustomerLabel?: string;\r\n emailItemsHeader?: string;\r\n emailingItemsLabel?: string;\r\n };\r\n showAddress?: boolean;\r\n isConfirmationView?: boolean;\r\n showTimeslot?: boolean;\r\n retailMultiplePickUpOptionEnabled?: boolean;\r\n isCashAndCarryTransaction?: boolean;\r\n isSelectionModeEnabled?: boolean;\r\n isOboRequest?: boolean;\r\n customerName?: string;\r\n showTotalAmount?: boolean;\r\n orderCancelButton?: React.ReactNode;\r\n}\r\n\r\nexport interface IGroups {\r\n groupsProps: INodeProps;\r\n groups: IGroup[];\r\n}\r\n\r\n/**\r\n * Creates sales lines node props object.\r\n * @param moduleName - Module name to use as a class name prefix.\r\n * @param isSelectionModeEnabled - Specifies if the selection mode is enabled for the sales lines.\r\n * @returns Sales lines node props with the class name to use for the sales lines container.\r\n */\r\nconst getSalesLinesProps: (moduleName: string, isSelectionModeEnabled?: boolean) => INodeProps = (\r\n moduleName: string,\r\n isSelectionModeEnabled?: boolean\r\n): INodeProps => {\r\n const className = `${moduleName}__sales-lines`;\r\n const salesLinesProps: INodeProps = {\r\n className: classNames(\r\n className,\r\n isSelectionModeEnabled ? `${className}__selection-global-enabled` : `${className}__selection-global-disabled`\r\n )\r\n };\r\n return salesLinesProps;\r\n};\r\n\r\nexport const getGroups = ({\r\n moduleName,\r\n salesLines,\r\n showAddress,\r\n showTimeslot,\r\n isConfirmationView,\r\n retailMultiplePickUpOptionEnabled,\r\n isCashAndCarryTransaction,\r\n isSelectionModeEnabled,\r\n customerName,\r\n isOboRequest,\r\n showTotalAmount,\r\n orderCancelButton,\r\n resources: {\r\n orderItemLabel,\r\n orderItemsLabel,\r\n pickupItemsHeader,\r\n pickingItemsLabel,\r\n shippingAddressTitle,\r\n shippingItemToYouLabel,\r\n shippingItemToOBOCustomerLabel,\r\n emailItemsHeader,\r\n emailingItemsLabel\r\n }\r\n}: IGroupsInput): IGroups => {\r\n const groups = groupSalesLines(salesLines).map(group => {\r\n const { deliveryType, salesStatus, salesLines: _salesLines } = group;\r\n let count = showTotalAmount ? group.count : salesLines.length;\r\n count = +(Math.round(count * 100) / 100).toFixed(2);\r\n const itemLabel = count === 1 ? orderItemLabel : orderItemsLabel;\r\n const pickingItemsLabelText = pickingItemsLabel && format(pickingItemsLabel, count, itemLabel);\r\n\r\n const shippingItemsToText = isOboRequest\r\n ? shippingItemToOBOCustomerLabel && format(shippingItemToOBOCustomerLabel, count, itemLabel, customerName)\r\n : shippingItemToYouLabel && format(shippingItemToYouLabel, count, itemLabel);\r\n const emailingItemsLabelText = emailingItemsLabel && format(emailingItemsLabel, count, itemLabel);\r\n const multiplePickup = deliveryType === 'ship' ? 'ship' : deliveryType === 'email' ? 'email' : 'pickup';\r\n const groupProps = { className: `${moduleName}__group-deliveryType-${multiplePickup} salesStatus-${salesStatus}` };\r\n\r\n const salesLinesProps = getSalesLinesProps(moduleName, isSelectionModeEnabled);\r\n const address = _salesLines[0].address;\r\n const trackingInfo = _salesLines[0].trackingInfo;\r\n const isProcessing = _salesLines[0].data.salesStatus === 'processing';\r\n const pickDateTimeslot = _salesLines[0].pickupDateTimeslot;\r\n const shippedStatusCheck = _salesLines[0].data.salesStatus;\r\n const multiplePickUp = retailMultiplePickUpOptionEnabled ? 'multiple-pickUp' : '';\r\n const delivery: IGroupDelivery = {\r\n deliveryProps: { className: `${moduleName}__group-delivery ${multiplePickUp}` },\r\n orderCancelButton: orderCancelButton,\r\n pickupProps: { className: `${moduleName}__delivery-container` },\r\n heading: (\r\n <span className={`${moduleName}__group-delivery-heading`}>\r\n {isProcessing\r\n ? isConfirmationView\r\n ? deliveryType === 'pickUp'\r\n ? pickupItemsHeader\r\n : deliveryType === 'ship'\r\n ? shippingAddressTitle\r\n : deliveryType === 'email'\r\n ? emailItemsHeader\r\n : deliveryType\r\n : _salesLines[0].deliveryType\r\n : _salesLines[0].salesStatus}\r\n </span>\r\n ),\r\n processing: isProcessing ? (\r\n <span className={`${moduleName}__group-delivery-processing-label`}>{_salesLines[0].salesStatus}</span>\r\n ) : (\r\n undefined\r\n ),\r\n count: !isConfirmationView && <span className={`${moduleName}__group-delivery-total-items`}>{`(${count} ${itemLabel})`}</span>,\r\n shippingItemsToYou:\r\n isConfirmationView && deliveryType === 'ship' ? (\r\n <span className={`${moduleName}__sales-lines-shipping-items-label`}>{shippingItemsToText}</span>\r\n ) : deliveryType === 'pickUp' ? (\r\n <span className={`${moduleName}__sales-lines-picking-items-label`}>{pickingItemsLabelText}</span>\r\n ) : deliveryType === 'email' ? (\r\n <span className={`${moduleName}__sales-lines-emailing-items-label`}>{emailingItemsLabelText}</span>\r\n ) : (\r\n <span className={`${moduleName}__sales-lines-picking-items-label`}>{pickingItemsLabelText}</span>\r\n ),\r\n trackingInfo,\r\n address,\r\n pickupDateTimeslot: pickDateTimeslot,\r\n showTimeslot: showTimeslot || false,\r\n shippedStatusCheck\r\n };\r\n return {\r\n groupProps,\r\n salesLinesProps,\r\n delivery,\r\n salesLines: _salesLines,\r\n address: showAddress && address,\r\n data: {\r\n count,\r\n deliveryType,\r\n salesStatus\r\n },\r\n isCashAndCarryTransaction\r\n };\r\n });\r\n\r\n return {\r\n groupsProps: { className: `${moduleName}__groups` },\r\n groups\r\n };\r\n};\r\n"],"names":["HeadingTag","OrderSummaryLine","_ref","name","label","value","priceContext","React","className","PriceComponent","Object","assign","data","price","CustomerContextualPrice","getOrderDetailsPaymentMethods","tenderLines","tenderIdOperationIdMap","resource","paymentMethodsTitle","creditCardEndingLabel","giftCardEndingLabel","amountCoveredLabel","loyaltyCardUsedLabel","cashUsedLabel","customerAccountUsedLabel","OPERATIONS","getLastFourDigit","digits","arguments","length","undefined","substr","paymentMethodsProps","title","methods","reduce","lines","tenderLine","TenderTypeId","push","showAmount","cardLastFourDigit","MaskedCardNumber","isValidCardNumber","isNaN","amount","AuthorizedAmount","Amount","showAmountCovered","key","CardTypeId","getCard","GiftCardId","getGiftCertificate","LoyaltyCardId","getLoyalty","getCash","CustomerId","getCustomerAccountPayment","OrderDetailsHeaderCheckboxComponent","props","switchCheckedState","onSelectAll","isSelectedAll","classnames","type","resources","orderDetailsSelectAllRadioAriaLabelText","checked","onChange","OrderDetailsDesktopHeaderCellsComponent","columnWithNumberClassName","shouldDisplayUnitOfMeasure","context","app","config","unitOfMeasureDisplayType","isSelectionModeEnabled","orderDetailsProductNumberText","orderDetailsProductText","orderDetailsUnitPriceText","orderDetailsModeOfDeliveryText","isCashAndCarryTransaction","orderDetailsStatusText","orderDetailsQuantityText","orderDetailsUnitOfMeasureText","orderDetailsTotalText","orderDetailsActionsText","OrderDetailsMobileHeaderCellsComponent","OrderDetailsTableHeaderComponent","rowClassName","headerCells","isMobile","variant","VariantType","Viewport","request","formatAmount","currencyCode","cultureFormatter","formatCurrency","OrderDetailsRowCheckboxComponent","product","checkboxRowAriaLabel","format","orderDetailsSelectRadioAriaLabelText","salesLine","ProductId","onSelectLine","isSelected","isProductAvailable","disabled","OrderDetailsRowProductImageComponent","_product$simpleProduc","_product$simpleProduc2","_product$simpleProduc3","_product$simpleProduc4","_props$imageSettings","fallbackImageUrl","getFallbackImageUrl","simpleProduct","ItemId","actionContext","requestContext","apiSettings","containerClassName","productName","Name","Description","Image","altText","src","PrimaryImageUrl","fallBackSrc","gridSettings","imageSettings","defaultImageSettings","loadFailureBehavior","OrderDetailsDesktopTableRowCellComponent","_props$context$reques","_props$context$reques2","_product$simpleProduc5","_product$simpleProduc6","_product$simpleProduc7","salesOrder","deliveryOptions","pickupMode","getDeliveryDescriptionByProductId","DeliveryMode","pickupDeliveryModeCode","channel","PickupDeliveryModeCode","emailDeliveryModeCode","EmailDeliveryModeCode","deliveryType","getDeliveryType","isRetailMultiplePickUpOptionEnabled","channelDeliveryOptionConfig","deliveryTypeStringMap","pickUp","pickedUpSalesLines","ship","deliveredSalesLines","carryOut","carryOutSalesLines","email","emailSalesLines","deliveryTypeString","getDeliveryTypeString","salesStatusString","canceled","orderStatusCanceled","readyForPickup","orderStatusReadyForPickup","pickedUp","orderStatusPickedUp","processing","orderStatusProcessing","shipped","orderStatusShipped","unknown","emailed","orderStatusEmailed","getSalesStatusCode","SalesStatusValue","productUrl","ObjectExtensions","isNullOrUndefined","getProductPageUrlSync","MsDyn365","isBrowser","isChannelTypeB2B","_salesLine$CatalogId","fullUrl","URL","window","location","href","searchParams","set","CatalogId","currentProduct","OrderDetailsProduct","Dimensions","map","dimension","_dimension$DimensionV","DimensionValue","Value","filter","dimensionValue","StringExtensions","isNullOrWhitespace","join","orderDetailsProductDimensionsSeparator","orderDetailsUnavailableProductText","Price","CurrencyCode","Quantity","UnitOfMeasureSymbol","TotalAmount","BuySelectedComponent","products","_objectSpread","orderDetailsBuySelectedButtonText","orderDetailsBuyItAgainButtonText","orderDetailsBuySelectedButtonAriaLabel","orderDetailsBuyItAgainButtonAriaLabel","isReorderingEnabled","isIcon","setShowPreviousActions","OrderDetailsExtraActionsPopupComponent","_props$data$product$s","_props$data$product$s2","orderDetailsViewDetailsButtonAriaLabel","orderDetailsViewDetailsButtonText","shouldShowActions","setShowActions","useState","_salesLine$CatalogId2","onClickViewDetails","toggle","shouldShowActionsNewValue","actionsContainerClassName","Button","onClick","OrderDetailsMobileTableRowCellComponent","_product$simpleProduc8","_product$simpleProduc9","orderDetailsQuantityMobileText","OrderDetailsTableRowComponent","isMobileView","onSelectAllHandler","OrderDetailsTableComponent","headerClassName","availableProducts","typeName","id","ArrayExtensions","all","isChannelMultipleCatalogsFeatureEnabled","index","order","PrintComponent","handlePrint","printContent","document","getElementsByClassName","innerHTML","print","xmlns","width","height","fill","viewBox","d","addressOptions","OrderDetailsViewMode","handleDateChange","date","itemId","console","log","OrderDetails","constructor","_this$props$context$a2","_this$order","super","moduleName","multiplePickupStoreSwitchName","handleOrderDetailsHeadingChange","event","this","heading","text","target","_setListViewMode","_viewMode","listView","_setDetailedViewMode","detailedView","_renderPrint","updateQueryParam","currentUrl","url","newUrl","protocol","host","pathname","toString","history","pushState","path","handleClick","setState","loading","updateOrderHoldAsync","then","result","isOrderHoldResponse","salesStatus","OrderHoldResponse","catch","error","finally","_this$props$context$a","salesId","transactionId","query","Promise","resolve","reject","callerContext","response","Error","_renderRemoveOrderHoldStatus","orderDetailsOrderHoldStatusText","_renderRemoveOrderHold","orderDetailsOrderHoldText","state","_renderCancelOrderButton","orderDetailsOrderCancelButtonText","_renderSaveOrderButton","orderDetailsOrderSaveButtonText","_renderOrderGroups","salesLines","_this$props$context$r","isFormEditable","shouldShowAddress","showAddressWithSingleLine","showAddressWithMultiplelines","ChannelReferenceId","getGroups","orderItemLabel","orderItemsLabel","showAddress","showTimeslot","retailMultiplePickUpOptionEnabled","_isSelectionModeEnabled","showTotalAmount","orderCancelButton","_renderOrderSummary","orderSummaryProps","_ref2","earnedPoints","orderSummaryHeading","orderSummaryItemsTotalLabel","orderSummaryShippingFeeLabel","orderSummaryTaxLabel","orderSummaryGrandTotalLabel","pointsEarnedLabel","canShip","isTaxIncludedInPrice","isShowTaxBreakUp","subTotal","SubtotalAmountWithoutTax","SubtotalAmount","taxOnShippingCharge","TaxOnShippingCharge","shippingChargeAmount","ShippingChargeAmount","shippingCharge","subtotal","shipping","tax","TaxAmount","totalAmount","getOrderDetailsOrderSummary","_renderOrderPayment","_renderOrderHelp","needHelpLabel","helpLineNumberLabel","helpLineContactAriaLabel","contactNumber","telemetryContent","payLoad","getPayloadObject","TelemetryConstant","ContactNumber","attributes","getTelemetryAttributes","helpProps","getOrderDetailsHelp","_renderOrderDetailsTable","_featureState$result","_featureState$result2","_this$props$context$r2","featureState","isMultiplePickUpOptionEnabled","find","item","IsEnabled","isMultipleCatalogsFeatureEnabled","_orderDetailsProducts","_enableSelection","_orderDetailsAvailableProducts","_disableSelection","_renderTableViewActions","_renderBuySelected","_renderEnableSelectionButton","_renderDisableSelectionButton","_renderViewModes","isGridViewEnabled","viewModesClassName","classname","role","orderDetailsDetailedViewModeAriaLabel","orderDetailsListViewModeAriaLabel","getOrderDetailsProps","_getUrlSync","_heading$tag","backToShopping","orderDetailsBuyItemsAgainHeaderText","moduleProps","backToShoppingUrl","getUrlSync","Text","tag","editProps","onEdit","backToShoppingLink","footerProps","getDeliveryMode","_channelDeliveryOptio","featureSate","pickupDeliveryMode","PickupDeliveryModeCodes","deliveryMode","orderHold","iOrderHold","deliveryDate","_this$order2","SalesLines","ExtensionProperties","forEach","_item$Value","Key","StringValue","isWithin7Days","dispatchDates","_products","getTelemetryObject","telemetryPageName","friendlyName","telemetry","isCurrentChannel","ChannelId","get","isDataReady","hasError","freePriceText","loyaltyCard","RewardPoints","pointPrograms","Set","point","RewardPointId","rewardLines","LoyaltyRewardPointLines","total","line","RewardPointAmountQuantity","has","_this$props","_featureState$result3","_this$order3","orderDetailsLines","isShowOrHideTaxEnabled","isEnableShowOrHideSalesTaxECommerceEnabled","some","orderDetailsLine","IsTaxIncludedInPrice","tenderTypes","TenderLines","locale","getTenderIdOperationIdMap","hasElements","_initProductsModel","_selectedProducts","selectedProducts","render","_this$props$data$chan","_this$props$data$orgU","_featureState$result4","_featureState$result5","_this$props$context$a3","_orderInformationInpu3","_this$props$data$cata","_this$props$data$orde","_this$state$salesStat","noSalesOrderDetailsText","loadingLabel","orderDetailCustomerReferenceText","orderDetailsInformationOrderedDate","orderDetailsInfromationProjectCode","shouldShowQrCode","showChannelInfo","showFullAddress","channelIdentities","channels","orgUnitLocations","customer","customerInformation","originators","orderOriginators","originator","confirmationId","orderInformationInput","getOrderInformationInput","_orderInformationInpu","_orderInformationInpu2","createdDateFormat","createdDate","onFormatDate","Date","createdDateNode","count","Math","round","toFixed","orderInformation","getOrderInformation","viewProps","isUserTypeB2B","isOnlineStore","placedBy","user","isAuthenticated","_this$props$context$a4","signInUrl","Msdyn365","renderView","alert","Label","isCatalogFetaure","salesLinesInput","getSalesLinesInput","catalogs","salesLinesInputs","getSalesLines","getCouponsCode","_salesLinesInputs$dat","_salesLinesInputs$dat2","DiscountLines","DiscountCode","buyAgainButton","buyItAgainSalesLineButton","coupons","getData","dispatchDate","customerReferenceNode","orderHydration","_item$Value2","_item$Value3","orderInfomation","customerReference","tableViewActions","viewModes","table","groups","orderSummary","payment","help","printDiv","removeOrderHold","orderHoldStatus","editOrderButton","givenDateString","givenDate","currentDate","abs","getTime","orderDetailsEnableSelectionButtonAriaLabel","orderDetailsEnableSelectionButtonText","orderDetailsDisableSelectionButtonAriaLabel","orderDetailsDisableSelectionButtonText","_this$props$data$orde2","orderDetailProducts","_this$props$data$orde3","salesOrderProduct","RecordId","validValues","__decorate","observable","computed","observer","isConfirmationView","customerName","isOboRequest","pickupItemsHeader","pickingItemsLabel","shippingAddressTitle","shippingItemToYouLabel","shippingItemToOBOCustomerLabel","emailItemsHeader","emailingItemsLabel","groupSalesLines","group","_salesLines","itemLabel","pickingItemsLabelText","shippingItemsToText","emailingItemsLabelText","groupProps","salesLinesProps","getSalesLinesProps","classNames","address","trackingInfo","isProcessing","pickDateTimeslot","pickupDateTimeslot","shippedStatusCheck","delivery","deliveryProps","pickupProps","shippingItemsToYou","groupsProps"],"sourceRoot":""}