{"version":3,"file":"js/5656.chunk.js","mappings":"qKAUA,MATsBA,IAClB,MAAMC,GAAK,IAAAC,UAMX,OALA,IAAAC,YAAU,KACN,IAAIC,EAEkB,QAArBA,EAAKH,EAAGI,eAA4B,IAAPD,IAAyBA,EAAGE,UAAY,WAAQN,EAAMO,cAAU,GAC/F,IACI,gBAAoB,MAAO,CAAEC,IAAKP,GAAK,ECHlD,MAHsBD,GACX,gBAAoB,EAAc,CAAEO,KAAM,aAAaP,EAAMS,sBAAsBT,EAAMU,S,4ECepG,UAfoBV,IAChB,MAAMW,GAAW,IAAAT,UAYjB,OAXA,IAAAC,YAAU,KACN,GAAIQ,EAASN,QAAS,CAClB,MAAMO,EAAiB,IAAI,UAA0BD,EAASN,SAC9DL,EAAMa,kBAAoBD,EAAeC,gBAAkBb,EAAMa,iBACjEb,EAAMc,iBAAmBF,EAAeE,eAAiBd,EAAMc,gBAC/Dd,EAAMe,qBAAuBH,EAAeG,mBAAqBf,EAAMe,oBACvEf,EAAMgB,iBAAmBJ,EAAeI,eAAiBhB,EAAMgB,gBAC/DhB,EAAMiB,eAAiBL,EAAeK,aAAejB,EAAMiB,cAChC,iBAApBjB,EAAMkB,YAA2BN,EAAeM,UAAYlB,EAAMkB,UAC7E,IACD,CAAClB,EAAMmB,UACF,gBAAoB,MAAO,CAAEX,IAAKG,EAAU,cAAe,OAAQS,UAAW,IAAW,gBAAiBpB,EAAMoB,WAAY,iBAAkBpB,EAAMmB,QAAS,wBAAyBnB,aAAqC,EAASA,EAAMqB,cAAe,oBAAqBrB,EAAMsB,MAAO,uBAAwBtB,EAAMuB,SAAU,mBAAoBvB,EAAMwB,KAAM,2BAA4BxB,EAAMyB,YAAa,sBAAuBzB,EAAM0B,OAAQ,sBAAuB1B,EAAM2B,WAAa,C,mNCd7e,MAAMC,EAAa,CASfC,UAAW,SAAUC,EAAKC,EAAMC,EAAKC,EAASC,GAC1C,IAAKJ,EACD,OAAOA,EAEX,GAAIA,EAAIK,QAAQ,UAAY,EAAG,CAC3B,IAAIC,EAAOJ,EAAM,IAAQA,EAAK,CAAEK,OAAQ,kBAAmBC,OAAO,IAAU,QACxEC,EAAUT,EAAIU,QAAQ,YAAa,IAAIT,EAAKU,SAASV,EAAKW,UAAUN,SACpEO,EAAS,GACbA,EAAOC,KAAK,CAAC,YAAa,aAC1BD,EAAOC,KAAK,CAAC,aAAc,WAC3B,MAAMC,EAAaZ,GAAWa,OAAOC,aAIrC,GAHIF,EAAa,GACbF,EAAOC,KAAK,CAAC,UAAWC,IAExBC,OAAOE,cACP,GACS,SADDd,EAEAS,EAAOC,KAAK,CAAC,SAAU,cAGvBD,EAAOC,KAAK,CAAC,SAAU,SAOnC,OAHID,EAAOM,OAAS,IAChBV,EAAUA,EAAU,IAAMI,EAAOO,KAAKC,GAAMA,EAAE,GAAK,IAAMA,EAAE,KAAIC,KAAK,MAEjEb,CACX,CACA,OAAIT,EAAIuB,SAAS,kBACN,GAAGvB,WAAaC,EAAKU,gBAAgBV,EAAKW,SAG9C,GADPZ,EAAMwB,KAAKC,YAAYzB,SACHC,EAAKU,SAAYV,EAAKW,QAAU,OAAOX,EAAKW,UAAa,GACjF,EACAc,MAAO,SAAU1B,EAAKE,GAClB,OAAOsB,KAAKzB,UAAUC,EAAK2B,EAAOzB,EACtC,EACA0B,MAAO,SAAU5B,EAAKE,GAClB,OAAOsB,KAAKzB,UAAUC,EAAK6B,EAAI3B,EACnC,EACA4B,OAAQ,SAAU9B,EAAKE,GACnB,OAAOsB,KAAKzB,UAAUC,EAAK+B,EAAI7B,EACnC,EACA8B,MAAO,SAAUhC,EAAKE,GAClB,OAAOsB,KAAKzB,UAAUC,EAAKiC,EAAI/B,EACnC,EACAgC,WAAY,SAAUlC,EAAKE,GACvB,OAAOsB,KAAKzB,UAAUC,EAAKmC,EAAIjC,EACnC,EACAuB,YAAa,SAAUzB,GACnB,IACI,GAAIA,EAAIK,QAAQ,KAAO,EACnB,OAAOL,EACX,MAAMoC,EAAS,IAAIC,IAAIrC,GACvB,OAAOoC,EAAOE,KAAK5B,QAAQ0B,EAAOG,OAAQ,GAC9C,CACA,MAAOC,GACHxB,OAAOyB,SAAWC,QAAQC,IAAI,+BAAgC3C,EAClE,CACA,OAAOA,CACX,EACA4C,OAAQ,SAAU5C,EAAK6C,EAAUC,GAO7B,GANA9C,EAAMwB,KAAKC,YAAYzB,GAClB8C,IACDA,EAAQC,OAAOC,OAAOhC,OAAOiC,OAAO7B,KAAK8B,IAAO,CAC5CvC,MAAOuC,QAGVJ,EAAM3B,OACP,MAAO,GACX,GAAI0B,GAAYC,EAAMK,MAAMlD,GAASA,EAAKU,MAAQkC,IAAW,CACzD,IAAIO,EAAaN,EAAMO,WAAWpD,GAASA,EAAKU,MAAQkC,IACxDC,EAAMQ,OAAOF,GACbN,EAAMhC,KAAK,CACPH,MAAOkC,GAEf,CACA,OAAOC,EACF1B,KAAKnB,GACC,GAAGuB,KAAKzB,UAAUC,EAAKC,EAAM,OAAOA,EAAKU,WAE/CW,KAAK,IACd,GAEJ,OAEA,IAAIiC,EAAc,CACdC,GAAI,IACJC,GAAI,KAAO,MAEf,MAAMxD,EAAQU,IACH,CACHA,MAAOA,EACPC,OAAQ8C,KAAKC,MAAMhD,EAAQ4C,GAAY,cAGlC5B,EAAQ1B,EAAK,MACb4B,EAAK5B,EAAK,MACV8B,EAAK9B,EAAK,KACVgC,EAAKhC,EAAK,KACVkC,EAAKlC,EAAK,IACV2D,EAAM3D,EAAK,G,4JC9GjB,MAEM4D,EAAqB,CAACC,EAASC,KACxC,IAAIzF,EAAI0F,EACR,OAEQ,QAFEA,EAA8F,QAAxF1F,EAAKwF,aAAyC,EAASA,EAAQG,2BAAwC,IAAP3F,OAAgB,EAASA,EAAG4F,MAAMC,GACvIA,EAAUJ,cAAgBA,WACd,IAAPC,OAAgB,EAASA,EAAGhB,SAAW,EAAG,EAEjDoB,EAAsBN,GACxBD,EAAmBC,EATE,SAWnBO,EAAqBP,GACvBD,EAAmBC,EAXA,QAgBjBQ,EAAsBR,IAC/B,GAAIA,EAAQS,UAAYT,EAAQU,GAAI,CAChC,MAAMC,EALyB,CAACX,GAC7BM,EAAmBN,GAASI,MAAK,EAAGQ,cAAeA,IAAUC,MAI1CC,CAAwBd,GAC9C,OAAOA,EAAQS,SAAS7D,QAAQ+D,EAAe,GACnD,CAEI,OAAOX,EAAQS,QACnB,EAESM,EAA0Bf,IACnC,IAAIgB,EAgBJ,OAfIhB,aAAyC,EAASA,EAAQiB,gBAEtDD,EADAhB,EAAQiB,aAAaC,YACC,6BAEjBlB,EAAQiB,aAAaE,SACJ,yCAEjBnB,EAAQiB,aAAaG,SACJ,8BAIA,iCAGvBJ,CAAmB,C,uEC7C9B,MAoCaK,EAAwBC,IACjC,MAAOC,EAAQC,IAAa,IAAAC,UAAS,QAC9BC,EAAYC,IAAiB,IAAAF,YAC9BG,EAAoB/G,IACtB8G,EAAsB,WAAR9G,GAA6B,YAARA,EAAqB,WAAa,QAAQ,EAE3EgH,EAAenD,IACjBkD,EAAiBlD,EAAE7D,MACL,MAAV0G,GAAkB7C,EAAEoD,eACpBN,EAAU,KACd,EAEEO,EAAcrD,IAChB,IAAIlE,EACJoH,EAAiBlD,EAAE7D,MACL,YAAV6D,EAAE7D,KACE6D,EAAEoD,iBAA6C,QAAzBtH,EAAK8G,EAAO7G,eAA4B,IAAPD,OAAgB,EAASA,EAAGwH,SAAStD,EAAEoD,iBAC9FN,EAAU,OAIdA,EAAU,MACd,EAeJ,OAbA,IAAAjH,YAAU,KACN+G,SAAgDA,EAAO7G,QAAQwH,iBAAiB,UAAWJ,GAC3FP,SAAgDA,EAAO7G,QAAQwH,iBAAiB,WAAYF,GAC5FT,SAAgDA,EAAO7G,QAAQwH,iBAAiB,aAAcJ,GAC9FP,SAAgDA,EAAO7G,QAAQwH,iBAAiB,aAAcF,GACvF,KACH,IAAIvH,EAAI0F,EAAIgC,EAAIC,EAC0D,QAAzE3H,EAAK8G,aAAuC,EAASA,EAAO7G,eAA4B,IAAPD,GAAyBA,EAAG4H,oBAAoB,UAAWP,GACnE,QAAzE3B,EAAKoB,aAAuC,EAASA,EAAO7G,eAA4B,IAAPyF,GAAyBA,EAAGkC,oBAAoB,WAAYL,GACpE,QAAzEG,EAAKZ,aAAuC,EAASA,EAAO7G,eAA4B,IAAPyH,GAAyBA,EAAGE,oBAAoB,aAAcP,GACtE,QAAzEM,EAAKb,aAAuC,EAASA,EAAO7G,eAA4B,IAAP0H,GAAyBA,EAAGC,oBAAoB,aAAcL,EAAW,IAEhK,IACI,CAAEL,aAAYH,SAAQ,C,6HCvBjC,MA9CsBnH,IAClB,MAAM,GAAEiI,EAAE,KAAEC,EAAI,UAAEC,EAAS,SAAEC,EAAQ,UAAEhH,EAAS,UAAEiH,EAAS,WAAEC,EAAU,SAAEC,EAAQ,QAAE3C,EAAO,eAAE4C,EAAc,aAAEC,GAAiBzI,EAAO0I,GAAO,IAAAC,QAAO3I,EAAO,CAAC,KAAM,OAAQ,YAAa,WAAY,YAAa,YAAa,aAAc,WAAY,UAAW,iBAAkB,iBAC5Q4I,GAAW,UACX3I,GAAK,IAAAC,QAAO,MACZ2I,GAAU,UACVC,GAAW,UACXC,EAAwB,iBAANd,EAAiBA,EAAKA,aAA+B,EAASA,EAAGc,SACnFC,EAAqB,iBAANf,GAAkBA,EAAGe,MAAQf,EAAGe,MAAQ,CAAC,EACxDC,EAAYpE,OAAOqE,OAAO,CAAEjB,KAC1B,MAAMkB,EAActE,OAAOqE,OAAOrE,OAAOqE,OAAO,CAAC,EAAGF,GAAQ,CAAEI,WAAY,CAClEjB,YACAkB,UAAW,KACXC,YAAab,GACdc,SAAU,CACTC,QAAS,KAEjB,MAAO,CACHT,WACAC,MAAOG,EAEf,EACAM,QAAQC,GACJd,EAAS,CACLnI,KAAM,iBACNkJ,QAAS/D,IAET4C,GACAA,EAAekB,GAOnB,MAAME,EAAcd,EAASzE,OAAOhB,SAAS,UAAYyF,EAASC,SAAW,UAAYD,EAASC,SAC5FI,EAActE,OAAOqE,OAAOrE,OAAOqE,OAAO,CAAC,EAAGhB,GAAO,CAAEkB,WAAY,CACjEjB,YACAkB,UAAW,OACZE,SAAU,CACTC,QAAS1G,OAAO0G,WAGxBX,EAAQrG,QAAQoH,EAAaT,EACjC,GAAKT,GACT,OAAQ,gBAAoB,KAAM7D,OAAOqE,OAAO,CAAE1I,IAAKP,GAAMgJ,EAAW,CAAE3C,GAAItG,EAAMsG,GAAIlF,UAAWA,EAAW,aAAciH,EAAW,cAAeC,EAAYC,SAAUA,IAAaH,EAAU,E,sBC/BvM,MAhB4B,CAACkB,EAAarJ,KACtC,MAAM,iBAAE4J,EAAgB,mBAAEC,IAAuB,WACjD,IAAA3J,YAAU,KACFmJ,GAAerJ,EAAGI,SAClBwJ,EAAiB,CACb5J,KACAqJ,gBAGD,KACCA,GACAQ,EAAmBR,EACvB,IAEL,CAACA,GAAa,ECmBrB,MA9BqBtJ,IACjB,MAAM+J,GAAU/J,EAAMgK,gBAAiE,KAA/CC,UAAUC,WAAa,IAAI/H,QAAQ,SAAiB,IAAAgI,YAAW,MACjGlB,EAAY,CACdd,UAAWnI,EAAM4F,QAAQU,GACzB2B,GAAIjI,EAAM4F,QAAQwE,MAClBhJ,UAAWpB,EAAMoB,UACjB8G,KAAM,CACFc,MAAO,CACHqB,gBAAiBrK,EAAMsK,SAI/BtK,EAAMuK,SAAWvK,EAAMyI,cACvB,EAAoBzI,EAAMyI,aAAczI,EAAMuK,SAElD,MAAMC,EAAiBd,IACnB,IAAItJ,EACAJ,EAAMyK,kBAG4E,QAA5ErK,EAAKJ,aAAqC,EAASA,EAAM0K,qBAAkC,IAAPtK,OAAgB,EAASA,EAAGuK,iBACtHC,EAAA,gBAAuB,CACnBhF,QAAS5F,EAAM4F,QACf0E,MAAOtK,EAAM4F,QAAQiF,eACrBF,eAAgB3K,EAAM0K,cAAcC,gBAE5C,EAEJ,OAAOZ,EAAU,gBAAoB,EAAclF,OAAOqE,OAAO,CAAEtD,QAAS5F,EAAM4F,SAAWqD,EAAW,CAAET,eAAgBgC,EAAenC,UAAWrI,EAAMqI,UAAWC,WAAYtI,EAAMsI,WAAYC,SAAUvI,EAAMuI,SAAUE,aAAczI,EAAMyI,eAAiBzI,EAAMoI,UAAc,gBAAoB,IAAK,CAAE9B,GAAItG,EAAMsG,GAAIlC,KAAMpE,EAAM4F,QAAQkF,WAAYrB,QAASe,EAAepJ,UAAWpB,EAAMoB,UAAW,aAAcpB,EAAMqI,UAAW,cAAerI,EAAMsI,WAAYC,SAAUvI,EAAMuI,SAAU,kBAAmBvI,EAAM+K,eAAgBC,QAAShL,EAAMgL,QAASC,OAAQjL,EAAMiL,OAAQC,aAAclL,EAAMkL,aAAcC,aAAcnL,EAAMmL,cAAgBnL,EAAMoI,SAAU,C,gFC7B9pB,MAAMgD,EAAgBpL,IAClB,IAAII,EACJ,MAAM,EAAEiL,IAAM,UACR,SAAEC,IAAa,SAMrB,GAAmB,UAAftL,EAAMS,KACN,OAAQ,gBAAoB,OAAQ,CAAEW,UAAW,IAAW,gBAAiB,CACrEmK,OAAQvL,EAAMuL,UAEC,MAAnBzI,OAAO0I,UAAoBH,EAAE,cARzB,gBAAoB,WAAgB,KACxCrL,EAAMyL,cAAgBzL,EAAMyL,eAAiBzL,EAAM0L,KAAO,gBAAoB,MAAO,CAAEtK,UAAW,sBAAwBpB,EAAMyL,cAChIzL,EAAM0L,KAQa,MAAnB5I,OAAO0I,UAAoBH,EAAE,eAErC,MAAMM,EAAoC,QAA3BvL,EAAKJ,EAAM4L,kBAA+B,IAAPxL,OAAgB,EAASA,EAAG,GACxEyL,EAAmB7L,EAAM8L,OAAS9L,EAAM+L,kBAAoB/L,aAAqC,EAASA,EAAM8L,SAAW9L,aAAqC,EAASA,EAAMgM,OAarL,OAAQ,gBAAoB,WAAgB,KAXhC,gBAAoB,OAAQ,CAAE5K,UAAW,mBAAqBpB,EAAM8L,OAAS9L,EAAM+L,gBAAmBV,EAAE,gCAAiC,CAC7IY,cAAejM,EAAM8L,KACrBI,aAAclM,EAAMgM,MACpBG,SAAUnM,EAAMmM,WACb,gBAAoB,WAAgB,KACvCnM,EAAM+L,iBAAmBV,EAAE,wBAC3B,IACArL,EAAMgM,MACN,IACAhM,EAAMmM,SAAW,IAAInM,EAAMmM,WAAa,KAI5C,gBAAoB,OAAQ,CAAE/K,UAAW,IAAW,gBAAiB,CAC7DmK,OAAQvL,EAAMuL,OACd,kBAAmBvL,EAAMoM,OAASd,GAAYO,IAC9C,eAAe,GACnB,gBAAoB,OAAQ,CAAEzK,UAAW,IAAW,qBAAsB,CAClE,WAAYpB,EAAMoM,OAASd,GAAYO,KAE3CA,GAAoB,gBAAoB,MAAO,CAAEzK,UAAW,sBAAwBpB,EAAM8L,MAC1F,gBAAoB,OAAQ,CAAE1K,UAAW,sBACrCpB,EAAMgM,MACNhM,EAAMmM,SAAW,IAAInM,EAAMmM,WAAa,MAC/CR,aAAqC,EAASA,EAAMU,aAAe,gBAAoB,OAAQ,CAAEjL,UAAW,qBAAuBuK,EAAMU,aAAc,EAEpKjB,EAAakB,aAAe,CACxBf,QAAQ,GAEZ,K,8ECjDA,MAAMgB,EAAe,CAAC,KAAK,EAAAtI,GAAI,EAAAF,GAAI,EAAAF,IA2EnC,IA1EsB7D,IAClB,IAAII,EACJ,MAAMoM,GAAoB,SACpBC,GAAQ,IAAAC,UAAQ,KAClB,IAAItM,EAAI0F,EAAIgC,EAAIC,EAChB,GAAI/H,EAAMsK,MACN,OAA4B,QAApBlK,EAAKJ,EAAM2M,WAAwB,IAAPvM,OAAgB,EAASA,EAAGwM,KAAK5M,EAAMsK,OAE/E,GAAItK,EAAMS,KAAM,CACZ,IAAIoM,EAAiB,IAAM7M,EAAMS,KAAO,IACpCqM,EAAiB,IAAM9M,EAAMS,KAAO,KACpCkM,EAA+E,QAAxE7E,EAA0B,QAApBhC,EAAK9F,EAAM2M,WAAwB,IAAP7G,OAAgB,EAASA,EAAG8G,YAAyB,IAAP9E,OAAgB,EAASA,EAAG9B,MAAM+G,GAAMA,IAAMA,EAAE1J,SAASwJ,IAAmBE,EAAE1J,SAASyJ,MAKlL,GAAIH,EACA,OAAOA,CAEf,CACA,OAA4B,QAApB5E,EAAK/H,EAAM2M,WAAwB,IAAP5E,OAAgB,EAASA,EAAG6E,KAAK,EAAE,GACxE,CAAC5M,EAAM2M,IAAK3M,EAAMsK,MAAOtK,EAAMS,OAC5BR,GAAK,IAAAC,UACL8M,GAAY,IAAAN,UAAQ,KAAQ,IAAItM,EAAI,OAAO,eAAqBqM,EAAO,KAA0B,QAApBrM,EAAKJ,EAAM2M,WAAwB,IAAPvM,OAAgB,EAASA,EAAG4B,IAAI,GAAK,CAACyK,IAC/IQ,GAAa,IAAAP,UAAQ,KACvB,IAAItM,EAAI0F,EAER,OAAI0G,GAAqB1J,OAAOiC,MAAMmI,GAC3B,eAAqBT,EAAO,EAAA9I,GAAyB,QAApBvD,EAAKJ,EAAM2M,WAAwB,IAAPvM,OAAgB,EAASA,EAAG4B,IAAK,KAAM,QAGpG,eAAqByK,EAAO,EAAA5I,GAAyB,QAApBiC,EAAK9F,EAAM2M,WAAwB,IAAP7G,OAAgB,EAASA,EAAG9D,IAAK,KAAM,OAC/G,GACD,CAACwK,EAAmBC,IACjBU,GAAc,IAAAT,UAAQ,KACxB,IAAIU,EAAO,GAKX,OAJCpN,EAAM4E,OAAS2H,GAAcc,SAAQ,CAACC,EAAInK,KACvC,IAAI/C,EACJgN,EAAKxK,KAAK,GAAG,eAAqB6J,EAAOa,EAAyB,QAApBlN,EAAKJ,EAAM2M,WAAwB,IAAPvM,OAAgB,EAASA,EAAG4B,QAAQsL,EAAG7K,SAAS,IAEvH2K,EAAKhK,KAAK,KAAK,GACvB,CAACqJ,IACEc,GAAkB,IAAAb,UAAQ,KAC5B,IAAIU,EAAO,GAKX,OAJCpN,EAAM4E,OAAS2H,GAAcc,SAAQ,CAACC,EAAInK,KACvC,IAAI/C,EACJgN,EAAKxK,KAAK,GAAG,eAAqB6J,EAAOa,EAAyB,QAApBlN,EAAKJ,EAAM2M,WAAwB,IAAPvM,OAAgB,EAASA,EAAG4B,IAAK,KAAM,WAAWsL,EAAG7K,SAAS,IAErI2K,EAAKhK,KAAK,KAAK,GACvB,CAACqJ,IACEe,GAAU,IAAAd,UAAQ,KACpB,IAAItM,EAAI0F,EACR,MAAMwE,EAAkC,QAAzBlK,EAAKJ,EAAMyN,gBAA6B,IAAPrN,EAAgBA,EAAKJ,EAAMsK,MAC3E,MAAO,GAAGtK,EAAMgC,MAA6B,QAApB8D,EAAK9F,EAAM2M,WAAwB,IAAP7G,OAAgB,EAASA,EAAG9D,OAAOsI,GAAS,EAAI,IAAIA,EAAQ,IAAM,IAAI,GAC5H,CAACmC,KACJ,IAAAtM,YAAU,KACNH,EAAM0N,YAAc1N,EAAM0N,aAAajB,EAAM,GAC9C,CAACA,IACJ,MAAMkB,GAAgB,IAAAjB,UAAQ,IACnB1M,EAAM4N,WAAaZ,EAAY,8EACvC,CAACP,IACEoB,EAAgB,gBAAoB,UAAW,CAAEzM,UAAW,IAAW,CAAE0M,UAAW9N,EAAM+N,cAAgB/N,EAAMoB,YAClH,gBAAoB,SAAUyD,OAAOqE,OAAO,CAAC,GAAKlJ,EAAM+N,cAAgB,CAAE,cAAiBR,GAAoB,CAAES,OAAQhO,EAAM+N,aAAeR,EAAkBI,EAAelN,KAAM,gBACrL,gBAAoB,SAAUoE,OAAOqE,OAAO,CAAC,GAAKlJ,EAAM+N,cAAgB,CAAE,cAAiBZ,GAAgB,CAAEa,OAAQhO,EAAM+N,aAAeZ,EAAcQ,EAAelN,KAAM,gBAC7K,gBAAoB,MAAO,CAAED,IAAKR,EAAMQ,KAAOP,EAAI+B,IAAKwL,EAASS,IAAKjO,EAAM+N,aAAed,EAAaD,EAAW,aAAc,OAAQ,WAAYhN,EAAMsK,OAAS,EAAGlJ,UAAW,IAAW,CAAE0M,UAAW9N,EAAM+N,cAAgB/N,EAAMoB,WAAY,mBAAoB6L,EAAYxK,MAAO,WAAWC,OAAQ,YAAYwL,MAAOlO,EAAMkO,MAAO,cAAmFC,OAAnEnO,aAAqC,EAASA,EAAMsI,YAA2BtI,aAAqC,EAASA,EAAMsI,aAAetI,EAAMgC,QAA+B,QAApB5B,EAAKJ,EAAM2M,WAAwB,IAAPvM,OAAgB,EAASA,EAAG4B,QAC3jB,OAAIhC,EAAMoO,UACCP,EAEN7N,EAAM2M,KAAQF,EAIX,gBAAoB,MAAO,CAAErL,UAAW,gBAAiB,gBAAiBpB,EAAMqO,SAAU,YAAarO,EAAMS,MAAQoN,GAHjH,gBAAoB,MAAO,CAAEzM,UAAW,gBAAiB,gBAAiBpB,EAAMqO,SAAU,YAAarO,EAAMS,MACjH,gBAAoB,MAAO,CAAEuB,IAAKwL,EAASS,IAAK,6EAA8E,WAAYjO,EAAMsK,OAAS,EAAGlJ,UAAWpB,EAAMoB,UAAWqB,MAAO,WAAWC,OAAQ,YAAYwL,MAAOlO,EAAMkO,QAExG,C,kDC3E/I,MAAMI,EAAgBtO,IAClB,IAAII,EAAI0F,EAAIgC,EAAIC,EAAIwG,EAAIC,EAAIC,EAAIC,EAChC,OAAK1O,EAAM2O,MAGH,gBAAoB,WAAgB,KACxC,gBAAoB,IAAc,CAAEpD,OAAQvL,EAAMuL,OAAQ9K,KAAMT,EAAM2O,MAAMlO,KAAMmO,IAAqF,QAA/E9I,EAAgC,QAA1B1F,EAAKJ,EAAM2O,MAAMC,WAAwB,IAAPxO,OAAgB,EAASA,EAAG4L,aAA0B,IAAPlG,OAAgB,EAASA,EAAG+I,UAAWnD,IAAqF,QAA/E3D,EAAgC,QAA1BD,EAAK9H,EAAM2O,MAAMjD,WAAwB,IAAP5D,OAAgB,EAASA,EAAGkE,aAA0B,IAAPjE,OAAgB,EAASA,EAAG8G,UAAWpD,aAA6F,QAA9E+C,EAAgC,QAA1BD,EAAKvO,EAAM2O,MAAMjD,WAAwB,IAAP6C,OAAgB,EAASA,EAAGzC,YAAyB,IAAP0C,OAAgB,EAASA,EAAGK,UAAW/C,KAAkC,QAA3B2C,EAAKzO,EAAM2O,MAAM7C,YAAyB,IAAP2C,OAAgB,EAASA,EAAGI,UAAW7C,MAAoC,QAA5B0C,EAAK1O,EAAM2O,MAAM3C,aAA0B,IAAP0C,OAAgB,EAASA,EAAGG,UAAW9C,gBAAiB/L,EAAM+L,gBAAiBH,WAAY5L,EAAM4L,WAAYQ,MAAOpM,EAAMoM,SAHttB,gBAAoB,WAAgB,KAG4rB,EAE/uBkC,EAAahC,aAAe,CACxBf,QAAQ,GAEZ,K,sGCPA,MAAMuD,EAAqB9O,IACvB,MAAM,UAAE+O,IAAc,SAChBrO,GAAO,IAAAR,SAAO,YAEb8O,EAAcC,IAAmB,IAAA5H,UAAS,IAC1C6H,EAASC,IAAc,IAAA9H,UAAS,OAChC+H,EAASC,IAAc,IAAAhI,UAAS,OAChCiI,EAAeC,IAAoB,IAAAlI,UAAS,OAC5CmI,EAAYC,IAAiB,IAAApI,UAAS,WAE7C,IAAIqI,GAAe,IAAAhD,UAAQ,MAClB1M,EAAM2P,QAEJ3P,EAAM4P,WACd,CAAC5P,EAAM2P,OAAQ3P,EAAM4P,YAExB,MAAMC,EAAoB,gBAAoB,MAAO,CAAEzO,UAAW,iBAC9D,gBAAoB,MAAO,CAAEY,IAAK,GAAIiM,IAAK,6EAA8E,eAAe,KAEtI6B,EAAY,CAACC,EAAKC,KAEb,CACHvP,KAF+B,IAArBsP,EAAI5N,QAAQ,KAEJ,QAAY,QAC9BsE,MAAOsJ,EACPE,QAASD,GAAcD,IAGzBG,EAAc,CAACC,EAAQC,EAAGC,IACpB,gBAAoB,MAAO,CAAEjP,UAAW,IAAW,gBAAiB,CAAEkP,OAAQD,KAClF,gBAAoB,IAAc,CAAElI,UAAWnI,EAAM4F,QAAQU,GAAIoH,WAAa6C,IAC5D,IAANH,GACAb,GAAkBgB,EACtB,EACD5D,IAAK3M,EAAM4F,QAAQ4K,KAAMnC,SAAUrO,EAAMyQ,SAAUhQ,KAAM0P,EAAO1J,MAAO2H,WAAW,KAE3FsC,EAAoB,CAACpK,EAAI0C,KAC3B1C,IAAO5F,EAAKL,SAAWoP,EAAczG,EAAM,EAEzC2H,EAAc,CAACR,EAAQC,EAAGC,KAE5B,IAAIO,EAAW5Q,EAAM4F,QAAQiL,OAAShM,OAAOC,OAAO9E,EAAM4F,QAAQiL,QAAQ7K,MAAMlE,GAAQA,EAAIuB,SAAS,IAAI8M,EAAO1J,WAAY,KAC5H,OAAOmK,EAAY,gBAAoB,MAAO,CAAExP,UAAW,IAAW,4BAA6B,CAC3FkP,OAAQD,KAEZ,gBAAoB,IAAc,CAAEvO,IAAK8O,EAAUE,iBAAkBpQ,EAAKL,QAAS0Q,0BAA2BL,KAElHR,EAAYC,EAAQC,EAAGC,EAAM,EAG3BW,GAAe,IAAAC,cAAY,IACxB/B,EAEmB,UAAjBA,EAAQzO,KAAmBkQ,EAAYzB,EAAS,EAAGQ,GAAgBQ,EAAYhB,EAAS,EAAGQ,GADvFG,GAEZ,CAACX,EAASQ,IACPwB,GAAe,IAAAD,cAAY,IACxB7B,EAEmB,UAAjBA,EAAQ3O,KAAmC,GAAhBuO,GAAqB2B,EAAYvB,EAAS,GAAKc,EAAYd,EAAS,EAAmB,GAAhBJ,GAD9Fa,GAEZ,CAACT,EAASJ,IAkBb,OAhBA,IAAA7O,YAAU,KACN,MAAMgR,EAAKrB,EAAU9P,EAAMoR,aAAepR,EAAMkP,QAASlP,EAAMkP,SACzDmC,EAAgB,SAAXF,EAAG1Q,MAAmBqP,EAAU9P,EAAMoP,SACjDD,EAAWgC,IACLE,aAA+B,EAASA,EAAG5K,OAI7C4I,EAAWgC,GAHX9B,GAAiB,EAIrB,GACD,CAACvP,EAAM4F,QAAS5F,EAAMkP,QAASlP,EAAMoP,QAASpP,EAAMoR,eACvD,IAAAjR,YAAU,KACFmP,GAEJL,EAAiBF,GAAc/O,EAAM2P,OAAa,EAAJ,EAAM,GACrD,CAAC3P,EAAM2P,OAAQZ,EAAWO,IACrB,gBAAoB,WAAgB,KACxC,gBAAoB,MAAO,CAAElO,UAAW,eAAiBkO,GAAiB4B,KAC1EF,IAAgB,EAExBlC,EAAkBxC,aAAe,CAC7B4C,QAAS,IACTE,QAAS,KAEb,K,gFCzCA,IA7CsBpP,IAClB,MAAM,EAAEqL,IAAM,SACRiG,GAAc,IAAApR,QAAO,OAY3B,IAAAC,YAAU,KACN,IAAIoR,EACJ,MAAMC,EAAWlN,IACb,MAAMmN,EAAgBzR,EAAM8Q,iBAAmBY,SAASC,eAAe3R,EAAM8Q,kBAAoBxM,EAAE4C,OAChD,SAA/CuK,EAAcG,aAAa,iBAC3BH,EAAcI,aAAa,eAAgB,SAC3C7R,SAA8CA,EAAM+Q,0BAA0B/Q,EAAM8Q,iBAAkB,WACtGQ,EAAYjR,QAAQyR,SAGpBL,EAAcI,aAAa,eAAgB,QAC3C7R,SAA8CA,EAAM+Q,0BAA0B/Q,EAAM8Q,iBAAkB,UACtGQ,EAAYjR,QAAQ0R,QACxB,EAQJ,OANIT,EAAYjR,UACZkR,EA3BR,SAAuCS,GACnC,IAAIC,EAAiBD,EAAaE,WAClC,KAAOD,IAAmBP,UAAU,CAChC,MAAMS,EAAeF,EAAeG,cAAc,gBAClD,GAAID,EACA,OAAOA,EAEXF,EAAiBA,EAAeC,UACpC,CACA,OAAO,IACX,CAiBsBG,CAA8Bf,EAAYjR,SACpDkR,GACAA,EAAY1J,iBAAiB,QAAS2J,IAGvC,IAAMD,aAAiD,EAASA,EAAYvJ,oBAAoB,QAASwJ,EAAQ,IAE5H,MAAMQ,EAAehS,EAAM8B,IAAO,gBAAoB,QAAS,CAAEtB,IAAK8Q,EAAalQ,UAAW,IAAW,wBAAyB,CAAE,YAAapB,EAAMsS,WAAaC,aAAa,EAAMC,UAAU,EAAMlR,OAAO,EAAME,MAAM,EAAMyM,IAAKjO,EAAM8B,MAAW,gBAAoB,UAAY,CAAEX,QAASnB,EAAMyS,OAAQlR,UAAU,EAAMD,OAAO,EAAMF,UAAW,IAAW,yBAA0BO,UAAW3B,EAAM2B,UAAWF,YAAaqB,OAAO4P,2BAC5a,OAAI1S,EAAM2S,UACE,gBAAoB,MAAO,CAAEvR,UAAW,yBAC5C4Q,GACChS,EAAM8Q,kBAAoB,gBAAoB,SAAU,CAAE1P,UAAW,sBAAuB,aAAciK,EAAE,gBAAiB,cAAc,EAAM,eAAgB,WAEnK2G,CAAY,C","sources":["webpack:///./assets/common/src/components/common/ReactComment.tsx","webpack:///./assets/common/src/components/common/DwMarker.tsx","webpack:///./assets/common/src/components/utils/ThronVideo.tsx","webpack:///./assets/common/src/utils/imageutils.ts","webpack:///./assets/common/src/utils/product.ts","webpack:///./assets/common/src/utils/useMousePosition.ts","webpack:///./assets/stone/src/components/routerTransitions/AnimatedLink.tsx","webpack:///./assets/stone/src/components/routerTransitions/useRegisterProducts.tsx","webpack:///./assets/stone/src/components/common/ProductLink.tsx","webpack:///./assets/stone/src/components/product/PriceDisplay.tsx","webpack:///./assets/stone/src/components/product/ProductImage.tsx","webpack:///./assets/stone/src/components/product/ProductPrice.tsx","webpack:///./assets/stone/src/components/product/ProductTileVisual.tsx","webpack:///./assets/stone/src/components/product/ProductVideo.tsx"],"sourcesContent":["import React, { useEffect, useRef } from 'react';\nconst ReactComment = (props) => {\n const el = useRef();\n useEffect(() => {\n var _a;\n // @ts-ignore\n (_a = el.current) === null || _a === void 0 ? void 0 : _a.outerHTML = ``;\n }, []);\n return React.createElement(\"div\", { ref: el });\n};\nexport default ReactComment;\n","import React from 'react';\nimport ReactComment from './ReactComment';\nconst ContentAsset = (props) => {\n return React.createElement(ReactComment, { text: `dwMarker=\"${props.type}\" dwContentID=\"${props.uuid}\"` });\n};\nexport default ContentAsset;\n","import classNames from 'classnames';\nimport React, { useEffect, useRef } from 'react';\nimport ThronIntegrationComponent from './../../scripts/components/thronIntegrationComponent';\nconst ThronVideo = (props) => {\n const videoRef = useRef();\n useEffect(() => {\n if (videoRef.current) {\n const playerInstance = new ThronIntegrationComponent(videoRef.current);\n props.onPauseCallback && (playerInstance.onPauseCallback = props.onPauseCallback);\n props.onPlayCallback && (playerInstance.onPlayCallback = props.onPlayCallback);\n props.onCompleteCallback && (playerInstance.onCompleteCallback = props.onCompleteCallback);\n props.onInitCallback && (playerInstance.onInitCallback = props.onInitCallback);\n props.onTimeUpdate && (playerInstance.onTimeUpdate = props.onTimeUpdate);\n typeof props.loopTimes === 'number' && (playerInstance.loopTimes = props.loopTimes);\n }\n }, [props.thronID]);\n return (React.createElement(\"div\", { ref: videoRef, \"aria-hidden\": \"true\", className: classNames('video-wrapper', props.className), \"data-option-id\": props.thronID, \"data-option-mobile-id\": props === null || props === void 0 ? void 0 : props.thronMobileID, \"data-option-muted\": props.muted, \"data-option-autoplay\": props.autoplay, \"data-option-loop\": props.loop, \"data-option-lock-bitrate\": props.lockBitrate, \"data-option-no-skin\": props.noskin, \"data-option-sess-id\": props.sessionId }));\n};\nexport default ThronVideo;\n","import slugify from 'slugify';\nimport { getId } from './brandDiffsUtils';\nconst imageutils = {\n // res: {\n // HIRES: { width: 1571, height: 2000 },\n // LG: { width: 1024, height: 1304 },\n // MD: { width: 768, height: 977 },\n // SM: { width: 360, height: 458 },\n // XS: { width: 73, height: 93 },\n // XXS: { width: 15, height: 19 },\n // },\n transform: function (url, size, alt, quality, format) {\n if (!url) {\n return url;\n }\n if (url.indexOf('thron') > -1) {\n let name = alt ? slugify(alt, { remove: /[*+~.()'\"!:@/]/g, lower: true }) : 'image';\n let fullurl = url.replace(/\\/0x0\\/.*/, `/${size.width}x${size.height}/${name}.jpg`);\n let params = [];\n params.push(['scalemode', 'centered']);\n params.push(['adjustcrop', 'reduce']);\n const imgQuality = quality || window.imagequality;\n if (imgQuality > 0) {\n params.push(['quality', imgQuality]);\n }\n if (window.webpsupported) {\n switch (format) {\n case 'avif':\n params.push(['format', 'avif']);\n break;\n default:\n params.push(['format', 'WEBP']);\n break;\n }\n }\n if (params.length > 0) {\n fullurl = fullurl + '?' + params.map((i) => i[0] + '=' + i[1]).join('&');\n }\n return fullurl;\n }\n if (url.includes('fluidconfigure')) {\n return `${url}?width=${size.width}&height=${size.height}`;\n }\n url = this.clearParams(url);\n return `${url}?sw=${size.width}` + ((size.height && `&sh=${size.height}`) || '');\n },\n hires: function (url, alt) {\n return this.transform(url, HIRES, alt);\n },\n large: function (url, alt) {\n return this.transform(url, LG, alt);\n },\n medium: function (url, alt) {\n return this.transform(url, MD, alt);\n },\n small: function (url, alt) {\n return this.transform(url, SM, alt);\n },\n extraSmall: function (url, alt) {\n return this.transform(url, XS, alt);\n },\n clearParams: function (url) {\n try {\n if (url.indexOf('?') < 0)\n return url;\n const urlObj = new URL(url);\n return urlObj.href.replace(urlObj.search, '');\n }\n catch (e) {\n window.devmode && console.log('Impossible to clearParams of', url);\n }\n return url;\n },\n srcset: function (url, maxwidth, sizes) {\n url = this.clearParams(url);\n if (!sizes) {\n sizes = Object.values(window.mqObj).map((ww) => ({\n width: ww,\n }));\n }\n if (!sizes.length)\n return '';\n if (maxwidth && sizes.some((size) => size.width > maxwidth)) {\n let indexLimit = sizes.findIndex((size) => size.width > maxwidth);\n sizes.splice(indexLimit);\n sizes.push({\n width: maxwidth,\n });\n }\n return sizes\n .map((size) => {\n return `${this.transform(url, size, '')} ${size.width}w`;\n })\n .join(',');\n },\n};\nexport default imageutils;\n// let aspectratio = 2000 / 1571; // oldimages\nlet aspectratio = {\n MO: 2880 / 1920,\n ST: 2880 / 2160,\n};\nconst size = (width) => {\n return {\n width: width,\n height: Math.round(width * aspectratio[getId()]),\n };\n};\nexport const HIRES = size(1571);\nexport const LG = size(1024);\nexport const MD = size(768);\nexport const SM = size(360);\nexport const XS = size(73);\nexport const XXS = size(30); // servirà per il lazyloading\n","import einsteinutils from './einsteinutils';\nimport api from './api';\nimport axios from 'axios';\nexport const COLOUR_ATTRIBUTE = 'color';\nexport const SIZE_ATTRIBUTE = 'size';\nexport const getVariationValues = (product, attributeId) => {\n var _a, _b;\n return (((_b = (_a = product === null || product === void 0 ? void 0 : product.variationAttributes) === null || _a === void 0 ? void 0 : _a.find((variation) => {\n return variation.attributeId === attributeId;\n })) === null || _b === void 0 ? void 0 : _b.values) || []);\n};\nexport const getColorVariations = (product) => {\n return getVariationValues(product, COLOUR_ATTRIBUTE);\n};\nexport const getSizeVariations = (product) => {\n return getVariationValues(product, SIZE_ATTRIBUTE);\n};\nexport const getColorVariationActive = (product) => {\n return getColorVariations(product).find(({ selected }) => selected).value;\n};\nexport const getProductMasterId = (product) => {\n if (product.masterId == product.id) {\n const colorActiveId = getColorVariationActive(product);\n return product.masterId.replace(colorActiveId, '');\n }\n else {\n return product.masterId;\n }\n};\nexport const getProductAvailability = (product) => {\n let productAvailability;\n if (product === null || product === void 0 ? void 0 : product.availability) {\n if (product.availability.inStockDate) {\n productAvailability = 'https://schema.org/InStock';\n }\n else if (product.availability.lowStock) {\n productAvailability = 'https://schema.org/LimitedAvailability';\n }\n else if (product.availability.preorder) {\n productAvailability = 'https://schema.org/PreOrder';\n }\n else {\n //also if current.availability.isOutOfStock\n productAvailability = 'https://schema.org/OutOfStock';\n }\n }\n return productAvailability;\n};\nexport const getSimilarProducts = (product) => {\n return new Promise((resolve, reject) => {\n // const testProduct = {} as any;\n // testProduct.hasLimitedAvailability = true;\n // testProduct.uuid = 'testproduct';\n // testProduct.limitedAvailabilityConfig = {\n // showLimitedAvailabilityLabel: true,\n // showSimilarProducts: true,\n // similarProductConfig: {\n // useRecommender: false,\n // recommenderId: 'PDP_Recently-Viewed',\n // // productIdList: ['G20918C00033829H8999', 'G20911A0016868950455'],\n // productIdList: ['G20918C00033829H8999', 'G20911A0016868950455', '569100002A01PR001000100F', 'G10911A109005327977600', '569100001A05PR001000', 'H209Z1A00002M2904999'],\n // },\n // };\n // const thisProduct = testProduct;\n var _a, _b;\n const thisProduct = product;\n // Check if similar products for given product are already in session\n const similarProductsSession = sessionStorage.getItem('similar' + thisProduct.uuid);\n if (similarProductsSession) {\n const similarProductsSessionJSON = JSON.parse(similarProductsSession);\n resolve(similarProductsSessionJSON);\n return;\n }\n // Fetch from einstein or fetch tiles from static list;\n if ((_a = thisProduct.limitedAvailabilityConfig) === null || _a === void 0 ? void 0 : _a.showSimilarProducts) {\n const similarProductConfig = thisProduct.limitedAvailabilityConfig.similarProductConfig;\n if ((_b = similarProductConfig === null || similarProductConfig === void 0 ? void 0 : similarProductConfig.productIdList) === null || _b === void 0 ? void 0 : _b.length) {\n api.getProductTiles(similarProductConfig.productIdList).then((data) => {\n if (data) {\n sessionStorage.setItem('similar' + thisProduct.uuid, JSON.stringify(data));\n resolve(data);\n }\n else {\n reject();\n }\n });\n }\n else if (similarProductConfig === null || similarProductConfig === void 0 ? void 0 : similarProductConfig.useRecommender) {\n const cancelTokenSource = axios.CancelToken.source();\n const anchors = [{ masterId: thisProduct.masterId, id: thisProduct.id }];\n einsteinutils.productRecommendations(similarProductConfig.recommenderId, (rec) => {\n if (rec && rec.products && rec.products.length > 0) {\n sessionStorage.setItem('similar' + thisProduct.uuid, JSON.stringify(rec.products));\n resolve(rec.products);\n }\n else {\n reject();\n }\n }, cancelTokenSource, anchors);\n }\n else {\n reject();\n }\n }\n });\n};\n","import { useEffect, useState } from 'react';\nconst useMousePosition = (target) => {\n const [mousePosition, setMousePosition] = useState({ x: null, y: null });\n const [mouseStatus, setMouseStatus] = useState('OUTSIDE');\n // let focusTimeout: number;\n const updateMousePosition = (e) => {\n setMousePosition({ x: e.offsetX, y: e.offsetY });\n };\n const updateMouseOver = (e) => {\n // console.log('mouse over');\n // console.log(e.type);\n // clearTimeout(focusTimeout);\n setMouseStatus('OVER');\n };\n const updateMouseOut = (e) => {\n // console.log('mouse out');\n // console.log(e.type);\n // focusTimeout = setTimeout(() => {\n setMouseStatus('OUTSIDE');\n // }, 50);\n };\n useEffect(() => {\n target === null || target === void 0 ? void 0 : target.current.addEventListener('mousemove', updateMousePosition);\n target === null || target === void 0 ? void 0 : target.current.addEventListener('focusin', updateMouseOver);\n target === null || target === void 0 ? void 0 : target.current.addEventListener('focusout', updateMouseOut);\n target === null || target === void 0 ? void 0 : target.current.addEventListener('mouseenter', updateMouseOver);\n target === null || target === void 0 ? void 0 : target.current.addEventListener('mouseleave', updateMouseOut);\n return () => {\n target === null || target === void 0 ? void 0 : target.current.removeEventListener('mousemove', updateMousePosition);\n target === null || target === void 0 ? void 0 : target.current.removeEventListener('focusin', updateMouseOver);\n target === null || target === void 0 ? void 0 : target.current.removeEventListener('focusout', updateMouseOut);\n target === null || target === void 0 ? void 0 : target.current.removeEventListener('mouseenter', updateMouseOver);\n target === null || target === void 0 ? void 0 : target.current.removeEventListener('mouseleave', updateMouseOut);\n };\n }, []);\n return { position: mousePosition, status: mouseStatus };\n};\nexport const handleTileNavigation = (target) => {\n const [status, setStatus] = useState('OUT');\n const [navigation, setNavigation] = useState();\n const updateNavigation = (type) => {\n setNavigation(type == 'focusin' || type == 'focusout' ? 'keyboard' : 'mouse');\n };\n const handleEnter = (e) => {\n updateNavigation(e.type);\n if (status != 'IN' && e.relatedTarget) {\n setStatus('IN');\n }\n };\n const handleExit = (e) => {\n var _a;\n updateNavigation(e.type);\n if (e.type == 'focusout') {\n if (e.relatedTarget && !((_a = target.current) === null || _a === void 0 ? void 0 : _a.contains(e.relatedTarget))) {\n setStatus('OUT');\n }\n }\n else {\n setStatus('OUT');\n }\n };\n useEffect(() => {\n target === null || target === void 0 ? void 0 : target.current.addEventListener('focusin', handleEnter);\n target === null || target === void 0 ? void 0 : target.current.addEventListener('focusout', handleExit);\n target === null || target === void 0 ? void 0 : target.current.addEventListener('mouseenter', handleEnter);\n target === null || target === void 0 ? void 0 : target.current.addEventListener('mouseleave', handleExit);\n return () => {\n var _a, _b, _c, _d;\n (_a = target === null || target === void 0 ? void 0 : target.current) === null || _a === void 0 ? void 0 : _a.removeEventListener('focusin', handleEnter);\n (_b = target === null || target === void 0 ? void 0 : target.current) === null || _b === void 0 ? void 0 : _b.removeEventListener('focusout', handleExit);\n (_c = target === null || target === void 0 ? void 0 : target.current) === null || _c === void 0 ? void 0 : _c.removeEventListener('mouseenter', handleEnter);\n (_d = target === null || target === void 0 ? void 0 : target.current) === null || _d === void 0 ? void 0 : _d.removeEventListener('mouseleave', handleExit);\n };\n }, []);\n return { navigation, status };\n};\nexport default useMousePosition;\n","import { __rest } from \"tslib\";\nimport { ProductActionTypes } from '@state/features/common.types';\nimport React, { useRef } from 'react';\nimport { useDispatch } from 'react-redux';\nimport { Link, useHistory, useLocation } from 'react-router-dom';\nconst AnimatedLink = (props) => {\n const { to, from, productId, children, className, ariaLabel, ariaHidden, tabIndex, product, trackingAction, originalUuid } = props, rest = __rest(props, [\"to\", \"from\", \"productId\", \"children\", \"className\", \"ariaLabel\", \"ariaHidden\", \"tabIndex\", \"product\", \"trackingAction\", \"originalUuid\"]);\n const dispatch = useDispatch();\n const el = useRef(null);\n const history = useHistory();\n const location = useLocation();\n const pathname = typeof to == 'string' ? to : to === null || to === void 0 ? void 0 : to.pathname;\n const state = typeof to == 'object' && to.state ? to.state : {};\n const linkProps = Object.assign({ to() {\n const mergedState = Object.assign(Object.assign({}, state), { transition: {\n productId,\n direction: 'in',\n productUuid: originalUuid,\n }, viewport: {\n scrollY: 0,\n } });\n return {\n pathname,\n state: mergedState,\n };\n },\n onClick(event) {\n dispatch({\n type: ProductActionTypes.SET_PRODUCT,\n payload: product,\n });\n if (trackingAction) {\n trackingAction(event);\n }\n // const rect = el.current.getBoundingClientRect();\n // const filterHeight = document.querySelector('.refine')?.clientHeight;\n // let header = document.querySelector('header');\n // const headerHeight = header && header.clientHeight;\n // const headerGap = (filterHeight || 0) + headerHeight;\n const newLocation = location.search.includes('pgv=ab') ? location.pathname + '?pgv=ab' : location.pathname;\n const mergedState = Object.assign(Object.assign({}, from), { transition: {\n productId,\n direction: 'out',\n }, viewport: {\n scrollY: window.scrollY,\n // scrollY: window.scrollY + rect.top - headerGap,\n } });\n history.replace(newLocation, mergedState);\n } }, rest);\n return (React.createElement(Link, Object.assign({ ref: el }, linkProps, { id: props.id, className: className, \"aria-label\": ariaLabel, \"aria-hidden\": ariaHidden, tabIndex: tabIndex }), children));\n};\nexport default AnimatedLink;\n","import { useEffect } from 'react';\nimport { useAnimatedRouteContext } from './AnimatedRoute';\nconst useRegisterProducts = (productUuid, el) => {\n const { registerProducts, unregisterProducts } = useAnimatedRouteContext();\n useEffect(() => {\n if (productUuid && el.current) {\n registerProducts({\n el,\n productUuid,\n });\n }\n return () => {\n if (productUuid) {\n unregisterProducts(productUuid);\n }\n };\n }, [productUuid]);\n};\nexport default useRegisterProducts;\n","import AnimatedLink from '@stone/components/routerTransitions/AnimatedLink';\nimport analytics from '@stone/utils/analytics';\nimport React, { useContext } from 'react';\nimport { __RouterContext } from 'react-router';\nimport useregisterProducts from '../routerTransitions/useRegisterProducts';\nconst ProductLink = (props) => {\n const router = !props.ignoreRouting && (navigator.userAgent || '').indexOf('bot') === -1 && useContext(__RouterContext);\n const linkProps = {\n productId: props.product.id,\n to: props.product.route,\n className: props.className,\n from: {\n state: {\n thumbStartIndex: props.index,\n },\n },\n };\n if (props.tileRef && props.originalUuid) {\n useregisterProducts(props.originalUuid, props.tileRef);\n }\n const onClickAction = (event) => {\n var _a;\n if (props.noClickTracking) {\n return;\n }\n else if ((_a = props === null || props === void 0 ? void 0 : props.analyticsData) === null || _a === void 0 ? void 0 : _a.item_list_name) {\n analytics.productClick({\n product: props.product,\n index: props.product.analyticsIndex,\n item_list_name: props.analyticsData.item_list_name,\n });\n }\n };\n return router ? (React.createElement(AnimatedLink, Object.assign({ product: props.product }, linkProps, { trackingAction: onClickAction, ariaLabel: props.ariaLabel, ariaHidden: props.ariaHidden, tabIndex: props.tabIndex, originalUuid: props.originalUuid }), props.children)) : (React.createElement(\"a\", { id: props.id, href: props.product.productUrl, onClick: onClickAction, className: props.className, \"aria-label\": props.ariaLabel, \"aria-hidden\": props.ariaHidden, tabIndex: props.tabIndex, \"aria-labelledby\": props.ariaLabelledby, onFocus: props.onFocus, onBlur: props.onBlur, onMouseEnter: props.onMouseEnter, onMouseLeave: props.onMouseLeave }, props.children));\n};\nexport default ProductLink;\n","import useMediaQueries from '@stone/hooks/useMediaQueries';\nimport classNames from 'classnames';\nimport React from 'react';\nimport { useTranslation } from 'react-i18next';\nconst PriceDisplay = (props) => {\n var _a;\n const { t } = useTranslation();\n const { isMobile } = useMediaQueries();\n const printMinRangePrice = () => {\n return (React.createElement(React.Fragment, null,\n props.minFullPrice && props.minFullPrice !== props.min && React.createElement(\"del\", { className: \"product-price-list\" }, props.minFullPrice),\n props.min));\n };\n if (props.type === 'range') {\n return (React.createElement(\"span\", { className: classNames('product-price', {\n inline: props.inline,\n }) },\n window.language != 'ja' && t('label.from'),\n printMinRangePrice(),\n window.language == 'ja' && t('label.from')));\n }\n const promo = (_a = props.promotions) === null || _a === void 0 ? void 0 : _a[0];\n const hasDiscountPrice = props.list && !props.isExchangePrice && (props === null || props === void 0 ? void 0 : props.list) !== (props === null || props === void 0 ? void 0 : props.sales);\n const a11yRender = () => {\n return (React.createElement(\"span\", { className: \"visually-hidden\" }, props.list && !props.isExchangePrice ? (t('product.price.discounted.a11y', {\n originalprice: props.list,\n currentprice: props.sales,\n currency: props.currency,\n })) : (React.createElement(React.Fragment, null,\n props.isExchangePrice && t('order.exchangecredit'),\n \" \",\n props.sales,\n \" \",\n props.currency ? ` ${props.currency}` : ''))));\n };\n return (React.createElement(React.Fragment, null,\n a11yRender(),\n React.createElement(\"span\", { className: classNames('product-price', {\n inline: props.inline,\n 'justify-between': props.isPlp && isMobile && hasDiscountPrice,\n }), \"aria-hidden\": true },\n React.createElement(\"span\", { className: classNames('product-price-wrap', {\n 'd-column': props.isPlp && isMobile && hasDiscountPrice,\n }) },\n hasDiscountPrice && React.createElement(\"del\", { className: \"product-price-list\" }, props.list),\n React.createElement(\"span\", { className: \"product-price-sale\" },\n props.sales,\n props.currency ? ` ${props.currency}` : '')),\n (promo === null || promo === void 0 ? void 0 : promo.calloutMsg) && React.createElement(\"span\", { className: \"product-price-msg\" }, promo.calloutMsg))));\n};\nPriceDisplay.defaultProps = {\n inline: false,\n};\nexport default PriceDisplay;\n","import useBreakpoint from '@common/utils/useBreakpoint';\nimport imageutils, { MD, SM, XS, XXS, LG } from '@utils/imageutils';\nimport classNames from 'classnames';\nimport React, { useEffect, useMemo, useRef } from 'react';\nconst defaultSizes = [XXS, XS, SM, MD];\nconst ProductImage = (props) => {\n var _a;\n const currentBreakpoint = useBreakpoint();\n const image = useMemo(() => {\n var _a, _b, _c, _d;\n if (props.index) {\n return (_a = props.img) === null || _a === void 0 ? void 0 : _a.urls[props.index];\n }\n if (props.type) {\n let imageoldsuffix = '_' + props.type + '.';\n let imagenewsuffix = '_' + props.type + '1.';\n let img = (_c = (_b = props.img) === null || _b === void 0 ? void 0 : _b.urls) === null || _c === void 0 ? void 0 : _c.find((u) => u && (u.includes(imageoldsuffix) || u.includes(imagenewsuffix)));\n // if (!img && props.type === 'X') {\n // // fallback su F per vecchie immagini\n // img = props.img?.urls?.find((u) => u && (u.includes('_F.') || u.includes('_F1.')));\n // }\n if (img) {\n return img;\n }\n }\n return (_d = props.img) === null || _d === void 0 ? void 0 : _d.urls[0];\n }, [props.img, props.index, props.type]);\n const el = useRef();\n const lowResImg = useMemo(() => { var _a; return imageutils.transform(image, XXS, (_a = props.img) === null || _a === void 0 ? void 0 : _a.alt); }, [image]);\n const hiResImage = useMemo(() => {\n var _a, _b;\n //@ts-ignore disable-next-line\n if (currentBreakpoint >= window.mqObj.md) {\n return imageutils.transform(image, LG, (_a = props.img) === null || _a === void 0 ? void 0 : _a.alt, null, 'avif');\n }\n else {\n return imageutils.transform(image, MD, (_b = props.img) === null || _b === void 0 ? void 0 : _b.alt, null, 'avif');\n }\n }, [currentBreakpoint, image]);\n const multipleSrc = useMemo(() => {\n let srcs = [];\n (props.sizes || defaultSizes).forEach((sz, i) => {\n var _a;\n srcs.push(`${imageutils.transform(image, sz, (_a = props.img) === null || _a === void 0 ? void 0 : _a.alt)} ${sz.width}w`);\n });\n return srcs.join(', ');\n }, [image]);\n const multipleSrcAvif = useMemo(() => {\n let srcs = [];\n (props.sizes || defaultSizes).forEach((sz, i) => {\n var _a;\n srcs.push(`${imageutils.transform(image, sz, (_a = props.img) === null || _a === void 0 ? void 0 : _a.alt, null, 'avif')} ${sz.width}w`);\n });\n return srcs.join(', ');\n }, [image]);\n const altText = useMemo(() => {\n var _a, _b;\n const index = (_a = props.seoIndex) !== null && _a !== void 0 ? _a : props.index;\n return `${props.alt || ((_b = props.img) === null || _b === void 0 ? void 0 : _b.alt)}${index >= 0 ? ` ${index + 1}` : ''}`;\n }, [image]);\n useEffect(() => {\n props.onHasImage && props.onHasImage(!!image);\n }, [image]);\n const lazyPosterImg = useMemo(() => {\n return props.lazyLowRes ? lowResImg : 'data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==';\n }, [image]);\n const imageElement = (React.createElement(\"picture\", { className: classNames({ lazyload: !props.lazyDisabled }, props.className) },\n React.createElement(\"source\", Object.assign({}, (!props.lazyDisabled && { ['data-srcset']: multipleSrcAvif }), { srcSet: props.lazyDisabled ? multipleSrcAvif : lazyPosterImg, type: \"image/avif\" })),\n React.createElement(\"source\", Object.assign({}, (!props.lazyDisabled && { ['data-srcset']: multipleSrc }), { srcSet: props.lazyDisabled ? multipleSrc : lazyPosterImg, type: \"image/webp\" })),\n React.createElement(\"img\", { ref: props.ref || el, alt: altText, src: props.lazyDisabled ? hiResImage : lowResImg, \"data-sizes\": \"auto\", \"data-idx\": props.index || 0, className: classNames({ lazyload: !props.lazyDisabled }, props.className), \"data-quality-img\": hiResImage, width: XXS.width, height: XXS.height, style: props.style, \"aria-hidden\": (props === null || props === void 0 ? void 0 : props.ariaHidden) != undefined ? props === null || props === void 0 ? void 0 : props.ariaHidden : !!props.alt || !!((_a = props.img) === null || _a === void 0 ? void 0 : _a.alt) })));\n if (props.onlyImage) {\n return imageElement;\n }\n if (!props.img || !image) {\n return (React.createElement(\"div\", { className: \"product-image\", \"data-tiletype\": props.tiletype, \"data-type\": props.type },\n React.createElement(\"img\", { alt: altText, src: \"data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\", \"data-idx\": props.index || 0, className: props.className, width: XXS.width, height: XXS.height, style: props.style })));\n }\n return (React.createElement(\"div\", { className: \"product-image\", \"data-tiletype\": props.tiletype, \"data-type\": props.type }, imageElement));\n};\nexport default ProductImage;\n","import React from 'react';\nimport PriceDisplay from './PriceDisplay';\nconst ProductPrice = (props) => {\n var _a, _b, _c, _d, _e, _f, _g, _h;\n if (!props.price) {\n return React.createElement(React.Fragment, null);\n }\n return (React.createElement(React.Fragment, null,\n React.createElement(PriceDisplay, { inline: props.inline, type: props.price.type, max: (_b = (_a = props.price.max) === null || _a === void 0 ? void 0 : _a.sales) === null || _b === void 0 ? void 0 : _b.formatted, min: (_d = (_c = props.price.min) === null || _c === void 0 ? void 0 : _c.sales) === null || _d === void 0 ? void 0 : _d.formatted, minFullPrice: (_f = (_e = props.price.min) === null || _e === void 0 ? void 0 : _e.list) === null || _f === void 0 ? void 0 : _f.formatted, list: (_g = props.price.list) === null || _g === void 0 ? void 0 : _g.formatted, sales: (_h = props.price.sales) === null || _h === void 0 ? void 0 : _h.formatted, isExchangePrice: props.isExchangePrice, promotions: props.promotions, isPlp: props.isPlp })));\n};\nProductPrice.defaultProps = {\n inline: false,\n};\nexport default ProductPrice;\n","import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport classNames from 'classnames';\nimport { getRandomUUID } from '@common/utils/stringUtils';\nimport useMediaQueries from '@stone/hooks/useMediaQueries';\nimport ProductImage from '@stone/components/product/ProductImage';\nimport ProductVideo from '@stone/components/product/ProductVideo';\nconst ProductTIleVisual = (props) => {\n const { isDesktop } = useMediaQueries();\n const uuid = useRef(getRandomUUID());\n // STATES\n const [visualToShow, setVisualToShow] = useState(1);\n const [visual1, setVisual1] = useState(null);\n const [visual2, setVisual2] = useState(null);\n const [blockRollover, setBlockRollover] = useState(null);\n const [videoState, setVideoState] = useState('PLAYING');\n //MEMOS\n let lockOnChange = useMemo(() => {\n if (!props.isOver)\n return false;\n return props.isChanged;\n }, [props.isOver, props.isChanged]);\n //CONSTANTS\n const imagePlaceholder = (React.createElement(\"div\", { className: \"product-image\" },\n React.createElement(\"img\", { alt: '', src: \"data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\", \"aria-hidden\": true })));\n //METHODS\n const getVisual = (val, defaultVal) => {\n let isVideo = val.indexOf('V') === 0;\n return {\n type: (isVideo && 'video') || 'image',\n value: val,\n default: defaultVal || val,\n };\n };\n const visualImage = (visual, n, hide) => {\n return (React.createElement(\"div\", { className: classNames('product-image', { hidden: hide }) },\n React.createElement(ProductImage, { productId: props.product.id, onHasImage: (has) => {\n if (n === 2) {\n setBlockRollover(!has);\n }\n }, img: props.product.imgs, tiletype: props.tileType, type: visual.value, onlyImage: true })));\n };\n const handleButtonState = (id, state) => {\n id === uuid.current && setVideoState(state);\n };\n const visualVideo = (visual, n, hide) => {\n //ciclo i videos e verifico la presenza di quello richiesto\n let videoURL = props.product.videos ? Object.values(props.product.videos).find((url) => url.includes(`_${visual.value}`)) : null;\n return videoURL ? (React.createElement(\"div\", { className: classNames('product-tile__image-video', {\n hidden: hide,\n }) },\n React.createElement(ProductVideo, { url: videoURL, overrideButtonID: uuid.current, handleOverrideButtonState: handleButtonState }))) : (\n //fallback standard visual image if missing video\n visualImage(visual, n, hide));\n };\n //CALLBACKS\n const printVisual1 = useCallback(() => {\n if (!visual1)\n return imagePlaceholder;\n return visual1.type === 'video' ? visualVideo(visual1, 1, lockOnChange) : visualImage(visual1, 1, lockOnChange);\n }, [visual1, lockOnChange]);\n const printVisual2 = useCallback(() => {\n if (!visual2)\n return imagePlaceholder;\n return visual2.type === 'video' ? visualToShow == 2 && visualVideo(visual2, 2) : visualImage(visual2, 2, visualToShow != 2);\n }, [visual2, visualToShow]);\n // EFFECTS\n useEffect(() => {\n const v1 = getVisual(props.customImage || props.visual1, props.visual1);\n const v2 = v1.type != 'video' && getVisual(props.visual2);\n setVisual1(v1);\n if (!(v2 === null || v2 === void 0 ? void 0 : v2.value)) {\n setBlockRollover(true);\n }\n else {\n setVisual2(v2);\n }\n }, [props.product, props.visual1, props.visual2, props.customImage]);\n useEffect(() => {\n if (blockRollover)\n return;\n setVisualToShow(!isDesktop || !props.isOver ? 1 : 2);\n }, [props.isOver, isDesktop, blockRollover]);\n return (React.createElement(React.Fragment, null,\n React.createElement(\"div\", { className: \"overvisual\" }, !blockRollover && printVisual2()),\n printVisual1()));\n};\nProductTIleVisual.defaultProps = {\n visual1: 'F',\n visual2: 'R',\n};\nexport default ProductTIleVisual;\n","import ThronVideo from '@components/utils/ThronVideo';\nimport classNames from 'classnames';\nimport React, { useEffect, useRef } from 'react';\nimport { useTranslation } from 'react-i18next';\nconst ProductVideo = (props) => {\n const { t } = useTranslation();\n const pdpVideoRef = useRef(null);\n function findElementWithPauseAttribute(videoElement) {\n let currentElement = videoElement.parentNode;\n while (currentElement !== document) {\n const pauseElement = currentElement.querySelector('[data-pause]');\n if (pauseElement) {\n return pauseElement;\n }\n currentElement = currentElement.parentNode;\n }\n return null; // Se non viene trovato nessun elemento con l'attributo data-pause\n }\n useEffect(() => {\n let pauseButton;\n const onPause = (e) => {\n const currentButton = props.overrideButtonID ? document.getElementById(props.overrideButtonID) : e.target;\n if (currentButton.getAttribute('aria-pressed') === 'true') {\n currentButton.setAttribute('aria-pressed', 'false');\n props === null || props === void 0 ? void 0 : props.handleOverrideButtonState(props.overrideButtonID, 'PLAYING');\n pdpVideoRef.current.play();\n }\n else {\n currentButton.setAttribute('aria-pressed', 'true');\n props === null || props === void 0 ? void 0 : props.handleOverrideButtonState(props.overrideButtonID, 'PAUSED');\n pdpVideoRef.current.pause();\n }\n };\n if (pdpVideoRef.current) {\n pauseButton = findElementWithPauseAttribute(pdpVideoRef.current);\n if (pauseButton) {\n pauseButton.addEventListener('click', onPause);\n }\n }\n return () => pauseButton === null || pauseButton === void 0 ? void 0 : pauseButton.removeEventListener('click', onPause);\n });\n const videoElement = props.url ? (React.createElement(\"video\", { ref: pdpVideoRef, className: classNames('wrapper-product-video', { 'is-parfum': props.isParfum }), playsInline: true, autoPlay: true, muted: true, loop: true, src: props.url })) : (React.createElement(ThronVideo, { thronID: props.tronID, autoplay: true, muted: true, className: classNames('product-video-wrapper'), sessionId: props.sessionId, lockBitrate: window.lockBitrateProductVideos }));\n if (props.inGallery) {\n return (React.createElement(\"div\", { className: \"wrapper-product-video\" },\n videoElement,\n !props.overrideButtonID && React.createElement(\"button\", { className: \"product-video-pause\", \"aria-label\": t('button.pause'), \"data-pause\": true, \"aria-pressed\": \"false\" })));\n }\n return videoElement;\n};\nexport default ProductVideo;\n"],"names":["props","el","useRef","useEffect","_a","current","outerHTML","text","ref","type","uuid","videoRef","playerInstance","onPauseCallback","onPlayCallback","onCompleteCallback","onInitCallback","onTimeUpdate","loopTimes","thronID","className","thronMobileID","muted","autoplay","loop","lockBitrate","noskin","sessionId","imageutils","transform","url","size","alt","quality","format","indexOf","name","remove","lower","fullurl","replace","width","height","params","push","imgQuality","window","imagequality","webpsupported","length","map","i","join","includes","this","clearParams","hires","HIRES","large","LG","medium","MD","small","SM","extraSmall","XS","urlObj","URL","href","search","e","devmode","console","log","srcset","maxwidth","sizes","Object","values","mqObj","ww","some","indexLimit","findIndex","splice","aspectratio","MO","ST","Math","round","XXS","getVariationValues","product","attributeId","_b","variationAttributes","find","variation","getColorVariations","getSizeVariations","getProductMasterId","masterId","id","colorActiveId","selected","value","getColorVariationActive","getProductAvailability","productAvailability","availability","inStockDate","lowStock","preorder","handleTileNavigation","target","status","setStatus","useState","navigation","setNavigation","updateNavigation","handleEnter","relatedTarget","handleExit","contains","addEventListener","_c","_d","removeEventListener","to","from","productId","children","ariaLabel","ariaHidden","tabIndex","trackingAction","originalUuid","rest","__rest","dispatch","history","location","pathname","state","linkProps","assign","mergedState","transition","direction","productUuid","viewport","scrollY","onClick","event","payload","newLocation","registerProducts","unregisterProducts","router","ignoreRouting","navigator","userAgent","useContext","route","thumbStartIndex","index","tileRef","onClickAction","noClickTracking","analyticsData","item_list_name","analytics","analyticsIndex","productUrl","ariaLabelledby","onFocus","onBlur","onMouseEnter","onMouseLeave","PriceDisplay","t","isMobile","inline","language","minFullPrice","min","promo","promotions","hasDiscountPrice","list","isExchangePrice","sales","originalprice","currentprice","currency","isPlp","calloutMsg","defaultProps","defaultSizes","currentBreakpoint","image","useMemo","img","urls","imageoldsuffix","imagenewsuffix","u","lowResImg","hiResImage","md","multipleSrc","srcs","forEach","sz","multipleSrcAvif","altText","seoIndex","onHasImage","lazyPosterImg","lazyLowRes","imageElement","lazyload","lazyDisabled","srcSet","src","style","undefined","onlyImage","tiletype","ProductPrice","_e","_f","_g","_h","price","max","formatted","ProductTIleVisual","isDesktop","visualToShow","setVisualToShow","visual1","setVisual1","visual2","setVisual2","blockRollover","setBlockRollover","videoState","setVideoState","lockOnChange","isOver","isChanged","imagePlaceholder","getVisual","val","defaultVal","default","visualImage","visual","n","hide","hidden","has","imgs","tileType","handleButtonState","visualVideo","videoURL","videos","overrideButtonID","handleOverrideButtonState","printVisual1","useCallback","printVisual2","v1","customImage","v2","pdpVideoRef","pauseButton","onPause","currentButton","document","getElementById","getAttribute","setAttribute","play","pause","videoElement","currentElement","parentNode","pauseElement","querySelector","findElementWithPauseAttribute","isParfum","playsInline","autoPlay","tronID","lockBitrateProductVideos","inGallery"],"sourceRoot":""}