{"version":3,"file":"viderenavigasjon-130abc052d24812ccf5e.esm.js","mappings":"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","sources":["webpack://dh-instuliv/./node_modules/@nrk/nrkno-snowplow/node_modules/cuid/index.js","webpack://dh-instuliv/./node_modules/@nrk/nrkno-snowplow/node_modules/cuid/lib/fingerprint.browser.js","webpack://dh-instuliv/./node_modules/@nrk/nrkno-snowplow/node_modules/cuid/lib/getRandomValue.browser.js","webpack://dh-instuliv/./node_modules/@nrk/nrkno-snowplow/node_modules/cuid/lib/pad.js","webpack://dh-instuliv/./node_modules/@nrk/snowplow-web/node_modules/cuid/index.js","webpack://dh-instuliv/./node_modules/@nrk/snowplow-web/node_modules/cuid/lib/fingerprint.browser.js","webpack://dh-instuliv/./node_modules/@nrk/snowplow-web/node_modules/cuid/lib/getRandomValue.browser.js","webpack://dh-instuliv/./node_modules/@nrk/snowplow-web/node_modules/cuid/lib/pad.js","webpack://dh-instuliv/webpack/bootstrap","webpack://dh-instuliv/webpack/runtime/publicPath","webpack://dh-instuliv/./node_modules/@nrk/nrkno-snowplow/node_modules/@nrk/snowplow-web/index.js","webpack://dh-instuliv/./node_modules/@nrk/nrkno-snowplow/build-npm/nrkno-snowplow.package.mjs","webpack://dh-instuliv/./node_modules/@nrk/snowplow-web/index.js","webpack://dh-instuliv/./node_modules/@nrk/dh-snowplow/dist/index.mjs","webpack://dh-instuliv/./node_modules/@nrk/dh-snowplow/dist/shared/dh-snowplow.1ee613bf.mjs","webpack://dh-instuliv/./node_modules/@babel/runtime/helpers/esm/classPrivateFieldGet2.js","webpack://dh-instuliv/./node_modules/@babel/runtime/helpers/esm/assertClassBrand.js","webpack://dh-instuliv/./node_modules/@babel/runtime/helpers/esm/classPrivateFieldSet.js","webpack://dh-instuliv/./node_modules/@babel/runtime/helpers/esm/classApplyDescriptorSet.js","webpack://dh-instuliv/./node_modules/@babel/runtime/helpers/esm/classPrivateFieldGet.js","webpack://dh-instuliv/./node_modules/@babel/runtime/helpers/esm/classApplyDescriptorGet.js","webpack://dh-instuliv/./node_modules/@babel/runtime/helpers/esm/typeof.js","webpack://dh-instuliv/./node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","webpack://dh-instuliv/./node_modules/@babel/runtime/helpers/esm/toPrimitive.js","webpack://dh-instuliv/./node_modules/@babel/runtime/helpers/esm/defineProperty.js","webpack://dh-instuliv/./node_modules/@nrk/dh-basis-common/dist/index.esm.js","webpack://dh-instuliv/./node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js","webpack://dh-instuliv/./node_modules/@nrk/dh-basis-sveip/dist/index.esm.js","webpack://dh-instuliv/./src/modules/viderenavigasjon/components/viderenavigasjon-sveip.ce.ts","webpack://dh-instuliv/./src/modules/viderenavigasjon/client.ts","webpack://dh-instuliv/./src/lib/get-element-tag.ts","webpack://dh-instuliv/./src/modules/viderenavigasjon/config.ts","webpack://dh-instuliv/./src/lib/safe-define.ts"],"sourcesContent":["/**\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","/**\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","// 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](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","__webpack_require__.p = \"https://static.nrk.no/dh/module/instuliv/static/\";","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[\"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[\"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[\"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-0\";\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","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[\"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[\"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[\"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-0\";\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 { 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 assertClassBrand from \"./assertClassBrand.js\";\nexport default function _classPrivateFieldGet2(s, a) {\n return s.get(assertClassBrand(s, a));\n}","export 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}","import classApplyDescriptorSet from \"./classApplyDescriptorSet.js\";\nimport classPrivateFieldGet2 from \"./classPrivateFieldGet2.js\";\nexport default function _classPrivateFieldSet(receiver, privateMap, value) {\n var descriptor = classPrivateFieldGet2(privateMap, receiver);\n classApplyDescriptorSet(receiver, descriptor, value);\n return value;\n}","export default function _classApplyDescriptorSet(receiver, descriptor, value) {\n if (descriptor.set) {\n descriptor.set.call(receiver, value);\n } else {\n if (!descriptor.writable) {\n throw new TypeError(\"attempted to set read only private field\");\n }\n descriptor.value = value;\n }\n}","import classApplyDescriptorGet from \"./classApplyDescriptorGet.js\";\nimport classPrivateFieldGet2 from \"./classPrivateFieldGet2.js\";\nexport default function _classPrivateFieldGet(receiver, privateMap) {\n var descriptor = classPrivateFieldGet2(privateMap, receiver);\n return classApplyDescriptorGet(receiver, descriptor);\n}","export default function _classApplyDescriptorGet(receiver, descriptor) {\n if (descriptor.get) {\n return descriptor.get.call(receiver);\n }\n return descriptor.value;\n}","export 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}","import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nexport default function toPropertyKey(t) {\n var i = toPrimitive(t, \"string\");\n return \"symbol\" == _typeof(i) ? i : i + \"\";\n}","import _typeof from \"./typeof.js\";\nexport default function 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}","import toPropertyKey from \"./toPropertyKey.js\";\nexport default function _defineProperty(obj, key, value) {\n key = toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}","import _defineProperty from '@babel/runtime/helpers/defineProperty';\n\n/* eslint-disable compat/compat */\nfunction getDefaultRoot() {\n /*\n Use document if supported\n IntersectionObserver will otherwise default to top level document,\n and IntersectionObserver will not work as expected in an iframe.\n https://github.com/w3c/IntersectionObserver/issues/372\n */\n\n /*\n Safari does not throw error on root: document, but does not trigger events as expected\n returning null for now until better feature detection is possible\n */\n return null;\n\n /*\n try {\n // eslint-disable-next-line no-new\n new IntersectionObserver(() => {}, { root: document })\n return document\n } catch (e) {\n return null\n }\n */\n}\n\nfunction ownKeys(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","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\nexport default function _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new Promise(function (resolve, reject) {\n var gen = fn.apply(self, args);\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n _next(undefined);\n });\n };\n}","import _classPrivateFieldSet from '@babel/runtime/helpers/classPrivateFieldSet';\nimport _classPrivateFieldGet from '@babel/runtime/helpers/classPrivateFieldGet';\nimport { HorizontalScroll, closest, toArray, toggleAttribute, dispatchEvent, addStyle } from '@nrk/dh-basis-common';\nimport _defineProperty from '@babel/runtime/helpers/defineProperty';\nimport _asyncToGenerator from '@babel/runtime/helpers/asyncToGenerator';\n\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}\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 _momentum, _autoScrolling, _handleMouseDown, _handleMouseMove, _handleMouseUp;\n return _momentum = /*#__PURE__*/new WeakMap(), _autoScrolling = /*#__PURE__*/new WeakMap(), _handleMouseDown = /*#__PURE__*/new WeakMap(), _handleMouseMove = /*#__PURE__*/new WeakMap(), _handleMouseUp = /*#__PURE__*/new WeakMap(), class SideScrollingMixinDef extends Base {\n constructor() {\n var _this;\n super(...arguments);\n _this = this;\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 /**\n * Uses native scrollTo to scroll to a given position. Falls back to a custom scrolling function for\n * browsers that doesn't support smooth scroll behavior (Safari < 15.4)\n *\n * TODO: remove fallback for older browsers once most users have Safari >= 15.5\n *\n * @param left Position to scroll to (scroll-left)\n * @param time duration of the scrolling animation\n * @param callback Callback function once scrolling is complete\n */\n _defineProperty(this, \"scrollToPos\", function (left) {\n var time = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 600;\n var callback = arguments.length > 2 ? arguments[2] : undefined;\n _classPrivateFieldSet(_this, _autoScrolling, _classPrivateFieldGet(_this, _autoScrolling) + 1);\n var elm = _this.scrollContainer;\n var onDone = () => {\n _classPrivateFieldSet(_this, _autoScrolling, _classPrivateFieldGet(_this, _autoScrolling) - 1);\n callback && callback();\n };\n if (elm && !('scrollBehavior' in elm.style && elm.scrollTo)) {\n // Safari < 15.5 doesn't support scroll behaviour smooth so we have implemented a custom scrollTo.\n if (_this._horizontalScroller) {\n // Cancelling existing scroller. On done will not be called automatically.\n _this._horizontalScroller.cancel();\n _classPrivateFieldSet(_this, _autoScrolling, _classPrivateFieldGet(_this, _autoScrolling) - 1);\n delete _this._horizontalScroller;\n }\n\n // Safari 15 does not allow manual scrolling with scroll snap active.\n // Disable scroll snap while manually animating scroll.\n elm.style.scrollSnapType = 'none';\n _this._horizontalScroller = new HorizontalScroll(elm);\n requestAnimationFrame(() => _this._horizontalScroller.to(left, time, () => {\n // Scrolling must be allowed to complete before we reset scroll-snap-type.\n // Otherwise both snap and scrollTo tries to animate the scroll at the same time.\n\n var scrollLeft = elm.scrollLeft;\n elm.style.scrollSnapType = 'x mandatory';\n // Safari <=14 reverts to start after activating scroll snap, so set position manually.\n requestAnimationFrame(() => elm.scrollLeft = scrollLeft);\n delete _this._horizontalScroller;\n onDone();\n }));\n } else if (elm) {\n requestAnimationFrame(() => elm.scrollTo({\n left,\n behavior: time > 0 ? 'smooth' : 'auto'\n }));\n setTimeout(onDone, Math.max(time, 100));\n }\n });\n _classPrivateFieldInitSpec$4(this, _handleMouseDown, {\n writable: true,\n value: event => {\n if (!closest(event.target, '[data-scroll-container]')) {\n return;\n }\n if (closest(event.target, '[data-drag=\"false\"]')) {\n return;\n }\n if (event.button !== 0) {\n return;\n }\n event.preventDefault();\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', _classPrivateFieldGet(this, _handleMouseMove));\n window.addEventListener('mouseup', _classPrivateFieldGet(this, _handleMouseUp));\n }\n });\n _classPrivateFieldInitSpec$4(this, _handleMouseMove, {\n writable: true,\n value: 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 this._dragging = true;\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 });\n _classPrivateFieldInitSpec$4(this, _handleMouseUp, {\n writable: true,\n value: event => {\n var _this$dragCompleteCal;\n var scrollContainer = this.scrollContainer;\n scrollContainer.style.cursor = 'pointer';\n setTimeout(() => {\n // Safari doesn't support scroll behaviour smooth, so we have implemented a custom scrollTo.\n // This must be allowed to complete before we reset scroll-snap-type.\n // Otherwise both snap and scrollTo tries to animate the scroll at the same time.\n scrollContainer.style.scrollSnapType = 'x mandatory';\n }, 600);\n window.removeEventListener('mousemove', _classPrivateFieldGet(this, _handleMouseMove));\n window.removeEventListener('mouseup', _classPrivateFieldGet(this, _handleMouseUp));\n scrollContainer.style.pointerEvents = '';\n (_this$dragCompleteCal = this.dragCompleteCallback) === null || _this$dragCompleteCal === 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 }\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', _classPrivateFieldGet(this, _handleMouseDown));\n }\n disconnectedCallback() {\n var _super$disconnectedCa;\n this.removeEventListener('mousedown', _classPrivateFieldGet(this, _handleMouseDown));\n (_super$disconnectedCa = super.disconnectedCallback) === null || _super$disconnectedCa === void 0 || _super$disconnectedCa.call(this);\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 };\n}\n\nfunction _classPrivateMethodInitSpec$2(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$2(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, _intervalId, _observer, _getNextScrollPos, _updateSnapIdx;\n return _snapPositions = /*#__PURE__*/new WeakMap(), _snapIdx = /*#__PURE__*/new WeakMap(), _intervalId = /*#__PURE__*/new WeakMap(), _observer = /*#__PURE__*/new WeakMap(), _getNextScrollPos = /*#__PURE__*/new WeakSet(), _updateSnapIdx = /*#__PURE__*/new WeakSet(), class SnapPositionsMixinDef extends Base {\n constructor() {\n super(...arguments);\n _classPrivateMethodInitSpec$2(this, _updateSnapIdx);\n _classPrivateMethodInitSpec$2(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, _intervalId, {\n writable: true,\n value: void 0\n });\n _classPrivateFieldInitSpec$3(this, _observer, {\n writable: true,\n value: void 0\n });\n _defineProperty(this, \"updateSnapPositions\", () => {\n var _this$items, _this$_positionsUpdat;\n // Set component width custom property. Can be used for sizing items.\n // This can cause reflow when reading computed style and offsetWidth, but there's no way around it atm.\n // Once container queries and units have wide support it can be removed and replaced by 'qw'.\n this.style.setProperty('--dh-basis-component-width', \"\".concat(this.offsetWidth, \"px\"));\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 connectedCallback() {\n var _super$connectedCallb;\n (_super$connectedCallb = super.connectedCallback) === null || _super$connectedCallb === void 0 || _super$connectedCallb.call(this);\n this.updateSnapPositions();\n window.addEventListener('resize', this.updateSnapPositions);\n _classPrivateFieldSet(this, _intervalId, setInterval(() => _classPrivateMethodGet$2(this, _updateSnapIdx, _updateSnapIdx2).call(this), 100));\n _classPrivateFieldSet(this, _observer, new MutationObserver((mutationList, observer) => {\n if (mutationList.some(mutation => mutation.type === 'childList')) {\n this.updateSnapPositions();\n }\n }));\n _classPrivateFieldGet(this, _observer).observe(this, {\n childList: true,\n subtree: true\n });\n }\n disconnectedCallback() {\n var _classPrivateFieldGet2, _super$disconnectedCa;\n window.removeEventListener('resize', this.updateSnapPositions);\n clearInterval(_classPrivateFieldGet(this, _intervalId));\n (_classPrivateFieldGet2 = _classPrivateFieldGet(this, _observer)) === null || _classPrivateFieldGet2 === void 0 || _classPrivateFieldGet2.disconnect();\n (_super$disconnectedCa = super.disconnectedCallback) === null || _super$disconnectedCa === void 0 || _super$disconnectedCa.call(this);\n }\n\n /* Handle drag complete and snap to next snap position */\n dragCompleteCallback(_ref) {\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$2(this, _getNextScrollPos, _getNextScrollPos2).call(this, activeScrollPos, direction, NavigationTypes.normal);\n } else if (direction === 'left' && rightOfSnapPoint) {\n nextScrollPos = _classPrivateMethodGet$2(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 }\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$2(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$scrollContainer, _this$scrollContainer2;\n return toArray((_this$scrollContainer = (_this$scrollContainer2 = this.scrollContainer) === null || _this$scrollContainer2 === void 0 ? void 0 : _this$scrollContainer2.children) !== null && _this$scrollContainer !== void 0 ? _this$scrollContainer : []);\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$1(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$1(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 WeakMap(), _disconnectIntersectionObserver = /*#__PURE__*/new WeakMap(), _handleDOMMutation = /*#__PURE__*/new WeakMap(), _handleIntersectionChange = /*#__PURE__*/new WeakMap(), _updateButtonsBasedOnSnapPoints = /*#__PURE__*/new WeakSet(), _handleButtonClick = /*#__PURE__*/new WeakMap(), class ButtonManagerMixinDef extends Base {\n constructor() {\n super(...arguments);\n _classPrivateMethodInitSpec$1(this, _updateButtonsBasedOnSnapPoints);\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, _createIntersectionObserver, {\n writable: true,\n value: () => {\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 _classPrivateFieldGet(this, _handleDOMMutation).call(this);\n }\n }));\n _classPrivateFieldGet(this, _mutationObserver).observe(this, {\n childList: true,\n subtree: true\n });\n }\n });\n _classPrivateFieldInitSpec$2(this, _disconnectIntersectionObserver, {\n writable: true,\n value: () => {\n if (_classPrivateFieldGet(this, _intersectionObserver)) {\n _classPrivateFieldGet(this, _intersectionObserver).disconnect();\n }\n if (_classPrivateFieldGet(this, _mutationObserver)) {\n _classPrivateFieldGet(this, _mutationObserver).disconnect();\n }\n }\n });\n _classPrivateFieldInitSpec$2(this, _handleDOMMutation, {\n writable: true,\n value: () => {\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 });\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 toggleAttribute(this.leftButton, 'hidden', entry.intersectionRatio > 0.93 || scrollLeft <= 0);\n }\n if (entry.target === rightmostItem) {\n toggleAttribute(this.rightButton, '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 = closest(e.target, '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 dispatchEvent(this, 'dh-basis-sveip-button-clicked', {\n direction\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 _classPrivateFieldGet(this, _createIntersectionObserver).call(this);\n } else if (this.buttonMode === ButtonModes.snapPoints) {\n _classPrivateMethodGet$1(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 _classPrivateFieldGet(this, _disconnectIntersectionObserver).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$1(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 _updateButtonsBasedOnSnapPoints2(index) {\n toggleAttribute(this.leftButton, 'hidden', index === this.getSnapIndexStart());\n toggleAttribute(this.rightButton, 'hidden', index === this.getSnapIndexEnd());\n }\n}\n\nfunction _classPrivateMethodInitSpec(obj, privateSet) { _checkPrivateRedeclaration$2(obj, privateSet); privateSet.add(obj); }\nfunction _checkPrivateRedeclaration$2(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; }\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 _autoscrollToStartIndex, _calculateStartIndex, _calculateAutoStartIndex;\n return _autoscrollToStartIndex = /*#__PURE__*/new WeakSet(), _calculateStartIndex = /*#__PURE__*/new WeakSet(), _calculateAutoStartIndex = /*#__PURE__*/new WeakSet(), class StartIndexMixinDef extends Base {\n constructor() {\n super(...arguments);\n _classPrivateMethodInitSpec(this, _calculateAutoStartIndex);\n _classPrivateMethodInitSpec(this, _calculateStartIndex);\n _classPrivateMethodInitSpec(this, _autoscrollToStartIndex);\n }\n connectedCallback() {\n var _super$connectedCallb;\n (_super$connectedCallb = super.connectedCallback) === null || _super$connectedCallb === void 0 || _super$connectedCallb.call(this);\n return _classPrivateMethodGet(this, _autoscrollToStartIndex, _autoscrollToStartIndex2).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 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 };\n function _autoscrollToStartIndex2() {\n return _autoscrollToStartIndex3.apply(this, arguments);\n }\n function _autoscrollToStartIndex3() {\n _autoscrollToStartIndex3 = _asyncToGenerator(function* () {\n yield wait(50);\n var startIndex = _classPrivateMethodGet(this, _calculateStartIndex, _calculateStartIndex2).call(this);\n if (typeof startIndex === 'number') {\n this.scrollToPos(this.getSnapPosition(startIndex).scrollLeft, 0);\n\n /* Retry after 200ms. Safari 16 sometimes igonres elm.scrollTo */\n yield wait(200);\n this.scrollToPos(this.getSnapPosition(startIndex).scrollLeft, 0);\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(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\nfunction _classPrivateFieldInitSpec$1(obj, privateMap, value) { _checkPrivateRedeclaration$1(obj, privateMap); privateMap.set(obj, value); }\nfunction _checkPrivateRedeclaration$1(obj, privateCollection) { if (privateCollection.has(obj)) { throw new TypeError(\"Cannot initialize the same private elements twice on an object\"); } }\n\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 not all browsers include the end-side padding in the scrollable area, we use ::before and ::after pseudo elements.\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=236634\n *\n * @template BaseClass {SnapPositionsMixin}\n * @param {BaseClass} Base\n */\nfunction SidePaddingMixin(Base) {\n var _updatePaddingProperties;\n return _updatePaddingProperties = /*#__PURE__*/new WeakMap(), class SidePaddingMixinDef extends Base {\n constructor() {\n super(...arguments);\n _classPrivateFieldInitSpec$1(this, _updatePaddingProperties, {\n writable: true,\n value: () => {\n if (!this.scrollContainer) {\n return;\n }\n var items = this.items;\n var containerWidth = this.scrollContainer.offsetWidth;\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 var paddingLeft = this.getSnapPosition(0).targetLeft;\n var paddingRight = containerWidth - this.getSnapPosition(items.length - 1).targetRight;\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 }\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 _classPrivateFieldGet(this, _updatePaddingProperties).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 _classPrivateFieldGet(this, _updatePaddingProperties).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}\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 _initializing = /*#__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, _initializing, {\n writable: true,\n value: 1\n });\n _classPrivateFieldInitSpec(this, _updateAttributes, {\n writable: true,\n value: () => {\n var indicators = this.indicators;\n if (indicators) {\n toArray(this.indicators.children).forEach((indicator, idx) => toggleAttribute(indicator, '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 (_super$connectedCallb = super.connectedCallback) === null || _super$connectedCallb === void 0 || _super$connectedCallb.call(this);\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 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 // Give the component 500ms to complete initialization before removing the flag.\n // This will allow for the initial layout and scrolling to complete without\n // triggering events\n setTimeout(() => {\n _classPrivateFieldSet(this, _initializing, _classPrivateFieldGet(this, _initializing) - 1);\n }, 500);\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 (!_classPrivateFieldGet(this, _initializing)) {\n dispatchEvent(this, 'dh-basis-sveip-active-changed', {\n nextIndex: nextIdx\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","import Sveip from '@nrk/dh-basis-sveip'\n\nexport class ViderenavigasjonSveip extends Sveip {\n connectedCallback() {\n super.connectedCallback()\n this.#startAnimations()\n }\n\n disconnectedCallback() {\n super.disconnectedCallback()\n for (const animation of this.getAnimations({ subtree: true })) {\n animation.cancel()\n }\n }\n\n #startAnimations() {\n for (const item of this.items) {\n // @ts-ignore\n const timeline = new ViewTimeline({ axis: 'inline', subject: item })\n\n // eslint-disable-next-line compat/compat\n const effect = new KeyframeEffect(\n item,\n [\n { opacity: 0.2, scale: 0.95, easing: 'ease-in-out' },\n { opacity: 1, scale: 1, easing: 'ease-in-out' },\n { opacity: 0.2, scale: 0.95 },\n ],\n { fill: 'both' },\n )\n\n // eslint-disable-next-line compat/compat\n const animasjon = new Animation(effect, timeline)\n\n // @ts-ignore\n animasjon.rangeStart = {\n rangeName: 'cover',\n // eslint-disable-next-line compat/compat\n offset: new CSSMathSum(CSS.percent(50), CSS.px(-330)),\n }\n\n // @ts-ignore\n animasjon.rangeEnd = {\n rangeName: 'cover',\n // eslint-disable-next-line compat/compat\n offset: new CSSMathSum(CSS.percent(50), CSS.px(330)),\n }\n\n const images = item.querySelectorAll('figure img')\n\n // eslint-disable-next-line compat/compat\n const effect2 = new KeyframeEffect(\n images[0],\n [\n { rotate: '0deg', translate: '0px 0px' },\n { rotate: '-1deg', translate: '0px 5px' },\n ],\n { fill: 'both', easing: 'ease-in-out' },\n )\n\n // eslint-disable-next-line compat/compat\n const animasjon2 = new Animation(effect2, timeline)\n\n // @ts-ignore\n animasjon2.rangeStart = {\n rangeName: 'cover',\n // eslint-disable-next-line compat/compat\n offset: new CSSMathSum(CSS.percent(50), CSS.px(-330)),\n }\n\n // @ts-ignore\n animasjon2.rangeEnd = {\n rangeName: 'cover',\n // eslint-disable-next-line compat/compat\n offset: new CSSMathSum(CSS.percent(50), CSS.px(330)),\n }\n\n // eslint-disable-next-line compat/compat\n const effect3 = new KeyframeEffect(\n images[1],\n [\n { rotate: '0deg', translate: '0px 0px' },\n { rotate: '1deg', translate: '0px -5px' },\n ],\n { fill: 'both' },\n )\n\n // eslint-disable-next-line compat/compat\n const animasjon3 = new Animation(effect3, timeline)\n\n // @ts-ignore\n animasjon3.rangeStart = {\n rangeName: 'cover',\n // eslint-disable-next-line compat/compat\n offset: new CSSMathSum(CSS.percent(50), CSS.px(-330)),\n }\n\n // @ts-ignore\n animasjon3.rangeEnd = {\n rangeName: 'cover',\n // eslint-disable-next-line compat/compat\n offset: new CSSMathSum(CSS.percent(50), CSS.px(330)),\n }\n\n animasjon.play()\n animasjon2.play()\n animasjon3.play()\n }\n }\n}\n","import { getElementTag } from '../../lib/get-element-tag.ts'\nimport { config } from './config.ts'\nimport '../../lib/scroll-timeline.js'\nimport { createTracker, Environment } from '@nrk/dh-snowplow'\nimport { safeDefine } from '../../lib/safe-define.ts'\nimport { ViderenavigasjonSveip } from './components/viderenavigasjon-sveip.ce.ts'\nimport { EventSchema, ViewportEventKind } from '@nrk/snowplow-web'\nimport '@nrk/core-design-tokens/dist/color/nrk-color-tokens.css'\nimport './components/viderenavigasjon.module.css'\n\nimport './components/bilder/1_bg.webp'\nimport './components/bilder/1_bg.png'\nimport './components/bilder/1_forgrunn.webp'\nimport './components/bilder/1_forgrunn.png'\n\n/* Sak-2 */\nimport './components/bilder/2_bg.webp'\nimport './components/bilder/2_bg.png'\nimport './components/bilder/2_forgrunn.webp'\nimport './components/bilder/2_forgrunn.png'\n\n/* Sak-2 */\nimport './components/bilder/3_bg.webp'\nimport './components/bilder/3_bg.png'\nimport './components/bilder/3_forgrunn.webp'\nimport './components/bilder/3_forgrunn.png'\n\n/* Sak-2 */\nimport './components/bilder/4_bg.webp'\nimport './components/bilder/4_bg.png'\nimport './components/bilder/4_forgrunn.webp'\nimport './components/bilder/4_forgrunn.png'\n\nconst tag = getElementTag(__APP_NAME__, config.moduleName, __APP_VERSION__)\nclass AppElement extends HTMLElement {\n #tracker\n #entryObserver\n #exitObserver\n\n connectedCallback() {\n safeDefine('viderenavigasjon-sveip', ViderenavigasjonSveip)\n this.#createTracker()\n this.#initABTest()\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 #createTracker() {\n if (process.env.DEV) {\n // @ts-ignore\n import('@nrk/dh-snowplow/mock').then(({ mock }) => mock()).catch(console.error)\n }\n\n this.#tracker = createTracker('dh-instuliv-viderenavigasjon', {\n environment: process.env.ENVIRONMENT as 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 { threshold: [1], rootMargin: '3000px 0px -100% 0px' },\n )\n\n this.#entryObserver.observe(this)\n }\n\n #stopViewportLogger() {\n this.#entryObserver?.disconnect()\n this.#exitObserver?.disconnect()\n }\n\n #initABTest() {\n // AB test label\n let testLabel = false\n const bucket = document.cookie.match('(^|;)\\\\s*_nrkbucket1\\\\s*=\\\\s*([^;]+)')?.pop()\n if (bucket && typeof bucket === 'string') {\n testLabel = Boolean(parseInt(bucket) % 2)\n }\n\n this.#tracker.trackStructuredEvent({\n action: 'DH-TEST-LES-MER-LABEL',\n category: 'instuliv-viderenavigasjon',\n label: testLabel.toString(),\n })\n\n if (testLabel) {\n this.classList.toggle('dh-les-mer-label')\n }\n }\n\n get #scrollContainerChildren() {\n return this.querySelectorAll(`[data-scroll-container] > *`)\n }\n}\n\nif (!customElements.get(tag)) {\n customElements.define(tag, AppElement)\n}\n","export function getElementTag(name: string, entry: string, version: string): string {\n const formattedVersion = version ? `v${version.split('.')[0]}` : ''\n return `${name}-${entry}-${formattedVersion}`\n}\n","export const config = {\n moduleName: 'viderenavigasjon',\n}\n","export function safeDefine(t: string, customElement: CustomElementConstructor) {\n if (customElements.get(t) === undefined) {\n customElements.define(t, customElement)\n }\n}\n"],"names":["fingerprint","pad","getRandomValue","c","blockSize","base","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","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","__webpack_modules__","p","defineProperty","defineProperties","getOwnPropertyDescriptors","getOwnPropertySymbols","prototype","hasOwnProperty","propertyIsEnumerable","staticSnowplowRoot","staticSnowplowMajorVersion","globalKey","getBundle","callback","globalThis","cb","q","push","src","document","querySelector","script","createElement","async","head","appendChild","loadOnce","ViewportEventKind2","EventSchema3","EntitySchema2","APP_ID","createTracker","trackerId","environment","contentContext","bundle","trackerReady","host","getHost","eventQueue","contexts","trackOrQueue","nrknoBundle","NrknoUtils","newTracker","contentContextId","id","context","set","Content","source","promise","wait","Promise","race","then","resolve","setTimeout","resolveOrTimeout","trackers","whenReady","isResolved","console","warn","pop","fn","catch","error","trackSelfDescribingEvent","event","Snowplow","collect","trackStructuredEvent","trackStructEvent","_classPrivateFieldGet2","a","get","e","t","n","has","arguments","TypeError","_classPrivateFieldSet","receiver","privateMap","value","descriptor","call","writable","_classPrivateFieldGet","_typeof","o","Symbol","iterator","constructor","toPropertyKey","i","r","toPrimitive","String","Number","obj","key","enumerable","configurable","toggleAttribute","el","name","boolValue","hasAttribute","setAttribute","removeAttribute","proto","match","closest","Element","matches","msMatchesSelector","webkitMatchesSelector","css","parentElement","addStyle","nodeName","concat","toLowerCase","min","replace","getElementById","insertAdjacentHTML","toArray","nodeList","dispatchEvent","element","detail","ignore","CustomEvent","bubbles","cancelable","createEvent","initCustomEvent","result","easeOutQuint","HorizontalScroll","container","this","cancel","_cancelled","to","left","duration","from","scrollLeft","distance","startTime","loop","currentTime","timeElapsed","requestAnimationFrame","asyncGeneratorStep","gen","reject","_next","_throw","arg","info","done","_classPrivateFieldInitSpec$4","privateCollection","_checkPrivateRedeclaration$5","lengthInPx","endsWith","parseInt","Error","_classPrivateMethodInitSpec$2","privateSet","_checkPrivateRedeclaration$4","add","_classPrivateFieldInitSpec$3","_classPrivateMethodGet$2","directionInfo","increment","right","NavigationTypes","clamp$1","max","isHidden","offsetWidth","item","offsetLeft","_classPrivateFieldInitSpec$2","_checkPrivateRedeclaration$3","_classPrivateMethodGet$1","ButtonModes","directions","ButtonManagerMixin","Base","_intersectionObserver","_mutationObserver","_createIntersectionObserver","_disconnectIntersectionObserver","_handleDOMMutation","_handleIntersectionChange","_updateButtonsBasedOnSnapPoints","_handleButtonClick","WeakMap","WeakSet","super","IntersectionObserver","threshold","root","scrollContainer","items","observe","MutationObserver","mutationList","observer","some","mutation","type","childList","subtree","disconnect","entries","scrollRight","scrollWidth","sortedByOffset","sort","b","leftmostItem","rightmostItem","entry","target","leftButton","intersectionRatio","rightButton","btn","direction","getAttribute","includes","preventDefault","scrollToNext","connectedCallback","_super$connectedCallb","buttonMode","_updateButtonsBasedOnSnapPoints2","getSnapIndexStart","addEventListener","disconnectedCallback","_super$disconnectedCa","removeEventListener","snapIdxChangedCallback","nextIdx","_super$snapIdxChanged","_this$getAttribute","val","index","getSnapIndexEnd","_classPrivateMethodInitSpec","_checkPrivateRedeclaration$2","_classPrivateMethodGet","time","StartIndexMixin","_autoscrollToStartIndex","_calculateStartIndex","_calculateAutoStartIndex","_autoscrollToStartIndex2","startIndex","_autoscrollToStartIndex3","apply","_calculateStartIndex2","scrollToPos","getSnapPosition","args","err","_calculateAutoStartIndex2","optimalViewingRect","containerLeftHalf","width","_classPrivateFieldInitSpec$1","_checkPrivateRedeclaration$1","_classPrivateFieldInitSpec","_checkPrivateRedeclaration","_activeIndex","_initializing","_updateAttributes","Sveip","_updatePaddingProperties","containerWidth","gap","getComputedStyle","columnGap","gapWidth","round","parseFloat","paddingLeft","targetLeft","paddingRight","targetRight","style","setProperty","scrollContain","_quickUpdateSnapPositions","_positionsUpdatedCallback","SidePaddingMixin","_snapPositions","_snapIdx","_intervalId","_observer","_getNextScrollPos","_updateSnapIdx","_this$items","_this$_positionsUpdat","optRect","map","elm","idx","scrollSnapAlign","align","split","updateSnapPositions","setInterval","_updateSnapIdx2","clearInterval","dragCompleteCallback","_ref","significant","currentScrollLeft","activeScrollPos","leftOfSnapPoint","rightOfSnapPoint","nextScrollPos","_getNextScrollPos2","forEach","pos","findClosestSnapIdx","distances","minIdx","indexOf","navigation","maxScrollLeft","sorted","_this$scrollContainer","_this$scrollContainer2","children","scrollPos","_directionInfo$direct","_directionInfo$direct2","sortedPositions","firstHiddenItem","testIdx","nextSnapPosition","nextItem","_this$snapIdxChangedC","SnapPositionsMixin","_momentum","_autoScrolling","_handleMouseDown","_handleMouseMove","_handleMouseUp","_this","pageX","totalDiffX","prevTime","velX","onDone","scrollTo","behavior","_horizontalScroller","scrollSnapType","button","now","cursor","diffX","diffTime","_dragging","pointerEvents","_this$dragCompleteCal","isAutoScrolling","computedStyle","scrollPaddingLeft","scrollPaddingRight","height","offsetHeight","top","bottom","SideScrollingMixin","HTMLElement","indicators","indicator","child","nextIndex","scrollToIndex","clampedIndex","_startAnimations","_classPrivateFieldLooseKey","ViderenavigasjonSveip","_startAnimations2","_classPrivateFieldLooseBase","animation","getAnimations","timeline","ViewTimeline","axis","subject","effect","KeyframeEffect","opacity","scale","easing","fill","animasjon","Animation","rangeStart","rangeName","offset","CSSMathSum","CSS","percent","px","rangeEnd","images","querySelectorAll","effect2","rotate","translate","animasjon2","effect3","animasjon3","play","tag","__APP_NAME__","version","__APP_VERSION__","_tracker","_entryObserver","_exitObserver","_createTracker","_handleActiveChanged","_startViewportLogger","_stopViewportLogger","_initABTest","_scrollContainerChildren","AppElement","_get_scrollContainerChildren","_initABTest2","_stopViewportLogger2","_startViewportLogger2","_createTracker2","schema","EventSchema","StepEvent","data","current","total","customElement","customElements","define","process","dataset","selfId","_entries$","isIntersecting","ViewportEvent","kind","ViewportEventKind","Entry","_entries$2","Exit","rootMargin","_classPrivateFieldLoo","_classPrivateFieldLoo2","_document$cookie$matc","testLabel","bucket","cookie","Boolean","action","category","label","classList","toggle"],"sourceRoot":""}