{"version":3,"sources":["webpack:///./node_modules/@logitravel/alex-comp-cru/components/searcher-cru/client/js/results/index.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/searcher-cru/helpers/data.js","webpack:///./node_modules/@bluekiri/alexandria-contrib-components/helpers/array.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/searcher-cru/client/js/tooltip/index.js","webpack:///./node_modules/@logitravel/alex-comp-cru/helpers/currency.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/searcher-cru/client/js/prototype.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/searcher-cru/client/js/url/index.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/searcher-cru/client/js/services/index.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/searcher-cru/client/js/store/reducer.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/searcher-cru/client/js/store/actions.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/searcher-cru/client/js/index.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/searcher-cru/client/js/config.js"],"names":["Odometer","require","getSeparatorByLanguage","module","exports","initResults","instance","panel","language","config","context","results","el","hooks","value","format","concat","groupBy","mapToGroupCollection","collection","arguments","length","undefined","literals","featuredOptionsLabel","otherOptionsLabel","grouped","item","highlight","highlights","has","label","choices","get","others","mapToGroupCollectionDate","year","parseInt","split","years","_toConsumableArray","keys","map","index","values","list","fn","Map","forEach","key","push","set","sortByKey","sort","a","b","slice","containsArray","superset","subset","every","indexOf","toNode","fromEvent","take","configuration","destroyTooltip","tooltip","parentNode","removeChild","addTooltip","node","tooltipText","template","css","message","createTooltip","submit","element","appendChild","subscriptions","_objectSpread","documentClicks","document","pipe","subscribe","setTimeout","classList","add","visible","SEPARATORS","es","pt","it","de","fr","br","en","fi","se","mx","us","ca","ve","ru","he","ar","tr","ua","Object","includes","toLowerCase","addSeparator","number","toString","separator","replace","Store","SelectActions","addGa4Event","_require3","actions","types","reducer","getData","buildUrl","_require9","prototype","setupStore","this","store","searcher","setupActions","_this","destroy","dispatch","display","hide","disable","enable","reset","setData","data","zone","Number","river","departure","String","company","duration","port","setResults","setupReactions","_this2","reactions","state","action","type","DESTROY","unsubscribe","DISPLAY","remove","hidden","HIDE","DISABLE","ENABLE","SUBMIT","_state$searcher","_this2$config","url","_this2$config$isRiver","isRiver","window","location","assign","RESET","SET_RESULTS","cruise","cruises","innerText","payload","text","SET_DATA","_this2$config2","application","endpoints","_state$searcher2","disabled","searchBox","next","setActions","error","console","log","changeDeparture","SET_OPTION","SELECT_OPTION","changeCompany","changeDuration","changeZone","changeRiver","changePort","_this3","events","click$","event","stopPropagation","select","event_type","event_detail","_this4","start","_this$config","init","_ref","_this$config$literals","allZonesLabel","allRiversLabel","allCompaniesLabel","allDurationsLabel","allPortsLabel","allDeparturesLabel","setOptions","selected","destinations","rivers","dates","lines","ports","counter","zoneParam","riverParam","isRiverParam","departureParam","companyParam","durationParam","portParam","filter","join","of","_require2","catchError","switchMap","fromFetch","endpoint","params","response","ok","json","statusText","err","initialState","elementExist","Select","Button","selector","create","querySelector","dataset","result","JSON","parse","searchEnabled","component","base","small","long","button","wrapper","icon","refresh"],"mappings":"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","file":"vendors~searcher-cru.e4bdafdaaeea43c9bbdd.bundle.js","sourcesContent":["/* ==========================================================================\n SearcherCru > Client > Results\n ========================================================================== */\n\n/* Modules */\nconst Odometer = require('odometer');\n\nconst { getSeparatorByLanguage } = require('../../../../../helpers/currency');\n\n/* Init results */\nfunction initResults(instance) {\n const panel = instance;\n\n /* Context */\n const { context } = instance.config;\n const { language } = context;\n\n /* Results */\n panel.results = new Odometer({\n el: instance.hooks.results,\n value: 0,\n format: `(${getSeparatorByLanguage(language)}ddd)`\n });\n}\n\n/* Exports */\nmodule.exports = {\n initResults\n};\n","/* ==========================================================================\n SearcherCru > Helpers > Data\n ========================================================================== */\n\n/* Modules */\nconst { groupBy } = require('@bluekiri/alexandria-contrib-components/helpers/array');\n\n/**\n * Map to group collection\n * @param {array} Collection\n * @returns {array} Collection splitted in groups\n */\nfunction mapToGroupCollection(collection = [], literals = {}) {\n if (collection.length < 1) return collection;\n\n /* Data */\n const { featuredOptionsLabel, otherOptionsLabel } = literals;\n\n /* Grouped options */\n const grouped = groupBy(collection, item => (item.highlight ? 'highlight' : 'other'));\n\n /* Highlight */\n const highlights = grouped.has('highlight')\n ? {\n label: featuredOptionsLabel,\n choices: grouped.get('highlight')\n }\n : '';\n\n /* Others */\n const others = grouped.has('other')\n ? {\n label: otherOptionsLabel,\n choices: grouped.get('other')\n }\n : '';\n\n return [highlights, others];\n}\n\n/**\n * Map to group collection date\n * @param {array} Collection\n * @returns {array} Collection date splitted in groups\n */\nfunction mapToGroupCollectionDate(collection = [], literals = {}) {\n /* Data */\n const { year } = literals;\n\n /* Grouped */\n const grouped = groupBy(collection, item => parseInt(item.value.split('_')[1], 10));\n\n /* Years */\n const years = [...grouped.keys()].map((item, index) => ({\n label: `${year} ${item} `,\n choices: [...grouped.values()][index]\n }));\n\n return years;\n}\n\n/* Exports */\nmodule.exports = {\n mapToGroupCollection,\n mapToGroupCollectionDate\n};\n","/* ==========================================================================\n Helpers > Array\n ========================================================================== */\n\n/**\n * Group By\n * Groups a collection of objects based on key\n * @param {array} Collection\n * @param {function} Key getter\n * @returns {array} Collection grouped by key\n */\nfunction groupBy(list, fn) {\n const map = new Map();\n list.forEach(item => {\n const key = fn(item);\n const collection = map.get(key);\n if (!collection) {\n map.set(key, [item]);\n } else {\n collection.push(item);\n }\n });\n\n return map;\n}\n\n/**\n * Sort by key value\n * Sorts an array of objects by the given key name\n * @param {array} Collection\n * @param {string} Key value\n * @returns {array} Collection ordered by the key value\n */\nfunction sortByKey(collection = [], key = '') {\n if (!key) return collection.slice();\n\n return collection.sort((a, b) => (a[key] > b[key] ? -1 : 1));\n}\n\n/**\n * Returns TRUE if the first specified array contains all elements\n * from the second one. FALSE otherwise.\n *\n * @param {array} superset\n * @param {array} subset\n *\n * @returns {boolean}\n */\nfunction containsArray(superset = [], subset = []) {\n if (subset.length === 0) {\n return false;\n }\n return subset.every(value => superset.indexOf(value) >= 0);\n}\n\n/* Exports */\nmodule.exports = {\n groupBy,\n sortByKey,\n containsArray\n};\n","/* ==========================================================================\n SearcherCru > Client > Tooltip\n ========================================================================== */\n\n/* Modules */\nconst { toNode } = require('@bluekiri/alexandria/helpers/domHelpers');\n\nconst { fromEvent } = require('rxjs');\nconst { take } = require('rxjs/operators');\n\nconst configuration = require('../config');\n\n/* Create tooltip */\nfunction createTooltip(instance) {\n /* Data */\n const { literals } = instance.config;\n\n /* Literals */\n const { tooltipText } = literals;\n\n /* Template */\n const template = `${tooltipText}`;\n\n /* Node */\n const node = toNode(template)[0];\n\n /* Return */\n return node;\n}\n\n/* Add tooltip */\nfunction addTooltip(instance) {\n const panel = instance;\n\n /* Node */\n const node = createTooltip(instance);\n\n /* Add to DOM */\n instance.submit.element.parentNode.appendChild(node);\n\n /* Update instance */\n panel.tooltip = node;\n\n /* Update subscriptions */\n panel.subscriptions = {\n ...panel.subscriptions,\n documentClicks: fromEvent(document, 'click')\n .pipe(take(1))\n .subscribe(() => {\n /* Destroy tooltip */\n destroyTooltip(instance);\n })\n };\n\n setTimeout(() => node.classList.add(configuration().css.visible), 50);\n}\n\n/* Destroy tooltip */\nfunction destroyTooltip(instance) {\n const panel = instance;\n\n panel.tooltip.parentNode.removeChild(panel.tooltip);\n\n delete panel.tooltip;\n}\n\n/* Exports */\nmodule.exports = {\n addTooltip,\n destroyTooltip\n};\n","/* ==========================================================================\n Helpers > Currency\n ========================================================================== */\n\n/* Currency separators */\nconst SEPARATORS = {\n es: '.',\n pt: '.',\n it: '.',\n de: '.',\n fr: ' ',\n br: '.',\n en: ',',\n fi: ',',\n se: ' ',\n mx: ',',\n us: ',',\n ca: '.',\n ve: '.',\n ru: ' ',\n he: ',',\n ar: ',',\n tr: ',',\n ua: ' '\n};\n\n/**\n * Get separator by language\n * @param {string} language\n * @returns {string} separator\n */\nfunction getSeparatorByLanguage(language) {\n if (!Object.keys(SEPARATORS).includes(language.toLowerCase())) return '';\n\n return SEPARATORS[language.toLowerCase()];\n}\n\n/**\n * Add separator\n * @param {number} number\n * @param {string} language\n * @returns {string} number with the separator\n */\nfunction addSeparator(number, language) {\n if (number < 1000) return number.toString();\n\n const separator = getSeparatorByLanguage(language);\n\n return number.toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, separator);\n}\n\n/* Exports */\nmodule.exports = {\n getSeparatorByLanguage,\n addSeparator\n};\n","/* ==========================================================================\n SearcherCru > Client > Prototype\n ========================================================================== */\n\n/* Modules */\nconst { Store } = require('@bluekiri/alexandria/helpers/state');\n\nconst SelectActions = require('@bluekiri/alexandria-contrib-components/components/select-rxjs/client/js/store/actions');\nconst { addGa4Event } = require('@bluekiri/alexandria-contrib-components/helpers/ga4Event');\n\nconst { actions, types } = require('./store/actions');\nconst { reducer } = require('./store/reducer');\n\nconst { getData } = require('./services');\n\nconst { initResults } = require('./results');\nconst { addTooltip } = require('./tooltip');\nconst { buildUrl } = require('./url');\n\nconst { mapToGroupCollection, mapToGroupCollectionDate } = require('../../helpers/data');\n/* Prototype */\nconst prototype = {\n /* Setup store */\n setupStore() {\n if (this.store) return this;\n\n this.store = new Store({\n searcher: reducer\n });\n\n return this;\n },\n /* Setup actions */\n setupActions() {\n if (this.actions) return this;\n\n this.actions = {\n destroy: () => {\n return this.store.dispatch(actions.destroy());\n },\n display: () => {\n return this.store.dispatch(actions.display());\n },\n hide: () => {\n return this.store.dispatch(actions.hide());\n },\n disable: () => {\n return this.store.dispatch(actions.disable());\n },\n enable: () => {\n return this.store.dispatch(actions.enable());\n },\n submit: () => {\n return this.store.dispatch(actions.submit());\n },\n reset: () => {\n return this.store.dispatch(actions.reset());\n },\n setData: (\n data = {\n zone: Number || null,\n river: Number || null,\n departure: String || null,\n company: Number || null,\n duration: Number || null,\n port: Number || null\n }\n ) => {\n return this.store.dispatch(actions.setData(data));\n },\n setResults: results => {\n return this.store.dispatch(actions.setResults(results));\n }\n };\n\n return this;\n },\n /* Setup reactions */\n setupReactions() {\n if (this.reactions) return this;\n\n this.reactions = {\n destroy: this.store.subscribe((state, action) => {\n if (action.type !== types.DESTROY) return;\n\n /* Clean selects */\n ['zone', 'river', 'departure', 'company', 'duration', 'port'].forEach(key =>\n this[key] ? this[key].actions.destroy() : false\n );\n\n /* Unsubscribe */\n this.unsubscribe();\n [...Object.keys(this.reactions)].forEach(key => this.reactions[key].unsubscribe());\n\n /* Clean */\n this.element.parentNode.removeChild(this.element);\n\n /* Clean reference */\n [...Object.keys(this)].forEach(key => delete this[key]);\n }),\n display: this.store.subscribe((state, action) => {\n if (action.type !== types.DISPLAY) return;\n\n const { css } = this.config;\n\n this.element.classList.remove(css.hidden);\n }),\n hide: this.store.subscribe((state, action) => {\n if (action.type !== types.HIDE) return;\n\n const { css } = this.config;\n\n this.element.classList.add(css.hidden);\n }),\n disable: this.store.subscribe((state, action) => {\n if (action.type !== types.DISABLE) return;\n\n /* Disable reset */\n this.reset.actions.disable();\n }),\n enable: this.store.subscribe((state, action) => {\n if (action.type !== types.ENABLE) return;\n\n /* Enable reset */\n this.reset.actions.enable();\n }),\n submit: this.store.subscribe((state, action) => {\n if (action.type !== types.SUBMIT) return;\n\n /* Data */\n const { zone, river, departure, company, duration, port } = state.searcher;\n const { url, submit, isRiver = false } = this.config;\n\n if (submit) {\n window.location.assign(buildUrl({ url, zone, river, departure, company, duration, port, isRiver }));\n }\n }),\n reset: this.store.subscribe((state, action) => {\n if (action.type !== types.RESET) return;\n\n /**\n * Disable\n */\n this.actions.disable();\n\n /**\n * Since reset is return to clean state, we just fire a setData\n * action with a all options values\n */\n this.actions.setData({\n zone: -1,\n river: -1,\n departure: -1,\n company: -1,\n duration: -1,\n port: -1\n });\n }),\n setResults: this.store.subscribe((state, action) => {\n if (action.type !== types.SET_RESULTS) return;\n\n /* Data */\n const { literals } = this.config;\n const { cruise, cruises } = literals;\n\n /* Update UI */\n this.hooks.results.innerText = action.payload;\n this.hooks.text.innerText = action.payload === 1 ? cruise : cruises;\n }),\n setData: this.store.subscribe((state, action) => {\n if (action.type !== types.SET_DATA) return;\n\n /* Data */\n const { application, language, endpoints, isRiver } = this.config;\n const { zone, river, departure, company, duration, port, disabled } = state.searcher;\n\n /* Start searcher data */\n getData(endpoints.searchBox, {\n application,\n language,\n zone,\n river,\n departure,\n company,\n duration,\n port,\n isRiver\n }).subscribe({\n next: data => {\n this.setActions({\n zone,\n river,\n departure,\n company,\n duration,\n port,\n data\n });\n\n /* Update disabled */\n if (disabled) {\n if (\n zone !== -1 ||\n river !== -1 ||\n departure !== -1 ||\n company !== -1 ||\n duration !== -1 ||\n port !== -1\n ) {\n this.actions.enable();\n }\n } else if (\n zone === -1 &&\n river === -1 &&\n departure === -1 &&\n company === -1 &&\n duration === -1 &&\n port === -1\n ) {\n this.actions.disable();\n }\n },\n error: error => {\n return console.log(error);\n }\n });\n }),\n changeDeparture: this.departure.store.subscribe((state, action) => {\n if (\n action.type !== SelectActions.types.SET_OPTION &&\n action.type !== SelectActions.types.SELECT_OPTION\n ) {\n return;\n }\n\n /* Data */\n const { value } = action.payload;\n\n /* Dispatch action to set new company */\n this.actions.setData({\n departure: value\n });\n }),\n changeCompany: this.company.store.subscribe((state, action) => {\n if (\n action.type !== SelectActions.types.SET_OPTION &&\n action.type !== SelectActions.types.SELECT_OPTION\n ) {\n return;\n }\n\n /* Data */\n const { value } = action.payload;\n\n /* Dispatch action to set new company */\n this.actions.setData({\n company: +value\n });\n }),\n changeDuration: this.duration.store.subscribe((state, action) => {\n if (\n action.type !== SelectActions.types.SET_OPTION &&\n action.type !== SelectActions.types.SELECT_OPTION\n ) {\n return;\n }\n\n /* Data */\n const { value } = action.payload;\n\n /* Dispatch action to set new company */\n this.actions.setData({\n duration: +value\n });\n })\n };\n\n if (this.zone) {\n this.reactions = {\n ...this.reactions,\n changeZone: this.zone.store.subscribe((state, action) => {\n if (\n action.type !== SelectActions.types.SET_OPTION &&\n action.type !== SelectActions.types.SELECT_OPTION\n ) {\n return;\n }\n\n /* Data */\n const { value } = action.payload;\n\n /* Dispatch action to set new company */\n this.actions.setData({\n zone: +value\n });\n })\n };\n }\n\n if (this.river) {\n this.reactions = {\n ...this.reactions,\n changeRiver: this.river.store.subscribe((state, action) => {\n if (\n action.type !== SelectActions.types.SET_OPTION &&\n action.type !== SelectActions.types.SELECT_OPTION\n ) {\n return;\n }\n\n /* Data */\n const { value } = action.payload;\n\n /* Dispatch action to set new company */\n this.actions.setData({\n river: +value\n });\n })\n };\n }\n\n if (this.port) {\n this.reactions = {\n ...this.reactions,\n changePort: this.port.store.subscribe((state, action) => {\n if (\n action.type !== SelectActions.types.SET_OPTION &&\n action.type !== SelectActions.types.SELECT_OPTION\n ) {\n return;\n }\n\n /* Data */\n const { value } = action.payload;\n\n /* Dispatch action to set new company */\n this.actions.setData({\n port: +value\n });\n })\n };\n }\n\n return this;\n },\n /* Subscribe */\n subscribe() {\n if (this.subscriptions) this.unsubscribe();\n\n this.subscriptions = {\n submit: this.submit.events.click$.subscribe(event => {\n /* Prevent bubbling */\n event.stopPropagation();\n\n /* Data */\n const { disabled } = this.store.select('searcher');\n\n if (disabled) {\n const { tooltip } = this;\n\n /* Add tooltip */\n if (!tooltip) {\n addTooltip(this);\n }\n\n return;\n }\n\n addGa4Event({\n event: 'search',\n event_type: 'availability',\n event_detail: 'cruises'\n });\n\n /* Dispatch action */\n this.actions.submit();\n }),\n reset: this.reset.events.click$.subscribe(() => {\n /* Dispatch action */\n this.actions.reset();\n })\n };\n\n return this;\n },\n /* Unsubscribe */\n unsubscribe() {\n if (!this.subscriptions) return this;\n\n [...Object.keys(this.subscriptions)].forEach(key => this.subscriptions[key].unsubscribe());\n\n return this;\n },\n /* Start */\n start() {\n if (!this.config.start) return this;\n\n /* Disabling at start */\n this.actions.disable();\n\n const { zone, river, departure, company, duration, port } = this.config;\n\n /* Dispatch */\n this.actions.setData({\n zone,\n river,\n departure,\n company,\n duration,\n port\n });\n\n return this;\n },\n /* Init */\n init() {\n if (!this.config.init) return this;\n\n /* Init results */\n initResults(this);\n\n /* Setup store */\n this.setupStore();\n\n /* Setup actions */\n this.setupActions();\n\n /* Setup reactions */\n this.setupReactions();\n\n /* Subscribe */\n this.subscribe();\n\n /* Start */\n this.start();\n\n return this;\n },\n\n setActions({ zone, river, departure, company, duration, port, data }) {\n /* Update UI */\n const {\n allZonesLabel,\n allRiversLabel,\n allCompaniesLabel,\n allDurationsLabel,\n allPortsLabel,\n allDeparturesLabel,\n year,\n featuredOptionsLabel,\n otherOptionsLabel\n } = this.config.literals;\n\n /* Zones */\n if (this.zone) {\n this.zone.actions.setOptions([\n { label: '', choices: [{ value: -1, label: allZonesLabel, selected: zone === -1 }] },\n ...mapToGroupCollection(\n data.destinations.map(item => ({\n ...item,\n selected: +item.value === +zone\n })),\n { featuredOptionsLabel, otherOptionsLabel }\n )\n ]);\n }\n /* Rivers */\n if (this.river) {\n this.river.actions.setOptions([\n { label: '', choices: [{ value: -1, label: allRiversLabel, selected: river === -1 }] },\n ...mapToGroupCollection(\n data.rivers.map(item => ({\n ...item,\n selected: +item.value === +river\n })),\n { featuredOptionsLabel, otherOptionsLabel }\n )\n ]);\n }\n\n /* Departures */\n this.departure.actions.setOptions([\n {\n label: '',\n choices: [{ value: -1, label: allDeparturesLabel, selected: departure === -1 }]\n },\n ...mapToGroupCollectionDate(\n data.dates.map(item => ({\n ...item,\n selected: item.value === departure\n })),\n { year }\n )\n ]);\n\n /* Companies */\n this.company.actions.setOptions([\n { label: '', choices: [{ value: -1, label: allCompaniesLabel, selected: company === -1 }] },\n ...mapToGroupCollection(\n data.lines.map(item => ({\n ...item,\n selected: +item.value === +company\n })),\n { featuredOptionsLabel, otherOptionsLabel }\n )\n ]);\n\n /* Durations */\n this.duration.actions.setOptions([\n { value: -1, label: allDurationsLabel, selected: duration === -1 },\n ...data.duration.map(item => ({\n ...item,\n selected: +item.value === +duration\n }))\n ]);\n\n /* Ports */\n if (this.port) {\n this.port.actions.setOptions([\n { label: '', choices: [{ value: -1, label: allPortsLabel, selected: port === -1 }] },\n ...mapToGroupCollection(\n data.ports.map(item => ({\n ...item,\n selected: +item.value === +port\n })),\n { featuredOptionsLabel, otherOptionsLabel }\n )\n ]);\n }\n\n /* Results */\n this.actions.setResults(data.counter);\n }\n};\n\n/* Exports */\nmodule.exports = prototype;\n","/* ==========================================================================\n SearcherCru > Client > Url\n ========================================================================== */\n\n/* Build zone param */\nfunction zoneParam(zone = null) {\n if (!zone || zone === -1) return '';\n return `codZona=${zone}`;\n}\n\n/* Build rivers param */\nfunction riverParam(river = null) {\n if (!river || river === -1) return '';\n return `codRio=${river}`;\n}\n\n/* Build isRiver param */\nfunction isRiverParam(isRiver = null) {\n if (!isRiver || isRiver === -1) return '';\n return `isRiver=${isRiver}`;\n}\n\n/* Build departure param */\nfunction departureParam(departure = null) {\n if (!departure || departure === -1) return '';\n return `codSalida=${departure}`;\n}\n\n/* Build company param */\nfunction companyParam(company = null) {\n if (!company || company === -1) return '';\n return `codNaviera=${company}`;\n}\n\n/* Build duration param */\nfunction durationParam(duration = null) {\n if (!duration || duration === -1) return '';\n return `codDuracion=${duration}`;\n}\n\n/* Build port param */\nfunction portParam(port = null) {\n if (!port || port === -1) return '';\n return `codPuerto=${port}`;\n}\n\n/* Build url */\nfunction buildUrl(data = {}) {\n const { url, zone, river, departure, company, duration, port, isRiver } = data;\n\n return `${url}?`.concat(\n [\n zoneParam(zone),\n riverParam(river),\n departureParam(departure),\n companyParam(company),\n durationParam(duration),\n portParam(port),\n isRiverParam(isRiver)\n ]\n .filter(item => item)\n .join('&')\n );\n}\n\n/* Exports */\nmodule.exports = {\n buildUrl\n};\n","/* ==========================================================================\n SearcherCru > Client > Services\n ========================================================================== */\n\n/* Modules */\nconst { of } = require('rxjs');\nconst { catchError, switchMap } = require('rxjs/operators');\nconst { fromFetch } = require('rxjs/fetch');\n\n/**\n * Get data\n * @param {string} endpoint\n * @param {object} params\n * @returns {JSON} data\n */\nfunction getData(endpoint = '', params = {}) {\n const { application, language, zone, river, departure, company, duration, port, isRiver } = params;\n\n /* Build url */\n const url = endpoint.concat(\n '?',\n `application=${application.toLowerCase()}`,\n `&language=${language.toLowerCase()}`,\n zone !== -1 ? `&codZona=${zone}` : '',\n river !== -1 ? `&codRio=${river}` : '',\n port !== -1 ? `&codPuerto=${port}` : '',\n company !== -1 ? `&codNaviera=${company}` : '',\n departure !== -1 ? `&codSalida=${departure}` : '',\n duration !== -1 ? `&codDuracion=${duration}` : '',\n '&format=json',\n isRiver ? `&isRiver=${isRiver}` : ''\n );\n\n return fromFetch(url).pipe(\n switchMap(response => {\n if (response.ok) {\n return response.json();\n }\n return of({ error: true, message: `Error fetching data searcher ${response.statusText}` });\n }),\n catchError(err => {\n return of({ error: true, message: err.message });\n })\n );\n}\n\n/* Exports */\nmodule.exports = {\n getData\n};\n","/* ==========================================================================\n SearcherCru > Client > Store > Reducer\n ========================================================================== */\n\n/* Modules */\nconst { types } = require('./actions');\n\n/* Initial state */\nconst initialState = {\n hidden: false,\n disabled: true,\n company: -1,\n departure: -1,\n duration: -1,\n port: -1,\n zone: -1,\n river: -1,\n results: 0\n};\n\n/* Reducer */\nfunction reducer(state = initialState, action) {\n switch (action.type) {\n case types.DESTROY:\n return state;\n case types.DISPLAY:\n return {\n ...state,\n hidden: false\n };\n case types.HIDE:\n return {\n ...state,\n hidden: true\n };\n case types.DISABLE:\n return {\n ...state,\n disabled: true\n };\n case types.ENABLE:\n return {\n ...state,\n disabled: false\n };\n case types.SET_DATA:\n return {\n ...state,\n company: action.payload.company ? +action.payload.company : state.company,\n departure: action.payload.departure ? action.payload.departure : state.departure,\n duration: action.payload.duration ? +action.payload.duration : state.duration,\n port: action.payload.port ? +action.payload.port : state.port,\n zone: action.payload.zone ? +action.payload.zone : state.zone,\n river: action.payload.river ? +action.payload.river : state.river\n };\n case types.SET_RESULTS:\n return {\n ...state,\n results: +action.payload\n };\n default:\n return state;\n }\n}\n\n/* Exports */\nmodule.exports = {\n reducer\n};\n","/* ==========================================================================\n SearcherCru > Client > Store > Actions\n ========================================================================== */\n\n/* Types */\nconst DESTROY = 'SEARCHER_CRU::DESTROY';\nconst DISPLAY = 'SEARCHER_CRU::DISPLAY';\nconst HIDE = 'SEACHER_CRU::HIDE';\n\nconst SET_RESULTS = 'SEARCHER_CRU::SET_RESULTS';\nconst SET_DATA = 'SEARCHER_CRU::SET_DATA';\n\nconst DISABLE = 'SEARCHER_CRU::DISABLE';\nconst ENABLE = 'SEARCHER_CRU::ENABLE';\n\nconst SUBMIT = 'SEARCHER_CRU::SUBMIT';\nconst RESET = 'SEARCHER_CRU::RESET';\n\n/* Actions */\nconst destroy = () => ({ type: DESTROY });\nconst display = () => ({ type: DISPLAY });\nconst hide = () => ({ type: HIDE });\n\nconst setResults = payload => ({ type: SET_RESULTS, payload });\nconst setData = payload => ({ type: SET_DATA, payload });\n\nconst disable = () => ({ type: DISABLE });\nconst enable = () => ({ type: ENABLE });\n\nconst submit = () => ({ type: SUBMIT });\nconst reset = () => ({ type: RESET });\n\n/* Exports */\nmodule.exports = {\n types: {\n DESTROY,\n DISPLAY,\n HIDE,\n SET_RESULTS,\n SET_DATA,\n DISABLE,\n ENABLE,\n RESET,\n SUBMIT\n },\n actions: {\n destroy,\n display,\n hide,\n setResults,\n setData,\n disable,\n enable,\n reset,\n submit\n }\n};\n","/* ==========================================================================\n SearcherCru > Client\n ========================================================================== */\n\n/* Import modules */\nconst { elementExist } = require('@bluekiri/alexandria/helpers/domHelpers');\n\nconst Select = require('@bluekiri/alexandria-contrib-components/components/select-rxjs/client/js');\nconst Button = require('@bluekiri/alexandria-contrib-components/components/button-rxjs/client/js');\n\nconst prototype = require('./prototype');\nconst config = require('./config');\n\n/**\n * SearcherCru component\n * @param {selector} String selector for the component in the client side.\n */\nmodule.exports = function SearcherCru(selector = '[data-component=SearcherCru]', configuration = {}) {\n if (elementExist(selector)) {\n /* Instance */\n const instance = Object.create(prototype);\n\n /* Element */\n instance.element = document.querySelector(selector);\n\n /* Config */\n instance.config = {\n ...config(),\n ...configuration,\n ...(function getConfig() {\n if (!instance.element.dataset.config) return '';\n\n const result = JSON.parse(instance.element.dataset.config);\n instance.element.dataset.config = '';\n return result;\n })()\n };\n\n /* Hooks */\n instance.hooks = {\n results: instance.element.querySelector('[data-searcher-results]'),\n text: instance.element.querySelector('[data-searcher-text]')\n };\n\n /* Zone */\n instance.zone = Select(`${selector} [data-component=\"SelectRxjs\"][data-type=\"${config().type.zone}\"]`, {\n ...configuration.zone\n });\n\n /* Zone */\n instance.river = Select(`${selector} [data-component=\"SelectRxjs\"][data-type=\"${config().type.river}\"]`, {\n ...configuration.river\n });\n\n /* Departure */\n instance.departure = Select(\n `${selector} [data-component=\"SelectRxjs\"][data-type=\"${config().type.departure}\"]`,\n {\n ...configuration.departure\n }\n );\n\n /* Company */\n instance.company = Select(`${selector} [data-component=\"SelectRxjs\"][data-type=\"${config().type.company}\"]`, {\n ...configuration.company\n });\n\n /* Duration */\n instance.duration = Select(`${selector} [data-component=\"SelectRxjs\"][data-type=\"${config().type.duration}\"]`, {\n ...configuration.duration,\n choices: {\n searchEnabled: false\n }\n });\n\n /* Port */\n instance.port = Select(`${selector} [data-component=\"SelectRxjs\"][data-type=\"${config().type.port}\"]`, {\n ...configuration.port\n });\n\n /* Submit */\n instance.submit = Button(`${selector} [data-component=\"ButtonRxjs\"][data-type=\"${config().type.submit}\"]`, {\n ...configuration.submit\n });\n\n /* Reset */\n instance.reset = Button(`${selector} [data-component=\"ButtonRxjs\"][data-type=\"${config().type.reset}\"]`, {\n ...configuration.reset\n });\n\n /* Init */\n instance.init();\n\n /* Return */\n return instance;\n }\n};\n","/* ==========================================================================\n SearcherCru > Client > Config\n ========================================================================== */\n\n/* Import modules */\n\n/* Config */\nconst config = {\n component: 'SearcherCru',\n init: true,\n start: true,\n submit: true,\n css: {\n hidden: 'is-hidden',\n item: {\n base: 'searcher__item',\n small: 'searcher__item--small',\n long: 'searcher__item--long'\n },\n results: 'searcher__results',\n number: 'searcher__number',\n text: 'searcher__text',\n button: 'searcher__button',\n reset: 'searcher__reset',\n message: 'searcher__message',\n actions: 'searcher__actions',\n wrapper: 'searcher__wrapper',\n visible: 'is-visible',\n river: 'is-river'\n },\n icon: {\n refresh: 'refresh'\n },\n type: {\n zone: 'searcher-cru-zone',\n river: 'searcher-cru-river',\n departure: 'searcher-cru-departure',\n company: 'searcher-cru-company',\n duration: 'searcher-cru-duration',\n port: 'searcher-cru-port',\n submit: 'searcher-cru-submit',\n reset: 'searcher-cru-reset'\n }\n};\n\nmodule.exports = () => config;\n"],"sourceRoot":""}