{"version":3,"file":"static/js/20.21ffc19eccfda9ce9726.chunk.js","mappings":"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MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,8RChOFvgB,EAA2CjD,IAA6B,IAA5B,cAAEkD,EAAa,MAAEC,GAAOnD,EACtE,OACIC,EAAAA,cAAC8N,EAAAA,KAAInO,OAAAiB,OAAA,GAAKqC,GACLC,GACGA,EAAMjH,KAAKkC,GACA6B,EAAAA,cAAAA,EAAAA,SAAA,KAAG7B,EAAKkF,iBAM7BmgB,EAAsCzV,IAAyC,IAAxC,KAAErE,EAAI,WAAE+Z,EAAU,QAAEze,EAAO,MAAE9B,GAAO6K,EAC7E,OAAK0V,EAKDzjB,EAAAA,cAAC8N,EAAAA,KAAInO,OAAAiB,OAAA,GAAK8I,GACL1E,EACA9B,GACGA,EAAMjH,KAAKkC,IACP,MAAM,KAAEulB,EAAI,IAAErvB,EAAG,MAAEyC,EAAK,UAAE+M,EAAS,oBAAE8f,EAAmB,cAAEC,EAAa,WAAEC,EAAU,aAAEC,GAAiB3lB,GAChG,MAAE4lB,EAAK,YAAEC,EAAW,MAAE1iB,EAAK,QAAEhF,GAAYxF,EAC/C,OACIkJ,EAAAA,cAAC8N,EAAAA,KAAInO,OAAAiB,OAAA,GAAK8iB,EAAI,CAAErvB,IAAKA,IACjB2L,EAAAA,cAACgD,EAAWrD,OAAAiB,OAAA,GAAKiD,IAChBmgB,GACGhkB,EAAAA,cAAC8N,EAAAA,KAAInO,OAAAiB,OAAA,GAAKmjB,GACLziB,EACAhF,GAGRqnB,GAAuBC,EACvBC,EACAC,OArBd,MA6BTG,EAA4CjW,IAQ7C,IAR8C,YAC/CkW,EAAW,QACXlf,EAAO,uBACPmf,EAAsB,iBACtBC,EAAgB,UAChBzd,EAAS,mBACT0d,EAAkB,iBAClBC,GACHtW,EACG,OACIhO,EAAAA,cAAC8N,EAAAA,KAAInO,OAAAiB,OAAA,GAAKsjB,GACLlf,EACAmf,GAA0BC,EAC1Bzd,EACD3G,EAAAA,cAACwjB,EAAW7jB,OAAAiB,OAAA,GAAKyjB,IACjBrkB,EAAAA,cAACwjB,EAAW7jB,OAAAiB,OAAA,GAAK0jB,MAKvBve,EAAqDwe,IAWtD,IAAAtW,EAAAC,EAAAC,EAAAC,EAAAC,EAAA,IAXuD,YACxDpJ,EAAW,QACXD,EAAO,MACP9B,EAAK,SACLwB,EAAQ,MACR5N,EAAK,iBACLqO,EAAgB,WAChBC,EAAU,mBACVI,EAAkB,aAClBC,GAEH8e,EADMjW,GAAKC,EAAAA,EAAAA,GAAAgW,EAAA/V,GAGR,MAAM/Y,EAAY6Y,MAAAA,GAAkB,QAAbL,EAALK,EAAOnB,mBAAW,IAAAc,OAAA,EAAlBA,EAAoBxY,UAEhCgZ,EAAeH,MAAAA,GAAkB,QAAbJ,EAALI,EAAOnB,mBAAW,IAAAe,GAAS,QAATA,EAAlBA,EAAoB1Y,eAAO,IAAA0Y,GAAS,QAATA,EAA3BA,EAA6B1X,eAAO,IAAA0X,OAAA,EAApCA,EAAsCQ,OAErDC,EAAWL,MAAAA,GAAkB,QAAbH,EAALG,EAAOnB,mBAAW,IAAAgB,GAAS,QAATA,EAAlBA,EAAoB3Y,eAAO,IAAA2Y,GAAS,QAATA,EAA3BA,EAA6B3X,eAAO,IAAA2X,OAAA,EAApCA,EAAsCQ,SAGjDC,EAAWN,MAAAA,GAAkB,QAAbF,EAALE,EAAOnB,mBAAW,IAAAiB,GAAS,QAATA,EAAlBA,EAAoB5Y,eAAO,IAAA4Y,GAAS,QAATA,EAA3BA,EAA6B5X,eAAO,IAAA4X,GAAS,QAATA,EAApCA,EAAsCtE,eAAO,IAAAsE,OAAA,EAA7CA,EAA+CS,SAC1DH,EACFC,GAJW,CAAC,MAAO,OAIA1P,SAAS0P,IAET,QAAbC,GAAuC,UAAjBH,EADtB,KAGAA,EAAatP,QAAQ,IAAK,KAE7BqlB,EAAiBC,GAAsBzkB,EAAAA,UAAe,GAC7DA,EAAAA,WAAgB,KACZykB,IAAmB3tB,EAAMwK,SAC1B,CAACxK,EAAMwK,QAEV,MAAMwN,EAAiB,CACnBC,KAAM,CACFC,aAAc,CAAC,MACfC,OAAQ,CAAC,QAEbC,GAAI,CACAF,aAAc,CAAC,MACfC,OAAQ,CAAC,QAEbE,KAAM,CACFH,aAAc,CAAC,MAGfC,OAAQ,CAAC,QAEbG,GAAI,CAGAJ,aAAc,GACdC,OAAQ,CACJ,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,SAKNI,EAAyB1P,OAAO2P,yBAAyBC,OAAOC,iBAAiBC,UAAW,SAASrT,IA+C3G,SAASsT,EACLC,EACAC,GAEA,MAAM/N,EAAc8N,EAAiBE,MAAM,GAE3C,QAA4C7b,IAAxChB,SAAS8c,eAAeF,EAAQ1R,KAA6D,OAAxClL,SAAS8c,eAAeF,EAAQ1R,KAIrF0R,EAAQG,kBAAoBlO,EAC5B,GAAmB,6CAAf+N,EAAQ1R,IAAoE,0BAAf0R,EAAQ1R,GAAgC,CACrG,MAAMlJ,EAAQhC,SAAS8c,eAAeF,EAAQ1R,IAC9C,GAAc,OAAVlJ,EAAgB,CAChB,MAEMoM,EA2BtB,SAA2B4O,EAA0BxW,EAAeyW,GAChE,IAAK,IAAIC,EAAI,EAAGA,EAAIF,EAAMpd,QAAQqF,OAAQiY,IAAK,CAC3C,MAAMC,EAASH,EAAMpd,QAAQsd,GAAG1W,MAChC,GAAKyW,GAAuBE,IAAWC,EAAAA,EAAiB5W,KAAayW,GAAuBE,IAAW3W,EACnG,OAAOwW,EAAMpd,QAAQsd,GAAG1W,OA/BE6W,CAAkBrb,EAFX,OAAX0Z,GAAkC,0BAAfkB,EAAQ1R,GAAiC,MAAQyR,EAAiBW,WAE7B,YAAhBzO,GAE1D,QAAsB7N,IAAlBoN,EAA6B,CAC7BpM,EAAMwE,MAAQ4H,EAEd,MAAMwG,EAAQ,IAAI2I,MAAM,SAAU,CAAEC,SAAS,IAC7Cxb,EAAMyb,cAAc7I,SAGzB,CACH,MAAM8I,EAA2B,2BAAfd,EAAQ1R,GAAkCyR,EAAiBW,WAAaX,EAAiBgB,UACrG3b,EAAQhC,SAAS8c,eAAeF,EAAQ1R,IAC9C,QAAclK,IAAVgB,EAAqB,CACrB,QAA+BhB,IAA3Bqb,EACA,OAEJA,EAAuBuB,KAAK5b,EAAO0b,GACnC,MAAMG,EAAU,IAAIN,MAAM,QAAS,CAAEC,SAAS,IAChC,OAAVxb,GACAA,EAAMyb,cAAcI,KAwFxC7Q,EAAAA,WAAgB,MAxKhB,WACI,MAAMmS,EAAmB,CACrB,CAAEpC,gBAAiB,sBAAuB7R,GAAI,wBAC9C,CAAE6R,gBAAiB,WAAY7R,GAAI,wBACnC,CAAE6R,gBAAiB,cAAe7R,GAAI,wBACtC,CAAE6R,gBAAiB,8BAA+B7R,GAAI,wBACtD,CAAE6R,gBAAiB,8BAA+B7R,GAAI,yBACtD,CAAE6R,gBAAiB,qBAAsB7R,GAAI,2BAC7C,CAAE6R,gBAAiB,cAAe7R,GAAI,2BACtC,CAAE6R,gBAAiB,UAAW7R,GAAI,4CAClC,CAAE6R,gBAAiB,8BAA+B7R,GAAI,2BAGpDkU,EAAwBpf,SAAS8c,eAAe,0BAEhDd,EAAe,IAAIO,OAAO8C,OAAOC,KAAKC,OAAOC,aAAaJ,EAAuB,CACnFvC,MAAO,CAAC,WACR4C,sBAAuB,CAAEC,QAAS5D,EAAeJ,IAAWI,EAAeJ,GAAQM,gBAEzD,OAA1BoD,IAGJA,EAAsBlf,aAAa,cAAeuC,EAAUkd,wBAE5DpD,OAAO8C,OAAOC,KAAK1K,MAAMgL,uBAAuBR,GAEhD7C,OAAO8C,OAAOC,KAAK1K,MAAMiL,YAAY7D,EAAc,iBAAiB,KAChE,MAAM8D,EAAQ9D,EAAa+D,WAE3B,QAA+B/e,IAA3Bqb,EACA,OAEJA,EAAuBuB,KAAKwB,EAAuBU,EAAMtY,MACzD,MAAMqW,EAAU,IAAIN,MAAM,SAAU,CAAEC,SAAS,IAC/C4B,EAAsB3B,cAAcI,GACpC,IAAK,MAAMd,KAAmBoC,EAAkB,CAC5C,MAAMa,EAAoBF,EAAMG,mBAC5BD,GAAqBA,EAAkB/a,OAAS,GAEhD+a,EAAkB1Y,SAAQqV,GAAoBD,EAAqBC,EAAkBI,UAkIjGmD,GACgBlgB,SAAS+e,iBAAiB,oDAClCzX,SAAQ6Y,IACZ,MAAMC,EAAWD,EAAwB3Z,MACrCsV,EAAeJ,KAAYI,EAAeJ,GAAQO,OAAOhQ,SAASmU,IAClED,EAAE1B,YAGV,MAAM4B,EAAgBrgB,SAAS8c,eAAe,4CAC/B,SAAXpB,IACA2E,EAAc7Z,MAAQ,OAE1B,MAAMoO,EAAQ,IAAI2I,MAAM,SAAU,CAAEC,SAAS,IAC7C6C,EAAc5C,cAAc7I,KAC7B,IAGH5H,EAAAA,WAAgB,KACZ,MAAM4H,EAAQ,IAAI2I,MAAM,SAAU,CAAEC,SAAS,IAC7C,GAAe,OAAX9B,GAAoB1b,SAASC,cAAc,4CAAmE,CAC9G,MAAMyxB,EAAY1xB,SAASC,cAAc,4CACzCyxB,EAAUxxB,aAAa,gBAAiB,QACvCwxB,EAAUC,WAAiCnrB,MAAQ,MACnDkrB,EAAUC,WAAiClU,cAAc7I,GACzD8c,EAAUC,WAAiCtkB,SAAWkT,QAAQ,WAEpE,CAACvgB,SAASC,cAAc,8CAG3B+M,EAAAA,WAAgB,KAtGGwT,MACf,MAAMtC,EAAoBle,SAASC,cAAc,0CAC3CwgB,EAAQzgB,SAAS8c,eAAe,yBACtC,GAAI2D,EAAO,CACP,MAAMC,EAAWD,EAAMtC,QAAQ,2BACzBwC,EAAaD,EAASzC,uBAAuB,2BAA2B,GACxE2C,EAAU,WACVC,EAAW,WACjBJ,EAAMvgB,aAAa,gBAAiB,QACpCugB,EAAMvgB,aAAa,OAAQ,OAC3BugB,EAAMvgB,aAAa,YAAa,MACL,IAAvBugB,EAAMja,MAAMvB,QACZiZ,EAAkBhe,aAAa,WAAY,QAE/CugB,EAAMlC,QAAU,KACPkC,EAAMja,MAAMsa,MAAMF,IAAaH,EAAMja,MAAMsa,MAAMD,GAI3CJ,EAAMja,MAAMvB,OAAS,GAC5Byb,EAASlC,UAAUK,IAAI,8BACvB8B,EAAWjC,YAAcjc,EAAUse,iCACnC7C,EAAkBhe,aAAa,WAAY,UAE3CwgB,EAASlC,UAAUC,OAAO,8BAC1BkC,EAAWjC,YAAc,GACzBR,EAAkB8C,gBAAgB,cAVlCN,EAASlC,UAAUK,IAAI,8BACvB8B,EAAWjC,YAAcjc,EAAUse,iCACnC7C,EAAkBhe,aAAa,WAAY,YAqFvDsgB,KACD,CAAU,QAAVnF,EAAErb,gBAAQ,IAAAqb,GAA8D,QAA9DA,EAARA,EAAUyB,eAAe,gCAA6C,IAAAzB,OAAA,EAAtEA,EAAwE7U,QAC7EwG,EAAAA,WAAgB,MA1EhB,WACI,MAAMgR,EAAche,SAASie,uBAAuB,oBAAoB,GAClEC,EAAoBle,SAASC,cAAc,0CAC3Cme,EAASpe,SAAS8c,eAAe,0BACjCuB,EAAYD,GAAqB,OAAXA,EAAmBA,EAAOD,QAAQ,gCAAkDnd,EAC1Gsd,EAAcD,MAAAA,OAAS,EAATA,EAAWJ,uBAAuB,2BAA2B,QAE/Djd,IAAdqd,IACAA,EAAUE,QAAU,KAChBF,MAAAA,GAAAA,EAAWG,UAAUC,OAAO,8BACxBH,IACAA,EAAYI,YAAc,WAIZ1d,IAAtBkd,IACAA,EAAkBS,QAAUC,IAKxB,GAHe,OAAXlD,IAAqC,KAAjB0C,EAAO5X,OAAgB4X,EAAO5X,MAAMvB,OAAS,GAAuC,IAAjC,UAAU4D,KAAKuV,EAAO5X,QAG/E,CACd6X,MAAAA,GAAAA,EAAWG,UAAUK,IAAI,8BACrBP,IACAA,EAAYI,YAAc,mCAE9B,MAAMI,EAAWd,EAAYe,iBAAiB,SAC9C,IAAIC,GAAa,EACjBF,EAASxX,SACT,SAAwB2X,GACE,KAAlBA,EAAQzY,OAAiC,WAAjByY,EAAQzX,OAChCwX,GAAa,MAGjBA,GACAJ,EAAEM,qBAwClBpB,KACD,CAAC9d,SAASie,uBAAuB,oBAAoB,KAGxD,IAAI2T,EAAe,EAOnB,OANA5kB,EAAAA,WAAgB,OACV4kB,EACEA,EAAe,GACfC,SAASC,WAEd,CAAC9xB,SAASC,cAAc,wCAEvB+M,EAAAA,cAAC8N,EAAAA,KAAInO,OAAAiB,OAAA,GAAKqE,GACLD,EACA9B,GACGA,EAAMjH,KAAKkC,IACP,MAAM,YAAEsE,EAAW,IAAEpO,EAAG,MAAEoL,EAAK,MAAEkD,EAAK,MAAE3N,GAAUmJ,EAKlD,MAJY,SAAR9J,GAAkBW,IAElBA,EAAM2M,MAAM7D,UAAY,IAGxBkC,EAAAA,cAAC8N,EAAAA,KAAInO,OAAAiB,OAAA,GAAK6B,EAAW,CAAEpO,IAAKA,IACvBoL,EACAkD,EACA3N,MAIhBwvB,GACGxkB,EAAAA,cAAC8N,EAAAA,KAAInO,OAAAiB,OAAA,GAAK9J,EAAM8O,cACZ5F,EAAAA,cAAA,KAAGC,UAAU,mCAAmCxK,EAAUsvB,sBAGjE5f,GAAoBC,EACpBI,GAAsBC,IAgBnC,EAXmF9D,IAC/E,MAAM,yBAAEqjB,EAAwB,UAAEjY,EAAS,gBAAEkY,EAAe,uBAAEzX,GAA2B7L,EAEzF,OACI3B,EAAAA,cAACiU,EAAAA,OAAMtU,OAAAiB,OAAA,GAAKokB,GACPjY,EAAUE,kBAAoBjN,EAAAA,cAACikB,EAAYtkB,OAAAiB,OAAA,GAAKqkB,IAChDlY,EAAUG,0BAA4BlN,EAAAA,cAAC+F,EAAgBpG,OAAAiB,OAAA,GAAK4M,EAA4BwX,yEC7WzFE,+GAAZ,SAAYA,GACRA,EAAA,YACAA,EAAA,gBACAA,EAAA,2BACAA,EAAA,oBACAA,EAAA,6BALJ,CAAYA,IAAAA,EAAyB,KAQrC,MAYMC,EAAcA,CAAC3uB,EAA0Cf,IACvD2vB,EAAAA,iBAAiBC,cAAc7uB,EAAQ8uB,eACnCF,EAAAA,iBAAiBC,cAAc7uB,EAAQ+uB,cAChC,GAGJ/uB,EAAQ+uB,aACRH,EAAAA,iBAAiBC,cAAc7uB,EAAQ+uB,cACvC/uB,EAAQ8uB,cAGZ7vB,EAAU+vB,uBAAuBrmB,QAAQ,MAAO3I,EAAQ8uB,eAAgBnmB,QAAQ,MAAO3I,EAAQ+uB,cAGpGE,EAAaA,CAACjwB,EAAuBkwB,KACvC,QAAa1xB,IAAT0xB,EACA,MAAO,GAIX,OAAOlwB,EAAQmwB,iBAAiBF,WAAWC,EADH,CAAEE,KAAM,UAAWC,MAAO,OAAQC,IAAK,aAW7EC,EAAaA,CAACvvB,EAA0Cf,EAAuCD,KAAyB,IAAAwwB,EAC1H,IAAKxvB,EAAQyvB,QACT,MAAO,GAGX,MAAMC,EAAyD1vB,EAAQyvB,QAEjEE,EAAgCV,EAAWjwB,EAAS0wB,EAAeE,gCAAkC,GACrGC,EAA8BZ,EAAWjwB,EAAS0wB,EAAeI,8BAAgC,GACjGC,EAAoC,QAA3BP,EAAGE,EAAeM,iBAAS,IAAAR,EAAAA,EAAI,GAE9C,OAAQxvB,EAAQiwB,WAEZ,KAAK,EACD,OACKrB,EAAAA,iBAAiBC,cAAcc,IAC/Bf,EAAAA,iBAAiBC,cAAcgB,GAO7B,GALI5wB,EAAUixB,mCACZvnB,QAAQ,MAAOgnB,GACfhnB,QAAQ,MAAOknB,GAK5B,KAAK,EACD,OAAKjB,EAAAA,iBAAiBC,cAAckB,GAI7B,GAHI9wB,EAAUkxB,8BAA8BxnB,QAAQ,MAAOonB,GAItE,QACI,MAAO,KA+CbK,EAA8BA,CAACC,EAAmBpxB,KACpD,OAAQoxB,GACJ,KAAK,EACD,OAAOpxB,EAAUqxB,8BACrB,KAAK,EACD,OAAOrxB,EAAUsxB,uBACrB,KAAK,EACD,OAAOtxB,EAAUuxB,0BACrB,KAAK,EACD,OAAOvxB,EAAUwxB,wBACrB,KAAK,EACD,OAAOxxB,EAAUyxB,uCACrB,KAAK,EACD,OAAOzxB,EAAU0xB,kCACrB,QACI,OAAO1xB,EAAU2xB,yBAIvBC,EAAgCA,CAACC,EAAqB7xB,KACxD,OAAQ6xB,GACJ,KAAK,EACD,OAAO7xB,EAAU8xB,2BACrB,KAAK,EACD,OAAO9xB,EAAU+xB,uBACrB,QACI,OAAO/xB,EAAUgyB,6BAIvBC,EAAoBC,IAAsC,IAAAC,EAC5D,MAAM,QAAEpyB,EAAO,KAAE2R,EAAI,UAAE1R,GAAckyB,EAAWxa,YAE1C0a,GA3ENC,EA2EmC3gB,EAAK2gB,kBAAkBntB,OA1E1DgH,EA0EkEgmB,EAAWxa,YAxExE4a,EAAAA,gBAAgBC,YAAYF,GAI1BA,EAAkB7rB,KAAIzF,IAAU,IAAAyxB,EAAAC,EACnC,MAAO,CACHC,IAAK,CACD,CACIjqB,GAAIyD,EAAMlM,UAAU2yB,sBACpB7qB,KAAM8qB,EAAAA,cAAcC,KACpB9uB,MAAOotB,EAA6C,QAAlBqB,EAACzxB,EAAQiwB,iBAAS,IAAAwB,EAAAA,EAAI,EAAGtmB,EAAMlM,YAErE,CACIyI,GAAIyD,EAAMlM,UAAU8yB,6BACpBhrB,KAAM8qB,EAAAA,cAAcC,KACpB9uB,MAAOisB,EAAW9jB,EAAMnM,QAASgB,EAAQgyB,kBAE7C,CACItqB,GAAIyD,EAAMlM,UAAUgzB,6BACpBlrB,KAAM8qB,EAAAA,cAAcC,KACpB9uB,MAAOusB,EAAWvvB,EAASmL,EAAMlM,UAAWkM,EAAMnM,UAEtD,CACI0I,GAAIyD,EAAMlM,UAAUizB,sBACpBnrB,KAAM8qB,EAAAA,cAAcC,KACpB9uB,MAAO2rB,EAAY3uB,EAASmL,EAAMlM,YAEtC,CACIyI,GAAIyD,EAAMlM,UAAUkzB,wBACpBprB,KAAM8qB,EAAAA,cAAcC,KACpB9uB,MAAO6tB,EAAiD,QAApBa,EAAC1xB,EAAQoyB,mBAAW,IAAAV,EAAAA,EAAI,EAAGvmB,EAAMlM,aAG7E4L,YAAY,EACZpB,UAAW0B,EAAM+G,OAAOzI,cAjCrB,IALU4oB,IACrBf,EACAnmB,EA2FA,MAAO,CACHlM,UAAW,GACXqzB,SAjBCf,EAAAA,gBAAgBC,YAAYH,IACzBA,EAAU,GAAGM,IACR5d,QAAOpM,IAEIwpB,EAAWoB,WAAapB,EAAWqB,sBAAsB/pB,SAASd,EAAKD,MAElFjC,KAAIkC,IACM,CACH3D,KAAM2D,EAAKD,GACX+qB,UAAU,EACV7oB,UAAW3K,EAAUyzB,yBAGrC,GAKAC,KAAMtB,EACN5nB,UAAW,GAAG0nB,EAAWxa,YAAYzE,OAAOzI,mBAC5CmpB,aAAc,GACdC,eAAgB,GAChBC,aAAc,GACdC,gBAAgB,EAChBC,eAAgB,GAChBC,gBAAgB,EAChBC,YAAY,EACZC,gBAAgB,EAChBC,cAAejC,EAAWoB,SAC1Bc,gBAAiBlC,EAAWoB,SAAWpB,EAAWqB,sBAAwB,GAC1Ec,mBAAoB,CAChBC,UACyB,QAArBnC,EAAApyB,EAAQgB,QAAQwzB,aAAK,IAAApC,GAArBA,EAAuBqC,OAASC,MAAMC,OAAOC,SAAS50B,EAAQgB,QAAQwzB,MAAMC,KAAM,KAC5EE,OAAOC,SAAS50B,EAAQgB,QAAQwzB,MAAMC,KAAM,IAC5C,EACVI,YAAa,GACbC,SAAU70B,EAAU80B,wBACpBC,SAAU/0B,EAAUg1B,oBACpBC,eAAgB,GAChBC,IAAMn1B,IAnMKo1B,EAmMoBp1B,EAAQgB,QAlM3Cq0B,EAAAA,GAASC,UACF,IAAIC,IAAIxb,OAAOsV,SAASmG,OAI/BJ,EAAWD,IAAIM,WAAWD,KACnB,IAAID,IAAIH,EAAWD,IAAIM,WAAWD,QA4LWA,MAAS,IAE7DE,oBAAoB,EACpBC,QAAS,CACLC,cAAUp3B,EACVoV,YAAQpV,EACRq3B,YAAQr3B,GAEZs3B,wCAAyC3D,EAAWxa,YAAY1X,UAAU61B,wCAC1EC,gBAAiB5D,EAAWxa,YAAY1X,UAAU81B,gBAClDC,iBAAkB7D,EAAWxa,YAAY1X,UAAU+1B,kBA7MpCZ,IAAAA,GAiNVa,EAAsD9D,GACxD3nB,EAAAA,cAAC0rB,EAAAA,MAAK/rB,OAAAiB,OAAA,GAAK8mB,EAAiBC,0kBCxPvC,MAAMgE,UAA0B3rB,EAAAA,cAAhCtO,cAAA,oBA4BqB,KAAAk6B,aAAe,CAAC3rB,EAAmB4rB,KAA8C,IAAAC,EAAAC,EAC9F,MAAMC,EAA4D,QAAnDF,EAA2C,QAA3CC,EAAG15B,KAAKsP,MAAMwF,KAAK2gB,kBAAkBntB,cAAM,IAAAoxB,OAAA,EAAxCA,EAA0C9zB,cAAM,IAAA6zB,EAAAA,EAAI,EAEtE,OACI9rB,EAAAA,cAAA,OAAKC,UAAW,GAAGA,wBACfD,EAAAA,cAACkF,EAAAA,QAAO,CAACjF,UAAW,GAAGA,qBAA8BgsB,IAAKJ,EAAYI,IAAK9rB,KAAM0rB,EAAY1rB,OAC7FH,EAAAA,cAAA,YAAO3N,KAAK65B,2BAA2BF,MASlC,KAAAG,yBAA2B,KACxC,MAAM,UAAE12B,GAAcpD,KAAKsP,MAC3B,MAAO,CAAClM,EAAU8yB,6BAA8B9yB,EAAUgzB,6BAA8BhzB,EAAUizB,wBAGrF,KAAA0D,YAAc,IAEvBpsB,EAAAA,cAACyrB,EAAgB,CAACte,YAAa9a,KAAKsP,MAAOonB,SAAU12B,KAAK02B,SAAUC,sBAAuB32B,KAAK85B,6BAIvF,KAAAD,2BAA8BF,IAC3C,OAAQA,GACJ,KAAK,EACD,MAAO,GACX,KAAK,EACD,OAAOvkB,EAAAA,EAAAA,QAAOpV,KAAKsP,MAAMlM,UAAU42B,iCAAkCL,GACzE,QACI,OAAOvkB,EAAAA,EAAAA,QAAOpV,KAAKsP,MAAMlM,UAAU62B,yBAA0BN,KA5D/D,eAEN,MAAgB,QADHjD,EAAAA,EAAAA,UAAS,CAAEwD,QAASC,EAAAA,YAAYC,SAAUj3B,QAASnD,KAAKsP,MAAMnM,QAAQgB,UAIhFqW,SACH,MAAM,OAAEnE,GAAWrW,KAAKsP,MAExB,KAAK+qB,EAAAA,EAAAA,IAAiBr6B,KAAKsP,MAAMnM,QAAQqB,cAAcoV,gBACnD,OAAO,KAGX,MAAMhM,EAAYyI,EAAOzI,WAAa,GAEhC0sB,EAAS95B,EAAAA,EAAA,GACRR,KAAKsP,OAAK,IACbirB,kBAAmB,CACfzf,YAAa9a,KAAKsP,MAClB1B,UAAAA,GAEJ+E,QAAS3S,KAAKu5B,aAAa3rB,EAAWyI,EAAO1D,SAC7C6nB,MAAOx6B,KAAK+5B,gBAGhB,OAAO/5B,KAAKsP,MAAMmL,WAAW6f,KAxBvBlf,EAAAA,EAAAA,IAAA,CAATE,EAAAA,IAAQ,6BAiEb,0GCjFA,MAUA,EAVqEhM,IACjE,MAAM,kBAAEirB,EAAiB,QAAE5nB,EAAO,MAAE6nB,GAAUlrB,EAC9C,OACI3B,IAAAA,cAACiU,EAAAA,OAAMtU,OAAAiB,OAAA,GAAKgsB,GACP5nB,EACA6nB,qECQbC,EAGI,SAAYp4B,GAAZ,IAAAq4B,EAAA,KAIO,KAAAp4B,YAAc,WAAM,OAAAC,EAAAA,EAAAA,eAAc,gBAAiBm4B,EAAKr4B,cAExD,KAAAG,mBAAqB,WAAM,uBAE3B,KAAAC,cAAgB,WAAiB,iBAPpCzC,KAAKqC,YAAcA,IA8BkBW,EAAAA,EAAAA,IAA0C,CACnFC,OAhBG,SAAmCN,EAA2BC,GAAmB,+EACpF,MAAM,CAAN,EAAO,IAAI+3B,EAAAA,UAgBXh4B,MATgB,SAACi4B,GACjB,OAAO,IAAIH,EAAmBG,EAAUhhB,eAAevX,kFCvC3Ds4B,EAAA,oBAAAA,IA+BwB,KAAAE,WAAyB,GAMzB,KAAAC,iBAAsC,GAYtC,KAAAC,eAAyB,EAMzB,KAAAC,oBAA8B,GAM9B,KAAAC,8BAAwC,EAMxC,KAAAC,uBAAiC,EA2EzD,OA3Ic5tB,OAAA6tB,eAAWR,EAAAvd,UAAA,uBAAoB,KAA/B,WACN,OAAOpd,KAAKo7B,uBACf,gCAIS9tB,OAAA6tB,eAAWR,EAAAvd,UAAA,aAAU,KAArB,WACN,OAAOpd,KAAKq7B,aACf,gCAIS/tB,OAAA6tB,eAAWR,EAAAvd,UAAA,iBAAc,KAAzB,WACN,OAAOpd,KAAKs7B,iBACf,gCAIShuB,OAAA6tB,eAAWR,EAAAvd,UAAA,kBAAe,KAA1B,WACN,OAAOpd,KAAKu7B,kBACf,gCAISjuB,OAAA6tB,eAAWR,EAAAvd,UAAA,aAAU,KAArB,WACN,OAAOpd,KAAKw7B,aACf,gCAISluB,OAAA6tB,eAAWR,EAAAvd,UAAA,YAAS,KAApB,WACN,OAAOpd,KAAK66B,YACf,gCAISvtB,OAAA6tB,eAAWR,EAAAvd,UAAA,kBAAe,KAA1B,WACN,OAAOpd,KAAK86B,kBACf,gCAISxtB,OAAA6tB,eAAWR,EAAAvd,UAAA,oBAAiB,KAA5B,WACN,OAAOpd,KAAKy7B,oBACf,gCAISnuB,OAAA6tB,eAAWR,EAAAvd,UAAA,gBAAa,KAAxB,WACN,OAAOpd,KAAK+6B,gBACf,gCAISztB,OAAA6tB,eAAWR,EAAAvd,UAAA,qBAAkB,KAA7B,WACN,OAAOpd,KAAKg7B,qBACf,gCAIS1tB,OAAA6tB,eAAWR,EAAAvd,UAAA,8BAA2B,KAAtC,WACN,OAAOpd,KAAKi7B,8BACf,gCAIS3tB,OAAA6tB,eAAWR,EAAAvd,UAAA,wBAAqB,KAAhC,WACN,OAAOpd,KAAKk7B,wBACf,gCAGMP,EAAAvd,UAAAse,2BAAP,SAAkCC,GAC9B37B,KAAKo7B,sBAAwBO,GAI1BhB,EAAAvd,UAAAwe,iBAAP,SAAwBC,GACpB77B,KAAKq7B,YAAcQ,GAIhBlB,EAAAvd,UAAApE,sBAAP,SAA6BF,GACzB9Y,KAAKu7B,iBAAmBziB,GAIrB6hB,EAAAvd,UAAA0e,qBAAP,SAA4BC,GACxB/7B,KAAKs7B,gBAAkBS,GAIpBpB,EAAAvd,UAAA4e,iBAAP,SAAwBC,GACpBj8B,KAAKw7B,YAAcS,GAIhBtB,EAAAvd,UAAA8e,eAAP,SAAsBC,GAClBn8B,KAAK66B,WAAa76B,KAAK66B,WAAW3iB,QAAO,SAAAkkB,GAAY,OAAAA,EAASC,KAAOF,MAIlExB,EAAAvd,UAAAkf,qBAAP,SAA4BH,GACxBn8B,KAAK86B,iBAAmB96B,KAAK86B,iBAAiB5iB,QAAO,SAAAkkB,GAAY,OAAAA,EAASC,KAAOF,MAI9ExB,EAAAvd,UAAAmf,YAAP,SAAmBH,GACfp8B,KAAK66B,YAAU2B,EAAAA,EAAAA,IAAA,CAAIJ,GAAap8B,KAAK66B,aAIlCF,EAAAvd,UAAAqf,kBAAP,SAAyBL,GACrBp8B,KAAK86B,kBAAgB0B,EAAAA,EAAAA,IAAA,CAAIJ,GAAap8B,KAAK66B,aAIxCF,EAAAvd,UAAAsf,wBAAP,SAA+BC,GAC3B38B,KAAKy7B,mBAAqBkB,GAIvBhC,EAAAvd,UAAAwf,oBAAP,SAA2BC,GACvB78B,KAAK+6B,eAAiB8B,GAInBlC,EAAAvd,UAAA0f,yBAAP,SAAgCC,GAC5B/8B,KAAKg7B,oBAAsB+B,GAIxBpC,EAAAvd,UAAA4f,mCAAP,SAA0CC,GACtCj9B,KAAKi7B,6BAA+BgC,GAIjCtC,EAAAvd,UAAA8f,4BAAP,SAAmCL,GAC/B78B,KAAKk7B,uBAAyB2B,IA3ItBzhB,EAAAA,EAAAA,IAAA,CAAXC,EAAAA,IAAU,4EAEDD,EAAAA,EAAAA,IAAA,CAATE,EAAAA,IAAQ,0GAIGF,EAAAA,EAAAA,IAAA,CAAXC,EAAAA,IAAU,kEAEDD,EAAAA,EAAAA,IAAA,CAATE,EAAAA,IAAQ,gGAIGF,EAAAA,EAAAA,IAAA,CAAXC,EAAAA,IAAU,sEAEDD,EAAAA,EAAAA,IAAA,CAATE,EAAAA,IAAQ,oGAIGF,EAAAA,EAAAA,IAAA,CAAXC,EAAAA,IAAU,uEAEDD,EAAAA,EAAAA,IAAA,CAATE,EAAAA,IAAQ,qGAIGF,EAAAA,EAAAA,IAAA,CAAXC,EAAAA,IAAU,kEAEDD,EAAAA,EAAAA,IAAA,CAATE,EAAAA,IAAQ,gGAIGF,EAAAA,EAAAA,IAAA,CAAXC,EAAAA,IAAU,gEAEDD,EAAAA,EAAAA,IAAA,CAATE,EAAAA,IAAQ,8FAIGF,EAAAA,EAAAA,IAAA,CAAXC,EAAAA,IAAU,sEAEDD,EAAAA,EAAAA,IAAA,CAATE,EAAAA,IAAQ,oGAIGF,EAAAA,EAAAA,IAAA,CAAXC,EAAAA,IAAU,yEAEDD,EAAAA,EAAAA,IAAA,CAATE,EAAAA,IAAQ,uGAIGF,EAAAA,EAAAA,IAAA,CAAXC,EAAAA,IAAU,qEAEDD,EAAAA,EAAAA,IAAA,CAATE,EAAAA,IAAQ,mGAIGF,EAAAA,EAAAA,IAAA,CAAXC,EAAAA,IAAU,0EAEDD,EAAAA,EAAAA,IAAA,CAATE,EAAAA,IAAQ,wGAIGF,EAAAA,EAAAA,IAAA,CAAXC,EAAAA,IAAU,oFAEDD,EAAAA,EAAAA,IAAA,CAATE,EAAAA,IAAQ,iHAIGF,EAAAA,EAAAA,IAAA,CAAXC,EAAAA,IAAU,6EAEDD,EAAAA,EAAAA,IAAA,CAATE,EAAAA,IAAQ,2GAKTF,EAAAA,EAAAA,IAAA,CADCnY,EAAAA,IAAM,6JAMPmY,EAAAA,EAAAA,IAAA,CADCnY,EAAAA,IAAM,mJAMPmY,EAAAA,EAAAA,IAAA,CADCnY,EAAAA,IAAM,wJAMPmY,EAAAA,EAAAA,IAAA,CADCnY,EAAAA,IAAM,uJAMPmY,EAAAA,EAAAA,IAAA,CADCnY,EAAAA,IAAM,mJAMPmY,EAAAA,EAAAA,IAAA,CADCnY,EAAAA,IAAM,iJAMPmY,EAAAA,EAAAA,IAAA,CADCnY,EAAAA,IAAM,uJAMPmY,EAAAA,EAAAA,IAAA,CADCnY,EAAAA,IAAM,8IAMPmY,EAAAA,EAAAA,IAAA,CADCnY,EAAAA,IAAM,oJAMPmY,EAAAA,EAAAA,IAAA,CADCnY,EAAAA,IAAM,0JAMPmY,EAAAA,EAAAA,IAAA,CADCnY,EAAAA,IAAM,sJAMPmY,EAAAA,EAAAA,IAAA,CADCnY,EAAAA,IAAM,2JAMPmY,EAAAA,EAAAA,IAAA,CADCnY,EAAAA,IAAM,sKAMPmY,EAAAA,EAAAA,IAAA,CADCnY,EAAAA,IAAM,6JAIX03B,EA9IA,gCCJQ,IAAKwC,mBAAZ,SAAYA,GACTA,EAAAA,EAAA,yCACAA,EAAAA,EAAA,mCACAA,EAAAA,EAAA,qBACAA,EAAAA,EAAA,uBACAA,EAAAA,EAAA,yCACAA,EAAAA,EAAA,uBANH,CAAYA,IAAAA,EAAqB,mhBCIlC,IAAAC,EAAA,WACW,KAAA96B,YAAc,WAAM,qBAEpB,KAAAE,mBAAqB,WAAM,qBAE3B,KAAAC,cAAgB,WAAiB,eAGrC,SAAS46B,EAAgBz6B,GAC5B,IAAM06B,EAAW,IAAIF,EAEjBG,EAA8B36B,EAAI6G,IAAmB6zB,EAAS96B,qBAAsB86B,EAASh7B,eACjG,OAAIi7B,IAGJ36B,EAAI46B,OAAOF,EAAU,IACrBC,EAA8B36B,EAAI6G,IAAmB6zB,EAAS96B,qBAAsB86B,EAASh7B,gBAI1F,SAASm7B,EAAmBt2B,EAAsBvE,GACrD,IAAM06B,EAAW,IAAIF,EACrBx6B,EAAI46B,OAAOF,EAAUn2B,wHCoQzB,QAjRwB,SAAmBu2B,GA8QvC,OAvQA,SAAAC,GACI,SAAAC,EAAYtuB,GAAZ,IAAAorB,EACIiD,EAAApf,KAAA,KAAMjP,IAAM,KACW,OAeVorB,EAAAmD,gBAAkB,iBACzBC,EAA4BpD,EAAKprB,MAA/BzD,EAAEiyB,EAAAjyB,GAAEkyB,EAAQD,EAAAC,SAAE56B,EAAO26B,EAAA36B,QACvB66B,GAASX,EAAAA,EAAAA,IAAgBl6B,EAAQqB,eAClCw5B,EAKDA,EAAOnyB,KAKX4xB,EAAAA,EAAAA,KAAkBQ,EAAAA,EAAAA,KAAAA,EAAAA,EAAAA,IAAC,GAERD,KAAME,EAAA,IACRryB,GAAK,CACFA,GAAEA,EACFkyB,SAAQA,EACRI,gBAAgB,EAChB9rB,UAAU,EACVrF,YAAY,EACZoxB,eAAe,EACfC,mBAAmB,EACnBxnB,YAAQlV,EACR28B,SAAU,IACbJ,IAEL/6B,EAAQqB,eAxBRk2B,EAAKprB,MAAMhQ,UAAUmF,MAAM,yDAiClBi2B,EAAA6D,sBAAwB,SAAC1yB,GACtC,IAAMmI,EAAc0mB,EAAKjxB,MAAMoC,GAC/B,OAAAoyB,EAAAA,EAAAA,KAAAA,EAAAA,EAAAA,IAAA,GACOjqB,GAAY,CACfmqB,eAAgBzD,EAAK8D,SAAS3yB,EAAI,CAAEsyB,gBAAgB,IAAQ,GAC5D9rB,SAAUqoB,EAAK8D,SAAS3yB,EAAI,CAAEwG,UAAU,IACxCosB,QAAS/D,EAAK8D,SAAS3yB,EAAI,CAAEgL,OAAQ,UAAW,GAAM,GACtDpE,WAAYioB,EAAK8D,SAAS3yB,EAAI,CAAEgL,OAAQ,aACxC6nB,UAAWhE,EAAK8D,SAAS3yB,EAAI,CAAEgL,OAAQ,YACvC8nB,UAAWjE,EAAK8D,SAAS3yB,EAAI,CAAEgL,OAAQ,YAAa,GAAM,GAC1D+nB,WAAYlE,EAAK8D,SAAS3yB,EAAI,CAAEgL,OAAQ,aAAc,GACtDgoB,gBAAiBnE,EAAK8D,SAAS3yB,EAAI,CAAEuyB,eAAe,IAAQ,GAAM,GAClEU,sBAAuBpE,EAAK8D,SAAS3yB,EAAI,CAAEwyB,mBAAmB,IAC9D7rB,uBAAwBkoB,EAAKloB,yBAC7BusB,eAAgBrE,EAAKqE,eAAelzB,GACpCmzB,cAAe,SAAC73B,GACZuzB,EAAK8C,OAAO3xB,EAAI,CAAEmB,WAAY7F,KAElC83B,iBAAkB,SAAC93B,GACfuzB,EAAK8C,OAAO3xB,EAAI,CAAEuyB,cAAej3B,KAErC+3B,qBAAsB,SAAC/3B,GACnBuzB,EAAK8C,OAAO3xB,EAAI,CAAEwyB,kBAAmBl3B,KAEzCg4B,YAAa,SAACh4B,GACVuzB,EAAK8C,OAAO3xB,EAAI,CAAEwG,SAAUlL,KAEhC+R,QAAS,WACLwhB,EAAK8C,OAAO3xB,EAAI,CAAEgL,OAAQ,WAE9BuC,WAAY,WACRshB,EAAK8C,OAAO3xB,EAAI,CAAEgL,OAAQ,cAE9BsC,UAAW,WACPuhB,EAAK8C,OAAO3xB,EAAI,CAAEgL,OAAQ,aAE9BuoB,OAAQ,WACJ1E,EAAK8C,OAAO3xB,EAAI,CAAEgL,OAAQ,aAE9BwoB,UAAW,WACP3E,EAAK8C,OAAO3xB,EAAI,CAAEgL,OAAQ,cAE9ByoB,UAAW,SAACC,GAA0C,OAAA7E,EAAK6D,sBAAsBgB,IACjFC,oBAAqB,SAACzB,GAA0C,OAAArD,EAAK+E,gCAAgC1B,IACrGnnB,KAAM,SAACrW,IACCyT,MAAAA,OAAW,EAAXA,EAAamqB,iBAIjBzD,EAAK8C,OAAO3xB,GAAEoyB,EAAAA,EAAAA,IAAA,CACVE,gBAAgB,GACb59B,QAWFm6B,EAAA+E,gCAAkC,SAAC1B,GAChD,IAAMR,GAAeF,EAAAA,EAAAA,IAAgB3C,EAAKprB,MAAMnM,QAAQqB,eAClDwP,EAAc1G,OAAOoyB,OAAOnC,GAAc95B,MAAK,SAAAk8B,GAAgB,OAAAA,MAAAA,OAAY,EAAZA,EAAc5B,YAAaA,KAChG,OAAOrD,EAAK6D,sBAAuBvqB,GAAeA,EAAYnI,IAAO,KAOxD6uB,EAAAjxB,IAAM,WACnB,OAAO4zB,EAAAA,EAAAA,IAAgB3C,EAAKprB,MAAMnM,QAAQqB,gBAS7Bk2B,EAAA8C,OAAS,SAAC3xB,EAAY1E,GAEnC,IAAMy4B,EAAUlF,EAAKjxB,MAChBm2B,EAAQ/zB,GAIb+zB,EAAQ/zB,IAAGoyB,EAAAA,EAAAA,KAAAA,EAAAA,EAAAA,IAAA,GACJ2B,EAAQ/zB,IACR1E,GALHuzB,EAAKprB,MAAMhQ,UAAUmF,MAAM,mDAAmDoH,EAAE,mBASvE6uB,EAAAmF,cAAgB,SAACh0B,EAAYi0B,GAC1C,IACMC,EADUrF,EAAKjxB,MACEoC,GACvB,QAAKk0B,GAGEC,GAAAA,CAAQD,EAAQD,IAGVpF,EAAAuF,mBAAqB,SAClCp0B,EACAi0B,EACAI,EACAC,GAEA,IACMJ,EADUrF,EAAKjxB,MACEoC,GACvB,IAAKk0B,EAED,QAASG,EAGb,GAAIC,IAAwC,aAAlBJ,EAAOlpB,QAA2C,YAAlBkpB,EAAOlpB,QAE7D,QAASqpB,EAIb,IAAKH,EAAOzB,UAAuC,IAA3ByB,EAAOzB,SAAS14B,OACpC,OAAO80B,EAAKmF,cAAch0B,EAAIi0B,GAGlC,IAAIxB,EAAWyB,EAAOzB,SAStB,OAPI5D,EAAKprB,MAAMnM,QAAQi9B,IAAI/pB,OAAOgqB,iDAE9B/B,EAAWA,EAASpmB,QAAO,SAAAooB,GAAW,OAAC5F,EAAK6F,2BAA2BD,OAKpEhC,EADQ4B,EAAa,QAAU,SACd,SAAAI,GAAW,OAAA5F,EAAKuF,mBAAmBK,EAASR,EAAQI,EAAYC,OAQ3EzF,EAAA6F,2BAA6B,SAAChB,GAC3C,IAAKA,EAAS3yB,SAlNO,qBAmNjB,OAAO,EAGX,IACMmzB,EADUrF,EAAKjxB,MACE81B,GAEvB,SAAIQ,IAAUrK,EAAAA,gBAAgBC,YAAYoK,EAAOzB,SAASpmB,QAAO,SAAAooB,GAAW,OAAAA,EAAQ1zB,SAxN9D,4BAuOT8tB,EAAA8D,SAAW,SACxB3yB,EACAi0B,EACAI,EACAC,GAEA,IACMJ,EADUrF,EAAKjxB,MACEoC,GACvB,QAAKk0B,IAKAA,EAAOzB,UAAuC,IAA3ByB,EAAOzB,SAAS14B,OAKjC80B,EAAKuF,mBAAmBp0B,EAAIi0B,EAAQI,EAAYC,GAJ5CzF,EAAKmF,cAAch0B,EAAIi0B,KAWrBpF,EAAAloB,uBAAyB,WACtC,QAASkoB,EAAKprB,MAAMkxB,eAQP9F,EAAAqE,eAAiB,SAAClzB,GAG/B,QAFgB6uB,EAAKjxB,MACEoC,IA/PvB6uB,EAAKmD,kBAAiB,EAkQ9B,OArQ0B4C,EAAAA,EAAAA,IAAA7C,EAAAD,GAMfC,EAAAxgB,UAAAsjB,sBAAP,SAA6BC,GACzB,OAAI3gC,KAAKsP,QAAUqxB,GAMhB/C,EAAAxgB,UAAA5C,OAAP,WACY,IAAA3O,EAAO7L,KAAKsP,MAAKzD,GACzB,OAAO8B,EAAAA,cAAC+vB,GAAgBO,EAAAA,EAAAA,IAAA,GAAKj+B,KAAKsP,MAAK,CAAE0E,YAAahU,KAAKu+B,sBAAsB1yB,OAfnF+xB,GAAWxiB,EAAAA,EAAAA,IAAA,CADhBI,EAAAA,IAAQ,uCACHoiB,GAAN,CAA0BjwB,EAAAA,gFCLvB,MAAMizB,EAAmDlzB,IAAA,IAAC,QAAEzD,EAAO,UAAE2D,EAAY,kCAAkCF,EAAA,OACtHC,EAAAA,cAAA,OAAKC,UAAW,GAAGA,yBACfD,EAAAA,cAACkzB,EAAAA,QAAO,MACRlzB,EAAAA,cAAA,QAAMC,UAAW,GAAGA,sBAA+B3D,4xBC0B3D,IAAa62B,EAAb,cAAqDnzB,EAAAA,cAMjDtO,YAAmBiQ,GAAkD,IAAAyxB,EACjEpvB,MAAMrC,GAHO,KAAA0xB,gBAA0B,wCA6F1B,KAAAC,UAAY,KACzB,MAAM,MAAEC,GAAUlhC,KAAKsP,MACvB,OAAQ4xB,GAASA,EAAMC,SAAWD,EAAMC,QAAQv7B,QAAUs7B,EAAMC,SAAY,IAyBxE,KAAAC,6CAAgD7rB,GACnDvV,KAAKsP,MAAM+G,OAAOgrB,uCAAwCvzB,KAAOyH,EAAMI,OAAOxO,MArH/EnH,KAAKyI,MAAQ,CACTg2B,SAAS,EACT6C,oCAAkE,QAA/BP,EAAA/gC,KAAKsP,MAAMwF,KAAKgD,SAASxP,cAAM,IAAAy4B,IAA/BA,EAAiCQ,qCAIrEC,qBACH1nB,EAAAA,EAAAA,KACI,SAAA2nB,EAAA,OAAqC,QAArCA,EAAMzhC,KAAKsP,MAAMwF,KAAKgD,SAASxP,cAAM,IAAAm5B,OAAA,EAA/BA,EAAiCC,gCACvC,KACI,MAAM7wB,EAAQ7Q,KAAKihC,YACnB,GAAqB,IAAjBpwB,EAAMjL,OACN5F,KAAKsP,MAAMnM,QAAQ7D,UAAUmF,MAAM,+EAChC,CACH,IAAIg6B,GAAU,EAEd,IAAK,MAAM3yB,KAAQ+E,EAEf,GAAI/E,EAAK9J,IAAI4K,SAAS,oBAAqB,CAAC,IAAD+0B,EAAAC,EAEvC,MAAMC,EAAuB,KAAK/1B,EAAKwD,MAAM+G,OAAOyrB,sCAE9CC,EAGoB,QAHPJ,EACgB,QADhBC,EACf5hC,KAAKsP,MAAMwF,KAAKgD,SAASxP,cAAM,IAAAs5B,GAA8B,QAA9BA,EAA/BA,EAAiCF,oCAA4B,IAAAE,GAE5D,QAF4DA,EAA7DA,EAA+Dn+B,MAC3Du+B,GAAYA,EAASC,MAAQJ,WAChC,IAAAD,GAAO,QAAPA,EAFDA,EAEGM,aAAK,IAAAN,OAAA,EAFRA,EAEUO,oBAAY,IAAAR,GAAAA,EAC1BlD,EAAUA,GAAWsD,EAG7B/hC,KAAKoiC,SAAS,CAAE3D,QAAAA,SAK5B3kB,EAAAA,EAAAA,KACI,SAAAuoB,EAAA,OAAqC,QAArCA,EAAMriC,KAAKsP,MAAMwF,KAAKgD,SAASxP,cAAM,IAAA+5B,OAAA,EAA/BA,EAAiCC,4BACvCA,IACItiC,KAAKoiC,SAAS,CAAEd,kCAAmCgB,OAKxD9nB,SAAM,IAAA/B,EAAAC,EACT,MACIrC,QAAQ,uCAAEgrB,GACVj+B,WAAW,4CAAEm/B,GACbztB,MAAM,SAAEgD,IACR9X,KAAKsP,MAET,IAAKwI,EAASxP,QAAyB,QAAnBmQ,EAAIX,EAASxP,cAAM,IAAAmQ,GAAfA,EAAiB6pB,0BAA2C,QAAnB5pB,EAAIZ,EAASxP,cAAM,IAAAoQ,GAAfA,EAAiB8pB,iCAElF,OADAxiC,KAAKsP,MAAMnM,QAAQ7D,UAAUmjC,YAAY,mFAClC,KAGX,GAAIziC,KAAKsP,MAAMnM,QAAQgB,QAAQC,KAAKs+B,cAAyD,IAAzCvF,EAAAA,sBAAsBwF,eAEtE,OADA3iC,KAAKsP,MAAMnM,QAAQ7D,UAAUmjC,YAAY,kFAClC,KAGX,MAAM5xB,EAAQ7Q,KAAKihC,YACnB,GAAqB,IAAjBpwB,EAAMjL,OAEN,OADA5F,KAAKsP,MAAMnM,QAAQ7D,UAAUmF,MAAM,2EAC5B,KAGX,MAAMm+B,EAAqD5iC,KAAKyI,MAAM64B,kCAAoC,OAAS,GAE7GN,EAAkBhxB,GAAAA,CACpB,wCACAhQ,KAAKsP,MAAM+G,OAAOzI,UAClBg1B,GAGEtI,EAAS95B,EAAAA,EAAA,GACRR,KAAKsP,OAAK,IAEbuzB,4BAA6B,CACzB/nB,YAAa9a,KAAKsP,MAClB1B,UAAWozB,GAEfnwB,MAAOA,EACP4tB,QAASz+B,KAAKyI,MAAMg2B,QACpBqE,QAASn1B,EAAAA,cAACizB,EAAAA,EAAgBtzB,OAAAiB,OAAA,GAAK,CAAEtE,QAASs4B,EAA6C30B,UAAW5N,KAAKghC,mBACvG/xB,MAAOoyB,GAA0CrhC,KAAK+iC,oBAAoB1B,GAC1E2B,YAAa,CAAEp1B,UAAW,iDAE9B,OAAO5N,KAAKsP,MAAMmL,WAAW6f,GAazByI,oBAAoB1B,GACxB,OACI1zB,EAAAA,cAACs1B,EAAAA,GAAa31B,OAAAiB,OAAA,GACN8yB,EAAsC,CAC1CzH,IAAKyH,EAAuCzH,KAAO,KACnDhsB,UAAU,+CACVE,KAAMuzB,EAAuCvzB,KAC7Co1B,UAAW,CAAEnsB,OAAQ/W,KAAKohC,6CAA8CxnB,eAAgB5Z,KAAKsP,MAAMnM,QAAQgB,cAlH9G28B,GAA+B1lB,EAAAA,EAAAA,IAAA,CAD3CI,EAAAA,IACYslB,GAgIb,iGCrKA,MAAMqC,EAA8Dz1B,IAAA,IAAC,mBAAE01B,EAAkB,MAAEvyB,GAAOnD,EAAA,OAC9FC,EAAAA,cAAA,OAAKC,UAAWw1B,GAAqBvyB,IAqBzC,EAlBiG6K,IAO5F,IAP6F,4BAC9FmnB,EAA2B,MAC3BhyB,EAAK,QACL4tB,EAAO,QACPqE,EAAO,MACP7zB,EAAK,YACL+zB,GACHtnB,EACG,MAAM0nB,EAA6B3E,EAAU,gBAAkB,mBAC/D,OACI9wB,EAAAA,cAACiU,EAAAA,OAAMtU,OAAAiB,OAAA,GAAKs0B,GACRl1B,EAAAA,cAAC8N,EAAAA,KAAInO,OAAAiB,OAAA,GAAKy0B,GAAc/zB,IACtBwvB,GAAWqE,EACbn1B,EAAAA,cAACw1B,EAAuB,CAACC,mBAAoBA,EAAoBvyB,MAAOA,8xBCYpF,MAAMwyB,EAA4B,qBAUlC,IAAaC,EAAb,cAA4C31B,EAAAA,UAkBxCtO,YAAmBiQ,GACfqC,MAAMrC,GAiMO,KAAAi0B,SAAW,KACxB,MAAM,MAAErC,GAAUlhC,KAAKsP,MACvB,OAAQ4xB,GAASA,EAAMC,SAAWD,EAAMC,QAAQv7B,QAAUs7B,EAAMC,SAAY,IAG/D,KAAAqC,2BAA6B,KAC1C,MAAM,SAAElF,EAAQ,UAAEgB,GAAct/B,KAAKsP,MAAM0E,YAC3C,OAAOsqB,EACF10B,IAAI01B,GACJpnB,QAAQzP,KAA0CA,IAAUA,EAAMm2B,YAAcn2B,EAAMs2B,kBAG9E,KAAA0E,WAAa,KAE1BzjC,KAAKwjC,6BAA6Bv7B,SAAQQ,IACtCA,EAAM4J,UAAY5J,EAAM02B,aAAY,OAI3B,KAAAlrB,SAAW,KAAW,IAAA8sB,EACnC,MAAM2C,EAA4BhO,EAAAA,gBAAgBC,YAC9C31B,KAAKsP,MAAM0E,YAAYsqB,SAASpmB,QAAOooB,GAAWA,EAAQ1zB,SAASy2B,MAepE,IAAD5B,GAZFzhC,KAAKsP,MAAMhQ,UAAUmjC,YAAY,yCAEjCziC,KAAKyjC,aACLzjC,KAAKwjC,6BAA6Bv7B,SAAQQ,KACrCA,EAAMg2B,SAAWh2B,EAAMwL,UAAYxL,EAAMwL,cAKX,QAA/B8sB,EAAA/gC,KAAKsP,MAAMwF,KAAKgD,SAASxP,cAAM,IAAAy4B,GAA/BA,EAAiCV,gDACjCqD,GA9PO,IA+PP1jC,KAAK2jC,aAE0B,QAA/BlC,EAAAzhC,KAAKsP,MAAMwF,KAAKgD,SAASxP,cAAM,IAAAm5B,GAA/BA,EAAiCmC,qCAAqC,CAClEC,mCAAmC,MAK9B,KAAAvxB,SAAW,KACxBtS,KAAKsP,MAAMhQ,UAAUmjC,YAAY,yCAEjCziC,KAAKyjC,aACLzjC,KAAKwjC,6BAA6Bv7B,SAAQQ,KACrCA,EAAMg2B,SAAWh2B,EAAM6J,UAAY7J,EAAM6J,eAIjC,KAAAyE,OAAS,KACtB/W,KAAKsP,MAAMhQ,UAAUmjC,YAAY,uCAEjCziC,KAAKwjC,6BAA6Bv7B,SAAQQ,KACrCA,EAAMg2B,SAAWh2B,EAAMk2B,YAAcl2B,EAAMsO,QAAUtO,EAAMsO,aAInD,KAAA+sB,iBAAmB,KAChC9jC,KAAKsP,MAAMhQ,UAAUmjC,YAAY,iDAEjCziC,KAAKwjC,6BAA6Bv7B,SAAQQ,IACtCA,EAAMg2B,SAAWh2B,EAAMq7B,kBAAoBr7B,EAAMq7B,uBAhQrD9jC,KAAKyI,MAAQ,CAAEs7B,YAAY,GAnBrB,gBAAoB,IAAAC,EAAAC,EAC1B,MACInvB,MAAM,SAAEgD,IACR9X,KAAKsP,MACT,GAAKwI,MAAAA,IAAAA,EAAUxP,OACX,OAAO,EAGX,MACM0P,EAAkC,QAA9BgsB,EADalsB,EAASxP,OACJyP,oBAAY,IAAAisB,OAAA,EAA3BA,EAA6BhsB,KAC1C,OAAKA,GAASA,EAAKC,WAAcyd,EAAAA,gBAAgBC,YAAY3d,EAAKC,YAI3C,QAAvBgsB,EAAOjsB,EAAKksB,mBAAW,IAAAD,EAAAA,EAHZ,EAWRzC,oBAAiB,IAAAG,EAAAC,EACpB,MACMtD,EADQt+B,KAAKujC,WACI35B,KAAKkC,GAA0BrC,GAAAA,CAAIqC,EAAM,cAC1Du0B,EAC6E,QAD/BsB,EACjB,QADiBC,EAChD5hC,KAAKsP,MAAMwF,KAAKgD,SAASxP,cAAM,IAAAs5B,OAAA,EAA/BA,EAAiCvB,sDAA8C,IAAAsB,GAAAA,EAEnF3hC,KAAKsP,MAAM0E,YAAY4C,KAAK,CACxBG,OAAQ/W,KAAK+W,OACbzE,SAAU+tB,OAAiD1+B,EAAY3B,KAAKsS,SAC5E2B,SAAUosB,OAAiD1+B,EAAY3B,KAAKiU,SAC5EqqB,SAAAA,KAGJxkB,EAAAA,EAAAA,KACI,IAAM9Z,KAAKsP,MAAM0E,YAAYyqB,UAC7B,KACIz+B,KAAK8jC,uBAIbhqB,EAAAA,EAAAA,KACI,IAAM9Z,KAAKsP,MAAM0E,YAAY8qB,wBAC7B,KACI9+B,KAAKiU,eAKb6F,EAAAA,EAAAA,KACI,SAAAuoB,EAAA,OAAqC,QAArCA,EAAMriC,KAAKsP,MAAMwF,KAAKgD,SAASxP,cAAM,IAAA+5B,OAAA,EAA/BA,EAAiC8B,gCACvCA,IACI,MAAMT,EAA4BhO,EAAAA,gBAAgBC,YAC9C31B,KAAKsP,MAAM0E,YAAYsqB,SAASpmB,QAAOooB,GAAWA,EAAQ1zB,SAASy2B,MAGnEhD,GAAkDqD,GAClD1jC,KAAKoiC,SAAS,CAAE2B,WAAYI,QAMxCrqB,EAAAA,EAAAA,KACI,SAAAsqB,EAAA,OAAqC,QAArCA,EAAMpkC,KAAKsP,MAAMwF,KAAKgD,SAASxP,cAAM,IAAA87B,OAAA,EAA/BA,EAAiCC,sCACvC,KACI,MAAMX,EAA4BhO,EAAAA,gBAAgBC,YAC9C31B,KAAKsP,MAAM0E,YAAYsqB,SAASpmB,QAAOooB,GAAWA,EAAQ1zB,SAASy2B,MAGnEhD,GAAkDqD,GAClD1jC,KAAKiU,eAMjB6F,EAAAA,EAAAA,KACI,IAAM9Z,KAAKsP,MAAM0E,YAAYyqB,UAC7B58B,MAAAA,IACI,MAAM6hC,EAA4BhO,EAAAA,gBAAgBC,YAC9C31B,KAAKsP,MAAM0E,YAAYsqB,SAASpmB,QAAOooB,GAAWA,EAAQ1zB,SAASy2B,MAG0C,IAADiB,EAA5GjE,GAAkDqD,GAA6B1jC,KAAK2jC,UA9FrF,SA+FsC,QAArCW,EAAMtkC,KAAKsP,MAAMwF,KAAKgD,SAASxP,cAAM,IAAAg8B,OAAA,EAA/BA,EAAiCV,qCAAqC,CACxEC,kCAAmCpF,SAOnD3kB,EAAAA,EAAAA,KACI,IAAM9Z,KAAKsP,MAAM0E,YAAY3B,WAC7BxQ,MAAAA,IACI,MAAM6hC,EAA4BhO,EAAAA,gBAAgBC,YAC9C31B,KAAKsP,MAAM0E,YAAYsqB,SAASpmB,QAAOooB,GAAWA,EAAQ1zB,SAASy2B,MAGW,IAADkB,EAA7ElE,GAAkDqD,SACb,QAArCa,EAAMvkC,KAAKsP,MAAMwF,KAAKgD,SAASxP,cAAM,IAAAi8B,OAAA,EAA/BA,EAAiCC,wCAAwC,CAC3EC,qCAAsCpyB,SAMtDyH,EAAAA,EAAAA,KACI,SAAA4qB,EAAA,OAAqC,QAArCA,EAAM1kC,KAAKsP,MAAMwF,KAAKgD,SAASxP,cAAM,IAAAo8B,OAAA,EAA/BA,EAAiCC,wBACvC9iC,UAAW,IAAA+iC,EAC2BlP,EAAAA,gBAAgBC,YAC9C31B,KAAKsP,MAAM0E,YAAYsqB,SAASpmB,QAAOooB,GAAWA,EAAQ1zB,SAASy2B,OAGP,QAAnCuB,EAAI5kC,KAAKsP,MAAMwF,KAAKgD,SAASxP,cAAM,IAAAs8B,GAA/BA,EAAiCD,uBAC9D3kC,KAAK+W,eACC/W,KAAKsP,MAAMwF,KAAKgD,SAASxP,OAAOu8B,2BAA2B,CAAEC,yBAAyB,QAMrGC,qBACH,IAAK/kC,KAAKsP,MAAM0E,YAAYxB,uBACxB,OAMJ,MAAM,SAAE8rB,EAAQ,SAAEjsB,EAAQ,UAAEitB,GAAct/B,KAAKsP,MAAM0E,YACtBsqB,EAAS7nB,MAAM6pB,IAC1C,MAAM73B,EAAQ62B,EAAUgB,GACxB,QAAS73B,IAAUA,EAAMg2B,SAAWh2B,EAAMk2B,eAEhBtsB,GAC1BrS,KAAK+W,SAIN2pB,sBAAsBC,EAAiDqE,GAC1E,OAAIhlC,KAAKyI,QAAUu8B,GAAahlC,KAAKsP,MAAMwF,OAAS6rB,EAAU7rB,KAM3D0F,SACH,MAAM,cACFgmB,EAAa,YACbxsB,EACAqC,QAAQ,MAAE4uB,IACVjlC,KAAKsP,MAEHuB,EAAQ7Q,KAAKujC,WACnB,GAAqB,IAAjB1yB,EAAMjL,OAEN,OADA5F,KAAKsP,MAAMnM,QAAQ7D,UAAUmF,MAAM,yDAC5B,KAGX,MAAMu8B,EAAkBhxB,GAAAA,CACpB,gCACA,CACI,kBAAmBgE,EAAYmqB,eAC/B,WAAYnqB,EAAYyqB,QACxB,eAAgBzqB,EAAYyqB,QAC5ByG,UAAqB,cAAVD,EACX,mBAA8B,UAAVA,GAExBjlC,KAAKsP,MAAM+G,OAAOzI,WAGhB0sB,EAAS95B,EAAAA,EAAA,GACRR,KAAKsP,OAAK,IAEb1B,UAAWozB,EACX6B,4BAA6B,CACzB/nB,YAAa9a,KAAKsP,MAClB1B,UAAWozB,GAEfnwB,MAAOA,EAAMjH,KAAKkC,IACd,MAAMw0B,EAAU72B,GAAAA,CAAIqC,EAAM,YACpBrD,EAAQuL,EAAYsrB,UAAUgB,GAG9B6E,EACFnlC,KAAKyI,MAAMs7B,YAAet7B,EAAMs2B,kBAAoBt2B,EAAM01B,gBAAkB11B,EAAMm2B,YAAcn2B,EAAMk2B,WAC1G,MAAO,CACH9yB,GAAIy0B,EACJ8E,QAAS38B,EAAMs2B,iBAAmBt2B,EAAM01B,gBAAkBxwB,EAAAA,cAAC03B,EAAAA,EAAgB,MAC3EC,UAAW,CACP,iBAAkB78B,EAAMs1B,SACxBnwB,UAAWoC,GAAAA,CAAU,sCAAuC,CACxDm1B,OAAAA,EACAI,YAAa98B,EAAM01B,eACnBnwB,SAAUvF,EAAMm2B,WAChB4G,QAAS/8B,EAAMk2B,UACf8G,MAAOh9B,EAAMg2B,QACbiH,SAAUj9B,EAAMgK,WAChBkzB,QAASl9B,EAAMi2B,aAGvB5yB,KAAM6B,EAAAA,aAAmB7B,EAA4B,CAAE00B,cAAAA,UAInE,OAAOxgC,KAAKsP,MAAMmL,WAAW6f,MAhNvBlf,EAAAA,EAAAA,IAAA,CAATE,EAAAA,IAAQ,8BADAgoB,GAAsBloB,EAAAA,EAAAA,IAAA,CADlCI,EAAAA,IACY8nB,GAyRb,SAAe/nB,EAAAA,EAAAA,iBAAgB+nB,0FCrU/B,MAAMsC,EAAyDl4B,IAAA,IAAC,QAAE03B,EAAO,UAAEE,EAAS,KAAEx5B,GAAM4B,EAAA,OACxFC,EAAAA,cAAAA,EAAAA,SAAA,KACKy3B,EACDz3B,EAAAA,cAAC8N,EAAAA,KAAInO,OAAAiB,OAAA,GAAK+2B,GAAYx5B,KAY9B,EARmF4P,IAAA,IAAC,4BAAEmnB,EAA2B,MAAEhyB,GAAO6K,EAAA,OACtH/N,EAAAA,cAACiU,EAAAA,OAAMtU,OAAAiB,OAAA,GAAKs0B,GACPhyB,EAAMjH,KAAIkC,GACP6B,EAAAA,cAACi4B,EAAat4B,OAAAiB,OAAA,CAACvM,IAAK8J,EAAKD,IAAQC,kECb7C,MAEA,EAF0B+5B,IAAMl4B,EAAAA,cAAA,OAAKC,UAAU,kMCoBxC,MAAMk4B,UAA0Cn4B,EAAAA,cAAvDtO,cAAA,oBAoBqB,KAAA0mC,kBAAqBC,IAClC,IAAKA,IAAatQ,EAAAA,gBAAgBC,YAAYqQ,GAC1C,OAAO,KAEX,MAAMC,EAAuC,GAC7C,IAAK,MAAMC,KAAQF,EAAU,CAEzB,MAAM73B,GAAUC,EAAAA,EAAAA,kBAAiB,QAASpO,KAAKsP,MAAMrB,iBAAkB,GAAI,IACrEk4B,EAAWD,EAAKC,SAAWD,EAAKC,SAAW,GACjDh4B,EAAQi4B,cAAcC,MAAQF,EAC9B,MAAM93B,GAAaC,EAAAA,EAAAA,wBAAuBtO,KAAKsP,MAAMrB,iBAAkBE,GACjEm4B,EAAoC,CACtCv4B,UAAWm4B,EAAKn4B,UAChBH,UAAW,0CACXu4B,SAAUD,EAAKC,SACfI,QAASL,EAAKK,QAAQC,eACtBC,aAAcP,EAAKO,aACnB54B,KAAM,SACN64B,qBAAsBr4B,EACtBH,SAASy4B,EAAAA,EAAAA,kBAAiB3mC,KAAKsP,MAAMrB,iBAAkBE,EAASg4B,IAEpEF,EAAc17B,KAAK+7B,GAGvB,OAAOL,GA3CJzrB,SACH,MAAMyrB,EAAgBjmC,KAAK+lC,kBAAkB/lC,KAAKsP,MAAMs3B,OACxD,OACIj5B,EAAAA,cAAA,OAAKC,UAAU,4CACVq4B,GAAiBvQ,EAAAA,gBAAgBC,YAAYsQ,GAC1Ct4B,EAAAA,cAACs1B,EAAAA,GAAc,CACX2D,MAAOX,EACP/C,UAAW,CAAE2D,aAAc7mC,KAAKsP,MAAMu3B,aAAcjtB,eAAgB5Z,KAAKsP,MAAMsK,kBAEnF,OAqCpB,+kBCzBO,MAAMktB,UAA+Bn5B,EAAAA,cAOxCtO,YAAmBiQ,GACfqC,MAAMrC,GAPO,KAAAy3B,mBAAuCttB,EAAAA,EAAAA,oBACpDzZ,KAAKsP,MAAMnM,QAAQgB,QAAQuV,kBAC3B1Z,KAAKsP,MAAMqK,aACX3Z,KAAKsP,MAAMhQ,WAkER,KAAA0nC,oBAAuBzxB,IAC1BvV,KAAKsP,MAAM+G,OAAO1D,QAAS7E,KAAOyH,EAAMI,OAAOxO,OAO5C,KAAA8/B,sBAAyB1xB,IAC5BvV,KAAKsP,MAAM+G,OAAO6wB,UAAY3xB,EAAMI,OAAOxO,OAQxC,KAAAggC,qBAAwBC,GAAuB7xB,IAA8C,IAAA8xB,EACrE,QAA3BA,EAAIrnC,KAAKsP,MAAM+G,OAAOuwB,aAAK,IAAAS,GAAvBA,EAA0BvP,OAAOsP,MACjCpnC,KAAKsP,MAAM+G,OAAOuwB,MAAM9O,OAAOsP,IAAYjB,SAAW5wB,EAAMI,OAAOxO,QA9EpEqT,SACH,MAAM,UAAE8sB,EAAS,YAAEC,EAAW,SAAEC,GAAaxnC,KAAKsP,OAC5C,QAAEqD,EAAO,UAAEu0B,EAAS,MAAEO,EAAK,MAAEb,GAAU5mC,KAAKsP,MAAM+G,OAClDqxB,EAAmBd,GAASlR,EAAAA,gBAAgBC,YAAYiR,IAC1Dj5B,EAAAA,cAACm4B,EAAiC,CAC9Bc,MAAOA,EACPC,aAAc7mC,KAAKmnC,qBACnBvtB,eAAgB5Z,KAAKsP,MAAMnM,QAAQgB,QACnC8J,iBAAkBjO,KAAK+mC,oBAIzBzM,EAAS95B,EAAAA,EAAA,GACRR,KAAKsP,OAAK,IACbg4B,UAAAA,EACAC,YAAAA,EACAC,SAAUA,IAAsB,EAChCv4B,MAAOjP,KAAK2nC,eAAeh1B,GAC3Bu0B,UAAWlnC,KAAK4nC,iBAAiBV,GACjCO,MAAOznC,KAAK6nC,aAAaJ,GACzBb,MAAOc,EACPI,YAAa,CACThtB,YAAa9a,KAAKsP,MAClB1B,UAAW,IAEfm6B,8CAA+C,CAC3CnO,IAAK,MACLhsB,UAAW,yDAEfo6B,0CAA2C,CACvCpO,IAAK,MACLhsB,UAAW,qDAEfq6B,4CAA6C,CACzCrO,IAAK,MACLhsB,UAAW,uDAEfs6B,4CAA6C,CACzCtO,IAAK,MACLhsB,UAAW,2CACX,aAAc+E,MAAAA,OAAO,EAAPA,EAAS7E,KACvBq6B,SAAU,IACVt6B,KAAM,SAEVu6B,wCAAyC,CACrCx6B,UAAW,mDAEfy6B,0CAA2C,CACvCz6B,UAAW,uDAInB,OAAO5N,KAAKsP,MAAMmL,WAAW6f,GA8BzBsN,iBAAiB95B,GACrB,OAAKA,EAIDH,EAAAA,cAACs1B,EAAAA,GAA0B,CACvBn1B,KAAMA,EACNF,UAAU,0CACVs1B,UAAW,CAAEnsB,OAAQ/W,KAAKinC,sBAAuBrtB,eAAgB5Z,KAAKsP,MAAMnM,QAAQgB,WANjF,KAWPwjC,eAAeh1B,GAAsB,IAAA21B,EACzC,OAAK31B,EAGDogB,EAAAA,iBAAiBwV,mBAAmB51B,EAAQ7E,MACrC,KAIPH,EAAAA,cAACs1B,EAAAA,GAAa,CACVrJ,IAAgB,QAAb0O,EAAE31B,EAAQinB,WAAG,IAAA0O,EAAAA,EAAI,KACpBx6B,KAAM6E,EAAQ7E,KACdF,UAAU,2CACVs1B,UAAW,CAAEnsB,OAAQ/W,KAAKgnC,oBAAqBptB,eAAgB5Z,KAAKsP,MAAMnM,QAAQgB,WAX/E,KAgBP0jC,aAAa/7B,EAA4B08B,GAA+B,IAAAC,EAAAC,EAE5E,MAUMC,EAAwB78B,MAAAA,GAAmB,QAAf28B,EAAJ38B,EAAM88B,qBAAa,IAAAH,GAAnBA,EAAqBI,UAAY/8B,EAAK88B,cAVd,CAClDC,UAAW,CACPC,GAAI,CAAEC,EAAG,kBAAmBC,EAAG,IAAKC,EAAG,KACvCC,GAAI,CAAEH,EAAG,kBAAmBC,EAAG,IAAKC,EAAG,KACvCE,GAAI,CAAEJ,EAAG,kBAAmBC,EAAG,IAAKC,EAAG,KACvCG,GAAI,CAAEL,EAAG,kBAAmBC,EAAG,IAAKC,EAAG,KACvCI,GAAI,CAAEN,EAAG,kBAAmBC,EAAG,IAAKC,EAAG,MAE3CK,UAAU,GAGd,OACI37B,EAAAA,cAACs1B,EAAAA,GAAc31B,OAAAiB,OAAA,GACPzC,EAAI,CACR8N,eAAgB5Z,KAAKsP,MAAMnM,QAAQgB,QACnColC,aAAcvpC,KAAKsP,MAAMnM,QAAQgB,QAAQolC,aACzCX,cAAeD,EACfa,oBAAoB,UAAS,cAChBhB,EACbtF,UAAW,CACPlhC,IAA4B,QAAzB0mC,EAAE1oC,KAAKsP,MAAM+G,OAAOoxB,aAAK,IAAAiB,EAAAA,EAAI,GAChC9uB,eAAgB5Z,KAAKsP,MAAMnM,QAAQgB,QACnCslC,WAAYzpC,KAAKsP,MAAMyuB,SACvB2L,kBAAmB,aAOvC,+GC9LKC,sCAAL,SAAKA,GACDA,EAAAA,EAAA,mCACAA,EAAAA,EAAA,mCACAA,EAAAA,EAAA,iCACAA,EAAAA,EAAA,iCAJJ,CAAKA,IAAAA,EAAW,KAehB,MAiEaC,EAAuEt6B,IAChF,MAAM,SAAEk4B,EAAQ,YAAEM,EAAW,UAAER,EAAS,YAAEC,GAAgBj4B,EAC1D,OAAIk4B,EACO75B,EAAAA,cAAAA,EAAAA,SAAA,KApEMk8B,EAACC,EAA6CxC,EAAoBC,KACnF,MAAM,MACFt4B,EAAK,UACLi4B,EAAS,MACTO,EAAK,MACLb,EAAK,4CACLsB,EAA2C,wCAC3CE,EAAuC,0CACvCC,GACAyB,EACEC,EAAWzC,EAAYA,EAAYqC,EAAYK,cAAgBL,EAAYK,cAC3EC,EAAiB1C,GAA4BoC,EAAYO,eACzDC,EAAaJ,EAAWJ,EAAYS,eACpCC,EAAWN,GAAYJ,EAAYW,cAAgB,WAAa,GAChEC,GACFN,GAAmBF,IAAaE,GAAkBF,IAAaE,EAAiBN,EAAYK,cAA6B,GAAZ,UAC3GQ,EAAgBL,IAAeR,EAAYO,eAAiB,oBAAsB,GAClFO,EAAeN,IAAeR,EAAYK,cAAgB,mBAAqB,GAC/EU,EAAmB3vB,GAAAA,CAAW,2CAA4C0vB,EAAcD,EAAeH,EAAUE,GAEvH,OACI58B,EAAAA,cAAC8N,EAAAA,KAAInO,OAAAiB,OAAA,GAAK25B,EAA2C,CAAEt6B,UAAW88B,IAC9D/8B,EAAAA,cAAC8N,EAAAA,KAAInO,OAAAiB,OAAA,GAAK65B,GAA0CX,GACpD95B,EAAAA,cAAC8N,EAAAA,KAAInO,OAAAiB,OAAA,GAAK85B,GACLp5B,EACAi4B,EACAN,KA0CCiD,CAAav6B,EAAOg4B,EAAWC,IAEtC55B,EAAAA,cAACiU,EAAAA,OAAMtU,OAAAiB,OAAA,GAAKu5B,GAjCKgC,CAAAA,IACxB,MAAM,MACF76B,EAAK,UACLi4B,EAAS,MACTO,EAAK,MACLb,EAAK,8CACLmB,EAA6C,0CAC7CC,EAAyC,4CACzCC,GACA6B,EACJ,OACIn8B,EAAAA,cAAC8N,EAAAA,KAAInO,OAAAiB,OAAA,GAAKw5B,GACNp6B,EAAAA,cAAC8N,EAAAA,KAAInO,OAAAiB,OAAA,GAAKy5B,GAA4CP,GACtD95B,EAAAA,cAAC8N,EAAAA,KAAInO,OAAAiB,OAAA,GAAK05B,GACLh5B,EACAi4B,EACAN,KAiBoB+D,CAAer7B,KAGpD","sources":["webpack://Msdyn365.Commerce.Online/./src/modules/custom-checkout-shipping-address/common/address-autosuggest.ts?d373","webpack://Msdyn365.Commerce.Online/./src/modules/custom-checkout-shipping-address/actions/get-state-provinces.ts?4008","webpack://Msdyn365.Commerce.Online/./src/modules/custom-checkout-shipping-address/common/address-common.ts?f4cc","webpack://Msdyn365.Commerce.Online/./src/modules/custom-checkout-shipping-address/common/address-format.data.ts?1ce5","webpack://Msdyn365.Commerce.Online/./src/modules/custom-checkout-shipping-address/common/address-module.data.ts?c633","webpack://Msdyn365.Commerce.Online/./src/modules/custom-checkout-shipping-address/common/address-format.ts?b9ef","webpack://Msdyn365.Commerce.Online/./src/modules/custom-checkout-shipping-address/common/address-meta-data.ts?e0f3","webpack://Msdyn365.Commerce.Online/./src/modules/custom-checkout-shipping-address/common/components/address-alert.tsx?99d1","webpack://Msdyn365.Commerce.Online/./src/modules/custom-checkout-shipping-address/common/components/address-button.tsx?55d4","webpack://Msdyn365.Commerce.Online/./src/modules/custom-checkout-shipping-address/common/components/address-checkbox.tsx?0721","webpack://Msdyn365.Commerce.Online/./src/modules/custom-checkout-shipping-address/common/components/address-dropdown.tsx?6e8b","webpack://Msdyn365.Commerce.Online/./src/modules/custom-checkout-shipping-address/common/components/address-error-message.tsx?a335","webpack://Msdyn365.Commerce.Online/./src/modules/custom-checkout-shipping-address/common/components/address-error-title.tsx?227d","webpack://Msdyn365.Commerce.Online/./src/modules/custom-checkout-shipping-address/common/components/address-input.tsx?713c","webpack://Msdyn365.Commerce.Online/./src/modules/custom-checkout-shipping-address/common/components/address-label.tsx?597f","webpack://Msdyn365.Commerce.Online/./src/modules/custom-checkout-shipping-address/common/components/address-add.tsx?eb99","webpack://Msdyn365.Commerce.Online/./src/modules/custom-checkout-shipping-address/common/components/address-detail-item.tsx?6cc8","webpack://Msdyn365.Commerce.Online/./src/modules/custom-checkout-shipping-address/common/components/address-show.tsx?8659","webpack://Msdyn365.Commerce.Online/./src/modules/custom-checkout-shipping-address/common/components/address-select.tsx?bbe0","webpack://Msdyn365.Commerce.Online/./src/modules/custom-checkout-shipping-address/custom-checkout-shipping-address.tsx?35a0","webpack://Msdyn365.Commerce.Online/./src/modules/custom-checkout-shipping-address/custom-checkout-shipping-address.view.tsx?774b","webpack://Msdyn365.Commerce.Online/./src/themes/venchi/utils/convert_a2_a3.ts?c0bb","webpack://Msdyn365.Commerce.Online/./src/themes/venchi/views/account-management-address.view.tsx?2098","webpack://Msdyn365.Commerce.Online/./src/modules/b2b-requests-status/components/b2b-requests-table.tsx?06fc","webpack://Msdyn365.Commerce.Online/./src/modules/b2b-requests-status/b2b-requests-status.tsx?c1aa","webpack://Msdyn365.Commerce.Online/./src/modules/b2b-requests-status/b2b-requests-status.view.tsx?6b7c","webpack://Msdyn365.Commerce.Online/../../src/checkout-state-data-action.ts?8344","webpack://Msdyn365.Commerce.Online/../../src/checkout-state.ts?acd8","webpack://Msdyn365.Commerce.Online/../../src/checkout-utilities.data.ts?b2cc","webpack://Msdyn365.Commerce.Online/../../../src/module-state-manager/module-state.ts?7579","webpack://Msdyn365.Commerce.Online/../../../src/module-state-manager/with-module-state.tsx?61ca","webpack://Msdyn365.Commerce.Online/./src/common/waiting.tsx?8095","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-express-payment-container/checkout-express-payment-container.tsx?1d63","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-express-payment-container/checkout-express-payment-container.view.tsx?4299","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-section-container/checkout-section-container.tsx?c853","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-section-container/checkout-section-container.view.tsx?b4ab","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-section-container/components/loading.tsx?2e57","webpack://Msdyn365.Commerce.Online/./src/modules/interactive-feature-item/components/links.tsx?7423","webpack://Msdyn365.Commerce.Online/./src/modules/interactive-feature-item/interactive-feature-item.tsx?792c","webpack://Msdyn365.Commerce.Online/./src/modules/interactive-feature-item/interactive-feature-item.view.tsx?bdcc"],"sourcesContent":["// tslint:disable:no-reference\r\n\r\nimport { IAutoSuggestOptions } from '@msdyn365-commerce-modules/address/src/common/address-autosuggest.data';\r\nimport { IStoreSelectorStateManager } from '@msdyn365-commerce-modules/bopis-utilities';\r\nimport { ITelemetry } from '@msdyn365-commerce/core';\r\n/**\r\n *\r\n * Auto Suggest\r\n */\r\nexport class AutoSuggest {\r\n public readonly excludedAddressFields: string[] = ['ThreeLetterISORegionName', 'Name', 'AddressTypeValue', 'Phone'];\r\n private telemetry: ITelemetry;\r\n private countryCode?: string;\r\n private bingMapsApiKey?: string;\r\n private defaultLanguageId?: string;\r\n private autoSuggestManager: Microsoft.Maps.AutosuggestManager | undefined;\r\n private autoSuggestOptions: IAutoSuggestOptions;\r\n\r\n constructor(\r\n telemetry: ITelemetry,\r\n autoSuggestOptions: IAutoSuggestOptions,\r\n BingMapsApiKey?: string,\r\n countryCode?: string,\r\n defaultLanguageId?: string\r\n ) {\r\n this.telemetry = telemetry;\r\n this.autoSuggestOptions = autoSuggestOptions;\r\n this.bingMapsApiKey = BingMapsApiKey;\r\n this.countryCode = countryCode;\r\n this.defaultLanguageId = defaultLanguageId;\r\n }\r\n\r\n public attachAutoSuggest = (\r\n inputId: string,\r\n containerId: string,\r\n selectedSuggestionCallback: (result: Microsoft.Maps.ISuggestionResult) => void\r\n ): void => {\r\n if (!this.autoSuggestManager) {\r\n Microsoft.Maps.loadModule('Microsoft.Maps.AutoSuggest', {\r\n callback: () => {\r\n const options = {\r\n ...this.autoSuggestOptions,\r\n countryCode: this.countryCode\r\n };\r\n this.autoSuggestManager = new Microsoft.Maps.AutosuggestManager(options);\r\n this.autoSuggestManager.attachAutosuggest(inputId, containerId, selectedSuggestionCallback);\r\n document.querySelector(inputId)?.setAttribute('role', 'combobox');\r\n setTimeout(() => {\r\n document.querySelector(inputId)?.setAttribute('type', 'text');\r\n }, 0);\r\n },\r\n errorCallback: () => {\r\n if (this.telemetry) {\r\n this.telemetry.debug('Unable to attach map auto suggest.');\r\n }\r\n },\r\n credentials: this.bingMapsApiKey\r\n });\r\n }\r\n };\r\n\r\n public changeAutoSuggestionCountryCode = (countryCode?: string): void => {\r\n if (this.autoSuggestManager) {\r\n this.autoSuggestOptions.countryCode = countryCode;\r\n this.autoSuggestManager.setOptions(this.autoSuggestOptions);\r\n }\r\n };\r\n\r\n public disposeAutoSuggest = (): void => {\r\n this.autoSuggestManager?.detachAutosuggest();\r\n this.autoSuggestManager?.dispose();\r\n this.autoSuggestManager = undefined;\r\n };\r\n\r\n public _loadMapAPI = async (storeSelectorStateManager: IStoreSelectorStateManager): Promise => {\r\n await storeSelectorStateManager.loadMapApi({\r\n key: this.bingMapsApiKey,\r\n lang: this.countryCode,\r\n market: this.defaultLanguageId\r\n });\r\n };\r\n}\r\n","import { buildCacheKey } from '@msdyn365-commerce-modules/retail-actions';\r\nimport {\r\n CacheType,\r\n createObservableDataAction,\r\n IAction,\r\n IActionContext,\r\n IActionInput,\r\n ICommerceApiSettings\r\n} from '@msdyn365-commerce/core';\r\nimport { getStateProvincesAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/StoreOperationsDataActions.g';\r\nimport { StateProvinceInfo } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\r\n\r\n/**\r\n * Input class for get state provinces data action\r\n */\r\nexport class GetStateProvincesInput implements IActionInput {\r\n public countryRegionId: string;\r\n private apiSettings: ICommerceApiSettings;\r\n\r\n constructor(countryRegionId: string, apiSettings: ICommerceApiSettings) {\r\n this.countryRegionId = countryRegionId;\r\n this.apiSettings = apiSettings;\r\n }\r\n\r\n public getCacheKey = () => buildCacheKey(`StateProvinceInfo-${this.countryRegionId}`, this.apiSettings);\r\n public getCacheObjectType = () => 'StateProvinceInfo';\r\n public dataCacheType = (): CacheType => 'request';\r\n}\r\n\r\nexport async function getStateProvinceAction(input: GetStateProvincesInput, ctx: IActionContext): Promise {\r\n return getStateProvincesAsync({ callerContext: ctx, queryResultSettings: {} }, input.countryRegionId);\r\n}\r\n\r\nexport default createObservableDataAction({\r\n action: >getStateProvinceAction\r\n});\r\n","import { addAddress, AddressManagementInput, updateAddress, updatePrimaryAddress } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { IActionInput, ICoreContext, IObservableAction, ITelemetry } from '@msdyn365-commerce/core';\r\nimport { Address, CountryRegionInfo, StateProvinceInfo } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\r\n\r\nimport { getStateProvinceAction, GetStateProvincesInput } from './../actions/get-state-provinces';\r\nimport { IAddressResource, IAddressResponse } from './address-module.data';\r\n\r\n/**\r\n *\r\n * Address common\r\n */\r\nexport class AddressCommon {\r\n private context: ICoreContext;\r\n private resources: IAddressResource;\r\n private telemetry: ITelemetry;\r\n\r\n constructor(context: ICoreContext, resources: IAddressResource, telemetry: ITelemetry) {\r\n this.context = context;\r\n this.resources = resources;\r\n this.telemetry = telemetry;\r\n }\r\n\r\n public getDefaultCountryRegionId = (countryRegionId: string, countryRegions: CountryRegionInfo[], market?: string): string => {\r\n const marketISOCode = market || 'US';\r\n const currentCountryRegion = countryRegions.find(countryRegion => (countryRegion.ISOCode || '') === marketISOCode);\r\n return (currentCountryRegion && currentCountryRegion.CountryRegionId) || countryRegionId;\r\n };\r\n\r\n public parseRetailException = (resources: IAddressResource): IAddressResponse => {\r\n return {\r\n errorTitle: resources.addressErrorMessageTitle,\r\n errorMessage: resources.addressGenericErrorMessage\r\n };\r\n };\r\n\r\n public isAuthenticatedFlow = (): boolean => {\r\n return this.context.request.user.isAuthenticated;\r\n };\r\n\r\n public getStateProvinces = async (countryRegionId: string): Promise => {\r\n let response: StateProvinceInfo[] = [];\r\n if (this.context && this.context.actionContext) {\r\n try {\r\n const input = new GetStateProvincesInput(countryRegionId, this.context.request.apiSettings);\r\n response = await getStateProvinceAction(input, this.context.actionContext);\r\n } catch (error) {\r\n if (this.telemetry) {\r\n this.telemetry.error(`Error encountered ${error}`);\r\n this.telemetry.debug('Unable to get state provinces');\r\n }\r\n }\r\n }\r\n return Promise.resolve(response);\r\n };\r\n\r\n // For any address, check for common requried field else treat it as invalid\\empty address.\r\n public isEmpty = (address: Address): boolean => {\r\n if (address && address.ThreeLetterISORegionName && address.City) {\r\n return false;\r\n }\r\n\r\n return true;\r\n };\r\n\r\n public addCustomerAddress = (address: Address): Promise => {\r\n return this.submitCustomerAddress(addAddress, address);\r\n };\r\n\r\n public updateCustomerAddress = (address: Address): Promise => {\r\n return this.submitCustomerAddress(updateAddress, address);\r\n };\r\n\r\n public updateCustomerPrimaryAddress = (address: Address): Promise => {\r\n return this.submitCustomerAddress(updatePrimaryAddress, address);\r\n };\r\n\r\n private submitCustomerAddress = (addressAction: IObservableAction, address: Address): Promise => {\r\n address.AddressTypeValue = address.AddressTypeValue || 7; // 7 sets it to HOME by default\r\n\r\n const input = new AddressManagementInput(address);\r\n return this.execAddressAction(addressAction, input, address);\r\n };\r\n\r\n private execAddressAction = async (\r\n addressAction: IObservableAction,\r\n input: IActionInput | IActionInput[],\r\n address: Address\r\n ): Promise => {\r\n let response: IAddressResponse = {};\r\n\r\n if (this.context && this.context.actionContext) {\r\n try {\r\n const addresses = await addressAction(input, this.context.actionContext);\r\n if (addresses.length > 0) {\r\n const currentAddress = addresses.find(\r\n newAddress =>\r\n newAddress.Name === address.Name &&\r\n newAddress.AddressTypeValue === address.AddressTypeValue &&\r\n newAddress.City === address.City &&\r\n newAddress.Phone === address.Phone &&\r\n newAddress.State === address.State &&\r\n newAddress.Street === address.Street &&\r\n newAddress.ThreeLetterISORegionName === address.ThreeLetterISORegionName &&\r\n newAddress.ZipCode === address.ZipCode\r\n );\r\n response.address = address.RecordId ? address : currentAddress ? currentAddress : addresses[addresses.length - 1];\r\n } else {\r\n response.address = address;\r\n }\r\n response.customerAddresses = addresses;\r\n } catch (error) {\r\n if (this.telemetry) {\r\n this.telemetry.error(`Error encountered ${error}`);\r\n this.telemetry.debug('Unable to exec address action');\r\n }\r\n response = this.parseRetailException(this.resources);\r\n }\r\n }\r\n return Promise.resolve(response);\r\n };\r\n}\r\n","export enum AddressItemDisplayType {\r\n Input = 'Input',\r\n Dropdown = 'Dropdown',\r\n Checkbox = 'Checkbox'\r\n}\r\n\r\nexport enum AddressValidationRuleType {\r\n Required = 'Required',\r\n Format = 'Format'\r\n}\r\n\r\nexport enum AddressItemType {\r\n Name = 1001,\r\n Phone = 1002,\r\n IsPrimary = 1003,\r\n AddressTypeValue = 1004,\r\n ZipCode = 1,\r\n City = 2,\r\n County = 3,\r\n State = 4,\r\n ThreeLetterISORegionName = 5,\r\n Street = 6,\r\n District = 7,\r\n StreetNumber = 8,\r\n BuildingCompliment = 9,\r\n Postbox = 10,\r\n House_RU = 21,\r\n Flat_RU = 22,\r\n CountryOKSMCode_RU = 23\r\n}\r\n\r\nexport interface IAddressItem {\r\n name: string;\r\n type: AddressItemType;\r\n label: string;\r\n maxLength: number;\r\n displayType: AddressItemDisplayType;\r\n validationRules?: IAddressValidationRule[];\r\n isNewLine: boolean;\r\n}\r\n\r\nexport interface IAddressValidationRule {\r\n type: AddressValidationRuleType;\r\n regEx: string;\r\n message: string;\r\n}\r\n\r\nexport interface IAddressDropdownsData {\r\n [index: string]: { key?: string | number; value?: string }[];\r\n}\r\n","import { Heading } from '@msdyn365-commerce-modules/data-types';\r\nimport { Address } from '@msdyn365-commerce/retail-proxy';\r\n\r\nexport enum AddressOperation {\r\n Add = 'Add',\r\n Show = 'Show',\r\n Update = 'Update',\r\n List = 'List'\r\n}\r\n\r\nexport enum AddressType {\r\n Shipping = 'Shipping',\r\n Billing = 'Billing',\r\n Company = 'Company'\r\n}\r\n\r\nexport interface IDropdownDisplayData {\r\n [index: string]: { key?: string; value?: string }[];\r\n}\r\n\r\nexport interface IAddressResponse {\r\n errorTitle?: string;\r\n errorMessage?: string;\r\n customerAddresses?: Address[];\r\n address?: Address;\r\n}\r\n\r\nexport interface IAddressConfig {\r\n heading?: Heading;\r\n primaryAddressSectionHeading?: Heading;\r\n otherAddressSectionHeading?: Heading;\r\n addAddressHeading?: Heading;\r\n editAddressHeading?: Heading;\r\n}\r\n\r\nexport interface IAddressResource {\r\n addressAddButtonText: string;\r\n addressAddButtonAriaLabel: string;\r\n addressPrimaryButtonText: string;\r\n addressPrimaryButtonAriaLabel: string;\r\n addressEditButtonText: string;\r\n addressEditButtonAriaLabel: string;\r\n addressRemoveButtonText: string;\r\n addressRemoveButtonAriaLabel: string;\r\n addressSaveButtonText: string;\r\n addressSaveButtonAriaLabel: string;\r\n addressCancelButtonText: string;\r\n addressCancelButtonAriaLabel: string;\r\n addressStateDefaultSelectionText: string;\r\n addressNameLabel: string;\r\n addressNameLabelOptional?: string;\r\n addressNameRequiredErrorMessage: string;\r\n addressPhoneLabel: string;\r\n addressPhoneLabelOptional?: string;\r\n addressPhoneRequiredErrorMessage: string;\r\n addressZipCodeLabel: string;\r\n addressZipCodeLabelOptional?: string;\r\n addressZipCodeRequiredErrorMessage: string;\r\n addressCityLabel: string;\r\n addressCityLabelOptional?: string;\r\n addressCityRequiredErrorMessage: string;\r\n addressCountyLabel: string;\r\n addressCountyLabelOptional?: string;\r\n addressCountyRequiredErrorMessage: string;\r\n addressStateLabel: string;\r\n addressStateLabelOptional?: string;\r\n addressStateRequiredErrorMessage: string;\r\n addressThreeLetterISORegionNameLabel: string;\r\n addressThreeLetterISORegionNameLabelOptional?: string;\r\n addressThreeLetterISORegionNameRequiredErrorMessage: string;\r\n addressStreetRequiredErrorMessage: string;\r\n addressDistrictLabel: string;\r\n addressDistrictLabelOptional?: string;\r\n addressDistrictRequiredErrorMessage: string;\r\n addressStreetNumberLabel: string;\r\n addressStreetNumberLabelOptional?: string;\r\n addressStreetNumberRequiredErrorMessage: string;\r\n addressBuildingComplimentLabel: string;\r\n addressBuildingComplimentLabelOptional?: string;\r\n addressBuildingComplimentRequiredErrorMessage: string;\r\n addressPostboxLabel: string;\r\n addressPostboxLabelOptional?: string;\r\n addressPostboxRequiredErrorMessage: string;\r\n addressHouseRULabel: string;\r\n addressHouseRULabelOptional?: string;\r\n addressHouseRURequiredErrorMessage: string;\r\n addressFlatRULabel: string;\r\n addressFlatRULabelOptional?: string;\r\n addressFlatRURequiredErrorMessage: string;\r\n addressCountryOKSMCodeRULabel: string;\r\n addressCountryOKSMCodeRURequiredErrorMessage: string;\r\n addressErrorMessageTitle: string;\r\n addressGenericErrorMessage: string;\r\n addressEmptyListAddressMessage: string;\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { get, set } from 'mobx';\r\n\r\nimport {\r\n Address,\r\n AddressPurpose,\r\n CountryRegionInfo,\r\n StateProvinceInfo\r\n} from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\r\n\r\nimport { AddressItemType, IAddressDropdownsData, IAddressItem, IAddressValidationRule } from './address-format.data';\r\nimport { AddressMetaData } from './address-meta-data';\r\n\r\n/**\r\n *\r\n * Retail Service Address format parser\r\n */\r\nexport class AddressFormat {\r\n private countryRegionsInfo?: CountryRegionInfo[];\r\n private addressPurposes?: AddressPurpose[];\r\n private addressMetaData: AddressMetaData;\r\n\r\n constructor(countryRegionsInfo: CountryRegionInfo[], addressMetaData: AddressMetaData, addressPurposes: AddressPurpose[]) {\r\n this.countryRegionsInfo = countryRegionsInfo;\r\n this.addressMetaData = addressMetaData;\r\n this.addressPurposes = addressPurposes;\r\n }\r\n\r\n public getAddressFormat(countryRegionId: string): IAddressItem[] {\r\n const countryRegionInfo = this._getCountryRegionInfo(countryRegionId);\r\n if (countryRegionInfo) {\r\n return this._getAddressDisplayFormat(countryRegionInfo);\r\n }\r\n return [];\r\n }\r\n\r\n public getCountryFormat(): { key?: string; value?: string }[] {\r\n return (this.countryRegionsInfo || []).map(countryRegion => {\r\n return {\r\n key: countryRegion.CountryRegionId,\r\n value: countryRegion.ShortName\r\n };\r\n });\r\n }\r\n\r\n public getStateFormat(stateProvinceInfo?: StateProvinceInfo[]): { key?: string; value?: string }[] {\r\n return (stateProvinceInfo || []).map(state => {\r\n return {\r\n key: state.StateId,\r\n value: state.StateName\r\n };\r\n });\r\n }\r\n\r\n public getAddressTypeFormat(): { key?: number; value?: string }[] {\r\n return (this.addressPurposes || []).map(addressPurpose => {\r\n return {\r\n key: addressPurpose.AddressType,\r\n value: addressPurpose.Name\r\n };\r\n });\r\n }\r\n\r\n public getPrefilledAddressDropdownData = (\r\n stateDefaultSelectionText: string,\r\n stateProvinceInfo?: StateProvinceInfo[]\r\n ): IAddressDropdownsData => {\r\n const defaultStateText = {\r\n key: '',\r\n value: stateDefaultSelectionText\r\n };\r\n const dropdownData: IAddressDropdownsData = {};\r\n\r\n dropdownData[AddressItemType[AddressItemType.ThreeLetterISORegionName]] = this.getCountryFormat();\r\n dropdownData[AddressItemType[AddressItemType.State]] = this.getStateFormat(stateProvinceInfo);\r\n dropdownData[AddressItemType[AddressItemType.State]].unshift(defaultStateText);\r\n dropdownData[AddressItemType[AddressItemType.AddressTypeValue]] = this.getAddressTypeFormat();\r\n\r\n return dropdownData;\r\n };\r\n\r\n public getTwoLetterISORegionName = (countryRegionId: string): string | undefined => {\r\n const countryRegionInfo = this._getCountryRegionInfo(countryRegionId);\r\n\r\n return countryRegionInfo!.ISOCode;\r\n };\r\n\r\n public validateAddressFormat = (\r\n address: Address,\r\n validationError: Address,\r\n countryRegionId: string,\r\n propertyName?: string\r\n ): boolean => {\r\n let isValid: boolean = true;\r\n let validationtor;\r\n const addressFormat = this.getAddressFormat(address.ThreeLetterISORegionName || countryRegionId);\r\n\r\n addressFormat.forEach(addressFormatItem => {\r\n if (!propertyName || (propertyName && addressFormatItem.name === propertyName)) {\r\n validationtor = this._inputValidation(addressFormatItem, validationError, address);\r\n if (validationtor !== undefined) {\r\n isValid = validationtor;\r\n }\r\n }\r\n });\r\n\r\n return isValid;\r\n };\r\n\r\n public getTranformedAddress = (result: Microsoft.Maps.ISuggestionResult, stateProvinceInfo?: StateProvinceInfo[]): Address => {\r\n const address: Address = {};\r\n\r\n // Zip Code\r\n if (result.address.postalCode !== undefined) {\r\n address.ZipCode = result.address.postalCode;\r\n } else {\r\n address.ZipCode = '';\r\n }\r\n\r\n // State\r\n if (stateProvinceInfo) {\r\n const selectedState = stateProvinceInfo.find(state => state.StateName === result.address.adminDistrict);\r\n if (!selectedState) {\r\n address.State = '';\r\n address.StateName = result.address.adminDistrict;\r\n } else {\r\n address.State = selectedState.StateId;\r\n address.StateName = selectedState.StateName;\r\n }\r\n }\r\n\r\n // Street\r\n if (result.address.addressLine !== undefined) {\r\n address.Street = result.address.addressLine;\r\n } else {\r\n address.Street = ' ';\r\n }\r\n\r\n // City\r\n if (result.address.locality !== undefined) {\r\n address.City = result.address.locality;\r\n } else {\r\n address.City = '';\r\n }\r\n\r\n // District\r\n if (result.address.district !== undefined) {\r\n address.DistrictName = result.address.district;\r\n address.CountyName = result.address.district;\r\n } else {\r\n address.DistrictName = '';\r\n }\r\n\r\n // formatted Address\r\n address.FullAddress = result.address.formattedAddress;\r\n\r\n return address;\r\n };\r\n\r\n private _inputValidation(addressFormatItem: IAddressItem, validationError: Address, address: Address): boolean | undefined {\r\n set(validationError, { [addressFormatItem.name]: null });\r\n for (const validationRule of addressFormatItem.validationRules || []) {\r\n if (!this._validateRegEx(address, addressFormatItem.name, validationRule)) {\r\n set(validationError, {\r\n [addressFormatItem.name]: validationRule.message\r\n });\r\n return false;\r\n }\r\n }\r\n return undefined;\r\n }\r\n private _validateRegEx = (address: Address, propertyName: string, validationRule: IAddressValidationRule): boolean => {\r\n if (validationRule.regEx && validationRule.regEx.length > 0) {\r\n const regex = new RegExp(validationRule.regEx);\r\n return regex.test(get(address, propertyName) || '');\r\n }\r\n return true;\r\n };\r\n\r\n private _getCountryRegionInfo(countryRegionId: string): CountryRegionInfo | undefined {\r\n return (this.countryRegionsInfo || []).find(countryRegion => {\r\n return (countryRegion.CountryRegionId || '').toLowerCase() === countryRegionId.toLowerCase();\r\n });\r\n }\r\n\r\n private _getAddressDisplayFormat(countryRegionInfo: CountryRegionInfo): IAddressItem[] {\r\n const addressDisplayItem: IAddressItem[] = [];\r\n\r\n if (countryRegionInfo && countryRegionInfo.AddressFormatLines) {\r\n const AddressTypeItem = this._extendAddressDisplayFormat(AddressItemType.AddressTypeValue, true);\r\n if (AddressTypeItem) {\r\n addressDisplayItem.push(AddressTypeItem);\r\n }\r\n\r\n const nameDisplayItem = this._extendAddressDisplayFormat(AddressItemType.Name, true);\r\n if (nameDisplayItem) {\r\n addressDisplayItem.push(nameDisplayItem);\r\n }\r\n\r\n countryRegionInfo.AddressFormatLines.forEach(formatLine => {\r\n if (formatLine.AddressComponentNameValue) {\r\n const addressItem = this.addressMetaData.getItemFormat(formatLine.AddressComponentNameValue);\r\n if (addressItem) {\r\n addressItem.isNewLine = formatLine.NewLine || false;\r\n addressDisplayItem.push(addressItem);\r\n }\r\n }\r\n });\r\n\r\n const phoneDisplayItem = this._extendAddressDisplayFormat(AddressItemType.Phone, false);\r\n if (phoneDisplayItem) {\r\n addressDisplayItem.push(phoneDisplayItem);\r\n }\r\n\r\n const isPrimaryDisplayItem = this._extendAddressDisplayFormat(AddressItemType.IsPrimary, false);\r\n if (isPrimaryDisplayItem) {\r\n addressDisplayItem.push(isPrimaryDisplayItem);\r\n }\r\n }\r\n\r\n return addressDisplayItem;\r\n }\r\n\r\n private _extendAddressDisplayFormat(type: AddressItemType, isNewLine: boolean): IAddressItem | undefined {\r\n const addressItem = this.addressMetaData.getItemFormat(type);\r\n if (addressItem) {\r\n addressItem.isNewLine = isNewLine;\r\n }\r\n return addressItem;\r\n }\r\n}\r\n","import {\r\n AddressItemDisplayType,\r\n AddressItemType,\r\n AddressValidationRuleType,\r\n IAddressItem,\r\n IAddressValidationRule\r\n} from './address-format.data';\r\nimport { IAddressResource } from './address-module.data';\r\n\r\n/**\r\n * Address meta data\r\n */\r\nexport class AddressMetaData {\r\n private metaData: IAddressItem[] = [];\r\n private resources: IAddressResource;\r\n private requiredFieldRegEx: string = '\\\\S';\r\n private resourcesPrefix: string = 'address';\r\n private maxLength: number = 64;\r\n private requiredFields: AddressItemType[];\r\n private excludedTypes: AddressItemType[];\r\n\r\n constructor(resources: IAddressResource, excluded?: AddressItemType[], required?: AddressItemType[]) {\r\n this.resources = resources || {};\r\n this.excludedTypes = excluded || [];\r\n this.requiredFields =\r\n required !== undefined\r\n ? required\r\n : [\r\n AddressItemType.Name,\r\n AddressItemType.ZipCode,\r\n AddressItemType.City,\r\n AddressItemType.State,\r\n AddressItemType.ThreeLetterISORegionName,\r\n AddressItemType.Street\r\n ];\r\n this._init();\r\n }\r\n\r\n public getItemFormat(id: number): IAddressItem | undefined {\r\n return this.metaData.find(item => {\r\n return item.type === id;\r\n });\r\n }\r\n\r\n private _init(): void {\r\n this._addItem(AddressItemType.Name, AddressItemDisplayType.Input);\r\n this._addItem(AddressItemType.Phone, AddressItemDisplayType.Input);\r\n this._addItem(AddressItemType.ZipCode, AddressItemDisplayType.Input);\r\n this._addItem(AddressItemType.City, AddressItemDisplayType.Input);\r\n this._addItem(AddressItemType.County, AddressItemDisplayType.Input);\r\n this._addItem(AddressItemType.State, AddressItemDisplayType.Dropdown);\r\n this._addItem(AddressItemType.ThreeLetterISORegionName, AddressItemDisplayType.Dropdown);\r\n this._addItem(AddressItemType.Street, AddressItemDisplayType.Input);\r\n this._addItem(AddressItemType.District, AddressItemDisplayType.Input);\r\n this._addItem(AddressItemType.StreetNumber, AddressItemDisplayType.Input);\r\n this._addItem(AddressItemType.BuildingCompliment, AddressItemDisplayType.Input);\r\n this._addItem(AddressItemType.Postbox, AddressItemDisplayType.Input);\r\n this._addItem(AddressItemType.House_RU, AddressItemDisplayType.Input);\r\n this._addItem(AddressItemType.Flat_RU, AddressItemDisplayType.Input);\r\n this._addItem(AddressItemType.CountryOKSMCode_RU, AddressItemDisplayType.Input);\r\n this._addItem(AddressItemType.AddressTypeValue, AddressItemDisplayType.Dropdown);\r\n this._addItem(AddressItemType.IsPrimary, AddressItemDisplayType.Checkbox);\r\n }\r\n\r\n private _addItem(type: AddressItemType, displayType: AddressItemDisplayType): void {\r\n if (this.excludedTypes.includes(type)) {\r\n return;\r\n }\r\n\r\n const nameKey = AddressItemType[type].replace('_', '');\r\n\r\n // find out if currentItem is required field\r\n const validationRules = this._validationRules(type, nameKey);\r\n let isRequired = false;\r\n validationRules.forEach(rule => {\r\n if (rule.type === AddressValidationRuleType.Required) {\r\n isRequired = true;\r\n }\r\n });\r\n\r\n // if no optional string is provided in resource file, use the original label text\r\n const optionalString =\r\n this.resources[`${this.resourcesPrefix}${nameKey}LabelOptional`] || this.resources[`${this.resourcesPrefix}${nameKey}Label`];\r\n const item: IAddressItem = {\r\n type,\r\n displayType,\r\n name: AddressItemType[type],\r\n label: isRequired ? this.resources[`${this.resourcesPrefix}${nameKey}Label`] : optionalString,\r\n maxLength: this.maxLength,\r\n validationRules: validationRules,\r\n isNewLine: true\r\n };\r\n\r\n this.metaData.push(item);\r\n }\r\n\r\n private _validationRules(type: AddressItemType, name: string): IAddressValidationRule[] {\r\n const validationRules: IAddressValidationRule[] = [];\r\n\r\n for (const ruleType of Object.keys(AddressValidationRuleType)) {\r\n const key = `${this.resourcesPrefix}${name}${ruleType}`;\r\n const message = this.resources[`${key}ErrorMessage`];\r\n switch (ruleType) {\r\n case AddressValidationRuleType.Required: {\r\n if (this.requiredFields.find((itemType: AddressItemType) => itemType === type)) {\r\n validationRules.push(this._validationRule(ruleType, this.requiredFieldRegEx, message));\r\n }\r\n break;\r\n }\r\n default:\r\n }\r\n }\r\n return validationRules;\r\n }\r\n\r\n private _validationRule(type: AddressValidationRuleType, regEx: string, message: string): IAddressValidationRule {\r\n return {\r\n type,\r\n regEx,\r\n message\r\n };\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as React from 'react';\r\n\r\nexport interface IAdressAlert {\r\n message?: string;\r\n}\r\n\r\nconst AdressAlert: React.FC = ({ message }) => (\r\n \r\n {message && <>{message}}\r\n \r\n);\r\n\r\nexport default AdressAlert;\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nexport interface IAddressButton {\r\n className: string;\r\n text: string;\r\n ariaLabel: string;\r\n disabled?: boolean;\r\n telemetryContent?: ITelemetryContent;\r\n onClick(event: React.MouseEvent): void;\r\n}\r\n\r\nconst AddressButton: React.FC = ({ className, text, ariaLabel, disabled, telemetryContent, onClick }) => {\r\n const payLoad = getPayloadObject('click', telemetryContent!, text);\r\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\r\n return (\r\n \r\n );\r\n};\r\n\r\nexport default AddressButton;\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nexport interface IAdressCheckbox {\r\n id?: string;\r\n name?: string;\r\n className: string;\r\n type: string;\r\n isChecked: boolean;\r\n autoFocus?: boolean;\r\n additionalAddributes?: object;\r\n telemetryContent?: ITelemetryContent;\r\n onChange(event: React.ChangeEvent): void;\r\n}\r\n\r\nconst AdressCheckbox: React.FC = ({\r\n id,\r\n name,\r\n className,\r\n type,\r\n isChecked,\r\n additionalAddributes,\r\n telemetryContent,\r\n autoFocus,\r\n onChange\r\n}) => {\r\n const payLoad = getPayloadObject('click', telemetryContent!, name!);\r\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\r\n return (\r\n \r\n );\r\n};\r\n\r\nexport default AdressCheckbox;\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as React from 'react';\r\n\r\nexport interface IAdressDropdown {\r\n id: string;\r\n name: string;\r\n className: string;\r\n value: string | number;\r\n additionalAddributes?: object;\r\n displayData: { key?: string | number; value?: string }[];\r\n onChange(event: React.ChangeEvent): void;\r\n}\r\n\r\nconst getDropdownItem = (key?: string | number, value?: string, selectedValue?: string | number): React.ReactNode => {\r\n let isSelected: boolean;\r\n if (typeof key === 'number') {\r\n isSelected = key === selectedValue;\r\n } else {\r\n isSelected = typeof selectedValue === 'string' && (key || '').toLowerCase() === (selectedValue || '').toLowerCase();\r\n }\r\n\r\n return (\r\n \r\n );\r\n};\r\n\r\nconst AdressDropdown: React.FC = ({ id, name, className, value, additionalAddributes, displayData, onChange }) => (\r\n \r\n);\r\n\r\nexport default AdressDropdown;\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as React from 'react';\r\n\r\nexport interface IAdressErrorMessage {\r\n message: string;\r\n}\r\n\r\nconst AdressErrorMessage: React.FC = ({ message }) =>

{message}

;\r\n\r\nexport default AdressErrorMessage;\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as React from 'react';\r\n\r\nexport interface IAdressErrorTitle {\r\n title: string;\r\n}\r\n\r\nconst AdressErrorTitle: React.FC = ({ title }) =>

{title}

;\r\n\r\nexport default AdressErrorTitle;\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nexport interface IAdressInput {\r\n id?: string;\r\n name?: string;\r\n className: string;\r\n type: string;\r\n value: string;\r\n maxLength?: number;\r\n autoFocus?: boolean;\r\n additionalAddributes?: object;\r\n telemetryContent?: ITelemetryContent;\r\n onChange(event: React.ChangeEvent): void;\r\n}\r\n\r\nconst AdressInput: React.FC = ({\r\n id,\r\n name,\r\n className,\r\n type,\r\n value,\r\n maxLength,\r\n additionalAddributes,\r\n autoFocus,\r\n telemetryContent,\r\n onChange\r\n}) => {\r\n const payLoad = getPayloadObject('click', telemetryContent!, name!);\r\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\r\n return (\r\n \r\n );\r\n};\r\n\r\nexport default AdressInput;\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as React from 'react';\r\n\r\nexport interface IAdressLabel {\r\n id: string;\r\n text: string;\r\n}\r\n\r\nconst AdressLabel: React.FC = ({ id, text }) => (\r\n \r\n);\r\n\r\nexport default AdressLabel;\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport classname from 'classnames';\r\nimport { get } from 'mobx';\r\nimport * as React from 'react';\r\n\r\nimport { Heading as HeadingData } from '@msdyn365-commerce-modules/data-types';\r\nimport { Heading, INodeProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\r\nimport { Address } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\r\n\r\nimport { AddressType, IAddressResource, IAddressResponse } from './../address-module.data';\r\n\r\nimport {\r\n AddressItemDisplayType,\r\n AddressItemType,\r\n AddressValidationRuleType,\r\n IAddressDropdownsData,\r\n IAddressItem,\r\n IAddressValidationRule\r\n} from './../address-format.data';\r\n\r\nimport AddressAlertComponent from './address-alert';\r\nimport AddressButtonComponent from './address-button';\r\nimport AdressCheckboxComponent from './address-checkbox';\r\nimport AdressDropdownComponent from './address-dropdown';\r\nimport AddressErrorMessageComponent from './address-error-message';\r\nimport AddressErrorTitleComponent from './address-error-title';\r\nimport AddressInputComponent from './address-input';\r\nimport AddressLabelComponent from './address-label';\r\n\r\nexport interface IAddressAddInputProps {\r\n isUpdating?: boolean;\r\n hasError?: boolean;\r\n hasExternalSubmitGroup?: boolean;\r\n addressType: AddressType;\r\n addressFormat: IAddressItem[];\r\n defaultCountryRegionId: string;\r\n defaultAddressType: number;\r\n selectedAddress?: Address;\r\n dropdownDisplayData: IAddressDropdownsData;\r\n resources: IAddressResource;\r\n addressActionResponse?: IAddressResponse;\r\n addAddressHeading?: HeadingData;\r\n editAddressHeading?: HeadingData;\r\n validationError?: object;\r\n telemetryContent?: ITelemetryContent;\r\n onInputChange(event: React.ChangeEvent): void;\r\n onDropdownChange(event: React.ChangeEvent): void;\r\n onSave?(): void;\r\n onCancel?(): void;\r\n}\r\n\r\nexport interface IAddressError {\r\n AddressError: INodeProps;\r\n title: React.ReactNode;\r\n message: React.ReactNode;\r\n}\r\n\r\nexport interface IAddressAddItem {\r\n key: string;\r\n AddressItem: INodeProps;\r\n label: React.ReactNode;\r\n alert: React.ReactNode;\r\n input: React.ReactNode;\r\n}\r\n\r\nexport interface IAddressAddUpdateProps {\r\n AddressForm: INodeProps;\r\n heading: React.ReactNode;\r\n items: IAddressAddItem[];\r\n hasError: boolean;\r\n error: IAddressError;\r\n isShowSaveButton: boolean;\r\n saveButton: React.ReactNode;\r\n isShowCancelButton: boolean;\r\n cancelButton: React.ReactNode;\r\n}\r\n\r\nconst getRequriedAttribute = (validationRules?: IAddressValidationRule[]): object => {\r\n const requriedRule = (validationRules || []).find(validationRule => {\r\n return validationRule.type === AddressValidationRuleType.Required;\r\n });\r\n\r\n return requriedRule ? { 'aria-required': true } : {};\r\n};\r\n\r\nconst getAddessItems = (selectedAddress: Address, props: IAddressAddInputProps): IAddressAddItem[] => {\r\n const {\r\n addressFormat,\r\n addressType,\r\n dropdownDisplayData,\r\n defaultCountryRegionId,\r\n defaultAddressType,\r\n validationError = {},\r\n onInputChange,\r\n onDropdownChange\r\n } = props;\r\n\r\n // @ts-ignore\r\n return addressFormat.map((addressFormatItem, index) => {\r\n const elementId = `${addressType.toLowerCase()}_address${addressFormatItem.name.toLowerCase()}`;\r\n const errorMessage = get(validationError, addressFormatItem.name);\r\n const className = classname('msc-address-form__item', `msc-address-form__item-${addressFormatItem.name.toLowerCase()}`, {\r\n 'msc-address-form__item-newline': addressFormatItem.isNewLine,\r\n 'address-form__item-invalid': errorMessage\r\n });\r\n let input;\r\n\r\n if (addressFormatItem.displayType === AddressItemDisplayType.Input) {\r\n input = (\r\n \r\n );\r\n } else if (addressFormatItem.displayType === AddressItemDisplayType.Checkbox) {\r\n input = (\r\n \r\n );\r\n } else {\r\n const displayData = dropdownDisplayData[addressFormatItem.name];\r\n let selectedValue = selectedAddress[addressFormatItem.name];\r\n\r\n if (addressFormatItem.type === AddressItemType.ThreeLetterISORegionName) {\r\n selectedValue = selectedValue || defaultCountryRegionId;\r\n }\r\n\r\n if (addressFormatItem.type === AddressItemType.AddressTypeValue) {\r\n selectedValue = selectedValue || defaultAddressType;\r\n }\r\n\r\n input = (\r\n \r\n );\r\n }\r\n\r\n return {\r\n key: addressFormatItem.name,\r\n AddressItem: { className: className, id: `${elementId}_container` },\r\n label: ,\r\n alert: ,\r\n input: input\r\n };\r\n });\r\n};\r\n\r\nexport const AddressAddUpdate = (props: IAddressAddInputProps): IAddressAddUpdateProps => {\r\n const {\r\n editAddressHeading,\r\n addAddressHeading,\r\n selectedAddress = {},\r\n resources,\r\n hasError,\r\n onCancel,\r\n onSave,\r\n hasExternalSubmitGroup,\r\n isUpdating,\r\n addressActionResponse,\r\n telemetryContent\r\n } = props;\r\n const heading = selectedAddress.RecordId ? editAddressHeading : addAddressHeading;\r\n\r\n return {\r\n AddressForm: { className: 'msc-address-form' },\r\n heading: heading && ,\r\n items: getAddessItems(selectedAddress, props),\r\n isShowSaveButton: !hasExternalSubmitGroup,\r\n saveButton: onSave && (\r\n \r\n ),\r\n isShowCancelButton: !hasExternalSubmitGroup,\r\n cancelButton: onCancel && (\r\n \r\n ),\r\n hasError: hasError || false,\r\n error: {\r\n AddressError: { className: 'msc-address-form__error' },\r\n title: addressActionResponse && addressActionResponse.errorTitle && (\r\n \r\n ),\r\n message: addressActionResponse && addressActionResponse.errorMessage && (\r\n \r\n )\r\n }\r\n };\r\n};\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport classname from 'classnames';\r\nimport * as React from 'react';\r\n\r\nexport interface IAddressDetailItem {\r\n isNewLine: boolean;\r\n isShowLabel: boolean;\r\n labelText: string;\r\n name: string;\r\n value: string;\r\n}\r\n\r\nconst AddressDetailItem: React.FC = ({ isNewLine, isShowLabel, labelText, name, value }) => {\r\n const className = `msc-address-detail__item msc-address-detail__item-${name.toLowerCase()}`;\r\n const isEmpty = !(value && value.length > 0);\r\n const mainClass = isShowLabel\r\n ? `msc-address-detail__item msc-address-detail__item-address-detail_${labelText}`\r\n : classname(className, {\r\n 'msc-address-detail__item-empty': isEmpty,\r\n 'msc-address-detail__item-newline': isNewLine\r\n });\r\n return (\r\n \r\n {isShowLabel && (\r\n <>\r\n {labelText}\r\n \r\n \r\n )}\r\n {value}\r\n \r\n );\r\n};\r\n\r\nexport default AddressDetailItem;\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as React from 'react';\r\n\r\nimport { INodeProps } from '@msdyn365-commerce-modules/utilities';\r\nimport { Address, AddressPurpose } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\r\n\r\nimport { AddressItemType, IAddressItem } from './../address-format.data';\r\nimport AddressDetailItemComponent from './address-detail-item';\r\n\r\nexport interface IAddressShowItem {\r\n key: string;\r\n description: React.ReactNode;\r\n}\r\n\r\nexport interface IAddressShowProps {\r\n AddressDetail: INodeProps;\r\n items: IAddressShowItem[];\r\n}\r\n\r\nexport interface IAddressShowInputProps {\r\n addressFormat: IAddressItem[];\r\n address: Address;\r\n addressPurposes: AddressPurpose[];\r\n}\r\n\r\nexport const AddressShow = (props: IAddressShowInputProps): IAddressShowProps => {\r\n const { addressFormat, addressPurposes, address } = props;\r\n\r\n return {\r\n AddressDetail: { className: 'msc-address-detail' },\r\n items: addressFormat.map(item => {\r\n if (item.name === AddressItemType[AddressItemType.AddressTypeValue]) {\r\n const addressType = addressPurposes.find(\r\n addressTypeValue => addressTypeValue.AddressType.toString() === (address[item.name] || '').toString()\r\n );\r\n if (addressType) {\r\n const value = addressType.Name || '';\r\n return {\r\n key: item.name,\r\n description: (\r\n \r\n )\r\n };\r\n }\r\n }\r\n return {\r\n key: item.name,\r\n description: (\r\n \r\n )\r\n };\r\n })\r\n };\r\n};\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as React from 'react';\r\n\r\nimport { INodeProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\r\nimport { Address, AddressPurpose } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\r\n\r\nimport { AddressFormat } from '../../common/address-format';\r\nimport { IAddressResource } from './../address-module.data';\r\nimport AddressButtonComponent from './address-button';\r\nimport AddressInputComponent from './address-input';\r\nimport { AddressShow, IAddressShowProps } from './address-show';\r\n\r\nexport interface IAddressSelectInputProps {\r\n hasExternalSubmitGroup?: boolean;\r\n addressFormat: AddressFormat;\r\n addresses: Address[];\r\n addressPurposes: AddressPurpose[];\r\n resources: IAddressResource;\r\n selectedAddress: Address;\r\n telemetryContent?: ITelemetryContent;\r\n onAddressOptionChange(event: React.ChangeEvent): void;\r\n onAddAddress(): void;\r\n onSave(): void;\r\n onCancel(): void;\r\n}\r\n\r\nexport interface IAddressSelectItem {\r\n key: number;\r\n SelectItem: INodeProps;\r\n input: React.ReactNode;\r\n showItems: IAddressShowProps;\r\n}\r\n\r\nexport interface IAddressSelectProps {\r\n SelectAddress: INodeProps;\r\n addButton: React.ReactNode;\r\n items: IAddressSelectItem[];\r\n isShowSaveButton: boolean;\r\n saveButton: React.ReactNode;\r\n isShowCancelButton: boolean;\r\n cancelButton: React.ReactNode;\r\n}\r\n\r\nconst getInput = (index: number, address: Address, props: IAddressSelectInputProps): React.ReactNode => {\r\n const { addresses, onAddressOptionChange, selectedAddress } = props;\r\n\r\n const ichecked = address.RecordId === selectedAddress.RecordId;\r\n const additionalAttributes = {\r\n checked: ichecked,\r\n 'aria-checked': ichecked,\r\n 'aria-setsize': addresses.length,\r\n 'aria-posinset': index + 1\r\n };\r\n\r\n return (\r\n \r\n );\r\n};\r\n\r\nconst getAddressSelectItems = (props: IAddressSelectInputProps): IAddressSelectItem[] => {\r\n const { addresses, addressFormat, addressPurposes } = props;\r\n\r\n return addresses.map((address, index) => {\r\n return {\r\n key: address.RecordId || 0,\r\n SelectItem: { className: 'msc-address-select__item' },\r\n input: getInput(index, address, props),\r\n showItems: AddressShow({\r\n addressFormat: addressFormat.getAddressFormat(address.ThreeLetterISORegionName || ''),\r\n address: address,\r\n addressPurposes: addressPurposes\r\n })\r\n };\r\n });\r\n};\r\n\r\nexport const AddressSelect = (props: IAddressSelectInputProps): IAddressSelectProps => {\r\n const { resources, onCancel, onSave, onAddAddress, hasExternalSubmitGroup } = props;\r\n\r\n return {\r\n SelectAddress: { className: 'msc-address-select' },\r\n addButton: (\r\n \r\n ),\r\n isShowSaveButton: !hasExternalSubmitGroup,\r\n saveButton: (\r\n \r\n ),\r\n isShowCancelButton: !hasExternalSubmitGroup,\r\n cancelButton: (\r\n \r\n ),\r\n items: getAddressSelectItems(props)\r\n };\r\n};\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\n/* tslint:disable: no-duplicate-imports */\r\nimport classnames from 'classnames';\r\nimport { action, computed, observable, reaction, set } from 'mobx';\r\nimport { observer } from 'mobx-react';\r\nimport * as React from 'react';\r\n\r\nimport { IModuleStateProps, withModuleState } from '@msdyn365-commerce-modules/checkout-utilities';\r\nimport { getTelemetryObject, IModuleProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\r\nimport { Address, AddressPurpose, CountryRegionInfo, StateProvinceInfo } from '@msdyn365-commerce/retail-proxy';\r\n\r\nimport { IAutoSuggestOptions } from '@msdyn365-commerce-modules/address/src/common/address-autosuggest.data';\r\nimport { AutoSuggest } from './common/address-autosuggest';\r\nimport { AddressCommon } from './common/address-common';\r\nimport { AddressFormat } from './common/address-format';\r\nimport { AddressItemType } from './common/address-format.data';\r\nimport { AddressMetaData } from './common/address-meta-data';\r\nimport { AddressOperation, AddressType, IAddressResource, IAddressResponse } from './common/address-module.data';\r\nimport { AddressAddUpdate, IAddressAddUpdateProps } from './common/components/address-add';\r\nimport { AddressSelect, IAddressSelectProps } from './common/components/address-select';\r\nimport { AddressShow, IAddressShowProps } from './common/components/address-show';\r\nimport { ICustomCheckoutShippingAddressData } from './custom-checkout-shipping-address.data';\r\nimport { ICustomCheckoutShippingAddressProps } from './custom-checkout-shipping-address.props.autogenerated';\r\n\r\nexport interface ICheckoutAddressProps extends ICustomCheckoutShippingAddressProps, IModuleStateProps {}\r\n\r\nexport interface ICheckoutShippingAddressViewState {\r\n isShowAddress: boolean;\r\n isShowAddresList: boolean;\r\n isShowAddOrUpdateAddress: boolean;\r\n}\r\n\r\nexport interface ICheckoutShippingAddressViewProps extends ICheckoutAddressProps {\r\n className: string;\r\n currentOperation: AddressOperation;\r\n selectedAddress?: Address;\r\n addUpdateAddress: Address;\r\n addressListSelectedAddress: Address;\r\n countryRegionId: string;\r\n stateProvinceInfo?: StateProvinceInfo[];\r\n customerAddresses: Address[];\r\n validationError: object;\r\n addressActionResponse?: IAddressResponse;\r\n viewState: ICheckoutShippingAddressViewState;\r\n CheckoutShippingAddress: IModuleProps;\r\n isUpdating: boolean;\r\n hasError: boolean;\r\n showAddress: IAddressShowProps;\r\n showAddressSelect: IAddressSelectProps;\r\n showAddOrUpdateAddress: IAddressAddUpdateProps;\r\n}\r\n\r\n/**\r\n *\r\n * Address component\r\n * @extends {React.Component>}\r\n */\r\n// @ts-ignore\r\n@withModuleState\r\n@observer\r\nclass CheckoutShippingAddress extends React.Component {\r\n @observable private currentOperation: AddressOperation;\r\n @observable private selectedAddress?: Address;\r\n @observable private addUpdateAddress: Address;\r\n @observable private countryRegionId: string = 'USA';\r\n @observable private stateProvinceInfo?: StateProvinceInfo[];\r\n @observable private customerAddresses: Address[];\r\n @observable private validationError: object;\r\n @observable private addressActionResponse?: IAddressResponse;\r\n @observable private isUpdating?: boolean;\r\n @observable private hasError?: boolean;\r\n @observable private addressListSelectedAddress: Address = {};\r\n\r\n private addressCommon: AddressCommon;\r\n private addressFormat: AddressFormat;\r\n private countryRegions: CountryRegionInfo[];\r\n private addressPurposes: AddressPurpose[];\r\n private resources: IAddressResource;\r\n private defaultAddressType: number = 6; // Default to Home\r\n private telemetryContent?: ITelemetryContent;\r\n private autoSuggest?: AutoSuggest;\r\n private multiplePickupStoreSwitchName: string = 'Dynamics.AX.Application.RetailMultiplePickupDeliveryModeFeature';\r\n private retailMultiplePickUpOptionEnabled?: boolean = false;\r\n\r\n constructor(props: ICheckoutAddressProps) {\r\n super(props);\r\n const { context, data, resources, telemetry } = this.props;\r\n\r\n this.addUpdateAddress = {};\r\n this.resources = resources;\r\n this.currentOperation = AddressOperation.List;\r\n this.countryRegions = data.countryRegions.result || [];\r\n this.addressPurposes = data.addressPurposes.result || [];\r\n this.customerAddresses = data.address.result || [];\r\n this.stateProvinceInfo = data.countryStates.result || [];\r\n this.addressCommon = new AddressCommon(context, resources, telemetry);\r\n this.addressFormat = new AddressFormat(\r\n this.countryRegions,\r\n new AddressMetaData({ ...resources }, this._getAddressFormatExcludeList()),\r\n this.addressPurposes\r\n );\r\n this.validationError = {};\r\n this.retailMultiplePickUpOptionEnabled = data?.featureState?.result?.find(\r\n feature => feature.Name === this.multiplePickupStoreSwitchName\r\n )?.IsEnabled;\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 }\r\n\r\n public async componentDidMount(): Promise {\r\n const {\r\n context: {\r\n telemetry,\r\n actionContext: {\r\n requestContext: { channel }\r\n }\r\n },\r\n config: { autoSuggestionEnabled, autoSuggestOptions }\r\n } = this.props;\r\n\r\n this.props.data.checkout.then(() => {\r\n this._setDefaultCountryRegionId();\r\n this._initModuleState();\r\n });\r\n\r\n reaction(\r\n () => this.countryRegionId,\r\n () => this._getStateProvinces()\r\n );\r\n\r\n reaction(\r\n () => this.currentOperation,\r\n () => {\r\n this._getStateProvinces();\r\n }\r\n );\r\n\r\n if (autoSuggestionEnabled) {\r\n if (channel && !channel.BingMapsApiKey) {\r\n telemetry.error('BingMapsApiKey is missing.');\r\n return;\r\n }\r\n\r\n if (channel && !channel.BingMapsEnabled) {\r\n telemetry.error('Map is disabled from HQ.');\r\n return;\r\n }\r\n\r\n const options: IAutoSuggestOptions = { ...autoSuggestOptions };\r\n this.autoSuggest = new AutoSuggest(\r\n telemetry,\r\n options,\r\n channel?.BingMapsApiKey,\r\n channel?.ChannelCountryRegionISOCode,\r\n channel?.DefaultLanguageId\r\n );\r\n\r\n // Customer doesn't have any address. Then add view will be loaded directly. Code for the same to handle that\r\n if (\r\n this.props.data.storeSelectorStateManager.result &&\r\n (this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update)\r\n ) {\r\n await this.autoSuggest?._loadMapAPI(await this.props.data.storeSelectorStateManager);\r\n }\r\n\r\n reaction(\r\n () =>\r\n this.props.data.storeSelectorStateManager.result?.loadMapApi &&\r\n (this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update),\r\n async () => {\r\n await this.autoSuggest?._loadMapAPI(await this.props.data.storeSelectorStateManager);\r\n }\r\n );\r\n\r\n reaction(\r\n () => this.props.data.storeSelectorStateManager.result?.isMapApiLoaded,\r\n async () => {\r\n await this._attachMapAutoSuggest();\r\n }\r\n );\r\n }\r\n }\r\n\r\n public async componentDidUpdate(): Promise {\r\n if (this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update) {\r\n if (this.props.data.storeSelectorStateManager.result?.isMapApiLoaded) {\r\n await this._attachMapAutoSuggest();\r\n }\r\n } else {\r\n this.autoSuggest?.disposeAutoSuggest();\r\n }\r\n }\r\n\r\n public render(): JSX.Element | null {\r\n if (!this._canShip()) {\r\n return null;\r\n }\r\n\r\n const { renderView, config } = this.props;\r\n\r\n const viewProps = {\r\n ...this.props,\r\n currentOperation: this.currentOperation,\r\n selectedAddress: this.selectedAddress,\r\n addUpdateAddress: this.addUpdateAddress,\r\n addressListSelectedAddress: this.addressListSelectedAddress,\r\n countryRegionId: this.countryRegionId,\r\n stateProvinceInfo: this.stateProvinceInfo,\r\n customerAddresses: this.customerAddresses,\r\n validationError: this.validationError,\r\n addressActionResponse: this.addressActionResponse,\r\n isUpdating: this.isUpdating,\r\n hasError: this.hasError,\r\n className: config.className,\r\n viewState: {\r\n isShowAddress: this.currentOperation === AddressOperation.Show && this.selectedAddress,\r\n isShowAddresList: this.currentOperation === AddressOperation.List && this.customerAddresses.length > 0,\r\n isShowAddOrUpdateAddress:\r\n this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update\r\n },\r\n CheckoutShippingAddress: {\r\n moduleProps: this.props,\r\n className: classnames('ms-checkout-shipping-address', config.className)\r\n },\r\n showAddress: this._renderShowAddress(),\r\n showAddressSelect: this._renderSelectAddress(),\r\n showAddOrUpdateAddress: this._renderAddOrUpdateAddress()\r\n };\r\n\r\n return renderView(viewProps) as React.ReactElement;\r\n }\r\n\r\n private _renderAddOrUpdateAddress = (): IAddressAddUpdateProps => {\r\n const addressFormat =\r\n this.currentOperation === AddressOperation.Add && this.addressCommon.isAuthenticatedFlow()\r\n ? this.addressFormat\r\n : this.addressFormat;\r\n return AddressAddUpdate({\r\n isUpdating: this.isUpdating,\r\n resources: this.resources,\r\n addressType: AddressType.Shipping,\r\n addressFormat: addressFormat.getAddressFormat(this.addUpdateAddress.ThreeLetterISORegionName || this.countryRegionId),\r\n defaultCountryRegionId: this.countryRegionId,\r\n defaultAddressType: this.defaultAddressType,\r\n selectedAddress: this.addUpdateAddress,\r\n validationError: this.validationError,\r\n hasError: this.hasError,\r\n addressActionResponse: this.addressActionResponse,\r\n telemetryContent: this.telemetryContent,\r\n dropdownDisplayData: addressFormat.getPrefilledAddressDropdownData(\r\n this.resources.addressStateDefaultSelectionText,\r\n this.stateProvinceInfo\r\n ),\r\n onInputChange: this._onAddressAddUpdateInputChange,\r\n onDropdownChange: this._onAddressAddUpdateDropdownChange,\r\n hasExternalSubmitGroup: this.props.moduleState.hasExternalSubmitGroup,\r\n onSave: this.onSubmit,\r\n // tslint:disable-next-line: no-empty\r\n onCancel: !this.selectedAddress && !this.addressCommon.isAuthenticatedFlow() ? () => {} : this._resetView\r\n });\r\n };\r\n\r\n private _renderSelectAddress = (): IAddressSelectProps => {\r\n return AddressSelect({\r\n addressFormat: this.addressFormat,\r\n addresses: this.customerAddresses,\r\n resources: this.resources,\r\n addressPurposes: this.addressPurposes,\r\n selectedAddress: this.addressListSelectedAddress,\r\n onAddressOptionChange: this._onAddressOptionChange,\r\n hasExternalSubmitGroup: this.props.moduleState.hasExternalSubmitGroup,\r\n telemetryContent: this.telemetryContent,\r\n onAddAddress: this._goToAddAddress,\r\n onSave: this._onSelectAddress,\r\n // tslint:disable-next-line: no-empty\r\n onCancel: !this.selectedAddress ? () => {} : this._resetView\r\n });\r\n };\r\n\r\n private _renderShowAddress(): IAddressShowProps | null {\r\n if (this.selectedAddress) {\r\n return AddressShow({\r\n address: this.selectedAddress,\r\n addressFormat: this.addressFormat.getAddressFormat(this.selectedAddress.ThreeLetterISORegionName || ''),\r\n addressPurposes: this.addressPurposes\r\n });\r\n }\r\n\r\n return null;\r\n }\r\n\r\n private _attachMapAutoSuggest = async (): Promise => {\r\n const {\r\n data: {\r\n storeSelectorStateManager: { result: storeSelectorStateManager }\r\n }\r\n } = this.props;\r\n\r\n if (storeSelectorStateManager?.isMapApiLoaded) {\r\n this.autoSuggest?.attachAutoSuggest('#shipping_addressstreet', '#shipping_addressstreet_container', this._onSuggestionSelected);\r\n }\r\n };\r\n\r\n @action\r\n private _onSuggestionSelected = async (result: Microsoft.Maps.ISuggestionResult): Promise => {\r\n this._clearAddressFields();\r\n const address = this.addressFormat.getTranformedAddress(result, this.stateProvinceInfo);\r\n set(this.addUpdateAddress, { ['Street']: '' });\r\n set(this.addUpdateAddress, { ['ZipCode']: address.ZipCode });\r\n set(this.addUpdateAddress, { ['CountyName']: address.CountyName });\r\n set(this.addUpdateAddress, { ['City']: address.City });\r\n set(this.addUpdateAddress, { ['State']: address.State });\r\n set(this.addUpdateAddress, { ['DistrictName']: address.DistrictName });\r\n set(this.addUpdateAddress, { ['FullAddress']: address.FullAddress });\r\n // Bing autosuggest put the complete address in the Street input box. Updating the street input box to show only street address.\r\n setTimeout(() => {\r\n set(this.addUpdateAddress, { ['Street']: address.Street });\r\n }, 0);\r\n };\r\n\r\n @action\r\n private _clearAddressFields = (): void => {\r\n const addressFormatItem = this.addressFormat.getAddressFormat(\r\n this.addUpdateAddress.ThreeLetterISORegionName || this.countryRegionId\r\n );\r\n addressFormatItem.forEach(format => {\r\n if (this.addUpdateAddress[format.name] !== undefined && !this.autoSuggest?.excludedAddressFields.includes(format.name)) {\r\n this.addressFormat[format.name] = '';\r\n }\r\n });\r\n this._clearValidation();\r\n };\r\n\r\n @action\r\n private _clearValidation = (): void => {\r\n this.validationError = {};\r\n };\r\n\r\n private _onAddressOptionChange = (event: React.ChangeEvent) => {\r\n const addressRecordId = event.currentTarget.value;\r\n const selectedAddress = this.customerAddresses.find(address => (address.RecordId || '').toString() === addressRecordId);\r\n if (selectedAddress) {\r\n this.addressListSelectedAddress = selectedAddress;\r\n }\r\n };\r\n\r\n private onAddressAddUpdate = (name: string, value: string | boolean) => {\r\n set(this.addUpdateAddress, { [name]: value });\r\n this.addressFormat.validateAddressFormat(this.addUpdateAddress, this.validationError, this.countryRegionId, name);\r\n };\r\n\r\n private _onAddressAddUpdateInputChange = (event: React.ChangeEvent): void => {\r\n if (event.target.type === 'checkbox') {\r\n this.onAddressAddUpdate(event.target.name, event.target.checked);\r\n } else {\r\n const value = (event.target.value || '').replace(new RegExp('[<>]', 'gi'), '');\r\n this.onAddressAddUpdate(event.target.name, value);\r\n }\r\n };\r\n\r\n private _onAddressAddUpdateDropdownChange = (event: React.ChangeEvent): void => {\r\n this.onAddressAddUpdate(event.target.name, event.target.value);\r\n\r\n if (event.target.name === AddressItemType[AddressItemType.ThreeLetterISORegionName]) {\r\n this._onCountryChange(event.target.value);\r\n }\r\n };\r\n\r\n private _onAddressAddUpdateSubmit = (): void => {\r\n if (!this.addressFormat.validateAddressFormat(this.addUpdateAddress, this.validationError, this.countryRegionId)) {\r\n return;\r\n }\r\n\r\n let response: Promise;\r\n if (this.addressCommon.isAuthenticatedFlow()) {\r\n response =\r\n this.currentOperation === AddressOperation.Update\r\n ? this.addressCommon.updateCustomerAddress(this.addUpdateAddress)\r\n : Promise.resolve({ address: this.addUpdateAddress });\r\n } else {\r\n response = Promise.resolve({ address: this.addUpdateAddress });\r\n }\r\n\r\n this.isUpdating = true;\r\n this._updateModuleState();\r\n\r\n response.then(\r\n (result: IAddressResponse) => {\r\n this.isUpdating = false;\r\n\r\n if (result.address) {\r\n this.hasError = false;\r\n this._onAddOrUpdateSuccess(result);\r\n } else {\r\n this.hasError = true;\r\n this.addressActionResponse = result;\r\n this._updateModuleState();\r\n }\r\n },\r\n () => {\r\n this.hasError = true;\r\n this.isUpdating = false;\r\n this._updateModuleState();\r\n }\r\n );\r\n };\r\n\r\n private _onCountryChange = (countryRegionId: string) => {\r\n this.countryRegionId = countryRegionId;\r\n const twoLetterISORegionName = this.addressFormat.getTwoLetterISORegionName(countryRegionId);\r\n set(this.addUpdateAddress, {\r\n ['ThreeLetterISORegionName']: countryRegionId\r\n });\r\n set(this.addUpdateAddress, {\r\n ['TwoLetterISORegionName']: twoLetterISORegionName\r\n });\r\n this.autoSuggest?.changeAutoSuggestionCountryCode(twoLetterISORegionName);\r\n this._clearAddressFields();\r\n };\r\n\r\n private _getAddressFormatExcludeList = (): AddressItemType[] => {\r\n const { config } = this.props;\r\n const addressFormatExcludeList: AddressItemType[] = [];\r\n\r\n if (!config.showAddressType) {\r\n addressFormatExcludeList.push(AddressItemType.AddressTypeValue);\r\n }\r\n\r\n addressFormatExcludeList.push(AddressItemType.IsPrimary);\r\n\r\n return addressFormatExcludeList;\r\n };\r\n\r\n private _getStateProvinces = (): void => {\r\n if (\r\n !this.countryRegionId ||\r\n !(this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update)\r\n ) {\r\n return;\r\n }\r\n\r\n // tslint:disable-next-line:no-floating-promises\r\n this.addressCommon.getStateProvinces(this.countryRegionId).then((result: StateProvinceInfo[]) => {\r\n const stateInfo = result.some(state => state.StateId === this.addUpdateAddress.State);\r\n // Reset state if selected state not found in the list.\r\n if (!stateInfo) {\r\n set(this.addUpdateAddress, { ['State']: '' });\r\n }\r\n\r\n this.stateProvinceInfo = result;\r\n });\r\n };\r\n\r\n private _setDefaultCountryRegionId(): void {\r\n const { request } = this.props.context;\r\n const market = request && request.channel && request.channel.ChannelCountryRegionISOCode;\r\n this.countryRegionId = this.addressCommon.getDefaultCountryRegionId(this.countryRegionId, this.countryRegions, market);\r\n }\r\n\r\n private _getDefaultAddress = (): Address | undefined => {\r\n if (this.customerAddresses) {\r\n const primaryAddress = this.customerAddresses.find((address: Address) => address.IsPrimary);\r\n return primaryAddress || (this.customerAddresses.length > 0 ? this.customerAddresses[0] : undefined);\r\n }\r\n return undefined;\r\n };\r\n\r\n private _initModuleState = (): void => {\r\n this.props.moduleState.init({\r\n status: this._canShip() ? 'updating' : 'disabled',\r\n onEdit: this.onEdit,\r\n onCancel: this.onCancel,\r\n onSubmit: this.onSubmit\r\n });\r\n\r\n if (this._canShip()) {\r\n const defaultAddress = this._getShippingAddressFromCartLines() || this._getDefaultAddress();\r\n if (defaultAddress && !this.addressCommon.isEmpty(defaultAddress)) {\r\n this._updateCurrentOperation(AddressOperation.Show, defaultAddress);\r\n this._setShippingAddress(defaultAddress);\r\n this._updateModuleState();\r\n } else {\r\n this._updateCurrentOperation(AddressOperation.Add);\r\n }\r\n }\r\n };\r\n\r\n private onSubmit = (): void => {\r\n switch (this.currentOperation) {\r\n case AddressOperation.Add:\r\n case AddressOperation.Update:\r\n this._onAddressAddUpdateSubmit();\r\n break;\r\n case AddressOperation.List:\r\n this._onSelectAddress();\r\n break;\r\n default:\r\n this.props.telemetry.error('Invalid operation');\r\n }\r\n };\r\n\r\n private onCancel = (): void => {\r\n switch (this.currentOperation) {\r\n case AddressOperation.Add:\r\n case AddressOperation.Update:\r\n this._clearAddressFields();\r\n if (!(!this.selectedAddress && !this.addressCommon.isAuthenticatedFlow())) {\r\n this._resetView();\r\n }\r\n\r\n break;\r\n case AddressOperation.List:\r\n if (this.selectedAddress) {\r\n this._resetView();\r\n }\r\n break;\r\n default:\r\n this.props.telemetry.error('Invalid operation');\r\n }\r\n };\r\n\r\n private onEdit = (): void => {\r\n if (this.addressCommon.isAuthenticatedFlow() && this.shippingAddress) {\r\n this._updateCurrentOperation(AddressOperation.List, this.shippingAddress);\r\n } else if (this.shippingAddress) {\r\n this._updateCurrentOperation(AddressOperation.Update, this.shippingAddress);\r\n }\r\n\r\n this._updateModuleState();\r\n };\r\n\r\n private _getShippingAddressFromCartLines = (): Address | undefined => {\r\n const { request } = this.props.context;\r\n const { channelDeliveryOptionConfig } = this.props.data;\r\n const pickupDeliveryModeCode = request && request.channel && request.channel.PickupDeliveryModeCode;\r\n const emailDeliveryModeCode = request && request.channel && request.channel.EmailDeliveryModeCode;\r\n\r\n const cartLines = this.retailMultiplePickUpOptionEnabled\r\n ? ((this.props.data.checkout.result && this.props.data.checkout.result.checkoutCart.cart.CartLines) || []).filter(cartLine =>\r\n cartLine.DeliveryMode && cartLine.DeliveryMode !== ''\r\n ? cartLine.DeliveryMode !==\r\n channelDeliveryOptionConfig.result?.PickupDeliveryModeCodes?.find(\r\n deliveryMode => deliveryMode === cartLine.DeliveryMode\r\n ) && cartLine.DeliveryMode !== emailDeliveryModeCode\r\n : cartLine\r\n )\r\n : ((this.props.data.checkout.result && this.props.data.checkout.result.checkoutCart.cart.CartLines) || []).filter(cartLine =>\r\n cartLine.DeliveryMode && cartLine.DeliveryMode !== ''\r\n ? cartLine.DeliveryMode !== pickupDeliveryModeCode && cartLine.DeliveryMode !== emailDeliveryModeCode\r\n : cartLine\r\n );\r\n\r\n if (cartLines && cartLines.length > 0) {\r\n return cartLines[0].ShippingAddress;\r\n }\r\n\r\n return undefined;\r\n };\r\n\r\n private _canShip = (): boolean => {\r\n const { checkout, channelDeliveryOptionConfig } = this.props.data;\r\n const { request } = this.props.context;\r\n const pickupDeliveryModeCode = request && request.channel && request.channel.PickupDeliveryModeCode;\r\n const emailDeliveryModeCode = request && request.channel && request.channel.EmailDeliveryModeCode;\r\n if (!checkout.result || !request.channel || checkout.result.checkoutCart.isEmpty || checkout.result.checkoutCart.hasInvoiceLine) {\r\n return false;\r\n }\r\n\r\n // @ts-ignore: Type-checker not realizing above request.channel check\r\n return this.retailMultiplePickUpOptionEnabled\r\n ? checkout?.result?.checkoutCart?.cart?.CartLines?.some(cartLine =>\r\n cartLine.DeliveryMode && cartLine.DeliveryMode !== ''\r\n ? cartLine.DeliveryMode !==\r\n channelDeliveryOptionConfig.result?.PickupDeliveryModeCodes?.find(\r\n deliveryMode => deliveryMode === cartLine.DeliveryMode\r\n ) && cartLine.DeliveryMode !== emailDeliveryModeCode\r\n : cartLine\r\n )\r\n : checkout?.result?.checkoutCart?.cart?.CartLines?.some(cartLine =>\r\n cartLine.DeliveryMode && cartLine.DeliveryMode !== ''\r\n ? cartLine.DeliveryMode !== pickupDeliveryModeCode && cartLine.DeliveryMode !== emailDeliveryModeCode\r\n : cartLine\r\n );\r\n };\r\n\r\n private _onSelectAddress = () => {\r\n this._updateCurrentOperation(AddressOperation.Show, this.addressListSelectedAddress);\r\n this._setShippingAddress(this.addressListSelectedAddress);\r\n this._updateModuleState();\r\n };\r\n\r\n private _goToAddAddress = () => {\r\n this._setDefaultCountryRegionId();\r\n this._updateCurrentOperation(AddressOperation.Add);\r\n };\r\n\r\n private _onAddOrUpdateSuccess = (response: IAddressResponse) => {\r\n if (response.customerAddresses) {\r\n this.customerAddresses = response.customerAddresses;\r\n }\r\n\r\n if (response.address) {\r\n this._updateCurrentOperation(AddressOperation.Show, response.address);\r\n this._setShippingAddress(response.address);\r\n this._updateModuleState();\r\n }\r\n };\r\n\r\n private _setShippingAddress = (address: Address): void => {\r\n if (this.props.data.checkout.result) {\r\n const newShippingAddress = { ...address };\r\n\r\n if (address.ThreeLetterISORegionName && !newShippingAddress.TwoLetterISORegionName) {\r\n newShippingAddress.TwoLetterISORegionName = this.addressFormat.getTwoLetterISORegionName(address.ThreeLetterISORegionName);\r\n }\r\n\r\n // tslint:disable-next-line:no-floating-promises\r\n this.props.data.checkout.result.updateShippingAddress({\r\n newShippingAddress\r\n });\r\n }\r\n };\r\n\r\n @computed get shippingAddress(): Address | undefined {\r\n return this.props.data.checkout.result && this.props.data.checkout.result.shippingAddress;\r\n }\r\n\r\n private _resetView = (): void => {\r\n switch (this.currentOperation) {\r\n case AddressOperation.Add:\r\n case AddressOperation.Update:\r\n this._updateCurrentOperation(\r\n this.addressCommon.isAuthenticatedFlow() ? AddressOperation.List : AddressOperation.Show,\r\n this.shippingAddress\r\n );\r\n break;\r\n default:\r\n this._updateCurrentOperation(AddressOperation.Show, this.shippingAddress);\r\n }\r\n this._updateModuleState();\r\n };\r\n\r\n private _updateCurrentOperation = (operation: AddressOperation, selectedAddress?: Address) => {\r\n this.currentOperation = operation;\r\n this.selectedAddress = selectedAddress;\r\n\r\n if (this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update) {\r\n this.addUpdateAddress = { ...this.selectedAddress } || {};\r\n set(this.addUpdateAddress, {\r\n ['ThreeLetterISORegionName']: this.addUpdateAddress.ThreeLetterISORegionName || this.countryRegionId\r\n });\r\n set(this.addUpdateAddress, {\r\n ['AddressTypeValue']: this.addUpdateAddress.AddressTypeValue || this.defaultAddressType\r\n });\r\n } else if (this.currentOperation === AddressOperation.List) {\r\n this.addressListSelectedAddress = { ...this.selectedAddress } || {};\r\n }\r\n };\r\n\r\n private _updateModuleState = () => {\r\n if (this.currentOperation === AddressOperation.Show) {\r\n this.props.moduleState.onReady();\r\n } else if (this.isUpdating) {\r\n this.props.moduleState.onPending();\r\n } else {\r\n this.props.moduleState.onUpdating();\r\n }\r\n };\r\n}\r\n\r\nexport default CheckoutShippingAddress;\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as React from 'react';\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport {\r\n IAddressAddItem,\r\n IAddressAddUpdateProps,\r\n IAddressSelectItem,\r\n IAddressSelectProps,\r\n IAddressShowItem,\r\n IAddressShowProps\r\n} from '@msdyn365-commerce-modules/address';\r\nimport { ICheckoutShippingAddressViewProps } from './custom-checkout-shipping-address';\r\nimport { convert_a2_to_a3 } from '../../themes/venchi/utils/convert_a2_a3';\r\n\r\nconst AddressShow: React.FC = ({ AddressDetail, items }) => {\r\n return (\r\n \r\n {items &&\r\n items.map((item: IAddressShowItem) => {\r\n return <>{item.description};\r\n })}\r\n \r\n );\r\n};\r\n\r\nconst AddressSelect: React.FC = ({\r\n SelectAddress,\r\n addButton,\r\n items,\r\n isShowSaveButton,\r\n saveButton,\r\n isShowCancelButton,\r\n cancelButton\r\n}) => {\r\n return (\r\n \r\n {addButton}\r\n {items &&\r\n items.map((item: IAddressSelectItem) => {\r\n const SelectItem = item.SelectItem;\r\n return (\r\n \r\n {item.input}\r\n \r\n \r\n );\r\n })}\r\n {isShowSaveButton && saveButton}\r\n {isShowCancelButton && cancelButton}\r\n \r\n );\r\n};\r\n\r\n// tslint:disable-next-line:max-func-body-length\r\nconst AddressAddUpdate: React.FC = ({\r\n AddressForm,\r\n heading,\r\n items,\r\n hasError,\r\n error,\r\n isShowSaveButton,\r\n saveButton,\r\n isShowCancelButton,\r\n cancelButton,\r\n ...other\r\n}) => {\r\n // @ts-ignore\r\n const resources = other?.moduleProps?.resources;\r\n // @ts-ignore\r\n const localeString = other?.moduleProps?.context?.request?.locale;\r\n // @ts-ignore\r\n const sitePath = other?.moduleProps?.context?.request?.sitePath;\r\n const europe = ['/fr', '/de'];\r\n // @ts-ignore\r\n const currency = other?.moduleProps?.context?.request?.channel?.Currency;\r\n const locale =\r\n sitePath && europe.includes(sitePath)\r\n ? 'eu'\r\n : currency === 'EUR' && localeString === 'en-GB'\r\n ? 'eu'\r\n : localeString.replace('-', '');\r\n\r\n const countriesAvail = {\r\n enGB: {\r\n autocomplete: ['gb'],\r\n select: ['GBR']\r\n },\r\n it: {\r\n autocomplete: ['it'],\r\n select: ['ITA']\r\n },\r\n enUS: {\r\n autocomplete: ['us'],\r\n // autocomplete: ['us', 'ca'],\r\n //select: ['USA', 'CAN']\r\n select: ['USA']\r\n },\r\n eu: {\r\n // removed componentRestrictions for country as there is limit of 5 in google maps\r\n // autocomplete:['at','be','bg','ch','cz','de','dk','es','ee','fi','fr','gr','hr','hu','ie','li','lt','lu','lv','mc','nl','no','pl','pt','ro','sk','si','se'],\r\n autocomplete: [],\r\n select: [\r\n 'AUT',\r\n 'BEL',\r\n 'BGR',\r\n 'CHE',\r\n 'CZE',\r\n 'DEU',\r\n 'DNK',\r\n 'ESP',\r\n 'EST',\r\n 'FIN',\r\n 'FRA',\r\n 'GRC',\r\n 'HRV',\r\n 'HUN',\r\n 'IRL',\r\n 'LIE',\r\n 'LTU',\r\n 'LUX',\r\n 'LVA',\r\n 'MCO',\r\n 'NLD',\r\n 'NOR',\r\n 'POL',\r\n 'PRT',\r\n 'ROU',\r\n 'SVK',\r\n 'SVN',\r\n 'SWE'\r\n ]\r\n }\r\n };\r\n // @ts-ignore\r\n const nativeInputValueSetter = Object.getOwnPropertyDescriptor(window.HTMLInputElement.prototype, 'value').set;\r\n // tslint:disable-next-line:typedef\r\n function gMapsAutocomplete() {\r\n const googleComponents = [\r\n { googleComponent: 'sublocality_level_1', id: 'shipping_addresscity' },\r\n { googleComponent: 'locality', id: 'shipping_addresscity' },\r\n { googleComponent: 'postal_town', id: 'shipping_addresscity' },\r\n {\r\n googleComponent: 'administrative_area_level_3',\r\n id: 'shipping_addresscity'\r\n },\r\n {\r\n googleComponent: 'administrative_area_level_1',\r\n id: 'shipping_addressstate'\r\n },\r\n { googleComponent: 'postal_code_prefix', id: 'shipping_addresszipcode' },\r\n { googleComponent: 'postal_code', id: 'shipping_addresszipcode' },\r\n {\r\n googleComponent: 'country',\r\n id: 'shipping_addressthreeletterisoregionname'\r\n },\r\n {\r\n googleComponent: 'administrative_area_level_2',\r\n id: 'shipping_addresscounty'\r\n }\r\n ];\r\n\r\n const autocompleteFormField = document.getElementById('shipping_addressstreet');\r\n // @ts-ignore\r\n const autocomplete = new window.google.maps.places.Autocomplete(autocompleteFormField, {\r\n types: ['address'],\r\n componentRestrictions: {\r\n country: countriesAvail[locale] && countriesAvail[locale].autocomplete\r\n }\r\n });\r\n if (autocompleteFormField === null) {\r\n return;\r\n }\r\n autocompleteFormField.setAttribute('placeholder', resources.startTypingYourAddress);\r\n // @ts-ignore\r\n window.google.maps.event.clearInstanceListeners(autocompleteFormField);\r\n // @ts-ignore\r\n window.google.maps.event.addListener(autocomplete, `place_changed`, () => {\r\n const place = autocomplete.getPlace();\r\n if (nativeInputValueSetter === undefined) {\r\n return;\r\n }\r\n nativeInputValueSetter.call(autocompleteFormField, place.name);\r\n const eCustom = new Event('change', { bubbles: true });\r\n autocompleteFormField.dispatchEvent(eCustom);\r\n\r\n for (const googleComponent of googleComponents) {\r\n const addressComponents = place.address_components;\r\n if (addressComponents && addressComponents.length > 0) {\r\n // @ts-ignore\r\n addressComponents.forEach(addressComponent => populateFormElements(addressComponent, googleComponent));\r\n }\r\n }\r\n });\r\n }\r\n\r\n // tslint:disable-next-line:typedef no-any\r\n function populateFormElements(\r\n addressComponent: { types: any[]; short_name: string; long_name: string },\r\n formMap: { googleComponent: any; id: string }\r\n ) {\r\n const addressType = addressComponent.types[0];\r\n\r\n if (document.getElementById(formMap.id) === undefined || document.getElementById(formMap.id) === null) {\r\n return;\r\n }\r\n\r\n if (formMap.googleComponent === addressType) {\r\n if (formMap.id === 'shipping_addressthreeletterisoregionname' || formMap.id === 'shipping_addressstate') {\r\n const input = document.getElementById(formMap.id) as HTMLSelectElement;\r\n if (input !== null) {\r\n const formValue = locale === 'it' && formMap.id === 'shipping_addressstate' ? 'DEF' : addressComponent.short_name;\r\n const selectedValue = selectItemByValue(input, formValue, addressType === 'country' ? true : false);\r\n if (selectedValue !== undefined) {\r\n input.value = selectedValue;\r\n const event = new Event('change', { bubbles: true });\r\n input.dispatchEvent(event);\r\n }\r\n }\r\n } else {\r\n const formValue = formMap.id === 'shipping_addresscounty' ? addressComponent.short_name : addressComponent.long_name;\r\n const input = document.getElementById(formMap.id);\r\n if (input !== undefined) {\r\n if (nativeInputValueSetter === undefined) {\r\n return;\r\n }\r\n nativeInputValueSetter.call(input, formValue);\r\n const eCustom = new Event('input', { bubbles: true });\r\n if (input !== null) {\r\n input.dispatchEvent(eCustom);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n // @ts-ignore\r\n // tslint:disable-next-line:typedef\r\n function selectItemByValue(elmnt: HTMLSelectElement, value: string, is_convert_a2_to_a3: boolean) {\r\n for (let i = 0; i < elmnt.options.length; i++) {\r\n const eValue = elmnt.options[i].value;\r\n if ((is_convert_a2_to_a3 && eValue === convert_a2_to_a3[value]) || (!is_convert_a2_to_a3 && eValue === value)) {\r\n return elmnt.options[i].value;\r\n }\r\n }\r\n }\r\n const checkPhone = () => {\r\n const saveAddressButton = document.querySelector('.ms-checkout__guided-card-btn-save.msc-btn') as HTMLButtonElement;\r\n const phone = document.getElementById('shipping_addressphone') as HTMLInputElement;\r\n if (phone) {\r\n const phoneCtn = phone.closest('.msc-address-form__item') as HTMLElement;\r\n const phoneAlert = phoneCtn.getElementsByClassName('msc-address-form__alert')[0];\r\n const pattern = /^[0-9]*$/;\r\n const pattern2 = /^\\+?\\d+$/;\r\n phone.setAttribute('aria-required', 'true');\r\n phone.setAttribute('type', 'tel');\r\n phone.setAttribute('maxlength', '15');\r\n if (phone.value.length === 0) {\r\n saveAddressButton.setAttribute('disabled', 'true');\r\n }\r\n phone.onkeyup = () => {\r\n if (!phone.value.match(pattern) && !phone.value.match(pattern2)) {\r\n phoneCtn.classList.add('address-form__item-invalid');\r\n phoneAlert.textContent = resources.addressPhoneRequiredErrorMessage;\r\n saveAddressButton.setAttribute('disabled', 'true');\r\n } else if (phone.value.length < 6) {\r\n phoneCtn.classList.add('address-form__item-invalid');\r\n phoneAlert.textContent = resources.addressPhoneRequiredErrorMessage;\r\n saveAddressButton.setAttribute('disabled', 'true');\r\n } else {\r\n phoneCtn.classList.remove('address-form__item-invalid');\r\n phoneAlert.textContent = '';\r\n saveAddressButton.removeAttribute('disabled');\r\n }\r\n };\r\n }\r\n };\r\n function phoneValidation(): void {\r\n const addressForm = document.getElementsByClassName('msc-address-form')[0];\r\n const saveAddressButton = addressForm\r\n .closest('.ms-checkout__guided-card')\r\n ?.getElementsByClassName('ms-checkout__guided-card-btn-save')[0] as HTMLElement;\r\n const county = document.getElementById('shipping_addresscounty') as HTMLInputElement;\r\n const countyCtn = county && county !== null ? (county.closest('.msc-address-form__item') as HTMLInputElement) : undefined;\r\n const countyAlert = countyCtn?.getElementsByClassName('msc-address-form__alert')[0];\r\n\r\n if (countyCtn !== undefined) {\r\n countyCtn.onkeyup = () => {\r\n countyCtn?.classList.remove('address-form__item-invalid');\r\n if (countyAlert) {\r\n countyAlert.textContent = '';\r\n }\r\n };\r\n }\r\n if (saveAddressButton !== undefined) {\r\n saveAddressButton.onclick = e => {\r\n const countyValid = locale === 'it' && (county.value === '' || county.value.length > 2) ? false : true;\r\n if (!countyValid) {\r\n countyCtn?.classList.add('address-form__item-invalid');\r\n if (countyAlert) {\r\n countyAlert.textContent = 'Inserire Codice ISO a 2 lettere';\r\n }\r\n const elements = addressForm.querySelectorAll('input');\r\n let fieldInALL = true;\r\n elements.forEach(fieldInControl);\r\n function fieldInControl(element: HTMLInputElement): void {\r\n if (element.value === '' && element.name !== 'County') {\r\n fieldInALL = false;\r\n }\r\n }\r\n if (fieldInALL) {\r\n e.stopPropagation();\r\n }\r\n }\r\n };\r\n }\r\n }\r\n React.useEffect(() => {\r\n gMapsAutocomplete();\r\n const options = document.querySelectorAll('#shipping_addressthreeletterisoregionname option');\r\n options.forEach(o => {\r\n const optionV = (o as HTMLOptionElement).value;\r\n if (countriesAvail[locale] && !countriesAvail[locale].select.includes(optionV)) {\r\n o.remove();\r\n }\r\n });\r\n const countrySelect = document.getElementById('shipping_addressthreeletterisoregionname') as HTMLSelectElement;\r\n if (locale === 'enUS') {\r\n countrySelect.value = 'USA';\r\n }\r\n const event = new Event('change', { bubbles: true });\r\n countrySelect.dispatchEvent(event);\r\n const stateSelect = document.getElementById('shipping_addressstate') as HTMLSelectElement;\r\n if (locale === 'it') {\r\n stateSelect.value = 'DEF';\r\n stateSelect.dispatchEvent(event);\r\n stateSelect.disabled = Boolean('true');\r\n }\r\n phoneValidation();\r\n }, []);\r\n // Phone Verifications\r\n React.useEffect(() => {\r\n checkPhone();\r\n }, [(document?.getElementById('shipping_addressphone') as HTMLInputElement)?.value]);\r\n React.useEffect(() => {\r\n phoneValidation();\r\n }, [document.getElementById('shipping_addressphone')]);\r\n return (\r\n \r\n {heading}\r\n {items &&\r\n items.map((item: IAddressAddItem) => {\r\n const { AddressItem, key, label, alert, input } = item;\r\n if (key === 'Name' && input) {\r\n // @ts-ignore\r\n input.props.maxLength = 34;\r\n }\r\n return (\r\n \r\n {label}\r\n {alert}\r\n {input}\r\n \r\n );\r\n })}\r\n {hasError && (\r\n \r\n {error.title}\r\n {error.message}\r\n \r\n )}\r\n {isShowSaveButton && saveButton}\r\n {isShowCancelButton && cancelButton}\r\n \r\n );\r\n};\r\n\r\nconst CheckoutShippingAddressView: React.FC = props => {\r\n const { CheckoutShippingAddress, viewState, showAddress, showAddressSelect, showAddOrUpdateAddress } = props;\r\n\r\n return (\r\n \r\n {viewState.isShowAddress && }\r\n {viewState.isShowAddresList && }\r\n {viewState.isShowAddOrUpdateAddress && }\r\n \r\n );\r\n};\r\n\r\nexport default CheckoutShippingAddressView;\r\n","// tslint:disable-next-line:variable-name\r\nexport const convert_a2_to_a3 = {\r\n AF: 'AFG',\r\n AX: 'ALA',\r\n AL: 'ALB',\r\n DZ: 'DZA',\r\n AS: 'ASM',\r\n AD: 'AND',\r\n AO: 'AGO',\r\n AI: 'AIA',\r\n AQ: 'ATA',\r\n AG: 'ATG',\r\n AR: 'ARG',\r\n AM: 'ARM',\r\n AW: 'ABW',\r\n AU: 'AUS',\r\n AT: 'AUT',\r\n AZ: 'AZE',\r\n BS: 'BHS',\r\n BH: 'BHR',\r\n BD: 'BGD',\r\n BB: 'BRB',\r\n BY: 'BLR',\r\n BE: 'BEL',\r\n BZ: 'BLZ',\r\n BJ: 'BEN',\r\n BM: 'BMU',\r\n BT: 'BTN',\r\n BO: 'BOL',\r\n BA: 'BIH',\r\n BW: 'BWA',\r\n BV: 'BVT',\r\n BR: 'BRA',\r\n IO: 'IOT',\r\n BN: 'BRN',\r\n BG: 'BGR',\r\n BF: 'BFA',\r\n BI: 'BDI',\r\n KH: 'KHM',\r\n CM: 'CMR',\r\n CA: 'CAN',\r\n CV: 'CPV',\r\n KY: 'CYM',\r\n CF: 'CAF',\r\n TD: 'TCD',\r\n CL: 'CHL',\r\n CN: 'CHN',\r\n CX: 'CXR',\r\n CC: 'CCK',\r\n CO: 'COL',\r\n KM: 'COM',\r\n CG: 'COG',\r\n CD: 'COD',\r\n CK: 'COK',\r\n CR: 'CRI',\r\n CI: 'CIV',\r\n HR: 'HRV',\r\n CU: 'CUB',\r\n CY: 'CYP',\r\n CZ: 'CZE',\r\n DK: 'DNK',\r\n DJ: 'DJI',\r\n DM: 'DMA',\r\n DO: 'DOM',\r\n EC: 'ECU',\r\n EG: 'EGY',\r\n SV: 'SLV',\r\n GQ: 'GNQ',\r\n ER: 'ERI',\r\n EE: 'EST',\r\n ET: 'ETH',\r\n FK: 'FLK',\r\n FO: 'FRO',\r\n FJ: 'FJI',\r\n FI: 'FIN',\r\n FR: 'FRA',\r\n GF: 'GUF',\r\n PF: 'PYF',\r\n TF: 'ATF',\r\n GA: 'GAB',\r\n GM: 'GMB',\r\n GE: 'GEO',\r\n DE: 'DEU',\r\n GH: 'GHA',\r\n GI: 'GIB',\r\n GR: 'GRC',\r\n GL: 'GRL',\r\n GD: 'GRD',\r\n GP: 'GLP',\r\n GU: 'GUM',\r\n GT: 'GTM',\r\n GG: 'GGY',\r\n GN: 'GIN',\r\n GW: 'GNB',\r\n GY: 'GUY',\r\n HT: 'HTI',\r\n HM: 'HMD',\r\n VA: 'VAT',\r\n HN: 'HND',\r\n HK: 'HKG',\r\n HU: 'HUN',\r\n IS: 'ISL',\r\n IN: 'IND',\r\n ID: 'IDN',\r\n IR: 'IRN',\r\n IQ: 'IRQ',\r\n IE: 'IRL',\r\n IM: 'IMN',\r\n IL: 'ISR',\r\n IT: 'ITA',\r\n JM: 'JAM',\r\n JP: 'JPN',\r\n JE: 'JEY',\r\n JO: 'JOR',\r\n KZ: 'KAZ',\r\n KE: 'KEN',\r\n KI: 'KIR',\r\n KP: 'PRK',\r\n KR: 'KOR',\r\n KW: 'KWT',\r\n KG: 'KGZ',\r\n LA: 'LAO',\r\n LV: 'LVA',\r\n LB: 'LBN',\r\n LS: 'LSO',\r\n LR: 'LBR',\r\n LY: 'LBY',\r\n LI: 'LIE',\r\n LT: 'LTU',\r\n LU: 'LUX',\r\n MO: 'MAC',\r\n MK: 'MKD',\r\n MG: 'MDG',\r\n MW: 'MWI',\r\n MY: 'MYS',\r\n MV: 'MDV',\r\n ML: 'MLI',\r\n MT: 'MLT',\r\n MH: 'MHL',\r\n MQ: 'MTQ',\r\n MR: 'MRT',\r\n MU: 'MUS',\r\n YT: 'MYT',\r\n MX: 'MEX',\r\n FM: 'FSM',\r\n MD: 'MDA',\r\n MC: 'MCO',\r\n MN: 'MNG',\r\n ME: 'MNE',\r\n MS: 'MSR',\r\n MA: 'MAR',\r\n MZ: 'MOZ',\r\n MM: 'MMR',\r\n NA: 'NAM',\r\n NR: 'NRU',\r\n NP: 'NPL',\r\n NL: 'NLD',\r\n AN: 'ANT',\r\n NC: 'NCL',\r\n NZ: 'NZL',\r\n NI: 'NIC',\r\n NE: 'NER',\r\n NG: 'NGA',\r\n NU: 'NIU',\r\n NF: 'NFK',\r\n MP: 'MNP',\r\n NO: 'NOR',\r\n OM: 'OMN',\r\n PK: 'PAK',\r\n PW: 'PLW',\r\n PS: 'PSE',\r\n PA: 'PAN',\r\n PG: 'PNG',\r\n PY: 'PRY',\r\n PE: 'PER',\r\n PH: 'PHL',\r\n PN: 'PCN',\r\n PL: 'POL',\r\n PT: 'PRT',\r\n PR: 'PRI',\r\n QA: 'QAT',\r\n RE: 'REU',\r\n RO: 'ROU',\r\n RU: 'RUS',\r\n RW: 'RWA',\r\n BL: 'BLM',\r\n SH: 'SHN',\r\n KN: 'KNA',\r\n LC: 'LCA',\r\n MF: 'MAF',\r\n PM: 'SPM',\r\n VC: 'VCT',\r\n WS: 'WSM',\r\n SM: 'SMR',\r\n ST: 'STP',\r\n SA: 'SAU',\r\n SN: 'SEN',\r\n RS: 'SRB',\r\n SC: 'SYC',\r\n SL: 'SLE',\r\n SG: 'SGP',\r\n SK: 'SVK',\r\n SI: 'SVN',\r\n SB: 'SLB',\r\n SO: 'SOM',\r\n ZA: 'ZAF',\r\n GS: 'SGS',\r\n ES: 'ESP',\r\n LK: 'LKA',\r\n SD: 'SDN',\r\n SR: 'SUR',\r\n SJ: 'SJM',\r\n SZ: 'SWZ',\r\n SE: 'SWE',\r\n CH: 'CHE',\r\n SY: 'SYR',\r\n TW: 'TWN',\r\n TJ: 'TJK',\r\n TZ: 'TZA',\r\n TH: 'THA',\r\n TL: 'TLS',\r\n TG: 'TGO',\r\n TK: 'TKL',\r\n TO: 'TON',\r\n TT: 'TTO',\r\n TN: 'TUN',\r\n TR: 'TUR',\r\n TM: 'TKM',\r\n TC: 'TCA',\r\n TV: 'TUV',\r\n UG: 'UGA',\r\n UA: 'UKR',\r\n AE: 'ARE',\r\n GB: 'GBR',\r\n US: 'USA',\r\n UM: 'UMI',\r\n UY: 'URY',\r\n UZ: 'UZB',\r\n VU: 'VUT',\r\n VE: 'VEN',\r\n VN: 'VNM',\r\n VG: 'VGB',\r\n VI: 'VIR',\r\n WF: 'WLF',\r\n EH: 'ESH',\r\n YE: 'YEM',\r\n ZM: 'ZMB',\r\n ZW: 'ZWE'\r\n};\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport {\r\n IAddressAddItem,\r\n IAddressAddUpdateProps\r\n} from '@msdyn365-commerce-modules/address/src/modules/account-management-address/../../common/components/address-add';\r\nimport {\r\n IAddressList,\r\n IAddressListItem,\r\n IAddressListProps\r\n} from '@msdyn365-commerce-modules/address/src/modules/account-management-address/../../common/components/address-list';\r\nimport {\r\n IAddressShowItem,\r\n IAddressShowProps\r\n} from '@msdyn365-commerce-modules/address/src/modules/account-management-address/../../common/components/address-show';\r\nimport { IAccountManagementAddressViewProps } from '@msdyn365-commerce-modules/address/src/modules/account-management-address/./account-management-address';\r\nimport { convert_a2_to_a3 } from '../utils/convert_a2_a3';\r\n\r\nconst AddressShow: React.FC = ({ AddressDetail, items }) => {\r\n return (\r\n \r\n {items &&\r\n items.map((item: IAddressShowItem) => {\r\n return <>{item.description};\r\n })}\r\n \r\n );\r\n};\r\n\r\nconst AddressList: React.FC = ({ List, isShowList, heading, items }) => {\r\n if (!isShowList) {\r\n return null;\r\n }\r\n\r\n return (\r\n \r\n {heading}\r\n {items &&\r\n items.map((item: IAddressListItem) => {\r\n const { Item, key, error, showItems, isShowPrimaryButton, primaryButton, editButton, removeButton } = item;\r\n const { Error, isShowError, title, message } = error;\r\n return (\r\n \r\n \r\n {isShowError && (\r\n \r\n {title}\r\n {message}\r\n \r\n )}\r\n {isShowPrimaryButton && primaryButton}\r\n {editButton}\r\n {removeButton}\r\n \r\n );\r\n })}\r\n \r\n );\r\n};\r\n\r\nconst AddressLists: React.FC = ({\r\n ListAddress,\r\n heading,\r\n isShowEmptyListMessage,\r\n emptyListMessage,\r\n addButton,\r\n primaryAddressList,\r\n otherAddressList\r\n}) => {\r\n return (\r\n \r\n {heading}\r\n {isShowEmptyListMessage && emptyListMessage}\r\n {addButton}\r\n \r\n \r\n \r\n );\r\n};\r\n// tslint:disable-next-line:max-func-body-length\r\nconst AddressAddUpdate: React.FC = ({\r\n AddressForm,\r\n heading,\r\n items,\r\n hasError,\r\n error,\r\n isShowSaveButton,\r\n saveButton,\r\n isShowCancelButton,\r\n cancelButton,\r\n ...other\r\n}) => {\r\n // @ts-ignore\r\n const resources = other?.moduleProps?.resources;\r\n // @ts-ignore\r\n const localeString = other?.moduleProps?.context?.request?.locale;\r\n // @ts-ignore\r\n const sitePath = other?.moduleProps?.context?.request?.sitePath;\r\n const europe = ['/fr', '/de'];\r\n // @ts-ignore\r\n const currency = other?.moduleProps?.context?.request?.channel?.Currency;\r\n const locale =\r\n sitePath && europe.includes(sitePath)\r\n ? 'eu'\r\n : currency === 'EUR' && localeString === 'en-GB'\r\n ? 'eu'\r\n : localeString.replace('-', '');\r\n\r\n const [hasAddressError, setHasAddressError] = React.useState(false);\r\n React.useEffect(() => {\r\n setHasAddressError(error.title ? true : false);\r\n }, [error.title]);\r\n // console.log(`${currency} ${localeString} ${locale}`);\r\n const countriesAvail = {\r\n enGB: {\r\n autocomplete: ['gb'],\r\n select: ['GBR']\r\n },\r\n it: {\r\n autocomplete: ['it'],\r\n select: ['ITA']\r\n },\r\n enUS: {\r\n autocomplete: ['us'],\r\n // autocomplete: ['us', 'ca'],\r\n // select: ['USA', 'CAN']\r\n select: ['USA']\r\n },\r\n eu: {\r\n // removed componentRestrictions for country as there is limit of 5 in google maps\r\n // autocomplete:['at','be','bg','ch','cz','de','dk','es','ee','fi','fr','gr','hr','hu','ie','li','lt','lu','lv','mc','nl','no','pl','pt','ro','sk','si','se'],\r\n autocomplete: [],\r\n select: [\r\n 'AUT',\r\n 'BEL',\r\n 'BGR',\r\n 'CHE',\r\n 'CZE',\r\n 'DEU',\r\n 'DNK',\r\n 'ESP',\r\n 'EST',\r\n 'FIN',\r\n 'FRA',\r\n 'GRC',\r\n 'HRV',\r\n 'HUN',\r\n 'IRL',\r\n 'LIE',\r\n 'LTU',\r\n 'LUX',\r\n 'LVA',\r\n 'MCO',\r\n 'NLD',\r\n 'NOR',\r\n 'POL',\r\n 'PRT',\r\n 'ROU',\r\n 'SVK',\r\n 'SVN',\r\n 'SWE'\r\n ]\r\n }\r\n };\r\n // @ts-ignore\r\n const nativeInputValueSetter = Object.getOwnPropertyDescriptor(window.HTMLInputElement.prototype, 'value').set;\r\n // tslint:disable-next-line:typedef\r\n function gMapsAutocomplete() {\r\n const googleComponents = [\r\n { googleComponent: 'sublocality_level_1', id: 'shipping_addresscity' },\r\n { googleComponent: 'locality', id: 'shipping_addresscity' },\r\n { googleComponent: 'postal_town', id: 'shipping_addresscity' },\r\n { googleComponent: 'administrative_area_level_3', id: 'shipping_addresscity' },\r\n { googleComponent: 'administrative_area_level_1', id: 'shipping_addressstate' },\r\n { googleComponent: 'postal_code_prefix', id: 'shipping_addresszipcode' },\r\n { googleComponent: 'postal_code', id: 'shipping_addresszipcode' },\r\n { googleComponent: 'country', id: 'shipping_addressthreeletterisoregionname' },\r\n { googleComponent: 'administrative_area_level_2', id: 'shipping_addresscounty' }\r\n ];\r\n\r\n const autocompleteFormField = document.getElementById('shipping_addressstreet');\r\n // @ts-ignore\r\n const autocomplete = new window.google.maps.places.Autocomplete(autocompleteFormField, {\r\n types: ['address'],\r\n componentRestrictions: { country: countriesAvail[locale] && countriesAvail[locale].autocomplete }\r\n });\r\n if (autocompleteFormField === null) {\r\n return;\r\n }\r\n autocompleteFormField.setAttribute('placeholder', resources.startTypingYourAddress);\r\n // @ts-ignore\r\n window.google.maps.event.clearInstanceListeners(autocompleteFormField);\r\n // @ts-ignore\r\n window.google.maps.event.addListener(autocomplete, `place_changed`, () => {\r\n const place = autocomplete.getPlace();\r\n // console.log(place);\r\n if (nativeInputValueSetter === undefined) {\r\n return;\r\n }\r\n nativeInputValueSetter.call(autocompleteFormField, place.name);\r\n const eCustom = new Event('change', { bubbles: true });\r\n autocompleteFormField.dispatchEvent(eCustom);\r\n for (const googleComponent of googleComponents) {\r\n const addressComponents = place.address_components;\r\n if (addressComponents && addressComponents.length > 0) {\r\n // @ts-ignore\r\n addressComponents.forEach(addressComponent => populateFormElements(addressComponent, googleComponent));\r\n }\r\n }\r\n });\r\n }\r\n // tslint:disable-next-line:typedef no-any\r\n function populateFormElements(\r\n addressComponent: { types: any[]; short_name: string; long_name: string },\r\n formMap: { googleComponent: any; id: string }\r\n ) {\r\n const addressType = addressComponent.types[0];\r\n\r\n if (document.getElementById(formMap.id) === undefined || document.getElementById(formMap.id) === null) {\r\n return;\r\n }\r\n\r\n if (formMap.googleComponent === addressType) {\r\n if (formMap.id === 'shipping_addressthreeletterisoregionname' || formMap.id === 'shipping_addressstate') {\r\n const input = document.getElementById(formMap.id) as HTMLSelectElement;\r\n if (input !== null) {\r\n const formValue = locale === 'it' && formMap.id === 'shipping_addressstate' ? 'DEF' : addressComponent.short_name;\r\n // console.log(formValue);\r\n const selectedValue = selectItemByValue(input, formValue, addressType === 'country' ? true : false);\r\n // console.log(selectedValue);\r\n if (selectedValue !== undefined) {\r\n input.value = selectedValue;\r\n // console.log(input.value);\r\n const event = new Event('change', { bubbles: true });\r\n input.dispatchEvent(event);\r\n }\r\n }\r\n } else {\r\n const formValue = formMap.id === 'shipping_addresscounty' ? addressComponent.short_name : addressComponent.long_name;\r\n const input = document.getElementById(formMap.id);\r\n if (input !== undefined) {\r\n if (nativeInputValueSetter === undefined) {\r\n return;\r\n }\r\n nativeInputValueSetter.call(input, formValue);\r\n const eCustom = new Event('input', { bubbles: true });\r\n if (input !== null) {\r\n input.dispatchEvent(eCustom);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n // @ts-ignore\r\n // tslint:disable-next-line:typedef\r\n function selectItemByValue(elmnt: HTMLSelectElement, value: string, is_convert_a2_to_a3) {\r\n for (let i = 0; i < elmnt.options.length; i++) {\r\n const eValue = elmnt.options[i].value;\r\n if ((is_convert_a2_to_a3 && eValue === convert_a2_to_a3[value]) || (!is_convert_a2_to_a3 && eValue === value)) {\r\n return elmnt.options[i].value;\r\n }\r\n }\r\n }\r\n const checkPhone = () => {\r\n const saveAddressButton = document.querySelector('.msc-address-form__button-save.msc-btn') as HTMLButtonElement;\r\n const phone = document.getElementById('shipping_addressphone') as HTMLInputElement;\r\n if (phone) {\r\n const phoneCtn = phone.closest('.msc-address-form__item') as HTMLElement;\r\n const phoneAlert = phoneCtn.getElementsByClassName('msc-address-form__alert')[0];\r\n const pattern = /^[0-9]*$/;\r\n const pattern2 = /^\\+?\\d+$/;\r\n phone.setAttribute('aria-required', 'true');\r\n phone.setAttribute('type', 'tel');\r\n phone.setAttribute('maxlength', '15');\r\n if (phone.value.length === 0) {\r\n saveAddressButton.setAttribute('disabled', 'true');\r\n }\r\n phone.onkeyup = () => {\r\n if (!phone.value.match(pattern) && !phone.value.match(pattern2)) {\r\n phoneCtn.classList.add('address-form__item-invalid');\r\n phoneAlert.textContent = resources.addressPhoneRequiredErrorMessage;\r\n saveAddressButton.setAttribute('disabled', 'true');\r\n } else if (phone.value.length < 6) {\r\n phoneCtn.classList.add('address-form__item-invalid');\r\n phoneAlert.textContent = resources.addressPhoneRequiredErrorMessage;\r\n saveAddressButton.setAttribute('disabled', 'true');\r\n } else {\r\n phoneCtn.classList.remove('address-form__item-invalid');\r\n phoneAlert.textContent = '';\r\n saveAddressButton.removeAttribute('disabled');\r\n }\r\n };\r\n }\r\n };\r\n function phoneValidation(): void {\r\n const addressForm = document.getElementsByClassName('msc-address-form')[0];\r\n const saveAddressButton = document.querySelector('.msc-address-form__button-save.msc-btn') as HTMLButtonElement;\r\n const county = document.getElementById('shipping_addresscounty') as HTMLInputElement;\r\n const countyCtn = county && county !== null ? (county.closest('.msc-address-form__item') as HTMLInputElement) : undefined;\r\n const countyAlert = countyCtn?.getElementsByClassName('msc-address-form__alert')[0];\r\n\r\n if (countyCtn !== undefined) {\r\n countyCtn.onkeyup = () => {\r\n countyCtn?.classList.remove('address-form__item-invalid');\r\n if (countyAlert) {\r\n countyAlert.textContent = '';\r\n }\r\n };\r\n }\r\n if (saveAddressButton !== undefined) {\r\n saveAddressButton.onclick = e => {\r\n const countyValid =\r\n locale === 'it' && (county.value === '' || county.value.length > 2 || !/[^a-z]/i.test(county.value) === false)\r\n ? false\r\n : true;\r\n if (!countyValid) {\r\n countyCtn?.classList.add('address-form__item-invalid');\r\n if (countyAlert) {\r\n countyAlert.textContent = 'Inserire Codice ISO a 2 lettere';\r\n }\r\n const elements = addressForm.querySelectorAll('input');\r\n let fieldInALL = true;\r\n elements.forEach(fieldInControl);\r\n function fieldInControl(element: HTMLInputElement): void {\r\n if (element.value === '' && element.name !== 'County') {\r\n fieldInALL = false;\r\n }\r\n }\r\n if (fieldInALL) {\r\n e.stopPropagation();\r\n }\r\n }\r\n };\r\n }\r\n }\r\n React.useEffect(() => {\r\n gMapsAutocomplete();\r\n const options = document.querySelectorAll('#shipping_addressthreeletterisoregionname option');\r\n options.forEach(o => {\r\n const optionV = (o as HTMLOptionElement).value;\r\n if (countriesAvail[locale] && !countriesAvail[locale].select.includes(optionV)) {\r\n o.remove();\r\n }\r\n });\r\n const countrySelect = document.getElementById('shipping_addressthreeletterisoregionname') as HTMLSelectElement;\r\n if (locale === 'enUS') {\r\n countrySelect.value = 'USA';\r\n }\r\n const event = new Event('change', { bubbles: true });\r\n countrySelect.dispatchEvent(event);\r\n }, []);\r\n\r\n // Auto select of DEF value in state select on italian site\r\n React.useEffect(() => {\r\n const event = new Event('change', { bubbles: true });\r\n if (locale === 'it' && (document.querySelector('#shipping_addressstate option[value=DEF]') as HTMLOptionElement)) {\r\n const optionDEF = document.querySelector('#shipping_addressstate option[value=DEF]') as HTMLOptionElement;\r\n optionDEF.setAttribute('aria-selected', 'true');\r\n (optionDEF.parentNode as HTMLSelectElement).value = 'DEF';\r\n (optionDEF.parentNode as HTMLSelectElement).dispatchEvent(event);\r\n (optionDEF.parentNode as HTMLSelectElement).disabled = Boolean('true');\r\n }\r\n }, [document.querySelector('#shipping_addressstate option[value=DEF]')]);\r\n\r\n // Phone Verifications\r\n React.useEffect(() => {\r\n checkPhone();\r\n }, [(document?.getElementById('shipping_addressphone') as HTMLInputElement)?.value]);\r\n React.useEffect(() => {\r\n phoneValidation();\r\n }, [document.getElementsByClassName('msc-address-form')[0]]);\r\n\r\n // Refesh once saving processed\r\n let updatedCount = 0;\r\n React.useEffect(() => {\r\n ++updatedCount;\r\n if (updatedCount > 1) {\r\n location.reload();\r\n }\r\n }, [document.querySelector('.msc-address-form__button-updating')]);\r\n return (\r\n \r\n {heading}\r\n {items &&\r\n items.map((item: IAddressAddItem) => {\r\n const { AddressItem, key, label, alert, input } = item;\r\n if (key === 'Name' && input) {\r\n // @ts-ignore\r\n input.props.maxLength = 34;\r\n }\r\n return (\r\n \r\n {label}\r\n {alert}\r\n {input}\r\n \r\n );\r\n })}\r\n {hasAddressError && (\r\n \r\n

{resources.addressErrorMessage}

\r\n
\r\n )}\r\n {isShowSaveButton && saveButton}\r\n {isShowCancelButton && cancelButton}\r\n
\r\n );\r\n};\r\n\r\nconst AccountManagementAddressView: React.FC = props => {\r\n const { AccountAddressManagement, viewState, showAddressList, showAddOrUpdateAddress } = props;\r\n\r\n return (\r\n \r\n {viewState.isShowAddresList && }\r\n {viewState.isShowAddOrUpdateAddress && }\r\n \r\n );\r\n};\r\n\r\nexport default AccountManagementAddressView;\r\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport MsDyn365, { ICoreContext, IDateFormatOptions, IRequestContext } from '@msdyn365-commerce/core';\nimport { BusinessPartnerOperationRequest, BusinessPartnerOperationRequestDetails } from '@msdyn365-commerce/retail-proxy';\nimport { ArrayExtensions, StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n IDataTableProps,\n IHeadingsProperty,\n ITableItemProps,\n ITableRowProps,\n Table,\n TableDataType\n} from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IB2bRequestsStatusData } from '../b2b-requests-status.data';\nimport { IB2bRequestsStatusProps } from '../b2b-requests-status.props.autogenerated';\n\nexport interface IB2bRequestsTableProps {\n moduleProps: IB2bRequestsStatusProps;\n isMobile: boolean;\n mobileExcludedColumns: string[];\n}\n\nexport interface IB2bRequestsTableResources {\n b2bRequestsTypeCreateProspect: string;\n b2bRequestsTypeAddUser: string;\n b2bRequestsTypeEditUser: string;\n b2bRequestsTypeDeleteUser: string;\n b2bRequestsTypeRequestAccountStatement: string;\n b2bRequestsTypeRequestInvoiceCopy: string;\n b2bRequestsTypeUnknown: string;\n b2bRequestsStatusRequested: string;\n b2bRequestsStatusProcessed: string;\n b2bRequestsStatusError: string;\n b2bRequestsNumberOfItems: string;\n b2bRequestsNumberOfItemsSingular: string;\n b2bRequestsNameDisplay: string;\n b2bRequestsPreviousText: string;\n b2bRequestsNextText: string;\n b2bRequestsUserColumn: string;\n b2bRequestsStatusColumn: string;\n b2bRequestsRequestDateColumn: string;\n b2bRequestsTypeColumn: string;\n b2bRequestsDescriptionColumn: string;\n b2bRequestsAccountStatementDetails: string;\n b2bRequestsInvoiceCopyDetails: string;\n businessUserSelectCheckBoxAriaLabelText?: string;\n sortByAscending?: string;\n sortByDescending?: string;\n}\n\nexport enum RequestsTableColumnHeader {\n Name = 'User',\n Status = 'Status',\n RequestDate = 'Request date',\n Type = 'Request type',\n Description = 'Request detail'\n}\n\nconst getCurrentUrl = (reqContext: IRequestContext): URL => {\n if (MsDyn365.isBrowser) {\n return new URL(window.location.href);\n }\n\n // NOTE: Typing on requestURL is incorrect\n if (reqContext.url.requestUrl.href) {\n return new URL(reqContext.url.requestUrl.href);\n }\n return new URL(reqContext.url.requestUrl.href);\n};\n\nconst getUserName = (request: BusinessPartnerOperationRequest, resources: IB2bRequestsTableResources) => {\n if (StringExtensions.isNullOrEmpty(request.UserFirstName)) {\n if (StringExtensions.isNullOrEmpty(request.UserLastName)) {\n return '';\n }\n\n return request.UserLastName;\n } else if (StringExtensions.isNullOrEmpty(request.UserLastName)) {\n return request.UserFirstName;\n }\n\n return resources.b2bRequestsNameDisplay.replace('{0}', request.UserFirstName!).replace('{1}', request.UserLastName!);\n};\n\nconst formatDate = (context: ICoreContext, date: Date | undefined) => {\n if (date === undefined) {\n return '';\n }\n\n const dateOptions: IDateFormatOptions = { year: 'numeric', month: 'long', day: 'numeric' };\n return context.cultureFormatter.formatDate(date, dateOptions);\n};\n\n/**\n * Gets the value to display for the request details.\n * @param request - The request to parse for the details.\n * @param resources - The resources.\n * @param context - The context.\n * @returns The string to display.\n */\nconst getDetails = (request: BusinessPartnerOperationRequest, resources: IB2bRequestsTableResources, context: ICoreContext) => {\n if (!request.Details) {\n return '';\n }\n\n const requestDetails: BusinessPartnerOperationRequestDetails = request.Details;\n\n const accountStatementStartDateTime = formatDate(context, requestDetails.AccountStatementStartDateTime) || '';\n const accountStatementEndDateTime = formatDate(context, requestDetails.AccountStatementEndDateTime) || '';\n const invoiceId = requestDetails.InvoiceId ?? '';\n\n switch (request.TypeValue) {\n // eslint-disable-next-line @typescript-eslint/no-magic-numbers -- workaround for not being able to use enum value\n case 5:\n if (\n !StringExtensions.isNullOrEmpty(accountStatementStartDateTime) &&\n !StringExtensions.isNullOrEmpty(accountStatementEndDateTime)\n ) {\n return resources.b2bRequestsAccountStatementDetails\n .replace('{0}', accountStatementStartDateTime)\n .replace('{1}', accountStatementEndDateTime);\n }\n\n return '';\n // eslint-disable-next-line @typescript-eslint/no-magic-numbers -- workaround for not being able to use enum value\n case 6:\n if (!StringExtensions.isNullOrEmpty(invoiceId)) {\n return resources.b2bRequestsInvoiceCopyDetails.replace('{0}', invoiceId);\n }\n\n return '';\n default:\n return '';\n }\n};\n\nconst createTableItems = (\n operationRequests: BusinessPartnerOperationRequest[] | undefined,\n props: IB2bRequestsStatusProps\n): ITableRowProps[] => {\n if (!ArrayExtensions.hasElements(operationRequests)) {\n return [];\n }\n\n return operationRequests.map(request => {\n return {\n row: [\n {\n id: props.resources.b2bRequestsTypeColumn,\n type: TableDataType.Text,\n value: getDisplayFriendlyTypeValue(request.TypeValue ?? 0, props.resources)\n } as ITableItemProps,\n {\n id: props.resources.b2bRequestsRequestDateColumn,\n type: TableDataType.Text,\n value: formatDate(props.context, request.CreatedDateTime)\n } as ITableItemProps,\n {\n id: props.resources.b2bRequestsDescriptionColumn,\n type: TableDataType.Text,\n value: getDetails(request, props.resources, props.context)\n } as ITableItemProps,\n {\n id: props.resources.b2bRequestsUserColumn,\n type: TableDataType.Text,\n value: getUserName(request, props.resources)\n } as ITableItemProps,\n {\n id: props.resources.b2bRequestsStatusColumn,\n type: TableDataType.Text,\n value: getDisplayFriendlyStatusValue(request.StatusValue ?? 0, props.resources)\n } as ITableItemProps\n ],\n isSelected: false,\n className: props.config.className\n };\n });\n};\n\nconst getDisplayFriendlyTypeValue = (typeValue: number, resources: IB2bRequestsTableResources): string => {\n switch (typeValue) {\n case 1:\n return resources.b2bRequestsTypeCreateProspect;\n case 2:\n return resources.b2bRequestsTypeAddUser;\n case 3:\n return resources.b2bRequestsTypeDeleteUser;\n case 4:\n return resources.b2bRequestsTypeEditUser;\n case 5:\n return resources.b2bRequestsTypeRequestAccountStatement;\n case 6:\n return resources.b2bRequestsTypeRequestInvoiceCopy;\n default:\n return resources.b2bRequestsTypeUnknown;\n }\n};\n\nconst getDisplayFriendlyStatusValue = (statusValue: number, resources: IB2bRequestsTableResources): string => {\n switch (statusValue) {\n case 1:\n return resources.b2bRequestsStatusProcessed;\n case 2:\n return resources.b2bRequestsStatusError;\n default:\n return resources.b2bRequestsStatusRequested;\n }\n};\n\nconst createTableProps = (tableProps: IB2bRequestsTableProps) => {\n const { context, data, resources } = tableProps.moduleProps;\n\n const tableData = createTableItems(data.operationRequests.result, tableProps.moduleProps);\n const tableHeading =\n (ArrayExtensions.hasElements(tableData) &&\n tableData[0].row\n .filter(item => {\n // Check that this is either not mobile or the column should be displayed when mobile.\n return !tableProps.isMobile || !tableProps.mobileExcludedColumns.includes(item.id);\n })\n .map(item => {\n return {\n name: item.id,\n sortable: true,\n ariaLabel: resources.columnSortAriaLabel\n } as IHeadingsProperty;\n })) ||\n [];\n\n return {\n resources: {},\n headings: tableHeading,\n rows: tableData,\n className: `${tableProps.moduleProps.config.className}__table`,\n editLinkText: '',\n deleteLinkText: '',\n viewLinkText: '',\n enableToModify: false,\n actionLinkText: '',\n showCheckBoxes: false,\n isSortable: true,\n showPagination: true,\n minifyActions: tableProps.isMobile,\n excludedColumns: tableProps.isMobile ? tableProps.mobileExcludedColumns : [],\n paginationProperty: {\n skipCount:\n context.request.query?.skip && !isNaN(Number.parseInt(context.request.query.skip, 10))\n ? Number.parseInt(context.request.query.skip, 10)\n : 0,\n itemPerPage: 10,\n prevText: resources.b2bRequestsPreviousText,\n nextText: resources.b2bRequestsNextText,\n paginationText: '',\n url: (context && getCurrentUrl(context.request).href) || ''\n },\n isSingleSelectOnly: true,\n actions: {\n onDelete: undefined,\n onEdit: undefined,\n onView: undefined\n },\n businessUserSelectCheckBoxAriaLabelText: tableProps.moduleProps.resources.businessUserSelectCheckBoxAriaLabelText,\n sortByAscending: tableProps.moduleProps.resources.sortByAscending,\n sortByDescending: tableProps.moduleProps.resources.sortByDescending\n } as IDataTableProps;\n};\n\nexport const B2bRequestsTable: React.FC = (tableProps: IB2bRequestsTableProps) => {\n return ;\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { format, Heading, IModuleProps, isMobile, VariantType } from '@msdyn365-commerce-modules/utilities';\nimport { computed } from 'mobx';\nimport * as React from 'react';\nimport { isChannelTypeB2B } from '@msdyn365-commerce/core';\n\nimport { IB2bRequestsStatusData } from './b2b-requests-status.data';\nimport { IB2bRequestsStatusProps, IHeadingData } from './b2b-requests-status.props.autogenerated';\nimport { B2bRequestsTable } from './components/b2b-requests-table';\n\nexport interface IB2bRequestsStatusViewProps extends IB2bRequestsStatusProps {\n b2bRequestsStatus: IModuleProps;\n heading?: React.ReactNode;\n table: React.ReactNode;\n}\n\n/**\n *\n * B2bRequestsStatus component.\n * @extends {React.PureComponent>}\n */\nclass B2bRequestsStatus extends React.PureComponent> {\n @computed get isMobile(): boolean {\n const size = isMobile({ variant: VariantType.Viewport, context: this.props.context.request });\n return size === 'xs';\n }\n\n public render(): JSX.Element | null {\n const { config } = this.props;\n\n if (!isChannelTypeB2B(this.props.context.actionContext.requestContext)) {\n return null;\n }\n\n const className = config.className || '';\n\n const viewProps = {\n ...this.props,\n b2bRequestsStatus: {\n moduleProps: this.props,\n className\n },\n heading: this.renderHeader(className, config.heading),\n table: this.renderTable()\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n private readonly renderHeader = (className: string, headingData: IHeadingData): React.ReactNode => {\n const itemCount = this.props.data.operationRequests.result?.length ?? 0;\n\n return (\n
\n \n {this.getItemNumberDisplayString(itemCount)}\n
\n );\n };\n\n /**\n * Returns columns that needs to be excluded for mobile view.\n * @returns Array of column names.\n */\n private readonly _retrieveExcludedColumns = (): string[] => {\n const { resources } = this.props;\n return [resources.b2bRequestsRequestDateColumn, resources.b2bRequestsDescriptionColumn, resources.b2bRequestsUserColumn];\n };\n\n private readonly renderTable = (): React.ReactNode => {\n return (\n \n );\n };\n\n private readonly getItemNumberDisplayString = (itemCount: number): string => {\n switch (itemCount) {\n case 0:\n return '';\n case 1:\n return format(this.props.resources.b2bRequestsNumberOfItemsSingular, itemCount);\n default:\n return format(this.props.resources.b2bRequestsNumberOfItems, itemCount);\n }\n };\n}\n\nexport default B2bRequestsStatus;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module } from '@msdyn365-commerce-modules/utilities';\nimport React from 'react';\n\nimport { IB2bRequestsStatusViewProps } from './b2b-requests-status';\n\nconst B2bRequestsStatusView: React.FC = props => {\n const { b2bRequestsStatus, heading, table } = props;\n return (\n \n {heading}\n {table}\n \n );\n};\n\nexport default B2bRequestsStatusView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n CacheType,\n createObservableDataAction,\n IAction,\n IActionContext,\n IActionInput,\n IAny,\n ICommerceApiSettings,\n ICreateActionContext,\n IGeneric\n} from '@msdyn365-commerce/core';\nimport { buildCacheKey } from '@msdyn365-commerce-modules/retail-actions';\n\nimport { CheckoutState } from './checkout-state';\n\n/**\n * CheckoutState - action input.\n */\nexport class CheckoutStateInput implements IActionInput {\n private readonly apiSettings: ICommerceApiSettings;\n\n constructor(apiSettings: ICommerceApiSettings) {\n this.apiSettings = apiSettings;\n }\n\n public getCacheKey = () => buildCacheKey('CheckoutState', this.apiSettings);\n\n public getCacheObjectType = () => 'CheckoutState';\n\n public dataCacheType = (): CacheType => 'request';\n}\n\n/**\n * CheckoutState - action.\n * @param input\n * @param ctx\n */\nexport async function checkoutStateAction(input: CheckoutStateInput, ctx: IActionContext): Promise {\n return new CheckoutState();\n}\n\n/**\n * CheckoutState - create new input for create action.\n * @param inputData\n */\nconst createInput = (inputData: ICreateActionContext>): IActionInput => {\n return new CheckoutStateInput(inputData.requestContext.apiSettings);\n};\n\n/**\n * CheckoutState - create action.\n */\nexport const checkoutStateActionDataAction = createObservableDataAction({\n action: >checkoutStateAction,\n input: createInput\n});\n\nexport default checkoutStateActionDataAction;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IGiftCardExtend } from '@msdyn365-commerce/global-state';\nimport { Address, GiftCard, TenderLine, TokenizedPaymentCard } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { action, computed, observable } from 'mobx';\n\n/**\n * State information related to what is needed to succesfully perform a checkout.\n */\nexport class CheckoutState {\n @observable private _tokenizedPaymentCard: TokenizedPaymentCard | undefined;\n\n @computed public get tokenizedPaymentCard(): Readonly | undefined {\n return this._tokenizedPaymentCard;\n }\n\n @observable private _tenderLine: TenderLine | undefined;\n\n @computed public get tenderLine(): Readonly | undefined {\n return this._tenderLine;\n }\n\n @observable private _billingAddress: Address | undefined;\n\n @computed public get billingAddress(): Readonly
| undefined {\n return this._billingAddress;\n }\n\n @observable private _shippingAddress: Address | undefined;\n\n @computed public get shippingAddress(): Readonly
| undefined {\n return this._shippingAddress;\n }\n\n @observable private _cardPrefix: string | undefined;\n\n @computed public get cardPrefix(): Readonly | undefined {\n return this._cardPrefix;\n }\n\n @observable private _giftCards: GiftCard[] = [];\n\n @computed public get giftCards(): readonly GiftCard[] {\n return this._giftCards;\n }\n\n @observable private _giftCardExtends: IGiftCardExtend[] = [];\n\n @computed public get giftCardExtends(): readonly IGiftCardExtend[] {\n return this._giftCardExtends;\n }\n\n @observable private _loyaltyCardNumber?: string;\n\n @computed public get loyaltyCardNumber(): Readonly | undefined {\n return this._loyaltyCardNumber;\n }\n\n @observable private _loyaltyAmount: number = 0;\n\n @computed public get loyaltyAmount(): Readonly | number {\n return this._loyaltyAmount;\n }\n\n @observable private _guestCheckoutEmail: string = '';\n\n @computed public get guestCheckoutEmail(): Readonly | string {\n return this._guestCheckoutEmail;\n }\n\n @observable private _isTermsAndConditionAccepted: boolean = false;\n\n @computed public get isTermsAndConditionAccepted(): Readonly | boolean {\n return this._isTermsAndConditionAccepted;\n }\n\n @observable private _customerAccountAmount: number = 0;\n\n @computed public get customerAccountAmount(): Readonly | number {\n return this._customerAccountAmount;\n }\n\n @action\n public updateTokenizedPaymentCard(newTokenizedPaymentCard: TokenizedPaymentCard): void {\n this._tokenizedPaymentCard = newTokenizedPaymentCard;\n }\n\n @action\n public updateTenderLine(newTenderLine: TenderLine | undefined): void {\n this._tenderLine = newTenderLine;\n }\n\n @action\n public updateShippingAddress(newShippingAddress: Address): void {\n this._shippingAddress = newShippingAddress;\n }\n\n @action\n public updateBillingAddress(newBillingAddress: Address): void {\n this._billingAddress = newBillingAddress;\n }\n\n @action\n public updateCardPrefix(newCardPrefix: string): void {\n this._cardPrefix = newCardPrefix;\n }\n\n @action\n public removeGiftCard(giftCardNumber: string): void {\n this._giftCards = this._giftCards.filter(giftCard => giftCard.Id !== giftCardNumber);\n }\n\n @action\n public removeGiftCardExtend(giftCardNumber: string): void {\n this._giftCardExtends = this._giftCardExtends.filter(giftCard => giftCard.Id !== giftCardNumber);\n }\n\n @action\n public addGiftCard(giftCard: GiftCard): void {\n this._giftCards = [giftCard, ...this._giftCards];\n }\n\n @action\n public addGiftCardExtend(giftCard: IGiftCardExtend): void {\n this._giftCardExtends = [giftCard, ...this._giftCards];\n }\n\n @action\n public updateLoyaltyCardNumber(newLoyaltyCardNumber: string): void {\n this._loyaltyCardNumber = newLoyaltyCardNumber;\n }\n\n @action\n public updateLoyaltyAmount(newAmount: number): void {\n this._loyaltyAmount = newAmount;\n }\n\n @action\n public updateGuestCheckoutEmail(newGuestCheckoutEmail: string): void {\n this._guestCheckoutEmail = newGuestCheckoutEmail;\n }\n\n @action\n public updateTermsAndConditionsAcceptance(newIsTermsAndConditionAccepted: boolean): void {\n this._isTermsAndConditionAccepted = newIsTermsAndConditionAccepted;\n }\n\n @action\n public updateCustomerAccountAmount(newAmount: number): void {\n this._customerAccountAmount = newAmount;\n }\n}\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\n/**\n * EnabledPaymentsForOBO enum.\n */\n export enum EnabledPaymentsForOBO {\n OnCustomerAccount = 1,\n ExpressPayment = 0,\n Loyalty = 0,\n GiftCard = 0,\n PaymentInstrument = 0,\n ApplePay = 0\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { CacheType, IActionContext, IActionInput } from '@msdyn365-commerce/core';\n\nimport { IModuleStates } from './module-state.data';\n\n/**\n * GetModulesInput.\n */\nexport class ModuleStatesCacheKey implements IActionInput {\n public getCacheKey = () => 'ModuleState';\n\n public getCacheObjectType = () => 'ModuleState';\n\n public dataCacheType = (): CacheType => 'none';\n}\n\nexport function getModuleStates(ctx: IActionContext): IModuleStates {\n const cacheKey = new ModuleStatesCacheKey();\n\n let moduleStates = ctx.get(cacheKey.getCacheObjectType(), cacheKey.getCacheKey());\n if (moduleStates) {\n return moduleStates;\n }\n ctx.update(cacheKey, {});\n moduleStates = ctx.get(cacheKey.getCacheObjectType(), cacheKey.getCacheKey());\n return moduleStates;\n}\n\nexport function updateModuleStates(value: IModuleStates, ctx: IActionContext): void {\n const cacheKey = new ModuleStatesCacheKey();\n ctx.update(cacheKey, value);\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IModule } from '@msdyn365-commerce/core';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport isMatch from 'lodash/isMatch';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { getModuleStates, updateModuleStates } from './module-state';\nimport { IModuleState, IModuleStateManager, IModuleStateProps, IModuleStates } from './module-state.data';\n\nexport interface IProps extends IModule, IModuleStateProps {\n enableControl?: boolean;\n}\n\nconst sectionContainerModuleId = 'section-container';\nconst paymentInstrumentModuleId = 'payment-instrument';\n\nconst withModuleState =

(WrappedComponent: React.ComponentType

): React.ComponentType

=> {\n /**\n *\n * ModuleState component.\n * @extends {React.Component

}\n */\n @observer\n class ModuleState extends React.Component

{\n constructor(props: P) {\n super(props);\n this.initializeState();\n }\n\n public shouldComponentUpdate(nextProps: IModuleStateProps): boolean {\n if (this.props === nextProps) {\n return false;\n }\n return true;\n }\n\n public render(): JSX.Element | null {\n const { id } = this.props;\n return ;\n }\n\n private readonly initializeState = (): void => {\n const { id, typeName, context } = this.props;\n const states = getModuleStates(context.actionContext);\n if (!states) {\n this.props.telemetry.error('withModuleState initializeState() - states not found');\n return;\n }\n\n if (states[id]) {\n // State has been initialized\n return;\n }\n\n updateModuleStates(\n {\n ...states,\n [id]: {\n id,\n typeName,\n hasInitialized: false,\n hasError: false,\n isRequired: true,\n isCancellable: true,\n isSubmitContainer: false,\n status: undefined,\n childIds: []\n }\n },\n context.actionContext\n );\n };\n\n /**\n * GetModuleStateManager\n * Get module state manager by id.\n * @param id\n */\n private readonly getModuleStateManager = (id: string): IModuleStateManager => {\n const moduleState = this.get()[id];\n return {\n ...moduleState!,\n hasInitialized: this.validate(id, { hasInitialized: true }, true), // All has initialized is initialized\n hasError: this.validate(id, { hasError: true }), // Partial has error is error\n isReady: this.validate(id, { status: 'ready' }, true, true), // All ready is ready (exclued disabled and skipped)\n isUpdating: this.validate(id, { status: 'updating' }), // Partial updating is updating\n isPending: this.validate(id, { status: 'pending' }), // Partial pending is pending\n isSkipped: this.validate(id, { status: 'skipped' }, true, true), // All skipped is skipped (exclued disabled)\n isDisabled: this.validate(id, { status: 'disabled' }, true), // All disabled is disabled\n isCancelAllowed: this.validate(id, { isCancellable: true }, true, true), // Partial not allowed is not allowed\n shouldSubmitContainer: this.validate(id, { isSubmitContainer: true }), // Partial submit is submit.\n hasExternalSubmitGroup: this.hasExternalSubmitGroup(),\n hasModuleState: this.hasModuleState(id),\n setIsRequired: (value: boolean): void => {\n this.update(id, { isRequired: value });\n },\n setIsCancellable: (value: boolean): void => {\n this.update(id, { isCancellable: value });\n },\n setIsSubmitContainer: (value: boolean): void => {\n this.update(id, { isSubmitContainer: value });\n },\n setHasError: (value: boolean): void => {\n this.update(id, { hasError: value });\n },\n onReady: (): void => {\n this.update(id, { status: 'ready' });\n },\n onUpdating: (): void => {\n this.update(id, { status: 'updating' });\n },\n onPending: (): void => {\n this.update(id, { status: 'pending' });\n },\n onSkip: (): void => {\n this.update(id, { status: 'skipped' });\n },\n onDisable: (): void => {\n this.update(id, { status: 'disabled' });\n },\n getModule: (moduleId: string): IModuleStateManager => this.getModuleStateManager(moduleId),\n getModuleByTypeName: (typeName: string): IModuleStateManager => this.getModuleStateManagerByTypeName(typeName),\n init: (options?: Partial): void => {\n if (moduleState?.hasInitialized) {\n // State has been initialized\n return;\n }\n this.update(id, {\n hasInitialized: true,\n ...options\n });\n }\n };\n };\n\n /**\n * GetModuleStateManagerByTypeName\n * Get module state manager by type name.\n * @param typeName\n */\n private readonly getModuleStateManagerByTypeName = (typeName: string): IModuleStateManager => {\n const moduleStates = getModuleStates(this.props.context.actionContext);\n const moduleState = Object.values(moduleStates).find(_moduleState => _moduleState?.typeName === typeName);\n return this.getModuleStateManager((moduleState && moduleState.id) || '');\n };\n\n /**\n * Get\n * Get all module states.\n */\n private readonly get = (): IModuleStates => {\n return getModuleStates(this.props.context.actionContext);\n };\n\n /**\n * Update\n * Update module state.\n * @param id\n * @param value\n */\n private readonly update = (id: string, value: Partial): void => {\n // Console.log('withModuleState - update', id, value);\n const modules = this.get();\n if (!modules[id]) {\n this.props.telemetry.error(`withModuleState update() - Module state with id ${id} is not found.`);\n return;\n }\n modules[id] = {\n ...modules[id]!,\n ...value\n };\n };\n\n private readonly _validateLeaf = (id: string, source: Partial): boolean => {\n const modules = this.get();\n const module = modules[id];\n if (!module) {\n return false;\n }\n return isMatch(module, source);\n };\n\n private readonly _validateContainer = (\n id: string,\n source: Partial,\n allMatched?: boolean,\n skipSkippableItem?: boolean\n ): boolean => {\n const modules = this.get();\n const module = modules[id];\n if (!module) {\n // Module doesn't has module state\n return !!allMatched;\n }\n\n if (skipSkippableItem && (module.status === 'disabled' || module.status === 'skipped')) {\n // Skip disabled or skipped modules\n return !!allMatched;\n }\n\n // It is leaf module\n if (!module.childIds || module.childIds.length === 0) {\n return this._validateLeaf(id, source);\n }\n\n let childIds = module.childIds;\n\n if (this.props.context.app.config.shouldEnableSinglePaymentAuthorizationCheckout) {\n // For new checkout flow, we bypass the isReady check for payment section container to enable the place order button.\n childIds = childIds.filter(childId => !this._isPaymentSectionContainer(childId));\n }\n\n // It is container module\n const method = allMatched ? 'every' : 'some';\n return childIds[method](childId => this._validateContainer(childId, source, allMatched, skipSkippableItem));\n };\n\n /**\n * Check if it is a section container with payment module.\n * @param moduleId -- The id of the module.\n * @returns If it is a section container with payment module.\n */\n private readonly _isPaymentSectionContainer = (moduleId: string): boolean => {\n if (!moduleId.includes(sectionContainerModuleId)) {\n return false;\n }\n\n const modules = this.get();\n const module = modules[moduleId];\n\n if (module && ArrayExtensions.hasElements(module.childIds.filter(childId => childId.includes(paymentInstrumentModuleId)))) {\n return true;\n }\n\n return false;\n };\n\n /**\n * Validate\n * Validate current module and all its child module match the provided condition.\n * @param id\n * @param source\n * @param allMatched\n * @param skipSkippableItem\n */\n private readonly validate = (\n id: string,\n source: Partial,\n allMatched?: boolean,\n skipSkippableItem?: boolean\n ): boolean => {\n const modules = this.get();\n const module = modules[id];\n if (!module) {\n return false;\n }\n\n // It is leaf module\n if (!module.childIds || module.childIds.length === 0) {\n return this._validateLeaf(id, source);\n }\n\n // It is container module\n return this._validateContainer(id, source, allMatched, skipSkippableItem);\n };\n\n /**\n * HasExternalSubmitGroup\n * Module will use external submit group.\n */\n private readonly hasExternalSubmitGroup = (): boolean => {\n return !!this.props.enableControl;\n };\n\n /**\n * HasModuleState\n * Module is using module state manager.\n * @param id\n */\n private readonly hasModuleState = (id: string): boolean => {\n const modules = this.get();\n const module = modules[id];\n return !!module;\n };\n }\n\n return ModuleState;\n};\n\nexport default withModuleState;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Waiting } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\n/**\n * Payment waiting props.\n */\nexport interface IPaymentWaitingProps {\n message: string;\n className?: string;\n}\n\n/**\n * Payment waiting.\n * @param param0 - First in param.\n * @param param0.message - Message.\n * @param param0.className - ClassName.\n * @returns React node.\n */\nexport const WaitingComponent: React.FC = ({ message, className = 'ms-checkout-payment-instrument' }) => (\n

\n \n {message}\n
\n);\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { IModuleStateProps, EnabledPaymentsForOBO } from '@msdyn365-commerce-modules/checkout-utilities';\nimport { IModuleProps, INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\nimport classname from 'classnames';\n\nimport { reaction } from 'mobx';\nimport { ICheckoutExpressPaymentContainerData } from './checkout-express-payment-container.data';\nimport {\n ICheckoutExpressPaymentContainerProps,\n ICheckoutExpressPaymentContainerHeadingData\n} from './checkout-express-payment-container.props.autogenerated';\nimport { WaitingComponent } from '../../common/waiting';\n\n/**\n * ICheckoutExpressPaymentContainerModuleProps interface.\n */\nexport interface ICheckoutExpressPaymentContainerModuleProps\n extends ICheckoutExpressPaymentContainerProps,\n IModuleStateProps {}\n\nexport interface ICheckoutExpressPaymentContainerViewProps\n extends ICheckoutExpressPaymentContainerProps<{}>,\n ICheckoutExpressPaymentContainerState {\n checkoutPlainContainerProps: IModuleProps;\n items: React.ReactNode[];\n isReady?: boolean;\n waiting?: React.ReactNode;\n title?: React.ReactNode;\n headerProps: INodeProps;\n}\n\n/**\n * Checkout Express Payment Container State.\n */\nexport interface ICheckoutExpressPaymentContainerState {\n isReady?: boolean;\n shouldHideExpressPaymentContainer?: boolean;\n}\n\n/**\n *\n * CheckoutExpressPaymentContainer component\n * @extends {React.PureComponent>}\n */\n@observer\nexport class CheckoutExpressPaymentContainer extends React.PureComponent<\n ICheckoutExpressPaymentContainerProps,\n ICheckoutExpressPaymentContainerState\n> {\n private readonly moduleClassName: string = 'ms-checkout-express-section-container';\n\n public constructor(props: ICheckoutExpressPaymentContainerModuleProps) {\n super(props);\n this.state = {\n isReady: false,\n shouldHideExpressPaymentContainer: this.props.data.checkout.result?.shippingAddressFromExpressCheckout ? true : false\n };\n }\n\n public componentDidMount(): void {\n reaction(\n () => this.props.data.checkout.result?.isExpressPaymentModulesReady,\n () => {\n const items = this._getItems();\n if (items.length === 0) {\n this.props.context.telemetry.error('Checkout express payment container content is empty, module wont render');\n } else {\n let isReady = true;\n\n for (const item of items) {\n // @ts-ignore\n if (item.key.includes('checkout-express')) {\n // @ts-ignore\n const extensionPropertyKey = `is${item.props.config.paymentTenderType}ExpressModuleReady`;\n\n const isModuleReady =\n this.props.data.checkout.result?.isExpressPaymentModulesReady?.find(\n property => property.Key === extensionPropertyKey\n )?.Value?.BooleanValue ?? false;\n isReady = isReady && isModuleReady;\n }\n }\n this.setState({ isReady });\n }\n }\n );\n\n reaction(\n () => this.props.data.checkout.result?.isExpressCheckoutApplied,\n isExpressCheckoutApplied => {\n this.setState({ shouldHideExpressPaymentContainer: isExpressCheckoutApplied });\n }\n );\n }\n\n public render(): JSX.Element | null {\n const {\n config: { checkoutExpressPaymentContainerHeading },\n resources: { checkoutExpressPaymentSectionLoadingMessage },\n data: { checkout }\n } = this.props;\n\n if (!checkout.result || checkout.result?.isExpressCheckoutApplied || checkout.result?.isPaymentVerificationRedirection) {\n this.props.context.telemetry.information('Other payment is applied, checkout express payment container module wont render');\n return null;\n }\n\n if (this.props.context.request.user.isOBORequest && EnabledPaymentsForOBO.ExpressPayment === 0) {\n this.props.context.telemetry.information('isOBORequest is enabled, Checkout express payment container module wont render');\n return null;\n }\n\n const items = this._getItems();\n if (items.length === 0) {\n this.props.context.telemetry.error('Checkout express payment container content is empty, module wont render');\n return null;\n }\n\n const shouldHideExpressPaymentContainerClassName: string = this.state.shouldHideExpressPaymentContainer ? 'hide' : '';\n\n const moduleClassName = classname(\n 'ms-checkout-express-payment-container',\n this.props.config.className,\n shouldHideExpressPaymentContainerClassName\n );\n\n const viewProps: ICheckoutExpressPaymentContainerViewProps = {\n ...this.props,\n\n checkoutPlainContainerProps: {\n moduleProps: this.props,\n className: moduleClassName\n },\n items: items,\n isReady: this.state.isReady,\n waiting: ,\n title: checkoutExpressPaymentContainerHeading && this._renderMsdyn365Text(checkoutExpressPaymentContainerHeading),\n headerProps: { className: 'ms-checkout-express-payment-container__head' }\n };\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n private readonly _getItems = (): React.ReactNode[] => {\n const { slots } = this.props;\n return (slots && slots.primary && slots.primary.length && slots.primary) || [];\n };\n\n /**\n * Renders heading.\n * @param checkoutExpressPaymentContainerHeading - The checkout express container heading.\n * @returns React node.\n */\n private _renderMsdyn365Text(checkoutExpressPaymentContainerHeading: ICheckoutExpressPaymentContainerHeadingData): React.ReactNode {\n return (\n \n );\n }\n\n /**\n * Event handler for heading change event.\n * @param event - The content change event in heading element.\n * @returns The new heading value.\n */\n private _handleCheckoutExpressContainerHeadingChange = (event: Msdyn365.ContentEditableEvent) =>\n (this.props.config.checkoutExpressPaymentContainerHeading!.text = event.target.value);\n}\n\nexport default CheckoutExpressPaymentContainer;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ICheckoutExpressPaymentContainerViewProps } from './checkout-express-payment-container';\n\ninterface IContainerItemsComponent {\n isLoadingClassName: string;\n items: React.ReactNode[];\n}\n\nconst ContainerItemsComponent: React.FC = ({ isLoadingClassName, items }) => (\n
{items}
\n);\n\nconst CheckoutExpressPaymentContainerView: React.FC = ({\n checkoutPlainContainerProps,\n items,\n isReady,\n waiting,\n title,\n headerProps\n}) => {\n const isLoadingClassName: string = isReady ? 'showContainer' : 'notShowContainer';\n return (\n \n {title}\n {!isReady && waiting}\n \n \n );\n};\n\nexport default CheckoutExpressPaymentContainerView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IModuleStateManager, IModuleStateProps, withModuleState } from '@msdyn365-commerce-modules/checkout-utilities';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { IModuleProps, INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport classname from 'classnames';\nimport get from 'lodash/get';\nimport { computed, reaction } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { ICheckoutSectionContainerData } from './checkout-section-container.data';\nimport { ICheckoutSectionContainerProps } from './checkout-section-container.props.autogenerated';\nimport LoadingComponent from './components/loading';\n\n/**\n * ICheckoutSectionContainerModuleProps interface.\n */\nexport interface ICheckoutSectionContainerModuleProps\n extends ICheckoutSectionContainerProps,\n IModuleStateProps {\n enableControl: boolean;\n}\n\ninterface ICheckoutSectionContainerState {\n isCollapse?: boolean;\n}\n\nexport interface ICheckoutSectionContainerItem {\n id: string;\n loading?: React.ReactNode;\n itemProps: INodeProps;\n item: React.ReactNode;\n}\n\nexport interface ICheckoutSectionContainerViewProps extends ICheckoutSectionContainerProps<{}> {\n className: string;\n checkoutPlainContainerProps: IModuleProps;\n items: ICheckoutSectionContainerItem[];\n}\n\nconst paymentInstrumentModuleId = 'payment-instrument';\n\nconst zeroAmount = 0;\n\n/**\n *\n * CheckoutPlainContainer component.\n * @extends {React.Component>}\n */\n@observer\nexport class CheckoutPlainContainer extends React.Component {\n @computed public get amountDue(): number {\n const {\n data: { checkout }\n } = this.props;\n if (!checkout?.result) {\n return 0;\n }\n\n const checkoutResult = checkout.result;\n const cart = checkoutResult.checkoutCart?.cart;\n if (!cart || !cart.CartLines || !ArrayExtensions.hasElements(cart.CartLines)) {\n return 0;\n }\n\n return cart.TotalAmount ?? zeroAmount;\n }\n\n public constructor(props: ICheckoutSectionContainerModuleProps) {\n super(props);\n this.state = { isCollapse: false };\n }\n\n public componentDidMount(): void {\n const items = this.getItems();\n const childIds = items.map((item: React.ReactNode) => get(item, 'props.id'));\n const shouldEnableSinglePaymentAuthorizationCheckout: boolean =\n this.props.data.checkout.result?.shouldEnableSinglePaymentAuthorizationCheckout ?? false;\n\n this.props.moduleState.init({\n onEdit: this.onEdit,\n onCancel: shouldEnableSinglePaymentAuthorizationCheckout ? undefined : this.onCancel,\n onSubmit: shouldEnableSinglePaymentAuthorizationCheckout ? undefined : this.onSubmit,\n childIds\n });\n\n reaction(\n () => this.props.moduleState.isReady,\n () => {\n this.onContainerReady();\n }\n );\n\n reaction(\n () => this.props.moduleState.shouldSubmitContainer,\n () => {\n this.onSubmit();\n }\n );\n\n // Reaction to collapse the payment section for new checkout flow.\n reaction(\n () => this.props.data.checkout.result?.shouldCollapsePaymentSection,\n shouldCollapsePaymentSection => {\n const isPaymentSectionContainer = ArrayExtensions.hasElements(\n this.props.moduleState.childIds.filter(childId => childId.includes(paymentInstrumentModuleId))\n );\n\n if (shouldEnableSinglePaymentAuthorizationCheckout && isPaymentSectionContainer) {\n this.setState({ isCollapse: shouldCollapsePaymentSection });\n }\n }\n );\n\n // Reaction to submit section container for new checkout flow\n reaction(\n () => this.props.data.checkout.result?.shouldTriggerPaymentWithPlaceOrder,\n () => {\n const isPaymentSectionContainer = ArrayExtensions.hasElements(\n this.props.moduleState.childIds.filter(childId => childId.includes(paymentInstrumentModuleId))\n );\n\n if (shouldEnableSinglePaymentAuthorizationCheckout && isPaymentSectionContainer) {\n this.onSubmit();\n }\n }\n );\n\n // Reaction to set isPaymentSectionContainerReady for new checkout flow.\n reaction(\n () => this.props.moduleState.isReady,\n async isReady => {\n const isPaymentSectionContainer = ArrayExtensions.hasElements(\n this.props.moduleState.childIds.filter(childId => childId.includes(paymentInstrumentModuleId))\n );\n\n if (shouldEnableSinglePaymentAuthorizationCheckout && isPaymentSectionContainer && this.amountDue > zeroAmount) {\n await this.props.data.checkout.result?.updateIsPaymentSectionContainerReady({\n newIsPaymentSectionContainerReady: isReady\n });\n }\n }\n );\n\n // Reaction to set isPaymentSectionContainerHasError for new checkout flow.\n reaction(\n () => this.props.moduleState.hasError,\n async hasError => {\n const isPaymentSectionContainer = ArrayExtensions.hasElements(\n this.props.moduleState.childIds.filter(childId => childId.includes(paymentInstrumentModuleId))\n );\n\n if (shouldEnableSinglePaymentAuthorizationCheckout && isPaymentSectionContainer) {\n await this.props.data.checkout.result?.updateIsPaymentSectionContainerHasError({\n newIsPaymentSectionContainerHasError: hasError\n });\n }\n }\n );\n\n reaction(\n () => this.props.data.checkout.result?.isCheckoutCallFailed,\n async () => {\n const isPaymentSectionContainer = ArrayExtensions.hasElements(\n this.props.moduleState.childIds.filter(childId => childId.includes(paymentInstrumentModuleId))\n );\n\n if (isPaymentSectionContainer && this.props.data.checkout.result?.isCheckoutCallFailed) {\n this.onEdit();\n await this.props.data.checkout.result.updateIsCheckoutCallFailed({ newIsCheckoutCallFailed: true });\n }\n }\n );\n }\n\n public componentDidUpdate(): void {\n if (!this.props.moduleState.hasExternalSubmitGroup) {\n return;\n }\n\n /**\n * Review all modules to updating status if one of the modules has error.\n */\n const { childIds, hasError, getModule } = this.props.moduleState;\n const hasReadyOrSkippedItems = childIds.some((childId: string) => {\n const state = getModule(childId);\n return !!state && (state.isReady || state.isSkipped);\n });\n if (hasReadyOrSkippedItems && hasError) {\n this.onEdit();\n }\n }\n\n public shouldComponentUpdate(nextProps: ICheckoutSectionContainerModuleProps, nextState: ICheckoutSectionContainerState): boolean {\n if (this.state === nextState && this.props.data === nextProps.data) {\n return false;\n }\n return true;\n }\n\n public render(): JSX.Element | null {\n const {\n enableControl,\n moduleState,\n config: { width }\n } = this.props;\n\n const items = this.getItems();\n if (items.length === 0) {\n this.props.context.telemetry.error('Checkout section content is empty, module wont render');\n return null;\n }\n\n const moduleClassName = classname(\n 'ms-checkout-section-container',\n {\n 'has-initialized': moduleState.hasInitialized,\n 'is-ready': moduleState.isReady,\n 'is-updating': !moduleState.isReady,\n container: width === 'container',\n 'col-12 fullwidth': width === 'fluid'\n },\n this.props.config.className\n );\n\n const viewProps: ICheckoutSectionContainerViewProps = {\n ...this.props,\n\n className: moduleClassName,\n checkoutPlainContainerProps: {\n moduleProps: this.props,\n className: moduleClassName\n },\n items: items.map((item: React.ReactNode) => {\n const childId = get(item, 'props.id');\n const state = moduleState.getModule(childId);\n\n // Modules has not completed initializing or it's disable\n const hidden =\n this.state.isCollapse || (state.hasModuleState && (!state.hasInitialized || state.isDisabled || state.isSkipped));\n return {\n id: childId,\n loading: state.hasModuleState && !state.hasInitialized && ,\n itemProps: {\n 'data-type-name': state.typeName,\n className: classname('ms-checkout-section-container__item', {\n hidden,\n initialized: state.hasInitialized,\n disabled: state.isDisabled,\n skipped: state.isSkipped,\n ready: state.isReady,\n updating: state.isUpdating,\n pending: state.isPending\n })\n },\n item: React.cloneElement(item as React.ReactElement, { enableControl })\n };\n })\n };\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n private readonly getItems = (): React.ReactNode[] => {\n const { slots } = this.props;\n return (slots && slots.primary && slots.primary.length && slots.primary) || [];\n };\n\n private readonly getActiveChildModuleStates = (): IModuleStateManager[] => {\n const { childIds, getModule } = this.props.moduleState;\n return childIds\n .map(getModule)\n .filter((state): state is IModuleStateManager => !!state && !state.isDisabled && state.hasModuleState);\n };\n\n private readonly clearError = (): void => {\n // Clear error before action, otherwise it will rise conflict;\n this.getActiveChildModuleStates().forEach(state => {\n state.hasError && state.setHasError(false);\n });\n };\n\n private readonly onSubmit = (): void => {\n const isPaymentSectionContainer = ArrayExtensions.hasElements(\n this.props.moduleState.childIds.filter(childId => childId.includes(paymentInstrumentModuleId))\n );\n\n this.props.telemetry.information('Section container onSubmit is called.');\n\n this.clearError();\n this.getActiveChildModuleStates().forEach(state => {\n !state.isReady && state.onSubmit && state.onSubmit();\n });\n\n // Handle when the amount due is zero\n if (\n this.props.data.checkout.result?.shouldEnableSinglePaymentAuthorizationCheckout &&\n isPaymentSectionContainer &&\n this.amountDue === zeroAmount\n ) {\n this.props.data.checkout.result?.updateIsPaymentSectionContainerReady({\n newIsPaymentSectionContainerReady: true\n });\n }\n };\n\n private readonly onCancel = (): void => {\n this.props.telemetry.information('Section container onCancel is called.');\n\n this.clearError();\n this.getActiveChildModuleStates().forEach(state => {\n !state.isReady && state.onCancel && state.onCancel();\n });\n };\n\n private readonly onEdit = (): void => {\n this.props.telemetry.information('Section container onEdit is called.');\n\n this.getActiveChildModuleStates().forEach(state => {\n (state.isReady || state.isSkipped) && state.onEdit && state.onEdit();\n });\n };\n\n private readonly onContainerReady = (): void => {\n this.props.telemetry.information('Section container onContainerReady is called.');\n\n this.getActiveChildModuleStates().forEach(state => {\n state.isReady && state.onContainerReady && state.onContainerReady();\n });\n };\n}\n\nexport default withModuleState(CheckoutPlainContainer);\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ICheckoutSectionContainerItem, ICheckoutSectionContainerViewProps } from './checkout-section-container';\n\nconst ItemComponent: React.FC = ({ loading, itemProps, item }) => (\n <>\n {loading}\n {item}\n \n);\n\nconst CheckoutSectionContainerView: React.FC = ({ checkoutPlainContainerProps, items }) => (\n \n {items.map(item => (\n \n ))}\n \n);\n\nexport default CheckoutSectionContainerView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\nconst Loading: React.FC = () =>
;\n\nexport default Loading;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent, onTelemetryClick } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ILinksData } from '../interactive-feature-item.props.autogenerated';\n\n/**\n * Interactive Feature links.\n */\nexport interface IInteractiveFeatureLinks {\n links: ILinksData[];\n requestContext: Msdyn365.IRequestContext;\n telemetryContent: ITelemetryContent;\n onTextChange?(index: number): (event: Msdyn365.ContentEditableEvent) => void;\n}\n\n/**\n *\n * IInteractiveFeatureLinks component.\n * @extends {React.PureComponent}\n */\nexport class InteractiveFeatureCollectionLinks extends React.PureComponent {\n public render(): JSX.Element {\n const editableLinks = this._mapEditableLinks(this.props.links);\n return (\n
\n {editableLinks && ArrayExtensions.hasElements(editableLinks) ? (\n \n ) : null}\n
\n );\n }\n\n /**\n * IInteractiveFeatureLinks component.\n * @param linkdata - Link data.\n * @returns Editable links.\n */\n private readonly _mapEditableLinks = (linkdata?: ILinksData[]): Msdyn365.ILinksData[] | null => {\n if (!linkdata || !ArrayExtensions.hasElements(linkdata)) {\n return null;\n }\n const editableLinks: Msdyn365.ILinksData[] = [];\n for (const link of linkdata) {\n // Construct telemetry attribute to render\n const payLoad = getPayloadObject('click', this.props.telemetryContent, '', '');\n const linkText = link.linkText ? link.linkText : '';\n payLoad.contentAction.etext = linkText;\n const attributes = getTelemetryAttributes(this.props.telemetryContent, payLoad);\n const editableLink: Msdyn365.ILinksData = {\n ariaLabel: link.ariaLabel,\n className: 'ms-interactive-feature-collection__link',\n linkText: link.linkText,\n linkUrl: link.linkUrl.destinationUrl,\n openInNewTab: link.openInNewTab,\n role: 'button',\n additionalProperties: attributes,\n onClick: onTelemetryClick(this.props.telemetryContent, payLoad, linkText)\n };\n editableLinks.push(editableLink);\n }\n\n return editableLinks;\n };\n}\nexport default InteractiveFeatureCollectionLinks;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { ArrayExtensions, StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { getTelemetryObject, IModuleProps, INodeProps, ITelemetryContent, NodeTag } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { InteractiveFeatureCollectionLinks } from './components';\nimport { IHeadingData, IInteractiveFeatureItemProps } from './interactive-feature-item.props.autogenerated';\n\n/**\n * Interactive Feature Item view props.\n */\nexport interface IInteractiveFeatureItemViewProps extends IInteractiveFeatureItemProps<{}> {\n title: React.ReactNode;\n paragraph: React.ReactNode;\n image: React.ReactNode;\n links: React.ReactNode;\n featureItem: IModuleProps;\n isMosaic: boolean;\n indexItem?: number;\n itemCounter?: number;\n\n interactiveFeatureCollectionCarouselContainer: INodeProps;\n interactiveFeatureCollectionCarouselImage: INodeProps;\n interactiveFeatureCollectionCarouselContent: INodeProps;\n\n interactiveFeatureCollectionMosaicContainer: INodeProps;\n interactiveFeatureCollectionMosaicImage: INodeProps;\n interactiveFeatureCollectionMosaicDetails: INodeProps;\n}\n\n/**\n * Interactive Feature Item Extented props.\n */\nexport interface IInteractiveFeatureItemExtentedProps extends IInteractiveFeatureItemProps<{}> {\n isMosaic?: boolean;\n indexItem?: number;\n itemCounter?: number;\n}\n\n/**\n *\n * InteractiveFeatureItem component.\n * @extends {React.PureComponent}\n */\nexport class InteractiveFeatureItem extends React.PureComponent {\n private readonly _telemetryContent: ITelemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n\n public constructor(props: IInteractiveFeatureItemProps<{}>) {\n super(props);\n }\n\n public render(): JSX.Element | null {\n const { indexItem, itemCounter, isMosaic } = this.props;\n const { heading, paragraph, image, links } = this.props.config;\n const featureItemLinks = links && ArrayExtensions.hasElements(links) && (\n \n );\n\n const viewProps = {\n ...this.props,\n indexItem,\n itemCounter,\n isMosaic: isMosaic ? isMosaic : false,\n title: this._createHeading(heading),\n paragraph: this._createParagraph(paragraph),\n image: this._renderImage(image),\n links: featureItemLinks,\n featureItem: {\n moduleProps: this.props,\n className: ''\n },\n interactiveFeatureCollectionCarouselContainer: {\n tag: 'div' as NodeTag,\n className: 'ms-interactive-feature-collection-carousel__container'\n },\n interactiveFeatureCollectionCarouselImage: {\n tag: 'div' as NodeTag,\n className: 'ms-interactive-feature-collection-carousel__image'\n },\n interactiveFeatureCollectionCarouselContent: {\n tag: 'div' as NodeTag,\n className: 'ms-interactive-feature-collection-carousel__heading'\n },\n interactiveFeatureCollectionMosaicContainer: {\n tag: 'div' as NodeTag,\n className: 'ms-interactive-feature-collection-mosaic',\n 'aria-label': heading?.text,\n tabindex: '0',\n role: 'group'\n },\n interactiveFeatureCollectionMosaicImage: {\n className: 'ms-interactive-feature-collection-mosaic__image'\n },\n interactiveFeatureCollectionMosaicDetails: {\n className: 'ms-interactive-feature-collection-mosaic__details'\n }\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n /**\n * Handles heading content change event.\n * @param event - Content editable event.\n */\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent): void => {\n this.props.config.heading!.text = event.target.value;\n };\n\n /**\n * Handles paragraph content change event.\n * @param event - Content editable event.\n */\n public handleParagraphChange = (event: Msdyn365.ContentEditableEvent): void => {\n this.props.config.paragraph = event.target.value;\n };\n\n /**\n * Handles paragraph content change event.\n * @param linkIndex - Index of link in linkarray.\n * @returns Void.\n */\n public handleLinkTextChange = (linkIndex: number) => (event: Msdyn365.ContentEditableEvent): void => {\n if (this.props.config.links?.[Number(linkIndex)]) {\n this.props.config.links[Number(linkIndex)].linkText = event.target.value;\n }\n };\n\n private _createParagraph(text?: Msdyn365.RichText): React.ReactNode | null {\n if (!text) {\n return null;\n }\n return (\n \n );\n }\n\n private _createHeading(heading?: IHeadingData): React.ReactNode | null {\n if (!heading) {\n return null;\n }\n if (StringExtensions.isNullOrWhitespace(heading.text)) {\n return null;\n }\n\n return (\n \n );\n }\n\n private _renderImage(item?: Msdyn365.IImageData, isAriaHiddenAttribute?: boolean): React.ReactNode | null {\n // Even if image.src is null, we render the Image component to render the fallback SVG\n const defaultImageSettings: Msdyn365.IImageSettings = {\n viewports: {\n xs: { q: 'w=328&h=459&m=6', w: 328, h: 459 },\n sm: { q: 'w=348&h=487&m=6', w: 348, h: 487 },\n md: { q: 'w=650&h=366&m=6', w: 650, h: 366 },\n lg: { q: 'w=650&h=366&m=6', w: 650, h: 366 },\n xl: { q: 'w=650&h=366&m=6', w: 650, h: 366 }\n },\n lazyload: true\n };\n const verifiedImageSettings = item?.imageSettings?.viewports ? item.imageSettings : defaultImageSettings;\n return (\n \n );\n }\n}\n\nexport default InteractiveFeatureItem;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { IInteractiveFeatureItemViewProps } from './interactive-feature-item';\n\n/**\n * Enumerator used to make some calculations to set the proper classnames\n * using modular calculations to see if they are in a right or left column or on first or last row.\n */\nenum MagicNumber {\n modularDivisor = 4,\n caseNumberZero = 0,\n caseNumberOne = 1,\n caseNumberTwo = 2\n}\n\n/**\n * Feature Item View.\n * @param thisProps - Feature Item view props.\n * @param indexItem - Feature Item view props.\n * @param itemCounter - Feature Item view props.\n * @returns Feature item View.\n * @extends {} InteractiveFeatureItem\n */\nconst renderMosaic = (thisProps: IInteractiveFeatureItemViewProps, indexItem?: number, itemCounter?: number): JSX.Element | null => {\n const {\n title,\n paragraph,\n image,\n links,\n interactiveFeatureCollectionMosaicContainer,\n interactiveFeatureCollectionMosaicImage,\n interactiveFeatureCollectionMosaicDetails\n } = thisProps;\n const indexAux = indexItem ? indexItem + MagicNumber.caseNumberOne : MagicNumber.caseNumberOne;\n const itemCounterAux = itemCounter ? itemCounter : MagicNumber.caseNumberZero;\n const modularAux = indexAux % MagicNumber.modularDivisor;\n const firstRow = indexAux <= MagicNumber.caseNumberTwo ? 'firstRow' : '';\n const lastRow =\n itemCounterAux && (indexAux === itemCounterAux || indexAux === itemCounterAux - MagicNumber.caseNumberOne) ? 'lastRow' : '';\n const onCornerRight = modularAux === MagicNumber.caseNumberZero ? 'item-corner-right' : '';\n const onCornerLeft = modularAux === MagicNumber.caseNumberOne ? 'item-corner-left' : '';\n const containerClasses = classnames('ms-interactive-feature-collection-mosaic', onCornerLeft, onCornerRight, firstRow, lastRow);\n\n return (\n \n {image}\n \n {title}\n {paragraph}\n {links}\n \n \n );\n};\n\n/**\n * Feature Item View.\n * @param thisProps - Feature Item view props.\n * @returns Feature item View.\n * @extends {} InteractiveFeatureItem\n */ const renderCarousel = (thisProps: IInteractiveFeatureItemViewProps): JSX.Element | null => {\n const {\n title,\n paragraph,\n image,\n links,\n interactiveFeatureCollectionCarouselContainer,\n interactiveFeatureCollectionCarouselImage,\n interactiveFeatureCollectionCarouselContent\n } = thisProps;\n return (\n \n {image}\n \n {title}\n {paragraph}\n {links}\n \n \n );\n};\n\n/**\n * Feature Item View.\n * @param props - Feature Item view props.\n * @returns Feature item View.\n * @extends {} InteractiveFeatureItem\n */\nexport const FeatureItemViewComponent: React.FC = props => {\n const { isMosaic, featureItem, indexItem, itemCounter } = props;\n if (isMosaic) {\n return <>{renderMosaic(props, indexItem, itemCounter)};\n }\n return {renderCarousel(props)};\n};\n\nexport default FeatureItemViewComponent;\n"],"names":["AutoSuggest","constructor","telemetry","autoSuggestOptions","BingMapsApiKey","countryCode","defaultLanguageId","excludedAddressFields","attachAutoSuggest","inputId","containerId","selectedSuggestionCallback","this","autoSuggestManager","Microsoft","Maps","loadModule","callback","_document$querySelect","options","_objectSpread","AutosuggestManager","attachAutosuggest","document","querySelector","setAttribute","setTimeout","_document$querySelect2","errorCallback","debug","credentials","bingMapsApiKey","changeAutoSuggestionCountryCode","setOptions","disposeAutoSuggest","_this$autoSuggestMana","_this$autoSuggestMana2","detachAutosuggest","dispose","undefined","_loadMapAPI","async","storeSelectorStateManager","loadMapApi","key","lang","market","GetStateProvincesInput","countryRegionId","apiSettings","getCacheKey","buildCacheKey","getCacheObjectType","dataCacheType","getStateProvinceAction","input","ctx","getStateProvincesAsync","callerContext","queryResultSettings","createObservableDataAction","action","AddressCommon","context","resources","getDefaultCountryRegionId","countryRegions","marketISOCode","currentCountryRegion","find","countryRegion","ISOCode","CountryRegionId","parseRetailException","errorTitle","addressErrorMessageTitle","errorMessage","addressGenericErrorMessage","isAuthenticatedFlow","request","user","isAuthenticated","getStateProvinces","response","actionContext","error","Promise","resolve","isEmpty","address","ThreeLetterISORegionName","City","addCustomerAddress","submitCustomerAddress","addAddress","updateCustomerAddress","updateAddress","updateCustomerPrimaryAddress","updatePrimaryAddress","addressAction","AddressTypeValue","AddressManagementInput","execAddressAction","addresses","length","currentAddress","newAddress","Name","Phone","State","Street","ZipCode","RecordId","customerAddresses","AddressItemDisplayType","AddressValidationRuleType","AddressItemType","AddressOperation","AddressType","AddressFormat","countryRegionsInfo","addressMetaData","addressPurposes","getPrefilledAddressDropdownData","stateDefaultSelectionText","stateProvinceInfo","defaultStateText","value","dropdownData","getCountryFormat","getStateFormat","unshift","getAddressTypeFormat","getTwoLetterISORegionName","_getCountryRegionInfo","validateAddressFormat","validationError","propertyName","validationtor","isValid","getAddressFormat","forEach","addressFormatItem","name","_inputValidation","getTranformedAddress","result","postalCode","selectedState","state","StateName","adminDistrict","StateId","addressLine","locality","district","DistrictName","CountyName","FullAddress","formattedAddress","_validateRegEx","validationRule","regEx","RegExp","test","get","countryRegionInfo","_getAddressDisplayFormat","map","ShortName","addressPurpose","set","validationRules","message","toLowerCase","addressDisplayItem","AddressFormatLines","AddressTypeItem","_extendAddressDisplayFormat","push","nameDisplayItem","formatLine","AddressComponentNameValue","addressItem","getItemFormat","isNewLine","NewLine","phoneDisplayItem","isPrimaryDisplayItem","IsPrimary","type","AddressMetaData","excluded","required","metaData","requiredFieldRegEx","resourcesPrefix","maxLength","excludedTypes","requiredFields","_init","id","item","_addItem","Input","County","Dropdown","District","StreetNumber","BuildingCompliment","Postbox","House_RU","Flat_RU","CountryOKSMCode_RU","Checkbox","displayType","includes","nameKey","replace","_validationRules","isRequired","rule","Required","optionalString","label","ruleType","Object","keys","itemType","_validationRule","_ref","React","className","role","text","ariaLabel","disabled","telemetryContent","onClick","payLoad","getPayloadObject","attributes","getTelemetryAttributes","assign","isChecked","additionalAddributes","autoFocus","onChange","checked","displayData","getDropdownItem","selectedValue","isSelected","title","htmlFor","getRequriedAttribute","getAddessItems","selectedAddress","props","addressFormat","addressType","dropdownDisplayData","defaultCountryRegionId","defaultAddressType","onInputChange","onDropdownChange","index","elementId","classname","AddressInputComponent","AdressCheckboxComponent","AdressDropdownComponent","AddressItem","AddressLabelComponent","alert","AddressAlertComponent","isShowLabel","labelText","mainClass","AddressShow","AddressDetail","items","addressTypeValue","toString","description","AddressDetailItemComponent","getInput","onAddressOptionChange","ichecked","additionalAttributes","getAddressSelectItems","SelectItem","showItems","CheckoutShippingAddress","_data$featureState","super","addressListSelectedAddress","multiplePickupStoreSwitchName","retailMultiplePickUpOptionEnabled","_renderAddOrUpdateAddress","currentOperation","Add","addressCommon","editAddressHeading","addAddressHeading","hasError","onCancel","onSave","hasExternalSubmitGroup","isUpdating","addressActionResponse","heading","AddressForm","Heading","isShowSaveButton","saveButton","AddressButtonComponent","addressSaveButtonText","addressSaveButtonAriaLabel","isShowCancelButton","cancelButton","addressCancelButtonText","addressCancelButtonAriaLabel","AddressError","AddressErrorTitleComponent","AddressErrorMessageComponent","AddressAddUpdate","Shipping","addUpdateAddress","addressStateDefaultSelectionText","_onAddressAddUpdateInputChange","_onAddressAddUpdateDropdownChange","moduleState","onSubmit","_resetView","_renderSelectAddress","onAddAddress","SelectAddress","addButton","addressAddButtonText","addressAddButtonAriaLabel","AddressSelect","_onAddressOptionChange","_goToAddAddress","_onSelectAddress","_attachMapAutoSuggest","data","_this$autoSuggest","isMapApiLoaded","autoSuggest","_onSuggestionSelected","_clearAddressFields","format","_this$autoSuggest2","_clearValidation","event","addressRecordId","currentTarget","onAddressAddUpdate","target","_onCountryChange","_onAddressAddUpdateSubmit","Update","_updateModuleState","then","_onAddOrUpdateSuccess","_this$autoSuggest3","twoLetterISORegionName","_getAddressFormatExcludeList","config","addressFormatExcludeList","showAddressType","_getStateProvinces","some","_getDefaultAddress","_initModuleState","init","status","_canShip","onEdit","defaultAddress","_getShippingAddressFromCartLines","_updateCurrentOperation","Show","_setShippingAddress","List","shippingAddress","channelDeliveryOptionConfig","pickupDeliveryModeCode","channel","PickupDeliveryModeCode","emailDeliveryModeCode","EmailDeliveryModeCode","cartLines","checkout","checkoutCart","cart","CartLines","filter","cartLine","_channelDeliveryOptio","DeliveryMode","PickupDeliveryModeCodes","deliveryMode","ShippingAddress","_checkout$result","_checkout$result2","hasInvoiceLine","_channelDeliveryOptio2","_setDefaultCountryRegionId","newShippingAddress","TwoLetterISORegionName","updateShippingAddress","operation","onReady","onPending","onUpdating","countryStates","featureState","feature","IsEnabled","getTelemetryObject","telemetryPageName","friendlyName","requestContext","autoSuggestionEnabled","reaction","BingMapsEnabled","_this$autoSuggest4","ChannelCountryRegionISOCode","DefaultLanguageId","_this$props$data$stor","_this$autoSuggest5","_this$props$data$stor2","_this$props$data$stor3","_this$autoSuggest6","render","renderView","viewState","isShowAddress","isShowAddresList","isShowAddOrUpdateAddress","moduleProps","classnames","showAddress","_renderShowAddress","showAddressSelect","showAddOrUpdateAddress","__decorate","observable","computed","withModuleState","observer","Node","_ref2","_ref3","_other$moduleProps","_other$moduleProps2","_other$moduleProps3","_other$moduleProps4","_document","other","_objectWithoutProperties","_excluded","localeString","locale","sitePath","currency","Currency","countriesAvail","enGB","autocomplete","select","it","enUS","eu","nativeInputValueSetter","getOwnPropertyDescriptor","window","HTMLInputElement","prototype","populateFormElements","addressComponent","formMap","types","getElementById","googleComponent","elmnt","is_convert_a2_to_a3","i","eValue","convert_a2_to_a3","selectItemByValue","short_name","Event","bubbles","dispatchEvent","formValue","long_name","call","eCustom","phoneValidation","_addressForm$closest","addressForm","getElementsByClassName","saveAddressButton","closest","county","countyCtn","countyAlert","onkeyup","classList","remove","textContent","onclick","e","add","elements","querySelectorAll","fieldInALL","element","stopPropagation","googleComponents","autocompleteFormField","google","maps","places","Autocomplete","componentRestrictions","country","startTypingYourAddress","clearInstanceListeners","addListener","place","getPlace","addressComponents","address_components","gMapsAutocomplete","o","optionV","countrySelect","stateSelect","Boolean","checkPhone","phone","phoneCtn","phoneAlert","pattern","pattern2","match","addressPhoneRequiredErrorMessage","removeAttribute","Module","AF","AX","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BA","BW","BV","BR","IO","BN","BG","BF","BI","KH","CM","CA","CV","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","CI","HR","CU","CY","CZ","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MK","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","AN","NC","NZ","NI","NE","NG","NU","NF","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RE","RO","RU","RW","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SK","SI","SB","SO","ZA","GS","ES","LK","SD","SR","SJ","SZ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TR","TM","TC","TV","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW","AddressList","isShowList","Item","isShowPrimaryButton","primaryButton","editButton","removeButton","Error","isShowError","AddressLists","ListAddress","isShowEmptyListMessage","emptyListMessage","primaryAddressList","otherAddressList","_ref4","hasAddressError","setHasAddressError","optionDEF","parentNode","updatedCount","location","reload","addressErrorMessage","AccountAddressManagement","showAddressList","RequestsTableColumnHeader","getUserName","StringExtensions","isNullOrEmpty","UserFirstName","UserLastName","b2bRequestsNameDisplay","formatDate","date","cultureFormatter","year","month","day","getDetails","_requestDetails$Invoi","Details","requestDetails","accountStatementStartDateTime","AccountStatementStartDateTime","accountStatementEndDateTime","AccountStatementEndDateTime","invoiceId","InvoiceId","TypeValue","b2bRequestsAccountStatementDetails","b2bRequestsInvoiceCopyDetails","getDisplayFriendlyTypeValue","typeValue","b2bRequestsTypeCreateProspect","b2bRequestsTypeAddUser","b2bRequestsTypeDeleteUser","b2bRequestsTypeEditUser","b2bRequestsTypeRequestAccountStatement","b2bRequestsTypeRequestInvoiceCopy","b2bRequestsTypeUnknown","getDisplayFriendlyStatusValue","statusValue","b2bRequestsStatusProcessed","b2bRequestsStatusError","b2bRequestsStatusRequested","createTableProps","tableProps","_context$request$quer","tableData","operationRequests","ArrayExtensions","hasElements","_request$TypeValue","_request$StatusValue","row","b2bRequestsTypeColumn","TableDataType","Text","b2bRequestsRequestDateColumn","CreatedDateTime","b2bRequestsDescriptionColumn","b2bRequestsUserColumn","b2bRequestsStatusColumn","StatusValue","createTableItems","headings","isMobile","mobileExcludedColumns","sortable","columnSortAriaLabel","rows","editLinkText","deleteLinkText","viewLinkText","enableToModify","actionLinkText","showCheckBoxes","isSortable","showPagination","minifyActions","excludedColumns","paginationProperty","skipCount","query","skip","isNaN","Number","parseInt","itemPerPage","prevText","b2bRequestsPreviousText","nextText","b2bRequestsNextText","paginationText","url","reqContext","MsDyn365","isBrowser","URL","href","requestUrl","isSingleSelectOnly","actions","onDelete","onView","businessUserSelectCheckBoxAriaLabelText","sortByAscending","sortByDescending","B2bRequestsTable","Table","B2bRequestsStatus","renderHeader","headingData","_this$props$data$oper","_this$props$data$oper2","itemCount","tag","getItemNumberDisplayString","_retrieveExcludedColumns","renderTable","b2bRequestsNumberOfItemsSingular","b2bRequestsNumberOfItems","variant","VariantType","Viewport","isChannelTypeB2B","viewProps","b2bRequestsStatus","table","CheckoutStateInput","_this","CheckoutState","inputData","_giftCards","_giftCardExtends","_loyaltyAmount","_guestCheckoutEmail","_isTermsAndConditionAccepted","_customerAccountAmount","defineProperty","_tokenizedPaymentCard","_tenderLine","_billingAddress","_shippingAddress","_cardPrefix","_loyaltyCardNumber","updateTokenizedPaymentCard","newTokenizedPaymentCard","updateTenderLine","newTenderLine","updateBillingAddress","newBillingAddress","updateCardPrefix","newCardPrefix","removeGiftCard","giftCardNumber","giftCard","Id","removeGiftCardExtend","addGiftCard","__spreadArrays","addGiftCardExtend","updateLoyaltyCardNumber","newLoyaltyCardNumber","updateLoyaltyAmount","newAmount","updateGuestCheckoutEmail","newGuestCheckoutEmail","updateTermsAndConditionsAcceptance","newIsTermsAndConditionAccepted","updateCustomerAccountAmount","EnabledPaymentsForOBO","ModuleStatesCacheKey","getModuleStates","cacheKey","moduleStates","update","updateModuleStates","WrappedComponent","_super","ModuleState","initializeState","_b","typeName","states","__assign","_a","hasInitialized","isCancellable","isSubmitContainer","childIds","getModuleStateManager","validate","isReady","isPending","isSkipped","isDisabled","isCancelAllowed","shouldSubmitContainer","hasModuleState","setIsRequired","setIsCancellable","setIsSubmitContainer","setHasError","onSkip","onDisable","getModule","moduleId","getModuleByTypeName","getModuleStateManagerByTypeName","values","_moduleState","modules","_validateLeaf","source","module","isMatch","_validateContainer","allMatched","skipSkippableItem","app","shouldEnableSinglePaymentAuthorizationCheckout","childId","_isPaymentSectionContainer","enableControl","__extends","shouldComponentUpdate","nextProps","WaitingComponent","Waiting","CheckoutExpressPaymentContainer","_this$props$data$chec","moduleClassName","_getItems","slots","primary","_handleCheckoutExpressContainerHeadingChange","checkoutExpressPaymentContainerHeading","shouldHideExpressPaymentContainer","shippingAddressFromExpressCheckout","componentDidMount","_this$props$data$chec2","isExpressPaymentModulesReady","_this$props$data$chec3","_this$props$data$chec4","extensionPropertyKey","paymentTenderType","isModuleReady","property","Key","Value","BooleanValue","setState","_this$props$data$chec5","isExpressCheckoutApplied","checkoutExpressPaymentSectionLoadingMessage","isPaymentVerificationRedirection","information","isOBORequest","ExpressPayment","shouldHideExpressPaymentContainerClassName","checkoutPlainContainerProps","waiting","_renderMsdyn365Text","headerProps","Msdyn365","editProps","ContainerItemsComponent","isLoadingClassName","paymentInstrumentModuleId","CheckoutPlainContainer","getItems","getActiveChildModuleStates","clearError","isPaymentSectionContainer","amountDue","updateIsPaymentSectionContainerReady","newIsPaymentSectionContainerReady","onContainerReady","isCollapse","_checkoutResult$check","_cart$TotalAmount","TotalAmount","shouldCollapsePaymentSection","_this$props$data$chec6","shouldTriggerPaymentWithPlaceOrder","_this$props$data$chec7","_this$props$data$chec8","updateIsPaymentSectionContainerHasError","newIsPaymentSectionContainerHasError","_this$props$data$chec9","isCheckoutCallFailed","_this$props$data$chec10","updateIsCheckoutCallFailed","newIsCheckoutCallFailed","componentDidUpdate","nextState","width","container","hidden","loading","LoadingComponent","itemProps","initialized","skipped","ready","updating","pending","ItemComponent","Loading","InteractiveFeatureCollectionLinks","_mapEditableLinks","linkdata","editableLinks","link","linkText","contentAction","etext","editableLink","linkUrl","destinationUrl","openInNewTab","additionalProperties","onTelemetryClick","links","onTextChange","InteractiveFeatureItem","_telemetryContent","handleHeadingChange","handleParagraphChange","paragraph","handleLinkTextChange","linkIndex","_this$props$config$li","indexItem","itemCounter","isMosaic","image","featureItemLinks","_createHeading","_createParagraph","_renderImage","featureItem","interactiveFeatureCollectionCarouselContainer","interactiveFeatureCollectionCarouselImage","interactiveFeatureCollectionCarouselContent","interactiveFeatureCollectionMosaicContainer","tabindex","interactiveFeatureCollectionMosaicImage","interactiveFeatureCollectionMosaicDetails","_heading$tag","isNullOrWhitespace","isAriaHiddenAttribute","_item$imageSettings","_this$props$config$im","verifiedImageSettings","imageSettings","viewports","xs","q","w","h","sm","md","lg","xl","lazyload","gridSettings","loadFailureBehavior","moduleType","imagePropertyName","MagicNumber","FeatureItemViewComponent","renderMosaic","thisProps","indexAux","caseNumberOne","itemCounterAux","caseNumberZero","modularAux","modularDivisor","firstRow","caseNumberTwo","lastRow","onCornerRight","onCornerLeft","containerClasses","renderCarousel"],"sourceRoot":""}