{"version":3,"sources":["webpack:///./node_modules/@logitravel/alex-comp-cru/components/main-ship-cru/client/js/components.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/main-ship-cru/client/js/index.js"],"names":["COMPONENTS","loader","name","module","exports","resolveComponents","getClickToCall","getFloatingIndex","require","elementExist","_require2","selector","arguments","length","undefined","element","document","querySelector","config","_objectSpread","dataset","result","JSON","parse","publicPath","__webpack_public_path__","components","map","component","concat","filter","observerConfig","root","rootMargin","threshold","observer","IntersectionObserver","entries","forEach","entry","intersectionRatio","target","reduce","acc","then","default","unobserve","observe"],"mappings":";iIAGA,IA8LMA,EAAa,CACf,CACIC,OA5KoB,WACxB,OAAO,4DA4KHC,KAAM,oBAEV,CACID,OA1LgB,WACpB,OAAO,6DA0LHC,KAAM,gBAEV,CACID,OA1Ka,WACjB,OAAO,6DA0KHC,KAAM,aAEV,CACID,OApKkB,WACtB,OAAO,4DAoKHC,KAAM,kBAEV,CACID,OA9JmB,WACvB,OAAO,6DA8JHC,KAAM,mBAEV,CACID,OAxJgB,WACpB,OAAO,6DAwJHC,KAAM,gBAEV,CACID,OAlJa,WACjB,OAAO,6DAkJHC,KAAM,aAEV,CACID,OAlIyB,WAC7B,OAAO,6DAkIHC,KAAM,yBAEV,CACID,OA5HmB,WACvB,OAAO,6DA4HHC,KAAM,mBAEV,CACID,OAtHkB,WACtB,OAAO,4DAsHHC,KAAM,kBAEV,CACID,OAxJgB,WACpB,OAAO,sCAwJHC,KAAM,gBAEV,CACID,OAtFmB,WACvB,OAAO,oEAsFHC,KAAM,mBAEV,CACID,OAxH2B,WAC/B,OAAO,6DAwHHC,KAAM,2BAEV,CACID,OAlHwB,WAC5B,OAAO,6DAkHHC,KAAM,wBAEV,CACID,OAxFc,WAClB,OAAO,6DAwFHC,KAAM,cAEV,CACID,OAlFW,WACf,OAAO,4DAkFHC,KAAM,WAEV,CACID,OA5EY,WAChB,OAAO,4DA4EHC,KAAM,aAWdC,EAAOC,QAAU,CACbC,kBALJ,WACI,OAAOL,GAKPM,eA9QmB,WACnB,OAAO,4DA8QPC,iBAnIqB,WACrB,OAAO,+D,0sBC3IXC,EAAQ,QAER,IAAQC,EAAiBD,EAAQ,QAAzBC,aAERC,EAAgEF,EAAQ,QAAhEH,EAAiBK,EAAjBL,kBAAmBC,EAAcI,EAAdJ,eAAgBC,EAAgBG,EAAhBH,iBAM3CJ,EAAOC,QAAU,WAAgE,IAA3CO,EAAQC,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,+BAC7C,GAAIH,EAAaE,GAAW,CACxB,IAAMI,EAAUC,SAASC,cAAcN,GAEjCO,EAAMC,EAAA,GACJ,WACA,IAAKJ,EAAQK,QAAQF,OAAQ,MAAO,GAEpC,IAAMG,EAASC,KAAKC,MAAMR,EAAQK,QAAQF,QAE1C,OADAH,EAAQK,QAAQF,OAAS,GAClBG,EALP,IAaJH,EAAOM,aAAYC,IAA0BP,EAAOM,YAGxD,IAAME,EAAarB,IACdsB,KAAI,SAAAC,GAAS,MAAK,CACf3B,OAAQ2B,EAAU3B,OAClBc,QAASC,SAASC,cAAc,oBAADY,OAAqBD,EAAU1B,KAAI,WAErE4B,QAAO,SAAAF,GAAS,OAAIA,EAAUb,WAG7BgB,EAAiB,CACnBC,KAAM,KACNC,WAAY,MACZC,UAAW,KAOTC,EAAW,IAAIC,sBAAqB,SAAAC,GACtCA,EAAQC,SAAQ,SAAAC,GACRA,EAAMC,kBAAoB,IAW1BvC,EAVmByB,EACdI,QAAO,SAAAF,GAAS,OAAIA,EAAUb,UAAYwB,EAAME,UAChDC,QAAO,SAAAC,GAAG,OAAIA,KAFX1C,UAUC2C,MAAK,SAAAzC,GACVA,EAAO0C,UAEPV,EAASW,UAAUP,EAAME,gBAItCV,GAEHL,EAAWY,SAAQ,SAAAV,GACfO,EAASY,QAAQnB,EAAUb,YAI/BT,IAAiBsC,MAAK,SAAAzC,GAAM,OAAIA,EAAO0C,aAGvCtC,IAAmBqC,MAAK,SAAAzC,GAAM,OAAIA,EAAO0C","file":"main-ship-cru.7dd38e17af12340887fd.bundle.js","sourcesContent":["/**\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 * InfoMedia\n */\nconst getInfoMedia = () => {\n return import(\n /* webpackChunkName: \"info-media\" */\n '../../../info-media/client/js'\n );\n};\n\n/**\n * ExpertsArticle\n */\nconst getExpertsArticle = () => {\n return import(\n /* webpackChunkName: \"experts-article\" */\n '../../../experts-article/client/js'\n );\n};\n\n/**\n * ShipDetailsTabs\n */\nconst getShipDetailsTabs = () => {\n return import(\n /* webpackChunkName: \"ship-details-tabs\" */\n '../../../ship-details-tabs/client/js'\n );\n};\n\n/**\n * TabsShipInfo\n */\nconst getTabsShipInfo = () => {\n return import(\n /* webpackChunkName: \"tabs-ship-info\" */\n '../../../tabs-ship-info/client/js'\n );\n};\n\n/**\n * ShipDecks\n */\nconst getShipDecks = () => {\n return import(\n /* webpackChunkName: \"ship-decks\" */\n '../../../ship-decks/client/js'\n );\n};\n\n/**\n * VerticalTabs\n */\nconst getVerticalTabs = () => {\n return import(\n /* webpackChunkName: \"vertical-tabs\" */\n '../../../vertical-tabs/client/js'\n );\n};\n\n/**\n * CardShipSectionFilter\n */\nconst getCardShipSectionFilter = () => {\n return import(\n /* webpackChunkName: \"card-ship-section-filter\" */\n '../../../card-ship-section-filter/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 * CarouselBanner\n */\nconst getCarouselBanner = () => {\n return import(\n /* webpackChunkName: \"carousel-banner\" */\n '../../../carousel-banner/client/js'\n );\n};\n\n/**\n * ShipCardGalleryCarousel\n */\nconst getShipCardGalleryCarousel = () => {\n return import(\n /* webpackChunkName: \"ship-card-gallery-carousel\" */\n '../../../ship-card-gallery-carousel/client/js'\n );\n};\n\n/**\n * GalleryVideoCarousel\n */\nconst getGalleryVideoCarousel = () => {\n return import(\n /* webpackChunkName: \"gallery-video-carousel\" */\n '../../../gallery-video-carousel/client/js'\n );\n};\n\n/**\n * FloatingIndex\n */\nconst getFloatingIndex = () => {\n return import(\n /* webpackChunkName: \"floating-index\" */\n '../../../floating-index/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 * SingleBlog\n */\nconst getSingleBlog = () => {\n return import(\n /* webpackChunkName: \"single-blog\" */\n '../../../single-blog/client/js'\n );\n};\n\n/**\n * BlogTwo\n */\nconst getBlogTwo = () => {\n return import(\n /* webpackChunkName: \"blog-two\" */\n '../../../blog-two/client/js'\n );\n};\n\n/**\n * BlogFeed\n */\nconst getBlogFeed = () => {\n return import(\n /* webpackChunkName: \"blog-feed\" */\n '../../../blog-feed/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: getInfoMedia,\n name: 'InfoMedia'\n },\n {\n loader: getExpertsArticle,\n name: 'ExpertsArticle'\n },\n {\n loader: getShipDetailsTabs,\n name: 'ShipDetailsTabs'\n },\n {\n loader: getTabsShipInfo,\n name: 'TabsShipInfo'\n },\n {\n loader: getShipDecks,\n name: 'ShipDecks'\n },\n {\n loader: getCardShipSectionFilter,\n name: 'CardShipSectionFilter'\n },\n {\n loader: getNewsletterAgent,\n name: 'NewsletterAgent'\n },\n {\n loader: getCarouselBanner,\n name: 'CarouselBanner'\n },\n {\n loader: getVerticalTabs,\n name: 'VerticalTabs'\n },\n {\n loader: getSearcherCruises,\n name: 'SearcherSection'\n },\n {\n loader: getShipCardGalleryCarousel,\n name: 'ShipCardGalleryCarousel'\n },\n {\n loader: getGalleryVideoCarousel,\n name: 'GalleryVideoCarousel'\n },\n {\n loader: getSingleBlog,\n name: 'SingleBlog'\n },\n {\n loader: getBlogTwo,\n name: 'BlogTwo'\n },\n {\n loader: getBlogFeed,\n name: 'BlogFeed'\n }\n];\n\n/**\n * Resolver components\n */\nfunction resolveComponents() {\n return COMPONENTS;\n}\n\nmodule.exports = {\n resolveComponents,\n getClickToCall,\n getFloatingIndex\n};\n","/* ==========================================================================\n MainShipCru > Client\n ========================================================================== */\n\n/* Import modules */\nrequire('intersection-observer');\n\nconst { elementExist } = require('@bluekiri/alexandria/helpers/domHelpers');\n\nconst { resolveComponents, getClickToCall, getFloatingIndex } = require('./components');\n\n/**\n * MainShipCru component\n * @param {selector} String selector for the component in the client side.\n */\nmodule.exports = function MainShipCru(selector = '[data-component=MainShipCru]') {\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 .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 /* ClickToCall */\n getClickToCall().then(module => module.default());\n\n /* FloatingIndex */\n getFloatingIndex().then(module => module.default());\n }\n};\n"],"sourceRoot":""}