{"version":3,"file":"js/app.js","mappings":"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","sources":["webpack://tpl-2-vue3/./src/js/AppConfig.ts","webpack://tpl-2-vue3/./src/components/ScrollToTop.vue?2c22","webpack://tpl-2-vue3/./src/components/ScrollToTop.vue","webpack://tpl-2-vue3/./src/js/helpers/Formatters.ts","webpack://tpl-2-vue3/./src/components/VoteBox.vue?9cd3","webpack://tpl-2-vue3/./src/components/VoteBox.vue","webpack://tpl-2-vue3/./src/components/VideoPreview/PlayPreviewButton.vue?b615","webpack://tpl-2-vue3/./src/components/VideoPreview/PlayPreviewButton.vue","webpack://tpl-2-vue3/./src/components/VideoPreview/VideoPreview.vue?b58d","webpack://tpl-2-vue3/./src/components/VideoPreview/VideoPreview.vue","webpack://tpl-2-vue3/./src/configs/videoRotatorWatcher.ts","webpack://tpl-2-vue3/./src/js/VideoRotatorWatch.ts","webpack://tpl-2-vue3/./src/configs/galleryRotatorWatcher.ts","webpack://tpl-2-vue3/./src/js/GalleryRotatorWatch.ts","webpack://tpl-2-vue3/./src/main.ts","webpack://tpl-2-vue3/webpack/bootstrap","webpack://tpl-2-vue3/webpack/runtime/chunk loaded","webpack://tpl-2-vue3/webpack/runtime/compat get default export","webpack://tpl-2-vue3/webpack/runtime/define property getters","webpack://tpl-2-vue3/webpack/runtime/ensure chunk","webpack://tpl-2-vue3/webpack/runtime/get javascript chunk filename","webpack://tpl-2-vue3/webpack/runtime/get mini-css chunk filename","webpack://tpl-2-vue3/webpack/runtime/global","webpack://tpl-2-vue3/webpack/runtime/hasOwnProperty shorthand","webpack://tpl-2-vue3/webpack/runtime/load script","webpack://tpl-2-vue3/webpack/runtime/make namespace object","webpack://tpl-2-vue3/webpack/runtime/publicPath","webpack://tpl-2-vue3/webpack/runtime/css loading","webpack://tpl-2-vue3/webpack/runtime/jsonp chunk loading","webpack://tpl-2-vue3/webpack/startup"],"sourcesContent":["import type { RotatorConfig as VideoRotatorConfig} from '@/configs/videoRotatorWatcher'\nimport type { RotatorConfig as GalleryRotatorConfig } from '@/configs/galleryRotatorWatcher'\n\ndeclare global {\n interface Window {\n AppConfig: AppConfig | undefined;\n }\n}\n\ntype AppConfig = {\n videoRotator: Partial\n galleryRotator: Partial\n}\n\nconst config: AppConfig = {\n videoRotator: {\n enabled: false,\n },\n galleryRotator: {\n enabled: false,\n }\n}\n\nif (Object.prototype.hasOwnProperty.call(window, 'AppConfig')) {\n Object.assign(config, window.AppConfig)\n}\n\nexport default config\n","import { defineComponent as _defineComponent } from 'vue'\nimport { renderSlot as _renderSlot, withModifiers as _withModifiers, normalizeClass as _normalizeClass, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = [\"onClick\"]\n\nimport { ref, withDefaults } from 'vue'\n\ntype ComponentProperties = {\n offset?: number;\n offsetOpacity?: number;\n duration?: number;\n}\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'ScrollToTop',\n props: {\n offset: { default: 300 },\n offsetOpacity: { default: 1200 },\n duration: { default: 700 }\n },\n setup(__props: any) {\n\nconst props = __props as { offset: number, offsetOpacity: number, duration: number };\n\nconst scrolling = ref(false)\nconst lastScrollOffset = ref(0)\nconst isShow = ref(false)\n\n\n\nconst detectScrolling = (): void => {\n if (scrolling.value === false) {\n scrolling.value = true\n\n !window.requestAnimationFrame ? setTimeout(checkBackToTop, 250) : window.requestAnimationFrame(checkBackToTop)\n }\n\n const scrollOffset = window.scrollY || document.documentElement.scrollTop // Credits: \"https://github.com/qeremy/so/blob/master/so.dom.js#L426\"\n\n isShow.value = ((scrollOffset < lastScrollOffset.value && scrollOffset >= props.offset))\n\n lastScrollOffset.value = scrollOffset <= 0 ? 0 : scrollOffset // For Mobile or negative scrolling\n}\n\nconst checkBackToTop = () => {\n const scrollOffset = window.scrollY || document.documentElement.scrollTop\n\n if (isShow.value === true && scrollOffset <= props.offset) {\n isShow.value = false\n }\n\n scrolling.value = false\n}\n\nconst scrollTop = () => {\n if (!window.requestAnimationFrame) {\n window.scrollTo(0, 0)\n\n return\n }\n\n const start = window.scrollY || document.documentElement.scrollTop\n let currentTime = 0\n\n const animateScroll = (timestamp: number) => {\n if (!currentTime) {\n currentTime = timestamp\n }\n\n const progress = timestamp - currentTime\n const val = Math.max(easeInOutQuad(progress, start, -start, props.duration), 0)\n\n window.scrollTo(0, val)\n\n if (progress < props.duration) {\n window.requestAnimationFrame(animateScroll)\n }\n }\n\n window.requestAnimationFrame(animateScroll)\n}\n\nconst easeInOutQuad = (t: number, b: number, c: number, d: number): number => {\n t /= d / 2\n\n if (t < 1) {\n return c / 2 * t * t + b\n }\n\n t--\n\n return -c / 2 * (t * (t - 2) - 1) + b\n}\n\nwindow.addEventListener('scroll', detectScrolling)\n// window.removeEventListener('scroll', detectScrolling)\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\"scroll-to-top\", { '-show': isShow.value }]),\n onClick: _withModifiers(scrollTop, [\"prevent\"])\n }, [\n _renderSlot(_ctx.$slots, \"default\")\n ], 10, _hoisted_1))\n}\n}\n\n})","import script from \"./ScrollToTop.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./ScrollToTop.vue?vue&type=script&setup=true&lang=ts\"\n\nconst __exports__ = script;\n\nexport default __exports__","import TimeAgoLib from 'javascript-time-ago'\nimport ru from 'javascript-time-ago/locale/ru'\n\nTimeAgoLib.addLocale(ru)\nconst ta = new TimeAgoLib('ru-RU')\n\nexport function TimeAgo (datetime: string): string {\n const d = new Date(datetime)\n\n return ta.format(d)\n}\n\nexport function SecondsToTime (seconds: number): string {\n const h = Math.floor(seconds / 3600)\n const m = Math.floor((seconds % 3600) / 60)\n const s = seconds % 60\n\n return [\n h,\n m > 9 ? m : (h ? '0' + m : m || '0'),\n s > 9 ? s : '0' + s\n ].filter(a => a).join(':')\n}\n\nexport function CompactNumber (value: number| null, fixed = 0): string|null {\n if (value === null) { // terminate early\n return null\n }\n\n value = Number(value)\n\n if (isNaN(value)) {\n return '0'\n }\n\n if (value === 0) {\n return '0'\n }\n\n fixed = (!fixed || fixed < 0) ? 0 : fixed // number of decimal places to show\n\n const b = (value).toPrecision(2).split('e') // get power\n\n const k: number = b.length === 1 ? 0 : Math.floor(Math.min(Number(b[1].slice(1)), 14) / 3) // floor at decimals, ceiling at trillions\n const c: string = k < 1 ? value.toFixed(0 + fixed) : (value / Math.pow(10, k * 3)).toFixed(fixed) // divide by power\n const d: number = Number(c) < 0 ? Number(c) : Math.abs(Number(c)) // enforce -0 is 0\n // append power\n return d + ['', 'k', 'm', 'b', 't'][k]\n}\n\nexport function LikesPercent (likes: number, dislikes = 0) {\n const votesSum = likes + dislikes\n\n if (votesSum === 0) {\n return 100\n }\n\n const likesPercent = (likes / votesSum) * 100\n\n return Math.ceil(likesPercent)\n}\n\nexport default {\n TimeAgo,\n SecondsToTime,\n CompactNumber,\n LikesPercent\n}\n","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, renderSlot as _renderSlot } from \"vue\"\n\nimport { LikesPercent } from '@/js/helpers/Formatters'\nimport { ref, withDefaults, computed, reactive } from 'vue'\n\ntype ComponentProperties = {\n resourceId: number|string;\n sendUrl: string;\n likes?: number;\n dislikes?: number;\n}\ntype VoteResult = {\n resourceId: number|string;\n action: 'up'|'down'\n}\ntype ApiPayload = {\n id: number|string;\n action: 'up'|'down'\n}\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'VoteBox',\n props: {\n resourceId: null,\n sendUrl: null,\n likes: { default: 0 },\n dislikes: { default: 0 }\n },\n emits: [\"voted\"],\n setup(__props: any, { emit }: { emit: ({\n (e: 'voted', data: VoteResult): void\n}), expose: any, slots: any, attrs: any }) {\n\nconst props = __props as { resourceId: number|string, sendUrl: string, likes: number, dislikes: number };\n\n\n\n\n\nconst getFromStorage = (key: string): Array => {\n const record = localStorage.getItem(key)\n\n if (record) {\n return JSON.parse(record)\n }\n\n return []\n}\n\nconst setToStorage = (key: string, payload: Array): void => {\n return localStorage.setItem(key, JSON.stringify(payload))\n}\n\nconst likes = ref(props.likes)\nconst dislikes = ref(props.dislikes)\nconst likesPercent = computed((): number => LikesPercent(likes.value, dislikes.value))\nconst votedResources: Array = reactive(getFromStorage('votedResources'))\n\nconst notifyBackend = (apiUrl: string, payload: ApiPayload): Promise => {\n return fetch(apiUrl, {\n method: 'POST',\n cache: 'no-cache',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(payload)\n })\n .then((response) => {\n if (!response.ok) {\n throw new Error(response.statusText)\n }\n\n return response\n })\n}\n\nconst voteLike = () => {\n if (isVoted()) {\n return\n }\n\n const payload: ApiPayload = { id: props.resourceId, action: 'up'}\n\n notifyBackend(props.sendUrl, payload)\n .then(() => {\n likes.value += 1\n votedResources.push(props.resourceId)\n setToStorage('votedResources', votedResources)\n emit('voted', { resourceId: props.resourceId, action: 'up'})\n })\n /*.catch((err) => {\n console.error(err)\n })*/\n}\n\nconst voteDislike = () => {\n if (isVoted()) {\n return\n }\n\n const payload: ApiPayload = { id: props.resourceId, action: 'down'}\n\n notifyBackend(props.sendUrl, payload)\n .then(() => {\n dislikes.value += 1\n votedResources.push(props.resourceId)\n setToStorage('votedResources', votedResources)\n emit('voted', { resourceId: props.resourceId, action: 'down'})\n })\n /*.catch((err) => {\n console.error(err)\n })*/\n}\n\nconst isVoted = (): boolean => {\n return votedResources.indexOf(props.resourceId) !== -1\n}\n\nreturn (_ctx: any,_cache: any) => {\n return _renderSlot(_ctx.$slots, \"default\", {\n resourceId: __props.resourceId,\n likes: likes.value,\n dislikes: dislikes.value,\n likesPercent: _unref(likesPercent),\n isVoted: isVoted,\n voteLike: voteLike,\n voteDislike: voteDislike\n })\n}\n}\n\n})","import script from \"./VoteBox.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./VoteBox.vue?vue&type=script&setup=true&lang=ts\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { renderSlot as _renderSlot, createCommentVNode as _createCommentVNode, withModifiers as _withModifiers, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = [\"onClick\"]\n\nimport { withDefaults } from 'vue'\n\ntype ComponentProperties = {\n isPlayNow?: boolean;\n}\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'PlayPreviewButton',\n props: {\n isPlayNow: { type: Boolean, default: false }\n },\n emits: ['start-play', 'stop-play'],\n setup(__props: any, { emit }) {\n\nconst props = __props as { isPlayNow: boolean };\n\n\n\n\n\nconst handleClick = () => {\n if (!props.isPlayNow) {\n emit('start-play')\n } else {\n emit('stop-play')\n }\n}\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n onClick: _withModifiers(handleClick, [\"prevent\",\"stop\"])\n }, [\n (props.isPlayNow)\n ? _renderSlot(_ctx.$slots, \"stop\", { key: 0 })\n : _renderSlot(_ctx.$slots, \"play\", { key: 1 })\n ], 8, _hoisted_1))\n}\n}\n\n})","import script from \"./PlayPreviewButton.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./PlayPreviewButton.vue?vue&type=script&lang=ts&setup=true\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, withModifiers as _withModifiers, renderSlot as _renderSlot, normalizeClass as _normalizeClass, withCtx as _withCtx, createBlock as _createBlock } from \"vue\"\n\nconst _hoisted_1 = {\n key: 0,\n class: \"fake-progress\"\n}\nconst _hoisted_2 = /*#__PURE__*/_createElementVNode(\"div\", { class: \"fake-progress__bar\" }, null, -1)\nconst _hoisted_3 = [\n _hoisted_2\n]\nconst _hoisted_4 = [\"src\"]\nconst _hoisted_5 = /*#__PURE__*/_createElementVNode(\"i\", { class: \"icon icon-circle-play\" }, null, -1)\nconst _hoisted_6 = /*#__PURE__*/_createElementVNode(\"i\", { class: \"icon icon-circle-stop\" }, null, -1)\n\nimport PlayPreviewButton from './PlayPreviewButton.vue'\nimport { ref, withDefaults, onMounted } from 'vue'\n\ntype ComponentProperties = {\n cssClass?: string;\n previewUrl: string;\n playButtonEnabled?: boolean;\n playButtonCssClass?: string;\n}\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'VideoPreview',\n props: {\n cssClass: { default: 'video-preview' },\n previewUrl: { default: '' },\n playButtonEnabled: { type: Boolean, default: true },\n playButtonCssClass: { default: 'video-preview__play' }\n },\n emits: ['preview-start', 'preview-end', 'preview-error'],\n setup(__props: any, { emit }) {\n\nconst props = __props as { cssClass: string, previewUrl: string, playButtonEnabled: boolean, playButtonCssClass: string };\n\n\n\n\n\nconst showProgress = ref(false)\nconst display = ref(false)\nconst isPlayed = ref(false)\nconst deferredPreviewPlayTimer = ref|null>(null)\n\n// Handle direct click on button\n// Starts playing without delay\nconst startPlay = () => {\n display.value = true\n window.addEventListener('blur', onWindowBlur)\n}\n\nconst stopPlay = () => {\n display.value = false\n isPlayed.value = false\n\n removeDeferredTimer()\n window.removeEventListener('blur', onWindowBlur)\n}\n\nconst previewStartsPlay = () => {\n isPlayed.value = true\n}\n\nconst previewEndsPlay = () => {\n isPlayed.value = false\n}\n\nconst previewLoading = () => {\n showProgress.value = true\n}\n\nconst previewLoaded = () => {\n showProgress.value = false\n}\n\nconst previewLoadedWithError = () => {\n showProgress.value = false\n display.value = false\n window.removeEventListener('blur', onWindowBlur)\n emit('preview-error')\n}\n// Handle mouse enter and mouse leave events\nconst removeDeferredTimer = () => {\n if (deferredPreviewPlayTimer.value !== null) {\n window.clearTimeout(deferredPreviewPlayTimer.value)\n deferredPreviewPlayTimer.value = null\n }\n}\n\nconst playPreviewWithDelay = () => {\n if (deferredPreviewPlayTimer.value !== null) {\n return\n }\n\n deferredPreviewPlayTimer.value = setTimeout(() => {\n display.value = true\n window.addEventListener('blur', onWindowBlur)\n removeDeferredTimer()\n }, 400)\n}\n\nconst onPreviewMouseOver = () => {\n playPreviewWithDelay()\n}\n\nconst onPreviewMouseOut = (e: MouseEvent & { toElement: HTMLElement }) => {\n const el = e.toElement || e.relatedTarget\n\n //window.removeEventListener('blur', onWindowBlur)\n removeDeferredTimer()\n\n if (el && el.nodeName !== 'VIDEO') {\n if (display.value === true) {\n display.value = false\n }\n }\n}\n\nconst onWindowBlur = () => {\n stopPlay()\n}\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([__props.cssClass, {'-video': display.value}]),\n onMouseenter: onPreviewMouseOver,\n onMouseleave: onPreviewMouseOut,\n onBlur: onPreviewMouseOut,\n tabindex: \"-1\"\n }, [\n (showProgress.value)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_1, _hoisted_3))\n : _createCommentVNode(\"\", true),\n (display.value)\n ? (_openBlock(), _createElementBlock(\"video\", {\n key: 1,\n src: __props.previewUrl,\n muted: \"\",\n autoplay: \"\",\n loop: \"\",\n \"webkit-playsinline\": \"true\",\n playsinline: \"true\",\n onLoadstart: previewLoading,\n onCanplay: previewLoaded,\n onError: previewLoadedWithError,\n onPlay: previewStartsPlay,\n onPause: previewEndsPlay,\n onContextmenu: _cache[0] || (_cache[0] = _withModifiers(() => {}, [\"prevent\",\"stop\"]))\n }, null, 40, _hoisted_4))\n : _createCommentVNode(\"\", true),\n _renderSlot(_ctx.$slots, \"default\", {\n onContextmenu: _cache[1] || (_cache[1] = _withModifiers(() => {}, [\"prevent\",\"stop\"]))\n }),\n (props.playButtonEnabled)\n ? (_openBlock(), _createBlock(PlayPreviewButton, {\n key: 2,\n class: _normalizeClass(props.playButtonCssClass),\n \"is-play-now\": isPlayed.value,\n onStartPlay: startPlay,\n onStopPlay: stopPlay\n }, {\n play: _withCtx(() => [\n _hoisted_5\n ]),\n stop: _withCtx(() => [\n _hoisted_6\n ]),\n _: 1\n }, 8, [\"class\", \"is-play-now\"]))\n : _createCommentVNode(\"\", true)\n ], 34))\n}\n}\n\n})","import script from \"./VideoPreview.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./VideoPreview.vue?vue&type=script&lang=ts&setup=true\"\n\nconst __exports__ = script;\n\nexport default __exports__","export type RotatorConfig = {\n enabled: boolean;\n sendReportUrl: string;\n videoWatchAttrName: string,\n categoryWatchAttrName: string\n}\n\nexport default {\n enabled: false,\n sendReportUrl: '/api/v1/videos/rotator/',\n videoWatchAttrName: 'data-vw',\n categoryWatchAttrName: 'data-vcw'\n}\n","import defaultConfig from '@/configs/videoRotatorWatcher'\nimport type { RotatorConfig } from '@/configs/videoRotatorWatcher'\n//import type { RotatorConfig }, defaultConfig from '@/configs/galleryRotatorWatcher'\n\ntype Stats = {\n categoriesClicked: Array,\n videosViewed: Array,\n videosClicked: Array\n}\n\nconst config = { ...defaultConfig }\nconst statsCollector: Stats = {\n categoriesClicked: [],\n videosViewed: [],\n videosClicked: []\n}\n\nconst observerOptions = {\n root: null,\n threshold: 0.75\n}\n\nconst handleIntersection: IntersectionObserverCallback = (entries, observer) => {\n entries.map((entry) => {\n if (entry.isIntersecting) {\n const el = entry.target\n const val = el.getAttribute(config.videoWatchAttrName)\n\n if (val !== null) {\n statsCollector.videosViewed.push(val)\n }\n\n observer.unobserve(entry.target);\n }\n })\n}\n\nconst registerVideoClick = (id: string|null) => {\n if (id === null || statsCollector.videosClicked.indexOf(id) > -1) {\n return\n }\n\n statsCollector.videosClicked.push(id)\n}\n\nconst registerCategoryClick = (id: string|null) => {\n if (id === null || statsCollector.categoriesClicked.indexOf(id) > -1) {\n return\n }\n\n statsCollector.categoriesClicked.push(id)\n}\n\n/**\n * Send report when window closer or move to other page\n */\nconst sendReport = (sendReportUrl: string, statsCollector: Stats) => {\n if (\n statsCollector.categoriesClicked.length === 0 &&\n statsCollector.videosViewed.length === 0 &&\n statsCollector.videosClicked.length === 0\n ) {\n return\n }\n\n fetch(sendReportUrl, {\n method: 'POST',\n headers: {\n Accept: 'application/json',\n 'Content-Type': 'application/json'\n },\n cache: 'no-cache',\n keepalive: true,\n body: JSON.stringify(statsCollector)\n })\n}\n\nconst configure = (newConf: RotatorConfig) => {\n Object.assign(config, { ...newConf })\n}\n\nconst watch = () => {\n const observer = new IntersectionObserver(handleIntersection, observerOptions);\n\n const videosThumbs = document.querySelectorAll(`[${config.videoWatchAttrName}]`)\n\n videosThumbs.forEach((el) => {\n observer.observe(el)\n\n el.addEventListener('click', () => {\n registerVideoClick(el.getAttribute(config.videoWatchAttrName))\n })\n })\n\n const observedCategories = document.querySelectorAll(`[${config.categoryWatchAttrName}]`)\n\n observedCategories.forEach((el) => {\n el.addEventListener('click', () => {\n registerCategoryClick(el.getAttribute(config.categoryWatchAttrName))\n })\n })\n\n window.addEventListener('pagehide', () => {\n sendReport(config.sendReportUrl, statsCollector)\n })\n}\n\nexport {\n watch,\n configure\n}\n","export type RotatorConfig = {\n enabled: boolean;\n sendReportUrl: string;\n galleryWatchAttrName: string,\n categoryWatchAttrName: string\n}\n\nexport default {\n enabled: false,\n sendReportUrl: '/api/v1/gallery/watch-stats/',\n galleryWatchAttrName: 'data-gw',\n categoryWatchAttrName: 'data-gcw'\n}\n","import defaultConfig from '@/configs/galleryRotatorWatcher'\nimport type { RotatorConfig } from '@/configs/galleryRotatorWatcher'\n//import type { RotatorConfig }, defaultConfig from '@/configs/galleryRotatorWatcher'\n\ntype Stats = {\n categoriesClicked: Array,\n galleriesViewed: Array,\n galleriesClicked: Array\n}\n\nconst config = { ...defaultConfig }\nconst statsCollector: Stats = {\n categoriesClicked: [],\n galleriesViewed: [],\n galleriesClicked: []\n}\n\nconst observerOptions = {\n root: null,\n threshold: 0.75\n}\n\nconst handleIntersection: IntersectionObserverCallback = (entries, observer) => {\n entries.map((entry) => {\n if (entry.isIntersecting) {\n const el = entry.target\n const val = el.getAttribute(config.galleryWatchAttrName)\n\n if (val !== null) {\n statsCollector.galleriesViewed.push(val)\n }\n\n observer.unobserve(entry.target);\n }\n })\n}\n\nconst registerGalleryClick = (id: string|null) => {\n if (id === null || statsCollector.galleriesClicked.indexOf(id) > -1) {\n return\n }\n\n statsCollector.galleriesClicked.push(id)\n}\n\nconst registerCategoryClick = (id: string|null) => {\n if (id === null || statsCollector.categoriesClicked.indexOf(id) > -1) {\n return\n }\n\n statsCollector.categoriesClicked.push(id)\n}\n\n/**\n * Send report when window closer or move to other page\n */\nconst sendReport = (sendReportUrl: string, statsCollector: Stats) => {\n if (\n statsCollector.categoriesClicked.length === 0 &&\n statsCollector.galleriesViewed.length === 0 &&\n statsCollector.galleriesClicked.length === 0\n ) {\n return\n }\n\n fetch(sendReportUrl, {\n method: 'POST',\n headers: {\n Accept: 'application/json',\n 'Content-Type': 'application/json'\n },\n cache: 'no-cache',\n keepalive: true,\n body: JSON.stringify(statsCollector)\n })\n}\n\nconst configure = (newConf: RotatorConfig) => {\n Object.assign(config, { ...newConf })\n}\n\nconst watch = () => {\n const observer = new IntersectionObserver(handleIntersection, observerOptions);\n\n const galleriesThumbs = document.querySelectorAll(`[${config.galleryWatchAttrName}]`)\n\n galleriesThumbs.forEach((el) => {\n observer.observe(el)\n\n el.addEventListener('click', () => {\n registerGalleryClick(el.getAttribute(config.galleryWatchAttrName))\n })\n })\n\n const observedCategories = document.querySelectorAll(`[${config.categoryWatchAttrName}]`)\n\n observedCategories.forEach((el) => {\n el.addEventListener('click', () => {\n registerCategoryClick(el.getAttribute(config.categoryWatchAttrName))\n })\n })\n\n window.addEventListener('pagehide', () => {\n sendReport(config.sendReportUrl, statsCollector)\n })\n}\n\nexport {\n watch,\n configure\n}\n","import './assets/scss/main.scss'\nimport './assets/fonts/icons.css'\nimport { createApp, defineAsyncComponent } from 'vue'\nimport AppConfig from './js/AppConfig'\nimport ScrollToTop from './components/ScrollToTop.vue'\n//import FlagButton from './components/FlagForm/FlagButton.vue'\n//import FlagFormContainer from './components/FlagForm/FlagFormContainer.vue'\nimport VoteBox from './components/VoteBox.vue'\nimport VideoPreview from './components/VideoPreview/VideoPreview.vue'\nimport { watch as videoWatch } from './js/VideoRotatorWatch'\nimport { watch as galleryWatch } from './js/GalleryRotatorWatch'\n\ncreateApp({\n components: {\n ScrollToTop,\n GallerySlider: defineAsyncComponent(() => import('@/components/LightGallery/GallerySlider.vue')),\n VideoPlayer: defineAsyncComponent(() => import('@/components/Player/VideoPlayer.vue')),\n //FlagButton,\n //FlagFormContainer,\n VoteBox,\n VideoPreview\n }\n}).mount('#app')\n\nif (AppConfig.videoRotator.enabled) {\n videoWatch()\n}\n\nif (AppConfig.galleryRotator.enabled) {\n galleryWatch()\n}\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","var deferred = [];\n__webpack_require__.O = function(result, chunkIds, fn, priority) {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every(function(key) { return __webpack_require__.O[key](chunkIds[j]); })) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = function(chunkId) {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce(function(promises, key) {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = function(chunkId) {\n\t// return url for filenames based on template\n\treturn \"js/\" + chunkId + \".js\";\n};","// This function allow to reference async chunks\n__webpack_require__.miniCssF = function(chunkId) {\n\t// return url for filenames based on template\n\treturn \"css/\" + chunkId + \".css\";\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","var inProgress = {};\nvar dataWebpackPrefix = \"tpl-2-vue3:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = function(url, done, key, chunkId) {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = function(prev, event) {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach(function(fn) { return fn(event); });\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.p = \"/static/\";","if (typeof document === \"undefined\") return;\nvar createStylesheet = function(chunkId, fullhref, oldTag, resolve, reject) {\n\tvar linkTag = document.createElement(\"link\");\n\n\tlinkTag.rel = \"stylesheet\";\n\tlinkTag.type = \"text/css\";\n\tvar onLinkComplete = function(event) {\n\t\t// avoid mem leaks.\n\t\tlinkTag.onerror = linkTag.onload = null;\n\t\tif (event.type === 'load') {\n\t\t\tresolve();\n\t\t} else {\n\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\tvar realHref = event && event.target && event.target.href || fullhref;\n\t\t\tvar err = new Error(\"Loading CSS chunk \" + chunkId + \" failed.\\n(\" + realHref + \")\");\n\t\t\terr.code = \"CSS_CHUNK_LOAD_FAILED\";\n\t\t\terr.type = errorType;\n\t\t\terr.request = realHref;\n\t\t\tif (linkTag.parentNode) linkTag.parentNode.removeChild(linkTag)\n\t\t\treject(err);\n\t\t}\n\t}\n\tlinkTag.onerror = linkTag.onload = onLinkComplete;\n\tlinkTag.href = fullhref;\n\n\tif (oldTag) {\n\t\toldTag.parentNode.insertBefore(linkTag, oldTag.nextSibling);\n\t} else {\n\t\tdocument.head.appendChild(linkTag);\n\t}\n\treturn linkTag;\n};\nvar findStylesheet = function(href, fullhref) {\n\tvar existingLinkTags = document.getElementsByTagName(\"link\");\n\tfor(var i = 0; i < existingLinkTags.length; i++) {\n\t\tvar tag = existingLinkTags[i];\n\t\tvar dataHref = tag.getAttribute(\"data-href\") || tag.getAttribute(\"href\");\n\t\tif(tag.rel === \"stylesheet\" && (dataHref === href || dataHref === fullhref)) return tag;\n\t}\n\tvar existingStyleTags = document.getElementsByTagName(\"style\");\n\tfor(var i = 0; i < existingStyleTags.length; i++) {\n\t\tvar tag = existingStyleTags[i];\n\t\tvar dataHref = tag.getAttribute(\"data-href\");\n\t\tif(dataHref === href || dataHref === fullhref) return tag;\n\t}\n};\nvar loadStylesheet = function(chunkId) {\n\treturn new Promise(function(resolve, reject) {\n\t\tvar href = __webpack_require__.miniCssF(chunkId);\n\t\tvar fullhref = __webpack_require__.p + href;\n\t\tif(findStylesheet(href, fullhref)) return resolve();\n\t\tcreateStylesheet(chunkId, fullhref, null, resolve, reject);\n\t});\n}\n// object to store loaded CSS chunks\nvar installedCssChunks = {\n\t143: 0\n};\n\n__webpack_require__.f.miniCss = function(chunkId, promises) {\n\tvar cssChunks = {\"59\":1,\"662\":1};\n\tif(installedCssChunks[chunkId]) promises.push(installedCssChunks[chunkId]);\n\telse if(installedCssChunks[chunkId] !== 0 && cssChunks[chunkId]) {\n\t\tpromises.push(installedCssChunks[chunkId] = loadStylesheet(chunkId).then(function() {\n\t\t\tinstalledCssChunks[chunkId] = 0;\n\t\t}, function(e) {\n\t\t\tdelete installedCssChunks[chunkId];\n\t\t\tthrow e;\n\t\t}));\n\t}\n};\n\n// no hmr","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t143: 0\n};\n\n__webpack_require__.f.j = function(chunkId, promises) {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise(function(resolve, reject) { installedChunkData = installedChunks[chunkId] = [resolve, reject]; });\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = function(event) {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t} else installedChunks[chunkId] = 0;\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = function(chunkId) { return installedChunks[chunkId] === 0; };\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(parentChunkLoadingFunction, data) {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some(function(id) { return installedChunks[id] !== 0; })) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunktpl_2_vue3\"] = self[\"webpackChunktpl_2_vue3\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [998], function() { return __webpack_require__(4116); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["config","videoRotator","enabled","galleryRotator","Object","prototype","hasOwnProperty","call","window","assign","AppConfig","_hoisted_1","_defineComponent","__name","props","offset","default","offsetOpacity","duration","setup","__props","scrolling","ref","lastScrollOffset","isShow","detectScrolling","value","requestAnimationFrame","checkBackToTop","setTimeout","scrollOffset","scrollY","document","documentElement","scrollTop","scrollTo","start","currentTime","animateScroll","timestamp","progress","val","Math","max","easeInOutQuad","t","b","c","d","addEventListener","_ctx","_cache","_openBlock","_createElementBlock","class","_normalizeClass","onClick","_withModifiers","_renderSlot","$slots","__exports__","TimeAgoLib","ru","LikesPercent","likes","dislikes","votesSum","likesPercent","ceil","resourceId","sendUrl","emits","emit","getFromStorage","key","record","localStorage","getItem","JSON","parse","setToStorage","payload","setItem","stringify","computed","votedResources","reactive","notifyBackend","apiUrl","fetch","method","cache","headers","body","then","response","ok","Error","statusText","voteLike","isVoted","id","action","push","voteDislike","indexOf","_unref","isPlayNow","type","Boolean","handleClick","_hoisted_2","_createElementVNode","_hoisted_3","_hoisted_4","_hoisted_5","_hoisted_6","cssClass","previewUrl","playButtonEnabled","playButtonCssClass","showProgress","display","isPlayed","deferredPreviewPlayTimer","startPlay","onWindowBlur","stopPlay","removeDeferredTimer","removeEventListener","previewStartsPlay","previewEndsPlay","previewLoading","previewLoaded","previewLoadedWithError","clearTimeout","playPreviewWithDelay","onPreviewMouseOver","onPreviewMouseOut","e","el","toElement","relatedTarget","nodeName","onMouseenter","onMouseleave","onBlur","tabindex","_createCommentVNode","src","muted","autoplay","loop","playsinline","onLoadstart","onCanplay","onError","onPlay","onPause","onContextmenu","_createBlock","PlayPreviewButton","onStartPlay","onStopPlay","play","_withCtx","stop","_","sendReportUrl","videoWatchAttrName","categoryWatchAttrName","defaultConfig","statsCollector","categoriesClicked","videosViewed","videosClicked","observerOptions","root","threshold","handleIntersection","entries","observer","map","entry","isIntersecting","target","getAttribute","unobserve","registerVideoClick","registerCategoryClick","sendReport","length","Accept","keepalive","watch","IntersectionObserver","videosThumbs","querySelectorAll","forEach","observe","observedCategories","galleryWatchAttrName","galleriesViewed","galleriesClicked","registerGalleryClick","galleriesThumbs","createApp","components","ScrollToTop","GallerySlider","defineAsyncComponent","VideoPlayer","VoteBox","VideoPreview","mount","videoWatch","galleryWatch","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","module","__webpack_modules__","m","deferred","O","result","chunkIds","fn","priority","notFulfilled","Infinity","i","fulfilled","j","keys","every","splice","r","n","getter","__esModule","a","definition","o","defineProperty","enumerable","get","f","chunkId","Promise","all","reduce","promises","u","miniCssF","g","globalThis","this","Function","obj","prop","inProgress","dataWebpackPrefix","l","url","done","script","needAttach","scripts","getElementsByTagName","s","createElement","charset","timeout","nc","setAttribute","onScriptComplete","prev","event","onerror","onload","doneFns","parentNode","removeChild","bind","head","appendChild","Symbol","toStringTag","p","createStylesheet","fullhref","oldTag","resolve","reject","linkTag","rel","onLinkComplete","errorType","realHref","href","err","code","request","insertBefore","nextSibling","findStylesheet","existingLinkTags","tag","dataHref","existingStyleTags","loadStylesheet","installedCssChunks","miniCss","cssChunks","installedChunks","installedChunkData","promise","error","loadingEnded","realSrc","message","name","webpackJsonpCallback","parentChunkLoadingFunction","data","moreModules","runtime","some","chunkLoadingGlobal","self","__webpack_exports__"],"sourceRoot":""}