{"version":3,"sources":["webpack:///./node_modules/@bluekiri/alexandria/helpers/domHelpers.js","webpack:///./components/layout-logitravel-bargains/client/js/index.js","webpack:///./components/layout-logitravel-bargains/client/js/components.js"],"names":["module","exports","elementExist","element","document","querySelector","toNode","html","DOMParser","parseFromString","body","childNodes","require","_require2","resolveComponents","getTopButton","getHeader","selector","arguments","length","undefined","config","_objectSpread","dataset","result","JSON","parse","__webpack_public_path__","publicPath","components","filter","component","name","map","loader","concat","observerConfig","root","rootMargin","threshold","observer","IntersectionObserver","entries","forEach","entry","intersectionRatio","target","reduce","acc","then","default","unobserve","observe","COMPONENTS"],"mappings":";2EAQAA,EAAOC,QAAU,CACbC,aALiB,SAAAC,GAAO,QAAMC,SAASC,cAAcF,IAMrDG,OAJW,SAAAC,GAAI,OAAI,IAAIC,WAAYC,gBAAgBF,EAAM,aAAaG,KAAKC,c,qwBCD/EC,EAAQ,KAER,IAAQV,EAAiBU,EAAQ,KAAzBV,aAERW,EAAuDD,EAAQ,KAAvDE,EAAiBD,EAAjBC,kBAAmBC,EAAYF,EAAZE,aAAcC,EAASH,EAATG,WAEzC,WAA6F,IAA1DC,EAAQC,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,8CAC1C,GAAIhB,EAAae,GAAW,CACxB,IAAMd,EAAUC,SAASC,cAAcY,GAEjCI,EAAMC,EAAA,GACJ,WACA,IAAKnB,EAAQoB,QAAQF,OAAQ,MAAO,GAEpC,IAAMG,EAASC,KAAKC,MAAMvB,EAAQoB,QAAQF,QAE1C,OADAlB,EAAQoB,QAAQF,OAAS,GAClBG,EALP,IAaRG,IAA0BN,EAAOO,WAGjC,IAAMC,EAAaf,IACdgB,QAAO,SAAAC,GAAS,MAAuB,WAAnBA,EAAUC,QAC9BC,KAAI,SAAAF,GAAS,MAAK,CACfG,OAAQH,EAAUG,OAClB/B,QAASC,SAASC,cAAc,oBAAD8B,OAAqBJ,EAAUC,KAAI,WAErEF,QAAO,SAAAC,GAAS,OAAIA,EAAU5B,WAE7BiC,EAAiB,CACnBC,KAAM,KACNC,WAAY,MACZC,UAAW,KAOTC,EAAW,IAAIC,sBAAqB,SAAAC,GACtCA,EAAQC,SAAQ,SAAAC,GACRA,EAAMC,kBAAoB,IAW1BX,EAVmBL,EACdC,QAAO,SAAAC,GAAS,OAAIA,EAAU5B,UAAYyC,EAAME,UAChDC,QAAO,SAAAC,GAAG,OAAIA,KAFXd,UAUCe,MAAK,SAAAjD,GACNA,EAAOkD,SAASlD,EAAOkD,UAC3BV,EAASW,UAAUP,EAAME,gBAItCV,GAKHP,EAAWc,SAAQ,SAAAZ,GACfS,EAASY,QAAQrB,EAAU5B,YAI/BY,IAAekC,MAAK,SAAAjD,GAAM,OAAIA,EAAOkD,aAGrClC,IAAYiC,MAAK,SAAAjD,GAAM,OAAIA,EAAOkD,YAvE1C,I,sDCJA,IA8GMG,EAAa,CACf,CACInB,OAtGU,WACd,OAAO,yDAsGHF,KAAM,UAEV,CACIE,OA5Ec,WAClB,OAAO,0DA4EHF,KAAM,cAEV,CACIE,OAtEsB,WAC1B,OAAO,yDAsEHF,KAAM,sBAEV,CACIE,OA9FQ,WACZ,OAAO,yDA8FHF,KAAM,YAEV,CACIE,OA1DgB,WACpB,OAAO,yDA0DHF,KAAM,gBAEV,CACIE,OAxE2B,WAC/B,OAAO,yDAwEHF,KAAM,2BAEV,CACIE,OAxDgB,WACpB,OAAO,iEAwDHF,KAAM,gBAEV,CACIE,OAlDoB,WACxB,OAAO,0DAkDHF,KAAM,oBAEV,CACIE,OA5CY,WAChB,OAAO,iEA4CHF,KAAM,kBAYdhC,EAAOC,QAAU,CACbe,UA9Jc,WACd,OAAO,0DA8JPD,aA3IiB,WACjB,OAAO,oCA2IPD,kBARJ,WACI,OAAOuC,M","file":"index.bundle.js","sourcesContent":["/* ==========================================================================\n Dom helpers\n ========================================================================== */\n\nconst elementExist = element => !!document.querySelector(element);\n\nconst toNode = html => new DOMParser().parseFromString(html, 'text/html').body.childNodes;\n\nmodule.exports = {\n elementExist,\n toNode\n};\n","/* ==========================================================================\n LayoutLogitravelBargains > Client\n ========================================================================== */\n\n/* Modules */\nrequire('intersection-observer');\n\nconst { elementExist } = require('@bluekiri/alexandria/helpers/domHelpers');\n\nconst { resolveComponents, getTopButton, getHeader } = require('./components');\n\n(function LayoutLogitravelBargains(selector = '[data-component=\"LayoutLogitravelBargains\"]') {\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 __webpack_public_path__ = config.publicPath;\n /* eslint-enable */\n\n const components = resolveComponents()\n .filter(component => component.name !== 'Header')\n .map(component => ({\n loader: component.loader,\n element: document.querySelector(`[data-component=\"${component.name}\"]`)\n }))\n .filter(component => component.element);\n\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 if (module.default) module.default();\n observer.unobserve(entry.target);\n });\n }\n });\n }, observerConfig);\n\n /**\n * Init observers on components\n */\n components.forEach(component => {\n observer.observe(component.element);\n });\n\n /* TopButton */\n getTopButton().then(module => module.default());\n\n /* Header Logitravel INIT */\n getHeader().then(module => module.default);\n }\n})();\n","/* ==========================================================================\n MLayoutLogitravelCampaign > Client > Components\n ========================================================================== */\n\n/**\n * Header\n */\nconst getHeader = () => {\n return import(\n /* webpackChunkName: \"header\" */\n '@bluekiri/alexandria-logitravel/components/header/client/js'\n );\n};\n\n/**\n * Footer\n */\nconst getFooter = () => {\n return import(\n /* webpackChunkName: \"footer\" */\n '@bluekiri/alexandria-logitravel/components/footer/client/js'\n );\n};\n\n/**\n * TopButton\n */\nconst getTopButton = () => {\n return import(\n /* webpackChunkName: \"top-button\" */\n '@bluekiri/alexandria-contrib-components/components/top-button/client/js'\n );\n};\n\n/**\n * Blog\n */\nconst getBlog = () => {\n return import(\n /* webpackChunkName: \"blog\" */\n '@logitravel/alex-comp-mar/components/blog-feed/client/js'\n );\n};\n\n/**\n * Trustpilot\n */\nconst getTrustpilot = () => {\n return import(\n /* webpackChunkName: \"trustpilot\" */\n '@bluekiri/alexandria-contrib-components/components/trustpilot/client/js'\n );\n};\n\n/**\n * Destinations\n */\nconst getCarouselCardSimple = () => {\n return import(\n /* webpackChunkName: \"carousel-card-simple\" */\n '@bluekiri/alexandria-logitravel/components/carousel-card-simple/client/js'\n );\n};\n\n/**\n * Header banner blackfriday\n */\nconst getHeaderBannerBlackfriday = () => {\n return import(\n /* webpackChunkName: \"header-banner-blackfriday\" */\n '@logitravel/alex-comp-mar/components/header-banner-blackfriday/client/js'\n );\n};\n\n/**\n * Header banner\n */\nconst getHeaderBanner = () => {\n return import(\n /* webpackChunkName: \"header-banner\" */\n '@logitravel/alex-comp-mar/components/header-banner/client/js'\n );\n};\n\n/**\n * Searcher\n */\nconst getTabsGridList = () => {\n return import(\n /* webpackChunkName: \"tabs-grid-list\" */\n '@logitravel/alex-comp-mar/components/tabs-grid-list/client/js/index'\n );\n};\n\n/**\n * Text\n */\nconst getTextHtmlCollapse = () => {\n return import(\n /* webpackChunkName: \"text-html-collapse\" */\n '@bluekiri/alexandria-contrib-components/components/text-html-collapse/client/js'\n );\n};\n\n/**\n * Searcher\n */\nconst getSearcher = () => {\n return import(\n /* webpackChunkName: \"multisearcher\" */\n '@logitravel/alex-comp-mar/components/multisearcher/client/js'\n );\n};\n\n/**\n * Components\n */\nconst COMPONENTS = [\n {\n loader: getFooter,\n name: 'Footer'\n },\n {\n loader: getTrustpilot,\n name: 'Trustpilot'\n },\n {\n loader: getCarouselCardSimple,\n name: 'CarouselCardSimple'\n },\n {\n loader: getBlog,\n name: 'BlogFeed'\n },\n {\n loader: getHeaderBanner,\n name: 'HeaderBanner'\n },\n {\n loader: getHeaderBannerBlackfriday,\n name: 'HeaderBannerBlackfriday'\n },\n {\n loader: getTabsGridList,\n name: 'TabsGridList'\n },\n {\n loader: getTextHtmlCollapse,\n name: 'TextHtmlCollapse'\n },\n {\n loader: getSearcher,\n name: 'Multisearcher'\n }\n];\n\n/**\n * Resolver components\n */\nfunction resolveComponents() {\n return COMPONENTS;\n}\n\n/* Export */\nmodule.exports = {\n getHeader,\n getTopButton,\n resolveComponents\n};\n"],"sourceRoot":""}