{"version":3,"sources":["webpack:///./node_modules/@logitravel/alex-comp-cru/components/main-to-cru/client/js/index.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/main-to-cru/client/js/components.js"],"names":["require","elementExist","_require2","resolveComponents","getClickToCall","module","exports","selector","arguments","length","undefined","element","document","querySelector","config","_objectSpread","dataset","result","JSON","parse","publicPath","__webpack_public_path__","components","map","component","loader","concat","name","filter","observerConfig","root","rootMargin","threshold","observer","IntersectionObserver","entries","forEach","entry","intersectionRatio","target","reduce","acc","then","default","unobserve","observe","COMPONENTS"],"mappings":";owBAKAA,EAAQ,QAER,IAAQC,EAAiBD,EAAQ,QAAzBC,aAERC,EAA8CF,EAAQ,QAA9CG,EAAiBD,EAAjBC,kBAAmBC,EAAcF,EAAdE,eAM3BC,EAAOC,QAAU,WAA4D,IAAzCC,EAAQC,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,6BAC3C,GAAIP,EAAaM,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,EAAanB,IACdoB,KAAI,SAAAC,GAAS,MAAK,CACfC,OAAQD,EAAUC,OAClBd,QAASC,SAASC,cAAc,oBAADa,OAAqBF,EAAUG,KAAI,WAErEC,QAAO,SAAAJ,GAAS,OAAIA,EAAUb,WAG7BkB,EAAiB,CACnBC,KAAM,KACNC,WAAY,MACZC,UAAW,KAOTC,EAAW,IAAIC,sBAAqB,SAAAC,GACtCA,EAAQC,SAAQ,SAAAC,GACRA,EAAMC,kBAAoB,IAW1Bb,EAVmBH,EACdM,QAAO,SAAAJ,GAAS,OAAIA,EAAUb,UAAY0B,EAAME,UAChDC,QAAO,SAAAC,GAAG,OAAIA,KAFXhB,UAUCiB,MAAK,SAAArC,GACVA,EAAOsC,UAEPV,EAASW,UAAUP,EAAME,gBAItCV,GAEHP,EAAWc,SAAQ,SAAAZ,GACfS,EAASY,QAAQrB,EAAUb,YAI/BP,IAAiBsC,MAAK,SAAArC,GAAM,OAAIA,EAAOsC,gB,uEC9E/C,IA0FMG,EAAa,CACf,CACIrB,OAxEoB,WACxB,OAAO,6DAwEHE,KAAM,oBAEV,CACIF,OAtFgB,WACpB,OAAO,4DAsFHE,KAAM,gBAEV,CACIF,OAtEkB,WACtB,OAAO,oEAsEHE,KAAM,kBAEV,CACIF,OAlCmB,WACvB,OAAO,oEAkCHE,KAAM,mBAEV,CACIF,OApEgB,WACpB,OAAO,6DAoEHE,KAAM,gBAEV,CACIF,OA9DkB,WACtB,OAAO,4DA8DHE,KAAM,kBAEV,CACIF,OAxDmB,WACvB,OAAO,6DAwDHE,KAAM,mBAEV,CACIF,OAxCuB,WAC3B,OAAO,4DAwCHE,KAAM,wBAWdtB,EAAOC,QAAU,CACbH,kBALJ,WACI,OAAO2C,GAKP1C,eAtImB,WACnB,OAAO","file":"main-to-cru.d3852077391bd3fb783c.bundle.js","sourcesContent":["/* ==========================================================================\n   MainToCru > Client\n   ========================================================================== */\n\n/* Import modules */\nrequire('intersection-observer');\n\nconst { elementExist } = require('@bluekiri/alexandria/helpers/domHelpers');\n\nconst { resolveComponents, getClickToCall } = require('./components');\n\n/**\n * MainToCru component\n * @param {selector} String selector for the component in the client side.\n */\nmodule.exports = function MainToCru(selector = '[data-component=MainToCru]') {\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};\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 * CarouselBanner\n */\nconst getCarouselBanner = () => {\n    return import(\n        /* webpackChunkName: \"carousel-banner\" */\n        '../../../carousel-banner/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 * ExpertsArticle\n */\nconst getExpertsArticle = () => {\n    return import(\n        /* webpackChunkName: \"experts-article\" */\n        '../../../experts-article/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 * SearcherCruises\n */\nconst getSearcherCruises = () => {\n    return import(\n        /* webpackChunkName: \"searcher-section\" */\n        '../../../searcher-section/client/js'\n    );\n};\n\n/**\n * InformationCarousel\n */\nconst getInformationCarousel = () => {\n    return import(\n        /* webpackChunkName: \"information-carousel\" */\n        '../../../information-carousel/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: getCarouselBanner,\n        name: 'CarouselBanner'\n    },\n    {\n        loader: getSearcherCruises,\n        name: 'SearcherSection'\n    },\n    {\n        loader: getVerticalTabs,\n        name: 'VerticalTabs'\n    },\n    {\n        loader: getExpertsArticle,\n        name: 'ExpertsArticle'\n    },\n    {\n        loader: getNewsletterAgent,\n        name: 'NewsletterAgent'\n    },\n    {\n        loader: getInformationCarousel,\n        name: 'InformationCarousel'\n    }\n];\n\n/**\n * Resolver components\n */\nfunction resolveComponents() {\n    return COMPONENTS;\n}\n\nmodule.exports = {\n    resolveComponents,\n    getClickToCall\n};\n"],"sourceRoot":""}