{"version":3,"sources":["webpack:///./node_modules/@logitravel/alex-comp-cru/components/searcher-cruises/client/js/config.js","webpack:///./node_modules/@bluekiri/alexandria-contrib-components/components/select/client/js/config.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/searcher-cruises/client/js/select.js","webpack:///./node_modules/@bluekiri/alexandria-contrib-components/components/select/client/js/prototype.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/searcher-cruises/client/js/index.js","webpack:///./node_modules/@bluekiri/alexandria-contrib-components/components/select/client/js/index.js","webpack:///./node_modules/@bluekiri/alexandria-contrib-components/helpers/ga4Event.js"],"names":["configuration","type","destinations","departures","shippings","durations","ports","submit","reset","loader","filters","message","css","buttonDisable","modalHidden","messageHidden","module","exports","config","component","init","domEvents","autoStore","valid","error","active","hidden","hasChoices","withBorder","withLabel","multiple","isActive","onChange","enableClick","choices","searchEnabled","renderChoiceLimit","searchResultLimit","removeItemButton","placeholderValue","searchPlaceholderValue","loadingText","noResultsText","noChoicesText","itemSelectText","sortFn","onOpen","$","require","window","jQuery","SelectClient","addGa4Event","updateDestinations","instance","newChoices","value","searcherSelects","get","clearStore","setChoices","set","updateDepartures","updateShippings","updateDurations","updatePorts","animateNumber","number","elementNumber","element","querySelector","elementText","currentNumber","innerHTML","target","parseInt","settings","literals","results","result","numberValue","animate","duration","easing","step","now","toFixed","transformDataItems","arrayData","featuredContent","otherContent","items","features","filter","item","highlight","others","length","push","label","prepareData","data","yearContent","years","obj","feature","other","dates","year","forEach","date","split","indexOf","concat","lines","unshift","selected","getForm","codZona","codSalida","codNaviera","codDuracion","codPuerto","getInputOptions","values","endPoint","urlAjax","params","Object","keys","map","key","encodeURIComponent","join","app","application","lang","language","url","Promise","resolve","reject","done","response","JSON","parse","fail","setButtonReset","buttonReset","document","selector","resetForm","then","counter","classList","add","removeEventListener","isReset","remove","addEventListener","initSelects","configBase","placeholderInput","configDurations","_objectSpread","destinationsSelector","departuresSelector","shippingsSelector","durationsSelector","portsSelector","setSelects","buttonSubmit","tooltipMessage","baseUrl","urlShowcase","event","contains","validate","buildUrl","event_type","event_detail","labels","filtersText","i","openLoader","fetch","location","assign","setSubmitButton","_require","addToStore","removeFromStore","Choices","store","prototype","show","this","hide","hasError","hasChoicesMultiple","containerInner","setChoicesMultiple","itemList","hasChildNodes","setValid","setError","resetStatus","setPairing","getSelect","setAttribute","id","getLabel","valueOnly","arguments","undefined","getValue","setChoiceByValue","_this","replace","_this2","onClick","showDropdown","stopPropagation","_this3","getStore","hideDropdown","call","bindEvents","bind","_this4","setupChoices","isMultiple","dataset","ismultiple","elementExist","randomId","create","dataLayer"],"mappings":";+EAIA,IAAMA,EAAgB,CAClBC,KAAM,CACFC,aAAc,sBACdC,WAAY,oBACZC,UAAW,mBACXC,UAAW,mBACXC,MAAO,eACPC,OAAQ,gBACRC,MAAO,eACPC,OAAQ,eACRC,QAAS,eACTC,QAAS,mBAEbC,IAAK,CACDC,cAAe,YACfC,YAAa,WACbC,cAAe,aAMvBC,EAAOC,QAFQ,WAAH,OAASjB,I,mBCpBrB,IAAMkB,EAAS,CACXC,UAAW,SACXC,MAAM,EACNC,WAAW,EACXC,WAAW,EACXV,IAAK,CACDW,MAAO,WACPC,MAAO,YACPC,OAAQ,YACRC,OAAQ,YACRC,WAAY,cACZC,WAAY,sBACZC,UAAW,qBACXC,SAAU,oBAEdC,UAAU,EACVC,SAAU,GACVC,aAAa,EACbC,QAAS,CACLC,eAAe,EACfC,mBAAoB,EACpBC,kBAAmB,EACnBC,kBAAkB,EAClBC,iBAAkB,oBAClBC,uBAAwB,oBACxBC,YAAa,aACbC,cAAe,mBACfC,cAAe,4BACfC,eAAgB,kBAChBC,OAAQ,cAMZC,OAAQ,cAGZ9B,EAAOC,QAAU,kBAAMC,I,kvBCvCvB,IAAM6B,EAAIC,EAAQ,QAElBC,OAAOF,EAAIA,EACXE,OAAOC,OAASH,EAGhB,IAAMI,EAAeH,EAAQ,QAErBI,EAAgBJ,EAAQ,QAAxBI,YAEFlC,EAAS8B,EAAQ,QAiIvB,SAASK,EAAmBC,EAAUC,GAClC,IAAQC,EAAUF,EAASG,gBAAgBvD,aAAawD,MAAhDF,MACRF,EAASG,gBAAgBvD,aAAagC,QAAQyB,aAC9CL,EAASG,gBAAgBvD,aAAagC,QAAQ0B,WAAWL,EAAY,QAAS,SAAS,GACvFD,EAASG,gBAAgBvD,aAAa2D,IAAIL,GAG9C,SAASM,EAAiBR,EAAUC,GAChC,IAAQC,EAAUF,EAASG,gBAAgBtD,WAAWuD,MAA9CF,MACRF,EAASG,gBAAgBtD,WAAW+B,QAAQyB,aAC5CL,EAASG,gBAAgBtD,WAAW+B,QAAQ0B,WAAWL,EAAY,QAAS,SAAS,GACrFD,EAASG,gBAAgBtD,WAAW0D,IAAIL,GAG5C,SAASO,EAAgBT,EAAUC,GAC/B,IAAQC,EAAUF,EAASG,gBAAgBrD,UAAUsD,MAA7CF,MACRF,EAASG,gBAAgBrD,UAAU8B,QAAQyB,aAC3CL,EAASG,gBAAgBrD,UAAU8B,QAAQ0B,WAAWL,EAAY,QAAS,SAAS,GACpFD,EAASG,gBAAgBrD,UAAUyD,IAAIL,GAG3C,SAASQ,EAAgBV,EAAUC,GAC/B,IAAQC,EAAUF,EAASG,gBAAgBpD,UAAUqD,MAA7CF,MACRF,EAASG,gBAAgBpD,UAAU6B,QAAQyB,aAC3CL,EAASG,gBAAgBpD,UAAU6B,QAAQ0B,WAAWL,EAAY,QAAS,SAAS,GACpFD,EAASG,gBAAgBpD,UAAUwD,IAAIL,GAG3C,SAASS,EAAYX,EAAUC,GAC3B,IAAQC,EAAUF,EAASG,gBAAgBnD,MAAMoD,MAAzCF,MACRF,EAASG,gBAAgBnD,MAAM4B,QAAQyB,aACvCL,EAASG,gBAAgBnD,MAAM4B,QAAQ0B,WAAWL,EAAY,QAAS,SAAS,GAChFD,EAASG,gBAAgBnD,MAAMuD,IAAIL,GAGvC,SAASU,EAAcZ,EAAUa,GAC7B,IAAMC,EAAgBd,EAASe,QAAQC,cAAc,wBAC/CC,EAAcjB,EAASe,QAAQC,cAAc,6BAC7CE,EAAgBJ,EAAcK,UAC9BC,EAASC,SAASR,EAAQ,IAEhCI,EAAYE,UAAYnB,EAASsB,SAASC,SAASC,QACpC,IAAXJ,IACAH,EAAYE,UAAYnB,EAASsB,SAASC,SAASE,QAGvDhC,EAAE,CAAEiC,YAAaR,IAAiBS,QAC9B,CAAED,YAAaN,GACf,CACIQ,SAAU,IACVC,OAAQ,QACRC,KAAM,SAAAC,GACFjB,EAAcK,UAAYY,EAAIC,QAAQ,MAMtD,SAASC,EAAmBC,EAAWC,EAAiBC,GAEpD,IAAMC,EAAQ,GACRC,EAAWJ,EAAUK,QAAO,SAAAC,GAAI,OAAuB,IAAnBA,EAAKC,aACzCC,EAASR,EAAUK,QAAO,SAAAC,GAAI,OAAuB,IAAnBA,EAAKC,aAgB7C,OAdIH,EAASK,QACTN,EAAMO,KAAK,CACPC,MAAOH,EAAOC,OAASR,EAAkB,GACzCvD,QAAS0D,IAIbI,EAAOC,QACPN,EAAMO,KAAK,CACPC,MAAOP,EAASK,OAASP,EAAe,GACxCxD,QAAS8D,IAIVL,EAuBX,SAASS,EAAYC,EAAMxB,GACvB,IArB4BW,EAAWc,EACjCC,EACAZ,EAmBAa,EAAM,CACRtG,aAAcqF,EAAmBc,EAAKnG,aAAc2E,EAAS4B,QAAS5B,EAAS6B,OAC/EvG,YAvBwBqF,EAuBWa,EAAKM,MAvBLL,EAuBYzB,EAAS+B,KAtBtDL,EAAQ,GACRZ,EAAQ,GAEdH,EAAUqB,SAAQ,SAAAC,GACd,IAAMF,EAAOjC,SAASmC,EAAKtD,MAAMuD,MAAM,KAAK,GAAI,KAEnB,IAAzBR,EAAMS,QAAQJ,KACdL,EAAML,KAAKU,GAEXjB,EAAMO,KAAK,CACPC,MAAO,GAAFc,OAAKX,EAAW,KAAAW,OAAIL,GACzB1E,QAASsD,EAAUK,QAAO,SAAAC,GAAI,OAAInB,SAASmB,EAAKtC,MAAMuD,MAAM,KAAK,GAAI,MAAQH,WAKlFjB,GAOHvF,UAAWmF,EAAmBc,EAAKa,MAAOrC,EAAS4B,QAAS5B,EAAS6B,OACrErG,UAAWgG,EAAKnB,SAChB5E,MAAOiF,EAAmBc,EAAK/F,MAAOuE,EAAS4B,QAAS5B,EAAS6B,QASrE,OANAF,EAAItG,aAAaiH,QAAQ,CAAEhB,MAAO,GAAIjE,QAAS,CAAC,CAAEsB,MAAO,GAAI2C,MAAOtB,EAAS3E,iBAC7EsG,EAAIrG,WAAWgH,QAAQ,CAAEhB,MAAO,GAAIjE,QAAS,CAAC,CAAEsB,MAAO,GAAI2C,MAAOtB,EAAS1E,eAC3EqG,EAAIpG,UAAU+G,QAAQ,CAAEhB,MAAO,GAAIjE,QAAS,CAAC,CAAEsB,MAAO,GAAI2C,MAAOtB,EAASzE,cAC1EoG,EAAInG,UAAU8G,QAAQ,CAAEhB,MAAOtB,EAASxE,UAAWmD,MAAO,GAAI4D,UAAU,IACxEZ,EAAIlG,MAAM6G,QAAQ,CAAEhB,MAAO,GAAIjE,QAAS,CAAC,CAAEsB,MAAO,GAAI2C,MAAOtB,EAASvE,UAE/DkG,EAGX,SAASa,EAAQ/D,GASb,MARe,CACXgE,QAAShE,EAASG,gBAAgBvD,aAAawD,MAC/C6D,UAAWjE,EAASG,gBAAgBtD,WAAWuD,MAC/C8D,WAAYlE,EAASG,gBAAgBrD,UAAUsD,MAC/C+D,YAAanE,EAASG,gBAAgBpD,UAAUqD,MAChDgE,UAAWpE,EAASG,gBAAgBnD,MAAMoD,OAMlD,SAASiE,EAAgBrE,GACrB,IAAMsE,EAASP,EAAQ/D,GACjBuE,EAAWvE,EAASsB,SAASkD,QAC7BC,EAASC,OAAOC,KAAKL,GACtBM,KAAI,SAAAC,GAAG,SAAAlB,OAAOmB,mBAAmBD,GAAI,KAAAlB,OAAImB,mBAAmBR,EAAOO,GAAK3E,WACxE6E,KAAK,KACJC,EAAMhF,EAASsB,SAAS2D,aAAe,aACvCC,EAAOlF,EAASsB,SAAS6D,UAAY,KAErCC,EAAM,GAAHzB,OAAMY,EAAQ,KAAAZ,OAAIc,EAAM,iBAAAd,OAAgBqB,EAAG,cAAArB,OAAauB,GAEjE,OAAO,IAAIG,SAAQ,SAACC,EAASC,GAKzB,OAJa9F,EAAEW,IAAIgF,GACdI,MAAK,SAAAC,GAAQ,OAAIH,EAAQI,KAAKC,MAAMF,OACpCG,KAAKL,MAkBlB,SAASM,EAAe7F,GACpB,IAAMyB,EAASzB,EACT8F,EAAcC,SAAS/E,cAAc,GAAD2C,OAAIlC,EAAOuE,SAAQ,iBAAArC,OAAgB/F,IAASjB,KAAKO,MAAK,OAC1F+I,EAAY,WACVxE,EAAOtB,kBACPsB,EAAOtB,gBAAgBvD,aAAa2D,IAAI,IACxCkB,EAAOtB,gBAAgBtD,WAAW0D,IAAI,IACtCkB,EAAOtB,gBAAgBrD,UAAUyD,IAAI,IACrCkB,EAAOtB,gBAAgBpD,UAAUwD,IAAI,IACrCkB,EAAOtB,gBAAgBnD,MAAMuD,IAAI,IAEjC8D,EAAgB5C,GAAQyE,MAAK,SAAAnD,GACzB,IAAM9C,EAAa6C,EAAYC,EAAMtB,EAAOH,SAASC,UAErDX,EAAca,EAAQsB,EAAKoD,SAC3BpG,EAAmB0B,EAAQxB,EAAWrD,cACtC4D,EAAiBiB,EAAQxB,EAAWpD,YACpC4D,EAAgBgB,EAAQxB,EAAWnD,WACnC6D,EAAYc,EAAQxB,EAAWjD,OAC/B0D,EAAgBe,EAAQxB,EAAWlD,eAI3C+I,EAAYM,UAAUC,IAAIzI,IAASN,IAAIC,eACvCuI,EAAYQ,oBAAoB,QAASL,GACzCxE,EAAO8E,SAAU,GASrB,OANK9E,EAAO8E,UACRT,EAAYM,UAAUI,OAAO5I,IAASN,IAAIC,eAC1CuI,EAAYW,iBAAiB,QAASR,GACtCxE,EAAO8E,SAAU,IAGd,EAoEX7I,EAAOC,QAAU,CACb+I,YAxYJ,SAAqB1G,GACjB,IAAMyB,EAASzB,EACTgG,EAAWhG,EAASgG,UAAY,GAGtCvE,EAAO8E,SAAU,EAGjB9E,EAAOtB,gBAqFX,SAAoB6F,EAAUhG,GAC1B,IAAM2G,EAAa,CACf/H,QAAS,CACLM,uBAAwBc,EAASsB,SAASC,SAASqF,mBAIrDC,EAAkB,CACpBjI,QAAOkI,IAAA,GACAH,EAAW/H,SAAO,IACrBC,eAAe,KAKjBkI,EAAuB,GAAHpD,OAAMqC,EAAQ,0CAAArC,OAAyC/F,IAASjB,KAAKC,aAAY,MACrGoK,EAAqB,GAAHrD,OAAMqC,EAAQ,0CAAArC,OAAyC/F,IAASjB,KAAKE,WAAU,MACjGoK,EAAoB,GAAHtD,OAAMqC,EAAQ,0CAAArC,OAAyC/F,IAASjB,KAAKG,UAAS,MAC/FoK,EAAoB,GAAHvD,OAAMqC,EAAQ,0CAAArC,OAAyC/F,IAASjB,KAAKI,UAAS,MAC/FoK,EAAgB,GAAHxD,OAAMqC,EAAQ,0CAAArC,OAAyC/F,IAASjB,KAAKK,MAAK,MAW7F,MARgB,CACZJ,aAAciD,EAAakH,EAAsBJ,GACjD9J,WAAYgD,EAAamH,EAAoBL,GAC7C7J,UAAW+C,EAAaoH,EAAmBN,GAC3C5J,UAAW8C,EAAaqH,EAAmBL,GAC3C7J,MAAO6C,EAAasH,EAAeR,IAhHdS,CAAWpB,EAAUvE,GAE9CA,EAAOtB,gBAAgBvD,aAAagB,OAAOc,SAAW,CAClD,WACI2F,EAAgB5C,GAAQyE,MAAK,SAAAnD,GACzB,IAAM9C,EAAa6C,EAAYC,EAAMtB,EAAOH,SAASC,UAErDX,EAAca,EAAQsB,EAAKoD,SAC3B3F,EAAiBiB,EAAQxB,EAAWpD,YACpC4D,EAAgBgB,EAAQxB,EAAWnD,WACnC4D,EAAgBe,EAAQxB,EAAWlD,WACnC4D,EAAYc,EAAQxB,EAAWjD,OAE/B6I,EAAepE,QAK3BA,EAAOtB,gBAAgBtD,WAAWe,OAAOc,SAAW,CAChD,WACI2F,EAAgB5C,GAAQyE,MAAK,SAAAnD,GACzB,IAAM9C,EAAa6C,EAAYC,EAAMtB,EAAOH,SAASC,UAErDX,EAAca,EAAQsB,EAAKoD,SAC3BpG,EAAmB0B,EAAQxB,EAAWrD,cACtC6D,EAAgBgB,EAAQxB,EAAWnD,WACnC4D,EAAgBe,EAAQxB,EAAWlD,WACnC4D,EAAYc,EAAQxB,EAAWjD,OAE/B6I,EAAepE,QAK3BA,EAAOtB,gBAAgBrD,UAAUc,OAAOc,SAAW,CAC/C,WACI2F,EAAgB5C,GAAQyE,MAAK,SAAAnD,GACzB,IAAM9C,EAAa6C,EAAYC,EAAMtB,EAAOH,SAASC,UAErDX,EAAca,EAAQsB,EAAKoD,SAC3BpG,EAAmB0B,EAAQxB,EAAWrD,cACtC4D,EAAiBiB,EAAQxB,EAAWpD,YACpC6D,EAAgBe,EAAQxB,EAAWlD,WACnC4D,EAAYc,EAAQxB,EAAWjD,OAE/B6I,EAAepE,QAK3BA,EAAOtB,gBAAgBpD,UAAUa,OAAOc,SAAW,CAC/C,WACI2F,EAAgB5C,GAAQyE,MAAK,SAAAnD,GACzB,IAAM9C,EAAa6C,EAAYC,EAAMtB,EAAOH,SAASC,UAErDX,EAAca,EAAQsB,EAAKoD,SAC3BpG,EAAmB0B,EAAQxB,EAAWrD,cACtC4D,EAAiBiB,EAAQxB,EAAWpD,YACpC4D,EAAgBgB,EAAQxB,EAAWnD,WACnC6D,EAAYc,EAAQxB,EAAWjD,OAE/B6I,EAAepE,QAK3BA,EAAOtB,gBAAgBnD,MAAMY,OAAOc,SAAW,CAC3C,WACI2F,EAAgB5C,GAAQyE,MAAK,SAAAnD,GACzB,IAAM9C,EAAa6C,EAAYC,EAAMtB,EAAOH,SAASC,UAErDX,EAAca,EAAQsB,EAAKoD,SAC3BpG,EAAmB0B,EAAQxB,EAAWrD,cACtC4D,EAAiBiB,EAAQxB,EAAWpD,YACpC4D,EAAgBgB,EAAQxB,EAAWnD,WACnC4D,EAAgBe,EAAQxB,EAAWlD,WAEnC8I,EAAepE,QAiP/B,SAAyBzB,GACrB,IAAMqH,EAAetB,SAAS/E,cAAc,GAAD2C,OAAI3D,EAASgG,SAAQ,iBAAArC,OAAgB/F,IAASjB,KAAKM,OAAM,OAC9FqK,EAAiBvB,SAAS/E,cAAc,GAAD2C,OAAI3D,EAASgG,SAAQ,iBAAArC,OAAgB/F,IAASjB,KAAKU,QAAO,OACjGkK,EAAUvH,EAASsB,SAASkG,YAElCzB,SAASU,iBAAiB,SAAS,SAAAgB,GAE1BH,EAAelB,UAAUsB,SAAS9J,IAASN,IAAIG,gBAC/CgK,EAAMrG,OAAOgF,UAAUsB,SAAS,qBAEjCJ,EAAelB,UAAUC,IAAIzI,IAASN,IAAIG,kBAIlD4J,EAAaZ,iBAAiB,SAAS,WACnC,IAAMnC,EAASP,EAAQ/D,GACjByE,EAASC,OAAOC,KAAKL,GACtBM,KAAI,SAAAC,GAAG,SAAAlB,OAAOmB,mBAAmBD,GAAI,KAAAlB,OAAImB,mBAAmBR,EAAOO,GAAK3E,WACxE6E,KAAK,KAGV,GAtER,SAAkBT,GACd,SACIA,EAAON,QAAQ9D,OACfoE,EAAOL,UAAU/D,OACjBoE,EAAOJ,WAAWhE,OAClBoE,EAAOH,YAAYjE,OACnBoE,EAAOF,UAAUlE,OA8DEyH,CAASrD,GAEZ,CACZ,IAAMsD,EAAW,GAAHjE,OAAM4D,EAAO,KAAA5D,OAAIc,GAa/B,OAZA6C,EAAelB,UAAUC,IAAIzI,IAASN,IAAIG,eAG1CqC,EAAY,CAAE2H,MAAO,SAAUI,WAAY,eAAgBC,aAAc,YAuBrF,SAAoBxD,EAAQ0B,GACxB,IAAM7I,EAAS4I,SAAS/E,cAAc,GAAD2C,OAAIqC,EAAQ,sBAAArC,OAAqB/F,IAASjB,KAAKQ,OAAM,OACpFoF,EAASpF,EAAO6D,cAAc,cAAD2C,OAAe/F,IAASjB,KAAKS,QAAO,MACjE2K,EAASrD,OAAOJ,OAAOA,GACxB/B,QAAO,SAAAC,GAAI,MAAmB,KAAfA,EAAKtC,SACpB0E,KAAI,SAAApC,GAAI,OAAIA,EAAKK,SAElBmF,EAAc,GAClBD,EAAOxE,SAAQ,SAACf,EAAMyF,GAClBD,GAAeD,EAAOpF,SAAWsF,EAAI,EAAIzF,EAAO,GAAHmB,OAAMnB,EAAI,SAG3DD,EAAOpB,UAAY6G,EACnB7K,EAAOiJ,UAAUI,OAAO,GAAD7C,OAAI/F,IAASN,IAAIE,cAjChC0K,CAAW5D,EAAQtE,EAASgG,UAC5BmC,MAAMP,GAAU1B,MAAK,WAGjBvG,OAAOyI,SAASC,OAAOT,OAEpB,EAKX,OADAN,EAAelB,UAAUI,OAAO5I,IAASN,IAAIG,gBACtC,KApRX6K,CAAgB7G,M,mDCrGpB,IAAA8G,EAAwC7I,EAAQ,QAAxC8I,EAAUD,EAAVC,WAAYC,EAAeF,EAAfE,gBACdC,EAAUhJ,EAAQ,QAGpBiJ,EAAQ,GAENC,EAAY,CAEdC,KAAM,WAGF,OAFAC,KAAK/H,QAAQqF,UAAUI,OAAOsC,KAAKlL,OAAON,IAAIc,QAEvC0K,MAIXC,KAAM,WAGF,OAFAD,KAAK/H,QAAQqF,UAAUC,IAAIyC,KAAKlL,OAAON,IAAIc,QAEpC0K,MAIXE,SAAU,WACN,OAAOF,KAAK5K,OAIhB+K,mBAAoB,WAEhB,MAAyC,oBAArCH,KAAKlK,QAAQsK,eAAevM,MAMpCwM,mBAAoB,WAIhB,GAHsBL,KAAKlK,QAAQwK,SAASrI,QAG1BsI,gBAAiB,OAAOP,KAAK/H,QAAQqF,UAAUC,IAAIyC,KAAKlL,OAAON,IAAIe,YAErFyK,KAAK/H,QAAQqF,UAAUI,OAAOsC,KAAKlL,OAAON,IAAIe,aAIlDiL,SAAU,WAON,OANAR,KAAK/H,QAAQqF,UAAUI,OAAOsC,KAAKlL,OAAON,IAAIY,OAC9C4K,KAAK/H,QAAQqF,UAAUC,IAAIyC,KAAKlL,OAAON,IAAIW,OAG3C6K,KAAK5K,OAAQ,EAEN4K,MAIXS,SAAU,WAON,OANAT,KAAK/H,QAAQqF,UAAUI,OAAOsC,KAAKlL,OAAON,IAAIW,OAC9C6K,KAAK/H,QAAQqF,UAAUC,IAAIyC,KAAKlL,OAAON,IAAIY,OAG3C4K,KAAK5K,OAAQ,EAEN4K,MAIXU,YAAa,WAOT,OANAV,KAAK/H,QAAQqF,UAAUI,OAAOsC,KAAKlL,OAAON,IAAIW,OAC9C6K,KAAK/H,QAAQqF,UAAUI,OAAOsC,KAAKlL,OAAON,IAAIY,OAG9C4K,KAAK5K,OAAQ,EAEN4K,MAIXW,WAAY,WAMR,OALIX,KAAK/H,QAAQC,cAAc,WAC3B8H,KAAKY,YAAYC,aAAa,KAAMb,KAAKc,IACzCd,KAAKe,WAAWF,aAAa,MAAOb,KAAKc,KAGtCd,MAIXY,UAAW,WACP,OAAOZ,KAAK/H,QAAQC,cAAc,WAItC6I,SAAU,WACN,OAAOf,KAAK/H,QAAQC,cAAc,UAItCZ,IAAK,WAA+B,IAAnB0J,EAASC,UAAApH,OAAA,QAAAqH,IAAAD,UAAA,IAAAA,UAAA,GACtB,OAAOjB,KAAKlK,QAAQqL,SAASH,IAIjCvJ,IAAK,WAAwB,IAAZL,EAAK6J,UAAApH,OAAA,QAAAqH,IAAAD,UAAA,GAAAA,UAAA,GAAG,GAMrB,OALAjB,KAAKlK,QAAQsL,iBAAiBhK,GAG9B4I,KAAK5I,MAAQ4I,KAAK1I,KAAI,GAEf0I,MAKXxI,WAAY,WAA2E,IAAA6J,EAAA,KAA/D9H,EAAK0H,UAAApH,OAAA,QAAAqH,IAAAD,UAAA,GAAAA,UAAA,GAAG,GAAI7J,EAAK6J,UAAApH,OAAA,QAAAqH,IAAAD,UAAA,GAAAA,UAAA,GAAG,QAASlH,EAAKkH,UAAApH,OAAA,QAAAqH,IAAAD,UAAA,GAAAA,UAAA,GAAG,QAASK,EAAOL,UAAApH,OAAA,QAAAqH,IAAAD,UAAA,IAAAA,UAAA,GAIzE,OAAI1H,EAAMM,OAAS,IAGfyH,EACAtB,KAAK/F,KAAOV,EAEZA,EAAMkB,SAAQ,SAAAf,GAAI,OAAI2H,EAAKpH,KAAKH,KAAKJ,MAGzCsG,KAAKlK,QAAQ0B,WAAW+B,EAAOnC,EAAO2C,EAAOuH,IAThBtB,MAejCpK,SAAU,WAAc,IAAA2L,EAAA,KAUpB,OARAvB,KAAK5I,MAAQ4I,KAAK1I,KAAI,GAGlB0I,KAAKG,sBAAsBH,KAAKK,qBAGhCL,KAAKlL,OAAOc,SAASiE,OAAS,GAAGmG,KAAKlL,OAAOc,SAAS6E,SAAQ,SAAAf,GAAI,OAAIA,EAAK6H,MAExEvB,MAIXwB,QAAS,SAAY7C,GAOjB,OALAqB,KAAKlK,QAAQ2L,eAGb9C,EAAM+C,kBAEC1B,MAIXtJ,OAAQ,WAAc,IAAAiL,EAAA,KAElB3B,KAAK4B,WACAnI,QAAO,SAAAC,GAAI,OAAIA,IAASiI,KACxBlH,SAAQ,SAAAf,GAAI,OAAIA,EAAK5D,QAAQ+L,kBAGA,mBAAvB7B,KAAKlL,OAAO4B,QAAuBsJ,KAAKlL,OAAO4B,OAAOoL,KAAK9B,KAAMA,OAIhF+B,WAAY,WAUR,OARA/B,KAAKpK,SAAWoK,KAAKpK,SAASoM,KAAKhC,MAGnCA,KAAKwB,QAAUxB,KAAKwB,QAAQQ,KAAKhC,MAGjCA,KAAKtJ,OAASsJ,KAAKtJ,OAAOsL,KAAKhC,MAExBA,MAIXrC,iBAAkB,WAad,OAXAqC,KAAK+B,aAGL/B,KAAKY,YAAYjD,iBAAiB,SAAUqC,KAAKpK,UAGjDoK,KAAKY,YAAYjD,iBAAiB,eAAgBqC,KAAKtJ,QAGnDsJ,KAAKlL,OAAOe,aAAamK,KAAK/H,QAAQ0F,iBAAiB,QAASqC,KAAKwB,SAElExB,MAIXxC,oBAAqB,WAUjB,OARAwC,KAAKY,YAAYpD,oBAAoB,SAAUwC,KAAKpK,UAGpDoK,KAAKY,YAAYpD,oBAAoB,eAAgBwC,KAAKtJ,QAGtDsJ,KAAKlL,OAAOe,aAAamK,KAAK/H,QAAQuF,oBAAoB,QAASwC,KAAKwB,SAErExB,MAIXN,WAAY,WAAc,IAAAuC,EAAA,KAEtB,OAAIjC,KAAK4B,WAAWnI,QAAO,SAAAC,GAAI,OAAIA,EAAK7F,OAASoO,EAAKpO,QAAMgG,OAAS,GAGrE6F,EAAWM,KAAMH,GAH8DG,MASnFL,gBAAiB,WAGb,OAFAE,EAAQF,EAAgBK,KAAMH,GAEvBG,MAIX4B,SAAU,WACN,OAAO/B,GAIXqC,aAAY,WACR,OAAIlC,KAAKlK,UAGTkK,KAAKlK,QAAU,IAAI8J,EAAQI,KAAKY,YAAaZ,KAAKlL,OAAOgB,UAHhCkK,MAS7BhL,KAAM,WAEFgL,KAAKW,aAGLX,KAAKmC,WAAiD,SAApCnC,KAAK/H,QAAQmK,QAAQC,WAGvCrC,KAAKkC,eAGDlC,KAAKlL,OAAOG,WAAW+K,KAAKrC,mBAGhCqC,KAAKK,qBAGDL,KAAKlL,OAAOI,WAAW8K,KAAKN,aAGhCM,KAAK/H,QAAQmK,QAAQ7I,MAAQ,GAG7ByG,KAAK5I,MAAQ4I,KAAK1I,KAAI,KAI9B1C,EAAOC,QAAUiL,G,+BClRjB,IAAQwC,EAAiB1L,EAAQ,QAAzB0L,aACA1E,EAAgBhH,EAAQ,QAAxBgH,YAMRhJ,EAAOC,QAAU,WAA0E,IAAjDqI,EAAQ+D,UAAApH,OAAA,QAAAqH,IAAAD,UAAA,GAAAA,UAAA,GAAG,qCACjD,GAAIqB,EAAapF,GAAW,CAExB,IAAMhG,EAAW,GAuBjB,OApBAA,EAASe,QAAUgF,SAAS/E,cAAcgF,GAG1ChG,EAASsB,SAAY,SAAYyB,GAC7B,GAAIA,EAAM,CACN,IAAMzB,EAAWoE,KAAKC,MAAM5C,GAG5B,OAFA/C,EAASe,QAAQmK,QAAQ5J,SAAW,GAE7BA,EAGX,OAAO,KARU,CASlBtB,EAASe,QAAQmK,QAAQ5J,UAG5BtB,EAASgG,SAAWA,EAGpBU,EAAY1G,GAELA,K,0qBCjCf,IAAQoL,EAAiB1L,EAAQ,QAAzB0L,aACAC,EAAa3L,EAAQ,QAArB2L,SACFzC,EAAYlJ,EAAQ,QACpB9B,EAAS8B,EAAQ,QAMvBhC,EAAOC,QAAU,WAAkF,IAA5DqI,EAAQ+D,UAAApH,OAAA,QAAAqH,IAAAD,UAAA,GAAAA,UAAA,GAAG,4BAA6BrN,EAAaqN,UAAApH,OAAA,QAAAqH,IAAAD,UAAA,GAAAA,UAAA,GAAG,GAC3F,GAAIqB,EAAapF,GAAW,CAExB,IAAMhG,EAAW0E,OAAO4G,OAAO1C,GA4B/B,OAzBA5I,EAASe,QAAUgF,SAAS/E,cAAcgF,GAG1ChG,EAASpC,OAAMkJ,MAAA,GACRlJ,KACAlB,GAAa,IAChBkC,QAAOkI,MAAA,GACAlJ,IAASgB,SACTlC,EAAckC,SAAO,IACxBA,QAASoB,EAASe,QAAQmK,QAAQ7I,MAAQqD,KAAKC,MAAM3F,EAASe,QAAQmK,QAAQ7I,OAAS,OAK/FrC,EAAS4J,GAAKyB,EAASA,EAAS,WAGhCrL,EAAS9B,OAAQ,EAGjB8B,EAASE,MAAQF,EAAS0J,YAAYxJ,MAGlCF,EAASpC,OAAOE,MAAMkC,EAASlC,OAE5BkC,K,mBC/BftC,EAAOC,QAAU,CACbmC,YAfgB,SAAAiD,GAEhB,IAAQ0E,EAAoC1E,EAApC0E,MAAOI,EAA6B9E,EAA7B8E,WAAYC,EAAiB/E,EAAjB+E,aACrByD,EAAY5L,OAAO4L,WAAa,GAElCA,GAAaA,EAAU3I,MACvB2I,EAAU3I,KAAK,CACX6E,QACAI,aACAC","file":"searcher-cruises.764fe08f321b35938752.bundle.js","sourcesContent":["/* ==========================================================================\n Searcher > Config\n ========================================================================== */\n\nconst configuration = {\n type: {\n destinations: 'select-destinations',\n departures: 'select-departures',\n shippings: 'select-shippings',\n durations: 'select-durations',\n ports: 'select-ports',\n submit: 'button-submit',\n reset: 'button-reset',\n loader: 'LoadingModal',\n filters: 'filters-text',\n message: 'tooltip-message'\n },\n css: {\n buttonDisable: 'isDisable',\n modalHidden: 'isHidden',\n messageHidden: 'isHidden'\n }\n};\n\nconst config = () => configuration;\n\nmodule.exports = config;\n","/* ==========================================================================\n Select > Config\n ========================================================================== */\n\nconst config = {\n component: 'Select',\n init: true,\n domEvents: true,\n autoStore: true,\n css: {\n valid: 'is-valid',\n error: 'has-error',\n active: 'is-active',\n hidden: 'is-hidden',\n hasChoices: 'has-choices',\n withBorder: 'select--with-border',\n withLabel: 'select--with-label',\n multiple: 'select--multiple'\n },\n isActive: false,\n onChange: [],\n enableClick: false,\n choices: {\n searchEnabled: true,\n renderChoiceLimit: -1 /* limit the quantity of options shown, -1 infinite */,\n searchResultLimit: 5 /* Limit the quantity of options to show on seach, -1 infinite */,\n removeItemButton: false /* for multiple select true */,\n placeholderValue: 'Type to search...',\n searchPlaceholderValue: 'Type to search...',\n loadingText: 'Loading...',\n noResultsText: 'No results found',\n noChoicesText: 'No choices to choose from',\n itemSelectText: 'Press to select',\n sortFn: () => {}\n },\n /**\n * Callback fired when the select opens\n * @param {object} select\n */\n onOpen: () => {}\n};\n\nmodule.exports = () => config;\n","/* ==========================================================================\n Searcher > Select\n ========================================================================== */\nconst $ = require('jquery');\n\nwindow.$ = $;\nwindow.jQuery = $;\n\n/* Modules */\nconst SelectClient = require('@bluekiri/alexandria-contrib-components/components/select/client/js');\n\nconst { addGa4Event } = require('@bluekiri/alexandria-contrib-components/helpers/ga4Event');\n\nconst config = require('./config');\n// require('./vendors/fc.js');\n\nfunction initSelects(instance) {\n const result = instance;\n const selector = instance.selector || '';\n\n // Is reset\n result.isReset = false;\n\n // Set object selects\n result.searcherSelects = setSelects(selector, result);\n\n result.searcherSelects.destinations.config.onChange = [\n () => {\n getInputOptions(result).then(data => {\n const newChoices = prepareData(data, result.settings.literals);\n\n animateNumber(result, data.counter);\n updateDepartures(result, newChoices.departures);\n updateShippings(result, newChoices.shippings);\n updateDurations(result, newChoices.durations);\n updatePorts(result, newChoices.ports);\n\n setButtonReset(result);\n });\n }\n ];\n\n result.searcherSelects.departures.config.onChange = [\n () => {\n getInputOptions(result).then(data => {\n const newChoices = prepareData(data, result.settings.literals);\n\n animateNumber(result, data.counter);\n updateDestinations(result, newChoices.destinations);\n updateShippings(result, newChoices.shippings);\n updateDurations(result, newChoices.durations);\n updatePorts(result, newChoices.ports);\n\n setButtonReset(result);\n });\n }\n ];\n\n result.searcherSelects.shippings.config.onChange = [\n () => {\n getInputOptions(result).then(data => {\n const newChoices = prepareData(data, result.settings.literals);\n\n animateNumber(result, data.counter);\n updateDestinations(result, newChoices.destinations);\n updateDepartures(result, newChoices.departures);\n updateDurations(result, newChoices.durations);\n updatePorts(result, newChoices.ports);\n\n setButtonReset(result);\n });\n }\n ];\n\n result.searcherSelects.durations.config.onChange = [\n () => {\n getInputOptions(result).then(data => {\n const newChoices = prepareData(data, result.settings.literals);\n\n animateNumber(result, data.counter);\n updateDestinations(result, newChoices.destinations);\n updateDepartures(result, newChoices.departures);\n updateShippings(result, newChoices.shippings);\n updatePorts(result, newChoices.ports);\n\n setButtonReset(result);\n });\n }\n ];\n\n result.searcherSelects.ports.config.onChange = [\n () => {\n getInputOptions(result).then(data => {\n const newChoices = prepareData(data, result.settings.literals);\n\n animateNumber(result, data.counter);\n updateDestinations(result, newChoices.destinations);\n updateDepartures(result, newChoices.departures);\n updateShippings(result, newChoices.shippings);\n updateDurations(result, newChoices.durations);\n\n setButtonReset(result);\n });\n }\n ];\n\n setSubmitButton(result);\n}\n\nfunction setSelects(selector, instance) {\n const configBase = {\n choices: {\n searchPlaceholderValue: instance.settings.literals.placeholderInput\n }\n };\n\n const configDurations = {\n choices: {\n ...configBase.choices,\n searchEnabled: false\n }\n };\n\n /* Set Selectors */\n const destinationsSelector = `${selector} [data-component=\"Select\"][data-type=\"${config().type.destinations}\"]`;\n const departuresSelector = `${selector} [data-component=\"Select\"][data-type=\"${config().type.departures}\"]`;\n const shippingsSelector = `${selector} [data-component=\"Select\"][data-type=\"${config().type.shippings}\"]`;\n const durationsSelector = `${selector} [data-component=\"Select\"][data-type=\"${config().type.durations}\"]`;\n const portsSelector = `${selector} [data-component=\"Select\"][data-type=\"${config().type.ports}\"]`;\n\n /* Init client selects */\n const selects = {\n destinations: SelectClient(destinationsSelector, configBase),\n departures: SelectClient(departuresSelector, configBase),\n shippings: SelectClient(shippingsSelector, configBase),\n durations: SelectClient(durationsSelector, configDurations),\n ports: SelectClient(portsSelector, configBase)\n };\n\n return selects;\n}\n\nfunction updateDestinations(instance, newChoices) {\n const { value } = instance.searcherSelects.destinations.get();\n instance.searcherSelects.destinations.choices.clearStore();\n instance.searcherSelects.destinations.choices.setChoices(newChoices, 'value', 'label', false);\n instance.searcherSelects.destinations.set(value);\n}\n\nfunction updateDepartures(instance, newChoices) {\n const { value } = instance.searcherSelects.departures.get();\n instance.searcherSelects.departures.choices.clearStore();\n instance.searcherSelects.departures.choices.setChoices(newChoices, 'value', 'label', false);\n instance.searcherSelects.departures.set(value);\n}\n\nfunction updateShippings(instance, newChoices) {\n const { value } = instance.searcherSelects.shippings.get();\n instance.searcherSelects.shippings.choices.clearStore();\n instance.searcherSelects.shippings.choices.setChoices(newChoices, 'value', 'label', false);\n instance.searcherSelects.shippings.set(value);\n}\n\nfunction updateDurations(instance, newChoices) {\n const { value } = instance.searcherSelects.durations.get();\n instance.searcherSelects.durations.choices.clearStore();\n instance.searcherSelects.durations.choices.setChoices(newChoices, 'value', 'label', false);\n instance.searcherSelects.durations.set(value);\n}\n\nfunction updatePorts(instance, newChoices) {\n const { value } = instance.searcherSelects.ports.get();\n instance.searcherSelects.ports.choices.clearStore();\n instance.searcherSelects.ports.choices.setChoices(newChoices, 'value', 'label', false);\n instance.searcherSelects.ports.set(value);\n}\n\nfunction animateNumber(instance, number) {\n const elementNumber = instance.element.querySelector('[data-type=\"number\"]');\n const elementText = instance.element.querySelector('[data-type=\"number-text\"]');\n const currentNumber = elementNumber.innerHTML;\n const target = parseInt(number, 10);\n\n elementText.innerHTML = instance.settings.literals.results;\n if (target === 1) {\n elementText.innerHTML = instance.settings.literals.result;\n }\n\n $({ numberValue: currentNumber }).animate(\n { numberValue: target },\n {\n duration: 500,\n easing: 'swing',\n step: now => {\n elementNumber.innerHTML = now.toFixed(0);\n }\n }\n );\n}\n\nfunction transformDataItems(arrayData, featuredContent, otherContent) {\n // if (arrayData.length) return arrayData;\n const items = [];\n const features = arrayData.filter(item => item.highlight === true);\n const others = arrayData.filter(item => item.highlight === false);\n\n if (features.length) {\n items.push({\n label: others.length ? featuredContent : '',\n choices: features\n });\n }\n\n if (others.length) {\n items.push({\n label: features.length ? otherContent : '',\n choices: others\n });\n }\n\n return items;\n}\n\nfunction transformDataItemsDate(arrayData, yearContent) {\n const years = [];\n const items = [];\n\n arrayData.forEach(date => {\n const year = parseInt(date.value.split('_')[1], 10);\n\n if (years.indexOf(year) === -1) {\n years.push(year);\n\n items.push({\n label: `${yearContent} ${year}`,\n choices: arrayData.filter(item => parseInt(item.value.split('_')[1], 10) === year)\n });\n }\n });\n\n return items;\n}\n\nfunction prepareData(data, literals) {\n const obj = {\n destinations: transformDataItems(data.destinations, literals.feature, literals.other),\n departures: transformDataItemsDate(data.dates, literals.year),\n shippings: transformDataItems(data.lines, literals.feature, literals.other),\n durations: data.duration,\n ports: transformDataItems(data.ports, literals.feature, literals.other)\n };\n\n obj.destinations.unshift({ label: '', choices: [{ value: '', label: literals.destinations }] });\n obj.departures.unshift({ label: '', choices: [{ value: '', label: literals.departures }] });\n obj.shippings.unshift({ label: '', choices: [{ value: '', label: literals.shippings }] });\n obj.durations.unshift({ label: literals.durations, value: '', selected: true });\n obj.ports.unshift({ label: '', choices: [{ value: '', label: literals.ports }] });\n\n return obj;\n}\n\nfunction getForm(instance) {\n const values = {\n codZona: instance.searcherSelects.destinations.get(),\n codSalida: instance.searcherSelects.departures.get(),\n codNaviera: instance.searcherSelects.shippings.get(),\n codDuracion: instance.searcherSelects.durations.get(),\n codPuerto: instance.searcherSelects.ports.get()\n };\n\n return values;\n}\n\nfunction getInputOptions(instance) {\n const values = getForm(instance);\n const endPoint = instance.settings.urlAjax;\n const params = Object.keys(values)\n .map(key => `${encodeURIComponent(key)}=${encodeURIComponent(values[key].value)}`)\n .join('&');\n const app = instance.settings.application || 'logitravel';\n const lang = instance.settings.language || 'es';\n\n const url = `${endPoint}?${params}&application=${app}&language=${lang}`;\n\n return new Promise((resolve, reject) => {\n const data = $.get(url)\n .done(response => resolve(JSON.parse(response)))\n .fail(reject);\n\n return data;\n });\n}\n\nfunction validate(values) {\n if (\n values.codZona.value ||\n values.codSalida.value ||\n values.codNaviera.value ||\n values.codDuracion.value ||\n values.codPuerto.value\n )\n return true;\n return false;\n}\n\nfunction setButtonReset(instance) {\n const result = instance;\n const buttonReset = document.querySelector(`${result.selector} [data-type=\"${config().type.reset}\"]`);\n const resetForm = () => {\n if (result.searcherSelects) {\n result.searcherSelects.destinations.set('');\n result.searcherSelects.departures.set('');\n result.searcherSelects.shippings.set('');\n result.searcherSelects.durations.set('');\n result.searcherSelects.ports.set('');\n\n getInputOptions(result).then(data => {\n const newChoices = prepareData(data, result.settings.literals);\n\n animateNumber(result, data.counter);\n updateDestinations(result, newChoices.destinations);\n updateDepartures(result, newChoices.departures);\n updateShippings(result, newChoices.shippings);\n updatePorts(result, newChoices.ports);\n updateDurations(result, newChoices.durations);\n });\n }\n\n buttonReset.classList.add(config().css.buttonDisable);\n buttonReset.removeEventListener('click', resetForm);\n result.isReset = false;\n };\n\n if (!result.isReset) {\n buttonReset.classList.remove(config().css.buttonDisable);\n buttonReset.addEventListener('click', resetForm);\n result.isReset = true;\n }\n\n return true;\n}\n\nfunction setSubmitButton(instance) {\n const buttonSubmit = document.querySelector(`${instance.selector} [data-type=\"${config().type.submit}\"]`);\n const tooltipMessage = document.querySelector(`${instance.selector} [data-type=\"${config().type.message}\"]`);\n const baseUrl = instance.settings.urlShowcase;\n\n document.addEventListener('click', event => {\n if (\n !tooltipMessage.classList.contains(config().css.messageHidden) &&\n !event.target.classList.contains('searcher__button')\n ) {\n tooltipMessage.classList.add(config().css.messageHidden);\n }\n });\n\n buttonSubmit.addEventListener('click', () => {\n const values = getForm(instance);\n const params = Object.keys(values)\n .map(key => `${encodeURIComponent(key)}=${encodeURIComponent(values[key].value)}`)\n .join('&');\n const validation = validate(values);\n\n if (validation) {\n const buildUrl = `${baseUrl}?${params}`;\n tooltipMessage.classList.add(config().css.messageHidden);\n\n // Add Ga4 event\n addGa4Event({ event: 'search', event_type: 'availability', event_detail: 'cruises' });\n\n // Show loader and locate to showcase\n openLoader(values, instance.selector);\n fetch(buildUrl).then(() => {\n // closeLoader(instance.selector);\n\n window.location.assign(buildUrl);\n });\n return true;\n }\n\n // Remove class hidden\n tooltipMessage.classList.remove(config().css.messageHidden);\n return false;\n });\n}\n\n// function closeLoader(selector) {\n// const loader = document.querySelector(`${selector} [data-component=\"${config().type.loader}\"]`);\n// loader.classList.add(`${config().css.modalHidden}`);\n// }\n\nfunction openLoader(values, selector) {\n const loader = document.querySelector(`${selector} [data-component=\"${config().type.loader}\"]`);\n const filter = loader.querySelector(`[data-type=${config().type.filters}]`);\n const labels = Object.values(values)\n .filter(item => item.value !== '')\n .map(item => item.label);\n\n let filtersText = '';\n labels.forEach((item, i) => {\n filtersText += labels.length === i + 1 ? item : `${item}, `;\n });\n\n filter.innerHTML = filtersText;\n loader.classList.remove(`${config().css.modalHidden}`);\n}\n\nmodule.exports = {\n initSelects\n};\n","/* ==========================================================================\n Select > Prototype\n ========================================================================== */\n\n/* Modules */\nconst { addToStore, removeFromStore } = require('@bluekiri/alexandria/helpers/store');\nconst Choices = require('choices.js');\n\n/* Select store */\nlet store = [];\n\nconst prototype = {\n /* Display */\n show: function Fn() {\n this.element.classList.remove(this.config.css.hidden);\n\n return this;\n },\n\n /* Hide */\n hide: function Fn() {\n this.element.classList.add(this.config.css.hidden);\n\n return this;\n },\n\n /* Has error */\n hasError: function Fn() {\n return this.error;\n },\n\n /* Has Choices selected */\n hasChoicesMultiple: function Fn() {\n /* Check if choices list have it a choices items */\n if (this.choices.containerInner.type === 'select-multiple') return true;\n\n return false;\n },\n\n /* Set choicesMultiple */\n setChoicesMultiple: function Fn() {\n const choicesListEl = this.choices.itemList.element;\n\n /* Check if choices list have it a choices items */\n if (choicesListEl.hasChildNodes()) return this.element.classList.add(this.config.css.hasChoices);\n\n this.element.classList.remove(this.config.css.hasChoices);\n },\n\n /* Set valid */\n setValid: function Fn() {\n this.element.classList.remove(this.config.css.error);\n this.element.classList.add(this.config.css.valid);\n\n /* Set validation to state */\n this.error = false;\n\n return this;\n },\n\n /* Set error */\n setError: function Fn() {\n this.element.classList.remove(this.config.css.valid);\n this.element.classList.add(this.config.css.error);\n\n /* Set error to state */\n this.error = true;\n\n return this;\n },\n\n /* Reset status */\n resetStatus: function Fn() {\n this.element.classList.remove(this.config.css.valid);\n this.element.classList.remove(this.config.css.error);\n\n /* Reset validation to state */\n this.error = false;\n\n return this;\n },\n\n /* Pairing label */\n setPairing: function Fn() {\n if (this.element.querySelector('label')) {\n this.getSelect().setAttribute('id', this.id);\n this.getLabel().setAttribute('for', this.id);\n }\n\n return this;\n },\n\n /* Get input */\n getSelect: function Fn() {\n return this.element.querySelector('select');\n },\n\n /* Get label */\n getLabel: function Fn() {\n return this.element.querySelector('label');\n },\n\n /* Get value */\n get: function Fn(valueOnly = false) {\n return this.choices.getValue(valueOnly);\n },\n\n /* Set value */\n set: function Fn(value = '') {\n this.choices.setChoiceByValue(value);\n\n /* Add reference in the instance */\n this.value = this.get(true);\n\n return this;\n },\n\n /* Set choices */\n /* eslint-disable */\n setChoices: function Fn(items = [], value = 'value', label = 'label', replace = false) {\n /* eslint-enable */\n\n /* Control no empty data */\n if (items.length < 1) return this;\n\n /* Update data reference */\n if (replace) {\n this.data = items;\n } else {\n items.forEach(item => this.data.push(item));\n }\n\n this.choices.setChoices(items, value, label, replace);\n\n return this;\n },\n\n /* On change */\n onChange: function Fn() {\n /* Update value reference */\n this.value = this.get(true);\n\n /* Check if choices list have it a choices items */\n if (this.hasChoicesMultiple()) this.setChoicesMultiple();\n\n /* Check callback from config passing this */\n if (this.config.onChange.length > 0) this.config.onChange.forEach(item => item(this));\n\n return this;\n },\n\n /* On click */\n onClick: function Fn(event) {\n /* Call internal library method to display in case we are inside panels */\n this.choices.showDropdown();\n\n /* Prevent bubbling */\n event.stopPropagation();\n\n return this;\n },\n\n /* On open */\n onOpen: function Fn() {\n /* Force hide all selects except the opened one */\n this.getStore()\n .filter(item => item !== this)\n .forEach(item => item.choices.hideDropdown());\n\n /* Invoke callback */\n if (typeof this.config.onOpen === 'function') this.config.onOpen.call(this, this);\n },\n\n /* Bind events */\n bindEvents: function Fn() {\n /* On change */\n this.onChange = this.onChange.bind(this);\n\n /* On click */\n this.onClick = this.onClick.bind(this);\n\n /* On open */\n this.onOpen = this.onOpen.bind(this);\n\n return this;\n },\n\n /* Add event listener */\n addEventListener: function Fn() {\n /* Bind events */\n this.bindEvents();\n\n /* On Change */\n this.getSelect().addEventListener('change', this.onChange);\n\n /* On Open */\n this.getSelect().addEventListener('showDropdown', this.onOpen);\n\n /* On Click */\n if (this.config.enableClick) this.element.addEventListener('click', this.onClick);\n\n return this;\n },\n\n /* Remove event listener */\n removeEventListener: function Fn() {\n /* On Change */\n this.getSelect().removeEventListener('change', this.onChange);\n\n /* On Open */\n this.getSelect().removeEventListener('showDropdown', this.onOpen);\n\n /* On Click */\n if (this.config.enableClick) this.element.removeEventListener('click', this.onClick);\n\n return this;\n },\n\n /* Add to store */\n addToStore: function Fn() {\n /* Control unique instances of same modal */\n if (this.getStore().filter(item => item.type !== this.type).length > 0) return this;\n\n /* Quarry function */\n addToStore(this, store);\n\n return this;\n },\n\n /* Remove from store */\n removeFromStore: function Fn() {\n store = removeFromStore(this, store);\n\n return this;\n },\n\n /* Get store */\n getStore: function Fn() {\n return store;\n },\n\n /* Setup choices */\n setupChoices() {\n if (this.choices) return this;\n\n /* Create 3rd party library choices instance */\n this.choices = new Choices(this.getSelect(), this.config.choices);\n\n return this;\n },\n\n /* Init */\n init: function Fn() {\n /* Set Pairing */\n this.setPairing();\n\n /* isMultiple */\n this.isMultiple = this.element.dataset.ismultiple === 'true';\n\n /* Setup choices */\n this.setupChoices();\n\n /* Add listeners */\n if (this.config.domEvents) this.addEventListener();\n\n /* Check if choices list have it a choices items */\n this.setChoicesMultiple();\n\n /* Add to store */\n if (this.config.autoStore) this.addToStore();\n\n /* Clean dataset */\n this.element.dataset.items = '';\n\n /* Update value */\n this.value = this.get(true);\n }\n};\n\nmodule.exports = prototype;\n","/* ==========================================================================\n Searcher > Client\n ========================================================================== */\n\n/* Import modules */\nconst { elementExist } = require('@bluekiri/alexandria/helpers/domHelpers');\nconst { initSelects } = require('./select');\n\n/**\n * Searcher component\n * @param {selector} String selector for the component in the client side.\n */\nmodule.exports = function SearcherCruises(selector = '[data-component=\"SearcherCruises\"]') {\n if (elementExist(selector)) {\n // Instance reference\n const instance = {};\n\n // Element reference\n instance.element = document.querySelector(selector);\n\n // Settings\n instance.settings = (function Fn(data) {\n if (data) {\n const settings = JSON.parse(data);\n instance.element.dataset.settings = '';\n\n return settings;\n }\n\n return null;\n })(instance.element.dataset.settings);\n\n // Selector reference\n instance.selector = selector;\n\n // Selects\n initSelects(instance);\n\n return instance;\n }\n};\n","/* ==========================================================================\n Select > Client\n ========================================================================== */\n\n/* Import modules */\nconst { elementExist } = require('@bluekiri/alexandria/helpers/domHelpers');\nconst { randomId } = require('@bluekiri/alexandria/helpers/dataHelpers');\nconst prototype = require('./prototype');\nconst config = require('./config');\n\n/**\n * Select component\n * @param {selector} String selector for the component in the client side.\n */\nmodule.exports = function SelectClient(selector = '[data-component=\"Select\"]', configuration = {}) {\n if (elementExist(selector)) {\n /* Create the instance based on prototype */\n const instance = Object.create(prototype);\n\n /* Element reference */\n instance.element = document.querySelector(selector);\n\n /* Config */\n instance.config = {\n ...config(),\n ...configuration,\n choices: {\n ...config().choices,\n ...configuration.choices,\n choices: instance.element.dataset.items ? JSON.parse(instance.element.dataset.items) : []\n }\n };\n\n /* Id reference */\n instance.id = randomId(randomId('select'));\n\n /* Init error handler */\n instance.error = false;\n\n /* Value reference */\n instance.value = instance.getSelect().value;\n\n /* Auto init */\n if (instance.config.init) instance.init();\n\n return instance;\n }\n};\n","const addGa4Event = data => {\n // eslint-disable-next-line camelcase\n const { event, event_type, event_detail } = data;\n const dataLayer = window.dataLayer || [];\n\n if (dataLayer && dataLayer.push) {\n dataLayer.push({\n event,\n event_type,\n event_detail\n });\n }\n};\n\nmodule.exports = {\n addGa4Event\n};\n"],"sourceRoot":""}