{"version":3,"file":"js/hotel_header-4d89afabac16bb410419.chunk.js","mappings":"oKAEO,SAASA,IACd,MAAMC,OAA+DC,IAAnDC,SAASC,cAAc,QAAQC,QAAQC,QACnDC,EAAcJ,SAASC,cAAc,QAAQC,QAAQC,QAE3DH,SAASK,iBAAiB,gCAAgCC,SAAQC,IAChEA,EAAQC,iBAAiB,SAAS,KAChC,MAAMC,EAAO,CACXC,WAAY,mBACZC,UAAW,oBACXC,UAAW,wBACXC,UAAW,SACXC,cAAe,cACfC,gBAAiB,SAGdjB,GAGHkB,EAAAA,EAAAA,IAAc,CAAEP,KAAM,IAAKA,EAAMQ,eAAgBb,MAFjDY,EAAAA,EAAAA,IAAc,CAAEP,KAAM,IAAKA,IAG7B,GACA,IAGJT,SAASC,cAAc,sBAAsBO,iBAAiB,SAAS,KACrE,MAAMC,EAAO,CACXC,WAAY,mBACZC,UAAW,oBACXC,UAAW,wBACXC,UAAW,SACXC,cAAe,cACfC,gBAAiB,UAGdjB,GAGHkB,EAAAA,EAAAA,IAAc,CAAEP,KAAM,IAAKA,EAAMQ,eAAgBb,MAFjDY,EAAAA,EAAAA,IAAc,CAAEP,KAAM,IAAKA,IAG7B,GAEJ,C,gIC5BA,SAASS,IACP,MAAMC,EAAgB,6BAChBC,EAAgBpB,SAASC,cAAckB,GACvCE,EAAUD,GAAelB,QAAQmB,QACjCC,EAAoBF,GAAelB,QAAQoB,kBAE7CD,GAAWC,IACbC,EAAAA,EAAAA,GAAqB,CAAEF,UAASC,sBAC7BE,MAAKC,IAEJ,MACMC,EADkB1B,SAASC,cAAc,2BACZA,cAAc,uBAC7CyB,IACFA,EAAWC,UAAYF,EAASG,kBAIlC,MAAMC,EAAYT,EAAcf,iBAAiB,0CAoB7CwB,EAAUC,QACZD,EAAUvB,SAAQC,IAChBA,EAAQoB,UArBZ,SAAiCI,GAC/B,MAAMC,EAAUhC,SAASiC,cAAc,OACvCD,EAAQE,UAAYH,EAGpB,MAAMI,EAASH,EAAQ/B,cAAc,6BAWrC,OAVAkC,GAAQC,UAAUC,IAAI,aAAc,4BAGpCL,EAAQ/B,cAAc,iBAAiBqC,SAGvCN,EAAQ/B,cAAc,kBAAkBqC,SAGpBN,EAAQ/B,cAAc,uBACvBiC,SACrB,CAIwBK,CAAwBd,EAASG,iBAAiB,IAK1E,MAAMY,EAAuB,GAAGrB,6BAChCsB,GAAGC,aAAaC,YAAYC,EAAEJ,KAE9BK,EAAAA,EAAAA,GAAsC,CAAE1B,cAAeqB,EAAsBM,UAAW,gBAAiB,IAE1GC,OAAMC,OAIb,CAxDA,sEA0DA,MAAMC,EAAe,oBAiBrB,WACE,GAAmD,OAA/CjD,SAASC,cAAc,oBAA8B,OAEzD,MACMiD,EAAQlD,SAASC,cAAc,kBACrCJ,EAAAA,EAAAA,wBAKA,MAGMsD,EAAQnD,SAASC,cAAc,6BAC/BmD,EAAaD,EAAMlD,cAAc,kBAMjCoD,GAHUrD,SAASC,cAAc,iBAGpBkD,EAAMjD,QAAQoD,OAAOC,MAAM,QAGxCC,EAAiBZ,EAAEM,GAAOO,KAAK,kBAMrC,GALAD,GACEA,EAAeE,GAAG,SAAS,YACzBC,EAAAA,EAAAA,IAA0B3D,SAASC,cAAc,uBACnD,IAEE2D,EAAAA,EAAcC,SAAU,CAE1B,MAAMC,EAAiBZ,EAAMjD,cAAc,iCAG3C,GAAID,SAASC,cAAc,sBAAuB,CAChD,MAAM8D,EAAqBC,SAAShE,SAASC,cAAc,kBAAkBC,QAAQ+D,OAC/EC,EAAmBF,SAAShE,SAASC,cAAc,uBAAuBC,QAAQgE,kBACnElE,SAASC,cAAc,cAC/BiC,UACX6B,EAAqBG,EAAmB,EAAI,MAAKH,EAAqBG,GAAqB,EAC/F,CAGId,IACFA,EAAWe,MAAMC,QAAU,QAI7BC,YAAW,WACTC,EAAAA,GACEtE,SAASC,cAAc,4BACvBD,SAASC,cAAc,iCACvB,SAAUsE,GACRvE,SAASK,iBAAiB,oCAAoCC,SAAQ,CAACkE,EAASC,KAC1EA,EAAQ,IACVD,EAAQL,MAAMC,QAAU,QAC1B,IAEFG,GAASA,EAAMnC,UAAUsC,SAAS,QAC9BZ,EAAe1B,UAAUC,IAAI,aAC7ByB,EAAe1B,UAAUE,OAAO,YACtC,GAEJ,GArD4B,MAwD5B,MAAMqC,EAAuBxB,EAAMlD,cAAc,yBAC7C0E,GACFA,EAAqBtE,iBAAiB,8BAA8BC,SAAQ,CAACsE,EAAMH,KAEjF,GAD4BpB,GAAcA,EAAWoB,IACJ,aAAtBpB,EAAWoB,IAA+C,KAAtBpB,EAAWoB,GAAe,CACvF,IAAII,EAAQ,GACZA,EACEJ,IACAtB,EAAMlD,cAAc,yBAAyBI,iBAAiB,8BAA8ByB,OAAS,EACjGuB,EAAW,GACXA,EAAWoB,GACjBG,EAAK3E,cAAc,OAAO6E,aAAa,MAAOD,GAC1CD,EAAKvE,iBAAiB,UAAUyB,OAAS,GAC3C8C,EAAKvE,iBAAiB,UAAUC,SAAQyE,IACtCA,EAAQD,aAAa,cAAeD,EAAM,GAGhD,IAGN,MAEE,GAAK3B,EAAM7C,iBAAiB,kBAAkByB,OAEvC,CAEL,MAAMkD,EAAiBhF,SAASC,cAAc,iBAE9C,IAAK+E,EAAgB,OAErB,MAAMC,EAAgBD,EAAe3E,iBAAiB,kBAEtD,GAAI4E,EAAcnD,OAAS,EAAG,CAC5B,MAAMoD,EAAalF,SAASC,cAAc,qBACpCkF,EAAkBD,EAAW7E,iBAAiB,sBAE9C+E,EAAS,IAAIC,EAAAA,EAAa,CAC9BC,QAASN,EACTO,OAAQN,EACRO,gBAAiB,MAGnBJ,EAAO5E,iBAAiB,iBAAiB,SAAUiF,GACjD,MAAMC,EAAcD,EAAME,OAE1BT,EAAWjF,cAAc,6BAA6BmC,UAAUE,OAAO,UACvE4C,EAAWjF,cAAc,sBAAsByF,OAAiBtD,UAAUC,IAAI,SAChF,IAGA,MAAMuD,GAA6BC,EAAAA,EAAAA,GACjCb,GACAzE,IACMA,EAAQuF,eACVV,EAAOW,OAEPX,EAAOY,OACT,GAEF,CACEC,UAAW,KAIf,IAAK,IAAIC,EAAI,EAAGA,EAAIf,EAAgBrD,OAAQoE,IAC1Cf,EAAgBe,GAAG1F,iBAAiB,SAASiF,IAC3C,MAAMU,EAAsBV,EAAMW,OAAOlG,SAASmG,WAE7CF,IAELf,EAAOkB,KAAKtC,SAASmC,IAGrBP,EAA2BW,UAAUvB,GAAe,GAG1D,CACF,MAtDM5B,IAAYA,EAAWoD,MAAO,GAyDtCtF,IAhKAlB,SAASQ,iBAAiB,SAAS,SAAUiG,GAC3C,MAAML,EAASK,EAAEL,OAAOM,QAAQ,6BAC3BN,GAEkBA,EAAOM,QAAQzD,KAEpC0D,EAAAA,EAAYC,wBACPhD,EAAAA,EAAcC,UACjB8C,EAAAA,EAAYE,YAGlB,GAwJF,CAEAC,E,sGCvOO,SAASA,EAAKC,EAAWC,EAAQC,GAAwB,IAAdC,EAAOC,UAAArF,OAAA,QAAA/B,IAAAoH,UAAA,GAAAA,UAAA,GAAG,CAAC,EAC3D,IAAKJ,EAAW,OAAO,EACvB,MAAMxB,EAASwB,EAAU1G,iBAAiB,qBACpC+G,EAAiB,IAAIC,sBAK3B,SAAuBC,GACjBA,EAAQxF,QACVwF,EAAQhH,SAAQ,SAAUiH,GACxB,GAAIA,EAAMzB,gBAAkBkB,EAAQ,CAClCA,EAAO3G,iBAAiB,cAAcC,SAAQ,SAAUkH,GACtDA,EAAQpF,UAAUE,OAAO,SAC3B,IACA2E,GAAYA,EAASM,EAAMnB,QAC3B,MAAMqB,EAAaT,EAAO/G,cAAc,sBAAsBsH,EAAMnB,OAAOsB,aAAa,mBACrE,OAAfD,GAAqBA,EAAWrF,UAAUC,IAAI,SACpD,CACF,GAEJ,GAlB+D6E,GAC/D,IAAK,IAAIhB,EAAI,EAAGA,EAAIX,EAAOzD,SAAUoE,EACnCkB,EAAeO,QAAQpC,EAAOW,GAiBlC,CAEO,SAAS0B,EAAiBb,EAAWC,EAAQC,GAA0C,IAAhCC,EAAOC,UAAArF,OAAA,QAAA/B,IAAAoH,UAAA,GAAAA,UAAA,GAAG,CAAEU,YAAY,GACpF,MAAMtC,EAASwB,EAAU1G,iBAAiB,qBACpC+G,EAAiB,IAAIU,kBAE3B,SAAuBC,GACrB,IAAKA,EAAUjG,OAAQ,OACvBiG,EAAUzH,SAAQ0H,IAChB,MAAM,OAAE5B,EAAM,cAAE6B,GAAkBD,EAElC,GAAsB,UAAlBC,GAA6BjB,EAAQ,CACvC,IAAKZ,EAAOhE,UAAUsC,SAAS,UAAW,OAE1CsC,EAAO3G,iBAAiB,cAAcC,SAAQ,SAAUkH,GACtDA,EAAQpF,UAAUE,OAAO,SAC3B,IACA2E,GAAYA,EAASb,GACrBY,EAAO/G,cAAc,sBAAsBmG,EAAOsB,aAAa,mBAAmBtF,UAAUC,IAAI,SAClG,IAEJ,IAEA,IAAK,IAAI6D,EAAI,EAAGA,EAAIX,EAAOzD,SAAUoE,EACnCkB,EAAeO,QAAQpC,EAAOW,GAAIgB,EAEtC,CAEO,SAASgB,EAAehF,GAC7B,MAAMiF,EAAoB,GAAGjF,wBAE7B,GAAKU,EAAAA,EAAcC,SAgBZ,CA2EL,SAASuE,EAAeC,EAAU5D,GAChC4D,EAAS/H,SAAQ,CAACC,EAAS2F,KACzB3F,EAAQuE,aAAa,iBAAmBoB,IAAMzB,GAAO,GAEzD,CA9EgC6D,MAAMC,KAAKvI,SAASK,iBAAiB8H,IAE7C7H,SAAQkI,IAC9B,MAAMC,EAAkBD,EAASnI,iBAAiB,aAC5CqI,EAAWJ,MAAMC,KAAKC,EAASnI,iBAAiB,oBAChDsI,EAAcD,EAAS5G,OAG7B,GAAI6G,EAAc,EAAG,CAEnB,MAEMC,EAFaF,EAASG,KAAIC,GAAWA,EAAQC,cAEhBC,QAAO,CAACC,EAAGC,IAAMD,EAAIC,GAAG,GAErDC,EAAmBX,EAASvI,cAAc,sBAEhDkJ,EAAiBjH,UAAY,GAE7BwG,EAASpI,SAAQ,CAACwI,EAASrE,KAEzB0E,EAAiBjH,WAwCd,4DAtCW,IAAVuC,GACF0E,EAAiBlJ,cAAc,UAAU6E,aAAa,gBAAgB,EACxE,IAGF,MAAMsE,EAA4BZ,EAASnI,iBAAiB,kBAE5D+I,EAA0B9I,SAAQ,CAAC+I,EAA0B5E,KAC3D4E,EAAyB7I,iBAAiB,SAASiG,IACjDA,EAAE6C,iBACF7C,EAAE8C,kBACFnB,EAAegB,EAA2B3E,GAE1C,MAAM+E,EAAkBhB,EAASvI,cAAc,aAGzCwJ,EAAaC,KAAKC,MAAMf,GAAmBnE,EAAQkE,IA4BjE,IAA4BiB,EAAWC,EAAXD,EA1BUH,EA0BCI,GA1BW,EAA7BL,EA2BPM,SAAS,CACnB,CAACD,EAAa,OAAS,OAAQD,EAC/BG,SAAU,UA7ByC,GAC/C,IAIJtB,EAAgBnI,SAAQ0J,IACtBA,EAAaxJ,iBACX,UACA,KACE,MAAMiE,EAAQiF,KAAKO,MAAOD,EAAaP,WAAaO,EAAajB,YAAeJ,GAChFP,EAAegB,EAA2B3E,EAAM,GAElD,IACD,GAEL,KAwBFhC,GAAGyH,QAAQC,sBAAsBvH,EAAE,aACrC,KAjG6B,CAC3BwH,EAAAA,EAAOC,IAAI,CAACC,EAAAA,GAAYC,EAAAA,KACT,IAAIH,EAAAA,EAAOjC,EAAmB,CAC3CqC,cAAe,EACfC,aAAc,EACdjE,MAAM,EACNkE,WAAY,CACVC,GAAI,qBACJC,WAAW,GAEbC,WAAY,CACVC,OAAQ,sBACRC,OAAQ,uBAEVC,oBAAqB,GAEzB,CAkFF,C,sECyIA,QAlSA,MACEC,WAAAA,CAAWC,GAA4H,IAA3H,QAAE5F,EAAO,OAAEC,EAAM,gBAAEC,EAAkB,IAAI,KAAEgB,GAAO,EAAI,WAAEqE,EAAa,CAAC,EAAC,iBAAEM,GAAmB,EAAK,eAAEC,EAAiB,KAAKF,EACnIG,KAAK/F,QAAUA,EACf+F,KAAK9F,OAASA,EACd8F,KAAK7F,gBAAkBA,EACvB6F,KAAK7E,KAAOA,EACZ6E,KAAKR,WAAaA,EAClBQ,KAAKF,iBAAmBA,EAExBE,KAAKD,eAAiBA,EAEtBC,KAAKC,WAAY,EACjBD,KAAKE,WAAY,EACjBF,KAAK3F,YAAc,EACnB2F,KAAKG,eACLH,KAAKI,uBAAmG,IAA1EJ,KAAK/F,QAAQjF,iBAAiB,iCAAiCyB,OAC7FuJ,KAAKK,gBAAkB,EAEvBL,KAAK7K,iBAAmB6K,KAAK/F,QAAQ9E,iBAAiBmL,KAAKN,KAAK/F,SAEhE+F,KAAKO,QACP,CAGAA,MAAAA,GACE,GAAIP,KAAKC,WAAaD,KAAKE,UAAW,OACtCF,KAAK3F,YAAc,EACnB2F,KAAKC,WAAY,EAEED,KAAK9F,OAAO,GAEpBnD,UAAUC,IAAI,UAGzBgJ,KAAKQ,eACLR,KAAKS,eAGLT,KAAKU,iBAAiB,CAAEC,aAAcX,KAAK3F,cAK3CuG,QAAQZ,KAAKR,YAAYqB,OACvBlM,SAASC,cAAcoL,KAAKR,WAAWqB,OAAO1L,iBAAiB,SAAS,KACtE6K,KAAKa,MAAM,IAIfD,QAAQZ,KAAKR,YAAYsB,OACvBnM,SAASC,cAAcoL,KAAKR,WAAWsB,OAAO3L,iBAAiB,SAAS,KACtE6K,KAAKc,MAAM,IAIfd,KAAKF,kBAAoBE,KAAK/F,QAAQ9E,iBAAiB,aAAc6K,KAAKe,kBAAkBT,KAAKN,MAAO,CAAEgB,SAAS,IACnHhB,KAAKF,kBAAoBE,KAAK/F,QAAQ9E,iBAAiB,YAAa8L,IAAUjB,KAAKkB,iBAAiBZ,KAAKN,MAAO,KAAM,CAAEgB,SAAS,GACnI,CAEAG,WAAAA,GACE,IAAKnB,KAAKE,UAAW,OACrB,MAAMkB,EAAepB,KAAK9F,OAAO8F,KAAK3F,aAChCvC,EAAQkI,KAAKqB,UAAUD,GAC7BpB,KAAKsB,gBAAgBtB,KAAK3F,cAGzB2F,KAAKI,wBAA0BJ,KAAKQ,eAE/B1I,EACJkI,KAAKuB,sBAAsBzJ,GAAO,KAChCA,EAAM0J,YAAc,EACpB1J,EAAM4C,OAGN5C,EAAM2J,QAAU,KACdzB,KAAK0B,gBAAgB,CACtB,IAIH1B,KAAKG,eAAiBwB,OAAO3I,YAAW,KACtCgH,KAAK0B,gBAAgB,GACpB1B,KAAK7F,gBAEZ,CAEAuH,cAAAA,IACO1B,KAAK7E,MAAQ6E,KAAK9F,OAAOzD,SAAWuJ,KAAK3F,YAAc,KAC5D2F,KAAKc,OACLd,KAAKmB,cACP,CAEAG,eAAAA,CAAgBlI,GACd,GAAI4G,KAAK3F,cAAgBjB,EAAO,OAEhC,MAAMwI,EAAY5B,KAAK3F,YACvB2F,KAAK3F,YAAcjB,EAGnB,IAAK,IAAIyB,EAAI,EAAGA,EAAImF,KAAK9F,OAAOzD,SAAUoE,EACxCmF,KAAK9F,OAAOW,GAAG9D,UAAUE,OAAO,UAIlC+I,KAAK9F,OAAOd,GAAOrC,UAAUC,IAAI,UAGjCgJ,KAAKU,iBAAiB,CAAEkB,YAAWjB,aAAcvH,IAEjD4G,KAAK6B,SAAS,gBAAiB7B,KAAK3F,YACtC,CAEAgH,SAAAA,CAAUnI,GACR,MAAyB,UAAlBA,EAAM4I,QAAsB5I,EAAQA,EAAMtE,cAAc,QACjE,CAEAmN,cAAAA,GACE/B,KAAKE,WAAY,EACjBF,KAAKmB,cACLnB,KAAK6B,SAAS,eAChB,CAEArB,YAAAA,GACE,IAAMR,KAAK7E,MAAQ6E,KAAK9F,OAAOzD,SAAWuJ,KAAK3F,YAAc,GAAM2F,KAAKI,uBAAwB,OAChG,MAAM4B,EAAYhC,KAAKiC,gBACnBD,IAAchC,KAAK3F,aACvB2F,KAAKkC,SAASF,EAChB,CAEAvB,YAAAA,GACE,IAAMT,KAAK7E,MAA6B,IAArB6E,KAAK3F,aAAsB2F,KAAKI,uBAAwB,OAC3E,MAAM+B,EAAYnC,KAAKoC,gBACnBD,IAAcnC,KAAK3F,aACvB2F,KAAKkC,SAASC,EAChB,CAEAD,QAAAA,CAAS9I,GACP,GAAI4G,KAAKI,uBAAwB,OAEjC,MAAMiC,EAAarC,KAAK9F,OAAOd,GAAOxE,cAAc,kDAGpD,IAAKyN,EAAY,OAEjBA,EAAWtL,UAAUC,IAAI,cAEzB,MAAMsL,EAAiC,UAAvBD,EAAWP,QACrBS,EAAcD,EAAU,MAAQ,SAEtCD,EAAWrN,iBAAiB,UAAUC,SAAQuN,IAC5CA,EAAO/I,aAAa8I,EAAaC,EAAO3N,QAAQ0N,IAChDF,EAAWtL,UAAUE,OAAO,cAC5BoL,EAAWtL,UAAUC,IAAI,YAAY,IAEvCsL,KAAYG,EAAAA,EAAAA,GAAeJ,IAAeA,EAAWK,OAErD1C,KAAKI,uBAAoH,IAA3FJ,KAAK/F,QAAQjF,iBAAiB,kDAAkDyB,MAChH,CAEA8K,qBAAAA,CAAsBzJ,EAAO8D,GACvB9D,EAAM6K,YAAc7K,EAAM8K,iBAC5BhH,IAEA9D,EAAM3C,iBAAiB,UAAWyG,KAAY,EAElD,CAEAqG,aAAAA,GACE,OAAIjC,KAAK9F,OAAOzD,SAAWuJ,KAAK3F,YAAc,EACrC2F,KAAK7E,KAAO,EAAI6E,KAAK3F,YAErB2F,KAAK3F,YAAc,CAE9B,CAEA+H,aAAAA,GACE,OAAyB,IAArBpC,KAAK3F,YACA2F,KAAK7E,KAAO6E,KAAK9F,OAAOzD,OAAS,EAAIuJ,KAAK3F,YAE1C2F,KAAK3F,YAAc,CAE9B,CAEAqG,gBAAAA,CAAgBmC,GAA8B,IAA7B,UAAEjB,EAAS,aAAEjB,GAAckC,EAC1C,MAAMC,EAAYlB,GAA2B,IAAdA,EAAkB5B,KAAK9F,OAAO0H,GAAa,KACpER,EAAeT,GAAiC,IAAjBA,EAAqBX,KAAK9F,OAAOyG,GAAgB,KAGtF,GAAImC,EAAW,CACb,MAAMC,EAAiB/C,KAAKqB,UAAUyB,GAChCC,GACJ/C,KAAKuB,sBAAsBwB,GAAgB,KACzCA,EAAepI,OAAO,GAG5B,CAGA,GAAIyG,EAAc,CAChB,MAAM4B,EAAoBhD,KAAKqB,UAAUD,GACnC4B,GACJhD,KAAKuB,sBAAsByB,GAAmB,KAC5CA,EAAkBxB,YAAc,IAC/BiB,EAAAA,EAAAA,GAAeO,IAAsBA,EAAkBtI,MAAM,GAGpE,CACF,CAGAqG,iBAAAA,CAAkB3G,GAChB4F,KAAKK,gBAAkBjG,EAAM6I,QAAQ,GAAGC,OAC1C,CAEAhC,gBAAAA,CAAiB9G,GACf,IAAI+I,EAAe/I,EAAM6I,QAAQ,GAAGC,QAGpC,KAFe7E,KAAK+E,IAAIpD,KAAKK,gBAAkB8C,GAElCnD,KAAKD,gBAOlB,OALA3F,EAAM6D,iBAEN+B,KAAKK,gBAAkB8C,EAAenD,KAAKa,OAASb,KAAKc,OAEzDqC,EAAe,GACR,CACT,CAGAzI,IAAAA,GACMsF,KAAKE,YAEJF,KAAKC,WACRD,KAAKqD,QAGPrD,KAAK+B,iBACL/B,KAAK6B,SAAS,eAChB,CAEAlH,KAAAA,GACOqF,KAAKE,YACVoD,aAAatD,KAAKG,gBAClBH,KAAKE,WAAY,EACjBF,KAAK6B,SAAS,gBAChB,CAEA0B,IAAAA,GACEvD,KAAKrF,QACLqF,KAAKsB,gBAAgB,GACrBtB,KAAK6B,SAAS,cAChB,CAEA5G,IAAAA,CAAK7B,GACCA,GAAS4G,KAAK9F,OAAOzD,SAEzBuJ,KAAKE,WAAaF,KAAKuD,OACvBvD,KAAKkC,SAAS9I,GACd4G,KAAKsB,gBAAgBlI,GAGrB4G,KAAKS,eACLT,KAAKQ,eACP,CAEAM,IAAAA,GACE,IAAKd,KAAK7E,MAAQ6E,KAAK9F,OAAOzD,SAAWuJ,KAAK3F,YAAc,EAAG,OAC/D,MAAM2H,EAAYhC,KAAKiC,gBACnBD,IAAchC,KAAK3F,cACvB2F,KAAKsB,gBAAgBU,GACrBhC,KAAKQ,eACP,CAEAK,IAAAA,GACE,IAAKb,KAAK7E,MAA6B,IAArB6E,KAAK3F,YAAmB,OAC1C,MAAM8H,EAAYnC,KAAKoC,gBACnBD,IAAcnC,KAAK3F,cACvB2F,KAAKsB,gBAAgBa,GACrBnC,KAAKS,eACP,CAEAoB,QAAAA,CAASzH,EAAOE,GACd,OAAO0F,KAAK/F,QAAQuJ,cAClB,IAAI7B,OAAO8B,YAAYrJ,EAAO,CAC5BE,OAAQA,IAGd,E","sources":["webpack://cms-web/./app/frontend/src/blocks/hotel_header/hotel_header.analytics.js","webpack://cms-web/./app/frontend/src/blocks/hotel_header/hotel_header.js","webpack://cms-web/./app/frontend/src/elements/scrollsnap_slider/scrollsnap_slider_nav.js","webpack://cms-web/./app/frontend/src/shared/simpleSlider/simpleSlider.js"],"sourcesContent":["import { sendUtagEvent } from '../../core/analytics/utag_events'\n\nexport function initializeUtagEvents() {\n const isFhiPage = document.querySelector('html').dataset.fhiTest !== undefined\n const fhiPageType = document.querySelector('html').dataset.fhiTest\n\n document.querySelectorAll('.utag-hotel-header-thumbnail').forEach(element => {\n element.addEventListener('click', () => {\n const data = {\n event_name: 'hotel_multimedia',\n event_cat: 'hotel information',\n event_act: 'see photos and videos',\n event_lbl: 'photos',\n event_purpose: 'inspiration',\n event_structure: 'popup',\n }\n\n if (!isFhiPage) {\n sendUtagEvent({ data: { ...data } })\n } else {\n sendUtagEvent({ data: { ...data, page_variation: fhiPageType } })\n }\n })\n })\n\n document.querySelector('.utag-info-photos')?.addEventListener('click', () => {\n const data = {\n event_name: 'hotel_multimedia',\n event_cat: 'hotel information',\n event_act: 'see photos and videos',\n event_lbl: 'header',\n event_purpose: 'inspiration',\n event_structure: 'header',\n }\n\n if (!isFhiPage) {\n sendUtagEvent({ data: { ...data } })\n } else {\n sendUtagEvent({ data: { ...data, page_variation: fhiPageType } })\n }\n })\n}\n","// PY05355, Fastbooking REB - Ficha de hotel 2023\nimport { currentDevice } from '../../core/utils/currentDevice'\nimport * as SliderNav from '../../elements/scrollsnap_slider/scrollsnap_slider_nav'\nimport fastbooking from '../../shared/fastbooking/ibh_fastbooking.js'\nimport simpleSlider from '../../shared/simpleSlider/simpleSlider.js'\nimport getRealMarketContent, { dispatchRealMarketContentUpdatedEvent } from '../../utils/get_real_market_content'\nimport inViewport from '../../utils/inViewport'\nimport { scrollToElementWithHeader } from '../../utils/scroll_to_element'\nimport { initializeUtagEvents } from '../hotel_header/hotel_header.analytics'\n\nimport('../../../src/vue/fastbooking/vue_fastbooking')\n\n// Replace CTAs with real market html content\nfunction updateCtaWithRealMarketContent() {\n const blockSelector = '.js-hotel-header-container'\n const mainContainer = document.querySelector(blockSelector)\n const blockId = mainContainer?.dataset.blockId\n const constrainedViewId = mainContainer?.dataset.constrainedViewId\n\n if (blockId && constrainedViewId) {\n getRealMarketContent({ blockId, constrainedViewId })\n .then(response => {\n // Desktop replacement\n const stickyContainer = document.querySelector('.js-header-sticky-hotel')\n const desktopCta = stickyContainer.querySelector('.js-download-button')\n if (desktopCta) {\n desktopCta.outerHTML = response.html_replacement\n }\n\n // Mobile replacement: same as desktop but without main div container and with different classes\n const mobileCta = mainContainer.querySelectorAll('.js-fastbooking-btn-price:not(.hidden)')\n function parseHtmlButtonToMobile(html) {\n const tempDiv = document.createElement('div')\n tempDiv.innerHTML = html\n\n // add mobile classes\n const button = tempDiv.querySelector('.btn-floating-fastbooking')\n button?.classList.add('js-cta-btn', 'js-fastbooking-btn-price')\n\n // Remove room/night legend\n tempDiv.querySelector('.js-hint-cnt')?.remove()\n\n // Remove duplicated string\n tempDiv.querySelector('.js-stays-per')?.remove()\n\n // return html without main div container, in mobile only btn-floating-fastbooking is needed\n const mainWrapper = tempDiv.querySelector('.js-download-button')\n return mainWrapper.innerHTML\n }\n\n if (mobileCta.length) {\n mobileCta.forEach(element => {\n element.outerHTML = parseHtmlButtonToMobile(response.html_replacement)\n })\n }\n\n // Reinit prices after replacement\n const hotelHeadersSelector = `${blockSelector}, .js-header-sticky-hotel`\n IB.currencyForm.forceUpdate($(hotelHeadersSelector))\n\n dispatchRealMarketContentUpdatedEvent({ blockSelector: hotelHeadersSelector, blockName: 'hotel-header' })\n })\n .catch(error => {\n // console.warn(error);\n })\n }\n}\n\nconst HOTEL_HEADER = '.js-hotel-header'\n\nfunction initFastbookingBtn() {\n document.addEventListener('click', function (e) {\n const target = e.target.closest('.btn-floating-fastbooking')\n if (!target) return\n\n const isHeaderSticky = target.closest(HOTEL_HEADER)\n if (isHeaderSticky) {\n fastbooking.openStickyFastbooking()\n if (!currentDevice.isMobile) {\n fastbooking.openDates()\n }\n }\n })\n}\n\nfunction init() {\n if (document.querySelector('.js-hotel-header') === null) return\n\n const block_selector = '.hotel-header'\n const block = document.querySelector(`${block_selector}`)\n initializeUtagEvents()\n\n // Giving the browser time to style the css slider\n // so it hides the slides but the first one\n // and the observer doesn't detect them (buggy behaviors)\n const timeToHideOtherSlides = 1500\n\n // Common video elements\n const video = document.querySelector('.header-top .header-image')\n const video_item = video.querySelector('.video-content')\n\n // Common pictures\n const picture = document.querySelector('.header-image')\n\n // Common videos\n const videos_arr = video.dataset.videos.split(' | ')\n\n // scroll down button\n const $js_scrolldown = $(block).find('.js-scrolldown')\n $js_scrolldown &&\n $js_scrolldown.on('click', function () {\n scrollToElementWithHeader(document.querySelector('.js-masonry-gallery'))\n })\n\n if (currentDevice.isMobile) {\n // circle button in bottom left corner which opens gallery\n const header_actions = block.querySelector(`.hotel-abouts .header-actions`)\n\n // setNumberImagesShowMoreMobile\n if (document.querySelector('.gallery-container')) {\n const totalGalleryImages = parseInt(document.querySelector('a[data-items]')?.dataset.items)\n const numVisibleImages = parseInt(document.querySelector('.gallery-container')?.dataset.numVisibleImages)\n const showMoreNode = document.querySelector('.show-more')\n showMoreNode.innerHTML =\n totalGalleryImages - numVisibleImages > 0 ? `+ ${totalGalleryImages - numVisibleImages}` : ''\n }\n\n // Hide video section in mobile\n if (video_item) {\n video_item.style.display = 'none'\n }\n\n // request idle callback too fast to use here\n setTimeout(function () {\n SliderNav.init(\n document.querySelector('.hotel-header .ss-slider'),\n document.querySelector('.hotel-header .ss-slider-nav'),\n function (slide) {\n document.querySelectorAll('.hotel-header .ss-slider picture').forEach((picture, index) => {\n if (index > 0) {\n picture.style.display = 'block'\n }\n })\n slide && slide.classList.contains('last')\n ? header_actions.classList.add('is-hidden')\n : header_actions.classList.remove('is-hidden')\n }\n )\n }, timeToHideOtherSlides)\n\n // Replace default images with gif in some cases\n const videoSliderContainer = video.querySelector('.ss-slider--container')\n if (videoSliderContainer) {\n videoSliderContainer.querySelectorAll('.ss-slide.js-slide-element').forEach((item, index) => {\n const is_valid_videos_arr = videos_arr && videos_arr[index]\n if (is_valid_videos_arr && videos_arr[index] !== 'No video' && videos_arr[index] !== '') {\n let value = ''\n value =\n index ===\n video.querySelector('.ss-slider--container').querySelectorAll('.ss-slide.js-slide-element').length - 1\n ? videos_arr[0]\n : videos_arr[index]\n item.querySelector('img').setAttribute('src', value)\n if (item.querySelectorAll('source').length > 0) {\n item.querySelectorAll('source').forEach(subitem => {\n subitem.setAttribute('data-srcset', value)\n })\n }\n }\n })\n }\n } else {\n // only one image available, no need to keep executing script\n if (!block.querySelectorAll('.js-slide-item').length) {\n if (video_item) video_item.loop = true\n } else {\n // Simple slider init\n const $sliderWrapper = document.querySelector('.js-ss-slider')\n\n if (!$sliderWrapper) return\n\n const $sliderSlides = $sliderWrapper.querySelectorAll('.js-slide-item')\n\n if ($sliderSlides.length > 1) {\n const $sliderNav = document.querySelector('.js-ss-slider-nav')\n const $sliderNavItems = $sliderNav.querySelectorAll('[data-slide-index]')\n\n const slider = new simpleSlider({\n wrapper: $sliderWrapper,\n slides: $sliderSlides,\n autoPlayTimeout: 6000,\n })\n\n slider.addEventListener('slider:change', function (event) {\n const activeIndex = event.detail\n // Update nav\n $sliderNav.querySelector('[data-slide-index].active').classList.remove('active')\n $sliderNav.querySelector(`[data-slide-index=\"${activeIndex}\"]`).classList.add('active')\n })\n\n // Play slider when entering viewport and Pause when leaving\n const sliderIntersectionObserver = inViewport(\n $sliderWrapper,\n element => {\n if (element.isIntersecting) {\n slider.play()\n } else {\n slider.pause()\n }\n },\n {\n threshold: 0.3,\n }\n )\n\n for (let i = 0; i < $sliderNavItems.length; i++) {\n $sliderNavItems[i].addEventListener('click', event => {\n const newSlideActiveIndex = event.target.dataset?.slideIndex\n\n if (!newSlideActiveIndex) return\n\n slider.goTo(parseInt(newSlideActiveIndex))\n\n // Autoplay is stopped, so unobserve intersection to prevent a new autoplay\n sliderIntersectionObserver.unobserve($sliderWrapper)\n })\n }\n }\n }\n }\n\n updateCtaWithRealMarketContent()\n\n initFastbookingBtn()\n}\n\ninit()\n","import Swiper from 'swiper'\nimport { Navigation, Pagination } from 'swiper/modules'\n\nimport { currentDevice } from '../../core/utils/currentDevice'\n\nexport function init(ss_slider, ss_nav, callback, options = {}) {\n if (!ss_slider) return false\n const slides = ss_slider.querySelectorAll('.js-slide-element')\n const slidesObserver = new IntersectionObserver(observeSlides, options)\n for (let i = 0; i < slides.length; ++i) {\n slidesObserver.observe(slides[i])\n }\n\n function observeSlides(entries) {\n if (entries.length) {\n entries.forEach(function (entry) {\n if (entry.isIntersecting && ss_nav) {\n ss_nav.querySelectorAll('.radio-btn').forEach(function (nav_btn) {\n nav_btn.classList.remove('active')\n })\n callback && callback(entry.target)\n const slide_item = ss_nav.querySelector(`[data-slide-index=\"${entry.target.getAttribute('data-index')}\"]`)\n if (slide_item !== null) slide_item.classList.add('active')\n }\n })\n }\n }\n}\n\nexport function initWithMutation(ss_slider, ss_nav, callback, options = { attributes: true }) {\n const slides = ss_slider.querySelectorAll('.js-slide-element')\n const slidesObserver = new MutationObserver(observeSlides)\n\n function observeSlides(mutations) {\n if (!mutations.length) return\n mutations.forEach(mutation => {\n const { target, attributeName } = mutation\n\n if (attributeName === 'class' && ss_nav) {\n if (!target.classList.contains('active')) return\n\n ss_nav.querySelectorAll('.radio-btn').forEach(function (nav_btn) {\n nav_btn.classList.remove('active')\n })\n callback && callback(target)\n ss_nav.querySelector(`[data-slide-index=\"${target.getAttribute('data-index')}\"]`).classList.add('active')\n }\n })\n }\n\n for (let i = 0; i < slides.length; ++i) {\n slidesObserver.observe(slides[i], options)\n }\n}\n\nexport function carouselModule(block) {\n const carouselContainer = `${block} .carousel-container`\n\n if (!currentDevice.isMobile) {\n Swiper.use([Navigation, Pagination])\n const swiper = new Swiper(carouselContainer, {\n slidesPerView: 1,\n spaceBetween: 0,\n loop: true,\n pagination: {\n el: '.swiper-pagination',\n clickable: true,\n },\n navigation: {\n nextEl: '.swiper-button-next',\n prevEl: '.swiper-button-prev',\n },\n lazyPreloadPrevNext: 3,\n })\n } else {\n const carouselContainerMobile = Array.from(document.querySelectorAll(carouselContainer))\n\n carouselContainerMobile.forEach(carousel => {\n const carouselContent = carousel.querySelectorAll('.carousel')\n const arrItems = Array.from(carousel.querySelectorAll('.carousel__item'))\n const itemsLength = arrItems.length\n\n // Show navigation buttons if more than one photo\n if (itemsLength > 1) {\n // We find out the width of each photo\n const itemsWidth = arrItems.map(arrItem => arrItem.scrollWidth)\n // Sum total width\n const totalItemsWidth = itemsWidth.reduce((a, b) => a + b, 0)\n\n const controlCarousels = carousel.querySelector('.controls-carousel')\n\n controlCarousels.innerHTML = ''\n\n arrItems.forEach((arrItem, index) => {\n // Add template\n controlCarousels.innerHTML += templateNavigationControls()\n // To the first button we add aria-press true so that it is highlighted\n if (index === 0) {\n controlCarousels.querySelector('button').setAttribute('aria-pressed', true)\n }\n })\n\n const buttonsNavigationCarousel = carousel.querySelectorAll('.controls__dot')\n\n buttonsNavigationCarousel.forEach((buttonNavigationCarousel, index) => {\n buttonNavigationCarousel.addEventListener('click', e => {\n e.preventDefault()\n e.stopPropagation()\n setAriaPressed(buttonsNavigationCarousel, index)\n\n const destinoCarrusel = carousel.querySelector('.carousel')\n\n // Calculate total width of photos for scroll scrolling\n const scrollLeft = Math.floor(totalItemsWidth * (index / itemsLength))\n\n smoothScroll(destinoCarrusel, scrollLeft, true)\n })\n })\n\n // If we change the photo, mark the corresponding navigation button.\n carouselContent.forEach(carouselItem => {\n carouselItem.addEventListener(\n 'scroll',\n () => {\n const index = Math.round((carouselItem.scrollLeft / carouselItem.scrollWidth) * itemsLength)\n setAriaPressed(buttonsNavigationCarousel, index)\n },\n 200\n )\n })\n }\n })\n\n // Template HTML\n function templateNavigationControls() {\n return `\n \n `\n }\n\n // Scroll Smooth\n function smoothScroll(node, topOrLeft, horizontal) {\n return node.scrollTo({\n [horizontal ? 'left' : 'top']: topOrLeft,\n behavior: 'smooth',\n })\n }\n\n // Add aria-pressed to false for every navigation item except the one in focus.\n function setAriaPressed(elements, index) {\n elements.forEach((element, i) => {\n element.setAttribute('aria-pressed', !!(i === index))\n })\n }\n IB.lazyImg.loadAllImagesSelector($('.carousel'))\n }\n}\n","import _debounce from 'lodash/debounce';\nimport { isVideoPlaying } from '../../utils/videoUtils.js';\n\nclass simpleSlider {\n constructor({ wrapper, slides, autoPlayTimeout = 6000, loop = true, navigation = {}, touchMoveEnabled = false, swipeThreshold = 100 }) {\n this.wrapper = wrapper;\n this.slides = slides;\n this.autoPlayTimeout = autoPlayTimeout;\n this.loop = loop; // if true returns to first slide after last slide\n this.navigation = navigation;\n this.touchMoveEnabled = touchMoveEnabled;\n // Set how far the user must swipe before it is considered a swipe. Example 50: Swipe at least 50px\n this.swipeThreshold = swipeThreshold;\n\n this.isStarted = false;\n this.isPlaying = false;\n this.activeIndex = 0;\n this.currentTimeout;\n this.allSlidesContentLoaded = this.wrapper.querySelectorAll('.js-lazy-load:not(.is-loaded)').length === 0;\n this.touchStartCoord = 0;\n\n this.addEventListener = this.wrapper.addEventListener.bind(this.wrapper);\n\n this._start();\n }\n\n // Private Methods\n _start() {\n if (this.isStarted || this.isPlaying) return;\n this.activeIndex = 0;\n this.isStarted = true;\n\n const firstSlide = this.slides[0];\n\n firstSlide.classList.add('active');\n\n // Preload next/prev slide content\n this._preloadNext();\n this._preloadPrev();\n\n // Handles video reproduction if needed\n this._handleVideoPlay({ currentIndex: this.activeIndex });\n\n // Event listeners\n\n // Prev button click\n Boolean(this.navigation?.prev) &&\n document.querySelector(this.navigation.prev)?.addEventListener('click', () => {\n this.prev();\n });\n\n // Next button click\n Boolean(this.navigation?.next) &&\n document.querySelector(this.navigation.next)?.addEventListener('click', () => {\n this.next();\n });\n\n // Touch move\n this.touchMoveEnabled && this.wrapper.addEventListener('touchstart', this._handleTouchStart.bind(this), { passive: false });\n this.touchMoveEnabled && this.wrapper.addEventListener('touchmove', _debounce(this._handleTouchMove.bind(this), 100), { passive: false });\n }\n\n _sliderLoop() {\n if (!this.isPlaying) return;\n const currentSlide = this.slides[this.activeIndex];\n const video = this._getVideo(currentSlide);\n this._setActiveSlide(this.activeIndex);\n\n // Preload next slide content\n !this.allSlidesContentLoaded && this._preloadNext();\n\n if (!!video) {\n this._continueOnVideoReady(video, () => {\n video.currentTime = 0;\n video.play();\n\n // Next iteration\n video.onended = () => {\n this._nextIteration();\n };\n });\n } else {\n // Next iteration\n this.currentTimeout = window.setTimeout(() => {\n this._nextIteration();\n }, this.autoPlayTimeout);\n }\n }\n\n _nextIteration() {\n if (!this.loop && this.slides.length === this.activeIndex + 1) return;\n this.next();\n this._sliderLoop();\n }\n\n _setActiveSlide(index) {\n if (this.activeIndex === index) return;\n\n const lastIndex = this.activeIndex;\n this.activeIndex = index;\n\n // Remove active classes\n for (var i = 0; i < this.slides.length; ++i) {\n this.slides[i].classList.remove('active');\n }\n\n // Set current active slider\n this.slides[index].classList.add('active');\n\n // Handles video reproduction if needed\n this._handleVideoPlay({ lastIndex, currentIndex: index });\n\n this.dispatch('slider:change', this.activeIndex);\n }\n\n _getVideo(slide) {\n return slide.tagName === 'VIDEO' ? slide : slide.querySelector('video');\n }\n\n _startAutoplay() {\n this.isPlaying = true;\n this._sliderLoop();\n this.dispatch('slider:start');\n }\n\n _preloadNext() {\n if ((!this.loop && this.slides.length === this.activeIndex + 1) || this.allSlidesContentLoaded) return;\n const nextIndex = this._getNextIndex();\n if (nextIndex === this.activeIndex) return;\n this._preload(nextIndex);\n }\n\n _preloadPrev() {\n if ((!this.loop && this.activeIndex === 0) || this.allSlidesContentLoaded) return;\n const prevIndex = this._getPrevIndex();\n if (prevIndex === this.activeIndex) return;\n this._preload(prevIndex);\n }\n\n _preload(index) {\n if (this.allSlidesContentLoaded) return;\n\n const itemToLoad = this.slides[index].querySelector('.js-lazy-load:not(.is-loaded):not(.is-loading)');\n\n // Return if already loaded\n if (!itemToLoad) return;\n\n itemToLoad.classList.add('is-loading');\n\n const isVideo = itemToLoad.tagName === 'VIDEO';\n const srcAttrName = isVideo ? 'src' : 'srcset';\n\n itemToLoad.querySelectorAll('source').forEach(source => {\n source.setAttribute(srcAttrName, source.dataset[srcAttrName]);\n itemToLoad.classList.remove('is-loading');\n itemToLoad.classList.add('is-loaded');\n });\n isVideo && !isVideoPlaying(itemToLoad) && itemToLoad.load();\n\n this.allSlidesContentLoaded = this.wrapper.querySelectorAll('.js-lazy-load:not(.is-loaded):not(.is-loading)').length === 0;\n }\n\n _continueOnVideoReady(video, callback) {\n if (video.readyState >= video.HAVE_FUTURE_DATA) {\n callback();\n } else {\n video.addEventListener('canplay', callback(), false);\n }\n }\n\n _getNextIndex() {\n if (this.slides.length === this.activeIndex + 1) {\n return this.loop ? 0 : this.activeIndex;\n } else {\n return this.activeIndex + 1;\n }\n }\n\n _getPrevIndex() {\n if (this.activeIndex === 0) {\n return this.loop ? this.slides.length - 1 : this.activeIndex;\n } else {\n return this.activeIndex - 1;\n }\n }\n\n _handleVideoPlay({ lastIndex, currentIndex }) {\n const lastSlide = lastIndex || lastIndex === 0 ? this.slides[lastIndex] : null;\n const currentSlide = currentIndex || currentIndex === 0 ? this.slides[currentIndex] : null;\n\n // If there's video in last slide pauses it\n if (lastSlide) {\n const lastSlideVideo = this._getVideo(lastSlide);\n if (!!lastSlideVideo) {\n this._continueOnVideoReady(lastSlideVideo, () => {\n lastSlideVideo.pause();\n });\n }\n }\n\n // If there's video in current slide plays it\n if (currentSlide) {\n const currentSlideVideo = this._getVideo(currentSlide);\n if (!!currentSlideVideo) {\n this._continueOnVideoReady(currentSlideVideo, () => {\n currentSlideVideo.currentTime = 0;\n !isVideoPlaying(currentSlideVideo) && currentSlideVideo.play();\n });\n }\n }\n }\n\n // Touch events\n _handleTouchStart(event) {\n this.touchStartCoord = event.touches[0].clientX;\n }\n\n _handleTouchMove(event) {\n let currentCoord = event.touches[0].clientX;\n const offset = Math.abs(this.touchStartCoord - currentCoord);\n\n if (offset < this.swipeThreshold) return;\n\n event.preventDefault();\n\n this.touchStartCoord < currentCoord ? this.prev() : this.next();\n\n currentCoord = 0;\n return false;\n }\n\n // Public Methods\n play() {\n if (this.isPlaying) return;\n\n if (!this.isStarted) {\n this.start();\n }\n\n this._startAutoplay();\n this.dispatch('slider:play');\n }\n\n pause() {\n if (!this.isPlaying) return;\n clearTimeout(this.currentTimeout);\n this.isPlaying = false;\n this.dispatch('slider:pause');\n }\n\n stop() {\n this.pause();\n this._setActiveSlide(0);\n this.dispatch('slider:stop');\n }\n\n goTo(index) {\n if (index >= this.slides.length) return;\n\n this.isPlaying && this.stop();\n this._preload(index);\n this._setActiveSlide(index);\n\n // Preload slides content\n this._preloadPrev();\n this._preloadNext();\n }\n\n next() {\n if (!this.loop && this.slides.length === this.activeIndex + 1) return;\n const nextIndex = this._getNextIndex();\n if (nextIndex === this.activeIndex) return;\n this._setActiveSlide(nextIndex);\n this._preloadNext();\n }\n\n prev() {\n if (!this.loop && this.activeIndex === 0) return;\n const prevIndex = this._getPrevIndex();\n if (prevIndex === this.activeIndex) return;\n this._setActiveSlide(prevIndex);\n this._preloadPrev();\n }\n\n dispatch(event, detail) {\n return this.wrapper.dispatchEvent(\n new window.CustomEvent(event, {\n detail: detail,\n })\n );\n }\n}\n\nexport default simpleSlider;\n"],"names":["initializeUtagEvents","isFhiPage","undefined","document","querySelector","dataset","fhiTest","fhiPageType","querySelectorAll","forEach","element","addEventListener","data","event_name","event_cat","event_act","event_lbl","event_purpose","event_structure","sendUtagEvent","page_variation","updateCtaWithRealMarketContent","blockSelector","mainContainer","blockId","constrainedViewId","getRealMarketContent","then","response","desktopCta","outerHTML","html_replacement","mobileCta","length","html","tempDiv","createElement","innerHTML","button","classList","add","remove","parseHtmlButtonToMobile","hotelHeadersSelector","IB","currencyForm","forceUpdate","$","dispatchRealMarketContentUpdatedEvent","blockName","catch","error","HOTEL_HEADER","block","video","video_item","videos_arr","videos","split","$js_scrolldown","find","on","scrollToElementWithHeader","currentDevice","isMobile","header_actions","totalGalleryImages","parseInt","items","numVisibleImages","style","display","setTimeout","SliderNav","slide","picture","index","contains","videoSliderContainer","item","value","setAttribute","subitem","$sliderWrapper","$sliderSlides","$sliderNav","$sliderNavItems","slider","simpleSlider","wrapper","slides","autoPlayTimeout","event","activeIndex","detail","sliderIntersectionObserver","inViewport","isIntersecting","play","pause","threshold","i","newSlideActiveIndex","target","slideIndex","goTo","unobserve","loop","e","closest","fastbooking","openStickyFastbooking","openDates","init","ss_slider","ss_nav","callback","options","arguments","slidesObserver","IntersectionObserver","entries","entry","nav_btn","slide_item","getAttribute","observe","initWithMutation","attributes","MutationObserver","mutations","mutation","attributeName","carouselModule","carouselContainer","setAriaPressed","elements","Array","from","carousel","carouselContent","arrItems","itemsLength","totalItemsWidth","map","arrItem","scrollWidth","reduce","a","b","controlCarousels","buttonsNavigationCarousel","buttonNavigationCarousel","preventDefault","stopPropagation","destinoCarrusel","scrollLeft","Math","floor","topOrLeft","horizontal","scrollTo","behavior","carouselItem","round","lazyImg","loadAllImagesSelector","Swiper","use","Navigation","Pagination","slidesPerView","spaceBetween","pagination","el","clickable","navigation","nextEl","prevEl","lazyPreloadPrevNext","constructor","_ref","touchMoveEnabled","swipeThreshold","this","isStarted","isPlaying","currentTimeout","allSlidesContentLoaded","touchStartCoord","bind","_start","_preloadNext","_preloadPrev","_handleVideoPlay","currentIndex","Boolean","prev","next","_handleTouchStart","passive","_debounce","_handleTouchMove","_sliderLoop","currentSlide","_getVideo","_setActiveSlide","_continueOnVideoReady","currentTime","onended","_nextIteration","window","lastIndex","dispatch","tagName","_startAutoplay","nextIndex","_getNextIndex","_preload","prevIndex","_getPrevIndex","itemToLoad","isVideo","srcAttrName","source","isVideoPlaying","load","readyState","HAVE_FUTURE_DATA","_ref2","lastSlide","lastSlideVideo","currentSlideVideo","touches","clientX","currentCoord","abs","start","clearTimeout","stop","dispatchEvent","CustomEvent"],"sourceRoot":""}