{"version":3,"file":"main-32290a653f2c5fcca532.esm.js","mappings":"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","sources":["webpack://dh-bildesveip/webpack/runtime/import chunk loading","webpack://dh-bildesveip/./node_modules/cuid/index.js","webpack://dh-bildesveip/./node_modules/cuid/lib/fingerprint.browser.js","webpack://dh-bildesveip/./node_modules/cuid/lib/getRandomValue.browser.js","webpack://dh-bildesveip/./node_modules/cuid/lib/pad.js","webpack://dh-bildesveip/./node_modules/@nrk/dh-server-libs/get-element-tag.js","webpack://dh-bildesveip/./node_modules/@nrk/dh-server-libs/src/get-element-tag.js","webpack://dh-bildesveip/./node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js","webpack://dh-bildesveip/./node_modules/@babel/runtime/helpers/esm/typeof.js","webpack://dh-bildesveip/./node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","webpack://dh-bildesveip/./node_modules/@babel/runtime/helpers/esm/toPrimitive.js","webpack://dh-bildesveip/./node_modules/@babel/runtime/helpers/esm/defineProperty.js","webpack://dh-bildesveip/./node_modules/@nrk/dh-basis-common/dist/index.esm.js","webpack://dh-bildesveip/webpack/bootstrap","webpack://dh-bildesveip/webpack/runtime/compat get default export","webpack://dh-bildesveip/webpack/runtime/define property getters","webpack://dh-bildesveip/webpack/runtime/ensure chunk","webpack://dh-bildesveip/webpack/runtime/get javascript chunk filename","webpack://dh-bildesveip/webpack/runtime/get mini-css chunk filename","webpack://dh-bildesveip/webpack/runtime/hasOwnProperty shorthand","webpack://dh-bildesveip/webpack/runtime/make namespace object","webpack://dh-bildesveip/webpack/runtime/publicPath","webpack://dh-bildesveip/webpack/runtime/css loading","webpack://dh-bildesveip/./node_modules/@nrk/dh-basis-levende-stillbilde/dist/index.esm.js","webpack://dh-bildesveip/./node_modules/@babel/runtime/helpers/esm/classPrivateFieldGet2.js","webpack://dh-bildesveip/./node_modules/@babel/runtime/helpers/esm/assertClassBrand.js","webpack://dh-bildesveip/./node_modules/@babel/runtime/helpers/esm/classPrivateFieldSet.js","webpack://dh-bildesveip/./node_modules/@babel/runtime/helpers/esm/classApplyDescriptorSet.js","webpack://dh-bildesveip/./node_modules/@babel/runtime/helpers/esm/classPrivateFieldGet.js","webpack://dh-bildesveip/./node_modules/@babel/runtime/helpers/esm/classApplyDescriptorGet.js","webpack://dh-bildesveip/./node_modules/@nrk/dh-basis-sveip/dist/index.esm.js","webpack://dh-bildesveip/./src/components/bildesveip.module.css?e7fe","webpack://dh-bildesveip/./src/components/bildesveip.js","webpack://dh-bildesveip/./src/components/wrapper.js","webpack://dh-bildesveip/./node_modules/@nrk/nrkno-snowplow/node_modules/@nrk/snowplow-web/index.js","webpack://dh-bildesveip/./node_modules/@nrk/nrkno-snowplow/build-npm/nrkno-snowplow.package.mjs","webpack://dh-bildesveip/./node_modules/@nrk/debug/debug.js","webpack://dh-bildesveip/./node_modules/@nrk/snowplow-web/index.js","webpack://dh-bildesveip/./node_modules/@nrk/dh-snowplow/dist/index.mjs","webpack://dh-bildesveip/./node_modules/@nrk/dh-snowplow/dist/shared/dh-snowplow.1ee613bf.mjs","webpack://dh-bildesveip/./src/client.js"],"sourcesContent":["// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t792: 0\n};\n\nvar installChunk = (data) => {\n\tvar {ids, modules, runtime} = data;\n\t// add \"modules\" to the modules object,\n\t// then flag all \"ids\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tfor(moduleId in modules) {\n\t\tif(__webpack_require__.o(modules, moduleId)) {\n\t\t\t__webpack_require__.m[moduleId] = modules[moduleId];\n\t\t}\n\t}\n\tif(runtime) runtime(__webpack_require__);\n\tfor(;i < ids.length; i++) {\n\t\tchunkId = ids[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[ids[i]] = 0;\n\t}\n\n}\n\n__webpack_require__.f.j = (chunkId, promises) => {\n\t\t// import() chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[1]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = import(\"./\" + __webpack_require__.u(chunkId)).then(installChunk, (e) => {\n\t\t\t\t\t\tif(installedChunks[chunkId] !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\tthrow e;\n\t\t\t\t\t});\n\t\t\t\t\tvar promise = Promise.race([promise, new Promise((resolve) => (installedChunkData = installedChunks[chunkId] = [resolve]))])\n\t\t\t\t\tpromises.push(installedChunkData[1] = promise);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no external install chunk\n\n// no on chunks loaded","/**\n * cuid.js\n * Collision-resistant UID generator for browsers and node.\n * Sequential for fast db lookups and recency sorting.\n * Safe for element IDs and server-side lookups.\n *\n * Extracted from CLCTR\n *\n * Copyright (c) Eric Elliott 2012\n * MIT License\n */\n\nvar fingerprint = require('./lib/fingerprint.js');\nvar pad = require('./lib/pad.js');\nvar getRandomValue = require('./lib/getRandomValue.js');\n\nvar c = 0,\n blockSize = 4,\n base = 36,\n discreteValues = Math.pow(base, blockSize);\n\nfunction randomBlock () {\n return pad((getRandomValue() *\n discreteValues << 0)\n .toString(base), blockSize);\n}\n\nfunction safeCounter () {\n c = c < discreteValues ? c : 0;\n c++; // this is not subliminal\n return c - 1;\n}\n\nfunction cuid () {\n // Starting with a lowercase letter makes\n // it HTML element ID friendly.\n var letter = 'c', // hard-coded allows for sequential access\n\n // timestamp\n // warning: this exposes the exact date and time\n // that the uid was created.\n timestamp = (new Date().getTime()).toString(base),\n\n // Prevent same-machine collisions.\n counter = pad(safeCounter().toString(base), blockSize),\n\n // A few chars to generate distinct ids for different\n // clients (so different computers are far less\n // likely to generate the same id)\n print = fingerprint(),\n\n // Grab some more chars from Math.random()\n random = randomBlock() + randomBlock();\n\n return letter + timestamp + counter + print + random;\n}\n\ncuid.slug = function slug () {\n var date = new Date().getTime().toString(36),\n counter = safeCounter().toString(36).slice(-4),\n print = fingerprint().slice(0, 1) +\n fingerprint().slice(-1),\n random = randomBlock().slice(-2);\n\n return date.slice(-2) +\n counter + print + random;\n};\n\ncuid.isCuid = function isCuid (stringToCheck) {\n if (typeof stringToCheck !== 'string') return false;\n if (stringToCheck.startsWith('c')) return true;\n return false;\n};\n\ncuid.isSlug = function isSlug (stringToCheck) {\n if (typeof stringToCheck !== 'string') return false;\n var stringLength = stringToCheck.length;\n if (stringLength >= 7 && stringLength <= 10) return true;\n return false;\n};\n\ncuid.fingerprint = fingerprint;\n\nmodule.exports = cuid;\n","var pad = require('./pad.js');\n\nvar env = typeof window === 'object' ? window : self;\nvar globalCount = Object.keys(env).length;\nvar mimeTypesLength = navigator.mimeTypes ? navigator.mimeTypes.length : 0;\nvar clientId = pad((mimeTypesLength +\n navigator.userAgent.length).toString(36) +\n globalCount.toString(36), 4);\n\nmodule.exports = function fingerprint () {\n return clientId;\n};\n","\nvar getRandomValue;\n\nvar crypto = typeof window !== 'undefined' &&\n (window.crypto || window.msCrypto) ||\n typeof self !== 'undefined' &&\n self.crypto;\n\nif (crypto) {\n var lim = Math.pow(2, 32) - 1;\n getRandomValue = function () {\n return Math.abs(crypto.getRandomValues(new Uint32Array(1))[0] / lim);\n };\n} else {\n getRandomValue = Math.random;\n}\n\nmodule.exports = getRandomValue;\n","module.exports = function pad (num, size) {\n var s = '000000000' + num;\n return s.substr(s.length - size);\n};\n","module.exports = require('./src/get-element-tag')\n","/**\n * Creates a valid custom element name that is versioned (major)\n */\nfunction getElementTag(name, version) {\n const formattedVersion = version ? `-v${version.split('.')[0]}` : ''\n return name + formattedVersion\n}\n\nmodule.exports.getElementTag = getElementTag\n","function asyncGeneratorStep(n, t, e, r, o, a, c) {\n try {\n var i = n[a](c),\n u = i.value;\n } catch (n) {\n return void e(n);\n }\n i.done ? t(u) : Promise.resolve(u).then(r, o);\n}\nfunction _asyncToGenerator(n) {\n return function () {\n var t = this,\n e = arguments;\n return new Promise(function (r, o) {\n var a = n.apply(t, e);\n function _next(n) {\n asyncGeneratorStep(a, r, o, _next, _throw, \"next\", n);\n }\n function _throw(n) {\n asyncGeneratorStep(a, r, o, _next, _throw, \"throw\", n);\n }\n _next(void 0);\n });\n };\n}\nexport { _asyncToGenerator as default };","function _typeof(o) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n return typeof o;\n } : function (o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}\nexport { _typeof as default };","import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nfunction toPropertyKey(t) {\n var i = toPrimitive(t, \"string\");\n return \"symbol\" == _typeof(i) ? i : i + \"\";\n}\nexport { toPropertyKey as default };","import _typeof from \"./typeof.js\";\nfunction toPrimitive(t, r) {\n if (\"object\" != _typeof(t) || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != _typeof(i)) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}\nexport { toPrimitive as default };","import toPropertyKey from \"./toPropertyKey.js\";\nfunction _defineProperty(e, r, t) {\n return (r = toPropertyKey(r)) in e ? Object.defineProperty(e, r, {\n value: t,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }) : e[r] = t, e;\n}\nexport { _defineProperty as default };","import _defineProperty from '@babel/runtime/helpers/defineProperty';\n\n/* eslint-disable compat/compat */\n\nvar defaultRoot;\nfunction isDocumentRootSupported() {\n try {\n // eslint-disable-next-line no-new\n new IntersectionObserver(() => {}, {\n root: document\n });\n return true;\n } catch (e) {\n return false;\n }\n}\n\n/**\n * Returns default root for IntersectionObserver (document if supported and null otherwise).\n *\n * Intersections will be detected against the top level viewport if root is null.\n * This works fine in standalone pages.\n * But, in frame previews we want the intersection to be against the documents scrollport and not the viewport of the parent page.\n *\n * https://github.com/w3c/IntersectionObserver/issues/372\n *\n * @return {Document | null}\n */\nfunction getDefaultRoot() {\n if (typeof defaultRoot === 'undefined') {\n defaultRoot = isDocumentRootSupported() ? document : null;\n }\n return defaultRoot;\n}\n\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\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 _defineProperty(this, \"elements\", void 0);\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 disconnect() {\n // Unregister trigger elements\n this.elements.forEach(elm => this.intersectionObserver.unobserve(elm));\n\n // Disconnect intersection observer\n this.intersectionObserver.disconnect();\n }\n}\n\nfunction toggleAttribute(el, name, boolValue) {\n if (!el) {\n return;\n }\n var nextValue;\n if (typeof boolValue !== 'undefined') {\n nextValue = !!boolValue;\n } else {\n nextValue = el.hasAttribute(name);\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 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 if (proto.closest) {\n return (el, css) => el.closest(css);\n } else {\n return (el, css) => {\n for (; el; el = el.parentElement) if (match.call(el, css)) return el;\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;\n // 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 }\n // IE reports incorrect event.defaultPrevented\n // but correct return value on element.dispatchEvent\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}\nclass VerticalScroll {\n constructor(container) {\n _defineProperty(this, \"container\", void 0);\n this.container = container;\n }\n cancel() {\n this._cancelled = true;\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 var loop = currentTime => {\n if (this._cancelled) {\n return;\n }\n if (!startTime) {\n startTime = currentTime - 1;\n }\n var timeElapsed = currentTime - startTime;\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 // eslint-disable-next-line compat/compat\n window.requestAnimationFrame(loop);\n }\n}\nclass HorizontalScroll {\n constructor(container) {\n _defineProperty(this, \"container\", void 0);\n this.container = container;\n }\n cancel() {\n this._cancelled = true;\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 var loop = currentTime => {\n if (this._cancelled) {\n return;\n }\n if (!startTime) {\n startTime = currentTime - 1;\n }\n var timeElapsed = currentTime - startTime;\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 // eslint-disable-next-line compat/compat\n window.requestAnimationFrame(loop);\n }\n}\n\nfunction testReducedMotion() {\n if (typeof window !== 'undefined') {\n return !!window.matchMedia && window.matchMedia('(prefers-reduced-motion)').matches;\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}\nfunction unique(value, index, self) {\n return self.indexOf(value) === index;\n}\n\n/*\n * 'loading=\"lazy\"' is defined in terms of IntersectionObserver and the initial root.\n * As a result images with 'loading=\"lazy\"' inside a scroll container will not load\n * until they at least have one pixel visible in the viewport.\n *\n * This will hopefully fixed in a future version of the spec:\n * https://github.com/w3c/IntersectionObserver/issues/431\n *\n * scroll-container-lazy-load observes images and a scroll container.\n * Once images are close to intersecting it will change 'loading=\"lazy\"' to 'loading=\"eager\"'.\n * */\nfunction loadImage(image) {\n if (image.loading === 'lazy') {\n image.loading = 'eager';\n }\n}\nfunction connectScrollContainerLazyLoad(container, images) {\n var containerIntersecting = false;\n var deferredImages = [];\n\n // eslint-disable-next-line compat/compat\n var containerObserver = new IntersectionObserver(entries => {\n containerIntersecting = entries === null || entries === void 0 ? void 0 : entries[0].isIntersecting;\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);\n\n // eslint-disable-next-line compat/compat\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 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 for (var image of images) {\n imageObserver.observe(image);\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 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=index.esm.js.map\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// 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 \"\" + (chunkId === 725 ? \"dh-basis-kart\" : chunkId) + \"-chunk-\" + {\"222\":\"74725bb19299666596d3\",\"725\":\"212e1be4407cd766a826\"}[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 + \"-\" + \"a0aa536538ae2fee04df\" + \".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__.p = \"https://static.nrk.no/dh/module/bildesveip/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\tif (__webpack_require__.nc) {\n\t\tlinkTag.nonce = __webpack_require__.nc;\n\t}\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;\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(\" + errorType + \": \" + realHref + \")\");\n\t\t\terr.name = \"ChunkLoadError\";\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\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\t792: 0\n};\n\n__webpack_require__.f.miniCss = (chunkId, promises) => {\n\tvar cssChunks = {\"222\":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\n\n// no prefetching\n\n// no preloaded","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};\nvar isVisible = child => !!child.offsetParent;\nclass LevendeStillbilde extends HTMLElement {\n constructor() {\n super(...arguments);\n _defineProperty(this, \"_disconnecting\", false);\n _defineProperty(this, \"_visibleVideoElement\", void 0);\n _defineProperty(this, \"_handlePlayChange\", e => {\n if (e.type === 'play') {\n dispatchEvent(this, 'dh-basis-autoplay-succeeded');\n }\n if (e.target === this._visibleVideoElement) {\n this.isPaused = this._visibleVideoElement.paused;\n }\n });\n _defineProperty(this, \"_updatePlayState\", () => {\n if (!this._visibleVideoElement) {\n return;\n }\n if (this._shouldPlay()) {\n this._playVideo();\n } else {\n this._pauseVideo();\n }\n });\n _defineProperty(this, \"_handleResize\", () => {\n this._updateVisibleVideoElement();\n });\n }\n static get observedAttributes() {\n return [STATE_ATTR, DISABLE_FORCED_ATTRIBUTES_ATTR, VIEWPORT_POSITION_ATTR];\n }\n connectedCallback() {\n this._setVideoAttributes();\n this._setEventListeners();\n this._updateVisibleVideoElement();\n }\n disconnectedCallback() {\n this._disconnecting = true;\n this._removeEventListeners();\n }\n attributeChangedCallback(name, prevValue, newValue) {\n var valueChanged = prevValue !== newValue;\n if (name === STATE_ATTR || name === VIEWPORT_POSITION_ATTR) {\n if (valueChanged) {\n this._updateVisibleVideoElement();\n this._updatePlayState();\n if (name === VIEWPORT_POSITION_ATTR && newValue === 'IN-VIEWPORT') {\n this._preload();\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 _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 _updateVisibleVideoElement() {\n // eslint-disable-next-line compat/compat\n requestAnimationFrame(() => {\n var nextVisibleVideo = this.videoElements.find(isVisible);\n if (nextVisibleVideo !== this._visibleVideoElement) {\n // Pause previous video\n this._pauseVideo();\n this._visibleVideoElement = nextVisibleVideo;\n if (this._shouldPreload()) {\n this._preload();\n }\n this._updatePlayState();\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 _shouldPlay() {\n var _this$_visibleVideoEl;\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 _shouldPreload() {\n return this.viewportPosition === 'IN-VIEWPORT';\n }\n _preload() {\n var _this$_visibleVideoEl2;\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 (_this$_visibleVideoEl3 = this._visibleVideoElement) === null || _this$_visibleVideoEl3 === void 0 || _this$_visibleVideoEl3.load();\n }\n }\n _playVideo() {\n dispatchEvent(this, 'dh-basis-autoplay-attempted');\n var reducedMotion = testReducedMotion();\n var videoElement = this._visibleVideoElement;\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 _pauseVideo() {\n var videoElement = this._visibleVideoElement;\n if (videoElement && !videoElement.paused) {\n videoElement.pause();\n }\n }\n get videoElements() {\n return toArray(this.querySelectorAll('video'));\n }\n get disableForcedAttributes() {\n return this.hasAttribute(DISABLE_FORCED_ATTRIBUTES_ATTR);\n }\n get state() {\n return this.getAttribute(STATE_ATTR);\n }\n set state(val) {\n this.setAttribute(STATE_ATTR, val);\n }\n get isPaused() {\n return this.getAttribute(IS_PAUSED);\n }\n set isPaused(val) {\n if (val) {\n this.setAttribute(IS_PAUSED, '');\n } else {\n this.removeAttribute(IS_PAUSED);\n }\n }\n get autoplayBlocked() {\n return this.hasAttribute(AUTOPLAY_BLOCKED) || false;\n }\n set autoplayBlocked(val) {\n toggleAttribute(this, AUTOPLAY_BLOCKED, val);\n }\n get viewportPosition() {\n return this.getAttribute(VIEWPORT_POSITION_ATTR);\n }\n set viewportPosition(val) {\n this.setAttribute(VIEWPORT_POSITION_ATTR, val);\n }\n}\n\nexport { LevendeStillbilde as default };\n//# sourceMappingURL=index.esm.js.map\n","import assertClassBrand from \"./assertClassBrand.js\";\nfunction _classPrivateFieldGet2(s, a) {\n return s.get(assertClassBrand(s, a));\n}\nexport { _classPrivateFieldGet2 as default };","function _assertClassBrand(e, t, n) {\n if (\"function\" == typeof e ? e === t : e.has(t)) return arguments.length < 3 ? t : n;\n throw new TypeError(\"Private element is not present on this object\");\n}\nexport { _assertClassBrand as default };","import classApplyDescriptorSet from \"./classApplyDescriptorSet.js\";\nimport classPrivateFieldGet2 from \"./classPrivateFieldGet2.js\";\nfunction _classPrivateFieldSet(e, t, r) {\n var s = classPrivateFieldGet2(t, e);\n return classApplyDescriptorSet(e, s, r), r;\n}\nexport { _classPrivateFieldSet as default };","function _classApplyDescriptorSet(e, t, l) {\n if (t.set) t.set.call(e, l);else {\n if (!t.writable) throw new TypeError(\"attempted to set read only private field\");\n t.value = l;\n }\n}\nexport { _classApplyDescriptorSet as default };","import classApplyDescriptorGet from \"./classApplyDescriptorGet.js\";\nimport classPrivateFieldGet2 from \"./classPrivateFieldGet2.js\";\nfunction _classPrivateFieldGet(e, t) {\n var r = classPrivateFieldGet2(t, e);\n return classApplyDescriptorGet(e, r);\n}\nexport { _classPrivateFieldGet as default };","function _classApplyDescriptorGet(e, t) {\n return t.get ? t.get.call(e) : t.value;\n}\nexport { _classApplyDescriptorGet as default };","import _classPrivateFieldSet from '@babel/runtime/helpers/classPrivateFieldSet';\nimport _classPrivateFieldGet from '@babel/runtime/helpers/classPrivateFieldGet';\nimport _asyncToGenerator from '@babel/runtime/helpers/asyncToGenerator';\nimport _defineProperty from '@babel/runtime/helpers/defineProperty';\n\nfunction _classPrivateMethodInitSpec$4(obj, privateSet) { _checkPrivateRedeclaration$5(obj, privateSet); privateSet.add(obj); }\nfunction _classPrivateMethodGet$4(receiver, privateSet, fn) { if (!privateSet.has(receiver)) { throw new TypeError(\"attempted to get private field on non-instance\"); } return fn; }\nfunction _classPrivateFieldInitSpec$4(obj, privateMap, value) { _checkPrivateRedeclaration$5(obj, privateMap); privateMap.set(obj, value); }\nfunction _checkPrivateRedeclaration$5(obj, privateCollection) { if (privateCollection.has(obj)) { throw new TypeError(\"Cannot initialize the same private elements twice on an object\"); } }\nvar MOVE_SIGNIFICANT = 10;\nvar VELOCITY_SIGNIFICANT = 0.3;\nfunction lengthInPx(value) {\n if (value === 'auto') {\n return 0;\n } else if (value.endsWith('px')) {\n return parseInt(value.replace('px'));\n } else if (value.endsWith('%')) {\n throw new Error('scroll percentage in % is not supported');\n }\n}\nvar _internalResolve = /*#__PURE__*/new WeakMap();\nvar _internalReject = /*#__PURE__*/new WeakMap();\nclass PromiseWrapper {\n constructor() {\n /** @type {'pending' | 'resolved' | 'rejected'} */\n _defineProperty(this, \"state\", 'pending');\n _defineProperty(this, \"promise\", void 0);\n _classPrivateFieldInitSpec$4(this, _internalResolve, {\n writable: true,\n value: void 0\n });\n _classPrivateFieldInitSpec$4(this, _internalReject, {\n writable: true,\n value: void 0\n });\n this.promise = new Promise((resolve, reject) => {\n _classPrivateFieldSet(this, _internalResolve, resolve);\n _classPrivateFieldSet(this, _internalReject, reject);\n });\n }\n resolve(value) {\n this.state = 'resolved';\n _classPrivateFieldGet(this, _internalResolve).call(this, value);\n }\n reject(reason) {\n this.state = 'rejected';\n _classPrivateFieldGet(this, _internalReject).call(this, reason);\n }\n}\n\n/**\n * Mixin that supports click-dragging and smooth scrolling on a child scroll container.\n * The container must be marked with `[data-scroll-container]`\n *\n * dragCompleteCallback is called each time a drag is complete\n *\n * @template {{prototype: HTMLElement; new(): HTMLElement}} BaseClass\n * @param {BaseClass} Base\n * @mixin SideScrollingMixin\n */\nfunction SideScrollingMixin(Base) {\n var _scrollingFinished, _momentum, _autoScrolling, _dragging, _handleMouseDown, _handleMouseMove, _handleMouseUp;\n return _scrollingFinished = /*#__PURE__*/new WeakMap(), _momentum = /*#__PURE__*/new WeakMap(), _autoScrolling = /*#__PURE__*/new WeakMap(), _dragging = /*#__PURE__*/new WeakMap(), _handleMouseDown = /*#__PURE__*/new WeakSet(), _handleMouseMove = /*#__PURE__*/new WeakSet(), _handleMouseUp = /*#__PURE__*/new WeakSet(), class SideScrollingMixinDef extends Base {\n constructor() {\n super(...arguments);\n _classPrivateMethodInitSpec$4(this, _handleMouseUp);\n _classPrivateMethodInitSpec$4(this, _handleMouseMove);\n _classPrivateMethodInitSpec$4(this, _handleMouseDown);\n /** @type PromiseWrapper */\n _classPrivateFieldInitSpec$4(this, _scrollingFinished, {\n writable: true,\n value: void 0\n });\n /* Values used to simulate momentum on click-drag */\n _classPrivateFieldInitSpec$4(this, _momentum, {\n writable: true,\n value: {\n pageX: 0,\n totalDiffX: 0,\n prevTime: 0,\n velX: 0\n }\n });\n _classPrivateFieldInitSpec$4(this, _autoScrolling, {\n writable: true,\n value: 0\n });\n _classPrivateFieldInitSpec$4(this, _dragging, {\n writable: true,\n value: false\n });\n }\n connectedCallback() {\n var _super$connectedCallb;\n (_super$connectedCallb = super.connectedCallback) === null || _super$connectedCallb === void 0 || _super$connectedCallb.call(this);\n this.addEventListener('mousedown', this, {});\n }\n disconnectedCallback() {\n var _super$disconnectedCa;\n this.removeEventListener('mousedown', this, {});\n (_super$disconnectedCa = super.disconnectedCallback) === null || _super$disconnectedCa === void 0 || _super$disconnectedCa.call(this);\n }\n handleEvent(event) {\n var _super$handleEvent;\n (_super$handleEvent = super.handleEvent) === null || _super$handleEvent === void 0 || _super$handleEvent.call(this, event);\n switch (event.type) {\n case 'mousedown':\n return _classPrivateMethodGet$4(this, _handleMouseDown, _handleMouseDown2).call(this, event);\n case 'mousemove':\n return _classPrivateMethodGet$4(this, _handleMouseMove, _handleMouseMove2).call(this, event);\n case 'mouseup':\n return _classPrivateMethodGet$4(this, _handleMouseUp, _handleMouseUp2).call(this, event);\n }\n }\n\n /**\n * Uses native scrollTo to scroll to a given position.\n *\n * @param left Position to scroll to (scroll-left)\n * @param {boolean} smooth Smooth scrolling or not\n */\n scrollToPos(left) {\n var _classPrivateFieldGet2;\n var smooth = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n _classPrivateFieldSet(this, _autoScrolling, _classPrivateFieldGet(this, _autoScrolling) + 1);\n var elm = this.scrollContainer;\n if (!elm) {\n return;\n }\n\n // Create a new pending promise, if there is none\n if (((_classPrivateFieldGet2 = _classPrivateFieldGet(this, _scrollingFinished)) === null || _classPrivateFieldGet2 === void 0 ? void 0 : _classPrivateFieldGet2.state) !== 'pending') {\n _classPrivateFieldSet(this, _scrollingFinished, new PromiseWrapper());\n }\n elm.scrollTo({\n left,\n behavior: smooth ? 'smooth' : 'auto'\n });\n var onScrollEnd = () => {\n _classPrivateFieldSet(this, _autoScrolling, _classPrivateFieldGet(this, _autoScrolling) - 1);\n if (_classPrivateFieldGet(this, _autoScrolling) === 0) {\n // Scrolling operations are done.\n // Notify listeners are done\n _classPrivateFieldGet(this, _scrollingFinished).resolve();\n }\n };\n if (!('onscrollend' in elm)) {\n // TODO: Remove once all relevant versions of Safari supports scrollend\n setTimeout(onScrollEnd, smooth ? 300 : 50);\n } else {\n elm.addEventListener('scrollend', onScrollEnd, {\n once: true\n });\n }\n }\n get isAutoScrolling() {\n return _classPrivateFieldGet(this, _autoScrolling) > 0;\n }\n get scrollContainer() {\n return this.querySelector('[data-scroll-container]');\n }\n\n /**\n * Returns a rectangle representing the optimal viewing region of the scroll container:\n * https://www.w3.org/TR/css-scroll-snap-1/#optimal-viewing-region\n *\n * The optimal viewing region is the area of the scroll container minus scroll paddings.\n */\n get optimalViewingRect() {\n var scrollContainer = this.scrollContainer;\n if (!scrollContainer) {\n return undefined;\n }\n var computedStyle = getComputedStyle(scrollContainer);\n var paddingLeft = lengthInPx(computedStyle.scrollPaddingLeft);\n var paddingRight = lengthInPx(computedStyle.scrollPaddingRight);\n var width = scrollContainer.offsetWidth || 0;\n var height = scrollContainer.offsetHeight || 0;\n return {\n top: 0,\n left: paddingLeft,\n bottom: height,\n right: width - paddingRight,\n width: width - paddingLeft - paddingRight,\n height\n };\n }\n get scrollingFinished() {\n var _classPrivateFieldGet3;\n return (_classPrivateFieldGet3 = _classPrivateFieldGet(this, _scrollingFinished)) === null || _classPrivateFieldGet3 === void 0 ? void 0 : _classPrivateFieldGet3.promise;\n }\n };\n function _handleMouseDown2(event) {\n if (!event.target.closest('[data-scroll-container]')) {\n return;\n }\n if (event.target.closest('[data-drag=\"false\"]')) {\n return;\n }\n if (event.button !== 0) {\n return;\n }\n event.preventDefault();\n _classPrivateFieldSet(this, _dragging, true);\n var scrollContainer = this.scrollContainer;\n _classPrivateFieldGet(this, _momentum).pageX = event.pageX;\n _classPrivateFieldGet(this, _momentum).prevTime = Date.now();\n _classPrivateFieldGet(this, _momentum).totalDiffX = 0;\n scrollContainer.style.cursor = '-webkit-grabbing';\n scrollContainer.style.cursor = 'grabbing';\n scrollContainer.style.scrollSnapType = 'none';\n\n /* Events are connected to window to handle user dragging outside component */\n window.addEventListener('mousemove', this);\n window.addEventListener('mouseup', this);\n }\n function _handleMouseMove2(event) {\n var scrollContainer = this.scrollContainer;\n var diffX = _classPrivateFieldGet(this, _momentum).pageX - event.pageX;\n var time = Date.now();\n var diffTime = time - _classPrivateFieldGet(this, _momentum).prevTime;\n _classPrivateFieldGet(this, _momentum).totalDiffX += diffX;\n _classPrivateFieldGet(this, _momentum).pageX = event.pageX;\n _classPrivateFieldGet(this, _momentum).prevTime = time;\n _classPrivateFieldGet(this, _momentum).velX = diffX / diffTime;\n scrollContainer.scrollLeft += diffX;\n\n // Prevent link clicks if scroll container has been click drag/scrolled\n if (Math.abs(_classPrivateFieldGet(this, _momentum).totalDiffX) > MOVE_SIGNIFICANT) {\n scrollContainer.style.pointerEvents = 'none';\n }\n }\n function _handleMouseUp2(_x) {\n return _handleMouseUp3.apply(this, arguments);\n }\n function _handleMouseUp3() {\n _handleMouseUp3 = _asyncToGenerator(function* (event) {\n var _this$dragCompleteCal;\n var scrollContainer = this.scrollContainer;\n scrollContainer.style.cursor = 'pointer';\n _classPrivateFieldSet(this, _dragging, false);\n window.removeEventListener('mousemove', this);\n window.removeEventListener('mouseup', this);\n scrollContainer.style.pointerEvents = '';\n yield (_this$dragCompleteCal = this.dragCompleteCallback) === null || _this$dragCompleteCal === void 0 ? void 0 : _this$dragCompleteCal.call(this, {\n significant: Math.abs(_classPrivateFieldGet(this, _momentum).totalDiffX) > MOVE_SIGNIFICANT && Math.abs(_classPrivateFieldGet(this, _momentum).velX) > VELOCITY_SIGNIFICANT,\n direction: _classPrivateFieldGet(this, _momentum).velX > 0 ? 'right' : 'left'\n });\n if (!_classPrivateFieldGet(this, _dragging)) {\n scrollContainer.style.scrollSnapType = 'x mandatory';\n }\n });\n return _handleMouseUp3.apply(this, arguments);\n }\n}\n\nfunction _classPrivateMethodInitSpec$3(obj, privateSet) { _checkPrivateRedeclaration$4(obj, privateSet); privateSet.add(obj); }\nfunction _classPrivateFieldInitSpec$3(obj, privateMap, value) { _checkPrivateRedeclaration$4(obj, privateMap); privateMap.set(obj, value); }\nfunction _checkPrivateRedeclaration$4(obj, privateCollection) { if (privateCollection.has(obj)) { throw new TypeError(\"Cannot initialize the same private elements twice on an object\"); } }\nfunction _classPrivateMethodGet$3(receiver, privateSet, fn) { if (!privateSet.has(receiver)) { throw new TypeError(\"attempted to get private field on non-instance\"); } return fn; }\nvar directionInfo = {\n left: {\n increment: -1\n },\n right: {\n increment: 1\n }\n};\nvar NavigationTypes = {\n normal: 'normal',\n skipVisible: 'skip-visible'\n};\nvar clamp$1 = (num, min, max) => Math.min(Math.max(num, min), max);\n\n/**\n * Calculates snap positions of children of a scroll container.\n * The container must be marked with `[data-scroll-container]`.\n *\n * Calculates index of closest snap position, and supports scrolling to next\n * scroll position in a given direction.\n *\n * Scrolls to next scroll position when click drag is complete.\n *\n * @template {new (...args: any[]) => SideScrollingMixinDef} BaseClass\n * @param {BaseClass} Base\n * @mixin\n */\nfunction SnapPositionsMixin(Base) {\n var _snapPositions, _snapIdx, _observer, _sizeObserver, _disconnectController, _getNextScrollPos, _updateSnapIdx;\n return _snapPositions = /*#__PURE__*/new WeakMap(), _snapIdx = /*#__PURE__*/new WeakMap(), _observer = /*#__PURE__*/new WeakMap(), _sizeObserver = /*#__PURE__*/new WeakMap(), _disconnectController = /*#__PURE__*/new WeakMap(), _getNextScrollPos = /*#__PURE__*/new WeakSet(), _updateSnapIdx = /*#__PURE__*/new WeakSet(), class SnapPositionsMixinDef extends Base {\n constructor() {\n super(...arguments);\n _classPrivateMethodInitSpec$3(this, _updateSnapIdx);\n _classPrivateMethodInitSpec$3(this, _getNextScrollPos);\n _classPrivateFieldInitSpec$3(this, _snapPositions, {\n writable: true,\n value: []\n });\n _classPrivateFieldInitSpec$3(this, _snapIdx, {\n writable: true,\n value: 0\n });\n _classPrivateFieldInitSpec$3(this, _observer, {\n writable: true,\n value: void 0\n });\n _classPrivateFieldInitSpec$3(this, _sizeObserver, {\n writable: true,\n value: void 0\n });\n _classPrivateFieldInitSpec$3(this, _disconnectController, {\n writable: true,\n value: void 0\n });\n }\n connectedCallback() {\n var _super$connectedCallb, _this$scrollContainer;\n (_super$connectedCallb = super.connectedCallback) === null || _super$connectedCallb === void 0 || _super$connectedCallb.call(this);\n _classPrivateFieldSet(this, _disconnectController, new AbortController());\n var eventOptions = {\n signal: _classPrivateFieldGet(this, _disconnectController).signal\n };\n this.updateSnapPositions();\n // eslint-disable-next-line compat/compat\n _classPrivateFieldSet(this, _sizeObserver, new ResizeObserver(() => {\n _classPrivateMethodGet$3(this, _updateSnapIdx, _updateSnapIdx2).call(this);\n this.updateSnapPositions();\n }));\n _classPrivateFieldGet(this, _sizeObserver).observe(this);\n (_this$scrollContainer = this.scrollContainer) === null || _this$scrollContainer === void 0 || _this$scrollContainer.addEventListener('scroll', this, eventOptions);\n _classPrivateFieldSet(this, _observer, new MutationObserver((mutationList, observer) => {\n if (mutationList.some(mutation => mutation.type === 'childList')) {\n var _this$scrollContainer2;\n // Remove scroll-listener from removed nodes\n for (var mutationRecord of mutationList) {\n for (var removedNode of mutationRecord.removedNodes) {\n var _removedNode$removeEv;\n removedNode === null || removedNode === void 0 || (_removedNode$removeEv = removedNode.removeEventListener) === null || _removedNode$removeEv === void 0 || _removedNode$removeEv.call(removedNode, 'scroll', this);\n }\n }\n\n // Set up scroll-listener in case the scroll container has been changed\n (_this$scrollContainer2 = this.scrollContainer) === null || _this$scrollContainer2 === void 0 || _this$scrollContainer2.addEventListener('scroll', this, eventOptions);\n this.updateSnapPositions();\n }\n }));\n _classPrivateFieldGet(this, _observer).observe(this, {\n childList: true,\n subtree: true\n });\n }\n disconnectedCallback() {\n var _classPrivateFieldGet2, _classPrivateFieldGet3, _classPrivateFieldGet4, _super$disconnectedCa;\n // Disconnect event listeners\n (_classPrivateFieldGet2 = _classPrivateFieldGet(this, _disconnectController)) === null || _classPrivateFieldGet2 === void 0 || _classPrivateFieldGet2.abort();\n (_classPrivateFieldGet3 = _classPrivateFieldGet(this, _observer)) === null || _classPrivateFieldGet3 === void 0 || _classPrivateFieldGet3.disconnect();\n (_classPrivateFieldGet4 = _classPrivateFieldGet(this, _sizeObserver)) === null || _classPrivateFieldGet4 === void 0 || _classPrivateFieldGet4.disconnect();\n (_super$disconnectedCa = super.disconnectedCallback) === null || _super$disconnectedCa === void 0 || _super$disconnectedCa.call(this);\n }\n handleEvent(event) {\n var _super$handleEvent;\n (_super$handleEvent = super.handleEvent) === null || _super$handleEvent === void 0 || _super$handleEvent.call(this, event);\n if (event.type === 'scroll') {\n _classPrivateMethodGet$3(this, _updateSnapIdx, _updateSnapIdx2).call(this);\n }\n }\n\n /* Handle drag complete and snap to next snap position */\n dragCompleteCallback(_ref) {\n var _this = this;\n return _asyncToGenerator(function* () {\n var {\n significant,\n direction\n } = _ref;\n /*\n * Scroll to the next card on the left/right if speed is large enough\n * and it has not yet snapped to the next card already:\n * (Simulating momentum)\n * */\n var currentScrollLeft = _this.scrollContainer.scrollLeft;\n var activeScrollPos = _this.getSnapPosition(_classPrivateFieldGet(_this, _snapIdx));\n var leftOfSnapPoint = activeScrollPos.scrollLeft < currentScrollLeft;\n var rightOfSnapPoint = activeScrollPos.scrollLeft > currentScrollLeft;\n var nextScrollPos = activeScrollPos;\n if (significant) {\n if (direction === 'right' && leftOfSnapPoint) {\n nextScrollPos = _classPrivateMethodGet$3(_this, _getNextScrollPos, _getNextScrollPos2).call(_this, activeScrollPos, direction, NavigationTypes.normal);\n } else if (direction === 'left' && rightOfSnapPoint) {\n nextScrollPos = _classPrivateMethodGet$3(_this, _getNextScrollPos, _getNextScrollPos2).call(_this, activeScrollPos, direction, NavigationTypes.normal);\n }\n }\n\n // Always scroll to next to prevent Safari from scrolling to start\n // When resetting scrollSnapType to 'x mandatory' safari scrolls back to start.\n _this.scrollToPos(nextScrollPos.scrollLeft);\n yield _this.scrollingFinished;\n })();\n }\n updateSnapPositions() {\n var _this$items, _this$_positionsUpdat;\n var optRect = this.optimalViewingRect;\n if (!optRect) {\n return;\n }\n _classPrivateFieldSet(this, _snapPositions, (_this$items = this.items) === null || _this$items === void 0 ? void 0 : _this$items.map((elm, idx) => {\n var {\n scrollSnapAlign\n } = getComputedStyle(elm);\n var align = (scrollSnapAlign !== null && scrollSnapAlign !== void 0 ? scrollSnapAlign : '').split(' ')[0];\n var targetLeft;\n if (align === 'start') {\n targetLeft = Math.round(optRect.left);\n } else if (align === 'end') {\n targetLeft = Math.round(optRect.right - elm.offsetWidth);\n } else {\n targetLeft = Math.round(optRect.left + optRect.width / 2 - elm.offsetWidth / 2);\n }\n return {\n idx,\n targetLeft,\n targetRight: targetLeft + elm.offsetWidth,\n scrollLeft: elm.offsetLeft - targetLeft\n };\n }));\n\n // Notify subclasses that snap positions have changed\n (_this$_positionsUpdat = this._positionsUpdatedCallback) === null || _this$_positionsUpdat === void 0 || _this$_positionsUpdat.call(this);\n }\n\n /**\n * Does a quick update to scrollLeft assuming the snap target has not changed.\n * This can be run to quickly update scroll positions after padding has been changed.\n */\n _quickUpdateSnapPositions() {\n var items = this.items;\n _classPrivateFieldGet(this, _snapPositions).forEach(pos => {\n var elm = items[pos.idx];\n pos.scrollLeft = elm.offsetLeft - pos.targetLeft;\n });\n }\n getSnapPosition(idx) {\n return _classPrivateFieldGet(this, _snapPositions)[idx];\n }\n findClosestSnapIdx() {\n var scrollContainer = this.scrollContainer;\n if (!scrollContainer) {\n return;\n }\n var {\n scrollLeft\n } = scrollContainer;\n var distances = _classPrivateFieldGet(this, _snapPositions).map(pos => Math.abs(scrollLeft - pos.scrollLeft));\n var min = Math.min(...distances);\n var minIdx = distances.indexOf(min);\n if (minIdx > -1) {\n return minIdx;\n }\n }\n\n /**\n * Scrolls to next snap point in a given direction.\n *\n * This will hopefully be replaced by native functionality in the future:\n * https://github.com/argyleink/ScrollSnapExplainers/tree/main/js-scrollToOptions_Snap-Additions\n *\n * @param direction {'left' | 'right'} direction to scroll\n * @param navigation {'normal' | 'skip-visible'} navigation strategy\n */\n scrollToNext(direction, navigation) {\n var activeScrollPos = this.getSnapPosition(_classPrivateFieldGet(this, _snapIdx));\n var nextScrollPos = _classPrivateMethodGet$3(this, _getNextScrollPos, _getNextScrollPos2).call(this, activeScrollPos, direction);\n var scrollContainer = this.scrollContainer;\n var maxScrollLeft = scrollContainer.scrollWidth - scrollContainer.offsetWidth;\n this.scrollToPos(clamp$1(nextScrollPos.scrollLeft, 0, maxScrollLeft));\n }\n\n /* Get the index of the element with the left-most (start) snap position */\n getSnapIndexStart() {\n var sorted = [..._classPrivateFieldGet(this, _snapPositions)].sort((a, b) => a.scrollLeft - b.scrollLeft);\n return sorted[0].idx;\n }\n\n /* Get the index of the element with the right-most (end) snap position */\n getSnapIndexEnd() {\n var sorted = [..._classPrivateFieldGet(this, _snapPositions)].sort((a, b) => a.scrollLeft - b.scrollLeft);\n return sorted[sorted.length - 1].idx;\n }\n get items() {\n var _this$scrollContainer3, _this$scrollContainer4;\n return Array.from((_this$scrollContainer3 = (_this$scrollContainer4 = this.scrollContainer) === null || _this$scrollContainer4 === void 0 ? void 0 : _this$scrollContainer4.children) !== null && _this$scrollContainer3 !== void 0 ? _this$scrollContainer3 : []);\n }\n get navigation() {\n var _this$getAttribute;\n return (_this$getAttribute = this.getAttribute('navigation')) !== null && _this$getAttribute !== void 0 ? _this$getAttribute : NavigationTypes.normal;\n }\n set navigation(val) {\n this.setAttribute('navigation', val);\n }\n };\n function _getNextScrollPos2(scrollPos, direction) {\n var _directionInfo$direct, _directionInfo$direct2;\n var navigation = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : this.navigation;\n var sortedPositions = [..._classPrivateFieldGet(this, _snapPositions)].sort((a, b) => a.scrollLeft - b.scrollLeft);\n var idx = sortedPositions.indexOf(scrollPos);\n var increment = (_directionInfo$direct = (_directionInfo$direct2 = directionInfo[direction]) === null || _directionInfo$direct2 === void 0 ? void 0 : _directionInfo$direct2.increment) !== null && _directionInfo$direct !== void 0 ? _directionInfo$direct : 0;\n var nextIdx;\n if (navigation === NavigationTypes.normal) {\n nextIdx = clamp$1(idx + increment, 0, sortedPositions.length - 1);\n } else if (navigation === NavigationTypes.skipVisible) {\n // Greedily search for the next snap position that skips items that were already visible,\n // but ensures that the first item that was (partially) hidden will be visible.\n var scrollContainer = this.scrollContainer;\n var firstHiddenItem; // The first item that was partially or fully hidden\n for (var testIdx = idx; testIdx >= 0 && testIdx <= sortedPositions.length - 1; testIdx += increment) {\n if (!firstHiddenItem) {\n // As long as we have not found a previously hidden element we continue searching.\n nextIdx = testIdx;\n var nextItem = this.items[sortedPositions[nextIdx].idx];\n if (isHidden(scrollContainer.scrollLeft, scrollContainer.offsetWidth, nextItem)) {\n firstHiddenItem = nextItem;\n }\n } else {\n // We have found the first item that was partially or fully hidden.\n // We could stop the search now and snap to this item, but there might be\n // another item we can snap to while still keeping this item visible.\n var nextSnapPosition = sortedPositions[testIdx];\n\n // When calculating the next scrollLeft position we must take into account that the snap position\n // might not be reachable as it is limited by the scroll container.\n var maxScrollLeft = scrollContainer.scrollWidth - scrollContainer.offsetWidth;\n var nextScrollLeft = clamp$1(nextSnapPosition.scrollLeft, 0, maxScrollLeft);\n if (!isHidden(nextScrollLeft, scrollContainer.offsetWidth, firstHiddenItem)) {\n // The first item that was previously hidden is still visible at this snap point.\n // We can use it as the next snap position.\n nextIdx = testIdx;\n }\n }\n }\n }\n return sortedPositions[nextIdx];\n }\n function _updateSnapIdx2() {\n var nextIdx = this.findClosestSnapIdx();\n if (typeof nextIdx === 'number' && nextIdx !== _classPrivateFieldGet(this, _snapIdx)) {\n var _this$snapIdxChangedC;\n _classPrivateFieldSet(this, _snapIdx, nextIdx);\n (_this$snapIdxChangedC = this.snapIdxChangedCallback) === null || _this$snapIdxChangedC === void 0 || _this$snapIdxChangedC.call(this, nextIdx);\n }\n }\n}\n\n/* Check if item is partially hidden */\nfunction isHidden(scrollLeft, offsetWidth, item) {\n return item.offsetLeft < scrollLeft || item.offsetLeft + item.offsetWidth > scrollLeft + offsetWidth;\n}\n\nfunction _classPrivateMethodInitSpec$2(obj, privateSet) { _checkPrivateRedeclaration$3(obj, privateSet); privateSet.add(obj); }\nfunction _classPrivateFieldInitSpec$2(obj, privateMap, value) { _checkPrivateRedeclaration$3(obj, privateMap); privateMap.set(obj, value); }\nfunction _checkPrivateRedeclaration$3(obj, privateCollection) { if (privateCollection.has(obj)) { throw new TypeError(\"Cannot initialize the same private elements twice on an object\"); } }\nfunction _classPrivateMethodGet$2(receiver, privateSet, fn) { if (!privateSet.has(receiver)) { throw new TypeError(\"attempted to get private field on non-instance\"); } return fn; }\nvar ButtonModes = {\n visibility: 'visibility',\n snapPoints: 'snap-points'\n};\nvar directions = ['left', 'right'];\n\n/**\n * Hides and shows button based on visibility or snap-index of scroll container children\n * Handles clicks and scrolls in the given direction.\n * Emits 'dh-basis-sveip-button-clicked' event with direction\n *\n * Buttons have to be marked with [value=\"left\"] and [value=\"right\"]\n *\n * @template BaseClass {SnapPositionsMixin}\n * @param {BaseClass} Base\n */\nfunction ButtonManagerMixin(Base) {\n var _intersectionObserver, _mutationObserver, _createIntersectionObserver, _disconnectIntersectionObserver, _handleDOMMutation, _handleIntersectionChange, _updateButtonsBasedOnSnapPoints, _handleButtonClick;\n return _intersectionObserver = /*#__PURE__*/new WeakMap(), _mutationObserver = /*#__PURE__*/new WeakMap(), _createIntersectionObserver = /*#__PURE__*/new WeakSet(), _disconnectIntersectionObserver = /*#__PURE__*/new WeakSet(), _handleDOMMutation = /*#__PURE__*/new WeakSet(), _handleIntersectionChange = /*#__PURE__*/new WeakMap(), _updateButtonsBasedOnSnapPoints = /*#__PURE__*/new WeakSet(), _handleButtonClick = /*#__PURE__*/new WeakMap(), class ButtonManagerMixinDef extends Base {\n constructor() {\n super(...arguments);\n _classPrivateMethodInitSpec$2(this, _updateButtonsBasedOnSnapPoints);\n _classPrivateMethodInitSpec$2(this, _handleDOMMutation);\n _classPrivateMethodInitSpec$2(this, _disconnectIntersectionObserver);\n _classPrivateMethodInitSpec$2(this, _createIntersectionObserver);\n _classPrivateFieldInitSpec$2(this, _intersectionObserver, {\n writable: true,\n value: void 0\n });\n _classPrivateFieldInitSpec$2(this, _mutationObserver, {\n writable: true,\n value: void 0\n });\n _classPrivateFieldInitSpec$2(this, _handleIntersectionChange, {\n writable: true,\n value: entries => {\n var scrollContainer = this.scrollContainer;\n var scrollLeft = scrollContainer.scrollLeft;\n var scrollRight = scrollContainer.scrollWidth - scrollContainer.offsetWidth - scrollLeft;\n var sortedByOffset = [...this.items].sort((a, b) => a.offsetLeft - b.offsetLeft);\n var leftmostItem = sortedByOffset[0];\n var rightmostItem = sortedByOffset[sortedByOffset.length - 1];\n for (var entry of entries) {\n if (entry.target === leftmostItem) {\n var _this$leftButton;\n (_this$leftButton = this.leftButton) === null || _this$leftButton === void 0 || _this$leftButton.toggleAttribute('hidden', entry.intersectionRatio > 0.93 || scrollLeft <= 0);\n }\n if (entry.target === rightmostItem) {\n var _this$rightButton;\n (_this$rightButton = this.rightButton) === null || _this$rightButton === void 0 || _this$rightButton.toggleAttribute('hidden', entry.intersectionRatio > 0.93 || scrollRight <= 0);\n }\n }\n }\n });\n _classPrivateFieldInitSpec$2(this, _handleButtonClick, {\n writable: true,\n value: e => {\n var btn = e.target.closest('button');\n var direction = btn === null || btn === void 0 ? void 0 : btn.getAttribute('value');\n if (!directions.includes(direction)) {\n return;\n }\n e.preventDefault();\n this.scrollToNext(direction);\n this.dispatchEvent(new CustomEvent('dh-basis-sveip-button-clicked', {\n bubbles: true,\n cancelable: true,\n detail: {\n direction\n }\n }));\n }\n });\n }\n connectedCallback() {\n var _super$connectedCallb;\n (_super$connectedCallb = super.connectedCallback) === null || _super$connectedCallb === void 0 || _super$connectedCallb.call(this);\n if (this.buttonMode === ButtonModes.visibility) {\n _classPrivateMethodGet$2(this, _createIntersectionObserver, _createIntersectionObserver2).call(this);\n } else if (this.buttonMode === ButtonModes.snapPoints) {\n _classPrivateMethodGet$2(this, _updateButtonsBasedOnSnapPoints, _updateButtonsBasedOnSnapPoints2).call(this, this.getSnapIndexStart());\n }\n this.addEventListener('click', _classPrivateFieldGet(this, _handleButtonClick));\n }\n disconnectedCallback() {\n var _super$disconnectedCa;\n this.removeEventListener('click', _classPrivateFieldGet(this, _handleButtonClick));\n _classPrivateMethodGet$2(this, _disconnectIntersectionObserver, _disconnectIntersectionObserver2).call(this);\n (_super$disconnectedCa = super.disconnectedCallback) === null || _super$disconnectedCa === void 0 || _super$disconnectedCa.call(this);\n }\n snapIdxChangedCallback(nextIdx) {\n var _super$snapIdxChanged;\n (_super$snapIdxChanged = super.snapIdxChangedCallback) === null || _super$snapIdxChanged === void 0 || _super$snapIdxChanged.call(this, nextIdx);\n if (this.buttonMode === ButtonModes.snapPoints) {\n _classPrivateMethodGet$2(this, _updateButtonsBasedOnSnapPoints, _updateButtonsBasedOnSnapPoints2).call(this, nextIdx);\n }\n }\n get leftButton() {\n return this.querySelector('button[value=\"left\"]');\n }\n get rightButton() {\n return this.querySelector('button[value=\"right\"]');\n }\n get buttonMode() {\n var _this$getAttribute;\n return (_this$getAttribute = this.getAttribute('button-mode')) !== null && _this$getAttribute !== void 0 ? _this$getAttribute : ButtonModes.visibility;\n }\n set buttonMode(val) {\n this.setAttribute('button-mode', val);\n }\n };\n function _createIntersectionObserver2() {\n // eslint-disable-next-line compat/compat\n _classPrivateFieldSet(this, _intersectionObserver, new IntersectionObserver(_classPrivateFieldGet(this, _handleIntersectionChange), {\n threshold: [0.93, 1],\n root: this.scrollContainer\n }));\n for (var item of this.items) {\n _classPrivateFieldGet(this, _intersectionObserver).observe(item);\n }\n\n // Set up mutation observer to handle changes to children\n _classPrivateFieldSet(this, _mutationObserver, new MutationObserver((mutationList, observer) => {\n if (mutationList.some(mutation => mutation.type === 'childList')) {\n _classPrivateMethodGet$2(this, _handleDOMMutation, _handleDOMMutation2).call(this);\n }\n }));\n _classPrivateFieldGet(this, _mutationObserver).observe(this, {\n childList: true,\n subtree: true\n });\n }\n function _disconnectIntersectionObserver2() {\n if (_classPrivateFieldGet(this, _intersectionObserver)) {\n _classPrivateFieldGet(this, _intersectionObserver).disconnect();\n }\n if (_classPrivateFieldGet(this, _mutationObserver)) {\n _classPrivateFieldGet(this, _mutationObserver).disconnect();\n }\n }\n function _handleDOMMutation2() {\n if (_classPrivateFieldGet(this, _intersectionObserver)) {\n // If the DOM has been updated, we need to update the list of items we observe\n\n // Stop observing previous items\n _classPrivateFieldGet(this, _intersectionObserver).disconnect();\n\n // Start observing current items\n for (var item of this.items) {\n _classPrivateFieldGet(this, _intersectionObserver).observe(item);\n }\n }\n }\n function _updateButtonsBasedOnSnapPoints2(index) {\n var _this$leftButton2, _this$rightButton2;\n (_this$leftButton2 = this.leftButton) === null || _this$leftButton2 === void 0 || _this$leftButton2.toggleAttribute('hidden', index === this.getSnapIndexStart());\n (_this$rightButton2 = this.rightButton) === null || _this$rightButton2 === void 0 || _this$rightButton2.toggleAttribute('hidden', index === this.getSnapIndexEnd());\n }\n}\n\nfunction _classPrivateMethodInitSpec$1(obj, privateSet) { _checkPrivateRedeclaration$2(obj, privateSet); privateSet.add(obj); }\nfunction _classPrivateFieldInitSpec$1(obj, privateMap, value) { _checkPrivateRedeclaration$2(obj, privateMap); privateMap.set(obj, value); }\nfunction _checkPrivateRedeclaration$2(obj, privateCollection) { if (privateCollection.has(obj)) { throw new TypeError(\"Cannot initialize the same private elements twice on an object\"); } }\nfunction _classPrivateMethodGet$1(receiver, privateSet, fn) { if (!privateSet.has(receiver)) { throw new TypeError(\"attempted to get private field on non-instance\"); } return fn; }\nfunction wait(time) {\n return new Promise(resolve => {\n setTimeout(resolve, time);\n });\n}\n\n/**\n *\n * @template BaseClass {SnapPositionsMixin}\n * @param {BaseClass} Base\n */\nfunction StartIndexMixin(Base) {\n var _initializing, _autoscrollToStartIndex, _calculateStartIndex, _calculateAutoStartIndex;\n return _initializing = /*#__PURE__*/new WeakMap(), _autoscrollToStartIndex = /*#__PURE__*/new WeakSet(), _calculateStartIndex = /*#__PURE__*/new WeakSet(), _calculateAutoStartIndex = /*#__PURE__*/new WeakSet(), class StartIndexMixinDef extends Base {\n constructor() {\n super(...arguments);\n _classPrivateMethodInitSpec$1(this, _calculateAutoStartIndex);\n _classPrivateMethodInitSpec$1(this, _calculateStartIndex);\n _classPrivateMethodInitSpec$1(this, _autoscrollToStartIndex);\n _classPrivateFieldInitSpec$1(this, _initializing, {\n writable: true,\n value: true\n });\n }\n connectedCallback() {\n var _super$connectedCallb;\n (_super$connectedCallb = super.connectedCallback) === null || _super$connectedCallb === void 0 || _super$connectedCallb.call(this);\n }\n disconnectedCallback() {\n var _super$disconnectedCa;\n (_super$disconnectedCa = super.disconnectedCallback) === null || _super$disconnectedCa === void 0 || _super$disconnectedCa.call(this);\n }\n _positionsUpdatedCallback() {\n var _super$_positionsUpda;\n (_super$_positionsUpda = super._positionsUpdatedCallback) === null || _super$_positionsUpda === void 0 || _super$_positionsUpda.call(this);\n if (this.offsetWidth === 0) {\n _classPrivateFieldSet(this, _initializing, true);\n } else if (this.offsetWidth > 0 && _classPrivateFieldGet(this, _initializing)) {\n _classPrivateMethodGet$1(this, _autoscrollToStartIndex, _autoscrollToStartIndex2).call(this).then(() => {\n _classPrivateFieldSet(this, _initializing, false);\n });\n }\n }\n set startIndex(val) {\n this.setAttribute('start-index', val);\n }\n get startIndex() {\n var _this$getAttribute;\n return (_this$getAttribute = this.getAttribute('start-index')) !== null && _this$getAttribute !== void 0 ? _this$getAttribute : 'auto';\n }\n get _initializing() {\n return _classPrivateFieldGet(this, _initializing);\n }\n };\n function _autoscrollToStartIndex2() {\n return _autoscrollToStartIndex3.apply(this, arguments);\n }\n function _autoscrollToStartIndex3() {\n _autoscrollToStartIndex3 = _asyncToGenerator(function* () {\n var startIndex = _classPrivateMethodGet$1(this, _calculateStartIndex, _calculateStartIndex2).call(this);\n if (typeof startIndex === 'number') {\n this.scrollToPos(this.getSnapPosition(startIndex).scrollLeft, false);\n\n /* Retry after 200ms. Safari 16 sometimes ignores elm.scrollTo */\n yield wait(200);\n this.scrollToPos(this.getSnapPosition(startIndex).scrollLeft, false);\n yield this.scrollingFinished;\n }\n });\n return _autoscrollToStartIndex3.apply(this, arguments);\n }\n function _calculateStartIndex2() {\n if (this.startIndex === 'none') {\n return null;\n } else if (this.startIndex === 'auto') {\n return _classPrivateMethodGet$1(this, _calculateAutoStartIndex, _calculateAutoStartIndex2).call(this);\n } else {\n return parseInt(this.startIndex);\n }\n }\n function _calculateAutoStartIndex2() {\n var optimalViewingRect = this.optimalViewingRect;\n if (!optimalViewingRect) {\n return;\n }\n\n // Calculate width of left half of container, including scroll padding\n var containerLeftHalf = optimalViewingRect.width / 2 + optimalViewingRect.left;\n var items = this.items;\n if (items.length >= 3 && containerLeftHalf > items[0].offsetWidth + items[1].offsetWidth / 2) {\n // Container is wide enough to show first item, when second item is selected\n return 1;\n } else {\n return 0;\n }\n }\n}\n\n/**\n * Adds a style element to head for a given node name.\n * TODO: replace with local style element with @scope once Firefox supports @scope\n *\n * @param {string} nodeName Node name used to prevent duplicate style rules\n * @param {string} css Style rules\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}\n\nfunction _classPrivateMethodInitSpec(obj, privateSet) { _checkPrivateRedeclaration$1(obj, privateSet); privateSet.add(obj); }\nfunction _checkPrivateRedeclaration$1(obj, privateCollection) { if (privateCollection.has(obj)) { throw new TypeError(\"Cannot initialize the same private elements twice on an object\"); } }\nfunction _classPrivateMethodGet(receiver, privateSet, fn) { if (!privateSet.has(receiver)) { throw new TypeError(\"attempted to get private field on non-instance\"); } return fn; }\n/**\n *\n * Calculates and sets padding on the scroll container, to ensure every snap position can be reached.\n *\n * (We have added an issue to get a standardised solution:\n * https://github.com/w3c/csswg-drafts/issues/7885#issuecomment-1368194918.\n * Suggested name for property is `scroll-contain: snap`)\n *\n * I.e. if items have snap-align: center, then this mixin will add enough padding so that the first and the\n * last item can be snapped to the center of the scroll container.\n *\n * As Safari still doesn't treat padding on the scroll container correctly when calculating intersections\n * in IntersectionObserver, we use ::before and ::after pseudo elements in stead of padding.\n * As they generate extra gaps, special care must be taken when calculating the width of the pseudo elements.\n * Negative margins are used to counter the extra gaps.\n * Once all browsers are compatible with the spec we can switch to regular padding.\n *\n * https://bugs.webkit.org/show_bug.cgi?id=263316\n * TODO: remove once the Safari issue is resolved\n *\n * @template BaseClass {SnapPositionsMixin}\n * @param {BaseClass} Base\n */\nfunction SidePaddingMixin(Base) {\n var _updateContainerPadding;\n return _updateContainerPadding = /*#__PURE__*/new WeakSet(), class SidePaddingMixinDef extends Base {\n constructor() {\n super(...arguments);\n _classPrivateMethodInitSpec(this, _updateContainerPadding);\n }\n connectedCallback() {\n var _super$connectedCallb;\n (_super$connectedCallb = super.connectedCallback) === null || _super$connectedCallb === void 0 || _super$connectedCallb.call(this);\n /*\n Only add left and right padding if `scroll-contain` equals `snap`.\n No extra padding should be added if `scroll-contain` is `normal`.\n */\n if (this.scrollContain !== 'snap') {\n return;\n }\n addStyle(\"\".concat(this.nodeName, \"-padding\"), \"\\n \\n \".concat(this.nodeName, \":not([scroll-contain=\\\"normal\\\"]) [data-scroll-container]::before {\\n content: '';\\n display: block;\\n flex: 0 0 auto;\\n height: 1px;\\n width: var(--_dh-basis-sveip-left-padding);\\n margin-right: calc(-1 * var(--_dh-basis-sveip-gap-fix, 0px));\\n }\\n \\n \").concat(this.nodeName, \":not([scroll-contain=\\\"normal\\\"]) [data-scroll-container]::after {\\n content: '';\\n display: block;\\n flex: 0 0 auto;\\n height: 1px;\\n width: var(--_dh-basis-sveip-right-padding);\\n margin-left: calc(-1 * var(--_dh-basis-sveip-gap-fix, 0px));\\n }\\n \"));\n _classPrivateMethodGet(this, _updateContainerPadding, _updateContainerPadding2).call(this);\n\n // Update snap positions again to account for the new padding\n this._quickUpdateSnapPositions();\n }\n disconnectedCallback() {\n var _super$disconnectedCa;\n (_super$disconnectedCa = super.disconnectedCallback) === null || _super$disconnectedCa === void 0 || _super$disconnectedCa.call(this);\n }\n _positionsUpdatedCallback() {\n if (this.scrollContain !== 'snap') {\n return;\n }\n _classPrivateMethodGet(this, _updateContainerPadding, _updateContainerPadding2).call(this);\n // Update snap positions again to account for the new padding\n this._quickUpdateSnapPositions();\n }\n /*\n Get `scroll-contain` attribute.\n Scroll-contain determines if the scrollable overflow area contains snap-positions or not.\n Supported modes are `normal` and `snap`.\n Defaults to `snap` if not set.\n */\n get scrollContain() {\n var _this$getAttribute;\n return (_this$getAttribute = this.getAttribute('scroll-contain')) !== null && _this$getAttribute !== void 0 ? _this$getAttribute : 'snap';\n }\n set scrollContain(val) {\n this.setAttribute('scroll-contain', val);\n }\n };\n function _updateContainerPadding2() {\n var scrollContainer = this.scrollContainer;\n if (!scrollContainer) {\n return;\n }\n var items = this.items;\n var containerWidth = scrollContainer.offsetWidth;\n var paddingLeft = this.getSnapPosition(0).targetLeft;\n var paddingRight = containerWidth - this.getSnapPosition(items.length - 1).targetRight;\n\n /*\n scrollContainer.style.setProperty('padding-left', `${paddingLeft}px`)\n scrollContainer.style.setProperty('padding-right', `${paddingRight}px`)\n */\n\n /*\n Set width on ::before and ::after element through custom properties.\n TODO: remove once Safari IntersectionObserver padding issue is solved.\n */\n var gap = getComputedStyle(this.scrollContainer).columnGap;\n var gapWidth = 0;\n if (gap.match(/^(\\d)+(\\.\\d+)?px$/)) {\n gapWidth = Math.round(parseFloat(gap));\n }\n this.style.setProperty('--_dh-basis-sveip-left-padding', \"\".concat(paddingLeft, \"px\"));\n this.style.setProperty('--_dh-basis-sveip-right-padding', \"\".concat(paddingRight, \"px\"));\n this.style.setProperty('--_dh-basis-sveip-gap-fix', \"\".concat(gapWidth, \"px\"));\n }\n}\n\nfunction _classPrivateFieldInitSpec(obj, privateMap, value) { _checkPrivateRedeclaration(obj, privateMap); privateMap.set(obj, value); }\nfunction _checkPrivateRedeclaration(obj, privateCollection) { if (privateCollection.has(obj)) { throw new TypeError(\"Cannot initialize the same private elements twice on an object\"); } }\nvar clamp = (num, min, max) => Math.min(Math.max(num, min), max);\n\n/**\n * Sveip is a component that lets the user swipe horizontally between elements in a scroll container.\n * Content is scrollable with mouse interaction on non-touch-devices.\n *\n * The component is based on standard CSS scroll snapping: https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Scroll_Snap\n * It snaps to scroll positions indicated by the `scroll-snap-align` css property of its child elements.\n * As a default every child has `scroll-snap-align: center`, but this can be overridden with css.\n *\n * The component tracks which element is snapped and marks it with a 'data-state=ACTIVE' attribute.\n * It also emits a 'dh-basis-sveip-active-changed' event when the active element has changed.\n *\n * The functionality is split into separate mixins:\n *\n * – SideScrollingMixin: Is responsible for the scroll container. Handles click-drag and scrolling.\n * – SnapPositionMixin: Calculates snap positions.\n * – ButtonManagerMixin: Manages button interaction and visibility.\n * – SidePaddingMixin: Manages scroll container padding to ensure each snap point is reachable.\n * – StartIndexMixin: Determines which item should be active at start.\n */\nvar _activeIndex = /*#__PURE__*/new WeakMap();\nvar _updateAttributes = /*#__PURE__*/new WeakMap();\nclass Sveip extends StartIndexMixin(SidePaddingMixin(ButtonManagerMixin(SnapPositionsMixin(SideScrollingMixin(HTMLElement))))) {\n constructor() {\n super(...arguments);\n _classPrivateFieldInitSpec(this, _activeIndex, {\n writable: true,\n value: 0\n });\n _classPrivateFieldInitSpec(this, _updateAttributes, {\n writable: true,\n value: () => {\n var indicators = this.indicators;\n if (indicators) {\n Array.from(this.indicators.children).forEach((indicator, idx) => indicator.toggleAttribute('data-indicator-active', idx === _classPrivateFieldGet(this, _activeIndex)));\n }\n this.items.forEach((child, idx) => {\n if (idx === _classPrivateFieldGet(this, _activeIndex)) {\n child.setAttribute('data-state', 'ACTIVE');\n } else {\n child.removeAttribute('data-state');\n }\n });\n }\n });\n }\n connectedCallback() {\n var _super$connectedCallb;\n addStyle(this.nodeName, \"\\n \".concat(this.nodeName, \" {\\n display: block;\\n position: relative;\\n }\\n \\n \").concat(this.nodeName, \" [data-scroll-container] {\\n -webkit-overflow-scrolling: touch;\\n -ms-overflow-style: -ms-autohiding-scrollbar;\\n scrollbar-width: none;\\n cursor: pointer;\\n display: flex;\\n overflow-x: scroll;\\n scroll-snap-type: x mandatory;\\n }\\n \\n \").concat(this.nodeName, \" [data-scroll-container] > * {\\n flex: 0 0 auto;\\n scroll-snap-align: center;\\n }\\n \\n \").concat(this.nodeName, \" [data-scroll-container]::-webkit-scrollbar {\\n -webkit-appearance: none;\\n display: none;\\n width: 0;\\n height: 0;\\n }\\n \\n \").concat(this.nodeName, \" [data-drag=\\\"false\\\"] {\\n cursor: auto;\\n }\\n \"));\n (_super$connectedCallb = super.connectedCallback) === null || _super$connectedCallb === void 0 || _super$connectedCallb.call(this);\n setTimeout(() => {\n _classPrivateFieldGet(this, _updateAttributes).call(this);\n\n // Update snap positions in case subclass has programmatically updated sizes\n this.updateSnapPositions();\n });\n }\n disconnectedCallback() {\n var _super$disconnectedCa;\n (_super$disconnectedCa = super.disconnectedCallback) === null || _super$disconnectedCa === void 0 || _super$disconnectedCa.call(this);\n }\n snapIdxChangedCallback(nextIdx) {\n var _super$snapIdxChanged;\n (_super$snapIdxChanged = super.snapIdxChangedCallback) === null || _super$snapIdxChanged === void 0 || _super$snapIdxChanged.call(this, nextIdx);\n if (typeof nextIdx !== 'number') {\n return;\n }\n _classPrivateFieldSet(this, _activeIndex, nextIdx);\n _classPrivateFieldGet(this, _updateAttributes).call(this);\n if (!this._initializing) {\n this.dispatchEvent(new CustomEvent('dh-basis-sveip-active-changed', {\n bubbles: true,\n cancelable: true,\n detail: {\n nextIndex: nextIdx\n }\n }));\n }\n }\n scrollToIndex(idx) {\n var clampedIndex = clamp(idx, 0, this.items.length - 1);\n this.scrollToPos(this.getSnapPosition(clampedIndex).scrollLeft);\n }\n get indicators() {\n return this.querySelector('[data-scroll-indicator]');\n }\n}\n\nexport { Sveip as default };\n//# sourceMappingURL=index.esm.js.map\n","// extracted by mini-css-extract-plugin\nexport default {\"bildesveip\":\"dhbsv__bildesveip--tAnXv\",\"media\":\"dhbsv__media--RxYsY\",\"image-wrapper\":\"dhbsv__image-wrapper--slcBi\",\"imageWrapper\":\"dhbsv__image-wrapper--slcBi\",\"does-not-exist\":\"dhbsv__does-not-exist--KG8lT\",\"doesNotExist\":\"dhbsv__does-not-exist--KG8lT\",\"indicators\":\"dhbsv__indicators--nFWn1\",\"indicator\":\"dhbsv__indicator--AcvKR\",\"no-gap\":\"dhbsv__no-gap--rNIMR\",\"noGap\":\"dhbsv__no-gap--rNIMR\"};","import Sveip from '@nrk/dh-basis-sveip'\nimport { connectScrollContainerLazyLoad } from '@nrk/dh-basis-common'\nimport styles from './bildesveip.module.css'\n\nexport default class Bildesveip extends Sveip {\n connectedCallback() {\n super.connectedCallback()\n\n window.addEventListener('resize', this.verticalAlignImages)\n window.addEventListener('load', this.verticalAlignImages)\n this.mediaElements.forEach((img) => {\n img.addEventListener('load', this.verticalAlignImages)\n })\n\n this._disconnectLazyLoad = connectScrollContainerLazyLoad(\n this.scrollContainer,\n this.querySelectorAll('img'),\n )\n\n setTimeout(this.verticalAlignImages, 100)\n }\n\n disconnectedCallback() {\n super.disconnectedCallback()\n window.removeEventListener('resize', this.verticalAlignImages)\n window.removeEventListener('load', this.verticalAlignImages)\n this.mediaElements.forEach((img) => {\n img.removeEventListener('load', this.verticalAlignImages)\n })\n this._disconnectLazyLoad()\n }\n\n /**\n * Vertical aligns each image, and sets local css prop --_img-max-height to align buttons\n */\n verticalAlignImages = () => {\n // Read before write to avoid thrashing\n const elements = this.mediaElements\n const heights = elements.map((el) => el.getBoundingClientRect().height)\n const maxHeight = Math.max(...heights)\n\n // Write values once we have all bounding rectangles\n for (let i = 0; i < elements.length; i++) {\n const marginTop = Math.max((maxHeight - heights[i]) / 2, 0)\n elements[i].style.setProperty('margin-top', `${marginTop}px`)\n }\n\n if (maxHeight > 20) {\n this.style.setProperty('--_img-max-height', `${maxHeight}px`)\n }\n }\n\n get mediaElements() {\n return this.items.map((item) => item.querySelector(`img, .${styles.media}`))\n }\n\n set offsetRules(val) {\n // TODO: Remove once clients are updated\n }\n\n get offsetRules() {\n return []\n }\n}\n","import { toArray, ElementIntersectionObserver, setAttribute } from '@nrk/dh-basis-common'\n\nconst CHILD_SELECTOR = 'dh-bs-levende-stillbilde'\nconst STATE_ATTR = 'data-state'\nconst VIEWPORT_POSITION_ATTR = 'viewport-position'\nconst VIEWPORT_POSITION_DATA_ATTR = 'data-viewport-position'\n\n/*\n * Copies down the 'data-state' attribute to child.\n * Detects and sets 'data-viewport-position' on child.\n * */\nexport default class Wrapper extends HTMLElement {\n static get observedAttributes() {\n return [STATE_ATTR, VIEWPORT_POSITION_ATTR]\n }\n\n connectedCallback() {\n this._createIntersectionObserver()\n }\n\n disconnectedCallback() {\n this._disconnectIntersectionObserver()\n }\n\n attributeChangedCallback(name) {\n if (name === STATE_ATTR || name === VIEWPORT_POSITION_ATTR) {\n this._updateChildElements()\n }\n }\n\n _createIntersectionObserver() {\n this.containerObserver = new ElementIntersectionObserver([this], this._handleContainerChange, {\n threshold: [0, 0.1, 0.5, 0.9, 1],\n })\n }\n\n _disconnectIntersectionObserver() {\n if (this.containerObserver) {\n this.containerObserver.disconnect()\n }\n }\n\n _handleContainerChange = ([containerIntersection]) => {\n if (containerIntersection.isIntersecting) {\n if (this.viewportPosition !== 'IN-VIEWPORT') {\n this.viewportPosition = 'IN-VIEWPORT'\n }\n } else {\n if (this.viewportPosition) {\n this.viewportPosition = undefined\n }\n }\n }\n\n _updateChildElements() {\n const state = this.state\n const viewportPosition = this.viewportPosition\n const children = toArray(this.querySelectorAll(CHILD_SELECTOR))\n children.forEach((child) => {\n setAttribute(child, STATE_ATTR, state)\n setAttribute(child, VIEWPORT_POSITION_DATA_ATTR, viewportPosition)\n })\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","var __defProp = Object.defineProperty;\nvar __defProps = Object.defineProperties;\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n if (__getOwnPropSymbols)\n for (var prop of __getOwnPropSymbols(b)) {\n if (__propIsEnum.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));\n\n// src/nrk-types.ts\nvar ClickEventKind = /* @__PURE__ */ ((ClickEventKind2) => {\n ClickEventKind2[\"Content\"] = \"content\";\n ClickEventKind2[\"Other\"] = \"other\";\n return ClickEventKind2;\n})(ClickEventKind || {});\nvar ImpressionEventKind = /* @__PURE__ */ ((ImpressionEventKind2) => {\n ImpressionEventKind2[\"Impression\"] = \"impression\";\n return ImpressionEventKind2;\n})(ImpressionEventKind || {});\nvar PlaybackEventKind = /* @__PURE__ */ ((PlaybackEventKind2) => {\n PlaybackEventKind2[\"Complete\"] = \"complete\";\n PlaybackEventKind2[\"Exit\"] = \"exit\";\n PlaybackEventKind2[\"Progress\"] = \"progress\";\n PlaybackEventKind2[\"Start\"] = \"start\";\n return PlaybackEventKind2;\n})(PlaybackEventKind || {});\nvar SearchSource = /* @__PURE__ */ ((SearchSource2) => {\n SearchSource2[\"PopularSearch\"] = \"popular-search\";\n SearchSource2[\"PreviousResult\"] = \"previous-result\";\n SearchSource2[\"Search\"] = \"search\";\n return SearchSource2;\n})(SearchSource || {});\nvar ViewportEventKind = /* @__PURE__ */ ((ViewportEventKind2) => {\n ViewportEventKind2[\"Entry\"] = \"entry\";\n ViewportEventKind2[\"Exit\"] = \"exit\";\n return ViewportEventKind2;\n})(ViewportEventKind || {});\nvar EventSchema = /* @__PURE__ */ ((EventSchema3) => {\n EventSchema3[\"BackstageEvent\"] = \"iglu:no.nrk.innlogging/backstage-event/jsonschema/1-0-0\";\n EventSchema3[\"BridgeEvent\"] = \"iglu:no.nrk/bridge-event/jsonschema/1-0-0\";\n EventSchema3[\"ClickEvent\"] = \"iglu:no.nrk/click-event/jsonschema/1-0-0\";\n EventSchema3[\"FrontstageServerEvent\"] = \"iglu:no.nrk.innlogging/frontstage-server-event/jsonschema/1-0-0\";\n EventSchema3[\"ImpressionEvent\"] = \"iglu:no.nrk/impression-event/jsonschema/1-0-0\";\n EventSchema3[\"LoginRegisterFlowEvent\"] = \"iglu:no.nrk.innlogging/login-register-flow-event/jsonschema/1-0-0\";\n EventSchema3[\"NotificationEvent\"] = \"iglu:no.nrk/notification-event/jsonschema/1-0-0\";\n EventSchema3[\"PlaybackEvent\"] = \"iglu:no.nrk/playback-event/jsonschema/1-0-0\";\n EventSchema3[\"ProfilePageEvent\"] = \"iglu:no.nrk.innlogging/profile-page-event/jsonschema/1-0-0\";\n EventSchema3[\"RadioEvent\"] = \"iglu:no.nrk.radio/radio-event/jsonschema/1-0-0\";\n EventSchema3[\"SearchEvent\"] = \"iglu:no.nrk/search-event/jsonschema/1-0-0\";\n EventSchema3[\"StepEvent\"] = \"iglu:no.nrk.dh/step-event/jsonschema/1-0-0\";\n EventSchema3[\"TimeSpentEvent\"] = \"iglu:no.nrk/time-spent-event/jsonschema/1-0-0\";\n EventSchema3[\"ViewportEvent\"] = \"iglu:no.nrk.dh/viewport-event/jsonschema/1-0-0\";\n return EventSchema3;\n})(EventSchema || {});\nvar EntitySchema = /* @__PURE__ */ ((EntitySchema2) => {\n EntitySchema2[\"Bridge\"] = \"iglu:no.nrk/bridge/jsonschema/1-0-0\";\n EntitySchema2[\"ClientID\"] = \"iglu:no.nrk.innlogging/client-id/jsonschema/1-0-0\";\n EntitySchema2[\"Content\"] = \"iglu:no.nrk/content/jsonschema/1-0-1\";\n EntitySchema2[\"Experiment\"] = \"iglu:no.nrk/experiment/jsonschema/1-0-0\";\n EntitySchema2[\"Link\"] = \"iglu:no.nrk/link/jsonschema/2-0-0\";\n EntitySchema2[\"NrkSession\"] = \"iglu:no.nrk/nrk-session/jsonschema/1-0-0\";\n EntitySchema2[\"NrkUser\"] = \"iglu:no.nrk/nrk-user/jsonschema/1-0-0\";\n EntitySchema2[\"Plug\"] = \"iglu:no.nrk/plug/jsonschema/3-0-1\";\n EntitySchema2[\"PreviousWebPage\"] = \"iglu:no.nrk/previous-web-page/jsonschema/1-0-0\";\n EntitySchema2[\"RegistrationContext\"] = \"iglu:no.nrk.innlogging/registration-context/jsonschema/1-0-0\";\n EntitySchema2[\"SearchResult\"] = \"iglu:no.nrk/search-result/jsonschema/1-0-1\";\n EntitySchema2[\"Service\"] = \"iglu:no.nrk/service/jsonschema/2-0-0\";\n EntitySchema2[\"Application\"] = \"iglu:com.snowplowanalytics.mobile/application/jsonschema/1-0-0\";\n return EntitySchema2;\n})(EntitySchema || {});\n\n// src/nrk-base-tracker.ts\nimport cuid from \"cuid\";\nvar NrkBaseTracker = class {\n constructor(snowplow, config) {\n this.sharedEntities = {};\n var _a, _b, _c;\n this.snowplow = snowplow;\n this.trackerId = (_a = config.trackerId) != null ? _a : cuid.slug();\n this.setSharedEntity(\"iglu:no.nrk/service/jsonschema/2-0-0\" /* Service */, { id: config.serviceId, environment: (_b = config.environment) != null ? _b : null });\n if (config.appVersion && config.appBuild) {\n this.setSharedEntity(\"iglu:com.snowplowanalytics.mobile/application/jsonschema/1-0-0\" /* Application */, { build: config.appBuild, version: config.appVersion });\n }\n snowplow.newTracker(this.trackerId, config.collectorUrl, {\n postPath: \"/nrk/wd6\",\n appId: config.appId,\n plugins: config.plugins,\n platform: (_c = config.platform) != null ? _c : \"web\",\n contexts: {\n webPage: config.disableWebContext !== true\n },\n stateStorageStrategy: config.disableLocalStorage ? \"cookie\" : void 0\n });\n }\n /**\n * Track page view.\n */\n trackPageView(contentEntity) {\n if (contentEntity) {\n this.snowplow.trackPageView(\n {\n context: entitiesToContexts(__spreadProps(__spreadValues({}, this.sharedEntities), {\n [\"iglu:no.nrk/content/jsonschema/1-0-1\" /* Content */]: contentEntity\n }))\n },\n [this.trackerId]\n );\n } else {\n this.snowplow.trackPageView({ context: entitiesToContexts(this.sharedEntities) }, [this.trackerId]);\n }\n }\n /**\n * Generic track event for custom schemas, typed up to only support NRK\n * events and entities. All shared entities are included, and can be\n * overridden by specified entities.\n */\n trackSchemaEvent(schema, data, entities) {\n const context = entitiesToContexts(__spreadValues(__spreadValues({}, this.sharedEntities), entities));\n this.snowplow.trackSelfDescribingEvent(\n {\n event: { schema, data: __spreadValues({}, data) },\n context\n },\n [this.trackerId]\n );\n }\n /**\n * Send a standard structured event.\n */\n trackEvent(data, entities) {\n const context = entitiesToContexts(__spreadValues(__spreadValues({}, this.sharedEntities), entities));\n this.snowplow.trackStructEvent(__spreadProps(__spreadValues({}, data), { context }), [this.trackerId]);\n }\n /**\n * Set the logged in user.\n */\n setUser(userId) {\n this.snowplow.setUserId(userId, [this.trackerId]);\n this.setSharedEntity(\"iglu:no.nrk/nrk-user/jsonschema/1-0-0\" /* NrkUser */, { id: userId });\n }\n /**\n * Clear the user when logged out.\n */\n clearUser() {\n this.snowplow.setUserId(null, [this.trackerId]);\n this.removeSharedEntity(\"iglu:no.nrk/nrk-user/jsonschema/1-0-0\" /* NrkUser */);\n }\n /**\n * Add a plugin to the tracker.\n */\n addPlugin(configuration) {\n this.snowplow.addPlugin(configuration, [this.trackerId]);\n }\n /**\n * Set data for a shared entity for all events of this tracker.\n *\n * The `snowplow.addGlobalContexts()` method could potentially be used, but\n * `removeGlobalContexts()` requires the data as argument as well (awkward),\n * and there's no `getGlobalContexts()` to help with that.\n */\n setSharedEntity(schema, data) {\n this.sharedEntities[schema] = data;\n }\n /**\n * Returns any shared entities for an entity schema.\n */\n getSharedEntity(schema) {\n return this.sharedEntities[schema];\n }\n /**\n * Remove all shared entities for an entity schema.\n */\n removeSharedEntity(schema) {\n if (schema in this.sharedEntities) {\n delete this.sharedEntities[schema];\n }\n }\n};\nfunction entitiesToContexts(entities) {\n const contexts = [];\n Object.entries(entities).forEach(([schema, data]) => {\n const dataList = Array.isArray(data) ? data : [data];\n for (const entityData of dataList) {\n contexts.push({ schema, data: __spreadValues({}, entityData) });\n }\n });\n return contexts;\n}\n\n// src/nrk-player-tracker.ts\nvar NrkPlayerTracker = class extends NrkBaseTracker {\n /**\n * Tell the tracker what the current media is.\n */\n setMedia(mediaId, details) {\n const content = { id: mediaId };\n if (details == null ? void 0 : details.source) {\n content.source = details == null ? void 0 : details.source;\n }\n if (details == null ? void 0 : details.kind) {\n content.kind = details == null ? void 0 : details.kind;\n }\n this.setSharedEntity(\"iglu:no.nrk/content/jsonschema/1-0-1\" /* Content */, content);\n if (details == null ? void 0 : details.channelId) {\n this.channelId = details.channelId;\n }\n if (details && \"autoplay\" in details && details.autoplay !== void 0) {\n this.autoplay = details.autoplay;\n }\n }\n /**\n * Set autoplay for the current media.\n */\n setMediaAutoplay(autoplay) {\n this.autoplay = autoplay;\n }\n /**\n * Tell the tracker that media is unknown (like for gaps in the EPG).\n */\n setUnknownMedia(channelId) {\n this.setSharedEntity(\"iglu:no.nrk/content/jsonschema/1-0-1\" /* Content */, { id: \"unknown\", kind: \"unknown\" });\n this.channelId = channelId;\n }\n /**\n * Send a playback event of kind 'start'.\n *\n * Should be called when time starts running:\n * - After changing media.\n * - After user pauses playback.\n * - At replay.\n */\n sendStartEvent(startTime, live) {\n if (this.getSharedEntity(\"iglu:no.nrk/content/jsonschema/1-0-1\" /* Content */) === void 0) {\n throw new Error(\"Must use setMedia() first!\");\n }\n const start = Math.max(0, Math.floor(startTime));\n this.trackSchemaEvent(\"iglu:no.nrk/playback-event/jsonschema/1-0-0\" /* PlaybackEvent */, {\n kind: \"start\" /* Start */,\n startTime: start,\n endTime: start,\n autoplay: this.autoplay,\n live,\n channelId: this.channelId\n });\n }\n /**\n * Send a playback event of kind 'progress'.\n *\n * Should be called when time stops for any reason other than complete or\n * exit.\n */\n sendProgressEvent(startTime, endTime, live) {\n this.sendPlaybackEvent(\"progress\" /* Progress */, startTime, endTime, live);\n }\n /**\n * Send a playback event of kind 'complete'.\n *\n * Should be called when:\n * - Playback reaches the end (100%) of the media (for ODM it stops, for\n * channels it continues to play the next program in the EPG).\n * - When a skip-to-next media function is invoked when binging.\n */\n sendCompleteEvent(startTime, endTime, live) {\n this.sendPlaybackEvent(\"complete\" /* Complete */, startTime, endTime != null ? endTime : startTime, live);\n }\n /**\n * Send a playback event of kind 'exit'.\n *\n * Should be called when leaving the media before a 'complete'-event is sent,\n * including when seeking away from a program in the EPG to another.\n */\n sendExitEvent(startTime, endTime, live) {\n this.sendPlaybackEvent(\"exit\" /* Exit */, startTime, endTime != null ? endTime : startTime, live);\n }\n sendPlaybackEvent(kind, startTime, endTime, live) {\n const start = Math.max(0, Math.floor(startTime));\n const end = Math.max(0, Math.floor(endTime));\n if (start === end && kind === \"progress\" /* Progress */) {\n return;\n }\n if (start > end) {\n throw new Error(`Start time can't be after end time (${start} vs ${end}). Event was ${kind}`);\n }\n this.trackSchemaEvent(\"iglu:no.nrk/playback-event/jsonschema/1-0-0\" /* PlaybackEvent */, {\n kind,\n startTime: start,\n endTime: end,\n live,\n channelId: this.channelId\n });\n }\n};\n\n// src/service-id.ts\nvar ServiceID = /* @__PURE__ */ ((ServiceID2) => {\n ServiceID2[\"Embed\"] = \"embed\";\n ServiceID2[\"Nrkbeta\"] = \"nrkbeta\";\n ServiceID2[\"Nrkinnlogging\"] = \"nrkinnlogging\";\n ServiceID2[\"Nrkno\"] = \"nrkno\";\n ServiceID2[\"Nrkp3\"] = \"nrkp3\";\n ServiceID2[\"Nrkradio\"] = \"nrkradio\";\n ServiceID2[\"Nrksuper\"] = \"nrksuper\";\n ServiceID2[\"Nrktv\"] = \"nrktv\";\n ServiceID2[\"Yr\"] = \"yr\";\n return ServiceID2;\n})(ServiceID || {});\n\n// src/snowplow-global.ts\nvar SnowplowGlobal = class {\n constructor() {\n this.snowplow = window.snowplow;\n if (this.snowplow === void 0) {\n throw new Error(\"There is no global Snowplow function.\");\n }\n }\n /**\n * Check if the global API is available (provided by the \"Snowplow tag\"). No\n * distinction is made between sp.js and sp.lite.js.\n */\n static isAvailable() {\n return window.snowplow !== void 0;\n }\n /**\n * Modify newTracker() to support adding plugins via the tracker\n * configuration. See \"Creating your own plugins\" in the JavaScript tracker\n * Snowplow docs.\n *\n * Note: The tracker configuration hasn't been thoroughly checked for\n * inconsistencies between the global API and @snowplow/browser-tracker.\n * There might be issues.\n */\n newTracker(trackerId, collectorUrl, configuration) {\n this.snowplow(\"newTracker\", trackerId, collectorUrl, configuration);\n if ((configuration == null ? void 0 : configuration.plugins) !== void 0) {\n configuration.plugins.forEach((plugin) => {\n this.addPlugin({ plugin }, [trackerId]);\n });\n }\n }\n setUserId(...args) {\n this.proxy(\"setUserId\", args, 2);\n }\n trackPageView(...args) {\n this.proxy(\"trackPageView\", args, 2);\n }\n trackSelfDescribingEvent(...args) {\n this.proxy(\"trackSelfDescribingEvent\", args, 2);\n }\n trackStructEvent(...args) {\n this.proxy(\"trackStructEvent\", args, 2);\n }\n preservePageViewId(...args) {\n this.proxy(\"preservePageViewId\", args, 1);\n }\n addPlugin(config, trackers) {\n const args = [{ Plugin: () => config.plugin }, \"Plugin\", trackers];\n this.proxy(\"addPlugin\", args, args.length);\n }\n /**\n * Make a call to the global Snowplow API, with the specified method and\n * arguments. It only supports methods which have a `trackers` argument as\n * the last (optional) argument.\n *\n * The `trackers` argument of the Snowplow methods is optional and not always\n * in the same position. The `maxArgs` argument specifies the maximum number\n * of arguments the method supports and so in which position the `trackers`\n * argument is, when present. This is necessary in order to transform the use\n * of `trackers` between the Snowplow API and the global API. So if\n * `Args['length']` is `1 | 2`, then `maxArgs` should be 2.\n */\n proxy(method, args, maxArgs) {\n const trackerIds = args.length === maxArgs ? args.pop() : void 0;\n if (trackerIds && trackerIds.length > 0) {\n trackerIds.forEach((trackerId) => {\n this.snowplow(`${method}:${trackerId}`, ...args);\n });\n } else {\n this.snowplow(method, ...args);\n }\n }\n};\nexport {\n ClickEventKind,\n EntitySchema,\n EventSchema,\n ImpressionEventKind,\n NrkBaseTracker,\n NrkPlayerTracker,\n PlaybackEventKind,\n SearchSource,\n ServiceID,\n SnowplowGlobal,\n ViewportEventKind,\n entitiesToContexts\n};\n","import { EntitySchema, EventSchema } from '@nrk/snowplow-web';\n\n/**\n * Root path to snowplow bundle on static.nrk.no.\n */\nvar staticSnowplowRoot = \"https://static.nrk.no/nrkno-snowplow\";\n/**\n * The current major version\n */\nvar staticSnowplowMajorVersion = \"1\";\n\n//@ts-expect-error post-fix version to allow multiple versions to co-exists at the same time\nvar globalKey = \"nrknoOnTrackerReady-\" + staticSnowplowMajorVersion;\n\n/**\n * Modified version of @nrk/snowplow-web. Does not allow array or undefined\n */\n\n/**\n * Typecheck and generate `{schema, data}`\n */\nfunction getTyped(schema, data) {\n return {\n schema,\n data\n };\n}\n\n/**\n * No-op type check\n */\nfunction isTypedContext(_schema, _data) {}\n/**\n * No-op type check\n */\nfunction isTypedEvent(_schema, _data) {}\n/**\n * No-op type check\n */\nfunction isTyped(_schema, _data) {}\n\n/**\n * No-op type check\n */\nfunction isTypedArray(_schema, _data) {}\n\n/**\n * Typechecks a context and return the Snowplow type\n */\nfunction asSnowplowContext(data) {\n return data;\n}\nfunction asSnowplowEntity(data) {\n return data;\n}\n\nvar typeUtil = /*#__PURE__*/Object.freeze({\n __proto__: null,\n EntitySchema: EntitySchema,\n EventSchema: EventSchema,\n asSnowplowContext: asSnowplowContext,\n asSnowplowEntity: asSnowplowEntity,\n getTyped: getTyped,\n isTyped: isTyped,\n isTypedArray: isTypedArray,\n isTypedContext: isTypedContext,\n isTypedEvent: isTypedEvent\n});\n\n/// \n/**\n * Takes a callback that will be called with the bundled JS when ready.\n *\n * This function will load the major version (defined above in JS file) from `static.nrk.no`\n * @note the callback will never be called if a network error occurs.\n */\nfunction getBundle(callback) {\n // Add callback queue placeholder if needed\n if (globalThis[globalKey] === undefined) {\n //@ts-expect-error `q` is next line\n globalThis[globalKey] = function (cb) {\n globalThis[globalKey].q.push(cb);\n };\n globalThis[globalKey].q = [];\n }\n {\n // load script if needed\n loadOnce(staticSnowplowRoot + \"/major/\" + staticSnowplowMajorVersion + \"/nrkno-snowplow-entry.js\");\n }\n\n // add callback\n globalThis[globalKey](callback);\n}\n/**\n * loadOnce loads the given script IFF it is not already present in the DOM.\n * @param {string} src URL for script\n * @returns {undefined}\n */\nfunction loadOnce(src) {\n var hasScript = document.querySelector(\"script[src=\\\"\" + src + \"\\\"]\");\n if (hasScript) {\n return;\n }\n var script = document.createElement('script');\n script.async = true;\n script.src = src;\n document.head.appendChild(script);\n}\n\nexport { typeUtil as TypeUtils, getBundle };\n","const COLORS = [\n '#0000CC',\n '#0000FF',\n '#0033CC',\n '#0033FF',\n '#0066CC',\n '#0066FF',\n '#0099CC',\n '#0099FF',\n '#00CC00',\n '#00CC33',\n '#00CC66',\n '#00CC99',\n '#00CCCC',\n '#00CCFF',\n '#3300CC',\n '#3300FF',\n '#3333CC',\n '#3333FF',\n '#3366CC',\n '#3366FF',\n '#3399CC',\n '#3399FF',\n '#33CC00',\n '#33CC33',\n '#33CC66',\n '#33CC99',\n '#33CCCC',\n '#33CCFF',\n '#6600CC',\n '#6600FF',\n '#6633CC',\n '#6633FF',\n '#66CC00',\n '#66CC33',\n '#9900CC',\n '#9900FF',\n '#9933CC',\n '#9933FF',\n '#99CC00',\n '#99CC33',\n '#CC0000',\n '#CC0033',\n '#CC0066',\n '#CC0099',\n '#CC00CC',\n '#CC00FF',\n '#CC3300',\n '#CC3333',\n '#CC3366',\n '#CC3399',\n '#CC33CC',\n '#CC33FF',\n '#CC6600',\n '#CC6633',\n '#CC9900',\n '#CC9933',\n '#CCCC00',\n '#CCCC33',\n '#FF0000',\n '#FF0033',\n '#FF0066',\n '#FF0099',\n '#FF00CC',\n '#FF00FF',\n '#FF3300',\n '#FF3333',\n '#FF3366',\n '#FF3399',\n '#FF33CC',\n '#FF33FF',\n '#FF6600',\n '#FF6633',\n '#FF9900',\n '#FF9933',\n '#FFCC00',\n '#FFCC33',\n];\n\n/**\n * Factory for creating namespaced logging functions.\n * Namespaces are enabled via the `debug` localStorage key,\n * and support multiple comma/space separated namespaces with or without `*` wildcards.\n *\n * @param { string } namespace\n * @returns { (...data: Array) => void }\n */\nexport default function debugFactory(namespace) {\n if (/\\s/.test(namespace)) {\n throw Error('debug namespaces cannot include whitespace');\n }\n\n if (!isEnabled(namespace)) {\n return function debug() {\n // no-op\n };\n }\n\n const color = selectColor(namespace);\n let lastCalled = 0;\n\n return function debug(...data) {\n const now = Date.now();\n const diff = now - (lastCalled || now);\n\n console.log(`%c${namespace} +${diff}ms`, `color: ${color}`, ...data);\n lastCalled = now;\n };\n}\n\n/**\n * @param { string } namespace\n * @returns boolean\n */\nfunction isEnabled(namespace) {\n try {\n const patterns = (localStorage.getItem('debug') || '').split(/[\\s,]+/g);\n\n for (const pattern of patterns) {\n if (pattern === '') {\n continue;\n }\n\n const wildcardIdx = pattern.indexOf('*');\n\n if (wildcardIdx > -1) {\n if (namespace.startsWith(pattern.slice(0, wildcardIdx))) {\n return true;\n }\n } else {\n if (namespace === pattern) {\n return true;\n }\n }\n }\n } catch (err) {\n // localStorage error\n }\n\n return false;\n}\n\n/**\n * @param { string } namespace\n * @returns { string }\n * @see https://github.com/debug-js/debug/blob/c0805cc4d3b2c7c987567e99ecaec78840516d7b/src/common.js#L41\n */\nfunction selectColor(namespace) {\n let hash = 0;\n\n for (let i = 0; i < namespace.length; i++) {\n hash = (hash << 5) - hash + namespace.charCodeAt(i);\n hash |= 0; // Convert to 32bit integer\n }\n\n return COLORS[Math.abs(hash) % COLORS.length];\n}\n","var __defProp = Object.defineProperty;\nvar __defProps = Object.defineProperties;\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __typeError = (msg) => {\n throw TypeError(msg);\n};\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n if (__getOwnPropSymbols)\n for (var prop of __getOwnPropSymbols(b)) {\n if (__propIsEnum.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));\nvar __accessCheck = (obj, member, msg) => member.has(obj) || __typeError(\"Cannot \" + msg);\nvar __privateGet = (obj, member, getter) => (__accessCheck(obj, member, \"read from private field\"), getter ? getter.call(obj) : member.get(obj));\nvar __privateAdd = (obj, member, value) => member.has(obj) ? __typeError(\"Cannot add the same private member more than once\") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);\nvar __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, \"write to private field\"), setter ? setter.call(obj, value) : member.set(obj, value), value);\n\n// src/nrk-base-tracker.ts\nimport Debug from \"@nrk/debug\";\nimport cuid from \"cuid\";\n\n// src/nrk-types.ts\nvar ClickEventKind = /* @__PURE__ */ ((ClickEventKind2) => {\n ClickEventKind2[\"Content\"] = \"content\";\n ClickEventKind2[\"Other\"] = \"other\";\n return ClickEventKind2;\n})(ClickEventKind || {});\nvar ImpressionEventKind = /* @__PURE__ */ ((ImpressionEventKind2) => {\n ImpressionEventKind2[\"Impression\"] = \"impression\";\n return ImpressionEventKind2;\n})(ImpressionEventKind || {});\nvar PlaybackEventKind = /* @__PURE__ */ ((PlaybackEventKind2) => {\n PlaybackEventKind2[\"Complete\"] = \"complete\";\n PlaybackEventKind2[\"Exit\"] = \"exit\";\n PlaybackEventKind2[\"Progress\"] = \"progress\";\n PlaybackEventKind2[\"Start\"] = \"start\";\n return PlaybackEventKind2;\n})(PlaybackEventKind || {});\nvar SearchSource = /* @__PURE__ */ ((SearchSource2) => {\n SearchSource2[\"PopularSearch\"] = \"popular-search\";\n SearchSource2[\"PreviousResult\"] = \"previous-result\";\n SearchSource2[\"Search\"] = \"search\";\n return SearchSource2;\n})(SearchSource || {});\nvar ViewportEventKind = /* @__PURE__ */ ((ViewportEventKind2) => {\n ViewportEventKind2[\"Entry\"] = \"entry\";\n ViewportEventKind2[\"Exit\"] = \"exit\";\n return ViewportEventKind2;\n})(ViewportEventKind || {});\nvar EventSchema = /* @__PURE__ */ ((EventSchema2) => {\n EventSchema2[\"BackstageEvent\"] = \"iglu:no.nrk.innlogging/backstage-event/jsonschema/1-0-0\";\n EventSchema2[\"BridgeEvent\"] = \"iglu:no.nrk/bridge-event/jsonschema/1-0-0\";\n EventSchema2[\"ClickEvent\"] = \"iglu:no.nrk/click-event/jsonschema/1-0-0\";\n EventSchema2[\"FrontstageServerEvent\"] = \"iglu:no.nrk.innlogging/frontstage-server-event/jsonschema/1-0-0\";\n EventSchema2[\"ImpressionEvent\"] = \"iglu:no.nrk/impression-event/jsonschema/1-0-0\";\n EventSchema2[\"LoginRegisterFlowEvent\"] = \"iglu:no.nrk.innlogging/login-register-flow-event/jsonschema/1-0-0\";\n EventSchema2[\"NotificationEvent\"] = \"iglu:no.nrk/notification-event/jsonschema/1-0-0\";\n EventSchema2[\"PlaybackEvent\"] = \"iglu:no.nrk/playback-event/jsonschema/1-0-0\";\n EventSchema2[\"ProfilePageEvent\"] = \"iglu:no.nrk.innlogging/profile-page-event/jsonschema/1-0-0\";\n EventSchema2[\"RadioEvent\"] = \"iglu:no.nrk.radio/radio-event/jsonschema/1-0-0\";\n EventSchema2[\"SearchEvent\"] = \"iglu:no.nrk/search-event/jsonschema/1-0-0\";\n EventSchema2[\"StepEvent\"] = \"iglu:no.nrk.dh/step-event/jsonschema/1-0-0\";\n EventSchema2[\"TimeSpentEvent\"] = \"iglu:no.nrk/time-spent-event/jsonschema/1-0-0\";\n EventSchema2[\"ViewportEvent\"] = \"iglu:no.nrk.dh/viewport-event/jsonschema/1-0-0\";\n return EventSchema2;\n})(EventSchema || {});\nvar EntitySchema = /* @__PURE__ */ ((EntitySchema2) => {\n EntitySchema2[\"Bridge\"] = \"iglu:no.nrk/bridge/jsonschema/1-0-0\";\n EntitySchema2[\"ClientID\"] = \"iglu:no.nrk.innlogging/client-id/jsonschema/1-0-0\";\n EntitySchema2[\"Content\"] = \"iglu:no.nrk/content/jsonschema/1-0-1\";\n EntitySchema2[\"Experiment\"] = \"iglu:no.nrk/experiment/jsonschema/1-0-0\";\n EntitySchema2[\"Link\"] = \"iglu:no.nrk/link/jsonschema/2-0-0\";\n EntitySchema2[\"NrkSession\"] = \"iglu:no.nrk/nrk-session/jsonschema/1-0-0\";\n EntitySchema2[\"NrkUser\"] = \"iglu:no.nrk/nrk-user/jsonschema/1-0-0\";\n EntitySchema2[\"Plug\"] = \"iglu:no.nrk/plug/jsonschema/3-0-1\";\n EntitySchema2[\"PreviousWebPage\"] = \"iglu:no.nrk/previous-web-page/jsonschema/1-0-0\";\n EntitySchema2[\"RegistrationContext\"] = \"iglu:no.nrk.innlogging/registration-context/jsonschema/1-0-0\";\n EntitySchema2[\"SearchResult\"] = \"iglu:no.nrk/search-result/jsonschema/1-0-1\";\n EntitySchema2[\"Service\"] = \"iglu:no.nrk/service/jsonschema/2-0-0\";\n EntitySchema2[\"Application\"] = \"iglu:com.snowplowanalytics.mobile/application/jsonschema/1-0-0\";\n return EntitySchema2;\n})(EntitySchema || {});\n\n// src/nrk-base-tracker.ts\nvar debug = Debug(\"app:snowplow:tracker\");\nvar _sharedEntities;\nvar NrkBaseTracker = class {\n constructor(snowplow, config) {\n __privateAdd(this, _sharedEntities, {});\n var _a, _b, _c;\n this.snowplow = snowplow;\n this.trackerId = (_a = config.trackerId) != null ? _a : cuid.slug();\n debug(`Setting shared entity ${\"iglu:no.nrk/service/jsonschema/2-0-0\" /* Service */} with id ${config.serviceId}`);\n this.setSharedEntity(\"iglu:no.nrk/service/jsonschema/2-0-0\" /* Service */, { id: config.serviceId, environment: (_b = config.environment) != null ? _b : null });\n if (config.appVersion && config.appBuild) {\n debug(\n `Setting shared entity ${\"iglu:com.snowplowanalytics.mobile/application/jsonschema/1-0-0\" /* Application */} with build ${config.appBuild} and version ${config.appVersion}`\n );\n this.setSharedEntity(\"iglu:com.snowplowanalytics.mobile/application/jsonschema/1-0-0\" /* Application */, { build: config.appBuild, version: config.appVersion });\n }\n snowplow.newTracker(this.trackerId, config.collectorUrl, {\n postPath: \"/nrk/wd6\",\n appId: config.appId,\n plugins: config.plugins,\n platform: (_c = config.platform) != null ? _c : \"web\",\n contexts: {\n webPage: config.disableWebContext !== true\n },\n stateStorageStrategy: config.disableLocalStorage ? \"cookie\" : void 0\n });\n }\n /**\n * Track page view.\n */\n trackPageView(contentEntity) {\n if (contentEntity) {\n debug(`Tracking page view with entity ${contentEntity.kind}/${contentEntity.id} (tracker: ${this.trackerId})`);\n this.snowplow.trackPageView(\n {\n context: entitiesToContexts(__spreadProps(__spreadValues({}, __privateGet(this, _sharedEntities)), {\n [\"iglu:no.nrk/content/jsonschema/1-0-1\" /* Content */]: contentEntity\n }))\n },\n [this.trackerId]\n );\n } else {\n debug(`Tracking page view without contentEntity (tracker: ${this.trackerId})`);\n this.snowplow.trackPageView({ context: entitiesToContexts(__privateGet(this, _sharedEntities)) }, [this.trackerId]);\n }\n }\n /**\n * Generic track event for custom schemas, typed up to only support NRK\n * events and entities. All shared entities are included, and can be\n * overridden by specified entities.\n */\n trackSchemaEvent(schema, data, entities) {\n const context = entitiesToContexts(__spreadValues(__spreadValues({}, __privateGet(this, _sharedEntities)), entities));\n debug(`Tracking event with schema ${schema} and data ${JSON.stringify(data)} (tracker: ${this.trackerId})`);\n this.snowplow.trackSelfDescribingEvent(\n {\n event: { schema, data: __spreadValues({}, data) },\n context\n },\n [this.trackerId]\n );\n }\n /**\n * Send a standard structured event.\n */\n trackEvent(data, entities) {\n const context = entitiesToContexts(__spreadValues(__spreadValues({}, __privateGet(this, _sharedEntities)), entities));\n debug(`Tracking structured event width enitites ${entities} (tracker: ${this.trackerId})`);\n this.snowplow.trackStructEvent(__spreadProps(__spreadValues({}, data), { context }), [this.trackerId]);\n }\n /**\n * Set the logged in user.\n */\n setUser(userId) {\n this.snowplow.setUserId(userId, [this.trackerId]);\n debug(`Setting shared entity ${\"iglu:no.nrk/nrk-user/jsonschema/1-0-0\" /* NrkUser */} with id ${userId}`);\n this.setSharedEntity(\"iglu:no.nrk/nrk-user/jsonschema/1-0-0\" /* NrkUser */, { id: userId });\n }\n /**\n * Clear the user when logged out.\n */\n clearUser() {\n this.snowplow.setUserId(null, [this.trackerId]);\n debug(`Removing shared entity ${\"iglu:no.nrk/nrk-user/jsonschema/1-0-0\" /* NrkUser */}`);\n this.removeSharedEntity(\"iglu:no.nrk/nrk-user/jsonschema/1-0-0\" /* NrkUser */);\n }\n /**\n * Add a plugin to the tracker.\n */\n addPlugin(configuration) {\n this.snowplow.addPlugin(configuration, [this.trackerId]);\n }\n /**\n * Set data for a shared entity for all events of this tracker.\n *\n * The `snowplow.addGlobalContexts()` method could potentially be used, but\n * `removeGlobalContexts()` requires the data as argument as well (awkward),\n * and there's no `getGlobalContexts()` to help with that.\n */\n setSharedEntity(schema, data) {\n __privateGet(this, _sharedEntities)[schema] = data;\n }\n /**\n * Returns any shared entities for an entity schema.\n */\n getSharedEntity(schema) {\n return __privateGet(this, _sharedEntities)[schema];\n }\n /**\n * Remove all shared entities for an entity schema.\n */\n removeSharedEntity(schema) {\n if (schema in __privateGet(this, _sharedEntities)) {\n delete __privateGet(this, _sharedEntities)[schema];\n }\n }\n};\n_sharedEntities = new WeakMap();\nfunction entitiesToContexts(entities) {\n const contexts = [];\n for (const [schema, data] of Object.entries(entities)) {\n const dataList = Array.isArray(data) ? data : [data];\n for (const entityData of dataList) {\n contexts.push({ schema, data: __spreadValues({}, entityData) });\n }\n }\n return contexts;\n}\n\n// src/nrk-player-tracker.ts\nvar _channelId, _autoplay;\nvar NrkPlayerTracker = class extends NrkBaseTracker {\n constructor() {\n super(...arguments);\n __privateAdd(this, _channelId);\n __privateAdd(this, _autoplay);\n }\n /**\n * Tell the tracker what the current media is.\n */\n setMedia(mediaId, details) {\n const content = { id: mediaId };\n if (details == null ? void 0 : details.source) {\n content.source = details == null ? void 0 : details.source;\n }\n if (details == null ? void 0 : details.kind) {\n content.kind = details == null ? void 0 : details.kind;\n }\n this.setSharedEntity(\"iglu:no.nrk/content/jsonschema/1-0-1\" /* Content */, content);\n if (details == null ? void 0 : details.channelId) {\n __privateSet(this, _channelId, details.channelId);\n }\n if (details && \"autoplay\" in details && details.autoplay !== void 0) {\n __privateSet(this, _autoplay, details.autoplay);\n }\n }\n /**\n * Set autoplay for the current media.\n */\n setMediaAutoplay(autoplay) {\n __privateSet(this, _autoplay, autoplay);\n }\n /**\n * Tell the tracker that media is unknown (like for gaps in the EPG).\n */\n setUnknownMedia(channelId) {\n this.setSharedEntity(\"iglu:no.nrk/content/jsonschema/1-0-1\" /* Content */, { id: \"unknown\", kind: \"unknown\" });\n __privateSet(this, _channelId, channelId);\n }\n /**\n * Send a playback event of kind 'start'.\n *\n * Should be called when time starts running:\n * - After changing media.\n * - After user pauses playback.\n * - At replay.\n */\n sendStartEvent(startTime, live) {\n if (this.getSharedEntity(\"iglu:no.nrk/content/jsonschema/1-0-1\" /* Content */) === void 0) {\n throw new Error(\"Must use setMedia() first!\");\n }\n const start = Math.max(0, Math.floor(startTime));\n this.trackSchemaEvent(\"iglu:no.nrk/playback-event/jsonschema/1-0-0\" /* PlaybackEvent */, {\n kind: \"start\" /* Start */,\n startTime: start,\n endTime: start,\n autoplay: __privateGet(this, _autoplay),\n live,\n channelId: __privateGet(this, _channelId)\n });\n }\n /**\n * Send a playback event of kind 'progress'.\n *\n * Should be called when time stops for any reason other than complete or\n * exit.\n */\n sendProgressEvent(startTime, endTime, live) {\n this.sendPlaybackEvent(\"progress\" /* Progress */, startTime, endTime, live);\n }\n /**\n * Send a playback event of kind 'complete'.\n *\n * Should be called when:\n * - Playback reaches the end (100%) of the media (for ODM it stops, for\n * channels it continues to play the next program in the EPG).\n * - When a skip-to-next media function is invoked when binging.\n */\n sendCompleteEvent(startTime, endTime, live) {\n this.sendPlaybackEvent(\"complete\" /* Complete */, startTime, endTime != null ? endTime : startTime, live);\n }\n /**\n * Send a playback event of kind 'exit'.\n *\n * Should be called when leaving the media before a 'complete'-event is sent,\n * including when seeking away from a program in the EPG to another.\n */\n sendExitEvent(startTime, endTime, live) {\n this.sendPlaybackEvent(\"exit\" /* Exit */, startTime, endTime != null ? endTime : startTime, live);\n }\n sendPlaybackEvent(kind, startTime, endTime, live) {\n const start = Math.max(0, Math.floor(startTime));\n const end = Math.max(0, Math.floor(endTime));\n if (start === end && kind === \"progress\" /* Progress */) {\n return;\n }\n if (start > end) {\n throw new Error(`Start time can't be after end time (${start} vs ${end}). Event was ${kind}`);\n }\n this.trackSchemaEvent(\"iglu:no.nrk/playback-event/jsonschema/1-0-0\" /* PlaybackEvent */, {\n kind,\n startTime: start,\n endTime: end,\n live,\n channelId: __privateGet(this, _channelId)\n });\n }\n};\n_channelId = new WeakMap();\n_autoplay = new WeakMap();\n\n// src/service-id.ts\nvar ServiceID = /* @__PURE__ */ ((ServiceID2) => {\n ServiceID2[\"Embed\"] = \"embed\";\n ServiceID2[\"Nrkbeta\"] = \"nrkbeta\";\n ServiceID2[\"Nrkinnlogging\"] = \"nrkinnlogging\";\n ServiceID2[\"Nrkno\"] = \"nrkno\";\n ServiceID2[\"Nrkp3\"] = \"nrkp3\";\n ServiceID2[\"Nrkradio\"] = \"nrkradio\";\n ServiceID2[\"Nrksuper\"] = \"nrksuper\";\n ServiceID2[\"Nrktv\"] = \"nrktv\";\n ServiceID2[\"Yr\"] = \"yr\";\n return ServiceID2;\n})(ServiceID || {});\n\n// src/snowplow-global.ts\nimport Debug2 from \"@nrk/debug\";\nvar debug2 = Debug2(\"app:snowplow:tracker\");\nvar SnowplowGlobal = class {\n constructor() {\n debug2(\"Initializing SnowplowGlobal accessing window.snowplow\");\n this.snowplow = window.snowplow;\n if (this.snowplow === void 0) {\n throw new Error(\"There is no global Snowplow function.\");\n }\n }\n /**\n * Check if the global API is available (provided by the \"Snowplow tag\"). No\n * distinction is made between sp.js and sp.lite.js.\n */\n static isAvailable() {\n return window.snowplow !== void 0;\n }\n /**\n * Modify newTracker() to support adding plugins via the tracker\n * configuration. See \"Creating your own plugins\" in the JavaScript tracker\n * Snowplow docs.\n *\n * Note: The tracker configuration hasn't been thoroughly checked for\n * inconsistencies between the global API and @snowplow/browser-tracker.\n * There might be issues.\n */\n newTracker(trackerId, collectorUrl, configuration) {\n debug2(`Creating new tracker with id ${trackerId}`);\n this.snowplow(\"newTracker\", trackerId, collectorUrl, configuration);\n if ((configuration == null ? void 0 : configuration.plugins) !== void 0) {\n for (const plugin of configuration.plugins) {\n debug2(`Adding plugin ${plugin} for tracker ${trackerId}`);\n this.addPlugin({ plugin }, [trackerId]);\n }\n }\n }\n setUserId(...args) {\n debug2(`setUserId() called with ${args}`);\n this.proxy(\"setUserId\", args, 2);\n }\n trackPageView(...args) {\n debug2(`trackPageView() called with ${args}`);\n this.proxy(\"trackPageView\", args, 2);\n }\n trackSelfDescribingEvent(...args) {\n debug2(`trackSelfDescribingEvent() called with ${args}`);\n this.proxy(\"trackSelfDescribingEvent\", args, 2);\n }\n trackStructEvent(...args) {\n debug2(`trackStructEvent() called with ${args}`);\n this.proxy(\"trackStructEvent\", args, 2);\n }\n preservePageViewId(...args) {\n debug2(`preservePageViewId() called with ${args}`);\n this.proxy(\"preservePageViewId\", args, 1);\n }\n addPlugin(config, trackers) {\n const args = [{ Plugin: () => config.plugin }, \"Plugin\", trackers];\n this.proxy(\"addPlugin\", args, args.length);\n }\n /**\n * Make a call to the global Snowplow API, with the specified method and\n * arguments. It only supports methods which have a `trackers` argument as\n * the last (optional) argument.\n *\n * The `trackers` argument of the Snowplow methods is optional and not always\n * in the same position. The `maxArgs` argument specifies the maximum number\n * of arguments the method supports and so in which position the `trackers`\n * argument is, when present. This is necessary in order to transform the use\n * of `trackers` between the Snowplow API and the global API. So if\n * `Args['length']` is `1 | 2`, then `maxArgs` should be 2.\n */\n proxy(method, args, maxArgs) {\n const trackerIds = args.length === maxArgs ? args.pop() : void 0;\n if (trackerIds && trackerIds.length > 0) {\n for (const trackerId of trackerIds) {\n this.snowplow(`${method}:${trackerId}`, ...args);\n }\n } else {\n this.snowplow(method, ...args);\n }\n }\n};\nexport {\n ClickEventKind,\n EntitySchema,\n EventSchema,\n ImpressionEventKind,\n NrkBaseTracker,\n NrkPlayerTracker,\n PlaybackEventKind,\n SearchSource,\n ServiceID,\n SnowplowGlobal,\n ViewportEventKind,\n entitiesToContexts\n};\n","import { getBundle } from '@nrk/nrkno-snowplow';\nimport { EntitySchema } from '@nrk/snowplow-web';\nimport { g as getHost } from './shared/dh-snowplow.1ee613bf.mjs';\n\nconst APP_ID = \"no.nrk.dh\";\nfunction resolveOrTimeout(promise, wait) {\n return Promise.race([\n promise.then(() => true),\n new Promise((resolve) => {\n setTimeout(() => {\n resolve(false);\n }, wait);\n })\n ]);\n}\nfunction createTracker(trackerId, { environment, contentContext }) {\n let trackerReady = false;\n let bundle;\n const host = getHost(environment);\n const eventQueue = [];\n const contexts = [\"service\", \"user\"];\n const trackOrQueue = (callback) => {\n if (trackerReady) {\n callback(bundle);\n } else {\n eventQueue.push(callback);\n }\n };\n const trackStructuredEvent = (event) => trackOrQueue(({ NrknoUtils, Snowplow }) => {\n Snowplow.trackStructEvent(\n {\n ...event,\n context: NrknoUtils.context.collect(contexts)\n },\n [trackerId]\n );\n });\n const trackSelfDescribingEvent = (event) => trackOrQueue(\n ({ NrknoUtils, Snowplow }) => Snowplow.trackSelfDescribingEvent(\n {\n event,\n context: NrknoUtils.context.collect(contexts)\n },\n [trackerId]\n )\n );\n getBundle((nrknoBundle) => {\n bundle = nrknoBundle;\n const { NrknoUtils } = nrknoBundle;\n NrknoUtils.newTracker(trackerId, APP_ID, host);\n if (contentContext) {\n const contentContextId = `${trackerId}-${contentContext.id}`;\n contexts.push(contentContextId);\n NrknoUtils.context.set(contentContextId, EntitySchema.Content, {\n source: contentContext.source,\n id: contentContext.id\n });\n }\n resolveOrTimeout(NrknoUtils.trackers.whenReady(\"main-tracker\"), 1e3).then((isResolved) => {\n trackerReady = true;\n if (isResolved === false) {\n console.warn(\"nrkno tracker not available\");\n }\n while (eventQueue.length) {\n const fn = eventQueue.pop();\n fn(bundle);\n }\n return;\n }).catch(console.error);\n });\n return {\n trackSelfDescribingEvent,\n trackStructuredEvent\n };\n}\n\nexport { createTracker, getHost };\n","function getHost(environment = \"development\") {\n if (environment === \"production\") {\n return \"https://data.nrk.no\";\n }\n return \"https://no-nrk-prod1.mini.snplow.net\";\n}\n\nexport { getHost as g };\n","import { getElementTag } from '@nrk/dh-server-libs/get-element-tag'\nimport LevendeStillbilde from '@nrk/dh-basis-levende-stillbilde'\nimport Bildesveip from './components/bildesveip.js'\nimport Wrapper from './components/wrapper.js'\nimport { createTracker } from '@nrk/dh-snowplow'\nimport { EventSchema, ViewportEventKind } from '@nrk/snowplow-web'\nimport './client.css'\nimport './components/bildesveip.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 HTMLElement {\n name = tag\n #entryObserver\n #exitObserver\n #tracker\n\n connectedCallback() {\n this.#defineCustomElements()\n this.#createTracker()\n\n this.#startViewportLogger()\n this.addEventListener('dh-basis-sveip-active-changed', this.#handleActiveChanged)\n }\n\n disconnectedCallback() {\n this.#stopViewportLogger()\n this.removeEventListener('dh-basis-sveip-active-changed', this.#handleActiveChanged)\n }\n\n async #defineCustomElements() {\n safeDefine('dh-bildesveip', Bildesveip)\n safeDefine('dh-bildesveip-wrapper', Wrapper)\n safeDefine('dh-bs-levende-stillbilde', LevendeStillbilde)\n\n if (this.features.kart && typeof customElements.get('dhbs-basis-kart') === 'undefined') {\n const BasisKart = (await import('./kart.js' /* webpackChunkName: \"dh-basis-kart\" */)).default\n safeDefine('dh-bs-kart', BasisKart)\n }\n }\n\n #createTracker() {\n if (process.env.DEV) {\n import('@nrk/dh-snowplow/mock').then(({ mock }) => mock()).catch(console.error)\n }\n\n this.#tracker = createTracker('dh-bildesveip', {\n environment: process.env.ENVIRONMENT,\n contentContext: {\n source: 'pp',\n id: this.dataset.selfId,\n },\n })\n }\n\n #handleActiveChanged = (e) => {\n this.#tracker?.trackSelfDescribingEvent({\n schema: EventSchema.StepEvent,\n data: {\n current: e.detail.nextIndex + 1,\n total: this.#scrollContainerChildren.length,\n },\n })\n }\n\n #startViewportLogger() {\n this.#entryObserver = new IntersectionObserver((entries) => {\n if (!entries[0]?.isIntersecting) {\n return\n }\n this.#entryObserver?.disconnect()\n this.#exitObserver?.observe(this)\n this.#tracker?.trackSelfDescribingEvent({\n schema: EventSchema.ViewportEvent,\n data: {\n kind: ViewportEventKind.Entry,\n },\n })\n }, {})\n\n this.#exitObserver = new IntersectionObserver(\n (entries) => {\n if (!entries[0]?.isIntersecting) {\n return\n }\n this.#exitObserver?.disconnect()\n this.#tracker?.trackSelfDescribingEvent({\n schema: EventSchema.ViewportEvent,\n data: {\n kind: ViewportEventKind.Exit,\n },\n })\n },\n {\n threshold: [1],\n // `margin-block: 3000px -100%` setter opp et rektangel over skjermen\n // `margin-inline: 10%` sikrer at komponenter som stikker litt ut på høyre og venstre side trigger threshold på 1\n rootMargin: '3000px 10% -100% 10%',\n },\n )\n\n this.#entryObserver.observe(this)\n }\n\n #stopViewportLogger() {\n this.#entryObserver?.disconnect()\n this.#exitObserver?.disconnect()\n }\n\n get features() {\n return JSON.parse(this.getAttribute('features'))\n }\n\n get #scrollContainerChildren() {\n return this.querySelectorAll(`[data-scroll-container] > *`)\n }\n}\n\nsafeDefine(tag, AppElement)\n"],"names":["installedChunks","installChunk","fingerprint","pad","getRandomValue","c","discreteValues","Math","pow","randomBlock","toString","safeCounter","cuid","Date","getTime","slug","date","counter","slice","print","random","isCuid","stringToCheck","startsWith","isSlug","stringLength","length","module","exports","env","window","self","globalCount","Object","keys","clientId","navigator","mimeTypes","userAgent","crypto","msCrypto","lim","abs","getRandomValues","Uint32Array","num","size","s","substr","getElementTag","name","version","split","asyncGeneratorStep","n","t","e","r","o","a","i","u","value","done","Promise","resolve","then","_asyncToGenerator","this","arguments","apply","_next","_throw","_typeof","Symbol","iterator","constructor","prototype","toPropertyKey","toPrimitive","call","TypeError","String","Number","_defineProperty","defineProperty","enumerable","configurable","writable","defaultRoot","getDefaultRoot","IntersectionObserver","root","document","isDocumentRootSupported","ownKeys","getOwnPropertySymbols","filter","getOwnPropertyDescriptor","push","_objectSpread","forEach","getOwnPropertyDescriptors","defineProperties","defaultConfig","rootMargin","threshold","ElementIntersectionObserver","elements","onChange","config","intersections","map","target","isIntersecting","ratio","intersectionObserver","entries","entry","idx","indexOf","splice","intersectionRatio","elm","observe","disconnect","unobserve","toggleAttribute","el","boolValue","hasAttribute","setAttribute","removeAttribute","nextValue","proto","match","Element","matches","msMatchesSelector","webkitMatchesSelector","closest","toArray","nodeList","dispatchEvent","element","event","detail","undefined","ignore","concat","CustomEvent","bubbles","cancelable","createEvent","initCustomEvent","result","testReducedMotion","matchMedia","loadImage","image","loading","connectScrollContainerLazyLoad","container","images","containerIntersecting","deferredImages","containerObserver","imageObserver","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","m","getter","__esModule","d","definition","key","get","f","chunkId","all","reduce","promises","miniCssF","obj","prop","hasOwnProperty","toStringTag","p","loadStylesheet","reject","href","fullhref","existingLinkTags","getElementsByTagName","dataHref","tag","getAttribute","rel","existingStyleTags","findStylesheet","oldTag","linkTag","createElement","type","nc","nonce","onerror","onload","errorType","realHref","err","Error","code","request","parentNode","removeChild","insertBefore","nextSibling","head","appendChild","createStylesheet","installedCssChunks","miniCss","data","ids","modules","runtime","j","installedChunkData","promise","import","race","STATE_ATTR","VIEWPORT_POSITION_ATTR","DISABLE_FORCED_ATTRIBUTES_ATTR","IS_PAUSED","AUTOPLAY_BLOCKED","READY_STATE","isVisible","child","offsetParent","LevendeStillbilde","HTMLElement","super","_visibleVideoElement","isPaused","paused","_shouldPlay","_playVideo","_pauseVideo","_updateVisibleVideoElement","observedAttributes","connectedCallback","_setVideoAttributes","_setEventListeners","disconnectedCallback","_disconnecting","_removeEventListeners","attributeChangedCallback","prevValue","newValue","_updatePlayState","_preload","addEventListener","_handleResize","videoElements","_handlePlayChange","removeEventListener","requestAnimationFrame","nextVisibleVideo","find","_shouldPreload","disableForcedAttributes","_this$_visibleVideoEl","readyState","state","viewportPosition","_this$_visibleVideoEl2","_this$_visibleVideoEl3","load","reducedMotion","videoElement","autoplayBlocked","play","catch","console","error","pause","querySelectorAll","val","_classPrivateFieldGet2","has","_classPrivateFieldSet","l","set","_classPrivateFieldGet","_classPrivateMethodInitSpec$4","privateSet","_checkPrivateRedeclaration$5","add","_classPrivateMethodGet$4","receiver","fn","_classPrivateFieldInitSpec$4","privateMap","privateCollection","lengthInPx","endsWith","parseInt","replace","_internalResolve","WeakMap","_internalReject","PromiseWrapper","reason","_classPrivateMethodInitSpec$3","_checkPrivateRedeclaration$4","_classPrivateFieldInitSpec$3","_classPrivateMethodGet$3","directionInfo","left","increment","right","NavigationTypes","clamp$1","min","max","isHidden","scrollLeft","offsetWidth","item","offsetLeft","_classPrivateMethodInitSpec$2","_checkPrivateRedeclaration$3","_classPrivateFieldInitSpec$2","_classPrivateMethodGet$2","ButtonModes","directions","_classPrivateMethodInitSpec$1","_checkPrivateRedeclaration$2","_classPrivateMethodGet$1","StartIndexMixin","Base","_initializing","_autoscrollToStartIndex","_calculateStartIndex","_calculateAutoStartIndex","WeakSet","_super$connectedCallb","_super$disconnectedCa","_positionsUpdatedCallback","_super$_positionsUpda","_autoscrollToStartIndex2","startIndex","_this$getAttribute","_autoscrollToStartIndex3","time","_calculateStartIndex2","scrollToPos","getSnapPosition","setTimeout","scrollingFinished","_calculateAutoStartIndex2","optimalViewingRect","containerLeftHalf","width","items","addStyle","nodeName","css","toLowerCase","getElementById","insertAdjacentHTML","_classPrivateMethodInitSpec","_checkPrivateRedeclaration$1","_classPrivateMethodGet","_classPrivateFieldInitSpec","_checkPrivateRedeclaration","_activeIndex","_updateAttributes","Sveip","_updateContainerPadding","scrollContain","_updateContainerPadding2","_quickUpdateSnapPositions","scrollContainer","containerWidth","paddingLeft","targetLeft","paddingRight","targetRight","gap","getComputedStyle","columnGap","gapWidth","round","parseFloat","style","setProperty","SidePaddingMixin","_intersectionObserver","_mutationObserver","_createIntersectionObserver","_disconnectIntersectionObserver","_handleDOMMutation","_handleIntersectionChange","_updateButtonsBasedOnSnapPoints","_handleButtonClick","scrollRight","scrollWidth","sortedByOffset","sort","b","leftmostItem","rightmostItem","_this$leftButton","_this$rightButton","leftButton","rightButton","btn","direction","includes","preventDefault","scrollToNext","buttonMode","_createIntersectionObserver2","_updateButtonsBasedOnSnapPoints2","getSnapIndexStart","_disconnectIntersectionObserver2","snapIdxChangedCallback","nextIdx","_super$snapIdxChanged","querySelector","MutationObserver","mutationList","observer","some","mutation","_handleDOMMutation2","childList","subtree","index","_this$leftButton2","_this$rightButton2","getSnapIndexEnd","ButtonManagerMixin","_snapPositions","_snapIdx","_observer","_sizeObserver","_disconnectController","_getNextScrollPos","_updateSnapIdx","_this$scrollContainer","AbortController","eventOptions","signal","updateSnapPositions","ResizeObserver","_updateSnapIdx2","_this$scrollContainer2","mutationRecord","removedNode","removedNodes","_removedNode$removeEv","_classPrivateFieldGet3","_classPrivateFieldGet4","abort","handleEvent","_super$handleEvent","dragCompleteCallback","_ref","_this","significant","currentScrollLeft","activeScrollPos","leftOfSnapPoint","rightOfSnapPoint","nextScrollPos","_getNextScrollPos2","_this$items","_this$_positionsUpdat","optRect","scrollSnapAlign","align","pos","findClosestSnapIdx","distances","minIdx","navigation","maxScrollLeft","sorted","_this$scrollContainer3","_this$scrollContainer4","Array","from","children","scrollPos","_directionInfo$direct","_directionInfo$direct2","sortedPositions","firstHiddenItem","testIdx","nextSnapPosition","nextItem","_this$snapIdxChangedC","SnapPositionsMixin","_scrollingFinished","_momentum","_autoScrolling","_dragging","_handleMouseDown","_handleMouseMove","_handleMouseUp","pageX","totalDiffX","prevTime","velX","_handleMouseDown2","_handleMouseMove2","_handleMouseUp2","smooth","scrollTo","behavior","onScrollEnd","once","isAutoScrolling","computedStyle","scrollPaddingLeft","scrollPaddingRight","height","offsetHeight","top","bottom","button","now","cursor","scrollSnapType","diffX","diffTime","pointerEvents","_x","_handleMouseUp3","_this$dragCompleteCal","SideScrollingMixin","indicators","indicator","nextIndex","scrollToIndex","clampedIndex","Bildesveip","args","verticalAlignImages","mediaElements","heights","getBoundingClientRect","maxHeight","marginTop","img","_disconnectLazyLoad","styles","offsetRules","Wrapper","_handleContainerChange","containerIntersection","_updateChildElements","propertyIsEnumerable","globalKey","getBundle","callback","globalThis","cb","q","src","script","async","loadOnce","staticSnowplowRoot","COLORS","debugFactory","namespace","test","patterns","localStorage","getItem","pattern","wildcardIdx","isEnabled","color","hash","charCodeAt","selectColor","lastCalled","diff","log","ViewportEventKind2","EventSchema2","EntitySchema2","createTracker","trackerId","environment","contentContext","bundle","trackerReady","host","getHost","eventQueue","contexts","trackOrQueue","nrknoBundle","NrknoUtils","newTracker","contentContextId","id","context","Content","source","wait","resolveOrTimeout","trackers","whenReady","isResolved","warn","pop","trackSelfDescribingEvent","Snowplow","collect","trackStructuredEvent","trackStructEvent","__APP_NAME__","__APP_VERSION__","safeDefine","elementName","customElements","define","_entryObserver","_classPrivateFieldLooseKey","_exitObserver","_tracker","_defineCustomElements","_createTracker","_handleActiveChanged","_startViewportLogger","_stopViewportLogger","_scrollContainerChildren","AppElement","_get_scrollContainerChildren","_stopViewportLogger2","_startViewportLogger2","_createTracker2","_defineCustomElements2","_classPrivateFieldLoo","_classPrivateFieldLooseBase","schema","EventSchema","StepEvent","current","total","features","JSON","parse","kart","default","process","dataset","selfId","_entries$","_classPrivateFieldLoo2","_classPrivateFieldLoo3","_classPrivateFieldLoo4","ViewportEvent","kind","ViewportEventKind","Entry","_entries$2","_classPrivateFieldLoo5","_classPrivateFieldLoo6","Exit","_classPrivateFieldLoo7","_classPrivateFieldLoo8"],"sourceRoot":""}