{"version":3,"file":"main-f98a2a632c7a2fc5a5ac.esm.js","mappings":"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","sources":["webpack://dh-forklaringsscroll/webpack/runtime/create fake namespace object","webpack://dh-forklaringsscroll/webpack/runtime/css loading","webpack://dh-forklaringsscroll/webpack/runtime/import chunk loading","webpack://dh-forklaringsscroll/./node_modules/@nrk/dh-basis-common/dh-basis-common.esm.js","webpack://dh-forklaringsscroll/./node_modules/@nrk/dh-server-libs/base-element.js","webpack://dh-forklaringsscroll/./node_modules/@nrk/dh-server-libs/get-element-tag.js","webpack://dh-forklaringsscroll/./node_modules/@nrk/dh-server-libs/src/base-element.js","webpack://dh-forklaringsscroll/./node_modules/@nrk/dh-server-libs/src/error-reporting.js","webpack://dh-forklaringsscroll/./node_modules/@nrk/dh-server-libs/src/get-context-id.js","webpack://dh-forklaringsscroll/./node_modules/@nrk/dh-server-libs/src/get-element-tag.js","webpack://dh-forklaringsscroll/./node_modules/@nrk/dh-simple-error-report/dist/simple-error-report.min.js","webpack://dh-forklaringsscroll/./node_modules/@babel/runtime/helpers/esm/defineProperty.js","webpack://dh-forklaringsscroll/webpack/bootstrap","webpack://dh-forklaringsscroll/webpack/runtime/compat get default export","webpack://dh-forklaringsscroll/webpack/runtime/define property getters","webpack://dh-forklaringsscroll/webpack/runtime/ensure chunk","webpack://dh-forklaringsscroll/webpack/runtime/get javascript chunk filename","webpack://dh-forklaringsscroll/webpack/runtime/get mini-css chunk filename","webpack://dh-forklaringsscroll/webpack/runtime/hasOwnProperty shorthand","webpack://dh-forklaringsscroll/webpack/runtime/make namespace object","webpack://dh-forklaringsscroll/webpack/runtime/node module decorator","webpack://dh-forklaringsscroll/webpack/runtime/publicPath","webpack://dh-forklaringsscroll/./node_modules/@nrk/dh-vh/dist/index.mjs","webpack://dh-forklaringsscroll/./src/polyfills.js","webpack://dh-forklaringsscroll/./node_modules/@babel/runtime/helpers/esm/classExtractFieldDescriptor.js","webpack://dh-forklaringsscroll/./node_modules/@babel/runtime/helpers/esm/classPrivateFieldGet.js","webpack://dh-forklaringsscroll/./node_modules/@babel/runtime/helpers/esm/classApplyDescriptorGet.js","webpack://dh-forklaringsscroll/./node_modules/@babel/runtime/helpers/esm/classPrivateFieldSet.js","webpack://dh-forklaringsscroll/./node_modules/@babel/runtime/helpers/esm/classApplyDescriptorSet.js","webpack://dh-forklaringsscroll/./node_modules/@nrk/dh-basis-mixins/dh-basis-mixins.esm.js","webpack://dh-forklaringsscroll/./node_modules/@nrk/dh-basis-scrollhistorie/dh-basis-scrollhistorie.esm.js","webpack://dh-forklaringsscroll/./src/components/forklaringsscroll.module.css?4060","webpack://dh-forklaringsscroll/./src/components/forklaringsscroll.js","webpack://dh-forklaringsscroll/./node_modules/@nrk/dh-basis-stegvis-video/dh-basis-stegvis-video.esm.js","webpack://dh-forklaringsscroll/./node_modules/@nrk/dh-basis-levende-stillbilde/dh-basis-levende-stillbilde.esm.js","webpack://dh-forklaringsscroll/./src/components/media/spesialmodul.js","webpack://dh-forklaringsscroll/./src/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};","var createStylesheet = (chunkId, fullhref, resolve, reject) => {\n\tvar linkTag = document.createElement(\"link\");\n\n\tlinkTag.rel = \"stylesheet\";\n\tlinkTag.type = \"text/css\";\n\tvar onLinkComplete = (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\tlinkTag.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\tdocument.head.appendChild(linkTag);\n\treturn linkTag;\n};\nvar findStylesheet = (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 = (chunkId) => {\n\treturn new Promise((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, resolve, reject);\n\t});\n}\n// object to store loaded CSS chunks\nvar installedCssChunks = {\n\t179: 0\n};\n\n__webpack_require__.f.miniCss = (chunkId, promises) => {\n\tvar cssChunks = {\"61\":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(() => {\n\t\t\tinstalledCssChunks[chunkId] = 0;\n\t\t}, (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\t179: 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(61 != chunkId) {\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","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","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","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}","// 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\tid: moduleId,\n\t\tloaded: false,\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// Flag the module as loaded\n\tmodule.loaded = true;\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","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\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 \"\" + ({\"371\":\"dh-preview-iframe\",\"537\":\"ca\",\"577\":\"dh-stegvis-lottie\",\"687\":\"dh-kart\"}[chunkId] || chunkId) + \"-chunk-\" + {\"61\":\"46ae12acbc4bbc09c4c1\",\"371\":\"17911c58353f761cc39f\",\"537\":\"a91f0efab49efec3009c\",\"577\":\"7f91e2eb0f901d509bb0\",\"687\":\"df2da2a53bcfe713683e\"}[chunkId] + \".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 \"\" + chunkId + \"-\" + \"f1ac474e51b3d2fcf684\" + \".css\";\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__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.p = \"https://static.nrk.no/dh/module/forklaringsscroll/static/\";","function t(){var t=navigator.userAgent||navigator.vendor||window.opera,e=t.toLowerCase();if(!t)return!1;var i,n=/android/.test(e),o=!!navigator.platform&&/iPad|iPhone|iPod/.test(navigator.platform);return n?i=/fban|fbav|instagram|snapchat|nrk|firefox|opera|klar\\//:o&&(i=/fban|fbav|instagram|snapchat|nrk|firefox|opera|chrome|fxios|crios/),i&&i.test(e)}var e={ssrOrientation:null,mode:\"max\"},i=function(t){var i,n,o;void 0===t&&(t={}),this.destroyed=!1,this.mounted=!1,this.listeners=[],this.value={portrait:0,landscape:0},this.opts=Object.assign({},e,t),this.orientation=this.getOrientation(),this.update(),this.handleUpdate=this.handleUpdate.bind(this),this.throttledUpdate=(i=this.handleUpdate,function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];var r=this;o?(clearTimeout(n),n=setTimeout(function(){Date.now()-o>=100&&(i.apply(r,t),o=Date.now())},100-(Date.now()-o))):(i.apply(r,t),o=Date.now())})};function n(){var t=new i;return t.listen(function(t){try{document.getElementsByTagName(\"html\")[0].style.setProperty(\"--dh-vh\",t+\"px\")}catch(t){console.error(t)}}),t}function o(){return\"Dh Vh\"}i.prototype.mount=function(){\"undefined\"!=typeof window&&(window.addEventListener(\"resize\",this.throttledUpdate),window.addEventListener(\"orientationchange\",this.handleUpdate)),this.mounted=!0},i.prototype.destroy=function(){\"undefined\"!=typeof window&&(window.removeEventListener(\"resize\",this.throttledUpdate),window.removeEventListener(\"orientationchange\",this.handleUpdate)),this.mounted=!1},i.prototype.getOrientation=function(){return\"undefined\"!=typeof window?window.innerHeight>window.innerWidth?\"portrait\":\"landscape\":this.opts.ssrOrientation},i.prototype.handleUpdate=function(){this.update()},i.prototype.listen=function(t){var e=this;return this.listeners.push(t),!1===this.mounted&&this.mount(),function(){e.listeners=e.listeners.filter(function(e){return e!==t})}},i.prototype.emit=function(){var t=this,e=this.getVh(),i=this.getHeight();this.listeners.forEach(function(n){return n(e,i,t.orientation)})},i.prototype.getHeight=function(){return this.orientation?this.value[this.orientation]:0},i.prototype.getVh=function(){return this.orientation?this.value[this.orientation]/100:0},i.prototype.update=function(){var t=this.orientation;if(this.orientation=this.getOrientation(),this.orientation){var e=this.value[this.orientation],i=window.innerHeight;t!==this.orientation?(i>e&&(this.value[this.orientation]=i),this.emit()):i>e&&(this.value[this.orientation]=i,this.emit())}};export{o as test,t as checkHasVhBug,n as fixVhBug};\n//# sourceMappingURL=index.mjs.map\n","import { checkHasVhBug, fixVhBug } from '@nrk/dh-vh'\n\nif (checkHasVhBug()) {\n fixVhBug()\n}\n","export default function _classExtractFieldDescriptor(receiver, privateMap, action) {\n if (!privateMap.has(receiver)) {\n throw new TypeError(\"attempted to \" + action + \" private field on non-instance\");\n }\n\n return privateMap.get(receiver);\n}","import classApplyDescriptorGet from \"./classApplyDescriptorGet.js\";\nimport classExtractFieldDescriptor from \"./classExtractFieldDescriptor.js\";\nexport default function _classPrivateFieldGet(receiver, privateMap) {\n var descriptor = classExtractFieldDescriptor(receiver, privateMap, \"get\");\n return classApplyDescriptorGet(receiver, descriptor);\n}","export default function _classApplyDescriptorGet(receiver, descriptor) {\n if (descriptor.get) {\n return descriptor.get.call(receiver);\n }\n\n return descriptor.value;\n}","import classApplyDescriptorSet from \"./classApplyDescriptorSet.js\";\nimport classExtractFieldDescriptor from \"./classExtractFieldDescriptor.js\";\nexport default function _classPrivateFieldSet(receiver, privateMap, value) {\n var descriptor = classExtractFieldDescriptor(receiver, privateMap, \"set\");\n classApplyDescriptorSet(receiver, descriptor, value);\n return value;\n}","export default function _classApplyDescriptorSet(receiver, descriptor, value) {\n if (descriptor.set) {\n descriptor.set.call(receiver, value);\n } else {\n if (!descriptor.writable) {\n throw new TypeError(\"attempted to set read only private field\");\n }\n\n descriptor.value = value;\n }\n}","import _classPrivateFieldGet from '@babel/runtime/helpers/classPrivateFieldGet';\nimport _classPrivateFieldSet from '@babel/runtime/helpers/classPrivateFieldSet';\nimport _defineProperty from '@babel/runtime/helpers/defineProperty';\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; }\n\nvar dedupeId = 0;\n/**\n * @template {HTMLElement} BaseClass\n * @param {(base: BaseClass) => BaseClass} mixin\n */\n\nfunction dedupeMixin(mixin) {\n var mixinId = dedupeId++;\n return base => {\n var _base$_appliedMixins, _base$_appliedMixins2;\n\n if ((_base$_appliedMixins = base._appliedMixins) !== null && _base$_appliedMixins !== void 0 && _base$_appliedMixins[mixinId]) {\n return base;\n }\n\n var extended = mixin(base);\n extended._appliedMixins = _objectSpread({}, (_base$_appliedMixins2 = base._appliedMixins) !== null && _base$_appliedMixins2 !== void 0 ? _base$_appliedMixins2 : {});\n extended._appliedMixins[mixinId] = true;\n return extended;\n };\n}\n\nfunction _classPrivateMethodGet$1(receiver, privateSet, fn) { if (!privateSet.has(receiver)) { throw new TypeError(\"attempted to get private field on non-instance\"); } return fn; }\nvar VIEWPORT_POSITION_ATTR = 'viewport-position';\nvar VIEWPORT_POSITIONS = {\n aboveViewport: 'ABOVE-VIEWPORT',\n inViewport: 'IN-VIEWPORT',\n belowViewport: 'BELOW-VIEWPORT'\n};\n/**\n * Check if element represents the browser viewport\n *\n * @param viewportContainer Element to check\n * @returns {boolean} True if element represents the browser viewport and not a scroll container\n */\n\nfunction isViewport(viewportContainer) {\n return (// eslint-disable-next-line compat/compat\n viewportContainer === document.scrollingElement || viewportContainer === document.documentElement\n );\n}\n/**\n * Custom Element mixin.\n *\n * Updates the `viewport-position` attribute according to whether the element is in the viewport or not.\n * Possible values for the attribute is `IN-VIEWPORT`, `ABOVE-VIEWPORT` and `BELOW-VIEWPORT`\n *\n * @template {HTMLElement} BaseClass\n * @param {BaseClass} Base\n */\n\n\nfunction _ViewportPositionMixin(Base) {\n var _observer, _createIntersectionObserver, _disconnectIntersectionObserver, _handleIntersectionChange;\n\n return _observer = /*#__PURE__*/new WeakMap(), _createIntersectionObserver = /*#__PURE__*/new WeakSet(), _disconnectIntersectionObserver = /*#__PURE__*/new WeakSet(), _handleIntersectionChange = /*#__PURE__*/new WeakMap(), class extends Base {\n constructor() {\n super(...arguments);\n\n _disconnectIntersectionObserver.add(this);\n\n _createIntersectionObserver.add(this);\n\n _observer.set(this, {\n writable: true,\n value: void 0\n });\n\n _handleIntersectionChange.set(this, {\n writable: true,\n value: _ref => {\n var [intersection] = _ref;\n\n if (intersection.isIntersecting) {\n if (this.viewportPosition !== VIEWPORT_POSITIONS.inViewport) {\n this.viewportPosition = VIEWPORT_POSITIONS.inViewport;\n }\n } else {\n if (!this.viewportPosition || this.viewportPosition === VIEWPORT_POSITIONS.inViewport) {\n var bottom = this.getBoundingClientRect().bottom;\n var isAbove = bottom <= 0;\n this.viewportPosition = isAbove ? VIEWPORT_POSITIONS.aboveViewport : VIEWPORT_POSITIONS.belowViewport;\n }\n }\n }\n });\n }\n\n static get observedAttributes() {\n var _super$observedAttrib;\n\n return [...((_super$observedAttrib = super.observedAttributes) !== null && _super$observedAttrib !== void 0 ? _super$observedAttrib : []), VIEWPORT_POSITION_ATTR];\n }\n\n connectedCallback() {\n var _super$connectedCallb;\n\n (_super$connectedCallb = super.connectedCallback) === null || _super$connectedCallb === void 0 ? void 0 : _super$connectedCallb.call(this);\n\n _classPrivateMethodGet$1(this, _createIntersectionObserver, _createIntersectionObserver2).call(this);\n }\n\n disconnectedCallback() {\n var _super$disconnectedCa;\n\n (_super$disconnectedCa = super.disconnectedCallback) === null || _super$disconnectedCa === void 0 ? void 0 : _super$disconnectedCa.call(this);\n\n _classPrivateMethodGet$1(this, _disconnectIntersectionObserver, _disconnectIntersectionObserver2).call(this);\n }\n\n /**\n * Get the viewport or the scroll container element that is used as a replacement for the viewport.\n *\n * @returns {Element|HTMLElement} viewportContainer\n */\n get viewportContainer() {\n var _document$scrollingEl;\n\n /*\n * Using root/document.scrollingElement to represent the viewport,\n * as this presents a unified API for scrolling for both the viewport and scrolling elements.\n * (scrollTop, scrollLeft, scrollTo)\n *\n * Some API's such as IntersectionObserver use different values for the viewport\n * (such as null and document), so take care.\n */\n // eslint-disable-next-line compat/compat\n return (_document$scrollingEl = document.scrollingElement) !== null && _document$scrollingEl !== void 0 ? _document$scrollingEl : document.documentElement;\n }\n /**\n * Get the intersection root\n * @returns {null|Element|HTMLElement}\n */\n\n\n get viewportIntersectionRoot() {\n var viewportContainer = this.viewportContainer;\n return isViewport(viewportContainer) ? null : viewportContainer;\n }\n /**\n * Position of this element relative to the viewport.\n *\n * @type {'ABOVE-VIEWPORT' | 'IN-VIEWPORT' | 'BELOW-VIEWPORT' }\n */\n\n\n set viewportPosition(value) {\n var currentValue = this.getAttribute(VIEWPORT_POSITION_ATTR);\n\n if (value !== currentValue) {\n this.setAttribute(VIEWPORT_POSITION_ATTR, value);\n }\n }\n /**\n * Position of this element relative to the viewport.\n *\n * @type {'ABOVE-VIEWPORT' | 'IN-VIEWPORT' | 'BELOW-VIEWPORT' }\n */\n\n\n get viewportPosition() {\n return this.getAttribute(VIEWPORT_POSITION_ATTR);\n }\n\n };\n\n function _createIntersectionObserver2() {\n // eslint-disable-next-line compat/compat\n _classPrivateFieldSet(this, _observer, new IntersectionObserver(_classPrivateFieldGet(this, _handleIntersectionChange), {\n threshold: [0, 0.1, 0.5, 0.9, 1],\n // Intersection observer uses null or document for regular viewport\n root: this.viewportIntersectionRoot,\n // Scroll snapping elements trigger intersection when they are perfectly aligned with the screen,\n // both above and below the viewport. Using -1px as root margin to prevent intersection.\n rootMargin: '-1px 0px -1px 0px'\n }));\n\n _classPrivateFieldGet(this, _observer).observe(this);\n }\n\n function _disconnectIntersectionObserver2() {\n var _classPrivateFieldGet2, _classPrivateFieldGet3;\n\n (_classPrivateFieldGet2 = _classPrivateFieldGet(this, _observer)) === null || _classPrivateFieldGet2 === void 0 ? void 0 : _classPrivateFieldGet2.unobserve(this);\n (_classPrivateFieldGet3 = _classPrivateFieldGet(this, _observer)) === null || _classPrivateFieldGet3 === void 0 ? void 0 : _classPrivateFieldGet3.disconnect();\n }\n}\n/**\n * @template {HTMLElement} BaseClass\n * @param {BaseClass} Base */\n\n\nvar ViewportPositionMixin = dedupeMixin(_ViewportPositionMixin);\n\nfunction _classPrivateMethodGet(receiver, privateSet, fn) { if (!privateSet.has(receiver)) { throw new TypeError(\"attempted to get private field on non-instance\"); } return fn; }\n\nfunction _classStaticPrivateFieldSpecGet(receiver, classConstructor, descriptor) { _classCheckPrivateStaticAccess(receiver, classConstructor); _classCheckPrivateStaticFieldDescriptor(descriptor, \"get\"); return _classApplyDescriptorGet(receiver, descriptor); }\n\nfunction _classApplyDescriptorGet(receiver, descriptor) { if (descriptor.get) { return descriptor.get.call(receiver); } return descriptor.value; }\n\nfunction _classStaticPrivateFieldSpecSet(receiver, classConstructor, descriptor, value) { _classCheckPrivateStaticAccess(receiver, classConstructor); _classCheckPrivateStaticFieldDescriptor(descriptor, \"set\"); _classApplyDescriptorSet(receiver, descriptor, value); return value; }\n\nfunction _classCheckPrivateStaticFieldDescriptor(descriptor, action) { if (descriptor === undefined) { throw new TypeError(\"attempted to \" + action + \" private static field before its declaration\"); } }\n\nfunction _classCheckPrivateStaticAccess(receiver, classConstructor) { if (receiver !== classConstructor) { throw new TypeError(\"Private static access of wrong provenance\"); } }\n\nfunction _classApplyDescriptorSet(receiver, descriptor, value) { if (descriptor.set) { descriptor.set.call(receiver, value); } else { if (!descriptor.writable) { throw new TypeError(\"attempted to set read only private field\"); } descriptor.value = value; } }\n/**\n * @typedef BoundAttributeConfig\n * @property {string} attribute – name of attribute to bind, or name of source and target attributes separated with a semicolon\n * @property {string | function } targets – selector string or function that takes element as argument and returns list of target elements\n */\n\n/**\n * Custom element mixin that creates a one way binding between an attribute on\n * the custom element and a given attribute on it's children.\n *\n * @template {HTMLElement} BaseClass\n * @param {BaseClass} Base\n */\n\nfunction _AttributeBindingMixin(Base) {\n var _class, _getTargetElements, _temp, _boundAttributes;\n\n return _temp = (_getTargetElements = /*#__PURE__*/new WeakSet(), _class = class AttributeBindingMixinDef extends Base {\n constructor() {\n super(...arguments);\n\n _getTargetElements.add(this);\n }\n\n /**\n * Configure the bound attributes.\n *\n * @returns {BoundAttributeConfig[]}\n */\n static get boundAttributes() {\n return [];\n }\n\n static get observedAttributes() {\n var _super$observedAttrib;\n\n var boundAttributes = {}; // Parse and store configuration for faster lookup\n\n for (var {\n attribute,\n targets\n } of this.boundAttributes) {\n if (typeof attribute !== 'string') {\n throw Error('Bound attribute configuration must have `attribute` property of string type');\n }\n\n var [sourceAttribute, targetAttribute = sourceAttribute] = attribute.split(':');\n boundAttributes[sourceAttribute] = {\n sourceAttributeName: sourceAttribute,\n targetAttributeName: targetAttribute,\n targets\n };\n }\n\n _classStaticPrivateFieldSpecSet(AttributeBindingMixinDef, _class, _boundAttributes, boundAttributes); // Observe bound attributes\n\n\n return [...((_super$observedAttrib = super.observedAttributes) !== null && _super$observedAttrib !== void 0 ? _super$observedAttrib : []), ...Object.keys(boundAttributes)];\n }\n\n attributeChangedCallback(name, oldValue, newValue) {\n var _super$attributeChang;\n\n (_super$attributeChang = super.attributeChangedCallback) === null || _super$attributeChang === void 0 ? void 0 : _super$attributeChang.call(this, name, oldValue, newValue);\n\n if (newValue === oldValue) {\n return;\n }\n\n var boundAttributes = _classStaticPrivateFieldSpecGet(AttributeBindingMixinDef, _class, _boundAttributes);\n\n if (name in boundAttributes) {\n var configuration = boundAttributes[name];\n var targets = configuration.targets;\n\n var targetElements = _classPrivateMethodGet(this, _getTargetElements, _getTargetElements2).call(this, targets);\n\n for (var element of targetElements) {\n if (newValue !== null) {\n element.setAttribute(configuration.targetAttributeName, newValue);\n } else {\n element.removeAttribute(configuration.targetAttributeName);\n }\n }\n }\n }\n\n }), _boundAttributes = {\n writable: true,\n value: void 0\n }, _temp;\n\n function _getTargetElements2(targets) {\n if (typeof targets === 'function') {\n return targets(this);\n } else if (typeof targets === 'string') {\n return Array.from(this.querySelectorAll(targets));\n } else {\n throw new Error(\"Unsupported targets type: \".concat(typeof targets));\n }\n }\n}\n/**\n * @template {HTMLElement} BaseClass\n * @param {BaseClass} Base\n */\n\n\nvar AttributeBindingMixin = dedupeMixin(_AttributeBindingMixin);\n\nexport { AttributeBindingMixin, VIEWPORT_POSITIONS, VIEWPORT_POSITION_ATTR, ViewportPositionMixin };\n//# sourceMappingURL=dh-basis-mixins.esm.js.map\n","import _classPrivateFieldGet from '@babel/runtime/helpers/classPrivateFieldGet';\nimport _classPrivateFieldSet from '@babel/runtime/helpers/classPrivateFieldSet';\nimport { setAttribute, dispatchEvent, toArray, ElementIntersectionObserver } from '@nrk/dh-basis-common';\nimport { ViewportPositionMixin, AttributeBindingMixin, VIEWPORT_POSITION_ATTR } from '@nrk/dh-basis-mixins';\n\nvar VIEWPORT_POSITIONS = {\n aboveViewport: 'ABOVE-VIEWPORT',\n inViewport: 'IN-VIEWPORT',\n belowViewport: 'BELOW-VIEWPORT'\n};\n\nfunction _classPrivateMethodGet(receiver, privateSet, fn) { if (!privateSet.has(receiver)) { throw new TypeError(\"attempted to get private field on non-instance\"); } return fn; }\n/* Attributes */\n// VIEWPORT_POSITION_ATTR – Added by ViewportPositionMixin\n\nvar ACTIVE_BACKGROUND_ATTR = 'active-background-id';\nvar ACTIVE_LAYER_IDS_ATTR = 'active-layer-ids';\nvar ROOT_MARGIN_ATTR = 'root-margin';\n/* Child attributes */\n\nvar BG_ID_ATTR = 'data-background-id';\nvar SHOW_BACKGROUND_ATTR = 'data-show-background';\nvar LAYER_ID_ATTR = 'data-layer-id';\nvar SHOW_LAYERS_ATTR = 'data-show-layers';\nvar ATTRIBUTE_NAME = 'data-attribute-name';\nvar ATTRIBUTE_VALUE = 'data-attribute-value';\nvar STATE_ATTR = 'data-state';\nvar VIEWPORT_POSITION_DATA_ATTR = 'data-viewport-position';\n/* Events */\n\nvar TRIGGER_ACTIVATED_EVENT = 'dh-basis-scrollhistorie-trigger-activated';\n\nfunction isTrigger(elm) {\n return elm.hasAttribute(SHOW_BACKGROUND_ATTR);\n}\n\nfunction isBackground(elm) {\n return elm.hasAttribute(BG_ID_ATTR);\n}\n\nfunction isLayer(elm) {\n return elm.hasAttribute(LAYER_ID_ATTR);\n}\n/**\n * Custom element that manages a set of background, trigger and layer elements.\n *\n * Background elements are annotated with a `data-background-id` attribute.\n *\n * Trigger elements are annotated with a `data-show-background` attribute,\n * and optional `data-show-layers`, `data-attribute-name` and `data-attribute-value` attributes.\n *\n * Layer elements are annotated with a `data-layer-id` attribute.\n *\n * When a trigger element comes into view it will set the `data-state` attribute\n * of the corresponding background to `ACTIVE`.\n * The previous and next background will get `data-state`=`PREV` and `NEXT`.\n */\n\n\nvar _activeTriggerIndex = /*#__PURE__*/new WeakMap();\n\nvar _observer = /*#__PURE__*/new WeakMap();\n\nvar _createIntersectionObserver = /*#__PURE__*/new WeakSet();\n\nvar _disconnectIntersectionObserver = /*#__PURE__*/new WeakSet();\n\nvar _handleTriggerChange = /*#__PURE__*/new WeakMap();\n\nvar _prepareBackgrounds = /*#__PURE__*/new WeakSet();\n\nvar _updateBackgrounds = /*#__PURE__*/new WeakSet();\n\nvar _getBackgroundId = /*#__PURE__*/new WeakSet();\n\nvar _updateLayers = /*#__PURE__*/new WeakSet();\n\nclass Scrollhistorie extends ViewportPositionMixin(AttributeBindingMixin(HTMLElement)) {\n constructor() {\n super(...arguments);\n\n _updateLayers.add(this);\n\n _getBackgroundId.add(this);\n\n _updateBackgrounds.add(this);\n\n _prepareBackgrounds.add(this);\n\n _disconnectIntersectionObserver.add(this);\n\n _createIntersectionObserver.add(this);\n\n _activeTriggerIndex.set(this, {\n writable: true,\n value: void 0\n });\n\n _observer.set(this, {\n writable: true,\n value: void 0\n });\n\n _handleTriggerChange.set(this, {\n writable: true,\n value: intersections => {\n var activeIntersection = intersections.filter(i => i.isIntersecting).pop();\n\n if (!activeIntersection || !activeIntersection.target) {\n _classPrivateFieldSet(this, _activeTriggerIndex, null);\n\n return;\n }\n\n var triggerElement = activeIntersection.target; // Set active background\n\n this.activeBackgroundId = triggerElement.getAttribute(SHOW_BACKGROUND_ATTR); // Update attribute on active background\n\n var attributeName = triggerElement.getAttribute(ATTRIBUTE_NAME);\n var attributeValue = triggerElement.getAttribute(ATTRIBUTE_VALUE);\n\n if (attributeName) {\n var _this$activeBackgroun;\n\n (_this$activeBackgroun = this.activeBackground) === null || _this$activeBackgroun === void 0 ? void 0 : _this$activeBackgroun.setAttribute(attributeName, attributeValue);\n }\n\n this.triggerElements.forEach(elm => setAttribute(elm, STATE_ATTR, elm === triggerElement ? 'ACTIVE' : undefined));\n this.activeLayerIds = triggerElement.getAttribute(SHOW_LAYERS_ATTR);\n var triggerIndex = this.triggerElements.indexOf(triggerElement);\n\n if (triggerIndex !== _classPrivateFieldGet(this, _activeTriggerIndex)) {\n _classPrivateFieldSet(this, _activeTriggerIndex, triggerIndex);\n\n dispatchEvent(this, TRIGGER_ACTIVATED_EVENT, {\n triggerIndex,\n backgroundId: this.activeBackgroundId,\n attributeName,\n attributeValue\n });\n }\n }\n });\n }\n\n static get observedAttributes() {\n return [...super.observedAttributes, ROOT_MARGIN_ATTR, ACTIVE_BACKGROUND_ATTR, ACTIVE_LAYER_IDS_ATTR];\n } // Binding VIEWPORT-POSITION attribute to background DATA-VIEWPORT-POSITION attribute\n\n\n static get boundAttributes() {\n return [{\n attribute: \"\".concat(VIEWPORT_POSITION_ATTR, \":\").concat(VIEWPORT_POSITION_DATA_ATTR),\n targets: instance => instance.backgrounds\n }];\n }\n\n connectedCallback() {\n super.connectedCallback();\n\n _classPrivateMethodGet(this, _updateBackgrounds, _updateBackgrounds2).call(this);\n\n _classPrivateMethodGet(this, _createIntersectionObserver, _createIntersectionObserver2).call(this);\n }\n\n disconnectedCallback() {\n super.disconnectedCallback();\n\n _classPrivateMethodGet(this, _disconnectIntersectionObserver, _disconnectIntersectionObserver2).call(this);\n }\n\n attributeChangedCallback(name, oldValue, newValue) {\n super.attributeChangedCallback(name, oldValue, newValue);\n\n if (name === ROOT_MARGIN_ATTR) {\n _classPrivateMethodGet(this, _disconnectIntersectionObserver, _disconnectIntersectionObserver2).call(this);\n\n _classPrivateMethodGet(this, _createIntersectionObserver, _createIntersectionObserver2).call(this);\n } else if (name === VIEWPORT_POSITION_ATTR) {\n _classPrivateMethodGet(this, _prepareBackgrounds, _prepareBackgrounds2).call(this);\n\n _classPrivateMethodGet(this, _updateBackgrounds, _updateBackgrounds2).call(this);\n } else if (name === ACTIVE_BACKGROUND_ATTR) {\n _classPrivateMethodGet(this, _updateBackgrounds, _updateBackgrounds2).call(this);\n } else if (name === ACTIVE_LAYER_IDS_ATTR) {\n _classPrivateMethodGet(this, _updateLayers, _updateLayers2).call(this);\n }\n }\n\n get triggerElements() {\n return toArray(this.children).filter(isTrigger);\n }\n\n get backgrounds() {\n return toArray(this.children).filter(isBackground);\n }\n\n get layers() {\n return toArray(this.children).filter(isLayer);\n }\n /* Mirrored attributes: */\n\n\n get rootMargin() {\n return this.getAttribute(ROOT_MARGIN_ATTR) || '0px 0px 0px 0px';\n }\n\n set rootMargin(val) {\n this.setAttribute(ROOT_MARGIN_ATTR, val || '0px 0px 0px 0px');\n }\n\n set activeBackgroundId(value) {\n if (value !== this.activeBackgroundId) {\n this.setAttribute(ACTIVE_BACKGROUND_ATTR, value);\n }\n }\n\n get activeBackgroundId() {\n return this.getAttribute(ACTIVE_BACKGROUND_ATTR);\n }\n\n get activeBackground() {\n return this.querySelector(\"[\".concat(BG_ID_ATTR, \"=\\\"\").concat(this.activeBackgroundId, \"\\\"]\"));\n }\n\n get activeLayerIds() {\n return this.getAttribute(ACTIVE_LAYER_IDS_ATTR) || '';\n }\n\n set activeLayerIds(value) {\n if (value !== this.activeLayerIds) {\n if (value) {\n this.setAttribute(ACTIVE_LAYER_IDS_ATTR, value);\n } else {\n this.removeAttribute(ACTIVE_LAYER_IDS_ATTR);\n }\n }\n }\n\n}\n\nfunction _createIntersectionObserver2() {\n _classPrivateFieldSet(this, _observer, new ElementIntersectionObserver(this.triggerElements, _classPrivateFieldGet(this, _handleTriggerChange), {\n root: this.viewportIntersectionRoot,\n rootMargin: this.rootMargin\n }));\n}\n\nfunction _disconnectIntersectionObserver2() {\n if (_classPrivateFieldGet(this, _observer)) {\n _classPrivateFieldGet(this, _observer).disconnect();\n }\n}\n\nfunction _prepareBackgrounds2() {\n var viewportPosition = this.viewportPosition;\n\n if (viewportPosition === VIEWPORT_POSITIONS.aboveViewport || viewportPosition === VIEWPORT_POSITIONS.belowViewport) {\n var triggerElements = this.triggerElements;\n\n if (triggerElements.length > 0) {\n var triggerIndex = viewportPosition === VIEWPORT_POSITIONS.aboveViewport ? triggerElements.length - 1 : 0;\n this.activeBackgroundId = triggerElements[triggerIndex].getAttribute(SHOW_BACKGROUND_ATTR);\n }\n }\n}\n\nfunction _updateBackgrounds2() {\n var activeBackgroundId = this.activeBackgroundId;\n var backgrounds = this.backgrounds;\n backgrounds.forEach((background, idx) => {\n var backgroundId = background.getAttribute(BG_ID_ATTR);\n var isActive = backgroundId === activeBackgroundId;\n var nextActive = _classPrivateMethodGet(this, _getBackgroundId, _getBackgroundId2).call(this, backgrounds, idx + 1) === activeBackgroundId;\n var prevActive = _classPrivateMethodGet(this, _getBackgroundId, _getBackgroundId2).call(this, backgrounds, idx - 1) === activeBackgroundId;\n var state;\n\n if (isActive) {\n state = 'ACTIVE';\n } else if (nextActive) {\n state = 'PREV';\n } else if (prevActive) {\n state = 'NEXT';\n }\n\n var currentState = background.getAttribute(STATE_ATTR);\n\n if (state !== currentState) {\n setAttribute(background, STATE_ATTR, state);\n }\n });\n}\n\nfunction _getBackgroundId2(backgrounds, index) {\n if (backgrounds[index]) {\n return backgrounds[index].getAttribute(BG_ID_ATTR);\n }\n}\n\nfunction _updateLayers2() {\n var activeLayerIds = this.activeLayerIds.replace(/[[\\]]/g, '').split(',');\n this.layers.forEach(layer => {\n var layerId = layer.getAttribute(LAYER_ID_ATTR);\n var isActive = activeLayerIds.indexOf(layerId) !== -1;\n setAttribute(layer, STATE_ATTR, isActive ? 'ACTIVE' : undefined);\n });\n}\n\nexport { Scrollhistorie as default };\n//# sourceMappingURL=dh-basis-scrollhistorie.esm.js.map\n","// extracted by mini-css-extract-plugin\nexport default {\"forklaringsscroll\":\"dh-forklaringsscroll-forklaringsscroll\",\"altText\":\"dh-forklaringsscroll-altText\",\"cardContainer\":\"dh-forklaringsscroll-cardContainer\",\"card\":\"dh-forklaringsscroll-card\",\"forklaringsscroll--left\":\"dh-forklaringsscroll-forklaringsscroll--left\",\"forklaringsscrollLeft\":\"dh-forklaringsscroll-forklaringsscroll--left\",\"forklaringsscroll--right\":\"dh-forklaringsscroll-forklaringsscroll--right\",\"forklaringsscrollRight\":\"dh-forklaringsscroll-forklaringsscroll--right\",\"cardContainer--first\":\"dh-forklaringsscroll-cardContainer--first\",\"cardContainerFirst\":\"dh-forklaringsscroll-cardContainer--first\",\"cardContainer--last\":\"dh-forklaringsscroll-cardContainer--last\",\"cardContainerLast\":\"dh-forklaringsscroll-cardContainer--last\"};","import Scrollhistorie from '@nrk/dh-basis-scrollhistorie'\nimport { closest } from '@nrk/dh-basis-common'\n\n/* styles */\nimport styles from './forklaringsscroll.module.css'\n\nexport default class Forklaringsscroll extends Scrollhistorie {\n connectedCallback() {\n super.connectedCallback()\n requestAnimationFrame(this.updateMarginAndHeights)\n window.addEventListener('resize', this.updateMarginAndHeights)\n\n /* Scroll text into view when media-element receives focus */\n for (const elm of this.querySelectorAll('img, video, [role=img]')) {\n elm.tabIndex = '-1'\n }\n this.addEventListener('focus', this._handleFocus, true)\n }\n\n disconnectedCallback() {\n super.disconnectedCallback()\n window.removeEventListener('resize', this.updateMarginAndHeights)\n this.removeEventListener('focus', this._handleFocus, true)\n }\n\n measureICBHeight() {\n /*\n * Measure the height of the Initial Containing Block (ICB).\n * In most modern browsers 100vh === height of the ICB.\n * The ICB does not change when the URL bar is hidden.\n * */\n try {\n const element = document.createElement('div')\n element.style.height = 'calc(100 * var(--dh-vh))'\n element.style.position = 'absolute'\n element.style.top = '0'\n element.style.left = '0'\n document.documentElement.appendChild(element)\n const icbHeight = element.offsetHeight\n document.documentElement.removeChild(element)\n return icbHeight\n } catch (e) {\n return window.innerHeight\n }\n }\n\n _handleFocus = (e) => {\n const backgroundElement = e.target && closest(e.target, '[data-background-id]')\n const altTextElement = e.target && closest(e.target, `.${styles.altText}`)\n let triggerElement\n if (backgroundElement) {\n const backgroundId = backgroundElement.getAttribute('data-background-id')\n if (this.activeBackgroundId !== backgroundId) {\n triggerElement = this.triggerElements.find(\n (elm) => elm.getAttribute('data-show-background') === backgroundId\n )\n }\n } else if (altTextElement) {\n triggerElement = altTextElement.nextElementSibling\n }\n\n if (triggerElement && triggerElement.getAttribute('data-state') !== 'ACTIVE') {\n window.scrollTo(0, triggerElement.offsetTop - window.innerHeight / 2)\n }\n }\n\n updateMarginAndHeights = () => {\n const backgrounds = this.backgrounds\n const triggerElements = this.triggerElements\n if (!backgrounds || !backgrounds.length || !triggerElements || !triggerElements.length) {\n return\n }\n\n const icbHeight = this.measureICBHeight()\n // Measure first visible background. All backgrounds should be 3:4\n const background = backgrounds.find((b) => b.offsetHeight)\n if (!background) {\n return\n }\n const storyMargin = (icbHeight - background.offsetHeight) / 2\n\n const firstCardHeight = triggerElements[0]\n .querySelector(`.${styles.card}`)\n .getBoundingClientRect().height\n const lastCardHeight = triggerElements[triggerElements.length - 1]\n .querySelector(`.${styles.card}`)\n .getBoundingClientRect().height\n\n if (!isNaN(storyMargin)) {\n this.style.setProperty('--sfv-storyMargin', `${storyMargin}px`)\n this.style.setProperty('--sfv-firstCardHeight', `${firstCardHeight}px`)\n this.style.setProperty('--sfv-lastCardHeight', `${lastCardHeight}px`)\n\n const negativeStoryMargin = `${(-1 * storyMargin).toFixed(1)}px`\n this.rootMargin = `${negativeStoryMargin} 0px ${negativeStoryMargin} 0px`\n }\n }\n}\n","import _defineProperty from '@babel/runtime/helpers/defineProperty';\nimport { closest, testReducedMotion, withinStops, toArray, setAttribute, toggleAttribute, withinRange } from '@nrk/dh-basis-common';\n\nvar STOPS_ATTR = 'stops';\nvar TARGET_STOP_ATTR = 'target-stop';\nvar AUTOPLAY_BLOCKED = 'autoplay-blocked';\nvar STATE_ATTR = 'data-state'; // Data attribute, so that it can be used on other elements\n\nvar VIEWPORT_POSITION_ATTR = 'data-viewport-position'; // Most videos have a frame-rate of 25 fps, but not all. Use with care.\n// Used to calculate target zone.\n\nvar FRAME_RATE = 25;\n\nvar isVisible = child => child.offsetWidth > 0 || child.offsetHeight > 0;\n/* Ponyfill Math.sign */\n\n\nfunction sign(val) {\n return val >= 0 ? 1 : -1;\n}\n\nfunction round(num, decimals) {\n var multiplier = Math.pow(10.0, decimals);\n return Math.round(num * multiplier) / multiplier;\n}\n\nclass StegvisVideo extends HTMLElement {\n constructor() {\n super(...arguments);\n\n _defineProperty(this, \"_paused\", true);\n\n _defineProperty(this, \"_disconnecting\", false);\n\n _defineProperty(this, \"_reducedMotionSeekEnabled\", false);\n\n _defineProperty(this, \"_onReadyStateChange\", e => {\n if (isVisible(e.target) && e.target.readyState >= 1) {\n this._startSeek();\n }\n });\n\n _defineProperty(this, \"_handleClick\", e => {\n var btn = closest(e.target, 'button');\n\n if (!btn) {\n return;\n }\n /* Triggers play if autoplay was blocked */\n\n\n var videoElement = this.videoElement;\n\n if (videoElement !== null && videoElement !== void 0 && videoElement.paused) {\n var playPromise = videoElement.play() || Promise.resolve();\n playPromise.then(() => {\n this.autoplayBlocked = false;\n });\n }\n });\n }\n\n static get observedAttributes() {\n return [TARGET_STOP_ATTR, STATE_ATTR, VIEWPORT_POSITION_ATTR];\n }\n\n connectedCallback() {\n this.addEventListener('click', this._handleClick);\n this.videoElements.forEach(videoElement => videoElement.addEventListener('loadedmetadata', this._onReadyStateChange));\n }\n\n disconnectedCallback() {\n this._disconnecting = true;\n this.removeEventListener('click', this._handleClick);\n this.videoElements.forEach(videoElement => videoElement.removeEventListener('loadedmetadata', this._onReadyStateChange));\n }\n\n attributeChangedCallback(name, prevValue, newValue) {\n var hasValue = newValue !== null;\n var valueChanged = prevValue !== newValue;\n\n if (!valueChanged) {\n return;\n }\n\n if (name === STATE_ATTR) {\n this._stateChanged(prevValue, newValue);\n } else if (name === VIEWPORT_POSITION_ATTR) {\n this._viewportChanged(newValue);\n } else if (name === TARGET_STOP_ATTR) {\n hasValue && this._startSeek();\n }\n }\n\n _stateChanged(prevState, nextState) {\n if (nextState === 'ACTIVE') {\n if (prevState === 'NEXT') {\n this._gotoStart();\n } else if (prevState === 'PREV') {\n this._gotoEnd();\n }\n\n this._startSeek();\n } else {\n this._paused = true;\n }\n }\n\n _viewportChanged(newValue) {\n if (newValue === 'IN-VIEWPORT') {\n this._preload();\n\n this._startSeek();\n } else if (newValue === 'ABOVE-VIEWPORT') {\n this._paused = true;\n\n this._gotoEnd();\n } else if (newValue === 'BELOW-VIEWPORT') {\n this._paused = true;\n\n this._gotoStart();\n }\n }\n\n _shouldPlay() {\n var _this$videoElement;\n\n var inViewport = typeof this.viewportPosition === 'undefined' || this.viewportPosition === 'IN-VIEWPORT';\n return ((_this$videoElement = this.videoElement) === null || _this$videoElement === void 0 ? void 0 : _this$videoElement.readyState) >= 1 && inViewport && this.state === 'ACTIVE';\n }\n\n _preload() {\n var videoElement = this.videoElement;\n\n if (videoElement && videoElement.getAttribute('preload') !== 'auto') {\n videoElement.setAttribute('preload', 'auto');\n }\n }\n\n _gotoStart() {\n var videoElement = this.videoElement;\n\n if (videoElement && videoElement.currentTime !== 0) {\n videoElement.currentTime = 0;\n }\n }\n\n _gotoEnd() {\n var videoElement = this.videoElement;\n var duration = videoElement === null || videoElement === void 0 ? void 0 : videoElement.duration;\n\n if (Number.isFinite(duration)) {\n videoElement.currentTime = duration;\n }\n }\n\n _enableSeekOnReducedMotion() {\n var videoElement = this.videoElement;\n\n if (this._reducedMotionSeekEnabled || !videoElement) {\n return Promise.resolve();\n }\n\n return (videoElement.play() || Promise.resolve(true)).then(() => {\n videoElement.pause();\n this._reducedMotionSeekEnabled = true;\n }).catch(e => {// Ignore error\n });\n }\n\n _startSeek() {\n if (!this._paused || !this._shouldPlay()) {\n return;\n }\n\n var reducedMotion = testReducedMotion();\n this._paused = false;\n var prevTime;\n\n var loop = timestamp => {\n var videoElement = this.videoElement;\n var targetTime = this.stops[this.targetStop];\n\n if (this._disconnecting || this._paused || !videoElement || !isFinite(targetTime)) {\n this._paused = true;\n videoElement === null || videoElement === void 0 ? void 0 : videoElement.pause();\n return;\n }\n\n if (!prevTime) {\n prevTime = timestamp;\n }\n\n this.invisibleVideoElements.filter(video => !video.paused).forEach(invisibleVideo => invisibleVideo.pause());\n var dt = (timestamp - prevTime) / 1000;\n var framesPerTick = Math.max(Math.ceil(Math.abs(dt * FRAME_RATE)), 1);\n var buffer = 0.5 * framesPerTick / FRAME_RATE;\n var currentTime = videoElement.currentTime;\n var atTargetStop = withinRange(currentTime, targetTime - buffer, targetTime + buffer);\n\n if (atTargetStop) {\n if (videoElement.currentTime !== targetTime) {\n videoElement.currentTime = targetTime;\n }\n\n this._paused = true;\n videoElement.pause();\n } else if (reducedMotion) {\n this._enableSeekOnReducedMotion().then(() => {\n videoElement.currentTime = targetTime;\n this._paused = true;\n });\n } else {\n var speed = this._calculateSpeed(currentTime);\n\n var direction = sign(targetTime - currentTime);\n\n if (this.autoplayBlocked) ; else if (direction === 1) {\n // Use normal playback for forward playback\n videoElement.playbackRate = speed;\n\n if (videoElement.paused) {\n var playPromise = videoElement.play() || Promise.resolve();\n playPromise.catch(e => {\n console.error(e);\n this.autoplayBlocked = true;\n });\n }\n } else {\n // Use seeking for reverse playback:\n // https://github.com/whatwg/html/issues/3754\n videoElement.pause();\n var nextTime = round(currentTime + dt * speed * direction, 2.0);\n\n if (currentTime !== nextTime) {\n videoElement.currentTime = nextTime;\n }\n }\n\n prevTime = timestamp;\n requestAnimationFrame(loop);\n }\n };\n\n requestAnimationFrame(loop);\n }\n\n _calculateSpeed(currentTime) {\n return withinStops(currentTime, this.stops, this.targetStop, 1) ? 1 : 3;\n }\n\n get videoElement() {\n return this.videoElements.find(isVisible);\n }\n\n get invisibleVideoElements() {\n return this.videoElements.filter(child => !isVisible(child));\n }\n\n get videoElements() {\n return toArray(this.children).filter(child => child.nodeName === 'VIDEO');\n }\n\n get stops() {\n var stopString = this.getAttribute(STOPS_ATTR) || '';\n return stopString.replace(/[[\\]]/g, '').split(',').map(s => s.trim()).filter(Boolean).map(s => Number(s));\n }\n\n set stops(val) {\n this.setAttribute(STOPS_ATTR, val.map(num => num.toFixed(2)).join(','));\n }\n\n get targetStop() {\n return Number(this.getAttribute(TARGET_STOP_ATTR) || 0);\n }\n\n set targetStop(val) {\n this.setAttribute(TARGET_STOP_ATTR, val);\n }\n\n get state() {\n return this.getAttribute(STATE_ATTR);\n }\n\n set state(val) {\n setAttribute(this, STATE_ATTR, 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 get autoplayBlocked() {\n return this.hasAttribute(AUTOPLAY_BLOCKED) || false;\n }\n\n set autoplayBlocked(val) {\n toggleAttribute(this, AUTOPLAY_BLOCKED, val);\n }\n\n}\n\nexport { StegvisVideo as default };\n//# sourceMappingURL=dh-basis-stegvis-video.esm.js.map\n","import _defineProperty from '@babel/runtime/helpers/defineProperty';\nimport { 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';\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.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 reducedMotion = testReducedMotion();\n var valueChanged = prevValue !== newValue;\n\n if ((name === STATE_ATTR || name === VIEWPORT_POSITION_ATTR) && !reducedMotion) {\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('loadedmetadata', 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('loadedmetadata', 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 return ((_this$_visibleVideoEl = this._visibleVideoElement) === null || _this$_visibleVideoEl === void 0 ? void 0 : _this$_visibleVideoEl.readyState) >= 1 && 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.getAttribute('preload')) !== 'auto') {\n var _this$_visibleVideoEl3;\n\n (_this$_visibleVideoEl3 = this._visibleVideoElement) === null || _this$_visibleVideoEl3 === void 0 ? void 0 : _this$_visibleVideoEl3.setAttribute('preload', 'auto');\n }\n }\n\n _playVideo() {\n var videoElement = this._visibleVideoElement;\n\n if (videoElement.paused && !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 { toArray, setAttribute } from '@nrk/dh-basis-common'\n\nconst CHILD_SELECTOR = '[dh-receive-historiescroll-attributes]'\nconst STATE_ATTR = 'data-state'\nconst VIEWPORT_POSITION_ATTR = 'viewport-position'\nconst VIEWPORT_POSITION_DATA_ATTR = 'data-viewport-position'\n\nconst STOPS_ATTR = 'stops'\nconst TARGET_STOP_ATTR = 'target-stop'\n\n/*\n * Copies down the 'data-state' attribute to child.\n * Detects and sets 'data-viewport-position' on child.\n * */\nexport default class Spesialmodul extends HTMLElement {\n static get observedAttributes() {\n return [STATE_ATTR, VIEWPORT_POSITION_ATTR, STOPS_ATTR, TARGET_STOP_ATTR]\n }\n\n connectedCallback() {}\n\n disconnectedCallback() {}\n\n attributeChangedCallback(name, prev, next) {\n if (prev === next) {\n return\n }\n this._updateChildElements()\n }\n\n _updateChildElements() {\n const state = this.state\n const viewportPosition = this.viewportPosition\n const spesialmoduler = this.spesialmoduler\n const stops = this.stops\n const targetStop = this.targetStop\n spesialmoduler.forEach((spesialmodul) => {\n setAttribute(spesialmodul, STATE_ATTR, state)\n setAttribute(spesialmodul, VIEWPORT_POSITION_DATA_ATTR, viewportPosition)\n if (stops && stops.length) {\n setAttribute(spesialmodul, STOPS_ATTR, stops)\n setAttribute(spesialmodul, TARGET_STOP_ATTR, targetStop)\n }\n })\n }\n\n get spesialmoduler() {\n return toArray(this.querySelectorAll(CHILD_SELECTOR))\n }\n\n get viewportPosition() {\n return this.getAttribute(VIEWPORT_POSITION_ATTR)\n }\n\n set viewportPosition(value) {\n setAttribute(this, VIEWPORT_POSITION_ATTR, value)\n }\n\n get state() {\n return this.getAttribute(STATE_ATTR)\n }\n\n set state(value) {\n setAttribute(this, STATE_ATTR, value)\n }\n\n get stops() {\n return this.getAttribute(STOPS_ATTR)\n }\n\n set stops(val) {\n this.setAttribute(STOPS_ATTR, val)\n }\n\n get targetStop() {\n return Number(this.getAttribute(TARGET_STOP_ATTR))\n }\n\n set targetStop(val) {\n this.setAttribute(TARGET_STOP_ATTR, val)\n }\n}\n","import './polyfills'\nimport { BaseElement } from '@nrk/dh-server-libs/base-element'\nimport { getElementTag } from '@nrk/dh-server-libs/get-element-tag'\nimport Forklaringsscroll from './components/forklaringsscroll'\nimport StegvisVideo from '@nrk/dh-basis-stegvis-video'\nimport LevendeStillbilde from '@nrk/dh-basis-levende-stillbilde'\nimport Spesialmodul from './components/media/spesialmodul'\n\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\nexport class AppElement extends BaseElement {\n name = tag\n\n render() {\n if (this.features.sanityPreview) {\n import(\n './components/preview/preview-iframe-api' /* webpackChunkName: \"dh-preview-iframe\" */\n ).then((module) => module.initPreview(tag))\n }\n this.#loadCustomElements()\n\n this.addEventListener('dh-basis-scrollhistorie-trigger-activated', (e) => {\n e.preventDefault()\n this.sendGaEvent({ eventAction: 'TRIGGER-ACTIVATED', eventLabel: e.detail.triggerIndex })\n })\n }\n\n async #loadCustomElements() {\n safeDefine('dh-forklaringsscroll', Forklaringsscroll)\n safeDefine('dh-fs-basis-stegvis-video', StegvisVideo)\n safeDefine('dh-fs-basis-levende-stillbilde', LevendeStillbilde)\n safeDefine('dh-fs-spesialmodul', Spesialmodul)\n\n /* Stegvis lottie is only defined if used */\n if (\n this.features.lottie &&\n typeof customElements.get('dh-fs-basis-stegvis-lottie') === 'undefined'\n ) {\n const stegvisLottie = (\n await import('@nrk/dh-basis-stegvis-lottie' /* webpackChunkName: \"dh-stegvis-lottie\" */)\n ).default\n safeDefine('dh-fs-basis-stegvis-lottie', stegvisLottie)\n }\n\n if (this.features.kart && typeof customElements.get('dh-fs-basis-kart') === 'undefined') {\n const kart = (await import('./lib/karthistorie-chunk' /* webpackChunkName: \"dh-kart\" */))\n .default\n\n safeDefine('dh-fs-basis-kart', kart)\n }\n }\n\n get features() {\n return JSON.parse(this.getAttribute('features') || '{}')\n }\n}\n\nsafeDefine(tag, AppElement)\n"],"names":["leafPrototypes","getProto","loadStylesheet","installedCssChunks","installedChunks","installChunk","ownKeys","object","enumerableOnly","keys","Object","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","target","i","arguments","length","source","forEach","key","getOwnPropertyDescriptors","defineProperties","defineProperty","defaultConfig","rootMargin","threshold","root","ElementIntersectionObserver","constructor","elements","onChange","config","this","slice","intersections","map","isIntersecting","ratio","intersectionObserver","IntersectionObserver","entries","entry","idx","indexOf","splice","intersectionRatio","elm","observe","disconnect","unobserve","toggleAttribute","el","name","boolValue","hasAttribute","setAttribute","removeAttribute","nextValue","proto","match","closest","window","Element","prototype","matches","msMatchesSelector","webkitMatchesSelector","css","parentElement","call","toArray","nodeList","dispatchEvent","element","event","detail","undefined","ignore","concat","CustomEvent","bubbles","cancelable","document","createEvent","initCustomEvent","result","testReducedMotion","matchMedia","MAX_SAFE_INTEGER","withinRange","current","start","stop","withinStops","currentTime","stops","targetStop","nrOfStops","uniqueStops","unique","targetTime","prevTime","nextTime","value","index","self","module","exports","createErrorReporter","getContextId","_coreAnalyticsPromise","BaseElement","HTMLElement","super","sendError","bind","sendGaEvent","connectedCallback","Error","simpleErrorReport","errorTracking","enabled","url","listenAndCatch","setupTracker","render","coreAnalyticsTracker","Promise","resolve","then","m","default","coreAnalytics","tracker","create","container","parentId","metadata","location","href","ga","dataset","gaPropertyId","title","contentId","selfId","publishDate","published","async","message","sendErrorReport","eventCategory","JSON","parse","preloadedState","getAttribute","SimpleErrorReport","isErrorReportingEnabled","dryRun","POLOPOLY_ID_REGEX","str","extractPolopolyIdFromString","getElementTag","version","split","e","n","r","t","configurable","writable","TypeError","register","time","Date","assign","hasOwnProperty","o","s","a","u","parseStack","errorRegister","addEventListener","filename","lineno","colno","line","column","error","stackTrace","reason","console","log","stringify","isInRegisterWithinRange","addErrorToRegister","XMLHttpRequest","open","setRequestHeader","send","_defineProperty","obj","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","id","loaded","__webpack_modules__","getter","__esModule","d","getPrototypeOf","mode","ns","def","getOwnPropertyNames","definition","get","f","chunkId","all","reduce","promises","miniCssF","prop","Symbol","toStringTag","nmd","paths","children","p","reject","fullhref","existingLinkTags","getElementsByTagName","dataHref","tag","rel","existingStyleTags","findStylesheet","linkTag","createElement","type","onerror","onload","errorType","realHref","err","code","request","parentNode","removeChild","head","appendChild","createStylesheet","miniCss","data","ids","modules","runtime","j","installedChunkData","promise","import","race","ssrOrientation","destroyed","mounted","listeners","portrait","landscape","opts","orientation","getOrientation","update","handleUpdate","throttledUpdate","clearTimeout","setTimeout","now","mount","destroy","removeEventListener","innerHeight","innerWidth","listen","emit","getVh","getHeight","navigator","userAgent","vendor","opera","toLowerCase","test","platform","checkHasVhBug","style","setProperty","fixVhBug","_classExtractFieldDescriptor","receiver","privateMap","action","has","_classPrivateFieldGet","descriptor","_classPrivateFieldSet","set","dedupeId","dedupeMixin","mixin","mixinId","base","_base$_appliedMixins","_base$_appliedMixins2","_appliedMixins","extended","_classPrivateMethodGet$1","privateSet","fn","VIEWPORT_POSITION_ATTR","VIEWPORT_POSITIONS","ViewportPositionMixin","Base","_observer","_createIntersectionObserver","_disconnectIntersectionObserver","_handleIntersectionChange","WeakMap","WeakSet","add","_ref","intersection","viewportPosition","isAbove","getBoundingClientRect","bottom","observedAttributes","_super$observedAttrib","_super$connectedCallb","_createIntersectionObserver2","disconnectedCallback","_super$disconnectedCa","_disconnectIntersectionObserver2","viewportContainer","_document$scrollingEl","scrollingElement","documentElement","viewportIntersectionRoot","isViewport","_classPrivateFieldGet2","_classPrivateFieldGet3","_classStaticPrivateFieldSpecSet","classConstructor","_classCheckPrivateStaticAccess","_classCheckPrivateStaticFieldDescriptor","AttributeBindingMixin","_class","_getTargetElements","_temp","_boundAttributes","AttributeBindingMixinDef","boundAttributes","attribute","targets","sourceAttribute","targetAttribute","sourceAttributeName","targetAttributeName","attributeChangedCallback","oldValue","newValue","_super$attributeChang","configuration","targetElements","_classPrivateMethodGet","_getTargetElements2","Array","from","querySelectorAll","ACTIVE_BACKGROUND_ATTR","ACTIVE_LAYER_IDS_ATTR","ROOT_MARGIN_ATTR","BG_ID_ATTR","SHOW_BACKGROUND_ATTR","LAYER_ID_ATTR","STATE_ATTR","isTrigger","isBackground","isLayer","_activeTriggerIndex","_handleTriggerChange","_prepareBackgrounds","_updateBackgrounds","_getBackgroundId","_updateLayers","Scrollhistorie","activeIntersection","pop","triggerElement","activeBackgroundId","_this$activeBackgroun","attributeName","attributeValue","activeBackground","triggerElements","activeLayerIds","triggerIndex","backgroundId","instance","backgrounds","_updateBackgrounds2","_prepareBackgrounds2","_updateLayers2","layers","val","querySelector","background","state","isActive","nextActive","_getBackgroundId2","prevActive","replace","layer","layerId","Forklaringsscroll","_handleFocus","backgroundElement","altTextElement","styles","find","nextElementSibling","scrollTo","offsetTop","updateMarginAndHeights","icbHeight","measureICBHeight","b","offsetHeight","storyMargin","firstCardHeight","height","lastCardHeight","isNaN","negativeStoryMargin","toFixed","requestAnimationFrame","tabIndex","position","top","left","STOPS_ATTR","TARGET_STOP_ATTR","AUTOPLAY_BLOCKED","isVisible","child","offsetWidth","StegvisVideo","readyState","_startSeek","videoElement","paused","play","autoplayBlocked","_handleClick","videoElements","_onReadyStateChange","_disconnecting","prevValue","hasValue","_stateChanged","_viewportChanged","prevState","nextState","_gotoStart","_gotoEnd","_paused","_preload","_shouldPlay","_this$videoElement","inViewport","duration","Number","isFinite","_enableSeekOnReducedMotion","_reducedMotionSeekEnabled","pause","catch","reducedMotion","loop","timestamp","invisibleVideoElements","video","invisibleVideo","num","decimals","multiplier","dt","buffer","Math","max","ceil","abs","speed","_calculateSpeed","direction","playbackRate","pow","round","nodeName","trim","Boolean","join","DISABLE_FORCED_ATTRIBUTES_ATTR","IS_PAUSED","offsetParent","LevendeStillbilde","_visibleVideoElement","isPaused","_playVideo","_pauseVideo","_updateVisibleVideoElement","_setVideoAttributes","_setEventListeners","_removeEventListeners","_updatePlayState","_handleResize","_handlePlayChange","nextVisibleVideo","_shouldPreload","disableForcedAttributes","_this$_visibleVideoEl","_this$_visibleVideoEl2","_this$_visibleVideoEl3","Spesialmodul","prev","next","_updateChildElements","spesialmoduler","spesialmodul","__APP_NAME__","__APP_VERSION__","safeDefine","elementName","customElements","define","AppElement","features","sanityPreview","initPreview","preventDefault","eventAction","eventLabel","lottie","kart"],"sourceRoot":""}