{"version":3,"file":"main-6f3cedf4ed1dc03be2a2.esm.js","mappings":"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","sources":["webpack://dh-introscroll/webpack/runtime/create fake namespace object","webpack://dh-introscroll/webpack/runtime/import chunk loading","webpack://dh-introscroll/./node_modules/@nrk/dh-basis-common/dh-basis-common.esm.js","webpack://dh-introscroll/./node_modules/@nrk/dh-server-libs/base-element.js","webpack://dh-introscroll/./node_modules/@nrk/dh-server-libs/get-element-tag.js","webpack://dh-introscroll/./node_modules/@nrk/dh-server-libs/html.js","webpack://dh-introscroll/./node_modules/@nrk/dh-server-libs/src/base-element.js","webpack://dh-introscroll/./node_modules/@nrk/dh-server-libs/src/get-context-id.js","webpack://dh-introscroll/./node_modules/@nrk/dh-server-libs/src/get-element-tag.js","webpack://dh-introscroll/./node_modules/@nrk/dh-server-libs/src/html-tagged-template-literal.js","webpack://dh-introscroll/./node_modules/balance-text/balancetext.js","webpack://dh-introscroll/./node_modules/debounce/index.js","webpack://dh-introscroll/./node_modules/@babel/runtime/helpers/esm/classExtractFieldDescriptor.js","webpack://dh-introscroll/./node_modules/@babel/runtime/helpers/esm/classPrivateFieldGet.js","webpack://dh-introscroll/./node_modules/@babel/runtime/helpers/esm/classApplyDescriptorGet.js","webpack://dh-introscroll/./node_modules/@babel/runtime/helpers/esm/classPrivateFieldSet.js","webpack://dh-introscroll/./node_modules/@babel/runtime/helpers/esm/classApplyDescriptorSet.js","webpack://dh-introscroll/./node_modules/@babel/runtime/helpers/esm/typeof.js","webpack://dh-introscroll/./node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","webpack://dh-introscroll/./node_modules/@babel/runtime/helpers/esm/toPrimitive.js","webpack://dh-introscroll/./node_modules/@babel/runtime/helpers/esm/defineProperty.js","webpack://dh-introscroll/webpack/bootstrap","webpack://dh-introscroll/webpack/runtime/amd options","webpack://dh-introscroll/webpack/runtime/compat get default export","webpack://dh-introscroll/webpack/runtime/define property getters","webpack://dh-introscroll/webpack/runtime/ensure chunk","webpack://dh-introscroll/webpack/runtime/get javascript chunk filename","webpack://dh-introscroll/webpack/runtime/get mini-css chunk filename","webpack://dh-introscroll/webpack/runtime/hasOwnProperty shorthand","webpack://dh-introscroll/webpack/runtime/make namespace object","webpack://dh-introscroll/webpack/runtime/node module decorator","webpack://dh-introscroll/webpack/runtime/publicPath","webpack://dh-introscroll/webpack/runtime/css loading","webpack://dh-introscroll/./node_modules/@nrk/dh-vh/dist/index.mjs","webpack://dh-introscroll/./src/polyfills.js","webpack://dh-introscroll/./node_modules/@nrk/dh-basis-mixins/dh-basis-mixins.esm.js","webpack://dh-introscroll/./node_modules/@nrk/dh-basis-scrollhistorie/dh-basis-scrollhistorie.esm.js","webpack://dh-introscroll/./node_modules/@nrk/dh-utils/dist/module/bem.js","webpack://dh-introscroll/./src/lib/balance-text-wrapper.js","webpack://dh-introscroll/./src/components/introscroll.module.css?4b5f","webpack://dh-introscroll/./src/components/introscroll.js","webpack://dh-introscroll/./src/components/media/spesialmodul.js","webpack://dh-introscroll/./node_modules/@nrk/dh-basis-stegvis-video/dh-basis-stegvis-video.esm.js","webpack://dh-introscroll/./node_modules/@nrk/dh-basis-levende-stillbilde/dh-basis-levende-stillbilde.esm.js","webpack://dh-introscroll/./src/components/cards/alt-text.module.css?2333","webpack://dh-introscroll/./src/client.js"],"sourcesContent":["var getProto = Object.getPrototypeOf ? (obj) => (Object.getPrototypeOf(obj)) : (obj) => (obj.__proto__);\nvar leafPrototypes;\n// create a fake namespace object\n// mode & 1: value is a module id, require it\n// mode & 2: merge all properties of value into the ns\n// mode & 4: return value when already ns object\n// mode & 16: return value when it's Promise-like\n// mode & 8|1: behave like require\n__webpack_require__.t = function(value, mode) {\n\tif(mode & 1) value = this(value);\n\tif(mode & 8) return value;\n\tif(typeof value === 'object' && value) {\n\t\tif((mode & 4) && value.__esModule) return value;\n\t\tif((mode & 16) && typeof value.then === 'function') return value;\n\t}\n\tvar ns = Object.create(null);\n\t__webpack_require__.r(ns);\n\tvar def = {};\n\tleafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];\n\tfor(var current = mode & 2 && value; typeof current == 'object' && !~leafPrototypes.indexOf(current); current = getProto(current)) {\n\t\tObject.getOwnPropertyNames(current).forEach((key) => (def[key] = () => (value[key])));\n\t}\n\tdef['default'] = () => (value);\n\t__webpack_require__.d(ns, def);\n\treturn ns;\n};","// 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(258 != 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","module.exports = require('./src/html-tagged-template-literal.js')\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","/**\n * Concats a template literal and interpolates values correctly, as well as removes formatting whitespace and HTML comments\n */\nfunction html(strings, ...interpolations) {\n let str = strings[0]\n for (let i = 0; i < interpolations.length; i++) {\n str += interpolations[i]\n str += strings[i + 1]\n }\n\n return str.replace(/>\\s+<').replace(//, '')\n}\n\nmodule.exports.html = html\n","/*\n * Copyright (c) 2012 Adobe Systems Incorporated. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License. *\n */\n/**\n * balancetext.js\n *\n * Author: Randy Edmunds\n */\n\n/* global define, module */\n\n/*\n * Copyright (c) 2007-2009 unscriptable.com and John M. Hann\n *\n * Permission is hereby granted, free of charge, to any person\n * obtaining a copy of this software and associated documentation\n * files (the “Software”), to deal in the Software without\n * restriction, including without limitation the rights to use,\n * copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the\n * Software is furnished to do so, subject to the following\n * conditions:\n *\n * The above copyright notice and this permission notice shall be\n * included in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND,\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\n * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\n * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\n * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\n * OTHER DEALINGS IN THE SOFTWARE.\n *\n * Except as contained in this notice, the name(s) of the above\n * copyright holders (unscriptable.com and John M. Hann) shall not be\n * used in advertising or otherwise to promote the sale, use or other\n * dealings in this Software without prior written authorization.\n *\n * http://unscriptable.com/index.php/2009/03/20/debouncing-javascript-methods/\n *\n * Tested to work on (lowest browser):\n * - Sarari 4\n * - Chrome 16\n * - Firefox 10\n * - IE 9\n * - Edge 13\n */\n\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.balanceText = factory();\n }\n}(this, () => {\n /**\n * Line breaking global vars\n */\n let breakMatches, wsnwMatches, wsnwOffset;\n\n /**\n * Selectors and elements to watch;\n * calling $.balanceText(elements) adds \"elements\" to this list.\n */\n const watching = {\n sel: [], // default class to watch\n el: [],\n };\n\n /**\n * Have handlers been initialized?\n */\n let handlersInitialized = false;\n\n /**\n * Is this a polyfill?\n */\n let polyfilled = false;\n\n\n /**\n * Do nothing\n */\n function noop() { }\n\n /**\n * Loop that works with array-likes\n * @param {Array-like} elements - List of elements to run a function on\n * @param {Function} callback - The function to call on each supplied element\n */\n function forEach(elements, callback) {\n Array.prototype.forEach.call(elements, callback);\n }\n\n /**\n * Polyfill for $(document).ready()\n *\n * @param {Function} fn - The function to execute when the document is ready\n */\n function ready(fn) {\n if (document.readyState !== \"loading\") {\n fn();\n } else if (document.addEventListener) {\n document.addEventListener(\"DOMContentLoaded\", fn);\n } else {\n document.attachEvent(\"onreadystatechange\", () => {\n if (document.readyState !== \"loading\") {\n fn();\n }\n });\n }\n }\n\n /**\n * Debounces a function over a threshold\n *\n * @param {Function} func - The function to debounce\n * @param {number} threshold - time in ms\n * @param {boolean} execAsap - when true, execute immediately\n * @param args\n * @return {Function} Debounced function\n */\n function debounce(func, threshold, execAsap, ...args) {\n let timeout;\n\n return function () {\n const obj = this;\n\n function delayed() {\n if (!execAsap) {\n func.apply(obj, args);\n }\n timeout = null;\n }\n\n if (timeout) {\n clearTimeout(timeout);\n } else if (execAsap) {\n func.apply(obj, args);\n }\n timeout = setTimeout(delayed, threshold || 100);\n };\n }\n\n /**\n * Determine whether the document supports TextWrap\n * @return {boolean}\n */\n function hasTextWrap() {\n if (typeof window === \"undefined\") {\n return false;\n }\n const { style } = document.documentElement;\n return style.textWrap || style.WebkitTextWrap || style.MozTextWrap || style.MsTextWrap;\n }\n\n /**\n * Object for tracking next whitespace params\n */\n // eslint-disable-next-line camelcase\n function NextWS_params() {\n this.reset();\n }\n\n NextWS_params.prototype.reset = function () {\n this.index = 0;\n this.width = 0;\n };\n\n /**\n * Check if index is contained in previously calculated list of white-space:nowrap ranges\n *\n * @param {number} index - the index of the character to check\n * @return {boolean}\n */\n function isWhiteSpaceNoWrap(index) {\n // Is index inside 1 of the ranges?\n // start and end are breakable, but not inside range\n return wsnwMatches.some(range => (range.start < index && index < range.end));\n }\n\n /**\n * Recursively calculate white-space:nowrap offsets for line.\n *\n * @param {Node} el - the element to act on\n * @param {boolean} includeTag - include length of tag itself\n */\n function recursiveCalcNoWrapOffsetsForLine(el, includeTag) {\n if (el.nodeType === el.ELEMENT_NODE) {\n // Found an embedded tag\n const style = window.getComputedStyle(el);\n if (style.whiteSpace === \"nowrap\") {\n // Tag with white-space:nowrap - add match, skip children\n const len = el.outerHTML.length;\n wsnwMatches.push({ start: wsnwOffset, end: wsnwOffset + len });\n wsnwOffset += len;\n } else {\n // Tag without white-space:nowrap - recursively check children of tag\n forEach(el.childNodes, (child) => {\n recursiveCalcNoWrapOffsetsForLine(child, true);\n });\n if (includeTag) {\n // Length of opening tag, attributes, and closing tag\n wsnwOffset += (el.outerHTML.length - el.innerHTML.length);\n }\n }\n } else if (el.nodeType === el.COMMENT_NODE) {\n wsnwOffset += el.length + 7; // delimiter: \n } else if (el.nodeType === el.PROCESSING_INSTRUCTION_NODE) {\n wsnwOffset += el.length + 2; // delimiter: < >\n } else {\n // Text node: add length\n wsnwOffset += el.length;\n }\n }\n\n /**\n * Calculate white-space:nowrap offsets for line.\n *\n * @param {Node} el - the element to act on\n * @param {string} oldWS - \"old\" whitespace setting for temporarily resetting\n * @param {number} lineCharOffset - char offset of current line from start of text\n */\n function calcNoWrapOffsetsForLine(el, oldWS, lineCharOffset) {\n // For first line (lineCharOffset === 0), calculate start and end offsets for each\n // white-space:nowrap element in the line.\n if (lineCharOffset === 0) {\n // Reset whiteSpace setting when breakMatches is being calculated\n // so white-space:nowrap can be detected in text\n el.style.whiteSpace = oldWS;\n\n wsnwOffset = 0;\n wsnwMatches = [];\n recursiveCalcNoWrapOffsetsForLine(el, false);\n\n // Restore temporary whitespace setting to recalc width\n el.style.whiteSpace = \"nowrap\";\n } else {\n // For all other lines, update the offsets for current line\n // 1. Ignore matches less than offset\n // 2. Subtract offset from remaining matches\n const newMatches = [];\n wsnwMatches.forEach((match) => {\n if (match.start > lineCharOffset) {\n newMatches.push({ start: match.start - lineCharOffset, end: match.end - lineCharOffset });\n }\n });\n wsnwMatches = newMatches;\n }\n }\n\n /**\n * Strip balance-text tags from an element inserted in previous run\n *\n * @param {Node} el - the element to act on\n */\n function removeTags(el) {\n // Remove soft-hyphen breaks\n let brs = el.querySelectorAll('br[data-owner=\"balance-text-hyphen\"]');\n forEach(brs, (br) => {\n br.outerHTML = \"\";\n });\n\n // Replace other breaks with whitespace\n brs = el.querySelectorAll('br[data-owner=\"balance-text\"]');\n forEach(brs, (br) => {\n br.outerHTML = \" \";\n });\n\n // Restore hyphens inserted for soft-hyphens\n let spans = el.querySelectorAll('span[data-owner=\"balance-text-softhyphen\"]');\n if (spans.length > 0) {\n forEach(spans, (span) => {\n const textNode = document.createTextNode(\"\\u00ad\");\n span.parentNode.insertBefore(textNode, span);\n span.parentNode.removeChild(span);\n });\n }\n\n // Remove spans inserted for justified text\n spans = el.querySelectorAll('span[data-owner=\"balance-text-justify\"]');\n if (spans.length > 0) {\n let txt = \"\";\n forEach(spans, (span) => {\n txt += span.textContent;\n span.parentNode.removeChild(span);\n });\n el.innerHTML = txt;\n }\n }\n\n /**\n * Checks to see if we should justify the balanced text with the\n * element based on the textAlign property in the computed CSS\n *\n * @param {Node} el - element to check\n * @return {boolean}\n */\n const isJustified = function (el) {\n const style = el.currentStyle || window.getComputedStyle(el, null);\n return (style.textAlign === \"justify\");\n };\n\n /**\n * Add whitespace after words in text to justify the string to\n * the specified size.\n * @param {Node} el - the element to justify\n * @param {string} txt - text string\n * @param {number} conWidth - container width\n * @return {string} Justified text\n */\n function justify(el, txt, conWidth) {\n txt = txt.trim();\n const words = txt.split(\" \").length;\n txt = `${txt} `;\n\n // if we don't have at least 2 words, no need to justify.\n if (words < 2) {\n return txt;\n }\n\n // Find width of text in the DOM\n const tmp = document.createElement(\"span\");\n tmp.innerHTML = txt;\n el.appendChild(tmp);\n const size = tmp.offsetWidth;\n tmp.parentNode.removeChild(tmp);\n\n // Figure out our word spacing and return the element\n const wordSpacing = Math.floor((conWidth - size) / (words - 1));\n tmp.style.wordSpacing = `${wordSpacing}px`;\n tmp.setAttribute(\"data-owner\", \"balance-text-justify\");\n\n const div = document.createElement(\"div\");\n div.appendChild(tmp);\n return div.innerHTML;\n }\n\n /**\n * Returns true iff char at index is a break char outside of HTML < > tags.\n * Break char can be: whitespace (except non-breaking-space: u00a0),\n * hypen, emdash (u2014), endash (u2013), or soft-hyphen (u00ad).\n *\n * @param {string} txt - the text to check\n * @param {number} index - the index of the character to check\n * @return {boolean}\n */\n function isBreakChar(txt, index) {\n const re = /([^\\S\\u00a0]|-|\\u2014|\\u2013|\\u00ad)(?![^<]*>)/g;\n let match;\n\n if (!breakMatches) {\n // Only calc break matches once per line\n breakMatches = [];\n match = re.exec(txt);\n while (match !== null) {\n if (!isWhiteSpaceNoWrap(match.index)) {\n breakMatches.push(match.index);\n }\n match = re.exec(txt);\n }\n }\n\n return breakMatches.indexOf(index) !== -1;\n }\n\n /**\n * In the current implementation, an index is a break\n * opportunity in txt iff it is:\n * - 0 or txt.length\n * - index of a non-whitespace char immediately preceded by a\n * whitespace, hyphen, soft-hyphen, em-dash, or en-dash char.\n *\n * Thus, it doesn't honour \"white-space\" or any other Unicode\n * line-breaking classes.)\n *\n * @precondition 0 <= index && index <= txt.length\n *\n * @param {string} txt - the text to check\n * @param {number} index - the index to check\n * @return {boolean}\n */\n function isBreakOpportunity(txt, index) {\n return ((index === 0) || (index === txt.length) ||\n (isBreakChar(txt, index - 1) && !isBreakChar(txt, index)));\n }\n\n /**\n * Finds the first break opportunity (@see isBreakOpportunity)\n * in txt that's both after-or-equal-to index c in the direction dir\n * and resulting in line width equal to or past clamp(desWidth,\n * 0, conWidth) in direction dir. Sets ret.index and ret.width\n * to the corresponding index and line width (from the start of\n * txt to ret.index).\n *\n * @param {Node} el - element\n * @param {string} txt - text string\n * @param {number} conWidth - container width\n * @param {number} desWidth - desired width\n * @param {number} dir - direction (-1 or +1)\n * @param {number} c - char index (0 <= c && c <= txt.length)\n * @param {Object} ret - return {index: {number}, width: {number}} of previous/next break\n */\n function findBreakOpportunity(el, txt, conWidth, desWidth, dir, c, ret) {\n let w;\n\n if (txt && typeof txt === \"string\") {\n for (;;) {\n while (!isBreakOpportunity(txt, c)) {\n c += dir;\n }\n\n el.innerHTML = txt.substr(0, c);\n w = el.offsetWidth;\n\n if (dir < 0) {\n if ((w <= desWidth) || (w <= 0) || (c === 0)) {\n break;\n }\n } else if ((desWidth <= w) || (conWidth <= w) || (c === txt.length)) {\n break;\n }\n\n c += dir;\n }\n }\n ret.index = c;\n ret.width = w;\n }\n\n /**\n * Detects the width of a non-breaking space character, given the height of\n * the element with no-wrap applied.\n *\n * @param {Node} el - element\n * @param {number} h - height\n * @return {number}\n */\n function getSpaceWidth(el, h) {\n const container = document.createElement(\"div\");\n\n container.style.display = \"block\";\n container.style.position = \"absolute\";\n container.style.bottom = 0;\n container.style.right = 0;\n container.style.width = 0;\n container.style.height = 0;\n container.style.margin = 0;\n container.style.padding = 0;\n container.style.visibility = \"hidden\";\n container.style.overflow = \"hidden\";\n\n const space = document.createElement(\"span\");\n\n space.style.fontSize = \"2000px\";\n space.innerHTML = \" \";\n\n container.appendChild(space);\n\n el.appendChild(container);\n\n const dims = space.getBoundingClientRect();\n container.parentNode.removeChild(container);\n\n const spaceRatio = dims.height / dims.width;\n\n return (h / spaceRatio);\n }\n\n /**\n * Get a list of elements regardless of input\n *\n * @param {string|Node|Array-like} elements - The selector to query, one or more elements\n * @return {Array<{Node}>}\n */\n function getElementsList(elements) {\n if (!elements) {\n return [];\n }\n\n // is selector\n if (typeof elements === \"string\") {\n return document.querySelectorAll(elements);\n }\n\n // is single element\n if (elements.tagName && elements.querySelectorAll) {\n return [elements];\n }\n\n return elements;\n }\n\n /**\n * When a browser has native support for the text-wrap property,\n * the text balanceText plugin will let the browser handle it natively,\n * otherwise it will apply its own text balancing code.\n *\n * @param {string|Node|Array-like} elements - the list of elements to balance\n */\n function balanceText(elements) {\n forEach(getElementsList(elements), (el) => {\n // In a lower level language, this algorithm takes time\n // comparable to normal text layout other than the fact\n // that we do two passes instead of one, so we should\n // be able to do without this limit.\n const maxTextWidth = 5000;\n\n // strip balance-text generated tags\n removeTags(el);\n\n // save settings\n const oldWS = el.style.whiteSpace;\n const oldFloat = el.style.float;\n const oldDisplay = el.style.display;\n const oldPosition = el.style.position;\n const oldLH = el.style.lineHeight;\n\n // remove line height before measuring container size\n el.style.lineHeight = \"normal\";\n\n const containerWidth = el.offsetWidth;\n const containerHeight = el.offsetHeight;\n\n // temporary settings\n el.style.whiteSpace = \"nowrap\";\n el.style.float = \"none\";\n el.style.display = \"inline\";\n el.style.position = \"static\";\n\n let nowrapWidth = el.offsetWidth;\n const nowrapHeight = el.offsetHeight;\n\n // An estimate of the average line width reduction due\n // to trimming trailing space that we expect over all\n // lines other than the last.\n const spaceWidth = ((oldWS === \"pre-wrap\") ? 0 : getSpaceWidth(el, nowrapHeight));\n\n if (containerWidth > 0 && // prevent divide by zero\n nowrapWidth > containerWidth && // text is more than 1 line\n nowrapWidth < maxTextWidth) { // text is less than arbitrary limit (make this a param?)\n let remainingText = el.innerHTML;\n let newText = \"\";\n let lineText = \"\";\n const shouldJustify = isJustified(el);\n const totLines = Math.round(containerHeight / nowrapHeight);\n let remLines = totLines;\n let lineCharOffset = 0;\n\n // loop vars\n let desiredWidth, guessIndex, le, ge, splitIndex, isHyphen, isSoftHyphen;\n\n // Determine where to break:\n while (remLines > 1) {\n // clear whitespace match cache for each line\n breakMatches = null;\n\n // Must calc white-space:nowrap offsets before first call to findBreakOpportunity()\n calcNoWrapOffsetsForLine(el, oldWS, lineCharOffset);\n\n desiredWidth = Math.round((nowrapWidth + spaceWidth) / remLines - spaceWidth);\n\n // Guessed char index\n guessIndex = Math.round((remainingText.length + 1) / remLines) - 1;\n\n le = new NextWS_params();\n\n // Find a breaking space somewhere before (or equal to) desired width,\n // not necessarily the closest to the desired width.\n findBreakOpportunity(el, remainingText, containerWidth, desiredWidth, -1, guessIndex, le);\n\n // Find first breaking char after (or equal to) desired width.\n ge = new NextWS_params();\n guessIndex = le.index;\n findBreakOpportunity(el, remainingText, containerWidth, desiredWidth, +1, guessIndex, ge);\n\n // Find first breaking char before (or equal to) desired width.\n le.reset();\n guessIndex = ge.index;\n findBreakOpportunity(el, remainingText, containerWidth, desiredWidth, -1, guessIndex, le);\n\n // Find closest string to desired length\n if (le.index === 0) {\n splitIndex = ge.index;\n } else if ((containerWidth < ge.width) || (le.index === ge.index)) {\n splitIndex = le.index;\n } else {\n splitIndex = ((Math.abs(desiredWidth - le.width) < Math.abs(ge.width - desiredWidth))\n ? le.index\n : ge.index);\n }\n\n // Break string\n lineText = remainingText.substr(0, splitIndex).replace(/\\s$/, \"\");\n\n isSoftHyphen = Boolean(lineText.match(/\\u00ad$/));\n if (isSoftHyphen) {\n // Replace soft-hyphen causing break with explicit hyphen\n lineText = lineText.replace(/\\u00ad$/, '-');\n }\n\n if (shouldJustify) {\n newText += justify(el, lineText, containerWidth);\n } else {\n newText += lineText;\n isHyphen = isSoftHyphen || Boolean(lineText.match(/(-|\\u2014|\\u2013)$/));\n newText += isHyphen ? '
'\n : '
';\n }\n remainingText = remainingText.substr(splitIndex);\n lineCharOffset = splitIndex;\n\n // update counters\n remLines--;\n el.innerHTML = remainingText;\n nowrapWidth = el.offsetWidth;\n }\n\n if (shouldJustify) {\n el.innerHTML = newText + justify(el, remainingText, containerWidth);\n } else {\n el.innerHTML = newText + remainingText;\n }\n }\n\n // restore settings\n el.style.whiteSpace = oldWS;\n el.style.float = oldFloat;\n el.style.display = oldDisplay;\n el.style.position = oldPosition;\n el.style.lineHeight = oldLH;\n });\n }\n\n /**\n * Call the balanceText plugin on elements that it's watching.\n */\n function updateWatched() {\n const selectors = watching.sel.join(\",\");\n const selectedElements = getElementsList(selectors);\n const elements = Array.prototype.concat.apply(watching.el, selectedElements);\n balanceText(elements);\n }\n\n /**\n * Initialize the events for which to re-apply BalanceText. They are:\n * - Document ready\n * - Document full load\n * - Window resize\n */\n function initHandlers() {\n if (handlersInitialized) {\n return;\n }\n\n // Apply on DOM ready\n ready(updateWatched);\n\n // Reapply on full load\n window.addEventListener(\"load\", updateWatched);\n\n // Reapply on resize\n window.addEventListener(\"resize\", debounce(updateWatched));\n\n handlersInitialized = true;\n }\n\n /**\n * Apply the BalanceText routine on the document and watch the list\n * of elements. On window resize, re-apply BalanceText to the given elements\n *\n * @param {string|Node|Array-like} elements - the elements to watch after applying BalanceText\n */\n function balanceTextAndWatch(elements) {\n if (typeof elements === \"string\") {\n watching.sel.push(elements);\n } else {\n forEach(getElementsList(elements), (el) => {\n watching.el.push(el);\n });\n }\n\n initHandlers();\n updateWatched();\n }\n\n /**\n * Stop watching elements\n *\n * @param {string|Node|Array-like} elements\n */\n function unwatch(elements) {\n if (typeof elements === \"string\") {\n watching.sel = watching.sel.filter(el => el !== elements);\n } else {\n elements = getElementsList(elements);\n watching.el = watching.el.filter(el => elements.indexOf(el) === -1);\n }\n }\n\n /**\n * Treat this app as a polyfill. Watch for changes to the .balance-text selector\n */\n function polyfill() {\n if (polyfilled) {\n return;\n }\n\n watching.sel.push(\".balance-text\");\n initHandlers();\n polyfilled = true;\n }\n\n /**\n * Public interface\n *\n * @param {string|Node|Array-like} elements - elements to balance\n * @param {Object} options - processing options\n * - {boolean} watch - watch elements for resize\n */\n function publicInterface(elements, options) {\n if (!elements) {\n // empty call means polyfill (watch for changes)\n polyfill();\n } else if (options && options.watch === true) {\n balanceTextAndWatch(elements);\n } else if (options && options.watch === false) {\n unwatch(elements);\n } else {\n balanceText(elements);\n }\n }\n\n publicInterface.updateWatched = updateWatched;\n\n if (hasTextWrap()) {\n noop.updateWatched = noop;\n return noop;\n }\n return publicInterface;\n}));\n","/**\n * Returns a function, that, as long as it continues to be invoked, will not\n * be triggered. The function will be called after it stops being called for\n * N milliseconds. If `immediate` is passed, trigger the function on the\n * leading edge, instead of the trailing. The function also has a property 'clear' \n * that is a function which will clear the timer to prevent previously scheduled executions. \n *\n * @source underscore.js\n * @see http://unscriptable.com/2009/03/20/debouncing-javascript-methods/\n * @param {Function} function to wrap\n * @param {Number} timeout in ms (`100`)\n * @param {Boolean} whether to execute at the beginning (`false`)\n * @api public\n */\nfunction debounce(func, wait, immediate){\n var timeout, args, context, timestamp, result;\n if (null == wait) wait = 100;\n\n function later() {\n var last = Date.now() - timestamp;\n\n if (last < wait && last >= 0) {\n timeout = setTimeout(later, wait - last);\n } else {\n timeout = null;\n if (!immediate) {\n result = func.apply(context, args);\n context = args = null;\n }\n }\n };\n\n var debounced = function(){\n context = this;\n args = arguments;\n timestamp = Date.now();\n var callNow = immediate && !timeout;\n if (!timeout) timeout = setTimeout(later, wait);\n if (callNow) {\n result = func.apply(context, args);\n context = args = null;\n }\n\n return result;\n };\n\n debounced.clear = function() {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n }\n };\n \n debounced.flush = function() {\n if (timeout) {\n result = func.apply(context, args);\n context = args = null;\n \n clearTimeout(timeout);\n timeout = null;\n }\n };\n\n return debounced;\n};\n\n// Adds compatibility for ES modules\ndebounce.debounce = debounce;\n\nmodule.exports = debounce;\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\",\"537\":\"ca\",\"577\":\"dh-stegvis-lottie\"}[chunkId] || chunkId) + \"-chunk-\" + {\"141\":\"0ed5173671a92cadddba\",\"258\":\"3d49325fecedfdbc713e\",\"537\":\"7f46a9303f533c62a4a1\",\"577\":\"5c3956f4a9488a157e3b\"}[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 + \"-\" + \"f0694add637d6a0acc73\" + \".css\";\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.p = \"https://static.nrk.no/dh/module/introscroll/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\tif (linkTag.parentNode) linkTag.parentNode.removeChild(linkTag)\n\t\t\treject(err);\n\t\t}\n\t}\n\tlinkTag.onerror = linkTag.onload = onLinkComplete;\n\tlinkTag.href = fullhref;\n\n\tif (oldTag) {\n\t\toldTag.parentNode.insertBefore(linkTag, oldTag.nextSibling);\n\t} else {\n\t\tdocument.head.appendChild(linkTag);\n\t}\n\treturn linkTag;\n};\nvar findStylesheet = (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 = {\"258\":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 _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 _navigator, _navigator$userAgent, _navigator$userAgent$;\n\n var isIFrame = window.location !== window.parent.location;\n var isChrome = (_navigator = navigator) === null || _navigator === void 0 ? void 0 : (_navigator$userAgent = _navigator.userAgent) === null || _navigator$userAgent === void 0 ? void 0 : (_navigator$userAgent$ = _navigator$userAgent.includes) === null || _navigator$userAgent$ === void 0 ? void 0 : _navigator$userAgent$.call(_navigator$userAgent, 'Chrome'); // Chrome has a bug when using document in as IntersectionObserver root: https://bugs.chromium.org/p/chromium/issues/detail?id=1420155\n\n if (isIFrame && !isChrome) {\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","function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\nfunction toStrings(object) {\n return Object.keys(object).filter(function (key) {\n return object[key];\n });\n}\n\nexport default (function (blockName) {\n for (var _len = arguments.length, modifiers = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n modifiers[_key - 1] = arguments[_key];\n }\n\n var strings = modifiers.filter(function (modifier) {\n return typeof modifier === 'string';\n });\n var objects = modifiers.filter(function (modifier) {\n return typeof modifier === 'object';\n });\n\n var objectString = objects.map(function (object) {\n return toStrings(object);\n }).reduce(function (a, b) {\n return [].concat(_toConsumableArray(a), _toConsumableArray(b));\n }, []);\n\n return [blockName].concat(strings.map(function (modifier) {\n return blockName + '--' + modifier;\n })).concat(objectString.map(function (modifier) {\n return blockName + '--' + modifier;\n })).join(' ');\n});","import balanceText from 'balance-text'\n\nconst watching = []\nlet handlersInitialized = false\n\nfunction debounce(func, threshold, execAsap, ...args) {\n let timeout\n\n return function () {\n const obj = this\n\n function delayed() {\n if (!execAsap) {\n func.apply(obj, args)\n }\n timeout = null\n }\n\n if (timeout) {\n clearTimeout(timeout)\n } else if (execAsap) {\n func.apply(obj, args)\n }\n timeout = setTimeout(delayed, threshold || 100)\n }\n}\n\nfunction ready(fn) {\n if (document.readyState !== 'loading') {\n fn()\n } else if (document.addEventListener) {\n document.addEventListener('DOMContentLoaded', fn)\n } else {\n document.attachEvent('onreadystatechange', () => {\n if (document.readyState !== 'loading') {\n fn()\n }\n })\n }\n}\n\nfunction updateWatched() {\n watching.forEach((element) => {\n const padding = window.getComputedStyle(element).padding\n const oldDisplay = element.style.display\n const oldMargin = element.style.margin\n const oldPadding = element.style.padding\n /*\n Display span as block when balancing text.\n Padding is moved to margin so that width is calculated correctly\n */\n element.style.display = 'block'\n element.style.margin = padding\n element.style.padding = 0\n balanceText(element)\n element.style.display = oldDisplay\n element.style.margin = oldMargin\n element.style.padding = oldPadding\n })\n}\n\nfunction initializeHandlers() {\n if (handlersInitialized) {\n return\n }\n\n // Apply on DOM ready\n ready(updateWatched)\n\n // Reapply on full load\n window.addEventListener('load', updateWatched)\n\n // Reapply on resize\n window.addEventListener('resize', debounce(updateWatched))\n\n handlersInitialized = true\n}\n\nexport function balanceAndWatch(elements) {\n watching.push(...elements)\n initializeHandlers()\n updateWatched()\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"logoWrapper\":\"dh-introscroll-logoWrapper\",\"nrklogo\":\"dh-introscroll-nrklogo\",\"introscroll\":\"dh-introscroll-introscroll\",\"card\":\"dh-introscroll-card\",\"card--first\":\"dh-introscroll-card--first\",\"cardFirst\":\"dh-introscroll-card--first\",\"card__container\":\"dh-introscroll-card__container\",\"cardContainer\":\"dh-introscroll-card__container\",\"card__headerAnchor\":\"dh-introscroll-card__headerAnchor\",\"cardHeaderAnchor\":\"dh-introscroll-card__headerAnchor\",\"card--large\":\"dh-introscroll-card--large\",\"cardLarge\":\"dh-introscroll-card--large\",\"card--last\":\"dh-introscroll-card--last\",\"cardLast\":\"dh-introscroll-card--last\",\"card--title\":\"dh-introscroll-card--title\",\"cardTitle\":\"dh-introscroll-card--title\",\"byline\":\"dh-introscroll-byline\",\"authors\":\"dh-introscroll-authors\",\"author\":\"dh-introscroll-author\",\"author__name\":\"dh-introscroll-author__name\",\"authorName\":\"dh-introscroll-author__name\",\"author__role\":\"dh-introscroll-author__role\",\"authorRole\":\"dh-introscroll-author__role\",\"authors--expandable\":\"dh-introscroll-authors--expandable\",\"authorsExpandable\":\"dh-introscroll-authors--expandable\",\"publish__date\":\"dh-introscroll-publish__date\",\"publishDate\":\"dh-introscroll-publish__date\",\"introscroll__error\":\"dh-introscroll-introscroll__error\",\"introscrollError\":\"dh-introscroll-introscroll__error\"};","import { html } from '@nrk/dh-server-libs/html'\nimport Scrollhistorie from '@nrk/dh-basis-scrollhistorie'\nimport { closest } from '@nrk/dh-basis-common'\nimport { bem } from '@nrk/dh-utils'\nimport { balanceAndWatch } from '../lib/balance-text-wrapper'\nimport { debounce } from 'debounce'\n\n/* styles */\nimport styles from './introscroll.module.css'\nimport './background.module.css'\n\nfunction toArray(nodeList) {\n return [].slice.call(nodeList)\n}\n\nexport default class Introscroll extends Scrollhistorie {\n static get observedAttributes() {\n return ['background-color', ...super.observedAttributes]\n }\n\n _updating = false\n _viewport = { height: 0, width: 0 }\n _currentPercentage\n\n connectedCallback() {\n super.connectedCallback()\n this._updateSizes()\n this._debouncedUpdateSizes = debounce(this._updateSizes, 500)\n window.addEventListener('resize', this._debouncedUpdateSizes)\n // eslint-disable-next-line compat/compat\n if (document?.fonts?.ready?.then) {\n // eslint-disable-next-line promise/catch-or-return\n document.fonts.ready.then(this._updateTitle)\n }\n\n this.updateByline()\n\n // Date in byline is calculated on the client. Update byline to include new date.\n setTimeout(() => this.updateByline(), 100)\n setTimeout(() => this.updateByline(), 5000)\n\n toArray(this.querySelectorAll('img, video, [role=img]')).forEach((elm) => {\n elm.tabIndex = '-1'\n })\n this.addEventListener('focus', this._handleFocus, true)\n\n requestAnimationFrame(() => {\n balanceAndWatch(this.querySelectorAll('.balance-text'))\n })\n }\n\n disconnectedCallback() {\n super.disconnectedCallback()\n this.removeEventListener('focus', this._handleFocus, true)\n window.removeEventListener('resize', this._debouncedUpdateSizes)\n }\n\n attributeChangedCallback(name, prevValue, newValue) {\n super.attributeChangedCallback(name, prevValue, newValue)\n\n if (name === 'background-color' && typeof newValue === 'string') {\n this.style.setProperty('--introscroll-background-color', newValue)\n } else if (name === 'viewport-position') {\n this._updateVisiblePercentage()\n }\n }\n\n _handleFocus = (e) => {\n const backgroundElement = e.target && closest(e.target, '[data-background-id]')\n if (!backgroundElement) {\n return\n }\n\n const backgroundId = backgroundElement.getAttribute('data-background-id')\n if (this.activeBackgroundId !== backgroundId) {\n const triggerElement = this.triggerElements.find(\n (elm) => elm.getAttribute('data-show-background') === backgroundId\n )\n if (triggerElement) {\n window.scrollTo(0, triggerElement.offsetTop - window.innerHeight / 2)\n }\n }\n }\n\n _updateVisiblePercentage() {\n if (this._updating) {\n return\n }\n this._updating = true\n\n const loop = () => {\n if (this.viewportPosition !== 'IN-VIEWPORT') {\n this._updating = false\n } else {\n const bottom = Math.min(\n Math.max(this.offsetHeight - window.scrollY, 0),\n this._viewport.height\n )\n const percentage = bottom / this._viewport.height\n if (percentage !== this._currentPercentage) {\n this.style.setProperty('--introscroll-percentage', percentage.toFixed(3))\n this._currentPercentage = percentage\n }\n requestAnimationFrame(loop)\n }\n }\n requestAnimationFrame(loop)\n }\n\n updateByline() {\n const authors = toArray(document.querySelectorAll('.author__body')).map((authorElm) => {\n const authNameElm = authorElm.querySelector('.author__name')\n const authRoleElm = authorElm.querySelector('.author__role')\n return {\n name: authNameElm.textContent,\n href: authNameElm.href,\n role: authRoleElm.textContent,\n }\n })\n const container = this.querySelector(`.${styles.byline}`)\n const publishDateElm = document.querySelector('.article-dateline__full')\n const publishDate = publishDateElm ? publishDateElm.textContent : ''\n\n const annotationElm = document.querySelector('.article-dateline-annotation')\n const publishAnnotation = annotationElm ? annotationElm.textContent : ''\n const expandable = authors.length > 3\n\n const authorHTML = authors.map((author) => {\n return html`\n
\n ${author.name} \n ${author.role}\n
\n `\n })\n const expandHTML = html`\n \n Vis ${authors.length - 1} bidragsytere til\n +${authors.length - 1} til\n \n `\n authorHTML.splice(1, 0, expandHTML)\n\n container.innerHTML = html`\n
${authorHTML.join('')}
\n ${publishAnnotation} ${publishDate} \n `\n }\n\n _updateSizes = () => {\n if (this._viewport.height !== document.documentElement.clientHeight) {\n this._viewport.height = document.documentElement.clientHeight\n }\n\n if (this._viewport.width !== document.documentElement.clientWidth) {\n this._viewport.width = document.documentElement.clientWidth\n this._updateTitle()\n this._updateCardHeights()\n }\n }\n\n _updateCardHeights() {\n const triggerElements = this.triggerElements\n if (!triggerElements || !triggerElements.length) {\n return\n }\n\n const containerSelector = `.${styles.card__container}`\n const lastElement = triggerElements[triggerElements.length - 1]\n const lastCardHeight = lastElement?.querySelector(containerSelector)?.offsetHeight\n\n requestAnimationFrame(() => {\n this.style.setProperty('--introscroll-lastCardHeight', `${lastCardHeight}px`)\n })\n }\n\n _updateTitle = () => {\n const titleCardContainer = this.querySelector(`.${styles.cardTitle} .${styles.card__container}`)\n let fontReduce = 0\n this.style.setProperty('--introscroll-font-reduce', `${fontReduce}px`)\n while (titleCardContainer.scrollWidth > titleCardContainer.offsetWidth && fontReduce < 20) {\n fontReduce++\n this.style.setProperty('--introscroll-font-reduce', `${fontReduce}px`)\n }\n }\n\n get backgroundColor() {\n this.getAttribute('background-color')\n }\n\n set backgroundColor(val) {\n this.setAttribute('background-color', val)\n }\n}\n","import { toArray, setAttribute } from '@nrk/dh-basis-common'\n\nconst CHILD_SELECTOR = '[dh-receive-introscroll-attributes]'\nconst STATE_ATTR = 'data-state'\nconst VIEWPORT_POSITION_ATTR = 'viewport-position'\nconst VIEWPORT_POSITION_DATA_ATTR = 'data-viewport-position'\n\nconst STOPS_ATTR = 'stops'\nconst TARGET_STOP_ATTR = 'target-stop'\n\n/*\n * Copies down the 'data-state' attribute to child.\n * Detects and sets 'data-viewport-position' on child.\n * */\nexport default class Spesialmodul extends HTMLElement {\n static get observedAttributes() {\n return [STATE_ATTR, VIEWPORT_POSITION_ATTR, STOPS_ATTR, TARGET_STOP_ATTR]\n }\n\n connectedCallback() {}\n\n disconnectedCallback() {}\n\n attributeChangedCallback(name, prev, next) {\n if (prev === next) {\n return\n }\n this._updateChildElements()\n }\n\n _updateChildElements() {\n const state = this.state\n const viewportPosition = this.viewportPosition\n const spesialmoduler = this.spesialmoduler\n const stops = this.stops\n const targetStop = this.targetStop\n spesialmoduler.forEach((spesialmodul) => {\n setAttribute(spesialmodul, STATE_ATTR, state)\n setAttribute(spesialmodul, VIEWPORT_POSITION_DATA_ATTR, viewportPosition)\n if (stops && stops.length) {\n setAttribute(spesialmodul, STOPS_ATTR, stops)\n setAttribute(spesialmodul, TARGET_STOP_ATTR, targetStop)\n }\n })\n }\n\n get spesialmoduler() {\n return toArray(this.querySelectorAll(CHILD_SELECTOR))\n }\n\n get viewportPosition() {\n return this.getAttribute(VIEWPORT_POSITION_ATTR)\n }\n\n set viewportPosition(value) {\n setAttribute(this, VIEWPORT_POSITION_ATTR, value)\n }\n\n get state() {\n return this.getAttribute(STATE_ATTR)\n }\n\n set state(value) {\n setAttribute(this, STATE_ATTR, value)\n }\n\n get stops() {\n return this.getAttribute(STOPS_ATTR)\n }\n\n set stops(val) {\n this.setAttribute(STOPS_ATTR, val)\n }\n\n get targetStop() {\n return Number(this.getAttribute(TARGET_STOP_ATTR))\n }\n\n set targetStop(val) {\n this.setAttribute(TARGET_STOP_ATTR, val)\n }\n}\n","import _defineProperty from '@babel/runtime/helpers/defineProperty';\nimport { closest, testReducedMotion, withinStops, toArray, setAttribute, toggleAttribute, withinRange } from '@nrk/dh-basis-common';\n\nvar STOPS_ATTR = 'stops';\nvar TARGET_STOP_ATTR = 'target-stop';\nvar AUTOPLAY_BLOCKED = 'autoplay-blocked';\nvar STATE_ATTR = 'data-state'; // Data attribute, so that it can be used on other elements\n\nvar VIEWPORT_POSITION_ATTR = 'data-viewport-position'; // Most videos have a frame-rate of 25 fps, but not all. Use with care.\n// Used to calculate target zone.\n\nvar FRAME_RATE = 25;\n\nvar isVisible = child => child.offsetWidth > 0 || child.offsetHeight > 0;\n/* Ponyfill Math.sign */\n\n\nfunction sign(val) {\n return val >= 0 ? 1 : -1;\n}\n\nfunction round(num, decimals) {\n var multiplier = Math.pow(10.0, decimals);\n return Math.round(num * multiplier) / multiplier;\n}\n\nclass StegvisVideo extends HTMLElement {\n constructor() {\n super(...arguments);\n\n _defineProperty(this, \"_paused\", true);\n\n _defineProperty(this, \"_disconnecting\", false);\n\n _defineProperty(this, \"_reducedMotionSeekEnabled\", false);\n\n _defineProperty(this, \"_onReadyStateChange\", e => {\n if (isVisible(e.target) && e.target.readyState >= 1) {\n this._startSeek();\n }\n });\n\n _defineProperty(this, \"_handleClick\", e => {\n var btn = closest(e.target, 'button');\n\n if (!btn) {\n return;\n }\n /* Triggers play if autoplay was blocked */\n\n\n var videoElement = this.videoElement;\n\n if (videoElement !== null && videoElement !== void 0 && videoElement.paused) {\n var playPromise = videoElement.play() || Promise.resolve();\n playPromise.then(() => {\n this.autoplayBlocked = false;\n });\n }\n });\n }\n\n static get observedAttributes() {\n return [TARGET_STOP_ATTR, STATE_ATTR, VIEWPORT_POSITION_ATTR];\n }\n\n connectedCallback() {\n this.addEventListener('click', this._handleClick);\n this.videoElements.forEach(videoElement => videoElement.addEventListener('loadedmetadata', this._onReadyStateChange));\n }\n\n disconnectedCallback() {\n this._disconnecting = true;\n this.removeEventListener('click', this._handleClick);\n this.videoElements.forEach(videoElement => videoElement.removeEventListener('loadedmetadata', this._onReadyStateChange));\n }\n\n attributeChangedCallback(name, prevValue, newValue) {\n var hasValue = newValue !== null;\n var valueChanged = prevValue !== newValue;\n\n if (!valueChanged) {\n return;\n }\n\n if (name === STATE_ATTR) {\n this._stateChanged(prevValue, newValue);\n } else if (name === VIEWPORT_POSITION_ATTR) {\n this._viewportChanged(newValue);\n } else if (name === TARGET_STOP_ATTR) {\n hasValue && this._startSeek();\n }\n }\n\n _stateChanged(prevState, nextState) {\n if (nextState === 'ACTIVE') {\n if (prevState === 'NEXT') {\n this._gotoStart();\n } else if (prevState === 'PREV') {\n this._gotoEnd();\n }\n\n this._startSeek();\n } else {\n this._paused = true;\n }\n }\n\n _viewportChanged(newValue) {\n if (newValue === 'IN-VIEWPORT') {\n this._preload();\n\n this._startSeek();\n } else if (newValue === 'ABOVE-VIEWPORT') {\n this._paused = true;\n\n this._gotoEnd();\n } else if (newValue === 'BELOW-VIEWPORT') {\n this._paused = true;\n\n this._gotoStart();\n }\n }\n\n _shouldPlay() {\n var _this$videoElement;\n\n var inViewport = typeof this.viewportPosition === 'undefined' || this.viewportPosition === 'IN-VIEWPORT';\n return ((_this$videoElement = this.videoElement) === null || _this$videoElement === void 0 ? void 0 : _this$videoElement.readyState) >= 1 && inViewport && this.state === 'ACTIVE';\n }\n\n _preload() {\n var videoElement = this.videoElement;\n\n if (videoElement && videoElement.getAttribute('preload') !== 'auto') {\n videoElement.setAttribute('preload', 'auto');\n }\n }\n\n _gotoStart() {\n var videoElement = this.videoElement;\n\n if (videoElement && videoElement.currentTime !== 0) {\n videoElement.currentTime = 0;\n }\n }\n\n _gotoEnd() {\n var videoElement = this.videoElement;\n var duration = videoElement === null || videoElement === void 0 ? void 0 : videoElement.duration;\n\n if (Number.isFinite(duration)) {\n videoElement.currentTime = duration;\n }\n }\n\n _enableSeekOnReducedMotion() {\n var videoElement = this.videoElement;\n\n if (this._reducedMotionSeekEnabled || !videoElement) {\n return Promise.resolve();\n }\n\n return (videoElement.play() || Promise.resolve(true)).then(() => {\n videoElement.pause();\n this._reducedMotionSeekEnabled = true;\n }).catch(e => {// Ignore error\n });\n }\n\n _startSeek() {\n if (!this._paused || !this._shouldPlay()) {\n return;\n }\n\n var reducedMotion = testReducedMotion();\n this._paused = false;\n var prevTime;\n\n var loop = timestamp => {\n var videoElement = this.videoElement;\n var targetTime = this.stops[this.targetStop];\n\n if (this._disconnecting || this._paused || !videoElement || !isFinite(targetTime)) {\n this._paused = true;\n videoElement === null || videoElement === void 0 ? void 0 : videoElement.pause();\n return;\n }\n\n if (!prevTime) {\n prevTime = timestamp;\n }\n\n this.invisibleVideoElements.filter(video => !video.paused).forEach(invisibleVideo => invisibleVideo.pause());\n var dt = (timestamp - prevTime) / 1000;\n var framesPerTick = Math.max(Math.ceil(Math.abs(dt * FRAME_RATE)), 1);\n var buffer = 0.5 * framesPerTick / FRAME_RATE;\n var currentTime = videoElement.currentTime;\n var atTargetStop = withinRange(currentTime, targetTime - buffer, targetTime + buffer);\n\n if (atTargetStop) {\n if (videoElement.currentTime !== targetTime) {\n videoElement.currentTime = targetTime;\n }\n\n this._paused = true;\n videoElement.pause();\n } else if (reducedMotion) {\n this._enableSeekOnReducedMotion().then(() => {\n videoElement.currentTime = targetTime;\n this._paused = true;\n });\n } else {\n var speed = this._calculateSpeed(currentTime);\n\n var direction = sign(targetTime - currentTime);\n\n if (this.autoplayBlocked) ; else if (direction === 1) {\n // Use normal playback for forward playback\n videoElement.playbackRate = speed;\n\n if (videoElement.paused) {\n var playPromise = videoElement.play() || Promise.resolve();\n playPromise.catch(e => {\n console.error(e);\n this.autoplayBlocked = true;\n });\n }\n } else {\n // Use seeking for reverse playback:\n // https://github.com/whatwg/html/issues/3754\n videoElement.pause();\n var nextTime = round(currentTime + dt * speed * direction, 2.0);\n\n if (currentTime !== nextTime) {\n videoElement.currentTime = nextTime;\n }\n }\n\n prevTime = timestamp;\n requestAnimationFrame(loop);\n }\n };\n\n requestAnimationFrame(loop);\n }\n\n _calculateSpeed(currentTime) {\n return withinStops(currentTime, this.stops, this.targetStop, 1) ? 1 : 3;\n }\n\n get videoElement() {\n return this.videoElements.find(isVisible);\n }\n\n get invisibleVideoElements() {\n return this.videoElements.filter(child => !isVisible(child));\n }\n\n get videoElements() {\n return toArray(this.children).filter(child => child.nodeName === 'VIDEO');\n }\n\n get stops() {\n var stopString = this.getAttribute(STOPS_ATTR) || '';\n return stopString.replace(/[[\\]]/g, '').split(',').map(s => s.trim()).filter(Boolean).map(s => Number(s));\n }\n\n set stops(val) {\n this.setAttribute(STOPS_ATTR, val.map(num => num.toFixed(2)).join(','));\n }\n\n get targetStop() {\n return Number(this.getAttribute(TARGET_STOP_ATTR) || 0);\n }\n\n set targetStop(val) {\n this.setAttribute(TARGET_STOP_ATTR, val);\n }\n\n get state() {\n return this.getAttribute(STATE_ATTR);\n }\n\n set state(val) {\n setAttribute(this, STATE_ATTR, val);\n }\n\n get viewportPosition() {\n return this.getAttribute(VIEWPORT_POSITION_ATTR);\n }\n\n set viewportPosition(val) {\n this.setAttribute(VIEWPORT_POSITION_ATTR, val);\n }\n\n get autoplayBlocked() {\n return this.hasAttribute(AUTOPLAY_BLOCKED) || false;\n }\n\n set autoplayBlocked(val) {\n toggleAttribute(this, AUTOPLAY_BLOCKED, val);\n }\n\n}\n\nexport { StegvisVideo as default };\n//# sourceMappingURL=dh-basis-stegvis-video.esm.js.map\n","import _defineProperty from '@babel/runtime/helpers/defineProperty';\nimport { 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","// extracted by mini-css-extract-plugin\nexport default {\"altText\":\"dh-introscroll-altText\"};","import './polyfills'\nimport { BaseElement } from '@nrk/dh-server-libs/base-element'\nimport { getElementTag } from '@nrk/dh-server-libs/get-element-tag'\nimport introscroll from './components/introscroll'\nimport spesialmodul from './components/media/spesialmodul'\nimport stegvisVideo from '@nrk/dh-basis-stegvis-video'\nimport levendeStillbilde from '@nrk/dh-basis-levende-stillbilde'\nimport { toArray } from '@nrk/dh-basis-common'\n\nimport styles from './components/introscroll.module.css'\nimport './components/cards/alt-text.module.css'\nimport './client.module.css'\n\nconst tag = getElementTag(__APP_NAME__, __APP_VERSION__)\n\nfunction safeDefine(elementName, constructor) {\n if (typeof customElements.get(elementName) === 'undefined') {\n customElements.define(elementName, constructor)\n }\n}\n\nexport class AppElement extends BaseElement {\n name = tag\n\n render() {\n if (this.features.sanityPreview) {\n // TODO: Load sanity preview script\n }\n this.initCustomElements()\n }\n\n async initCustomElements() {\n safeDefine('dh-introscroll', introscroll)\n safeDefine('dh-ints-basis-stegvis-video', stegvisVideo)\n safeDefine('dh-ints-basis-levende-stillbilde', levendeStillbilde)\n safeDefine('dh-ints-spesialmodul', spesialmodul)\n if (\n this.features.lottie &&\n typeof customElements.get('dh-ints-basis-stegvis-lottie') === 'undefined'\n ) {\n const stegvisLottie = (\n await import('@nrk/dh-basis-stegvis-lottie' /* webpackChunkName: \"dh-stegvis-lottie\" */)\n ).default\n\n safeDefine('dh-ints-basis-stegvis-lottie', stegvisLottie)\n }\n\n if (this.features.kart && typeof customElements.get('dh-ints-kart') === 'undefined') {\n const kart = (\n await import('./lib/karthistorie-chunk' /* webpackChunkName: \"dh-karthistorie\" */)\n ).default\n\n safeDefine('dh-ints-kart', kart)\n }\n\n this.addEventListener('dh-basis-scrollhistorie-trigger-activated', (e) => {\n e.preventDefault()\n this.sendGaEvent({ eventAction: 'TRIGGER-ACTIVATED', eventLabel: e.detail.triggerIndex })\n })\n\n if (location.hostname.startsWith('preview') || location.hostname.startsWith('localhost')) {\n toArray(this.querySelectorAll(`.${styles.introscroll__error}`)).forEach((error) => {\n error.style.display = 'block'\n })\n }\n }\n\n get features() {\n return JSON.parse(this.getAttribute('features'))\n }\n}\n\nsafeDefine(tag, AppElement)\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","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","html","strings","interpolations","replace","breakMatches","wsnwMatches","wsnwOffset","watching","sel","handlersInitialized","polyfilled","noop","callback","Array","NextWS_params","reset","isWhiteSpaceNoWrap","some","range","start","end","recursiveCalcNoWrapOffsetsForLine","includeTag","nodeType","ELEMENT_NODE","getComputedStyle","whiteSpace","len","outerHTML","childNodes","child","innerHTML","COMMENT_NODE","PROCESSING_INSTRUCTION_NODE","calcNoWrapOffsetsForLine","oldWS","lineCharOffset","style","newMatches","width","isJustified","currentStyle","textAlign","justify","txt","conWidth","words","trim","tmp","createElement","appendChild","size","offsetWidth","parentNode","removeChild","wordSpacing","Math","floor","div","isBreakChar","re","exec","isBreakOpportunity","findBreakOpportunity","desWidth","dir","c","ret","w","substr","getElementsList","querySelectorAll","tagName","balanceText","brs","br","spans","span","textNode","createTextNode","insertBefore","textContent","removeTags","oldFloat","float","oldDisplay","display","oldPosition","position","oldLH","lineHeight","containerWidth","containerHeight","offsetHeight","nowrapWidth","nowrapHeight","spaceWidth","h","bottom","right","height","margin","padding","visibility","overflow","space","fontSize","dims","getBoundingClientRect","getSpaceWidth","remainingText","newText","lineText","shouldJustify","desiredWidth","guessIndex","le","ge","splitIndex","isHyphen","isSoftHyphen","remLines","round","abs","Boolean","updateWatched","selectedElements","join","initHandlers","fn","readyState","addEventListener","attachEvent","func","execAsap","args","timeout","obj","clearTimeout","setTimeout","debounce","publicInterface","options","watch","balanceTextAndWatch","unwatch","documentElement","textWrap","WebkitTextWrap","MozTextWrap","MsTextWrap","hasTextWrap","wait","immediate","context","timestamp","later","last","Date","now","debounced","callNow","clear","flush","_classExtractFieldDescriptor","receiver","privateMap","action","has","TypeError","get","_classPrivateFieldGet","descriptor","classExtractFieldDescriptor","_classPrivateFieldSet","set","writable","_typeof","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","prop","hasOwnProperty","toStringTag","nmd","paths","children","p","loadStylesheet","reject","fullhref","existingLinkTags","getElementsByTagName","dataHref","tag","getAttribute","rel","existingStyleTags","findStylesheet","oldTag","linkTag","type","onerror","onload","errorType","realHref","err","code","request","nextSibling","head","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","mount","destroy","removeEventListener","innerHeight","innerWidth","listen","emit","getVh","getHeight","navigator","userAgent","vendor","opera","toLowerCase","test","platform","checkHasVhBug","setProperty","console","error","fixVhBug","dedupeId","dedupeMixin","mixin","mixinId","base","_base$_appliedMixins","_base$_appliedMixins2","_appliedMixins","extended","_classPrivateMethodInitSpec$1","privateSet","_checkPrivateRedeclaration$1","add","_classPrivateFieldInitSpec","privateCollection","_classPrivateMethodGet$1","VIEWPORT_POSITION_ATTR","VIEWPORT_POSITIONS","ViewportPositionMixin","Base","_observer","_createIntersectionObserver","_disconnectIntersectionObserver","_handleIntersectionChange","WeakMap","WeakSet","_ref","intersection","viewportPosition","isAbove","observedAttributes","_super$observedAttrib","_super$connectedCallb","_createIntersectionObserver2","disconnectedCallback","_super$disconnectedCa","_disconnectIntersectionObserver2","viewportContainer","_document$scrollingEl","scrollingElement","viewportIntersectionRoot","isViewport","_navigator","_navigator$userAgent","_navigator$userAgent$","isIFrame","parent","isChrome","includes","_classPrivateFieldGet2","_classPrivateFieldGet3","_classPrivateMethodInitSpec","_checkPrivateRedeclaration","_classStaticPrivateFieldSpecSet","classConstructor","_classCheckPrivateStaticAccess","_classCheckPrivateStaticFieldDescriptor","_classApplyDescriptorSet","AttributeBindingMixin","_class","_getTargetElements","_boundAttributes","AttributeBindingMixinDef","boundAttributes","attribute","targets","sourceAttribute","targetAttribute","sourceAttributeName","targetAttributeName","attributeChangedCallback","oldValue","newValue","_super$attributeChang","_classApplyDescriptorGet","configuration","targetElements","_classPrivateMethodGet","_getTargetElements2","from","ACTIVE_BACKGROUND_ATTR","ROOT_MARGIN_ATTR","BG_ID_ATTR","SHOW_BACKGROUND_ATTR","STATE_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","val","querySelector","background","state","isActive","nextActive","_getBackgroundId2","prevActive","_toConsumableArray","arr","isArray","arr2","blockName","_len","modifiers","_key","modifier","objectString","toStrings","b","oldMargin","oldPadding","initializeHandlers","Introscroll","_updating","_viewport","_currentPercentage","_handleFocus","backgroundElement","find","scrollTo","offsetTop","_updateSizes","clientHeight","clientWidth","_updateTitle","_updateCardHeights","titleCardContainer","styles","fontReduce","scrollWidth","_document","_document$fonts","_document$fonts$ready","_debouncedUpdateSizes","fonts","ready","updateByline","tabIndex","requestAnimationFrame","prevValue","_updateVisiblePercentage","loop","percentage","min","max","scrollY","toFixed","authors","authorElm","authNameElm","authRoleElm","role","publishDateElm","annotationElm","publishAnnotation","expandable","authorHTML","author","_t","_","expandHTML","_t2","_t3","bem","_lastElement$querySel","containerSelector","lastElement","lastCardHeight","backgroundColor","STOPS_ATTR","TARGET_STOP_ATTR","Spesialmodul","prev","next","_updateChildElements","spesialmoduler","spesialmodul","AUTOPLAY_BLOCKED","isVisible","StegvisVideo","_startSeek","videoElement","paused","play","autoplayBlocked","_handleClick","videoElements","_onReadyStateChange","_disconnecting","hasValue","_stateChanged","_viewportChanged","prevState","nextState","_gotoStart","_gotoEnd","_paused","_preload","_shouldPlay","_this$videoElement","inViewport","duration","isFinite","_enableSeekOnReducedMotion","_reducedMotionSeekEnabled","pause","catch","prevTime","reducedMotion","invisibleVideoElements","video","invisibleVideo","num","decimals","multiplier","dt","buffer","ceil","speed","_calculateSpeed","direction","playbackRate","nextTime","pow","nodeName","s","DISABLE_FORCED_ATTRIBUTES_ATTR","IS_PAUSED","READY_STATE","offsetParent","LevendeStillbilde","_visibleVideoElement","isPaused","_playVideo","_pauseVideo","_updateVisibleVideoElement","_setVideoAttributes","_setEventListeners","_removeEventListeners","_updatePlayState","_handleResize","_handlePlayChange","nextVisibleVideo","_shouldPreload","disableForcedAttributes","_this$_visibleVideoEl","_this$_visibleVideoEl2","_this$_visibleVideoEl3","load","__APP_NAME__","__APP_VERSION__","safeDefine","elementName","customElements","define","AppElement","features","sanityPreview","initCustomElements","introscroll","stegvisVideo","levendeStillbilde","lottie","kart","preventDefault","eventAction","eventLabel","hostname","startsWith"],"sourceRoot":""}