{"version":3,"file":"GobiSectionBlock.chunk.90a26d6a41af9372943c.js","mappings":"mXACA,EAA4Y,uB,wNC8B5Y,MAAMA,EAEFC,IACA,MAAM,aAAEC,EAAY,QAAEC,GAAYF,EAElC,OACIG,EAAAA,cAAAA,EAAAA,SAAA,KACIA,EAAAA,cAAA,MAAIC,UDrCsD,wBCqCnBH,GACvCE,EAAAA,cAACE,EAAAA,EAAO,CAACD,UAAU,wCAAwCE,KAAMJ,IAClE,EAIEK,EAA0CP,IACnD,MAAMQ,GAAkBC,EAAAA,EAAAA,MAClB,GAAEC,EAAE,MAAEC,EAAK,QAAET,EAAO,KAAEU,EAAI,cAAEC,EAAa,QAAEC,EAAO,MAAEC,EAAQP,GAAoBR,EAqBtF,OACIG,EAAAA,cAACa,EAAAA,EAAW,CAACN,GAAIA,EAAIN,UDnEC,wBCoEjBO,GAASR,EAAAA,cAACc,EAAAA,EAAkB,CAACC,QAASP,EAAOP,UDpE2C,yBCqEzFD,EAAAA,cAAA,OAAKC,UDrEqH,wBCsEtHD,EAAAA,cAAA,OAAKC,UDtEyJ,wBCuEzJF,GACGC,EAAAA,cAACE,EAAAA,EAAO,CACJD,UAAWe,IDzEsP,uBCyEzN,kBAAmB,0BAC3Db,KAAMJ,IAGbY,GACGX,EAAAA,cAACiB,EAAAA,EAAW,CACRnB,aAAca,EAAQb,aACtBoB,eACIlB,EAAAA,cAACJ,EAAyB,CACtBG,QAASY,EAAQZ,QACjBD,aAAca,EAAQb,eAG9BqB,WAAYR,EAAQQ,aAEnBC,GACGpB,EAAAA,cAACqB,EAAAA,EAAMC,EAAA,CACHC,KAAMC,EAAAA,EAAWC,MACjBxB,UD3FgS,uBC4FhSO,MAAOG,EAAQe,WACXN,GAEJpB,EAAAA,cAAA,QAAMC,UAAU,kBAAkBU,EAAQe,WAC1C1B,EAAAA,cAAC2B,EAAAA,EAAO,CAACC,SAAS,cAAc3B,UDhGqS,6BCsGzVD,EAAAA,cAAA,OAAKC,UDtG4L,yBCuGjMD,EAAAA,cAAA,OAAKC,UDvGqO,wBCgD9OQ,EACOT,EAAAA,cAAC6B,EAAAA,EAASP,EAAA,GAAKb,EAAI,CAAEG,MAAOA,EAAOX,UAAW6B,KAGrDpB,EAEIV,EAAAA,cAAC+B,EAAAA,EAAOT,EAAA,GACAZ,EAAa,CACjBsB,QAASC,EAAAA,EAAgBC,SACzBtB,MAAOA,EACPX,UAAW6B,KAKhB9B,EAAAA,cAACmC,EAAAA,EAAkB,CAACvB,MAAOA,EAAOX,UAAW6B,MA0CtC,ECnGTM,EAAwDvC,IACjE,MAAM,GAAEU,EAAE,MAAEC,EAAK,QAAET,EAAO,YAAEsC,EAAW,cAAE3B,EAAa,aAAE4B,EAAY,eAAEpB,EAAc,aAAEqB,GAAiB1C,EAqBvG,OACIG,EAAAA,cAACI,EAAW,CACRG,GAAIA,EACJC,MAAOA,EACPT,QAASA,EACTY,QAvBJ2B,GAAgBpB,EACV,CACIpB,aAAcwC,EACdvC,QAASmB,EACTQ,UAAWa,EAAaC,YACxBrB,WAAYoB,EAAaE,mBAE7BC,EAiBFjC,KAdJ4B,EACM,CACIM,QAASN,EACTX,UAAWa,EAAaK,WACxBC,aAAcN,EAAaO,wBAE/BJ,EASFhC,cAAeA,GACjB,C,uEC7BH,MAAMG,EAAmEhB,IAC5E,MAAM,GAAEU,EAAE,UAAEN,EAAS,SAAE8C,GAAalD,EAEpC,OACIG,EAAAA,cAAA,WAASO,GAAIA,EAAIN,UAAWA,GACxBD,EAAAA,cAAA,OAAKC,UCZS,wBDaVD,EAAAA,cAAA,OAAKC,UCboC,wBDaV8C,IAE7B,C,sGELX,MAAMjC,EAAwDjB,IACjE,MAAM,QAAEkB,EAAO,UAAEd,GAAcJ,EAE/B,OAAOG,EAAAA,cAACgD,EAAAA,EAAW,CAACzB,KAAK,KAAKtB,UAAWe,ICbR,uBDa8Cf,GAAYE,KAAMY,GAAW,C,uDEZzG,MAAMkC,EAGT,gBAAcC,CAAUC,EAAyBC,GAC7C,MAAMC,EAAWC,KAAKC,2BAA2BH,GAE7CC,EACAA,EAASG,KAAKL,GAEdG,KAAKC,2BAA2BH,GAAa,CAACD,EAEtD,CAEA,kBAAcM,CAAYN,EAAyBC,GAC/C,MAAMC,EAAWC,KAAKC,2BAA2BH,GAE7CC,IACAC,KAAKC,2BAA2BH,GAAaC,EAASK,QAAOC,GAAKA,IAAMR,IAEhF,CAEA,cAAcS,CAAQC,GACDP,KAAKQ,mBAAmBD,EAAQtD,IAExCwD,SAAQZ,GAAWA,EAAQa,OAAOH,IAC/C,CAEA,sBAAcI,CAAgBJ,EAAkBK,GAC5CC,YAAW,IAAMlB,EAAcW,QAAQC,IAAUK,EACrD,CAEA,yBAAeJ,CAAmBV,GAC9B,OAAOE,KAAKC,2BAA2BH,IAAc,EACzD,EAjCSH,EACMM,2BAAiE,CAAC,C,wDCH9E,MAAea,EACRC,WAAAA,CAA4B9D,GAAY,KAAZA,GAAAA,CAAa,EAGhD,MAAe+D,UAAcF,G,2FCHpC,EAA+G,uBCU/G,MAAMG,EAAyE1E,IAC3E,MAAM,QAAE2E,EAAO,SAAEzB,GAAalD,EAE9B,OACIG,EAAAA,cAAA,QAAMC,UDdgI,uBCcvGwE,MAAO,CAAEC,QAASF,EAAU,QAAU,SAChEzB,EACE,EAIF4B,EAA+E3E,EAAAA,MAAWH,IACnG,MAAM,MAAE+E,GAAQ,EAAI,MAAEC,EAAK,OAAEC,GAAS,EAAI,SAAE/B,GAAalD,EAEnDkF,EAAUH,EAAQL,EAAevE,EAAAA,SACjCgF,EAAeJ,EAAQ,CAAEJ,QAASM,GAAW,CAAC,EAEpD,OACI9E,EAAAA,cAAC+E,EAAYC,EACThF,EAAAA,cAAA,QACIyE,MAAOK,OAASpC,EAAY,CAAEgC,QAAS,QACvCzE,UAAWe,ID9BH,uBC8B4B6D,GAAS/C,KAEhDiB,GACG/C,EAAAA,cAAA,QAAMC,UAAWe,IDjC+I,uBCiCnH6D,GAAS/C,IAA0BiB,GAE9E,G,8zBCSX,MAAM1B,EAASrB,EAAAA,YAAiD,CAACH,EAAOoF,KAC3E,MAAM,SAAElC,EAAQ,MAAEnC,GAA+Bf,EAArBqF,EAAgBC,EAAKtF,EAAKuF,IAChD,KAAE7D,GAAS2D,EAEjB,OAAI3D,GAAQA,IAASC,EAAAA,EAAWC,MAExBzB,EAAAA,cAACqF,EAAY/D,EAAA,GAAK4D,EAAgB,CAAEtE,MAAOA,EAAOqE,IAAKA,IAClDlC,GAMT/C,EAAAA,cAACsF,EAAShE,EAAA,GAAK4D,EAAgB,CAAED,IAAKA,IACjClC,EACO,IAMduC,EAAYtF,EAAAA,YAAoD,CAACH,EAAOoF,KAC1E,MAAM,UAAEhF,EAAS,SAAE8C,EAAQ,KAAEwC,EAAI,KAAEC,EAAI,KAAEjE,EAAI,SAAEkE,EAAW,UAA4B5F,EAAf6F,EAAUP,EAAKtF,EAAK8F,GAU3F,OACI3F,EAAAA,cAAA,SAAAsB,EAAA,GAAYoE,EAAU,CAAEnE,KAAMkE,EAAUR,IAAKA,EAAKhF,UARlDe,IACIO,GAAQO,EAAAA,EAAO,YAAD8D,OAAarE,IAC3BiE,GAAQ1D,EAAAA,EAAO,YAAD8D,OAAaJ,IAC3BD,GAAQzD,EAAAA,EAAO,YAAD8D,OAAaL,IAC3BtF,KAKC8C,EACI,IAIXsC,EAAerF,EAAAA,YAAiD,CAACH,EAAOoF,KAC1E,MAAM5E,GAAkBC,EAAAA,EAAAA,MAClB,SAAEyC,EAAQ,UAAE9C,EAAS,MAAEW,EAAQP,GAAwCR,EAApBgG,EAAeV,EAAKtF,EAAKiG,IAE5E,cAAEC,EAAa,mBAAEC,GAAuBpF,EAE9C,OACIZ,EAAAA,cAACsF,EAAShE,EAAA,GACFuE,EAAe,CACnB5F,UAAWe,IACP+E,GAAiBjE,EAAAA,EAAO,qBACxBkE,GAAsBlE,EAAAA,EAAO,oBAC7B7B,GAEJgF,IAAKA,IAEJlC,EACO,G,4TC3Fb,MAAM7C,EAAkCL,IAC3C,MAAM,KAAEM,EAAI,UAAEF,GAA+BJ,EAAjBoG,E,6WAAYd,CAAKtF,EAAKuF,GAElD,OAAOpF,EAAAA,cAAA,MAAAsB,EAAA,GAAS2E,EAAY,CAAEhG,UAAWA,EAAWiG,wBAAyB,CAAEC,OAAQhG,EAAKiG,SAAW,C,uECHpG,MAAMpD,EAA0CnD,IACnD,MAAM,KAAE0B,EAAI,KAAEpB,EAAI,GAAEI,EAAE,UAAEN,GAAcJ,EAEtC,OAAOG,EAAAA,cAAoBuB,EAAM,CAAEtB,YAAWM,KAAI2F,wBAAyB,CAAEC,OAAQhG,EAAKiG,QAAU,C,imCCJxG,SAASC,EACLC,EACAC,GAEA,OAAQA,EAAOhF,MACX,IAAK,WACD,OAAAiF,EAAAA,EAAA,GACOF,GAAK,IACRG,KAAMF,EAAOG,QACbC,SAAS,EACTC,WAAOlE,IAEf,IAAK,YACD,OAAA8D,EAAAA,EAAA,GACOF,GAAK,IACRK,SAAS,EACTF,UAAM/D,EACNkE,MAAOL,EAAOG,UAEtB,IAAK,gBACD,OAAAF,EAAAA,EAAA,GACOF,GAAK,IACRM,WAAOlE,EACPiE,SAAS,EACTE,eAAe,IAEvB,QACI,OAAOP,EAEnB,CAEO,SAASQ,EACZjH,GAEA,MAAM,IAAEkH,EAAG,OAAEC,EAAM,OAAEC,EAAS,MAAK,kBAAEC,GAAoB,EAAI,aAAEC,EAAe,IAAG,QAAEC,EAAU,GAAMvH,IAE5F,KAAE4G,EAAI,QAAEE,EAAO,MAAEC,EAAK,cAAEC,GAAiBQ,GAAYrH,EAAAA,WAE1DqG,EAAS,CACPI,UAAM/D,EACNiE,SAAS,EACTC,WAAOlE,EACPmE,eAAe,IAGbS,GAAgBC,EAAAA,EAAAA,GAAY,CAAER,MAAKE,SAAQD,WAC3CQ,GAAsBC,EAAAA,EAAAA,IAmC5B,WACIC,EAAAA,EACKC,QAAmD,CAChDZ,MACAE,SACAD,SACAI,UACAQ,YAAa,IAAIC,EAAAA,EAAMC,aAAYC,IAC/BH,EAAYI,QAAUD,CAAK,MAGlCE,MAAKC,IACFN,EAAYI,aAAUtF,EACtB2E,EAAS,CAAE9F,KAAM,WAAYmF,QAASwB,EAASzB,MAAO,IAEzD0B,OAAMC,KACCC,EAAAA,EAAAA,IAASD,KAIbf,EAAS,CAAE9F,KAAM,YAAamF,QAAS0B,EAAEvE,UAEzCyE,QAAQ1B,MAAMwB,GAAE,GAE5B,GA3DiDjB,GAE3CS,EAAc5H,EAAAA,SAwBpB,SAASuI,IACDX,EAAYI,SACZJ,EAAYI,UAGhBX,EAAS,CAAE9F,KAAM,kBACjBiG,GACJ,CA4BA,OAzDAxH,EAAAA,WAAgB,KACRkH,GACAqB,IAGG,KACCX,EAAYI,SACZJ,EAAYI,SAChB,IAEL,IAEHhI,EAAAA,WAAgB,OACSsH,GACfA,EAAcP,MAAQA,GAAOO,EAAcL,SAAWA,IAAWuB,EAAAA,EAAAA,IAAYlB,EAAcN,OAAQA,KAGnFH,IAAkBK,GACpCqB,GACJ,GACD,CAACxB,EAAKE,EAAQD,EAAQH,EAAeK,IAqCjC,CACHT,OACAE,UACAC,QAER,C,6FCtHA,MAAM6B,EAAoB,mBAEbC,EAAsD7I,IAC/D,MAAM,SAAEkD,GAAalD,EAEf8I,EAAkBC,SAASC,eAAeJ,IACzCK,EAAiBC,GAAsB/I,EAAAA,UAAe,GAE7D,IAAK2I,EACD,MAAM,IAAIK,MAAM,oCAADpD,OAAqC6C,EAAiB,2BAGzE,MAAMQ,EAAmBjJ,EAAAA,OAAoC,MAExDiJ,EAAiBjB,UAClBiB,EAAiBjB,QAAUY,SAASM,cAAc,QAGtDlJ,EAAAA,WAAgB,KACRiJ,EAAiBjB,UACjBW,EAAgBQ,YAAYF,EAAiBjB,SAC7Ce,GAAmB,IAGhB,KACCE,EAAiBjB,UACjBW,EAAgBS,YAAYH,EAAiBjB,SAC7Ce,GAAmB,GACvB,IAEL,CAACJ,IAEJ,MAAMU,EAAgBP,GAAmB/F,EAEzC,OAAOuG,EAAAA,EAAAA,cAAaD,EAAeJ,EAAiBjB,QAAQ,ECjCnDuB,EAA4C1J,IACrD,MAAM,SAAEkD,GAAalD,EAGrB,OAFkB2J,EAAAA,EAAAA,KAECxJ,EAAAA,cAAC0I,EAAgB,KAAE3F,GAA+B,IAAI,C,wGCMtE,MAAMwB,EAAsC1E,IAC/C,MAAM,kBAAE4J,EAAiB,eAAEC,EAAc,SAAE3G,EAAQ,MAAE4G,EAAK,wBAAEC,GAA4B/J,GAElF,2BAAEgK,EAA0B,iBAAEC,GCdjC,SAAgDH,EAAmBI,GACtE,MAAMC,GAAWC,EAAAA,EAAAA,GAAyBN,GACpCO,EAAiClK,EAAAA,QAAa,GAepD,OAbAA,EAAAA,WAAgB,KACR+J,IACAG,EAA+BlC,SAAU,EAC7C,GACD,CAAC+B,IASG,CAAEF,2BAP0BA,KAAA,IAAAM,EAAA,OAAMD,EAA+BlC,UAA2B,QAApBmC,EAAIH,EAAShC,eAAO,IAAAmC,OAAA,EAAhBA,EAAAC,KAAAJ,GAAoB,EAOlEF,iBALZA,KACrBI,EAA+BlC,SAAU,EACzC2B,GAAO,EAIf,CDJ6DU,CACrDV,EACAF,GAGJ,OACIzJ,EAAAA,cAAAA,EAAAA,SAAA,KACIA,EAAAA,cAACsK,EAAAA,EAAU,CAACC,SAAUb,EAAgBE,wBAAyBA,IAC/D5J,EAAAA,cAACwK,EAAAA,UAAS,CACN1F,OAAQ2E,EACRgB,iBAAkB,CACdC,yBAAyB,EACzBC,mBAAmB,EACnBC,aAAcf,IAOlB7J,EAAAA,cAAA,OAAK6K,UAAW,GAAI9H,EAAS+G,KAElC,C,0HEvCJ,MAAMgB,EAAyBA,CAACC,EAAiBC,IAAkB,GAALpF,OAAQmF,EAAO,WAAAnF,OAAUoF,GCuCjFjJ,EAA2DlC,IACpE,MAAM,IAAEkH,EAAG,IAAEkE,EAAG,WAAEC,EAAU,QAAElJ,EAAO,UAAE/B,EAAS,MAAEW,EAAQuK,EAAAA,GAAkB,YAAEC,GAAc,GAASvL,GAE/F,mBAAEmG,GAAuBpF,EA6B/B,OACIZ,EAAAA,cAAA,OAAKC,UAAWe,ICvEE,uBDuEyBgF,GCvEiB,uBDuEiC/F,IA5B3EoL,EAACC,EAAoBC,EAAoBC,KAC3D,MAAOC,GAAcD,EAAeE,QAC9BC,EAAcF,EAAWG,MAAMC,KAAK,MACpCC,EAAgBL,EAAWM,cAC5BC,KAAIhB,GAAS,GAAJpF,OAAOkF,EAAuBQ,EAAYN,GAAM,KAAApF,OAAIoF,EAAK,OAClEa,KAAK,MASV,OACI7L,EAAAA,cAAA,eACIA,EAAAA,cAAA,UAAQ4L,MAAOD,EAAaM,OAAQH,IACpC9L,EAAAA,cAAA,OACIkM,IAAKpB,EAAuBQ,EAAYE,EAAeW,cACvDlB,IAAKM,EACL9G,MAAOyG,GAAc,CAAEkB,eAbdC,KACjB,MAAMC,EAAYC,IAAMF,EAAMG,EAAG,EAAG,GAC9BC,EAAYF,IAAMF,EAAMK,EAAG,EAAG,GAEpC,MAAO,GAAP9G,OAAsB,IAAZ0G,EAAe,MAAA1G,OAAiB,IAAZ6G,EAAe,MASEE,CAAYzB,IACnDvE,QAASyE,EAAc,OAAS,UAE9B,EAMTC,CAActE,EAAKkE,EAAKjJ,GACvB,C,wDExEP,MAAMC,GAAAA,EACO2K,oBAAsC,CAClDT,aAAc,IACdT,QAAS,CACL,CACIK,cAAe,CAAC,IAAK,IAAK,IAAK,KAC/BH,MAAO,CAAC,4BAA6B,0BAA2B,YANnE3J,EAWO4K,mBAAqC,CACjDV,aAAc,IACdT,QAAS,CACL,CACIK,cAAe,CAAC,IAAK,IAAK,KAC1BH,MAAO,CAAC,0BAA2B,YAhBtC3J,EAqBO6K,kBAAoC,CAChDX,aAAc,IACdT,QAAS,CACL,CACIK,cAAe,CAAC,IAAK,IAAK,IAAK,MAC/BH,MAAO,CAAC,0BAA2B,YA1BtC3J,EA+BO8K,UAA4B,CACxCZ,aAAc,KACdT,QAAS,CACL,CACIK,cAAe,CAAC,IAAK,IAAK,KAAM,KAAM,MACtCH,MAAO,CAAC,YApCX3J,EAyCO+K,WAA6B,CACzCb,aAAc,KACdT,QAAS,CACL,CACIK,cAAe,CAAC,IAAK,IAAK,MAC1BH,MAAO,CAAC,6BAA8B,YA9CzC3J,EAmDOC,SAA2B,CACvCiK,aAAc,IACdT,QAAS,CACL,CACIK,cAAe,CAAC,IAAK,IAAK,MAC1BH,MAAO,CAAC,2BAA4B,+BAxDvC3J,EA6DOgL,QAA0B,CACtCd,aAAc,IACdT,QAAS,CACL,CACIK,cAAe,CAAC,IAAK,KACrBH,MAAO,CAAC,2BAA4B,6BAlEvC3J,EAuEOiL,YAA8B,CAC1Cf,aAAc,KACdT,QAAS,CACL,CACIK,cAAe,CAAC,IAAK,IAAK,MAC1BH,MAAO,CAAC,6BAA8B,2BAA4B,YA5ErE3J,EAiFOkL,mBAAqC,CACjDhB,aAAc,IACdT,QAAS,CACL,CACIK,cAAe,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnDH,MAAO,CAAC,0BAA2B,8BAtFtC3J,EA2FOmL,kBAAoC,CAChDjB,aAAc,IACdT,QAAS,CACL,CACIK,cAAe,CAAC,IAAK,IAAK,KAC1BH,MAAO,CAAC,2BAA4B,2BAA4B,YAhGnE3J,EAqGOoL,oBAAsC,CAClDlB,aAAc,IACdT,QAAS,CACL,CACIK,cAAe,CAAC,IAAK,KACrBH,MAAO,CAAC,2BAA4B,+BA1GvC3J,EA+GOqL,sBAAwC,CACpDnB,aAAc,IACdT,QAAS,CACL,CACIK,cAAe,CAAC,KAChBH,MAAO,CAAC,0BAA2B,+BApHtC3J,EAyHOsL,mBAAqC,CACjDpB,aAAc,IACdT,QAAS,CACL,CACIK,cAAe,CAAC,IAAK,IAAK,KAAM,MAChCH,MAAO,CAAC,0BAA2B,W,qGC/HnD,GAAgB,YAAc,uBAAuB,KAAO,uBAAuB,mBAAmB,uBAAuB,iBAAiB,uBAAuB,mBAAmB,wBCajL,MAAMzJ,EAAiFtC,IAC1F,MAAM,UAAEI,EAAS,qBAAEuN,EAAoB,MAAE5M,EAAQuK,EAAAA,GAAkB,QAAEsC,EAAU,WAAc5N,GAEvF,mBAAEmG,GAAuBpF,EAE/B,OACIZ,EAAAA,cAAA,OACIC,UAAWe,IACPc,EAAO,YAAD8D,OAAa6H,IACnBzH,GAAsBlE,EAAO,oBAC7B7B,IAGJD,EAAAA,cAAA,OAAKC,UAAWe,IAAWc,EAAO4L,YAAaF,IAC3CxN,EAAAA,cAAA,OAAKC,UAAW6B,EAAO6L,QAEzB,C,uEC5BP,SAASpG,EAAenB,GAC3B,MAAMnB,EAAMjF,EAAAA,SAKZ,OAJAA,EAAAA,WAAgB,KACZiF,EAAI+C,QAAU5B,CAAK,IAGhBnB,EAAI+C,OACf,C,8LCTO,MCyBMnG,EAAsChC,IAC/C,MAAMQ,GAAkBC,EAAAA,EAAAA,MAClB,QAAEqC,EAAO,UAAEjB,EAAS,aAAEmB,EAAY,UAAE5C,EAAS,MAAEW,EAAQP,GAAoBR,GAE1EkK,EAAU6D,GAAe5N,EAAAA,UAAe,IAEzC,mBAAEgG,GAAuBpF,EAEzBiN,EAAYA,KACV9D,IAIJ6D,GAAY,IAEZE,EAAAA,EAAAA,WAAUnL,EAAS,CACfoL,GAAI,CACApE,MAAOA,IAAMiE,GAAY,MAEpB,GAGX,KAAEnH,EAAI,QAAEE,EAAO,MAAEC,IAAUE,EAAAA,EAAAA,GAAsC,CACnEC,IAAK,GAAFnB,ODhDe,6CCgDA,KAAAA,OAAIjD,KAkC1B,OACI3C,EAAAA,cAAA,OAAKC,UAAWe,IClFI,uBDkFyBgF,GClFyO,uBDkFvL/F,IAhC7E+N,MAClB,GAAIpH,EACA,OACI5G,EAAAA,cAAA,OAAKC,UCrDsJ,wBDsDvJD,EAAAA,cAAC2B,EAAAA,EAAO,CAACC,SAAS,YAAY3B,UCtD4J,yBDuD1LD,EAAAA,cAAA,QAAMC,UCvD0N,wBDuDzL4C,IAKnD,GAAI8D,IAAYF,EACZ,OAAOzG,EAAAA,cAAC2E,EAAAA,EAAiB,CAACG,QAAM,EAACD,OAAK,IAG1C,MAAM,UAAEoJ,EAAS,MAAEzN,GAAUiG,EAE7B,OACIzG,EAAAA,cAAAA,EAAAA,SAAA,KACIA,EAAAA,cAAC+B,EAAAA,EAAO,CAACC,QAASC,EAAAA,EAAgBC,SAAU6E,IAAKkH,EAAWhD,IAAKzK,IACjER,EAAAA,cAAA,WACIA,EAAAA,cAAA,OAAKC,UCtEwC,wBDuEzCD,EAAAA,cAAC2B,EAAAA,EAAO,CAACC,SAAS,OAAO3B,UCvE8C,0BDyE3ED,EAAAA,cAACqB,EAAAA,EAAM,CAAC6M,QAASL,EAAWtM,KAAMC,EAAAA,EAAWC,MAAOxB,UCzE2D,wBD0E3GD,EAAAA,cAAA,QAAMC,UAAU,kBAAkByB,KAG3C,EAMFsM,GACC,C,yNE/Dd,MAAMG,EAAkDtO,IACpD,MAAM,SAAEkD,GAAalD,EAErB,OAAOG,EAAAA,cAAA,OAAKyE,MAAO,CAAEC,QAAS,SAAW3B,EAAe,EAG/CqL,EAA2DvO,IACpE,MAAM,GAAEU,EAAE,aAAET,EAAY,SAAEuO,EAAQ,MAAE1E,EAAK,WAAExI,EAAU,SAAE4B,EAAQ,UAAE9C,GAAcJ,GAExEyO,EAAuBC,GAA4BvO,EAAAA,UAAe,GACnEwO,EAAkBxO,EAAAA,OAA6B,MAC/CyO,EAAgBzO,EAAAA,OAA6B,MAC7C0O,GAAYlF,EAAAA,EAAAA,KAEZmF,EAAmBN,GAAYC,EAK/BM,EAAcD,OAAmBjM,EAAY,OAE7CmM,EAAUC,IAAS,iBAKnBC,EAAiBL,EAAYnF,EAAAA,EAAS4E,EAE5C,OACInO,EAAAA,cAAC+O,EAAc,KACX/O,EAAAA,cAAA,OACIC,UAAWe,ICpDD,uBDoD4Bf,GACtCwE,MAAO,CAAEC,QAASkK,GAClBrO,GAAIA,EACJyO,KAAK,SACL,aAAW,OACX,kBAAiBH,GAEjB7O,EAAAA,cAACiP,EAAAA,EAAa,CAACC,QAAST,EAAeU,GAAId,EAAUe,QAAM,EAAChI,QAASiI,EAAAA,GACjErP,EAAAA,cAAA,OAAKiF,IAAKwJ,EAAexO,UC5DiB,0BD8D9CD,EAAAA,cAACiP,EAAAA,EAAa,CACVC,QAASV,EACTW,GAAId,EACJe,QAAM,EACNhI,QAASiI,EAAAA,EACTC,QAASA,IAAMf,GAAyB,GACxCgB,SAAUA,IAAMhB,GAAyB,IAEzCvO,EAAAA,cAACuE,EAAAA,EAAY,CACToF,MAAOA,EACPF,kBAAmB4E,EACnB3E,eAAgBiF,EAChB/E,yBAAuB,IAEtBE,GACG9J,EAAAA,cAAA,OAAKiF,IAAKuJ,EAAiBvO,UC7EsC,wBD8E7DD,EAAAA,cAAA,OAAKC,UC9E2F,wBD+E5FD,EAAAA,cAACqB,EAAAA,EAAM,CACH6M,QAASpE,EACT7J,UCjF8J,uBDkF9JsB,KAAMC,EAAAA,EAAWC,MACjBjB,MAAOW,GAEPnB,EAAAA,cAAC2B,EAAAA,EAAO,CAACC,SAAS,iBAClB5B,EAAAA,cAAA,QAAMC,UAAU,kBAAkBkB,KAG1CnB,EAAAA,cAAA,OAAKC,UCzF4H,wBD0F7HD,EAAAA,cAAA,QAAMO,GAAIsO,EAAS5O,UAAU,kBACxBH,GAEJiD,QAOZ,E,wPE5ElB,MAAM9B,EAA0CpB,IACnD,MAAM,eAAEqB,EAAc,SAAE6B,GAA2BlD,EAAd2P,E,6WAASrK,CAAKtF,EAAKuF,IAEjDiJ,EAAUoB,GAAezP,EAAAA,UAAe,GAEzC0P,EAAYZ,IAAS,YAErB1N,EAAgD,CAClD8M,QAASA,IAAMuB,GAAY,GAC3B,gBAAiBpB,EACjB,gBAAiBqB,EACjB,gBAAiB,UAGf/F,EAAQA,IAAM8F,GAAY,GAEhC,OACIzP,EAAAA,cAAAA,EAAAA,SAAA,KACK+C,EAAS3B,GACVpB,EAAAA,cAACoO,EAAO9M,EAAA,CAACf,GAAImP,EAAWrB,SAAUA,EAAU1E,MAAOA,GAAW6F,GACzDG,IAAWzO,GAAkBA,EAAeyI,EAAO0E,GAAYnN,GAErE,C,wDC9CJ,MAAMmO,EAAsB,G,sGCG5B,SAAS5H,EAAYmI,EAAsBzI,GAC9C,MAAM0I,GAAa5F,EAAAA,EAAAA,GAAyB2F,GAE5C,OAAO5P,EAAAA,YACH8P,KAAS,SAAAC,EAAA,OAAwB,QAAxBA,EAAMF,EAAW7H,eAAO,IAAA+H,OAAA,EAAlBA,EAAA3F,KAAAyF,EAAsB,GAAE1I,GACvC,CAAC0I,GAET,C,uECTO,MAAMrG,EAAeA,KACxB,MAAOkF,EAAWsB,IAAgBC,EAAAA,EAAAA,WAAS,GAM3C,OAJAC,EAAAA,EAAAA,YAAU,KACNF,GAAa,EAAK,GACnB,IAEItB,CAAS,C,uECPb,SAASzE,EAA4BkG,GACxC,MAAMC,GAAcC,EAAAA,EAAAA,QAAUF,GAM9B,OAJAD,EAAAA,EAAAA,YAAU,KACNE,EAAYpI,QAAUmI,CAAQ,GAC/B,CAACA,IAEGC,CACX,C,4FCAA,MAAME,ECTgC,uBDUhCC,ECVqF,uBDY9EjG,EAAwCzK,IACjD,MAAM,SAAE0K,EAAQ,wBAAEX,GAA4B/J,GAEvC2Q,EAAgBC,GAAqBzQ,EAAAA,cAAmC0C,GACzEgO,EAAoB1Q,EAAAA,SAwE1B,OAtEAA,EAAAA,WAAgB,KACZ0Q,EAAkB1I,QAAUwI,CAAc,GAC3C,CAACA,IAEJxQ,EAAAA,WAAgB,KACZ,MAAM,KAAE2Q,GAAS/H,SACXgI,EAAUC,OAAOD,SAAWC,OAAOC,YA8BnCC,EAAUC,IACZL,EAAKM,UAAUC,OAAOZ,GACtBK,EAAKlM,MAAM0M,IAAM,GAEbvH,IACA+G,EAAKM,UAAUC,OAAOX,GACtBI,EAAKlM,MAAM2M,aAAe,IAG9BnO,EAAAA,EAAcW,QAAQ,IAAIyN,EAAAA,EAAkB,CAAE9G,UAAU,KAExDsG,OAAOS,SAAS,EAAGN,EAAS,EAgBhC,OAbmBzG,IAAaoG,EAAKM,UAAUM,SAASjB,IA1C1CU,KAEV,MAAMQ,EAAiBX,OAAOY,WAAad,EAAKe,YAEhDf,EAAKM,UAAUU,IAAIrB,GACnBK,EAAKlM,MAAM0M,IAAM,IAAHvL,OAAOoL,EAAQ,MAEzBpH,GACA+G,EAAKM,UAAUU,IAAIpB,GACnBI,EAAKlM,MAAM2M,aAAe,GAAHxL,OAAM4L,EAAc,MAE3CvO,EAAAA,EAAcW,QACV,IAAIyN,EAAAA,EAAkB,CAClB9G,UAAU,EACVqH,oBAAoB,EACpBJ,qBAIRvO,EAAAA,EAAcW,QACV,IAAIyN,EAAAA,EAAkB,CAClB9G,UAAU,EACVqH,oBAAoB,IAGhC,EAoBAC,CAAKjB,GACLH,EAAkBG,UAEKlO,IAAnB8N,GACAO,EAAOP,GAGXC,OAAkB/N,IAGf,UAC+BA,IAA9BgO,EAAkB1I,SAClB+I,EAAOL,EAAkB1I,QAC7B,CACH,GACF,CAAC4B,EAAyBW,IAEtB,IAAI,C,uEEtER,MAAM8G,UAA0B/M,EAAAA,EAGnCD,WAAAA,CAA4BiC,GACxBwL,MAAMT,EAAkB9Q,IAAI,KADJ+F,MAAAA,CAE5B,EALS+K,EACc9Q,GAAK,mB","sources":["webpack://Kristiania.Web/./Features/StudyPage/Campus/Components/GobiSection/GobiSection.module.css?e52e","webpack://Kristiania.Web/./Features/StudyPage/Campus/Components/GobiSection/GobiSection.tsx","webpack://Kristiania.Web/./Features/Blocks/GobiSectionBlock/View/GobiSectionBlock.tsx","webpack://Kristiania.Web/./Features/Layouts/Components/PageSection/PageSection.tsx","webpack://Kristiania.Web/./Features/Layouts/Components/PageSection/PageSection.module.css?557e","webpack://Kristiania.Web/./Features/Layouts/Components/PageSectionHeading/PageSectionHeading.tsx","webpack://Kristiania.Web/./Features/Layouts/Components/PageSectionHeading/PageSectionHeading.module.css?ed34","webpack://Kristiania.Web/./Features/Messaging/MessageBroker.ts","webpack://Kristiania.Web/./Features/Messaging/types.ts","webpack://Kristiania.Web/./Features/Partials/ActivityIndicator/ActivityIndicator.module.css?6d48","webpack://Kristiania.Web/./Features/Partials/ActivityIndicator/ActivityIndicator.tsx","webpack://Kristiania.Web/./Features/Partials/Button/Button.tsx","webpack://Kristiania.Web/./Features/Partials/Controls/HtmlDiv.tsx","webpack://Kristiania.Web/./Features/Partials/Controls/HtmlHeading.tsx","webpack://Kristiania.Web/./Features/Partials/FetchData/useFetchData.ts","webpack://Kristiania.Web/./Features/Partials/Modal/ClientSidePortal.tsx","webpack://Kristiania.Web/./Features/Partials/Modal/Portal.tsx","webpack://Kristiania.Web/./Features/Partials/ModalWrapper/ModalWrapper.tsx","webpack://Kristiania.Web/./Features/Utils/Hooks/useCloseHandlersWithoutDuplicatedCalls.ts","webpack://Kristiania.Web/./Features/Partials/Picture/Utils/constructImageSharpUrl.tsx","webpack://Kristiania.Web/./Features/Partials/Picture/Picture.tsx","webpack://Kristiania.Web/./Features/Partials/Picture/Picture.module.css?5ded","webpack://Kristiania.Web/./Features/Partials/Picture/PictureProfiles.ts","webpack://Kristiania.Web/./Features/Partials/Picture/Placeholder/PicturePlaceholder.module.css?0bc4","webpack://Kristiania.Web/./Features/Partials/Picture/Placeholder/PicturePlaceholder.tsx","webpack://Kristiania.Web/./Features/Partials/Utils/usePrevious.ts","webpack://Kristiania.Web/./Features/StudyPage/Campus/Components/GobiStory/Utils/GobiApiUtils.ts","webpack://Kristiania.Web/./Features/StudyPage/Campus/Components/GobiStory/GobiStory.tsx","webpack://Kristiania.Web/./Features/StudyPage/Campus/Components/GobiStory/GobiStory.module.css?a7be","webpack://Kristiania.Web/./Features/StudyPage/Campus/Components/Overlay/Overlay.tsx","webpack://Kristiania.Web/./Features/StudyPage/Campus/Components/Overlay/Overlay.module.css?6508","webpack://Kristiania.Web/./Features/StudyPage/Campus/Components/Overlay/WithOverlay.tsx","webpack://Kristiania.Web/./Features/Utils/AnimationsUtils.ts","webpack://Kristiania.Web/./Features/Utils/Hooks/useDebounce.ts","webpack://Kristiania.Web/./Features/Utils/Hooks/useIsMounted.ts","webpack://Kristiania.Web/./Features/Utils/Hooks/useVariableWithStableRef.ts","webpack://Kristiania.Web/./Features/Utils/ScrollLock/ScrollLock.tsx","webpack://Kristiania.Web/./Features/Utils/ScrollLock/ScrollLock.module.css?3254","webpack://Kristiania.Web/./Features/Utils/ScrollLock/ScrollLockUpdated.ts"],"sourcesContent":["// extracted by mini-css-extract-plugin\nexport default {\"GobiSection\":\"cwjtYbGmpj2Fc0XguMNM\",\"OverlayHeading\":\"vGAYXQ8qVh3muyCADVi0\",\"Title\":\"aZkJAbcjSQdYr77t8LV7\",\"Content\":\"zOMHtRvuigbQpkhq8l0i\",\"TextSubsection\":\"FHwe9agruJdTg4dYFHN9\",\"Separator\":\"qB4kMuPluv5Id4WqPmfn\",\"VideoSubsection\":\"uMSWbISaLHTvPMbXhnYp\",\"IntroText\":\"FktOVJkMpTVphR1rGeNp\",\"OverlayButton\":\"f_wbJQigmJWOUtJRHvmX\",\"OverlayIcon\":\"Kw06kOpEjKtbccDsYKVG\",\"Thumbnail\":\"R1wh_51Fi_Crd9RnsQsw\"};","import classNames from 'classnames';\nimport * as React from 'react';\nimport type { GobiStoryProps } from '../GobiStory/GobiStory';\nimport { GobiStory } from '../GobiStory/GobiStory';\nimport { PageSection } from '~/Features/Layouts/Components/PageSection/PageSection';\nimport { PageSectionHeading } from '~/Features/Layouts/Components/PageSectionHeading/PageSectionHeading';\nimport { useTheme } from '~/Features/Layouts/Theme/Context/ThemeContextProvider';\nimport type { OverlayContainerProps } from '~/Features/StudyPage/Campus/Components/Overlay/WithOverlay';\nimport { WithOverlay } from '~/Features/StudyPage/Campus/Components/Overlay/WithOverlay';\nimport type { HtmlString } from '~/Features/Types/HtmlString.csharp';\nimport { Button } from '~/Partials/Button/Button';\nimport { ButtonType } from '~/Partials/Button/ButtonType.csharp';\nimport { HtmlDiv } from '~/Partials/Controls/HtmlDiv';\nimport type { BaseImage } from '~/Partials/Picture/Picture';\nimport { Picture } from '~/Partials/Picture/Picture';\nimport { PictureProfiles } from '~/Partials/Picture/PictureProfiles';\nimport { PicturePlaceholder } from '~/Partials/Picture/Placeholder/PicturePlaceholder';\nimport { SvgIcon } from '~/Partials/SvgIcon/SvgIcon';\nimport type { Theme } from '~/Utils/Theme';\nimport styles from './GobiSection.module.css';\n\nexport interface GobiSectionProps {\n title?: HtmlString;\n id?: string;\n content?: HtmlString;\n gobi?: GobiStoryProps;\n imageFallback?: BaseImage;\n overlay?: OverlayContainerProps;\n theme?: Pick;\n}\n\nconst GobiSectionOverlayContent: React.FC<\n Pick, 'overlayLabel' | 'content'>\n> = props => {\n const { overlayLabel, content } = props;\n\n return (\n <>\n

{overlayLabel}

\n \n \n );\n};\n\nexport const GobiSection: React.FC = props => {\n const contextualTheme = useTheme();\n const { id, title, content, gobi, imageFallback, overlay, theme = contextualTheme } = props;\n\n const renderMedia = () => {\n if (gobi) {\n return ;\n }\n\n if (imageFallback) {\n return (\n \n );\n }\n\n return ;\n };\n\n return (\n \n {title && }\n
\n
\n {content && (\n \n )}\n {overlay && (\n \n }\n closeLabel={overlay.closeLabel}\n >\n {triggerButtonProps => (\n \n {overlay.openLabel}\n \n \n )}\n \n )}\n
\n
\n
{renderMedia()}
\n
\n \n );\n};\n","import * as React from 'react';\nimport type { GobiSectionBlockViewModel } from '../ViewModel/GobiSectionBlockViewModel.csharp';\nimport { GobiSection } from '~/Features/StudyPage/Campus/Components/GobiSection/GobiSection';\nimport type { GobiStoryProps } from '~/Features/StudyPage/Campus/Components/GobiStory/GobiStory';\nimport type { OverlayContainerProps } from '~/Features/StudyPage/Campus/Components/Overlay/WithOverlay';\nimport type { HtmlString } from '~/Features/Types/HtmlString.csharp';\n\nexport const GobiSectionBlock: React.FC = props => {\n const { id, title, content, gobiStoryId, imageFallback, overlayTitle, overlayContent, translations } = props;\n\n const getOverlayProps = (): OverlayContainerProps | undefined =>\n overlayTitle && overlayContent\n ? {\n overlayLabel: overlayTitle,\n content: overlayContent,\n openLabel: translations.openOverlay,\n closeLabel: translations.closeOverlay,\n }\n : undefined;\n\n const getGobiProps = (): GobiStoryProps | undefined =>\n gobiStoryId\n ? {\n storyId: gobiStoryId,\n openLabel: translations.openPlayer,\n errorMessage: translations.failedToLoadVideo,\n }\n : undefined;\n\n return (\n \n );\n};\n","import * as React from 'react';\nimport styles from './PageSection.module.css';\n\nexport interface PageSectionProps {\n id?: string;\n className?: string;\n}\n\nexport const PageSection: React.FC> = props => {\n const { id, className, children } = props;\n\n return (\n
\n
\n
{children}
\n
\n
\n );\n};\n","// extracted by mini-css-extract-plugin\nexport default {\"Wrapper\":\"Fov3KMlE7osNR74JI44t\",\"Inner\":\"Wf6h4ZdN2S9XvO6RoMCf\"};","import classNames from 'classnames';\nimport React from 'react';\nimport type { HtmlString } from '~/Features/Types/HtmlString.csharp';\nimport { HtmlHeading } from '~/Partials/Controls/HtmlHeading';\nimport styles from './PageSectionHeading.module.css';\n\ninterface PageSectionHeadingProps {\n heading: HtmlString;\n className?: string;\n}\n\nexport const PageSectionHeading: React.FC = props => {\n const { heading, className } = props;\n\n return ;\n};\n","// extracted by mini-css-extract-plugin\nexport default {\"PageSectionHeading\":\"FrR9v_ssranAjR5kDzwF\"};","import type { Message, MessageHandler } from '~/Features/Messaging/types';\n\nexport class MessageBroker {\n private static MessageHandlersByMessageId: { [id: string]: MessageHandler[] } = {};\n\n public static subscribe(handler: MessageHandler, messageId: string): void {\n const handlers = this.MessageHandlersByMessageId[messageId];\n\n if (handlers) {\n handlers.push(handler);\n } else {\n this.MessageHandlersByMessageId[messageId] = [handler];\n }\n }\n\n public static unsubscribe(handler: MessageHandler, messageId: string): void {\n const handlers = this.MessageHandlersByMessageId[messageId];\n\n if (handlers) {\n this.MessageHandlersByMessageId[messageId] = handlers.filter(h => h !== handler);\n }\n }\n\n public static publish(message: Message): void {\n const handlers = this.GetMessageHandlers(message.id);\n\n handlers.forEach(handler => handler.handle(message));\n }\n\n public static schedulePublish(message: Message, delay: number): void {\n setTimeout(() => MessageBroker.publish(message), delay);\n }\n\n private static GetMessageHandlers(messageId: string): MessageHandler[] {\n return this.MessageHandlersByMessageId[messageId] || [];\n }\n}\n","export abstract class Message {\n protected constructor(public readonly id: string) {}\n}\n\nexport abstract class Event extends Message {}\n\nexport interface MessageHandler {\n handle(message: Message): void;\n}\n\nexport interface EventHandler {\n handle: ((event: TEvent) => void) | (() => void);\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"Inner\":\"EwPhzUN1NfTBa1XOsTE6\",\"ActivityIndicatorRotate\":\"ZNgVI5R_Ahgk3DnOyUhN\",\"Inner--cover\":\"TVMntCe8qkWIdDcQxQb6\",\"Outer\":\"FxrXNHIEItswETCvk14E\",\"Children\":\"rK8S3lKkJdvsHyzk1dZ1\"};","import classNames from 'classnames';\nimport * as React from 'react';\nimport styles from './ActivityIndicator.module.css';\n\nexport interface ActivityIndicatorProps {\n cover?: boolean;\n active?: boolean;\n modal?: boolean;\n children?: string | React.ReactNode;\n}\n\nconst ModalWrapper: React.FC> = props => {\n const { visible, children } = props;\n\n return (\n \n {children}\n \n );\n};\n\nexport const ActivityIndicator: React.FC> = React.memo(props => {\n const { modal = true, cover, active = true, children } = props;\n\n const Wrapper = modal ? ModalWrapper : React.Fragment;\n const wrapperProps = modal ? { visible: active } : {}; // react.Fragment cannot have any props\n\n return (\n \n \n {children && (\n {children}\n )}\n \n );\n});\n","import classNames from 'classnames';\nimport * as React from 'react';\nimport type { ReactNode } from 'react';\nimport type { StrictOmit } from '../Utils/typeUtils';\nimport { useTheme } from '~/Features/Layouts/Theme/Context/ThemeContextProvider';\nimport type { Theme } from '~/Utils/Theme';\nimport styles from './Button.module.css';\nimport type { ButtonSize } from './ButtonSize.csharp';\nimport type { ButtonTier } from './ButtonTier.csharp';\nimport { ButtonType } from './ButtonType.csharp';\n\ntype HtmlButtonType = 'submit' | 'reset' | 'button';\n\nexport interface DefaultButtonProps {\n children: ReactNode;\n className?: string;\n htmltype?: HtmlButtonType;\n /* STYLES PROPS */\n size?: ButtonSize;\n tier?: ButtonTier;\n type?: ButtonType;\n theme?: Theme;\n}\n\ntype NativeButtonAttributes = Pick<\n React.ButtonHTMLAttributes,\n | 'aria-selected'\n | 'aria-controls'\n | 'aria-expanded'\n | 'role'\n | 'aria-haspopup'\n | 'aria-describedby'\n | 'aria-label'\n | 'tabIndex'\n | 'title'\n | 'id'\n | 'disabled'\n | 'draggable'\n | 'onClick'\n | 'onFocus'\n | 'onMouseDown'\n>;\n\nexport type ButtonProps = DefaultButtonProps & NativeButtonAttributes;\n\nexport const Button = React.forwardRef((props, ref) => {\n const { children, theme, ...passThroughProps } = props;\n const { type } = passThroughProps;\n\n if (type && type !== ButtonType.Clear) {\n return (\n \n {children}\n \n );\n }\n\n return (\n \n {children}\n \n );\n});\n\ntype RawButtonProps = StrictOmit;\n\nconst RawButton = React.forwardRef((props, ref) => {\n const { className, children, size, tier, type, htmltype = 'button', ...otherProps } = props;\n\n const getButtonClassName = () =>\n classNames(\n type && styles[`Variant--${type}`],\n tier && styles[`Variant--${tier}`],\n size && styles[`Variant--${size}`],\n className\n );\n\n return (\n \n );\n});\n\nconst ThemedButton = React.forwardRef((props, ref) => {\n const contextualTheme = useTheme();\n const { children, className, theme = contextualTheme, ...additionalProps } = props;\n\n const { withBoxShadow, withRoundedCorners } = theme;\n\n return (\n \n {children}\n \n );\n});\n","import * as React from 'react';\nimport type { HtmlString } from '~/Features/Types/HtmlString.csharp';\n\ntype NativeDivAttributes = Pick, 'id'>;\n\nexport interface HtmlDivProps extends NativeDivAttributes {\n html: HtmlString;\n className?: string;\n}\n\nexport const HtmlDiv: React.FC = props => {\n const { html, className, ...restDivProps } = props;\n\n return
;\n};\n","import * as React from 'react';\nimport type { HtmlString } from '~/Features/Types/HtmlString.csharp';\n\nexport interface HtmlHeadingProps {\n html: HtmlString;\n type: keyof Pick;\n id?: string;\n className?: string;\n}\n\nexport const HtmlHeading: React.FC = props => {\n const { type, html, id, className } = props;\n\n return React.createElement(type, { className, id, dangerouslySetInnerHTML: { __html: html.value } });\n};\n","import type { AxiosResponse, Canceler } from 'axios';\nimport axios, { isCancel } from 'axios';\nimport * as React from 'react';\nimport { usePrevious } from '../Utils/usePrevious';\nimport { checkEquals } from '../Utils/utils';\nimport { useDebounce } from '~/Utils/Hooks/useDebounce';\nimport { axiosWrapper } from './axiosWrapper';\nimport type { FetchDataAction, FetchDataHookProps, FetchDataHookReturn, FetchDataHookState } from './types';\n\nfunction reducer(\n state: FetchDataHookState,\n action: FetchDataAction\n): FetchDataHookState {\n switch (action.type) {\n case 'SET_DATA':\n return {\n ...state,\n data: action.payload,\n loading: false,\n error: undefined,\n };\n case 'SET_ERROR':\n return {\n ...state,\n loading: false,\n data: undefined,\n error: action.payload,\n };\n case 'START_REQUEST':\n return {\n ...state,\n error: undefined,\n loading: true,\n dataRequested: true,\n };\n default:\n return state;\n }\n}\n\nexport function useFetchData(\n props: FetchDataHookProps\n): FetchDataHookReturn {\n const { url, params, method = 'get', shouldMakeRequest = true, debounceTime = 200, timeout = 0 } = props;\n\n const [{ data, loading, error, dataRequested }, dispatch] = React.useReducer<\n React.Reducer, FetchDataAction>\n >(reducer, {\n data: undefined,\n loading: false,\n error: undefined,\n dataRequested: false,\n });\n\n const previousProps = usePrevious({ url, method, params });\n const requestWithDebounce = useDebounce(request, debounceTime);\n\n const cancelToken = React.useRef();\n\n React.useEffect(() => {\n if (shouldMakeRequest) {\n fetchData();\n }\n\n return () => {\n if (cancelToken.current) {\n cancelToken.current();\n }\n };\n }, []);\n\n React.useEffect(() => {\n const propsChanged = previousProps\n ? previousProps.url !== url || previousProps.method !== method || !checkEquals(previousProps.params, params)\n : false;\n\n if ((propsChanged || !dataRequested) && shouldMakeRequest) {\n fetchData();\n }\n }, [url, method, params, dataRequested, shouldMakeRequest]);\n\n function fetchData() {\n if (cancelToken.current) {\n cancelToken.current();\n }\n\n dispatch({ type: 'START_REQUEST' });\n requestWithDebounce();\n }\n\n function request() {\n axiosWrapper\n .request>({\n url,\n method,\n params,\n timeout,\n cancelToken: new axios.CancelToken(token => {\n cancelToken.current = token;\n }),\n })\n .then(response => {\n cancelToken.current = undefined;\n dispatch({ type: 'SET_DATA', payload: response.data });\n })\n .catch(e => {\n if (isCancel(e)) {\n return;\n }\n\n dispatch({ type: 'SET_ERROR', payload: e.message });\n // eslint-disable-next-line no-console\n console.error(e);\n });\n }\n\n return {\n data,\n loading,\n error,\n };\n}\n","import * as React from 'react';\nimport { createPortal } from 'react-dom';\n\nconst portalContainerId = 'portal-container';\n\nexport const ClientSidePortal: React.FC = props => {\n const { children } = props;\n\n const portalContainer = document.getElementById(portalContainerId);\n const [isAttachedToDOM, setIsAttachedToDOM] = React.useState(false);\n\n if (!portalContainer) {\n throw new Error(`Portal requires element with id '${portalContainerId}' to be present in DOM`);\n }\n\n const elementReference = React.useRef(null);\n\n if (!elementReference.current) {\n elementReference.current = document.createElement('div');\n }\n\n React.useEffect(() => {\n if (elementReference.current) {\n portalContainer.appendChild(elementReference.current);\n setIsAttachedToDOM(true);\n }\n\n return () => {\n if (elementReference.current) {\n portalContainer.removeChild(elementReference.current);\n setIsAttachedToDOM(false);\n }\n };\n }, [portalContainer]);\n\n const portalContent = isAttachedToDOM && children;\n\n return createPortal(portalContent, elementReference.current);\n};\n","import * as React from 'react';\nimport { useIsMounted } from '~/Utils/Hooks/useIsMounted';\nimport { ClientSidePortal } from './ClientSidePortal';\n\nexport const Portal: React.FC = props => {\n const { children } = props;\n const isMounted = useIsMounted();\n\n return isMounted ? {children} : null;\n};\n","import { FocusTrap } from 'focus-trap-react';\nimport type { FC, ReactNode } from 'react';\nimport React from 'react';\nimport { useCloseHandlersWithoutDuplicatedCalls } from '~/Utils/Hooks/useCloseHandlersWithoutDuplicatedCalls';\nimport { ScrollLock } from '~/Utils/ScrollLock/ScrollLock';\n\nexport interface ModalWrapperProps {\n isScrollLocked: boolean;\n isFocusTrapActive: boolean;\n children: (buttonClickClose: () => void) => ReactNode;\n close: () => void;\n shouldHideMainScrollBar?: boolean;\n}\n\nexport const ModalWrapper: FC = props => {\n const { isFocusTrapActive, isScrollLocked, children, close, shouldHideMainScrollBar } = props;\n\n const { focusTrapDeactivationClose, buttonClickClose } = useCloseHandlersWithoutDuplicatedCalls(\n close,\n isFocusTrapActive\n );\n\n return (\n <>\n \n \n {/*\n * TabIndex is needed here, because by default, when clicking on non-focusable element inside modal\n * browser focuses body element: https://github.com/focus-trap/focus-trap/issues/587.\n */}\n
{children(buttonClickClose)}
\n \n \n );\n};\n","import * as React from 'react';\nimport { useVariableWithStableRef } from './useVariableWithStableRef';\n\nexport function useCloseHandlersWithoutDuplicatedCalls(close: () => void, isOpened: boolean) {\n const closeRef = useVariableWithStableRef(close);\n const shouldDeactivateInvokeCloseRef = React.useRef(false);\n\n React.useEffect(() => {\n if (isOpened) {\n shouldDeactivateInvokeCloseRef.current = true;\n }\n }, [isOpened]);\n\n const focusTrapDeactivationClose = () => shouldDeactivateInvokeCloseRef.current && closeRef.current?.();\n\n const buttonClickClose = () => {\n shouldDeactivateInvokeCloseRef.current = false;\n close();\n };\n\n return { focusTrapDeactivationClose, buttonClickClose };\n}\n","export const constructImageSharpUrl = (baseUrl: string, width: number) => `${baseUrl}?width=${width}`;\n","import classNames from 'classnames';\nimport clamp from 'lodash/clamp';\nimport * as React from 'react';\nimport type { Theme } from '~/Utils/Theme';\nimport { themeDefaultValues } from '~/Utils/Theme';\nimport styles from './Picture.module.css';\nimport { constructImageSharpUrl } from './Utils/constructImageSharpUrl';\n\nexport interface PictureSource {\n allowedWidths: number[];\n sizes: string[];\n}\n\nexport interface PictureProfile {\n sources: PictureSource[];\n defaultWidth: number;\n}\n\nexport interface FocalPoint {\n x: number;\n y: number;\n}\n\nexport interface BaseImage {\n url: string;\n alt: string;\n focalPoint?: FocalPoint;\n lazyLoading?: boolean;\n}\n\nexport interface PictureDefinition extends BaseImage {\n profile: PictureProfile;\n}\n\nexport interface PictureProps extends PictureDefinition {\n theme?: Pick;\n className?: string;\n}\n\nexport const Picture: React.FC> = props => {\n const { url, alt, focalPoint, profile, className, theme = themeDefaultValues, lazyLoading = true } = props;\n\n const { withRoundedCorners } = theme;\n\n const createPicture = (pictureUrl: string, pictureAlt: string, pictureProfile: PictureProfile) => {\n const [mainSource] = pictureProfile.sources;\n const sourceSizes = mainSource.sizes.join(', ');\n const sourceSrcSets = mainSource.allowedWidths\n .map(width => `${constructImageSharpUrl(pictureUrl, width)} ${width}w`)\n .join(', ');\n\n const getPosition = (point: FocalPoint) => {\n const xPosition = clamp(point.x, 0, 1);\n const yPosition = clamp(point.y, 0, 1);\n\n return `${xPosition * 100}% ${yPosition * 100}%`;\n };\n\n return (\n \n \n \n \n );\n };\n\n return (\n
\n {createPicture(url, alt, profile)}\n
\n );\n};\n","// extracted by mini-css-extract-plugin\nexport default {\"Picture\":\"slJnKPGAAIKofsQwQBjL\",\"Variant--rounded\":\"vPKYJ9xnnqorRitmkm3i\"};","import type { PictureProfile } from '~/Partials/Picture/Picture';\n\nexport class PictureProfiles {\n static readonly threeColumnsElement: PictureProfile = {\n defaultWidth: 500,\n sources: [\n {\n allowedWidths: [175, 375, 500, 768],\n sizes: ['(min-width: 1920px) 500px', '(min-width: 768px) 25vw', '100vw'],\n },\n ],\n };\n\n static readonly fourColumnsElement: PictureProfile = {\n defaultWidth: 500,\n sources: [\n {\n allowedWidths: [375, 500, 768],\n sizes: ['(min-width: 768px) 33vw', '100vw'],\n },\n ],\n };\n\n static readonly sixColumnsElement: PictureProfile = {\n defaultWidth: 500,\n sources: [\n {\n allowedWidths: [375, 500, 768, 1024],\n sizes: ['(min-width: 768px) 50vw', '100vw'],\n },\n ],\n };\n\n static readonly fullWidth: PictureProfile = {\n defaultWidth: 1440,\n sources: [\n {\n allowedWidths: [375, 768, 1024, 1440, 1920],\n sizes: ['100vw'],\n },\n ],\n };\n\n static readonly horizontal: PictureProfile = {\n defaultWidth: 1440,\n sources: [\n {\n allowedWidths: [375, 768, 1440],\n sizes: ['(min-width: 1440px) 1440px', '100vw'],\n },\n ],\n };\n\n static readonly vertical: PictureProfile = {\n defaultWidth: 552,\n sources: [\n {\n allowedWidths: [375, 768, 1536],\n sizes: ['(max-width: 767px) 100vw', '(min-width: 768px) 552px'],\n },\n ],\n };\n\n static readonly callout: PictureProfile = {\n defaultWidth: 258,\n sources: [\n {\n allowedWidths: [120, 240],\n sizes: ['(max-width: 767px) 100vw', '(min-width: 768) 120px'],\n },\n ],\n };\n\n static readonly contentCard: PictureProfile = {\n defaultWidth: 1440,\n sources: [\n {\n allowedWidths: [375, 768, 1136],\n sizes: ['(min-width: 1024px) 1136px', '(min-width: 768px) 768px', '100vw'],\n },\n ],\n };\n\n static readonly studyPortfolioItem: PictureProfile = {\n defaultWidth: 630,\n sources: [\n {\n allowedWidths: [260, 340, 410, 560, 675, 710, 810, 870],\n sizes: ['(max-width: 767px) 90vw', '(min-width: 768px) 45vw'],\n },\n ],\n };\n\n static readonly galleryItemSquare: PictureProfile = {\n defaultWidth: 480,\n sources: [\n {\n allowedWidths: [300, 380, 480],\n sizes: ['(min-width: 476px) 380px', '(min-width: 768px) 480px', '300px'],\n },\n ],\n };\n\n static readonly galleryItemVertical: PictureProfile = {\n defaultWidth: 360,\n sources: [\n {\n allowedWidths: [360, 520],\n sizes: ['(max-width: 767px) 100vw', '(min-width: 768px) 360px'],\n },\n ],\n };\n\n static readonly galleryItemHorizontal: PictureProfile = {\n defaultWidth: 640,\n sources: [\n {\n allowedWidths: [640],\n sizes: ['(max-width: 767px) 80vw', '(min-width: 768px) 640px'],\n },\n ],\n };\n\n static readonly mainPosterVertical: PictureProfile = {\n defaultWidth: 500,\n sources: [\n {\n allowedWidths: [500, 768, 1024, 1300],\n sizes: ['(min-width: 768px) 70vw', '100vw'],\n },\n ],\n };\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"LogoWrapper\":\"rLPb41_nB0G4MecZ4mE5\",\"Logo\":\"tZgaCxFP4U3Uwa4Sad4N\",\"Variant--default\":\"ZSbIyUzr6rSK_5dXtkvi\",\"Variant--light\":\"CEuKCgcYyO4PiyJodS9w\",\"Variant--rounded\":\"ubaUESvsjg4uza8S1zV9\"};","import classNames from 'classnames';\nimport * as React from 'react';\nimport type { Theme } from '~/Utils/Theme';\nimport { themeDefaultValues } from '~/Utils/Theme';\nimport styles from './PicturePlaceholder.module.css';\nimport type { PlaceholderVariant } from './PlaceholderVariant';\n\nexport interface PicturePlaceholderProps {\n variant?: PlaceholderVariant;\n className?: string;\n logoWrapperClassName?: string;\n theme?: Theme;\n}\n\nexport const PicturePlaceholder: React.FC> = props => {\n const { className, logoWrapperClassName, theme = themeDefaultValues, variant = 'default' } = props;\n\n const { withRoundedCorners } = theme;\n\n return (\n \n
\n
\n
\n
\n );\n};\n","import * as React from 'react';\n\nexport function usePrevious(value: T) {\n const ref = React.useRef();\n React.useEffect(() => {\n ref.current = value;\n });\n\n return ref.current as T;\n}\n","export const baseApiUrl = 'https://api.gobistories.com/api/v5/renders';\n\nexport interface GobiApiResponse {\n viewKey: string;\n version: number;\n title: string;\n videoUrl: string;\n streamingUrl: string;\n thumbnailUrl: string;\n posterUrl: string;\n coverUrl: string;\n chapters: {\n id: string;\n order: number;\n duration: number;\n stickers: {\n type: 'TEXT' | 'LINK' | 'DUMB';\n order: number;\n x: number;\n y: number;\n scale: number;\n rotation: number;\n imageUrl: string | null;\n linkUrl: string | null;\n text: string | null;\n }[];\n }[];\n animatedThumbnailUrl?: string;\n webmThumbnailUrl?: string;\n mp4ThumbnailUrl?: string;\n webmCoverUrl?: string;\n mp4CoverUrl?: string;\n whiteLabel?: boolean;\n}\n\nexport type GobiApiResponseNarrowed = Pick;\n","import { openPopup } from '@gobistories/gobi-web-integration';\nimport type { Options } from '@gobistories/gobi-web-integration/dist/types/options.types';\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport { useTheme } from '~/Features/Layouts/Theme/Context/ThemeContextProvider';\nimport { ActivityIndicator } from '~/Partials/ActivityIndicator/ActivityIndicator';\nimport { Button } from '~/Partials/Button/Button';\nimport { ButtonType } from '~/Partials/Button/ButtonType.csharp';\nimport { useFetchData } from '~/Partials/FetchData/useFetchData';\nimport { Picture } from '~/Partials/Picture/Picture';\nimport { PictureProfiles } from '~/Partials/Picture/PictureProfiles';\nimport { SvgIcon } from '~/Partials/SvgIcon/SvgIcon';\nimport type { Theme } from '~/Utils/Theme';\nimport styles from './GobiStory.module.css';\nimport type { GobiApiResponseNarrowed } from './Utils/GobiApiUtils';\nimport { baseApiUrl } from './Utils/GobiApiUtils';\n\nexport interface GobiStoryProps {\n storyId: string;\n openLabel: string;\n errorMessage: string;\n theme?: Pick;\n className?: string;\n}\n\nexport const GobiStory: React.FC = props => {\n const contextualTheme = useTheme();\n const { storyId, openLabel, errorMessage, className, theme = contextualTheme } = props;\n\n const [isOpened, setIsOpened] = React.useState(false);\n\n const { withRoundedCorners } = theme;\n\n const openStory = () => {\n if (isOpened) {\n return;\n }\n\n setIsOpened(true);\n\n openPopup(storyId, {\n on: {\n close: () => setIsOpened(false),\n },\n } as Options);\n };\n\n const { data, loading, error } = useFetchData({\n url: `${baseApiUrl}/${storyId}`,\n });\n\n const renderContent = () => {\n if (error) {\n return (\n
\n \n {errorMessage}\n
\n );\n }\n\n if (loading || !data) {\n return ;\n }\n\n const { posterUrl, title } = data;\n\n return (\n <>\n \n
\n
\n \n
\n \n
\n \n );\n };\n\n return (\n
\n {renderContent()}\n
\n );\n};\n","// extracted by mini-css-extract-plugin\nexport default {\"GobiStory\":\"VNQ7BkWJFagCE_bBjsxQ\",\"PlayWrapper\":\"awya_ua8NF0CjmEFiP1W\",\"Play\":\"pIVhKXQKAuzUp3Upow3N\",\"OpenButton\":\"VorSZ59xzSqm4a74z90r\",\"ErrorContainer\":\"H7Kdh3CKpE4SIlhVCnLh\",\"ErrorIcon\":\"soOGIuDWHz9ZuRRzOGk1\",\"ErrorMessage\":\"HXGMpPQMi8ZIDLqqZSWo\",\"Variant--rounded\":\"ZLbmeOzjwEPCnL8UV8zG\"};","import classNames from 'classnames';\nimport uniqueId from 'lodash/uniqueId';\nimport * as React from 'react';\nimport { CSSTransition } from 'react-transition-group';\nimport { Button } from '~/Partials/Button/Button';\nimport { ButtonType } from '~/Partials/Button/ButtonType.csharp';\nimport { Portal } from '~/Partials/Modal/Portal';\nimport type { ModalWrapperProps } from '~/Partials/ModalWrapper/ModalWrapper';\nimport { ModalWrapper } from '~/Partials/ModalWrapper/ModalWrapper';\nimport { SvgIcon } from '~/Partials/SvgIcon/SvgIcon';\nimport { animationDurationMs } from '~/Utils/AnimationsUtils';\nimport { useIsMounted } from '~/Utils/Hooks/useIsMounted';\nimport styles from './Overlay.module.css';\n\nexport interface OverlayProps extends Pick {\n id: string;\n overlayLabel: string;\n isActive: boolean;\n closeLabel: string;\n className?: string;\n}\n\nconst InvisibleDiv: React.FC = props => {\n const { children } = props;\n\n return
{children}
;\n};\n\nexport const Overlay: React.FC> = props => {\n const { id, overlayLabel, isActive, close, closeLabel, children, className } = props;\n\n const [isAnimationInProgress, setIsAnimationInProgress] = React.useState(false);\n const animatedElement = React.useRef(null);\n const backgroundRef = React.useRef(null);\n const isMounted = useIsMounted();\n\n const isOverlayVisible = isActive || isAnimationInProgress;\n\n // Must be set as an inline style because FocusTrap update handler launches before conditional class styles\n // are applied to the element. This handler searches for tabbable element and checks if it's visible\n // (i.e. neither it nor its parents have display:none) - if not it will throw an error.\n const displayMode = isOverlayVisible ? undefined : 'none';\n\n const labelId = uniqueId('overlayLabel_');\n\n // In order to support SSR (so that the content is indexed), we cannot use the Portal component\n // which is solely client-side. Instead, we use a dummy div that is hidden from the user and after\n // the component is mounted, we replace it with the Portal.\n const WrapperElement = isMounted ? Portal : InvisibleDiv;\n\n return (\n \n \n \n
\n \n setIsAnimationInProgress(true)}\n onExited={() => setIsAnimationInProgress(false)}\n >\n \n {buttonClickClose => (\n
\n
\n \n \n {closeLabel}\n \n
\n
\n \n {overlayLabel}\n \n {children}\n
\n
\n )}\n \n \n
\n
\n );\n};\n","// extracted by mini-css-extract-plugin\nexport default {\"Overlay\":\"QhFNlQLYGSl_aaOQtwwl\",\"Background\":\"lAKZZQugItoUqTlu8DRV\",\"Inner\":\"po18YUo5kkFOZqsiTnKR\",\"TopBanner\":\"eOdUoHIpgD7QwsaR1kGn\",\"Content\":\"fyYha0cYX3WzsCpMkhUB\",\"CloseButton\":\"sZg2Vy20YIsqTNv9TcIX\"};","import isFunction from 'lodash/isFunction';\nimport uniqueId from 'lodash/uniqueId';\nimport * as React from 'react';\nimport type { ReactNode } from 'react';\nimport type { OverlayProps } from './Overlay';\nimport { Overlay } from './Overlay';\n\nexport interface OverlayContainerProps extends Pick {\n content: TContent;\n openLabel: string;\n}\n\nexport interface OverlayTriggerButtonProps\n extends Required<\n Pick, 'aria-controls' | 'aria-expanded' | 'aria-haspopup' | 'onClick'>\n > {\n 'aria-haspopup': 'dialog';\n onClick: () => void; // Overriden base 'onClick' to not expose the event\n}\n\nexport interface WithOverlayProps extends Pick {\n overlayContent: ((close: () => void, isOpen: boolean) => ReactNode) | ReactNode;\n children: (triggerButtonProps: OverlayTriggerButtonProps) => ReactNode;\n}\n\nexport const WithOverlay: React.FC = props => {\n const { overlayContent, children, ...restProps } = props;\n\n const [isActive, setIsActive] = React.useState(false);\n\n const overlayId = uniqueId('overlay_');\n\n const triggerButtonProps: OverlayTriggerButtonProps = {\n onClick: () => setIsActive(true),\n 'aria-expanded': isActive,\n 'aria-controls': overlayId,\n 'aria-haspopup': 'dialog',\n };\n\n const close = () => setIsActive(false);\n\n return (\n <>\n {children(triggerButtonProps)}\n \n {isFunction(overlayContent) ? overlayContent(close, isActive) : overlayContent}\n \n \n );\n};\n","// When changing this value please remember about changing CSS transition duration accordingly\nexport const animationDurationMs = 400;\n","import debounce from 'lodash/debounce';\nimport * as React from 'react';\nimport { useVariableWithStableRef } from './useVariableWithStableRef';\n\nexport function useDebounce(callback: () => void, debounceTime: number) {\n const handlerRef = useVariableWithStableRef(callback);\n\n return React.useCallback(\n debounce(() => handlerRef.current?.(), debounceTime),\n [handlerRef]\n );\n}\n","import { useEffect, useState } from 'react';\n\nexport const useIsMounted = () => {\n const [isMounted, setIsMounted] = useState(false);\n\n useEffect(() => {\n setIsMounted(true);\n }, []);\n\n return isMounted;\n};\n","import { useEffect, useRef } from 'react';\n\nexport function useVariableWithStableRef(variable: T) {\n const variableRef = useRef(variable);\n\n useEffect(() => {\n variableRef.current = variable;\n }, [variable]);\n\n return variableRef;\n}\n","import * as React from 'react';\nimport { MessageBroker } from '~/Features/Messaging/MessageBroker';\nimport { ScrollLockUpdated } from '~/Utils/ScrollLock/ScrollLockUpdated';\nimport styles from './ScrollLock.module.css';\n\ninterface ScrollLockProps {\n isLocked: boolean;\n shouldHideMainScrollBar?: boolean;\n}\n\nconst lockedClassName = styles['ScrollLock--enabled'];\nconst hiddenScrollBarClassName = styles['ScrollLock--hiddenScrollBar'];\n\nexport const ScrollLock: React.FC = props => {\n const { isLocked, shouldHideMainScrollBar } = props;\n\n const [scrollPosition, setScrollPosition] = React.useState(undefined);\n const scrollPositionRef = React.useRef();\n\n React.useEffect(() => {\n scrollPositionRef.current = scrollPosition;\n }, [scrollPosition]);\n\n React.useEffect(() => {\n const { body } = document;\n const scrollY = window.scrollY || window.pageYOffset;\n\n const lock = (position: number) => {\n // Calculated before adding locked class, because page might not have a scrollbar before that\n const scrollBarWidth = window.innerWidth - body.offsetWidth;\n\n body.classList.add(lockedClassName);\n body.style.top = `-${position}px`;\n\n if (shouldHideMainScrollBar) {\n body.classList.add(hiddenScrollBarClassName);\n body.style.paddingRight = `${scrollBarWidth}px`;\n\n MessageBroker.publish(\n new ScrollLockUpdated({\n isLocked: true,\n isScrollBarVisible: false,\n scrollBarWidth,\n })\n );\n } else {\n MessageBroker.publish(\n new ScrollLockUpdated({\n isLocked: true,\n isScrollBarVisible: true,\n })\n );\n }\n };\n\n const unlock = (position: number) => {\n body.classList.remove(lockedClassName);\n body.style.top = '';\n\n if (shouldHideMainScrollBar) {\n body.classList.remove(hiddenScrollBarClassName);\n body.style.paddingRight = '';\n }\n\n MessageBroker.publish(new ScrollLockUpdated({ isLocked: false }));\n\n window.scrollTo(0, position);\n };\n\n const shouldLock = isLocked && !body.classList.contains(lockedClassName);\n\n if (shouldLock) {\n lock(scrollY);\n setScrollPosition(scrollY);\n } else {\n if (scrollPosition !== undefined) {\n unlock(scrollPosition);\n }\n\n setScrollPosition(undefined);\n }\n\n return () => {\n if (scrollPositionRef.current !== undefined) {\n unlock(scrollPositionRef.current);\n }\n };\n }, [shouldHideMainScrollBar, isLocked]);\n\n return null;\n};\n","// extracted by mini-css-extract-plugin\nexport default {\"ScrollLock--enabled\":\"Q0v9bFNU46mzd2ECi6p_\",\"ScrollLock--hiddenScrollBar\":\"BqUTYZ5JDn6ke9pgViA1\"};","import { Event } from '~/Features/Messaging/types';\n\ninterface LockedWithScrollBar {\n isLocked: true;\n isScrollBarVisible: true;\n}\n\ninterface LockedWithoutScrollBar {\n isLocked: true;\n isScrollBarVisible: false;\n scrollBarWidth: number;\n}\n\ninterface Unlocked {\n isLocked: false;\n}\n\nexport type ScrollLockState = LockedWithScrollBar | LockedWithoutScrollBar | Unlocked;\n\nexport class ScrollLockUpdated extends Event {\n public static readonly id = 'ScrollLockUpdated';\n\n constructor(public readonly state: ScrollLockState) {\n super(ScrollLockUpdated.id);\n }\n}\n"],"names":["GobiSectionOverlayContent","props","overlayLabel","content","React","className","HtmlDiv","html","GobiSection","contextualTheme","useTheme","id","title","gobi","imageFallback","overlay","theme","PageSection","PageSectionHeading","heading","classNames","WithOverlay","overlayContent","closeLabel","triggerButtonProps","Button","_extends","type","ButtonType","Clear","openLabel","SvgIcon","iconName","GobiStory","styles","Picture","profile","PictureProfiles","vertical","PicturePlaceholder","GobiSectionBlock","gobiStoryId","overlayTitle","translations","openOverlay","closeOverlay","undefined","storyId","openPlayer","errorMessage","failedToLoadVideo","children","HtmlHeading","MessageBroker","subscribe","handler","messageId","handlers","this","MessageHandlersByMessageId","push","unsubscribe","filter","h","publish","message","GetMessageHandlers","forEach","handle","schedulePublish","delay","setTimeout","Message","constructor","Event","ModalWrapper","visible","style","display","ActivityIndicator","modal","cover","active","Wrapper","wrapperProps","ref","passThroughProps","_objectWithoutProperties","_excluded","ThemedButton","RawButton","size","tier","htmltype","otherProps","_excluded2","concat","additionalProps","_excluded3","withBoxShadow","withRoundedCorners","restDivProps","dangerouslySetInnerHTML","__html","value","reducer","state","action","_objectSpread","data","payload","loading","error","dataRequested","useFetchData","url","params","method","shouldMakeRequest","debounceTime","timeout","dispatch","previousProps","usePrevious","requestWithDebounce","useDebounce","axiosWrapper","request","cancelToken","axios","CancelToken","token","current","then","response","catch","e","isCancel","console","fetchData","checkEquals","portalContainerId","ClientSidePortal","portalContainer","document","getElementById","isAttachedToDOM","setIsAttachedToDOM","Error","elementReference","createElement","appendChild","removeChild","portalContent","createPortal","Portal","useIsMounted","isFocusTrapActive","isScrollLocked","close","shouldHideMainScrollBar","focusTrapDeactivationClose","buttonClickClose","isOpened","closeRef","useVariableWithStableRef","shouldDeactivateInvokeCloseRef","_closeRef$current","call","useCloseHandlersWithoutDuplicatedCalls","ScrollLock","isLocked","FocusTrap","focusTrapOptions","clickOutsideDeactivates","escapeDeactivates","onDeactivate","tabIndex","constructImageSharpUrl","baseUrl","width","alt","focalPoint","themeDefaultValues","lazyLoading","createPicture","pictureUrl","pictureAlt","pictureProfile","mainSource","sources","sourceSizes","sizes","join","sourceSrcSets","allowedWidths","map","srcSet","src","defaultWidth","objectPosition","point","xPosition","clamp","x","yPosition","y","getPosition","threeColumnsElement","fourColumnsElement","sixColumnsElement","fullWidth","horizontal","callout","contentCard","studyPortfolioItem","galleryItemSquare","galleryItemVertical","galleryItemHorizontal","mainPosterVertical","logoWrapperClassName","variant","LogoWrapper","Logo","setIsOpened","openStory","openPopup","on","renderContent","posterUrl","onClick","InvisibleDiv","Overlay","isActive","isAnimationInProgress","setIsAnimationInProgress","animatedElement","backgroundRef","isMounted","isOverlayVisible","displayMode","labelId","uniqueId","WrapperElement","role","CSSTransition","nodeRef","in","appear","animationDurationMs","onEnter","onExited","restProps","setIsActive","overlayId","isFunction","callback","handlerRef","debounce","_handlerRef$current","setIsMounted","useState","useEffect","variable","variableRef","useRef","lockedClassName","hiddenScrollBarClassName","scrollPosition","setScrollPosition","scrollPositionRef","body","scrollY","window","pageYOffset","unlock","position","classList","remove","top","paddingRight","ScrollLockUpdated","scrollTo","contains","scrollBarWidth","innerWidth","offsetWidth","add","isScrollBarVisible","lock","super"],"sourceRoot":""}