{"version":3,"sources":["webpack:///./node_modules/@logitravel/alex-comp-cru/components/ship-decks/client/js/pagination/index.js","webpack:///./node_modules/@bluekiri/alexandria-contrib-components/components/collapse-rxjs/client/js/prototype.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/ship-decks/client/js/store/actions.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/ship-decks/client/js/service/index.js","webpack:///./node_modules/@bluekiri/alexandria-contrib-components/components/collapse-rxjs/client/js/index.js","webpack:///./node_modules/@bluekiri/alexandria-contrib-components/components/collapse-rxjs/client/js/store/reducer.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/ship-areas-rxjs/client/js/store/reducer.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/ship-areas-rxjs/client/js/config.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/ship-areas-rxjs/client/js/prototype.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/ship-decks/client/js/prototype.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/ship-decks/client/js/config.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/ship-decks/client/js/store/reducer.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/ship-decks/client/js/index.js","webpack:///./node_modules/@bluekiri/alexandria-contrib-components/animations/collapse.js","webpack:///./node_modules/@bluekiri/alexandria-contrib-components/components/collapse-rxjs/client/js/config.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/ship-areas-rxjs/client/js/store/actions.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/ship-decks/client/js/results/index.js","webpack:///./node_modules/@bluekiri/alexandria-contrib-components/components/collapse-rxjs/client/js/store/actions.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/ship-areas-rxjs/client/js/index.js"],"names":["checkArrows","currentPage","instance","_toConsumableArray","hooks","paginationButtons","map","button","classList","remove","shipAreas","options","length","filter","dataset","add","module","exports","paginate","action","store","state","shipDecks","option","selectedOptionPosition","page","actions","selectedOption","selectedOptionValue","id","name","innerText","setDeckName","inst","pagination","concat","config","literals","deck","payload","Store","require","_require2","collapse","expand","_require3","types","reducer","prototype","setupStore","this","setupActions","_this","destroy","dispatch","display","hide","toggleCollapse","setCollapse","setupReactions","_this2","reactions","subscribe","_","type","DESTROY","unsubscribe","Object","keys","forEach","key","element","parentNode","removeChild","DISPLAY","css","requestAnimationFrame","hidden","HIDE","TOGGLE_COLLAPSE","icon","collapsed","body","collapsible","setIcon","plus","minus","_this3","subscriptions","events","click$","_this4","start","init","DISABLE","ENABLE","GET_RESULTS","PAGINATE","SET_CURRENT_OPTION","SET_RESULTS_HEIGHT","IS_LOADING","RESULTS_HIDDEN","disable","enable","getResults","pageNumber","setCurrentOption","setResultsHeight","isLoading","resultsHidden","of","catchError","switchMap","fromFetch","getCardShipSectionList","endpoint","arguments","undefined","params","pipe","response","ok","json","error","message","statusText","err","elementExist","Button","selector","configuration","create","document","querySelector","_objectSpread","result","JSON","parse","initialState","SET_COLLAPSE","SELECTED_OPTION","component","imgConfig","resize","width","height","operation","suboperation","quality","selected","fromEvent","_require4","carousel","item","position","setupEvents","event","target","closest","clicks","out","shipAreasActions","_require5","addCardShipSectionList","destroyCardShipSectionList","_require6","disabled","setDeckLabel","Math","round","resultsContainer","getBoundingClientRect","deckImage","setAttribute","loading","resultsFrame","pagContainer","paginationButton$","collapseButtons$","collapseButtons","setTimeout","_this5","endpoints","results","selectionRange","alternative","withBorder","valid","active","image","legend","collapseRooms","collapsePublicAreas","collapseLegend","randomId","Image","CollapseRxjs","ShipAreasClient","rooms","publicAreas","querySelectorAll","collapses","push","take","elem","sectionHeight","scrollHeight","elementTransition","style","transition","toNode","addData","ImageTemplate","ImageRxjs","CardShipSectionList","CardShipSectionListTemplate","createCardShipSectionList","template","context","firstChild","codBarco","_inst$config$context","modelAjaxEndpoint","businessAreaName","select","method","headers","stringify","Name","BusinessAreaName","Arguments","Value","pageName","next","roomsInfo","nodeRooms","room","appendChild","nodePublicAreas","setLegend","setCollapses","nodeImage","createDeckImage","index","clickDecks","cards","card","el","i"],"mappings":"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","file":"vendors~ship-decks.d32ab71b09bd2eed1da6.bundle.js","sourcesContent":["/* ==========================================================================\n ShipDecks > Client > Paginate\n ========================================================================== */\n\n/**\n * Basing on the selected option, sets the new selected option in the ship areas component\n * @param {*} action\n * @param {*} instance\n */\nfunction paginate(action, instance) {\n let currentPage = +instance.store.state.shipDecks.option.selectedOptionPosition;\n\n if (action.page > 0 && currentPage < instance.shipAreas.options.length - 1) {\n currentPage += 1;\n } else if (action.page < 0 && currentPage > 0) {\n currentPage -= 1;\n } else {\n checkArrows(currentPage, instance);\n return false;\n }\n\n instance.shipAreas.actions.selectedOption({\n selectedOptionValue: instance.shipAreas.options[currentPage].dataset.id,\n name: instance.shipAreas.options[currentPage].innerText,\n selectedOptionPosition: currentPage\n });\n\n return instance.shipAreas.options[currentPage];\n}\n\n/**\n * Sets the selected deck name in the pagination area\n * @param {*} action\n * @param {*} instance\n */\nfunction setDeckName(action, instance) {\n const inst = instance;\n const currentPage = +instance.shipAreas.store.state.options.selectedOptionPosition;\n checkArrows(currentPage, instance);\n inst.hooks.pagination.innerText = `${inst.config.literals.deck} ${action.payload.name}`;\n}\n\n/**\n * Checks the current page position to show arrows or not\n * @param {*} currentPage\n * @param {*} instance\n */\nfunction checkArrows(currentPage, instance) {\n [...instance.hooks.paginationButtons].map(button => button.classList.remove('hidden'));\n if (currentPage === instance.shipAreas.options.length - 1) {\n [...instance.hooks.paginationButtons]\n .filter(button => button.dataset.button === '1')[0]\n .classList.add('hidden');\n } else if (currentPage === 0) {\n [...instance.hooks.paginationButtons]\n .filter(button => button.dataset.button === '-1')[0]\n .classList.add('hidden');\n }\n}\n/* Exports */\nmodule.exports = {\n paginate,\n setDeckName\n};\n","/* ==========================================================================\n CollapseRxjs > Client > Prototype\n ========================================================================== */\n\n/* Modules */\nconst { Store } = require('@bluekiri/alexandria/helpers/state');\n\nconst { collapse, expand } = require('../../../../animations/collapse');\n\nconst { types, actions } = require('./store/actions');\nconst { reducer } = require('./store/reducer');\n\n/* Prototype */\nconst prototype = {\n /* Setup store */\n setupStore() {\n if (this.store) return this;\n\n this.store = new Store({\n collapse: reducer\n });\n\n return this;\n },\n /* Setup actions */\n setupActions() {\n if (this.actions) return this;\n\n this.actions = {\n destroy: () => this.store.dispatch(actions.destroy()),\n display: () => this.store.dispatch(actions.display()),\n hide: () => this.store.dispatch(actions.hide()),\n toggleCollapse: () => this.store.dispatch(actions.toggleCollapse()),\n setCollapse: payload => this.store.dispatch(actions.setCollapse(payload))\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((_, action) => {\n if (action.type !== types.DESTROY) return;\n\n /* Unsubscribe */\n this.unsubscribe();\n [...Object.keys(this.reactions)].forEach(key => this.reactions[key].unsubscribe());\n\n /* Delete from DOM */\n this.element.parentNode.removeChild(this.element);\n\n /* Clean references */\n [...Object.keys(this)].forEach(key => delete this[key]);\n }),\n display: this.store.subscribe((_, action) => {\n if (action.type !== types.DISPLAY) return;\n\n const { css } = this.config;\n\n requestAnimationFrame(() => {\n this.element.classList.remove(css.hidden);\n });\n }),\n hide: this.store.subscribe((_, action) => {\n if (action.type !== types.HIDE) return;\n\n const { css } = this.config;\n\n requestAnimationFrame(() => {\n this.element.classList.add(css.hidden);\n });\n }),\n toggleCollapse: this.store.subscribe((state, action) => {\n if (action.type !== types.TOGGLE_COLLAPSE) return;\n\n /* Data */\n const { icon } = this.config;\n const { collapsed } = state.collapse;\n\n if (collapsed) {\n requestAnimationFrame(() => {\n collapse(this.hooks.body);\n\n /* Dispatch collapsible action to change icon */\n this.collapsible.actions.setIcon(icon.plus);\n });\n\n return;\n }\n\n requestAnimationFrame(() => {\n expand(this.hooks.body);\n\n /* Dispatch collapsible action to change icon */\n this.collapsible.actions.setIcon(icon.minus);\n });\n })\n };\n\n return this;\n },\n /* Subscribe */\n subscribe() {\n if (this.subscriptions) this.unsubscribe();\n\n this.subscriptions = {\n collapse: this.collapsible.events.click$.subscribe(() => {\n /* Dispatch action */\n this.actions.toggleCollapse();\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 /* Collapsed */\n const { collapsed } = this.config;\n\n if (!collapsed) {\n return this;\n }\n\n this.actions.setCollapse(true);\n\n return this;\n },\n /* Init */\n init() {\n if (!this.config.init) return 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\n/* Exports */\nmodule.exports = prototype;\n","/* ==========================================================================\n ShipDecks > Client > Store > Actions\n ========================================================================== */\n\n/* Types */\nconst DESTROY = 'SHIP_DECKS::DESTROY';\nconst DISABLE = 'SHIP_DECKS::DISABLE';\nconst DISPLAY = 'SHIP_DECKS::DISPLAY';\nconst ENABLE = 'SHIP_DECKS::ENABLE';\nconst HIDE = 'SHIP_DECKS::HIDE';\nconst SET_CURRENT_OPTION = 'SHIP_DECKS::SET_CURRENT_OPTION';\nconst GET_RESULTS = 'SHIP_DECKS::GET_RESULTS';\nconst PAGINATE = 'SHIP_DECKS::PAGINATE';\nconst SET_RESULTS_HEIGHT = 'SHIP_DECKS::SET_RESULTS_HEIGHT';\nconst IS_LOADING = 'SHIP_DECKS::IS_LOADING';\nconst RESULTS_HIDDEN = 'SHIP_DECKS::RESULTS_HIDDEN';\n\n/* Actions */\nconst destroy = () => ({ type: DESTROY });\nconst disable = () => ({ type: DISABLE });\nconst display = () => ({ type: DISPLAY });\nconst enable = () => ({ type: ENABLE });\nconst hide = () => ({ type: HIDE });\nconst setCurrentOption = option => ({ type: SET_CURRENT_OPTION, option });\nconst getResults = () => ({ type: GET_RESULTS });\nconst paginate = pageNumber => ({ type: PAGINATE, page: pageNumber });\nconst setResultsHeight = () => ({ type: SET_RESULTS_HEIGHT });\nconst isLoading = payload => ({ type: IS_LOADING, payload });\nconst resultsHidden = payload => ({ type: RESULTS_HIDDEN, payload });\n\n/* Exports */\nmodule.exports = {\n types: {\n DESTROY,\n DISABLE,\n DISPLAY,\n ENABLE,\n HIDE,\n GET_RESULTS,\n PAGINATE,\n SET_CURRENT_OPTION,\n SET_RESULTS_HEIGHT,\n IS_LOADING,\n RESULTS_HIDDEN\n },\n actions: {\n destroy,\n disable,\n display,\n enable,\n hide,\n getResults,\n paginate,\n setCurrentOption,\n setResultsHeight,\n isLoading,\n resultsHidden\n }\n};\n","/* ==========================================================================\n ShipDecks > 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 the cards list from the remote server\n * @param {string} endpoint Remote address to connect\n * @param {object} params\n * @returns {JSON} data\n */\nfunction getCardShipSectionList(endpoint = '', params = {}) {\n return fromFetch(endpoint, params).pipe(\n switchMap(response => {\n if (response.ok) {\n return response.json();\n }\n return of({ error: true, message: `Error fetching products ${response.statusText}` });\n }),\n catchError(err => {\n return of({ error: true, message: err.message });\n })\n );\n}\n\n/* Exports */\nmodule.exports = {\n getCardShipSectionList\n};\n","/* ==========================================================================\n CollapseRxjs > Client\n ========================================================================== */\n\n/* Import modules */\nconst { elementExist } = require('@bluekiri/alexandria/helpers/domHelpers');\n\nconst Button = require('../../../button-rxjs/client/js');\n\nconst prototype = require('./prototype');\nconst config = require('./config');\n\n/**\n * CollapseRxjs component\n * @param {selector} String selector for the component in the client side.\n */\nmodule.exports = function CollapseRxjs(selector = '[data-component=CollapseRxjs]', configuration = {}) {\n if (elementExist(selector)) {\n /* Instance */\n const instance = Object.create(prototype);\n\n /* Element */\n instance.element = document.querySelector(selector);\n\n /* Hooks */\n instance.hooks = {\n body: instance.element.querySelector('[data-collapse-body]')\n };\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 /* Collapsible */\n instance.collapsible = Button(\n `${selector} [data-component=\"ButtonRxjs\"][data-type=\"${config().type.collapsible}\"]`\n );\n\n /* Init */\n instance.init();\n\n /* Return */\n return instance;\n }\n};\n","/* ==========================================================================\n CollapseRxjs > Client > Store > Reducer\n ========================================================================== */\n\n/* Modules */\nconst { types } = require('./actions');\n\n/* Initial state */\nconst initialState = {\n collapsed: false,\n hidden: false\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.SET_COLLAPSE:\n return {\n ...state,\n collapsed: action.payload\n };\n case types.TOGGLE_COLLAPSE:\n return {\n ...state,\n collapsed: !state.collapsed\n };\n default:\n return state;\n }\n}\n\n/* Exports */\nmodule.exports = {\n reducer\n};\n","/* ==========================================================================\n ShipAreasRxjs > Client > Store > Reducer\n ========================================================================== */\n\n/* Modules */\nconst { types } = require('./actions');\n\n/* Initial state */\nconst initialState = {\n hidden: false,\n selectedOptionValue: '',\n name: '',\n selectedOptionPosition: 1\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.SELECTED_OPTION:\n return {\n ...state,\n selectedOptionValue: action.payload.selectedOptionValue,\n name: action.payload.name,\n selectedOptionPosition: action.payload.selectedOptionPosition\n };\n default:\n return state;\n }\n}\n\n/* Exports */\nmodule.exports = {\n reducer\n};\n","/* ==========================================================================\n ShipAreasRxjs > Client > Config\n ========================================================================== */\n\n/* Import modules */\n\n/* Config */\nconst config = {\n component: 'ShipAreasRxjs',\n init: true,\n start: true,\n imgConfig: {\n resize: {\n width: 9000,\n height: 275,\n operation: 'resize',\n suboperation: '',\n quality: 85\n }\n },\n css: {\n selected: 'ship-areas-rxjs__selected'\n }\n};\n\nmodule.exports = () => config;\n","/* ==========================================================================\n ShipAreasRxjs > Client > Prototype\n ========================================================================== */\n\n/* Modules */\nconst { Store } = require('@bluekiri/alexandria/helpers/state');\n\nconst { fromEvent } = require('rxjs');\nconst { filter, map } = require('rxjs/operators');\n\nconst { actions, types } = require('./store/actions');\nconst { reducer } = require('./store/reducer');\n\n/* Prototype */\nconst prototype = {\n /* Setup store */\n setupStore() {\n if (this.store) return this;\n\n this.store = new Store({\n options: 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 selectedOption: option => {\n return this.store.dispatch(actions.selectedOption(option));\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 /* Destroy carousel */\n if (this.carousel) {\n this.carousel.actions.destroy();\n }\n\n /* Unsubscribe */\n [...Object.keys(this.reactions)].forEach(key => this.reactions[key].unsubscribe());\n\n /* Remove DOM */\n this.element.parentNode.removeChild(this.element);\n\n /* Clean */\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 selectedOption: this.store.subscribe((state, action) => {\n if (action.type !== types.SELECTED_OPTION) return;\n\n // Bolding selected option\n [...this.options].map(item =>\n item.dataset.position === action.payload.selectedOptionPosition\n ? item.classList.add(this.config.css.selected)\n : item.classList.remove(this.config.css.selected)\n );\n })\n };\n\n return this;\n },\n /* Setup events */\n setupEvents() {\n if (this.events) return this;\n\n this.events = {\n click$: fromEvent(this.element, 'click').pipe(\n filter(event => {\n return event.target.closest(`[data-option]`);\n }),\n map(event => {\n return {\n selectedOptionValue: event.target.dataset.id,\n name: event.target.innerText,\n selectedOptionPosition: event.target.dataset.position\n };\n })\n )\n };\n\n return this;\n },\n /* Subscribe */\n subscribe() {\n if (this.subscriptions) this.unsubscribe();\n this.subscriptions = {\n clicks: this.events.click$.subscribe(out => {\n this.actions.selectedOption(out);\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 return this;\n },\n /* Init */\n init() {\n if (!this.config.init) return this;\n\n /* Setup store */\n this.setupStore();\n\n /* Setup actions */\n this.setupActions();\n\n /* Setup reactions */\n this.setupReactions();\n\n /* Setup events */\n this.setupEvents();\n\n /* Subscribe */\n this.subscribe();\n\n /* Start */\n this.start();\n\n return this;\n }\n};\n\n/* Export */\nmodule.exports = prototype;\n","/* ==========================================================================\n ShipDecks > Client > Prototype\n ========================================================================== */\n\n/* Modules */\nconst { Store } = require('@bluekiri/alexandria/helpers/state');\n\nconst { fromEvent } = require('rxjs');\n\nconst { actions, types } = require('./store/actions');\nconst { reducer } = require('./store/reducer');\n\nconst shipAreasActions = require('../../../ship-areas-rxjs/client/js/store/actions');\nconst { addCardShipSectionList, destroyCardShipSectionList } = require('./results');\nconst { paginate, setDeckName } = require('./pagination');\n\n/* Prototype */\nconst prototype = {\n /* Setup store */\n setupStore() {\n if (this.store) return this;\n\n this.store = new Store({\n shipDecks: 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 disable: () => {\n return this.store.dispatch(actions.disable());\n },\n display: () => {\n return this.store.dispatch(actions.display());\n },\n enable: () => {\n return this.store.dispatch(actions.enable());\n },\n hide: () => {\n return this.store.dispatch(actions.hide());\n },\n setCurrentOption: option => {\n return this.store.dispatch(actions.setCurrentOption(option));\n },\n getResults: () => {\n return this.store.dispatch(actions.getResults());\n },\n paginate: page => {\n return this.store.dispatch(actions.paginate(page));\n },\n setResultsHeight: () => {\n return this.store.dispatch(actions.setResultsHeight());\n },\n isLoading: payload => {\n return this.store.dispatch(actions.isLoading(payload));\n },\n resultsHidden: payload => {\n return this.store.dispatch(actions.resultsHidden(payload));\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 /* Unsubscribe */\n this.unsubscribe();\n\n /* Destroy cards list */\n destroyCardShipSectionList(this);\n\n /* Remove from DOM */\n this.element.parentNode.removeChild(this.element);\n\n /* Clean instance */\n [...Object.keys(this)].forEach(key => delete this[key]);\n }),\n disable: this.store.subscribe((state, action) => {\n if (action.type !== types.DISABLE) return;\n\n const { css } = this.config;\n this.element.classList.add(css.disabled);\n }),\n display: this.store.subscribe((state, action) => {\n if (action.type !== types.DISPLAY) return;\n\n const { css } = this.config;\n this.element.classList.remove(css.hidden);\n }),\n enable: this.store.subscribe((state, action) => {\n if (action.type !== types.ENABLE) return;\n\n const { css } = this.config;\n this.element.classList.remove(css.disabled);\n }),\n hide: this.store.subscribe((state, action) => {\n if (action.type !== types.HIDE) return;\n\n const { css } = this.config;\n this.element.classList.add(css.hidden);\n }),\n getResults: this.store.subscribe((state, action) => {\n if (action.type !== types.GET_RESULTS) return;\n this.actions.setCurrentOption(this.shipAreas.store.state.options);\n this.actions.resultsHidden(false);\n addCardShipSectionList(this);\n }),\n setDeckLabel: this.shipAreas.store.subscribe((state, action) => {\n if (action.type !== shipAreasActions.types.SELECTED_OPTION) return;\n setDeckName(action, this);\n }),\n paginate: this.store.subscribe((state, action) => {\n if (action.type !== types.PAGINATE) return;\n if (paginate(action, this)) {\n this.actions.getResults();\n }\n }),\n setResultsHeight: this.store.subscribe((state, action) => {\n if (action.type !== types.SET_RESULTS_HEIGHT) return;\n /* Sets the results's height dynamically to adjust the ship div */\n const height = Math.round(this.hooks.resultsContainer.getBoundingClientRect().height + 30);\n this.hooks.deckImage.setAttribute('style', `height: ${height > 500 ? height : 500}px`);\n }),\n isLoading: this.store.subscribe((state, action) => {\n if (action.type !== types.IS_LOADING) return;\n /* Displays spinner, or not */\n if (action.payload) {\n this.hooks.loading.classList.remove(this.config.css.hidden);\n this.actions.resultsHidden(true);\n } else {\n this.actions.resultsHidden(false);\n this.hooks.loading.classList.add(this.config.css.hidden);\n }\n }),\n resultsHidden: this.store.subscribe((state, action) => {\n if (action.type !== types.RESULTS_HIDDEN) return;\n\n if (action.payload) {\n this.hooks.resultsFrame.classList.add(this.config.css.hidden);\n this.hooks.pagContainer.classList.add(this.config.css.hidden);\n } else {\n this.hooks.pagContainer.classList.remove(this.config.css.hidden);\n this.hooks.resultsFrame.classList.remove(this.config.css.hidden);\n }\n })\n };\n\n return this;\n },\n /* Setup events */\n setupEvents() {\n if (this.events) return this;\n\n this.events = {\n paginationButton$: this.hooks.paginationButtons.map(button => {\n return fromEvent(button, 'click').subscribe(() => this.actions.paginate(+button.dataset.button));\n }),\n collapseButtons$: this.hooks.collapseButtons.map(button => {\n return fromEvent(button, 'click').subscribe(() =>\n setTimeout(() => this.actions.setResultsHeight(), 500)\n );\n })\n };\n\n return this;\n },\n /* Subscribe */\n subscribe() {\n if (this.subscriptions) this.unsubscribe();\n\n this.subscriptions = {\n clicks: this.shipAreas.events.click$.subscribe(() => {\n this.actions.getResults();\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 this.hooks.pagContainer.classList.add(this.config.css.hidden);\n\n return this;\n },\n /* Init */\n init() {\n /* Setup store */\n this.setupStore();\n\n /* Setup actions */\n this.setupActions();\n\n /* Setup reactions */\n this.setupReactions();\n\n /* Setup event */\n this.setupEvents();\n\n /* Subscribe */\n this.subscribe();\n\n /* Start */\n this.start();\n }\n};\n\n/* Exports */\nmodule.exports = prototype;\n","/* ==========================================================================\n ShipDecks > Client > Config\n ========================================================================== */\n\n/* Config */\nconst config = {\n endpoints: {\n results: 'http://localhost:3000/shipDecksResults'\n },\n component: 'ShipDecks',\n init: true,\n start: true,\n events: true,\n selectionRange: true,\n css: {\n alternative: 'ship-decks--alternative',\n withBorder: 'ship-decks--with-border',\n valid: 'is-valid',\n error: 'has-error',\n active: 'is-active',\n hidden: 'is-hidden',\n disabled: 'is-disabled',\n collapse: 'ship-decks__collapse'\n },\n image: {\n legend: {\n resize: { width: 450, height: 344, quality: 95, suboperation: '', operation: 'resize' }\n }\n },\n type: {\n legend: 'shipDecksLegend',\n deckImage: 'deckImage',\n collapseRooms: 'collapseRooms',\n collapsePublicAreas: 'collapsePublicAreas',\n collapseLegend: 'collapseLegend'\n }\n};\n\nmodule.exports = () => config;\n","/* ==========================================================================\n ShipDecks > Client > Store > Reducer\n ========================================================================== */\n\n/* Modules */\nconst { types } = require('./actions');\n\n/* Initial state */\nconst initialState = {\n active: false,\n disabled: false,\n hidden: false,\n option: {},\n page: 1,\n isLoading: false,\n resultsHidden: true\n};\n\n/* Reducer */\nfunction reducer(state = initialState, action) {\n switch (action.type) {\n case types.DESTROY:\n return null;\n case types.DISABLE:\n return {\n ...state,\n disabled: true\n };\n case types.DISPLAY:\n return {\n ...state,\n hidden: false\n };\n case types.ENABLE:\n return {\n ...state,\n disabled: false\n };\n case types.HIDE:\n return {\n ...state,\n hidden: true\n };\n case types.SET_CURRENT_OPTION:\n return {\n ...state,\n option: action.option\n };\n case types.GET_RESULTS:\n return {\n ...state\n };\n case types.PAGINATE:\n return {\n ...state,\n page: action.page\n };\n case types.SET_RESULTS_HEIGHT:\n return {\n ...state\n };\n case types.IS_LOADING:\n return {\n ...state,\n isLoading: action.payload\n };\n case types.RESULTS_HIDDEN:\n return {\n ...state,\n resultsHidden: action.payload\n };\n default:\n return state;\n }\n}\n\n/* Exports */\nmodule.exports = {\n reducer\n};\n\n/**\n * DESTROY,\n DISPLAY,\n HIDE,\n */\n","/* ==========================================================================\n ShipDecks > Client\n ========================================================================== */\n\n/* Import modules */\nconst { elementExist } = require('@bluekiri/alexandria/helpers/domHelpers');\nconst { randomId } = require('@bluekiri/alexandria/helpers/dataHelpers');\nconst Image = require('@bluekiri/alexandria-contrib-components/components/image-rxjs/client/js');\nconst CollapseRxjs = require('@bluekiri/alexandria-contrib-components/components/collapse-rxjs/client/js');\nconst ShipAreasClient = require('../../../ship-areas-rxjs/client/js');\n\nconst prototype = require('./prototype');\nconst config = require('./config');\n\n/**\n * ShipDecks component\n * @param {selector} String selector for the component in the client side.\n */\nmodule.exports = function ShipDecks(selector = '[data-component=ShipDecks]', configuration = {}) {\n if (elementExist(selector)) {\n /* Instance */\n const instance = Object.create(prototype);\n\n /* Selector */\n instance.selector = selector;\n\n /* Element */\n instance.element = document.querySelector(selector);\n\n /* Hooks */\n instance.hooks = {\n pagination: instance.element.querySelector('[data-pagination]'),\n pagContainer: instance.element.querySelector('[data-pagContainer]'),\n rooms: instance.element.querySelector('[data-rooms]'),\n publicAreas: instance.element.querySelector('[data-publicareas]'),\n deckImage: instance.element.querySelector('[data-deck]'),\n paginationButtons: [...instance.element.querySelectorAll('[data-button]')],\n resultsContainer: instance.element.querySelector('[data-results]'),\n resultsFrame: instance.element.querySelector('[data-results-frame]'),\n collapseButtons: [],\n loading: instance.element.querySelector('[data-loading]')\n };\n\n /* ID for pairing */\n instance.id = randomId(randomId('shipDecks'));\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 /* ShipAreas Component */\n instance.shipAreas = ShipAreasClient(`${selector} [data-component=\"ShipAreasRxjs\"]`, {\n ...configuration\n });\n\n /* Legend image */\n instance.legend = Image(`${selector} [data-type=\"${config().type.legend}\"]`, {\n ...configuration\n });\n\n /* CollapseRxjs */\n instance.collapses = {};\n\n instance.element.querySelectorAll('[data-component=\"CollapseRxjs\"]').forEach(collapse => {\n instance.collapses[collapse.dataset.type] = CollapseRxjs(\n `[data-component=\"CollapseRxjs\"][data-type=\"${collapse.dataset.type}\"]`,\n {\n ...configuration.collapse\n }\n );\n instance.hooks.collapseButtons.push(collapse.querySelector('[data-component=\"ButtonRxjs\"]'));\n });\n\n /* Rooms */\n instance.rooms = [];\n\n /* Init */\n if (instance.config.init) instance.init();\n\n /* Return */\n return instance;\n }\n};\n","/* ==========================================================================\n Animations > Collapse\n ========================================================================== */\n\n/* Modules */\nconst { fromEvent } = require('rxjs');\nconst { take } = require('rxjs/operators');\n\n/**\n * Collapse\n * Passed a DOM element, it collapses\n * It needs some styling done in its css/scss\n * height: auto,\n overflow: hidden,\n transition: height 0.3s ease-out\n * @param {HTMLElement} Element\n */\nfunction collapse(element) {\n const elem = element;\n\n // get the height of the element's inner content, regardless of its actual size\n const sectionHeight = element.scrollHeight;\n\n // temporarily disable all css transitions\n const elementTransition = element.style.transition;\n elem.style.transition = '';\n\n // on the next frame (as soon as the previous style change has taken effect),\n // explicitly set the element's height to its current pixel height, so we\n // aren't transitioning out of 'auto'\n requestAnimationFrame(() => {\n elem.style.height = `${sectionHeight}px`;\n elem.style.transition = elementTransition;\n\n // on the next frame (as soon as the previous style change has taken effect),\n // have the element transition to height: 0\n requestAnimationFrame(() => {\n elem.style.height = `${0}px`;\n });\n });\n\n // mark the section as \"currently collapsed\"\n element.setAttribute('data-collapsed', 'true');\n}\n\n/**\n * Expand\n * Passed a DOM element, it expands\n * @param {HTMLElement} Element\n */\nfunction expand(element) {\n const elem = element;\n\n // get the height of the element's inner content, regardless of its actual size\n const sectionHeight = element.scrollHeight;\n\n // have the element transition to the height of its inner content\n elem.style.height = `${sectionHeight}px`;\n\n // when the next css transition finishes (which should be the one we just triggered)\n fromEvent(element, 'transitionend')\n .pipe(take(1))\n .subscribe(() => {\n // remove \"height\" from the element's inline styles, so it can return to its initial value\n elem.style.height = null;\n });\n\n // mark the section as \"currently not collapsed\"\n element.setAttribute('data-collapsed', 'false');\n}\n\n/* Exports */\nmodule.exports = {\n collapse,\n expand\n};\n","/* ==========================================================================\n CollapseRxjs > Client > Config\n ========================================================================== */\n\n/* Import modules */\n\n/* Config */\nconst config = {\n component: 'CollapseRxjs',\n init: true,\n start: true,\n type: {\n collapsible: 'collapse-rxjs-collapsible'\n },\n css: {\n button: 'collapse-rxjs__button',\n hidden: 'is-hidden'\n },\n icon: {\n plus: 'plus',\n minus: 'minus'\n }\n};\n\nmodule.exports = () => config;\n","/* ==========================================================================\n ShipAreasRxjs > Client > Store > Actions\n ========================================================================== */\n\n/* Types */\nconst DESTROY = 'SHIPAREASRXJS::DESTROY';\nconst DISPLAY = 'SHIPAREASRXJS::DISPLAY';\nconst HIDE = 'SHIPAREASRXJS::HIDE';\nconst SELECTED_OPTION = 'SHIPAREASRXJS::SELECTED_OPTION';\n\n/* Actions */\nconst destroy = () => ({ type: DESTROY });\nconst display = () => ({ type: DISPLAY });\nconst hide = () => ({ type: HIDE });\nconst selectedOption = payload => ({ type: SELECTED_OPTION, payload });\n\n/* Exports */\nmodule.exports = {\n types: {\n DESTROY,\n DISPLAY,\n HIDE,\n SELECTED_OPTION\n },\n actions: {\n destroy,\n display,\n hide,\n selectedOption\n }\n};\n","/* ==========================================================================\n ShipDecks > Client > Results\n ========================================================================== */\n\n/* Modules */\nconst { toNode } = require('@bluekiri/alexandria/helpers/domHelpers');\nconst { of } = require('rxjs');\nconst { take } = require('rxjs/operators');\nconst { fromEvent } = require('rxjs');\n\nconst { addData } = require('@bluekiri/alexandria/helpers/dataHelpers');\nconst ImageTemplate = require('@bluekiri/alexandria-contrib-components/components/image-rxjs/template');\nconst ImageRxjs = require('@bluekiri/alexandria-contrib-components/components/image-rxjs/client/js');\nconst CardShipSectionList = require('../../../../card-ship-section-list/client/js');\nconst CardShipSectionListTemplate = require('../../../../card-ship-section-list/template');\n\nconst { getCardShipSectionList } = require('../service');\n\n/**\n * Instantiates a card\n * @param {*} card CardShipSectionList to draw\n * @param {*} instance\n */\nfunction createCardShipSectionList(results, instance) {\n const template = CardShipSectionListTemplate(results, instance.config.context);\n const node = toNode(template)[0];\n return node;\n}\n\n/**\n * Initializes deck image\n * @param {*} image\n * @param {*} instance\n */\nfunction createDeckImage(image, instance) {\n const template = ImageTemplate(\n addData({ ...image }, { type: instance.config.type.deckImage }),\n instance.config.context\n );\n const node = toNode(template)[0];\n return node;\n}\n\nfunction setCollapses(instance, results) {\n const inst = instance;\n\n inst.hooks.pagContainer.classList.remove(inst.config.css.hidden);\n\n inst.collapses[inst.config.type.collapseRooms].element.classList.add(inst.config.css.hidden);\n /* Check if there is roomsInfo */\n if (results.roomsInfo) {\n inst.collapses[inst.config.type.collapseRooms].element.classList.remove(inst.config.css.hidden);\n /* Create append roomsInfo */\n const rooms = results.roomsInfo.map(room => ({\n ...room,\n config: { literals: inst.config.literals }\n }));\n const nodeRooms = createCardShipSectionList(rooms, inst);\n inst.hooks.rooms.appendChild(nodeRooms);\n }\n\n inst.collapses[inst.config.type.collapsePublicAreas].element.classList.add(inst.config.css.hidden);\n /* Check if there is publicAreas */\n if (results.publicAreas) {\n inst.collapses[inst.config.type.collapsePublicAreas].element.classList.remove(inst.config.css.hidden);\n /* Create append publicAreas */\n const nodePublicAreas = createCardShipSectionList(results.publicAreas, inst);\n inst.hooks.publicAreas.appendChild(nodePublicAreas);\n }\n\n setLegend(inst);\n\n return inst;\n}\n\nfunction setLegend(instance) {\n const inst = instance;\n if (inst.legend) {\n inst.collapses[inst.config.type.collapseLegend].element.classList.remove(inst.config.css.hidden);\n }\n}\n\n/**\n * Requests remotely rooms cards and draws it\n * @param {*} cardId\n * @param {*} instance\n */\nfunction addCardShipSectionList(instance) {\n const inst = instance;\n const { codBarco } = inst.config;\n const { modelAjaxEndpoint, businessAreaName } = inst.config.context;\n const { selectedOptionValue } = inst.store.select('shipDecks').option;\n\n if (inst.selectedOptionValue === selectedOptionValue) return false;\n\n inst.selectedOptionValue = selectedOptionValue;\n inst.actions.isLoading(true);\n // Remote request will get and render the card\n return getCardShipSectionList(modelAjaxEndpoint, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n Name: 'ship-deck-model',\n BusinessAreaName: businessAreaName,\n Arguments: [\n {\n Name: 'productType',\n Value: 'Cruises'\n },\n {\n Name: 'codBarco',\n Value: `${codBarco}`\n },\n {\n Name: 'codCubierta',\n Value: `${selectedOptionValue}`\n },\n {\n Name: 'pageName',\n Value: `${inst.config.pageName}`\n }\n ]\n })\n })\n .pipe(take(1))\n .subscribe({\n next: results => {\n destroyCardShipSectionList(inst);\n\n if (results.error) {\n inst.actions.isLoading(false);\n inst.actions.resultsHidden(true);\n return false;\n }\n\n setCollapses(inst, results);\n\n /* Create append image deck */\n if (results.deck) {\n const nodeImage = createDeckImage(results.deck, inst);\n inst.hooks.deckImage.appendChild(nodeImage);\n inst.deckImage = ImageRxjs(`[data-type=\"${nodeImage.dataset.type}\"]`);\n }\n\n /* Init card-ship-section-list as rooms */\n inst.rooms = [...inst.element.querySelectorAll('[data-component=\"CardShipSectionList\"]')].map(\n (item, index) => {\n item.setAttribute('data-type', `card-ship-section-list-${index}`);\n return CardShipSectionList(\n `${inst.selector} [data-component=\"CardShipSectionList\"][data-type=\"${item.dataset.type}\"]`\n );\n }\n );\n\n /* Sets the click subscription for every deck in the cards */\n inst.subscriptions = {\n ...inst.subscriptions,\n clickDecks:\n inst.rooms.length && inst.rooms[0]\n ? inst.rooms[0].cards.map(card => {\n if (card) {\n return [...card.element.querySelectorAll('[data-deck]')].map(el =>\n fromEvent(el, 'click').subscribe(event => {\n // Getting the selected option's position from the ship areas component\n const { position } = [...inst.shipAreas.options].filter(\n i => i.dataset.id === event.target.dataset.id\n )[0].dataset;\n\n // Setting the new selected option\n inst.shipAreas.actions.selectedOption({\n selectedOptionValue: event.target.dataset.id,\n name: event.target.innerText,\n selectedOptionPosition: position\n });\n\n // Launching the new search\n inst.actions.getResults();\n })\n );\n }\n return '';\n })\n : false\n };\n setTimeout(() => inst.actions.setResultsHeight(), 500);\n inst.actions.isLoading(false);\n return true;\n },\n error: err => {\n inst.actions.isLoading(false);\n return of({ error: true, message: err.message });\n }\n });\n}\n\n/**\n * Destroy the cards list\n * @param {*} instance\n */\nfunction destroyCardShipSectionList(instance) {\n const inst = instance;\n if (inst.hooks.rooms.firstChild) inst.hooks.rooms.removeChild(inst.hooks.rooms.firstChild);\n if (inst.hooks.publicAreas.firstChild) inst.hooks.publicAreas.removeChild(inst.hooks.publicAreas.firstChild);\n if (inst.hooks.deckImage.firstChild) inst.hooks.deckImage.removeChild(inst.hooks.deckImage.firstChild);\n delete inst.rooms;\n delete inst.deckImage;\n}\n\n/* Exports */\nmodule.exports = {\n addCardShipSectionList,\n destroyCardShipSectionList\n};\n","/* ==========================================================================\n CollapseRxjs > Client > Store > Actions\n ========================================================================== */\n\n/* Types */\nconst DESTROY = 'COLLAPSE::DESTROY';\nconst DISPLAY = 'COLLAPSE::DISPLAY';\nconst HIDE = 'COLLAPSE::HIDE';\n\nconst TOGGLE_COLLAPSE = 'COLLAPSE::TOGGLE_COLLAPSE';\nconst SET_COLLAPSE = 'COLLAPSE::SET_COLLAPSE';\n\n/* Actions */\nconst destroy = () => ({ type: DESTROY });\nconst display = () => ({ type: DISPLAY });\nconst hide = () => ({ type: HIDE });\n\nconst toggleCollapse = () => ({ type: TOGGLE_COLLAPSE });\nconst setCollapse = payload => ({ type: SET_COLLAPSE, payload });\n\n/* Exports */\nmodule.exports = {\n types: {\n DESTROY,\n DISPLAY,\n HIDE,\n TOGGLE_COLLAPSE,\n SET_COLLAPSE\n },\n actions: {\n destroy,\n display,\n hide,\n toggleCollapse,\n setCollapse\n }\n};\n","/* ==========================================================================\n ShipAreasRxjs > Client\n ========================================================================== */\n\n/* Import modules */\nconst { elementExist } = require('@bluekiri/alexandria/helpers/domHelpers');\nconst Image = require('@bluekiri/alexandria-contrib-components/components/image-rxjs/client/js');\n\nconst { randomId } = require('@bluekiri/alexandria/helpers/dataHelpers');\n\nconst prototype = require('./prototype');\nconst config = require('./config');\n\n/**\n * ShipAreasRxjs component\n * @param {selector} String selector for the component in the client side.\n */\nmodule.exports = function ShipAreasRxjs(selector = '[data-component=ShipAreasRxjs]', configuration = {}) {\n if (elementExist(selector)) {\n const instance = Object.create(prototype);\n\n instance.element = document.querySelector(selector);\n\n /* ID for pairing */\n instance.id = randomId(randomId('ship-areas-rxjs'));\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 instance.image = Image(`${selector} [data-component=\"ImageRxjs\"]`, {\n ...configuration\n });\n\n instance.options = instance.element.querySelectorAll('[data-option]');\n\n /* Init */\n instance.init();\n\n return instance;\n }\n};\n"],"sourceRoot":""}