{"version":3,"file":"ExpandingVideo-Chunk-7379dacfc23e4abbd976.js","mappings":"+YAoBA,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,4UC/Dd,MAAMgD,GAAcC,EAAAA,EAAAA,KAClB,IAAM,uCAoIR,GA9GcC,EAAAA,EAAAA,aACZ,CAAAnD,EAkBEsC,KACG,IAlBH,QACEpC,EAAO,OACPkD,EAAM,SACNC,GAAW,EAAI,QACfjD,EAAO,UACPkD,EAAS,MACTC,EAAK,gBACLC,EAAe,WACfC,EAAa,eAAc,YAC3BC,EAAW,4BACXC,EAA2B,aAC3BC,EAAY,aACZC,EAAY,aACZC,EAAY,eACZC,EAAc,aACdC,GACMhE,EAGR,MAAOiE,EAAcC,IAAmB3C,EAAAA,EAAAA,UAAS,IAC1C4C,EAAWC,IAAgB7C,EAAAA,EAAAA,WAAS,IAE3C8C,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,EAGH3B,MAAAC,cAACgD,EAAAA,EAAOC,IAAG,CACT3C,IAAKA,EACLL,UAAWC,IAAWhC,EAASuD,EAAY,UAC3C,yBAAwBrD,EACxB,cAAakD,EAAY,gBAAkB,eAC3C4B,MAAO,CACLC,QAASxB,GAA+B,IAGzCQ,GACCpC,MAAAC,cAACiB,EAAWZ,EAAA,CACVb,IAAKkC,EACLX,MAAM,OACND,OAAO,OACPO,SAAUA,EACV+B,SAAO,EACPC,WAAYC,IAAA,IAAC,OAAEC,GAAQD,EAAA,OAnCEd,EAmC2Be,EAlCtDtB,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,EAC3DgB,QAASA,KACP1B,MACAgB,EAAkB,QAAQ,EAE5BW,QAASA,KACP7B,MACAkB,EAAkB,WAAW,EAE/BY,QAASA,IAAM1B,KAAe,GAC9B2B,OAAQA,IAAM3B,KAAe,GAC7B4B,QAAS/B,EACTT,OAAQA,EACRW,eAAiBW,IACfX,IAAiBW,EAAMmB,OAAO,GAE5BrC,KAnCa,IAsCV,G,+JC/GnB,MAmIA,EAnIoBxD,IAkBP,IAlBQ,SACnB8F,GAAW,EAAK,SAChBzC,EAAQ,WACR0C,EAAU,WACV5F,EAAa,gBAAe,qBAC5B6F,EAAoB,2BACpBC,EAA0B,mCAC1BC,EAAqC,kBAAiB,0BACtDC,EAA4B,EAAC,gBAC7BC,EAAkB,GAAG,KACrBC,EAAI,gBACJC,EAAe,iBACfC,GAAmB,EAAI,MACvBC,EAAK,aACLC,EAAY,WACZhD,EAAU,4BACVE,EAA2B,eAC3B+C,GACM1G,EACN,MAAOsD,EAAWU,IAAgBzC,EAAAA,EAAAA,WAAS,IACpCoF,EAAuBC,IAA4BrF,EAAAA,EAAAA,WAAS,IAC5DsF,EAASC,IAAcvF,EAAAA,EAAAA,WAAS,IAChCwF,EAAYC,IAAiBzF,EAAAA,EAAAA,WAAS,GACvC0F,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,OALApD,EAAAA,EAAAA,YAAU,KACRL,EAAasD,GAAiBH,GAC9BL,GAAYzD,IAAa8D,GAAUG,EAAc,GAChD,CAACA,EAAeH,EAAQ9D,IAGzBtB,MAAAC,cAAA,OACEC,UAAWC,IAAW,WAAYwE,GAClC,cAAavG,GAEb4B,MAAAC,cAAC0F,EAAAA,EAAK,CACJxH,QAASuG,EACTlD,MAAOiD,GAAOhF,IACdkC,YAAa8C,GAAOhF,IACpBc,IAAK2E,EACLzD,gBAAiB,CACfmE,aAAa,EACbC,MAAOf,EACPzB,QAAS9B,EACTuE,MAAM,GAERhE,aAAcA,IAAMmD,GAAc,GAClC5G,QAASiG,GAAMyB,WAAWtB,MAC1BnD,SAAUA,EACVI,WAAYA,EACZH,UAAWA,EACXU,aAAcA,EACdL,4BAA6BA,EAC7BI,eAAiBgE,IACfjB,EAAmC,IAAxBiB,EAAaC,QAAgBD,EAAaH,MAAM,IAI9D5B,GAAwBe,GACvBhF,MAAAC,cAAA,UACEG,KAAK,SACL,aAAYmB,EAAYkE,EAAsBD,EAC9CtF,UAAWC,IACT,iGACAgE,EACAD,GAEFgC,QAASA,KACPjE,GAAcV,GACdsD,EAAyBtD,EAAU,EAErC4E,QAAS5B,EACT,cAAa,GAAGnG,KAAcmD,EAAY,QAAU,gBACpD,qBAAmB,SACnB6E,SAAUhC,GAEVpE,MAAAC,cAACoG,EAAAA,EAAI,CACHC,KAAM/E,EAAY,QAAU,mBAC5BgF,eAAe,aACfC,KAAK,SACLtG,UAAU,0BAKd8D,IAAeuB,IACfvF,MAAAC,cAACwG,EAAAA,EAAe,MACZlF,GACAvB,MAAAC,cAACgD,EAAAA,EAAOC,IAAG,CACTwD,QAAS,CAAEtD,QAAS,GACpBuD,QAAS,CAAEvD,QAAS,GACpBwD,KAAM,CAAExD,QAAS,GACjB8C,QAASA,IAAM1B,GAAoBvC,GAAa,GAChD/B,UAAU,gFAET8D,GACChE,MAAAC,cAAC4G,EAAAA,EAAK,CACJ1I,QAAQ,yBACRG,MAAO0F,EACPzF,aAAa,2CACbF,QAASiG,GAAMyB,WAAWtB,MAC1BrG,WAAY,GAAGA,mBAIjBmH,GAAiBvB,GACjBhE,MAAAC,cAAA,UACEG,KAAK,SACL,aAAYoF,EACZtF,UAAU,uEACVgG,QAASA,IAAMjE,GAAa,GAC5B,cAAa,GAAG7D,iBAEhB4B,MAAAC,cAAA,OAAKC,UAAU,+DACbF,MAAAC,cAACoG,EAAAA,EAAI,CAACC,KAAK,mBAAmBE,KAAK,aAQ7C,C,kKC1JV,MA4BA,EA5BwBM,KACtB,MAAOC,EAAoBC,IAAyBxH,EAAAA,EAAAA,UAAS,GACvDyH,GAAWC,EAAAA,EAAAA,GAAc,MACzB,kBAAEC,IAAsBC,EAAAA,EAAAA,IAA2BC,IAAK,CAC5DF,kBAAmBE,EAAMF,sBAqB3B,OAlBA7E,EAAAA,EAAAA,YAAU,KACR,MAAMgF,EAAoBC,SAASC,eAAe,qBAC5CC,EAAoBF,SAASC,eAAe,qBAE5CE,EACJP,IAAsBQ,EAAAA,EAAkBC,MACtCX,GAAYE,IAAsBQ,EAAAA,EAAkBE,OAElDC,EACJR,GAAmBS,wBAAwBhH,QAAU,EAEjDiH,EACJP,GAAmBM,wBAAwBhH,QAAU,EAEnD2G,GACFV,EAAsBc,EAA0BE,EAAwB,GACzE,CAACf,EAAUE,IAEPJ,CAAkB,E,+ECF3B,MAyNA,EAzNuB9I,IASV,IATW,mBACtBgK,EAAkB,mBAClBC,EAAkB,aAClBC,EAAY,aACZC,EAAY,eACZC,EAAc,KACdC,EAAI,MACJ9G,EAAK,MACLiD,GACMxG,EACN,MAAMsK,GAAgBpD,EAAAA,EAAAA,QAAuB,MACvCqD,GAAoBrD,EAAAA,EAAAA,QAAuB,OAC1CsD,EAAiBC,IAAsBlJ,EAAAA,EAAAA,WAAS,IAChDmJ,EAAcC,IAAmBpJ,EAAAA,EAAAA,WAAS,IAC1CqJ,EAAyBC,IAA8BtJ,EAAAA,EAAAA,WAAS,IAChEuJ,GAAahI,OAAQiI,KAAoBC,EAAAA,EAAAA,MACzCC,GAAoBnI,OAAQoI,KACjCF,EAAAA,EAAAA,KACIhC,GAAWC,EAAAA,EAAAA,GAAc,KACzBkC,GAAWlC,EAAAA,EAAAA,GAAc,MACzBmC,EAAevC,IACfwC,GAAYC,EAAAA,EAAAA,KACZC,EAA0BJ,GAC3B,IAAOJ,GACP,GAAMA,EACLS,EAAwBN,IAAuBK,GAE/C,gBAAEE,IAAoBC,EAAAA,EAAAA,GAAU,CACpC7F,OAAQyE,EACRqB,OAAQ,CAAC,YAAa,aAGlBC,GAAuBC,EAAAA,EAAAA,GAAUJ,EAAiB,CACtDK,UAAW,IACXC,QAAS,GACTC,KAAM,IAGFC,GAAOC,EAAAA,EAAAA,GACXN,EACA,CAAC,EAAG,IACJ,CAACP,GAAaT,EAA0B,OAAS,KAAM,SAanDuB,GAAQD,EAAAA,EAAAA,GACZN,EACA,CAAC,GAAK,IACN,CAZIP,GAAaT,EAAgC,EAC1C5B,EAAW,GAAM,GAWJ,IAkBtB,OAfA3E,EAAAA,EAAAA,YAAU,KACJgH,GAAWZ,GAAmB,EAAK,GACtC,CAACY,KAGJe,EAAAA,EAAAA,GAAoBD,EAAO,UAAWE,IACpC5B,EAA6B,IAAV4B,GAAezB,EAAwB,KAG5DwB,EAAAA,EAAAA,GAAoBH,EAAM,UAAWI,IACnC,MAAMC,GAA+BD,EAAME,MAAM,GAAI,GAErD5B,EAAgB3B,GAAYsD,GAA+B,GAAG,IAI9DvK,MAAAC,cAAA,WACEC,UAAU,4CACV,cAAY,yBAEZF,MAAAC,cAAA,OACEC,UAAU,WACViD,MAAO,CAAEsH,cAAehB,IAExBzJ,MAAAC,cAAA,OACEC,UACEoJ,GAAaT,EACT,aACA,yBAENtI,IAAKgI,GAELvI,MAAAC,cAACgD,EAAAA,EAAOC,IAAG,CACT3C,IAAKwI,EACL7I,UAAU,SACViD,MAAO,CACLuH,IAAKrB,EACLtI,OA/CNuI,EAAkB,KACfF,EAAW,OAAS,gBAAgBC,SAiDnCrJ,MAAAC,cAACgD,EAAAA,EAAOC,IAAG,CACTC,MAAO,CAAEiH,SACTlK,UAAU,4BACVyK,WAAY,CAAEC,KAAM,UACpBrK,IAAKiI,EACLpC,SAAU,GAEVpG,MAAAC,cAAA,OAAKC,UAAU,mBACbF,MAAAC,cAAC4K,EAAAA,EAAW,CACV5G,sBAAoB,EACpB7F,WAAW,uCACX+F,mCAAmC,sCACnCI,gBAAkBuG,GAChBhC,EACEgC,EAAEhH,OAAOiH,QAAQ,mBAGrBtG,MAAOA,EACPV,SAAU4E,EACVrH,UAAU,EACVqD,eAAe,gBACfD,aAAa,uCAIjB1E,MAAAC,cAACgD,EAAAA,EAAOC,IAAG,CACT3C,IAAK2I,EACLhJ,UAAU,kCACVwG,QAAS,CAAEtD,QAAS,EAAG4H,EAAG,IAC1BrE,QAAS,CACPvD,QAASqF,EAAkB,EAAI,KAC3BA,GAAmB,CACrBuC,EAAGxB,IAGP5C,KAAM,CAAExD,QAAS,EAAG4H,EAAG,IACvBL,WAAY,CAAEM,SAAU,GAAKL,KAAM,cAEnC5K,MAAAC,cAAA,OAAKC,UAAU,0DACZmI,GACCrI,MAAAC,cAAA,OACEa,IAAK,GAAGoK,MACR1K,IAAI,MACJN,UAAU,uEAGdF,MAAAC,cAAA,MACEC,UAAU,eACV,cAAY,gCAEXsB,GAEHxB,MAAAC,cAAA,KACEC,UAAWC,IACT,QACA8G,EAAW,WAAa,MAE1B,cAAY,+BAEXqB,GAGFD,GACCrI,MAAAC,cAAAD,MAAAmL,SAAA,KACEnL,MAAAC,cAAA,OAAKC,UAAU,2HACbF,MAAAC,cAAA,KACEC,UAAU,QACV,cAAY,sCAEX+H,EAAoB,IACrBjI,MAAAC,cAAA,QAAMC,UAAU,MAAMgI,IAExBlI,MAAAC,cAAA,KACEC,UAAWC,IACT,gBACA8G,EAAW,aAAe,MAE5B,cAAY,2CAEXkB,IAILnI,MAAAC,cAAA,KACEC,UAAWC,IACT,gBACA8G,EAAW,YAAc,YAE3B,cAAY,0CAEXmB,OAQbpI,MAAAC,cAACgD,EAAAA,EAAOC,IAAG,CACThD,UAAU,sFACVwG,QAAS,CAAEtD,QAAS,GACpBuH,WAAY,CAAEM,SAAU,GAAKL,KAAM,aACnCjE,QAAS,CAAEvD,QAASqF,EAAkB,EAAI,KAG5CzI,MAAAC,cAACgD,EAAAA,EAAOC,IAAG,CACThD,UAAU,6DACViD,MAAO,CAAE+G,KAAMrB,EAA0B,OAASqB,GAClDS,WAAY,CAAEC,KAAM,kBAKpB,C,oDCjPHjL,EAAc,SAAdA,GAAc,OAAdA,EAAc,WAAdA,EAAc,YAAdA,EAAc,WAAdA,EAAc,YAAdA,CAAc,EAAdA,GAAc,IAOzB,S,oDCPKgI,EAAiB,SAAjBA,GAAiB,OAAjBA,EAAiB,UAAjBA,EAAiB,gBAAjBA,CAAiB,EAAjBA,GAAiB,IAKtB,S,uECGO,MAAMyD,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,gBAC1C9G,oBAAqB,cACrBD,mBAAoB,aACpBgH,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,+DCjCpD,MAMA,GANkCF,E,SAAAA,IAAiCC,IAAG,CACpE/F,kBAAmBQ,EAAAA,EAAkBC,IACrCyF,qBAAuBC,GACrBJ,EAAI,CAAE/F,kBAAmBmG,O,gDCb7B,MAOA,EAPyBC,IACD,oBAAXhL,SACTA,OAAOiL,UAAYjL,OAAOiL,WAAa,GACvCjL,OAAOiL,UAAUC,KAAKF,GACxB,C,0ECAF,MAWA,EAXsB7H,KACpB,MAAOyH,EAAYC,IAAiB5N,EAAAA,EAAAA,UAAsB4L,EAAAA,GACpDsC,GAAsBC,EAAAA,EAAAA,IAAoBtG,GAAUA,EAAM8F,aAMhE,OAJA7K,EAAAA,EAAAA,YAAU,KACR8K,EAAcM,EAAoB,GACjC,CAACA,IAEGP,CAAU,C,0ECTnB,MAAMS,EAAuBA,KAC3B,MAAMC,EAAwB,IAAxBA,EAAsC,KAAtCA,EAAuD,KACvD7M,EAAQuB,OAAOuL,WAErB,OAAI9M,EAAQ6M,EACHlO,EAAAA,EAAeC,MAEpBoB,GAAS6M,GAAsB7M,EAAQ6M,EAClClO,EAAAA,EAAeE,OAEpBmB,GAAS6M,GAAuB7M,EAAQ6M,EACnClO,EAAAA,EAAeG,MAEjBH,EAAAA,EAAeI,MAAM,EAuB9B,EApBsBV,KACpB,MAAO0O,EAAQC,IAAaxO,EAAAA,EAAAA,YAEtByO,GAAgBC,EAAAA,EAAAA,cACpB,IAAMF,EAAUJ,MAChB,IAYF,OATAtL,EAAAA,EAAAA,YAAU,KACRC,OAAO4L,iBAAiB,SAAUF,GAClCD,EAAUJ,KAEH,KACLrL,OAAO6L,oBAAoB,SAAUH,EAAc,IAEpD,CAACA,IAEGF,CAAM,C,+DClCf,MAwBA,EAxBuBM,IAKrB,MAAOC,EAAeC,IAAoB/O,EAAAA,EAAAA,YAEpCgP,GAAUN,EAAAA,EAAAA,cAAY,KAC1B,MAAMO,EAAiBlM,OAAOuL,WAAaO,EAC3CE,EAAiBE,EAAe,GAC/B,CAACJ,IAWJ,OATA/L,EAAAA,EAAAA,YAAU,KACRC,OAAO4L,iBAAiB,SAAUK,GAClCA,IAEO,KACLjM,OAAO6L,oBAAoB,SAAUI,EAAQ,IAE9C,CAACA,IAEGF,CAAa,C,+DCrBtB,MAUA,EAVuB/E,KACrB,MAAOD,EAAWoF,IAAgBlP,EAAAA,EAAAA,WAAS,GAM3C,OAJA8C,EAAAA,EAAAA,YAAU,KACRoM,EAAanM,OAAOoM,OAASpM,OAAOmI,IAAI,GACvC,IAEIpB,CAAS,C,+DCPlB,MA4CA,EA5C0BL,KACxB,MAAM2F,GAAczJ,EAAAA,EAAAA,WACb0J,EAAkBC,IAAuBtP,EAAAA,EAAAA,UAAS,CACvDwB,MAAO,EACPD,OAAQ,EACRgO,YAAa,EACbC,aAAc,EACdC,YAAa,EACbC,aAAc,IAGVC,GAAejB,EAAAA,EAAAA,cAAakB,IAChC,IAAKC,MAAMC,QAAQF,GAAU,OAE7B,MAAMG,EAAQH,EAAQ,GAEtBN,EAAoB,CAClB9N,MAAOuO,GAAOC,YAAYxO,OAAS,EACnCD,OAAQwO,GAAOC,YAAYzO,QAAU,EACrCgO,YAAaQ,GAAOzL,OAAOiL,aAAe,EAC1CC,aAAcO,GAAOzL,OAAOkL,cAAgB,EAC5CC,YAAaM,GAAOzL,OAAOmL,aAAe,EAC1CC,aAAcK,GAAOzL,OAAOoL,cAAgB,GAC5C,GACD,IAiBH,MAAO,EAfKhB,EAAAA,EAAAA,cACTuB,IACKb,EAAYc,UAAYD,IAC1Bb,EAAYc,QAAQC,aACpBf,EAAYc,aAAUE,IAGnBhB,EAAYc,SAAWD,IAC1Bb,EAAYc,QAAU,IAAIG,eAAeV,GACzCP,EAAYc,QAAQI,QAAQL,GAC9B,GAEF,CAACN,IAGUN,EAAiB,C,qCC1ChC,IAAIkB,EAAYC,MAAQA,KAAKD,UAAa,WAStC,OARAA,EAAWE,OAAOC,QAAU,SAASC,GACjC,IAAK,IAAIC,EAAGC,EAAI,EAAGC,EAAIC,UAAU7P,OAAQ2P,EAAIC,EAAGD,IAE5C,IAAK,IAAIG,KADTJ,EAAIG,UAAUF,GACOJ,OAAOQ,UAAUC,eAAeC,KAAKP,EAAGI,KACzDL,EAAEK,GAAKJ,EAAEI,IAEjB,OAAOL,CACX,EACOJ,EAASa,MAAMZ,KAAMO,UAChC,EACIM,EAAUb,MAAQA,KAAKa,QAAW,SAAUT,EAAGtF,GAC/C,IAAIqF,EAAI,CAAC,EACT,IAAK,IAAIK,KAAKJ,EAAOH,OAAOQ,UAAUC,eAAeC,KAAKP,EAAGI,IAAM1F,EAAEgG,QAAQN,GAAK,IAC9EL,EAAEK,GAAKJ,EAAEI,IACb,GAAS,MAALJ,GAAqD,mBAAjCH,OAAOc,sBACtB,KAAIV,EAAI,EAAb,IAAgBG,EAAIP,OAAOc,sBAAsBX,GAAIC,EAAIG,EAAE9P,OAAQ2P,IAC3DvF,EAAEgG,QAAQN,EAAEH,IAAM,GAAKJ,OAAOQ,UAAUO,qBAAqBL,KAAKP,EAAGI,EAAEH,MACvEF,EAAEK,EAAEH,IAAMD,EAAEI,EAAEH,IAF4B,CAItD,OAAOF,CACX,EACAF,OAAOgB,eAAeC,EAAS,aAAc,CAAE5G,OAAO,IACtD4G,EAAQC,cAAW,EACnB,IAAIC,EAAU,EAAQ,OAqCtBF,EAAQC,SALO,SAAUE,GACrB,OAAKA,GAAYhC,MAAMC,QAAQ+B,EAAQC,OAEhCD,EAAQC,MAAMC,KAAI,SAAUC,GAAQ,OAAOA,EAAKC,WAAWnL,IAAM,IAD7D,IAEf,EAEA4K,EAAA,QArCc,SAAUQ,GACpB,IAAIL,EAAUK,EAAGL,QAASG,EAAOE,EAAGF,KAAMhL,EAAOkL,EAAGlL,KAAMhF,EAAQkQ,EAAGlQ,MAAOmQ,EAAcD,EAAGC,YAAaC,EAAoBF,EAAGE,kBAAmBC,EAASH,EAAGG,OAAQC,EAAeJ,EAAGI,aAAcC,EAAgBL,EAAGK,cAAeC,EAAQnB,EAAOa,EAAI,CAAC,UAAW,OAAQ,OAAQ,QAAS,cAAe,oBAAqB,SAAU,eAAgB,kBAChW,IAAKL,IAAYG,EACb,OAAO,KACX,IAAIS,EAAcZ,EAAQC,MAAMY,MAAK,SAAUC,GAAQ,OAAOA,EAAKV,WAAWnL,OAASkL,CAAM,IAC7F,IAAKS,EACD,OAAO,KACX,IAAIG,EAAe,CACfC,QAAS,eACTC,OAAQ,eACRC,KAAM,gBAENV,IACAO,EAAaC,QAAU,OACvBD,EAAaI,cAAgB,MAC7BJ,EAAaK,SAAW,QAE5B,IAAIC,EAAgB3C,EAASA,EAASA,EAAS,CAAC,EAAI6B,EAAoB,CAAC,EAAIQ,GAAiB5L,EAAO,CAAExF,MAAOwF,EAAMzF,OAAQyF,GAAS,CAAC,GAAMwL,EAAM7O,OAAS,CAAC,GACxJwP,EAAKV,EAAYT,KAAKxQ,MACtB4R,EAAU,OAAOC,YAD2B,IAAPF,EAAgB,OAASA,EAC/B,SAC/BzU,EAAW+T,EAAYT,KAAKsB,MAAMvB,KAAI,SAAUwB,EAAMC,GACtD,IAAItB,EACAuB,EAA0C,QAAjCvB,EAAKO,EAAYT,KAAKyB,aAA0B,IAAPvB,OAAgB,EAASA,EAAGsB,GAC9EE,EAAYnD,EAAS,CAAEoD,EAAGJ,EAAMK,IAAK5B,EAAOwB,IAAWrB,GAAesB,EAAQA,EAAQ,CAAC,GAC3F,OAAO,EAAI7B,EAAQnR,eAAe8R,GAAiB,OAAQmB,EAC/D,IAIA,OAHI1R,IAAUqQ,GACV3T,EAASuP,MAAK,EAAI2D,EAAQnR,eAAe,QAAS,CAAEmT,IAAK5R,GAASA,KAE/D,EAAI4P,EAAQnR,eAAe6R,GAAgB,MAAO/B,EAASA,EAAS,CAAC,EAAGiC,GAAQ,CAAEY,QAASA,EAASzP,MAAOuP,IAAkBxU,EACxI,C,YCxDAmV,EAAOnC,QAAU,2lC,+DCEjB,SAASoC,EAAYC,GACnB,IAAIlM,EACJ,MAAMmM,EAA4B,IAAIC,IAChCC,EAAW,CAACC,EAASC,KACzB,MAAMC,EAA+B,mBAAZF,EAAyBA,EAAQtM,GAASsM,EACnE,GAAIE,IAAcxM,EAAO,CACvB,MAAMyM,EAAgBzM,EACtBA,EAAQuM,EAAUC,EAAY5D,OAAOC,OAAO,CAAC,EAAG7I,EAAOwM,GACvDL,EAAUO,SAASC,GAAaA,EAAS3M,EAAOyM,IAClD,GAEIG,EAAW,IAAM5M,EAsBjB6M,EAAM,CAAER,WAAUO,WAAUE,UARhB,CAACH,EAAUI,EAAUC,IACjCD,GAAYC,EAdY,EAACL,EAAUI,EAAWH,EAAUI,EAAapE,OAAOqE,MAChFC,QAAQC,KAAK,8DACb,IAAIC,EAAeL,EAAS/M,GAC5B,SAASqN,IACP,MAAMC,EAAYP,EAAS/M,GAC3B,IAAKgN,EAAWI,EAAcE,GAAY,CACxC,MAAMC,EAAgBH,EACtBT,EAASS,EAAeE,EAAWC,EACrC,CACF,CAEA,OADApB,EAAUqB,IAAIH,GACP,IAAMlB,EAAUsB,OAAOJ,EAAc,EAInCK,CAAsBf,EAAUI,EAAUC,IAEnDb,EAAUqB,IAAIb,GACP,IAAMR,EAAUsB,OAAOd,IAGagB,QAD7B,IAAMxB,EAAUyB,SAGhC,OADA5N,EAAQkM,EAAYG,EAAUO,EAAUC,GACjCA,CACT,CAEA,MACMgB,EAD0B,oBAAX3S,SAA2BA,OAAO4S,WAAa,8BAA8BC,KAAK7S,OAAO4S,UAAUE,WAC9E,EAAA/S,UAAY,EAAAgT,gBACtD,SAASrI,EAAOsG,GACd,MAAMW,EAA6B,mBAAhBX,EAA6BD,EAAYC,GAAeA,EACrEgC,EAAW,CAACnB,EAAWF,EAAID,SAAUI,EAAapE,OAAOqE,MAC7D,MAAO,CAAEkB,IAAe,IAAAC,aAAYC,GAAMA,EAAI,GAAG,GAC3CrO,EAAQ6M,EAAID,WACZ0B,GAAW,IAAAxQ,QAAOkC,GAClBuO,GAAc,IAAAzQ,QAAOiP,GACrByB,GAAgB,IAAA1Q,QAAOkP,GACvByB,GAAa,IAAA3Q,SAAO,GACpB4Q,GAAkB,IAAA5Q,UAIxB,IAAI6Q,OAH4B,IAA5BD,EAAgBrG,UAClBqG,EAAgBrG,QAAU0E,EAAS/M,IAGrC,IAAI4O,GAAmB,GACnBN,EAASjG,UAAYrI,GAASuO,EAAYlG,UAAY0E,GAAYyB,EAAcnG,UAAY2E,GAAcyB,EAAWpG,WACvHsG,EAAgB5B,EAAS/M,GACzB4O,GAAoB5B,EAAW0B,EAAgBrG,QAASsG,IAE1Dd,GAA0B,KACpBe,IACFF,EAAgBrG,QAAUsG,GAE5BL,EAASjG,QAAUrI,EACnBuO,EAAYlG,QAAU0E,EACtByB,EAAcnG,QAAU2E,EACxByB,EAAWpG,SAAU,CAAK,IAE5B,MAAMwG,GAA6B,IAAA/Q,QAAOkC,GAC1C6N,GAA0B,KACxB,MAAMlB,EAAW,KACf,IACE,MAAMH,EAAYK,EAAID,WAChBkC,EAAiBP,EAAYlG,QAAQmE,GACtCgC,EAAcnG,QAAQqG,EAAgBrG,QAASyG,KAClDR,EAASjG,QAAUmE,EACnBkC,EAAgBrG,QAAUyG,EAC1BX,IAEJ,CAAE,MAAOY,GACPN,EAAWpG,SAAU,EACrB8F,GACF,GAEIa,EAAcnC,EAAIC,UAAUH,GAIlC,OAHIE,EAAID,aAAeiC,EAA2BxG,SAChDsE,IAEKqC,CAAW,GACjB,IACH,MAAMC,EAAgBL,EAAmBD,EAAgBD,EAAgBrG,QAEzE,OADA,IAAA6G,eAAcD,GACPA,CAAa,EAatB,OAXArG,OAAOC,OAAOqF,EAAUrB,GACxBqB,EAASiB,OAAOC,UAAY,WAC1BlC,QAAQC,KAAK,sEACb,MAAMkC,EAAQ,CAACnB,EAAUrB,GACzB,MAAO,CACL,IAAAyC,GACE,MAAMC,EAAOF,EAAMhW,QAAU,EAC7B,MAAO,CAAE4J,MAAOoM,EAAMG,QAASD,OACjC,EAEJ,EACOrB,CACT,C,0EC1GA,MAAMuB,EAAa,CACfC,KAAM,EACNC,IAAK,GCDT,SAAS3R,EAAU9E,GAAK,KAAE0W,EAAI,OAAEC,EAAM,OAAE5R,EAAM,KAAE6R,GAAO,GAAU,CAAC,GAC9D,MAAOC,EAAUC,IAAa,IAAA7X,WAAS,GAevC,OAdA,IAAA8C,YAAU,KACN,IAAK/B,EAAImP,SAAYyH,GAAQC,EACzB,OACJ,MAIME,EAAU,CACZL,KAAOA,GAAQA,EAAKvH,cAAYE,EAChCsH,SACA5R,UAEJ,ODXR,SAAgBiS,EAAmB9T,GAAS,KAAEwT,EAAMC,OAAQM,EAAU,OAAElS,EAAS,QAAW,CAAC,GACzF,MAAMmS,GAAW,OAAgBF,GAC3BG,EAAsB,IAAIC,QAyB1BC,EAAW,IAAIC,sBAxBSzI,IAC1BA,EAAQ2E,SAASxE,IACb,MAAMuI,EAAQJ,EAAoBK,IAAIxI,EAAMzL,QAK5C,GAAIyL,EAAMyI,iBAAmBC,QAAQH,GAErC,GAAIvI,EAAMyI,eAAgB,CACtB,MAAME,EAAWzU,EAAQ8L,GACD,mBAAb2I,EACPR,EAAoBxK,IAAIqC,EAAMzL,OAAQoU,GAGtCN,EAASO,UAAU5I,EAAMzL,OAEjC,MACSgU,IACLA,EAAMvI,GACNmI,EAAoB5C,OAAOvF,EAAMzL,QACrC,GACF,GAE0D,CAC5DmT,OACAO,aACAY,UAA6B,iBAAX9S,EAAsBA,EAASwR,EAAWxR,KAGhE,OADAmS,EAAS1D,SAASsE,GAAYT,EAAS9H,QAAQuI,KACxC,IAAMT,EAASjI,YAC1B,CCvBevK,CAAO7E,EAAImP,SATF,KACZ2H,GAAU,GACHF,OAAOvH,EAAY,IAAMyH,GAAU,KAOVC,EAAQ,GAC7C,CAACL,EAAM1W,EAAK2W,EAAQC,EAAM7R,IACtB8R,CACX,C,8FCEA,SAASkB,EAAe5R,GACpB,MAAM4D,GAAQ,QAAY,KAAM,QAAY5D,MAMtC,SAAE6R,IAAa,IAAAC,YAAW,KAChC,GAAID,EAAU,CACV,MAAO,CAAEE,IAAa,IAAAjZ,UAASkH,IAC/B,IAAApE,YAAU,IAAMgI,EAAMoO,GAAG,SAAUD,IAAY,GACnD,CACA,OAAOnO,CACX,C,yICPA,SAASR,EAAU6O,EAAQtX,EAAS,CAAC,GACjC,MAAM,SAAEkX,IAAa,IAAAC,YAAW,KAC1BI,GAAwB,IAAAzT,QAAO,MAC/BmF,GAAQ,QAAe,OAAcqO,GAAUA,EAAOZ,MAAQY,GAC9DE,EAAgB,KACdD,EAAsBlJ,SACtBkJ,EAAsBlJ,QAAQoJ,MAClC,EAsCJ,OApCA,IAAAC,qBAAmB,IACRzO,EAAM0O,QAAO,CAACC,EAAG/L,KAKpB,GAAIqL,EACA,OAAOrL,EAAI+L,GAcf,GAbAJ,IACAD,EAAsBlJ,SAAU,OAAa,CACzCwJ,UAAW,CAAC5O,EAAMyN,MAAOkB,GACzBE,SAAU7O,EAAM8O,cAChBhZ,KAAM,SACNiZ,UAAW,KACXC,UAAW,OACRjY,EACHkY,SAAUrM,KAKT,KAAUsM,aAAc,CACzB,MAAMC,EAAQC,YAAYC,MAAQ,KAAUC,UACxCH,EAAQ,KACRb,EAAsBlJ,QAAQmK,MAC1B,OAAsBJ,GAElC,CACA,OAAOnP,EAAMyN,KAAK,GACnBc,IACJ,CAACiB,KAAKC,UAAU1Y,MACnB,QAA0B,KACtB,IAAI,OAAcsX,GACd,OAAOA,EAAOD,GAAG,UAAWO,GAAM3O,EAAM4C,IAAI8M,WAAWf,KAC3D,GACD,CAAC3O,IACGA,CACX,C,+DCxEA,MAGM2P,EAAYhB,GAHQ,CAACA,GAChBA,GAAkB,iBAANA,GAAkBA,EAAEiB,IAElBC,CAAkBlB,GAAKA,EAAEiB,SAAMtK,E,oCCDxD,SAASwK,EAAuBC,EAAQC,GAIpC,MAAMhQ,GAAQ,OAAegQ,KAOvBC,EAAc,IAAMjQ,EAAM4C,IAAIoN,KAkBpC,OAbAC,KAKA,QAA0B,KACtB,MAAMC,EAAiB,IAAM,KAAMC,OAAOF,GAAa,GAAO,GACxDG,EAAgBL,EAAO9I,KAAK0H,GAAMA,EAAEP,GAAG,SAAU8B,KACvD,MAAO,KACHE,EAAc3G,SAASsC,GAAgBA,OACvC,QAAYkE,EAAY,CAC3B,IAEEjQ,CACX,C,0BC7BA,SAASH,EAAawQ,EAAOC,EAAyBC,EAAavD,GAC/D,GAAqB,mBAAVqD,EACP,OCJR,SAAqBG,GAKjB,KAAoBpL,QAAU,GAC9BoL,IACA,MAAMxQ,EAAQ8P,EAAuB,KAAoB1K,QAASoL,GAKlE,OADA,KAAoBpL,aAAUE,EACvBtF,CACX,CDTeyQ,CAAYJ,GAEvB,MAAMK,EAAiD,mBAA5BJ,EACrBA,EFJV,YAAsBK,GAClB,MAAMC,GAAgB7L,MAAMC,QAAQ2L,EAAK,IACnCE,EAAYD,EAAe,GAAK,EAChCE,EAAaH,EAAK,EAAIE,GACtBE,EAAaJ,EAAK,EAAIE,GACtBN,EAAcI,EAAK,EAAIE,GACvB7D,EAAU2D,EAAK,EAAIE,GACnBG,GAAe,EAAAC,EAAA,GAAYF,EAAYR,EAAa,CACtDW,MAAOvB,EAASY,EAAY,OACzBvD,IAEP,OAAO4D,EAAeI,EAAaF,GAAcE,CACrD,CEPUG,CAAUb,EAAyBC,EAAavD,GACtD,OAAOjI,MAAMC,QAAQqL,GACfe,EAAiBf,EAAOK,GACxBU,EAAiB,CAACf,IAAQ,EAAEgB,KAAYX,EAAYW,IAC9D,CACA,SAASD,EAAiBrB,EAAQW,GAC9B,MAAMW,GAAS,QAAY,IAAM,KACjC,OAAOvB,EAAuBC,GAAQ,KAClCsB,EAAOjb,OAAS,EAChB,MAAMkb,EAAYvB,EAAO3Z,OACzB,IAAK,IAAI2P,EAAI,EAAGA,EAAIuL,EAAWvL,IAC3BsL,EAAOtL,GAAKgK,EAAOhK,GAAG0H,MAE1B,OAAOiD,EAAYW,EAAO,GAElC,C","sources":["webpack://nikon-client/./components/atoms/Image/Image.tsx","webpack://nikon-client/./components/atoms/Video/Video.tsx","webpack://nikon-client/./components/molecules/InViewVideo/InViewVideo.tsx","webpack://nikon-client/./utility/hooks/useStickyOffset.tsx","webpack://nikon-client/./components/organisms/ExpandingVideo/ExpandingVideo.tsx","webpack://nikon-client/./models/enums/BreakpointEnum.ts","webpack://nikon-client/./models/enums/StickyNavPositionEnum.ts","webpack://nikon-client/./state-management/AriaLabelsStore.ts","webpack://nikon-client/./state-management/StickyNavStore.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","webpack://nikon-client/./node_modules/.pnpm/react-icomoon@2.6.0_react@18.3.1/node_modules/react-icomoon/dist/index.js","webpack://nikon-client/./assets/hue.svg","webpack://nikon-client/./node_modules/.pnpm/zustand@3.7.2_react@18.3.1/node_modules/zustand/esm/index.js","webpack://nikon-client/./node_modules/.pnpm/framer-motion@10.18.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/framer-motion/dist/es/render/dom/viewport/index.mjs","webpack://nikon-client/./node_modules/.pnpm/framer-motion@10.18.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/framer-motion/dist/es/utils/use-in-view.mjs","webpack://nikon-client/./node_modules/.pnpm/framer-motion@10.18.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/framer-motion/dist/es/value/use-motion-value.mjs","webpack://nikon-client/./node_modules/.pnpm/framer-motion@10.18.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/framer-motion/dist/es/value/use-spring.mjs","webpack://nikon-client/./node_modules/.pnpm/framer-motion@10.18.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/framer-motion/dist/es/utils/transform.mjs","webpack://nikon-client/./node_modules/.pnpm/framer-motion@10.18.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/framer-motion/dist/es/value/use-combine-values.mjs","webpack://nikon-client/./node_modules/.pnpm/framer-motion@10.18.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/framer-motion/dist/es/value/use-transform.mjs","webpack://nikon-client/./node_modules/.pnpm/framer-motion@10.18.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/framer-motion/dist/es/value/use-computed.mjs"],"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 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 StickyNavPosition from '@models/enums/StickyNavPositionEnum';\nimport useStickyNavPositionStore from '@state/StickyNavStore';\nimport { useEffect, useState } from 'react';\nimport useMediaQuery from './useMediaQuery';\n\nconst useStickyOffset = () => {\n const [stickyOffsetHeight, setStickyOffsetHeight] = useState(0);\n const isMobile = useMediaQuery(768);\n const { stickyNavPosition } = useStickyNavPositionStore((state) => ({\n stickyNavPosition: state.stickyNavPosition,\n }));\n\n useEffect(() => {\n const productNavigation = document.getElementById('ProductNavigation');\n const siteNotifications = document.getElementById('SiteNotifications');\n\n const isStickyNavOnTop =\n stickyNavPosition === StickyNavPosition.Top ||\n (!isMobile && stickyNavPosition === StickyNavPosition.Bottom);\n\n const productNavigationHeight =\n productNavigation?.getBoundingClientRect().height ?? 0;\n\n const siteNotificationsHeight =\n siteNotifications?.getBoundingClientRect().height ?? 0;\n\n if (isStickyNavOnTop)\n setStickyOffsetHeight(productNavigationHeight + siteNotificationsHeight);\n }, [isMobile, stickyNavPosition]);\n\n return stickyOffsetHeight;\n};\n\nexport default useStickyOffset;\n","import Hue from '@assets/hue.svg';\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 useStickyOffset from '@utils/hooks/useStickyOffset';\nimport classNames from 'classnames';\nimport {\n motion,\n useMotionValueEvent,\n useScroll,\n useSpring,\n useTransform,\n} from 'framer-motion';\nimport { useEffect, useRef, useState } from 'react';\n\ninterface Props {\n readonly cardTitleLargeText: string;\n readonly cardTitleSmallText: string;\n readonly cardSubtitle: string;\n readonly cardFootnote: string;\n readonly showCardModule: boolean;\n readonly text: string;\n readonly title: string;\n readonly video: IVideo;\n}\n\nconst ExpandingVideo = ({\n cardTitleLargeText,\n cardTitleSmallText,\n cardSubtitle,\n cardFootnote,\n showCardModule,\n text,\n title,\n video,\n}: Props) => {\n const scrollableRef = useRef(null);\n const videoContainerRef = useRef(null);\n const [finishedScaling, setFinishedScaling] = useState(false);\n const [videoPlaying, setVideoPlaying] = useState(false);\n const [mediaButtonFocusedByTab, setMediaButtonFocusedByTab] = useState(false);\n const [stickyRef, { height: viewportHeight }] = useResizeObserver();\n const [bottomDetailsRef, { height: bottomDetailsHeight }] =\n useResizeObserver();\n const isMobile = useMediaQuery(768);\n const isTablet = useMediaQuery(1440);\n const stickyOffset = useStickyOffset();\n const isPreview = usePreviewMode();\n const bottomDetailsTranslateY = isTablet\n ? -0.25 * viewportHeight\n : -0.5 * viewportHeight;\n const computedPaddingBottom = bottomDetailsHeight - -bottomDetailsTranslateY;\n\n const { scrollYProgress } = useScroll({\n target: scrollableRef,\n offset: ['start end', 'end end'],\n });\n\n const smoothScrollProgress = useSpring(scrollYProgress, {\n stiffness: 500,\n damping: 50,\n mass: 1,\n });\n\n const left = useTransform(\n smoothScrollProgress,\n [0, 0.4],\n [isPreview || mediaButtonFocusedByTab ? '100%' : '0%', '100%']\n );\n\n const getInitialScale = () => {\n if (isPreview || mediaButtonFocusedByTab) return 1;\n return isMobile ? 0.9 : 0.7;\n };\n\n const getStickyHeight = () => {\n if (isPreview) return 1080;\n return isTablet ? '50vh' : `calc(100vh - ${stickyOffset}px)`;\n };\n\n const scale = useTransform(\n smoothScrollProgress,\n [0.4, 0.8],\n [getInitialScale(), 1]\n );\n\n useEffect(() => {\n if (isPreview) setFinishedScaling(true);\n }, [isPreview]);\n\n // Detect whether we have finished scaling so start playing the video\n useMotionValueEvent(scale, 'change', (value: number) => {\n setFinishedScaling(value === 1 || mediaButtonFocusedByTab);\n });\n\n useMotionValueEvent(left, 'change', (value: string) => {\n const leftPercentageScrolledValue = +value.slice(0, -1);\n\n setVideoPlaying(isMobile || leftPercentageScrolledValue >= 10);\n });\n\n return (\n \n \n \n \n \n
\n \n setMediaButtonFocusedByTab(\n e.target.matches(':focus-visible')\n )\n }\n video={video}\n autoPlay={videoPlaying}\n controls={false}\n wrapperClasses=\"w-full h-full\"\n videoClasses=\"[&>div>video]:object-cover h-full\"\n />\n
\n\n \n
\n {showCardModule && (\n \n )}\n \n {title}\n \n \n {text}\n

\n\n {showCardModule && (\n <>\n
\n \n {cardTitleLargeText}{' '}\n {cardTitleSmallText}\n

\n \n {cardSubtitle}\n

\n
\n\n \n {cardFootnote}\n

\n \n )}\n
\n \n \n\n \n\n \n \n \n \n \n );\n};\n\nexport default ExpandingVideo;\n","const enum BreakpointEnum {\n Small = 'sm',\n Medium = 'md',\n Large = 'lg',\n XLarge = 'xl',\n}\n\nexport default BreakpointEnum;\n","enum StickyNavPosition {\n Top = 'top',\n Bottom = 'bottom',\n}\n\nexport default StickyNavPosition;\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","import StickyNavPosition from '@models/enums/StickyNavPositionEnum';\nimport create from 'zustand';\n\ntype StickyNavPositions = StickyNavPosition.Top | StickyNavPosition.Bottom;\n\ninterface IStickyNavPositionState {\n readonly stickyNavPosition: StickyNavPosition;\n readonly setStickyNavPosition: (navPosition: StickyNavPositions) => void;\n}\n\nconst useStickyNavPositionStore = create((set) => ({\n stickyNavPosition: StickyNavPosition.Top,\n setStickyNavPosition: (navPosition: StickyNavPositions) =>\n set({ stickyNavPosition: navPosition }),\n}));\n\nexport default useStickyNavPositionStore;\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","\"use strict\";\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.iconList = void 0;\nvar react_1 = require(\"react\");\nvar IcoMoon = function (_a) {\n var iconSet = _a.iconSet, icon = _a.icon, size = _a.size, title = _a.title, disableFill = _a.disableFill, removeInlineStyle = _a.removeInlineStyle, native = _a.native, SvgComponent = _a.SvgComponent, PathComponent = _a.PathComponent, props = __rest(_a, [\"iconSet\", \"icon\", \"size\", \"title\", \"disableFill\", \"removeInlineStyle\", \"native\", \"SvgComponent\", \"PathComponent\"]);\n if (!iconSet || !icon)\n return null;\n var currentIcon = iconSet.icons.find(function (item) { return item.properties.name === icon; });\n if (!currentIcon)\n return null;\n var initialStyle = {\n display: \"inline-block\",\n stroke: \"currentColor\",\n fill: \"currentColor\",\n };\n if (native) {\n initialStyle.display = \"flex\";\n initialStyle.flexDirection = \"row\";\n initialStyle.flexWrap = \"wrap\";\n }\n var comptuedStyle = __assign(__assign(__assign({}, (removeInlineStyle ? {} : initialStyle)), (size ? { width: size, height: size } : {})), (props.style || {}));\n var _b = currentIcon.icon.width, width = _b === void 0 ? \"1024\" : _b;\n var viewBox = \"0 0 \".concat(width, \" 1024\");\n var children = currentIcon.icon.paths.map(function (path, index) {\n var _a;\n var attrs = (_a = currentIcon.icon.attrs) === null || _a === void 0 ? void 0 : _a[index];\n var pathProps = __assign({ d: path, key: icon + index }, (!disableFill && attrs ? attrs : {}));\n return (0, react_1.createElement)(PathComponent || \"path\", pathProps);\n });\n if (title && !native) {\n children.push((0, react_1.createElement)(\"title\", { key: title }, title));\n }\n return (0, react_1.createElement)(SvgComponent || \"svg\", __assign(__assign({}, props), { viewBox: viewBox, style: comptuedStyle }), children);\n};\nvar iconList = function (iconSet) {\n if (!iconSet || !Array.isArray(iconSet.icons))\n return null;\n return iconSet.icons.map(function (icon) { return icon.properties.name; });\n};\nexports.iconList = iconList;\nexports.default = IcoMoon;\n//# sourceMappingURL=index.js.map","module.exports = \"data:image/svg+xml,%3csvg width='906' height='906' viewBox='0 0 906 906' fill='none' xmlns='http://www.w3.org/2000/svg'%3e %3cg opacity='0.5' filter='url(%23filter0_df_5839_100698)'%3e %3ccircle cx='453' cy='453' r='263' fill='%23FFDD00'/%3e %3c/g%3e %3cdefs%3e %3cfilter id='filter0_df_5839_100698' x='0' y='0' width='906' height='906' filterUnits='userSpaceOnUse' color-interpolation-filters='sRGB'%3e %3cfeFlood flood-opacity='0' result='BackgroundImageFix'/%3e %3cfeColorMatrix in='SourceAlpha' type='matrix' values='0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0' result='hardAlpha'/%3e %3cfeOffset dy='1.66516'/%3e %3cfeGaussianBlur stdDeviation='0.832579'/%3e %3cfeComposite in2='hardAlpha' operator='out'/%3e %3cfeColorMatrix type='matrix' values='0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.25 0'/%3e %3cfeBlend mode='normal' in2='BackgroundImageFix' result='effect1_dropShadow_5839_100698'/%3e %3cfeBlend mode='normal' in='SourceGraphic' in2='effect1_dropShadow_5839_100698' result='shape'/%3e %3cfeGaussianBlur stdDeviation='95' result='effect2_foregroundBlur_5839_100698'/%3e %3c/filter%3e %3c/defs%3e %3c/svg%3e\"","import { useReducer, useRef, useDebugValue, useEffect, useLayoutEffect } from 'react';\n\nfunction createStore(createState) {\n let state;\n const listeners = /* @__PURE__ */ new Set();\n const setState = (partial, replace) => {\n const nextState = typeof partial === \"function\" ? partial(state) : partial;\n if (nextState !== state) {\n const previousState = state;\n state = replace ? nextState : Object.assign({}, state, nextState);\n listeners.forEach((listener) => listener(state, previousState));\n }\n };\n const getState = () => state;\n const subscribeWithSelector = (listener, selector = getState, equalityFn = Object.is) => {\n console.warn(\"[DEPRECATED] Please use `subscribeWithSelector` middleware\");\n let currentSlice = selector(state);\n function listenerToAdd() {\n const nextSlice = selector(state);\n if (!equalityFn(currentSlice, nextSlice)) {\n const previousSlice = currentSlice;\n listener(currentSlice = nextSlice, previousSlice);\n }\n }\n listeners.add(listenerToAdd);\n return () => listeners.delete(listenerToAdd);\n };\n const subscribe = (listener, selector, equalityFn) => {\n if (selector || equalityFn) {\n return subscribeWithSelector(listener, selector, equalityFn);\n }\n listeners.add(listener);\n return () => listeners.delete(listener);\n };\n const destroy = () => listeners.clear();\n const api = { setState, getState, subscribe, destroy };\n state = createState(setState, getState, api);\n return api;\n}\n\nconst isSSR = typeof window === \"undefined\" || !window.navigator || /ServerSideRendering|^Deno\\//.test(window.navigator.userAgent);\nconst useIsomorphicLayoutEffect = isSSR ? useEffect : useLayoutEffect;\nfunction create(createState) {\n const api = typeof createState === \"function\" ? createStore(createState) : createState;\n const useStore = (selector = api.getState, equalityFn = Object.is) => {\n const [, forceUpdate] = useReducer((c) => c + 1, 0);\n const state = api.getState();\n const stateRef = useRef(state);\n const selectorRef = useRef(selector);\n const equalityFnRef = useRef(equalityFn);\n const erroredRef = useRef(false);\n const currentSliceRef = useRef();\n if (currentSliceRef.current === void 0) {\n currentSliceRef.current = selector(state);\n }\n let newStateSlice;\n let hasNewStateSlice = false;\n if (stateRef.current !== state || selectorRef.current !== selector || equalityFnRef.current !== equalityFn || erroredRef.current) {\n newStateSlice = selector(state);\n hasNewStateSlice = !equalityFn(currentSliceRef.current, newStateSlice);\n }\n useIsomorphicLayoutEffect(() => {\n if (hasNewStateSlice) {\n currentSliceRef.current = newStateSlice;\n }\n stateRef.current = state;\n selectorRef.current = selector;\n equalityFnRef.current = equalityFn;\n erroredRef.current = false;\n });\n const stateBeforeSubscriptionRef = useRef(state);\n useIsomorphicLayoutEffect(() => {\n const listener = () => {\n try {\n const nextState = api.getState();\n const nextStateSlice = selectorRef.current(nextState);\n if (!equalityFnRef.current(currentSliceRef.current, nextStateSlice)) {\n stateRef.current = nextState;\n currentSliceRef.current = nextStateSlice;\n forceUpdate();\n }\n } catch (error) {\n erroredRef.current = true;\n forceUpdate();\n }\n };\n const unsubscribe = api.subscribe(listener);\n if (api.getState() !== stateBeforeSubscriptionRef.current) {\n listener();\n }\n return unsubscribe;\n }, []);\n const sliceToReturn = hasNewStateSlice ? newStateSlice : currentSliceRef.current;\n useDebugValue(sliceToReturn);\n return sliceToReturn;\n };\n Object.assign(useStore, api);\n useStore[Symbol.iterator] = function() {\n console.warn(\"[useStore, api] = create() is deprecated and will be removed in v4\");\n const items = [useStore, api];\n return {\n next() {\n const done = items.length <= 0;\n return { value: items.shift(), done };\n }\n };\n };\n return useStore;\n}\n\nexport { create as default };\n","import { resolveElements } from '../utils/resolve-element.mjs';\n\nconst thresholds = {\n some: 0,\n all: 1,\n};\nfunction inView(elementOrSelector, onStart, { root, margin: rootMargin, amount = \"some\" } = {}) {\n const elements = resolveElements(elementOrSelector);\n const activeIntersections = new WeakMap();\n const onIntersectionChange = (entries) => {\n entries.forEach((entry) => {\n const onEnd = activeIntersections.get(entry.target);\n /**\n * If there's no change to the intersection, we don't need to\n * do anything here.\n */\n if (entry.isIntersecting === Boolean(onEnd))\n return;\n if (entry.isIntersecting) {\n const newOnEnd = onStart(entry);\n if (typeof newOnEnd === \"function\") {\n activeIntersections.set(entry.target, newOnEnd);\n }\n else {\n observer.unobserve(entry.target);\n }\n }\n else if (onEnd) {\n onEnd(entry);\n activeIntersections.delete(entry.target);\n }\n });\n };\n const observer = new IntersectionObserver(onIntersectionChange, {\n root,\n rootMargin,\n threshold: typeof amount === \"number\" ? amount : thresholds[amount],\n });\n elements.forEach((element) => observer.observe(element));\n return () => observer.disconnect();\n}\n\nexport { inView };\n","import { useState, useEffect } from 'react';\nimport { inView } from '../render/dom/viewport/index.mjs';\n\nfunction useInView(ref, { root, margin, amount, once = false } = {}) {\n const [isInView, setInView] = useState(false);\n useEffect(() => {\n if (!ref.current || (once && isInView))\n return;\n const onEnter = () => {\n setInView(true);\n return once ? undefined : () => setInView(false);\n };\n const options = {\n root: (root && root.current) || undefined,\n margin,\n amount,\n };\n return inView(ref.current, onEnter, options);\n }, [root, ref, margin, once, amount]);\n return isInView;\n}\n\nexport { useInView };\n","import { useContext, useState, useEffect } from 'react';\nimport { motionValue } from './index.mjs';\nimport { MotionConfigContext } from '../context/MotionConfigContext.mjs';\nimport { useConstant } from '../utils/use-constant.mjs';\n\n/**\n * Creates a `MotionValue` to track the state and velocity of a value.\n *\n * Usually, these are created automatically. For advanced use-cases, like use with `useTransform`, you can create `MotionValue`s externally and pass them into the animated component via the `style` prop.\n *\n * ```jsx\n * export const MyComponent = () => {\n * const scale = useMotionValue(1)\n *\n * return \n * }\n * ```\n *\n * @param initial - The initial state.\n *\n * @public\n */\nfunction useMotionValue(initial) {\n const value = useConstant(() => motionValue(initial));\n /**\n * If this motion value is being used in static mode, like on\n * the Framer canvas, force components to rerender when the motion\n * value is updated.\n */\n const { isStatic } = useContext(MotionConfigContext);\n if (isStatic) {\n const [, setLatest] = useState(initial);\n useEffect(() => value.on(\"change\", setLatest), []);\n }\n return value;\n}\n\nexport { useMotionValue };\n","import { useContext, useRef, useInsertionEffect } from 'react';\nimport { isMotionValue } from './utils/is-motion-value.mjs';\nimport { useMotionValue } from './use-motion-value.mjs';\nimport { MotionConfigContext } from '../context/MotionConfigContext.mjs';\nimport { useIsomorphicLayoutEffect } from '../utils/use-isomorphic-effect.mjs';\nimport { animateValue } from '../animation/animators/js/index.mjs';\nimport { millisecondsToSeconds } from '../utils/time-conversion.mjs';\nimport { frameData } from '../frameloop/frame.mjs';\n\n/**\n * Creates a `MotionValue` that, when `set`, will use a spring animation to animate to its new state.\n *\n * It can either work as a stand-alone `MotionValue` by initialising it with a value, or as a subscriber\n * to another `MotionValue`.\n *\n * @remarks\n *\n * ```jsx\n * const x = useSpring(0, { stiffness: 300 })\n * const y = useSpring(x, { damping: 10 })\n * ```\n *\n * @param inputValue - `MotionValue` or number. If provided a `MotionValue`, when the input `MotionValue` changes, the created `MotionValue` will spring towards that value.\n * @param springConfig - Configuration options for the spring.\n * @returns `MotionValue`\n *\n * @public\n */\nfunction useSpring(source, config = {}) {\n const { isStatic } = useContext(MotionConfigContext);\n const activeSpringAnimation = useRef(null);\n const value = useMotionValue(isMotionValue(source) ? source.get() : source);\n const stopAnimation = () => {\n if (activeSpringAnimation.current) {\n activeSpringAnimation.current.stop();\n }\n };\n useInsertionEffect(() => {\n return value.attach((v, set) => {\n /**\n * A more hollistic approach to this might be to use isStatic to fix VisualElement animations\n * at that level, but this will work for now\n */\n if (isStatic)\n return set(v);\n stopAnimation();\n activeSpringAnimation.current = animateValue({\n keyframes: [value.get(), v],\n velocity: value.getVelocity(),\n type: \"spring\",\n restDelta: 0.001,\n restSpeed: 0.01,\n ...config,\n onUpdate: set,\n });\n /**\n * If we're between frames, resync the animation to the frameloop.\n */\n if (!frameData.isProcessing) {\n const delta = performance.now() - frameData.timestamp;\n if (delta < 30) {\n activeSpringAnimation.current.time =\n millisecondsToSeconds(delta);\n }\n }\n return value.get();\n }, stopAnimation);\n }, [JSON.stringify(config)]);\n useIsomorphicLayoutEffect(() => {\n if (isMotionValue(source)) {\n return source.on(\"change\", (v) => value.set(parseFloat(v)));\n }\n }, [value]);\n return value;\n}\n\nexport { useSpring };\n","import { interpolate } from './interpolate.mjs';\n\nconst isCustomValueType = (v) => {\n return v && typeof v === \"object\" && v.mix;\n};\nconst getMixer = (v) => (isCustomValueType(v) ? v.mix : undefined);\nfunction transform(...args) {\n const useImmediate = !Array.isArray(args[0]);\n const argOffset = useImmediate ? 0 : -1;\n const inputValue = args[0 + argOffset];\n const inputRange = args[1 + argOffset];\n const outputRange = args[2 + argOffset];\n const options = args[3 + argOffset];\n const interpolator = interpolate(inputRange, outputRange, {\n mixer: getMixer(outputRange[0]),\n ...options,\n });\n return useImmediate ? interpolator(inputValue) : interpolator;\n}\n\nexport { transform };\n","import { useMotionValue } from './use-motion-value.mjs';\nimport { useIsomorphicLayoutEffect } from '../utils/use-isomorphic-effect.mjs';\nimport { cancelFrame, frame } from '../frameloop/frame.mjs';\n\nfunction useCombineMotionValues(values, combineValues) {\n /**\n * Initialise the returned motion value. This remains the same between renders.\n */\n const value = useMotionValue(combineValues());\n /**\n * Create a function that will update the template motion value with the latest values.\n * This is pre-bound so whenever a motion value updates it can schedule its\n * execution in Framesync. If it's already been scheduled it won't be fired twice\n * in a single frame.\n */\n const updateValue = () => value.set(combineValues());\n /**\n * Synchronously update the motion value with the latest values during the render.\n * This ensures that within a React render, the styles applied to the DOM are up-to-date.\n */\n updateValue();\n /**\n * Subscribe to all motion values found within the template. Whenever any of them change,\n * schedule an update.\n */\n useIsomorphicLayoutEffect(() => {\n const scheduleUpdate = () => frame.update(updateValue, false, true);\n const subscriptions = values.map((v) => v.on(\"change\", scheduleUpdate));\n return () => {\n subscriptions.forEach((unsubscribe) => unsubscribe());\n cancelFrame(updateValue);\n };\n });\n return value;\n}\n\nexport { useCombineMotionValues };\n","import { transform } from '../utils/transform.mjs';\nimport { useCombineMotionValues } from './use-combine-values.mjs';\nimport { useConstant } from '../utils/use-constant.mjs';\nimport { useComputed } from './use-computed.mjs';\n\nfunction useTransform(input, inputRangeOrTransformer, outputRange, options) {\n if (typeof input === \"function\") {\n return useComputed(input);\n }\n const transformer = typeof inputRangeOrTransformer === \"function\"\n ? inputRangeOrTransformer\n : transform(inputRangeOrTransformer, outputRange, options);\n return Array.isArray(input)\n ? useListTransform(input, transformer)\n : useListTransform([input], ([latest]) => transformer(latest));\n}\nfunction useListTransform(values, transformer) {\n const latest = useConstant(() => []);\n return useCombineMotionValues(values, () => {\n latest.length = 0;\n const numValues = values.length;\n for (let i = 0; i < numValues; i++) {\n latest[i] = values[i].get();\n }\n return transformer(latest);\n });\n}\n\nexport { useTransform };\n","import { collectMotionValues } from './index.mjs';\nimport { useCombineMotionValues } from './use-combine-values.mjs';\n\nfunction useComputed(compute) {\n /**\n * Open session of collectMotionValues. Any MotionValue that calls get()\n * will be saved into this array.\n */\n collectMotionValues.current = [];\n compute();\n const value = useCombineMotionValues(collectMotionValues.current, compute);\n /**\n * Synchronously close session of collectMotionValues.\n */\n collectMotionValues.current = undefined;\n return value;\n}\n\nexport { useComputed };\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","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","motion","div","style","opacity","playing","onProgress","_ref2","played","onStart","onEnded","onPause","onPlay","onReady","target","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","Icon","name","colorClassName","size","AnimatePresence","initial","animate","exit","Image","useStickyOffset","stickyOffsetHeight","setStickyOffsetHeight","isMobile","useMediaQuery","stickyNavPosition","useStickyNavPositionStore","state","productNavigation","document","getElementById","siteNotifications","isStickyNavOnTop","StickyNavPosition","Top","Bottom","productNavigationHeight","getBoundingClientRect","siteNotificationsHeight","cardTitleLargeText","cardTitleSmallText","cardSubtitle","cardFootnote","showCardModule","text","scrollableRef","videoContainerRef","finishedScaling","setFinishedScaling","videoPlaying","setVideoPlaying","mediaButtonFocusedByTab","setMediaButtonFocusedByTab","stickyRef","viewportHeight","useResizeObserver","bottomDetailsRef","bottomDetailsHeight","isTablet","stickyOffset","isPreview","usePreviewMode","bottomDetailsTranslateY","computedPaddingBottom","scrollYProgress","useScroll","offset","smoothScrollProgress","useSpring","stiffness","damping","mass","left","useTransform","scale","useMotionValueEvent","value","leftPercentageScrolledValue","slice","paddingBottom","top","transition","ease","InViewVideo","e","matches","y","duration","Hue","Fragment","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","setStickyNavPosition","navPosition","eventPayload","dataLayer","push","ariaLabelsFromStore","useAriaLabelsStore","getCurrentBreakpoint","breakpoints","innerWidth","screen","setScreen","resizeHandler","useCallback","addEventListener","removeEventListener","minWidth","isSmallerThan","setIsSmallerThan","handler","isDesiredWidth","setIsPreview","self","observerRef","resizeParameters","setResizeParameters","clientWidth","clientHeight","scrollWidth","scrollHeight","handleResize","entries","Array","isArray","entry","contentRect","node","current","disconnect","undefined","ResizeObserver","observe","__assign","this","Object","assign","t","s","i","n","arguments","p","prototype","hasOwnProperty","call","apply","__rest","indexOf","getOwnPropertySymbols","propertyIsEnumerable","defineProperty","exports","iconList","react_1","iconSet","icons","map","icon","properties","_a","disableFill","removeInlineStyle","native","SvgComponent","PathComponent","props","currentIcon","find","item","initialStyle","display","stroke","fill","flexDirection","flexWrap","comptuedStyle","_b","viewBox","concat","paths","path","index","attrs","pathProps","d","key","module","createStore","createState","listeners","Set","setState","partial","replace","nextState","previousState","forEach","listener","getState","api","subscribe","selector","equalityFn","is","console","warn","currentSlice","listenerToAdd","nextSlice","previousSlice","add","delete","subscribeWithSelector","destroy","clear","useIsomorphicLayoutEffect","navigator","test","userAgent","useLayoutEffect","useStore","forceUpdate","useReducer","c","stateRef","selectorRef","equalityFnRef","erroredRef","currentSliceRef","newStateSlice","hasNewStateSlice","stateBeforeSubscriptionRef","nextStateSlice","error","unsubscribe","sliceToReturn","useDebugValue","Symbol","iterator","items","next","done","shift","thresholds","some","all","root","margin","once","isInView","setInView","options","elementOrSelector","rootMargin","elements","activeIntersections","WeakMap","observer","IntersectionObserver","onEnd","get","isIntersecting","Boolean","newOnEnd","unobserve","threshold","element","useMotionValue","isStatic","useContext","setLatest","on","source","activeSpringAnimation","stopAnimation","stop","useInsertionEffect","attach","v","keyframes","velocity","getVelocity","restDelta","restSpeed","onUpdate","isProcessing","delta","performance","now","timestamp","time","JSON","stringify","parseFloat","getMixer","mix","isCustomValueType","useCombineMotionValues","values","combineValues","updateValue","scheduleUpdate","update","subscriptions","input","inputRangeOrTransformer","outputRange","compute","useComputed","transformer","args","useImmediate","argOffset","inputValue","inputRange","interpolator","interpolate","mixer","transform","useListTransform","latest","numValues"],"sourceRoot":""}