{"version":3,"file":"main-f3c229d05206a07c68b3.esm.js","mappings":"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","sources":["webpack://dh-historiescroll/webpack/runtime/create fake namespace object","webpack://dh-historiescroll/webpack/runtime/import chunk loading","webpack://dh-historiescroll/./node_modules/@nrk/dh-basis-common/dh-basis-common.esm.js","webpack://dh-historiescroll/./node_modules/@nrk/dh-server-libs/base-element.js","webpack://dh-historiescroll/./node_modules/@nrk/dh-server-libs/get-element-tag.js","webpack://dh-historiescroll/./node_modules/@nrk/dh-server-libs/src/base-element.js","webpack://dh-historiescroll/./node_modules/@nrk/dh-server-libs/src/get-context-id.js","webpack://dh-historiescroll/./node_modules/@nrk/dh-server-libs/src/get-element-tag.js","webpack://dh-historiescroll/./node_modules/scrollparent/scrollparent.js","webpack://dh-historiescroll/./node_modules/@babel/runtime/helpers/esm/classExtractFieldDescriptor.js","webpack://dh-historiescroll/./node_modules/@babel/runtime/helpers/esm/classPrivateFieldGet.js","webpack://dh-historiescroll/./node_modules/@babel/runtime/helpers/esm/classApplyDescriptorGet.js","webpack://dh-historiescroll/./node_modules/@babel/runtime/helpers/esm/classPrivateFieldSet.js","webpack://dh-historiescroll/./node_modules/@babel/runtime/helpers/esm/classApplyDescriptorSet.js","webpack://dh-historiescroll/./node_modules/@babel/runtime/helpers/esm/typeof.js","webpack://dh-historiescroll/./node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","webpack://dh-historiescroll/./node_modules/@babel/runtime/helpers/esm/toPrimitive.js","webpack://dh-historiescroll/./node_modules/@babel/runtime/helpers/esm/defineProperty.js","webpack://dh-historiescroll/webpack/bootstrap","webpack://dh-historiescroll/webpack/runtime/amd options","webpack://dh-historiescroll/webpack/runtime/compat get default export","webpack://dh-historiescroll/webpack/runtime/define property getters","webpack://dh-historiescroll/webpack/runtime/ensure chunk","webpack://dh-historiescroll/webpack/runtime/get javascript chunk filename","webpack://dh-historiescroll/webpack/runtime/get mini-css chunk filename","webpack://dh-historiescroll/webpack/runtime/global","webpack://dh-historiescroll/webpack/runtime/hasOwnProperty shorthand","webpack://dh-historiescroll/webpack/runtime/make namespace object","webpack://dh-historiescroll/webpack/runtime/node module decorator","webpack://dh-historiescroll/webpack/runtime/publicPath","webpack://dh-historiescroll/webpack/runtime/css loading","webpack://dh-historiescroll/./node_modules/@nrk/dh-vh/dist/index.mjs","webpack://dh-historiescroll/./src/polyfills.js","webpack://dh-historiescroll/./node_modules/@nrk/dh-basis-levende-stillbilde/dh-basis-levende-stillbilde.esm.js","webpack://dh-historiescroll/./node_modules/@nrk/dh-basis-stegvis-video/dh-basis-stegvis-video.esm.js","webpack://dh-historiescroll/./node_modules/@nrk/dh-basis-mixins/dh-basis-mixins.esm.js","webpack://dh-historiescroll/./node_modules/@nrk/dh-basis-scrollhistorie/dh-basis-scrollhistorie.esm.js","webpack://dh-historiescroll/./node_modules/@nrk/dh-basis-scrollanimasjon/dh-basis-scrollanimasjon.esm.js","webpack://dh-historiescroll/./src/components/media/shared/scroll-progress.module.css?5d5d","webpack://dh-historiescroll/./src/components/cards/alt-text.module.css?2333","webpack://dh-historiescroll/./src/components/app.ts","webpack://dh-historiescroll/./src/client.ts"],"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\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(!/^(31|40)4$/.test(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); 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 = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : 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 * */\n\nfunction loadImage(image) {\n if (image.loading === 'lazy') {\n image.loading = 'eager';\n }\n}\n\nfunction connectScrollContainerLazyLoad(container, images) {\n var containerIntersecting = false;\n var deferredImages = []; // 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 if (containerIntersecting) {\n deferredImages.forEach(image => loadImage(image));\n deferredImages = [];\n }\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 for (var entry of entries) {\n if (entry.isIntersecting) {\n var image = entry.target;\n imageObserver.unobserve(image);\n\n if (containerIntersecting) {\n loadImage(image);\n } else {\n /* Defer loading of if the container is not intersecting the viewport */\n deferredImages.push(image);\n }\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 timeout = 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 { 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.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 // error reporter has been removed\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: '',\n enabled: false,\n }\n }\n}\n\nmodule.exports.BaseElement = BaseElement\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 (root, factory) {\n if (typeof define === \"function\" && define.amd) {\n define([], factory);\n } else if (typeof module === \"object\" && module.exports) {\n module.exports = factory();\n } else {\n root.Scrollparent = factory();\n }\n}(this, function () {\n var regex = /(auto|scroll)/;\n\n var parents = function (node, ps) {\n if (node.parentNode === null) { return ps; }\n\n return parents(node.parentNode, ps.concat([node]));\n };\n\n var style = function (node, prop) {\n return getComputedStyle(node, null).getPropertyValue(prop);\n };\n\n var overflow = function (node) {\n return style(node, \"overflow\") + style(node, \"overflow-y\") + style(node, \"overflow-x\");\n };\n\n var scroll = function (node) {\n return regex.test(overflow(node));\n };\n\n var scrollParent = function (node) {\n if (!(node instanceof HTMLElement || node instanceof SVGElement)) {\n return ;\n }\n\n var ps = parents(node.parentNode, []);\n\n for (var i = 0; i < ps.length; i += 1) {\n if (scroll(ps[i])) {\n return ps[i];\n }\n }\n\n return document.scrollingElement || document.documentElement;\n };\n\n return scrollParent;\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 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 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 descriptor.value = value;\n }\n}","export default function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, _typeof(obj);\n}","import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nexport default function _toPropertyKey(arg) {\n var key = toPrimitive(arg, \"string\");\n return _typeof(key) === \"symbol\" ? key : String(key);\n}","import _typeof from \"./typeof.js\";\nexport default function _toPrimitive(input, hint) {\n if (_typeof(input) !== \"object\" || input === null) return input;\n var prim = input[Symbol.toPrimitive];\n if (prim !== undefined) {\n var res = prim.call(input, hint || \"default\");\n if (_typeof(res) !== \"object\") return res;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (hint === \"string\" ? String : Number)(input);\n}","import toPropertyKey from \"./toPropertyKey.js\";\nexport default function _defineProperty(obj, key, value) {\n key = toPropertyKey(key);\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 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","__webpack_require__.amdO = {};","// 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 \"\" + ({\"141\":\"dh-karthistorie\",\"371\":\"dh-preview-iframe\",\"537\":\"ca\",\"577\":\"dh-stegvis-lottie\",\"658\":\"dhhs-video\"}[chunkId] || chunkId) + \"-chunk-\" + {\"141\":\"e1666c3b3c88cb59ca4a\",\"314\":\"77def9e48335ec6ab23d\",\"371\":\"893e26fdd423578df2d0\",\"404\":\"32f971ab11c9d861dccd\",\"537\":\"7f46a9303f533c62a4a1\",\"577\":\"f536bfd98ff4ecc3e19d\",\"658\":\"3e861cb0ef89373e0eb9\",\"719\":\"f1d2494e020190819cc3\",\"863\":\"99d8b590601053887c53\"}[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 + \"-\" + {\"314\":\"beaa04ec240bb6965991\",\"404\":\"7f02de5e603b2863e7f2\"}[chunkId] + \".css\";\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (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/historiescroll/static/\";","if (typeof document === \"undefined\") return;\nvar createStylesheet = (chunkId, fullhref, oldTag, 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\tif (oldTag) {\n\t\toldTag.parentNode.insertBefore(linkTag, oldTag.nextSibling);\n\t} else {\n\t\tdocument.head.appendChild(linkTag);\n\t}\n\treturn linkTag;\n};\nvar findStylesheet = (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, null, 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 = {\"314\":1,\"404\":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","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","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 _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 _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); 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 = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : 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 _classPrivateMethodInitSpec$1(obj, privateSet) { _checkPrivateRedeclaration$1(obj, privateSet); privateSet.add(obj); }\n\nfunction _classPrivateFieldInitSpec(obj, privateMap, value) { _checkPrivateRedeclaration$1(obj, privateMap); privateMap.set(obj, value); }\n\nfunction _checkPrivateRedeclaration$1(obj, privateCollection) { if (privateCollection.has(obj)) { throw new TypeError(\"Cannot initialize the same private elements twice on an object\"); } }\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 _classPrivateMethodInitSpec$1(this, _disconnectIntersectionObserver);\n\n _classPrivateMethodInitSpec$1(this, _createIntersectionObserver);\n\n _classPrivateFieldInitSpec(this, _observer, {\n writable: true,\n value: void 0\n });\n\n _classPrivateFieldInitSpec(this, _handleIntersectionChange, {\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|Document}\n */\n\n\n get viewportIntersectionRoot() {\n var viewportContainer = this.viewportContainer;\n\n if (isViewport(viewportContainer)) {\n var isIFrame = window.location !== window.parent.location;\n\n if (isIFrame) {\n /* Use document as intersection root in iframes */\n return document;\n } else {\n return null;\n }\n } else {\n return viewportContainer;\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 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 _classPrivateMethodInitSpec(obj, privateSet) { _checkPrivateRedeclaration(obj, privateSet); privateSet.add(obj); }\n\nfunction _checkPrivateRedeclaration(obj, privateCollection) { if (privateCollection.has(obj)) { throw new TypeError(\"Cannot initialize the same private elements twice on an object\"); } }\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, _boundAttributes;\n\n return _getTargetElements = /*#__PURE__*/new WeakSet(), (_class = class AttributeBindingMixinDef extends Base {\n constructor() {\n super(...arguments);\n\n _classPrivateMethodInitSpec(this, _getTargetElements);\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 }, _class);\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 { toArray, setAttribute, dispatchEvent, 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 _classPrivateMethodInitSpec(obj, privateSet) { _checkPrivateRedeclaration(obj, privateSet); privateSet.add(obj); }\n\nfunction _classPrivateFieldInitSpec(obj, privateMap, value) { _checkPrivateRedeclaration(obj, privateMap); privateMap.set(obj, value); }\n\nfunction _checkPrivateRedeclaration(obj, privateCollection) { if (privateCollection.has(obj)) { throw new TypeError(\"Cannot initialize the same private elements twice on an object\"); } }\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 ROOT_MARGIN_ATTR = 'root-margin';\n/* Child attributes */\n\nvar BG_ID_ATTR = 'data-background-id';\nvar SHOW_BACKGROUND_ATTR = 'data-show-background';\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/**\n * Custom element that manages a set of background and trigger 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 * `data-attribute-name` and `data-attribute-value` attributes.\n *\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\nclass Scrollhistorie extends ViewportPositionMixin(AttributeBindingMixin(HTMLElement)) {\n constructor() {\n super(...arguments);\n\n _classPrivateMethodInitSpec(this, _getBackgroundId);\n\n _classPrivateMethodInitSpec(this, _updateBackgrounds);\n\n _classPrivateMethodInitSpec(this, _prepareBackgrounds);\n\n _classPrivateMethodInitSpec(this, _disconnectIntersectionObserver);\n\n _classPrivateMethodInitSpec(this, _createIntersectionObserver);\n\n _classPrivateFieldInitSpec(this, _activeTriggerIndex, {\n writable: true,\n value: void 0\n });\n\n _classPrivateFieldInitSpec(this, _observer, {\n writable: true,\n value: void 0\n });\n\n _classPrivateFieldInitSpec(this, _handleTriggerChange, {\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 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];\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 }\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 /* 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}\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\nexport { Scrollhistorie as default };\n//# sourceMappingURL=dh-basis-scrollhistorie.esm.js.map\n","import _defineProperty from '@babel/runtime/helpers/defineProperty';\nimport _classPrivateFieldGet from '@babel/runtime/helpers/classPrivateFieldGet';\nimport _classPrivateFieldSet from '@babel/runtime/helpers/classPrivateFieldSet';\nimport { testReducedMotion, debounce } from '@nrk/dh-basis-common';\nimport scrollParent from 'scrollparent';\n\nfunction parseOffsetString(offsetString, target) {\n return offsetString.split(',').map(offset => offset.trim()).map(offset => {\n if (offset === '' || offset === 'auto') {\n return 'auto';\n } else if (offset.match(/^\\d*%$/)) {\n return offset;\n } else if (offset.match(/^(\\d*)px$/)) {\n return offset;\n } else {\n var _offset$match;\n\n var edge;\n\n if (offset.match(/start/)) {\n edge = 'start';\n } else if (offset.match(/end/)) {\n edge = 'end';\n }\n\n var threshold;\n var componentValue = (_offset$match = offset.match(/\\d+\\.?\\d*/)) === null || _offset$match === void 0 ? void 0 : _offset$match[0];\n\n if (componentValue) {\n threshold = parseFloat(componentValue);\n }\n\n return {\n target,\n edge,\n threshold\n };\n }\n });\n}\n\nvar horizontalProperties = {\n dimension: 'width',\n position: 'left',\n scrollDimension: 'scrollWidth',\n clientDimension: 'clientWidth',\n scrollPosition: 'scrollLeft',\n scrollPaddingStart: 'scrollPaddingLeft',\n scrollPaddingEnd: 'scrollPaddingRight'\n};\nvar verticalProperties = {\n dimension: 'height',\n position: 'top',\n scrollDimension: 'scrollHeight',\n clientDimension: 'clientHeight',\n scrollPosition: 'scrollTop',\n scrollPaddingStart: 'scrollPaddingTop',\n scrollPaddingEnd: 'scrollPaddingBottom'\n};\nfunction getDirectionPropNames(direction, source) {\n if (direction === 'horizontal') {\n return horizontalProperties;\n } else if (direction === 'vertical') {\n return verticalProperties;\n }\n\n var writingMode = getComputedStyle(source)['writing-mode'];\n var blockAxis = writingMode === 'horizontal-tb' ? 'vertical' : 'horizontal';\n\n if (direction === 'block') {\n return blockAxis === 'vertical' ? verticalProperties : horizontalProperties;\n } else if (direction === 'inline') {\n return blockAxis === 'vertical' ? horizontalProperties : verticalProperties;\n }\n\n return verticalProperties;\n}\n\nvar scrollOverflowRegex = /(auto|scroll)/;\n/*\n * Parse effective scroll offsets as defined in\n * https://drafts.csswg.org/scroll-animations-1/#effective-scroll-offsets-algorithm\n * */\n\nfunction calculateEffectiveScrollOffsets(scrollOffsets, source, direction, scrollPadding) {\n var effectiveScrollOffsets = [];\n var firstOffset = true;\n\n if (scrollOffsets.length === 0) {\n effectiveScrollOffsets.push(calculateEffectiveOffset(source, 'auto', direction, scrollPadding, firstOffset));\n firstOffset = false;\n effectiveScrollOffsets.push(calculateEffectiveOffset(source, 'auto', direction, scrollPadding, firstOffset));\n }\n\n if (scrollOffsets.length === 1) {\n effectiveScrollOffsets.push(calculateEffectiveOffset(source, 'auto', direction, scrollPadding, firstOffset));\n firstOffset = false;\n }\n\n for (var scrollOffset of scrollOffsets) {\n var effectiveOffset = calculateEffectiveOffset(source, scrollOffset, direction, scrollPadding, firstOffset);\n\n if (effectiveOffset === null) {\n return [];\n }\n\n effectiveScrollOffsets.push(effectiveOffset);\n firstOffset = false;\n }\n\n return effectiveScrollOffsets;\n}\n\nfunction calculateEffectiveOffset(source, offset, direction, scrollPadding, first) {\n if (typeof offset === 'string') {\n return calculateContainerBasedOffset(source, offset, direction, first);\n } else if (offset !== null && offset !== void 0 && offset.target) {\n return calculateElementBasedOffset(source, offset, direction, scrollPadding);\n }\n\n return null;\n}\n/*\n * Calculate container based offset as defiened in\n * https://drafts.csswg.org/scroll-animations-1/#container-based-offset-section\n */\n\n\nfunction calculateContainerBasedOffset(source, offset, direction, first) {\n if (!source || !hasLayoutBox(source)) {\n return null;\n }\n\n if (!isScrollContainer(source)) {\n return null;\n } else if (offset === 'auto') {\n if (first) {\n return getSourceStart();\n } else {\n return getSourceEnd(source, direction);\n }\n } else if (typeof offset === 'string' && offset.endsWith('px')) {\n return parseFloat(offset.substring(0, offset.length - 2));\n } else if (typeof offset === 'string' && offset.endsWith('%')) {\n var percentValue = parseFloat(offset.substring(0, offset.length - 1));\n var scrollRange = getSourceEnd(source, direction);\n return percentValue * scrollRange / 100.0;\n }\n}\n/* Calculate element based offsets as defined in\n * https://drafts.csswg.org/scroll-animations-1/#element-based-offset-section\n *\n * Deviating from standard by supporting scroll-padding\n * */\n\nfunction calculateElementBasedOffset(source, offset, direction, scrollPadding) {\n var {\n target,\n edge,\n threshold\n } = offset;\n var props = getDirectionPropNames(direction, source);\n\n if (!source || !hasLayoutBox(source)) {\n console.log('Missing or hidden source');\n return null;\n }\n\n if (!isScrollContainer(source) || !target || !hasLayoutBox(target)) {\n return null;\n }\n\n var ancestor = getNearestScrollContainerAncestor(target);\n\n if (!isSameScrollcontainer(ancestor, source)) {\n console.warn('Target does not have source as nearest scrollport', source, ancestor);\n return null;\n }\n\n var targetBox = getAxisAlignedTargetBox(source, target);\n var scrollOffset;\n\n if (edge === 'start') {\n var _scrollPadding$props$;\n\n var startEdge = targetBox[props.position] + targetBox[props.dimension] - ((_scrollPadding$props$ = scrollPadding === null || scrollPadding === void 0 ? void 0 : scrollPadding[props.scrollPaddingStart]) !== null && _scrollPadding$props$ !== void 0 ? _scrollPadding$props$ : 0);\n scrollOffset = startEdge - threshold * targetBox[props.dimension];\n } else if (edge === 'end') {\n var _scrollPadding$props$2;\n\n var endEdge = targetBox[props.position] - getClientDimension(source, props) + ((_scrollPadding$props$2 = scrollPadding === null || scrollPadding === void 0 ? void 0 : scrollPadding[props.scrollPaddingEnd]) !== null && _scrollPadding$props$2 !== void 0 ? _scrollPadding$props$2 : 0);\n scrollOffset = endEdge + threshold * targetBox[props.dimension];\n }\n\n return clamp(scrollOffset, getSourceStart(), getSourceEnd(source, direction));\n}\n\nfunction isSameScrollcontainer(a, b) {\n return a === b || // eslint-disable-next-line compat/compat\n a === document.documentElement && b === document.scrollingElement || // eslint-disable-next-line compat/compat\n a === document.scrollingElement && b === document.documentElement;\n}\n\nfunction getAxisAlignedTargetBox(source, target) {\n var targetRect = target.getBoundingClientRect();\n\n if (source === document.scrollingElement) {\n return {\n top: targetRect.top + source.scrollTop,\n left: targetRect.left + source.scrollLeft,\n width: targetRect.width,\n height: targetRect.height\n };\n } else {\n var containerRect = source.getBoundingClientRect();\n return {\n top: targetRect.top - containerRect.top + source.scrollTop,\n left: targetRect.left - containerRect.left + source.scrollLeft,\n width: targetRect.width,\n height: targetRect.height\n };\n }\n}\n\nfunction clamp(value, min, max) {\n return Math.max(Math.min(value, max), min);\n}\n\nfunction getSourceStart() {\n return 0;\n}\n\nfunction getClientDimension(source, propNames) {\n if (source === document.scrollingElement) {\n // In Safari <=12 body is the scrolling element, while client height can be found on the root.\n return Math.min(document.scrollingElement[propNames.clientDimension], document.documentElement[propNames.clientDimension]);\n } else {\n return source[propNames.clientDimension];\n }\n}\n\nfunction getSourceEnd(source, direction) {\n var propNames = getDirectionPropNames(direction);\n var clientDimension = getClientDimension(source, propNames);\n return source[propNames.scrollDimension] - clientDimension;\n}\n\nfunction hasLayoutBox(element) {\n return Boolean(element.offsetWidth && element.offsetHeight);\n}\n/* Caches the result and does not update if styles change */\n\n\nfunction getNearestScrollContainerAncestor(target) {\n return scrollParent(target);\n}\n\nfunction isScrollContainer(source) {\n var computed = getComputedStyle(source);\n var overflowString = computed.overflow + computed['overflow-x'] + computed['overflow-y']; // eslint-disable-next-line compat/compat\n\n var rootScrollElement = document.scrollingElement || document.documentElement;\n return source === rootScrollElement || scrollOverflowRegex.test(overflowString);\n}\n\nfunction calculateScrollProgress(source, scrollOffsets, direction) {\n var propNames = getDirectionPropNames(direction, source);\n var offset = source[propNames.scrollPosition];\n var firstOffset = scrollOffsets[0];\n /* Ranges outside the first and last offset is not covered in the spec for progress. Clamping */\n\n var lastOffset = scrollOffsets[scrollOffsets.length - 1];\n\n if (offset < firstOffset) {\n return 0;\n } else if (offset >= lastOffset) {\n return 1;\n }\n\n var offsetIndex;\n\n for (var i = 0; i < scrollOffsets.length; i++) {\n var scrollOffset = scrollOffsets[i];\n\n if (scrollOffset <= offset) {\n offsetIndex = i;\n }\n }\n\n var startOffset = scrollOffsets[offsetIndex];\n var endOffset = scrollOffsets[offsetIndex + 1];\n var offsetWeight = 1 / (scrollOffsets.length - 1);\n var intervalProgress = (offset - startOffset) / (endOffset - startOffset);\n return (offsetIndex + intervalProgress) * offsetWeight;\n}\n\nfunction getScrollportHeight(source) {\n if (source === document.scrollingElement || source === document.documentElement) {\n // Use innerHeight when source is root element\n return window.innerHeight;\n } else {\n return source.clientHeight;\n }\n}\nfunction getScrollportWidth(source) {\n if (source === document.scrollingElement || source === document.documentElement) {\n // Use innerHeight when source is root element\n return window.innerWidth;\n } else {\n return source.clientWidth;\n }\n}\n\n/*\n * Calculate effective scroll paddings as pixel values.\n * Supports pixel and percentage values resolved relative to source.\n *\n * Viewport units are not supporteds\n *\n * https://drafts.csswg.org/css-scroll-snap-1/#propdef-scroll-padding\n **/\nfunction calculateEffectiveScrollPaddings(scrollPaddings, source) {\n var result = {};\n\n for (var [key, value] of Object.entries(scrollPaddings)) {\n if (value.endsWith('px')) {\n result[key] = parseFloat(value.substring(0, value.length - 2));\n }\n\n if (value.endsWith('%')) {\n var p = parseFloat(value.substring(0, value.length - 1));\n\n if (['scrollPaddingTop', 'scrollPaddingBottom'].includes(key)) {\n result[key] = p * getScrollportHeight(source) / 100.0;\n } else if (['scrollPaddingLeft', 'scrollPaddingRight'].includes(key)) {\n result[key] = p * getScrollportWidth(source) / 100.0;\n }\n }\n }\n\n return result;\n}\n\n/*\n * Parse scroll padding shorthand string the same way padding strings:\n *\n * https://drafts.csswg.org/css-box-4/#propdef-padding\n * */\nfunction parseScrollPadding() {\n var paddingString = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n var padding = paddingString.split(' ').filter(Boolean);\n\n if (padding.length === 0) {\n return {\n scrollPaddingTop: '0px',\n scrollPaddingRight: '0px',\n scrollPaddingBottom: '0px',\n scrollPaddingLeft: '0px'\n };\n } else if (padding.length === 1) {\n return {\n scrollPaddingTop: padding[0],\n scrollPaddingRight: padding[0],\n scrollPaddingBottom: padding[0],\n scrollPaddingLeft: padding[0]\n };\n } else if (padding.length === 2) {\n var [vertical, horizontal] = padding;\n return {\n scrollPaddingTop: vertical,\n scrollPaddingRight: horizontal,\n scrollPaddingBottom: vertical,\n scrollPaddingLeft: horizontal\n };\n } else if (padding.length === 3) {\n var [top, _horizontal, bottom] = padding;\n return {\n scrollPaddingTop: top,\n scrollPaddingRight: _horizontal,\n scrollPaddingBottom: bottom,\n scrollPaddingLeft: _horizontal\n };\n } else if (padding.length === 4) {\n var [_top, right, _bottom, left] = padding;\n return {\n scrollPaddingTop: _top,\n scrollPaddingRight: right,\n scrollPaddingBottom: _bottom,\n scrollPaddingLeft: left\n };\n }\n}\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); 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 = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _classPrivateMethodInitSpec(obj, privateSet) { _checkPrivateRedeclaration(obj, privateSet); privateSet.add(obj); }\n\nfunction _classPrivateFieldInitSpec(obj, privateMap, value) { _checkPrivateRedeclaration(obj, privateMap); privateMap.set(obj, value); }\n\nfunction _checkPrivateRedeclaration(obj, privateCollection) { if (privateCollection.has(obj)) { throw new TypeError(\"Cannot initialize the same private elements twice on an object\"); } }\n\nfunction _classPrivateMethodGet(receiver, privateSet, fn) { if (!privateSet.has(receiver)) { throw new TypeError(\"attempted to get private field on non-instance\"); } return fn; }\n/*\n * Mixin for custom elements\n *\n * Keeps track of multiple scroll timelines and calls updatedCallback whenever\n * progress in a scroll timeline has changed.\n *\n * Inspired by https://drafts.csswg.org/scroll-animations-1/\n */\n\nfunction ScrollanimasjonMixin(Base) {\n var _effectiveScrollPaddings, _effectiveScrollTimelines, _isWatching, _reducedMotion, _observer, _debouncedUpdateOffsets, _targetPositions, _createIntersectionObserver, _disconnectIntersectionObserver, _handleVisibilityChange, _getTargetPositions, _needsEffectiveOffsetUpdate, _updateEffectiveOffsets, _startWatching, _stopWatching;\n\n return _effectiveScrollPaddings = /*#__PURE__*/new WeakMap(), _effectiveScrollTimelines = /*#__PURE__*/new WeakMap(), _isWatching = /*#__PURE__*/new WeakMap(), _reducedMotion = /*#__PURE__*/new WeakMap(), _observer = /*#__PURE__*/new WeakMap(), _debouncedUpdateOffsets = /*#__PURE__*/new WeakMap(), _targetPositions = /*#__PURE__*/new WeakMap(), _createIntersectionObserver = /*#__PURE__*/new WeakSet(), _disconnectIntersectionObserver = /*#__PURE__*/new WeakSet(), _handleVisibilityChange = /*#__PURE__*/new WeakMap(), _getTargetPositions = /*#__PURE__*/new WeakSet(), _needsEffectiveOffsetUpdate = /*#__PURE__*/new WeakSet(), _updateEffectiveOffsets = /*#__PURE__*/new WeakMap(), _startWatching = /*#__PURE__*/new WeakSet(), _stopWatching = /*#__PURE__*/new WeakSet(), class extends Base {\n constructor() {\n super(...arguments);\n\n _classPrivateMethodInitSpec(this, _stopWatching);\n\n _classPrivateMethodInitSpec(this, _startWatching);\n\n _classPrivateMethodInitSpec(this, _needsEffectiveOffsetUpdate);\n\n _classPrivateMethodInitSpec(this, _getTargetPositions);\n\n _classPrivateMethodInitSpec(this, _disconnectIntersectionObserver);\n\n _classPrivateMethodInitSpec(this, _createIntersectionObserver);\n\n _classPrivateFieldInitSpec(this, _effectiveScrollPaddings, {\n writable: true,\n value: void 0\n });\n\n _classPrivateFieldInitSpec(this, _effectiveScrollTimelines, {\n writable: true,\n value: []\n });\n\n _classPrivateFieldInitSpec(this, _isWatching, {\n writable: true,\n value: false\n });\n\n _classPrivateFieldInitSpec(this, _reducedMotion, {\n writable: true,\n value: testReducedMotion()\n });\n\n _classPrivateFieldInitSpec(this, _observer, {\n writable: true,\n value: void 0\n });\n\n _classPrivateFieldInitSpec(this, _debouncedUpdateOffsets, {\n writable: true,\n value: void 0\n });\n\n _classPrivateFieldInitSpec(this, _targetPositions, {\n writable: true,\n value: []\n });\n\n _classPrivateFieldInitSpec(this, _handleVisibilityChange, {\n writable: true,\n value: _ref => {\n var [containerIntersection] = _ref;\n\n if (containerIntersection.isIntersecting) {\n _classPrivateMethodGet(this, _startWatching, _startWatching2).call(this);\n } else {\n _classPrivateMethodGet(this, _stopWatching, _stopWatching2).call(this);\n }\n }\n });\n\n _classPrivateFieldInitSpec(this, _updateEffectiveOffsets, {\n writable: true,\n value: () => {\n // Record offset target positions so that we can detect changes in layout.\n _classPrivateFieldSet(this, _targetPositions, _classPrivateMethodGet(this, _getTargetPositions, _getTargetPositions2).call(this));\n\n _classPrivateFieldSet(this, _effectiveScrollPaddings, calculateEffectiveScrollPaddings(this.scrollPadding, this.source));\n\n _classPrivateFieldSet(this, _effectiveScrollTimelines, this.timelines.map(timeline => {\n return _objectSpread(_objectSpread({}, timeline), {}, {\n effectiveScrollOffsets: calculateEffectiveScrollOffsets(timeline.scrollOffsets, this.source, this.direction, _classPrivateFieldGet(this, _effectiveScrollPaddings))\n });\n }));\n }\n });\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); // eslint-disable-next-line compat/compat\n\n var isSupported = !!document.scrollingElement;\n\n if (!isSupported) {\n return;\n }\n\n _classPrivateFieldSet(this, _reducedMotion, testReducedMotion());\n\n if (_classPrivateFieldGet(this, _reducedMotion)) {\n // Default to timeline end if user request reduced motion\n for (var timeline of this.timelines) {\n this.timelineUpdatedCallback(timeline.id, 1);\n }\n\n return;\n }\n\n _classPrivateFieldGet(this, _updateEffectiveOffsets).call(this);\n\n _classPrivateFieldSet(this, _debouncedUpdateOffsets, debounce(_classPrivateFieldGet(this, _updateEffectiveOffsets), 200));\n\n window.addEventListener('resize', _classPrivateFieldGet(this, _debouncedUpdateOffsets));\n this.addEventListener('dh-basis-size-changed', _classPrivateFieldGet(this, _debouncedUpdateOffsets));\n\n _classPrivateMethodGet(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 window.removeEventListener('resize', _classPrivateFieldGet(this, _debouncedUpdateOffsets));\n this.removeEventListener('dh-basis-size-changed', _classPrivateFieldGet(this, _debouncedUpdateOffsets));\n\n _classPrivateMethodGet(this, _disconnectIntersectionObserver, _disconnectIntersectionObserver2).call(this);\n\n _classPrivateMethodGet(this, _stopWatching, _stopWatching2).call(this);\n }\n\n /* Override this method to perform updates */\n timelineUpdatedCallback(timelineId, progress) {\n console.log(timelineId, progress.toFixed(3));\n }\n\n get timelines() {\n return [{\n id: 'scrollprosent',\n scrollOffsets: [{\n target: this,\n edge: 'end',\n threshold: 0\n }, {\n target: this,\n edge: 'start',\n threshold: 0\n }]\n }];\n }\n\n get source() {\n // eslint-disable-next-line compat/compat\n return document.scrollingElement;\n }\n\n get direction() {\n /* block, inline, horizontal, vertical */\n return 'vertical';\n }\n /*\n * Set scroll padding as defined in https://drafts.csswg.org/css-scroll-snap-1/#propdef-scroll-padding\n */\n\n\n get scrollPadding() {\n var paddingString = this.getAttribute('scroll-padding') || '0px 0px 0px 0px';\n return parseScrollPadding(paddingString);\n }\n\n };\n\n function _createIntersectionObserver2() {\n // eslint-disable-next-line compat/compat\n _classPrivateFieldSet(this, _observer, new IntersectionObserver(_classPrivateFieldGet(this, _handleVisibilityChange), {\n /*\n Use document as root, so that intersections are tracked against iframe scrolling viewport if embedded (polopoly-preview).\n (No root would use the viewport, even when embedded in iframe)\n https://w3c.github.io/IntersectionObserver/#dom-intersectionobserver-root\n */\n root: document,\n threshold: [0]\n }));\n\n _classPrivateFieldGet(this, _observer).observe(this);\n }\n\n function _disconnectIntersectionObserver2() {\n if (_classPrivateFieldGet(this, _observer)) {\n _classPrivateFieldGet(this, _observer).disconnect();\n }\n }\n\n function _getTargetPositions2() {\n return this.timelines.flatMap(timeline => timeline.scrollOffsets).map(scrollOffset => scrollOffset.target).map(target => {\n var propNames = getDirectionPropNames(this.direction, this.source);\n return target.getBoundingClientRect()[propNames.position] + this.source[propNames.scrollPosition];\n });\n }\n\n function _needsEffectiveOffsetUpdate2() {\n var currentTargetPositions = _classPrivateMethodGet(this, _getTargetPositions, _getTargetPositions2).call(this);\n\n for (var [index, position] of currentTargetPositions.entries()) {\n if (_classPrivateFieldGet(this, _targetPositions)[index] !== position) {\n return true;\n }\n }\n }\n\n function _startWatching2() {\n if (_classPrivateFieldGet(this, _isWatching)) {\n return;\n }\n\n if (_classPrivateMethodGet(this, _needsEffectiveOffsetUpdate, _needsEffectiveOffsetUpdate2).call(this)) {\n _classPrivateFieldGet(this, _updateEffectiveOffsets).call(this);\n }\n\n var loop = () => {\n if (_classPrivateFieldGet(this, _isWatching)) {\n requestAnimationFrame(loop);\n } else {\n return;\n }\n\n for (var timeline of _classPrivateFieldGet(this, _effectiveScrollTimelines)) {\n var progress = calculateScrollProgress(this.source, timeline.effectiveScrollOffsets, this.direction);\n\n if (progress !== timeline.progress) {\n this.timelineUpdatedCallback(timeline.id, progress);\n }\n\n timeline.progress = progress;\n }\n };\n\n _classPrivateFieldSet(this, _isWatching, true);\n\n requestAnimationFrame(loop);\n }\n\n function _stopWatching2() {\n _classPrivateFieldSet(this, _isWatching, false);\n }\n}\n\nclass Scrollprosent extends ScrollanimasjonMixin(HTMLElement) {\n timelineUpdatedCallback(timelineId, progress) {\n var _this$targetElement;\n\n (_this$targetElement = this.targetElement) === null || _this$targetElement === void 0 ? void 0 : _this$targetElement.setAttribute('data-percent', progress);\n }\n\n get targetElement() {\n return this.querySelector('[data-percent]');\n }\n\n get timelines() {\n return [{\n id: 'scrollprosent',\n scrollOffsets: this.scrollOffsets\n }];\n }\n /*\n Get scroll offsets according to @scroll-timeline definition.\n */\n\n\n get scrollOffsets() {\n var _this$getAttribute;\n\n var offsetString = (_this$getAttribute = this.getAttribute('scroll-offsets')) !== null && _this$getAttribute !== void 0 ? _this$getAttribute : '';\n return parseOffsetString(offsetString, this);\n }\n\n}\n\nexport { ScrollanimasjonMixin, Scrollprosent, parseOffsetString };\n//# sourceMappingURL=dh-basis-scrollanimasjon.esm.js.map\n","// extracted by mini-css-extract-plugin\nexport default {\"scroll-progress\":\"dhhs-scroll-progress\",\"scrollProgress\":\"dhhs-scroll-progress\"};","// extracted by mini-css-extract-plugin\nexport default {\"altText\":\"dhhs-altText\"};","import Scrollhistorie from '@nrk/dh-basis-scrollhistorie'\nimport { closest } from '@nrk/dh-basis-common'\nimport { ScrollanimasjonMixin, parseOffsetString } from '@nrk/dh-basis-scrollanimasjon'\nimport scrollStyles from './media/shared/scroll-progress.module.css'\nimport altStyles from './cards/alt-text.module.css'\n\nexport class HistorieScroll extends ScrollanimasjonMixin(Scrollhistorie) {\n #scrollingTimeout\n\n connectedCallback() {\n super.connectedCallback()\n document.addEventListener('scroll', this.#handleScroll)\n this.addEventListener('focus', this.#handleFocus, true)\n }\n\n disconnectedCallback() {\n super.disconnectedCallback()\n document.removeEventListener('scroll', this.#handleScroll)\n this.removeEventListener('focus', this.#handleFocus, true)\n }\n\n #handleScroll = () => {\n if (this.#scrollingTimeout) {\n clearTimeout(this.#scrollingTimeout)\n } else {\n this.setAttribute('scrolling', '')\n }\n\n this.#scrollingTimeout = setTimeout(() => {\n this.removeAttribute('scrolling')\n this.#scrollingTimeout = null\n }, 300)\n }\n\n #handleFocus = (e) => {\n const backgroundElement = closest(e.target, '[data-background-id]')\n const altTextElement = e.target && closest(e.target, `.${altStyles.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 triggerElement.scrollIntoView({ behavior: 'smooth' })\n }\n }\n\n /*\n * Handle scroll animation timeline update.\n */\n timelineUpdatedCallback(timelineId, progress) {\n const elements = this.querySelectorAll(\n `[data-background-id=\"${timelineId}\"] .${scrollStyles.scrollProgress}`\n )\n for (let element of elements) {\n if (element instanceof HTMLElement) {\n element.style.setProperty('--dhhs-progress', progress.toFixed(2))\n }\n }\n }\n\n /*\n * Define scroll animation timelines.\n * Placeholder cards with no text generates an animation timeline that starts when the card\n * enters the screen and ends when the card leaves the screen. The offsets are defined on the\n * card itself using a `data-scroll-offsets` attribute.\n *\n * Scroll offsets are defined based on the scroll animations draft:\n * https://drafts.csswg.org/scroll-animations-1/#scroll-timeline-offset-section\n *\n * The offset target is set to the element with `data-scroll-offsets` attribute.\n *\n * Ex: `end 0.0, start 1.0`.\n */\n public get timelines() {\n return Array.from(this.querySelectorAll('[data-scroll-offsets]'))\n .map((element: HTMLElement) => ({\n id: element.getAttribute('data-scroll-timeline'),\n scrollOffsets: parseOffsetString(element.getAttribute('data-scroll-offsets'), element),\n }))\n .reduce(groupOffsetsByTimeline, [])\n }\n}\n\nfunction groupOffsetsByTimeline(list, { id, scrollOffsets }) {\n let timeline = list.find((el) => el.id === id)\n if (!timeline) {\n timeline = {\n id,\n scrollOffsets: [],\n }\n list.push(timeline)\n }\n timeline.scrollOffsets.push(...scrollOffsets)\n return list\n}\n","import './polyfills'\nimport { 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 StegvisVideo from '@nrk/dh-basis-stegvis-video'\n\nimport { HistorieScroll } from './components/app'\n\nimport './components/app.module.css'\nimport './components/media/media.module.css'\nimport './components/media/media-types.module.css'\nimport './components/media/shared/object-fit.module.css'\nimport './components/media/shared/scroll-progress.module.css'\nimport './components/cards/cards.module.css'\nimport './components/cards/alt-text.module.css'\n\nfunction safeDefine(elementName, constructor) {\n if (typeof customElements.get(elementName) === 'undefined') {\n customElements.define(elementName, constructor)\n }\n}\n\nconst tag = getElementTag(__APP_NAME__, __APP_VERSION__)\n\nclass AppElement extends BaseElement {\n name = tag\n #observer\n\n connectedCallback() {\n super.connectedCallback()\n\n this.addEventListener('dh-basis-scrollhistorie-trigger-activated', this.#handleTriggerActivated)\n this.#startCompletionLogger()\n }\n\n disconnectedCallback() {\n this.removeEventListener(\n 'dh-basis-scrollhistorie-trigger-activated',\n this.#handleTriggerActivated\n )\n this.#stopCompletionLogger()\n }\n\n async render() {\n // Register custom elements as needed\n safeDefine('dhhs-scrollhistorie', HistorieScroll)\n safeDefine('dhhs-levende-stillbilde', LevendeStillbilde)\n safeDefine('dhhs-stegvis-video', StegvisVideo)\n\n if (\n this.features.video &&\n (typeof customElements.get('dhhs-article-player') === 'undefined' ||\n typeof customElements.get('dhhs-video') === 'undefined')\n ) {\n const { AutoplayOnActivePlayerElement, Video } = await import(\n './components/media/video' /* webpackChunkName: \"dhhs-video\" */\n )\n safeDefine('dhhs-article-player', AutoplayOnActivePlayerElement)\n safeDefine('dhhs-video', Video)\n }\n\n if (this.features.lottie && typeof customElements.get('dhhs-stegvis-lottie') === 'undefined') {\n const stegvisLottie = (\n await import('@nrk/dh-basis-stegvis-lottie' /* webpackChunkName: \"dh-stegvis-lottie\" */)\n ).default\n\n safeDefine('dhhs-stegvis-lottie', stegvisLottie)\n }\n\n if (this.features.kart && typeof customElements.get('dhhs-kart') === 'undefined') {\n const kart = (\n await import('./lib/karthistorie-chunk' /* webpackChunkName: \"dh-karthistorie\" */)\n ).default\n\n safeDefine('dhhs-kart', kart)\n }\n\n if (this.trackingEnabled) {\n this.sendGaEvent({ eventAction: `MOUNT:${tag}` })\n }\n\n if (this.features.sanityPreview) {\n import('./components/preview/preview-iframe-api' /* webpackChunkName: \"dh-preview-iframe\" */)\n }\n }\n\n #handleTriggerActivated = (e) => {\n this.sendGaEvent({ eventAction: 'TRIGGER-ACTIVATED', eventLabel: e.detail.triggerIndex })\n }\n\n #startCompletionLogger() {\n let hasStarted = false\n let hasCompleted = false\n\n // eslint-disable-next-line compat/compat\n this.#observer = new IntersectionObserver(\n (intersections) => {\n let isIntersecting = intersections[0]?.isIntersecting\n if (!hasStarted && isIntersecting && this.getBoundingClientRect().top > 0) {\n hasStarted = true\n this.sendGaEvent({ eventAction: `STARTED` })\n } else if (\n hasStarted &&\n !hasCompleted &&\n !isIntersecting &&\n this.getBoundingClientRect().bottom < 0\n ) {\n hasCompleted = true\n this.sendGaEvent({ eventAction: `COMPLETED` })\n }\n },\n { threshold: [0] }\n )\n this.#observer.observe(this)\n }\n\n #stopCompletionLogger() {\n this.#observer.disconnect()\n }\n\n get trackingEnabled() {\n return this.getAttribute('data-tracking-enabled') === 'true'\n }\n\n get features() {\n return JSON.parse(this.getAttribute('features'))\n }\n}\n\nif (!customElements.get(tag)) {\n customElements.define(tag, AppElement)\n}\n"],"names":["leafPrototypes","getProto","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","withinStops","currentTime","stops","targetStop","nrOfStops","uniqueStops","unique","targetTime","value","index","self","debounce","fn","delay","timeout","_len","args","Array","_key","clearTimeout","setTimeout","module","exports","getContextId","_coreAnalyticsPromise","BaseElement","HTMLElement","super","sendError","bind","sendGaEvent","connectedCallback","Error","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","eventCategory","JSON","parse","preloadedState","errorTracking","url","enabled","POLOPOLY_ID_REGEX","str","extractPolopolyIdFromString","getElementTag","version","split","regex","parents","node","ps","parentNode","style","prop","getComputedStyle","getPropertyValue","overflow","scroll","test","SVGElement","scrollingElement","documentElement","_classExtractFieldDescriptor","receiver","privateMap","action","has","TypeError","get","_classPrivateFieldGet","descriptor","classExtractFieldDescriptor","_classPrivateFieldSet","set","writable","_typeof","obj","Symbol","iterator","_toPropertyKey","arg","input","hint","prim","toPrimitive","res","String","Number","_defineProperty","configurable","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","id","loaded","__webpack_modules__","amdO","n","getter","__esModule","d","a","getPrototypeOf","t","mode","ns","r","def","getOwnPropertyNames","definition","o","f","e","chunkId","all","reduce","promises","u","miniCssF","g","globalThis","Function","hasOwnProperty","toStringTag","nmd","paths","children","p","loadStylesheet","reject","fullhref","existingLinkTags","getElementsByTagName","dataHref","tag","getAttribute","rel","existingStyleTags","findStylesheet","oldTag","linkTag","createElement","type","onerror","onload","errorType","realHref","err","code","request","removeChild","insertBefore","nextSibling","head","appendChild","createStylesheet","installedCssChunks","miniCss","data","ids","modules","runtime","j","installedChunkData","promise","import","race","ssrOrientation","destroyed","mounted","listeners","portrait","landscape","opts","assign","orientation","getOrientation","update","handleUpdate","throttledUpdate","Date","now","mount","addEventListener","destroy","removeEventListener","innerHeight","innerWidth","listen","emit","getVh","getHeight","navigator","userAgent","vendor","opera","toLowerCase","platform","checkHasVhBug","setProperty","console","error","fixVhBug","STATE_ATTR","VIEWPORT_POSITION_ATTR","DISABLE_FORCED_ATTRIBUTES_ATTR","IS_PAUSED","AUTOPLAY_BLOCKED","READY_STATE","isVisible","child","offsetParent","LevendeStillbilde","_visibleVideoElement","isPaused","paused","_shouldPlay","_playVideo","_pauseVideo","_updateVisibleVideoElement","observedAttributes","_setVideoAttributes","_setEventListeners","disconnectedCallback","_disconnecting","_removeEventListeners","attributeChangedCallback","prevValue","newValue","_updatePlayState","_preload","_handleResize","videoElements","_handlePlayChange","requestAnimationFrame","nextVisibleVideo","find","_shouldPreload","disableForcedAttributes","_this$_visibleVideoEl","readyState","state","viewportPosition","_this$_visibleVideoEl2","_this$_visibleVideoEl3","load","reducedMotion","videoElement","autoplayBlocked","play","catch","pause","querySelectorAll","val","STOPS_ATTR","TARGET_STOP_ATTR","offsetWidth","offsetHeight","StegvisVideo","_startSeek","_handleClick","_onReadyStateChange","hasValue","_stateChanged","_viewportChanged","prevState","nextState","_gotoStart","_gotoEnd","_paused","_this$videoElement","inViewport","duration","isFinite","_enableSeekOnReducedMotion","_reducedMotionSeekEnabled","prevTime","loop","timestamp","invisibleVideoElements","video","invisibleVideo","num","decimals","multiplier","dt","buffer","Math","max","ceil","abs","speed","_calculateSpeed","direction","playbackRate","nextTime","pow","round","nodeName","replace","s","trim","Boolean","toFixed","join","dedupeId","dedupeMixin","mixin","mixinId","base","_base$_appliedMixins","_base$_appliedMixins2","_appliedMixins","extended","_classPrivateMethodInitSpec$1","privateSet","_checkPrivateRedeclaration$1","add","_classPrivateFieldInitSpec","privateCollection","_classPrivateMethodGet$1","VIEWPORT_POSITIONS","aboveViewport","belowViewport","ViewportPositionMixin","Base","_observer","_createIntersectionObserver","_disconnectIntersectionObserver","_handleIntersectionChange","WeakMap","WeakSet","_ref","intersection","isAbove","getBoundingClientRect","bottom","_super$observedAttrib","_super$connectedCallb","_createIntersectionObserver2","_super$disconnectedCa","_disconnectIntersectionObserver2","viewportContainer","_document$scrollingEl","viewportIntersectionRoot","isViewport","parent","_classPrivateFieldGet2","_classPrivateFieldGet3","_classPrivateMethodInitSpec","_checkPrivateRedeclaration","_classStaticPrivateFieldSpecSet","classConstructor","_classCheckPrivateStaticAccess","_classCheckPrivateStaticFieldDescriptor","_classApplyDescriptorSet","AttributeBindingMixin","_class","_getTargetElements","_boundAttributes","AttributeBindingMixinDef","boundAttributes","attribute","targets","sourceAttribute","targetAttribute","sourceAttributeName","targetAttributeName","oldValue","_super$attributeChang","_classApplyDescriptorGet","configuration","targetElements","_classPrivateMethodGet","_getTargetElements2","from","ACTIVE_BACKGROUND_ATTR","ROOT_MARGIN_ATTR","BG_ID_ATTR","SHOW_BACKGROUND_ATTR","isTrigger","isBackground","_activeTriggerIndex","_handleTriggerChange","_prepareBackgrounds","_updateBackgrounds","_getBackgroundId","Scrollhistorie","activeIntersection","pop","triggerElement","activeBackgroundId","_this$activeBackgroun","attributeName","attributeValue","activeBackground","triggerElements","triggerIndex","backgroundId","instance","backgrounds","_updateBackgrounds2","_prepareBackgrounds2","querySelector","background","isActive","nextActive","_getBackgroundId2","prevActive","parseOffsetString","offsetString","offset","_offset$match","edge","componentValue","parseFloat","horizontalProperties","dimension","position","scrollDimension","clientDimension","scrollPosition","scrollPaddingStart","scrollPaddingEnd","verticalProperties","getDirectionPropNames","blockAxis","scrollOverflowRegex","calculateEffectiveScrollOffsets","scrollOffsets","scrollPadding","effectiveScrollOffsets","firstOffset","scrollOffset","calculateEffectiveOffset","effectiveOffset","first","hasLayoutBox","isScrollContainer","getSourceEnd","endsWith","substring","calculateContainerBasedOffset","props","log","ancestor","getNearestScrollContainerAncestor","b","warn","targetBox","targetRect","top","scrollTop","left","scrollLeft","width","height","containerRect","getAxisAlignedTargetBox","_scrollPadding$props$","_scrollPadding$props$2","getClientDimension","min","calculateElementBasedOffset","propNames","computed","overflowString","calculateScrollProgress","offsetIndex","lastOffset","startOffset","getScrollportHeight","clientHeight","getScrollportWidth","clientWidth","ScrollanimasjonMixin","_effectiveScrollPaddings","_effectiveScrollTimelines","_isWatching","_reducedMotion","_debouncedUpdateOffsets","_targetPositions","_handleVisibilityChange","_getTargetPositions","_needsEffectiveOffsetUpdate","_updateEffectiveOffsets","_startWatching","_stopWatching","containerIntersection","_startWatching2","_stopWatching2","_getTargetPositions2","scrollPaddings","includes","calculateEffectiveScrollPaddings","timelines","timeline","timelineUpdatedCallback","timelineId","progress","padding","scrollPaddingTop","scrollPaddingRight","scrollPaddingBottom","scrollPaddingLeft","vertical","horizontal","_horizontal","_top","right","_bottom","parseScrollPadding","flatMap","_needsEffectiveOffsetUpdate2","currentTargetPositions","Scrollprosent","_this$targetElement","targetElement","_this$getAttribute","HistorieScroll","backgroundElement","altTextElement","altStyles","nextElementSibling","scrollIntoView","behavior","scrollStyles","groupOffsetsByTimeline","list","safeDefine","elementName","customElements","define","__APP_NAME__","__APP_VERSION__","AppElement","eventAction","eventLabel","features","AutoplayOnActivePlayerElement","Video","lottie","kart","trackingEnabled","sanityPreview","hasStarted","hasCompleted"],"sourceRoot":""}