{"version":3,"file":"cookie-banner.js","sources":["../node_modules/lit-html/development/directive.js","../node_modules/lit-html/development/directives/unsafe-html.js","../node_modules/lit-html/development/directive-helpers.js","../node_modules/lit-html/development/directives/repeat.js","../src/services/cookieService.ts","../src/components/cookie-banner/models.ts","../src/assets/close_icon.svg","../src/components/cookie-banner/cookie-settings.tsx","../src/services/tracking/models.ts","../src/services/tracking/tracking-service.ts","../src/components/cookie-banner/cookie-banner.tsx","../src/components/cookie-banner/cookie-overlay.tsx","../src/cookie-banner.ts"],"sourcesContent":["/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nexport const PartType = {\n ATTRIBUTE: 1,\n CHILD: 2,\n PROPERTY: 3,\n BOOLEAN_ATTRIBUTE: 4,\n EVENT: 5,\n ELEMENT: 6,\n};\n/**\n * Creates a user-facing directive function from a Directive class. This\n * function has the same parameters as the directive's render() method.\n */\nexport const directive = (c) => (...values) => ({\n // This property needs to remain unminified.\n ['_$litDirective$']: c,\n values,\n});\n/**\n * Base class for creating custom directives. Users should extend this class,\n * implement `render` and/or `update`, and then pass their subclass to\n * `directive`.\n */\nexport class Directive {\n constructor(_partInfo) { }\n // See comment in Disconnectable interface for why this is a getter\n get _$isConnected() {\n return this._$parent._$isConnected;\n }\n /** @internal */\n _$initialize(part, parent, attributeIndex) {\n this.__part = part;\n this._$parent = parent;\n this.__attributeIndex = attributeIndex;\n }\n /** @internal */\n _$resolve(part, props) {\n return this.update(part, props);\n }\n update(_part, props) {\n return this.render(...props);\n }\n}\n//# sourceMappingURL=directive.js.map","/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nimport { nothing, noChange } from '../lit-html.js';\nimport { directive, Directive, PartType } from '../directive.js';\nconst HTML_RESULT = 1;\nexport class UnsafeHTMLDirective extends Directive {\n constructor(partInfo) {\n super(partInfo);\n this._value = nothing;\n if (partInfo.type !== PartType.CHILD) {\n throw new Error(`${this.constructor.directiveName}() can only be used in child bindings`);\n }\n }\n render(value) {\n if (value === nothing || value == null) {\n this._templateResult = undefined;\n return (this._value = value);\n }\n if (value === noChange) {\n return value;\n }\n if (typeof value != 'string') {\n throw new Error(`${this.constructor.directiveName}() called with a non-string value`);\n }\n if (value === this._value) {\n return this._templateResult;\n }\n this._value = value;\n const strings = [value];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n strings.raw = strings;\n // WARNING: impersonating a TemplateResult like this is extremely\n // dangerous. Third-party directives should not do this.\n return (this._templateResult = {\n // Cast to a known set of integers that satisfy ResultType so that we\n // don't have to export ResultType and possibly encourage this pattern.\n // This property needs to remain unminified.\n ['_$litType$']: this.constructor\n .resultType,\n strings,\n values: [],\n });\n }\n}\nUnsafeHTMLDirective.directiveName = 'unsafeHTML';\nUnsafeHTMLDirective.resultType = HTML_RESULT;\n/**\n * Renders the result as HTML, rather than text.\n *\n * The values `undefined`, `null`, and `nothing`, will all result in no content\n * (empty string) being rendered.\n *\n * Note, this is unsafe to use with any user-provided input that hasn't been\n * sanitized or escaped, as it may lead to cross-site-scripting\n * vulnerabilities.\n */\nexport const unsafeHTML = directive(UnsafeHTMLDirective);\n//# sourceMappingURL=unsafe-html.js.map","/**\n * @license\n * Copyright 2020 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nvar _a, _b;\nimport { _$LH } from './lit-html.js';\nconst { _ChildPart: ChildPart } = _$LH;\nconst ENABLE_SHADYDOM_NOPATCH = true;\nconst wrap = ENABLE_SHADYDOM_NOPATCH &&\n ((_a = window.ShadyDOM) === null || _a === void 0 ? void 0 : _a.inUse) &&\n ((_b = window.ShadyDOM) === null || _b === void 0 ? void 0 : _b.noPatch) === true\n ? window.ShadyDOM.wrap\n : (node) => node;\n/**\n * Tests if a value is a primitive value.\n *\n * See https://tc39.github.io/ecma262/#sec-typeof-operator\n */\nexport const isPrimitive = (value) => value === null || (typeof value != 'object' && typeof value != 'function');\nexport const TemplateResultType = {\n HTML: 1,\n SVG: 2,\n};\n/**\n * Tests if a value is a TemplateResult.\n */\nexport const isTemplateResult = (value, type) => type === undefined\n ? // This property needs to remain unminified.\n (value === null || value === void 0 ? void 0 : value['_$litType$']) !== undefined\n : (value === null || value === void 0 ? void 0 : value['_$litType$']) === type;\n/**\n * Tests if a value is a DirectiveResult.\n */\nexport const isDirectiveResult = (value) => \n// This property needs to remain unminified.\n(value === null || value === void 0 ? void 0 : value['_$litDirective$']) !== undefined;\n/**\n * Retrieves the Directive class for a DirectiveResult\n */\nexport const getDirectiveClass = (value) => \n// This property needs to remain unminified.\nvalue === null || value === void 0 ? void 0 : value['_$litDirective$'];\n/**\n * Tests whether a part has only a single-expression with no strings to\n * interpolate between.\n *\n * Only AttributePart and PropertyPart can have multiple expressions.\n * Multi-expression parts have a `strings` property and single-expression\n * parts do not.\n */\nexport const isSingleExpression = (part) => part.strings === undefined;\nconst createMarker = () => document.createComment('');\n/**\n * Inserts a ChildPart into the given container ChildPart's DOM, either at the\n * end of the container ChildPart, or before the optional `refPart`.\n *\n * This does not add the part to the containerPart's committed value. That must\n * be done by callers.\n *\n * @param containerPart Part within which to add the new ChildPart\n * @param refPart Part before which to add the new ChildPart; when omitted the\n * part added to the end of the `containerPart`\n * @param part Part to insert, or undefined to create a new part\n */\nexport const insertPart = (containerPart, refPart, part) => {\n var _a;\n const container = wrap(containerPart._$startNode).parentNode;\n const refNode = refPart === undefined ? containerPart._$endNode : refPart._$startNode;\n if (part === undefined) {\n const startNode = wrap(container).insertBefore(createMarker(), refNode);\n const endNode = wrap(container).insertBefore(createMarker(), refNode);\n part = new ChildPart(startNode, endNode, containerPart, containerPart.options);\n }\n else {\n const endNode = wrap(part._$endNode).nextSibling;\n const oldParent = part._$parent;\n const parentChanged = oldParent !== containerPart;\n if (parentChanged) {\n (_a = part._$reparentDisconnectables) === null || _a === void 0 ? void 0 : _a.call(part, containerPart);\n // Note that although `_$reparentDisconnectables` updates the part's\n // `_$parent` reference after unlinking from its current parent, that\n // method only exists if Disconnectables are present, so we need to\n // unconditionally set it here\n part._$parent = containerPart;\n // Since the _$isConnected getter is somewhat costly, only\n // read it once we know the subtree has directives that need\n // to be notified\n let newConnectionState;\n if (part._$notifyConnectionChanged !== undefined &&\n (newConnectionState = containerPart._$isConnected) !==\n oldParent._$isConnected) {\n part._$notifyConnectionChanged(newConnectionState);\n }\n }\n if (endNode !== refNode || parentChanged) {\n let start = part._$startNode;\n while (start !== endNode) {\n const n = wrap(start).nextSibling;\n wrap(container).insertBefore(start, refNode);\n start = n;\n }\n }\n }\n return part;\n};\n/**\n * Sets the value of a Part.\n *\n * Note that this should only be used to set/update the value of user-created\n * parts (i.e. those created using `insertPart`); it should not be used\n * by directives to set the value of the directive's container part. Directives\n * should return a value from `update`/`render` to update their part state.\n *\n * For directives that require setting their part value asynchronously, they\n * should extend `AsyncDirective` and call `this.setValue()`.\n *\n * @param part Part to set\n * @param value Value to set\n * @param index For `AttributePart`s, the index to set\n * @param directiveParent Used internally; should not be set by user\n */\nexport const setChildPartValue = (part, value, directiveParent = part) => {\n part._$setValue(value, directiveParent);\n return part;\n};\n// A sentinal value that can never appear as a part value except when set by\n// live(). Used to force a dirty-check to fail and cause a re-render.\nconst RESET_VALUE = {};\n/**\n * Sets the committed value of a ChildPart directly without triggering the\n * commit stage of the part.\n *\n * This is useful in cases where a directive needs to update the part such\n * that the next update detects a value change or not. When value is omitted,\n * the next update will be guaranteed to be detected as a change.\n *\n * @param part\n * @param value\n */\nexport const setCommittedValue = (part, value = RESET_VALUE) => (part._$committedValue = value);\n/**\n * Returns the committed value of a ChildPart.\n *\n * The committed value is used for change detection and efficient updates of\n * the part. It can differ from the value set by the template or directive in\n * cases where the template value is transformed before being commited.\n *\n * - `TemplateResult`s are committed as a `TemplateInstance`\n * - Iterables are committed as `Array`\n * - All other types are committed as the template value or value returned or\n * set by a directive.\n *\n * @param part\n */\nexport const getCommittedValue = (part) => part._$committedValue;\n/**\n * Removes a ChildPart from the DOM, including any of its content.\n *\n * @param part The Part to remove\n */\nexport const removePart = (part) => {\n var _a;\n (_a = part._$notifyConnectionChanged) === null || _a === void 0 ? void 0 : _a.call(part, false, true);\n let start = part._$startNode;\n const end = wrap(part._$endNode).nextSibling;\n while (start !== end) {\n const n = wrap(start).nextSibling;\n wrap(start).remove();\n start = n;\n }\n};\nexport const clearPart = (part) => {\n part._$clear();\n};\n//# sourceMappingURL=directive-helpers.js.map","/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nimport { noChange } from '../lit-html.js';\nimport { directive, Directive, PartType } from '../directive.js';\nimport { insertPart, getCommittedValue, removePart, setCommittedValue, setChildPartValue, } from '../directive-helpers.js';\n// Helper for generating a map of array item to its index over a subset\n// of an array (used to lazily generate `newKeyToIndexMap` and\n// `oldKeyToIndexMap`)\nconst generateMap = (list, start, end) => {\n const map = new Map();\n for (let i = start; i <= end; i++) {\n map.set(list[i], i);\n }\n return map;\n};\nclass RepeatDirective extends Directive {\n constructor(partInfo) {\n super(partInfo);\n if (partInfo.type !== PartType.CHILD) {\n throw new Error('repeat() can only be used in text expressions');\n }\n }\n _getValuesAndKeys(items, keyFnOrTemplate, template) {\n let keyFn;\n if (template === undefined) {\n template = keyFnOrTemplate;\n }\n else if (keyFnOrTemplate !== undefined) {\n keyFn = keyFnOrTemplate;\n }\n const keys = [];\n const values = [];\n let index = 0;\n for (const item of items) {\n keys[index] = keyFn ? keyFn(item, index) : index;\n values[index] = template(item, index);\n index++;\n }\n return {\n values,\n keys,\n };\n }\n render(items, keyFnOrTemplate, template) {\n return this._getValuesAndKeys(items, keyFnOrTemplate, template).values;\n }\n update(containerPart, [items, keyFnOrTemplate, template]) {\n var _a;\n // Old part & key lists are retrieved from the last update (which may\n // be primed by hydration)\n const oldParts = getCommittedValue(containerPart);\n const { values: newValues, keys: newKeys } = this._getValuesAndKeys(items, keyFnOrTemplate, template);\n // We check that oldParts, the committed value, is an Array as an\n // indicator that the previous value came from a repeat() call. If\n // oldParts is not an Array then this is the first render and we return\n // an array for lit-html's array handling to render, and remember the\n // keys.\n if (!Array.isArray(oldParts)) {\n this._itemKeys = newKeys;\n return newValues;\n }\n // In SSR hydration it's possible for oldParts to be an arrray but for us\n // to not have item keys because the update() hasn't run yet. We set the\n // keys to an empty array. This will cause all oldKey/newKey comparisons\n // to fail and execution to fall to the last nested brach below which\n // reuses the oldPart.\n const oldKeys = ((_a = this._itemKeys) !== null && _a !== void 0 ? _a : (this._itemKeys = []));\n // New part list will be built up as we go (either reused from\n // old parts or created for new keys in this update). This is\n // saved in the above cache at the end of the update.\n const newParts = [];\n // Maps from key to index for current and previous update; these\n // are generated lazily only when needed as a performance\n // optimization, since they are only required for multiple\n // non-contiguous changes in the list, which are less common.\n let newKeyToIndexMap;\n let oldKeyToIndexMap;\n // Head and tail pointers to old parts and new values\n let oldHead = 0;\n let oldTail = oldParts.length - 1;\n let newHead = 0;\n let newTail = newValues.length - 1;\n // Overview of O(n) reconciliation algorithm (general approach\n // based on ideas found in ivi, vue, snabbdom, etc.):\n //\n // * We start with the list of old parts and new values (and\n // arrays of their respective keys), head/tail pointers into\n // each, and we build up the new list of parts by updating\n // (and when needed, moving) old parts or creating new ones.\n // The initial scenario might look like this (for brevity of\n // the diagrams, the numbers in the array reflect keys\n // associated with the old parts or new values, although keys\n // and parts/values are actually stored in parallel arrays\n // indexed using the same head/tail pointers):\n //\n // oldHead v v oldTail\n // oldKeys: [0, 1, 2, 3, 4, 5, 6]\n // newParts: [ , , , , , , ]\n // newKeys: [0, 2, 1, 4, 3, 7, 6] <- reflects the user's new\n // item order\n // newHead ^ ^ newTail\n //\n // * Iterate old & new lists from both sides, updating,\n // swapping, or removing parts at the head/tail locations\n // until neither head nor tail can move.\n //\n // * Example below: keys at head pointers match, so update old\n // part 0 in-place (no need to move it) and record part 0 in\n // the `newParts` list. The last thing we do is advance the\n // `oldHead` and `newHead` pointers (will be reflected in the\n // next diagram).\n //\n // oldHead v v oldTail\n // oldKeys: [0, 1, 2, 3, 4, 5, 6]\n // newParts: [0, , , , , , ] <- heads matched: update 0\n // newKeys: [0, 2, 1, 4, 3, 7, 6] and advance both oldHead\n // & newHead\n // newHead ^ ^ newTail\n //\n // * Example below: head pointers don't match, but tail\n // pointers do, so update part 6 in place (no need to move\n // it), and record part 6 in the `newParts` list. Last,\n // advance the `oldTail` and `oldHead` pointers.\n //\n // oldHead v v oldTail\n // oldKeys: [0, 1, 2, 3, 4, 5, 6]\n // newParts: [0, , , , , , 6] <- tails matched: update 6\n // newKeys: [0, 2, 1, 4, 3, 7, 6] and advance both oldTail\n // & newTail\n // newHead ^ ^ newTail\n //\n // * If neither head nor tail match; next check if one of the\n // old head/tail items was removed. We first need to generate\n // the reverse map of new keys to index (`newKeyToIndexMap`),\n // which is done once lazily as a performance optimization,\n // since we only hit this case if multiple non-contiguous\n // changes were made. Note that for contiguous removal\n // anywhere in the list, the head and tails would advance\n // from either end and pass each other before we get to this\n // case and removals would be handled in the final while loop\n // without needing to generate the map.\n //\n // * Example below: The key at `oldTail` was removed (no longer\n // in the `newKeyToIndexMap`), so remove that part from the\n // DOM and advance just the `oldTail` pointer.\n //\n // oldHead v v oldTail\n // oldKeys: [0, 1, 2, 3, 4, 5, 6]\n // newParts: [0, , , , , , 6] <- 5 not in new map: remove\n // newKeys: [0, 2, 1, 4, 3, 7, 6] 5 and advance oldTail\n // newHead ^ ^ newTail\n //\n // * Once head and tail cannot move, any mismatches are due to\n // either new or moved items; if a new key is in the previous\n // \"old key to old index\" map, move the old part to the new\n // location, otherwise create and insert a new part. Note\n // that when moving an old part we null its position in the\n // oldParts array if it lies between the head and tail so we\n // know to skip it when the pointers get there.\n //\n // * Example below: neither head nor tail match, and neither\n // were removed; so find the `newHead` key in the\n // `oldKeyToIndexMap`, and move that old part's DOM into the\n // next head position (before `oldParts[oldHead]`). Last,\n // null the part in the `oldPart` array since it was\n // somewhere in the remaining oldParts still to be scanned\n // (between the head and tail pointers) so that we know to\n // skip that old part on future iterations.\n //\n // oldHead v v oldTail\n // oldKeys: [0, 1, -, 3, 4, 5, 6]\n // newParts: [0, 2, , , , , 6] <- stuck: update & move 2\n // newKeys: [0, 2, 1, 4, 3, 7, 6] into place and advance\n // newHead\n // newHead ^ ^ newTail\n //\n // * Note that for moves/insertions like the one above, a part\n // inserted at the head pointer is inserted before the\n // current `oldParts[oldHead]`, and a part inserted at the\n // tail pointer is inserted before `newParts[newTail+1]`. The\n // seeming asymmetry lies in the fact that new parts are\n // moved into place outside in, so to the right of the head\n // pointer are old parts, and to the right of the tail\n // pointer are new parts.\n //\n // * We always restart back from the top of the algorithm,\n // allowing matching and simple updates in place to\n // continue...\n //\n // * Example below: the head pointers once again match, so\n // simply update part 1 and record it in the `newParts`\n // array. Last, advance both head pointers.\n //\n // oldHead v v oldTail\n // oldKeys: [0, 1, -, 3, 4, 5, 6]\n // newParts: [0, 2, 1, , , , 6] <- heads matched: update 1\n // newKeys: [0, 2, 1, 4, 3, 7, 6] and advance both oldHead\n // & newHead\n // newHead ^ ^ newTail\n //\n // * As mentioned above, items that were moved as a result of\n // being stuck (the final else clause in the code below) are\n // marked with null, so we always advance old pointers over\n // these so we're comparing the next actual old value on\n // either end.\n //\n // * Example below: `oldHead` is null (already placed in\n // newParts), so advance `oldHead`.\n //\n // oldHead v v oldTail\n // oldKeys: [0, 1, -, 3, 4, 5, 6] <- old head already used:\n // newParts: [0, 2, 1, , , , 6] advance oldHead\n // newKeys: [0, 2, 1, 4, 3, 7, 6]\n // newHead ^ ^ newTail\n //\n // * Note it's not critical to mark old parts as null when they\n // are moved from head to tail or tail to head, since they\n // will be outside the pointer range and never visited again.\n //\n // * Example below: Here the old tail key matches the new head\n // key, so the part at the `oldTail` position and move its\n // DOM to the new head position (before `oldParts[oldHead]`).\n // Last, advance `oldTail` and `newHead` pointers.\n //\n // oldHead v v oldTail\n // oldKeys: [0, 1, -, 3, 4, 5, 6]\n // newParts: [0, 2, 1, 4, , , 6] <- old tail matches new\n // newKeys: [0, 2, 1, 4, 3, 7, 6] head: update & move 4,\n // advance oldTail & newHead\n // newHead ^ ^ newTail\n //\n // * Example below: Old and new head keys match, so update the\n // old head part in place, and advance the `oldHead` and\n // `newHead` pointers.\n //\n // oldHead v oldTail\n // oldKeys: [0, 1, -, 3, 4, 5, 6]\n // newParts: [0, 2, 1, 4, 3, ,6] <- heads match: update 3\n // newKeys: [0, 2, 1, 4, 3, 7, 6] and advance oldHead &\n // newHead\n // newHead ^ ^ newTail\n //\n // * Once the new or old pointers move past each other then all\n // we have left is additions (if old list exhausted) or\n // removals (if new list exhausted). Those are handled in the\n // final while loops at the end.\n //\n // * Example below: `oldHead` exceeded `oldTail`, so we're done\n // with the main loop. Create the remaining part and insert\n // it at the new head position, and the update is complete.\n //\n // (oldHead > oldTail)\n // oldKeys: [0, 1, -, 3, 4, 5, 6]\n // newParts: [0, 2, 1, 4, 3, 7 ,6] <- create and insert 7\n // newKeys: [0, 2, 1, 4, 3, 7, 6]\n // newHead ^ newTail\n //\n // * Note that the order of the if/else clauses is not\n // important to the algorithm, as long as the null checks\n // come first (to ensure we're always working on valid old\n // parts) and that the final else clause comes last (since\n // that's where the expensive moves occur). The order of\n // remaining clauses is is just a simple guess at which cases\n // will be most common.\n //\n // * Note, we could calculate the longest\n // increasing subsequence (LIS) of old items in new position,\n // and only move those not in the LIS set. However that costs\n // O(nlogn) time and adds a bit more code, and only helps\n // make rare types of mutations require fewer moves. The\n // above handles removes, adds, reversal, swaps, and single\n // moves of contiguous items in linear time, in the minimum\n // number of moves. As the number of multiple moves where LIS\n // might help approaches a random shuffle, the LIS\n // optimization becomes less helpful, so it seems not worth\n // the code at this point. Could reconsider if a compelling\n // case arises.\n while (oldHead <= oldTail && newHead <= newTail) {\n if (oldParts[oldHead] === null) {\n // `null` means old part at head has already been used\n // below; skip\n oldHead++;\n }\n else if (oldParts[oldTail] === null) {\n // `null` means old part at tail has already been used\n // below; skip\n oldTail--;\n }\n else if (oldKeys[oldHead] === newKeys[newHead]) {\n // Old head matches new head; update in place\n newParts[newHead] = setChildPartValue(oldParts[oldHead], newValues[newHead]);\n oldHead++;\n newHead++;\n }\n else if (oldKeys[oldTail] === newKeys[newTail]) {\n // Old tail matches new tail; update in place\n newParts[newTail] = setChildPartValue(oldParts[oldTail], newValues[newTail]);\n oldTail--;\n newTail--;\n }\n else if (oldKeys[oldHead] === newKeys[newTail]) {\n // Old head matches new tail; update and move to new tail\n newParts[newTail] = setChildPartValue(oldParts[oldHead], newValues[newTail]);\n insertPart(containerPart, newParts[newTail + 1], oldParts[oldHead]);\n oldHead++;\n newTail--;\n }\n else if (oldKeys[oldTail] === newKeys[newHead]) {\n // Old tail matches new head; update and move to new head\n newParts[newHead] = setChildPartValue(oldParts[oldTail], newValues[newHead]);\n insertPart(containerPart, oldParts[oldHead], oldParts[oldTail]);\n oldTail--;\n newHead++;\n }\n else {\n if (newKeyToIndexMap === undefined) {\n // Lazily generate key-to-index maps, used for removals &\n // moves below\n newKeyToIndexMap = generateMap(newKeys, newHead, newTail);\n oldKeyToIndexMap = generateMap(oldKeys, oldHead, oldTail);\n }\n if (!newKeyToIndexMap.has(oldKeys[oldHead])) {\n // Old head is no longer in new list; remove\n removePart(oldParts[oldHead]);\n oldHead++;\n }\n else if (!newKeyToIndexMap.has(oldKeys[oldTail])) {\n // Old tail is no longer in new list; remove\n removePart(oldParts[oldTail]);\n oldTail--;\n }\n else {\n // Any mismatches at this point are due to additions or\n // moves; see if we have an old part we can reuse and move\n // into place\n const oldIndex = oldKeyToIndexMap.get(newKeys[newHead]);\n const oldPart = oldIndex !== undefined ? oldParts[oldIndex] : null;\n if (oldPart === null) {\n // No old part for this value; create a new one and\n // insert it\n const newPart = insertPart(containerPart, oldParts[oldHead]);\n setChildPartValue(newPart, newValues[newHead]);\n newParts[newHead] = newPart;\n }\n else {\n // Reuse old part\n newParts[newHead] = setChildPartValue(oldPart, newValues[newHead]);\n insertPart(containerPart, oldParts[oldHead], oldPart);\n // This marks the old part as having been used, so that\n // it will be skipped in the first two checks above\n oldParts[oldIndex] = null;\n }\n newHead++;\n }\n }\n }\n // Add parts for any remaining new values\n while (newHead <= newTail) {\n // For all remaining additions, we insert before last new\n // tail, since old pointers are no longer valid\n const newPart = insertPart(containerPart, newParts[newTail + 1]);\n setChildPartValue(newPart, newValues[newHead]);\n newParts[newHead++] = newPart;\n }\n // Remove any remaining unused old parts\n while (oldHead <= oldTail) {\n const oldPart = oldParts[oldHead++];\n if (oldPart !== null) {\n removePart(oldPart);\n }\n }\n // Save order of new parts for next round\n this._itemKeys = newKeys;\n // Directly set part value, bypassing it's dirty-checking\n setCommittedValue(containerPart, newParts);\n return noChange;\n }\n}\n/**\n * A directive that repeats a series of values (usually `TemplateResults`)\n * generated from an iterable, and updates those items efficiently when the\n * iterable changes based on user-provided `keys` associated with each item.\n *\n * Note that if a `keyFn` is provided, strict key-to-DOM mapping is maintained,\n * meaning previous DOM for a given key is moved into the new position if\n * needed, and DOM will never be reused with values for different keys (new DOM\n * will always be created for new keys). This is generally the most efficient\n * way to use `repeat` since it performs minimum unnecessary work for insertions\n * and removals.\n *\n * The `keyFn` takes two parameters, the item and its index, and returns a unique key value.\n *\n * ```js\n * html`\n *
    \n * ${repeat(this.items, (item) => item.id, (item, index) => {\n * return html`
  1. ${index}: ${item.name}
  2. `;\n * })}\n *
\n * `\n * ```\n *\n * **Important**: If providing a `keyFn`, keys *must* be unique for all items in a\n * given call to `repeat`. The behavior when two or more items have the same key\n * is undefined.\n *\n * If no `keyFn` is provided, this directive will perform similar to mapping\n * items to values, and DOM will be reused against potentially different items.\n */\nexport const repeat = directive(RepeatDirective);\n//# sourceMappingURL=repeat.js.map","import {CookieDescription} from \"../components/cookie-banner/models\";\nimport {conf} from \"../config\";\n\nclass CookieService {\n\n private cookieDescriptions: CookieDescription[] = [];\n private COOKIE_BANNER_LAST_SEEN_KEY = 'NY_COOKIE_BANNER_LAST_SEEN';\n\n private cookieSubscribers: any = [];\n\n openCookieSettings() {\n window.dispatchEvent(new CustomEvent('ny-menu-closed', {detail: this as CookieService}));\n window.dispatchEvent(new CustomEvent('ny-cookie-settings-open'));\n }\n\n subscribeForCookies(callback: (cookieData: CookieDescription[])=>void) {\n this.cookieSubscribers.push(callback);\n\n if (this.cookieDescriptions.length > 0) {\n callback(this.cookieDescriptions)\n }\n }\n\n notifyCookieSubscribers(cookieData: CookieDescription[]){\n this.cookieDescriptions =cookieData;\n this.cookieSubscribers.forEach((callback: any)=> callback(cookieData))\n }\n\n private dispatchCookiesUpdated(cd: CookieDescription[]) {\n window.dispatchEvent(new CustomEvent('ny-cookies-updated', {detail: cd}));\n }\n\n getLastSeen() {\n const dateString = localStorage.getItem(this.COOKIE_BANNER_LAST_SEEN_KEY);\n if (!dateString) {return null}\n return new Date(dateString);\n }\n\n setLastSeen(date: Date) {\n localStorage.setItem(this.COOKIE_BANNER_LAST_SEEN_KEY, date.toISOString());\n }\n\n checkPermission(key: string) {\n return this.getCookieValueForKey(key);\n }\n\n acceptAllCookies() {\n for (const cd of this.cookieDescriptions) {\n this.setCookieValueForKey(cd.key, true)\n }\n this.updateCookiesWithLocalStoreValues();\n this.setLastSeen(new Date());\n this.dispatchCookiesUpdated(this.cookieDescriptions);\n }\n\n acceptRequiredCookies() {\n for (const cd of this.cookieDescriptions) {\n this.setCookieValueForKey(cd.key, cd.isRequired)\n }\n this.updateCookiesWithLocalStoreValues()\n this.setLastSeen(new Date());\n this.dispatchCookiesUpdated(this.cookieDescriptions);\n }\n\n updateCookies(cookieDescriptions: CookieDescription[]) {\n for (const cd of cookieDescriptions) {\n this.setCookieValueForKey(cd.key, cd.userPermission)\n }\n this.updateCookiesWithLocalStoreValues();\n this.dispatchCookiesUpdated(this.cookieDescriptions);\n }\n\n private getCookieValueForKey(key: string) {\n return (localStorage.getItem(key) === \"true\")\n }\n\n private setCookieValueForKey(key: string, value: boolean) {\n localStorage.setItem(key, value ? \"true\" : \"false\")\n }\n\n getCookieDescription(key: string) {\n return this.cookieDescriptions.find(it => it.key === key);\n }\n\n acceptCookie(key: string) {\n for (const cookieDescription of this.cookieDescriptions) {\n if (cookieDescription.key === key) {\n cookieDescription.userPermission = true;\n }\n }\n this.updateCookies(this.cookieDescriptions);\n }\n\n async loadCookieDescriptions(contextValue: string) {\n try {\n const res = await fetch(`${conf.assetServiceUrl}/cookies/?context=${contextValue}`);\n if (res.ok) {\n this.cookieDescriptions = await res.json();\n this.updateCookiesWithLocalStoreValues();\n }\n } catch (e) {\n console.error('error loading cookies: ', e);\n }\n return this.cookieDescriptions;\n }\n\n private updateCookiesWithLocalStoreValues() {\n this.cookieDescriptions = this.cookieDescriptions.map(cd => {\n cd.userPermission = !cd.isRequired ? this.getCookieValueForKey(cd.key) : true;\n return cd\n });\n }\n}\n\nexport const cookieService = new CookieService();\n","export const DISABLE_OPT_IN_PARAM = 'disableOptIn'\n\nexport class CookieDescription {\n public key: string;\n public isRequired: boolean;\n public headlineText: string;\n public descriptionText: string;\n public overlayHeadlineText: string;\n public overlayDescriptionText: string;\n public overlayButtonText: string;\n public infoUrl: string;\n public termsOfUseUrl: string;\n public userPermission: boolean;\n\n constructor(values: any) {\n this.key = values.key;\n this.isRequired = values.isRequired;\n this.headlineText = values.headlineText;\n this.descriptionText = values.descriptionText;\n this.overlayHeadlineText = values.overlayHeadlineText;\n this.overlayDescriptionText = values.overlayDescriptionText;\n this.overlayButtonText = values.overlayButtonText;\n this.infoUrl = values.infoUrl;\n this.termsOfUseUrl = values.termsOfUseUrl;\n this.userPermission = values.userPermission;\n }\n}\n","export default \"__VITE_ASSET__a508b6dd__\"","import {html, LitElement} from 'lit'\nimport {customElement, state, property} from 'lit/decorators.js'\nimport {unsafeHTML} from 'lit/directives/unsafe-html.js'\nimport {repeat} from 'lit/directives/repeat.js';\nimport {i18nService} from '../../services/i18nService';\nimport {cookieService} from \"../../services/cookieService\";\nimport style from \"./cookie-settings.scss\";\nimport {CookieDescription, DISABLE_OPT_IN_PARAM} from \"./models\";\nimport closeButton from \"../../assets/close_icon.svg\";\nimport {addCountryToRelativeUrl, getUrlParam} from \"./utils\";\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'cookie-settings': CookieSettings\n }\n}\n\n@customElement('cookie-settings')\nexport class CookieSettings extends LitElement {\n\n @property() context: string = '';\n @state() i18nInitialized: boolean = false\n @state() cookieDescriptions: CookieDescription[] = [];\n\n constructor() {\n super();\n this.open = this.open.bind(this);\n this.close = this.close.bind(this);\n }\n\n async connectedCallback() {\n super.connectedCallback();\n await i18nService.initTranslations();\n this.cookieDescriptions = await cookieService.loadCookieDescriptions(this.context);\n cookieService.notifyCookieSubscribers(this.cookieDescriptions)\n this.i18nInitialized = true;\n window.addEventListener('ny-cookie-settings-open', this.open)\n }\n\n disconnectedCallback() {\n super.disconnectedCallback();\n window.removeEventListener('ny-cookie-settings-open', this.open)\n }\n\n async open() {\n if (getUrlParam(DISABLE_OPT_IN_PARAM)) {\n return\n }\n\n this.cookieDescriptions = await cookieService.loadCookieDescriptions(this.context);\n this.setAttribute('active', '');\n document.documentElement.style.overflowY = 'hidden';\n }\n\n close() {\n this.removeAttribute('active');\n document.documentElement.removeAttribute('style');\n }\n\n acceptAllCookies() {\n cookieService.acceptAllCookies();\n this.close();\n }\n\n togglePermission(cd: CookieDescription) {\n cd.userPermission = !cd.userPermission;\n }\n\n updateCookies() {\n cookieService.updateCookies(this.cookieDescriptions);\n cookieService.setLastSeen(new Date());\n this.close();\n }\n\n render() {\n if (!this.i18nInitialized) return;\n return html`\n \n
\n
\n
\n

${i18nService.translate(\"cookie_settings.header.text\")}

\n
\n \"close\"\n
\n
\n
\n
\n

${i18nService.translate(\"cookie_settings.introduction.text\")}

\n
\n
\n \n
\n
\n ${repeat(this.cookieDescriptions, (cd) => cd.key, (cd) => html`\n
\n
\n this.togglePermission(cd)}\">\n \n
\n

${unsafeHTML(i18nService.translate(cd.descriptionText, addCountryToRelativeUrl(cd.infoUrl)))}

\n
\n `)}\n
\n
\n
\n
\n \n
\n
\n
\n `\n }\n}","export class TrackPageEvent {\n path: string;\n title: string;\n\n constructor(path: string, title: string) {\n this.path = path;\n this.title = title;\n }\n}\n\nexport class TrackClickEvent {\n action: string;\n category: string;\n label: string;\n value: string;\n isSale: string;\n likeOrigin: string;\n imageType: string;\n\n constructor(values: any) {\n this.action = values.action;\n this.category = values.category;\n this.label = values.label;\n this.value = values.value;\n this.isSale = values.isSale;\n this.likeOrigin = values.likeOrigin;\n this.imageType = values.imageType;\n }\n}\n\nexport interface IConfig {\n analyticsTrackingId : string;\n}\n\nexport type TrackingEvent = TrackPageEvent | TrackClickEvent;\n","import {IConfig, TrackClickEvent, TrackingEvent, TrackPageEvent} from \"./models\";\nimport {CookieDescription} from \"../../components/cookie-banner/models\";\n\nexport const TRACKING_SERVICE_KEY = 'NY_TRACKER';\nexport const COOKIE_KEY = 'NY_COOKIE_MARKETING';\n\ndeclare global {\n interface Window {\n NY_TRACKER: ITrackingService\n dataLayer: any[]\n NY_CONFIG: IConfig\n }\n}\n\nexport interface ITrackingService {\n trackClick(event: TrackClickEvent): void;\n trackPage(path: string, title: string): void;\n}\n\nexport class TrackingService implements ITrackingService {\n private initialized: boolean = false;\n private queue: TrackingEvent[] = [];\n private readonly GA_TRACKING_ID: string = \"\";\n\n constructor(trackingID: string) {\n !trackingID ? console.error(\"No tracking ID provided\") : '';\n this.GA_TRACKING_ID = trackingID;\n this.onCookiesUpdated = this.onCookiesUpdated.bind(this)\n this._gtag = this._gtag.bind(this)\n this.activateTracking = this.activateTracking.bind(this)\n this.deactivateTracking = this.deactivateTracking.bind(this)\n this.trackClick = this.trackClick.bind(this)\n this.trackPage = this.trackPage.bind(this)\n\n this.initializeTracking()\n window.addEventListener('ny-cookies-updated', this.onCookiesUpdated)\n }\n\n\n onCookiesUpdated(event: Event) {\n const cookieDescriptions = (event as CustomEvent).detail;\n const marketingCookie = cookieDescriptions.find(cd => cd.key === COOKIE_KEY);\n if (marketingCookie?.userPermission) {\n this.activateTracking();\n } else {\n this.deactivateTracking();\n }\n }\n\n private initializeTracking() {\n const trackingPermission = localStorage.getItem(COOKIE_KEY);\n\n if (trackingPermission === 'true') {\n this.activateTracking();\n } else {\n this.deactivateTracking();\n }\n }\n\n // @ts-ignore\n private _gtag(...args: any[]) {\n window.dataLayer.push(arguments)\n }\n\n private activateTracking() {\n const script = document.createElement('script');\n script.src = \"https://www.googletagmanager.com/gtag/js?id=\" + this.GA_TRACKING_ID;\n document.body.appendChild(script);\n window.dataLayer = window.dataLayer || [];\n\n this._gtag('js', new Date());\n this._gtag('config', this.GA_TRACKING_ID, {\n 'anonymize_ip': true\n });\n\n this.initialized = true;\n (window)[`ga-disable- + ${this.GA_TRACKING_ID}`] = undefined;\n\n for (const event of this.queue) {\n if (event instanceof TrackPageEvent) {\n this.trackPage(event.path, event.title);\n } else {\n this.trackClick(event);\n }\n }\n }\n\n private deactivateTracking() {\n this.initialized = false;\n (window)['ga-disable-' + this.GA_TRACKING_ID] = true;\n }\n\n trackClick(event: TrackClickEvent) {\n if (!this.initialized) {\n this.queue.push(new TrackClickEvent(event));\n return\n }\n\n this._gtag('config', this.GA_TRACKING_ID, {\n 'send_page_view': false,\n 'custom_map': {\n 'dimension1': 'is_product_on_sale',\n 'dimension2': 'like_origin',\n 'dimension3': 'image_type'\n }\n });\n\n this._gtag('event', event.action, {\n 'event_category': event.category,\n 'event_label': event.label,\n 'value': event.value,\n 'is_product_on_sale': event.isSale,\n 'like_origin': event.likeOrigin,\n 'image_type': event.imageType\n });\n }\n\n trackPage(path: string, title: string) {\n if (!this.initialized) {\n this.queue.push(new TrackPageEvent(path, title));\n return\n }\n\n this._gtag('event', 'page_view', {\n 'page_title': title,\n 'page_path': path\n })\n }\n}\nexport const trackingService = new TrackingService(window.NY_CONFIG?.analyticsTrackingId);","import {html, LitElement} from 'lit'\nimport {customElement, state} from 'lit/decorators.js'\nimport {unsafeHTML} from 'lit/directives/unsafe-html.js'\nimport {i18nService} from '../../services/i18nService';\nimport {cookieService} from \"../../services/cookieService\";\nimport style from \"./cookie-banner.scss\";\nimport {addCountryToRelativeUrl, getCountryFromUrl, getUrlParam} from \"./utils\";\nimport {DISABLE_OPT_IN_PARAM} from \"./models\";\nimport closeButton from \"../../assets/close_icon.svg\";\nimport {TrackClickEvent} from \"../../services/tracking/models\";\nimport {trackingService} from \"../../services/tracking/tracking-service\";\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'cookie-banner': CookieBanner\n }\n}\n\n@customElement('cookie-banner')\nexport class CookieBanner extends LitElement {\n\n @state() i18nInitialized: boolean = false\n @state() active: boolean = true;\n\n private readonly privacyUrl = '/legal/privacy';\n private static readonly AcceptAllCookiesTrackingEvent = new TrackClickEvent({category: \"NY-Cookies\", action: \"accept all\", label: \"cookie-banner\"})\n private static readonly AcceptRequiredCookiesTrackingEvent = new TrackClickEvent({category: \"NY-Cookies\", action: \"accept required\", label: \"cookie-banner\"})\n private static readonly CookieSettingsOpenedTrackingEvent = new TrackClickEvent({category: \"NY-Cookies\", action: \"cookie-settings opened\", label: \"cookie-banner\"})\n\n constructor() {\n super();\n this.close = this.close.bind(this);\n }\n\n handleButtonAcceptAll() {\n trackingService.trackClick(CookieBanner.AcceptAllCookiesTrackingEvent);\n cookieService.acceptAllCookies()\n }\n\n handleButtonAcceptRequired() {\n trackingService.trackClick(CookieBanner.AcceptRequiredCookiesTrackingEvent);\n cookieService.acceptRequiredCookies()\n }\n\n handleButtonSettings() {\n trackingService.trackClick(CookieBanner.CookieSettingsOpenedTrackingEvent);\n cookieService.openCookieSettings();\n }\n\n close() {\n this.active = false;\n }\n\n handleShouldShow() {\n if (getUrlParam(DISABLE_OPT_IN_PARAM)) {\n this.active = false;\n }\n\n const lastSeen = cookieService.getLastSeen();\n if (lastSeen) {\n this.active = false;\n }\n }\n\n async connectedCallback() {\n super.connectedCallback();\n await i18nService.initTranslations();\n this.i18nInitialized = true;\n window.addEventListener('ny-cookies-updated', this.close);\n this.handleShouldShow();\n }\n\n disconnectedCallback() {\n super.disconnectedCallback();\n window.removeEventListener('ny-cookies-updated', this.close);\n }\n\n renderInfoText() {\n const infoTranslation = i18nService.translate(\"cookie_banner.info.text\", addCountryToRelativeUrl(this.privacyUrl), \"[BUTTON]\");\n const textParts = infoTranslation.split('[BUTTON]');\n return html`${unsafeHTML(textParts[0])}${unsafeHTML(textParts[1])}`\n }\n\n showCloseButton() {\n return getCountryFromUrl() === 'it';\n }\n\n render() {\n if (!this.i18nInitialized || !this.active) return;\n return html`\n \n
\n ${this.showCloseButton() ? html`\n
\n \"close\"\n
` : ''}\n
\n

${this.renderInfoText()}

\n
\n
\n \n \n \n
\n
\n `\n }\n}","import {html, LitElement} from 'lit'\nimport {customElement, property, state} from 'lit/decorators.js'\nimport {i18nService} from '../../services/i18nService';\nimport {cookieService} from \"../../services/cookieService\";\nimport style from \"./cookie-overlay.scss\";\nimport {CookieDescription, DISABLE_OPT_IN_PARAM} from \"./models\";\nimport {unsafeHTML} from \"lit/directives/unsafe-html.js\";\nimport {getUrlParam} from \"./utils\";\nimport {trackingService} from \"../../services/tracking/tracking-service\";\nimport {TrackClickEvent} from \"../../services/tracking/models\";\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'cookie-overlay': CookieOverlay\n }\n}\n\n@customElement('cookie-overlay')\nexport class CookieOverlay extends LitElement {\n\n @property() cookie: string = '';\n @property() placeholder: string = '';\n @state() i18nInitialized: boolean = false;\n @state() cookieDescriptionInitialized: boolean = false;\n @state() cookieDescription: CookieDescription = new CookieDescription({});\n @state() hasPermission: boolean = false;\n\n private static readonly CookieSettingsOpenedTrackingEvent = new TrackClickEvent({\n category: \"NY-Cookies\",\n action: \"cookie-settings opened\",\n label: \"cookie-overlay\"\n })\n\n constructor() {\n super();\n this.onCookiesUpdated = this.onCookiesUpdated.bind(this);\n this.acceptCookie = this.acceptCookie.bind(this);\n }\n\n protected createRenderRoot(): Element | ShadowRoot {\n return this;\n }\n\n async connectedCallback() {\n super.connectedCallback();\n await i18nService.initTranslations();\n this.i18nInitialized = true;\n cookieService.subscribeForCookies(() => {\n this.hasPermission = cookieService.checkPermission(this.cookie);\n const cookieDescription = cookieService.getCookieDescription(this.cookie);\n if (cookieDescription) {\n this.cookieDescription = cookieDescription;\n this.cookieDescriptionInitialized = true;\n }\n })\n window.addEventListener('ny-cookies-updated', this.onCookiesUpdated)\n }\n\n disconnectedCallback() {\n super.disconnectedCallback();\n window.removeEventListener('ny-cookies-updated', this.onCookiesUpdated)\n }\n\n onCookiesUpdated(event: Event) {\n const cookieDescriptions = (event as CustomEvent).detail;\n for (const cd of cookieDescriptions) {\n if (cd.key === this.cookie) {\n this.hasPermission = cd.userPermission;\n }\n }\n }\n\n acceptCookie() {\n if (this.cookieDescription) {\n const cookieAcceptedTrackingEvent = new TrackClickEvent({\n category: \"NY-Cookies\",\n action: \"accept one\",\n label: this.cookieDescription.key\n })\n trackingService.trackClick(cookieAcceptedTrackingEvent);\n cookieService.acceptCookie(this.cookieDescription.key);\n }\n }\n\n openCookieSettings() {\n trackingService.trackClick(CookieOverlay.CookieSettingsOpenedTrackingEvent);\n cookieService.openCookieSettings();\n }\n\n render() {\n if (!this.cookieDescriptionInitialized && !this.i18nInitialized) {\n return\n }\n\n if (this.hasPermission || getUrlParam(DISABLE_OPT_IN_PARAM)) {\n const template = this.querySelector('template');\n if (template) {\n return html`${document.importNode(template.content, true)}`\n }\n }\n\n return html`\n \n
\n ${this.placeholder && html`\"placeholder\"/`}\n
\n

${i18nService.translate(this.cookieDescription.overlayHeadlineText)}

\n\n ${this.cookieDescription.termsOfUseUrl ? html`

\n ${unsafeHTML(i18nService.translate(this.cookieDescription.overlayDescriptionText, this.cookieDescription.infoUrl, this.cookieDescription.termsOfUseUrl))}

` : html`\n

\n ${unsafeHTML(i18nService.translate(this.cookieDescription.overlayDescriptionText, i18nService.translate(this.cookieDescription.headlineText), this.cookieDescription.infoUrl))}

`}\n
\n \n \n
\n
\n
\n `\n }\n}","import \"/src/components/cookie-banner/index\"\nimport {TRACKING_SERVICE_KEY, trackingService} from \"./services/tracking/tracking-service\";\n\nif (!window[TRACKING_SERVICE_KEY]) {\n window[TRACKING_SERVICE_KEY] = trackingService;\n}"],"names":["PartType","directive","c","values","Directive","_partInfo","part","parent","attributeIndex","props","_part","HTML_RESULT","UnsafeHTMLDirective","partInfo","nothing","value","noChange","strings","unsafeHTML","_a","_b","ChildPart","_$LH","wrap","node","createMarker","insertPart","containerPart","refPart","container","refNode","startNode","endNode","oldParent","parentChanged","newConnectionState","start","n","setChildPartValue","directiveParent","RESET_VALUE","setCommittedValue","getCommittedValue","removePart","end","generateMap","list","map","i","RepeatDirective","items","keyFnOrTemplate","template","keyFn","keys","index","item","oldParts","newValues","newKeys","oldKeys","newParts","newKeyToIndexMap","oldKeyToIndexMap","oldHead","oldTail","newHead","newTail","oldIndex","oldPart","newPart","repeat","CookieService","callback","cookieData","cd","dateString","date","key","cookieDescriptions","it","cookieDescription","contextValue","res","conf","e","cookieService","DISABLE_OPT_IN_PARAM","CookieDescription","closeButton","CookieSettings","LitElement","i18nService","getUrlParam","html","style","addCountryToRelativeUrl","__decorateClass","property","state","customElement","TrackPageEvent","path","title","TrackClickEvent","TRACKING_SERVICE_KEY","COOKIE_KEY","TrackingService","trackingID","event","marketingCookie","args","script","trackingService","CookieBanner","textParts","getCountryFromUrl","CookieOverlay","cookieAcceptedTrackingEvent"],"mappings":"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"}