{"version":3,"file":"805.chunk.js","mappings":"kPASO,MAAMA,EAAW,wBCJXC,EAAa,IAAIC,EAAAA,EDKF,6BCLuB,CAAEC,SDM5B,aCJZC,GAAWC,EAAAA,EAAAA,IAAeL,GAC1BM,GAAUC,EAAAA,EAAAA,IAAcP,GCoBxBQ,EAAoBC,IAC/B,MAAMC,GAAeC,EAAAA,EAAAA,GAAsCF,EAAQ,CAAC,kBAAmB,eAAgB,WAGvG,OAFAL,EAAS,uBAAwBM,GAE1BA,CAAY,EChCRE,EAA8B,wBAcpC,SAASC,IAGd,GADsBC,QAAQC,SAASC,eAAeJ,IAEpD,OAAO,EAYT,IACE,MAAMK,EAAUF,SAASC,eAAe,iBACxC,IAAKC,EACH,OAAO,EAGT,MAAMC,EAAOC,KAAKC,MAAMH,EAAQI,YAC1B,KACJC,EACAC,OAAO,cAAEC,IACPN,EAEJ,OAAOI,EAAKG,SAAS,oEAAmFC,IAAlBF,CACxF,CAAE,MAAOG,GACP,OAAO,CACT,CACF,C,sJC1CO,MAAMC,GAA0BC,EAAAA,EAAAA,eAAqC,CAC1EC,sBAAkBJ,EAClBK,2BAA2B,IAKhBC,GAFkCJ,EAAwBK,SAEpCD,KAAME,EAAAA,EAAAA,YAAWN,I,uBCL7C,MCSMO,EAAaA,EAAGC,gCAC3B,MAAMC,EDI0BC,MAChC,MAAMC,GAAQC,EAAAA,EAAAA,KACRC,GAAgBC,EAAAA,EAAAA,GAAcH,EAAMI,YAAYC,KAAK,MAAO,CAAEC,OAAO,IACrEC,GAAiBJ,EAAAA,EAAAA,GAAcH,EAAMI,YAAYC,KAjBnB,MAiBiD,CACnFC,OAAO,IAGT,IAAIR,EAAkB,EAUtB,OAPEA,EADEI,EACgB,EACTK,EACS,EAEA,EAGbT,CAAe,ECrBEC,IAClB,UAAES,EAAS,SAAEC,EAAQ,gBAAEC,IAAoBC,EAAAA,EAAAA,MAC3C,0BAAEnB,GAA8BC,KAC9BF,kBAAkB,uBAAEqB,GAAyB,GAAU,CAAC,GAAMnB,KAChE,YAAEoB,GAAc,EAAOC,aAAa,iBAAEC,EAAmB,IAAO,CAAC,GAAML,GAAmB,CAAC,EAC3FM,EAAQD,EAAiBE,QAAQC,GAA2B,MAAlBA,EAAKC,YAC9CC,EAAWC,IAAgBC,EAAAA,EAAAA,WAAkB,IAC7CC,EAAcC,IAAmBF,EAAAA,EAAAA,eAAmCnC,GACrEsC,GAAcC,EAAAA,EAAAA,cACjBC,GACCH,GAAiBI,IACXA,IACF/D,EAAS,+BACT+D,EAAYC,UAEdhE,EAAS,mCAAoC8D,GAC7CA,MAEOA,MAEX,IAGF9D,EAAS,mCAAoC,CAC3C6C,kBACAZ,kBACAsB,YACAG,eACA1B,8BAGF,MAAMiC,EAA2BjC,GAAiD,IAApBC,EACxDiC,GAA0BlC,GAAiD,IAApBC,EAEvDkC,GAAgBN,EAAAA,EAAAA,cACpB,IACEO,KAAS,KACPR,OAAYtC,GACZkC,GAAa,EAAM,GAClB,MACL,CAACI,EAAaJ,IAGVa,GAAqBR,EAAAA,EAAAA,cACxB/C,IAGC,GAFAd,EAAS,8BAA+Bc,IAEpCmD,IAA4BC,EAMhC,OAAIpD,EAAKwD,OAAOC,WAAaC,EAAAA,GAA2BC,SACtDzE,EAAS,wFACTwD,GAAa,SAKuB,IAA3B1C,EAAKwD,OAAOI,YACrB1E,EACE,gFACA,gCAEFwD,GAAcmB,IAAmBA,KAK/B7D,EAAKwD,OAAOI,YACd1E,EAAS,2FACTwD,GAAa,KAKfxD,EACE,yEACA,sCAGKmE,KAlCLnE,EAAS,iDAkCW,GAExB,CAACmE,EAAeF,EAA0BC,EAAwBV,KAGpEoB,EAAAA,EAAAA,YAAU,KAEJX,IACFjE,EAAS,yDACTwD,GAAa,IAGXU,IACFlE,EAAS,iEACTwD,GAAa,IAGf,MAAMqB,EAA4B/D,GAChC8C,EAAYS,EAAmBvD,IAIjC,OAFAgE,OAAOC,iBAAiBP,EAAAA,GAAuBK,GAExC,IAAMC,OAAOE,oBAAoBR,EAAAA,GAAuBK,EAAwB,GACtF,CACD5C,EACAgC,EACAC,EACAR,EACAE,EACAJ,EACAa,EACArC,IAGF,MAMMiD,GAAepB,EAAAA,EAAAA,cAAY,KAC3B7B,GAA6BkC,EAC/BlE,EAAS,2CAIXA,EAAS,cACT4D,OAAYtC,GAAU,GACrB,CAACU,EAA2BkC,EAAwBN,IAEjDsB,GAAerB,EAAAA,EAAAA,cAAY,KAC3B7B,GAA6BkC,EAC/BlE,EAAS,2CAIXA,EAAS,0BACTwD,GAAa,GAAM,GAClB,CAACxB,EAA2BkC,EAAwBV,IAevD,MAAO,CACLS,2BACAV,YACA4B,mBA1CyBA,KACpBlB,GACHT,GAAa,EACf,EAwCA4B,aAfiC,CACjCnD,kBACAc,uBAAwBA,GAA0BH,GAAYI,EAC9DqC,aAAczC,EACdZ,4BACAW,UAAWA,GAAahB,EACxBwB,QACA8B,eACAC,gBAQAI,WAlBiB,CAAErD,kBAAiBgC,2BAA0BV,YAAWvB,6BAmB1E,E,kCC/JI,MAAMuD,EAAoBC,IAC/BC,EAAAA,EAAAA,KAACC,EAAAA,EAAwB,IAA0BF,I,sBCjB9C,MAAMG,GAAOC,EAAAA,EAAAA,GAAOC,EAAAA,EAAPD,EAAa,EAAGzD,YAAY,CAC9C2D,WAAY3D,EAAM4D,QAAQC,QAAQC,KAClCC,OAAQ,YACRC,YAAahE,EAAM4D,QAAQC,QAAQC,KACnCG,aAAc,QACdC,UAAW,aACXC,MAAOnE,EAAM4D,QAAQD,WAAWS,MAChCC,OAAQ,UACRC,QAAS,QACTC,WAAY,OACZC,OAAQ,GACRC,OAAQzE,EAAM0E,QAAQ,GACtBC,SAAU,OACVC,SAAU,WACVC,UAAW,SACXC,eAAgB,OAChBC,cAAe,YACfC,WAAY,oCACZC,cAAe,SACfC,WAAY,SACZ,UAAW,CACTC,UAAW,oCACXhB,MAAOnE,EAAM4D,QAAQD,WAAWS,MAChCgB,UAAW,mBAIFC,GAAQ5B,EAAAA,EAAAA,GAAO6B,EAAAA,EAAP7B,EAAmB,EAAGzD,YAAY,CACrDuE,WAAY,OACZgB,WAAY,GAAGvF,EAAM0E,QAAQ,SCzBlBc,EAAoCA,EAAGC,eAClD,MAAQlG,kBAAkB,cAAEmG,GAAkB,CAAC,GAAMjG,KAC/C,UAAEkG,IAAcC,EAAAA,EAAAA,KAEtB,OACEtC,EAAAA,EAAAA,KAACE,EAAI,CACHqC,KAAMH,EACN,cAAaC,EAAU,UAAUF,UAEjCnC,EAAAA,EAAAA,KAAC+B,EAAK,CAACS,QAAM,EAAAL,SAAEA,KACV,E,+ECVJ,MAEMM,GAAyBC,GACpCrD,OAAOsD,cACL,IAAIC,YAAkBC,GAAAA,GAAM,CAC1BhE,OAAQ,CACN6D,UACAI,oBAAqB,CAAEC,MAPS,S,8BCYjC,MCPMC,GAAmBA,EAAGC,4BACjC,MAAOC,EAAaC,IAAkBnF,EAAAA,EAAAA,WAAS,IACxCoF,EAAgBC,IAAqBrF,EAAAA,EAAAA,WAAS,IAC9CsF,EAAeC,IAAoBvF,EAAAA,EAAAA,UAAiC,CAAC,IACrEwF,EAAMC,IAAWzF,EAAAA,EAAAA,UAAS,IAC3B0F,EAAcR,GAAeE,GAE7B,cAAEO,IDCRC,EAAAA,GAAAA,KCCMC,GAAqBzF,EAAAA,EAAAA,cAAY0F,UACrCvJ,EAAS,wBACT,IACE,MAAMc,OCjBoByI,WAG9BvJ,EAAS,8BACT,MAAMwJ,QAAiBC,EAAAA,EAAMC,IAAkB,GAAG5E,OAAO6E,SAASC,uDAA2B,CAC3FC,QAAS,CACP,gBAAiB,WACjB,8BAA+B,IAC/B,yBAA0B,IAC1BC,OAAQ,WACRC,QAAS,QAGP,KAAEjJ,GAAS0I,EACXrB,EAAUrH,EAAKqH,QAAQ6B,WAAW,SAAU,UAAUA,WAAW,SAAU,QAC3EC,EAAS,IAAKnJ,EAAMqH,WAG1B,OAFAnI,EAAS,2BAA4BiK,GAE9BA,CAAM,EDDUC,GACnBlB,EAAiBlI,GACjB8H,GAAe,EACjB,CAAE,MAAOrH,GACP2G,GAAsBiC,GAAAA,GAAgBC,cACtCvK,EAAW0B,MAAMA,EAAgB,CAAE8I,OAAQ,sBAC7C,IACC,IAEGC,GAAUzG,EAAAA,EAAAA,cAAY,KAC1B7D,EAAS,+BACT4I,GAAe,GACfE,GAAkB,EAAM,GACvB,IAEGyB,GAAU1G,EAAAA,EAAAA,cAAY,KAC1ByG,IACApC,GAAsBiC,GAAAA,GAAgBC,aAAa,GAClD,CAACE,IAEEE,GAAa3G,EAAAA,EAAAA,cAAY,CAAC4G,EAAoBC,KAClD1K,EAAS,eAAgB,CAAE0K,kBAAiBD,WAC5CvB,EAAQwB,GACR5B,GAAkB,EAAK,GACtB,IAEG6B,GAAmB9G,EAAAA,EAAAA,cACvB0F,UACEvJ,EAAS,oCAETsK,IEjDqChG,KACzC,MAAMsG,EAAc,IAAIvC,YAAsCwC,GAAAA,EAA0B,CACtFvG,WAEFtE,EAAS,yCAA0C4K,GACnD9F,OAAOsD,cAAcwC,EAAY,EF8C7BE,CAA2B,CACzBC,YAAaC,EAAAA,GAAYC,YACzBC,OAAQT,EACRU,UAAWC,EAAAA,EAAU3G,WAGlB4G,EAAAA,EAAAA,IAAM,CAAEb,aAAYD,UAASxB,gBAAe0B,UAAS,GAE5D,CAACH,EAASE,EAAYD,EAASxB,IAG3BuC,EAAqC,CACzC5C,wBACA6C,QAASjC,IAGL,gBAAEkC,GAAoBC,EAAAA,EACtBC,EAAgC,CAEpCC,aAAc,CAACH,GACfI,YAAaxC,EAAc,yBAC3ByC,yBAAyB,EACzBtB,UACAI,oBAGImB,EAAqB,CAAEC,OAAQ3C,EAAc,aAE7C4C,EAAa,CACjBC,qBAAqB,EACrBC,mBAAmB,EACnB5B,UACA6B,KAAMhD,EACN7D,WAAY,CAAEuD,qBACVA,EAAiBiD,EAPC,CAAEM,KAAM,UAgBhC,MAAO,CACLC,cAPwC,CACxCC,WAAYlD,EAAc,QAC1BmD,WAAYnD,EAAc,cAC1BH,QAKAJ,iBACAF,cACAQ,cACAuC,aACAM,aACAV,mBACD,E,0BG1GI,MAAMkB,GAAqB,CAChCC,OAAQ,EACRC,KAAM,EACN3F,SAAU,WACV4F,MAAO,EACPC,IAAK,GAGMC,GAAqB,CAChCC,WAAY,SACZrG,QAAS,OACTE,OAAQ,OACRoG,eAAgB,SAChBC,MAAO,QCPHC,GAAOC,GAAAA,EAAS;;;;;;;EASTvH,IAAOC,EAAAA,EAAAA,GAAO,MAAPA,CAAciH,IAErBM,IAAUvH,EAAAA,EAAAA,GAAOwH,GAAAA,EAAPxH,CAAwB,CAC7CyH,UAAW,GAAGJ,0BCdHK,GAAaA,KACxB7H,EAAAA,EAAAA,KAACE,GAAI,CAAAiC,UACHnC,EAAAA,EAAAA,KAAC0H,GAAO,CACN7G,MAAM,YACNiH,SAAS,Y,0BCNR,MAAM5H,IAAOC,EAAAA,EAAAA,GAAO4H,GAAAA,EAAP5H,EAAe,EAAGzD,YAAY,CAChD6K,MAAO,eAAe7K,EAAM0E,QAAQ,MACpCD,OAAQzE,EAAM0E,QAAQ,OCIX4G,GAAoCA,EAAG/E,wBAAuB6C,cACzE,MAAM,UAAEzD,IAAcC,EAAAA,EAAAA,KAEtB,OACE2F,EAAAA,EAAAA,MAAC/H,GAAI,CACH,cAAamC,EAAU,8BACvBxB,MAAM,YACNqH,UAAWjF,EACXkF,QAAQ,YACRrC,QAASA,EAAQ3D,SAAA,EAEjBnC,EAAAA,EAAAA,KAACoI,GAAAA,EAAK,KACNpI,EAAAA,EAAAA,KAACF,EAAgB,CAACuI,GAAG,sBAChB,ECVLC,IAAgBC,EAAAA,EAAAA,OAAKzE,SAAY,wDACjC0E,IAAeD,EAAAA,EAAAA,OAAKzE,SAAY,gCAEhC2E,IAAetI,EAAAA,EAAAA,GAAOuI,EAAAA,GAAPvI,EAElB,EAAGN,YAAcuD,kBAAkB1G,YAAY,IAC5C0G,GAAkB,CACpB,CAAC,KAAKuF,EAAAA,GAAcrC,UAAW,CAC7BsC,cAAelM,EAAM0E,QAAQ,IAE/B,CAAC,KAAKuH,EAAAA,GAAcE,WAAY,CAC9BxH,SAAU,UAKHyH,GAA2C/I,IACtD,MAAM,cAAE6G,EAAa,eAAExD,EAAc,YAAEF,EAAW,YAAEQ,EAAW,WAAEuC,EAAU,WAAEM,EAAU,iBAAEV,GACvF7C,GAAiBjD,GAInB,OAFAxF,EAAS,4CAA6CgM,IAGpD0B,EAAAA,EAAAA,MAAAc,EAAAA,SAAA,CAAA5G,SAAA,EACEnC,EAAAA,EAAAA,KAACgI,GAAW,IAAKnC,IAChBnC,GACC1D,EAAAA,EAAAA,KAACyI,GAAY,IAAKlC,EAAUpE,UAC1B8F,EAAAA,EAAAA,MAAAc,EAAAA,SAAA,CAAA5G,SAAA,CACGe,GACClD,EAAAA,EAAAA,KAACgJ,EAAAA,SAAQ,CAACC,UAAUjJ,EAAAA,EAAAA,KAAC6H,GAAM,IAAI1F,UAC7BnC,EAAAA,EAAAA,KAACwI,GAAY,IAAKvC,MAElB,KACH7C,GACCpD,EAAAA,EAAAA,KAACgJ,EAAAA,SAAQ,CAACC,UAAUjJ,EAAAA,EAAAA,KAAC6H,GAAM,IAAI1F,UAC7BnC,EAAAA,EAAAA,KAACsI,GAAa,IAAK1B,MAEnB,UAGN,OACH,EClDM1G,IAAOC,EAAAA,EAAAA,GAAO,MAAPA,EAAc,EAAGzD,YAAY,CAC/C2D,WAAY,+DACZ2G,OAAQ,EACRpG,UAAW,aACXsI,YAAa,WACbC,QAASzM,EAAM0E,QAAQ,GACvBE,SAAU,WACViG,MAAO,OACP6B,OAAQ,MCFGC,GAA0BA,EAAG/L,yBAAwB2F,4BAChEgF,EAAAA,EAAAA,MAAC/H,GAAI,CAAAiC,SAAA,EACHnC,EAAAA,EAAAA,KAACkC,EAAU,CAAAC,UACTnC,EAAAA,EAAAA,KAACF,EAAgB,CAACuI,GAAG,iBAEtB/K,GAAyB0C,EAAAA,EAAAA,KAAC8I,GAAc,CAAC7F,sBAAuBA,IAA4B,QCXpF/C,IAAOC,EAAAA,EAAAA,GAAO,MAAPA,EAAc,EAAGzD,YAAY,CAC/CwE,OAAQ,GACRI,SAAU,WACV8H,OAAQ,EACRpI,QAAS,OACTmI,QAASzM,EAAM0E,QAAQ,EAAG,GAC1BR,UAAW,aACXyG,WAAY,SACZE,MAAO,OACPlH,WAAY,kEACZQ,MAAOnE,EAAM4D,QAAQgJ,KAAKC,cAGfC,IAAarJ,EAAAA,EAAAA,GAAO,IAAPA,EAAY,EAAGzD,YAAY,CACnDmE,MAAOnE,EAAM4D,QAAQgJ,KAAK/I,QAC1BiB,eAAgB,WCRLiI,GAA0BA,EAAGC,eACxC,MAAQzN,kBAAkB,cAAEmG,GAAkB,CAAC,GAAMjG,KAC/C,UAAEkG,IAAcC,EAAAA,EAAAA,KAEtB,OACEtC,EAAAA,EAAAA,KAACE,GAAI,CAAC,cAAamC,EAAU,UAAUF,UACrCnC,EAAAA,EAAAA,KAACgC,EAAAA,EAAU,CAACmG,QAAQ,KAAIhG,UACtB8F,EAAAA,EAAAA,MAACuB,GAAU,CACTjH,KAAMH,EACN,cAAaC,EAAU,sBAAsBF,SAAA,EAE7CnC,EAAAA,EAAAA,KAACF,EAAgB,CAACuI,GAAG,WAAW,KAAGqB,EAASC,WAAW,UAGtD,E,8ECRNC,GAAY,SAAZA,GAAY,OAAZA,EAAY,yBAAZA,EAAY,6BAAZA,EAAY,+BAAZA,CAAY,EAAZA,IAAY,IAMjB,MCnBa1J,IAAOC,EAAAA,EAAAA,GAAO,MAAPA,EAAc,EAAGzD,YAAY,CAC/C2K,WAAY,SACZwC,UAAW,WACX7I,QAAS,OACTM,SAAU,WACViG,MAAO,IAEP,CAAC7K,EAAMI,YAAYgN,GAAG,OAAQ,CAC5BD,UAAW,SACXE,WAAY,OCDHC,GAA0CA,EACrD,cAAeC,EACfC,eACAC,gBACAC,eACAC,kBACAC,WACAC,aACAC,cACAC,uBAEA,MAAM,SAAEC,EAAQ,WAAEC,EAAU,aAAEC,EAAY,YAAEC,EAAW,cAAEC,EAAa,MAAEC,GFEzCC,GAC/Bd,eACAG,kBACAC,WACAC,aACAC,cACAC,uBAEA,MAAMC,GAAWO,EAAAA,EAAAA,QAAyB,MACpCC,GAAiBD,EAAAA,EAAAA,SAAO,GACxBE,GAAiBF,EAAAA,EAAAA,SAAO,IACvB,CAAEG,IAAeC,EAAAA,EAAAA,aAAYC,GAAcA,EAAI,GAAG,GACnDP,GAAQE,EAAAA,EAAAA,QAAqBZ,GAC7BkB,GAAWnN,EAAAA,EAAAA,cACdoN,IACKA,IAAaT,EAAMU,QACrBlR,EAAS,+DAAgEiR,IAEzET,EAAMU,QAAUD,EAChBjR,EAAS,+CAAgDiR,GACzDJ,IACF,GAEF,CAACL,IAGGW,GAAiBtN,EAAAA,EAAAA,cACrB,CAACuN,EAA0BC,KAazB,GAZArR,EACE,8CACAoR,EACA,oBACAtB,EACA,gBACAG,EACA,mBACAoB,GAIiB,MAAfD,EACF,OAIF,GAAmB,KAAfA,GAAqBE,OAAOC,MAAMH,GAUpC,YATIC,IAAiBhC,GAAamC,YAEhCR,EAASlB,GAITkB,EAASI,IAOb,IAAIK,EAAeL,EAGfK,EAAe,IACjBA,EAAe,EACfzR,EAAS,kFAGPyR,EAAe,IAAM9B,IACvB8B,EAAe,EACfzR,EAAS,8DAGPyR,EAAexB,IACjBwB,EAAexB,EACfjQ,EAAS,6CAA6CiQ,OAQtDwB,IAAiB3B,GAChBa,EAAeO,SAAWG,IAAiBhC,GAAaqC,eAGzDV,EAASS,IAQXb,EAAeM,SAAU,EACzBlR,EAAS,uCASTgR,EAASS,GAEJvB,EAAiB,CACpBH,WACAC,aACAb,SAAUsC,EACVE,iBAAkB7B,IACjB8B,MAdeC,KAChBjB,EAAeM,SAAU,EACzBlR,EAAS,uCAAuC,IAYhC,GAEpB,CAAC2P,EAAcG,EAAiBC,EAAUC,EAAYC,EAAaC,EAAkBc,IAMnFlB,IAAoBU,EAAMU,SAAaP,EAAeO,UAAWN,EAAeM,UAClFlR,EAAS,0CAA0C8P,gBAA8BU,EAAMU,eACvFF,EAASlB,IAGX,MAuCMO,GAAexM,EAAAA,EAAAA,cAClBuN,GAA6BD,EAAeC,EAAY/B,GAAayC,gBACtE,CAACX,IAGH,MAAO,CACLhB,WACAQ,eAAgBA,EAAeO,QAC/BN,eAAgBA,EAAeM,QAC/Bd,WAtCmB2B,IACnBpB,EAAeO,SAAU,EACzB,MAAM,OAAEc,GAAWD,EACbE,EAAQD,GACNxB,MAAOiB,GAAiBQ,EAE9Bd,EADmB,KAAjBM,GAAwC,MAAjBA,EACVA,EAEAH,OAAOY,SAAST,EAAc,IAFhBpC,GAAamC,YAG5C,EA8BAnB,eACAC,YAlDoByB,IACpBpB,EAAeO,SAAU,EACzB,MAAM,OAAEc,GAAWD,EACbE,EAAQD,GACNxB,MAAOiB,GAAiBQ,EAChCjS,EAAS,6CAA8CyR,GAEvDQ,EAAME,kBAAkB,EAAGV,EAAaW,OAAO,EA4C/C7B,cA7BsBwB,IACtB,MAAM,IAAEM,EAAG,OAAEL,GAAWD,EAExB,GADA/R,EAAS,qCAAsCqS,GACzB,iBAAXL,GAvJG,UAuJoBK,EAChC,OAGF,MAAMJ,EAAQD,GACNxB,MAAOiB,GAAiBQ,EAC1BK,EAAehB,OAAOG,GAC5BzR,EAAS,8CAA+CyR,EAAc,eAAgBa,GACjE,KAAjBb,GAAuBH,OAAOC,MAAMe,IAGxCnB,EAAemB,EAAcjD,GAAaqC,eAAe,EAgBzDV,WACAR,MAAOA,EAAMU,QACd,EEpLiFT,CAAkB,CAClGd,eACAG,kBACAC,WACAC,aACAC,cACAC,qBAGF,OACEzK,EAAAA,EAAAA,KAACE,GAAI,CAAAiC,UACHnC,EAAAA,EAAAA,KAAC8M,GAAAA,GAAO,CACNC,wBACE,CACE,cAAe,GAAG9C,cAGtB/B,UAAWiC,EACX6C,wBACE,CACE,cAAe,GAAG/C,cAGtBgD,WACE,CACEC,KAAM,MACNxC,WACAyC,QAAStC,EACTuC,OAAQzC,EACR0C,UAAWvC,GAGfwC,SAAU9C,EACV+C,SAAUnD,EAAe,EAAIC,EAC7BU,MAAOA,EACPyC,SAAU5C,KAEP,E,yBCtDJ,MAAM1K,IAAOC,EAAAA,EAAAA,GAAOsN,GAAAA,GAAPtN,EAAmB,EAAGzD,YAAY,CACpD2K,WAAY,SACZrG,QAAS,OACT8G,SAAUpL,EAAMgR,WAAWC,QAAQ,IACnC9M,MAAOnE,EAAM4D,QAAQsN,OAAOC,MAC5B3M,OAAQ,GACRoG,eAAgB,SAChBL,KAAMvK,EAAM0E,SAAS,GACrBE,SAAU,WACV6F,IAAKzK,EAAM0E,QAAQ,GACnBmG,MAAO,GACP6B,OAAQ,MAGG0E,IAAO3N,EAAAA,EAAAA,GAAO4N,GAAAA,EAAP5N,EAAY,EAAGzD,YAAY,CAC7CoL,SAAUpL,EAAMgR,WAAWC,QAAQ,IACnC7L,UAAW,oBCfAkM,GAAsCA,EAAG,cAAe/D,EAAQnE,cAC3E9F,EAAAA,EAAAA,KAACE,GAAI,CACHW,MAAM,UACNsH,QAAQ,YACR,cAAa8B,EACbnE,QAASA,EAAQ3D,UAEjBnC,EAAAA,EAAAA,KAAC8N,GAAI,MCPIG,GAAsBvR,IAAY,CAE3CiE,aAAc,MACdK,QAAS,eACTE,OAAQ,EACRC,OAAQzE,EAAM0E,QAAQ,EAAG,EAAG,IAAK,GACjCmG,MAAO,IAGE2G,IAAoB/N,EAAAA,EAAAA,GAAO,MAAPA,EAC/B,EAAGzD,QAAOmD,YAAcQ,kBAAmB,IACtC4N,GAAmBvR,GACtB2D,iBAIS8N,IAAoBhO,EAAAA,EAAAA,GAAO,MAAPA,EAAc,EAAGzD,WAAYuR,GAAmBvR,KAEpEwD,IAAOC,EAAAA,EAAAA,GAAO,MAAPA,EAAc,EAAGzD,YAAY,CAC/CmE,MAAOnE,EAAM4D,QAAQ8N,KAAKC,KAC1BrN,QAAS,OACTqG,WAAY,aCrBDiH,GAAsCA,EAAGC,eAAcC,oBAClE,MAAMC,EAAgBF,GAAcG,MAAM,KAAK/Q,QAAQgR,GAAY1T,QAAQ0T,KAE3E,GAAIF,GAAiBA,EAAc9B,OAAS,EAAG,CAC7C,MACM9M,EAAa,CAAEQ,WADFoO,EAAc9B,OAAS,EDN5C,8BADgCiC,ECOkCH,GDN9B,OAAOG,EAAO,WAAWA,EAAO,UCMgBH,EAAc,IAGhG,OAAOzO,EAAAA,EAAAA,KAACkO,GAAiB,CAACrO,WAAYA,GACxC,CDXgC+O,MCchC,OAAIJ,GAEAxO,EAAAA,EAAAA,KAACmO,GAAiB,CAChBU,IAAKL,EACLM,IAAI,KAKH,IAAI,ECjBAC,IAAwBC,EAAAA,EAAAA,OAAK,EAAG,cAAe/E,EAAQgF,eAAcC,MAChFjH,EAAAA,EAAAA,MAAC/H,GAAI,CAAC,cAAa+J,EAAO9H,SAAA,EACxBnC,EAAAA,EAAAA,KAACsO,GAAY,IAAKY,KAClBlP,EAAAA,EAAAA,KAACgC,EAAAA,EAAU,CAACmG,QAAQ,UAAShG,SAAE8M,S,eCR5B,MAAM/O,IAAOC,EAAAA,EAAAA,GAAO,KAAPA,EAAa,EAAGzD,YAAY,CAC9CyM,QAASzM,EAAM0E,QAAQ,EAAG,GAC1BE,SAAU,WACVV,UAAW,aACXO,OAAQzE,EAAM0E,QAAQ,EAAG,GACzB,SAAU,CACR+N,UAAW,aAAazS,EAAM4D,QAAQ8N,KAAK,YAIlCgB,IAAuBjP,EAAAA,EAAAA,GAAO,MAAPA,CAAc,CAChDa,QAAS,OACTH,MAAO,OACPW,eAAgB,SAGL6N,IAAUlP,EAAAA,EAAAA,GAAO,IAAPA,EAAY,EAAGzD,YAAY,CAChDyM,QAASzM,EAAM0E,QAAQ,EAAG,GAC1BkO,YAAa5S,EAAM0E,QAAQ,GAC3BT,aAAc,EACdW,SAAU,WACViO,SAAU,aAGCC,IAAwBrP,EAAAA,EAAAA,GAAO,MAAPA,CAAc,CACjDa,QAAS,OACTyO,SAAU,EACVC,cAAe,SACflO,eAAgB,OAChBH,SAAU,sBAGCsO,IAAqBxP,EAAAA,EAAAA,GAAOC,EAAAA,EAAPD,EAAa,EAAGzD,YAAY,CAC5DsE,QAAS,OACTQ,eAAgB,OAChBoO,UAAW,GACXL,SAAU,aAGCM,IAAa1P,EAAAA,EAAAA,GAAO6B,EAAAA,EAAP7B,CAAmB,CAC3CkB,SAAU,oBACVkO,SAAU,SACVO,aAAc,WACd9O,QAAS,cACT+O,gBAAiB,EACjBC,gBAAiB,aAGNC,IAAW9P,EAAAA,EAAAA,GAAO,MAAPA,EAAc,EAAGzD,YAAY,CACnDsE,QAAS,OACTqG,WAAY,SACZC,eAAgB,SAChBhG,SAAU,WACVyI,WAAY,EACZxC,MAAO,GACPrG,OAAQ,GACRgP,WAAY,OACZzP,OAAQ,IACRI,MAAOnE,EAAM4D,QAAQ6P,MAAMC,aAC3BzP,aAAc,MACd0P,gBAAiB3T,EAAM4D,QAAQ6P,MAAM3P,SAG1B8P,IAAenQ,EAAAA,EAAAA,GAAOoQ,GAAAA,EAAPpQ,EAA0B,EAAGzD,YAAY,CACnEoL,SAAUpL,EAAMgR,WAAWC,QAAQ,QAGxB6C,IAAoBrQ,EAAAA,EAAAA,GAAO,MAAPA,CAAc,CAC7Ca,QAAS,OACTyP,UAAW,OACXjP,eAAgB,SAGLkP,IAAsBvQ,EAAAA,EAAAA,GAAO6B,EAAAA,EAAP7B,CAAmB,CACpDmP,YAAa,OACbzF,UAAW,aAGA8G,IAAmBxQ,EAAAA,EAAAA,GAAO,MAAPA,CAAc,CAC5C+P,WAAY,OACZO,UAAW,SAGAG,IAAczQ,EAAAA,EAAAA,GAAO6B,EAAAA,EAAP7B,EAAmB,EAAGzD,YAAY,CAC3DuE,WAAY,OACZJ,MAAOnE,EAAM4D,QAAQgJ,KAAKC,UAC1B3H,WAAY,aAGDiP,IAAiB1Q,EAAAA,EAAAA,GAAO6B,EAAAA,EAAP7B,EAAmB,EAAGzD,YAAY,CAC9D6E,UAAW,QACXC,eAAgB,eAChBsG,SAAU,SACVjH,MAAOnE,EAAM4D,QAAQgJ,KAAKpB,aAGf4I,IAAmB3Q,EAAAA,EAAAA,GAAO,MAAPA,EAAc,EAAGzD,YAAY,CAC3DsE,QAAS,OACT+P,IAAKrU,EAAM0E,QAAQ,OCrER4P,GAA4BA,EACvC1G,WACA2G,kBACAC,eACAC,iBACAtT,WACAuT,oBACAC,qBACAC,aACApH,eACAK,aACAJ,gBACAC,eACAI,cACA+D,eACAC,gBACA+C,gBAEA,MAAM,UAAElP,IAAcC,EAAAA,EAAAA,KAChB5F,GAAQC,EAAAA,EAAAA,KAER6U,GAAoBpT,EAAAA,EAAAA,cAAY0F,UACpC,SC5C4BA,UAC9B,IAAI2N,SAAeC,IACjB,MAAMC,EAAiBA,KACrBtS,OAAOE,oBAAoBqS,GAAAA,GAAoBD,GAC/CD,GAAS,EAGXrS,OAAOC,iBAAiBsS,GAAAA,GAAoBD,GAE5C,MAAMrF,EAAQ,IAAI1J,YAAkCiP,GAAAA,EAAuB,CACzEhT,WAEFQ,OAAOsD,cAAc2J,EAAM,IDoCnBwF,CAAiB,CACrBxH,WACAC,aACA7E,UAAWC,EAAAA,EAAU3G,QACrBkN,iBAAkBkF,GAEtB,CAAE,MAAOtV,GAKP,IAED,CAACwO,EAAUC,EAAY6G,IAEpBW,GAAuB3T,EAAAA,EAAAA,cAC3B0F,OACEwG,SAAU0H,EACVzH,WAAY0H,EACZvI,SAAUwI,EACVhG,uBAEA,GAAwB,IAApBgG,EACF,UACQV,GACR,CAAE,MAAO1V,GACP2G,GAAsB,gBACtBrI,EAAW0B,MAAMA,EAAgB,CAAE8I,OAAQ,uBAAwB8E,SAAU,GAC/E,MAEA,SEzEwB5F,QAC9BwG,WACAC,aACA7E,YACAwG,mBACAxC,cAEA,IAAI+H,SAAc,CAACC,EAASS,KAC1B,MAAMC,EAAa9F,IACjBjN,OAAOE,oBAAoBqS,GAAAA,GAAoBQ,GAC/C/S,OAAOE,oBAAoB8S,GAAAA,GAA6BD,GAExD,MAAM,OAAEvT,GAAWyN,EACf+F,GAAAA,GAAuDxT,GACzDsT,EAAO,IAAIG,MAAM,6BAA6BzT,EAAO6D,YAErDgP,GACF,EAGFrS,OAAOC,iBAAiBsS,GAAAA,GAAoBQ,GAC5C/S,OAAOC,iBAAiB+S,GAAAA,GAA6BD,GAErD,MAAMG,EAAiB,IAAI3P,YAAkC4P,GAAAA,EAAuB,CAClF3T,OAAQ,CACN0L,aACAb,WACAwC,mBACAuG,YAAa/I,EACbY,WACA5E,eAGJrG,OAAOsD,cAAc4P,EAAe,IFyCxBG,CAAiB,CACrBpI,SAAU0H,EACVzH,WAAY0H,EACZvM,UAAWC,EAAAA,EAAU3G,QACrBkN,mBACAxC,SAAUwI,GAEd,CAAE,MAAOpW,GACP2G,GAAsB,gBACtBrI,EAAW0B,MAAMA,EAAgB,CAAE8I,OAAQ,uBAAwB8E,SAAUwI,GAC/E,CACF,GAEF,CAACV,IAGGmB,EAAY,GAAGpI,KAAcD,KAAYzM,IAE/C,OACEoK,EAAAA,EAAAA,MAAC/H,GAAI,CACHmI,GAAI,QAAQsK,KAAarB,IACzB,cAAa,GAAGjP,EAAU,WAAWsQ,IAAYxQ,SAAA,CAEhD+H,GACClK,EAAAA,EAAAA,KAACgO,GAAY,CACX,cAAY,SACZlI,QAAS0L,IAET,MACJvJ,EAAAA,EAAAA,MAACmH,GAAoB,CAAAjN,SAAA,EACnBnC,EAAAA,EAAAA,KAAC4S,GAAAA,EAAa,CACZC,UAAWxD,GACX9M,KAAM4O,EACNtC,IAAKqC,GAAgB,UACrBpC,IAAKmC,EACL5Q,WAAY3D,EAAM4D,QAAQ8N,KAAK,KAC/B7G,MAAM,OACNrG,OAAO,WAET+G,EAAAA,EAAAA,MAACuH,GAAqB,CAAArN,SAAA,EACpB8F,EAAAA,EAAAA,MAAC0H,GAAkB,CAACpN,KAAM4O,EAAehP,SAAA,EACvCnC,EAAAA,EAAAA,KAAC6P,GAAU,CAAA1N,SAAE8O,IACZI,GACCrR,EAAAA,EAAAA,KAACiQ,GAAQ,CAAA9N,UACPnC,EAAAA,EAAAA,KAACsQ,GAAY,MAEb,SAENrI,EAAAA,EAAAA,MAAC6I,GAAgB,CAAA3O,SAAA,EACfnC,EAAAA,EAAAA,KAACgC,EAAAA,EAAU,CACTmG,QAAQ,UACRtH,MAAM,gBAAesB,SAEpBmI,KAEDrP,QAAQsT,IAAiBtT,QAAQuT,KAAmB+C,GACpDvR,EAAAA,EAAAA,KAAC+O,GAAK,CACJ,cAAY,QACZR,aAAcA,EACdC,cAAeA,EACfS,UAAWsC,IAEX,SAENtJ,EAAAA,EAAAA,MAACuI,GAAiB,CAAArO,SAAA,CACdiI,GAAiBD,GAKjBnK,EAAAA,EAAAA,KAACgK,GAAc,CACb,cAAY,kBACZE,aAAcA,EACdC,cAAeA,EACfC,aAAcA,EACdC,gBAAiB+G,EACjB9G,SAAUA,EACVC,WAAYA,EACZC,YAAaA,EACbC,iBAAkBsH,KAbpB9J,EAAAA,EAAAA,MAACyI,GAAmB,CAAAvO,SAAA,EAClBnC,EAAAA,EAAAA,KAACF,EAAgB,CAACuI,GAAG,QAAQ,IAAE+I,MAenCnJ,EAAAA,EAAAA,MAAC0I,GAAgB,CAAAxO,SAAA,CACdkP,GAAqBrR,EAAAA,EAAAA,KAAC6Q,GAAc,CAAA1O,SAAEkP,IAAuC,MAC9ErR,EAAAA,EAAAA,KAAC4Q,GAAW,CAAAzO,SAAEmP,kBAKjB,E,aG7KJ,MAAMpR,IAAOC,EAAAA,EAAAA,GAAO,MAAPA,EAClB,EAAGN,YAAcvC,0BAA0BZ,YAAY,IAClD0K,GACH9F,SAAU,WACV6F,IAAKzK,EAAM0E,QAAQ,IACnB4F,OAAQtK,EAAM0E,QAAQ,GACtBmG,MAAO,OACPrG,OAAQ,eAAexE,EAAM0E,QAAQ,IAAM9D,EAAyB,GAAK,OACzE+C,YAAYyS,EAAAA,GAAAA,IAAMpW,EAAM4D,QAAQsN,OAAOmF,MAAO,IAC9C3J,OAAQ,QCRC4J,GAA2CjT,IACtDC,EAAAA,EAAAA,KAACE,GAAI,CAACL,WAAYE,EAAMoC,UACtBnC,EAAAA,EAAAA,KAAC6H,GAAM,M,0BCJJ,MAAMoL,GAAoB,sCAEpB/S,IAAOC,EAAAA,EAAAA,GAAO,MAAPA,EAClB,EAAGzD,QAAOmD,iBAAiB,IACtBkH,GACH1G,WAAY3D,EAAM4D,QAAQD,WAAWS,MACrCe,UAAWnF,EAAMwW,QAAQ,GACzBtS,UAAW,aACXI,QAAS,OACT0O,cAAe,SACfzI,KAAM,OACN5F,SAAU,qBACVkG,MAAO1H,EAAWtD,2BAA4D,IAA/BsD,EAAWrD,gBAAwByW,GAAoB,QACtG7J,OAAQ,MAIC+J,IAAehT,EAAAA,EAAAA,GAAOiT,GAAAA,EAAPjT,EAA0B,EAAGzD,YAAY,CACnE4E,SAAU,WACVN,QAAS,QACTJ,UAAW,aACX2O,SAAU,SACV8D,KAAM,EACNhT,WAAY3D,EAAM4D,QAAQD,WAAWS,UAG1BwS,IAAWnT,EAAAA,EAAAA,GAAO,MAAPA,EAAc,EAAGzD,YAAY,CACnD4E,SAAU,UACV6F,IAAK,MACL5F,UAAW,SACXV,MAAOnE,EAAM4D,QAAQgJ,KAAKC,cAGfgK,IAAQpT,EAAAA,EAAAA,GAAOqT,GAAAA,EAAPrT,EACnB,EAAGzD,QAAOmD,YAAcvC,8BAA+B,CACrDsD,UAAW,aACX6S,cAAe,OACf7D,UAAW,OACXL,SAAU,OACVmE,WAAYhX,EAAM0E,QAAQ,IAC1BwH,cAAelM,EAAM0E,QAAQ9D,EAAyB,GAAK,IAC3DqW,mBAAoB,cChCXC,GAA4BA,EACvCpX,kBACAc,yBACAI,QACAkC,eACA1C,YACAsC,eACAC,eACAlD,gCAEA,MAAMmN,EAAWhM,EAAMmW,QAAO,CAACC,EAAOrI,IAAYqI,EAAQrI,EAAQ2F,mBAAmB,IAC/E,eAAE2C,IAAmBzR,EAAAA,EAAAA,KAErB0R,EAAkB,CAAE1W,0BACpB2W,EAAY,CAAEzU,eAAcC,eAAcI,WAF7B,CAAErD,kBAAiBD,gCAEyBwX,EAAe,YAExEG,EAAc,CAAE5W,yBAAwB2F,sBADhBvF,EAAMiP,OAAS,GAG7C,OACE1E,EAAAA,EAAAA,MAAC/H,GAAI,IAAK+T,EAAS9R,SAAA,EACjBnC,EAAAA,EAAAA,KAACyJ,GAAM,CAACC,SAAUA,IACjBxM,IAAc0C,GAAeI,EAAAA,EAAAA,KAACgT,GAAc,CAAC1V,uBAAwBA,IAA6B,MACnG2K,EAAAA,EAAAA,MAACkL,GAAY,IAAKY,EAAe,SAAQ5R,SAAA,CACtCzE,EAAMiP,OAAS,IACd3M,EAAAA,EAAAA,KAACuT,GAAK,CAAC1T,WAAYmU,EAAgB7R,SAChCzE,EAAMyW,KAAKvW,IACVoC,EAAAA,EAAAA,KAACgR,GAAI,IAECpT,GADC,gBAAgBA,EAAK2M,cAAc3M,EAAK0M,YAAY1M,EAAKC,YAAYD,EAAK0T,kBAMtF1R,GAAiC,IAAjBlC,EAAMiP,QACrB1E,EAAAA,EAAAA,MAACqL,GAAQ,IAAKS,EAAe,SAAQ5R,SAAA,EACnCnC,EAAAA,EAAAA,KAACgC,EAAAA,EAAU,CAACmG,QAAQ,KAAIhG,UACtBnC,EAAAA,EAAAA,KAACF,EAAgB,CAACuI,GAAG,gBAEvBJ,EAAAA,EAAAA,MAACjG,EAAAA,EAAU,CAACmG,QAAQ,QAAOhG,SAAA,CAAC,MACxBnC,EAAAA,EAAAA,KAACF,EAAgB,CAACuI,GAAG,oBAAoB,WAG7C,SAENrI,EAAAA,EAAAA,KAACqJ,GAAM,IAAK6K,MACP,E,eCpDX,MAAME,GAAYA,CAACnN,EAAuBvK,KAAY,IAE/CqK,GACH/F,QAAS,QACTiG,OACA3F,SAAU,QACVC,UAAW,OACX4F,IAAK,2BACLzF,WAAY,wDAEZ0H,OAAQ1M,EAAM0M,OAAOiL,OAAS,IAIrBC,IAAYnU,EAAAA,EAAAA,GAAOoU,GAAAA,EAAPpU,EAItB,EAAGN,YAAc/B,aAAapB,WAAY0X,GAAUtW,EAAY,EAAI,OAAQpB,KAGlE8X,IAAerU,EAAAA,EAAAA,GAAO,MAAPA,EAAc,EAAGzD,WAAY0X,GAAU,gBAAgBnB,MAAsBvW,KClB5F+X,GAA2C1U,IACtD,MAAM,UAAEsC,IAAcC,EAAAA,EAAAA,MAChB,yBAAE9D,EAAwB,UAAEV,EAAS,mBAAE4B,EAAkB,aAAEC,EAAY,WAAEE,GAAevD,EAAWyD,GAEzG,OAAIvB,GAEAwB,EAAAA,EAAAA,KAACwU,GAAY,CAAArS,UACXnC,EAAAA,EAAAA,KAAC0U,EAAAA,EAAI,CAACC,GAAI7W,EAAUqE,UAClBnC,EAAAA,EAAAA,KAAA,OAAK,cAAaqC,EAAU,kBAAkBF,UAC5CnC,EAAAA,EAAAA,KAAC4T,GAAO,IAAKjU,WAQrBK,EAAAA,EAAAA,KAACsU,GAAS,CACR9N,qBAAmB,EACnBoO,eAAa,EACb/U,WAAYA,EACZ6G,KAAM5I,EACN+W,MAAO,CAAEC,SAAUC,EAAAA,GACnBC,UAAW,CACTF,SAAU,CACRhP,QAASpG,IAEXyC,UAEFnC,EAAAA,EAAAA,KAAC0U,EAAAA,EAAI,CAACC,GAAI7W,EAAUqE,UAClBnC,EAAAA,EAAAA,KAAA,OAAK,cAAaqC,EAAU,kBAAkBF,UAC5CnC,EAAAA,EAAAA,KAAC4T,GAAO,IAAKjU,SAGP,EC9BHsV,GAA2C,CACtDC,OAAQ,SACRC,KAAM,OACNC,SAAU,YACVC,SAAU,YACVC,gBAAiB,mCACjBC,WAAY,eACZC,WAAY,eACZC,IAAK,MACLC,sBAAuB,kCACvBC,gBAAiB,oBACjBC,UAAW,aAGAC,GAAwB,oBCpBxBC,GAAuC,CAAC,gBAAiB,qBAAsB,sB,0BCErF,MAAMC,GAA8DA,EAAGC,SAAQ7T,eACpF,MAAM8T,ECCD,UAAoC,OAAED,IAC3C,MAAME,EAAa,IACdC,GAAAA,GACHC,UAAY/a,IACVZ,EAAQ,oFAAsEY,EAAK,IAIjF,KAAEA,EAAI,aAAEgb,IAAiBC,EAAAA,GAAAA,KAA6CN,EAAQ,CAClFO,IAAKL,IAGP,MAAO,CACLja,iBAAkBZ,EAClBa,0BAA2Bma,EAE/B,CDjBuBG,CAA2B,CAAER,WAElD,OAAOhW,EAAAA,EAAAA,KAACjE,EAAwBK,SAAQ,CAAC2O,MAAOkL,EAAa9T,SAAEA,GAA4C,E,yBEN7G,MACMsU,GAAY,CAChBC,sBAAuB,IACvBC,UAAU,KACPC,GAAAA,IASQC,GAAuDA,EAClE1U,WACA2U,gBAAiBC,EACjBC,eACAhB,aAEA,MAAMiB,EAAoB,CAAEC,QAASF,EAAcD,WAAUf,SAAQmB,QAnBvD,KAqBd,OACEnX,EAAAA,EAAAA,KAACoX,GAAAA,GAAS,CAACrM,MAAO0L,GAAUtU,UAC1BnC,EAAAA,EAAAA,KAACqX,GAAAA,EAAuB,IAAKJ,EAAiB9U,SAAGA,KACvC,ECfHmV,GAAkDC,IAC7D,MAAMC,E9CL4B3c,KAClC,MAAM2J,EAA0B,IAC3B3J,EACH0B,0BAA2BtB,QAAQJ,EAAa0B,2BAChDya,cAAcS,EAAAA,EAAAA,GAAoB5c,EAAamc,cAAc,GAAO,IAItE,OAFAvc,EAAQ,2BAA4B+J,GAE7BA,CAAM,E8CHakT,CAAoBH,GACxCI,ECX4BC,GAAGd,kBAAiBE,eAAchB,SAAQ6B,mBACxC,CAClCC,yBAA0B,CACxBZ,QAASF,EACTlS,QAAUhJ,IACR1B,EAAW0B,MAAMA,EAAgB,CAAE8I,OAAQ,yBAA0B,EAEvEoR,UAEFc,kBACAiB,kCAAmC,CACjC,CAAClC,IAAwBZ,IAE3B+C,2BAA4BH,EAAe,CAAE,CAAChC,IAAwBgC,QAAiBhc,IDFhE+b,CAAqBJ,IACxC,gBAAEV,EAAe,aAAEE,EAAY,OAAEhB,EAAM,0BAAEzZ,GAA8Bib,EACvES,EAAmB,CAAEnB,kBAAiBE,eAAchB,UAE1D,OACEhW,EAAAA,EAAAA,KAACkY,EAAAA,WAAU,CAAA/V,UACTnC,EAAAA,EAAAA,KAACmY,EAAAA,EAAc,CAACC,OAAQhe,EAAW+H,UACjCnC,EAAAA,EAAAA,KAACqY,EAAAA,EAAa,CAACC,SAAU,GAAGne,aAAoBgI,UAC9CnC,EAAAA,EAAAA,KAACgJ,EAAAA,SAAQ,CAACC,SAAU,KAAK9G,UACvBnC,EAAAA,EAAAA,KAACuY,EAAAA,EAAc,CACbC,QAASre,EACTse,KAAMC,EAAAA,EAAKC,SAASxW,UAEpBnC,EAAAA,EAAAA,KAAC6W,GAAW,IAAKoB,EAAgB9V,UAC/BnC,EAAAA,EAAAA,KAAC+V,GAAwB,CAACC,OAAQA,EAAO7T,UACvCnC,EAAAA,EAAAA,KAAC4Y,EAAAA,EAAqB,CACpB7B,SAAUD,EACVd,OAAQA,EACR6C,QAAS,CAAEtC,IAAK,CAAEI,UAAU,IAAUxU,UAEtCnC,EAAAA,EAAAA,KAAC8Y,EAAAA,EAAoB,IAAKnB,EAAgBxV,UACxCnC,EAAAA,EAAAA,KAAC+Y,EAAAA,EAA6B,CAACC,UAAWnD,GAAsB1T,UAC9DnC,EAAAA,EAAAA,KAACiZ,EAAAA,EAAuB,CACtBnD,WAAYA,GACZoD,oBAAqB/e,EAASgI,UAE9BnC,EAAAA,EAAAA,KAACyU,GAAc,CAAClY,0BAA2BA,yBAWpD,EElDJ4c,GAA2BA,EAAGtB,kBAAiBN,MAC1DvX,EAAAA,EAAAA,KAACsX,GAAyB,IAAKC,I,eCA1B,MAAMnd,GAAa,IAAIC,EAAAA,EAAO+e,GAAAA,GAAc,CAAE9e,SAAU+e,GAAAA,MAEvC7e,EAAAA,EAAAA,IAAeL,GAAAA,ICKhC2J,eAAewV,GAAOC,GAC3B,MAAM,OAAE3e,EAAS,IAAO2e,EAAYC,QAC9BjC,EAAiC,IAAK5c,EAAiBC,GAAS2B,0BAA2BvB,KAQ/Fye,EAAAA,EAAoBC,YAAWC,EAAAA,EAAAA,OAGjCC,EAAAA,EAAAA,GAAWL,GAAaD,QACtBtZ,EAAAA,EAAAA,KAACmY,EAAAA,EAAc,CAACC,OAAQhe,GAAW+H,UACjCnC,EAAAA,EAAAA,KAACqY,EAAAA,EAAa,CAACC,SAAU,GAAGne,GAAAA,cAAoBgI,UAC9CnC,EAAAA,EAAAA,KAAC6Z,EAAAA,EAAa,CACZC,qBAAmB,EACnBC,SAAUC,GAAAA,GAAkB7X,UAE5BnC,EAAAA,EAAAA,KAACmZ,GAAG,IAAK5B,UAKnB,C","sources":["webpack://oriminishoppingbag/../../src/constants-generated.ts","webpack://oriminishoppingbag/../../src/logger.ts","webpack://oriminishoppingbag/../../../src/utils/getConfiguration.ts","webpack://oriminishoppingbag/../../../src/utils/isECatalogue.ts","webpack://oriminishoppingbag/../../../src/contexts/apiConfigurationContext.ts","webpack://oriminishoppingbag/../../../src/hooks/useBreakpointIndex.ts","webpack://oriminishoppingbag/../../../src/hooks/useMiniBag.ts","webpack://oriminishoppingbag/../../../src/components/FormattedMessage.tsx","webpack://oriminishoppingbag/../../../../src/components/MainButton/styles.ts","webpack://oriminishoppingbag/../../../../src/components/MainButton/MainButton.tsx","webpack://oriminishoppingbag/../../../src/utils/showErrorNotification.ts","webpack://oriminishoppingbag/../../../src/hooks/useTranslations.ts","webpack://oriminishoppingbag/../../../src/hooks/useBasketSharing.ts","webpack://oriminishoppingbag/../../../src/utils/getSharedContent.ts","webpack://oriminishoppingbag/../../../src/utils/triggerShareItemClickEvent.ts","webpack://oriminishoppingbag/../../../src/constants/styles.ts","webpack://oriminishoppingbag/../../../../src/components/Loader/styles.ts","webpack://oriminishoppingbag/../../../../src/components/Loader/Loader.tsx","webpack://oriminishoppingbag/../../../../src/components/ShareButton/styles.ts","webpack://oriminishoppingbag/../../../../src/components/ShareButton/ShareButton.tsx","webpack://oriminishoppingbag/../../../../src/components/SharingWrapper/SharingWrapper.tsx","webpack://oriminishoppingbag/../../../../src/components/Footer/styles.ts","webpack://oriminishoppingbag/../../../../src/components/Footer/Footer.tsx","webpack://oriminishoppingbag/../../../../src/components/Header/styles.ts","webpack://oriminishoppingbag/../../../../src/components/Header/Header.tsx","webpack://oriminishoppingbag/../../../src/hooks/useQuantityPicker.ts","webpack://oriminishoppingbag/../../../../src/components/QuantityPicker/styles.ts","webpack://oriminishoppingbag/../../../../src/components/QuantityPicker/QuantityPicker.tsx","webpack://oriminishoppingbag/../../../../src/components/RemoveButton/styles.ts","webpack://oriminishoppingbag/../../../../src/components/RemoveButton/RemoveButton.tsx","webpack://oriminishoppingbag/../../../../src/components/Shade/styles.ts","webpack://oriminishoppingbag/../../../../src/components/Shade/ShadeElement.tsx","webpack://oriminishoppingbag/../../../../src/components/Shade/Shade.tsx","webpack://oriminishoppingbag/../../../../src/components/Item/styles.ts","webpack://oriminishoppingbag/../../../../src/components/Item/Item.tsx","webpack://oriminishoppingbag/../../../src/utils/removeBasketItem.ts","webpack://oriminishoppingbag/../../../src/utils/updateBasketItem.ts","webpack://oriminishoppingbag/../../../../src/components/LoadingOverlay/styles.ts","webpack://oriminishoppingbag/../../../../src/components/LoadingOverlay/LoadingOverlay.tsx","webpack://oriminishoppingbag/../../../../src/components/MiniBag/styles.ts","webpack://oriminishoppingbag/../../../../src/components/MiniBag/MiniBag.tsx","webpack://oriminishoppingbag/../../../../src/components/MiniBagWrapper/styles.ts","webpack://oriminishoppingbag/../../../../src/components/MiniBagWrapper/MiniBagWrapper.tsx","webpack://oriminishoppingbag/../../../src/constants/defaultTranslations.ts","webpack://oriminishoppingbag/../../../src/constants/index.ts","webpack://oriminishoppingbag/../../../src/containers/ApiConfigurationProvider.tsx","webpack://oriminishoppingbag/../../../src/hooks/useGetApiConfigurationData.ts","webpack://oriminishoppingbag/../../../src/containers/ApiProvider.tsx","webpack://oriminishoppingbag/../../../src/containers/MiniShoppingBagController.tsx","webpack://oriminishoppingbag/../../../src/utils/getTranslationsProps.ts","webpack://oriminishoppingbag/./src/App.tsx","webpack://oriminishoppingbag/./src/logger.ts","webpack://oriminishoppingbag/./src/appRender.tsx"],"sourcesContent":["/* istanbul ignore file */\n//\n// DO NOT EDIT!\n// This file was autogenerated by Eddie.\n// Changes may cause incorrect behavior and will be lost when the file is regenerated.\n//\n// Run `npx eddie update workspace` to regenerate.\n//\n\nexport const APP_NAME = 'mini-shopping-bag-lib';\nexport const PACKAGE_NAME = '@ori/mini-shopping-bag-lib';\nexport const TEAM_NAME = 'Checkout';\n\nexport const EMOTION_CACHE_KEY = `${APP_NAME}-emotion-cache-key`;\n\nexport const APP_ROOT_ELEMENT_ID = `${APP_NAME}-root`;\n","import { getDebugLogger, getInfoLogger } from '@ori/checkout-utils';\nimport { Logger } from '@ori/logger';\n\nimport { APP_NAME, PACKAGE_NAME, TEAM_NAME } from './constants';\n\nexport const mainLogger = new Logger(PACKAGE_NAME, { teamName: TEAM_NAME });\n\nexport const logDebug = getDebugLogger(APP_NAME);\nexport const logInfo = getInfoLogger(APP_NAME);\n","import { normalizeSlashChars } from '@ori/checkout-utils';\nimport { parseClientAppConfig } from '@ori/client-app-config';\n\nimport { logDebug, logInfo } from '../logger';\nimport type { ClientAppConfig } from '../types';\n\n/**\n * Normalizes some values in the raw parsed config.\n * @param parsedConfig Original config data returned by the parseClientAppConfig method.\n * @returns Final normalized configuration.\n */\nexport const normalizeConfigData = (parsedConfig: ClientAppConfig) => {\n const result: ClientAppConfig = {\n ...parsedConfig,\n useOpenedMinibagOnDesktop: Boolean(parsedConfig.useOpenedMinibagOnDesktop),\n staticApiUrl: normalizeSlashChars(parsedConfig.staticApiUrl, false, false),\n };\n logInfo('normalized configuration', result);\n\n return result;\n};\n\n/**\n * Parses the configuration.\n * @param config Config data serialized in a string in JSON format.\n * Usually taken from data-config HTML attribute of the component's root element.\n * @returns Normalized component configuration.\n */\nexport const getConfiguration = (config: string) => {\n const parsedConfig = parseClientAppConfig(config, ['currentLanguage', 'staticApiUrl', 'tenant']);\n logDebug('parsed configuration', parsedConfig);\n\n return parsedConfig;\n};\n","export const E_CATALOGUE_ROOT_ELEMENT_ID = 'catalogue-ipaper-root';\n\ntype PartialNextJsInfo = {\n page: string;\n query: {\n catalogueCode?: string[];\n };\n};\n\n/**\n * Legacy determination if in eCatalogue / iPaper page.\n * TODO: Remove ASAP.\n * @deprecated\n */\nexport function isECatalogue() {\n // Old agreed integration was to have this root element in page rendered from server.\n const isRootElement = Boolean(document.getElementById(E_CATALOGUE_ROOT_ELEMENT_ID));\n if (isRootElement) {\n return true;\n }\n\n // The above might not be rendered yet in page after migration to AppShell.\n // Let's try examining the NextJS serialized data then.\n // There should be serialized data similar to this:\n // \"page\": \"/internal/[tenant]/[language]/catalogue/[...catalogueCode]\",\n // \"query\": {\n // \"tenant\": \"hu\",\n // \"language\": \"hu-HU\",\n // \"catalogueCode\": [\"digital-catalogue-current\"]\n // },\n try {\n const element = document.getElementById('__NEXT_DATA__');\n if (!element) {\n return false;\n }\n\n const data = JSON.parse(element.innerText) as PartialNextJsInfo;\n const {\n page,\n query: { catalogueCode },\n } = data;\n\n return page.includes('/internal/[tenant]/[language]/catalogue/[...catalogueCode]') && catalogueCode !== undefined;\n } catch (error) {\n return false;\n }\n}\n","import { useContext, createContext } from 'react';\n\nimport type { ApiConfigurationProps } from '../types';\n\nexport const apiConfigurationContext = createContext({\n apiConfiguration: undefined,\n isApiConfigurationLoading: false,\n});\n\nexport const ApiConfigurationContextProvider = apiConfigurationContext.Provider;\n\nexport const useApiConfiguration = () => useContext(apiConfigurationContext);\n","import { useMediaQuery, useTheme } from '@ori-ui/mui';\n\n/**\n * The breakpoint where eCatalogue / iPaper layout\n * logic changes from mobile to desktop.\n */\nexport const E_CATALOGUE_BREAKPOINT = 1024;\n\n/**\n * @returns Zero-based breakpoint index as one of the following:\n * 0 - Small screen for pages other than eCatalogue / iPaper\n * Based on the 'sm' theme size. Minibag is not displayed\n * in this case outside of eCatalogue, and is displayed as a popup\n * in eCatalogue.\n * 1 - Middle breakpoint. Minibag is displayed in a popup for all pages.\n * Size is based on the E_CATALOGUE_BREAKPOINT constant.\n * 2 - Large breakpoint. Minibag is displayed as popup outside of eCatalogue,\n * and in fixed position appearing as page content in eCatalogue\n * (\"desktop\" mode). Size is based on the E_CATALOGUE_BREAKPOINT constant.\n */\nexport const useBreakpointIndex = () => {\n const theme = useTheme();\n const isSmallScreen = useMediaQuery(theme.breakpoints.down('sm'), { noSsr: true });\n const isMiddleScreen = useMediaQuery(theme.breakpoints.down(E_CATALOGUE_BREAKPOINT), {\n noSsr: true,\n });\n\n let breakpointIndex = 0;\n\n if (isSmallScreen) {\n breakpointIndex = 0;\n } else if (isMiddleScreen) {\n breakpointIndex = 1;\n } else {\n breakpointIndex = 2;\n }\n\n return breakpointIndex;\n};\n","/* eslint-disable node/callback-return -- TODO: fix later */\nimport * as ToggleMenuFlyout from '@ori-events/toggle-menu-flyout';\nimport { useShoppingContext } from '@ori/shopping-context';\nimport type { DebouncedFunc } from 'lodash';\nimport debounce from 'lodash.debounce';\nimport { useCallback, useEffect, useState } from 'react';\n\nimport type { MiniBagProps } from '../components/MiniBag';\nimport type { MiniBagWrapperProps } from '../components/MiniBagWrapper';\nimport { useApiConfiguration } from '../contexts';\nimport { logDebug } from '../logger';\nimport { useBreakpointIndex } from './useBreakpointIndex';\n\ntype ToggleMenuCallbackResult = DebouncedFunc<() => void> | undefined;\n\nexport const useMiniBag = ({ useOpenedMinibagOnDesktop }: MiniBagWrapperProps) => {\n const breakpointIndex = useBreakpointIndex();\n const { isLoading, isLoaded, shoppingContext } = useShoppingContext();\n const { isApiConfigurationLoading } = useApiConfiguration();\n const { apiConfiguration: { isBasketSharingEnabled = false } = {} } = useApiConfiguration();\n const { isAnonymous = false, shoppingBag: { shoppingBagItems = [] } = {} } = shoppingContext ?? {};\n const items = shoppingBagItems.filter((item) => item.itemType !== 'U');\n const [isVisible, setIsVisible] = useState(false);\n const [lastCallback, setLastCallback] = useState(undefined);\n const setCallback = useCallback(\n (callback: ToggleMenuCallbackResult) =>\n setLastCallback((oldCallback) => {\n if (oldCallback) {\n logDebug('cancelling old callback ...');\n oldCallback.cancel();\n }\n logDebug('setting up toggle menu callback:', callback);\n callback?.();\n\n return callback;\n }),\n [],\n );\n\n logDebug('Rendering ...\\n\\t current state:', {\n shoppingContext,\n breakpointIndex,\n isVisible,\n lastCallback,\n useOpenedMinibagOnDesktop,\n });\n\n const isOpenedMinibagOnDesktop = useOpenedMinibagOnDesktop && breakpointIndex === 2;\n const isOtherPageSmallScreen = !useOpenedMinibagOnDesktop && breakpointIndex === 0;\n\n const debouncedHide = useCallback(\n () =>\n debounce(() => {\n setCallback(undefined);\n setIsVisible(false);\n }, 500),\n [setCallback, setIsVisible],\n );\n\n const toggleMenuCallback = useCallback<(data: ToggleMenuFlyout.Event) => DebouncedFunc<() => void> | undefined>(\n (data: ToggleMenuFlyout.Event) => {\n logDebug('toggleMenuCallback - event:', data);\n\n if (isOpenedMinibagOnDesktop || isOtherPageSmallScreen) {\n logDebug('toggleMenuCallback: ignored in this breakpoint');\n\n return undefined;\n }\n\n if (data.detail.menuType !== ToggleMenuFlyout.MenuTypes.Minibag) {\n logDebug('toggleMenuCallback: toggle-menu-flyout event for another component, closing ...');\n setIsVisible(false);\n\n return undefined;\n }\n\n if (typeof data.detail.shouldOpen === 'undefined') {\n logDebug(\n 'toggleMenuCallback: toggle-menu-flyout event without shouldOpen property set,',\n 'toggling visibility ...',\n );\n setIsVisible((previousState) => !previousState);\n\n return undefined;\n }\n\n if (data.detail.shouldOpen) {\n logDebug('toggleMenuCallback: toggle-menu-flyout event with shouldOpen === true, opening ...');\n setIsVisible(true);\n\n return undefined;\n }\n\n logDebug(\n 'toggleMenuCallback: toggle-menu-flyout event with shouldOpen === false',\n 'closing scheduled after 500 ms ...',\n );\n\n return debouncedHide();\n },\n [debouncedHide, isOpenedMinibagOnDesktop, isOtherPageSmallScreen, setIsVisible],\n );\n\n useEffect(() => {\n // always show in eCatalog \"desktop\" mode\n if (isOpenedMinibagOnDesktop) {\n logDebug('useOpenedMinibagOnDesktop - always shown: opening ...');\n setIsVisible(true);\n }\n // always hide in other pages small screen\n if (isOtherPageSmallScreen) {\n logDebug('other pages and small breakpoint - always hidden: closing ...');\n setIsVisible(false);\n }\n\n const toggleMenuFlyoutHandler = ((data: ToggleMenuFlyout.Event) =>\n setCallback(toggleMenuCallback(data))) as EventListener;\n\n window.addEventListener(ToggleMenuFlyout.Name, toggleMenuFlyoutHandler);\n\n return () => window.removeEventListener(ToggleMenuFlyout.Name, toggleMenuFlyoutHandler);\n }, [\n breakpointIndex,\n isOpenedMinibagOnDesktop,\n isOtherPageSmallScreen,\n lastCallback,\n setCallback,\n setIsVisible,\n toggleMenuCallback,\n useOpenedMinibagOnDesktop,\n ]);\n\n const handleOverlayClick = () => {\n if (!isOpenedMinibagOnDesktop) {\n setIsVisible(false);\n }\n };\n\n const onMouseEnter = useCallback(() => {\n if (useOpenedMinibagOnDesktop || isOtherPageSmallScreen) {\n logDebug('mouseenter: ignored in this breakpoint');\n\n return;\n }\n logDebug('mouseenter');\n setCallback(undefined);\n }, [useOpenedMinibagOnDesktop, isOtherPageSmallScreen, setCallback]);\n\n const onMouseLeave = useCallback(() => {\n if (useOpenedMinibagOnDesktop || isOtherPageSmallScreen) {\n logDebug('mouseleave: ignored in this breakpoint');\n\n return;\n }\n logDebug('mouseleave: hiding ...');\n setIsVisible(false);\n }, [useOpenedMinibagOnDesktop, isOtherPageSmallScreen, setIsVisible]);\n\n const ownerState = { breakpointIndex, isOpenedMinibagOnDesktop, isVisible, useOpenedMinibagOnDesktop };\n\n const minibagProps: MiniBagProps = {\n breakpointIndex,\n isBasketSharingEnabled: isBasketSharingEnabled && isLoaded && isAnonymous,\n isDataLoaded: isLoaded,\n useOpenedMinibagOnDesktop,\n isLoading: isLoading || isApiConfigurationLoading,\n items,\n onMouseEnter,\n onMouseLeave,\n };\n\n return {\n isOpenedMinibagOnDesktop,\n isVisible,\n handleOverlayClick,\n minibagProps,\n ownerState,\n };\n};\n","/* istanbul ignore file */\n\n/**\n * DO NOT EDIT!\n * This file was autogenerated by npm script `localizations-codegen`.\n * Changes may cause incorrect behavior and will be lost when the file is regenerated.\n *\n * Run `npx localizations-codegen` to regenerate.\n */\nimport { FormattedMessage as NotTypedFormattedMessage, type FormattedMessageProps } from '@ori/i18n';\n\nimport type { DefaultTranslations } from '../constants/defaultTranslations';\n\n/**\n * Renders a formatted internationalized message using the provided translation data.\n *\n * @returns The FormattedMessage typed with keys within the specified namespace.\n */\nexport const FormattedMessage = (props: FormattedMessageProps) => (\n {...props} />\n);\n","import { Typography, styled, Link } from '@ori-ui/mui';\n\nexport const Root = styled(Link)(({ theme }) => ({\n background: theme.palette.primary.main,\n border: '2px solid',\n borderColor: theme.palette.primary.main,\n borderRadius: '999px', // TODO: ?\n boxSizing: 'border-box',\n color: theme.palette.background.paper,\n cursor: 'pointer',\n display: 'block',\n fontWeight: 'bold',\n height: 45,\n margin: theme.spacing(1),\n maxWidth: '100%',\n position: 'relative',\n textAlign: 'center',\n textDecoration: 'none',\n textTransform: 'uppercase',\n transition: 'box-shadow 0.15s, transform 0.15s',\n verticalAlign: 'middle',\n whiteSpace: 'nowrap',\n '&:hover': {\n boxShadow: '0 3px 8px 0 rgba(51, 51, 51, 0.1)',\n color: theme.palette.background.paper,\n transform: 'scale(1.01)', // TODO: ?\n },\n}));\n\nexport const Label = styled(Typography)(({ theme }) => ({\n fontWeight: 'bold',\n lineHeight: `${theme.spacing(8)}`,\n}));\n","import useTestId from '@ori/testid-generator';\nimport type { FC, PropsWithChildren } from 'react';\n\nimport { useApiConfiguration } from '../../contexts';\nimport { Label, Root } from './styles';\n\nexport const MainButton: FC = ({ children }) => {\n const { apiConfiguration: { goToBasketUrl } = {} } = useApiConfiguration();\n const { getTestId } = useTestId();\n\n return (\n \n \n \n );\n};\n","import { Name, translationKeys } from '@ori-events/show-error-notification';\nimport type { Data, TranslationKey } from '@ori-events/show-error-notification';\n\nexport { translationKeys };\nexport type { TranslationKey };\n\nexport const errorNotificationTimeOut = 3000;\n\nexport const showErrorNotification = (message?: TranslationKey) =>\n window.dispatchEvent(\n new CustomEvent(Name, {\n detail: {\n message,\n notificationOptions: { delay: errorNotificationTimeOut },\n },\n }),\n );\n","/* istanbul ignore file */\n\n/**\n * DO NOT EDIT!\n * This file was autogenerated by npm script `localizations-codegen`.\n * Changes may cause incorrect behavior and will be lost when the file is regenerated.\n *\n * Run `npx localizations-codegen` to regenerate.\n */\nimport { useTranslationsFromNamespace, type UseTranslationsFromNamespaceResult } from '@ori/i18n';\n\nimport type { DefaultTranslations } from '../constants/defaultTranslations';\n\n/**\n * A hook for accessing translations within a specific namespace along with a formatting function.\n *\n * @returns The translations within the specified namespace and a formatting function.\n */\nexport const useTranslations: () => UseTranslationsFromNamespaceResult = () =>\n useTranslationsFromNamespace();\n","import { ContentType, Placement } from '@ori/analytics-data';\nimport type { CopyLinkPanelProps, SharedContent, SharingPanelProps, VendorType } from '@ori/sharing-panel';\nimport { share, SharingCapability } from '@ori/sharing-panel';\nimport { useCallback, useState } from 'react';\n\nimport { type ShareButtonProps } from '../components/ShareButton';\nimport type { SharingWrapperProps } from '../components/SharingWrapper/types';\nimport { logDebug, mainLogger } from '../logger';\nimport { getSharedContent, showErrorNotification, translationKeys, triggerShareItemClickEvent } from '../utils';\nimport { useTranslations } from './useTranslations';\n\nexport const useBasketSharing = ({ isSharingButtonActive }: SharingWrapperProps) => {\n const [isPanelOpen, setIsPanelOpen] = useState(false);\n const [isCopyLinkOpen, setIsCopyLinkOpen] = useState(false);\n const [sharedContent, setSharedContent] = useState>({});\n const [link, setLink] = useState('');\n const isPopupOpen = isPanelOpen || isCopyLinkOpen;\n\n const { formatMessage } = useTranslations();\n\n const onShareButtonClick = useCallback(async () => {\n logDebug('onShareButtonClick()');\n try {\n const data = await getSharedContent();\n setSharedContent(data);\n setIsPanelOpen(true);\n } catch (error: unknown) {\n showErrorNotification(translationKeys.genericError);\n mainLogger.error(error as Error, { action: 'onShareButtonClick' });\n }\n }, []);\n\n const onClose = useCallback(() => {\n logDebug('Closing sharing wrapper ...');\n setIsPanelOpen(false);\n setIsCopyLinkOpen(false);\n }, []);\n\n const onError = useCallback(() => {\n onClose();\n showErrorNotification(translationKeys.genericError);\n }, [onClose]);\n\n const onCopyLink = useCallback((vendor: VendorType, finalSharedLink: string) => {\n logDebug('onCopyLink()', { finalSharedLink, vendor });\n setLink(finalSharedLink);\n setIsCopyLinkOpen(true);\n }, []);\n\n const onShareIconClick = useCallback(\n async (vendor: VendorType) => {\n logDebug('onShareIconClick handler called.');\n // close sharing popup\n onClose();\n // always monitor user intentions even when the checks later will fail\n triggerShareItemClickEvent({\n contentType: ContentType.ProductList,\n method: vendor,\n placement: Placement.Minibag,\n });\n // start the sharing process\n void share({ onCopyLink, onError, sharedContent, vendor });\n },\n [onClose, onCopyLink, onError, sharedContent],\n );\n\n const shareButtonProps: ShareButtonProps = {\n isSharingButtonActive,\n onClick: onShareButtonClick,\n };\n\n const { ShareUrlAndText } = SharingCapability;\n const panelProps: SharingPanelProps = {\n // sharing capabilities filter so far hard-coded here\n capabilities: [ShareUrlAndText],\n captionText: formatMessage('shareWithBrandPartner'),\n isCopyLinkIconDisplayed: true,\n onError,\n onShareIconClick,\n };\n\n const copyLinkPopupProps = { header: formatMessage('copyLink') } as const;\n const sharePopupProps = { size: 'small' } as const;\n const popupProps = {\n disableEnforceFocus: true,\n disableTransition: true,\n onClose,\n open: isPopupOpen,\n ownerState: { isCopyLinkOpen },\n ...(isCopyLinkOpen ? copyLinkPopupProps : sharePopupProps),\n } as const;\n\n const copyLinkProps: CopyLinkPanelProps = {\n buttonText: formatMessage('copy'),\n copiedText: formatMessage('linkCopied'),\n link,\n };\n\n return {\n copyLinkProps,\n isCopyLinkOpen,\n isPanelOpen,\n isPopupOpen,\n panelProps,\n popupProps,\n shareButtonProps,\n };\n};\n","/* eslint-disable @typescript-eslint/naming-convention -- HTTP header names */\nimport { axios } from '@ori/axios';\nimport type { SharingProps } from '@ori/sharing-panel';\n\nimport { logDebug } from '../logger';\n\nexport const getSharedContent = async () => {\n // TODO: API for this?\n const contentInfoUrl = '/system/ajax/CustomerOrderDetail/GetBasketLink';\n logDebug('Loading shared content ...');\n const response = await axios.get(`${window.location.origin}${contentInfoUrl}`, {\n headers: {\n 'Cache-Control': 'no-cache',\n 'Access-Control-Allow-Origin': '*',\n 'Service-Worker-Allowed': '/',\n Pragma: 'no-cache',\n Expires: '0',\n },\n });\n const { data } = response;\n const message = data.message.replaceAll('\\n\\n, ', ', \\n\\n').replaceAll(/\\n{3}/g, '\\n\\n');\n const result = { ...data, message };\n logDebug('getSharedContent() data:', result);\n\n return result;\n};\n","import * as ShareItemClickEvent from '@ori-events/share-item-click';\n\nimport { logDebug } from '../logger';\n\nexport const triggerShareItemClickEvent = (detail: ShareItemClickEvent.Data) => {\n const customEvent = new CustomEvent(ShareItemClickEvent.Name, {\n detail,\n });\n logDebug(`Triggering custom event for analytics:`, customEvent);\n window.dispatchEvent(customEvent);\n};\n","export const basePositionStyles = {\n bottom: 0,\n left: 0,\n position: 'absolute',\n right: 0,\n top: 0,\n} as const;\n\nexport const centeredFlexStyles = {\n alignItems: 'center',\n display: 'flex',\n height: '100%',\n justifyContent: 'center',\n width: '100%',\n} as const;\n","import { keyframes } from '@emotion/react';\nimport { OriflameSpinner } from '@ori-ui/icons';\nimport { styled } from '@ori-ui/mui';\n\nimport { centeredFlexStyles } from '../../constants';\n\nconst spin = keyframes`\n from {\n transform: rotate(0deg);\n }\n to {\n transform: rotate(360deg);\n }\n`;\n\nexport const Root = styled('div')(centeredFlexStyles);\n\nexport const Spinner = styled(OriflameSpinner)({\n animation: `${spin} 1s linear infinite`,\n});\n","import type { FC } from 'react';\n\nimport { Root, Spinner } from './styles';\n\nexport const Loader: FC = () => (\n \n \n \n);\n","import { styled, Button } from '@ori-ui/mui';\n\nexport const Root = styled(Button)(({ theme }) => ({\n width: `calc(100% - ${theme.spacing(2)})`,\n margin: theme.spacing(1),\n}));\n","import { Share } from '@ori-ui/icons';\nimport useTestId from '@ori/testid-generator';\nimport type { FC } from 'react';\n\nimport { FormattedMessage } from '../FormattedMessage';\nimport { Root } from './styles';\nimport type { ShareButtonProps } from './types';\n\nexport const ShareButton: FC = ({ isSharingButtonActive, onClick }) => {\n const { getTestId } = useTestId();\n\n return (\n \n \n \n \n );\n};\n","import { Dialog, dialogClasses } from '@ori-ui/components';\nimport { styled } from '@ori-ui/mui';\nimport { lazy, Suspense } from 'react';\nimport type { FC } from 'react';\n\nimport { useBasketSharing } from '../../hooks';\nimport { logDebug } from '../../logger';\nimport { Loader } from '../Loader';\nimport { ShareButton } from '../ShareButton';\nimport type { SharingWrapperProps } from './types';\n\nconst CopyLinkPanel = lazy(async () => import('./CopyLinkPanel'));\nconst SharingPanel = lazy(async () => import('./SharingPanel'));\n\nconst SharingPopup = styled(Dialog)<{\n ownerState: { isCopyLinkOpen: boolean };\n}>(({ ownerState: { isCopyLinkOpen }, theme }) => ({\n ...(isCopyLinkOpen && {\n [`&.${dialogClasses.header}`]: {\n paddingBottom: theme.spacing(6),\n },\n [`&.${dialogClasses.content}`]: {\n maxWidth: 540,\n },\n }),\n}));\n\nexport const SharingWrapper: FC = (props) => {\n const { copyLinkProps, isCopyLinkOpen, isPanelOpen, isPopupOpen, panelProps, popupProps, shareButtonProps } =\n useBasketSharing(props);\n\n logDebug('Rendering SharingWrapper.tsx, popupProps:', popupProps);\n\n return (\n <>\n \n {isPopupOpen ? (\n \n <>\n {isPanelOpen ? (\n }>\n \n \n ) : null}\n {isCopyLinkOpen ? (\n }>\n \n \n ) : null}\n \n \n ) : null}\n \n );\n};\n","import { styled } from '@ori-ui/mui';\n\nexport const Root = styled('div')(({ theme }) => ({\n background: 'linear-gradient(to top, #fff 20%, rgba(255,255,255,0.9) 30%)',\n bottom: 0,\n boxSizing: 'border-box',\n justifySelf: 'flex-end',\n padding: theme.spacing(3),\n position: 'absolute',\n width: '100%',\n zIndex: 2,\n}));\n","import type { FC } from 'react';\n\nimport { FormattedMessage } from '../FormattedMessage';\nimport { MainButton } from '../MainButton';\nimport { SharingWrapper } from '../SharingWrapper';\nimport { Root } from './styles';\nimport type { FooterProps } from './types';\n\nexport const Footer: FC = ({ isBasketSharingEnabled, isSharingButtonActive }) => (\n \n \n \n \n {isBasketSharingEnabled ? : null}\n \n);\n","import { styled } from '@ori-ui/mui';\n\nexport const Root = styled('div')(({ theme }) => ({\n height: 65,\n position: 'absolute',\n zIndex: 2,\n display: 'flex',\n padding: theme.spacing(0, 4),\n boxSizing: 'border-box',\n alignItems: 'center',\n width: '100%',\n background: 'linear-gradient(to bottom, #fff 20%, rgba(255,255,255,0.9) 30%)',\n color: theme.palette.text.secondary,\n}));\n\nexport const BasketLink = styled('a')(({ theme }) => ({\n color: theme.palette.text.primary,\n textDecoration: 'none',\n}));\n","import { Typography } from '@ori-ui/mui';\nimport useTestId from '@ori/testid-generator';\nimport type { FC } from 'react';\n\nimport { useApiConfiguration } from '../../contexts';\nimport { FormattedMessage } from '../FormattedMessage';\nimport { BasketLink, Root } from './styles';\nimport type { HeaderProps } from './types';\n\nexport const Header: FC = ({ quantity }) => {\n const { apiConfiguration: { goToBasketUrl } = {} } = useApiConfiguration();\n const { getTestId } = useTestId();\n\n return (\n \n \n \n ({quantity.toString()})\n \n \n \n );\n};\n","import type { FocusEventHandler, KeyboardEventHandler } from 'react';\nimport { useReducer, useCallback, useRef } from 'react';\n\nimport { logDebug } from '../logger';\nimport type { CounterValue, HandleQuantityChangeOptions } from '../types';\n\ninterface UseQuantityPickerOptions {\n canBeDeleted: boolean;\n initialQuantity: number;\n itemCode: string;\n lineNumber: number;\n maxQuantity: number;\n onQuantityChange: (options: HandleQuantityChangeOptions) => Promise;\n}\n\nenum ChangeOrigin {\n BlurHandler = 'handleBlur',\n ChangeHandler = 'handleChange',\n KeyDownHandler = 'handleKeyDown',\n}\n\nconst KEY_ENTER = 'Enter';\n\nexport const useQuantityPicker = ({\n canBeDeleted,\n initialQuantity,\n itemCode,\n lineNumber,\n maxQuantity,\n onQuantityChange,\n}: UseQuantityPickerOptions) => {\n const inputRef = useRef(null);\n const isInputFocused = useRef(false);\n const isServerUpdate = useRef(false);\n const [, forceUpdate] = useReducer((x: number) => x + 1, 0);\n const value = useRef(initialQuantity);\n const setValue = useCallback(\n (newValue: CounterValue) => {\n if (newValue === value.current) {\n logDebug('QuantityPicker.setValue() same value as previous, no change:', newValue);\n } else {\n value.current = newValue;\n logDebug('QuantityPicker.setValue() new value was set:', newValue);\n forceUpdate();\n }\n },\n [value],\n );\n\n const changeQuantity = useCallback(\n (inputValue: CounterValue, changeOrigin?: ChangeOrigin) => {\n logDebug(\n 'QuantityPicker.changeQuantity(), inputValue',\n inputValue,\n ', initialQuantity',\n initialQuantity,\n ', maxQuantity',\n maxQuantity,\n ', change origin:',\n changeOrigin,\n );\n\n // ignore '-' value completely - server doesn't accept negative values\n if (inputValue === '-') {\n return;\n }\n\n // non-numeric values\n if (inputValue === '' || Number.isNaN(inputValue)) {\n if (changeOrigin === ChangeOrigin.BlurHandler) {\n // for blur event, let's set some correct numeric value\n setValue(initialQuantity);\n } else {\n // in the middle of the editting process here, just set the local state\n // so that user sees the editted value\n setValue(inputValue);\n }\n\n return;\n }\n\n // checks for min and max quantity\n let currentValue = inputValue;\n\n // just for the case - negative value could be pasted from clipboard for example\n if (currentValue < 0) {\n currentValue = 0;\n logDebug('Current value was set to 0 as negative quantities are not accepted by server.');\n }\n\n if (currentValue < 1 && !canBeDeleted) {\n currentValue = 1;\n logDebug('Current value was set to 1 as the item cannot be deleted.');\n }\n\n if (currentValue > maxQuantity) {\n currentValue = maxQuantity;\n logDebug(`Current value was limited to max quantity ${maxQuantity}.`);\n }\n\n // skip calling updates on server when same as initial quantity\n // skip server updates when the user is edditting the input value directly ATM\n // (the change in handleKeyDown is called only for specific key(s) like Enter,\n // so it should call server for those cases, but the focus still stays in the input)\n if (\n currentValue === initialQuantity ||\n (isInputFocused.current && changeOrigin !== ChangeOrigin.KeyDownHandler)\n ) {\n // just set local state so that user sees the edit updates\n setValue(currentValue);\n\n return;\n }\n\n // call server updates - this might return updated value of this item's quantity\n // depending on the checkout rule engine;\n // server operation indication is needed for correct derived value state logic\n isServerUpdate.current = true;\n logDebug('Server update flag was set to true.');\n\n const resetFlag = () => {\n isServerUpdate.current = false;\n logDebug('Server update flag was set to false.');\n };\n\n // set local state so that user sees the edit updates;\n // set here so that the isServerUpdate is set up in advance\n setValue(currentValue);\n\n void onQuantityChange({\n itemCode,\n lineNumber,\n quantity: currentValue,\n previousQuantity: initialQuantity,\n }).then(resetFlag);\n },\n [canBeDeleted, initialQuantity, itemCode, lineNumber, maxQuantity, onQuantityChange, setValue],\n );\n\n // Derived value state after server data updates from shopping rule engine. Stays here for merchandising cases:\n // 1. Quantity of item was increased by previous update of another item's amount.\n // 2. Increasing item quantity over limit increases the qty of another item and original item's qty stays the same.\n if (initialQuantity !== value.current && (!isInputFocused.current || isServerUpdate.current)) {\n logDebug(`Setting value to match initialQuantity ${initialQuantity}, value was ${value.current} ...`);\n setValue(initialQuantity);\n }\n\n const handleFocus = ((event) => {\n isInputFocused.current = true;\n const { target } = event;\n const input = target as HTMLInputElement;\n const { value: currentValue } = input;\n logDebug('QuantityPicker.handleFocus(), currentValue', currentValue);\n // selecting whole text value on focus was requested\n input.setSelectionRange(0, currentValue.length);\n }) as FocusEventHandler;\n\n const handleBlur = ((event) => {\n isInputFocused.current = false;\n const { target } = event;\n const input = target as HTMLInputElement;\n const { value: currentValue } = input;\n if (currentValue === '' || currentValue === '-') {\n changeQuantity(currentValue, ChangeOrigin.BlurHandler);\n } else {\n changeQuantity(Number.parseInt(currentValue, 10), ChangeOrigin.BlurHandler);\n }\n }) as FocusEventHandler;\n\n const handleKeyDown = ((event) => {\n const { key, target } = event;\n logDebug('QuantityPicker.handleKeyDown() key', key);\n if (typeof target !== 'object' || key !== KEY_ENTER) {\n return;\n }\n\n const input = target as HTMLInputElement;\n const { value: currentValue } = input;\n const numericValue = Number(currentValue);\n logDebug('QuantityPicker.handleKeyDown() currentValue', currentValue, 'numericValue', numericValue);\n if (currentValue === '' || Number.isNaN(numericValue)) {\n return;\n }\n changeQuantity(numericValue, ChangeOrigin.KeyDownHandler);\n }) as KeyboardEventHandler;\n\n const handleChange = useCallback(\n (inputValue: CounterValue) => changeQuantity(inputValue, ChangeOrigin.ChangeHandler),\n [changeQuantity],\n );\n\n return {\n inputRef,\n isInputFocused: isInputFocused.current,\n isServerUpdate: isServerUpdate.current,\n handleBlur,\n handleChange,\n handleFocus,\n handleKeyDown,\n setValue,\n value: value.current,\n };\n};\n","import { styled } from '@ori-ui/mui';\n\nexport const Root = styled('div')(({ theme }) => ({\n alignItems: 'center',\n alignSelf: 'flex-end',\n display: 'flex',\n position: 'relative',\n width: 125,\n\n [theme.breakpoints.up('md')]: {\n alignSelf: 'center',\n flexShrink: 0,\n },\n}));\n","/* eslint-disable @typescript-eslint/naming-convention -- x */\nimport type { IconButtonProps } from '@ori-ui/components';\nimport { Counter } from '@ori-ui/components';\nimport type { InputProps } from '@ori-ui/mui';\nimport type { FC } from 'react';\n\nimport { useQuantityPicker } from '../../hooks/useQuantityPicker';\nimport { Root } from './styles';\nimport type { QuantityPickerProps } from './types';\n\nexport const QuantityPicker: FC = ({\n 'data-testid': testId,\n canBeDeleted,\n canBeModified,\n canBeReduced,\n initialQuantity,\n itemCode,\n lineNumber,\n maxQuantity,\n onQuantityChange,\n}) => {\n const { inputRef, handleBlur, handleChange, handleFocus, handleKeyDown, value } = useQuantityPicker({\n canBeDeleted,\n initialQuantity,\n itemCode,\n lineNumber,\n maxQuantity,\n onQuantityChange,\n });\n\n return (\n \n \n }\n disabled={!canBeModified}\n IncreaseIconButtonProps={\n {\n 'data-testid': `${testId}-increase`,\n } as Partial\n }\n InputProps={\n {\n type: 'tel',\n inputRef,\n onFocus: handleFocus,\n onBlur: handleBlur,\n onKeyDown: handleKeyDown,\n } as Partial\n }\n maxValue={maxQuantity}\n minValue={canBeReduced ? 0 : initialQuantity}\n value={value}\n onChange={handleChange}\n />\n \n );\n};\n","import { IconButton } from '@ori-ui/components';\nimport { Add } from '@ori-ui/icons';\nimport { styled } from '@ori-ui/mui';\n\nexport const Root = styled(IconButton)(({ theme }) => ({\n alignItems: 'center',\n display: 'flex',\n fontSize: theme.typography.pxToRem(14),\n color: theme.palette.common.black,\n height: 20,\n justifyContent: 'center',\n left: theme.spacing(-2),\n position: 'absolute',\n top: theme.spacing(1),\n width: 20,\n zIndex: 1,\n}));\n\nexport const Icon = styled(Add)(({ theme }) => ({\n fontSize: theme.typography.pxToRem(14),\n transform: 'rotate(45deg)',\n}));\n","import type { FC } from 'react';\n\nimport { Icon, Root } from './styles';\nimport type { RemoveButtonProps } from './types';\n\nexport const RemoveButton: FC = ({ 'data-testid': testId, onClick }) => (\n \n \n \n);\n","import { styled, type Theme } from '@ori-ui/mui';\n\nexport const getLinearGradient = (colors: string[]) =>\n `linear-gradient(to right, ${colors[0]}, ${colors[0]} 50%, ${colors[1]} 50%)`;\n\nexport const shadeElementStyles = (theme: Theme) =>\n ({\n borderRadius: '50%',\n display: 'inline-block',\n height: 7,\n margin: theme.spacing(1, 1, 1.2, 0),\n width: 7,\n }) as const;\n\nexport const ColorShadeElement = styled('div')<{ ownerState: { background: string } }>(\n ({ theme, ownerState: { background } }) => ({\n ...shadeElementStyles(theme),\n background,\n }),\n);\n\nexport const ImageShadeElement = styled('img')(({ theme }) => shadeElementStyles(theme));\n\nexport const Root = styled('div')(({ theme }) => ({\n color: theme.palette.grey.A400,\n display: 'flex',\n alignItems: 'center',\n}));\n","import type { FC } from 'react';\n\nimport { ColorShadeElement, getLinearGradient, ImageShadeElement } from './styles';\nimport type { ShadeElementProps } from './types';\n\nexport const ShadeElement: FC = ({ colorHexCode, colorImageSrc }) => {\n const colorHexCodes = colorHexCode?.split(',').filter((hexCode) => Boolean(hexCode));\n\n if (colorHexCodes && colorHexCodes.length > 0) {\n const background = colorHexCodes.length > 1 ? getLinearGradient(colorHexCodes) : (colorHexCodes[0] as string);\n const ownerState = { background };\n\n return ;\n }\n\n // TODO: This should be preferred?\n if (colorImageSrc) {\n return (\n \n );\n }\n\n return null;\n};\n","import { Typography } from '@ori-ui/mui';\nimport type { FC } from 'react';\nimport { memo } from 'react';\n\nimport { ShadeElement } from './ShadeElement';\nimport { Root } from './styles';\nimport type { ShadeProps } from './types';\n\nexport const Shade: FC = memo(({ 'data-testid': testId, colorName, ...shadeElementProps }) => (\n \n \n {colorName}\n \n));\n","import { DiscountTagFilled } from '@ori-ui/icons';\nimport { Link, Typography, styled } from '@ori-ui/mui';\n\nexport const Root = styled('li')(({ theme }) => ({\n padding: theme.spacing(3, 0),\n position: 'relative',\n boxSizing: 'border-box',\n margin: theme.spacing(0, 3),\n '& + li': {\n borderTop: `2px solid ${theme.palette.grey[100]}`,\n },\n}));\n\nexport const StyledMiniBagWrapper = styled('div')({\n display: 'flex',\n color: '#999',\n textDecoration: 'none',\n});\n\nexport const ImgLink = styled('a')(({ theme }) => ({\n padding: theme.spacing(3, 0),\n marginRight: theme.spacing(2),\n borderRadius: 5,\n position: 'relative',\n overflow: 'hidden',\n}));\n\nexport const StyledItemDescription = styled('div')({\n display: 'flex',\n flexGrow: 1,\n flexDirection: 'column',\n textDecoration: 'none',\n maxWidth: 'calc(100% - 90px)',\n});\n\nexport const StyledItemInfoLink = styled(Link)(({ theme }) => ({\n display: 'flex',\n textDecoration: 'none',\n maxHeight: 40,\n overflow: 'hidden',\n}));\n\nexport const StyledName = styled(Typography)({\n maxWidth: 'calc(100% - 38px)',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n display: '-webkit-box',\n WebkitLineClamp: 2,\n WebkitBoxOrient: 'vertical',\n});\n\nexport const Discount = styled('div')(({ theme }) => ({\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n position: 'relative',\n flexShrink: 0,\n width: 25,\n height: 25,\n marginLeft: 'auto',\n border: '0',\n color: theme.palette.offer.contrastText,\n borderRadius: '50%',\n backgroundColor: theme.palette.offer.main,\n}));\n\nexport const DiscountIcon = styled(DiscountTagFilled)(({ theme }) => ({\n fontSize: theme.typography.pxToRem(15),\n}));\n\nexport const StyledItemDetails = styled('div')({\n display: 'flex',\n marginTop: 'auto',\n textDecoration: 'none',\n});\n\nexport const StyledQuantityBlock = styled(Typography)({\n marginRight: 'auto',\n alignSelf: 'flex-end',\n});\n\nexport const StyledPriceBlock = styled('div')({\n marginLeft: 'auto',\n marginTop: 'auto',\n});\n\nexport const StyledPrice = styled(Typography)(({ theme }) => ({\n fontWeight: 'bold',\n color: theme.palette.text.secondary,\n whiteSpace: 'nowrap',\n}));\n\nexport const StyledPriceOld = styled(Typography)(({ theme }) => ({\n textAlign: 'right',\n textDecoration: 'line-through',\n fontSize: '1.2rem',\n color: theme.palette.text.disabled,\n}));\n\nexport const ItemShadeWrapper = styled('div')(({ theme }) => ({\n display: 'flex',\n gap: theme.spacing(2),\n}));\n","import type { ShoppingBagItem } from '@ori-events/basket-updated';\nimport { Typography, useTheme } from '@ori-ui/mui';\nimport { Placement } from '@ori/analytics-data';\nimport { CheckoutImage } from '@ori/checkout-ui';\nimport useTestId from '@ori/testid-generator';\nimport type { FC } from 'react';\nimport { useCallback } from 'react';\n\nimport { mainLogger } from '../../logger';\nimport type { HandleQuantityChangeOptions } from '../../types';\nimport { removeBasketItem, showErrorNotification, updateBasketItem } from '../../utils';\nimport { FormattedMessage } from '../FormattedMessage';\nimport { QuantityPicker } from '../QuantityPicker';\nimport { RemoveButton } from '../RemoveButton';\nimport { Shade } from '../Shade';\nimport {\n Discount,\n DiscountIcon,\n ImgLink,\n ItemShadeWrapper,\n Root,\n StyledItemDescription,\n StyledItemDetails,\n StyledItemInfoLink,\n StyledMiniBagWrapper,\n StyledName,\n StyledPrice,\n StyledPriceBlock,\n StyledPriceOld,\n StyledQuantityBlock,\n} from './styles';\n\nexport const Item: FC = ({\n itemCode,\n itemDescription,\n itemImageSrc,\n itemDetailPath,\n itemType,\n requestedQuantity,\n totalOriginalPrice,\n totalPrice,\n canBeDeleted,\n lineNumber,\n canBeModified,\n canBeReduced,\n maxQuantity,\n colorHexCode,\n colorImageSrc,\n itemColor,\n}) => {\n const { getTestId } = useTestId();\n const theme = useTheme();\n\n const removeItemHandler = useCallback(async () => {\n try {\n // setState({\n // isLoading: true,\n // });\n await removeBasketItem({\n itemCode,\n lineNumber,\n placement: Placement.Minibag,\n previousQuantity: requestedQuantity,\n });\n } catch (error: unknown) {\n // loading state & error already solved in shopping context\n // logError(error);\n // setState({\n // isLoading: false,\n // });\n }\n }, [itemCode, lineNumber, requestedQuantity]);\n\n const handleQuantityChange = useCallback(\n async ({\n itemCode: code,\n lineNumber: line,\n quantity: currentQuantity,\n previousQuantity,\n }: HandleQuantityChangeOptions) => {\n if (currentQuantity === 0) {\n try {\n await removeItemHandler();\n } catch (error) {\n showErrorNotification('genericError');\n mainLogger.error(error as Error, { action: 'handleQuantityChange', quantity: 0 });\n }\n } else {\n try {\n await updateBasketItem({\n itemCode: code,\n lineNumber: line,\n placement: Placement.Minibag,\n previousQuantity,\n quantity: currentQuantity,\n });\n } catch (error) {\n showErrorNotification('genericError');\n mainLogger.error(error as Error, { action: 'handleQuantityChange', quantity: currentQuantity });\n }\n }\n },\n [removeItemHandler],\n );\n\n const partialId = `${lineNumber}-${itemCode}-${itemType}`;\n\n return (\n \n {canBeDeleted ? (\n \n ) : null}\n \n \n \n \n {itemDescription}\n {totalOriginalPrice ? (\n \n \n \n ) : null}\n \n \n \n {itemCode}\n \n {(Boolean(colorHexCode) || Boolean(colorImageSrc)) && itemColor ? (\n \n ) : null}\n \n \n {!canBeReduced && !canBeModified ? (\n \n :{requestedQuantity}\n \n ) : (\n \n )}\n \n {totalOriginalPrice ? {totalOriginalPrice} : null}\n {totalPrice}\n \n \n \n \n \n );\n};\n","import * as BasketUpdated from '@ori-events/basket-updated';\nimport * as RemoveBasketItem from '@ori-events/remove-basket-item';\nimport type { Placement } from '@ori/analytics-data';\n\ninterface RemoveBasketItemData extends RemoveBasketItem.Data {\n previousQuantity?: number;\n itemCode: string;\n placement: Placement;\n}\n\nexport const removeBasketItem = async (detail: RemoveBasketItemData) =>\n new Promise((resolve) => {\n const handleResolve = (() => {\n window.removeEventListener(BasketUpdated.Name, handleResolve);\n resolve();\n }) as EventListener;\n\n window.addEventListener(BasketUpdated.Name, handleResolve);\n\n const event = new CustomEvent(RemoveBasketItem.Name, {\n detail,\n });\n window.dispatchEvent(event);\n });\n","import * as BasketUpdated from '@ori-events/basket-updated';\nimport * as UpdateBasketItem from '@ori-events/update-basket-item';\nimport * as UpdateBasketItemFailed from '@ori-events/update-basket-item-failed';\nimport type { Placement, UpdateBasketItemAnalyticsData } from '@ori/analytics-data';\n\ninterface UpdateBasketItemData extends UpdateBasketItem.Data, UpdateBasketItemAnalyticsData {}\n\ninterface UpdateBasketItemOptions {\n itemCode: string;\n lineNumber: number;\n placement: Placement;\n previousQuantity: number;\n quantity: number;\n}\n\nexport const updateBasketItem = async ({\n itemCode,\n lineNumber,\n placement,\n previousQuantity,\n quantity,\n}: UpdateBasketItemOptions) =>\n new Promise((resolve, reject) => {\n const listener = ((event: BasketUpdated.Event | UpdateBasketItemFailed.Event) => {\n window.removeEventListener(BasketUpdated.Name, listener);\n window.removeEventListener(UpdateBasketItemFailed.Name, listener);\n\n const { detail } = event;\n if (UpdateBasketItemFailed.isUpdateBasketItemErrorResponse(detail)) {\n reject(new Error(`update-basket-item error: ${detail.message}`));\n } else {\n resolve();\n }\n }) as EventListener;\n\n window.addEventListener(BasketUpdated.Name, listener);\n window.addEventListener(UpdateBasketItemFailed.Name, listener);\n\n const eventToTrigger = new CustomEvent(UpdateBasketItem.Name, {\n detail: {\n lineNumber,\n quantity,\n previousQuantity,\n newQuantity: quantity,\n itemCode,\n placement,\n },\n });\n window.dispatchEvent(eventToTrigger);\n });\n","import { styled, alpha } from '@ori-ui/mui';\n\nimport { centeredFlexStyles } from '../../constants';\nimport type { LoadingOverlayProps } from './types';\n\nexport const Root = styled('div')<{ ownerState: LoadingOverlayProps }>(\n ({ ownerState: { isBasketSharingEnabled }, theme }) => ({\n ...centeredFlexStyles,\n position: 'absolute',\n top: theme.spacing(13),\n bottom: theme.spacing(9),\n width: '100%',\n height: `calc(100% - ${theme.spacing(28 + (isBasketSharingEnabled ? 11 : 0))})`, // 100% - (header + footer height)\n background: alpha(theme.palette.common.white, 0.5),\n zIndex: 999,\n }),\n);\n","import type { FC } from 'react';\n\nimport { Loader } from '../Loader';\nimport { Root } from './styles';\nimport type { LoadingOverlayProps } from './types';\n\nexport const LoadingOverlay: FC = (props) => (\n \n \n \n);\n","import { List, styled, ScopedCssBaseline } from '@ori-ui/mui';\n\nimport { basePositionStyles } from '../../constants';\n\nexport const minibagWidthStyle = 'var(--minibag-desktop-width, 400px)';\n\nexport const Root = styled('div')<{ ownerState: { breakpointIndex: number; useOpenedMinibagOnDesktop: boolean } }>(\n ({ theme, ownerState }) => ({\n ...basePositionStyles,\n background: theme.palette.background.paper,\n boxShadow: theme.shadows[2],\n boxSizing: 'border-box',\n display: 'flex',\n flexDirection: 'column',\n left: 'auto',\n maxWidth: 'calc(100vw - 40px)',\n width: ownerState.useOpenedMinibagOnDesktop && ownerState.breakpointIndex === 2 ? minibagWidthStyle : '400px',\n zIndex: 1,\n }),\n);\n\nexport const ItemsWrapper = styled(ScopedCssBaseline)(({ theme }) => ({\n position: 'relative',\n display: 'block',\n boxSizing: 'border-box',\n overflow: 'hidden',\n flex: 1,\n background: theme.palette.background.paper,\n}));\n\nexport const EmptyBag = styled('div')(({ theme }) => ({\n position: 'inherit',\n top: '40%',\n textAlign: 'center',\n color: theme.palette.text.secondary,\n}));\n\nexport const Items = styled(List)<{ ownerState: { isBasketSharingEnabled: boolean | undefined } }>(\n ({ theme, ownerState: { isBasketSharingEnabled } }) => ({\n boxSizing: 'border-box',\n listStyleType: 'none',\n maxHeight: '100%',\n overflow: 'auto',\n paddingTop: theme.spacing(13),\n paddingBottom: theme.spacing(isBasketSharingEnabled ? 26 : 15),\n overscrollBehavior: 'contain',\n }),\n);\n","import type { ShoppingBagItem } from '@ori-events/basket-updated';\nimport { Typography } from '@ori-ui/mui';\nimport useTestId from '@ori/testid-generator';\nimport type { FC } from 'react';\n\nimport { Footer } from '../Footer';\nimport { FormattedMessage } from '../FormattedMessage';\nimport { Header } from '../Header';\nimport { Item } from '../Item';\nimport { LoadingOverlay } from '../LoadingOverlay';\nimport { EmptyBag, Items, ItemsWrapper, Root } from './styles';\nimport type { MiniBagProps } from './types';\n\nexport const MiniBag: FC = ({\n breakpointIndex,\n isBasketSharingEnabled,\n items,\n isDataLoaded,\n isLoading,\n onMouseEnter,\n onMouseLeave,\n useOpenedMinibagOnDesktop,\n}) => {\n const quantity = items.reduce((total, current) => total + current.requestedQuantity, 0);\n const { getTestIdProps } = useTestId();\n const ownerState = { breakpointIndex, useOpenedMinibagOnDesktop };\n const itemsOwnerState = { isBasketSharingEnabled };\n const rootProps = { onMouseEnter, onMouseLeave, ownerState, ...getTestIdProps('content') };\n const isSharingButtonActive = items.length > 0;\n const footerProps = { isBasketSharingEnabled, isSharingButtonActive };\n\n return (\n \n
\n {isLoading || !isDataLoaded ? : null}\n \n {items.length > 0 && (\n \n {items.map((item: ShoppingBagItem) => (\n \n ))}\n \n )}\n {isDataLoaded && items.length === 0 ? (\n \n \n \n \n \n - -\n \n \n ) : null}\n \n