{"version":3,"file":"KitBag-Chunk-8b23455ecef9af380a2e.js","mappings":"8YAoBA,MA8DA,EA9DcA,IAWkB,IAXjB,SACbC,EAAQ,QACRC,EAAO,WACPC,EAAU,QACVC,EAAO,MACPC,EAAK,aACLC,EAAY,SACZC,EAAQ,SACRC,GAAW,EAAI,gBACfC,GAAkB,EAAI,MACtBC,EAAQ,IACiBV,EACzB,MAAMW,EAAeN,GAAOO,OACtBC,EAAeR,GAAOS,OACtBC,EAAgBV,GAAOW,QACvBC,EAAqBZ,GAAOa,aAC5BC,GAAaC,EAAAA,EAAAA,MACZC,EAAUC,IAAeC,EAAAA,EAAAA,WAAkB,GAElD,IAAKR,GAAeS,IAAK,OAAO,KAEhC,MAAMC,EAAa,CACjB,CAACC,EAAAA,EAAeC,OAAQhB,EACxB,CAACe,EAAAA,EAAeE,QAASf,EACzB,CAACa,EAAAA,EAAeG,OAAQd,EACxB,CAACW,EAAAA,EAAeI,QAASb,GAG3B,OACEc,MAAAC,cAAA,WAASC,UAAWC,IAAWhC,IAC7B6B,MAAAC,cAAA,UACEG,KAAK,aACLzB,MAAOA,EACP0B,OAAQ,GAAGzB,GAAca,aAAaX,GAAcW,aAAaT,GAAeS,cAAcP,GAAoBO,cAEpHO,MAAAC,cAAA,MAAAK,EAAA,CACEC,IAAK/B,EACLgC,IAAKlC,GAAOmC,SAASC,OAASpC,GAAOmC,QAAU,cAC/CP,UAAWC,IACT5B,EACA,uCAEF,yBAAwBF,EACxBsC,UAAU,QACVC,QAASnC,EAAW,OAAS,QAC7BoC,OAAQA,IAAMtB,GAAY,GAC1BZ,MAAOA,EACPmC,IACExB,GAAYZ,EACRgB,EAAWN,IAAaK,IACxBb,GAAca,IAEpBsB,OAAQrB,EAAWN,IAAa2B,OAChCC,MAAOtB,EAAWN,IAAa4B,MAC/BX,OAAQ,GAAGzB,GAAcqC,qBAAqBnC,GAAcmC,qBAAqBjC,GAAeiC,sBAAsB/B,GAAoB+B,qBACrI7C,GAAc,CAAE,cAAeA,KAErCkB,GAAYpB,EACL,C,mRC5Dd,MAmCA,EAnCiBD,IAQuB,IARtB,KAChBmC,EAAO,UAAS,KAChBc,EAAI,SACJhD,EAAQ,UACRgC,EAAS,aACTiB,EAAY,WACZ/C,KACGgD,GAC8BnD,EACjC,MAAMoD,EAAclB,IAClB,CACE,CAAC,iBAAiBgB,EAAe,UAAY,yBAClC,YAATf,GAEJ,CACE,2EACW,YAATA,GAEJF,EACA,2BAGF,OACEF,MAAAC,cAAA,IAAAK,EAAA,GACMc,EAAS,CACbE,KAAMJ,GAAMzB,IACZ8B,OAAQL,GAAMK,OACdrB,UAAWmB,EACX,cAAajD,IAEZF,EACC,C,ySC/BR,MAiCA,EAjCuBD,IAAA,IAAC,KACtBuD,GAAO,EAAK,cACZC,EAAa,cACbC,EAAa,MACbC,EAAQ,QAAO,YACfC,EAAW,WACXxD,KACGyD,GACG5D,EAAA,OACN+B,MAAAC,cAAA,SAAAK,EAAA,CACEJ,UAAWC,IACT,sEACU,qBAAVwB,GAAgCH,EAC5B,wDACA,mBAAkBI,EAAc,GAAK,oBAE3C,cAAaxD,GACTyD,KAEDL,GAAQE,IACT1B,MAAAC,cAAA,KAAGC,UAAU,MAAMsB,EAAOE,EAAgBD,GAG5CzB,MAAAC,cAAC6B,EAAAA,EAAOC,KAAI,CACVC,QAAS,CACPC,OAAQT,GAAQ,IAAM,IAGxBxB,MAAAC,cAACiC,EAAAA,EAAI,CAACC,KAAK,YAAYC,KAAK,UAAUC,eAAe,iBAEhD,C,+TCjCX,MAAMC,GAAcC,EAAAA,EAAAA,KAClB,IAAM,uCAoIR,GA9GcC,EAAAA,EAAAA,aACZ,CAAAvE,EAkBEsC,KACG,IAlBH,QACEpC,EAAO,OACPsE,EAAM,SACNC,GAAW,EAAI,QACfrE,EAAO,UACPsE,EAAS,MACTC,EAAK,gBACLC,EAAe,WACfC,EAAa,eAAc,YAC3BC,EAAW,4BACXC,EAA2B,aAC3BC,EAAY,aACZC,EAAY,aACZC,EAAY,eACZC,EAAc,aACdC,GACMpF,EAGR,MAAOqF,EAAcC,IAAmB/D,EAAAA,EAAAA,UAAS,IAC1CgE,EAAWC,IAAgBjE,EAAAA,EAAAA,WAAS,IAE3CkE,EAAAA,EAAAA,YAAU,KACRD,EAA+B,oBAAXE,OAAuB,GAC1C,KAEHD,EAAAA,EAAAA,YAAU,KACRH,EAAgB,EAAE,GACjB,CAACX,IAEJ,MAAMgB,EAAwBC,KAC5BC,EAAAA,EAAAA,GAAgB,CACdC,MAAO,mBACPC,kBAAmB,iBACnBC,eAAgBJ,EAChBK,YAAatB,GACb,EAGEuB,EAAqBC,KACzBN,EAAAA,EAAAA,GAAgB,CACdC,MAAO,mBACPC,kBACa,UAAXI,EAAqB,cAAgB,iBACvCH,eAA2B,UAAXG,EAAqB,cAAgB,iBACrDF,YAAatB,GACb,EAmBJ,OAAKG,EAGH/C,MAAAC,cAAC6B,EAAAA,EAAOuC,IAAG,CACT9D,IAAKA,EACLL,UAAWC,IAAWhC,EAAS2E,EAAY,UAC3C,yBAAwBzE,EACxB,cAAasE,EAAY,gBAAkB,eAC3C2B,MAAO,CACLC,QAASvB,GAA+B,IAGzCQ,GACCxD,MAAAC,cAACqC,EAAWhC,EAAA,CACVb,IAAKsD,EACL/B,MAAM,OACND,OAAO,OACP2B,SAAUA,EACV8B,SAAO,EACPC,WAAYC,IAAA,IAAC,OAAEC,GAAQD,EAAA,OAnCEb,EAmC2Bc,EAlCtDrB,EAAe,KAAQO,EAAW,KACpCD,EAAqB,OAEnBN,EAAe,IAAOO,EAAW,IACnCD,EAAqB,OAEnBN,EAAe,KAAQO,EAAW,KACpCD,EAAqB,OAEnBN,EAAe,IAAOO,EAAW,IACnCM,EAAkB,iBAEpBZ,EAAgBM,GAbeA,KAmCkC,EAC3De,QAASA,KACPzB,MACAgB,EAAkB,QAAQ,EAE5BU,QAASA,KACP5B,MACAkB,EAAkB,WAAW,EAE/BW,QAASA,IAAMzB,KAAe,GAC9B0B,OAAQA,IAAM1B,KAAe,GAC7B2B,QAAS9B,EACTT,OAAQA,EACRW,eAAiBW,IACfX,IAAiBW,EAAMxC,OAAO,GAE5BsB,KAnCa,IAsCV,G,kJC/GnB,MAmIA,EAnIoB5E,IAkBP,IAlBQ,SACnBgH,GAAW,EAAK,SAChBvC,EAAQ,WACRwC,EAAU,WACV9G,EAAa,gBAAe,qBAC5B+G,EAAoB,2BACpBC,EAA0B,mCAC1BC,EAAqC,kBAAiB,0BACtDC,EAA4B,EAAC,gBAC7BC,EAAkB,GAAG,KACrBC,EAAI,gBACJC,EAAe,iBACfC,GAAmB,EAAI,MACvBC,EAAK,aACLC,EAAY,WACZ9C,EAAU,4BACVE,EAA2B,eAC3B6C,GACM5H,EACN,MAAO0E,EAAWU,IAAgB7D,EAAAA,EAAAA,WAAS,IACpCsG,EAAuBC,IAA4BvG,EAAAA,EAAAA,WAAS,IAC5DwG,EAASC,IAAczG,EAAAA,EAAAA,WAAS,IAChC0G,EAAYC,IAAiB3G,EAAAA,EAAAA,WAAS,GACvC4G,GAAWC,EAAAA,EAAAA,QAAuB,MAClCC,GAASC,EAAAA,EAAAA,GAAUH,EAAU,CAAEI,OAAQjB,IACvCkB,EAAiBtB,EAEnBF,IAAaa,EADbb,GAEE,mBAAEyB,EAAkB,oBAAEC,IAAwBC,EAAAA,EAAAA,KAOpD,OALAlD,EAAAA,EAAAA,YAAU,KACRL,EAAaoD,GAAiBH,GAC9BL,GAAYvD,IAAa4D,GAAUG,EAAc,GAChD,CAACA,EAAeH,EAAQ5D,IAGzB1C,MAAAC,cAAA,OACEC,UAAWC,IAAW,WAAY0F,GAClC,cAAazH,GAEb4B,MAAAC,cAAC4G,EAAAA,EAAK,CACJ1I,QAASyH,EACThD,MAAO+C,GAAOlG,IACdsD,YAAa4C,GAAOlG,IACpBc,IAAK6F,EACLvD,gBAAiB,CACfiE,aAAa,EACbC,MAAOf,EACPxB,QAAS7B,EACTqE,MAAM,GAER9D,aAAcA,IAAMiD,GAAc,GAClC9H,QAASmH,GAAMyB,WAAWtB,MAC1BjD,SAAUA,EACVI,WAAYA,EACZH,UAAWA,EACXU,aAAcA,EACdL,4BAA6BA,EAC7BI,eAAiB8D,IACfjB,EAAmC,IAAxBiB,EAAaC,QAAgBD,EAAaH,MAAM,IAI9D5B,GAAwBe,GACvBlG,MAAAC,cAAA,UACEG,KAAK,SACL,aAAYuC,EAAYgE,EAAsBD,EAC9CxG,UAAWC,IACT,iGACAkF,EACAD,GAEFgC,QAASA,KACP/D,GAAcV,GACdoD,EAAyBpD,EAAU,EAErC0E,QAAS5B,EACT,cAAa,GAAGrH,KAAcuE,EAAY,QAAU,gBACpD,qBAAmB,SACnB2E,SAAUhC,GAEVtF,MAAAC,cAACiC,EAAAA,EAAI,CACHC,KAAMQ,EAAY,QAAU,mBAC5BN,eAAe,aACfD,KAAK,SACLlC,UAAU,0BAKdgF,IAAeuB,IACfzG,MAAAC,cAACsH,EAAAA,EAAe,MACZ5E,GACA3C,MAAAC,cAAC6B,EAAAA,EAAOuC,IAAG,CACTmD,QAAS,CAAEjD,QAAS,GACpBvC,QAAS,CAAEuC,QAAS,GACpBkD,KAAM,CAAElD,QAAS,GACjB6C,QAASA,IAAM1B,GAAoBrC,GAAa,GAChDnD,UAAU,gFAETgF,GACClF,MAAAC,cAACyH,EAAAA,EAAK,CACJvJ,QAAQ,yBACRG,MAAO4G,EACP3G,aAAa,2CACbF,QAASmH,GAAMyB,WAAWtB,MAC1BvH,WAAY,GAAGA,mBAIjBqI,GAAiBvB,GACjBlF,MAAAC,cAAA,UACEG,KAAK,SACL,aAAYsG,EACZxG,UAAU,uEACVkH,QAASA,IAAM/D,GAAa,GAC5B,cAAa,GAAGjF,iBAEhB4B,MAAAC,cAAA,OAAKC,UAAU,+DACbF,MAAAC,cAACiC,EAAAA,EAAI,CAACC,KAAK,mBAAmBC,KAAK,aAQ7C,C,sLC9IV,MAyIA,EAzIqBnE,IAAmC,IAAlC,MAAE2E,EAAK,KAAE+E,EAAI,MAAEC,GAAc3J,EACjD,MAAM4J,GAAaxB,EAAAA,EAAAA,QAA8B,OAC1CyB,GAAoBC,aAAcC,KACvCC,EAAAA,EAAAA,MACKC,GAAYnH,OAAQoH,KAAiBF,EAAAA,EAAAA,KACtCG,GAAWC,EAAAA,EAAAA,GAAc,MACzBC,GAAYC,EAAAA,EAAAA,MACXC,EAAyBC,IAA8BjJ,EAAAA,EAAAA,WAAS,GAEjEkJ,GAAcC,EAAAA,EAAAA,UAClB,IAAMX,EAAoC,GAAdG,GAC5B,CAACH,EAAqBG,KAGlB,gBAAES,IAAoBC,EAAAA,EAAAA,GAAU,CACpCtH,OAAQsG,EACRiB,OAAQ,CAAC,cAAe,aAGpBC,GAAuBC,EAAAA,EAAAA,GAAUJ,EAAiB,CACtDK,UAAW,IACXC,QAAS,GACTC,KAAM,IAGFC,GAAiBC,EAAAA,EAAAA,GACrBN,EACA,CAAC,EAAG,IACJ,CAAC,EAAGT,EAAY,EAA0B,GAAtBN,IAGhBsB,GAAkBD,EAAAA,EAAAA,GACtBN,EACA,CAAC,EAAG,IACJ,CAACL,EAAaJ,EAAYI,EAAc,IAapCa,EAAsBf,EACxB,CAAC,YAAa,YAAa,aALJJ,EANJ,CACrB,2BACA,2BACA,sBAKE,CAAC,aAAc,aAAc,aAM3BoB,GAAWH,EAAAA,EAAAA,GACfN,EACA,CAAC,GAAK,GAAK,IACXT,EAAY,CAAC,aAAc,aAAc,cAAgBiB,GAGrDE,GAAcJ,EAAAA,EAAAA,GAAaT,GAAkBc,GAC7CpB,GAAaE,EAAgC,EAC1CkB,GAAO,GAAM,EAAI,IAG1B,OACE1J,MAAAC,cAAA,WACEC,UAAWC,IACT,uFACAmI,EAAY,aAAe,0BAE7B/H,IAAKsH,EACL,cAAY,wBAEZ7H,MAAAC,cAAA,OACEC,UAAWC,IACT,sBACAmI,EAAY,aAAe,aAG7BtI,MAAAC,cAAC6B,EAAAA,EAAOuC,IAAG,CACTnE,UAAU,0HACVoE,MAAO,CACLqF,WAAYP,EACZQ,WAAY,OACZrF,QAASkF,GAEXlJ,IAAKuH,GAEL9H,MAAAC,cAAA,MAAI,cAAY,8BAA8B2C,GAC7C+E,GACC3H,MAAAC,cAAA,KAAGC,UAAU,KAAK,cAAY,6BAC3ByH,IAKP3H,MAAAC,cAAC6B,EAAAA,EAAOuC,IAAG,CACTnE,UAAU,4BACVK,IAAK2H,EACL5D,MAAO,CACLkF,WACAG,WAAYL,GAEdhC,SAAU,GAET,QAASM,GAASA,EAAMnI,IACvBO,MAAAC,cAAC4J,EAAAA,EAAW,CACV1E,sBAAoB,EACpBzC,UAAU,EACViD,MAAOiC,EACP3C,UAAQ,EACRM,gBAAiB,GACjBE,gBAAkBqE,GAChBrB,EAA2BqB,EAAEvI,OAAOwI,QAAQ,mBAE9CjH,WAAYsF,EAAW,aAAe,eACtCxC,aAAa,oCACbC,eAAgB1F,IACd,kDACa6J,IAAb5B,EAAyB,YAAc,eAEzChK,WAAW,sCAGb4B,MAAAC,cAACyH,EAAAA,EAAK,CACJpJ,MAAOsJ,EACPrJ,aAAc4B,IACZ,oEACa6J,IAAb5B,EAAyB,YAAc,eAEzChK,WAAW,iCAKX,C,+HC9Id,MAqFA,EArFeH,IAA6D,IAA5D,MAAE2E,EAAK,cAAEnB,EAAa,cAAEC,EAAa,MAAEuI,GAAgBhM,EACrE,MAAOuD,EAAM0I,IAAW1K,EAAAA,EAAAA,WAAS,GAC3B2K,GAAW9B,EAAAA,EAAAA,GAAc,MAE/B,OACErI,MAAAC,cAAA,WAASC,UAAU,kDAChB0C,GACC5C,MAAAC,cAAA,OAAKC,UAAU,sFACZ0C,GAGJqH,KAAWA,EAAMvJ,QAChBV,MAAAC,cAAA,OAAKC,UAAU,qDACbF,MAAAC,cAAA,OAAKC,UAAU,yDACbF,MAAAC,cAAA,OAAKC,UAAU,kGACZ+J,EACEG,MACC,EACAD,GAAY3I,IAASC,IAAkBC,EACnCuI,EAAMvJ,OACN,GAEL2J,KAAI,CAACC,EAAMC,IACVvK,MAAAC,cAAA,OAEE,2BAAyB,OACzB,eAAcuK,KAAKC,UAAUH,EAAKI,cAAgB,IAClDC,IAAKL,EAAKnI,KACVjC,UAAWC,IACT,wDACiB,IAAjB8J,EAAMvJ,OAAe,SAAW,eAChC6J,EAAQ,IAAMN,EAAMvJ,OAChB,8BACA,SAGNV,MAAAC,cAAC2K,EAAAA,EAAQ,CAAC1J,KAAMoJ,EAAKpJ,MACnBlB,MAAAC,cAAA,OAAKC,UAAU,6HACZoK,EAAKO,WACJ7K,MAAAC,cAAA,OAAKC,UAAU,6DACbF,MAAAC,cAACyH,EAAAA,EAAK,CACJpJ,MAAOgM,EAAKO,UACZtM,aAAa,wBACbI,MAAM,WAIZqB,MAAAC,cAAA,OAAKC,UAAU,0BACZoK,EAAKnI,MACJnC,MAAAC,cAAA,QAAMC,UAAU,+DACboK,EAAKnI,MAGTmI,EAAKQ,aAAe9K,MAAAC,cAAA,YAAOqK,EAAKQ,mBAM7C9K,MAAAC,cAAA,OAAKC,UAAU,sBAEjBF,MAAAC,cAAA,OACEC,UAAWC,IACT,sIACA,CACE,YACGqB,GAAQC,GAAiBC,GAAiBuI,EAAMvJ,OAAS,OAKnEuJ,EAAMvJ,OAAS,GAAKe,GAAiBC,IAAkByI,GACtDnK,MAAAC,cAAC8K,EAAAA,EAAc,CACbrJ,cAAeA,EACfD,cAAeA,EACfD,KAAMA,EACN4F,QAASA,IAAM8C,GAAS1I,MAKxB,C,uCCzFH7B,EAAc,SAAdA,GAAc,OAAdA,EAAc,WAAdA,EAAc,YAAdA,EAAc,WAAdA,EAAc,YAAdA,CAAc,EAAdA,GAAc,IAOzB,S,0DCCO,MAAMqL,EAAiC,CAC5CC,oCAAqC,oCACrCC,oBAAqB,wBACrBC,0BAA2B,+BAC3BC,sBAAuB,gBACvBC,mBAAoB,aACpBC,0BAA2B,qBAC3BC,+BAAgC,mBAChCC,oBAAqB,cACrBC,yBAA0B,oBAC1BC,+BAAgC,0BAChCC,yBAA0B,oBAC1BC,sBAAuB,iBACvBC,wBAAyB,kBACzBC,yBAA0B,mBAC1BC,cAAe,mBACfC,yBAA0B,oBAC1BC,+BAAgC,4BAChCC,kBAAmB,YACnBC,yCAA0C,gBAC1CxF,oBAAqB,cACrBD,mBAAoB,aACpB0F,kBAAmB,uBACnBC,gBAAiB,SACjBC,yBAA0B,oBAC1BC,yBAA0B,oBAC1BC,kBAAmB,aACnBC,2BAA4B,4BAC5BC,kBAAmB,6BACnBC,gBAAiB,UACjBC,iBAAkB,YAQpB,GAL2BC,EAAAA,EAAAA,IAA0BC,IAAG,CACtDC,WAAY/B,EACZgC,cAAgBD,GAA4BD,EAAI,CAAEC,kB,mCC3CpD,MAOA,EAPyBE,IACD,oBAAXtJ,SACTA,OAAOuJ,UAAYvJ,OAAOuJ,WAAa,GACvCvJ,OAAOuJ,UAAUC,KAAKF,GACxB,C,6DCAF,MAWA,EAXsBrG,KACpB,MAAOmG,EAAYC,IAAiBxN,EAAAA,EAAAA,UAAsBwL,EAAAA,GACpDoC,GAAsBC,EAAAA,EAAAA,IAAoBC,GAAUA,EAAMP,aAMhE,OAJArJ,EAAAA,EAAAA,YAAU,KACRsJ,EAAcI,EAAoB,GACjC,CAACA,IAEGL,CAAU,C,6DCTnB,MAAMQ,EAAuBA,KAC3B,MAAMC,EAAwB,IAAxBA,EAAsC,KAAtCA,EAAuD,KACvDxM,EAAQ2C,OAAO8J,WAErB,OAAIzM,EAAQwM,EACH7N,EAAAA,EAAeC,MAEpBoB,GAASwM,GAAsBxM,EAAQwM,EAClC7N,EAAAA,EAAeE,OAEpBmB,GAASwM,GAAuBxM,EAAQwM,EACnC7N,EAAAA,EAAeG,MAEjBH,EAAAA,EAAeI,MAAM,EAuB9B,EApBsBV,KACpB,MAAOqO,EAAQC,IAAanO,EAAAA,EAAAA,YAEtBoO,GAAgBC,EAAAA,EAAAA,cACpB,IAAMF,EAAUJ,MAChB,IAYF,OATA7J,EAAAA,EAAAA,YAAU,KACRC,OAAOmK,iBAAiB,SAAUF,GAClCD,EAAUJ,KAEH,KACL5J,OAAOoK,oBAAoB,SAAUH,EAAc,IAEpD,CAACA,IAEGF,CAAM,C,kDClCf,MAwBA,EAxBuBM,IAKrB,MAAOC,EAAeC,IAAoB1O,EAAAA,EAAAA,YAEpC2O,GAAUN,EAAAA,EAAAA,cAAY,KAC1B,MAAMO,EAAiBzK,OAAO8J,WAAaO,EAC3CE,EAAiBE,EAAe,GAC/B,CAACJ,IAWJ,OATAtK,EAAAA,EAAAA,YAAU,KACRC,OAAOmK,iBAAiB,SAAUK,GAClCA,IAEO,KACLxK,OAAOoK,oBAAoB,SAAUI,EAAQ,IAE9C,CAACA,IAEGF,CAAa,C,kDCrBtB,MAUA,EAVuB1F,KACrB,MAAOD,EAAW+F,IAAgB7O,EAAAA,EAAAA,WAAS,GAM3C,OAJAkE,EAAAA,EAAAA,YAAU,KACR2K,EAAa1K,OAAO2K,OAAS3K,OAAO4K,IAAI,GACvC,IAEIjG,CAAS,C,kDCPlB,MA4CA,EA5C0BL,KACxB,MAAMuG,GAAcnI,EAAAA,EAAAA,WACboI,EAAkBC,IAAuBlP,EAAAA,EAAAA,UAAS,CACvDwB,MAAO,EACPD,OAAQ,EACR4N,YAAa,EACb5G,aAAc,EACd6G,YAAa,EACbC,aAAc,IAGVC,GAAejB,EAAAA,EAAAA,cAAakB,IAChC,IAAKC,MAAMC,QAAQF,GAAU,OAE7B,MAAMG,EAAQH,EAAQ,GAEtBL,EAAoB,CAClB1N,MAAOkO,GAAOC,YAAYnO,OAAS,EACnCD,OAAQmO,GAAOC,YAAYpO,QAAU,EACrC4N,YAAaO,GAAO3N,OAAOoN,aAAe,EAC1C5G,aAAcmH,GAAO3N,OAAOwG,cAAgB,EAC5C6G,YAAaM,GAAO3N,OAAOqN,aAAe,EAC1CC,aAAcK,GAAO3N,OAAOsN,cAAgB,GAC5C,GACD,IAiBH,MAAO,EAfKhB,EAAAA,EAAAA,cACTuB,IACKZ,EAAYa,UAAYD,IAC1BZ,EAAYa,QAAQC,aACpBd,EAAYa,aAAUrF,IAGnBwE,EAAYa,SAAWD,IAC1BZ,EAAYa,QAAU,IAAIE,eAAeT,GACzCN,EAAYa,QAAQG,QAAQJ,GAC9B,GAEF,CAACN,IAGUL,EAAiB,C","sources":["webpack://nikon-client/./components/atoms/Image/Image.tsx","webpack://nikon-client/./components/atoms/LinkCard/LinkCard.tsx","webpack://nikon-client/./components/atoms/LoadMoreButton/LoadMoreButton.tsx","webpack://nikon-client/./components/atoms/Video/Video.tsx","webpack://nikon-client/./components/molecules/InViewVideo/InViewVideo.tsx","webpack://nikon-client/./components/organisms/KeyholeVideo/KeyholeVideo.tsx","webpack://nikon-client/./components/organisms/KitBag/KitBag.tsx","webpack://nikon-client/./models/enums/BreakpointEnum.ts","webpack://nikon-client/./state-management/AriaLabelsStore.ts","webpack://nikon-client/./utility/helpers/gtm.ts","webpack://nikon-client/./utility/hooks/useAriaLabels.ts","webpack://nikon-client/./utility/hooks/useBreakpoint.ts","webpack://nikon-client/./utility/hooks/useMediaQuery.ts","webpack://nikon-client/./utility/hooks/usePreviewMode.ts","webpack://nikon-client/./utility/hooks/useResizeObserver.ts"],"sourcesContent":["import BreakpointEnum from '@models/enums/BreakpointEnum';\nimport { IImage } from '@models/IImage';\nimport useBreakpoint from '@utils/hooks/useBreakpoint';\nimport classNames from 'classnames';\nimport { PropsWithChildren, RefObject, useState } from 'react';\n\ninterface Props {\n readonly classes?: string;\n readonly dataTestId?: string;\n readonly epiEdit?: string;\n readonly image?: IImage;\n readonly imageClasses?: string;\n readonly imageRef?:\n | RefObject\n | ((node: HTMLElement | null) => void);\n readonly lazyLoad?: boolean;\n readonly progressiveLoad?: boolean;\n readonly sizes?: string;\n}\n\nconst Image = ({\n children,\n classes,\n dataTestId,\n epiEdit,\n image,\n imageClasses,\n imageRef,\n lazyLoad = true,\n progressiveLoad = true,\n sizes = '',\n}: PropsWithChildren) => {\n const mobileSource = image?.mobile;\n const tabletSource = image?.tablet;\n const desktopSource = image?.desktop;\n const largeDesktopSource = image?.largeDesktop;\n const breakpoint = useBreakpoint() as BreakpointEnum;\n const [isLoaded, setIsLoaded] = useState(false);\n\n if (!desktopSource?.url) return null;\n\n const currentSrc = {\n [BreakpointEnum.Small]: mobileSource,\n [BreakpointEnum.Medium]: tabletSource,\n [BreakpointEnum.Large]: desktopSource,\n [BreakpointEnum.XLarge]: largeDesktopSource,\n };\n\n return (\n \n \n setIsLoaded(true)}\n sizes={sizes}\n src={\n isLoaded && progressiveLoad\n ? currentSrc[breakpoint]?.url\n : mobileSource?.url\n }\n height={currentSrc[breakpoint]?.height}\n width={currentSrc[breakpoint]?.width}\n srcSet={`${mobileSource?.originalUrl} 376w, ${tabletSource?.originalUrl} 768w, ${desktopSource?.originalUrl} 1024w, ${largeDesktopSource?.originalUrl} 1440w`}\n {...(dataTestId && { 'data-testid': dataTestId })}\n />\n {isLoaded && children}\n \n );\n};\n\nexport default Image;\n","import { ILink } from '@models/ILink';\nimport classNames from 'classnames';\nimport {\n AnchorHTMLAttributes,\n DetailedHTMLProps,\n PropsWithChildren,\n} from 'react';\n\ninterface Props {\n readonly link: ILink;\n readonly type?: 'DEFAULT' | 'OUTLINE';\n readonly useSmallCard?: boolean;\n readonly dataTestId?: string;\n}\n\ntype LinkCardProps = Props &\n DetailedHTMLProps, HTMLAnchorElement>;\n\nconst LinkCard = ({\n type = 'DEFAULT',\n link,\n children,\n className,\n useSmallCard,\n dataTestId,\n ...linkProps\n}: PropsWithChildren) => {\n const cardClasses = classNames(\n {\n [`min-h-[110px] ${useSmallCard ? 'md:h-32' : 'md:h-36'} card h-full`]:\n type === 'DEFAULT',\n },\n {\n 'rounded-[10px] border border-grey-400 transition-all hover:border-yellow':\n type === 'OUTLINE',\n },\n className,\n 'mx-px flex items-center'\n );\n\n return (\n \n {children}\n \n );\n};\n\nexport default LinkCard;\n","import Icon from '@atoms/Icon/Icon';\nimport classNames from 'classnames';\nimport { motion } from 'framer-motion';\nimport { ButtonHTMLAttributes, DetailedHTMLProps } from 'react';\n\ninterface Props\n extends DetailedHTMLProps<\n ButtonHTMLAttributes,\n HTMLButtonElement\n > {\n readonly open?: boolean;\n readonly loadMoreLabel: string;\n readonly loadLessLabel?: string;\n readonly _type?: 'BASIC' | 'YELLOW-HIGHLIGHT';\n readonly isLightMode?: boolean;\n readonly dataTestId?: string;\n}\n\nconst LoadMoreButton = ({\n open = false,\n loadMoreLabel,\n loadLessLabel,\n _type = 'BASIC',\n isLightMode,\n dataTestId,\n ...props\n}: Props) => (\n \n {(!open || loadLessLabel) && (\n

{open ? loadLessLabel : loadMoreLabel}

\n )}\n\n \n \n \n \n);\n\nexport default LoadMoreButton;\n","import loadable from '@loadable/component';\nimport { AspectRatioType } from '@models/IAspectRatio';\nimport { IVideoAttributes } from '@models/IVideoAttributes';\nimport updateDataLayer from '@utils/helpers/gtm';\nimport classNames from 'classnames';\nimport { motion, MotionValue } from 'framer-motion';\nimport {\n ChangeEvent,\n ForwardedRef,\n forwardRef,\n useEffect,\n useState,\n} from 'react';\nimport { Config } from 'react-player';\n\nconst ReactPlayer = loadable(\n () => import(/* webpackChunkName: \"react-player\" */ 'react-player')\n);\n\ninterface Props {\n readonly classes?: string;\n readonly config?: Config;\n readonly controls?: boolean;\n readonly epiEdit?: string;\n readonly isPlaying?: boolean;\n readonly title?: string;\n readonly url?: string;\n readonly videoAttributes?: IVideoAttributes;\n readonly videoRatio?: AspectRatioType;\n readonly videoSource?: string;\n readonly videoWrapperOpacityProgress?: MotionValue;\n readonly onEndedVideo?: () => void;\n readonly onVideoReady?: () => void;\n readonly onVideoStart?: () => void;\n readonly onVolumeChange?: (videoElement: HTMLVideoElement) => void;\n readonly setIsPlaying?: (playing: boolean) => void;\n}\n\nconst Video = forwardRef(\n (\n {\n classes,\n config,\n controls = true,\n epiEdit,\n isPlaying,\n title,\n videoAttributes,\n videoRatio = 'aspect-video',\n videoSource,\n videoWrapperOpacityProgress,\n onEndedVideo,\n onVideoReady,\n onVideoStart,\n onVolumeChange,\n setIsPlaying,\n }: Props,\n ref\n ) => {\n const [prevProgress, setPrevProgress] = useState(0);\n const [isBrowser, setIsBrowser] = useState(false);\n\n useEffect(() => {\n setIsBrowser(typeof window !== 'undefined');\n }, []);\n\n useEffect(() => {\n setPrevProgress(0);\n }, [title]);\n\n const handleProgressUpdate = (progress: string) => {\n updateDataLayer({\n event: 'videoInteraction',\n video_interaction: 'video_progress',\n video_progress: progress,\n video_title: title,\n });\n };\n\n const handleVideoAction = (action: string) => {\n updateDataLayer({\n event: 'videoInteraction',\n video_interaction:\n action === 'START' ? 'video_start' : 'video_complete',\n video_progress: action === 'START' ? 'video_start' : 'video_complete',\n video_title: title,\n });\n };\n\n const updateVideoProgressData = (progress: number) => {\n if (prevProgress < 0.25 && progress > 0.25) {\n handleProgressUpdate('25%');\n }\n if (prevProgress < 0.5 && progress > 0.5) {\n handleProgressUpdate('50%');\n }\n if (prevProgress < 0.75 && progress > 0.75) {\n handleProgressUpdate('75%');\n }\n if (prevProgress > 0.9 && progress < 0.1) {\n handleVideoAction('COMPLETE');\n }\n setPrevProgress(progress);\n };\n\n if (!videoSource) return null;\n\n return (\n }\n className={classNames(classes, videoRatio, 'w-full')}\n data-epi-property-name={epiEdit}\n data-testid={isPlaying ? 'video-playing' : 'video-paused'}\n style={{\n opacity: videoWrapperOpacityProgress ?? 1,\n }}\n >\n {isBrowser && (\n updateVideoProgressData(played)}\n onStart={() => {\n onVideoStart?.();\n handleVideoAction('START');\n }}\n onEnded={() => {\n onEndedVideo?.();\n handleVideoAction('COMPLETE');\n }}\n onPause={() => setIsPlaying?.(false)}\n onPlay={() => setIsPlaying?.(true)}\n onReady={onVideoReady}\n config={config}\n onVolumeChange={(event: ChangeEvent) => {\n onVolumeChange?.(event.target);\n }}\n {...videoAttributes}\n />\n )}\n \n );\n }\n);\n\nexport default Video;\n","import Icon from '@atoms/Icon/Icon';\nimport Image from '@atoms/Image/Image';\nimport Video from '@atoms/Video/Video';\nimport { AspectRatioType } from '@models/IAspectRatio';\nimport { IImage } from '@models/IImage';\nimport { IMeta } from '@models/IMeta';\nimport { IVideo } from '@models/IVideo';\nimport useAriaLabels from '@utils/hooks/useAriaLabels';\nimport classNames from 'classnames';\nimport { AnimatePresence, motion, MotionValue, useInView } from 'framer-motion';\nimport { RefObject, useEffect, useRef, useState } from 'react';\n\ninterface Props {\n readonly autoPlay?: boolean;\n readonly controls?: boolean;\n readonly coverImage?: IImage;\n readonly dataTestId?: string;\n readonly hasInVideoPlayButton?: boolean;\n readonly inVideoPlayButtonClassName?: string;\n readonly inVideoPlayButtonPositionClassName?: string;\n readonly inVideoPlayButtonTabIndex?: number;\n readonly inViewThreshold?: number;\n readonly meta?: IMeta;\n readonly playOnCoverClick?: boolean;\n readonly video: IVideo;\n readonly videoClasses?: string;\n readonly videoRatio?: AspectRatioType;\n readonly videoWrapperOpacityProgress?: MotionValue;\n readonly wrapperClasses?: string;\n readonly onFocusCallback?: (e: React.FocusEvent) => void;\n}\n\nconst InViewVideo = ({\n autoPlay = false,\n controls,\n coverImage,\n dataTestId = 'In-View-Video',\n hasInVideoPlayButton,\n inVideoPlayButtonClassName,\n inVideoPlayButtonPositionClassName = 'bottom-5 left-5',\n inVideoPlayButtonTabIndex = 0,\n inViewThreshold = 0.5,\n meta,\n onFocusCallback,\n playOnCoverClick = true,\n video,\n videoClasses,\n videoRatio,\n videoWrapperOpacityProgress,\n wrapperClasses,\n}: Props) => {\n const [isPlaying, setIsPlaying] = useState(false);\n const [isVideoManuallyPaused, setIsVideoManuallyPaused] = useState(false);\n const [isMuted, setIsMuted] = useState(false);\n const [videoReady, setVideoReady] = useState(false);\n const videoRef = useRef(null);\n const inView = useInView(videoRef, { amount: inViewThreshold });\n const isAutoPlaying = !hasInVideoPlayButton\n ? autoPlay\n : autoPlay && !isVideoManuallyPaused;\n const { playVideoAriaLabel, pauseVideoAriaLabel } = useAriaLabels();\n\n useEffect(() => {\n setIsPlaying(isAutoPlaying && inView);\n setIsMuted(!controls || !inView || isAutoPlaying);\n }, [isAutoPlaying, inView, controls]);\n\n return (\n \n }\n videoAttributes={{\n playsinline: true,\n muted: isMuted,\n playing: isPlaying,\n loop: true,\n }}\n onVideoReady={() => setVideoReady(true)}\n epiEdit={meta?.editHints?.video as string | undefined}\n controls={controls}\n videoRatio={videoRatio}\n isPlaying={isPlaying}\n setIsPlaying={setIsPlaying}\n videoWrapperOpacityProgress={videoWrapperOpacityProgress}\n onVolumeChange={(videoElement) => {\n setIsMuted(videoElement.volume === 0 || videoElement.muted);\n }}\n />\n\n {hasInVideoPlayButton && videoReady && (\n {\n setIsPlaying(!isPlaying);\n setIsVideoManuallyPaused(isPlaying);\n }}\n onFocus={onFocusCallback}\n data-testid={`${dataTestId}-${isPlaying ? 'Pause' : 'Play'}-Button`}\n data-video-control=\"toggle\"\n tabIndex={inVideoPlayButtonTabIndex}\n >\n \n \n )}\n\n {(coverImage || !isAutoPlaying) && (\n \n {!isPlaying && (\n playOnCoverClick && setIsPlaying(true)}\n className=\"group absolute inset-0 flex items-center justify-center hover:cursor-pointer\"\n >\n {coverImage && (\n \n )}\n\n {!isAutoPlaying && coverImage && (\n setIsPlaying(true)}\n data-testid={`${dataTestId}-Play-Button`}\n >\n
\n \n
\n \n )}\n \n )}\n
\n )}\n \n );\n};\n\nexport default InViewVideo;\n","import Image from '@atoms/Image/Image';\nimport { IImage } from '@models/IImage';\nimport { IVideo } from '@models/IVideo';\nimport InViewVideo from '@molecules/InViewVideo/InViewVideo';\nimport useMediaQuery from '@utils/hooks/useMediaQuery';\nimport usePreviewMode from '@utils/hooks/usePreviewMode';\nimport useResizeObserver from '@utils/hooks/useResizeObserver';\nimport classNames from 'classnames';\nimport { motion, useScroll, useSpring, useTransform } from 'framer-motion';\nimport { useMemo, useRef, useState } from 'react';\n\ninterface Props {\n readonly title: string;\n readonly text?: string;\n readonly media: IVideo | IImage;\n}\n\nconst KeyholeVideo = ({ title, text, media }: Props) => {\n const sectionRef = useRef(null);\n const [textContainerRef, { clientHeight: textContainerHeight }] =\n useResizeObserver();\n const [mediaRef, { height: mediaHeight }] = useResizeObserver();\n const isMobile = useMediaQuery(1024);\n const isPreview = usePreviewMode();\n const [mediaButtonFocusedByTab, setMediaButtonFocusedByTab] = useState(false);\n\n const mediaOffset = useMemo(\n () => textContainerHeight - mediaHeight * 0.2,\n [textContainerHeight, mediaHeight]\n );\n\n const { scrollYProgress } = useScroll({\n target: sectionRef,\n offset: ['start start', 'end end'],\n });\n\n const smoothScrollProgress = useSpring(scrollYProgress, {\n stiffness: 500,\n damping: 50,\n mass: 1,\n });\n\n const textTranslateY = useTransform(\n smoothScrollProgress,\n [0, 0.3],\n [0, isPreview ? 0 : textContainerHeight * 0.4]\n );\n\n const videoTranslateY = useTransform(\n smoothScrollProgress,\n [0, 0.3],\n [mediaOffset, isPreview ? mediaOffset : 0]\n );\n\n const mobileClipPath = [\n 'inset(22.5% 5% 22.5% 5%)',\n 'inset(10% 2.5% 10% 2.5%)',\n 'inset(0% 0% 0% 0%)',\n ];\n\n const responsiveClipPath = isMobile\n ? mobileClipPath\n : ['inset(20%)', 'inset(10%)', 'inset(0%)'];\n\n const accessibileClipPath = mediaButtonFocusedByTab\n ? ['inset(0%)', 'inset(0%)', 'inset(0%)']\n : responsiveClipPath;\n\n const clipPath = useTransform(\n smoothScrollProgress,\n [0.3, 0.4, 0.7],\n isPreview ? ['inset(20%)', 'inset(20%)', 'inset(20%)'] : accessibileClipPath\n );\n\n const textOpacity = useTransform(scrollYProgress, (pos) => {\n if (isPreview || mediaButtonFocusedByTab) return 1;\n return pos >= 0.4 ? 0 : 1;\n });\n\n return (\n \n \n \n

{title}

\n {text && (\n

\n {text}\n

\n )}\n \n\n \n {'url' in media && media.url ? (\n \n setMediaButtonFocusedByTab(e.target.matches(':focus-visible'))\n }\n videoRatio={isMobile ? 'aspect-2/3' : 'aspect-video'}\n videoClasses=\"[&>div>video]:object-cover h-full\"\n wrapperClasses={classNames(\n 'h-full transition duration-500 ease-in-out',\n isMobile === undefined ? 'opacity-0' : 'opacity-100'\n )}\n dataTestId=\"CT-154-Keyhole-Video-Inline-Video\"\n />\n ) : (\n \n )}\n \n \n \n );\n};\n\nexport default KeyholeVideo;\n","import Image from '@atoms/Image/Image';\nimport LinkCard from '@atoms/LinkCard/LinkCard';\nimport LoadMoreButton from '@atoms/LoadMoreButton/LoadMoreButton';\nimport { IKitBag } from '@models/IKitBag';\nimport useMediaQuery from '@utils/hooks/useMediaQuery';\nimport classNames from 'classnames';\nimport { useState } from 'react';\n\nconst KitBag = ({ title, loadMoreLabel, loadLessLabel, items }: IKitBag) => {\n const [open, setOpen] = useState(false);\n const isDevice = useMediaQuery(1440);\n\n return (\n
\n {title && (\n
\n {title}\n
\n )}\n {items && !!items.length && (\n
\n
\n
\n {items\n .slice(\n 0,\n isDevice || open || !loadMoreLabel || !loadLessLabel\n ? items.length\n : 3\n )\n .map((item, index) => (\n \n \n
\n {item.thumbnail && (\n
\n \n
\n )}\n
\n {item.name && (\n \n {item.name}\n \n )}\n {item.description && {item.description}}\n
\n
\n
\n
\n ))}\n
\n
\n
\n {items.length > 3 && loadMoreLabel && loadLessLabel && !isDevice && (\n setOpen(!open)}\n />\n )}\n
\n )}\n
\n );\n};\n\nexport default KitBag;\n","const enum BreakpointEnum {\n Small = 'sm',\n Medium = 'md',\n Large = 'lg',\n XLarge = 'xl',\n}\n\nexport default BreakpointEnum;\n","import { IAriaLabels } from '@models/IAriaLabels';\nimport create from 'zustand';\n\ninterface IAriaLabelsState {\n ariaLabels: IAriaLabels;\n setAriaLabels: (ariaLabels: IAriaLabels) => void;\n}\n\nexport const initialAriaLabels: IAriaLabels = {\n backToFirstLevelNavigationAriaLabel: 'Back to first level of navigation',\n breadcrumbAriaLabel: 'Breadcrumb navigation',\n breadcrumbFooterAriaLabel: 'Breadcrumb footer navigation',\n clearFiltersAriaLabel: 'Clear filters',\n closeMenuAriaLabel: 'Close menu',\n closeAddressListAriaLabel: 'Close address list',\n closeMobileNavigationAriaLabel: 'Close navigation',\n closeModalAriaLabel: 'Close Modal',\n closeSignUpFormAriaLabel: 'Close signup form',\n closeSiteNotificationAriaLabel: 'Close site notification',\n copyToClipboardAriaLabel: 'Copy to clipboard',\n editOrDeleteAriaLabel: 'Edit or delete',\n mainNavigationAriaLabel: 'Main navigation',\n moreInformationAriaLabel: 'More information',\n nextAriaLabel: 'Go to next slide',\n openAddressListAriaLabel: 'Open address list',\n openImageInFullScreenAriaLabel: 'Open image in full screen',\n openMenuAriaLabel: 'Open menu',\n overlayToCloseDesktopNavigationAriaLabel: 'Close overlay',\n pauseVideoAriaLabel: 'Pause video',\n playVideoAriaLabel: 'Play video',\n previousAriaLabel: 'Go to previous slide',\n searchAriaLabel: 'Search',\n shareToFacebookAriaLabel: 'Share to Facebook',\n shareToWhatsappAriaLabel: 'Share to Whatsapp',\n shareToXAriaLabel: 'Share to X',\n siteNotificationsAriaLabel: 'Site notifications banner',\n uspStripAriaLabel: 'Unique Selling Point Strip',\n zoomInAriaLabel: 'Zoom in',\n zoomOutAriaLabel: 'Zoom out',\n};\n\nconst useAriaLabelsStore = create((set) => ({\n ariaLabels: initialAriaLabels,\n setAriaLabels: (ariaLabels: IAriaLabels) => set({ ariaLabels }),\n}));\n\nexport default useAriaLabelsStore;\n","const updateDataLayer = (eventPayload: Record) => {\n if (typeof window !== 'undefined') {\n window.dataLayer = window.dataLayer || [];\n window.dataLayer.push(eventPayload);\n }\n};\n\nexport default updateDataLayer;\n","import { IAriaLabels } from '@models/IAriaLabels';\nimport useAriaLabelsStore, { initialAriaLabels } from '@state/AriaLabelsStore';\nimport { useEffect, useState } from 'react';\n\nconst useAriaLabels = () => {\n const [ariaLabels, setAriaLabels] = useState(initialAriaLabels);\n const ariaLabelsFromStore = useAriaLabelsStore((state) => state.ariaLabels);\n\n useEffect(() => {\n setAriaLabels(ariaLabelsFromStore);\n }, [ariaLabelsFromStore]);\n\n return ariaLabels;\n};\n\nexport default useAriaLabels;\n","import BreakpointEnum from '@models/enums/BreakpointEnum';\nimport { useCallback, useEffect, useState } from 'react';\n\nconst getCurrentBreakpoint = () => {\n const breakpoints = { tablet: 768, desktop: 1024, lgDesktop: 1440 };\n const width = window.innerWidth;\n\n if (width < breakpoints.tablet) {\n return BreakpointEnum.Small;\n }\n if (width >= breakpoints.tablet && width < breakpoints.desktop) {\n return BreakpointEnum.Medium;\n }\n if (width >= breakpoints.desktop && width < breakpoints.lgDesktop) {\n return BreakpointEnum.Large;\n }\n return BreakpointEnum.XLarge;\n};\n\nconst useBreakpoint = () => {\n const [screen, setScreen] = useState();\n\n const resizeHandler = useCallback(\n () => setScreen(getCurrentBreakpoint()),\n []\n );\n\n useEffect(() => {\n window.addEventListener('resize', resizeHandler);\n setScreen(getCurrentBreakpoint());\n\n return () => {\n window.removeEventListener('resize', resizeHandler);\n };\n }, [resizeHandler]);\n\n return screen;\n};\n\nexport default useBreakpoint;\n","import { useCallback, useEffect, useState } from 'react';\n\nconst useMediaQuery = (minWidth: number) => {\n // Set the default value to undefined in order to properly distinguish the falsey values\n // where undefined is the value before computing whether the screen size is smaller than the minWidth\n // i.e. a state where we don't really know whether we're below the threshold or not\n // and false is the value where the computation returns false\n const [isSmallerThan, setIsSmallerThan] = useState();\n\n const handler = useCallback(() => {\n const isDesiredWidth = window.innerWidth < minWidth;\n setIsSmallerThan(isDesiredWidth);\n }, [minWidth]);\n\n useEffect(() => {\n window.addEventListener('resize', handler);\n handler();\n\n return () => {\n window.removeEventListener('resize', handler);\n };\n }, [handler]);\n\n return isSmallerThan;\n};\n\nexport default useMediaQuery;\n","import { useEffect, useState } from 'react';\n\nconst usePreviewMode = () => {\n const [isPreview, setIsPreview] = useState(false);\n\n useEffect(() => {\n setIsPreview(window.self !== window.top);\n }, []);\n\n return isPreview;\n};\n\nexport default usePreviewMode;\n","import { useCallback, useRef, useState } from 'react';\n\nconst useResizeObserver = () => {\n const observerRef = useRef();\n const [resizeParameters, setResizeParameters] = useState({\n width: 0,\n height: 0,\n clientWidth: 0,\n clientHeight: 0,\n scrollWidth: 0,\n scrollHeight: 0,\n });\n\n const handleResize = useCallback((entries: ResizeObserverEntry[]) => {\n if (!Array.isArray(entries)) return;\n\n const entry = entries[0];\n\n setResizeParameters({\n width: entry?.contentRect.width ?? 0,\n height: entry?.contentRect.height ?? 0,\n clientWidth: entry?.target.clientWidth ?? 0,\n clientHeight: entry?.target.clientHeight ?? 0,\n scrollWidth: entry?.target.scrollWidth ?? 0,\n scrollHeight: entry?.target.scrollHeight ?? 0,\n });\n }, []);\n\n const ref = useCallback(\n (node: HTMLElement | null) => {\n if (observerRef.current && !node) {\n observerRef.current.disconnect();\n observerRef.current = undefined;\n }\n\n if (!observerRef.current && node) {\n observerRef.current = new ResizeObserver(handleResize);\n observerRef.current.observe(node);\n }\n },\n [handleResize]\n );\n\n return [ref, resizeParameters] as const;\n};\n\nexport default useResizeObserver;\n"],"names":["_ref","children","classes","dataTestId","epiEdit","image","imageClasses","imageRef","lazyLoad","progressiveLoad","sizes","mobileSource","mobile","tabletSource","tablet","desktopSource","desktop","largeDesktopSource","largeDesktop","breakpoint","useBreakpoint","isLoaded","setIsLoaded","useState","url","currentSrc","BreakpointEnum","Small","Medium","Large","XLarge","React","createElement","className","classNames","type","srcSet","_extends","ref","alt","altText","length","draggable","loading","onLoad","src","height","width","originalUrl","link","useSmallCard","linkProps","cardClasses","href","target","open","loadMoreLabel","loadLessLabel","_type","isLightMode","props","motion","span","animate","rotate","Icon","name","size","colorClassName","ReactPlayer","loadable","forwardRef","config","controls","isPlaying","title","videoAttributes","videoRatio","videoSource","videoWrapperOpacityProgress","onEndedVideo","onVideoReady","onVideoStart","onVolumeChange","setIsPlaying","prevProgress","setPrevProgress","isBrowser","setIsBrowser","useEffect","window","handleProgressUpdate","progress","updateDataLayer","event","video_interaction","video_progress","video_title","handleVideoAction","action","div","style","opacity","playing","onProgress","_ref2","played","onStart","onEnded","onPause","onPlay","onReady","autoPlay","coverImage","hasInVideoPlayButton","inVideoPlayButtonClassName","inVideoPlayButtonPositionClassName","inVideoPlayButtonTabIndex","inViewThreshold","meta","onFocusCallback","playOnCoverClick","video","videoClasses","wrapperClasses","isVideoManuallyPaused","setIsVideoManuallyPaused","isMuted","setIsMuted","videoReady","setVideoReady","videoRef","useRef","inView","useInView","amount","isAutoPlaying","playVideoAriaLabel","pauseVideoAriaLabel","useAriaLabels","Video","playsinline","muted","loop","editHints","videoElement","volume","onClick","onFocus","tabIndex","AnimatePresence","initial","exit","Image","text","media","sectionRef","textContainerRef","clientHeight","textContainerHeight","useResizeObserver","mediaRef","mediaHeight","isMobile","useMediaQuery","isPreview","usePreviewMode","mediaButtonFocusedByTab","setMediaButtonFocusedByTab","mediaOffset","useMemo","scrollYProgress","useScroll","offset","smoothScrollProgress","useSpring","stiffness","damping","mass","textTranslateY","useTransform","videoTranslateY","accessibileClipPath","clipPath","textOpacity","pos","translateY","translateX","InViewVideo","e","matches","undefined","items","setOpen","isDevice","slice","map","item","index","JSON","stringify","trackingData","key","LinkCard","thumbnail","description","LoadMoreButton","initialAriaLabels","backToFirstLevelNavigationAriaLabel","breadcrumbAriaLabel","breadcrumbFooterAriaLabel","clearFiltersAriaLabel","closeMenuAriaLabel","closeAddressListAriaLabel","closeMobileNavigationAriaLabel","closeModalAriaLabel","closeSignUpFormAriaLabel","closeSiteNotificationAriaLabel","copyToClipboardAriaLabel","editOrDeleteAriaLabel","mainNavigationAriaLabel","moreInformationAriaLabel","nextAriaLabel","openAddressListAriaLabel","openImageInFullScreenAriaLabel","openMenuAriaLabel","overlayToCloseDesktopNavigationAriaLabel","previousAriaLabel","searchAriaLabel","shareToFacebookAriaLabel","shareToWhatsappAriaLabel","shareToXAriaLabel","siteNotificationsAriaLabel","uspStripAriaLabel","zoomInAriaLabel","zoomOutAriaLabel","create","set","ariaLabels","setAriaLabels","eventPayload","dataLayer","push","ariaLabelsFromStore","useAriaLabelsStore","state","getCurrentBreakpoint","breakpoints","innerWidth","screen","setScreen","resizeHandler","useCallback","addEventListener","removeEventListener","minWidth","isSmallerThan","setIsSmallerThan","handler","isDesiredWidth","setIsPreview","self","top","observerRef","resizeParameters","setResizeParameters","clientWidth","scrollWidth","scrollHeight","handleResize","entries","Array","isArray","entry","contentRect","node","current","disconnect","ResizeObserver","observe"],"sourceRoot":""}