{"version":3,"file":"article-video-loop-bundle-v2-b8638b1457c92867796d.esm.js","mappings":"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","sources":["webpack://levende-stillbilde/webpack/runtime/create fake namespace object","webpack://levende-stillbilde/webpack/runtime/import chunk loading","webpack://levende-stillbilde/./node_modules/@nrk/dh-server-libs/base-element.js","webpack://levende-stillbilde/./node_modules/@nrk/dh-server-libs/get-element-tag.js","webpack://levende-stillbilde/./node_modules/@nrk/dh-server-libs/src/base-element.js","webpack://levende-stillbilde/./node_modules/@nrk/dh-server-libs/src/error-reporting.js","webpack://levende-stillbilde/./node_modules/@nrk/dh-server-libs/src/get-context-id.js","webpack://levende-stillbilde/./node_modules/@nrk/dh-server-libs/src/get-element-tag.js","webpack://levende-stillbilde/./node_modules/@nrk/dh-simple-error-report/dist/simple-error-report.min.js","webpack://levende-stillbilde/webpack/bootstrap","webpack://levende-stillbilde/webpack/runtime/define property getters","webpack://levende-stillbilde/webpack/runtime/ensure chunk","webpack://levende-stillbilde/webpack/runtime/get javascript chunk filename","webpack://levende-stillbilde/webpack/runtime/get mini-css chunk filename","webpack://levende-stillbilde/webpack/runtime/hasOwnProperty shorthand","webpack://levende-stillbilde/webpack/runtime/make namespace object","webpack://levende-stillbilde/webpack/runtime/publicPath","webpack://levende-stillbilde/./node_modules/@babel/runtime/helpers/esm/defineProperty.js","webpack://levende-stillbilde/./node_modules/@nrk/dh-basis-common/dh-basis-common.esm.js","webpack://levende-stillbilde/./node_modules/@nrk/dh-basis-levende-stillbilde/dh-basis-levende-stillbilde.esm.js","webpack://levende-stillbilde/./src/article/client.js"],"sourcesContent":["var getProto = Object.getPrototypeOf ? (obj) => (Object.getPrototypeOf(obj)) : (obj) => (obj.__proto__);\nvar leafPrototypes;\n// create a fake namespace object\n// mode & 1: value is a module id, require it\n// mode & 2: merge all properties of value into the ns\n// mode & 4: return value when already ns object\n// mode & 16: return value when it's Promise-like\n// mode & 8|1: behave like require\n__webpack_require__.t = function(value, mode) {\n\tif(mode & 1) value = this(value);\n\tif(mode & 8) return value;\n\tif(typeof value === 'object' && value) {\n\t\tif((mode & 4) && value.__esModule) return value;\n\t\tif((mode & 16) && typeof value.then === 'function') return value;\n\t}\n\tvar ns = Object.create(null);\n\t__webpack_require__.r(ns);\n\tvar def = {};\n\tleafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];\n\tfor(var current = mode & 2 && value; typeof current == 'object' && !~leafPrototypes.indexOf(current); current = getProto(current)) {\n\t\tObject.getOwnPropertyNames(current).forEach((key) => (def[key] = () => (value[key])));\n\t}\n\tdef['default'] = () => (value);\n\t__webpack_require__.d(ns, def);\n\treturn ns;\n};","// 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\t697: 0\n};\n\nvar installChunk = (data) => {\n\tvar {ids, modules, runtime} = data;\n\t// add \"modules\" to the modules object,\n\t// then flag all \"ids\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tfor(moduleId in modules) {\n\t\tif(__webpack_require__.o(modules, moduleId)) {\n\t\t\t__webpack_require__.m[moduleId] = modules[moduleId];\n\t\t}\n\t}\n\tif(runtime) runtime(__webpack_require__);\n\tfor(;i < ids.length; i++) {\n\t\tchunkId = ids[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[ids[i]] = 0;\n\t}\n\n}\n\n__webpack_require__.f.j = (chunkId, promises) => {\n\t\t// import() 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[1]);\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 = import(\"./\" + __webpack_require__.u(chunkId)).then(installChunk, (e) => {\n\t\t\t\t\t\tif(installedChunks[chunkId] !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\tthrow e;\n\t\t\t\t\t});\n\t\t\t\t\tvar promise = Promise.race([promise, new Promise((resolve) => (installedChunkData = installedChunks[chunkId] = [resolve]))])\n\t\t\t\t\tpromises.push(installedChunkData[1] = promise);\n\t\t\t\t} else installedChunks[chunkId] = 0;\n\t\t\t}\n\t\t}\n};\n\n// no external install chunk\n\n// no on chunks loaded","module.exports = require('./src/base-element.js')\n","module.exports = require('./src/get-element-tag')\n","const { createErrorReporter } = require('./error-reporting')\nconst { getContextId } = require('./get-context-id')\n\nlet _coreAnalyticsPromise = undefined\nfunction getCoreAnalytics() {\n if (!_coreAnalyticsPromise) {\n if ('coreAnalytics' in window) {\n _coreAnalyticsPromise = Promise.resolve(window['coreAnalytics'])\n } else {\n _coreAnalyticsPromise = import('@nrk/core-analytics' /* webpackChunkName: \"ca\" */).then(\n (m) => m.default\n )\n }\n }\n return _coreAnalyticsPromise\n}\n\nclass BaseElement extends HTMLElement {\n constructor() {\n super()\n this.sendError = this.sendError.bind(this)\n this.sendGaEvent = this.sendGaEvent.bind(this)\n }\n connectedCallback() {\n if (!this.name) throw Error('Name not provided')\n this.simpleErrorReport = createErrorReporter(\n this.name,\n this.errorTracking.enabled,\n this.errorTracking.url\n )\n this.simpleErrorReport.listenAndCatch()\n this.setupTracker()\n if (typeof this.render === 'function') this.render()\n }\n\n setupTracker() {\n this.coreAnalyticsTracker = new Promise((resolve) => {\n getCoreAnalytics().then((coreAnalytics) => {\n const tracker = coreAnalytics.create()\n\n tracker('initialize', {\n container: this,\n parentId: this.metadata.parentId || getContextId(window.location.href),\n ga: this.dataset.gaPropertyId,\n })\n\n tracker('context', {\n title: this.metadata.title,\n contentId: this.metadata.selfId,\n publishDate: this.metadata.published,\n })\n\n resolve(tracker)\n })\n })\n }\n\n async sendError(message) {\n this.simpleErrorReport.sendErrorReport({ message })\n }\n\n async sendGaEvent(event) {\n const tracker = await this.coreAnalyticsTracker\n tracker('event', {\n ga: {\n eventCategory: `dh-modul-${this.name}`,\n ...event,\n },\n })\n }\n\n get metadata() {\n return this.dataset.metadata ? JSON.parse(this.dataset.metadata) : {}\n }\n\n get preloadedState() {\n return this.dataset.preloadedState ? JSON.parse(this.dataset.preloadedState) : null\n }\n\n get errorTracking() {\n return {\n url: this.getAttribute('data-catch-server-url'),\n enabled: this.getAttribute('data-error-tracking-enabled') === 'true',\n }\n }\n}\n\nmodule.exports.BaseElement = BaseElement\n","const { SimpleErrorReport } = require('@nrk/dh-simple-error-report')\n\nfunction createErrorReporter(name, isErrorReportingEnabled, url) {\n return new SimpleErrorReport({\n name,\n url,\n dryRun: !isErrorReportingEnabled,\n })\n}\n\nmodule.exports.createErrorReporter = createErrorReporter\n","const POLOPOLY_ID_REGEX = /[1-9]{1,2}\\.\\d+/g\n\nfunction extractPolopolyIdFromString(str) {\n const matches = str.match(POLOPOLY_ID_REGEX)\n if (matches && matches.length) {\n return matches[0]\n }\n return null\n}\n\nfunction getContextId(url) {\n return extractPolopolyIdFromString(url)\n}\n\nmodule.exports.getContextId = getContextId\n","/**\n * Creates a valid custom element name that is versioned (major)\n */\nfunction getElementTag(name, version) {\n const formattedVersion = version ? `-v${version.split('.')[0]}` : ''\n return name + formattedVersion\n}\n\nmodule.exports.getElementTag = getElementTag\n","!function(e,n){\"object\"==typeof exports&&\"undefined\"!=typeof module?n(exports):\"function\"==typeof define&&define.amd?define([\"exports\"],n):n(e[\"simple-error-report\"]={})}(this,function(e){\"use strict\";var n=function(){function e(e,n){for(var r=0;r0}}]),e}(),t=Object.assign||function(e){for(var n=1;n0&&(a.line=o),s>0&&(a.column=s),n.error&&\"function\"==typeof e.parseStack?e.parseStack(n.error).then(function(n){e.sendErrorReport(t({},a,{stackTrace:n}))}):e.sendErrorReport(a)}),window.addEventListener(\"unhandledrejection\",function(n){e.sendErrorReport({message:\"Unhandled Promise Rejection: \"+n.reason})}))}},{key:\"sendErrorReport\",value:function(e){var n,r,t;this.dryRun?\"undefined\"!=typeof console&&console.log(\"Dry run: \"+JSON.stringify(e)):this.errorRegister.isInRegisterWithinRange(e.message,500)||(this.errorRegister.addErrorToRegister(e.message),n=this.url+\"/\"+this.name,r=e,(t=new XMLHttpRequest).open(\"POST\",n),t.setRequestHeader(\"Content-Type\",\"application/json\"),t.send(JSON.stringify(r)))}}]),e}();e.SimpleErrorReport=s,Object.defineProperty(e,\"__esModule\",{value:!0})});\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].call(module.exports, 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","// define getter functions for harmony exports\n__webpack_require__.d = (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 = (chunkId) => {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce((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 = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"\" + \"ca\" + \"-chunk-\" + \"376838a732d73e3f6b47\" + \".js\";\n};","// This function allow to reference async chunks\n__webpack_require__.miniCssF = (chunkId) => {\n\t// return url for filenames based on template\n\treturn undefined;\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (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_PUBLIC_PATH\";","export default function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}","import _defineProperty from '@babel/runtime/helpers/defineProperty';\n\n/* eslint-disable compat/compat */\nfunction getDefaultRoot() {\n /*\n Use document if supported\n IntersectionObserver will otherwise default to top level document,\n and IntersectionObserver will not work as expected in an iframe.\n https://github.com/w3c/IntersectionObserver/issues/372\n */\n\n /*\n Safari does not throw error on root: document, but does not trigger events as expected\n returning null for now until better feature detection is possible\n */\n return null;\n /*\n try {\n // eslint-disable-next-line no-new\n new IntersectionObserver(() => {}, { root: document })\n return document\n } catch (e) {\n return null\n }\n */\n}\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\nvar defaultConfig = {\n rootMargin: '0px 0px 0px 0px',\n threshold: [0, 0.5, 1],\n root: getDefaultRoot()\n};\nclass ElementIntersectionObserver {\n constructor(elements, onChange, config) {\n _defineProperty(this, \"intersections\", void 0);\n\n _defineProperty(this, \"elements\", void 0);\n\n this.elements = elements.slice(0);\n this.intersections = elements.map(target => ({\n target,\n isIntersecting: false,\n ratio: null\n }));\n this.intersectionObserver = new IntersectionObserver(entries => {\n var intersections = this.intersections.slice(0);\n entries.forEach(entry => {\n var idx = elements.indexOf(entry.target);\n intersections.splice(idx, 1, {\n target: entry.target,\n isIntersecting: entry.isIntersecting,\n ratio: entry.intersectionRatio\n });\n });\n this.intersections = intersections;\n onChange(this.intersections);\n }, _objectSpread(_objectSpread({}, defaultConfig), config));\n elements.forEach(elm => this.intersectionObserver.observe(elm));\n }\n\n disconnect() {\n // Unregister trigger elements\n this.elements.forEach(elm => this.intersectionObserver.unobserve(elm)); // Disconnect intersection observer\n\n this.intersectionObserver.disconnect();\n }\n\n}\n\nfunction toggleAttribute(el, name, boolValue) {\n if (!el) {\n return;\n }\n\n var nextValue;\n\n if (typeof boolValue !== 'undefined') {\n nextValue = !!boolValue;\n } else {\n nextValue = el.hasAttribute(name);\n }\n\n if (nextValue) {\n el.setAttribute(name, '');\n } else {\n el.removeAttribute(name);\n }\n}\nfunction setAttribute(el, name, nextValue) {\n if (!el) {\n return;\n }\n\n if (nextValue) {\n el.setAttribute(name, nextValue);\n } else {\n el.removeAttribute(name);\n }\n}\nvar closest = (() => {\n var proto = typeof window === 'undefined' ? {} : window.Element.prototype;\n var match = proto.matches || proto.msMatchesSelector || proto.webkitMatchesSelector;\n\n if (proto.closest) {\n return (el, css) => el.closest(css);\n } else {\n return (el, css) => {\n for (; el; el = el.parentElement) {\n if (match.call(el, css)) return el;\n }\n\n return null;\n };\n }\n})();\nfunction addStyle(nodeName, css) {\n var key = \"style-\".concat(nodeName.toLowerCase());\n var min = css.replace(/\\/\\*[^!][^*]*\\*\\//g, '').replace(/\\s*(^|[:;,{}]|$)\\s*/g, '$1');\n document.getElementById(key) || document.head.insertAdjacentHTML('afterbegin', \"\"));\n}\nfunction toArray(nodeList) {\n return [].slice.call(nodeList);\n}\nfunction dispatchEvent(element, name) {\n var detail = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var ignore = \"prevent_recursive_dispatch_maximum_callstack\".concat(name);\n var event;\n if (element[ignore]) return true; // We are already processing this event, so skip sending a new one\n else element[ignore] = true; // Add name to dispatching ignore\n\n if (typeof window.CustomEvent === 'function') {\n event = new window.CustomEvent(name, {\n bubbles: true,\n cancelable: true,\n detail\n });\n } else {\n event = document.createEvent('CustomEvent');\n event.initCustomEvent(name, true, true, detail);\n } // IE reports incorrect event.defaultPrevented\n // but correct return value on element.dispatchEvent\n\n\n var result = element.dispatchEvent(event);\n element[ignore] = null; // Remove name from dispatching ignore\n\n return result; // Follow W3C standard for return value\n}\n\nfunction easeOutQuint(t) {\n return 1 + --t * t * t * t * t;\n}\n\nclass VerticalScroll {\n constructor(container) {\n _defineProperty(this, \"container\", void 0);\n\n this.container = container;\n }\n\n cancel() {\n this._cancelled = true;\n }\n\n to(top) {\n var duration = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1000;\n var callback = arguments.length > 2 ? arguments[2] : undefined;\n var from = this.container.scrollTop;\n var distance = top - from;\n var startTime = null;\n\n var loop = currentTime => {\n if (this._cancelled) {\n return;\n }\n\n if (!startTime) {\n startTime = currentTime - 1;\n }\n\n var timeElapsed = currentTime - startTime;\n\n if (timeElapsed < duration) {\n this.container.scrollTop = from + distance * easeOutQuint(timeElapsed / duration);\n window.requestAnimationFrame(loop);\n } else {\n this.container.scrollTop = top;\n callback && callback();\n }\n };\n\n window.requestAnimationFrame(loop);\n }\n\n}\nclass HorizontalScroll {\n constructor(container) {\n _defineProperty(this, \"container\", void 0);\n\n this.container = container;\n }\n\n cancel() {\n this._cancelled = true;\n }\n\n to(left) {\n var duration = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1000;\n var callback = arguments.length > 2 ? arguments[2] : undefined;\n var from = this.container.scrollLeft;\n var distance = left - from;\n var startTime = null;\n\n var loop = currentTime => {\n if (this._cancelled) {\n return;\n }\n\n if (!startTime) {\n startTime = currentTime - 1;\n }\n\n var timeElapsed = currentTime - startTime;\n\n if (timeElapsed < duration) {\n this.container.scrollLeft = from + distance * easeOutQuint(timeElapsed / duration);\n window.requestAnimationFrame(loop);\n } else {\n this.container.scrollLeft = left;\n callback && callback();\n }\n };\n\n window.requestAnimationFrame(loop);\n }\n\n}\n\nfunction testReducedMotion() {\n if (typeof window !== 'undefined') {\n return !!window.matchMedia && window.matchMedia('(prefers-reduced-motion)').matches;\n }\n\n return false;\n}\n\nvar MAX_SAFE_INTEGER = 9007199254740991;\nfunction withinRange(current) {\n var start = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n var stop = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : MAX_SAFE_INTEGER;\n return current >= start && current <= stop;\n}\nfunction withinStops(currentTime, stops, targetStop) {\n var nrOfStops = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 1;\n var uniqueStops = stops.filter(unique);\n var targetTime = stops[targetStop];\n var prevTime = uniqueStops[uniqueStops.indexOf(targetTime) - nrOfStops];\n var nextTime = uniqueStops[uniqueStops.indexOf(targetTime) + nrOfStops];\n return withinRange(currentTime, prevTime, nextTime);\n}\n\nfunction unique(value, index, self) {\n return self.indexOf(value) === index;\n}\n\n/*\n * 'loading=\"lazy\"' is defined in terms of IntersectionObserver and the initial root.\n * As a result images with 'loading=\"lazy\"' inside a scroll container will not load\n * until they at least have one pixel visible in the viewport.\n *\n * This will hopefully fixed in a future version of the spec:\n * https://github.com/w3c/IntersectionObserver/issues/431\n *\n * scroll-container-lazy-load observes images and a scroll container.\n * Once images are close to intersecting it will change 'loading=\"lazy\"' to 'loading=\"eager\"'.\n * */\nfunction connectScrollContainerLazyLoad(container, images) {\n var containerIntersecting = false; // eslint-disable-next-line compat/compat\n\n var containerObserver = new IntersectionObserver(entries => {\n containerIntersecting = entries === null || entries === void 0 ? void 0 : entries[0].isIntersecting;\n }, {\n root: getDefaultRoot(),\n threshold: [0.0]\n });\n containerObserver.observe(container); // eslint-disable-next-line compat/compat\n\n var imageObserver = new IntersectionObserver(entries => {\n if (!containerIntersecting) {\n return;\n }\n\n for (var entry of entries) {\n if (entry.isIntersecting) {\n var image = entry.target;\n\n if (image.loading === 'lazy') {\n image.loading = 'eager';\n }\n\n imageObserver.unobserve(entry.target);\n }\n }\n }, {\n root: container,\n rootMargin: '300px',\n threshold: 0.0\n });\n\n for (var image of images) {\n imageObserver.observe(image);\n }\n\n return () => {\n containerObserver.disconnect();\n imageObserver.disconnect();\n };\n}\n\nfunction debounce(fn, delay) {\n var timeout;\n return function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n clearTimeout(timeout);\n setTimeout(() => fn(...args), delay);\n };\n}\n\nexport { ElementIntersectionObserver, HorizontalScroll, VerticalScroll, addStyle, closest, connectScrollContainerLazyLoad, debounce, dispatchEvent, setAttribute, testReducedMotion, toArray, toggleAttribute, withinRange, withinStops };\n//# sourceMappingURL=dh-basis-common.esm.js.map\n","import _defineProperty from '@babel/runtime/helpers/defineProperty';\nimport { dispatchEvent, testReducedMotion, toArray, toggleAttribute } from '@nrk/dh-basis-common';\n\nvar STATE_ATTR = 'data-state';\nvar VIEWPORT_POSITION_ATTR = 'data-viewport-position';\nvar DISABLE_FORCED_ATTRIBUTES_ATTR = 'disable-forced-attributes';\nvar IS_PAUSED = 'is-paused';\nvar AUTOPLAY_BLOCKED = 'autoplay-blocked';\nvar READY_STATE = {\n HAVE_NOTHING: 0,\n HAVE_METADATA: 1,\n HAVE_CURRENT_DATA: 2,\n HAVE_FUTURE_DATA: 3,\n HAVE_ENOUGH_DATA: 4 // Can play through\n\n};\n\nvar isVisible = child => !!child.offsetParent;\n\nclass LevendeStillbilde extends HTMLElement {\n constructor() {\n super(...arguments);\n\n _defineProperty(this, \"_disconnecting\", false);\n\n _defineProperty(this, \"_visibleVideoElement\", void 0);\n\n _defineProperty(this, \"_handlePlayChange\", e => {\n if (e.type === 'play') {\n dispatchEvent(this, 'dh-basis-autoplay-succeeded');\n }\n\n if (e.target === this._visibleVideoElement) {\n this.isPaused = this._visibleVideoElement.paused;\n }\n });\n\n _defineProperty(this, \"_updatePlayState\", () => {\n if (!this._visibleVideoElement) {\n return;\n }\n\n if (this._shouldPlay()) {\n this._playVideo();\n } else {\n this._pauseVideo();\n }\n });\n\n _defineProperty(this, \"_handleResize\", () => {\n this._updateVisibleVideoElement();\n });\n }\n\n static get observedAttributes() {\n return [STATE_ATTR, DISABLE_FORCED_ATTRIBUTES_ATTR, VIEWPORT_POSITION_ATTR];\n }\n\n connectedCallback() {\n this._setVideoAttributes();\n\n this._setEventListeners();\n\n this._updateVisibleVideoElement();\n }\n\n disconnectedCallback() {\n this._disconnecting = true;\n\n this._removeEventListeners();\n }\n\n attributeChangedCallback(name, prevValue, newValue) {\n var valueChanged = prevValue !== newValue;\n\n if (name === STATE_ATTR || name === VIEWPORT_POSITION_ATTR) {\n if (valueChanged) {\n this._updateVisibleVideoElement();\n\n this._updatePlayState();\n\n if (name === VIEWPORT_POSITION_ATTR && newValue === 'IN-VIEWPORT') {\n this._preload();\n }\n }\n }\n }\n\n _setEventListeners() {\n window.addEventListener('resize', this._handleResize);\n this.videoElements.forEach(el => {\n el.addEventListener('pause', this._handlePlayChange);\n el.addEventListener('play', this._handlePlayChange);\n el.addEventListener('canplaythrough', this._updatePlayState);\n });\n }\n\n _removeEventListeners() {\n window.removeEventListener('resize', this._handleResize);\n this.videoElements.forEach(el => {\n el.removeEventListener('pause', this._handlePlayChange);\n el.removeEventListener('play', this._handlePlayChange);\n el.removeEventListener('canplaythrough', this._updatePlayState);\n });\n }\n\n _updateVisibleVideoElement() {\n requestAnimationFrame(() => {\n var nextVisibleVideo = this.videoElements.find(isVisible);\n\n if (nextVisibleVideo !== this._visibleVideoElement) {\n // Pause previous video\n this._pauseVideo();\n\n this._visibleVideoElement = nextVisibleVideo;\n\n if (this._shouldPreload()) {\n this._preload();\n }\n\n this._updatePlayState();\n }\n });\n }\n\n _setVideoAttributes() {\n if (!this.disableForcedAttributes) {\n this.videoElements.forEach(el => {\n el.setAttribute('playsInline', '');\n el.setAttribute('loop', '');\n el.setAttribute('disableRemotePlayback', '');\n el.setAttribute('x-webkit-airplay', 'deny');\n });\n }\n }\n\n _shouldPlay() {\n var _this$_visibleVideoEl;\n\n /*\n * Safari 14-15.5 hides poster on play, leaving a transparent element until enough data is available to play through.\n * We have to wait for the canplaythrough event and readystate = READY_STATE.HAVE_ENOUGH_DATA before calling `.play()`\n * */\n return ((_this$_visibleVideoEl = this._visibleVideoElement) === null || _this$_visibleVideoEl === void 0 ? void 0 : _this$_visibleVideoEl.readyState) >= READY_STATE.HAVE_ENOUGH_DATA && this.state === 'ACTIVE' && this.viewportPosition === 'IN-VIEWPORT';\n }\n\n _shouldPreload() {\n return this.viewportPosition === 'IN-VIEWPORT';\n }\n\n _preload() {\n var _this$_visibleVideoEl2;\n\n if (((_this$_visibleVideoEl2 = this._visibleVideoElement) === null || _this$_visibleVideoEl2 === void 0 ? void 0 : _this$_visibleVideoEl2.readyState) < READY_STATE.HAVE_ENOUGH_DATA) {\n var _this$_visibleVideoEl3;\n\n (_this$_visibleVideoEl3 = this._visibleVideoElement) === null || _this$_visibleVideoEl3 === void 0 ? void 0 : _this$_visibleVideoEl3.load();\n }\n }\n\n _playVideo() {\n dispatchEvent(this, 'dh-basis-autoplay-attempted');\n var reducedMotion = testReducedMotion();\n var videoElement = this._visibleVideoElement;\n\n if (videoElement.paused && !reducedMotion && !this.autoplayBlocked) {\n var playPromise = videoElement.play() || Promise.resolve();\n playPromise.catch(e => {\n console.error(e);\n this.autoplayBlocked = true;\n });\n }\n }\n\n _pauseVideo() {\n var videoElement = this._visibleVideoElement;\n\n if (videoElement && !videoElement.paused) {\n videoElement.pause();\n }\n }\n\n get videoElements() {\n return toArray(this.querySelectorAll('video'));\n }\n\n get disableForcedAttributes() {\n return this.hasAttribute(DISABLE_FORCED_ATTRIBUTES_ATTR);\n }\n\n get state() {\n return this.getAttribute(STATE_ATTR);\n }\n\n set state(val) {\n this.setAttribute(STATE_ATTR, val);\n }\n\n get isPaused() {\n return this.getAttribute(IS_PAUSED);\n }\n\n set isPaused(val) {\n if (val) {\n this.setAttribute(IS_PAUSED, '');\n } else {\n this.removeAttribute(IS_PAUSED);\n }\n }\n\n get autoplayBlocked() {\n return this.hasAttribute(AUTOPLAY_BLOCKED) || false;\n }\n\n set autoplayBlocked(val) {\n toggleAttribute(this, AUTOPLAY_BLOCKED, val);\n }\n\n get viewportPosition() {\n return this.getAttribute(VIEWPORT_POSITION_ATTR);\n }\n\n set viewportPosition(val) {\n this.setAttribute(VIEWPORT_POSITION_ATTR, val);\n }\n\n}\n\nexport { LevendeStillbilde as default };\n//# sourceMappingURL=dh-basis-levende-stillbilde.esm.js.map\n","import { BaseElement } from '@nrk/dh-server-libs/base-element'\nimport { getElementTag } from '@nrk/dh-server-libs/get-element-tag'\n\nimport levendeStillbilde from '@nrk/dh-basis-levende-stillbilde'\nimport { ElementIntersectionObserver } from '@nrk/dh-basis-common'\nimport './components/VideoLoop.module.css'\nimport './components/Byline.module.css'\nimport './client.module.css'\n\nconst tag = getElementTag(__APP_NAME__, __APP_VERSION__)\n\nfunction safeDefine(elementName, constructor) {\n if (typeof customElements.get(elementName) === 'undefined') {\n customElements.define(elementName, constructor)\n }\n}\n\nconst VIEWPORT_POSITION_ATTR = 'data-viewport-position'\n\nclass AppElement extends BaseElement {\n name = tag\n #logStatus = {\n playAttempted: false,\n playSucceeded: false,\n }\n\n connectedCallback() {\n super.connectedCallback()\n this.addEventListener('dh-basis-autoplay-attempted', this.#logPlayAttempted)\n this.addEventListener('dh-basis-autoplay-succeeded', this.#logPlaySucceeded)\n }\n\n disconnectedCallback() {\n super.disconnectedCallback?.()\n this.removeEventListener('dh-basis-autoplay-attempted', this.#logPlayAttempted)\n this.removeEventListener('dh-basis-autoplay-succeeded', this.#logPlaySucceeded)\n }\n\n render() {\n try {\n safeDefine('dh-lvs-basis-levende-stillbilde', levendeStillbilde)\n this.sendGaEvent({ eventAction: `MOUNT:${tag}` })\n\n const videoWrapperElement = this.querySelector('.dh-video-wrapper')\n\n // eslint-disable-next-line no-unused-vars\n const elementObserver = new ElementIntersectionObserver(\n [videoWrapperElement],\n (intersections) => {\n const element = intersections[0]\n const elementViewportPosition = videoWrapperElement.getAttribute(VIEWPORT_POSITION_ATTR)\n if (element.isIntersecting && elementViewportPosition === 'OUT-OF-VIEWPORT') {\n videoWrapperElement.setAttribute(VIEWPORT_POSITION_ATTR, 'IN-VIEWPORT')\n }\n if (!element.isIntersecting && elementViewportPosition === 'IN-VIEWPORT') {\n videoWrapperElement.setAttribute(VIEWPORT_POSITION_ATTR, 'OUT-OF-VIEWPORT')\n }\n }\n )\n } catch (err) {\n // fail silently\n console.error(`Error while rendering ${tag}`, err)\n }\n }\n\n #logPlayAttempted = () => {\n if (!this.#logStatus.playAttempted) {\n this.#logStatus.playAttempted = true\n this.sendGaEvent({ eventAction: `PLAY_ATTEMPTED` })\n }\n }\n\n #logPlaySucceeded = () => {\n if (!this.#logStatus.playSucceeded) {\n this.#logStatus.playSucceeded = true\n this.sendGaEvent({ eventAction: `PLAY_SUCCEEDED` })\n }\n }\n}\n\nif (!customElements.get(tag)) {\n customElements.define(tag, AppElement)\n}\n"],"names":["leafPrototypes","getProto","installedChunks","installChunk","module","exports","createErrorReporter","getContextId","_coreAnalyticsPromise","BaseElement","HTMLElement","constructor","super","this","sendError","bind","sendGaEvent","connectedCallback","name","Error","simpleErrorReport","errorTracking","enabled","url","listenAndCatch","setupTracker","render","coreAnalyticsTracker","Promise","resolve","window","then","m","default","coreAnalytics","tracker","create","container","parentId","metadata","location","href","ga","dataset","gaPropertyId","title","contentId","selfId","publishDate","published","async","message","sendErrorReport","event","eventCategory","JSON","parse","preloadedState","getAttribute","SimpleErrorReport","isErrorReportingEnabled","dryRun","POLOPOLY_ID_REGEX","str","matches","match","length","extractPolopolyIdFromString","getElementTag","version","split","e","n","r","t","enumerable","configurable","writable","Object","defineProperty","key","prototype","TypeError","register","value","push","time","Date","filter","assign","arguments","hasOwnProperty","call","i","o","s","a","u","parseStack","errorRegister","addEventListener","filename","lineno","colno","line","column","error","stackTrace","reason","console","log","stringify","isInRegisterWithinRange","addErrorToRegister","XMLHttpRequest","open","setRequestHeader","send","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","__webpack_modules__","getPrototypeOf","obj","mode","__esModule","ns","def","current","indexOf","getOwnPropertyNames","forEach","d","definition","get","f","chunkId","all","keys","reduce","promises","miniCssF","prop","Symbol","toStringTag","p","data","ids","modules","runtime","j","installedChunkData","promise","import","race","ownKeys","object","enumerableOnly","getOwnPropertySymbols","symbols","sym","getOwnPropertyDescriptor","apply","_objectSpread","target","source","getOwnPropertyDescriptors","defineProperties","defaultConfig","rootMargin","threshold","root","ElementIntersectionObserver","elements","onChange","config","slice","intersections","map","isIntersecting","ratio","intersectionObserver","IntersectionObserver","entries","entry","idx","splice","intersectionRatio","elm","observe","disconnect","unobserve","proto","Element","msMatchesSelector","webkitMatchesSelector","closest","dispatchEvent","element","detail","ignore","concat","CustomEvent","bubbles","cancelable","document","createEvent","initCustomEvent","result","STATE_ATTR","VIEWPORT_POSITION_ATTR","DISABLE_FORCED_ATTRIBUTES_ATTR","IS_PAUSED","AUTOPLAY_BLOCKED","READY_STATE","isVisible","child","offsetParent","LevendeStillbilde","type","_visibleVideoElement","isPaused","paused","_shouldPlay","_playVideo","_pauseVideo","_updateVisibleVideoElement","observedAttributes","_setVideoAttributes","_setEventListeners","disconnectedCallback","_disconnecting","_removeEventListeners","attributeChangedCallback","prevValue","newValue","_updatePlayState","_preload","_handleResize","videoElements","el","_handlePlayChange","removeEventListener","requestAnimationFrame","nextVisibleVideo","find","_shouldPreload","disableForcedAttributes","setAttribute","_this$_visibleVideoEl","readyState","state","viewportPosition","_this$_visibleVideoEl2","_this$_visibleVideoEl3","load","reducedMotion","matchMedia","videoElement","autoplayBlocked","play","catch","pause","nodeList","querySelectorAll","hasAttribute","val","removeAttribute","boolValue","tag","__APP_NAME__","__APP_VERSION__","AppElement","playAttempted","playSucceeded","eventAction","elementName","levendeStillbilde","customElements","define","videoWrapperElement","querySelector","elementViewportPosition","err"],"sourceRoot":""}