{"version":3,"sources":["webpack:///../jarvis/app/assets/javascripts/site/controllers/Postable/utils/applyMeta.ts","webpack:///../jarvis/app/assets/javascripts/site/controllers/Postable/utils/initScrollStats.ts","webpack:///../jarvis/app/assets/javascripts/site/controllers/Postable/utils/resetMediaSlots.ts","webpack:///../jarvis/app/assets/javascripts/site/controllers/Postable/services/PaginationPointService.ts","webpack:///../jarvis/app/assets/javascripts/core/utils/loaderSpinner.ts","webpack:///../jarvis/app/assets/javascripts/core/services/GTM/ContainerScrollHandler.js","webpack:///../jarvis/app/assets/javascripts/core/services/GTM/handlers/postScroll.ts"],"names":["applyMeta","_ref","title","url","document","documentDispatch","RELOAD_ADMIN_PANEL","history","pushState","_type","id","initScrollStats","el","_a","_b","targetEl","nextElementSibling","classList","contains","querySelector","ContainerScrollHandler","selector","points","POINTS","cond","mapper","SELECTOR","map","prefix","concat","join","PaginationPointService","props","_this","_classCallCheck","this","watcherIds","nextActive","loadPromise","nextMeta","handleChangePrev","meta","handlePreloadNext","_asyncToGenerator","_regeneratorRuntime","mark","_callee","_yield$_this$loadProm","content","wrap","_context","prev","next","addLoader","HttpClient","get","loadUrl","sent","data","insertAdjacentHTML","stop","enableScroll","removeLoader","ScrollLock","disable","handleNextArticleReady","removeEventListener","ARTICLE_READY","handleChangeNext","_callee2","_yield$_this$loadProm2","_yield$_this$loadProm3","dataLayer","_context2","abrupt","enable","querySelectorAll","forEach","node","addEventListener","connect","parentElement","window","setTimeout","t0","WayPointService","watch","preloadWatcher","changeWatcher","key","value","unwatch","offsetTop","getBoundingClientRect","top","innerHeight","_this2","getPoint","elPageYOffset","onDown","onUp","once","_this3","size","arguments","length","undefined","parentNode","requestAnimationFrame","loader","createElement","add","style","display","innerHTML","Array","fill","insertBefore","nextSibling","remove","__triggered","__points","handleScroll","rAFThrottle","pageYOffset","scrolledPoints","$el","$","position","offset","height","percent","calcPoints","filter","point","indexOf","isTriggered","push","setTriggered","pushToDataLayer","passive","event","post","scrollPercent","test","location","pathname"],"mappings":"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","file":"chunk.116.dfc19e1fbeb15ddd3582.91f2a66b.js","sourcesContent":["import { documentDispatch } from 'core/utils/events';\nimport { RELOAD_ADMIN_PANEL } from 'site/controllers/AdminPanel';\nexport function applyMeta({ title, url }) {\n document.title = title;\n documentDispatch(RELOAD_ADMIN_PANEL);\n history.pushState({ _type: 'PostableLoad', id: url }, '', url);\n}\n","import ContainerScrollHandler from 'core/services/GTM/ContainerScrollHandler';\nimport { POINTS, mapper } from 'core/services/GTM/handlers/postScroll';\nexport function initScrollStats(el) {\n var _a, _b;\n let targetEl;\n if ((_a = el.nextElementSibling) === null || _a === void 0 ? void 0 : _a.classList.contains('b-Article')) {\n targetEl = el.nextElementSibling;\n }\n else {\n targetEl = (_b = el.nextElementSibling) === null || _b === void 0 ? void 0 : _b.querySelector('.b-Article');\n }\n if (!targetEl)\n return;\n ContainerScrollHandler({ selector: targetEl, points: POINTS, cond: () => true, mapper });\n}\n","const PREFIXES = ['adfox', 'IMR', 'div-gpt-ad'];\nconst LOADED_MOD = '_loaded';\nconst SELECTOR = PREFIXES.map(prefix => `.b-Article [id^=\"${prefix}_\"]:not([id$=\"${LOADED_MOD}\"])`).join(', ');\nexport function resetMediaSlots() {\n document.querySelectorAll(SELECTOR).forEach(node => node.id = node.id + LOADED_MOD);\n}\n","import { HttpClient } from 'core/services/HttpClient';\nimport WayPointService from 'core/services/WayPointService';\nimport { addLoader, removeLoader } from 'core/utils/loaderSpinner';\nimport ScrollLock from 'core/utils/scrollLock';\nimport { applyMeta, initScrollStats, resetMediaSlots } from '../utils';\nimport { connect } from 'core/services/Controller';\nimport { ARTICLE_READY } from '../constants';\nconst WAY_POINT_PRECISION = 6000;\nexport class PaginationPointService {\n constructor(props, el) {\n this.watcherIds = null;\n this.nextActive = false;\n this.loadPromise = null;\n this.nextMeta = null;\n this.handleChangePrev = () => {\n if (!this.nextActive)\n return;\n this.nextActive = false;\n applyMeta(this.props.meta);\n };\n this.handlePreloadNext = async () => {\n addLoader(this.el);\n this.loadPromise = HttpClient.get(this.props.loadUrl);\n const { data: { content } } = await this.loadPromise;\n this.el.insertAdjacentHTML('afterend', content);\n };\n this.enableScroll = () => {\n removeLoader(this.el);\n ScrollLock.disable();\n };\n this.handleNextArticleReady = () => {\n document.removeEventListener(ARTICLE_READY, this.handleNextArticleReady);\n this.enableScroll();\n };\n this.handleChangeNext = async () => {\n var _a;\n if (this.nextActive)\n return;\n this.nextActive = true;\n if (this.nextMeta)\n return applyMeta(this.nextMeta);\n if (!this.loadPromise)\n this.handlePreloadNext();\n ScrollLock.enable();\n try {\n const { data: { meta, dataLayer } } = await this.loadPromise;\n this.nextMeta = meta;\n this.loadPromise = null;\n applyMeta(this.nextMeta);\n resetMediaSlots();\n document.addEventListener(ARTICLE_READY, this.handleNextArticleReady);\n connect(this.el.parentElement);\n window.dataLayer = ((_a = window.dataLayer) !== null && _a !== void 0 ? _a : []).concat(dataLayer);\n setTimeout(() => initScrollStats(this.el), 100);\n }\n catch (_b) {\n this.enableScroll();\n }\n };\n this.props = props;\n this.el = el;\n this.watcherIds = WayPointService.watch([this.preloadWatcher, this.changeWatcher]);\n }\n destroy() {\n if (this.watcherIds)\n WayPointService.unwatch(this.watcherIds);\n }\n get elPageYOffset() {\n return this.el.offsetTop + this.el.getBoundingClientRect().top - window.innerHeight;\n }\n get preloadWatcher() {\n return {\n getPoint: () => {\n return this.elPageYOffset - WAY_POINT_PRECISION;\n },\n onDown: this.handlePreloadNext,\n onUp() { },\n once: true\n };\n }\n get changeWatcher() {\n return {\n getPoint: () => this.elPageYOffset,\n onDown: this.handleChangeNext,\n onUp: this.handleChangePrev\n };\n }\n}\n","export function addLoader(el, size = 5) {\n if (!(el === null || el === void 0 ? void 0 : el.parentNode))\n return;\n requestAnimationFrame(() => {\n const loader = document.createElement('div');\n loader.classList.add('b-AjaxLoader');\n loader.style.display = 'block';\n loader.innerHTML = new Array(size).fill('
').join('\\n');\n el.parentNode.insertBefore(loader, el.nextSibling);\n });\n}\nexport function removeLoader(el) {\n requestAnimationFrame(() => {\n var _a, _b;\n (_b = (_a = el === null || el === void 0 ? void 0 : el.parentNode) === null || _a === void 0 ? void 0 : _a.querySelector('.b-AjaxLoader')) === null || _b === void 0 ? void 0 : _b.remove();\n });\n}\n","import { pushToDataLayer } from 'core/services/GTM'\n\nimport rAFThrottle from 'core/utils/rAFThrottle'\n\nfunction ContainerScrollHandler({ selector, cond, points, mapper }) {\n if (!cond()) return\n\n let __triggered = []\n let __points = []\n\n let calcPoints = () => {\n if (__points.length) return __points\n\n let $el = $(selector)\n let position = (($el.offset() ? $el.offset().top : 0) + $el.height()) / 100\n let offset = window.innerHeight / 2\n\n __points = points.map(percent => ({\n percent: percent,\n position: position * percent - offset\n }))\n\n return __points\n }\n\n let isTriggered = point => {\n return __triggered.indexOf(point) > -1\n }\n\n let setTriggered = point => {\n __triggered.push(point)\n }\n\n let handleScroll = rAFThrottle(() => {\n let pageYOffset = window.pageYOffset\n\n let scrolledPoints = calcPoints()\n .filter(point => !isTriggered(point))\n .filter(point => pageYOffset > point.position)\n\n scrolledPoints.forEach(point => setTriggered(point))\n\n if (scrolledPoints.length) {\n pushToDataLayer(mapper(scrolledPoints))\n }\n }, 300)\n\n window.addEventListener('scroll', handleScroll, { passive: true })\n}\n\nexport default ContainerScrollHandler\n","import ContainerScrollHandler from '../ContainerScrollHandler';\nexport const POINTS = [10, 30, 70, 100];\nexport const mapper = (points) => {\n return points.map(({ percent }) => ({\n event: 'postScroll',\n post: {\n scrollPercent: percent\n }\n }));\n};\nContainerScrollHandler({\n selector: '.b-Article',\n points: POINTS,\n cond() {\n return /^\\/(posts|products\\/offers)\\/\\d+/.test(document.location.pathname);\n },\n mapper\n});\n"],"sourceRoot":""}