{"version":3,"sources":["webpack:///./node_modules/@logitravel/alex-comp-cru/components/main-zones-cru/client/js/index.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/main-zones-cru/client/js/components.js"],"names":["require","elementExist","_require2","resolveComponents","getClickToCall","getCardGridList","getCardGridListObserver","observerConfig","element","cardGridList","_toConsumableArray","querySelectorAll","map","item","loader","cardGridListObserver","IntersectionObserver","entries","forEach","entry","intersectionRatio","filter","component","target","reduce","acc","then","module","type","dataset","default","concat","unobserve","observe","exports","selector","arguments","length","undefined","document","querySelector","config","_objectSpread","result","JSON","parse","publicPath","__webpack_public_path__","components","name","root","rootMargin","threshold","observer","COMPONENTS"],"mappings":";6wBAKAA,EAAQ,QAER,IAAQC,EAAiBD,EAAQ,QAAzBC,aAERC,EAA+DF,EAAQ,QAA/DG,EAAiBD,EAAjBC,kBAAmBC,EAAcF,EAAdE,eAAgBC,EAAeH,EAAfG,gBAgF3C,SAASC,EAAwBC,EAAgBC,GAC7C,IAAMC,EAAeC,EAAIF,EAAQG,iBAAiB,oCAAoCC,KAAI,SAAAC,GAAI,MAAK,CAC/FC,OAAQT,EACRG,QAASK,MAQPE,EAAuB,IAAIC,sBAAqB,SAAAC,GAClDA,EAAQC,SAAQ,SAAAC,GACRA,EAAMC,kBAAoB,IAW1BN,EAVmBL,EACdY,QAAO,SAAAC,GAAS,OAAIA,EAAUd,UAAYW,EAAMI,UAChDC,QAAO,SAAAC,GAAG,OAAIA,KAFXX,UAUCY,MAAK,SAAAC,GACV,IAAQC,EAAST,EAAMI,OAAOM,QAAtBD,KACRD,EAAOG,QAAQ,8CAADC,OAA+CH,EAAI,OACjEb,EAAqBiB,UAAUb,EAAMI,gBAIlDhB,GAEHE,EAAaS,SAAQ,SAAAI,GACjBP,EAAqBkB,QAAQX,EAAUd,YA5G/CmB,EAAOO,QAAU,WAAkE,IAA5CC,EAAQC,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,gCAC9C,GAAInC,EAAakC,GAAW,CACxB,IAAM3B,EAAU+B,SAASC,cAAcL,GAEjCM,EAAMC,EAAA,GACJ,WACA,IAAKlC,EAAQqB,QAAQY,OAAQ,MAAO,GAEpC,IAAME,EAASC,KAAKC,MAAMrC,EAAQqB,QAAQY,QAE1C,OADAjC,EAAQqB,QAAQY,OAAS,GAClBE,EALP,IAaJF,EAAOK,aAAYC,IAA0BN,EAAOK,YAGxD,IAAME,EAAa7C,IACdkB,QAAO,SAAAC,GAAS,MAAuB,iBAAnBA,EAAU2B,QAC9BrC,KAAI,SAAAU,GAAS,MAAK,CACfR,OAAQQ,EAAUR,OAClBN,QAAS+B,SAASC,cAAc,oBAADT,OAAqBT,EAAU2B,KAAI,WAErE5B,QAAO,SAAAC,GAAS,OAAIA,EAAUd,WAG7BD,EAAiB,CACnB2C,KAAM,KACNC,WAAY,MACZC,UAAW,KAOTC,EAAW,IAAIrC,sBAAqB,SAAAC,GACtCA,EAAQC,SAAQ,SAAAC,GACRA,EAAMC,kBAAoB,IAW1BN,EAVmBkC,EACd3B,QAAO,SAAAC,GAAS,OAAIA,EAAUd,UAAYW,EAAMI,UAChDC,QAAO,SAAAC,GAAG,OAAIA,KAFXX,UAUCY,MAAK,SAAAC,GACVA,EAAOG,UAEPuB,EAASrB,UAAUb,EAAMI,gBAItChB,GAEHyC,EAAW9B,SAAQ,SAAAI,GACf+B,EAASpB,QAAQX,EAAUd,YAI/BF,EAAwBC,EAAgBC,GAGxCJ,IAAiBsB,MAAK,SAAAC,GAAM,OAAIA,EAAOG,gB,uEClF/C,IA0FMwB,EAAa,CACf,CACIxC,OAxEoB,WACxB,OAAO,6DAwEHmC,KAAM,oBAEV,CACInC,OAtFgB,WACpB,OAAO,4DAsFHmC,KAAM,gBAEV,CACInC,OA5DmB,WACvB,OAAO,6DA4DHmC,KAAM,mBAEV,CACInC,OA1Ea,WACjB,OAAO,oEA0EHmC,KAAM,aAEV,CACInC,OAtCgB,WACpB,OAAO,6DAsCHmC,KAAM,oBAEV,CACInC,OAhCmB,WACvB,OAAO,oEAgCHmC,KAAM,mBAEV,CACInC,OAlEmB,WACvB,OAAO,6DAkEHmC,KAAM,oBAWdtB,EAAOO,QAAU,CACb/B,kBALJ,WACI,OAAOmD,GAKPlD,eAlImB,WACnB,OAAO,4DAkIPC,gBAvEoB,WACpB,OAAO","file":"main-zones-cru.21c2d49262d5601574fe.bundle.js","sourcesContent":["/* ==========================================================================\n MainZonesCru > Client\n ========================================================================== */\n\n/* Import modules */\nrequire('intersection-observer');\n\nconst { elementExist } = require('@bluekiri/alexandria/helpers/domHelpers');\n\nconst { resolveComponents, getClickToCall, getCardGridList } = require('./components');\n\n/**\n * MainZonesCru component\n * @param {selector} String selector for the component in the client side.\n */\nmodule.exports = function MainZonesCru(selector = '[data-component=MainZonesCru]') {\n if (elementExist(selector)) {\n const element = document.querySelector(selector);\n\n const config = {\n ...(function getConfig() {\n if (!element.dataset.config) return '';\n\n const result = JSON.parse(element.dataset.config);\n element.dataset.config = '';\n return result;\n })()\n };\n\n /**\n * Setting public path to the webpack exposed variable\n */\n /* eslint-disable */\n if (config.publicPath) __webpack_public_path__ = config.publicPath;\n /* eslint-enable */\n\n const components = resolveComponents()\n .filter(component => component.name !== 'CardGridList')\n .map(component => ({\n loader: component.loader,\n element: document.querySelector(`[data-component=\"${component.name}\"]`)\n }))\n .filter(component => component.element);\n\n /* Observer Config */\n const observerConfig = {\n root: null, // avoiding 'root' or setting it to 'null' sets it to default value: viewport\n rootMargin: '0px',\n threshold: 0.15\n };\n\n /**\n * Observer to lazy load modules based on\n * currently viewed components in the viewport\n */\n const observer = new IntersectionObserver(entries => {\n entries.forEach(entry => {\n if (entry.intersectionRatio > 0) {\n const { loader } = components\n .filter(component => component.element === entry.target)\n .reduce(acc => acc);\n\n /**\n * Init component with its loader and then\n * unobserve from this entry so we dont\n * call the init of the component more\n * than once\n */\n loader().then(module => {\n module.default();\n\n observer.unobserve(entry.target);\n });\n }\n });\n }, observerConfig);\n\n components.forEach(component => {\n observer.observe(component.element);\n });\n\n /* CardGridList init */\n getCardGridListObserver(observerConfig, element);\n\n /* ClickToCall */\n getClickToCall().then(module => module.default());\n }\n};\n\nfunction getCardGridListObserver(observerConfig, element) {\n const cardGridList = [...element.querySelectorAll('[data-component=\"CardGridList\"]')].map(item => ({\n loader: getCardGridList,\n element: item\n }));\n\n /**\n * Since we have multiple of the same component, in this\n * layout the CardGridList component will have its own\n * observer part to handle its dynamic init\n */\n const cardGridListObserver = new IntersectionObserver(entries => {\n entries.forEach(entry => {\n if (entry.intersectionRatio > 0) {\n const { loader } = cardGridList\n .filter(component => component.element === entry.target)\n .reduce(acc => acc);\n\n /**\n * Init component with its loader and then\n * unobserve from this entry so we dont\n * call the init of the component more\n * than once\n */\n loader().then(module => {\n const { type } = entry.target.dataset;\n module.default(`[data-component=\"CardGridList\"][data-type=\"${type}\"]`);\n cardGridListObserver.unobserve(entry.target);\n });\n }\n });\n }, observerConfig);\n\n cardGridList.forEach(component => {\n cardGridListObserver.observe(component.element);\n });\n}\n","/**\n * ClickToCall\n */\nconst getClickToCall = () => {\n return import(\n /* webpackChunkName: \"click-to-call\" */\n '@bluekiri/alexandria-contrib-components/components/click-to-call/client/js'\n );\n};\n\n/**\n * HeaderBanner\n */\nconst getHeaderBanner = () => {\n return import(\n /* webpackChunkName: \"header-banner\" */\n '../../../header-banner/client/js'\n );\n};\n\n/**\n * BreadcrumbsIdCru\n */\nconst getBreadcrumbsIdCru = () => {\n return import(\n /* webpackChunkName: \"breadcrumbs-id-cru\" */\n '../../../breadcrumbs-id-cru/client/js'\n );\n};\n\n/**\n * TextMedia\n */\nconst getTextMedia = () => {\n return import(\n /* webpackChunkName: \"text-media\" */\n '../../../text-media/client/js'\n );\n};\n\n/**\n * NewsletterAgent\n */\nconst getNewsletterAgent = () => {\n return import(\n /* webpackChunkName: \"newsletter-agent\" */\n '../../../newsletter-agent/client/js'\n );\n};\n\n/**\n * MasonryCarousel\n */\nconst getMasonryCarousel = () => {\n return import(\n /* webpackChunkName: \"masonry-carousel\" */\n '../../../masonry-carousel/client/js'\n );\n};\n\n/**\n * CardGridList\n */\nconst getCardGridList = () => {\n return import(\n /* webpackChunkName: \"card-grid-list\" */\n '../../../card-grid-list/client/js'\n );\n};\n\n/**\n * ShippingLine\n */\nconst getShippingLine = () => {\n return import(\n /* webpackChunkName: \"shipping-line-rxjs\" */\n '../../../shipping-line-rxjs/client/js'\n );\n};\n\n/**\n * SearcherCruises\n */\nconst getSearcherCruises = () => {\n return import(\n /* webpackChunkName: \"searcher-section\" */\n '../../../searcher-section/client/js'\n );\n};\n\n/**\n * Components\n */\nconst COMPONENTS = [\n {\n loader: getBreadcrumbsIdCru,\n name: 'BreadcrumbsIdCru'\n },\n {\n loader: getHeaderBanner,\n name: 'HeaderBanner'\n },\n {\n loader: getNewsletterAgent,\n name: 'NewsletterAgent'\n },\n {\n loader: getTextMedia,\n name: 'TextMedia'\n },\n {\n loader: getShippingLine,\n name: 'ShippingLineRxjs'\n },\n {\n loader: getSearcherCruises,\n name: 'SearcherSection'\n },\n {\n loader: getMasonryCarousel,\n name: 'MasonryCarousel'\n }\n];\n\n/**\n * Resolver components\n */\nfunction resolveComponents() {\n return COMPONENTS;\n}\n\nmodule.exports = {\n resolveComponents,\n getClickToCall,\n getCardGridList\n};\n"],"sourceRoot":""}