`). The attribute value, if it exists, is then used\n * as the default key when importing an element.\n * If null, no attribute value is used as the default key.\n */\nlet keyAttributeName = \"key\";\nfunction getKeyAttributeName() {\n return keyAttributeName;\n}\nfunction setKeyAttributeName(name) {\n keyAttributeName = name;\n}\n\n/**\n * Copyright 2018 The Incremental DOM Authors. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS-IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Keeps track whether or not we are in an attributes declaration (after\n * elementOpenStart, but before elementOpenEnd).\n */\nlet inAttributes = false;\n/**\n * Keeps track whether or not we are in an element that should not have its\n * children cleared.\n */\nlet inSkip = false;\n/**\n * Keeps track of whether or not we are in a patch.\n */\nlet inPatch = false;\n/**\n * Asserts that a value exists and is not null or undefined. goog.asserts\n * is not used in order to avoid dependencies on external code.\n * @param val The value to assert is truthy.\n * @returns The value.\n */\nfunction assert(val) {\n if (!val) {\n throw new Error(\"Expected value to be defined\");\n }\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n return val;\n}\n/**\n * Makes sure that there is a current patch context.\n * @param functionName The name of the caller, for the error message.\n */\nfunction assertInPatch(functionName) {\n if (!inPatch) {\n throw new Error(\"Cannot call \" + functionName + \"() unless in patch.\");\n }\n}\n/**\n * Makes sure that a patch closes every node that it opened.\n * @param openElement\n * @param root\n */\nfunction assertNoUnclosedTags(openElement, root) {\n if (openElement === root) {\n return;\n }\n let currentElement = openElement;\n const openTags = [];\n while (currentElement && currentElement !== root) {\n openTags.push(currentElement.nodeName.toLowerCase());\n currentElement = currentElement.parentNode;\n }\n throw new Error(\"One or more tags were not closed:\\n\" + openTags.join(\"\\n\"));\n}\n/**\n * Makes sure that node being outer patched has a parent node.\n * @param parent\n */\nfunction assertPatchOuterHasParentNode(parent) {\n if (!parent) {\n console.warn(\"patchOuter requires the node have a parent if there is a key.\");\n }\n}\n/**\n * Makes sure that the caller is not where attributes are expected.\n * @param functionName The name of the caller, for the error message.\n */\nfunction assertNotInAttributes(functionName) {\n if (inAttributes) {\n throw new Error(functionName +\n \"() can not be called between \" +\n \"elementOpenStart() and elementOpenEnd().\");\n }\n}\n/**\n * Makes sure that the caller is not inside an element that has declared skip.\n * @param functionName The name of the caller, for the error message.\n */\nfunction assertNotInSkip(functionName) {\n if (inSkip) {\n throw new Error(functionName +\n \"() may not be called inside an element \" +\n \"that has called skip().\");\n }\n}\n/**\n * Makes sure that the caller is where attributes are expected.\n * @param functionName The name of the caller, for the error message.\n */\nfunction assertInAttributes(functionName) {\n if (!inAttributes) {\n throw new Error(functionName +\n \"() can only be called after calling \" +\n \"elementOpenStart().\");\n }\n}\n/**\n * Makes sure the patch closes virtual attributes call\n */\nfunction assertVirtualAttributesClosed() {\n if (inAttributes) {\n throw new Error(\"elementOpenEnd() must be called after calling \" + \"elementOpenStart().\");\n }\n}\n/**\n * Makes sure that tags are correctly nested.\n * @param currentNameOrCtor\n * @param nameOrCtor\n */\nfunction assertCloseMatchesOpenTag(currentNameOrCtor, nameOrCtor) {\n if (currentNameOrCtor !== nameOrCtor) {\n throw new Error('Received a call to close \"' +\n nameOrCtor +\n '\" but \"' +\n currentNameOrCtor +\n '\" was open.');\n }\n}\n/**\n * Makes sure that no children elements have been declared yet in the current\n * element.\n * @param functionName The name of the caller, for the error message.\n * @param previousNode\n */\nfunction assertNoChildrenDeclaredYet(functionName, previousNode) {\n if (previousNode !== null) {\n throw new Error(functionName +\n \"() must come before any child \" +\n \"declarations inside the current element.\");\n }\n}\n/**\n * Checks that a call to patchOuter actually patched the element.\n * @param maybeStartNode The value for the currentNode when the patch\n * started.\n * @param maybeCurrentNode The currentNode when the patch finished.\n * @param expectedNextNode The Node that is expected to follow the\n * currentNode after the patch;\n * @param expectedPrevNode The Node that is expected to preceed the\n * currentNode after the patch.\n */\nfunction assertPatchElementNoExtras(maybeStartNode, maybeCurrentNode, expectedNextNode, expectedPrevNode) {\n const startNode = assert(maybeStartNode);\n const currentNode = assert(maybeCurrentNode);\n const wasUpdated = currentNode.nextSibling === expectedNextNode &&\n currentNode.previousSibling === expectedPrevNode;\n const wasChanged = currentNode.nextSibling === startNode.nextSibling &&\n currentNode.previousSibling === expectedPrevNode;\n const wasRemoved = currentNode === startNode;\n if (!wasUpdated && !wasChanged && !wasRemoved) {\n throw new Error(\"There must be exactly one top level call corresponding \" +\n \"to the patched element.\");\n }\n}\n/**\n * @param newContext The current patch context.\n */\nfunction updatePatchContext(newContext) {\n inPatch = newContext != null;\n}\n/**\n * Updates the state of being in an attribute declaration.\n * @param value Whether or not the patch is in an attribute declaration.\n * @return the previous value.\n */\nfunction setInAttributes(value) {\n const previous = inAttributes;\n inAttributes = value;\n return previous;\n}\n/**\n * Updates the state of being in a skip element.\n * @param value Whether or not the patch is skipping the children of a\n * parent node.\n * @return the previous value.\n */\nfunction setInSkip(value) {\n const previous = inSkip;\n inSkip = value;\n return previous;\n}\n\n/**\n * Copyright 2018 The Incremental DOM Authors. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS-IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * A cached reference to the hasOwnProperty function.\n */\nconst hasOwnProperty = Object.prototype.hasOwnProperty;\n/**\n * A constructor function that will create blank objects.\n */\nfunction Blank() { }\nBlank.prototype = Object.create(null);\n/**\n * Used to prevent property collisions between our \"map\" and its prototype.\n * @param map The map to check.\n * @param property The property to check.\n * @return Whether map has property.\n */\nfunction has(map, property) {\n return hasOwnProperty.call(map, property);\n}\n/**\n * Creates an map object without a prototype.\n * @returns An Object that can be used as a map.\n */\nfunction createMap() {\n return new Blank();\n}\n/**\n * Truncates an array, removing items up until length.\n * @param arr The array to truncate.\n * @param length The new length of the array.\n */\nfunction truncateArray(arr, length) {\n while (arr.length > length) {\n arr.pop();\n }\n}\n/**\n * Creates an array for a desired initial size. Note that the array will still\n * be empty.\n * @param initialAllocationSize The initial size to allocate.\n * @returns An empty array, with an initial allocation for the desired size.\n */\nfunction createArray(initialAllocationSize) {\n const arr = new Array(initialAllocationSize);\n truncateArray(arr, 0);\n return arr;\n}\n\n/**\n * Copyright 2018 The Incremental DOM Authors. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS-IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nconst symbols = {\n default: \"__default\"\n};\n\n/**\n * Copyright 2018 The Incremental DOM Authors. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS-IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * @param name The name of the attribute. For example \"tabindex\" or\n * \"xlink:href\".\n * @returns The namespace to use for the attribute, or null if there is\n * no namespace.\n */\nfunction getNamespace(name) {\n if (name.lastIndexOf(\"xml:\", 0) === 0) {\n return \"http://www.w3.org/XML/1998/namespace\";\n }\n if (name.lastIndexOf(\"xlink:\", 0) === 0) {\n return \"http://www.w3.org/1999/xlink\";\n }\n return null;\n}\n/**\n * Applies an attribute or property to a given Element. If the value is null\n * or undefined, it is removed from the Element. Otherwise, the value is set\n * as an attribute.\n * @param el The element to apply the attribute to.\n * @param name The attribute's name.\n * @param value The attribute's value.\n */\nfunction applyAttr(el, name, value) {\n if (value == null) {\n el.removeAttribute(name);\n }\n else {\n const attrNS = getNamespace(name);\n if (attrNS) {\n el.setAttributeNS(attrNS, name, String(value));\n }\n else {\n el.setAttribute(name, String(value));\n }\n }\n}\n/**\n * Applies a property to a given Element.\n * @param el The element to apply the property to.\n * @param name The property's name.\n * @param value The property's value.\n */\nfunction applyProp(el, name, value) {\n el[name] = value;\n}\n/**\n * Applies a value to a style declaration. Supports CSS custom properties by\n * setting properties containing a dash using CSSStyleDeclaration.setProperty.\n * @param style A style declaration.\n * @param prop The property to apply. This can be either camelcase or dash\n * separated. For example: \"backgroundColor\" and \"background-color\" are both\n * supported.\n * @param value The value of the property.\n */\nfunction setStyleValue(style, prop, value) {\n if (prop.indexOf(\"-\") >= 0) {\n style.setProperty(prop, value);\n }\n else {\n style[prop] = value;\n }\n}\n/**\n * Applies a style to an Element. No vendor prefix expansion is done for\n * property names/values.\n * @param el The Element to apply the style for.\n * @param name The attribute's name.\n * @param style The style to set. Either a string of css or an object\n * containing property-value pairs.\n */\nfunction applyStyle(el, name, style) {\n // MathML elements inherit from Element, which does not have style. We cannot\n // do `instanceof HTMLElement` / `instanceof SVGElement`, since el can belong\n // to a different document, so just check that it has a style.\n assert(\"style\" in el);\n const elStyle = el.style;\n if (typeof style === \"string\") {\n elStyle.cssText = style;\n }\n else {\n elStyle.cssText = \"\";\n for (const prop in style) {\n if (has(style, prop)) {\n setStyleValue(elStyle, prop, style[prop]);\n }\n }\n }\n}\n/**\n * Updates a single attribute on an Element.\n * @param el The Element to apply the attribute to.\n * @param name The attribute's name.\n * @param value The attribute's value. If the value is an object or\n * function it is set on the Element, otherwise, it is set as an HTML\n * attribute.\n */\nfunction applyAttributeTyped(el, name, value) {\n const type = typeof value;\n if (type === \"object\" || type === \"function\") {\n applyProp(el, name, value);\n }\n else {\n applyAttr(el, name, value);\n }\n}\n/**\n * A publicly mutable object to provide custom mutators for attributes.\n * NB: The result of createMap() has to be recast since closure compiler\n * will just assume attributes is \"any\" otherwise and throws away\n * the type annotation set by tsickle.\n */\nconst attributes = createMap();\n// Special generic mutator that's called for any attribute that does not\n// have a specific mutator.\nattributes[symbols.default] = applyAttributeTyped;\nattributes[\"style\"] = applyStyle;\n/**\n * Calls the appropriate attribute mutator for this attribute.\n * @param el The Element to apply the attribute to.\n * @param name The attribute's name.\n * @param value The attribute's value. If the value is an object or\n * function it is set on the Element, otherwise, it is set as an HTML\n * attribute.\n */\nfunction updateAttribute(el, name, value) {\n const mutator = attributes[name] || attributes[symbols.default];\n mutator(el, name, value);\n}\n\n/**\n * Copyright 2018 The Incremental DOM Authors. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS-IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nconst notifications = {\n nodesCreated: null,\n nodesDeleted: null\n};\n\n/**\n * Copyright 2018 The Incremental DOM Authors. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS-IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * A context object keeps track of the state of a patch.\n */\nclass Context {\n constructor() {\n this.created = [];\n this.deleted = [];\n }\n markCreated(node) {\n this.created.push(node);\n }\n markDeleted(node) {\n this.deleted.push(node);\n }\n /**\n * Notifies about nodes that were created during the patch operation.\n */\n notifyChanges() {\n if (notifications.nodesCreated && this.created.length > 0) {\n notifications.nodesCreated(this.created);\n }\n if (notifications.nodesDeleted && this.deleted.length > 0) {\n notifications.nodesDeleted(this.deleted);\n }\n }\n}\n\n/**\n * Copyright 2018 The Incremental DOM Authors. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS-IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Checks if the node is the root of a document. This is either a Document\n * or ShadowRoot. DocumentFragments are included for simplicity of the\n * implementation, though we only want to consider Documents or ShadowRoots.\n * @param node The node to check.\n * @return True if the node the root of a document, false otherwise.\n */\nfunction isDocumentRoot(node) {\n return node.nodeType === 11 || node.nodeType === 9;\n}\n/**\n * Checks if the node is an Element. This is faster than an instanceof check.\n * @param node The node to check.\n * @return Whether or not the node is an Element.\n */\nfunction isElement(node) {\n return node.nodeType === 1;\n}\n/**\n * @param node The node to start at, inclusive.\n * @param root The root ancestor to get until, exclusive.\n * @return The ancestry of DOM nodes.\n */\nfunction getAncestry(node, root) {\n const ancestry = [];\n let cur = node;\n while (cur !== root) {\n const n = assert(cur);\n ancestry.push(n);\n cur = n.parentNode;\n }\n return ancestry;\n}\n/**\n * @param this\n * @returns The root node of the DOM tree that contains this node.\n */\nconst getRootNode = (typeof Node !== \"undefined\" && Node.prototype.getRootNode) ||\n function () {\n let cur = this;\n let prev = cur;\n while (cur) {\n prev = cur;\n cur = cur.parentNode;\n }\n return prev;\n };\n/**\n * @param node The node to get the activeElement for.\n * @returns The activeElement in the Document or ShadowRoot\n * corresponding to node, if present.\n */\nfunction getActiveElement(node) {\n const root = getRootNode.call(node);\n return isDocumentRoot(root) ? root.activeElement : null;\n}\n/**\n * Gets the path of nodes that contain the focused node in the same document as\n * a reference node, up until the root.\n * @param node The reference node to get the activeElement for.\n * @param root The root to get the focused path until.\n * @returns The path of focused parents, if any exist.\n */\nfunction getFocusedPath(node, root) {\n const activeElement = getActiveElement(node);\n if (!activeElement || !node.contains(activeElement)) {\n return [];\n }\n return getAncestry(activeElement, root);\n}\n/**\n * Like insertBefore, but instead instead of moving the desired node, instead\n * moves all the other nodes after.\n * @param parentNode\n * @param node\n * @param referenceNode\n */\nfunction moveBefore(parentNode, node, referenceNode) {\n const insertReferenceNode = node.nextSibling;\n let cur = referenceNode;\n while (cur !== null && cur !== node) {\n const next = cur.nextSibling;\n parentNode.insertBefore(cur, insertReferenceNode);\n cur = next;\n }\n}\n\n/**\n * Copyright 2018 The Incremental DOM Authors. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS-IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Keeps track of information needed to perform diffs for a given DOM node.\n */\nclass NodeData {\n constructor(nameOrCtor, key, text) {\n /**\n * An array of attribute name/value pairs, used for quickly diffing the\n * incomming attributes to see if the DOM node's attributes need to be\n * updated.\n */\n this._attrsArr = null;\n /**\n * Whether or not the statics have been applied for the node yet.\n */\n this.staticsApplied = false;\n this.nameOrCtor = nameOrCtor;\n this.key = key;\n this.text = text;\n }\n hasEmptyAttrsArr() {\n const attrs = this._attrsArr;\n return !attrs || !attrs.length;\n }\n getAttrsArr(length) {\n return this._attrsArr || (this._attrsArr = createArray(length));\n }\n}\n/**\n * Initializes a NodeData object for a Node.\n * @param node The Node to initialized data for.\n * @param nameOrCtor The NameOrCtorDef to use when diffing.\n * @param key The Key for the Node.\n * @param text The data of a Text node, if importing a Text node.\n * @returns A NodeData object with the existing attributes initialized.\n */\nfunction initData(node, nameOrCtor, key, text) {\n const data = new NodeData(nameOrCtor, key, text);\n node[\"__incrementalDOMData\"] = data;\n return data;\n}\n/**\n * @param node The node to check.\n * @returns True if the NodeData already exists, false otherwise.\n */\nfunction isDataInitialized(node) {\n return Boolean(node[\"__incrementalDOMData\"]);\n}\n/**\n * Records the element's attributes.\n * @param node The Element that may have attributes\n * @param data The Element's data\n */\nfunction recordAttributes(node, data) {\n const attributes = node.attributes;\n const length = attributes.length;\n if (!length) {\n return;\n }\n const attrsArr = data.getAttrsArr(length);\n // Use a cached length. The attributes array is really a live NamedNodeMap,\n // which exists as a DOM \"Host Object\" (probably as C++ code). This makes the\n // usual constant length iteration very difficult to optimize in JITs.\n for (let i = 0, j = 0; i < length; i += 1, j += 2) {\n const attr = attributes[i];\n const name = attr.name;\n const value = attr.value;\n attrsArr[j] = name;\n attrsArr[j + 1] = value;\n }\n}\n/**\n * Imports single node and its subtree, initializing caches, if it has not\n * already been imported.\n * @param node The node to import.\n * @param fallbackKey A key to use if importing and no key was specified.\n * Useful when not transmitting keys from serverside render and doing an\n * immediate no-op diff.\n * @returns The NodeData for the node.\n */\nfunction importSingleNode(node, fallbackKey) {\n if (node[\"__incrementalDOMData\"]) {\n return node[\"__incrementalDOMData\"];\n }\n const nodeName = isElement(node) ? node.localName : node.nodeName;\n const keyAttrName = getKeyAttributeName();\n const keyAttr = isElement(node) && keyAttrName != null\n ? node.getAttribute(keyAttrName)\n : null;\n const key = isElement(node) ? keyAttr || fallbackKey : null;\n const data = initData(node, nodeName, key);\n if (isElement(node)) {\n recordAttributes(node, data);\n }\n return data;\n}\n/**\n * Imports node and its subtree, initializing caches.\n * @param node The Node to import.\n */\nfunction importNode(node) {\n importSingleNode(node);\n for (let child = node.firstChild; child; child = child.nextSibling) {\n importNode(child);\n }\n}\n/**\n * Retrieves the NodeData object for a Node, creating it if necessary.\n * @param node The node to get data for.\n * @param fallbackKey A key to use if importing and no key was specified.\n * Useful when not transmitting keys from serverside render and doing an\n * immediate no-op diff.\n * @returns The NodeData for the node.\n */\nfunction getData(node, fallbackKey) {\n return importSingleNode(node, fallbackKey);\n}\n/**\n * Gets the key for a Node. note that the Node should have been imported\n * by now.\n * @param node The node to check.\n * @returns The key used to create the node.\n */\nfunction getKey(node) {\n assert(node[\"__incrementalDOMData\"]);\n return getData(node).key;\n}\n/**\n * Clears all caches from a node and all of its children.\n * @param node The Node to clear the cache for.\n */\nfunction clearCache(node) {\n node[\"__incrementalDOMData\"] = null;\n for (let child = node.firstChild; child; child = child.nextSibling) {\n clearCache(child);\n }\n}\n\n/**\n * Copyright 2018 The Incremental DOM Authors. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS-IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Gets the namespace to create an element (of a given tag) in.\n * @param tag The tag to get the namespace for.\n * @param parent The current parent Node, if any.\n * @returns The namespace to use,\n */\nfunction getNamespaceForTag(tag, parent) {\n if (tag === \"svg\") {\n return \"http://www.w3.org/2000/svg\";\n }\n if (tag === \"math\") {\n return \"http://www.w3.org/1998/Math/MathML\";\n }\n if (parent == null) {\n return null;\n }\n if (getData(parent).nameOrCtor === \"foreignObject\") {\n return null;\n }\n return parent.namespaceURI;\n}\n/**\n * Creates an Element and initializes the NodeData.\n * @param doc The document with which to create the Element.\n * @param parent The parent of new Element.\n * @param nameOrCtor The tag or constructor for the Element.\n * @param key A key to identify the Element.\n * @returns The newly created Element.\n */\nfunction createElement(doc, parent, nameOrCtor, key) {\n let el;\n if (typeof nameOrCtor === \"function\") {\n el = new nameOrCtor();\n }\n else {\n const namespace = getNamespaceForTag(nameOrCtor, parent);\n if (namespace) {\n el = doc.createElementNS(namespace, nameOrCtor);\n }\n else {\n el = doc.createElement(nameOrCtor);\n }\n }\n initData(el, nameOrCtor, key);\n return el;\n}\n/**\n * Creates a Text Node.\n * @param doc The document with which to create the Element.\n * @returns The newly created Text.\n */\nfunction createText(doc) {\n const node = doc.createTextNode(\"\");\n initData(node, \"#text\", null);\n return node;\n}\n\n/**\n * Copyright 2018 The Incremental DOM Authors. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS-IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * The default match function to use, if one was not specified when creating\n * the patcher.\n * @param matchNode The node to match against, unused.\n * @param nameOrCtor The name or constructor as declared.\n * @param expectedNameOrCtor The name or constructor of the existing node.\n * @param key The key as declared.\n * @param expectedKey The key of the existing node.\n * @returns True if the node matches, false otherwise.\n */\nfunction defaultMatchFn(matchNode, nameOrCtor, expectedNameOrCtor, key, expectedKey) {\n // Key check is done using double equals as we want to treat a null key the\n // same as undefined. This should be okay as the only values allowed are\n // strings, null and undefined so the == semantics are not too weird.\n return nameOrCtor == expectedNameOrCtor && key == expectedKey;\n}\nlet context = null;\nlet currentNode = null;\nlet currentParent = null;\nlet doc = null;\nlet focusPath = [];\nlet matchFn = defaultMatchFn;\n/**\n * Used to build up call arguments. Each patch call gets a separate copy, so\n * this works with nested calls to patch.\n */\nlet argsBuilder = [];\n/**\n * Used to build up attrs for the an element.\n */\nlet attrsBuilder = [];\n/**\n * TODO(sparhami) We should just export argsBuilder directly when Closure\n * Compiler supports ES6 directly.\n * @returns The Array used for building arguments.\n */\nfunction getArgsBuilder() {\n return argsBuilder;\n}\n/**\n * TODO(sparhami) We should just export attrsBuilder directly when Closure\n * Compiler supports ES6 directly.\n * @returns The Array used for building arguments.\n */\nfunction getAttrsBuilder() {\n return attrsBuilder;\n}\n/**\n * Checks whether or not the current node matches the specified nameOrCtor and\n * key. This uses the specified match function when creating the patcher.\n * @param matchNode A node to match the data to.\n * @param nameOrCtor The name or constructor to check for.\n * @param key The key used to identify the Node.\n * @return True if the node matches, false otherwise.\n */\nfunction matches(matchNode, nameOrCtor, key) {\n const data = getData(matchNode, key);\n return matchFn(matchNode, nameOrCtor, data.nameOrCtor, key, data.key);\n}\n/**\n * Finds the matching node, starting at `node` and looking at the subsequent\n * siblings if a key is used.\n * @param matchNode The node to start looking at.\n * @param nameOrCtor The name or constructor for the Node.\n * @param key The key used to identify the Node.\n * @returns The matching Node, if any exists.\n */\nfunction getMatchingNode(matchNode, nameOrCtor, key) {\n if (!matchNode) {\n return null;\n }\n let cur = matchNode;\n do {\n if (matches(cur, nameOrCtor, key)) {\n return cur;\n }\n } while (key && (cur = cur.nextSibling));\n return null;\n}\n/**\n * Clears out any unvisited Nodes in a given range.\n * @param maybeParentNode\n * @param startNode The node to start clearing from, inclusive.\n * @param endNode The node to clear until, exclusive.\n */\nfunction clearUnvisitedDOM(maybeParentNode, startNode, endNode) {\n const parentNode = maybeParentNode;\n let child = startNode;\n while (child !== endNode) {\n const next = child.nextSibling;\n parentNode.removeChild(child);\n context.markDeleted(child);\n child = next;\n }\n}\n/**\n * @return The next Node to be patched.\n */\nfunction getNextNode() {\n if (currentNode) {\n return currentNode.nextSibling;\n }\n else {\n return currentParent.firstChild;\n }\n}\n/**\n * Changes to the first child of the current node.\n */\nfunction enterNode() {\n currentParent = currentNode;\n currentNode = null;\n}\n/**\n * Changes to the parent of the current node, removing any unvisited children.\n */\nfunction exitNode() {\n clearUnvisitedDOM(currentParent, getNextNode(), null);\n currentNode = currentParent;\n currentParent = currentParent.parentNode;\n}\n/**\n * Changes to the next sibling of the current node.\n */\nfunction nextNode() {\n currentNode = getNextNode();\n}\n/**\n * Creates a Node and marking it as created.\n * @param nameOrCtor The name or constructor for the Node.\n * @param key The key used to identify the Node.\n * @return The newly created node.\n */\nfunction createNode(nameOrCtor, key) {\n let node;\n if (nameOrCtor === \"#text\") {\n node = createText(doc);\n }\n else {\n node = createElement(doc, currentParent, nameOrCtor, key);\n }\n context.markCreated(node);\n return node;\n}\n/**\n * Aligns the virtual Node definition with the actual DOM, moving the\n * corresponding DOM node to the correct location or creating it if necessary.\n * @param nameOrCtor The name or constructor for the Node.\n * @param key The key used to identify the Node.\n */\nfunction alignWithDOM(nameOrCtor, key) {\n nextNode();\n const existingNode = getMatchingNode(currentNode, nameOrCtor, key);\n const node = existingNode || createNode(nameOrCtor, key);\n // If we are at the matching node, then we are done.\n if (node === currentNode) {\n return;\n }\n // Re-order the node into the right position, preserving focus if either\n // node or currentNode are focused by making sure that they are not detached\n // from the DOM.\n if (focusPath.indexOf(node) >= 0) {\n // Move everything else before the node.\n moveBefore(currentParent, node, currentNode);\n }\n else {\n currentParent.insertBefore(node, currentNode);\n }\n currentNode = node;\n}\n/**\n * Makes sure that the current node is an Element with a matching nameOrCtor and\n * key.\n *\n * @param nameOrCtor The tag or constructor for the Element.\n * @param key The key used to identify this element. This can be an\n * empty string, but performance may be better if a unique value is used\n * when iterating over an array of items.\n * @return The corresponding Element.\n */\nfunction open(nameOrCtor, key) {\n alignWithDOM(nameOrCtor, key);\n enterNode();\n return currentParent;\n}\n/**\n * Closes the currently open Element, removing any unvisited children if\n * necessary.\n * @returns The Element that was just closed.\n */\nfunction close() {\n {\n setInSkip(false);\n }\n exitNode();\n return currentNode;\n}\n/**\n * Makes sure the current node is a Text node and creates a Text node if it is\n * not.\n * @returns The Text node that was aligned or created.\n */\nfunction text() {\n alignWithDOM(\"#text\", null);\n return currentNode;\n}\n/**\n * @returns The current Element being patched.\n */\nfunction currentElement() {\n {\n assertInPatch(\"currentElement\");\n assertNotInAttributes(\"currentElement\");\n }\n return currentParent;\n}\n/**\n * @return The Node that will be evaluated for the next instruction.\n */\nfunction currentPointer() {\n {\n assertInPatch(\"currentPointer\");\n assertNotInAttributes(\"currentPointer\");\n }\n // TODO(tomnguyen): assert that this is not null\n return getNextNode();\n}\n/**\n * Skips the children in a subtree, allowing an Element to be closed without\n * clearing out the children.\n */\nfunction skip() {\n {\n assertNoChildrenDeclaredYet(\"skip\", currentNode);\n setInSkip(true);\n }\n currentNode = currentParent.lastChild;\n}\n/**\n * Returns a patcher function that sets up and restores a patch context,\n * running the run function with the provided data.\n * @param run The function that will run the patch.\n * @param patchConfig The configuration to use for the patch.\n * @returns The created patch function.\n */\nfunction createPatcher(run, patchConfig = {}) {\n const { matches = defaultMatchFn } = patchConfig;\n const f = (node, fn, data) => {\n const prevContext = context;\n const prevDoc = doc;\n const prevFocusPath = focusPath;\n const prevArgsBuilder = argsBuilder;\n const prevAttrsBuilder = attrsBuilder;\n const prevCurrentNode = currentNode;\n const prevCurrentParent = currentParent;\n const prevMatchFn = matchFn;\n let previousInAttributes = false;\n let previousInSkip = false;\n doc = node.ownerDocument;\n context = new Context();\n matchFn = matches;\n argsBuilder = [];\n attrsBuilder = [];\n currentNode = null;\n currentParent = node.parentNode;\n focusPath = getFocusedPath(node, currentParent);\n {\n previousInAttributes = setInAttributes(false);\n previousInSkip = setInSkip(false);\n updatePatchContext(context);\n }\n try {\n const retVal = run(node, fn, data);\n {\n assertVirtualAttributesClosed();\n }\n return retVal;\n }\n finally {\n context.notifyChanges();\n doc = prevDoc;\n context = prevContext;\n matchFn = prevMatchFn;\n argsBuilder = prevArgsBuilder;\n attrsBuilder = prevAttrsBuilder;\n currentNode = prevCurrentNode;\n currentParent = prevCurrentParent;\n focusPath = prevFocusPath;\n // Needs to be done after assertions because assertions rely on state\n // from these methods.\n {\n setInAttributes(previousInAttributes);\n setInSkip(previousInSkip);\n updatePatchContext(context);\n }\n }\n };\n return f;\n}\n/**\n * Creates a patcher that patches the document starting at node with a\n * provided function. This function may be called during an existing patch operation.\n * @param patchConfig The config to use for the patch.\n * @returns The created function for patching an Element's children.\n */\nfunction createPatchInner(patchConfig) {\n return createPatcher((node, fn, data) => {\n currentNode = node;\n enterNode();\n fn(data);\n exitNode();\n {\n assertNoUnclosedTags(currentNode, node);\n }\n return node;\n }, patchConfig);\n}\n/**\n * Creates a patcher that patches an Element with the the provided function.\n * Exactly one top level element call should be made corresponding to `node`.\n * @param patchConfig The config to use for the patch.\n * @returns The created function for patching an Element.\n */\nfunction createPatchOuter(patchConfig) {\n return createPatcher((node, fn, data) => {\n const startNode = { nextSibling: node };\n let expectedNextNode = null;\n let expectedPrevNode = null;\n {\n expectedNextNode = node.nextSibling;\n expectedPrevNode = node.previousSibling;\n }\n currentNode = startNode;\n fn(data);\n {\n assertPatchOuterHasParentNode(currentParent);\n assertPatchElementNoExtras(startNode, currentNode, expectedNextNode, expectedPrevNode);\n }\n if (currentParent) {\n clearUnvisitedDOM(currentParent, getNextNode(), node.nextSibling);\n }\n return startNode === currentNode ? null : currentNode;\n }, patchConfig);\n}\nconst patchInner = createPatchInner();\nconst patchOuter = createPatchOuter();\n\n/**\n * Copyright 2018 The Incremental DOM Authors. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS-IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nconst buffer = [];\nlet bufferStart = 0;\n/**\n * TODO(tomnguyen): This is a bit silly and really needs to be better typed.\n * @param fn A function to call.\n * @param a The first argument to the function.\n * @param b The second argument to the function.\n * @param c The third argument to the function.\n */\nfunction queueChange(fn, a, b, c) {\n buffer.push(fn);\n buffer.push(a);\n buffer.push(b);\n buffer.push(c);\n}\n/**\n * Flushes the changes buffer, calling the functions for each change.\n */\nfunction flush() {\n // A change may cause this function to be called re-entrantly. Keep track of\n // the portion of the buffer we are consuming. Updates the start pointer so\n // that the next call knows where to start from.\n const start = bufferStart;\n const end = buffer.length;\n bufferStart = end;\n for (let i = start; i < end; i += 4) {\n const fn = buffer[i];\n fn(buffer[i + 1], buffer[i + 2], buffer[i + 3]);\n }\n bufferStart = start;\n truncateArray(buffer, start);\n}\n\n/**\n * Copyright 2018 The Incremental DOM Authors. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS-IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Used to keep track of the previous values when a 2-way diff is necessary.\n * This object is cleared out and reused.\n */\nconst prevValuesMap = createMap();\n/**\n * Calculates the diff between previous and next values, calling the update\n * function when an item has changed value. If an item from the previous values\n * is not present in the the next values, the update function is called with a\n * value of `undefined`.\n * @param prev The previous values, alternating name, value pairs.\n * @param next The next values, alternating name, value pairs.\n * @param updateCtx The context for the updateFn.\n * @param updateFn A function to call when a value has changed.\n */\nfunction calculateDiff(prev, next, updateCtx, updateFn) {\n const isNew = !prev.length;\n let i = 0;\n for (; i < next.length; i += 2) {\n const name = next[i];\n if (isNew) {\n prev[i] = name;\n }\n else if (prev[i] !== name) {\n break;\n }\n const value = next[i + 1];\n if (isNew || prev[i + 1] !== value) {\n prev[i + 1] = value;\n queueChange(updateFn, updateCtx, name, value);\n }\n }\n // Items did not line up exactly as before, need to make sure old items are\n // removed. This should be a rare case.\n if (i < next.length || i < prev.length) {\n const startIndex = i;\n for (i = startIndex; i < prev.length; i += 2) {\n prevValuesMap[prev[i]] = prev[i + 1];\n }\n for (i = startIndex; i < next.length; i += 2) {\n const name = next[i];\n const value = next[i + 1];\n if (prevValuesMap[name] !== value) {\n queueChange(updateFn, updateCtx, name, value);\n }\n prev[i] = name;\n prev[i + 1] = value;\n delete prevValuesMap[name];\n }\n truncateArray(prev, next.length);\n for (const name in prevValuesMap) {\n queueChange(updateFn, updateCtx, name, undefined);\n delete prevValuesMap[name];\n }\n }\n flush();\n}\n\n/**\n * Copyright 2018 The Incremental DOM Authors. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS-IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * The offset in the virtual element declaration where the attributes are\n * specified.\n */\nconst ATTRIBUTES_OFFSET = 3;\n/**\n * Used to keep track of the previous values when a 2-way diff is necessary.\n * This object is reused.\n * TODO(sparhamI) Scope this to a patch so you can call patch from an attribute\n * update.\n */\nconst prevAttrsMap = createMap();\n/**\n * @param element The Element to diff the attrs for.\n * @param data The NodeData associated with the Element.\n */\nfunction diffAttrs(element, data) {\n const attrsBuilder = getAttrsBuilder();\n const prevAttrsArr = data.getAttrsArr(attrsBuilder.length);\n calculateDiff(prevAttrsArr, attrsBuilder, element, updateAttribute);\n truncateArray(attrsBuilder, 0);\n}\n/**\n * Applies the statics. When importing an Element, any existing attributes that\n * match a static are converted into a static attribute.\n * @param node The Element to apply statics for.\n * @param data The NodeData associated with the Element.\n * @param statics The statics array.\n */\nfunction diffStatics(node, data, statics) {\n if (data.staticsApplied) {\n return;\n }\n data.staticsApplied = true;\n if (!statics || !statics.length) {\n return;\n }\n if (data.hasEmptyAttrsArr()) {\n for (let i = 0; i < statics.length; i += 2) {\n updateAttribute(node, statics[i], statics[i + 1]);\n }\n return;\n }\n for (let i = 0; i < statics.length; i += 2) {\n prevAttrsMap[statics[i]] = i + 1;\n }\n const attrsArr = data.getAttrsArr(0);\n let j = 0;\n for (let i = 0; i < attrsArr.length; i += 2) {\n const name = attrsArr[i];\n const value = attrsArr[i + 1];\n const staticsIndex = prevAttrsMap[name];\n if (staticsIndex) {\n // For any attrs that are static and have the same value, make sure we do\n // not set them again.\n if (statics[staticsIndex] === value) {\n delete prevAttrsMap[name];\n }\n continue;\n }\n // For any attrs that are dynamic, move them up to the right place.\n attrsArr[j] = name;\n attrsArr[j + 1] = value;\n j += 2;\n }\n // Anything after `j` was either moved up already or static.\n truncateArray(attrsArr, j);\n for (const name in prevAttrsMap) {\n updateAttribute(node, name, statics[prevAttrsMap[name]]);\n delete prevAttrsMap[name];\n }\n}\n/**\n * Declares a virtual Element at the current location in the document. This\n * corresponds to an opening tag and a elementClose tag is required. This is\n * like elementOpen, but the attributes are defined using the attr function\n * rather than being passed as arguments. Must be folllowed by 0 or more calls\n * to attr, then a call to elementOpenEnd.\n * @param nameOrCtor The Element's tag or constructor.\n * @param key The key used to identify this element. This can be an\n * empty string, but performance may be better if a unique value is used\n * when iterating over an array of items.\n * @param statics An array of attribute name/value pairs of the static\n * attributes for the Element. Attributes will only be set once when the\n * Element is created.\n */\nfunction elementOpenStart(nameOrCtor, key, statics) {\n const argsBuilder = getArgsBuilder();\n {\n assertNotInAttributes(\"elementOpenStart\");\n setInAttributes(true);\n }\n argsBuilder[0] = nameOrCtor;\n argsBuilder[1] = key;\n argsBuilder[2] = statics;\n}\n/**\n * Allows you to define a key after an elementOpenStart. This is useful in\n * templates that define key after an element has been opened ie\n * `
`.\n * @param key The key to use for the next call.\n */\nfunction key(key) {\n const argsBuilder = getArgsBuilder();\n {\n assertInAttributes(\"key\");\n assert(argsBuilder);\n }\n argsBuilder[1] = key;\n}\n/**\n * Buffers an attribute, which will get applied during the next call to\n * `elementOpen`, `elementOpenEnd` or `applyAttrs`.\n * @param name The of the attribute to buffer.\n * @param value The value of the attribute to buffer.\n */\nfunction attr(name, value) {\n const attrsBuilder = getAttrsBuilder();\n {\n assertInPatch(\"attr\");\n }\n attrsBuilder.push(name);\n attrsBuilder.push(value);\n}\n/**\n * Closes an open tag started with elementOpenStart.\n * @return The corresponding Element.\n */\nfunction elementOpenEnd() {\n const argsBuilder = getArgsBuilder();\n {\n assertInAttributes(\"elementOpenEnd\");\n setInAttributes(false);\n }\n const node = open(argsBuilder[0], argsBuilder[1]);\n const data = getData(node);\n diffStatics(node, data, argsBuilder[2]);\n diffAttrs(node, data);\n truncateArray(argsBuilder, 0);\n return node;\n}\n/**\n * @param nameOrCtor The Element's tag or constructor.\n * @param key The key used to identify this element. This can be an\n * empty string, but performance may be better if a unique value is used\n * when iterating over an array of items.\n * @param statics An array of attribute name/value pairs of the static\n * attributes for the Element. Attributes will only be set once when the\n * Element is created.\n * @param varArgs, Attribute name/value pairs of the dynamic attributes\n * for the Element.\n * @return The corresponding Element.\n */\nfunction elementOpen(nameOrCtor, key, \n// Ideally we could tag statics and varArgs as an array where every odd\n// element is a string and every even element is any, but this is hard.\nstatics, ...varArgs) {\n {\n assertNotInAttributes(\"elementOpen\");\n assertNotInSkip(\"elementOpen\");\n }\n elementOpenStart(nameOrCtor, key, statics);\n for (let i = ATTRIBUTES_OFFSET; i < arguments.length; i += 2) {\n attr(arguments[i], arguments[i + 1]);\n }\n return elementOpenEnd();\n}\n/**\n * Applies the currently buffered attrs to the currently open element. This\n * clears the buffered attributes.\n */\nfunction applyAttrs() {\n const node = currentElement();\n const data = getData(node);\n diffAttrs(node, data);\n}\n/**\n * Applies the current static attributes to the currently open element. Note:\n * statics should be applied before calling `applyAtrs`.\n * @param statics The statics to apply to the current element.\n */\nfunction applyStatics(statics) {\n const node = currentElement();\n const data = getData(node);\n diffStatics(node, data, statics);\n}\n/**\n * Closes an open virtual Element.\n *\n * @param nameOrCtor The Element's tag or constructor.\n * @return The corresponding Element.\n */\nfunction elementClose(nameOrCtor) {\n {\n assertNotInAttributes(\"elementClose\");\n }\n const node = close();\n {\n assertCloseMatchesOpenTag(getData(node).nameOrCtor, nameOrCtor);\n }\n return node;\n}\n/**\n * Declares a virtual Element at the current location in the document that has\n * no children.\n * @param nameOrCtor The Element's tag or constructor.\n * @param key The key used to identify this element. This can be an\n * empty string, but performance may be better if a unique value is used\n * when iterating over an array of items.\n * @param statics An array of attribute name/value pairs of the static\n * attributes for the Element. Attributes will only be set once when the\n * Element is created.\n * @param varArgs Attribute name/value pairs of the dynamic attributes\n * for the Element.\n * @return The corresponding Element.\n */\nfunction elementVoid(nameOrCtor, key, \n// Ideally we could tag statics and varArgs as an array where every odd\n// element is a string and every even element is any, but this is hard.\nstatics, ...varArgs) {\n elementOpen.apply(null, arguments);\n return elementClose(nameOrCtor);\n}\n/**\n * Declares a virtual Text at this point in the document.\n *\n * @param value The value of the Text.\n * @param varArgs\n * Functions to format the value which are called only when the value has\n * changed.\n * @return The corresponding text node.\n */\nfunction text$1(value, ...varArgs) {\n {\n assertNotInAttributes(\"text\");\n assertNotInSkip(\"text\");\n }\n const node = text();\n const data = getData(node);\n if (data.text !== value) {\n data.text = value;\n let formatted = value;\n for (let i = 1; i < arguments.length; i += 1) {\n /*\n * Call the formatter function directly to prevent leaking arguments.\n * https://github.com/google/incremental-dom/pull/204#issuecomment-178223574\n */\n const fn = arguments[i];\n formatted = fn(formatted);\n }\n // Setting node.data resets the cursor in IE/Edge.\n if (node.data !== formatted) {\n node.data = formatted;\n }\n }\n return node;\n}\n\n/**\n * Copyright 2018 The Incremental DOM Authors. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS-IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexports.applyAttr = applyAttr;\nexports.applyProp = applyProp;\nexports.attributes = attributes;\nexports.alignWithDOM = alignWithDOM;\nexports.close = close;\nexports.createPatchInner = createPatchInner;\nexports.createPatchOuter = createPatchOuter;\nexports.currentElement = currentElement;\nexports.currentPointer = currentPointer;\nexports.open = open;\nexports.patch = patchInner;\nexports.patchInner = patchInner;\nexports.patchOuter = patchOuter;\nexports.skip = skip;\nexports.skipNode = nextNode;\nexports.setKeyAttributeName = setKeyAttributeName;\nexports.clearCache = clearCache;\nexports.getKey = getKey;\nexports.importNode = importNode;\nexports.isDataInitialized = isDataInitialized;\nexports.notifications = notifications;\nexports.symbols = symbols;\nexports.applyAttrs = applyAttrs;\nexports.applyStatics = applyStatics;\nexports.attr = attr;\nexports.elementClose = elementClose;\nexports.elementOpen = elementOpen;\nexports.elementOpenEnd = elementOpenEnd;\nexports.elementOpenStart = elementOpenStart;\nexports.elementVoid = elementVoid;\nexports.key = key;\nexports.text = text$1;\n\n});\n\nunwrapExports(incrementalDomCjs);\nvar incrementalDomCjs_1 = incrementalDomCjs.applyAttr;\nvar incrementalDomCjs_2 = incrementalDomCjs.applyProp;\nvar incrementalDomCjs_3 = incrementalDomCjs.attributes;\nvar incrementalDomCjs_4 = incrementalDomCjs.alignWithDOM;\nvar incrementalDomCjs_5 = incrementalDomCjs.close;\nvar incrementalDomCjs_6 = incrementalDomCjs.createPatchInner;\nvar incrementalDomCjs_7 = incrementalDomCjs.createPatchOuter;\nvar incrementalDomCjs_8 = incrementalDomCjs.currentElement;\nvar incrementalDomCjs_9 = incrementalDomCjs.currentPointer;\nvar incrementalDomCjs_10 = incrementalDomCjs.open;\nvar incrementalDomCjs_11 = incrementalDomCjs.patch;\nvar incrementalDomCjs_12 = incrementalDomCjs.patchInner;\nvar incrementalDomCjs_13 = incrementalDomCjs.patchOuter;\nvar incrementalDomCjs_14 = incrementalDomCjs.skip;\nvar incrementalDomCjs_15 = incrementalDomCjs.skipNode;\nvar incrementalDomCjs_16 = incrementalDomCjs.setKeyAttributeName;\nvar incrementalDomCjs_17 = incrementalDomCjs.clearCache;\nvar incrementalDomCjs_18 = incrementalDomCjs.getKey;\nvar incrementalDomCjs_19 = incrementalDomCjs.importNode;\nvar incrementalDomCjs_20 = incrementalDomCjs.isDataInitialized;\nvar incrementalDomCjs_21 = incrementalDomCjs.notifications;\nvar incrementalDomCjs_22 = incrementalDomCjs.symbols;\nvar incrementalDomCjs_23 = incrementalDomCjs.applyAttrs;\nvar incrementalDomCjs_24 = incrementalDomCjs.applyStatics;\nvar incrementalDomCjs_25 = incrementalDomCjs.attr;\nvar incrementalDomCjs_26 = incrementalDomCjs.elementClose;\nvar incrementalDomCjs_27 = incrementalDomCjs.elementOpen;\nvar incrementalDomCjs_28 = incrementalDomCjs.elementOpenEnd;\nvar incrementalDomCjs_29 = incrementalDomCjs.elementOpenStart;\nvar incrementalDomCjs_30 = incrementalDomCjs.elementVoid;\nvar incrementalDomCjs_31 = incrementalDomCjs.key;\nvar incrementalDomCjs_32 = incrementalDomCjs.text;\n\nincrementalDomCjs_3.caretpos = function (element, name, value) {\n element.setSelectionRange(value, value);\n};\nincrementalDomCjs_3.value = incrementalDomCjs_2;\nvar renderIncrementalDOM = function renderIncrementalDOM(data, onSelect, multiline) {\n if (data.suggestions.length > 0 && data.focused) {\n // unselectable=on is a IE11 workaround,\n // which makes it possible to use an eventual scroll bar on suggestions list.\n incrementalDomCjs_27('ul', '', ['class', 'dawa-autocomplete-suggestions', 'role', 'listbox', 'unselectable', 'on']);\n var _loop = function _loop(i) {\n var suggestion = data.suggestions[i];\n var className = 'dawa-autocomplete-suggestion';\n if (data.selected === i) {\n className += ' dawa-selected';\n }\n incrementalDomCjs_27('li', '', ['role', 'option'], 'class', className, 'onmousedown', function (e) {\n onSelect(i);\n e.preventDefault();\n });\n var rows = suggestion.forslagstekst.split('\\n');\n rows = rows.map(function (row) {\n return row.replace(/ /g, \"\\xA0\");\n });\n if (multiline) {\n incrementalDomCjs_32(rows[0]);\n for (var _i = 1; _i < rows.length; ++_i) {\n incrementalDomCjs_30('br');\n incrementalDomCjs_32(rows[_i]);\n }\n } else {\n incrementalDomCjs_32(rows.join(', '));\n }\n incrementalDomCjs_26('li');\n };\n for (var i = 0; i < data.suggestions.length; ++i) {\n _loop(i);\n }\n incrementalDomCjs_26('ul');\n }\n};\nvar defaultRender = function defaultRender(containerElm, data, onSelect, multiline) {\n incrementalDomCjs_11(containerElm, function () {\n renderIncrementalDOM(data, onSelect, multiline);\n });\n};\nvar autocompleteUi = function autocompleteUi(inputElm, options) {\n var onSelect = options.onSelect;\n var onTextChange = options.onTextChange;\n var render = options.render || defaultRender;\n var destroyed = false;\n var lastEmittedText = '';\n var lastEmittedCaretpos = 0;\n var suggestionContainerElm = document.createElement('div');\n inputElm.parentNode.insertBefore(suggestionContainerElm, inputElm.nextSibling);\n var emitTextChange = function emitTextChange(newText, newCaretpos) {\n if (lastEmittedText !== newText || lastEmittedCaretpos !== newCaretpos) {\n onTextChange(newText, newCaretpos);\n lastEmittedText = newText;\n lastEmittedCaretpos = newCaretpos;\n }\n };\n var data = {\n caretpos: 2,\n inputText: '',\n selected: 0,\n focused: document.activeElement === inputElm,\n suggestions: []\n };\n var handleInputChanged = function handleInputChanged(inputElm) {\n var newText = inputElm.value;\n var newCaretPos = inputElm.selectionStart;\n data.caretpos = newCaretPos;\n data.inputText = newText;\n emitTextChange(newText, newCaretPos);\n };\n var update;\n var selectSuggestion = function selectSuggestion(index) {\n var selectedSuggestion = data.suggestions[index];\n data.inputText = selectedSuggestion.tekst;\n data.caretpos = selectedSuggestion.caretpos;\n data.suggestions = [];\n onSelect(selectedSuggestion);\n update(true);\n };\n var keydownHandler = function keydownHandler(e) {\n var key = window.event ? e.keyCode : e.which;\n if (data.suggestions.length > 0 && data.focused) {\n // down (40)\n if (key === 40) {\n data.selected = (data.selected + 1) % data.suggestions.length;\n update();\n }\n //up (38)\n else if (key === 38) {\n data.selected = (data.selected - 1 + data.suggestions.length) % data.suggestions.length;\n update();\n }\n // enter\n else if (key === 13 || key === 9) {\n selectSuggestion(data.selected);\n } else {\n return true;\n }\n e.preventDefault();\n return false;\n }\n };\n var focusHandler = function focusHandler() {\n data.focused = true;\n update();\n };\n var blurHandler = function blurHandler() {\n data.focused = false;\n update();\n return false;\n };\n var inputChangeHandler = function inputChangeHandler(e) {\n handleInputChanged(e.target);\n };\n var inputMouseUpHandler = function inputMouseUpHandler(e) {\n return handleInputChanged(e.target);\n };\n var updateScheduled = false;\n var updateInput = false;\n update = function update(shouldUpdateInput) {\n if (shouldUpdateInput) {\n updateInput = true;\n }\n if (!updateScheduled) {\n updateScheduled = true;\n requestAnimationFrame(function () {\n if (destroyed) {\n return;\n }\n updateScheduled = false;\n if (updateInput) {\n inputElm.value = data.inputText;\n inputElm.setSelectionRange(data.caretpos, data.caretpos);\n }\n updateInput = false;\n render(suggestionContainerElm, data, function (i) {\n return selectSuggestion(i);\n }, options.multiline);\n });\n }\n };\n update();\n var destroy = function destroy() {\n destroyed = true;\n inputElm.removeEventListener('keydown', keydownHandler);\n inputElm.removeEventListener('blur', blurHandler);\n inputElm.removeEventListener('focus', focusHandler);\n inputElm.removeEventListener('input', inputChangeHandler);\n inputElm.removeEventListener('mouseup', inputMouseUpHandler);\n incrementalDomCjs_11(suggestionContainerElm, function () {});\n suggestionContainerElm.remove();\n };\n var setSuggestions = function setSuggestions(suggestions) {\n data.suggestions = suggestions;\n data.selected = 0;\n update();\n };\n var selectAndClose = function selectAndClose(text) {\n data.inputText = text;\n data.caretpos = text.length;\n data.suggestions = [];\n data.selected = 0;\n update(true);\n };\n inputElm.addEventListener('keydown', keydownHandler);\n inputElm.addEventListener('blur', blurHandler);\n inputElm.addEventListener('focus', focusHandler);\n inputElm.addEventListener('input', inputChangeHandler);\n inputElm.addEventListener('mouseup', inputMouseUpHandler);\n inputElm.setAttribute('aria-autocomplete', 'list');\n inputElm.setAttribute('autocomplete', 'off');\n return {\n destroy: destroy,\n setSuggestions: setSuggestions,\n selectAndClose: selectAndClose\n };\n};\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor);\n }\n}\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}\nfunction _toPrimitive$1(input, hint) {\n if (typeof input !== \"object\" || input === null) return input;\n var prim = input[Symbol.toPrimitive];\n if (prim !== undefined) {\n var res = prim.call(input, hint || \"default\");\n if (typeof res !== \"object\") return res;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (hint === \"string\" ? String : Number)(input);\n}\nfunction _toPropertyKey(arg) {\n var key = _toPrimitive$1(arg, \"string\");\n return typeof key === \"symbol\" ? key : String(key);\n}\n\n// most Object methods by ES6 should accept primitives\n\n\n\nvar _objectSap = function (KEY, exec) {\n var fn = (_core.Object || {})[KEY] || Object[KEY];\n var exp = {};\n exp[KEY] = exec(fn);\n _export(_export.S + _export.F * _fails(function () { fn(1); }), 'Object', exp);\n};\n\n// 19.1.2.14 Object.keys(O)\n\n\n\n_objectSap('keys', function () {\n return function keys(it) {\n return _objectKeys(_toObject(it));\n };\n});\n\n// 19.1.3.6 Object.prototype.toString()\n\nvar test = {};\ntest[_wks('toStringTag')] = 'z';\nif (test + '' != '[object z]') {\n _redefine(Object.prototype, 'toString', function toString() {\n return '[object ' + _classof(this) + ']';\n }, true);\n}\n\nvar _anInstance = function (it, Constructor, name, forbiddenField) {\n if (!(it instanceof Constructor) || (forbiddenField !== undefined && forbiddenField in it)) {\n throw TypeError(name + ': incorrect invocation!');\n } return it;\n};\n\n// call something on iterator step with safe closing on error\n\nvar _iterCall = function (iterator, fn, value, entries) {\n try {\n return entries ? fn(_anObject(value)[0], value[1]) : fn(value);\n // 7.4.6 IteratorClose(iterator, completion)\n } catch (e) {\n var ret = iterator['return'];\n if (ret !== undefined) _anObject(ret.call(iterator));\n throw e;\n }\n};\n\nvar _iterators = {};\n\n// check on default Array iterator\n\nvar ITERATOR = _wks('iterator');\nvar ArrayProto = Array.prototype;\n\nvar _isArrayIter = function (it) {\n return it !== undefined && (_iterators.Array === it || ArrayProto[ITERATOR] === it);\n};\n\nvar ITERATOR$1 = _wks('iterator');\n\nvar core_getIteratorMethod = _core.getIteratorMethod = function (it) {\n if (it != undefined) return it[ITERATOR$1]\n || it['@@iterator']\n || _iterators[_classof(it)];\n};\n\nvar _forOf = createCommonjsModule(function (module) {\nvar BREAK = {};\nvar RETURN = {};\nvar exports = module.exports = function (iterable, entries, fn, that, ITERATOR) {\n var iterFn = ITERATOR ? function () { return iterable; } : core_getIteratorMethod(iterable);\n var f = _ctx(fn, that, entries ? 2 : 1);\n var index = 0;\n var length, step, iterator, result;\n if (typeof iterFn != 'function') throw TypeError(iterable + ' is not iterable!');\n // fast case for arrays with default iterator\n if (_isArrayIter(iterFn)) for (length = _toLength(iterable.length); length > index; index++) {\n result = entries ? f(_anObject(step = iterable[index])[0], step[1]) : f(iterable[index]);\n if (result === BREAK || result === RETURN) return result;\n } else for (iterator = iterFn.call(iterable); !(step = iterator.next()).done;) {\n result = _iterCall(iterator, f, step.value, entries);\n if (result === BREAK || result === RETURN) return result;\n }\n};\nexports.BREAK = BREAK;\nexports.RETURN = RETURN;\n});\n\n// fast apply, http://jsperf.lnkit.com/fast-apply/5\nvar _invoke = function (fn, args, that) {\n var un = that === undefined;\n switch (args.length) {\n case 0: return un ? fn()\n : fn.call(that);\n case 1: return un ? fn(args[0])\n : fn.call(that, args[0]);\n case 2: return un ? fn(args[0], args[1])\n : fn.call(that, args[0], args[1]);\n case 3: return un ? fn(args[0], args[1], args[2])\n : fn.call(that, args[0], args[1], args[2]);\n case 4: return un ? fn(args[0], args[1], args[2], args[3])\n : fn.call(that, args[0], args[1], args[2], args[3]);\n } return fn.apply(that, args);\n};\n\nvar document$2 = _global.document;\nvar _html = document$2 && document$2.documentElement;\n\nvar process = _global.process;\nvar setTask = _global.setImmediate;\nvar clearTask = _global.clearImmediate;\nvar MessageChannel = _global.MessageChannel;\nvar Dispatch = _global.Dispatch;\nvar counter = 0;\nvar queue = {};\nvar ONREADYSTATECHANGE = 'onreadystatechange';\nvar defer, channel, port;\nvar run = function () {\n var id = +this;\n // eslint-disable-next-line no-prototype-builtins\n if (queue.hasOwnProperty(id)) {\n var fn = queue[id];\n delete queue[id];\n fn();\n }\n};\nvar listener = function (event) {\n run.call(event.data);\n};\n// Node.js 0.9+ & IE10+ has setImmediate, otherwise:\nif (!setTask || !clearTask) {\n setTask = function setImmediate(fn) {\n var args = [];\n var i = 1;\n while (arguments.length > i) args.push(arguments[i++]);\n queue[++counter] = function () {\n // eslint-disable-next-line no-new-func\n _invoke(typeof fn == 'function' ? fn : Function(fn), args);\n };\n defer(counter);\n return counter;\n };\n clearTask = function clearImmediate(id) {\n delete queue[id];\n };\n // Node.js 0.8-\n if (_cof(process) == 'process') {\n defer = function (id) {\n process.nextTick(_ctx(run, id, 1));\n };\n // Sphere (JS game engine) Dispatch API\n } else if (Dispatch && Dispatch.now) {\n defer = function (id) {\n Dispatch.now(_ctx(run, id, 1));\n };\n // Browsers with MessageChannel, includes WebWorkers\n } else if (MessageChannel) {\n channel = new MessageChannel();\n port = channel.port2;\n channel.port1.onmessage = listener;\n defer = _ctx(port.postMessage, port, 1);\n // Browsers with postMessage, skip WebWorkers\n // IE8 has postMessage, but it's sync & typeof its postMessage is 'object'\n } else if (_global.addEventListener && typeof postMessage == 'function' && !_global.importScripts) {\n defer = function (id) {\n _global.postMessage(id + '', '*');\n };\n _global.addEventListener('message', listener, false);\n // IE8-\n } else if (ONREADYSTATECHANGE in _domCreate('script')) {\n defer = function (id) {\n _html.appendChild(_domCreate('script'))[ONREADYSTATECHANGE] = function () {\n _html.removeChild(this);\n run.call(id);\n };\n };\n // Rest old browsers\n } else {\n defer = function (id) {\n setTimeout(_ctx(run, id, 1), 0);\n };\n }\n}\nvar _task = {\n set: setTask,\n clear: clearTask\n};\n\nvar macrotask = _task.set;\nvar Observer = _global.MutationObserver || _global.WebKitMutationObserver;\nvar process$1 = _global.process;\nvar Promise$1 = _global.Promise;\nvar isNode = _cof(process$1) == 'process';\n\nvar _microtask = function () {\n var head, last, notify;\n\n var flush = function () {\n var parent, fn;\n if (isNode && (parent = process$1.domain)) parent.exit();\n while (head) {\n fn = head.fn;\n head = head.next;\n try {\n fn();\n } catch (e) {\n if (head) notify();\n else last = undefined;\n throw e;\n }\n } last = undefined;\n if (parent) parent.enter();\n };\n\n // Node.js\n if (isNode) {\n notify = function () {\n process$1.nextTick(flush);\n };\n // browsers with MutationObserver, except iOS Safari - https://github.com/zloirock/core-js/issues/339\n } else if (Observer && !(_global.navigator && _global.navigator.standalone)) {\n var toggle = true;\n var node = document.createTextNode('');\n new Observer(flush).observe(node, { characterData: true }); // eslint-disable-line no-new\n notify = function () {\n node.data = toggle = !toggle;\n };\n // environments with maybe non-completely correct, but existent Promise\n } else if (Promise$1 && Promise$1.resolve) {\n // Promise.resolve without an argument throws an error in LG WebOS 2\n var promise = Promise$1.resolve(undefined);\n notify = function () {\n promise.then(flush);\n };\n // for other environments - macrotask based on:\n // - setImmediate\n // - MessageChannel\n // - window.postMessag\n // - onreadystatechange\n // - setTimeout\n } else {\n notify = function () {\n // strange IE + webpack dev server bug - use .call(global)\n macrotask.call(_global, flush);\n };\n }\n\n return function (fn) {\n var task = { fn: fn, next: undefined };\n if (last) last.next = task;\n if (!head) {\n head = task;\n notify();\n } last = task;\n };\n};\n\n// 25.4.1.5 NewPromiseCapability(C)\n\n\nfunction PromiseCapability(C) {\n var resolve, reject;\n this.promise = new C(function ($$resolve, $$reject) {\n if (resolve !== undefined || reject !== undefined) throw TypeError('Bad Promise constructor');\n resolve = $$resolve;\n reject = $$reject;\n });\n this.resolve = _aFunction(resolve);\n this.reject = _aFunction(reject);\n}\n\nvar f$3 = function (C) {\n return new PromiseCapability(C);\n};\n\nvar _newPromiseCapability = {\n\tf: f$3\n};\n\nvar _perform = function (exec) {\n try {\n return { e: false, v: exec() };\n } catch (e) {\n return { e: true, v: e };\n }\n};\n\nvar navigator = _global.navigator;\n\nvar _userAgent = navigator && navigator.userAgent || '';\n\nvar _promiseResolve = function (C, x) {\n _anObject(C);\n if (_isObject(x) && x.constructor === C) return x;\n var promiseCapability = _newPromiseCapability.f(C);\n var resolve = promiseCapability.resolve;\n resolve(x);\n return promiseCapability.promise;\n};\n\nvar _redefineAll = function (target, src, safe) {\n for (var key in src) _redefine(target, key, src[key], safe);\n return target;\n};\n\nvar def = _objectDp.f;\n\nvar TAG$1 = _wks('toStringTag');\n\nvar _setToStringTag = function (it, tag, stat) {\n if (it && !_has(it = stat ? it : it.prototype, TAG$1)) def(it, TAG$1, { configurable: true, value: tag });\n};\n\nvar SPECIES$3 = _wks('species');\n\nvar _setSpecies = function (KEY) {\n var C = _global[KEY];\n if (_descriptors && C && !C[SPECIES$3]) _objectDp.f(C, SPECIES$3, {\n configurable: true,\n get: function () { return this; }\n });\n};\n\nvar ITERATOR$2 = _wks('iterator');\nvar SAFE_CLOSING = false;\n\ntry {\n var riter = [7][ITERATOR$2]();\n riter['return'] = function () { SAFE_CLOSING = true; };\n // eslint-disable-next-line no-throw-literal\n Array.from(riter, function () { throw 2; });\n} catch (e) { /* empty */ }\n\nvar _iterDetect = function (exec, skipClosing) {\n if (!skipClosing && !SAFE_CLOSING) return false;\n var safe = false;\n try {\n var arr = [7];\n var iter = arr[ITERATOR$2]();\n iter.next = function () { return { done: safe = true }; };\n arr[ITERATOR$2] = function () { return iter; };\n exec(arr);\n } catch (e) { /* empty */ }\n return safe;\n};\n\nvar task = _task.set;\nvar microtask = _microtask();\n\n\n\n\nvar PROMISE = 'Promise';\nvar TypeError$1 = _global.TypeError;\nvar process$2 = _global.process;\nvar versions = process$2 && process$2.versions;\nvar v8 = versions && versions.v8 || '';\nvar $Promise = _global[PROMISE];\nvar isNode$1 = _classof(process$2) == 'process';\nvar empty = function () { /* empty */ };\nvar Internal, newGenericPromiseCapability, OwnPromiseCapability, Wrapper;\nvar newPromiseCapability = newGenericPromiseCapability = _newPromiseCapability.f;\n\nvar USE_NATIVE = !!function () {\n try {\n // correct subclassing with @@species support\n var promise = $Promise.resolve(1);\n var FakePromise = (promise.constructor = {})[_wks('species')] = function (exec) {\n exec(empty, empty);\n };\n // unhandled rejections tracking support, NodeJS Promise without it fails @@species test\n return (isNode$1 || typeof PromiseRejectionEvent == 'function')\n && promise.then(empty) instanceof FakePromise\n // v8 6.6 (Node 10 and Chrome 66) have a bug with resolving custom thenables\n // https://bugs.chromium.org/p/chromium/issues/detail?id=830565\n // we can't detect it synchronously, so just check versions\n && v8.indexOf('6.6') !== 0\n && _userAgent.indexOf('Chrome/66') === -1;\n } catch (e) { /* empty */ }\n}();\n\n// helpers\nvar isThenable = function (it) {\n var then;\n return _isObject(it) && typeof (then = it.then) == 'function' ? then : false;\n};\nvar notify = function (promise, isReject) {\n if (promise._n) return;\n promise._n = true;\n var chain = promise._c;\n microtask(function () {\n var value = promise._v;\n var ok = promise._s == 1;\n var i = 0;\n var run = function (reaction) {\n var handler = ok ? reaction.ok : reaction.fail;\n var resolve = reaction.resolve;\n var reject = reaction.reject;\n var domain = reaction.domain;\n var result, then, exited;\n try {\n if (handler) {\n if (!ok) {\n if (promise._h == 2) onHandleUnhandled(promise);\n promise._h = 1;\n }\n if (handler === true) result = value;\n else {\n if (domain) domain.enter();\n result = handler(value); // may throw\n if (domain) {\n domain.exit();\n exited = true;\n }\n }\n if (result === reaction.promise) {\n reject(TypeError$1('Promise-chain cycle'));\n } else if (then = isThenable(result)) {\n then.call(result, resolve, reject);\n } else resolve(result);\n } else reject(value);\n } catch (e) {\n if (domain && !exited) domain.exit();\n reject(e);\n }\n };\n while (chain.length > i) run(chain[i++]); // variable length - can't use forEach\n promise._c = [];\n promise._n = false;\n if (isReject && !promise._h) onUnhandled(promise);\n });\n};\nvar onUnhandled = function (promise) {\n task.call(_global, function () {\n var value = promise._v;\n var unhandled = isUnhandled(promise);\n var result, handler, console;\n if (unhandled) {\n result = _perform(function () {\n if (isNode$1) {\n process$2.emit('unhandledRejection', value, promise);\n } else if (handler = _global.onunhandledrejection) {\n handler({ promise: promise, reason: value });\n } else if ((console = _global.console) && console.error) {\n console.error('Unhandled promise rejection', value);\n }\n });\n // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should\n promise._h = isNode$1 || isUnhandled(promise) ? 2 : 1;\n } promise._a = undefined;\n if (unhandled && result.e) throw result.v;\n });\n};\nvar isUnhandled = function (promise) {\n return promise._h !== 1 && (promise._a || promise._c).length === 0;\n};\nvar onHandleUnhandled = function (promise) {\n task.call(_global, function () {\n var handler;\n if (isNode$1) {\n process$2.emit('rejectionHandled', promise);\n } else if (handler = _global.onrejectionhandled) {\n handler({ promise: promise, reason: promise._v });\n }\n });\n};\nvar $reject = function (value) {\n var promise = this;\n if (promise._d) return;\n promise._d = true;\n promise = promise._w || promise; // unwrap\n promise._v = value;\n promise._s = 2;\n if (!promise._a) promise._a = promise._c.slice();\n notify(promise, true);\n};\nvar $resolve = function (value) {\n var promise = this;\n var then;\n if (promise._d) return;\n promise._d = true;\n promise = promise._w || promise; // unwrap\n try {\n if (promise === value) throw TypeError$1(\"Promise can't be resolved itself\");\n if (then = isThenable(value)) {\n microtask(function () {\n var wrapper = { _w: promise, _d: false }; // wrap\n try {\n then.call(value, _ctx($resolve, wrapper, 1), _ctx($reject, wrapper, 1));\n } catch (e) {\n $reject.call(wrapper, e);\n }\n });\n } else {\n promise._v = value;\n promise._s = 1;\n notify(promise, false);\n }\n } catch (e) {\n $reject.call({ _w: promise, _d: false }, e); // wrap\n }\n};\n\n// constructor polyfill\nif (!USE_NATIVE) {\n // 25.4.3.1 Promise(executor)\n $Promise = function Promise(executor) {\n _anInstance(this, $Promise, PROMISE, '_h');\n _aFunction(executor);\n Internal.call(this);\n try {\n executor(_ctx($resolve, this, 1), _ctx($reject, this, 1));\n } catch (err) {\n $reject.call(this, err);\n }\n };\n // eslint-disable-next-line no-unused-vars\n Internal = function Promise(executor) {\n this._c = []; // <- awaiting reactions\n this._a = undefined; // <- checked in isUnhandled reactions\n this._s = 0; // <- state\n this._d = false; // <- done\n this._v = undefined; // <- value\n this._h = 0; // <- rejection state, 0 - default, 1 - handled, 2 - unhandled\n this._n = false; // <- notify\n };\n Internal.prototype = _redefineAll($Promise.prototype, {\n // 25.4.5.3 Promise.prototype.then(onFulfilled, onRejected)\n then: function then(onFulfilled, onRejected) {\n var reaction = newPromiseCapability(_speciesConstructor(this, $Promise));\n reaction.ok = typeof onFulfilled == 'function' ? onFulfilled : true;\n reaction.fail = typeof onRejected == 'function' && onRejected;\n reaction.domain = isNode$1 ? process$2.domain : undefined;\n this._c.push(reaction);\n if (this._a) this._a.push(reaction);\n if (this._s) notify(this, false);\n return reaction.promise;\n },\n // 25.4.5.1 Promise.prototype.catch(onRejected)\n 'catch': function (onRejected) {\n return this.then(undefined, onRejected);\n }\n });\n OwnPromiseCapability = function () {\n var promise = new Internal();\n this.promise = promise;\n this.resolve = _ctx($resolve, promise, 1);\n this.reject = _ctx($reject, promise, 1);\n };\n _newPromiseCapability.f = newPromiseCapability = function (C) {\n return C === $Promise || C === Wrapper\n ? new OwnPromiseCapability(C)\n : newGenericPromiseCapability(C);\n };\n}\n\n_export(_export.G + _export.W + _export.F * !USE_NATIVE, { Promise: $Promise });\n_setToStringTag($Promise, PROMISE);\n_setSpecies(PROMISE);\nWrapper = _core[PROMISE];\n\n// statics\n_export(_export.S + _export.F * !USE_NATIVE, PROMISE, {\n // 25.4.4.5 Promise.reject(r)\n reject: function reject(r) {\n var capability = newPromiseCapability(this);\n var $$reject = capability.reject;\n $$reject(r);\n return capability.promise;\n }\n});\n_export(_export.S + _export.F * ( !USE_NATIVE), PROMISE, {\n // 25.4.4.6 Promise.resolve(x)\n resolve: function resolve(x) {\n return _promiseResolve( this, x);\n }\n});\n_export(_export.S + _export.F * !(USE_NATIVE && _iterDetect(function (iter) {\n $Promise.all(iter)['catch'](empty);\n})), PROMISE, {\n // 25.4.4.1 Promise.all(iterable)\n all: function all(iterable) {\n var C = this;\n var capability = newPromiseCapability(C);\n var resolve = capability.resolve;\n var reject = capability.reject;\n var result = _perform(function () {\n var values = [];\n var index = 0;\n var remaining = 1;\n _forOf(iterable, false, function (promise) {\n var $index = index++;\n var alreadyCalled = false;\n values.push(undefined);\n remaining++;\n C.resolve(promise).then(function (value) {\n if (alreadyCalled) return;\n alreadyCalled = true;\n values[$index] = value;\n --remaining || resolve(values);\n }, reject);\n });\n --remaining || resolve(values);\n });\n if (result.e) reject(result.v);\n return capability.promise;\n },\n // 25.4.4.4 Promise.race(iterable)\n race: function race(iterable) {\n var C = this;\n var capability = newPromiseCapability(C);\n var reject = capability.reject;\n var result = _perform(function () {\n _forOf(iterable, false, function (promise) {\n C.resolve(promise).then(capability.resolve, reject);\n });\n });\n if (result.e) reject(result.v);\n return capability.promise;\n }\n});\n\nfunction fetch(e,n){return n=n||{},new Promise(function(t,r){var s=new XMLHttpRequest,o=[],u=[],i={},a=function(){return {ok:2==(s.status/100|0),statusText:s.statusText,status:s.status,url:s.responseURL,text:function(){return Promise.resolve(s.responseText)},json:function(){return Promise.resolve(s.responseText).then(JSON.parse)},blob:function(){return Promise.resolve(new Blob([s.response]))},clone:a,headers:{keys:function(){return o},entries:function(){return u},get:function(e){return i[e.toLowerCase()]},has:function(e){return e.toLowerCase()in i}}}};for(var l in s.open(n.method||\"get\",e,!0),s.onload=function(){s.getAllResponseHeaders().replace(/^(.*?):[^\\S\\n]*([\\s\\S]*?)$/gm,function(e,n,t){o.push(n=n.toLowerCase()),u.push([n,t]),i[n]=i[n]?i[n]+\",\"+t:t;}),t(a());},s.onerror=r,s.withCredentials=\"include\"==n.credentials,n.headers)s.setRequestHeader(l,n.headers[l]);s.send(n.body||null);})}\n\nvar formatParams = function formatParams(params) {\n return Object.keys(params).map(function (paramName) {\n var paramValue = params[paramName];\n return \"\".concat(paramName, \"=\").concat(encodeURIComponent(paramValue));\n }).join('&');\n};\nvar delay = function delay(ms) {\n return new Promise(function (resolve) {\n return setTimeout(resolve, ms);\n });\n};\nvar defaultOptions = {\n params: {},\n minLength: 2,\n retryDelay: 500,\n renderCallback: function renderCallback() {\n /*eslint no-console: 0*/\n console.error('No renderCallback supplied');\n },\n initialRenderCallback: function initialRenderCallback() {\n /*eslint no-console: 0*/\n console.error('No initialRenderCallback supplied');\n },\n type: 'adresse',\n baseUrl: 'https://dawa.aws.dk',\n adgangsadresserOnly: false,\n stormodtagerpostnumre: true,\n supplerendebynavn: true,\n fuzzy: true,\n fetchImpl: function fetchImpl(url, params) {\n return fetch(\"\".concat(url, \"?\").concat(formatParams(params)), {\n mode: 'cors'\n }).then(function (result) {\n return result.json();\n });\n }\n};\nvar AutocompleteController = /*#__PURE__*/function () {\n function AutocompleteController(options) {\n _classCallCheck(this, AutocompleteController);\n options = Object.assign({}, defaultOptions, options || {});\n this.options = options;\n this.state = {\n currentRequest: null,\n pendingRequest: null\n };\n this.selected = null;\n }\n _createClass(AutocompleteController, [{\n key: \"_getAutocompleteResponse\",\n value: function _getAutocompleteResponse(text, caretpos, skipVejnavn, adgangsadresseid, supplerendebynavn, stormodtagerpostnumre) {\n var params = Object.assign({}, this.options.params, {\n q: text,\n type: this.options.type,\n caretpos: caretpos,\n supplerendebynavn: supplerendebynavn,\n stormodtagerpostnumre: stormodtagerpostnumre,\n multilinje: true\n });\n if (this.options.fuzzy) {\n params.fuzzy = '';\n }\n if (adgangsadresseid) {\n params.adgangsadresseid = adgangsadresseid;\n }\n if (skipVejnavn) {\n params.startfra = 'adgangsadresse';\n }\n return this.options.fetchImpl(\"\".concat(this.options.baseUrl, \"/autocomplete\"), params);\n }\n }, {\n key: \"_scheduleRequest\",\n value: function _scheduleRequest(request) {\n if (this.state.currentRequest !== null) {\n this.state.pendingRequest = request;\n } else {\n this.state.currentRequest = request;\n this._executeRequest();\n }\n }\n }, {\n key: \"_executeRequest\",\n value: function _executeRequest() {\n var _this = this;\n var request = this.state.currentRequest;\n var adgangsadresseid = null;\n var skipVejnavn = false;\n var text, caretpos;\n if (request.selected) {\n var item = request.selected;\n if (item.type !== this.options.type) {\n adgangsadresseid = item.type === 'adgangsadresse' ? item.data.id : null;\n skipVejnavn = item.type === 'vejnavn';\n text = item.tekst;\n caretpos = item.caretpos;\n } else {\n this.options.selectCallback(item);\n this.selected = item;\n this._requestCompleted();\n return;\n }\n } else {\n text = request.text;\n caretpos = request.caretpos;\n }\n if (request.selectedId) {\n var params = {\n id: request.selectedId,\n type: this.options.type\n };\n return this.options.fetchImpl(\"\".concat(this.options.baseUrl, \"/autocomplete\"), params).then(function (result) {\n return _this._handleResponse(request, result);\n }, function (error) {\n return _this._handleFailedRequest(request, error);\n });\n } else if (request.selected || request.text.length >= this.options.minLength) {\n this._getAutocompleteResponse(text, caretpos, skipVejnavn, adgangsadresseid, this.options.supplerendebynavn, this.options.stormodtagerpostnumre).then(function (result) {\n return _this._handleResponse(request, result);\n }, function (error) {\n return _this._handleFailedRequest(request, error);\n });\n } else {\n this._handleResponse(request, []);\n }\n }\n }, {\n key: \"_handleFailedRequest\",\n value: function _handleFailedRequest(request, error) {\n var _this2 = this;\n console.error('DAWA request failed', error);\n return delay(this.options.retryDelay).then(function () {\n if (!_this2.state.pendingRequest) {\n _this2._scheduleRequest(request);\n }\n _this2._requestCompleted();\n });\n }\n }, {\n key: \"_handleResponse\",\n value: function _handleResponse(request, result) {\n if (request.selected) {\n if (result.length === 1) {\n var item = result[0];\n if (item.type === this.options.type) {\n this.options.selectCallback(item);\n } else {\n if (!this.state.pendingRequest) {\n this.state.pendingRequest = {\n selected: item\n };\n }\n }\n } else if (this.options.renderCallback) {\n this.options.renderCallback(result);\n }\n } else if (request.selectedId) {\n if (result.length === 1) {\n this.selected = result[0];\n this.options.initialRenderCallback(result[0].tekst);\n }\n } else {\n if (this.options.renderCallback) {\n this.options.renderCallback(result);\n }\n }\n this._requestCompleted();\n }\n }, {\n key: \"_requestCompleted\",\n value: function _requestCompleted() {\n this.state.currentRequest = this.state.pendingRequest;\n this.state.pendingRequest = null;\n if (this.state.currentRequest) {\n this._executeRequest();\n }\n }\n }, {\n key: \"setRenderCallback\",\n value: function setRenderCallback(renderCallback) {\n this.options.renderCallback = renderCallback;\n }\n }, {\n key: \"setInitialRenderCallback\",\n value: function setInitialRenderCallback(renderCallback) {\n this.options.initialRenderCallback = renderCallback;\n }\n }, {\n key: \"setSelectCallback\",\n value: function setSelectCallback(selectCallback) {\n this.options.selectCallback = selectCallback;\n }\n }, {\n key: \"update\",\n value: function update(text, caretpos) {\n var request = {\n text: text,\n caretpos: caretpos\n };\n this._scheduleRequest(request);\n }\n }, {\n key: \"select\",\n value: function select(item) {\n var request = {\n selected: item\n };\n this._scheduleRequest(request);\n }\n }, {\n key: \"selectInitial\",\n value: function selectInitial(id) {\n var request = {\n selectedId: id\n };\n this._scheduleRequest(request);\n }\n }, {\n key: \"destroy\",\n value: function destroy() {}\n }]);\n return AutocompleteController;\n}();\n\n/**\n * lodash (Custom Build)
\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors
\n * Released under MIT license
\n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof commonjsGlobal == 'object' && commonjsGlobal && commonjsGlobal.Object === Object && commonjsGlobal;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n result = wait - timeSinceLastCall;\n\n return maxing ? nativeMin(result, maxWait - timeSinceLastInvoke) : result;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = value.replace(reTrim, '');\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nvar lodash_debounce = debounce;\n\nfunction dawaAutocomplete(inputElm, options) {\n options = Object.assign({\n select: function select() {\n return null;\n }\n }, options);\n var controllerOptions = ['baseUrl', 'minLength', 'params', 'fuzzy', 'stormodtagerpostnumre', 'supplerendebynavn', 'type'].reduce(function (memo, optionName) {\n if (options.hasOwnProperty(optionName)) {\n memo[optionName] = options[optionName];\n }\n return memo;\n }, {});\n if (!controllerOptions.type) {\n if (options.adgangsadresserOnly) {\n controllerOptions.type = 'adgangsadresse';\n } else {\n controllerOptions.type = 'adresse';\n }\n }\n var controller = new AutocompleteController(controllerOptions);\n var updateControllerOnTextChange = function updateControllerOnTextChange(newText, newCaretpos) {\n return controller.update(newText, newCaretpos);\n };\n updateControllerOnTextChange = options.debounce ? lodash_debounce(updateControllerOnTextChange, options.debounce, {\n maxWait: 500\n }) : updateControllerOnTextChange;\n var ui = autocompleteUi(inputElm, {\n onSelect: function onSelect(suggestion) {\n controller.select(suggestion);\n },\n onTextChange: updateControllerOnTextChange,\n render: options.render,\n multiline: options.multiline || false\n });\n controller.setRenderCallback(function (suggestions) {\n return ui.setSuggestions(suggestions);\n });\n controller.setSelectCallback(function (selected) {\n ui.selectAndClose(selected.tekst);\n options.select(selected);\n });\n controller.setInitialRenderCallback(function (text) {\n return ui.selectAndClose(text);\n });\n if (options.id) {\n controller.selectInitial(options.id);\n }\n return {\n id: function id(_id) {\n return controller.selectInitial(_id);\n },\n destroy: function destroy() {\n return ui.destroy();\n },\n selected: function selected() {\n return controller.selected;\n }\n };\n}\n\nexport { dawaAutocomplete };\n","import {dawaAutocomplete} from 'dawa-autocomplete2'\r\nimport { onMounted, ref, watchEffect} from 'vue';\r\n\r\nexport default {\r\n name: \"FormAddressField\",\r\n props: { \r\n addressLineValue: {\r\n type: String,\r\n required:true\r\n },\r\n zipCodeValue: {\r\n type: String,\r\n required:true\r\n },\r\n cityValue: {\r\n type: String,\r\n required:true\r\n },\r\n addressPlaceholder: {\r\n type: String,\r\n required:false\r\n },\r\n zipCodePlaceholder: {\r\n type: String,\r\n required:false\r\n },\r\n cityPlaceholder: {\r\n type: String,\r\n required:false\r\n },\r\n addressLabel: {\r\n type: String,\r\n required:false,\r\n default: \"Adresse og husnummer\"\r\n },\r\n zipCodeLabel: {\r\n type: String,\r\n required:false,\r\n default: \"Postnummer\"\r\n },\r\n cityLabel: {\r\n type: String,\r\n required:false,\r\n default: \"By\"\r\n },\r\n errorMessageLabel: {\r\n type: String,\r\n required:true\r\n },\r\n isValidationError: {\r\n type: Boolean,\r\n required:true\r\n },\r\n onchangeCallback: {\r\n type: Function,\r\n required:false\r\n },\r\n onclickCallback: {\r\n type: Function,\r\n required:false\r\n },\r\n disabled: {\r\n type: Boolean,\r\n required: false,\r\n default: false\r\n }\r\n },\r\n setup(props, {emit}){\r\n const addressLine = ref(props.addressLineValue ?? '')\r\n const zipCode = ref(props.zipCodeValue ?? '')\r\n const city = ref(props.cityValue ?? '')\r\n\r\n watchEffect(() => {\r\n emit('update:addressLineValue', addressLine.value)\r\n emit('update:zipCodeValue', zipCode.value)\r\n emit('update:cityValue', city.value)\r\n })\r\n\r\n const clearAddress = function () {\r\n addressLine.value = ''\r\n zipCode.value = ''\r\n city.value = ''\r\n }\r\n\r\n onMounted(()=>{\r\n const mainInput = document.querySelector('.dawa-adresse-vej')\r\n const zipcodeInput = document.querySelector('.dawa-adresse-postnr')\r\n const cityInput = document.querySelector('.dawa-adresse-postnrnavn')\r\n\r\n // intentionally forcing input to be made in mainInput\r\n zipcodeInput.addEventListener('focus',()=>{\r\n mainInput.focus()\r\n })\r\n cityInput.addEventListener('focus',()=>{\r\n mainInput.focus()\r\n })\r\n\r\n dawaAutocomplete(mainInput, {\r\n select: function(selected) {\r\n zipCode.value = selected.data.postnr\r\n city.value = selected.data.postnrnavn\r\n\r\n setTimeout(()=> {\r\n const floor = selected.data.etage ? selected.data.etage : ''\r\n const door = selected.data.dør ? selected.data.dør: ''\r\n addressLine.value = `${selected.data.adresseringsvejnavn} ${selected.data.husnr} ${floor} ${door}`.trim()\r\n\r\n emit('update:addressSelected', {\r\n addressLine: addressLine.value,\r\n zipCode: zipCode.value,\r\n city: city.value\r\n })\r\n\r\n }, 100)\r\n }\r\n })\r\n })\r\n \r\n return {\r\n addressLine,\r\n zipCode,\r\n city,\r\n clearAddress\r\n }\r\n }\r\n}","import { render } from \"./FormAddressField.vue?vue&type=template&id=45855e01\"\nimport script from \"./FormAddressField.vue?vue&type=script&lang=js\"\nexport * from \"./FormAddressField.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"D:\\\\a\\\\1\\\\s\\\\frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","// Utility for checkout only\r\nexport function checkoutScrollToTop() {\r\n const element = document.querySelector('.kb-checkout-content__wrapper');\r\n if (element) {\r\n element.scrollIntoView({ behavior: 'smooth' });\r\n }\r\n}","import { ref, computed, onMounted } from 'vue'\r\nimport { useStore } from 'vuex'\r\n\r\nimport emailValidator from '../../foundation/js/inputValidators/emailValidator'\r\nimport phoneValidator from '../../foundation/js/inputValidators/phoneValidator'\r\nimport nameValidator from '../../foundation/js/inputValidators/nameValidator'\r\nimport textAreaValidator from '../../foundation/js/inputValidators/textAreaValidator'\r\nimport companyNameValidator from '../../foundation/js/inputValidators/companyNameValidator'\r\nimport cvrValidator from '../../foundation/js/inputValidators/cvrValidator'\r\nimport eanValidator from '../../foundation/js/inputValidators/eanValidator'\r\nimport positiveNumberValidator from '../../foundation/js/inputValidators/positiveNumberValidator'\r\n\r\nimport FormInputTextField from 'components/FormInputTextField/FormInputTextField.vue'\r\nimport FormAddressField from 'components/FormAddressField/FormAddressField.vue'\r\n\r\nimport { checkoutScrollToTop } from '../CheckoutContent/CheckoutScrollToTop'\r\n\r\nexport default {\r\n name: \"CheckoutStepOne\",\r\n components: {FormInputTextField, FormAddressField},\r\n setup(){\r\n onMounted(() => checkoutScrollToTop())\r\n \r\n const store = useStore()\r\n const getLabel = (labelKey)=> store.getters['labels/getLabel']({labelCollection: 'checkout', labelKey: labelKey})\r\n const isSubmitting = computed(()=> store.state.checkout.isSubmitting)\r\n const checkoutSteps = computed( () => store.state.checkout.checkoutSteps)\r\n const currentStep = computed( () => checkoutSteps.value.find(i => i.stepNumber === 2))\r\n const beenFilled = computed(()=> currentStep.value.beenFilled)\r\n \r\n // use beenFilled to access whether step data is in sessionStorage, then make unSubmitted false only if it has\r\n const unSubmitted = ref(beenFilled.value ? false : true)\r\n const hideAllErrors = ref(false)\r\n \r\n const firstNameInput = ref(store.state.checkout.purchaseData.invoice.userInformation.contactFirstName)\r\n const firstNameInputFilled = computed (() => {\r\n return (unSubmitted.value && !firstNameInput.value) ? true : nameValidator(firstNameInput.value)\r\n })\r\n\r\n const lastNameInput = ref(store.state.checkout.purchaseData.invoice.userInformation.contactLastName)\r\n const lastNameInputFilled = computed (() => {\r\n return (unSubmitted.value && !lastNameInput.value) ? true : nameValidator(lastNameInput.value)\r\n })\r\n\r\n const phoneInput = ref(store.state.checkout.purchaseData.invoice.userInformation.mobilePhone)\r\n const phoneInputFilled = computed (() => {\r\n return (unSubmitted.value && !phoneInput.value) ? true : !!phoneValidator(phoneInput.value) \r\n })\r\n\r\n const emailInput = ref(store.state.checkout.purchaseData.invoice.userInformation.email)\r\n const emailInputFilled = computed (() => {\r\n return (unSubmitted.value && !emailInput.value) ? true : !!emailValidator(emailInput.value) \r\n })\r\n\r\n const addressLineInput = ref(store.state.checkout.purchaseData.invoice.invoiceAddress.addressLine)\r\n const addressLineInputFilled = computed (() => {\r\n return (unSubmitted.value && !addressLineInput.value) ? true : (addressLineInput.value.length > 0 && textAreaValidator(addressLineInput.value) && postalCodeInputFilled.value && cityInputFilled.value)\r\n })\r\n\r\n const postalCodeInput = ref(store.state.checkout.purchaseData.invoice.invoiceAddress.postalCode)\r\n const postalCodeInputFilled = computed (() => {\r\n return (unSubmitted.value && !addressLineInput.value) ? true : (postalCodeInput.value.length === 4 && textAreaValidator(addressLineInput.value))\r\n })\r\n\r\n const cityInput = ref(store.state.checkout.purchaseData.invoice.invoiceAddress.city)\r\n const cityInputFilled = computed (() => {\r\n return (unSubmitted.value && !cityInput.value.length > 0) && !addressLineInput.value ? true : (cityInput.value.length > 0 && textAreaValidator(addressLineInput.value))\r\n })\r\n\r\n const customerTypeInput = ref(store.state.checkout.purchaseData.invoice.userInformation.customerType)\r\n\r\n const isCompany = computed(() => customerTypeInput.value === 'company')\r\n const isPublicInstitution = computed(() => customerTypeInput.value === 'publicInstitution')\r\n\r\n // if company\r\n const companyNameInput = ref(store.state.checkout.purchaseData.invoice.company.companyName)\r\n const companyNameInputFilled = computed (() => {\r\n return (unSubmitted.value && !companyNameInput.value) ? true : companyNameValidator(companyNameInput.value)\r\n })\r\n \r\n const companyDepartmentInput = ref(store.state.checkout.purchaseData.invoice.company.companyDepartment)\r\n const companyDepartmentInputFilled = computed (() => {\r\n return (unSubmitted.value && !companyDepartmentInput.value) ? true : ( companyDepartmentInput.value ? companyNameValidator(companyDepartmentInput.value) : true)\r\n })\r\n\r\n const companyCvrInput = ref(store.state.checkout.purchaseData.invoice.company.companyCvr)\r\n const companyCvrInputFilled = computed (() => {\r\n return (unSubmitted.value && !companyCvrInput.value) ? true : cvrValidator(companyCvrInput.value)\r\n })\r\n\r\n // if public institution\r\n const publicInstitutionNameInput = ref(store.state.checkout.purchaseData.invoice.public.publicInstitutionNameInput)\r\n const publicInstitutionNameInputFilled = computed (() => {\r\n return (unSubmitted.value && !publicInstitutionNameInput.value) ? true : companyNameValidator(publicInstitutionNameInput.value)\r\n })\r\n const publicInstitutionDepartmentOrContact = ref(store.state.checkout.purchaseData.invoice.public.publicInstitutionDepartmentOrContact)\r\n const publicInstitutionDepartmentOrContactFilled = computed (() => {\r\n return (unSubmitted.value && !publicInstitutionDepartmentOrContact.value) ? true : (publicInstitutionDepartmentOrContact.value ? companyNameValidator(publicInstitutionDepartmentOrContact.value) : true)\r\n })\r\n const publicInstitutionUserId = ref(store.state.checkout.purchaseData.invoice.public.publicInstitutionUserId)\r\n // fx. 'Københavns Kommune'\r\n const publicInstitutionUserIdFilled = computed (() => {\r\n return (unSubmitted.value && !publicInstitutionUserId.value) ? true : (publicInstitutionUserId.value ? textAreaValidator(publicInstitutionUserId.value) : true)\r\n })\r\n const publicInstitutionEan = ref(store.state.checkout.purchaseData.invoice.public.publicInstitutionEan)\r\n const publicInstitutionEanFilled = computed (() => {\r\n return (unSubmitted.value && !publicInstitutionEan.value) ? true : eanValidator(publicInstitutionEan.value)\r\n })\r\n\r\n const inputIsValid = computed(function(){ \r\n // only validating the required inputs \r\n \r\n let addressFilled = addressLineInputFilled.value && \r\n postalCodeInputFilled.value &&\r\n cityInputFilled.value\r\n\r\n let companyDetailsFilled = isCompany.value ? \r\n (companyNameInputFilled.value &&\r\n companyCvrInputFilled.value) :\r\n true\r\n \r\n let publicInstitutionDetailsFilled = isPublicInstitution.value ? \r\n (publicInstitutionNameInputFilled.value &&\r\n publicInstitutionEanFilled.value) :\r\n true\r\n \r\n return (\r\n firstNameInputFilled.value &&\r\n lastNameInputFilled.value &&\r\n phoneInputFilled.value &&\r\n emailInputFilled.value &&\r\n addressFilled &&\r\n companyDetailsFilled && \r\n publicInstitutionDetailsFilled\r\n )\r\n })\r\n \r\n \r\n const onSubmit = function() {\r\n unSubmitted.value = false\r\n\r\n hideAllErrors.value = true\r\n setTimeout(()=>{\r\n // we delay a bit here to allow screenreaders to catchup to changes in the DOM about invalid fields.\r\n hideAllErrors.value = false\r\n },100)\r\n \r\n if (!inputIsValid.value) \r\n return false \r\n \r\n const checkoutInvoicePayload = {\r\n invoiceAddress: {\r\n addressLine: addressLineInput.value,\r\n postalCode: postalCodeInput.value,\r\n city: cityInput.value,\r\n },\r\n userInformation: {\r\n mobilePhone: phoneInput.value,\r\n email: emailInput.value,\r\n contactFirstName: firstNameInput.value,\r\n contactLastName: lastNameInput.value,\r\n customerType: customerTypeInput.value,\r\n },\r\n // company inputs\r\n company: {\r\n companyName: companyNameInput.value,\r\n companyDepartment: companyDepartmentInput.value,\r\n companyCvr: companyCvrInput.value\r\n },\r\n // public institution inputs\r\n public: {\r\n publicInstitutionNameInput: publicInstitutionNameInput.value, \r\n publicInstitutionDepartmentOrContact: publicInstitutionDepartmentOrContact.value, \r\n publicInstitutionUserId: publicInstitutionUserId.value,\r\n publicInstitutionEan: publicInstitutionEan.value\r\n }\r\n }\r\n // set active delivery address as default to invoice address\r\n store.commit('checkout/set_active_delivery_address', checkoutInvoicePayload.invoiceAddress)\r\n \r\n store.commit('checkout/set_purchase_data_invoice', checkoutInvoicePayload)\r\n\r\n // if succes set been filled to current step, as data is now in session storage\r\n store.commit('checkout/update_checkout_step_been_filled', 1)\r\n\r\n // if succes set step to next stepNumber\r\n store.commit('checkout/update_checkout_step',{nextStepNumber: 2})\r\n }\r\n\r\n const showCompanyInputs = computed(() => isCompany.value)\r\n const showPublicInstitutionInputs = computed(() => isPublicInstitution.value)\r\n\r\n return {\r\n hideAllErrors,\r\n getLabel,\r\n firstNameInput,\r\n lastNameInput,\r\n phoneInput,\r\n emailInput,\r\n addressLineInput,\r\n postalCodeInput,\r\n cityInput,\r\n companyNameInput,\r\n companyDepartmentInput,\r\n companyCvrInput,\r\n publicInstitutionNameInput,\r\n publicInstitutionDepartmentOrContact,\r\n publicInstitutionUserId,\r\n publicInstitutionEan,\r\n onSubmit,\r\n isSubmitting,\r\n unSubmitted,\r\n customerTypeInput,\r\n isPublicInstitution,\r\n showPublicInstitutionInputs,\r\n isCompany,\r\n showCompanyInputs,\r\n // inputs filled\r\n companyNameInputFilled,\r\n companyDepartmentInputFilled,\r\n companyCvrInputFilled,\r\n publicInstitutionNameInputFilled,\r\n publicInstitutionDepartmentOrContactFilled,\r\n publicInstitutionUserIdFilled,\r\n publicInstitutionEanFilled,\r\n firstNameInputFilled,\r\n lastNameInputFilled,\r\n phoneInputFilled,\r\n emailInputFilled,\r\n addressLineInputFilled,\r\n postalCodeInputFilled,\r\n cityInputFilled\r\n }\r\n \r\n }\r\n}","export default function (input) {\r\n var eanNumber = Number(input)\r\n\r\n // Check if the conversion was successful and if the input length is 13\r\n return !isNaN(eanNumber) && input.length === 13\r\n}\r\n","import { render } from \"./CheckoutStepOne.vue?vue&type=template&id=5631a794\"\nimport script from \"./CheckoutStepOne.vue?vue&type=script&lang=js\"\nexport * from \"./CheckoutStepOne.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"D:\\\\a\\\\1\\\\s\\\\frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\r\n\r\n\r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n \r\n \r\n \r\n \r\n\r\n","\r\n\r\n\r\n\r\n \r\n\r\n
\r\n
\r\n
\r\n
{{ getLabel('title') }}
\r\n
\r\n
\r\n {{ getLabel('price') }}
\r\n \r\n
\r\n\r\n
\r\n\r\n
\r\n \r\n
{{ invoiceAddress.addressLine }}
\r\n
{{ invoiceAddress.postalCode }}
\r\n
{{ invoiceAddress.city }}
\r\n
\r\n
\r\n \r\n\r\n
\r\n {{ getLabel('text') }}
\r\n \r\n\r\n
\r\n
\r\n\r\n\r\n
\r\n\r\n","import { useStore } from 'vuex'\r\nimport { computed } from 'vue'\r\n\r\nexport default {\r\n name: 'DeliveryCard',\r\n props: {\r\n type: {\r\n type: String,\r\n required: true\r\n },\r\n svgIcon: {\r\n type: String,\r\n required: true\r\n },\r\n isShippingFree: {\r\n type: Boolean,\r\n required: false\r\n }\r\n },\r\n setup(props) {\r\n const store = useStore()\r\n\r\n const activeDeliveryType = computed(\r\n () => store.state.checkout.stepTwo.activeDeliveryType\r\n )\r\n\r\n let isChosenDelivery = computed(() => {\r\n if (activeDeliveryType.value) {\r\n return props.type === activeDeliveryType.value ? true : false\r\n } else {\r\n return false\r\n }\r\n })\r\n\r\n const totals = computed(() => store.state.basket.totals)\r\n\r\n const isShippingFree = computed(\r\n () => totals.value?.isShippingFree ?? false\r\n )\r\n\r\n const invoiceAddress = computed(() => {\r\n return store.state.checkout.purchaseData.invoice.invoiceAddress\r\n })\r\n\r\n const determineLabelCollection = function () {\r\n switch (props.type) {\r\n case 'home':\r\n return 'deliveryCardHome'\r\n case 'pickUp':\r\n return 'deliveryCardPickUp'\r\n default:\r\n console.error(\r\n 'search boolean or type missing in order to determine labelCollection'\r\n )\r\n }\r\n }\r\n\r\n const getLabel = (labelKey) =>\r\n store.getters['labels/getLabel']({\r\n labelCollection: determineLabelCollection(),\r\n labelKey: labelKey\r\n })\r\n\r\n const updateActiveDeliveryType = function (payload) {\r\n store.commit('checkout/set_active_delivery_type', payload)\r\n if (activeDeliveryType != payload)\r\n store.dispatch('basket/updateActiveDeliveryType', payload)\r\n }\r\n\r\n const showDifferentAddress = computed(\r\n () => store.state.checkout.stepTwo.showDifferentAddress\r\n )\r\n const updateShowDifferentAddress = function (payload) {\r\n store.commit('checkout/set_show_different_address', payload)\r\n }\r\n\r\n const updateShowPickUpAddresses = function (payload) {\r\n store.commit('checkout/set_show_pick_up_addresses', payload)\r\n }\r\n\r\n const handleShowDifferentAddress = function () {\r\n if (showDifferentAddress.value === false) {\r\n updateShowDifferentAddress(true)\r\n updateActiveDeliveryType(props.type)\r\n updateShowPickUpAddresses(false)\r\n } else {\r\n // set delivery data validation to true when different address NOT chosen\r\n store.commit(\r\n 'checkout/set_delivery_data_validation_success',\r\n true\r\n )\r\n updateShowDifferentAddress(false)\r\n updateShowPickUpAddresses(false)\r\n updateActiveDeliveryType(props.type)\r\n }\r\n }\r\n\r\n const handleChosenDelivery = function () {\r\n updateActiveDeliveryType(props.type)\r\n\r\n // set active delivery address as default to invoice address\r\n store.commit(\r\n 'checkout/set_active_delivery_address',\r\n store.state.checkout.purchaseData.invoice.invoiceAddress\r\n )\r\n\r\n if (isChosenDelivery.value === true) {\r\n switch (props.type) {\r\n case 'home':\r\n updateShowPickUpAddresses(false)\r\n updateShowDifferentAddress(false)\r\n // set delivery data validation to false when default address chosen\r\n store.commit(\r\n 'checkout/set_delivery_data_validation_success',\r\n true\r\n )\r\n break\r\n case 'pickUp':\r\n updateShowDifferentAddress(false)\r\n updateShowPickUpAddresses(true)\r\n // set delivery data validation to false when different than default address chosen\r\n store.commit(\r\n 'checkout/set_delivery_data_validation_success',\r\n false\r\n )\r\n break\r\n default:\r\n updateShowDifferentAddress(false)\r\n updateShowPickUpAddresses(false)\r\n // set delivery data validation to true when default address chosen\r\n store.commit(\r\n 'checkout/set_delivery_data_validation_success',\r\n true\r\n )\r\n }\r\n }\r\n }\r\n\r\n return {\r\n getLabel,\r\n showDifferentAddress,\r\n handleShowDifferentAddress,\r\n handleChosenDelivery,\r\n isChosenDelivery,\r\n invoiceAddress,\r\n asideResults: totals,\r\n isShippingFree\r\n }\r\n }\r\n}\r\n","import { render } from \"./DeliveryCard.vue?vue&type=template&id=68ccd9c2\"\nimport script from \"./DeliveryCard.vue?vue&type=script&lang=js\"\nexport * from \"./DeliveryCard.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"D:\\\\a\\\\1\\\\s\\\\frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\r\n\r\n\r\n \r\n\r\n {{getLabel('title')}}
\r\n\r\n \r\n \r\n \r\n\r\n \r\n
\r\n\r\n \r\n \r\n\r\n \r\n
\r\n\r\n \r\n \r\n
\r\n\r\n \r\n\r\n","import { ref, computed, onMounted, onUpdated } from 'vue'\r\nimport { useStore } from 'vuex'\r\n\r\nimport nameValidator from '../../foundation/js/inputValidators/nameValidator'\r\nimport textAreaValidator from '../../foundation/js/inputValidators/textAreaValidator'\r\nimport companyNameValidator from '../../foundation/js/inputValidators/companyNameValidator'\r\n\r\nimport FormInputTextField from 'components/FormInputTextField/FormInputTextField.vue'\r\nimport FormAddressField from 'components/FormAddressField/FormAddressField.vue'\r\n\r\nexport default {\r\n name: \"DeliveryAddress\",\r\n components: { FormInputTextField, FormAddressField },\r\n props: {\r\n showDifferentAddress: {\r\n type: Boolean,\r\n required: false,\r\n default: false\r\n },\r\n isStepSubmitting: {\r\n type: Boolean,\r\n required: false,\r\n default: false\r\n }\r\n },\r\n setup(props) {\r\n const store = useStore()\r\n const getLabel = (labelKey) => store.getters['labels/getLabel']({ labelCollection: 'deliveryAddress', labelKey: labelKey })\r\n const getLabelCheckout = (labelKey) => store.getters['labels/getLabel']({ labelCollection: 'checkout', labelKey: labelKey })\r\n\r\n onMounted(() => {\r\n store.commit('checkout/set_delivery_data_validation_success', inputIsValid.value)\r\n })\r\n\r\n onUpdated(() => {\r\n store.commit('checkout/set_delivery_data_validation_success', inputIsValid.value)\r\n })\r\n\r\n const showDifferentAddress = ref(props.showDifferentAddress)\r\n const checkoutSteps = computed(() => store.state.checkout.checkoutSteps)\r\n const currentStep = computed(() => checkoutSteps.value.find(i => i.stepNumber === 2))\r\n const beenFilled = computed(() => currentStep.value.beenFilled)\r\n\r\n // use beenFilled to access whether step data is in sessionStorage, then make unSubmitted false only if it is\r\n const unSubmitted = computed(() => (beenFilled.value || !!props.isStepSubmitting) ? false : true)\r\n\r\n const deliveryNameInput = ref(store.state.checkout.stepTwo.differentAddressData.deliveryName)\r\n const deliveryNameInputFilled = computed(() => {\r\n return (!deliveryNameInput.value ? true : companyNameValidator(deliveryNameInput.value))\r\n })\r\n\r\n const deliveryDepartmentInput = ref(store.state.checkout.stepTwo.differentAddressData.deliveryDepartment)\r\n const deliveryDepartmentInputFilled = computed(() => {\r\n return (unSubmitted.value && !deliveryDepartmentInput.value) ? true : (deliveryDepartmentInput.value ? companyNameValidator(deliveryDepartmentInput.value) : true)\r\n })\r\n\r\n const firstNameInput = ref(store.state.checkout.stepTwo.differentAddressData.contactFirstName)\r\n const firstNameInputFilled = computed(() => {\r\n return (unSubmitted.value && !firstNameInput.value) ? true : (firstNameInput.value ? nameValidator(firstNameInput.value) : false)\r\n })\r\n\r\n const lastNameInput = ref(store.state.checkout.stepTwo.differentAddressData.contactLastName)\r\n const lastNameInputFilled = computed(() => {\r\n return (unSubmitted.value && !lastNameInput.value) ? true : nameValidator(lastNameInput.value)\r\n })\r\n\r\n const addressLineInput = ref(store.state.checkout.stepTwo.differentAddressData.addressLine)\r\n const addressLineInputFilled = computed(() => {\r\n return (unSubmitted.value && !addressLineInput.value) ? true : (addressLineInput.value.length > 2 && textAreaValidator(addressLineInput.value) && postalCodeInputFilled.value && cityInputFilled.value)\r\n })\r\n\r\n const postalCodeInput = ref(store.state.checkout.stepTwo.differentAddressData.postalCode)\r\n const postalCodeInputFilled = computed(() => {\r\n return (unSubmitted.value && !addressLineInput.value) ? true : (postalCodeInput.value.length === 4 && textAreaValidator(addressLineInput.value))\r\n })\r\n\r\n const cityInput = ref(store.state.checkout.stepTwo.differentAddressData.city)\r\n const cityInputFilled = computed(() => {\r\n return (unSubmitted.value && !addressLineInput.value) ? true : (cityInput.value.length > 2 && textAreaValidator(addressLineInput.value))\r\n })\r\n\r\n const inputIsValid = computed(function () {\r\n // only validation the required inputs \r\n let addressFilled = addressLineInputFilled.value &&\r\n postalCodeInputFilled.value &&\r\n cityInputFilled.value\r\n\r\n return (\r\n firstNameInputFilled.value &&\r\n lastNameInputFilled.value &&\r\n addressFilled &&\r\n // in case of user returning to old session stached address info, \r\n // check if they're filling in new values (emptied input)\r\n // TODO: czi, kontroller om beenFilled logikken er korrekt. Udkommenteret for nu,\r\n // og undersøger om nødvendige felter er udfyldt. Eftersom enkeltvis feltvalidering\r\n // virker nu, er det nok ikke nødvendigt at have beenFilled logikken her.\r\n // (beenFilled.value && (\r\n // (addressLineInput.value ? true : false) &&\r\n // (firstNameInput.value ? true : false) &&\r\n // (lastNameInput.value ? true : false)\r\n // )\r\n // )\r\n (addressLineInput.value ? true : false) &&\r\n (firstNameInput.value ? true : false) &&\r\n (lastNameInput.value ? true : false)\r\n )\r\n })\r\n\r\n const handleSendToStore = function () {\r\n if (!inputIsValid.value)\r\n return false\r\n\r\n const differentAddressData = {\r\n addressLine: addressLineInput.value,\r\n postalCode: postalCodeInput.value,\r\n city: cityInput.value,\r\n contactFirstName: firstNameInput.value,\r\n contactLastName: lastNameInput.value,\r\n deliveryName: deliveryNameInput.value,\r\n deliveryDepartment: deliveryDepartmentInput.value\r\n }\r\n\r\n // set delivery validation boolean in state\r\n store.commit('checkout/set_delivery_data_validation_success', inputIsValid.value)\r\n store.commit('checkout/set_different_address_data', differentAddressData)\r\n\r\n // if success set been filled to current step, as data is now in session storage\r\n store.commit('checkout/update_checkout_step_been_filled', 2)\r\n\r\n console.log(\"differentAddressData\", differentAddressData)\r\n }\r\n\r\n return {\r\n getLabel,\r\n handleSendToStore,\r\n getLabelCheckout,\r\n showDifferentAddress,\r\n deliveryNameInput,\r\n deliveryDepartmentInput,\r\n firstNameInput,\r\n lastNameInput,\r\n addressLineInput,\r\n postalCodeInput,\r\n cityInput,\r\n deliveryNameInputFilled,\r\n deliveryDepartmentInputFilled,\r\n firstNameInputFilled,\r\n lastNameInputFilled,\r\n addressLineInputFilled,\r\n postalCodeInputFilled,\r\n cityInputFilled\r\n }\r\n }\r\n}","import { render } from \"./DeliveryAddress.vue?vue&type=template&id=6efdac3a\"\nimport script from \"./DeliveryAddress.vue?vue&type=script&lang=js\"\nexport * from \"./DeliveryAddress.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"D:\\\\a\\\\1\\\\s\\\\frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\r\n\r\n\r\n \r\n\r\n {{ getLabel('title') }}
\r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n - \r\n \r\n\r\n \r\n\r\n
\r\n\r\n \r\n\r\n
\r\n\r\n \r\n\r\n \r\n\r\n","import { useStore } from 'vuex'\r\nimport { computed, ref, onMounted } from 'vue'\r\nimport FormAddressField from 'components/FormAddressField/FormAddressField.vue'\r\nimport textAreaValidator from '../../foundation/js/inputValidators/textAreaValidator'\r\nimport isObjectNotNullOrEmpty from 'foundation/js/isObjectNotNullOrEmpty'\r\n\r\nexport default {\r\n name: \"PickUpAddress\",\r\n components: { FormAddressField },\r\n props: {\r\n addressResults: {\r\n type: Array,\r\n required: false\r\n },\r\n displayInputErrors: {\r\n type: Boolean,\r\n required: false,\r\n default: false\r\n }\r\n },\r\n setup() {\r\n const store = useStore()\r\n const pickUpAddressData = computed(() => store.state.checkout.stepTwo.pickUpAddressData)\r\n\r\n onMounted(() => {\r\n store.dispatch('checkout/fetchServicePoints')\r\n var isDeliveryDataValid = isObjectNotNullOrEmpty(pickUpAddressData.value)\r\n store.commit('checkout/set_delivery_data_validation_success', isDeliveryDataValid)\r\n })\r\n\r\n const getLabel = (labelKey) => store.getters['labels/getLabel']({ labelCollection: 'pickUpAddress', labelKey: labelKey })\r\n const getFormAddressFieldLabel = (labelKey) => store.getters['labels/getLabel']({ labelCollection: 'checkout', labelKey: labelKey })\r\n\r\n const unSubmitted = ref(true)\r\n\r\n const addressResults = computed(() => store.state.checkout.stepTwo.pickUpAddresses)\r\n\r\n const addressRadioInput = ref('')\r\n\r\n const addressLineInput = ref('')\r\n const addressLineInputFilled = computed(() => {\r\n return addressLineInput.value.length > 2 && textAreaValidator(addressLineInput.value)\r\n })\r\n\r\n const postalCodeInput = ref('')\r\n const postalCodeInputFilled = computed (() => {\r\n return !addressLineInput.value ? true : postalCodeInput.value.length === 4 && textAreaValidator(addressLineInput.value)\r\n })\r\n\r\n const cityInput = ref('')\r\n const cityInputFilled = computed (() => {\r\n return !addressLineInput.value ? true : cityInput.value.length > 2 && textAreaValidator(addressLineInput.value)\r\n })\r\n\r\n const inputIsValid = function () {\r\n let addressFilled = addressLineInputFilled.value\r\n\r\n return (\r\n addressFilled \r\n )\r\n }\r\n\r\n const handleAddressSelected = function (e) {\r\n // Update referenced fields with emitted data from child component\r\n addressLineInput.value = e.addressLine\r\n postalCodeInput.value = e.zipCode\r\n cityInput.value = e.city\r\n onSubmit()\r\n }\r\n\r\n const onSubmit = function () {\r\n unSubmitted.value = false\r\n if (!inputIsValid())\r\n return false\r\n\r\n addressRadioInput.value = {}\r\n store.commit('checkout/clear_pick_up_address_data')\r\n\r\n // set active delivery address as default to invoice address\r\n store.commit('checkout/set_active_delivery_address', {\r\n addressLine: addressLineInput.value,\r\n postalCode: postalCodeInput.value\r\n })\r\n\r\n // insert correct data from search dawa inputs to fetch service points\r\n store.dispatch('checkout/fetchServicePoints')\r\n }\r\n\r\n const setPickUpAddressInStore = function () {\r\n\r\n store.commit('checkout/set_delivery_data_validation_success', addressRadioInput.value ? true : false)\r\n\r\n store.commit('checkout/set_pick_up_address_data', {\r\n addressLine: addressRadioInput.value.addressLine,\r\n city: addressRadioInput.value.city,\r\n postalCode: addressRadioInput.value.zipCode,\r\n id: addressRadioInput.value.id,\r\n name: addressRadioInput.value.name,\r\n latitude: addressRadioInput.value.latitude,\r\n longitude: addressRadioInput.value.longitude\r\n })\r\n }\r\n\r\n return {\r\n onSubmit,\r\n setPickUpAddressInStore,\r\n handleAddressSelected,\r\n\r\n pickUpAddressData,\r\n\r\n addressLineInputFilled,\r\n postalCodeInputFilled,\r\n cityInputFilled,\r\n addressLineInput,\r\n postalCodeInput,\r\n cityInput,\r\n addressRadioInput,\r\n\r\n addressResults,\r\n\r\n getLabel,\r\n getFormAddressFieldLabel\r\n }\r\n\r\n }\r\n}","import { render } from \"./PickUpAddress.vue?vue&type=template&id=715b26d0\"\nimport script from \"./PickUpAddress.vue?vue&type=script&lang=js\"\nexport * from \"./PickUpAddress.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"D:\\\\a\\\\1\\\\s\\\\frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { useStore } from 'vuex'\r\nimport {ref, computed, onMounted} from 'vue'\r\nimport DeliveryCard from 'components/DeliveryCard/DeliveryCard.vue'\r\nimport DeliveryAddress from 'components/DeliveryAddress/DeliveryAddress.vue'\r\nimport PickUpAddress from 'components/PickUpAddress/PickUpAddress.vue'\r\nimport { checkoutScrollToTop } from '../CheckoutContent/CheckoutScrollToTop'\r\n\r\nexport default {\r\n name: \"CheckoutStepTwo\",\r\n components: {DeliveryCard, DeliveryAddress, PickUpAddress},\r\n props: {\r\n onSubmitCallback: {\r\n type: Function,\r\n required: false\r\n }\r\n },\r\n setup(props) {\r\n const store = useStore()\r\n\r\n onMounted(() => {\r\n store.dispatch('basket/fetchBasket')\r\n checkoutScrollToTop() \r\n })\r\n\r\n const displayInputErrors = ref(false)\r\n\r\n const getLabel = (labelKey)=> store.getters['labels/getLabel']({labelCollection: 'checkout', labelKey: labelKey})\r\n\r\n const isSubmitting = computed(()=> store.state.checkout.isSubmitting)\r\n \r\n const checkoutSteps = computed( () => store.state.checkout.checkoutSteps)\r\n const currentStep = computed( () => checkoutSteps.value.find(i => i.stepNumber === 2))\r\n const beenFilled = computed(()=> currentStep.value.beenFilled)\r\n \r\n // use beenFilled to access whether step data is in sessionStorage, then make unSubmitted false only if it has\r\n const unSubmitted = ref(beenFilled.value ? false : true)\r\n const isStepSubmitting = computed(()=> !unSubmitted.value)\r\n\r\n const showDifferentAddress = computed( () => store.state.checkout.stepTwo.showDifferentAddress)\r\n const showPickUpAddresses = computed( () => store.state.checkout.stepTwo.showPickUpAddresses)\r\n\r\n const deliveryDataValidationSuccess = computed( () => store.state.checkout.stepTwo.deliveryDataValidationSuccess)\r\n \r\n const activeDeliveryAddress = computed( () => store.state.checkout.stepTwo.activeDeliveryAddress)\r\n \r\n const differentAddressData = computed( () => store.state.checkout.stepTwo.differentAddressData)\r\n const pickUpAddressData = computed( () => store.state.checkout.stepTwo.pickUpAddressData)\r\n\r\n const activeDeliveryAddressData = computed(()=> {\r\n if(showPickUpAddresses.value) {\r\n return pickUpAddressData.value\r\n } \r\n if (showDifferentAddress.value) {\r\n return differentAddressData.value\r\n } \r\n \r\n return activeDeliveryAddress.value\r\n \r\n })\r\n\r\n const onSubmit = function() {\r\n unSubmitted.value = false\r\n displayInputErrors.value = true\r\n \r\n const checkoutDeliveryPayload = activeDeliveryAddressData.value\r\n\r\n if (props.onSubmitCallback) {\r\n props.onSubmitCallback(\r\n deliveryDataValidationSuccess.value ? checkoutDeliveryPayload : null\r\n )\r\n } else {\r\n if (!deliveryDataValidationSuccess.value)\r\n return false\r\n \r\n store.commit('checkout/set_purchase_data_delivery', checkoutDeliveryPayload)\r\n\r\n // update the active delivery address (initially is set to invoice address)\r\n store.commit('checkout/set_active_delivery_address', checkoutDeliveryPayload)\r\n\r\n // if succes set step to next stepNumber\r\n store.commit('checkout/update_checkout_step',{nextStepNumber: 3})\r\n }\r\n }\r\n \r\n return {\r\n onSubmit,\r\n isSubmitting,\r\n isStepSubmitting,\r\n getLabel,\r\n displayInputErrors,\r\n showDifferentAddress,\r\n showPickUpAddresses,\r\n toStepOne: () => store.commit('checkout/update_checkout_step',{nextStepNumber: 1})\r\n }\r\n \r\n }\r\n}","import { render } from \"./CheckoutStepTwo.vue?vue&type=template&id=113562ba\"\nimport script from \"./CheckoutStepTwo.vue?vue&type=script&lang=js\"\nexport * from \"./CheckoutStepTwo.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"D:\\\\a\\\\1\\\\s\\\\frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\r\n\r\n\r\n \r\n\r\n \r\n \r\n
{{ getLabel('informationTitle') }}\r\n
\r\n
\r\n {{ getLabel('informationAndDeliveryTitle') }}
\r\n\r\n
\r\n \r\n \r\n
\r\n {{ purchaseData.invoice.company.companyName }}
\r\n \r\n
\r\n {{ purchaseData.invoice.company.companyDepartment }}
\r\n \r\n
\r\n {{ purchaseData.invoice.company.companyCvr }}
\r\n \r\n
\r\n \r\n\r\n
\r\n \r\n \r\n
\r\n {{ purchaseData.invoice.public.publicInstitutionNameInput }}
\r\n \r\n
\r\n {{ purchaseData.invoice.public.publicInstitutionUserId }}
\r\n \r\n
\r\n {{\r\n purchaseData.invoice.public.publicInstitutionDepartmentOrContact }}
\r\n \r\n
\r\n {{ purchaseData.invoice.public.publicInstitutionEan }}
\r\n \r\n
\r\n \r\n\r\n
\r\n {{ `${purchaseData.invoice.userInformation.contactFirstName}\r\n ${purchaseData.invoice.userInformation.contactLastName}`\r\n }}
\r\n
{{ purchaseData.invoice.invoiceAddress.addressLine }}
\r\n
{{ `${purchaseData.invoice.invoiceAddress.postalCode}\r\n ${purchaseData.invoice.invoiceAddress.city}` }}
\r\n
{{ `\r\n ${purchaseData.invoice.userInformation.mobilePhone}` }}
\r\n
{{ purchaseData.invoice.userInformation.email }}
\r\n
\r\n
\r\n\r\n \r\n \r\n
{{ getLabel('deliveryTitle') }}
\r\n\r\n
\r\n \r\n \r\n
\r\n {{ purchaseData.delivery.deliveryAddress.deliveryName }}
\r\n \r\n
\r\n {{ purchaseData.delivery.deliveryAddress.deliveryDepartment }}\r\n
\r\n \r\n
\r\n \r\n\r\n
\r\n {{\r\n purchaseData.delivery.deliveryAddress.name }}
\r\n \r\n\r\n
\r\n {{\r\n `${purchaseData.delivery.deliveryAddress.contactFirstName}\r\n ${purchaseData.delivery.deliveryAddress.contactLastName}` }}
\r\n \r\n\r\n
{{ purchaseData.delivery.deliveryAddress.addressLine }}
\r\n
{{ `${purchaseData.delivery.deliveryAddress.postalCode}\r\n ${purchaseData.delivery.deliveryAddress.city}` }}
\r\n
{{ getLabel('deliveryEditTitle') }}\r\n
\r\n \r\n\r\n \r\n\r\n \r\n \r\n
{{ getLabelCheckoutNavigation('udlaanDeliveryText') }}
\r\n
\r\n \r\n\r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n\r\n \r\n \r\n
\r\n
\r\n {{ getLabel('termsAndConditionsErrorMessage') }}\r\n
\r\n
\r\n\r\n \r\n\r\n\r\n \r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n \r\n \r\n \r\n\r\n \r\n\r\n","\r\n\r\n\r\n \r\n\r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n
\r\n
\r\n
\r\n\r\n \r\n
\r\n
\r\n
\r\n\r\n \r\n \r\n \r\n
\r\n\r\n \r\n \r\n {{ getLabel('validationPaymentMethod') }}
\r\n\r\n \r\n \r\n\r\n","import { ref, computed, onMounted } from 'vue'\r\nimport { useStore } from 'vuex'\r\nimport FormInputTextField from 'components/FormInputTextField/FormInputTextField.vue'\r\n\r\nexport default {\r\n name: \"WebshopPaymentSelector\",\r\n components: { FormInputTextField },\r\n props: {},\r\n setup() {\r\n const paymentOptions = {\r\n \"private\": [\r\n 'mobilepay',\r\n 'creditcard'\r\n ],\r\n \"company\": [\r\n 'mobilepay',\r\n 'creditcard'\r\n ],\r\n \"publicInstitution\": [\r\n 'mobilepay',\r\n 'creditcard',\r\n 'betalingsservice'\r\n ],\r\n \"frivillige\": [\r\n 'betalingsservice'\r\n ]\r\n }\r\n \r\n const store = useStore()\r\n const unSubmitted = ref(true)\r\n const getLabel = (labelKey) => store.getters['labels/getLabel']({ labelCollection: 'webshopPaymentSelector', labelKey: labelKey })\r\n const paymentType = computed(()=> store.state.checkout.purchaseData.invoice.userInformation.customerType)\r\n const paymentMethodInState = computed(()=> store.state.checkout.stepThree.paymentData.paymentMethod)\r\n\r\n const setPaymentTypeOnEnter = function(e){\r\n const option = e.target.getAttribute('for')\r\n const radio = document.getElementById(option)\r\n paymentMethod.value = +radio.value\r\n commitPaymentInputToStore()\r\n }\r\n \r\n // in order to re-select first option on first visit to paymentSelector \r\n const paymentMethod = ref(paymentMethodInState.value ? paymentMethodInState.value : 1)\r\n const paymentMethodFilled = computed(() => {\r\n return unSubmitted.value ? false : !!paymentMethod.value > 0\r\n })\r\n\r\n const updateActivePaymentMethod = () => {\r\n // updating the active payment method to stepThree in state\r\n // in order to apply active step styles \r\n if(paymentMethodFilled.value ) {\r\n store.commit('checkout/set_active_payment_method', paymentMethod.value)\r\n }\r\n }\r\n\r\n const commitPaymentInputToStore = () => {\r\n updateActivePaymentMethod()\r\n unSubmitted.value = false\r\n let isAllValid = paymentMethodFilled.value\r\n\r\n store.commit('checkout/set_payment_data_validation_success', paymentMethodFilled.value)\r\n\r\n if(isAllValid){\r\n const paymentPayload = { paymentMethod: paymentMethod.value }\r\n store.commit('checkout/set_payment_data', paymentPayload)\r\n }\r\n }\r\n \r\n const determineActivePaymentMethod = function(currentPaymentMethod) {\r\n // if nothing in state yet, give styles to clicked method\r\n // concious choice with '==', as we need to compare string and number\r\n if(!paymentMethodInState.value) {\r\n return currentPaymentMethod == paymentMethod.value ? true : false\r\n } else {\r\n return currentPaymentMethod == paymentMethodInState.value ? true : false\r\n }\r\n }\r\n\r\n onMounted(() => {\r\n // Update store with data initially set in this component\r\n commitPaymentInputToStore()\r\n })\r\n\r\n return {\r\n paymentMethod,\r\n paymentMethodFilled,\r\n paymentOptions,\r\n paymentType,\r\n unSubmitted,\r\n setPaymentTypeOnEnter,\r\n commitPaymentInputToStore,\r\n determineActivePaymentMethod,\r\n getLabel,\r\n }\r\n }\r\n}","import { render } from \"./WebshopPaymentSelector.vue?vue&type=template&id=c23ea97a\"\nimport script from \"./WebshopPaymentSelector.vue?vue&type=script&lang=js\"\nexport * from \"./WebshopPaymentSelector.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"D:\\\\a\\\\1\\\\s\\\\frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { useStore } from 'vuex'\r\nimport { ref, computed, onMounted } from 'vue'\r\nimport WebshopPaymentSelector from \"components/WebshopPaymentSelector/WebshopPaymentSelector.vue\"\r\nimport { checkoutScrollToTop } from '../CheckoutContent/CheckoutScrollToTop'\r\n\r\nexport default {\r\n name: \"CheckoutStepThree\",\r\n components: {\r\n WebshopPaymentSelector \r\n },\r\n props: {\r\n frivillige: {\r\n type: Boolean,\r\n default: false,\r\n required: false\r\n }\r\n },\r\n setup(props) {\r\n onMounted(() => checkoutScrollToTop())\r\n\r\n const store = useStore()\r\n\r\n const purchaseData = computed(()=> store.state.checkout.purchaseData )\r\n\r\n const containsUdlaansvare = computed(() => store.state.basket.basketState.containsUdlaansvare)\r\n const showPickUpAddresses = computed( () => store.state.checkout.stepTwo.showPickUpAddresses)\r\n const displayUdlaansvarePickupMessage = computed(() => \r\n containsUdlaansvare.value && \r\n showPickUpAddresses.value && \r\n getLabelCheckoutNavigation('udlaanDeliveryText')\r\n )\r\n \r\n const noDeliveryTitle = computed(()=> showPickUpAddresses.value || store.state.checkout.stepTwo.showDifferentAddress ? false : true)\r\n \r\n const isSubmitting = computed(()=> store.state.checkout.isSubmitting ?? false)\r\n \r\n const unSubmitted = ref(true)\r\n const hideAllErrors = ref(false)\r\n\r\n const termsInput = ref(false)\r\n\r\n const termsInputFilled = computed(()=> termsInput.value ? termsInput.value : false)\r\n\r\n const paymentData = computed( () => store.state.checkout.stepThree.paymentData)\r\n \r\n const paymentDataValidationStatus = computed( () => store.state.checkout.stepThree.paymentData?.paymentMethod) \r\n\r\n const showPaymentOptions = computed( () => !(store.state.basket?.totals?.isOrderFree ?? false))\r\n\r\n const inputIsValid = function () {\r\n const paymentMethod = showPaymentOptions.value ? paymentDataValidationStatus.value : true\r\n\r\n return termsInputFilled.value && !!paymentMethod\r\n }\r\n \r\n const handleSendToStep = function (stepNumber) {\r\n store.commit('checkout/update_checkout_step', { nextStepNumber: stepNumber })\r\n }\r\n\r\n const onSubmit = function () {\r\n unSubmitted.value = false\r\n\r\n hideAllErrors.value = true\r\n setTimeout(()=>{\r\n // we delay a bit here to allow screenreaders to catchup to changes in the DOM about invalid fields.\r\n hideAllErrors.value = false\r\n },100)\r\n\r\n if (!inputIsValid())\r\n return false\r\n\r\n const checkoutPaymentPayload = {\r\n paymentData: paymentData.value\r\n }\r\n\r\n // if terms not accepted do not commit data\r\n if(!termsInput.value)\r\n return false\r\n\r\n if (showPaymentOptions.value)\r\n store.commit('checkout/set_purchase_data_payment', checkoutPaymentPayload )\r\n \r\n // if succes set been filled to current step, as data is now in session storage\r\n store.commit('checkout/update_checkout_step_been_filled', 3)\r\n\r\n // dispatch all mapped purchase data to BE\r\n if (props.frivillige) {\r\n store.commit('checkout/set_purchase_data_payment', { paymentData: { paymentMethod: '3'} })\r\n store.dispatch('checkout/placeOrderFrivillige')\r\n } else {\r\n store.dispatch('checkout/placeOrder')\r\n }\r\n }\r\n\r\n const getLabel = (labelKey) => store.getters['labels/getLabel']({ labelCollection: 'informationAndDelivery', labelKey, allowEmpty: true })\r\n const getLabelCheckoutNavigation = (labelKey) => store.getters['labels/getLabel']({ labelCollection: 'checkout', labelKey: labelKey })\r\n\r\n return {\r\n getLabel,\r\n getLabelCheckoutNavigation,\r\n termsInput,\r\n termsInputFilled,\r\n onSubmit,\r\n isSubmitting,\r\n unSubmitted,\r\n hideAllErrors,\r\n purchaseData,\r\n noDeliveryTitle,\r\n handleSendToStep,\r\n noDeliveryTitle,\r\n toStepTwo: () => store.commit('checkout/update_checkout_step',{nextStepNumber: 2}),\r\n showPaymentOptions,\r\n displayUdlaansvarePickupMessage\r\n }\r\n }\r\n}","import { render } from \"./CheckoutStepThree.vue?vue&type=template&id=18b1b4d2\"\nimport script from \"./CheckoutStepThree.vue?vue&type=script&lang=js\"\nexport * from \"./CheckoutStepThree.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"D:\\\\a\\\\1\\\\s\\\\frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { useStore } from 'vuex'\r\nimport { onMounted, computed } from 'vue'\r\nimport BasketAside from 'components/BasketAside/BasketAside.vue'\r\nimport BasketCard from 'components/BasketCard/BasketCard'\r\nimport CheckoutStepOne from 'components/CheckoutStepOne/CheckoutStepOne.vue'\r\nimport CheckoutStepTwo from 'components/CheckoutStepTwo/CheckoutStepTwo.vue'\r\nimport CheckoutStepThree from 'components/CheckoutStepThree/CheckoutStepThree.vue'\r\n\r\nexport default {\r\n name: 'CheckoutContent',\r\n components: {\r\n BasketAside,\r\n BasketCard,\r\n CheckoutStepOne,\r\n CheckoutStepTwo,\r\n CheckoutStepThree\r\n },\r\n props: {},\r\n setup() {\r\n const store = useStore()\r\n\r\n onMounted(() => {\r\n store.dispatch('basket/fetchBasket')\r\n })\r\n\r\n const checkoutSteps = computed(() => store.state.checkout.checkoutSteps)\r\n\r\n const activeStep = computed(() =>\r\n checkoutSteps.value.find((i) => i.active === true)\r\n )\r\n\r\n const determineCheckoutStepContent = function () {\r\n switch (activeStep.value.stepNumber) {\r\n case 1:\r\n return 'CheckoutStepOne'\r\n case 2:\r\n return 'CheckoutStepTwo'\r\n case 3:\r\n return 'CheckoutStepThree'\r\n case 4:\r\n // here user gets directed to receipt page\r\n return\r\n default:\r\n console.warn('No active checkout step defined')\r\n break\r\n }\r\n }\r\n\r\n const handleStepClick = function (clickedStepNumber) {\r\n const validClickedStepNumber =\r\n clickedStepNumber < activeStep.value.stepNumber\r\n ? clickedStepNumber\r\n : activeStep.value.stepNumber\r\n store.commit('checkout/update_checkout_step', {\r\n nextStepNumber: validClickedStepNumber\r\n })\r\n }\r\n\r\n return {\r\n activeStep,\r\n checkoutSteps,\r\n determineCheckoutStepContent,\r\n handleStepClick\r\n }\r\n }\r\n}\r\n","import { render } from \"./CheckoutContent.vue?vue&type=template&id=804c6340\"\nimport script from \"./CheckoutContent.vue?vue&type=script&lang=js\"\nexport * from \"./CheckoutContent.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"D:\\\\a\\\\1\\\\s\\\\frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","export default {\r\n name: 'CheckoutHeader',\r\n setup() {}\r\n}\r\n","import { createApp } from 'vue'\r\nimport options from './CheckoutHeader.options'\r\n\r\nconst el = '.kb-component--checkout-header'\r\nconst DOM = document.querySelector(el)\r\n\r\nexport default function (Store) {\r\n if (DOM && !DOM.hasAttribute('data-v-app')) {\r\n const template = DOM.outerHTML\r\n options.template = template\r\n const component = createApp(options).use(Store)\r\n component.mount(DOM)\r\n }\r\n}\r\n","\r\n\r\n\r\n \r\n Farve tester
\r\n\r\n \r\n\r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n\r\n \r\n \r\n \r\n \r\n
\r\n \r\n\r\n","import { computed, ref } from 'vue'\r\n\r\nexport default {\r\n name: 'ColorPreview',\r\n setup() {\r\n const cssClass = ref('test \\n igen')\r\n\r\n const config = ref({\r\n '--colortheme-primary': '#dcdcdc',\r\n '--colortheme-secondary': '#4e4e4e',\r\n '--colortheme-spot': '#990000',\r\n '--colortheme-text': '#000000',\r\n '--colortheme-icon': '#990000',\r\n '--colortheme-quote': '#4e4e4e'\r\n })\r\n\r\n const string = computed(\r\n () =>\r\n Object.entries(config.value).reduce((string, entry) => {\r\n string += `\\t${entry[0]}:${entry[1]};\\n`\r\n return string\r\n }, `html {\\n`) + '\\n}'\r\n )\r\n\r\n const themeClassName = computed(() => {\r\n return `kb-colortheme--${themeName}`\r\n })\r\n\r\n const insert = function () {\r\n remove()\r\n let el = document.createElement('style')\r\n el.setAttribute('type', 'text/css')\r\n el.setAttribute('data', 'custom')\r\n el.innerText = string.value\r\n document.head.appendChild(el)\r\n }\r\n\r\n const remove = function () {\r\n document.querySelector('style[data=\"custom\"]')?.remove()\r\n }\r\n\r\n const copy = function () {\r\n let copyText = document.querySelector('#cssoutput')\r\n copyText.removeAttribute('disabled')\r\n copyText.select()\r\n document.execCommand('copy')\r\n copyText.setAttribute('disabled', 'disabled')\r\n }\r\n\r\n return {\r\n config,\r\n copy,\r\n cssClass,\r\n insert,\r\n remove,\r\n string\r\n }\r\n }\r\n}\r\n","import { render } from \"./ColorPreview.vue?vue&type=template&id=b0580304\"\nimport script from \"./ColorPreview.vue?vue&type=script&lang=js\"\nexport * from \"./ColorPreview.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"D:\\\\a\\\\1\\\\s\\\\frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { createApp } from 'vue'\r\nimport ColorPreview from './ColorPreview'\r\n\r\nconst el = '.kb-component--color-preview'\r\nconst DOM = document.querySelector(el)\r\n\r\nexport default function (Store) {\r\n if (DOM) {\r\n const component = createApp(ColorPreview).use(Store)\r\n component.mount(el)\r\n }\r\n}\r\n","\r\n\r\n\r\n \r\n \r\n \r\n
\r\n {{ getLabel('title') }}\r\n
\r\n \r\n \r\n \r\n\r\n \r\n
{{\r\n getLabel('text')\r\n }}
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n\r\n","import { onMounted, watch, computed } from 'vue'\r\nimport { useStore } from 'vuex'\r\nimport onTransitionendCallback from 'components/PageOverlay/methods/onTransitionendCallback'\r\n\r\nexport default {\r\n name: 'ConfirmChanges',\r\n setup() {\r\n const store = useStore()\r\n const gtmActive = !!window?.dataLayer?.find(\r\n (element) => element['gtm.start']\r\n ) // check if gtm is active\r\n\r\n let first, last, close\r\n\r\n const tabTrap = function (e) {\r\n if (e.shiftKey && e.target.dataset.order === 'first') {\r\n e.preventDefault()\r\n close.focus()\r\n }\r\n\r\n if (!e.shiftKey && e.target.dataset.order === 'last') {\r\n e.preventDefault()\r\n close.focus()\r\n }\r\n\r\n if (!e.shiftKey && !e.target.dataset.order) {\r\n e.preventDefault()\r\n first.focus()\r\n }\r\n }\r\n\r\n // button will execute the method set in store by: 'set_page_overlay_content_data' mutation\r\n const confirmAction = function () {\r\n store.state.main.page_overlay_content_data.callback()\r\n }\r\n\r\n const cancelAction = function () {\r\n store.dispatch('main/closePageOverlay')\r\n }\r\n\r\n onMounted(() => {\r\n first = document.querySelector('.kb-button[data-order=\"first\"]')\r\n last = document.querySelector('.kb-button[data-order=\"last\"]')\r\n close = document.querySelector('.kb-page-overlay__close')\r\n onTransitionendCallback(\r\n {\r\n opening() {\r\n first.focus()\r\n }\r\n },\r\n { persistent: true }\r\n )\r\n })\r\n\r\n return {\r\n cancelAction,\r\n confirmAction,\r\n tabTrap,\r\n getLabel: (labelKey) =>\r\n store.getters['labels/getLabel']({\r\n labelCollection: 'ConfirmChanges',\r\n labelKey\r\n })\r\n }\r\n }\r\n}\r\n","import { render } from \"./ConfirmChanges.vue?vue&type=template&id=98d48c44\"\nimport script from \"./ConfirmChanges.vue?vue&type=script&lang=js\"\nexport * from \"./ConfirmChanges.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"D:\\\\a\\\\1\\\\s\\\\frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\r\n\r\n\r\n\r\n \r\n\r\n
\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n
\r\n\r\n","import { useStore } from 'vuex'\r\nimport { computed, onBeforeMount } from 'vue'\r\n\r\nexport default {\r\n name: \"ConfirmDeleteOverlay\",\r\n setup(){\r\n const store = useStore()\r\n \r\n const isSubmitting = computed(()=> store.state.frivillige.is_submitting)\r\n \r\n const deleteItemType = computed(()=> store.state.frivillige.delete_item_type)\r\n const deleteItemName = computed(() => store.state.frivillige.delete_item_name)\r\n\r\n\r\n onBeforeMount(() => {\r\n // creating updated delete_id & delete_name\r\n store.dispatch('frivillige/getDeleteItemId')\r\n store.dispatch('frivillige/getDeleteItemName')\r\n store.dispatch('frivillige/getDeleteItemType')\r\n })\r\n\r\n const submitConfirmDelete = () => {\r\n\r\n const body = {\r\n deleteStatus: true\r\n }\r\n\r\n store.dispatch(\"frivillige/submitConfirmDelete\", {\r\n body\r\n })\r\n .then(() => {\r\n store.dispatch('main/closePageOverlay')\r\n store.dispatch('search/refreshSearches')\r\n });\r\n \r\n };\r\n\r\n const closeOverlay = function() {\r\n store.dispatch('main/closePageOverlay')\r\n }\r\n \r\n const handleRegret = () => {\r\n closeOverlay() \r\n };\r\n \r\n const determineLabelCollection = function() {\r\n if(deleteItemType.value === \"Dokument\") {\r\n return \"ConfirmDeleteOverlayFile\"\r\n } else if (deleteItemType.value === \"Mappe\"){\r\n return \"ConfirmDeleteOverlayFolder\"\r\n } else {\r\n return \"ConfirmDeleteOverlay\"\r\n }\r\n }\r\n\r\n const getLabel = (labelKey, replacements) => {\r\n let label = store.getters['labels/getLabel']({ labelCollection: determineLabelCollection(), labelKey: labelKey })\r\n if (replacements) {\r\n replacements.forEach((replacement, index) => {\r\n label = label.replace(`{${index}}`, replacement)\r\n })\r\n }\r\n return label\r\n }\r\n\r\n return {\r\n isSubmitting,\r\n deleteItemName,\r\n getLabel,\r\n handleRegret,\r\n submitConfirmDelete\r\n }\r\n \r\n }\r\n}","import { render } from \"./ConfirmDeleteOverlay.vue?vue&type=template&id=38f29c78\"\nimport script from \"./ConfirmDeleteOverlay.vue?vue&type=script&lang=js\"\nexport * from \"./ConfirmDeleteOverlay.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"D:\\\\a\\\\1\\\\s\\\\frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\r\n\r\n\r\n \r\n \r\n \r\n
\r\n {{ getLabel('title') }}\r\n
\r\n \r\n \r\n \r\n\r\n \r\n
{{\r\n getLabel('text')\r\n }}
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n\r\n","import { onMounted, watch, computed } from 'vue'\r\nimport { useStore } from 'vuex'\r\nimport onTransitionendCallback from 'components/PageOverlay/methods/onTransitionendCallback'\r\n\r\nexport default {\r\n name: 'ConfirmDeleteProfile',\r\n setup() {\r\n const store = useStore()\r\n \r\n let first, last, close\r\n\r\n const tabTrap = function (e) {\r\n if (e.shiftKey && e.target.dataset.order === 'first') {\r\n e.preventDefault()\r\n close.focus()\r\n }\r\n\r\n if (!e.shiftKey && e.target.dataset.order === 'last') {\r\n e.preventDefault()\r\n close.focus()\r\n }\r\n\r\n if (!e.shiftKey && !e.target.dataset.order) {\r\n e.preventDefault()\r\n first.focus()\r\n }\r\n }\r\n\r\n // button will execute the method set in store by: 'set_page_overlay_content_data' mutation\r\n const confirmAction = function () {\r\n store.state.main.page_overlay_content_data.callback()\r\n }\r\n\r\n const cancelAction = function () {\r\n store.dispatch('main/closePageOverlay')\r\n }\r\n\r\n onMounted(() => {\r\n first = document.querySelector('.kb-button[data-order=\"first\"]')\r\n last = document.querySelector('.kb-button[data-order=\"last\"]')\r\n close = document.querySelector('.kb-page-overlay__close')\r\n onTransitionendCallback(\r\n {\r\n opening() {\r\n first.focus()\r\n }\r\n },\r\n { persistent: true }\r\n )\r\n })\r\n\r\n return {\r\n cancelAction,\r\n confirmAction,\r\n tabTrap,\r\n getLabel: (labelKey) =>\r\n store.getters['labels/getLabel']({\r\n labelCollection: 'ConfirmDeleteProfile',\r\n labelKey\r\n })\r\n }\r\n }\r\n}\r\n","import { render } from \"./ConfirmDeleteProfile.vue?vue&type=template&id=624d604c\"\nimport script from \"./ConfirmDeleteProfile.vue?vue&type=script&lang=js\"\nexport * from \"./ConfirmDeleteProfile.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"D:\\\\a\\\\1\\\\s\\\\frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","export default {\r\n name: 'ContactBanner',\r\n setup() {}\r\n}\r\n","export default {\r\n name: 'ContributionSelector',\r\n props: {\r\n data: {\r\n type: Object,\r\n required: true\r\n }\r\n },\r\n setup() {}\r\n}\r\n","\r\n\r\n\r\n \r\n {{ getLabel('title') }}
\r\n\r\n
\r\n\r\n \r\n \r\n\r\n","\r\n\r\n\r\n\r\n \r\n\r\n","import formFieldCommonOptions from 'foundation/js/formFieldCommonOptions'\r\n\r\nconst options = formFieldCommonOptions('FormCheckbox', {\r\n validatorFunction(input) {\r\n return input\r\n }\r\n})\r\n\r\nexport default options\r\n","import { render } from \"./FormCheckbox.vue?vue&type=template&id=4f82744c\"\nimport script from \"./FormCheckbox.vue?vue&type=script&lang=js\"\nexport * from \"./FormCheckbox.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"D:\\\\a\\\\1\\\\s\\\\frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { useStore } from \"vuex\"\r\nimport FormInputTextField from \"../FormInputTextField/FormInputTextField.vue\"\r\nimport FormCheckbox from \"../FormCheckbox/FormCheckbox.vue\"\r\nimport { ref } from \"vue\"\r\n\r\nexport default {\r\n name: \"CreateCancerForumProfile\",\r\n components: {\r\n FormInputTextField,\r\n FormCheckbox\r\n },\r\n setup() {\r\n const store = useStore()\r\n const cancerForumName = ref(\"\")\r\n const cancerForumConsent = ref(false)\r\n const displayError = ref({\r\n name: false,\r\n consent: false \r\n })\r\n const isSubmitting = ref(false)\r\n\r\n const getLabel = (labelKey)=> store.getters['labels/getLabel']({labelCollection: \"CreateCancerForumProfile\", labelKey: labelKey})\r\n\r\n const cancerForumErrorLabel = ref(getLabel('formCancerForumNameErrorLabel'))\r\n\r\n const setConsent = (e) => {\r\n const checkbox = e.target\r\n cancerForumConsent.value = checkbox.checked ?? false\r\n }\r\n\r\n const submitCreateProfile = async () => {\r\n displayError.value.name = cancerForumName.value === \"\"\r\n displayError.value.consent = !cancerForumConsent.value\r\n\r\n if (cancerForumConsent.value && cancerForumName.value !== \"\") {\r\n\r\n isSubmitting.value = true\r\n\r\n const response = await store.dispatch('forum/createCancerForumProfile', { \r\n body: cancerForumName.value,\r\n pageId: store.state.main.page_id \r\n })\r\n if (response.status === \"error\") {\r\n displayError.value.name = true\r\n cancerForumErrorLabel.value = response.message\r\n isSubmitting.value = false\r\n }\r\n }\r\n }\r\n\r\n return {\r\n cancerForumName,\r\n cancerForumConsent,\r\n displayError,\r\n cancerForumErrorLabel,\r\n isSubmitting,\r\n setConsent,\r\n submitCreateProfile,\r\n getLabel,\r\n }\r\n }\r\n}","import { render } from \"./CreateCancerForumProfile.vue?vue&type=template&id=9cce3cca\"\nimport script from \"./CreateCancerForumProfile.vue?vue&type=script&lang=js\"\nexport * from \"./CreateCancerForumProfile.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"D:\\\\a\\\\1\\\\s\\\\frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\r\n\r\n\r\n \r\n \r\n\r\n {{ userInfo ? getLabel('editTitle') : getLabel('title') }}
\r\n \r\n \r\n\r\n \r\n
{{ userInfo ? getLabel('editDescription') : getLabel('description') }}
\r\n
\r\n\r\n \r\n\r\n \r\n \r\n
\r\n
\r\n
\r\n
{{ getLabel('ctaTitle') }}
\r\n
{{ getLabel('ctaDescription') }}
\r\n
\r\n
\r\n \r\n
\r\n \r\n\r\n \r\n {{ getLabel('eventDescriptionTitle') }}
\r\n\r\n \r\n\r\n \r\n shareInMainCalendar = e.target.checked\"\r\n />\r\n \r\n mandatoryRegistration = e.target.checked\" \r\n />\r\n\r\n \r\n\r\n
\r\n\r\n {{ getLabel('DateTimeTitle') }}
\r\n\r\n \r\n \r\n\r\n \r\n
\r\n\r\n \r\n \r\n\r\n \r\n
\r\n\r\n
\r\n\r\n {{ getLabel('addressTitle') }}
\r\n\r\n \r\n\r\n
\r\n\r\n {{ getLabel('contactPersonTitle') }}
\r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n\r\n \r\n
\r\n\r\n \r\n \r\n \r\n
\r\n\r\n \r\n \r\n\r\n \r\n \r\n\r\n","\r\n\r\n\r\n \r\n \r\n \r\n \r\n {{ errorMessageLabel }}\r\n
\r\n \r\n {{ helpMessageLabel }}\r\n
\r\n \r\n\r\n","import formFieldCommonOptions from 'foundation/js/formFieldCommonOptions'\r\n\r\nconst options = formFieldCommonOptions('FormInputDropdown', {\r\n validatorFunction(input) {\r\n return input\r\n }\r\n})\r\n\r\nexport default options\r\n","import { render } from \"./FormInputDropdown.vue?vue&type=template&id=4b2b1216\"\nimport script from \"./FormInputDropdown.vue?vue&type=script&lang=js\"\nexport * from \"./FormInputDropdown.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"D:\\\\a\\\\1\\\\s\\\\frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\r\n\r\n\r\n \r\n\r\n","import formFieldCommonOptions from 'foundation/js/formFieldCommonOptions'\r\n\r\nconst options = formFieldCommonOptions('FormRadioGroup', {\r\n validatorFunction(input) {\r\n return input\r\n }\r\n})\r\n\r\nexport default options\r\n","import { render } from \"./FormRadioGroup.vue?vue&type=template&id=2997fed6\"\nimport script from \"./FormRadioGroup.vue?vue&type=script&lang=js\"\nexport * from \"./FormRadioGroup.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"D:\\\\a\\\\1\\\\s\\\\frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","export default function (input) {\r\n return typeof input === 'boolean'\r\n}\r\n","import nonEmptyString from './nonEmptyStringValidator.js'\r\n\r\nexport default function (input) {\r\n const regex = /^\\d{4}$/\r\n return nonEmptyString(input) && !!input.match(regex)\r\n}\r\n","import emailValidator from \"foundation/js/inputValidators/emailValidator\";\r\nimport isBoolean from \"foundation/js/inputValidators/isBoolean\";\r\nimport nameValidator from \"foundation/js/inputValidators/nameValidator\";\r\nimport nonEmptyStringValidator from \"foundation/js/inputValidators/nonEmptyStringValidator\";\r\nimport phoneValidator from \"foundation/js/inputValidators/phoneValidator\";\r\nimport postalCodeValidator from \"foundation/js/inputValidators/postalCodeValidator\";\r\n\r\nconst config = [\r\n {\r\n name: 'nameOfEvent',\r\n value: '',\r\n isValid: false,\r\n validator: nameValidator\r\n },\r\n {\r\n name: 'description',\r\n value: '',\r\n isValid: false,\r\n validator: nonEmptyStringValidator\r\n },\r\n {\r\n name: 'shareInMainCalendar',\r\n value: false,\r\n isValid: true,\r\n validator: isBoolean\r\n },\r\n {\r\n name: 'mandatoryRegistration',\r\n value: false,\r\n isValid: true,\r\n validator: isBoolean\r\n },\r\n {\r\n name: 'maxParticipants',\r\n value: 0,\r\n isValid: true,\r\n validator: (value) => (value == undefined || (value > 0 && value <= 20000))\r\n },\r\n {\r\n name: 'contactPersonMyself',\r\n value: false,\r\n isValid: true,\r\n validator: isBoolean\r\n },\r\n {\r\n name: 'contactPersonOther',\r\n value: false,\r\n isValid: true,\r\n validator: isBoolean\r\n },\r\n {\r\n name: 'contactPersonEmail',\r\n value: '',\r\n isValid: false,\r\n validator: emailValidator\r\n },\r\n {\r\n name: 'contactPersonName',\r\n value: '',\r\n isValid: false,\r\n validator: nonEmptyStringValidator\r\n },\r\n {\r\n name: 'contactPersonPhone',\r\n value: '',\r\n isValid: true,\r\n validator: (phonenumber) => !phonenumber || phoneValidator(phonenumber)\r\n },\r\n {\r\n name: 'startDate',\r\n value: '',\r\n isValid: false,\r\n validator: () => false\r\n }, \r\n {\r\n name: 'endDate',\r\n value: '',\r\n isValid: false,\r\n validator: () => false\r\n },\r\n {\r\n name: 'startTime',\r\n value: '',\r\n isValid: false,\r\n validator: nonEmptyStringValidator\r\n },\r\n {\r\n name: 'endTime',\r\n value: '',\r\n isValid: false,\r\n validator: nonEmptyStringValidator\r\n },\r\n {\r\n name: 'address',\r\n value: '',\r\n isValid: false,\r\n validator: nonEmptyStringValidator\r\n },\r\n {\r\n name: 'postalCode',\r\n value: '',\r\n isValid: false,\r\n validator: postalCodeValidator\r\n },\r\n {\r\n name: 'city',\r\n value: '',\r\n isValid: false,\r\n validator: nonEmptyStringValidator\r\n \r\n }\r\n]\r\n\r\nexport default config","/**\n * Copyright (c) 2018-present, Ephox, Inc.\n *\n * This source code is licensed under the Apache 2 license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\nimport { uuid } from './Utils';\nvar createState = function () { return ({\n listeners: [],\n scriptId: uuid('tiny-script'),\n scriptLoaded: false\n}); };\nvar CreateScriptLoader = function () {\n var state = createState();\n var injectScriptTag = function (scriptId, doc, url, callback) {\n var scriptTag = doc.createElement('script');\n scriptTag.referrerPolicy = 'origin';\n scriptTag.type = 'application/javascript';\n scriptTag.id = scriptId;\n scriptTag.src = url;\n var handler = function () {\n scriptTag.removeEventListener('load', handler);\n callback();\n };\n scriptTag.addEventListener('load', handler);\n if (doc.head) {\n doc.head.appendChild(scriptTag);\n }\n };\n var load = function (doc, url, callback) {\n if (state.scriptLoaded) {\n callback();\n }\n else {\n state.listeners.push(callback);\n if (!doc.getElementById(state.scriptId)) {\n injectScriptTag(state.scriptId, doc, url, function () {\n state.listeners.forEach(function (fn) { return fn(); });\n state.scriptLoaded = true;\n });\n }\n }\n };\n // Only to be used by tests.\n var reinitialize = function () {\n state = createState();\n };\n return {\n load: load,\n reinitialize: reinitialize\n };\n};\nvar ScriptLoader = CreateScriptLoader();\nexport { ScriptLoader };\n","/**\n * Copyright (c) 2018-present, Ephox, Inc.\n *\n * This source code is licensed under the Apache 2 license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\nimport { watch } from 'vue';\nvar validEvents = [\n 'onActivate',\n 'onAddUndo',\n 'onBeforeAddUndo',\n 'onBeforeExecCommand',\n 'onBeforeGetContent',\n 'onBeforeRenderUI',\n 'onBeforeSetContent',\n 'onBeforePaste',\n 'onBlur',\n 'onChange',\n 'onClearUndos',\n 'onClick',\n 'onContextMenu',\n 'onCopy',\n 'onCut',\n 'onDblclick',\n 'onDeactivate',\n 'onDirty',\n 'onDrag',\n 'onDragDrop',\n 'onDragEnd',\n 'onDragGesture',\n 'onDragOver',\n 'onDrop',\n 'onExecCommand',\n 'onFocus',\n 'onFocusIn',\n 'onFocusOut',\n 'onGetContent',\n 'onHide',\n 'onInit',\n 'onKeyDown',\n 'onKeyPress',\n 'onKeyUp',\n 'onLoadContent',\n 'onMouseDown',\n 'onMouseEnter',\n 'onMouseLeave',\n 'onMouseMove',\n 'onMouseOut',\n 'onMouseOver',\n 'onMouseUp',\n 'onNodeChange',\n 'onObjectResizeStart',\n 'onObjectResized',\n 'onObjectSelected',\n 'onPaste',\n 'onPostProcess',\n 'onPostRender',\n 'onPreProcess',\n 'onProgressState',\n 'onRedo',\n 'onRemove',\n 'onReset',\n 'onSaveContent',\n 'onSelectionChange',\n 'onSetAttrib',\n 'onSetContent',\n 'onShow',\n 'onSubmit',\n 'onUndo',\n 'onVisualAid'\n];\nvar isValidKey = function (key) {\n return validEvents.map(function (event) { return event.toLowerCase(); }).indexOf(key.toLowerCase()) !== -1;\n};\nvar bindHandlers = function (initEvent, listeners, editor) {\n Object.keys(listeners)\n .filter(isValidKey)\n .forEach(function (key) {\n var handler = listeners[key];\n if (typeof handler === 'function') {\n if (key === 'onInit') {\n handler(initEvent, editor);\n }\n else {\n editor.on(key.substring(2), function (e) { return handler(e, editor); });\n }\n }\n });\n};\nvar bindModelHandlers = function (props, ctx, editor, modelValue) {\n var modelEvents = props.modelEvents ? props.modelEvents : null;\n var normalizedEvents = Array.isArray(modelEvents) ? modelEvents.join(' ') : modelEvents;\n watch(modelValue, function (val, prevVal) {\n if (editor && typeof val === 'string' && val !== prevVal && val !== editor.getContent({ format: props.outputFormat })) {\n editor.setContent(val);\n }\n });\n editor.on(normalizedEvents ? normalizedEvents : 'change input undo redo', function () {\n ctx.emit('update:modelValue', editor.getContent({ format: props.outputFormat }));\n });\n};\nvar initEditor = function (initEvent, props, ctx, editor, modelValue, content) {\n editor.setContent(content());\n if (ctx.attrs['onUpdate:modelValue']) {\n bindModelHandlers(props, ctx, editor, modelValue);\n }\n bindHandlers(initEvent, ctx.attrs, editor);\n};\nvar unique = 0;\nvar uuid = function (prefix) {\n var time = Date.now();\n var random = Math.floor(Math.random() * 1000000000);\n unique++;\n return prefix + '_' + random + unique + String(time);\n};\nvar isTextarea = function (element) {\n return element !== null && element.tagName.toLowerCase() === 'textarea';\n};\nvar normalizePluginArray = function (plugins) {\n if (typeof plugins === 'undefined' || plugins === '') {\n return [];\n }\n return Array.isArray(plugins) ? plugins : plugins.split(' ');\n};\nvar mergePlugins = function (initPlugins, inputPlugins) {\n return normalizePluginArray(initPlugins).concat(normalizePluginArray(inputPlugins));\n};\nvar isNullOrUndefined = function (value) {\n return value === null || value === undefined;\n};\nexport { bindHandlers, bindModelHandlers, initEditor, isValidKey, uuid, isTextarea, mergePlugins, isNullOrUndefined };\n","/**\n * Copyright (c) 2018-present, Ephox, Inc.\n *\n * This source code is licensed under the Apache 2 license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\nvar getGlobal = function () { return (typeof window !== 'undefined' ? window : global); };\nvar getTinymce = function () {\n var global = getGlobal();\n return global && global.tinymce ? global.tinymce : null;\n};\nexport { getTinymce };\n","export var editorProps = {\n apiKey: String,\n cloudChannel: String,\n id: String,\n init: Object,\n initialValue: String,\n inline: Boolean,\n modelEvents: [String, Array],\n plugins: [String, Array],\n tagName: String,\n toolbar: [String, Array],\n modelValue: String,\n disabled: Boolean,\n tinymceScriptSrc: String,\n outputFormat: {\n type: String,\n validator: function (prop) { return prop === 'html' || prop === 'text'; }\n },\n};\n","/**\n * Copyright (c) 2018-present, Ephox, Inc.\n *\n * This source code is licensed under the Apache 2 license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport { ScriptLoader } from '../ScriptLoader';\nimport { getTinymce } from '../TinyMCE';\nimport { isTextarea, mergePlugins, uuid, isNullOrUndefined, initEditor } from '../Utils';\nimport { editorProps } from './EditorPropTypes';\nimport { h, defineComponent, onMounted, ref, toRefs, nextTick, watch, onBeforeUnmount, onActivated, onDeactivated } from 'vue';\nvar renderInline = function (ce, id, elementRef, tagName) {\n return ce(tagName ? tagName : 'div', {\n id: id,\n ref: elementRef\n });\n};\nvar renderIframe = function (ce, id, elementRef) {\n return ce('textarea', {\n id: id,\n visibility: 'hidden',\n ref: elementRef\n });\n};\nvar defaultInitValues = { selector: undefined, target: undefined };\nexport var Editor = defineComponent({\n props: editorProps,\n setup: function (props, ctx) {\n var conf = props.init ? __assign(__assign({}, props.init), defaultInitValues) : __assign({}, defaultInitValues);\n var _a = toRefs(props), disabled = _a.disabled, modelValue = _a.modelValue, tagName = _a.tagName;\n var element = ref(null);\n var vueEditor = null;\n var elementId = props.id || uuid('tiny-vue');\n var inlineEditor = (props.init && props.init.inline) || props.inline;\n var modelBind = !!ctx.attrs['onUpdate:modelValue'];\n var mounting = true;\n var initialValue = props.initialValue ? props.initialValue : '';\n var cache = '';\n var getContent = function (isMounting) { return modelBind ?\n function () { return ((modelValue === null || modelValue === void 0 ? void 0 : modelValue.value) ? modelValue.value : ''); } :\n function () { return isMounting ? initialValue : cache; }; };\n var initWrapper = function () {\n var content = getContent(mounting);\n var finalInit = __assign(__assign({}, conf), { readonly: props.disabled, target: element.value, plugins: mergePlugins(conf.plugins, props.plugins), toolbar: props.toolbar || (conf.toolbar), inline: inlineEditor, setup: function (editor) {\n vueEditor = editor;\n editor.on('init', function (e) { return initEditor(e, props, ctx, editor, modelValue, content); });\n if (typeof conf.setup === 'function') {\n conf.setup(editor);\n }\n } });\n if (isTextarea(element.value)) {\n element.value.style.visibility = '';\n }\n getTinymce().init(finalInit);\n mounting = false;\n };\n watch(disabled, function (disable) {\n var _a;\n if (vueEditor !== null) {\n if (typeof ((_a = vueEditor.mode) === null || _a === void 0 ? void 0 : _a.set) === 'function') {\n vueEditor.mode.set(disable ? 'readonly' : 'design');\n }\n else {\n vueEditor.setMode(disable ? 'readonly' : 'design');\n }\n }\n });\n watch(tagName, function (_) {\n var _a;\n if (!modelBind) {\n cache = vueEditor.getContent();\n }\n (_a = getTinymce()) === null || _a === void 0 ? void 0 : _a.remove(vueEditor);\n nextTick(function () { return initWrapper(); });\n });\n onMounted(function () {\n if (getTinymce() !== null) {\n initWrapper();\n }\n else if (element.value && element.value.ownerDocument) {\n var channel = props.cloudChannel ? props.cloudChannel : '6';\n var apiKey = props.apiKey ? props.apiKey : 'no-api-key';\n var scriptSrc = isNullOrUndefined(props.tinymceScriptSrc) ?\n \"https://cdn.tiny.cloud/1/\".concat(apiKey, \"/tinymce/\").concat(channel, \"/tinymce.min.js\") :\n props.tinymceScriptSrc;\n ScriptLoader.load(element.value.ownerDocument, scriptSrc, initWrapper);\n }\n });\n onBeforeUnmount(function () {\n if (getTinymce() !== null) {\n getTinymce().remove(vueEditor);\n }\n });\n if (!inlineEditor) {\n onActivated(function () {\n if (!mounting) {\n initWrapper();\n }\n });\n onDeactivated(function () {\n var _a;\n if (!modelBind) {\n cache = vueEditor.getContent();\n }\n (_a = getTinymce()) === null || _a === void 0 ? void 0 : _a.remove(vueEditor);\n });\n }\n var rerender = function (init) {\n var _a;\n cache = vueEditor.getContent();\n (_a = getTinymce()) === null || _a === void 0 ? void 0 : _a.remove(vueEditor);\n conf = __assign(__assign(__assign({}, conf), init), defaultInitValues);\n nextTick(function () { return initWrapper(); });\n };\n ctx.expose({\n rerender: rerender,\n getEditor: function () { return vueEditor; }\n });\n return function () { return inlineEditor ?\n renderInline(h, elementId, element, props.tagName) :\n renderIframe(h, elementId, element); };\n }\n});\n","/**\n * Copyright (c) 2018-present, Ephox, Inc.\n *\n * This source code is licensed under the Apache 2 license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\nimport { Editor } from './components/Editor';\nexport default Editor;\n","import FormInputTextField from \"../FormInputTextField/FormInputTextField.vue\";\r\nimport FormCheckbox from \"../FormCheckbox/FormCheckbox.vue\";\r\nimport FormInputDropdown from \"../FormInputDropdown/FormInputDropdown.vue\";\r\nimport FormAddressField from \"../FormAddressField/FormAddressField.vue\";\r\nimport FormRadioGroup from \"../FormRadioGroup/FormRadioGroup.vue\";\r\nimport { ref, computed, watch, onBeforeMount } from \"vue\";\r\nimport GetLabel from \"foundation/js/getLabel\";\r\nimport fieldsConfig from \"./config/fieldsConfig\";\r\nimport { useStore } from \"vuex\";\r\n\r\n// TinyMCE imports\r\nimport \"tinymce/tinymce\"\r\nimport \"tinymce/themes/silver\";\r\nimport \"tinymce/icons/default\";\r\nimport 'tinymce/models/dom/model'\r\nimport 'tinymce/skins/ui/oxide/skin.css';\r\n// TinyMCE plugin imports\r\nimport 'tinymce/plugins/emoticons';\r\nimport 'tinymce/plugins/emoticons/js/emojis';\r\nimport 'tinymce/plugins/autoresize';\r\nimport 'tinymce/plugins/lists';\r\nimport 'tinymce/plugins/autolink';\r\n\r\nimport Editor from '@tinymce/tinymce-vue'\r\n\r\nexport default {\r\n name: \"CreateEvent\",\r\n props: {\r\n groupId: {\r\n type: String,\r\n required: true\r\n },\r\n isEditContext: {\r\n type: Boolean,\r\n required: true,\r\n },\r\n userInfo: {\r\n type: Object,\r\n required: false,\r\n }\r\n },\r\n components: {\r\n FormInputTextField,\r\n FormCheckbox,\r\n FormInputDropdown,\r\n FormAddressField,\r\n FormRadioGroup,\r\n Editor\r\n },\r\n setup(props) {\r\n const store = useStore()\r\n const displayError = ref(false) \r\n const getLabel = (labelKey) => GetLabel({ labelKey, labelCollection: 'CreateEvent' })\r\n\r\n const submitPath = props.isEditContext == true ? 'frivillige/updateEvent' : 'frivillige/createEvent'\r\n const isEditContext = props.isEditContext\r\n\r\n const nameOfEvent = ref(props.userInfo?.nameOfEvent ?? \"\") \r\n const description = ref(props.userInfo?.description ?? \"\")\r\n const shareInMainCalendar = ref(props.userInfo?.shareInMainCalendar ?? false)\r\n const mandatoryRegistration = ref(props.userInfo?.mandatoryRegistration ?? false)\r\n const maxParticipants = ref(props.userInfo?.maxParticipants)\r\n const contactPersonOther = ref(props.userInfo?.contactPersonName?.length > 0 ?? false)\r\n const contactPersonEmail = ref(props.userInfo?.contactPersonEmail)\r\n const contactPersonPhone = ref(props.userInfo?.contactPersonPhone)\r\n const contactPersonName = ref(props.userInfo?.contactPersonName)\r\n const startDate = ref(props.userInfo?.startDate ?? \"\")\r\n const startTime = ref(props.userInfo?.startTime ?? \"\")\r\n const endDate = ref(props.userInfo?.endDate ?? \"\")\r\n const endTime = ref(props.userInfo?.endTime ?? \"\")\r\n const address = ref(props.userInfo?.address ?? \"\")\r\n const postalCode = ref(props.userInfo?.postalCode ?? \"\")\r\n const city = ref(props.userInfo?.city ?? \"\")\r\n const showSpinner = ref(false)\r\n \r\n const contactTypeEnum = Object.freeze({\r\n SELF: \"SELF\",\r\n OTHER: \"OTHER\"\r\n })\r\n const contactType = ref(contactTypeEnum.SELF)\r\n const contactTypeRadioOptions = [\r\n {\r\n value: contactTypeEnum.SELF,\r\n label: getLabel('contactPersonMyselfLabel')\r\n },\r\n {\r\n value: contactTypeEnum.OTHER,\r\n label: getLabel('contactPersonOtherLabel')\r\n }\r\n ]\r\n const contactPersonMyself = computed(() => contactType.value === contactTypeEnum.SELF)\r\n\r\n onBeforeMount(() => {\r\n if (props.userInfo) {\r\n Object.keys(props.userInfo).forEach(function (key) {\r\n const field = fieldsConfig.find(field => field.name === key)\r\n if (field) {\r\n field.value = props.userInfo[key]\r\n field.isValid = field.validator(props.userInfo[key])\r\n }\r\n })\r\n }\r\n })\r\n\r\n const updateConfigAndReturnValidState = (name, value) => {\r\n fieldsConfig.find(field => field.name === name).value = value\r\n const valid = fieldsConfig.find(field => field.name === name).validator(value)\r\n fieldsConfig.find(field => field.name === name).isValid = valid\r\n return valid\r\n }\r\n\r\n const showError = (name, value) => {\r\n const valid = updateConfigAndReturnValidState(name, value)\r\n return displayError.value && !valid\r\n }\r\n\r\n const showErrorAddress = computed(() => {\r\n const validAddress = updateConfigAndReturnValidState('address', address.value)\r\n const validPostalCode = updateConfigAndReturnValidState('postalCode', postalCode.value)\r\n const validCity = updateConfigAndReturnValidState('city', city.value)\r\n\r\n return displayError.value && (!validAddress || !validPostalCode || !validCity)\r\n })\r\n\r\n const startDateValidator = (startDateStr, startTimeStr) => {\r\n\r\n if (!startDateStr || !startTimeStr) return false\r\n \r\n var now = new Date()\r\n var startTimestamp = new Date(`${startDateStr} ${startTimeStr}`)\r\n \r\n return now <= startTimestamp\r\n } \r\n \r\n const endDateValidator = (startDateStr, startTimeStr, endDateStr, endTimeStr) => {\r\n \r\n // Only show error for start date+time if these are not set\r\n if (!startDateStr || !startTimeStr) return true\r\n \r\n if (!endDateStr || !endTimeStr) return false\r\n \r\n var startTimestamp = new Date(`${startDateStr} ${startTimeStr}`)\r\n var endTimestamp = new Date(`${endDateStr} ${endTimeStr}`)\r\n return startTimestamp <= endTimestamp\r\n }\r\n \r\n const isStartDateValid = computed(() => {\r\n fieldsConfig.find(field => field.name === 'startDate').isValid = startDateValidator(startDate.value, startTime.value)\r\n fieldsConfig.find(field => field.name === 'startDate').value = startDate.value\r\n return displayError.value && !startDateValidator(startDate.value, startTime.value)\r\n })\r\n\r\n const isEndDateValid = computed(() => {\r\n fieldsConfig.find(field => field.name === 'endDate').isValid = endDateValidator(startDate.value, startTime.value, endDate.value, endTime.value)\r\n fieldsConfig.find(field => field.name === 'endDate').value = startDate.value\r\n return displayError.value && !endDateValidator(startDate.value, startTime.value, endDate.value, endTime.value)\r\n })\r\n \r\n watch(description, (newValue) => {\r\n showError('description', newValue)\r\n })\r\n\r\n const validateFields = () => {\r\n // Update fieldsConfig with some custom validation\r\n if (!contactPersonOther.value) {\r\n fieldsConfig.find(field => field.name === 'contactPersonEmail').isValid = true\r\n fieldsConfig.find(field => field.name === 'contactPersonEmail').value = \"\"\r\n fieldsConfig.find(field => field.name === 'contactPersonName').isValid = true\r\n fieldsConfig.find(field => field.name === 'contactPersonName').value = \"\"\r\n fieldsConfig.find(field => field.name === 'contactPersonPhone').isValid = true\r\n fieldsConfig.find(field => field.name === 'contactPersonPhone').value = \"\" \r\n }\r\n \r\n return fieldsConfig.every(field => field.isValid)\r\n }\r\n\r\n const getFields = () => {\r\n return {\r\n nameOfEvent: nameOfEvent.value,\r\n description: description.value,\r\n shareInMainCalendar: shareInMainCalendar.value,\r\n mandatoryRegistration: mandatoryRegistration.value,\r\n maxParticipants: maxParticipants.value,\r\n contactPersonMyself: contactPersonMyself.value,\r\n contactPersonOther: contactPersonOther.value,\r\n contactPersonEmail: contactPersonEmail.value,\r\n contactPersonPhone: contactPersonPhone.value,\r\n contactPersonName: contactPersonName.value,\r\n startDate: startDate.value,\r\n startTime: startTime.value,\r\n endDate: endDate.value,\r\n endTime: endTime.value,\r\n addressLine: address.value,\r\n postalCode: postalCode.value,\r\n city: city.value\r\n }\r\n }\r\n\r\n const submit = () => {\r\n if (validateFields()) {\r\n\r\n showSpinner.value = true\r\n\r\n const fields = getFields()\r\n \r\n store.dispatch(submitPath, { \r\n body: fields, \r\n id: props.userInfo?.eventId, \r\n pageId: store.state.main.page_id,\r\n groupId: props.groupId, \r\n })\r\n .catch(error => {\r\n showSpinner.value = false\r\n })\r\n\r\n } else {\r\n displayError.value = true\r\n }\r\n }\r\n\r\n const updateContactType = (value) => {\r\n contactType.value = value\r\n }\r\n\r\n return {\r\n nameOfEvent,\r\n description,\r\n shareInMainCalendar,\r\n mandatoryRegistration,\r\n maxParticipants,\r\n contactPersonMyself,\r\n contactPersonOther,\r\n contactPersonEmail,\r\n contactPersonName,\r\n contactPersonPhone,\r\n startDate,\r\n startTime,\r\n endDate,\r\n endTime,\r\n address,\r\n postalCode,\r\n city,\r\n showErrorAddress,\r\n isStartDateValid,\r\n isEndDateValid,\r\n isEditContext,\r\n showSpinner,\r\n contactType,\r\n contactTypeRadioOptions,\r\n showError,\r\n submit,\r\n getLabel,\r\n updateContactType\r\n }\r\n }\r\n}","import { render } from \"./CreateEvent.vue?vue&type=template&id=09498b5e\"\nimport script from \"./CreateEvent.vue?vue&type=script&lang=js\"\nexport * from \"./CreateEvent.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"D:\\\\a\\\\1\\\\s\\\\frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","// should be build in the all future projects\r\nexport default function (component, componentDOM) {\r\n const props = {} \r\n\r\n if (!component.props) return {}\r\n\r\n Object.keys(component.props).forEach(function (componentKey) {\r\n const type = component.props[componentKey].type.name\r\n // const required = component.props[componentKey].required\r\n\r\n const data = componentDOM.dataset\r\n\r\n Object.keys(data).forEach(function (DOMComponentKey) {\r\n if (componentKey === DOMComponentKey) {\r\n props[componentKey] = getFormattedData(type, data[DOMComponentKey])\r\n }\r\n })\r\n })\r\n\r\n return props\r\n}\r\n\r\nconst getFormattedData = function(type, data) {\r\n switch(type) {\r\n case \"Object\":\r\n return data ? JSON.parse(data) : {}\r\n case \"Array\":\r\n return data ? JSON.parse(data) : []\r\n case \"Boolean\":\r\n return data === \"true\" ? true : false\r\n case \"Number\":\r\n return parseFloat(data)\r\n default:\r\n return data\r\n }\r\n}\r\n","\r\n\r\n\r\n\r\n \r\n\r\n
\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n
\r\n\r\n","import { useStore } from 'vuex'\r\nimport { computed, ref, onBeforeMount } from 'vue'\r\n\r\nimport FormInputTextField from \"../FormInputTextField/FormInputTextField\";\r\nimport textAreaValidator from \"foundation/js/inputValidators/textAreaValidator\";\r\nimport nonEmptyStringValidator from \"foundation/js/inputValidators/nonEmptyStringValidator\";\r\n\r\nexport default {\r\n name: \"CreateFolderOverlay\",\r\n components: {\r\n FormInputTextField\r\n },\r\n\r\n setup(){\r\n const store = useStore()\r\n const overlayMode = computed(()=> store.state.frivillige.active_overlay_mode)\r\n const editModeActive = computed(()=> store.state.frivillige.edit_mode_active)\r\n \r\n let itemName = ref('')\r\n\r\n const isSubmitting = computed(()=> store.state.frivillige.is_submitting)\r\n let displayError = ref(false)\r\n\r\n onBeforeMount(() => {\r\n if (editModeActive.value) {\r\n itemName.value = store.state.frivillige.active_item_name\r\n }\r\n\r\n // the active overlay mode should be set when overlay activated as well as editModeActive\r\n // and creating updated active_name\r\n // store.dispatch('frivillige/getActiveItemName')\r\n // when overlay closed, mode is cleared inside PageOverlay.options closeOverlay\r\n // if in component library to debug activate a mode to see labels\r\n // to debug folder: store.dispatch('frivillige/setActiveOverlayMode', { mode: \"Mappe\"}) \r\n // to debug file: store.dispatch('frivillige/setActiveOverlayMode', { mode: \"Dokument\" }) \r\n })\r\n\r\n const isFormValid = () => {\r\n return textAreaValidator(itemName.value) \r\n && nonEmptyStringValidator(itemName.value)\r\n };\r\n\r\n const submitCreateOrEditFolderOrFile = () => {\r\n const isValid = isFormValid();\r\n displayError.value = !isValid;\r\n\r\n if (isValid) {\r\n store.dispatch(\"frivillige/submitCreateOrEditFolderOrFile\", {\r\n name: itemName.value\r\n })\r\n .then(() => {\r\n store.dispatch('main/closePageOverlay')\r\n store.dispatch('search/refreshSearches')\r\n });\r\n }\r\n };\r\n\r\n const getLabel = (labelKey) => {\r\n\r\n if(editModeActive.value && overlayMode.value === 'Dokument') {\r\n return store.getters[\"labels/getLabel\"]({\r\n labelCollection: \"EditFileOverlay\",\r\n labelKey: labelKey,\r\n });\r\n \r\n } else if(overlayMode.value === 'Dokument') {\r\n return store.getters[\"labels/getLabel\"]({\r\n labelCollection: \"CreateFileOverlay\",\r\n labelKey: labelKey,\r\n });\r\n } \r\n else if(editModeActive.value && overlayMode.value === 'Mappe') {\r\n return store.getters[\"labels/getLabel\"]({\r\n labelCollection: \"EditFolderOverlay\",\r\n labelKey: labelKey,\r\n });\r\n \r\n } \r\n else if (overlayMode.value === 'Mappe') {\r\n return store.getters[\"labels/getLabel\"]({\r\n labelCollection: \"CreateFolderOverlay\",\r\n labelKey: labelKey,\r\n });\r\n }\r\n\r\n }\r\n \r\n return {\r\n itemName,\r\n isSubmitting,\r\n displayError,\r\n submitCreateOrEditFolderOrFile,\r\n nonEmptyStringValidator,\r\n getLabel\r\n }\r\n \r\n }\r\n}","import { render } from \"./CreateFolderOverlay.vue?vue&type=template&id=de184cd0\"\nimport script from \"./CreateFolderOverlay.vue?vue&type=script&lang=js\"\nexport * from \"./CreateFolderOverlay.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"D:\\\\a\\\\1\\\\s\\\\frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\r\n\r\n\r\n \r\n \r\n {{ getLabel('title') }}
\r\n \r\n \r\n
{{ getLabel('description') }}
\r\n
\r\n \r\n\r\n\r\n \r\n
\r\n\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n
\r\n \r\n\r\n","\r\n\r\n\r\n \r\n\r\n","import formFieldCommonOptions from 'foundation/js/formFieldCommonOptions'\r\nimport nameValidator from 'foundation/js/inputValidators/nameValidator'\r\n\r\nconst options = formFieldCommonOptions('FormInputNameField', {\r\n validatorFunction(input) {\r\n return nameValidator(input)\r\n }\r\n})\r\n\r\nexport default options\r\n","import { render } from \"./FormInputNameField.vue?vue&type=template&id=54e6419c\"\nimport script from \"./FormInputNameField.vue?vue&type=script&lang=js\"\nexport * from \"./FormInputNameField.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"D:\\\\a\\\\1\\\\s\\\\frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\r\n\r\n\r\n \r\n\r\n","import formFieldCommonOptions from 'foundation/js/formFieldCommonOptions'\r\nimport emailValidator from '../../foundation/js/inputValidators/emailValidator'\r\n\r\nconst options = formFieldCommonOptions('FormInputEmailField', {\r\n validatorFunction(input) {\r\n return emailValidator(input)\r\n }\r\n})\r\n\r\nexport default options\r\n","import { render } from \"./FormInputEmailField.vue?vue&type=template&id=eeef956c\"\nimport script from \"./FormInputEmailField.vue?vue&type=script&lang=js\"\nexport * from \"./FormInputEmailField.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"D:\\\\a\\\\1\\\\s\\\\frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\r\n\r\n\r\n \r\n\r\n","import formFieldCommonOptions from 'foundation/js/formFieldCommonOptions'\r\nimport phoneValidator from '../../foundation/js/inputValidators/phoneValidator'\r\n\r\nconst options = formFieldCommonOptions('FormInputPhoneField', {\r\n validatorFunction(input) {\r\n return phoneValidator(input)\r\n }\r\n})\r\n\r\nexport default options\r\n","import { render } from \"./FormInputPhoneField.vue?vue&type=template&id=01015fb8\"\nimport script from \"./FormInputPhoneField.vue?vue&type=script&lang=js\"\nexport * from \"./FormInputPhoneField.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"D:\\\\a\\\\1\\\\s\\\\frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import GetLabel from \"foundation/js/getLabel\"\r\nimport { ref, computed } from \"vue\"\r\nimport { useStore } from \"vuex\"\r\n\r\nimport FormInputTextField from \"../FormInputTextField/FormInputTextField\"\r\nimport FormInputNameField from \"../FormInputNameField/FormInputNameField\"\r\nimport FormAddressField from \"../FormAddressField/FormAddressField\"\r\nimport FormInputEmailField from \"../FormInputEmailField/FormInputEmailField\"\r\nimport FormInputPhoneField from \"../FormInputPhoneField/FormInputPhoneField\"\r\nimport FormCheckbox from \"../FormCheckbox/FormCheckbox\"\r\nimport nameValidator from \"foundation/js/inputValidators/nameValidator\"\r\nimport phoneValidator from \"foundation/js/inputValidators/phoneValidator\"\r\nimport emailValidator from \"foundation/js/inputValidators/emailValidator\"\r\n\r\nexport default {\r\n name: \"CreateFrivilligeProfile\",\r\n components: {\r\n FormInputTextField,\r\n FormInputNameField,\r\n FormAddressField,\r\n FormInputEmailField,\r\n FormInputPhoneField,\r\n FormCheckbox\r\n },\r\n props: {\r\n external: {\r\n type: Object,\r\n required: true,\r\n }\r\n },\r\n setup(props) {\r\n const store = useStore()\r\n const firstName = ref(props.external.userData?.firstName ?? \"\")\r\n const lastName = ref(props.external.userData?.lastName ?? \"\")\r\n const email = ref(props.external.userData?.email ?? \"\")\r\n const phoneNumber = ref(props.external.userData?.phoneNumber ?? \"\")\r\n const address = ref(props.external.userData?.address ?? \"\")\r\n const postalCode = ref(props.external.userData?.postalCode ?? \"\")\r\n const city = ref(props.external.userData?.city ?? \"\")\r\n const consentBool = ref(false)\r\n const newsletterBool = ref(false)\r\n const displayError = ref(false)\r\n const isSubmitting = computed(() => store.state.frivilligprofil.submitting)\r\n\r\n const isReadOnly = ref({\r\n firstName: firstName.value !== \"\",\r\n lastName: lastName.value !== \"\",\r\n email: email.value !== \"\",\r\n phoneNumber: phoneNumber.value !== \"\",\r\n address: address.value !== \"\"\r\n })\r\n\r\n const addressValidator = (address, postalCode, city) => {\r\n return address && postalCode && city\r\n }\r\n\r\n const consentValidator = (consent) => {\r\n return consent\r\n }\r\n\r\n const validateFields = () => {\r\n if (nameValidator(firstName.value) \r\n && nameValidator(lastName.value) \r\n && phoneValidator(phoneNumber.value) \r\n && emailValidator(email.value) \r\n && addressValidator(address.value, postalCode.value, city.value)\r\n && consentValidator(consentBool.value)\r\n ) {\r\n return true\r\n }\r\n return false\r\n }\r\n\r\n const submit = async () => {\r\n\r\n if (validateFields()) {\r\n displayError.value = false\r\n await store.dispatch(\"frivilligprofil/createProfil\", {\r\n pageId: store.state.main.page_id,\r\n body: {\r\n firstName: firstName.value,\r\n lastName: lastName.value,\r\n email: email.value,\r\n phoneNumber: phoneNumber.value,\r\n address: address.value,\r\n postalCode: postalCode.value,\r\n city: city.value,\r\n consentBool: consentBool.value,\r\n newsletterBool: newsletterBool.value\r\n }\r\n })\r\n } else {\r\n displayError.value = true\r\n }\r\n }\r\n\r\n return {\r\n firstName,\r\n lastName,\r\n email,\r\n phoneNumber,\r\n address,\r\n postalCode,\r\n city,\r\n consentBool,\r\n newsletterBool,\r\n displayError,\r\n isSubmitting,\r\n isReadOnly,\r\n nameValidator,\r\n phoneValidator,\r\n emailValidator,\r\n addressValidator,\r\n submit,\r\n getLabel: (labelKey) => GetLabel({ labelKey, labelCollection: \"CreateFrivilligprofil\" })\r\n }\r\n \r\n }\r\n}","import { render } from \"./CreateFrivilligeProfile.vue?vue&type=template&id=02b9e08b\"\nimport script from \"./CreateFrivilligeProfile.vue?vue&type=script&lang=js\"\nexport * from \"./CreateFrivilligeProfile.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"D:\\\\a\\\\1\\\\s\\\\frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\r\n\r\n\r\n \r\n \r\n\r\n {{ isEditContext ? getLabel('editTitle') : getLabel('createTitle') }}
\r\n \r\n\r\n \r\n
{{ getLabel('jobDescription') }}
\r\n
\r\n \r\n\r\n \r\n {{ getLabel('descriptionTitle') }}
\r\n\r\n \r\n\r\n
\r\n\r\n {{ getLabel('jobInfoTitle') }}
\r\n\r\n \r\n\r\n
\r\n\r\n {{ getLabel('aboutTitle') }}
\r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n","\r\n\r\n\r\n \r\n\r\n","import formFieldCommonOptions from 'foundation/js/formFieldCommonOptions'\r\nimport textAreaValidator from '../../foundation/js/inputValidators/textAreaValidator'\r\n\r\nconst options = formFieldCommonOptions('FormInputTextarea', {\r\n validatorFunction(input) {\r\n return textAreaValidator(input)\r\n }\r\n})\r\n\r\nexport default options\r\n","import { render } from \"./FormInputTextarea.vue?vue&type=template&id=0fc36ba3\"\nimport script from \"./FormInputTextarea.vue?vue&type=script&lang=js\"\nexport * from \"./FormInputTextarea.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"D:\\\\a\\\\1\\\\s\\\\frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\r\n\r\n// TinyMCE imports\r\nimport \"tinymce/tinymce\"\r\nimport \"tinymce/themes/silver\";\r\nimport \"tinymce/icons/default\";\r\nimport 'tinymce/models/dom/model'\r\nimport 'tinymce/skins/ui/oxide/skin.css';\r\n// TinyMCE plugin imports\r\nimport 'tinymce/plugins/emoticons';\r\nimport 'tinymce/plugins/emoticons/js/emojis';\r\nimport 'tinymce/plugins/autoresize';\r\nimport 'tinymce/plugins/lists';\r\nimport 'tinymce/plugins/autolink';\r\n\r\nimport Editor from '@tinymce/tinymce-vue'\r\nimport GetLabel from \"foundation/js/getLabel\"\r\nimport emailValidator from \"foundation/js/inputValidators/emailValidator\";\r\nimport isBoolean from \"foundation/js/inputValidators/isBoolean\";\r\nimport nonEmptyStringValidator from \"foundation/js/inputValidators/nonEmptyStringValidator\";\r\nimport phoneValidator from \"foundation/js/inputValidators/phoneValidator\";\r\nimport postalCodeValidator from \"foundation/js/inputValidators/postalCodeValidator\";\r\nimport FormInputTextField from \"../FormInputTextField/FormInputTextField\"\r\nimport FormInputNameField from \"../FormInputNameField/FormInputNameField\"\r\nimport FormAddressField from \"../FormAddressField/FormAddressField\"\r\nimport FormInputEmailField from \"../FormInputEmailField/FormInputEmailField\"\r\nimport FormInputPhoneField from \"../FormInputPhoneField/FormInputPhoneField\"\r\nimport FormCheckbox from \"../FormCheckbox/FormCheckbox\"\r\nimport FormInputDropdown from \"components/FormInputDropdown/FormInputDropdown\";\r\nimport { useStore } from \"vuex\";\r\nimport { ref, computed } from \"vue\";\r\nimport AttachmentsEditor from \"../AttachmentsEditor/AttachmentsEditor.vue\";\r\nimport FormInputTextarea from \"components/FormInputTextarea/FormInputTextarea\";\r\n\r\nexport default {\r\n name: \"CreateFrivilligJob\",\r\n components: {\r\n Editor,\r\n AttachmentsEditor,\r\n FormInputTextField,\r\n FormInputNameField,\r\n FormAddressField,\r\n FormInputEmailField,\r\n FormInputDropdown,\r\n FormCheckbox,\r\n FormInputPhoneField,\r\n FormInputTextarea\r\n },\r\n props: {\r\n subjects: {\r\n type: Array,\r\n required: true,\r\n },\r\n jobInfo: {\r\n type: Object,\r\n required: false,\r\n },\r\n isEditContext: {\r\n type: Boolean,\r\n required: false,\r\n default: false\r\n }\r\n },\r\n setup(props) {\r\n const store = useStore()\r\n const displayError = ref(false)\r\n const getLabel = (labelKey) => GetLabel({ labelKey, labelCollection: \"CreateFrivilligJob\" })\r\n\r\n const submitPath = props.isEditContext ? 'frivilligjob/updateFrivilligjob' : 'frivilligjob/createFrivilligjob'\r\n\r\n const isSubmitting = computed(() => {\r\n return store.state.frivilligjob.isSubmitting\r\n })\r\n\r\n const url = `/${process.env.FRIVILLIGJOB_IMAGE_GET.replace(\"[frivilligjobId]\", props.jobInfo?.jobId)}`\r\n const activeImage = ref({\r\n \"name\": \"\",\r\n \"url\": url,\r\n \"size\": \"\"\r\n })\r\n\r\n const isPeriodValid = ref(true)\r\n\r\n const startDate = ref(props.jobInfo?.startDate ?? \"\")\r\n const startTime = ref(props.jobInfo?.startTime ?? \"\")\r\n const endDate = ref(props.jobInfo?.endDate ?? \"\")\r\n const endTime = ref(props.jobInfo?.endTime ?? \"\")\r\n const expirationDate = ref(props.jobInfo?.expirationDate ?? '')\r\n const images = ref((props.jobInfo?.hasImage ? [activeImage.value] : []) ?? [])\r\n const hasImageChanged = ref(false)\r\n\r\n const jobData = ref({\r\n \"jobId\": props.jobInfo?.jobId,\r\n \"jobTitle\": props.jobInfo?.jobTitle,\r\n \"aboutJob\": props.jobInfo?.aboutJob,\r\n \"offerDescription\": props.jobInfo?.offerDescription,\r\n \"expectationDescription\": props.jobInfo?.expectationDescription,\r\n \"placeName\": props.jobInfo?.placeName ?? '',\r\n \"address\": props.jobInfo?.address ?? '',\r\n \"postalCode\": props.jobInfo?.postalCode ?? '',\r\n \"city\": props.jobInfo?.city ?? '',\r\n \"isCountrywide\": props.jobInfo?.isCountrywide ?? true,\r\n \"isSelfContactPerson\": props.jobInfo?.isSelfContactPerson ?? true,\r\n \"contactPersonName\": props.jobInfo?.contactPersonName ?? '',\r\n \"contactPersonEmail\": props.jobInfo?.contactPersonEmail ?? '',\r\n \"contactPersonPhone\": props.jobInfo?.contactPersonPhone ?? '',\r\n \"timeConsumption\": props.jobInfo?.timeConsumption,\r\n \"hasSpecificTime\": props.jobInfo?.hasSpecificTime ?? false,\r\n })\r\n const hasSpecificDate = ref(props.jobInfo?.hasSpecificDate ?? false)\r\n \r\n const showSpinner = ref(false)\r\n \r\n\r\n const addressValidator = (address, postalCode, city, isCountrywide) => {\r\n return isCountrywide || (address && postalCodeValidator(postalCode) && city)\r\n }\r\n \r\n const contactInformationValidator = () => {\r\n return jobData.value.isSelfContactPerson || \r\n (nonEmptyStringValidator(jobData.value.contactPersonEmail) && nonEmptyStringValidator(jobData.value.contactPersonName)) \r\n }\r\n\r\n const validateFields = () => {\r\n return validatePeriod(\r\n formatDateTime(startDate.value, startTime.value),\r\n formatDateTime(endDate.value, endTime.value))\r\n && nonEmptyStringValidator(jobData.value.jobTitle)\r\n && nonEmptyStringValidator(jobData.value.aboutJob)\r\n && nonEmptyStringValidator(jobData.value.offerDescription)\r\n && nonEmptyStringValidator(jobData.value.expectationDescription)\r\n && addressValidator(jobData.value.address, jobData.value.postalCode, jobData.value.city, jobData.value.isCountrywide)\r\n && nonEmptyStringValidator(jobData.value.timeConsumption)\r\n && contactInformationValidator()\r\n }\r\n\r\n const setIsCountryWide = (e) => {\r\n jobData.value.isCountrywide = e.target.checked\r\n\r\n if (jobData.value.isCountrywide){\r\n jobData.value.address = '',\r\n jobData.value.city = '',\r\n jobData.value.postalCode = ''\r\n }\r\n }\r\n\r\n const setSpecificDateCheckbox = (e) => {\r\n hasSpecificDate.value = e.target.checked\r\n \r\n if (!hasSpecificDate.value){\r\n startDate.value = ''\r\n endDate.value = ''\r\n startTime.value = ''\r\n endTime.value = ''\r\n\r\n jobData.value.hasSpecificTime = false\r\n }\r\n }\r\n\r\n function isDateValid(dateStr) {\r\n return !isNaN(new Date(dateStr))\r\n }\r\n\r\n const validatePeriod = (startDate, endDate) => {\r\n if (!isDateValid(startDate) || !isDateValid(endDate)){\r\n return true\r\n }\r\n\r\n\r\n if (startDate > endDate){\r\n return false\r\n }\r\n\r\n return true\r\n }\r\n\r\n const setSpecificTimeCheckbox = (e) => {\r\n jobData.value.hasSpecificTime = e.target.checked\r\n \r\n if (!jobData.value.hasSpecificTime){\r\n startTime.value = ''\r\n endTime.value = ''\r\n }\r\n }\r\n\r\n const handleTimeConsumptionSelector = (e) => {\r\n jobData.value.timeConsumption = e.target.value\r\n }\r\n\r\n const formatDateTime = (date, time) => {\r\n let timeString = time || \"12:00\"\r\n let combinedDatetime = `${date}T${timeString}:00`\r\n\r\n return new Date(combinedDatetime);\r\n }\r\n\r\n const createRequest = () => {\r\n return {\r\n ...jobData.value,\r\n \"startDate\": formatDateTime(startDate.value, startTime.value),\r\n \"endDate\": formatDateTime(endDate.value, endTime.value),\r\n \"expirationDate\": expirationDate.value,\r\n \"subjects\": props.subjects\r\n .filter(subject => subject.isSelected === true)\r\n .map(subject => subject.value),\r\n }\r\n }\r\n\r\n const setImage = (e) => {\r\n hasImageChanged.value = true\r\n images.value = e\r\n }\r\n\r\n const submitCreateJob = () => {\r\n displayError.value = true\r\n\r\n if (validateFields()){\r\n let request = createRequest()\r\n\r\n store.dispatch(submitPath, request)\r\n .then(async result => {\r\n if (!hasImageChanged.value){\r\n window.location.href = result.continueUrl\r\n\r\n return\r\n }\r\n\r\n if (images.value.length == 1){\r\n const formData = new FormData()\r\n formData.append('image', images.value[0])\r\n \r\n await store.dispatch('frivilligjob/submitFrivilligjobImage', {\r\n id: result.jobId,\r\n body: formData\r\n })\r\n }\r\n else {\r\n await store.dispatch('frivilligjob/removeFrivilligjobImage', result.jobId)\r\n }\r\n\r\n window.location.href = result.continueUrl\r\n })\r\n }\r\n else {\r\n displayError.value = true\r\n }\r\n }\r\n\r\n\r\n const isFutureDate = (expirationDate) => {\r\n\r\n if (!expirationDate) return false\r\n \r\n var now = new Date()\r\n var startTimestamp = new Date(`${expirationDate}`)\r\n \r\n return now <= startTimestamp\r\n }\r\n\r\n const setSubject = (id, isSelected) => props.subjects.find((subject) => subject.value === id).isSelected = isSelected\r\n\r\n return {\r\n jobData,\r\n showSpinner,\r\n displayError,\r\n isSubmitting,\r\n hasSpecificDate,\r\n startDate,\r\n endDate,\r\n startTime,\r\n endTime,\r\n isPeriodValid,\r\n expirationDate,\r\n images,\r\n getLabel,\r\n emailValidator,\r\n isBoolean,\r\n nonEmptyStringValidator,\r\n phoneValidator,\r\n postalCodeValidator,\r\n addressValidator,\r\n isFutureDate,\r\n submitCreateJob,\r\n setSubject,\r\n setSpecificDateCheckbox,\r\n setSpecificTimeCheckbox,\r\n handleTimeConsumptionSelector,\r\n setImage,\r\n setIsCountryWide\r\n }\r\n }\r\n}","import { render } from \"./CreateFrivilligJob.vue?vue&type=template&id=8a52b2e0\"\nimport script from \"./CreateFrivilligJob.vue?vue&type=script&lang=js\"\nexport * from \"./CreateFrivilligJob.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"D:\\\\a\\\\1\\\\s\\\\frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\r\n\r\n\r\n \r\n\r\n \r\n\r\n {{ getLabel(\"title\", [groupName]) }}
\r\n \r\n \r\n\r\n \r\n
{{ getLabel(\"description\") }}
\r\n
\r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n\r\n \r\n\r\n\r\n","import { useStore } from 'vuex'\r\n\r\n// TinyMCE imports\r\nimport \"tinymce/tinymce\"\r\nimport \"tinymce/themes/silver\";\r\nimport \"tinymce/icons/default\";\r\nimport 'tinymce/models/dom/model'\r\nimport 'tinymce/skins/ui/oxide/skin.css';\r\n// TinyMCE plugin imports\r\nimport 'tinymce/plugins/emoticons';\r\nimport 'tinymce/plugins/emoticons/js/emojis';\r\nimport 'tinymce/plugins/autoresize';\r\nimport 'tinymce/plugins/lists';\r\nimport 'tinymce/plugins/autolink';\r\n\r\nimport Editor from '@tinymce/tinymce-vue'\r\n\r\nimport FormInputTextField from 'components/FormInputTextField/FormInputTextField.vue'\r\nimport { ref } from 'vue'\r\n\r\nexport default {\r\n name: \"CreateGallery\",\r\n components: {\r\n FormInputTextField,\r\n Editor\r\n },\r\n props: {\r\n groupName: {\r\n type: String,\r\n required: true,\r\n default: \"\"\r\n },\r\n groupId: {\r\n type: String,\r\n required: true\r\n },\r\n content: {\r\n type: Object,\r\n required: false,\r\n default: null\r\n }\r\n },\r\n setup(props) {\r\n const store = useStore()\r\n const getLabel = (labelKey, replacements) => {\r\n let label = store.getters['labels/getLabel']({ labelCollection: 'createGallery', labelKey: labelKey })\r\n if (replacements) {\r\n replacements.forEach((replacement, index) => {\r\n label = label.replace(`{${index}}`, replacement)\r\n })\r\n }\r\n return label\r\n } \r\n\r\n const galleryTitle = ref(props.content?.title)\r\n const galleryContent = ref(props.content?.description)\r\n const galleryImages = ref(props.content?.files)\r\n const showInputErrors = ref(false)\r\n\r\n const onFileChange = (e) => {\r\n const files = e.target.files\r\n Array.from(files).forEach(file => {\r\n let newFile = file\r\n newFile.url = URL.createObjectURL(file)\r\n galleryImages.value.push(newFile)\r\n })\r\n }\r\n\r\n const removeFile = (fileName) => {\r\n galleryImages.value = Array.from(galleryImages.value).filter(image => image.name !== fileName)\r\n \r\n }\r\n \r\n const submitCreateGallery = async function () {\r\n showInputErrors.value = true\r\n if (galleryTitle.value !== \"\" && galleryContent.value !== \"\" && (props.isGallery ? galleryImages.value.length > 0 : true)) {\r\n const body = {\r\n title: galleryTitle.value,\r\n content: galleryContent.value,\r\n images: galleryImages.value\r\n }\r\n\r\n if (!props.content) {\r\n store.dispatch('forum/submitCreateGallery', {\r\n body: body,\r\n id: props.groupId\r\n })\r\n } else {\r\n store.dispatch('forum/submitEditGallery', {\r\n body: body,\r\n id: props.groupId\r\n })\r\n }\r\n } \r\n }\r\n\r\n return {\r\n getLabel,\r\n galleryTitle,\r\n galleryContent,\r\n galleryImages,\r\n showInputErrors,\r\n submitCreateGallery,\r\n removeFile,\r\n onFileChange\r\n }\r\n }\r\n}","import { render } from \"./CreateGallery.vue?vue&type=template&id=1589c74d\"\nimport script from \"./CreateGallery.vue?vue&type=script&lang=js\"\nexport * from \"./CreateGallery.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"D:\\\\a\\\\1\\\\s\\\\frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\r\n\r\n\r\n\r\n \r\n\r\n
\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n
\r\n\r\n","import { useStore } from 'vuex'\r\nimport { computed, ref } from 'vue'\r\n\r\nimport FormInputTextField from \"../FormInputTextField/FormInputTextField\";\r\nimport FormInputDropdown from \"../FormInputDropdown/FormInputDropdown\";\r\n\r\nimport nameValidator from \"foundation/js/inputValidators/nameValidator\";\r\nimport nonEmptyStringValidator from \"foundation/js/inputValidators/nonEmptyStringValidator\";\r\n\r\nexport default {\r\n name: \"CreateNewFileOverlay\",\r\n components: {\r\n FormInputTextField,\r\n FormInputDropdown\r\n },\r\n setup(){\r\n const store = useStore()\r\n const fileName = ref('')\r\n const fileTypeDropdown = ref('')\r\n\r\n const fileTypeDropdownOptions = computed(()=> store.state.frivillige.file_type_dropdown_options)\r\n const isSubmitting = computed(()=> store.state.frivillige.is_submitting)\r\n\r\n let displayError = ref(false)\r\n\r\n const isFormValid = () => {\r\n return nameValidator(fileName.value) \r\n && nonEmptyStringValidator(fileName.value) \r\n && nonEmptyStringValidator(fileTypeDropdown.value)\r\n };\r\n\r\n const submitCreateNewFile = () => {\r\n const isValid = isFormValid();\r\n displayError.value = !isValid;\r\n\r\n const body = {\r\n fileName: fileName.value,\r\n dokumentType: fileTypeDropdown.value,\r\n gruppeKode: store.state.frivillige.globalGruppeKode,\r\n mappeKode: store.getters[\"frivillige/get_global_folder_id\"]\r\n }\r\n\r\n if (isValid) {\r\n store.dispatch(\"frivillige/submitCreateNewFile\", {\r\n body\r\n })\r\n .then(() => {\r\n store.dispatch('main/closePageOverlay')\r\n store.dispatch('search/refreshSearches')\r\n });\r\n }\r\n };\r\n\r\n const getLabel = (labelKey) =>\r\n store.getters[\"labels/getLabel\"]({\r\n labelCollection: \"CreateNewFileOverlay\",\r\n labelKey: labelKey,\r\n });\r\n \r\n return {\r\n fileName,\r\n fileTypeDropdown,\r\n isSubmitting,\r\n displayError,\r\n fileTypeDropdownOptions,\r\n submitCreateNewFile,\r\n nonEmptyStringValidator,\r\n nameValidator,\r\n getLabel\r\n }\r\n \r\n }\r\n}","import { render } from \"./CreateNewFileOverlay.vue?vue&type=template&id=28685bf4\"\nimport script from \"./CreateNewFileOverlay.vue?vue&type=script&lang=js\"\nexport * from \"./CreateNewFileOverlay.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"D:\\\\a\\\\1\\\\s\\\\frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\r\n\r\n\r\n \r\n\r\n\r\n \r\n\r\n {{ getLabel(\"title\", [groupName]) }}
\r\n \r\n
\r\n\r\n
\r\n
{{ groupDescription }}
\r\n
\r\n
\r\n \r\n\r\n\r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n","import { useStore } from 'vuex'\r\n\r\n// TinyMCE imports\r\nimport \"tinymce/tinymce\"\r\nimport \"tinymce/themes/silver\";\r\nimport \"tinymce/icons/default\";\r\nimport 'tinymce/models/dom/model'\r\nimport 'tinymce/skins/ui/oxide/skin.css';\r\n// TinyMCE plugin imports\r\nimport 'tinymce/plugins/emoticons';\r\nimport 'tinymce/plugins/emoticons/js/emojis';\r\nimport 'tinymce/plugins/autoresize';\r\nimport 'tinymce/plugins/lists';\r\nimport 'tinymce/plugins/autolink';\r\n\r\nimport Editor from '@tinymce/tinymce-vue'\r\n\r\nimport FormInputTextField from 'components/FormInputTextField/FormInputTextField.vue'\r\nimport AttachmentsEditor from \"../AttachmentsEditor/AttachmentsEditor.vue\";\r\nimport { ref } from 'vue'\r\n\r\nexport default {\r\n name: \"CreatePost\",\r\n components: {\r\n FormInputTextField,\r\n AttachmentsEditor,\r\n Editor\r\n },\r\n props: {\r\n groupName: {\r\n type: String,\r\n required: true,\r\n default: \"\"\r\n },\r\n groupDescription: {\r\n type: String,\r\n required: true,\r\n default: \"\"\r\n },\r\n groupId: {\r\n type: String,\r\n required: true\r\n },\r\n content: {\r\n type: Object,\r\n required: false,\r\n default: null\r\n },\r\n postId: {\r\n type: String,\r\n required: true\r\n }\r\n },\r\n setup(props) {\r\n const store = useStore()\r\n const getLabel = (labelKey, replacements) => {\r\n let label = store.getters['labels/getLabel']({ labelCollection: 'createPost', labelKey: labelKey })\r\n if (replacements) {\r\n replacements.forEach((replacement, index) => {\r\n label = label.replace(`{${index}}`, replacement)\r\n })\r\n }\r\n return label\r\n } \r\n\r\n const postTitle = ref(props.content?.title ?? \"\")\r\n const postContent = ref(props.content?.description ?? \"\")\r\n const postFilesToAdd = ref([])\r\n const postFilesToRemove = ref([])\r\n\r\n const showInputErrors = ref(false)\r\n const isSubmitting = ref(false)\r\n\r\n const updateTextarea = (e) => {\r\n postContent.value = e.target.value\r\n }\r\n\r\n const validateInput = function (){\r\n return postTitle.value && postContent.value\r\n } \r\n \r\n const submitCreatePost = async function () {\r\n if(isSubmitting.value){ \r\n return;\r\n }\r\n isSubmitting.value = true\r\n\r\n if (!validateInput()) {\r\n showInputErrors.value = true\r\n isSubmitting.value = false\r\n return;\r\n }\r\n\r\n let formData = new FormData()\r\n formData.append('title', postTitle.value)\r\n formData.append('content', postContent.value)\r\n\r\n postFilesToAdd.value.forEach(file => {\r\n formData.append('filesToAdd', file)\r\n })\r\n\r\n postFilesToRemove.value.forEach(fileId => {\r\n formData.append('filesToRemove', fileId)\r\n })\r\n \r\n if (!props.content) {\r\n const response = await store.dispatch('forum/submitCreatePost', {\r\n body: formData,\r\n id: props.groupId\r\n })\r\n window.location.href = response.redirectUrl\r\n } \r\n else {\r\n const response = await store.dispatch('forum/submitEditPost', {\r\n body: formData,\r\n id: props.groupId,\r\n postId: props.postId\r\n })\r\n window.location.href = response.redirectUrl\r\n }\r\n }\r\n\r\n return {\r\n getLabel,\r\n postTitle,\r\n postContent,\r\n postFilesToAdd,\r\n postFilesToRemove,\r\n showInputErrors,\r\n submitCreatePost,\r\n updateTextarea,\r\n isSubmitting,\r\n }\r\n }\r\n}","import { render } from \"./CreatePost.vue?vue&type=template&id=fb095726\"\nimport script from \"./CreatePost.vue?vue&type=script&lang=js\"\nexport * from \"./CreatePost.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"D:\\\\a\\\\1\\\\s\\\\frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\r\n\r\n\r\n\r\n\r\n \r\n {{ getLabel(\"title\") }}
\r\n\r\n \r\n \r\n \r\n - \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n\r\n\r\n","\r\nimport { useStore } from \"vuex\"\r\nimport { ref } from 'vue'\r\nimport ActionResponseBox from \"components/ActionResponseBox/ActionResponseBox\"\r\n\r\nexport default {\r\n name: \"CTABox\",\r\n components: {\r\n ActionResponseBox\r\n },\r\n props: {\r\n result: {\r\n type: Object,\r\n required: true\r\n },\r\n ctaId: {\r\n type: String,\r\n required: false\r\n }\r\n },\r\n setup(props){\r\n const store = useStore()\r\n\r\n const displayCopyResponse = ref(false)\r\n\r\n const actionResponseLifeTime = 2500;\r\n const actionResponseFadeOutTime = 500;\r\n\r\n const handleCopyLink = function (link) {\r\n \r\n // Copy link to clipboard\r\n navigator.clipboard.writeText(link);\r\n\r\n // Show the copied text in ActionResponseBox\r\n displayCopyResponse.value = true\r\n\r\n //decide when to hide ActionResponse\r\n setTimeout(() => { \r\n displayCopyResponse.value = false\r\n }, actionResponseLifeTime)\r\n\r\n }\r\n\r\n return {\r\n getLabel: (labelKey) =>\r\n store.getters['labels/getLabel']({\r\n labelCollection: `CTABox-${props.ctaId}`,\r\n labelKey\r\n }),\r\n handleCopyLink,\r\n displayCopyResponse,\r\n actionResponseLifeTime,\r\n actionResponseFadeOutTime\r\n }\r\n }\r\n}","import { render } from \"./CTABox.vue?vue&type=template&id=dffa38c4\"\nimport script from \"./CTABox.vue?vue&type=script&lang=js\"\nexport * from \"./CTABox.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"D:\\\\a\\\\1\\\\s\\\\frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import {createApp} from 'vue'\r\nimport CTABox from './CTABox'\r\n\r\nconst el = '.kb-component--cta-box'\r\nconsole.log('el', el)\r\n\r\nexport default function(Store){\r\n const DOM = document.querySelectorAll(el)\r\n if(DOM.length){\r\n DOM.forEach((CTABoxDOM)=>{\r\n const result = JSON.parse(CTABoxDOM.dataset.result)\r\n const ctaId = CTABoxDOM.dataset.ctaId\r\n const component = createApp(CTABox, { result, ctaId }).use(Store)\r\n component.mount(CTABoxDOM)\r\n })\r\n }\r\n}","\r\n\r\n\r\n \r\n \r\n \r\n
\r\n {{ getLabel('title') }}\r\n
\r\n \r\n\r\n \r\n \r\n \r\n
{{ getLabel('text') }}
\r\n
\r\n \r\n\r\n \r\n\r\n \r\n
\r\n
{{ getLabel('deleteProfileAndDataText') }}
\r\n
\r\n
\r\n
\r\n
{{ getLabel('deleteProfileText') }}
\r\n
\r\n
\r\n
\r\n \r\n\r\n","import { useStore } from \"vuex\"\r\nimport { computed } from \"vue\"\r\n \r\nexport default {\r\n name: \"DeleteCancerProfileModal\",\r\n props: {\r\n continueUrl: {\r\n type: String,\r\n required: false,\r\n default: null\r\n },\r\n continueUrlWithData: {\r\n type: String,\r\n required: false,\r\n default: null\r\n }\r\n },\r\n setup(props) {\r\n const store = useStore()\r\n const cancerforumProfileId = computed(() => store.state.main.page_overlay_content_data.cancerforumProfileId)\r\n const continueUrl = computed(() => props.continueUrl !== null ? props.continueUrl : store.state.main.page_overlay_content_data.continueUrl)\r\n const continueUrlWithData = computed(() => props.continueUrlWithData !== null ? props.continueUrl : store.state.main.page_overlay_content_data.continueUrlWithData)\r\n\r\n const deleteProfileAndData = () => {\r\n store.dispatch('forum/deleteCancerProfileAndData', { id: cancerforumProfileId.value, continueUrl: continueUrl.value })\r\n }\r\n \r\n const deleteProfile = () => {\r\n store.dispatch('forum/deleteCancerProfile', { id: cancerforumProfileId.value, continueUrl: continueUrlWithData.value })\r\n } \r\n \r\n return {\r\n getLabel: (labelKey) => store.getters['labels/getLabel']({labelCollection: 'DeleteCancerProfileModal', labelKey}),\r\n deleteProfileAndData,\r\n deleteProfile\r\n }\r\n }\r\n}","import { render } from \"./DeleteCancerProfileModal.vue?vue&type=template&id=7421986b\"\nimport script from \"./DeleteCancerProfileModal.vue?vue&type=script&lang=js\"\nexport * from \"./DeleteCancerProfileModal.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"D:\\\\a\\\\1\\\\s\\\\frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\r\n\r\n\r\n \r\n\r\n","import { useStore } from \"vuex\"\r\nimport GetLabel from \"foundation/js/getLabel\"\r\n\r\nexport default {\r\n name: \"DeleteCommentOverlay\",\r\n setup(){\r\n const store = useStore()\r\n\r\n const deleteComment = () => {\r\n store.state.main.page_overlay_content_data.callback()\r\n }\r\n\r\n return {\r\n getLabel: (labelKey) => GetLabel({ labelKey, labelCollection: 'DeleteCommentOverlay' }),\r\n deleteComment\r\n }\r\n }\r\n}","import { render } from \"./DeleteCommentOverlay.vue?vue&type=template&id=0e4d7946\"\nimport script from \"./DeleteCommentOverlay.vue?vue&type=script&lang=js\"\nexport * from \"./DeleteCommentOverlay.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"D:\\\\a\\\\1\\\\s\\\\frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\r\n\r\n\r\n \r\n \r\n \r\n
\r\n {{ getLabel('title') }}\r\n
\r\n \r\n\r\n \r\n \r\n \r\n
{{ getLabel('text') }}
\r\n
\r\n \r\n\r\n \r\n\r\n \r\n \r\n
\r\n \r\n\r\n","import { useStore } from \"vuex\"\r\nimport GetLabel from \"foundation/js/getLabel\"\r\n\r\nexport default {\r\n name: \"DeleteEventModal\",\r\n setup(){\r\n const store = useStore()\r\n\r\n const deletePost = () => {\r\n store.state.main.page_overlay_content_data.callback()\r\n }\r\n\r\n return {\r\n getLabel: (labelKey) => GetLabel({ labelKey, labelCollection: 'DeleteEventModal' }),\r\n deletePost\r\n }\r\n }\r\n}","import { render } from \"./DeleteEventModal.vue?vue&type=template&id=5325b1d1\"\nimport script from \"./DeleteEventModal.vue?vue&type=script&lang=js\"\nexport * from \"./DeleteEventModal.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"D:\\\\a\\\\1\\\\s\\\\frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\r\n\r\n\r\n\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n ","\r\nimport { useStore } from 'vuex'\r\nimport { computed } from 'vue'\r\n\r\nexport default {\r\n name: \"DeleteFrivilligjobOverlay\",\r\n setup(){\r\n const store = useStore()\r\n const isSubmitting = computed(()=> store.state.frivilligprofil.is_submitting)\r\n const frivilligjobId = computed(() => store.state.main.page_overlay_content_data.frivilligjobId)\r\n const redirectUrl = computed(() => store.state.main.page_overlay_content_data.redirectAfterDeleteUrl)\r\n\r\n const submitConfirmDelete = () => {\r\n store.dispatch(\"frivilligjob/deleteFrivilligjob\", frivilligjobId.value)\r\n .then((_) => {\r\n window.location.href = redirectUrl.value\r\n });\r\n };\r\n\r\n const closeOverlay = function() {\r\n store.dispatch('main/closePageOverlay')\r\n }\r\n\r\n const handleRegret = () => {\r\n closeOverlay() \r\n };\r\n\r\n const getLabel = (labelKey, replacements) => {\r\n let label = store.getters['labels/getLabel']({ labelCollection: 'DeleteFrivilligjobOverlay', labelKey: labelKey })\r\n if (replacements) {\r\n replacements.forEach((replacement, index) => {\r\n label = label.replace(`{${index}}`, replacement)\r\n })\r\n }\r\n return label\r\n }\r\n\r\n return {\r\n isSubmitting,\r\n getLabel,\r\n handleRegret,\r\n submitConfirmDelete\r\n }\r\n \r\n }\r\n}","import { render } from \"./DeleteFrivilligjobOverlay.vue?vue&type=template&id=c91173ee\"\nimport script from \"./DeleteFrivilligjobOverlay.vue?vue&type=script&lang=js\"\nexport * from \"./DeleteFrivilligjobOverlay.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"D:\\\\a\\\\1\\\\s\\\\frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\r\n\r\n\r\n \r\n \r\n \r\n
\r\n {{ getLabel('title') }}\r\n
\r\n \r\n\r\n \r\n \r\n \r\n
{{ getLabel('text') }}
\r\n
\r\n \r\n\r\n \r\n\r\n \r\n \r\n
\r\n \r\n\r\n","import { useStore } from \"vuex\"\r\nimport GetLabel from \"foundation/js/getLabel\"\r\n\r\nexport default {\r\n name: \"DeletePostOverlay\",\r\n setup(){\r\n const store = useStore()\r\n\r\n const deletePost = () => {\r\n store.state.main.page_overlay_content_data.callback()\r\n }\r\n\r\n return {\r\n getLabel: (labelKey) => GetLabel({ labelKey, labelCollection: 'DeletePostOverlay' }),\r\n deletePost\r\n }\r\n }\r\n}","import { render } from \"./DeletePostOverlay.vue?vue&type=template&id=7740e6d3\"\nimport script from \"./DeletePostOverlay.vue?vue&type=script&lang=js\"\nexport * from \"./DeletePostOverlay.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"D:\\\\a\\\\1\\\\s\\\\frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\r\n\r\n\r\n\r\n\r\n\r\n
\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n
\r\n\r\n","import { useStore } from 'vuex'\r\nimport { computed } from 'vue'\r\n\r\nexport default {\r\n name: \"DeleteRoleOverlay\",\r\n setup(){\r\n const store = useStore()\r\n const isSubmitting = computed(()=> store.state.frivilligprofil.is_submitting)\r\n const groupRoleId = computed(() => store.state.main.page_overlay_content_data.groupRoleId)\r\n\r\n const submitConfirmDelete = () => {\r\n store.dispatch(\"frivilligprofil/deleteRolletildeling\", groupRoleId.value);\r\n };\r\n\r\n const closeOverlay = function() {\r\n store.dispatch('main/closePageOverlay')\r\n }\r\n\r\n const handleRegret = () => {\r\n closeOverlay() \r\n };\r\n\r\n const getLabel = (labelKey, replacements) => {\r\n let label = store.getters['labels/getLabel']({ labelCollection: 'DeleteRoleOverlay', labelKey: labelKey })\r\n if (replacements) {\r\n replacements.forEach((replacement, index) => {\r\n label = label.replace(`{${index}}`, replacement)\r\n })\r\n }\r\n return label\r\n }\r\n\r\n return {\r\n isSubmitting,\r\n getLabel,\r\n handleRegret,\r\n submitConfirmDelete\r\n }\r\n \r\n }\r\n}","import { render } from \"./DeleteRoleOverlay.vue?vue&type=template&id=5b65699b\"\nimport script from \"./DeleteRoleOverlay.vue?vue&type=script&lang=js\"\nexport * from \"./DeleteRoleOverlay.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"D:\\\\a\\\\1\\\\s\\\\frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\r\n\r\n\r\n {{ word }}\r\n\r\n \r\n \r\n
\r\n\r\n
\r\n\r\n
\r\n {{\r\n wordDefinition.title\r\n }}\r\n {{\r\n wordDefinition.definition\r\n }}\r\n \r\n \r\n Læs hele beskrivelsen i ordbogen\r\n \r\n \r\n \r\n
\r\n \r\n \r\n
\r\n \r\n\r\n","import { ref, computed, onMounted } from 'vue'\r\nimport { useStore } from 'vuex'\r\nimport debounce from 'foundation/js/debounce'\r\n\r\nexport default {\r\n name: 'DictionaryWord',\r\n props: {\r\n domId: {\r\n type: String,\r\n required: true\r\n },\r\n wordObject: {\r\n type: Object,\r\n required: true\r\n }\r\n },\r\n setup(props) {\r\n const { id, word, wordArticleUrl } = props.wordObject\r\n const store = useStore()\r\n\r\n let display = ref(false)\r\n const wordDefinition = computed(() =>\r\n store.getters['dictionary/getWordDefinitionById'](id)\r\n )\r\n\r\n const fetchDefinition = debounce(function () {\r\n store.dispatch('dictionary/fetch_word_definition', { id })\r\n }, 500)\r\n\r\n const setESChandler = () => {\r\n const handler = (event) => {\r\n if (event.key === 'Escape') {\r\n closeDialog()\r\n document.body.removeEventListener('keydown', handler)\r\n }\r\n }\r\n document.body.addEventListener('keydown', handler)\r\n }\r\n\r\n const highlighted = ref(null)\r\n const wordPopup = ref(null)\r\n const arrow = ref(null)\r\n const closeButton = ref(null)\r\n\r\n const clickOutsideHandler = function (e) {\r\n if (wordPopup.value.contains(e.target)) return false\r\n e.preventDefault()\r\n closeDialog()\r\n }\r\n\r\n const tapTrap = (e) => {\r\n e.preventDefault()\r\n e.stopPropagation()\r\n closeDialog()\r\n highlighted.value.focus()\r\n }\r\n\r\n const showDialog = () => {\r\n if (store.state.main.dictionary_visible) return\r\n store.commit('main/set_dictionary_visible', true)\r\n\r\n fetchDefinition()\r\n setESChandler()\r\n\r\n display.value = true\r\n\r\n // we need to make sure the DOM has catched up and the popup element is present before we start to measure positions\r\n // wordPopup and arrow might be empty if we dont apply this slight wait\r\n setTimeout(() => {\r\n // original positions before calculations\r\n\r\n let arrowPosition = 0\r\n const currentLeftPosition =\r\n wordPopup.value.getBoundingClientRect().left\r\n const currentRightPosition =\r\n wordPopup.value.getBoundingClientRect().right\r\n const currentBottomPosition =\r\n wordPopup.value.getBoundingClientRect().bottom\r\n\r\n const popupWidth = wordPopup.value.offsetWidth\r\n const highlightedWidthCompensation =\r\n highlighted.value.offsetWidth / 2 - 10\r\n let calculatedLeftPosition =\r\n popupWidth / 2 - highlightedWidthCompensation\r\n\r\n const exceedsBottomEdge =\r\n currentBottomPosition >\r\n document.documentElement.clientHeight\r\n const exceedsLeftEdge =\r\n calculatedLeftPosition > currentLeftPosition\r\n const exceedsRightEdge =\r\n currentRightPosition - calculatedLeftPosition >\r\n document.documentElement.offsetWidth\r\n\r\n if (exceedsBottomEdge) {\r\n wordPopup.value.style.bottom =\r\n highlighted.value.offsetHeight + 10 + 'px'\r\n arrow.value.style.bottom = '-35px' // specific value matching the actual height of the rotated square being used (do not change)\r\n arrow.value.style.top = 'auto' // a reset to hardcounter styling\r\n }\r\n\r\n if (exceedsLeftEdge) {\r\n calculatedLeftPosition =\r\n calculatedLeftPosition -\r\n (calculatedLeftPosition - currentLeftPosition)\r\n arrowPosition =\r\n highlighted.value.offsetWidth / 2 -\r\n 10 +\r\n highlighted.value.getBoundingClientRect().left\r\n } else if (exceedsRightEdge) {\r\n const calculatedRightPosition =\r\n currentRightPosition -\r\n calculatedLeftPosition -\r\n document.documentElement.offsetWidth\r\n calculatedLeftPosition =\r\n calculatedLeftPosition + calculatedRightPosition\r\n arrowPosition = popupWidth / 2 + calculatedRightPosition\r\n }\r\n\r\n wordPopup.value.style.left = '-' + calculatedLeftPosition + 'px'\r\n\r\n if (arrowPosition) {\r\n arrow.value.style.left = arrowPosition + 'px'\r\n }\r\n\r\n document.body.addEventListener('click', clickOutsideHandler)\r\n\r\n closeButton.value.focus()\r\n }, 10)\r\n }\r\n\r\n onMounted(() => {\r\n /*\r\n We emit a 'dictionaryWordMounted' event when a dictionary word highlight is mounted,\r\n to allow other components to react to the mounting of a dictionary word highlight.\r\n E.g. the FactBox component listens to this event. It uses the event to control the timing of the word highlight. \r\n Specifically, the highlight does not occur when the FactBox is closed. Instead, it only happens when the FactBox is opened.\r\n If there are other components that need to handle dictionary word highlights differently, they can listen to this event and react accordingly.\r\n */\r\n const dictionaryWordDom = document.querySelector(props.domId)\r\n const higlightDom = dictionaryWordDom.querySelector('span')\r\n\r\n const dictionaryWordMountedEvent = new CustomEvent(\r\n 'dictionaryWordMounted',\r\n {\r\n bubbles: true,\r\n detail: higlightDom.innerText\r\n }\r\n )\r\n dictionaryWordDom.dispatchEvent(dictionaryWordMountedEvent)\r\n })\r\n\r\n const closeDialog = () => {\r\n document.body.removeEventListener('click', clickOutsideHandler)\r\n store.commit('main/set_dictionary_visible', false)\r\n display.value = false\r\n }\r\n\r\n return {\r\n arrow,\r\n closeDialog,\r\n closeButton,\r\n display,\r\n fetchDefinition,\r\n highlighted,\r\n id,\r\n showDialog,\r\n tapTrap,\r\n word,\r\n wordDefinition,\r\n wordArticleUrl,\r\n wordPopup\r\n }\r\n }\r\n}\r\n","import { render } from \"./DictionaryWord.vue?vue&type=template&id=e59a6174\"\nimport script from \"./DictionaryWord.vue?vue&type=script&lang=js\"\nexport * from \"./DictionaryWord.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"D:\\\\a\\\\1\\\\s\\\\frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { onMounted, createApp } from 'vue'\r\nimport { useStore } from 'vuex'\r\nimport Store from 'store'\r\nimport Mark from 'mark.js'\r\nimport DictionaryWord from '../DictionaryWord/DictionaryWord'\r\n\r\nexport default {\r\n name: 'Dictionary',\r\n components: { DictionaryWord },\r\n props: {\r\n wordObjects: {\r\n type: Array,\r\n required: true\r\n }\r\n },\r\n setup(props) {\r\n\r\n onMounted(() => {\r\n let words = []\r\n const options = {\r\n accuracy: {\r\n value: 'exactly',\r\n limiters: [',', '.', '?', '!', ';', ':']\r\n },\r\n exclude: ['a', 'h1', 'h2', 'h3', 'h4', 'h5'],\r\n separateWordSearch: false,\r\n element: 'span',\r\n className:\r\n 'kb-component--dictionary-word kb-dictionary-word__definition-set',\r\n each: (node) => {\r\n \r\n const currentWordObject = props.wordObjects.find(\r\n (w) => {\r\n if (w.word.toLowerCase() == node.innerText.toLowerCase() \r\n || w.word.toLowerCase() == node.innerHTML.toLowerCase()) {\r\n return true\r\n } \r\n return false\r\n }\r\n ) \r\n if (currentWordObject) {\r\n const wordData = {\r\n id: currentWordObject.id,\r\n word: node.innerHTML,\r\n wordArticleUrl: currentWordObject.wordArticleUrl\r\n }\r\n node.setAttribute('data-word', JSON.stringify(wordData))\r\n node.setAttribute(\r\n 'id',\r\n 'kb-component--dictionary-word__' +\r\n Math.random().toString(16).slice(2)\r\n )\r\n }\r\n }\r\n }\r\n\r\n props.wordObjects.forEach((w) => words.push(w.word))\r\n\r\n\r\n document.querySelectorAll('.kb-rich-text').forEach((richText) => {\r\n const mark = new Mark(richText)\r\n mark.mark(words, options)\r\n })\r\n\r\n // Mount the DictionaryWord component to all the words contained in the dictionary\r\n const el = '.kb-component--dictionary-word'\r\n const DOMs = document.querySelectorAll(el)\r\n\r\n DOMs.forEach((DOM) => {\r\n if (\r\n DOM &&\r\n DOM.dataset.word &&\r\n !DOM.hasAttribute('data-v-app')\r\n ) {\r\n const wordObject = JSON.parse(DOM.dataset.word)\r\n const component = createApp(DictionaryWord, {\r\n domId: `#${DOM.id}`,\r\n wordObject\r\n }).use(Store)\r\n component.mount(`#${DOM.id}`)\r\n }\r\n })\r\n })\r\n }\r\n}\r\n","\r\n\r\n\r\n","import { render } from \"./Dictionary.vue?vue&type=template&id=5825812a\"\nimport script from \"./Dictionary.vue?vue&type=script&lang=js\"\nexport * from \"./Dictionary.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"D:\\\\a\\\\1\\\\s\\\\frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { createApp } from 'vue'\r\nimport Dictionary from './Dictionary'\r\n\r\nconst el = '.kb-component--dictionary'\r\n\r\nexport default function (Store) {\r\n const DOM = document.querySelectorAll(el)\r\n if (DOM.length) {\r\n DOM.forEach((DictionaryDOM) => {\r\n if (DictionaryDOM.getAttribute('data-v-app') !== null) return false\r\n const wordObjects = JSON.parse(DictionaryDOM.dataset.words).words\r\n\r\n const component = createApp(Dictionary, { wordObjects }).use(Store)\r\n component.mount(DictionaryDOM)\r\n })\r\n }\r\n}\r\n","\r\n\r\n\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n\r\n","import { computed, onMounted, ref } from 'vue'\r\nimport { useStore } from 'vuex'\r\n\r\nexport default {\r\n name: 'DictionaryList',\r\n props: {\r\n dictionary: {\r\n type: Object,\r\n required: true\r\n },\r\n showFilter: {\r\n type: String,\r\n required: false\r\n }\r\n },\r\n setup(props) {\r\n const store = useStore()\r\n const filterLetter = ref('')\r\n const dictionaryData = computed(\r\n () => store.getters['search/dictionaryData']\r\n )\r\n const displayList = computed(() =>\r\n store.getters['search/dictionaryFilterBySearch'].filter((group) =>\r\n filterLetter.value\r\n ? group.letter.toUpperCase() === filterLetter.value\r\n : true\r\n )\r\n )\r\n const startLettersComplete = [\r\n 'A',\r\n 'B',\r\n 'C',\r\n 'D',\r\n 'E',\r\n 'F',\r\n 'G',\r\n 'H',\r\n 'I',\r\n 'J',\r\n 'K',\r\n 'L',\r\n 'M',\r\n 'N',\r\n 'O',\r\n 'P',\r\n 'Q',\r\n 'R',\r\n 'S',\r\n 'T',\r\n 'U',\r\n 'V',\r\n 'W',\r\n 'X',\r\n 'Y',\r\n 'Z',\r\n 'Æ',\r\n 'Ø',\r\n 'Å'\r\n ]\r\n const startLettersDisplay = computed(() => {\r\n return startLettersComplete.map((letter) => {\r\n return {\r\n letter: letter,\r\n disabled: !dictionaryData.value.find(\r\n (group) => group.letter === letter.toUpperCase()\r\n )?.words.length,\r\n selected:\r\n filterLetter.value === letter.toUpperCase()\r\n ? 'kb-dictionary-list--selected'\r\n : ''\r\n }\r\n })\r\n })\r\n\r\n const getLabel = (labelKey) =>\r\n store.getters['labels/getLabel']({\r\n labelCollection: 'dictionaryList',\r\n labelKey: labelKey\r\n })\r\n\r\n const filterOnLetter = function (letter) {\r\n filterLetter.value = filterLetter.value === letter ? '' : letter\r\n }\r\n\r\n const showFilter = computed(() => props.showFilter)\r\n\r\n onMounted(() => {\r\n store.commit('search/set_dictionary_data', props.dictionary)\r\n })\r\n\r\n return {\r\n displayList,\r\n filterOnLetter,\r\n filterLetter,\r\n startLettersDisplay,\r\n showFilter,\r\n getLabel\r\n }\r\n }\r\n}\r\n","import { render } from \"./DictionaryList.vue?vue&type=template&id=d7b8290e\"\nimport script from \"./DictionaryList.vue?vue&type=script&lang=js\"\nexport * from \"./DictionaryList.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"D:\\\\a\\\\1\\\\s\\\\frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\r\n\r\n\r\n\r\n \r\n\r\n","import { useStore } from \"vuex\";\r\nimport { computed, onMounted, ref, watch } from 'vue'\r\n\r\nexport default {\r\n name: \"DirectMessageNavigation\",\r\n props: {\r\n guid: {\r\n type: String,\r\n required: true\r\n },\r\n userData: {\r\n type: Object,\r\n required: true\r\n },\r\n chatId: {\r\n type: String,\r\n required: false\r\n }\r\n },\r\n setup(props){\r\n const store = useStore()\r\n const inputText = ref('')\r\n const results = ref([])\r\n const showSpinner = computed(() => store.state.forum.is_submitting)\r\n const allResults = computed(() => store.state.forum.direct_message_threads)\r\n\r\n onMounted(() => { \r\n const profileId = new URLSearchParams(document.location.search).get('profile')\r\n store.dispatch('forum/getDirectMessageThreads', { userId: props.userData.userId, chatId: props.chatId, toProfileId: profileId })\r\n\r\n store.dispatch('search/initSearchScope', {\r\n guid: props.guid,\r\n firstPageSize: 1000,\r\n showMorePageSize: 1000,\r\n url: process.env.SEARCH_DIRECT_MESSAGE_THREADS\r\n })\r\n })\r\n\r\n watch(() => allResults.value, (newValue) => {\r\n results.value = newValue\r\n })\r\n\r\n const scrollTreadInToView = function () {\r\n const thread = document.querySelector('.kb-direct-messages-content__right-wrapper')\r\n if (thread) {\r\n thread.scrollIntoView({ behavior: 'smooth' })\r\n }\r\n }\r\n\r\n const handleInputText = function (e) {\r\n inputText.value = e.target.value\r\n }\r\n\r\n const searchMessages = function () {\r\n if (inputText.value === '') {\r\n results.value = allResults.value\r\n return\r\n } \r\n\r\n const searchResults = []\r\n allResults.value.map((result) => {\r\n if (result.chatName.toLowerCase().includes(inputText.value.toLowerCase())) {\r\n searchResults.push(result)\r\n }\r\n })\r\n\r\n results.value = searchResults\r\n }\r\n\r\n const startNewMessage = function () {\r\n store.dispatch('forum/clearDirectMessageThread')\r\n scrollTreadInToView()\r\n }\r\n\r\n const changeChat = function (chatId) {\r\n store.dispatch('forum/clearDirectMessageThread')\r\n\r\n store.dispatch('forum/getDirectMessageThreadData', { \r\n chatId,\r\n userId: props.userData.userId\r\n })\r\n scrollTreadInToView()\r\n }\r\n\r\n return {\r\n showSpinner,\r\n inputText,\r\n results,\r\n allResults,\r\n handleInputText,\r\n searchMessages,\r\n startNewMessage,\r\n changeChat,\r\n getLabel: (labelKey) =>\r\n store.getters[\"labels/getLabel\"]({\r\n labelCollection: \"DirectMessageNavigation\",\r\n labelKey,\r\n }),\r\n }\r\n }\r\n}","import { render } from \"./DirectMessageNavigation.vue?vue&type=template&id=bb53dc08\"\nimport script from \"./DirectMessageNavigation.vue?vue&type=script&lang=js\"\nexport * from \"./DirectMessageNavigation.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"D:\\\\a\\\\1\\\\s\\\\frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\r\n\r\n\r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n
\r\n\r\n \r\n\r\n","\r\n\r\n\r\n \r\n \r\n\r\n \r\n\r\n \r\n
\r\n
\r\n
\r\n
{{ getLabel('newCommentErrorLabel') }}
\r\n
\r\n\r\n
filesToAdd = $event\"\r\n ref=\"attachmentsComponent\"\r\n />\r\n\r\n \r\n\r\n \r\n
\r\n\r\n \r\n\r\n","\r\n// TinyMCE imports\r\nimport \"tinymce/tinymce\"\r\nimport \"tinymce/themes/silver\";\r\nimport \"tinymce/icons/default\";\r\nimport 'tinymce/models/dom/model'\r\nimport 'tinymce/skins/ui/oxide/skin.css';\r\n// TinyMCE plugin imports\r\nimport 'tinymce/plugins/emoticons';\r\nimport 'tinymce/plugins/emoticons/js/emojis';\r\nimport 'tinymce/plugins/autoresize';\r\nimport 'tinymce/plugins/lists';\r\nimport 'tinymce/plugins/autolink';\r\n\r\nimport Editor from '@tinymce/tinymce-vue'\r\nimport FormInputTextField from '../FormInputTextField/FormInputTextField.vue'\r\nimport AttachmentsEditor from \"../AttachmentsEditor/AttachmentsEditor.vue\";\r\nimport AttachmentsViewer from \"../AttachmentsViewer/AttachmentsViewer.vue\";\r\nimport { computed, ref, watch } from 'vue'\r\nimport { useStore } from 'vuex'\r\nimport debounce from 'foundation/js/debounce'\r\n\r\nexport default {\r\n name: \"DirectMessageThread\",\r\n components: {\r\n AttachmentsEditor,\r\n AttachmentsViewer,\r\n Editor,\r\n FormInputTextField\r\n },\r\n props: {\r\n chatId: {\r\n type: String,\r\n required: true\r\n },\r\n userData: {\r\n type: Object,\r\n required: true\r\n },\r\n userSearchTake: {\r\n type: Number,\r\n required: false,\r\n default: 15\r\n }\r\n },\r\n setup(props) {\r\n const store = useStore()\r\n const newCommentModel = ref('')\r\n const editCommentModel = ref('')\r\n const userSearchModel = ref('')\r\n const userSearchRef = ref(null) \r\n const editCommentId = ref('')\r\n const displayInputError = ref(false)\r\n const isSubmitting = ref(false)\r\n \r\n const newChatUsers = computed(() => store.state.forum.new_chat_users)\r\n \r\n const filesToAdd = ref([])\r\n const attachmentsComponent = ref()\r\n const chatContentComponent = ref()\r\n \r\n const chatId = computed(() => store.state.forum.direct_message_thread_id)\r\n const chats = computed(() => store.state.forum.direct_message_thread_data.chat)\r\n watch(chats, () => { \r\n setTimeout(() => { \r\n scrollToBottom() \r\n }, 100) \r\n })\r\n\r\n const chatName = computed(() => store.state.forum.direct_message_thread_data.chatName)\r\n const chatIcon = computed(() => store.state.forum.direct_message_thread_data.chatIcon)\r\n const listOfUsers = computed(() => {\r\n const users = [] \r\n store.state.forum.add_users_data?.map(user => {\r\n if (newChatUsers.value.filter(item => item.id === user.id).length === 0) {\r\n users.push(user)\r\n }\r\n })\r\n return users\r\n })\r\n const showUserSearch = computed(() => store.state.forum.show_user_search)\r\n const showSpinner = computed(() => store.state.forum.is_submitting)\r\n\r\n const comments = computed(() => [].concat(...chats.value.map(chat => chat.comments)))\r\n \r\n const editCommentObj = computed(() => comments.value.find(comment => comment.id === editCommentId.value))\r\n const editCommentFiles = computed(() => editCommentObj.value.attachments)\r\n const editCommentFilesToAdd = ref([])\r\n const editCommentFilesToRemove = ref([])\r\n\r\n const getLabel = (labelKey) => store.getters['labels/getLabel']({labelCollection: \"DirectMessageThread\", labelKey: labelKey})\r\n\r\n const showCreateNewChatUsersLabel = computed(() => listOfUsers.value.length === 0 && newChatUsers.value.length > 0)\r\n\r\n const showSearchForUser = () => {\r\n store.commit('forum/set_show_user_search', true)\r\n }\r\n\r\n const searchForUser = (e) => {\r\n if (!userSearchRef.value) {\r\n userSearchRef.value = e.target\r\n }\r\n\r\n if (userSearchModel.value.length === 0) {\r\n store.dispatch('forum/clearSearchForUser')\r\n return\r\n }\r\n\r\n debounce(function () {\r\n store.dispatch('forum/searchForUser', { \r\n query: userSearchModel.value,\r\n take: props.userSearchTake\r\n })\r\n }, 500)()\r\n }\r\n\r\n const editComment = (commentId, text) => {\r\n editCommentId.value = commentId\r\n editCommentModel.value = text\r\n }\r\n\r\n const saveEditComment = (commentId) => {\r\n\r\n const formData = new FormData()\r\n\r\n if (editCommentModel.value) {\r\n formData.append('text', editCommentModel.value)\r\n }\r\n\r\n editCommentFilesToAdd.value.forEach(file => {\r\n formData.append('filesToAdd', file)\r\n })\r\n \r\n editCommentFilesToRemove.value.forEach(fileId => {\r\n formData.append('filesToRemove', fileId)\r\n })\r\n\r\n store.dispatch('forum/editDirectMessageThreadComment', { \r\n body: formData, \r\n commentId, \r\n chatId: chatId.value,\r\n userId: props.userData.userId\r\n })\r\n \r\n setTimeout(() => { \r\n editCommentId.value = ''\r\n }, 50)\r\n }\r\n\r\n const cancelEditComment = () => {\r\n editCommentId.value = ''\r\n }\r\n\r\n const deleteComment = (e, commentId) => {\r\n store.dispatch('main/openPageOverlay',{\r\n overlayContent: 'DeleteCommentOverlay',\r\n page_overlay_content_data: { commentId: commentId },\r\n returnTarget: e.currentTarget\r\n })\r\n store.commit('main/set_page_overlay_content_data', {\r\n callback: async () => {\r\n if(isSubmitting.value){ \r\n return;\r\n } \r\n isSubmitting.value = true\r\n await store.dispatch('forum/deleteDirectMessageThreadComment', {\r\n commentId: commentId,\r\n chatId: chatId.value,\r\n userId: props.userData.userId\r\n })\r\n isSubmitting.value = false \r\n setTimeout(() => {\r\n store.dispatch('main/closePageOverlay')\r\n }, 50)\r\n }\r\n })\r\n }\r\n\r\n const deleteThread = function(e) { \r\n store.dispatch('main/openPageOverlay',{\r\n overlayContent: 'DeletePostOverlay',\r\n returnTarget: e.currentTarget\r\n })\r\n\r\n store.commit('main/set_page_overlay_content_data', {\r\n callback: async () => {\r\n if(isSubmitting.value){ \r\n return;\r\n } \r\n isSubmitting.value = true\r\n var success = await store.dispatch('forum/deleteDirectMessageThread', {\r\n chatId: chatId.value\r\n })\r\n if (success) {\r\n location.reload()\r\n } else {\r\n isSubmitting.value = false \r\n }\r\n }\r\n })\r\n }\r\n \r\n const addUserToThread = (user) => {\r\n const existing = newChatUsers.value.filter(item => item.id !== user.id)\r\n store.commit('forum/set_new_chat_users', [...existing, user])\r\n store.dispatch('forum/clearSearchForUser')\r\n userSearchModel.value = '' \r\n userSearchRef.value?.focus()\r\n }\r\n\r\n const handleCreateNewChat = async () => {\r\n if (newChatUsers.value.length > 0) {\r\n await store.dispatch('forum/createNewDirectMessageThread', { \r\n userIds: newChatUsers.value.map(user => user.id),\r\n message: newCommentModel.value,\r\n userId: props.userData.userId,\r\n files: filesToAdd.value\r\n })\r\n }\r\n }\r\n\r\n const scrollToBottom = () => {\r\n if (chatContentComponent.value) {\r\n chatContentComponent.value.scrollTop = chatContentComponent.value.scrollHeight\r\n }\r\n }\r\n\r\n const submitNewComment = async () => {\r\n if (!newCommentModel.value) {\r\n displayInputError.value = true\r\n return\r\n }\r\n\r\n displayInputError.value = false\r\n\r\n if (!chatId.value) {\r\n handleCreateNewChat()\r\n } else {\r\n await store.dispatch('forum/submitDirectMessageThreadComment', { \r\n text: newCommentModel.value,\r\n chatId: chatId.value,\r\n userId: props.userData.userId,\r\n files: filesToAdd.value\r\n })\r\n }\r\n\r\n newCommentModel.value = ''\r\n\r\n attachmentsComponent.value.clear()\r\n\r\n scrollToBottom()\r\n }\r\n\r\n const getClassModifier = (comment) => {\r\n let result = ''\r\n if (comment.userId === props.userData.userId) {\r\n result += 'kb-direct-message-thread__content-comment--left'\r\n }\r\n if (comment.id === editCommentId.value) {\r\n result += ' kb-direct-message-thread__content-comment--edit'\r\n }\r\n return result\r\n }\r\n \r\n return {\r\n showSpinner,\r\n showCreateNewChatUsersLabel,\r\n newChatUsers,\r\n chats,\r\n chatName,\r\n chatIcon,\r\n newCommentModel,\r\n editCommentModel,\r\n userSearchModel,\r\n editCommentId,\r\n displayInputError,\r\n showUserSearch,\r\n listOfUsers,\r\n addUserToThread,\r\n getClassModifier,\r\n editComment,\r\n deleteComment,\r\n deleteThread,\r\n submitNewComment,\r\n showSearchForUser,\r\n searchForUser,\r\n saveEditComment,\r\n cancelEditComment,\r\n getLabel,\r\n filesToAdd,\r\n attachmentsComponent,\r\n chatContentComponent,\r\n editCommentFiles,\r\n editCommentFilesToAdd,\r\n editCommentFilesToRemove\r\n }\r\n }\r\n}","import { render } from \"./DirectMessageThread.vue?vue&type=template&id=7e95e60a\"\nimport script from \"./DirectMessageThread.vue?vue&type=script&lang=js\"\nexport * from \"./DirectMessageThread.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"D:\\\\a\\\\1\\\\s\\\\frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import DirectMessageNavigation from 'components/DirectMessageNavigation/DirectMessageNavigation.vue'\r\nimport DirectMessageThread from 'components/DirectMessageThread/DirectMessageThread.vue'\r\n\r\nexport default {\r\n name: \"DirectMessagesContent\",\r\n components: {\r\n DirectMessageNavigation,\r\n DirectMessageThread\r\n },\r\n props: {\r\n chatId: {\r\n type: String,\r\n required: true\r\n },\r\n userData: {\r\n type: Object,\r\n required: true\r\n },\r\n guid: {\r\n type: String,\r\n required: true\r\n }\r\n },\r\n setup(){\r\n }\r\n}","import { render } from \"./DirectMessagesContent.vue?vue&type=template&id=35563409\"\nimport script from \"./DirectMessagesContent.vue?vue&type=script&lang=js\"\nexport * from \"./DirectMessagesContent.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"D:\\\\a\\\\1\\\\s\\\\frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\r\n\r\n\r\n \r\n \r\n \r\n
\r\n \r\n
\r\n {{ mappeName }}\r\n
\r\n
\r\n\r\n \r\n\r\n \r\n - \r\n \r\n
\r\n \r\n\r\n
\r\n\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n\r\n \r\n\r\n\r\n","\r\n\r\n\r\n \r\n\r\n \r\n \r\n
\r\n \r\n \r\n
\r\n
{{ getLabelOrEmpty('updateDate') }}{{ cardData.updateDate }}
\r\n
{{ getLabelOrEmpty('updateDate') }}{{ cardData.createdDate }}
\r\n
{{cardData.name}}
\r\n
\r\n
\r\n \r\n
\r\n
{{ getLabel('createdTitle') }}
\r\n
\r\n {{cardData.createdBy}}\r\n
\r\n
\r\n
\r\n {{ getLabel('helpTextMainLink') }}\r\n \r\n\r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n {{ getLabel('downloadButtonText') }}\r\n {{ getLabel('helpTextOverlayButtonsAndDownloadLink') }}
\r\n \r\n \r\n\r\n
\r\n \r\n\r\n","import { computed } from 'vue'\r\nimport {useStore} from 'vuex'\r\nimport GetLabel from \"foundation/js/getLabel\"\r\n\r\nexport default {\r\n name: \"FileListCard\",\r\n props: {\r\n cardData: {\r\n type: Object,\r\n required: true\r\n },\r\n cardButtonIcons: {\r\n type: Object,\r\n required: true,\r\n default: false\r\n }\r\n },\r\n setup(props){\r\n const store = useStore()\r\n\r\n const exitOnEscape = function (e) {\r\n const currentCardElement = e.target.parentNode.parentNode\r\n const currentCardFileLink = currentCardElement.querySelector('.kb-js--file-link')\r\n const currentCardFunctions = currentCardElement.querySelectorAll('.kb-js--file-function')\r\n \r\n currentCardFileLink.focus()\r\n\r\n currentCardFunctions.forEach((functionButton)=> {\r\n functionButton.setAttribute('tabindex', -1)\r\n })\r\n }\r\n\r\n const enterFunctions = function (e){\r\n const currentCardElement = e.target.parentNode\r\n \r\n const currentCardFunctions = currentCardElement.querySelectorAll('.kb-js--file-function')\r\n\r\n if(!currentCardFunctions.length) {\r\n return false\r\n }\r\n\r\n currentCardFunctions[0].focus()\r\n\r\n currentCardFunctions.forEach((functionButton, index)=> {\r\n functionButton.setAttribute('tabindex', 0)\r\n\r\n if(currentCardFunctions.length -1 === index) {\r\n functionButton.addEventListener('keydown', (e)=> {\r\n\r\n if(e.code === 'Tab' && e.shiftKey === false) {\r\n currentCardFunctions.forEach((functionButton)=> {\r\n functionButton.setAttribute('tabindex', -1)\r\n })\r\n }\r\n\r\n })\r\n }\r\n\r\n if(index === 0) {\r\n functionButton.addEventListener('keydown', (e)=> {\r\n if(e.code === 'Tab' && e.shiftKey === true) {\r\n currentCardFunctions.forEach((functionButton)=> {\r\n functionButton.setAttribute('tabindex', -1)\r\n })\r\n }\r\n\r\n })\r\n }\r\n })\r\n \r\n \r\n }\r\n\r\n const getLabel = (labelKey, params) => GetLabel({ labelKey, labelCollection: 'FileListCard', params })\r\n const getLabelOrEmpty = (labelKey, params) => GetLabel({ labelKey, labelCollection: 'FileListCard', params, allowEmpty: true })\r\n\r\n const activeActionTarget = computed(() => props.cardData.type == 'Dokument' ? \"_blank\" : null);\r\n\r\n const determineStartOverlayFunction = function (e, currentOverlay, cardData) {\r\n // the active overlay mode should be set when overlay activated\r\n // when overlay closed, mode needs to be cleared\r\n store.dispatch('frivillige/setActiveOverlayMode', { mode: cardData.type }) \r\n store.dispatch('frivillige/setActiveItemName', { name: cardData.name }) \r\n store.dispatch('frivillige/setEditModeActive', { mode: true }) \r\n store.commit('frivillige/set_active_item_id', cardData.id) \r\n\r\n // for prefilled in edit mode - creating updated active_name\r\n store.dispatch('frivillige/getActiveItemName')\r\n\r\n if(currentOverlay === \"ConfirmDeleteOverlay\") {\r\n \r\n store.commit('frivillige/set_delete_item_type', cardData.type ) \r\n store.commit('frivillige/set_delete_item_id', cardData.id ) \r\n store.commit('frivillige/set_delete_item_name', cardData.name) \r\n }\r\n \r\n store.dispatch('main/openPageOverlay',{\r\n overlayContent: currentOverlay,\r\n returnTarget: e.currentTarget\r\n })\r\n \r\n }\r\n\r\n return {\r\n activeActionTarget,\r\n enterFunctions,\r\n determineStartOverlayFunction,\r\n exitOnEscape,\r\n getLabel,\r\n getLabelOrEmpty\r\n }\r\n \r\n }\r\n}","import { render } from \"./FileListCard.vue?vue&type=template&id=49157036\"\nimport script from \"./FileListCard.vue?vue&type=script&lang=js\"\nexport * from \"./FileListCard.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"D:\\\\a\\\\1\\\\s\\\\frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { onMounted, computed, ref } from 'vue'\r\nimport { useStore } from 'vuex'\r\nimport FileListCard from 'components/FileListCard/FileListCard.vue'\r\n\r\nexport default {\r\n name: \"DocumentAndFolderList\", \r\n components: { \r\n FileListCard \r\n },\r\n props: {\r\n guid: {\r\n type: String,\r\n required: true\r\n },\r\n cardButtonIcons: {\r\n type: Object,\r\n required: true,\r\n default: false\r\n },\r\n gruppeKode: {\r\n type: String,\r\n required: true\r\n },\r\n fileTypeDropdownOptions : {\r\n type: Object,\r\n required: true\r\n }\r\n },\r\n setup(props) {\r\n const store = useStore()\r\n\r\n const isSearching = computed(()=> store.state.search.is_searching)\r\n\r\n const mappeName = ref(null)\r\n const parentMappeName = ref(null)\r\n const parentMappeUrl = ref(null)\r\n\r\n const hasParentMappe = computed(() => !!parentMappeName.value)\r\n\r\n const getLabel = (labelKey) => store.getters['labels/getLabel']({ labelCollection: \"DocumentAndFolderList\", labelKey: labelKey })\r\n\r\n const startOverlayFunction = function (e, overlay) {\r\n if(overlay === 'CreateFolderOverlay') {\r\n // the active overlay mode should be set when overlay activated\r\n // when overlay closed, mode is cleared inside pageOverlay.options\r\n store.dispatch('frivillige/setActiveOverlayMode', { mode: \"Mappe\" }) \r\n //editModeActive should also be updated\r\n store.dispatch('frivillige/setEditModeActive', { mode: false }) \r\n \r\n store.dispatch('main/openPageOverlay',{\r\n overlayContent: overlay,\r\n returnTarget: e.currentTarget\r\n })\r\n } else {\r\n store.dispatch('frivillige/setActiveOverlayMode', { mode: \"Dokument\" }) \r\n \r\n store.dispatch('main/openPageOverlay',{\r\n overlayContent: overlay,\r\n returnTarget: e.currentTarget\r\n })\r\n } \r\n\r\n }\r\n\r\n const files = computed(() => store.state.search.results[props.guid] )\r\n\r\n onMounted(() => {\r\n initFetchPosts()\r\n store.commit('frivillige/set_file_type_dropdown_options', props.fileTypeDropdownOptions)\r\n })\r\n\r\n const initFetchPosts = function() {\r\n\r\n store.commit('search/set_replaceQueryInUrl', false)\r\n \r\n store.dispatch('search/initSearchScope', {\r\n guid: props.guid,\r\n firstPageSize: props.take,\r\n showMorePageSize: props.take,\r\n url: process.env.GET_FILES_LIST.replace('[gruppeKode]', props.gruppeKode)\r\n })\r\n \r\n store.dispatch(\"frivillige/setGlobalGruppeKode\", {\r\n gruppeKode: props.gruppeKode\r\n });\r\n \r\n store.dispatch('search/performSearch', {\r\n guid: props.guid,\r\n query: ''\r\n })\r\n .then((json) =>{\r\n mappeName.value = json.mappeName\r\n parentMappeName.value = json.parentMappeName\r\n parentMappeUrl.value = json.parentMappeUrl\r\n })\r\n\r\n }\r\n\r\n return {\r\n mappeName,\r\n parentMappeName,\r\n parentMappeUrl,\r\n hasParentMappe,\r\n getLabel,\r\n startOverlayFunction,\r\n files,\r\n isSearching \r\n }\r\n }\r\n}","import { render } from \"./DocumentAndFolderList.vue?vue&type=template&id=d6a6a300\"\nimport script from \"./DocumentAndFolderList.vue?vue&type=script&lang=js\"\nexport * from \"./DocumentAndFolderList.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"D:\\\\a\\\\1\\\\s\\\\frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { ref, computed, onMounted } from 'vue'\r\nexport default {\r\n name: 'DonationAmount',\r\n props: {\r\n showCustomDonation: {\r\n type: Boolean,\r\n required: true\r\n }\r\n },\r\n setup(props) {\r\n const otherAmount = ref('')\r\n\r\n const updateOtherAmount = () => { \r\n otherAmount.value = otherAmount.value.replace(/[^0-9.]/g, '')\r\n }\r\n\r\n return {\r\n updateOtherAmount,\r\n otherAmount,\r\n showCustomDonation: props.showCustomDonation\r\n }\r\n }\r\n}\r\n","\r\n\r\n\r\n \r\n \r\n {{ result.amount }} kr
\r\n \r\n {{ result.note }}
\r\n \r\n \r\n \r\n {{ result.name }}
\r\n {{ result.quote }}
\r\n \r\n \r\n\r\n","export default {\r\n name: 'DonationCard',\r\n props: {\r\n result: {\r\n type: Object,\r\n required: true\r\n },\r\n modifierClass:{\r\n type: String,\r\n required: false\r\n }\r\n },\r\n setup() {}\r\n}\r\n","import { render } from \"./DonationCard.vue?vue&type=template&id=7da7b83c\"\nimport script from \"./DonationCard.vue?vue&type=script&lang=js\"\nexport * from \"./DonationCard.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"D:\\\\a\\\\1\\\\s\\\\frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\r\n\r\n\r\n \r\n \r\n \r\n
\r\n
\r\n {{\r\n getLabel('title')\r\n }}\r\n
\r\n
\r\n \r\n \r\n {{\r\n getLabel('text')\r\n }}\r\n
\r\n \r\n \r\n\r\n \r\n \r\n\r\n","import { onMounted, watch, computed } from \"vue\"\r\nimport { useStore } from \"vuex\"\r\nimport onTransitionendCallback from 'components/PageOverlay/methods/onTransitionendCallback'\r\n\r\nexport default {\r\n name: \"DonationReceiptOverlay\",\r\n props: {\r\n readMoreUrl: {\r\n type: String,\r\n required: true\r\n }\r\n },\r\n setup(props){\r\n const store = useStore()\r\n const readMoreUrl = computed(() => props.readMoreUrl ?? store.state.main.page_overlay_content_data.readMoreUrl)\r\n\r\n let first,\r\n last,\r\n close\r\n\r\n const tabTrap = function (e) {\r\n if (e.shiftKey && e.target.dataset.order === 'first') {\r\n e.preventDefault()\r\n close.focus()\r\n }\r\n\r\n if (!e.shiftKey && e.target.dataset.order === 'last') {\r\n e.preventDefault()\r\n close.focus()\r\n }\r\n\r\n if (!e.shiftKey && !e.target.dataset.order) {\r\n e.preventDefault()\r\n first.focus()\r\n }\r\n }\r\n\r\n const cancelAction = function(){\r\n store.dispatch('main/closePageOverlay')\r\n }\r\n\r\n onMounted(() => {\r\n \r\n first = document.querySelector(\r\n '.kb-button[data-order=\"first\"]'\r\n )\r\n last = document.querySelector(\r\n '.kb-button[data-order=\"last\"]'\r\n )\r\n close = document.querySelector('.kb-page-overlay__close')\r\n onTransitionendCallback(\r\n {\r\n opening() {\r\n first.focus()\r\n }\r\n },\r\n { persistent: true }\r\n )\r\n\r\n const orderId = new URLSearchParams(document.location.search).get(\r\n 'orderId'\r\n )\r\n if (orderId)\r\n store.dispatch('main/trackPurchaseData', { orderId })\r\n })\r\n\r\n return {\r\n readMoreUrl,\r\n cancelAction,\r\n tabTrap,\r\n getLabel: (labelKey) =>\r\n store.getters['labels/getLabel']({\r\n labelCollection: 'DonationReceiptOverlay',\r\n labelKey\r\n })\r\n }\r\n }\r\n}","import { render } from \"./DonationReceiptOverlay.vue?vue&type=template&id=e2498320\"\nimport script from \"./DonationReceiptOverlay.vue?vue&type=script&lang=js\"\nexport * from \"./DonationReceiptOverlay.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"D:\\\\a\\\\1\\\\s\\\\frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\r\n\r\n\r\n \r\n \r\n\r\n (handleSubjectsOptions(e))\r\n \" />\r\n\r\n
\r\n\r\n 0\" class=\"kb-dropdown-with-tags__tags-wrapper\">\r\n \r\n
\r\n {{ tagsTitle }}\r\n
\r\n
\r\n\r\n
\r\n\r\n \r\n\r\n","import { useStore } from 'vuex'\r\nimport { onMounted, ref } from 'vue'\r\n\r\nimport nonEmptyStringValidator from \"foundation/js/inputValidators/nonEmptyStringValidator\";\r\nimport FormInputDropdown from 'components/FormInputDropdown/FormInputDropdown.vue'\r\n\r\nexport default {\r\n name: \"DropdownWithTags\",\r\n components: {\r\n FormInputDropdown\r\n },\r\n props: {\r\n initTags: {\r\n type: Array,\r\n required: false,\r\n default: null\r\n },\r\n tagsTitle: {\r\n type: String,\r\n required: true,\r\n },\r\n onChangeCallback: {\r\n type: Function,\r\n required: true,\r\n default: () => {}\r\n },\r\n fieldName: {\r\n type: String,\r\n required: true\r\n },\r\n legend: {\r\n type: String,\r\n required: false\r\n },\r\n isRequired: {\r\n type: Boolean,\r\n required: false\r\n },\r\n label: {\r\n type: String,\r\n required: true\r\n },\r\n placeholder: {\r\n type: String,\r\n required: false\r\n },\r\n isValidationError: {\r\n // this props works in 2 ways\r\n // 1 - checkout page on webshop handles all field validation and will output result here\r\n // 2 - other forms like SFL forms will use this field to notify the field to show its possible errors\r\n type: Boolean,\r\n required: false,\r\n default: null\r\n },\r\n errorMessageLabel: {\r\n type: String,\r\n required: false\r\n },\r\n selectOptions: {\r\n type: Object,\r\n required: false\r\n },\r\n },\r\n setup(props){\r\n const subjectOptions = ref(props.selectOptions.options)\r\n const tagsDropdown = ref()\r\n const tags = ref([])\r\n const returnTags = ref([])\r\n\r\n onMounted(() => {\r\n if (props.initTags && props.initTags.length > 0) {\r\n tags.value = props.initTags \r\n returnTags.value = tags.value.map(tag => props.selectOptions.options.find(option => option.name === tag).value)\r\n props.onChangeCallback(returnTags.value)\r\n }\r\n })\r\n\r\n const handleSubjectsOptions = function (e) {\r\n \r\n const tagId = e.target.value\r\n const name = getTagName(tagId)\r\n \r\n const alreadyExisting = tags.value.find(tag => tag === name)\r\n\r\n if(!alreadyExisting) {\r\n tags.value.push(name)\r\n returnTags.value.push(tagId)\r\n props.onChangeCallback(returnTags.value)\r\n } \r\n }\r\n\r\n const getTagName = function(newTag) {\r\n let result = newTag\r\n props.selectOptions.options.map((item) => {\r\n if(item.value === newTag) {\r\n newTag = item.name\r\n }\r\n })\r\n return newTag\r\n }\r\n\r\n const handleDeleteTag = function (clickedTagName) { \r\n tags.value = tags.value.filter(tag => tag !== clickedTagName)\r\n returnTags.value = tags.value.map(tag => props.selectOptions.options.find(option => option.name === tag).value)\r\n props.onChangeCallback(returnTags.value)\r\n const dropDownWrapper = document.querySelector('.kb-js--dropdown-with-tags-wrapper')\r\n const dropDown = dropDownWrapper.querySelector('#dropdown')\r\n dropDown.focus()\r\n }\r\n\r\n return {\r\n subjectOptions,\r\n tags,\r\n tagsDropdown,\r\n nonEmptyStringValidator,\r\n handleSubjectsOptions,\r\n handleDeleteTag\r\n }\r\n }\r\n}","import { render } from \"./DropdownWithTags.vue?vue&type=template&id=6d91ee0d\"\nimport script from \"./DropdownWithTags.vue?vue&type=script&lang=js\"\nexport * from \"./DropdownWithTags.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"D:\\\\a\\\\1\\\\s\\\\frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\r\n\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n","\r\n\r\n\r\n \r\n\r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n \r\n\r\n
\r\n\r\n
\r\n {{ getLabel('title') }}\r\n
\r\n
\r\n {{ getLabel('description') }}\r\n
\r\n\r\n
\r\n\r\n
\r\n\r\n \r\n
\r\n\r\n \r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n
{{ profilePicture.name }}
\r\n
{{ getLabel('fileSizeLabel') }}: {{ (profilePicture.size / 1024 / 1000).toFixed(3) }} MB
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n \r\n\r\n \r\n
\r\n
{{ getLabel('profilePictureErrorMessage') }}
\r\n
\r\n \r\n \r\n \r\n \r\n\r\n
\r\n\r\n \r\n\r\n","import { useStore } from 'vuex'\r\nimport { ref, computed } from 'vue'\r\n\r\nexport default {\r\n name: \"ProfilePicture\",\r\n props: {\r\n userId: {\r\n type: String,\r\n required: true\r\n },\r\n content: {\r\n type: Object,\r\n required: false,\r\n default: null\r\n },\r\n type: {\r\n type: String,\r\n required: true\r\n },\r\n hasProfileImage: {\r\n type: Boolean,\r\n required: false\r\n }\r\n },\r\n setup(props){\r\n const store = useStore()\r\n\r\n const showInputErrors = ref(false)\r\n const isSubmissionError = ref(false)\r\n const profilePicture = ref(props.content)\r\n const hasProfileImage = ref(props.hasProfileImage)\r\n\r\n const getLabel = (labelKey, replacements) => {\r\n let label = store.getters['labels/getLabel']({ labelCollection: 'profilePicture', labelKey: labelKey })\r\n if (replacements) {\r\n replacements.forEach((replacement, index) => {\r\n label = label.replace(`{${index}}`, replacement)\r\n })\r\n }\r\n return label\r\n } \r\n\r\n const onPictureChange = async (e) => {\r\n try {\r\n const picture = e.target.files\r\n Array.from(picture).forEach(file => {\r\n profilePicture.value = file\r\n profilePicture.value.url = URL.createObjectURL(file)\r\n })\r\n\r\n setTimeout( ()=> {\r\n const deleteButton = document.querySelector('.kb-js--delete-uploaded-file-card')\r\n deleteButton.focus()\r\n } , 100)\r\n\r\n await submitProfilePicture()\r\n\r\n hasProfileImage.value = true\r\n }\r\n catch {\r\n isSubmissionError.value = true\r\n }\r\n }\r\n\r\n const removeFile = async () => {\r\n profilePicture.value = {\r\n url: props?.content.url\r\n }\r\n showInputErrors.value = false\r\n isSubmissionError.value = false\r\n\r\n setTimeout( ()=> {\r\n const pictureUploadLabel = document.querySelector('.kb-js--uploaded-file-label')\r\n pictureUploadLabel.focus()\r\n } , 100)\r\n\r\n if (props.type == \"frivillig\") {\r\n await store.dispatch('frivilligprofil/removeFrivilligProfilePicture')\r\n }\r\n else {\r\n await store.dispatch('forum/removeForumProfilePicture', { id: props.userId })\r\n }\r\n\r\n const profilePicturePath = profilePicture.value.url ?? props?.content?.url\r\n const url = new URL(`${window.location.origin}${profilePicturePath}`)\r\n url.searchParams.append(\"hasProfileImage\", false)\r\n profilePicture.value = {\r\n url: url.toString(),\r\n size: \"\",\r\n name: \"\",\r\n } \r\n \r\n hasProfileImage.value = false\r\n store.dispatch('main/setUserProfileImage', profilePicture.value.url)\r\n }\r\n\r\n const submitProfilePicture = async function () {\r\n showInputErrors.value = true\r\n\r\n if (profilePicture.value !== \"\") {\r\n let formData = new FormData()\r\n formData.append('file', profilePicture.value)\r\n\r\n if (props.type == \"cancerforum\") {\r\n store.dispatch('forum/submitForumProfilePicture', {\r\n formData: formData,\r\n id: props.userId\r\n })\r\n }\r\n if (props.type == \"frivillig\") {\r\n store.dispatch('frivilligprofil/submitFrivilligProfilePicture', {\r\n formData: formData,\r\n id: props.userId\r\n })\r\n }\r\n\r\n store.dispatch('main/setUserProfileImage', profilePicture.value.url ?? props?.content?.url)\r\n } \r\n }\r\n\r\n const handleTab = function (e) {\r\n const fileInput = e.target.querySelector('input')\r\n fileInput.click()\r\n\r\n }\r\n\r\n return {\r\n handleTab,\r\n getLabel,\r\n submitProfilePicture,\r\n onPictureChange,\r\n removeFile,\r\n hasProfileImage,\r\n profilePicture,\r\n showInputErrors,\r\n isSubmissionError\r\n } \r\n }\r\n}","import { render } from \"./ProfilePicture.vue?vue&type=template&id=694dad6e\"\nimport script from \"./ProfilePicture.vue?vue&type=script&lang=js\"\nexport * from \"./ProfilePicture.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"D:\\\\a\\\\1\\\\s\\\\frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import GetLabel from \"foundation/js/getLabel\"\r\nimport ProfilePicture from \"../ProfilePicture/ProfilePicture\";\r\nimport FormInputTextField from \"../FormInputTextField/FormInputTextField\";\r\nimport FormInputNameField from \"../FormInputNameField/FormInputNameField\";\r\nimport FormAddressField from \"../FormAddressField/FormAddressField\";\r\nimport FormInputEmailField from \"../FormInputEmailField/FormInputEmailField\";\r\nimport FormInputTextarea from \"../FormInputTextarea/FormInputTextarea\";\r\nimport FormCheckbox from \"../FormCheckbox/FormCheckbox\";\r\nimport FormInputDropdown from \"../FormInputDropdown/FormInputDropdown\";\r\nimport { ref, computed } from \"vue\";\r\nimport { useStore } from \"vuex\";\r\n\r\nexport default {\r\n name: \"EditFrivilligProfile\",\r\n components: {\r\n ProfilePicture,\r\n FormInputTextField,\r\n FormInputNameField,\r\n FormAddressField,\r\n FormInputEmailField,\r\n FormInputTextarea,\r\n FormInputDropdown,\r\n FormCheckbox\r\n },\r\n props: {\r\n interests: {\r\n type: Array,\r\n required: true,\r\n },\r\n userData: {\r\n type: Object,\r\n required: true,\r\n },\r\n notificationWhenCommentOnSavedPosts: {\r\n type: Boolean,\r\n required: false,\r\n default: false\r\n },\r\n notificationWhenDirectMessage: {\r\n type: Boolean,\r\n required: false,\r\n default: false\r\n },\r\n notificationWhenNewDocument: {\r\n type: Boolean,\r\n required: false,\r\n default: false\r\n },\r\n notificationWhenPostsOnGroups: {\r\n type: Boolean,\r\n required: false,\r\n default: false\r\n },\r\n addressVisible: {\r\n type: Boolean,\r\n required: false,\r\n default: false\r\n },\r\n phonenumberVisible: {\r\n type: Boolean,\r\n required: false,\r\n default: false\r\n },\r\n emailVisible: {\r\n type: Boolean,\r\n required: false,\r\n default: false\r\n },\r\n hasNewsletterSubscription: {\r\n type: Boolean,\r\n required: false,\r\n default: false\r\n },\r\n deleteProfileRedirectUrl: {\r\n type: String,\r\n required: false\r\n },\r\n hasProfileImage : {\r\n type: Boolean,\r\n required: false\r\n }\r\n },\r\n setup(props) {\r\n const store = useStore()\r\n const displayError = ref(false)\r\n const password = ref(\"123435678\")\r\n const userData = ref(props.userData ?? {})\r\n const description = ref(props.userData.description ?? \"\")\r\n const isSubmitting = computed(()=> store.state.frivilligprofil.submitting)\r\n\r\n const notificationFrequency = ref(props.userData.notificationFrequency ?? \"\")\r\n const isSubscribedToNewsletter = ref(props.hasNewsletterSubscription ?? false)\r\n const notificationWhenCommentOnSavedPosts = ref(props.notificationWhenCommentOnSavedPosts ?? \"\")\r\n const notificationWhenPostsOnGroups = ref(props.notificationWhenPostsOnGroups ?? \"\")\r\n const notificationWhenDirectMessage = ref(props.notificationWhenDirectMessage ?? \"\")\r\n const notificationWhenNewDocument = ref(props.notificationWhenNewDocument ?? \"\")\r\n const gruppeemner = computed(() => props.interests.filter(x => x.isSelected).map(x => x.id))\r\n const addressVisible = ref(props.addressVisible)\r\n const phoneNumberVisible = ref(props.phonenumberVisible)\r\n const emailVisible = ref(props.emailVisible)\r\n\r\n const notificationfrequencyOptions = [\r\n { \"name\": \"Straks\", \"value\": \"Immediately\" },\r\n { \"name\": \"Dagligt\", \"value\": \"Daily\" },\r\n { \"name\": \"Ugentligt\", \"value\": \"Weekly\" },\r\n ]\r\n\r\n const url = `/${process.env.FRIVILLIGPROFIL_PICTURE_GET.replace(\"[id]\", userData.value.id)}`\r\n const activeProfilePicture = ref({\r\n \"name\": \"\",\r\n \"url\": url, \r\n \"size\": \"\"\r\n })\r\n\r\n const saveProfile = () => {\r\n const body = {\r\n profileImageSrc: activeProfilePicture.value.url,\r\n description: description.value,\r\n addressVisible: addressVisible.value,\r\n phonenumberVisible: phoneNumberVisible.value,\r\n emailVisible: emailVisible.value,\r\n notificationFrequency: notificationFrequency.value \r\n ? notificationFrequency.value \r\n : null,\r\n notificationWhenCommentOnSavedPosts: notificationWhenCommentOnSavedPosts.value,\r\n notificationWhenPostsOnGroups: notificationWhenPostsOnGroups.value,\r\n notificationWhenDirectMessage: notificationWhenDirectMessage.value,\r\n notificationWhenNewDocument: notificationWhenNewDocument.value,\r\n isSubscribedToNewsletter: isSubscribedToNewsletter.value,\r\n gruppeemner: gruppeemner.value\r\n }\r\n\r\n store.dispatch(\"frivilligprofil/editFrivilligprofil\", {\r\n pageId: store.state.main.page_id,\r\n body: body,\r\n })\r\n }\r\n\r\n const startUserInfoOverlay = (e) => {\r\n store.commit('main/set_page_overlay_content_data', { userId: props.userData.id, isFrivilligContext: true })\r\n\r\n store.dispatch(\"main/openPageOverlay\", {\r\n overlayContent: \"MemberOverlayProfileCard\",\r\n returnTarget: e.currentTarget,\r\n });\r\n }\r\n \r\n const startDeleteUserOverlay = function (e) {\r\n store.commit('main/set_page_overlay_content_data', { \r\n userProfileId: props.userData.userProfileId,\r\n continueUrl: props.deleteProfileRedirectUrl\r\n })\r\n\r\n store.dispatch(\"main/openPageOverlay\", {\r\n overlayContent: \"FVLConfirmDeleteProfile\",\r\n returnTarget: e.currentTarget,\r\n });\r\n };\r\n\r\n const setInterest = (name, value) => props.interests.find((interest) => interest.name === name).isSelected = value\r\n const setNotification = (name, value) => props.notificationSettings.find((setting) => setting.name === name).value = value\r\n const setNewsletterSubscription = (value) => isSubscribedToNewsletter.value = value\r\n\r\n return {\r\n displayError,\r\n description,\r\n addressVisible,\r\n phoneNumberVisible,\r\n emailVisible,\r\n activeProfilePicture,\r\n notificationFrequency,\r\n notificationWhenCommentOnSavedPosts,\r\n notificationWhenPostsOnGroups,\r\n notificationWhenDirectMessage,\r\n notificationWhenNewDocument,\r\n gruppeemner,\r\n isSubscribedToNewsletter,\r\n userData,\r\n password,\r\n notificationfrequencyOptions,\r\n isSubmitting,\r\n setInterest,\r\n setNotification,\r\n setNewsletterSubscription,\r\n saveProfile,\r\n startUserInfoOverlay,\r\n startDeleteUserOverlay,\r\n getLabel: (labelKey) => GetLabel({ labelKey, labelCollection: \"EditFrivilligProfile\" })\r\n }\r\n }\r\n}","import { render } from \"./EditFrivilligProfile.vue?vue&type=template&id=1d0e1dfc\"\nimport script from \"./EditFrivilligProfile.vue?vue&type=script&lang=js\"\nexport * from \"./EditFrivilligProfile.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"D:\\\\a\\\\1\\\\s\\\\frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\r\n\r\n\r\n \r\n\r\n","import { useStore } from 'vuex'\r\nimport ContentCarousel from '../ContentCarousel/ContentCarousel.vue'\r\n\r\nexport default {\r\n name: \"FeaturedGroups\",\r\n components: {\r\n ContentCarousel\r\n },\r\n props: {\r\n colorTheme: {\r\n type: String,\r\n required: false\r\n },\r\n groupsList: {\r\n type: Object,\r\n required: false\r\n },\r\n hasGroupsButton: {\r\n type: Object,\r\n required: true\r\n },\r\n noGroupsButton: {\r\n type: Object,\r\n required: true\r\n },\r\n sliderContentJson: {\r\n type: Object,\r\n required: true\r\n },\r\n sliderId: {\r\n type: String,\r\n required: true\r\n }\r\n\r\n },\r\n setup(){\r\n const store = useStore()\r\n\r\n const getLabel = (labelKey, replacements) => {\r\n let label = store.getters['labels/getLabel']({ labelCollection: 'FeaturedGroups', labelKey: labelKey })\r\n if (replacements) {\r\n replacements.forEach((replacement, index) => {\r\n label = label.replace(`{${index}}`, replacement)\r\n })\r\n }\r\n return label\r\n }\r\n\r\n return {\r\n getLabel\r\n }\r\n\r\n }\r\n}","import { render } from \"./FeaturedGroups.vue?vue&type=template&id=cc386678\"\nimport script from \"./FeaturedGroups.vue?vue&type=script&lang=js\"\nexport * from \"./FeaturedGroups.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"D:\\\\a\\\\1\\\\s\\\\frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\r\n\r\n\r\n\r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n
\r\n \r\n \r\n\r\n
\r\n\r\n
\r\n\r\n
\r\n
\r\n {{`${ getLabel('authorLabel') } ${ spotCardData.author }` }}\r\n
\r\n \r\n
\r\n
\r\n\r\n
{{ spotCardData.title }}
\r\n
{{ spotCardData.text }}
\r\n
\r\n
\r\n
\r\n \r\n\r\n","import GetLabel from 'foundation/js/getLabel'\r\n\r\nexport default {\r\n name: \"FeaturedPostSpotCard\",\r\n props: {\r\n spotCardData: {\r\n type: Object,\r\n required: true\r\n }\r\n },\r\n setup(){\r\n\r\n return {\r\n getLabel: (labelKey) => GetLabel({ labelKey, labelCollection: 'FeaturedPostSpotCard' })\r\n }\r\n \r\n }\r\n}","import { render } from \"./FeaturedPostSpotCard.vue?vue&type=template&id=896ad328\"\nimport script from \"./FeaturedPostSpotCard.vue?vue&type=script&lang=js\"\nexport * from \"./FeaturedPostSpotCard.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"D:\\\\a\\\\1\\\\s\\\\frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { useStore } from 'vuex'\r\n\r\nexport default {\r\n name: 'FeatureNavigationTeam',\r\n props: {\r\n teamId: {\r\n type: String,\r\n required: true\r\n }\r\n },\r\n setup(props) {\r\n const store = useStore()\r\n\r\n const componentToShow = function(type) {\r\n return {\r\n \"deltagere\": \"holdetsDeltagere\",\r\n \"runderegistreringer\": \"holdetsRoundCounterOverlay\",\r\n \"donationer\": \"holdetsDonationer\",\r\n \"lysposer\": \"holdetsLys\",\r\n }[type] ?? \"holdetsDeltagere\"\r\n }\r\n\r\n const openPageOverlay = function(type, e) {\r\n const componentName = componentToShow(type)\r\n \r\n store.commit('main/set_page_overlay_content_data', {\r\n teamId: props.teamId\r\n })\r\n \r\n store.dispatch('main/openPageOverlay', {\r\n overlayContent: componentName,\r\n returnTarget: e.currentTarget\r\n })\r\n }\r\n \r\n return {\r\n openPageOverlay\r\n }\r\n }\r\n}\r\n","\r\n\r\n\r\n \r\n \r\n \r\n {{ getLabel('header') }}\r\n
\r\n \r\n \r\n \r\n \r\n {{ getLabel('textContent') }}\r\n
\r\n \r\n \r\n \r\n
\r\n \r\n \r\n\r\n \r\n \r\n \r\n {{ getLabel('savedChangesHeader') }}\r\n
\r\n \r\n \r\n \r\n \r\n {{ getLabel('SavedChangesTextContent') }}\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n\r\n","import { ref } from 'vue'\r\nimport { useStore } from 'vuex'\r\nimport GetLabel from 'foundation/js/getLabel'\r\n\r\nexport default {\r\n name: 'FlowEditModal',\r\n setup() {\r\n const changesSaved = ref(false)\r\n const store = useStore()\r\n\r\n const saveChanges = function (e) {\r\n changesSaved.value = true\r\n }\r\n\r\n const closeModal = function (e) {\r\n store.dispatch('main/closePageOverlay')\r\n }\r\n\r\n return {\r\n getLabel: (labelKey) => GetLabel({ labelKey, labelCollection: 'personalFundraising' }),\r\n saveChanges,\r\n closeModal,\r\n changesSaved\r\n }\r\n }\r\n}\r\n","import { render } from \"./FlowEditModal.vue?vue&type=template&id=7bc5d2a8\"\nimport script from \"./FlowEditModal.vue?vue&type=script&lang=js\"\nexport * from \"./FlowEditModal.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"D:\\\\a\\\\1\\\\s\\\\frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","export default {\r\n name: \"FlowHeader\",\r\n props: {\r\n isIndependent: {\r\n type: Boolean,\r\n required: false\r\n },\r\n isStafet: {\r\n type: Boolean,\r\n required: false\r\n }\r\n },\r\n setup(props){\r\n const closeFlow = function(returnUrl, forceUseReturn) {\r\n if (forceUseReturn || history.length <= 1)\r\n {\r\n document.location = returnUrl\r\n return\r\n }\r\n\r\n history.back()\r\n }\r\n\r\n return {\r\n closeFlow,\r\n isIndependent: props.isIndependent,\r\n isStafet: props.isStafet\r\n }\r\n }\r\n}","import { dawaAutocomplete } from 'dawa-autocomplete2'\r\nimport { onMounted } from 'vue'\r\n\r\nexport default {\r\n name: 'FormAddressFieldGroup',\r\n setup() {\r\n onMounted(() => {\r\n const mainInput = document.querySelector('.dawa-adresse-vej')\r\n const zipcodeInput = document.querySelector('.dawa-adresse-postnr')\r\n const cityInput = document.querySelector('.dawa-adresse-postnrnavn')\r\n\r\n // intentionally forcing input to be made in mainInput\r\n zipcodeInput.addEventListener('focus', () => {\r\n mainInput.focus()\r\n })\r\n cityInput.addEventListener('focus', () => {\r\n mainInput.focus()\r\n })\r\n\r\n // Se: \"Google Chrome forces autofill on fields set autocomplete=\"off\"\"\"\r\n // https://github.com/alphagov/accessible-autocomplete/issues/325\r\n // Note: This is also defined in the razor cshtml file\r\n // We unfortunately need to delay setting the autocomplete attribute\r\n // since either chrome or froms tries to manipulate this after the\r\n // document is loaded.\r\n setTimeout(() => {\r\n mainInput.attributes['autocomplete'].value = 'chrome-off'\r\n }, 1)\r\n\r\n dawaAutocomplete(mainInput, {\r\n select: function (selected) {\r\n zipcodeInput.value = selected.data.postnr\r\n cityInput.value = selected.data.postnrnavn\r\n //document.querySelector('#dawa-adresse-darid').innerHTML= selected.data.id;\r\n setTimeout(\r\n () =>\r\n (mainInput.value = `${selected.data.adresseringsvejnavn} ${selected.data.husnr} ${selected.data.etage ? selected.data.etage : ''} ${selected.data.dør ? selected.data.dør : ''}`),\r\n 100\r\n )\r\n }\r\n })\r\n })\r\n }\r\n}\r\n","\r\n\r\n\r\n \r\n\r\n","/**\r\n *\r\n * @param {string} input - cpr number input\r\n * @returns\r\n */\r\n\r\nexport default function (cpr) { \r\n const pattern = /\\b(?\\d{2})(?\\d{2})(?\\d{2})(-?)(?\\d{4})\\b/\r\n const match = cpr.match(pattern);\r\n\r\n if (!match) {\r\n return false;\r\n }\r\n\r\n const dayPart = parseInt(match.groups[\"Day\"]);\r\n const monthPart = parseInt(match.groups[\"Month\"]);\r\n const yearPart = parseInt(match.groups[\"Year\"]);\r\n const currentYearPart = new Date().getFullYear() % 100;\r\n \r\n const year = yearPart <= currentYearPart ? 2000 + yearPart : 1900 + yearPart \r\n\r\n if (!isValidDate(dayPart, monthPart, year)) {\r\n return false;\r\n }\r\n \r\n if (year < 2007) {\r\n return cprMod11Validation(cpr);\r\n }\r\n return true; \r\n}\r\n\r\nfunction isValidDate(day, month, year) {\r\n const date = new Date(year, month - 1, day); // Month is zero-based\r\n return (\r\n date.getFullYear() === year &&\r\n date.getMonth() === month - 1 &&\r\n date.getDate() === day\r\n );\r\n}\r\n\r\nfunction cprMod11Validation(cpr) {\r\n const _cprScales = [4, 3, 2, 7, 6, 5, 4, 3, 2, 1]\r\n const cprWithoutDash = cpr.replace(\"-\", \"\");\r\n if (!cprWithoutDash || cprWithoutDash.length !== 10) {\r\n return false;\r\n }\r\n\r\n const cprNumber = parseInt(cprWithoutDash);\r\n if (isNaN(cprNumber)) {\r\n return false;\r\n }\r\n\r\n const cprArray = Array.from(cprWithoutDash).map(Number);\r\n\r\n let sum = 0;\r\n for (let i = 0; i < 10; i++) {\r\n sum += cprArray[i] * _cprScales[i];\r\n }\r\n\r\n return sum % 11 === 0;\r\n}\r\n","import formFieldCommonOptions from 'foundation/js/formFieldCommonOptions'\r\nimport cprValidator from 'foundation/js/inputValidators/cprValidator'\r\n\r\nconst options = formFieldCommonOptions('FormInputCprField', {\r\n validatorFunction(input) {\r\n return cprValidator(input)\r\n }\r\n})\r\n\r\nexport default options\r\n","import { render } from \"./FormInputCprField.vue?vue&type=template&id=1fe370ba\"\nimport script from \"./FormInputCprField.vue?vue&type=script&lang=js\"\nexport * from \"./FormInputCprField.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"D:\\\\a\\\\1\\\\s\\\\frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\r\n\r\n\r\n \r\n\r\n","import formFieldCommonOptions from 'foundation/js/formFieldCommonOptions'\r\nimport cvrValidator from 'foundation/js/inputValidators/cvrValidator'\r\n\r\nconst options = formFieldCommonOptions('FormInputCvrField', {\r\n validatorFunction(input) {\r\n return cvrValidator(input)\r\n }\r\n})\r\n\r\nexport default options\r\n","import { render } from \"./FormInputCvrField.vue?vue&type=template&id=3703ab9b\"\nimport script from \"./FormInputCvrField.vue?vue&type=script&lang=js\"\nexport * from \"./FormInputCvrField.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"D:\\\\a\\\\1\\\\s\\\\frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\r\n\r\n\r\n \r\n\r\n","import formFieldCommonOptions from 'foundation/js/formFieldCommonOptions'\r\n\r\nconst options = formFieldCommonOptions('FormInputDatefield', {\r\n validatorFunction(input) {\r\n return !isNaN((new Date(d)).getTime());\r\n }\r\n})\r\n\r\nexport default options","import { render } from \"./FormInputDateField.vue?vue&type=template&id=715cc5f4\"\nimport script from \"./FormInputDateField.vue?vue&type=script&lang=js\"\nexport * from \"./FormInputDateField.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"D:\\\\a\\\\1\\\\s\\\\frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\r\n\r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n
\r\n {{ labels.submitErrorTitle }}\r\n
\r\n
\r\n {{ labels.submitErrorMessage }}\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n\r\n","export default {\r\n labels: {\r\n type: Object,\r\n required: true\r\n },\r\n previousStepCallback: {\r\n type: Function,\r\n required: true\r\n },\r\n nextStepCallback: {\r\n type: Function,\r\n required: true\r\n },\r\n skipStepCallback: {\r\n type: Function,\r\n required: false,\r\n default: () => {}\r\n },\r\n displayInputError: {\r\n type: Boolean,\r\n required: true,\r\n default: false\r\n },\r\n submitCallback: {\r\n type: Function,\r\n required: true\r\n },\r\n updateBasketCallback: {\r\n type: Function,\r\n required: false,\r\n default: () => {}\r\n },\r\n stafetId: {\r\n type: String,\r\n required: true\r\n },\r\n holdId: {\r\n type: String,\r\n required: false\r\n },\r\n tshirtSizes: {\r\n type: Array,\r\n required: false,\r\n default: []\r\n },\r\n donationAmounts: {\r\n type: Array,\r\n required: false,\r\n default: []\r\n },\r\n loggedIn: {\r\n type: Boolean,\r\n required: false,\r\n default: false\r\n },\r\n holdData: {\r\n type: Object,\r\n required: false,\r\n default: {}\r\n },\r\n holdList: {\r\n type: Array,\r\n required: false,\r\n default: []\r\n },\r\n userData: {\r\n type: Object,\r\n required: false,\r\n default: {}\r\n },\r\n redirectToEditProfile: {\r\n type: String,\r\n required: false,\r\n default: ''\r\n },\r\n editProfileLinkText: {\r\n type: String,\r\n required: false,\r\n default: ''\r\n },\r\n lysposeMinimumAmount: {\r\n type: Number,\r\n required: false,\r\n default: 50\r\n },\r\n donationMinimumAmount: {\r\n type: Number,\r\n required: false,\r\n default: 50\r\n },\r\n isSubmitting: {\r\n type: Boolean,\r\n required: false,\r\n default: false\r\n }\r\n}\r\n","import _stafetCommonStepsProps from 'foundation/js/configurations/_stafetCommonStepsProps'\r\nimport { ref, onMounted, computed } from 'vue'\r\nimport { useStore } from 'vuex'\r\n\r\nexport default {\r\n name: 'FormStepSubmitting',\r\n props: _stafetCommonStepsProps,\r\n setup(props) {\r\n const store = useStore()\r\n const errorMessage = ref('')\r\n\r\n const loading = computed( () => {\r\n return props.isSubmitting\r\n })\r\n\r\n\r\n\r\n onMounted(async () => {\r\n await submit()\r\n })\r\n\r\n const getLabel = (labelKey) =>\r\n store.getters['labels/getLabel']({\r\n labelCollection: 'formStepSubmitting',\r\n labelKey: labelKey\r\n })\r\n\r\n const submit = async () => {\r\n if (props.submitCallback) {\r\n await props.submitCallback()\r\n }\r\n }\r\n\r\n\r\n const submitRetry = async () => {\r\n loading.value = true\r\n errorMessage.value = ''\r\n await submit()\r\n }\r\n\r\n return {\r\n loading,\r\n errorMessage,\r\n submitRetry,\r\n getLabel\r\n }\r\n }\r\n}\r\n","import { render } from \"./FormStepSubmitting.vue?vue&type=template&id=0cbde7ac\"\nimport script from \"./FormStepSubmitting.vue?vue&type=script&lang=js\"\nexport * from \"./FormStepSubmitting.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"D:\\\\a\\\\1\\\\s\\\\frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\r\n\r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n
\r\n {{ getLabel('errorTitle') }}\r\n
\r\n
\r\n {{ getLabel('errorMessage') }}\r\n
\r\n
\r\n \r\n \r\n\r\n \r\n\r\n","import _stafetCommonStepsProps from 'foundation/js/configurations/_stafetCommonStepsProps'\r\nimport { useStore } from 'vuex'\r\n\r\nexport default {\r\n name: 'FormStepZero',\r\n props: _stafetCommonStepsProps,\r\n setup() {\r\n const store = useStore()\r\n\r\n const getLabel = (labelKey) =>\r\n store.getters['labels/getLabel']({\r\n labelCollection: 'formStepZero',\r\n labelKey: labelKey\r\n })\r\n\r\n return {\r\n getLabel\r\n }\r\n }\r\n}\r\n","import { render } from \"./FormStepZero.vue?vue&type=template&id=06eb81da\"\nimport script from \"./FormStepZero.vue?vue&type=script&lang=js\"\nexport * from \"./FormStepZero.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"D:\\\\a\\\\1\\\\s\\\\frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\r\n\r\n\r\n \r\n \r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n \r\n setCancerTypes(tags)\"\r\n :initTags=\"personalInfo.cancerType\"\r\n />\r\n \r\n
\r\n\r\n \r\n personalInfo.region = e.target.value\"\r\n />\r\n\r\n \r\n
\r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n \r\n
\r\n {{ getLabel(\"deleteText\") }}\r\n \r\n \r\n {{ getLabel(\"deleteButtonText\") }}\r\n \r\n
\r\n
\r\n \r\n \r\n\r\n","import { ref, computed } from \"vue\";\r\nimport { useStore } from \"vuex\";\r\nimport FormInputTextField from \"../FormInputTextField/FormInputTextField\";\r\nimport FormInputTextarea from \"../FormInputTextarea/FormInputTextarea\";\r\nimport FormInputDropdown from \"../FormInputDropdown/FormInputDropdown\";\r\nimport FormInputEmailField from \"../FormInputEmailField/FormInputEmailField\";\r\nimport FormCheckbox from \"../FormCheckbox/FormCheckbox\";\r\nimport FormInputNameField from \"../FormInputNameField/FormInputNameField\";\r\nimport ProfilePicture from \"../ProfilePicture/ProfilePicture\";\r\nimport DropdownWithTags from \"../DropdownWithTags/DropdownWithTags\";\r\nimport nameValidator from \"foundation/js/inputValidators/nameValidator\";\r\nimport nonEmptyStringValidator from \"foundation/js/inputValidators/nonEmptyStringValidator\";\r\nimport isBoolean from \"foundation/js/inputValidators/isBoolean\";\r\n\r\nexport default {\r\n name: \"ForumEditProfile\",\r\n components: {\r\n FormInputTextField,\r\n FormInputTextarea,\r\n FormInputNameField,\r\n FormInputEmailField,\r\n FormInputDropdown,\r\n FormCheckbox,\r\n ProfilePicture,\r\n DropdownWithTags\r\n },\r\n props: {\r\n content: {\r\n type: Object,\r\n required: true,\r\n },\r\n continueUrl: {\r\n type: String,\r\n required: true,\r\n },\r\n continueUrlWithData: {\r\n type: String,\r\n required: true,\r\n }\r\n },\r\n setup(props) {\r\n const store = useStore();\r\n const personalInfo = ref({\r\n ProfileName: props.content.memberName ?? \"\",\r\n relationToCancer: props.content.memberRoles === \"\" ? null : props.content.memberRoles,\r\n cancerType: props.content.memberDiagnosis ?? [\"\"],\r\n cancerTypeChanged: [\"\"],\r\n region: props.content.memberRegion === \"\" ? null : props.content.memberRegion,\r\n dateOfBirth: props.content.memberDateOfBirth,\r\n gender: props.content.memberGender ?? \"\",\r\n description: props.content.memberProfileText ?? \"\",\r\n NotificationForNewPostInMyGroups: props.content.notifications.postInGroup ?? false,\r\n NotificationForDirectMessage: props.content.notifications.privateMessage ?? false,\r\n NotificationForCommentOnMySavedPosts: props.content.notifications.commentOnMyPost ?? false,\r\n NotificationForNewCommentInMyGroups: props.content.notifications.commentInMyGroups ?? false,\r\n NotificationFrequency: props.content.notifications.frequency,\r\n });\r\n const notificationfrequencyOptions = [\r\n { \"name\": \"Straks\", \"value\": \"Immediately\" },\r\n { \"name\": \"Dagligt\", \"value\": \"Daily\" },\r\n { \"name\": \"Ugentligt\", \"value\": \"Weekly\" },\r\n ]\r\n const genderOptions =[\r\n { \"name\": \"Kvinde\", \"value\": \"Kvinde\"},\r\n { \"name\": \"Mand\", \"value\": \"Mand\" },\r\n { \"name\": \"Andet\", \"value\": \"Andet\" }\r\n ]\r\n\r\n const hasProfilePicture = ref(props.content.hasProfileImage === \"true\")\r\n const activeProfilePicture = ref({\r\n \"name\": props.content.memberImgName ?? \"\",\r\n \"url\": props.content.memberImgSrc ?? \"\",\r\n \"size\": props.content.memberImgSize ?? \"\"\r\n })\r\n\r\n const changePasswordUrl = props.content.changePasswordUrl\r\n\r\n const displayError = ref(false)\r\n const isSubmitting = computed(()=> store.state.forum.is_submitting)\r\n\r\n const isFormValid = () => {\r\n return nameValidator(personalInfo.value.ProfileName) &&\r\n isBoolean(personalInfo.value.NotificationForNewPostInMyGroups) &&\r\n isBoolean(personalInfo.value.NotificationForDirectMessage) &&\r\n isBoolean(personalInfo.value.NotificationForCommentOnMySavedPosts) &&\r\n nonEmptyStringValidator(personalInfo.value.NotificationFrequency)\r\n };\r\n\r\n const saveProfile = () => {\r\n const isValid = isFormValid()\r\n displayError.value = !isValid; \r\n\r\n if (!isValid) {\r\n return\r\n }\r\n\r\n if (!personalInfo.value.dateOfBirth) {\r\n personalInfo.value.dateOfBirth = null\r\n }\r\n\r\n store.dispatch('forum/submitSaveProfile', {\r\n body: personalInfo.value\r\n })\r\n };\r\n\r\n const startDeleteUserOverlay = function (e) {\r\n store.commit('main/set_page_overlay_content_data', { cancerforumProfileId: props.content.id, continueUrl: props.continueUrl, continueUrlWithData: props.continueUrlWithData })\r\n \r\n store.dispatch(\"main/openPageOverlay\", {\r\n overlayContent: \"DeleteCancerProfileModal\",\r\n returnTarget: e.currentTarget,\r\n });\r\n };\r\n\r\n const startUserInfoOverlay = function (e) {\r\n store.dispatch(\"main/openPageOverlay\", {\r\n overlayContent: \"MemberOverlay\",\r\n returnTarget: e.currentTarget,\r\n });\r\n };\r\n\r\n const setCancerTypes = function(tags) {\r\n personalInfo.value.cancerType = tags\r\n }\r\n\r\n return {\r\n notificationfrequencyOptions,\r\n genderOptions,\r\n hasProfilePicture,\r\n activeProfilePicture,\r\n personalInfo,\r\n changePasswordUrl,\r\n saveProfile,\r\n nameValidator,\r\n nonEmptyStringValidator,\r\n startDeleteUserOverlay,\r\n displayError,\r\n isSubmitting,\r\n setCancerTypes,\r\n startUserInfoOverlay,\r\n getLabel: (labelKey) =>\r\n store.getters[\"labels/getLabel\"]({\r\n labelCollection: \"ForumEditProfile\",\r\n labelKey,\r\n }),\r\n };\r\n },\r\n};\r\n","import { render } from \"./ForumEditProfile.vue?vue&type=template&id=11e4c805\"\nimport script from \"./ForumEditProfile.vue?vue&type=script&lang=js\"\nexport * from \"./ForumEditProfile.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"D:\\\\a\\\\1\\\\s\\\\frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\r\n\r\n \r\n \r\n \r\n
\r\n
\r\n\r\n \r\n - \r\n\r\n \r\n\r\n
\r\n \r\n\r\n
\r\n \r\n
{{ checkoutDeliveryStepTitle }}
\r\n
\r\n
\r\n\r\n
\r\n \r\n
\r\n
\r\n\r\n \r\n\r\n","\r\n\r\n\r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n
\r\n\r\n \r\n \r\n\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n\r\n \r\n \r\n\r\n","import GetLabel from \"foundation/js/getLabel\"\r\nimport { computed, onMounted, ref } from \"vue\"\r\nimport FormInputTextField from 'components/FormInputTextField/FormInputTextField.vue'\r\nimport FormAddressField from 'components/FormAddressField/FormAddressField.vue'\r\nimport phoneValidator from '../../foundation/js/inputValidators/phoneValidator'\r\nimport { useStore } from \"vuex\"\r\n\r\nexport default {\r\n name: \"FrivilligeCheckoutStepOne\",\r\n components: {\r\n FormInputTextField, \r\n FormAddressField\r\n },\r\n setup() {\r\n const store = useStore()\r\n const userInformation = computed(() => store.state.checkout.purchaseData.invoice.userInformation)\r\n const invoiceAddress = computed(() => store.state.checkout.purchaseData.invoice.invoiceAddress)\r\n\r\n const displayErrorMessages = ref(false)\r\n \r\n const disablePhoneInput = !!userInformation.value.mobilePhone\r\n const phoneInput = ref(userInformation.value?.mobilePhone || '')\r\n const phoneInputFilled = computed (() => phoneValidator(phoneInput.value) )\r\n\r\n const onSubmit = () => {\r\n displayErrorMessages.value = true\r\n if (!phoneInputFilled.value) {\r\n return\r\n }\r\n\r\n const updatedUserInformation = {\r\n ...userInformation.value,\r\n mobilePhone: phoneInput.value,\r\n }\r\n\r\n store.commit('checkout/set_active_delivery_address', invoiceAddress.value)\r\n store.commit('checkout/set_purchase_data_invoice', {\r\n userInformation: updatedUserInformation,\r\n invoiceAddress: invoiceAddress.value\r\n })\r\n\r\n // if succes set been filled to current step, as data is now in session storage\r\n store.commit('checkout/update_checkout_step_been_filled', 1)\r\n // if succes set step to next stepNumber\r\n store.commit('checkout/update_checkout_step',{nextStepNumber: 2})\r\n }\r\n \r\n return {\r\n userInformation,\r\n phoneInput,\r\n phoneInputFilled,\r\n disablePhoneInput,\r\n displayErrorMessages,\r\n invoiceAddress,\r\n onSubmit,\r\n getLabel: (labelKey) => GetLabel({ labelKey, labelCollection: \"checkout\" })\r\n }\r\n }\r\n}","import { render } from \"./FrivilligeCheckoutStepOne.vue?vue&type=template&id=8c451312\"\nimport script from \"./FrivilligeCheckoutStepOne.vue?vue&type=script&lang=js\"\nexport * from \"./FrivilligeCheckoutStepOne.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"D:\\\\a\\\\1\\\\s\\\\frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\r\n\r\n\r\n \r\n\r\n \r\n \r\n
{{ getLabel('udlaanText') }}
\r\n
\r\n\r\n \r\n \r\n \r\n \r\n
\r\n\r\n \r\n \r\n
\r\n Levering
\r\n \r\n\r\n \r\n \r\n \r\n
{{ getLabel('udlaanDeliveryText') }}
\r\n
\r\n \r\n \r\n \r\n\r\n","export function addNDaysToDate(date, n) {\r\n date.setDate(date.getDate() + n)\r\n return date.toISOString().split('T')[0]\r\n}","import { computed, onMounted, ref } from \"vue\"\r\nimport { useStore } from \"vuex\"\r\nimport GetLabel from \"foundation/js/getLabel\"\r\nimport { addNDaysToDate } from \"foundation/js/utils/dateUtils\"\r\nimport CheckoutStepTwo from \"../CheckoutStepTwo/CheckoutStepTwo.vue\"\r\nimport FormInputTextarea from \"../FormInputTextarea/FormInputTextarea.vue\"\r\nimport FormInputTextField from \"../FormInputTextField/FormInputTextField.vue\"\r\nimport FormInputDateField from \"../FormInputDateField/FormInputDateField.vue\"\r\n\r\nexport default {\r\n name: \"FrivilligeCheckoutStepTwo\",\r\n components: {\r\n CheckoutStepTwo,\r\n FormInputTextarea,\r\n FormInputTextField,\r\n FormInputDateField,\r\n },\r\n setup() {\r\n const store = useStore()\r\n const udlaanStartDate = ref(store.state.checkout.purchaseData?.udlaansData?.startDate ?? null)\r\n const udlaanEndDate = ref(store.state.checkout.purchaseData?.udlaansData?.endDate ?? null)\r\n const udlaanComment = ref(store.state.checkout.purchaseData?.udlaansData?.comment ?? null)\r\n\r\n const udlaanMinStartDate = addNDaysToDate(new Date(), 3) \r\n const udlaanMinEndDate = computed(() => {\r\n return udlaanStartDate.value\r\n ? addNDaysToDate(new Date(udlaanStartDate.value), 1)\r\n : udlaanMinStartDate\r\n })\r\n\r\n const displayError = ref(false)\r\n\r\n const containsUdlaansvare = computed(() => store.state.basket.basketState.containsUdlaansvare)\r\n\r\n const onSubmit = (deliveryPayload) => {\r\n displayError.value = true\r\n if (deliveryPayload && (!containsUdlaansvare.value || validateUdlaanPeriode())) { \r\n store.commit('checkout/set_purchase_data_delivery', deliveryPayload)\r\n \r\n // update the active delivery address (initially is set to invoice address)\r\n store.commit('checkout/set_active_delivery_address', deliveryPayload)\r\n // set udlaan period\r\n store.commit('checkout/set_udlaans_data', {\r\n startDate: udlaanStartDate.value, \r\n endDate: udlaanEndDate.value, \r\n comment: udlaanComment.value\r\n })\r\n\r\n // if succes set step to next stepNumber\r\n store.commit('checkout/update_checkout_step',{nextStepNumber: 3})\r\n\r\n displayError.value = false\r\n }\r\n }\r\n\r\n const validateUdlaanPeriode = () => udlaanStartDateValidator(udlaanStartDate.value) && udlaanEndDateValidator(udlaanStartDate.value, udlaanEndDate.value)\r\n const udlaanStartDateValidator = (startDate) => getDate(new Date()) <= getDate(new Date(startDate))\r\n const udlaanEndDateValidator = (startDate, endDate) => \r\n getDate(new Date()) < getDate(new Date(endDate)) && getDate(new Date(startDate)) < getDate(new Date(endDate))\r\n\r\n const isUdlaanStartDateValid = computed(() => displayError.value && !udlaanStartDateValidator(udlaanStartDate.value))\r\n const isUdlaanEndDateValid = computed(() => displayError.value && !udlaanEndDateValidator(udlaanStartDate.value, udlaanEndDate.value))\r\n\r\n const getDate = (date) => {\r\n return date \r\n ? parseInt(\r\n new Date(date).toISOString()\r\n .split('T')[0]\r\n .replaceAll('-', '')\r\n ) \r\n : null\r\n }\r\n\r\n return {\r\n containsUdlaansvare,\r\n udlaanStartDate,\r\n udlaanEndDate,\r\n udlaanComment,\r\n udlaanMinStartDate,\r\n udlaanMinEndDate,\r\n isUdlaanStartDateValid,\r\n isUdlaanEndDateValid,\r\n onSubmit,\r\n getLabel: (labelKey) => GetLabel({ labelKey, labelCollection: \"checkout\", allowEmpty: true })\r\n }\r\n }\r\n}","import { render } from \"./FrivilligeCheckoutStepTwo.vue?vue&type=template&id=5d1abe7e\"\nimport script from \"./FrivilligeCheckoutStepTwo.vue?vue&type=script&lang=js\"\nexport * from \"./FrivilligeCheckoutStepTwo.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"D:\\\\a\\\\1\\\\s\\\\frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { computed, onBeforeMount } from \"vue\"\r\nimport BasketAside from \"../BasketAside/BasketAside.vue\"\r\nimport BasketCard from \"../BasketCard/BasketCard.vue\"\r\nimport FrivilligeCheckoutStepOne from \"../FrivilligeCheckoutStepOne/FrivilligeCheckoutStepOne.vue\"\r\nimport FrivilligeCheckoutStepTwo from \"../FrivilligeCheckoutStepTwo/FrivilligeCheckoutStepTwo.vue\"\r\nimport CheckoutStepThree from \"../CheckoutStepThree/CheckoutStepThree.vue\"\r\nimport { useStore } from \"vuex\"\r\nimport deepClone from \"foundation/js/deepClone\"\r\n\r\nexport default {\r\n name: \"FrivilligeCheckoutContent\",\r\n components: {\r\n BasketAside,\r\n BasketCard,\r\n FrivilligeCheckoutStepOne,\r\n FrivilligeCheckoutStepTwo,\r\n CheckoutStepThree\r\n },\r\n props: {\r\n userData: {\r\n type: Object,\r\n required: true\r\n }\r\n },\r\n setup(props) {\r\n const store = useStore()\r\n\r\n const getLabel = (labelKey) => store.getters['labels/getLabel']({ labelCollection: 'checkout', labelKey })\r\n \r\n const containsUdlaansvare = computed(() => store.state.basket.basketState.containsUdlaansvare)\r\n const checkoutInvoice = computed(() => store.state.checkout.purchaseData.invoice)\r\n const checkoutSteps = computed(() => store.state.checkout.checkoutSteps)\r\n const activeStep = computed(() => checkoutSteps.value.find((step) => step.active === true))\r\n \r\n onBeforeMount(() => {\r\n store.dispatch('basket/fetchBasket')\r\n // set user data to invoice\r\n const invoiceCopy = deepClone(checkoutInvoice.value)\r\n invoiceCopy.userInformation.contactFirstName = props.userData.firstName ?? ''\r\n invoiceCopy.userInformation.contactLastName = props.userData.lastName ?? ''\r\n invoiceCopy.userInformation.email = props.userData.email ?? ''\r\n invoiceCopy.userInformation.mobilePhone = props.userData.phoneNumber ?? ''\r\n invoiceCopy.userInformation.customerType = 'frivillige'\r\n invoiceCopy.invoiceAddress.addressLine = props.userData.address ?? ''\r\n invoiceCopy.invoiceAddress.postalCode = props.userData.postalCode ?? ''\r\n invoiceCopy.invoiceAddress.city = props.userData.city ?? ''\r\n \r\n const newCheckoutSteps = deepClone(checkoutSteps.value)\r\n newCheckoutSteps[1].stepTitle = 'Levering'\r\n\r\n store.commit('checkout/set_checkout_steps', newCheckoutSteps)\r\n store.commit('checkout/set_purchase_data_invoice', invoiceCopy)\r\n })\r\n\r\n const determineCheckoutStepContent = function () {\r\n switch (activeStep.value.stepNumber) {\r\n case 1:\r\n return 'FrivilligeCheckoutStepOne'\r\n case 2:\r\n return 'FrivilligeCheckoutStepTwo'\r\n case 3:\r\n return 'CheckoutStepThree'\r\n case 4:\r\n // here user gets directed to receipt page\r\n return\r\n default:\r\n console.warn('No active checkout step defined')\r\n break\r\n }\r\n }\r\n\r\n const checkoutDeliveryStepTitle = computed(() => {\r\n return containsUdlaansvare.value \r\n ? getLabel('udlaanCheckoutStepTitle') \r\n : activeStep.value.stepTitle\r\n })\r\n\r\n const handleStepClick = function (clickedStepNumber) {\r\n const validClickedStepNumber =\r\n clickedStepNumber < activeStep.value.stepNumber\r\n ? clickedStepNumber\r\n : activeStep.value.stepNumber\r\n store.commit('checkout/update_checkout_step', {\r\n nextStepNumber: validClickedStepNumber\r\n })\r\n }\r\n\r\n\r\n return {\r\n activeStep,\r\n checkoutSteps,\r\n checkoutDeliveryStepTitle,\r\n determineCheckoutStepContent,\r\n handleStepClick\r\n }\r\n }\r\n}","import { render } from \"./FrivilligeCheckoutContent.vue?vue&type=template&id=3b4aa9ba\"\nimport script from \"./FrivilligeCheckoutContent.vue?vue&type=script&lang=js\"\nexport * from \"./FrivilligeCheckoutContent.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"D:\\\\a\\\\1\\\\s\\\\frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\r\n\r\n\r\n \r\n \r\n
\r\n
\r\n {{ totalAmount }} {{ getLabel('numberOfPostsLabel') }}\r\n
\r\n
\r\n
\r\n
\r\n\r\n \r\n \r\n - \r\n \r\n
\r\n \r\n \r\n - \r\n \r\n
\r\n \r\n
\r\n\r\n \r\n
{{ getLabel('resultOutForTitle', [posts.length + featuredPostSpotCards.length, totalAmount]) }}
\r\n
\r\n
\r\n \r\n\r\n \r\n\r\n","\r\n\r\n\r\n \r\n
\r\n\r\n
\r\n \r\n
\r\n
startUserInfoOverlay(e, result.authorId)\">\r\n \r\n
\r\n
\r\n \r\n
\r\n \r\n
startUserInfoOverlay(e, result.authorId)\"\r\n v-on:keydown.enter=\"(e) => startUserInfoOverlay(e, result.authorId)\"\r\n aria-haspopup=\"true\" \r\n >\r\n
\r\n
\r\n {{ result.author }}\r\n
\r\n
\r\n
\r\n {{ result.date }}
\r\n
\r\n {{ getLabel('editedLabel') }}: {{ result.edited.date }}\r\n \r\n {{ result.edited.author }}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
{{ getLabel('notLoggedInTitle') }}\r\n
\r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n \r\n\r\n \r\n
startUserInfoOverlay(e, latestComment.authorId)\">\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n
startUserInfoOverlay(e, latestComment.authorId)\"\r\n aria-haspopup=\"true\"\r\n v-bind:aria-expanded=\"userInfoExpanded\">\r\n
\r\n \r\n {{ latestComment.author }}\r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n {{ latestComment?.date }}\r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n\r\n \r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n","import { computed, ref, onMounted } from \"vue\"\r\nimport { useStore } from \"vuex\"\r\n\r\nexport default {\r\n name: \"GroupPost\",\r\n props: {\r\n result: {\r\n type: Object,\r\n required: true\r\n },\r\n isFrivilligContext: {\r\n type: Boolean,\r\n required: false\r\n },\r\n handlePostClick: {\r\n type: Function,\r\n required: true\r\n },\r\n },\r\n setup(props) {\r\n const store = useStore()\r\n const userInfoExpanded = ref(false)\r\n const isMasked = computed(() => !props.result.postText)\r\n\r\n const latestComment = computed(() => store.state.forum.post_latest_comment[props.result.id])\r\n const statistics = computed(() => store.state.forum.post_statistics[props.result.id])\r\n const commentsCount = computed(() => props.result.hasComments ? statistics.value?.commentsCount : 0)\r\n \r\n const overlayContent = props.isFrivilligContext\r\n ? \"MemberOverlayProfileCard\"\r\n : \"MemberOverlay\"\r\n \r\n const startUserInfoOverlay = (e, userId) => {\r\n\r\n if (userId == undefined){\r\n return\r\n }\r\n\r\n store.commit('main/set_page_overlay_content_data', { \r\n userId,\r\n isFrivilligContext: props.isFrivilligContext })\r\n\r\n store.dispatch(\"main/openPageOverlay\", {\r\n overlayContent: overlayContent,\r\n returnTarget: e.currentTarget,\r\n })\r\n }\r\n\r\n onMounted(() => {\r\n\r\n if (props.result.hasComments) {\r\n store.dispatch(\"forum/getPostLatestComment\", {\r\n postId: props.result.id\r\n })\r\n store.dispatch(\"forum/getPostStatistics\", {\r\n postId: props.result.id\r\n })\r\n }\r\n\r\n })\r\n \r\n return {\r\n getLabel: (labelKey)=> store.getters['labels/getLabel']({labelCollection: \"GroupPost\", labelKey: labelKey}),\r\n userInfoExpanded,\r\n isMasked,\r\n startUserInfoOverlay,\r\n latestComment,\r\n commentsCount,\r\n }\r\n }\r\n}","import { render } from \"./GroupPost.vue?vue&type=template&id=0b5edf88\"\nimport script from \"./GroupPost.vue?vue&type=script&lang=js\"\nexport * from \"./GroupPost.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"D:\\\\a\\\\1\\\\s\\\\frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import deepClone from \"foundation/js/deepClone\"\r\nimport GetLabel from \"foundation/js/getLabel\"\r\nimport { computed, ref, onMounted } from \"vue\"\r\nimport { useStore } from \"vuex\"\r\nimport GroupPost from \"../GroupPost/GroupPost\"\r\nimport FeaturedPostSpotCard from \"../FeaturedPostSpotCard/FeaturedPostSpotCard\"\r\n\r\nexport default {\r\n name: \"FrivilligePostsList\",\r\n components: {\r\n GroupPost,\r\n FeaturedPostSpotCard\r\n },\r\n props: {\r\n guid: {\r\n type: String,\r\n required: true\r\n },\r\n groupId: {\r\n type: String,\r\n required: true\r\n },\r\n featuredPostSpotCards: {\r\n type: Object,\r\n required: false,\r\n default: null\r\n },\r\n isMember: {\r\n type: Boolean,\r\n required: true,\r\n default: false\r\n },\r\n isLoggedIn: {\r\n type: Boolean,\r\n required: true,\r\n default: false\r\n },\r\n skip: {\r\n type: Number,\r\n required: true,\r\n default: 0\r\n },\r\n take: {\r\n type: Number,\r\n required: false,\r\n default: 8\r\n },\r\n universId: {\r\n type: String,\r\n required: true\r\n }\r\n },\r\n setup(props) {\r\n const store = useStore()\r\n const numberOfItems = ref(0)\r\n \r\n const numFeaturedPosts = props.featuredPostSpotCards?.length ?? 0\r\n const posts = computed(() => deepClone(store.state.search.results[props.guid] ?? []))\r\n const totalAmount = computed(() => numFeaturedPosts + store.state.search.scoped_total[props.guid] ?? 0)\r\n const showSpinner = computed(()=> store.state.search.search_inprogress[props.guid] )\r\n\r\n onMounted(() => {\r\n store.commit('search/set_replaceQueryInUrl', false)\r\n\r\n store.dispatch('search/initSearchScope', {\r\n guid: props.guid,\r\n firstPageSize: props.take,\r\n showMorePageSize: props.take,\r\n url: process.env.GET_POSTS_LIST + \"?id=\" + props.groupId + \"&comments=1\"\r\n })\r\n\r\n store.dispatch('search/performSearch', {\r\n guid: props.guid,\r\n query: '',\r\n skip: props.skip,\r\n take: props.take,\r\n })\r\n })\r\n\r\n const getMorePosts = () => {\r\n store.dispatch('search/performMoreSearch', { guid: props.guid })\r\n }\r\n\r\n const handlePostClick = (e, post) => {\r\n if(!props.isLoggedIn){\r\n store.dispatch('main/openPageOverlay', {\r\n overlayContent: \"LoginOverlay\",\r\n returnTarget: e.currentTarget\r\n })\r\n \r\n return\r\n }\r\n\r\n if (!props.isMember) {\r\n store.commit('main/set_page_overlay_content_data', { isFrivilligContext: true })\r\n\r\n store.dispatch('main/openPageOverlay', {\r\n overlayContent: \"ClosedGroupOverlay\",\r\n returnTarget: e.currentTarget\r\n })\r\n\r\n return\r\n }\r\n\r\n window.location.href = post.url\r\n }\r\n\r\n return {\r\n numberOfItems,\r\n showSpinner,\r\n posts,\r\n totalAmount,\r\n handlePostClick,\r\n getMorePosts,\r\n getLabel: (labelKey, params) => GetLabel({ labelKey, labelCollection: 'FrivilligePostsList', params })\r\n }\r\n },\r\n}","import { render } from \"./FrivilligePostsList.vue?vue&type=template&id=70a5cb1e\"\nimport script from \"./FrivilligePostsList.vue?vue&type=script&lang=js\"\nexport * from \"./FrivilligePostsList.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"D:\\\\a\\\\1\\\\s\\\\frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\r\n\r\n\r\n \r\n \r\n \r\n
\r\n {{ getLabel('title') }}\r\n
\r\n \r\n\r\n \r\n \r\n \r\n
{{ getLabel('text') }}
\r\n
\r\n \r\n\r\n \r\n\r\n \r\n
{{ getLabel('buttonDescriptionText') }}
\r\n
\r\n
\r\n \r\n\r\n","import { useStore } from \"vuex\"\r\nimport { computed, onMounted } from \"vue\"\r\nimport GetLabel from \"foundation/js/getLabel\"\r\nimport onTransitionendCallback from 'components/PageOverlay/methods/onTransitionendCallback'\r\n\r\nexport default {\r\n name: \"FrivilligeShopWrongRoleModal\",\r\n setup(){\r\n const store = useStore()\r\n\r\n let first, close\r\n\r\n const tabTrap = function (e) {\r\n if (e.key === 'Tab' && e.target.dataset.order === 'first') {\r\n e.preventDefault()\r\n close.focus()\r\n return\r\n }\r\n\r\n first.focus()\r\n }\r\n\r\n onMounted(() => {\r\n first = document.querySelector('.kb-button[data-order=\"first\"]')\r\n close = document.querySelector('.kb-page-overlay__close')\r\n\r\n onTransitionendCallback(\r\n {\r\n opening() {\r\n first.focus()\r\n }\r\n },\r\n { persistent: true }\r\n )\r\n })\r\n \r\n const url = computed(() => store.state.main.page_overlay_content_data.rolePageUrl)\r\n const redirect = () => {\r\n window.location.href = url.value\r\n }\r\n\r\n return {\r\n tabTrap,\r\n redirect,\r\n getLabel: (labelKey) => GetLabel({ labelKey, labelCollection: 'FrivilligeShopWrongRoleModal' }),\r\n }\r\n }\r\n}","import { render } from \"./FrivilligeShopWrongRoleModal.vue?vue&type=template&id=c7023198\"\nimport script from \"./FrivilligeShopWrongRoleModal.vue?vue&type=script&lang=js\"\nexport * from \"./FrivilligeShopWrongRoleModal.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"D:\\\\a\\\\1\\\\s\\\\frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { useStore } from \"vuex\"\r\n\r\nexport default {\r\n name: \"FrivilligGroupHero\",\r\n props: {\r\n isLoggedIn: {\r\n type: Boolean,\r\n required: true\r\n },\r\n loginUrl: {\r\n type: String,\r\n required: false\r\n },\r\n closedGroup: {\r\n type: Boolean,\r\n required: false\r\n },\r\n gruppeKode: {\r\n type: String,\r\n required: true\r\n }\r\n },\r\n setup(props) {\r\n const store = useStore()\r\n\r\n const openCalendarOverlay = () => {\r\n store.dispatch('main/openPageOverlay', {\r\n overlayContent: 'CalendarOverlay'\r\n })\r\n }\r\n\r\n const openMedlemsOverlay = () => {\r\n store.commit('main/set_page_overlay_content_data', { groupId: props.gruppeKode })\r\n\r\n store.dispatch('main/openPageOverlay', {\r\n overlayContent: 'MemberListOverlayFVL'\r\n })\r\n }\r\n \r\n const joinGroup = async () => {\r\n\r\n if (!props.isLoggedIn) {\r\n window.location.href = props.loginUrl\r\n return\r\n }\r\n\r\n if (!props.closedGroup)\r\n {\r\n await store.dispatch('frivillige/joinGroup', {\r\n gruppeKode: props.gruppeKode,\r\n })\r\n window.location.reload()\r\n return;\r\n }\r\n\r\n store.commit('main/set_page_overlay_content_data', { isFrivilligContext: true })\r\n store.dispatch('main/openPageOverlay', {\r\n overlayContent: 'ClosedGroupOverlay',\r\n })\r\n }\r\n\r\n return {\r\n openCalendarOverlay,\r\n openMedlemsOverlay,\r\n joinGroup\r\n }\r\n }\r\n}","import {useStore} from 'vuex'\r\n\r\nexport default {\r\n name: \"FrivilligjobAside\",\r\n props: {\r\n jobId: {\r\n type: String,\r\n required: true\r\n },\r\n redirectAfterDeleteUrl: {\r\n type: String,\r\n required: false\r\n }\r\n },\r\n setup(props) {\r\n const store = useStore()\r\n const openDeleteOverlay = function (e) {\r\n if (!props.jobId) return false\r\n \r\n store.commit('main/set_page_overlay_content_data', {\r\n frivilligjobId: props.jobId,\r\n redirectAfterDeleteUrl: props.redirectAfterDeleteUrl\r\n })\r\n\r\n store.dispatch('main/openPageOverlay', {\r\n overlayContent: 'DeleteFrivilligjobOverlay',\r\n returnTarget: e.currentTarget\r\n })\r\n }\r\n\r\n return {\r\n openDeleteOverlay\r\n }\r\n }\r\n}","\r\n\r\n\r\n \r\n \r\n
\r\n\r\n
\r\n
\r\n
\r\n
{{ result.city }}
\r\n
\r\n\r\n
\r\n \r\n
\r\n
{{ result.timeConsumption }}
\r\n
\r\n \r\n
\r\n\r\n
\r\n
{{ result.title }}
\r\n\r\n
\r\n
\r\n
\r\n\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n
![\"\"]()
\r\n
\r\n
\r\n
\r\n
\r\n \r\n\r\n","import GetLabel from \"foundation/js/getLabel\"\r\nimport { ref, onMounted } from 'vue'\r\nimport {useStore} from 'vuex'\r\n\r\nexport default {\r\n name: \"FrivilligjobCard\",\r\n props: {\r\n result: {\r\n type: Object,\r\n required: true\r\n }\r\n },\r\n setup(props) {\r\n const store = useStore()\r\n\r\n const tags = ref([])\r\n const hasFetchedGruppeemner = ref(false)\r\n onMounted(() => {\r\n store\r\n .dispatch(\"frivilligjob/getGruppeemner\", props.result.id)\r\n .then(result => {\r\n tags.value = result\r\n hasFetchedGruppeemner.value = true\r\n })\r\n })\r\n\r\n return {\r\n tags,\r\n hasFetchedGruppeemner,\r\n getLabel: (labelKey, params) => GetLabel({ labelKey, labelCollection: 'FrivilligjobCard', params })\r\n }\r\n }\r\n}","import { render } from \"./FrivilligjobCard.vue?vue&type=template&id=0edeb298\"\nimport script from \"./FrivilligjobCard.vue?vue&type=script&lang=js\"\nexport * from \"./FrivilligjobCard.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"D:\\\\a\\\\1\\\\s\\\\frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","/**\r\n *\r\n * @param {function} callback\r\n */\r\nexport default function (callback) {\r\n const callbackList = Array.isArray(window.__onScrollCallbacks)\r\n ? window.__onScrollCallbacks\r\n : []\r\n\r\n callbackList.push(callback)\r\n window.__onScrollCallbacks = callbackList\r\n\r\n window.onscroll = function () {\r\n callbackList.forEach((callback) => callback())\r\n }\r\n}\r\n","/*\r\n\r\n Complex image / video module with resizing based on scroll\r\n\r\n ## Resizing\r\n ------------\r\n Resizing is handled via intersection observer set to 15 steps.\r\n At each step (when intersecting / image is in view) the size is modifed.\r\n Scrolling down = image gets wider\r\n Scrolling up = image gets narrower\r\n\r\n Min-width is collected from image information\r\n Max-width is the max width of the window\r\n\r\n ## opacity\r\n ------------\r\n Opacity is controlled via an on-scroll event.\r\n The reason is that the image is now position-fixed, and no more thresholds are firing.\r\n\r\n When the image is at top of the screen it gets fixed.\r\n Based on scroll distance, the opacity is calculated.\r\n\r\n All of this works in reverse as well.\r\n\r\n*/\r\n\r\nimport addScrollCallback from '../../foundation/js/addScrollCallback'\r\n\r\nconst el = '.kb-component--fullscreen-media'\r\n\r\nfunction buildThresholdList() {\r\n let thresholds = []\r\n let numSteps = 201\r\n\r\n for (let i = 1; i <= numSteps; i++) {\r\n let ratio = i / numSteps\r\n thresholds.push(ratio)\r\n }\r\n\r\n return thresholds\r\n}\r\n\r\n// this modifier takes a look at screen width vs height.\r\n// For 16:9 videos to properly display (without cropping) on 16:9 screens in full screen width.\r\n// if there is enough height, the media is displayed in full pagewidth.\r\nfunction maxWidthModifier() {\r\n const threshold16_9 = 1.8\r\n return document.documentElement.clientWidth /\r\n document.documentElement.clientHeight >\r\n threshold16_9\r\n ? 0.9\r\n : 1\r\n}\r\n\r\n// Value specifically requested per KBE0026-425\r\nconst MEDIA_FADE_FACTOR = 60\r\n\r\nexport default function () {\r\n const DOM = document.querySelectorAll(el)\r\n\r\n if (DOM && DOM.length) {\r\n DOM.forEach((FullscreenMediaDOM) => {\r\n // Remove the wrapping contentarea div\r\n FullscreenMediaDOM.parentElement.replaceWith(FullscreenMediaDOM)\r\n\r\n let currentScrollTopVal = window.scrollY\r\n let currentScrollTopValGeneral = window.scrollY\r\n let maxScreenWidth =\r\n document.documentElement.clientWidth * maxWidthModifier()\r\n let element = FullscreenMediaDOM.querySelector('#fullscreen-media')\r\n let minBoxWidth = element.getBoundingClientRect().width\r\n let boxHeight = element.getBoundingClientRect().height\r\n\r\n // censor element is the actual element that is being observed.\r\n // this way we have a container to apply a certain height to, and prevent the browser from getting the height calculations wrong.\r\n // this is what prevents flickering occuring in some cases.\r\n const sensor = FullscreenMediaDOM.querySelector(\r\n '#fullscreen-media-sensor'\r\n )\r\n sensor.style.height = '99vh'\r\n\r\n const elementDistanceFromDocumentTop = Math.round(\r\n window.scrollY + element.getBoundingClientRect().top\r\n )\r\n let scrolledFromTop =\r\n elementDistanceFromDocumentTop - window.scrollY > 0\r\n ? 0\r\n : (elementDistanceFromDocumentTop - window.scrollY) * -1\r\n\r\n // image resizing is handled inside the intersecton handler below.\r\n function handleIntersect(entries, observer) {\r\n entries.forEach((entry) => {\r\n const currentRatio = entry.intersectionRatio\r\n let scrollingDown = currentScrollTopVal < window.scrollY\r\n let scrollingUp = currentScrollTopVal > window.scrollY\r\n\r\n const animationControl = function (config) {\r\n config = Object.assign(\r\n {\r\n currentRatio: currentRatio,\r\n minBoxWidth: minBoxWidth,\r\n maxScreenWidth: maxScreenWidth,\r\n element: element,\r\n ratioModifierFunction: null\r\n },\r\n config\r\n )\r\n\r\n // calculating new max-width based on ratio\r\n let modifiedRatio = config.ratioModifierFunction()\r\n let newMaxWidth =\r\n config.minBoxWidth +\r\n (config.maxScreenWidth - config.minBoxWidth) *\r\n modifiedRatio\r\n\r\n config.element.style.maxWidth =\r\n currentRatio < 1\r\n ? newMaxWidth <= maxScreenWidth\r\n ? newMaxWidth + 'px'\r\n : maxScreenWidth + 'px'\r\n : maxScreenWidth + 'px'\r\n }\r\n\r\n if (scrollingDown) {\r\n animationControl({\r\n ratioModifierFunction: () => currentRatio\r\n })\r\n } else if (scrollingUp) {\r\n animationControl({\r\n ratioModifierFunction: () => currentRatio\r\n })\r\n }\r\n })\r\n }\r\n\r\n // image opacity is handled inside the on-scroll handler.\r\n addScrollCallback(() => {\r\n if (window.innerWidth < 769) {\r\n element.style.opacity = 1\r\n return true\r\n }\r\n\r\n const imageAtTopOfPage =\r\n element.getBoundingClientRect().top <= 0\r\n const currentOpacity =\r\n getComputedStyle(element).getPropertyValue('opacity')\r\n let newOpacity = currentOpacity\r\n\r\n let scrollingDown = currentScrollTopValGeneral < window.scrollY\r\n let scrollingUp = currentScrollTopValGeneral > window.scrollY\r\n scrolledFromTop =\r\n elementDistanceFromDocumentTop - window.scrollY > 0\r\n ? 0\r\n : (elementDistanceFromDocumentTop - window.scrollY) * -1\r\n\r\n if (imageAtTopOfPage && scrollingDown) {\r\n newOpacity =\r\n 1 -\r\n ((scrolledFromTop * 100) / boxHeight < 100\r\n ? (scrolledFromTop * 100) / boxHeight\r\n : 100) /\r\n MEDIA_FADE_FACTOR\r\n currentScrollTopValGeneral = window.scrollY\r\n } else if (imageAtTopOfPage && scrollingUp) {\r\n newOpacity =\r\n 1 -\r\n ((scrolledFromTop * 100) / boxHeight < 100\r\n ? (scrolledFromTop * 100) / boxHeight\r\n : 100) /\r\n MEDIA_FADE_FACTOR\r\n } else {\r\n newOpacity = 1\r\n }\r\n\r\n element.style.opacity = newOpacity\r\n currentScrollTopValGeneral = window.scrollY\r\n })\r\n\r\n // Set things up\r\n window.addEventListener(\r\n 'load',\r\n (event) => {\r\n const fullscreenMediaElement = document.querySelector(\r\n '#fullscreen-media-sensor'\r\n )\r\n\r\n let observer\r\n\r\n let options = {\r\n root: null,\r\n rootMargin: '0px',\r\n threshold: buildThresholdList()\r\n }\r\n\r\n observer = new IntersectionObserver(\r\n handleIntersect,\r\n options\r\n )\r\n observer.observe(fullscreenMediaElement)\r\n },\r\n false\r\n )\r\n })\r\n }\r\n}\r\n","\r\n\r\n\r\n \r\n \r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n","import { nextTick } from 'vue'\r\n\r\n\r\nexport const scrollToFirstError = async () => {\r\n await nextTick();\r\n\r\n const errorElement = document.querySelector(\".Form__Element__ValidationError, .validation-error\");\r\n\r\n if (errorElement) {\r\n const elementRect = errorElement.getBoundingClientRect();\r\n const offset = window.pageYOffset || document.documentElement.scrollTop;\r\n\r\n let viewportOffset = 100;\r\n\r\n if (errorElement.classList.contains(\"Form__Element__ValidationError\")) {\r\n viewportOffset = 150; \r\n }\r\n\r\n const top = elementRect.top + offset - viewportOffset;\r\n\r\n window.scrollTo({\r\n top,\r\n behavior: 'smooth',\r\n });\r\n\r\n if (typeof errorElement.focus === \"function\") {\r\n errorElement.setAttribute(\"tabindex\", \"-1\"); \r\n errorElement.focus({ preventScroll: true });\r\n }\r\n } else {\r\n console.warn(\"No validation error elements found.\");\r\n }\r\n};\r\n\r\n\r\n","import { ref, computed, onMounted} from 'vue'\r\nimport { scrollToFirstError } from '../../foundation/js/inputValidators/scrollToFirstError'\r\nimport { useStore } from 'vuex'\r\nimport emailValidator from '../../foundation/js/inputValidators/emailValidator'\r\nimport phoneValidator from '../../foundation/js/inputValidators/phoneValidator'\r\nimport nameValidator from '../../foundation/js/inputValidators/nameValidator'\r\nimport cprValidator from '../../foundation/js/inputValidators/cprValidator'\r\nimport textAreaValidator from '../../foundation/js/inputValidators/textAreaValidator'\r\nimport FormInputTextField from 'components/FormInputTextField/FormInputTextField.vue'\r\nimport TooltipComponent from 'components/TooltipComponent/TooltipComponent.vue'\r\nimport FormAddressField from 'components/FormAddressField/FormAddressField.vue'\r\n\r\nexport default {\r\n name: 'FundraiseForm',\r\n components: {\r\n FormInputTextField,\r\n TooltipComponent,\r\n FormAddressField\r\n },\r\n props: {\r\n fundraisingCampaignId: {\r\n type: String,\r\n required: true\r\n },\r\n cancelUrl: {\r\n type: String,\r\n required: false\r\n },\r\n isMindegave: {\r\n type: Boolean,\r\n required: false\r\n },\r\n draft: {\r\n type: Object,\r\n required: false\r\n },\r\n showUnsavedChangesWarning: {\r\n type: Boolean,\r\n required: false\r\n }\r\n\r\n },\r\n setup(props) {\r\n const store = useStore()\r\n const donationSettings = computed(\r\n () => store.state.fundraising.donation_settings\r\n )\r\n const pageId = computed(() => store.state.main.page_id)\r\n const getLabel = (labelKey) =>\r\n store.getters['labels/getLabel']({\r\n labelCollection: 'fundraiseForm',\r\n labelKey: labelKey\r\n })\r\n const isSubmitting = computed(\r\n () => store.state.fundraising.isSubmitting\r\n )\r\n\r\n const showUnsavedChangesWarning = props.showUnsavedChangesWarning;\r\n\r\n const handleBeforeUnload = (e) => {\r\n if (store.state.fundraising.isEditing && showUnsavedChangesWarning) {\r\n e.preventDefault();\r\n e.returnValue = ''; \r\n }\r\n };\r\n \r\n if (showUnsavedChangesWarning) {\r\n window.addEventListener('beforeunload', handleBeforeUnload);\r\n } else {\r\n window.removeEventListener('beforeunload', handleBeforeUnload);\r\n }\r\n\r\n const unSubmitted = ref(true)\r\n\r\n const firstNameInput = ref(props.draft?.contactFirstName ?? '')\r\n const firstNameInputFilled = computed(() => {\r\n return unSubmitted.value && !firstNameInput.value\r\n ? true\r\n : nameValidator(firstNameInput.value)\r\n })\r\n\r\n const lastNameInput = ref(props.draft?.contactLastName ?? '')\r\n const lastNameInputFilled = computed(() => {\r\n return unSubmitted.value && !lastNameInput.value\r\n ? true\r\n : nameValidator(lastNameInput.value)\r\n })\r\n\r\n const phoneInput = ref(props.draft?.mobilePhone ?? '')\r\n const phoneInputFilled = computed(() => {\r\n return unSubmitted.value ? true : phoneValidator(phoneInput.value)\r\n })\r\n\r\n const emailInput = ref(props.draft?.email ?? '')\r\n const emailInputFilled = computed(() => {\r\n return unSubmitted.value ? true : emailValidator(emailInput.value)\r\n })\r\n\r\n const cprNumberInput = ref(props.draft?.cprNo ?? '')\r\n const cprNumberInputFilled = computed(() => {\r\n return unSubmitted.value ? true : cprValidator(cprNumberInput.value)\r\n })\r\n\r\n const cvrNumberInput = ref(props.draft?.cvrNo ?? '')\r\n const cvrNumberInputFilled = computed(() => {\r\n return unSubmitted.value ? true : cvrNumberInput.value.length > 2\r\n })\r\n\r\n const addressLineInput = ref(props.draft?.addressLine1 ?? '')\r\n const addressLineInputFilled = computed(() => {\r\n return unSubmitted.value && !addressLineInput.value\r\n ? true\r\n : addressLineInput.value.length > 2 &&\r\n textAreaValidator(addressLineInput.value)\r\n })\r\n\r\n const postalCodeInput = ref(props.draft?.postalCode ?? '')\r\n const postalCodeInputFilled = computed(() => {\r\n return unSubmitted.value && !addressLineInput.value\r\n ? true\r\n : postalCodeInput.value.length === 4 &&\r\n textAreaValidator(addressLineInput.value)\r\n })\r\n\r\n const cityInput = ref(props.draft?.city ?? '')\r\n const cityInputFilled = computed(() => {\r\n return unSubmitted.value && !addressLineInput.value\r\n ? true\r\n : cityInput.value.length > 2 &&\r\n textAreaValidator(addressLineInput.value)\r\n })\r\n\r\n const paymentMethodInput = ref(props.draft?.paymentMethod ?? '')\r\n const paymentMethodInputFilled = computed(() => {\r\n return unSubmitted.value ? true : !!paymentMethodInput.value\r\n })\r\n\r\n const anonymousDonationInput = ref(props.draft?.isAnonymous ? '1' : '0')\r\n const isAnonymous = computed(() => anonymousDonationInput.value === '1')\r\n\r\n const customerTypeInput = ref(\r\n props.draft?.customerType == 0 ? 'Company' : 'Private'\r\n )\r\n const isPrivate = computed(() => customerTypeInput.value === 'Private')\r\n const isCompany = computed(() => customerTypeInput.value === 'Company')\r\n const companyNameInput = ref(props.draft?.companyName ?? '')\r\n\r\n const companyNameInputFilled = computed(() => {\r\n return unSubmitted.value && !companyNameInput.value ? true : textAreaValidator(companyNameInput.value)\r\n })\r\n\r\n const commentsInput = ref(props.draft?.comments ?? '')\r\n const commentsInputFilled = computed(() => {\r\n return unSubmitted.value && !commentsInput.value\r\n ? true\r\n : commentsInput.value\r\n ? textAreaValidator(commentsInput.value)\r\n : true\r\n })\r\n\r\n const taxDeductibleInput = ref(props.draft?.isTaxDeductible ?? false)\r\n\r\n const donationAmountInput = ref('')\r\n const donationAmountInputFilled = computed(() => {\r\n return unSubmitted.value ? true : donationAmountInput.value\r\n })\r\n\r\n const customDonationAmountInput = ref(donationAmountInput.value)\r\n const customDonationAmountInputIsValid = computed(() => {\r\n return unSubmitted.value && !forceCustomAmountValidation.value\r\n ? true\r\n : customDonationAmountInput.value >=\r\n (donationSettings.value.minimumAmount ?? 1)\r\n })\r\n\r\n const customDonation = ref(false)\r\n const forceCustomAmountValidation = ref(false)\r\n const valueinputfield = ref(null)\r\n const enableCustomDonation = async function () {\r\n forceCustomAmountValidation.value = true\r\n customDonation.value = true\r\n donationAmountInput.value = ''\r\n await nextTick()\r\n valueinputfield.value.focus()\r\n }\r\n\r\n const disableCustomDonation = function () {\r\n customDonation.value = false\r\n forceCustomAmountValidation.value = false\r\n }\r\n\r\n const addressIsRequired = computed(\r\n () => isCompany.value || props.isMindegave\r\n )\r\n const cprIsRequired = computed(\r\n () => isPrivate.value && taxDeductibleInput.value\r\n )\r\n const cvrIsRequired = computed(() => isCompany.value)\r\n\r\n const inputIsValid = function () {\r\n var addressFilled =\r\n addressLineInputFilled.value &&\r\n postalCodeInputFilled.value &&\r\n cityInputFilled.value\r\n\r\n return enableCustomDonation.value\r\n ? customDonationAmountInputIsValid.value\r\n : true &&\r\n (isPrivate.value || companyNameInputFilled.value) &&\r\n firstNameInputFilled.value &&\r\n lastNameInputFilled.value &&\r\n phoneInputFilled.value &&\r\n emailInputFilled.value &&\r\n commentsInputFilled.value &&\r\n (!cprIsRequired.value || cprNumberInputFilled.value) &&\r\n (!cvrIsRequired.value || cvrNumberInputFilled.value) &&\r\n (!addressIsRequired.value || addressFilled) &&\r\n paymentMethodInputFilled.value\r\n }\r\n\r\n onMounted(() => {\r\n if (props.draft?.totalPrice) {\r\n var draftPreset = donationSettings.value.presets.find(\r\n (val) => val == props.draft?.totalPrice\r\n )\r\n if (draftPreset) {\r\n donationAmountInput.value = props.draft?.totalPrice\r\n } else {\r\n customDonationAmountInput.value = props.draft?.totalPrice\r\n forceCustomAmountValidation.value = true\r\n customDonation.value = true\r\n }\r\n } else {\r\n donationAmountInput.value =\r\n props.draft?.totalPrice ??\r\n donationSettings.value.presets[\r\n donationSettings.value.defaultPreset\r\n ]\r\n }\r\n })\r\n\r\n const onSubmit = function () {\r\n unSubmitted.value = false\r\n if (!inputIsValid()) {\r\n scrollToFirstError('validation-error')\r\n return false;\r\n }\r\n\r\n const donationPayload = {\r\n pageId: pageId.value,\r\n paymentMethod: paymentMethodInput.value,\r\n totalPrice:\r\n customDonationAmountInput.value ||\r\n donationAmountInput.value,\r\n addressLine1: addressIsRequired.value\r\n ? addressLineInput.value\r\n : null,\r\n postalCode: addressIsRequired.value\r\n ? postalCodeInput.value\r\n : null,\r\n city: addressIsRequired.value ? cityInput.value : null,\r\n mobilePhone: phoneInput.value,\r\n email: emailInput.value,\r\n companyName: companyNameInput.value,\r\n contactFirstName: firstNameInput.value,\r\n contactLastName: lastNameInput.value,\r\n cprNo: cprIsRequired ? cprNumberInput.value : null,\r\n cvrNo: cvrIsRequired ? cvrNumberInput.value : null,\r\n comments: commentsInput.value ? commentsInput.value : null,\r\n isTaxDeductible: taxDeductibleInput.value,\r\n isAnonymous: isAnonymous.value,\r\n customerType: customerTypeInput.value,\r\n referrer: document.referrer\r\n }\r\n\r\n store.dispatch('fundraising/submitPersonalDonation2', {\r\n fundraisingCampaignId: props.fundraisingCampaignId,\r\n payload: donationPayload\r\n })\r\n\r\n console.log('donationPayload', donationPayload)\r\n }\r\n\r\n const showCpr = computed(\r\n () => isPrivate.value && taxDeductibleInput.value\r\n )\r\n const showAddress = computed(() => isCompany.value || props.isMindegave)\r\n\r\n return {\r\n getLabel,\r\n donationSettings,\r\n companyNameInput,\r\n firstNameInput,\r\n lastNameInput,\r\n phoneInput,\r\n emailInput,\r\n addressLineInput,\r\n postalCodeInput,\r\n cityInput,\r\n cprNumberInput,\r\n cvrNumberInput,\r\n paymentMethodInput,\r\n anonymousDonationInput,\r\n isAnonymous,\r\n commentsInput,\r\n taxDeductibleInput,\r\n companyNameInputFilled,\r\n firstNameInputFilled,\r\n lastNameInputFilled,\r\n phoneInputFilled,\r\n emailInputFilled,\r\n addressLineInputFilled,\r\n postalCodeInputFilled,\r\n cityInputFilled,\r\n cprNumberInputFilled,\r\n cvrNumberInputFilled,\r\n paymentMethodInputFilled,\r\n donationAmountInput,\r\n donationAmountInputFilled,\r\n customDonation,\r\n customDonationAmountInput,\r\n customDonationAmountInputIsValid,\r\n commentsInputFilled,\r\n enableCustomDonation,\r\n disableCustomDonation,\r\n cancelUrl: props.cancelUrl,\r\n onSubmit,\r\n showCpr,\r\n isSubmitting,\r\n valueinputfield,\r\n customerTypeInput,\r\n isPrivate,\r\n isCompany,\r\n showAddress\r\n }\r\n }\r\n}\r\n","import { render } from \"./FundraiseForm.vue?vue&type=template&id=302cadcc\"\nimport script from \"./FundraiseForm.vue?vue&type=script&lang=js\"\nexport * from \"./FundraiseForm.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"D:\\\\a\\\\1\\\\s\\\\frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\r\n\r\n\r\n\r\n \r\n\r\n","import { useStore } from 'vuex'\r\n\r\nexport default {\r\n name: \"FundraisingAsideVue\",\r\n props: {\r\n isAuthenticated: {\r\n type: Boolean,\r\n required: false\r\n },\r\n creatorProfile: {\r\n type: Object,\r\n required: false\r\n },\r\n ownsPersonalFundraising: {\r\n type: Boolean,\r\n required: false\r\n },\r\n title: {\r\n type: String,\r\n required: false\r\n },\r\n detailItems: {\r\n type: Array,\r\n required: false\r\n },\r\n loginLogoutButton: {\r\n type: Object,\r\n required: false\r\n },\r\n editFundraising: {\r\n type: Object,\r\n required: false\r\n },\r\n qrCode: {\r\n type: Object,\r\n required: false\r\n },\r\n\r\n },\r\n \r\n setup(props) {\r\n const store = useStore()\r\n\r\n const openPageOverlay = function(e) {\r\n\r\n store.commit('main/set_page_overlay_content_data', {\r\n fundraisingId: props.qrCode.fundraisingId\r\n })\r\n \r\n store.dispatch('main/openPageOverlay', {\r\n overlayContent: \"FundraisingQrCodeOverlay\",\r\n returnTarget: e.currentTarget\r\n })\r\n }\r\n \r\n return {\r\n openPageOverlay\r\n }\r\n }\r\n}","import { render } from \"./FundraisingAsideVue.vue?vue&type=template&id=d1495214\"\nimport script from \"./FundraisingAsideVue.vue?vue&type=script&lang=js\"\nexport * from \"./FundraisingAsideVue.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"D:\\\\a\\\\1\\\\s\\\\frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\r\n\r\n\r\n \r\n \r\n
\r\n \r\n \r\n {{ result.name }}
\r\n \r\n
{{ current }}
\r\n
\r\n
Indsamlingsmål: {{ target }}
\r\n
\r\n \r\n \r\n\r\n","import { computed } from 'vue'\r\n\r\nexport default {\r\n name: 'FundraisingCard',\r\n props: {\r\n result: {\r\n type: Object,\r\n required: true,\r\n default: {\r\n imgUrl: '',\r\n name: '',\r\n target: '',\r\n current: ''\r\n }\r\n }\r\n },\r\n setup(props) {\r\n // new Intl.NumberFormat('de-DE', { style: 'currency', currency: 'EUR' }).format(number)\r\n\r\n const target = computed(() =>\r\n new Intl.NumberFormat('da-DK', {\r\n style: 'currency',\r\n currency: 'DKK',\r\n maximumFractionDigits: 0\r\n }).format(props.result.target)\r\n )\r\n const current = computed(() =>\r\n new Intl.NumberFormat('da-DK', {\r\n style: 'currency',\r\n currency: 'DKK',\r\n maximumFractionDigits: 0\r\n }).format(props.result.current)\r\n )\r\n const progress = computed(() => {\r\n // Cap progress at 100%\r\n const rawProgress =\r\n (props.result.current * 100) / props.result.target\r\n return Math.min(rawProgress, 100)\r\n })\r\n\r\n return {\r\n target,\r\n current,\r\n progress\r\n }\r\n }\r\n}\r\n","import { render } from \"./FundraisingCard.vue?vue&type=template&id=ad8bbae6\"\nimport script from \"./FundraisingCard.vue?vue&type=script&lang=js\"\nexport * from \"./FundraisingCard.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"D:\\\\a\\\\1\\\\s\\\\frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","export default {\r\n name: 'FundraisingHero',\r\n setup() {}\r\n}\r\n","\r\n\r\n\r\n \r\n\r\n
\r\n\r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n
\r\n\r\n","import { onMounted, computed } from 'vue'\r\nimport { useStore } from 'vuex'\r\nimport onTransitionendCallback from 'components/PageOverlay/methods/onTransitionendCallback'\r\nimport GetLabel from \"foundation/js/getLabel\"\r\n\r\nexport default {\r\n name: \"FVLConfirmDeleteProfile\",\r\n setup() {\r\n const store = useStore()\r\n\r\n const isSubmitting = computed(()=> store.state.frivillige.is_submitting)\r\n const continueUrl = computed(() => store.state.main.page_overlay_content_data.continueUrl)\r\n const userProfileId = computed(() => store.state.main.page_overlay_content_data.userProfileId)\r\n \r\n let first, last, close\r\n\r\n const tabTrap = function (e) {\r\n if (e.shiftKey && e.target.dataset.order === 'first') {\r\n e.preventDefault()\r\n close.focus()\r\n }\r\n\r\n if (!e.shiftKey && e.target.dataset.order === 'last') {\r\n e.preventDefault()\r\n close.focus()\r\n }\r\n\r\n if (!e.shiftKey && !e.target.dataset.order) {\r\n e.preventDefault()\r\n first.focus()\r\n }\r\n }\r\n\r\n const confirmAction = function () {\r\n isSubmitting.value = true\r\n store.dispatch('frivilligprofil/deleteFrivilligprofil', { \r\n pageId: store.state.main.page_id,\r\n id: userProfileId.value,\r\n continueUrl: continueUrl.value \r\n })\r\n isSubmitting.value = false\r\n }\r\n\r\n const cancelAction = function () {\r\n store.dispatch('main/closePageOverlay')\r\n }\r\n\r\n onMounted(() => {\r\n first = document.querySelector('.kb-button[data-order=\"first\"]')\r\n last = document.querySelector('.kb-button[data-order=\"last\"]')\r\n close = document.querySelector('.kb-page-overlay__close')\r\n onTransitionendCallback(\r\n {\r\n opening() {\r\n first.focus()\r\n }\r\n },\r\n { persistent: true }\r\n )\r\n })\r\n\r\n return {\r\n isSubmitting,\r\n continueUrl,\r\n cancelAction,\r\n confirmAction,\r\n tabTrap,\r\n getLabel: (labelKey, params) => GetLabel({ labelKey, labelCollection: 'FVLConfirmDeleteProfile', params })\r\n \r\n }\r\n }\r\n \r\n}","import { render } from \"./FVLConfirmDeleteProfile.vue?vue&type=template&id=e395ca22\"\nimport script from \"./FVLConfirmDeleteProfile.vue?vue&type=script&lang=js\"\nexport * from \"./FVLConfirmDeleteProfile.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"D:\\\\a\\\\1\\\\s\\\\frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\r\n\r\n\r\n \r\n \r\n \r\n
{{ result.numberOfImages }} {{ getLabel('imagesLabel') }}
\r\n
{{ result.title }}
\r\n
{{ result.description }}
\r\n
{{ result.numberOfImages }} {{ getLabel('imagesLabel') }}
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n {{ result.numberOfImages }} {{ getLabel('imagesLabel') }}\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n\r\n","import { useStore } from \"vuex\"\r\n\r\nexport default {\r\n name: \"GalleryCard\",\r\n props: {\r\n result: {\r\n type: Object,\r\n required: true,\r\n default: {}\r\n }\r\n },\r\n setup() {\r\n const store = useStore()\r\n\r\n return {\r\n getLabel: (labelKey) =>\r\n store.getters[\"labels/getLabel\"]({\r\n labelCollection: \"GalleryCard\",\r\n labelKey,\r\n }),\r\n }\r\n }\r\n}","import { render } from \"./GalleryCard.vue?vue&type=template&id=c22e2384\"\nimport script from \"./GalleryCard.vue?vue&type=script&lang=js\"\nexport * from \"./GalleryCard.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"D:\\\\a\\\\1\\\\s\\\\frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\r\n\r\n\r\n \r\n \r\n\r\n \r\n \r\n {{ getLabel('searchTitle') }}\r\n \r\n {{ searchTitleCountLabel }}\r\n \r\n
\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n - \r\n \r\n
\r\n \r\n \r\n
\r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n\r\n \r\n \r\n
\r\n {{group.month}}\r\n
{{ group.year }}
\r\n
\r\n
\r\n \r\n \r\n - \r\n \r\n
\r\n \r\n \r\n - \r\n \r\n
\r\n\r\n \r\n - \r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n\r\n \r\n \r\n \r\n \r\n - \r\n \r\n
\r\n \r\n \r\n - \r\n \r\n
\r\n\r\n \r\n - \r\n \r\n
\r\n \r\n \r\n
\r\n \r\n\r\n \r\n\r\n \r\n Viser {{ resultCount }} ud af {{ totalCount }} {{getLabel('resultTypeTitle')}} \r\n \r\n \r\n \r\n
\r\n\r\n \r\n\r\n \r\n \r\n\r\n","\r\n\r\n\r\n \r\n \r\n\r\n
\r\n
\r\n {{ result.date }}
\r\n \r\n
\r\n \r\n
\r\n {{ crumb }}\r\n \r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n {{ result.summary }}
\r\n \r\n \r\n {{ result.summary }}
\r\n \r\n \r\n
\r\n \r\n \r\n
\r\n\r\n
\r\n \r\n
\r\n
\r\n
![\"\"]()
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n \r\n
\r\n\r\n","import { render } from \"./SearchResultCard.vue?vue&type=template&id=3c992bfb\"\nimport script from \"./SearchResultCard.vue?vue&type=script&lang=js\"\nexport * from \"./SearchResultCard.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"D:\\\\a\\\\1\\\\s\\\\frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\r\n\r\n\r\n \r\n \r\n
![\"\"]()
\r\n
\r\n \r\n
\r\n
\r\n \r\n - \r\n \r\n \r\n
{{ detail.name }}
\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n\r\n","import { render } from \"./RecipeCard.vue?vue&type=template&id=e5ccae34\"\nimport script from \"./RecipeCard.vue?vue&type=script&lang=js\"\nexport * from \"./RecipeCard.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"D:\\\\a\\\\1\\\\s\\\\frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\r\n\r\n\r\n \r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n {{ result.iconText }}\r\n
\r\n
\r\n \r\n
![\"\"]()
\r\n
\r\n\r\n \r\n
\r\n
\r\n {{ result.smallTitle }}\r\n
\r\n
{{ result.title }}
\r\n
\r\n
{{ result.location }}
\r\n
{{ result.street }}
\r\n
{{ result.city }}
\r\n
\r\n {{ result.locationInfo }}\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n - {{ result.phoneLabel }}
\r\n - {{ result.phoneNumber }}
\r\n - {{ result.emailLabel }}
\r\n - \r\n {{\r\n result.emailAddress\r\n }}\r\n
\r\n - {{ result.daysOne }}
\r\n - {{ result.timeSlotOne }}
\r\n - {{ result.daysTwo }}
\r\n - {{ result.timeSlotTwo }}
\r\n
\r\n
\r\n
\r\n \r\n\r\n","import imageTransform from 'foundation/js/imageTransformation/imageTransform'\r\nimport { locationCard_5_4 } from 'foundation/js/imageTransformation/imagePresets'\r\n\r\nexport default {\r\n name: 'LocationCard',\r\n props: {\r\n result: {\r\n type: Object,\r\n required: true\r\n }\r\n },\r\n setup() {\r\n const transformImage = (imageUrl) =>\r\n imageTransform(imageUrl, locationCard_5_4)\r\n return { transformImage }\r\n }\r\n}\r\n","import { render } from \"./LocationCard.vue?vue&type=template&id=0bb866fe\"\nimport script from \"./LocationCard.vue?vue&type=script&lang=js\"\nexport * from \"./LocationCard.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"D:\\\\a\\\\1\\\\s\\\\frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\r\n\r\n\r\n \r\n \r\n \r\n
\r\n \r\n\r\n","import { ref } from 'vue'\r\nexport default {\r\n name: 'SortDropdown',\r\n props: {\r\n config: {\r\n type: Object,\r\n required: true\r\n },\r\n guid: {\r\n type: String,\r\n required: true\r\n },\r\n sortingHandler: {\r\n type: Function,\r\n required: true\r\n }\r\n },\r\n setup() {\r\n const sortingValue = ref('')\r\n\r\n return {\r\n sortingValue\r\n }\r\n }\r\n}\r\n","import { render } from \"./SortDropdown.vue?vue&type=template&id=3cf4baf6\"\nimport script from \"./SortDropdown.vue?vue&type=script&lang=js\"\nexport * from \"./SortDropdown.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"D:\\\\a\\\\1\\\\s\\\\frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\r\n\r\n\r\n \r\n \r\n
\r\n \r\n\r\n \r\n\r\n {{ result.summary }}
\r\n\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n \r\n
\r\n \r\n\r\n","import { computed, ref, onMounted } from 'vue'\r\n\r\nexport default {\r\n name: 'SimpleCard',\r\n props: {\r\n result: {\r\n type: Object,\r\n required: true\r\n }\r\n },\r\n setup(props) {\r\n\r\n const isInternalLink = computed(() => \r\n props.result.isInternalLink \r\n ?? props.result.url?.startsWith(location.origin)\r\n )\r\n\r\n return {\r\n isInternalLink: isInternalLink\r\n }\r\n }\r\n}\r\n","import { render } from \"./SimpleCard.vue?vue&type=template&id=2abda490\"\nimport script from \"./SimpleCard.vue?vue&type=script&lang=js\"\nexport * from \"./SimpleCard.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"D:\\\\a\\\\1\\\\s\\\\frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { useStore } from 'vuex'\r\nimport { computed, ref, onMounted } from 'vue'\r\nimport deepClone from 'foundation/js/deepClone'\r\nimport SearchResultCard from './subcomponents/SearchResultCard'\r\nimport RecipeCard from './subcomponents/RecipeCard'\r\nimport ActivityCard from '../ActivityCard/ActivityCard.vue'\r\nimport FrivilligjobCard from '../FrivilligjobCard/FrivilligjobCard.vue'\r\nimport LocationCard from '../LocationCard/LocationCard.vue'\r\nimport SortDropdown from '../SortDropdown/SortDropdown.vue'\r\nimport FundraisingCard from '../FundraisingCard/FundraisingCard.vue'\r\nimport DonationCard from '../DonationCard/DonationCard.vue'\r\nimport SimpleCard from '../SimpleCard/SimpleCard.vue'\r\nimport SpotCard from '../SpotCard/SpotCard.vue'\r\nimport GalleryCard from '../GalleryCard/GalleryCard.vue'\r\nimport SpotCardGrid from '../SpotCardGrid/SpotCardGrid.vue'\r\nimport eventDataAdapter from './subcomponents/eventDataAdapter'\r\n\r\nconst sortOptions = {\r\n fundraising : {\r\n \"name\":\"Sorter\",\r\n \"options\": [\r\n {\r\n \"name\":\"Senest oprettet\",\r\n \"handler\": \"latest\"\r\n },\r\n {\r\n \"name\":\"Flest indsamlet penge\",\r\n \"handler\": \"highestCollected\"\r\n \r\n }\r\n ]\r\n }\r\n}\r\n\r\nconst urlMap = {\r\n counselling: 'COUNSELLING_SEARCH',\r\n events: 'EVENT_SEARCH',\r\n fundraising: 'FUNDRAISING_SEARCH',\r\n donations: 'DONATION_SEARCH',\r\n gallery: 'GALLERY_SEARCH',\r\n patientAssociations: 'PATIENT_ASSOCIATIONS_SEARCH',\r\n jobs: 'FRIVILLIGJOB_SEARCH',\r\n}\r\n\r\nconst getUrl = function(type){\r\n return urlMap[type] ?? 'GENERAL_SEARCH'\r\n}\r\n\r\nconst generalSearch = function(props,store){\r\n store.dispatch('search/initSearchScope',{\r\n guid:props.guid,\r\n firstPageSize:props.firstPageSize,\r\n showMorePageSize:props.showMorePageSize,\r\n url: process.env[getUrl(props.type)]\r\n })\r\n\r\n const inputText = new URLSearchParams(document.location.search).get('q')\r\n const skip = new URLSearchParams(document.location.search).get('skip')\r\n const take = new URLSearchParams(document.location.search).get('take') ?? props.take\r\n store.dispatch('search/performZeroSearch',{\r\n guid:props.guid\r\n })\r\n \r\n store.dispatch('search/performSearch',{\r\n guid:props.guid,\r\n query:inputText,\r\n skip,\r\n take\r\n })\r\n}\r\n\r\nexport default {\r\n name: \"GeneralSearch\",\r\n components: {SearchResultCard,RecipeCard,ActivityCard, FrivilligjobCard, LocationCard, FundraisingCard,SortDropdown, DonationCard, GalleryCard, SimpleCard, SpotCard, SpotCardGrid},\r\n props:{\r\n guid: {\r\n type: String,\r\n required:true\r\n },\r\n type: {\r\n type: String,\r\n required:false,\r\n default: \"general\"\r\n },\r\n firstPageSize: {\r\n type: Number,\r\n required:false\r\n },\r\n showMorePageSize: {\r\n type: Number,\r\n required:false\r\n },\r\n spotCardData: {\r\n type: Object,\r\n required:false\r\n },\r\n hideNoResults: {\r\n type: Boolean,\r\n required:false,\r\n default:false\r\n },\r\n avoidSetQueryInUrl:\r\n {\r\n type: Boolean,\r\n required:false,\r\n default: false\r\n },\r\n isMultisearch:\r\n {\r\n type: Boolean,\r\n required:false,\r\n default: false\r\n }\r\n },\r\n setup(props) {\r\n const inputText = computed(()=>store.state.search.queries[props.guid] ?? \"\")\r\n const store = useStore()\r\n const results = computed(()=> props.type === 'events' \r\n ? eventDataAdapter(deepClone(store.state.search.results[props.guid] ?? [])) \r\n : deepClone(store.state.search.results[props.guid] ?? []))\r\n const totalCount = computed(()=> store.state.search.scoped_total[props.guid] ?? 0)\r\n const tags = computed(()=> store.getters['search/selectedTags'](props.guid) ?? []) \r\n const showSpinner = computed(()=> store.state.search.search_inprogress[props.guid] )\r\n const searchLabelCollection = props.isMultisearch ? `generalSearch-${props.guid}` : \"generalSearch\"\r\n const getLabel = (labelKey)=> store.getters['labels/getLabel']({labelCollection: searchLabelCollection, labelKey: labelKey})\r\n const existLabel = (labelKey)=> store.getters['labels/existLabel']({labelCollection: searchLabelCollection, labelKey: labelKey})\r\n\r\n const getMoreResults = function(){\r\n store.dispatch('search/performMoreSearch',{\r\n guid:props.guid\r\n })\r\n }\r\n\r\n onMounted(()=>{\r\n if (props.avoidSetQueryInUrl) {\r\n store.commit('search/set_replaceQueryInUrl', false)\r\n }\r\n\r\n if(props.guid === 'dictionarySearch'){\r\n store.dispatch('search/initSearchScope',{\r\n guid:props.guid,\r\n url: null,\r\n })\r\n } else {\r\n generalSearch(props,store)\r\n }\r\n })\r\n\r\n const getResultImageRatio = function(result) {\r\n if (!result || !result.documentType) return null\r\n\r\n return {\r\n 'NewsPage': '3-2',\r\n 'LongreadPage': '3-2',\r\n 'PodcastPage': '1-1',\r\n 'RecipePage': '4-5',\r\n 'ReportPage': 'A4'\r\n }[result.documentType] ?? null\r\n }\r\n\r\n const getResultImageType = function(result) {\r\n if (!result || !result.documentType) return null\r\n\r\n return {\r\n 'PodcastPage': 'podcast',\r\n 'RecipePage': 'recipe',\r\n 'ReportPage': 'report'\r\n }[result.documentType] ?? null\r\n }\r\n\r\n const clearFilterOnTag = function(tag) {\r\n store.dispatch('search/performSearch',{\r\n guid:props.guid,\r\n query: inputText.value,\r\n facet: tag\r\n })\r\n }\r\n\r\n const sortingHandler = function(sorting){\r\n store.dispatch('search/performSearch',{\r\n guid:props.guid,\r\n sorting\r\n })\r\n }\r\n\r\n const canShowMore = computed(()=>store.getters['search/canShowMore'](props.guid))\r\n\r\n // if list is type with grid, class placed on parent in order to hit meta-top-container too\r\n const gridTypeList = () => {\r\n // recipe grid has unique 2 col mobile grid, hence modifier\r\n if (props.type === 'recipe' ) {\r\n return 'kb-grid-list kb-grid-list--recipe'\r\n } else if (props.type === 'counselling' || 'fundraising' ) {\r\n return 'kb-grid-list'\r\n } \r\n }\r\n\r\n const displayProperties = {\r\n 'news': {card: 'SearchResultCard', grid: false, date: true, showCardTitle: true, summary: {hidable: true}, image: true, breadcrumbs: false},\r\n 'recipe': {card: 'RecipeCard', grid: true, listType:'4col'},\r\n 'events': {card: 'ActivityCard', grid: false, listType: 'fixed-header'},\r\n 'donations': {card: 'DonationCard', grid: false, hideTotalCount: true, listType:'content-width'},\r\n 'gallery': {card: 'GalleryCard', grid: false, hideTotalCount: false},\r\n 'fundraising': {card: 'FundraisingCard', grid: true, listType:'3col', sortOptions:sortOptions['fundraising']},\r\n 'counselling': {card: 'LocationCard', grid: true, hideTotalCount: true, hideTags: true, showSearchTitleCount: true, listType:'3col'},\r\n 'patientAssociations': {card: 'SimpleCard', grid: true, listType:'3col'},\r\n 'documentList': {card: 'SimpleCard', grid: true, listType:'3col'},\r\n 'jobs': {card: 'FrivilligjobCard', grid: false, hideTotalCount: false, hideTags: false, showSearchTitleCount: true, showCtaButton: true },\r\n\r\n }[props.type] ?? {card: 'SearchResultCard', grid: false, date: false, showCardTitle: true, summary: true, image: true, breadcrumbs: true}\r\n\r\n const displayModifications = computed (() => {\r\n \r\n const grid = 'kb-general-search__results--grid'\r\n const list = 'kb-general-search__results--list'\r\n const gridModifications = (displayProperties.grid && displayProperties.listType) ? displayProperties.listType ? grid + '-' + displayProperties.listType : '' : null\r\n const listModifications = (!displayProperties.grid && displayProperties.listType) ? list + '-' + displayProperties.listType : null\r\n\r\n return gridModifications\r\n ? gridModifications\r\n : listModifications\r\n ? listModifications\r\n : ''\r\n })\r\n\r\n // Flatten the results in case the list is fixed-header, where the results are grouped in categories.\r\n // This was we can make sure to place the spot card in the correct position\r\n const flatResults = computed(() => {\r\n if (displayProperties.listType === 'fixed-header') {\r\n return Object.values(results.value).flatMap(month => month.entries)\r\n }\r\n\r\n return results.value\r\n })\r\n\r\n const resultCount = computed(()=>{\r\n if (displayProperties.listType === 'fixed-header') {\r\n let totalCount = 0\r\n \r\n for (const key in results.value) {\r\n if (results.value.hasOwnProperty(key)) {\r\n const array = results.value[key].entries\r\n totalCount += array.length\r\n }\r\n }\r\n\r\n return totalCount\r\n }\r\n\r\n return results.value.length\r\n })\r\n\r\n const totalCountLabel = computed(() => getLabel('resultCountTitle').replace('{}', totalCount.value))\r\n const searchTitleCountLabel = computed(() => getLabel('searchTitleCount')?.replace('{}', totalCount.value))\r\n\r\n const spotCard = displayProperties.grid ? SpotCardGrid : SpotCard\r\n const spotCardIndex = computed(()=> Math.min(props.spotCardData.position - 1, totalCount.value))\r\n \r\n const shouldRenderSpotCard = function(result, isLastRender) {\r\n if (!props.spotCardData) return false\r\n\r\n const realIndex = flatResults.value.findIndex(r => r === result)\r\n\r\n if (!isLastRender) {\r\n return realIndex === spotCardIndex.value\r\n }\r\n\r\n return (realIndex === resultCount.value - 1) && (spotCardIndex.value >= resultCount.value)\r\n }\r\n\r\n return {\r\n displayProperties,\r\n results,\r\n resultCount,\r\n tags,\r\n getLabel,\r\n getMoreResults,\r\n clearFilterOnTag,\r\n gridTypeList,\r\n showSpinner,\r\n totalCount,\r\n totalCountLabel,\r\n searchTitleCountLabel,\r\n canShowMore,\r\n sortingHandler,\r\n displayModifications,\r\n spotCard,\r\n spotCardIndex,\r\n shouldRenderSpotCard,\r\n canShowMore,\r\n getResultImageRatio,\r\n getResultImageType,\r\n existLabel\r\n }\r\n }\r\n}\r\n","export default function (input) {\r\n const result = {};\r\n\r\n input.forEach((hit) => {\r\n const key = `${hit.year}-${hit.monthName[0]}`;\r\n\r\n if (!result[key]) {\r\n result[key] = { month: hit.monthName[0], year: hit.year, entries: [] };\r\n }\r\n\r\n result[key].entries.push(hit);\r\n });\r\n\r\n const sortedResult = Object.values(result).sort((a, b) => {\r\n if (a.year === b.year) {\r\n return new Date(`${a.month} 1, 2000`) - new Date(`${b.month} 1, 2000}`);\r\n }\r\n return a.year - b.year;\r\n });\r\n\r\n return sortedResult;\r\n}\r\n","import { render } from \"./GeneralSearch.vue?vue&type=template&id=328b963e\"\nimport script from \"./GeneralSearch.vue?vue&type=script&lang=js\"\nexport * from \"./GeneralSearch.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"D:\\\\a\\\\1\\\\s\\\\frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { createApp } from 'vue'\r\nimport GeneralSearch from './GeneralSearch'\r\n\r\nconst el = '.kb-component--general-search'\r\nconst DOMs = document.querySelectorAll(el)\r\n\r\nexport default function (Store) {\r\n if (DOMs && DOMs.length) {\r\n DOMs.forEach((DOM) => {\r\n const guid = DOM.dataset.guid\r\n const type = DOM.dataset.type\r\n const firstPageSize = parseInt(DOM.dataset.firstPageSize) ?? 10\r\n const showMorePageSize =\r\n parseInt(DOM.dataset.showMorePageSize) ?? 10\r\n const spotCardData = DOM.dataset.spotCard\r\n ? JSON.parse(DOM.dataset.spotCard)\r\n : null\r\n const hideNoResults = DOM.hasAttribute('hide-no-results')\r\n const avoidSetQueryInUrl = DOM.hasAttribute('avoid-set-query-in-url')\r\n const isMultisearch = DOM.hasAttribute('is-multisearch')\r\n const component = createApp(GeneralSearch,{\r\n guid,\r\n type,\r\n firstPageSize,\r\n showMorePageSize,\r\n spotCardData,\r\n hideNoResults,\r\n avoidSetQueryInUrl,\r\n isMultisearch\r\n }).use(Store)\r\n\r\n const mountOn = DOM.id ? `#${DOM.id}` : el\r\n component.mount(mountOn)\r\n })\r\n }\r\n}\r\n","\r\n\r\n\r\n \r\n \r\n {{ content.title }}
\r\n {{ content.description }}
\r\n \r\n \r\n
\r\n \r\n \r\n {{ memberCount }} {{ getLabel('membersLabel') }}\r\n \r\n \r\n \r\n
\r\n \r\n \r\n {{ postsCount }} {{ getLabel('postsLabel') }}\r\n \r\n \r\n \r\n
\r\n \r\n \r\n","import { useStore } from \"vuex\"\r\nimport { computed, onMounted } from 'vue'\r\n\r\nexport default {\r\n name: \"GroupCard\",\r\n props: {\r\n content: {\r\n type: Object,\r\n default: {},\r\n }\r\n },\r\n setup(props) {\r\n const store = useStore()\r\n\r\n const groupId = props.content.groupId ?? props.content.id\r\n\r\n const statistics = computed(() => store.state.forum.group_statistics[groupId])\r\n const memberCount = computed(() => statistics.value?.memberCount)\r\n const postsCount = computed(() => statistics.value?.postsCount)\r\n \r\n onMounted(() => {\r\n store.dispatch(\"forum/getGroupStatistics\", {\r\n groupId: groupId\r\n })\r\n })\r\n\r\n const getLabel = (labelKey) =>\r\n store.getters[\"labels/getLabel\"]({\r\n labelCollection: \"GroupCard\",\r\n labelKey,\r\n })\r\n\r\n return {\r\n memberCount,\r\n postsCount,\r\n getLabel\r\n }\r\n }\r\n}","import { render } from \"./GroupCard.vue?vue&type=template&id=2ee7212b\"\nimport script from \"./GroupCard.vue?vue&type=script&lang=js\"\nexport * from \"./GroupCard.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"D:\\\\a\\\\1\\\\s\\\\frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\r\n\r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n - \r\n \r\n
\r\n \r\n\r\n - \r\n \r\n
\r\n \r\n\r\n results.length\">\r\n - \r\n \r\n
\r\n \r\n
\r\n\r\n\r\n 0\">\r\n \r\n {{ getLabel('resultOutForTitle', [results.length, totalAmount]) }}\r\n \r\n \r\n \r\n \r\n
\r\n\r\n \r\n \r\n \r\n\r\n \r\n\r\n \r\n\r\n","import { ref, computed, onMounted, watch, nextTick } from \"vue\"\r\nimport { useStore } from \"vuex\"\r\nimport GroupCard from \"../GroupCard/GroupCard.vue\"\r\nimport SpotCardGrid from \"../SpotCardGrid/SpotCardGrid.vue\"\r\nimport GetLabel from \"foundation/js/getLabel\"\r\n\r\nexport default {\r\n name: \"GroupSearchResult\",\r\n components: {\r\n GroupCard,\r\n SpotCardGrid\r\n },\r\n props: {\r\n source: {\r\n type: String,\r\n required: false\r\n },\r\n hovedgruppekode: {\r\n type: String,\r\n required: false\r\n },\r\n guid: {\r\n type: String,\r\n required: true\r\n },\r\n skip: {\r\n type: Number,\r\n required: true,\r\n default: 0\r\n },\r\n take: {\r\n type: Number,\r\n required: true,\r\n default: 10\r\n },\r\n spotCard: {\r\n type: Object,\r\n required: false\r\n },\r\n disableInitialSearch: {\r\n type: Boolean,\r\n required: false,\r\n default: false\r\n },\r\n },\r\n setup(props) {\r\n const store = useStore() \r\n\r\n onMounted(() => {\r\n initFetchGroups()\r\n })\r\n\r\n const url = computed(() => {\r\n switch (props.source) {\r\n case 'frivillig-all':\r\n return process.env.FRIVILLIGE_GROUPS_SEARCH\r\n .replace('[pageId]', store.state.main.page_id)\r\n case 'frivillig-hovedgruppe':\r\n return process.env.FRIVILLIGE_GROUPS_HOVEDGRUPPE_SEARCH\r\n .replace('[pageId]', store.state.main.page_id)\r\n .replace('[hovedgruppekode]', props.hovedgruppekode)\r\n default:\r\n return process.env.GET_GROUP_SEARCH_RESULT\r\n }\r\n })\r\n \r\n const resultFocusIndex = ref(0)\r\n const isNotCancerforum = props.source != 'cancerforum'\r\n const totalAmount = computed(() => store.state.search.scoped_total[props.guid] ?? 0)\r\n const searchQuery = computed(() => store.state.search.queries[props.guid] ?? '')\r\n const results = computed(() => store.state.search.results[props.guid] ?? [])\r\n const tags = computed(() => store.getters['search/selectedTags'](props.guid) ?? [])\r\n const showSpinner = computed(() => store.state.search.search_inprogress[props.guid])\r\n const showResults = computed(() => store.state.search.show_results[props.guid])\r\n const resultCount = computed(() => results.value.length)\r\n\r\n const displaySearchResults = computed(() => showResults.value && (isNotCancerforum || searchQuery.value.length > 0))\r\n\r\n const initFetchGroups = () => {\r\n store.commit('search/set_replaceQueryInUrl', false)\r\n\r\n store.dispatch('search/initSearchScope', {\r\n guid: props.guid,\r\n firstPageSize: props.take,\r\n showMorePageSize: props.take,\r\n url: url.value\r\n })\r\n\r\n if(props.disableInitialSearch !== true) {\r\n store.dispatch('search/performSearch', {\r\n guid: props.guid,\r\n query: '',\r\n skip: props.skip,\r\n take: props.take\r\n })\r\n }\r\n }\r\n\r\n watch(results, async (newResults, _) => {\r\n if (resultFocusIndex.value === 0) {\r\n return\r\n }\r\n\r\n const newestResult = newResults[resultFocusIndex.value]\r\n await nextTick()\r\n const resultToFocus = document.getElementById(newestResult.id)\r\n resultToFocus.focus()\r\n })\r\n\r\n const getMoreResults = async (isKeydownEvent = false) => {\r\n store.dispatch('search/performMoreSearch', { guid: props.guid })\r\n \r\n if (isKeydownEvent) {\r\n // If the getMoreResults button was pressed using the enter key, we update the index keeping track of the result to focus\r\n resultFocusIndex.value = results.value.length\r\n }\r\n }\r\n\r\n return {\r\n isNotCancerforum,\r\n totalAmount,\r\n searchQuery,\r\n results,\r\n tags,\r\n showSpinner,\r\n showResults,\r\n resultCount,\r\n displaySearchResults,\r\n getMoreResults,\r\n getLabel: (labelKey, params) => GetLabel({ labelKey, labelCollection: 'GroupSearchResult', params })\r\n }\r\n } \r\n}","import { render } from \"./GroupSearchResult.vue?vue&type=template&id=6a4fd3a8\"\nimport script from \"./GroupSearchResult.vue?vue&type=script&lang=js\"\nexport * from \"./GroupSearchResult.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"D:\\\\a\\\\1\\\\s\\\\frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\r\n\r\n\r\n 0\" class=\"kb-gruppeadgangsanmodning-list\">\r\n \r\n \r\n - \r\n \r\n
\r\n
\r\n
{{ notification.title }}
\r\n
\r\n \r\n \r\n \r\n
\r\n \r\n \r\n
\r\n \r\n\r\n","import { computed, onMounted } from \"vue\"\r\nimport { useStore } from \"vuex\"\r\n\r\nexport default {\r\n name: \"GruppeadgangsanmodningList\",\r\n props: {\r\n guid: {\r\n type: String,\r\n required: true\r\n },\r\n skip: {\r\n type: Number,\r\n default: 0\r\n },\r\n take: {\r\n type: Number,\r\n default: 10\r\n }\r\n },\r\n setup(props) { \r\n const store = useStore()\r\n\r\n const notifications = computed(() => store.state.search.results[props.guid] ?? [])\r\n const totalNumberOfNotifications = computed(() => store.state.search.scoped_total[props.guid] ?? 0)\r\n const showSpinner = computed(() => store.state.search.search_inprogress[props.guid])\r\n\r\n onMounted(() => {\r\n store.dispatch('search/initSearchScope', {\r\n guid: props.guid,\r\n firstPageSize: props.take,\r\n showMorePageSize: props.take,\r\n url: process.env.GET_GRUPPEADGANGSANMODNINGER\r\n })\r\n \r\n store.dispatch('search/performSearch', {\r\n guid: props.guid,\r\n guery: '',\r\n skip: props.skip,\r\n take: props.take\r\n })\r\n })\r\n\r\n const getLabel = (labelKey) => \r\n store.getters[\"labels/getLabel\"]({\r\n labelCollection: \"gruppeadgangsanmodningList\",\r\n labelKey,\r\n });\r\n\r\n const getMoreNotifications = () => {\r\n store.dispatch('search/performMoreSearch', { guid: props.guid })\r\n }\r\n\r\n const rejectGruppeadgangsanmodning = async (gruppeadgangsanmodningId) => {\r\n store.dispatch('forum/rejectGruppeadgangsanmodning', { gruppeadgangsanmodningId: gruppeadgangsanmodningId})\r\n\r\n const label = getLabel(\"notificationRejectedLabel\")\r\n await removeNotification(gruppeadgangsanmodningId, label)\r\n }\r\n\r\n const approveGruppeadgangsanmodning = async (gruppeadgangsanmodningId) => {\r\n store.dispatch('forum/approveGruppeadgangsanmodning', { gruppeadgangsanmodningId: gruppeadgangsanmodningId})\r\n\r\n const label = getLabel(\"notificationConfirmedLabel\")\r\n await removeNotification(gruppeadgangsanmodningId, label)\r\n }\r\n\r\n const removeNotification = async (id, label) => {\r\n const actionsElementId = getActionsElementId(id)\r\n const actionsElement = document.getElementById(actionsElementId)\r\n actionsElement.innerHTML = label\r\n\r\n await new Promise(r => setTimeout(r, 2000))\r\n\r\n updateList()\r\n }\r\n\r\n const updateList = () => {\r\n store.dispatch('search/performSearch', {\r\n guid: props.guid,\r\n guery: '',\r\n skip: 0,\r\n take: notifications.value.length \r\n })\r\n }\r\n\r\n const getActionsElementId = (gruppeadgangsanmodningId) => 'actions-' + gruppeadgangsanmodningId\r\n\r\n return {\r\n notifications,\r\n totalNumberOfNotifications,\r\n showSpinner,\r\n getActionsElementId,\r\n getMoreNotifications,\r\n getLabel,\r\n rejectGruppeadgangsanmodning,\r\n approveGruppeadgangsanmodning\r\n }\r\n }\r\n}","import { render } from \"./GruppeadgangsanmodningList.vue?vue&type=template&id=4a3875e2\"\nimport script from \"./GruppeadgangsanmodningList.vue?vue&type=script&lang=js\"\nexport * from \"./GruppeadgangsanmodningList.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"D:\\\\a\\\\1\\\\s\\\\frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\r\n\r\n\r\n","export default {\r\n name: 'GtmTracker',\r\n props: {\r\n trackData: {\r\n type: String,\r\n required: true\r\n }\r\n },\r\n setup(props) {\r\n if (!props.trackData || !window.dataLayer) return\r\n\r\n window.dataLayer.push({ ecommerce: null }) // Clear the previous ecommerce object.\r\n window.dataLayer.push(props.trackData)\r\n }\r\n}\r\n","import { render } from \"./GtmTracker.vue?vue&type=template&id=6852334c\"\nimport script from \"./GtmTracker.vue?vue&type=script&lang=js\"\nexport * from \"./GtmTracker.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"D:\\\\a\\\\1\\\\s\\\\frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { useStore } from 'vuex'\r\nimport { computed, onMounted, ref } from 'vue'\r\nimport debounce from 'foundation/js/debounce'\r\n\r\nexport default {\r\n name: 'HeroGeneralSearch',\r\n props: {\r\n guids: {\r\n type: Array,\r\n required: true\r\n },\r\n primaryTagsDisplayed: {\r\n type: Number,\r\n required: true\r\n }\r\n },\r\n setup(props) {\r\n const store = useStore()\r\n const hasTags = ref(false)\r\n const inputText = computed({\r\n get: () => store.state.search.queries[props.guids[0]] ?? '',\r\n set: (v) => {\r\n if (props.guids && props.guids.length) {\r\n props.guids.forEach((g) =>\r\n store.dispatch('search/setSearchQuery', {\r\n guid: g,\r\n query: v\r\n })\r\n )\r\n }\r\n }\r\n })\r\n const tagDisplay = computed(() => {\r\n let allPrimaryTags = []\r\n props.guids.forEach((guid) => {\r\n let values = store.getters['search/allPrimaryTags'](guid)\r\n if (values) {\r\n allPrimaryTags.push(...values)\r\n }\r\n })\r\n // Remove duplicate tags by facetId property\r\n const uniquePrimaryTags = [\r\n ...new Map(\r\n allPrimaryTags.map((tag) => [tag['facetId'], tag])\r\n ).values()\r\n ]\r\n return uniquePrimaryTags.slice(0, props.primaryTagsDisplayed)\r\n })\r\n\r\n const termInput = debounce(() => {\r\n props.guids.forEach((g) => {\r\n store.dispatch('search/performSearch', {\r\n guid: g,\r\n query: inputText.value\r\n })\r\n })\r\n }, 500)\r\n\r\n const filterOnTag = function (tag) {\r\n props.guids.forEach((g) => {\r\n store.dispatch('search/performSearch', {\r\n guid: g,\r\n query: inputText.value,\r\n facet: tag\r\n })\r\n })\r\n }\r\n\r\n const startFilterOverlay = function (e) {\r\n props.guids.forEach((g) => {\r\n store.dispatch('main/openPageOverlay', {\r\n overlayContent: 'FilterOverlay',\r\n returnTarget: e.currentTarget\r\n })\r\n })\r\n }\r\n\r\n onMounted(() => {\r\n store.commit('search/set_filter_overlay_scopes', props.guids)\r\n hasTags.value = true\r\n })\r\n\r\n return {\r\n inputText,\r\n filterOnTag,\r\n startFilterOverlay,\r\n tagDisplay,\r\n termInput,\r\n hasTags\r\n }\r\n }\r\n}\r\n","import { createApp } from 'vue'\r\nimport options from './HeroGeneralSearch.options'\r\n\r\nconst el = '.kb-component--hero-general-search'\r\nconst DOM = document.querySelector(el)\r\n\r\nexport default function (Store) {\r\n if (DOM) {\r\n var guid = []\r\n if (DOM.dataset.guid.length && DOM.dataset.guid.startsWith('[')) {\r\n guid = JSON.parse(DOM.dataset.guid)\r\n } else {\r\n guid = [DOM.dataset.guid]\r\n }\r\n const primaryTagsDisplayed = DOM.dataset.numberOfPrimaryTags\r\n ? parseInt(DOM.dataset.numberOfPrimaryTags)\r\n : 3\r\n const component = createApp(options, {\r\n guids: guid,\r\n primaryTagsDisplayed\r\n }).use(Store)\r\n const template = DOM.outerHTML\r\n options.template = template\r\n component.mount(el)\r\n }\r\n}\r\n","\r\n\r\n\r\n \r\n \r\n\r\n \r\n
\r\n
{{ getLabel('title') }}
\r\n\r\n
{{ getLabel('text') }}
\r\n\r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n\r\n","import { useStore} from 'vuex'\r\nimport { ref, onMounted } from 'vue'\r\nimport { post } from \"foundation/js/api\"\r\n\r\nexport default {\r\n name: 'HeroSectionCancerforum',\r\n props: {\r\n groupId: {\r\n type: String,\r\n required: true\r\n },\r\n isLoggedIn: {\r\n type: Boolean,\r\n required: true\r\n },\r\n isClosedGroup: {\r\n type: Boolean,\r\n required: true\r\n },\r\n isUserAwaitingAccess: {\r\n type: Boolean,\r\n required: true\r\n },\r\n loginUrl: {\r\n type: String,\r\n required: true\r\n },\r\n },\r\n setup(props) {\r\n const store = useStore()\r\n\r\n const isSubmitting = ref(false)\r\n const buttonText = ref('')\r\n\r\n const handleClick = async function (e) {\r\n if (!props.isLoggedIn) {\r\n window.location.href = props.loginUrl\r\n return\r\n }\r\n \r\n if (props.isClosedGroup) {\r\n store.dispatch('main/openPageOverlay', {\r\n overlayContent: \"ClosedGroupOverlay\",\r\n returnTarget: e.currentTarget\r\n })\r\n return\r\n }\r\n\r\n isSubmitting.value = true\r\n\r\n const url = `${document.location.origin}/${process.env.FORUM_JOIN_GROUP}`.replace('[groupId]', props.groupId) \r\n await post(url, null)\r\n\r\n isSubmitting.value = false\r\n window.location.reload()\r\n }\r\n\r\n onMounted(() => {\r\n buttonText.value = getInitialButtonText()\r\n })\r\n\r\n const getInitialButtonText = () => {\r\n const labelKey = props.isUserAwaitingAccess \r\n ? \"ctaButtonLabelAwaitingAccess\"\r\n : \"ctaButtonLabelNotMember\"\r\n\r\n return getLabel(labelKey)\r\n }\r\n\r\n const getLabel = function(labelKey) {\r\n return store.getters['labels/getLabel']({\r\n labelCollection: 'HeroSectionCancerforum',\r\n labelKey\r\n })\r\n }\r\n\r\n return {\r\n handleClick,\r\n getLabel,\r\n buttonText,\r\n isSubmitting,\r\n }\r\n }\r\n}\r\n","import { render } from \"./HeroSectionCancerforum.vue?vue&type=template&id=4874e448\"\nimport script from \"./HeroSectionCancerforum.vue?vue&type=script&lang=js\"\nexport * from \"./HeroSectionCancerforum.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"D:\\\\a\\\\1\\\\s\\\\frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\r\n\r\n\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n\r\n 1\">\r\n \r\n \r\n - \r\n \r\n
\r\n
updateActiveImg(e)\">\r\n \r\n \r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n \r\n
\r\n \r\n \r\n\r\n 1\">\r\n \r\n
\r\n
\r\n
\r\n \r\n - \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n \r\n - \r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n\r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n\r\n","import{defineComponent as e,createVNode as t,Fragment as o,ref as l,reactive as n,computed as a,watch as r,nextTick as i,onMounted as s,onBeforeUnmount as c,Teleport as u,Transition as d,isVNode as p,withModifiers as b,isRef as v}from\"vue\";function m(e,t){void 0===t&&(t={});var o=t.insertAt;if(e&&\"undefined\"!=typeof document){var l=document.head||document.getElementsByTagName(\"head\")[0],n=document.createElement(\"style\");n.type=\"text/css\",\"top\"===o&&l.firstChild?l.insertBefore(n,l.firstChild):l.appendChild(n),n.styleSheet?n.styleSheet.cssText=e:n.appendChild(document.createTextNode(e))}}m(\".vel-fade-enter-active,.vel-fade-leave-active{-webkit-transition:all .3s ease;transition:all .3s ease}.vel-fade-enter-from,.vel-fade-leave-to{opacity:0}.vel-img-swiper{display:block;position:relative}.vel-modal{background:rgba(0,0,0,.5);bottom:0;left:0;margin:0;position:fixed;right:0;top:0;z-index:9998}.vel-img-wrapper{left:50%;margin:0;position:absolute;top:50%;-webkit-transform:translate(-50% -50%);transform:translate(-50% -50%);-webkit-transition:.3s linear;transition:.3s linear;will-change:transform opacity}.vel-img,.vel-img-wrapper{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.vel-img{background-color:rgba(0,0,0,.7);-webkit-box-shadow:0 5px 20px 2px rgba(0,0,0,.7);box-shadow:0 5px 20px 2px rgba(0,0,0,.7);display:block;max-height:80vh;max-width:80vw;position:relative;-webkit-transition:-webkit-transform .3s ease-in-out;transition:-webkit-transform .3s ease-in-out;transition:transform .3s ease-in-out;transition:transform .3s ease-in-out,-webkit-transform .3s ease-in-out}@media (max-width:750px){.vel-img{max-height:95vh;max-width:85vw}}.vel-btns-wrapper{position:static}.vel-btns-wrapper .btn__close,.vel-btns-wrapper .btn__next,.vel-btns-wrapper .btn__prev{-webkit-tap-highlight-color:transparent;color:#fff;cursor:pointer;font-size:32px;opacity:.6;outline:none;position:absolute;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);-webkit-transition:.15s linear;transition:.15s linear;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.vel-btns-wrapper .btn__close:hover,.vel-btns-wrapper .btn__next:hover,.vel-btns-wrapper .btn__prev:hover{opacity:1}.vel-btns-wrapper .btn__close.disable,.vel-btns-wrapper .btn__close.disable:hover,.vel-btns-wrapper .btn__next.disable,.vel-btns-wrapper .btn__next.disable:hover,.vel-btns-wrapper .btn__prev.disable,.vel-btns-wrapper .btn__prev.disable:hover{cursor:default;opacity:.2}.vel-btns-wrapper .btn__next{right:12px}.vel-btns-wrapper .btn__prev{left:12px}.vel-btns-wrapper .btn__close{right:10px;top:24px}@media (max-width:750px){.vel-btns-wrapper .btn__next,.vel-btns-wrapper .btn__prev{font-size:20px}.vel-btns-wrapper .btn__close{font-size:24px}.vel-btns-wrapper .btn__next{right:4px}.vel-btns-wrapper .btn__prev{left:4px}}.vel-modal.is-rtl .vel-btns-wrapper .btn__next{left:12px;right:auto}.vel-modal.is-rtl .vel-btns-wrapper .btn__prev{left:auto;right:12px}@media (max-width:750px){.vel-modal.is-rtl .vel-btns-wrapper .btn__next{left:4px;right:auto}.vel-modal.is-rtl .vel-btns-wrapper .btn__prev{left:auto;right:4px}}.vel-modal.is-rtl .vel-img-title{direction:rtl}\");m('.vel-loading{left:50%;position:absolute;top:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%)}.vel-loading .ring{display:inline-block;height:64px;width:64px}.vel-loading .ring:after{-webkit-animation:ring 1.2s linear infinite;animation:ring 1.2s linear infinite;border-color:hsla(0,0%,100%,.7) transparent;border-radius:50%;border-style:solid;border-width:5px;content:\" \";display:block;height:46px;margin:1px;width:46px}@-webkit-keyframes ring{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes ring{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}');m(\".vel-on-error{left:50%;position:absolute;top:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%)}.vel-on-error .icon{color:#aaa;font-size:80px}\");m(\".vel-img-title{bottom:60px;color:#ccc;cursor:default;font-size:12px;left:50%;line-height:1;max-width:80%;opacity:.8;overflow:hidden;position:absolute;text-align:center;text-overflow:ellipsis;-webkit-transform:translate(-50%);transform:translate(-50%);-webkit-transition:opacity .15s;transition:opacity .15s;white-space:nowrap}.vel-img-title:hover{opacity:1}\");m(\".vel-icon{fill:currentColor;height:1em;overflow:hidden;vertical-align:-.15em;width:1em}\");m(\".vel-toolbar{border-radius:4px;bottom:8px;display:-webkit-box;display:-ms-flexbox;display:flex;left:50%;opacity:.9;overflow:hidden;padding:0;position:absolute;-webkit-transform:translate(-50%);transform:translate(-50%)}.vel-toolbar,.vel-toolbar .toolbar-btn{background-color:#2d2d2d;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.vel-toolbar .toolbar-btn{-ms-flex-negative:0;-webkit-tap-highlight-color:transparent;color:#fff;cursor:pointer;flex-shrink:0;font-size:20px;outline:none;padding:6px 10px}.vel-toolbar .toolbar-btn:active,.vel-toolbar .toolbar-btn:hover{background-color:#3d3d3d}\");const g=\"vel\",f=e({name:\"SvgIcon\",props:{type:{type:String,default:\"\"}},setup:e=>()=>t(\"svg\",{class:`${g}-icon icon`,\"aria-hidden\":\"true\"},[t(\"use\",{\"xlink:href\":`#icon-${e.type}`},null)])}),h=\"undefined\"!=typeof window,w=()=>{};let x=!1;if(h)try{const e={};Object.defineProperty(e,\"passive\",{get(){x=!0}}),window.addEventListener(\"test-passive\",w,e)}catch(e){}const y=function(e,t,o){let l=arguments.length>3&&void 0!==arguments[3]&&arguments[3];h&&e.addEventListener(t,o,!!x&&{capture:!1,passive:l})},z=(e,t,o)=>{h&&e.removeEventListener(t,o)},k=e=>{e.preventDefault()},_=Object.prototype.toString,D=e=>t=>_.call(t).slice(8,-1)===e;const M=e=>!!e&&D(\"Object\")(e),S=e=>!!e&&D(\"String\")(e);function L(e){return null!=e}const C=e({name:\"Toolbar\",props:{zoomIn:{type:Function,default:w},zoomOut:{type:Function,default:w},rotateLeft:{type:Function,default:w},rotateRight:{type:Function,default:w},resize:{type:Function,default:w},rotateDisabled:{type:Boolean,default:!1},zoomDisabled:{type:Boolean,default:!1}},setup:e=>()=>t(\"div\",{class:`${g}-toolbar`},[!e.zoomDisabled&&t(o,null,[t(\"div\",{role:\"button\",\"aria-label\":\"zoom in button\",class:\"toolbar-btn toolbar-btn__zoomin\",onClick:e.zoomIn},[t(f,{type:\"zoomin\"},null)]),t(\"div\",{role:\"button\",\"aria-label\":\"zoom out button\",class:\"toolbar-btn toolbar-btn__zoomout\",onClick:e.zoomOut},[t(f,{type:\"zoomout\"},null)])]),t(\"div\",{role:\"button\",\"aria-label\":\"resize image button\",class:\"toolbar-btn toolbar-btn__resize\",onClick:e.resize},[t(f,{type:\"resize\"},null)]),!e.rotateDisabled&&t(o,null,[t(\"div\",{role:\"button\",\"aria-label\":\"image rotate left button\",class:\"toolbar-btn toolbar-btn__rotate\",onClick:e.rotateLeft},[t(f,{type:\"rotate-left\"},null)]),t(\"div\",{role:\"button\",\"aria-label\":\"image rotate right button\",class:\"toolbar-btn toolbar-btn__rotate\",onClick:e.rotateRight},[t(f,{type:\"rotate-right\"},null)])])])}),Y=()=>t(\"div\",{class:`${g}-loading`},[t(\"div\",{class:\"ring\"},null)]),B=()=>t(\"div\",{class:`${g}-on-error`},[t(\"div\",{class:\"ring\"},null),t(f,{type:\"img-broken\"},null)]),X=(e,o)=>{let{slots:l}=o;return t(\"div\",{class:`${g}-img-title`},[l.default?l.default():\"\"])},E=e({name:\"DefaultIcons\",setup:()=>()=>t(\"svg\",{\"aria-hidden\":!0,style:\"position: absolute; width: 0; height: 0; overflow: hidden; visibility: hidden;\"},[t(\"symbol\",{id:\"icon-rotate-right\",viewBox:\"0 0 1024 1024\"},[t(\"path\",{d:\"M275.199914 450.496179v20.031994c0.384-38.079988 12.543996-67.423979 36.479989-87.967973 22.431993-20.351994 49.215985-30.55999 80.319975-30.55999 32.06399 0 59.295981 10.175997 81.759974 30.55999 22.815993 20.543994 34.591989 49.887984 35.359989 87.967973v123.935961c-0.768 37.887988-12.543996 67.135979-35.359989 87.679973-22.431993 20.351994-49.695984 30.75199-81.759974 31.10399a120.255962 120.255962 0 0 1-72.991978-24.895992c-21.503993-15.839995-35.359989-38.751988-41.567987-68.735979h60.831981c9.247997 23.007993 27.167992 34.495989 53.759983 34.49599 37.535988-0.384 56.863982-21.407993 57.983982-63.071981v-38.751988c-28.095991 8.863997-54.303983 13.119996-78.623975 12.735996a91.263971 91.263971 0 0 1-68.447979-27.711991c-18.847994-18.303994-28.095991-47.231985-27.711991-86.847973z m62.55998 24.863992c7.103998 24.799992 25.215992 37.343988 54.271983 37.663989 27.103992-0.288 44.703986-11.327996 52.831984-33.11999 3.135999-8.383997 2.655999-29.599991-1.28-38.559988-8.607997-19.615994-25.791992-29.695991-51.551984-30.20799-28.383991 0.576-46.303986 12.639996-53.759983 36.159988a58.719982 58.719982 0 0 0-0.512 28.063991z m390.335878 115.711964v-116.895963c-1.12-41.311987-20.447994-62.335981-57.983981-63.07198-37.727988 0.768-56.959982 21.791993-57.695982 63.07198v116.895963c0.768 41.663987 19.999994 62.68798 57.695982 63.071981 37.535988-0.384 56.863982-21.407993 57.983981-63.071981z m-174.815945 3.391999v-123.935961c0.384-38.079988 12.543996-67.423979 36.479989-87.967973 22.431993-20.351994 49.215985-30.55999 80.319975-30.55999 32.06399 0 59.295981 10.175997 81.759974 30.55999 22.815993 20.543994 34.591989 49.887984 35.359989 87.967973v123.935961c-0.768 37.887988-12.543996 67.135979-35.359989 87.679973-22.431993 20.351994-49.695984 30.75199-81.759974 31.10399-31.10399-0.384-57.887982-10.751997-80.319975-31.10399-23.935993-20.543994-36.127989-49.791984-36.479989-87.679973z m282.559912-479.07185A509.887841 509.887841 0 0 0 511.99984 0.00032C229.215928 0.00032 0 229.216248 0 512.00016s229.215928 511.99984 511.99984 511.99984 511.99984-229.215928 511.99984-511.99984c0-3.743999-0.032-7.455998-0.128-11.167997-1.631999-11.295996-8.159997-27.103992-31.87199-27.103991-27.487991 0-31.67999 21.247993-32.03199 32.06399l0.032 4.127999a30.62399 30.62399 0 0 0 0.16 2.079999H959.9997c0 247.423923-200.575937 447.99986-447.99986 447.99986S63.99998 759.424083 63.99998 512.00016 264.575917 64.0003 511.99984 64.0003a446.079861 446.079861 0 0 1 277.439913 96.22397l-94.91197 91.679971c-25.439992 24.607992-17.439995 44.991986 17.887994 45.599986l188.031942 3.295999a64.31998 64.31998 0 0 0 65.055979-62.84798l3.295999-188.127942C969.407697 15.040315 949.311703 5.792318 923.871711 30.368311l-87.999972 85.023973z\",fill:\"\"},null)]),t(\"symbol\",{id:\"icon-rotate-left\",viewBox:\"0 0 1024 1024\"},[t(\"path\",{d:\"M275.199914 450.496179v20.031994c0.384-38.079988 12.543996-67.423979 36.479989-87.967973 22.431993-20.351994 49.215985-30.55999 80.319975-30.55999 32.06399 0 59.295981 10.175997 81.759974 30.55999 22.815993 20.543994 34.591989 49.887984 35.359989 87.967973v123.935961c-0.768 37.887988-12.543996 67.135979-35.359989 87.679973-22.431993 20.351994-49.695984 30.75199-81.759974 31.10399a120.255962 120.255962 0 0 1-72.991978-24.895992c-21.503993-15.839995-35.359989-38.751988-41.567987-68.735979h60.831981c9.247997 23.007993 27.167992 34.495989 53.759983 34.49599 37.535988-0.384 56.863982-21.407993 57.983982-63.071981v-38.751988c-28.095991 8.863997-54.303983 13.119996-78.623975 12.735996a91.263971 91.263971 0 0 1-68.447979-27.711991c-18.847994-18.303994-28.095991-47.231985-27.711991-86.847973z m62.55998 24.863992c7.103998 24.799992 25.215992 37.343988 54.271983 37.663989 27.103992-0.288 44.703986-11.327996 52.831984-33.11999 3.135999-8.383997 2.655999-29.599991-1.28-38.559988-8.607997-19.615994-25.791992-29.695991-51.551984-30.20799-28.383991 0.576-46.303986 12.639996-53.759983 36.159988a58.719982 58.719982 0 0 0-0.512 28.063991z m390.335878 115.711964v-116.895963c-1.12-41.311987-20.447994-62.335981-57.983981-63.07198-37.727988 0.768-56.959982 21.791993-57.695982 63.07198v116.895963c0.768 41.663987 19.999994 62.68798 57.695982 63.071981 37.535988-0.384 56.863982-21.407993 57.983981-63.071981z m-174.815945 3.391999v-123.935961c0.384-38.079988 12.543996-67.423979 36.479989-87.967973 22.431993-20.351994 49.215985-30.55999 80.319975-30.55999 32.06399 0 59.295981 10.175997 81.759974 30.55999 22.815993 20.543994 34.591989 49.887984 35.359989 87.967973v123.935961c-0.768 37.887988-12.543996 67.135979-35.359989 87.679973-22.431993 20.351994-49.695984 30.75199-81.759974 31.10399-31.10399-0.384-57.887982-10.751997-80.319975-31.10399-23.935993-20.543994-36.127989-49.791984-36.479989-87.679973zM188.159941 115.392284A509.887841 509.887841 0 0 1 511.99984 0.00032c282.783912 0 511.99984 229.215928 511.99984 511.99984s-229.215928 511.99984-511.99984 511.99984S0 794.784072 0 512.00016c0-3.743999 0.032-7.455998 0.128-11.167997 1.631999-11.295996 8.159997-27.103992 31.87199-27.103991 27.487991 0 31.67999 21.247993 32.03199 32.06399L63.99998 509.920161a30.62399 30.62399 0 0 1-0.16 2.079999H63.99998c0 247.423923 200.575937 447.99986 447.99986 447.99986s447.99986-200.575937 447.99986-447.99986S759.423763 64.0003 511.99984 64.0003a446.079861 446.079861 0 0 0-277.439913 96.22397l94.91197 91.679971c25.439992 24.607992 17.439995 44.991986-17.887994 45.599986L123.551961 300.800226a64.31998 64.31998 0 0 1-65.055979-62.84798l-3.295999-188.127942C54.591983 15.040315 74.687977 5.792318 100.127969 30.368311l87.999972 85.023973z\",fill:\"\"},null)]),t(\"symbol\",{id:\"icon-resize\",viewBox:\"0 0 1024 1024\"},[t(\"path\",{d:\"M456.036919 791.8108 270.553461 791.8108 460.818829 601.572038l-39.593763-39.567157L231.314785 751.915162l0.873903-183.953615c0-15.465227-12.515035-27.981285-27.981285-27.981285s-27.981285 12.515035-27.981285 27.981285l0 251.829516c0 8.3072 3.415796 14.975063 8.826016 19.564591 5.082762 5.192256 12.132318 8.416693 19.947308 8.416693l251.036453 0c15.46625 0 27.981285-12.514012 27.981285-27.981285C484.018204 804.325835 471.504192 791.8108 456.036919 791.8108zM838.945819 184.644347c-5.082762-5.191232-12.132318-8.416693-19.947308-8.416693L567.961034 176.227654c-15.46625 0-27.981285 12.515035-27.981285 27.981285 0 15.46625 12.514012 27.981285 27.981285 27.981285l185.483458 0L563.206754 422.427962l39.567157 39.567157 189.910281-189.910281-0.873903 183.953615c0 15.46625 12.514012 27.981285 27.981285 27.981285s27.981285-12.514012 27.981285-27.981285L847.772858 204.208938C847.771835 195.902762 844.356039 189.234899 838.945819 184.644347zM847.771835 64.303538 176.227142 64.303538c-61.809741 0-111.924115 50.115398-111.924115 111.924115l0 671.544693c0 61.809741 50.114374 111.924115 111.924115 111.924115l671.544693 0c61.809741 0 111.924115-50.114374 111.924115-111.924115l0-671.544693C959.69595 114.418936 909.581576 64.303538 847.771835 64.303538zM903.733381 847.772346c0 30.878265-25.056676 55.962569-55.962569 55.962569L176.227142 903.734916c-30.90487 0-55.962569-25.084305-55.962569-55.962569l0-671.544693c0-30.9325 25.056676-55.962569 55.962569-55.962569l671.544693 0c30.90487 0 55.962569 25.03007 55.962569 55.962569L903.734404 847.772346z\"},null)]),t(\"symbol\",{id:\"icon-img-broken\",viewBox:\"0 0 1024 1024\"},[t(\"path\",{d:\"M810.666667 128H213.333333c-46.933333 0-85.333333 38.4-85.333333 85.333333v597.333334c0 46.933333 38.4 85.333333 85.333333 85.333333h597.333334c46.933333 0 85.333333-38.4 85.333333-85.333333V213.333333c0-46.933333-38.4-85.333333-85.333333-85.333333z m0 682.666667H213.333333v-195.413334l42.24 42.24 170.666667-170.666666 170.666667 170.666666 170.666666-170.24L810.666667 530.346667V810.666667z m0-401.493334l-43.093334-43.093333-170.666666 171.093333-170.666667-170.666666-170.666667 170.666666-42.24-42.666666V213.333333h597.333334v195.84z\"},null)]),t(\"symbol\",{id:\"icon-prev\",viewBox:\"0 0 1024 1024\"},[t(\"path\",{d:\"M784.652701 955.6957 346.601985 517.644983c-2.822492-2.822492-2.822492-7.902977 0-11.289967l439.179713-439.179713c6.77398-6.77398 10.725469-16.370452 10.725469-25.966924L796.507166 36.692393c0-20.32194-16.370452-36.692393-36.692393-36.692393l-4.515987 0c-9.596472 0-19.192944 3.951488-25.966924 10.725469L250.072767 489.420066c-12.418964 12.418964-12.418964 32.740904 0 45.159868l477.565601 477.565601c7.338479 7.338479 17.499449 11.854465 28.224917 11.854465l0 0c22.015436 0 40.079383-18.063947 40.079383-40.079383l0 0C796.507166 973.759647 791.99118 963.598677 784.652701 955.6957z\"},null)]),t(\"symbol\",{id:\"icon-next\",viewBox:\"0 0 1024 1024\"},[t(\"path\",{d:\"M246.121279 955.6957l438.050717-438.050717c2.822492-2.822492 2.822492-7.902977 0-11.289967L244.992282 67.175303c-6.77398-6.77398-10.725469-16.370452-10.725469-25.966924L234.266814 36.692393C234.266814 16.370452 250.637266 0 270.959206 0l4.515987 0c9.596472 0 19.192944 3.951488 25.966924 10.725469l478.694598 478.694598c12.418964 12.418964 12.418964 32.740904 0 45.159868l-477.565601 477.565601c-7.338479 7.338479-17.499449 11.854465-28.224917 11.854465l0 0c-22.015436 0-40.079383-18.063947-40.079383-40.079383l0 0C234.266814 973.759647 238.7828 963.598677 246.121279 955.6957z\"},null)]),t(\"symbol\",{id:\"icon-zoomin\",viewBox:\"0 0 1024 1024\"},[t(\"path\",{d:\"M725.504 652.864c46.4-61.44 71.744-136.448 71.744-218.752C797.248 230.464 632.768 64 430.656 64S64 230.464 64 434.112C64 639.36 228.48 805.76 430.656 805.76c86.656 0 164.48-30.144 227.52-81.088L889.984 960 960 891.264l-234.496-238.4z m-294.848 67.456c-155.776 0-282.624-128.896-282.624-286.208s126.848-286.208 282.624-286.208 282.624 128.896 282.624 286.208-126.912 286.208-282.624 286.208z\"},null),t(\"path\",{d:\"M235.712 369.92h390.72v127.104H235.712z\"},null),t(\"path\",{d:\"M367.488 238.144h127.104v390.72H367.488z\"},null)]),t(\"symbol\",{id:\"icon-close\",viewBox:\"0 0 1024 1024\"},[t(\"path\",{d:\"M570.24 512l259.2 259.2-58.88 58.24L512 570.24l-261.12 261.12-58.24-58.24L453.76 512 194.56 252.8l58.24-58.24L512 453.76l261.12-261.12 58.24 58.24z\"},null)]),t(\"symbol\",{id:\"icon-zoomout\",viewBox:\"0 0 1024 1024\"},[t(\"path\",{d:\"M725.504 652.864c46.4-61.44 71.744-136.448 71.744-218.752C797.248 230.464 632.768 64 430.656 64S64 230.464 64 434.112C64 639.36 228.48 805.76 430.656 805.76c86.656 0 164.48-30.144 227.52-81.088L889.984 960 960 891.264l-234.496-238.4z m-294.848 67.456c-155.776 0-282.624-128.896-282.624-286.208s126.848-286.208 282.624-286.208 282.624 128.896 282.624 286.208-126.912 286.208-282.624 286.208z\"},null),t(\"path\",{d:\"M235.712 369.92h390.72v127.104H235.712z\"},null)])])}),T=h?window:global;let $=Date.now();function O(e){const t=Date.now(),o=Math.max(0,16-(t-$)),l=setTimeout(e,o);return $=t+o,l}function I(e){return(T.requestAnimationFrame||O).call(T,e)}function R(e){(T.cancelAnimationFrame||T.clearTimeout).call(T,e)}function A(e,t){const o=e.clientX-t.clientX,l=e.clientY-t.clientY;return Math.sqrt(o*o+l*l)}function j(e){return\"function\"==typeof e||\"[object Object]\"===Object.prototype.toString.call(e)&&!p(e)}var H=e({name:\"VueEasyLightbox\",props:{imgs:{type:[Array,String],default:()=>\"\"},visible:{type:Boolean,default:!1},index:{type:Number,default:0},scrollDisabled:{type:Boolean,default:!0},escDisabled:{type:Boolean,default:!1},moveDisabled:{type:Boolean,default:!1},titleDisabled:{type:Boolean,default:!1},maskClosable:{type:Boolean,default:!0},teleport:{type:[String,Object],default:null},swipeTolerance:{type:Number,default:50},loop:{type:Boolean,default:!1},rtl:{type:Boolean,default:!1},zoomScale:{type:Number,default:.12},maxZoom:{type:Number,default:3},minZoom:{type:Number,default:.1},rotateDisabled:{type:Boolean,default:!1},zoomDisabled:{type:Boolean,default:!1},pinchDisabled:{type:Boolean,default:!1}},emits:{hide:()=>!0,\"on-error\":e=>!0,\"on-prev\":(e,t)=>!0,\"on-next\":(e,t)=>!0,\"on-prev-click\":(e,t)=>!0,\"on-next-click\":(e,t)=>!0,\"on-index-change\":(e,t)=>!0,\"on-rotate\":e=>!0},setup(e,o){let{emit:p,slots:v}=o;const{imgRef:m,imgState:h,setImgSize:w}=(()=>{const e=l(),t=n({width:0,height:0,maxScale:1});return{imgRef:e,imgState:t,setImgSize:()=>{if(e.value){const{width:o,height:l,naturalWidth:n}=e.value;t.maxScale=n/o,t.width=o,t.height=l}}}})(),x=l(0),_=l(\"\"),T=n({scale:1,lastScale:1,rotateDeg:0,top:0,left:0,initX:0,initY:0,lastX:0,lastY:0,touches:[]}),$=n({loadError:!1,loading:!1,dragging:!1,gesturing:!1,wheeling:!1}),O=a((()=>{return t=e.imgs,D(\"Array\")(t)?e.imgs.map((e=>\"string\"==typeof e?{src:e}:function(e){return M(e)&&S(e.src)}(e)?e:void 0)).filter(L):S(e.imgs)?[{src:e.imgs}]:[];var t})),H=a((()=>{const e=O.value[x.value]?.src;return e})),F=a((()=>O.value[x.value]?.title)),N=a((()=>O.value[x.value]?.alt)),P=a((()=>({cursor:$.loadError?\"default\":e.moveDisabled?$.dragging?\"grabbing\":\"grab\":\"move\",top:`calc(50% + ${T.top}px)`,left:`calc(50% + ${T.left}px)`,transition:$.dragging||$.gesturing?\"none\":\"\",transform:`translate(-50%, -50%) scale(${T.scale}) rotate(${T.rotateDeg}deg)`}))),V=()=>{p(\"hide\")},Z=()=>{T.scale=1,T.lastScale=1,T.rotateDeg=0,T.top=0,T.left=0,$.loadError=!1,$.dragging=!1,$.loading=!0},q=(t,o)=>{const l=x.value;Z(),x.value=t,O.value[x.value]===O.value[t]&&i((()=>{$.loading=!1})),e.visible&&l!==t&&(o&&o(l,t),p(\"on-index-change\",l,t))},U=()=>{const t=x.value,o=e.loop?(t+1)%O.value.length:t+1;!e.loop&&o>O.value.length-1||q(o,((e,t)=>{p(\"on-next\",e,t),p(\"on-next-click\",e,t)}))},W=()=>{const t=x.value;let o=t-1;if(0===t){if(!e.loop)return;o=O.value.length-1}q(o,((e,t)=>{p(\"on-prev\",e,t),p(\"on-prev-click\",e,t)}))},G=e=>{Math.abs(1-e)<.05?e=1:Math.abs(h.maxScale-e)<.05&&(e=h.maxScale),T.lastScale=T.scale,T.scale=e},J=()=>{const t=T.scale+e.zoomScale;t{const t=T.scale-e.zoomScale;t>e.minZoom&&G(t)},Q=()=>{const e=T.rotateDeg%360;p(\"on-rotate\",Math.abs(e<0?e+360:e))},ee=()=>{T.rotateDeg-=90,Q()},te=()=>{T.rotateDeg+=90,Q()},oe=()=>{T.scale=1,T.top=0,T.left=0},le=function(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;return!e.moveDisabled&&0===t},{onMouseDown:ne,onMouseMove:ae,onMouseUp:re}=((e,t,o)=>{let l,n=!1;return{onMouseDown:o=>{e.initX=e.lastX=o.clientX,e.initY=e.lastY=o.clientY,t.dragging=!0,n=!1,o.stopPropagation()},onMouseUp:e=>{o(e.button)&&R(l),t.dragging=!1,n=!1},onMouseMove:a=>{if(t.dragging)if(o(a.button)){if(n)return;n=!0,l=I((()=>{const{top:t,left:o,lastY:l,lastX:r}=e;e.top=t-l+a.clientY,e.left=o-r+a.clientX,e.lastX=a.clientX,e.lastY=a.clientY,n=!1}))}else e.lastX=a.clientX,e.lastY=a.clientY;a.stopPropagation()}}})(T,$,le),{onTouchStart:ie,onTouchMove:se,onTouchEnd:ce}=((e,t,o,l,n)=>{let a,r=!1;return{onTouchStart:e=>{const{touches:l}=e;l.length>1&&n()?(o.gesturing=!0,t.touches=l):(t.initX=t.lastX=l[0].clientX,t.initY=t.lastY=l[0].clientY,o.dragging=!0),e.stopPropagation()},onTouchMove:i=>{if(r)return;const{touches:s}=i,{lastX:c,lastY:u,left:d,top:p,scale:b}=t;if(!o.gesturing&&o.dragging){if(!s[0])return;const{clientX:e,clientY:o}=s[0];l()?a=I((()=>{t.lastX=e,t.lastY=o,t.top=p-u+o,t.left=d-c+e,r=!1})):(t.lastX=e,t.lastY=o)}else o.gesturing&&t.touches.length>1&&s.length>1&&n()&&(a=I((()=>{const o=(A(t.touches[0],t.touches[1])-A(s[0],s[1]))/e.width;t.touches=s;const l=b-1.3*o;l>.5&&l<1.5*e.maxScale&&(t.scale=l),r=!1})))},onTouchEnd:()=>{R(a),o.dragging=!1,o.gesturing=!1,r=!1}}})(h,T,$,le,(()=>!e.pinchDisabled)),ue=()=>{T.scale!==h.maxScale?(T.lastScale=T.scale,T.scale=h.maxScale):T.scale=T.lastScale},de=t=>{$.loadError||$.gesturing||$.loading||$.dragging||$.wheeling||!e.scrollDisabled||e.zoomDisabled||($.wheeling=!0,setTimeout((()=>{$.wheeling=!1}),80),t.deltaY<0?J():K())},pe=t=>{const o=t;e.visible&&(!e.escDisabled&&\"Escape\"===o.key&&e.visible&&V(),\"ArrowLeft\"===o.key&&(e.rtl?U():W()),\"ArrowRight\"===o.key&&(e.rtl?W():U()))},be=()=>{e.maskClosable&&V()},ve=()=>{w()},me=()=>{$.loading=!1},ge=e=>{$.loading=!1,$.loadError=!0,p(\"on-error\",e)},fe=()=>{e.visible&&w()};r((()=>e.index),(e=>{e<0||e>=O.value.length||q(e)})),r((()=>$.dragging),((t,o)=>{const l=!t&&o;if(!le()&&l){const t=T.lastX-T.initX,o=T.lastY-T.initY,l=e.swipeTolerance;Math.abs(t)>Math.abs(o)&&(t<-1*l?U():t>l&&W())}})),r((()=>e.visible),(t=>{if(t){Z();const t=O.value.length;if(0===t)return x.value=0,$.loading=!1,void i((()=>$.loadError=!0));x.value=e.index>=t?t-1:e.index<0?0:e.index,e.scrollDisabled&&he()}else e.scrollDisabled&&we()}));const he=()=>{document&&(_.value=document.body.style.overflowY,document.body.style.overflowY=\"hidden\")},we=()=>{document&&(document.body.style.overflowY=_.value)};s((()=>{y(document,\"keydown\",pe),y(window,\"resize\",fe)})),c((()=>{z(document,\"keydown\",pe),z(window,\"resize\",fe),we()}));const xe=()=>$.loading?v.loading?v.loading({key:\"loading\"}):t(Y,{key:\"img-loading\"},null):$.loadError?v.onerror?v.onerror({key:\"onerror\"}):t(B,{key:\"img-on-error\"},null):t(\"div\",{class:`${g}-img-wrapper`,style:P.value,key:\"img-wrapper\"},[t(\"img\",{alt:N.value,ref:m,draggable:\"false\",class:`${g}-img`,src:H.value,onMousedown:ne,onMouseup:re,onMousemove:ae,onTouchstart:ie,onTouchmove:se,onTouchend:ce,onLoad:ve,onDblclick:ue,onDragstart:e=>{e.preventDefault()}},null)]),ye=()=>{if(v[\"prev-btn\"])return v[\"prev-btn\"]({prev:W});if(O.value.length<=1)return;const o=!e.loop&&x.value<=0;return t(\"div\",{role:\"button\",\"aria-label\":\"previous image button\",class:\"btn__prev \"+(o?\"disable\":\"\"),onClick:W},[e.rtl?t(f,{type:\"next\"},null):t(f,{type:\"prev\"},null)])},ze=()=>{if(v[\"next-btn\"])return v[\"next-btn\"]({next:U});if(O.value.length<=1)return;const o=!e.loop&&x.value>=O.value.length-1;return t(\"div\",{role:\"button\",\"aria-label\":\"next image button\",class:\"btn__next \"+(o?\"disable\":\"\"),onClick:U},[e.rtl?t(f,{type:\"prev\"},null):t(f,{type:\"next\"},null)])},ke=()=>{if(F.value&&!e.titleDisabled&&!$.loading&&!$.loadError)return v.title?v.title():t(X,null,{default:()=>[F.value]})},_e=()=>{let o;if(e.visible)return t(\"div\",{onTouchmove:k,class:[`${g}-modal`,e.rtl?\"is-rtl\":\"\"],onClick:b(be,[\"self\"]),onWheel:de},[t(E,null,null),t(d,{name:`${g}-fade`,mode:\"out-in\"},j(o=xe())?o:{default:()=>[o]}),t(\"img\",{style:\"display:none;\",src:H.value,onError:ge,onLoad:me},null),t(\"div\",{class:`${g}-btns-wrapper`},[ye(),ze(),ke(),v[\"close-btn\"]?v[\"close-btn\"]({close:V}):t(\"div\",{role:\"button\",\"aria-label\":\"close image preview button\",class:\"btn__close\",onClick:V},[t(f,{type:\"close\"},null)]),v.toolbar?v.toolbar({toolbarMethods:{zoomIn:J,zoomOut:K,rotate:ee,rotateLeft:ee,rotateRight:te,resize:oe},zoomIn:J,zoomOut:K,rotate:ee,rotateLeft:ee,rotateRight:te,resize:oe}):t(C,{zoomIn:J,zoomOut:K,resize:oe,rotateLeft:ee,rotateRight:te,rotateDisabled:e.rotateDisabled,zoomDisabled:e.zoomDisabled},null)])])};return()=>{let o;if(e.teleport){let o;return t(u,{to:e.teleport},{default:()=>[t(d,{name:`${g}-fade`},j(o=_e())?o:{default:()=>[o]})]})}return t(d,{name:`${g}-fade`},j(o=_e())?o:{default:()=>[o]})}}});const F=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{imgs:\"\"};const{imgs:t=\"\",initIndex:o=0}=e,n=l(t),a=l(o),r=l(!1),i=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:a.value;a.value=e};return{imgsRef:n,indexRef:a,visibleRef:r,show:function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:a.value;\"number\"==typeof e?i(e):v(e)&&\"number\"==typeof e.value?i(e.value):e instanceof Event&&i(a.value),r.value=!0},onHide:()=>{r.value=!1},changeIndex:i}},N=Object.assign(H,{install:e=>{e.component(H.name,H)}});export{N as default,F as useEasyLightbox};\n","import { ref, computed, onMounted } from 'vue'\r\nimport deepClone from 'foundation/js/deepClone'\r\nimport VueEasyLightbox from 'vue-easy-lightbox'\r\nimport Glide from \"@glidejs/glide\"\r\n\r\nlet glide\r\n\r\nexport default {\r\n name: \"ImageGallery\",\r\n components: { VueEasyLightbox },\r\n props: {\r\n imgs: {\r\n type: Object,\r\n required: true\r\n },\r\n type: {\r\n type: String,\r\n required: false,\r\n default: \"Product\"\r\n }\r\n },\r\n setup(props) {\r\n\r\n const imgs = computed(() => props.imgs.imgs)\r\n const imgRatio = computed(() => props.type === \"Product\" ? \"5-4\" : \"2-3\")\r\n const visibleRef = ref(false)\r\n let indexRef = ref(0) // default 0\r\n const imgsRef = ref(imgs.value)\r\n const activeImg = ref(deepClone(imgs.value[0]))\r\n\r\n const mobileSlider = ref(window.innerWidth > 475 ? false : true)\r\n\r\n const onShow = () => {\r\n visibleRef.value = true\r\n }\r\n\r\n const showMultiple = () => {\r\n imgsRef.value = imgsRef.value\r\n\r\n let isActiveImg = (element) => element.src === activeImg.value.src\r\n let activeIndex = imgsRef.value.findIndex(isActiveImg)\r\n\r\n indexRef.value = activeIndex\r\n\r\n onShow()\r\n }\r\n\r\n const onHide = () => (visibleRef.value = false)\r\n\r\n const updateActiveImg = function (e) {\r\n activeImg.value.src = e.target.src\r\n activeImg.value.alt = e.target.alt\r\n }\r\n\r\n onMounted(() => {\r\n glide = new Glide('#imageGalleryGlideId', {\r\n perView: 1.15,\r\n gap: 15,\r\n peek: {\r\n after: 0,\r\n before: 0\r\n }\r\n })\r\n \r\n if (imgs.value.length > 1) {\r\n glide.mount()\r\n }\r\n\r\n window.addEventListener(\"resize\", () => {\r\n if (window.innerWidth > 475) {\r\n mobileSlider.value = false\r\n\r\n } else if (window.innerWidth <= 475) {\r\n mobileSlider.value = true\r\n\r\n if (imgs.value.length > 1) {\r\n glide.mount()\r\n }\r\n\r\n }\r\n })\r\n\r\n })\r\n\r\n return {\r\n visibleRef,\r\n indexRef,\r\n imgsRef,\r\n showMultiple,\r\n onHide,\r\n imgs,\r\n imgRatio,\r\n activeImg,\r\n mobileSlider,\r\n updateActiveImg\r\n }\r\n\r\n }\r\n}","import { render } from \"./ImageGallery.vue?vue&type=template&id=b37283c4\"\nimport script from \"./ImageGallery.vue?vue&type=script&lang=js\"\nexport * from \"./ImageGallery.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"D:\\\\a\\\\1\\\\s\\\\frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { useStore } from 'vuex'\r\nexport default {\r\n name: 'TheHeader',\r\n setup() {\r\n const store = useStore()\r\n const startBurgermenu = function (e) {\r\n store.dispatch('main/openPageOverlay', {\r\n overlayContent: 'BurgerMenu',\r\n returnTarget: e.currentTarget\r\n })\r\n }\r\n\r\n const startSearchoverlay = function (e) {\r\n store.dispatch('main/openPageOverlay', {\r\n overlayContent: 'SearchOverlay',\r\n returnTarget: e.currentTarget\r\n })\r\n }\r\n\r\n const startDonationFlow = function (e) {\r\n store.dispatch('main/openPageOverlay', {\r\n overlayContent: 'personalDonation',\r\n returnTarget: e.currentTarget\r\n })\r\n }\r\n\r\n\r\n const showStafetRoundCounter = document.location.hash.indexOf('stafetTeamRoundCounter') !== -1\r\n const showDonationReceipt = document.location.hash.indexOf('personalDonationReceipt') !== -1\r\n const showStafetTeamSignupReceipt = document.location.hash.indexOf('stafetTeamSignupReceipt') !== -1\r\n const showStafetTeamCreationReceipt = document.location.hash.indexOf('stafetTeamCreationReceipt') !== -1\r\n const showStafetTeamUpdateReceipt = document.location.hash.indexOf('stafetTeamUpdateReceipt') !== -1\r\n const showCreateHold = document.location.hash.indexOf('createTeam') !== -1 \r\n const showProfileDeleted = document.location.hash.indexOf('profileDeleted') !== -1 \r\n const showChangesSaved = document.location.hash.indexOf('changesSaved') !== -1 \r\n const showProfileCreated = document.location.hash.indexOf('tilmeldProfilKvittering') !== -1 \r\n const showStafetDonationReceipt = document.location.hash.indexOf('donationReceiptOverlay') !== -1 \r\n const showDeleteCancerProfileModal = document.location.hash.indexOf('deleteCancerProfileModal') !== -1 \r\n const showDeletePostOverlay = document.location.hash.indexOf('DeletePostOverlay') !== -1\r\n const showDeleteCommentOverlay = document.location.hash.indexOf('DeleteCommentOverlay') !== -1\r\n const showDeleteEventModal = document.location.hash.indexOf('deleteEventModal') !== -1\r\n const showFrivilligeShopWrongRoleModal = document.location.hash.indexOf('frivilligeShopWrongRoleModal') !== -1\r\n const showCalendarOverlay = document.location.hash.indexOf('calendarOverlay') !== -1\r\n const showLoginOverlay = document.location.hash.indexOf('LoginOverlay') !== -1\r\n\r\n if (showDonationReceipt) {\r\n store.dispatch('fundraising/showReceipt')\r\n store.dispatch('main/openPageOverlay', {\r\n overlayContent: 'personalDonation'\r\n })\r\n } else if (showStafetTeamSignupReceipt) {\r\n store.dispatch('main/openPageOverlay', {\r\n overlayContent: 'tilmeldHoldKvittering'\r\n })\r\n } else if (showStafetTeamCreationReceipt) {\r\n store.dispatch('main/openPageOverlay', {\r\n overlayContent: 'HoldOprettelseKvittering'\r\n })\r\n } else if (showStafetRoundCounter) {\r\n store.dispatch('main/openPageOverlay', {\r\n overlayContent: 'HoldetsRoundCounterOverlay'\r\n })\r\n } else if (showStafetTeamUpdateReceipt){\r\n store.dispatch('main/openPageOverlay', {\r\n overlayContent: 'HoldRedigerKvittering'\r\n })\r\n } else if (showCreateHold){\r\n store.dispatch('main/openPageOverlay', {\r\n overlayContent: 'OpretHoldOverlay'\r\n })\r\n } else if (showProfileDeleted) {\r\n store.dispatch('main/openPageOverlay', {\r\n overlayContent: 'ProfileDeleted'\r\n })\r\n } else if (showChangesSaved) {\r\n store.dispatch('main/openPageOverlay', {\r\n overlayContent: 'ChangesSaved'\r\n })\r\n }\r\n else if (showProfileCreated) {\r\n store.dispatch('main/openPageOverlay', {\r\n overlayContent: 'tilmeldProfilKvittering'\r\n })\r\n } \r\n else if (showStafetDonationReceipt) {\r\n store.dispatch('main/openPageOverlay', {\r\n overlayContent: 'donationReceiptOverlay'\r\n })\r\n }\r\n else if (showDeleteCancerProfileModal) {\r\n store.dispatch('main/openPageOverlay', {\r\n overlayContent: 'DeleteCancerProfileModal'\r\n })\r\n }\r\n else if (showDeletePostOverlay) {\r\n store.dispatch('main/openPageOverlay', {\r\n overlayContent: 'DeletePostOverlay'\r\n })\r\n }\r\n else if (showDeleteCommentOverlay) {\r\n store.dispatch('main/openPageOverlay', {\r\n overlayContent: 'DeleteCommentOverlay'\r\n })\r\n }\r\n else if (showDeleteEventModal) {\r\n store.dispatch('main/openPageOverlay', {\r\n overlayContent: 'DeleteEventModal'\r\n })\r\n }\r\n else if (showFrivilligeShopWrongRoleModal) {\r\n store.dispatch('main/openPageOverlay', {\r\n overlayContent: 'FrivilligeShopWrongRoleModal'\r\n })\r\n }\r\n else if (showCalendarOverlay) {\r\n store.dispatch('main/openPageOverlay', {\r\n overlayContent: 'CalendarOverlay'\r\n })\r\n }\r\n else if (showLoginOverlay) {\r\n store.dispatch('main/openPageOverlay', {\r\n overlayContent: 'LoginOverlay'\r\n })\r\n } \r\n\r\n return {\r\n startBurgermenu,\r\n startSearchoverlay,\r\n startDonationFlow\r\n }\r\n }\r\n}\r\n","import headerOptions from '../TheHeader/TheHeader.options'\r\n\r\nconst options = Object.assign({},headerOptions,{name: \"IndependentHeader\"})\r\nexport default options","import { createApp } from 'vue'\r\nimport options from './IndependentHeader.options'\r\n\r\nconst el = '.kb-component--independent-header'\r\nconst DOM = document.querySelector(el)\r\n\r\nexport default function (Store) {\r\n\r\n if(DOM){\r\n const template = DOM.innerHTML\r\n options.template = template\r\n const component = createApp(options).use(Store)\r\n component.mount(el)\r\n }\r\n}\r\n\r\n","import Glide from '@glidejs/glide'\r\nimport getLabel from 'foundation/js/getLabel'\r\nimport { onMounted, ref } from 'vue'\r\n\r\nconst unifyCardHeight = function (root) {\r\n root.value.querySelectorAll('.glide__slide').forEach((slide) => {\r\n slide.style.height = `auto`\r\n })\r\n}\r\n\r\nexport default {\r\n name: 'InfoCarousel',\r\n setup() {\r\n const root = ref(null)\r\n const options = {\r\n type: 'slider',\r\n rewind: false,\r\n startAt: 0,\r\n perView: 1,\r\n gap: 32,\r\n peek: {\r\n after: 150,\r\n before: 0\r\n },\r\n breakpoints: {\r\n 768: {\r\n gap: 18,\r\n peek: {\r\n after: 54,\r\n before: 0\r\n }\r\n }\r\n }\r\n }\r\n\r\n onMounted(() => {\r\n const glide = new Glide(root.value.parentNode, options)\r\n\r\n glide.mount()\r\n unifyCardHeight(root)\r\n\r\n root.value.parentNode.querySelectorAll('a').forEach((a) =>\r\n a.addEventListener('focus', function (event) {\r\n var el = event.target\r\n while (el && !el.hasAttribute('data-index')) {\r\n el = el.parentNode\r\n }\r\n\r\n var index = el?.attributes['data-index']?.value\r\n if (index) glide.go('=' + index)\r\n })\r\n )\r\n })\r\n\r\n return {\r\n getLabel,\r\n root\r\n }\r\n }\r\n}\r\n","import { createApp } from 'vue'\r\nimport options from './InfoCarousel.options'\r\n\r\nconst el = '.kb-component--info-carousel'\r\n\r\nexport default function (Store) {\r\n const DOM = document.querySelectorAll(el)\r\n if (DOM.length) {\r\n DOM.forEach((InfoCarouselDOM) => {\r\n if (InfoCarouselDOM.hasAttribute('data-v-app')) return false\r\n const template = InfoCarouselDOM.innerHTML\r\n options.template = template\r\n const component = createApp(options).use(Store)\r\n component.mount(InfoCarouselDOM)\r\n })\r\n }\r\n}\r\n","\r\n\r\n\r\n \r\n \r\n \r\n
\r\n {{\r\n getLabel('title')\r\n }}\r\n
\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n\r\n","import { onMounted, ref, computed } from \"vue\"\r\nimport { useStore } from \"vuex\"\r\nimport onTransitionendCallback from 'components/PageOverlay/methods/onTransitionendCallback'\r\n\r\nexport default {\r\n name: \"LoginOverlay\",\r\n props: {\r\n loginUrl: {\r\n type: String,\r\n required: true\r\n },\r\n createProfileUrl: {\r\n type: String,\r\n required: true\r\n }\r\n },\r\n setup(props){\r\n const store = useStore()\r\n const loginUrl = computed(() => props.loginUrl ?? store.state.main.page_overlay_content_data.loginUrl)\r\n const createProfileUrl = computed(() => props.createProfileUrl ?? store.state.main.page_overlay_content_data.createProfileUrl)\r\n const gtmActive = !!window?.dataLayer?.find(\r\n (element) => element['gtm.start']\r\n ) // check if gtm is active\r\n\r\n const descriptionWrapper = ref(null)\r\n\r\n let first,\r\n last,\r\n close\r\n\r\n const decodeHtml = (htmlRaw) => {\r\n const txt = document.createElement('textarea')\r\n txt.innerHTML = htmlRaw\r\n return txt.value\r\n }\r\n\r\n const tabTrap = function (e) {\r\n if (e.shiftKey && e.target.dataset.order === 'first') {\r\n e.preventDefault()\r\n close.focus()\r\n }\r\n\r\n if (!e.shiftKey && e.target.dataset.order === 'last') {\r\n e.preventDefault()\r\n close.focus()\r\n }\r\n\r\n if (!e.shiftKey && !e.target.dataset.order) {\r\n e.preventDefault()\r\n first.focus()\r\n }\r\n }\r\n\r\n onMounted(() => {\r\n\r\n var descriptionRaw = getLabel('text')\r\n var descriptionHtml = decodeHtml(descriptionRaw)\r\n descriptionWrapper.value.innerHTML = descriptionHtml\r\n \r\n first = document.querySelector(\r\n '.kb-button[data-order=\"first\"]'\r\n )\r\n last = document.querySelector(\r\n '.kb-button[data-order=\"last\"]'\r\n )\r\n close = document.querySelector('.kb-page-overlay__close')\r\n onTransitionendCallback(\r\n {\r\n opening() {\r\n first.focus()\r\n }\r\n },\r\n { persistent: true }\r\n )\r\n\r\n if (!gtmActive) return\r\n const orderId = new URLSearchParams(document.location.search).get(\r\n 'teamId'\r\n )\r\n })\r\n\r\n const getLabel = (labelKey) =>\r\n store.getters['labels/getLabel']({\r\n labelCollection: 'LoginOverlay',\r\n labelKey\r\n })\r\n\r\n return {\r\n loginUrl,\r\n createProfileUrl,\r\n descriptionWrapper,\r\n decodeHtml,\r\n tabTrap,\r\n getLabel\r\n }\r\n }\r\n}","import { render } from \"./LoginOverlay.vue?vue&type=template&id=81d10c78\"\nimport script from \"./LoginOverlay.vue?vue&type=script&lang=js\"\nexport * from \"./LoginOverlay.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"D:\\\\a\\\\1\\\\s\\\\frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\r\n\r\n\r\n \r\n \r\n {{ getLabel(\"lotteryFormTitle\") }}
\r\n\r\n \r\n\r\n \r\n (lotteryDropdown = e.target.value)\"/>\r\n\r\n \r\n
\r\n\r\n \r\n\r\n \r\n \r\n
\r\n \r\n\r\n \r\n {{ getLabel(\"winnerTitle\") }}
\r\n \r\n\r\n \r\n
{{ getLabel(\"winnerLotNumber\", [lotteryTicket.lotteryTicketId]) }}
\r\n\r\n
\r\n
\r\n\r\n \r\n \r\n
\r\n \r\n\r\n \r\n {{ getLabel(\"noPrizeTitle\") }}
\r\n\r\n {{ getLabel(\"noPrizeDescriptionText\", [lotteryTicket.lotteryTicketId]) }}
\r\n\r\n \r\n \r\n
\r\n \r\n\r\n \r\n \r\n\r\n","import { useStore } from 'vuex'\r\nimport { computed, ref } from 'vue'\r\nimport FormInputDropdown from \"../FormInputDropdown/FormInputDropdown\";\r\nimport FormInputTextField from 'components/FormInputTextField/FormInputTextField.vue'\r\nimport nonEmptyStringValidator from \"foundation/js/inputValidators/nonEmptyStringValidator\";\r\n\r\nexport default {\r\n name: \"LotteryForm\",\r\n props: {\r\n lotteryRounds : {\r\n type: Object,\r\n required: true\r\n }\r\n },\r\n components: {\r\n FormInputDropdown,\r\n FormInputTextField\r\n },\r\n setup(props){\r\n const store = useStore()\r\n const getLabel = (labelKey, params) =>\r\n store.getters['labels/getLabel']({\r\n labelCollection: 'lotteryForm',\r\n labelKey,\r\n params\r\n })\r\n \r\n const lotteryDropdown = ref('')\r\n const controlNumber = ref('')\r\n const displayFormValidationError = ref(false)\r\n const displayLotteryTicketError = ref(false)\r\n\r\n const showSpinner = computed(() => store.state.lottery.submitting)\r\n const lotteryTicket = computed(() => store.state.lottery.lottery_ticket)\r\n const showResultPage = ref(false)\r\n const controlNumberValidationErrorLabel = computed(() => \r\n getLabel(displayLotteryTicketError ? 'validationMessage' : getLabel('controlNumberError')))\r\n const lotteryDropdownOptions = computed(() => props.lotteryRounds.map(r => {\r\n return {\r\n name: r.roundName,\r\n value: r.roundId\r\n }\r\n }))\r\n\r\n\r\n const validateFields = () => {\r\n return nonEmptyStringValidator(lotteryDropdown.value)\r\n && nonEmptyStringValidator(controlNumber.value)\r\n }\r\n\r\n const onSubmit = () => {\r\n displayLotteryTicketError.value = false\r\n\r\n if(!validateFields()){\r\n displayFormValidationError.value = true\r\n\r\n return\r\n }\r\n\r\n store.dispatch('lottery/getLotteryTicketResult', {\r\n roundNumber: lotteryDropdown.value,\r\n lotteryTicketId: controlNumber.value\r\n })\r\n .then((resp) => {\r\n showResultPage.value = true\r\n })\r\n .catch((_) =>{\r\n displayLotteryTicketError.value = true\r\n })\r\n }\r\n\r\n const clear = () => {\r\n displayFormValidationError.value = false\r\n controlNumber.value = ''\r\n lotteryDropdown.value = ''\r\n showResultPage.value = false\r\n\r\n store.commit('lottery/SET_LOTTERY_TICKET', undefined)\r\n }\r\n\r\n return {\r\n lotteryDropdown,\r\n controlNumber,\r\n displayFormValidationError,\r\n nonEmptyStringValidator,\r\n showSpinner,\r\n lotteryTicket,\r\n showResultPage,\r\n displayLotteryTicketError,\r\n controlNumberValidationErrorLabel,\r\n lotteryDropdownOptions,\r\n getLabel,\r\n onSubmit,\r\n clear\r\n }\r\n }\r\n}","import { render } from \"./LotteryForm.vue?vue&type=template&id=5c7a6aac\"\nimport script from \"./LotteryForm.vue?vue&type=script&lang=js\"\nexport * from \"./LotteryForm.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"D:\\\\a\\\\1\\\\s\\\\frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\r\n\r\n\r\n \r\n\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n {{ data.saleLabelText }}\r\n
\r\n \r\n \r\n\r\n \r\n\r\n
\r\n {{ data.title }}\r\n
\r\n \r\n
\r\n
\r\n {{ data.displayPrice }}\r\n
\r\n \r\n
\r\n\r\n
\r\n\r\n \r\n\r\n","export default {\r\n name: 'MaterialCard',\r\n props: {\r\n data: {\r\n type: Object,\r\n required: true,\r\n default: {\r\n imageUrl: 'https://picsum.photos/500/700',\r\n title: 'Grundbog i små børns sorg Grundbog i små børns sorg Grundbog i små børns sorg Grundbog i små børns sorg',\r\n displayPrice: '139,-',\r\n url: 'https://www.dr.dk'\r\n }\r\n }\r\n },\r\n setup() {\r\n return {}\r\n }\r\n}\r\n","import { render } from \"./MaterialCard.vue?vue&type=template&id=2b3de732\"\nimport script from \"./MaterialCard.vue?vue&type=script&lang=js\"\nexport * from \"./MaterialCard.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"D:\\\\a\\\\1\\\\s\\\\frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\r\n\r\n\r\n \r\n\r\n
\r\n\r\n \r\n \r\n
\r\n\r\n","import { useStore } from 'vuex'\r\nimport { onMounted, computed, ref } from 'vue'\r\n\r\nexport default {\r\n name: 'MemberListOverlayFVL',\r\n props: {\r\n },\r\n setup() {\r\n const store = useStore()\r\n\r\n const groupId = computed(() => store.state.main.page_overlay_content_data.groupId)\r\n const isSubmitting = computed(()=> store.state.frivillige.is_submitting)\r\n const members = computed(()=> store.state.frivillige.member_list_data)\r\n \r\n const skip = ref(0)\r\n const take = ref(10) \r\n\r\n const canMessage = ref(false)\r\n const canRemove = ref(false)\r\n\r\n const memberCount = computed(() => store.state.frivillige.member_list_data_total)\r\n\r\n const fetchGruppemedlemmer = function () {\r\n store.dispatch('frivillige/fetchGruppemedlemmerData', {\r\n pageId: store.state.main.page_id,\r\n groupId: groupId.value,\r\n skip: skip.value,\r\n take: take.value\r\n })\r\n .then(result => {\r\n canRemove.value = result.canRemoveMembers\r\n canMessage.value = result.canMessage\r\n })\r\n }\r\n\r\n const loadMore = function(){\r\n skip.value = take.value\r\n take.value = (take.value + skip.value)\r\n fetchGruppemedlemmer()\r\n }\r\n\r\n onMounted(fetchGruppemedlemmer)\r\n\r\n const toggleAccordion = function (e) {\r\n const isExpanded = !!(\r\n e.currentTarget.getAttribute('aria-expanded') === 'true'\r\n )\r\n const accordionTarget = document.querySelector(\r\n `#${e.currentTarget.getAttribute('aria-controls')}`\r\n )\r\n const chevronTarget = e.currentTarget.querySelector(\r\n '.kb-member-list-overlay__member-chevron'\r\n )\r\n\r\n chevronTarget.classList[isExpanded ? 'remove' : 'add'](\r\n 'kb-member-list-overlay__member-chevron--open'\r\n )\r\n accordionTarget.classList[isExpanded ? 'remove' : 'add'](\r\n 'kb-member-list-overlay__content--open'\r\n )\r\n e.currentTarget.setAttribute(\r\n 'aria-expanded',\r\n isExpanded ? 'false' : 'true'\r\n )\r\n\r\n accordionTarget.querySelectorAll('a').forEach((a) => {\r\n if (isExpanded) {\r\n a.setAttribute('tabindex', -1)\r\n } else {\r\n a.removeAttribute('tabindex')\r\n }\r\n })\r\n }\r\n\r\n const getLabel = (labelKey, strings) => {\r\n let label = store.getters['labels/getLabel']({\r\n labelCollection: 'MemberListOverlayFVL',\r\n labelKey\r\n })\r\n\r\n if (strings) {\r\n strings.forEach((str, index) => {\r\n label = label.replace(`{${index}}`, str)\r\n })\r\n }\r\n\r\n return label\r\n }\r\n\r\n const handleRemoveMember = async (frivilligprofilId) => {\r\n const config = {\r\n groupId: groupId.value, \r\n frivilligprofilId: frivilligprofilId\r\n }\r\n await store.dispatch(\"frivillige/removeMember\",config);\r\n store.dispatch('main/closePageOverlay')\r\n };\r\n\r\n const getRolleText = (roller) => {\r\n return roller\r\n .map(r => {\r\n return r.gruppeName == undefined\r\n ? `${r.rolleName}`\r\n : `${r.rolleName} - ${r.gruppeName}`\r\n })\r\n .join(', ')\r\n }\r\n\r\n return {\r\n members,\r\n memberCount,\r\n isSubmitting,\r\n canRemove,\r\n canMessage,\r\n toggleAccordion,\r\n handleRemoveMember,\r\n getLabel,\r\n fetchGruppemedlemmer,\r\n loadMore,\r\n getRolleText\r\n }\r\n }\r\n}","import { render } from \"./MemberListOverlayFVL.vue?vue&type=template&id=0df7a4b3\"\nimport script from \"./MemberListOverlayFVL.vue?vue&type=script&lang=js\"\nexport * from \"./MemberListOverlayFVL.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"D:\\\\a\\\\1\\\\s\\\\frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\r\n\r\n\r\n \r\n\r\n
\r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n
\r\n\r\n","import { useStore } from 'vuex'\r\nimport { onMounted,computed } from 'vue'\r\n\r\nexport default {\r\n name: \"MemberOverlay\",\r\n\r\n setup(){\r\n const store = useStore()\r\n\r\n const isSubmitting = computed(()=> store.state.forum.is_submitting)\r\n const userId = computed(()=> store.state.main.page_overlay_content_data.userId)\r\n\r\n const memberData = computed(()=>{\r\n return store.state.forum.member_data\r\n })\r\n\r\n onMounted(() => {\r\n store.dispatch('forum/getMemberData', { userId: userId.value })\r\n })\r\n\r\n const getLabel = (labelKey) =>\r\n store.getters[\"labels/getLabel\"]({\r\n labelCollection: \"MemberOverlay\",\r\n labelKey,\r\n });\r\n \r\n return {\r\n memberData,\r\n isSubmitting,\r\n getLabel\r\n }\r\n }\r\n}","import { render } from \"./MemberOverlay.vue?vue&type=template&id=677cb3a0\"\nimport script from \"./MemberOverlay.vue?vue&type=script&lang=js\"\nexport * from \"./MemberOverlay.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"D:\\\\a\\\\1\\\\s\\\\frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\r\n\r\n\r\n \r\n\r\n
\r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n
\r\n\r\n","import { useStore } from 'vuex'\r\nimport { onMounted,computed, ref } from 'vue'\r\n\r\nexport default {\r\n name: \"MemberOverlayProfileCard\",\r\n setup(){\r\n const store = useStore()\r\n\r\n const isSubmitting = computed(()=> store.state.frivilligprofil.is_submitting)\r\n const userProfileId = computed(() => store.state.main.page_overlay_content_data.userId)\r\n\r\n const memberData = computed(()=>{\r\n return store.state.frivilligprofil.member_data\r\n })\r\n\r\n const memberDataFetched = ref(false);\r\n\r\n onMounted(() => {\r\n store.dispatch('frivilligprofil/fetchMemberData', {\r\n pageId: store.state.main.page_id,\r\n userProfileId: userProfileId.value\r\n }).then(() => \r\n memberDataFetched.value = true\r\n )\r\n })\r\n\r\n const getLabel = (labelKey) =>\r\n store.getters[\"labels/getLabel\"]({\r\n labelCollection: \"MemberOverlayProfileCard\",\r\n labelKey: labelKey,\r\n });\r\n \r\n return {\r\n memberDataFetched,\r\n memberData,\r\n isSubmitting,\r\n getLabel\r\n }\r\n }\r\n}","import { render } from \"./MemberOverlayProfileCard.vue?vue&type=template&id=28a742b6\"\nimport script from \"./MemberOverlayProfileCard.vue?vue&type=script&lang=js\"\nexport * from \"./MemberOverlayProfileCard.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"D:\\\\a\\\\1\\\\s\\\\frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { useStore } from 'vuex'\r\n\r\nexport default {\r\n name: \"MitIdLogout\",\r\n setup(){\r\n const store = useStore()\r\n\r\n const logout = () => {\r\n store.dispatch('mitid/logout')\r\n .then((_) => {\r\n window.location.reload()\r\n })\r\n }\r\n\r\n return {\r\n logout\r\n }\r\n }\r\n}","\r\n\r\n\r\n\r\n \r\n\r\n
\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n
\r\n\r\n","import { useStore } from 'vuex'\r\nimport { computed, ref, onBeforeMount} from 'vue'\r\n\r\nimport nonEmptyStringValidator from \"foundation/js/inputValidators/nonEmptyStringValidator\";\r\nimport FormInputDropdown from \"../FormInputDropdown/FormInputDropdown\";\r\n\r\nexport default {\r\n name: \"MoveFileOverlay\",\r\n components: {\r\n FormInputDropdown\r\n },\r\n setup(){\r\n const store = useStore()\r\n\r\n const overlayMode = computed(()=> store.state.frivillige.active_overlay_mode)\r\n\r\n onBeforeMount(() => {\r\n store.dispatch('frivillige/getFolderDropdownOptions')\r\n })\r\n\r\n const activeFileName = computed(()=> store.state.frivillige.active_file_name)\r\n const activeFolderName = computed(()=> store.state.frivillige.active_folder_name)\r\n const activeName = computed(()=> overlayMode === 'Dokument' ? activeFileName.value : activeFolderName.value)\r\n\r\n const folderDropdown = ref()\r\n const folderDropdownOptions = computed(()=> store.state.frivillige.folder_dropdown_options)\r\n\r\n const isSubmitting = computed(()=> store.state.frivillige.is_submitting)\r\n\r\n let displayError = ref(false)\r\n\r\n const isFormValid = () => {\r\n return nonEmptyStringValidator(folderDropdown.value)\r\n };\r\n\r\n const submitMoveFile = () => {\r\n const isValid = isFormValid();\r\n displayError.value = !isValid;\r\n\r\n if (isValid) {\r\n store.dispatch(\"frivillige/submitMoveFileOrFolder\", {\r\n mappeKode: folderDropdown.value\r\n })\r\n .then(() => {\r\n store.dispatch('main/closePageOverlay')\r\n store.dispatch('search/refreshSearches')\r\n });\r\n }\r\n };\r\n const determineLabelCollection = function() {\r\n if(overlayMode.value === \"Dokument\") {\r\n return \"MoveFileOverlay\"\r\n } else if (overlayMode.value === \"Mappe\"){\r\n return \"MoveFolderOverlay\"\r\n } \r\n }\r\n\r\n const getLabel = (labelKey, replacements) => {\r\n let label = store.getters['labels/getLabel']({ labelCollection: determineLabelCollection(), labelKey: labelKey })\r\n if (replacements) {\r\n replacements.forEach((replacement, index) => {\r\n label = label.replace(`{${index}}`, replacement)\r\n })\r\n }\r\n return label\r\n }\r\n\r\n return {\r\n getLabel,\r\n submitMoveFile,\r\n nonEmptyStringValidator,\r\n activeName,\r\n folderDropdown,\r\n folderDropdownOptions,\r\n isSubmitting\r\n }\r\n }\r\n}","import { render } from \"./MoveFileOverlay.vue?vue&type=template&id=ea984fa4\"\nimport script from \"./MoveFileOverlay.vue?vue&type=script&lang=js\"\nexport * from \"./MoveFileOverlay.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"D:\\\\a\\\\1\\\\s\\\\frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\r\n\r\n\r\n \r\n \r\n \r\n\r\n","import { computed } from 'vue'\r\nimport {useStore} from 'vuex'\r\n\r\nexport default {\r\n name: \"NoSearchResults\",\r\n props: {\r\n guids: {\r\n type: Array,\r\n required: true\r\n }\r\n },\r\n setup(props){\r\n const store = useStore()\r\n\r\n const getLabel = (labelKey) => store.getters['labels/getLabel']({ labelCollection: \"noResults\", labelKey: labelKey })\r\n \r\n const totalCount = computed(() => {\r\n return props.guids.reduce((sum, guid) => sum + store.state.search.scoped_total[guid], 0)\r\n })\r\n\r\n\r\n return {\r\n totalCount,\r\n getLabel\r\n }\r\n }\r\n}","import { render } from \"./NoSearchResults.vue?vue&type=template&id=03bcfe96\"\nimport script from \"./NoSearchResults.vue?vue&type=script&lang=js\"\nexport * from \"./NoSearchResults.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"D:\\\\a\\\\1\\\\s\\\\frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\r\n\r\n\r\n \r\n \r\n \r\n\r\n 0\">\r\n {{ getLabel('resultOutForTitle', [notifications.length, totalNumberOfNotifications]) }}\r\n notifications.length\">\r\n \r\n \r\n
\r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n\r\n","import { computed, onMounted } from \"vue\"\r\nimport { useStore } from \"vuex\"\r\nimport getLabelFromStore from '../../foundation/js/getLabel'\r\n\r\nexport default {\r\n name: \"NotificationList\",\r\n props: {\r\n guid: {\r\n type: String,\r\n required: true\r\n },\r\n skip: {\r\n type: Number,\r\n default: 0\r\n },\r\n take: {\r\n type: Number,\r\n default: 10\r\n }\r\n },\r\n setup(props) { \r\n const store = useStore()\r\n\r\n const notifications = computed(() => store.state.search.results[props.guid] ?? [])\r\n const totalNumberOfNotifications = computed(() => store.state.search.scoped_total[props.guid] ?? 0)\r\n const showSpinner = computed(() => store.state.search.search_inprogress[props.guid])\r\n\r\n onMounted(() => {\r\n store.dispatch('search/initSearchScope', {\r\n guid: props.guid,\r\n firstPageSize: props.take,\r\n showMorePageSize: props.take,\r\n url: process.env.GET_FORUM_NOTIFICATIONS\r\n })\r\n \r\n store.dispatch('search/performSearch', {\r\n guid: props.guid,\r\n query: '',\r\n skip: props.skip,\r\n take: props.take\r\n })\r\n })\r\n\r\n const getLabel = (key, strings) => {\r\n let label = getLabelFromStore({\r\n labelKey: key,\r\n labelCollection: 'notificationList'\r\n })\r\n\r\n if (strings) {\r\n strings.forEach((str, index) => {\r\n label = label.replace(`{${index}}`, str)\r\n })\r\n }\r\n\r\n return label\r\n }\r\n\r\n const getMoreNotifications = () => {\r\n store.dispatch('search/performMoreSearch', { guid: props.guid })\r\n }\r\n\r\n const rejectNotification = (notificationId) => {\r\n store.dispatch('forum/rejectNotification', { notificationId: notificationId, callback: updateList})\r\n }\r\n\r\n const approveNotification = (notificationId) => {\r\n store.dispatch('forum/approveNotification', { notificationId: notificationId, callback: updateList})\r\n }\r\n\r\n const updateList = () => {\r\n store.dispatch('search/performSearch', {\r\n guid: props.guid,\r\n guery: '',\r\n skip: 0,\r\n take: notifications.value.length \r\n })\r\n }\r\n\r\n return {\r\n notifications,\r\n totalNumberOfNotifications,\r\n showSpinner,\r\n getMoreNotifications,\r\n getLabel,\r\n rejectNotification,\r\n approveNotification\r\n }\r\n }\r\n}","import { render } from \"./NotificationList.vue?vue&type=template&id=1c4c1ac2\"\nimport script from \"./NotificationList.vue?vue&type=script&lang=js\"\nexport * from \"./NotificationList.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"D:\\\\a\\\\1\\\\s\\\\frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\r\n\r\n\r\n \r\n \r\n \r\n
\r\n
\r\n {{\r\n getLabel('title')\r\n }}\r\n
\r\n
\r\n \r\n \r\n {{\r\n getLabel('text')\r\n }}\r\n
\r\n \r\n \r\n\r\n \r\n\r\n
\r\n \r\n
\r\n
Vent venligst mens vi kontrollere om du har tidligere hold der kan genaktiveres.
\r\n
\r\n \r\n\r\n \r\n
1\">\r\n \r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n\r\n \r\n
\r\n {{\r\n getLabel('reuseMotivationTitle')\r\n }}
\r\n \r\n {{ previousTeams[0].name }}\r\n
\r\n \r\n \r\n \r\n
\r\n \r\n\r\n \r\n
\r\n {{ getLabel('noPreviousTeamText') }}
\r\n \r\n \r\n
\r\n \r\n\r\n","import { onMounted, watch, ref, computed, onUpdated } from \"vue\"\r\nimport { useStore } from \"vuex\"\r\nimport onTransitionendCallback from 'components/PageOverlay/methods/onTransitionendCallback'\r\n\r\nexport default {\r\n name: \"OpretHoldOverlay\",\r\n props: {\r\n createHoldUrl: {\r\n type: String,\r\n required: false\r\n }\r\n },\r\n setup(props){\r\n const store = useStore()\r\n const gtmActive = !!window?.dataLayer?.find(\r\n (element) => element['gtm.start']\r\n ) // check if gtm is active\r\n\r\n const createHoldUrl = computed(() => props.createHoldUrl ?? store.state.main.page_overlay_content_data.createHoldUrl)\r\n const reactivateHoldUrl = computed(() => `${createHoldUrl.value}?previous-holdkode=${selectedPreviousTeam.value}`)\r\n\r\n const selectedPreviousTeam = ref(null)\r\n\r\n const previousTeams = computed(()=> {\r\n const teamlist = store.state.stafet.previousTeams\r\n return (Array.isArray(teamlist)) \r\n ? teamlist\r\n : null\r\n })\r\n\r\n const showSpinner = computed(()=>previousTeams.value === null)\r\n\r\n let first,\r\n last,\r\n close\r\n \r\n\r\n const tabTrap = function (e) {\r\n if (e.shiftKey && e.target.dataset.order === 'first') {\r\n e.preventDefault()\r\n close.focus()\r\n }\r\n\r\n if (!e.shiftKey && e.target.dataset.order === 'last') {\r\n e.preventDefault()\r\n close.focus()\r\n }\r\n\r\n if (!e.shiftKey && !e.target.dataset.order) {\r\n e.preventDefault()\r\n first.focus()\r\n }\r\n }\r\n\r\n const handleCreateTeam = function(){\r\n location.href = createHoldUrl.value\r\n }\r\n\r\n const handleReactivateTeam = function(){\r\n location.href = reactivateHoldUrl.value\r\n }\r\n\r\n onMounted(() => {\r\n store.dispatch('stafet/getPreviousTeams')\r\n first = document.querySelector(\r\n '[data-order=\"first\"]'\r\n )\r\n last = document.querySelector(\r\n '[data-order=\"last\"]'\r\n )\r\n close = document.querySelector('.kb-page-overlay__close')\r\n onTransitionendCallback(\r\n {\r\n opening() {\r\n if(first){\r\n first.focus()\r\n } else {\r\n close.focus()\r\n }\r\n \r\n }\r\n },\r\n { persistent: true }\r\n )\r\n })\r\n\r\n onUpdated(()=>{\r\n first = document.querySelector(\r\n '[data-order=\"first\"]'\r\n )\r\n last = document.querySelector(\r\n '[data-order=\"last\"]'\r\n )\r\n\r\n selectedPreviousTeam.value = !selectedPreviousTeam.value \r\n ? selectedPreviousTeam.value = previousTeams.value[0].id\r\n : selectedPreviousTeam.value\r\n })\r\n\r\n return {\r\n handleCreateTeam,\r\n handleReactivateTeam,\r\n tabTrap,\r\n previousTeams,\r\n showSpinner,\r\n selectedPreviousTeam,\r\n getLabel: (labelKey) =>\r\n store.getters['labels/getLabel']({\r\n labelCollection: 'OpretHoldOverlay',\r\n labelKey\r\n })\r\n }\r\n }\r\n}","import { render } from \"./OpretHoldOverlay.vue?vue&type=template&id=742b3720\"\nimport script from \"./OpretHoldOverlay.vue?vue&type=script&lang=js\"\nexport * from \"./OpretHoldOverlay.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"D:\\\\a\\\\1\\\\s\\\\frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\r\n\r\n\r\n \r\n \r\n\r\n \r\n\r\n \r\n - \r\n
\r\n \r\n \r\n
\r\n \r\n \r\n {{ getLabel('productNameLabel') }} | \r\n {{ getLabel('productNumberLabel') }} | \r\n {{ getLabel('amountLabel') }} | \r\n {{ getLabel('priceLabel') }} | \r\n
\r\n \r\n \r\n \r\n {{ order.productName }} | \r\n {{ order.productId }} | \r\n {{ getLabel('amountLabel') }}: {{ order.quantity }} | \r\n {{ order.price.toLocaleString('da-DK', { style: \"currency\", currency: \"DKK\" }) }} | \r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n \r\n\r\n","import { computed } from \"vue\"\r\nimport { useStore } from \"vuex\"\r\nimport GetLabel from \"foundation/js/getLabel\"\r\n\r\nexport default {\r\n name: \"OrdreOverview\",\r\n props: {\r\n orders: {\r\n type: Object,\r\n required: true\r\n },\r\n },\r\n setup(props) {\r\n const store = useStore()\r\n \r\n const results = computed(() => {\r\n return props.orders\r\n })\r\n\r\n return {\r\n results,\r\n getLabel: (labelKey) => GetLabel({ labelKey, labelCollection: 'OrdreOverview' })\r\n }\r\n\r\n }\r\n}","import { render } from \"./OrdreOverview.vue?vue&type=template&id=28ee00d4\"\nimport script from \"./OrdreOverview.vue?vue&type=script&lang=js\"\nexport * from \"./OrdreOverview.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"D:\\\\a\\\\1\\\\s\\\\frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\r\n\r\n\r\n \r\n\r\n\r\n","\r\n\r\n\r\n \r\n \r\n \r\n \r\n {{ userName }}
\r\n {{ getLabel('loginHelpText') }}\r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n \r\n {{ getLabel('notificationsHelpText') }}
\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n\r\n\r\n","import { render } from \"./SubNavProfile.vue?vue&type=template&id=6592b596\"\nimport script from \"./SubNavProfile.vue?vue&type=script&lang=js\"\nexport * from \"./SubNavProfile.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"D:\\\\a\\\\1\\\\s\\\\frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import SubNavigationMobile from './childComponents/SubNavigationMobile'\r\nimport SubNavProfile from './childComponents/SubNavProfile'\r\nimport {ref, onBeforeMount, computed} from 'vue'\r\nimport addScrollCallback from \"../../foundation/js/addScrollCallback\";\r\nimport { useStore } from 'vuex';\r\n\r\n\r\nexport default {\r\n name: \"SubNavigation\",\r\n components: {SubNavigationMobile, SubNavProfile},\r\n props: {\r\n userData: {\r\n type: Object,\r\n required: false\r\n }\r\n },\r\n setup(props){\r\n const store = useStore()\r\n const mobileMenuOpen = ref(false)\r\n\r\n const overlay = document.createElement('div')\r\n overlay.classList.add(\r\n 'kb-page-overlay__cover',\r\n 'kb-page-overlay--subnavigation'\r\n )\r\n\r\n let bodysize = 0\r\n const toggleMobileMenu = function (e,originalTrigger) {\r\n mobileMenuOpen.value = !mobileMenuOpen.value\r\n overlay.classList.toggle('kb-page-overlay--subnavigation--visible')\r\n\r\n // move focus to original trigger button on the page\r\n if(!mobileMenuOpen.value){\r\n if(originalTrigger){\r\n originalTrigger.focus()\r\n }\r\n }\r\n \r\n // close the mobilemenu when the screen resizes\r\n // this to prevent the menu from staying open if the screen resizes to desktop\r\n const overlayElement = document.body\r\n const resizeObserver = new ResizeObserver((entry) => {\r\n if(!bodysize){\r\n bodysize = entry[0].contentRect.width\r\n } else {\r\n bodysize = 0\r\n mobileMenuOpen.value = false\r\n overlay.classList.remove('kb-page-overlay--subnavigation--visible')\r\n resizeObserver.unobserve(overlayElement)\r\n }\r\n\r\n })\r\n resizeObserver.observe(overlayElement);\r\n }\r\n\r\n const smallScreensStickyControls = function () {\r\n const oldScrollY = ref(0)\r\n const subNav = document.querySelector('.kb-sub-navigation')\r\n\r\n const showClass = 'kb-sub-navigation--mobile-sticky'\r\n\r\n addScrollCallback(() => {\r\n const direction =\r\n window.scrollY - oldScrollY.value > 0 ? 'down' : 'up'\r\n oldScrollY.value = window.scrollY\r\n const scrolledOverViewportHeight = window.pageYOffset > 250 // window.innerHeight\r\n\r\n //show subnav when scrolling up once we are past a certain threshold\r\n if (direction === 'up' && scrolledOverViewportHeight) {\r\n // show sticky\r\n // remove hide nav above wrapper to animate in\r\n subNav.classList.add(showClass)\r\n } else {\r\n if (subNav.classList.contains(showClass)) {\r\n subNav.classList.remove(showClass)\r\n }\r\n }\r\n\r\n return false\r\n })\r\n }\r\n\r\n overlay.addEventListener('click', toggleMobileMenu)\r\n\r\n onBeforeMount(() => {\r\n document.documentElement.classList.add('kb-has-subnav')\r\n document.body.appendChild(overlay)\r\n smallScreensStickyControls()\r\n store.dispatch('main/setUserData', props.userData)\r\n })\r\n\r\n return {\r\n toggleMobileMenu,\r\n mobileMenuOpen\r\n }\r\n }\r\n}\r\n","import { render } from \"./SubNavigationMobile.vue?vue&type=template&id=3f54b688\"\nimport script from \"./SubNavigationMobile.vue?vue&type=script&lang=js\"\nexport * from \"./SubNavigationMobile.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"D:\\\\a\\\\1\\\\s\\\\frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { createApp } from 'vue'\r\nimport options from './SubNavigation.options'\r\n\r\nconst el = '.kb-component--sub-navigation'\r\nconst DOM = document.querySelector(el)\r\n\r\nexport default function (Store) {\r\n if (!DOM || DOM.hasAttribute('data-v-app')) return\r\n\r\n const generalLink = {\r\n href: DOM.querySelector(':scope > A')?.href,\r\n displayName: DOM.querySelector(':scope > A')?.innerText\r\n }\r\n\r\n const subLinks = Array.from(DOM.querySelectorAll(':scope > UL A')).map(\r\n (link) => {\r\n return {\r\n href: link?.href,\r\n displayName: link?.innerText,\r\n ariaCurrent: link?.ariaCurrent\r\n }\r\n }\r\n )\r\n\r\n Store.commit('main/set_sub_navigation_links', { generalLink, subLinks })\r\n const props = {\r\n userData: DOM.dataset.userData ? JSON.parse(DOM.dataset.userData) : null\r\n }\r\n const component = createApp(options, props).use(Store)\r\n\r\n const template = DOM.outerHTML\r\n options.template = template\r\n component.mount(el)\r\n}\r\n","import { createApp } from 'vue'\r\nimport options from './TheHeader.options'\r\n\r\nconst el = '.kb-component--the-header'\r\nconst DOM = document.querySelector(el)\r\n\r\nexport default function (Store) {\r\n if (DOM && !DOM.hasAttribute('data-v-app')) {\r\n const component = createApp(options).use(Store)\r\n\r\n const donateButton = DOM.querySelector('.kb-js--donate-button')\r\n const donationSettings = donateButton?.dataset.donationSettings\r\n if (donationSettings)\r\n Store.commit(\r\n 'fundraising/set_donation_settings',\r\n JSON.parse(donationSettings)\r\n )\r\n\r\n const template = DOM.outerHTML\r\n options.template = template\r\n component.mount(el)\r\n }\r\n}\r\n","import onTransitionendCallback from 'components/PageOverlay/methods/onTransitionendCallback'\r\nimport pageOverlayOpeningCallback from 'foundation/js/pageOverlayOpeningCallback'\r\nimport pageOverlayClosingCallback from 'foundation/js/pageOverlayClosingCallback'\r\n\r\nimport componentsToInititalize from './OverlayComponents.init'\r\n\r\nconst el = '.kb-component--overlay-link-interceptor'\r\nconst DOM = document.querySelector(el)\r\nconst overlayLinksEl = '[content-type=overlaylinks]'\r\n\r\nconst isVisible = function (element) {\r\n if (\r\n window.getComputedStyle(element).getPropertyValue('visibility') ===\r\n 'hidden'\r\n ) {\r\n return false\r\n }\r\n if (\r\n window.getComputedStyle(element).getPropertyValue('display') === 'none'\r\n ) {\r\n return false\r\n }\r\n\r\n return true\r\n}\r\n\r\nconst getLastAnchor = function (overlay) {\r\n let last = undefined\r\n Array.from(overlay.querySelectorAll('a')).map((elem) => {\r\n let lastNotFound = true\r\n if (isVisible(elem) && lastNotFound) {\r\n elem.dataset.order = 'last'\r\n lastNotFound = false\r\n last = elem\r\n }\r\n })\r\n return last\r\n}\r\n\r\nconst getFirstAnchor = function (overlay) {\r\n let first = undefined\r\n Array.from(overlay.querySelectorAll('a'))\r\n .toReversed()\r\n .map((elem) => {\r\n let firstNotFound = true\r\n if (isVisible(elem) && firstNotFound) {\r\n elem.dataset.order = 'first'\r\n firstNotFound = false\r\n first = elem\r\n }\r\n })\r\n return first\r\n}\r\n\r\nexport default function (Store) {\r\n if (!DOM || DOM.hasAttribute('data-v-app')) return\r\n\r\n const openArticleOverlay = function (overlay, content) {\r\n overlay.querySelector('.kb-article-overlay--target').innerHTML = content\r\n overlay.querySelector('.kb-article-overlay--target').scrollTop = 0 // scroll should be reset inside overlay\r\n\r\n const last = getLastAnchor(overlay)\r\n const first = getFirstAnchor(overlay)\r\n\r\n last.addEventListener('keydown', (e) => {\r\n if (!e.shiftKey) {\r\n e.preventDefault()\r\n first.focus()\r\n }\r\n })\r\n\r\n first.addEventListener('keydown', (e) => {\r\n if (e.shiftKey) {\r\n e.preventDefault()\r\n last.focus()\r\n }\r\n })\r\n\r\n componentsToInititalize(Store)\r\n overlay\r\n .querySelector('.kb-page-overlay__container')\r\n .classList.add('open')\r\n Store.commit('main/set_article_overlay_open', true)\r\n onTransitionendCallback({\r\n opening() {\r\n pageOverlayOpeningCallback()\r\n overlay.querySelector('.kb-page-overlay__close').focus()\r\n },\r\n statePropName: 'article_overlay_open',\r\n parent: overlay\r\n })\r\n }\r\n\r\n const closeArticleOverlay = function (overlay) {\r\n overlay\r\n .querySelector('.kb-page-overlay__container')\r\n .classList.remove('open')\r\n overlay\r\n .querySelector('.kb-page-overlay__container')\r\n .classList.add('closed')\r\n Store.commit('main/set_article_overlay_open', false)\r\n onTransitionendCallback({\r\n closing() {\r\n overlay\r\n .querySelector('.kb-page-overlay__container')\r\n .classList.remove('closed')\r\n overlay\r\n .querySelector('.kb-page-overlay__container')\r\n .classList.add('ready')\r\n pageOverlayClosingCallback()\r\n },\r\n statePropName: 'article_overlay_open',\r\n parent: overlay\r\n })\r\n }\r\n\r\n const overlay = document.createElement('div')\r\n overlay.classList.add('kb-page-overlay')\r\n overlay.innerHTML =\r\n ''\r\n overlay\r\n .querySelector('.kb-page-overlay__close')\r\n .addEventListener('click', closeArticleOverlay.bind(this, overlay))\r\n overlay\r\n .querySelector('.kb-page-overlay__cover')\r\n .addEventListener('click', closeArticleOverlay.bind(this, overlay))\r\n overlay\r\n .querySelector('.kb-page-overlay__container')\r\n .addEventListener('keydown', (e) => {\r\n if (e.key === 'Escape') closeArticleOverlay(overlay)\r\n })\r\n\r\n const clickHandler = function (e) {\r\n e.preventDefault()\r\n var href = process.env.ARTICLEOVERLAY_DATA\r\n ? process.env.ARTICLEOVERLAY_DATA\r\n : e.target.getAttribute('href')\r\n\r\n if (!href) {\r\n href = e.target.closest('a').getAttribute('href')\r\n }\r\n\r\n Store.dispatch('main/getArticleOverlayContent', href).then(\r\n (content) => {\r\n openArticleOverlay(overlay, content)\r\n }\r\n )\r\n }\r\n\r\n if (DOM && document.querySelector(overlayLinksEl)) {\r\n const DOM_LINKS = document.querySelector(overlayLinksEl)\r\n const overlayLinks = JSON.parse(DOM_LINKS.textContent)\r\n if (!document.body.contains(overlay)) document.body.appendChild(overlay)\r\n\r\n overlayLinks.forEach((element) => {\r\n // Add data-overlay-link attribute to all links to given element, that are inside rich text blocks\r\n const richTextElements = document.querySelectorAll('.kb-rich-text')\r\n\r\n richTextElements.forEach((richTextElement) => {\r\n richTextElement\r\n .querySelectorAll(`a[href='${element}']`)\r\n .forEach((link) =>\r\n link.setAttribute('data-overlay-link', true)\r\n )\r\n })\r\n })\r\n\r\n document\r\n .querySelectorAll('[data-overlay-link]')\r\n .forEach((link) => link.addEventListener('click', clickHandler))\r\n }\r\n}\r\n","\r\n\r\n\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n\r\n \r\n \r\n
\r\n
\r\n\r\n","\r\n\r\n\r\n \r\n \r\n \r\n \r\n\r\n","\r\n\r\n\r\n \r\n\r\n","import { render } from \"./PrimaryLink.vue?vue&type=template&id=34420b7a\"\nimport script from \"./PrimaryLink.vue?vue&type=script&lang=js\"\nexport * from \"./PrimaryLink.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"D:\\\\a\\\\1\\\\s\\\\frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\r\n\r\n\r\n \r\n\r\n","import {useStore} from 'vuex'\r\nimport {computed,onMounted,nextTick} from 'vue'\r\nimport PrimaryLink from './subcomponents/PrimaryLink'\r\nimport SecondaryLink from './subcomponents/SecondaryLink'\r\nimport onTransitionendCallback from 'components/PageOverlay/methods/onTransitionendCallback'\r\nimport GetLabel from 'foundation/js/getLabel'\r\n\r\nexport default {\r\n name: \"BurgerMenu\",\r\n components: {PrimaryLink,SecondaryLink},\r\n setup(){\r\n const store = useStore()\r\n\r\n const linkData = computed(()=>store.state.main.burger_menu_links)\r\n\r\n let first,last,close,\r\n showFunctionalButtons = false\r\n\r\n let isSimple = document.querySelector('nav.kb-component--burger-menu')?.hasAttribute('is-simple')\r\n let isIndependent = document.querySelector('body').classList.contains('kb-independent-site')\r\n let showReturnLink = document.querySelector('nav.kb-component--burger-menu')?.hasAttribute('show-return-link')\r\n\r\n const primaryLinkFirstLast = (linkindex)=>{\r\n const hasSecondaryLinks = !!linkData.value.secondary.length\r\n if(linkindex === 0) return 'first'\r\n if(!hasSecondaryLinks && (linkindex === (linkData.value.primary.length-1))) return 'last'\r\n return linkindex\r\n }\r\n\r\n const tabTrap = function(e){ \r\n if(e.shiftKey && e.target.dataset.order === 'first'){\r\n e.preventDefault()\r\n close.focus()\r\n }\r\n\r\n if(!e.shiftKey && e.target.dataset.order === 'last'){\r\n e.preventDefault()\r\n close.focus()\r\n }\r\n \r\n if(!e.shiftKey && !e.target.dataset.order){\r\n e.preventDefault()\r\n first.focus()\r\n }\r\n }\r\n\r\n onMounted(()=>{\r\n first = document.querySelector('.kb-burger-menu__link[data-order=\"first\"]')\r\n last = document.querySelector('.kb-burger-menu__link[data-order=\"last\"]')\r\n close = document.querySelector('.kb-page-overlay__close')\r\n\r\n onTransitionendCallback({\r\n opening(){\r\n first.focus()\r\n }\r\n }, { persistent: true })\r\n })\r\n\r\n return {\r\n linkData,\r\n tabTrap,\r\n getLabel: (labelKey) => GetLabel({ labelKey, labelCollection: 'burgerMenu' }),\r\n showFunctionalButtons,\r\n isSimple,\r\n isIndependent,\r\n showReturnLink,\r\n primaryLinkFirstLast\r\n }\r\n \r\n }\r\n}","import { render } from \"./SecondaryLink.vue?vue&type=template&id=7d5b785c\"\nimport script from \"./SecondaryLink.vue?vue&type=script&lang=js\"\nexport * from \"./SecondaryLink.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"D:\\\\a\\\\1\\\\s\\\\frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { render } from \"./BurgerMenu.vue?vue&type=template&id=0fc4c723\"\nimport script from \"./BurgerMenu.vue?vue&type=script&lang=js\"\nexport * from \"./BurgerMenu.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"D:\\\\a\\\\1\\\\s\\\\frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\r\n\r\n\r\n \r\n\r\n","import GetLabel from 'foundation/js/getLabel'\r\nimport debounce from 'foundation/js/debounce'\r\nimport { useStore } from 'vuex'\r\nimport { computed, onMounted, ref } from 'vue'\r\nimport onTransitionendCallback from 'components/PageOverlay/methods/onTransitionendCallback'\r\nexport default {\r\n name: 'SearchOverlay',\r\n setup() {\r\n let first, last, close\r\n\r\n const store = useStore()\r\n const results = computed(\r\n () => store.state.search.autocomplete_result?.entries ?? []\r\n )\r\n const showSpinner = computed(\r\n () => store.state.search.autocomplete_inprogress\r\n )\r\n\r\n const inputText = ref('')\r\n const termInput = debounce(() => {\r\n store.dispatch('search/getAutocomplete', {\r\n query: inputText.value\r\n })\r\n }, 500)\r\n\r\n const tabTrap = function (e) {\r\n if (!results.value.length) {\r\n e.preventDefault()\r\n close.focus()\r\n return false\r\n }\r\n\r\n if (e.shiftKey && e.target.dataset.order === 'first') {\r\n e.preventDefault()\r\n last.focus()\r\n }\r\n\r\n if (!e.shiftKey && e.target.dataset.order === 'last') {\r\n e.preventDefault()\r\n close.focus()\r\n }\r\n\r\n if (!e.shiftKey && !e.target.dataset.order) {\r\n e.preventDefault()\r\n first.focus()\r\n }\r\n }\r\n\r\n const searchPageUrl = function (query) {\r\n return store.state.search.search_page_redirecturl + '?q=' + query\r\n }\r\n\r\n const redirectToSearchPage = function () {\r\n location.href = searchPageUrl(inputText.value)\r\n }\r\n\r\n onMounted(() => {\r\n store.dispatch('search/initAutocomplete')\r\n first = document.querySelector(\r\n '.kb-search-overlay [data-order=\"first\"]'\r\n )\r\n last = document.querySelector(\r\n '.kb-search-overlay__result[data-order=\"last\"]'\r\n )\r\n close = document.querySelector('.kb-page-overlay__close')\r\n onTransitionendCallback(\r\n {\r\n opening() {\r\n first.focus()\r\n }\r\n },\r\n { persistent: true }\r\n )\r\n })\r\n\r\n return {\r\n getLabel: (labelKey) => GetLabel({ labelKey, labelCollection: 'searchOverlay' }),\r\n redirectToSearchPage,\r\n searchPageUrl,\r\n results,\r\n showSpinner,\r\n termInput,\r\n tabTrap,\r\n inputText\r\n }\r\n }\r\n}\r\n","import { render } from \"./SearchOverlay.vue?vue&type=template&id=335a39f4\"\nimport script from \"./SearchOverlay.vue?vue&type=script&lang=js\"\nexport * from \"./SearchOverlay.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"D:\\\\a\\\\1\\\\s\\\\frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\r\n\r\n\r\n \r\n\r\n","import { useStore } from 'vuex'\r\nimport { onMounted, computed } from 'vue'\r\nimport GetLabel from 'foundation/js/getLabel'\r\nimport debounce from 'foundation/js/debounce'\r\nimport onTransitionendCallback from 'components/PageOverlay/methods/onTransitionendCallback'\r\n\r\nexport default {\r\n name: 'FilterOverlay',\r\n setup() {\r\n const store = useStore()\r\n const guids = computed(() => store.state.search.filter_overlay_scopes)\r\n const totalResultCount = computed(() => {\r\n return guids.value.reduce(\r\n (sum, guid) => sum + store.state.search.scoped_total[guid],\r\n 0\r\n )\r\n })\r\n\r\n const toggleAccordion = function (e) {\r\n const isExpanded = !!(\r\n e.currentTarget.getAttribute('aria-expanded') === 'true'\r\n )\r\n const accordionTarget = document.querySelector(\r\n '#' + e.currentTarget.getAttribute('aria-controls')\r\n )\r\n const chevronTarget = e.currentTarget.querySelector(\r\n '.kb-accordion__question__chevron'\r\n )\r\n\r\n chevronTarget.classList[isExpanded ? 'remove' : 'add'](\r\n 'kb-accordion__question__chevron--open'\r\n )\r\n accordionTarget.classList[isExpanded ? 'remove' : 'add'](\r\n 'kb-accordion__answer--open'\r\n )\r\n e.currentTarget.setAttribute(\r\n 'aria-expanded',\r\n isExpanded ? 'false' : 'true'\r\n )\r\n }\r\n\r\n const filterResults = (facet) => {\r\n guids.value.forEach((guid) => {\r\n store.dispatch('search/performSearch', {\r\n guid: guid,\r\n query: inputText.value,\r\n facet\r\n })\r\n })\r\n }\r\n\r\n const inputText = computed({\r\n get: () => store.state.search.queries[guids.value[0]] ?? '',\r\n set: (v) =>\r\n store.dispatch('search/setSearchQuery', {\r\n guid: guids.value[0],\r\n query: v\r\n })\r\n })\r\n const termInput = debounce(() => {\r\n guids.value.forEach((guid) => {\r\n store.dispatch('search/performSearch', {\r\n guid: guid,\r\n query: inputText.value\r\n })\r\n })\r\n }, 500)\r\n\r\n const closeOverlay = function (e) {\r\n store.dispatch('main/closePageOverlay')\r\n e.preventDefault()\r\n }\r\n\r\n const facetGroups = computed(\r\n () => store.getters['search/getFacets'](guids.value[0]) ?? []\r\n )\r\n\r\n let first, close, last\r\n\r\n const tabTrap = function (e) {\r\n if (e.shiftKey && e.target.dataset.order === 'first') {\r\n e.preventDefault()\r\n last.focus()\r\n }\r\n\r\n if (!e.shiftKey && e.target.dataset.order === 'last') {\r\n e.preventDefault()\r\n close.focus()\r\n }\r\n\r\n if (!e.shiftKey && !e.target.dataset.order) {\r\n e.preventDefault()\r\n first.focus()\r\n }\r\n }\r\n\r\n onMounted(() => {\r\n close = document.querySelector('.kb-page-overlay__close')\r\n first = document.querySelector('input[data-order=\"first\"]')\r\n last = document.querySelector('input[data-order=\"last\"]')\r\n last = last ? last : close\r\n onTransitionendCallback(\r\n {\r\n opening() {\r\n first.focus()\r\n }\r\n },\r\n { persistent: true }\r\n )\r\n })\r\n\r\n return {\r\n facetGroups,\r\n filterResults,\r\n getLabel: (labelKey) => GetLabel({ labelKey, labelCollection: 'filterOverlay' }),\r\n inputText,\r\n closeOverlay,\r\n termInput,\r\n toggleAccordion,\r\n totalResultCount,\r\n tabTrap\r\n }\r\n }\r\n}\r\n","import { render } from \"./FilterOverlay.vue?vue&type=template&id=8eb764d4\"\nimport script from \"./FilterOverlay.vue?vue&type=script&lang=js\"\nexport * from \"./FilterOverlay.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"D:\\\\a\\\\1\\\\s\\\\frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\r\n\r\n\r\n \r\n \r\n \r\n\r\n","import { computed, onMounted } from 'vue'\r\nimport { useStore } from 'vuex'\r\nimport onTransitionendCallback from 'components/PageOverlay/methods/onTransitionendCallback'\r\n\r\nexport default {\r\n name: 'ArticleOverlay',\r\n setup() {\r\n const store = useStore()\r\n const html = computed(() => {\r\n return store.state.main.article_overlay_data\r\n })\r\n\r\n onMounted(() => {\r\n const closeButton = document.querySelector(\r\n '.kb-page-overlay__close'\r\n )\r\n onTransitionendCallback({\r\n opening() {\r\n closeButton.focus()\r\n }\r\n })\r\n })\r\n\r\n return { html }\r\n }\r\n}\r\n","import { render } from \"./ArticleOverlay.vue?vue&type=template&id=7a1c3810\"\nimport script from \"./ArticleOverlay.vue?vue&type=script&lang=js\"\nexport * from \"./ArticleOverlay.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"D:\\\\a\\\\1\\\\s\\\\frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\r\n\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n {{\r\n getLabel({\r\n labelCollection: 'signUpForm',\r\n labelKey: 'signupParagraph'\r\n })\r\n }}\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n","\r\n\r\n\r\n \r\n \r\n \r\n
\r\n
\r\n {{\r\n getLabel({\r\n labelCollection: 'signUpForm',\r\n labelKey: 'successTitle'\r\n })\r\n }}\r\n
\r\n
\r\n \r\n \r\n {{\r\n getLabel({\r\n labelCollection: 'signUpForm',\r\n labelKey: 'successConfirmation'\r\n })\r\n }}\r\n
\r\n \r\n \r\n \r\n \r\n {{\r\n getLabel({\r\n labelCollection: 'signUpForm',\r\n labelKey: 'successParagraph',\r\n allowEmpty: true\r\n })\r\n }}\r\n
\r\n \r\n \r\n \r\n \r\n\r\n","import { computed } from 'vue'\r\nimport { useStore } from 'vuex'\r\nimport getLabel from 'foundation/js/getLabel'\r\n\r\nexport default {\r\n name: 'SuccessPage',\r\n setup() {\r\n const store = useStore()\r\n\r\n const pageOverlayContentData = computed(() => {\r\n const data = store.state.main.page_overlay_content_data\r\n if (data === null) {\r\n throw Error('Overlay content data was not set')\r\n }\r\n return data\r\n })\r\n\r\n const succesButtonData = pageOverlayContentData.value.successButtonData\r\n\r\n return {\r\n getLabel,\r\n succesButtonData\r\n }\r\n }\r\n}\r\n","import { render } from \"./SuccessPage.vue?vue&type=template&id=3c1db568\"\nimport script from \"./SuccessPage.vue?vue&type=script&lang=js\"\nexport * from \"./SuccessPage.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"D:\\\\a\\\\1\\\\s\\\\frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { ref, computed, onMounted } from 'vue'\r\nimport emailValidator from 'foundation/js/inputValidators/emailValidator'\r\nimport phoneValidator from '../../foundation/js/inputValidators/phoneValidator'\r\nimport nameValidator from '../../foundation/js/inputValidators/nameValidator'\r\nimport { useStore } from 'vuex'\r\nimport SuccessPage from '../SuccessPage/SuccessPage.vue'\r\nimport getLabel from 'foundation/js/getLabel'\r\nimport onTransitionendCallback from 'components/PageOverlay/methods/onTransitionendCallback'\r\n\r\nexport default {\r\n name: 'SignUpForm',\r\n components: {\r\n SuccessPage\r\n },\r\n setup() {\r\n const store = useStore()\r\n const unSubmitted = ref(true)\r\n const showReceipt = computed(() => {\r\n return store.state.events.signUpCompleteShowReceipt\r\n })\r\n const isSubmitting = computed(() => store.state.events.isSubmitting)\r\n\r\n const eventId = computed(() => store.state.events.signUpEventId)\r\n const firstName = ref('')\r\n const lastName = ref('')\r\n const phone = ref('')\r\n const email = ref('')\r\n const consent = ref(false)\r\n\r\n const isValidEmail = computed(() => {\r\n return unSubmitted.value ? true : emailValidator(email.value)\r\n })\r\n\r\n const firstNameFilled = computed(() => {\r\n return unSubmitted.value && !firstName.value\r\n ? true\r\n : nameValidator(firstName.value)\r\n })\r\n\r\n const lastNameFilled = computed(() => {\r\n return unSubmitted.value && !lastName.value\r\n ? true\r\n : nameValidator(lastName.value)\r\n })\r\n\r\n const isValidPhone = computed(() => {\r\n return unSubmitted.value ? true : phoneValidator(phone.value)\r\n })\r\n\r\n const consentChecked = computed(() => {\r\n return unSubmitted.value ? true : consent.value\r\n })\r\n\r\n const onSubmit = function () {\r\n unSubmitted.value = false\r\n\r\n if (\r\n isValidEmail.value &&\r\n firstNameFilled.value &&\r\n lastNameFilled.value &&\r\n isValidPhone.value &&\r\n consentChecked.value\r\n ) {\r\n store.dispatch('events/signUpToEvent', {\r\n eventId: eventId.value,\r\n firstName: firstName.value,\r\n lastName: lastName.value,\r\n email: email.value,\r\n phone: phone.value,\r\n consent: consent.value\r\n })\r\n }\r\n }\r\n\r\n let first, last, close\r\n\r\n const tabTrap = function (e) {\r\n if (e.shiftKey && e.target.dataset.order === 'first') {\r\n e.preventDefault()\r\n last.focus()\r\n }\r\n\r\n if (!e.shiftKey && e.target.dataset.order === 'last') {\r\n e.preventDefault()\r\n first.focus()\r\n }\r\n }\r\n\r\n onMounted(() => {\r\n first = document.querySelector(\r\n '.kb-sign-up-form [data-order=\"first\"]'\r\n )\r\n last = document.querySelector(\r\n '.kb-sign-up-form [data-order=\"last\"]'\r\n )\r\n close = document.querySelector('.kb-page-overlay__close')\r\n onTransitionendCallback(\r\n {\r\n opening() {\r\n first.focus()\r\n }\r\n },\r\n { persistent: true }\r\n )\r\n })\r\n\r\n return {\r\n firstName,\r\n lastName,\r\n phone,\r\n email,\r\n consent,\r\n isValidEmail,\r\n firstNameFilled,\r\n lastNameFilled,\r\n isValidPhone,\r\n consentChecked,\r\n showReceipt,\r\n isSubmitting,\r\n onSubmit,\r\n getLabel,\r\n tabTrap\r\n }\r\n }\r\n}\r\n","import { render } from \"./SignUpForm.vue?vue&type=template&id=4abcec9e\"\nimport script from \"./SignUpForm.vue?vue&type=script&lang=js\"\nexport * from \"./SignUpForm.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"D:\\\\a\\\\1\\\\s\\\\frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\r\n\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {{ getLabel('personalDonationStep2a_title') }}\r\n
\r\n \r\n\r\n \r\n\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n
\r\n \r\n
\r\n \r\n
\r\n\r\n
\r\n \r\n \r\n
\r\n \r\n\r\n
\r\n\r\n
\r\n \r\n\r\n \r\n
\r\n\r\n
\r\n \r\n\r\n \r\n
\r\n\r\n
\r\n\r\n
\r\n \r\n\r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n \r\n
\r\n
\r\n
\r\n\r\n \r\n \r\n\r\n \r\n
\r\n
\r\n
\r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n {{ getLabel('validationPaymentmethod') }}\r\n
\r\n\r\n \r\n \r\n
\r\n \r\n
\r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n","\r\n\r\n\r\n \r\n \r\n \r\n
\r\n
\r\n {{ getLabel('personalDonationStep3__title' ) }}\r\n
\r\n
\r\n \r\n \r\n {{ getLabel('personalDonationStep3_text') }}\r\n
\r\n \r\n \r\n\r\n \r\n \r\n\r\n","import { computed, onMounted, watch } from 'vue'\r\nimport { useStore } from 'vuex'\r\nimport GetLabel from 'foundation/js/getLabel'\r\n\r\nexport default {\r\n name: 'PersonalDonationStep3',\r\n setup() {\r\n const store = useStore()\r\n\r\n onMounted(() => {\r\n const orderId = new URLSearchParams(document.location.search).get(\r\n 'orderId'\r\n )\r\n if (orderId)\r\n store.dispatch('main/trackPurchaseData', { orderId })\r\n })\r\n\r\n const linkToInformationHowDonationBenefits = computed(\r\n () =>\r\n store.state.fundraising.donation_settings\r\n .linkToInformationHowDonationBenefits\r\n )\r\n\r\n return {\r\n linkToInformationHowDonationBenefits,\r\n getLabel: (labelKey) => GetLabel({ labelKey, labelCollection: 'personalDonation' })\r\n }\r\n }\r\n}\r\n","import { render } from \"./PersonalDonationStep3.vue?vue&type=template&id=40ae7bb3\"\nimport script from \"./PersonalDonationStep3.vue?vue&type=script&lang=js\"\nexport * from \"./PersonalDonationStep3.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"D:\\\\a\\\\1\\\\s\\\\frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { ref, computed, watch, onMounted, onBeforeUnmount } from 'vue'\r\nimport { useStore } from 'vuex'\r\nimport { scrollToFirstError } from '../../foundation/js/inputValidators/scrollToFirstError'\r\nimport PersonalDonationStep3 from 'components/PersonalDonationStep3/PersonalDonationStep3.vue'\r\nimport FormInputTextField from 'components/FormInputTextField/FormInputTextField.vue'\r\nimport TooltipComponent from 'components/TooltipComponent/TooltipComponent.vue'\r\nimport emailValidator from '../../foundation/js/inputValidators/emailValidator'\r\nimport phoneValidator from '../../foundation/js/inputValidators/phoneValidator'\r\nimport nameValidator from '../../foundation/js/inputValidators/nameValidator'\r\nimport onTransitionendCallback from 'components/PageOverlay/methods/onTransitionendCallback'\r\nimport cprValidator from 'foundation/js/inputValidators/cprValidator'\r\n\r\nexport default {\r\n name: 'PersonalDonationStep2a',\r\n components: {\r\n PersonalDonationStep3,\r\n FormInputTextField,\r\n TooltipComponent\r\n },\r\n setup() {\r\n let first, last, close\r\n\r\n // constants\r\n const PAYMENTMETHOD_BETALINGSSERVICE = '4'\r\n const PAYMENT_OPTIONS = {\r\n single: ['mobilepay', 'creditcard'],\r\n recurring: ['mobilepaysubscription', 'betalingsservice']\r\n }\r\n\r\n // dependencies\r\n const store = useStore()\r\n const getLabel = (labelKey) =>\r\n store.getters['labels/getLabel']({\r\n labelCollection: 'personalDonation',\r\n labelKey: labelKey\r\n })\r\n const personalDonationInput = computed(\r\n () => store.state.donation.personalDonationInput\r\n ).value\r\n const isSubmitting = computed(\r\n () => store.state.fundraising.isSubmitting\r\n )\r\n\r\n const donationType = ref(\r\n personalDonationInput?.donationType ?? getLabel('personalDonationStep2a_default_radio_value')\r\n )\r\n const donationSettings = computed(\r\n () => store.state.fundraising.donation_settings\r\n )\r\n const donationPresets = computed(() => {\r\n return donationType.value === 'single'\r\n ? donationSettings.value.single.presets\r\n : donationSettings.value.recurring.presets\r\n })\r\n const donationPresetDefault = computed(() => {\r\n return donationType.value === 'single'\r\n ? donationSettings.value.single.presets[\r\n donationSettings.value.single.defaultPreset\r\n ]\r\n : donationSettings.value.recurring.presets[\r\n donationSettings.value.recurring.defaultPreset\r\n ]\r\n })\r\n const showReceipt = computed(\r\n () => store.state.fundraising.personalDonationShowReceipt\r\n )\r\n const pageId = computed(() => store.state.main.page_id)\r\n\r\n const pbsFieldsVisible = ref(\r\n personalDonationInput?.pbsFieldsVisible ?? false\r\n )\r\n const showPBSfields = function () {\r\n pbsFieldsVisible.value = true\r\n }\r\n const hidePBSfields = function () {\r\n pbsFieldsVisible.value = false\r\n }\r\n\r\n // input bindings, validations and helpers\r\n const donationPresetsSelectedIndex = ref(\r\n personalDonationInput?.donationPresetsSelectedIndex ?? 1\r\n )\r\n\r\n const firstNameInput = ref(personalDonationInput?.firstNameInput ?? '')\r\n const firstNameInputFilled = computed(() => {\r\n return unSubmitted.value && !firstNameInput.value\r\n ? true\r\n : nameValidator(firstNameInput.value)\r\n })\r\n\r\n const lastNameInput = ref(personalDonationInput?.lastNameInput ?? '')\r\n const lastNameInputFilled = computed(() => {\r\n return unSubmitted.value && !lastNameInput.value\r\n ? true\r\n : nameValidator(lastNameInput.value)\r\n })\r\n\r\n const phoneInput = ref(personalDonationInput?.phoneInput ?? '')\r\n const phoneInputFilled = computed(() => {\r\n return unSubmitted.value ? true : phoneValidator(phoneInput.value)\r\n })\r\n\r\n const emailInput = ref(personalDonationInput?.emailInput ?? '')\r\n const emailInputFilled = computed(() => {\r\n return unSubmitted.value ? true : emailValidator(emailInput.value)\r\n })\r\n const donationAmountInput = ref(\r\n personalDonationInput?.donationAmountInput ??\r\n donationPresetDefault.value\r\n )\r\n const donationAmountInputFilled = computed(() => {\r\n return unSubmitted.value ? true : !!donationAmountInput.value\r\n })\r\n\r\n const customDonationAmountInput = ref(\r\n personalDonationInput?.customDonationAmountInput ??\r\n donationAmountInput.value\r\n )\r\n const customDonationAmountInputIsValid = computed(() => {\r\n return unSubmitted.value && !forceCustomAmountValidation.value\r\n ? true\r\n : customDonationAmountInput.value >=\r\n (donationSettings.value.minimumAmount ?? 1)\r\n })\r\n\r\n const cprNumberInput = ref(personalDonationInput?.cprNumberInput ?? '')\r\n const cprNumberInputFilled = computed(() => {\r\n if (unSubmitted.value) {\r\n return true\r\n }\r\n return taxDeductible.value ||\r\n paymentMethod.value === PAYMENTMETHOD_BETALINGSSERVICE\r\n ? cprValidator(cprNumberInput.value)\r\n : true\r\n })\r\n\r\n const paymentMethod = ref(personalDonationInput?.paymentMethod ?? '')\r\n const paymentMethodFilled = computed(() => {\r\n return unSubmitted.value ? true : !!paymentMethod.value\r\n })\r\n\r\n const pbsRegInput = ref(personalDonationInput?.pbsRegInput ?? '')\r\n const pbsRegInputFilled = computed(() => {\r\n return unSubmitted.value\r\n ? true\r\n : pbsRegInput.value.toString().length === 4\r\n })\r\n\r\n const pbsAccnumInput = ref(personalDonationInput?.pbsAccnumInput ?? '')\r\n const pbsAccnumInputFilled = computed(() => {\r\n return unSubmitted.value\r\n ? true\r\n : pbsAccnumInput.value.toString().length >= 7 &&\r\n pbsAccnumInput.value.toString().length <= 10\r\n })\r\n\r\n const unSubmitted = ref(true)\r\n const forceCustomAmountValidation = ref(false)\r\n \r\n \r\n const submitDonation = () => {\r\n unSubmitted.value = false;\r\n \r\n const isAllValid = validateAllFields(); \r\n if (!isAllValid) {\r\n scrollToFirstError()\r\n return false; \r\n }\r\n \r\n const donationPayload = {\r\n firstName: firstNameInput.value,\r\n lastName: lastNameInput.value,\r\n phone: phoneInput.value,\r\n email: emailInput.value,\r\n donationAmount: donationAmount.value,\r\n paymentMethod: paymentMethod.value,\r\n taxDeductible: taxDeductible.value,\r\n cprNo: cprNumberInput.value || null,\r\n recurringDonation: donationType.value === 'recurring',\r\n donationId: donationSettings.donationId,\r\n pbsData: pbsRegInput.value\r\n ? {\r\n reg: pbsRegInput.value?.toString(),\r\n acc: pbsAccnumInput.value?.toString()\r\n }\r\n : null,\r\n pageId: pageId.value,\r\n isCustomAmount: !!customDonation.value,\r\n referrer: document.referrer\r\n };\r\n \r\n\r\n store.dispatch('fundraising/submitPersonalDonation', donationPayload)\r\n .then(response => {\r\n if (response.success) {\r\n console.log('Donation submitted successfully');\r\n } else {\r\n console.log('Donation submission failed');\r\n }\r\n });\r\n };\r\n \r\n const validateAllFields = () => {\r\n const isValid =\r\n paymentMethodFilled.value &&\r\n (customDonation.value\r\n ? customDonationAmountInputIsValid.value\r\n : true) &&\r\n emailInputFilled.value &&\r\n phoneInputFilled.value &&\r\n lastNameInputFilled.value &&\r\n firstNameInputFilled.value &&\r\n cprNumberInputFilled.value &&\r\n paymentMethod.value &&\r\n (paymentMethod.value === PAYMENTMETHOD_BETALINGSSERVICE\r\n ? pbsRegInputFilled.value &&\r\n pbsAccnumInputFilled.value &&\r\n cprNumberInputFilled.value\r\n : true);\r\n \r\n // Check for validation on each field individually\r\n // You can add more fields as needed here\r\n if (!isValid) {\r\n return false;\r\n }\r\n \r\n return true;\r\n };\r\n \r\n\r\n const customDonation = ref(\r\n personalDonationInput?.customDonation ?? false\r\n )\r\n const valueinputfield = ref(null)\r\n\r\n const enableCustomDonation = async function () {\r\n forceCustomAmountValidation.value = true\r\n customDonation.value = true\r\n donationAmountInput.value = ''\r\n await nextTick() // we need to wait for DOM to update\r\n valueinputfield.value.focus()\r\n }\r\n\r\n const disableCustomDonation = function () {\r\n customDonation.value = false\r\n forceCustomAmountValidation.value = false\r\n }\r\n\r\n const taxDeductible = ref(personalDonationInput?.taxDeductible ?? false)\r\n\r\n const donationAmount = computed(() => {\r\n return customDonation.value\r\n ? customDonationAmountInput.value\r\n : donationAmountInput.value\r\n })\r\n const paymentButtonTextAddition = computed(\r\n () => donationAmount.value + ' kr '\r\n )\r\n\r\n const tabTrap = function (e) {\r\n if (e.shiftKey && e.target.dataset.order === 'first') {\r\n e.preventDefault()\r\n close.focus()\r\n }\r\n\r\n if (!e.shiftKey && e.target.dataset.order === 'last') {\r\n e.preventDefault()\r\n close.focus()\r\n }\r\n\r\n if (!e.shiftKey && !e.target.dataset.order) {\r\n e.preventDefault()\r\n first.focus()\r\n }\r\n }\r\n\r\n const resetBetalingsServiceFields = () => {\r\n paymentMethod.value = ''\r\n pbsAccnumInput.value = ''\r\n pbsRegInput.value = ''\r\n }\r\n\r\n const donationAmountInputChangeHandler = () => {\r\n donationPresetsSelectedIndex.value =\r\n donationType.value === 'single'\r\n ? donationSettings.value.single.presets.indexOf(\r\n donationAmountInput.value\r\n )\r\n : donationSettings.value.recurring.presets.indexOf(\r\n donationAmountInput.value\r\n )\r\n }\r\n\r\n const donationTypeChangeHandler = () => {\r\n if (customDonation.value) {\r\n return\r\n }\r\n\r\n let presetSingleIndexAmount =\r\n donationSettings.value.single.presets[\r\n donationPresetsSelectedIndex.value\r\n ]\r\n let presetRecurringIndexAmount =\r\n donationSettings.value.recurring.presets[\r\n donationPresetsSelectedIndex.value\r\n ]\r\n // if presets with same index have different values, we activate it as custom donation amount\r\n if (presetSingleIndexAmount != presetRecurringIndexAmount) {\r\n customDonationAmountInput.value = donationAmountInput.value\r\n enableCustomDonation() // deselect preset\r\n return\r\n }\r\n donationAmountInput.value =\r\n donationType.value === 'single'\r\n ? presetSingleIndexAmount\r\n : presetRecurringIndexAmount\r\n }\r\n\r\n watch(donationAmountInput, () => {\r\n donationAmountInputChangeHandler()\r\n })\r\n\r\n watch(donationType, () => {\r\n resetBetalingsServiceFields()\r\n donationTypeChangeHandler()\r\n })\r\n\r\n onMounted(() => {\r\n first = document.querySelectorAll(\r\n '.kb-personal-donation-step2a__donation-input [data-order=\"first\"]'\r\n )[donationPresetsSelectedIndex.value ?? 1]\r\n last = document.querySelector(\r\n '.kb-personal-donation-step2a [data-order=\"last\"]'\r\n )\r\n close = document.querySelector('.kb-page-overlay__close')\r\n onTransitionendCallback(\r\n {\r\n opening() {\r\n if (first) first.focus()\r\n }\r\n },\r\n { persistent: true }\r\n )\r\n })\r\n\r\n onBeforeUnmount(() => {\r\n let input = {\r\n pbsFieldsVisible: pbsFieldsVisible.value,\r\n firstNameInput: firstNameInput.value,\r\n lastNameInput: lastNameInput.value,\r\n phoneInput: phoneInput.value,\r\n emailInput: emailInput.value,\r\n donationAmountInput: donationAmountInput.value,\r\n customDonationAmountInput: customDonationAmountInput.value,\r\n cprNumberInput: cprNumberInput.value,\r\n paymentMethod: paymentMethod.value,\r\n pbsRegInput: pbsRegInput.value,\r\n pbsAccnumInput: pbsAccnumInput.value,\r\n customDonation: customDonation.value,\r\n donationType: donationType.value,\r\n taxDeductible: taxDeductible.value,\r\n donationPresetsSelectedIndex: donationPresetsSelectedIndex.value\r\n }\r\n store.commit('donation/store_personal_donation_input', input)\r\n })\r\n\r\n return {\r\n // inpuut fields and properties\r\n cprNumberInput,\r\n cprNumberInputFilled,\r\n customDonation,\r\n customDonationAmountInput,\r\n customDonationAmountInputIsValid,\r\n donationAmountInput,\r\n donationAmountInputFilled,\r\n donationPresets,\r\n donationType,\r\n emailInput,\r\n emailInputFilled,\r\n firstNameInput,\r\n firstNameInputFilled,\r\n isSubmitting,\r\n lastNameInput,\r\n lastNameInputFilled,\r\n paymentButtonTextAddition,\r\n paymentMethod,\r\n paymentMethodFilled,\r\n paymentOptions: PAYMENT_OPTIONS,\r\n pbsAccnumInput,\r\n pbsAccnumInputFilled,\r\n pbsFieldsVisible,\r\n pbsRegInput,\r\n pbsRegInputFilled,\r\n phoneInput,\r\n phoneInputFilled,\r\n showReceipt,\r\n taxDeductible,\r\n valueinputfield,\r\n\r\n // methods\r\n disableCustomDonation,\r\n enableCustomDonation,\r\n getLabel,\r\n hidePBSfields,\r\n showPBSfields,\r\n submitDonation,\r\n tabTrap\r\n }\r\n }\r\n}\r\n","import { render } from \"./PersonalDonationStep2a.vue?vue&type=template&id=463caaec\"\nimport script from \"./PersonalDonationStep2a.vue?vue&type=script&lang=js\"\nexport * from \"./PersonalDonationStep2a.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"D:\\\\a\\\\1\\\\s\\\\frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\r\n\r\n\r\n \r\n
\r\n \r\n
\r\n {{ getLabel('accordionTitle', [memberListData.totalHits?.toString()]) }}\r\n
\r\n\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n {{ member.memberProfileText }}
\r\n \r\n \r\n - \r\n
{{ memberDetails.label }}
\r\n {{ memberDetails.detail }}
\r\n \r\n \r\n
\r\n {{ getLabel('writeMessageButtonText') }}\r\n \r\n
\r\n
\r\n\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n\r\n","import { useStore } from 'vuex'\r\nimport { onMounted, computed, ref } from 'vue'\r\n\r\nexport default {\r\n name: 'MemberListOverlay',\r\n props: {\r\n groupId: {\r\n type: String,\r\n required: true\r\n }\r\n },\r\n setup(props) {\r\n const store = useStore()\r\n\r\n const toggleAccordion = function (e) {\r\n const isExpanded = !!(\r\n e.currentTarget.getAttribute('aria-expanded') === 'true'\r\n )\r\n const accordionTarget = document.querySelector(\r\n `#${e.currentTarget.getAttribute('aria-controls')}`\r\n )\r\n const chevronTarget = e.currentTarget.querySelector(\r\n '.kb-member-list-overlay__member-chevron'\r\n )\r\n\r\n chevronTarget.classList[isExpanded ? 'remove' : 'add'](\r\n 'kb-member-list-overlay__member-chevron--open'\r\n )\r\n accordionTarget.classList[isExpanded ? 'remove' : 'add'](\r\n 'kb-member-list-overlay__content--open'\r\n )\r\n e.currentTarget.setAttribute(\r\n 'aria-expanded',\r\n isExpanded ? 'false' : 'true'\r\n )\r\n\r\n accordionTarget.querySelectorAll('a').forEach((a) => {\r\n if (isExpanded) {\r\n a.setAttribute('tabindex', -1)\r\n } else {\r\n a.removeAttribute('tabindex')\r\n }\r\n })\r\n }\r\n const isSubmitting = computed(()=> store.state.forum.is_submitting)\r\n\r\n const groupId = computed(() => props.groupId ?? store.state.main.page_overlay_content_data.groupId)\r\n\r\n const memberListData = computed(()=>{\r\n return store.state.forum.member_list_data\r\n })\r\n\r\n const skip = ref(0)\r\n const take = ref(10)\r\n\r\n const fetchGruppemedlemmer = function () {\r\n store.dispatch('forum/getMemberListData', {\r\n id: groupId.value,\r\n skip: skip.value,\r\n take: take.value\r\n })\r\n }\r\n\r\n const loadMore = function(){\r\n skip.value = take.value\r\n take.value = (take.value + skip.value)\r\n fetchGruppemedlemmer()\r\n }\r\n\r\n onMounted(fetchGruppemedlemmer)\r\n\r\n const getLabel = (labelKey, strings) => {\r\n let label = store.getters['labels/getLabel']({\r\n labelCollection: 'MemberListOverlay',\r\n labelKey\r\n })\r\n\r\n if (strings) {\r\n strings.forEach((str, index) => {\r\n label = label.replace(`{${index}}`, str)\r\n })\r\n }\r\n\r\n return label\r\n }\r\n\r\n return {\r\n memberListData,\r\n toggleAccordion,\r\n getLabel,\r\n loadMore,\r\n isSubmitting\r\n }\r\n }\r\n}","import { render } from \"./MemberListOverlay.vue?vue&type=template&id=1adf4e1c\"\nimport script from \"./MemberListOverlay.vue?vue&type=script&lang=js\"\nexport * from \"./MemberListOverlay.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"D:\\\\a\\\\1\\\\s\\\\frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\r\n\r\n\r\n\r\n \r\n\r\n
\r\n \r\n \r\n\r\n {{ getLabel(\"title\") }}
\r\n\r\n \r\n\r\n \r\n
{{ getLabel(\"description\") }}
\r\n
\r\n\r\n \r\n\r\n \r\n\r\n \r\n \r\n\r\n\r\n \r\n\r\n \r\n
\r\n\r\n\r\n","\r\nimport { useStore } from 'vuex'\r\nimport { ref, computed } from 'vue'\r\n\r\n// TinyMCE imports\r\nimport \"tinymce/tinymce\"\r\nimport \"tinymce/themes/silver\";\r\nimport \"tinymce/icons/default\";\r\nimport 'tinymce/models/dom/model'\r\nimport 'tinymce/skins/ui/oxide/skin.css';\r\n// TinyMCE plugin imports\r\nimport 'tinymce/plugins/emoticons';\r\nimport 'tinymce/plugins/emoticons/js/emojis';\r\nimport 'tinymce/plugins/autoresize';\r\nimport 'tinymce/plugins/lists';\r\nimport 'tinymce/plugins/autolink';\r\n\r\nimport Editor from '@tinymce/tinymce-vue'\r\n\r\nexport default {\r\n name: \"ClosedGroupOverlay\",\r\n components: {\r\n Editor\r\n },\r\n props: {\r\n groupId: {\r\n type: String,\r\n required: true\r\n }\r\n },\r\n setup(props) {\r\n const store = useStore()\r\n\r\n const groupId = computed(() => props.groupId ?? store.state.main.page_overlay_content_data.groupId)\r\n const isFrivilligContext = computed(() => store.state.main.page_overlay_content_data.isFrivilligContext ?? false)\r\n\r\n const applicationContent = ref()\r\n const showInputErrors = ref(false)\r\n\r\n const isInputError = computed(() => !applicationContent.value?.length)\r\n\r\n const getLabel = (labelKey) =>\r\n store.getters[\"labels/getLabel\"]({\r\n labelCollection: \"ClosedGroupOverlay\",\r\n labelKey: labelKey,\r\n });\r\n\r\n const submitMemberApplication = async function () {\r\n showInputErrors.value = true\r\n\r\n if (isInputError.value) return\r\n\r\n const body = {\r\n content: applicationContent.value,\r\n }\r\n\r\n if (isFrivilligContext.value) {\r\n await store.dispatch('frivillige/joinGroup', {\r\n reason: body.content,\r\n gruppeKode: groupId.value,\r\n })\r\n }\r\n else if (applicationContent.value) {\r\n store.dispatch('forum/submitMemberApplication', {\r\n body: body,\r\n id: groupId.value\r\n })\r\n }\r\n\r\n window.location.reload()\r\n }\r\n\r\n return {\r\n submitMemberApplication,\r\n applicationContent,\r\n isInputError,\r\n showInputErrors,\r\n getLabel\r\n }\r\n }\r\n}","import { render } from \"./ClosedGroupOverlay.vue?vue&type=template&id=69386932\"\nimport script from \"./ClosedGroupOverlay.vue?vue&type=script&lang=js\"\nexport * from \"./ClosedGroupOverlay.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"D:\\\\a\\\\1\\\\s\\\\frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\r\n\r\n\r\n\r\n \r\n\r\n
\r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n\r\n
\r\n\r\n\r\n","import { useStore } from 'vuex'\r\nimport { ref, computed } from 'vue'\r\n\r\nimport nonEmptyStringValidator from \"foundation/js/inputValidators/nonEmptyStringValidator\";\r\n\r\nexport default {\r\n name: \"UploadNewFileOverlay\",\r\n setup(){\r\n const store = useStore()\r\n const file = ref({})\r\n\r\n const isSubmitting = computed(()=> store.state.frivillige.is_submitting)\r\n\r\n let displayError = ref(false)\r\n\r\n const onFileChange = (e) => {\r\n displayError.value = false;\r\n\r\n const uploadedFiles = e.target.files \r\n let newFile = {}\r\n \r\n Array.from(uploadedFiles).forEach(uploadedfile => {\r\n newFile.value = uploadedfile\r\n newFile.value.url = URL.createObjectURL(uploadedfile)\r\n file.value = newFile.value\r\n })\r\n\r\n setTimeout( ()=> {\r\n const deleteButton = document.querySelector('.kb-js--delete-uploaded-file-card')\r\n deleteButton.focus()\r\n } , 100)\r\n \r\n }\r\n\r\n const removeFile = () => {\r\n file.value = {}\r\n }\r\n\r\n // TODO: how to we validate files ? BE job?\r\n const isFormValid = () => {\r\n let fileTypeToStringIfPresent = file.value?.type ? file.value.type.toString() : null\r\n return nonEmptyStringValidator(fileTypeToStringIfPresent) ? true : false\r\n };\r\n\r\n const submitUploadNewFile = () => {\r\n const isValid = isFormValid();\r\n displayError.value = !isValid;\r\n\r\n if (isValid) {\r\n store.dispatch(\"frivillige/submitUploadNewFile\", {\r\n file: file.value\r\n })\r\n .then(() => {\r\n store.dispatch('main/closePageOverlay')\r\n store.dispatch('search/refreshSearches')\r\n });\r\n }\r\n };\r\n\r\n const getLabel = (labelKey) =>\r\n store.getters[\"labels/getLabel\"]({\r\n labelCollection: \"UploadNewFileOverlay\",\r\n labelKey: labelKey,\r\n });\r\n\r\n return {\r\n file,\r\n isSubmitting,\r\n displayError,\r\n getLabel,\r\n onFileChange,\r\n removeFile,\r\n submitUploadNewFile\r\n }\r\n }\r\n}","import { render } from \"./UploadNewFileOverlay.vue?vue&type=template&id=5663d28c\"\nimport script from \"./UploadNewFileOverlay.vue?vue&type=script&lang=js\"\nexport * from \"./UploadNewFileOverlay.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"D:\\\\a\\\\1\\\\s\\\\frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\r\n\r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n","import {computed, onMounted, ref} from 'vue'\r\nimport {useStore} from 'vuex'\r\nimport DonationCard from '../DonationCard/DonationCard.vue'\r\n\r\nexport default {\r\n name: \"HoldetsLys\",\r\n props: {\r\n teamId: {\r\n type: String,\r\n required: false\r\n },\r\n lysposeFormUrl: {\r\n type: String,\r\n required: false\r\n }\r\n },\r\n components: {DonationCard},\r\n setup(props){\r\n const store = useStore()\r\n const teamId = computed(() => props.teamId ?? store.state.main.page_overlay_content_data.teamId)\r\n const lysposeFormUrl = computed(() => props.lysposeFormUrl ?? store.state.main.page_overlay_content_data.lysposeFormUrl)\r\n const holdetsLys = computed(()=>store.state.stafet.teamLights)\r\n const skip = ref(0)\r\n const take = ref(10)\r\n\r\n onMounted(()=>{\r\n store.dispatch('stafet/getTeamLights',{\r\n teamId: teamId.value,\r\n skip,\r\n take\r\n })\r\n })\r\n\r\n const loadMore = function(){\r\n skip.value = take.value\r\n take.value = (take.value + skip.value)\r\n store.dispatch('stafet/getTeamLights',{\r\n teamId: teamId.value,\r\n skip: skip.value,\r\n take: take.value\r\n })\r\n }\r\n\r\n const showLoadMore = computed(()=>{\r\n return store.state.stafet.teamLightsTotal > skip.value\r\n })\r\n\r\n return {\r\n lysposeFormUrl,\r\n holdetsLys,\r\n loadMore,\r\n showLoadMore,\r\n getLabel: (labelKey) =>\r\n store.getters['labels/getLabel']({\r\n labelCollection: 'HoldetsLys',\r\n labelKey\r\n })\r\n }\r\n }\r\n}","import { render } from \"./HoldetsLys.vue?vue&type=template&id=0509088a\"\nimport script from \"./HoldetsLys.vue?vue&type=script&lang=js\"\nexport * from \"./HoldetsLys.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"D:\\\\a\\\\1\\\\s\\\\frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\r\n\r\n\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n
\r\n \r\n
\r\n \r\n {{ getLabel('totalAmount') }} | \r\n {{ participant.totalAmountCollected }} | \r\n
\r\n \r\n {{ getLabel('participantFee') }} | \r\n {{ participant.deltagerFeeAmount }} | \r\n
\r\n \r\n {{ getLabel('lights') }} | \r\n {{ participant.lysposerCount }} | \r\n
\r\n \r\n {{ getLabel('donations') }} | \r\n {{ participant.donationAmount }} | \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n\r\n","\r\nexport function getTeamParticipantEmails(teamParticipantDetails) {\r\n return teamParticipantDetails\r\n .filter(participant => participant.role !== 'Holdkaptajn')\r\n .filter(participant => participant.email)\r\n .map(participant => participant.email)\r\n .join(',')\r\n}\r\n","import {computed, onMounted, ref} from 'vue'\r\nimport {useStore} from 'vuex'\r\nimport onTransitionendCallback from 'components/PageOverlay/methods/onTransitionendCallback'\r\nimport { getTeamParticipantEmails } from \"foundation/js/teamParticipantUtils\"\r\n\r\nexport default {\r\n name: \"HoldetsDeltagere\",\r\n props: {\r\n teamId: {\r\n type: String,\r\n required: false\r\n },\r\n addDeltagerFormUrl: {\r\n type: String,\r\n required: false\r\n },\r\n donationFormUrl: {\r\n type: String,\r\n required: false\r\n },\r\n lysposeFormUrl: {\r\n type: String,\r\n required: false\r\n }\r\n },\r\n setup(props){\r\n const store = useStore()\r\n const teamId = computed(() => props.teamId ?? store.state.main.page_overlay_content_data.teamId)\r\n const addDeltagerFormUrl = computed(() => props.addDeltagerFormUrl ?? store.state.main.page_overlay_content_data.addDeltagerFormUrl)\r\n const donationFormUrl = computed(() => props.donationFormUrl ?? store.state.main.page_overlay_content_data.donationFormUrl)\r\n const lysposeFormUrl = computed(() => props.lysposeFormUrl ?? store.state.main.page_overlay_content_data.lysposeFormUrl)\r\n const participantList = computed(() => store.state.stafet.teamParticipantDetails)\r\n const participantEmails = computed(() => getTeamParticipantEmails(store.state.stafet.teamParticipantDetails))\r\n\r\n const getLabel = function(labelKey){\r\n return store.getters['labels/getLabel']({\r\n labelCollection: 'HoldetsDeltagere',\r\n labelKey\r\n })\r\n }\r\n\r\n const getDonateToParticipantUrl = function(participant) {\r\n return `${donationFormUrl.value}&deltagerId=${participant.id}`\r\n }\r\n\r\n const getLysposeToParticipantUrl = function(participant) {\r\n return `${lysposeFormUrl.value}&deltagerId=${participant.id}`\r\n }\r\n\r\n const getParticipantFullName = function(participant) {\r\n return `${participant.firstName} ${participant.lastName ?? ''}`\r\n }\r\n\r\n const supportParticipantLabel = function(labelName, participant){\r\n return `${getLabel(labelName)} ${participant.firstName}`\r\n }\r\n\r\n const toggleAccordion = function (e) {\r\n const isExpanded = !!(\r\n e.currentTarget.getAttribute('aria-expanded') === 'true'\r\n )\r\n const accordionTarget = document.querySelector(\r\n `#${e.currentTarget.getAttribute('aria-controls')}`\r\n )\r\n const chevronTarget = e.currentTarget.querySelector(\r\n '.kb-accordion__question__chevron'\r\n )\r\n\r\n chevronTarget.classList[isExpanded ? 'remove' : 'add'](\r\n 'kb-accordion__question__chevron--open'\r\n )\r\n accordionTarget.classList[isExpanded ? 'remove' : 'add'](\r\n 'kb-accordion__answer--open'\r\n )\r\n e.currentTarget.setAttribute(\r\n 'aria-expanded',\r\n isExpanded ? 'false' : 'true'\r\n )\r\n\r\n accordionTarget.querySelectorAll('a').forEach((a) => {\r\n if (isExpanded) {\r\n a.setAttribute('tabindex', -1)\r\n } else {\r\n a.removeAttribute('tabindex')\r\n }\r\n })\r\n }\r\n\r\n let first,\r\n last,\r\n close\r\n\r\n const tabTrap = function (e) {\r\n if (e.shiftKey && e.target.dataset.order === 'first') {\r\n e.preventDefault()\r\n close.focus()\r\n }\r\n\r\n if (!e.shiftKey && e.target.dataset.order === 'last') {\r\n e.preventDefault()\r\n close.focus()\r\n }\r\n\r\n if (!e.shiftKey && !e.target.dataset.order) {\r\n e.preventDefault()\r\n first.focus()\r\n }\r\n }\r\n\r\n onMounted(()=>{\r\n\r\n first = document.querySelector(\r\n '.kb-button[data-order=\"first\"]'\r\n )\r\n last = document.querySelector(\r\n '.kb-button[data-order=\"last\"]'\r\n )\r\n close = document.querySelector('.kb-page-overlay__close')\r\n onTransitionendCallback(\r\n {\r\n opening() {\r\n first.focus()\r\n }\r\n },\r\n { persistent: true }\r\n )\r\n\r\n store.dispatch('stafet/getTeamParticipantDetails',{\r\n teamId: teamId.value\r\n })\r\n })\r\n\r\n return {\r\n addDeltagerFormUrl,\r\n getDonateToParticipantUrl,\r\n getLysposeToParticipantUrl,\r\n tabTrap,\r\n participantList,\r\n toggleAccordion,\r\n supportParticipantLabel,\r\n getParticipantFullName,\r\n getLabel,\r\n participantEmails\r\n }\r\n \r\n }\r\n}","import { render } from \"./HoldetsDeltagere.vue?vue&type=template&id=0ce03120\"\nimport script from \"./HoldetsDeltagere.vue?vue&type=script&lang=js\"\nexport * from \"./HoldetsDeltagere.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"D:\\\\a\\\\1\\\\s\\\\frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\r\n\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n","import {computed, onMounted, ref} from 'vue'\r\nimport {useStore} from 'vuex'\r\nimport DonationCard from '../DonationCard/DonationCard.vue'\r\n\r\nexport default {\r\n name: \"HoldetsDonationer\",\r\n props: {\r\n teamId: {\r\n type: String,\r\n required: false\r\n },\r\n donationFormUrl: {\r\n type: String,\r\n required: false\r\n },\r\n },\r\n components: {DonationCard},\r\n setup(props){\r\n const store = useStore()\r\n const teamId = computed(() => props.teamId ?? store.state.main.page_overlay_content_data.teamId)\r\n const donationFormUrl = computed(() => props.donationFormUrl ?? store.state.main.page_overlay_content_data.donationFormUrl)\r\n const listOfDonations = computed(()=>store.state.stafet.teamDonations)\r\n const skip = ref(0)\r\n const take = ref(10)\r\n\r\n onMounted(()=>{\r\n store.dispatch('stafet/getTeamDonations',{\r\n teamId: teamId.value,\r\n skip,\r\n take\r\n })\r\n })\r\n\r\n const loadMore = function(){\r\n skip.value = take.value\r\n take.value = (take.value + skip.value)\r\n store.dispatch('stafet/getTeamDonations',{\r\n teamId: teamId.value,\r\n skip: skip.value,\r\n take: take.value\r\n })\r\n }\r\n\r\n const showLoadMore = computed(()=>{\r\n return store.state.stafet.teamDonationsTotal > skip.value\r\n })\r\n\r\n return {\r\n donationFormUrl,\r\n listOfDonations,\r\n loadMore,\r\n showLoadMore,\r\n getLabel: (labelKey) =>\r\n store.getters['labels/getLabel']({\r\n labelCollection: 'HoldetsDonationer',\r\n labelKey\r\n })\r\n }\r\n }\r\n}","import { render } from \"./HoldetsDonationer.vue?vue&type=template&id=245676ab\"\nimport script from \"./HoldetsDonationer.vue?vue&type=script&lang=js\"\nexport * from \"./HoldetsDonationer.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"D:\\\\a\\\\1\\\\s\\\\frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\r\n\r\n\r\n \r\n \r\n \r\n
\r\n
\r\n {{\r\n getLabel('title')\r\n }}\r\n
\r\n
\r\n \r\n \r\n {{\r\n getLabel('text')\r\n }}\r\n
\r\n \r\n \r\n\r\n \r\n \r\n \r\n
{{ getLabel('loginMotivation') }}
\r\n
\r\n
\r\n \r\n \r\n\r\n","import { onMounted, watch, computed } from \"vue\"\r\nimport { useStore } from \"vuex\"\r\nimport onTransitionendCallback from 'components/PageOverlay/methods/onTransitionendCallback'\r\n\r\nexport default {\r\n name: \"TilmeldHoldKvittering\",\r\n props: {\r\n hasProfile: {\r\n type: Boolean,\r\n required: false\r\n }\r\n },\r\n setup(){\r\n const store = useStore()\r\n const gtmActive = !!window?.dataLayer?.find(\r\n (element) => element['gtm.start']\r\n ) // check if gtm is active\r\n\r\n const loginUrl = store.state.main.page_overlay_content_data.loginUrl\r\n const createProfileUrl = store.state.main.page_overlay_content_data.createProfileUrl\r\n const hasProfile = store.state.main.page_overlay_content_data.hasProfile\r\n\r\n let first,\r\n last,\r\n close\r\n\r\n const tabTrap = function (e) {\r\n if (e.shiftKey && e.target.dataset.order === 'first') {\r\n e.preventDefault()\r\n close.focus()\r\n }\r\n\r\n if (!e.shiftKey && e.target.dataset.order === 'last') {\r\n e.preventDefault()\r\n close.focus()\r\n }\r\n\r\n if (!e.shiftKey && !e.target.dataset.order) {\r\n e.preventDefault()\r\n first.focus()\r\n }\r\n }\r\n\r\n onMounted(() => {\r\n \r\n first = document.querySelector(\r\n '.kb-button[data-order=\"first\"]'\r\n )\r\n last = document.querySelector(\r\n '.kb-button[data-order=\"last\"]'\r\n )\r\n close = document.querySelector('.kb-page-overlay__close')\r\n onTransitionendCallback(\r\n {\r\n opening() {\r\n first.focus()\r\n }\r\n },\r\n { persistent: true }\r\n )\r\n\r\n const orderId = new URLSearchParams(document.location.search).get(\r\n 'orderId'\r\n )\r\n if (orderId)\r\n store.dispatch('main/trackPurchaseData', { orderId })\r\n })\r\n \r\n return {\r\n loginUrl,\r\n createProfileUrl,\r\n hasProfile,\r\n tabTrap,\r\n getLabel: (labelKey) =>\r\n store.getters['labels/getLabel']({\r\n labelCollection: 'TilmeldHoldKvittering',\r\n labelKey\r\n })\r\n }\r\n }\r\n}","import { render } from \"./TilmeldHoldKvittering.vue?vue&type=template&id=372b4048\"\nimport script from \"./TilmeldHoldKvittering.vue?vue&type=script&lang=js\"\nexport * from \"./TilmeldHoldKvittering.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"D:\\\\a\\\\1\\\\s\\\\frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\r\n\r\n\r\n \r\n \r\n \r\n
\r\n
\r\n {{\r\n getLabel('title')\r\n }}\r\n
\r\n
\r\n \r\n \r\n {{\r\n getLabel('text')\r\n }}\r\n
\r\n \r\n \r\n\r\n \r\n \r\n \r\n
{{ getLabel('inviteMotivation') }}
\r\n
\r\n
\r\n \r\n \r\n\r\n","import { onMounted, watch, computed } from \"vue\"\r\nimport { useStore } from \"vuex\"\r\nimport { getTeamParticipantEmails } from \"foundation/js/teamParticipantUtils\"\r\nimport onTransitionendCallback from 'components/PageOverlay/methods/onTransitionendCallback'\r\n\r\n\r\nexport default {\r\n name: \"HoldOprettelseKvittering\",\r\n props:{\r\n teamId: {\r\n type: String,\r\n required: false\r\n }\r\n },\r\n setup(props){\r\n const store = useStore()\r\n\r\n const previousHoldkode = new URLSearchParams(document.location.search).get('previousHoldkode')\r\n\r\n let listOfRecipients = computed(() => \r\n previousHoldkode\r\n ? getTeamParticipantEmails(store.state.stafet.teamParticipantDetails)\r\n : ''\r\n )\r\n const gtmActive = !!window?.dataLayer?.find(\r\n (element) => element['gtm.start']\r\n ) // check if gtm is active\r\n\r\n onMounted(() => {\r\n store.dispatch('stafet/getTeamParticipantDetails',{\r\n teamId: previousHoldkode\r\n })\r\n\r\n let first = document.querySelector('.kb-hold-oprettelse-kvittering [data-order=\"first\"]') ?? document.querySelector('.kb-page-overlay__close')\r\n onTransitionendCallback({\r\n opening(){\r\n first.focus()\r\n }\r\n }, { persistent: true }) \r\n\r\n if (!gtmActive) return\r\n\r\n const holdKode = new URLSearchParams(document.location.search).get(\r\n 'holdKode'\r\n ) \r\n window.dataLayer = window.dataLayer || []\r\n dataLayer.push({ ecommerce: null })\r\n var event = {\r\n event: 'hold_oprettelse',\r\n holdKode: holdKode\r\n }\r\n dataLayer.push(event) \r\n })\r\n \r\n return {\r\n listOfRecipients,\r\n getLabel: (labelKey) =>\r\n store.getters['labels/getLabel']({\r\n labelCollection: 'HoldOprettelseKvittering',\r\n labelKey\r\n })\r\n }\r\n }\r\n}","import { render } from \"./HoldOprettelseKvittering.vue?vue&type=template&id=c8307db2\"\nimport script from \"./HoldOprettelseKvittering.vue?vue&type=script&lang=js\"\nexport * from \"./HoldOprettelseKvittering.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"D:\\\\a\\\\1\\\\s\\\\frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\r\n\r\n\r\n \r\n \r\n \r\n
\r\n
\r\n {{\r\n getLabel('title')\r\n }}\r\n
\r\n
\r\n \r\n \r\n {{\r\n getLabel('text')\r\n }}\r\n
\r\n \r\n \r\n\r\n \r\n\r\n","import { useStore } from \"vuex\"\r\n\r\nexport default {\r\n name: \"HoldRedigerKvittering\",\r\n setup(){\r\n const store = useStore()\r\n \r\n return {\r\n getLabel: (labelKey) =>\r\n store.getters['labels/getLabel']({\r\n labelCollection: 'HoldRedigerKvittering',\r\n labelKey\r\n })\r\n }\r\n }\r\n}","import { render } from \"./HoldRedigerKvittering.vue?vue&type=template&id=499ade07\"\nimport script from \"./HoldRedigerKvittering.vue?vue&type=script&lang=js\"\nexport * from \"./HoldRedigerKvittering.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"D:\\\\a\\\\1\\\\s\\\\frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\r\n\r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n {{ getLabel('title') }}\r\n
\r\n\r\n \r\n
\r\n {{ getLabel('globalRoundCounterLabel') }}\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n {{ getLabel('no-routes-text') }}\r\n
\r\n \r\n \r\n\r\n \r\n \r\n
\r\n \r\n\r\n","\r\n\r\n\r\n \r\n
\r\n
\r\n
\r\n {{ getLabel('rounds-title') }} {{ rute.ruteName }}\r\n \r\n {{ `(${rute.meters} m)` }}\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n\r\n","import AmountSelector from 'components/AmountSelector/AmountSelector.vue'\r\nimport { computed, ref } from 'vue'\r\nimport { useStore } from 'vuex'\r\n\r\nexport default {\r\n name: 'StafetRoundCounter',\r\n components: { AmountSelector },\r\n props: {\r\n rute: {\r\n type: Object,\r\n required: true\r\n },\r\n deltagerId: {\r\n type: String,\r\n required: false\r\n },\r\n maxRegistrationCount: {\r\n type: Number,\r\n required: false,\r\n default: 100\r\n }\r\n },\r\n setup(props) {\r\n const store = useStore()\r\n\r\n const amount = computed(() => {\r\n const { deltagerId, rute } = props\r\n\r\n const count = deltagerId \r\n ? store.getters['stafetRoundCounter/getDeltagerRuteAmount']({\r\n deltagerId,\r\n ruteId: rute.id\r\n })\r\n : store.state.stafetRoundCounter.ruteUpdates[rute.id] ?? 0\r\n\r\n return {\r\n count,\r\n key: amountKey.value\r\n }\r\n })\r\n const amountKey = ref(0)\r\n\r\n const shouldDisableApplyButton = computed(() => store.getters['stafetRoundCounter/shouldDisableApplyButton']({\r\n deltagerId: props.deltagerId, \r\n ruteId: props.rute.id \r\n })\r\n )\r\n\r\n const handleSetRoundCount = e => {\r\n let intValue = parseInt(e.target.value)\r\n if (isNaN(intValue)) {\r\n intValue = 0\r\n }\r\n else if (intValue > props.maxRegistrationCount) {\r\n intValue = props.maxRegistrationCount\r\n }\r\n\r\n if (props.deltagerId) {\r\n store.commit(\"stafetRoundCounter/set_deltager_counter\", { \r\n deltagerId: props.deltagerId, \r\n ruteId: props.rute.id,\r\n count: intValue\r\n })\r\n } else {\r\n store.commit(\"stafetRoundCounter/set_rute_counter\", {\r\n ruteId: props.rute.id,\r\n count: intValue\r\n })\r\n }\r\n\r\n amountKey.value++\r\n }\r\n \r\n const handleAddOneRound = function () {\r\n\r\n if (amount.value.count >= props.maxRegistrationCount) {\r\n return\r\n }\r\n\r\n if (props.deltagerId) {\r\n store.commit(\"stafetRoundCounter/increment_deltager_counter\", { \r\n deltagerId: props.deltagerId, \r\n ruteId: props.rute.id\r\n })\r\n } else {\r\n store.commit(\"stafetRoundCounter/increment_rute_counter\", props.rute.id)\r\n }\r\n \r\n }\r\n\r\n const handleRemoveOneRound = function () {\r\n if (props.deltagerId) {\r\n store.commit(\"stafetRoundCounter/decrement_deltager_counter\", { \r\n deltagerId: props.deltagerId, \r\n ruteId: props.rute.id\r\n })\r\n } else {\r\n store.commit(\"stafetRoundCounter/decrement_rute_counter\", props.rute.id)\r\n }\r\n }\r\n\r\n const handleSubmit = function () {\r\n store.dispatch(\"stafetRoundCounter/stafetRoundCounterSubmit\", { \r\n deltagerId: props.deltagerId, \r\n ruteId: props.rute.id\r\n })\r\n }\r\n\r\n return {\r\n amount,\r\n shouldDisableApplyButton,\r\n handleSetRoundCount,\r\n handleAddOneRound,\r\n handleRemoveOneRound,\r\n handleSubmit,\r\n getLabel: (labelKey) =>\r\n store.getters['labels/getLabel']({\r\n labelCollection: 'roundCounter',\r\n labelKey\r\n })\r\n }\r\n }\r\n}\r\n","import { render } from \"./StafetRoundCounter.vue?vue&type=template&id=40303bca\"\nimport script from \"./StafetRoundCounter.vue?vue&type=script&lang=js\"\nexport * from \"./StafetRoundCounter.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"D:\\\\a\\\\1\\\\s\\\\frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\r\n\r\n\r\n \r\n
\r\n {{ getLabel('accordionTitle') }}\r\n
\r\n\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n\r\n","import { useStore } from 'vuex'\r\n\r\nimport StafetRoundCounter from 'components/StafetRoundCounter/StafetRoundCounter.vue'\r\n\r\nexport default {\r\n name: 'StafetRoundCounterAccordion',\r\n components: { StafetRoundCounter },\r\n props: {\r\n participantData: {\r\n type: Object,\r\n required: true\r\n },\r\n maxRegistrationCount: {\r\n type: Number,\r\n required: false\r\n }\r\n },\r\n\r\n setup() {\r\n const store = useStore()\r\n\r\n const toggleAccordion = function (e) {\r\n const isExpanded = !!(\r\n e.currentTarget.getAttribute('aria-expanded') === 'true'\r\n )\r\n const accordionTarget = document.querySelector(\r\n `#${e.currentTarget.getAttribute('aria-controls')}`\r\n )\r\n const chevronTarget = e.currentTarget.querySelector(\r\n '.kb-stafet-round-counter-accordion__participant-chevron'\r\n )\r\n\r\n chevronTarget.classList[isExpanded ? 'remove' : 'add'](\r\n 'kb-stafet-round-counter-accordion__participant-chevron--open'\r\n )\r\n accordionTarget.classList[isExpanded ? 'remove' : 'add'](\r\n 'kb-stafet-round-counter-accordion__content--open'\r\n )\r\n e.currentTarget.setAttribute(\r\n 'aria-expanded',\r\n isExpanded ? 'false' : 'true'\r\n )\r\n\r\n accordionTarget.querySelectorAll('a').forEach((a) => {\r\n if (isExpanded) {\r\n a.setAttribute('tabindex', -1)\r\n } else {\r\n a.removeAttribute('tabindex')\r\n }\r\n })\r\n }\r\n\r\n return {\r\n toggleAccordion,\r\n getLabel: (labelKey) =>\r\n store.getters['labels/getLabel']({\r\n labelCollection: 'roundCounterAccordion',\r\n labelKey\r\n })\r\n }\r\n }\r\n}\r\n","import { render } from \"./StafetRoundCounterAccordion.vue?vue&type=template&id=6688c272\"\nimport script from \"./StafetRoundCounterAccordion.vue?vue&type=script&lang=js\"\nexport * from \"./StafetRoundCounterAccordion.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"D:\\\\a\\\\1\\\\s\\\\frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { onMounted, computed, ref, onUpdated } from 'vue'\r\nimport { useStore } from 'vuex'\r\nimport StafetRoundCounter from 'components/StafetRoundCounter/StafetRoundCounter.vue'\r\nimport StafetRoundCounterAccordion from 'components/StafetRoundCounterAccordion/StafetRoundCounterAccordion.vue'\r\n\r\nexport default {\r\n name: 'HoldetsRoundCounterOverlay',\r\n components: {\r\n StafetRoundCounter,\r\n StafetRoundCounterAccordion\r\n },\r\n setup() {\r\n const store = useStore()\r\n const isSubmitting = computed(() => store.state.stafetRoundCounter.isSubmitting)\r\n const teamId = computed(() => store.state.main.page_overlay_content_data.teamId)\r\n const ruter = computed(() => store.state.stafetRoundCounter.ruter)\r\n const deltagere = computed(() => store.state.stafetRoundCounter.deltagere)\r\n const maxRegistrationCount = computed(() => store.state.main.page_overlay_content_data.maxRegistrationCount)\r\n\r\n onMounted(() => {\r\n store.commit('stafetRoundCounter/set_team_id', teamId.value)\r\n store.dispatch('stafetRoundCounter/getStafetRoundCounter')\r\n })\r\n\r\n return {\r\n ruter,\r\n deltagere,\r\n isSubmitting,\r\n maxRegistrationCount,\r\n getLabel: (labelKey) =>\r\n store.getters['labels/getLabel']({\r\n labelCollection: 'HoldetsRoundCounterOverlay',\r\n labelKey\r\n })\r\n }\r\n }\r\n}\r\n","import { render } from \"./HoldetsRoundCounterOverlay.vue?vue&type=template&id=1cd4bdad\"\nimport script from \"./HoldetsRoundCounterOverlay.vue?vue&type=script&lang=js\"\nexport * from \"./HoldetsRoundCounterOverlay.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"D:\\\\a\\\\1\\\\s\\\\frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\r\n\r\n\r\n \r\n \r\n \r\n
\r\n {{ getLabel('title') }}\r\n
\r\n \r\n \r\n \r\n \r\n\r\n
\r\n
\r\n\r\n
\r\n \r\n\r\n","import { onMounted, watch, computed } from \"vue\"\r\nimport { useStore } from \"vuex\"\r\nimport onTransitionendCallback from 'components/PageOverlay/methods/onTransitionendCallback'\r\n\r\nexport default {\r\n name: \"ProfileDeleted\",\r\n setup(){\r\n const store = useStore()\r\n\r\n let first,\r\n last,\r\n close\r\n\r\n const tabTrap = function (e) {\r\n if (e.shiftKey && e.target.dataset.order === 'first') {\r\n e.preventDefault()\r\n close.focus()\r\n }\r\n\r\n if (!e.shiftKey && e.target.dataset.order === 'first') {\r\n e.preventDefault()\r\n close.focus()\r\n }\r\n\r\n if (!e.shiftKey && !e.target.dataset.order) {\r\n e.preventDefault()\r\n first.focus()\r\n }\r\n }\r\n\r\n const cancelAction = function(){\r\n store.dispatch('main/closePageOverlay')\r\n }\r\n\r\n onMounted(() => {\r\n \r\n first = document.querySelector(\r\n '.kb-button[data-order=\"first\"]'\r\n )\r\n last = document.querySelector(\r\n '.kb-button[data-order=\"last\"]'\r\n )\r\n close = document.querySelector('.kb-page-overlay__close')\r\n onTransitionendCallback(\r\n {\r\n opening() {\r\n first.focus()\r\n }\r\n },\r\n { persistent: true }\r\n )\r\n })\r\n\r\n return {\r\n cancelAction,\r\n tabTrap,\r\n getLabel: (labelKey) =>\r\n store.getters['labels/getLabel']({\r\n labelCollection: 'ProfileDeleted',\r\n labelKey\r\n })\r\n }\r\n }\r\n}","import { render } from \"./ProfileDeleted.vue?vue&type=template&id=cf1fd2fa\"\nimport script from \"./ProfileDeleted.vue?vue&type=script&lang=js\"\nexport * from \"./ProfileDeleted.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"D:\\\\a\\\\1\\\\s\\\\frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\r\n\r\n\r\n \r\n \r\n \r\n
\r\n
\r\n {{\r\n getLabel('title')\r\n }}\r\n
\r\n
\r\n \r\n \r\n {{\r\n getLabel('text')\r\n }}\r\n
\r\n \r\n \r\n\r\n \r\n\r\n
\r\n \r\n\r\n","import { onMounted, watch, computed } from \"vue\"\r\nimport { useStore } from \"vuex\"\r\nimport onTransitionendCallback from 'components/PageOverlay/methods/onTransitionendCallback'\r\n\r\nexport default {\r\n name: \"TilmeldProfilKvittering\",\r\n setup(){\r\n const store = useStore()\r\n const gtmActive = !!window?.dataLayer?.find(\r\n (element) => element['gtm.start']\r\n ) // check if gtm is active\r\n\r\n let first,\r\n last,\r\n close\r\n\r\n const tabTrap = function (e) {\r\n if (e.shiftKey && e.target.dataset.order === 'first') {\r\n e.preventDefault()\r\n close.focus()\r\n }\r\n\r\n if (!e.shiftKey && e.target.dataset.order === 'last') {\r\n e.preventDefault()\r\n close.focus()\r\n }\r\n\r\n if (!e.shiftKey && !e.target.dataset.order) {\r\n e.preventDefault()\r\n first.focus()\r\n }\r\n }\r\n\r\n onMounted(() => {\r\n \r\n first = document.querySelector(\r\n '.kb-button[data-order=\"first\"]'\r\n )\r\n last = document.querySelector(\r\n '.kb-button[data-order=\"last\"]'\r\n )\r\n close = document.querySelector('.kb-page-overlay__close')\r\n onTransitionendCallback(\r\n {\r\n opening() {\r\n first.focus()\r\n }\r\n },\r\n { persistent: true }\r\n )\r\n\r\n if (!gtmActive) return\r\n window.dataLayer = window.dataLayer || []\r\n dataLayer.push({ ecommerce: null })\r\n var event = {\r\n event: 'opret_sfl_profil'\r\n }\r\n dataLayer.push(event)\r\n })\r\n\r\n return {\r\n tabTrap,\r\n getLabel: (labelKey) =>\r\n store.getters['labels/getLabel']({\r\n labelCollection: 'TilmeldProfilKvittering',\r\n labelKey\r\n })\r\n }\r\n }\r\n}","import { render } from \"./TilmeldProfilKvittering.vue?vue&type=template&id=746280c8\"\nimport script from \"./TilmeldProfilKvittering.vue?vue&type=script&lang=js\"\nexport * from \"./TilmeldProfilKvittering.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"D:\\\\a\\\\1\\\\s\\\\frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\r\n\r\n\r\n \r\n \r\n \r\n
\r\n {{ getLabel('title') }}\r\n
\r\n \r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n","import { useStore } from \"vuex\"\r\nimport GetLabel from \"foundation/js/getLabel\"\r\nimport ActivityCard from \"../ActivityCard/ActivityCard.vue\"\r\nimport { onMounted, computed } from \"vue\"\r\nimport deepClone from \"foundation/js/deepClone\"\r\n\r\n\r\nexport default {\r\n name: \"CalendarOverlay\",\r\n components: {\r\n ActivityCard\r\n },\r\n props: {\r\n groupId: {\r\n type: String,\r\n required: true\r\n },\r\n skip: {\r\n type: Number,\r\n required: true,\r\n default: 0\r\n },\r\n take: {\r\n type: Number,\r\n required: true,\r\n default: 10\r\n },\r\n createEventUrl: {\r\n type: String,\r\n required: true\r\n },\r\n allowedToEdit: {\r\n type: Boolean,\r\n required: true\r\n }\r\n },\r\n setup(props) {\r\n const store = useStore()\r\n \r\n const GUID = 'calendarEvents'\r\n const groupId = computed(() => store.state.main.page_overlay_content_data.groupId)\r\n const skip = computed(() => store.state.main.page_overlay_content_data.skip)\r\n const take = computed(() => store.state.main.page_overlay_content_data.take)\r\n const createEventUrl = computed(() => store.state.main.page_overlay_content_data.createEventUrl)\r\n const allowedToEdit = computed(() => store.state.main.page_overlay_content_data.allowedToEdit)\r\n\r\n const url = process.env.FRIVILLIGE_GROUP_EVENTS\r\n .replace('[pageId]', store.state.main.page_id)\r\n .replace('[groupId]', groupId.value)\r\n\r\n const activities = computed(() => {\r\n return deepClone(store.state.search.results[GUID] ?? [])\r\n })\r\n \r\n onMounted(() => {\r\n store.commit('search/set_replaceQueryInUrl', false)\r\n\r\n store.dispatch('search/initSearchScope', {\r\n guid: GUID,\r\n firstPageSize: take.value,\r\n showMorePageSize: take.value,\r\n url: url\r\n })\r\n\r\n store.dispatch('search/performSearch', {\r\n guid: GUID,\r\n query: '',\r\n skip: skip.value,\r\n take: take.value\r\n })\r\n })\r\n\r\n const deleteEvent = (e, eventId) => {\r\n store.commit('main/set_page_overlay_content_data', {\r\n callback: () => {\r\n store.dispatch('frivillige/deleteEvent', { \r\n pageId: store.state.main.page_id,\r\n eventId: eventId\r\n })\r\n store.dispatch('main/closePageOverlay')\r\n }\r\n })\r\n\r\n store.dispatch(\"main/openPageOverlay\", {\r\n overlayContent: \"DeletePostOverlay\",\r\n returnTarget: e.currentTarget,\r\n });\r\n }\r\n\r\n return {\r\n activities,\r\n allowedToEdit,\r\n createEventUrl,\r\n deleteEvent,\r\n getLabel: (labelKey) => GetLabel({ labelKey, labelCollection: 'CalendarOverlay' })\r\n }\r\n }\r\n}","import { render } from \"./CalendarOverlay.vue?vue&type=template&id=1148e697\"\nimport script from \"./CalendarOverlay.vue?vue&type=script&lang=js\"\nexport * from \"./CalendarOverlay.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"D:\\\\a\\\\1\\\\s\\\\frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { useStore } from 'vuex'\r\nimport { onMounted, computed, onUpdated } from 'vue'\r\n\r\nimport closeSliderGripBehaviour from './methods/closeSliderGripBehaviour'\r\nimport onTransitionendCallback from './methods/onTransitionendCallback'\r\n\r\nimport BurgerMenu from 'components/BurgerMenu/BurgerMenu.vue'\r\nimport SearchOverlay from 'components/SearchOverlay/SearchOverlay.vue'\r\nimport FilterOverlay from 'components/FilterOverlay/FilterOverlay.vue'\r\nimport ArticleOverlay from 'components/ArticleOverlay/ArticleOverlay.vue'\r\nimport SignUpForm from 'components/SignUpForm/SignUpForm.vue'\r\nimport FlowEditModal from 'components/FlowEditModal/FlowEditModal.vue'\r\nimport PersonalDonation from 'components/PersonalDonationStep2a/PersonalDonationStep2a.vue'\r\nimport MemberListOverlay from 'components/MemberListOverlay/MemberListOverlay.vue'\r\nimport MemberListOverlayFVL from 'components/MemberListOverlayFVL/MemberListOverlayFVL.vue'\r\nimport MemberOverlay from 'components/MemberOverlay/MemberOverlay.vue'\r\nimport MemberOverlayProfileCard from 'components/MemberOverlayProfileCard/MemberOverlayProfileCard.vue'\r\nimport ClosedGroupOverlay from 'components/ClosedGroupOverlay/ClosedGroupOverlay.vue'\r\nimport CreateFolderOverlay from 'components/CreateFolderOverlay/CreateFolderOverlay.vue'\r\nimport CreateNewFileOverlay from 'components/CreateNewFileOverlay/CreateNewFileOverlay.vue'\r\nimport ConfirmDeleteOverlay from 'components/ConfirmDeleteOverlay/ConfirmDeleteOverlay.vue'\r\nimport DeleteRoleOverlay from 'components/DeleteRoleOverlay/DeleteRoleOverlay.vue'\r\nimport UploadNewFileOverlay from 'components/UploadNewFileOverlay/UploadNewFileOverlay.vue'\r\nimport MoveFileOverlay from 'components/MoveFileOverlay/MoveFileOverlay.vue'\r\nimport HoldetsLys from 'components/HoldetsLys/HoldetsLys.vue'\r\nimport HoldetsDeltagere from 'components/HoldetsDeltagere/HoldetsDeltagere.vue'\r\nimport HoldetsDonationer from 'components/HoldetsDonationer/HoldetsDonationer.vue'\r\nimport TilmeldHoldKvittering from 'components/TilmeldHoldKvittering/TilmeldHoldKvittering.vue'\r\nimport HoldOprettelseKvittering from 'components/HoldOprettelseKvittering/HoldOprettelseKvittering.vue'\r\nimport HoldRedigerKvittering from 'components/HoldRedigerKvittering/HoldRedigerKvittering.vue'\r\nimport HoldetsRoundCounterOverlay from 'components/HoldetsRoundCounterOverlay/HoldetsRoundCounterOverlay.vue'\r\nimport ConfirmChanges from 'components/ConfirmChanges/ConfirmChanges.vue'\r\nimport OpretHoldOverlay from 'components/OpretHoldOverlay/OpretHoldOverlay.vue'\r\nimport ChangesSaved from 'components/ChangesSaved/ChangesSaved.vue'\r\nimport ProfileDeleted from 'components/ProfileDeleted/ProfileDeleted.vue'\r\nimport ConfirmDeleteProfile from 'components/ConfirmDeleteProfile/ConfirmDeleteProfile.vue'\r\nimport LoginOverlay from 'components/LoginOverlay/LoginOverlay.vue'\r\nimport DonationReceiptOverlay from 'components/DonationReceiptOverlay/DonationReceiptOverlay.vue'\r\nimport TilmeldProfilKvittering from 'components/TilmeldProfilKvittering/TilmeldProfilKvittering.vue'\r\nimport DeleteCancerProfileModal from 'components/DeleteCancerProfileModal/DeleteCancerProfileModal.vue'\r\nimport DeletePostOverlay from 'components/DeletePostOverlay/DeletePostOverlay.vue'\r\nimport DeleteCommentOverlay from 'components/DeleteCommentOverlay/DeleteCommentOverlay.vue'\r\nimport CalendarOverlay from 'components/CalendarOverlay/CalendarOverlay.vue'\r\nimport DeleteEventModal from 'components/DeleteEventModal/DeleteEventModal.vue'\r\nimport FrivilligeShopWrongRoleModal from 'components/FrivilligeShopWrongRoleModal/FrivilligeShopWrongRoleModal.vue'\r\nimport FVLConfirmDeleteProfile from 'components/FVLConfirmDeleteProfile/FVLConfirmDeleteProfile.vue'\r\nimport DeleteFrivilligjobOverlay from 'components/DeleteFrivilligjobOverlay/DeleteFrivilligjobOverlay.vue'\r\n\r\nexport default {\r\n name: 'PageOverlay',\r\n components: {\r\n BurgerMenu,\r\n ConfirmChanges,\r\n ConfirmDeleteProfile,\r\n OpretHoldOverlay,\r\n ChangesSaved,\r\n SearchOverlay,\r\n LoginOverlay,\r\n DonationReceiptOverlay,\r\n FilterOverlay,\r\n HoldetsDeltagere,\r\n HoldetsDonationer,\r\n HoldetsLys,\r\n ArticleOverlay,\r\n SignUpForm,\r\n ProfileDeleted,\r\n FlowEditModal,\r\n PersonalDonation,\r\n MemberListOverlay,\r\n MemberListOverlayFVL,\r\n MemberOverlay,\r\n MemberOverlayProfileCard,\r\n ClosedGroupOverlay,\r\n CreateFolderOverlay,\r\n CreateNewFileOverlay,\r\n UploadNewFileOverlay,\r\n ConfirmDeleteOverlay,\r\n DeleteRoleOverlay,\r\n MoveFileOverlay,\r\n ClosedGroupOverlay,\r\n DeleteFrivilligjobOverlay,\r\n TilmeldHoldKvittering,\r\n TilmeldProfilKvittering,\r\n HoldOprettelseKvittering,\r\n HoldetsRoundCounterOverlay,\r\n HoldRedigerKvittering,\r\n DeleteCancerProfileModal,\r\n DeletePostOverlay,\r\n DeleteCommentOverlay,\r\n DeleteEventModal,\r\n FrivilligeShopWrongRoleModal,\r\n CalendarOverlay,\r\n FVLConfirmDeleteProfile\r\n },\r\n setup() {\r\n const store = useStore()\r\n const closeOverlay = function () {\r\n store.dispatch('main/closePageOverlay')\r\n\r\n // on Frivillige document pages the active overlay mode should be set when overlay activated\r\n // when overlay closed, mode needs to be cleared - modes can be: \"Dokument\" or \"Mappe\"\r\n store.dispatch('frivillige/setActiveOverlayMode', { mode: \"\" }) \r\n store.dispatch('frivillige/setEditModeActive', { mode: false }) \r\n }\r\n\r\n let overlayContent = computed(\r\n () => store.state.main.page_overlay_content\r\n )\r\n\r\n const overlayState = computed(() => {\r\n return store.state.main.page_overlay_open === null\r\n ? 'ready'\r\n : store.state.main.page_overlay_open\r\n ? 'open'\r\n : 'closed'\r\n })\r\n\r\n const displayOverlayContent = computed(() => {\r\n return overlayState.value === 'open'\r\n })\r\n\r\n let first, last, close\r\n\r\n const tabTrap = function (e) {\r\n if (!e.shiftKey && e.target.dataset.order === 'close') {\r\n e.preventDefault()\r\n if (first) {\r\n first.focus()\r\n } else if (document.querySelector('[data-order=first]')) {\r\n first = document.querySelector('[data-order=first]')\r\n first.focus()\r\n }\r\n }\r\n if (e.shiftKey && e.target.dataset.order === 'close') {\r\n e.preventDefault()\r\n if (last) {\r\n last.focus()\r\n } else if (document.querySelector('[data-order=last]')) {\r\n last = document.querySelector('[data-order=last]')\r\n last.focus()\r\n }\r\n }\r\n }\r\n\r\n onUpdated(() => {\r\n close = document.querySelector('.kb-page-overlay__close')\r\n first = document.querySelector('[data-order=\"first\"]')\r\n last = document.querySelector('[data-order=\"last\"]')\r\n last = last ? last : first\r\n })\r\n\r\n onMounted(() => {\r\n close = document.querySelector('.kb-page-overlay__close')\r\n first = document.querySelector('[data-order=\"first\"]')\r\n last = document.querySelector('[data-order=\"last\"]')\r\n last = last ? last : first\r\n closeSliderGripBehaviour(store)\r\n onTransitionendCallback(\r\n {\r\n closing() {\r\n store.commit('main/reset_page_overlay')\r\n }\r\n },\r\n { persistent: true }\r\n )\r\n })\r\n\r\n return {\r\n closeOverlay,\r\n displayOverlayContent,\r\n tabTrap,\r\n overlayContent,\r\n overlayState\r\n }\r\n }\r\n}\r\n","export default function (store) {\r\n let startPosition, initialTop, verticalMotion\r\n const threshold = 100\r\n const closeSliderGrip = document.querySelector('[draggable=\"true\"]')\r\n const overlayContent = document.querySelector('.kb-page-overlay__content')\r\n\r\n closeSliderGrip.addEventListener('touchstart', (e) => {\r\n initialTop =\r\n initialTop ||\r\n +getComputedStyle(overlayContent)\r\n .getPropertyValue('top')\r\n .replace('px', '')\r\n startPosition = 0\r\n })\r\n\r\n closeSliderGrip.addEventListener('touchmove', (e) => {\r\n e.preventDefault()\r\n e.stopPropagation()\r\n\r\n verticalMotion = e.touches[0].clientY\r\n\r\n if (startPosition && startPosition < verticalMotion) {\r\n overlayContent.style.top =\r\n verticalMotion - startPosition + initialTop + 'px'\r\n overlayContent.style.transitionDuration = '1ms'\r\n } else {\r\n startPosition = verticalMotion\r\n }\r\n })\r\n\r\n closeSliderGrip.addEventListener('touchend', () => {\r\n if (startPosition + threshold < verticalMotion) {\r\n store.commit('main/close_page_overlay')\r\n }\r\n overlayContent.style.top = ''\r\n overlayContent.style.transitionDuration = ''\r\n })\r\n}\r\n","import { render } from \"./PageOverlay.vue?vue&type=template&id=e5f72c72\"\nimport script from \"./PageOverlay.vue?vue&type=script&lang=js\"\nexport * from \"./PageOverlay.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"D:\\\\a\\\\1\\\\s\\\\frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { createApp } from 'vue'\r\nimport PageOverlay from './PageOverlay'\r\n\r\nconst el = '.kb-component--page-overlay'\r\nconst DOM = document.querySelector(el)\r\n\r\nexport default function (Store) {\r\n if (DOM && !DOM.hasAttribute('data-v-app')) {\r\n const component = createApp(PageOverlay).use(Store)\r\n const openOverlayAutomatically = !!DOM.dataset.test\r\n const contentComponentToShow = DOM.dataset.content\r\n\r\n component.mount(el)\r\n\r\n // the following initiation of the overlay is strictly for local dev purposes\r\n if (openOverlayAutomatically) {\r\n Store.commit(\r\n 'main/set_page_overlay_content',\r\n contentComponentToShow\r\n )\r\n setTimeout(() => Store.commit('main/open_page_overlay'), 500)\r\n }\r\n }\r\n}\r\n","\r\n\r\n\r\n \r\n \r\n\r\n \r\n {{ getLabel('fundraiseSecondHeadline') }}
\r\n \r\n {{ getLabel('fundraiseDescriptionText') }}\r\n
\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n \r\n\r\n \r\n {{ getLabel('fundraiseImageUploadTitle') }}
\r\n \r\n {{ getLabel('fundraiseImageUploadText') }}\r\n
\r\n\r\n \r\n \r\n \r\n\r\n \r\n\r\n \r\n \r\n\r\n \r\n\r\n \r\n \r\n {{ getLabel('continueInfoTitle') }}\r\n
\r\n \r\n {{ getLabel('continueInfoDescription') }}\r\n
\r\n \r\n\r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n
\r\n\r\n \r\n \r\n\r\n","export default function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, _typeof(obj);\n}","export default function requiredArgs(required, args) {\n if (args.length < required) {\n throw new TypeError(required + ' argument' + (required > 1 ? 's' : '') + ' required, but only ' + args.length + ' present');\n }\n}","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isDate\n * @category Common Helpers\n * @summary Is the given value a date?\n *\n * @description\n * Returns true if the given value is an instance of Date. The function works for dates transferred across iframes.\n *\n * @param {*} value - the value to check\n * @returns {boolean} true if the given value is a date\n * @throws {TypeError} 1 arguments required\n *\n * @example\n * // For a valid date:\n * const result = isDate(new Date())\n * //=> true\n *\n * @example\n * // For an invalid date:\n * const result = isDate(new Date(NaN))\n * //=> true\n *\n * @example\n * // For some value:\n * const result = isDate('2014-02-31')\n * //=> false\n *\n * @example\n * // For an object:\n * const result = isDate({})\n * //=> false\n */\nexport default function isDate(value) {\n requiredArgs(1, arguments);\n return value instanceof Date || _typeof(value) === 'object' && Object.prototype.toString.call(value) === '[object Date]';\n}","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name toDate\n * @category Common Helpers\n * @summary Convert the given argument to an instance of Date.\n *\n * @description\n * Convert the given argument to an instance of Date.\n *\n * If the argument is an instance of Date, the function returns its clone.\n *\n * If the argument is a number, it is treated as a timestamp.\n *\n * If the argument is none of the above, the function returns Invalid Date.\n *\n * **Note**: *all* Date arguments passed to any *date-fns* function is processed by `toDate`.\n *\n * @param {Date|Number} argument - the value to convert\n * @returns {Date} the parsed date in the local time zone\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Clone the date:\n * const result = toDate(new Date(2014, 1, 11, 11, 30, 30))\n * //=> Tue Feb 11 2014 11:30:30\n *\n * @example\n * // Convert the timestamp to date:\n * const result = toDate(1392098430000)\n * //=> Tue Feb 11 2014 11:30:30\n */\nexport default function toDate(argument) {\n requiredArgs(1, arguments);\n var argStr = Object.prototype.toString.call(argument);\n\n // Clone the date\n if (argument instanceof Date || _typeof(argument) === 'object' && argStr === '[object Date]') {\n // Prevent the date to lose the milliseconds when passed to new Date() in IE10\n return new Date(argument.getTime());\n } else if (typeof argument === 'number' || argStr === '[object Number]') {\n return new Date(argument);\n } else {\n if ((typeof argument === 'string' || argStr === '[object String]') && typeof console !== 'undefined') {\n // eslint-disable-next-line no-console\n console.warn(\"Starting with v2.0.0-beta.1 date-fns doesn't accept strings as date arguments. Please use `parseISO` to parse strings. See: https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#string-arguments\");\n // eslint-disable-next-line no-console\n console.warn(new Error().stack);\n }\n return new Date(NaN);\n }\n}","import isDate from \"../isDate/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isValid\n * @category Common Helpers\n * @summary Is the given date valid?\n *\n * @description\n * Returns false if argument is Invalid Date and true otherwise.\n * Argument is converted to Date using `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * Invalid Date is a Date, whose time value is NaN.\n *\n * Time value of Date: http://es5.github.io/#x15.9.1.1\n *\n * @param {*} date - the date to check\n * @returns {Boolean} the date is valid\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // For the valid date:\n * const result = isValid(new Date(2014, 1, 31))\n * //=> true\n *\n * @example\n * // For the value, convertable into a date:\n * const result = isValid(1393804800000)\n * //=> true\n *\n * @example\n * // For the invalid date:\n * const result = isValid(new Date(''))\n * //=> false\n */\nexport default function isValid(dirtyDate) {\n requiredArgs(1, arguments);\n if (!isDate(dirtyDate) && typeof dirtyDate !== 'number') {\n return false;\n }\n var date = toDate(dirtyDate);\n return !isNaN(Number(date));\n}","export default function toInteger(dirtyNumber) {\n if (dirtyNumber === null || dirtyNumber === true || dirtyNumber === false) {\n return NaN;\n }\n var number = Number(dirtyNumber);\n if (isNaN(number)) {\n return number;\n }\n return number < 0 ? Math.ceil(number) : Math.floor(number);\n}","import addMilliseconds from \"../addMilliseconds/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\n/**\n * @name subMilliseconds\n * @category Millisecond Helpers\n * @summary Subtract the specified number of milliseconds from the given date.\n *\n * @description\n * Subtract the specified number of milliseconds from the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of milliseconds to be subtracted. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the milliseconds subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 750 milliseconds from 10 July 2014 12:45:30.000:\n * const result = subMilliseconds(new Date(2014, 6, 10, 12, 45, 30, 0), 750)\n * //=> Thu Jul 10 2014 12:45:29.250\n */\nexport default function subMilliseconds(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addMilliseconds(dirtyDate, -amount);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name addMilliseconds\n * @category Millisecond Helpers\n * @summary Add the specified number of milliseconds to the given date.\n *\n * @description\n * Add the specified number of milliseconds to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of milliseconds to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the milliseconds added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 750 milliseconds to 10 July 2014 12:45:30.000:\n * const result = addMilliseconds(new Date(2014, 6, 10, 12, 45, 30, 0), 750)\n * //=> Thu Jul 10 2014 12:45:30.750\n */\nexport default function addMilliseconds(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var timestamp = toDate(dirtyDate).getTime();\n var amount = toInteger(dirtyAmount);\n return new Date(timestamp + amount);\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nexport default function startOfUTCISOWeek(dirtyDate) {\n requiredArgs(1, arguments);\n var weekStartsOn = 1;\n var date = toDate(dirtyDate);\n var day = date.getUTCDay();\n var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n date.setUTCDate(date.getUTCDate() - diff);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport startOfUTCISOWeek from \"../startOfUTCISOWeek/index.js\";\nexport default function getUTCISOWeekYear(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var year = date.getUTCFullYear();\n var fourthOfJanuaryOfNextYear = new Date(0);\n fourthOfJanuaryOfNextYear.setUTCFullYear(year + 1, 0, 4);\n fourthOfJanuaryOfNextYear.setUTCHours(0, 0, 0, 0);\n var startOfNextYear = startOfUTCISOWeek(fourthOfJanuaryOfNextYear);\n var fourthOfJanuaryOfThisYear = new Date(0);\n fourthOfJanuaryOfThisYear.setUTCFullYear(year, 0, 4);\n fourthOfJanuaryOfThisYear.setUTCHours(0, 0, 0, 0);\n var startOfThisYear = startOfUTCISOWeek(fourthOfJanuaryOfThisYear);\n if (date.getTime() >= startOfNextYear.getTime()) {\n return year + 1;\n } else if (date.getTime() >= startOfThisYear.getTime()) {\n return year;\n } else {\n return year - 1;\n }\n}","import toDate from \"../../toDate/index.js\";\nimport startOfUTCISOWeek from \"../startOfUTCISOWeek/index.js\";\nimport startOfUTCISOWeekYear from \"../startOfUTCISOWeekYear/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nvar MILLISECONDS_IN_WEEK = 604800000;\nexport default function getUTCISOWeek(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var diff = startOfUTCISOWeek(date).getTime() - startOfUTCISOWeekYear(date).getTime();\n\n // Round the number of days to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n return Math.round(diff / MILLISECONDS_IN_WEEK) + 1;\n}","import getUTCISOWeekYear from \"../getUTCISOWeekYear/index.js\";\nimport startOfUTCISOWeek from \"../startOfUTCISOWeek/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nexport default function startOfUTCISOWeekYear(dirtyDate) {\n requiredArgs(1, arguments);\n var year = getUTCISOWeekYear(dirtyDate);\n var fourthOfJanuary = new Date(0);\n fourthOfJanuary.setUTCFullYear(year, 0, 4);\n fourthOfJanuary.setUTCHours(0, 0, 0, 0);\n var date = startOfUTCISOWeek(fourthOfJanuary);\n return date;\n}","var defaultOptions = {};\nexport function getDefaultOptions() {\n return defaultOptions;\n}\nexport function setDefaultOptions(newOptions) {\n defaultOptions = newOptions;\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport toInteger from \"../toInteger/index.js\";\nimport { getDefaultOptions } from \"../defaultOptions/index.js\";\nexport default function startOfUTCWeek(dirtyDate, options) {\n var _ref, _ref2, _ref3, _options$weekStartsOn, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n requiredArgs(1, arguments);\n var defaultOptions = getDefaultOptions();\n var weekStartsOn = toInteger((_ref = (_ref2 = (_ref3 = (_options$weekStartsOn = options === null || options === void 0 ? void 0 : options.weekStartsOn) !== null && _options$weekStartsOn !== void 0 ? _options$weekStartsOn : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.weekStartsOn) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.weekStartsOn) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.weekStartsOn) !== null && _ref !== void 0 ? _ref : 0);\n\n // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n var date = toDate(dirtyDate);\n var day = date.getUTCDay();\n var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n date.setUTCDate(date.getUTCDate() - diff);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport startOfUTCWeek from \"../startOfUTCWeek/index.js\";\nimport toInteger from \"../toInteger/index.js\";\nimport { getDefaultOptions } from \"../defaultOptions/index.js\";\nexport default function getUTCWeekYear(dirtyDate, options) {\n var _ref, _ref2, _ref3, _options$firstWeekCon, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var year = date.getUTCFullYear();\n var defaultOptions = getDefaultOptions();\n var firstWeekContainsDate = toInteger((_ref = (_ref2 = (_ref3 = (_options$firstWeekCon = options === null || options === void 0 ? void 0 : options.firstWeekContainsDate) !== null && _options$firstWeekCon !== void 0 ? _options$firstWeekCon : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.firstWeekContainsDate) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.firstWeekContainsDate) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.firstWeekContainsDate) !== null && _ref !== void 0 ? _ref : 1);\n\n // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively');\n }\n var firstWeekOfNextYear = new Date(0);\n firstWeekOfNextYear.setUTCFullYear(year + 1, 0, firstWeekContainsDate);\n firstWeekOfNextYear.setUTCHours(0, 0, 0, 0);\n var startOfNextYear = startOfUTCWeek(firstWeekOfNextYear, options);\n var firstWeekOfThisYear = new Date(0);\n firstWeekOfThisYear.setUTCFullYear(year, 0, firstWeekContainsDate);\n firstWeekOfThisYear.setUTCHours(0, 0, 0, 0);\n var startOfThisYear = startOfUTCWeek(firstWeekOfThisYear, options);\n if (date.getTime() >= startOfNextYear.getTime()) {\n return year + 1;\n } else if (date.getTime() >= startOfThisYear.getTime()) {\n return year;\n } else {\n return year - 1;\n }\n}","import toDate from \"../../toDate/index.js\";\nimport startOfUTCWeek from \"../startOfUTCWeek/index.js\";\nimport startOfUTCWeekYear from \"../startOfUTCWeekYear/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nvar MILLISECONDS_IN_WEEK = 604800000;\nexport default function getUTCWeek(dirtyDate, options) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var diff = startOfUTCWeek(date, options).getTime() - startOfUTCWeekYear(date, options).getTime();\n\n // Round the number of days to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n return Math.round(diff / MILLISECONDS_IN_WEEK) + 1;\n}","import getUTCWeekYear from \"../getUTCWeekYear/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport startOfUTCWeek from \"../startOfUTCWeek/index.js\";\nimport toInteger from \"../toInteger/index.js\";\nimport { getDefaultOptions } from \"../defaultOptions/index.js\";\nexport default function startOfUTCWeekYear(dirtyDate, options) {\n var _ref, _ref2, _ref3, _options$firstWeekCon, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n requiredArgs(1, arguments);\n var defaultOptions = getDefaultOptions();\n var firstWeekContainsDate = toInteger((_ref = (_ref2 = (_ref3 = (_options$firstWeekCon = options === null || options === void 0 ? void 0 : options.firstWeekContainsDate) !== null && _options$firstWeekCon !== void 0 ? _options$firstWeekCon : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.firstWeekContainsDate) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.firstWeekContainsDate) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.firstWeekContainsDate) !== null && _ref !== void 0 ? _ref : 1);\n var year = getUTCWeekYear(dirtyDate, options);\n var firstWeek = new Date(0);\n firstWeek.setUTCFullYear(year, 0, firstWeekContainsDate);\n firstWeek.setUTCHours(0, 0, 0, 0);\n var date = startOfUTCWeek(firstWeek, options);\n return date;\n}","export default function addLeadingZeros(number, targetLength) {\n var sign = number < 0 ? '-' : '';\n var output = Math.abs(number).toString();\n while (output.length < targetLength) {\n output = '0' + output;\n }\n return sign + output;\n}","import addLeadingZeros from \"../../addLeadingZeros/index.js\";\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | |\n * | d | Day of month | D | |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | m | Minute | M | Month |\n * | s | Second | S | Fraction of second |\n * | y | Year (abs) | Y | |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n */\nvar formatters = {\n // Year\n y: function y(date, token) {\n // From http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_tokens\n // | Year | y | yy | yyy | yyyy | yyyyy |\n // |----------|-------|----|-------|-------|-------|\n // | AD 1 | 1 | 01 | 001 | 0001 | 00001 |\n // | AD 12 | 12 | 12 | 012 | 0012 | 00012 |\n // | AD 123 | 123 | 23 | 123 | 0123 | 00123 |\n // | AD 1234 | 1234 | 34 | 1234 | 1234 | 01234 |\n // | AD 12345 | 12345 | 45 | 12345 | 12345 | 12345 |\n\n var signedYear = date.getUTCFullYear();\n // Returns 1 for 1 BC (which is year 0 in JavaScript)\n var year = signedYear > 0 ? signedYear : 1 - signedYear;\n return addLeadingZeros(token === 'yy' ? year % 100 : year, token.length);\n },\n // Month\n M: function M(date, token) {\n var month = date.getUTCMonth();\n return token === 'M' ? String(month + 1) : addLeadingZeros(month + 1, 2);\n },\n // Day of the month\n d: function d(date, token) {\n return addLeadingZeros(date.getUTCDate(), token.length);\n },\n // AM or PM\n a: function a(date, token) {\n var dayPeriodEnumValue = date.getUTCHours() / 12 >= 1 ? 'pm' : 'am';\n switch (token) {\n case 'a':\n case 'aa':\n return dayPeriodEnumValue.toUpperCase();\n case 'aaa':\n return dayPeriodEnumValue;\n case 'aaaaa':\n return dayPeriodEnumValue[0];\n case 'aaaa':\n default:\n return dayPeriodEnumValue === 'am' ? 'a.m.' : 'p.m.';\n }\n },\n // Hour [1-12]\n h: function h(date, token) {\n return addLeadingZeros(date.getUTCHours() % 12 || 12, token.length);\n },\n // Hour [0-23]\n H: function H(date, token) {\n return addLeadingZeros(date.getUTCHours(), token.length);\n },\n // Minute\n m: function m(date, token) {\n return addLeadingZeros(date.getUTCMinutes(), token.length);\n },\n // Second\n s: function s(date, token) {\n return addLeadingZeros(date.getUTCSeconds(), token.length);\n },\n // Fraction of second\n S: function S(date, token) {\n var numberOfDigits = token.length;\n var milliseconds = date.getUTCMilliseconds();\n var fractionalSeconds = Math.floor(milliseconds * Math.pow(10, numberOfDigits - 3));\n return addLeadingZeros(fractionalSeconds, token.length);\n }\n};\nexport default formatters;","import getUTCDayOfYear from \"../../../_lib/getUTCDayOfYear/index.js\";\nimport getUTCISOWeek from \"../../../_lib/getUTCISOWeek/index.js\";\nimport getUTCISOWeekYear from \"../../../_lib/getUTCISOWeekYear/index.js\";\nimport getUTCWeek from \"../../../_lib/getUTCWeek/index.js\";\nimport getUTCWeekYear from \"../../../_lib/getUTCWeekYear/index.js\";\nimport addLeadingZeros from \"../../addLeadingZeros/index.js\";\nimport lightFormatters from \"../lightFormatters/index.js\";\nvar dayPeriodEnum = {\n am: 'am',\n pm: 'pm',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n};\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | Milliseconds in day |\n * | b | AM, PM, noon, midnight | B | Flexible day period |\n * | c | Stand-alone local day of week | C* | Localized hour w/ day period |\n * | d | Day of month | D | Day of year |\n * | e | Local day of week | E | Day of week |\n * | f | | F* | Day of week in month |\n * | g* | Modified Julian day | G | Era |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | i! | ISO day of week | I! | ISO week of year |\n * | j* | Localized hour w/ day period | J* | Localized hour w/o day period |\n * | k | Hour [1-24] | K | Hour [0-11] |\n * | l* | (deprecated) | L | Stand-alone month |\n * | m | Minute | M | Month |\n * | n | | N | |\n * | o! | Ordinal number modifier | O | Timezone (GMT) |\n * | p! | Long localized time | P! | Long localized date |\n * | q | Stand-alone quarter | Q | Quarter |\n * | r* | Related Gregorian year | R! | ISO week-numbering year |\n * | s | Second | S | Fraction of second |\n * | t! | Seconds timestamp | T! | Milliseconds timestamp |\n * | u | Extended year | U* | Cyclic year |\n * | v* | Timezone (generic non-locat.) | V* | Timezone (location) |\n * | w | Local week of year | W* | Week of month |\n * | x | Timezone (ISO-8601 w/o Z) | X | Timezone (ISO-8601) |\n * | y | Year (abs) | Y | Local week-numbering year |\n * | z | Timezone (specific non-locat.) | Z* | Timezone (aliases) |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n *\n * Letters marked by ! are non-standard, but implemented by date-fns:\n * - `o` modifies the previous token to turn it into an ordinal (see `format` docs)\n * - `i` is ISO day of week. For `i` and `ii` is returns numeric ISO week days,\n * i.e. 7 for Sunday, 1 for Monday, etc.\n * - `I` is ISO week of year, as opposed to `w` which is local week of year.\n * - `R` is ISO week-numbering year, as opposed to `Y` which is local week-numbering year.\n * `R` is supposed to be used in conjunction with `I` and `i`\n * for universal ISO week-numbering date, whereas\n * `Y` is supposed to be used in conjunction with `w` and `e`\n * for week-numbering date specific to the locale.\n * - `P` is long localized date format\n * - `p` is long localized time format\n */\n\nvar formatters = {\n // Era\n G: function G(date, token, localize) {\n var era = date.getUTCFullYear() > 0 ? 1 : 0;\n switch (token) {\n // AD, BC\n case 'G':\n case 'GG':\n case 'GGG':\n return localize.era(era, {\n width: 'abbreviated'\n });\n // A, B\n case 'GGGGG':\n return localize.era(era, {\n width: 'narrow'\n });\n // Anno Domini, Before Christ\n case 'GGGG':\n default:\n return localize.era(era, {\n width: 'wide'\n });\n }\n },\n // Year\n y: function y(date, token, localize) {\n // Ordinal number\n if (token === 'yo') {\n var signedYear = date.getUTCFullYear();\n // Returns 1 for 1 BC (which is year 0 in JavaScript)\n var year = signedYear > 0 ? signedYear : 1 - signedYear;\n return localize.ordinalNumber(year, {\n unit: 'year'\n });\n }\n return lightFormatters.y(date, token);\n },\n // Local week-numbering year\n Y: function Y(date, token, localize, options) {\n var signedWeekYear = getUTCWeekYear(date, options);\n // Returns 1 for 1 BC (which is year 0 in JavaScript)\n var weekYear = signedWeekYear > 0 ? signedWeekYear : 1 - signedWeekYear;\n\n // Two digit year\n if (token === 'YY') {\n var twoDigitYear = weekYear % 100;\n return addLeadingZeros(twoDigitYear, 2);\n }\n\n // Ordinal number\n if (token === 'Yo') {\n return localize.ordinalNumber(weekYear, {\n unit: 'year'\n });\n }\n\n // Padding\n return addLeadingZeros(weekYear, token.length);\n },\n // ISO week-numbering year\n R: function R(date, token) {\n var isoWeekYear = getUTCISOWeekYear(date);\n\n // Padding\n return addLeadingZeros(isoWeekYear, token.length);\n },\n // Extended year. This is a single number designating the year of this calendar system.\n // The main difference between `y` and `u` localizers are B.C. years:\n // | Year | `y` | `u` |\n // |------|-----|-----|\n // | AC 1 | 1 | 1 |\n // | BC 1 | 1 | 0 |\n // | BC 2 | 2 | -1 |\n // Also `yy` always returns the last two digits of a year,\n // while `uu` pads single digit years to 2 characters and returns other years unchanged.\n u: function u(date, token) {\n var year = date.getUTCFullYear();\n return addLeadingZeros(year, token.length);\n },\n // Quarter\n Q: function Q(date, token, localize) {\n var quarter = Math.ceil((date.getUTCMonth() + 1) / 3);\n switch (token) {\n // 1, 2, 3, 4\n case 'Q':\n return String(quarter);\n // 01, 02, 03, 04\n case 'QQ':\n return addLeadingZeros(quarter, 2);\n // 1st, 2nd, 3rd, 4th\n case 'Qo':\n return localize.ordinalNumber(quarter, {\n unit: 'quarter'\n });\n // Q1, Q2, Q3, Q4\n case 'QQQ':\n return localize.quarter(quarter, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case 'QQQQQ':\n return localize.quarter(quarter, {\n width: 'narrow',\n context: 'formatting'\n });\n // 1st quarter, 2nd quarter, ...\n case 'QQQQ':\n default:\n return localize.quarter(quarter, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Stand-alone quarter\n q: function q(date, token, localize) {\n var quarter = Math.ceil((date.getUTCMonth() + 1) / 3);\n switch (token) {\n // 1, 2, 3, 4\n case 'q':\n return String(quarter);\n // 01, 02, 03, 04\n case 'qq':\n return addLeadingZeros(quarter, 2);\n // 1st, 2nd, 3rd, 4th\n case 'qo':\n return localize.ordinalNumber(quarter, {\n unit: 'quarter'\n });\n // Q1, Q2, Q3, Q4\n case 'qqq':\n return localize.quarter(quarter, {\n width: 'abbreviated',\n context: 'standalone'\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case 'qqqqq':\n return localize.quarter(quarter, {\n width: 'narrow',\n context: 'standalone'\n });\n // 1st quarter, 2nd quarter, ...\n case 'qqqq':\n default:\n return localize.quarter(quarter, {\n width: 'wide',\n context: 'standalone'\n });\n }\n },\n // Month\n M: function M(date, token, localize) {\n var month = date.getUTCMonth();\n switch (token) {\n case 'M':\n case 'MM':\n return lightFormatters.M(date, token);\n // 1st, 2nd, ..., 12th\n case 'Mo':\n return localize.ordinalNumber(month + 1, {\n unit: 'month'\n });\n // Jan, Feb, ..., Dec\n case 'MMM':\n return localize.month(month, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // J, F, ..., D\n case 'MMMMM':\n return localize.month(month, {\n width: 'narrow',\n context: 'formatting'\n });\n // January, February, ..., December\n case 'MMMM':\n default:\n return localize.month(month, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Stand-alone month\n L: function L(date, token, localize) {\n var month = date.getUTCMonth();\n switch (token) {\n // 1, 2, ..., 12\n case 'L':\n return String(month + 1);\n // 01, 02, ..., 12\n case 'LL':\n return addLeadingZeros(month + 1, 2);\n // 1st, 2nd, ..., 12th\n case 'Lo':\n return localize.ordinalNumber(month + 1, {\n unit: 'month'\n });\n // Jan, Feb, ..., Dec\n case 'LLL':\n return localize.month(month, {\n width: 'abbreviated',\n context: 'standalone'\n });\n // J, F, ..., D\n case 'LLLLL':\n return localize.month(month, {\n width: 'narrow',\n context: 'standalone'\n });\n // January, February, ..., December\n case 'LLLL':\n default:\n return localize.month(month, {\n width: 'wide',\n context: 'standalone'\n });\n }\n },\n // Local week of year\n w: function w(date, token, localize, options) {\n var week = getUTCWeek(date, options);\n if (token === 'wo') {\n return localize.ordinalNumber(week, {\n unit: 'week'\n });\n }\n return addLeadingZeros(week, token.length);\n },\n // ISO week of year\n I: function I(date, token, localize) {\n var isoWeek = getUTCISOWeek(date);\n if (token === 'Io') {\n return localize.ordinalNumber(isoWeek, {\n unit: 'week'\n });\n }\n return addLeadingZeros(isoWeek, token.length);\n },\n // Day of the month\n d: function d(date, token, localize) {\n if (token === 'do') {\n return localize.ordinalNumber(date.getUTCDate(), {\n unit: 'date'\n });\n }\n return lightFormatters.d(date, token);\n },\n // Day of year\n D: function D(date, token, localize) {\n var dayOfYear = getUTCDayOfYear(date);\n if (token === 'Do') {\n return localize.ordinalNumber(dayOfYear, {\n unit: 'dayOfYear'\n });\n }\n return addLeadingZeros(dayOfYear, token.length);\n },\n // Day of week\n E: function E(date, token, localize) {\n var dayOfWeek = date.getUTCDay();\n switch (token) {\n // Tue\n case 'E':\n case 'EE':\n case 'EEE':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // T\n case 'EEEEE':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n case 'EEEEEE':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'formatting'\n });\n // Tuesday\n case 'EEEE':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Local day of week\n e: function e(date, token, localize, options) {\n var dayOfWeek = date.getUTCDay();\n var localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n switch (token) {\n // Numerical value (Nth day of week with current locale or weekStartsOn)\n case 'e':\n return String(localDayOfWeek);\n // Padded numerical value\n case 'ee':\n return addLeadingZeros(localDayOfWeek, 2);\n // 1st, 2nd, ..., 7th\n case 'eo':\n return localize.ordinalNumber(localDayOfWeek, {\n unit: 'day'\n });\n case 'eee':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // T\n case 'eeeee':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n case 'eeeeee':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'formatting'\n });\n // Tuesday\n case 'eeee':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Stand-alone local day of week\n c: function c(date, token, localize, options) {\n var dayOfWeek = date.getUTCDay();\n var localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n switch (token) {\n // Numerical value (same as in `e`)\n case 'c':\n return String(localDayOfWeek);\n // Padded numerical value\n case 'cc':\n return addLeadingZeros(localDayOfWeek, token.length);\n // 1st, 2nd, ..., 7th\n case 'co':\n return localize.ordinalNumber(localDayOfWeek, {\n unit: 'day'\n });\n case 'ccc':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'standalone'\n });\n // T\n case 'ccccc':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'standalone'\n });\n // Tu\n case 'cccccc':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'standalone'\n });\n // Tuesday\n case 'cccc':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'standalone'\n });\n }\n },\n // ISO day of week\n i: function i(date, token, localize) {\n var dayOfWeek = date.getUTCDay();\n var isoDayOfWeek = dayOfWeek === 0 ? 7 : dayOfWeek;\n switch (token) {\n // 2\n case 'i':\n return String(isoDayOfWeek);\n // 02\n case 'ii':\n return addLeadingZeros(isoDayOfWeek, token.length);\n // 2nd\n case 'io':\n return localize.ordinalNumber(isoDayOfWeek, {\n unit: 'day'\n });\n // Tue\n case 'iii':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // T\n case 'iiiii':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n case 'iiiiii':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'formatting'\n });\n // Tuesday\n case 'iiii':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // AM or PM\n a: function a(date, token, localize) {\n var hours = date.getUTCHours();\n var dayPeriodEnumValue = hours / 12 >= 1 ? 'pm' : 'am';\n switch (token) {\n case 'a':\n case 'aa':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n });\n case 'aaa':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n }).toLowerCase();\n case 'aaaaa':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'narrow',\n context: 'formatting'\n });\n case 'aaaa':\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // AM, PM, midnight, noon\n b: function b(date, token, localize) {\n var hours = date.getUTCHours();\n var dayPeriodEnumValue;\n if (hours === 12) {\n dayPeriodEnumValue = dayPeriodEnum.noon;\n } else if (hours === 0) {\n dayPeriodEnumValue = dayPeriodEnum.midnight;\n } else {\n dayPeriodEnumValue = hours / 12 >= 1 ? 'pm' : 'am';\n }\n switch (token) {\n case 'b':\n case 'bb':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n });\n case 'bbb':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n }).toLowerCase();\n case 'bbbbb':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'narrow',\n context: 'formatting'\n });\n case 'bbbb':\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // in the morning, in the afternoon, in the evening, at night\n B: function B(date, token, localize) {\n var hours = date.getUTCHours();\n var dayPeriodEnumValue;\n if (hours >= 17) {\n dayPeriodEnumValue = dayPeriodEnum.evening;\n } else if (hours >= 12) {\n dayPeriodEnumValue = dayPeriodEnum.afternoon;\n } else if (hours >= 4) {\n dayPeriodEnumValue = dayPeriodEnum.morning;\n } else {\n dayPeriodEnumValue = dayPeriodEnum.night;\n }\n switch (token) {\n case 'B':\n case 'BB':\n case 'BBB':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n });\n case 'BBBBB':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'narrow',\n context: 'formatting'\n });\n case 'BBBB':\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Hour [1-12]\n h: function h(date, token, localize) {\n if (token === 'ho') {\n var hours = date.getUTCHours() % 12;\n if (hours === 0) hours = 12;\n return localize.ordinalNumber(hours, {\n unit: 'hour'\n });\n }\n return lightFormatters.h(date, token);\n },\n // Hour [0-23]\n H: function H(date, token, localize) {\n if (token === 'Ho') {\n return localize.ordinalNumber(date.getUTCHours(), {\n unit: 'hour'\n });\n }\n return lightFormatters.H(date, token);\n },\n // Hour [0-11]\n K: function K(date, token, localize) {\n var hours = date.getUTCHours() % 12;\n if (token === 'Ko') {\n return localize.ordinalNumber(hours, {\n unit: 'hour'\n });\n }\n return addLeadingZeros(hours, token.length);\n },\n // Hour [1-24]\n k: function k(date, token, localize) {\n var hours = date.getUTCHours();\n if (hours === 0) hours = 24;\n if (token === 'ko') {\n return localize.ordinalNumber(hours, {\n unit: 'hour'\n });\n }\n return addLeadingZeros(hours, token.length);\n },\n // Minute\n m: function m(date, token, localize) {\n if (token === 'mo') {\n return localize.ordinalNumber(date.getUTCMinutes(), {\n unit: 'minute'\n });\n }\n return lightFormatters.m(date, token);\n },\n // Second\n s: function s(date, token, localize) {\n if (token === 'so') {\n return localize.ordinalNumber(date.getUTCSeconds(), {\n unit: 'second'\n });\n }\n return lightFormatters.s(date, token);\n },\n // Fraction of second\n S: function S(date, token) {\n return lightFormatters.S(date, token);\n },\n // Timezone (ISO-8601. If offset is 0, output is always `'Z'`)\n X: function X(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n if (timezoneOffset === 0) {\n return 'Z';\n }\n switch (token) {\n // Hours and optional minutes\n case 'X':\n return formatTimezoneWithOptionalMinutes(timezoneOffset);\n\n // Hours, minutes and optional seconds without `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `XX`\n case 'XXXX':\n case 'XX':\n // Hours and minutes without `:` delimiter\n return formatTimezone(timezoneOffset);\n\n // Hours, minutes and optional seconds with `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `XXX`\n case 'XXXXX':\n case 'XXX': // Hours and minutes with `:` delimiter\n default:\n return formatTimezone(timezoneOffset, ':');\n }\n },\n // Timezone (ISO-8601. If offset is 0, output is `'+00:00'` or equivalent)\n x: function x(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n switch (token) {\n // Hours and optional minutes\n case 'x':\n return formatTimezoneWithOptionalMinutes(timezoneOffset);\n\n // Hours, minutes and optional seconds without `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `xx`\n case 'xxxx':\n case 'xx':\n // Hours and minutes without `:` delimiter\n return formatTimezone(timezoneOffset);\n\n // Hours, minutes and optional seconds with `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `xxx`\n case 'xxxxx':\n case 'xxx': // Hours and minutes with `:` delimiter\n default:\n return formatTimezone(timezoneOffset, ':');\n }\n },\n // Timezone (GMT)\n O: function O(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n switch (token) {\n // Short\n case 'O':\n case 'OO':\n case 'OOO':\n return 'GMT' + formatTimezoneShort(timezoneOffset, ':');\n // Long\n case 'OOOO':\n default:\n return 'GMT' + formatTimezone(timezoneOffset, ':');\n }\n },\n // Timezone (specific non-location)\n z: function z(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n switch (token) {\n // Short\n case 'z':\n case 'zz':\n case 'zzz':\n return 'GMT' + formatTimezoneShort(timezoneOffset, ':');\n // Long\n case 'zzzz':\n default:\n return 'GMT' + formatTimezone(timezoneOffset, ':');\n }\n },\n // Seconds timestamp\n t: function t(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timestamp = Math.floor(originalDate.getTime() / 1000);\n return addLeadingZeros(timestamp, token.length);\n },\n // Milliseconds timestamp\n T: function T(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timestamp = originalDate.getTime();\n return addLeadingZeros(timestamp, token.length);\n }\n};\nfunction formatTimezoneShort(offset, dirtyDelimiter) {\n var sign = offset > 0 ? '-' : '+';\n var absOffset = Math.abs(offset);\n var hours = Math.floor(absOffset / 60);\n var minutes = absOffset % 60;\n if (minutes === 0) {\n return sign + String(hours);\n }\n var delimiter = dirtyDelimiter || '';\n return sign + String(hours) + delimiter + addLeadingZeros(minutes, 2);\n}\nfunction formatTimezoneWithOptionalMinutes(offset, dirtyDelimiter) {\n if (offset % 60 === 0) {\n var sign = offset > 0 ? '-' : '+';\n return sign + addLeadingZeros(Math.abs(offset) / 60, 2);\n }\n return formatTimezone(offset, dirtyDelimiter);\n}\nfunction formatTimezone(offset, dirtyDelimiter) {\n var delimiter = dirtyDelimiter || '';\n var sign = offset > 0 ? '-' : '+';\n var absOffset = Math.abs(offset);\n var hours = addLeadingZeros(Math.floor(absOffset / 60), 2);\n var minutes = addLeadingZeros(absOffset % 60, 2);\n return sign + hours + delimiter + minutes;\n}\nexport default formatters;","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nvar MILLISECONDS_IN_DAY = 86400000;\nexport default function getUTCDayOfYear(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var timestamp = date.getTime();\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n var startOfYearTimestamp = date.getTime();\n var difference = timestamp - startOfYearTimestamp;\n return Math.floor(difference / MILLISECONDS_IN_DAY) + 1;\n}","var dateLongFormatter = function dateLongFormatter(pattern, formatLong) {\n switch (pattern) {\n case 'P':\n return formatLong.date({\n width: 'short'\n });\n case 'PP':\n return formatLong.date({\n width: 'medium'\n });\n case 'PPP':\n return formatLong.date({\n width: 'long'\n });\n case 'PPPP':\n default:\n return formatLong.date({\n width: 'full'\n });\n }\n};\nvar timeLongFormatter = function timeLongFormatter(pattern, formatLong) {\n switch (pattern) {\n case 'p':\n return formatLong.time({\n width: 'short'\n });\n case 'pp':\n return formatLong.time({\n width: 'medium'\n });\n case 'ppp':\n return formatLong.time({\n width: 'long'\n });\n case 'pppp':\n default:\n return formatLong.time({\n width: 'full'\n });\n }\n};\nvar dateTimeLongFormatter = function dateTimeLongFormatter(pattern, formatLong) {\n var matchResult = pattern.match(/(P+)(p+)?/) || [];\n var datePattern = matchResult[1];\n var timePattern = matchResult[2];\n if (!timePattern) {\n return dateLongFormatter(pattern, formatLong);\n }\n var dateTimeFormat;\n switch (datePattern) {\n case 'P':\n dateTimeFormat = formatLong.dateTime({\n width: 'short'\n });\n break;\n case 'PP':\n dateTimeFormat = formatLong.dateTime({\n width: 'medium'\n });\n break;\n case 'PPP':\n dateTimeFormat = formatLong.dateTime({\n width: 'long'\n });\n break;\n case 'PPPP':\n default:\n dateTimeFormat = formatLong.dateTime({\n width: 'full'\n });\n break;\n }\n return dateTimeFormat.replace('{{date}}', dateLongFormatter(datePattern, formatLong)).replace('{{time}}', timeLongFormatter(timePattern, formatLong));\n};\nvar longFormatters = {\n p: timeLongFormatter,\n P: dateTimeLongFormatter\n};\nexport default longFormatters;","/**\n * Google Chrome as of 67.0.3396.87 introduced timezones with offset that includes seconds.\n * They usually appear for dates that denote time before the timezones were introduced\n * (e.g. for 'Europe/Prague' timezone the offset is GMT+00:57:44 before 1 October 1891\n * and GMT+01:00:00 after that date)\n *\n * Date#getTimezoneOffset returns the offset in minutes and would return 57 for the example above,\n * which would lead to incorrect calculations.\n *\n * This function returns the timezone offset in milliseconds that takes seconds in account.\n */\nexport default function getTimezoneOffsetInMilliseconds(date) {\n var utcDate = new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds()));\n utcDate.setUTCFullYear(date.getFullYear());\n return date.getTime() - utcDate.getTime();\n}","var protectedDayOfYearTokens = ['D', 'DD'];\nvar protectedWeekYearTokens = ['YY', 'YYYY'];\nexport function isProtectedDayOfYearToken(token) {\n return protectedDayOfYearTokens.indexOf(token) !== -1;\n}\nexport function isProtectedWeekYearToken(token) {\n return protectedWeekYearTokens.indexOf(token) !== -1;\n}\nexport function throwProtectedError(token, format, input) {\n if (token === 'YYYY') {\n throw new RangeError(\"Use `yyyy` instead of `YYYY` (in `\".concat(format, \"`) for formatting years to the input `\").concat(input, \"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\"));\n } else if (token === 'YY') {\n throw new RangeError(\"Use `yy` instead of `YY` (in `\".concat(format, \"`) for formatting years to the input `\").concat(input, \"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\"));\n } else if (token === 'D') {\n throw new RangeError(\"Use `d` instead of `D` (in `\".concat(format, \"`) for formatting days of the month to the input `\").concat(input, \"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\"));\n } else if (token === 'DD') {\n throw new RangeError(\"Use `dd` instead of `DD` (in `\".concat(format, \"`) for formatting days of the month to the input `\").concat(input, \"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\"));\n }\n}","var formatDistanceLocale = {\n lessThanXSeconds: {\n one: 'less than a second',\n other: 'less than {{count}} seconds'\n },\n xSeconds: {\n one: '1 second',\n other: '{{count}} seconds'\n },\n halfAMinute: 'half a minute',\n lessThanXMinutes: {\n one: 'less than a minute',\n other: 'less than {{count}} minutes'\n },\n xMinutes: {\n one: '1 minute',\n other: '{{count}} minutes'\n },\n aboutXHours: {\n one: 'about 1 hour',\n other: 'about {{count}} hours'\n },\n xHours: {\n one: '1 hour',\n other: '{{count}} hours'\n },\n xDays: {\n one: '1 day',\n other: '{{count}} days'\n },\n aboutXWeeks: {\n one: 'about 1 week',\n other: 'about {{count}} weeks'\n },\n xWeeks: {\n one: '1 week',\n other: '{{count}} weeks'\n },\n aboutXMonths: {\n one: 'about 1 month',\n other: 'about {{count}} months'\n },\n xMonths: {\n one: '1 month',\n other: '{{count}} months'\n },\n aboutXYears: {\n one: 'about 1 year',\n other: 'about {{count}} years'\n },\n xYears: {\n one: '1 year',\n other: '{{count}} years'\n },\n overXYears: {\n one: 'over 1 year',\n other: 'over {{count}} years'\n },\n almostXYears: {\n one: 'almost 1 year',\n other: 'almost {{count}} years'\n }\n};\nvar formatDistance = function formatDistance(token, count, options) {\n var result;\n var tokenValue = formatDistanceLocale[token];\n if (typeof tokenValue === 'string') {\n result = tokenValue;\n } else if (count === 1) {\n result = tokenValue.one;\n } else {\n result = tokenValue.other.replace('{{count}}', count.toString());\n }\n if (options !== null && options !== void 0 && options.addSuffix) {\n if (options.comparison && options.comparison > 0) {\n return 'in ' + result;\n } else {\n return result + ' ago';\n }\n }\n return result;\n};\nexport default formatDistance;","export default function buildFormatLongFn(args) {\n return function () {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n // TODO: Remove String()\n var width = options.width ? String(options.width) : args.defaultWidth;\n var format = args.formats[width] || args.formats[args.defaultWidth];\n return format;\n };\n}","import buildFormatLongFn from \"../../../_lib/buildFormatLongFn/index.js\";\nvar dateFormats = {\n full: 'EEEE, MMMM do, y',\n long: 'MMMM do, y',\n medium: 'MMM d, y',\n short: 'MM/dd/yyyy'\n};\nvar timeFormats = {\n full: 'h:mm:ss a zzzz',\n long: 'h:mm:ss a z',\n medium: 'h:mm:ss a',\n short: 'h:mm a'\n};\nvar dateTimeFormats = {\n full: \"{{date}} 'at' {{time}}\",\n long: \"{{date}} 'at' {{time}}\",\n medium: '{{date}}, {{time}}',\n short: '{{date}}, {{time}}'\n};\nvar formatLong = {\n date: buildFormatLongFn({\n formats: dateFormats,\n defaultWidth: 'full'\n }),\n time: buildFormatLongFn({\n formats: timeFormats,\n defaultWidth: 'full'\n }),\n dateTime: buildFormatLongFn({\n formats: dateTimeFormats,\n defaultWidth: 'full'\n })\n};\nexport default formatLong;","export default function buildMatchPatternFn(args) {\n return function (string) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var matchResult = string.match(args.matchPattern);\n if (!matchResult) return null;\n var matchedString = matchResult[0];\n var parseResult = string.match(args.parsePattern);\n if (!parseResult) return null;\n var value = args.valueCallback ? args.valueCallback(parseResult[0]) : parseResult[0];\n value = options.valueCallback ? options.valueCallback(value) : value;\n var rest = string.slice(matchedString.length);\n return {\n value: value,\n rest: rest\n };\n };\n}","var formatRelativeLocale = {\n lastWeek: \"'last' eeee 'at' p\",\n yesterday: \"'yesterday at' p\",\n today: \"'today at' p\",\n tomorrow: \"'tomorrow at' p\",\n nextWeek: \"eeee 'at' p\",\n other: 'P'\n};\nvar formatRelative = function formatRelative(token, _date, _baseDate, _options) {\n return formatRelativeLocale[token];\n};\nexport default formatRelative;","export default function buildLocalizeFn(args) {\n return function (dirtyIndex, options) {\n var context = options !== null && options !== void 0 && options.context ? String(options.context) : 'standalone';\n var valuesArray;\n if (context === 'formatting' && args.formattingValues) {\n var defaultWidth = args.defaultFormattingWidth || args.defaultWidth;\n var width = options !== null && options !== void 0 && options.width ? String(options.width) : defaultWidth;\n valuesArray = args.formattingValues[width] || args.formattingValues[defaultWidth];\n } else {\n var _defaultWidth = args.defaultWidth;\n var _width = options !== null && options !== void 0 && options.width ? String(options.width) : args.defaultWidth;\n valuesArray = args.values[_width] || args.values[_defaultWidth];\n }\n var index = args.argumentCallback ? args.argumentCallback(dirtyIndex) : dirtyIndex;\n // @ts-ignore: For some reason TypeScript just don't want to match it, no matter how hard we try. I challenge you to try to remove it!\n return valuesArray[index];\n };\n}","export default function buildMatchFn(args) {\n return function (string) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var width = options.width;\n var matchPattern = width && args.matchPatterns[width] || args.matchPatterns[args.defaultMatchWidth];\n var matchResult = string.match(matchPattern);\n if (!matchResult) {\n return null;\n }\n var matchedString = matchResult[0];\n var parsePatterns = width && args.parsePatterns[width] || args.parsePatterns[args.defaultParseWidth];\n var key = Array.isArray(parsePatterns) ? findIndex(parsePatterns, function (pattern) {\n return pattern.test(matchedString);\n }) : findKey(parsePatterns, function (pattern) {\n return pattern.test(matchedString);\n });\n var value;\n value = args.valueCallback ? args.valueCallback(key) : key;\n value = options.valueCallback ? options.valueCallback(value) : value;\n var rest = string.slice(matchedString.length);\n return {\n value: value,\n rest: rest\n };\n };\n}\nfunction findKey(object, predicate) {\n for (var key in object) {\n if (object.hasOwnProperty(key) && predicate(object[key])) {\n return key;\n }\n }\n return undefined;\n}\nfunction findIndex(array, predicate) {\n for (var key = 0; key < array.length; key++) {\n if (predicate(array[key])) {\n return key;\n }\n }\n return undefined;\n}","import formatDistance from \"./_lib/formatDistance/index.js\";\nimport formatLong from \"./_lib/formatLong/index.js\";\nimport formatRelative from \"./_lib/formatRelative/index.js\";\nimport localize from \"./_lib/localize/index.js\";\nimport match from \"./_lib/match/index.js\";\n/**\n * @type {Locale}\n * @category Locales\n * @summary English locale (United States).\n * @language English\n * @iso-639-2 eng\n * @author Sasha Koss [@kossnocorp]{@link https://github.com/kossnocorp}\n * @author Lesha Koss [@leshakoss]{@link https://github.com/leshakoss}\n */\nvar locale = {\n code: 'en-US',\n formatDistance: formatDistance,\n formatLong: formatLong,\n formatRelative: formatRelative,\n localize: localize,\n match: match,\n options: {\n weekStartsOn: 0 /* Sunday */,\n firstWeekContainsDate: 1\n }\n};\nexport default locale;","import defaultLocale from \"../../locale/en-US/index.js\";\nexport default defaultLocale;","import buildLocalizeFn from \"../../../_lib/buildLocalizeFn/index.js\";\nvar eraValues = {\n narrow: ['B', 'A'],\n abbreviated: ['BC', 'AD'],\n wide: ['Before Christ', 'Anno Domini']\n};\nvar quarterValues = {\n narrow: ['1', '2', '3', '4'],\n abbreviated: ['Q1', 'Q2', 'Q3', 'Q4'],\n wide: ['1st quarter', '2nd quarter', '3rd quarter', '4th quarter']\n};\n\n// Note: in English, the names of days of the week and months are capitalized.\n// If you are making a new locale based on this one, check if the same is true for the language you're working on.\n// Generally, formatted dates should look like they are in the middle of a sentence,\n// e.g. in Spanish language the weekdays and months should be in the lowercase.\nvar monthValues = {\n narrow: ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'],\n abbreviated: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n wide: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']\n};\nvar dayValues = {\n narrow: ['S', 'M', 'T', 'W', 'T', 'F', 'S'],\n short: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'],\n abbreviated: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n wide: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']\n};\nvar dayPeriodValues = {\n narrow: {\n am: 'a',\n pm: 'p',\n midnight: 'mi',\n noon: 'n',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n },\n abbreviated: {\n am: 'AM',\n pm: 'PM',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n },\n wide: {\n am: 'a.m.',\n pm: 'p.m.',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n }\n};\nvar formattingDayPeriodValues = {\n narrow: {\n am: 'a',\n pm: 'p',\n midnight: 'mi',\n noon: 'n',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n },\n abbreviated: {\n am: 'AM',\n pm: 'PM',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n },\n wide: {\n am: 'a.m.',\n pm: 'p.m.',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n }\n};\nvar ordinalNumber = function ordinalNumber(dirtyNumber, _options) {\n var number = Number(dirtyNumber);\n\n // If ordinal numbers depend on context, for example,\n // if they are different for different grammatical genders,\n // use `options.unit`.\n //\n // `unit` can be 'year', 'quarter', 'month', 'week', 'date', 'dayOfYear',\n // 'day', 'hour', 'minute', 'second'.\n\n var rem100 = number % 100;\n if (rem100 > 20 || rem100 < 10) {\n switch (rem100 % 10) {\n case 1:\n return number + 'st';\n case 2:\n return number + 'nd';\n case 3:\n return number + 'rd';\n }\n }\n return number + 'th';\n};\nvar localize = {\n ordinalNumber: ordinalNumber,\n era: buildLocalizeFn({\n values: eraValues,\n defaultWidth: 'wide'\n }),\n quarter: buildLocalizeFn({\n values: quarterValues,\n defaultWidth: 'wide',\n argumentCallback: function argumentCallback(quarter) {\n return quarter - 1;\n }\n }),\n month: buildLocalizeFn({\n values: monthValues,\n defaultWidth: 'wide'\n }),\n day: buildLocalizeFn({\n values: dayValues,\n defaultWidth: 'wide'\n }),\n dayPeriod: buildLocalizeFn({\n values: dayPeriodValues,\n defaultWidth: 'wide',\n formattingValues: formattingDayPeriodValues,\n defaultFormattingWidth: 'wide'\n })\n};\nexport default localize;","import buildMatchFn from \"../../../_lib/buildMatchFn/index.js\";\nimport buildMatchPatternFn from \"../../../_lib/buildMatchPatternFn/index.js\";\nvar matchOrdinalNumberPattern = /^(\\d+)(th|st|nd|rd)?/i;\nvar parseOrdinalNumberPattern = /\\d+/i;\nvar matchEraPatterns = {\n narrow: /^(b|a)/i,\n abbreviated: /^(b\\.?\\s?c\\.?|b\\.?\\s?c\\.?\\s?e\\.?|a\\.?\\s?d\\.?|c\\.?\\s?e\\.?)/i,\n wide: /^(before christ|before common era|anno domini|common era)/i\n};\nvar parseEraPatterns = {\n any: [/^b/i, /^(a|c)/i]\n};\nvar matchQuarterPatterns = {\n narrow: /^[1234]/i,\n abbreviated: /^q[1234]/i,\n wide: /^[1234](th|st|nd|rd)? quarter/i\n};\nvar parseQuarterPatterns = {\n any: [/1/i, /2/i, /3/i, /4/i]\n};\nvar matchMonthPatterns = {\n narrow: /^[jfmasond]/i,\n abbreviated: /^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,\n wide: /^(january|february|march|april|may|june|july|august|september|october|november|december)/i\n};\nvar parseMonthPatterns = {\n narrow: [/^j/i, /^f/i, /^m/i, /^a/i, /^m/i, /^j/i, /^j/i, /^a/i, /^s/i, /^o/i, /^n/i, /^d/i],\n any: [/^ja/i, /^f/i, /^mar/i, /^ap/i, /^may/i, /^jun/i, /^jul/i, /^au/i, /^s/i, /^o/i, /^n/i, /^d/i]\n};\nvar matchDayPatterns = {\n narrow: /^[smtwf]/i,\n short: /^(su|mo|tu|we|th|fr|sa)/i,\n abbreviated: /^(sun|mon|tue|wed|thu|fri|sat)/i,\n wide: /^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i\n};\nvar parseDayPatterns = {\n narrow: [/^s/i, /^m/i, /^t/i, /^w/i, /^t/i, /^f/i, /^s/i],\n any: [/^su/i, /^m/i, /^tu/i, /^w/i, /^th/i, /^f/i, /^sa/i]\n};\nvar matchDayPeriodPatterns = {\n narrow: /^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,\n any: /^([ap]\\.?\\s?m\\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i\n};\nvar parseDayPeriodPatterns = {\n any: {\n am: /^a/i,\n pm: /^p/i,\n midnight: /^mi/i,\n noon: /^no/i,\n morning: /morning/i,\n afternoon: /afternoon/i,\n evening: /evening/i,\n night: /night/i\n }\n};\nvar match = {\n ordinalNumber: buildMatchPatternFn({\n matchPattern: matchOrdinalNumberPattern,\n parsePattern: parseOrdinalNumberPattern,\n valueCallback: function valueCallback(value) {\n return parseInt(value, 10);\n }\n }),\n era: buildMatchFn({\n matchPatterns: matchEraPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseEraPatterns,\n defaultParseWidth: 'any'\n }),\n quarter: buildMatchFn({\n matchPatterns: matchQuarterPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseQuarterPatterns,\n defaultParseWidth: 'any',\n valueCallback: function valueCallback(index) {\n return index + 1;\n }\n }),\n month: buildMatchFn({\n matchPatterns: matchMonthPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseMonthPatterns,\n defaultParseWidth: 'any'\n }),\n day: buildMatchFn({\n matchPatterns: matchDayPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseDayPatterns,\n defaultParseWidth: 'any'\n }),\n dayPeriod: buildMatchFn({\n matchPatterns: matchDayPeriodPatterns,\n defaultMatchWidth: 'any',\n parsePatterns: parseDayPeriodPatterns,\n defaultParseWidth: 'any'\n })\n};\nexport default match;","import isValid from \"../isValid/index.js\";\nimport subMilliseconds from \"../subMilliseconds/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport formatters from \"../_lib/format/formatters/index.js\";\nimport longFormatters from \"../_lib/format/longFormatters/index.js\";\nimport getTimezoneOffsetInMilliseconds from \"../_lib/getTimezoneOffsetInMilliseconds/index.js\";\nimport { isProtectedDayOfYearToken, isProtectedWeekYearToken, throwProtectedError } from \"../_lib/protectedTokens/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { getDefaultOptions } from \"../_lib/defaultOptions/index.js\";\nimport defaultLocale from \"../_lib/defaultLocale/index.js\"; // This RegExp consists of three parts separated by `|`:\n// - [yYQqMLwIdDecihHKkms]o matches any available ordinal number token\n// (one of the certain letters followed by `o`)\n// - (\\w)\\1* matches any sequences of the same letter\n// - '' matches two quote characters in a row\n// - '(''|[^'])+('|$) matches anything surrounded by two quote characters ('),\n// except a single quote symbol, which ends the sequence.\n// Two quote characters do not end the sequence.\n// If there is no matching single quote\n// then the sequence will continue until the end of the string.\n// - . matches any single character unmatched by previous parts of the RegExps\nvar formattingTokensRegExp = /[yYQqMLwIdDecihHKkms]o|(\\w)\\1*|''|'(''|[^'])+('|$)|./g;\n\n// This RegExp catches symbols escaped by quotes, and also\n// sequences of symbols P, p, and the combinations like `PPPPPPPppppp`\nvar longFormattingTokensRegExp = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g;\nvar escapedStringRegExp = /^'([^]*?)'?$/;\nvar doubleQuoteRegExp = /''/g;\nvar unescapedLatinCharacterRegExp = /[a-zA-Z]/;\n\n/**\n * @name format\n * @category Common Helpers\n * @summary Format the date.\n *\n * @description\n * Return the formatted date string in the given format. The result may vary by locale.\n *\n * > ⚠️ Please note that the `format` tokens differ from Moment.js and other libraries.\n * > See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * The characters wrapped between two single quotes characters (') are escaped.\n * Two single quotes in a row, whether inside or outside a quoted sequence, represent a 'real' single quote.\n * (see the last example)\n *\n * Format of the string is based on Unicode Technical Standard #35:\n * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * with a few additions (see note 7 below the table).\n *\n * Accepted patterns:\n * | Unit | Pattern | Result examples | Notes |\n * |---------------------------------|---------|-----------------------------------|-------|\n * | Era | G..GGG | AD, BC | |\n * | | GGGG | Anno Domini, Before Christ | 2 |\n * | | GGGGG | A, B | |\n * | Calendar year | y | 44, 1, 1900, 2017 | 5 |\n * | | yo | 44th, 1st, 0th, 17th | 5,7 |\n * | | yy | 44, 01, 00, 17 | 5 |\n * | | yyy | 044, 001, 1900, 2017 | 5 |\n * | | yyyy | 0044, 0001, 1900, 2017 | 5 |\n * | | yyyyy | ... | 3,5 |\n * | Local week-numbering year | Y | 44, 1, 1900, 2017 | 5 |\n * | | Yo | 44th, 1st, 1900th, 2017th | 5,7 |\n * | | YY | 44, 01, 00, 17 | 5,8 |\n * | | YYY | 044, 001, 1900, 2017 | 5 |\n * | | YYYY | 0044, 0001, 1900, 2017 | 5,8 |\n * | | YYYYY | ... | 3,5 |\n * | ISO week-numbering year | R | -43, 0, 1, 1900, 2017 | 5,7 |\n * | | RR | -43, 00, 01, 1900, 2017 | 5,7 |\n * | | RRR | -043, 000, 001, 1900, 2017 | 5,7 |\n * | | RRRR | -0043, 0000, 0001, 1900, 2017 | 5,7 |\n * | | RRRRR | ... | 3,5,7 |\n * | Extended year | u | -43, 0, 1, 1900, 2017 | 5 |\n * | | uu | -43, 01, 1900, 2017 | 5 |\n * | | uuu | -043, 001, 1900, 2017 | 5 |\n * | | uuuu | -0043, 0001, 1900, 2017 | 5 |\n * | | uuuuu | ... | 3,5 |\n * | Quarter (formatting) | Q | 1, 2, 3, 4 | |\n * | | Qo | 1st, 2nd, 3rd, 4th | 7 |\n * | | QQ | 01, 02, 03, 04 | |\n * | | QQQ | Q1, Q2, Q3, Q4 | |\n * | | QQQQ | 1st quarter, 2nd quarter, ... | 2 |\n * | | QQQQQ | 1, 2, 3, 4 | 4 |\n * | Quarter (stand-alone) | q | 1, 2, 3, 4 | |\n * | | qo | 1st, 2nd, 3rd, 4th | 7 |\n * | | qq | 01, 02, 03, 04 | |\n * | | qqq | Q1, Q2, Q3, Q4 | |\n * | | qqqq | 1st quarter, 2nd quarter, ... | 2 |\n * | | qqqqq | 1, 2, 3, 4 | 4 |\n * | Month (formatting) | M | 1, 2, ..., 12 | |\n * | | Mo | 1st, 2nd, ..., 12th | 7 |\n * | | MM | 01, 02, ..., 12 | |\n * | | MMM | Jan, Feb, ..., Dec | |\n * | | MMMM | January, February, ..., December | 2 |\n * | | MMMMM | J, F, ..., D | |\n * | Month (stand-alone) | L | 1, 2, ..., 12 | |\n * | | Lo | 1st, 2nd, ..., 12th | 7 |\n * | | LL | 01, 02, ..., 12 | |\n * | | LLL | Jan, Feb, ..., Dec | |\n * | | LLLL | January, February, ..., December | 2 |\n * | | LLLLL | J, F, ..., D | |\n * | Local week of year | w | 1, 2, ..., 53 | |\n * | | wo | 1st, 2nd, ..., 53th | 7 |\n * | | ww | 01, 02, ..., 53 | |\n * | ISO week of year | I | 1, 2, ..., 53 | 7 |\n * | | Io | 1st, 2nd, ..., 53th | 7 |\n * | | II | 01, 02, ..., 53 | 7 |\n * | Day of month | d | 1, 2, ..., 31 | |\n * | | do | 1st, 2nd, ..., 31st | 7 |\n * | | dd | 01, 02, ..., 31 | |\n * | Day of year | D | 1, 2, ..., 365, 366 | 9 |\n * | | Do | 1st, 2nd, ..., 365th, 366th | 7 |\n * | | DD | 01, 02, ..., 365, 366 | 9 |\n * | | DDD | 001, 002, ..., 365, 366 | |\n * | | DDDD | ... | 3 |\n * | Day of week (formatting) | E..EEE | Mon, Tue, Wed, ..., Sun | |\n * | | EEEE | Monday, Tuesday, ..., Sunday | 2 |\n * | | EEEEE | M, T, W, T, F, S, S | |\n * | | EEEEEE | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | ISO day of week (formatting) | i | 1, 2, 3, ..., 7 | 7 |\n * | | io | 1st, 2nd, ..., 7th | 7 |\n * | | ii | 01, 02, ..., 07 | 7 |\n * | | iii | Mon, Tue, Wed, ..., Sun | 7 |\n * | | iiii | Monday, Tuesday, ..., Sunday | 2,7 |\n * | | iiiii | M, T, W, T, F, S, S | 7 |\n * | | iiiiii | Mo, Tu, We, Th, Fr, Sa, Su | 7 |\n * | Local day of week (formatting) | e | 2, 3, 4, ..., 1 | |\n * | | eo | 2nd, 3rd, ..., 1st | 7 |\n * | | ee | 02, 03, ..., 01 | |\n * | | eee | Mon, Tue, Wed, ..., Sun | |\n * | | eeee | Monday, Tuesday, ..., Sunday | 2 |\n * | | eeeee | M, T, W, T, F, S, S | |\n * | | eeeeee | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | Local day of week (stand-alone) | c | 2, 3, 4, ..., 1 | |\n * | | co | 2nd, 3rd, ..., 1st | 7 |\n * | | cc | 02, 03, ..., 01 | |\n * | | ccc | Mon, Tue, Wed, ..., Sun | |\n * | | cccc | Monday, Tuesday, ..., Sunday | 2 |\n * | | ccccc | M, T, W, T, F, S, S | |\n * | | cccccc | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | AM, PM | a..aa | AM, PM | |\n * | | aaa | am, pm | |\n * | | aaaa | a.m., p.m. | 2 |\n * | | aaaaa | a, p | |\n * | AM, PM, noon, midnight | b..bb | AM, PM, noon, midnight | |\n * | | bbb | am, pm, noon, midnight | |\n * | | bbbb | a.m., p.m., noon, midnight | 2 |\n * | | bbbbb | a, p, n, mi | |\n * | Flexible day period | B..BBB | at night, in the morning, ... | |\n * | | BBBB | at night, in the morning, ... | 2 |\n * | | BBBBB | at night, in the morning, ... | |\n * | Hour [1-12] | h | 1, 2, ..., 11, 12 | |\n * | | ho | 1st, 2nd, ..., 11th, 12th | 7 |\n * | | hh | 01, 02, ..., 11, 12 | |\n * | Hour [0-23] | H | 0, 1, 2, ..., 23 | |\n * | | Ho | 0th, 1st, 2nd, ..., 23rd | 7 |\n * | | HH | 00, 01, 02, ..., 23 | |\n * | Hour [0-11] | K | 1, 2, ..., 11, 0 | |\n * | | Ko | 1st, 2nd, ..., 11th, 0th | 7 |\n * | | KK | 01, 02, ..., 11, 00 | |\n * | Hour [1-24] | k | 24, 1, 2, ..., 23 | |\n * | | ko | 24th, 1st, 2nd, ..., 23rd | 7 |\n * | | kk | 24, 01, 02, ..., 23 | |\n * | Minute | m | 0, 1, ..., 59 | |\n * | | mo | 0th, 1st, ..., 59th | 7 |\n * | | mm | 00, 01, ..., 59 | |\n * | Second | s | 0, 1, ..., 59 | |\n * | | so | 0th, 1st, ..., 59th | 7 |\n * | | ss | 00, 01, ..., 59 | |\n * | Fraction of second | S | 0, 1, ..., 9 | |\n * | | SS | 00, 01, ..., 99 | |\n * | | SSS | 000, 001, ..., 999 | |\n * | | SSSS | ... | 3 |\n * | Timezone (ISO-8601 w/ Z) | X | -08, +0530, Z | |\n * | | XX | -0800, +0530, Z | |\n * | | XXX | -08:00, +05:30, Z | |\n * | | XXXX | -0800, +0530, Z, +123456 | 2 |\n * | | XXXXX | -08:00, +05:30, Z, +12:34:56 | |\n * | Timezone (ISO-8601 w/o Z) | x | -08, +0530, +00 | |\n * | | xx | -0800, +0530, +0000 | |\n * | | xxx | -08:00, +05:30, +00:00 | 2 |\n * | | xxxx | -0800, +0530, +0000, +123456 | |\n * | | xxxxx | -08:00, +05:30, +00:00, +12:34:56 | |\n * | Timezone (GMT) | O...OOO | GMT-8, GMT+5:30, GMT+0 | |\n * | | OOOO | GMT-08:00, GMT+05:30, GMT+00:00 | 2 |\n * | Timezone (specific non-locat.) | z...zzz | GMT-8, GMT+5:30, GMT+0 | 6 |\n * | | zzzz | GMT-08:00, GMT+05:30, GMT+00:00 | 2,6 |\n * | Seconds timestamp | t | 512969520 | 7 |\n * | | tt | ... | 3,7 |\n * | Milliseconds timestamp | T | 512969520900 | 7 |\n * | | TT | ... | 3,7 |\n * | Long localized date | P | 04/29/1453 | 7 |\n * | | PP | Apr 29, 1453 | 7 |\n * | | PPP | April 29th, 1453 | 7 |\n * | | PPPP | Friday, April 29th, 1453 | 2,7 |\n * | Long localized time | p | 12:00 AM | 7 |\n * | | pp | 12:00:00 AM | 7 |\n * | | ppp | 12:00:00 AM GMT+2 | 7 |\n * | | pppp | 12:00:00 AM GMT+02:00 | 2,7 |\n * | Combination of date and time | Pp | 04/29/1453, 12:00 AM | 7 |\n * | | PPpp | Apr 29, 1453, 12:00:00 AM | 7 |\n * | | PPPppp | April 29th, 1453 at ... | 7 |\n * | | PPPPpppp| Friday, April 29th, 1453 at ... | 2,7 |\n * Notes:\n * 1. \"Formatting\" units (e.g. formatting quarter) in the default en-US locale\n * are the same as \"stand-alone\" units, but are different in some languages.\n * \"Formatting\" units are declined according to the rules of the language\n * in the context of a date. \"Stand-alone\" units are always nominative singular:\n *\n * `format(new Date(2017, 10, 6), 'do LLLL', {locale: cs}) //=> '6. listopad'`\n *\n * `format(new Date(2017, 10, 6), 'do MMMM', {locale: cs}) //=> '6. listopadu'`\n *\n * 2. Any sequence of the identical letters is a pattern, unless it is escaped by\n * the single quote characters (see below).\n * If the sequence is longer than listed in table (e.g. `EEEEEEEEEEE`)\n * the output will be the same as default pattern for this unit, usually\n * the longest one (in case of ISO weekdays, `EEEE`). Default patterns for units\n * are marked with \"2\" in the last column of the table.\n *\n * `format(new Date(2017, 10, 6), 'MMM') //=> 'Nov'`\n *\n * `format(new Date(2017, 10, 6), 'MMMM') //=> 'November'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMM') //=> 'N'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMMM') //=> 'November'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMMMM') //=> 'November'`\n *\n * 3. Some patterns could be unlimited length (such as `yyyyyyyy`).\n * The output will be padded with zeros to match the length of the pattern.\n *\n * `format(new Date(2017, 10, 6), 'yyyyyyyy') //=> '00002017'`\n *\n * 4. `QQQQQ` and `qqqqq` could be not strictly numerical in some locales.\n * These tokens represent the shortest form of the quarter.\n *\n * 5. The main difference between `y` and `u` patterns are B.C. years:\n *\n * | Year | `y` | `u` |\n * |------|-----|-----|\n * | AC 1 | 1 | 1 |\n * | BC 1 | 1 | 0 |\n * | BC 2 | 2 | -1 |\n *\n * Also `yy` always returns the last two digits of a year,\n * while `uu` pads single digit years to 2 characters and returns other years unchanged:\n *\n * | Year | `yy` | `uu` |\n * |------|------|------|\n * | 1 | 01 | 01 |\n * | 14 | 14 | 14 |\n * | 376 | 76 | 376 |\n * | 1453 | 53 | 1453 |\n *\n * The same difference is true for local and ISO week-numbering years (`Y` and `R`),\n * except local week-numbering years are dependent on `options.weekStartsOn`\n * and `options.firstWeekContainsDate` (compare [getISOWeekYear]{@link https://date-fns.org/docs/getISOWeekYear}\n * and [getWeekYear]{@link https://date-fns.org/docs/getWeekYear}).\n *\n * 6. Specific non-location timezones are currently unavailable in `date-fns`,\n * so right now these tokens fall back to GMT timezones.\n *\n * 7. These patterns are not in the Unicode Technical Standard #35:\n * - `i`: ISO day of week\n * - `I`: ISO week of year\n * - `R`: ISO week-numbering year\n * - `t`: seconds timestamp\n * - `T`: milliseconds timestamp\n * - `o`: ordinal number modifier\n * - `P`: long localized date\n * - `p`: long localized time\n *\n * 8. `YY` and `YYYY` tokens represent week-numbering years but they are often confused with years.\n * You should enable `options.useAdditionalWeekYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * 9. `D` and `DD` tokens represent days of the year but they are often confused with days of the month.\n * You should enable `options.useAdditionalDayOfYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * @param {Date|Number} date - the original date\n * @param {String} format - the string of tokens\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {Number} [options.firstWeekContainsDate=1] - the day of January, which is\n * @param {Boolean} [options.useAdditionalWeekYearTokens=false] - if true, allows usage of the week-numbering year tokens `YY` and `YYYY`;\n * see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @param {Boolean} [options.useAdditionalDayOfYearTokens=false] - if true, allows usage of the day of year tokens `D` and `DD`;\n * see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @returns {String} the formatted date string\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `date` must not be Invalid Date\n * @throws {RangeError} `options.locale` must contain `localize` property\n * @throws {RangeError} `options.locale` must contain `formatLong` property\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7\n * @throws {RangeError} use `yyyy` instead of `YYYY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} use `yy` instead of `YY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} use `d` instead of `D` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} use `dd` instead of `DD` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} format string contains an unescaped latin alphabet character\n *\n * @example\n * // Represent 11 February 2014 in middle-endian format:\n * const result = format(new Date(2014, 1, 11), 'MM/dd/yyyy')\n * //=> '02/11/2014'\n *\n * @example\n * // Represent 2 July 2014 in Esperanto:\n * import { eoLocale } from 'date-fns/locale/eo'\n * const result = format(new Date(2014, 6, 2), \"do 'de' MMMM yyyy\", {\n * locale: eoLocale\n * })\n * //=> '2-a de julio 2014'\n *\n * @example\n * // Escape string by single quote characters:\n * const result = format(new Date(2014, 6, 2, 15), \"h 'o''clock'\")\n * //=> \"3 o'clock\"\n */\n\nexport default function format(dirtyDate, dirtyFormatStr, options) {\n var _ref, _options$locale, _ref2, _ref3, _ref4, _options$firstWeekCon, _options$locale2, _options$locale2$opti, _defaultOptions$local, _defaultOptions$local2, _ref5, _ref6, _ref7, _options$weekStartsOn, _options$locale3, _options$locale3$opti, _defaultOptions$local3, _defaultOptions$local4;\n requiredArgs(2, arguments);\n var formatStr = String(dirtyFormatStr);\n var defaultOptions = getDefaultOptions();\n var locale = (_ref = (_options$locale = options === null || options === void 0 ? void 0 : options.locale) !== null && _options$locale !== void 0 ? _options$locale : defaultOptions.locale) !== null && _ref !== void 0 ? _ref : defaultLocale;\n var firstWeekContainsDate = toInteger((_ref2 = (_ref3 = (_ref4 = (_options$firstWeekCon = options === null || options === void 0 ? void 0 : options.firstWeekContainsDate) !== null && _options$firstWeekCon !== void 0 ? _options$firstWeekCon : options === null || options === void 0 ? void 0 : (_options$locale2 = options.locale) === null || _options$locale2 === void 0 ? void 0 : (_options$locale2$opti = _options$locale2.options) === null || _options$locale2$opti === void 0 ? void 0 : _options$locale2$opti.firstWeekContainsDate) !== null && _ref4 !== void 0 ? _ref4 : defaultOptions.firstWeekContainsDate) !== null && _ref3 !== void 0 ? _ref3 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.firstWeekContainsDate) !== null && _ref2 !== void 0 ? _ref2 : 1);\n\n // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively');\n }\n var weekStartsOn = toInteger((_ref5 = (_ref6 = (_ref7 = (_options$weekStartsOn = options === null || options === void 0 ? void 0 : options.weekStartsOn) !== null && _options$weekStartsOn !== void 0 ? _options$weekStartsOn : options === null || options === void 0 ? void 0 : (_options$locale3 = options.locale) === null || _options$locale3 === void 0 ? void 0 : (_options$locale3$opti = _options$locale3.options) === null || _options$locale3$opti === void 0 ? void 0 : _options$locale3$opti.weekStartsOn) !== null && _ref7 !== void 0 ? _ref7 : defaultOptions.weekStartsOn) !== null && _ref6 !== void 0 ? _ref6 : (_defaultOptions$local3 = defaultOptions.locale) === null || _defaultOptions$local3 === void 0 ? void 0 : (_defaultOptions$local4 = _defaultOptions$local3.options) === null || _defaultOptions$local4 === void 0 ? void 0 : _defaultOptions$local4.weekStartsOn) !== null && _ref5 !== void 0 ? _ref5 : 0);\n\n // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n if (!locale.localize) {\n throw new RangeError('locale must contain localize property');\n }\n if (!locale.formatLong) {\n throw new RangeError('locale must contain formatLong property');\n }\n var originalDate = toDate(dirtyDate);\n if (!isValid(originalDate)) {\n throw new RangeError('Invalid time value');\n }\n\n // Convert the date in system timezone to the same date in UTC+00:00 timezone.\n // This ensures that when UTC functions will be implemented, locales will be compatible with them.\n // See an issue about UTC functions: https://github.com/date-fns/date-fns/issues/376\n var timezoneOffset = getTimezoneOffsetInMilliseconds(originalDate);\n var utcDate = subMilliseconds(originalDate, timezoneOffset);\n var formatterOptions = {\n firstWeekContainsDate: firstWeekContainsDate,\n weekStartsOn: weekStartsOn,\n locale: locale,\n _originalDate: originalDate\n };\n var result = formatStr.match(longFormattingTokensRegExp).map(function (substring) {\n var firstCharacter = substring[0];\n if (firstCharacter === 'p' || firstCharacter === 'P') {\n var longFormatter = longFormatters[firstCharacter];\n return longFormatter(substring, locale.formatLong);\n }\n return substring;\n }).join('').match(formattingTokensRegExp).map(function (substring) {\n // Replace two single quote characters with one single quote character\n if (substring === \"''\") {\n return \"'\";\n }\n var firstCharacter = substring[0];\n if (firstCharacter === \"'\") {\n return cleanEscapedString(substring);\n }\n var formatter = formatters[firstCharacter];\n if (formatter) {\n if (!(options !== null && options !== void 0 && options.useAdditionalWeekYearTokens) && isProtectedWeekYearToken(substring)) {\n throwProtectedError(substring, dirtyFormatStr, String(dirtyDate));\n }\n if (!(options !== null && options !== void 0 && options.useAdditionalDayOfYearTokens) && isProtectedDayOfYearToken(substring)) {\n throwProtectedError(substring, dirtyFormatStr, String(dirtyDate));\n }\n return formatter(utcDate, substring, locale.localize, formatterOptions);\n }\n if (firstCharacter.match(unescapedLatinCharacterRegExp)) {\n throw new RangeError('Format string contains an unescaped latin alphabet character `' + firstCharacter + '`');\n }\n return substring;\n }).join('');\n return result;\n}\nfunction cleanEscapedString(input) {\n var matched = input.match(escapedStringRegExp);\n if (!matched) {\n return input;\n }\n return matched[1].replace(doubleQuoteRegExp, \"'\");\n}","export default function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n return arr2;\n}","import unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nexport default function _createForOfIteratorHelper(o, allowArrayLike) {\n var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"];\n if (!it) {\n if (Array.isArray(o) || (it = unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n if (it) o = it;\n var i = 0;\n var F = function F() {};\n return {\n s: F,\n n: function n() {\n if (i >= o.length) return {\n done: true\n };\n return {\n done: false,\n value: o[i++]\n };\n },\n e: function e(_e) {\n throw _e;\n },\n f: F\n };\n }\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }\n var normalCompletion = true,\n didErr = false,\n err;\n return {\n s: function s() {\n it = it.call(o);\n },\n n: function n() {\n var step = it.next();\n normalCompletion = step.done;\n return step;\n },\n e: function e(_e2) {\n didErr = true;\n err = _e2;\n },\n f: function f() {\n try {\n if (!normalCompletion && it[\"return\"] != null) it[\"return\"]();\n } finally {\n if (didErr) throw err;\n }\n }\n };\n}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}","export default function assign(target, object) {\n if (target == null) {\n throw new TypeError('assign requires that input parameter not be null or undefined');\n }\n for (var property in object) {\n if (Object.prototype.hasOwnProperty.call(object, property)) {\n ;\n target[property] = object[property];\n }\n }\n return target;\n}","export default function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n return self;\n}","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n Object.defineProperty(subClass, \"prototype\", {\n writable: false\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}","export default function _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}","import getPrototypeOf from \"./getPrototypeOf.js\";\nimport isNativeReflectConstruct from \"./isNativeReflectConstruct.js\";\nimport possibleConstructorReturn from \"./possibleConstructorReturn.js\";\nexport default function _createSuper(Derived) {\n var hasNativeReflectConstruct = isNativeReflectConstruct();\n return function _createSuperInternal() {\n var Super = getPrototypeOf(Derived),\n result;\n if (hasNativeReflectConstruct) {\n var NewTarget = getPrototypeOf(this).constructor;\n result = Reflect.construct(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n return possibleConstructorReturn(this, result);\n };\n}","export default function _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n try {\n Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}","import _typeof from \"./typeof.js\";\nimport assertThisInitialized from \"./assertThisInitialized.js\";\nexport default function _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n } else if (call !== void 0) {\n throw new TypeError(\"Derived constructors may only return object or undefined\");\n }\n return assertThisInitialized(self);\n}","export default function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}","import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nexport default function _toPropertyKey(arg) {\n var key = toPrimitive(arg, \"string\");\n return _typeof(key) === \"symbol\" ? key : String(key);\n}","import _typeof from \"./typeof.js\";\nexport default function _toPrimitive(input, hint) {\n if (_typeof(input) !== \"object\" || input === null) return input;\n var prim = input[Symbol.toPrimitive];\n if (prim !== undefined) {\n var res = prim.call(input, hint || \"default\");\n if (_typeof(res) !== \"object\") return res;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (hint === \"string\" ? String : Number)(input);\n}","import toPropertyKey from \"./toPropertyKey.js\";\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, toPropertyKey(descriptor.key), descriptor);\n }\n}\nexport default function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\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 _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nvar TIMEZONE_UNIT_PRIORITY = 10;\nexport var Setter = /*#__PURE__*/function () {\n function Setter() {\n _classCallCheck(this, Setter);\n _defineProperty(this, \"priority\", void 0);\n _defineProperty(this, \"subPriority\", 0);\n }\n _createClass(Setter, [{\n key: \"validate\",\n value: function validate(_utcDate, _options) {\n return true;\n }\n }]);\n return Setter;\n}();\nexport var ValueSetter = /*#__PURE__*/function (_Setter) {\n _inherits(ValueSetter, _Setter);\n var _super = _createSuper(ValueSetter);\n function ValueSetter(value, validateValue, setValue, priority, subPriority) {\n var _this;\n _classCallCheck(this, ValueSetter);\n _this = _super.call(this);\n _this.value = value;\n _this.validateValue = validateValue;\n _this.setValue = setValue;\n _this.priority = priority;\n if (subPriority) {\n _this.subPriority = subPriority;\n }\n return _this;\n }\n _createClass(ValueSetter, [{\n key: \"validate\",\n value: function validate(utcDate, options) {\n return this.validateValue(utcDate, this.value, options);\n }\n }, {\n key: \"set\",\n value: function set(utcDate, flags, options) {\n return this.setValue(utcDate, flags, this.value, options);\n }\n }]);\n return ValueSetter;\n}(Setter);\nexport var DateToSystemTimezoneSetter = /*#__PURE__*/function (_Setter2) {\n _inherits(DateToSystemTimezoneSetter, _Setter2);\n var _super2 = _createSuper(DateToSystemTimezoneSetter);\n function DateToSystemTimezoneSetter() {\n var _this2;\n _classCallCheck(this, DateToSystemTimezoneSetter);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this2 = _super2.call.apply(_super2, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this2), \"priority\", TIMEZONE_UNIT_PRIORITY);\n _defineProperty(_assertThisInitialized(_this2), \"subPriority\", -1);\n return _this2;\n }\n _createClass(DateToSystemTimezoneSetter, [{\n key: \"set\",\n value: function set(date, flags) {\n if (flags.timestampIsSet) {\n return date;\n }\n var convertedDate = new Date(0);\n convertedDate.setFullYear(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate());\n convertedDate.setHours(date.getUTCHours(), date.getUTCMinutes(), date.getUTCSeconds(), date.getUTCMilliseconds());\n return convertedDate;\n }\n }]);\n return DateToSystemTimezoneSetter;\n}(Setter);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { ValueSetter } from \"./Setter.js\";\nexport var Parser = /*#__PURE__*/function () {\n function Parser() {\n _classCallCheck(this, Parser);\n _defineProperty(this, \"incompatibleTokens\", void 0);\n _defineProperty(this, \"priority\", void 0);\n _defineProperty(this, \"subPriority\", void 0);\n }\n _createClass(Parser, [{\n key: \"run\",\n value: function run(dateString, token, match, options) {\n var result = this.parse(dateString, token, match, options);\n if (!result) {\n return null;\n }\n return {\n setter: new ValueSetter(result.value, this.validate, this.set, this.priority, this.subPriority),\n rest: result.rest\n };\n }\n }, {\n key: \"validate\",\n value: function validate(_utcDate, _value, _options) {\n return true;\n }\n }]);\n return Parser;\n}();","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nexport var EraParser = /*#__PURE__*/function (_Parser) {\n _inherits(EraParser, _Parser);\n var _super = _createSuper(EraParser);\n function EraParser() {\n var _this;\n _classCallCheck(this, EraParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 140);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['R', 'u', 't', 'T']);\n return _this;\n }\n _createClass(EraParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n // AD, BC\n case 'G':\n case 'GG':\n case 'GGG':\n return match.era(dateString, {\n width: 'abbreviated'\n }) || match.era(dateString, {\n width: 'narrow'\n });\n // A, B\n case 'GGGGG':\n return match.era(dateString, {\n width: 'narrow'\n });\n // Anno Domini, Before Christ\n case 'GGGG':\n default:\n return match.era(dateString, {\n width: 'wide'\n }) || match.era(dateString, {\n width: 'abbreviated'\n }) || match.era(dateString, {\n width: 'narrow'\n });\n }\n }\n }, {\n key: \"set\",\n value: function set(date, flags, value) {\n flags.era = value;\n date.setUTCFullYear(value, 0, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n }]);\n return EraParser;\n}(Parser);","/**\n * Days in 1 week.\n *\n * @name daysInWeek\n * @constant\n * @type {number}\n * @default\n */\nexport var daysInWeek = 7;\n\n/**\n * Days in 1 year\n * One years equals 365.2425 days according to the formula:\n *\n * > Leap year occures every 4 years, except for years that are divisable by 100 and not divisable by 400.\n * > 1 mean year = (365+1/4-1/100+1/400) days = 365.2425 days\n *\n * @name daysInYear\n * @constant\n * @type {number}\n * @default\n */\nexport var daysInYear = 365.2425;\n\n/**\n * Maximum allowed time.\n *\n * @name maxTime\n * @constant\n * @type {number}\n * @default\n */\nexport var maxTime = Math.pow(10, 8) * 24 * 60 * 60 * 1000;\n\n/**\n * Milliseconds in 1 minute\n *\n * @name millisecondsInMinute\n * @constant\n * @type {number}\n * @default\n */\nexport var millisecondsInMinute = 60000;\n\n/**\n * Milliseconds in 1 hour\n *\n * @name millisecondsInHour\n * @constant\n * @type {number}\n * @default\n */\nexport var millisecondsInHour = 3600000;\n\n/**\n * Milliseconds in 1 second\n *\n * @name millisecondsInSecond\n * @constant\n * @type {number}\n * @default\n */\nexport var millisecondsInSecond = 1000;\n\n/**\n * Minimum allowed time.\n *\n * @name minTime\n * @constant\n * @type {number}\n * @default\n */\nexport var minTime = -maxTime;\n\n/**\n * Minutes in 1 hour\n *\n * @name minutesInHour\n * @constant\n * @type {number}\n * @default\n */\nexport var minutesInHour = 60;\n\n/**\n * Months in 1 quarter\n *\n * @name monthsInQuarter\n * @constant\n * @type {number}\n * @default\n */\nexport var monthsInQuarter = 3;\n\n/**\n * Months in 1 year\n *\n * @name monthsInYear\n * @constant\n * @type {number}\n * @default\n */\nexport var monthsInYear = 12;\n\n/**\n * Quarters in 1 year\n *\n * @name quartersInYear\n * @constant\n * @type {number}\n * @default\n */\nexport var quartersInYear = 4;\n\n/**\n * Seconds in 1 hour\n *\n * @name secondsInHour\n * @constant\n * @type {number}\n * @default\n */\nexport var secondsInHour = 3600;\n\n/**\n * Seconds in 1 minute\n *\n * @name secondsInMinute\n * @constant\n * @type {number}\n * @default\n */\nexport var secondsInMinute = 60;\n\n/**\n * Seconds in 1 day\n *\n * @name secondsInDay\n * @constant\n * @type {number}\n * @default\n */\nexport var secondsInDay = secondsInHour * 24;\n\n/**\n * Seconds in 1 week\n *\n * @name secondsInWeek\n * @constant\n * @type {number}\n * @default\n */\nexport var secondsInWeek = secondsInDay * 7;\n\n/**\n * Seconds in 1 year\n *\n * @name secondsInYear\n * @constant\n * @type {number}\n * @default\n */\nexport var secondsInYear = secondsInDay * daysInYear;\n\n/**\n * Seconds in 1 month\n *\n * @name secondsInMonth\n * @constant\n * @type {number}\n * @default\n */\nexport var secondsInMonth = secondsInYear / 12;\n\n/**\n * Seconds in 1 quarter\n *\n * @name secondsInQuarter\n * @constant\n * @type {number}\n * @default\n */\nexport var secondsInQuarter = secondsInMonth * 3;","export var numericPatterns = {\n month: /^(1[0-2]|0?\\d)/,\n // 0 to 12\n date: /^(3[0-1]|[0-2]?\\d)/,\n // 0 to 31\n dayOfYear: /^(36[0-6]|3[0-5]\\d|[0-2]?\\d?\\d)/,\n // 0 to 366\n week: /^(5[0-3]|[0-4]?\\d)/,\n // 0 to 53\n hour23h: /^(2[0-3]|[0-1]?\\d)/,\n // 0 to 23\n hour24h: /^(2[0-4]|[0-1]?\\d)/,\n // 0 to 24\n hour11h: /^(1[0-1]|0?\\d)/,\n // 0 to 11\n hour12h: /^(1[0-2]|0?\\d)/,\n // 0 to 12\n minute: /^[0-5]?\\d/,\n // 0 to 59\n second: /^[0-5]?\\d/,\n // 0 to 59\n\n singleDigit: /^\\d/,\n // 0 to 9\n twoDigits: /^\\d{1,2}/,\n // 0 to 99\n threeDigits: /^\\d{1,3}/,\n // 0 to 999\n fourDigits: /^\\d{1,4}/,\n // 0 to 9999\n\n anyDigitsSigned: /^-?\\d+/,\n singleDigitSigned: /^-?\\d/,\n // 0 to 9, -0 to -9\n twoDigitsSigned: /^-?\\d{1,2}/,\n // 0 to 99, -0 to -99\n threeDigitsSigned: /^-?\\d{1,3}/,\n // 0 to 999, -0 to -999\n fourDigitsSigned: /^-?\\d{1,4}/ // 0 to 9999, -0 to -9999\n};\n\nexport var timezonePatterns = {\n basicOptionalMinutes: /^([+-])(\\d{2})(\\d{2})?|Z/,\n basic: /^([+-])(\\d{2})(\\d{2})|Z/,\n basicOptionalSeconds: /^([+-])(\\d{2})(\\d{2})((\\d{2}))?|Z/,\n extended: /^([+-])(\\d{2}):(\\d{2})|Z/,\n extendedOptionalSeconds: /^([+-])(\\d{2}):(\\d{2})(:(\\d{2}))?|Z/\n};","import { millisecondsInHour, millisecondsInMinute, millisecondsInSecond } from \"../../constants/index.js\";\nimport { numericPatterns } from \"./constants.js\";\nexport function mapValue(parseFnResult, mapFn) {\n if (!parseFnResult) {\n return parseFnResult;\n }\n return {\n value: mapFn(parseFnResult.value),\n rest: parseFnResult.rest\n };\n}\nexport function parseNumericPattern(pattern, dateString) {\n var matchResult = dateString.match(pattern);\n if (!matchResult) {\n return null;\n }\n return {\n value: parseInt(matchResult[0], 10),\n rest: dateString.slice(matchResult[0].length)\n };\n}\nexport function parseTimezonePattern(pattern, dateString) {\n var matchResult = dateString.match(pattern);\n if (!matchResult) {\n return null;\n }\n\n // Input is 'Z'\n if (matchResult[0] === 'Z') {\n return {\n value: 0,\n rest: dateString.slice(1)\n };\n }\n var sign = matchResult[1] === '+' ? 1 : -1;\n var hours = matchResult[2] ? parseInt(matchResult[2], 10) : 0;\n var minutes = matchResult[3] ? parseInt(matchResult[3], 10) : 0;\n var seconds = matchResult[5] ? parseInt(matchResult[5], 10) : 0;\n return {\n value: sign * (hours * millisecondsInHour + minutes * millisecondsInMinute + seconds * millisecondsInSecond),\n rest: dateString.slice(matchResult[0].length)\n };\n}\nexport function parseAnyDigitsSigned(dateString) {\n return parseNumericPattern(numericPatterns.anyDigitsSigned, dateString);\n}\nexport function parseNDigits(n, dateString) {\n switch (n) {\n case 1:\n return parseNumericPattern(numericPatterns.singleDigit, dateString);\n case 2:\n return parseNumericPattern(numericPatterns.twoDigits, dateString);\n case 3:\n return parseNumericPattern(numericPatterns.threeDigits, dateString);\n case 4:\n return parseNumericPattern(numericPatterns.fourDigits, dateString);\n default:\n return parseNumericPattern(new RegExp('^\\\\d{1,' + n + '}'), dateString);\n }\n}\nexport function parseNDigitsSigned(n, dateString) {\n switch (n) {\n case 1:\n return parseNumericPattern(numericPatterns.singleDigitSigned, dateString);\n case 2:\n return parseNumericPattern(numericPatterns.twoDigitsSigned, dateString);\n case 3:\n return parseNumericPattern(numericPatterns.threeDigitsSigned, dateString);\n case 4:\n return parseNumericPattern(numericPatterns.fourDigitsSigned, dateString);\n default:\n return parseNumericPattern(new RegExp('^-?\\\\d{1,' + n + '}'), dateString);\n }\n}\nexport function dayPeriodEnumToHours(dayPeriod) {\n switch (dayPeriod) {\n case 'morning':\n return 4;\n case 'evening':\n return 17;\n case 'pm':\n case 'noon':\n case 'afternoon':\n return 12;\n case 'am':\n case 'midnight':\n case 'night':\n default:\n return 0;\n }\n}\nexport function normalizeTwoDigitYear(twoDigitYear, currentYear) {\n var isCommonEra = currentYear > 0;\n // Absolute number of the current year:\n // 1 -> 1 AC\n // 0 -> 1 BC\n // -1 -> 2 BC\n var absCurrentYear = isCommonEra ? currentYear : 1 - currentYear;\n var result;\n if (absCurrentYear <= 50) {\n result = twoDigitYear || 100;\n } else {\n var rangeEnd = absCurrentYear + 50;\n var rangeEndCentury = Math.floor(rangeEnd / 100) * 100;\n var isPreviousCentury = twoDigitYear >= rangeEnd % 100;\n result = twoDigitYear + rangeEndCentury - (isPreviousCentury ? 100 : 0);\n }\n return isCommonEra ? result : 1 - result;\n}\nexport function isLeapYearIndex(year) {\n return year % 400 === 0 || year % 4 === 0 && year % 100 !== 0;\n}","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { mapValue, normalizeTwoDigitYear, parseNDigits } from \"../utils.js\";\n// From http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_Patterns\n// | Year | y | yy | yyy | yyyy | yyyyy |\n// |----------|-------|----|-------|-------|-------|\n// | AD 1 | 1 | 01 | 001 | 0001 | 00001 |\n// | AD 12 | 12 | 12 | 012 | 0012 | 00012 |\n// | AD 123 | 123 | 23 | 123 | 0123 | 00123 |\n// | AD 1234 | 1234 | 34 | 1234 | 1234 | 01234 |\n// | AD 12345 | 12345 | 45 | 12345 | 12345 | 12345 |\nexport var YearParser = /*#__PURE__*/function (_Parser) {\n _inherits(YearParser, _Parser);\n var _super = _createSuper(YearParser);\n function YearParser() {\n var _this;\n _classCallCheck(this, YearParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 130);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['Y', 'R', 'u', 'w', 'I', 'i', 'e', 'c', 't', 'T']);\n return _this;\n }\n _createClass(YearParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n var valueCallback = function valueCallback(year) {\n return {\n year: year,\n isTwoDigitYear: token === 'yy'\n };\n };\n switch (token) {\n case 'y':\n return mapValue(parseNDigits(4, dateString), valueCallback);\n case 'yo':\n return mapValue(match.ordinalNumber(dateString, {\n unit: 'year'\n }), valueCallback);\n default:\n return mapValue(parseNDigits(token.length, dateString), valueCallback);\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value.isTwoDigitYear || value.year > 0;\n }\n }, {\n key: \"set\",\n value: function set(date, flags, value) {\n var currentYear = date.getUTCFullYear();\n if (value.isTwoDigitYear) {\n var normalizedTwoDigitYear = normalizeTwoDigitYear(value.year, currentYear);\n date.setUTCFullYear(normalizedTwoDigitYear, 0, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n var year = !('era' in flags) || flags.era === 1 ? value.year : 1 - value.year;\n date.setUTCFullYear(year, 0, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n }]);\n return YearParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { parseNDigits, normalizeTwoDigitYear, mapValue } from \"../utils.js\";\nimport getUTCWeekYear from \"../../../_lib/getUTCWeekYear/index.js\";\nimport startOfUTCWeek from \"../../../_lib/startOfUTCWeek/index.js\";\n// Local week-numbering year\nexport var LocalWeekYearParser = /*#__PURE__*/function (_Parser) {\n _inherits(LocalWeekYearParser, _Parser);\n var _super = _createSuper(LocalWeekYearParser);\n function LocalWeekYearParser() {\n var _this;\n _classCallCheck(this, LocalWeekYearParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 130);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['y', 'R', 'u', 'Q', 'q', 'M', 'L', 'I', 'd', 'D', 'i', 't', 'T']);\n return _this;\n }\n _createClass(LocalWeekYearParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n var valueCallback = function valueCallback(year) {\n return {\n year: year,\n isTwoDigitYear: token === 'YY'\n };\n };\n switch (token) {\n case 'Y':\n return mapValue(parseNDigits(4, dateString), valueCallback);\n case 'Yo':\n return mapValue(match.ordinalNumber(dateString, {\n unit: 'year'\n }), valueCallback);\n default:\n return mapValue(parseNDigits(token.length, dateString), valueCallback);\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value.isTwoDigitYear || value.year > 0;\n }\n }, {\n key: \"set\",\n value: function set(date, flags, value, options) {\n var currentYear = getUTCWeekYear(date, options);\n if (value.isTwoDigitYear) {\n var normalizedTwoDigitYear = normalizeTwoDigitYear(value.year, currentYear);\n date.setUTCFullYear(normalizedTwoDigitYear, 0, options.firstWeekContainsDate);\n date.setUTCHours(0, 0, 0, 0);\n return startOfUTCWeek(date, options);\n }\n var year = !('era' in flags) || flags.era === 1 ? value.year : 1 - value.year;\n date.setUTCFullYear(year, 0, options.firstWeekContainsDate);\n date.setUTCHours(0, 0, 0, 0);\n return startOfUTCWeek(date, options);\n }\n }]);\n return LocalWeekYearParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { parseNDigitsSigned } from \"../utils.js\";\nimport startOfUTCISOWeek from \"../../../_lib/startOfUTCISOWeek/index.js\"; // ISO week-numbering year\nexport var ISOWeekYearParser = /*#__PURE__*/function (_Parser) {\n _inherits(ISOWeekYearParser, _Parser);\n var _super = _createSuper(ISOWeekYearParser);\n function ISOWeekYearParser() {\n var _this;\n _classCallCheck(this, ISOWeekYearParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 130);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['G', 'y', 'Y', 'u', 'Q', 'q', 'M', 'L', 'w', 'd', 'D', 'e', 'c', 't', 'T']);\n return _this;\n }\n _createClass(ISOWeekYearParser, [{\n key: \"parse\",\n value: function parse(dateString, token) {\n if (token === 'R') {\n return parseNDigitsSigned(4, dateString);\n }\n return parseNDigitsSigned(token.length, dateString);\n }\n }, {\n key: \"set\",\n value: function set(_date, _flags, value) {\n var firstWeekOfYear = new Date(0);\n firstWeekOfYear.setUTCFullYear(value, 0, 4);\n firstWeekOfYear.setUTCHours(0, 0, 0, 0);\n return startOfUTCISOWeek(firstWeekOfYear);\n }\n }]);\n return ISOWeekYearParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { parseNDigitsSigned } from \"../utils.js\";\nexport var ExtendedYearParser = /*#__PURE__*/function (_Parser) {\n _inherits(ExtendedYearParser, _Parser);\n var _super = _createSuper(ExtendedYearParser);\n function ExtendedYearParser() {\n var _this;\n _classCallCheck(this, ExtendedYearParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 130);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['G', 'y', 'Y', 'R', 'w', 'I', 'i', 'e', 'c', 't', 'T']);\n return _this;\n }\n _createClass(ExtendedYearParser, [{\n key: \"parse\",\n value: function parse(dateString, token) {\n if (token === 'u') {\n return parseNDigitsSigned(4, dateString);\n }\n return parseNDigitsSigned(token.length, dateString);\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date.setUTCFullYear(value, 0, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n }]);\n return ExtendedYearParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { parseNDigits } from \"../utils.js\";\nexport var QuarterParser = /*#__PURE__*/function (_Parser) {\n _inherits(QuarterParser, _Parser);\n var _super = _createSuper(QuarterParser);\n function QuarterParser() {\n var _this;\n _classCallCheck(this, QuarterParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 120);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['Y', 'R', 'q', 'M', 'L', 'w', 'I', 'd', 'D', 'i', 'e', 'c', 't', 'T']);\n return _this;\n }\n _createClass(QuarterParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n // 1, 2, 3, 4\n case 'Q':\n case 'QQ':\n // 01, 02, 03, 04\n return parseNDigits(token.length, dateString);\n // 1st, 2nd, 3rd, 4th\n case 'Qo':\n return match.ordinalNumber(dateString, {\n unit: 'quarter'\n });\n // Q1, Q2, Q3, Q4\n case 'QQQ':\n return match.quarter(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.quarter(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case 'QQQQQ':\n return match.quarter(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n // 1st quarter, 2nd quarter, ...\n case 'QQQQ':\n default:\n return match.quarter(dateString, {\n width: 'wide',\n context: 'formatting'\n }) || match.quarter(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.quarter(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 1 && value <= 4;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date.setUTCMonth((value - 1) * 3, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n }]);\n return QuarterParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { parseNDigits } from \"../utils.js\";\nexport var StandAloneQuarterParser = /*#__PURE__*/function (_Parser) {\n _inherits(StandAloneQuarterParser, _Parser);\n var _super = _createSuper(StandAloneQuarterParser);\n function StandAloneQuarterParser() {\n var _this;\n _classCallCheck(this, StandAloneQuarterParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 120);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['Y', 'R', 'Q', 'M', 'L', 'w', 'I', 'd', 'D', 'i', 'e', 'c', 't', 'T']);\n return _this;\n }\n _createClass(StandAloneQuarterParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n // 1, 2, 3, 4\n case 'q':\n case 'qq':\n // 01, 02, 03, 04\n return parseNDigits(token.length, dateString);\n // 1st, 2nd, 3rd, 4th\n case 'qo':\n return match.ordinalNumber(dateString, {\n unit: 'quarter'\n });\n // Q1, Q2, Q3, Q4\n case 'qqq':\n return match.quarter(dateString, {\n width: 'abbreviated',\n context: 'standalone'\n }) || match.quarter(dateString, {\n width: 'narrow',\n context: 'standalone'\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case 'qqqqq':\n return match.quarter(dateString, {\n width: 'narrow',\n context: 'standalone'\n });\n // 1st quarter, 2nd quarter, ...\n case 'qqqq':\n default:\n return match.quarter(dateString, {\n width: 'wide',\n context: 'standalone'\n }) || match.quarter(dateString, {\n width: 'abbreviated',\n context: 'standalone'\n }) || match.quarter(dateString, {\n width: 'narrow',\n context: 'standalone'\n });\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 1 && value <= 4;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date.setUTCMonth((value - 1) * 3, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n }]);\n return StandAloneQuarterParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { mapValue, parseNDigits, parseNumericPattern } from \"../utils.js\";\nimport { Parser } from \"../Parser.js\";\nimport { numericPatterns } from \"../constants.js\";\nexport var MonthParser = /*#__PURE__*/function (_Parser) {\n _inherits(MonthParser, _Parser);\n var _super = _createSuper(MonthParser);\n function MonthParser() {\n var _this;\n _classCallCheck(this, MonthParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['Y', 'R', 'q', 'Q', 'L', 'w', 'I', 'D', 'i', 'e', 'c', 't', 'T']);\n _defineProperty(_assertThisInitialized(_this), \"priority\", 110);\n return _this;\n }\n _createClass(MonthParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n var valueCallback = function valueCallback(value) {\n return value - 1;\n };\n switch (token) {\n // 1, 2, ..., 12\n case 'M':\n return mapValue(parseNumericPattern(numericPatterns.month, dateString), valueCallback);\n // 01, 02, ..., 12\n case 'MM':\n return mapValue(parseNDigits(2, dateString), valueCallback);\n // 1st, 2nd, ..., 12th\n case 'Mo':\n return mapValue(match.ordinalNumber(dateString, {\n unit: 'month'\n }), valueCallback);\n // Jan, Feb, ..., Dec\n case 'MMM':\n return match.month(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.month(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n // J, F, ..., D\n case 'MMMMM':\n return match.month(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n // January, February, ..., December\n case 'MMMM':\n default:\n return match.month(dateString, {\n width: 'wide',\n context: 'formatting'\n }) || match.month(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.month(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 0 && value <= 11;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date.setUTCMonth(value, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n }]);\n return MonthParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { numericPatterns } from \"../constants.js\";\nimport { parseNumericPattern, parseNDigits, mapValue } from \"../utils.js\";\nexport var StandAloneMonthParser = /*#__PURE__*/function (_Parser) {\n _inherits(StandAloneMonthParser, _Parser);\n var _super = _createSuper(StandAloneMonthParser);\n function StandAloneMonthParser() {\n var _this;\n _classCallCheck(this, StandAloneMonthParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 110);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['Y', 'R', 'q', 'Q', 'M', 'w', 'I', 'D', 'i', 'e', 'c', 't', 'T']);\n return _this;\n }\n _createClass(StandAloneMonthParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n var valueCallback = function valueCallback(value) {\n return value - 1;\n };\n switch (token) {\n // 1, 2, ..., 12\n case 'L':\n return mapValue(parseNumericPattern(numericPatterns.month, dateString), valueCallback);\n // 01, 02, ..., 12\n case 'LL':\n return mapValue(parseNDigits(2, dateString), valueCallback);\n // 1st, 2nd, ..., 12th\n case 'Lo':\n return mapValue(match.ordinalNumber(dateString, {\n unit: 'month'\n }), valueCallback);\n // Jan, Feb, ..., Dec\n case 'LLL':\n return match.month(dateString, {\n width: 'abbreviated',\n context: 'standalone'\n }) || match.month(dateString, {\n width: 'narrow',\n context: 'standalone'\n });\n // J, F, ..., D\n case 'LLLLL':\n return match.month(dateString, {\n width: 'narrow',\n context: 'standalone'\n });\n // January, February, ..., December\n case 'LLLL':\n default:\n return match.month(dateString, {\n width: 'wide',\n context: 'standalone'\n }) || match.month(dateString, {\n width: 'abbreviated',\n context: 'standalone'\n }) || match.month(dateString, {\n width: 'narrow',\n context: 'standalone'\n });\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 0 && value <= 11;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date.setUTCMonth(value, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n }]);\n return StandAloneMonthParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { numericPatterns } from \"../constants.js\";\nimport { parseNumericPattern, parseNDigits } from \"../utils.js\";\nimport setUTCWeek from \"../../../_lib/setUTCWeek/index.js\";\nimport startOfUTCWeek from \"../../../_lib/startOfUTCWeek/index.js\"; // Local week of year\nexport var LocalWeekParser = /*#__PURE__*/function (_Parser) {\n _inherits(LocalWeekParser, _Parser);\n var _super = _createSuper(LocalWeekParser);\n function LocalWeekParser() {\n var _this;\n _classCallCheck(this, LocalWeekParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 100);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['y', 'R', 'u', 'q', 'Q', 'M', 'L', 'I', 'd', 'D', 'i', 't', 'T']);\n return _this;\n }\n _createClass(LocalWeekParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n case 'w':\n return parseNumericPattern(numericPatterns.week, dateString);\n case 'wo':\n return match.ordinalNumber(dateString, {\n unit: 'week'\n });\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 1 && value <= 53;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value, options) {\n return startOfUTCWeek(setUTCWeek(date, value, options), options);\n }\n }]);\n return LocalWeekParser;\n}(Parser);","import toInteger from \"../toInteger/index.js\";\nimport toDate from \"../../toDate/index.js\";\nimport getUTCWeek from \"../getUTCWeek/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nexport default function setUTCWeek(dirtyDate, dirtyWeek, options) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var week = toInteger(dirtyWeek);\n var diff = getUTCWeek(date, options) - week;\n date.setUTCDate(date.getUTCDate() - diff * 7);\n return date;\n}","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { numericPatterns } from \"../constants.js\";\nimport { parseNumericPattern, parseNDigits } from \"../utils.js\";\nimport setUTCISOWeek from \"../../../_lib/setUTCISOWeek/index.js\";\nimport startOfUTCISOWeek from \"../../../_lib/startOfUTCISOWeek/index.js\"; // ISO week of year\nexport var ISOWeekParser = /*#__PURE__*/function (_Parser) {\n _inherits(ISOWeekParser, _Parser);\n var _super = _createSuper(ISOWeekParser);\n function ISOWeekParser() {\n var _this;\n _classCallCheck(this, ISOWeekParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 100);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['y', 'Y', 'u', 'q', 'Q', 'M', 'L', 'w', 'd', 'D', 'e', 'c', 't', 'T']);\n return _this;\n }\n _createClass(ISOWeekParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n case 'I':\n return parseNumericPattern(numericPatterns.week, dateString);\n case 'Io':\n return match.ordinalNumber(dateString, {\n unit: 'week'\n });\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 1 && value <= 53;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n return startOfUTCISOWeek(setUTCISOWeek(date, value));\n }\n }]);\n return ISOWeekParser;\n}(Parser);","import toInteger from \"../toInteger/index.js\";\nimport toDate from \"../../toDate/index.js\";\nimport getUTCISOWeek from \"../getUTCISOWeek/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nexport default function setUTCISOWeek(dirtyDate, dirtyISOWeek) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var isoWeek = toInteger(dirtyISOWeek);\n var diff = getUTCISOWeek(date) - isoWeek;\n date.setUTCDate(date.getUTCDate() - diff * 7);\n return date;\n}","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { isLeapYearIndex, parseNDigits, parseNumericPattern } from \"../utils.js\";\nimport { Parser } from \"../Parser.js\";\nimport { numericPatterns } from \"../constants.js\";\nvar DAYS_IN_MONTH = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\nvar DAYS_IN_MONTH_LEAP_YEAR = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\n\n// Day of the month\nexport var DateParser = /*#__PURE__*/function (_Parser) {\n _inherits(DateParser, _Parser);\n var _super = _createSuper(DateParser);\n function DateParser() {\n var _this;\n _classCallCheck(this, DateParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 90);\n _defineProperty(_assertThisInitialized(_this), \"subPriority\", 1);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['Y', 'R', 'q', 'Q', 'w', 'I', 'D', 'i', 'e', 'c', 't', 'T']);\n return _this;\n }\n _createClass(DateParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n case 'd':\n return parseNumericPattern(numericPatterns.date, dateString);\n case 'do':\n return match.ordinalNumber(dateString, {\n unit: 'date'\n });\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n }, {\n key: \"validate\",\n value: function validate(date, value) {\n var year = date.getUTCFullYear();\n var isLeapYear = isLeapYearIndex(year);\n var month = date.getUTCMonth();\n if (isLeapYear) {\n return value >= 1 && value <= DAYS_IN_MONTH_LEAP_YEAR[month];\n } else {\n return value >= 1 && value <= DAYS_IN_MONTH[month];\n }\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date.setUTCDate(value);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n }]);\n return DateParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { numericPatterns } from \"../constants.js\";\nimport { parseNumericPattern, parseNDigits, isLeapYearIndex } from \"../utils.js\";\nexport var DayOfYearParser = /*#__PURE__*/function (_Parser) {\n _inherits(DayOfYearParser, _Parser);\n var _super = _createSuper(DayOfYearParser);\n function DayOfYearParser() {\n var _this;\n _classCallCheck(this, DayOfYearParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 90);\n _defineProperty(_assertThisInitialized(_this), \"subpriority\", 1);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['Y', 'R', 'q', 'Q', 'M', 'L', 'w', 'I', 'd', 'E', 'i', 'e', 'c', 't', 'T']);\n return _this;\n }\n _createClass(DayOfYearParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n case 'D':\n case 'DD':\n return parseNumericPattern(numericPatterns.dayOfYear, dateString);\n case 'Do':\n return match.ordinalNumber(dateString, {\n unit: 'date'\n });\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n }, {\n key: \"validate\",\n value: function validate(date, value) {\n var year = date.getUTCFullYear();\n var isLeapYear = isLeapYearIndex(year);\n if (isLeapYear) {\n return value >= 1 && value <= 366;\n } else {\n return value >= 1 && value <= 365;\n }\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date.setUTCMonth(0, value);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n }]);\n return DayOfYearParser;\n}(Parser);","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport toInteger from \"../toInteger/index.js\";\nimport { getDefaultOptions } from \"../defaultOptions/index.js\";\nexport default function setUTCDay(dirtyDate, dirtyDay, options) {\n var _ref, _ref2, _ref3, _options$weekStartsOn, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n requiredArgs(2, arguments);\n var defaultOptions = getDefaultOptions();\n var weekStartsOn = toInteger((_ref = (_ref2 = (_ref3 = (_options$weekStartsOn = options === null || options === void 0 ? void 0 : options.weekStartsOn) !== null && _options$weekStartsOn !== void 0 ? _options$weekStartsOn : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.weekStartsOn) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.weekStartsOn) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.weekStartsOn) !== null && _ref !== void 0 ? _ref : 0);\n\n // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n var date = toDate(dirtyDate);\n var day = toInteger(dirtyDay);\n var currentDay = date.getUTCDay();\n var remainder = day % 7;\n var dayIndex = (remainder + 7) % 7;\n var diff = (dayIndex < weekStartsOn ? 7 : 0) + day - currentDay;\n date.setUTCDate(date.getUTCDate() + diff);\n return date;\n}","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport setUTCDay from \"../../../_lib/setUTCDay/index.js\"; // Day of week\nexport var DayParser = /*#__PURE__*/function (_Parser) {\n _inherits(DayParser, _Parser);\n var _super = _createSuper(DayParser);\n function DayParser() {\n var _this;\n _classCallCheck(this, DayParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 90);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['D', 'i', 'e', 'c', 't', 'T']);\n return _this;\n }\n _createClass(DayParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n // Tue\n case 'E':\n case 'EE':\n case 'EEE':\n return match.day(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'short',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n // T\n case 'EEEEE':\n return match.day(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n case 'EEEEEE':\n return match.day(dateString, {\n width: 'short',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tuesday\n case 'EEEE':\n default:\n return match.day(dateString, {\n width: 'wide',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'short',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 0 && value <= 6;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value, options) {\n date = setUTCDay(date, value, options);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n }]);\n return DayParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { mapValue, parseNDigits } from \"../utils.js\";\nimport setUTCDay from \"../../../_lib/setUTCDay/index.js\"; // Local day of week\nexport var LocalDayParser = /*#__PURE__*/function (_Parser) {\n _inherits(LocalDayParser, _Parser);\n var _super = _createSuper(LocalDayParser);\n function LocalDayParser() {\n var _this;\n _classCallCheck(this, LocalDayParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 90);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['y', 'R', 'u', 'q', 'Q', 'M', 'L', 'I', 'd', 'D', 'E', 'i', 'c', 't', 'T']);\n return _this;\n }\n _createClass(LocalDayParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match, options) {\n var valueCallback = function valueCallback(value) {\n var wholeWeekDays = Math.floor((value - 1) / 7) * 7;\n return (value + options.weekStartsOn + 6) % 7 + wholeWeekDays;\n };\n switch (token) {\n // 3\n case 'e':\n case 'ee':\n // 03\n return mapValue(parseNDigits(token.length, dateString), valueCallback);\n // 3rd\n case 'eo':\n return mapValue(match.ordinalNumber(dateString, {\n unit: 'day'\n }), valueCallback);\n // Tue\n case 'eee':\n return match.day(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'short',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n // T\n case 'eeeee':\n return match.day(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n case 'eeeeee':\n return match.day(dateString, {\n width: 'short',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tuesday\n case 'eeee':\n default:\n return match.day(dateString, {\n width: 'wide',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'short',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 0 && value <= 6;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value, options) {\n date = setUTCDay(date, value, options);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n }]);\n return LocalDayParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { mapValue, parseNDigits } from \"../utils.js\";\nimport setUTCDay from \"../../../_lib/setUTCDay/index.js\"; // Stand-alone local day of week\nexport var StandAloneLocalDayParser = /*#__PURE__*/function (_Parser) {\n _inherits(StandAloneLocalDayParser, _Parser);\n var _super = _createSuper(StandAloneLocalDayParser);\n function StandAloneLocalDayParser() {\n var _this;\n _classCallCheck(this, StandAloneLocalDayParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 90);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['y', 'R', 'u', 'q', 'Q', 'M', 'L', 'I', 'd', 'D', 'E', 'i', 'e', 't', 'T']);\n return _this;\n }\n _createClass(StandAloneLocalDayParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match, options) {\n var valueCallback = function valueCallback(value) {\n var wholeWeekDays = Math.floor((value - 1) / 7) * 7;\n return (value + options.weekStartsOn + 6) % 7 + wholeWeekDays;\n };\n switch (token) {\n // 3\n case 'c':\n case 'cc':\n // 03\n return mapValue(parseNDigits(token.length, dateString), valueCallback);\n // 3rd\n case 'co':\n return mapValue(match.ordinalNumber(dateString, {\n unit: 'day'\n }), valueCallback);\n // Tue\n case 'ccc':\n return match.day(dateString, {\n width: 'abbreviated',\n context: 'standalone'\n }) || match.day(dateString, {\n width: 'short',\n context: 'standalone'\n }) || match.day(dateString, {\n width: 'narrow',\n context: 'standalone'\n });\n // T\n case 'ccccc':\n return match.day(dateString, {\n width: 'narrow',\n context: 'standalone'\n });\n // Tu\n case 'cccccc':\n return match.day(dateString, {\n width: 'short',\n context: 'standalone'\n }) || match.day(dateString, {\n width: 'narrow',\n context: 'standalone'\n });\n // Tuesday\n case 'cccc':\n default:\n return match.day(dateString, {\n width: 'wide',\n context: 'standalone'\n }) || match.day(dateString, {\n width: 'abbreviated',\n context: 'standalone'\n }) || match.day(dateString, {\n width: 'short',\n context: 'standalone'\n }) || match.day(dateString, {\n width: 'narrow',\n context: 'standalone'\n });\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 0 && value <= 6;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value, options) {\n date = setUTCDay(date, value, options);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n }]);\n return StandAloneLocalDayParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { mapValue, parseNDigits } from \"../utils.js\";\nimport setUTCISODay from \"../../../_lib/setUTCISODay/index.js\"; // ISO day of week\nexport var ISODayParser = /*#__PURE__*/function (_Parser) {\n _inherits(ISODayParser, _Parser);\n var _super = _createSuper(ISODayParser);\n function ISODayParser() {\n var _this;\n _classCallCheck(this, ISODayParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 90);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['y', 'Y', 'u', 'q', 'Q', 'M', 'L', 'w', 'd', 'D', 'E', 'e', 'c', 't', 'T']);\n return _this;\n }\n _createClass(ISODayParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n var valueCallback = function valueCallback(value) {\n if (value === 0) {\n return 7;\n }\n return value;\n };\n switch (token) {\n // 2\n case 'i':\n case 'ii':\n // 02\n return parseNDigits(token.length, dateString);\n // 2nd\n case 'io':\n return match.ordinalNumber(dateString, {\n unit: 'day'\n });\n // Tue\n case 'iii':\n return mapValue(match.day(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'short',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'narrow',\n context: 'formatting'\n }), valueCallback);\n // T\n case 'iiiii':\n return mapValue(match.day(dateString, {\n width: 'narrow',\n context: 'formatting'\n }), valueCallback);\n // Tu\n case 'iiiiii':\n return mapValue(match.day(dateString, {\n width: 'short',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'narrow',\n context: 'formatting'\n }), valueCallback);\n // Tuesday\n case 'iiii':\n default:\n return mapValue(match.day(dateString, {\n width: 'wide',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'short',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'narrow',\n context: 'formatting'\n }), valueCallback);\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 1 && value <= 7;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date = setUTCISODay(date, value);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n }]);\n return ISODayParser;\n}(Parser);","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport toInteger from \"../toInteger/index.js\";\nexport default function setUTCISODay(dirtyDate, dirtyDay) {\n requiredArgs(2, arguments);\n var day = toInteger(dirtyDay);\n if (day % 7 === 0) {\n day = day - 7;\n }\n var weekStartsOn = 1;\n var date = toDate(dirtyDate);\n var currentDay = date.getUTCDay();\n var remainder = day % 7;\n var dayIndex = (remainder + 7) % 7;\n var diff = (dayIndex < weekStartsOn ? 7 : 0) + day - currentDay;\n date.setUTCDate(date.getUTCDate() + diff);\n return date;\n}","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { dayPeriodEnumToHours } from \"../utils.js\";\nexport var AMPMParser = /*#__PURE__*/function (_Parser) {\n _inherits(AMPMParser, _Parser);\n var _super = _createSuper(AMPMParser);\n function AMPMParser() {\n var _this;\n _classCallCheck(this, AMPMParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 80);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['b', 'B', 'H', 'k', 't', 'T']);\n return _this;\n }\n _createClass(AMPMParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n case 'a':\n case 'aa':\n case 'aaa':\n return match.dayPeriod(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.dayPeriod(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n case 'aaaaa':\n return match.dayPeriod(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n case 'aaaa':\n default:\n return match.dayPeriod(dateString, {\n width: 'wide',\n context: 'formatting'\n }) || match.dayPeriod(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.dayPeriod(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n }\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date.setUTCHours(dayPeriodEnumToHours(value), 0, 0, 0);\n return date;\n }\n }]);\n return AMPMParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { dayPeriodEnumToHours } from \"../utils.js\";\nexport var AMPMMidnightParser = /*#__PURE__*/function (_Parser) {\n _inherits(AMPMMidnightParser, _Parser);\n var _super = _createSuper(AMPMMidnightParser);\n function AMPMMidnightParser() {\n var _this;\n _classCallCheck(this, AMPMMidnightParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 80);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['a', 'B', 'H', 'k', 't', 'T']);\n return _this;\n }\n _createClass(AMPMMidnightParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n case 'b':\n case 'bb':\n case 'bbb':\n return match.dayPeriod(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.dayPeriod(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n case 'bbbbb':\n return match.dayPeriod(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n case 'bbbb':\n default:\n return match.dayPeriod(dateString, {\n width: 'wide',\n context: 'formatting'\n }) || match.dayPeriod(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.dayPeriod(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n }\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date.setUTCHours(dayPeriodEnumToHours(value), 0, 0, 0);\n return date;\n }\n }]);\n return AMPMMidnightParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { dayPeriodEnumToHours } from \"../utils.js\"; // in the morning, in the afternoon, in the evening, at night\nexport var DayPeriodParser = /*#__PURE__*/function (_Parser) {\n _inherits(DayPeriodParser, _Parser);\n var _super = _createSuper(DayPeriodParser);\n function DayPeriodParser() {\n var _this;\n _classCallCheck(this, DayPeriodParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 80);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['a', 'b', 't', 'T']);\n return _this;\n }\n _createClass(DayPeriodParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n case 'B':\n case 'BB':\n case 'BBB':\n return match.dayPeriod(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.dayPeriod(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n case 'BBBBB':\n return match.dayPeriod(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n case 'BBBB':\n default:\n return match.dayPeriod(dateString, {\n width: 'wide',\n context: 'formatting'\n }) || match.dayPeriod(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.dayPeriod(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n }\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date.setUTCHours(dayPeriodEnumToHours(value), 0, 0, 0);\n return date;\n }\n }]);\n return DayPeriodParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { numericPatterns } from \"../constants.js\";\nimport { parseNumericPattern, parseNDigits } from \"../utils.js\";\nexport var Hour1to12Parser = /*#__PURE__*/function (_Parser) {\n _inherits(Hour1to12Parser, _Parser);\n var _super = _createSuper(Hour1to12Parser);\n function Hour1to12Parser() {\n var _this;\n _classCallCheck(this, Hour1to12Parser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 70);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['H', 'K', 'k', 't', 'T']);\n return _this;\n }\n _createClass(Hour1to12Parser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n case 'h':\n return parseNumericPattern(numericPatterns.hour12h, dateString);\n case 'ho':\n return match.ordinalNumber(dateString, {\n unit: 'hour'\n });\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 1 && value <= 12;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n var isPM = date.getUTCHours() >= 12;\n if (isPM && value < 12) {\n date.setUTCHours(value + 12, 0, 0, 0);\n } else if (!isPM && value === 12) {\n date.setUTCHours(0, 0, 0, 0);\n } else {\n date.setUTCHours(value, 0, 0, 0);\n }\n return date;\n }\n }]);\n return Hour1to12Parser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { numericPatterns } from \"../constants.js\";\nimport { parseNumericPattern, parseNDigits } from \"../utils.js\";\nexport var Hour0to23Parser = /*#__PURE__*/function (_Parser) {\n _inherits(Hour0to23Parser, _Parser);\n var _super = _createSuper(Hour0to23Parser);\n function Hour0to23Parser() {\n var _this;\n _classCallCheck(this, Hour0to23Parser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 70);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['a', 'b', 'h', 'K', 'k', 't', 'T']);\n return _this;\n }\n _createClass(Hour0to23Parser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n case 'H':\n return parseNumericPattern(numericPatterns.hour23h, dateString);\n case 'Ho':\n return match.ordinalNumber(dateString, {\n unit: 'hour'\n });\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 0 && value <= 23;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date.setUTCHours(value, 0, 0, 0);\n return date;\n }\n }]);\n return Hour0to23Parser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { numericPatterns } from \"../constants.js\";\nimport { parseNumericPattern, parseNDigits } from \"../utils.js\";\nexport var Hour0To11Parser = /*#__PURE__*/function (_Parser) {\n _inherits(Hour0To11Parser, _Parser);\n var _super = _createSuper(Hour0To11Parser);\n function Hour0To11Parser() {\n var _this;\n _classCallCheck(this, Hour0To11Parser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 70);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['h', 'H', 'k', 't', 'T']);\n return _this;\n }\n _createClass(Hour0To11Parser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n case 'K':\n return parseNumericPattern(numericPatterns.hour11h, dateString);\n case 'Ko':\n return match.ordinalNumber(dateString, {\n unit: 'hour'\n });\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 0 && value <= 11;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n var isPM = date.getUTCHours() >= 12;\n if (isPM && value < 12) {\n date.setUTCHours(value + 12, 0, 0, 0);\n } else {\n date.setUTCHours(value, 0, 0, 0);\n }\n return date;\n }\n }]);\n return Hour0To11Parser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { numericPatterns } from \"../constants.js\";\nimport { parseNumericPattern, parseNDigits } from \"../utils.js\";\nexport var Hour1To24Parser = /*#__PURE__*/function (_Parser) {\n _inherits(Hour1To24Parser, _Parser);\n var _super = _createSuper(Hour1To24Parser);\n function Hour1To24Parser() {\n var _this;\n _classCallCheck(this, Hour1To24Parser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 70);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['a', 'b', 'h', 'H', 'K', 't', 'T']);\n return _this;\n }\n _createClass(Hour1To24Parser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n case 'k':\n return parseNumericPattern(numericPatterns.hour24h, dateString);\n case 'ko':\n return match.ordinalNumber(dateString, {\n unit: 'hour'\n });\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 1 && value <= 24;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n var hours = value <= 24 ? value % 24 : value;\n date.setUTCHours(hours, 0, 0, 0);\n return date;\n }\n }]);\n return Hour1To24Parser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { numericPatterns } from \"../constants.js\";\nimport { parseNumericPattern, parseNDigits } from \"../utils.js\";\nexport var MinuteParser = /*#__PURE__*/function (_Parser) {\n _inherits(MinuteParser, _Parser);\n var _super = _createSuper(MinuteParser);\n function MinuteParser() {\n var _this;\n _classCallCheck(this, MinuteParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 60);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['t', 'T']);\n return _this;\n }\n _createClass(MinuteParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n case 'm':\n return parseNumericPattern(numericPatterns.minute, dateString);\n case 'mo':\n return match.ordinalNumber(dateString, {\n unit: 'minute'\n });\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 0 && value <= 59;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date.setUTCMinutes(value, 0, 0);\n return date;\n }\n }]);\n return MinuteParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { numericPatterns } from \"../constants.js\";\nimport { parseNumericPattern, parseNDigits } from \"../utils.js\";\nexport var SecondParser = /*#__PURE__*/function (_Parser) {\n _inherits(SecondParser, _Parser);\n var _super = _createSuper(SecondParser);\n function SecondParser() {\n var _this;\n _classCallCheck(this, SecondParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 50);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['t', 'T']);\n return _this;\n }\n _createClass(SecondParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n case 's':\n return parseNumericPattern(numericPatterns.second, dateString);\n case 'so':\n return match.ordinalNumber(dateString, {\n unit: 'second'\n });\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 0 && value <= 59;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date.setUTCSeconds(value, 0);\n return date;\n }\n }]);\n return SecondParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { mapValue, parseNDigits } from \"../utils.js\";\nexport var FractionOfSecondParser = /*#__PURE__*/function (_Parser) {\n _inherits(FractionOfSecondParser, _Parser);\n var _super = _createSuper(FractionOfSecondParser);\n function FractionOfSecondParser() {\n var _this;\n _classCallCheck(this, FractionOfSecondParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 30);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['t', 'T']);\n return _this;\n }\n _createClass(FractionOfSecondParser, [{\n key: \"parse\",\n value: function parse(dateString, token) {\n var valueCallback = function valueCallback(value) {\n return Math.floor(value * Math.pow(10, -token.length + 3));\n };\n return mapValue(parseNDigits(token.length, dateString), valueCallback);\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date.setUTCMilliseconds(value);\n return date;\n }\n }]);\n return FractionOfSecondParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { timezonePatterns } from \"../constants.js\";\nimport { parseTimezonePattern } from \"../utils.js\"; // Timezone (ISO-8601. +00:00 is `'Z'`)\nexport var ISOTimezoneWithZParser = /*#__PURE__*/function (_Parser) {\n _inherits(ISOTimezoneWithZParser, _Parser);\n var _super = _createSuper(ISOTimezoneWithZParser);\n function ISOTimezoneWithZParser() {\n var _this;\n _classCallCheck(this, ISOTimezoneWithZParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 10);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['t', 'T', 'x']);\n return _this;\n }\n _createClass(ISOTimezoneWithZParser, [{\n key: \"parse\",\n value: function parse(dateString, token) {\n switch (token) {\n case 'X':\n return parseTimezonePattern(timezonePatterns.basicOptionalMinutes, dateString);\n case 'XX':\n return parseTimezonePattern(timezonePatterns.basic, dateString);\n case 'XXXX':\n return parseTimezonePattern(timezonePatterns.basicOptionalSeconds, dateString);\n case 'XXXXX':\n return parseTimezonePattern(timezonePatterns.extendedOptionalSeconds, dateString);\n case 'XXX':\n default:\n return parseTimezonePattern(timezonePatterns.extended, dateString);\n }\n }\n }, {\n key: \"set\",\n value: function set(date, flags, value) {\n if (flags.timestampIsSet) {\n return date;\n }\n return new Date(date.getTime() - value);\n }\n }]);\n return ISOTimezoneWithZParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { timezonePatterns } from \"../constants.js\";\nimport { parseTimezonePattern } from \"../utils.js\"; // Timezone (ISO-8601)\nexport var ISOTimezoneParser = /*#__PURE__*/function (_Parser) {\n _inherits(ISOTimezoneParser, _Parser);\n var _super = _createSuper(ISOTimezoneParser);\n function ISOTimezoneParser() {\n var _this;\n _classCallCheck(this, ISOTimezoneParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 10);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['t', 'T', 'X']);\n return _this;\n }\n _createClass(ISOTimezoneParser, [{\n key: \"parse\",\n value: function parse(dateString, token) {\n switch (token) {\n case 'x':\n return parseTimezonePattern(timezonePatterns.basicOptionalMinutes, dateString);\n case 'xx':\n return parseTimezonePattern(timezonePatterns.basic, dateString);\n case 'xxxx':\n return parseTimezonePattern(timezonePatterns.basicOptionalSeconds, dateString);\n case 'xxxxx':\n return parseTimezonePattern(timezonePatterns.extendedOptionalSeconds, dateString);\n case 'xxx':\n default:\n return parseTimezonePattern(timezonePatterns.extended, dateString);\n }\n }\n }, {\n key: \"set\",\n value: function set(date, flags, value) {\n if (flags.timestampIsSet) {\n return date;\n }\n return new Date(date.getTime() - value);\n }\n }]);\n return ISOTimezoneParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { parseAnyDigitsSigned } from \"../utils.js\";\nexport var TimestampSecondsParser = /*#__PURE__*/function (_Parser) {\n _inherits(TimestampSecondsParser, _Parser);\n var _super = _createSuper(TimestampSecondsParser);\n function TimestampSecondsParser() {\n var _this;\n _classCallCheck(this, TimestampSecondsParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 40);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", '*');\n return _this;\n }\n _createClass(TimestampSecondsParser, [{\n key: \"parse\",\n value: function parse(dateString) {\n return parseAnyDigitsSigned(dateString);\n }\n }, {\n key: \"set\",\n value: function set(_date, _flags, value) {\n return [new Date(value * 1000), {\n timestampIsSet: true\n }];\n }\n }]);\n return TimestampSecondsParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { parseAnyDigitsSigned } from \"../utils.js\";\nexport var TimestampMillisecondsParser = /*#__PURE__*/function (_Parser) {\n _inherits(TimestampMillisecondsParser, _Parser);\n var _super = _createSuper(TimestampMillisecondsParser);\n function TimestampMillisecondsParser() {\n var _this;\n _classCallCheck(this, TimestampMillisecondsParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 20);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", '*');\n return _this;\n }\n _createClass(TimestampMillisecondsParser, [{\n key: \"parse\",\n value: function parse(dateString) {\n return parseAnyDigitsSigned(dateString);\n }\n }, {\n key: \"set\",\n value: function set(_date, _flags, value) {\n return [new Date(value), {\n timestampIsSet: true\n }];\n }\n }]);\n return TimestampMillisecondsParser;\n}(Parser);","import { EraParser } from \"./EraParser.js\";\nimport { YearParser } from \"./YearParser.js\";\nimport { LocalWeekYearParser } from \"./LocalWeekYearParser.js\";\nimport { ISOWeekYearParser } from \"./ISOWeekYearParser.js\";\nimport { ExtendedYearParser } from \"./ExtendedYearParser.js\";\nimport { QuarterParser } from \"./QuarterParser.js\";\nimport { StandAloneQuarterParser } from \"./StandAloneQuarterParser.js\";\nimport { MonthParser } from \"./MonthParser.js\";\nimport { StandAloneMonthParser } from \"./StandAloneMonthParser.js\";\nimport { LocalWeekParser } from \"./LocalWeekParser.js\";\nimport { ISOWeekParser } from \"./ISOWeekParser.js\";\nimport { DateParser } from \"./DateParser.js\";\nimport { DayOfYearParser } from \"./DayOfYearParser.js\";\nimport { DayParser } from \"./DayParser.js\";\nimport { LocalDayParser } from \"./LocalDayParser.js\";\nimport { StandAloneLocalDayParser } from \"./StandAloneLocalDayParser.js\";\nimport { ISODayParser } from \"./ISODayParser.js\";\nimport { AMPMParser } from \"./AMPMParser.js\";\nimport { AMPMMidnightParser } from \"./AMPMMidnightParser.js\";\nimport { DayPeriodParser } from \"./DayPeriodParser.js\";\nimport { Hour1to12Parser } from \"./Hour1to12Parser.js\";\nimport { Hour0to23Parser } from \"./Hour0to23Parser.js\";\nimport { Hour0To11Parser } from \"./Hour0To11Parser.js\";\nimport { Hour1To24Parser } from \"./Hour1To24Parser.js\";\nimport { MinuteParser } from \"./MinuteParser.js\";\nimport { SecondParser } from \"./SecondParser.js\";\nimport { FractionOfSecondParser } from \"./FractionOfSecondParser.js\";\nimport { ISOTimezoneWithZParser } from \"./ISOTimezoneWithZParser.js\";\nimport { ISOTimezoneParser } from \"./ISOTimezoneParser.js\";\nimport { TimestampSecondsParser } from \"./TimestampSecondsParser.js\";\nimport { TimestampMillisecondsParser } from \"./TimestampMillisecondsParser.js\";\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | Milliseconds in day |\n * | b | AM, PM, noon, midnight | B | Flexible day period |\n * | c | Stand-alone local day of week | C* | Localized hour w/ day period |\n * | d | Day of month | D | Day of year |\n * | e | Local day of week | E | Day of week |\n * | f | | F* | Day of week in month |\n * | g* | Modified Julian day | G | Era |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | i! | ISO day of week | I! | ISO week of year |\n * | j* | Localized hour w/ day period | J* | Localized hour w/o day period |\n * | k | Hour [1-24] | K | Hour [0-11] |\n * | l* | (deprecated) | L | Stand-alone month |\n * | m | Minute | M | Month |\n * | n | | N | |\n * | o! | Ordinal number modifier | O* | Timezone (GMT) |\n * | p | | P | |\n * | q | Stand-alone quarter | Q | Quarter |\n * | r* | Related Gregorian year | R! | ISO week-numbering year |\n * | s | Second | S | Fraction of second |\n * | t! | Seconds timestamp | T! | Milliseconds timestamp |\n * | u | Extended year | U* | Cyclic year |\n * | v* | Timezone (generic non-locat.) | V* | Timezone (location) |\n * | w | Local week of year | W* | Week of month |\n * | x | Timezone (ISO-8601 w/o Z) | X | Timezone (ISO-8601) |\n * | y | Year (abs) | Y | Local week-numbering year |\n * | z* | Timezone (specific non-locat.) | Z* | Timezone (aliases) |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n *\n * Letters marked by ! are non-standard, but implemented by date-fns:\n * - `o` modifies the previous token to turn it into an ordinal (see `parse` docs)\n * - `i` is ISO day of week. For `i` and `ii` is returns numeric ISO week days,\n * i.e. 7 for Sunday, 1 for Monday, etc.\n * - `I` is ISO week of year, as opposed to `w` which is local week of year.\n * - `R` is ISO week-numbering year, as opposed to `Y` which is local week-numbering year.\n * `R` is supposed to be used in conjunction with `I` and `i`\n * for universal ISO week-numbering date, whereas\n * `Y` is supposed to be used in conjunction with `w` and `e`\n * for week-numbering date specific to the locale.\n */\nexport var parsers = {\n G: new EraParser(),\n y: new YearParser(),\n Y: new LocalWeekYearParser(),\n R: new ISOWeekYearParser(),\n u: new ExtendedYearParser(),\n Q: new QuarterParser(),\n q: new StandAloneQuarterParser(),\n M: new MonthParser(),\n L: new StandAloneMonthParser(),\n w: new LocalWeekParser(),\n I: new ISOWeekParser(),\n d: new DateParser(),\n D: new DayOfYearParser(),\n E: new DayParser(),\n e: new LocalDayParser(),\n c: new StandAloneLocalDayParser(),\n i: new ISODayParser(),\n a: new AMPMParser(),\n b: new AMPMMidnightParser(),\n B: new DayPeriodParser(),\n h: new Hour1to12Parser(),\n H: new Hour0to23Parser(),\n K: new Hour0To11Parser(),\n k: new Hour1To24Parser(),\n m: new MinuteParser(),\n s: new SecondParser(),\n S: new FractionOfSecondParser(),\n X: new ISOTimezoneWithZParser(),\n x: new ISOTimezoneParser(),\n t: new TimestampSecondsParser(),\n T: new TimestampMillisecondsParser()\n};","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport _createForOfIteratorHelper from \"@babel/runtime/helpers/esm/createForOfIteratorHelper\";\nimport defaultLocale from \"../_lib/defaultLocale/index.js\";\nimport subMilliseconds from \"../subMilliseconds/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport assign from \"../_lib/assign/index.js\";\nimport longFormatters from \"../_lib/format/longFormatters/index.js\";\nimport getTimezoneOffsetInMilliseconds from \"../_lib/getTimezoneOffsetInMilliseconds/index.js\";\nimport { isProtectedDayOfYearToken, isProtectedWeekYearToken, throwProtectedError } from \"../_lib/protectedTokens/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { DateToSystemTimezoneSetter } from \"./_lib/Setter.js\";\nimport { parsers } from \"./_lib/parsers/index.js\";\nimport { getDefaultOptions } from \"../_lib/defaultOptions/index.js\"; // This RegExp consists of three parts separated by `|`:\n// - [yYQqMLwIdDecihHKkms]o matches any available ordinal number token\n// (one of the certain letters followed by `o`)\n// - (\\w)\\1* matches any sequences of the same letter\n// - '' matches two quote characters in a row\n// - '(''|[^'])+('|$) matches anything surrounded by two quote characters ('),\n// except a single quote symbol, which ends the sequence.\n// Two quote characters do not end the sequence.\n// If there is no matching single quote\n// then the sequence will continue until the end of the string.\n// - . matches any single character unmatched by previous parts of the RegExps\nvar formattingTokensRegExp = /[yYQqMLwIdDecihHKkms]o|(\\w)\\1*|''|'(''|[^'])+('|$)|./g;\n\n// This RegExp catches symbols escaped by quotes, and also\n// sequences of symbols P, p, and the combinations like `PPPPPPPppppp`\nvar longFormattingTokensRegExp = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g;\nvar escapedStringRegExp = /^'([^]*?)'?$/;\nvar doubleQuoteRegExp = /''/g;\nvar notWhitespaceRegExp = /\\S/;\nvar unescapedLatinCharacterRegExp = /[a-zA-Z]/;\n\n/**\n * @name parse\n * @category Common Helpers\n * @summary Parse the date.\n *\n * @description\n * Return the date parsed from string using the given format string.\n *\n * > ⚠️ Please note that the `format` tokens differ from Moment.js and other libraries.\n * > See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * The characters in the format string wrapped between two single quotes characters (') are escaped.\n * Two single quotes in a row, whether inside or outside a quoted sequence, represent a 'real' single quote.\n *\n * Format of the format string is based on Unicode Technical Standard #35:\n * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * with a few additions (see note 5 below the table).\n *\n * Not all tokens are compatible. Combinations that don't make sense or could lead to bugs are prohibited\n * and will throw `RangeError`. For example usage of 24-hour format token with AM/PM token will throw an exception:\n *\n * ```javascript\n * parse('23 AM', 'HH a', new Date())\n * //=> RangeError: The format string mustn't contain `HH` and `a` at the same time\n * ```\n *\n * See the compatibility table: https://docs.google.com/spreadsheets/d/e/2PACX-1vQOPU3xUhplll6dyoMmVUXHKl_8CRDs6_ueLmex3SoqwhuolkuN3O05l4rqx5h1dKX8eb46Ul-CCSrq/pubhtml?gid=0&single=true\n *\n * Accepted format string patterns:\n * | Unit |Prior| Pattern | Result examples | Notes |\n * |---------------------------------|-----|---------|-----------------------------------|-------|\n * | Era | 140 | G..GGG | AD, BC | |\n * | | | GGGG | Anno Domini, Before Christ | 2 |\n * | | | GGGGG | A, B | |\n * | Calendar year | 130 | y | 44, 1, 1900, 2017, 9999 | 4 |\n * | | | yo | 44th, 1st, 1900th, 9999999th | 4,5 |\n * | | | yy | 44, 01, 00, 17 | 4 |\n * | | | yyy | 044, 001, 123, 999 | 4 |\n * | | | yyyy | 0044, 0001, 1900, 2017 | 4 |\n * | | | yyyyy | ... | 2,4 |\n * | Local week-numbering year | 130 | Y | 44, 1, 1900, 2017, 9000 | 4 |\n * | | | Yo | 44th, 1st, 1900th, 9999999th | 4,5 |\n * | | | YY | 44, 01, 00, 17 | 4,6 |\n * | | | YYY | 044, 001, 123, 999 | 4 |\n * | | | YYYY | 0044, 0001, 1900, 2017 | 4,6 |\n * | | | YYYYY | ... | 2,4 |\n * | ISO week-numbering year | 130 | R | -43, 1, 1900, 2017, 9999, -9999 | 4,5 |\n * | | | RR | -43, 01, 00, 17 | 4,5 |\n * | | | RRR | -043, 001, 123, 999, -999 | 4,5 |\n * | | | RRRR | -0043, 0001, 2017, 9999, -9999 | 4,5 |\n * | | | RRRRR | ... | 2,4,5 |\n * | Extended year | 130 | u | -43, 1, 1900, 2017, 9999, -999 | 4 |\n * | | | uu | -43, 01, 99, -99 | 4 |\n * | | | uuu | -043, 001, 123, 999, -999 | 4 |\n * | | | uuuu | -0043, 0001, 2017, 9999, -9999 | 4 |\n * | | | uuuuu | ... | 2,4 |\n * | Quarter (formatting) | 120 | Q | 1, 2, 3, 4 | |\n * | | | Qo | 1st, 2nd, 3rd, 4th | 5 |\n * | | | QQ | 01, 02, 03, 04 | |\n * | | | QQQ | Q1, Q2, Q3, Q4 | |\n * | | | QQQQ | 1st quarter, 2nd quarter, ... | 2 |\n * | | | QQQQQ | 1, 2, 3, 4 | 4 |\n * | Quarter (stand-alone) | 120 | q | 1, 2, 3, 4 | |\n * | | | qo | 1st, 2nd, 3rd, 4th | 5 |\n * | | | qq | 01, 02, 03, 04 | |\n * | | | qqq | Q1, Q2, Q3, Q4 | |\n * | | | qqqq | 1st quarter, 2nd quarter, ... | 2 |\n * | | | qqqqq | 1, 2, 3, 4 | 3 |\n * | Month (formatting) | 110 | M | 1, 2, ..., 12 | |\n * | | | Mo | 1st, 2nd, ..., 12th | 5 |\n * | | | MM | 01, 02, ..., 12 | |\n * | | | MMM | Jan, Feb, ..., Dec | |\n * | | | MMMM | January, February, ..., December | 2 |\n * | | | MMMMM | J, F, ..., D | |\n * | Month (stand-alone) | 110 | L | 1, 2, ..., 12 | |\n * | | | Lo | 1st, 2nd, ..., 12th | 5 |\n * | | | LL | 01, 02, ..., 12 | |\n * | | | LLL | Jan, Feb, ..., Dec | |\n * | | | LLLL | January, February, ..., December | 2 |\n * | | | LLLLL | J, F, ..., D | |\n * | Local week of year | 100 | w | 1, 2, ..., 53 | |\n * | | | wo | 1st, 2nd, ..., 53th | 5 |\n * | | | ww | 01, 02, ..., 53 | |\n * | ISO week of year | 100 | I | 1, 2, ..., 53 | 5 |\n * | | | Io | 1st, 2nd, ..., 53th | 5 |\n * | | | II | 01, 02, ..., 53 | 5 |\n * | Day of month | 90 | d | 1, 2, ..., 31 | |\n * | | | do | 1st, 2nd, ..., 31st | 5 |\n * | | | dd | 01, 02, ..., 31 | |\n * | Day of year | 90 | D | 1, 2, ..., 365, 366 | 7 |\n * | | | Do | 1st, 2nd, ..., 365th, 366th | 5 |\n * | | | DD | 01, 02, ..., 365, 366 | 7 |\n * | | | DDD | 001, 002, ..., 365, 366 | |\n * | | | DDDD | ... | 2 |\n * | Day of week (formatting) | 90 | E..EEE | Mon, Tue, Wed, ..., Sun | |\n * | | | EEEE | Monday, Tuesday, ..., Sunday | 2 |\n * | | | EEEEE | M, T, W, T, F, S, S | |\n * | | | EEEEEE | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | ISO day of week (formatting) | 90 | i | 1, 2, 3, ..., 7 | 5 |\n * | | | io | 1st, 2nd, ..., 7th | 5 |\n * | | | ii | 01, 02, ..., 07 | 5 |\n * | | | iii | Mon, Tue, Wed, ..., Sun | 5 |\n * | | | iiii | Monday, Tuesday, ..., Sunday | 2,5 |\n * | | | iiiii | M, T, W, T, F, S, S | 5 |\n * | | | iiiiii | Mo, Tu, We, Th, Fr, Sa, Su | 5 |\n * | Local day of week (formatting) | 90 | e | 2, 3, 4, ..., 1 | |\n * | | | eo | 2nd, 3rd, ..., 1st | 5 |\n * | | | ee | 02, 03, ..., 01 | |\n * | | | eee | Mon, Tue, Wed, ..., Sun | |\n * | | | eeee | Monday, Tuesday, ..., Sunday | 2 |\n * | | | eeeee | M, T, W, T, F, S, S | |\n * | | | eeeeee | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | Local day of week (stand-alone) | 90 | c | 2, 3, 4, ..., 1 | |\n * | | | co | 2nd, 3rd, ..., 1st | 5 |\n * | | | cc | 02, 03, ..., 01 | |\n * | | | ccc | Mon, Tue, Wed, ..., Sun | |\n * | | | cccc | Monday, Tuesday, ..., Sunday | 2 |\n * | | | ccccc | M, T, W, T, F, S, S | |\n * | | | cccccc | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | AM, PM | 80 | a..aaa | AM, PM | |\n * | | | aaaa | a.m., p.m. | 2 |\n * | | | aaaaa | a, p | |\n * | AM, PM, noon, midnight | 80 | b..bbb | AM, PM, noon, midnight | |\n * | | | bbbb | a.m., p.m., noon, midnight | 2 |\n * | | | bbbbb | a, p, n, mi | |\n * | Flexible day period | 80 | B..BBB | at night, in the morning, ... | |\n * | | | BBBB | at night, in the morning, ... | 2 |\n * | | | BBBBB | at night, in the morning, ... | |\n * | Hour [1-12] | 70 | h | 1, 2, ..., 11, 12 | |\n * | | | ho | 1st, 2nd, ..., 11th, 12th | 5 |\n * | | | hh | 01, 02, ..., 11, 12 | |\n * | Hour [0-23] | 70 | H | 0, 1, 2, ..., 23 | |\n * | | | Ho | 0th, 1st, 2nd, ..., 23rd | 5 |\n * | | | HH | 00, 01, 02, ..., 23 | |\n * | Hour [0-11] | 70 | K | 1, 2, ..., 11, 0 | |\n * | | | Ko | 1st, 2nd, ..., 11th, 0th | 5 |\n * | | | KK | 01, 02, ..., 11, 00 | |\n * | Hour [1-24] | 70 | k | 24, 1, 2, ..., 23 | |\n * | | | ko | 24th, 1st, 2nd, ..., 23rd | 5 |\n * | | | kk | 24, 01, 02, ..., 23 | |\n * | Minute | 60 | m | 0, 1, ..., 59 | |\n * | | | mo | 0th, 1st, ..., 59th | 5 |\n * | | | mm | 00, 01, ..., 59 | |\n * | Second | 50 | s | 0, 1, ..., 59 | |\n * | | | so | 0th, 1st, ..., 59th | 5 |\n * | | | ss | 00, 01, ..., 59 | |\n * | Seconds timestamp | 40 | t | 512969520 | |\n * | | | tt | ... | 2 |\n * | Fraction of second | 30 | S | 0, 1, ..., 9 | |\n * | | | SS | 00, 01, ..., 99 | |\n * | | | SSS | 000, 001, ..., 999 | |\n * | | | SSSS | ... | 2 |\n * | Milliseconds timestamp | 20 | T | 512969520900 | |\n * | | | TT | ... | 2 |\n * | Timezone (ISO-8601 w/ Z) | 10 | X | -08, +0530, Z | |\n * | | | XX | -0800, +0530, Z | |\n * | | | XXX | -08:00, +05:30, Z | |\n * | | | XXXX | -0800, +0530, Z, +123456 | 2 |\n * | | | XXXXX | -08:00, +05:30, Z, +12:34:56 | |\n * | Timezone (ISO-8601 w/o Z) | 10 | x | -08, +0530, +00 | |\n * | | | xx | -0800, +0530, +0000 | |\n * | | | xxx | -08:00, +05:30, +00:00 | 2 |\n * | | | xxxx | -0800, +0530, +0000, +123456 | |\n * | | | xxxxx | -08:00, +05:30, +00:00, +12:34:56 | |\n * | Long localized date | NA | P | 05/29/1453 | 5,8 |\n * | | | PP | May 29, 1453 | |\n * | | | PPP | May 29th, 1453 | |\n * | | | PPPP | Sunday, May 29th, 1453 | 2,5,8 |\n * | Long localized time | NA | p | 12:00 AM | 5,8 |\n * | | | pp | 12:00:00 AM | |\n * | Combination of date and time | NA | Pp | 05/29/1453, 12:00 AM | |\n * | | | PPpp | May 29, 1453, 12:00:00 AM | |\n * | | | PPPpp | May 29th, 1453 at ... | |\n * | | | PPPPpp | Sunday, May 29th, 1453 at ... | 2,5,8 |\n * Notes:\n * 1. \"Formatting\" units (e.g. formatting quarter) in the default en-US locale\n * are the same as \"stand-alone\" units, but are different in some languages.\n * \"Formatting\" units are declined according to the rules of the language\n * in the context of a date. \"Stand-alone\" units are always nominative singular.\n * In `format` function, they will produce different result:\n *\n * `format(new Date(2017, 10, 6), 'do LLLL', {locale: cs}) //=> '6. listopad'`\n *\n * `format(new Date(2017, 10, 6), 'do MMMM', {locale: cs}) //=> '6. listopadu'`\n *\n * `parse` will try to match both formatting and stand-alone units interchangably.\n *\n * 2. Any sequence of the identical letters is a pattern, unless it is escaped by\n * the single quote characters (see below).\n * If the sequence is longer than listed in table:\n * - for numerical units (`yyyyyyyy`) `parse` will try to match a number\n * as wide as the sequence\n * - for text units (`MMMMMMMM`) `parse` will try to match the widest variation of the unit.\n * These variations are marked with \"2\" in the last column of the table.\n *\n * 3. `QQQQQ` and `qqqqq` could be not strictly numerical in some locales.\n * These tokens represent the shortest form of the quarter.\n *\n * 4. The main difference between `y` and `u` patterns are B.C. years:\n *\n * | Year | `y` | `u` |\n * |------|-----|-----|\n * | AC 1 | 1 | 1 |\n * | BC 1 | 1 | 0 |\n * | BC 2 | 2 | -1 |\n *\n * Also `yy` will try to guess the century of two digit year by proximity with `referenceDate`:\n *\n * `parse('50', 'yy', new Date(2018, 0, 1)) //=> Sat Jan 01 2050 00:00:00`\n *\n * `parse('75', 'yy', new Date(2018, 0, 1)) //=> Wed Jan 01 1975 00:00:00`\n *\n * while `uu` will just assign the year as is:\n *\n * `parse('50', 'uu', new Date(2018, 0, 1)) //=> Sat Jan 01 0050 00:00:00`\n *\n * `parse('75', 'uu', new Date(2018, 0, 1)) //=> Tue Jan 01 0075 00:00:00`\n *\n * The same difference is true for local and ISO week-numbering years (`Y` and `R`),\n * except local week-numbering years are dependent on `options.weekStartsOn`\n * and `options.firstWeekContainsDate` (compare [setISOWeekYear]{@link https://date-fns.org/docs/setISOWeekYear}\n * and [setWeekYear]{@link https://date-fns.org/docs/setWeekYear}).\n *\n * 5. These patterns are not in the Unicode Technical Standard #35:\n * - `i`: ISO day of week\n * - `I`: ISO week of year\n * - `R`: ISO week-numbering year\n * - `o`: ordinal number modifier\n * - `P`: long localized date\n * - `p`: long localized time\n *\n * 6. `YY` and `YYYY` tokens represent week-numbering years but they are often confused with years.\n * You should enable `options.useAdditionalWeekYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * 7. `D` and `DD` tokens represent days of the year but they are ofthen confused with days of the month.\n * You should enable `options.useAdditionalDayOfYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * 8. `P+` tokens do not have a defined priority since they are merely aliases to other tokens based\n * on the given locale.\n *\n * using `en-US` locale: `P` => `MM/dd/yyyy`\n * using `en-US` locale: `p` => `hh:mm a`\n * using `pt-BR` locale: `P` => `dd/MM/yyyy`\n * using `pt-BR` locale: `p` => `HH:mm`\n *\n * Values will be assigned to the date in the descending order of its unit's priority.\n * Units of an equal priority overwrite each other in the order of appearance.\n *\n * If no values of higher priority are parsed (e.g. when parsing string 'January 1st' without a year),\n * the values will be taken from 3rd argument `referenceDate` which works as a context of parsing.\n *\n * `referenceDate` must be passed for correct work of the function.\n * If you're not sure which `referenceDate` to supply, create a new instance of Date:\n * `parse('02/11/2014', 'MM/dd/yyyy', new Date())`\n * In this case parsing will be done in the context of the current date.\n * If `referenceDate` is `Invalid Date` or a value not convertible to valid `Date`,\n * then `Invalid Date` will be returned.\n *\n * The result may vary by locale.\n *\n * If `formatString` matches with `dateString` but does not provides tokens, `referenceDate` will be returned.\n *\n * If parsing failed, `Invalid Date` will be returned.\n * Invalid Date is a Date, whose time value is NaN.\n * Time value of Date: http://es5.github.io/#x15.9.1.1\n *\n * @param {String} dateString - the string to parse\n * @param {String} formatString - the string of tokens\n * @param {Date|Number} referenceDate - defines values missing from the parsed dateString\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {1|2|3|4|5|6|7} [options.firstWeekContainsDate=1] - the day of January, which is always in the first week of the year\n * @param {Boolean} [options.useAdditionalWeekYearTokens=false] - if true, allows usage of the week-numbering year tokens `YY` and `YYYY`;\n * see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @param {Boolean} [options.useAdditionalDayOfYearTokens=false] - if true, allows usage of the day of year tokens `D` and `DD`;\n * see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @returns {Date} the parsed date\n * @throws {TypeError} 3 arguments required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7\n * @throws {RangeError} `options.locale` must contain `match` property\n * @throws {RangeError} use `yyyy` instead of `YYYY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} use `yy` instead of `YY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} use `d` instead of `D` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} use `dd` instead of `DD` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} format string contains an unescaped latin alphabet character\n *\n * @example\n * // Parse 11 February 2014 from middle-endian format:\n * var result = parse('02/11/2014', 'MM/dd/yyyy', new Date())\n * //=> Tue Feb 11 2014 00:00:00\n *\n * @example\n * // Parse 28th of February in Esperanto locale in the context of 2010 year:\n * import eo from 'date-fns/locale/eo'\n * var result = parse('28-a de februaro', \"do 'de' MMMM\", new Date(2010, 0, 1), {\n * locale: eo\n * })\n * //=> Sun Feb 28 2010 00:00:00\n */\nexport default function parse(dirtyDateString, dirtyFormatString, dirtyReferenceDate, options) {\n var _ref, _options$locale, _ref2, _ref3, _ref4, _options$firstWeekCon, _options$locale2, _options$locale2$opti, _defaultOptions$local, _defaultOptions$local2, _ref5, _ref6, _ref7, _options$weekStartsOn, _options$locale3, _options$locale3$opti, _defaultOptions$local3, _defaultOptions$local4;\n requiredArgs(3, arguments);\n var dateString = String(dirtyDateString);\n var formatString = String(dirtyFormatString);\n var defaultOptions = getDefaultOptions();\n var locale = (_ref = (_options$locale = options === null || options === void 0 ? void 0 : options.locale) !== null && _options$locale !== void 0 ? _options$locale : defaultOptions.locale) !== null && _ref !== void 0 ? _ref : defaultLocale;\n if (!locale.match) {\n throw new RangeError('locale must contain match property');\n }\n var firstWeekContainsDate = toInteger((_ref2 = (_ref3 = (_ref4 = (_options$firstWeekCon = options === null || options === void 0 ? void 0 : options.firstWeekContainsDate) !== null && _options$firstWeekCon !== void 0 ? _options$firstWeekCon : options === null || options === void 0 ? void 0 : (_options$locale2 = options.locale) === null || _options$locale2 === void 0 ? void 0 : (_options$locale2$opti = _options$locale2.options) === null || _options$locale2$opti === void 0 ? void 0 : _options$locale2$opti.firstWeekContainsDate) !== null && _ref4 !== void 0 ? _ref4 : defaultOptions.firstWeekContainsDate) !== null && _ref3 !== void 0 ? _ref3 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.firstWeekContainsDate) !== null && _ref2 !== void 0 ? _ref2 : 1);\n\n // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively');\n }\n var weekStartsOn = toInteger((_ref5 = (_ref6 = (_ref7 = (_options$weekStartsOn = options === null || options === void 0 ? void 0 : options.weekStartsOn) !== null && _options$weekStartsOn !== void 0 ? _options$weekStartsOn : options === null || options === void 0 ? void 0 : (_options$locale3 = options.locale) === null || _options$locale3 === void 0 ? void 0 : (_options$locale3$opti = _options$locale3.options) === null || _options$locale3$opti === void 0 ? void 0 : _options$locale3$opti.weekStartsOn) !== null && _ref7 !== void 0 ? _ref7 : defaultOptions.weekStartsOn) !== null && _ref6 !== void 0 ? _ref6 : (_defaultOptions$local3 = defaultOptions.locale) === null || _defaultOptions$local3 === void 0 ? void 0 : (_defaultOptions$local4 = _defaultOptions$local3.options) === null || _defaultOptions$local4 === void 0 ? void 0 : _defaultOptions$local4.weekStartsOn) !== null && _ref5 !== void 0 ? _ref5 : 0);\n\n // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n if (formatString === '') {\n if (dateString === '') {\n return toDate(dirtyReferenceDate);\n } else {\n return new Date(NaN);\n }\n }\n var subFnOptions = {\n firstWeekContainsDate: firstWeekContainsDate,\n weekStartsOn: weekStartsOn,\n locale: locale\n };\n\n // If timezone isn't specified, it will be set to the system timezone\n var setters = [new DateToSystemTimezoneSetter()];\n var tokens = formatString.match(longFormattingTokensRegExp).map(function (substring) {\n var firstCharacter = substring[0];\n if (firstCharacter in longFormatters) {\n var longFormatter = longFormatters[firstCharacter];\n return longFormatter(substring, locale.formatLong);\n }\n return substring;\n }).join('').match(formattingTokensRegExp);\n var usedTokens = [];\n var _iterator = _createForOfIteratorHelper(tokens),\n _step;\n try {\n var _loop = function _loop() {\n var token = _step.value;\n if (!(options !== null && options !== void 0 && options.useAdditionalWeekYearTokens) && isProtectedWeekYearToken(token)) {\n throwProtectedError(token, formatString, dirtyDateString);\n }\n if (!(options !== null && options !== void 0 && options.useAdditionalDayOfYearTokens) && isProtectedDayOfYearToken(token)) {\n throwProtectedError(token, formatString, dirtyDateString);\n }\n var firstCharacter = token[0];\n var parser = parsers[firstCharacter];\n if (parser) {\n var incompatibleTokens = parser.incompatibleTokens;\n if (Array.isArray(incompatibleTokens)) {\n var incompatibleToken = usedTokens.find(function (usedToken) {\n return incompatibleTokens.includes(usedToken.token) || usedToken.token === firstCharacter;\n });\n if (incompatibleToken) {\n throw new RangeError(\"The format string mustn't contain `\".concat(incompatibleToken.fullToken, \"` and `\").concat(token, \"` at the same time\"));\n }\n } else if (parser.incompatibleTokens === '*' && usedTokens.length > 0) {\n throw new RangeError(\"The format string mustn't contain `\".concat(token, \"` and any other token at the same time\"));\n }\n usedTokens.push({\n token: firstCharacter,\n fullToken: token\n });\n var parseResult = parser.run(dateString, token, locale.match, subFnOptions);\n if (!parseResult) {\n return {\n v: new Date(NaN)\n };\n }\n setters.push(parseResult.setter);\n dateString = parseResult.rest;\n } else {\n if (firstCharacter.match(unescapedLatinCharacterRegExp)) {\n throw new RangeError('Format string contains an unescaped latin alphabet character `' + firstCharacter + '`');\n }\n\n // Replace two single quote characters with one single quote character\n if (token === \"''\") {\n token = \"'\";\n } else if (firstCharacter === \"'\") {\n token = cleanEscapedString(token);\n }\n\n // Cut token from string, or, if string doesn't match the token, return Invalid Date\n if (dateString.indexOf(token) === 0) {\n dateString = dateString.slice(token.length);\n } else {\n return {\n v: new Date(NaN)\n };\n }\n }\n };\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var _ret = _loop();\n if (_typeof(_ret) === \"object\") return _ret.v;\n }\n\n // Check if the remaining input contains something other than whitespace\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n if (dateString.length > 0 && notWhitespaceRegExp.test(dateString)) {\n return new Date(NaN);\n }\n var uniquePrioritySetters = setters.map(function (setter) {\n return setter.priority;\n }).sort(function (a, b) {\n return b - a;\n }).filter(function (priority, index, array) {\n return array.indexOf(priority) === index;\n }).map(function (priority) {\n return setters.filter(function (setter) {\n return setter.priority === priority;\n }).sort(function (a, b) {\n return b.subPriority - a.subPriority;\n });\n }).map(function (setterArray) {\n return setterArray[0];\n });\n var date = toDate(dirtyReferenceDate);\n if (isNaN(date.getTime())) {\n return new Date(NaN);\n }\n\n // Convert the date in system timezone to the same date in UTC+00:00 timezone.\n var utcDate = subMilliseconds(date, getTimezoneOffsetInMilliseconds(date));\n var flags = {};\n var _iterator2 = _createForOfIteratorHelper(uniquePrioritySetters),\n _step2;\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var setter = _step2.value;\n if (!setter.validate(utcDate, subFnOptions)) {\n return new Date(NaN);\n }\n var result = setter.set(utcDate, flags, subFnOptions);\n // Result is tuple (date, flags)\n if (Array.isArray(result)) {\n utcDate = result[0];\n assign(flags, result[1]);\n // Result is date\n } else {\n utcDate = result;\n }\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n return utcDate;\n}\nfunction cleanEscapedString(input) {\n return input.match(escapedStringRegExp)[1].replace(doubleQuoteRegExp, \"'\");\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport getDaysInMonth from \"../getDaysInMonth/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name setMonth\n * @category Month Helpers\n * @summary Set the month to the given date.\n *\n * @description\n * Set the month to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} month - the month of the new date\n * @returns {Date} the new date with the month set\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Set February to 1 September 2014:\n * const result = setMonth(new Date(2014, 8, 1), 1)\n * //=> Sat Feb 01 2014 00:00:00\n */\nexport default function setMonth(dirtyDate, dirtyMonth) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var month = toInteger(dirtyMonth);\n var year = date.getFullYear();\n var day = date.getDate();\n var dateWithDesiredMonth = new Date(0);\n dateWithDesiredMonth.setFullYear(year, month, 15);\n dateWithDesiredMonth.setHours(0, 0, 0, 0);\n var daysInMonth = getDaysInMonth(dateWithDesiredMonth);\n // Set the last day of the new month\n // if the original date was the last day of the longer month\n date.setMonth(month, Math.min(day, daysInMonth));\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getDaysInMonth\n * @category Month Helpers\n * @summary Get the number of days in a month of the given date.\n *\n * @description\n * Get the number of days in a month of the given date.\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the number of days in a month\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // How many days are in February 2000?\n * const result = getDaysInMonth(new Date(2000, 1))\n * //=> 29\n */\nexport default function getDaysInMonth(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var year = date.getFullYear();\n var monthIndex = date.getMonth();\n var lastDayOfMonth = new Date(0);\n lastDayOfMonth.setFullYear(year, monthIndex + 1, 0);\n lastDayOfMonth.setHours(0, 0, 0, 0);\n return lastDayOfMonth.getDate();\n}","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport toDate from \"../toDate/index.js\";\nimport setMonth from \"../setMonth/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name set\n * @category Common Helpers\n * @summary Set date values to a given date.\n *\n * @description\n * Set date values to a given date.\n *\n * Sets time values to date from object `values`.\n * A value is not set if it is undefined or null or doesn't exist in `values`.\n *\n * Note about bundle size: `set` does not internally use `setX` functions from date-fns but instead opts\n * to use native `Date#setX` methods. If you use this function, you may not want to include the\n * other `setX` functions that date-fns provides if you are concerned about the bundle size.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Object} values - an object with options\n * @param {Number} [values.year] - the number of years to be set\n * @param {Number} [values.month] - the number of months to be set\n * @param {Number} [values.date] - the number of days to be set\n * @param {Number} [values.hours] - the number of hours to be set\n * @param {Number} [values.minutes] - the number of minutes to be set\n * @param {Number} [values.seconds] - the number of seconds to be set\n * @param {Number} [values.milliseconds] - the number of milliseconds to be set\n * @returns {Date} the new date with options set\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `values` must be an object\n *\n * @example\n * // Transform 1 September 2014 into 20 October 2015 in a single line:\n * const result = set(new Date(2014, 8, 20), { year: 2015, month: 9, date: 20 })\n * //=> Tue Oct 20 2015 00:00:00\n *\n * @example\n * // Set 12 PM to 1 September 2014 01:23:45 to 1 September 2014 12:00:00:\n * const result = set(new Date(2014, 8, 1, 1, 23, 45), { hours: 12 })\n * //=> Mon Sep 01 2014 12:23:45\n */\nexport default function set(dirtyDate, values) {\n requiredArgs(2, arguments);\n if (_typeof(values) !== 'object' || values === null) {\n throw new RangeError('values parameter must be an object');\n }\n var date = toDate(dirtyDate);\n\n // Check if date is Invalid Date because Date.prototype.setFullYear ignores the value of Invalid Date\n if (isNaN(date.getTime())) {\n return new Date(NaN);\n }\n if (values.year != null) {\n date.setFullYear(values.year);\n }\n if (values.month != null) {\n date = setMonth(date, values.month);\n }\n if (values.date != null) {\n date.setDate(toInteger(values.date));\n }\n if (values.hours != null) {\n date.setHours(toInteger(values.hours));\n }\n if (values.minutes != null) {\n date.setMinutes(toInteger(values.minutes));\n }\n if (values.seconds != null) {\n date.setSeconds(toInteger(values.seconds));\n }\n if (values.milliseconds != null) {\n date.setMilliseconds(toInteger(values.milliseconds));\n }\n return date;\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name setHours\n * @category Hour Helpers\n * @summary Set the hours to the given date.\n *\n * @description\n * Set the hours to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} hours - the hours of the new date\n * @returns {Date} the new date with the hours set\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Set 4 hours to 1 September 2014 11:30:00:\n * const result = setHours(new Date(2014, 8, 1, 11, 30), 4)\n * //=> Mon Sep 01 2014 04:30:00\n */\nexport default function setHours(dirtyDate, dirtyHours) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var hours = toInteger(dirtyHours);\n date.setHours(hours);\n return date;\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name setMinutes\n * @category Minute Helpers\n * @summary Set the minutes to the given date.\n *\n * @description\n * Set the minutes to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} minutes - the minutes of the new date\n * @returns {Date} the new date with the minutes set\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Set 45 minutes to 1 September 2014 11:30:40:\n * const result = setMinutes(new Date(2014, 8, 1, 11, 30, 40), 45)\n * //=> Mon Sep 01 2014 11:45:40\n */\nexport default function setMinutes(dirtyDate, dirtyMinutes) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var minutes = toInteger(dirtyMinutes);\n date.setMinutes(minutes);\n return date;\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name setSeconds\n * @category Second Helpers\n * @summary Set the seconds to the given date.\n *\n * @description\n * Set the seconds to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} seconds - the seconds of the new date\n * @returns {Date} the new date with the seconds set\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Set 45 seconds to 1 September 2014 11:30:40:\n * const result = setSeconds(new Date(2014, 8, 1, 11, 30, 40), 45)\n * //=> Mon Sep 01 2014 11:30:45\n */\nexport default function setSeconds(dirtyDate, dirtySeconds) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var seconds = toInteger(dirtySeconds);\n date.setSeconds(seconds);\n return date;\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name setMilliseconds\n * @category Millisecond Helpers\n * @summary Set the milliseconds to the given date.\n *\n * @description\n * Set the milliseconds to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} milliseconds - the milliseconds of the new date\n * @returns {Date} the new date with the milliseconds set\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Set 300 milliseconds to 1 September 2014 11:30:40.500:\n * const result = setMilliseconds(new Date(2014, 8, 1, 11, 30, 40, 500), 300)\n * //=> Mon Sep 01 2014 11:30:40.300\n */\nexport default function setMilliseconds(dirtyDate, dirtyMilliseconds) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var milliseconds = toInteger(dirtyMilliseconds);\n date.setMilliseconds(milliseconds);\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isBefore\n * @category Common Helpers\n * @summary Is the first date before the second one?\n *\n * @description\n * Is the first date before the second one?\n *\n * @param {Date|Number} date - the date that should be before the other one to return true\n * @param {Date|Number} dateToCompare - the date to compare with\n * @returns {Boolean} the first date is before the second date\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Is 10 July 1989 before 11 February 1987?\n * const result = isBefore(new Date(1989, 6, 10), new Date(1987, 1, 11))\n * //=> false\n */\nexport default function isBefore(dirtyDate, dirtyDateToCompare) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var dateToCompare = toDate(dirtyDateToCompare);\n return date.getTime() < dateToCompare.getTime();\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isEqual\n * @category Common Helpers\n * @summary Are the given dates equal?\n *\n * @description\n * Are the given dates equal?\n *\n * @param {Date|Number} dateLeft - the first date to compare\n * @param {Date|Number} dateRight - the second date to compare\n * @returns {Boolean} the dates are equal\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Are 2 July 2014 06:30:45.000 and 2 July 2014 06:30:45.500 equal?\n * const result = isEqual(\n * new Date(2014, 6, 2, 6, 30, 45, 0),\n * new Date(2014, 6, 2, 6, 30, 45, 500)\n * )\n * //=> false\n */\nexport default function isEqual(dirtyLeftDate, dirtyRightDate) {\n requiredArgs(2, arguments);\n var dateLeft = toDate(dirtyLeftDate);\n var dateRight = toDate(dirtyRightDate);\n return dateLeft.getTime() === dateRight.getTime();\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isAfter\n * @category Common Helpers\n * @summary Is the first date after the second one?\n *\n * @description\n * Is the first date after the second one?\n *\n * @param {Date|Number} date - the date that should be after the other one to return true\n * @param {Date|Number} dateToCompare - the date to compare with\n * @returns {Boolean} the first date is after the second date\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Is 10 July 1989 after 11 February 1987?\n * const result = isAfter(new Date(1989, 6, 10), new Date(1987, 1, 11))\n * //=> true\n */\nexport default function isAfter(dirtyDate, dirtyDateToCompare) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var dateToCompare = toDate(dirtyDateToCompare);\n return date.getTime() > dateToCompare.getTime();\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getHours\n * @category Hour Helpers\n * @summary Get the hours of the given date.\n *\n * @description\n * Get the hours of the given date.\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the hours\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Get the hours of 29 February 2012 11:45:00:\n * const result = getHours(new Date(2012, 1, 29, 11, 45))\n * //=> 11\n */\nexport default function getHours(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var hours = date.getHours();\n return hours;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getMinutes\n * @category Minute Helpers\n * @summary Get the minutes of the given date.\n *\n * @description\n * Get the minutes of the given date.\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the minutes\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Get the minutes of 29 February 2012 11:45:05:\n * const result = getMinutes(new Date(2012, 1, 29, 11, 45, 5))\n * //=> 45\n */\nexport default function getMinutes(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var minutes = date.getMinutes();\n return minutes;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getSeconds\n * @category Second Helpers\n * @summary Get the seconds of the given date.\n *\n * @description\n * Get the seconds of the given date.\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the seconds\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Get the seconds of 29 February 2012 11:45:05.123:\n * const result = getSeconds(new Date(2012, 1, 29, 11, 45, 5, 123))\n * //=> 5\n */\nexport default function getSeconds(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var seconds = date.getSeconds();\n return seconds;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getYear\n * @category Year Helpers\n * @summary Get the year of the given date.\n *\n * @description\n * Get the year of the given date.\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the year\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which year is 2 July 2014?\n * const result = getYear(new Date(2014, 6, 2))\n * //=> 2014\n */\nexport default function getYear(dirtyDate) {\n requiredArgs(1, arguments);\n return toDate(dirtyDate).getFullYear();\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getMonth\n * @category Month Helpers\n * @summary Get the month of the given date.\n *\n * @description\n * Get the month of the given date.\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the month\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which month is 29 February 2012?\n * const result = getMonth(new Date(2012, 1, 29))\n * //=> 1\n */\nexport default function getMonth(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var month = date.getMonth();\n return month;\n}","import { millisecondsInHour, millisecondsInMinute } from \"../constants/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\n/**\n * @name parseISO\n * @category Common Helpers\n * @summary Parse ISO string\n *\n * @description\n * Parse the given string in ISO 8601 format and return an instance of Date.\n *\n * Function accepts complete ISO 8601 formats as well as partial implementations.\n * ISO 8601: http://en.wikipedia.org/wiki/ISO_8601\n *\n * If the argument isn't a string, the function cannot parse the string or\n * the values are invalid, it returns Invalid Date.\n *\n * @param {String} argument - the value to convert\n * @param {Object} [options] - an object with options.\n * @param {0|1|2} [options.additionalDigits=2] - the additional number of digits in the extended year format\n * @returns {Date} the parsed date in the local time zone\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Convert string '2014-02-11T11:30:30' to date:\n * const result = parseISO('2014-02-11T11:30:30')\n * //=> Tue Feb 11 2014 11:30:30\n *\n * @example\n * // Convert string '+02014101' to date,\n * // if the additional number of digits in the extended year format is 1:\n * const result = parseISO('+02014101', { additionalDigits: 1 })\n * //=> Fri Apr 11 2014 00:00:00\n */\nexport default function parseISO(argument, options) {\n var _options$additionalDi;\n requiredArgs(1, arguments);\n var additionalDigits = toInteger((_options$additionalDi = options === null || options === void 0 ? void 0 : options.additionalDigits) !== null && _options$additionalDi !== void 0 ? _options$additionalDi : 2);\n if (additionalDigits !== 2 && additionalDigits !== 1 && additionalDigits !== 0) {\n throw new RangeError('additionalDigits must be 0, 1 or 2');\n }\n if (!(typeof argument === 'string' || Object.prototype.toString.call(argument) === '[object String]')) {\n return new Date(NaN);\n }\n var dateStrings = splitDateString(argument);\n var date;\n if (dateStrings.date) {\n var parseYearResult = parseYear(dateStrings.date, additionalDigits);\n date = parseDate(parseYearResult.restDateString, parseYearResult.year);\n }\n if (!date || isNaN(date.getTime())) {\n return new Date(NaN);\n }\n var timestamp = date.getTime();\n var time = 0;\n var offset;\n if (dateStrings.time) {\n time = parseTime(dateStrings.time);\n if (isNaN(time)) {\n return new Date(NaN);\n }\n }\n if (dateStrings.timezone) {\n offset = parseTimezone(dateStrings.timezone);\n if (isNaN(offset)) {\n return new Date(NaN);\n }\n } else {\n var dirtyDate = new Date(timestamp + time);\n // js parsed string assuming it's in UTC timezone\n // but we need it to be parsed in our timezone\n // so we use utc values to build date in our timezone.\n // Year values from 0 to 99 map to the years 1900 to 1999\n // so set year explicitly with setFullYear.\n var result = new Date(0);\n result.setFullYear(dirtyDate.getUTCFullYear(), dirtyDate.getUTCMonth(), dirtyDate.getUTCDate());\n result.setHours(dirtyDate.getUTCHours(), dirtyDate.getUTCMinutes(), dirtyDate.getUTCSeconds(), dirtyDate.getUTCMilliseconds());\n return result;\n }\n return new Date(timestamp + time + offset);\n}\nvar patterns = {\n dateTimeDelimiter: /[T ]/,\n timeZoneDelimiter: /[Z ]/i,\n timezone: /([Z+-].*)$/\n};\nvar dateRegex = /^-?(?:(\\d{3})|(\\d{2})(?:-?(\\d{2}))?|W(\\d{2})(?:-?(\\d{1}))?|)$/;\nvar timeRegex = /^(\\d{2}(?:[.,]\\d*)?)(?::?(\\d{2}(?:[.,]\\d*)?))?(?::?(\\d{2}(?:[.,]\\d*)?))?$/;\nvar timezoneRegex = /^([+-])(\\d{2})(?::?(\\d{2}))?$/;\nfunction splitDateString(dateString) {\n var dateStrings = {};\n var array = dateString.split(patterns.dateTimeDelimiter);\n var timeString;\n\n // The regex match should only return at maximum two array elements.\n // [date], [time], or [date, time].\n if (array.length > 2) {\n return dateStrings;\n }\n if (/:/.test(array[0])) {\n timeString = array[0];\n } else {\n dateStrings.date = array[0];\n timeString = array[1];\n if (patterns.timeZoneDelimiter.test(dateStrings.date)) {\n dateStrings.date = dateString.split(patterns.timeZoneDelimiter)[0];\n timeString = dateString.substr(dateStrings.date.length, dateString.length);\n }\n }\n if (timeString) {\n var token = patterns.timezone.exec(timeString);\n if (token) {\n dateStrings.time = timeString.replace(token[1], '');\n dateStrings.timezone = token[1];\n } else {\n dateStrings.time = timeString;\n }\n }\n return dateStrings;\n}\nfunction parseYear(dateString, additionalDigits) {\n var regex = new RegExp('^(?:(\\\\d{4}|[+-]\\\\d{' + (4 + additionalDigits) + '})|(\\\\d{2}|[+-]\\\\d{' + (2 + additionalDigits) + '})$)');\n var captures = dateString.match(regex);\n // Invalid ISO-formatted year\n if (!captures) return {\n year: NaN,\n restDateString: ''\n };\n var year = captures[1] ? parseInt(captures[1]) : null;\n var century = captures[2] ? parseInt(captures[2]) : null;\n\n // either year or century is null, not both\n return {\n year: century === null ? year : century * 100,\n restDateString: dateString.slice((captures[1] || captures[2]).length)\n };\n}\nfunction parseDate(dateString, year) {\n // Invalid ISO-formatted year\n if (year === null) return new Date(NaN);\n var captures = dateString.match(dateRegex);\n // Invalid ISO-formatted string\n if (!captures) return new Date(NaN);\n var isWeekDate = !!captures[4];\n var dayOfYear = parseDateUnit(captures[1]);\n var month = parseDateUnit(captures[2]) - 1;\n var day = parseDateUnit(captures[3]);\n var week = parseDateUnit(captures[4]);\n var dayOfWeek = parseDateUnit(captures[5]) - 1;\n if (isWeekDate) {\n if (!validateWeekDate(year, week, dayOfWeek)) {\n return new Date(NaN);\n }\n return dayOfISOWeekYear(year, week, dayOfWeek);\n } else {\n var date = new Date(0);\n if (!validateDate(year, month, day) || !validateDayOfYearDate(year, dayOfYear)) {\n return new Date(NaN);\n }\n date.setUTCFullYear(year, month, Math.max(dayOfYear, day));\n return date;\n }\n}\nfunction parseDateUnit(value) {\n return value ? parseInt(value) : 1;\n}\nfunction parseTime(timeString) {\n var captures = timeString.match(timeRegex);\n if (!captures) return NaN; // Invalid ISO-formatted time\n\n var hours = parseTimeUnit(captures[1]);\n var minutes = parseTimeUnit(captures[2]);\n var seconds = parseTimeUnit(captures[3]);\n if (!validateTime(hours, minutes, seconds)) {\n return NaN;\n }\n return hours * millisecondsInHour + minutes * millisecondsInMinute + seconds * 1000;\n}\nfunction parseTimeUnit(value) {\n return value && parseFloat(value.replace(',', '.')) || 0;\n}\nfunction parseTimezone(timezoneString) {\n if (timezoneString === 'Z') return 0;\n var captures = timezoneString.match(timezoneRegex);\n if (!captures) return 0;\n var sign = captures[1] === '+' ? -1 : 1;\n var hours = parseInt(captures[2]);\n var minutes = captures[3] && parseInt(captures[3]) || 0;\n if (!validateTimezone(hours, minutes)) {\n return NaN;\n }\n return sign * (hours * millisecondsInHour + minutes * millisecondsInMinute);\n}\nfunction dayOfISOWeekYear(isoWeekYear, week, day) {\n var date = new Date(0);\n date.setUTCFullYear(isoWeekYear, 0, 4);\n var fourthOfJanuaryDay = date.getUTCDay() || 7;\n var diff = (week - 1) * 7 + day + 1 - fourthOfJanuaryDay;\n date.setUTCDate(date.getUTCDate() + diff);\n return date;\n}\n\n// Validation functions\n\n// February is null to handle the leap year (using ||)\nvar daysInMonths = [31, null, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\nfunction isLeapYearIndex(year) {\n return year % 400 === 0 || year % 4 === 0 && year % 100 !== 0;\n}\nfunction validateDate(year, month, date) {\n return month >= 0 && month <= 11 && date >= 1 && date <= (daysInMonths[month] || (isLeapYearIndex(year) ? 29 : 28));\n}\nfunction validateDayOfYearDate(year, dayOfYear) {\n return dayOfYear >= 1 && dayOfYear <= (isLeapYearIndex(year) ? 366 : 365);\n}\nfunction validateWeekDate(_year, week, day) {\n return week >= 1 && week <= 53 && day >= 0 && day <= 6;\n}\nfunction validateTime(hours, minutes, seconds) {\n if (hours === 24) {\n return minutes === 0 && seconds === 0;\n }\n return seconds >= 0 && seconds < 60 && minutes >= 0 && minutes < 60 && hours >= 0 && hours < 25;\n}\nfunction validateTimezone(_hours, minutes) {\n return minutes >= 0 && minutes <= 59;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name eachDayOfInterval\n * @category Interval Helpers\n * @summary Return the array of dates within the specified time interval.\n *\n * @description\n * Return the array of dates within the specified time interval.\n *\n * @param {Interval} interval - the interval. See [Interval]{@link https://date-fns.org/docs/Interval}\n * @param {Object} [options] - an object with options.\n * @param {Number} [options.step=1] - the step to increment by. The value should be more than 1.\n * @returns {Date[]} the array with starts of days from the day of the interval start to the day of the interval end\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.step` must be a number greater than 1\n * @throws {RangeError} The start of an interval cannot be after its end\n * @throws {RangeError} Date in interval cannot be `Invalid Date`\n *\n * @example\n * // Each day between 6 October 2014 and 10 October 2014:\n * const result = eachDayOfInterval({\n * start: new Date(2014, 9, 6),\n * end: new Date(2014, 9, 10)\n * })\n * //=> [\n * // Mon Oct 06 2014 00:00:00,\n * // Tue Oct 07 2014 00:00:00,\n * // Wed Oct 08 2014 00:00:00,\n * // Thu Oct 09 2014 00:00:00,\n * // Fri Oct 10 2014 00:00:00\n * // ]\n */\nexport default function eachDayOfInterval(dirtyInterval, options) {\n var _options$step;\n requiredArgs(1, arguments);\n var interval = dirtyInterval || {};\n var startDate = toDate(interval.start);\n var endDate = toDate(interval.end);\n var endTime = endDate.getTime();\n\n // Throw an exception if start date is after end date or if any date is `Invalid Date`\n if (!(startDate.getTime() <= endTime)) {\n throw new RangeError('Invalid interval');\n }\n var dates = [];\n var currentDate = startDate;\n currentDate.setHours(0, 0, 0, 0);\n var step = Number((_options$step = options === null || options === void 0 ? void 0 : options.step) !== null && _options$step !== void 0 ? _options$step : 1);\n if (step < 1 || isNaN(step)) throw new RangeError('`options.step` must be a number greater than 1');\n while (currentDate.getTime() <= endTime) {\n dates.push(toDate(currentDate));\n currentDate.setDate(currentDate.getDate() + step);\n currentDate.setHours(0, 0, 0, 0);\n }\n return dates;\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name addMonths\n * @category Month Helpers\n * @summary Add the specified number of months to the given date.\n *\n * @description\n * Add the specified number of months to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of months to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the months added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 5 months to 1 September 2014:\n * const result = addMonths(new Date(2014, 8, 1), 5)\n * //=> Sun Feb 01 2015 00:00:00\n */\nexport default function addMonths(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var amount = toInteger(dirtyAmount);\n if (isNaN(amount)) {\n return new Date(NaN);\n }\n if (!amount) {\n // If 0 months, no-op to avoid changing times in the hour before end of DST\n return date;\n }\n var dayOfMonth = date.getDate();\n\n // The JS Date object supports date math by accepting out-of-bounds values for\n // month, day, etc. For example, new Date(2020, 0, 0) returns 31 Dec 2019 and\n // new Date(2020, 13, 1) returns 1 Feb 2021. This is *almost* the behavior we\n // want except that dates will wrap around the end of a month, meaning that\n // new Date(2020, 13, 31) will return 3 Mar 2021 not 28 Feb 2021 as desired. So\n // we'll default to the end of the desired month by adding 1 to the desired\n // month and using a date of 0 to back up one day to the end of the desired\n // month.\n var endOfDesiredMonth = new Date(date.getTime());\n endOfDesiredMonth.setMonth(date.getMonth() + amount + 1, 0);\n var daysInMonth = endOfDesiredMonth.getDate();\n if (dayOfMonth >= daysInMonth) {\n // If we're already at the end of the month, then this is the correct date\n // and we're done.\n return endOfDesiredMonth;\n } else {\n // Otherwise, we now know that setting the original day-of-month value won't\n // cause an overflow, so set the desired day-of-month. Note that we can't\n // just set the date of `endOfDesiredMonth` because that object may have had\n // its time changed in the unusual case where where a DST transition was on\n // the last day of the month and its local time was in the hour skipped or\n // repeated next to a DST transition. So we use `date` instead which is\n // guaranteed to still have the original time.\n date.setFullYear(endOfDesiredMonth.getFullYear(), endOfDesiredMonth.getMonth(), dayOfMonth);\n return date;\n }\n}","import toDate from \"../toDate/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { getDefaultOptions } from \"../_lib/defaultOptions/index.js\";\n/**\n * @name startOfWeek\n * @category Week Helpers\n * @summary Return the start of a week for the given date.\n *\n * @description\n * Return the start of a week for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @returns {Date} the start of a week\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n *\n * @example\n * // The start of a week for 2 September 2014 11:55:00:\n * const result = startOfWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Sun Aug 31 2014 00:00:00\n *\n * @example\n * // If the week starts on Monday, the start of the week for 2 September 2014 11:55:00:\n * const result = startOfWeek(new Date(2014, 8, 2, 11, 55, 0), { weekStartsOn: 1 })\n * //=> Mon Sep 01 2014 00:00:00\n */\nexport default function startOfWeek(dirtyDate, options) {\n var _ref, _ref2, _ref3, _options$weekStartsOn, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n requiredArgs(1, arguments);\n var defaultOptions = getDefaultOptions();\n var weekStartsOn = toInteger((_ref = (_ref2 = (_ref3 = (_options$weekStartsOn = options === null || options === void 0 ? void 0 : options.weekStartsOn) !== null && _options$weekStartsOn !== void 0 ? _options$weekStartsOn : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.weekStartsOn) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.weekStartsOn) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.weekStartsOn) !== null && _ref !== void 0 ? _ref : 0);\n\n // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n var date = toDate(dirtyDate);\n var day = date.getDay();\n var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n date.setDate(date.getDate() - diff);\n date.setHours(0, 0, 0, 0);\n return date;\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name setYear\n * @category Year Helpers\n * @summary Set the year to the given date.\n *\n * @description\n * Set the year to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} year - the year of the new date\n * @returns {Date} the new date with the year set\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Set year 2013 to 1 September 2014:\n * const result = setYear(new Date(2014, 8, 1), 2013)\n * //=> Sun Sep 01 2013 00:00:00\n */\nexport default function setYear(dirtyDate, dirtyYear) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var year = toInteger(dirtyYear);\n\n // Check if date is Invalid Date because Date.prototype.setFullYear ignores the value of Invalid Date\n if (isNaN(date.getTime())) {\n return new Date(NaN);\n }\n date.setFullYear(year);\n return date;\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport addMonths from \"../addMonths/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name subMonths\n * @category Month Helpers\n * @summary Subtract the specified number of months from the given date.\n *\n * @description\n * Subtract the specified number of months from the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of months to be subtracted. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the months subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 5 months from 1 February 2015:\n * const result = subMonths(new Date(2015, 1, 1), 5)\n * //=> Mon Sep 01 2014 00:00:00\n */\nexport default function subMonths(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addMonths(dirtyDate, -amount);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport addMonths from \"../addMonths/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name addYears\n * @category Year Helpers\n * @summary Add the specified number of years to the given date.\n *\n * @description\n * Add the specified number of years to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of years to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the years added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 5 years to 1 September 2014:\n * const result = addYears(new Date(2014, 8, 1), 5)\n * //=> Sun Sep 01 2019 00:00:00\n */\nexport default function addYears(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addMonths(dirtyDate, amount * 12);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport addYears from \"../addYears/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name subYears\n * @category Year Helpers\n * @summary Subtract the specified number of years from the given date.\n *\n * @description\n * Subtract the specified number of years from the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of years to be subtracted. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the years subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 5 years from 1 September 2014:\n * const result = subYears(new Date(2014, 8, 1), 5)\n * //=> Tue Sep 01 2009 00:00:00\n */\nexport default function subYears(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addYears(dirtyDate, -amount);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name addDays\n * @category Day Helpers\n * @summary Add the specified number of days to the given date.\n *\n * @description\n * Add the specified number of days to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of days to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} - the new date with the days added\n * @throws {TypeError} - 2 arguments required\n *\n * @example\n * // Add 10 days to 1 September 2014:\n * const result = addDays(new Date(2014, 8, 1), 10)\n * //=> Thu Sep 11 2014 00:00:00\n */\nexport default function addDays(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var amount = toInteger(dirtyAmount);\n if (isNaN(amount)) {\n return new Date(NaN);\n }\n if (!amount) {\n // If 0 days, no-op to avoid changing times in the hour before end of DST\n return date;\n }\n date.setDate(date.getDate() + amount);\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name startOfDay\n * @category Day Helpers\n * @summary Return the start of a day for the given date.\n *\n * @description\n * Return the start of a day for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of a day\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of a day for 2 September 2014 11:55:00:\n * const result = startOfDay(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 02 2014 00:00:00\n */\nexport default function startOfDay(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n date.setHours(0, 0, 0, 0);\n return date;\n}","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport addDays from \"../addDays/index.js\";\nimport addMonths from \"../addMonths/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\n/**\n * @name add\n * @category Common Helpers\n * @summary Add the specified years, months, weeks, days, hours, minutes and seconds to the given date.\n *\n * @description\n * Add the specified years, months, weeks, days, hours, minutes and seconds to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Duration} duration - the object with years, months, weeks, days, hours, minutes and seconds to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n *\n * | Key | Description |\n * |----------------|------------------------------------|\n * | years | Amount of years to be added |\n * | months | Amount of months to be added |\n * | weeks | Amount of weeks to be added |\n * | days | Amount of days to be added |\n * | hours | Amount of hours to be added |\n * | minutes | Amount of minutes to be added |\n * | seconds | Amount of seconds to be added |\n *\n * All values default to 0\n *\n * @returns {Date} the new date with the seconds added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add the following duration to 1 September 2014, 10:19:50\n * const result = add(new Date(2014, 8, 1, 10, 19, 50), {\n * years: 2,\n * months: 9,\n * weeks: 1,\n * days: 7,\n * hours: 5,\n * minutes: 9,\n * seconds: 30,\n * })\n * //=> Thu Jun 15 2017 15:29:20\n */\nexport default function add(dirtyDate, duration) {\n requiredArgs(2, arguments);\n if (!duration || _typeof(duration) !== 'object') return new Date(NaN);\n var years = duration.years ? toInteger(duration.years) : 0;\n var months = duration.months ? toInteger(duration.months) : 0;\n var weeks = duration.weeks ? toInteger(duration.weeks) : 0;\n var days = duration.days ? toInteger(duration.days) : 0;\n var hours = duration.hours ? toInteger(duration.hours) : 0;\n var minutes = duration.minutes ? toInteger(duration.minutes) : 0;\n var seconds = duration.seconds ? toInteger(duration.seconds) : 0;\n\n // Add years and months\n var date = toDate(dirtyDate);\n var dateWithMonths = months || years ? addMonths(date, months + years * 12) : date;\n\n // Add weeks and days\n var dateWithDays = days || weeks ? addDays(dateWithMonths, days + weeks * 7) : dateWithMonths;\n\n // Add days, hours, minutes and seconds\n var minutesToAdd = minutes + hours * 60;\n var secondsToAdd = seconds + minutesToAdd * 60;\n var msToAdd = secondsToAdd * 1000;\n var finalDate = new Date(dateWithDays.getTime() + msToAdd);\n return finalDate;\n}","import startOfWeek from \"../startOfWeek/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name startOfISOWeek\n * @category ISO Week Helpers\n * @summary Return the start of an ISO week for the given date.\n *\n * @description\n * Return the start of an ISO week for the given date.\n * The result will be in the local timezone.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of an ISO week\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of an ISO week for 2 September 2014 11:55:00:\n * const result = startOfISOWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Mon Sep 01 2014 00:00:00\n */\nexport default function startOfISOWeek(dirtyDate) {\n requiredArgs(1, arguments);\n return startOfWeek(dirtyDate, {\n weekStartsOn: 1\n });\n}","import { openBlock as b, createElementBlock as F, createElementVNode as oe, unref as m, reactive as Nt, computed as W, ref as Z, toRef as Kt, watch as gt, h as Fa, render as jn, defineComponent as Be, renderSlot as ae, createCommentVNode as V, normalizeClass as ye, withKeys as le, createBlock as ce, withModifiers as pe, onMounted as Ue, normalizeStyle as Ke, normalizeProps as Ce, mergeProps as Ie, Fragment as de, createTextVNode as at, toDisplayString as Ne, onBeforeUpdate as Va, nextTick as rt, onUnmounted as _n, renderList as Me, withDirectives as Lt, vShow as Wt, withCtx as ue, createVNode as Ze, Transition as Dt, createSlots as Ee, useSlots as Yt, guardReactiveProps as Ve, resolveDynamicComponent as Pn, getCurrentScope as Ha, onScopeDispose as Ua, isRef as Kn, Teleport as La } from \"vue\";\nimport { format as dt, isBefore as _t, isEqual as pt, isAfter as Pt, set as we, setHours as ca, setMinutes as fa, setSeconds as va, setMilliseconds as Cn, getYear as fe, getMonth as ve, setMonth as Wa, setYear as ct, addMonths as ft, subMonths as Ct, isValid as zt, parseISO as za, eachDayOfInterval as ma, getHours as qe, getMinutes as Xe, getSeconds as bt, startOfWeek as ga, endOfWeek as ja, parse as kn, isDate as Ka, addYears as ya, subYears as ha, addDays as it, getDay as Ga, differenceInCalendarDays as Za, add as pa, sub as qa, getWeek as Xa, getISOWeek as Ja } from \"date-fns\";\nfunction It() {\n return b(), F(\n \"svg\",\n {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 32 32\",\n fill: \"currentColor\",\n \"aria-hidden\": \"true\",\n class: \"dp__icon\"\n },\n [\n oe(\"path\", {\n d: \"M29.333 8c0-2.208-1.792-4-4-4h-18.667c-2.208 0-4 1.792-4 4v18.667c0 2.208 1.792 4 4 4h18.667c2.208 0 4-1.792 4-4v-18.667zM26.667 8v18.667c0 0.736-0.597 1.333-1.333 1.333 0 0-18.667 0-18.667 0-0.736 0-1.333-0.597-1.333-1.333 0 0 0-18.667 0-18.667 0-0.736 0.597-1.333 1.333-1.333 0 0 18.667 0 18.667 0 0.736 0 1.333 0.597 1.333 1.333z\"\n }),\n oe(\"path\", {\n d: \"M20 2.667v5.333c0 0.736 0.597 1.333 1.333 1.333s1.333-0.597 1.333-1.333v-5.333c0-0.736-0.597-1.333-1.333-1.333s-1.333 0.597-1.333 1.333z\"\n }),\n oe(\"path\", {\n d: \"M9.333 2.667v5.333c0 0.736 0.597 1.333 1.333 1.333s1.333-0.597 1.333-1.333v-5.333c0-0.736-0.597-1.333-1.333-1.333s-1.333 0.597-1.333 1.333z\"\n }),\n oe(\"path\", {\n d: \"M4 14.667h24c0.736 0 1.333-0.597 1.333-1.333s-0.597-1.333-1.333-1.333h-24c-0.736 0-1.333 0.597-1.333 1.333s0.597 1.333 1.333 1.333z\"\n })\n ]\n );\n}\nIt.compatConfig = {\n MODE: 3\n};\nfunction ba() {\n return b(), F(\n \"svg\",\n {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 32 32\",\n fill: \"currentColor\",\n \"aria-hidden\": \"true\",\n class: \"dp__icon\"\n },\n [\n oe(\"path\", {\n d: \"M23.057 7.057l-16 16c-0.52 0.52-0.52 1.365 0 1.885s1.365 0.52 1.885 0l16-16c0.52-0.52 0.52-1.365 0-1.885s-1.365-0.52-1.885 0z\"\n }),\n oe(\"path\", {\n d: \"M7.057 8.943l16 16c0.52 0.52 1.365 0.52 1.885 0s0.52-1.365 0-1.885l-16-16c-0.52-0.52-1.365-0.52-1.885 0s-0.52 1.365 0 1.885z\"\n })\n ]\n );\n}\nba.compatConfig = {\n MODE: 3\n};\nfunction Rn() {\n return b(), F(\n \"svg\",\n {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 32 32\",\n fill: \"currentColor\",\n \"aria-hidden\": \"true\",\n class: \"dp__icon\"\n },\n [\n oe(\"path\", {\n d: \"M20.943 23.057l-7.057-7.057c0 0 7.057-7.057 7.057-7.057 0.52-0.52 0.52-1.365 0-1.885s-1.365-0.52-1.885 0l-8 8c-0.521 0.521-0.521 1.365 0 1.885l8 8c0.52 0.52 1.365 0.52 1.885 0s0.52-1.365 0-1.885z\"\n })\n ]\n );\n}\nRn.compatConfig = {\n MODE: 3\n};\nfunction On() {\n return b(), F(\n \"svg\",\n {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 32 32\",\n fill: \"currentColor\",\n \"aria-hidden\": \"true\",\n class: \"dp__icon\"\n },\n [\n oe(\"path\", {\n d: \"M12.943 24.943l8-8c0.521-0.521 0.521-1.365 0-1.885l-8-8c-0.52-0.52-1.365-0.52-1.885 0s-0.52 1.365 0 1.885l7.057 7.057c0 0-7.057 7.057-7.057 7.057-0.52 0.52-0.52 1.365 0 1.885s1.365 0.52 1.885 0z\"\n })\n ]\n );\n}\nOn.compatConfig = {\n MODE: 3\n};\nfunction Nn() {\n return b(), F(\n \"svg\",\n {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 32 32\",\n fill: \"currentColor\",\n \"aria-hidden\": \"true\",\n class: \"dp__icon\"\n },\n [\n oe(\"path\", {\n d: \"M16 1.333c-8.095 0-14.667 6.572-14.667 14.667s6.572 14.667 14.667 14.667c8.095 0 14.667-6.572 14.667-14.667s-6.572-14.667-14.667-14.667zM16 4c6.623 0 12 5.377 12 12s-5.377 12-12 12c-6.623 0-12-5.377-12-12s5.377-12 12-12z\"\n }),\n oe(\"path\", {\n d: \"M14.667 8v8c0 0.505 0.285 0.967 0.737 1.193l5.333 2.667c0.658 0.329 1.46 0.062 1.789-0.596s0.062-1.46-0.596-1.789l-4.596-2.298c0 0 0-7.176 0-7.176 0-0.736-0.597-1.333-1.333-1.333s-1.333 0.597-1.333 1.333z\"\n })\n ]\n );\n}\nNn.compatConfig = {\n MODE: 3\n};\nfunction Yn() {\n return b(), F(\n \"svg\",\n {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 32 32\",\n fill: \"currentColor\",\n \"aria-hidden\": \"true\",\n class: \"dp__icon\"\n },\n [\n oe(\"path\", {\n d: \"M24.943 19.057l-8-8c-0.521-0.521-1.365-0.521-1.885 0l-8 8c-0.52 0.52-0.52 1.365 0 1.885s1.365 0.52 1.885 0l7.057-7.057c0 0 7.057 7.057 7.057 7.057 0.52 0.52 1.365 0.52 1.885 0s0.52-1.365 0-1.885z\"\n })\n ]\n );\n}\nYn.compatConfig = {\n MODE: 3\n};\nfunction In() {\n return b(), F(\n \"svg\",\n {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 32 32\",\n fill: \"currentColor\",\n \"aria-hidden\": \"true\",\n class: \"dp__icon\"\n },\n [\n oe(\"path\", {\n d: \"M7.057 12.943l8 8c0.521 0.521 1.365 0.521 1.885 0l8-8c0.52-0.52 0.52-1.365 0-1.885s-1.365-0.52-1.885 0l-7.057 7.057c0 0-7.057-7.057-7.057-7.057-0.52-0.52-1.365-0.52-1.885 0s-0.52 1.365 0 1.885z\"\n })\n ]\n );\n}\nIn.compatConfig = {\n MODE: 3\n};\nfunction Bn(e) {\n return e && e.__esModule && Object.prototype.hasOwnProperty.call(e, \"default\") ? e.default : e;\n}\nvar ka = { exports: {} };\n(function(e) {\n function n(a) {\n return a && a.__esModule ? a : {\n default: a\n };\n }\n e.exports = n, e.exports.__esModule = !0, e.exports.default = e.exports;\n})(ka);\nvar xa = ka.exports, wn = { exports: {} };\n(function(e, n) {\n Object.defineProperty(n, \"__esModule\", {\n value: !0\n }), n.default = a;\n function a(t) {\n if (t === null || t === !0 || t === !1)\n return NaN;\n var r = Number(t);\n return isNaN(r) ? r : r < 0 ? Math.ceil(r) : Math.floor(r);\n }\n e.exports = n.default;\n})(wn, wn.exports);\nvar Qa = wn.exports;\nconst er = /* @__PURE__ */ Bn(Qa);\nvar Dn = { exports: {} };\n(function(e, n) {\n Object.defineProperty(n, \"__esModule\", {\n value: !0\n }), n.default = a;\n function a(t) {\n var r = new Date(Date.UTC(t.getFullYear(), t.getMonth(), t.getDate(), t.getHours(), t.getMinutes(), t.getSeconds(), t.getMilliseconds()));\n return r.setUTCFullYear(t.getFullYear()), t.getTime() - r.getTime();\n }\n e.exports = n.default;\n})(Dn, Dn.exports);\nvar tr = Dn.exports;\nconst Gn = /* @__PURE__ */ Bn(tr);\nfunction nr(e, n) {\n var a = or(n);\n return a.formatToParts ? rr(a, e) : lr(a, e);\n}\nvar ar = {\n year: 0,\n month: 1,\n day: 2,\n hour: 3,\n minute: 4,\n second: 5\n};\nfunction rr(e, n) {\n try {\n for (var a = e.formatToParts(n), t = [], r = 0; r < a.length; r++) {\n var l = ar[a[r].type];\n l >= 0 && (t[l] = parseInt(a[r].value, 10));\n }\n return t;\n } catch (c) {\n if (c instanceof RangeError)\n return [NaN];\n throw c;\n }\n}\nfunction lr(e, n) {\n var a = e.format(n).replace(/\\u200E/g, \"\"), t = /(\\d+)\\/(\\d+)\\/(\\d+),? (\\d+):(\\d+):(\\d+)/.exec(a);\n return [t[3], t[1], t[2], t[4], t[5], t[6]];\n}\nvar sn = {};\nfunction or(e) {\n if (!sn[e]) {\n var n = new Intl.DateTimeFormat(\"en-US\", {\n hour12: !1,\n timeZone: \"America/New_York\",\n year: \"numeric\",\n month: \"numeric\",\n day: \"2-digit\",\n hour: \"2-digit\",\n minute: \"2-digit\",\n second: \"2-digit\"\n }).format(/* @__PURE__ */ new Date(\"2014-06-25T04:00:00.123Z\")), a = n === \"06/25/2014, 00:00:00\" || n === \"06/25/2014 00:00:00\";\n sn[e] = a ? new Intl.DateTimeFormat(\"en-US\", {\n hour12: !1,\n timeZone: e,\n year: \"numeric\",\n month: \"numeric\",\n day: \"2-digit\",\n hour: \"2-digit\",\n minute: \"2-digit\",\n second: \"2-digit\"\n }) : new Intl.DateTimeFormat(\"en-US\", {\n hourCycle: \"h23\",\n timeZone: e,\n year: \"numeric\",\n month: \"numeric\",\n day: \"2-digit\",\n hour: \"2-digit\",\n minute: \"2-digit\",\n second: \"2-digit\"\n });\n }\n return sn[e];\n}\nfunction En(e, n, a, t, r, l, c) {\n var y = /* @__PURE__ */ new Date(0);\n return y.setUTCFullYear(e, n, a), y.setUTCHours(t, r, l, c), y;\n}\nvar Zn = 36e5, sr = 6e4, un = {\n timezone: /([Z+-].*)$/,\n timezoneZ: /^(Z)$/,\n timezoneHH: /^([+-]\\d{2})$/,\n timezoneHHMM: /^([+-]\\d{2}):?(\\d{2})$/\n};\nfunction Fn(e, n, a) {\n var t, r;\n if (!e || (t = un.timezoneZ.exec(e), t))\n return 0;\n var l;\n if (t = un.timezoneHH.exec(e), t)\n return l = parseInt(t[1], 10), qn(l) ? -(l * Zn) : NaN;\n if (t = un.timezoneHHMM.exec(e), t) {\n l = parseInt(t[1], 10);\n var c = parseInt(t[2], 10);\n return qn(l, c) ? (r = Math.abs(l) * Zn + c * sr, l > 0 ? -r : r) : NaN;\n }\n if (dr(e)) {\n n = new Date(n || Date.now());\n var y = a ? n : ur(n), D = Mn(y, e), S = a ? D : ir(n, D, e);\n return -S;\n }\n return NaN;\n}\nfunction ur(e) {\n return En(\n e.getFullYear(),\n e.getMonth(),\n e.getDate(),\n e.getHours(),\n e.getMinutes(),\n e.getSeconds(),\n e.getMilliseconds()\n );\n}\nfunction Mn(e, n) {\n var a = nr(e, n), t = En(\n a[0],\n a[1] - 1,\n a[2],\n a[3] % 24,\n a[4],\n a[5],\n 0\n ).getTime(), r = e.getTime(), l = r % 1e3;\n return r -= l >= 0 ? l : 1e3 + l, t - r;\n}\nfunction ir(e, n, a) {\n var t = e.getTime(), r = t - n, l = Mn(new Date(r), a);\n if (n === l)\n return n;\n r -= l - n;\n var c = Mn(new Date(r), a);\n return l === c ? l : Math.max(l, c);\n}\nfunction qn(e, n) {\n return -23 <= e && e <= 23 && (n == null || 0 <= n && n <= 59);\n}\nvar Xn = {};\nfunction dr(e) {\n if (Xn[e])\n return !0;\n try {\n return new Intl.DateTimeFormat(void 0, { timeZone: e }), Xn[e] = !0, !0;\n } catch {\n return !1;\n }\n}\nvar wa = /(Z|[+-]\\d{2}(?::?\\d{2})?| UTC| [a-zA-Z]+\\/[a-zA-Z_]+(?:\\/[a-zA-Z_]+)?)$/, dn = 36e5, Jn = 6e4, cr = 2, Ye = {\n dateTimePattern: /^([0-9W+-]+)(T| )(.*)/,\n datePattern: /^([0-9W+-]+)(.*)/,\n plainTime: /:/,\n // year tokens\n YY: /^(\\d{2})$/,\n YYY: [\n /^([+-]\\d{2})$/,\n // 0 additional digits\n /^([+-]\\d{3})$/,\n // 1 additional digit\n /^([+-]\\d{4})$/\n // 2 additional digits\n ],\n YYYY: /^(\\d{4})/,\n YYYYY: [\n /^([+-]\\d{4})/,\n // 0 additional digits\n /^([+-]\\d{5})/,\n // 1 additional digit\n /^([+-]\\d{6})/\n // 2 additional digits\n ],\n // date tokens\n MM: /^-(\\d{2})$/,\n DDD: /^-?(\\d{3})$/,\n MMDD: /^-?(\\d{2})-?(\\d{2})$/,\n Www: /^-?W(\\d{2})$/,\n WwwD: /^-?W(\\d{2})-?(\\d{1})$/,\n HH: /^(\\d{2}([.,]\\d*)?)$/,\n HHMM: /^(\\d{2}):?(\\d{2}([.,]\\d*)?)$/,\n HHMMSS: /^(\\d{2}):?(\\d{2}):?(\\d{2}([.,]\\d*)?)$/,\n // time zone tokens (to identify the presence of a tz)\n timeZone: wa\n};\nfunction $n(e, n) {\n if (arguments.length < 1)\n throw new TypeError(\"1 argument required, but only \" + arguments.length + \" present\");\n if (e === null)\n return /* @__PURE__ */ new Date(NaN);\n var a = n || {}, t = a.additionalDigits == null ? cr : er(a.additionalDigits);\n if (t !== 2 && t !== 1 && t !== 0)\n throw new RangeError(\"additionalDigits must be 0, 1 or 2\");\n if (e instanceof Date || typeof e == \"object\" && Object.prototype.toString.call(e) === \"[object Date]\")\n return new Date(e.getTime());\n if (typeof e == \"number\" || Object.prototype.toString.call(e) === \"[object Number]\")\n return new Date(e);\n if (!(typeof e == \"string\" || Object.prototype.toString.call(e) === \"[object String]\"))\n return /* @__PURE__ */ new Date(NaN);\n var r = fr(e), l = vr(r.date, t), c = l.year, y = l.restDateString, D = mr(y, c);\n if (isNaN(D))\n return /* @__PURE__ */ new Date(NaN);\n if (D) {\n var S = D.getTime(), g = 0, Y;\n if (r.time && (g = gr(r.time), isNaN(g)))\n return /* @__PURE__ */ new Date(NaN);\n if (r.timeZone || a.timeZone) {\n if (Y = Fn(r.timeZone || a.timeZone, new Date(S + g)), isNaN(Y))\n return /* @__PURE__ */ new Date(NaN);\n } else\n Y = Gn(new Date(S + g)), Y = Gn(new Date(S + g + Y));\n return new Date(S + g + Y);\n } else\n return /* @__PURE__ */ new Date(NaN);\n}\nfunction fr(e) {\n var n = {}, a = Ye.dateTimePattern.exec(e), t;\n if (a ? (n.date = a[1], t = a[3]) : (a = Ye.datePattern.exec(e), a ? (n.date = a[1], t = a[2]) : (n.date = null, t = e)), t) {\n var r = Ye.timeZone.exec(t);\n r ? (n.time = t.replace(r[1], \"\"), n.timeZone = r[1].trim()) : n.time = t;\n }\n return n;\n}\nfunction vr(e, n) {\n var a = Ye.YYY[n], t = Ye.YYYYY[n], r;\n if (r = Ye.YYYY.exec(e) || t.exec(e), r) {\n var l = r[1];\n return {\n year: parseInt(l, 10),\n restDateString: e.slice(l.length)\n };\n }\n if (r = Ye.YY.exec(e) || a.exec(e), r) {\n var c = r[1];\n return {\n year: parseInt(c, 10) * 100,\n restDateString: e.slice(c.length)\n };\n }\n return {\n year: null\n };\n}\nfunction mr(e, n) {\n if (n === null)\n return null;\n var a, t, r, l;\n if (e.length === 0)\n return t = /* @__PURE__ */ new Date(0), t.setUTCFullYear(n), t;\n if (a = Ye.MM.exec(e), a)\n return t = /* @__PURE__ */ new Date(0), r = parseInt(a[1], 10) - 1, Qn(n, r) ? (t.setUTCFullYear(n, r), t) : /* @__PURE__ */ new Date(NaN);\n if (a = Ye.DDD.exec(e), a) {\n t = /* @__PURE__ */ new Date(0);\n var c = parseInt(a[1], 10);\n return pr(n, c) ? (t.setUTCFullYear(n, 0, c), t) : /* @__PURE__ */ new Date(NaN);\n }\n if (a = Ye.MMDD.exec(e), a) {\n t = /* @__PURE__ */ new Date(0), r = parseInt(a[1], 10) - 1;\n var y = parseInt(a[2], 10);\n return Qn(n, r, y) ? (t.setUTCFullYear(n, r, y), t) : /* @__PURE__ */ new Date(NaN);\n }\n if (a = Ye.Www.exec(e), a)\n return l = parseInt(a[1], 10) - 1, ea(n, l) ? xn(n, l) : /* @__PURE__ */ new Date(NaN);\n if (a = Ye.WwwD.exec(e), a) {\n l = parseInt(a[1], 10) - 1;\n var D = parseInt(a[2], 10) - 1;\n return ea(n, l, D) ? xn(n, l, D) : /* @__PURE__ */ new Date(NaN);\n }\n return null;\n}\nfunction gr(e) {\n var n, a, t;\n if (n = Ye.HH.exec(e), n)\n return a = parseFloat(n[1].replace(\",\", \".\")), cn(a) ? a % 24 * dn : NaN;\n if (n = Ye.HHMM.exec(e), n)\n return a = parseInt(n[1], 10), t = parseFloat(n[2].replace(\",\", \".\")), cn(a, t) ? a % 24 * dn + t * Jn : NaN;\n if (n = Ye.HHMMSS.exec(e), n) {\n a = parseInt(n[1], 10), t = parseInt(n[2], 10);\n var r = parseFloat(n[3].replace(\",\", \".\"));\n return cn(a, t, r) ? a % 24 * dn + t * Jn + r * 1e3 : NaN;\n }\n return null;\n}\nfunction xn(e, n, a) {\n n = n || 0, a = a || 0;\n var t = /* @__PURE__ */ new Date(0);\n t.setUTCFullYear(e, 0, 4);\n var r = t.getUTCDay() || 7, l = n * 7 + a + 1 - r;\n return t.setUTCDate(t.getUTCDate() + l), t;\n}\nvar yr = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31], hr = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\nfunction Da(e) {\n return e % 400 === 0 || e % 4 === 0 && e % 100 !== 0;\n}\nfunction Qn(e, n, a) {\n if (n < 0 || n > 11)\n return !1;\n if (a != null) {\n if (a < 1)\n return !1;\n var t = Da(e);\n if (t && a > hr[n] || !t && a > yr[n])\n return !1;\n }\n return !0;\n}\nfunction pr(e, n) {\n if (n < 1)\n return !1;\n var a = Da(e);\n return !(a && n > 366 || !a && n > 365);\n}\nfunction ea(e, n, a) {\n return !(n < 0 || n > 52 || a != null && (a < 0 || a > 6));\n}\nfunction cn(e, n, a) {\n return !(e != null && (e < 0 || e >= 25) || n != null && (n < 0 || n >= 60) || a != null && (a < 0 || a >= 60));\n}\nvar Tn = { exports: {} }, An = { exports: {} };\n(function(e, n) {\n Object.defineProperty(n, \"__esModule\", {\n value: !0\n }), n.default = a;\n function a(t, r) {\n if (t == null)\n throw new TypeError(\"assign requires that input parameter not be null or undefined\");\n for (var l in r)\n Object.prototype.hasOwnProperty.call(r, l) && (t[l] = r[l]);\n return t;\n }\n e.exports = n.default;\n})(An, An.exports);\nvar br = An.exports;\n(function(e, n) {\n var a = xa.default;\n Object.defineProperty(n, \"__esModule\", {\n value: !0\n }), n.default = r;\n var t = a(br);\n function r(l) {\n return (0, t.default)({}, l);\n }\n e.exports = n.default;\n})(Tn, Tn.exports);\nvar kr = Tn.exports;\nconst wr = /* @__PURE__ */ Bn(kr);\nfunction Dr(e, n, a) {\n var t = $n(e, a), r = Fn(n, t, !0), l = new Date(t.getTime() - r), c = /* @__PURE__ */ new Date(0);\n return c.setFullYear(l.getUTCFullYear(), l.getUTCMonth(), l.getUTCDate()), c.setHours(l.getUTCHours(), l.getUTCMinutes(), l.getUTCSeconds(), l.getUTCMilliseconds()), c;\n}\nfunction Mr(e, n, a) {\n if (typeof e == \"string\" && !e.match(wa)) {\n var t = wr(a);\n return t.timeZone = n, $n(e, t);\n }\n var r = $n(e, a), l = En(\n r.getFullYear(),\n r.getMonth(),\n r.getDate(),\n r.getHours(),\n r.getMinutes(),\n r.getSeconds(),\n r.getMilliseconds()\n ).getTime(), c = Fn(n, new Date(l));\n return new Date(l + c);\n}\nfunction ta(e) {\n return (n) => new Intl.DateTimeFormat(e, { weekday: \"short\", timeZone: \"UTC\" }).format(/* @__PURE__ */ new Date(`2017-01-0${n}T00:00:00+00:00`)).slice(0, 2);\n}\nfunction $r(e) {\n return (n) => dt(/* @__PURE__ */ new Date(`2017-01-0${n}T00:00:00+00:00`), \"EEEEEE\", { locale: e });\n}\nconst Tr = (e, n, a) => {\n const t = [1, 2, 3, 4, 5, 6, 7];\n let r;\n if (e !== null)\n try {\n r = t.map($r(e));\n } catch {\n r = t.map(ta(n));\n }\n else\n r = t.map(ta(n));\n const l = r.slice(0, a), c = r.slice(a + 1, r.length);\n return [r[a]].concat(...c).concat(...l);\n}, Vn = (e, n) => {\n const a = [];\n for (let t = +e[0]; t <= +e[1]; t++)\n a.push({ value: +t, text: `${t}` });\n return n ? a.reverse() : a;\n}, Ma = (e, n, a) => {\n const t = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12].map((l) => {\n const c = l < 10 ? `0${l}` : l;\n return /* @__PURE__ */ new Date(`2017-${c}-01T00:00:00+00:00`);\n });\n if (e !== null)\n try {\n const l = a === \"long\" ? \"MMMM\" : \"MMM\";\n return t.map((c, y) => {\n const D = dt(c, l, { locale: e });\n return {\n text: D.charAt(0).toUpperCase() + D.substring(1),\n value: y\n };\n });\n } catch {\n }\n const r = new Intl.DateTimeFormat(n, { month: a, timeZone: \"UTC\" });\n return t.map((l, c) => {\n const y = r.format(l);\n return {\n text: y.charAt(0).toUpperCase() + y.substring(1),\n value: c\n };\n });\n}, Ar = (e) => [12, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11][e], Ae = (e) => {\n const n = m(e);\n return n != null && n.$el ? n == null ? void 0 : n.$el : n;\n}, Sr = (e) => Object.assign({ type: \"dot\" }, e), $a = (e) => Array.isArray(e) ? !!e[0] && !!e[1] : !1, Gt = {\n prop: (e) => `\"${e}\" prop must be enabled!`,\n dateArr: (e) => `You need to use array as \"model-value\" binding in order to support \"${e}\"`\n}, $e = (e) => e, na = (e) => e === 0 ? e : !e || isNaN(+e) ? null : +e, aa = (e) => e === null, _r = (e) => {\n if (e)\n return [...e.querySelectorAll(\"input, button, select, textarea, a[href]\")][0];\n}, Pr = (e) => {\n const n = [], a = (t) => t.filter((r) => r);\n for (let t = 0; t < e.length; t += 3) {\n const r = [e[t], e[t + 1], e[t + 2]];\n n.push(a(r));\n }\n return n;\n}, Rt = (e, n, a) => {\n const t = a ?? a === 0, r = n ?? n === 0;\n if (!t && !r)\n return !1;\n const l = +a, c = +n;\n return t && r ? +e > l || +e < c : t ? +e > l : r ? +e < c : !1;\n}, kt = (e, n) => Pr(e).map((a) => a.map((t) => {\n const { active: r, disabled: l, isBetween: c } = n(t);\n return {\n ...t,\n active: r,\n disabled: l,\n className: {\n dp__overlay_cell_active: r,\n dp__overlay_cell: !r,\n dp__overlay_cell_disabled: l,\n dp__overlay_cell_pad: !0,\n dp__overlay_cell_active_disabled: l && r,\n dp__cell_in_between: c\n }\n };\n})), tt = (e, n, a = !1) => {\n e && n.allowStopPropagation && (a && e.stopImmediatePropagation(), e.stopPropagation());\n}, ra = (e, n, a, t, r) => {\n const l = kn(e, n.slice(0, e.length), /* @__PURE__ */ new Date());\n return zt(l) && Ka(l) ? t || r ? l : we(l, {\n hours: +a.hours,\n minutes: +(a == null ? void 0 : a.minutes),\n seconds: +(a == null ? void 0 : a.seconds),\n milliseconds: 0\n }) : null;\n}, Cr = (e, n, a, t, r) => {\n const l = Array.isArray(a) ? a[0] : a;\n if (typeof n == \"string\")\n return ra(e, n, l, t, r);\n if (Array.isArray(n)) {\n let c = null;\n for (const y of n)\n if (c = ra(e, y, l, t, r), c)\n break;\n return c;\n }\n return typeof n == \"function\" ? n(e) : null;\n}, P = (e) => e ? new Date(e) : /* @__PURE__ */ new Date(), Rr = (e, n, a) => {\n if (n) {\n const r = (e.getMonth() + 1).toString().padStart(2, \"0\"), l = e.getDate().toString().padStart(2, \"0\"), c = e.getHours().toString().padStart(2, \"0\"), y = e.getMinutes().toString().padStart(2, \"0\"), D = a ? e.getSeconds().toString().padStart(2, \"0\") : \"00\";\n return `${e.getFullYear()}-${r}-${l}T${c}:${y}:${D}.000Z`;\n }\n const t = Date.UTC(\n e.getUTCFullYear(),\n e.getUTCMonth(),\n e.getUTCDate(),\n e.getUTCHours(),\n e.getUTCMinutes(),\n e.getUTCSeconds()\n );\n return new Date(t).toISOString();\n}, He = (e) => {\n let n = P(JSON.parse(JSON.stringify(e)));\n return n = ca(n, 0), n = fa(n, 0), n = va(n, 0), n = Cn(n, 0), n;\n}, nt = (e, n, a, t) => {\n let r = e ? P(e) : P();\n return (n || n === 0) && (r = ca(r, +n)), (a || a === 0) && (r = fa(r, +a)), (t || t === 0) && (r = va(r, +t)), Cn(r, 0);\n}, Pe = (e, n) => !e || !n ? !1 : _t(He(e), He(n)), ge = (e, n) => !e || !n ? !1 : pt(He(e), He(n)), Re = (e, n) => !e || !n ? !1 : Pt(He(e), He(n)), Hn = (e, n, a) => e != null && e[0] && (e != null && e[1]) ? Re(a, e[0]) && Pe(a, e[1]) : e != null && e[0] && n ? Re(a, e[0]) && Pe(a, n) || Pe(a, e[0]) && Re(a, n) : !1, We = (e) => {\n const n = we(new Date(e), { date: 1 });\n return He(n);\n}, fn = (e, n, a) => n && (a || a === 0) ? Object.fromEntries(\n [\"hours\", \"minutes\", \"seconds\"].map((t) => t === n ? [t, a] : [t, isNaN(+e[t]) ? void 0 : +e[t]])\n) : {\n hours: isNaN(+e.hours) ? void 0 : +e.hours,\n minutes: isNaN(+e.minutes) ? void 0 : +e.minutes,\n seconds: isNaN(+e.seconds) ? void 0 : +e.seconds\n}, vt = (e) => ({\n hours: qe(e),\n minutes: Xe(e),\n seconds: bt(e)\n}), Ta = (e, n) => {\n if (n) {\n const a = fe(P(n));\n if (a > e)\n return 12;\n if (a === e)\n return ve(P(n));\n }\n}, Aa = (e, n) => {\n if (n) {\n const a = fe(P(n));\n return a < e ? -1 : a === e ? ve(P(n)) : void 0;\n }\n}, wt = (e) => {\n if (e)\n return fe(P(e));\n}, Ge = (e, n) => n ? Dr(e, n) : e, Sa = (e, n) => n ? Mr(e, n) : e, la = (e) => e instanceof Date ? e : za(e), _a = (e, n) => {\n const a = Re(e, n) ? n : e, t = Re(n, e) ? n : e;\n return ma({ start: a, end: t });\n}, Or = (e) => {\n const n = ft(e, 1);\n return { month: ve(n), year: fe(n) };\n}, jt = (e, n, a) => {\n const t = ga(Ge(e, n), { weekStartsOn: +a }), r = ja(Ge(e, n), { weekStartsOn: +a });\n return [t, r];\n}, Pa = (e, n) => {\n const a = {\n hours: qe(P()),\n minutes: Xe(P()),\n seconds: n ? bt(P()) : 0\n };\n return Object.assign(a, e);\n}, et = (e, n, a) => [we(P(e), { date: 1 }), we(P(), { month: n, year: a, date: 1 })], Je = (e, n, a) => {\n let t = e ? P(e) : P();\n return (n || n === 0) && (t = Wa(t, n)), a && (t = ct(t, a)), t;\n}, Ca = (e, n, a, t, r) => {\n if (!t || r && !n || !r && !a)\n return !1;\n const l = r ? ft(e, 1) : Ct(e, 1), c = [ve(l), fe(l)];\n return r ? !Yr(...c, n) : !Nr(...c, a);\n}, Nr = (e, n, a) => Pe(...et(a, e, n)) || ge(...et(a, e, n)), Yr = (e, n, a) => Re(...et(a, e, n)) || ge(...et(a, e, n)), Ra = (e, n, a, t, r, l) => {\n if (typeof n == \"function\")\n return n(e);\n const c = a ? { locale: a } : void 0;\n return Array.isArray(e) ? `${dt(e[0], l, c)}${r && !e[1] ? \"\" : t}${e[1] ? dt(e[1], l, c) : \"\"}` : dt(e, l, c);\n}, yt = (e) => {\n if (e)\n return null;\n throw new Error(Gt.prop(\"partial-range\"));\n}, Ht = (e, n) => {\n if (n)\n return e();\n throw new Error(Gt.prop(\"range\"));\n}, Sn = (e) => Array.isArray(e) ? zt(e[0]) && (e[1] ? zt(e[1]) : !0) : e ? zt(e) : !1, Ir = (e) => we(P(), {\n hours: +e.hours || 0,\n minutes: +e.minutes || 0,\n seconds: +e.seconds || 0\n}), vn = (e, n, a, t) => {\n if (!e)\n return !0;\n if (t) {\n const r = a === \"max\" ? _t(e, n) : Pt(e, n), l = { seconds: 0, milliseconds: 0 };\n return r || pt(we(e, l), we(n, l));\n }\n return a === \"max\" ? e.getTime() <= n.getTime() : e.getTime() >= n.getTime();\n}, oa = (e, n, a, t, r) => {\n const l = e ? Ir(e) : P(n);\n return Array.isArray(t) ? vn(t[0], l, a, !!n) && vn(t[1], l, a, !!n) && r : vn(t, l, a, !!n) && r;\n}, mn = (e) => we(P(), vt(e)), Br = (e, n) => Array.isArray(e) ? e.map((a) => P(a)).filter((a) => fe(P(a)) === n).map((a) => ve(a)) : [], At = Nt({\n menuFocused: !1,\n shiftKeyInMenu: !1\n}), Oa = () => {\n const e = (t) => {\n At.menuFocused = t;\n }, n = (t) => {\n At.shiftKeyInMenu !== t && (At.shiftKeyInMenu = t);\n };\n return {\n control: W(() => ({ shiftKeyInMenu: At.shiftKeyInMenu, menuFocused: At.menuFocused })),\n setMenuFocused: e,\n setShiftKey: n\n };\n}, ke = Nt({\n monthYear: [],\n calendar: [],\n time: [],\n actionRow: [],\n selectionGrid: [],\n timePicker: {\n 0: [],\n 1: []\n },\n monthPicker: []\n}), gn = Z(null), Ut = Z(!1), yn = Z(!1), hn = Z(!1), pn = Z(!1), Oe = Z(0), _e = Z(0), lt = () => {\n const e = W(() => Ut.value ? [...ke.selectionGrid, ke.actionRow].filter((p) => p.length) : yn.value ? [\n ...ke.timePicker[0],\n ...ke.timePicker[1],\n pn.value ? [] : [gn.value],\n ke.actionRow\n ].filter((p) => p.length) : hn.value ? [...ke.monthPicker, ke.actionRow] : [ke.monthYear, ...ke.calendar, ke.time, ke.actionRow].filter((p) => p.length)), n = (p) => {\n Oe.value = p ? Oe.value + 1 : Oe.value - 1;\n let M = null;\n e.value[_e.value] && (M = e.value[_e.value][Oe.value]), M || (Oe.value = p ? Oe.value - 1 : Oe.value + 1);\n }, a = (p) => {\n if (_e.value === 0 && !p || _e.value === e.value.length && p)\n return;\n _e.value = p ? _e.value + 1 : _e.value - 1, e.value[_e.value] ? e.value[_e.value] && !e.value[_e.value][Oe.value] && Oe.value !== 0 && (Oe.value = e.value[_e.value].length - 1) : _e.value = p ? _e.value - 1 : _e.value + 1;\n }, t = (p) => {\n let M = null;\n e.value[_e.value] && (M = e.value[_e.value][Oe.value]), M ? M.focus({ preventScroll: !Ut.value }) : Oe.value = p ? Oe.value - 1 : Oe.value + 1;\n }, r = () => {\n n(!0), t(!0);\n }, l = () => {\n n(!1), t(!1);\n }, c = () => {\n a(!1), t(!0);\n }, y = () => {\n a(!0), t(!0);\n }, D = (p, M) => {\n ke[M] = p;\n }, S = (p, M) => {\n ke[M] = p;\n }, g = () => {\n Oe.value = 0, _e.value = 0;\n };\n return {\n buildMatrix: D,\n buildMultiLevelMatrix: S,\n setTimePickerBackRef: (p) => {\n gn.value = p;\n },\n setSelectionGrid: (p) => {\n Ut.value = p, g(), p || (ke.selectionGrid = []);\n },\n setTimePicker: (p, M = !1) => {\n yn.value = p, pn.value = M, g(), p || (ke.timePicker[0] = [], ke.timePicker[1] = []);\n },\n setTimePickerElements: (p, M = 0) => {\n ke.timePicker[M] = p;\n },\n arrowRight: r,\n arrowLeft: l,\n arrowUp: c,\n arrowDown: y,\n clearArrowNav: () => {\n ke.monthYear = [], ke.calendar = [], ke.time = [], ke.actionRow = [], ke.selectionGrid = [], ke.timePicker[0] = [], ke.timePicker[1] = [], Ut.value = !1, yn.value = !1, pn.value = !1, hn.value = !1, g(), gn.value = null;\n },\n setMonthPicker: (p) => {\n hn.value = p, g();\n },\n refSets: ke\n // exposed for testing\n };\n}, sa = (e) => ({\n menuAppearTop: \"dp-menu-appear-top\",\n menuAppearBottom: \"dp-menu-appear-bottom\",\n open: \"dp-slide-down\",\n close: \"dp-slide-up\",\n next: \"calendar-next\",\n previous: \"calendar-prev\",\n vNext: \"dp-slide-up\",\n vPrevious: \"dp-slide-down\",\n ...e ?? {}\n}), Er = (e) => ({\n toggleOverlay: \"Toggle overlay\",\n menu: \"Datepicker menu\",\n input: \"Datepicker input\",\n calendarWrap: \"Calendar wrapper\",\n calendarDays: \"Calendar days\",\n openTimePicker: \"Open time picker\",\n closeTimePicker: \"Close time Picker\",\n incrementValue: (n) => `Increment ${n}`,\n decrementValue: (n) => `Decrement ${n}`,\n openTpOverlay: (n) => `Open ${n} overlay`,\n amPmButton: \"Switch AM/PM mode\",\n openYearsOverlay: \"Open years overlay\",\n openMonthsOverlay: \"Open months overlay\",\n nextMonth: \"Next month\",\n prevMonth: \"Previous month\",\n nextYear: \"Next year\",\n prevYear: \"Previous year\",\n day: () => \"\",\n ...e ?? {}\n}), ua = (e) => e ? typeof e == \"boolean\" ? e ? 2 : 0 : +e >= 2 ? +e : 2 : 0, Fr = (e) => {\n const n = typeof e == \"object\" && e, a = {\n static: !0,\n solo: !1\n };\n if (!e)\n return { ...a, count: ua(!1) };\n const t = n ? e : {}, r = n ? t.count ?? !0 : e, l = ua(r);\n return Object.assign(a, t, { count: l });\n}, Vr = (e, n, a) => e || (typeof a == \"string\" ? a : n), Hr = (e) => typeof e == \"boolean\" ? e ? sa({}) : !1 : sa(e), Ur = (e) => {\n const n = {\n enterSubmit: !0,\n tabSubmit: !0,\n openMenu: !0,\n rangeSeparator: \" - \"\n };\n return typeof e == \"object\" ? { ...n, ...e ?? {}, enabled: !0 } : { ...n, enabled: e };\n}, Lr = (e) => ({\n months: [],\n years: [],\n times: { hours: [], minutes: [], seconds: [] },\n ...e ?? {}\n}), Wr = (e) => ({\n showSelect: !0,\n showCancel: !0,\n showNow: !1,\n showPreview: !0,\n ...e ?? {}\n}), zr = (e) => {\n const n = { input: !1 };\n return typeof e == \"object\" ? { ...n, ...e ?? {}, enabled: !0 } : {\n enabled: e,\n ...n\n };\n}, jr = (e) => ({ ...{\n allowStopPropagation: !0,\n closeOnScroll: !1,\n modeHeight: 255,\n allowPreventDefault: !1,\n closeOnClearValue: !0,\n closeOnAutoApply: !0,\n noSwipe: !1,\n keepActionRow: !1,\n onClickOutside: void 0\n}, ...e ?? {} }), Se = (e) => {\n const n = () => {\n const J = e.enableSeconds ? \":ss\" : \"\";\n return e.is24 ? `HH:mm${J}` : `hh:mm${J} aa`;\n }, a = () => e.format ? e.format : e.monthPicker ? \"MM/yyyy\" : e.timePicker ? n() : e.weekPicker ? \"MM/dd/yyyy\" : e.yearPicker ? \"yyyy\" : e.enableTimePicker ? `MM/dd/yyyy, ${n()}` : \"MM/dd/yyyy\", t = (J) => Pa(J, e.enableSeconds), r = () => e.range ? e.startTime && Array.isArray(e.startTime) ? [t(e.startTime[0]), t(e.startTime[1])] : null : e.startTime && !Array.isArray(e.startTime) ? t(e.startTime) : null, l = W(() => Fr(e.multiCalendars)), c = W(() => r()), y = W(() => Er(e.ariaLabels)), D = W(() => Lr(e.filters)), S = W(() => Hr(e.transitions)), g = W(() => Wr(e.actionRow)), Y = W(\n () => Vr(e.previewFormat, e.format, a())\n ), R = W(() => Ur(e.textInput)), G = W(() => zr(e.inline)), q = W(() => jr(e.config));\n return {\n defaultedTransitions: S,\n defaultedMultiCalendars: l,\n defaultedStartTime: c,\n defaultedAriaLabels: y,\n defaultedFilters: D,\n defaultedActionRow: g,\n defaultedPreviewFormat: Y,\n defaultedTextInput: R,\n defaultedInline: G,\n defaultedConfig: q,\n getDefaultPattern: a,\n getDefaultStartTime: r\n };\n}, Kr = (e, n, a) => {\n const t = Z(), { defaultedTextInput: r, getDefaultPattern: l } = Se(n), c = Z(\"\"), y = Kt(n, \"format\");\n gt(t, () => {\n e(\"internal-model-change\", t.value);\n }), gt(y, () => {\n v();\n });\n const D = (s) => Sa(s, n.timezone), S = (s) => Ge(s, n.timezone), g = (s, u) => Ra(\n s,\n n.format,\n n.formatLocale,\n r.value.rangeSeparator,\n n.modelAuto,\n u ?? l()\n ), Y = (s) => {\n const u = s ?? P();\n return n.modelType ? f(u) : {\n hours: qe(u),\n minutes: Xe(u),\n seconds: n.enableSeconds ? bt(u) : 0\n };\n }, R = (s) => n.modelType ? f(s) : { month: ve(s), year: fe(s) }, G = (s) => Array.isArray(s) ? Ht(\n () => [\n ct(P(), s[0]),\n s[1] ? ct(P(), s[1]) : yt(n.partialRange)\n ],\n n.range\n ) : ct(P(), +s), q = (s, u) => (typeof s == \"string\" || typeof s == \"number\") && n.modelType ? I(s) : u, J = (s) => Array.isArray(s) ? [\n q(\n s[0],\n nt(null, +s[0].hours, +s[0].minutes, s[0].seconds)\n ),\n q(\n s[1],\n nt(null, +s[1].hours, +s[1].minutes, s[1].seconds)\n )\n ] : q(s, nt(null, s.hours, s.minutes, s.seconds)), Q = (s) => Array.isArray(s) ? n.multiDates ? s.map((u) => q(u, Je(null, +u.month, +u.year))) : Ht(\n () => [\n q(s[0], Je(null, +s[0].month, +s[0].year)),\n q(\n s[1],\n s[1] ? Je(null, +s[1].month, +s[1].year) : yt(n.partialRange)\n )\n ],\n n.range\n ) : q(s, Je(null, +s.month, +s.year)), p = (s) => {\n if (Array.isArray(s))\n return s.map((u) => I(u));\n throw new Error(Gt.dateArr(\"multi-dates\"));\n }, M = (s) => {\n if (Array.isArray(s))\n return [P(s[0]), P(s[1])];\n throw new Error(Gt.dateArr(\"week-picker\"));\n }, E = (s) => n.modelAuto ? Array.isArray(s) ? [I(s[0]), I(s[1])] : n.autoApply ? [I(s)] : [I(s), null] : Array.isArray(s) ? Ht(\n () => [\n I(s[0]),\n s[1] ? I(s[1]) : yt(n.partialRange)\n ],\n n.range\n ) : I(s), z = () => {\n Array.isArray(t.value) && n.range && t.value.length === 1 && t.value.push(yt(n.partialRange));\n }, K = () => {\n const s = t.value;\n return [\n f(s[0]),\n s[1] ? f(s[1]) : yt(n.partialRange)\n ];\n }, _ = () => t.value[1] ? K() : f($e(t.value[0])), re = () => (t.value || []).map((s) => f(s)), x = () => (z(), n.modelAuto ? _() : n.multiDates ? re() : Array.isArray(t.value) ? Ht(() => K(), n.range) : f($e(t.value))), L = (s) => !s || Array.isArray(s) && !s.length ? null : n.timePicker ? J($e(s)) : n.monthPicker ? Q($e(s)) : n.yearPicker ? G($e(s)) : n.multiDates ? p($e(s)) : n.weekPicker ? M($e(s)) : E($e(s)), h = (s) => {\n const u = L(s);\n Sn($e(u)) ? (t.value = $e(u), v()) : (t.value = null, c.value = \"\");\n }, T = () => {\n const s = (u) => dt(u, r.value.format);\n return `${s(t.value[0])} ${r.value.rangeSeparator} ${t.value[1] ? s(t.value[1]) : \"\"}`;\n }, H = () => a.value && t.value ? Array.isArray(t.value) ? T() : dt(t.value, r.value.format) : g(t.value), ee = () => t.value ? n.multiDates ? t.value.map((s) => g(s)).join(\"; \") : r.value.enabled && typeof r.value.format == \"string\" ? H() : g(t.value) : \"\", v = () => {\n !n.format || typeof n.format == \"string\" || r.value.enabled && typeof r.value.format == \"string\" ? c.value = ee() : c.value = n.format(t.value);\n }, I = (s) => {\n if (n.utc) {\n const u = new Date(s);\n return n.utc === \"preserve\" ? new Date(u.getTime() + u.getTimezoneOffset() * 6e4) : u;\n }\n return n.modelType ? n.modelType === \"date\" || n.modelType === \"timestamp\" ? S(new Date(s)) : n.modelType === \"format\" && (typeof n.format == \"string\" || !n.format) ? kn(s, l(), /* @__PURE__ */ new Date()) : S(kn(s, n.modelType, /* @__PURE__ */ new Date())) : S(new Date(s));\n }, f = (s) => s ? n.utc ? Rr(s, n.utc === \"preserve\", n.enableSeconds) : n.modelType ? n.modelType === \"timestamp\" ? +D(s) : n.modelType === \"format\" && (typeof n.format == \"string\" || !n.format) ? g(D(s)) : g(D(s), n.modelType) : D(s) : \"\", k = (s, u = !1) => {\n if (e(\"update:model-value\", s), n.emitTimezone && u) {\n const C = Array.isArray(s) ? s.map((O) => Ge($e(O)), n.emitTimezone) : Ge($e(s), n.emitTimezone);\n e(\"update:model-timezone-value\", C);\n }\n }, d = (s) => Array.isArray(t.value) ? n.multiDates ? t.value.map((u) => s(u)) : [\n s(t.value[0]),\n t.value[1] ? s(t.value[1]) : yt(n.partialRange)\n ] : s($e(t.value)), o = (s) => k($e(d(s)));\n return {\n inputValue: c,\n internalModelValue: t,\n checkBeforeEmit: () => t.value ? n.range ? n.partialRange ? t.value.length >= 1 : t.value.length === 2 : !!t.value : !1,\n parseExternalModelValue: h,\n formatInputValue: v,\n emitModelValue: () => (v(), n.monthPicker ? o(R) : n.timePicker ? o(Y) : n.yearPicker ? o(fe) : n.weekPicker ? k(t.value, !0) : k(x(), !0))\n };\n}, Gr = (e, n) => {\n const { defaultedFilters: a } = Se(e), { validateMonthYearInRange: t } = Et(e), r = (S, g) => {\n let Y = S;\n return a.value.months.includes(ve(Y)) ? (Y = g ? ft(S, 1) : Ct(S, 1), r(Y, g)) : Y;\n }, l = (S, g) => {\n let Y = S;\n return a.value.years.includes(fe(Y)) ? (Y = g ? ya(S, 1) : ha(S, 1), l(Y, g)) : Y;\n }, c = (S, g = !1) => {\n const Y = we(/* @__PURE__ */ new Date(), { month: e.month, year: e.year });\n let R = S ? ft(Y, 1) : Ct(Y, 1);\n e.disableYearSelect && (R = ct(R, e.year));\n let G = ve(R), q = fe(R);\n a.value.months.includes(G) && (R = r(R, S), G = ve(R), q = fe(R)), a.value.years.includes(q) && (R = l(R, S), q = fe(R)), t(G, q, S, e.preventMinMaxNavigation) && y(G, q, g);\n }, y = (S, g, Y) => {\n n(\"update-month-year\", { month: S, year: g, fromNav: Y });\n }, D = W(() => (S) => Ca(\n we(/* @__PURE__ */ new Date(), { month: e.month, year: e.year }),\n e.maxDate,\n e.minDate,\n e.preventMinMaxNavigation,\n S\n ));\n return { handleMonthYearChange: c, isDisabled: D, updateMonthYear: y };\n};\nvar ht = /* @__PURE__ */ ((e) => (e.center = \"center\", e.left = \"left\", e.right = \"right\", e))(ht || {}), Le = /* @__PURE__ */ ((e) => (e.month = \"month\", e.year = \"year\", e))(Le || {}), ut = /* @__PURE__ */ ((e) => (e.top = \"top\", e.bottom = \"bottom\", e))(ut || {}), mt = /* @__PURE__ */ ((e) => (e.header = \"header\", e.calendar = \"calendar\", e.timePicker = \"timePicker\", e))(mt || {}), je = /* @__PURE__ */ ((e) => (e.month = \"month\", e.year = \"year\", e.calendar = \"calendar\", e.time = \"time\", e.minutes = \"minutes\", e.hours = \"hours\", e.seconds = \"seconds\", e))(je || {});\nconst Zr = ({\n menuRef: e,\n menuRefInner: n,\n inputRef: a,\n pickerWrapperRef: t,\n inline: r,\n emit: l,\n props: c,\n slots: y\n}) => {\n const D = Z({}), S = Z(!1), g = Z({\n top: \"0\",\n left: \"0\"\n }), Y = Z(!1), R = Kt(c, \"teleportCenter\");\n gt(R, () => {\n g.value = JSON.parse(JSON.stringify({})), z();\n });\n const G = (f) => {\n if (c.teleport) {\n const k = f.getBoundingClientRect();\n return {\n left: k.left + window.scrollX,\n top: k.top + window.scrollY\n };\n }\n return { top: 0, left: 0 };\n }, q = (f, k) => {\n g.value.left = `${f + k - D.value.width}px`;\n }, J = (f) => {\n g.value.left = `${f}px`;\n }, Q = (f, k) => {\n c.position === ht.left && J(f), c.position === ht.right && q(f, k), c.position === ht.center && (g.value.left = `${f + k / 2 - D.value.width / 2}px`);\n }, p = (f) => {\n const { width: k, height: d } = f.getBoundingClientRect(), { top: o, left: $ } = c.altPosition ? c.altPosition(f) : G(f);\n return { top: +o, left: +$, width: k, height: d };\n }, M = () => {\n g.value.left = \"50%\", g.value.top = \"50%\", g.value.transform = \"translate(-50%, -50%)\", g.value.position = \"fixed\", delete g.value.opacity;\n }, E = () => {\n const f = Ae(a), { top: k, left: d, transform: o } = c.altPosition(f);\n g.value = { top: `${k}px`, left: `${d}px`, transform: o ?? \"\" };\n }, z = (f = !0) => {\n var k;\n if (!r.value.enabled) {\n if (R.value)\n return M();\n if (c.altPosition !== null)\n return E();\n if (f) {\n const d = c.teleport ? (k = n.value) == null ? void 0 : k.$el : e.value;\n d && (D.value = d.getBoundingClientRect()), l(\"recalculate-position\");\n }\n return T();\n }\n }, K = ({ inputEl: f, left: k, width: d }) => {\n window.screen.width > 768 && !S.value && Q(k, d), x(f);\n }, _ = (f) => {\n const { top: k, left: d, height: o, width: $ } = p(f);\n g.value.top = `${o + k + +c.offset}px`, Y.value = !1, S.value || (g.value.left = `${d + $ / 2 - D.value.width / 2}px`), K({ inputEl: f, left: d, width: $ });\n }, re = (f) => {\n const { top: k, left: d, width: o } = p(f);\n g.value.top = `${k - +c.offset - D.value.height}px`, Y.value = !0, K({ inputEl: f, left: d, width: o });\n }, x = (f) => {\n if (c.autoPosition) {\n const { left: k, width: d } = p(f), { left: o, right: $ } = D.value;\n if (!S.value) {\n if (Math.abs(o) !== Math.abs($)) {\n if (o <= 0)\n return S.value = !0, J(k);\n if ($ >= document.documentElement.clientWidth)\n return S.value = !0, q(k, d);\n }\n return Q(k, d);\n }\n }\n }, L = () => {\n const f = Ae(a);\n if (f) {\n const { height: k } = D.value, { top: d, height: o } = f.getBoundingClientRect(), X = window.innerHeight - d - o, s = d;\n return k <= X ? ut.bottom : k > X && k <= s ? ut.top : X >= s ? ut.bottom : ut.top;\n }\n return ut.bottom;\n }, h = (f) => L() === ut.bottom ? _(f) : re(f), T = () => {\n const f = Ae(a);\n if (f)\n return c.autoPosition ? h(f) : _(f);\n }, H = function(f) {\n if (f) {\n const k = f.scrollHeight > f.clientHeight, o = window.getComputedStyle(f).overflowY.indexOf(\"hidden\") !== -1;\n return k && !o;\n }\n return !0;\n }, ee = function(f) {\n return !f || f === document.body || f.nodeType === Node.DOCUMENT_FRAGMENT_NODE ? window : H(f) ? f : ee(f.parentNode);\n }, v = (f) => {\n if (f)\n switch (c.position) {\n case ht.left:\n return { left: 0, transform: \"translateX(0)\" };\n case ht.right:\n return { left: `${f.width}px`, transform: \"translateX(-100%)\" };\n default:\n return { left: `${f.width / 2}px`, transform: \"translateX(-50%)\" };\n }\n return {};\n };\n return {\n openOnTop: Y,\n menuStyle: g,\n xCorrect: S,\n setMenuPosition: z,\n getScrollableParent: ee,\n shadowRender: (f, k) => {\n var C, O, A;\n const d = document.createElement(\"div\"), o = (C = Ae(a)) == null ? void 0 : C.getBoundingClientRect();\n d.setAttribute(\"id\", \"dp--temp-container\");\n const $ = (O = t.value) != null && O.clientWidth ? t.value : document.body;\n $.append(d);\n const X = document.getElementById(\"dp--temp-container\"), s = v(o), u = Fa(\n f,\n {\n ...k,\n shadow: !0,\n style: { opacity: 0, position: \"absolute\", ...s }\n },\n Object.fromEntries(Object.keys(y).map((te) => [te, y[te]]))\n );\n jn(u, X), D.value = (A = u.el) == null ? void 0 : A.getBoundingClientRect(), jn(null, X), $.removeChild(X);\n }\n };\n}, st = [\n { name: \"clock-icon\", use: [\"time\", \"calendar\", \"shared\"] },\n { name: \"arrow-left\", use: [\"month-year\", \"calendar\", \"shared\"] },\n { name: \"arrow-right\", use: [\"month-year\", \"calendar\", \"shared\"] },\n { name: \"arrow-up\", use: [\"time\", \"calendar\", \"month-year\", \"shared\"] },\n { name: \"arrow-down\", use: [\"time\", \"calendar\", \"month-year\", \"shared\"] },\n { name: \"calendar-icon\", use: [\"month-year\", \"time\", \"calendar\", \"shared\"] },\n { name: \"day\", use: [\"calendar\", \"shared\"] },\n { name: \"month-overlay-value\", use: [\"calendar\", \"month-year\", \"shared\"] },\n { name: \"year-overlay-value\", use: [\"calendar\", \"month-year\", \"shared\"] },\n { name: \"year-overlay\", use: [\"month-year\", \"shared\"] },\n { name: \"month-overlay\", use: [\"month-year\", \"shared\"] },\n { name: \"month-overlay-header\", use: [\"month-year\", \"shared\"] },\n { name: \"year-overlay-header\", use: [\"month-year\", \"shared\"] },\n { name: \"hours-overlay-value\", use: [\"calendar\", \"time\", \"shared\"] },\n { name: \"minutes-overlay-value\", use: [\"calendar\", \"time\", \"shared\"] },\n { name: \"seconds-overlay-value\", use: [\"calendar\", \"time\", \"shared\"] },\n { name: \"hours\", use: [\"calendar\", \"time\", \"shared\"] },\n { name: \"minutes\", use: [\"calendar\", \"time\", \"shared\"] },\n { name: \"month\", use: [\"calendar\", \"month-year\", \"shared\"] },\n { name: \"year\", use: [\"calendar\", \"month-year\", \"shared\"] },\n { name: \"action-buttons\", use: [\"action\"] },\n { name: \"action-preview\", use: [\"action\"] },\n { name: \"calendar-header\", use: [\"calendar\", \"shared\"] },\n { name: \"marker-tooltip\", use: [\"calendar\", \"shared\"] },\n { name: \"action-extra\", use: [\"menu\"] },\n { name: \"time-picker-overlay\", use: [\"calendar\", \"time\", \"shared\"] },\n { name: \"am-pm-button\", use: [\"calendar\", \"time\", \"shared\"] },\n { name: \"left-sidebar\", use: [\"menu\"] },\n { name: \"right-sidebar\", use: [\"menu\"] },\n { name: \"month-year\", use: [\"month-year\", \"shared\"] },\n { name: \"time-picker\", use: [\"menu\", \"shared\"] },\n { name: \"action-row\", use: [\"action\"] },\n { name: \"marker\", use: [\"calendar\", \"shared\"] }\n], qr = [{ name: \"trigger\" }, { name: \"input-icon\" }, { name: \"clear-icon\" }, { name: \"dp-input\" }], Xr = {\n all: () => st,\n monthYear: () => st.filter((e) => e.use.includes(\"month-year\")),\n input: () => qr,\n timePicker: () => st.filter((e) => e.use.includes(\"time\")),\n action: () => st.filter((e) => e.use.includes(\"action\")),\n calendar: () => st.filter((e) => e.use.includes(\"calendar\")),\n menu: () => st.filter((e) => e.use.includes(\"menu\")),\n shared: () => st.filter((e) => e.use.includes(\"shared\"))\n}, ze = (e, n, a) => {\n const t = [];\n return Xr[n]().forEach((r) => {\n e[r.name] && t.push(r.name);\n }), a != null && a.length && a.forEach((r) => {\n r.slot && t.push(r.slot);\n }), t;\n}, Bt = (e) => {\n const n = W(() => (t) => e.value ? t ? e.value.open : e.value.close : \"\"), a = W(() => (t) => e.value ? t ? e.value.menuAppearTop : e.value.menuAppearBottom : \"\");\n return { transitionName: n, showTransition: !!e.value, menuTransition: a };\n}, Zt = (e, n) => {\n const a = Z([{ month: ve(P()), year: fe(P()) }]), t = Nt({\n hours: e.range ? [qe(P()), qe(P())] : qe(P()),\n minutes: e.range ? [Xe(P()), Xe(P())] : Xe(P()),\n seconds: e.range ? [0, 0] : 0\n }), r = W({\n get: () => e.internalModelValue,\n set: (y) => {\n !e.readonly && !e.disabled && n(\"update:internal-model-value\", y);\n }\n }), l = W(\n () => (y) => a.value[y] ? a.value[y].month : 0\n ), c = W(\n () => (y) => a.value[y] ? a.value[y].year : 0\n );\n return {\n calendars: a,\n time: t,\n modelValue: r,\n month: l,\n year: c\n };\n}, Jr = (e, n) => {\n const { defaultedMultiCalendars: a } = Se(n), { isDisabled: t, matchDate: r } = Et(n), l = Z(null), c = Z(P()), y = (o) => {\n !o.current && n.hideOffsetDates || (l.value = o.value);\n }, D = () => {\n l.value = null;\n }, S = (o) => Array.isArray(e.value) && n.range && e.value[0] && l.value ? o ? Re(l.value, e.value[0]) : Pe(l.value, e.value[0]) : !0, g = (o, $) => {\n const X = () => e.value ? $ ? e.value[0] || null : e.value[1] : null, s = e.value && Array.isArray(e.value) ? X() : null;\n return ge(P(o.value), s);\n }, Y = (o) => {\n const $ = Array.isArray(e.value) ? e.value[0] : null;\n return o ? !Pe(l.value ?? null, $) : !0;\n }, R = (o, $ = !0) => (n.range || n.weekPicker) && Array.isArray(e.value) && e.value.length === 2 ? n.hideOffsetDates && !o.current ? !1 : ge(P(o.value), e.value[$ ? 0 : 1]) : n.range ? g(o, $) && Y($) || ge(o.value, Array.isArray(e.value) ? e.value[0] : null) && S($) : !1, G = (o, $, X) => Array.isArray(e.value) && e.value[0] && e.value.length === 1 ? o ? !1 : X ? Re(e.value[0], $.value) : Pe(e.value[0], $.value) : !1, q = (o) => !e.value || n.hideOffsetDates && !o.current ? !1 : n.range ? n.modelAuto && Array.isArray(e.value) ? ge(o.value, e.value[0] ? e.value[0] : c.value) : !1 : n.multiDates && Array.isArray(e.value) ? e.value.some(($) => ge($, o.value)) : ge(o.value, e.value ? e.value : c.value), J = (o) => {\n if (n.autoRange || n.weekPicker) {\n if (l.value) {\n if (n.hideOffsetDates && !o.current)\n return !1;\n const $ = it(l.value, +n.autoRange), X = jt(P(l.value), n.timezone, n.weekStart);\n return n.weekPicker ? ge(X[1], P(o.value)) : ge($, P(o.value));\n }\n return !1;\n }\n return !1;\n }, Q = (o) => {\n if (n.autoRange || n.weekPicker) {\n if (l.value) {\n const $ = it(l.value, +n.autoRange);\n if (n.hideOffsetDates && !o.current)\n return !1;\n const X = jt(P(l.value), n.timezone, n.weekStart);\n return n.weekPicker ? Re(o.value, X[0]) && Pe(o.value, X[1]) : Re(o.value, l.value) && Pe(o.value, $);\n }\n return !1;\n }\n return !1;\n }, p = (o) => {\n if (n.autoRange || n.weekPicker) {\n if (l.value) {\n if (n.hideOffsetDates && !o.current)\n return !1;\n const $ = jt(P(l.value), n.timezone, n.weekStart);\n return n.weekPicker ? ge($[0], o.value) : ge(l.value, o.value);\n }\n return !1;\n }\n return !1;\n }, M = (o) => Hn(e.value, l.value, o.value), E = () => n.modelAuto && Array.isArray(n.internalModelValue) ? !!n.internalModelValue[0] : !1, z = () => n.modelAuto ? $a(n.internalModelValue) : !0, K = (o) => {\n if (Array.isArray(e.value) && e.value.length || n.weekPicker)\n return !1;\n const $ = n.range ? !R(o) && !R(o, !1) : !0;\n return !t(o.value) && !q(o) && !(!o.current && n.hideOffsetDates) && $;\n }, _ = (o) => n.range ? n.modelAuto ? E() && q(o) : !1 : q(o), re = (o) => {\n var $;\n return n.highlight ? r(\n o.value,\n ($ = n.arrMapValues) != null && $.highlightedDates ? n.arrMapValues.highlightedDates : n.highlight\n ) : !1;\n }, x = (o) => t(o.value) && n.highlightDisabledDays === !1, L = (o) => {\n var $;\n return ($ = n.highlightWeekDays) == null ? void 0 : $.includes(o.value.getDay());\n }, h = (o) => (n.range || n.weekPicker) && (!(a.value.count > 0) || o.current) && z() && !(!o.current && n.hideOffsetDates) && !q(o) ? M(o) : !1, T = (o) => {\n const { isRangeStart: $, isRangeEnd: X } = v(o), s = n.range ? $ || X : !1;\n return {\n dp__cell_offset: !o.current,\n dp__pointer: !n.disabled && !(!o.current && n.hideOffsetDates) && !t(o.value),\n dp__cell_disabled: t(o.value),\n dp__cell_highlight: !x(o) && (re(o) || L(o)) && !_(o) && !s,\n dp__cell_highlight_active: !x(o) && (re(o) || L(o)) && _(o),\n dp__today: !n.noToday && ge(o.value, c.value) && o.current\n };\n }, H = (o) => ({\n dp__active_date: _(o),\n dp__date_hover: K(o)\n }), ee = (o) => ({\n ...I(o),\n ...f(o),\n dp__range_between_week: h(o) && n.weekPicker\n }), v = (o) => {\n const $ = a.value.count > 0 ? o.current && R(o) && z() : R(o) && z(), X = a.value.count > 0 ? o.current && R(o, !1) && z() : R(o, !1) && z();\n return { isRangeStart: $, isRangeEnd: X };\n }, I = (o) => {\n const { isRangeStart: $, isRangeEnd: X } = v(o);\n return {\n dp__range_start: $,\n dp__range_end: X,\n dp__range_between: h(o) && !n.weekPicker,\n dp__date_hover_start: G(K(o), o, !0),\n dp__date_hover_end: G(K(o), o, !1)\n };\n }, f = (o) => ({\n ...I(o),\n dp__cell_auto_range: Q(o),\n dp__cell_auto_range_start: p(o),\n dp__cell_auto_range_end: J(o)\n }), k = (o) => n.range ? n.autoRange ? f(o) : n.modelAuto ? { ...H(o), ...I(o) } : I(o) : n.weekPicker ? ee(o) : H(o);\n return {\n setHoverDate: y,\n clearHoverDate: D,\n getDayClassData: (o) => n.hideOffsetDates && !o.current ? {} : {\n ...T(o),\n ...k(o),\n [n.dayClass ? n.dayClass(o.value) : \"\"]: !0,\n [n.calendarCellClassName]: !!n.calendarCellClassName\n }\n };\n}, Et = (e) => {\n const { defaultedFilters: n } = Se(e), a = () => {\n if (e.timezone)\n return e.timezone;\n if (e.utc)\n return \"UTC\";\n }, t = (h) => {\n const T = He(r(P(h))).toISOString(), [H] = T.split(\"T\");\n return H;\n }, r = (h) => e.utc === \"preserve\" ? Sa(h, a()) : Ge(h, a()), l = (h) => {\n var $;\n const T = e.maxDate ? Re(r(h), r(P(e.maxDate))) : !1, H = e.minDate ? Pe(r(h), r(P(e.minDate))) : !1, ee = S(\n r(h),\n ($ = e.arrMapValues) != null && $.disabledDates ? e.arrMapValues.disabledDates : e.disabledDates\n ), I = n.value.months.map((X) => +X).includes(ve(h)), f = e.disabledWeekDays.length ? e.disabledWeekDays.some((X) => +X === Ga(h)) : !1, k = Y(h), d = fe(h), o = d < +e.yearRange[0] || d > +e.yearRange[1];\n return !(T || H || ee || I || o || f || k);\n }, c = (h, T) => Pe(...et(e.minDate, h, T)) || ge(...et(e.minDate, h, T)), y = (h, T) => Re(...et(e.maxDate, h, T)) || ge(...et(e.maxDate, h, T)), D = (h, T, H) => {\n let ee = !1;\n return e.maxDate && H && y(h, T) && (ee = !0), e.minDate && !H && c(h, T) && (ee = !0), ee;\n }, S = (h, T) => h ? T instanceof Map ? !!T.get(t(h)) : Array.isArray(T) ? T.some((H) => ge(r(P(H)), r(h))) : T ? T(P(JSON.parse(JSON.stringify(h)))) : !1 : !0, g = (h, T, H, ee) => {\n let v = !1;\n return ee ? e.minDate && e.maxDate ? v = D(h, T, H) : (e.minDate && c(h, T) || e.maxDate && y(h, T)) && (v = !0) : v = !0, v;\n }, Y = (h) => {\n var T, H, ee, v, I;\n return Array.isArray(e.allowedDates) && !((T = e.allowedDates) != null && T.length) ? !0 : (H = e.arrMapValues) != null && H.allowedDates ? !S(h, (ee = e.arrMapValues) == null ? void 0 : ee.allowedDates) : (v = e.allowedDates) != null && v.length ? !((I = e.allowedDates) != null && I.some((f) => ge(r(P(f)), r(h)))) : !1;\n }, R = (h) => !l(h), G = (h) => e.noDisabledRange ? !ma({ start: h[0], end: h[1] }).some((H) => R(H)) : !0, q = (h, T, H = 0) => {\n if (Array.isArray(T) && T[H]) {\n const ee = Za(h, T[H]), v = _a(T[H], h), I = v.length === 1 ? 0 : v.filter((k) => R(k)).length, f = Math.abs(ee) - I;\n if (e.minRange && e.maxRange)\n return f >= +e.minRange && f <= +e.maxRange;\n if (e.minRange)\n return f >= +e.minRange;\n if (e.maxRange)\n return f <= +e.maxRange;\n }\n return !0;\n }, J = (h) => new Map(h.map((T) => [t(T), !0])), Q = (h) => Array.isArray(h) && h.length > 0, p = () => {\n const h = {\n disabledDates: null,\n allowedDates: null,\n highlightedDates: null\n };\n return Q(e.allowedDates) && (h.allowedDates = J(e.allowedDates)), Q(e.highlight) && (h.highlightedDates = J(e.highlight)), Q(e.disabledDates) && (h.disabledDates = J(e.disabledDates)), h;\n }, M = () => !e.enableTimePicker || e.monthPicker || e.yearPicker || e.ignoreTimeValidation, E = (h) => Array.isArray(h) ? [h[0] ? mn(h[0]) : null, h[1] ? mn(h[1]) : null] : mn(h), z = (h, T, H) => h.find(\n (ee) => +ee.hours === qe(T) && ee.minutes === \"*\" ? !0 : +ee.minutes === Xe(T)\n ) && H, K = (h, T, H) => {\n const [ee, v] = h, [I, f] = T;\n return !z(ee, I, H) && !z(v, f, H) && H;\n }, _ = (h, T) => {\n const H = Array.isArray(T) ? T : [T];\n return Array.isArray(e.disabledTimes) ? Array.isArray(e.disabledTimes[0]) ? K(e.disabledTimes, H, h) : !H.some((ee) => z(e.disabledTimes, ee, h)) : h;\n }, re = (h, T) => {\n const H = Array.isArray(T) ? [vt(T[0]), T[1] ? vt(T[1]) : void 0] : vt(T), ee = !e.disabledTimes(H);\n return h && ee;\n }, x = (h, T) => e.disabledTimes ? Array.isArray(e.disabledTimes) ? _(T, h) : re(T, h) : T;\n return {\n isDisabled: R,\n validateDate: l,\n validateMonthYearInRange: g,\n isDateRangeAllowed: G,\n checkMinMaxRange: q,\n matchDate: S,\n mapDatesArrToMap: p,\n isValidTime: (h) => {\n let T = !0;\n if (!h || M())\n return !0;\n const H = !e.minDate && !e.maxDate ? E(h) : h;\n return (e.maxTime || e.maxDate) && (T = oa(e.maxTime, e.maxDate, \"max\", $e(H), T)), (e.minTime || e.minDate) && (T = oa(e.minTime, e.minDate, \"min\", $e(H), T)), x(h, T);\n }\n };\n}, qt = () => {\n const e = W(() => (t, r) => t == null ? void 0 : t.includes(r)), n = W(() => (t, r) => t.count ? t.solo ? !0 : r === 0 : !0), a = W(() => (t, r) => t.count ? t.solo ? !0 : r === t.count - 1 : !0);\n return { hideNavigationButtons: e, showLeftIcon: n, showRightIcon: a };\n}, xr = (e, n, a) => {\n const t = Z(0), r = Nt({\n // monthYearInput: !!props.timePicker,\n [mt.timePicker]: !e.enableTimePicker || e.timePicker || e.monthPicker,\n [mt.calendar]: !1,\n [mt.header]: !1\n }), l = (g) => {\n var Y;\n (Y = e.flow) != null && Y.length && (r[g] = !0, Object.keys(r).filter((R) => !r[R]).length || S());\n }, c = () => {\n var g;\n (g = e.flow) != null && g.length && t.value !== -1 && (t.value += 1, n(\"flow-step\", t.value), S());\n }, y = () => {\n t.value = -1;\n }, D = (g, Y, ...R) => {\n e.flow[t.value] === g && a.value && a.value[Y](...R);\n }, S = () => {\n D(je.month, \"toggleMonthPicker\", !0), D(je.year, \"toggleYearPicker\", !0), D(je.calendar, \"toggleTimePicker\", !1, !0), D(je.time, \"toggleTimePicker\", !0, !0);\n const g = e.flow[t.value];\n (g === je.hours || g === je.minutes || g === je.seconds) && D(g, \"toggleTimePicker\", !0, !0, g);\n };\n return { childMount: l, updateFlowStep: c, resetFlow: y, flowStep: t };\n}, Xt = {\n multiCalendars: { type: [Boolean, Number, String, Object], default: void 0 },\n modelValue: { type: [String, Date, Array, Object, Number], default: null },\n modelType: { type: String, default: null },\n position: { type: String, default: \"center\" },\n dark: { type: Boolean, default: !1 },\n format: {\n type: [String, Function],\n default: () => null\n },\n closeOnScroll: { type: Boolean, default: !1 },\n autoPosition: { type: Boolean, default: !0 },\n closeOnAutoApply: { type: Boolean, default: !0 },\n altPosition: { type: Function, default: null },\n transitions: { type: [Boolean, Object], default: !0 },\n formatLocale: { type: Object, default: null },\n utc: { type: [Boolean, String], default: !1 },\n ariaLabels: { type: Object, default: () => ({}) },\n offset: { type: [Number, String], default: 10 },\n hideNavigation: { type: Array, default: () => [] },\n timezone: { type: String, default: null },\n emitTimezone: { type: String, default: null },\n vertical: { type: Boolean, default: !1 },\n disableMonthYearSelect: { type: Boolean, default: !1 },\n disableYearSelect: { type: Boolean, default: !1 },\n menuClassName: { type: String, default: null },\n dayClass: { type: Function, default: null },\n yearRange: { type: Array, default: () => [1900, 2100] },\n calendarCellClassName: { type: String, default: null },\n enableTimePicker: { type: Boolean, default: !0 },\n autoApply: { type: Boolean, default: !1 },\n disabledDates: { type: [Array, Function], default: () => [] },\n monthNameFormat: { type: String, default: \"short\" },\n startDate: { type: [Date, String], default: null },\n startTime: { type: [Object, Array], default: null },\n hideOffsetDates: { type: Boolean, default: !1 },\n autoRange: { type: [Number, String], default: null },\n noToday: { type: Boolean, default: !1 },\n disabledWeekDays: { type: Array, default: () => [] },\n allowedDates: { type: Array, default: null },\n nowButtonLabel: { type: String, default: \"Now\" },\n markers: { type: Array, default: () => [] },\n modeHeight: { type: [Number, String], default: 255 },\n escClose: { type: Boolean, default: !0 },\n spaceConfirm: { type: Boolean, default: !0 },\n monthChangeOnArrows: { type: Boolean, default: !0 },\n presetDates: { type: Array, default: () => [] },\n flow: { type: Array, default: () => [] },\n partialFlow: { type: Boolean, default: !1 },\n preventMinMaxNavigation: { type: Boolean, default: !1 },\n minRange: { type: [Number, String], default: null },\n maxRange: { type: [Number, String], default: null },\n multiDatesLimit: { type: [Number, String], default: null },\n reverseYears: { type: Boolean, default: !1 },\n keepActionRow: { type: Boolean, default: !1 },\n weekPicker: { type: Boolean, default: !1 },\n filters: { type: Object, default: () => ({}) },\n arrowNavigation: { type: Boolean, default: !1 },\n disableTimeRangeValidation: { type: Boolean, default: !1 },\n highlight: {\n type: [Array, Function],\n default: null\n },\n highlightWeekDays: {\n type: Array,\n default: null\n },\n highlightDisabledDays: { type: Boolean, default: !1 },\n teleport: { type: [String, Boolean], default: null },\n teleportCenter: { type: Boolean, default: !1 },\n locale: { type: String, default: \"en-Us\" },\n weekNumName: { type: String, default: \"W\" },\n weekStart: { type: [Number, String], default: 1 },\n weekNumbers: {\n type: [String, Function],\n default: null\n },\n calendarClassName: { type: String, default: null },\n noSwipe: { type: Boolean, default: !1 },\n monthChangeOnScroll: { type: [Boolean, String], default: !0 },\n dayNames: {\n type: [Function, Array],\n default: null\n },\n monthPicker: { type: Boolean, default: !1 },\n customProps: { type: Object, default: null },\n yearPicker: { type: Boolean, default: !1 },\n modelAuto: { type: Boolean, default: !1 },\n selectText: { type: String, default: \"Select\" },\n cancelText: { type: String, default: \"Cancel\" },\n previewFormat: {\n type: [String, Function],\n default: () => \"\"\n },\n multiDates: { type: Boolean, default: !1 },\n partialRange: { type: Boolean, default: !0 },\n ignoreTimeValidation: { type: Boolean, default: !1 },\n minDate: { type: [Date, String], default: null },\n maxDate: { type: [Date, String], default: null },\n minTime: { type: Object, default: null },\n maxTime: { type: Object, default: null },\n name: { type: String, default: null },\n placeholder: { type: String, default: \"\" },\n hideInputIcon: { type: Boolean, default: !1 },\n clearable: { type: Boolean, default: !0 },\n state: { type: Boolean, default: null },\n required: { type: Boolean, default: !1 },\n autocomplete: { type: String, default: \"off\" },\n inputClassName: { type: String, default: null },\n fixedStart: { type: Boolean, default: !1 },\n fixedEnd: { type: Boolean, default: !1 },\n timePicker: { type: Boolean, default: !1 },\n enableSeconds: { type: Boolean, default: !1 },\n is24: { type: Boolean, default: !0 },\n noHoursOverlay: { type: Boolean, default: !1 },\n noMinutesOverlay: { type: Boolean, default: !1 },\n noSecondsOverlay: { type: Boolean, default: !1 },\n hoursGridIncrement: { type: [String, Number], default: 1 },\n minutesGridIncrement: { type: [String, Number], default: 5 },\n secondsGridIncrement: { type: [String, Number], default: 5 },\n hoursIncrement: { type: [Number, String], default: 1 },\n minutesIncrement: { type: [Number, String], default: 1 },\n secondsIncrement: { type: [Number, String], default: 1 },\n range: { type: Boolean, default: !1 },\n uid: { type: String, default: null },\n disabled: { type: Boolean, default: !1 },\n readonly: { type: Boolean, default: !1 },\n inline: { type: [Boolean, Object], default: !1 },\n textInput: { type: [Boolean, Object], default: !1 },\n onClickOutside: { type: Function, default: null },\n noDisabledRange: { type: Boolean, default: !1 },\n sixWeeks: { type: [Boolean, String], default: !1 },\n actionRow: { type: Object, default: () => ({}) },\n allowPreventDefault: { type: Boolean, default: !1 },\n closeOnClearValue: { type: Boolean, default: !0 },\n focusStartDate: { type: Boolean, default: !1 },\n disabledTimes: { type: [Function, Array], default: void 0 },\n showLastInRange: { type: Boolean, default: !0 },\n timePickerInline: { type: Boolean, default: !1 },\n calendar: { type: Function, default: null },\n config: { type: Object, default: void 0 }\n}, xe = {\n ...Xt,\n shadow: { type: Boolean, default: !1 },\n flowStep: { type: Number, default: 0 },\n internalModelValue: { type: [Date, Array], default: null },\n arrMapValues: { type: Object, default: () => ({}) }\n}, Qr = {\n key: 1,\n class: \"dp__input_wrap\"\n}, el = [\"id\", \"name\", \"inputmode\", \"placeholder\", \"disabled\", \"readonly\", \"required\", \"value\", \"autocomplete\", \"aria-label\", \"aria-disabled\", \"aria-invalid\", \"onKeydown\"], tl = {\n key: 2,\n class: \"dp__clear_icon\"\n}, nl = /* @__PURE__ */ Be({\n compatConfig: {\n MODE: 3\n },\n __name: \"DatepickerInput\",\n props: {\n isMenuOpen: { type: Boolean, default: !1 },\n inputValue: { type: String, default: \"\" },\n ...Xt\n },\n emits: [\n \"clear\",\n \"open\",\n \"update:input-value\",\n \"set-input-date\",\n \"close\",\n \"select-date\",\n \"set-empty-date\",\n \"toggle\",\n \"focus-prev\",\n \"focus\",\n \"blur\",\n \"real-blur\"\n ],\n setup(e, { expose: n, emit: a }) {\n const t = e, {\n defaultedTextInput: r,\n defaultedAriaLabels: l,\n defaultedInline: c,\n defaultedConfig: y,\n getDefaultPattern: D,\n getDefaultStartTime: S\n } = Se(t), g = Z(), Y = Z(null), R = Z(!1), G = Z(!1), q = W(\n () => ({\n dp__pointer: !t.disabled && !t.readonly && !r.value.enabled,\n dp__disabled: t.disabled,\n dp__input_readonly: !r.value.enabled,\n dp__input: !0,\n dp__input_icon_pad: !t.hideInputIcon,\n dp__input_valid: !!t.state,\n dp__input_invalid: t.state === !1,\n dp__input_focus: R.value || t.isMenuOpen,\n dp__input_reg: !r.value.enabled,\n [t.inputClassName]: !!t.inputClassName\n })\n ), J = () => {\n a(\"set-input-date\", null), t.autoApply && (a(\"set-empty-date\"), g.value = null);\n }, Q = (v) => {\n const I = S();\n return Cr(\n v,\n r.value.format ?? D(),\n I ?? Pa({}, t.enableSeconds),\n t.inputValue,\n G.value\n );\n }, p = (v) => {\n const { rangeSeparator: I } = r.value, [f, k] = v.split(`${I}`);\n if (f) {\n const d = Q(f.trim()), o = k ? Q(k.trim()) : null, $ = d && o ? [d, o] : [d];\n g.value = d ? $ : null;\n }\n }, M = () => {\n G.value = !0;\n }, E = (v) => {\n if (t.range)\n p(v);\n else if (t.multiDates) {\n const I = v.split(\";\");\n g.value = I.map((f) => Q(f.trim())).filter((f) => f);\n } else\n g.value = Q(v);\n }, z = (v) => {\n var f;\n const I = typeof v == \"string\" ? v : (f = v.target) == null ? void 0 : f.value;\n I !== \"\" ? (r.value.openMenu && !t.isMenuOpen && a(\"open\"), E(I), a(\"set-input-date\", g.value)) : J(), G.value = !1, a(\"update:input-value\", I);\n }, K = (v) => {\n r.value.enabled ? (E(v.target.value), r.value.enterSubmit && Sn(g.value) && t.inputValue !== \"\" ? (a(\"set-input-date\", g.value, !0), g.value = null) : r.value.enterSubmit && t.inputValue === \"\" && (g.value = null, a(\"clear\"))) : x(v);\n }, _ = (v) => {\n r.value.enabled && r.value.tabSubmit && E(v.target.value), r.value.tabSubmit && Sn(g.value) && t.inputValue !== \"\" ? (a(\"set-input-date\", g.value, !0), g.value = null) : r.value.tabSubmit && t.inputValue === \"\" && (g.value = null, a(\"clear\"));\n }, re = () => {\n R.value = !0, a(\"focus\");\n }, x = (v) => {\n v.preventDefault(), tt(v, y.value, !0), r.value.enabled && r.value.openMenu && !c.value.input && !t.isMenuOpen ? a(\"open\") : r.value.enabled || a(\"toggle\");\n }, L = () => {\n a(\"real-blur\"), R.value = !1, (!t.isMenuOpen || c.value.enabled && c.value.input) && a(\"blur\"), t.autoApply && r.value.enabled && g.value && !t.isMenuOpen && (a(\"set-input-date\", g.value), a(\"select-date\"), g.value = null);\n }, h = (v) => {\n tt(v, y.value, !0), a(\"clear\");\n }, T = (v) => {\n if (!r.value.enabled) {\n if (v.code === \"Tab\")\n return;\n v.preventDefault();\n }\n };\n return n({\n focusInput: () => {\n var v;\n (v = Y.value) == null || v.focus({ preventScroll: !0 });\n },\n setParsedDate: (v) => {\n g.value = v;\n }\n }), (v, I) => {\n var f;\n return b(), F(\"div\", { onClick: x }, [\n v.$slots.trigger && !v.$slots[\"dp-input\"] && !m(c).enabled ? ae(v.$slots, \"trigger\", { key: 0 }) : V(\"\", !0),\n !v.$slots.trigger && (!m(c).enabled || m(c).input) ? (b(), F(\"div\", Qr, [\n v.$slots[\"dp-input\"] && !v.$slots.trigger && !m(c).enabled ? ae(v.$slots, \"dp-input\", {\n key: 0,\n value: e.inputValue,\n isMenuOpen: e.isMenuOpen,\n onInput: z,\n onEnter: K,\n onTab: _,\n onClear: h,\n onBlur: L,\n onKeypress: T,\n onPaste: M\n }) : V(\"\", !0),\n v.$slots[\"dp-input\"] ? V(\"\", !0) : (b(), F(\"input\", {\n key: 1,\n ref_key: \"inputRef\",\n ref: Y,\n id: v.uid ? `dp-input-${v.uid}` : void 0,\n name: v.name,\n class: ye(q.value),\n inputmode: m(r).enabled ? \"text\" : \"none\",\n placeholder: v.placeholder,\n disabled: v.disabled,\n readonly: v.readonly,\n required: v.required,\n value: e.inputValue,\n autocomplete: v.autocomplete,\n \"aria-label\": (f = m(l)) == null ? void 0 : f.input,\n \"aria-disabled\": v.disabled || void 0,\n \"aria-invalid\": v.state === !1 ? !0 : void 0,\n onInput: z,\n onKeydown: [\n le(K, [\"enter\"]),\n le(_, [\"tab\"]),\n T\n ],\n onBlur: L,\n onFocus: re,\n onKeypress: T,\n onPaste: M\n }, null, 42, el)),\n oe(\"div\", {\n onClick: I[2] || (I[2] = (k) => a(\"toggle\"))\n }, [\n v.$slots[\"input-icon\"] && !v.hideInputIcon ? (b(), F(\"span\", {\n key: 0,\n class: \"dp__input_icon\",\n onClick: I[0] || (I[0] = (k) => a(\"toggle\"))\n }, [\n ae(v.$slots, \"input-icon\")\n ])) : V(\"\", !0),\n !v.$slots[\"input-icon\"] && !v.hideInputIcon && !v.$slots[\"dp-input\"] ? (b(), ce(m(It), {\n key: 1,\n onClick: I[1] || (I[1] = (k) => a(\"toggle\")),\n class: \"dp__input_icon dp__input_icons\"\n })) : V(\"\", !0)\n ]),\n v.$slots[\"clear-icon\"] && e.inputValue && v.clearable && !v.disabled && !v.readonly ? (b(), F(\"span\", tl, [\n ae(v.$slots, \"clear-icon\", { clear: h })\n ])) : V(\"\", !0),\n v.clearable && !v.$slots[\"clear-icon\"] && e.inputValue && !v.disabled && !v.readonly ? (b(), ce(m(ba), {\n key: 3,\n class: \"dp__clear_icon dp__input_icons\",\n onClick: I[3] || (I[3] = pe((k) => h(k), [\"prevent\"]))\n })) : V(\"\", !0)\n ])) : V(\"\", !0)\n ]);\n };\n }\n}), al = [\"title\"], rl = { class: \"dp__action_buttons\" }, ll = [\"onKeydown\", \"disabled\"], ol = /* @__PURE__ */ Be({\n compatConfig: {\n MODE: 3\n },\n __name: \"ActionRow\",\n props: {\n menuMount: { type: Boolean, default: !1 },\n calendarWidth: { type: Number, default: 0 },\n ...xe\n },\n emits: [\"close-picker\", \"select-date\", \"select-now\", \"invalid-select\"],\n setup(e, { emit: n }) {\n const a = e, {\n defaultedActionRow: t,\n defaultedPreviewFormat: r,\n defaultedMultiCalendars: l,\n defaultedTextInput: c,\n defaultedInline: y,\n getDefaultPattern: D\n } = Se(a), { isValidTime: S } = Et(a), { buildMatrix: g } = lt(), Y = Z(null), R = Z(null);\n Ue(() => {\n a.arrowNavigation && g([Ae(Y), Ae(R)], \"actionRow\");\n });\n const G = W(() => a.range && !a.partialRange && a.internalModelValue ? a.internalModelValue.length === 2 : !0), q = W(() => !J.value || !Q.value || !G.value), J = W(() => !a.enableTimePicker || a.ignoreTimeValidation ? !0 : S(a.internalModelValue)), Q = W(() => a.monthPicker ? a.range && Array.isArray(a.internalModelValue) ? !a.internalModelValue.filter((h) => !re(h)).length : re(a.internalModelValue) : !0), p = () => {\n const L = r.value;\n return a.timePicker || a.monthPicker, L($e(a.internalModelValue));\n }, M = () => {\n const L = a.internalModelValue;\n return l.value.count > 0 ? `${E(L[0])} - ${E(L[1])}` : [E(L[0]), E(L[1])];\n }, E = (L) => Ra(\n L,\n r.value,\n a.formatLocale,\n c.value.rangeSeparator,\n a.modelAuto,\n D()\n ), z = W(() => !a.internalModelValue || !a.menuMount ? \"\" : typeof r.value == \"string\" ? Array.isArray(a.internalModelValue) ? a.internalModelValue.length === 2 && a.internalModelValue[1] ? M() : a.multiDates ? a.internalModelValue.map((L) => `${E(L)}`) : a.modelAuto ? `${E(a.internalModelValue[0])}` : `${E(a.internalModelValue[0])} -` : E(a.internalModelValue) : p()), K = () => a.multiDates ? \"; \" : \" - \", _ = W(\n () => Array.isArray(z.value) ? z.value.join(K()) : z.value\n ), re = (L) => {\n if (!a.monthPicker)\n return !0;\n let h = !0;\n const T = P(We(L));\n if (a.minDate && a.maxDate) {\n const H = P(We(a.minDate)), ee = P(We(a.maxDate));\n return Re(T, H) && Pe(T, ee) || ge(T, H) || ge(T, ee);\n }\n if (a.minDate) {\n const H = P(We(a.minDate));\n h = Re(T, H) || ge(T, H);\n }\n if (a.maxDate) {\n const H = P(We(a.maxDate));\n h = Pe(T, H) || ge(T, H);\n }\n return h;\n }, x = () => {\n J.value && Q.value && G.value ? n(\"select-date\") : n(\"invalid-select\");\n };\n return (L, h) => (b(), F(\"div\", {\n class: \"dp__action_row\",\n style: Ke(e.calendarWidth ? { width: `${e.calendarWidth}px` } : {})\n }, [\n L.$slots[\"action-row\"] ? ae(L.$slots, \"action-row\", Ce(Ie({ key: 0 }, {\n internalModelValue: L.internalModelValue,\n disabled: q.value,\n selectDate: () => L.$emit(\"select-date\"),\n closePicker: () => L.$emit(\"close-picker\")\n }))) : (b(), F(de, { key: 1 }, [\n m(t).showPreview ? (b(), F(\"div\", {\n key: 0,\n class: \"dp__selection_preview\",\n title: _.value\n }, [\n L.$slots[\"action-preview\"] ? ae(L.$slots, \"action-preview\", {\n key: 0,\n value: L.internalModelValue\n }) : V(\"\", !0),\n L.$slots[\"action-preview\"] ? V(\"\", !0) : (b(), F(de, { key: 1 }, [\n at(Ne(_.value), 1)\n ], 64))\n ], 8, al)) : V(\"\", !0),\n oe(\"div\", rl, [\n L.$slots[\"action-buttons\"] ? ae(L.$slots, \"action-buttons\", {\n key: 0,\n value: L.internalModelValue\n }) : V(\"\", !0),\n L.$slots[\"action-buttons\"] ? V(\"\", !0) : (b(), F(de, { key: 1 }, [\n !m(y).enabled && m(t).showCancel ? (b(), F(\"button\", {\n key: 0,\n type: \"button\",\n ref_key: \"cancelButtonRef\",\n ref: Y,\n class: \"dp__action_button dp__action_cancel\",\n onClick: h[0] || (h[0] = (T) => L.$emit(\"close-picker\")),\n onKeydown: [\n h[1] || (h[1] = le((T) => L.$emit(\"close-picker\"), [\"enter\"])),\n h[2] || (h[2] = le((T) => L.$emit(\"close-picker\"), [\"space\"]))\n ]\n }, Ne(L.cancelText), 545)) : V(\"\", !0),\n m(t).showNow ? (b(), F(\"button\", {\n key: 1,\n type: \"button\",\n ref_key: \"cancelButtonRef\",\n ref: Y,\n class: \"dp__action_button dp__action_cancel\",\n onClick: h[3] || (h[3] = (T) => L.$emit(\"select-now\")),\n onKeydown: [\n h[4] || (h[4] = le((T) => L.$emit(\"select-now\"), [\"enter\"])),\n h[5] || (h[5] = le((T) => L.$emit(\"select-now\"), [\"space\"]))\n ]\n }, Ne(L.nowButtonLabel), 545)) : V(\"\", !0),\n m(t).showSelect ? (b(), F(\"button\", {\n key: 2,\n type: \"button\",\n class: \"dp__action_button dp__action_select\",\n onKeydown: [\n le(x, [\"enter\"]),\n le(x, [\"space\"])\n ],\n onClick: x,\n disabled: q.value,\n ref_key: \"selectButtonRef\",\n ref: R\n }, Ne(L.selectText), 41, ll)) : V(\"\", !0)\n ], 64))\n ])\n ], 64))\n ], 4));\n }\n}), sl = [\"onKeydown\"], ul = { class: \"dp__selection_grid_header\" }, il = [\"aria-selected\", \"aria-disabled\", \"onClick\", \"onKeydown\", \"onMouseover\"], dl = [\"aria-label\", \"onKeydown\"], Ot = /* @__PURE__ */ Be({\n __name: \"SelectionOverlay\",\n props: {\n items: {},\n type: {},\n isLast: { type: Boolean },\n arrowNavigation: { type: Boolean },\n skipButtonRef: { type: Boolean },\n headerRefs: {},\n hideNavigation: {},\n escClose: { type: Boolean },\n useRelative: { type: Boolean },\n height: {},\n textInput: { type: [Boolean, Object] },\n config: {}\n },\n emits: [\"selected\", \"toggle\", \"reset-flow\", \"hover-value\"],\n setup(e, { expose: n, emit: a }) {\n const t = e, { setSelectionGrid: r, buildMultiLevelMatrix: l, setMonthPicker: c } = lt(), { defaultedAriaLabels: y, defaultedTextInput: D, defaultedConfig: S } = Se(\n t\n ), { hideNavigationButtons: g } = qt(), Y = Z(!1), R = Z(null), G = Z(null), q = Z([]), J = Z(), Q = Z(null), p = Z(0), M = Z(null);\n Va(() => {\n R.value = null;\n }), Ue(() => {\n rt().then(() => h()), z(), E(!0);\n }), _n(() => E(!1));\n const E = (d) => {\n var o;\n t.arrowNavigation && ((o = t.headerRefs) != null && o.length ? c(d) : r(d));\n }, z = () => {\n var o;\n const d = Ae(G);\n d && (D.value.enabled || (R.value ? (o = R.value) == null || o.focus({ preventScroll: !0 }) : d.focus({ preventScroll: !0 })), Y.value = d.clientHeight < d.scrollHeight);\n }, K = W(\n () => ({\n dp__overlay: !0,\n \"dp--overlay-absolute\": !t.useRelative,\n \"dp--overlay-relative\": t.useRelative\n })\n ), _ = W(\n () => t.useRelative ? { height: `${t.height}px`, width: \"260px\" } : void 0\n ), re = W(() => ({\n dp__overlay_col: !0\n })), x = W(\n () => ({\n dp__btn: !0,\n dp__button: !0,\n dp__overlay_action: !0,\n dp__over_action_scroll: Y.value,\n dp__button_bottom: t.isLast\n })\n ), L = W(() => {\n var d, o;\n return {\n dp__overlay_container: !0,\n dp__container_flex: ((d = t.items) == null ? void 0 : d.length) <= 6,\n dp__container_block: ((o = t.items) == null ? void 0 : o.length) > 6\n };\n }), h = () => {\n rt().then(() => {\n const d = Ae(R), o = Ae(G), $ = Ae(Q), X = Ae(M), s = $ ? $.getBoundingClientRect().height : 0;\n o && (p.value = o.getBoundingClientRect().height - s), d && X && (X.scrollTop = d.offsetTop - X.offsetTop - (p.value / 2 - d.getBoundingClientRect().height) - s);\n });\n }, T = (d) => {\n d.disabled || a(\"selected\", d.value);\n }, H = () => {\n a(\"toggle\"), a(\"reset-flow\");\n }, ee = () => {\n t.escClose && H();\n }, v = (d, o, $, X) => {\n d && (o.active && (R.value = d), t.arrowNavigation && (Array.isArray(q.value[$]) ? q.value[$][X] = d : q.value[$] = [d], I()));\n }, I = () => {\n var o, $;\n const d = (o = t.headerRefs) != null && o.length ? [t.headerRefs].concat(q.value) : q.value.concat([t.skipButtonRef ? [] : [Q.value]]);\n l($e(d), ($ = t.headerRefs) != null && $.length ? \"monthPicker\" : \"selectionGrid\");\n }, f = (d) => {\n t.arrowNavigation || tt(d, S.value, !0);\n }, k = (d) => {\n J.value = d, a(\"hover-value\", d);\n };\n return n({ focusGrid: z }), (d, o) => {\n var $;\n return b(), F(\"div\", {\n ref_key: \"gridWrapRef\",\n ref: G,\n class: ye(K.value),\n style: Ke(_.value),\n role: \"dialog\",\n tabindex: \"0\",\n onKeydown: [\n le(pe(ee, [\"prevent\"]), [\"esc\"]),\n o[0] || (o[0] = le(pe((X) => f(X), [\"prevent\"]), [\"left\"])),\n o[1] || (o[1] = le(pe((X) => f(X), [\"prevent\"]), [\"up\"])),\n o[2] || (o[2] = le(pe((X) => f(X), [\"prevent\"]), [\"down\"])),\n o[3] || (o[3] = le(pe((X) => f(X), [\"prevent\"]), [\"right\"]))\n ]\n }, [\n oe(\"div\", {\n class: ye(L.value),\n ref_key: \"containerRef\",\n ref: M,\n role: \"grid\",\n style: Ke({ height: `${p.value}px` })\n }, [\n oe(\"div\", ul, [\n ae(d.$slots, \"header\")\n ]),\n d.$slots.overlay ? ae(d.$slots, \"overlay\", { key: 0 }) : (b(!0), F(de, { key: 1 }, Me(d.items, (X, s) => (b(), F(\"div\", {\n class: ye([\"dp__overlay_row\", { dp__flex_row: d.items.length >= 3 }]),\n key: s,\n role: \"row\"\n }, [\n (b(!0), F(de, null, Me(X, (u, C) => (b(), F(\"div\", {\n role: \"gridcell\",\n class: ye(re.value),\n key: u.value,\n \"aria-selected\": u.active,\n \"aria-disabled\": u.disabled || void 0,\n ref_for: !0,\n ref: (O) => v(O, u, s, C),\n tabindex: \"0\",\n onClick: (O) => T(u),\n onKeydown: [\n le(pe((O) => T(u), [\"prevent\"]), [\"enter\"]),\n le(pe((O) => T(u), [\"prevent\"]), [\"space\"])\n ],\n onMouseover: (O) => k(u.value)\n }, [\n oe(\"div\", {\n class: ye(u.className)\n }, [\n d.$slots.item ? ae(d.$slots, \"item\", {\n key: 0,\n item: u\n }) : V(\"\", !0),\n d.$slots.item ? V(\"\", !0) : (b(), F(de, { key: 1 }, [\n at(Ne(u.text), 1)\n ], 64))\n ], 2)\n ], 42, il))), 128))\n ], 2))), 128))\n ], 6),\n d.$slots[\"button-icon\"] ? Lt((b(), F(\"button\", {\n key: 0,\n type: \"button\",\n \"aria-label\": ($ = m(y)) == null ? void 0 : $.toggleOverlay,\n class: ye(x.value),\n tabindex: \"0\",\n ref_key: \"toggleButton\",\n ref: Q,\n onClick: H,\n onKeydown: [\n le(H, [\"enter\"]),\n le(H, [\"tab\"])\n ]\n }, [\n ae(d.$slots, \"button-icon\")\n ], 42, dl)), [\n [Wt, !m(g)(d.hideNavigation, d.type)]\n ]) : V(\"\", !0)\n ], 46, sl);\n };\n }\n}), Un = /* @__PURE__ */ Be({\n __name: \"InstanceWrap\",\n props: {\n multiCalendars: {},\n stretch: { type: Boolean }\n },\n setup(e) {\n const n = e, a = W(\n () => n.multiCalendars > 0 ? [...Array(n.multiCalendars).keys()] : [0]\n ), t = W(() => ({\n dp__instance_calendar: n.multiCalendars > 0\n }));\n return (r, l) => (b(), F(\"div\", {\n class: ye({\n dp__menu_inner: !r.stretch,\n \"dp--menu--inner-stretched\": r.stretch,\n dp__flex_display: r.multiCalendars > 0\n })\n }, [\n (b(!0), F(de, null, Me(a.value, (c, y) => (b(), F(\"div\", {\n key: c,\n class: ye(t.value)\n }, [\n ae(r.$slots, \"default\", {\n instance: c,\n index: y\n })\n ], 2))), 128))\n ], 2));\n }\n}), cl = [\"aria-label\", \"aria-disabled\"], St = /* @__PURE__ */ Be({\n compatConfig: {\n MODE: 3\n },\n __name: \"ArrowBtn\",\n props: {\n ariaLabel: {},\n disabled: { type: Boolean }\n },\n emits: [\"activate\", \"set-ref\"],\n setup(e, { emit: n }) {\n const a = Z(null);\n return Ue(() => n(\"set-ref\", a)), (t, r) => (b(), F(\"button\", {\n type: \"button\",\n class: \"dp__btn dp--arrow-btn-nav\",\n onClick: r[0] || (r[0] = (l) => t.$emit(\"activate\")),\n onKeydown: [\n r[1] || (r[1] = le(pe((l) => t.$emit(\"activate\"), [\"prevent\"]), [\"enter\"])),\n r[2] || (r[2] = le(pe((l) => t.$emit(\"activate\"), [\"prevent\"]), [\"space\"]))\n ],\n tabindex: \"0\",\n \"aria-label\": t.ariaLabel,\n \"aria-disabled\": t.disabled || void 0,\n ref_key: \"elRef\",\n ref: a\n }, [\n oe(\"span\", {\n class: ye([\"dp__inner_nav\", { dp__inner_nav_disabled: t.disabled }])\n }, [\n ae(t.$slots, \"default\")\n ], 2)\n ], 40, cl));\n }\n}), Ln = (e, n, a) => {\n if (n.value && Array.isArray(n.value))\n if (n.value.some((t) => ge(e, t))) {\n const t = n.value.filter((r) => !ge(r, e));\n n.value = t.length ? t : null;\n } else\n (a && +a > n.value.length || !a) && n.value.push(e);\n else\n n.value = [e];\n}, Na = (e, n, a) => {\n let t = e.value ? e.value.slice() : [];\n return t.length === 2 && t[1] !== null && (t = []), t.length ? Pe(n, t[0]) ? (t.unshift(n), a(\"range-start\", t[0]), a(\"range-start\", t[1])) : (t[1] = n, a(\"range-end\", n)) : (t = [n], a(\"range-start\", n)), e.value = t, t;\n}, Wn = (e, n, a, t) => {\n e[0] && e[1] && a && n(\"auto-apply\"), e[0] && !e[1] && t && a && n(\"auto-apply\");\n}, fl = (e, n) => {\n const { defaultedMultiCalendars: a, defaultedAriaLabels: t, defaultedTransitions: r, defaultedConfig: l } = Se(e), { modelValue: c, year: y, month: D, calendars: S } = Zt(e, n), g = W(() => Ma(e.formatLocale, e.locale, e.monthNameFormat)), Y = W(() => Vn(e.yearRange, e.reverseYears)), R = Z(null), G = () => {\n for (let f = 0; f < a.value.count; f++)\n if (f === 0)\n S.value[f] = S.value[0];\n else {\n const k = we(P(), S.value[f - 1]);\n S.value[f] = { month: ve(k), year: fe(ya(k, f)) };\n }\n }, q = (f) => {\n if (!f)\n return G();\n const k = we(P(), S.value[f]);\n return S.value[0].year = fe(ha(k, a.value.count - 1)), G();\n }, J = (f) => e.focusStartDate ? f[0] : f[1] ? f[1] : f[0], Q = () => {\n if (c.value) {\n const f = Array.isArray(c.value) ? J(c.value) : c.value;\n S.value[0] = { month: ve(f), year: fe(f) };\n }\n };\n Ue(() => {\n Q(), a.value.count && G();\n });\n const p = W(() => (f, k) => {\n const d = we(We(/* @__PURE__ */ new Date()), {\n month: D.value(f),\n year: y.value(f)\n });\n return Ca(d, e.maxDate, e.minDate, e.preventMinMaxNavigation, k);\n }), M = (f) => f ? { month: ve(f), year: fe(f) } : { month: null, year: null }, E = () => c.value ? Array.isArray(c.value) ? c.value.map((f) => M(f)) : M(c.value) : M(), z = (f, k) => {\n const d = S.value[f], o = E();\n return Array.isArray(o) ? o.some(($) => $.year === (d == null ? void 0 : d.year) && $.month === k) : (d == null ? void 0 : d.year) === o.year && k === o.month;\n }, K = (f, k, d) => {\n var $, X;\n const o = E();\n return Array.isArray(o) ? y.value(k) === (($ = o[d]) == null ? void 0 : $.year) && f === ((X = o[d]) == null ? void 0 : X.month) : !1;\n }, _ = (f, k) => {\n if (e.range) {\n const d = E();\n if (Array.isArray(c.value) && Array.isArray(d)) {\n const o = K(f, k, 0) || K(f, k, 1), $ = Je(We(P()), f, y.value(k));\n return Hn(c.value, R.value, $) && !o;\n }\n return !1;\n }\n return !1;\n }, re = W(() => (f) => kt(g.value, (k) => {\n const d = z(f, k.value), o = Rt(\n k.value,\n Ta(y.value(f), e.minDate),\n Aa(y.value(f), e.maxDate)\n ) || Br(e.disabledDates, y.value(f)).includes(k.value), $ = _(k.value, f);\n return { active: d, disabled: o, isBetween: $ };\n })), x = W(() => (f) => kt(Y.value, (k) => {\n const d = y.value(f) === k.value, o = Rt(k.value, wt(e.minDate), wt(e.maxDate));\n return { active: d, disabled: o };\n })), L = (f, k) => Je(We(P()), f, y.value(k)), h = (f, k) => {\n const d = c.value ? c.value : We(/* @__PURE__ */ new Date());\n c.value = Je(d, f, y.value(k)), n(\"auto-apply\");\n }, T = (f, k) => {\n const d = Na(c, L(f, k), n);\n Wn(d, n, e.autoApply, e.modelAuto);\n }, H = (f, k) => {\n Ln(L(f, k), c, e.multiDatesLimit), n(\"auto-apply\", !0);\n };\n return {\n groupedMonths: re,\n groupedYears: x,\n year: y,\n isDisabled: p,\n defaultedMultiCalendars: a,\n defaultedAriaLabels: t,\n defaultedTransitions: r,\n defaultedConfig: l,\n setHoverDate: (f, k) => {\n R.value = L(f, k);\n },\n selectMonth: (f, k) => (S.value[k].month = f, e.multiDates ? H(f, k) : e.range ? T(f, k) : h(f, k)),\n selectYear: (f, k) => {\n S.value[k].year = f, a.value.count && !a.value.solo && q(k);\n }\n };\n}, vl = { class: \"dp__month_picker_header\" }, ml = [\"aria-label\", \"onClick\", \"onKeydown\"], gl = /* @__PURE__ */ Be({\n compatConfig: {\n MODE: 3\n },\n __name: \"MonthPicker\",\n props: {\n ...xe\n },\n emits: [\n \"update:internal-model-value\",\n \"overlay-closed\",\n \"reset-flow\",\n \"range-start\",\n \"range-end\",\n \"auto-apply\"\n ],\n setup(e, { emit: n }) {\n const a = e, {\n groupedMonths: t,\n groupedYears: r,\n year: l,\n isDisabled: c,\n defaultedMultiCalendars: y,\n defaultedAriaLabels: D,\n defaultedTransitions: S,\n defaultedConfig: g,\n setHoverDate: Y,\n selectMonth: R,\n selectYear: G\n } = fl(a, n), { transitionName: q, showTransition: J } = Bt(S), { showRightIcon: Q, showLeftIcon: p } = qt(), M = Z([!1]), E = (_, re) => {\n G(_, re), K(re);\n }, z = (_, re = !1) => {\n if (!c.value(_, re)) {\n const x = re ? l.value(_) + 1 : l.value(_) - 1;\n G(x, _);\n }\n }, K = (_, re = !1, x) => {\n re || n(\"reset-flow\"), x !== void 0 ? M.value[_] = x : M.value[_] = !M.value[_], M.value || n(\"overlay-closed\");\n };\n return (_, re) => (b(), ce(Un, {\n \"multi-calendars\": m(y).count,\n stretch: \"\"\n }, {\n default: ue(({ instance: x }) => [\n _.$slots[\"month-year\"] ? ae(_.$slots, \"month-year\", Ce(Ie({ key: 0 }, {\n year: m(l),\n months: m(t)(x),\n years: m(r)(x),\n selectMonth: m(R),\n selectYear: m(G),\n instance: x\n }))) : (b(), ce(Ot, {\n key: 1,\n items: m(t)(x),\n \"arrow-navigation\": _.arrowNavigation,\n \"is-last\": _.autoApply && !_.keepActionRow && !m(g).keepActionRow,\n \"esc-close\": _.escClose,\n height: _.modeHeight !== 255 ? _.modeHeight : m(g).modeHeight,\n config: _.config,\n onSelected: (L) => m(R)(L, x),\n onHoverValue: (L) => m(Y)(L, x),\n \"use-relative\": \"\",\n type: \"month\"\n }, {\n header: ue(() => {\n var L, h, T;\n return [\n oe(\"div\", vl, [\n m(p)(m(y), x) ? (b(), ce(St, {\n key: 0,\n ref: \"mpPrevIconRef\",\n \"aria-label\": (L = m(D)) == null ? void 0 : L.prevYear,\n disabled: m(c)(x, !1),\n onActivate: (H) => z(x, !1)\n }, {\n default: ue(() => [\n _.$slots[\"arrow-left\"] ? ae(_.$slots, \"arrow-left\", { key: 0 }) : V(\"\", !0),\n _.$slots[\"arrow-left\"] ? V(\"\", !0) : (b(), ce(m(Rn), { key: 1 }))\n ]),\n _: 2\n }, 1032, [\"aria-label\", \"disabled\", \"onActivate\"])) : V(\"\", !0),\n oe(\"div\", {\n class: \"dp--year-select\",\n role: \"button\",\n ref: \"mpYearButtonRef\",\n \"aria-label\": (h = m(D)) == null ? void 0 : h.openYearsOverlay,\n tabindex: \"0\",\n onClick: () => K(x, !1),\n onKeydown: le(() => K(x, !1), [\"enter\"])\n }, [\n _.$slots.year ? ae(_.$slots, \"year\", {\n key: 0,\n year: m(l)(x)\n }) : V(\"\", !0),\n _.$slots.year ? V(\"\", !0) : (b(), F(de, { key: 1 }, [\n at(Ne(m(l)(x)), 1)\n ], 64))\n ], 40, ml),\n m(Q)(m(y), x) ? (b(), ce(St, {\n key: 1,\n ref: \"mpNextIconRef\",\n \"aria-label\": (T = m(D)) == null ? void 0 : T.nextYear,\n disabled: m(c)(x, !1),\n onActivate: (H) => z(x, !0)\n }, {\n default: ue(() => [\n _.$slots[\"arrow-right\"] ? ae(_.$slots, \"arrow-right\", { key: 0 }) : V(\"\", !0),\n _.$slots[\"arrow-right\"] ? V(\"\", !0) : (b(), ce(m(On), { key: 1 }))\n ]),\n _: 2\n }, 1032, [\"aria-label\", \"disabled\", \"onActivate\"])) : V(\"\", !0),\n Ze(Dt, {\n name: m(q)(M.value[x]),\n css: m(J)\n }, {\n default: ue(() => [\n M.value[x] ? (b(), ce(Ot, {\n key: 0,\n items: m(r)(x),\n \"text-input\": _.textInput,\n \"esc-close\": _.escClose,\n config: _.config,\n onToggle: (H) => K(x),\n onSelected: (H) => E(H, x),\n \"is-last\": _.autoApply && !_.keepActionRow && !m(g).keepActionRow,\n type: \"year\"\n }, Ee({\n \"button-icon\": ue(() => [\n _.$slots[\"calendar-icon\"] ? ae(_.$slots, \"calendar-icon\", { key: 0 }) : V(\"\", !0),\n _.$slots[\"calendar-icon\"] ? V(\"\", !0) : (b(), ce(m(It), { key: 1 }))\n ]),\n _: 2\n }, [\n _.$slots[\"year-overlay-value\"] ? {\n name: \"item\",\n fn: ue(({ item: H }) => [\n ae(_.$slots, \"year-overlay-value\", {\n text: H.text,\n value: H.value\n })\n ]),\n key: \"0\"\n } : void 0\n ]), 1032, [\"items\", \"text-input\", \"esc-close\", \"config\", \"onToggle\", \"onSelected\", \"is-last\"])) : V(\"\", !0)\n ]),\n _: 2\n }, 1032, [\"name\", \"css\"])\n ])\n ];\n }),\n _: 2\n }, 1032, [\"items\", \"arrow-navigation\", \"is-last\", \"esc-close\", \"height\", \"config\", \"onSelected\", \"onHoverValue\"]))\n ]),\n _: 3\n }, 8, [\"multi-calendars\"]));\n }\n}), yl = (e, n) => {\n const { modelValue: a } = Zt(e, n), t = Z(null), r = (g) => Array.isArray(a.value) ? a.value.some((Y) => fe(Y) === g) : a.value ? fe(a.value) === g : !1, l = (g) => e.range && Array.isArray(a.value) ? Hn(a.value, t.value, y(g)) : !1, c = W(() => kt(Vn(e.yearRange, e.reverseYears), (g) => {\n const Y = r(g.value), R = Rt(g.value, wt(e.minDate), wt(e.maxDate)), G = l(g.value);\n return { active: Y, disabled: R, isBetween: G };\n })), y = (g) => ct(We(/* @__PURE__ */ new Date()), g);\n return {\n groupedYears: c,\n setHoverValue: (g) => {\n t.value = ct(We(/* @__PURE__ */ new Date()), g);\n },\n selectYear: (g) => {\n if (e.multiDates)\n return Ln(y(g), a, e.multiDatesLimit), n(\"auto-apply\", !0);\n if (e.range) {\n const Y = Na(a, y(g), n);\n return Wn(Y, n, e.autoApply, e.modelAuto);\n }\n a.value = y(g), n(\"auto-apply\");\n }\n };\n}, hl = /* @__PURE__ */ Be({\n compatConfig: {\n MODE: 3\n },\n __name: \"YearPicker\",\n props: {\n ...xe\n },\n emits: [\"update:internal-model-value\", \"reset-flow\", \"range-start\", \"range-end\", \"auto-apply\"],\n setup(e, { emit: n }) {\n const a = e, { groupedYears: t, selectYear: r, setHoverValue: l } = yl(a, n), { defaultedConfig: c } = Se(a);\n return (y, D) => (b(), F(\"div\", null, [\n y.$slots[\"month-year\"] ? ae(y.$slots, \"month-year\", Ce(Ie({ key: 0 }, {\n years: m(t),\n selectYear: m(r)\n }))) : (b(), ce(Ot, {\n key: 1,\n items: m(t),\n \"is-last\": y.autoApply && !y.keepActionRow && !m(c).keepActionRow,\n height: y.modeHeight !== 255 ? y.modeHeight : m(c).modeHeight,\n config: y.config,\n type: \"year\",\n \"use-relative\": \"\",\n onSelected: m(r),\n onHoverValue: m(l)\n }, Ee({ _: 2 }, [\n y.$slots[\"year-overlay-value\"] ? {\n name: \"item\",\n fn: ue(({ item: S }) => [\n ae(y.$slots, \"year-overlay-value\", {\n text: S.text,\n value: S.value\n })\n ]),\n key: \"0\"\n } : void 0\n ]), 1032, [\"items\", \"is-last\", \"height\", \"config\", \"onSelected\", \"onHoverValue\"]))\n ]));\n }\n}), pl = {\n key: 0,\n class: \"dp__time_input\"\n}, bl = [\"aria-label\", \"onKeydown\", \"onClick\"], kl = /* @__PURE__ */ oe(\"span\", { class: \"dp__tp_inline_btn_bar dp__tp_btn_in_l\" }, null, -1), wl = /* @__PURE__ */ oe(\"span\", { class: \"dp__tp_inline_btn_bar dp__tp_btn_in_r\" }, null, -1), Dl = [\"aria-label\", \"disabled\", \"onKeydown\", \"onClick\"], Ml = [\"aria-label\", \"onKeydown\", \"onClick\"], $l = /* @__PURE__ */ oe(\"span\", { class: \"dp__tp_inline_btn_bar dp__tp_btn_in_l\" }, null, -1), Tl = /* @__PURE__ */ oe(\"span\", { class: \"dp__tp_inline_btn_bar dp__tp_btn_in_r\" }, null, -1), Al = { key: 0 }, Sl = [\"aria-label\", \"onKeydown\"], _l = /* @__PURE__ */ Be({\n compatConfig: {\n MODE: 3\n },\n __name: \"TimeInput\",\n props: {\n hours: { type: Number, default: 0 },\n minutes: { type: Number, default: 0 },\n seconds: { type: Number, default: 0 },\n closeTimePickerBtn: { type: Object, default: null },\n order: { type: Number, default: 0 },\n disabledTimesConfig: { type: Function, default: null },\n ...xe\n },\n emits: [\n \"set-hours\",\n \"set-minutes\",\n \"update:hours\",\n \"update:minutes\",\n \"update:seconds\",\n \"reset-flow\",\n \"mounted\",\n \"overlay-closed\",\n \"am-pm-change\"\n ],\n setup(e, { expose: n, emit: a }) {\n const t = e, { setTimePickerElements: r, setTimePickerBackRef: l } = lt(), { defaultedAriaLabels: c, defaultedTransitions: y, defaultedFilters: D, defaultedConfig: S } = Se(t), { transitionName: g, showTransition: Y } = Bt(y), R = Nt({\n hours: !1,\n minutes: !1,\n seconds: !1\n }), G = Z(\"AM\"), q = Z(null), J = Z([]);\n Ue(() => {\n a(\"mounted\");\n });\n const Q = (u) => we(/* @__PURE__ */ new Date(), {\n hours: u.hours,\n minutes: u.minutes,\n seconds: t.enableSeconds ? u.seconds : 0,\n milliseconds: 0\n }), p = W(() => (u) => T(u, t[u])), M = W(() => ({ hours: t.hours, minutes: t.minutes, seconds: t.seconds })), E = W(() => (u) => !ee(+t[u] + +t[`${u}Increment`], u)), z = W(() => (u) => !ee(+t[u] - +t[`${u}Increment`], u)), K = (u, C) => pa(we(P(), u), C), _ = (u, C) => qa(we(P(), u), C), re = W(\n () => ({\n dp__time_col: !0,\n dp__time_col_block: !t.timePickerInline,\n dp__time_col_reg_block: !t.enableSeconds && t.is24 && !t.timePickerInline,\n dp__time_col_reg_inline: !t.enableSeconds && t.is24 && t.timePickerInline,\n dp__time_col_reg_with_button: !t.enableSeconds && !t.is24,\n dp__time_col_sec: t.enableSeconds && t.is24,\n dp__time_col_sec_with_button: t.enableSeconds && !t.is24\n })\n ), x = W(() => {\n const u = [{ type: \"hours\" }, { type: \"\", separator: !0 }, { type: \"minutes\" }];\n return t.enableSeconds ? u.concat([{ type: \"\", separator: !0 }, { type: \"seconds\" }]) : u;\n }), L = W(() => x.value.filter((u) => !u.separator)), h = W(() => (u) => {\n if (u === \"hours\") {\n const C = d(+t.hours);\n return { text: C < 10 ? `0${C}` : `${C}`, value: C };\n }\n return { text: t[u] < 10 ? `0${t[u]}` : `${t[u]}`, value: t[u] };\n }), T = (u, C) => {\n var A;\n if (!t.disabledTimesConfig)\n return !1;\n const O = t.disabledTimesConfig(t.order, u === \"hours\" ? C : void 0);\n return O[u] ? !!((A = O[u]) != null && A.includes(C)) : !0;\n }, H = (u) => {\n const C = t.is24 ? 24 : 12, O = u === \"hours\" ? C : 60, A = +t[`${u}GridIncrement`], te = u === \"hours\" && !t.is24 ? A : 0, B = [];\n for (let ie = te; ie < O; ie += A)\n B.push({ value: ie, text: ie < 10 ? `0${ie}` : `${ie}` });\n return u === \"hours\" && !t.is24 && B.push({ value: 0, text: \"12\" }), kt(B, (ie) => ({ active: !1, disabled: D.value.times[u].includes(ie.value) || !ee(ie.value, u) || T(u, ie.value) }));\n }, ee = (u, C) => {\n const O = t.minTime ? Q(fn(t.minTime)) : null, A = t.maxTime ? Q(fn(t.maxTime)) : null, te = Q(fn(M.value, C, u));\n return O && A ? (_t(te, A) || pt(te, A)) && (Pt(te, O) || pt(te, O)) : O ? Pt(te, O) || pt(te, O) : A ? _t(te, A) || pt(te, A) : !0;\n }, v = (u) => t[`no${u[0].toUpperCase() + u.slice(1)}Overlay`], I = (u) => {\n v(u) || (R[u] = !R[u], R[u] || a(\"overlay-closed\"));\n }, f = (u) => u === \"hours\" ? qe : u === \"minutes\" ? Xe : bt, k = (u, C = !0) => {\n const O = C ? K : _, A = C ? +t[`${u}Increment`] : -+t[`${u}Increment`];\n ee(+t[u] + A, u) && a(\n `update:${u}`,\n f(u)(O({ [u]: +t[u] }, { [u]: +t[`${u}Increment`] }))\n );\n }, d = (u) => t.is24 ? u : (u >= 12 ? G.value = \"PM\" : G.value = \"AM\", Ar(u)), o = () => {\n G.value === \"PM\" ? (G.value = \"AM\", a(\"update:hours\", t.hours - 12)) : (G.value = \"PM\", a(\"update:hours\", t.hours + 12)), a(\"am-pm-change\", G.value);\n }, $ = (u) => {\n R[u] = !0;\n }, X = (u, C, O) => {\n if (u && t.arrowNavigation) {\n Array.isArray(J.value[C]) ? J.value[C][O] = u : J.value[C] = [u];\n const A = J.value.reduce(\n (te, B) => B.map((ie, he) => [...te[he] || [], B[he]]),\n []\n );\n l(t.closeTimePickerBtn), q.value && (A[1] = A[1].concat(q.value)), r(A, t.order);\n }\n }, s = (u, C) => (I(u), u === \"hours\" && !t.is24 ? a(`update:${u}`, G.value === \"PM\" ? C + 12 : C) : a(`update:${u}`, C));\n return n({ openChildCmp: $ }), (u, C) => {\n var O;\n return u.disabled ? V(\"\", !0) : (b(), F(\"div\", pl, [\n (b(!0), F(de, null, Me(x.value, (A, te) => {\n var B, ie, he;\n return b(), F(\"div\", {\n key: te,\n class: ye(re.value)\n }, [\n A.separator ? (b(), F(de, { key: 0 }, [\n at(\" : \")\n ], 64)) : (b(), F(de, { key: 1 }, [\n oe(\"button\", {\n type: \"button\",\n class: ye({\n dp__btn: !0,\n dp__inc_dec_button: !t.timePickerInline,\n dp__inc_dec_button_inline: t.timePickerInline,\n dp__tp_inline_btn_top: t.timePickerInline,\n dp__inc_dec_button_disabled: E.value(A.type)\n }),\n \"aria-label\": (B = m(c)) == null ? void 0 : B.incrementValue(A.type),\n tabindex: \"0\",\n onKeydown: [\n le(pe((me) => k(A.type), [\"prevent\"]), [\"enter\"]),\n le(pe((me) => k(A.type), [\"prevent\"]), [\"space\"])\n ],\n onClick: (me) => k(A.type),\n ref_for: !0,\n ref: (me) => X(me, te, 0)\n }, [\n t.timePickerInline ? (b(), F(de, { key: 1 }, [\n kl,\n wl\n ], 64)) : (b(), F(de, { key: 0 }, [\n u.$slots[\"arrow-up\"] ? ae(u.$slots, \"arrow-up\", { key: 0 }) : V(\"\", !0),\n u.$slots[\"arrow-up\"] ? V(\"\", !0) : (b(), ce(m(Yn), { key: 1 }))\n ], 64))\n ], 42, bl),\n oe(\"button\", {\n type: \"button\",\n \"aria-label\": (ie = m(c)) == null ? void 0 : ie.openTpOverlay(A.type),\n class: ye({\n dp__time_display: !0,\n dp__time_display_block: !t.timePickerInline,\n dp__time_display_inline: t.timePickerInline,\n \"dp--time-invalid\": p.value(A.type),\n \"dp--time-overlay-btn\": !p.value(A.type)\n }),\n disabled: v(A.type),\n tabindex: \"0\",\n onKeydown: [\n le(pe((me) => I(A.type), [\"prevent\"]), [\"enter\"]),\n le(pe((me) => I(A.type), [\"prevent\"]), [\"space\"])\n ],\n onClick: (me) => I(A.type),\n ref_for: !0,\n ref: (me) => X(me, te, 1)\n }, [\n u.$slots[A.type] ? ae(u.$slots, A.type, {\n key: 0,\n text: h.value(A.type).text,\n value: h.value(A.type).value\n }) : V(\"\", !0),\n u.$slots[A.type] ? V(\"\", !0) : (b(), F(de, { key: 1 }, [\n at(Ne(h.value(A.type).text), 1)\n ], 64))\n ], 42, Dl),\n oe(\"button\", {\n type: \"button\",\n class: ye({\n dp__btn: !0,\n dp__inc_dec_button: !t.timePickerInline,\n dp__inc_dec_button_inline: t.timePickerInline,\n dp__tp_inline_btn_bottom: t.timePickerInline,\n dp__inc_dec_button_disabled: z.value(A.type)\n }),\n \"aria-label\": (he = m(c)) == null ? void 0 : he.decrementValue(A.type),\n tabindex: \"0\",\n onKeydown: [\n le(pe((me) => k(A.type, !1), [\"prevent\"]), [\"enter\"]),\n le(pe((me) => k(A.type, !1), [\"prevent\"]), [\"space\"])\n ],\n onClick: (me) => k(A.type, !1),\n ref_for: !0,\n ref: (me) => X(me, te, 2)\n }, [\n t.timePickerInline ? (b(), F(de, { key: 1 }, [\n $l,\n Tl\n ], 64)) : (b(), F(de, { key: 0 }, [\n u.$slots[\"arrow-down\"] ? ae(u.$slots, \"arrow-down\", { key: 0 }) : V(\"\", !0),\n u.$slots[\"arrow-down\"] ? V(\"\", !0) : (b(), ce(m(In), { key: 1 }))\n ], 64))\n ], 42, Ml)\n ], 64))\n ], 2);\n }), 128)),\n u.is24 ? V(\"\", !0) : (b(), F(\"div\", Al, [\n u.$slots[\"am-pm-button\"] ? ae(u.$slots, \"am-pm-button\", {\n key: 0,\n toggle: o,\n value: G.value\n }) : V(\"\", !0),\n u.$slots[\"am-pm-button\"] ? V(\"\", !0) : (b(), F(\"button\", {\n key: 1,\n ref_key: \"amPmButton\",\n ref: q,\n type: \"button\",\n class: \"dp__pm_am_button\",\n role: \"button\",\n \"aria-label\": (O = m(c)) == null ? void 0 : O.amPmButton,\n tabindex: \"0\",\n onClick: o,\n onKeydown: [\n le(pe(o, [\"prevent\"]), [\"enter\"]),\n le(pe(o, [\"prevent\"]), [\"space\"])\n ]\n }, Ne(G.value), 41, Sl))\n ])),\n (b(!0), F(de, null, Me(L.value, (A, te) => (b(), ce(Dt, {\n key: te,\n name: m(g)(R[A.type]),\n css: m(Y)\n }, {\n default: ue(() => [\n R[A.type] ? (b(), ce(Ot, {\n key: 0,\n items: H(A.type),\n \"is-last\": u.autoApply && !u.keepActionRow && !m(S).keepActionRow,\n \"esc-close\": u.escClose,\n type: A.type,\n \"text-input\": u.textInput,\n config: u.config,\n \"arrow-navigation\": u.arrowNavigation,\n onSelected: (B) => s(A.type, B),\n onToggle: (B) => I(A.type),\n onResetFlow: C[0] || (C[0] = (B) => u.$emit(\"reset-flow\"))\n }, Ee({\n \"button-icon\": ue(() => [\n u.$slots[\"clock-icon\"] ? ae(u.$slots, \"clock-icon\", { key: 0 }) : V(\"\", !0),\n u.$slots[\"clock-icon\"] ? V(\"\", !0) : (b(), ce(m(Nn), { key: 1 }))\n ]),\n _: 2\n }, [\n u.$slots[`${A.type}-overlay-value`] ? {\n name: \"item\",\n fn: ue(({ item: B }) => [\n ae(u.$slots, `${A.type}-overlay-value`, {\n text: B.text,\n value: B.value\n })\n ]),\n key: \"0\"\n } : void 0\n ]), 1032, [\"items\", \"is-last\", \"esc-close\", \"type\", \"text-input\", \"config\", \"arrow-navigation\", \"onSelected\", \"onToggle\"])) : V(\"\", !0)\n ]),\n _: 2\n }, 1032, [\"name\", \"css\"]))), 128))\n ]));\n };\n }\n}), Pl = [\"aria-label\"], Cl = [\"tabindex\"], Rl = [\"aria-label\"], Ya = /* @__PURE__ */ Be({\n compatConfig: {\n MODE: 3\n },\n __name: \"TimePicker\",\n props: {\n hours: { type: [Number, Array], default: 0 },\n minutes: { type: [Number, Array], default: 0 },\n seconds: { type: [Number, Array], default: 0 },\n disabledTimesConfig: { type: Function, default: null },\n ...xe\n },\n emits: [\n \"update:hours\",\n \"update:minutes\",\n \"update:seconds\",\n \"mount\",\n \"reset-flow\",\n \"overlay-opened\",\n \"overlay-closed\",\n \"am-pm-change\"\n ],\n setup(e, { expose: n, emit: a }) {\n const t = e, { buildMatrix: r, setTimePicker: l } = lt(), c = Yt(), { defaultedTransitions: y, defaultedAriaLabels: D, defaultedTextInput: S, defaultedConfig: g } = Se(t), { transitionName: Y, showTransition: R } = Bt(y), { hideNavigationButtons: G } = qt(), q = Z(null), J = Z(null), Q = Z([]), p = Z(null);\n Ue(() => {\n a(\"mount\"), !t.timePicker && t.arrowNavigation ? r([Ae(q.value)], \"time\") : l(!0, t.timePicker);\n });\n const M = W(() => t.range && t.modelAuto ? $a(t.internalModelValue) : !0), E = Z(!1), z = (v) => ({\n hours: Array.isArray(t.hours) ? t.hours[v] : t.hours,\n minutes: Array.isArray(t.minutes) ? t.minutes[v] : t.minutes,\n seconds: Array.isArray(t.seconds) ? t.seconds[v] : t.seconds\n }), K = W(() => {\n const v = [];\n if (t.range)\n for (let I = 0; I < 2; I++)\n v.push(z(I));\n else\n v.push(z(0));\n return v;\n }), _ = (v, I = !1, f = \"\") => {\n I || a(\"reset-flow\"), E.value = v, a(v ? \"overlay-opened\" : \"overlay-closed\"), t.arrowNavigation && l(v), rt(() => {\n f !== \"\" && Q.value[0] && Q.value[0].openChildCmp(f);\n });\n }, re = W(() => ({\n dp__btn: !0,\n dp__button: !0,\n dp__button_bottom: t.autoApply && !t.keepActionRow && !g.value.keepActionRow\n })), x = ze(c, \"timePicker\"), L = (v, I, f) => t.range ? I === 0 ? [v, K.value[1][f]] : [K.value[0][f], v] : v, h = (v) => {\n a(\"update:hours\", v);\n }, T = (v) => {\n a(\"update:minutes\", v);\n }, H = (v) => {\n a(\"update:seconds\", v);\n }, ee = () => {\n if (p.value && !S.value.enabled) {\n const v = _r(p.value);\n v && v.focus({ preventScroll: !0 });\n }\n };\n return n({ toggleTimePicker: _ }), (v, I) => {\n var f;\n return b(), F(\"div\", null, [\n !v.timePicker && !v.timePickerInline ? Lt((b(), F(\"button\", {\n key: 0,\n type: \"button\",\n class: ye(re.value),\n \"aria-label\": (f = m(D)) == null ? void 0 : f.openTimePicker,\n tabindex: \"0\",\n ref_key: \"openTimePickerBtn\",\n ref: q,\n onKeydown: [\n I[0] || (I[0] = le((k) => _(!0), [\"enter\"])),\n I[1] || (I[1] = le((k) => _(!0), [\"space\"]))\n ],\n onClick: I[2] || (I[2] = (k) => _(!0))\n }, [\n v.$slots[\"clock-icon\"] ? ae(v.$slots, \"clock-icon\", { key: 0 }) : V(\"\", !0),\n v.$slots[\"clock-icon\"] ? V(\"\", !0) : (b(), ce(m(Nn), { key: 1 }))\n ], 42, Pl)), [\n [Wt, !m(G)(v.hideNavigation, \"time\")]\n ]) : V(\"\", !0),\n Ze(Dt, {\n name: m(Y)(E.value),\n css: m(R) && !v.timePickerInline\n }, {\n default: ue(() => {\n var k;\n return [\n E.value || v.timePicker || v.timePickerInline ? (b(), F(\"div\", {\n key: 0,\n class: ye({\n dp__overlay: !v.timePickerInline,\n \"dp--overlay-absolute\": !t.timePicker && !v.timePickerInline,\n \"dp--overlay-relative\": t.timePicker\n }),\n style: Ke(\n v.timePicker ? { height: `${v.modeHeight !== 255 ? v.modeHeight : m(g).modeHeight}px` } : void 0\n ),\n ref_key: \"overlayRef\",\n ref: p,\n tabindex: v.timePickerInline ? void 0 : 0\n }, [\n oe(\"div\", {\n class: ye(\n v.timePickerInline ? \"dp__time_picker_inline_container\" : \"dp__overlay_container dp__container_flex dp__time_picker_overlay_container\"\n ),\n style: { display: \"flex\" }\n }, [\n v.$slots[\"time-picker-overlay\"] ? ae(v.$slots, \"time-picker-overlay\", {\n key: 0,\n hours: e.hours,\n minutes: e.minutes,\n seconds: e.seconds,\n setHours: h,\n setMinutes: T,\n setSeconds: H\n }) : V(\"\", !0),\n v.$slots[\"time-picker-overlay\"] ? V(\"\", !0) : (b(), F(\"div\", {\n key: 1,\n class: ye(v.timePickerInline ? \"dp__flex\" : \"dp__overlay_row dp__flex_row\")\n }, [\n (b(!0), F(de, null, Me(K.value, (d, o) => Lt((b(), ce(_l, Ie({ key: o }, {\n ...v.$props,\n order: o,\n hours: d.hours,\n minutes: d.minutes,\n seconds: d.seconds,\n closeTimePickerBtn: J.value,\n disabledTimesConfig: e.disabledTimesConfig,\n disabled: o === 0 ? v.fixedStart : v.fixedEnd\n }, {\n ref_for: !0,\n ref_key: \"timeInputRefs\",\n ref: Q,\n \"onUpdate:hours\": ($) => h(L($, o, \"hours\")),\n \"onUpdate:minutes\": ($) => T(L($, o, \"minutes\")),\n \"onUpdate:seconds\": ($) => H(L($, o, \"seconds\")),\n onMounted: ee,\n onOverlayClosed: ee,\n onAmPmChange: I[3] || (I[3] = ($) => v.$emit(\"am-pm-change\", $))\n }), Ee({ _: 2 }, [\n Me(m(x), ($, X) => ({\n name: $,\n fn: ue((s) => [\n ae(v.$slots, $, Ce(Ve(s)))\n ])\n }))\n ]), 1040, [\"onUpdate:hours\", \"onUpdate:minutes\", \"onUpdate:seconds\"])), [\n [Wt, o === 0 ? !0 : M.value]\n ])), 128))\n ], 2)),\n !v.timePicker && !v.timePickerInline ? Lt((b(), F(\"button\", {\n key: 2,\n type: \"button\",\n ref_key: \"closeTimePickerBtn\",\n ref: J,\n class: ye(re.value),\n \"aria-label\": (k = m(D)) == null ? void 0 : k.closeTimePicker,\n tabindex: \"0\",\n onKeydown: [\n I[4] || (I[4] = le((d) => _(!1), [\"enter\"])),\n I[5] || (I[5] = le((d) => _(!1), [\"space\"]))\n ],\n onClick: I[6] || (I[6] = (d) => _(!1))\n }, [\n v.$slots[\"calendar-icon\"] ? ae(v.$slots, \"calendar-icon\", { key: 0 }) : V(\"\", !0),\n v.$slots[\"calendar-icon\"] ? V(\"\", !0) : (b(), ce(m(It), { key: 1 }))\n ], 42, Rl)), [\n [Wt, !m(G)(v.hideNavigation, \"time\")]\n ]) : V(\"\", !0)\n ], 2)\n ], 14, Cl)) : V(\"\", !0)\n ];\n }),\n _: 3\n }, 8, [\"name\", \"css\"])\n ]);\n };\n }\n}), Ia = (e, n, a, t) => {\n const r = (p, M) => Array.isArray(n[p]) ? n[p][M] : n[p], l = (p) => e.enableSeconds ? Array.isArray(n.seconds) ? n.seconds[p] : n.seconds : 0, c = (p, M) => p ? M !== void 0 ? nt(p, r(\"hours\", M), r(\"minutes\", M), l(M)) : nt(p, n.hours, n.minutes, l()) : P(), y = (p, M) => {\n n[p] = M;\n }, D = (p, M) => {\n const E = Object.fromEntries(\n Object.keys(n).map((z) => z === p ? [z, M] : [z, n[z]].slice())\n );\n if (e.range && !e.disableTimeRangeValidation) {\n const z = (_) => a.value ? nt(\n a.value[_],\n E.hours[_],\n E.minutes[_],\n E.seconds[_]\n ) : null, K = (_) => Cn(a.value[_], 0);\n return !(ge(z(0), z(1)) && (Pt(z(0), K(1)) || _t(z(1), K(0))));\n }\n return !0;\n }, S = (p, M) => {\n D(p, M) && (y(p, M), t && t());\n }, g = (p) => {\n S(\"hours\", p);\n }, Y = (p) => {\n S(\"minutes\", p);\n }, R = (p) => {\n S(\"seconds\", p);\n }, G = (p, M, E, z) => {\n M && g(p), !M && !E && Y(p), E && R(p), a.value && z(a.value);\n }, q = (p) => {\n if (p) {\n const M = Array.isArray(p), E = M ? [+p[0].hours, +p[1].hours] : +p.hours, z = M ? [+p[0].minutes, +p[1].minutes] : +p.minutes, K = M ? [+p[0].seconds, +p[1].seconds] : +p.seconds;\n y(\"hours\", E), y(\"minutes\", z), e.enableSeconds && y(\"seconds\", K);\n }\n }, J = (p, M) => {\n const E = {\n hours: Array.isArray(n.hours) ? n.hours[p] : n.hours,\n disabledArr: []\n };\n return (M || M === 0) && (E.hours = M), Array.isArray(e.disabledTimes) && (E.disabledArr = e.range && Array.isArray(e.disabledTimes[p]) ? e.disabledTimes[p] : e.disabledTimes), E;\n }, Q = W(() => (p, M) => {\n var E;\n if (Array.isArray(e.disabledTimes)) {\n const { disabledArr: z, hours: K } = J(p, M), _ = z.filter((re) => +re.hours === K);\n return ((E = _[0]) == null ? void 0 : E.minutes) === \"*\" ? { hours: [K], minutes: void 0, seconds: void 0 } : {\n hours: [],\n minutes: (_ == null ? void 0 : _.map((re) => +re.minutes)) ?? [],\n seconds: (_ == null ? void 0 : _.map((re) => re.seconds ? +re.seconds : void 0)) ?? []\n };\n }\n return { hours: [], minutes: [], seconds: [] };\n });\n return {\n setTime: y,\n updateHours: g,\n updateMinutes: Y,\n updateSeconds: R,\n getSetDateTime: c,\n updateTimeValues: G,\n getSecondsValue: l,\n assignStartTime: q,\n disabledTimesConfig: Q\n };\n}, Ol = (e, n) => {\n const { modelValue: a, time: t } = Zt(e, n), { defaultedStartTime: r } = Se(e), { updateTimeValues: l, getSetDateTime: c, setTime: y, assignStartTime: D, disabledTimesConfig: S } = Ia(\n e,\n t,\n a\n ), g = (M) => {\n const { hours: E, minutes: z, seconds: K } = M;\n return { hours: +E, minutes: +z, seconds: K ? +K : 0 };\n }, Y = () => {\n if (e.startTime) {\n if (Array.isArray(e.startTime)) {\n const E = g(e.startTime[0]), z = g(e.startTime[1]);\n return [we(P(), E), we(P(), z)];\n }\n const M = g(e.startTime);\n return we(P(), M);\n }\n return e.range ? [null, null] : null;\n }, R = () => {\n if (e.range) {\n const [M, E] = Y();\n a.value = [c(M, 0), c(E, 1)];\n } else\n a.value = c(Y());\n }, G = (M) => Array.isArray(M) ? [vt(P(M[0])), vt(P(M[1]))] : [vt(M ?? P())], q = (M, E, z) => {\n y(\"hours\", M), y(\"minutes\", E), e.enableSeconds && y(\"seconds\", z);\n }, J = () => {\n const [M, E] = G(a.value);\n return e.range ? q(\n [M.hours, E.hours],\n [M.minutes, E.minutes],\n [M.seconds, E.minutes]\n ) : q(M.hours, M.minutes, M.seconds);\n };\n Ue(() => {\n if (!e.shadow)\n return D(r.value), a.value ? J() : R();\n });\n const Q = () => {\n Array.isArray(a.value) ? a.value = a.value.map((M, E) => M && c(M, E)) : a.value = c(a.value), n(\"time-update\");\n };\n return {\n time: t,\n disabledTimesConfig: S,\n updateTime: (M, E = !0, z = !1) => {\n l(M, E, z, Q);\n }\n };\n}, Nl = /* @__PURE__ */ Be({\n compatConfig: {\n MODE: 3\n },\n __name: \"TimePickerSolo\",\n props: {\n ...xe\n },\n emits: [\"update:internal-model-value\", \"time-update\", \"am-pm-change\"],\n setup(e, { emit: n }) {\n const a = e, t = Yt(), r = ze(t, \"timePicker\"), { time: l, disabledTimesConfig: c, updateTime: y } = Ol(a, n);\n return (D, S) => (b(), ce(Un, {\n \"multi-calendars\": 0,\n stretch: \"\"\n }, {\n default: ue(() => [\n Ze(Ya, Ie(D.$props, {\n hours: m(l).hours,\n minutes: m(l).minutes,\n seconds: m(l).seconds,\n \"internal-model-value\": D.internalModelValue,\n \"disabled-times-config\": m(c),\n \"onUpdate:hours\": S[0] || (S[0] = (g) => m(y)(g)),\n \"onUpdate:minutes\": S[1] || (S[1] = (g) => m(y)(g, !1)),\n \"onUpdate:seconds\": S[2] || (S[2] = (g) => m(y)(g, !1, !0)),\n onAmPmChange: S[3] || (S[3] = (g) => D.$emit(\"am-pm-change\", g))\n }), Ee({ _: 2 }, [\n Me(m(r), (g, Y) => ({\n name: g,\n fn: ue((R) => [\n ae(D.$slots, g, Ce(Ve(R)))\n ])\n }))\n ]), 1040, [\"hours\", \"minutes\", \"seconds\", \"internal-model-value\", \"disabled-times-config\"])\n ]),\n _: 3\n }));\n }\n}), Yl = { class: \"dp__month_year_row\" }, Il = [\"aria-label\", \"onClick\", \"onKeydown\"], Bl = /* @__PURE__ */ Be({\n compatConfig: {\n MODE: 3\n },\n __name: \"DpHeader\",\n props: {\n month: { type: Number, default: 0 },\n year: { type: Number, default: 0 },\n instance: { type: Number, default: 0 },\n years: { type: Array, default: () => [] },\n months: { type: Array, default: () => [] },\n ...xe\n },\n emits: [\"update-month-year\", \"mount\", \"reset-flow\", \"overlay-closed\"],\n setup(e, { expose: n, emit: a }) {\n const t = e, { defaultedTransitions: r, defaultedAriaLabels: l, defaultedMultiCalendars: c, defaultedFilters: y, defaultedConfig: D } = Se(t), { transitionName: S, showTransition: g } = Bt(r), { buildMatrix: Y } = lt(), { handleMonthYearChange: R, isDisabled: G, updateMonthYear: q } = Gr(t, a), { showLeftIcon: J, showRightIcon: Q } = qt(), p = Z(!1), M = Z(!1), E = Z([null, null, null, null]);\n Ue(() => {\n a(\"mount\");\n });\n const z = (d) => ({\n get: () => t[d],\n set: (o) => {\n const $ = d === Le.month ? Le.year : Le.month;\n a(\"update-month-year\", { [d]: o, [$]: t[$] }), d === Le.month ? H(!0) : ee(!0);\n }\n }), K = W(z(Le.month)), _ = W(z(Le.year)), re = W(() => (d) => ({\n month: t.month,\n year: t.year,\n items: d === Le.month ? t.months : t.years,\n instance: t.instance,\n updateMonthYear: q,\n toggle: d === Le.month ? H : ee\n })), x = W(() => {\n const d = t.months.find((o) => o.value === t.month);\n return d || { text: \"\", value: 0 };\n }), L = W(() => kt(t.months, (d) => {\n const o = t.month === d.value, $ = Rt(\n d.value,\n Ta(t.year, t.minDate),\n Aa(t.year, t.maxDate)\n ) || y.value.months.includes(d.value);\n return { active: o, disabled: $ };\n })), h = W(() => kt(t.years, (d) => {\n const o = t.year === d.value, $ = Rt(d.value, wt(t.minDate), wt(t.maxDate)) || y.value.years.includes(d.value);\n return { active: o, disabled: $ };\n })), T = (d, o) => {\n o !== void 0 ? d.value = o : d.value = !d.value, d.value || a(\"overlay-closed\");\n }, H = (d = !1, o) => {\n v(d), T(p, o);\n }, ee = (d = !1, o) => {\n v(d), T(M, o);\n }, v = (d) => {\n d || a(\"reset-flow\");\n }, I = (d, o) => {\n t.arrowNavigation && (E.value[o] = Ae(d), Y(E.value, \"monthYear\"));\n }, f = W(() => {\n var d, o;\n return [\n {\n type: Le.month,\n index: 1,\n toggle: H,\n modelValue: K.value,\n updateModelValue: ($) => K.value = $,\n text: x.value.text,\n showSelectionGrid: p.value,\n items: L.value,\n ariaLabel: (d = l.value) == null ? void 0 : d.openMonthsOverlay\n },\n {\n type: Le.year,\n index: 2,\n toggle: ee,\n modelValue: _.value,\n updateModelValue: ($) => _.value = $,\n text: t.year,\n showSelectionGrid: M.value,\n items: h.value,\n ariaLabel: (o = l.value) == null ? void 0 : o.openYearsOverlay\n }\n ];\n }), k = W(\n () => t.disableYearSelect ? [f.value[0]] : f.value\n );\n return n({\n toggleMonthPicker: H,\n toggleYearPicker: ee,\n handleMonthYearChange: R\n }), (d, o) => {\n var $, X, s;\n return b(), F(\"div\", Yl, [\n d.$slots[\"month-year\"] ? ae(d.$slots, \"month-year\", Ce(Ie({ key: 0 }, { month: e.month, year: e.year, months: e.months, years: e.years, updateMonthYear: m(q), handleMonthYearChange: m(R), instance: e.instance }))) : (b(), F(de, { key: 1 }, [\n m(J)(m(c), e.instance) && !d.vertical ? (b(), ce(St, {\n key: 0,\n \"aria-label\": ($ = m(l)) == null ? void 0 : $.prevMonth,\n disabled: m(G)(!1),\n onActivate: o[0] || (o[0] = (u) => m(R)(!1, !0)),\n onSetRef: o[1] || (o[1] = (u) => I(u, 0))\n }, {\n default: ue(() => [\n d.$slots[\"arrow-left\"] ? ae(d.$slots, \"arrow-left\", { key: 0 }) : V(\"\", !0),\n d.$slots[\"arrow-left\"] ? V(\"\", !0) : (b(), ce(m(Rn), { key: 1 }))\n ]),\n _: 3\n }, 8, [\"aria-label\", \"disabled\"])) : V(\"\", !0),\n oe(\"div\", {\n class: ye([\"dp__month_year_wrap\", {\n dp__year_disable_select: d.disableYearSelect\n }])\n }, [\n (b(!0), F(de, null, Me(k.value, (u, C) => (b(), F(de, {\n key: u.type\n }, [\n oe(\"button\", {\n type: \"button\",\n class: \"dp__btn dp__month_year_select\",\n tabindex: \"0\",\n \"aria-label\": u.ariaLabel,\n ref_for: !0,\n ref: (O) => I(O, C + 1),\n onClick: u.toggle,\n onKeydown: [\n le(pe(u.toggle, [\"prevent\"]), [\"enter\"]),\n le(pe(u.toggle, [\"prevent\"]), [\"space\"])\n ]\n }, [\n d.$slots[u.type] ? ae(d.$slots, u.type, {\n key: 0,\n text: u.text,\n value: t[u.type]\n }) : V(\"\", !0),\n d.$slots[u.type] ? V(\"\", !0) : (b(), F(de, { key: 1 }, [\n at(Ne(u.text), 1)\n ], 64))\n ], 40, Il),\n Ze(Dt, {\n name: m(S)(u.showSelectionGrid),\n css: m(g)\n }, {\n default: ue(() => [\n u.showSelectionGrid ? (b(), ce(Ot, {\n key: 0,\n items: u.items,\n \"arrow-navigation\": d.arrowNavigation,\n \"hide-navigation\": d.hideNavigation,\n \"is-last\": d.autoApply && !d.keepActionRow && !m(D).keepActionRow,\n \"skip-button-ref\": !1,\n config: d.config,\n type: u.type,\n \"header-refs\": [],\n \"esc-close\": d.escClose,\n \"text-input\": d.textInput,\n onSelected: u.updateModelValue,\n onToggle: u.toggle\n }, Ee({\n \"button-icon\": ue(() => [\n d.$slots[\"calendar-icon\"] ? ae(d.$slots, \"calendar-icon\", { key: 0 }) : V(\"\", !0),\n d.$slots[\"calendar-icon\"] ? V(\"\", !0) : (b(), ce(m(It), { key: 1 }))\n ]),\n _: 2\n }, [\n d.$slots[`${u.type}-overlay-val`] ? {\n name: \"item\",\n fn: ue(({ item: O }) => [\n ae(d.$slots, `${u.type}-overlay-val`, {\n text: O.text,\n value: O.value\n })\n ]),\n key: \"0\"\n } : void 0,\n d.$slots[`${u.type}-overlay`] ? {\n name: \"overlay\",\n fn: ue(() => [\n ae(d.$slots, `${u.type}-overlay`, Ce(Ve(re.value(u.type))))\n ]),\n key: \"1\"\n } : void 0,\n d.$slots[`${u.type}-overlay-header`] ? {\n name: \"header\",\n fn: ue(() => [\n ae(d.$slots, `${u.type}-overlay-header`, {\n toggle: u.toggle\n })\n ]),\n key: \"2\"\n } : void 0\n ]), 1032, [\"items\", \"arrow-navigation\", \"hide-navigation\", \"is-last\", \"config\", \"type\", \"esc-close\", \"text-input\", \"onSelected\", \"onToggle\"])) : V(\"\", !0)\n ]),\n _: 2\n }, 1032, [\"name\", \"css\"])\n ], 64))), 128))\n ], 2),\n m(J)(m(c), e.instance) && d.vertical ? (b(), ce(St, {\n key: 1,\n \"aria-label\": (X = m(l)) == null ? void 0 : X.prevMonth,\n disabled: m(G)(!1),\n onActivate: o[2] || (o[2] = (u) => m(R)(!1, !0))\n }, {\n default: ue(() => [\n d.$slots[\"arrow-up\"] ? ae(d.$slots, \"arrow-up\", { key: 0 }) : V(\"\", !0),\n d.$slots[\"arrow-up\"] ? V(\"\", !0) : (b(), ce(m(Yn), { key: 1 }))\n ]),\n _: 3\n }, 8, [\"aria-label\", \"disabled\"])) : V(\"\", !0),\n m(Q)(m(c), e.instance) ? (b(), ce(St, {\n key: 2,\n ref: \"rightIcon\",\n disabled: m(G)(!0),\n \"aria-label\": (s = m(l)) == null ? void 0 : s.nextMonth,\n onActivate: o[3] || (o[3] = (u) => m(R)(!0, !0)),\n onSetRef: o[4] || (o[4] = (u) => I(u, d.disableYearSelect ? 2 : 3))\n }, {\n default: ue(() => [\n d.$slots[d.vertical ? \"arrow-down\" : \"arrow-right\"] ? ae(d.$slots, d.vertical ? \"arrow-down\" : \"arrow-right\", { key: 0 }) : V(\"\", !0),\n d.$slots[d.vertical ? \"arrow-down\" : \"arrow-right\"] ? V(\"\", !0) : (b(), ce(Pn(d.vertical ? m(In) : m(On)), { key: 1 }))\n ]),\n _: 3\n }, 8, [\"disabled\", \"aria-label\"])) : V(\"\", !0)\n ], 64))\n ]);\n };\n }\n}), El = [\"aria-label\"], Fl = {\n class: \"dp__calendar_header\",\n role: \"row\"\n}, Vl = {\n key: 0,\n class: \"dp__calendar_header_item\",\n role: \"gridcell\"\n}, Hl = /* @__PURE__ */ oe(\"div\", { class: \"dp__calendar_header_separator\" }, null, -1), Ul = [\"aria-label\"], Ll = {\n key: 0,\n role: \"gridcell\",\n class: \"dp__calendar_item dp__week_num\"\n}, Wl = { class: \"dp__cell_inner\" }, zl = [\"aria-selected\", \"aria-disabled\", \"aria-label\", \"onClick\", \"onKeydown\", \"onMouseenter\", \"onMouseleave\"], jl = /* @__PURE__ */ Be({\n compatConfig: {\n MODE: 3\n },\n __name: \"DpCalendar\",\n props: {\n mappedDates: { type: Array, default: () => [] },\n instance: { type: Number, default: 0 },\n month: { type: Number, default: 0 },\n year: { type: Number, default: 0 },\n ...xe\n },\n emits: [\n \"select-date\",\n \"set-hover-date\",\n \"handle-scroll\",\n \"mount\",\n \"handle-swipe\",\n \"handle-space\",\n \"tooltip-open\",\n \"tooltip-close\"\n ],\n setup(e, { expose: n, emit: a }) {\n const t = e, { buildMultiLevelMatrix: r } = lt(), { defaultedTransitions: l, defaultedConfig: c, defaultedAriaLabels: y, defaultedMultiCalendars: D } = Se(t), S = Z(null), g = Z({\n bottom: \"\",\n left: \"\",\n transform: \"\"\n }), Y = Z([]), R = Z(null), G = Z(!0), q = Z(\"\"), J = Z({ startX: 0, endX: 0, startY: 0, endY: 0 }), Q = Z([]), p = Z({ left: \"50%\" }), M = W(() => t.calendar ? t.calendar(t.mappedDates) : t.mappedDates), E = W(() => t.dayNames ? Array.isArray(t.dayNames) ? t.dayNames : t.dayNames(t.locale, +t.weekStart) : Tr(t.formatLocale, t.locale, +t.weekStart));\n Ue(() => {\n a(\"mount\", { cmp: \"calendar\", refs: Y }), !t.noSwipe && !c.value.noSwipe && R.value && (R.value.addEventListener(\"touchstart\", ee, { passive: !1 }), R.value.addEventListener(\"touchend\", v, { passive: !1 }), R.value.addEventListener(\"touchmove\", I, { passive: !1 })), t.monthChangeOnScroll && R.value && R.value.addEventListener(\"wheel\", d, { passive: !1 });\n });\n const z = (s) => s ? t.vertical ? \"vNext\" : \"next\" : t.vertical ? \"vPrevious\" : \"previous\", K = (s, u) => {\n if (t.transitions) {\n const C = He(Je(P(), t.month, t.year));\n q.value = Re(He(Je(P(), s, u)), C) ? l.value[z(!0)] : l.value[z(!1)], G.value = !1, rt(() => {\n G.value = !0;\n });\n }\n }, _ = W(\n () => ({\n [t.calendarClassName]: !!t.calendarClassName\n })\n ), re = W(() => (s) => {\n const u = Sr(s);\n return {\n dp__marker_dot: u.type === \"dot\",\n dp__marker_line: u.type === \"line\"\n };\n }), x = W(() => (s) => ge(s, S.value)), L = W(() => ({\n dp__calendar: !0,\n dp__calendar_next: D.value.count > 0 && t.instance !== 0\n })), h = W(() => (s) => t.hideOffsetDates ? s.current : !0), T = async (s, u, C) => {\n var O, A;\n if (a(\"set-hover-date\", s), (A = (O = s.marker) == null ? void 0 : O.tooltip) != null && A.length) {\n const te = Ae(Y.value[u][C]);\n if (te) {\n const { width: B, height: ie } = te.getBoundingClientRect();\n S.value = s.value;\n let he = { left: `${B / 2}px` }, me = -50;\n if (await rt(), Q.value[0]) {\n const { left: N, width: j } = Q.value[0].getBoundingClientRect();\n N < 0 && (he = { left: \"0\" }, me = 0, p.value.left = `${B / 2}px`), window.innerWidth < N + j && (he = { right: \"0\" }, me = 0, p.value.left = `${j - B / 2}px`);\n }\n g.value = {\n bottom: `${ie}px`,\n ...he,\n transform: `translateX(${me}%)`\n }, a(\"tooltip-open\", s.marker);\n }\n }\n }, H = (s) => {\n S.value && (S.value = null, g.value = JSON.parse(JSON.stringify({ bottom: \"\", left: \"\", transform: \"\" })), a(\"tooltip-close\", s.marker));\n }, ee = (s) => {\n J.value.startX = s.changedTouches[0].screenX, J.value.startY = s.changedTouches[0].screenY;\n }, v = (s) => {\n J.value.endX = s.changedTouches[0].screenX, J.value.endY = s.changedTouches[0].screenY, f();\n }, I = (s) => {\n t.vertical && !t.inline && s.preventDefault();\n }, f = () => {\n const s = t.vertical ? \"Y\" : \"X\";\n Math.abs(J.value[`start${s}`] - J.value[`end${s}`]) > 10 && a(\"handle-swipe\", J.value[`start${s}`] > J.value[`end${s}`] ? \"right\" : \"left\");\n }, k = (s, u, C) => {\n s && (Array.isArray(Y.value[u]) ? Y.value[u][C] = s : Y.value[u] = [s]), t.arrowNavigation && r(Y.value, \"calendar\");\n }, d = (s) => {\n t.monthChangeOnScroll && (s.preventDefault(), a(\"handle-scroll\", s));\n }, o = (s) => {\n const u = s[0];\n return t.weekNumbers === \"local\" ? Xa(u.value, { weekStartsOn: +t.weekStart }) : t.weekNumbers === \"iso\" ? Ja(u.value) : typeof t.weekNumbers == \"function\" ? t.weekNumbers(u.value) : \"\";\n }, $ = (s, u) => {\n tt(s, c.value), a(\"select-date\", u);\n }, X = (s) => {\n tt(s, c.value);\n };\n return n({ triggerTransition: K }), (s, u) => {\n var C;\n return b(), F(\"div\", {\n class: ye(L.value)\n }, [\n oe(\"div\", {\n ref_key: \"calendarWrapRef\",\n ref: R,\n role: \"grid\",\n class: ye(_.value),\n \"aria-label\": (C = m(y)) == null ? void 0 : C.calendarWrap\n }, [\n (b(), F(de, { key: 0 }, [\n oe(\"div\", Fl, [\n s.weekNumbers ? (b(), F(\"div\", Vl, Ne(s.weekNumName), 1)) : V(\"\", !0),\n (b(!0), F(de, null, Me(E.value, (O, A) => (b(), F(\"div\", {\n class: \"dp__calendar_header_item\",\n role: \"gridcell\",\n key: A\n }, [\n s.$slots[\"calendar-header\"] ? ae(s.$slots, \"calendar-header\", {\n key: 0,\n day: O,\n index: A\n }) : V(\"\", !0),\n s.$slots[\"calendar-header\"] ? V(\"\", !0) : (b(), F(de, { key: 1 }, [\n at(Ne(O), 1)\n ], 64))\n ]))), 128))\n ]),\n Hl,\n Ze(Dt, {\n name: q.value,\n css: !!s.transitions\n }, {\n default: ue(() => {\n var O;\n return [\n G.value ? (b(), F(\"div\", {\n key: 0,\n class: \"dp__calendar\",\n role: \"grid\",\n \"aria-label\": ((O = m(y)) == null ? void 0 : O.calendarDays) || void 0\n }, [\n (b(!0), F(de, null, Me(M.value, (A, te) => (b(), F(\"div\", {\n class: \"dp__calendar_row\",\n role: \"row\",\n key: te\n }, [\n s.weekNumbers ? (b(), F(\"div\", Ll, [\n oe(\"div\", Wl, Ne(o(A.days)), 1)\n ])) : V(\"\", !0),\n (b(!0), F(de, null, Me(A.days, (B, ie) => {\n var he, me, N;\n return b(), F(\"div\", {\n role: \"gridcell\",\n class: \"dp__calendar_item\",\n ref_for: !0,\n ref: (j) => k(j, te, ie),\n key: ie + te,\n \"aria-selected\": B.classData.dp__active_date || B.classData.dp__range_start || B.classData.dp__range_start,\n \"aria-disabled\": B.classData.dp__cell_disabled || void 0,\n \"aria-label\": (me = (he = m(y)) == null ? void 0 : he.day) == null ? void 0 : me.call(he, B),\n tabindex: \"0\",\n onClick: pe((j) => $(j, B), [\"prevent\"]),\n onKeydown: [\n le((j) => s.$emit(\"select-date\", B), [\"enter\"]),\n le((j) => s.$emit(\"handle-space\", B), [\"space\"])\n ],\n onMouseenter: (j) => T(B, te, ie),\n onMouseleave: (j) => H(B)\n }, [\n oe(\"div\", {\n class: ye([\"dp__cell_inner\", B.classData])\n }, [\n s.$slots.day && h.value(B) ? ae(s.$slots, \"day\", {\n key: 0,\n day: +B.text,\n date: B.value\n }) : V(\"\", !0),\n s.$slots.day ? V(\"\", !0) : (b(), F(de, { key: 1 }, [\n at(Ne(B.text), 1)\n ], 64)),\n B.marker && h.value(B) ? (b(), F(de, { key: 2 }, [\n s.$slots.marker ? ae(s.$slots, \"marker\", {\n key: 0,\n marker: B.marker,\n day: +B.text,\n date: B.value\n }) : (b(), F(\"div\", {\n key: 1,\n class: ye(re.value(B.marker)),\n style: Ke(B.marker.color ? { backgroundColor: B.marker.color } : {})\n }, null, 6))\n ], 64)) : V(\"\", !0),\n x.value(B.value) ? (b(), F(\"div\", {\n key: 3,\n class: \"dp__marker_tooltip\",\n ref_for: !0,\n ref_key: \"activeTooltip\",\n ref: Q,\n style: Ke(g.value)\n }, [\n (N = B.marker) != null && N.tooltip ? (b(), F(\"div\", {\n key: 0,\n class: \"dp__tooltip_content\",\n onClick: X\n }, [\n (b(!0), F(de, null, Me(B.marker.tooltip, (j, De) => (b(), F(\"div\", {\n key: De,\n class: \"dp__tooltip_text\"\n }, [\n s.$slots[\"marker-tooltip\"] ? ae(s.$slots, \"marker-tooltip\", {\n key: 0,\n tooltip: j,\n day: B.value\n }) : V(\"\", !0),\n s.$slots[\"marker-tooltip\"] ? V(\"\", !0) : (b(), F(de, { key: 1 }, [\n oe(\"div\", {\n class: \"dp__tooltip_mark\",\n style: Ke(j.color ? { backgroundColor: j.color } : {})\n }, null, 4),\n oe(\"div\", null, Ne(j.text), 1)\n ], 64))\n ]))), 128)),\n oe(\"div\", {\n class: \"dp__arrow_bottom_tp\",\n style: Ke(p.value)\n }, null, 4)\n ])) : V(\"\", !0)\n ], 4)) : V(\"\", !0)\n ], 2)\n ], 40, zl);\n }), 128))\n ]))), 128))\n ], 8, Ul)) : V(\"\", !0)\n ];\n }),\n _: 3\n }, 8, [\"name\", \"css\"])\n ], 64))\n ], 10, El)\n ], 2);\n };\n }\n}), ia = (e) => Array.isArray(e), Kl = (e, n, a, t) => {\n const r = Z([]), { modelValue: l, calendars: c, time: y } = Zt(e, n), { defaultedMultiCalendars: D, defaultedStartTime: S } = Se(e), { validateMonthYearInRange: g, isDisabled: Y, isDateRangeAllowed: R, checkMinMaxRange: G } = Et(e), { updateTimeValues: q, getSetDateTime: J, setTime: Q, assignStartTime: p, disabledTimesConfig: M } = Ia(\n e,\n y,\n l,\n t\n ), E = W(\n () => (i) => c.value[i] ? c.value[i].month : 0\n ), z = W(\n () => (i) => c.value[i] ? c.value[i].year : 0\n ), K = (i, w, U) => {\n var se, be;\n c.value[i] || (c.value[i] = { month: 0, year: 0 }), c.value[i].month = aa(w) ? (se = c.value[i]) == null ? void 0 : se.month : w, c.value[i].year = aa(U) ? (be = c.value[i]) == null ? void 0 : be.year : U;\n }, _ = () => {\n e.autoApply && n(\"select-date\");\n };\n gt(l, (i, w) => {\n JSON.stringify(i) !== JSON.stringify(w) && L();\n }), Ue(() => {\n e.shadow || (l.value || (o(), S.value && p(S.value)), L(!0), e.focusStartDate && e.startDate && o());\n });\n const re = W(() => {\n var i;\n return (i = e.flow) != null && i.length && !e.partialFlow ? e.flowStep === e.flow.length : !0;\n }), x = () => {\n e.autoApply && re.value && n(\"auto-apply\", e.partialFlow);\n }, L = (i = !1) => {\n if (l.value)\n return Array.isArray(l.value) ? (r.value = l.value, I(i)) : T(l.value, i);\n if (D.value.count && i && !e.startDate)\n return h(P(), i);\n }, h = (i, w = !1) => {\n if ((!D.value.count || !D.value.static || w) && K(0, ve(i), fe(i)), D.value.count)\n for (let U = 1; U < D.value.count; U++) {\n const se = we(P(), { month: E.value(U - 1), year: z.value(U - 1) }), be = pa(se, { months: 1 });\n c.value[U] = { month: ve(be), year: fe(be) };\n }\n }, T = (i, w) => {\n h(i), Q(\"hours\", qe(i)), Q(\"minutes\", Xe(i)), Q(\"seconds\", bt(i)), D.value.count && w && d();\n }, H = (i) => {\n if (D.value.count) {\n if (D.value.solo)\n return 0;\n const w = ve(i[0]), U = ve(i[1]);\n return Math.abs(U - w) < D.value.count ? 0 : 1;\n }\n return 1;\n }, ee = (i, w) => {\n i[1] && e.showLastInRange ? h(i[H(i)], w) : h(i[0], w);\n const U = (se, be) => [\n se(i[0]),\n i[1] ? se(i[1]) : y[be][1]\n ];\n Q(\"hours\", U(qe, \"hours\")), Q(\"minutes\", U(Xe, \"minutes\")), Q(\"seconds\", U(bt, \"seconds\"));\n }, v = (i, w) => {\n if ((e.range || e.weekPicker) && !e.multiDates)\n return ee(i, w);\n if (e.multiDates && w) {\n const U = i[i.length - 1];\n return T(U, w);\n }\n }, I = (i) => {\n const w = l.value;\n v(w, i), D.value.count && D.value.solo && d();\n }, f = (i, w) => {\n const U = we(P(), { month: E.value(w), year: z.value(w) }), se = i < 0 ? ft(U, 1) : Ct(U, 1);\n g(ve(se), fe(se), i < 0, e.preventMinMaxNavigation) && (K(w, ve(se), fe(se)), D.value.count && !D.value.solo && k(w), a());\n }, k = (i) => {\n for (let w = i - 1; w >= 0; w--) {\n const U = Ct(we(P(), { month: E.value(w + 1), year: z.value(w + 1) }), 1);\n K(w, ve(U), fe(U));\n }\n for (let w = i + 1; w <= D.value.count - 1; w++) {\n const U = ft(we(P(), { month: E.value(w - 1), year: z.value(w - 1) }), 1);\n K(w, ve(U), fe(U));\n }\n }, d = () => {\n if (Array.isArray(l.value) && l.value.length === 2) {\n const i = P(\n P(l.value[1] ? l.value[1] : ft(l.value[0], 1))\n ), [w, U] = [ve(l.value[0]), fe(l.value[0])], [se, be] = [ve(l.value[1]), fe(l.value[1])];\n (w !== se || w === se && U !== be) && D.value.solo && K(1, ve(i), fe(i));\n } else\n l.value && !Array.isArray(l.value) && (K(0, ve(l.value), fe(l.value)), h(P()));\n }, o = () => {\n e.startDate && (K(0, ve(P(e.startDate)), fe(P(e.startDate))), D.value.count && k(0));\n }, $ = (i, w) => {\n e.monthChangeOnScroll && f(e.monthChangeOnScroll !== \"inverse\" ? -i.deltaY : i.deltaY, w);\n }, X = (i, w, U = !1) => {\n e.monthChangeOnArrows && e.vertical === U && s(i, w);\n }, s = (i, w) => {\n f(i === \"right\" ? -1 : 1, w);\n }, u = (i) => e.markers.find((w) => ge(la(i.value), la(w.date))), C = (i, w) => {\n switch (e.sixWeeks === !0 ? \"append\" : e.sixWeeks) {\n case \"prepend\":\n return [!0, !1];\n case \"center\":\n return [i == 0, !0];\n case \"fair\":\n return [i == 0 || w > i, !0];\n case \"append\":\n return [!1, !1];\n default:\n return [!1, !1];\n }\n }, O = (i, w, U, se) => {\n if (e.sixWeeks && i.length < 6) {\n const be = 6 - i.length, Qe = (w.getDay() + 7 - se) % 7, Ft = 6 - (U.getDay() + 7 - se) % 7, [Tt, ln] = C(Qe, Ft);\n for (let ot = 1; ot <= be; ot++)\n if (ln ? !!(ot % 2) == Tt : Tt) {\n const Vt = i[0].days[0], on = A(it(Vt.value, -7), ve(w));\n i.unshift({ days: on });\n } else {\n const Vt = i[i.length - 1], on = Vt.days[Vt.days.length - 1], Ea = A(it(on.value, 1), ve(w));\n i.push({ days: Ea });\n }\n }\n return i;\n }, A = (i, w) => {\n const U = P(i), se = [];\n for (let be = 0; be < 7; be++) {\n const Qe = it(U, be), $t = ve(Qe) !== w;\n se.push({\n text: e.hideOffsetDates && $t ? \"\" : Qe.getDate(),\n value: Qe,\n current: !$t,\n classData: {}\n });\n }\n return se;\n }, te = (i, w) => {\n const U = [], se = P(Ge(new Date(w, i), e.timezone)), be = P(Ge(new Date(w, i + 1, 0), e.timezone)), Qe = e.weekStart, $t = ga(se, { weekStartsOn: Qe }), Ft = (Tt) => {\n const ln = A(Tt, i);\n if (U.push({ days: ln }), !U[U.length - 1].days.some(\n (ot) => ge(He(ot.value), He(be))\n )) {\n const ot = it(Tt, 7);\n Ft(ot);\n }\n };\n return Ft($t), O(U, se, be, Qe);\n }, B = (i) => (l.value = jt(P(i.value), e.timezone, e.weekStart), x()), ie = (i) => {\n const w = nt(P(i.value), y.hours, y.minutes, Te());\n e.multiDates ? Ln(w, l, e.multiDatesLimit) : l.value = w, t(), rt().then(() => {\n x();\n });\n }, he = (i) => e.noDisabledRange ? _a(r.value[0], i).some((U) => Y(U)) : !1, me = () => {\n r.value = l.value ? l.value.slice() : [], r.value.length === 2 && !(e.fixedStart || e.fixedEnd) && (r.value = []);\n }, N = (i, w) => {\n const U = [P(i.value), it(P(i.value), +e.autoRange)];\n R(U) && (w && j(i.value), r.value = U);\n }, j = (i) => {\n const w = ve(P(i)), U = fe(P(i));\n if (K(0, w, U), D.value.count > 0)\n for (let se = 1; se < D.value.count; se++) {\n const be = Or(\n we(P(i), { year: E.value(se - 1), month: z.value(se - 1) })\n );\n K(se, be.month, be.year);\n }\n }, De = (i) => Array.isArray(l.value) && l.value.length === 2 ? e.fixedStart && (Re(i, l.value[0]) || ge(i, l.value[0])) ? [l.value[0], i] : e.fixedEnd && (Pe(i, l.value[1]) || ge(i, l.value[1])) ? [i, l.value[1]] : (n(\"invalid-fixed-range\", i), l.value) : [], ne = (i) => {\n he(i.value) || !G(i.value, l.value, e.fixedStart ? 0 : 1) || (r.value = De(P(i.value)));\n }, Fe = (i, w) => {\n if (me(), e.autoRange)\n return N(i, w);\n if (e.fixedStart || e.fixedEnd)\n return ne(i);\n r.value[0] ? G(P(i.value), l.value) && !he(i.value) && (Pe(P(i.value), P(r.value[0])) ? (r.value.unshift(P(i.value)), n(\"range-end\", r.value[0])) : (r.value[1] = P(i.value), n(\"range-end\", r.value[1]))) : (r.value[0] = P(i.value), n(\"range-start\", r.value[0]));\n }, Te = (i = !0) => e.enableSeconds ? Array.isArray(y.seconds) ? i ? y.seconds[0] : y.seconds[1] : y.seconds : 0, Mt = (i) => {\n r.value[i] = nt(\n r.value[i],\n y.hours[i],\n y.minutes[i],\n Te(i !== 1)\n );\n }, Jt = () => {\n var i, w;\n r.value[0] && r.value[1] && +((i = r.value) == null ? void 0 : i[0]) > +((w = r.value) == null ? void 0 : w[1]) && (r.value.reverse(), n(\"range-start\", r.value[0]), n(\"range-end\", r.value[1]));\n }, xt = () => {\n r.value.length && (r.value[0] && !r.value[1] ? Mt(0) : (Mt(0), Mt(1), t()), Jt(), l.value = r.value.slice(), Wn(r.value, n, e.autoApply, e.modelAuto));\n }, Qt = (i, w = !1) => {\n if (!(Y(i.value) || !i.current && e.hideOffsetDates)) {\n if (e.weekPicker)\n return B(i);\n if (!e.range)\n return ie(i);\n ia(y.hours) && ia(y.minutes) && !e.multiDates && (Fe(i, w), xt());\n }\n }, en = (i, w) => {\n var se;\n K(i, w.month, w.year), D.value.count && !D.value.solo && k(i), n(\"update-month-year\", { instance: i, month: w.month, year: w.year }), a(D.value.solo ? i : void 0);\n const U = (se = e.flow) != null && se.length ? e.flow[e.flowStep] : void 0;\n !w.fromNav && (U === je.month || U === je.year) && t();\n }, tn = (i, w) => {\n Array.isArray(i) && i.length <= 2 && e.range ? l.value = i.map((U) => Ge(P(U), w ? void 0 : e.timezone)) : Array.isArray(i) || (l.value = Ge(P(i), w ? void 0 : e.timezone)), _(), e.multiCalendars && rt().then(() => L(!0));\n }, nn = () => {\n e.range ? l.value && Array.isArray(l.value) && l.value[0] ? l.value = Pe(P(), l.value[0]) ? [P(), l.value[0]] : [l.value[0], P()] : l.value = [P()] : l.value = P(), _();\n }, an = () => {\n if (Array.isArray(l.value))\n if (e.multiDates) {\n const i = rn();\n l.value[l.value.length - 1] = J(i);\n } else\n l.value = l.value.map((i, w) => i && J(i, w));\n else\n l.value = J(l.value);\n n(\"time-update\");\n }, rn = () => Array.isArray(l.value) && l.value.length ? l.value[l.value.length - 1] : null;\n return {\n calendars: c,\n modelValue: l,\n month: E,\n year: z,\n time: y,\n disabledTimesConfig: M,\n getCalendarDays: te,\n getMarker: u,\n handleScroll: $,\n handleSwipe: s,\n handleArrow: X,\n selectDate: Qt,\n updateMonthYear: en,\n presetDate: tn,\n selectCurrentDate: nn,\n updateTime: (i, w = !0, U = !1) => {\n q(i, w, U, an);\n }\n };\n}, Gl = { key: 0 }, Zl = /* @__PURE__ */ Be({\n __name: \"DatePicker\",\n props: {\n ...xe\n },\n emits: [\n \"tooltip-open\",\n \"tooltip-close\",\n \"mount\",\n \"update:internal-model-value\",\n \"update-flow-step\",\n \"reset-flow\",\n \"auto-apply\",\n \"focus-menu\",\n \"select-date\",\n \"range-start\",\n \"range-end\",\n \"invalid-fixed-range\",\n \"time-update\",\n \"am-pm-change\",\n \"time-picker-open\",\n \"time-picker-close\",\n \"recalculate-position\",\n \"update-month-year\"\n ],\n setup(e, { expose: n, emit: a }) {\n const t = e, {\n calendars: r,\n month: l,\n year: c,\n modelValue: y,\n time: D,\n disabledTimesConfig: S,\n getCalendarDays: g,\n getMarker: Y,\n handleArrow: R,\n handleScroll: G,\n handleSwipe: q,\n selectDate: J,\n updateMonthYear: Q,\n presetDate: p,\n selectCurrentDate: M,\n updateTime: E\n } = Kl(t, a, k, d), z = Yt(), { setHoverDate: K, getDayClassData: _, clearHoverDate: re } = Jr(y, t), { defaultedMultiCalendars: x } = Se(t), L = Z([]), h = Z([]), T = Z(null), H = ze(z, \"calendar\"), ee = ze(z, \"monthYear\"), v = ze(z, \"timePicker\"), I = (C) => {\n t.shadow || a(\"mount\", C);\n };\n gt(\n r,\n () => {\n t.shadow || setTimeout(() => {\n a(\"recalculate-position\");\n }, 0);\n },\n { deep: !0 }\n );\n const f = W(() => (C) => g(l.value(C), c.value(C)).map((O) => ({\n ...O,\n days: O.days.map((A) => (A.marker = Y(A), A.classData = _(A), A))\n })));\n function k(C) {\n var O;\n C || C === 0 ? (O = h.value[C]) == null || O.triggerTransition(l.value(C), c.value(C)) : h.value.forEach((A, te) => A.triggerTransition(l.value(te), c.value(te)));\n }\n function d() {\n a(\"update-flow-step\");\n }\n const o = (C, O = !1) => {\n J(C, O), t.spaceConfirm && a(\"select-date\");\n };\n return n({\n clearHoverDate: re,\n presetDate: p,\n selectCurrentDate: M,\n toggleMonthPicker: (C, O, A = 0) => {\n var te;\n (te = L.value[A]) == null || te.toggleMonthPicker(C, O);\n },\n toggleYearPicker: (C, O, A = 0) => {\n var te;\n (te = L.value[A]) == null || te.toggleYearPicker(C, O);\n },\n toggleTimePicker: (C, O, A) => {\n var te;\n (te = T.value) == null || te.toggleTimePicker(C, O, A);\n },\n handleArrow: R,\n updateMonthYear: Q,\n getSidebarProps: () => ({\n modelValue: y,\n month: l,\n year: c,\n time: D,\n updateTime: E,\n updateMonthYear: Q,\n selectDate: J,\n presetDate: p\n })\n }), (C, O) => (b(), F(de, null, [\n Ze(Un, {\n \"multi-calendars\": m(x).count\n }, {\n default: ue(({ instance: A, index: te }) => [\n C.disableMonthYearSelect ? V(\"\", !0) : (b(), ce(Bl, Ie({\n key: 0,\n ref: (B) => {\n B && (L.value[te] = B);\n },\n months: m(Ma)(C.formatLocale, C.locale, C.monthNameFormat),\n years: m(Vn)(C.yearRange, C.reverseYears),\n month: m(l)(A),\n year: m(c)(A),\n instance: A\n }, C.$props, {\n onMount: O[0] || (O[0] = (B) => I(m(mt).header)),\n onResetFlow: O[1] || (O[1] = (B) => C.$emit(\"reset-flow\")),\n onUpdateMonthYear: (B) => m(Q)(A, B),\n onOverlayClosed: O[2] || (O[2] = (B) => C.$emit(\"focus-menu\"))\n }), Ee({ _: 2 }, [\n Me(m(ee), (B, ie) => ({\n name: B,\n fn: ue((he) => [\n ae(C.$slots, B, Ce(Ve(he)))\n ])\n }))\n ]), 1040, [\"months\", \"years\", \"month\", \"year\", \"instance\", \"onUpdateMonthYear\"])),\n Ze(jl, Ie({\n ref: (B) => {\n B && (h.value[te] = B);\n },\n \"mapped-dates\": f.value(A),\n month: m(l)(A),\n year: m(c)(A)\n }, C.$props, {\n onSelectDate: (B) => m(J)(B, A !== 1),\n onHandleSpace: (B) => o(B, A !== 1),\n onSetHoverDate: O[3] || (O[3] = (B) => m(K)(B)),\n onHandleScroll: (B) => m(G)(B, A),\n onHandleSwipe: (B) => m(q)(B, A),\n onMount: O[4] || (O[4] = (B) => I(m(mt).calendar)),\n onResetFlow: O[5] || (O[5] = (B) => C.$emit(\"reset-flow\")),\n onTooltipOpen: O[6] || (O[6] = (B) => C.$emit(\"tooltip-open\", B)),\n onTooltipClose: O[7] || (O[7] = (B) => C.$emit(\"tooltip-close\", B))\n }), Ee({ _: 2 }, [\n Me(m(H), (B, ie) => ({\n name: B,\n fn: ue((he) => [\n ae(C.$slots, B, Ce(Ve({ ...he })))\n ])\n }))\n ]), 1040, [\"mapped-dates\", \"month\", \"year\", \"onSelectDate\", \"onHandleSpace\", \"onHandleScroll\", \"onHandleSwipe\"])\n ]),\n _: 3\n }, 8, [\"multi-calendars\"]),\n C.enableTimePicker ? (b(), F(\"div\", Gl, [\n C.$slots[\"time-picker\"] ? ae(C.$slots, \"time-picker\", Ce(Ie({ key: 0 }, { time: m(D), updateTime: m(E) }))) : (b(), ce(Ya, Ie({\n key: 1,\n ref_key: \"timePickerRef\",\n ref: T\n }, C.$props, {\n hours: m(D).hours,\n minutes: m(D).minutes,\n seconds: m(D).seconds,\n \"internal-model-value\": C.internalModelValue,\n \"disabled-times-config\": m(S),\n onMount: O[8] || (O[8] = (A) => I(m(mt).timePicker)),\n \"onUpdate:hours\": O[9] || (O[9] = (A) => m(E)(A)),\n \"onUpdate:minutes\": O[10] || (O[10] = (A) => m(E)(A, !1)),\n \"onUpdate:seconds\": O[11] || (O[11] = (A) => m(E)(A, !1, !0)),\n onResetFlow: O[12] || (O[12] = (A) => C.$emit(\"reset-flow\")),\n onOverlayClosed: O[13] || (O[13] = (A) => C.$emit(\"time-picker-close\")),\n onOverlayOpened: O[14] || (O[14] = (A) => C.$emit(\"time-picker-open\", A)),\n onAmPmChange: O[15] || (O[15] = (A) => C.$emit(\"am-pm-change\", A))\n }), Ee({ _: 2 }, [\n Me(m(v), (A, te) => ({\n name: A,\n fn: ue((B) => [\n ae(C.$slots, A, Ce(Ve(B)))\n ])\n }))\n ]), 1040, [\"hours\", \"minutes\", \"seconds\", \"internal-model-value\", \"disabled-times-config\"]))\n ])) : V(\"\", !0)\n ], 64));\n }\n}), ql = [\"id\", \"onKeydown\"], Xl = {\n key: 0,\n class: \"dp__sidebar_left\"\n}, Jl = {\n key: 1,\n class: \"dp--preset-dates\"\n}, xl = [\"onClick\", \"onKeydown\"], Ql = {\n key: 2,\n class: \"dp__sidebar_right\"\n}, eo = {\n key: 3,\n class: \"dp__action_extra\"\n}, da = /* @__PURE__ */ Be({\n compatConfig: {\n MODE: 3\n },\n __name: \"DatepickerMenu\",\n props: {\n ...Xt,\n shadow: { type: Boolean, default: !1 },\n openOnTop: { type: Boolean, default: !1 },\n internalModelValue: { type: [Date, Array], default: null },\n arrMapValues: { type: Object, default: () => ({}) }\n },\n emits: [\n \"close-picker\",\n \"select-date\",\n \"auto-apply\",\n \"time-update\",\n \"flow-step\",\n \"update-month-year\",\n \"invalid-select\",\n \"update:internal-model-value\",\n \"recalculate-position\",\n \"invalid-fixed-range\",\n \"tooltip-open\",\n \"tooltip-close\",\n \"time-picker-open\",\n \"time-picker-close\",\n \"am-pm-change\",\n \"range-start\",\n \"range-end\"\n ],\n setup(e, { expose: n, emit: a }) {\n const t = e, r = W(() => {\n const { openOnTop: N, ...j } = t;\n return {\n ...j,\n flowStep: re.value\n };\n }), { setMenuFocused: l, setShiftKey: c, control: y } = Oa(), D = Yt(), { defaultedTextInput: S, defaultedInline: g, defaultedConfig: Y } = Se(t), R = Z(null), G = Z(0), q = Z(null), J = Z(null), Q = Z(!1), p = Z(null);\n Ue(() => {\n if (!t.shadow) {\n Q.value = !0, M(), window.addEventListener(\"resize\", M);\n const N = Ae(q);\n if (N && !S.value.enabled && !g.value.enabled && (l(!0), H()), N) {\n const j = (De) => {\n (t.allowPreventDefault || Y.value.allowPreventDefault) && De.preventDefault(), tt(De, Y.value, !0);\n };\n N.addEventListener(\"pointerdown\", j), N.addEventListener(\"mousedown\", j);\n }\n }\n }), _n(() => {\n window.removeEventListener(\"resize\", M);\n });\n const M = () => {\n const N = Ae(J);\n N && (G.value = N.getBoundingClientRect().width);\n }, { arrowRight: E, arrowLeft: z, arrowDown: K, arrowUp: _ } = lt(), { flowStep: re, updateFlowStep: x, childMount: L, resetFlow: h } = xr(t, a, p), T = W(() => t.monthPicker ? gl : t.yearPicker ? hl : t.timePicker ? Nl : Zl), H = () => {\n const N = Ae(q);\n N && N.focus({ preventScroll: !0 });\n }, ee = W(() => {\n var N;\n return ((N = p.value) == null ? void 0 : N.getSidebarProps()) || {};\n }), v = () => {\n t.openOnTop && a(\"recalculate-position\");\n }, I = ze(D, \"action\"), f = W(() => t.monthPicker || t.yearPicker ? ze(D, \"monthYear\") : t.timePicker ? ze(D, \"timePicker\") : ze(D, \"shared\")), k = W(() => t.openOnTop ? \"dp__arrow_bottom\" : \"dp__arrow_top\"), d = W(() => ({\n dp__menu_disabled: t.disabled,\n dp__menu_readonly: t.readonly\n })), o = W(\n () => ({\n dp__menu: !0,\n dp__menu_index: !g.value.enabled,\n dp__relative: g.value.enabled,\n [t.menuClassName]: !!t.menuClassName\n })\n ), $ = (N) => {\n tt(N, Y.value, !0);\n }, X = () => {\n t.escClose && a(\"close-picker\");\n }, s = (N) => {\n if (t.arrowNavigation) {\n if (N === \"up\")\n return _();\n if (N === \"down\")\n return K();\n if (N === \"left\")\n return z();\n if (N === \"right\")\n return E();\n } else\n N === \"left\" || N === \"up\" ? te(\"handleArrow\", \"left\", 0, N === \"up\") : te(\"handleArrow\", \"right\", 0, N === \"down\");\n }, u = (N) => {\n c(N.shiftKey), !t.disableMonthYearSelect && N.code === \"Tab\" && N.target.classList.contains(\"dp__menu\") && y.value.shiftKeyInMenu && (N.preventDefault(), tt(N, Y.value, !0), a(\"close-picker\"));\n }, C = () => {\n H(), a(\"time-picker-close\");\n }, O = (N) => {\n var j, De, ne;\n (j = p.value) == null || j.toggleTimePicker(!1, !1), (De = p.value) == null || De.toggleMonthPicker(!1, !1, N), (ne = p.value) == null || ne.toggleYearPicker(!1, !1, N);\n }, A = (N, j = 0) => {\n var De, ne, Fe;\n return N === \"month\" ? (De = p.value) == null ? void 0 : De.toggleMonthPicker(!1, !0, j) : N === \"year\" ? (ne = p.value) == null ? void 0 : ne.toggleYearPicker(!1, !0, j) : N === \"time\" ? (Fe = p.value) == null ? void 0 : Fe.toggleTimePicker(!0, !1) : O(j);\n }, te = (N, ...j) => {\n var De, ne;\n (De = p.value) != null && De[N] && ((ne = p.value) == null || ne[N](...j));\n }, B = () => {\n te(\"selectCurrentDate\");\n }, ie = (N, j) => {\n te(\"presetDate\", N, j);\n }, he = () => {\n te(\"clearHoverDate\");\n };\n return n({\n updateMonthYear: (N, j) => {\n te(\"updateMonthYear\", N, j);\n },\n switchView: A\n }), (N, j) => {\n var De;\n return b(), F(\"div\", {\n id: N.uid ? `dp-menu-${N.uid}` : void 0,\n tabindex: \"0\",\n ref_key: \"dpMenuRef\",\n ref: q,\n role: \"dialog\",\n class: ye(o.value),\n onMouseleave: he,\n onClick: $,\n onKeydown: [\n le(X, [\"esc\"]),\n j[15] || (j[15] = le(pe((ne) => s(\"left\"), [\"prevent\"]), [\"left\"])),\n j[16] || (j[16] = le(pe((ne) => s(\"up\"), [\"prevent\"]), [\"up\"])),\n j[17] || (j[17] = le(pe((ne) => s(\"down\"), [\"prevent\"]), [\"down\"])),\n j[18] || (j[18] = le(pe((ne) => s(\"right\"), [\"prevent\"]), [\"right\"])),\n u\n ]\n }, [\n (N.disabled || N.readonly) && m(g).enabled ? (b(), F(\"div\", {\n key: 0,\n class: ye(d.value)\n }, null, 2)) : V(\"\", !0),\n !m(g).enabled && !N.teleportCenter ? (b(), F(\"div\", {\n key: 1,\n class: ye(k.value)\n }, null, 2)) : V(\"\", !0),\n oe(\"div\", {\n ref_key: \"innerMenuRef\",\n ref: J,\n class: ye({\n dp__menu_content_wrapper: ((De = N.presetDates) == null ? void 0 : De.length) || !!N.$slots[\"left-sidebar\"] || !!N.$slots[\"right-sidebar\"]\n }),\n style: Ke({ \"--dp-menu-width\": `${G.value}px` })\n }, [\n N.$slots[\"left-sidebar\"] ? (b(), F(\"div\", Xl, [\n ae(N.$slots, \"left-sidebar\", Ce(Ve(ee.value)))\n ])) : V(\"\", !0),\n N.presetDates.length ? (b(), F(\"div\", Jl, [\n (b(!0), F(de, null, Me(N.presetDates, (ne, Fe) => (b(), F(\"div\", {\n key: Fe,\n style: Ke(ne.style || {}),\n class: \"dp--preset-range\"\n }, [\n ne.slot ? ae(N.$slots, ne.slot, {\n key: 0,\n presetDate: ie,\n label: ne.label,\n value: ne.value\n }) : (b(), F(\"div\", {\n key: 1,\n role: \"button\",\n tabindex: \"0\",\n onClick: (Te) => ie(ne.value, ne.noTz),\n onKeydown: [\n le(pe((Te) => ie(ne.value, ne.noTz), [\"prevent\"]), [\"enter\"]),\n le(pe((Te) => ie(ne.value, ne.noTz), [\"prevent\"]), [\"space\"])\n ]\n }, Ne(ne.label), 41, xl))\n ], 4))), 128))\n ])) : V(\"\", !0),\n oe(\"div\", {\n class: \"dp__instance_calendar\",\n ref_key: \"calendarWrapperRef\",\n ref: R,\n role: \"document\"\n }, [\n (b(), ce(Pn(T.value), Ie({\n ref_key: \"dynCmpRef\",\n ref: p\n }, r.value, {\n \"flow-step\": m(re),\n onMount: m(L),\n onUpdateFlowStep: m(x),\n onResetFlow: m(h),\n onFocusMenu: H,\n onSelectDate: j[0] || (j[0] = (ne) => N.$emit(\"select-date\")),\n onTooltipOpen: j[1] || (j[1] = (ne) => N.$emit(\"tooltip-open\", ne)),\n onTooltipClose: j[2] || (j[2] = (ne) => N.$emit(\"tooltip-close\", ne)),\n onAutoApply: j[3] || (j[3] = (ne) => N.$emit(\"auto-apply\", ne)),\n onRangeStart: j[4] || (j[4] = (ne) => N.$emit(\"range-start\", ne)),\n onRangeEnd: j[5] || (j[5] = (ne) => N.$emit(\"range-end\", ne)),\n onInvalidFixedRange: j[6] || (j[6] = (ne) => N.$emit(\"invalid-fixed-range\", ne)),\n onTimeUpdate: j[7] || (j[7] = (ne) => N.$emit(\"time-update\")),\n onAmPmChange: j[8] || (j[8] = (ne) => N.$emit(\"am-pm-change\", ne)),\n onTimePickerOpen: j[9] || (j[9] = (ne) => N.$emit(\"time-picker-open\", ne)),\n onTimePickerClose: C,\n onRecalculatePosition: v,\n onUpdateMonthYear: j[10] || (j[10] = (ne) => N.$emit(\"update-month-year\", ne)),\n \"onUpdate:internalModelValue\": j[11] || (j[11] = (ne) => N.$emit(\"update:internal-model-value\", ne))\n }), Ee({ _: 2 }, [\n Me(f.value, (ne, Fe) => ({\n name: ne,\n fn: ue((Te) => [\n ae(N.$slots, ne, Ce(Ve({ ...Te })))\n ])\n }))\n ]), 1040, [\"flow-step\", \"onMount\", \"onUpdateFlowStep\", \"onResetFlow\"]))\n ], 512),\n N.$slots[\"right-sidebar\"] ? (b(), F(\"div\", Ql, [\n ae(N.$slots, \"right-sidebar\", Ce(Ve(ee.value)))\n ])) : V(\"\", !0),\n N.$slots[\"action-extra\"] ? (b(), F(\"div\", eo, [\n N.$slots[\"action-extra\"] ? ae(N.$slots, \"action-extra\", {\n key: 0,\n selectCurrentDate: B\n }) : V(\"\", !0)\n ])) : V(\"\", !0)\n ], 6),\n !N.autoApply || N.keepActionRow || m(Y).keepActionRow ? (b(), ce(ol, Ie({\n key: 2,\n \"menu-mount\": Q.value\n }, r.value, {\n \"calendar-width\": G.value,\n onClosePicker: j[12] || (j[12] = (ne) => N.$emit(\"close-picker\")),\n onSelectDate: j[13] || (j[13] = (ne) => N.$emit(\"select-date\")),\n onInvalidSelect: j[14] || (j[14] = (ne) => N.$emit(\"invalid-select\")),\n onSelectNow: B\n }), Ee({ _: 2 }, [\n Me(m(I), (ne, Fe) => ({\n name: ne,\n fn: ue((Te) => [\n ae(N.$slots, ne, Ce(Ve({ ...Te })))\n ])\n }))\n ]), 1040, [\"menu-mount\", \"calendar-width\"])) : V(\"\", !0)\n ], 42, ql);\n };\n }\n}), to = typeof window < \"u\" ? window : void 0, bn = () => {\n}, no = (e) => Ha() ? (Ua(e), !0) : !1, ao = (e, n, a, t) => {\n if (!e)\n return bn;\n let r = bn;\n const l = gt(\n () => m(e),\n (y) => {\n r(), y && (y.addEventListener(n, a, t), r = () => {\n y.removeEventListener(n, a, t), r = bn;\n });\n },\n { immediate: !0, flush: \"post\" }\n ), c = () => {\n l(), r();\n };\n return no(c), c;\n}, ro = (e, n, a, t = {}) => {\n const { window: r = to, event: l = \"pointerdown\" } = t;\n return r ? ao(r, l, (y) => {\n const D = Ae(e), S = Ae(n);\n !D || !S || D === y.target || y.composedPath().includes(D) || y.composedPath().includes(S) || a(y);\n }, { passive: !0 }) : void 0;\n}, lo = /* @__PURE__ */ Be({\n compatConfig: {\n MODE: 3\n },\n __name: \"VueDatePicker\",\n props: {\n ...Xt\n },\n emits: [\n \"update:model-value\",\n \"update:model-timezone-value\",\n \"text-submit\",\n \"closed\",\n \"cleared\",\n \"open\",\n \"focus\",\n \"blur\",\n \"internal-model-change\",\n \"recalculate-position\",\n \"flow-step\",\n \"update-month-year\",\n \"invalid-select\",\n \"invalid-fixed-range\",\n \"tooltip-open\",\n \"tooltip-close\",\n \"time-picker-open\",\n \"time-picker-close\",\n \"am-pm-change\",\n \"range-start\",\n \"range-end\"\n ],\n setup(e, { expose: n, emit: a }) {\n const t = e, r = Yt(), l = Z(!1), c = Kt(t, \"modelValue\"), y = Kt(t, \"timezone\"), D = Z(null), S = Z(null), g = Z(null), Y = Z(!1), R = Z(null), { setMenuFocused: G, setShiftKey: q } = Oa(), { clearArrowNav: J } = lt(), { mapDatesArrToMap: Q, validateDate: p, isValidTime: M } = Et(t), { defaultedTransitions: E, defaultedTextInput: z, defaultedInline: K, defaultedConfig: _ } = Se(t), { menuTransition: re, showTransition: x } = Bt(E);\n Ue(() => {\n $(t.modelValue), rt().then(() => {\n K.value.enabled || (f(R.value).addEventListener(\"scroll\", te), window.addEventListener(\"resize\", B));\n }), K.value.enabled && (l.value = !0);\n });\n const L = W(() => Q());\n _n(() => {\n if (!K.value.enabled) {\n const i = f(R.value);\n i && i.removeEventListener(\"scroll\", te), window.removeEventListener(\"resize\", B);\n }\n });\n const h = ze(r, \"all\", t.presetDates), T = ze(r, \"input\");\n gt(\n [c, y],\n () => {\n $(c.value);\n },\n { deep: !0 }\n );\n const { openOnTop: H, menuStyle: ee, xCorrect: v, setMenuPosition: I, getScrollableParent: f, shadowRender: k } = Zr({\n menuRef: D,\n menuRefInner: S,\n inputRef: g,\n pickerWrapperRef: R,\n inline: K,\n emit: a,\n props: t,\n slots: r\n }), {\n inputValue: d,\n internalModelValue: o,\n parseExternalModelValue: $,\n emitModelValue: X,\n formatInputValue: s,\n checkBeforeEmit: u\n } = Kr(a, t, Y), C = W(\n () => ({\n dp__main: !0,\n dp__theme_dark: t.dark,\n dp__theme_light: !t.dark,\n dp__flex_display: K.value.enabled,\n dp__flex_display_with_input: K.value.input\n })\n ), O = W(() => t.dark ? \"dp__theme_dark\" : \"dp__theme_light\"), A = W(() => t.teleport ? {\n to: typeof t.teleport == \"boolean\" ? \"body\" : t.teleport,\n disabled: K.value.enabled\n } : { class: \"dp__outer_menu_wrap\" }), te = () => {\n l.value && (t.closeOnScroll || _.value.closeOnScroll ? Te() : I());\n }, B = () => {\n l.value && I();\n }, ie = () => {\n !t.disabled && !t.readonly && (k(da, t), I(!1), l.value = !0, l.value && a(\"open\"), l.value || Fe(), $(t.modelValue));\n }, he = () => {\n d.value = \"\", Fe(), a(\"update:model-value\", null), a(\"update:model-timezone-value\", null), a(\"cleared\"), (t.closeOnClearValue || _.value.closeOnClearValue) && Te();\n }, me = () => {\n const i = o.value;\n return !i || !Array.isArray(i) && p(i) ? !0 : Array.isArray(i) ? i.length === 2 && p(i[0]) && p(i[1]) ? !0 : t.partialRange && !t.timePicker ? p(i[0]) : !1 : !1;\n }, N = () => {\n u() && me() ? (X(), Te()) : a(\"invalid-select\", o.value);\n }, j = (i) => {\n De(), X(), (t.closeOnAutoApply || _.value.closeOnAutoApply) && !i && Te();\n }, De = () => {\n g.value && z.value.enabled && g.value.setParsedDate(o.value);\n }, ne = (i = !1) => {\n t.autoApply && M(o.value) && me() && (t.range && Array.isArray(o.value) ? (t.partialRange || o.value.length === 2) && j(i) : j(i));\n }, Fe = () => {\n z.value.enabled || (o.value = null);\n }, Te = () => {\n K.value.enabled || (l.value && (l.value = !1, v.value = !1, G(!1), q(!1), J(), a(\"closed\"), d.value && $(c.value)), Fe(), a(\"blur\"));\n }, Mt = (i, w) => {\n if (!i) {\n o.value = null;\n return;\n }\n o.value = i, w && (N(), a(\"text-submit\"));\n }, Jt = () => {\n t.autoApply && M(o.value) && X(), De();\n }, xt = () => l.value ? Te() : ie(), Qt = (i) => {\n o.value = i;\n }, en = () => {\n z.value.enabled && (Y.value = !0, s()), a(\"focus\");\n }, tn = () => {\n z.value.enabled && (Y.value = !1, $(t.modelValue)), a(\"blur\");\n }, nn = (i) => {\n S.value && S.value.updateMonthYear(0, {\n month: na(i.month),\n year: na(i.year)\n });\n }, an = (i) => {\n $(i ?? t.modelValue);\n }, rn = (i, w) => {\n var U;\n (U = S.value) == null || U.switchView(i, w);\n }, zn = (i) => t.onClickOutside ? t.onClickOutside(i) : _.value.onClickOutside ? _.value.onClickOutside(i) : Te();\n return ro(D, g, () => zn(me)), n({\n closeMenu: Te,\n selectDate: N,\n clearValue: he,\n openMenu: ie,\n onScroll: te,\n formatInputValue: s,\n // exposed for testing purposes\n updateInternalModelValue: Qt,\n // modify internal modelValue\n setMonthYear: nn,\n parseModel: an,\n switchView: rn\n }), (i, w) => (b(), F(\"div\", {\n class: ye(C.value),\n ref_key: \"pickerWrapperRef\",\n ref: R\n }, [\n Ze(nl, Ie({\n ref_key: \"inputRef\",\n ref: g,\n \"is-menu-open\": l.value,\n \"input-value\": m(d),\n \"onUpdate:inputValue\": w[0] || (w[0] = (U) => Kn(d) ? d.value = U : null)\n }, i.$props, {\n onClear: he,\n onOpen: ie,\n onSetInputDate: Mt,\n onSetEmptyDate: m(X),\n onSelectDate: N,\n onToggle: xt,\n onClose: Te,\n onFocus: en,\n onBlur: tn,\n onRealBlur: w[1] || (w[1] = (U) => Y.value = !1)\n }), Ee({ _: 2 }, [\n Me(m(T), (U, se) => ({\n name: U,\n fn: ue((be) => [\n ae(i.$slots, U, Ce(Ve(be)))\n ])\n }))\n ]), 1040, [\"is-menu-open\", \"input-value\", \"onSetEmptyDate\"]),\n Ze(Dt, {\n name: m(re)(m(H)),\n css: m(x) && !m(K).enabled\n }, {\n default: ue(() => [\n l.value ? (b(), ce(Pn(i.teleport ? La : \"div\"), Ie({\n key: 0,\n ref_key: \"dpWrapMenuRef\",\n ref: D\n }, A.value, {\n class: { \"dp--menu-wrapper\": !m(K).enabled },\n style: m(K).enabled ? void 0 : m(ee)\n }), {\n default: ue(() => [\n Ze(da, Ie({\n ref_key: \"dpMenuRef\",\n ref: S,\n class: { [O.value]: !0, \"dp--menu-wrapper\": i.teleport },\n style: i.teleport ? m(ee) : void 0,\n \"open-on-top\": m(H),\n \"arr-map-values\": L.value\n }, i.$props, {\n \"internal-model-value\": m(o),\n \"onUpdate:internalModelValue\": w[2] || (w[2] = (U) => Kn(o) ? o.value = U : null),\n onClosePicker: Te,\n onSelectDate: N,\n onAutoApply: ne,\n onTimeUpdate: Jt,\n onFlowStep: w[3] || (w[3] = (U) => i.$emit(\"flow-step\", U)),\n onUpdateMonthYear: w[4] || (w[4] = (U) => i.$emit(\"update-month-year\", U)),\n onInvalidSelect: w[5] || (w[5] = (U) => i.$emit(\"invalid-select\", m(o))),\n onInvalidFixedRange: w[6] || (w[6] = (U) => i.$emit(\"invalid-fixed-range\", U)),\n onRecalculatePosition: m(I),\n onTooltipOpen: w[7] || (w[7] = (U) => i.$emit(\"tooltip-open\", U)),\n onTooltipClose: w[8] || (w[8] = (U) => i.$emit(\"tooltip-close\", U)),\n onTimePickerOpen: w[9] || (w[9] = (U) => i.$emit(\"time-picker-open\", U)),\n onTimePickerClose: w[10] || (w[10] = (U) => i.$emit(\"time-picker-close\", U)),\n onAmPmChange: w[11] || (w[11] = (U) => i.$emit(\"am-pm-change\", U)),\n onRangeStart: w[12] || (w[12] = (U) => i.$emit(\"range-start\", U)),\n onRangeEnd: w[13] || (w[13] = (U) => i.$emit(\"range-end\", U))\n }), Ee({ _: 2 }, [\n Me(m(h), (U, se) => ({\n name: U,\n fn: ue((be) => [\n ae(i.$slots, U, Ce(Ve({ ...be })))\n ])\n }))\n ]), 1040, [\"class\", \"style\", \"open-on-top\", \"arr-map-values\", \"internal-model-value\", \"onRecalculatePosition\"])\n ]),\n _: 3\n }, 16, [\"class\", \"style\"])) : V(\"\", !0)\n ]),\n _: 3\n }, 8, [\"name\", \"css\"])\n ], 2));\n }\n}), Ba = /* @__PURE__ */ (() => {\n const e = lo;\n return e.install = (n) => {\n n.component(\"Vue3DatePicker\", e);\n }, e;\n})(), oo = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n __proto__: null,\n default: Ba\n}, Symbol.toStringTag, { value: \"Module\" }));\nObject.entries(oo).forEach(([e, n]) => {\n e !== \"default\" && (Ba[e] = n);\n});\nexport {\n Ba as default\n};\n","import { getDefaultOptions } from \"../_lib/defaultOptions/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name endOfWeek\n * @category Week Helpers\n * @summary Return the end of a week for the given date.\n *\n * @description\n * Return the end of a week for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @returns {Date} the end of a week\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n *\n * @example\n * // The end of a week for 2 September 2014 11:55:00:\n * const result = endOfWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Sat Sep 06 2014 23:59:59.999\n *\n * @example\n * // If the week starts on Monday, the end of the week for 2 September 2014 11:55:00:\n * const result = endOfWeek(new Date(2014, 8, 2, 11, 55, 0), { weekStartsOn: 1 })\n * //=> Sun Sep 07 2014 23:59:59.999\n */\nexport default function endOfWeek(dirtyDate, options) {\n var _ref, _ref2, _ref3, _options$weekStartsOn, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n requiredArgs(1, arguments);\n var defaultOptions = getDefaultOptions();\n var weekStartsOn = toInteger((_ref = (_ref2 = (_ref3 = (_options$weekStartsOn = options === null || options === void 0 ? void 0 : options.weekStartsOn) !== null && _options$weekStartsOn !== void 0 ? _options$weekStartsOn : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.weekStartsOn) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.weekStartsOn) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.weekStartsOn) !== null && _ref !== void 0 ? _ref : 0);\n\n // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n var date = toDate(dirtyDate);\n var day = date.getDay();\n var diff = (day < weekStartsOn ? -7 : 0) + 6 - (day - weekStartsOn);\n date.setDate(date.getDate() + diff);\n date.setHours(23, 59, 59, 999);\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getDay\n * @category Weekday Helpers\n * @summary Get the day of the week of the given date.\n *\n * @description\n * Get the day of the week of the given date.\n *\n * @param {Date|Number} date - the given date\n * @returns {0|1|2|3|4|5|6} the day of week, 0 represents Sunday\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which day of the week is 29 February 2012?\n * const result = getDay(new Date(2012, 1, 29))\n * //=> 3\n */\nexport default function getDay(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var day = date.getDay();\n return day;\n}","import getTimezoneOffsetInMilliseconds from \"../_lib/getTimezoneOffsetInMilliseconds/index.js\";\nimport startOfDay from \"../startOfDay/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nvar MILLISECONDS_IN_DAY = 86400000;\n\n/**\n * @name differenceInCalendarDays\n * @category Day Helpers\n * @summary Get the number of calendar days between the given dates.\n *\n * @description\n * Get the number of calendar days between the given dates. This means that the times are removed\n * from the dates and then the difference in days is calculated.\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of calendar days\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many calendar days are between\n * // 2 July 2011 23:00:00 and 2 July 2012 00:00:00?\n * const result = differenceInCalendarDays(\n * new Date(2012, 6, 2, 0, 0),\n * new Date(2011, 6, 2, 23, 0)\n * )\n * //=> 366\n * // How many calendar days are between\n * // 2 July 2011 23:59:00 and 3 July 2011 00:01:00?\n * const result = differenceInCalendarDays(\n * new Date(2011, 6, 3, 0, 1),\n * new Date(2011, 6, 2, 23, 59)\n * )\n * //=> 1\n */\nexport default function differenceInCalendarDays(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var startOfDayLeft = startOfDay(dirtyDateLeft);\n var startOfDayRight = startOfDay(dirtyDateRight);\n var timestampLeft = startOfDayLeft.getTime() - getTimezoneOffsetInMilliseconds(startOfDayLeft);\n var timestampRight = startOfDayRight.getTime() - getTimezoneOffsetInMilliseconds(startOfDayRight);\n\n // Round the number of days to the nearest integer\n // because the number of milliseconds in a day is not constant\n // (e.g. it's different in the day of the daylight saving time clock shift)\n return Math.round((timestampLeft - timestampRight) / MILLISECONDS_IN_DAY);\n}","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport subDays from \"../subDays/index.js\";\nimport subMonths from \"../subMonths/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\n/**\n * @name sub\n * @category Common Helpers\n * @summary Subtract the specified years, months, weeks, days, hours, minutes and seconds from the given date.\n *\n * @description\n * Subtract the specified years, months, weeks, days, hours, minutes and seconds from the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Duration} duration - the object with years, months, weeks, days, hours, minutes and seconds to be subtracted\n *\n * | Key | Description |\n * |---------|------------------------------------|\n * | years | Amount of years to be subtracted |\n * | months | Amount of months to be subtracted |\n * | weeks | Amount of weeks to be subtracted |\n * | days | Amount of days to be subtracted |\n * | hours | Amount of hours to be subtracted |\n * | minutes | Amount of minutes to be subtracted |\n * | seconds | Amount of seconds to be subtracted |\n *\n * All values default to 0\n *\n * @returns {Date} the new date with the seconds subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract the following duration from 15 June 2017 15:29:20\n * const result = sub(new Date(2017, 5, 15, 15, 29, 20), {\n * years: 2,\n * months: 9,\n * weeks: 1,\n * days: 7,\n * hours: 5,\n * minutes: 9,\n * seconds: 30\n * })\n * //=> Mon Sep 1 2014 10:19:50\n */\nexport default function sub(date, duration) {\n requiredArgs(2, arguments);\n if (!duration || _typeof(duration) !== 'object') return new Date(NaN);\n var years = duration.years ? toInteger(duration.years) : 0;\n var months = duration.months ? toInteger(duration.months) : 0;\n var weeks = duration.weeks ? toInteger(duration.weeks) : 0;\n var days = duration.days ? toInteger(duration.days) : 0;\n var hours = duration.hours ? toInteger(duration.hours) : 0;\n var minutes = duration.minutes ? toInteger(duration.minutes) : 0;\n var seconds = duration.seconds ? toInteger(duration.seconds) : 0;\n\n // Subtract years and months\n var dateWithoutMonths = subMonths(date, months + years * 12);\n\n // Subtract weeks and days\n var dateWithoutDays = subDays(dateWithoutMonths, days + weeks * 7);\n\n // Subtract hours, minutes and seconds\n var minutestoSub = minutes + hours * 60;\n var secondstoSub = seconds + minutestoSub * 60;\n var mstoSub = secondstoSub * 1000;\n var finalDate = new Date(dateWithoutDays.getTime() - mstoSub);\n return finalDate;\n}","import addDays from \"../addDays/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\n/**\n * @name subDays\n * @category Day Helpers\n * @summary Subtract the specified number of days from the given date.\n *\n * @description\n * Subtract the specified number of days from the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of days to be subtracted. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the days subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 10 days from 1 September 2014:\n * const result = subDays(new Date(2014, 8, 1), 10)\n * //=> Fri Aug 22 2014 00:00:00\n */\nexport default function subDays(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addDays(dirtyDate, -amount);\n}","import startOfWeek from \"../startOfWeek/index.js\";\nimport startOfWeekYear from \"../startOfWeekYear/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nvar MILLISECONDS_IN_WEEK = 604800000;\n\n/**\n * @name getWeek\n * @category Week Helpers\n * @summary Get the local week index of the given date.\n *\n * @description\n * Get the local week index of the given date.\n * The exact calculation depends on the values of\n * `options.weekStartsOn` (which is the index of the first day of the week)\n * and `options.firstWeekContainsDate` (which is the day of January, which is always in\n * the first week of the week-numbering year)\n *\n * Week numbering: https://en.wikipedia.org/wiki/Week#Week_numbering\n *\n * @param {Date|Number} date - the given date\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {1|2|3|4|5|6|7} [options.firstWeekContainsDate=1] - the day of January, which is always in the first week of the year\n * @returns {Number} the week\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7\n *\n * @example\n * // Which week of the local week numbering year is 2 January 2005 with default options?\n * const result = getWeek(new Date(2005, 0, 2))\n * //=> 2\n *\n * // Which week of the local week numbering year is 2 January 2005,\n * // if Monday is the first day of the week,\n * // and the first week of the year always contains 4 January?\n * const result = getWeek(new Date(2005, 0, 2), {\n * weekStartsOn: 1,\n * firstWeekContainsDate: 4\n * })\n * //=> 53\n */\n\nexport default function getWeek(dirtyDate, options) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var diff = startOfWeek(date, options).getTime() - startOfWeekYear(date, options).getTime();\n\n // Round the number of days to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n return Math.round(diff / MILLISECONDS_IN_WEEK) + 1;\n}","import getWeekYear from \"../getWeekYear/index.js\";\nimport startOfWeek from \"../startOfWeek/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { getDefaultOptions } from \"../_lib/defaultOptions/index.js\";\n/**\n * @name startOfWeekYear\n * @category Week-Numbering Year Helpers\n * @summary Return the start of a local week-numbering year for the given date.\n *\n * @description\n * Return the start of a local week-numbering year.\n * The exact calculation depends on the values of\n * `options.weekStartsOn` (which is the index of the first day of the week)\n * and `options.firstWeekContainsDate` (which is the day of January, which is always in\n * the first week of the week-numbering year)\n *\n * Week numbering: https://en.wikipedia.org/wiki/Week#Week_numbering\n *\n * @param {Date|Number} date - the original date\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {1|2|3|4|5|6|7} [options.firstWeekContainsDate=1] - the day of January, which is always in the first week of the year\n * @returns {Date} the start of a week-numbering year\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7\n *\n * @example\n * // The start of an a week-numbering year for 2 July 2005 with default settings:\n * const result = startOfWeekYear(new Date(2005, 6, 2))\n * //=> Sun Dec 26 2004 00:00:00\n *\n * @example\n * // The start of a week-numbering year for 2 July 2005\n * // if Monday is the first day of week\n * // and 4 January is always in the first week of the year:\n * const result = startOfWeekYear(new Date(2005, 6, 2), {\n * weekStartsOn: 1,\n * firstWeekContainsDate: 4\n * })\n * //=> Mon Jan 03 2005 00:00:00\n */\nexport default function startOfWeekYear(dirtyDate, options) {\n var _ref, _ref2, _ref3, _options$firstWeekCon, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n requiredArgs(1, arguments);\n var defaultOptions = getDefaultOptions();\n var firstWeekContainsDate = toInteger((_ref = (_ref2 = (_ref3 = (_options$firstWeekCon = options === null || options === void 0 ? void 0 : options.firstWeekContainsDate) !== null && _options$firstWeekCon !== void 0 ? _options$firstWeekCon : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.firstWeekContainsDate) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.firstWeekContainsDate) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.firstWeekContainsDate) !== null && _ref !== void 0 ? _ref : 1);\n var year = getWeekYear(dirtyDate, options);\n var firstWeek = new Date(0);\n firstWeek.setFullYear(year, 0, firstWeekContainsDate);\n firstWeek.setHours(0, 0, 0, 0);\n var date = startOfWeek(firstWeek, options);\n return date;\n}","import startOfWeek from \"../startOfWeek/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { getDefaultOptions } from \"../_lib/defaultOptions/index.js\";\n/**\n * @name getWeekYear\n * @category Week-Numbering Year Helpers\n * @summary Get the local week-numbering year of the given date.\n *\n * @description\n * Get the local week-numbering year of the given date.\n * The exact calculation depends on the values of\n * `options.weekStartsOn` (which is the index of the first day of the week)\n * and `options.firstWeekContainsDate` (which is the day of January, which is always in\n * the first week of the week-numbering year)\n *\n * Week numbering: https://en.wikipedia.org/wiki/Week#Week_numbering\n *\n * @param {Date|Number} date - the given date\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {1|2|3|4|5|6|7} [options.firstWeekContainsDate=1] - the day of January, which is always in the first week of the year\n * @returns {Number} the local week-numbering year\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7\n *\n * @example\n * // Which week numbering year is 26 December 2004 with the default settings?\n * const result = getWeekYear(new Date(2004, 11, 26))\n * //=> 2005\n *\n * @example\n * // Which week numbering year is 26 December 2004 if week starts on Saturday?\n * const result = getWeekYear(new Date(2004, 11, 26), { weekStartsOn: 6 })\n * //=> 2004\n *\n * @example\n * // Which week numbering year is 26 December 2004 if the first week contains 4 January?\n * const result = getWeekYear(new Date(2004, 11, 26), { firstWeekContainsDate: 4 })\n * //=> 2004\n */\nexport default function getWeekYear(dirtyDate, options) {\n var _ref, _ref2, _ref3, _options$firstWeekCon, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var year = date.getFullYear();\n var defaultOptions = getDefaultOptions();\n var firstWeekContainsDate = toInteger((_ref = (_ref2 = (_ref3 = (_options$firstWeekCon = options === null || options === void 0 ? void 0 : options.firstWeekContainsDate) !== null && _options$firstWeekCon !== void 0 ? _options$firstWeekCon : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.firstWeekContainsDate) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.firstWeekContainsDate) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.firstWeekContainsDate) !== null && _ref !== void 0 ? _ref : 1);\n\n // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively');\n }\n var firstWeekOfNextYear = new Date(0);\n firstWeekOfNextYear.setFullYear(year + 1, 0, firstWeekContainsDate);\n firstWeekOfNextYear.setHours(0, 0, 0, 0);\n var startOfNextYear = startOfWeek(firstWeekOfNextYear, options);\n var firstWeekOfThisYear = new Date(0);\n firstWeekOfThisYear.setFullYear(year, 0, firstWeekContainsDate);\n firstWeekOfThisYear.setHours(0, 0, 0, 0);\n var startOfThisYear = startOfWeek(firstWeekOfThisYear, options);\n if (date.getTime() >= startOfNextYear.getTime()) {\n return year + 1;\n } else if (date.getTime() >= startOfThisYear.getTime()) {\n return year;\n } else {\n return year - 1;\n }\n}","import toDate from \"../toDate/index.js\";\nimport startOfISOWeek from \"../startOfISOWeek/index.js\";\nimport startOfISOWeekYear from \"../startOfISOWeekYear/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nvar MILLISECONDS_IN_WEEK = 604800000;\n\n/**\n * @name getISOWeek\n * @category ISO Week Helpers\n * @summary Get the ISO week of the given date.\n *\n * @description\n * Get the ISO week of the given date.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the ISO week\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which week of the ISO-week numbering year is 2 January 2005?\n * const result = getISOWeek(new Date(2005, 0, 2))\n * //=> 53\n */\nexport default function getISOWeek(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var diff = startOfISOWeek(date).getTime() - startOfISOWeekYear(date).getTime();\n\n // Round the number of days to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n return Math.round(diff / MILLISECONDS_IN_WEEK) + 1;\n}","import getISOWeekYear from \"../getISOWeekYear/index.js\";\nimport startOfISOWeek from \"../startOfISOWeek/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name startOfISOWeekYear\n * @category ISO Week-Numbering Year Helpers\n * @summary Return the start of an ISO week-numbering year for the given date.\n *\n * @description\n * Return the start of an ISO week-numbering year,\n * which always starts 3 days before the year's first Thursday.\n * The result will be in the local timezone.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of an ISO week-numbering year\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of an ISO week-numbering year for 2 July 2005:\n * const result = startOfISOWeekYear(new Date(2005, 6, 2))\n * //=> Mon Jan 03 2005 00:00:00\n */\nexport default function startOfISOWeekYear(dirtyDate) {\n requiredArgs(1, arguments);\n var year = getISOWeekYear(dirtyDate);\n var fourthOfJanuary = new Date(0);\n fourthOfJanuary.setFullYear(year, 0, 4);\n fourthOfJanuary.setHours(0, 0, 0, 0);\n var date = startOfISOWeek(fourthOfJanuary);\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport startOfISOWeek from \"../startOfISOWeek/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getISOWeekYear\n * @category ISO Week-Numbering Year Helpers\n * @summary Get the ISO week-numbering year of the given date.\n *\n * @description\n * Get the ISO week-numbering year of the given date,\n * which always starts 3 days before the year's first Thursday.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the ISO week-numbering year\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which ISO-week numbering year is 2 January 2005?\n * const result = getISOWeekYear(new Date(2005, 0, 2))\n * //=> 2004\n */\nexport default function getISOWeekYear(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var year = date.getFullYear();\n var fourthOfJanuaryOfNextYear = new Date(0);\n fourthOfJanuaryOfNextYear.setFullYear(year + 1, 0, 4);\n fourthOfJanuaryOfNextYear.setHours(0, 0, 0, 0);\n var startOfNextYear = startOfISOWeek(fourthOfJanuaryOfNextYear);\n var fourthOfJanuaryOfThisYear = new Date(0);\n fourthOfJanuaryOfThisYear.setFullYear(year, 0, 4);\n fourthOfJanuaryOfThisYear.setHours(0, 0, 0, 0);\n var startOfThisYear = startOfISOWeek(fourthOfJanuaryOfThisYear);\n if (date.getTime() >= startOfNextYear.getTime()) {\n return year + 1;\n } else if (date.getTime() >= startOfThisYear.getTime()) {\n return year;\n } else {\n return year - 1;\n }\n}","import { ref, computed, watch } from 'vue'\r\nimport { useStore } from 'vuex'\r\nimport VueDatePicker from '@vuepic/vue-datepicker'\r\nimport FormInputTextField from 'components/FormInputTextField/FormInputTextField.vue'\r\nimport phoneValidator from '../../foundation/js/inputValidators/phoneValidator'\r\nimport nameValidator from '../../foundation/js/inputValidators/nameValidator'\r\nimport textAreaValidator from '../../foundation/js/inputValidators/textAreaValidator'\r\nimport { scrollToFirstError } from '../../foundation/js/inputValidators/scrollToFirstError'\r\n\r\nexport default {\r\n name: 'PersonalFundraising',\r\n components: {\r\n VueDatePicker,\r\n FormInputTextField\r\n },\r\n props: {\r\n isMindegave: {\r\n type: Boolean,\r\n required: false,\r\n default: false\r\n },\r\n isUpdate: {\r\n type: Boolean,\r\n required: false,\r\n default: false\r\n },\r\n personalFundraising: {\r\n type: Object,\r\n required: true\r\n },\r\n hasPhoneNumber: {\r\n type: Boolean,\r\n required: false,\r\n default: false\r\n },\r\n showUnsavedChangesWarning: {\r\n type: Boolean,\r\n required: false,\r\n default: false\r\n }\r\n },\r\n setup(props) {\r\n const store = useStore()\r\n const getLabel = (labelKey) =>\r\n store.getters['labels/getLabel']({\r\n labelCollection: 'personalFundraising',\r\n labelKey\r\n })\r\n const headline = ref(props.personalFundraising?.Headline ?? '')\r\n const dateOfbirth = ref(props.personalFundraising?.DateOfBirth)\r\n const fundraisingTarget = ref(\r\n props.personalFundraising?.FundraisingTarget ?? ''\r\n )\r\n const dateOfdeath = ref(props.personalFundraising?.DateOfDeath)\r\n const endDate = ref(props.personalFundraising?.EndDate ?? '')\r\n const fundraiseReason = ref(\r\n props.personalFundraising?.FundraiseReason ?? ''\r\n )\r\n const fundraisePersonDescription = ref(\r\n props.personalFundraising?.FundraisePersonDescription ?? ''\r\n )\r\n const personalStoryImage = ref(\r\n props.personalFundraising?.personalStoryImages ?? []\r\n )\r\n const fundraiseImage = ref(props.personalFundraising?.fundraiseImage)\r\n const datePickerRefDateOfBirth = ref()\r\n const datePickerRefDateOfDeath = ref()\r\n const datePickerRefEndDate = ref()\r\n const notificationSms = ref(\r\n props.personalFundraising?.SmsNotification ?? false\r\n )\r\n const notificationEmail = ref(\r\n props.personalFundraising?.EmailNotification ?? false\r\n )\r\n const phoneNumber = ref('')\r\n const unSubmitted = ref(true)\r\n const isSubmitting = computed(\r\n () => store.state.fundraising.isSubmitting\r\n )\r\n\r\n \r\n \r\n const showUnsavedChangesWarning = props.showUnsavedChangesWarning;\r\n const handleBeforeUnload = (e) => {\r\n if (store.state.fundraising.isEditing && showUnsavedChangesWarning) {\r\n e.preventDefault();\r\n e.returnValue = ''; \r\n }\r\n };\r\n \r\n if (showUnsavedChangesWarning) {\r\n window.addEventListener('beforeunload', handleBeforeUnload);\r\n } else {\r\n window.removeEventListener('beforeunload', handleBeforeUnload);\r\n }\r\n \r\n\r\n const isUploadingFundraiseImage = computed(\r\n () => store.state.fundraising.isFundraiseImageUploading\r\n )\r\n const personalStoryImagesUploading = computed(\r\n () => store.state.fundraising.personalStoryImagesUploading\r\n )\r\n\r\n const selectEndDate = () => {\r\n datePickerRefEndDate.value.selectDate()\r\n }\r\n\r\n const selectDateOfBirth = () => {\r\n datePickerRefDateOfBirth.value.selectDate()\r\n }\r\n\r\n const selectDateOfDeath = () => {\r\n datePickerRefDateOfDeath.value.selectDate()\r\n }\r\n\r\n const customPosition = () => ({ top: 10, left: 40 })\r\n\r\n const headlineFilled = computed(() => {\r\n return unSubmitted.value && !headline.value\r\n ? true\r\n : (unSubmitted.value || headline.value.length > 2) &&\r\n headline.value.length <= 75 &&\r\n nameValidator(headline.value)\r\n })\r\n\r\n const dateOfbirthFilled = computed(() => {\r\n return unSubmitted.value || !props.isMindegave\r\n ? true\r\n : dateOfbirth.value\r\n })\r\n\r\n const endDateFilled = computed(() => {\r\n return unSubmitted.value ? true : endDate.value\r\n })\r\n\r\n const dateOfdeathFilled = computed(() => {\r\n return unSubmitted.value || !props.isMindegave\r\n ? true\r\n : dateOfdeath.value\r\n })\r\n\r\n const fundraisingTargetFilled = computed(() => {\r\n return unSubmitted.value ? true : fundraisingTarget.value >= 100\r\n })\r\n\r\n const fundraiseReasonFilled = computed(() => {\r\n return unSubmitted.value && !fundraiseReason.value\r\n ? true\r\n : (unSubmitted.value || fundraiseReason.value.length > 2) &&\r\n fundraiseReason.value.length <= 2000 &&\r\n textAreaValidator(fundraiseReason.value)\r\n })\r\n\r\n const fundraisePersonDescriptionFilled = computed(() => {\r\n return unSubmitted.value && !fundraisePersonDescription.value\r\n ? true\r\n : fundraisePersonDescription.value\r\n ? (unSubmitted.value ||\r\n fundraisePersonDescription.value.length > 2) &&\r\n fundraisePersonDescription.value.length <= 2000 &&\r\n textAreaValidator(fundraisePersonDescription.value)\r\n : true\r\n })\r\n\r\n const personalStoryImageFilled = computed(() => {\r\n return unSubmitted.value ? true : !!personalStoryImage.value\r\n })\r\n\r\n const fundraiseImageFilled = computed(() => {\r\n return unSubmitted.value ? true : !!fundraiseImage.value\r\n })\r\n\r\n const phoneNumberFilled = computed(() => {\r\n return unSubmitted.value && !phoneNumber.value\r\n ? true\r\n : phoneValidator(phoneNumber.value)\r\n })\r\n\r\n const pageId = computed(() => store.state.main.page_id)\r\n const isFundraiseImageUploadError = computed(\r\n () => store.state.fundraising.isFundraiseImageUploadError\r\n )\r\n const isPersonalStoryImageUploadError = computed(\r\n () => store.state.fundraising.isPersonalStoryImageUploadError\r\n )\r\n\r\n const inputIsValid = function () {\r\n return (\r\n headlineFilled.value &&\r\n dateOfbirthFilled.value &&\r\n endDateFilled.value &&\r\n dateOfdeathFilled.value &&\r\n fundraisingTargetFilled.value &&\r\n fundraiseReasonFilled.value &&\r\n personalStoryImageFilled.value &&\r\n (notificationSms.value\r\n ? props.hasPhoneNumber || phoneNumberFilled.value\r\n : true)\r\n )\r\n }\r\n \r\n const onSubmit = function () {\r\n store.commit('fundraising/set_fundraise_image_upload_error', false)\r\n store.commit(\r\n 'fundraising/set_personal_story_image_upload_error',\r\n false\r\n )\r\n unSubmitted.value = false\r\n if (!inputIsValid()) {\r\n scrollToFirstError()\r\n \r\n return false;\r\n }\r\n\r\n const payload = {\r\n content: {\r\n pageId: pageId.value,\r\n headline: headline.value,\r\n dateOfBirth: dateOfbirth.value,\r\n dateOfDeath: dateOfdeath.value,\r\n fundraisingTarget: parseInt(fundraisingTarget.value),\r\n endDate: endDate.value,\r\n fundraiseDescription: fundraiseReason.value,\r\n fundraisePersonDescription:\r\n fundraisePersonDescription.value || null,\r\n coverImage: fundraiseImage.value,\r\n images: personalStoryImage.value,\r\n phoneNumber:\r\n notificationSms.value && !props.hasPhoneNumber\r\n ? phoneNumber.value\r\n : null,\r\n notificationSms: notificationSms.value,\r\n notificationEmail: notificationEmail.value\r\n },\r\n id: props.personalFundraising.Id\r\n }\r\n if (props.isUpdate)\r\n store.dispatch('fundraising/updatePersonalfundraising', payload)\r\n else\r\n store.dispatch('fundraising/createPersonalfundraising', payload)\r\n }\r\n\r\n const fundraiseImageUploader = async function (e) {\r\n const imageData = await store.dispatch(\r\n 'fundraising/uploadFundraiseImage',\r\n {\r\n type: 'fundraiseImage',\r\n file: e.target.files[0],\r\n id: props.personalFundraising.Id\r\n }\r\n )\r\n if (imageData) fundraiseImage.value = imageData\r\n }\r\n\r\n const personalStoryImageUploader = async function (e) {\r\n for (var file of e.target.files)\r\n singlePersonalStoryImageUploader(file)\r\n }\r\n\r\n const singlePersonalStoryImageUploader = async function (file) {\r\n const imageData = await store.dispatch(\r\n 'fundraising/uploadFundraiseImage',\r\n {\r\n type: 'personalStoryImage',\r\n file: file,\r\n id: props.personalFundraising.Id\r\n }\r\n )\r\n if (imageData) personalStoryImage.value.push(imageData)\r\n }\r\n\r\n const discardUploadedImage = function (imageType, discardFileId) {\r\n if (imageType === 'fundraiseImage') fundraiseImage.value = null\r\n if (imageType === 'personalStoryImage')\r\n personalStoryImage.value = personalStoryImage.value.filter(\r\n (image) => image.id !== discardFileId\r\n )\r\n }\r\n\r\n const previousButtonPressed = function () {\r\n if (history.length <= 1) document.location = defaultRedirectUrl\r\n\r\n history.back()\r\n }\r\n\r\n const deleteButtonPressed = function () {\r\n if (window.confirm(getLabel('deleteConfirmation'))) {\r\n store.dispatch('fundraising/deletePersonalfundraising', {\r\n id: props.personalFundraising.Id,\r\n pageId: pageId.value\r\n })\r\n }\r\n }\r\n\r\n const formatFilesize = (fileSize) => {\r\n var roundedMb = (fileSize / Math.pow(1024, 2)).toFixed(0)\r\n if (roundedMb >= 1) return roundedMb + ' MB'\r\n var roundedKb = (fileSize / Math.pow(1024, 1)).toFixed(0)\r\n return roundedKb + ' KB'\r\n }\r\n\r\n const disableSubmit = computed(() => {\r\n return (\r\n isUploadingFundraiseImage.value ||\r\n personalStoryImagesUploading.value > 0\r\n )\r\n })\r\n\r\n const showPhoneNumberInput = computed(() => {\r\n return notificationSms.value && !props.hasPhoneNumber\r\n })\r\n\r\n return {\r\n discardUploadedImage,\r\n headline,\r\n dateOfbirth,\r\n fundraisingTarget,\r\n dateOfdeath,\r\n fundraiseReason,\r\n endDate,\r\n fundraisePersonDescription,\r\n personalStoryImage,\r\n fundraiseImage,\r\n fundraiseImageUploader,\r\n onSubmit,\r\n disableSubmit,\r\n headlineFilled,\r\n dateOfbirthFilled,\r\n fundraisingTargetFilled,\r\n dateOfdeathFilled,\r\n fundraiseImageFilled,\r\n personalStoryImageFilled,\r\n fundraiseReasonFilled,\r\n fundraisePersonDescriptionFilled,\r\n endDateFilled,\r\n phoneNumberFilled,\r\n getLabel,\r\n selectEndDate,\r\n datePickerRefEndDate,\r\n selectDateOfBirth,\r\n datePickerRefDateOfBirth,\r\n selectDateOfDeath,\r\n datePickerRefDateOfDeath,\r\n customPosition,\r\n personalStoryImageUploader,\r\n previousButtonPressed,\r\n deleteButtonPressed,\r\n formatFilesize,\r\n isSubmitting,\r\n isUploadingFundraiseImage,\r\n personalStoryImagesUploading,\r\n isFundraiseImageUploadError,\r\n isPersonalStoryImageUploadError,\r\n notificationSms,\r\n notificationEmail,\r\n phoneNumber,\r\n showPhoneNumberInput\r\n }\r\n }\r\n}\r\n","import { render } from \"./PersonalFundraising.vue?vue&type=template&id=f9549de8\"\nimport script from \"./PersonalFundraising.vue?vue&type=script&lang=js\"\nexport * from \"./PersonalFundraising.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"D:\\\\a\\\\1\\\\s\\\\frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { createApp } from 'vue'\r\nimport PersonalFundraising from './PersonalFundraising'\r\n\r\nconst el = '.kb-component--personal-fundraising'\r\n\r\nconst mapImage = (img) => {\r\n return {\r\n id: img.Id,\r\n name: img.Name,\r\n url: img.Url\r\n }\r\n}\r\n\r\nexport default function (Store) {\r\n const DOM = document.querySelectorAll(el)\r\n if (DOM && DOM.length) {\r\n DOM.forEach((PersonalFundraisingDOM) => {\r\n const pageId = PersonalFundraisingDOM.dataset.pageId\r\n if (pageId) Store.commit('main/set_page_id', pageId)\r\n\r\n const isMindegave =\r\n PersonalFundraisingDOM.hasAttribute('is-mindegave')\r\n const isUpdate = PersonalFundraisingDOM.hasAttribute('is-update')\r\n const hasPhoneNumber =\r\n PersonalFundraisingDOM.hasAttribute('has-phone-number')\r\n const personalFundraising = JSON.parse(\r\n PersonalFundraisingDOM.dataset.personalFundraising\r\n )\r\n const showUnsavedChangesWarning =\r\n PersonalFundraisingDOM.hasAttribute('show-unsaved-changes-warning')\r\n\r\n if (personalFundraising?.Images)\r\n personalFundraising.personalStoryImages =\r\n personalFundraising.Images.map((i) => mapImage(i))\r\n if (personalFundraising?.CoverImage)\r\n personalFundraising.fundraiseImage = mapImage(\r\n personalFundraising.CoverImage\r\n )\r\n\r\n const component = createApp(PersonalFundraising, {\r\n isUpdate,\r\n isMindegave,\r\n personalFundraising,\r\n hasPhoneNumber,\r\n showUnsavedChangesWarning\r\n }).use(Store)\r\n component.mount(PersonalFundraisingDOM)\r\n })\r\n }\r\n}\r\n","import {useStore} from 'vuex'\r\n\r\nexport default {\r\n name: \"PostAside\",\r\n setup(){\r\n const store = useStore()\r\n const startUserInfoOverlay = function(e, userId){\r\n store.commit('main/set_page_overlay_content_data', {\r\n userId\r\n })\r\n store.dispatch('main/openPageOverlay',{\r\n overlayContent: 'MemberOverlay',\r\n returnTarget: e.currentTarget\r\n }) \r\n }\r\n\r\n return {\r\n startUserInfoOverlay\r\n }\r\n }\r\n}","\r\n\r\n\r\n \r\n\r\n","\r\n// TinyMCE imports\r\nimport \"tinymce/tinymce\"\r\nimport \"tinymce/themes/silver\";\r\nimport \"tinymce/icons/default\";\r\nimport 'tinymce/models/dom/model'\r\nimport 'tinymce/skins/ui/oxide/skin.css';\r\n// TinyMCE plugin imports\r\nimport 'tinymce/plugins/emoticons';\r\nimport 'tinymce/plugins/emoticons/js/emojis';\r\nimport 'tinymce/plugins/autoresize';\r\nimport 'tinymce/plugins/lists';\r\nimport 'tinymce/plugins/autolink';\r\n\r\nimport Editor from '@tinymce/tinymce-vue'\r\nimport { computed, ref } from \"vue\"\r\nimport { useStore } from \"vuex\"\r\nimport AttachmentsViewer from \"../AttachmentsViewer/AttachmentsViewer.vue\";\r\nimport AttachmentsEditor from \"../AttachmentsEditor/AttachmentsEditor.vue\";\r\n\r\nexport default {\r\n name: \"PostComment\",\r\n components: {\r\n Editor,\r\n AttachmentsEditor,\r\n AttachmentsViewer\r\n },\r\n props: {\r\n comment: {\r\n type: Object,\r\n required: true\r\n },\r\n canReply: {\r\n type: Boolean,\r\n default: false\r\n },\r\n subComments: {\r\n type: Array,\r\n default: []\r\n },\r\n postId: {\r\n type: String\r\n },\r\n groupId: {\r\n type: String\r\n },\r\n isFrivilligContext: {\r\n type: Boolean,\r\n default: false\r\n }\r\n },\r\n\r\n setup(props){\r\n const store = useStore()\r\n\r\n const editCommentContent = ref(props.comment.content)\r\n const editCommentFilesToAdd = ref([])\r\n const editCommentFilesToRemove = ref([])\r\n \r\n const subCommentContent = ref('')\r\n const subCommentFilesToAdd = ref([])\r\n\r\n const isAddingSubcomment = ref(false)\r\n const isEditingComment = ref(false)\r\n const addSubCommentRef = ref(null)\r\n const userInfoExpanded = ref(false)\r\n\r\n const isSubmitting = ref(false)\r\n const subCommentSubmitButtonDisabled = computed(() => subCommentContent.value.length === 0 || isSubmitting.value)\r\n\r\n const overlayContent = props.isFrivilligContext\r\n ? \"MemberOverlayProfileCard\"\r\n : \"MemberOverlay\" \r\n \r\n const handleEditComment = () => {\r\n isEditingComment.value = true\r\n }\r\n\r\n const handleCancelEditedComment = () => {\r\n isEditingComment.value = false\r\n }\r\n\r\n const handleSaveEditedComment = async () => {\r\n\r\n const formData = new FormData()\r\n\r\n if (editCommentContent.value) {\r\n formData.append('htmlComment', editCommentContent.value)\r\n }\r\n \r\n editCommentFilesToAdd.value.forEach(file => {\r\n formData.append('filesToAdd', file)\r\n })\r\n\r\n editCommentFilesToRemove.value.forEach(fileId => {\r\n formData.append('filesToRemove', fileId)\r\n })\r\n\r\n const response = await store.dispatch('forum/submitEditComment', {\r\n id: props.comment.id,\r\n body: formData\r\n })\r\n\r\n if (response.status === \"success\") {\r\n isEditingComment.value = false\r\n }\r\n }\r\n\r\n const handleDeleteComment = (e) => {\r\n store.commit('main/set_page_overlay_content_data', {\r\n callback: async () => {\r\n if(isSubmitting.value){ \r\n return;\r\n } \r\n isSubmitting.value = true\r\n var response = await store.dispatch('forum/submitDeleteComment', { id: props.comment.id }) \r\n if (response.success) {\r\n location.reload()\r\n } else {\r\n isSubmitting.value = false\r\n }\r\n }\r\n })\r\n\r\n store.dispatch(\"main/openPageOverlay\", {\r\n overlayContent: \"DeleteCommentOverlay\",\r\n returnTarget: e.currentTarget,\r\n });\r\n }\r\n\r\n const scrollToAddSubComment = () => {\r\n isAddingSubcomment.value = true\r\n setTimeout(() => {\r\n addSubCommentRef.value?.scrollIntoView({ behavior: \"smooth\", block: \"end\", inline: \"nearest\" })\r\n }, 100)\r\n }\r\n\r\n const submitNewSubComment = async () => {\r\n\r\n if (!subCommentContent.value) {\r\n return\r\n }\r\n \r\n isSubmitting.value = true\r\n \r\n let formData = new FormData()\r\n formData.append('postId', props.postId)\r\n formData.append('htmlComment', subCommentContent.value)\r\n\r\n subCommentFilesToAdd.value.forEach(file => {\r\n formData.append('file', file)\r\n })\r\n \r\n const response = await store.dispatch('forum/submitNewSubComment', {\r\n id: props.comment.id,\r\n body: formData\r\n })\r\n\r\n await store.dispatch()\r\n }\r\n\r\n const startUserInfoOverlay = (e) => {\r\n\r\n if (props?.comment?.authorId == undefined){\r\n return\r\n }\r\n\r\n store.commit('main/set_page_overlay_content_data', { \r\n userId: props?.comment?.authorId,\r\n isFrivilligContext: props.isFrivilligContext })\r\n\r\n store.dispatch(\"main/openPageOverlay\", {\r\n overlayContent: overlayContent,\r\n returnTarget: e.currentTarget,\r\n })\r\n }\r\n\r\n const getLabel = (labelKey) => store.getters['labels/getLabel']({labelCollection: 'PostCommments', labelKey})\r\n\r\n return {\r\n getLabel,\r\n handleEditComment,\r\n handleDeleteComment,\r\n submitNewSubComment,\r\n handleSaveEditedComment,\r\n handleCancelEditedComment,\r\n startUserInfoOverlay,\r\n scrollToAddSubComment,\r\n editCommentContent,\r\n editCommentFilesToAdd,\r\n editCommentFilesToRemove,\r\n subCommentContent,\r\n subCommentFilesToAdd,\r\n isAddingSubcomment,\r\n isEditingComment,\r\n addSubCommentRef,\r\n userInfoExpanded,\r\n subCommentSubmitButtonDisabled,\r\n isSubmitting\r\n }\r\n }\r\n}","import { render } from \"./PostComment.vue?vue&type=template&id=739db786\"\nimport script from \"./PostComment.vue?vue&type=script&lang=js\"\nexport * from \"./PostComment.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"D:\\\\a\\\\1\\\\s\\\\frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\r\n\r\n\r\n \r\n\r\n","import { useStore } from \"vuex\";\r\nimport { ref, computed, watch, onMounted, nextTick } from 'vue';\r\nimport PostComment from \"../PostComment/PostComment.vue\";\r\n\r\nexport default {\r\n name: \"PostComments\",\r\n components: {\r\n PostComment\r\n },\r\n props: {\r\n canReply: {\r\n type: Boolean,\r\n default: false\r\n },\r\n isFrivilligContext: {\r\n type: Boolean,\r\n default: false\r\n },\r\n postId: {\r\n type: String,\r\n required: true\r\n },\r\n groupId: {\r\n type: String,\r\n required: true\r\n }\r\n },\r\n setup(props) {\r\n const store = useStore()\r\n\r\n const commentId = ref()\r\n const comments = computed(() => store.state.forum.post_comments[props.postId])\r\n\r\n const scrollToComment = (id) => {\r\n const element = document.getElementById(id)\r\n if (element) {\r\n element.scrollIntoView({ behavior: 'smooth', alignToTop: true })\r\n }\r\n }\r\n\r\n watch(\r\n comments,\r\n async (newComments) => {\r\n if (newComments && commentId.value) {\r\n await nextTick()\r\n scrollToComment(commentId.value)\r\n }\r\n },\r\n { immediate: true }\r\n );\r\n\r\n onMounted(() => {\r\n store.dispatch(\"forum/getPostComments\", {\r\n postId: props.postId,\r\n pageId: store.state.main.page_id\r\n })\r\n\r\n const params = new URLSearchParams(window.location.search);\r\n commentId.value = params.get('commentId');\r\n })\r\n\r\n const getLabel = (labelKey) => store.getters['labels/getLabel']({labelCollection: 'PostCommments', labelKey})\r\n\r\n return {\r\n comments,\r\n getLabel\r\n }\r\n }\r\n}","import { render } from \"./PostComments.vue?vue&type=template&id=1879972e\"\nimport script from \"./PostComments.vue?vue&type=script&lang=js\"\nexport * from \"./PostComments.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"D:\\\\a\\\\1\\\\s\\\\frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import {createApp} from 'vue'\r\nimport PostComments from './PostComments'\r\n\r\nconst el = '.kb-component--post-comments'\r\n\r\nexport default function(Store){\r\n const DOM = document.querySelectorAll(el)\r\n if(DOM.length){\r\n DOM.forEach((PostCommentsDOM)=>{\r\n const isFrivilligContext =\r\n PostCommentsDOM.hasAttribute('is-frivillig-context')\r\n const canReply =\r\n PostCommentsDOM.hasAttribute('can-reply')\r\n const props = {\r\n canReply,\r\n isFrivilligContext,\r\n postId: PostCommentsDOM.dataset.postId ?? '',\r\n groupId: PostCommentsDOM.dataset.groupId ?? ''\r\n }\r\n\r\n const component = createApp(PostComments, props).use(Store)\r\n component.mount(PostCommentsDOM)\r\n })\r\n }\r\n}","import {useStore} from 'vuex'\r\n\r\nexport default {\r\n name: \"PostHeader\",\r\n props: {\r\n postId: {\r\n type: String,\r\n required: true\r\n },\r\n authorId: {\r\n type: String,\r\n required: true\r\n },\r\n canEdit: {\r\n type: Boolean,\r\n default: false\r\n },\r\n isFrivilligContext: {\r\n type: Boolean,\r\n default: false\r\n },\r\n authorId: {\r\n type: String,\r\n required: true\r\n },\r\n groupId: {\r\n type: String,\r\n required: true\r\n },\r\n }, \r\n setup(props){\r\n const store = useStore()\r\n const startUserInfoOverlay = function(e){\r\n if(!props.authorId){\r\n return\r\n }\r\n\r\n const overlayContent = props.isFrivilligContext\r\n ? 'MemberOverlayProfileCard'\r\n : 'MemberOverlay'\r\n \r\n store.commit('main/set_page_overlay_content_data', {\r\n userId: props.authorId,\r\n isFrivilligContext: props.isFrivilligContext\r\n })\r\n\r\n store.dispatch('main/openPageOverlay',{\r\n overlayContent: overlayContent,\r\n returnTarget: e.currentTarget,\r\n })\r\n }\r\n\r\n const startDeleteOverlay = function(e) {\r\n store.commit('main/set_page_overlay_content_data', {\r\n callback: () => {\r\n store.dispatch('forum/deletePost', {\r\n id: props.postId\r\n })\r\n }\r\n })\r\n\r\n store.dispatch('main/openPageOverlay',{\r\n overlayContent: 'DeletePostOverlay',\r\n returnTarget: e.currentTarget\r\n })\r\n }\r\n\r\n const handleLike = async function(e){\r\n let like = true\r\n if (e.target.classList.contains(\"kb-post-header__contents-bottom-right-button--filled\")) { \r\n like = false\r\n }\r\n const response = await store.dispatch('forum/submitLikePost', { like: like, id: props.postId })\r\n\r\n if (response.status === 'success') {\r\n e.target.classList.toggle(\"kb-post-header__contents-bottom-right-button--filled\")\r\n }\r\n }\r\n\r\n const handleSave = async function(e){\r\n let save = true\r\n if (e.target.classList.contains(\"kb-post-header__contents-bottom-right-button--filled\")) { \r\n save = false\r\n }\r\n\r\n e.target.setAttribute('aria-pressed', save)\r\n\r\n const response = await store.dispatch('forum/submitSavePost', { save: save, id: props.postId })\r\n\r\n if (response.status === 'success') {\r\n e.target.classList.toggle(\"kb-post-header__contents-bottom-right-button--filled\")\r\n }\r\n }\r\n\r\n const scrollToElement = (id) => {\r\n const target = document.getElementById(id)\r\n target?.scrollIntoView({ behavior: \"smooth\", block: \"end\", inline: \"nearest\" })\r\n }\r\n\r\n return {\r\n startUserInfoOverlay,\r\n startDeleteOverlay,\r\n handleLike,\r\n handleSave,\r\n scrollToElement\r\n }\r\n }\r\n}","\r\n\r\n\r\n \r\n \r\n\r\n","import { ref, computed } from \"vue\"\r\nimport { useStore } from \"vuex\"\r\n\r\n// TinyMCE imports\r\nimport \"tinymce/tinymce\"\r\nimport \"tinymce/themes/silver\";\r\nimport \"tinymce/icons/default\";\r\nimport 'tinymce/models/dom/model'\r\nimport 'tinymce/skins/ui/oxide/skin.css';\r\n// TinyMCE plugin imports\r\nimport 'tinymce/plugins/emoticons';\r\nimport 'tinymce/plugins/emoticons/js/emojis';\r\nimport 'tinymce/plugins/autoresize';\r\nimport 'tinymce/plugins/lists';\r\nimport 'tinymce/plugins/autolink';\r\n\r\nimport Editor from '@tinymce/tinymce-vue'\r\nimport AttachmentsEditor from \"../AttachmentsEditor/AttachmentsEditor.vue\";\r\n\r\nexport default {\r\n name: \"PostHeaderAddComment\",\r\n components: {\r\n AttachmentsEditor,\r\n Editor\r\n },\r\n props: {\r\n postId: {\r\n type: String,\r\n required: true\r\n }\r\n },\r\n setup(props) {\r\n const store = useStore()\r\n const newCommentContent = ref('')\r\n const newCommentFilesToAdd = ref([])\r\n const isSubmitting = ref(false)\r\n const isSubmitButtonDisabled = computed(() => newCommentContent.value.length === 0 || isSubmitting.value)\r\n\r\n const submitNewComment = async () => {\r\n\r\n if (newCommentContent.value === '') {\r\n return\r\n }\r\n\r\n isSubmitting.value = true\r\n\r\n let formData = new FormData()\r\n if (newCommentContent.value !== '') {\r\n formData.append('htmlComment', newCommentContent.value)\r\n }\r\n \r\n newCommentFilesToAdd.value.forEach(file => {\r\n formData.append('file', file)\r\n })\r\n\r\n formData.append('postId', props.postId)\r\n\r\n await store.dispatch('forum/submitNewComment', {\r\n id: props.postId,\r\n body: formData\r\n })\r\n \r\n window.location.reload()\r\n }\r\n\r\n const getLabel = (labelKey) => store.getters['labels/getLabel']({labelCollection: 'PostHeaderAddComment', labelKey})\r\n\r\n return {\r\n getLabel,\r\n submitNewComment,\r\n newCommentContent,\r\n newCommentFilesToAdd,\r\n isSubmitButtonDisabled\r\n }\r\n }\r\n}","import { render } from \"./PostHeaderAddComment.vue?vue&type=template&id=2e1246f7\"\nimport script from \"./PostHeaderAddComment.vue?vue&type=script&lang=js\"\nexport * from \"./PostHeaderAddComment.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"D:\\\\a\\\\1\\\\s\\\\frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\r\n\r\n\r\n \r\n \r\n
\r\n
\r\n {{ totalAmount }} {{ getLabel('numberOfPostsLabel') }}\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n\r\n \r\n \r\n - \r\n \r\n
\r\n \r\n
\r\n\r\n \r\n
{{ getLabel('resultOutForTitle', [posts.length, totalAmount]) }}
\r\n
\r\n
\r\n \r\n\r\n \r\n\r\n","import { ref, onMounted, computed } from 'vue'\r\nimport { useStore } from 'vuex'\r\nimport deepClone from '../../foundation/js/deepClone'\r\nimport getLabelFromStore from '../../foundation/js/getLabel'\r\nimport GroupPost from '../GroupPost/GroupPost'\r\n\r\nexport default {\r\n name: \"PostsList\", \r\n components: { \r\n GroupPost\r\n },\r\n props: {\r\n guid: {\r\n type: String,\r\n required: true\r\n },\r\n groupId: {\r\n type: String,\r\n required: true\r\n },\r\n isClosedGroup: {\r\n type: Boolean,\r\n required: true\r\n },\r\n isLoggedIn: {\r\n type: Boolean,\r\n required: true,\r\n default: false\r\n },\r\n loginUrl: {\r\n type: String,\r\n required: true\r\n },\r\n hasMemberAccess: {\r\n type: Boolean,\r\n required: true,\r\n default: false\r\n },\r\n skip: {\r\n type: Number,\r\n required: true,\r\n default: 0\r\n },\r\n take: {\r\n type: Number,\r\n required: false,\r\n default: 10\r\n },\r\n universId: {\r\n type: String,\r\n required: true\r\n },\r\n numberOfMembers: {\r\n type: Number,\r\n required: true,\r\n default: 0\r\n }\r\n },\r\n setup(props) {\r\n const store = useStore()\r\n const numberOfItems = ref(0)\r\n\r\n const posts = computed(() => store.state.search.results[props.guid] ?? [])\r\n\r\n const totalAmount = computed(() => {\r\n return store.state.search.scoped_total[props.guid] ?? 0\r\n })\r\n \r\n const showSpinner = computed(()=> store.state.search.search_inprogress[props.guid] )\r\n\r\n onMounted(() => {\r\n initFetchPosts()\r\n })\r\n\r\n const getLabel = (key, strings) => {\r\n let label = getLabelFromStore({\r\n labelKey: key,\r\n labelCollection: 'PostsList'\r\n })\r\n\r\n if (strings) {\r\n strings.forEach((str, index) => {\r\n label = label.replace(`{${index}}`, str)\r\n })\r\n }\r\n\r\n return label\r\n }\r\n\r\n const initFetchPosts = function() {\r\n store.commit('search/set_replaceQueryInUrl', false)\r\n\r\n store.dispatch('search/initSearchScope', {\r\n guid: props.guid,\r\n firstPageSize: props.take,\r\n showMorePageSize: props.take,\r\n url: process.env.GET_POSTS_LIST + \"?id=\" + props.groupId + '&universId=' + props.universId\r\n })\r\n\r\n store.dispatch('search/performSearch', {\r\n guid: props.guid,\r\n query: '',\r\n skip: props.skip,\r\n take: props.take\r\n })\r\n }\r\n\r\n const handlePostClick = (e, post) => {\r\n if (!props.isLoggedIn) {\r\n store.dispatch('main/openPageOverlay', {\r\n overlayContent: \"LoginOverlay\",\r\n returnTarget: e.currentTarget\r\n })\r\n return\r\n }\r\n\r\n if (!props.isClosedGroup) {\r\n window.location.href = post.url\r\n return\r\n }\r\n\r\n if (!props.hasMemberAccess) {\r\n store.dispatch('main/openPageOverlay', {\r\n overlayContent: \"ClosedGroupOverlay\",\r\n returnTarget: e.currentTarget\r\n })\r\n\r\n return\r\n }\r\n\r\n window.location.href = post.url\r\n }\r\n \r\n\r\n const getMorePosts = () => {\r\n store.dispatch('search/performMoreSearch', { guid: props.guid })\r\n }\r\n\r\n const openMemberOverlay = (e) => {\r\n store.dispatch(\"main/openPageOverlay\", {\r\n overlayContent: \"MemberListOverlay\",\r\n returnTarget: e.currentTarget,\r\n })\r\n }\r\n\r\n return {\r\n openMemberOverlay,\r\n showSpinner,\r\n getLabel,\r\n numberOfItems,\r\n posts,\r\n totalAmount,\r\n getMorePosts,\r\n handlePostClick,\r\n }\r\n }\r\n}","import { render } from \"./PostsList.vue?vue&type=template&id=52152e18\"\nimport script from \"./PostsList.vue?vue&type=script&lang=js\"\nexport * from \"./PostsList.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"D:\\\\a\\\\1\\\\s\\\\frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { ref, computed } from 'vue'\r\nimport emailValidator from 'foundation/js/inputValidators/emailValidator'\r\n\r\nexport default {\r\n name: 'PreFooter',\r\n setup() {\r\n const emailInput = ref()\r\n const consentCheckbox = ref(false)\r\n\r\n const isValidEmail = computed(\r\n emailValidator.bind(null, emailInput.value)\r\n )\r\n\r\n const readyToSubmit = computed(() => {\r\n return consentCheckbox.value && isValidEmail\r\n })\r\n\r\n const sendInfomationToServer = function () {\r\n if (readyToSubmit.value) {\r\n console.log(\r\n 'Send information via XHR to server:',\r\n emailInput.value\r\n )\r\n }\r\n }\r\n\r\n return {\r\n consentCheckbox,\r\n emailInput,\r\n isValidEmail,\r\n sendInfomationToServer\r\n }\r\n }\r\n}\r\n","import { createApp } from 'vue'\r\nimport options from './PreFooter.options'\r\n\r\nconst el = '.kb-component--pre-footer'\r\n\r\nexport default function (Store) {\r\n const DOM = document.querySelector(el)\r\n if (DOM) {\r\n if (DOM.hasAttribute('data-v-app')) return false\r\n const template = DOM.outerHTML\r\n options.template = template\r\n const component = createApp(options).use(Store)\r\n component.mount(el)\r\n }\r\n}\r\n","\r\n\r\n\r\n \r\n\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n {{ data.saleLabelText }}\r\n
\r\n \r\n\r\n \r\n\r\n \r\n\r\n
\r\n {{ data.title }}\r\n
\r\n\r\n
\r\n
\r\n {{ data.displayPrice }}\r\n
\r\n\r\n
\r\n \r\n Førpris\r\n {{ data.displayBeforePrice }}\r\n
\r\n \r\n\r\n
\r\n\r\n
\r\n\r\n \r\n
{{ data.messageLabelText }}
\r\n
\r\n\r\n \r\n","import { computed } from 'vue'\r\n\r\nexport default {\r\n name: 'ProductCard',\r\n props: {\r\n data: {\r\n type: Object,\r\n required: true\r\n }\r\n },\r\n setup() {\r\n return {}\r\n }\r\n}\r\n","import { render } from \"./ProductCard.vue?vue&type=template&id=cf93394c\"\nimport script from \"./ProductCard.vue?vue&type=script&lang=js\"\nexport * from \"./ProductCard.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"D:\\\\a\\\\1\\\\s\\\\frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import BuySection from 'components/BuySection/BuySection.vue'\r\n\r\nexport default {\r\n name: \"ProductDetail\",\r\n components: {BuySection},\r\n props: {\r\n isSoldOut: {\r\n type: Boolean,\r\n required: true\r\n }\r\n },\r\n\r\n setup(props) {\r\n\r\n return {\r\n isSoldOut: props.isSoldOut\r\n }\r\n }\r\n}","\r\n\r\n\r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n
\r\n {{ getLabel('resultTypeTitle') }}\r\n \r\n {{ totalCountLabel }}\r\n \r\n
\r\n \r\n\r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n - \r\n \r\n
\r\n \r\n\r\n - \r\n \r\n
\r\n\r\n \r\n - \r\n \r\n
\r\n \r\n \r\n
\r\n \r\n\r\n\r\n \r\n Viser {{ resultCount }} ud af {{ totalCount }}\r\n {{ getLabel('resultTypeTitle') }} \r\n \r\n \r\n \r\n
\r\n\r\n \r\n\r\n \r\n \r\n\r\n\r\n","import { useStore } from 'vuex'\r\nimport { computed, onMounted, ref } from 'vue'\r\nimport SortDropdown from '../SortDropdown/SortDropdown.vue'\r\nimport SpotCardGrid from '../SpotCardGrid/SpotCardGrid.vue'\r\nimport ProductCard from 'components/ProductCard/ProductCard.vue'\r\nimport MaterialCard from 'components/MaterialCard/MaterialCard.vue'\r\nimport NoSearchResults from 'components/NoSearchResults/NoSearchResults.vue'\r\n\r\nconst urlMap = {\r\n products: 'PRODUCT_LIST_SEARCH',\r\n productsSearch: 'PRODUCT_SEARCH',\r\n materials: 'PRODUCT_LIST_SEARCH',\r\n materialsSearch: 'PRODUCT_SEARCH'\r\n}\r\n\r\nconst frivilligUrlMap = {\r\n products: 'FRIVILLIG_PRODUCT_LIST_SEARCH',\r\n productsSearch: 'FRIVILLIG_PRODUCT_SEARCH',\r\n materials: 'FRIVILLIG_PRODUCT_LIST_SEARCH',\r\n materialsSearch: 'FRIVILLIG_PRODUCT_SEARCH'\r\n}\r\n\r\nconst getUrl = function (type, webshopContext) {\r\n if (webshopContext === 'frivilligwebshop'){\r\n return frivilligUrlMap[type] ?? 'FRIVILLIG_PRODUCT_SEARCH'\r\n }\r\n\r\n return urlMap[type] ?? 'PRODUCT_SEARCH'\r\n}\r\n\r\nconst webshopSearch = function (props, store) {\r\n store.dispatch('search/initSearchScope', {\r\n guid: props.guid,\r\n firstPageSize: props.firstPageSize,\r\n showMorePageSize: props.showMorePageSize,\r\n url: process.env[getUrl(props.type, props.webshopContext)]\r\n })\r\n\r\n const inputText = new URLSearchParams(document.location.search).get('q')\r\n const skip = new URLSearchParams(document.location.search).get('skip')\r\n const take =\r\n new URLSearchParams(document.location.search).get('take') ?? props.take\r\n\r\n store.dispatch('search/performSearch', {\r\n guid: props.guid,\r\n query: inputText,\r\n skip,\r\n take\r\n })\r\n}\r\n\r\nexport default {\r\n name: 'ProductList',\r\n components: {\r\n SortDropdown,\r\n SpotCardGrid,\r\n ProductCard,\r\n MaterialCard,\r\n NoSearchResults\r\n },\r\n props: {\r\n guid: {\r\n type: String,\r\n required: true\r\n },\r\n type: {\r\n type: String,\r\n required: false,\r\n default: 'products'\r\n },\r\n firstPageSize: {\r\n type: Number,\r\n required: false\r\n },\r\n showMorePageSize: {\r\n type: Number,\r\n required: false\r\n },\r\n spotCardData: {\r\n type: Object,\r\n required: false\r\n },\r\n avoidSetQueryInUrl: {\r\n type: Boolean,\r\n required: false,\r\n default: false\r\n },\r\n hideNoResults: {\r\n type: Boolean,\r\n required: false,\r\n default: false\r\n },\r\n webshopContext: {\r\n type: String,\r\n required: false,\r\n default: 'webshop'\r\n }\r\n },\r\n setup(props) {\r\n const store = useStore()\r\n const results = computed(\r\n () => store.state.search.results[props.guid] ?? []\r\n )\r\n const totalCount = computed(\r\n () => store.state.search.scoped_total[props.guid] ?? 0\r\n )\r\n const showSpinner = computed(\r\n () => store.state.search.search_inprogress[props.guid]\r\n )\r\n\r\n const determineLabelCollection = function () {\r\n return (\r\n {\r\n materialsSearch: 'webshopSearchMaterials',\r\n productsSearch: 'webshopSearchProducts',\r\n products: 'productList',\r\n materials: 'productList'\r\n }[props.type] ??\r\n console.error(\r\n 'search boolean or type missing in order to determine labelCollection'\r\n )\r\n )\r\n }\r\n\r\n const getLabel = (labelKey) =>\r\n store.getters['labels/getLabel']({\r\n labelCollection: determineLabelCollection(),\r\n labelKey: labelKey\r\n })\r\n\r\n const getMoreResults = function () {\r\n store.dispatch('search/performMoreSearch', {\r\n guid: props.guid\r\n })\r\n }\r\n\r\n onMounted(() => {\r\n if (props.avoidSetQueryInUrl) {\r\n store.commit('search/set_replaceQueryInUrl', false)\r\n }\r\n webshopSearch(props, store)\r\n })\r\n\r\n const sortingHandler = function (sorting) {\r\n store.dispatch('search/performSearch', {\r\n guid: props.guid,\r\n sorting\r\n })\r\n }\r\n\r\n const canShowMore = computed(() =>\r\n store.getters['search/canShowMore'](props.guid)\r\n )\r\n\r\n const displayProperties = {\r\n products: { card: 'ProductCard', gridType: '3col' },\r\n productsSearch: { card: 'ProductCard', gridType: '3col' },\r\n materials: { card: 'MaterialCard', gridType: '4col' },\r\n materialsSearch: { card: 'MaterialCard', gridType: '4col' }\r\n }[props.type] ?? { card: 'ProductCard' }\r\n\r\n const displayModifications = computed(() => {\r\n const grid = 'kb-product-list__results--grid'\r\n const gridModifications = displayProperties.gridType\r\n ? displayProperties.gridType\r\n ? grid + '-' + displayProperties.gridType\r\n : ''\r\n : null\r\n\r\n return gridModifications ? gridModifications : ''\r\n })\r\n\r\n // result count\r\n const resultCount = computed(() => {\r\n if (displayProperties.gridType === 'products') {\r\n let totalCount = 0\r\n\r\n for (const key in results.value) {\r\n if (results.value.hasOwnProperty(key)) {\r\n const array = results.value[key].entries\r\n totalCount += array.length\r\n }\r\n }\r\n\r\n return totalCount\r\n }\r\n\r\n return results.value.length\r\n })\r\n\r\n const totalCountLabel = computed(() =>\r\n getLabel('resultCountTitle').replace('{}', totalCount.value)\r\n )\r\n\r\n // spot card\r\n const spotCard = SpotCardGrid\r\n const spotCardIndex = computed(() =>\r\n Math.min(props.spotCardData.position - 1, totalCount.value)\r\n )\r\n\r\n // Flatten the results in case the results are grouped in categories.\r\n // This was we can make sure to place the spot card in the correct position\r\n const flatResults = computed(() => {\r\n if (displayProperties.gridType === 'products') {\r\n return Object.values(results.value).flatMap(\r\n (category) => category.entries\r\n )\r\n }\r\n\r\n return results.value\r\n })\r\n\r\n const shouldRenderSpotCard = function (result, isLastRender) {\r\n if (!props.spotCardData) return false\r\n\r\n const realIndex = flatResults.value.findIndex((r) => r === result)\r\n\r\n if (!isLastRender) {\r\n return realIndex === spotCardIndex.value\r\n }\r\n\r\n return (\r\n realIndex === resultCount.value - 1 &&\r\n spotCardIndex.value >= resultCount.value\r\n )\r\n }\r\n\r\n return {\r\n displayProperties,\r\n results,\r\n resultCount,\r\n totalCountLabel,\r\n getLabel,\r\n getMoreResults,\r\n showSpinner,\r\n totalCount,\r\n canShowMore,\r\n sortingHandler,\r\n displayModifications,\r\n spotCard,\r\n spotCardIndex,\r\n shouldRenderSpotCard\r\n }\r\n }\r\n}\r\n","import { render } from \"./ProductList.vue?vue&type=template&id=12f6390e\"\nimport script from \"./ProductList.vue?vue&type=script&lang=js\"\nexport * from \"./ProductList.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"D:\\\\a\\\\1\\\\s\\\\frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { createApp } from 'vue'\r\nimport ProductList from './ProductList'\r\n\r\nconst el = '.kb-component--product-list'\r\nconst DOMs = document.querySelectorAll(el)\r\n\r\nexport default function (Store) {\r\n if (DOMs && DOMs.length) {\r\n DOMs.forEach((DOM) => {\r\n const guid = DOM.dataset.guid\r\n const type = DOM.dataset.type\r\n const firstPageSize = parseInt(DOM.dataset.firstPageSize) ?? 20\r\n const showMorePageSize =\r\n parseInt(DOM.dataset.showMorePageSize) ?? 20\r\n const spotCardData = DOM.dataset.spotCard\r\n ? JSON.parse(DOM.dataset.spotCard)\r\n : null\r\n const avoidSetQueryInUrl = DOM.hasAttribute(\r\n 'avoid-set-query-in-url'\r\n )\r\n const hideNoResults = DOM.hasAttribute('hide-no-results')\r\n const webshopContext = DOM.dataset.webshopContext\r\n\r\n const props = {\r\n guid,\r\n type,\r\n firstPageSize,\r\n showMorePageSize,\r\n spotCardData,\r\n avoidSetQueryInUrl,\r\n hideNoResults,\r\n webshopContext\r\n }\r\n const component = createApp(ProductList, props).use(Store)\r\n\r\n const mountOn = DOM.id ? `#${DOM.id}` : el\r\n component.mount(mountOn)\r\n })\r\n }\r\n}\r\n","\r\n\r\n\r\n \r\n \r\n {{ getLabel('productsCardsSliderTitle') }}\r\n
\r\n\r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n \r\n\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n\r\n \r\n \r\n\r\n","import Glide from '@glidejs/glide'\r\nimport config from './config/config'\r\nimport { useStore } from 'vuex'\r\nimport { onMounted, ref } from 'vue'\r\nimport ProductCard from 'components/ProductCard/ProductCard'\r\nimport MaterialCard from 'components/MaterialCard/MaterialCard'\r\nimport SpotCardGrid from 'components/SpotCardGrid/SpotCardGrid'\r\n\r\nconst unifyCardHeight = function (root) {\r\n root.value.querySelectorAll('.glide__slide').forEach((slide) => {\r\n slide.style.height = `auto`\r\n })\r\n}\r\n\r\nexport default {\r\n name: 'ProductsCardsSlider',\r\n components: { ProductCard, MaterialCard, SpotCardGrid },\r\n props: {\r\n glideBehaviour: {\r\n type: String,\r\n required: false,\r\n default: 'slider'\r\n },\r\n results: {\r\n type: Array,\r\n required: true\r\n },\r\n spotCardData: {\r\n type: Object,\r\n required: false\r\n },\r\n spotCardIndex: {\r\n type: Number,\r\n required: false\r\n },\r\n type: {\r\n type: String,\r\n required: false,\r\n default: 'products'\r\n },\r\n link: {\r\n type: Object,\r\n required: false\r\n },\r\n sliderId: {\r\n type: String,\r\n required: false\r\n }\r\n },\r\n setup(props) {\r\n const root = ref(null)\r\n const componentRootEl = ref(null)\r\n const store = useStore()\r\n const glidePosition = ref(0)\r\n\r\n const displayProperties = {\r\n products: { card: 'ProductCard' },\r\n materials: { card: 'MaterialCard' }\r\n }[props.type] ?? { card: 'ProductCard' }\r\n\r\n const getLabel = (labelKey) =>\r\n store.getters['labels/getLabel']({\r\n labelCollection: `productsCardsSlider-${props.sliderId}`,\r\n labelKey\r\n })\r\n\r\n const configFunction = function () {\r\n const glideBehaviour = props.glideBehaviour\r\n const viewportSize = document.documentElement.clientWidth\r\n return config({ glideBehaviour, viewportSize, startAt: glidePosition.value })\r\n }\r\n\r\n const truncateSummary = function (summary) {\r\n return summary.length > 120\r\n ? summary.substring(0, 117) + '...'\r\n : summary\r\n }\r\n\r\n const shouldRenderSpotCard = function (index) {\r\n // minus one to place correctly\r\n return props.spotCardIndex - 1 === index\r\n }\r\n\r\n onMounted(() => {\r\n unifyCardHeight(root)\r\n let sliderDOM = document.querySelector(`#${props.sliderId}`)\r\n\r\n if (!sliderDOM) return\r\n\r\n let glide = new Glide(`#${props.sliderId}`, configFunction())\r\n\r\n glide.on('resize', function () {\r\n glide.update(configFunction())\r\n })\r\n\r\n glide.on('move', function (e) {\r\n glidePosition.value = glide.index\r\n })\r\n\r\n glide.mount()\r\n\r\n document\r\n .querySelector('.glide')\r\n .addEventListener('keydown', function (event) {\r\n // When tab key is pressed\r\n if (event.keyCode == 9) {\r\n var card = event.target?.parentNode\r\n if (card == null) return\r\n\r\n // Go to the next or previous card depending on whether it was a shift-tab\r\n var nextCard = event.shiftKey\r\n ? card.previousSibling\r\n : card.nextSibling\r\n var nextIndex =\r\n nextCard?.attributes['data-index']?.value\r\n if (nextIndex) glide.go('=' + nextIndex)\r\n }\r\n })\r\n })\r\n\r\n return {\r\n displayProperties,\r\n componentRootEl,\r\n getLabel,\r\n root,\r\n link: props.link,\r\n truncateSummary,\r\n shouldRenderSpotCard\r\n }\r\n }\r\n}\r\n","export default function ({ glideBehaviour, viewportSize, perView, startAt }) {\r\n let glideConfig = {\r\n type: glideBehaviour,\r\n startAt: startAt ?? 0,\r\n perView: perView ?? 3.55,\r\n gap: 32,\r\n peek: {\r\n after: 275,\r\n before: 0\r\n }\r\n }\r\n\r\n if (glideBehaviour === 'slider') {\r\n glideConfig.rewind = false\r\n glideConfig.bound = true\r\n }\r\n\r\n if (viewportSize < 400) {\r\n return Object.assign(glideConfig, {\r\n perView: 1.15,\r\n gap: 14,\r\n peek: {\r\n after: 50,\r\n before: 0\r\n }\r\n })\r\n } else if (viewportSize < 500) {\r\n return Object.assign(glideConfig, {\r\n perView: 1.45,\r\n gap: 16,\r\n peek: {\r\n after: 50,\r\n before: 0\r\n }\r\n })\r\n } else if (viewportSize < 700) {\r\n return Object.assign(glideConfig, {\r\n perView: 2.1,\r\n gap: 20,\r\n peek: {\r\n after: 75,\r\n before: 0\r\n }\r\n })\r\n } else if (viewportSize < 800) {\r\n return Object.assign(glideConfig, {\r\n perView: 2.9,\r\n gap: 22,\r\n peek: {\r\n after: 70,\r\n before: 0\r\n }\r\n })\r\n } else if (viewportSize < 1000) {\r\n return Object.assign(glideConfig, {\r\n perView: 3.2,\r\n gap: 32,\r\n peek: {\r\n after: 70,\r\n before: 0\r\n }\r\n })\r\n } else if (viewportSize < 1200) {\r\n return Object.assign(glideConfig, {\r\n perView: 3.8,\r\n gap: 32,\r\n peek: {\r\n after: 160,\r\n before: 0\r\n }\r\n })\r\n } else {\r\n return glideConfig\r\n }\r\n}\r\n","import { render } from \"./ProductsCardsSlider.vue?vue&type=template&id=f72585aa\"\nimport script from \"./ProductsCardsSlider.vue?vue&type=script&lang=js\"\nexport * from \"./ProductsCardsSlider.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"D:\\\\a\\\\1\\\\s\\\\frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\r\n\r\n\r\n \r\n \r\n\r\n \r\n\r\n
\r\n \r\n\r\n
\r\n\r\n
\r\n {{ result.category.title }}\r\n
\r\n
\r\n \r\n\r\n
\r\n \r\n\r\n
\r\n {{ result.label.title }}\r\n
\r\n \r\n
\r\n \r\n\r\n
\r\n\r\n
{{ result.title }}
\r\n\r\n
\r\n {{ result.description }}\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n {{ result.fundingAmount.formattedString }}\r\n
\r\n \r\n
\r\n \r\n
\r\n {{ result.statusText }}\r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n\r\n
\r\n\r\n
\r\n \r\n \r\n \r\n\r\n","export default {\r\n name: \"ProjectCard\",\r\n props: {\r\n result: {\r\n type: Object,\r\n required: true\r\n }\r\n },\r\n setup(){\r\n \r\n }\r\n}","import { render } from \"./ProjectCard.vue?vue&type=template&id=14964614\"\nimport script from \"./ProjectCard.vue?vue&type=script&lang=js\"\nexport * from \"./ProjectCard.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"D:\\\\a\\\\1\\\\s\\\\frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n 0\" :guids=\"[guid]\" />\r\n\r\n \r\n \r\n \r\n\r\n\r\n \r\n \r\n \r\n - \r\n \r\n
\r\n \r\n\r\n - \r\n \r\n
\r\n \r\n\r\n 0 && spotCardData && spotCardData.position > results.length\">\r\n - \r\n \r\n
\r\n \r\n
\r\n\r\n \r\n {{ getLabel('resultOutForTitle', [results.length, totalCount]) }} \r\n \r\n \r\n \r\n
\r\n\r\n \r\n\r\n \r\n\r\n \r\n \r\n\r\n","\r\n\r\n\r\n 0\" class=\"kb-search-filtered-tags\">\r\n \r\n \r\n\r\n","import { computed } from 'vue'\r\nimport { useStore } from 'vuex'\r\n\r\nexport default {\r\n name: 'SearchFilteredTags',\r\n props: {\r\n guids: {\r\n type: Array,\r\n required: true\r\n }\r\n },\r\n setup(props) {\r\n const store = useStore()\r\n\r\n const selectedTags = computed(\r\n () => store.getters['search/selectedTags'](props.guids[0]) ?? []\r\n )\r\n const queryString = computed(\r\n () => store.state.search.queries[props.guids[0]]\r\n )\r\n\r\n const clearFilterOnTag = function (tag) {\r\n props.guids.forEach((guid) => {\r\n store.dispatch('search/performSearch', {\r\n guid,\r\n query: queryString.value,\r\n facet: tag\r\n })\r\n })\r\n }\r\n\r\n return {\r\n selectedTags,\r\n clearFilterOnTag\r\n }\r\n }\r\n}\r\n","import { render } from \"./SearchFilteredTags.vue?vue&type=template&id=89a33104\"\nimport script from \"./SearchFilteredTags.vue?vue&type=script&lang=js\"\nexport * from \"./SearchFilteredTags.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"D:\\\\a\\\\1\\\\s\\\\frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { computed, onMounted, ref } from 'vue'\r\nimport { useStore } from 'vuex'\r\nimport deepClone from '../../foundation/js/deepClone'\r\nimport SearchFilteredTags from '../SearchFilteredTags/SearchFilteredTags.vue'\r\nimport SpotCardGrid from '../SpotCardGrid/SpotCardGrid.vue'\r\nimport ProjectCard from '../ProjectCard/ProjectCard.vue'\r\n\r\nexport default {\r\n name: \"ProjectsList\",\r\n components: {\r\n ProjectCard,\r\n SearchFilteredTags,\r\n SpotCardGrid\r\n },\r\n props: {\r\n guid: {\r\n type: String,\r\n required: true\r\n },\r\n firstPageSize: {\r\n type: Number,\r\n required: false\r\n },\r\n showMorePageSize: {\r\n type: Number,\r\n required: false\r\n },\r\n hideNoResults: {\r\n type: Boolean,\r\n required: false,\r\n default: false\r\n },\r\n hideTotalCount: {\r\n type: Boolean,\r\n required: false,\r\n default: false\r\n },\r\n spotCardData: {\r\n type: Object,\r\n required: false\r\n },\r\n },\r\n setup(props){\r\n\r\n const store = useStore()\r\n\r\n onMounted(() => {\r\n initFetchProjects()\r\n })\r\n\r\n const totalCount = computed(() => {\r\n return store.state.search.scoped_total[props.guid]\r\n })\r\n\r\n const results = computed(() => {\r\n return deepClone(store.state.search.results[props.guid] ?? [])\r\n })\r\n\r\n const tags = computed(() => {\r\n return store.getters['search/selectedTags'](props.guid) ?? []\r\n })\r\n\r\n const canShowMore = computed(()=>store.getters['search/canShowMore'](props.guid))\r\n\r\n const showSpinner = computed(\r\n () => store.state.search.search_inprogress[props.guid]\r\n )\r\n \r\n const resultCount = computed(() => {\r\n return results.value.length\r\n })\r\n\r\n\r\n const initFetchProjects = function () {\r\n store.dispatch('search/initSearchScope', {\r\n guid: props.guid,\r\n firstPageSize: props.firstPageSize,\r\n showMorePageSize: props.showMorePageSize,\r\n url: process.env.PROJECTS_SEARCH\r\n })\r\n\r\n const inputText = new URLSearchParams(document.location.search).get('q')\r\n const skip = new URLSearchParams(document.location.search).get('skip')\r\n const take = new URLSearchParams(document.location.search).get('take') ?? props.firstPageSize\r\n\r\n store.dispatch('search/performZeroSearch', {\r\n guid: props.guid\r\n })\r\n\r\n store.dispatch('search/performSearch', {\r\n guid: props.guid,\r\n query: inputText,\r\n skip,\r\n take\r\n })\r\n\r\n }\r\n\r\n const getMoreResults = () => {\r\n store.dispatch('search/performMoreSearch', { guid: props.guid })\r\n }\r\n\r\n return {\r\n results,\r\n tags,\r\n totalCount,\r\n showSpinner,\r\n resultCount,\r\n canShowMore,\r\n getMoreResults,\r\n getLabel: (labelKey, params) => store.getters['labels/getLabel']({labelCollection: 'ProjectsList', labelKey, params}),\r\n }\r\n }\r\n}","import { render } from \"./ProjectsList.vue?vue&type=template&id=19e97013\"\nimport script from \"./ProjectsList.vue?vue&type=script&lang=js\"\nexport * from \"./ProjectsList.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"D:\\\\a\\\\1\\\\s\\\\frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\r\n\r\n\r\n \r\n \r\n
\r\n \r\n \r\n \r\n {{ getLabel(\"orderDateTitle\") }}\r\n {{ receiptResults.orderNumber }}\r\n | \r\n
\r\n \r\n \r\n {{ getLabel(\"orderNumberTitle\") }}\r\n {{\r\n receiptResults.orderDate\r\n }}\r\n | \r\n
\r\n \r\n \r\n \r\n \r\n {{ getLabel(\"orderProductTitle\") }}\r\n | \r\n \r\n {{ getLabel(\"orderAmountTitle\") }}\r\n | \r\n \r\n {{ getLabel(\"orderPriceTitle\") }}\r\n | \r\n
\r\n \r\n\r\n \r\n \r\n \r\n \r\n | \r\n
\r\n\r\n \r\n \r\n \r\n {{ product.productTitle }}\r\n \r\n {{ product.productTitleAdditional }}\r\n {{ getLabel('udlaansvareText') }}\r\n \r\n | \r\n \r\n {{ product.productQuantity }}\r\n | \r\n \r\n {{ product.productPrice }}\r\n | \r\n
\r\n \r\n\r\n \r\n \r\n \r\n | \r\n
\r\n\r\n \r\n \r\n {{ getLabel(\"deliveryTitle\") }}\r\n {{ receiptResults.deliveryAddress }}\r\n {{ receiptResults.deliveryType }}\r\n | \r\n | \r\n \r\n {{ receiptResults.deliveryPrice }}\r\n | \r\n
\r\n\r\n \r\n \r\n \r\n | \r\n
\r\n\r\n \r\n \r\n {{ getLabel(\"totalTitle\") }}\r\n | \r\n \r\n {{ receiptResults.total }}\r\n | \r\n
\r\n\r\n \r\n \r\n {{ getLabel(\"VATTitle\") }}\r\n | \r\n \r\n {{ receiptResults.VAT }}\r\n | \r\n
\r\n\r\n \r\n \r\n {{ getLabel(\"discountTitle\") }}\r\n | \r\n \r\n {{ receiptResults.discount }}\r\n | \r\n
\r\n\r\n \r\n \r\n \r\n | \r\n
\r\n \r\n
\r\n
\r\n\r\n \r\n
\r\n {{ getLabel(\"sellerAddressTitle\") }}\r\n
\r\n
\r\n {{ getLabel(\"sellerAddressName\") }}\r\n
\r\n
\r\n {{ getLabel(\"sellerAddressStreet\") }}\r\n
\r\n
\r\n {{ getLabel(\"sellerAddressCity\") }}\r\n
\r\n
\r\n \r\n\r\n","import { useStore } from 'vuex'\r\nimport { ref, onMounted } from 'vue'\r\n\r\nexport default {\r\n name: 'ReceiptContent',\r\n props: {\r\n receiptResults: {\r\n type: Object,\r\n required: true\r\n }\r\n },\r\n setup() {\r\n const store = useStore()\r\n\r\n const getLabel = (labelKey) =>\r\n store.getters['labels/getLabel']({\r\n labelCollection: 'receiptContent',\r\n labelKey: labelKey,\r\n allowEmpty: true\r\n })\r\n\r\n const src = ref('ReceiptPage.html')\r\n\r\n onMounted(() => {\r\n sessionStorage.removeItem('checkoutState')\r\n })\r\n\r\n return {\r\n getLabel,\r\n print: () => window.print()\r\n }\r\n }\r\n}\r\n","import { render } from \"./ReceiptContent.vue?vue&type=template&id=151f2488\"\nimport script from \"./ReceiptContent.vue?vue&type=script&lang=js\"\nexport * from \"./ReceiptContent.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"D:\\\\a\\\\1\\\\s\\\\frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\r\n\r\n\r\n \r\n \r\n\r\n \r\n \r\n\r\n 0\" :guids=\"[guid]\" />\r\n\r\n \r\n\r\n 0\">\r\n \r\n {{ getLabel('resultOutForTitle', [relays.length, totalAmount]) }}\r\n \r\n \r\n \r\n \r\n
\r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n\r\n","import { computed, onMounted } from 'vue'\r\nimport { useStore } from 'vuex'\r\nimport deepClone from '../../foundation/js/deepClone'\r\nimport getLabelFromStore from '../../foundation/js/getLabel'\r\nimport SearchFilteredTags from '../SearchFilteredTags/SearchFilteredTags.vue'\r\n\r\nexport default {\r\n name: 'RelayList',\r\n components: {\r\n SearchFilteredTags\r\n },\r\n props: {\r\n guid: {\r\n type: String,\r\n required: true\r\n },\r\n skip: {\r\n type: Number,\r\n required: true,\r\n default: 0\r\n },\r\n take: {\r\n type: Number,\r\n required: true,\r\n default: 10\r\n },\r\n hideNoResults: {\r\n type: Boolean,\r\n required: false,\r\n default: false\r\n }\r\n },\r\n setup(props) {\r\n const store = useStore()\r\n\r\n onMounted(() => {\r\n initFetchRelays()\r\n })\r\n\r\n const totalAmount = computed(() => {\r\n return store.state.search.scoped_total[props.guid]\r\n })\r\n\r\n const relays = computed(() => {\r\n return deepClone(store.state.search.results[props.guid] ?? [])\r\n })\r\n\r\n const tags = computed(() => {\r\n return store.getters['search/selectedTags'](props.guid) ?? []\r\n })\r\n\r\n const showSpinner = computed(\r\n () => store.state.search.search_inprogress[props.guid]\r\n )\r\n\r\n const resultCount = computed(() => {\r\n return relays.value.length\r\n })\r\n\r\n const getLabel = (key, strings) => {\r\n let label = getLabelFromStore({\r\n labelKey: key,\r\n labelCollection: 'relayList'\r\n })\r\n\r\n if (strings) {\r\n strings.forEach((str, index) => {\r\n label = label.replace(`{${index}}`, str)\r\n })\r\n }\r\n\r\n return label\r\n }\r\n\r\n const initFetchRelays = function () {\r\n store.commit('search/set_replaceQueryInUrl', false)\r\n\r\n store.dispatch('search/initSearchScope', {\r\n guid: props.guid,\r\n firstPageSize: props.take,\r\n showMorePageSize: props.take,\r\n url: process.env.GET_RELAY_LIST\r\n })\r\n\r\n\r\n store.dispatch('search/performZeroSearch', {\r\n guid: props.guid\r\n })\r\n\r\n store.dispatch('search/performSearch', {\r\n guid: props.guid,\r\n query: '',\r\n skip: props.skip,\r\n take: props.take\r\n })\r\n }\r\n\r\n const getMoreResults = () => {\r\n store.dispatch('search/performMoreSearch', { guid: props.guid })\r\n }\r\n\r\n const getRelayDescription = (relay) => {\r\n const dateFromTo = getDateFromTo(relay)\r\n return `${getLabel('relayDateText')} ${dateFromTo}, kl. ${relay.activeTimeslot}`\r\n }\r\n\r\n const getDateFromTo = ({ startDate, endDate }) => {\r\n\r\n const timestampStart = new Date(startDate)\r\n const timestampEnd = new Date(endDate)\r\n\r\n const dateStart = timestampStart.getDate()\r\n const dateEnd = timestampEnd.getDate()\r\n\r\n const monthStart = timestampStart.toLocaleDateString('da-DK', { month: 'long' })\r\n const monthEnd = timestampEnd.toLocaleDateString('da-DK', { month: 'long' })\r\n\r\n if (dateStart === dateEnd) {\r\n return `d. ${dateStart}. ${monthStart}`\r\n }\r\n else if (monthStart === monthEnd) {\r\n return `d. ${dateStart}. - ${dateEnd}. ${monthStart}`\r\n }\r\n else {\r\n return `d. ${dateStart}. ${monthStart} - ${dateEnd}. ${monthEnd}`\r\n }\r\n }\r\n\r\n return {\r\n tags,\r\n relays,\r\n showSpinner,\r\n resultCount,\r\n totalAmount,\r\n getLabel,\r\n getMoreResults,\r\n getRelayDescription\r\n }\r\n }\r\n}\r\n","import { render } from \"./RelayList.vue?vue&type=template&id=04c75b74\"\nimport script from \"./RelayList.vue?vue&type=script&lang=js\"\nexport * from \"./RelayList.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"D:\\\\a\\\\1\\\\s\\\\frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\r\n\r\n\r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n {handleGroupCheckbox(e)}\"\r\n />\r\n\r\n
\r\n \r\n\r\n \r\n \r\n\r\n {handleGroupTextField(e)}\"\r\n :isValidationError=\"displayError && !roleGroupTextFieldFilled && !roleGroup\"\r\n />\r\n\r\n
\r\n \r\n \r\n \r\n\r\n \r\n\r\n","\r\nimport { ref, computed, onBeforeMount, watch } from 'vue'\r\nimport { useStore } from 'vuex'\r\n\r\nimport nonEmptyStringValidator from \"foundation/js/inputValidators/nonEmptyStringValidator\";\r\n\r\nimport FormInputTextField from 'components/FormInputTextField/FormInputTextField.vue' \r\nimport FormCheckbox from 'components/FormCheckbox/FormCheckbox.vue' \r\nimport FormInputDropdown from 'components/FormInputDropdown/FormInputDropdown.vue' \r\n\r\nexport default {\r\n name: 'RequestRole',\r\n components: {\r\n FormInputTextField,\r\n FormCheckbox,\r\n FormInputDropdown\r\n },\r\n setup() {\r\n const store = useStore()\r\n\r\n const activities = computed(()=> store.state.frivilligprofil.aktivitet_list)\r\n const roles = computed(()=> store.state.frivilligprofil.rolle_list)\r\n const groups = computed(()=> store.state.frivilligprofil.gruppe_list)\r\n\r\n onBeforeMount(() => {\r\n store.dispatch('frivilligprofil/fetchAktiviteter')\r\n })\r\n\r\n let displayError = ref(false)\r\n\r\n const roleActivityId = ref('')\r\n const roleId = ref('')\r\n const roleGroupId = ref('')\r\n const roleGroupCheckbox = ref(false)\r\n const roleGroupTextField = ref('')\r\n const activitySelectOptions = computed(() => activities.value.map(a => {\r\n return {\r\n name: a.name,\r\n value: a.id\r\n }\r\n }))\r\n const groupSelectOptions = computed(() => groups.value.map(g => {\r\n return {\r\n name: g.name,\r\n value: g.kode\r\n }\r\n }))\r\n const roleSelectOptions = computed(() => roles.value.map(a => {\r\n return {\r\n name: a.name,\r\n value: a.id\r\n }\r\n }))\r\n\r\n const handleActivitiesSelector = function (e){\r\n roleActivityId.value = ''\r\n\r\n setTimeout(()=>{\r\n roleActivityId.value = e.target.value\r\n displayError.value = false;\r\n },25)\r\n\r\n // reset of later inputs\r\n roleId.value = ''\r\n roleGroupId.value = ''\r\n roleGroupCheckbox.value = false\r\n roleGroupTextField.value = ''\r\n }\r\n\r\n const handleRoleSelector = function (e){\r\n roleId.value = e.target.value\r\n displayError.value = false;\r\n\r\n // reset of Group selector\r\n roleGroupId.value = ''\r\n }\r\n\r\n const handleGroupSelector = function (e){\r\n roleGroupId.value = e.target.value\r\n\r\n displayError.value = false;\r\n\r\n roleGroupTextField.value = ''\r\n }\r\n\r\n const handleGroupCheckbox = function (e){\r\n roleGroupCheckbox.value = e.target.checked\r\n displayError.value = false;\r\n\r\n roleGroupId.value = ''\r\n\r\n }\r\n\r\n const handleGroupTextField = function (e){\r\n roleGroupTextField.value = e.target.value\r\n\r\n roleGroupId.value = ''\r\n \r\n if(nonEmptyStringValidator(e.target.value)) {\r\n displayError.value = false \r\n }\r\n }\r\n\r\n const determinedRoleGroup = function (){\r\n if(roleGroupId) {\r\n return roleGroupId\r\n } else if(roleGroupCheckbox.value && roleGroupTextField.value) {\r\n return nonEmptyStringValidator(roleGroupTextField.value) ? roleGroupTextField.value : false\r\n }\r\n }\r\n\r\n const roleGroupTextFieldFilled = ref(nonEmptyStringValidator(roleGroupTextField.value))\r\n\r\n const isValid = function () {\r\n return roleActivityId \r\n && roleId \r\n && determinedRoleGroup() \r\n }\r\n\r\n const handleSubmitRoleRequest = function (){\r\n\r\n displayError.value = true;\r\n \r\n if (!isValid())\r\n return false\r\n\r\n displayError.value = false;\r\n\r\n const body = {\r\n aktivitetsId: roleActivityId.value,\r\n rolleId: roleId.value,\r\n gruppekode: roleGroupId.value,\r\n gruppeText: roleGroupTextField.value\r\n }\r\n\r\n store.dispatch('frivilligprofil/submitRoleRequest', {\r\n body: body\r\n })\r\n }\r\n\r\n watch(\r\n roleActivityId,\r\n (newValue, _) => {\r\n store.dispatch(\"frivilligprofil/fetchRoller\", newValue)\r\n store.dispatch(\"frivilligprofil/fetchGrupper\", newValue)\r\n }\r\n )\r\n\r\n return {\r\n activities,\r\n roles,\r\n groups,\r\n roleActivityId,\r\n roleId,\r\n roleGroupId,\r\n roleGroupCheckbox,\r\n roleGroupTextField,\r\n displayError,\r\n roleGroupTextFieldFilled,\r\n activitySelectOptions,\r\n roleSelectOptions,\r\n groupSelectOptions,\r\n handleActivitiesSelector,\r\n handleRoleSelector,\r\n handleGroupSelector,\r\n handleGroupCheckbox,\r\n handleGroupTextField,\r\n handleSubmitRoleRequest,\r\n getLabel: (labelKey) =>\r\n store.getters[\"labels/getLabel\"]({\r\n labelCollection: \"requestRole\",\r\n labelKey,\r\n }),\r\n }\r\n }\r\n}\r\n","import { render } from \"./RequestRole.vue?vue&type=template&id=732883cd\"\nimport script from \"./RequestRole.vue?vue&type=script&lang=js\"\nexport * from \"./RequestRole.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"D:\\\\a\\\\1\\\\s\\\\frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\r\n\r\n\r\n \r\n \r\n\r\n \r\n
\r\n\r\n \r\n
\r\n\r\n \r\n \r\n\r\n","import RequestRole from 'components/RequestRole/RequestRole.vue' \r\nimport ActiveRolesList from 'components/ActiveRolesList/ActiveRolesList.vue' \r\n\r\nexport default {\r\n name: \"RolesFormContent\",\r\n components: {\r\n RequestRole,\r\n ActiveRolesList\r\n },\r\n setup(){\r\n \r\n }\r\n}","import { render } from \"./RolesFormContent.vue?vue&type=template&id=32d7fd5e\"\nimport script from \"./RolesFormContent.vue?vue&type=script&lang=js\"\nexport * from \"./RolesFormContent.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"D:\\\\a\\\\1\\\\s\\\\frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { useStore } from 'vuex'\r\nimport { computed } from 'vue'\r\nimport debounce from 'foundation/js/debounce'\r\n\r\nexport default {\r\n name: 'SearchAndCTA',\r\n props: {\r\n guid: {\r\n type: String,\r\n required: true\r\n }\r\n },\r\n setup(props) {\r\n const store = useStore()\r\n const inputText = computed({\r\n get: () => store.state.search.queries[props.guid] ?? '',\r\n set: (v) =>\r\n store.dispatch('search/setSearchQuery', {\r\n guid: props.guid,\r\n query: v\r\n })\r\n })\r\n\r\n const termInput = debounce(() => {\r\n store.dispatch('search/performSearch', {\r\n guid: props.guid,\r\n query: inputText.value\r\n })\r\n }, 500)\r\n\r\n const createFundraise = function (e) {\r\n const currentUrl = location.href\r\n localStorage.setItem('flowheader__returnurl', currentUrl)\r\n location.href = e.target.href\r\n }\r\n\r\n const openPageOverlay = function(overlayType, e) {\r\n const overlayComponent = {\r\n 'Login': 'loginOverlay',\r\n 'CreateHold': 'opretHoldOverlay'\r\n }[overlayType]\r\n store.dispatch('main/openPageOverlay', {\r\n overlayContent: overlayComponent,\r\n returnTarget: e.currentTarget\r\n })\r\n }\r\n\r\n return {\r\n openPageOverlay,\r\n createFundraise,\r\n inputText,\r\n termInput\r\n }\r\n }\r\n}\r\n","import { createApp } from 'vue'\r\nimport SearchOverlay from './SearchOverlay'\r\n\r\nconst el = '.kb-component--search-overlay'\r\nconst DOM = document.querySelector(el)\r\n\r\nexport default function (Store) {\r\n if (DOM) {\r\n Store.commit(\r\n 'search/set_search_page_redirecturl',\r\n DOM.dataset.searchpageurl\r\n )\r\n }\r\n}\r\n","export default function (identifier) {\r\n return JSON.parse(sessionStorage.getItem(identifier))\r\n}\r\n","import getItemFromStorage from './getItemFromStorage'\r\n\r\nexport default function (identifier, items) {\r\n const existingItems = getItemFromStorage(identifier)\r\n if (!existingItems) {\r\n setItemToStorage(identifier, items)\r\n } else {\r\n const nonMatchingKeysObject = getListWithNonMatchingValues(\r\n existingItems,\r\n items\r\n )\r\n\r\n const updatedItems = [...nonMatchingKeysObject, ...items]\r\n setItemToStorage(identifier, updatedItems)\r\n }\r\n}\r\n\r\nconst setItemToStorage = (identifier, object) => {\r\n sessionStorage.setItem(identifier, JSON.stringify(object))\r\n}\r\n\r\nconst getListWithNonMatchingValues = (existingList, newList) => {\r\n const nonMatchingValuesList = []\r\n\r\n existingList.map((item) => {\r\n const match = newList.find((newItem) => newItem.name === item.name)\r\n if (!match) {\r\n nonMatchingValuesList.push(item)\r\n }\r\n })\r\n return nonMatchingValuesList\r\n}\r\n","import clearItemFromStorage from 'foundation/js/sessionStorageWrapper/clearItemFromStorage'\r\nimport getItemFromStorage from 'foundation/js/sessionStorageWrapper/getItemFromStorage'\r\nimport updateItemFromStorage from 'foundation/js/sessionStorageWrapper/updateItemFromStorage'\r\nimport { ref, onMounted, computed } from 'vue'\r\nimport { useStore } from 'vuex'\r\n\r\nexport default {\r\n name: 'SessionStorageFormularTest',\r\n setup() {\r\n const formularName = ref('testFormular')\r\n const firstName = ref(null)\r\n const lastName = ref(null)\r\n const email = ref(null)\r\n const phone = ref(null)\r\n const fighter = ref(null)\r\n const isFighter = ref(false)\r\n\r\n const teams = computed(() => {\r\n return store.state.forms.forms\r\n })\r\n\r\n const store = useStore()\r\n\r\n onMounted(() => {\r\n const formular = getItemFromStorage(formularName.value)\r\n if (formular) {\r\n addToVuex()\r\n firstName.value = formular.firstName\r\n lastName.value = formular.lastName\r\n email.value = formular.email\r\n phone.value = formular.phone\r\n fighter.value = formular.fighter\r\n }\r\n })\r\n\r\n const addToVuex = () => {\r\n store.dispatch('forms/setForm', {\r\n name: formularName.value,\r\n data: getItemFromStorage(formularName.value)\r\n })\r\n }\r\n\r\n const handleFighterCheck = (e) => {\r\n isFighter.value = e.target.checked\r\n }\r\n\r\n const submitFormular = () => {\r\n updateItemFromStorage(formularName.value, {\r\n firstName: firstName.value,\r\n lastName: lastName.value,\r\n email: email.value,\r\n phone: phone.value\r\n })\r\n addToVuex()\r\n }\r\n\r\n const submitFormular2 = () => {\r\n updateItemFromStorage(formularName.value, {\r\n fighter: isFighter.value\r\n })\r\n addToVuex()\r\n }\r\n\r\n const clearFormular = () => {\r\n clearItemFromStorage(formularName.value)\r\n }\r\n\r\n return {\r\n formularName,\r\n firstName,\r\n lastName,\r\n email,\r\n phone,\r\n fighter,\r\n teams,\r\n handleFighterCheck,\r\n submitFormular,\r\n submitFormular2,\r\n clearFormular\r\n }\r\n }\r\n}\r\n","export default function (identifier) {\r\n sessionStorage.removeItem(identifier)\r\n}\r\n","import { useStore } from 'vuex'\r\n\r\nexport default {\r\n name: 'SignUpButton',\r\n props: {\r\n eventId: {\r\n type: String,\r\n required: true\r\n },\r\n successButtonData: {\r\n type: Object,\r\n required: false\r\n }\r\n },\r\n setup(props) {\r\n const store = useStore()\r\n const startSignUp = function (e) {\r\n if (!props.eventId) return false\r\n\r\n store.commit('events/set_signUpEventId', props.eventId)\r\n store.commit('main/set_page_overlay_content_data', {\r\n successButtonData: props.successButtonData\r\n })\r\n\r\n store.dispatch('main/openPageOverlay', {\r\n overlayContent: 'SignUpForm',\r\n returnTarget: e.currentTarget\r\n })\r\n }\r\n\r\n return {\r\n startSignUp\r\n }\r\n }\r\n}\r\n","import { createApp } from 'vue'\r\nimport SpotCardGrid from './SpotCardGrid'\r\n\r\nconst el = '.kb-component--spot-card-grid'\r\nconst DOMs = document.querySelectorAll(el)\r\n\r\nexport default function (Store) {\r\n if (DOMs && DOMs.length) {\r\n DOMs.forEach((SpotCardGridDOM) => {\r\n const spotCardData = SpotCardGridDOM.dataset.spotCard\r\n ? JSON.parse(SpotCardGridDOM.dataset.spotCard)\r\n : null\r\n const component = createApp(SpotCardGrid, { spotCardData }).use(\r\n Store\r\n )\r\n component.mount(SpotCardGridDOM)\r\n })\r\n }\r\n}\r\n","\r\n\r\n\r\n \r\n \r\n\r\n \r\n\r\n","export default {\r\n name: 'StafetActions',\r\n props: {\r\n nextStepCallback: {\r\n type: Function,\r\n required: false\r\n },\r\n previousStepCallback: {\r\n type: Function,\r\n required: false\r\n },\r\n nextStepLabel: {\r\n type: String,\r\n required: false,\r\n default: 'Videre'\r\n },\r\n previousStepLabel: {\r\n type: String,\r\n required: false,\r\n default: 'Tilbage'\r\n },\r\n skipStepCallback: {\r\n type: Function,\r\n required: false\r\n },\r\n skipStepLabel: {\r\n type: String,\r\n required: false,\r\n default: 'Spring over'\r\n }\r\n },\r\n setup() {}\r\n}\r\n","import { render } from \"./StafetActions.vue?vue&type=template&id=3909cc04\"\nimport script from \"./StafetActions.vue?vue&type=script&lang=js\"\nexport * from \"./StafetActions.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"D:\\\\a\\\\1\\\\s\\\\frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\r\n\r\n\r\n \r\n \r\n \r\n\r\n","import { computed, onBeforeMount, onUpdated, ref } from 'vue'\r\nimport FormInputDropdown from '../FormInputDropdown/FormInputDropdown.vue'\r\nimport FormInputTextField from '../FormInputTextField/FormInputTextField.vue'\r\nimport nonEmptyStringValidator from 'foundation/js/inputValidators/nonEmptyStringValidator'\r\nimport emailValidator from 'foundation/js/inputValidators/emailValidator'\r\n\r\nexport default {\r\n name: 'StafetAddDeltager',\r\n components: {\r\n FormInputDropdown,\r\n FormInputTextField\r\n },\r\n props: {\r\n labels: {\r\n type: Object,\r\n required: true\r\n },\r\n displayInputError: {\r\n type: Boolean,\r\n required: false,\r\n default: false\r\n },\r\n onChangeCallback: {\r\n type: Function,\r\n required: true\r\n },\r\n data: {\r\n type: Object,\r\n required: false\r\n },\r\n excludeMail: {\r\n type: Boolean,\r\n required: false,\r\n default: false\r\n }\r\n },\r\n setup(props) {\r\n const numberOfAdults = ref(0)\r\n const numberOfChildren = ref(0)\r\n const adults = ref([])\r\n const children = ref([])\r\n const callbackData = ref({})\r\n\r\n const totalNumberOfParticipants = computed(() => {\r\n return numberOfAdults.value + numberOfChildren.value\r\n })\r\n\r\n onBeforeMount(() => {\r\n if (props.data) {\r\n numberOfAdults.value = props.data.children.length\r\n numberOfChildren.value = props.data.adults.length\r\n adults.value = props.data.adults\r\n children.value = props.data.children\r\n validateParticipants()\r\n handleCallbackData()\r\n }\r\n })\r\n\r\n const updateAdults = (value) => {\r\n if (adults.value.length > value) {\r\n adults.value = adults.value.slice(0, value)\r\n } else if (value === 0) {\r\n adults.value = []\r\n } else {\r\n const diff = value - adults.value.length\r\n for (let i = 0; i < diff; i++) {\r\n adults.value.push({\r\n name: '',\r\n email: '',\r\n isValid: false\r\n })\r\n }\r\n }\r\n }\r\n\r\n const updateChildren = (value) => {\r\n if (children.value.length > value) {\r\n children.value = children.value.slice(0, value)\r\n } else if (value === 0) {\r\n children.value = []\r\n } else {\r\n const diff = value - children.value.length\r\n for (let i = 0; i < diff; i++) {\r\n children.value.push({\r\n name: '',\r\n email: '',\r\n isValid: false\r\n })\r\n }\r\n }\r\n }\r\n\r\n const setNumberOfAdults = (value) => {\r\n const intValue = parseInt(value)\r\n numberOfAdults.value = intValue ? (intValue > 0 ? intValue : 0) : 0\r\n\r\n updateAdults(intValue)\r\n }\r\n\r\n const setNumberOfChildren = (value) => {\r\n const intValue = parseInt(value)\r\n numberOfChildren.value = intValue\r\n ? intValue > 0\r\n ? intValue\r\n : 0\r\n : 0\r\n\r\n updateChildren(intValue)\r\n }\r\n\r\n const validateParticipants = () => {\r\n let isNumberOfParticipantsValid =\r\n numberOfAdults.value + numberOfChildren.value > 0\r\n let isAdultsValid = true\r\n let isChildrenValid = true\r\n\r\n if (adults.value.length > 0) {\r\n fieldsValiditiy(adults.value)\r\n isAdultsValid = adults.value.every((adult) => adult.isValid)\r\n }\r\n\r\n if (children.value.length > 0) {\r\n fieldsValiditiy(children.value)\r\n isChildrenValid = children.value.every((child) => child.isValid)\r\n }\r\n\r\n callbackData.value.adults = adults.value\r\n callbackData.value.children = children.value\r\n callbackData.value.isValid =\r\n isNumberOfParticipantsValid && isAdultsValid && isChildrenValid\r\n }\r\n\r\n const fieldsValiditiy = (fields) => {\r\n fields.forEach((field) => {\r\n if (props.excludeMail) {\r\n field.isValid = nonEmptyStringValidator(field.name)\r\n } else {\r\n field.isValid =\r\n nonEmptyStringValidator(field.name) &&\r\n emailValidator(field.email)\r\n }\r\n })\r\n }\r\n\r\n const handleCallbackData = () => {\r\n if (props.onChangeCallback) {\r\n props.onChangeCallback(callbackData.value)\r\n }\r\n }\r\n\r\n onUpdated(() => {\r\n validateParticipants()\r\n handleCallbackData()\r\n })\r\n\r\n return {\r\n numberOfAdults,\r\n numberOfChildren,\r\n totalNumberOfParticipants,\r\n adults,\r\n children,\r\n setNumberOfAdults,\r\n setNumberOfChildren,\r\n nonEmptyStringValidator,\r\n emailValidator\r\n }\r\n }\r\n}\r\n","import { render } from \"./StafetAddDeltager.vue?vue&type=template&id=7b6e1a5f\"\nimport script from \"./StafetAddDeltager.vue?vue&type=script&lang=js\"\nexport * from \"./StafetAddDeltager.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"D:\\\\a\\\\1\\\\s\\\\frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\r\n\r\n\r\n \r\n \r\n\r\n \r\n \r\n
\r\n\r\n \r\n\r\n \r\n \r\n\r\n","\r\n\r\n\r\n \r\n 0\">\r\n \r\n - \r\n
\r\n
{{ step.number }}
\r\n
\r\n {{ step.title }}\r\n \r\n \r\n
\r\n\r\n {{ title }}
\r\n \r\n \r\n\r\n \r\n
{{ description }}
\r\n
\r\n\r\n \r\n\r\n","export default {\r\n name: 'StafetHeader',\r\n props: {\r\n steps: {\r\n type: Array,\r\n required: true,\r\n default: []\r\n },\r\n title: {\r\n type: String,\r\n required: true,\r\n default: ''\r\n },\r\n description: {\r\n type: String,\r\n required: true,\r\n default: ''\r\n }\r\n }\r\n}\r\n","import { render } from \"./StafetHeader.vue?vue&type=template&id=3b9d43db\"\nimport script from \"./StafetHeader.vue?vue&type=script&lang=js\"\nexport * from \"./StafetHeader.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"D:\\\\a\\\\1\\\\s\\\\frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\r\n\r\n\r\n \r\n {{ title }}
\r\n\r\n 0\">\r\n \r\n - \r\n
{{ item.label }}
\r\n {{ item.amount }}
\r\n {{ item.price }}
\r\n \r\n \r\n - \r\n
{{ inTotalLabel }}
\r\n \r\n {{ inTotalPrice }} kr.
\r\n \r\n
\r\n \r\n\r\n","export default {\r\n name: 'StafetPayment',\r\n props: {\r\n basket: {\r\n type: Array,\r\n required: true,\r\n default: []\r\n },\r\n title: {\r\n type: String,\r\n required: true,\r\n default: ''\r\n },\r\n inTotalLabel: {\r\n type: String,\r\n required: true,\r\n default: ''\r\n },\r\n inTotalPrice: {\r\n type: String,\r\n required: true,\r\n default: 0\r\n }\r\n },\r\n setup() {}\r\n}\r\n","import { render } from \"./StafetPayment.vue?vue&type=template&id=88dd4160\"\nimport script from \"./StafetPayment.vue?vue&type=script&lang=js\"\nexport * from \"./StafetPayment.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"D:\\\\a\\\\1\\\\s\\\\frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import StafetHeader from '../StafetHeader/StafetHeader.vue'\r\nimport StafetAddDeltager from '../StafetAddDeltager/StafetAddDeltager.vue'\r\nimport StafetPayment from '../StafetPayment/StafetPayment.vue'\r\nimport StafetActions from '../StafetActions/StafetActions.vue'\r\nimport { scrollToFirstError } from '../../foundation/js/inputValidators/scrollToFirstError'\r\nimport { ref, computed } from 'vue'\r\nimport { useStore } from 'vuex'\r\nimport updateBasket from './methods/updateBasket'\r\n\r\nexport default {\r\n name: 'StafetAddMoreDeltagerFlow',\r\n components: {\r\n StafetHeader,\r\n StafetAddDeltager,\r\n StafetPayment,\r\n StafetActions\r\n },\r\n props: {\r\n stafetId: {\r\n type: String,\r\n required: true\r\n },\r\n holdkode: {\r\n type: String,\r\n required: false\r\n },\r\n userData: {\r\n type: Object,\r\n required: false\r\n },\r\n adultPrice: {\r\n type: Number,\r\n required: true\r\n },\r\n childPrice: {\r\n type: Number,\r\n required: true\r\n }\r\n },\r\n setup(props) {\r\n const store = useStore()\r\n const displayInputError = ref(false)\r\n const participants = ref({ adults: [], children: [] })\r\n\r\n const labels = computed(() => {\r\n return store.state.labels.collections['SFLAddDeltagereLabels']\r\n })\r\n\r\n const basket = computed(() => {\r\n return store.state.stafet.basket\r\n })\r\n\r\n const basketTotalPrice = computed(() => {\r\n return store.state.stafet.basketTotalPrice\r\n })\r\n\r\n\r\n const updateAddParticipants = (data) => {\r\n participants.value = data\r\n updateBasket(\r\n participants.value,\r\n labels.value,\r\n store,\r\n props.adultPrice,\r\n props.childPrice\r\n )\r\n updateVuexStore()\r\n }\r\n\r\n const updateVuexStore = () => {\r\n const deltagere = {\r\n name: 'deltagere',\r\n isValid: participants.value.isValid,\r\n value: participants.value.adults\r\n }\r\n const childDeltagere = {\r\n name: 'childDeltagere',\r\n isValid: participants.value.isValid,\r\n value: participants.value.children\r\n }\r\n store.dispatch('stafet/userInputs', {\r\n inputs: [deltagere, childDeltagere]\r\n })\r\n }\r\n\r\n \r\n\r\n const goToPayment = () => {\r\n if (participants.value && participants.value.isValid === true) {\r\n displayInputError.value = false\r\n store.dispatch('stafet/addDeltagereSubmit', {\r\n stafetId: props.stafetId,\r\n teamId: props.holdkode,\r\n userData: props.userData\r\n })\r\n } else {\r\n displayInputError.value = true\r\n scrollToFirstError()\r\n }\r\n }\r\n\r\n return {\r\n displayInputError,\r\n labels,\r\n participants,\r\n basket,\r\n basketTotalPrice,\r\n updateAddParticipants,\r\n goToPayment\r\n }\r\n }\r\n}\r\n","export default function (userInputs, labels, store, adultPrice, childPrice) {\r\n const deltagere = userInputs.adults\r\n const childDeltagere = userInputs.children\r\n\r\n const basket = []\r\n\r\n basket.push({\r\n label: labels.yourInformationTotalNewAdultDeltagereLabel,\r\n amount: `${deltagere.length} ${labels.yourInformationTotalDeltagereLabel} (á ${adultPrice} kr.)`,\r\n price: `${deltagere.length * adultPrice} kr.`,\r\n intPrice: deltagere.length * adultPrice\r\n })\r\n\r\n basket.push({\r\n label: labels.yourInformationTotalNewChildDeltagereLabel,\r\n amount: `${childDeltagere.length} ${labels.yourInformationTotalDeltagereLabel} (á ${childPrice} kr.)`,\r\n price: `${childDeltagere.length * childPrice} kr.`,\r\n intPrice: childDeltagere.length * childPrice\r\n })\r\n\r\n store.dispatch('stafet/basket', { basket: basket })\r\n}\r\n","import { render } from \"./StafetAddMoreDeltagerFlow.vue?vue&type=template&id=13ea806c\"\nimport script from \"./StafetAddMoreDeltagerFlow.vue?vue&type=script&lang=js\"\nexport * from \"./StafetAddMoreDeltagerFlow.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"D:\\\\a\\\\1\\\\s\\\\frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\r\n\r\n\r\n \r\n \r\n\r\n \r\n \r\n
\r\n \r\n\r\n","\r\n\r\n\r\n \r\n \r\n {{ labels.selectYourHoldTitle }}\r\n
\r\n\r\n \r\n validateField('teamName', e.target.value)\"\r\n :errorMessageLabel=\"labels.selectYourHoldErrorMessage\"\r\n :isValidationError=\"handleErrorMessage('teamName')\"\r\n />\r\n
\r\n\r\n \r\n validateField('isChild', e.target.checked)\"\r\n />\r\n
\r\n\r\n \r\n\r\n \r\n \r\n
\r\n {{ labels.selectYourFighterTshirtTitle }}\r\n
\r\n\r\n
\r\n {{ labels.selectYourFighterTshirtDescription }}\r\n
\r\n
\r\n\r\n \r\n validateField('shirtSize', e.target.value)\"\r\n :isValidationError=\"handleErrorMessage('shirtSize')\"\r\n />\r\n
\r\n\r\n \r\n
\r\n {{ labels.fighterArrangementTitle }}\r\n
\r\n\r\n
\r\n {{ labels.fighterArrangementDescription }}\r\n
\r\n
\r\n\r\n validateField('isFighterFreeLunch', e.target.checked)\r\n \"\r\n />\r\n \r\n\r\n nextStepCallback(stepModel)\"\r\n :nextStepLabel=\"labels.formNavigationNextStep1\"\r\n />\r\n \r\n\r\n","import isBoolean from 'foundation/js/inputValidators/isBoolean'\r\nimport nonEmptyStringValidator from 'foundation/js/inputValidators/nonEmptyStringValidator'\r\n\r\nexport default [\r\n {\r\n name: 'teamName',\r\n value: '',\r\n isValid: false,\r\n validator: nonEmptyStringValidator\r\n },\r\n {\r\n name: 'isFighter',\r\n value: false,\r\n isValid: false,\r\n validator: isBoolean\r\n },\r\n {\r\n dependentField: 'isFighter',\r\n dependentFieldValue: false,\r\n dependentFieldValidator: (value) => value === false,\r\n name: 'shirtSize',\r\n value: '',\r\n isValid: false,\r\n validator: nonEmptyStringValidator\r\n },\r\n {\r\n name: 'isFighterFreeLunch',\r\n value: false,\r\n isValid: false,\r\n validator: isBoolean\r\n },\r\n {\r\n name: 'isChild',\r\n value: false,\r\n isValid: false,\r\n validator: isBoolean\r\n }\r\n]\r\n","/**\r\n *\r\n * @param {object} field - object, field name, value, a validator function and a isValid boolean\r\n * @returns\r\n */\r\n\r\nexport default function (field) {\r\n if (!field.validator) {\r\n return (field.isValid = true)\r\n }\r\n\r\n if (\r\n field.dependentField &&\r\n field.dependentFieldValidator(field.dependentFieldValue)\r\n ) {\r\n return (field.isValid = true)\r\n } else if (field.dependentField && field.dependentFieldValue) {\r\n return (field.isValid = field.validator(field.value))\r\n }\r\n\r\n return (field.isValid = field.validator(field.value))\r\n}\r\n","export default Object.freeze({\r\n STAFET_JOIN_A_TEAM: 'stafetJoinATeamUserInputs',\r\n STAFET_DONATION: 'stafetDonationUserInputs',\r\n STAFET_JOIN_AS_FIGHTER: 'stafetJoinAsFighterUserInputs',\r\n STAFET_CREATE_A_TEAM: 'stafetCreateATeamUserInputs',\r\n ADD_DELTAGERE: 'addDeltagereUserInputs'\r\n})\r\n","import { computed, onBeforeMount, ref } from 'vue'\r\nimport _stafetCommonStepsProps from 'foundation/js/configurations/_stafetCommonStepsProps'\r\nimport FormInputDropdown from '../FormInputDropdown/FormInputDropdown.vue'\r\nimport FormCheckbox from '../FormCheckbox/FormCheckbox.vue'\r\nimport StafetActions from '../StafetActions/StafetActions.vue'\r\nimport { useStore } from 'vuex'\r\nimport fieldsConfig from './config/fieldsConfig'\r\nimport fieldValidator from 'foundation/js/stafet/fieldValidator'\r\nimport getItemFromStorage from 'foundation/js/sessionStorageWrapper/getItemFromStorage'\r\nimport sessionStorageIdentifierEnum from 'foundation/js/sessionStorageWrapper/sessionStorageIdentifierEnum'\r\nimport getFieldValue from 'foundation/js/stafet/getFieldValue'\r\n\r\nexport default {\r\n name: 'StafetDeltagPaaHoldStepOne',\r\n components: {\r\n FormInputDropdown,\r\n FormCheckbox,\r\n StafetActions\r\n },\r\n props: _stafetCommonStepsProps,\r\n setup(props) {\r\n const store = useStore()\r\n const teamName = ref('')\r\n const isFighter = ref(false)\r\n const shirtSize = ref('')\r\n const isFighterFreeLunch = ref(false)\r\n const isChild = ref(false)\r\n\r\n const tshirtSizes = computed(() => {\r\n const array = []\r\n props.tshirtSizes.forEach((size) => {\r\n array.push({\r\n name: size.displayName,\r\n value: size.value\r\n })\r\n })\r\n return array\r\n })\r\n\r\n const teams = computed(() => {\r\n const array = []\r\n if (props.holdList) {\r\n props.holdList.forEach((hold) =>\r\n array.push({ name: hold.name, value: hold.holdKode })\r\n )\r\n }\r\n\r\n return array\r\n })\r\n\r\n onBeforeMount(() => {\r\n const storedFields = getItemFromStorage(\r\n sessionStorageIdentifierEnum.STAFET_JOIN_A_TEAM\r\n )\r\n\r\n if (storedFields) {\r\n updateLocalRefs([\r\n {\r\n name: 'teamName',\r\n value: getFieldValue(storedFields, 'teamName')\r\n },\r\n {\r\n name: 'isFighter',\r\n value: getFieldValue(storedFields, 'isFighter')\r\n },\r\n {\r\n name: 'shirtSize',\r\n value: getFieldValue(storedFields, 'shirtSize')\r\n },\r\n {\r\n name: 'isFighterFreeLunch',\r\n value: getFieldValue(storedFields, 'isFighterFreeLunch')\r\n },\r\n {\r\n name: 'isChild',\r\n value: getFieldValue(storedFields, 'isChild')\r\n }\r\n ])\r\n }\r\n\r\n if (props.holdId) {\r\n teamName.value = props.holdId\r\n fieldsConfig.find((field) => field.name === \"teamName\").value = props.holdId\r\n }\r\n\r\n store.dispatch('donation/teams', { stafetId: props.stafetId })\r\n })\r\n\r\n const updateLocalRefs = (fields) => {\r\n fields.forEach((field) => {\r\n if (field.value === undefined || field.value === null) return\r\n fieldsConfig.find((item) => item.name === field.name).value =\r\n field.value\r\n switch (field.name) {\r\n case 'teamName':\r\n teamName.value = field.value\r\n return\r\n case 'isFighter':\r\n isFighter.value = field.value\r\n return\r\n case 'shirtSize':\r\n shirtSize.value = field.value\r\n return\r\n case 'isFighterFreeLunch':\r\n isFighterFreeLunch.value = field.value\r\n return\r\n case 'isChild':\r\n isChild.value = field.value\r\n return\r\n default:\r\n return\r\n }\r\n })\r\n }\r\n\r\n const validateField = (fieldName, value) => {\r\n updateLocalRefs([{ name: fieldName, value: value }]) // update local refs and keep in sync with fieldsConfig\r\n const field = fieldsConfig.find((field) => field.name === fieldName)\r\n if (field) {\r\n if (field.dependentField) {\r\n const dependentField = fieldsConfig.find(\r\n (item) => item.name === field.dependentField\r\n )\r\n\r\n if (dependentField) {\r\n field.dependentFieldValue = dependentField.value\r\n }\r\n }\r\n\r\n field.value = value\r\n fieldValidator(field)\r\n }\r\n }\r\n\r\n const stepModel = computed(() => {\r\n return fieldsConfig\r\n })\r\n\r\n const handleErrorMessage = (fieldName) => {\r\n const field = fieldsConfig.find((field) => field.name === fieldName)\r\n return !field?.isValid && props.displayInputError\r\n }\r\n\r\n return {\r\n teamName,\r\n isFighter,\r\n shirtSize,\r\n tshirtSizes,\r\n isFighterFreeLunch,\r\n isChild,\r\n teams,\r\n stepModel,\r\n validateField,\r\n handleErrorMessage\r\n }\r\n }\r\n}\r\n","import { render } from \"./StafetDeltagPaaHoldStepOne.vue?vue&type=template&id=4c4c0e6e\"\nimport script from \"./StafetDeltagPaaHoldStepOne.vue?vue&type=script&lang=js\"\nexport * from \"./StafetDeltagPaaHoldStepOne.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"D:\\\\a\\\\1\\\\s\\\\frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\r\n\r\n\r\n \r\n \r\n
\r\n {{ labels.taendEtLysTitle }}\r\n
\r\n
\r\n {{ labels.taendEtLysDescription }}\r\n
\r\n
\r\n\r\n setDonationAmount(input)\"\r\n >\r\n\r\n \r\n\r\n \r\n\r\n setDonationPerLightBag(e.target.value)\"\r\n />\r\n\r\n 0\">\r\n
{{ labels.taendEtLysCustomizeLysposeTitle }}
\r\n\r\n \r\n \r\n\r\n nextStepCallback(stepModel)\"\r\n :nextStepLabel=\"labels.formNavigationNextStep2\"\r\n :skipStepCallback=\"skipStepCallback\"\r\n :skipStepLabel=\"labels.formNavigationSkipStep\"\r\n :previousStepCallback=\"previousStepCallback\"\r\n :previousStepLabel=\"labels.formNavigationPrevStep\"\r\n />\r\n \r\n\r\n","\r\n\r\n\r\n \r\n \r\n \r\n
\r\n \r\n \r\n
\r\n\r\n
\r\n {{ config.errorMessage }}\r\n \r\n
\r\n \r\n \r\n\r\n","export default Object.freeze({\r\n NONE: 'none',\r\n TEAM: 'team',\r\n STAFET: 'stafet',\r\n DELTAGER: 'participant',\r\n})\r\n","import { computed, onMounted, onUpdated } from 'vue'\r\nimport supportTypeEnum from './supportTypeEnum'\r\nimport { useStore } from 'vuex'\r\nimport donationTypeValidator from './validators/donationTypeValidator'\r\nimport teamValidator from './validators/teamValidator'\r\nimport deltagerValidator from './validators/deltagerValidator'\r\n\r\nexport default {\r\n name: 'SupportSelector',\r\n props: {\r\n stafetId: {\r\n type: String,\r\n required: true\r\n },\r\n labels: {\r\n type: Object,\r\n required: true\r\n },\r\n displayInputError: {\r\n type: Boolean,\r\n required: false,\r\n default: false\r\n },\r\n onChangeCallback: {\r\n type: Function,\r\n required: true\r\n },\r\n holdList: {\r\n type: Array,\r\n required: false,\r\n default: []\r\n }\r\n },\r\n setup(props) {\r\n const store = useStore()\r\n\r\n const donationFor = computed(() => {\r\n return store.state.donation.donationFor\r\n })\r\n\r\n const donationTeam = computed(() => {\r\n return store.state.donation.donationTeam\r\n })\r\n\r\n const donationParticipant = computed(() => {\r\n return store.state.donation.donationParticipant\r\n })\r\n\r\n const teams = computed(() => {\r\n const result = []\r\n if (props.holdList.length > 0) {\r\n props.holdList.forEach((hold) =>\r\n result.push({\r\n name: hold.name,\r\n value: hold.holdKode,\r\n selected: hold.holdKode === donationTeam.value\r\n })\r\n )\r\n } else {\r\n const teams = store.state.donation.teams\r\n teams.map((team) => {\r\n result.push({\r\n name: team.name,\r\n value: team.id,\r\n selected: team.id === donationTeam.value\r\n })\r\n })\r\n }\r\n return result\r\n })\r\n\r\n const participants = computed(() => {\r\n const result = []\r\n const participants = store.state.donation.participants\r\n participants.map((participant) => {\r\n result.push({\r\n selected: participant.id === donationParticipant.value,\r\n name: `${participant.firstName} ${participant.lastName ?? ''}`,\r\n value: participant.id\r\n })\r\n })\r\n return result\r\n })\r\n\r\n const isTeamSelected = computed(() => {\r\n const isTeam = donationFor.value === supportTypeEnum.TEAM\r\n\r\n if (isTeam) {\r\n store.dispatch('donation/participants')\r\n }\r\n\r\n return isTeam\r\n })\r\n\r\n const isDeltagerSelected = computed(() => {\r\n const isDeltager = donationFor.value === supportTypeEnum.DELTAGER\r\n\r\n if (isDeltager) {\r\n store.dispatch('donation/participants')\r\n }\r\n return isDeltager\r\n })\r\n\r\n const isSupportTypeValid = computed(() => {\r\n return donationTypeValidator()\r\n })\r\n\r\n const isTeamValid = computed(() => {\r\n let isTeamValid = donationTeam.value !== ''\r\n store.dispatch('donation/participants', {\r\n teamId: isTeamValid ? donationTeam.value : undefined\r\n })\r\n\r\n return teamValidator()\r\n })\r\n\r\n const isDeltagerValid = computed(() => {\r\n return deltagerValidator()\r\n })\r\n\r\n const supportTypeHandler = (e) => {\r\n store.dispatch('donation/donationFor', {\r\n donationFor: e.target.value\r\n })\r\n }\r\n\r\n const teamHandler = (e) => {\r\n store.dispatch('donation/participants')\r\n store.dispatch('donation/donationParticipant', {\r\n participant: ''\r\n })\r\n store.dispatch('donation/donationTeam', { team: e.target.value })\r\n }\r\n\r\n const participantHandler = (e) => {\r\n store.dispatch('donation/donationParticipant', {\r\n participant: e.target.value\r\n })\r\n }\r\n\r\n const supportSelectorConfig = computed(() => [\r\n {\r\n id: 'support-selector',\r\n label: props.labels.yourSupportSelectorDropdownLabel,\r\n shown: true,\r\n required: true,\r\n isValid: isSupportTypeValid.value,\r\n errorMessage:\r\n props.labels.yourSupportSelectorDropdownErrorMessage,\r\n handler: supportTypeHandler,\r\n defaultOption: {\r\n name: props.labels.yourSupportSelectorDropdownPlaceholder,\r\n value: supportTypeEnum.NONE\r\n },\r\n options: [\r\n {\r\n name: props.labels\r\n .yourSupportSelectorDropdownOptionStafet,\r\n value: supportTypeEnum.STAFET,\r\n selected: supportTypeEnum.STAFET === donationFor.value\r\n },\r\n {\r\n name: props.labels\r\n .yourSupportSelectorDropdownOptionHold,\r\n value: supportTypeEnum.TEAM,\r\n selected: supportTypeEnum.TEAM === donationFor.value\r\n },\r\n {\r\n name: props.labels\r\n .yourSupportSelectorDropdownOptionDeltager,\r\n value: supportTypeEnum.DELTAGER,\r\n selected: supportTypeEnum.DELTAGER === donationFor.value\r\n }\r\n ]\r\n },\r\n {\r\n id: 'team-selector',\r\n label: props.labels.yourSupportSelectorDropdownHoldLabel,\r\n shown: isTeamSelected.value || isDeltagerSelected.value,\r\n required: true,\r\n isValid: isTeamValid.value,\r\n errorMessage:\r\n props.labels.yourSupportSelectorDropdownHoldErrorMessage,\r\n handler: teamHandler,\r\n defaultOption: {\r\n name: props.labels\r\n .yourSupportSelectorDropdownHoldPlaceholder,\r\n value: ''\r\n },\r\n options: teams.value\r\n },\r\n {\r\n id: 'participant-selector',\r\n label: props.labels.yourSupportSelectorDropdownDeltagerLabel,\r\n shown: isDeltagerSelected.value,\r\n required: true,\r\n showErrorMessage: false,\r\n isValid: isDeltagerValid.value,\r\n errorMessage:\r\n props.labels\r\n .yourSupportSelectorDropdownDeltagerErrorMessage,\r\n handler: participantHandler,\r\n defaultOption: {\r\n name: props.labels\r\n .yourSupportSelectorDropdownDeltagerPlaceholder,\r\n value: ''\r\n },\r\n options: participants.value\r\n }\r\n ])\r\n\r\n const handleChangeCallback = () => {\r\n if (props.onChangeCallback) {\r\n props.onChangeCallback({\r\n donationFor: donationFor.value,\r\n donationTeam: donationTeam.value,\r\n donationParticipant: donationParticipant.value,\r\n isValid: isSupportTypeValid.value && isTeamValid.value\r\n })\r\n }\r\n }\r\n\r\n onMounted(() => {\r\n handleChangeCallback()\r\n })\r\n\r\n onUpdated(() => {\r\n handleChangeCallback()\r\n })\r\n\r\n return {\r\n supportSelectorConfig,\r\n donationFor,\r\n donationTeam,\r\n donationParticipant\r\n }\r\n }\r\n}\r\n","import { useStore } from 'vuex'\r\nimport supportTypeEnum from '../supportTypeEnum'\r\n\r\nexport default function () {\r\n const store = useStore()\r\n const donationFor = store.state.donation.donationFor\r\n return donationFor !== supportTypeEnum.NONE\r\n}\r\n","import { useStore } from 'vuex'\r\nimport supportTypeEnum from '../supportTypeEnum'\r\n\r\nexport default function () {\r\n const store = useStore()\r\n const donationFor = store.state.donation.donationFor\r\n const donationTeam = store.state.donation.donationTeam\r\n\r\n return donationFor === supportTypeEnum.STAFET || donationTeam !== ''\r\n}\r\n","import { useStore } from 'vuex'\r\nimport supportTypeEnum from '../supportTypeEnum'\r\n\r\nexport default function () {\r\n const store = useStore()\r\n const donationFor = store.state.donation.donationFor\r\n const donationTeam = store.state.donation.donationTeam\r\n const donationParticipant = store.state.donation.donationParticipant\r\n\r\n return (\r\n donationFor !== supportTypeEnum.DELTAGER ||\r\n (donationTeam !== '' && donationParticipant !== '')\r\n )\r\n}\r\n","import { render } from \"./SupportSelector.vue?vue&type=template&id=ece2dba6\"\nimport script from \"./SupportSelector.vue?vue&type=script&lang=js\"\nexport * from \"./SupportSelector.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"D:\\\\a\\\\1\\\\s\\\\frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\r\n\r\n\r\n \r\n \r\n toggleDedicatedLightBag(e.target.checked)\"\r\n :label=\"labels.isLysposeDedicatedCheckboxLabel\"\r\n />\r\n\r\n toggleAddPersonalNote(e.target.checked)\"\r\n :label=\"labels.personalNoteCheckboxLabel\"\r\n />\r\n
\r\n\r\n \r\n
\r\n
\r\n {{ labels.personalizeLightBagsTitle }}\r\n
\r\n \r\n\r\n \r\n\r\n \r\n \r\n
\r\n \r\n \r\n \r\n
\r\n {{ labels.personalizeLightBagsTitle }}\r\n {{ index + 1 }}\r\n
\r\n \r\n\r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n","import { onBeforeMount, onUpdated, ref, watch } from 'vue'\r\nimport FormCheckbox from '../FormCheckbox/FormCheckbox.vue'\r\nimport FormInputDropdown from '../FormInputDropdown/FormInputDropdown.vue'\r\nimport FormInputTextField from '../FormInputTextField/FormInputTextField.vue'\r\nimport FormInputTextarea from '../FormInputTextarea/FormInputTextarea.vue'\r\nimport nonEmptyStringValidator from 'foundation/js/inputValidators/nonEmptyStringValidator'\r\n\r\nexport default {\r\n name: 'StafetFlowLightBagsMetaList',\r\n components: {\r\n FormCheckbox,\r\n FormInputDropdown,\r\n FormInputTextField,\r\n FormInputTextarea\r\n },\r\n props: {\r\n labels: {\r\n type: Object,\r\n required: true\r\n },\r\n numberOfDonations: {\r\n type: Number,\r\n required: true\r\n },\r\n onChangeCallback: {\r\n type: Function,\r\n required: true\r\n },\r\n displayInputError: {\r\n type: Boolean,\r\n required: false,\r\n default: false\r\n },\r\n data: {\r\n type: Object,\r\n required: false\r\n },\r\n isLysposerDedicated: {\r\n type: Boolean,\r\n required: false,\r\n default: false\r\n },\r\n addPersonalNote: {\r\n type: Boolean,\r\n required: false,\r\n default: false\r\n }\r\n },\r\n setup(props) {\r\n const isLysposerDedicated = ref(props.isLysposerDedicated)\r\n const addPersonalNote = ref(props.addPersonalNote)\r\n\r\n const dedicatedTypeAll = ref('')\r\n const lysposeDedicatedToAll = ref('')\r\n const lightPersonalNoteAll = ref('')\r\n\r\n const donationAmountList = ref([])\r\n\r\n // static options\r\n const dedicationTypeOptions = [\r\n {\r\n name: props.labels.inMemoryOf,\r\n value: 'TilMindeFor'\r\n },\r\n {\r\n name: props.labels.inSupportOf,\r\n value: 'TilStoetteFor'\r\n }\r\n ]\r\n\r\n watch(\r\n () => props.numberOfDonations,\r\n (newValue, oldValue) => {\r\n if (newValue < oldValue) {\r\n donationAmountList.value = donationAmountList.value.slice(\r\n 0,\r\n newValue\r\n )\r\n } else {\r\n const diff = newValue - oldValue\r\n for (let i = 0; i < diff; i++) {\r\n donationAmountList.value.push({\r\n lysposeDedicatedTo: '',\r\n personalNote: '',\r\n lysposeDedicatedType: ''\r\n })\r\n }\r\n }\r\n }\r\n )\r\n\r\n onBeforeMount(() => {\r\n if (props.isLysposerDedicated) {\r\n dedicatedTypeAll.value = props.data[0].lysposeDedicatedType\r\n lysposeDedicatedToAll.value = props.data[0].lysposeDedicatedTo\r\n lightPersonalNoteAll.value = props.data[0].personalNote\r\n }\r\n\r\n if (props.data?.length > 0) {\r\n donationAmountList.value = props.data\r\n } else {\r\n for (let i = 0; i < props.numberOfDonations; i++) {\r\n donationAmountList.value.push({\r\n lysposeDedicatedTo: '',\r\n personalNote: '',\r\n lysposeDedicatedType: ''\r\n })\r\n }\r\n }\r\n\r\n if (donationAmountList.value.length < props.numberOfDonations) {\r\n const diff =\r\n props.numberOfDonations - donationAmountList.value.length\r\n for (let i = 0; i < diff; i++) {\r\n donationAmountList.value.push({\r\n lysposeDedicatedTo: '',\r\n personalNote: '',\r\n lysposeDedicatedType: ''\r\n })\r\n }\r\n } else {\r\n donationAmountList.value = donationAmountList.value.slice(\r\n 0,\r\n props.numberOfDonations\r\n )\r\n }\r\n\r\n handleCallbackData()\r\n })\r\n\r\n onUpdated(() => {\r\n handleCallbackData()\r\n })\r\n\r\n const validateDonationItems = () => {\r\n\r\n const dedicatedTypeValid = isLysposerDedicated.value\r\n ? nonEmptyStringValidator(dedicatedTypeAll.value)\r\n : donationAmountList.value.every((item) => nonEmptyStringValidator(item.lysposeDedicatedType))\r\n\r\n const lightDedicatedToValid = isLysposerDedicated.value\r\n ? nonEmptyStringValidator(lysposeDedicatedToAll.value)\r\n : donationAmountList.value.every((item) => nonEmptyStringValidator(item.lysposeDedicatedTo))\r\n\r\n return dedicatedTypeValid && lightDedicatedToValid\r\n }\r\n\r\n const handleCallbackData = () => {\r\n if (props.onChangeCallback) {\r\n props.onChangeCallback({\r\n isLysposerDedicated: isLysposerDedicated.value,\r\n addPersonalNote: addPersonalNote.value,\r\n donationItems: donationAmountList.value,\r\n isValid: validateDonationItems()\r\n })\r\n }\r\n }\r\n\r\n const toggleAddPersonalNote = (value) => {\r\n addPersonalNote.value = value\r\n }\r\n\r\n const toggleDedicatedLightBag = (value) => {\r\n isLysposerDedicated.value = value\r\n\r\n if (value) {\r\n dedicatedTypeAll.value = donationAmountList.value[0].lysposeDedicatedType\r\n lysposeDedicatedToAll.value = donationAmountList.value[0].lysposeDedicatedTo\r\n lightPersonalNoteAll.value = donationAmountList.value[0].personalNote\r\n }\r\n \r\n donationAmountList.value.forEach((item) => {\r\n item.lysposeDedicatedType = dedicatedTypeAll.value\r\n item.lysposeDedicatedTo = lysposeDedicatedToAll.value\r\n item.personalNote = lightPersonalNoteAll.value\r\n })\r\n }\r\n\r\n const updateLightDedicatedTo = (index, value) => {\r\n donationAmountList.value[index].lysposeDedicatedTo = value\r\n handleCallbackData()\r\n }\r\n\r\n const updatePersonalNote = (index, value) => {\r\n donationAmountList.value[index].personalNote = value\r\n handleCallbackData()\r\n }\r\n\r\n const updateDedicationType = (index, value) => {\r\n donationAmountList.value[index].lysposeDedicatedType = value\r\n handleCallbackData()\r\n }\r\n\r\n const setDedicationTypeAll = (value) => {\r\n donationAmountList.value.forEach((item) => {\r\n item.lysposeDedicatedType = value\r\n })\r\n dedicatedTypeAll.value = value\r\n handleCallbackData()\r\n }\r\n\r\n const setLightDedicatedToAll = (value) => {\r\n donationAmountList.value.forEach((item) => {\r\n item.lysposeDedicatedTo = value\r\n })\r\n lysposeDedicatedToAll.value = value\r\n handleCallbackData()\r\n }\r\n\r\n const setPersonalNoteAll = (value) => {\r\n donationAmountList.value.forEach((item) => {\r\n item.personalNote = value\r\n })\r\n lightPersonalNoteAll.value = value\r\n handleCallbackData()\r\n }\r\n\r\n return {\r\n isLysposerDedicated,\r\n addPersonalNote,\r\n donationAmountList,\r\n dedicationTypeOptions,\r\n dedicatedTypeAll,\r\n lysposeDedicatedToAll,\r\n lightPersonalNoteAll,\r\n setDedicationTypeAll,\r\n setLightDedicatedToAll,\r\n setPersonalNoteAll,\r\n toggleAddPersonalNote,\r\n toggleDedicatedLightBag,\r\n updateLightDedicatedTo,\r\n updatePersonalNote,\r\n updateDedicationType\r\n }\r\n }\r\n}\r\n","import { render } from \"./StafetLysPoserList.vue?vue&type=template&id=82e5cabe\"\nimport script from \"./StafetLysPoserList.vue?vue&type=script&lang=js\"\nexport * from \"./StafetLysPoserList.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"D:\\\\a\\\\1\\\\s\\\\frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import _stafetCommonStepsProps from 'foundation/js/configurations/_stafetCommonStepsProps'\r\nimport FormInputTextField from '../FormInputTextField/FormInputTextField.vue'\r\nimport FormInputTextarea from '../FormInputTextarea/FormInputTextarea.vue'\r\nimport FormInputDropdown from '../FormInputDropdown/FormInputDropdown.vue'\r\nimport FormCheckbox from '../FormCheckbox/FormCheckbox.vue'\r\nimport AdvancedRadio from '../AdvancedRadio/AdvancedRadio.vue'\r\nimport SupportSelector from '../SupportSelector/SupportSelector.vue'\r\nimport StafetActions from '../StafetActions/StafetActions.vue'\r\nimport StafetLysPoserList from '../StafetLysPoserList/StafetLysPoserList.vue'\r\nimport { computed, onBeforeMount, ref } from 'vue'\r\nimport getItemFromStorage from 'foundation/js/sessionStorageWrapper/getItemFromStorage'\r\nimport sessionStorageIdentifierEnum from 'foundation/js/sessionStorageWrapper/sessionStorageIdentifierEnum'\r\nimport { useStore } from 'vuex'\r\nimport getFieldValue from 'foundation/js/stafet/getFieldValue'\r\nimport isBoolean from 'foundation/js/inputValidators/isBoolean'\r\n\r\nexport default {\r\n name: 'StafetDeltagPaaHoldStepTwo',\r\n components: {\r\n FormInputTextField,\r\n FormInputTextarea,\r\n FormInputDropdown,\r\n FormCheckbox,\r\n SupportSelector,\r\n StafetActions,\r\n StafetLysPoserList,\r\n AdvancedRadio\r\n },\r\n props: {\r\n lysposeQuantityOption1: {\r\n type: Number,\r\n required: true,\r\n },\r\n lysposeQuantityOption2: {\r\n type: Number,\r\n required: true,\r\n },\r\n lysposeQuantityOption3: {\r\n type: Number,\r\n required: true,\r\n },\r\n ..._stafetCommonStepsProps\r\n },\r\n setup(props) {\r\n const store = useStore()\r\n const isCustomAmount = ref(false)\r\n const donationAmount = ref(0)\r\n const donationPerLightBag = ref(props.lysposeMinimumAmount)\r\n const isLysposerDedicated = ref(false)\r\n const addPersonalNote = ref(false)\r\n const donationAmountList = ref([])\r\n const lightBagMeta = ref({})\r\n const supportSelector = ref({})\r\n\r\n const editorControlledDonationAmountList = ref([\r\n {\r\n label: `${props.lysposeQuantityOption1} ${props.labels.taendEtLysUnitLabel}`,\r\n value: props.lysposeQuantityOption1\r\n },\r\n {\r\n label: `${props.lysposeQuantityOption2} ${props.labels.taendEtLysUnitLabel}`,\r\n value: props.lysposeQuantityOption2\r\n },\r\n {\r\n label: `${props.lysposeQuantityOption3} ${props.labels.taendEtLysUnitLabel}`,\r\n value: props.lysposeQuantityOption3\r\n }\r\n ])\r\n\r\n onBeforeMount(() => {\r\n const storedFields = getItemFromStorage(\r\n sessionStorageIdentifierEnum.STAFET_JOIN_A_TEAM\r\n )\r\n\r\n if (storedFields) {\r\n if (getFieldValue(storedFields, 'donationAmount')) {\r\n donationAmount.value = getFieldValue(\r\n storedFields,\r\n 'donationAmount'\r\n )\r\n const lysposeQuantityOptions = [\r\n props.lysposeQuantityOption1,\r\n props.lysposeQuantityOption2,\r\n props.lysposeQuantityOption3\r\n ]\r\n if (!lysposeQuantityOptions.includes(donationAmount.value)) {\r\n isCustomAmount.value = true\r\n }\r\n }\r\n\r\n if (getFieldValue(storedFields, 'donationPerLightBag')) {\r\n donationPerLightBag.value = getFieldValue(\r\n storedFields,\r\n 'donationPerLightBag'\r\n )\r\n }\r\n\r\n if (getFieldValue(storedFields, 'isLysposerDedicated')) {\r\n isLysposerDedicated.value = getFieldValue(\r\n storedFields,\r\n 'isLysposerDedicated'\r\n )\r\n }\r\n\r\n if (getFieldValue(storedFields, 'donationItems')) {\r\n donationAmountList.value = getFieldValue(\r\n storedFields,\r\n 'donationItems'\r\n )\r\n }\r\n\r\n if (getFieldValue(storedFields, 'addPersonalNote')) {\r\n addPersonalNote.value = getFieldValue(\r\n storedFields,\r\n 'addPersonalNote'\r\n )\r\n }\r\n\r\n if (getFieldValue(storedFields, 'donationFor')) {\r\n store.dispatch('donation/donationFor', {\r\n donationFor: getFieldValue(storedFields, 'donationFor')\r\n })\r\n }\r\n\r\n if (getFieldValue(storedFields, 'donationTeam')) {\r\n store.dispatch('donation/donationTeam', {\r\n team: getFieldValue(\r\n storedFields,\r\n 'donationTeam'\r\n ).toString()\r\n })\r\n }\r\n\r\n if (getFieldValue(storedFields, 'donationParticipant')) {\r\n store.dispatch('donation/donationParticipant', {\r\n participant: getFieldValue(\r\n storedFields,\r\n 'donationParticipant'\r\n )\r\n })\r\n }\r\n }\r\n })\r\n\r\n const StafetFlowLightBagsMetaListLabels = {\r\n isLysposeDedicatedCheckboxLabel:\r\n props.labels.taendEtLysCustomizeLysposeBoolDedicatedLabel,\r\n personalNoteCheckboxLabel:\r\n props.labels.taendEtLysCustomizeLysposeBoolOwnNoteLabel,\r\n personalizeLightBagsTitle: props.labels.taendEtLysLysposeTitle,\r\n lightDedicatedToTextLabel:\r\n props.labels.taendEtLysLysposeDedicatedToLabel,\r\n lightDedicatedToErrorMessage:\r\n props.labels.taendEtLysLysposeDedicatedToErrorMessage,\r\n lightDedicatedToHelpTextLabel:\r\n props.labels.taendEtLysLysposeDedicatedToSubtext,\r\n personalNoteTextLabel:\r\n props.labels.taendEtLysLysposePersonalNoteLabel,\r\n personalNoteHelpTextLabel:\r\n props.labels.taendEtLysLysposePersonalNoteSubtext,\r\n personalNoteErrorMessage:\r\n props.labels.taendEtLysLysposePersonalNoteErrorMessage,\r\n dedicationTypeTextLabel:\r\n props.labels.taendEtLysLysposeDedicatedTypeLabel,\r\n dedicationTypePlaceholder:\r\n props.labels.taendEtLysLysposeDedicatedTypePlaceholder,\r\n dedicationTypeErrorMessage:\r\n props.labels.taendEtLysLysposeDedicatedTypeErrorMessage,\r\n inMemoryOf: props.labels.taendEtLysLysposeDedicatedTypeInMemoryOf,\r\n inSupportOf: props.labels.taendEtLysLysposeDedicatedTypeInSupportOf\r\n }\r\n\r\n const stepModel = computed(() => {\r\n const array = [\r\n {\r\n name: 'donationAmount',\r\n value: parseInt(donationAmount.value),\r\n isValid: false,\r\n validator: (value) => {\r\n return value > 0\r\n }\r\n },\r\n {\r\n name: 'donationPerLightBag',\r\n value: parseInt(donationPerLightBag.value),\r\n isValid: false,\r\n validator: (value) => {\r\n return donationAmount.value > 0 ? value >= 50 : true\r\n }\r\n },\r\n {\r\n name: 'donationFor',\r\n value: supportSelector.value.donationFor,\r\n isValid: supportSelector.value.isValid,\r\n validator: () => {\r\n return supportSelector.value.isValid\r\n }\r\n },\r\n {\r\n name: 'donationTeam',\r\n value: supportSelector.value.donationTeam,\r\n isValid: supportSelector.value.isValid,\r\n validator: () => {\r\n return supportSelector.value.isValid\r\n }\r\n },\r\n {\r\n name: 'donationParticipant',\r\n value: supportSelector.value.donationParticipant,\r\n isValid: supportSelector.value.isValid,\r\n validator: () => {\r\n return supportSelector.value.isValid\r\n }\r\n },\r\n {\r\n name: 'donationItems',\r\n value: lightBagMeta.value.donationItems,\r\n isValid: lightBagMeta.value.isValid,\r\n validator: () => {\r\n return lightBagMeta.value.isValid\r\n }\r\n },\r\n {\r\n name: 'isLysposerDedicated',\r\n value: lightBagMeta.value.isLysposerDedicated,\r\n isValid: true,\r\n validator: () => isBoolean\r\n },\r\n {\r\n name: 'addPersonalNote',\r\n value: lightBagMeta.value.addPersonalNote,\r\n isValid: true,\r\n validator: () => isBoolean\r\n }\r\n ]\r\n\r\n if (donationAmount.value > 0) {\r\n array.push({\r\n name: 'donationItems',\r\n value: lightBagMeta.value.donationItems,\r\n isValid: lightBagMeta.value.isValid,\r\n validator: () => {\r\n return lightBagMeta.value.isValid\r\n }\r\n })\r\n }\r\n\r\n return array\r\n })\r\n\r\n const chooseCustomAmount = () => {\r\n isCustomAmount.value = !isCustomAmount.value\r\n }\r\n\r\n const setDonationAmount = (e) => {\r\n const intValue = parseInt(e.target.value)\r\n donationAmount.value = intValue > 0 ? intValue : 0\r\n }\r\n\r\n const updateLightBagMeta = (data) => {\r\n lightBagMeta.value = data\r\n }\r\n\r\n const updateSupportSelector = (data) => {\r\n supportSelector.value = data\r\n }\r\n\r\n const setDonationPerLightBag = (value) => {\r\n donationPerLightBag.value = value\r\n }\r\n\r\n const showDonationAmoutErrorMessage = computed(() => {\r\n return props.displayInputError && donationAmount.value === 0\r\n })\r\n\r\n const showDonationPerLightBagErrorMessage = computed(() => {\r\n return (\r\n props.displayInputError &&\r\n donationPerLightBag.value < props.lysposeMinimumAmount\r\n )\r\n })\r\n\r\n return {\r\n isCustomAmount,\r\n editorControlledDonationAmountList,\r\n donationAmountList,\r\n donationAmount,\r\n donationPerLightBag,\r\n isLysposerDedicated,\r\n addPersonalNote,\r\n StafetFlowLightBagsMetaListLabels,\r\n stepModel,\r\n chooseCustomAmount,\r\n setDonationAmount,\r\n updateLightBagMeta,\r\n updateSupportSelector,\r\n setDonationPerLightBag,\r\n showDonationAmoutErrorMessage,\r\n showDonationPerLightBagErrorMessage\r\n }\r\n }\r\n}\r\n","import { render } from \"./StafetDeltagPaaHoldStepTwo.vue?vue&type=template&id=40d1821d\"\nimport script from \"./StafetDeltagPaaHoldStepTwo.vue?vue&type=script&lang=js\"\nexport * from \"./StafetDeltagPaaHoldStepTwo.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"D:\\\\a\\\\1\\\\s\\\\frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\r\n\r\n\r\n \r\n \r\n {{ labels.registerDeltagereTitle }}\r\n
\r\n\r\n \r\n\r\n nextStepCallback(stepModel)\"\r\n :nextStepLabel=\"labels.formNavigationNextStep3\"\r\n :previousStepCallback=\"previousStepCallback\"\r\n :previousStepLabel=\"labels.formNavigationPrevStep\"\r\n />\r\n \r\n\r\n","import { computed, onBeforeMount, ref } from 'vue'\r\nimport _stafetCommonStepsProps from 'foundation/js/configurations/_stafetCommonStepsProps'\r\nimport FormInputDropdown from '../FormInputDropdown/FormInputDropdown.vue'\r\nimport FormCheckbox from '../FormCheckbox/FormCheckbox.vue'\r\nimport FormInputTextField from '../FormInputTextField/FormInputTextField.vue'\r\nimport StafetActions from '../StafetActions/StafetActions.vue'\r\nimport StafetAddDeltager from '../StafetAddDeltager/StafetAddDeltager.vue'\r\nimport getItemFromStorage from 'foundation/js/sessionStorageWrapper/getItemFromStorage'\r\nimport sessionStorageIdentifierEnum from 'foundation/js/sessionStorageWrapper/sessionStorageIdentifierEnum'\r\nimport getFieldValue from 'foundation/js/stafet/getFieldValue'\r\n\r\nexport default {\r\n name: 'StafetDeltagPaaHoldStepThree',\r\n components: {\r\n FormInputTextField,\r\n FormInputDropdown,\r\n FormCheckbox,\r\n StafetActions,\r\n StafetAddDeltager\r\n },\r\n props: _stafetCommonStepsProps,\r\n setup() {\r\n const addMoreParticipants = ref(false)\r\n const participants = ref({})\r\n\r\n onBeforeMount(() => {\r\n const storedFields = getItemFromStorage(\r\n sessionStorageIdentifierEnum.STAFET_JOIN_A_TEAM\r\n )\r\n\r\n if (storedFields) {\r\n let adultParticipants = []\r\n let childParticipants = []\r\n\r\n if (getFieldValue(storedFields, 'deltagere')) {\r\n adultParticipants = getFieldValue(storedFields, 'deltagere')\r\n }\r\n\r\n if (getFieldValue(storedFields, 'childDeltagere')) {\r\n childParticipants = getFieldValue(\r\n storedFields,\r\n 'childDeltagere'\r\n )\r\n }\r\n\r\n participants.value.adults = adultParticipants\r\n participants.value.children = childParticipants\r\n\r\n const totalLength =\r\n adultParticipants.length + childParticipants.length\r\n addMoreParticipants.value = totalLength > 0\r\n }\r\n })\r\n\r\n const toggleAddMoreParticipants = (value) => {\r\n addMoreParticipants.value = value\r\n }\r\n\r\n const stepModel = computed(() => {\r\n let result = []\r\n\r\n if (addMoreParticipants.value) {\r\n result.push({\r\n name: 'deltagere',\r\n value: participants.value.adults,\r\n isValid: participants.value.isValid,\r\n validator: () => participants.value.isValid\r\n })\r\n result.push({\r\n name: 'childDeltagere',\r\n value: participants.value.children,\r\n isValid: participants.value.isValid,\r\n validator: () => participants.value.isValid\r\n })\r\n }\r\n\r\n return result\r\n })\r\n\r\n const updateAddParticipants = (data) => {\r\n participants.value = data\r\n }\r\n\r\n return {\r\n addMoreParticipants,\r\n participants,\r\n toggleAddMoreParticipants,\r\n updateAddParticipants,\r\n stepModel\r\n }\r\n }\r\n}\r\n","import { render } from \"./StafetDeltagPaaHoldStepThree.vue?vue&type=template&id=5f955274\"\nimport script from \"./StafetDeltagPaaHoldStepThree.vue?vue&type=script&lang=js\"\nexport * from \"./StafetDeltagPaaHoldStepThree.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"D:\\\\a\\\\1\\\\s\\\\frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\r\n\r\n\r\n \r\n \r\n {{ labels.yourInformationTitle }}\r\n
\r\n\r\n \r\n \r\n setConsent(e.target.checked)\"\r\n />\r\n \r\n validateField('newsletter', e.target.checked)\"\r\n />\r\n\r\n validateField('fighterNewsletter', e.target.checked)\"\r\n />\r\n
\r\n\r\n {{\r\n editProfileLinkText\r\n }}\r\n\r\n \r\n\r\n nextStepCallback(stepModel)\"\r\n :nextStepLabel=\"labels.formNavigationNextStep4\"\r\n :previousStepCallback=\"previousStepCallback\"\r\n :previousStepLabel=\"labels.formNavigationPrevStep\"\r\n />\r\n \r\n\r\n","import emailValidator from 'foundation/js/inputValidators/emailValidator'\r\nimport isBoolean from 'foundation/js/inputValidators/isBoolean'\r\nimport nameValidator from 'foundation/js/inputValidators/nameValidator'\r\nimport phoneValidator from 'foundation/js/inputValidators/phoneValidator'\r\n\r\nexport default [\r\n {\r\n name: 'firstTimeFighter',\r\n value: false,\r\n isValid: false,\r\n validator: isBoolean\r\n },\r\n {\r\n name: 'firstName',\r\n value: '',\r\n isValid: false,\r\n validator: nameValidator\r\n },\r\n {\r\n name: 'lastName',\r\n value: '',\r\n isValid: false,\r\n validator: nameValidator\r\n },\r\n {\r\n name: 'email',\r\n value: '',\r\n isValid: false,\r\n validator: emailValidator\r\n },\r\n {\r\n name: 'phone',\r\n value: '',\r\n isValid: false,\r\n validator: (value) => value === '' || phoneValidator(value)\r\n },\r\n {\r\n name: 'consent',\r\n value: false,\r\n isValid: false,\r\n validator: (value) => value === true\r\n },\r\n {\r\n name: 'newsletter',\r\n value: false,\r\n isValid: false,\r\n validator: isBoolean\r\n },\r\n {\r\n name: 'fighterNewsletter',\r\n value: false,\r\n isValid: false,\r\n validator: isBoolean\r\n }\r\n]\r\n","import _stafetCommonStepsProps from 'foundation/js/configurations/_stafetCommonStepsProps'\r\nimport FormInputTextField from '../FormInputTextField/FormInputTextField.vue'\r\nimport FormCheckbox from '../FormCheckbox/FormCheckbox.vue'\r\nimport StafetActions from '../StafetActions/StafetActions.vue'\r\nimport StafetPayment from '../StafetPayment/StafetPayment.vue'\r\nimport { onBeforeMount, ref, computed } from 'vue'\r\nimport fieldsConfig from './config/fieldsConfig'\r\nimport fieldValidator from 'foundation/js/stafet/fieldValidator'\r\nimport sessionStorageIdentifierEnum from 'foundation/js/sessionStorageWrapper/sessionStorageIdentifierEnum'\r\nimport getItemFromStorage from 'foundation/js/sessionStorageWrapper/getItemFromStorage'\r\nimport { useStore } from 'vuex'\r\nimport getFieldValue from 'foundation/js/stafet/getFieldValue'\r\n\r\nexport default {\r\n name: 'StafetDeltagPaaHoldStepFour',\r\n components: {\r\n FormInputTextField,\r\n FormCheckbox,\r\n StafetActions,\r\n StafetPayment\r\n },\r\n props: _stafetCommonStepsProps,\r\n setup(props) {\r\n const store = useStore()\r\n const firstTimeFighter = ref(false)\r\n const firstName = ref('')\r\n const lastName = ref('')\r\n const email = ref('')\r\n const phone = ref('')\r\n const consent = ref(false)\r\n const newsletter = ref(false)\r\n const fighterNewsletter = ref(false)\r\n const readOnly = ref({\r\n firstName: false,\r\n lastName: false,\r\n email: false,\r\n phone: false\r\n })\r\n\r\n const disableValidation = (fieldName) => {\r\n const field = fieldsConfig.find(field => field.name === fieldName)\r\n field.validator = _ => true\r\n }\r\n\r\n const basket = computed(() => {\r\n return store.state.stafet.basket\r\n })\r\n\r\n const basketTotalPrice = computed(() => {\r\n return store.state.stafet.basketTotalPrice\r\n })\r\n\r\n const isFighter = computed(() => {\r\n const userInputs = store.state.stafet.userInputs\r\n return userInputs.find((input) => input.name === 'isFighter')?.value\r\n })\r\n\r\n onBeforeMount(() => {\r\n \r\n if (props.userData) {\r\n \r\n if (props.userData.firstName) {\r\n firstName.value = props.userData.firstName\r\n readOnly.value.firstName = true\r\n disableValidation('firstName')\r\n }\r\n \r\n if (props.userData.lastName) {\r\n lastName.value = props.userData.lastName\r\n readOnly.value.lastName = true\r\n disableValidation('lastName')\r\n }\r\n \r\n if (props.userData.email) {\r\n email.value = props.userData.email\r\n readOnly.value.email = true\r\n disableValidation('email')\r\n }\r\n \r\n if (props.userData.phoneNumber) {\r\n phone.value = props.userData.phoneNumber\r\n readOnly.value.phone = true\r\n disableValidation('phone')\r\n }\r\n }\r\n \r\n const storedFields = getItemFromStorage(\r\n sessionStorageIdentifierEnum.STAFET_JOIN_A_TEAM\r\n )\r\n\r\n if (storedFields) {\r\n updateLocalRefs([\r\n {\r\n name: 'firstTimeFighter',\r\n value: \r\n getFieldValue(storedFields, 'firstTimeFighter') ??\r\n firstTimeFighter.value\r\n },\r\n {\r\n name: 'firstName',\r\n value:\r\n getFieldValue(storedFields, 'firstName') ??\r\n firstName.value\r\n },\r\n {\r\n name: 'lastName',\r\n value:\r\n getFieldValue(storedFields, 'lastName') ??\r\n lastName.value\r\n },\r\n {\r\n name: 'email',\r\n value:\r\n getFieldValue(storedFields, 'email') ?? email.value\r\n },\r\n {\r\n name: 'phone',\r\n value:\r\n getFieldValue(storedFields, 'phone') ?? phone.value\r\n },\r\n {\r\n name: 'consent',\r\n value:\r\n getFieldValue(storedFields, 'consent') ??\r\n consent.value\r\n },\r\n {\r\n name: 'newsletter',\r\n value:\r\n getFieldValue(storedFields, 'newsletter') ??\r\n newsletter.value\r\n },\r\n {\r\n name: 'fighterNewsletter',\r\n value:\r\n getFieldValue(storedFields, 'fighterNewsletter') ??\r\n fighterNewsletter.value\r\n }\r\n ])\r\n }\r\n })\r\n\r\n const updateLocalRefs = (fields) => {\r\n fields.forEach((field) => {\r\n if (field.value === undefined || field.value === null) return\r\n fieldsConfig.find((item) => item.name === field.name).value = field.value\r\n switch (field.name) {\r\n case 'firstTimeFighter':\r\n firstTimeFighter.value = field.value\r\n return\r\n case 'firstName':\r\n firstName.value = field.value\r\n return\r\n case 'lastName':\r\n lastName.value = field.value\r\n return\r\n case 'email':\r\n email.value = field.value\r\n return\r\n case 'phone':\r\n phone.value = field.value\r\n return\r\n case 'consent':\r\n consent.value = field.value\r\n return\r\n case 'newsletter':\r\n newsletter.value = field.value\r\n return\r\n case 'fighterNewsletter':\r\n fighterNewsletter.value = field.value\r\n return\r\n default:\r\n return\r\n }\r\n })\r\n }\r\n\r\n const validateField = (fieldName, value) => {\r\n fieldsConfig.find((item) => item.name === fieldName).value = value\r\n const field = fieldsConfig.find((field) => field.name === fieldName)\r\n if (field) {\r\n field.value = value\r\n fieldValidator(field)\r\n }\r\n }\r\n\r\n const setFirstTimeFighter = (value) => {\r\n firstTimeFighter.value = value\r\n validateField('firstTimeFighter', value)\r\n }\r\n\r\n const setConsent = (value) => {\r\n consent.value = value\r\n validateField('consent', value)\r\n }\r\n\r\n const showFirstNameErrorMessage = computed(() => showError('firstName', firstName.value))\r\n const showLastNameErrorMessage = computed(() => showError('lastName', lastName.value))\r\n const showEmailErrorMessage = computed(() => showError('email', email.value))\r\n const showPhoneErrorMessage = computed(() => showError('phone', phone.value))\r\n const showError = (fieldName, value) => {\r\n const field = fieldsConfig.find(field => field.name === fieldName)\r\n return !field.validator(value) && props.displayInputError\r\n }\r\n\r\n const showConsentErrorMessage = computed(() => {\r\n return consent.value === false && props.displayInputError\r\n })\r\n\r\n const stepModel = computed(() => {\r\n return fieldsConfig\r\n })\r\n\r\n return {\r\n firstTimeFighter,\r\n firstName,\r\n lastName,\r\n email,\r\n phone,\r\n consent,\r\n newsletter,\r\n fighterNewsletter,\r\n readOnly,\r\n stepModel,\r\n basket,\r\n isFighter,\r\n basketTotalPrice,\r\n validateField,\r\n setFirstTimeFighter,\r\n setConsent,\r\n showFirstNameErrorMessage,\r\n showLastNameErrorMessage,\r\n showPhoneErrorMessage,\r\n showEmailErrorMessage,\r\n showConsentErrorMessage\r\n }\r\n }\r\n}\r\n","import { render } from \"./StafetDeltagPaaHoldStepFour.vue?vue&type=template&id=3e378cb1\"\nimport script from \"./StafetDeltagPaaHoldStepFour.vue?vue&type=script&lang=js\"\nexport * from \"./StafetDeltagPaaHoldStepFour.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"D:\\\\a\\\\1\\\\s\\\\frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","export default function (steps, currentStep, labels) {\r\n const array = []\r\n steps.forEach((step) => {\r\n if (!step.hidden) {\r\n array.push({\r\n title: labels[step.label],\r\n number: step.step,\r\n active: step.step === currentStep\r\n })\r\n }\r\n })\r\n return array\r\n}\r\n","import { computed } from 'vue'\r\n\r\n// store is alredy selected a specific state, so we can use it directly\r\nexport default function (store) {\r\n const userInputs = computed(() => {\r\n return store.userInputs\r\n })\r\n\r\n const steps = computed(() => {\r\n return store.steps\r\n })\r\n\r\n const currentStep = computed(() => {\r\n return store.currentStep\r\n })\r\n\r\n const finalStepName = steps.value.toReversed().name\r\n\r\n const allStepsComplete = computed(() => {\r\n return !!(\r\n steps.value.filter((stepData) => !stepData.completed).length === 0\r\n )\r\n })\r\n\r\n const currentStepName = computed(() => {\r\n return allStepsComplete.value\r\n ? finalStepName\r\n : steps.value.find((stepData) => !stepData.completed).name\r\n })\r\n\r\n return {\r\n userInputs,\r\n steps,\r\n currentStep,\r\n currentStepName\r\n }\r\n}\r\n","export default [\r\n {\r\n step: 1,\r\n name: 'StafetDeltagPaaHoldStepOne',\r\n completed: false,\r\n label: 'formStepLabel1',\r\n hidden: false\r\n },\r\n {\r\n step: 2,\r\n name: 'StafetDeltagPaaHoldStepTwo',\r\n completed: false,\r\n label: 'formStepLabel2',\r\n hidden: false\r\n },\r\n {\r\n step: 3,\r\n name: 'StafetDeltagPaaHoldStepThree',\r\n completed: false,\r\n label: 'formStepLabel3',\r\n hidden: false\r\n },\r\n {\r\n step: 4,\r\n name: 'StafetDeltagPaaHoldStepFour',\r\n completed: false,\r\n label: 'formStepLabel4',\r\n hidden: false\r\n },\r\n {\r\n step: 5,\r\n name: 'FormStepSubmitting',\r\n completed: false,\r\n label: '',\r\n hidden: true\r\n }\r\n]\r\n","import { computed, ref, onMounted } from 'vue'\r\nimport StafetHeader from '../StafetHeader/StafetHeader.vue'\r\nimport StafetDeltagPaaHoldStepOne from '../StafetDeltagPaaHoldStepOne/StafetDeltagPaaHoldStepOne.vue'\r\nimport StafetDeltagPaaHoldStepTwo from '../StafetDeltagPaaHoldStepTwo/StafetDeltagPaaHoldStepTwo.vue'\r\nimport StafetDeltagPaaHoldStepThree from '../StafetDeltagPaaHoldStepThree/StafetDeltagPaaHoldStepThree.vue'\r\nimport StafetDeltagPaaHoldStepFour from '../StafetDeltagPaaHoldStepFour/StafetDeltagPaaHoldStepFour.vue'\r\nimport FormStepSubmitting from '../FormStepSubmitting/FormStepSubmitting.vue'\r\nimport { useStore } from 'vuex'\r\nimport mapStafetHeaderSteps from 'foundation/js/stafet/mapStafetHeaderSteps'\r\nimport sessionStorageIdentifierEnum from 'foundation/js/sessionStorageWrapper/sessionStorageIdentifierEnum'\r\nimport clearItemFromStorage from 'foundation/js/sessionStorageWrapper/clearItemFromStorage'\r\nimport getCommonComputedFields from 'foundation/js/stafet/getCommonComputedFields'\r\nimport stepsConfig from './config/stepsConfig'\r\nimport fieldValidator from 'foundation/js/stafet/fieldValidator'\r\nimport updateItemFromStorage from 'foundation/js/sessionStorageWrapper/updateItemFromStorage'\r\nimport updateBasket from './methods/updateBasket'\r\nimport { scrollToFirstError } from '../../foundation/js/inputValidators/scrollToFirstError'\r\n\r\nexport default {\r\n name: 'StafetDeltagPaaHoldFlow',\r\n components: {\r\n StafetHeader,\r\n StafetDeltagPaaHoldStepOne,\r\n StafetDeltagPaaHoldStepTwo,\r\n StafetDeltagPaaHoldStepThree,\r\n StafetDeltagPaaHoldStepFour,\r\n FormStepSubmitting\r\n },\r\n props: {\r\n stafetId: {\r\n type: String,\r\n required: true\r\n },\r\n holdId: {\r\n type: String,\r\n required: false\r\n },\r\n tshirtSizes: {\r\n type: Array,\r\n required: true,\r\n default: []\r\n },\r\n holdList: {\r\n type: Array,\r\n required: true,\r\n default: []\r\n },\r\n donationAmounts: {\r\n type: Array,\r\n required: true,\r\n default: []\r\n },\r\n redirectToEditProfile: {\r\n type: String,\r\n required: false,\r\n default: ''\r\n },\r\n editProfileLinkText: {\r\n type: String,\r\n required: false,\r\n default: ''\r\n },\r\n lysposeMinimumAmount: {\r\n type: Number,\r\n required: false,\r\n default: 50\r\n },\r\n userData: {\r\n type: Object,\r\n required: false,\r\n default: {}\r\n },\r\n adultPrice: {\r\n type: Number,\r\n required: true\r\n },\r\n childPrice: {\r\n type: Number,\r\n required: true\r\n },\r\n lysposeQuantityOption1: {\r\n type: Number,\r\n required: true,\r\n },\r\n lysposeQuantityOption2: {\r\n type: Number,\r\n required: true,\r\n },\r\n lysposeQuantityOption3: {\r\n type: Number,\r\n required: true,\r\n },\r\n loggedIn: {\r\n type: Boolean,\r\n required: true,\r\n },\r\n },\r\n setup(props) {\r\n const store = useStore()\r\n const displayInputError = ref(false)\r\n\r\n const labels = computed(() => {\r\n return store.state.labels.collections['SFLJoinHoldLabels']\r\n })\r\n\r\n const headerSteps = computed(() => {\r\n return mapStafetHeaderSteps(\r\n steps.value,\r\n currentStep.value,\r\n labels.value\r\n )\r\n })\r\n\r\n\r\n const isSubmitting = computed(() => {\r\n return store.state.stafet.isSubmitting\r\n })\r\n\r\n const { userInputs, steps, currentStep, currentStepName } =\r\n getCommonComputedFields(store.state.stafet)\r\n\r\n onMounted(() => {\r\n store.dispatch('stafet/stafetId', { stafetId: props.stafetId })\r\n store.dispatch('stafet/steps', {\r\n steps: stepsConfig\r\n })\r\n })\r\n\r\n const handleStepCompleted = () => {\r\n steps.value.find(\r\n (item) => item.step === currentStep.value\r\n ).completed = true\r\n\r\n store.dispatch('stafet/steps', {\r\n steps: steps.value\r\n })\r\n\r\n const unCompletedSteps = steps.value.filter(\r\n (item) => !item.completed\r\n )\r\n\r\n if (unCompletedSteps.length > 0) {\r\n store.dispatch('stafet/currentStep', {\r\n step: unCompletedSteps[0].step\r\n })\r\n }\r\n }\r\n\r\n const nextStepCallback = (fields) => {\r\n fields.forEach((field) => {\r\n if (field.dependentField) {\r\n const dependentField = fields.find(\r\n (item) => item.name === field.dependentField\r\n )\r\n\r\n if (dependentField) {\r\n field.dependentFieldValue = dependentField.value\r\n }\r\n }\r\n fieldValidator(field)\r\n })\r\n\r\n const isStepValid = fields.every((field) => field.isValid)\r\n if (isStepValid) {\r\n displayInputError.value = false\r\n handleStepCompleted()\r\n store.dispatch('stafet/userInputs', { inputs: fields })\r\n updateItemFromStorage(\r\n sessionStorageIdentifierEnum.STAFET_JOIN_A_TEAM,\r\n fields\r\n )\r\n updateBasket(\r\n userInputs.value,\r\n labels.value,\r\n store,\r\n props.adultPrice,\r\n props.childPrice\r\n )\r\n\r\n scrollTo(0, 0)\r\n } else {\r\n displayInputError.value = true\r\n scrollToFirstError()\r\n }\r\n }\r\n\r\n const skipStepCallback = () => {\r\n handleStepCompleted()\r\n }\r\n\r\n const previousStepCallback = () => {\r\n if (currentStep.value > 1) {\r\n store.dispatch('stafet/currentStep', {\r\n step: currentStep.value - 1\r\n })\r\n\r\n steps.value.find(\r\n (item) => item.step === currentStep.value\r\n ).completed = false\r\n\r\n store.dispatch('stafet/steps', {\r\n steps: steps.value\r\n })\r\n\r\n scrollTo(0, 0)\r\n }\r\n }\r\n\r\n const submitCallback = async () => {\r\n // it expects a object with ok: true or false\r\n await store.dispatch('stafet/joinATeamSubmit')\r\n return 'submitted'\r\n }\r\n\r\n return {\r\n headerSteps,\r\n labels,\r\n currentStepName,\r\n displayInputError,\r\n isSubmitting,\r\n nextStepCallback,\r\n previousStepCallback,\r\n submitCallback,\r\n skipStepCallback\r\n }\r\n }\r\n}\r\n","export default function (userInputs, labels, store, adultPrice, childPrice) {\r\n\r\n const basket = []\r\n const isFighter = userInputs.find((item) => item.name === 'isFighter')\r\n const donationAmount = userInputs.find(\r\n (item) => item.name === 'donationAmount'\r\n )\r\n const donationPerLightBag = userInputs.find(\r\n (item) => item.name === 'donationPerLightBag'\r\n )\r\n const deltagere = userInputs.find((item) => item.name === 'deltagere')\r\n const childDeltagere = userInputs.find(\r\n (item) => item.name === 'childDeltagere'\r\n )\r\n\r\n const isChild = userInputs.find((item) => item.name === 'isChild')\r\n\r\n basket.push({\r\n label: labels.yourInformationTotalYourDeltagergebyrLabel,\r\n amount: '',\r\n price: `${isChild.value ? childPrice : adultPrice} kr.`,\r\n intPrice: isChild.value ? childPrice : adultPrice\r\n })\r\n\r\n if (isFighter && isFighter.value) {\r\n basket.push({\r\n label: labels.yourInformationTotalFighterLabel,\r\n amount: '',\r\n price: '0 kr.',\r\n intPrice: 0\r\n })\r\n }\r\n\r\n if (\r\n donationAmount &&\r\n donationAmount.value &&\r\n donationPerLightBag &&\r\n donationPerLightBag.value\r\n ) {\r\n basket.push({\r\n label: labels.yourInformationTotalTaendteLysLabel,\r\n amount: `${donationAmount.value} ${labels.taendEtLysUnitLabel} (á ${donationPerLightBag.value} kr.)`,\r\n price: `${donationAmount.value * donationPerLightBag.value} kr.`,\r\n intPrice: donationAmount.value * donationPerLightBag.value\r\n })\r\n }\r\n\r\n if (deltagere && deltagere.value.length > 0) {\r\n basket.push({\r\n label: labels.yourInformationTotalNewAdultDeltagereLabel,\r\n amount: `${deltagere.value.length} ${labels.yourInformationTotalDeltagereLabel} (á ${adultPrice} kr.)`,\r\n price: `${deltagere.value.length * adultPrice} kr.`,\r\n intPrice: deltagere.value.length * adultPrice\r\n })\r\n }\r\n\r\n if (childDeltagere && childDeltagere.value.length > 0) {\r\n basket.push({\r\n label: labels.yourInformationTotalNewChildDeltagereLabel,\r\n amount: `${childDeltagere.value.length} ${labels.yourInformationTotalDeltagereLabel} (á ${childPrice} kr.)`,\r\n price: `${childDeltagere.value.length * childPrice} kr.`,\r\n intPrice: childDeltagere.value.length * childPrice\r\n })\r\n }\r\n\r\n store.dispatch('stafet/basket', { basket: basket })\r\n}\r\n","import { render } from \"./StafetDeltagPaaHoldFlow.vue?vue&type=template&id=9ccc76d2\"\nimport script from \"./StafetDeltagPaaHoldFlow.vue?vue&type=script&lang=js\"\nexport * from \"./StafetDeltagPaaHoldFlow.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"D:\\\\a\\\\1\\\\s\\\\frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\r\n\r\n\r\n \r\n \r\n\r\n \r\n \r\n
\r\n \r\n\r\n","\r\n\r\n\r\n \r\n \r\n {{ labels.yourInformationTitle }}\r\n
\r\n\r\n \r\n\r\n {{\r\n editProfileLinkText\r\n }}\r\n\r\n nextStepCallback(stepModel)\"\r\n :nextStepLabel=\"labels.formNavigationNextStep1\"\r\n />\r\n \r\n\r\n","import emailValidator from 'foundation/js/inputValidators/emailValidator'\r\nimport isBoolean from 'foundation/js/inputValidators/isBoolean'\r\nimport nameValidator from 'foundation/js/inputValidators/nameValidator'\r\nimport phoneValidator from 'foundation/js/inputValidators/phoneValidator'\r\n\r\nexport default [\r\n {\r\n name: 'firstTimeFighter',\r\n value: false,\r\n isValid: false,\r\n validator: isBoolean\r\n },\r\n {\r\n name: 'firstName',\r\n value: '',\r\n isValid: false,\r\n validator: nameValidator\r\n },\r\n {\r\n name: 'lastName',\r\n value: '',\r\n isValid: false,\r\n validator: nameValidator\r\n },\r\n {\r\n name: 'email',\r\n value: '',\r\n isValid: false,\r\n validator: emailValidator\r\n },\r\n {\r\n name: 'phone',\r\n value: '',\r\n isValid: false,\r\n validator: (value) => value === '' || phoneValidator(value)\r\n },\r\n {\r\n name: 'consent',\r\n value: false,\r\n isValid: false,\r\n validator: (value) => value === true\r\n },\r\n {\r\n name: 'fighterNewsletter',\r\n value: false,\r\n isValid: false,\r\n validator: isBoolean\r\n }\r\n]\r\n","import _stafetCommonStepsProps from 'foundation/js/configurations/_stafetCommonStepsProps'\r\nimport StafetActions from '../StafetActions/StafetActions.vue'\r\nimport FormInputTextField from '../FormInputTextField/FormInputTextField.vue'\r\nimport FormCheckbox from '../FormCheckbox/FormCheckbox.vue'\r\nimport { ref, computed, onBeforeMount } from 'vue'\r\nimport sessionStorageIdentifierEnum from 'foundation/js/sessionStorageWrapper/sessionStorageIdentifierEnum'\r\nimport getItemFromStorage from 'foundation/js/sessionStorageWrapper/getItemFromStorage'\r\nimport fieldValidator from 'foundation/js/stafet/fieldValidator'\r\nimport nameValidator from 'foundation/js/inputValidators/nameValidator'\r\nimport emailValidator from 'foundation/js/inputValidators/emailValidator'\r\nimport fieldsConfig from './config/fieldsConfig'\r\nimport getFieldValue from 'foundation/js/stafet/getFieldValue'\r\n\r\nexport default {\r\n name: 'StafetDeltagSomFighterStepOne',\r\n components: {\r\n StafetActions,\r\n FormInputTextField,\r\n FormCheckbox\r\n },\r\n props: _stafetCommonStepsProps,\r\n setup(props) {\r\n const firstTimeFighter = ref(false)\r\n const firstName = ref('')\r\n const lastName = ref('')\r\n const email = ref('')\r\n const phone = ref('')\r\n const consent = ref(false)\r\n const fighterNewsletter = ref(false)\r\n const readOnly = ref({\r\n firstName: false,\r\n lastName: false,\r\n email: false,\r\n phone: false\r\n })\r\n\r\n const disableValidation = (fieldName) => {\r\n const field = fieldsConfig.find(field => field.name === fieldName)\r\n field.validator = _ => true\r\n }\r\n\r\n onBeforeMount(() => {\r\n\r\n if (props.userData) {\r\n \r\n if (props.userData.firstName) {\r\n firstName.value = props.userData.firstName\r\n readOnly.value.firstName = true\r\n disableValidation('firstName')\r\n }\r\n \r\n if (props.userData.lastName) {\r\n lastName.value = props.userData.lastName\r\n readOnly.value.lastName = true\r\n disableValidation('lastName')\r\n }\r\n \r\n if (props.userData.email) {\r\n email.value = props.userData.email\r\n readOnly.value.email = true\r\n disableValidation('email')\r\n }\r\n \r\n if (props.userData.phoneNumber) {\r\n phone.value = props.userData.phoneNumber\r\n readOnly.value.phone = true\r\n disableValidation('phone')\r\n }\r\n }\r\n \r\n const storedFields = getItemFromStorage(\r\n sessionStorageIdentifierEnum.STAFET_JOIN_AS_FIGHTER\r\n )\r\n\r\n if (storedFields) {\r\n updateLocalRefs([\r\n {\r\n name: 'firstTimeFighter',\r\n value: getFieldValue(storedFields, 'firstTimeFighter')\r\n },\r\n {\r\n name: 'firstName',\r\n value: getFieldValue(storedFields, 'firstName')\r\n },\r\n {\r\n name: 'lastName',\r\n value: getFieldValue(storedFields, 'lastName')\r\n },\r\n {\r\n name: 'email',\r\n value: getFieldValue(storedFields, 'email')\r\n },\r\n {\r\n name: 'phone',\r\n value: getFieldValue(storedFields, 'phone')\r\n },\r\n {\r\n name: 'consent',\r\n value: getFieldValue(storedFields, 'consent')\r\n },\r\n {\r\n name: 'fighterNewsletter',\r\n value: getFieldValue(storedFields, 'fighterNewsletter')\r\n }\r\n ])\r\n } else {\r\n updateLocalRefs([\r\n {\r\n name: 'firstTimeFighter',\r\n value: firstTimeFighter.value\r\n },\r\n {\r\n name: 'firstName',\r\n value: firstName.value\r\n },\r\n {\r\n name: 'lastName',\r\n value: lastName.value\r\n },\r\n {\r\n name: 'email',\r\n value: email.value\r\n },\r\n {\r\n name: 'phone',\r\n value: phone.value\r\n }\r\n ])\r\n }\r\n })\r\n\r\n const updateLocalRefs = (fields) => {\r\n fields.forEach((field) => {\r\n if (field.value === undefined || field.value === null) return\r\n fieldsConfig.find((item) => item.name === field.name).value =\r\n field.value\r\n switch (field.name) {\r\n case 'firstTimeFighter':\r\n firstTimeFighter.value = field.value\r\n return\r\n case 'firstName':\r\n firstName.value = field.value\r\n return\r\n case 'lastName':\r\n lastName.value = field.value\r\n return\r\n case 'email':\r\n email.value = field.value\r\n return\r\n case 'phone':\r\n phone.value = field.value\r\n return\r\n case 'consent':\r\n consent.value = field.value\r\n return\r\n case 'fighterNewsletter':\r\n fighterNewsletter.value = field.value\r\n return\r\n default:\r\n return\r\n }\r\n })\r\n }\r\n\r\n const validateField = (fieldName, value) => {\r\n fieldsConfig.find((item) => item.name === fieldName).value = value\r\n const field = fieldsConfig.find((field) => field.name === fieldName)\r\n if (field) {\r\n field.value = value\r\n fieldValidator(field)\r\n }\r\n }\r\n\r\n const setFirstTimeFighter = (value) => {\r\n firstTimeFighter.value = value\r\n validateField('firstTimeFighter', value)\r\n }\r\n\r\n const setFighterNewsletter = (value) => {\r\n fighterNewsletter.value = value\r\n validateField('fighterNewsletter', value)\r\n }\r\n\r\n const setConsent = (value) => {\r\n consent.value = value\r\n validateField('consent', value)\r\n }\r\n\r\n const showFirstNameErrorMessage = computed(() => showError('firstName', firstName.value))\r\n const showLastNameErrorMessage = computed(() => showError('lastName', lastName.value))\r\n const showEmailErrorMessage = computed(() => showError('email', email.value))\r\n const showPhoneErrorMessage = computed(() => showError('phone', phone.value))\r\n const showError = (fieldName, value) => {\r\n const field = fieldsConfig.find(field => field.name === fieldName)\r\n return !field.validator(value) && props.displayInputError\r\n }\r\n\r\n const showConsentErrorMessage = computed(() => {\r\n return consent.value === false && props.displayInputError\r\n })\r\n\r\n const stepModel = computed(() => {\r\n return fieldsConfig\r\n })\r\n\r\n return {\r\n firstTimeFighter,\r\n firstName,\r\n lastName,\r\n email,\r\n phone,\r\n consent,\r\n fighterNewsletter,\r\n readOnly,\r\n showFirstNameErrorMessage,\r\n showLastNameErrorMessage,\r\n showEmailErrorMessage,\r\n showPhoneErrorMessage,\r\n showConsentErrorMessage,\r\n stepModel,\r\n setFirstTimeFighter,\r\n setConsent,\r\n setFighterNewsletter,\r\n validateField\r\n }\r\n }\r\n}\r\n","import { render } from \"./StafetDeltagSomFighterStepOne.vue?vue&type=template&id=1baaca5b\"\nimport script from \"./StafetDeltagSomFighterStepOne.vue?vue&type=script&lang=js\"\nexport * from \"./StafetDeltagSomFighterStepOne.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"D:\\\\a\\\\1\\\\s\\\\frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\r\n\r\n\r\n \r\n \r\n
\r\n {{ labels.selectYourFighterTshirtTitle }}\r\n
\r\n\r\n
\r\n {{ labels.selectYourFighterTshirtDescription }}\r\n
\r\n
\r\n\r\n \r\n\r\n\r\n setTshirtSize(e.target.value)\"\r\n />\r\n
\r\n\r\n \r\n
\r\n {{ labels.fighterArrangementTitle }}\r\n
\r\n\r\n
\r\n {{ labels.fighterArrangementDescription }}\r\n
\r\n
\r\n\r\n \r\n setParticipateInFreeLunch(e.target.checked)\"\r\n />\r\n
\r\n\r\n nextStepCallback(stepModel)\"\r\n :nextStepLabel=\"labels.formNavigationNextStep2\"\r\n :previousStepCallback=\"previousStepCallback\"\r\n :previousStepLabel=\"labels.formNavigationPreviousStep\"\r\n />\r\n \r\n\r\n","import isBoolean from 'foundation/js/inputValidators/isBoolean'\r\nimport nonEmptyStringValidator from 'foundation/js/inputValidators/nonEmptyStringValidator'\r\n\r\nexport default [\r\n {\r\n name: 'tshirtSize',\r\n value: 0,\r\n isValid: false,\r\n validator: nonEmptyStringValidator\r\n },\r\n {\r\n name: 'participateInFreeLunch',\r\n value: false,\r\n isValid: false,\r\n validator: isBoolean\r\n }\r\n]\r\n","import _stafetCommonStepsProps from 'foundation/js/configurations/_stafetCommonStepsProps'\r\nimport StafetActions from '../StafetActions/StafetActions.vue'\r\nimport FormInputDropdown from '../FormInputDropdown/FormInputDropdown.vue'\r\nimport FormCheckbox from '../FormCheckbox/FormCheckbox.vue'\r\nimport { computed, onBeforeMount, ref } from 'vue'\r\nimport fieldValidator from 'foundation/js/stafet/fieldValidator'\r\nimport fieldsConfig from './config/fieldsConfig'\r\nimport nonEmptyStringValidator from 'foundation/js/inputValidators/nonEmptyStringValidator'\r\nimport getItemFromStorage from 'foundation/js/sessionStorageWrapper/getItemFromStorage'\r\nimport sessionStorageIdentifierEnum from 'foundation/js/sessionStorageWrapper/sessionStorageIdentifierEnum'\r\nimport getFieldValue from 'foundation/js/stafet/getFieldValue'\r\n\r\nexport default {\r\n name: 'StafetDeltagSomFighterStepTwo',\r\n components: {\r\n StafetActions,\r\n FormInputDropdown,\r\n FormCheckbox\r\n },\r\n props: _stafetCommonStepsProps,\r\n setup(props) {\r\n const tshirtSize = ref('')\r\n const participateInFreeLunch = ref(false)\r\n\r\n const tshirtSizes = computed(() => {\r\n const array = []\r\n props.tshirtSizes.forEach((size) => {\r\n array.push({\r\n name: size.displayName,\r\n value: size.value\r\n })\r\n })\r\n return array\r\n })\r\n\r\n onBeforeMount(() => {\r\n const storedFields = getItemFromStorage(\r\n sessionStorageIdentifierEnum.STAFET_JOIN_AS_FIGHTER\r\n )\r\n\r\n if (storedFields) {\r\n updateLocalRefs([\r\n {\r\n name: 'tshirtSize',\r\n value: getFieldValue(storedFields, 'tshirtSize')\r\n },\r\n {\r\n name: 'participateInFreeLunch',\r\n value: getFieldValue(\r\n storedFields,\r\n 'participateInFreeLunch'\r\n )\r\n }\r\n ])\r\n }\r\n })\r\n\r\n const updateLocalRefs = (fields) => {\r\n fields.forEach((field) => {\r\n if (field.value === undefined || field.value === null) return\r\n fieldsConfig.find((item) => item.name === field.name).value =\r\n field.value\r\n switch (field.name) {\r\n case 'tshirtSize':\r\n tshirtSize.value = field.value\r\n return\r\n case 'participateInFreeLunch':\r\n participateInFreeLunch.value = field.value\r\n return\r\n default:\r\n return\r\n }\r\n })\r\n }\r\n\r\n const setTshirtSize = (value) => {\r\n tshirtSize.value = value\r\n validateField('tshirtSize', value)\r\n }\r\n\r\n const setParticipateInFreeLunch = (value) => {\r\n participateInFreeLunch.value = value\r\n validateField('participateInFreeLunch', value)\r\n }\r\n\r\n const validateField = (fieldName, value) => {\r\n fieldsConfig.find((item) => item.name === fieldName).value = value\r\n const field = fieldsConfig.find((field) => field.name === fieldName)\r\n if (field) {\r\n field.value = value\r\n fieldValidator(field)\r\n }\r\n }\r\n\r\n const showTshirtSizeErrorMessage = computed(() => {\r\n return (\r\n !nonEmptyStringValidator(tshirtSize.value) &&\r\n props.displayInputError\r\n )\r\n })\r\n\r\n const stepModel = computed(() => {\r\n return fieldsConfig\r\n })\r\n\r\n return {\r\n tshirtSize,\r\n tshirtSizes,\r\n participateInFreeLunch,\r\n stepModel,\r\n validateField,\r\n setParticipateInFreeLunch,\r\n setTshirtSize,\r\n showTshirtSizeErrorMessage\r\n }\r\n }\r\n}\r\n","import { render } from \"./StafetDeltagSomFighterStepTwo.vue?vue&type=template&id=77c5b5af\"\nimport script from \"./StafetDeltagSomFighterStepTwo.vue?vue&type=script&lang=js\"\nexport * from \"./StafetDeltagSomFighterStepTwo.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"D:\\\\a\\\\1\\\\s\\\\frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\r\n\r\n\r\n \r\n \r\n
\r\n {{ labels.fighterJoinHoldTitle }}\r\n
\r\n
\r\n {{ labels.fighterJoinHoldDescription }}\r\n
\r\n
\r\n\r\n \r\n setJoinATeam(e.target.checked)\"\r\n />\r\n\r\n setIsChild(e.target.checked)\"\r\n />\r\n\r\n validateField('teamName', e.target.value)\"\r\n :errorMessageLabel=\"labels.fighterJoinHoldDropdownErrorMessage\"\r\n :isValidationError=\"handleErrorMessage('teamName')\"\r\n />\r\n\r\n validateField('newsletter', e.target.checked)\"\r\n />\r\n
\r\n\r\n \r\n\r\n nextStepCallback(stepModel)\"\r\n :nextStepLabel=\"labels.formNavigationLastStep\"\r\n :previousStepCallback=\"previousStepCallback\"\r\n :previousStepLabel=\"labels.formNavigationPreviousStep\"\r\n />\r\n \r\n\r\n","import isBoolean from 'foundation/js/inputValidators/isBoolean'\r\nimport nonEmptyStringValidator from 'foundation/js/inputValidators/nonEmptyStringValidator'\r\n\r\nexport default [\r\n {\r\n name: 'joinATeam',\r\n value: false,\r\n isValid: false,\r\n validator: isBoolean\r\n },\r\n {\r\n name: 'isChild',\r\n value: false,\r\n isValid: false,\r\n validator: isBoolean\r\n },\r\n {\r\n dependentField: 'joinATeam',\r\n dependentFieldValue: false,\r\n dependentFieldValidator: (value) => value === false,\r\n name: 'teamName',\r\n value: '',\r\n isValid: false,\r\n validator: nonEmptyStringValidator\r\n },\r\n {\r\n name: 'newsletter',\r\n value: false,\r\n isValid: false,\r\n validator: isBoolean\r\n }\r\n]\r\n","import _stafetCommonStepsProps from 'foundation/js/configurations/_stafetCommonStepsProps'\r\nimport FormCheckbox from '../FormCheckbox/FormCheckbox.vue'\r\nimport FormInputDropdown from '../FormInputDropdown/FormInputDropdown.vue'\r\nimport StafetPayment from '../StafetPayment/StafetPayment.vue'\r\nimport StafetActions from '../StafetActions/StafetActions.vue'\r\nimport { ref, computed, onBeforeMount } from 'vue'\r\nimport { useStore } from 'vuex'\r\nimport fieldValidator from 'foundation/js/stafet/fieldValidator'\r\nimport getItemFromStorage from 'foundation/js/sessionStorageWrapper/getItemFromStorage'\r\nimport sessionStorageIdentifierEnum from 'foundation/js/sessionStorageWrapper/sessionStorageIdentifierEnum'\r\nimport fieldsConfig from './config/fieldsConfig'\r\nimport getFieldValue from 'foundation/js/stafet/getFieldValue'\r\n\r\nexport default {\r\n name: 'StafetDeltagSomFighterStepThree',\r\n components: {\r\n FormCheckbox,\r\n FormInputDropdown,\r\n StafetPayment,\r\n StafetActions\r\n },\r\n props: _stafetCommonStepsProps,\r\n setup(props) {\r\n const store = useStore()\r\n const joinATeam = ref(false)\r\n const isChild = ref(false)\r\n const teamName = ref('') \r\n const newsletter = ref(false)\r\n\r\n const basket = computed(() => {\r\n return store.state.stafet.basket\r\n })\r\n\r\n const basketTotalPrice = computed(() => {\r\n return store.state.stafet.basketTotalPrice\r\n })\r\n\r\n const teams = computed(() => {\r\n const array = []\r\n if (props.holdList) {\r\n props.holdList.forEach((hold) =>\r\n array.push({ name: hold.name, value: hold.holdKode })\r\n )\r\n }\r\n\r\n return array\r\n })\r\n\r\n onBeforeMount(() => {\r\n const storedFields = getItemFromStorage(\r\n sessionStorageIdentifierEnum.STAFET_JOIN_AS_FIGHTER\r\n )\r\n\r\n if (storedFields) {\r\n updateLocalRefs([\r\n {\r\n name: 'joinATeam',\r\n value: getFieldValue(storedFields, 'joinATeam')\r\n },\r\n {\r\n name: 'isChild',\r\n value: getFieldValue(storedFields, 'isChild')\r\n },\r\n {\r\n name: 'teamName',\r\n value: getFieldValue(storedFields, 'teamName')\r\n },\r\n {\r\n name: 'newsletter',\r\n value:\r\n getFieldValue(storedFields, 'newsletter') ??\r\n newsletter.value\r\n }\r\n ])\r\n }\r\n\r\n store.dispatch('donation/teams', { stafetId: props.stafetId })\r\n })\r\n\r\n const updateLocalRefs = (fields) => {\r\n fields.forEach((field) => {\r\n if (field.value === undefined || field.value === null) return\r\n fieldsConfig.find((item) => item.name === field.name).value =\r\n field.value\r\n switch (field.name) {\r\n case 'joinATeam':\r\n joinATeam.value = field.value\r\n return\r\n case 'isChild':\r\n isChild.value = field.value\r\n return\r\n case 'teamName':\r\n teamName.value = field.value\r\n return\r\n case 'newsletter':\r\n newsletter.value = field.value\r\n return\r\n default:\r\n return\r\n }\r\n })\r\n }\r\n\r\n const validateField = (fieldName, value) => {\r\n updateLocalRefs([{ name: fieldName, value: value }]) // update local refs and keep in sync with fieldsConfig\r\n const field = fieldsConfig.find((field) => field.name === fieldName)\r\n if (field) {\r\n field.value = value\r\n fieldValidator(field)\r\n }\r\n }\r\n\r\n const setJoinATeam = (value) => {\r\n joinATeam.value = value\r\n store.dispatch('stafet/userInputs', {\r\n inputs: [\r\n { name: 'joinATeam', isValid: true, value: joinATeam.value }\r\n ]\r\n })\r\n validateField('joinATeam', value)\r\n if (props.updateBasketCallback) {\r\n props.updateBasketCallback()\r\n }\r\n }\r\n\r\n const setIsChild = (value) => {\r\n isChild.value = value\r\n store.dispatch('stafet/userInputs', {\r\n inputs: [\r\n { name: 'isChild', isValid: true, value: isChild.value }\r\n ]\r\n })\r\n if (props.updateBasketCallback) {\r\n props.updateBasketCallback()\r\n }\r\n validateField('isChild', value)\r\n }\r\n\r\n const stepModel = computed(() => {\r\n return fieldsConfig\r\n })\r\n\r\n const handleErrorMessage = (fieldName) => {\r\n const field = fieldsConfig.find((field) => field.name === fieldName)\r\n return !field?.isValid && props.displayInputError\r\n }\r\n\r\n return {\r\n joinATeam,\r\n isChild,\r\n teamName,\r\n teams,\r\n basket,\r\n basketTotalPrice,\r\n stepModel,\r\n setJoinATeam,\r\n newsletter,\r\n setIsChild,\r\n validateField,\r\n handleErrorMessage\r\n }\r\n }\r\n}\r\n","import { render } from \"./StafetDeltagSomFighterStepThree.vue?vue&type=template&id=0b618ee6\"\nimport script from \"./StafetDeltagSomFighterStepThree.vue?vue&type=script&lang=js\"\nexport * from \"./StafetDeltagSomFighterStepThree.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"D:\\\\a\\\\1\\\\s\\\\frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","export default [\r\n {\r\n step: 1,\r\n name: 'StafetDeltagSomFighterStepOne',\r\n completed: false,\r\n label: 'formStepLabel1',\r\n hidden: false\r\n },\r\n {\r\n step: 2,\r\n name: 'StafetDeltagSomFighterStepTwo',\r\n completed: false,\r\n label: 'formStepLabel2',\r\n hidden: false\r\n },\r\n {\r\n step: 3,\r\n name: 'StafetDeltagSomFighterStepThree',\r\n completed: false,\r\n label: 'formStepLabel3',\r\n hidden: false\r\n },\r\n {\r\n step: 4,\r\n name: 'FormStepSubmitting',\r\n completed: false,\r\n label: '',\r\n hidden: true\r\n }\r\n]\r\n","export default function (userInputs, labels, store, adultPrice, childPrice) {\r\n const basket = []\r\n const isChild = userInputs.find((item) => item.name === 'isChild')\r\n const joinATeam = userInputs.find((item) => item.name === 'joinATeam')\r\n\r\n basket.push({\r\n label: labels.fighterJoinHoldTotalFighter,\r\n amount: '',\r\n price: '0 kr.',\r\n intPrice: 0\r\n })\r\n\r\n\r\n if (joinATeam && joinATeam.value) {\r\n if (isChild && isChild.value) {\r\n basket.push({\r\n label: labels.fighterJoinHoldTotalDeltagergebyr,\r\n amount: '',\r\n price: `${childPrice} kr.`,\r\n intPrice: childPrice\r\n })\r\n } else {\r\n basket.push({\r\n label: labels.fighterJoinHoldTotalDeltagergebyr,\r\n amount: '',\r\n price: `${adultPrice} kr.`,\r\n intPrice: adultPrice\r\n })\r\n }\r\n }\r\n\r\n store.dispatch('stafet/basket', { basket: basket })\r\n}\r\n","import { computed, ref, onMounted } from 'vue'\r\nimport StafetHeader from '../StafetHeader/StafetHeader.vue'\r\nimport FormStepSubmitting from '../FormStepSubmitting/FormStepSubmitting.vue'\r\nimport StafetDeltagSomFighterStepOne from '../StafetDeltagSomFighterStepOne/StafetDeltagSomFighterStepOne.vue'\r\nimport StafetDeltagSomFighterStepTwo from '../StafetDeltagSomFighterStepTwo/StafetDeltagSomFighterStepTwo.vue'\r\nimport StafetDeltagSomFighterStepThree from '../StafetDeltagSomFighterStepThree/StafetDeltagSomFighterStepThree.vue'\r\nimport { scrollToFirstError } from '../../foundation/js/inputValidators/scrollToFirstError'\r\nimport { useStore } from 'vuex'\r\nimport mapStafetHeaderSteps from 'foundation/js/stafet/mapStafetHeaderSteps'\r\nimport sessionStorageIdentifierEnum from 'foundation/js/sessionStorageWrapper/sessionStorageIdentifierEnum'\r\nimport getCommonComputedFields from 'foundation/js/stafet/getCommonComputedFields'\r\nimport stepsConfig from './config/stepsConfig'\r\nimport fieldValidator from 'foundation/js/stafet/fieldValidator'\r\nimport updateItemFromStorage from 'foundation/js/sessionStorageWrapper/updateItemFromStorage'\r\nimport updateBasket from './methods/updateBasket'\r\n\r\nexport default {\r\n name: 'StafetDeltagSomFighterFlow',\r\n components: {\r\n StafetHeader,\r\n FormStepSubmitting,\r\n StafetDeltagSomFighterStepOne,\r\n StafetDeltagSomFighterStepTwo,\r\n StafetDeltagSomFighterStepThree\r\n },\r\n props: {\r\n stafetId: {\r\n type: String,\r\n required: true\r\n },\r\n tshirtSizes: {\r\n type: Array,\r\n required: false,\r\n default: []\r\n },\r\n donationAmount: {\r\n type: Array,\r\n required: false,\r\n default: []\r\n },\r\n loggedIn: {\r\n type: Boolean,\r\n required: false,\r\n default: false\r\n },\r\n redirectToEditProfile: {\r\n type: String,\r\n required: false,\r\n default: ''\r\n },\r\n editProfileLinkText: {\r\n type: String,\r\n required: false,\r\n default: ''\r\n },\r\n holdList: {\r\n type: Array,\r\n required: false,\r\n default: []\r\n },\r\n userData: {\r\n type: Object,\r\n required: false,\r\n default: {}\r\n },\r\n adultPrice: {\r\n type: Number,\r\n required: true\r\n },\r\n childPrice: {\r\n type: Number,\r\n required: true\r\n }\r\n },\r\n setup(props) {\r\n const store = useStore()\r\n const displayInputError = ref(false)\r\n\r\n const labels = computed(() => {\r\n return store.state.labels.collections['SFLJoinAsFighterLabels']\r\n })\r\n\r\n const isSubmitting = computed(() => {\r\n return store.state.stafet.isSubmitting\r\n })\r\n\r\n const headerSteps = computed(() => {\r\n return mapStafetHeaderSteps(\r\n steps.value,\r\n currentStep.value,\r\n labels.value\r\n )\r\n })\r\n\r\n const { userInputs, steps, currentStep, currentStepName } =\r\n getCommonComputedFields(store.state.stafet)\r\n\r\n onMounted(() => {\r\n store.dispatch('stafet/stafetId', { stafetId: props.stafetId })\r\n store.dispatch('stafet/steps', {\r\n steps: stepsConfig\r\n })\r\n })\r\n\r\n const handleStepCompleted = () => {\r\n steps.value.find(\r\n (item) => item.step === currentStep.value\r\n ).completed = true\r\n\r\n store.dispatch('stafet/steps', {\r\n steps: steps.value\r\n })\r\n\r\n const unCompletedSteps = steps.value.filter(\r\n (item) => !item.completed\r\n )\r\n\r\n if (unCompletedSteps.length > 0) {\r\n store.dispatch('stafet/currentStep', {\r\n step: unCompletedSteps[0].step\r\n })\r\n }\r\n }\r\n\r\n const nextStepCallback = (fields) => {\r\n fields.forEach((field) => {\r\n if (field.dependentField) {\r\n const dependentField = fields.find(\r\n (item) => item.name === field.dependentField\r\n )\r\n\r\n if (dependentField) {\r\n field.dependentFieldValue = dependentField.value\r\n }\r\n }\r\n fieldValidator(field)\r\n })\r\n\r\n const isStepValid = fields.every((field) => field.isValid)\r\n if (isStepValid) {\r\n displayInputError.value = false\r\n handleStepCompleted()\r\n store.dispatch('stafet/userInputs', { inputs: fields })\r\n updateItemFromStorage(\r\n sessionStorageIdentifierEnum.STAFET_JOIN_AS_FIGHTER,\r\n fields\r\n )\r\n updateBasket(\r\n userInputs.value,\r\n labels.value,\r\n store,\r\n props.adultPrice,\r\n props.childPrice\r\n )\r\n\r\n scrollTo(0, 0) \r\n } else {\r\n displayInputError.value = true\r\n scrollToFirstError()\r\n }\r\n }\r\n\r\n const updateBasketCallback = () => {\r\n updateBasket(userInputs.value, labels.value, store, props.adultPrice, props.childPrice)\r\n }\r\n\r\n const previousStepCallback = () => {\r\n if (currentStep.value > 1) {\r\n store.dispatch('stafet/currentStep', {\r\n step: currentStep.value - 1\r\n })\r\n\r\n steps.value.find(\r\n (item) => item.step === currentStep.value\r\n ).completed = false\r\n\r\n store.dispatch('stafet/steps', {\r\n steps: steps.value\r\n })\r\n\r\n scrollTo(0, 0) \r\n }\r\n }\r\n\r\n const submitCallback = async () => {\r\n // it expects a object with ok: true or false\r\n await store.dispatch('stafet/joinAsAFighterSubmit')\r\n return 'submitted'\r\n }\r\n\r\n return {\r\n labels,\r\n headerSteps,\r\n currentStepName,\r\n displayInputError,\r\n isSubmitting,\r\n nextStepCallback,\r\n previousStepCallback,\r\n submitCallback,\r\n updateBasketCallback\r\n }\r\n }\r\n}\r\n","import { render } from \"./StafetDeltagSomFighterFlow.vue?vue&type=template&id=6580c69b\"\nimport script from \"./StafetDeltagSomFighterFlow.vue?vue&type=script&lang=js\"\nexport * from \"./StafetDeltagSomFighterFlow.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"D:\\\\a\\\\1\\\\s\\\\frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\r\n\r\n\r\n \r\n \r\n\r\n \r\n \r\n
\r\n \r\n\r\n","\r\n\r\n\r\n \r\n \r\n {{ labels.yourSupportTitle }}\r\n
\r\n\r\n \r\n \r\n
\r\n\r\n \r\n\r\n \r\n setDonationAmount(e.target.value)\"\r\n />\r\n\r\n \r\n
\r\n\r\n nextStepCallback(stepModel)\"\r\n :nextStepLabel=\"labels.formNavigationNextStep1\"\r\n />\r\n \r\n\r\n","import _stafetCommonStepsProps from 'foundation/js/configurations/_stafetCommonStepsProps'\r\nimport SupportSelector from '../SupportSelector/SupportSelector.vue'\r\nimport FormInputTextField from '../FormInputTextField/FormInputTextField.vue'\r\nimport FormInputTextarea from '../FormInputTextarea/FormInputTextarea.vue'\r\nimport FormRadioGroup from '../FormRadioGroup/FormRadioGroup.vue'\r\nimport StafetActions from '../StafetActions/StafetActions.vue'\r\nimport { computed, onBeforeMount, ref } from 'vue'\r\nimport nonEmptyStringValidator from 'foundation/js/inputValidators/nonEmptyStringValidator'\r\nimport getItemFromStorage from 'foundation/js/sessionStorageWrapper/getItemFromStorage'\r\nimport sessionStorageIdentifierEnum from 'foundation/js/sessionStorageWrapper/sessionStorageIdentifierEnum'\r\nimport getFieldValue from 'foundation/js/stafet/getFieldValue'\r\nimport { useStore } from 'vuex'\r\n\r\nexport default {\r\n name: 'StafetDonationStepOne',\r\n components: {\r\n SupportSelector,\r\n FormInputTextField,\r\n FormInputTextarea,\r\n FormRadioGroup,\r\n StafetActions\r\n },\r\n props: _stafetCommonStepsProps,\r\n setup(props) {\r\n const store = useStore()\r\n const donationTypeEnum = Object.freeze({\r\n PRIVATE: 'Privat',\r\n COMPANY: 'Virksomhed'\r\n })\r\n\r\n const donationType = ref(donationTypeEnum.PRIVATE)\r\n const donationAmount = ref(NaN)\r\n const supportSelector = ref({})\r\n const comment = ref('')\r\n\r\n const radioOptions = [\r\n {\r\n value: donationTypeEnum.PRIVATE,\r\n label: props.labels.yourSupportPrivateSupportRadioLabel\r\n },\r\n {\r\n value: donationTypeEnum.COMPANY,\r\n label: props.labels.yourSupportCompanySupportRadioLabel\r\n }\r\n ]\r\n\r\n onBeforeMount(() => {\r\n const storedFields = getItemFromStorage(\r\n sessionStorageIdentifierEnum.STAFET_DONATION\r\n )\r\n\r\n if (storedFields) {\r\n if (getFieldValue(storedFields, 'type')) {\r\n donationType.value = getFieldValue(\r\n storedFields,\r\n 'type'\r\n )\r\n }\r\n\r\n if (getFieldValue(storedFields, 'amount')) {\r\n donationAmount.value = getFieldValue(\r\n storedFields,\r\n 'amount'\r\n )\r\n }\r\n\r\n if (getFieldValue(storedFields, 'donationFor')) {\r\n store.dispatch('donation/donationFor', {\r\n donationFor: getFieldValue(storedFields, 'donationFor')\r\n })\r\n }\r\n\r\n if (getFieldValue(storedFields, 'donationTeam')) {\r\n store.dispatch('donation/donationTeam', {\r\n team: getFieldValue(\r\n storedFields,\r\n 'donationTeam'\r\n ).toString()\r\n })\r\n }\r\n\r\n if (getFieldValue(storedFields, 'donationParticipant')) {\r\n store.dispatch('donation/donationParticipant', {\r\n participant: getFieldValue(\r\n storedFields,\r\n 'donationParticipant'\r\n )\r\n })\r\n }\r\n\r\n if (getFieldValue(storedFields, 'comment')) {\r\n comment.value = getFieldValue(\r\n storedFields,\r\n 'comment'\r\n )\r\n }\r\n }\r\n })\r\n\r\n const updateDonationType = (value) => {\r\n donationType.value = value\r\n }\r\n\r\n const updateSupportSelector = (data) => {\r\n supportSelector.value = data\r\n }\r\n\r\n const updateComment = (value) => {\r\n comment.value = value\r\n }\r\n\r\n const setDonationAmount = (value) => {\r\n donationAmount.value = value\r\n }\r\n\r\n const isDonationAmountValid = (value) => value && value >= props.donationMinimumAmount\r\n\r\n const showDonationAmountErrorMessage = computed(() => {\r\n return (\r\n !isDonationAmountValid(donationAmount.value) && props.displayInputError\r\n )\r\n })\r\n\r\n const stepModel = computed(() => {\r\n return [\r\n {\r\n name: 'amount',\r\n value: parseInt(donationAmount.value),\r\n isValid: false,\r\n validator: isDonationAmountValid\r\n },\r\n {\r\n name: 'donationFor',\r\n value: supportSelector.value.donationFor,\r\n isValid: supportSelector.value.isValid,\r\n validator: () => {\r\n return supportSelector.value.isValid\r\n }\r\n },\r\n {\r\n name: 'holdKode',\r\n value: supportSelector.value.donationTeam,\r\n isValid: supportSelector.value.isValid,\r\n validator: () => {\r\n return supportSelector.value.isValid\r\n }\r\n },\r\n {\r\n name: 'deltagerId',\r\n value: supportSelector.value.donationParticipant,\r\n isValid: supportSelector.value.isValid,\r\n validator: () => {\r\n return supportSelector.value.isValid\r\n }\r\n },\r\n {\r\n name: 'comment',\r\n value: comment.value,\r\n isValid: true,\r\n validator: () => true\r\n },\r\n {\r\n name: 'type',\r\n value: donationType.value,\r\n isValid: true,\r\n validator: nonEmptyStringValidator\r\n }\r\n ]\r\n })\r\n\r\n return {\r\n radioOptions,\r\n donationType,\r\n donationAmount,\r\n comment,\r\n showDonationAmountErrorMessage,\r\n stepModel,\r\n setDonationAmount,\r\n updateSupportSelector,\r\n updateComment,\r\n updateDonationType\r\n }\r\n }\r\n}\r\n","import { render } from \"./StafetDonationStepOne.vue?vue&type=template&id=54d83d0a\"\nimport script from \"./StafetDonationStepOne.vue?vue&type=script&lang=js\"\nexport * from \"./StafetDonationStepOne.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"D:\\\\a\\\\1\\\\s\\\\frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\r\n\r\n\r\n \r\n \r\n \r\n\r\n","\r\n\r\n\r\n \r\n \r\n {{ labels.yourSupportTitle }}\r\n
\r\n \r\n
\r\n validateField('firstName', e.target.value)\"\r\n :errorMessageLabel=\"labels.yourInformationFirstNameErrorMessage\"\r\n :isValidationError=\"showFirstNameErrorMessage\"\r\n />\r\n\r\n validateField('lastName', e.target.value)\"\r\n :errorMessageLabel=\"labels.yourInformationLastNameErrorMessage\"\r\n :isValidationError=\"showLastNameErrorMessage\"\r\n />\r\n
\r\n\r\n
validateField('email', e.target.value)\"\r\n :isValidationError=\"showEmailErrorMessage\"\r\n />\r\n \r\n\r\n \r\n validateField('isAnonymous', e.target.checked)\r\n \"\r\n />\r\n setTaxDeduction(e.target.checked)\"\r\n />\r\n\r\n validateField('cpr', e.target.value)\"\r\n :isValidationError=\"showCprErrorMessage\"\r\n />\r\n
\r\n\r\n \r\n\r\n nextStepCallback(stepModel)\"\r\n :nextStepLabel=\"labels.formNavigationLastStep\"\r\n :previousStepCallback=\"() => previousStepCallback(stepModel)\"\r\n :previousStepLabel=\"labels.formNavigationPreviousStep\"\r\n />\r\n \r\n\r\n","import cprValidator from 'foundation/js/inputValidators/cprValidator'\r\nimport emailValidator from 'foundation/js/inputValidators/emailValidator'\r\nimport isBoolean from 'foundation/js/inputValidators/isBoolean'\r\nimport nameValidator from 'foundation/js/inputValidators/nameValidator'\r\n\r\nexport default [\r\n {\r\n name: 'firstName',\r\n value: '',\r\n isValid: false,\r\n validator: nameValidator\r\n },\r\n {\r\n name: 'lastName',\r\n value: '',\r\n isValid: false,\r\n validator: nameValidator\r\n },\r\n {\r\n name: 'email',\r\n value: '',\r\n isValid: false,\r\n validator: emailValidator\r\n },\r\n {\r\n name: 'isAnonymous',\r\n value: false,\r\n isValid: false,\r\n validator: isBoolean\r\n },\r\n {\r\n name: 'taxDeduction',\r\n value: false,\r\n isValid: false,\r\n validator: isBoolean\r\n },\r\n {\r\n dependentField: 'taxDeduction',\r\n dependentFieldValue: false,\r\n dependentFieldValidator: (value) => value === false,\r\n name: 'cpr',\r\n value: '',\r\n isValid: false,\r\n validator: cprValidator\r\n }\r\n]\r\n","import _stafetCommonStepsProps from 'foundation/js/configurations/_stafetCommonStepsProps'\r\nimport { ref, computed, onBeforeMount } from 'vue'\r\nimport FormInputTextField from '../FormInputTextField/FormInputTextField.vue'\r\nimport FormCheckbox from '../FormCheckbox/FormCheckbox.vue'\r\nimport StafetPayment from '../StafetPayment/StafetPayment.vue'\r\nimport StafetActions from '../StafetActions/StafetActions.vue'\r\nimport nameValidator from 'foundation/js/inputValidators/nameValidator'\r\nimport emailValidator from 'foundation/js/inputValidators/emailValidator'\r\nimport { useStore } from 'vuex'\r\nimport fieldsConfig from './config/fieldsConfig'\r\nimport fieldValidator from 'foundation/js/stafet/fieldValidator'\r\nimport cprValidator from 'foundation/js/inputValidators/cprValidator'\r\nimport getItemFromStorage from 'foundation/js/sessionStorageWrapper/getItemFromStorage'\r\nimport sessionStorageIdentifierEnum from 'foundation/js/sessionStorageWrapper/sessionStorageIdentifierEnum'\r\nimport getFieldValue from 'foundation/js/stafet/getFieldValue'\r\n\r\nexport default {\r\n name: 'StafetDonationStepPrivat',\r\n components: {\r\n FormInputTextField,\r\n FormCheckbox,\r\n StafetPayment,\r\n StafetActions\r\n },\r\n props: _stafetCommonStepsProps,\r\n setup(props) {\r\n const store = useStore()\r\n const firstName = ref(props.userData?.firstName ?? '')\r\n const lastName = ref(props.userData?.lastName ?? '')\r\n const email = ref(props.userData?.email ?? '')\r\n const isAnonymous = ref(false)\r\n const taxDeduction = ref(false)\r\n const cpr = ref('')\r\n\r\n const basket = computed(() => {\r\n return store.state.donation.basket\r\n })\r\n\r\n const basketTotalPrice = computed(() => {\r\n return store.state.donation.basketTotalPrice\r\n })\r\n\r\n onBeforeMount(() => {\r\n const storedFields = getItemFromStorage(\r\n sessionStorageIdentifierEnum.STAFET_DONATION\r\n )\r\n\r\n if (storedFields) {\r\n if (getFieldValue(storedFields, 'firstName')) {\r\n firstName.value = getFieldValue(storedFields, 'firstName')\r\n }\r\n if (getFieldValue(storedFields, 'lastName')) {\r\n lastName.value = getFieldValue(storedFields, 'lastName')\r\n }\r\n if (getFieldValue(storedFields, 'email')) {\r\n email.value = getFieldValue(storedFields, 'email')\r\n }\r\n if (getFieldValue(storedFields, 'isAnonymous')) {\r\n isAnonymous.value = getFieldValue(\r\n storedFields,\r\n 'isAnonymous'\r\n )\r\n }\r\n if (getFieldValue(storedFields, 'taxDeduction')) {\r\n taxDeduction.value = getFieldValue(\r\n storedFields,\r\n 'taxDeduction'\r\n )\r\n }\r\n if (getFieldValue(storedFields, 'cpr')) {\r\n cpr.value = getFieldValue(storedFields, 'cpr')\r\n }\r\n }\r\n\r\n validateField('lastName', lastName.value)\r\n validateField('email', email.value)\r\n validateField('isAnonymous', isAnonymous.value)\r\n validateField('taxDeduction', taxDeduction.value)\r\n validateField('cpr', cpr.value)\r\n validateField('firstName', firstName.value)\r\n })\r\n\r\n const showFirstNameErrorMessage = computed(() => {\r\n return !nameValidator(firstName.value) && props.displayInputError\r\n })\r\n\r\n const showLastNameErrorMessage = computed(() => {\r\n return !nameValidator(lastName.value) && props.displayInputError\r\n })\r\n\r\n const showEmailErrorMessage = computed(() => {\r\n return !emailValidator(email.value) && props.displayInputError\r\n })\r\n\r\n const showCprErrorMessage = computed(() => {\r\n return !cprValidator(cpr.value) && props.displayInputError\r\n })\r\n\r\n const setTaxDeduction = (value) => {\r\n taxDeduction.value = value\r\n validateField('taxDeduction', value)\r\n }\r\n\r\n const validateField = (fieldName, value) => {\r\n fieldsConfig.find((item) => item.name === fieldName).value = value\r\n const field = fieldsConfig.find((field) => field.name === fieldName)\r\n if (field) {\r\n field.value = value\r\n fieldValidator(field)\r\n }\r\n }\r\n\r\n const stepModel = computed(() => {\r\n return fieldsConfig\r\n })\r\n\r\n return {\r\n firstName,\r\n lastName,\r\n email,\r\n isAnonymous,\r\n taxDeduction,\r\n cpr,\r\n basket,\r\n basketTotalPrice,\r\n stepModel,\r\n validateField,\r\n setTaxDeduction,\r\n showFirstNameErrorMessage,\r\n showLastNameErrorMessage,\r\n showEmailErrorMessage,\r\n showCprErrorMessage\r\n }\r\n }\r\n}\r\n","import { render } from \"./StafetDonationStepPrivat.vue?vue&type=template&id=3844b3f0\"\nimport script from \"./StafetDonationStepPrivat.vue?vue&type=script&lang=js\"\nexport * from \"./StafetDonationStepPrivat.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"D:\\\\a\\\\1\\\\s\\\\frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\r\n\r\n\r\n \r\n \r\n {{ labels.yourInformationCompanyTitle }}\r\n
\r\n\r\n \r\n\r\n \r\n\r\n \r\n validateField('isAnonymous', e.target.checked)\r\n \"\r\n />\r\n setTaxDeduction(e.target.checked)\"\r\n />\r\n\r\n validateField('cvr', e.target.value)\"\r\n :isValidationError=\"showCvrErrorMessage\"\r\n />\r\n
\r\n\r\n \r\n\r\n nextStepCallback(stepModel)\"\r\n :nextStepLabel=\"labels.formNavigationLastStep\"\r\n :previousStepCallback=\"() => previousStepCallback(stepModel)\"\r\n :previousStepLabel=\"labels.formNavigationPreviousStep\"\r\n />\r\n \r\n\r\n","import cvrValidator from 'foundation/js/inputValidators/cvrValidator'\r\nimport emailValidator from 'foundation/js/inputValidators/emailValidator'\r\nimport isBoolean from 'foundation/js/inputValidators/isBoolean'\r\nimport nameValidator from 'foundation/js/inputValidators/nameValidator'\r\nimport nonEmptyStringValidator from 'foundation/js/inputValidators/nonEmptyStringValidator'\r\nimport phoneValidator from 'foundation/js/inputValidators/phoneValidator'\r\n\r\nexport default [\r\n {\r\n name: 'companyName',\r\n value: '',\r\n isValid: false,\r\n validator: nonEmptyStringValidator\r\n },\r\n {\r\n name: 'firstName',\r\n value: '',\r\n isValid: false,\r\n validator: nameValidator\r\n },\r\n {\r\n name: 'lastName',\r\n value: '',\r\n isValid: false,\r\n validator: nameValidator\r\n },\r\n {\r\n name: 'email',\r\n value: '',\r\n isValid: false,\r\n validator: emailValidator\r\n },\r\n {\r\n name: 'phone',\r\n value: '',\r\n isValid: false,\r\n validator: (value) => value === '' || phoneValidator(value)\r\n },\r\n {\r\n name: 'companyAddress',\r\n value: '',\r\n isValid: false,\r\n validator: nonEmptyStringValidator\r\n },\r\n {\r\n name: 'companyPostalCode',\r\n value: '',\r\n isValid: false,\r\n validator: nonEmptyStringValidator\r\n },\r\n {\r\n name: 'companyCity',\r\n value: '',\r\n isValid: false,\r\n validator: nonEmptyStringValidator\r\n },\r\n {\r\n name: 'companyWebsite',\r\n value: '',\r\n isValid: false,\r\n validator: () => true\r\n },\r\n {\r\n name: 'companyLogo',\r\n value: [],\r\n isValid: false,\r\n validator: () => true\r\n },\r\n {\r\n name: 'isAnonymous',\r\n value: false,\r\n isValid: false,\r\n validator: isBoolean\r\n },\r\n {\r\n name: 'taxDeduction',\r\n value: false,\r\n isValid: false,\r\n validator: isBoolean\r\n },\r\n {\r\n dependentField: 'taxDeduction',\r\n dependentFieldValue: false,\r\n dependentFieldValidator: (value) => value === false,\r\n name: 'cvr',\r\n value: '',\r\n isValid: false,\r\n validator: cvrValidator\r\n }\r\n]\r\n","import _stafetCommonStepsProps from 'foundation/js/configurations/_stafetCommonStepsProps'\r\nimport { ref, computed, onBeforeMount } from 'vue'\r\nimport FormInputTextField from '../FormInputTextField/FormInputTextField.vue'\r\nimport FormCheckbox from '../FormCheckbox/FormCheckbox.vue'\r\nimport StafetPayment from '../StafetPayment/StafetPayment.vue'\r\nimport StafetActions from '../StafetActions/StafetActions.vue'\r\nimport { useStore } from 'vuex'\r\nimport nonEmptyStringValidator from 'foundation/js/inputValidators/nonEmptyStringValidator'\r\nimport emailValidator from 'foundation/js/inputValidators/emailValidator'\r\nimport nameValidator from 'foundation/js/inputValidators/nameValidator'\r\nimport getItemFromStorage from 'foundation/js/sessionStorageWrapper/getItemFromStorage'\r\nimport sessionStorageIdentifierEnum from 'foundation/js/sessionStorageWrapper/sessionStorageIdentifierEnum'\r\nimport getFieldValue from 'foundation/js/stafet/getFieldValue'\r\nimport fieldsConfig from './config/fieldsConfig'\r\nimport fieldValidator from 'foundation/js/stafet/fieldValidator'\r\nimport phoneValidator from 'foundation/js/inputValidators/phoneValidator'\r\nimport cvrValidator from 'foundation/js/inputValidators/cvrValidator'\r\nimport FormAddressField from \"../FormAddressField/FormAddressField\"\r\n\r\nexport default {\r\n name: 'StafetDonationStepVirksomhed',\r\n components: {\r\n FormInputTextField,\r\n FormCheckbox,\r\n StafetPayment,\r\n StafetActions,\r\n FormAddressField\r\n },\r\n props: _stafetCommonStepsProps,\r\n setup(props) {\r\n const store = useStore()\r\n const companyName = ref('')\r\n const firstName = ref(props.userData?.firstName ?? '')\r\n const lastName = ref(props.userData?.lastName ?? '')\r\n const email = ref(props.userData?.email ?? '')\r\n const phone = ref(props.userData?.phone ?? '')\r\n const companyAddress = ref(\"\")\r\n const companyPostalCode = ref(\"\")\r\n const companyCity = ref(\"\")\r\n const companyWebsite = ref('')\r\n const companyLogo = ref([])\r\n const isAnonymous = ref(false)\r\n const taxDeduction = ref(false)\r\n const cvr = ref('')\r\n\r\n const basket = computed(() => {\r\n return store.state.donation.basket\r\n })\r\n\r\n const basketTotalPrice = computed(() => {\r\n return store.state.donation.basketTotalPrice\r\n })\r\n\r\n const donationFor = computed(() => {\r\n return store.state.donation.donationFor\r\n })\r\n\r\n onBeforeMount(() => {\r\n const storedFields = getItemFromStorage(\r\n sessionStorageIdentifierEnum.STAFET_DONATION\r\n )\r\n\r\n if (storedFields) {\r\n if (getFieldValue(storedFields, 'companyName')) {\r\n companyName.value = getFieldValue(\r\n storedFields,\r\n 'companyName'\r\n )\r\n }\r\n if (getFieldValue(storedFields, 'firstName')) {\r\n firstName.value = getFieldValue(storedFields, 'firstName')\r\n }\r\n if (getFieldValue(storedFields, 'lastName')) {\r\n lastName.value = getFieldValue(storedFields, 'lastName')\r\n }\r\n if (getFieldValue(storedFields, 'email')) {\r\n email.value = getFieldValue(storedFields, 'email')\r\n }\r\n if (getFieldValue(storedFields, 'phone')) {\r\n phone.value = getFieldValue(storedFields, 'phone')\r\n }\r\n if (getFieldValue(storedFields, 'companyAddress')) {\r\n companyAddress.value = getFieldValue(\r\n storedFields,\r\n 'companyAddress'\r\n )\r\n }\r\n if (getFieldValue(storedFields, 'companyPostalCode')) {\r\n companyPostalCode.value = getFieldValue(\r\n storedFields,\r\n 'companyPostalCode'\r\n )\r\n }\r\n if (getFieldValue(storedFields, 'companyCity')) {\r\n companyCity.value = getFieldValue(\r\n storedFields,\r\n 'companyCity'\r\n )\r\n }\r\n if (getFieldValue(storedFields, 'companyWebsite')) {\r\n companyWebsite.value = getFieldValue(\r\n storedFields,\r\n 'companyWebsite'\r\n )\r\n }\r\n if (getFieldValue(storedFields, 'isAnonymous')) {\r\n isAnonymous.value = getFieldValue(\r\n storedFields,\r\n 'isAnonymous'\r\n )\r\n }\r\n if (getFieldValue(storedFields, 'taxDeduction')) {\r\n taxDeduction.value = getFieldValue(\r\n storedFields,\r\n 'taxDeduction'\r\n )\r\n }\r\n if (getFieldValue(storedFields, 'cvr')) {\r\n cvr.value = getFieldValue(storedFields, 'cvr')\r\n }\r\n }\r\n\r\n validateField('firstName', firstName.value)\r\n validateField('cvr', cvr.value)\r\n validateField('taxDeduction', taxDeduction.value)\r\n validateField('isAnonymous', isAnonymous.value)\r\n validateField('companyWebsite', companyWebsite.value)\r\n validateField('companyAddress', companyAddress.value)\r\n validateField('companyPostalCode', companyPostalCode.value)\r\n validateField('companyCity', companyCity.value)\r\n validateField('phone', phone.value)\r\n validateField('email', email.value)\r\n validateField('lastName', lastName.value)\r\n validateField('companyName', companyName.value)\r\n })\r\n\r\n const showFirstNameErrorMessage = computed(() => {\r\n return !nameValidator(firstName.value) && props.displayInputError\r\n })\r\n\r\n const showLastNameErrorMessage = computed(() => {\r\n return !nameValidator(lastName.value) && props.displayInputError\r\n })\r\n\r\n const showEmailErrorMessage = computed(() => {\r\n return !emailValidator(email.value) && props.displayInputError\r\n })\r\n\r\n const showPhoneErrorMessage = computed(() => {\r\n return (\r\n phone.value !== '' &&\r\n props.displayInputError &&\r\n !phoneValidator(phone.value)\r\n )\r\n })\r\n\r\n const showCvrErrorMessage = computed(() => {\r\n return !cvrValidator(cvr.value) && props.displayInputError\r\n })\r\n\r\n const showCompanyNameErrorMessage = computed(() => {\r\n return (\r\n !nonEmptyStringValidator(companyName.value) &&\r\n props.displayInputError\r\n )\r\n })\r\n\r\n const showCompanyAddressErrorMessage = computed(() => {\r\n validateField('companyAddress', companyAddress.value)\r\n validateField('companyPostalCode', companyPostalCode.value)\r\n validateField('companyCity', companyCity.value)\r\n return (\r\n !addressValidator(companyAddress.value, companyPostalCode.value, companyCity.value) && \r\n props.displayInputError\r\n )\r\n })\r\n\r\n const setTaxDeduction = (value) => {\r\n taxDeduction.value = value\r\n validateField('taxDeduction', value)\r\n }\r\n\r\n const validateField = (fieldName, value) => {\r\n fieldsConfig.find((item) => item.name === fieldName).value = value\r\n const field = fieldsConfig.find((field) => field.name === fieldName)\r\n if (field) {\r\n field.value = value\r\n fieldValidator(field)\r\n }\r\n }\r\n\r\n const addressValidator = (address, postalCode, city) => {\r\n return address && postalCode && city\r\n }\r\n\r\n const onFileChange = (e) => {\r\n const files = e.target.files\r\n companyLogo.value = files\r\n validateField('companyLogo', files)\r\n }\r\n\r\n const stepModel = computed(() => {\r\n return fieldsConfig\r\n })\r\n\r\n return {\r\n companyName,\r\n firstName,\r\n lastName,\r\n email,\r\n phone,\r\n companyAddress,\r\n companyPostalCode,\r\n companyCity,\r\n companyWebsite,\r\n companyLogo,\r\n isAnonymous,\r\n taxDeduction,\r\n cvr,\r\n basket,\r\n basketTotalPrice,\r\n showFirstNameErrorMessage,\r\n showLastNameErrorMessage,\r\n showEmailErrorMessage,\r\n showPhoneErrorMessage,\r\n showCvrErrorMessage,\r\n showCompanyNameErrorMessage,\r\n showCompanyAddressErrorMessage,\r\n stepModel,\r\n donationFor,\r\n onFileChange,\r\n setTaxDeduction,\r\n validateField,\r\n addressValidator\r\n }\r\n }\r\n}\r\n","import { render } from \"./StafetDonationStepVirksomhed.vue?vue&type=template&id=52a281ea\"\nimport script from \"./StafetDonationStepVirksomhed.vue?vue&type=script&lang=js\"\nexport * from \"./StafetDonationStepVirksomhed.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"D:\\\\a\\\\1\\\\s\\\\frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import _stafetCommonStepsProps from 'foundation/js/configurations/_stafetCommonStepsProps'\r\nimport StafetDonationStepPrivat from '../StafetDonationStepPrivat/StafetDonationStepPrivat.vue'\r\nimport StafetDonationStepVirksomhed from '../StafetDonationStepVirksomhed/StafetDonationStepVirksomhed.vue'\r\nimport { useStore } from 'vuex'\r\nimport { computed, onBeforeMount, ref } from 'vue'\r\n\r\nexport default {\r\n name: 'StafetDonationStepTwo',\r\n components: {\r\n StafetDonationStepPrivat,\r\n StafetDonationStepVirksomhed\r\n },\r\n props: _stafetCommonStepsProps,\r\n setup(props) {\r\n const store = useStore()\r\n const componentName = ref('')\r\n\r\n const userInputs = computed(() => {\r\n return store.state.donation.userInputs\r\n })\r\n\r\n onBeforeMount(() => {\r\n const donationType = userInputs.value.find(\r\n (item) => item.name === 'type'\r\n )\r\n\r\n if (donationType) {\r\n switch (donationType.value) {\r\n case 'Privat':\r\n componentName.value = 'StafetDonationStepPrivat'\r\n break\r\n case 'Virksomhed':\r\n componentName.value = 'StafetDonationStepVirksomhed'\r\n break\r\n default:\r\n if (props.previousStepCallback) {\r\n props.previousStepCallback()\r\n }\r\n }\r\n }\r\n })\r\n\r\n return {\r\n componentName\r\n }\r\n }\r\n}\r\n","import { render } from \"./StafetDonationStepTwo.vue?vue&type=template&id=2568157d\"\nimport script from \"./StafetDonationStepTwo.vue?vue&type=script&lang=js\"\nexport * from \"./StafetDonationStepTwo.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"D:\\\\a\\\\1\\\\s\\\\frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","export default [\r\n {\r\n hidden: false,\r\n step: 1,\r\n name: 'StafetDonationStepOne',\r\n label: 'formStepLabel1',\r\n completed: false\r\n },\r\n {\r\n hidden: false,\r\n step: 2,\r\n name: 'StafetDonationStepTwo',\r\n label: 'formStepLabel2',\r\n completed: false\r\n },\r\n {\r\n hidden: true,\r\n step: 3,\r\n name: 'FormStepSubmitting',\r\n completed: false\r\n }\r\n]\r\n","import StafetHeader from '../StafetHeader/StafetHeader.vue'\r\nimport StafetDonationStepOne from '../StafetDonationStepOne/StafetDonationStepOne.vue'\r\nimport StafetDonationStepTwo from '../StafetDonationStepTwo/StafetDonationStepTwo.vue'\r\nimport { useStore } from 'vuex'\r\nimport { computed, onMounted, ref } from 'vue'\r\nimport mapStafetHeaderSteps from 'foundation/js/stafet/mapStafetHeaderSteps'\r\nimport getCommonComputedFields from 'foundation/js/stafet/getCommonComputedFields'\r\nimport FormStepSubmitting from '../FormStepSubmitting/FormStepSubmitting.vue'\r\nimport stepsConfig from './config/stepsConfig'\r\nimport fieldValidator from 'foundation/js/stafet/fieldValidator'\r\nimport updateItemFromStorage from 'foundation/js/sessionStorageWrapper/updateItemFromStorage'\r\nimport sessionStorageIdentifierEnum from 'foundation/js/sessionStorageWrapper/sessionStorageIdentifierEnum'\r\nimport { scrollToFirstError } from '../../foundation/js/inputValidators/scrollToFirstError'\r\nimport updateBasket from './methods/updateBasket'\r\n\r\nexport default {\r\n name: 'StafetDonationFlow',\r\n components: {\r\n StafetHeader,\r\n StafetDonationStepOne,\r\n StafetDonationStepTwo,\r\n FormStepSubmitting\r\n },\r\n props: {\r\n stafetId: {\r\n type: String,\r\n required: true\r\n },\r\n loggedIn: {\r\n type: Boolean,\r\n required: false,\r\n default: false\r\n },\r\n holdList: {\r\n type: Array,\r\n required: false,\r\n default: []\r\n },\r\n userData: {\r\n type: Object,\r\n required: false,\r\n default: {}\r\n },\r\n holdId: {\r\n type: String,\r\n required: false,\r\n default: ''\r\n },\r\n deltagerId: {\r\n type: String,\r\n required: false,\r\n default: ''\r\n },\r\n minimumDonationAmount: {\r\n type: Number,\r\n required: false,\r\n default: 50\r\n }\r\n },\r\n setup(props) {\r\n const store = useStore()\r\n const displayInputError = ref(false)\r\n\r\n const labels = computed(() => {\r\n return store.state.labels.collections[\r\n 'SFLSupportWithDonationLabels'\r\n ]\r\n })\r\n\r\n // For testing purposes, making sure isFormUnavailable is truthy\r\n const isFormUnavailable = ref(props.formUnavailable ? props.formUnavailable : true)\r\n\r\n const headerSteps = computed(() => {\r\n return mapStafetHeaderSteps(\r\n steps.value.slice(0, steps.value.length - 1),\r\n currentStep.value,\r\n labels.value\r\n )\r\n })\r\n\r\n const isSubmitting = computed(() => {\r\n return store.state.donation.isSubmitting\r\n })\r\n\r\n onMounted(() => {\r\n store.dispatch('donation/stafetId', { stafetId: props.stafetId })\r\n store.dispatch('donation/steps', {\r\n steps: stepsConfig\r\n })\r\n\r\n store.dispatch('donation/donationFor', {\r\n donationFor:\r\n props.deltagerId !== ''\r\n ? 'participant'\r\n : props.holdId\r\n ? 'team'\r\n : 'none'\r\n })\r\n\r\n store.dispatch('donation/donationTeam', {\r\n team: props.holdId\r\n })\r\n store.dispatch('donation/donationParticipant', {\r\n participant: props.deltagerId\r\n })\r\n })\r\n\r\n const { userInputs, steps, currentStep, currentStepName } =\r\n getCommonComputedFields(store.state.donation)\r\n\r\n const handleStepCompleted = () => {\r\n steps.value.find(\r\n (item) => item.step === currentStep.value\r\n ).completed = true\r\n\r\n store.dispatch('donation/steps', {\r\n steps: steps.value\r\n })\r\n\r\n const unCompletedSteps = steps.value.filter(\r\n (item) => !item.completed\r\n )\r\n\r\n if (unCompletedSteps.length > 0) {\r\n store.dispatch('donation/currentStep', {\r\n step: unCompletedSteps[0].step\r\n })\r\n }\r\n }\r\n \r\n \r\n const nextStepCallback = (fields) => {\r\n fields.forEach((field) => {\r\n if (field.dependentField) {\r\n const dependentField = fields.find(\r\n (item) => item.name === field.dependentField\r\n );\r\n \r\n if (dependentField) {\r\n field.dependentFieldValue = dependentField.value;\r\n }\r\n }\r\n fieldValidator(field);\r\n });\r\n \r\n const isStepValid = fields.every((field) => field.isValid);\r\n if (isStepValid) {\r\n displayInputError.value = false;\r\n handleStepCompleted();\r\n store.dispatch('donation/userInputs', { inputs: fields });\r\n updateItemFromStorage(\r\n sessionStorageIdentifierEnum.STAFET_DONATION,\r\n fields\r\n );\r\n updateBasket(userInputs.value, labels.value, store);\r\n scrollTo(0, 0);\r\n } else {\r\n displayInputError.value = true;\r\n scrollToFirstError()\r\n }\r\n };\r\n \r\n\r\n const previousStepCallback = (fields) => {\r\n if (currentStep.value > 1) {\r\n store.dispatch('donation/currentStep', {\r\n step: currentStep.value - 1\r\n })\r\n \r\n steps.value.find(\r\n (item) => item.step === currentStep.value\r\n ).completed = false\r\n \r\n store.dispatch('donation/steps', {\r\n steps: steps.value\r\n })\r\n\r\n updateItemFromStorage(\r\n sessionStorageIdentifierEnum.STAFET_DONATION,\r\n fields\r\n )\r\n store.dispatch('donation/userInputs', { inputs: fields })\r\n scrollTo(0, 0) \r\n }\r\n }\r\n\r\n const submitCallback = async () => {\r\n // it expects a object with ok: true or false\r\n const response = await store.dispatch('donation/donationSubmit')\r\n return response\r\n }\r\n\r\n return {\r\n isFormUnavailable,\r\n headerSteps,\r\n labels,\r\n currentStepName,\r\n displayInputError,\r\n isSubmitting,\r\n nextStepCallback,\r\n previousStepCallback,\r\n submitCallback\r\n }\r\n }\r\n}\r\n","export default function (userInputs, labels, store) {\r\n const basket = []\r\n let label = ''\r\n\r\n const donationFor = store.state.donation.donationFor\r\n\r\n const donationAmount = userInputs.find((item) => item.name === 'amount')\r\n\r\n switch (donationFor) {\r\n case 'team':\r\n label = labels.yourInformationTotalDonationHold\r\n break\r\n case 'participant':\r\n label = labels.yourInformationTotalDonationDeltager\r\n break\r\n case 'stafet':\r\n label = labels.yourInformationTotalDonationStafet\r\n break\r\n default:\r\n label = labels.yourInformationTotalDonationStafet\r\n break\r\n }\r\n\r\n basket.push({\r\n label: label,\r\n amount: '',\r\n price: `${donationAmount ? donationAmount.value : 0} kr.`,\r\n intPrice: donationAmount.value\r\n })\r\n\r\n store.dispatch('donation/basket', { basket: basket })\r\n}\r\n","import { render } from \"./StafetDonationFlow.vue?vue&type=template&id=5a8d7fa6\"\nimport script from \"./StafetDonationFlow.vue?vue&type=script&lang=js\"\nexport * from \"./StafetDonationFlow.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"D:\\\\a\\\\1\\\\s\\\\frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\r\n\r\n\r\n \r\n \r\n\r\n \r\n \r\n
\r\n \r\n\r\n","\r\n\r\n\r\n \r\n \r\n {{ labels.yourSupportSelectorDropdownLabel }}\r\n
\r\n\r\n \r\n\r\n \r\n {{ labels.taendEtLysTitle }}\r\n
\r\n\r\n \r\n \r\n\r\n setDonationPerLightBag(e.target.value)\"\r\n />\r\n
\r\n\r\n nextStepCallback(stepModel)\"\r\n :nextStepLabel=\"labels.formNavigationNextStep1\"\r\n />\r\n \r\n\r\n","import { computed, onBeforeMount, ref } from 'vue'\r\nimport SupportSelector from '../SupportSelector/SupportSelector.vue'\r\nimport FormInputTextField from '../FormInputTextField/FormInputTextField.vue'\r\nimport FormInputDropdown from '../FormInputDropdown/FormInputDropdown.vue'\r\nimport StafetActions from '../StafetActions/StafetActions.vue'\r\nimport _stafetCommonStepsProps from '../../foundation/js/configurations/_stafetCommonStepsProps'\r\nimport { useStore } from 'vuex'\r\nimport getItemFromStorage from 'foundation/js/sessionStorageWrapper/getItemFromStorage'\r\nimport sessionStorageIdentifierEnum from 'foundation/js/sessionStorageWrapper/sessionStorageIdentifierEnum'\r\nimport getFieldValue from 'foundation/js/stafet/getFieldValue'\r\n\r\nexport default {\r\n name: 'StafetDonationTaendLysStepOne',\r\n components: {\r\n SupportSelector,\r\n FormInputTextField,\r\n FormInputDropdown,\r\n StafetActions\r\n },\r\n props: _stafetCommonStepsProps,\r\n setup(props) {\r\n const store = useStore()\r\n const donationAmount = ref(0)\r\n const amount = ref(props.lysposeMinimumAmount)\r\n const supportSelector = ref({})\r\n\r\n onBeforeMount(() => {\r\n const storedFields = getItemFromStorage(\r\n sessionStorageIdentifierEnum.STAFET_DONATION\r\n )\r\n\r\n if (storedFields) {\r\n if (getFieldValue(storedFields, 'donationAmount')) {\r\n donationAmount.value = getFieldValue(\r\n storedFields,\r\n 'donationAmount'\r\n )\r\n }\r\n\r\n if (getFieldValue(storedFields, 'amount')) {\r\n amount.value = getFieldValue(storedFields, 'amount')\r\n }\r\n\r\n if (getFieldValue(storedFields, 'donationFor')) {\r\n store.dispatch('donation/donationFor', {\r\n donationFor: getFieldValue(storedFields, 'donationFor')\r\n })\r\n }\r\n\r\n if (getFieldValue(storedFields, 'donationTeam')) {\r\n store.dispatch('donation/donationTeam', {\r\n team: getFieldValue(\r\n storedFields,\r\n 'donationTeam'\r\n ).toString()\r\n })\r\n }\r\n\r\n if (getFieldValue(storedFields, 'donationParticipant')) {\r\n store.dispatch('donation/donationParticipant', {\r\n participant: getFieldValue(\r\n storedFields,\r\n 'donationParticipant'\r\n )\r\n })\r\n }\r\n }\r\n })\r\n\r\n const stepModel = computed(() => {\r\n return [\r\n {\r\n name: 'donationAmount',\r\n value: parseInt(donationAmount.value),\r\n isValid: false,\r\n validator: (value) => {\r\n return value > 0\r\n }\r\n },\r\n {\r\n name: 'amount',\r\n value: parseInt(amount.value),\r\n isValid: false,\r\n validator: (value) => {\r\n return donationAmount.value > 0\r\n ? value >= props.lysposeMinimumAmount\r\n : true\r\n }\r\n },\r\n {\r\n name: 'donationFor',\r\n value: supportSelector.value.donationFor,\r\n isValid: supportSelector.value.isValid,\r\n validator: () => {\r\n return supportSelector.value.isValid\r\n }\r\n },\r\n {\r\n name: 'donationTeam',\r\n value: supportSelector.value.donationTeam,\r\n isValid: supportSelector.value.isValid,\r\n validator: () => {\r\n return supportSelector.value.isValid\r\n }\r\n },\r\n {\r\n name: 'donationParticipant',\r\n value: supportSelector.value.donationParticipant,\r\n isValid: supportSelector.value.isValid,\r\n validator: () => {\r\n return supportSelector.value.isValid\r\n }\r\n }\r\n ]\r\n })\r\n\r\n const updateSupportSelector = (data) => {\r\n supportSelector.value = data\r\n }\r\n\r\n const setDonationPerLightBag = (value) => {\r\n amount.value = value\r\n }\r\n\r\n const showDonationAmoutErrorMessage = computed(() => {\r\n return props.displayInputError && donationAmount.value <= 0\r\n })\r\n\r\n const showDonationPerLightBagErrorMessage = computed(() => {\r\n return (\r\n props.displayInputError &&\r\n amount.value < props.lysposeMinimumAmount\r\n )\r\n })\r\n\r\n return {\r\n donationAmount,\r\n amount,\r\n stepModel,\r\n updateSupportSelector,\r\n setDonationPerLightBag,\r\n showDonationAmoutErrorMessage,\r\n showDonationPerLightBagErrorMessage\r\n }\r\n }\r\n}\r\n","import { render } from \"./StafetDonationTaendLysStepOne.vue?vue&type=template&id=42684492\"\nimport script from \"./StafetDonationTaendLysStepOne.vue?vue&type=script&lang=js\"\nexport * from \"./StafetDonationTaendLysStepOne.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"D:\\\\a\\\\1\\\\s\\\\frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\r\n\r\n\r\n \r\n \r\n {{ labels.taendEtLysCustomizeLysposeTitle }}\r\n
\r\n\r\n \r\n\r\n nextStepCallback(stepModel)\"\r\n :nextStepLabel=\"labels.formNavigationNextStep\"\r\n :previousStepCallback=\"() => previousStepCallback(stepModel)\"\r\n :previousStepLabel=\"labels.formNavigationPrevStep\"\r\n />\r\n \r\n\r\n","import { computed, onBeforeMount, ref } from 'vue'\r\nimport FormCheckbox from '../FormCheckbox/FormCheckbox.vue'\r\nimport FormInputDropdown from '../FormInputDropdown/FormInputDropdown.vue'\r\nimport FormInputTextField from '../FormInputTextField/FormInputTextField.vue'\r\nimport FormInputTextarea from '../FormInputTextarea/FormInputTextarea.vue'\r\nimport StafetLysPoserList from '../StafetLysPoserList/StafetLysPoserList.vue'\r\nimport StafetActions from '../StafetActions/StafetActions.vue'\r\nimport _stafetCommonStepsProps from '../../foundation/js/configurations/_stafetCommonStepsProps'\r\nimport { useStore } from 'vuex'\r\nimport getItemFromStorage from 'foundation/js/sessionStorageWrapper/getItemFromStorage'\r\nimport sessionStorageIdentifierEnum from 'foundation/js/sessionStorageWrapper/sessionStorageIdentifierEnum'\r\nimport getFieldValue from 'foundation/js/stafet/getFieldValue'\r\nimport isBoolean from 'foundation/js/inputValidators/isBoolean'\r\n\r\nexport default {\r\n name: 'StafetDonationTaendLysStepTwo',\r\n components: {\r\n FormCheckbox,\r\n FormInputDropdown,\r\n FormInputTextField,\r\n FormInputTextarea,\r\n StafetLysPoserList,\r\n StafetActions\r\n },\r\n props: _stafetCommonStepsProps,\r\n setup(props) {\r\n const store = useStore()\r\n const donationPerLightBag = ref(props.lysposeMinimumAmount)\r\n const isLysposerDedicated = ref(false)\r\n const addPersonalNote = ref(false)\r\n const lysposeSubmissionModels = ref([])\r\n const lightBagMeta = ref({})\r\n\r\n const donationAmount = computed(() => {\r\n const userInputs = store.state.donation.userInputs\r\n const amount = userInputs.find(\r\n (input) => input.name === 'donationAmount'\r\n )\r\n return amount ? amount.value : 0\r\n })\r\n\r\n onBeforeMount(() => {\r\n const storedFields = getItemFromStorage(\r\n sessionStorageIdentifierEnum.STAFET_DONATION\r\n )\r\n\r\n if (storedFields) {\r\n if (getFieldValue(storedFields, 'lysposeSubmissionModels')) {\r\n lysposeSubmissionModels.value = getFieldValue(\r\n storedFields,\r\n 'lysposeSubmissionModels'\r\n )\r\n }\r\n\r\n if (getFieldValue(storedFields, 'isLysposerDedicated')) {\r\n isLysposerDedicated.value = getFieldValue(\r\n storedFields,\r\n 'isLysposerDedicated'\r\n )\r\n }\r\n\r\n if (getFieldValue(storedFields, 'addPersonalNote')) {\r\n addPersonalNote.value = getFieldValue(\r\n storedFields,\r\n 'addPersonalNote'\r\n )\r\n }\r\n }\r\n })\r\n\r\n const StafetFlowLightBagsMetaListLabels = {\r\n isLysposeDedicatedCheckboxLabel:\r\n props.labels.taendEtLysCustomizeLysposeBoolDedicatedLabel,\r\n personalNoteCheckboxLabel:\r\n props.labels.taendEtLysCustomizeLysposeBoolOwnNoteLabel,\r\n personalizeLightBagsTitle: props.labels.taendEtLysLysposeTitle,\r\n lightDedicatedToTextLabel:\r\n props.labels.taendEtLysLysposeDedicatedToLabel,\r\n lightDedicatedToErrorMessage:\r\n props.labels.taendEtLysLysposeDedicatedToErrorMessage,\r\n lightDedicatedToHelpTextLabel:\r\n props.labels.taendEtLysLysposeDedicatedToSubtext,\r\n personalNoteTextLabel:\r\n props.labels.taendEtLysLysposePersonalNoteLabel,\r\n personalNoteHelpTextLabel:\r\n props.labels.taendEtLysLysposePersonalNoteSubtext,\r\n personalNoteErrorMessage:\r\n props.labels.taendEtLysLysposePersonalNoteErrorMessage,\r\n dedicationTypeTextLabel:\r\n props.labels.taendEtLysLysposeDedicatedTypeLabel,\r\n dedicationTypePlaceholder:\r\n props.labels.taendEtLysLysposeDedicatedTypePlaceholder,\r\n dedicationTypeErrorMessage:\r\n props.labels.taendEtLysLysposeDedicatedTypeErrorMessage,\r\n inMemoryOf: props.labels.taendEtLysLysposeDedicatedTypeInMemoryOf,\r\n inSupportOf: props.labels.taendEtLysLysposeDedicatedTypeInSupportOf\r\n }\r\n\r\n const stepModel = computed(() => {\r\n const array = []\r\n\r\n if (donationAmount.value > 0) {\r\n array.push({\r\n name: 'lysposeSubmissionModels',\r\n value: lightBagMeta.value.donationItems,\r\n isValid: lightBagMeta.value.isValid,\r\n validator: () => {\r\n return lightBagMeta.value.isValid\r\n }\r\n })\r\n\r\n array.push({\r\n name: 'isLysposerDedicated',\r\n value: lightBagMeta.value.isLysposerDedicated,\r\n isValid: true,\r\n validator: () => isBoolean\r\n })\r\n\r\n array.push({\r\n name: 'addPersonalNote',\r\n value: lightBagMeta.value.addPersonalNote,\r\n isValid: true,\r\n validator: () => isBoolean\r\n })\r\n }\r\n\r\n return array\r\n })\r\n\r\n const updateLightBagMeta = (data) => {\r\n lightBagMeta.value = data\r\n }\r\n\r\n return {\r\n donationPerLightBag,\r\n isLysposerDedicated,\r\n addPersonalNote,\r\n lysposeSubmissionModels,\r\n donationAmount,\r\n lightBagMeta,\r\n stepModel,\r\n StafetFlowLightBagsMetaListLabels,\r\n updateLightBagMeta\r\n }\r\n }\r\n}\r\n","import { render } from \"./StafetDonationTaendLysStepTwo.vue?vue&type=template&id=cc66a5e6\"\nimport script from \"./StafetDonationTaendLysStepTwo.vue?vue&type=script&lang=js\"\nexport * from \"./StafetDonationTaendLysStepTwo.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"D:\\\\a\\\\1\\\\s\\\\frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\r\n\r\n\r\n \r\n \r\n {{ labels.yourInformationTitle }}\r\n
\r\n\r\n \r\n\r\n \r\n\r\n nextStepCallback(stepModel)\"\r\n :nextStepLabel=\"labels.formNavigationLastStep\"\r\n :previousStepCallback=\"() => previousStepCallback(stepModel)\"\r\n :previousStepLabel=\"labels.formNavigationPreviousStep\"\r\n />\r\n \r\n\r\n","import emailValidator from 'foundation/js/inputValidators/emailValidator'\r\nimport isBoolean from 'foundation/js/inputValidators/isBoolean'\r\nimport nameValidator from 'foundation/js/inputValidators/nameValidator'\r\n\r\nexport default [\r\n {\r\n name: 'firstName',\r\n value: '',\r\n isValid: false,\r\n validator: nameValidator\r\n },\r\n {\r\n name: 'lastName',\r\n value: '',\r\n isValid: false,\r\n validator: nameValidator\r\n },\r\n {\r\n name: 'email',\r\n value: '',\r\n isValid: false,\r\n validator: emailValidator\r\n },\r\n {\r\n name: 'isAnonymous',\r\n value: false,\r\n isValid: true,\r\n validator: isBoolean\r\n }\r\n]\r\n","import { useStore } from 'vuex'\r\nimport _stafetCommonStepsProps from '../../foundation/js/configurations/_stafetCommonStepsProps'\r\nimport FormInputTextField from '../FormInputTextField/FormInputTextField.vue'\r\nimport FormCheckbox from '../FormCheckbox/FormCheckbox.vue'\r\nimport StafetActions from '../StafetActions/StafetActions.vue'\r\nimport StafetPayment from '../StafetPayment/StafetPayment.vue'\r\nimport { ref, computed, onBeforeMount } from 'vue'\r\nimport fieldsConfig from './config/fieldsConfig'\r\nimport getItemFromStorage from 'foundation/js/sessionStorageWrapper/getItemFromStorage'\r\nimport sessionStorageIdentifierEnum from 'foundation/js/sessionStorageWrapper/sessionStorageIdentifierEnum'\r\nimport fieldValidator from 'foundation/js/stafet/fieldValidator'\r\nimport nameValidator from 'foundation/js/inputValidators/nameValidator'\r\nimport emailValidator from 'foundation/js/inputValidators/emailValidator'\r\nimport getFieldValue from 'foundation/js/stafet/getFieldValue'\r\n\r\nexport default {\r\n name: 'StafetDonationTaendLysStepThree',\r\n components: {\r\n FormInputTextField,\r\n FormCheckbox,\r\n StafetActions,\r\n StafetPayment\r\n },\r\n props: _stafetCommonStepsProps,\r\n setup(props) {\r\n const store = useStore()\r\n const gtmActive = !!window?.dataLayer?.find(\r\n (element) => element['gtm.start']\r\n ) // check if gtm is active \r\n\r\n const firstName = ref(props.userData?.firstName ?? '')\r\n const lastName = ref(props.userData?.lastName ?? '')\r\n const email = ref(props.userData?.email ?? '')\r\n const isAnonymous = ref(props.userData?.isAnonymous ?? false)\r\n\r\n const basket = computed(() => {\r\n return store.state.donation.basket\r\n })\r\n\r\n const basketTotalPrice = computed(() => {\r\n return store.state.donation.basketTotalPrice\r\n })\r\n\r\n onBeforeMount(() => {\r\n const storedFields = getItemFromStorage(\r\n sessionStorageIdentifierEnum.STAFET_DONATION\r\n )\r\n\r\n if (storedFields) {\r\n updateLocalRefs([\r\n {\r\n name: 'firstName',\r\n value:\r\n getFieldValue(storedFields, 'firstName') ??\r\n firstName.value\r\n },\r\n {\r\n name: 'lastName',\r\n value:\r\n getFieldValue(storedFields, 'lastName') ??\r\n lastName.value\r\n },\r\n {\r\n name: 'email',\r\n value:\r\n getFieldValue(storedFields, 'email') ?? email.value\r\n },\r\n {\r\n name: 'isAnonymous',\r\n value:\r\n getFieldValue(storedFields, 'isAnonymous') ??\r\n isAnonymous.value\r\n }\r\n ])\r\n }\r\n\r\n if (!gtmActive) return\r\n const orderId = new URLSearchParams(document.location.search).get(\r\n 'orderId'\r\n )\r\n if (orderId)\r\n store.dispatch('main/getTrackingData', { orderId })\r\n })\r\n\r\n const updateLocalRefs = (fields) => {\r\n fields.forEach((field) => {\r\n if (field.value === undefined || field.value === null) return\r\n fieldsConfig.find((item) => item.name === field.name).value =\r\n field.value\r\n switch (field.name) {\r\n case 'firstName':\r\n firstName.value = field.value\r\n return\r\n case 'lastName':\r\n lastName.value = field.value\r\n return\r\n case 'email':\r\n email.value = field.value\r\n return\r\n case 'isAnonymous':\r\n isAnonymous.value = field.value\r\n return\r\n default:\r\n return\r\n }\r\n })\r\n }\r\n\r\n const validateField = (fieldName, value) => {\r\n fieldsConfig.find((item) => item.name === fieldName).value = value\r\n const field = fieldsConfig.find((field) => field.name === fieldName)\r\n if (field) {\r\n field.value = value\r\n fieldValidator(field)\r\n }\r\n }\r\n\r\n const showFirstNameErrorMessage = computed(() => {\r\n return !nameValidator(firstName.value) && props.displayInputError\r\n })\r\n\r\n const showLastNameErrorMessage = computed(() => {\r\n return !nameValidator(lastName.value) && props.displayInputError\r\n })\r\n\r\n const showEmailErrorMessage = computed(() => {\r\n return !emailValidator(email.value) && props.displayInputError\r\n })\r\n\r\n const stepModel = computed(() => {\r\n return fieldsConfig\r\n })\r\n\r\n return {\r\n firstName,\r\n lastName,\r\n email,\r\n isAnonymous,\r\n basket,\r\n basketTotalPrice,\r\n stepModel,\r\n validateField,\r\n showFirstNameErrorMessage,\r\n showLastNameErrorMessage,\r\n showEmailErrorMessage\r\n }\r\n }\r\n}\r\n","import { render } from \"./StafetDonationTaendLysStepThree.vue?vue&type=template&id=7aa64a5a\"\nimport script from \"./StafetDonationTaendLysStepThree.vue?vue&type=script&lang=js\"\nexport * from \"./StafetDonationTaendLysStepThree.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"D:\\\\a\\\\1\\\\s\\\\frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","export default [\r\n {\r\n hidden: false, // hidden - if true, the step will not be shown steps header\r\n step: 1, // order - manual number. The order of the array determins the steporder\r\n name: 'StafetDonationTaendLysStepOne', // stepname. Must correspond to a component declared under \"components\"\r\n label: 'formStepLabel1',\r\n completed: false // are all fields valid?\r\n },\r\n {\r\n hidden: false, // hidden - if true, the step will not be shown steps header\r\n step: 2, // order - manual number. The order of the array determins the steporder\r\n name: 'StafetDonationTaendLysStepTwo', // stepname. Must correspond to a component declared under \"components\"\r\n label: 'formStepLabel2',\r\n completed: false // are all fields valid?\r\n },\r\n {\r\n hidden: false, // hidden - if true, the step will not be shown steps header\r\n step: 3, // order - manual number. The order of the array determins the steporder\r\n name: 'StafetDonationTaendLysStepThree', // stepname. Must correspond to a component declared under \"components\"\r\n label: 'formStepLabel3',\r\n completed: false // are all fields valid?\r\n },\r\n {\r\n hidden: true, // hidden - if true, the step will not be shown steps header\r\n step: 4, // order - manual number. The order of the array determins the steporder\r\n name: 'FormStepSubmitting', // stepname. Must correspond to a component declared under \"components\"\r\n label: 'submitErrorTitle',\r\n completed: false // are all fields valid?\r\n }\r\n]\r\n","import { computed, onMounted, ref } from 'vue'\r\nimport StafetHeader from '../StafetHeader/StafetHeader.vue'\r\nimport StafetDonationTaendLysStepOne from '../StafetDonationTaendLysStepOne/StafetDonationTaendLysStepOne.vue'\r\nimport StafetDonationTaendLysStepTwo from '../StafetDonationTaendLysStepTwo/StafetDonationTaendLysStepTwo.vue'\r\nimport StafetDonationTaendLysStepThree from '../StafetDonationTaendLysStepThree/StafetDonationTaendLysStepThree.vue'\r\nimport { scrollToFirstError } from '../../foundation/js/inputValidators/scrollToFirstError'\r\nimport FormStepSubmitting from '../FormStepSubmitting/FormStepSubmitting.vue'\r\nimport { useStore } from 'vuex'\r\nimport updateItemFromStorage from 'foundation/js/sessionStorageWrapper/updateItemFromStorage'\r\nimport mapStafetHeaderSteps from 'foundation/js/stafet/mapStafetHeaderSteps'\r\nimport sessionStorageIdentifierEnum from 'foundation/js/sessionStorageWrapper/sessionStorageIdentifierEnum'\r\nimport stepsConfig from './config/stepsConfig'\r\nimport getCommonComputedFields from 'foundation/js/stafet/getCommonComputedFields'\r\nimport fieldValidator from 'foundation/js/stafet/fieldValidator'\r\nimport updateBasket from './methods/updateBasket'\r\n\r\nexport default {\r\n name: 'StafetDonationTaendLysFlow',\r\n components: {\r\n StafetHeader,\r\n StafetDonationTaendLysStepOne,\r\n StafetDonationTaendLysStepTwo,\r\n StafetDonationTaendLysStepThree,\r\n FormStepSubmitting\r\n },\r\n props: {\r\n stafetId: {\r\n type: String,\r\n required: true\r\n },\r\n loggedIn: {\r\n type: Boolean,\r\n required: false,\r\n default: false\r\n },\r\n holdList: {\r\n type: Array,\r\n required: false,\r\n default: []\r\n },\r\n userData: {\r\n type: Object,\r\n required: false,\r\n default: {}\r\n },\r\n lysposeMinimumAmount: {\r\n type: Number,\r\n required: false,\r\n default: 50\r\n },\r\n holdId: {\r\n type: String,\r\n required: false,\r\n default: ''\r\n },\r\n deltagerId: {\r\n type: String,\r\n required: false,\r\n default: ''\r\n }\r\n },\r\n setup(props) {\r\n const store = useStore()\r\n const displayInputError = ref(false)\r\n\r\n const labels = computed(() => {\r\n return store.state.labels.collections['SFLSupportWithLysposeLabels']\r\n })\r\n\r\n const isSubmitting = computed(() => {\r\n return store.state.donation.isSubmitting\r\n })\r\n\r\n const headerSteps = computed(() => {\r\n return mapStafetHeaderSteps(\r\n steps.value,\r\n currentStep.value,\r\n labels.value\r\n )\r\n })\r\n\r\n onMounted(() => {\r\n store.dispatch('donation/stafetId', { stafetId: props.stafetId })\r\n store.dispatch('donation/steps', {\r\n steps: stepsConfig\r\n })\r\n\r\n store.dispatch('donation/donationFor', {\r\n donationFor:\r\n props.deltagerId !== ''\r\n ? 'participant'\r\n : props.holdId\r\n ? 'team'\r\n : 'none'\r\n })\r\n store.dispatch('donation/donationTeam', {\r\n team: props.holdId\r\n })\r\n store.dispatch('donation/donationParticipant', {\r\n participant: props.deltagerId\r\n })\r\n })\r\n\r\n const { userInputs, steps, currentStep, currentStepName } =\r\n getCommonComputedFields(store.state.donation)\r\n\r\n const handleStepCompleted = () => {\r\n steps.value.find(\r\n (item) => item.step === currentStep.value\r\n ).completed = true\r\n\r\n store.dispatch('donation/steps', {\r\n steps: steps.value\r\n })\r\n\r\n const unCompletedSteps = steps.value.filter(\r\n (item) => !item.completed\r\n )\r\n\r\n if (unCompletedSteps.length > 0) {\r\n store.dispatch('donation/currentStep', {\r\n step: unCompletedSteps[0].step\r\n })\r\n }\r\n }\r\n\r\n \r\n \r\n \r\n const nextStepCallback = (fields) => {\r\n fields.forEach((field) => {\r\n if (field.dependentField) {\r\n const dependentField = fields.find(\r\n (item) => item.name === field.dependentField\r\n );\r\n \r\n if (dependentField) {\r\n field.dependentFieldValue = dependentField.value\r\n }\r\n }\r\n fieldValidator(field)\r\n });\r\n \r\n const isStepValid = fields.every((field) => field.isValid)\r\n \r\n if (isStepValid) {\r\n displayInputError.value = false\r\n handleStepCompleted();\r\n store.dispatch('donation/userInputs', { inputs: fields })\r\n updateItemFromStorage(\r\n sessionStorageIdentifierEnum.STAFET_DONATION,\r\n fields\r\n );\r\n updateBasket(userInputs.value, labels.value, store)\r\n scrollTo(0, 0); \r\n } else {\r\n displayInputError.value = true\r\n scrollToFirstError()\r\n }\r\n };\r\n \r\n \r\n\r\n const previousStepCallback = (fields) => {\r\n if (currentStep.value > 1) {\r\n store.dispatch('donation/currentStep', {\r\n step: currentStep.value - 1\r\n })\r\n\r\n steps.value.find(\r\n (item) => item.step === currentStep.value\r\n ).completed = false\r\n\r\n store.dispatch('donation/steps', {\r\n steps: steps.value\r\n })\r\n\r\n store.dispatch('donation/userInputs', { inputs: fields })\r\n updateItemFromStorage(\r\n sessionStorageIdentifierEnum.STAFET_DONATION,\r\n fields\r\n )\r\n scrollTo(0, 0) \r\n }\r\n }\r\n\r\n const submitCallback = async () => {\r\n // it expects a object with ok: true or false\r\n const response = await store.dispatch(\r\n 'donation/donationStotLysSubmit'\r\n )\r\n return response\r\n }\r\n\r\n return {\r\n headerSteps,\r\n labels,\r\n currentStepName,\r\n displayInputError,\r\n isSubmitting,\r\n nextStepCallback,\r\n previousStepCallback,\r\n submitCallback\r\n }\r\n }\r\n}\r\n","export default function (userInputs, labels, store) {\r\n const basket = []\r\n const donationAmount = userInputs.find(\r\n (item) => item.name === 'donationAmount'\r\n )\r\n const amount = userInputs.find((item) => item.name === 'amount')\r\n\r\n if (donationAmount && donationAmount.value && amount && amount.value) {\r\n basket.push({\r\n label: labels.yourInformationTotalTaendteLysLabel,\r\n amount: `${donationAmount.value} ${labels.taendEtLysUnitLabel} (á ${amount.value} kr.)`,\r\n price: `${donationAmount.value * amount.value} kr.`,\r\n intPrice: donationAmount.value * amount.value\r\n })\r\n }\r\n\r\n store.dispatch('donation/basket', { basket: basket })\r\n}\r\n","import { render } from \"./StafetDonationTaendLysFlow.vue?vue&type=template&id=e967e27e\"\nimport script from \"./StafetDonationTaendLysFlow.vue?vue&type=script&lang=js\"\nexport * from \"./StafetDonationTaendLysFlow.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"D:\\\\a\\\\1\\\\s\\\\frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\r\n\r\n\r\n \r\n \r\n\r\n \r\n \r\n
\r\n \r\n\r\n","\r\n\r\n\r\n \r\n \r\n {{ labels.aboutYourHoldTitle }}\r\n
\r\n\r\n \r\n validateField('teamName', e.target.value)\"\r\n />\r\n\r\n validateField('donationGoal', e.target.value)\"\r\n :helpMessageLabel=\"labels.aboutYourHoldDonationGoalSubtext\"\r\n />\r\n
\r\n\r\n
\r\n\r\n \r\n
\r\n {{ labels.personalizeYourHoldTitle }}\r\n
\r\n\r\n
\r\n\r\n
\r\n\r\n \r\n\r\n \r\n validateField('description', e.target.value)\"\r\n />\r\n\r\n validateField('slogan', e.target.value)\"\r\n />\r\n
\r\n\r\n nextStepCallback(stepModel)\"\r\n :nextStepLabel=\"labels.formNavigationNextStep1\"\r\n />\r\n \r\n\r\n","import nonEmptyStringValidator from 'foundation/js/inputValidators/nonEmptyStringValidator'\r\n\r\nexport default [\r\n {\r\n name: 'teamName',\r\n value: '',\r\n isValid: false,\r\n validator: nonEmptyStringValidator\r\n },\r\n {\r\n name: 'donationGoal',\r\n value: 0,\r\n isValid: false,\r\n validator: (value) => value > 0\r\n },\r\n {\r\n name: 'logo',\r\n value: null,\r\n isValid: false,\r\n validator: () => true\r\n },\r\n {\r\n name: 'description',\r\n value: '',\r\n isValid: false,\r\n validator: (value) => value.length <= 250\r\n },\r\n {\r\n name: 'slogan',\r\n value: '',\r\n isValid: false,\r\n validator: (value) => value.length <= 100\r\n }\r\n]\r\n","import { computed, onBeforeMount, ref } from 'vue'\r\nimport FormInputTextField from '../FormInputTextField/FormInputTextField.vue'\r\nimport FormInputTextarea from '../FormInputTextarea/FormInputTextarea.vue'\r\nimport StafetActions from '../StafetActions/StafetActions.vue'\r\nimport _stafetCommonStepsProps from 'foundation/js/configurations/_stafetCommonStepsProps'\r\nimport nonEmptyStringValidator from 'foundation/js/inputValidators/nonEmptyStringValidator'\r\nimport fieldsConfig from './config/fieldsConfig'\r\nimport fieldValidator from 'foundation/js/stafet/fieldValidator'\r\nimport getItemFromStorage from 'foundation/js/sessionStorageWrapper/getItemFromStorage'\r\nimport sessionStorageIdentifierEnum from 'foundation/js/sessionStorageWrapper/sessionStorageIdentifierEnum'\r\nimport getFieldValue from 'foundation/js/stafet/getFieldValue'\r\n\r\nexport default {\r\n name: 'StafetOpretHoldStepOne',\r\n components: {\r\n FormInputTextField,\r\n FormInputTextarea,\r\n StafetActions\r\n },\r\n props: _stafetCommonStepsProps,\r\n setup(props) {\r\n const teamName = ref('')\r\n const donationGoal = ref(0)\r\n const logo = ref(null)\r\n const description = ref('')\r\n const slogan = ref('')\r\n\r\n onBeforeMount(() => {\r\n const storedFields = getItemFromStorage(\r\n sessionStorageIdentifierEnum.STAFET_CREATE_A_TEAM\r\n )\r\n\r\n if (props.holdData) {\r\n if (props.holdData.teamName) {\r\n teamName.value = props.holdData.teamName\r\n validateField('teamName', teamName.value)\r\n }\r\n\r\n if (props.holdData.donationGoal) {\r\n donationGoal.value = props.holdData.donationGoal\r\n validateField('donationGoal', donationGoal.value)\r\n }\r\n\r\n if (props.holdData.description) {\r\n description.value = props.holdData.description\r\n validateField('description', description.value)\r\n }\r\n\r\n if (props.holdData.slogan) {\r\n slogan.value = props.holdData.slogan\r\n validateField('slogan', slogan.value)\r\n }\r\n }\r\n\r\n if (storedFields) {\r\n if (getFieldValue(storedFields, 'teamName')) {\r\n teamName.value = getFieldValue(storedFields, 'teamName')\r\n validateField('teamName', teamName.value)\r\n }\r\n\r\n if (getFieldValue(storedFields, 'donationGoal')) {\r\n donationGoal.value = getFieldValue(\r\n storedFields,\r\n 'donationGoal'\r\n )\r\n validateField('donationGoal', donationGoal.value)\r\n }\r\n\r\n if (getFieldValue(storedFields, 'description')) {\r\n description.value = getFieldValue(\r\n storedFields,\r\n 'description'\r\n )\r\n validateField('description', description.value)\r\n }\r\n\r\n if (getFieldValue(storedFields, 'slogan')) {\r\n slogan.value = getFieldValue(storedFields, 'slogan')\r\n validateField('slogan', slogan.value)\r\n }\r\n }\r\n })\r\n\r\n const validateField = (fieldName, value) => {\r\n fieldsConfig.find((item) => item.name === fieldName).value = value\r\n const field = fieldsConfig.find((field) => field.name === fieldName)\r\n if (field) {\r\n field.value = value\r\n fieldValidator(field)\r\n }\r\n }\r\n \r\n const onFileChange = (e) => {\r\n const files = e.target.files\r\n logo.value = files\r\n validateField('logo', files)\r\n }\r\n \r\n const showDescriptionErrorMessage = computed(() => {\r\n const field = fieldsConfig.find((field) => field.name === \"description\")\r\n return !field.validator(description.value) && props.displayInputError\r\n })\r\n\r\n const showTeamNameErrorMessage = computed(() => {\r\n return (\r\n !nonEmptyStringValidator(teamName.value) &&\r\n props.displayInputError\r\n )\r\n })\r\n\r\n const showDonationGoalErrorMessage = computed(() => {\r\n return donationGoal.value <= 0 && props.displayInputError\r\n })\r\n\r\n const showSloganErrorMessage = computed(() => {\r\n const field = fieldsConfig.find((field) => field.name === \"slogan\")\r\n return !field.validator(slogan.value) && props.displayInputError\r\n })\r\n\r\n const stepModel = computed(() => {\r\n return fieldsConfig\r\n })\r\n\r\n return {\r\n teamName,\r\n donationGoal,\r\n logo,\r\n description,\r\n slogan,\r\n showTeamNameErrorMessage,\r\n showDonationGoalErrorMessage,\r\n showDescriptionErrorMessage,\r\n showSloganErrorMessage,\r\n stepModel,\r\n validateField,\r\n onFileChange\r\n }\r\n }\r\n}\r\n","import { render } from \"./StafetOpretHoldStepOne.vue?vue&type=template&id=20e5d8e2\"\nimport script from \"./StafetOpretHoldStepOne.vue?vue&type=script&lang=js\"\nexport * from \"./StafetOpretHoldStepOne.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"D:\\\\a\\\\1\\\\s\\\\frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","export default [\r\n {\r\n hidden: false,\r\n step: 1,\r\n name: 'StafetOpretHoldStepOne',\r\n label: 'formStepLabel1',\r\n completed: false\r\n },\r\n {\r\n hidden: true, // hidden - if true, the step will not be shown steps header\r\n step: 2, // order - manual number. The order of the array determins the steporder\r\n name: 'FormStepSubmitting', // stepname. Must correspond to a component declared under \"components\"\r\n label: 'submitErrorTitle',\r\n completed: false // are all fields valid?\r\n }\r\n]\r\n","import { useStore } from 'vuex'\r\nimport { computed, ref, onMounted } from 'vue'\r\nimport StafetHeader from '../StafetHeader/StafetHeader.vue'\r\nimport StafetOpretHoldStepOne from '../StafetOpretHoldStepOne/StafetOpretHoldStepOne.vue'\r\nimport FormStepSubmitting from '../FormStepSubmitting/FormStepSubmitting.vue'\r\nimport mapStafetHeaderSteps from 'foundation/js/stafet/mapStafetHeaderSteps'\r\nimport getCommonComputedFields from 'foundation/js/stafet/getCommonComputedFields'\r\nimport updateItemFromStorage from 'foundation/js/sessionStorageWrapper/updateItemFromStorage'\r\nimport sessionStorageIdentifierEnum from 'foundation/js/sessionStorageWrapper/sessionStorageIdentifierEnum'\r\nimport { scrollToFirstError } from '../../foundation/js/inputValidators/scrollToFirstError'\r\nimport fieldValidator from 'foundation/js/stafet/fieldValidator'\r\nimport stepsConfig from './config/stepsConfig'\r\n\r\nexport default {\r\n name: 'StafetEditHoldFlow',\r\n components: {\r\n StafetHeader,\r\n StafetOpretHoldStepOne,\r\n FormStepSubmitting\r\n },\r\n props: {\r\n stafetId: {\r\n type: String,\r\n required: true,\r\n default: null\r\n },\r\n holdList: {\r\n type: Array,\r\n required: true,\r\n default: []\r\n },\r\n holdData: {\r\n type: Object,\r\n required: false,\r\n default: {}\r\n },\r\n userData: {\r\n type: Object,\r\n required: false,\r\n default: {}\r\n },\r\n loggedIn: {\r\n type: Boolean,\r\n required: true,\r\n default: false\r\n }\r\n },\r\n setup(props) {\r\n const store = useStore()\r\n const displayInputError = ref(false)\r\n const holdKode = props.holdData.holdKode\r\n const labels = computed(() => {\r\n return store.state.labels.collections['SFLCreateHoldLabels']\r\n })\r\n\r\n const isSubmitting = computed(() => {\r\n return store.state.stafet.isSubmitting\r\n })\r\n\r\n const headerSteps = computed(() => {\r\n return mapStafetHeaderSteps(\r\n steps.value,\r\n currentStep.value,\r\n labels.value\r\n )\r\n })\r\n\r\n onMounted(() => {\r\n store.dispatch('stafet/stafetId', { stafetId: props.stafetId })\r\n store.dispatch('stafet/steps', {\r\n steps: stepsConfig\r\n })\r\n })\r\n\r\n const { userInputs, steps, currentStep, currentStepName } =\r\n getCommonComputedFields(store.state.stafet)\r\n\r\n const handleStepCompleted = () => {\r\n steps.value.find(\r\n (item) => item.step === currentStep.value\r\n ).completed = true\r\n\r\n store.dispatch('stafet/steps', {\r\n steps: steps.value\r\n })\r\n\r\n const unCompletedSteps = steps.value.filter(\r\n (item) => !item.completed\r\n )\r\n\r\n if (unCompletedSteps.length > 0) {\r\n store.dispatch('stafet/currentStep', {\r\n step: unCompletedSteps[0].step\r\n })\r\n }\r\n }\r\n const nextStepCallback = (fields) => {\r\n fields.forEach((field) => {\r\n if (field.dependentField) {\r\n const dependentField = fields.find(\r\n (item) => item.name === field.dependentField\r\n )\r\n\r\n if (dependentField) {\r\n field.dependentFieldValue = dependentField.value\r\n }\r\n }\r\n fieldValidator(field)\r\n })\r\n\r\n const isStepValid = fields.every((field) => field.isValid)\r\n if (isStepValid) {\r\n displayInputError.value = false\r\n handleStepCompleted()\r\n store.dispatch('stafet/userInputs', { inputs: fields })\r\n\r\n updateItemFromStorage(\r\n sessionStorageIdentifierEnum.STAFET_CREATE_A_TEAM,\r\n fields\r\n )\r\n scrollTo(0, 0) \r\n } else {\r\n displayInputError.value = true\r\n scrollToFirstError()\r\n }\r\n }\r\n\r\n const previousStepCallback = () => {\r\n if (currentStep.value > 1) {\r\n store.dispatch('stafet/currentStep', {\r\n step: currentStep.value - 1\r\n })\r\n\r\n steps.value.find(\r\n (item) => item.step === currentStep.value\r\n ).completed = false\r\n\r\n store.dispatch('stafet/steps', {\r\n steps: steps.value\r\n })\r\n scrollTo(0, 0) \r\n }\r\n }\r\n\r\n const submitCallback = async () => {\r\n // it expects a object with ok: true or false\r\n const response = await store.dispatch('stafet/editTeamSubmit', { stafetKode: props.stafetId, holdKode })\r\n return response\r\n }\r\n\r\n return {\r\n displayInputError,\r\n labels,\r\n headerSteps,\r\n currentStepName,\r\n isSubmitting,\r\n nextStepCallback,\r\n previousStepCallback,\r\n submitCallback\r\n }\r\n }\r\n}\r\n","import { render } from \"./StafetEditHoldFlow.vue?vue&type=template&id=5ef93bd0\"\nimport script from \"./StafetEditHoldFlow.vue?vue&type=script&lang=js\"\nexport * from \"./StafetEditHoldFlow.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"D:\\\\a\\\\1\\\\s\\\\frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\r\n\r\n\r\n \r\n \r\n\r\n \r\n \r\n
\r\n \r\n\r\n","\r\n\r\n\r\n \r\n \r\n {{ labels.yourInformationTitle }}\r\n
\r\n\r\n \r\n\r\n \r\n validateField('consent', e.target.checked)\"\r\n />\r\n\r\n validateField('newsletter', e.target.checked)\"\r\n />\r\n
\r\n\r\n nextStepCallback(stepModel)\"\r\n :nextStepLabel=\"labels.formNavigationLastStep\"\r\n :previousStepCallback=\"previousStepCallback\"\r\n :previousStepLabel=\"labels.formNavigationPreviousStep\"\r\n />\r\n \r\n\r\n","import emailValidator from 'foundation/js/inputValidators/emailValidator'\r\nimport isBoolean from 'foundation/js/inputValidators/isBoolean'\r\nimport nameValidator from 'foundation/js/inputValidators/nameValidator'\r\nimport phoneValidator from 'foundation/js/inputValidators/phoneValidator'\r\n\r\nexport default [\r\n {\r\n name: 'firstName',\r\n value: '',\r\n isValid: false,\r\n validator: nameValidator\r\n },\r\n {\r\n name: 'lastName',\r\n value: '',\r\n isValid: false,\r\n validator: nameValidator\r\n },\r\n {\r\n name: 'email',\r\n value: '',\r\n isValid: false,\r\n validator: emailValidator\r\n },\r\n {\r\n name: 'phone',\r\n value: '',\r\n isValid: false,\r\n validator: (value) => value === '' || phoneValidator(value)\r\n },\r\n {\r\n name: 'consent',\r\n value: false,\r\n isValid: false,\r\n validator: (value) => value === true\r\n },\r\n {\r\n name: 'newsletter',\r\n value: false,\r\n isValid: false,\r\n validator: isBoolean\r\n }\r\n]\r\n","import _stafetCommonStepsProps from 'foundation/js/configurations/_stafetCommonStepsProps'\r\nimport emailValidator from 'foundation/js/inputValidators/emailValidator'\r\nimport nameValidator from 'foundation/js/inputValidators/nameValidator'\r\nimport phoneValidator from 'foundation/js/inputValidators/phoneValidator'\r\nimport { computed, onBeforeMount, ref } from 'vue'\r\nimport FormInputTextField from '../FormInputTextField/FormInputTextField.vue'\r\nimport FormCheckbox from '../FormCheckbox/FormCheckbox.vue'\r\nimport StafetActions from '../StafetActions/StafetActions.vue'\r\nimport fieldsConfig from './config/fieldsConfig'\r\nimport fieldValidator from 'foundation/js/stafet/fieldValidator'\r\nimport getItemFromStorage from 'foundation/js/sessionStorageWrapper/getItemFromStorage'\r\nimport sessionStorageIdentifierEnum from 'foundation/js/sessionStorageWrapper/sessionStorageIdentifierEnum'\r\nimport getFieldValue from 'foundation/js/stafet/getFieldValue'\r\n\r\nexport default {\r\n name: 'StafetOpretHoldStepTwo',\r\n components: {\r\n FormInputTextField,\r\n FormCheckbox,\r\n StafetActions\r\n },\r\n props: _stafetCommonStepsProps,\r\n setup(props) {\r\n const firstName = ref('')\r\n const lastName = ref('')\r\n const email = ref('')\r\n const phone = ref('')\r\n const consent = ref(false)\r\n const newsletter = ref(false)\r\n const readOnly = ref({\r\n firstName: false,\r\n lastName: false,\r\n email: false,\r\n phone: false,\r\n consent: false,\r\n newsletter: false\r\n })\r\n\r\n onBeforeMount(() => {\r\n const storedFields = getItemFromStorage(\r\n sessionStorageIdentifierEnum.STAFET_CREATE_A_TEAM\r\n )\r\n\r\n if (props.userData) {\r\n\r\n if (props.userData.firstName) {\r\n firstName.value = props.userData.firstName\r\n validateField('firstName', firstName.value)\r\n readOnly.value.firstName = true\r\n disableValidation('firstName')\r\n }\r\n\r\n if (props.userData.lastName) {\r\n lastName.value = props.userData.lastName\r\n validateField('lastName', lastName.value)\r\n readOnly.value.lastName = true\r\n disableValidation('lastName')\r\n }\r\n\r\n if (props.userData.email) {\r\n email.value = props.userData.email\r\n validateField('email', email.value)\r\n readOnly.value.email = true\r\n disableValidation('email')\r\n }\r\n\r\n if (props.userData.phoneNumber) {\r\n phone.value = props.userData.phoneNumber\r\n validateField('phone', phone.value)\r\n readOnly.value.phone = true\r\n disableValidation('phone')\r\n }\r\n \r\n if (props.userData.consentBool) {\r\n consent.value = props.userData.consentBool\r\n validateField('consent', consent.value)\r\n readOnly.value.consent = true\r\n disableValidation('consent')\r\n }\r\n \r\n if (props.userData.newsLetterBool) {\r\n newsletter.value = props.userData.newsLetterBool\r\n validateField('newsletter', newsletter.value)\r\n readOnly.value.newsletter = true\r\n disableValidation('newsletter')\r\n }\r\n }\r\n\r\n if (storedFields) {\r\n if (getFieldValue(storedFields, 'phone')) {\r\n phone.value = getFieldValue(storedFields, 'phone')\r\n validateField('phone', phone.value)\r\n }\r\n\r\n if (getFieldValue(storedFields, 'consent')) {\r\n consent.value = getFieldValue(storedFields, 'consent')\r\n validateField('consent', consent.value)\r\n }\r\n\r\n if (getFieldValue(storedFields, 'newsletter')) {\r\n newsletter.value = getFieldValue(storedFields, 'newsletter')\r\n validateField('newsletter', newsletter.value)\r\n }\r\n }\r\n })\r\n\r\n const disableValidation = (fieldName) => {\r\n const field = fieldsConfig.find(field => field.name === fieldName)\r\n field.validator = _ => true\r\n }\r\n\r\n const validateField = (fieldName, value) => {\r\n fieldsConfig.find((item) => item.name === fieldName).value = value\r\n const field = fieldsConfig.find((field) => field.name === fieldName)\r\n if (field) {\r\n field.value = value\r\n fieldValidator(field)\r\n }\r\n }\r\n\r\n const showFirstNameErrorMessage = computed(() => showError('firstName', firstName.value))\r\n const showLastNameErrorMessage = computed(() => showError('lastName', lastName.value))\r\n const showEmailErrorMessage = computed(() => showError('email', email.value))\r\n const showPhoneErrorMessage = computed(() => showError('phone', phone.value))\r\n const showConsentErrorMessage = computed(() => showError('consent', consent.value))\r\n const showError = (fieldName, value) => {\r\n const field = fieldsConfig.find(field => field.name === fieldName)\r\n return !field.validator(value) && props.displayInputError\r\n }\r\n\r\n const stepModel = computed(() => {\r\n return fieldsConfig\r\n })\r\n\r\n return {\r\n firstName,\r\n lastName,\r\n email,\r\n phone,\r\n consent,\r\n newsletter,\r\n readOnly,\r\n showFirstNameErrorMessage,\r\n showLastNameErrorMessage,\r\n showEmailErrorMessage,\r\n showPhoneErrorMessage,\r\n showConsentErrorMessage,\r\n stepModel,\r\n validateField\r\n }\r\n }\r\n}\r\n","import { render } from \"./StafetOpretHoldStepTwo.vue?vue&type=template&id=feb3be92\"\nimport script from \"./StafetOpretHoldStepTwo.vue?vue&type=script&lang=js\"\nexport * from \"./StafetOpretHoldStepTwo.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"D:\\\\a\\\\1\\\\s\\\\frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","export default [\r\n {\r\n hidden: false,\r\n step: 1,\r\n name: 'StafetOpretHoldStepOne',\r\n label: 'formStepLabel1',\r\n completed: false\r\n },\r\n {\r\n hidden: false,\r\n step: 2,\r\n name: 'StafetOpretHoldStepTwo',\r\n label: 'formStepLabel2',\r\n completed: false\r\n },\r\n {\r\n hidden: true, // hidden - if true, the step will not be shown steps header\r\n step: 3, // order - manual number. The order of the array determins the steporder\r\n name: 'FormStepSubmitting', // stepname. Must correspond to a component declared under \"components\"\r\n label: 'submitErrorTitle',\r\n completed: false // are all fields valid?\r\n }\r\n]\r\n","import { useStore } from 'vuex'\r\nimport { computed, ref, onMounted} from 'vue'\r\nimport StafetHeader from '../StafetHeader/StafetHeader.vue'\r\nimport StafetOpretHoldStepOne from '../StafetOpretHoldStepOne/StafetOpretHoldStepOne.vue'\r\nimport StafetOpretHoldStepTwo from '../StafetOpretHoldStepTwo/StafetOpretHoldStepTwo.vue'\r\nimport FormStepSubmitting from '../FormStepSubmitting/FormStepSubmitting.vue'\r\nimport getCommonComputedFields from 'foundation/js/stafet/getCommonComputedFields'\r\nimport mapStafetHeaderSteps from 'foundation/js/stafet/mapStafetHeaderSteps'\r\nimport sessionStorageIdentifierEnum from 'foundation/js/sessionStorageWrapper/sessionStorageIdentifierEnum'\r\nimport updateItemFromStorage from 'foundation/js/sessionStorageWrapper/updateItemFromStorage'\r\nimport { scrollToFirstError } from '../../foundation/js/inputValidators/scrollToFirstError'\r\nimport stepsConfig from './config/stepsConfig'\r\nimport fieldValidator from 'foundation/js/stafet/fieldValidator'\r\n\r\nexport default {\r\n name: 'StafetOpretHoldFlow',\r\n components: {\r\n StafetHeader,\r\n StafetOpretHoldStepOne,\r\n StafetOpretHoldStepTwo,\r\n FormStepSubmitting\r\n },\r\n props: {\r\n stafetId: {\r\n type: String,\r\n required: true,\r\n default: null\r\n },\r\n holdList: {\r\n type: Array,\r\n required: true,\r\n default: []\r\n },\r\n holdData: {\r\n type: Object,\r\n required: false,\r\n default: {}\r\n },\r\n userData: {\r\n type: Object,\r\n required: false,\r\n default: {}\r\n },\r\n loggedIn: {\r\n type: Boolean,\r\n required: true,\r\n default: false\r\n }\r\n },\r\n setup(props) {\r\n const store = useStore()\r\n const displayInputError = ref(false)\r\n\r\n const labels = computed(() => {\r\n return store.state.labels.collections['SFLCreateHoldLabels']\r\n })\r\n\r\n const isSubmitting = computed(() => {\r\n return store.state.stafet.isSubmitting\r\n })\r\n\r\n const headerSteps = computed(() => {\r\n return mapStafetHeaderSteps(\r\n steps.value,\r\n currentStep.value,\r\n labels.value\r\n )\r\n })\r\n\r\n onMounted(() => {\r\n store.dispatch('stafet/stafetId', { stafetId: props.stafetId })\r\n store.dispatch('stafet/steps', {\r\n steps: stepsConfig\r\n })\r\n })\r\n\r\n const { userInputs, steps, currentStep, currentStepName } =\r\n getCommonComputedFields(store.state.stafet)\r\n\r\n const handleStepCompleted = () => {\r\n steps.value.find(\r\n (item) => item.step === currentStep.value\r\n ).completed = true\r\n\r\n store.dispatch('stafet/steps', {\r\n steps: steps.value\r\n })\r\n\r\n const unCompletedSteps = steps.value.filter(\r\n (item) => !item.completed\r\n )\r\n\r\n if (unCompletedSteps.length > 0) {\r\n store.dispatch('stafet/currentStep', {\r\n step: unCompletedSteps[0].step\r\n })\r\n }\r\n }\r\n\r\n \r\n const nextStepCallback = (fields) => {\r\n fields.forEach((field) => {\r\n if (field.dependentField) {\r\n const dependentField = fields.find(\r\n (item) => item.name === field.dependentField\r\n )\r\n\r\n if (dependentField) {\r\n field.dependentFieldValue = dependentField.value\r\n }\r\n }\r\n fieldValidator(field)\r\n })\r\n\r\n const isStepValid = fields.every((field) => field.isValid)\r\n if (isStepValid) {\r\n displayInputError.value = false\r\n handleStepCompleted()\r\n store.dispatch('stafet/userInputs', { inputs: fields })\r\n\r\n updateItemFromStorage(\r\n sessionStorageIdentifierEnum.STAFET_CREATE_A_TEAM,\r\n fields\r\n )\r\n scrollTo(0, 0) \r\n } else {\r\n displayInputError.value = true\r\n scrollToFirstError()\r\n }\r\n }\r\n\r\n const previousStepCallback = () => {\r\n if (currentStep.value > 1) {\r\n store.dispatch('stafet/currentStep', {\r\n step: currentStep.value - 1\r\n })\r\n\r\n steps.value.find(\r\n (item) => item.step === currentStep.value\r\n ).completed = false\r\n\r\n store.dispatch('stafet/steps', {\r\n steps: steps.value\r\n })\r\n scrollTo(0, 0) \r\n }\r\n }\r\n\r\n const submitCallback = async () => {\r\n // it expects a object with ok: true or false\r\n const response = await store.dispatch('stafet/createTeamSubmit')\r\n return response\r\n }\r\n\r\n return {\r\n displayInputError,\r\n labels,\r\n headerSteps,\r\n currentStepName,\r\n isSubmitting,\r\n nextStepCallback,\r\n previousStepCallback,\r\n submitCallback\r\n }\r\n }\r\n}\r\n","import { render } from \"./StafetOpretHoldFlow.vue?vue&type=template&id=1ec41234\"\nimport script from \"./StafetOpretHoldFlow.vue?vue&type=script&lang=js\"\nexport * from \"./StafetOpretHoldFlow.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"D:\\\\a\\\\1\\\\s\\\\frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\r\n\r\n\r\n \r\n \r\n
\r\n {{ labels.yourInformationTitle }}\r\n
\r\n\r\n
\r\n\r\n
\r\n\r\n
\r\n {{ labels.emailSettingsTitle }}\r\n
\r\n\r\n
\r\n
{{ labels.emailSettingsDescription }}
\r\n
setMailSettingBool(e.target.checked)\"\r\n />\r\n setMailSettingFighterNewsletterBool(e.target.checked)\"\r\n />\r\n \r\n\r\n
\r\n \r\n
\r\n\r\n
\r\n
\r\n\r\n
\r\n {{ labels.deleteProfileDescription }}\r\n \r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n\r\n","import { computed, ref } from 'vue'\r\nimport { useStore } from 'vuex'\r\nimport FormInputTextField from '../FormInputTextField/FormInputTextField.vue'\r\nimport FormInputPhoneField from '../FormInputPhoneField/FormInputPhoneField.vue'\r\nimport FormInputEmailField from '../FormInputEmailField/FormInputEmailField.vue'\r\nimport FormCheckbox from '../FormCheckbox/FormCheckbox.vue'\r\n\r\nexport default {\r\n name: 'StafetProfileForm',\r\n components: {\r\n FormInputTextField,\r\n FormInputPhoneField,\r\n FormInputEmailField,\r\n FormCheckbox\r\n },\r\n props: {\r\n stafetId: {\r\n type: String,\r\n default: null\r\n },\r\n userData: {\r\n type: Object,\r\n default: {}\r\n },\r\n editProfileLink: {\r\n type: String,\r\n default: null\r\n },\r\n removeProfileLink: {\r\n type: String,\r\n default: null\r\n },\r\n editPasswordLink: {\r\n type: String,\r\n default: null\r\n }\r\n },\r\n setup(props) {\r\n const store = useStore()\r\n const mailSettingsBool = ref(props.userData.newsletter ?? false)\r\n const mailSettingsFighterNewsletterBool = ref(props.userData.fighterNewsletter ?? false)\r\n\r\n const labels = computed(() => {\r\n return store.state.labels.collections['SFLEditStafetLabels']\r\n })\r\n\r\n const setMailSettingBool = (value) => {\r\n mailSettingsBool.value = value\r\n }\r\n\r\n const setMailSettingFighterNewsletterBool = (value) => {\r\n mailSettingsFighterNewsletterBool.value = value\r\n }\r\n\r\n const saveChanges = () => {\r\n setTimeout(() => {\r\n store.dispatch('stafet/stafetProfileUpdatedSubmit', {\r\n body: { \r\n mailSettingsBool: mailSettingsBool.value,\r\n mailSettingsFighterNewsletterBool: mailSettingsFighterNewsletterBool.value, \r\n }\r\n })\r\n }, 300)\r\n }\r\n\r\n const openConfirmPageOverlay = function (e) {\r\n store.commit('main/set_page_overlay_content_data', {\r\n callback: () => {\r\n store.dispatch('stafet/submitUpdateStafetProfile', {\r\n userId: props.userData.userId,\r\n body: {\r\n sflNewsletter: mailSettingsBool.value,\r\n fighterNewsletter: mailSettingsFighterNewsletterBool.value\r\n }\r\n })\r\n }\r\n })\r\n\r\n store.dispatch('main/openPageOverlay', {\r\n overlayContent: 'ConfirmChanges',\r\n returnTarget: e.currentTarget\r\n })\r\n }\r\n\r\n const openDeletePageOverlay = function (e) {\r\n store.commit('main/set_page_overlay_content_data', {\r\n callback: () => {\r\n store.dispatch('stafet/submitDeleteStafetProfile', {\r\n userId: props.userData.userId\r\n })\r\n }\r\n })\r\n\r\n store.dispatch('main/openPageOverlay', {\r\n overlayContent: 'ConfirmDeleteProfile',\r\n returnTarget: e.currentTarget\r\n })\r\n }\r\n\r\n return {\r\n labels,\r\n mailSettingsBool,\r\n setMailSettingBool,\r\n mailSettingsFighterNewsletterBool,\r\n setMailSettingFighterNewsletterBool,\r\n saveChanges,\r\n openConfirmPageOverlay,\r\n openDeletePageOverlay\r\n }\r\n }\r\n}\r\n","import { render } from \"./StafetProfileForm.vue?vue&type=template&id=5eb67b62\"\nimport script from \"./StafetProfileForm.vue?vue&type=script&lang=js\"\nexport * from \"./StafetProfileForm.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"D:\\\\a\\\\1\\\\s\\\\frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { ref } from 'vue'\r\n\r\nexport default {\r\n name: 'StickySliderElement',\r\n setup() {\r\n const imgTopPosSticky = ref('40px')\r\n const imgTopPosStickyInt = ref(40)\r\n\r\n addEventListener('DOMContentLoaded', (event) => {\r\n const stickySliderElementImageContainer = document.querySelectorAll(\r\n '.kb-sticky-slider-element__content-container'\r\n )\r\n\r\n const getImageStickyTopPosition = () => {\r\n const stickySliderElement = document.querySelector(\r\n '.kb-js--sticky-slider-element'\r\n )\r\n\r\n if (stickySliderElement) {\r\n setImgTopPosSticky(stickySliderElement)\r\n }\r\n }\r\n const observer = new IntersectionObserver(handleIntersection, {\r\n rootMargin: `-${imgTopPosSticky.value}`\r\n })\r\n\r\n stickySliderElementImageContainer.forEach((stickyElm) => {\r\n observer.observe(stickyElm)\r\n })\r\n\r\n stickySliderElementImageContainer.forEach((stickyElm, index) => {\r\n if (index + 1 < stickySliderElementImageContainer.length) {\r\n const imageContainer = stickyElm.querySelector(\r\n '.kb-js--sticky-slider-image-container'\r\n )\r\n const image = imageContainer.querySelector(\r\n '.kb-js--sticky-slider-element'\r\n )\r\n const totalContainerHeight =\r\n imageContainer.getBoundingClientRect().height +\r\n image.getBoundingClientRect().height * 2\r\n stickyElm.style.height = `${imageContainer.getBoundingClientRect().height * 2}px`\r\n imageContainer.style.height = `${totalContainerHeight}px`\r\n }\r\n })\r\n\r\n const resizeObserver = new ResizeObserver(handleResize)\r\n\r\n stickySliderElementImageContainer.forEach((stickyElm) => {\r\n const containerRight = stickyElm.querySelector(\r\n '.kb-js--sticky-container-right'\r\n )\r\n const textContentArea = containerRight.children[0]\r\n resizeObserver.observe(\r\n textContentArea ? textContentArea : containerRight\r\n )\r\n })\r\n })\r\n\r\n const setImgTopPosSticky = (stickySliderElement) => {\r\n imgTopPosSticky.value =\r\n window.getComputedStyle(stickySliderElement).top\r\n imgTopPosStickyInt.value = parseFloat(\r\n imgTopPosSticky.value.replace('px', '')\r\n )\r\n }\r\n\r\n const handleIntersection = (entries) => {\r\n entries.map((entry) => {\r\n if (\r\n entry.isIntersecting &&\r\n imgTopPosStickyInt.value &&\r\n entry.intersectionRect.top <= imgTopPosStickyInt.value\r\n ) {\r\n if (!entry.target) return\r\n changeBackgroundColor(entry.target)\r\n changeImage(entry.target)\r\n } else if (\r\n !entry.isIntersecting &&\r\n entry.boundingClientRect.top < 0\r\n ) {\r\n const nextElement = getNextElement(entry.target)\r\n if (!nextElement) return\r\n changeBackgroundColor(nextElement)\r\n changeImage(nextElement)\r\n }\r\n })\r\n }\r\n\r\n const getNextElement = (currentElement) => {\r\n let currentIndex = 0\r\n const containers = document.querySelectorAll(\r\n '.kb-js--content-container'\r\n )\r\n Array.from(containers).map((item, index) => {\r\n if (item === currentElement) {\r\n currentIndex = index\r\n }\r\n })\r\n\r\n if (currentIndex < containers.length) {\r\n return containers[currentIndex + 1]\r\n }\r\n return currentElement\r\n }\r\n\r\n const changeBackgroundColor = (elm) => {\r\n const parentContainer = elm.closest('.kb-sticky-slider-element')\r\n const parentClasses = parentContainer.classList\r\n parentClasses.forEach((item) => {\r\n if (item.includes('kb-colortheme')) {\r\n parentContainer.classList.remove(item)\r\n }\r\n })\r\n\r\n if (elm.dataset.theme) {\r\n parentContainer.classList.add(elm.dataset.theme)\r\n }\r\n }\r\n\r\n const changeImage = (elm) => {\r\n const imageContainers = document.querySelectorAll(\r\n '.kb-js--sticky-slider-image-container'\r\n )\r\n const imageContainer = elm.querySelector(\r\n '.kb-js--sticky-slider-image-container'\r\n )\r\n imageContainers.forEach((container) =>\r\n container.classList.remove(\r\n 'kb-sticky-slider-element__left-container--shown'\r\n )\r\n )\r\n imageContainer.classList.add(\r\n 'kb-sticky-slider-element__left-container--shown'\r\n )\r\n }\r\n\r\n // resize observer to make sure tekst content doesn't overlab\r\n const handleResize = (entries) => {\r\n entries.forEach((entry) => {\r\n const contentWrapper = entry.target.closest(\r\n '.kb-js--content-container'\r\n )\r\n const textContentHeight = entry.contentRect.height\r\n const imgHeight = contentWrapper\r\n .querySelector('.kb-js--sticky-slider-element')\r\n .getBoundingClientRect().height\r\n if (contentWrapper && textContentHeight) {\r\n if (imgHeight > textContentHeight) {\r\n contentWrapper.style.height = `${imgHeight}px`\r\n } else {\r\n contentWrapper.style.height = `${textContentHeight}px`\r\n }\r\n }\r\n })\r\n }\r\n }\r\n}\r\n","import { createApp } from 'vue'\r\nimport options from './StickySliderElement.options'\r\n\r\nconst el = '.kb-component--sticky-slider-element'\r\n\r\nexport default function (Store) {\r\n const DOM = document.querySelector(el)\r\n if (DOM) {\r\n const template = DOM.outerHTML\r\n options.template = template\r\n const component = createApp(options).use(Store)\r\n component.mount(el)\r\n }\r\n}\r\n","import headerOptions from '../TheHeader/TheHeader.options'\r\n\r\nconst options = Object.assign({}, headerOptions, { name: 'SubbrandHeader' })\r\nexport default options\r\n","import { createApp } from 'vue'\r\nimport options from './SubbrandHeader.options'\r\n\r\nconst el = '.kb-component--subbrand-header'\r\nconst DOM = document.querySelector(el)\r\n\r\nexport default function(Store){\r\n if(DOM){\r\n const template = DOM.innerHTML\r\n options.template = template\r\n const component = createApp(options).use(Store)\r\n component.mount(el)\r\n }\r\n}","\r\n\r\n\r\n \r\n \r\n\r\n \r\n
\r\n \r\n \r\n - \r\n \r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n
\r\n {{\r\n getLabel('resultCountTitle', [\r\n teamsShownAmount.toString(),\r\n totalAmount.toString()\r\n ])\r\n }}\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n\r\n
\r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n\r\n","\r\n\r\n\r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n {{ captainText }}\r\n \r\n {{ captain }}{{ index + 1 < captains.length ? ', ' : '' }}\r\n \r\n
\r\n\r\n {{ name }}
\r\n\r\n \r\n
\r\n {{ `${donationTotal} ${currencyText}` }}\r\n
\r\n
\r\n
\r\n {{ `${donationGoalsText} ${donationGoals} ${currencyText}` }}\r\n
\r\n
\r\n\r\n \r\n \r\n
\r\n
{{ `${membersCount} ${participantsText}` }}
\r\n
\r\n \r\n \r\n \r\n\r\n","import { computed } from 'vue'\r\n\r\nexport default {\r\n name: 'TeamListCard',\r\n props: {\r\n participantsText: {\r\n type: String,\r\n required: true\r\n },\r\n captainText: {\r\n type: String,\r\n required: true\r\n },\r\n captains: {\r\n type: Array,\r\n required: true\r\n },\r\n url: {\r\n type: String,\r\n required: true\r\n },\r\n imageUrl: {\r\n type: String,\r\n required: true\r\n },\r\n imageAlt: {\r\n type: String,\r\n required: true\r\n },\r\n name: {\r\n type: String,\r\n required: true\r\n },\r\n membersCount: {\r\n type: Number,\r\n required: true\r\n },\r\n donationGoals: {\r\n type: Number,\r\n required: true\r\n },\r\n donationGoalsText: {\r\n type: String,\r\n required: true\r\n },\r\n currencyText: {\r\n type: String,\r\n required: true\r\n },\r\n donationTotal: {\r\n type: Number,\r\n required: true\r\n }\r\n },\r\n setup(props) {\r\n const progress = computed(() => {\r\n // Cap progress at 100%\r\n const progressCap = 100\r\n const rawProgress =\r\n (props.donationTotal * progressCap) / props.donationGoals\r\n return Math.min(rawProgress, progressCap)\r\n })\r\n return {\r\n progress\r\n }\r\n }\r\n}\r\n","import { render } from \"./TeamListCard.vue?vue&type=template&id=1ec02339\"\nimport script from \"./TeamListCard.vue?vue&type=script&lang=js\"\nexport * from \"./TeamListCard.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"D:\\\\a\\\\1\\\\s\\\\frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { computed, onMounted, ref } from 'vue'\r\nimport { useStore } from 'vuex'\r\nimport TeamListCard from '../TeamListCard/TeamListCard.vue'\r\nimport SortDropdown from '../SortDropdown/SortDropdown.vue'\r\n\r\nexport default {\r\n name: 'TeamList',\r\n components: {\r\n TeamListCard,\r\n SortDropdown\r\n },\r\n props: {\r\n source: {\r\n type: String,\r\n required: true\r\n },\r\n stafetId: {\r\n type: String,\r\n required: true\r\n },\r\n guid: {\r\n type: String,\r\n required: true\r\n },\r\n take: {\r\n type: Number,\r\n default: 18\r\n },\r\n hideNoResults: {\r\n type: Boolean,\r\n required: false,\r\n default: false\r\n },\r\n filterShown: {\r\n type: Boolean,\r\n required: false,\r\n default: true\r\n }\r\n },\r\n setup(props) {\r\n const store = useStore()\r\n const teamsShownAmount = ref(props.take)\r\n\r\n onMounted(() => {\r\n\r\n const urlTemplate = props.source === 'profil'\r\n ? process.env.GET_PROFILE_TEAMS_LIST\r\n : process.env.GET_STAFET_TEAM_LIST\r\n const url = urlTemplate\r\n .replace('[stafetId]', props.stafetId)\r\n .replace('[pageId]', store.state.main.page_id)\r\n\r\n store.dispatch('search/initSearchScope', {\r\n guid: props.guid,\r\n firstPageSize: props.take,\r\n showMorePageSize: props.take,\r\n url: url\r\n })\r\n\r\n store.dispatch('search/performZeroSearch', {\r\n guid: props.guid\r\n })\r\n\r\n store.dispatch('search/performSearch', {\r\n guid: props.guid,\r\n skip: 0,\r\n take: props.take\r\n })\r\n })\r\n\r\n const getLabel = (key, strings) => {\r\n let label = store.getters['labels/getLabel']({\r\n labelCollection: 'teamList',\r\n labelKey: key\r\n })\r\n\r\n if (strings) {\r\n strings.map((string, index) => {\r\n label = label.replace(`{${index}}`, string)\r\n })\r\n }\r\n return label\r\n }\r\n\r\n const sortOptions = {\r\n name: 'Sorter',\r\n options: [\r\n {\r\n name: getLabel('sortListAlphabetical'),\r\n handler: 'alphabetical'\r\n },\r\n {\r\n name: getLabel('sortListIndsamlet'),\r\n handler: 'highestCollected'\r\n },\r\n {\r\n name: getLabel('sortListSenestOprettet'),\r\n handler: 'latest'\r\n },\r\n ]\r\n }\r\n\r\n const sortingHandler = function (sorting) {\r\n store.dispatch('search/performSearch', {\r\n guid: props.guid,\r\n sorting\r\n })\r\n }\r\n\r\n const teams = computed(() => {\r\n const teams = store.state.search.results[props.guid] ?? []\r\n teamsShownAmount.value = teams.length\r\n return teams\r\n })\r\n\r\n const totalAmount = computed(() => {\r\n return store.state.search.scoped_total[props.guid] ?? 0\r\n })\r\n\r\n const showSpinner = computed(\r\n () => store.state.search.search_inprogress[props.guid]\r\n )\r\n\r\n const getMoreResults = function () {\r\n store.dispatch('search/performMoreSearch', {\r\n guid: props.guid\r\n })\r\n }\r\n\r\n return {\r\n sortOptions,\r\n sortingHandler,\r\n getLabel,\r\n teams,\r\n teamsShownAmount,\r\n totalAmount,\r\n getMoreResults,\r\n showSpinner\r\n }\r\n }\r\n}\r\n","import { render } from \"./TeamList.vue?vue&type=template&id=38209c6d\"\nimport script from \"./TeamList.vue?vue&type=script&lang=js\"\nexport * from \"./TeamList.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"D:\\\\a\\\\1\\\\s\\\\frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { onUpdated, ref } from 'vue'\r\n\r\n// TinyMCE imports\r\nimport \"tinymce/tinymce\"\r\nimport \"tinymce/themes/silver\";\r\nimport \"tinymce/icons/default\";\r\nimport 'tinymce/models/dom/model'\r\nimport 'tinymce/skins/ui/oxide/skin.css';\r\n// TinyMCE plugin imports\r\nimport 'tinymce/plugins/emoticons';\r\nimport 'tinymce/plugins/emoticons/js/emojis';\r\nimport 'tinymce/plugins/autoresize';\r\nimport 'tinymce/plugins/lists';\r\nimport 'tinymce/plugins/autolink';\r\n\r\nimport Editor from '@tinymce/tinymce-vue'\r\n\r\nexport default {\r\n name: \"TextEditor\",\r\n components: {\r\n Editor\r\n },\r\n props: {\r\n initContent: {\r\n type: String,\r\n default: ''\r\n }\r\n },\r\n setup(props) {\r\n const content = ref(props.initContent)\r\n\r\n return {\r\n content\r\n }\r\n }\r\n}","\r\n\r\n\r\n \r\n 0\" class=\"kb-user-posts-list__title\">{{ posts.length }} {{ getLabel('resultCountTitle') }}\r\n\r\n \r\n\r\n 0\">\r\n {{ getLabel('resultOutForTitle', [posts.length, totalNumberOfPosts]) }}\r\n posts.length\">\r\n \r\n \r\n
\r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n\r\n","import { useStore } from 'vuex';\r\nimport GroupPost from '../GroupPost/GroupPost.vue';\r\nimport { computed, onMounted } from 'vue';\r\nimport getLabelFromStore from '../../foundation/js/getLabel'\r\n\r\nexport default {\r\n name: \"UserPostsList\",\r\n components: {\r\n GroupPost\r\n },\r\n props: {\r\n guid: {\r\n type: String,\r\n required: true\r\n },\r\n groupId: {\r\n type: String,\r\n required: true\r\n },\r\n skip: {\r\n type: Number,\r\n default: 0\r\n },\r\n take: {\r\n type: Number,\r\n default: 10\r\n },\r\n userData: {\r\n type: Object,\r\n default: null\r\n },\r\n type: {\r\n type: String,\r\n default: null\r\n }\r\n },\r\n setup(props) {\r\n const store = useStore()\r\n const isLoggedIn = computed(() => store.state.main.user.user_authorized ?? false)\r\n const posts = computed(() => store.state.search.results[props.guid] ?? [])\r\n const totalNumberOfPosts = computed(() => store.state.search.scoped_total[props.guid] ?? 0)\r\n const showSpinner = computed(() => store.state.search.search_inprogress[props.guid])\r\n \r\n const getLabel = (key, strings) => {\r\n let label = getLabelFromStore({\r\n labelKey: key,\r\n labelCollection: 'UserPostsList'\r\n })\r\n\r\n if (strings) {\r\n strings.forEach((str, index) => {\r\n label = label.replace(`{${index}}`, str)\r\n })\r\n }\r\n\r\n return label\r\n }\r\n\r\n const getApiPath = () => {\r\n switch (props.type) {\r\n case 'saved': \r\n return process.env.GET_SAVED_POSTS_LIST\r\n default:\r\n return process.env.GET_USER_POSTS_LIST\r\n }\r\n }\r\n\r\n onMounted(() => {\r\n const api = getApiPath()\r\n\r\n store.dispatch('search/initSearchScope', {\r\n guid: props.guid,\r\n firstPageSize: props.take,\r\n showMorePageSize: props.take,\r\n url: api\r\n }) \r\n\r\n store.dispatch('search/performSearch', {\r\n guid: props.guid,\r\n guery: '',\r\n skip: props.skip,\r\n take: props.take\r\n })\r\n })\r\n\r\n const handlePostClick = (e, post) => {\r\n window.location.href = post.url\r\n }\r\n\r\n const getMorePosts = () => {\r\n store.dispatch('search/performMoreSearch', { guid: props.guid })\r\n }\r\n\r\n return {\r\n isLoggedIn,\r\n posts,\r\n totalNumberOfPosts,\r\n showSpinner,\r\n getLabel,\r\n handlePostClick,\r\n getMorePosts\r\n }\r\n }\r\n}","import { render } from \"./UserPostsList.vue?vue&type=template&id=3ebd9b2e\"\nimport script from \"./UserPostsList.vue?vue&type=script&lang=js\"\nexport * from \"./UserPostsList.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"D:\\\\a\\\\1\\\\s\\\\frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { computed } from \"vue\";\r\nimport { useStore } from \"vuex\";\r\n\r\nexport default {\r\n name: \"WebshopHeader\",\r\n setup() {\r\n const store = useStore();\r\n\r\n const initialItemsCount = computed(\r\n () => store.state.basket?.initialItemsCount,\r\n );\r\n\r\n const itemsCount = computed(\r\n () =>\r\n store.state.basket?.totals?.productsAmount ||\r\n initialItemsCount.value,\r\n );\r\n const itemsCountString = computed(() =>\r\n itemsCount.value > 99 ? \"99+\" : itemsCount.value.toString(),\r\n );\r\n const startBurgermenu = function (e) {\r\n console.log(\"burger icon clicket\");\r\n store.dispatch(\"main/openPageOverlay\", {\r\n overlayContent: \"BurgerMenu\",\r\n returnTarget: e.currentTarget,\r\n });\r\n };\r\n\r\n const startSearchoverlay = function (e) {\r\n store.dispatch(\"main/openPageOverlay\", {\r\n overlayContent: \"SearchOverlay\",\r\n returnTarget: e.currentTarget,\r\n });\r\n };\r\n\r\n const startMegaMenu = function (e) {\r\n store.dispatch(\"main/openPageOverlay\", {\r\n overlayContent: \"megaMenu\",\r\n returnTarget: e.currentTarget,\r\n });\r\n };\r\n\r\n return {\r\n itemsCount,\r\n itemsCountString,\r\n startBurgermenu,\r\n startSearchoverlay,\r\n startMegaMenu,\r\n };\r\n },\r\n};\r\n","import { createApp } from \"vue\";\r\nimport options from \"./WebshopHeader.options\";\r\nimport store from \"store\";\r\n\r\nconst el = \".kb-component--webshop-header\";\r\nconst DOM = document.querySelector(el);\r\n\r\nexport default function (store) {\r\n if (DOM && !DOM.hasAttribute(\"data-v-app\")) {\r\n const template = DOM.outerHTML;\r\n options.template = template;\r\n store.commit(\r\n \"basket/SET_INITIAL_BASKET_TOTALS_PRODUCTS_AMOUNT\",\r\n DOM.dataset.initialItemsCount,\r\n );\r\n const component = createApp(options).use(store);\r\n component.mount(DOM);\r\n }\r\n}\r\n","// generated import statements - any manual change made here will be overwritten automatically. \n\nimport FactBox from './components/FactBox/FactBox.init.js'\n\nimport SecondaryArticleSpots from './components/SecondaryArticleSpots/SecondaryArticleSpots.init.js'\n\nimport TooltipComponent from './components/TooltipComponent/TooltipComponent.init.js'\n\nimport PageIdInit from './components/PageIdInit/PageIdInit.init.js'\n\nimport Accordion from './components/Accordion/Accordion.init.js'\n\nimport ActionResponseBox from './components/ActionResponseBox/ActionResponseBox.init.js'\n\nimport ActiveGroups from './components/ActiveGroups/ActiveGroups.init.js'\n\nimport ActiveRoleListCard from './components/ActiveRoleListCard/ActiveRoleListCard.init.js'\n\nimport ActiveRolesList from './components/ActiveRolesList/ActiveRolesList.init.js'\n\nimport ActivityCard from './components/ActivityCard/ActivityCard.init.js'\n\nimport AdvancedRadio from './components/AdvancedRadio/AdvancedRadio.init.js'\n\nimport AmountSelector from './components/AmountSelector/AmountSelector.init.js'\n\nimport ArticleAnchors from './components/ArticleAnchors/ArticleAnchors.init.js'\n\nimport ArticleOverlay from './components/ArticleOverlay/ArticleOverlay.init.js'\n\nimport AttachmentsEditor from './components/AttachmentsEditor/AttachmentsEditor.init.js'\n\nimport AttachmentsViewer from './components/AttachmentsViewer/AttachmentsViewer.init.js'\n\nimport Basket from './components/Basket/Basket.init.js'\n\nimport BasketAside from './components/BasketAside/BasketAside.init.js'\n\nimport BasketCard from './components/BasketCard/BasketCard.init.js'\n\nimport BreadCrumb from './components/BreadCrumb/BreadCrumb.init.js'\n\nimport BurgerMenu from './components/BurgerMenu/BurgerMenu.init.js'\n\nimport BuySection from './components/BuySection/BuySection.init.js'\n\nimport CalendarOverlay from './components/CalendarOverlay/CalendarOverlay.init.js'\n\nimport CaseCard from './components/CaseCard/CaseCard.init.js'\n\nimport CaseCarousel from './components/CaseCarousel/CaseCarousel.init.js'\n\nimport CaseModule from './components/CaseModule/CaseModule.init.js'\n\nimport CategoryPicker from './components/CategoryPicker/CategoryPicker.init.js'\n\nimport ChangesSaved from './components/ChangesSaved/ChangesSaved.init.js'\n\nimport CheckoutContent from './components/CheckoutContent/CheckoutContent.init.js'\n\nimport CheckoutHeader from './components/CheckoutHeader/CheckoutHeader.init.js'\n\nimport CheckoutStepOne from './components/CheckoutStepOne/CheckoutStepOne.init.js'\n\nimport CheckoutStepThree from './components/CheckoutStepThree/CheckoutStepThree.init.js'\n\nimport CheckoutStepTwo from './components/CheckoutStepTwo/CheckoutStepTwo.init.js'\n\nimport ClosedGroupOverlay from './components/ClosedGroupOverlay/ClosedGroupOverlay.init.js'\n\nimport ColorPreview from './components/ColorPreview/ColorPreview.init.js'\n\nimport ConfirmChanges from './components/ConfirmChanges/ConfirmChanges.init.js'\n\nimport ConfirmDeleteOverlay from './components/ConfirmDeleteOverlay/ConfirmDeleteOverlay.init.js'\n\nimport ConfirmDeleteProfile from './components/ConfirmDeleteProfile/ConfirmDeleteProfile.init.js'\n\nimport ContactBanner from './components/ContactBanner/ContactBanner.init.js'\n\nimport ContentCarousel from './components/ContentCarousel/ContentCarousel.init.js'\n\nimport ContributionSelector from './components/ContributionSelector/ContributionSelector.init.js'\n\nimport CreateCancerForumProfile from './components/CreateCancerForumProfile/CreateCancerForumProfile.init.js'\n\nimport CreateEvent from './components/CreateEvent/CreateEvent.init.js'\n\nimport CreateFolderOverlay from './components/CreateFolderOverlay/CreateFolderOverlay.init.js'\n\nimport CreateFrivilligeProfile from './components/CreateFrivilligeProfile/CreateFrivilligeProfile.init.js'\n\nimport CreateFrivilligJob from './components/CreateFrivilligJob/CreateFrivilligJob.init.js'\n\nimport CreateGallery from './components/CreateGallery/CreateGallery.init.js'\n\nimport CreateNewFileOverlay from './components/CreateNewFileOverlay/CreateNewFileOverlay.init.js'\n\nimport CreatePost from './components/CreatePost/CreatePost.init.js'\n\nimport CTABox from './components/CTABox/CTABox.init.js'\n\nimport DeleteCancerProfileModal from './components/DeleteCancerProfileModal/DeleteCancerProfileModal.init.js'\n\nimport DeleteCommentOverlay from './components/DeleteCommentOverlay/DeleteCommentOverlay.init.js'\n\nimport DeleteEventModal from './components/DeleteEventModal/DeleteEventModal.init.js'\n\nimport DeleteFrivilligjobOverlay from './components/DeleteFrivilligjobOverlay/DeleteFrivilligjobOverlay.init.js'\n\nimport DeletePostOverlay from './components/DeletePostOverlay/DeletePostOverlay.init.js'\n\nimport DeleteRoleOverlay from './components/DeleteRoleOverlay/DeleteRoleOverlay.init.js'\n\nimport DeliveryAddress from './components/DeliveryAddress/DeliveryAddress.init.js'\n\nimport DeliveryCard from './components/DeliveryCard/DeliveryCard.init.js'\n\nimport Dictionary from './components/Dictionary/Dictionary.init.js'\n\nimport DictionaryList from './components/DictionaryList/DictionaryList.init.js'\n\nimport DictionaryWord from './components/DictionaryWord/DictionaryWord.init.js'\n\nimport DirectMessageNavigation from './components/DirectMessageNavigation/DirectMessageNavigation.init.js'\n\nimport DirectMessagesContent from './components/DirectMessagesContent/DirectMessagesContent.init.js'\n\nimport DirectMessageThread from './components/DirectMessageThread/DirectMessageThread.init.js'\n\nimport DocumentAndFolderList from './components/DocumentAndFolderList/DocumentAndFolderList.init.js'\n\nimport DonationAmount from './components/DonationAmount/DonationAmount.init.js'\n\nimport DonationCard from './components/DonationCard/DonationCard.init.js'\n\nimport DonationReceiptOverlay from './components/DonationReceiptOverlay/DonationReceiptOverlay.init.js'\n\nimport DropdownWithTags from './components/DropdownWithTags/DropdownWithTags.init.js'\n\nimport EditFrivilligProfile from './components/EditFrivilligProfile/EditFrivilligProfile.init.js'\n\nimport FeaturedGroups from './components/FeaturedGroups/FeaturedGroups.init.js'\n\nimport FeaturedPostSpotCard from './components/FeaturedPostSpotCard/FeaturedPostSpotCard.init.js'\n\nimport FeatureNavigationTeam from './components/FeatureNavigationTeam/FeatureNavigationTeam.init.js'\n\nimport FileListCard from './components/FileListCard/FileListCard.init.js'\n\nimport FilterOverlay from './components/FilterOverlay/FilterOverlay.init.js'\n\nimport FlowEditModal from './components/FlowEditModal/FlowEditModal.init.js'\n\nimport FlowHeader from './components/FlowHeader/FlowHeader.init.js'\n\nimport FormAddressField from './components/FormAddressField/FormAddressField.init.js'\n\nimport FormAddressFieldGroup from './components/FormAddressFieldGroup/FormAddressFieldGroup.init.js'\n\nimport FormCheckbox from './components/FormCheckbox/FormCheckbox.init.js'\n\nimport FormInputCprField from './components/FormInputCprField/FormInputCprField.init.js'\n\nimport FormInputCvrField from './components/FormInputCvrField/FormInputCvrField.init.js'\n\nimport FormInputDateField from './components/FormInputDateField/FormInputDateField.init.js'\n\nimport FormInputDropdown from './components/FormInputDropdown/FormInputDropdown.init.js'\n\nimport FormInputEmailField from './components/FormInputEmailField/FormInputEmailField.init.js'\n\nimport FormInputNameField from './components/FormInputNameField/FormInputNameField.init.js'\n\nimport FormInputPhoneField from './components/FormInputPhoneField/FormInputPhoneField.init.js'\n\nimport FormInputTextarea from './components/FormInputTextarea/FormInputTextarea.init.js'\n\nimport FormInputTextField from './components/FormInputTextField/FormInputTextField.init.js'\n\nimport FormRadioGroup from './components/FormRadioGroup/FormRadioGroup.init.js'\n\nimport FormStepSubmitting from './components/FormStepSubmitting/FormStepSubmitting.init.js'\n\nimport FormStepZero from './components/FormStepZero/FormStepZero.init.js'\n\nimport ForumEditProfile from './components/ForumEditProfile/ForumEditProfile.init.js'\n\nimport FrivilligeCheckoutContent from './components/FrivilligeCheckoutContent/FrivilligeCheckoutContent.init.js'\n\nimport FrivilligeCheckoutStepOne from './components/FrivilligeCheckoutStepOne/FrivilligeCheckoutStepOne.init.js'\n\nimport FrivilligeCheckoutStepTwo from './components/FrivilligeCheckoutStepTwo/FrivilligeCheckoutStepTwo.init.js'\n\nimport FrivilligePostsList from './components/FrivilligePostsList/FrivilligePostsList.init.js'\n\nimport FrivilligeShopWrongRoleModal from './components/FrivilligeShopWrongRoleModal/FrivilligeShopWrongRoleModal.init.js'\n\nimport FrivilligGroupHero from './components/FrivilligGroupHero/FrivilligGroupHero.init.js'\n\nimport FrivilligjobAside from './components/FrivilligjobAside/FrivilligjobAside.init.js'\n\nimport FrivilligjobCard from './components/FrivilligjobCard/FrivilligjobCard.init.js'\n\nimport FullscreenMedia from './components/FullscreenMedia/FullscreenMedia.init.js'\n\nimport FundraiseForm from './components/FundraiseForm/FundraiseForm.init.js'\n\nimport FundraisingAsideVue from './components/FundraisingAsideVue/FundraisingAsideVue.init.js'\n\nimport FundraisingCard from './components/FundraisingCard/FundraisingCard.init.js'\n\nimport FundraisingHero from './components/FundraisingHero/FundraisingHero.init.js'\n\nimport FVLConfirmDeleteProfile from './components/FVLConfirmDeleteProfile/FVLConfirmDeleteProfile.init.js'\n\nimport GalleryCard from './components/GalleryCard/GalleryCard.init.js'\n\nimport GeneralSearch from './components/GeneralSearch/GeneralSearch.init.js'\n\nimport GroupCard from './components/GroupCard/GroupCard.init.js'\n\nimport GroupDetails from './components/GroupDetails/GroupDetails.init.js'\n\nimport GroupPost from './components/GroupPost/GroupPost.init.js'\n\nimport GroupSearchResult from './components/GroupSearchResult/GroupSearchResult.init.js'\n\nimport GruppeadgangsanmodningList from './components/GruppeadgangsanmodningList/GruppeadgangsanmodningList.init.js'\n\nimport GtmTracker from './components/GtmTracker/GtmTracker.init.js'\n\nimport HeroGeneralSearch from './components/HeroGeneralSearch/HeroGeneralSearch.init.js'\n\nimport HeroSectionCancerforum from './components/HeroSectionCancerforum/HeroSectionCancerforum.init.js'\n\nimport HoldetsDeltagere from './components/HoldetsDeltagere/HoldetsDeltagere.init.js'\n\nimport HoldetsDonationer from './components/HoldetsDonationer/HoldetsDonationer.init.js'\n\nimport HoldetsLys from './components/HoldetsLys/HoldetsLys.init.js'\n\nimport HoldetsRoundCounterOverlay from './components/HoldetsRoundCounterOverlay/HoldetsRoundCounterOverlay.init.js'\n\nimport HoldOprettelseKvittering from './components/HoldOprettelseKvittering/HoldOprettelseKvittering.init.js'\n\nimport HoldRedigerKvittering from './components/HoldRedigerKvittering/HoldRedigerKvittering.init.js'\n\nimport ImageGallery from './components/ImageGallery/ImageGallery.init.js'\n\nimport IndependentHeader from './components/IndependentHeader/IndependentHeader.init.js'\n\nimport InfoCarousel from './components/InfoCarousel/InfoCarousel.init.js'\n\nimport LocationCard from './components/LocationCard/LocationCard.init.js'\n\nimport LoginOverlay from './components/LoginOverlay/LoginOverlay.init.js'\n\nimport LotteryForm from './components/LotteryForm/LotteryForm.init.js'\n\nimport MaterialCard from './components/MaterialCard/MaterialCard.init.js'\n\nimport MemberListOverlay from './components/MemberListOverlay/MemberListOverlay.init.js'\n\nimport MemberListOverlayFVL from './components/MemberListOverlayFVL/MemberListOverlayFVL.init.js'\n\nimport MemberOverlay from './components/MemberOverlay/MemberOverlay.init.js'\n\nimport MemberOverlayProfileCard from './components/MemberOverlayProfileCard/MemberOverlayProfileCard.init.js'\n\nimport MitIdLogout from './components/MitIdLogout/MitIdLogout.init.js'\n\nimport MoveFileOverlay from './components/MoveFileOverlay/MoveFileOverlay.init.js'\n\nimport NoSearchResults from './components/NoSearchResults/NoSearchResults.init.js'\n\nimport NotificationList from './components/NotificationList/NotificationList.init.js'\n\nimport OpretHoldOverlay from './components/OpretHoldOverlay/OpretHoldOverlay.init.js'\n\nimport OrdreOverview from './components/OrdreOverview/OrdreOverview.init.js'\n\nimport OverlayLinkInterceptor from './components/OverlayLinkInterceptor/OverlayLinkInterceptor.init.js'\n\nimport PageOverlay from './components/PageOverlay/PageOverlay.init.js'\n\nimport PersonalDonationStep2a from './components/PersonalDonationStep2a/PersonalDonationStep2a.init.js'\n\nimport PersonalDonationStep3 from './components/PersonalDonationStep3/PersonalDonationStep3.init.js'\n\nimport PersonalFundraising from './components/PersonalFundraising/PersonalFundraising.init.js'\n\nimport PickUpAddress from './components/PickUpAddress/PickUpAddress.init.js'\n\nimport PodcastSliderCard from './components/PodcastSliderCard/PodcastSliderCard.init.js'\n\nimport PostAside from './components/PostAside/PostAside.init.js'\n\nimport PostComment from './components/PostComment/PostComment.init.js'\n\nimport PostComments from './components/PostComments/PostComments.init.js'\n\nimport PostHeader from './components/PostHeader/PostHeader.init.js'\n\nimport PostHeaderAddComment from './components/PostHeaderAddComment/PostHeaderAddComment.init.js'\n\nimport PostsList from './components/PostsList/PostsList.init.js'\n\nimport PreFooter from './components/PreFooter/PreFooter.init.js'\n\nimport ProductCard from './components/ProductCard/ProductCard.init.js'\n\nimport ProductDetail from './components/ProductDetail/ProductDetail.init.js'\n\nimport ProductList from './components/ProductList/ProductList.init.js'\n\nimport ProductsCardsSlider from './components/ProductsCardsSlider/ProductsCardsSlider.init.js'\n\nimport ProfileDeleted from './components/ProfileDeleted/ProfileDeleted.init.js'\n\nimport ProfilePicture from './components/ProfilePicture/ProfilePicture.init.js'\n\nimport ProjectCard from './components/ProjectCard/ProjectCard.init.js'\n\nimport ProjectsList from './components/ProjectsList/ProjectsList.init.js'\n\nimport ReceiptContent from './components/ReceiptContent/ReceiptContent.init.js'\n\nimport RelayList from './components/RelayList/RelayList.init.js'\n\nimport ReportCard from './components/ReportCard/ReportCard.init.js'\n\nimport RequestRole from './components/RequestRole/RequestRole.init.js'\n\nimport RolesFormContent from './components/RolesFormContent/RolesFormContent.init.js'\n\nimport SearchAndCTA from './components/SearchAndCTA/SearchAndCTA.init.js'\n\nimport SearchFilteredTags from './components/SearchFilteredTags/SearchFilteredTags.init.js'\n\nimport SearchOverlay from './components/SearchOverlay/SearchOverlay.init.js'\n\nimport SessionStorageFormularTest from './components/SessionStorageFormularTest/SessionStorageFormularTest.init.js'\n\nimport SignUpButton from './components/SignUpButton/SignUpButton.init.js'\n\nimport SignUpForm from './components/SignUpForm/SignUpForm.init.js'\n\nimport SimpleCard from './components/SimpleCard/SimpleCard.init.js'\n\nimport SortDropdown from './components/SortDropdown/SortDropdown.init.js'\n\nimport SpotCard from './components/SpotCard/SpotCard.init.js'\n\nimport SpotCardGrid from './components/SpotCardGrid/SpotCardGrid.init.js'\n\nimport StafetActions from './components/StafetActions/StafetActions.init.js'\n\nimport StafetAddDeltager from './components/StafetAddDeltager/StafetAddDeltager.init.js'\n\nimport StafetAddMoreDeltagerFlow from './components/StafetAddMoreDeltagerFlow/StafetAddMoreDeltagerFlow.init.js'\n\nimport StafetDeltagPaaHoldFlow from './components/StafetDeltagPaaHoldFlow/StafetDeltagPaaHoldFlow.init.js'\n\nimport StafetDeltagPaaHoldStepFour from './components/StafetDeltagPaaHoldStepFour/StafetDeltagPaaHoldStepFour.init.js'\n\nimport StafetDeltagPaaHoldStepOne from './components/StafetDeltagPaaHoldStepOne/StafetDeltagPaaHoldStepOne.init.js'\n\nimport StafetDeltagPaaHoldStepThree from './components/StafetDeltagPaaHoldStepThree/StafetDeltagPaaHoldStepThree.init.js'\n\nimport StafetDeltagPaaHoldStepTwo from './components/StafetDeltagPaaHoldStepTwo/StafetDeltagPaaHoldStepTwo.init.js'\n\nimport StafetDeltagSomFighterFlow from './components/StafetDeltagSomFighterFlow/StafetDeltagSomFighterFlow.init.js'\n\nimport StafetDeltagSomFighterStepOne from './components/StafetDeltagSomFighterStepOne/StafetDeltagSomFighterStepOne.init.js'\n\nimport StafetDeltagSomFighterStepThree from './components/StafetDeltagSomFighterStepThree/StafetDeltagSomFighterStepThree.init.js'\n\nimport StafetDeltagSomFighterStepTwo from './components/StafetDeltagSomFighterStepTwo/StafetDeltagSomFighterStepTwo.init.js'\n\nimport StafetDonationFlow from './components/StafetDonationFlow/StafetDonationFlow.init.js'\n\nimport StafetDonationStepOne from './components/StafetDonationStepOne/StafetDonationStepOne.init.js'\n\nimport StafetDonationStepPrivat from './components/StafetDonationStepPrivat/StafetDonationStepPrivat.init.js'\n\nimport StafetDonationStepTwo from './components/StafetDonationStepTwo/StafetDonationStepTwo.init.js'\n\nimport StafetDonationStepVirksomhed from './components/StafetDonationStepVirksomhed/StafetDonationStepVirksomhed.init.js'\n\nimport StafetDonationTaendLysFlow from './components/StafetDonationTaendLysFlow/StafetDonationTaendLysFlow.init.js'\n\nimport StafetDonationTaendLysStepOne from './components/StafetDonationTaendLysStepOne/StafetDonationTaendLysStepOne.init.js'\n\nimport StafetDonationTaendLysStepThree from './components/StafetDonationTaendLysStepThree/StafetDonationTaendLysStepThree.init.js'\n\nimport StafetDonationTaendLysStepTwo from './components/StafetDonationTaendLysStepTwo/StafetDonationTaendLysStepTwo.init.js'\n\nimport StafetEditHoldFlow from './components/StafetEditHoldFlow/StafetEditHoldFlow.init.js'\n\nimport StafetHeader from './components/StafetHeader/StafetHeader.init.js'\n\nimport StafetLysPoserList from './components/StafetLysPoserList/StafetLysPoserList.init.js'\n\nimport StafetOpretHoldFlow from './components/StafetOpretHoldFlow/StafetOpretHoldFlow.init.js'\n\nimport StafetOpretHoldStepOne from './components/StafetOpretHoldStepOne/StafetOpretHoldStepOne.init.js'\n\nimport StafetOpretHoldStepTwo from './components/StafetOpretHoldStepTwo/StafetOpretHoldStepTwo.init.js'\n\nimport StafetPayment from './components/StafetPayment/StafetPayment.init.js'\n\nimport StafetProfileForm from './components/StafetProfileForm/StafetProfileForm.init.js'\n\nimport StafetRoundCounter from './components/StafetRoundCounter/StafetRoundCounter.init.js'\n\nimport StafetRoundCounterAccordion from './components/StafetRoundCounterAccordion/StafetRoundCounterAccordion.init.js'\n\nimport StickySliderElement from './components/StickySliderElement/StickySliderElement.init.js'\n\nimport SubbrandHeader from './components/SubbrandHeader/SubbrandHeader.init.js'\n\nimport SubNavigation from './components/SubNavigation/SubNavigation.init.js'\n\nimport SuccessPage from './components/SuccessPage/SuccessPage.init.js'\n\nimport SupportSelector from './components/SupportSelector/SupportSelector.init.js'\n\nimport TeamList from './components/TeamList/TeamList.init.js'\n\nimport TeamListCard from './components/TeamListCard/TeamListCard.init.js'\n\nimport TextEditor from './components/TextEditor/TextEditor.init.js'\n\nimport TheHeader from './components/TheHeader/TheHeader.init.js'\n\nimport ThemeCard from './components/ThemeCard/ThemeCard.init.js'\n\nimport ThemeSection from './components/ThemeSection/ThemeSection.init.js'\n\nimport TilmeldHoldKvittering from './components/TilmeldHoldKvittering/TilmeldHoldKvittering.init.js'\n\nimport TilmeldProfilKvittering from './components/TilmeldProfilKvittering/TilmeldProfilKvittering.init.js'\n\nimport UploadNewFileOverlay from './components/UploadNewFileOverlay/UploadNewFileOverlay.init.js'\n\nimport UserPostsList from './components/UserPostsList/UserPostsList.init.js'\n\nimport VideoComponent from './components/VideoComponent/VideoComponent.init.js'\n\nimport WebshopHeader from './components/WebshopHeader/WebshopHeader.init.js'\n\nimport WebshopPaymentSelector from './components/WebshopPaymentSelector/WebshopPaymentSelector.init.js'\n\n\nexport default function(Store){\n FactBox(Store)\n SecondaryArticleSpots(Store)\n TooltipComponent(Store)\n PageIdInit(Store)\n Accordion(Store)\n ActionResponseBox(Store)\n ActiveGroups(Store)\n ActiveRoleListCard(Store)\n ActiveRolesList(Store)\n ActivityCard(Store)\n AdvancedRadio(Store)\n AmountSelector(Store)\n ArticleAnchors(Store)\n ArticleOverlay(Store)\n AttachmentsEditor(Store)\n AttachmentsViewer(Store)\n Basket(Store)\n BasketAside(Store)\n BasketCard(Store)\n BreadCrumb(Store)\n BurgerMenu(Store)\n BuySection(Store)\n CalendarOverlay(Store)\n CaseCard(Store)\n CaseCarousel(Store)\n CaseModule(Store)\n CategoryPicker(Store)\n ChangesSaved(Store)\n CheckoutContent(Store)\n CheckoutHeader(Store)\n CheckoutStepOne(Store)\n CheckoutStepThree(Store)\n CheckoutStepTwo(Store)\n ClosedGroupOverlay(Store)\n ColorPreview(Store)\n ConfirmChanges(Store)\n ConfirmDeleteOverlay(Store)\n ConfirmDeleteProfile(Store)\n ContactBanner(Store)\n ContentCarousel(Store)\n ContributionSelector(Store)\n CreateCancerForumProfile(Store)\n CreateEvent(Store)\n CreateFolderOverlay(Store)\n CreateFrivilligeProfile(Store)\n CreateFrivilligJob(Store)\n CreateGallery(Store)\n CreateNewFileOverlay(Store)\n CreatePost(Store)\n CTABox(Store)\n DeleteCancerProfileModal(Store)\n DeleteCommentOverlay(Store)\n DeleteEventModal(Store)\n DeleteFrivilligjobOverlay(Store)\n DeletePostOverlay(Store)\n DeleteRoleOverlay(Store)\n DeliveryAddress(Store)\n DeliveryCard(Store)\n Dictionary(Store)\n DictionaryList(Store)\n DictionaryWord(Store)\n DirectMessageNavigation(Store)\n DirectMessagesContent(Store)\n DirectMessageThread(Store)\n DocumentAndFolderList(Store)\n DonationAmount(Store)\n DonationCard(Store)\n DonationReceiptOverlay(Store)\n DropdownWithTags(Store)\n EditFrivilligProfile(Store)\n FeaturedGroups(Store)\n FeaturedPostSpotCard(Store)\n FeatureNavigationTeam(Store)\n FileListCard(Store)\n FilterOverlay(Store)\n FlowEditModal(Store)\n FlowHeader(Store)\n FormAddressField(Store)\n FormAddressFieldGroup(Store)\n FormCheckbox(Store)\n FormInputCprField(Store)\n FormInputCvrField(Store)\n FormInputDateField(Store)\n FormInputDropdown(Store)\n FormInputEmailField(Store)\n FormInputNameField(Store)\n FormInputPhoneField(Store)\n FormInputTextarea(Store)\n FormInputTextField(Store)\n FormRadioGroup(Store)\n FormStepSubmitting(Store)\n FormStepZero(Store)\n ForumEditProfile(Store)\n FrivilligeCheckoutContent(Store)\n FrivilligeCheckoutStepOne(Store)\n FrivilligeCheckoutStepTwo(Store)\n FrivilligePostsList(Store)\n FrivilligeShopWrongRoleModal(Store)\n FrivilligGroupHero(Store)\n FrivilligjobAside(Store)\n FrivilligjobCard(Store)\n FullscreenMedia(Store)\n FundraiseForm(Store)\n FundraisingAsideVue(Store)\n FundraisingCard(Store)\n FundraisingHero(Store)\n FVLConfirmDeleteProfile(Store)\n GalleryCard(Store)\n GeneralSearch(Store)\n GroupCard(Store)\n GroupDetails(Store)\n GroupPost(Store)\n GroupSearchResult(Store)\n GruppeadgangsanmodningList(Store)\n GtmTracker(Store)\n HeroGeneralSearch(Store)\n HeroSectionCancerforum(Store)\n HoldetsDeltagere(Store)\n HoldetsDonationer(Store)\n HoldetsLys(Store)\n HoldetsRoundCounterOverlay(Store)\n HoldOprettelseKvittering(Store)\n HoldRedigerKvittering(Store)\n ImageGallery(Store)\n IndependentHeader(Store)\n InfoCarousel(Store)\n LocationCard(Store)\n LoginOverlay(Store)\n LotteryForm(Store)\n MaterialCard(Store)\n MemberListOverlay(Store)\n MemberListOverlayFVL(Store)\n MemberOverlay(Store)\n MemberOverlayProfileCard(Store)\n MitIdLogout(Store)\n MoveFileOverlay(Store)\n NoSearchResults(Store)\n NotificationList(Store)\n OpretHoldOverlay(Store)\n OrdreOverview(Store)\n OverlayLinkInterceptor(Store)\n PageOverlay(Store)\n PersonalDonationStep2a(Store)\n PersonalDonationStep3(Store)\n PersonalFundraising(Store)\n PickUpAddress(Store)\n PodcastSliderCard(Store)\n PostAside(Store)\n PostComment(Store)\n PostComments(Store)\n PostHeader(Store)\n PostHeaderAddComment(Store)\n PostsList(Store)\n PreFooter(Store)\n ProductCard(Store)\n ProductDetail(Store)\n ProductList(Store)\n ProductsCardsSlider(Store)\n ProfileDeleted(Store)\n ProfilePicture(Store)\n ProjectCard(Store)\n ProjectsList(Store)\n ReceiptContent(Store)\n RelayList(Store)\n ReportCard(Store)\n RequestRole(Store)\n RolesFormContent(Store)\n SearchAndCTA(Store)\n SearchFilteredTags(Store)\n SearchOverlay(Store)\n SessionStorageFormularTest(Store)\n SignUpButton(Store)\n SignUpForm(Store)\n SimpleCard(Store)\n SortDropdown(Store)\n SpotCard(Store)\n SpotCardGrid(Store)\n StafetActions(Store)\n StafetAddDeltager(Store)\n StafetAddMoreDeltagerFlow(Store)\n StafetDeltagPaaHoldFlow(Store)\n StafetDeltagPaaHoldStepFour(Store)\n StafetDeltagPaaHoldStepOne(Store)\n StafetDeltagPaaHoldStepThree(Store)\n StafetDeltagPaaHoldStepTwo(Store)\n StafetDeltagSomFighterFlow(Store)\n StafetDeltagSomFighterStepOne(Store)\n StafetDeltagSomFighterStepThree(Store)\n StafetDeltagSomFighterStepTwo(Store)\n StafetDonationFlow(Store)\n StafetDonationStepOne(Store)\n StafetDonationStepPrivat(Store)\n StafetDonationStepTwo(Store)\n StafetDonationStepVirksomhed(Store)\n StafetDonationTaendLysFlow(Store)\n StafetDonationTaendLysStepOne(Store)\n StafetDonationTaendLysStepThree(Store)\n StafetDonationTaendLysStepTwo(Store)\n StafetEditHoldFlow(Store)\n StafetHeader(Store)\n StafetLysPoserList(Store)\n StafetOpretHoldFlow(Store)\n StafetOpretHoldStepOne(Store)\n StafetOpretHoldStepTwo(Store)\n StafetPayment(Store)\n StafetProfileForm(Store)\n StafetRoundCounter(Store)\n StafetRoundCounterAccordion(Store)\n StickySliderElement(Store)\n SubbrandHeader(Store)\n SubNavigation(Store)\n SuccessPage(Store)\n SupportSelector(Store)\n TeamList(Store)\n TeamListCard(Store)\n TextEditor(Store)\n TheHeader(Store)\n ThemeCard(Store)\n ThemeSection(Store)\n TilmeldHoldKvittering(Store)\n TilmeldProfilKvittering(Store)\n UploadNewFileOverlay(Store)\n UserPostsList(Store)\n VideoComponent(Store)\n WebshopHeader(Store)\n WebshopPaymentSelector(Store)\n}","import store from 'store'\r\n\r\nconst el = '[data-content=CalendarOverlay]'\r\n\r\nexport default function(Store){\r\n const DOM = document.querySelectorAll(el)\r\n if(DOM.length){\r\n DOM.forEach((CalendarOverlayDOM)=>{\r\n const groupId = CalendarOverlayDOM.dataset.groupId\r\n const skip = parseInt(CalendarOverlayDOM.dataset.skip) ?? 0\r\n const take = parseInt(CalendarOverlayDOM.dataset.take) ?? 10\r\n const createEventUrl = CalendarOverlayDOM.dataset.createEventUrl\r\n const allowedToEdit = CalendarOverlayDOM.dataset.allowedToEdit === \"true\" ? true : false\r\n\r\n store.commit('main/set_page_overlay_content_data', { groupId, skip, take, createEventUrl, allowedToEdit })\r\n })\r\n }\r\n}","// Loads labels from DOM elements data-json into a collection.\r\n// JSON must be structured as an object with props 'collectionName' and 'labels'.\r\nimport Store from 'store'\r\n\r\ndocument.querySelectorAll('[data-labels]').forEach((element) => {\r\n const data = JSON.parse(element.dataset.labels)\r\n\r\n if (Array.isArray(data)) {\r\n data.forEach((labels) => {\r\n Store.commit('labels/set_labelCollection', labels)\r\n })\r\n return\r\n }\r\n\r\n Store.commit('labels/set_labelCollection', data)\r\n})\r\n","import Store from 'store'\r\nimport componentsToInititalize from './component-index.generated'\r\nimport 'foundation/js/loadLabels'\r\nimport 'foundation/js/animatedButtonHandler'\r\nimport 'foundation/js/formFileUploads'\r\n\r\ncomponentsToInititalize(Store)\r\n","import { createApp } from 'vue'\r\nimport SecondaryArticleSpots from './SecondaryArticleSpots'\r\n\r\nconst el = '.kb-component--secondary-article-spots'\r\n\r\nexport default function (Store) {\r\n const DOM = document.querySelectorAll(el)\r\n if (DOM && DOM.length) {\r\n DOM.forEach((SecondaryArticleSpotsDOM) => {\r\n const props = {\r\n contentJson: SecondaryArticleSpotsDOM.dataset.contentjson\r\n ? JSON.parse(SecondaryArticleSpotsDOM.dataset.contentjson)\r\n : [],\r\n link: SecondaryArticleSpotsDOM.dataset.link\r\n ? JSON.parse(SecondaryArticleSpotsDOM.dataset.link)\r\n : null,\r\n carouselId: SecondaryArticleSpotsDOM.id\r\n }\r\n\r\n const component = createApp(SecondaryArticleSpots, props).use(Store)\r\n component.mount(SecondaryArticleSpotsDOM)\r\n })\r\n }\r\n}\r\n","const el = '.kb-component--page-id-init'\r\n\r\nexport default function (Store) {\r\n const DOM = document.querySelectorAll(el)\r\n if (!DOM || DOM.length < 1) {\r\n console.warn(\r\n 'No page id init found. The page id from the store will therefore not be set'\r\n )\r\n return false\r\n }\r\n\r\n if (DOM.length > 1) {\r\n throw new Error('Found multiple page id inits')\r\n }\r\n\r\n Store.dispatch('main/setPageId', DOM[0].dataset.pageId)\r\n}\r\n","import {createApp} from 'vue'\r\nimport ActionResponseBox from './ActionResponseBox'\r\n\r\nconst el = '.kb-component--action-response-box'\r\n\r\nexport default function(Store){\r\n const DOM = document.querySelectorAll(el)\r\n if(DOM.length){\r\n DOM.forEach((ActionResponseBoxDOM)=>{\r\n const props = {\r\n actionResponseText: ActionResponseBoxDOM.dataset.actionResponseText,\r\n lifeTime: Number(ActionResponseBoxDOM.dataset.lifeTime),\r\n fadeDuration: Number(ActionResponseBoxDOM.dataset.fadeDuration)\r\n }\r\n const component = createApp(ActionResponseBox, props).use(Store)\r\n component.mount(ActionResponseBoxDOM)\r\n })\r\n }\r\n}","import {createApp} from 'vue'\r\nimport ActiveGroups from './ActiveGroups'\r\n\r\nconst el = '.kb-component--active-groups'\r\n\r\nexport default function(Store) {\r\n const DOM = document.querySelectorAll(el)\r\n if (DOM.length) {\r\n DOM.forEach((ActiveGroupsDOM) => {\r\n const props = {\r\n guid: ActiveGroupsDOM.dataset.guid,\r\n spotCard: ActiveGroupsDOM.dataset.spotCard ? JSON.parse(ActiveGroupsDOM.dataset.spotCard) : null,\r\n }\r\n const component = createApp(ActiveGroups, props).use(Store)\r\n component.mount(ActiveGroupsDOM)\r\n })\r\n }\r\n}","import {createApp} from 'vue'\r\nimport ActiveRoleListCard from './ActiveRoleListCard'\r\n\r\nconst el = '.kb-component--active-role-list-card'\r\n\r\nexport default function(Store){\r\n const DOM = document.querySelectorAll(el)\r\n if(DOM.length){\r\n DOM.forEach((ActiveRoleListCardDOM)=>{\r\n const roleCardData = ActiveRoleListCardDOM.dataset.roleCard \r\n ? JSON.parse(ActiveRoleListCardDOM.dataset.roleCard) \r\n : null\r\n const component = createApp(ActiveRoleListCard, {roleCardData}).use(Store)\r\n component.mount(ActiveRoleListCardDOM)\r\n })\r\n }\r\n}","import {createApp} from 'vue'\r\nimport ActiveRolesList from './ActiveRolesList'\r\n\r\nconst el = '.kb-component--active-roles-list'\r\n\r\nexport default function(Store){\r\n const DOM = document.querySelectorAll(el)\r\n if(DOM.length){\r\n DOM.forEach((ActiveRolesListDOM)=> {\r\n const rolesData = ActiveRolesListDOM.dataset.rolesData \r\n ? JSON.parse(ActiveRolesListDOM.dataset.rolesData) \r\n : null\r\n const component = createApp(ActiveRolesList, { rolesData }).use(Store)\r\n component.mount(ActiveRolesListDOM)\r\n })\r\n }\r\n}","import { createApp } from 'vue'\r\nimport ActivityCard from './ActivityCard'\r\n\r\nconst el = '.kb-component--activity-card'\r\n\r\nexport default function (Store) {\r\n const DOM = document.querySelectorAll(el)\r\n if (DOM.length) {\r\n DOM.forEach((ActivityCardDOM) => {\r\n const component = createApp(ActivityCard).use(Store)\r\n component.mount(ActivityCardDOM)\r\n })\r\n }\r\n}\r\n","import { createApp } from 'vue'\r\nimport AdvancedRadio from './AdvancedRadio'\r\n\r\nconst el = '.kb-component--advanced-radio'\r\n\r\nexport default function (Store) {\r\n const DOM = document.querySelectorAll(el)\r\n if (DOM && DOM.length) {\r\n DOM.forEach((AdvancedRadioDOM) => {\r\n const props = {\r\n type: AdvancedRadioDOM.dataset.type,\r\n tooltipText: AdvancedRadioDOM.dataset.tooltiptext,\r\n errorMessageLabel: AdvancedRadioDOM.dataset.errormessagelabel,\r\n helpMessageLabel: AdvancedRadioDOM.dataset.helpmessagelabel,\r\n placeholder: AdvancedRadioDOM.dataset.placeholder,\r\n label: AdvancedRadioDOM.dataset.label,\r\n legend: AdvancedRadioDOM.dataset.legend,\r\n isRequired: !!(AdvancedRadioDOM.dataset.isrequired === 'true'),\r\n fieldName: AdvancedRadioDOM.dataset.fieldname,\r\n radioOptions: JSON.parse(AdvancedRadioDOM.dataset.radiooptions)\r\n }\r\n const component = createApp(AdvancedRadio, props).use(Store)\r\n component.mount(AdvancedRadioDOM)\r\n })\r\n }\r\n}\r\n","import { createApp } from 'vue'\r\nimport AmountSelector from './AmountSelector'\r\n\r\nconst el = '.kb-component--amount-selector'\r\n\r\nexport default function (Store) {\r\n const DOM = document.querySelectorAll(el)\r\n if (DOM && DOM.length) {\r\n DOM.forEach((AmountSelectorDOM) => {\r\n const component = createApp(AmountSelector).use(Store)\r\n component.mount(AmountSelectorDOM)\r\n })\r\n }\r\n}\r\n","import { createApp } from 'vue'\r\nimport ArticleAnchors from './ArticleAnchors'\r\n\r\nconst el = '.kb-component--article-anchors'\r\n\r\nexport default function (Store) {\r\n const DOM = document.querySelectorAll(el)\r\n if (DOM.length) {\r\n DOM.forEach((ArticleAnchor) => {\r\n if (ArticleAnchor.hasAttribute('data-v-app')) return false\r\n const component = createApp(ArticleAnchors).use(Store)\r\n component.mount(ArticleAnchor)\r\n })\r\n }\r\n}\r\n","import {createApp} from 'vue'\r\nimport AttachmentsEditor from './AttachmentsEditor'\r\n\r\nconst el = '.kb-component--community-attachments-editor'\r\n\r\nexport default function(Store) {\r\n const DOM = document.querySelectorAll(el)\r\n if(DOM.length){\r\n DOM.forEach((CommunityAttachmentsDOM)=>{\r\n const props = {\r\n acceptedFileTypes: CommunityAttachmentsDOM.dataset.acceptedFileTypes,\r\n files: JSON.parse(CommunityAttachmentsDOM.dataset.files),\r\n maxAttachments: parseInt(CommunityAttachmentsDOM.dataset.maxAttachments)\r\n }\r\n const component = createApp(AttachmentsEditor, props).use(Store)\r\n component.mount(CommunityAttachmentsDOM)\r\n })\r\n }\r\n}","import {createApp} from 'vue'\r\nimport AttachmentsViewer from './AttachmentsViewer'\r\n\r\nconst el = '.kb-component--community-attachments-viewer'\r\n\r\nexport default function(Store){\r\n const DOM = document.querySelectorAll(el)\r\n if(DOM.length){\r\n DOM.forEach((CommunityAttachmentsViewerDOM)=>{\r\n const props = {\r\n files: JSON.parse(CommunityAttachmentsViewerDOM.dataset.files)\r\n }\r\n const component = createApp(AttachmentsViewer, props).use(Store)\r\n component.mount(CommunityAttachmentsViewerDOM)\r\n })\r\n }\r\n}","import { createApp } from 'vue'\r\nimport Basket from './Basket'\r\n\r\nconst el = '.kb-component--basket'\r\n\r\nexport default function (Store) {\r\n const DOM = document.querySelectorAll(el)\r\n if (DOM.length) {\r\n DOM.forEach((BasketDOM) => {\r\n const asideResults = BasketDOM.dataset.asideResults\r\n ? JSON.parse(BasketDOM.dataset.asideResults)\r\n : {}\r\n const component = createApp(Basket, { asideResults }).use(Store)\r\n component.mount(BasketDOM)\r\n })\r\n }\r\n}\r\n","import { createApp } from 'vue'\r\nimport BasketAside from './BasketAside'\r\n\r\nconst el = '.kb-component--basket-aside'\r\n\r\nexport default function (Store) {\r\n const DOM = document.querySelectorAll(el)\r\n if (DOM.length) {\r\n DOM.forEach((BasketAsideDOM) => {\r\n const component = createApp(BasketAside, { asideResults }).use(\r\n Store\r\n )\r\n component.mount(BasketAsideDOM)\r\n })\r\n }\r\n}\r\n","import { createApp } from 'vue'\r\nimport BasketCard from './BasketCard'\r\n\r\nconst el = '.kb-component--basket-card'\r\n\r\nexport default function (Store) {\r\n const DOM = document.querySelectorAll(el)\r\n if (DOM.length) {\r\n DOM.forEach((BasketCardDOM) => {\r\n const component = createApp(BasketCard).use(Store)\r\n component.mount(BasketCardDOM)\r\n })\r\n }\r\n}\r\n","import { createApp } from 'vue'\r\nimport BuySection from './BuySection'\r\n\r\nconst el = '.kb-component--buy-section'\r\n\r\nexport default function (Store) {\r\n const DOM = document.querySelectorAll(el)\r\n \r\n if (DOM && DOM.length) {\r\n DOM.forEach((BuySectionDOM) => {\r\n const props = {\r\n variants: BuySectionDOM.dataset.variants??'',\r\n currentVariantSku: BuySectionDOM.dataset.currentVariantSku,\r\n pdf: BuySectionDOM.dataset.pdf??'',\r\n soldOutText: BuySectionDOM.dataset.soldOutText??'',\r\n basketPageUrl: BuySectionDOM.dataset.basketPageUrl??'',\r\n hasRequiredRights: BuySectionDOM.dataset.hasRequiredRights,\r\n rolePageUrl: BuySectionDOM.dataset.rolePageUrl ?? ''\r\n }\r\n const component = createApp(BuySection, props).use(Store)\r\n component.mount(BuySectionDOM)\r\n })\r\n }\r\n}\r\n","import { createApp } from 'vue'\r\nimport CaseCard from './CaseCard'\r\n\r\nconst el = '.kb-component--case-card'\r\n\r\nexport default function (Store) {\r\n const DOM = document.querySelectorAll(el)\r\n if (DOM && DOM.length) {\r\n DOM.forEach((CaseCardDOM) => {\r\n const component = createApp(CaseCard).use(Store)\r\n component.mount(CaseCardDOM)\r\n })\r\n }\r\n}\r\n","import { createApp } from 'vue'\r\nimport CaseCarousel from './CaseCarousel'\r\n\r\nconst el = '.kb-component--case-carousel'\r\n\r\nexport default function (Store) {\r\n const DOM = document.querySelectorAll(el)\r\n if (DOM && DOM.length) {\r\n DOM.forEach((CaseCarouselDOM) => {\r\n const props = {\r\n carouselId: CaseCarouselDOM.id,\r\n contentJson: CaseCarouselDOM.dataset.contentjson\r\n ? JSON.parse(CaseCarouselDOM.dataset.contentjson)\r\n : [],\r\n link: CaseCarouselDOM.dataset.link\r\n ? JSON.parse(CaseCarouselDOM.dataset.link)\r\n : null,\r\n type: CaseCarouselDOM.dataset.type\r\n }\r\n\r\n const component = createApp(CaseCarousel, props).use(Store)\r\n component.mount(CaseCarouselDOM)\r\n })\r\n }\r\n}\r\n","import { createApp } from 'vue'\r\nimport options from './CaseModule.options'\r\n\r\nconst el = '.kb-component--case-module'\r\n\r\nexport default function (Store) {\r\n const DOM = document.querySelectorAll(el)\r\n if (DOM && DOM.length) {\r\n DOM.forEach((CaseModuleDOM) => {\r\n const template = CaseModuleDOM.innerHTML\r\n options.template = template\r\n const glideId = CaseModuleDOM.querySelector('.glide').id\r\n const component = createApp(options, { glideId }).use(Store)\r\n component.mount(CaseModuleDOM)\r\n })\r\n }\r\n}\r\n","import { createApp } from 'vue'\r\nimport CategoryPicker from './CategoryPicker'\r\n\r\nconst el = '.kb-component--category-picker'\r\n\r\nexport default function (Store) {\r\n const DOM = document.querySelectorAll(el)\r\n if (DOM.length) {\r\n DOM.forEach((CategoryPickerDOM) => {\r\n const categories = CategoryPickerDOM.dataset.categories\r\n ? JSON.parse(CategoryPickerDOM.dataset.categories)\r\n : []\r\n const component = createApp(CategoryPicker, { categories }).use(\r\n Store\r\n )\r\n component.mount(CategoryPickerDOM)\r\n })\r\n }\r\n}\r\n","import {createApp} from 'vue'\r\nimport ChangesSaved from './ChangesSaved'\r\n\r\nconst el = '.kb-component--changes-saved'\r\n\r\nexport default function(Store){\r\n const DOM = document.querySelectorAll(el)\r\n if(DOM.length){\r\n DOM.forEach((ChangesSavedDOM)=>{\r\n const component = createApp(ChangesSaved).use(Store)\r\n component.mount(ChangesSavedDOM)\r\n })\r\n }\r\n}","import { createApp } from 'vue'\r\nimport CheckoutContent from './CheckoutContent'\r\n\r\nconst el = '.kb-component--checkout-content'\r\n\r\nexport default function (Store) {\r\n const DOM = document.querySelectorAll(el)\r\n if (DOM.length) {\r\n DOM.forEach((CheckoutContentDOM) => {\r\n const component = createApp(CheckoutContent).use(Store)\r\n component.mount(CheckoutContentDOM)\r\n })\r\n }\r\n}\r\n","import { createApp } from 'vue'\r\nimport options from './CheckoutStepOne.options'\r\n\r\nconst el = '.kb-component--checkout-step-one'\r\n\r\nexport default function (Store) {\r\n const DOM = document.querySelectorAll(el)\r\n\r\n if (DOM.length) {\r\n DOM.forEach((DOM) => {\r\n const component = createApp(options).use(Store)\r\n component.mount(DOM)\r\n })\r\n }\r\n}\r\n","import { createApp } from 'vue'\r\nimport CheckoutStepThree from './CheckoutStepThree'\r\n\r\nconst el = '.kb-component--checkout-step-three'\r\n\r\nexport default function (Store) {\r\n const DOM = document.querySelectorAll(el)\r\n if (DOM.length) {\r\n DOM.forEach((CheckoutStepThreeDOM) => {\r\n const component = createApp(CheckoutStepThree).use(Store)\r\n component.mount(CheckoutStepThreeDOM)\r\n })\r\n }\r\n}\r\n","import { createApp } from 'vue'\r\nimport CheckoutStepTwo from './CheckoutStepTwo'\r\n\r\nconst el = '.kb-component--checkout-step-two'\r\n\r\nexport default function (Store) {\r\n const DOM = document.querySelectorAll(el)\r\n if (DOM.length) {\r\n DOM.forEach((CheckoutStepTwoDOM) => {\r\n const addressResults = CheckoutStepTwoDOM.dataset.addressResults\r\n ? JSON.parse(CheckoutStepTwoDOM.dataset.addressResults)\r\n : null\r\n const component = createApp(CheckoutStepTwo, {\r\n addressResults\r\n }).use(Store)\r\n component.mount(CheckoutStepTwoDOM)\r\n })\r\n }\r\n}\r\n","import {createApp} from 'vue'\r\nimport store from 'store'\r\n\r\nconst el = '[data-content=ClosedGroupOverlay]'\r\n\r\nexport default function(Store){\r\n const DOM = document.querySelectorAll(el)\r\n if(DOM.length){\r\n DOM.forEach((ClosedGroupOverlayDOM)=>{\r\n const groupId = ClosedGroupOverlayDOM.dataset.groupId\r\n store.commit('main/set_page_overlay_content_data', { groupId })\r\n })\r\n }\r\n}","import {createApp} from 'vue'\r\nimport ConfirmChanges from './ConfirmChanges'\r\n\r\nconst el = '.kb-component--confirm-changes'\r\n\r\nexport default function(Store){\r\n const DOM = document.querySelectorAll(el)\r\n if(DOM.length){\r\n DOM.forEach((ConfirmChangesDOM)=>{\r\n const component = createApp(ConfirmChanges).use(Store)\r\n component.mount(ConfirmChangesDOM)\r\n })\r\n }\r\n}","import {createApp} from 'vue'\r\nimport ConfirmDeleteOverlay from './ConfirmDeleteOverlay'\r\n\r\nconst el = '.kb-component--confirm-delete-overlay'\r\n\r\nexport default function(Store){\r\n const DOM = document.querySelectorAll(el)\r\n if(DOM.length){\r\n DOM.forEach((ConfirmDeleteOverlayDOM)=>{\r\n const component = createApp(ConfirmDeleteOverlay).use(Store)\r\n component.mount(ConfirmDeleteOverlayDOM)\r\n })\r\n }\r\n}","import {createApp} from 'vue'\r\nimport ConfirmDeleteProfile from './ConfirmDeleteProfile'\r\n\r\nconst el = '.kb-component--confirm-delete-profile'\r\n\r\nexport default function(Store){\r\n const DOM = document.querySelectorAll(el)\r\n if(DOM.length){\r\n DOM.forEach((ConfirmDeleteProfileDOM)=>{\r\n const component = createApp(ConfirmDeleteProfile).use(Store)\r\n component.mount(ConfirmDeleteProfileDOM)\r\n })\r\n }\r\n}","import { createApp } from 'vue'\r\nimport options from './ContactBanner.options'\r\n\r\nconst el = '.kb-component--contact-banner'\r\n\r\nexport default function (Store) {\r\n const DOM = document.querySelectorAll(el)\r\n if (DOM.length) {\r\n DOM.forEach((ContactBanner) => {\r\n if (ContactBanner.hasAttribute('data-v-app')) return false\r\n const component = createApp(options).use(Store)\r\n component.mount(ContactBanner)\r\n })\r\n }\r\n}\r\n","import { createApp } from 'vue'\r\nimport ContentCarousel from './ContentCarousel'\r\n\r\nconst el = '.kb-component--content-carousel'\r\n\r\nexport default function (Store) {\r\n const DOM = document.querySelectorAll(el)\r\n if (DOM) {\r\n DOM.forEach((CarouselDOM) => {\r\n if (CarouselDOM.hasAttribute('data-v-app')) return false\r\n const props = {\r\n carouselId: CarouselDOM.id,\r\n contentJson: CarouselDOM.dataset.contentjson\r\n ? JSON.parse(CarouselDOM.dataset.contentjson)\r\n : [],\r\n glideBehaviour: CarouselDOM.dataset.glideBehaviour,\r\n type: CarouselDOM.dataset.type,\r\n link: CarouselDOM.dataset.link\r\n ? JSON.parse(CarouselDOM.dataset.link)\r\n : null\r\n }\r\n\r\n const component = createApp(ContentCarousel, props).use(Store)\r\n component.mount(CarouselDOM)\r\n })\r\n }\r\n}\r\n","import { createApp } from 'vue'\r\nimport options from './ContributionSelector.options'\r\n\r\nconst el = '.kb-component--contribution-selector'\r\n\r\nexport default function (Store) {\r\n const DOM = document.querySelectorAll(el)\r\n if (DOM.length) {\r\n DOM.forEach((ContributionSelectorDOM) => {\r\n const template = ContributionSelectorDOM.outerHTML\r\n const data = JSON.parse(ContributionSelectorDOM.dataset.data)\r\n options.template = template\r\n const component = createApp(options, { data }).use(Store)\r\n component.mount(ContributionSelectorDOM)\r\n })\r\n }\r\n}\r\n","import {createApp} from 'vue'\r\nimport CreateCancerForumProfile from './CreateCancerForumProfile'\r\n\r\nconst el = '.kb-component--create-cancer-forum-profile'\r\n\r\nexport default function(Store) {\r\n const DOM = document.querySelectorAll(el)\r\n if (DOM.length) {\r\n DOM.forEach((CreateCancerForumProfileDOM) => {\r\n const component = createApp(CreateCancerForumProfile).use(Store)\r\n component.mount(CreateCancerForumProfileDOM)\r\n })\r\n }\r\n}","import {createApp} from 'vue'\r\nimport CreateEvent from './CreateEvent'\r\nimport handleComponentProps from 'foundation/js/utils/handleComponentProps'\r\n\r\nconst el = '.kb-component--create-event'\r\n\r\nexport default function(Store){\r\n const DOM = document.querySelectorAll(el)\r\n if(DOM.length){\r\n DOM.forEach((CreateEventDOM)=>{\r\n const props = handleComponentProps(CreateEvent, CreateEventDOM)\r\n const component = createApp(CreateEvent, props).use(Store)\r\n component.mount(CreateEventDOM)\r\n })\r\n }\r\n}","import {createApp} from 'vue'\r\nimport CreateFolderOverlay from './CreateFolderOverlay'\r\n\r\nconst el = '.kb-component--create-folder-overlay'\r\n\r\nexport default function(Store){\r\n const DOM = document.querySelectorAll(el)\r\n if(DOM.length){\r\n DOM.forEach((CreateFolderOverlayDOM)=>{\r\n const props = {\r\n groupId: CreateFolderOverlay.dataset.groupId ?? \"\",\r\n content: CreateFolderOverlay.dataset.content ? JSON.parse(CreateFolderOverlay.dataset.content) : null,\r\n }\r\n const component = createApp(CreateFolderOverlay, props).use(Store)\r\n component.mount(CreateFolderOverlayDOM)\r\n })\r\n }\r\n}","import {createApp} from 'vue'\r\nimport CreateFrivilligeProfile from './CreateFrivilligeProfile'\r\nimport handleComponentProps from 'foundation/js/utils/handleComponentProps'\r\n\r\nconst el = '.kb-component--create-frivillige-profile'\r\n\r\nexport default function(Store){\r\n const DOM = document.querySelectorAll(el)\r\n if(DOM.length){\r\n DOM.forEach((CreateFrivilligeProfileDOM)=>{\r\n const props = handleComponentProps(CreateFrivilligeProfile, CreateFrivilligeProfileDOM)\r\n const component = createApp(CreateFrivilligeProfile, props).use(Store)\r\n component.mount(CreateFrivilligeProfileDOM)\r\n })\r\n }\r\n}","import {createApp} from 'vue'\r\nimport CreateFrivilligJob from './CreateFrivilligJob'\r\nimport handleComponentProps from 'foundation/js/utils/handleComponentProps'\r\n\r\nconst el = '.kb-component--create-frivillig-job'\r\n\r\nexport default function(Store){\r\n const DOM = document.querySelectorAll(el)\r\n if(DOM.length){\r\n DOM.forEach((CreateFrivilligJobDOM)=>{\r\n const props = handleComponentProps(CreateFrivilligJob, CreateFrivilligJobDOM)\r\n const component = createApp(CreateFrivilligJob, {\r\n ...props,\r\n isEditContext: CreateFrivilligJobDOM.hasAttribute('is-edit-context')\r\n }).use(Store)\r\n component.mount(CreateFrivilligJobDOM)\r\n })\r\n }\r\n}","import {createApp} from 'vue'\r\nimport CreateGallery from './CreateGallery'\r\n\r\nconst el = '.kb-component--create-gallery'\r\n\r\nexport default function(Store){\r\n const DOM = document.querySelectorAll(el)\r\n if(DOM.length){\r\n DOM.forEach((CreateGalleryDOM)=>{\r\n const props = {\r\n groupName: CreateGalleryDOM.dataset.groupName ?? \"\",\r\n groupId: CreateGalleryDOM.dataset.groupId ?? \"\",\r\n content: CreateGalleryDOM.dataset.content ? JSON.parse(CreateGalleryDOM.dataset.content) : null,\r\n }\r\n const component = createApp(CreateGallery, props).use(Store)\r\n component.mount(CreateGalleryDOM)\r\n })\r\n }\r\n}","import {createApp} from 'vue'\r\nimport CreateNewFileOverlay from './CreateNewFileOverlay'\r\n\r\nconst el = '.kb-component--create-new-file-overlay'\r\n\r\nexport default function(Store){\r\n const DOM = document.querySelectorAll(el)\r\n if(DOM.length){\r\n DOM.forEach((CreateNewFileOverlayDOM)=>{\r\n const component = createApp(CreateNewFileOverlay).use(Store)\r\n component.mount(CreateNewFileOverlayDOM)\r\n })\r\n }\r\n}","import {createApp} from 'vue'\r\nimport CreatePost from './CreatePost'\r\n\r\nconst el = '.kb-component--create-post'\r\n\r\nexport default function(Store){\r\n const DOM = document.querySelectorAll(el)\r\n if(DOM.length){\r\n DOM.forEach((CreatePostDOM)=>{\r\n const props = {\r\n groupName: CreatePostDOM.dataset.groupName ?? \"\",\r\n groupDescription : CreatePostDOM.dataset.groupDescription ?? \"\",\r\n groupId: CreatePostDOM.dataset.groupId ?? \"\",\r\n postId: CreatePostDOM.dataset.postId ?? \"\",\r\n content: CreatePostDOM.dataset.content ? JSON.parse(CreatePostDOM.dataset.content) : null,\r\n }\r\n const component = createApp(CreatePost, props).use(Store)\r\n component.mount(CreatePostDOM)\r\n })\r\n }\r\n}","import {createApp} from 'vue'\r\nimport store from 'store'\r\nimport DeleteCancerProfileModal from './DeleteCancerProfileModal'\r\nconst el = '.kb-component--delete-cancer-profile-modal'\r\n\r\nexport default function(Store) {\r\n const DOM = document.querySelectorAll(el)\r\n if (DOM.length) {\r\n DOM.forEach((DeleteCancerProfileModalDOM) => {\r\n const props = {\r\n continueUrl: DeleteCancerProfileModalDOM.dataset.continueUrl,\r\n continueUrlWithData: DeleteCancerProfileModalDOM.dataset.continueUrlWithData,\r\n }\r\n const component = createApp(DeleteCancerProfileModal, props).use(Store)\r\n component.mount(DeleteCancerProfileModalDOM)\r\n })\r\n }\r\n}","import {createApp} from 'vue'\r\nimport DeleteEventModal from './DeleteEventModal'\r\n\r\nconst el = '.kb-component--delete-event-modal'\r\n\r\nexport default function(Store){\r\n const DOM = document.querySelectorAll(el)\r\n if(DOM.length){\r\n DOM.forEach((DeleteEventModalDOM)=>{\r\n const component = createApp(DeleteEventModal).use(Store)\r\n component.mount(DeleteEventModalDOM)\r\n })\r\n }\r\n}","import {createApp} from 'vue'\r\nimport DeleteFrivilligjobOverlay from './DeleteFrivilligjobOverlay'\r\n\r\nconst el = '.kb-component--delete-frivilligjob-overlay'\r\n\r\nexport default function(Store){\r\n const DOM = document.querySelectorAll(el)\r\n if(DOM.length){\r\n DOM.forEach((DeleteFrivilligjobOverlayDOM)=>{\r\n const component = createApp(DeleteFrivilligjobOverlay).use(Store)\r\n component.mount(DeleteFrivilligjobOverlayDOM)\r\n })\r\n }\r\n}","import {createApp} from 'vue'\r\nimport DeleteRoleOverlay from './DeleteRoleOverlay'\r\n\r\nconst el = '.kb-component--delete-role-overlay'\r\n\r\nexport default function(Store){\r\n const DOM = document.querySelectorAll(el)\r\n if(DOM.length){\r\n DOM.forEach((DeleteRoleOverlayDOM)=>{\r\n const component = createApp(DeleteRoleOverlay).use(Store)\r\n component.mount(DeleteRoleOverlayDOM)\r\n })\r\n }\r\n}","import { createApp } from 'vue'\r\nimport DeliveryAddress from './DeliveryAddress'\r\n\r\nconst el = '.kb-component--delivery-address'\r\n\r\nexport default function (Store) {\r\n const DOM = document.querySelectorAll(el)\r\n if (DOM.length) {\r\n DOM.forEach((DeliveryAddressDOM) => {\r\n const component = createApp(DeliveryAddress).use(Store)\r\n component.mount(DeliveryAddressDOM)\r\n })\r\n }\r\n}\r\n","import { createApp } from 'vue'\r\nimport DeliveryCard from './DeliveryCard'\r\n\r\nconst el = '.kb-component--delivery-card'\r\n\r\nexport default function (Store) {\r\n const DOM = document.querySelectorAll(el)\r\n\r\n if (DOM.length) {\r\n DOM.forEach((DeliveryCardDOM) => {\r\n const type = DeliveryCardDOM.dataset.type\r\n const svgIcon = DeliveryCardDOM.dataset.svgIcon\r\n const component = createApp(DeliveryCard, { type, svgIcon }).use(\r\n Store\r\n )\r\n component.mount(DeliveryCardDOM)\r\n })\r\n }\r\n}\r\n","import { createApp } from 'vue'\r\nimport DictionaryList from './DictionaryList.vue'\r\n\r\nconst el = '.kb-component--dictionary-list'\r\n\r\nexport default function (Store) {\r\n const DOM = document.querySelectorAll(el)\r\n if (DOM.length) {\r\n DOM.forEach((DictionaryListDOM) => {\r\n if (DictionaryListDOM.hasAttribute('data-v-app')) return false\r\n const dictionary = Array.from(\r\n DictionaryListDOM.querySelectorAll('.kb-dictionary-list__group')\r\n ).map((group) => {\r\n return {\r\n letter: group.querySelector(\r\n '.kb-dictionary-list__group__letter'\r\n ).textContent,\r\n words: Array.from(\r\n group.querySelectorAll(\r\n '.kb-dictionary-list__group__word A'\r\n )\r\n ).map((link) => {\r\n return {\r\n word: link.textContent,\r\n href: link.getAttribute('href')\r\n }\r\n })\r\n }\r\n })\r\n const showFilter = DictionaryListDOM.dataset.showfilter\r\n const component = createApp(DictionaryList, {\r\n dictionary,\r\n showFilter\r\n }).use(Store)\r\n component.mount(DictionaryListDOM)\r\n })\r\n }\r\n}\r\n","import {createApp} from 'vue'\r\nimport DirectMessageNavigation from './DirectMessageNavigation'\r\n\r\nconst el = '.kb-component--direct-message-navigation'\r\n\r\nexport default function(Store) {\r\n const DOM = document.querySelectorAll(el)\r\n if (DOM.length) {\r\n DOM.forEach((DirectMessageNavigationDOM) => {\r\n const externalData = JSON.parse(DirectMessageNavigationDOM.dataset.external)\r\n\r\n const props = {\r\n guid: DirectMessageNavigationDOM.dataset.guid,\r\n userData: externalData?.userData,\r\n chatId: externalData?.chatId\r\n }\r\n const component = createApp(DirectMessageNavigation, props).use(Store)\r\n component.mount(DirectMessageNavigationDOM)\r\n })\r\n }\r\n}","import {createApp} from 'vue'\r\nimport DirectMessagesContent from './DirectMessagesContent'\r\n\r\nconst el = '.kb-component--direct-messages-content'\r\n\r\nexport default function(Store){\r\n const DOM = document.querySelectorAll(el)\r\n if (DOM.length) {\r\n DOM.forEach((DirectMessagesContentDOM) => {\r\n const exturnalData = JSON.parse(DirectMessagesContentDOM.dataset.external)\r\n\r\n const props = {\r\n guid: DirectMessagesContentDOM.dataset.guid,\r\n chatId: exturnalData?.chatId,\r\n userData: exturnalData?.userData,\r\n }\r\n const component = createApp(DirectMessagesContent, props).use(Store)\r\n component.mount(DirectMessagesContentDOM)\r\n })\r\n }\r\n}","import {createApp} from 'vue'\r\nimport DirectMessageThread from './DirectMessageThread'\r\n\r\nconst el = '.kb-component--direct-message-thread'\r\n\r\nexport default function(Store) {\r\n const DOM = document.querySelectorAll(el)\r\n if (DOM.length) {\r\n DOM.forEach((DirectMessageThreadDOM) => {\r\n const externalData = JSON.parse(DirectMessageThreadDOM.dataset.external)\r\n\r\n const props = {\r\n chatId: externalData?.chatId,\r\n userData: externalData?.userData\r\n }\r\n\r\n const component = createApp(DirectMessageThread, props).use(Store)\r\n component.mount(DirectMessageThreadDOM)\r\n })\r\n }\r\n}","import {createApp} from 'vue'\r\nimport DocumentAndFolderList from './DocumentAndFolderList'\r\n\r\nconst el = '.kb-component--document-and-folder-list'\r\n\r\nexport default function(Store){\r\n const DOM = document.querySelectorAll(el)\r\n if(DOM.length){\r\n DOM.forEach((DocumentAndFolderListDOM)=>{\r\n const props = {\r\n guid: DocumentAndFolderListDOM.dataset.guid ?? '',\r\n gruppeKode: DocumentAndFolderListDOM.dataset.gruppeKode ?? '',\r\n cardButtonIcons: DocumentAndFolderListDOM.dataset.cardButtonIcons\r\n ? JSON.parse(DocumentAndFolderListDOM.dataset.cardButtonIcons)\r\n : {},\r\n fileTypeDropdownOptions: JSON.parse(DocumentAndFolderListDOM.dataset.fileTypeDropdownOptions)\r\n }\r\n\r\n const component = createApp(DocumentAndFolderList, props).use(Store)\r\n component.mount(DocumentAndFolderListDOM)\r\n })\r\n }\r\n}","import { createApp } from 'vue'\r\nimport options from './DonationAmount.options'\r\n\r\nconst el = '.kb-component--donation-amount'\r\n\r\nexport default function (Store) {\r\n const DOM = document.querySelectorAll(el)\r\n if (DOM.length) {\r\n DOM.forEach((DonationAmountDOM) => {\r\n const template = DonationAmountDOM.outerHTML\r\n options.template = template\r\n const showCustomDonation = DonationAmountDOM.hasAttribute(\r\n 'show-custom-Donation'\r\n )\r\n const component = createApp(options, { showCustomDonation }).use(\r\n Store\r\n )\r\n component.mount(DonationAmountDOM)\r\n })\r\n }\r\n}\r\n","import { createApp } from 'vue'\r\nimport DonationCard from './DonationCard'\r\n\r\nconst el = '.kb-component--donation-card'\r\n\r\nexport default function (Store) {\r\n const DOM = document.querySelectorAll(el)\r\n if (DOM.length) {\r\n DOM.forEach((DonationCardDOM) => {\r\n const component = createApp(DonationCard).use(Store)\r\n component.mount(DonationCardDOM)\r\n })\r\n }\r\n}\r\n","import {createApp} from 'vue'\r\nimport DonationReceiptOverlay from './DonationReceiptOverlay'\r\n\r\nconst el = '[data-content=DonationReceiptOverlay]'\r\n\r\nexport default function(Store){\r\n const DOM = document.querySelectorAll(el)\r\n if(DOM.length){\r\n DOM.forEach((DonationReceiptOverlayDOM)=>{\r\n const readMoreUrl = DonationReceiptOverlayDOM.dataset.readMoreUrl\r\n Store.commit('main/set_page_overlay_content_data',{ readMoreUrl })\r\n })\r\n }\r\n}","import {createApp} from 'vue'\r\nimport DropdownWithTags from './DropdownWithTags'\r\n\r\nconst el = '.kb-component--dropdown-with-tags'\r\n\r\nexport default function(Store){\r\n const DOM = document.querySelectorAll(el)\r\n if(DOM.length){\r\n DOM.forEach((DropdownWithTagsDOM)=>{\r\n const props = {\r\n tooltipText: DropdownWithTagsDOM.dataset.tooltiptext,\r\n errorMessageLabel:\r\n DropdownWithTagsDOM.dataset.errormessagelabel,\r\n helpMessageLabel: \r\n DropdownWithTagsDOM.dataset.helpmessagelabel,\r\n placeholder: DropdownWithTagsDOM.dataset.placeholder,\r\n tagsTitle: DropdownWithTagsDOM.dataset.tagstitle,\r\n label: DropdownWithTagsDOM.dataset.label,\r\n legend: DropdownWithTagsDOM.dataset.legend,\r\n isRequired: !!(\r\n DropdownWithTagsDOM.dataset.isrequired === 'true'\r\n ),\r\n fieldName: DropdownWithTagsDOM.dataset.fieldname,\r\n selectOptions: JSON.parse(\r\n DropdownWithTagsDOM.dataset.selectoptions\r\n )\r\n }\r\n\r\n const component = createApp(DropdownWithTags, props).use(Store)\r\n component.mount(DropdownWithTagsDOM)\r\n })\r\n }\r\n}","// should update all templates to use this setup\r\nimport {createApp} from 'vue'\r\nimport EditFrivilligProfile from './EditFrivilligProfile'\r\nimport handleComponentProps from 'foundation/js/utils/handleComponentProps'\r\n\r\nconst el = '.kb-component--edit-frivillig-profile'\r\n\r\nexport default function(Store) {\r\n const DOM = document.querySelectorAll(el)\r\n if (DOM.length) {\r\n DOM.forEach((EditFrivilligProfileDOM) => {\r\n const notificationWhenCommentOnSavedPosts =\r\n EditFrivilligProfileDOM.hasAttribute('notification-when-comment-on-saved-posts')\r\n \r\n const notificationWhenDirectMessage =\r\n EditFrivilligProfileDOM.hasAttribute('notification-when-direct-message')\r\n const notificationWhenNewDocument =\r\n EditFrivilligProfileDOM.hasAttribute('notification-when-new-document')\r\n const notificationWhenPostsOnGroups =\r\n EditFrivilligProfileDOM.hasAttribute('notification-when-posts-on-group')\r\n const addressVisible =\r\n EditFrivilligProfileDOM.hasAttribute('address-visible')\r\n const phonenumberVisible =\r\n EditFrivilligProfileDOM.hasAttribute('phonenumber-visible')\r\n const emailVisible =\r\n EditFrivilligProfileDOM.hasAttribute('email-visible') \r\n const hasNewsletterSubscription =\r\n EditFrivilligProfileDOM.hasAttribute('subscribed-to-newsletter') \r\n const props = handleComponentProps(EditFrivilligProfile, EditFrivilligProfileDOM)\r\n \r\n const component = createApp(EditFrivilligProfile, {\r\n ...props,\r\n notificationWhenCommentOnSavedPosts,\r\n notificationWhenDirectMessage,\r\n notificationWhenNewDocument,\r\n notificationWhenPostsOnGroups,\r\n addressVisible,\r\n phonenumberVisible,\r\n emailVisible,\r\n hasNewsletterSubscription\r\n }).use(Store)\r\n component.mount(EditFrivilligProfileDOM)\r\n })\r\n }\r\n}","import {createApp} from 'vue'\r\nimport FeaturedGroups from './FeaturedGroups'\r\nimport handleComponentProps from 'foundation/js/utils/handleComponentProps'\r\n\r\nconst el = '.kb-component--featured-groups'\r\n\r\nexport default function(Store){\r\n const DOM = document.querySelectorAll(el)\r\n if(DOM.length){\r\n DOM.forEach((FeaturedGroupsDOM)=> {\r\n const props = handleComponentProps(FeaturedGroups, FeaturedGroupsDOM)\r\n const component = createApp(FeaturedGroups, props).use(Store)\r\n component.mount(FeaturedGroupsDOM)\r\n })\r\n }\r\n}","import {createApp} from 'vue'\r\nimport FeaturedPostSpotCard from './FeaturedPostSpotCard'\r\n\r\nconst el = '.kb-component--featured-post-spot-card'\r\n\r\nexport default function(Store){\r\n const DOM = document.querySelectorAll(el)\r\n if(DOM.length){\r\n DOM.forEach((FeaturedPostSpotCardDOM)=>{\r\n const spotCardData = FeaturedPostSpotCardDOM.dataset.spotCard \r\n ? JSON.parse(FeaturedPostSpotCardDOM.dataset.spotCard) \r\n : null\r\n const component = createApp(FeaturedPostSpotCard, {spotCardData}).use(Store)\r\n component.mount(FeaturedPostSpotCardDOM)\r\n })\r\n }\r\n}\r\n\r\n","import {createApp} from 'vue'\r\nimport options from './FeatureNavigationTeam.options'\r\n\r\nconst el = '.kb-component--feature-navigation-team'\r\n\r\nexport default function(Store){\r\n const DOM = document.querySelectorAll(el)\r\n if(DOM.length){\r\n DOM.forEach((FeatureNavigationTeamDOM)=>{\r\n const template = FeatureNavigationTeamDOM.outerHTML\r\n options.template = template\r\n\r\n const teamId = FeatureNavigationTeamDOM.dataset.teamId\r\n const component = createApp(options, { teamId }).use(Store)\r\n component.mount(FeatureNavigationTeamDOM)\r\n })\r\n }\r\n}","import {createApp} from 'vue'\r\nimport FileListCard from './FileListCard'\r\n\r\nconst el = '.kb-component--file-list-card'\r\n\r\nexport default function(Store){\r\n const DOM = document.querySelectorAll(el)\r\n if(DOM.length){\r\n DOM.forEach((FileListCardDOM)=>{\r\n const cardData = FileListCardDOM.dataset.card \r\n ? JSON.parse(FileListCardDOM.dataset.card) \r\n : null\r\n const cardButtonIcons = FileListCardDOM.dataset.cardButtonIcons\r\n ? JSON.parse(FileListCardDOM.dataset.cardButtonIcons)\r\n : {}\r\n const component = createApp(FileListCard, {cardData, cardButtonIcons}).use(Store)\r\n component.mount(FileListCardDOM)\r\n })\r\n }\r\n}","import { createApp } from 'vue'\r\nimport FlowEditModal from './FlowEditModal'\r\n\r\nconst el = '.kb-component--flow-edit-modal'\r\n\r\nexport default function (Store) {\r\n const DOM = document.querySelectorAll(el)\r\n if (DOM.length) {\r\n DOM.forEach((FlowEditModalDOM) => {\r\n const component = createApp(FlowEditModal).use(Store)\r\n component.mount(FlowEditModalDOM)\r\n })\r\n }\r\n}\r\n","import {createApp} from 'vue'\r\nimport options from './FlowHeader.options'\r\n\r\nconst el = '.kb-component--flow-header'\r\n\r\nexport default function(Store){\r\n const FlowHeaderDOM = document.querySelector(el)\r\n if(FlowHeaderDOM){\r\n const template = FlowHeaderDOM.innerHTML\r\n options.template = template\r\n \r\n const isStafet = FlowHeaderDOM.hasAttribute('is-stafet')\r\n const isIndependent = FlowHeaderDOM.hasAttribute('is-independent')\r\n const component = createApp(options, {isIndependent, isStafet}).use(Store)\r\n component.mount(FlowHeaderDOM)\r\n\r\n }\r\n}\r\n\r\n","import { createApp } from 'vue'\r\nimport FormAddressField from './FormAddressField'\r\n\r\nconst el = '.kb-component--form-address-field'\r\n\r\nexport default function (Store) {\r\n const DOM = document.querySelectorAll(el)\r\n if (DOM && DOM.length) {\r\n DOM.forEach((FormAddressFieldDOM) => {\r\n const component = createApp(FormAddressField).use(Store)\r\n component.mount(FormAddressFieldDOM)\r\n })\r\n }\r\n}\r\n","import { createApp } from 'vue'\r\nimport options from './FormAddressFieldGroup.options'\r\n\r\nconst el = '.kb-component--form-address-field-group'\r\n\r\nexport default function (Store) {\r\n const DOM = document.querySelectorAll(el)\r\n if (DOM.length) {\r\n DOM.forEach((FormAddressFieldGroupDOM) => {\r\n const template = FormAddressFieldGroupDOM.innerHTML\r\n options.template = template\r\n const component = createApp(options).use(Store)\r\n component.mount(FormAddressFieldGroupDOM)\r\n })\r\n }\r\n}\r\n","import { createApp } from 'vue'\r\nimport FormCheckbox from './FormCheckbox'\r\n\r\nconst el = '.kb-component--form-checkbox'\r\n\r\nexport default function (Store) {\r\n const DOM = document.querySelectorAll(el)\r\n if (DOM.length) {\r\n DOM.forEach((FormCheckboxDOM) => {\r\n const props = {\r\n type: FormCheckboxDOM.dataset.type,\r\n tooltipText: FormCheckboxDOM.dataset.tooltiptext,\r\n errorMessageLabel: FormCheckboxDOM.dataset.errormessagelabel,\r\n helpMessageLabel: FormCheckboxDOM.dataset.helpmessagelabel,\r\n placeholder: FormCheckboxDOM.dataset.placeholder,\r\n label: FormCheckboxDOM.dataset.label,\r\n isRequired: !!(FormCheckboxDOM.dataset.isrequired === 'true'),\r\n fieldName: FormCheckboxDOM.dataset.fieldname\r\n }\r\n const component = createApp(FormCheckbox, props).use(Store)\r\n component.mount(FormCheckboxDOM)\r\n })\r\n }\r\n}\r\n","import { createApp } from 'vue'\r\nimport FormInputCprField from './FormInputCprField'\r\n\r\nconst el = '.kb-component--form-input-cpr-field'\r\n\r\nexport default function (Store) {\r\n const DOM = document.querySelectorAll(el)\r\n if (DOM.length) {\r\n DOM.forEach((FormInputCprFieldDOM) => {\r\n const props = {\r\n type: FormInputCprFieldDOM.dataset.type,\r\n tooltipText: FormInputCprFieldDOM.dataset.tooltiptext,\r\n errorMessageLabel:\r\n FormInputCprFieldDOM.dataset.errormessagelabel,\r\n helpMessageLabel: FormInputCprFieldDOM.dataset.helpmessagelabel,\r\n placeholder: FormInputCprFieldDOM.dataset.placeholder,\r\n label: FormInputCprFieldDOM.dataset.label,\r\n isRequired: !!(\r\n FormInputCprFieldDOM.dataset.isrequired === 'true'\r\n ),\r\n fieldName: FormInputCprFieldDOM.dataset.fieldname\r\n }\r\n const component = createApp(FormInputCprField, props).use(Store)\r\n component.mount(FormInputCprFieldDOM)\r\n })\r\n }\r\n}\r\n","import { createApp } from 'vue'\r\nimport FormInputCvrField from './FormInputCvrField'\r\n\r\nconst el = '.kb-component--form-input-cvr-field'\r\n\r\nexport default function (Store) {\r\n const DOM = document.querySelectorAll(el)\r\n if (DOM.length) {\r\n DOM.forEach((FormInputCvrFieldDOM) => {\r\n const props = {\r\n type: FormInputCvrFieldDOM.dataset.type,\r\n tooltipText: FormInputCvrFieldDOM.dataset.tooltiptext,\r\n errorMessageLabel:\r\n FormInputCvrFieldDOM.dataset.errormessagelabel,\r\n helpMessageLabel: FormInputCvrFieldDOM.dataset.helpmessagelabel,\r\n placeholder: FormInputCvrFieldDOM.dataset.placeholder,\r\n label: FormInputCvrFieldDOM.dataset.label,\r\n isRequired: !!(\r\n FormInputCvrFieldDOM.dataset.isrequired === 'true'\r\n ),\r\n fieldName: FormInputCvrFieldDOM.dataset.fieldname\r\n }\r\n const component = createApp(FormInputCvrField, props).use(Store)\r\n component.mount(FormInputCvrFieldDOM)\r\n })\r\n }\r\n}\r\n","import {createApp} from 'vue'\r\nimport FormInputDateField from './FormInputDateField'\r\n\r\nconst el = '.kb-component--form-input-date-field'\r\n\r\nexport default function(Store){\r\n const DOM = document.querySelectorAll(el)\r\n if(DOM.length){\r\n DOM.forEach((FormInputDateFieldDOM)=>{\r\n const component = createApp(FormInputDateField).use(Store)\r\n component.mount(FormInputDateFieldDOM)\r\n })\r\n }\r\n}","import { createApp } from 'vue'\r\nimport FormInputDropdown from './FormInputDropdown'\r\n\r\nconst el = '.kb-component--form-input-dropdown'\r\n\r\nexport default function (Store) {\r\n const DOM = document.querySelectorAll(el)\r\n if (DOM && DOM.length) {\r\n DOM.forEach((FormInputDropdownDOM) => {\r\n const props = {\r\n tooltipText: FormInputDropdownDOM.dataset.tooltiptext,\r\n errorMessageLabel:\r\n FormInputDropdownDOM.dataset.errormessagelabel,\r\n helpMessageLabel: \r\n FormInputDropdownDOM.dataset.helpmessagelabel,\r\n placeholder: FormInputDropdownDOM.dataset.placeholder,\r\n label: FormInputDropdownDOM.dataset.label,\r\n legend: FormInputDropdownDOM.dataset.legend,\r\n isRequired: !!(\r\n FormInputDropdownDOM.dataset.isrequired === 'true'\r\n ),\r\n fieldName: FormInputDropdownDOM.dataset.fieldname,\r\n selectOptions: JSON.parse(\r\n FormInputDropdownDOM.dataset.selectoptions\r\n )\r\n }\r\n const component = createApp(FormInputDropdown, props).use(Store)\r\n component.mount(FormInputDropdownDOM)\r\n })\r\n }\r\n}\r\n","import { createApp } from 'vue'\r\nimport FormInputEmailField from './FormInputEmailField'\r\n\r\nconst el = '.kb-component--form-input-email-field'\r\n\r\nexport default function (Store) {\r\n const DOM = document.querySelectorAll(el)\r\n if (DOM && DOM.length) {\r\n DOM.forEach((FormInputEmailFieldDOM) => {\r\n const props = {\r\n tooltipText: FormInputEmailFieldDOM.dataset.tooltiptext,\r\n errorMessageLabel:\r\n FormInputEmailFieldDOM.dataset.errormessagelabel,\r\n helpMessageLabel:\r\n FormInputEmailFieldDOM.dataset.helpmessagelabel,\r\n placeholder: FormInputEmailFieldDOM.dataset.placeholder,\r\n label: FormInputEmailFieldDOM.dataset.label,\r\n isRequired: !!(\r\n FormInputEmailFieldDOM.dataset.isrequired === 'true'\r\n ),\r\n fieldName: FormInputEmailFieldDOM.dataset.fieldname\r\n }\r\n\r\n const component = createApp(FormInputEmailField, props).use(Store)\r\n component.mount(FormInputEmailFieldDOM)\r\n })\r\n }\r\n}\r\n","import { createApp } from 'vue'\r\nimport FormInputNameField from './FormInputNameField'\r\n\r\nconst el = '.kb-component--form-input-name-field'\r\n\r\nexport default function (Store) {\r\n const DOM = document.querySelectorAll(el)\r\n if (DOM.length) {\r\n DOM.forEach((FormInputNameFieldDOM) => {\r\n const props = {\r\n type: FormInputNameFieldDOM.dataset.type,\r\n tooltipText: FormInputNameFieldDOM.dataset.tooltiptext,\r\n errorMessageLabel:\r\n FormInputNameFieldDOM.dataset.errormessagelabel,\r\n helpMessageLabel:\r\n FormInputNameFieldDOM.dataset.helpmessagelabel,\r\n placeholder: FormInputNameFieldDOM.dataset.placeholder,\r\n label: FormInputNameFieldDOM.dataset.label,\r\n isRequired: !!(\r\n FormInputNameFieldDOM.dataset.isrequired === 'true'\r\n ),\r\n fieldName: FormInputNameFieldDOM.dataset.fieldname\r\n }\r\n const component = createApp(FormInputNameField, props).use(Store)\r\n component.mount(FormInputNameFieldDOM)\r\n })\r\n }\r\n}\r\n","import { createApp } from 'vue'\r\nimport FormInputPhoneField from './FormInputPhoneField'\r\n\r\nconst el = '.kb-component--form-input-phone-field'\r\n\r\nexport default function (Store) {\r\n const DOM = document.querySelectorAll(el)\r\n if (DOM && DOM.length) {\r\n DOM.forEach((FormInputPhoneFieldDOM) => {\r\n const props = {\r\n tooltipText: FormInputPhoneFieldDOM.dataset.tooltiptext,\r\n errorMessageLabel:\r\n FormInputPhoneFieldDOM.dataset.errormessagelabel,\r\n helpMessageLabel:\r\n FormInputPhoneFieldDOM.dataset.helpmessagelabel,\r\n placeholder: FormInputPhoneFieldDOM.dataset.placeholder,\r\n label: FormInputPhoneFieldDOM.dataset.label,\r\n isRequired: !!(\r\n FormInputPhoneFieldDOM.dataset.isrequired === 'true'\r\n ),\r\n fieldName: FormInputPhoneFieldDOM.dataset.fieldname\r\n }\r\n\r\n const component = createApp(FormInputPhoneField, props).use(Store)\r\n component.mount(FormInputPhoneFieldDOM)\r\n })\r\n }\r\n}\r\n","import { createApp } from 'vue'\r\nimport FormInputTextarea from './FormInputTextarea'\r\n\r\nconst el = '.kb-component--form-input-textarea'\r\n\r\nexport default function (Store) {\r\n const DOM = document.querySelectorAll(el)\r\n if (DOM && DOM.length) {\r\n DOM.forEach((FormInputTextareaDOM) => {\r\n const props = {\r\n type: FormInputTextareaDOM.dataset.type,\r\n tooltipText: FormInputTextareaDOM.dataset.tooltiptext,\r\n errorMessageLabel:\r\n FormInputTextareaDOM.dataset.errormessagelabel,\r\n helpMessageLabel:\r\n FormInputTextareaDOM.dataset.helpmessagelabel,\r\n placeholder: FormInputTextareaDOM.dataset.placeholder,\r\n label: FormInputTextareaDOM.dataset.label,\r\n isRequired: !!(\r\n FormInputTextareaDOM.dataset.isrequired === 'true'\r\n ),\r\n fieldName: FormInputTextareaDOM.dataset.fieldname\r\n }\r\n\r\n const component = createApp(FormInputTextarea, props).use(Store)\r\n component.mount(FormInputTextareaDOM)\r\n })\r\n }\r\n}\r\n","import { createApp } from 'vue'\r\nimport FormInputTextField from './FormInputTextField.vue'\r\n\r\nconst el = '.kb-component--form-input-text-field'\r\n\r\nexport default function (Store) {\r\n const DOM = document.querySelectorAll(el)\r\n if (DOM && DOM.length) {\r\n DOM.forEach((FormInputTextFieldDOM) => {\r\n const props = {\r\n type: FormInputTextFieldDOM.dataset.type,\r\n tooltipText: FormInputTextFieldDOM.dataset.tooltiptext,\r\n errorMessageLabel:\r\n FormInputTextFieldDOM.dataset.errormessagelabel,\r\n helpMessageLabel:\r\n FormInputTextFieldDOM.dataset.helpmessagelabel,\r\n placeholder: FormInputTextFieldDOM.dataset.placeholder,\r\n label: FormInputTextFieldDOM.dataset.label,\r\n isRequired: !!(\r\n FormInputTextFieldDOM.dataset.isrequired === 'true'\r\n ),\r\n fieldName: FormInputTextFieldDOM.dataset.fieldname\r\n }\r\n const component = createApp(FormInputTextField, props).use(Store)\r\n component.mount(FormInputTextFieldDOM)\r\n })\r\n }\r\n}\r\n","import { createApp } from 'vue'\r\nimport FormRadioGroup from './FormRadioGroup'\r\n\r\nconst el = '.kb-component--form-radio-group'\r\n\r\nexport default function (Store) {\r\n const DOM = document.querySelectorAll(el)\r\n if (DOM && DOM.length) {\r\n DOM.forEach((FormRadioGroupDOM) => {\r\n const props = {\r\n type: FormRadioGroupDOM.dataset.type,\r\n tooltipText: FormRadioGroupDOM.dataset.tooltiptext,\r\n errorMessageLabel: FormRadioGroupDOM.dataset.errormessagelabel,\r\n helpMessageLabel: FormRadioGroupDOM.dataset.helpmessagelabel,\r\n placeholder: FormRadioGroupDOM.dataset.placeholder,\r\n label: FormRadioGroupDOM.dataset.label,\r\n legend: FormRadioGroupDOM.dataset.legend,\r\n isRequired: !!(FormRadioGroupDOM.dataset.isrequired === 'true'),\r\n fieldName: FormRadioGroupDOM.dataset.fieldname,\r\n radioOptions: JSON.parse(FormRadioGroupDOM.dataset.radiooptions),\r\n localValue: FormRadioGroupDOM.dataset.localValue,\r\n }\r\n const component = createApp(FormRadioGroup, props).use(Store)\r\n component.mount(FormRadioGroupDOM)\r\n })\r\n }\r\n}\r\n","import { createApp } from 'vue'\r\nimport FormStepSubmitting from './FormStepSubmitting'\r\n\r\nconst el = '.kb-component--form-step-submitting'\r\n\r\nexport default function (Store) {\r\n const DOM = document.querySelectorAll(el)\r\n if (DOM.length) {\r\n DOM.forEach((FormStepSubmittingDOM) => {\r\n const component = createApp(FormStepSubmitting).use(Store)\r\n component.mount(FormStepSubmittingDOM)\r\n })\r\n }\r\n}\r\n","import {createApp} from 'vue'\r\nimport FormStepZero from './FormStepZero'\r\n\r\nconst el = '.kb-component--form-step-zero'\r\n\r\nexport default function(Store){\r\n const DOM = document.querySelectorAll(el)\r\n if(DOM.length){\r\n DOM.forEach((FormStepZeroDOM)=>{\r\n const component = createApp(FormStepZero).use(Store)\r\n component.mount(FormStepZeroDOM)\r\n })\r\n }\r\n}","import {createApp} from 'vue'\r\nimport store from 'store'\r\nimport ForumEditProfile from './ForumEditProfile'\r\n\r\nconst el = '.kb-component--forum-edit-profile'\r\n\r\nexport default function(Store){\r\n const DOM = document.querySelectorAll(el)\r\n if(DOM.length){\r\n DOM.forEach((ForumEditProfileDOM)=>{\r\n const props = {\r\n content: ForumEditProfileDOM.dataset.content ? JSON.parse(ForumEditProfileDOM.dataset.content) : {},\r\n continueUrl : ForumEditProfileDOM.dataset.continueUrl,\r\n continueUrlWithData: ForumEditProfileDOM.dataset.continueUrlWithData\r\n }\r\n store.commit('main/set_page_overlay_content_data', {\r\n userId: ForumEditProfileDOM.dataset.userId\r\n })\r\n const component = createApp(ForumEditProfile, props).use(Store)\r\n component.mount(ForumEditProfileDOM)\r\n })\r\n }\r\n}","import {createApp} from 'vue'\r\nimport FrivilligeCheckoutContent from './FrivilligeCheckoutContent'\r\n\r\nconst el = '.kb-component--frivillige-checkout-content'\r\n\r\nexport default function(Store) {\r\n const DOM = document.querySelectorAll(el)\r\n if (DOM.length) {\r\n DOM.forEach((FrivilligeCheckoutContentDOM) => {\r\n const externalData = FrivilligeCheckoutContentDOM.dataset.external \r\n ? JSON.parse(FrivilligeCheckoutContentDOM.dataset.external)\r\n : null\r\n const props = {\r\n userData: externalData?.userData ?? {},\r\n }\r\n const component = createApp(FrivilligeCheckoutContent, props).use(Store)\r\n component.mount(FrivilligeCheckoutContentDOM)\r\n })\r\n }\r\n}","import {createApp} from 'vue'\r\nimport FrivilligeCheckoutStepOne from './FrivilligeCheckoutStepOne'\r\n\r\nconst el = '.kb-component--frivillige-checkout-step-one'\r\n\r\nexport default function(Store) {\r\n const DOM = document.querySelectorAll(el)\r\n if (DOM.length) {\r\n DOM.forEach((FrivilligeCheckoutStepOneDOM) => {\r\n const props = {\r\n fields: FrivilligeCheckoutStepOneDOM.dataset.fields\r\n ? JSON.parse(FrivilligeCheckoutStepOneDOM.dataset.fields)\r\n : {}\r\n }\r\n const component = createApp(FrivilligeCheckoutStepOne, props).use(Store)\r\n component.mount(FrivilligeCheckoutStepOneDOM)\r\n })\r\n }\r\n}","import {createApp} from 'vue'\r\nimport FrivilligeCheckoutStepTwo from './FrivilligeCheckoutStepTwo'\r\n\r\nconst el = '.kb-component--frivillige-checkout-step-two'\r\n\r\nexport default function(Store){\r\n const DOM = document.querySelectorAll(el)\r\n if(DOM.length){\r\n DOM.forEach((FrivilligeCheckoutStepTwoDOM)=>{\r\n const component = createApp(FrivilligeCheckoutStepTwo).use(Store)\r\n component.mount(FrivilligeCheckoutStepTwoDOM)\r\n })\r\n }\r\n}","import {createApp} from 'vue'\r\nimport FrivilligePostsList from './FrivilligePostsList'\r\n\r\nconst el = '.kb-component--frivillige-posts-list'\r\n\r\nexport default function(Store){\r\n const DOM = document.querySelectorAll(el)\r\n if(DOM.length){\r\n DOM.forEach((FrivilligePostsListDOM)=>{\r\n const props = {\r\n isMember: FrivilligePostsListDOM.hasAttribute('is-member'),\r\n isLoggedIn: FrivilligePostsListDOM.hasAttribute('is-logged-in'),\r\n guid: FrivilligePostsListDOM.dataset.guid,\r\n groupId: FrivilligePostsListDOM.dataset.groupId,\r\n featuredPostSpotCards: FrivilligePostsListDOM.dataset.featuredPostSpotCards \r\n ? JSON.parse(FrivilligePostsListDOM.dataset.featuredPostSpotCards) \r\n : null\r\n }\r\n const component = createApp(FrivilligePostsList, props).use(Store)\r\n component.mount(FrivilligePostsListDOM)\r\n })\r\n }\r\n\r\n}","import {createApp} from 'vue'\r\nimport FrivilligeShopWrongRoleModal from './FrivilligeShopWrongRoleModal'\r\n\r\nconst el = '.kb-component--frivillige-shop-wrong-role-modal'\r\n\r\nexport default function(Store){\r\n const DOM = document.querySelectorAll(el)\r\n if(DOM.length){\r\n DOM.forEach((FrivilligeShopWrongRoleModalDOM)=>{\r\n const component = createApp(FrivilligeShopWrongRoleModal).use(Store)\r\n component.mount(FrivilligeShopWrongRoleModalDOM)\r\n })\r\n }\r\n}","import {createApp} from 'vue'\r\nimport options from './FrivilligGroupHero.options'\r\n\r\nconst el = '.kb-component--frivillig-group-hero'\r\n\r\nexport default function(Store){\r\n const DOM = document.querySelectorAll(el)\r\n if(DOM.length){\r\n DOM.forEach((FrivilligGroupHeroDOM)=>{\r\n options.template = FrivilligGroupHeroDOM.innerHtml\r\n const props = {\r\n gruppeKode: FrivilligGroupHeroDOM.dataset.gruppeKode,\r\n isLoggedIn: FrivilligGroupHeroDOM.dataset.isLoggedIn === 'true',\r\n loginUrl: FrivilligGroupHeroDOM.dataset.loginUrl,\r\n closedGroup: FrivilligGroupHeroDOM.dataset.gruppeIsClosed === 'true'\r\n }\r\n const component = createApp(options, props).use(Store)\r\n component.mount(FrivilligGroupHeroDOM)\r\n })\r\n }\r\n}\r\n\r\n","import {createApp} from 'vue'\r\nimport options from './FrivilligjobAside.options'\r\n\r\nconst el = '.kb-component--frivilligjob-aside'\r\n\r\nexport default function(Store){\r\n const DOM = document.querySelectorAll(el)\r\n if(DOM.length){\r\n DOM.forEach((FrivilligjobAsideDOM)=>{ \r\n const template = FrivilligjobAsideDOM.innerHTML\r\n \r\n options.template = template\r\n const props = {\r\n jobId: FrivilligjobAsideDOM.dataset.jobId,\r\n redirectAfterDeleteUrl: FrivilligjobAsideDOM.dataset.deleteRedirectUrl,\r\n }\r\n\r\n const component = createApp(options, props).use(Store)\r\n component.mount(FrivilligjobAsideDOM)\r\n })\r\n }\r\n}\r\n\r\n","import {createApp} from 'vue'\r\nimport FrivilligjobCard from './FrivilligjobCard'\r\n\r\nconst el = '.kb-component--frivilligjob-card'\r\n\r\nexport default function(Store){\r\n const DOM = document.querySelectorAll(el)\r\n if(DOM.length){\r\n DOM.forEach((FrivilligjobCardDOM)=>{\r\n const component = createApp(FrivilligjobCard).use(Store)\r\n component.mount(FrivilligjobCardDOM)\r\n })\r\n }\r\n}","import { createApp } from 'vue'\r\nimport FundraiseForm from './FundraiseForm'\r\n\r\nconst el = '.kb-component--fundraise-form'\r\n\r\nexport default function (Store) {\r\n const DOM = document.querySelectorAll(el)\r\n if (DOM.length) {\r\n DOM.forEach((FundraiseFormDOM) => {\r\n const guid = FundraiseFormDOM.dataset.guid\r\n const cancelUrl = FundraiseFormDOM.dataset.cancelUrl\r\n const draft = FundraiseFormDOM.dataset.draft\r\n ? JSON.parse(FundraiseFormDOM.dataset.draft)\r\n : null\r\n const donationSettings = FundraiseFormDOM.dataset?.donationSettings\r\n if (donationSettings) {\r\n Store.commit(\r\n 'fundraising/set_donation_settings',\r\n JSON.parse(donationSettings)\r\n )\r\n }\r\n\r\n const isMindegave = FundraiseFormDOM.hasAttribute('is-mindegave')\r\n const showUnsavedChangesWarning = FundraiseFormDOM.hasAttribute('show-unsaved-changes-warning')\r\n const component = createApp(FundraiseForm, {\r\n fundraisingCampaignId: guid,\r\n cancelUrl,\r\n isMindegave,\r\n showUnsavedChangesWarning,\r\n draft\r\n }).use(Store)\r\n component.mount(FundraiseFormDOM)\r\n })\r\n }\r\n}\r\n","import {createApp} from 'vue'\r\nimport FundraisingAsideVue from './FundraisingAsideVue'\r\nimport handleComponentProps from 'foundation/js/utils/handleComponentProps'\r\n\r\nconst el = '.kb-component--fundraising-aside-vue'\r\n\r\nexport default function(Store){\r\n const DOM = document.querySelectorAll(el)\r\n if(DOM.length){\r\n DOM.forEach((FundraisingAsideVueDOM)=>{\r\n const props = handleComponentProps(FundraisingAsideVue, FundraisingAsideVueDOM)\r\n const component = createApp(FundraisingAsideVue, props).use(Store)\r\n component.mount(FundraisingAsideVueDOM)\r\n })\r\n }\r\n}","import { createApp } from 'vue'\r\nimport FundraisingCard from './FundraisingCard'\r\n\r\nconst el = '.kb-component--fundraising-card'\r\n\r\nexport default function (Store) {\r\n const DOM = document.querySelectorAll(el)\r\n if (DOM.length) {\r\n DOM.forEach((FundraisingCardDOM) => {\r\n const component = createApp(FundraisingCard).use(Store)\r\n component.mount(FundraisingCardDOM)\r\n })\r\n }\r\n}\r\n","import { createApp } from 'vue'\r\nimport options from './FundraisingHero.options'\r\n\r\nconst el = '.kb-component--fundraising-hero'\r\n\r\nexport default function (Store) {\r\n const DOM = document.querySelectorAll(el)\r\n if (DOM.length) {\r\n DOM.forEach((FundraisingHeroDOM) => {\r\n const template = FundraisingHeroDOM.outerHTML\r\n options.template = template\r\n const component = createApp(options).use(Store)\r\n component.mount(FundraisingHeroDOM)\r\n })\r\n }\r\n}\r\n","import {createApp} from 'vue'\r\nimport FVLConfirmDeleteProfile from './FVLConfirmDeleteProfile'\r\n\r\nconst el = '.kb-component--fvl-confirm-delete-profile'\r\n\r\nexport default function(Store){\r\n const DOM = document.querySelectorAll(el)\r\n if(DOM.length){\r\n DOM.forEach((FVLConfirmDeleteProfileDOM)=>{\r\n const component = createApp(FVLConfirmDeleteProfile).use(Store)\r\n component.mount(FVLConfirmDeleteProfileDOM)\r\n })\r\n }\r\n}","import {createApp} from 'vue'\r\nimport GalleryCard from './GalleryCard'\r\n\r\nconst el = '.kb-component--gallery-card'\r\n\r\nexport default function(Store){\r\n const DOM = document.querySelectorAll(el)\r\n if(DOM.length){\r\n DOM.forEach((GalleryCardDOM)=>{\r\n const props = {\r\n result: JSON.parse(GalleryCardDOM.dataset.result) ?? {}\r\n }\r\n const component = createApp(GalleryCard, props).use(Store)\r\n component.mount(GalleryCardDOM)\r\n })\r\n }\r\n}","import {createApp} from 'vue'\r\nimport GroupCard from './GroupCard'\r\n\r\nconst el = '.kb-component--group-card'\r\n\r\nexport default function(Store) {\r\n const DOM = document.querySelectorAll(el)\r\n if(DOM.length){\r\n DOM.forEach((GroupCardDOM) => {\r\n const props = {\r\n content: GroupCardDOM.dataset.content ? JSON.parse(GroupCardDOM.dataset.content) : {}\r\n }\r\n const component = createApp(GroupCard, props).use(Store)\r\n component.mount(GroupCardDOM)\r\n })\r\n }\r\n}","import {createApp} from 'vue'\r\nimport GroupDetails from './GroupDetails'\r\n\r\nconst el = '.kb-component--group-details'\r\n\r\nexport default function(Store) {\r\n const DOM = document.querySelectorAll(el)\r\n if (DOM.length) {\r\n DOM.forEach((GroupDetailsDOM) => {\r\n const props = {\r\n id: GroupDetailsDOM.dataset.id,\r\n svgIcon: GroupDetailsDOM.dataset.svgIcon,\r\n colorTheme: GroupDetailsDOM.dataset.colorTheme,\r\n title: GroupDetailsDOM.dataset.title,\r\n type: GroupDetailsDOM.dataset.type,\r\n updates: GroupDetailsDOM.dataset.updates ? parseInt(GroupDetailsDOM.dataset.updates) : 0,\r\n numberOfMembers: GroupDetailsDOM.dataset.numberOfMembers ? parseInt(GroupDetailsDOM.dataset.numberOfMembers) : 0,\r\n numberOfPosts: GroupDetailsDOM.dataset.numberOfPosts ? parseInt(GroupDetailsDOM.dataset.numberOfPosts) : 0,\r\n link: GroupDetailsDOM.dataset.link\r\n }\r\n const component = createApp(GroupDetails, props).use(Store)\r\n component.mount(GroupDetailsDOM)\r\n })\r\n }\r\n}","import {createApp} from 'vue'\r\nimport GroupPost from './GroupPost'\r\n\r\nconst el = '.kb-component--group-post'\r\n\r\nexport default function(Store){\r\n const DOM = document.querySelectorAll(el)\r\n if(DOM.length){\r\n DOM.forEach((GroupPostDOM)=>{\r\n const props = {\r\n result: GroupPostDOM.dataset.result ? JSON.parse(GroupPostDOM.dataset.result) : {},\r\n comments: GroupPostDOM.dataset.comments ? JSON.parse(GroupPostDOM.dataset.comments) : null,\r\n isFrivilligContext: GroupPostDOM.dataset.isFrivilligContext,\r\n groupId: GroupPostDOM.dataset.groupId\r\n }\r\n const component = createApp(GroupPost, props).use(Store)\r\n component.mount(GroupPostDOM)\r\n })\r\n }\r\n}","import {createApp} from 'vue'\r\nimport GroupSearchResult from './GroupSearchResult'\r\n\r\nconst el = '.kb-component--group-search-result'\r\n\r\nexport default function(Store){\r\n const DOM = document.querySelectorAll(el)\r\n if(DOM.length){\r\n DOM.forEach((GroupSearchResultDOM)=>{\r\n const props = {\r\n source: GroupSearchResultDOM.dataset.source,\r\n hovedgruppekode: GroupSearchResultDOM.dataset.hovedgruppekode,\r\n guid: GroupSearchResultDOM.dataset.guid,\r\n spotCard: GroupSearchResultDOM.dataset.spotCard ? JSON.parse(GroupSearchResultDOM.dataset.spotCard) : null,\r\n skip: parseInt(GroupSearchResultDOM.dataset.skip) ?? 0,\r\n take: parseInt(GroupSearchResultDOM.dataset.take) ?? 10,\r\n disableInitialSearch: GroupSearchResultDOM.dataset.disableInitialSearch === 'true'\r\n }\r\n const component = createApp(GroupSearchResult, props).use(Store)\r\n component.mount(GroupSearchResultDOM)\r\n })\r\n }\r\n}","import {createApp} from 'vue'\r\nimport GruppeadgangsanmodningList from './GruppeadgangsanmodningList'\r\n\r\nconst el = '.kb-component--gruppeadgangsanmodning-list'\r\n\r\nexport default function(Store){\r\n const DOM = document.querySelectorAll(el)\r\n if(DOM.length){\r\n DOM.forEach((GruppeadgangsanmodningListDOM)=>{\r\n const props = {\r\n guid: GruppeadgangsanmodningListDOM.dataset.searchGuid,\r\n skip: parseInt(GruppeadgangsanmodningListDOM.dataset.skip) ?? 0,\r\n take: parseInt(GruppeadgangsanmodningListDOM.dataset.take) ?? 10\r\n }\r\n const component = createApp(GruppeadgangsanmodningList, props).use(Store)\r\n component.mount(GruppeadgangsanmodningListDOM)\r\n })\r\n }\r\n}","import { createApp } from 'vue'\r\nimport GtmTracker from './GtmTracker'\r\n\r\nconst el = '.kb-component--gtm-tracker'\r\n\r\nexport default function (Store) {\r\n const DOM = document.querySelectorAll(el)\r\n if (DOM.length) {\r\n DOM.forEach((GtmTrackerDOM) => {\r\n const trackJson = GtmTrackerDOM.dataset.trackJson\r\n const trackData = trackJson ? JSON.parse(trackJson) : null\r\n const component = createApp(GtmTracker, { trackData }).use(Store)\r\n component.mount(GtmTrackerDOM)\r\n })\r\n }\r\n}\r\n","import {createApp} from 'vue'\r\nimport HeroSectionCancerforum from './HeroSectionCancerforum'\r\n\r\nconst el = '.kb-component--hero-section-cancerforum'\r\n\r\nexport default function(Store){\r\n const DOM = document.querySelectorAll(el)\r\n if(DOM.length){\r\n DOM.forEach((HeroSectionCancerforumDOM)=>{\r\n const groupId = HeroSectionCancerforumDOM.dataset.groupId\r\n const isLoggedIn = HeroSectionCancerforumDOM.hasAttribute('is-logged-in')\r\n const isClosedGroup = HeroSectionCancerforumDOM.hasAttribute('is-closed-group')\r\n const isUserAwaitingAccess = HeroSectionCancerforumDOM.hasAttribute('is-awaiting-access')\r\n const loginUrl = HeroSectionCancerforumDOM.dataset.loginUrl\r\n\r\n const component = createApp(HeroSectionCancerforum, { groupId, isLoggedIn, isClosedGroup, isUserAwaitingAccess, loginUrl }).use(Store)\r\n component.mount(HeroSectionCancerforumDOM)\r\n })\r\n }\r\n}","import store from 'store'\r\n\r\nconst el = '[data-content=HoldetsDeltagere]'\r\n\r\nexport default function(Store){\r\n const DOM = document.querySelectorAll(el)\r\n if(DOM.length){\r\n DOM.forEach((HoldetsDeltagereDOM)=>{\r\n const teamId = HoldetsDeltagereDOM.dataset.teamid\r\n const addDeltagerFormUrl = HoldetsDeltagereDOM.dataset.addDeltagerFormUrl\r\n const donationFormUrl = HoldetsDeltagereDOM.dataset.donationFormUrl\r\n const lysposeFormUrl = HoldetsDeltagereDOM.dataset.lysposeFormUrl\r\n \r\n store.commit('main/set_page_overlay_content_data',{ teamId, addDeltagerFormUrl, donationFormUrl, lysposeFormUrl })\r\n })\r\n }\r\n}","import store from 'store'\r\n\r\nconst el = '[data-content=HoldetsDonationer]'\r\n\r\nexport default function(Store){\r\n const DOM = document.querySelectorAll(el)\r\n if(DOM.length){\r\n DOM.forEach((HoldetsDonationerDOM)=>{\r\n const teamId = HoldetsDonationerDOM.dataset.teamid\r\n const donationFormUrl = HoldetsDonationerDOM.dataset.donationFormUrl\r\n \r\n store.commit('main/set_page_overlay_content_data',{ teamId, donationFormUrl })\r\n })\r\n }\r\n}","import store from 'store'\r\n\r\nconst el = '[data-content=HoldetsLys]'\r\n\r\nexport default function(Store){\r\n const DOM = document.querySelectorAll(el)\r\n if(DOM.length){\r\n DOM.forEach((HoldetsLysDOM)=>{\r\n const teamId = HoldetsLysDOM.dataset.teamid\r\n const lysposeFormUrl = HoldetsLysDOM.dataset.lysposeFormUrl\r\n \r\n store.commit('main/set_page_overlay_content_data',{ teamId, lysposeFormUrl })\r\n })\r\n }\r\n}","import store from 'store'\r\n\r\nconst el = '[data-content=HoldetsRoundCounterOverlay]'\r\n\r\nexport default function (Store) {\r\n const DOM = document.querySelectorAll(el)\r\n if (DOM.length) {\r\n DOM.forEach((HoldetsRoundCounterOverlayDOM) => {\r\n if (HoldetsRoundCounterOverlayDOM.dataset.teamid) {\r\n const teamId = HoldetsRoundCounterOverlayDOM.dataset.teamid\r\n const maxRegistrationCount = parseInt(HoldetsRoundCounterOverlayDOM.dataset.maxRegistrationCount)\r\n \r\n store.commit('main/set_page_overlay_content_data', { teamId, maxRegistrationCount })\r\n }\r\n })\r\n }\r\n}\r\n","import store from 'store'\r\n\r\nconst el = '[data-content=HoldOprettelseKvittering]'\r\n\r\nexport default function(Store){\r\n const DOM = document.querySelectorAll(el)\r\n if(DOM.length){\r\n DOM.forEach((HoldOprettelseKvitteringDOM)=>{\r\n if(HoldOprettelseKvitteringDOM.dataset.teamid){\r\n const teamId = HoldOprettelseKvitteringDOM.dataset.teamid\r\n store.commit('main/set_page_overlay_content_data',{ teamId })\r\n }\r\n })\r\n }\r\n}","import {createApp} from 'vue'\r\nimport ImageGallery from './ImageGallery'\r\n\r\nconst el = '.kb-component--image-gallery'\r\n\r\nexport default function(Store){\r\n const DOM = document.querySelectorAll(el)\r\n if(DOM.length){\r\n DOM.forEach((ImageGalleryDOM)=>{\r\n const imgs = JSON.parse(ImageGalleryDOM.dataset.imgs)\r\n const type = ImageGalleryDOM.dataset.type\r\n const component = createApp(ImageGallery, {imgs, type}).use(Store)\r\n component.mount(ImageGalleryDOM)\r\n })\r\n }\r\n}","import { createApp } from 'vue'\r\nimport LocationCard from './LocationCard'\r\n\r\nconst el = '.kb-component--location-card'\r\n\r\nexport default function (Store) {\r\n const DOM = document.querySelectorAll(el)\r\n if (DOM.length) {\r\n DOM.forEach((LocationCardDOM) => {\r\n const component = createApp(LocationCard).use(Store)\r\n component.mount(LocationCardDOM)\r\n })\r\n }\r\n}\r\n","import {createApp} from 'vue'\r\nimport LoginOverlay from './LoginOverlay'\r\n\r\nconst el = '[data-content=LoginOverlay]'\r\n\r\nexport default function(Store){\r\n const DOM = document.querySelectorAll(el)\r\n if(DOM.length){\r\n DOM.forEach((LoginOverlayDOM)=>{\r\n const loginUrl = LoginOverlayDOM.dataset.loginUrl\r\n const createProfileUrl = LoginOverlayDOM.dataset.createProfileUrl\r\n\r\n Store.commit('main/set_page_overlay_content_data',{ loginUrl, createProfileUrl })\r\n })\r\n }\r\n}","import {createApp} from 'vue'\r\nimport LotteryForm from './LotteryForm'\r\n\r\nconst el = '.kb-component--lottery-form'\r\n\r\nexport default function(Store){\r\n const DOM = document.querySelectorAll(el)\r\n if(DOM.length){\r\n DOM.forEach((LotteryFormDOM)=>{\r\n const props = {\r\n lotteryRounds: JSON.parse(LotteryFormDOM.dataset.lotteryDropdownOptions)\r\n }\r\n const component = createApp(LotteryForm, props).use(Store)\r\n component.mount(LotteryFormDOM)\r\n })\r\n }\r\n}","import { createApp } from 'vue'\r\nimport MaterialCard from './MaterialCard'\r\n\r\nconst el = '.kb-component--material-card'\r\n\r\nexport default function (Store) {\r\n const DOM = document.querySelectorAll(el)\r\n if (DOM.length) {\r\n DOM.forEach((MaterialCardDOM) => {\r\n const component = createApp(MaterialCard).use(Store)\r\n component.mount(MaterialCardDOM)\r\n })\r\n }\r\n}\r\n","import store from 'store'\r\n\r\nconst el = '[data-content=MemberListOverlay]'\r\n\r\nexport default function(Store){\r\n const DOM = document.querySelectorAll(el)\r\n if(DOM.length){\r\n DOM.forEach((MemberListOverlayDOM)=>{\r\n const groupId = MemberListOverlayDOM.dataset.groupId\r\n store.commit('main/set_page_overlay_content_data', { groupId })\r\n })\r\n }\r\n}","import {createApp} from 'vue'\r\nimport MemberListOverlayFVL from './MemberListOverlayFVL'\r\n\r\nconst el = '.kb-component--member-list-overlay-fvl'\r\n\r\nexport default function(Store){\r\n const DOM = document.querySelectorAll(el)\r\n if(DOM.length){\r\n DOM.forEach((MemberListOverlayFVLDOM)=>{\r\n\r\n const component = createApp(MemberListOverlayFVL).use(Store)\r\n component.mount(MemberListOverlayFVLDOM)\r\n })\r\n }\r\n}","import {createApp} from 'vue'\r\nimport MemberOverlay from './MemberOverlay'\r\n\r\nconst el = '.kb-component--member-overlay'\r\n\r\nexport default function(Store){\r\n const DOM = document.querySelectorAll(el)\r\n if(DOM.length){\r\n DOM.forEach((MemberOverlayDOM)=>{\r\n const component = createApp(MemberOverlay).use(Store)\r\n component.mount(MemberOverlayDOM)\r\n })\r\n }\r\n}","import {createApp} from 'vue'\r\nimport MemberOverlayProfileCard from './MemberOverlayProfileCard'\r\n\r\nconst el = '.kb-component--member-overlay-profile-card'\r\n\r\nexport default function(Store){\r\n const DOM = document.querySelectorAll(el)\r\n if(DOM.length){\r\n DOM.forEach((MemberOverlayProfileCardDOM)=>{\r\n const component = createApp(MemberOverlayProfileCard).use(Store)\r\n component.mount(MemberOverlayProfileCardDOM)\r\n })\r\n }\r\n}","import {createApp} from 'vue'\r\nimport options from './MitIdLogout.options'\r\n\r\nconst el = '.kb-component--mit-id-logout'\r\n\r\nexport default function(Store){\r\n const DOM = document.querySelector(el)\r\n\r\n if(DOM){\r\n const template = DOM.outerHTML\r\n options.template = template\r\n const component = createApp(options).use(Store)\r\n component.mount(DOM)\r\n }\r\n}\r\n\r\n","import {createApp} from 'vue'\r\nimport MoveFileOverlay from './MoveFileOverlay'\r\n\r\nconst el = '.kb-component--move-file-overlay'\r\n\r\nexport default function(Store){\r\n const DOM = document.querySelectorAll(el)\r\n if(DOM.length){\r\n DOM.forEach((MoveFileOverlayDOM)=>{\r\n const component = createApp(MoveFileOverlay).use(Store)\r\n component.mount(MoveFileOverlayDOM)\r\n })\r\n }\r\n}","import {createApp} from 'vue'\r\nimport NoSearchResults from './NoSearchResults'\r\n\r\nconst el = '.kb-component--no-search-results'\r\n\r\nexport default function(Store){\r\n const DOM = document.querySelectorAll(el)\r\n if(DOM.length){\r\n DOM.forEach((NoSearchResultsDOM)=>{\r\n const guids = NoSearchResultsDOM.dataset.guids \r\n ? JSON.parse(NoSearchResultsDOM.dataset.guids) \r\n : []\r\n\r\n const component = createApp(NoSearchResults, { guids }).use(Store)\r\n component.mount(NoSearchResultsDOM)\r\n })\r\n }\r\n}","import {createApp} from 'vue'\r\nimport NotificationList from './NotificationList'\r\n\r\nconst el = '.kb-component--notification-list'\r\n\r\nexport default function(Store){\r\n const DOM = document.querySelectorAll(el)\r\n if (DOM.length) {\r\n DOM.forEach((NotificationListDOM) => {\r\n const props = {\r\n skip: parseInt(NotificationListDOM.dataset.skip) ?? 0,\r\n take: parseInt(NotificationListDOM.dataset.take) ?? 10\r\n }\r\n const component = createApp(NotificationList, props).use(Store)\r\n component.mount(NotificationListDOM)\r\n })\r\n }\r\n}","import {createApp} from 'vue'\r\nimport OpretHoldOverlay from './OpretHoldOverlay'\r\n\r\nconst el = '[data-content=OpretHoldOverlay]'\r\n\r\nexport default function(Store){\r\n const DOM = document.querySelectorAll(el)\r\n if(DOM.length){\r\n DOM.forEach((OpretHoldOverlayDOM)=>{\r\n const stafetkode = OpretHoldOverlayDOM.dataset.stafetkode\r\n const createHoldUrl = OpretHoldOverlayDOM.dataset.createHoldUrl\r\n\r\n Store.commit('stafet/set_stafet_id', stafetkode)\r\n Store.commit('main/set_page_overlay_content_data', {createHoldUrl})\r\n })\r\n }\r\n}","import {createApp} from 'vue'\r\nimport OrdreOverview from './OrdreOverview'\r\n\r\nconst el = '.kb-component--ordre-overview'\r\n\r\nexport default function(Store) {\r\n const DOM = document.querySelectorAll(el)\r\n if (DOM.length) {\r\n DOM.forEach((OrdreOverviewDOM) => {\r\n const props = {\r\n orders: JSON.parse(OrdreOverviewDOM.dataset.orders),\r\n }\r\n const component = createApp(OrdreOverview, props).use(Store)\r\n component.mount(OrdreOverviewDOM)\r\n })\r\n }\r\n}","import Accordion from '../Accordion/Accordion.init.js'\r\nimport Dictionary from '../Dictionary/Dictionary.init.js'\r\nimport DictionaryWord from '../DictionaryWord/DictionaryWord.init.js'\r\nimport FactBox from '../FactBox/FactBox.init.js'\r\nimport InfoCarousel from '../InfoCarousel/InfoCarousel.init.js'\r\nimport SubNavigation from '../SubNavigation/SubNavigation.init.js'\r\nimport TheHeader from '../TheHeader/TheHeader.init.js'\r\nimport VideoComponent from '../VideoComponent/VideoComponent.init.js'\r\n\r\nexport default function (Store) {\r\n Accordion(Store)\r\n Dictionary(Store)\r\n DictionaryWord(Store)\r\n FactBox(Store)\r\n InfoCarousel(Store)\r\n SubNavigation(Store)\r\n TheHeader(Store)\r\n VideoComponent(Store)\r\n}\r\n","import { createApp } from 'vue'\r\nimport PersonalDonationStep2a from './PersonalDonationStep2a'\r\n\r\nconst el = '.kb-component--personal-donation-step2-a'\r\n\r\nexport default function (Store) {\r\n const DOM = document.querySelectorAll(el)\r\n if (DOM.length) {\r\n DOM.forEach((PersonalDonationStep2aDOM) => {\r\n const component = createApp(PersonalDonationStep2a).use(Store)\r\n component.mount(PersonalDonationStep2aDOM)\r\n })\r\n }\r\n}\r\n","import { createApp } from 'vue'\r\nimport PersonalDonationStep3 from './PersonalDonationStep3'\r\n\r\nconst el = '.kb-component--fundraise-step3'\r\n\r\nexport default function (Store) {\r\n const DOM = document.querySelectorAll(el)\r\n if (DOM.length) {\r\n DOM.forEach((PersonalDonationStep3DOM) => {\r\n const component = createApp(PersonalDonationStep3).use(Store)\r\n component.mount(PersonalDonationStep3DOM)\r\n })\r\n }\r\n}\r\n","import { createApp } from 'vue'\r\nimport PickUpAddress from './PickUpAddress'\r\n\r\nconst el = '.kb-component--pick-up-address'\r\n\r\nexport default function (Store) {\r\n const DOM = document.querySelectorAll(el)\r\n if (DOM.length) {\r\n DOM.forEach((PickUpAddressDOM) => {\r\n const component = createApp(PickUpAddress).use(Store)\r\n component.mount(PickUpAddressDOM)\r\n })\r\n }\r\n}\r\n","import { createApp } from 'vue'\r\nimport PodcastSliderCard from './PodcastSliderCard'\r\n\r\nconst el = '.kb-component--podcast-slider-card'\r\n\r\nexport default function (Store) {\r\n const DOM = document.querySelectorAll(el)\r\n if (DOM && DOM.length) {\r\n DOM.forEach((PodcastSliderCardDom) => {\r\n const data = PodcastSliderCardDom.dataset.data\r\n ? JSON.parse(PodcastSliderCardDom.dataset.data)\r\n : null\r\n\r\n const component = createApp(PodcastSliderCard, { data }).use(Store)\r\n component.mount(PodcastSliderCardDom)\r\n })\r\n }\r\n}\r\n","import {createApp} from 'vue'\r\nimport options from './PostAside.options'\r\n\r\nconst el = '.kb-component--post-aside'\r\n\r\nexport default function(Store){\r\n const DOM = document.querySelectorAll(el)\r\n if(DOM.length){\r\n DOM.forEach((PostAsideDOM)=>{\r\n const template = PostAsideDOM.outerHTML\r\n options.template = template\r\n const component = createApp(options).use(Store)\r\n component.mount(PostAsideDOM)\r\n })\r\n }\r\n}\r\n\r\n","import {createApp} from 'vue'\r\nimport PostComment from './PostComment'\r\n\r\nconst el = '.kb-component--post-comment'\r\n\r\nexport default function(Store){\r\n const DOM = document.querySelectorAll(el)\r\n if(DOM.length){\r\n DOM.forEach((PostCommentDOM)=>{\r\n const props = {\r\n isFrivilligContext: PostCommentDOM.dataset.isFrivilligContext ?? false,\r\n canReply: PostCommentDOM.dataset.canReply ? JSON.parse(PostCommentDOM.dataset.canReply) : false,\r\n postId: PostCommentDOM.dataset.postId ?? '',\r\n groupId: PostCommentDOM.dataset.groupId ?? ''\r\n }\r\n const component = createApp(PostComment, props).use(Store)\r\n component.mount(PostCommentDOM)\r\n })\r\n }\r\n}","import {createApp} from 'vue'\r\nimport store from 'store'\r\nimport options from './PostHeader.options'\r\n\r\nconst el = '.kb-component--post-header'\r\n\r\nexport default function(Store){\r\n const DOM = document.querySelectorAll(el)\r\n if(DOM.length){\r\n DOM.forEach((PostHeaderDOM)=>{\r\n const isFrivilligContext =\r\n PostHeaderDOM.hasAttribute('is-frivillig-context')\r\n const props = {\r\n postId: PostHeaderDOM.dataset.postId,\r\n canEdit: PostHeaderDOM.dataset.canEdit ? JSON.parse(PostHeaderDOM.dataset.canEdit) : false,\r\n authorId: PostHeaderDOM.dataset.authorId\r\n }\r\n \r\n const template = PostHeaderDOM.outerHTML\r\n options.template = template\r\n const component = createApp(options,{\r\n ...props,\r\n isFrivilligContext\r\n }).use(Store)\r\n component.mount(PostHeaderDOM)\r\n })\r\n }\r\n}\r\n\r\n","import {createApp} from 'vue'\r\nimport PostHeaderAddComment from './PostHeaderAddComment'\r\n\r\nconst el = '.kb-component--post-header-add-comment'\r\n\r\nexport default function(Store) {\r\n const DOM = document.querySelectorAll(el)\r\n if (DOM.length) {\r\n DOM.forEach((PostHeaderAddCommentDOM) => {\r\n const props = {\r\n postId: PostHeaderAddCommentDOM.dataset.postId\r\n }\r\n \r\n const component = createApp(PostHeaderAddComment, props).use(Store)\r\n component.mount(PostHeaderAddCommentDOM)\r\n })\r\n }\r\n}\r\n\r\n","import {createApp} from 'vue'\r\nimport PostsList from './PostsList'\r\n\r\nconst el = '.kb-component--posts-list'\r\n\r\nexport default function(Store){\r\n const DOM = document.querySelectorAll(el)\r\n if(DOM.length){\r\n DOM.forEach((PostsListDOM)=>{\r\n const groupData = JSON.parse(PostsListDOM.dataset.group)\r\n \r\n const props = {\r\n guid: PostsListDOM.dataset.guid ?? '',\r\n numberOfMembers: groupData.numberOfMembers ?? 0,\r\n groupId: groupData.id ?? '',\r\n isClosedGroup: groupData.isClosedGroup,\r\n universId: PostsListDOM.dataset.universId ?? '',\r\n isLoggedIn: PostsListDOM.dataset.isLoggedIn === \"true\",\r\n loginUrl: PostsListDOM.dataset.loginUrl,\r\n hasMemberAccess: PostsListDOM.dataset.hasMemberAccess === \"true\",\r\n take: parseInt(PostsListDOM.dataset.take)\r\n }\r\n const component = createApp(PostsList, props).use(Store)\r\n component.mount(PostsListDOM)\r\n })\r\n }\r\n}","import { createApp } from 'vue'\r\nimport ProductCard from './ProductCard'\r\n\r\nconst el = '.kb-component--product-card'\r\n\r\nexport default function (Store) {\r\n const DOM = document.querySelectorAll(el)\r\n if (DOM.length) {\r\n DOM.forEach((ProductCardDOM) => {\r\n const props = {\r\n data: ProductCardDOM.dataset.product ? JSON.parse(ProductCardDOM.dataset.product) : {},\r\n }\r\n const component = createApp(ProductCard, props).use(Store)\r\n component.mount(ProductCardDOM)\r\n })\r\n }\r\n}\r\n","import { createApp } from 'vue'\r\nimport options from './ProductDetail.options'\r\n\r\nconst el = '.kb-component--product-detail'\r\n\r\nexport default function (Store) {\r\n const DOM = document.querySelectorAll(el)\r\n if (DOM.length) {\r\n DOM.forEach((ProductDetailDOM) => {\r\n const template = ProductDetailDOM.outerHTML\r\n options.template = template\r\n const isSoldOut = ProductDetailDOM.hasAttribute('is-sold-out')\r\n const component = createApp(options, { isSoldOut }).use(Store)\r\n component.mount(ProductDetailDOM)\r\n })\r\n }\r\n}\r\n","import { createApp } from 'vue'\r\nimport ProductsCardsSlider from './ProductsCardsSlider'\r\n\r\nconst el = '.kb-component--products-cards-slider'\r\n\r\nexport default function (Store) {\r\n const DOM = document.querySelectorAll(el)\r\n if (DOM) {\r\n DOM.forEach((ProductsCardsSliderDOM) => {\r\n if (ProductsCardsSliderDOM.hasAttribute('data-v-app')) return false\r\n\r\n const props = {\r\n spotCardData: ProductsCardsSliderDOM.dataset.spotCardData\r\n ? JSON.parse(ProductsCardsSliderDOM.dataset.spotCardData)\r\n : null,\r\n spotCardIndex: ProductsCardsSliderDOM.dataset.spotCardIndex\r\n ? parseInt(ProductsCardsSliderDOM.dataset.spotCardIndex, 10)\r\n : null,\r\n sliderId: ProductsCardsSliderDOM.id,\r\n results: ProductsCardsSliderDOM.dataset.contentjson\r\n ? JSON.parse(ProductsCardsSliderDOM.dataset.contentjson)\r\n : [],\r\n glideBehaviour: ProductsCardsSliderDOM.dataset.glideBehaviour,\r\n type: ProductsCardsSliderDOM.dataset.type,\r\n link: ProductsCardsSliderDOM.dataset.link\r\n ? JSON.parse(ProductsCardsSliderDOM.dataset.link)\r\n : null\r\n }\r\n\r\n const component = createApp(ProductsCardsSlider, props).use(Store)\r\n component.mount(ProductsCardsSliderDOM)\r\n })\r\n }\r\n}\r\n","import {createApp} from 'vue'\r\nimport ProfileDeleted from './ProfileDeleted'\r\n\r\nconst el = '.kb-component--profile-deleted'\r\n\r\nexport default function(Store){\r\n const DOM = document.querySelectorAll(el)\r\n if(DOM.length){\r\n DOM.forEach((ProfileDeletedDOM)=>{\r\n const component = createApp(ProfileDeleted).use(Store)\r\n component.mount(ProfileDeletedDOM)\r\n })\r\n }\r\n}","import {createApp} from 'vue'\r\nimport ProfilePicture from './ProfilePicture'\r\n\r\nconst el = '.kb-component--profile-picture'\r\n\r\nexport default function(Store){\r\n const DOM = document.querySelectorAll(el)\r\n if(DOM.length){\r\n DOM.forEach((ProfilePictureDOM)=>{\r\n const props = {\r\n userId: ProfilePictureDOM.dataset.userId ?? \"\",\r\n content: ProfilePictureDOM.dataset.content ? JSON.parse(ProfilePictureDOM.dataset.content) : null,\r\n type: ProfilePictureDOM.dataset.type ?? \"cancerforum\"\r\n }\r\n const component = createApp(ProfilePicture, props).use(Store)\r\n component.mount(ProfilePictureDOM)\r\n })\r\n }\r\n}","import {createApp} from 'vue'\r\nimport ProjectCard from './ProjectCard'\r\n\r\nconst el = '.kb-component--project-card'\r\n\r\nexport default function(Store){\r\n const DOM = document.querySelectorAll(el)\r\n if(DOM.length){\r\n DOM.forEach((ProjectCardDOM)=>{\r\n const result = JSON.parse(ProjectCardDOM.dataset.result)\r\n const component = createApp(ProjectCard, { result }).use(Store)\r\n component.mount(ProjectCardDOM)\r\n })\r\n }\r\n}","import {createApp} from 'vue'\r\nimport ProjectsList from './ProjectsList'\r\n\r\nconst el = '.kb-component--projects-list'\r\n\r\nexport default function(Store){\r\n const DOM = document.querySelectorAll(el)\r\n if(DOM.length){\r\n DOM.forEach((ProjectsListDOM)=>{\r\n const props = {\r\n guid: ProjectsListDOM.dataset.guid,\r\n firstPageSize: parseInt(ProjectsListDOM.dataset.firstPageSize) ?? 20,\r\n showMorePageSize: parseInt(ProjectsListDOM.dataset.showMorePageSize) ?? 20,\r\n spotCardData: ProjectsListDOM.dataset.spotCard\r\n ? JSON.parse(ProjectsListDOM.dataset.spotCard)\r\n : null,\r\n hideNoResults: ProjectsListDOM.dataset.hideNoResults === 'true',\r\n hideTotalCount: ProjectsListDOM.dataset.hideTotalCount === 'true'\r\n }\r\n\r\n const component = createApp(ProjectsList, props).use(Store)\r\n component.mount(ProjectsListDOM)\r\n })\r\n }\r\n}","import { createApp } from 'vue'\r\nimport ReceiptContent from './ReceiptContent'\r\n\r\nconst el = '.kb-component--receipt-content'\r\n\r\nexport default function (Store) {\r\n const DOM = document.querySelectorAll(el)\r\n if (DOM.length) {\r\n DOM.forEach((ReceiptContentDOM) => {\r\n document.body.classList.add('kb-receipt-page')\r\n const receiptResults = ReceiptContentDOM.dataset.receiptResults\r\n ? JSON.parse(ReceiptContentDOM.dataset.receiptResults)\r\n : {}\r\n const component = createApp(ReceiptContent, { receiptResults }).use(\r\n Store\r\n )\r\n component.mount(ReceiptContentDOM)\r\n })\r\n }\r\n}\r\n","import { createApp } from 'vue'\r\nimport RelayList from './RelayList'\r\n\r\nconst el = '.kb-component--relay-list'\r\n\r\nexport default function (Store) {\r\n const DOM = document.querySelectorAll(el)\r\n if (DOM.length) {\r\n DOM.forEach((RelayListDOM) => {\r\n const props = {\r\n guid: RelayListDOM.dataset.guid,\r\n skip: parseInt(RelayListDOM.dataset.skip) ?? 0,\r\n take: parseInt(RelayListDOM.dataset.take) ?? 10,\r\n hideNoResults: RelayListDOM.hasAttribute('hide-no-results')\r\n }\r\n const component = createApp(RelayList, props).use(Store)\r\n component.mount(RelayListDOM)\r\n })\r\n }\r\n}\r\n","import {createApp} from 'vue'\r\nimport ReportCard from './ReportCard'\r\n\r\nconst el = '.kb-component--report-card'\r\n\r\nexport default function(Store){\r\n const DOM = document.querySelectorAll(el)\r\n if(DOM && DOM.length){\r\n DOM.forEach((ReportCardDom)=>{\r\n const data = ReportCardDom.dataset.data \r\n ? JSON.parse(ReportCardDom.dataset.data)\r\n : null;\r\n\r\n const component = createApp(ReportCard,{data}).use(Store)\r\n component.mount(ReportCardDom)\r\n })\r\n }\r\n}","import {createApp} from 'vue'\r\nimport RequestRole from './RequestRole'\r\n\r\nconst el = '.kb-component--request-role'\r\n\r\nexport default function(Store){\r\n const DOM = document.querySelectorAll(el)\r\n if(DOM.length){\r\n DOM.forEach((RequestRoleDOM)=>{\r\n \r\n const component = createApp(RequestRole).use(Store)\r\n component.mount(RequestRoleDOM)\r\n })\r\n }\r\n}","import {createApp} from 'vue'\r\nimport RolesFormContent from './RolesFormContent'\r\n\r\nconst el = '.kb-component--roles-form-content'\r\n\r\nexport default function(Store){\r\n const DOM = document.querySelectorAll(el)\r\n if(DOM.length){\r\n DOM.forEach((RolesFormContentDOM)=>{\r\n const component = createApp(RolesFormContent).use(Store)\r\n component.mount(RolesFormContentDOM)\r\n })\r\n }\r\n}","import { createApp } from 'vue'\r\nimport options from './SearchAndCTA.options'\r\n\r\nconst el = '.kb-component--search-and-cta'\r\n\r\nexport default function (Store) {\r\n const DOM = document.querySelectorAll(el)\r\n if (DOM.length) {\r\n DOM.forEach((SearchAndCTADOM) => {\r\n const template = SearchAndCTADOM.outerHTML\r\n options.template = template\r\n const component = createApp(options, {\r\n guid: SearchAndCTADOM.dataset.guid\r\n }).use(Store)\r\n component.mount(SearchAndCTADOM)\r\n })\r\n }\r\n}\r\n","import { createApp } from 'vue'\r\nimport SearchFilteredTags from './SearchFilteredTags'\r\n\r\nconst el = '.kb-component--search-filtered-tags'\r\n\r\nexport default function (Store) {\r\n const DOM = document.querySelectorAll(el)\r\n if (DOM.length) {\r\n DOM.forEach((SearchFilteredTagsDOM) => {\r\n const guids = SearchFilteredTagsDOM.dataset.guids\r\n ? JSON.parse(SearchFilteredTagsDOM.dataset.guids)\r\n : []\r\n const component = createApp(SearchFilteredTags, { guids }).use(\r\n Store\r\n )\r\n component.mount(SearchFilteredTagsDOM)\r\n })\r\n }\r\n}\r\n","import { createApp } from 'vue'\r\nimport options from './SessionStorageFormularTest.options'\r\n\r\nconst el = '.kb-component--session-storage-formular-test'\r\n\r\nexport default function (Store) {\r\n const DOM = document.querySelectorAll(el)\r\n if (DOM.length) {\r\n DOM.forEach((SessionStorageFormularTestDOM) => {\r\n const template = SessionStorageFormularTestDOM.outerHTML\r\n options.template = template\r\n const component = createApp(options).use(Store)\r\n component.mount(SessionStorageFormularTestDOM)\r\n })\r\n }\r\n}\r\n","import { createApp } from 'vue'\r\nimport options from './SignUpButton.options'\r\n\r\nconst el = '.kb-component--sign-up-button'\r\n\r\nexport default function (Store) {\r\n const DOM = document.querySelectorAll(el)\r\n if (DOM.length) {\r\n DOM.forEach((SignUpButtonDOM) => {\r\n const eventId = SignUpButtonDOM.dataset.eventId\r\n const successButtonData = SignUpButtonDOM.dataset.successButtonData\r\n ? JSON.parse(SignUpButtonDOM.dataset.successButtonData)\r\n : null\r\n\r\n const template = SignUpButtonDOM.innerHTML\r\n options.template = template\r\n const component = createApp(options, {\r\n eventId,\r\n successButtonData\r\n }).use(Store)\r\n component.mount(SignUpButtonDOM)\r\n })\r\n }\r\n}\r\n","import { createApp } from 'vue'\r\nimport SignUpForm from './SignUpForm'\r\n\r\nconst el = '.kb-component--sign-up-form'\r\n\r\nexport default function (Store) {\r\n const DOM = document.querySelectorAll(el)\r\n if (DOM.length) {\r\n DOM.forEach((SignUpFormDOM) => {\r\n const component = createApp(SignUpForm).use(Store)\r\n component.mount(SignUpFormDOM)\r\n })\r\n }\r\n}\r\n","import { createApp } from 'vue'\r\nimport SimpleCard from './SimpleCard'\r\n\r\nconst el = '.kb-component--simple-card'\r\n\r\nexport default function (Store) {\r\n const DOM = document.querySelectorAll(el)\r\n if (DOM && DOM.length) {\r\n DOM.forEach((SimpleCardDOM) => {\r\n const result = JSON.parse(SimpleCardDOM.dataset.result)\r\n const component = createApp(SimpleCard, { result }).use(Store)\r\n component.mount(SimpleCardDOM)\r\n })\r\n }\r\n}\r\n","import { createApp } from 'vue'\r\nimport SortDropdown from './SortDropdown'\r\n\r\nconst el = '.kb-component--sort-dropdown'\r\n\r\nexport default function (Store) {\r\n const DOM = document.querySelectorAll(el)\r\n if (DOM.length) {\r\n DOM.forEach((SortDropdownDOM) => {\r\n const config = JSON.parse(SortDropdownDOM.dataset.config)\r\n const component = createApp(SortDropdown, { config }).use(Store)\r\n component.mount(SortDropdownDOM)\r\n })\r\n }\r\n}\r\n","import { createApp } from 'vue'\r\nimport StafetActions from './StafetActions'\r\n\r\nconst el = '.kb-component--stafet-flow-actions'\r\n\r\nexport default function (Store) {\r\n const DOM = document.querySelectorAll(el)\r\n if (DOM.length) {\r\n DOM.forEach((StafetActionsDOM) => {\r\n const component = createApp(StafetActions).use(Store)\r\n component.mount(StafetActionsDOM)\r\n })\r\n }\r\n}\r\n","import { createApp } from 'vue'\r\nimport StafetAddDeltager from './StafetAddDeltager'\r\n\r\nconst el = '.kb-component--stafet-flow-add-participants'\r\n\r\nexport default function (Store) {\r\n const DOM = document.querySelectorAll(el)\r\n if (DOM.length) {\r\n DOM.forEach((StafetAddDeltagerDOM) => {\r\n const component = createApp(StafetAddDeltager).use(Store)\r\n component.mount(StafetAddDeltagerDOM)\r\n })\r\n }\r\n}\r\n","import { createApp } from 'vue'\r\nimport StafetAddMoreDeltagerFlow from './StafetAddMoreDeltagerFlow'\r\nimport isObjectNotNullOrEmpty from 'foundation/js/isObjectNotNullOrEmpty'\r\n\r\nconst el = '.kb-component--stafet-add-more-deltager-flow'\r\n\r\nexport default function (Store) {\r\n const DOM = document.querySelectorAll(el)\r\n if (DOM.length) {\r\n DOM.forEach((StafetAddMoreDeltagerFlowDOM) => {\r\n const externalData = StafetAddMoreDeltagerFlowDOM.dataset.external\r\n ? JSON.parse(StafetAddMoreDeltagerFlowDOM.dataset.external)\r\n : null\r\n\r\n const props = {\r\n stafetId: externalData.stafetId ?? null,\r\n holdkode: isObjectNotNullOrEmpty(externalData.holdkode)\r\n ? externalData.holdkode\r\n : null,\r\n userData: isObjectNotNullOrEmpty(externalData.userData)\r\n ? externalData.userData\r\n : null,\r\n loggedIn: isObjectNotNullOrEmpty(externalData.userData),\r\n adultPrice: externalData.adultPrice,\r\n childPrice: externalData.childPrice\r\n }\r\n\r\n const component = createApp(StafetAddMoreDeltagerFlow, props).use(\r\n Store\r\n )\r\n component.mount(StafetAddMoreDeltagerFlowDOM)\r\n })\r\n }\r\n}\r\n","import { createApp } from 'vue'\r\nimport StafetDeltagPaaHoldFlow from './StafetDeltagPaaHoldFlow'\r\nimport isObjectNotNullOrEmpty from 'foundation/js/isObjectNotNullOrEmpty'\r\n\r\nconst el = '.kb-component--stafet-join-a-team-flow'\r\n\r\nexport default function (Store) {\r\n const DOM = document.querySelectorAll(el)\r\n if (DOM.length) {\r\n DOM.forEach((StafetDeltagPaaHoldFlowDOM) => {\r\n const externalData = StafetDeltagPaaHoldFlowDOM.dataset.external\r\n ? JSON.parse(StafetDeltagPaaHoldFlowDOM.dataset.external)\r\n : null\r\n\r\n const props = {\r\n stafetId: externalData.stafetId ?? null,\r\n holdId: externalData.holdId ?? null,\r\n tshirtSizes: externalData.tshirtSizes ?? [],\r\n holdList: externalData.holdList ?? [],\r\n userData: isObjectNotNullOrEmpty(externalData.userData)\r\n ? externalData.userData\r\n : null,\r\n donationAmounts: externalData.amounts ?? [], // { amountLabel: string, amount: number }\r\n loggedIn: isObjectNotNullOrEmpty(externalData.userData),\r\n lysposeMinimumAmount: externalData.lysposeMinimumAmount ?? 50,\r\n adultPrice: externalData.adultPrice,\r\n childPrice: externalData.childPrice,\r\n lysposeQuantityOption1: externalData.lysposeQuantityOption1 ?? 1,\r\n lysposeQuantityOption2: externalData.lysposeQuantityOption2 ?? 5,\r\n lysposeQuantityOption3: externalData.lysposeQuantityOption3 ?? 10,\r\n redirectToEditProfile: externalData.redirectToEditProfile,\r\n editProfileLinkText: externalData.editProfileLinkText,\r\n }\r\n const component = createApp(StafetDeltagPaaHoldFlow, props).use(\r\n Store\r\n )\r\n component.mount(StafetDeltagPaaHoldFlowDOM)\r\n })\r\n }\r\n}\r\n","import { createApp } from 'vue'\r\nimport StafetDeltagPaaHoldStepFour from './StafetDeltagPaaHoldStepFour'\r\n\r\nconst el = '.kb-component--stafet-join-a-team-step-four'\r\n\r\nexport default function (Store) {\r\n const DOM = document.querySelectorAll(el)\r\n if (DOM.length) {\r\n DOM.forEach((StafetDeltagPaaHoldStepFourDOM) => {\r\n const component = createApp(StafetDeltagPaaHoldStepFour).use(Store)\r\n component.mount(StafetDeltagPaaHoldStepFourDOM)\r\n })\r\n }\r\n}\r\n","import { createApp } from 'vue'\r\nimport StafetDeltagPaaHoldStepOne from './StafetDeltagPaaHoldStepOne'\r\n\r\nconst el = '.kb-component--stafet-join-a-team-step-one'\r\n\r\nexport default function (Store) {\r\n const DOM = document.querySelectorAll(el)\r\n if (DOM.length) {\r\n DOM.forEach((StafetDeltagPaaHoldStepOneDOM) => {\r\n const component = createApp(StafetDeltagPaaHoldStepOne).use(Store)\r\n component.mount(StafetDeltagPaaHoldStepOneDOM)\r\n })\r\n }\r\n}\r\n","import { createApp } from 'vue'\r\nimport StafetDeltagPaaHoldStepThree from './StafetDeltagPaaHoldStepThree'\r\n\r\nconst el = '.kb-component--stafet-join-a-team-step-three'\r\n\r\nexport default function (Store) {\r\n const DOM = document.querySelectorAll(el)\r\n if (DOM.length) {\r\n DOM.forEach((StafetDeltagPaaHoldStepThreeDOM) => {\r\n const component = createApp(StafetDeltagPaaHoldStepThree).use(Store)\r\n component.mount(StafetDeltagPaaHoldStepThreeDOM)\r\n })\r\n }\r\n}\r\n","import { createApp } from 'vue'\r\nimport StafetDeltagPaaHoldStepTwo from './StafetDeltagPaaHoldStepTwo'\r\n\r\nconst el = '.kb-component--stafet-join-a-team-step-two'\r\n\r\nexport default function (Store) {\r\n const DOM = document.querySelectorAll(el)\r\n if (DOM.length) {\r\n DOM.forEach((StafetDeltagPaaHoldStepTwoDOM) => {\r\n const component = createApp(StafetDeltagPaaHoldStepTwo).use(Store)\r\n component.mount(StafetDeltagPaaHoldStepTwoDOM)\r\n })\r\n }\r\n}\r\n","import { createApp } from 'vue'\r\nimport StafetDeltagSomFighterFlow from './StafetDeltagSomFighterFlow'\r\nimport isObjectNotNullOrEmpty from 'foundation/js/isObjectNotNullOrEmpty'\r\n\r\nconst el = '.kb-component--stafet-deltag-som-fighter-flow'\r\n\r\nexport default function (Store) {\r\n const DOM = document.querySelectorAll(el)\r\n if (DOM.length) {\r\n DOM.forEach((StafetDeltagSomFighterFlowDOM) => {\r\n const externalData = StafetDeltagSomFighterFlowDOM.dataset.external\r\n ? JSON.parse(StafetDeltagSomFighterFlowDOM.dataset.external)\r\n : null\r\n const props = {\r\n stafetId: externalData.stafetId ?? null,\r\n tshirtSizes: externalData.tshirtSizes ?? [],\r\n holdList: externalData.holdList ?? [],\r\n userData: isObjectNotNullOrEmpty(externalData.userData)\r\n ? externalData.userData\r\n : null,\r\n donationAmounts: externalData.amounts ?? [],\r\n loggedIn: isObjectNotNullOrEmpty(externalData.userData),\r\n redirectToEditProfile:\r\n StafetDeltagSomFighterFlowDOM.dataset\r\n .redirectToEditProfile ?? '',\r\n adultPrice: externalData.adultPrice,\r\n childPrice: externalData.childPrice,\r\n redirectToEditProfile: externalData.redirectToEditProfile,\r\n editProfileLinkText: externalData.editProfileLinkText\r\n }\r\n\r\n const component = createApp(StafetDeltagSomFighterFlow, props).use(\r\n Store\r\n )\r\n\r\n component.mount(StafetDeltagSomFighterFlowDOM)\r\n })\r\n }\r\n}\r\n","import {createApp} from 'vue'\r\nimport StafetDeltagSomFighterStepOne from './StafetDeltagSomFighterStepOne'\r\n\r\nconst el = '.kb-component--stafet-deltag-som-fighter-step-one'\r\n\r\nexport default function(Store){\r\n const DOM = document.querySelectorAll(el)\r\n if(DOM.length){\r\n DOM.forEach((StafetDeltagSomFighterStepOneDOM)=>{\r\n const component = createApp(StafetDeltagSomFighterStepOne).use(Store)\r\n component.mount(StafetDeltagSomFighterStepOneDOM)\r\n })\r\n }\r\n}","import {createApp} from 'vue'\r\nimport StafetDeltagSomFighterStepThree from './StafetDeltagSomFighterStepThree'\r\n\r\nconst el = '.kb-component--stafet-deltag-som-fighter-step-three'\r\n\r\nexport default function(Store){\r\n const DOM = document.querySelectorAll(el)\r\n if(DOM.length){\r\n DOM.forEach((StafetDeltagSomFighterStepThreeDOM)=>{\r\n const component = createApp(StafetDeltagSomFighterStepThree).use(Store)\r\n component.mount(StafetDeltagSomFighterStepThreeDOM)\r\n })\r\n }\r\n}","import {createApp} from 'vue'\r\nimport StafetDeltagSomFighterStepTwo from './StafetDeltagSomFighterStepTwo'\r\n\r\nconst el = '.kb-component--stafet-deltag-som-fighter-step-two'\r\n\r\nexport default function(Store){\r\n const DOM = document.querySelectorAll(el)\r\n if(DOM.length){\r\n DOM.forEach((StafetDeltagSomFighterStepTwoDOM)=>{\r\n const component = createApp(StafetDeltagSomFighterStepTwo).use(Store)\r\n component.mount(StafetDeltagSomFighterStepTwoDOM)\r\n })\r\n }\r\n}","import { createApp } from 'vue'\r\nimport StafetDonationFlow from './StafetDonationFlow'\r\nimport isObjectNotNullOrEmpty from 'foundation/js/isObjectNotNullOrEmpty'\r\n\r\nconst el = '.kb-component--stafet-donation-flow'\r\n\r\nexport default function (Store) {\r\n const DOM = document.querySelectorAll(el)\r\n if (DOM.length) {\r\n DOM.forEach((StafetDonationFlowDOM) => {\r\n const externalData = StafetDonationFlowDOM.dataset.external\r\n ? JSON.parse(StafetDonationFlowDOM.dataset.external)\r\n : null\r\n const props = {\r\n stafetId: externalData.stafetId ?? null,\r\n holdList: externalData.holdList ?? null,\r\n userData: externalData.userData ?? null,\r\n loggedIn: isObjectNotNullOrEmpty(externalData.userData),\r\n minimumDonationAmount: externalData.minimumDonationAmount ?? 1,\r\n holdId: externalData.holdId ?? '',\r\n deltagerId: externalData.deltagerId ?? ''\r\n }\r\n const component = createApp(StafetDonationFlow, props).use(Store)\r\n component.mount(StafetDonationFlowDOM)\r\n })\r\n }\r\n}\r\n","import {createApp} from 'vue'\r\nimport StafetDonationStepOne from './StafetDonationStepOne'\r\n\r\nconst el = '.kb-component--stafet-donation-step-one'\r\n\r\nexport default function(Store){\r\n const DOM = document.querySelectorAll(el)\r\n if(DOM.length){\r\n DOM.forEach((StafetDonationStepOneDOM)=>{\r\n const component = createApp(StafetDonationStepOne).use(Store)\r\n component.mount(StafetDonationStepOneDOM)\r\n })\r\n }\r\n}","import {createApp} from 'vue'\r\nimport StafetDonationStepPrivat from './StafetDonationStepPrivat'\r\n\r\nconst el = '.kb-component--stafet-donation-step-privat'\r\n\r\nexport default function(Store){\r\n const DOM = document.querySelectorAll(el)\r\n if(DOM.length){\r\n DOM.forEach((StafetDonationStepPrivatDOM)=>{\r\n const component = createApp(StafetDonationStepPrivat).use(Store)\r\n component.mount(StafetDonationStepPrivatDOM)\r\n })\r\n }\r\n}","import { createApp } from 'vue'\r\nimport StafetDonationStepTwo from './StafetDonationStepTwo'\r\n\r\nconst el = '.kb-component--stafet-donation-step-two'\r\n\r\nexport default function (Store) {\r\n const DOM = document.querySelectorAll(el)\r\n if (DOM.length) {\r\n DOM.forEach((StafetDonationStepTwoDOM) => {\r\n const component = createApp(StafetDonationStepTwo).use(Store)\r\n component.mount(StafetDonationStepTwoDOM)\r\n })\r\n }\r\n}\r\n","import {createApp} from 'vue'\r\nimport StafetDonationStepVirksomhed from './StafetDonationStepVirksomhed'\r\n\r\nconst el = '.kb-component--stafet-donation-step-virksomhed'\r\n\r\nexport default function(Store){\r\n const DOM = document.querySelectorAll(el)\r\n if(DOM.length){\r\n DOM.forEach((StafetDonationStepVirksomhedDOM)=>{\r\n const component = createApp(StafetDonationStepVirksomhed).use(Store)\r\n component.mount(StafetDonationStepVirksomhedDOM)\r\n })\r\n }\r\n}","import { createApp } from 'vue'\r\nimport StafetDonationTaendLysFlow from './StafetDonationTaendLysFlow'\r\nimport isObjectNotNullOrEmpty from 'foundation/js/isObjectNotNullOrEmpty'\r\n\r\nconst el = '.kb-component--stafet-donation-taend-lys-flow'\r\n\r\nexport default function (Store) {\r\n const DOM = document.querySelectorAll(el)\r\n if (DOM.length) {\r\n DOM.forEach((StafetDonationTaendLysFlowDOM) => {\r\n const externalData = StafetDonationTaendLysFlowDOM.dataset.external\r\n ? JSON.parse(StafetDonationTaendLysFlowDOM.dataset.external)\r\n : null\r\n const props = {\r\n stafetId: externalData.stafetId ?? null,\r\n loggedIn: isObjectNotNullOrEmpty(externalData.userData),\r\n holdList: externalData.holdList ?? null,\r\n userData: isObjectNotNullOrEmpty(externalData.userData)\r\n ? externalData.userData\r\n : null,\r\n lysposeMinimumAmount: externalData.lysposeMinimumAmount ?? 50,\r\n holdId: externalData.holdId ?? '',\r\n deltagerId: externalData.deltagerId ?? ''\r\n }\r\n const component = createApp(StafetDonationTaendLysFlow, props).use(\r\n Store\r\n )\r\n component.mount(StafetDonationTaendLysFlowDOM)\r\n })\r\n }\r\n}\r\n","import { createApp } from 'vue'\r\nimport StafetDonationTaendLysStepOne from './StafetDonationTaendLysStepOne'\r\n\r\nconst el = '.kb-component--stafet-donation-taend-lys-step-one'\r\n\r\nexport default function (Store) {\r\n const DOM = document.querySelectorAll(el)\r\n if (DOM.length) {\r\n DOM.forEach((StafetDonationTaendLysStepOneDOM) => {\r\n const component = createApp(StafetDonationTaendLysStepOne).use(\r\n Store\r\n )\r\n component.mount(StafetDonationTaendLysStepOneDOM)\r\n })\r\n }\r\n}\r\n","import { createApp } from 'vue'\r\nimport StafetDonationTaendLysStepThree from './StafetDonationTaendLysStepThree'\r\n\r\nconst el = '.kb-component--stafet-donation-taend-lys-step-three'\r\n\r\nexport default function (Store) {\r\n const DOM = document.querySelectorAll(el)\r\n if (DOM.length) {\r\n DOM.forEach((StafetDonationTaendLysStepThreeDOM) => {\r\n const component = createApp(StafetDonationTaendLysStepThree).use(\r\n Store\r\n )\r\n component.mount(StafetDonationTaendLysStepThreeDOM)\r\n })\r\n }\r\n}\r\n","import { createApp } from 'vue'\r\nimport StafetDonationTaendLysStepTwo from './StafetDonationTaendLysStepTwo'\r\n\r\nconst el = '.kb-component--stafet-donation-taend-lys-step-two'\r\n\r\nexport default function (Store) {\r\n const DOM = document.querySelectorAll(el)\r\n if (DOM.length) {\r\n DOM.forEach((StafetDonationTaendLysStepTwoDOM) => {\r\n const component = createApp(StafetDonationTaendLysStepTwo).use(\r\n Store\r\n )\r\n component.mount(StafetDonationTaendLysStepTwoDOM)\r\n })\r\n }\r\n}\r\n","import { createApp } from 'vue'\r\nimport StafetEditHoldFlow from './StafetEditHoldFlow'\r\nimport isObjectNotNullOrEmpty from 'foundation/js/isObjectNotNullOrEmpty'\r\n\r\nconst el = '.kb-component--stafet-edit-hold-flow'\r\n\r\nexport default function (Store) {\r\n const DOM = document.querySelectorAll(el)\r\n if (DOM.length) {\r\n DOM.forEach((StafetEditHoldFlowDOM) => {\r\n const externalData = StafetEditHoldFlowDOM.dataset.external\r\n ? JSON.parse(StafetEditHoldFlowDOM.dataset.external)\r\n : null\r\n const props = {\r\n stafetId: externalData.stafetId ?? null,\r\n holdList: externalData.holdnavne ?? [],\r\n holdData: externalData.holdData ?? {},\r\n userData: externalData.userData ?? {},\r\n loggedIn: isObjectNotNullOrEmpty(externalData.userData)\r\n }\r\n\r\n const component = createApp(StafetEditHoldFlow, props).use(Store)\r\n component.mount(StafetEditHoldFlowDOM)\r\n })\r\n }\r\n}\r\n","import { createApp } from 'vue'\r\nimport StafetHeader from './StafetHeader'\r\n\r\nconst el = '.kb-component--stafet-flow-title'\r\n\r\nexport default function (Store) {\r\n const DOM = document.querySelectorAll(el)\r\n if (DOM.length) {\r\n DOM.forEach((StafetHeaderDOM) => {\r\n const component = createApp(StafetHeader).use(Store)\r\n component.mount(StafetHeaderDOM)\r\n })\r\n }\r\n}\r\n","import { createApp } from 'vue'\r\nimport StafetFlowLightBagsMetaList from './StafetLysPoserList'\r\n\r\nconst el = '.kb-component--stafet-flow-light-bags-meta-list'\r\n\r\nexport default function (Store) {\r\n const DOM = document.querySelectorAll(el)\r\n if (DOM.length) {\r\n DOM.forEach((StafetFlowLightBagsMetaListDOM) => {\r\n const component = createApp(StafetFlowLightBagsMetaList).use(Store)\r\n component.mount(StafetFlowLightBagsMetaListDOM)\r\n })\r\n }\r\n}\r\n","import { createApp } from 'vue'\r\nimport StafetOpretHoldFlow from './StafetOpretHoldFlow'\r\nimport isObjectNotNullOrEmpty from 'foundation/js/isObjectNotNullOrEmpty'\r\n\r\nconst el = '.kb-component--stafet-opret-hold-flow'\r\n\r\nexport default function (Store) {\r\n const DOM = document.querySelectorAll(el)\r\n if (DOM.length) {\r\n DOM.forEach((StafetOpretHoldFlowDOM) => {\r\n const externalData = StafetOpretHoldFlowDOM.dataset.external\r\n ? JSON.parse(StafetOpretHoldFlowDOM.dataset.external)\r\n : null\r\n const props = {\r\n stafetId: externalData.stafetId ?? null,\r\n holdList: externalData.holdnavne ?? [],\r\n holdData: externalData.holdData ?? {},\r\n userData: externalData.userData ?? {},\r\n loggedIn: isObjectNotNullOrEmpty(externalData.userData)\r\n }\r\n const component = createApp(StafetOpretHoldFlow, props).use(Store)\r\n component.mount(StafetOpretHoldFlowDOM)\r\n })\r\n }\r\n}\r\n","import {createApp} from 'vue'\r\nimport StafetOpretHoldStepOne from './StafetOpretHoldStepOne'\r\n\r\nconst el = '.kb-component--stafet-opret-hold-step-one'\r\n\r\nexport default function(Store){\r\n const DOM = document.querySelectorAll(el)\r\n if(DOM.length){\r\n DOM.forEach((StafetOpretHoldStepOneDOM)=>{\r\n const component = createApp(StafetOpretHoldStepOne).use(Store)\r\n component.mount(StafetOpretHoldStepOneDOM)\r\n })\r\n }\r\n}","import {createApp} from 'vue'\r\nimport StafetOpretHoldStepTwo from './StafetOpretHoldStepTwo'\r\n\r\nconst el = '.kb-component--stafet-opret-hold-step-two'\r\n\r\nexport default function(Store){\r\n const DOM = document.querySelectorAll(el)\r\n if(DOM.length){\r\n DOM.forEach((StafetOpretHoldStepTwoDOM)=>{\r\n const component = createApp(StafetOpretHoldStepTwo).use(Store)\r\n component.mount(StafetOpretHoldStepTwoDOM)\r\n })\r\n }\r\n}","import { createApp } from 'vue'\r\nimport StafetPayment from './StafetPayment'\r\n\r\nconst el = '.kb-component--stafet-flow-payment'\r\n\r\nexport default function (Store) {\r\n const DOM = document.querySelectorAll(el)\r\n if (DOM.length) {\r\n DOM.forEach((StafetPaymentDOM) => {\r\n const component = createApp(StafetPayment).use(Store)\r\n component.mount(StafetPaymentDOM)\r\n })\r\n }\r\n}\r\n","import { createApp } from 'vue'\r\nimport StafetProfileForm from './StafetProfileForm'\r\n\r\nconst el = '.kb-component--stafet-profile-form'\r\n\r\nexport default function (Store) {\r\n const DOM = document.querySelectorAll(el)\r\n if (DOM.length) {\r\n DOM.forEach((StafetProfileFormDOM) => {\r\n const externalData = StafetProfileFormDOM.dataset.external\r\n ? JSON.parse(StafetProfileFormDOM.dataset.external)\r\n : null\r\n const props = {\r\n stafetId: externalData.stafetId ?? null,\r\n userData: externalData.userData ?? {},\r\n editProfileLink:\r\n StafetProfileFormDOM.dataset.editProfileLink ?? null,\r\n removeProfileLink:\r\n StafetProfileFormDOM.dataset.removeProfileLink ?? null,\r\n editPasswordLink:\r\n StafetProfileFormDOM.dataset.editPasswordLink ?? null\r\n }\r\n const component = createApp(StafetProfileForm, props).use(Store)\r\n component.mount(StafetProfileFormDOM)\r\n })\r\n }\r\n}\r\n","import {createApp} from 'vue'\r\nimport StafetRoundCounter from './StafetRoundCounter'\r\n\r\nconst el = '.kb-component--stafet-round-counter'\r\n\r\nexport default function(Store){\r\n const DOM = document.querySelectorAll(el)\r\n if(DOM.length){\r\n DOM.forEach((StafetRoundCounterDOM)=>{\r\n\r\n const rute = StafetRoundCounterDOM.dataset.data\r\n ? JSON.parse(StafetRoundCounterDOM.dataset.data)\r\n : null\r\n \r\n const maxRegistrationCount = StafetRoundCounterDOM.dataset.maxRegistrationCount\r\n\r\n const component = createApp(StafetRoundCounter, {rute, maxRegistrationCount}).use(Store)\r\n component.mount(StafetRoundCounterDOM)\r\n })\r\n }\r\n}","import {createApp} from 'vue'\r\nimport StafetRoundCounterAccordion from './StafetRoundCounterAccordion'\r\n\r\nconst el = '.kb-component--stafet-round-counter-accordion'\r\n\r\nexport default function(Store){\r\n const DOM = document.querySelectorAll(el)\r\n if(DOM.length){\r\n DOM.forEach((StafetRoundCounterAccordionDOM)=>{\r\n\r\n const participantData = StafetRoundCounterAccordionDOM.dataset.data\r\n ? JSON.parse(StafetRoundCounterAccordionDOM.dataset.data)\r\n : null\r\n \r\n const maxRegistrationCount = StafetRoundCounterAccordionDOM.dataset.maxRegistrationCount\r\n\r\n const component = createApp(StafetRoundCounterAccordion, {participantData, maxRegistrationCount}).use(Store)\r\n component.mount(StafetRoundCounterAccordionDOM)\r\n })\r\n }\r\n}","import { createApp } from 'vue'\r\nimport SuccessPage from './SuccessPage'\r\n\r\nconst el = '.kb-component--success-page'\r\n\r\nexport default function (Store) {\r\n const DOM = document.querySelectorAll(el)\r\n if (DOM.length) {\r\n DOM.forEach((SuccessPageDOM) => {\r\n const component = createApp(SuccessPage).use(Store)\r\n component.mount(SuccessPageDOM)\r\n })\r\n }\r\n}\r\n","import { createApp } from 'vue'\r\nimport SupportSelector from './SupportSelector'\r\n\r\nconst el = '.kb-component--support-selector'\r\n\r\nexport default function (Store) {\r\n const DOM = document.querySelectorAll(el)\r\n if (DOM.length) {\r\n DOM.forEach((SupportSelectorDOM) => {\r\n const props = {\r\n stafetId: SupportSelectorDOM.dataset.stafetId,\r\n labels: SupportSelectorDOM.dataset.labels\r\n ? JSON.parse(SupportSelectorDOM.dataset.labels)\r\n : {}\r\n }\r\n const component = createApp(SupportSelector, props).use(Store)\r\n component.mount(SupportSelectorDOM)\r\n })\r\n }\r\n}\r\n","import { createApp } from 'vue'\r\nimport TeamList from './TeamList'\r\n\r\nconst el = '.kb-component--team-list'\r\n\r\nexport default function (Store) {\r\n const DOM = document.querySelectorAll(el)\r\n if (DOM.length) {\r\n DOM.forEach((TeamListDOM) => {\r\n const props = {\r\n source: TeamListDOM.dataset.source,\r\n stafetId: TeamListDOM.dataset.stafetId,\r\n take: TeamListDOM.dataset.take\r\n ? parseInt(TeamListDOM.dataset.take)\r\n : 18,\r\n guid: TeamListDOM.dataset.guid,\r\n filterShown: TeamListDOM.dataset.filterShown\r\n ? TeamListDOM.dataset.filterShown === 'true'\r\n : true\r\n }\r\n const component = createApp(TeamList, props).use(Store)\r\n component.mount(TeamListDOM)\r\n })\r\n }\r\n}\r\n","import { createApp } from 'vue'\r\nimport TeamListCard from './TeamListCard'\r\n\r\nconst el = '.kb-component--team-list-card'\r\n\r\nexport default function (Store) {\r\n const DOM = document.querySelectorAll(el)\r\n if (DOM.length) {\r\n DOM.forEach((TeamListCardDOM) => {\r\n const props = {\r\n captains: TeamListCardDOM.dataset.captains\r\n ? JSON.parse(TeamListCardDOM.dataset.captains)\r\n : [],\r\n imageUrl: TeamListCardDOM.dataset.imageUrl,\r\n imageAlt: TeamListCardDOM.dataset.imageAlt,\r\n url: TeamListCardDOM.dataset.url,\r\n name: TeamListCardDOM.dataset.name,\r\n membersCount: TeamListCardDOM.dataset.membersCount,\r\n donationGoals: TeamListCardDOM.dataset.donationGoals,\r\n donationTotal: TeamListCardDOM.dataset.donationTotal\r\n }\r\n const component = createApp(TeamListCard, props).use(Store)\r\n component.mount(TeamListCardDOM)\r\n })\r\n }\r\n}\r\n","import {createApp} from 'vue'\r\nimport options from './TextEditor.options'\r\n\r\nconst el = '.kb-component--text-editor'\r\n\r\nexport default function(Store){\r\n const DOM = document.querySelectorAll(el)\r\n if(DOM.length){\r\n DOM.forEach((TextEditorDOM)=>{\r\n const props = {\r\n initContent: TextEditorDOM.dataset.content\r\n }\r\n const template = TextEditorDOM.outerHTML\r\n options.template = template\r\n const component = createApp(options, props).use(Store)\r\n component.mount(TextEditorDOM)\r\n })\r\n }\r\n}\r\n\r\n","import {createApp} from 'vue'\r\nimport ThemeCard from './ThemeCard'\r\n\r\nconst el = '.kb-component--theme-card'\r\n\r\nexport default function(Store){\r\n const DOM = document.querySelectorAll(el)\r\n if(DOM.length){\r\n DOM.forEach((ThemeCardDOM)=>{\r\n const props = {\r\n content: ThemeCardDOM.dataset.content ? JSON.parse(ThemeCardDOM.dataset.content) : {}\r\n }\r\n const component = createApp(ThemeCard, props).use(Store)\r\n component.mount(ThemeCardDOM)\r\n })\r\n }\r\n}","import store from 'store'\r\n\r\nconst el = '[data-content=TilmeldHoldKvittering]'\r\n\r\nexport default function(Store) {\r\n const DOM = document.querySelectorAll(el)\r\n if (DOM.length) {\r\n DOM.forEach((TilmeldHoldKvitteringDOM) => {\r\n const loginUrl = TilmeldHoldKvitteringDOM.dataset.loginurl\r\n const createProfileUrl = TilmeldHoldKvitteringDOM.dataset.createprofileurl\r\n const hasProfile = TilmeldHoldKvitteringDOM.dataset.hasprofile === \"True\"\r\n store.commit('main/set_page_overlay_content_data', { loginUrl, createProfileUrl, hasProfile })\r\n })\r\n }\r\n}","import {createApp} from 'vue'\r\nimport TilmeldProfilKvittering from './TilmeldProfilKvittering'\r\n\r\nconst el = '.kb-component--tilmeld-profil-kvittering'\r\n\r\nexport default function(Store){\r\n const DOM = document.querySelectorAll(el)\r\n if(DOM.length){\r\n DOM.forEach((TilmeldProfilKvitteringDOM)=>{\r\n const component = createApp(TilmeldProfilKvittering).use(Store)\r\n component.mount(TilmeldProfilKvitteringDOM)\r\n })\r\n }\r\n}","import {createApp} from 'vue'\r\nimport UploadNewFileOverlay from './UploadNewFileOverlay'\r\n\r\nconst el = '.kb-component--upload-new-file-overlay'\r\n\r\nexport default function(Store){\r\n const DOM = document.querySelectorAll(el)\r\n if(DOM.length){\r\n DOM.forEach((UploadNewFileOverlayDOM)=>{\r\n const component = createApp(UploadNewFileOverlay).use(Store)\r\n component.mount(UploadNewFileOverlayDOM)\r\n })\r\n }\r\n}","import {createApp} from 'vue'\r\nimport UserPostsList from './UserPostsList'\r\n\r\nconst el = '.kb-component--user-posts-list'\r\n\r\nexport default function(Store) {\r\n const DOM = document.querySelectorAll(el)\r\n if( DOM.length) {\r\n DOM.forEach((UserPostsListDOM) => {\r\n const exturnalData = UserPostsListDOM.dataset.exturnal ? JSON.parse(UserPostsListDOM.dataset.exturnal) : null\r\n const props = {\r\n guid: UserPostsListDOM.dataset.guid,\r\n groupId: UserPostsListDOM.dataset.groupId,\r\n skip: parseInt(UserPostsListDOM.dataset.skip) ?? 0,\r\n take: parseInt(UserPostsListDOM.dataset.take) ?? 10,\r\n userData: exturnalData?.userData ?? null,\r\n type: UserPostsListDOM.dataset.type?? null,\r\n }\r\n const component = createApp(UserPostsList, props).use(Store)\r\n component.mount(UserPostsListDOM)\r\n })\r\n }\r\n}","import { createApp } from 'vue'\r\nimport WebshopPaymentSelector from './WebshopPaymentSelector'\r\n\r\nconst el = '.kb-component--webshop-payment-selector'\r\n\r\nexport default function (Store) {\r\n const DOM = document.querySelectorAll(el)\r\n if (DOM.length) {\r\n DOM.forEach((WebshopPaymentSelectorDOM) => {\r\n const component = createApp(WebshopPaymentSelector).use(Store)\r\n component.mount(WebshopPaymentSelectorDOM)\r\n })\r\n }\r\n}\r\n"],"names":["DOM","document","querySelector","isMobile","Math","min","window","screen","width","height","navigator","userAgent","indexOf","retracted","console","log","documentElement","scrollTop","addEventListener","classList","contains","remove","add","querySelectorAll","forEach","uploadField","ariaLive","e","selectedFile","target","files","fileName","name","fileSize","size","toFixed","fileNameAndSize","concat","textContent","fileRemoveBtn","length","removeBtn","createElement","innerText","createRemoveBtn","appendChild","value","createEventListnerForRemoveBtn","___CSS_LOADER_URL_IMPORT_0___","URL","___CSS_LOADER_EXPORT___","___CSS_LOADER_URL_REPLACEMENT_0___","push","module","id","exports","cssWithMappingToString","list","toString","this","map","item","content","needLayer","join","i","modules","media","dedupe","supports","layer","undefined","alreadyImportedModules","k","_k","url","options","String","__esModule","default","test","slice","hash","needQuotes","replace","cssMapping","btoa","base64","unescape","encodeURIComponent","JSON","stringify","data","sourceMapping","_typeof","Symbol","iterator","obj","constructor","prototype","classCallCheck","instance","Constructor","TypeError","createClass","defineProperties","props","descriptor","enumerable","configurable","writable","Object","defineProperty","key","protoProps","staticProps","_extends","assign","arguments","source","hasOwnProperty","call","DOMIterator","ctx","iframes","exclude","iframesTimeout","filteredCtx","NodeList","isPrototypeOf","Array","isArray","isDescendant","filter","contexts","ifr","successFn","errorFn","doc","ifrWin","contentWindow","Error","bl","src","getAttribute","trim","location","href","_this","called","tout","listener","clearTimeout","isIframeBlank","removeEventListener","getIframeContents","setTimeout","readyState","observeIframeLoad","done","_this2","eachCalled","forEachIframe","waitForIframes","handled","each","_this3","end","open","checkEnd","matches","onIframeReady","con","whatToShow","createNodeIterator","contents","node","prevNode","compareDocumentPosition","Node","DOCUMENT_POSITION_PRECEDING","DOCUMENT_POSITION_FOLLOWING","itr","previousNode","nextNode","currIfr","ifrDict","val","compareNodeIframe","eCb","fCb","_this4","createInstanceOnIframe","forEachNode","eachCb","filterCb","doneCb","_this5","createIterator","elements","_getIteratorNode","getIteratorNode","checkIframeFilter","ifrNode","handleOpenIframes","_this6","getContexts","ready","iterateThroughNodes","element","selector","selectors","fn","matchesSelector","msMatchesSelector","mozMatchesSelector","oMatchesSelector","webkitMatchesSelector","match","every","sel","Mark$1","Mark","ie","ua","msg","level","opt","debug","str","wildcards","setupWildcardsRegExp","escapeStr","keys","synonyms","createSynonymsRegExp","ignoreJoiners","ignorePunctuation","setupIgnoreJoinersRegExp","diacritics","createDiacriticsRegExp","createMergedBlanksRegExp","createJoinersRegExp","createWildcardsRegExp","createAccuracyRegExp","syn","sens","caseSensitive","joinerPlaceholder","index","k1","k2","RegExp","processSynomyms","charAt","spaces","indx","original","nextChar","joiner","split","dct","ch","acc","accuracy","ls","limiters","lsJoin","limiter","sv","stack","kw","separateWordSearch","kwSplitted","sort","a","b","Number","parseFloat","array","noMatch","last","start","_callNoMatchOnInvalid","callNoMatchOnInvalidRanges","valid","range","parseInt","isNumeric","originalLength","string","max","offset","substring","cb","nodes","NodeFilter","SHOW_TEXT","matchesExclude","parentNode","FILTER_REJECT","FILTER_ACCEPT","el","hEl","startNode","splitText","ret","repl","setAttribute","className","replaceChild","dict","n","sibl","s","startStr","substr","endStr","wrapRangeInTextNode","j","previousSibling","regex","ignoreGroups","endCb","matchIdx","getTextNodes","exec","pos","lastIndex","_this7","wrapRangeInMappedTextNode","ranges","_this8","counter","_checkWhitespaceRange","checkWhitespaceRanges","parent","docFrag","createDocumentFragment","firstChild","removeChild","normalizeTextNode","normalize","nodeType","nextSibling","nodeValue","regexp","_this9","totalMatches","acrossElements","_this10","_getSeparatedKeywords","getSeparatedKeywords","kwArr","keywords","kwArrLen","handler","createRegExp","term","rawRanges","_this11","checkRanges","wrapRangeFromIndex","_this12","SHOW_ELEMENT","unwrapMatches","matchesSel","set","_opt","get","mark","markRegExp","markRanges","unmark","factory","tinymce","IconManager","icons","global$1","util","Tools","resolve","isType$1","type","x","t","o","v","_a","typeOf","isSimpleType","eq$2","isString","isObject","isNull","isBoolean","isUndefined","isNonNullable","isNullable","isFunction","isNumber","noop","constant","identity","tripleEquals","curry","initialArgs","restArgs","all","apply","not","f","never","always","Optional","tag","some","none","singletonNone","fold","onNone","onSome","isSome","isNone","mapper","bind","binder","exists","predicate","forall","getOr","replacement","or","getOrThunk","thunk","orThunk","getOrDie","message","from","getOrNull","getOrUndefined","worker","toArray","nativeSlice","nativeIndexOf","nativePush","contains$2","xs","rawIndexOf","ts","pred","len","range$1","num","r","map$1","each$2","partition","pass","fail","filter$2","foldr","eachr","foldl","find$1","until","findUntil","findIndex","flatten","bind$2","mapToObject","get$d","head","last$2","findMap","arr","each$1","tupleMap","tuple","mapToArray","values","has$1","Global","Function","resolve$2","p","scope","parts","path","getPrototypeOf","actual","unsafe","sandHTMLElement","dom","nodeName","toLowerCase","isType","isComment","isHTMLElement","isElement","isText","isDocument","isDocumentFragment","isTag","rawSet","error","set$2","setAll$1","attrs","get$b","getOpt","remove$7","removeAttribute","clone$2","attributes","attr","fromDom$1","SugarElement","fromHtml","html","div","innerHTML","hasChildNodes","childNodes","fromTag","fromText","text","createTextNode","fromDom","fromPoint","docElm","y","elementFromPoint","is$2","elem","bypassSelector","childElementCount","one","base","eq$1","e1","e2","contains$1","d1","d2","is$1","owner","ownerDocument","documentOrOwner","dos","parentElement","parents","isRoot","stop","rawParent","prevSibling","children$2","child$2","cs","before$3","marker","insertBefore","after$5","append$1","prepend","firstChild$1","wrap","wrapper","after$4","append","empty","rogue","remove$6","unwrap","children","clone$1","isDeep","cloneNode","shallow","deep","shallowAs","nu","validSectionList","detail","rowspan","colspan","rowdetail","cells","section","elementnew","isNew","isLocked","rowcells","isShadowRoot","host","getRootNode","getShadowHost","inBody","getShadowRoot","body","fbc","fab","getBody$1","descendants$1","result","ancestors$3","ancestors$4","children$1","descendants","all$1","ClosestOrAncestor","is","ancestor","ancestor$2","closest$2","ancestor$1","child","child$1","descendant","closest$1","lhs","rhs","comparator","left","cat","someIf","checkRange","idx","startsWith","prefix","endsWith","suffix","blank","isNotEmpty","isSupported","style","getPropertyValue","internalSet","property","setProperty","set$1","setAll","css","get$a","getComputedStyle","getUnsafeProperty","getRaw$2","raw","remove$5","removeProperty","internalRemove","getAttrValue","cell","fallback","getSpan","hasColspan","cellOrCol","getCssValue","minWidth","minHeight","firstLayer","filterFirstLayer","tags","elm","lookup","cells$1","columns$1","columnGroups","columnGroup","table","rows$1","fromRowsOrColGroups","elems","getSection","row","column","getParentSection","group","parentName","isValidSection","fromTable$1","rows","cached","args","unknown$2","nu$2","major","minor","Version","detect","versionRegexes","agent","cleanedAgent","regexes","firstMatch","find","unknown","detect$4","candidates","candidate","search","normalVersionRegex","checkContains","uastring","browsers","brand","oses","PlatformInfo","edge","chromium","opera","firefox","safari","nu$1","info","current","version","isBrowser","isEdge","isChromium","isIE","isOpera","isFirefox","isSafari","Browser","windows","android","linux","macos","solaris","freebsd","chromeos","isOS","isWindows","isiOS","isAndroid","isMacOS","isLinux","isSolaris","isFreeBSD","isChromeOS","OperatingSystem","mediaMatch","query","matchMedia","platform","userAgentDataOpt","browser","userAgentData","brands","uaBrand","lcBrand","detectBrowser$1","detectBrowser","os","detectOs","deviceType","isiPad","isiPhone","isTouch","isTablet","isPhone","iOSwebview","isDesktop","isWebView","DeviceType","PlatformDetection","detect$2","Dimension","getOffset","aggregate","properties","isNaN","h","getOuter","cumulativeInclusions","getProp","px","toFloat","toNumber","api$2","offsetWidth","get$9","getOuter$2","getInner","boxSizing","getBoundingClientRect","upper","lower","calcContentBoxSize","getCalculatedWidth","addCells","gridRow","existingCells","before","after","newCells","setCells","addCell","mutateCell","getCell","getCellElement","cellLength","extractGridDetails","grid","cols","clone","cloneRow","cloneCell","LOCKED_COL_ATTR","getLockedColumnsFromTable","lockedColStr","lockedCols","getLockedColumnsFromGrid","locked","lockedArr","_val","copy","sort$1","filterItems","warehouse","generate$1","access","lockedColumns","rowData","maxRows","maxColumns","rowCount","colgroupRows","currentRow","rowCell","hasNonNullableKey","extended","occupiedColumnPosition","occupiedRowPosition","columnPosition","newpos","columns","colgroups","columnsGroup","columnIndex","colIndex","columnext","generateColumns","colgroup$1","colgroup","grid$1","Warehouse","filtered","w","isValidCell","rowsArr","col","decide","getBlock","isValid","getFallback","inBlock","c","onDirection","isLtr","isRtl","getDirection","api$1","offsetHeight","get$8","getOuter$1","top","translate","SugarPosition","firstDefinedOrZero","absolute","win","defaultView","offsetLeft","offsetTop","pageYOffset","scrollLeft","pageXOffset","clientTop","clientLeft","viewport","box","boxPosition","rowInfo","colInfo","rtlEdge","ltrEdge","getLeftEdge","getRightEdge","getTop$1","getTopEdge","getBottomEdge","findPositions","getInnerEdge","getOuterEdge","lines","cellOption","lastLine","delta","positions","optElements","detect$1","step","amount","units","unsupportedLength","fixed","relative","pattern","decimalDigits","exponentPart","input","unsignedDecimalLiteral","rPercentageBasedSizeRegex","rPixelBasedSizeRegex","isCol$2","isRow$2","getPercentSize","outerGetter","innerGetter","relativeParent","setPixelWidth","setPercentageWidth","setHeight","getTotalHeight","getRuntime","getHeightValue","getter","setter","number","newSize","total","floor","convert","normalizePixelSize","getRaw$1","prop","getRawWidth$1","getPercentageWidth","getPixelWidth$1","getHeight","get$7","setGenericWidth","unit","getPercentTableWidth","percentageBasedSizeRegex","isCol$1","getRawW","getRawH","getDimension","cellOpt","backups","rest","reverse","aa","next","extras","abs","deduce","getWidthFrom","getWidth","columnCells","justCols","colFilter","supportsColWidths","isValidColumn","getDeduced","deduced","d","getPixelWidths","tableSize","minCellWidth","getHeightFrom","rowCells","widthLookup","percentageSize","getFloatWidth","pixelWidth","getWidths","cellWidth","getPercentageWidths","getCellDelta","singleColumnWidth","_delta","setElementWidth","adjustTableWidth","currentWidth","isRelative","label","pixelSize","newWidth","TableSize","zero","noneSize","chooseSize","makeCell","seenSelected","rowIndex","td","api","getOption","NodeValue","get$6","getEnd","elementsWithCursorPosition","isCursorPosition","isContentEditableFalse","first","descend","res","descendant$1","last$1","descendantRtl","transferableAttributes","createCell","createCol","createColgroup","createRow$1","replace$1","replica","cloneChildren","copy$2","pasteReplace","cellOperations","mutate","formatsToClone","cloneCss","prev","sourceDom","targetDom","cssText","copy$1","formats","lastNode","oldCell","newCell","firstText","formatSelector","clonedFormat","cloneFormats","validAttributes","attributeName","attribute","cloneAppropriateAttributes","colGap","gap","paste$1","option","editor","defaultWidth","getPixelForcedWidth","parentBlock","getParent","selection","getStart","isBlock","getBody","getTableCloneElements","getTableHeaderType","getTableColumnResizingBehaviour","isPreserveTableColumnResizing","isResizeTableColumnResizing","getTableSizingMode","isTablePercentagesForced","isTablePixelsForced","isTableResponsiveForced","hasTableResizeBars","shouldStyleWithCss","shouldMergeContentOnPaste","getTableDefaultAttributes","defaultAttributes","isSet","determineDefaultTableAttributes","tableUseColumnGroup","closest","isEditable$1","assumeEditable","isContentEditable","editable","getRaw","contentEditable","getIsRoot","removeDataStyle","removeStyleAttribute","getSelectionStart","getPixelWidth","getPixelHeight","getRawValue","getStyle","getAttrib","getRawWidth","getRawHeight","isInEditableContext$1","inSelection","bounds","leftEdge","rightEdge","topEdge","bottomEdge","finishCol","startCol","finishRow","startRow","isWithin","getAnyBox","startCell","finishCell","startCoords","finishCoords","sc","fc","detailA","detailB","intercepts$1","finish","inside","parentCell","innerCell","c1","c2","intercepts","getWarehouse","nestedIntercepts","firstTable","lastTable","optStartCell","optLastCell","lastCell","TagBoundaries","DomUniverse","up","down","styles","copyTo","destination","as","insert","afterAll","appendAll","create","comparePosition","other","isSpecial","getLanguage","getText","setText","isBoundary","isEmptyTag","isNonEditable","eq","unsafeOne","universe","look","tail","commonElement","universe$3","sharedOne","sharedOne$1","_universe","lookupTable","container","identify","rootTable","boxes","startTable","finishTable","ancestorCells","ps1","ps2","prune","ind","pruned1","pruned2","shared","firstpath","secondpath","ancestors$1","ancestors","lca","lcaTable","finishAncestorCells","startAncestorCells","retrieve$1","sels","getEdges","firstSelectedSelector","lastSelectedSelector","shiftSelection","deltaRow","deltaColumn","getLast","moveBy$1","moveBy","identified","expandTo","retrieve","retrieveBox","edges","sectionSelector","firstAncestor","lastAncestor","fA","lA","isRect","detailIsWithin","isRectangular","getBox$1","getBox","unmergable","selectedCells","hasSpan","span","mergable","ephemera","strSelected","strFirstSelected","strLastSelected","attributeSelector","selected","selectedSelector","firstSelected","lastSelected","forMenu","getSelectionFromSelector","initCell","cellName","getSelectionCellOrCaption","getSelectionCell","getCellsFromSelection","model","getSelectedCells","registerEvents","actions","on","multiCellContext","preventDefault","isSelected","replicaHouse","replicaStats","house","totalColumns","minRow","minCol","maxRow","maxCol","allCells","endRow","endCol","statsStruct","findSelectedStats","unselectedCells","stats","totalRows","fillInGaps","widthDelta","colWidths","allColsWidth","selectedColsWidth","getTableWidthDelta","emptyRows","clean","extract$1","extractSelected","replicaElements","format","getDoc","offscreenDiv","position","overflow","opacity","root","getContentContainer","getTextContent","serializer","serialize","serializeElements","getCellsFromFakeSelection","paste","isTable","generators","targets","clipboard","pasteCells","focus","point","scan$1","direction","toEnd","freefallRtl$2","freefallRtl$1","universe$2","halve","main","parse","accepted","unitRaw","check","isUnit","getGenericWidth","surround","sizes","startIndex","endIndex","results","clampDeltaHelper","minCellSize","diff","clampNegativeDelta","clampDelta","resizeTable","calcRelativeDeltas","ratio","newThis","calcLeftEdgeDeltas","clampedDelta","calcFixedDeltas","resizer","clampTableDelta","calcMiddleDeltas","_prev","calcRightEdgeDeltas","calcRedestributedWidths","totalWidth","pixelDelta","newSizes","preserveTable","isLastColumn","maxDelta","_index","_minCellSize","_totalWidth","_pixelDelta","_isRelative","getGridSize","isHeaderCell","isHeaderCells","getRowHeaderType","isHeaderRow","getRowType","findCommonCellType","subType","headerCells","transformCell","substitution","transformRow","fixedCell","mutate$1","sectionCells","TableSection","setIfNot","ignore","insert$1","render$1","newRows","syncRows","gridSection","tr","syncColGroup","colGroup","renderSection","sectionName","newSection","generateSection","sectionElems","renderOrRemoveSection","removeSection","headSection","bodySection","footSection","columnGroupsSection","findDiff","comp","toDetails","seen","details","getRow","isColRow","getColumn","subgrid","updateSeen","rowdetailnew","toGrid","colgroupCols","rowDetail","toDetailList","findInWarehouse","extractCells","cell$1","lc","run","operation","extract","adjustment","postAction","genWrappers","behaviours","tableSection","fromWarehouse","cursor","out","newElements","tableSizing","sizing","resizing","resize","onPasteByEditor","onCells","onUnlockedCells","allUnlocked","isUnlockedTableCell","unmerge","currentCell","isToReplace","value$1","applyHelper","constHelper","outputHelper","output","inner","_onError","onValue","isValue","isError","Result","mapError","toOptional","onError","_onValue","fromOption","optional","err","measureWidth","gridA","gridB","rowDelta","colDelta","measureHeight","generateElements","generator","rowFill","exampleRow","colFill","newChildren","tailor","fillCols","fillRows","gridWidth","isLastColLocked","modifiedCols","newLockedColumns","isSpanning","matching","getLockedColumnsWithinBounds","startAddress","colNum","insertCols","prevCell","substitute","splitCols","fittedNewGrid","secondDelta","fittedOldGrid","insertRows","uniqueCells","sub","splitRows","oldCols","oldRows","newLocked","secondDiff","fittedGridB","newChild","insertRowAt","example","ex","insertColumnAt","withinSpan","getElementFor","isDuplicatedCell","notInStartRow","notInStartColumn","determineScope","applyScope","newScope","isInHeader","getScope","hasRowspan","replaceIn","replacer","genScope","shouldReplace","isTarget","mapCells","getColumnCells","replaceColumns","indexes","rowHeaders","shouldReplaceCell","targetColumn","_colIndex","columnReplacePredicate","scopeGenerator","columnScopeGenerator","replaceCells","targetCells","Adt","cases","constructors","adt","acase","count","keys$1","argLength","foldArgs","branches","branchKeys","reqKey","params","ColumnContext","only","middle","right","recalculateAndApply","widths","groups","recalculateWidthForColumns","measures","recalculateWidthForCells","recalculate","adjustWidth","clampedStep","deltas","context","neighbours","determine","newWidths","dx","adjustHeight","heights","getPixelHeights","newHeights","dy","newRowSizes","matchRowHeight","removeHeight","uniqueColumns","currentDetail","isCol","isColgroup","isRow$1","elementToData","getScopeAttribute","Generators","toData","nuCell","recent","getOrInit","makeNew","replaceOrInit","merge","stringAttributes","baseScope","scopes","getScopeProperty","blockList","universe$1","tagName","isBlock$1","isList","isList$1","isBr","markCell","rightSiblingIsBlock","rightSibling","isEmptyTag$1","advancedBr","markContent","isEditable","outcome","bundle","cursorElement","_b","findEditableCursorPosition","elementFromGrid","uniqueRows","makeRowsSection","initialGrid","rowIndexes","newGrid","targetRow","getRowCells","columnHeaders","_cell","_rowIndex","rowReplacerPredicate","rowScopeGenerator","replaceRows","opMakeRowsHeader","opMakeRowsBody","opMakeRowsFooter","gridifyRows","pasteDetails","fromPastedRows","wh","_table","_info","adjustWidthTo","adjustAndRedistributeWidths","resizeBehaviour","tablePixelWidth","adjustAndRedistributeWidths$1","firstColumnIsLocked","_warehouse","lastColumnIsLocked","getColumnsWidth","uniqueCols","insertColumnsExtractor","pasteColumnsExtractor","headerCellGenerator","bodyCellGenerator","insertRowsBefore","targetIndex","insertRowsAfter","newG","insertColumnsBefore","extractDetail","insertColumnsAfter","eraseColumns","_comparator","_genWrappers","deleteColumnsAt","maxColIndex","eraseRows","deleteRowsAt","maxRowIndex","makeColumnsHeader","columnIndexes","unmakeColumnsHeader","makeRowsHeader","makeRowsBody","makeRowsFooter","makeCellsHeader","unmakeCellsHeader","mergeCells","merge$2","onMergable","mergeable","unmergeCells","onUnmergable","gridify","validStartAddress","currentStartAddress","gridColLength","adjustedRowAddress","possibleColAddresses","getValidStartAddress","gridBRows","lockedColumnsWithinBounds","rowRemainder","colRemainder","colRequired","rowRequired","measure","fittedGrid","newLockedColumnsWithinBounds","lockedColumnObj","skippedCol","gridBColIndex","newCellElm","mergeTables","merge$1","pasteColsBefore","mergedGrid","pasteColsAfter","pasteRowsBefore","pasteRowsAfter","getColumnsType","lastSelectedCell","minColRange","maxColRange","selectedColumnCells","getCellsType","getRowsType","minRowRange","maxRowRange","rowTypes","hasHeader","hasFooter","hasBody","findCommonRowType","fireNewRow","dispatch","fireNewCell","fireTableModified","styleModified","structure","structureModified","styleAndStructureModified","get$5","TableActions","resizeHandler","cellSelectionHandler","isTableBody","colMutationOp","getTableSectionType","rowType","execute","guard","effect","noEvents","refresh","firstCell","clearSelectedCells","rng","createRng","selectNode","setRng","des","setStart","setEnd","setSelectionFromAction","deleteRow","deleteColumn","getTableRowType","getTableCellType","getTableColType","constrainSpan","currentColspan","isColInRange","adt$5","invalid","pixels","percent","validateFor","rawAmount","Size","redistribute$1","newType","floats","newWidthType","redistributeEmpty","newTotalWidth","scale","pc","redistributeToPx","_pc","redistributeToPercent","redistributeValues","sum","add$3","scan","remainder","floored","roundDown","round","validate","redistribute","optWidth","optHeight","widthUnit","oldWidths","getRawWidths","nuWidths","redistributeToColumns","redistributeToW","newHeight","totalHeight","oldHeights","getRawHeights","redistributeToH","isPercentSizing","isPixelSizing","isNoneSizing","cleanupLegacyAttributes","convertToPercentSizeWidth","convertToPixelSizeWidth","getPixelTableWidth","convertToNoneSizeWidth","rowElements","DefaultRenderOptions","border","colGroups","createRows","createRow","placeCaretInCell","select","collapse","colHeaders","defaultStyles","determineDefaultTableStyles","getTableDefaultStyles","undoManager","headerType","renderOpts","rowHeadersGoInThead","createGroupRow","actualRowHeaders","thead","theadRows","tbody","tbodyRows","render","get$4","insertContent","addVisual","isPercentage","fireEvents","tableElm","selectFirstCellInTable","global","tableTypeBase","tableTypeRow","tableTypeColumn","setData","items","fakeClipboardItem","FakeClipboardItem","write","getData","read","getType","clearData","clear","setRows","rowsOpt","clearRows","getRows","setColumns","columnsOpt","clearColumns","getColumns","getSelectionStartCellOrCaption","registerCommands","getTableFromCell","performActionOnSelection","action","getSelectionStartCell","postExecute","_data","actOnSelection","copyRowSelection","slicedGrid","filteredGrid","slicedDetails","clonedCell","copyRows","copyColSelection","fakeColGroups","colsToCopy","copiedCols","clonedCol","fakeColgroup","generateColGroup","fakeRows","cellsToCopy","copiedCells","fakeTR","generateRows","copyCols","pasteOnSelection","clonedRows","pasteRows","actOnType","getAction","_ui","get$c","no_events","mceTableSplitCells","mceTableMergeCells","mceTableInsertRowBefore","mceTableInsertRowAfter","mceTableInsertColBefore","mceTableInsertColAfter","mceTableDeleteCol","mceTableDeleteRow","mceTableCutCol","mceTableCutRow","mceTableCopyCol","mceTableCopyRow","mceTablePasteColBefore","mceTablePasteColAfter","mceTablePasteRowBefore","mceTablePasteRowAfter","mceTableDelete","cellOrCaption","isEmpty","setContent","setCursorLocation","nodeChanged","mceTableCellToggleClass","clazz","allHaveClass","formatter","formatterAction","mceTableToggleClass","toggle","mceTableToggleCaption","caption","appendAt","mceTableSizingMode","setSizingMode","mceTableCellType","mceTableColType","mceTableRowType","func","addCommand","checkInput","headerRows","headerColumns","insertTable","getFormatName","validArgs","onTrue","onFalse","internalFilter","objAcc","filter$1","has","formatName","adt$4","Situ","cata","subject","onBefore","onOn","onAfter","situ","Response","kill","createRange","selectNodeContents","selectNodeContentsUsing","relativeToNative","startSitu","finishSitu","setStartBefore","setStartAfter","setEndBefore","setEndAfter","setFinish","exactToNative","soffset","foffset","toRect","rect","bottom","adt$3","ltr","rtl","fromRange","startContainer","startOffset","endContainer","endOffset","diagnose","domRange","exact","getRanges","collapsed","rev","doDiagnose","asLtrRange","SimRange","Situs","convertToRange","makeSitus","selectRange","cellSel","traverse","mode","backtrack","_direction","transition","sidestep","advance","sibling","successors","go","rules","succ","rule","fb","hone","isLeaf","seekLeft$1","seekRight$1","before$1","after$1","after$2","adt$2","success","failedUp","failedDown","isRow","BeforeAfter","verify","bridge","beforeOffset","afterOffset","failure","afterCell","beforeCell","beforeBounds","getRect","afterBounds","isOverlapping","_sharedRow","onSuccess","onFailedUp","onFailedDown","gatherer","cand","gather","handleParent","findBr","br","adjacent","inParent","indexInParent","moveDown","caret","moveUp","xDelta","yDelta","toCaret","getElemBox","getBoxAt","getRangedRect","getPartialBox","getEntireBox","adt$1","retry","inOutsideBlock","isOutside","downMovement","adjuster","guessBox","lowerCaret","move","adjustTil","movement","numRetries","isAtTable","adjustForTable","situsFromPoint","guess","newCaret","moved","adjusted","getInnerHeight","checkScroll","scrollBy","Retries","tryUp","higherCaret","tryDown","getJumpSize","findSpot","getSelection","handleBr","tgt","tryBr","brNeighbour","fromSitus","analysis","_message","tryCursor","situs","tryAgain","tryAt","simulate","initial","anchor","inSameTable","spot","handle$1","navigate","precheck","firstUpCheck","seekLeft","lastOffset","lastDownCheck","seekRight","Cell","doRevoke","revoke","singleton","findCell","isInEditableContext","isKey","keycode","isUp","isDown","isNavigation","isBackward","isForward","SimSelection","exactFromRange","simRange","getWin","_finishSitu","_soffset","_finish","_foffset","beforeSpecial","name$1","getNativeSelection","doSetNativeRange","removeAllRanges","addRange","doSetRange","setRangeFromRelative","setBaseAndExtent","extend","setLegacyRtlRange","setExact","preprocessExact","setRelative","preprocessRelative","readRange","rangeCount","firstRng","getRangeAt","lastRng","doGetExact","anchorNode","focusNode","makeRange","same","anchorOffset","focusOffset","setToElement","selectNodeContents$1","get$2","getExact","getAtPoint","caretPositionFromPoint","offsetNode","caretRangeFromPoint","availableSearch","WindowBridge","rects","getClientRects","getFirstRect$1","getFirstRect","exactAdt","clearSelection","collapseSelection","toStart","setSelection","setRelativeSelection","selectContents","innerHeight","getScrollY","_DOC","get$3","by","rc","isEditableNode","isEditableSelection","add$1","add$2","multiple","single","fromRawEvent$1","rawEvent","event","shadowRoot","composed","composedPath","getOriginalEventTarget","stopPropagation","prevent","fa","mkEvent","clientX","clientY","unbind","useCapture","wrapped","handle","bind$1","fromRawEvent","hasInternalTarget","TableCellSelectionHandler","cellSelection","annotations","onSelection","onClear","removeSelectionAttributes","addSelectionAttribute","clearBeforeUpdate","SelectionAnnotation","cellsDom","otherCellsDom","upOrLeftCells","upGrid","upDetails","slicedCells","getUpOrLeftCells","downOrRightCells","downGrid","downDetails","getDownOrRightCells","getOtherCells","otherCells","cellArr","fireTableSelectionChange","fireTableSelectionClear","_e","mouseHandlers","handlers","clearstate","applySelection","singleCell","isNonEditableCell","isCellClosestContentEditable","mousedown","mouseover","mouseup","MouseSelection","mouse","keyHandlers","clearToNavigate","keydown","realEvent","which","shiftKey","update$1","attempts","navigation","newSels","update","_","keyup","sync","keyboard","external$1","external","handleResponse","response","hasShiftKey","ns","isLeftMouse","button","doubleTap","lastTarget","lastTimeStamp","touchEnd","lT","lTS","timeStamp","getDoubleTap","buttons","wrappedEvent","getRng","hide","show","addTempAttr","onSingle","onMultiple","Event","fields","trigger","create$1","typeDefs","registry","handleExact","required","unsupported","unsuppMessage","exactly","handleUnsupported","validateStrArr","everything","sorted","checkDupes","req","reqMessage","invalidKeys","incorrect","invalidTypeMessage","baseWith","DragMode","DragSink","DragApi","Movement","noDragState","events","onEvent","reset","NoDrag","inDragState","previous","old","compare","InDrag","dragState","off","isOn","namespace","dashNamespace","resolve$1","MouseDrag","sink","dragApi","settings","blocker","layerClass","destroy","Blocker","mdown","forceDrop","mup","drop","mmove","mout","delayDrop","mutation","resizeBar","resizeRowBar","resizeColBar","wire","drawBar","origin","cpOption","cp","bar","refreshGrid","warhouse","isResizable","rowPositions","resizableRowBars","resizableRows","tableWidth","rowBar","refreshRow","_pos","barIndex","colPositions","resizableColBars","resizableCols","resizableColumns","tableHeight","colBar","refreshCol","bars","resizeBarDragging","BarManager","drag","delegate","Mutation","BarMutation","active","throttledDrop","timer","cancel","throttle","runIfActive","isActive","setup","transform","hoverTable","getResizer","_dataRow","_dataCol","currentCol","getDelta","dir","startAdjust","isColBar","view","tbl","hideBars","showBars","barResizerPrefix","TableResizeHandler","selectionRng","tableResize","resizeWire","startW","startRawW","startH","startRawH","lazySizing","lazyResizingBehaviour","afterCornerResize","removeLeading","removeFromStart","getCornerLocation","isRightEdgeResize","isNorthEdgeResize","getPixelTableHeight","convertToPixelSizeHeight","getNumColumns","isPercentage$1","percentW","isPixel","computedWidth","syncTableCellPixels","getNumRows","rawWire","inline","chrome","ResizeWire","padding","margin","createContainer","objectResizing","hasTableObjectResizing","sz","hdirection","vdirection","manager","beforeResize","afterResize","startDrag","_event","refreshBars","TableResize","isReadOnly","rawTable","fireObjectResizeStart","fireObjectResized","targetElm","addClass","isCornerResize","setupTable","registerOption","register","processor","lookupOnSelection","addQueryValueHandler","registerQueryCommands","getAutoLinkPattern","getDefaultLinkTarget","getDefaultLinkProtocol","allowUnsafeLinkTarget","isZwsp","char","isBracketOrSpace","findChar","parseCurrentLine","voidElements","schema","getVoidElements","autoLinkPattern","getNode","textSeeker","getContentEditable","tempNode","tempOffset","freefallRtl","getRoot","endSpot","backwards","lastTextNode","startSpot","newRng","hasProtocol","convertToLink","bookmark","getBookmark","command","ui","isDefaultPrevented","execCommand","defaultLinkTarget","setAttrib","moveToBookmark","handleSpacebar","handleBracket","keyCode","handleEnter","getMinHeight","getMaxHeight","getAutoResizeOverflowPadding","getAutoResizeBottomMargin","toggleScrolling","state","overflowY","parseCssValueToInt","computed","oldSize","getExtraMarginBottom","plugins","fullscreen","isFullscreen","docEle","resizeBottomMargin","getElement","resizeHeight","marginTop","marginBottom","contentHeight","chromeHeight","getContainer","getContentAreaContainer","maxHeight","setStyles","deltaSize","setStyle","fireResizeEditor","scrollTo","hasFocus","setContentEvent","shouldScrollIntoView","scrollIntoView","register$1","overflowPadding","paddingLeft","paddingRight","Resource","grinning","fitzpatrick_scale","category","grimacing","grin","joy","rofl","partying","smiley","smile","sweat_smile","laughing","innocent","wink","blush","slightly_smiling_face","upside_down_face","relaxed","yum","relieved","heart_eyes","smiling_face_with_three_hearts","kissing_heart","kissing","kissing_smiling_eyes","kissing_closed_eyes","stuck_out_tongue_winking_eye","zany","raised_eyebrow","monocle","stuck_out_tongue_closed_eyes","stuck_out_tongue","money_mouth_face","nerd_face","sunglasses","star_struck","clown_face","cowboy_hat_face","hugs","smirk","no_mouth","neutral_face","expressionless","unamused","roll_eyes","thinking","lying_face","hand_over_mouth","shushing","symbols_over_mouth","exploding_head","flushed","disappointed","worried","angry","rage","pensive","confused","slightly_frowning_face","frowning_face","persevere","confounded","tired_face","weary","pleading","triumph","open_mouth","scream","fearful","cold_sweat","hushed","frowning","anguished","cry","disappointed_relieved","drooling_face","sleepy","sweat","hot","cold","sob","dizzy_face","astonished","zipper_mouth_face","nauseated_face","sneezing_face","vomiting","mask","face_with_thermometer","face_with_head_bandage","woozy","sleeping","zzz","poop","smiling_imp","imp","japanese_ogre","japanese_goblin","skull","ghost","alien","robot","smiley_cat","smile_cat","joy_cat","heart_eyes_cat","smirk_cat","kissing_cat","scream_cat","crying_cat_face","pouting_cat","palms_up","raised_hands","clap","wave","call_me_hand","facepunch","fist","fist_left","fist_right","ok_hand","raised_hand","raised_back_of_hand","open_hands","muscle","pray","foot","leg","handshake","point_up","point_up_2","point_down","point_left","point_right","fu","raised_hand_with_fingers_splayed","love_you","metal","crossed_fingers","vulcan_salute","writing_hand","selfie","nail_care","lips","tooth","tongue","ear","nose","eye","eyes","brain","bust_in_silhouette","busts_in_silhouette","speaking_head","baby","boy","girl","adult","man","woman","blonde_woman","blonde_man","bearded_person","older_adult","older_man","older_woman","man_with_gua_pi_mao","woman_with_headscarf","woman_with_turban","man_with_turban","policewoman","policeman","construction_worker_woman","construction_worker_man","guardswoman","guardsman","female_detective","male_detective","woman_health_worker","man_health_worker","woman_farmer","man_farmer","woman_cook","man_cook","woman_student","man_student","woman_singer","man_singer","woman_teacher","man_teacher","woman_factory_worker","man_factory_worker","woman_technologist","man_technologist","woman_office_worker","man_office_worker","woman_mechanic","man_mechanic","woman_scientist","man_scientist","woman_artist","man_artist","woman_firefighter","man_firefighter","woman_pilot","man_pilot","woman_astronaut","man_astronaut","woman_judge","man_judge","woman_superhero","man_superhero","woman_supervillain","man_supervillain","mrs_claus","santa","sorceress","wizard","woman_elf","man_elf","woman_vampire","man_vampire","woman_zombie","man_zombie","woman_genie","man_genie","mermaid","merman","woman_fairy","man_fairy","angel","pregnant_woman","breastfeeding","princess","prince","bride_with_veil","man_in_tuxedo","running_woman","running_man","walking_woman","walking_man","dancer","man_dancing","dancing_women","dancing_men","couple","two_men_holding_hands","two_women_holding_hands","bowing_woman","bowing_man","man_facepalming","woman_facepalming","woman_shrugging","man_shrugging","tipping_hand_woman","tipping_hand_man","no_good_woman","no_good_man","ok_woman","ok_man","raising_hand_woman","raising_hand_man","pouting_woman","pouting_man","frowning_woman","frowning_man","haircut_woman","haircut_man","massage_woman","massage_man","woman_in_steamy_room","man_in_steamy_room","couple_with_heart_woman_man","couple_with_heart_woman_woman","couple_with_heart_man_man","couplekiss_man_woman","couplekiss_woman_woman","couplekiss_man_man","family_man_woman_boy","family_man_woman_girl","family_man_woman_girl_boy","family_man_woman_boy_boy","family_man_woman_girl_girl","family_woman_woman_boy","family_woman_woman_girl","family_woman_woman_girl_boy","family_woman_woman_boy_boy","family_woman_woman_girl_girl","family_man_man_boy","family_man_man_girl","family_man_man_girl_boy","family_man_man_boy_boy","family_man_man_girl_girl","family_woman_boy","family_woman_girl","family_woman_girl_boy","family_woman_boy_boy","family_woman_girl_girl","family_man_boy","family_man_girl","family_man_girl_boy","family_man_boy_boy","family_man_girl_girl","yarn","thread","coat","labcoat","womans_clothes","tshirt","jeans","necktie","dress","bikini","kimono","lipstick","kiss","footprints","flat_shoe","high_heel","sandal","boot","mans_shoe","athletic_shoe","hiking_boot","socks","gloves","scarf","womans_hat","tophat","billed_hat","rescue_worker_helmet","mortar_board","crown","school_satchel","luggage","pouch","purse","handbag","briefcase","eyeglasses","dark_sunglasses","goggles","ring","closed_umbrella","dog","hamster","rabbit","fox_face","bear","panda_face","koala","tiger","lion","cow","pig","pig_nose","frog","squid","octopus","shrimp","monkey_face","gorilla","see_no_evil","hear_no_evil","speak_no_evil","monkey","chicken","penguin","bird","baby_chick","hatching_chick","hatched_chick","duck","eagle","owl","bat","wolf","boar","horse","unicorn","honeybee","bug","butterfly","snail","beetle","ant","grasshopper","spider","scorpion","crab","snake","lizard","sauropod","turtle","tropical_fish","fish","blowfish","dolphin","shark","whale","whale2","crocodile","leopard","zebra","tiger2","water_buffalo","ox","cow2","deer","dromedary_camel","camel","giraffe","elephant","rhinoceros","goat","ram","sheep","racehorse","pig2","rat","mouse2","rooster","turkey","dove","dog2","poodle","cat2","rabbit2","chipmunk","hedgehog","raccoon","llama","hippopotamus","kangaroo","badger","swan","peacock","parrot","lobster","mosquito","paw_prints","dragon","dragon_face","cactus","christmas_tree","evergreen_tree","deciduous_tree","palm_tree","seedling","herb","shamrock","four_leaf_clover","bamboo","tanabata_tree","leaves","fallen_leaf","maple_leaf","ear_of_rice","hibiscus","sunflower","rose","wilted_flower","tulip","blossom","cherry_blossom","bouquet","mushroom","chestnut","jack_o_lantern","shell","spider_web","earth_americas","earth_africa","earth_asia","full_moon","waning_gibbous_moon","last_quarter_moon","waning_crescent_moon","new_moon","waxing_crescent_moon","first_quarter_moon","waxing_gibbous_moon","new_moon_with_face","full_moon_with_face","first_quarter_moon_with_face","last_quarter_moon_with_face","sun_with_face","crescent_moon","star","star2","dizzy","sparkles","comet","sunny","sun_behind_small_cloud","partly_sunny","sun_behind_large_cloud","sun_behind_rain_cloud","cloud","cloud_with_rain","cloud_with_lightning_and_rain","cloud_with_lightning","zap","fire","boom","snowflake","cloud_with_snow","snowman","snowman_with_snow","wind_face","dash","tornado","fog","open_umbrella","umbrella","droplet","sweat_drops","ocean","green_apple","apple","pear","tangerine","lemon","banana","watermelon","grapes","strawberry","melon","cherries","peach","pineapple","coconut","kiwi_fruit","mango","avocado","broccoli","tomato","eggplant","cucumber","carrot","hot_pepper","potato","corn","leafy_greens","sweet_potato","peanuts","honey_pot","croissant","bread","baguette_bread","bagel","pretzel","cheese","egg","bacon","steak","pancakes","poultry_leg","meat_on_bone","bone","fried_shrimp","fried_egg","hamburger","fries","stuffed_flatbread","hotdog","pizza","sandwich","canned_food","spaghetti","taco","burrito","green_salad","shallow_pan_of_food","ramen","stew","fish_cake","fortune_cookie","sushi","bento","rice_ball","rice","rice_cracker","oden","dango","shaved_ice","ice_cream","icecream","pie","cake","cupcake","moon_cake","birthday","custard","candy","lollipop","chocolate_bar","popcorn","dumpling","doughnut","cookie","milk_glass","beer","beers","clinking_glasses","wine_glass","tumbler_glass","cocktail","tropical_drink","champagne","sake","tea","cup_with_straw","coffee","baby_bottle","salt","spoon","fork_and_knife","plate_with_cutlery","bowl_with_spoon","takeout_box","chopsticks","soccer","basketball","football","baseball","softball","tennis","volleyball","rugby_football","flying_disc","golf","golfing_woman","golfing_man","ping_pong","badminton","goal_net","ice_hockey","field_hockey","lacrosse","cricket","ski","skier","snowboarder","person_fencing","women_wrestling","men_wrestling","woman_cartwheeling","man_cartwheeling","woman_playing_handball","man_playing_handball","ice_skate","curling_stone","skateboard","sled","bow_and_arrow","fishing_pole_and_fish","boxing_glove","martial_arts_uniform","rowing_woman","rowing_man","climbing_woman","climbing_man","swimming_woman","swimming_man","woman_playing_water_polo","man_playing_water_polo","woman_in_lotus_position","man_in_lotus_position","surfing_woman","surfing_man","bath","basketball_woman","basketball_man","weight_lifting_woman","weight_lifting_man","biking_woman","biking_man","mountain_biking_woman","mountain_biking_man","horse_racing","business_suit_levitating","trophy","running_shirt_with_sash","medal_sports","medal_military","reminder_ribbon","rosette","ticket","tickets","performing_arts","art","circus_tent","woman_juggling","man_juggling","microphone","headphones","musical_score","musical_keyboard","drum","saxophone","trumpet","guitar","violin","clapper","video_game","space_invader","dart","game_die","chess_pawn","slot_machine","jigsaw","bowling","red_car","taxi","blue_car","bus","trolleybus","racing_car","police_car","ambulance","fire_engine","minibus","truck","articulated_lorry","tractor","kick_scooter","motorcycle","bike","motor_scooter","rotating_light","oncoming_police_car","oncoming_bus","oncoming_automobile","oncoming_taxi","aerial_tramway","mountain_cableway","suspension_railway","railway_car","train","monorail","bullettrain_side","bullettrain_front","light_rail","mountain_railway","steam_locomotive","train2","metro","tram","station","flying_saucer","helicopter","small_airplane","airplane","flight_departure","flight_arrival","sailboat","motor_boat","speedboat","ferry","passenger_ship","rocket","artificial_satellite","seat","canoe","construction","fuelpump","busstop","vertical_traffic_light","traffic_light","checkered_flag","ship","ferris_wheel","roller_coaster","carousel_horse","building_construction","foggy","tokyo_tower","fountain","rice_scene","mountain","mountain_snow","mount_fuji","volcano","japan","camping","tent","national_park","motorway","railway_track","sunrise","sunrise_over_mountains","desert","beach_umbrella","desert_island","city_sunrise","city_sunset","cityscape","night_with_stars","bridge_at_night","milky_way","stars","sparkler","fireworks","rainbow","houses","european_castle","japanese_castle","stadium","statue_of_liberty","house_with_garden","derelict_house","office","department_store","post_office","european_post_office","hospital","bank","hotel","convenience_store","school","love_hotel","wedding","classical_building","church","mosque","synagogue","kaaba","shinto_shrine","watch","iphone","calling","computer","desktop_computer","printer","computer_mouse","trackball","joystick","clamp","minidisc","floppy_disk","cd","dvd","vhs","camera","camera_flash","video_camera","movie_camera","film_projector","film_strip","telephone_receiver","phone","pager","fax","tv","radio","studio_microphone","level_slider","control_knobs","compass","stopwatch","timer_clock","alarm_clock","mantelpiece_clock","hourglass_flowing_sand","hourglass","satellite","battery","electric_plug","bulb","flashlight","candle","fire_extinguisher","wastebasket","oil_drum","money_with_wings","dollar","yen","euro","pound","moneybag","credit_card","gem","balance_scale","toolbox","wrench","hammer","hammer_and_pick","hammer_and_wrench","pick","nut_and_bolt","gear","brick","chains","magnet","gun","bomb","firecracker","hocho","dagger","crossed_swords","shield","smoking","skull_and_crossbones","coffin","funeral_urn","amphora","crystal_ball","prayer_beads","nazar_amulet","barber","alembic","telescope","microscope","hole","pill","syringe","dna","microbe","petri_dish","test_tube","thermometer","broom","basket","toilet_paper","toilet","shower","bathtub","soap","sponge","lotion_bottle","old_key","couch_and_lamp","sleeping_bed","bed","door","bellhop_bell","teddy_bear","framed_picture","world_map","parasol_on_ground","moyai","shopping","shopping_cart","balloon","flags","ribbon","gift","confetti_ball","tada","dolls","wind_chime","crossed_flags","izakaya_lantern","red_envelope","email","envelope_with_arrow","incoming_envelope","love_letter","postbox","mailbox_closed","mailbox","mailbox_with_mail","mailbox_with_no_mail","package","postal_horn","inbox_tray","outbox_tray","scroll","page_with_curl","bookmark_tabs","receipt","bar_chart","chart_with_upwards_trend","chart_with_downwards_trend","page_facing_up","date","calendar","spiral_calendar","card_index","card_file_box","ballot_box","file_cabinet","spiral_notepad","file_folder","open_file_folder","card_index_dividers","newspaper_roll","newspaper","notebook","closed_book","green_book","blue_book","orange_book","notebook_with_decorative_cover","ledger","books","open_book","safety_pin","link","paperclip","paperclips","scissors","triangular_ruler","straight_ruler","abacus","pushpin","round_pushpin","triangular_flag_on_post","white_flag","black_flag","rainbow_flag","closed_lock_with_key","lock","unlock","lock_with_ink_pen","pen","fountain_pen","black_nib","memo","pencil2","crayon","paintbrush","mag","mag_right","heart","orange_heart","yellow_heart","green_heart","blue_heart","purple_heart","black_heart","broken_heart","heavy_heart_exclamation","two_hearts","revolving_hearts","heartbeat","heartpulse","sparkling_heart","cupid","gift_heart","heart_decoration","peace_symbol","latin_cross","star_and_crescent","om","wheel_of_dharma","star_of_david","six_pointed_star","menorah","yin_yang","orthodox_cross","place_of_worship","ophiuchus","aries","taurus","gemini","cancer","leo","virgo","libra","scorpius","sagittarius","capricorn","aquarius","pisces","atom_symbol","u7a7a","u5272","radioactive","biohazard","mobile_phone_off","vibration_mode","u6709","u7121","u7533","u55b6","u6708","eight_pointed_black_star","vs","accept","white_flower","ideograph_advantage","secret","congratulations","u5408","u6e80","u7981","ab","cl","o2","sos","no_entry","name_badge","no_entry_sign","stop_sign","anger","hotsprings","no_pedestrians","do_not_litter","no_bicycles","underage","no_mobile_phones","exclamation","grey_exclamation","question","grey_question","bangbang","interrobang","low_brightness","high_brightness","trident","fleur_de_lis","part_alternation_mark","warning","children_crossing","beginner","recycle","u6307","chart","sparkle","eight_spoked_asterisk","negative_squared_cross_mark","white_check_mark","diamond_shape_with_a_dot_inside","cyclone","loop","globe_with_meridians","m","atm","sa","passport_control","customs","baggage_claim","left_luggage","wheelchair","no_smoking","wc","parking","potable_water","mens","womens","baby_symbol","restroom","put_litter_in_its_place","cinema","signal_strength","koko","ng","ok","cool","new","free","two","three","four","five","six","seven","eight","nine","keycap_ten","asterisk","eject_button","arrow_forward","pause_button","next_track_button","stop_button","record_button","play_or_pause_button","previous_track_button","fast_forward","rewind","twisted_rightwards_arrows","repeat","repeat_one","arrow_backward","arrow_up_small","arrow_down_small","arrow_double_up","arrow_double_down","arrow_right","arrow_left","arrow_up","arrow_down","arrow_upper_right","arrow_lower_right","arrow_lower_left","arrow_upper_left","arrow_up_down","left_right_arrow","arrows_counterclockwise","arrow_right_hook","leftwards_arrow_with_hook","arrow_heading_up","arrow_heading_down","information_source","abc","abcd","capital_abcd","symbols","musical_note","notes","wavy_dash","curly_loop","heavy_check_mark","arrows_clockwise","heavy_plus_sign","heavy_minus_sign","heavy_division_sign","heavy_multiplication_x","infinity","heavy_dollar_sign","currency_exchange","copyright","registered","tm","back","soon","ballot_box_with_check","radio_button","white_circle","black_circle","red_circle","large_blue_circle","small_orange_diamond","small_blue_diamond","large_orange_diamond","large_blue_diamond","small_red_triangle","black_small_square","white_small_square","black_large_square","white_large_square","small_red_triangle_down","black_medium_square","white_medium_square","black_medium_small_square","white_medium_small_square","black_square_button","white_square_button","speaker","sound","loud_sound","mute","mega","loudspeaker","bell","no_bell","black_joker","mahjong","spades","clubs","hearts","diamonds","flower_playing_cards","thought_balloon","right_anger_bubble","speech_balloon","left_speech_bubble","clock1","clock2","clock3","clock4","clock5","clock6","clock7","clock8","clock9","clock10","clock11","clock12","clock130","clock230","clock330","clock430","clock530","clock630","clock730","clock830","clock930","clock1030","clock1130","clock1230","afghanistan","aland_islands","albania","algeria","american_samoa","andorra","angola","anguilla","antarctica","antigua_barbuda","argentina","armenia","aruba","australia","austria","azerbaijan","bahamas","bahrain","bangladesh","barbados","belarus","belgium","belize","benin","bermuda","bhutan","bolivia","caribbean_netherlands","bosnia_herzegovina","botswana","brazil","british_indian_ocean_territory","british_virgin_islands","brunei","bulgaria","burkina_faso","burundi","cape_verde","cambodia","cameroon","canada","canary_islands","cayman_islands","central_african_republic","chad","chile","cn","christmas_island","cocos_islands","colombia","comoros","congo_brazzaville","congo_kinshasa","cook_islands","costa_rica","croatia","cuba","curacao","cyprus","czech_republic","denmark","djibouti","dominica","dominican_republic","ecuador","egypt","el_salvador","equatorial_guinea","eritrea","estonia","ethiopia","eu","falkland_islands","faroe_islands","fiji","finland","fr","french_guiana","french_polynesia","french_southern_territories","gabon","gambia","georgia","de","ghana","gibraltar","greece","greenland","grenada","guadeloupe","guam","guatemala","guernsey","guinea","guinea_bissau","guyana","haiti","honduras","hong_kong","hungary","iceland","india","indonesia","iran","iraq","ireland","isle_of_man","israel","it","cote_divoire","jamaica","jp","jersey","jordan","kazakhstan","kenya","kiribati","kosovo","kuwait","kyrgyzstan","laos","latvia","lebanon","lesotho","liberia","libya","liechtenstein","lithuania","luxembourg","macau","macedonia","madagascar","malawi","malaysia","maldives","mali","malta","marshall_islands","martinique","mauritania","mauritius","mayotte","mexico","micronesia","moldova","monaco","mongolia","montenegro","montserrat","morocco","mozambique","myanmar","namibia","nauru","nepal","netherlands","new_caledonia","new_zealand","nicaragua","niger","nigeria","niue","norfolk_island","northern_mariana_islands","north_korea","norway","oman","pakistan","palau","palestinian_territories","panama","papua_new_guinea","paraguay","peru","philippines","pitcairn_islands","poland","portugal","puerto_rico","qatar","reunion","romania","ru","rwanda","st_barthelemy","st_helena","st_kitts_nevis","st_lucia","st_pierre_miquelon","st_vincent_grenadines","samoa","san_marino","sao_tome_principe","saudi_arabia","senegal","serbia","seychelles","sierra_leone","singapore","sint_maarten","slovakia","slovenia","solomon_islands","somalia","south_africa","south_georgia_south_sandwich_islands","kr","south_sudan","es","sri_lanka","sudan","suriname","swaziland","sweden","switzerland","syria","taiwan","tajikistan","tanzania","thailand","timor_leste","togo","tokelau","tonga","trinidad_tobago","tunisia","turkmenistan","turks_caicos_islands","tuvalu","uganda","ukraine","united_arab_emirates","uk","england","scotland","wales","us","us_virgin_islands","uruguay","uzbekistan","vanuatu","vatican_city","venezuela","vietnam","wallis_futuna","western_sahara","yemen","zambia","zimbabwe","united_nations","pirate_flag","merger","objects","curObject","getEmojiDatabase","getEmojiDatabaseUrl","getEmojiDatabaseId","getAppendedEmoji","getEmojiImageUrl","ALL_CATEGORY","categoryNameMap","people","animals_and_nature","food_and_drink","activity","travel_and_places","user","translateCategory","categories","getUserDefinedEmoji","userDefinedEmoticons","emojiMatches","emoji","lowerCasePattern","title","emojisFrom","maxResults","reachedLimit","icon","patternName","database","initialState","listAll","currentTab","updateFilter","dialogApi","dialogData","listCategory","searchField","resultsField","getInitialState","tabs","listCategories","initialData","onTabChange","newTabName","onChange","onAction","actionData","insertEmoticon","close","primary","windowManager","hasLoaded","block","waitForLoad","then","redial","unblock","catch","_err","onSetupEditable","setEnabled","pluginUrl","register$2","databaseUrl","databaseId","emojiImagesUrl","getEmoji","lib","load","emojis","userEmojis","cats","entry","processEmojis","Promise","reject","interval","setInterval","clearInterval","initDatabase","addButton","tooltip","onSetup","addMenuItem","addAutocompleter","minChars","fetch","autocompleteApi","init","parser","addAttributeFilter","getAllEmojis","global$7","get$1","unique","isDuplicated","lift2","oa","ob","isElement$1","lastChild","ancestor$3","global$6","global$5","global$4","global$3","global$2","matchNodeName","matchNodeNames","isTextNode$1","isListNode","isOlUlNode","isOlNode","isListItemNode","isDlItemNode","isTableCellNode","isTextBlock","getTextBlockElements","blockElements","isVoid","isEmpty$2","keepBookmarks","isChildOfBody","isChildOf","shouldIndentOnTab","getForcedRootBlock","getForcedRootBlockAttrs","createTextBlock","contentNode","getBlockElements","fragment","createFragment","blockName","blockAttrs","textBlock","hasContentNode","DOM$2","isDescriptionDetail","isDescriptionTerm","outdentDlItem","dl","li","bookmarks","newBlock","tmpRng","extractContents","insertAfter","targetNode","removeAndKeepBookmarks","splitList","indentDlItem","getNormalizedPoint","normalizeRange","outRng","cloneRange","rangeStart","rangeEnd","listNames","listSelector","getParentList","selectionStart","getClosestListHost","getSelectedListItems","selectedBlocks","getSelectedBlocks","elms","listItemsElms","findParentListItemsNodes","getClosestEditingHost","parentTableCell","getParents","parentBlocks","isNotForcedRootBlock","listName","isValidChild","findLastParentListNode","parentLists","getUniqueListRoots","lists","listRoots","isCustomList","inList","isWithinNonEditable","isWithinNonEditableList","parentList","setNodeChangeHandler","nodeChangeHandler","initialNode","fromElements","fireListEvent","hasFirstChildList","isEntryList","isEntryComment","isIndented","depth","cloneItemContent","joinSegment","createSegment","listType","segment","writeShallow","cast","newCast","createItem","itemAttributes","appendItem","listAttributes","normalizeSegment","isEntryFragment","composeList","entries","firstCommentEntryOpt","segments","parentListType","createSegments","joinSegments","populateSegments","writeDeep","firstCommentEntry","fistCast","normalizeEntries","dirty","closestSiblingEntry","_value","cleanListProperties","matchingEntry","cloneListProperties","parseSingleItem","itemSelection","selectionState","currentItemEntry","isInPreviousLi","createEntry","childListEntries","parseList","parseItem","parsedSiblings","liChild","isFragment","listIndentation","indentation","entrySets","sourceList","parseLists","selectedListItems","getItemSelection","entrySet","indentEntry","indentSelectedEntries","composedLists","wasType","groupBy","normalizedEntries","contentDocument","indentedComposer","listItemAttrs","outdentedComposer","composeEntries","composedList","selectionIndentation","selectedLists","firstList","subsequentLists","getSelectedLists","getParentLists","isListInsideAnLiWithFirstAndLastNotListElement","l","getSelectedListRoots","dlItems","getSelectedDlItems","isHandled","dlIndentation","handleIndentation","selectionIsWithinNonEditableList","indentListSelection","outdentListSelection","flattenListSelection","DOM$1","createBookmark","setupEndPoint","resolveBookmark","restoreEndPoint","nodeIndex","listToggleActionFromListName","setAttribs","updateListWithDetails","updateListStyle","updateListAttrs","isInline","getEndPointNode","findBetterContainer","forward","walker","findBlockAncestor","applyList","listItemName","startPoint","commonAncestorContainer","getRootSearchStart","toUpperCase","selectedTextBlocks","textBlocks","endNode","siblings","isBookmarkNode","getSelectedTextBlocks","listBlock","sib","sibStyle","detailStyle","hasCompatibleStyle","rename","removeStyles","mergeWithAdjacentLists","shouldMerge","list1","list2","isValidLists","hasSameListStyle","elm2","liSibling","updateList$1","newList","updateCustomList","cls","hasListStyleDetail","toggleList","_detail","selectedSubLists","isParentListSelected","findSubLists","getSelectedSubLists","parentIsList","allLists","updateFunction","toggleMultipleLists","toggleSingleList","normalizeLists","grep","normalizeList","findNextCaretContainer","nonEmptyBlocks","getNonEmptyElements","isBogusBr","walkFn","prev2","hasOnlyOneBlockChild","isUnwrappable","moveChildren","fromElm","toElm","unwrapSingleBlockChild","mergeLiElements","listNode","ul","nestedLists","backspaceDeleteFromListToListCaret","selectionStartElm","otherLi","willMergeParentIntoChild","transact","fromLi","toLi","mergeIntoEmptyLi","mergeForward","resolvedBookmark","mergeBackward","oldParentElRef","hasListSelection","backspaceDelete","isCollapsed","checkRootAsContent","findValidElement","findRoot","equals","removeBlock","backspaceDeleteIntoListCaret","backspaceDeleteCaret","shouldFireInput","inputHandler","backspaceDeleteRange","parseAlphabeticBase26","chars","charValue","charCodeAt","pow","composeAlphabeticBase26","quotient","fromCharCode","parseDetail","listStyleType","queryListCommandState","registerDialog","currentList","inputMode","onSubmit","deduceListType","parseStartValue","isTextNode","nodeBuffer","wrapInvalidChildren","insertListItem","buffer","refNode","restBuffer","setupToggleButtonHandler","setActive","setupMenuButtonHandler","register$3","addNodeFilter","setup$1","hasPlugin","TAB","metaKeyPressed","setupTabKey","cmd","BACKSPACE","DELETE","setup$2","updateList","addQueryStateHandler","addToggleButton","listProperties","addContextMenu","getPrototypeOf$2","hasProto","proto","isPlainObject","isArrayOf","noarg","compose","constant$1","die","apply$1","range$2","chunk$1","map$2","partition$3","find$5","findIndex$1","bind$3","difference","a1","a2","pure$2","get$i","find$4","get$h","has$2","mapFrom","numChars","trim$1","path$1","getPrototypeOf$1","getOrDie$1","name$3","type$1","owner$4","offsetParent","leaf","set$9","get$g","hasAttribute","remove$8","set$8","setOptions","get$f","getAllRaw","ruleName","isValidValue$1","reflow","get$e","r$1","absolute$3","viewport$1","unknown$3","nu$d","find$3","detect$3","nu$c","nu$b","isOpenShadowHost","append$2","prepend$1","to","bounds$1","getBounds$3","_win","visualViewport","clientWidth","clientHeight","pageLeft","pageTop","getDocument","walkUp","Navigation","freeze","__proto__","frameElement","find$2","paths","pathTo","frames","loc","box$1","xy","absolute$2","constrain","constraint","singleton$1","unbindable","value$4","global$a","value$3","error$1","SimpleResultType","fold$1","stype","serror","svalue","Value","SimpleResult","field$2","newKey","presence","ifField","ifCustom","instantiator","baseMerge","deepMerge","defaultedThunk","fallbackThunk","process","defaulted$1","mergeWithThunk","baseThunk","ResultCombine","partitions","errors","formatObj","nu$a","getErrorInfo","value$2","validator","custom","anyValue$1","fallbackAccess","extractField","field","av","bundleAsOption","optValue","ov","missingRequired","requiredAccess","optionAccess","optionDefaultedAccess","valueThunk","getDelegate","getSetKeys","objOfOnly","objOf","fieldNames","extra","unsupportedFields","extractFields","_okey","_presence","_instantiator","arrOf","oneOf","rawF","setOf$1","validatedKeys","validateKeys","validKeys","vk","arrOfObj","anyValue","typedValue","expectedType","actualType","boolean","functionProcessor","isPostMessageable","postMessageable","choose$2","missingKey","chosen","branch","missingBranch","vp","chooseFrom","valueOf","setOf","asRaw","errs","extractValue","extraction","errInfo","formatError","asRawOrDie$1","formatErrors","choose$1","thunkOf","desc","_desc","getP","field$1","customField","validateEnum","required$1","requiredOf","requiredString","requiredStringEnum","requiredFunction","requiredObjOf","objSchema","requiredArrayOfObj","objFields","requiredArrayOf","option$3","optionOf","optionNumber","optionString","optionStringEnum","optionFunction","optionArrayOf","optionObjOf","defaulted","defaultedOf","defaultedNumber","defaultedString","defaultedStringEnum","defaultedBoolean","defaultedFunction","defaultedArrayOf","defaultedObjOf","bothErrors","firstError","secondError","bothValues","wrap$1","wrap$2","wrapAll","keyvalues","kv","wrapAll$1","ensureIsRoot","transformed","closest$4","isSource","component","simulatedEvent","defaultEventHandler","can","abort","nu$9","touchstart","touchmove","touchend","touchcancel","mousemove","mouseout","focusin","focusout","change","click","transitioncancel","transitionend","transitionstart","selectstart","prefixName","alloy","tap","focus$4","postBlur","postPaste","receive","execute$5","focusItem","longpress","sandboxClose","typeaheadCancel","systemInit","documentTouchmove","documentTouchend","windowScroll","windowResize","attachedToDom","detachedFromDom","dismissRequested","repositionRequested","focusShifted","slotVisibility","externalElementScroll","changeTab","dismissTab","highlight$1","dehighlight$1","emit","dispatchWith","emitWith","emitExecute","getSystem","triggerEvent","dispatchEvent","derive$2","configs","run$1","runActionExtra","runOnSourceName","redirectToPart","partName","uid","getByUid","redirectee","redirectToUid","partUids","runWithTarget","ev","getByDom","cutter","cut","stopper","runOnSource","runOnAttached","runOnDetached","runOnInit","runOnExecute$1","cleanParameters","parameters","markAsExtraApi","extraName","openBracketIndex","toFunctionAnnotation","nu$8","classes","loadEvent","bConfig","bState","_simulatedEvent","revokeBehaviour","doCreate","configSchema","schemaSchema","apis","getConfig","wrappedApis","apiF","apiName","bName","apiFunction","markAsBehaviourApi","config","wrapApi","me","extraF","spec","prepared","configAsRaw","initialConfig","exhibit","behaviourInfo","exhibitor","getEvents","NoState","nu$7","readState","derive$1","capabilities","simpleSchema","create$4","create$5","modeSchema","createModes","modes","createModes$1","branchKey","read$1","add$4","remove$4","cleanClass","remove$3","remove$2","getNative","NuPositionCss","toPx","applyPositionCss","toOptions","getOffsetParent","offsetParent$1","getOrigin","appear","contextualInfo","transitionClass","fadeOutClass","fadeInClass","onShow","disappear","onHide","isTopCompletelyVisible","isBottomCompletelyVisible","forceTopPosition","winBox","leftX","topY","forceBottomPosition","bottomY","getDockedLeftPosition","getPrior","getInitialPos","priorY","optScrollEnv","scrollEnv","scrollElmTop","currentScrollTop","getXYForRestoring","storePrior","decision","getXYForSaving","setInitialPos","revertToOriginal","clearInitialPos","morph","offsetBox","scrollDelta","positionCss","_left","_top","_right","_bottom","tryDecisionToFixedMorph","tryMorph","isVisibleForModes","getModes","tryMorphToOriginal","tryMorphToOriginalOrUpdateFixed","tryDockingPosition","tryMorphToFixed","morphToStatic","setDocked","onUndocked","morphToCoord","isDocked","onDocked","updateVisibility","morphToDocked","contextual","contextInfo","lazyContext","isVisible","isPartiallyVisible","setVisible","applyFixedMorph","refresh$4","isConnected","lazyViewport","applyMorph","refreshInternal","reset$2","calculateMorphToOriginal","staticOrAbsoluteMorph","resetInternal","forceDockWithDecision","getDecision","storePriorIfNone","forceDockWith","forceDockToTop","forceDockToBottom","DockingApis","setModes","ActiveDocking","dockInfo","dockState","onShown","onHidden","set$6","docDom","contentElements","fromHtml$1","getHtml","EventConfiguration","eventConfig","monitorEvent","eventName","initialTarget","patterns","NORMAL","noLogger","LOGGING","logger","sequence","startTime","Date","getTime","logEventCut","_name","purpose","logEventStopped","logNoParent","logEventNoHandlers","logEventResponse","finishTime","time","makeEventLogger","STOP","processEvent","menuFields","itemFields","itemSchema$3","_initSize","tieredMenuMarkers","markers$1","onPresenceHandler","fieldName","line","getTrace","onHandler","onKeyboardHandler","onStrictHandler","onStrictKeyboardHandler","output$1","snapshot","initSize","DockingSchema","Docking","docked","visible","initialBounds","events$h","originator","isRecursive","warn","DefaultEvents","cycleBy","generate$6","random$1","crypto","getRandomValues","Uint32Array","prefix$1","idAttr$1","idAttr","writeOnly","generate$5","make$8","NoContextApi","getComp","getMessage","debugInfo","triggerFocus","triggerEscape","broadcast","broadcastOn","broadcastEvent","build","buildOrPatch","addToWorld","removeFromWorld","addToGui","removeFromGui","premadeTag","premade$1","getPremade","makeApi","markAsSketchApi","getApis","byInnerKey","indexKey","chain","getCurried","descHandler","cHandler","behaviourTuple","nameToHandlers","behaviour","fuse","tuples","eventOrder","order","keyName","aKey","bKey","aIndex","bIndex","sortKeys","sortedTuples","all$2","any","fuse$1","missingOrderError","combineGroups","byEventName","objs","partition$1","mergeValues","consolidate","assembled","rawHandler","read$2","assemble","uncurried","baseBehaviour","schema$z","toEvents","set$5","ensureInDom","obsoleted","obs","patchChildrenWith","builtChildren","currentChildren","patchSpecChild","oldObsoleted","childComp","newObs","oldTag","determineObsoleted","diffKeyValueSet","newObj","oldObj","newKeys","oldKeys","toRemove","toSet","bifilter","renderToDom","definition","optObsoleted","innerHtml","domChildren","hasMixedChildren","isPremade","class","existingAttributes","attrsToSet","attrsToRemove","existingStyles","stylesToSet","stylesToRemove","existingClasses","classesToRemove","classesToAdd","patchDomChildren","valueElement","updateValue","reconcileToDom","attemptPatch","introduceToDom","generate$4","getBehaviours$2","validated","optBlobThunk","blob","generateFrom$1","generateFrom","build$2","getMe","systemApi","toInfo","bBlob","bList","bData","getBehaviours$3","getData$2","modDefinition","components","infoModification","domModification","toModification","baseModification","modification","baseMod","modsByBehaviour","byAspect","combineObjects","combinedClasses","combinedAttributes","combinedStyles","combine$2","defnA","mod","getDomDefinition","baseEvents","behaviourEvents","groupByEvents","combine$1","subcomponents","hasConfigured","behaviourName","connect","newApi","disconnect","syncComponents","subs","text$2","extSpec","uids","userSpec","specEvents","build$1","buildSubcomponents","completeSpec","buildFromSpec","isSketchSpec$1","premade","closest$3","sibling$1","ariaId","unlink","isPartOf$1","queryElem","dep","isAriaPartOf","nu$6","bubble","placement","boundsRestriction","labelPrefix","alwaysFit","restriction","adt$a","southeast","southwest","northeast","northwest","south","north","east","west","southeast$3","southwest$3","northeast$3","northwest$3","south$3","north$3","east$3","west$3","restrictions","getRestriction","labelPrefix$2","eastX$1","middleX$1","westX$1","northY$2","southY$2","centreY$1","southeast$2","bubbles","southwest$2","northeast$2","northwest$2","north$2","south$2","east$2","eastEdgeX$1","west$2","westEdgeX$1","allRtl$1","aboveOrBelow","aboveOrBelowRtl","belowOrAbove","belowOrAboveRtl","ActiveReceiving","receiveConfig","channelMap","channels","receivingData","targetChannels","universal","chooseChannels","channelInfo","channelSchema","onReceive","ReceivingSchema","Receiving","ActivePosition","posConfig","useFixed","focus$3","preventScroll","blur$1","blur","activeElement","active$1","preserve$1","refocus","focused","oldFocus","newFocus","adt$9","positionWithDirection","posName","decisionRect","decisionX","decisionY","decisionRight","decisionBottom","reposition","toBox","rel","optBounds","translate$2","outerScroll","relative$1","fixed$1","placementAttribute","getPlacement","adt$8","fit","nofit","attempt","bubbleOffset","adjustedBounds","applyRestriction","isVerticalAxis","newPos","adjustedLeft","adjustedTop","adjustedRight","adjustedBottom","adjustBounds","newX","newY","originInBounds","sizeInBounds","visibleW","visibleH","boundsX","boundsY","boundsRight","boundsBottom","determinePosition","fits","fittedBox","maxX","maxY","restrictedX","restrictedY","restrictedWidth","restrictedHeight","calcReposition","isPartlyVisible","maxWidth","upAvailable","downAvailable","cataVertical","westAvailable","eastAvailable","cataHorizontal","calcMaxSizes","classesOn","classesOff","layout","testY","capture","capture$1","timerAttr","applyTransitionCss","lastPlacement","shouldTransition","placer","shouldApplyTransitionCss","hasAll","isTransitioning$1","intermediatePosition","intermediateCssOptions","intermediate","hasChanges","timerId","transitionEnd","transitionCancel","isSourceTransition","pseudoElement","propertyName","transitionDone","transitionStart","duration","times","delay","dur","getTransitionDuration","requestAnimationFrame","setupTransitionListeners","startTransitioning","setMaxHeight","absMax","setMax$1","anchored","available","expandable$1","defaultOr","dephault","anchorBox","elementBox","panelWidth","panelHeight","attemptBestFit","attemptLayout","newReposition","newVisibleW","newVisibleH","newIsVisible","bestNext","preference","position$2","setPlacement$1","setPlacement","classInfo","setClasses","maxHeightFunction","maxWidthFunction","setWidth","allAlignments","nu$5","xOffset","yOffset","insetModifier","insetXOffset","insetYOffset","getClasses","make","alignmentsOn","alignmentsOff","insetNortheast","insetNorthwest","insetNorth","insetSoutheast","insetSouthwest","insetSouth","insetEast","insetWest","nu$4","AttributeValue","Attribute","isBottomToTopDir","BottomToTop","schema$y","defaultLtr","defaultRtl","defaultBottomLtr","defaultBottomRtl","dirElement","isBottomToTop","customLtr","layouts","onLtr","customRtl","onRtl","onBottomLtr","onBottomRtl","HotspotAnchor","anchorInfo","hotspot","overrides","MakeshiftAnchor","adt$7","toAbsolute","points","sumAsAbsolute","absolute$1","getRootPoint","frame","frameOwner","compOwner","pointed","calcNewAnchor","optBox","rootPoint","topLeft","onRelative","onFixed","sumAsFixed","layoutsLtr","showAbove","layoutsRtl","NodeAnchor","nodeBox","adt$6","all$3","descendOnce","descendOnce$1","isSimRange","getAnchorSelection","modStart","modFinish","SelectionAnchor","selectionBox","optRect","getBounds$2","getBounds$1","zeroWidth$1","rawRect","selectionRect","labelPrefix$1","eastX","westX","northY$1","southY$1","southeast$1","southwest$1","northeast$1","northwest$1","allRtl","SubmenuAnchor","submenuInfo","AnchorSchema","submenu","makeshift","TransitionSchema","PositionSchema","PlacementSchema","positionWithinBounds","posState","placee","placementSpec","optWithinBounds","placeeDetail","anchorage","placeeState","oldVisibility","getFixedOrigin","getRelativeOrigin","anchoring","getBounds","newState","lastPlace","overrideOptions","simple","place","vis","PositionApis","getMode","pConfig","_pState","reset$1","Positioning","fireDetaching","fireAttaching","virtualAttach","virtualDetach","attach$1","attach","attachWith","insertion","doDetach","detach","parent$1","detachChildren","attachSystem","guiSystem","attachSystemWith","attachSystemAfter","inserter","detachSystem","rebuild","sandbox","sConfig","sState","getAttachPoint","built","open$1","onOpen","close$1","onClose","isOpen$1","_sandbox","_sConfig","isOpen","cloak","_sState","cssKey","store","cloakVisibilityAttr","decloak","hasPosition","oldValue","restore","SandboxApis","openWhileCloaked","transaction","isPartOf","getState","ActiveSandbox","sandboxConfig","sandboxState","SandboxSchema","SandboxState","Sandboxing","dismissPopups","repositionPopups","mouseReleased","schema$x","receivingChannel$1","rawSpec","isExtraPart","fireEventInstead","fe","schema$w","receivingChannel","doReposition","onLoad$5","repConfig","repState","onLoad","onUnload$2","onUnload","RepresentApis","setValue","getValue","ActiveRepresenting","resetOnDom","_se","memory$1","isNotSet","dataset","dataByValue","dataByText","itemString","currentDataByValue","currentDataByText","newDataByValue","newDataByText","meta","RepresentState","memory","manual","setValue$2","onSetValue","DatasetStore","getDataKey","getFallbackEntry","initialValue","ManualStore","_repState","MemoryStore","initVal","RepresentSchema","Representing","setValueFrom","forbidden","forbid","_v","dump","augment","SketchBehaviours","_placeholder","isSubstituted","compSpec","placeholders","uiType","newSpec","subPlaceholder","childSpecs","substituted","valuesThunk","preprocess","preprocessor","single$2","placeholder","fFactory","sketch","fSchema","fName","fPname","typeSpec","fGroupSchema","fDefaults","fOverrides","requiredSpec","externalSpec","optionalSpec","groupSpec","asNamedPart","part","name$2","adtConstructor","partSchema","PartType","asCommon","combine","partSpec","partValidated","defaults","generate$3","np","g","doGenerateOne","pname","generateOne$1","schemas","names","substitutes","internals","externals","_partSpec","_partValidated","u","components$1","ps","ph","replacements","used","oneReplace","substituteAll","substitutePlaces","getPart","partKey","getPartOrDie","getParts","partKeys","system","pk","getAllParts","pUid","getAllPartNames","getPartsOrDie","defaultUids","baseUid","partTypes","partNames","pn","defaultUidsSchema","AlloyParts","generate","generateOne","asRawOrDie","partSchemas","partUidsSchemas","baseS","composite$1","specWithUid","supplyUid","partUidsSchema","hasUid","singleSchema","compositeSchema","rawConfig","extraApis","configFields","single$1","composite","partFields","ComposeApis","getCurrent","composeConfig","_composeState","ComposeSchema","Composing","nativeDisabled","onLoad$1","disableConfig","disableState","disabled","disable","enable","hasNative","useNative","nativeDisable","nativeEnable","ariaDisable","ariaEnable","_disableState","disableClass","onDisabled","onEnabled","isDisabled","nativeIsDisabled","ariaIsDisabled","DisableApis","ActiveDisable","DisableSchema","Disabling","dehighlightAllExcept","hConfig","hState","skip","highlighted","highlightClass","skipComp","onDehighlight","highlight","isHighlighted","onHighlight","queryTarget","getFirst","_hState","itemClass","getDelta$2","dest","getCandidates","HighlightApis","dehighlightAll","dehighlight","highlightFirst","firstComp","highlightLast","lastComp","highlightAt","getByIndex","highlightBy","getHighlighted","getPrevious","getNext","HighlightSchema","Highlighting","ENTER","ESCAPE","SPACE","LEFT","UP","RIGHT","DOWN","cyclePrev","tryPrev","cycleNext","tryNext","inSet","and","preds","isShift$1","isControl","ctrlKey","isNotShift","classification","reportFocusShifting","prevFocus","dom$2","focusee","highlights","FocusInsideModes","typical","infoSchema","stateInit","getKeydownRules","getKeyupRules","optFocusIn","processKey","getRules","keyingConfig","keyingState","transitions","onFocusHandler","focusInside","OnFocusMode","focusIn","keyboardEvents","isEnterOrSpace","OnEnterOrSpaceMode","tryGoInsideComponent","create$2","cyclicField","tabbingConfig","visibilitySelector","findCurrent","focusManager","_tabbingState","tabstops","visibles","firstTabstop","findInitial","cycle","tabstop","stopIndex","useTabstopAt","isTabstop","cyclic","goFromTabstop","goBackwards","goForwards","onEnter","onEscape","isFirstChild","AcyclicType","CyclicType","defaultExecute","doDefaultExecute","stopEventForFirefox","_component","schema$v","execute$4","executeConfig","ExecutionType","_executeState","spaceExec","useSpace","enterExec","useEnter","downExec","useDown","execKeys","useControlEnter","flatgrid$1","dimensions","numRows","numColumns","setGridSize","KeyingState","flatgrid","useH","use","west$1","moveLeft","moveRight","east$1","useV","north$1","south$1","move$1","isHidden$1","locateVisible","locate","withGrid","numCols","address","newIndex","cycleHorizontal$1","oldRow","oldColumn","colsInRow","newColumn","cycleVertical$1","newRow","newCol","schema$u","focusIn$3","gridConfig","_gridState","doMove$2","gridState","handleTab","captureTab","moveLeft$3","moveRight$3","moveNorth$1","moveSouth$1","getKeydownRules$4","findCurrent$1","getKeyupRules$4","FlatgridType","getNewIndex","tryNewIndex","isDisabledButton","horizontalWithoutCycles","prevIndex","oldCandidate","onNewIndex","horizontal","_oldCandidate","schema$t","execute$2","flowConfig","focusIn$2","_state","getInitial","moveLeft$2","cycles","moveRight$2","doMove$1","flowState","executeOnMove","getKeyupRules$3","FlowType","_flowState","westMovers","allowHorizontal","allowVertical","eastMovers","toCell","matrix","cycleHorizontal","deltaCol","newColIndex","cycleVertical","nextRowIndex","colsInNextRow","nextColIndex","moveHorizontal","moveVertical","schema$s","focusIn$1","matrixConfig","previousSelector","doMove","ifCycle","ifMove","inRow","cellsInRow","allRows","toMatrix","moveNorth","moveSouth","getKeydownRules$2","getKeyupRules$2","MatrixType","schema$r","menuConfig","getKeydownRules$1","menuState","moveOnTab","getKeyupRules$1","MenuType","schema$q","SpecialType","specialInfo","onSpace","onShiftEnter","onShiftTab","onTab","onUp","onDown","onLeft","onRight","stopSpaceKeyup","acyclic","flow","execution","menu","special","Keying","keyConfig","keyState","sendFocusIn","isFlatgridState","withoutReuse","newSpecs","buildNewChildren","detachChildren$1","deleted","replaceChildren","withReuse","existingComps","specs","patchSpecChildren","deletedComp","virtualReplaceChildren","virtualReplace","replacee","replaceeIndex","childSpec","_replaceConfig","replaceAt","replaceConfig","replaceState","reuseDom","ReplaceApis","appendee","prependee","removee","foundChild","replaceBy","replaceePred","Replacing","eventHandlers","events$c","focus$2","focusConfig","onFocus","FocusApis","isFocused","ActiveFocus","tabindex","stopMousedown","FocusSchema","Focusing","toggleConfig","toggleState","toggleClass","updateClass","ariaInfo","aria","updateAriaState","onToggled","toggle$2","ToggleApis","ActiveToggle","executor","toggleOnExecute","updateExpanded","status","ToggleSchema","pressed","syncWithExpanded","checked","expanded","Toggling","pointerEvents","onClick","events$9","optAction","hoverEvent","focusEvent","toggledEvent","onHover","onFocus$1","hover","focus$1","toggled","getItemRole","role","toggling","exclusive","schema$p","hasSubmenu","itemBehaviours","tConfig","isOption","getTogglingSpec","ignoreFocus","schema$o","owner$2","parts$h","schema$n","focusWidget","widget","onHorizontalArrow","autofocus","setSource","_widget","widgetBehaviours","itemSchema$2","separator","parts$g","itemInfo","builder","fakeFocus","markers","schema$m","movementInfo","rowSelector","Menu","_spec","_externals","menuBehaviours","selectedItem","checkedRadioItems","ele","deselectOtherRadioItems","showMenuRole","trace","byItem","byMenu","triggerItem","triggerMenu","extractPreparedMenu","prep","LayeredState","expansions","menus","directory","getPreparedMenu","menuValue","lookupMenu","lookupItem","itemValue","setMenuBuilt","menuName","setContents","sPrimary","sMenus","sExpansions","sPaths","menuItems","menuPaths","_triggerItem","generate$2","expand","otherMenus","menuValues","getPrimary","getMenus","isClear","getTriggeringPath","getItemByValue","extraPath","revPath","menuIndex","getTriggeringItem","triggeringItemValue","triggeredItem","triggeredMenu","triggeringItem","triggeringPath","getTriggerData","onMenuItemHighlightedEvent","onMenuItemDehighlightedEvent","HighlightOnOpen","collapseItem$1","tieredMenu","HighlightMenuAndItem","collapseMenu","tmenu","highlightPrimary","repositionMenus","_rawUiSpec","submenuParentItems","layeredState","getItemValue","toDirectory","_container","_menuName","setActiveMenu","setActiveMenuAndItem","mv","closeOthers","others","backgroundMenu","stayInDom","updateAriaExpansions","parentItems","itemComp","getSubmenuParents","updateMenuPath","latestMenuName","menuPrep","activeMenu","ExpandHighlightDecision","expandRight","HighlightSubmenu","activeMenuPrep","nbMenu","buildIfRequired","onOpenSubmenu","collapseLeft","onCollapseMenu","keyOnItem","getSource","onExecute","componentMap","primaryName","makeSketch","menuComp","buildMenus","onOpenMenu","highlightOnOpen","HighlightJustMenu","tmenuComp","se","onHighlightItem","onDehighlightItem","navigateOnHover","updateView","HighlightParent","getActiveItem","currentItem","maybeActivePrimary","allMenus","preparedMenus","extractMenuFromContainer","primaryMenu","onRepositionMenu","tmenuBehaviours","_keyInfo","selectedMenu","tieredData","singleData","collapseItem","InlineView","showWithinBounds","thing","lazySink","showMenuWithinBounds","menuSpec","menuSandbox","getSubmenuLayouts","triggeringPaths","isFirstTierSubmenu","submenuTriggers","st","submenuLayouts","makeMenu","showAt","showMenuAt","getContent","inlineBehaviours","getRelated","isPartOfRelated","fireDismissalEventInstead","fireRepositionEventInstead","ToolbarMode$1","ToolbarLocation$1","global$9","global$8","ToolbarMode","ToolbarLocation","option$2","wrapOptional","register$f","stringOrFalseProcessor","stringOrNumberProcessor","auto","getHeightOption","getWidthOption","getMinWidthOption","getMinHeightOption","getMaxWidthOption","getMaxHeightOption","getUserStyleFormats","shouldMergeStyleFormats","shouldAutoHideStyleFormats","getContentLanguages","getRemovedMenuItems","getToolbarMode","getToolbarGroups","getToolbarLocation","fixedContainerSelector","fixedToolbarContainerTarget","isToolbarPersist","getStickyToolbarOffset","getMenubar","getToolbar","getFilePickerCallback","getFilePickerValidatorHandler","getFontSizeInputDefaultUnit","getFilePickerTypes","useTypeaheadUrls","getAnchorTop","getAnchorBottom","isDraggableModal$1","useStatusBar","useElementPath","useBranding","getResize","getPasteAsText","getSidebarShow","promotionEnabled","useHelpAccessibility","getDefaultFontStack","isSkinDisabled","isMenubarEnabled","getSkinUrl","skinUrl","documentBaseURI","skin","baseURL","getSkinUrlOption","getLineHeightFormats","isToolbarEnabled","toolbar","isToolbarString","isToolbarObjectArray","isMultipleToolbars","getMultipleToolbarsOption","toolbars","toolbarArray","isToolbarLocationBottom","fixedContainerTarget","useFixedContainer","getUiContainer","isDistractionFree","isStickyToolbar","isSplitUiMode","Options","isDraggableModal","nonScrollingOverflows","isScrollingOverflowValue","isScroller","overflowX","detectWhenSplitUiMode","popupSinkElem","ancestorsScrollers","scrollers","getBoundsFrom","scrollableBoxes","constraints","constrainByMany","Button","lookupAttr","buttonBehaviours","getAttrs","record","isSketchSpec","anyInSystem","asSpec","ActiveTabstopping","tabConfig","tabAttr","TabstopSchema","Tabstopping","ExclusivityChannel","ShowTooltipEvent","HideTooltipEvent","ImmediateHideTooltipEvent","ImmediateShowTooltipEvent","hideAllExclusive","_tConfig","_tState","TooltippingApis","immediateOpenClose","isEnabled","tState","setComponents","getTooltip","enabled","ActiveTooltipping","tooltipConfig","clearTooltip","clearTimer","isShowing","popup","tooltipDom","tooltipComponents","setTooltip","resetTimer","delayForShow","delayForHide","TooltippingSchema","TooltippingState","setToEnabled","Tooltipping","setPrototypeOf","isFrozen","getOwnPropertyDescriptor","seal","construct","Reflect","fun","thisValue","Func","arrayForEach","unapply","arrayPop","pop","arrayPush","stringToLowerCase","stringToString","stringMatch","stringReplace","stringIndexOf","stringTrim","objectHasOwnProperty","regExpTest","typeErrorCreate","_len2","_key2","thisArg","_len","_key","addToSet","transformCaseFunc","lcElement","cleanArray","object","newObject","lookupGetter","html$1","svg$1","svgFilters","svgDisallowed","mathMl$1","mathMlDisallowed","text$1","svg","mathMl","xml","MUSTACHE_EXPR","ERB_EXPR","TMPLIT_EXPR","DATA_ATTR","ARIA_ATTR","IS_ALLOWED_URI","IS_SCRIPT_OR_DATA","ATTR_WHITESPACE","DOCTYPE_NAME","CUSTOM_ELEMENT","EXPRESSIONS","getGlobal","purify","createDOMPurify","DOMPurify","removed","originalDocument","currentScript","DocumentFragment","HTMLTemplateElement","Element","NamedNodeMap","MozNamedAttrMap","HTMLFormElement","DOMParser","trustedTypes","ElementPrototype","getNextSibling","getChildNodes","getParentNode","template","trustedTypesPolicy","emptyHTML","implementation","getElementsByTagName","importNode","hooks","createHTMLDocument","IS_ALLOWED_URI$1","ALLOWED_TAGS","DEFAULT_ALLOWED_TAGS","ALLOWED_ATTR","DEFAULT_ALLOWED_ATTR","CUSTOM_ELEMENT_HANDLING","tagNameCheck","attributeNameCheck","allowCustomizedBuiltInElements","FORBID_TAGS","FORBID_ATTR","ALLOW_ARIA_ATTR","ALLOW_DATA_ATTR","ALLOW_UNKNOWN_PROTOCOLS","ALLOW_SELF_CLOSE_IN_ATTR","SAFE_FOR_TEMPLATES","SAFE_FOR_XML","WHOLE_DOCUMENT","SET_CONFIG","FORCE_BODY","RETURN_DOM","RETURN_DOM_FRAGMENT","RETURN_TRUSTED_TYPE","SANITIZE_DOM","SANITIZE_NAMED_PROPS","KEEP_CONTENT","IN_PLACE","USE_PROFILES","FORBID_CONTENTS","DEFAULT_FORBID_CONTENTS","DATA_URI_TAGS","DEFAULT_DATA_URI_TAGS","URI_SAFE_ATTRIBUTES","DEFAULT_URI_SAFE_ATTRIBUTES","MATHML_NAMESPACE","SVG_NAMESPACE","HTML_NAMESPACE","NAMESPACE","IS_EMPTY_INPUT","ALLOWED_NAMESPACES","DEFAULT_ALLOWED_NAMESPACES","PARSER_MEDIA_TYPE","SUPPORTED_PARSER_MEDIA_TYPES","CONFIG","formElement","isRegexOrFunction","testValue","_parseConfig","cfg","ADD_URI_SAFE_ATTR","ADD_DATA_URI_TAGS","ALLOWED_URI_REGEXP","ADD_TAGS","ADD_ATTR","TRUSTED_TYPES_POLICY","createHTML","createScriptURL","purifyHostElement","createPolicy","ATTR_NAME","policyName","scriptUrl","_createTrustedTypesPolicy","MATHML_TEXT_INTEGRATION_POINTS","HTML_INTEGRATION_POINTS","COMMON_SVG_AND_HTML_ELEMENTS","ALL_SVG_TAGS","ALL_MATHML_TAGS","_forceRemove","_removeAttribute","getAttributeNode","_initDocument","leadingWhitespace","dirtyPayload","parseFromString","createDocument","_createNodeIterator","SHOW_COMMENT","SHOW_PROCESSING_INSTRUCTION","SHOW_CDATA_SECTION","_isClobbered","namespaceURI","_isNode","_executeHook","entryPoint","currentNode","hook","_sanitizeElements","allowedTags","firstElementChild","_isBasicCustomElement","childClone","__removalCount","parentTagName","Boolean","_checkValidNamespace","expr","_isValidAttribute","lcTag","lcName","_sanitizeAttributes","hookEvent","attrName","attrValue","keepAttr","allowedAttributes","initValue","forceKeepAttr","getAttributeType","setAttributeNS","_sanitizeShadowDOM","shadowNode","shadowIterator","sanitize","importedNode","returnNode","nodeIterator","shadowroot","shadowrootmode","serializedHTML","outerHTML","doctype","setConfig","clearConfig","isValidAttribute","addHook","hookFunction","removeHook","removeHooks","removeAllHooks","sanitizeHtmlString","rtlTransform","defaultIconName","defaultIcon","getIconName","rtlName","addToEnd","ensureTrailing","lookupIcon","iconProvider","addFocusableBehaviour","renderIcon$3","iconName","fallbackIcon","rtlIconClasses","needsRtlTransform","iconHtml","render$3","notificationIconMap","Notification","notificationTextId","memBannerText","backstageProvider","renderPercentBar","renderPercentText","memBannerProgress","progress","updateProgress","updateText","banner","iconChoices","memButton","tooltips","tooltipText","notificationIconSpec","iconNames","renderFirst","NotificationManagerImpl","uiMothership","notificationRegion","sharedBackstage","backstage","getBoundsContainer","queryCommandValue","contentArea","clampComponentsToBounds","closeCallback","isEditorOrUIFocused","region","editorOrUIFocused","notification","removeNotificationAndReposition","editorOrUiFocused","handleEmptyRegion","handleRegionWithChildren","manageRegionVisibility","progressBar","providers","notificationSpec","notificationWrapper","getSink","header","isPositionedAtTop","anchorOverrides","anchors","timeout","setEditorTimeout","nuText","getEl","getArgs","ItemResponse","ItemResponse$1","navClass","selectableClass","colorClass","presetClasses","normal","color","tickedClass","iconClass","textClass","caretClass","activeClass","containerClass","containerRowClass","classForPreset","presets","hasIcons","menuClasses","dom$1","schema$l","focusBehaviours","selectOnFocus","setSelectionRange","inputBehaviours","inputAttributes","inputStyles","inputClasses","Input","refetchTriggerEvent","redirectMenuItemInteractionEvent","menuSearcherClass","findWithinSandbox","sandboxComp","inputElem","findWithinMenu","saveState","inputComp","fetchPattern","selectionEnd","renderMenuSearcher","handleByBrowser","handleByHighlightedItem","eventData","interactionEvent","eventType","customSearcherEventsName","i18n","searchResultsClass","augmentWithAria","chunk","rowDom","chunks","preprocessCollection","isSeparator","allSplits","currentSplit","insertItemsPlaceholder","initItems","onItem","rawItems","enrichedItems","_item","forCollection","_hasIcons","menuHasIcons","handleError","createHorizontalPartialMenuWithAlloyItems","_columns","_menuLayout","createPartialMenuWithAlloyItems","menuLayout","menuType","forSwatch","searchMode","ariaControlsSearchResults","forCollectionWithSearchField","forCollectionWithSearchResults","forToolbar","fetch$1","getSubmenuItems","onItemAction","optionalName","optionalText","optionalRole","optionalIcon","optionalTooltip","optionalLabel","optionalShortcut","optionalSelect","borderless","defaultedColumns","defaultedMeta","defaultedOnAction","defaultedType","generatedName","namePrefix","separatorMenuItemSchema","autocompleterItemSchema","baseToolbarButtonFields","toolbarButtonSchema","createToolbarButton","baseToolbarToggleButtonFields","toggleButtonSchema","createToggleButton","contextBarFields","contextButtonFields","contextToggleButtonFields","launchButtonFields","launchToggleButtonFields","toggleOrNormal","contextformbutton","contextformtogglebutton","contextFormSchema","contextToolbarSchema","cardImageFields","cardImageSchema","cardTextFields","cardTextSchema","itemSchema$1","cardimage","cardtext","cardcontainer","cardContainerSchema","commonMenuItemFields","cardMenuItemSchema","choiceMenuItemSchema","baseFields","insertTableFields","colorSwatchFields","fancyMenuItemSchema","inserttable","colorswatch","menuItemSchema","nestedMenuItemSchema","toggleMenuItemSchema","detectSize","selectorClass","columnLength","thisTop","cTop","ceil","SimpleBehaviours","namedEvents","DisablingConfigs","runWithApi","getApi","onControlAttached","editorOffCell","onDestroy","onControlDetached","UiStateChannel","broadcastEvents","uiRefs","mainUi","outerContainer","motherships","mothership","uiMotherships","setupEventsForUi","toggleOnReceive","getContext","buttonStateData","contextType","shouldDisable","contextShouldDisable","onMenuItemExecute","itemResponse","triggersSubmenu","CLOSE_ON_EXECUTE","menuItemEventOrder","componentRenderPipeline","renderCommonItem","providersBackstage","optComponents","checkUiComponentContext","buildData","convertText","isMac","alt","ctrl","shift","shortcut","updated","renderIcon$2","renderText","renderHtml","renderStyledText","renderShortcut","renderCheckmark","renderItemDomStructure","ariaLabel","domTitle","renderItemStructure","renderIcons","providerBackstage","iconSvg","iconContent","al","common","baseDom","getDom","renderColorStructure","iconSpec","leftIcon","checkmark","checkMark","textRender","htmlContent","shortcutContent","renderNormalItemStructure","tooltipBehaviour","tooltipWorker","_tooltip","replaceText","matchText","encoded","encode","encodeText","escapedMatchRegex","escape","render$2","directionClass","alignClass","align","valign","getValignClass","renderContainer","renderImage","shouldHighlight","cardText","highlightOn","parts$f","hexColour","normalizeHex","shorthandRegex","longformRegex","isHexString","hex","toHex","fromRgba","rgbaColour","red","green","blue","round$1","rgbRegex","rgbaRegex","alpha","isRgbaComponent","fromHsv","hsv","hue","saturation","brightness","side","chroma","fromHex","longForm","hexString","getLongForm","splitForm","extractValues","fromStringValues","fromString","rgbaString","rgbMatch","rgbaMatch","rgba","fireResizeContent","fireTextColorChange","fireResolveName","composeUnbinders","onSetupEditableToggle","onSetupEvent","onSetupStateToggle","unbindEditableToogle","unbindFormatToggle","boundFormatChangeCallback","binding","formatChanged","initialized","once","onSetupFormatToggle","handleEvent","onActionToggleFormat$1","rawItem","onActionExecCommand","cacheStorage","getCacheForId","storageId","currentData","getItem","legacyDefault","setItem","storage","storageString","localstorage","cache","splice","unshift","ColorCache","addColor","hsvColour","fromRgb","minRGB","maxRGB","hsvToHex","foregroundId","backgroundId","mapColorsRaw","colorMap","colors","option$1","fallbackColor","getColors$2","calcCols","sqrt","defaultCols","calculatedCols","getColorCols$1","hasCustomColors$1","getDefaultForegroundColor","getDefaultBackgroundColor","getCurrentColor","cssRgbValue","getAdditionalColors","hasCustom","applyColor","onChoice","colorPickerDialog","dialog","colorOpt","getColors$1","getCurrentColors","getFetch$1","callback","setIconColor","splitButtonApi","newColor","setIconFill","buttonApi","select$1","optCurrentHex","getToolTipText","lastColor","tooltipPrefix","colorText","registerTextColorButton","addSplitButton","_splitButtonApi","registerTextColorMenuItem","addNestedMenuItem","fancytype","initData","storageKey","colorpicker","_api","alert","onCancel","createPartialChoiceMenu","onItemValueHandler","alloyItems","createChoiceItems","itemPresets","useText","optTooltipping","renderChoiceItem","deriveMenuMovement","menuMarkers","cellOverEvent","cellExecuteEvent","makeComponents","cellRow","makeLabelText","fancyMenuItems","getCellLabel","makeAnnouncementText","makeCells","emptyLabelText","memLabel","selectedRow","selectedColumn","selectCells","useCustomColors","allowCustomColors","colorinput","hasCustomColors","getColors","getColorItems","getColorCols","widgetSpec","separator$3","CouplingApis","getCoupled","coupleConfig","coupleState","getOrCreate","getExistingCoupled","getExisting","CouplingSchema","CouplingState","coupled","lookupCoupled","coupledName","Coupling","nu$3","baseFn","callbacks","nCallback","isReady","LazyValue","pure","errorReporter","make$5","aFutureB","toPromise","anonBind","futureB","toLazy","toCached","Future","partType$1","getAnchor","getHotspot","getAnchorOverrides","mapFetch","onOpenSync","processed","futureData","fetcher","getLazySink","tdata","listRole","openF","_onOpenSync","_highlightOnOpen","togglePopup","sinkDetail","internalSink","lazySinkFn","doRepositionMenus","makeSandbox$1","ariaControls","sandboxClasses","sandboxBehaviours","matchWidth","useMinWidth","buttonWidth","set$7","FocusEvent","sandboxFields","schema$k","parts$e","Dropdown","switchToMenu","togglePopup$1","dropdownComp","HighlightNone","refetch","triggerExecute","dropdownBehaviours","updateAriaOnHighlight","activeMenuComp","setActiveDescendant","resultsElem","controlledId","updateAriaOnDehighlight","getSearchPattern","FocusMode","createMenuItemFromBridge","isHorizontalMenu","parseForHorizontalMenu","menuitem","createNestedMenuItem","downwardsCaret","renderSubmenuCaret","underlinePath","translatedTooltip","nested","createToggleMenuItem","toggle$1","createSeparatorMenuItem","createFancyMenuItem","fancy","createAutocompleteItems","createCardMenuItem","card","createAutocompleterItem","tooltipString","autocomplete","createPartialMenu","itemHasIcon","identifyMenuLayout","createTieredDataFrom","partialMenu","rangeToSimRange","Autocompleter","autocompleterId","processingAction","activeState","activeRange","autocompleter","cancelIfNecessary","isMenuOpen","hideIfNecessary","editorBody","ariaOwnsAttr","getMenu","updateDisplay","lookupData","combinedItems","choices","itemMeta","autocompleterApi","reload","fetchOptions","BUBBLE_TO_SANDBOX","getCombinedItems","ld","focusMode","ContentFocus","createInlineMenuFrom","display","cloneAutocompleterToEditorDoc","newElm","clip","redirectKeyToItem","stopImmediatePropagation","isProcessingAction","queryCommandState","AutocompleterEditorEvents","DelayedFunction","ref","schedule","getTouch","touches","setup$d","rawSettings","stopBackspace","tapEvent","startData","longpressFired","longpress$1","touch","distX","distY","isFarEnough","fireIfReady","monitor","simpleEvents","tapStopped","pasteTimeout","onPaste","onKeydown","isDangerous","onFocusIn","focusoutTimeout","onFocusOut","derive","rawTarget","stopped","resume","complete","doTriggerHandler","isStopped","isCut","fromSource","handlerInfo","eventHandler","doTriggerOnUntilStopped","triggerOnUntilStopped","Registry","registerId","extraArgs","curryArgs","unregisterId","handlersById","_eventName","filterByType","broadcastHandler","isAboveRoot","findHandler","EventRegistry","unregister","tagId","readOrTag","conflict","failOnDuplicate","getById","Container","domWithoutAttributes","containerBehaviours","takeover","domEvents","triggerUntilStopped","_alloyId","triggerHandler","broadcast$1","broadcastData","receivers","receiver","listeners","fromExternal","schema$j","parts$d","excludeFactory","exclude$1","FormField","fieldBehaviours","descriptorId","getField","getLabel","renderFormFieldWith","pLabel","pField","extraClasses","extraBehaviours","renderFormFieldSpecWith","renderFormFieldDomWith","renderLabel$3","formChangeEvent","formCloseEvent","formCancelEvent","formActionEvent","formSubmitEvent","formBlockEvent","formUnblockEvent","formTabChangeEvent","formResizeEvent","renderCollection","runOnItem","collectionEvents","currentActive","iterCollectionItems","applyAttributes","childElm","getComponents","disabledClass","htmlLines","itemText","getIcon","mapItemName","encodeAllRaw","ariaElements","isAriaElement","markValid","invalidConfig","invalidClass","notify","notifyInfo","validHtml","onValid","markInvalid","invalidState","onInvalid","_invalidState","validatorInfo","onValidate","InvalidateApis","isInvalid","ActiveInvalidate","validateOnLoad","InvalidateSchema","Invalidating","validation","Unselecting","unselectable","colorInputChangeEvent","colorSwatchChangeEvent","colorPickerCancelEvent","labelPart","edgePart","edgeActions","det","mouseIsDown","tlEdgePart","tedgePart","trEdgePart","redgePart","brEdgePart","bedgePart","blEdgePart","ledgePart","thumbPart","isShift","SliderParts","getValueFromEvent","spectrum","sliderChangeEvent","getEventSource","evt","isTouchEvent$2","touchEvent","mouseEvent","minX","minY","min1X","min1Y","max1X","max1Y","xRange","yRange","halfX","halfY","useMultiplier","stepSize","speedMultiplier","snap","snapToGrid","snapStart","rounded","hasEdge","edgeName","hasLEdge","hasREdge","hasTEdge","hasBEdge","currentValue","xyValue","fireSliderChange$3","reduceBy","increaseBy","capValue","findValueOf","hasMinEdge","hasMaxEdge","minBound","maxBound","screenRange","capMin","capMax","findOffsetOf","newValue","extraValue","rawSteps","maxSteps","snapValueOf","findOffsetOfValue$2","maxOffset","centerMinEdge","centerMaxEdge","getBoundsProperty","getMinXBounds","getMaxXBounds","getMinYBounds","getMaxYBounds","getXScreenRange","getYScreenRange","getCenterOffsetOf","componentMinEdge","componentMaxEdge","spectrumMinEdge","getXCenterOffSetOf","componentBounds","spectrumBounds","getYCenterOffSetOf","fireSliderChange$2","findValueOfOffset$1","handleMovement$2","xValue","moveBy$2","findPositionOfValue$1","slider","minEdge","maxEdge","minOffset","findOffsetOfValue$1","onLeft$2","onRight$2","onUp$2","onDown$2","edgeActions$2","HorizontalModel","setToMin","setToMax","findValueOfOffset","findPositionOfValue","setPositionFromValue","thumb","getSpectrum","thumbRadius","fireSliderChange$1","handleMovement$1","yValue","findOffsetOfValue","onLeft$1","onRight$1","onUp$1","onDown$1","edgeActions$1","VerticalModel","fireSliderChange","sliderValue","handleMovement","isVerticalMovement","TwoDModel","mX","mY","xPos","yPos","thumbXRadius","thumbYRadius","Slider","getThumb","modelDetail","choose","wasDown","onChoose","onDragStart","onDragEnd","sliderBehaviours","changeValue","getInitialValue","onInit","resetToMin","resetToMax","fieldsUpdate","sliderUpdate","paletteUpdate","owner$1","schema$i","getPartName$1","make$4","formBehaviours","form","resPs","resPThunk","pName","Form","fSpec","fieldParts","validInput","invalidInput","validatingInput","translatePrefix","uninitiatedTooltipApi","immediatelyShow","immediatelyHide","rgbFormFactory","getClass","onValidHexx","onInvalidHexx","tooltipGetConfig","makeIcon","setTooltipEnabled","tooltipApi","invalidation","renderTextField","description","helptext","errorId","memInvalidIcon","comps","concats","copyRgbToForm","rgb","memPreview","updatePreview","preview","rgbFormSketcher","setValueRgb","onInvalidInput","onValidInput","isHexInputEvent","onValidHex","hexField","copyRgbToHex","onValidRgb","formPartStrings","redStrings","greenStrings","blueStrings","hexStrings","updateHex","copyHexToRgb","makeFactory","colourPickerSketcher","rgbForm","onInvalidHex","sbPalette","spectrumPart","setColour","canvas","fillStyle","fillRect","grdWhite","createLinearGradient","addColorStop","grdBlack","_thumb","_slider","setHue","_apis","setPaletteHue","setThumb","setPaletteThumb","paletteFactory","paletteRgba","paletteHue","memSlider","sliderFactory","memPalette","memRgb","updatePalette","_hex","palette","updateFields","updateSlider","hueDegreesToSlider","updatePaletteThumb","runUpdates","updates","updateState","hexToHsv","onFieldsUpdate","oldHue","newHsv","newHex","onPaletteUpdate","hueSliderToDegrees","oldRgb","oldHsv","onSliderUpdate","ComposingConfigs","processors","memento","mem","rawProcessors","rawValue","postprocess","withComp","optInitialValue","withElement","english","isOldCustomEditor","browseFilesEvent","renderDropZone","memInput","transferEvent","dataTransfer","allowedImageFileTypes","explode","file","filterByExtension","rate","beforeObject","afterObject","craftWithClasses","outline","craft","containerClasses","triggerTab","targetComp","isPseudoStop","dialogChannel","titleChannel","bodyChannel","footerChannel","bodySendMessageChannel","dialogFocusShiftedChannel","isSafariOrFirefox","isElementScrollAtBottom","scrollHeight","scrollToY","writeValue","iframeElement","fallbackFn","iframe","lastScrollTop","isScrollAtBottom","getScrollingElement","scrollAfterWrite","writeValueThrottler","newArgs","tempArgs","adaptable","internalToolbarButtonExecute","commonButtonDisplayEvent","toolbarButtonEventOrder","forceInitialSize","renderIcon$1","iconsProvider","renderIconFromPack$1","renderReplaceableIconFromPack","renderLabel$1","updateMenuText","updateMenuIcon","renderCommonDropdown","btnName","optMemDisplayText","optMemDisplayIcon","onLeftOrRightInMenu","dropdown","ariaLabelAttribute","fixWidthBehaviourName","customEventsName","memDropdown","searchable","searcherComp","focusSearchField","displayText","displayIcon","originalSandboxComp","optSearcherState","newSandboxComp","searcherState","restoreState","handleRefetchTrigger","getActiveMenuItemFrom","activeItem","retargetAndDispatchWith","handleRedirectToMenuItem","itemCompCausingCollapse","nowActiveMenuComp","isSeparator$2","separator$2","realItems","isMenuItemReference","unwrapReferences","isExpandingMenuItem","itemWithValue","generateValueIfRequired","newData","submenuItems","getFromExpandingItem","mainMenuSearchMode","searchSettings","getSearchModeForField","mainMenu","submenuSearchMode","getSearchModeForResults","submenus","isSingleListItem","dataAttribute","fetchItems","selectedValue","hasNestedItems","findItemByValue","HtmlSelect","initialValues","selectClasses","selectAttributes","selectBehaviours","firstOption","selectedIndex","schema$h","coupledPart","selfName","otherName","onLockedChange","parts$c","lockClass","FormCoupledInputs","coupledFieldBehaviours","field1Name","field1","field2Name","field2","getField1","getField2","getLock","parseSize","sizeText","convertUnit","inInch","supported","noSizeConversion","_input","baseInputBehaviours","multiline","validatingBehaviours","vl","inputmode","classname","pTextField","extraClasses2","flex","maximized","getAnimationRoot","slideConfig","getDimensionProperty","dimension","disableTransitions","shrinkingClass","growingClass","setShrunk","openClass","closedClass","setGrown","doImmediateShrink","slideState","_calculatedSize","setCollapsed","onStartShrink","onShrunk","doStartShrink","calculatedSize","doStartSmartShrink","doStartGrow","wasShrinking","beforeSize","fullSize","setExpanded","onStartGrow","isGrowing","_slideState","isShrinking","SlidingApis","isExpanded","grow","shrink","immediateShrink","hasGrown","hasShrunk","isTransitioning","toggleGrow","immediateGrow","onGrown","ActiveSliding","SlidingSchema","Sliding","getMenuButtonApi","setIcon","renderMenuButton","tabstopping","fetchContext","getFetch","getButton","getMenuItemAction","orig","getMenuItemSetup","renderLabel","renderCustomStateIcon","customStateIcon","renderIcon","customStateIconTooltip","leafLabelEventsId","renderLeafLabel","onLeafAction","treeId","selectedId","internalMenuButton","btn","isLeftArrowKey","code","isRightArrowKey","dirComp","dirLabelElement","extraAttributes","directoryLabelEventsId","renderDirectoryLabel","noChildren","toggleExpandChildren","directoryEle","directoryComp","willExpand","parentDirElement","parentDirLabelElement","renderDirectoryChildren","expandedIds","renderDirectory","labelTabstopping","directoryEventsId","expandedIdsCell","childrenVisible","includes","_cmp","childrenComp","treeEventsId","ActiveStreaming","streamConfig","streamState","stream","streams","cancelEvent","_config","setTimer","StreamingState","StreamingSchema","streamInfo","sInfo","throttler","onStream","stopEvent","Streaming","setValueFromItem","itemData","setCursorAtEnd","setSelectionOn","itemExecute","schema$g","parts$b","_tmenu","previewing","lazyTypeaheadComp","selectsOver","inputDisplay","getDisplayText","setSelectionToEnd","attemptSelectOver","selectOverTextInInput","populateFromBrowse","_menu","typeahead","Typeahead","navigateList","highlighter","focusBehaviours$1","getActiveMenu","typeaheadCustomEvents","responseTime","previousValue","pv","sandboxIsOpen","typeaheadComp","_typeaheadComp","onItemExecute","dismissOnBlur","typeaheadBehaviours","bindFuture","resA","bindResult","mapResult","foldResult","whenError","whenValue","withTimeout","errorThunk","timedOut","FutureResult","renderCommonSpec","actionOpt","domFinal","renderIconButtonSpec","calculateClassesFromButtonType","buttonType","renderButtonSpec","translatedText","optTooltip","renderButton$1","buttonSpec","renderFooterButton","isMenuFooterButtonSpec","menuButtonSpec","fixedSpec","isNormalFooterButtonSpec","isToggleButtonSpec","optMemIcon","memIcon","tooltipAttributes","buttonTypeClasses","showIconAndText","translatedTextComponed","iconButtonSpec","newIcon","renderToggleButton","separator$1","toMenuItem","staticMenuItem","filteredTargets","toMenuItems","filterLinkTargets","headerTargets","linkInfo","anchorTargets","anchorTargetTop","anchorTop","anchorTargetBottom","anchorBottom","filterByQuery","lowerCaseTerm","make$2","getCompByName","factories","interpreter","renderBar","collection","alertbanner","iconTooltip","renderAlertBanner","renderInput","textarea","renderTextarea","backstageShared","baseClass","centerClass","endClass","for","labelComp","renderLabel$2","opaqueClass","transparent","containerBorderedClass","srcdoc","sandboxed","sourcing","cachedValue","_frameComponent","frameComponent","setSrcdocValue","getDynamicSource","streamContent","renderIFrame","iframeSpec","renderDialogButton","checkbox","toggleCheckboxHandler","memIcons","renderCheckbox","colorInputBackstage","inputValue","emitSwatchChange","colorBit","memColorButton","renderPanelButton","colorPicker","valueOpt","colorButton","_field","renderColorInput","colourPickerFactory","translate$1","errId","memPicker","picker","valOpt","renderColorPicker","dropzone","renderGrid","listbox","initialItem","sketchSpec","listBoxWrap","renderListBox","selectbox","translatedOptions","chevron","selectWrap","renderSelectBox","sizeinput","converter","ratioEvent","translatedLabel","pLock","formGroup","getFieldPart","isField1","widthField","heightField","_lock","unitDec","numText","formatSize","optCurrent","optOther","value1","value2","currentFieldText","otherFieldText","cValue","oValue","cSize","oSize","ratioSizeConversion","makeRatioConverter","renderSizeInput","renderSlider","urlinput","urlBackstage","updateHistory","urlEntry","addToHistory","filetype","typeaheadSpec","fileType","urlInputValue","getLinkInformation","history","historyTargets","getHistory","getItems","memUrlBox","_newValue","getValidationHandler","invalidComp","completer","trimmedValue","_entry","memStatus","optUrlPicker","getUrlPicker","browseUrlEvent","memUrlPickerButton","picker_text","componentData","urlData","fieldname","chosenData","renderUrlInput","customeditor","editorApi","memReplaced","focusBehaviour","onFocusFn","ta","scriptId","ea","cvalue","ed","htmlpanel","stretched","renderHtmlPanel","imagepreview","cachedData","memImage","memContainer","fakeValidatedData","zoom","cachedWidth","cachedHeight","translatedData","z","applyFramePositioning","panel","panelW","panelH","zoomToFit","imageWidth","imageHeight","calculateImagePosition","imageComponent","img","image","loaded","naturalWidth","naturalHeight","renderImagePreview","renderTd","renderTable","tree","onToggleExpand","defaultExpandedIds","selectedIdCell","defaultSelectedId","renderTree","renderPanel","noFormParts","interpretInForm","oldBackstage","newBackstage","interpretParts","interpretWithoutForm","westEdgeX","middleX","eastEdgeX","northY","southY","centreY","lookupPreserveLayout","preserve","lookupFlippedLayout","flip","bubbleAlignments$2","valignCentre","alignCentre","alignLeft","alignRight","getInlineDialogAnchor","contentAreaElement","lazyAnchorbar","lazyUseEditableAreaAnchor","getInlineBottomDialogAnchor","lazyBottomAnchorBar","getBannerAnchor","getCursorAnchor","bodyElement","selectionTableCellRange","getNodeAnchor$1","getAnchors","isToolbarTop","useFixedToolbarContainer","inlineDialog","inlineBottomDialog","isNestedFormat","isFormatReference","defaultStyleFormats","mapFormats","userFormats","fmt","customFormats","isBlockFormat","isSelectorFormat","formatNameWithPrefix","getStyleFormats","registeredUserFormats","registerFormats","registerCustomFormats","processBasic","isSelectedFor","getPreviewFor","getStylePreview","register$b","doEnrich","newItems","getStyleItems","enrichMenu","enrichSupported","isSeparator$1","newItem","enrichCustom","TooltipsBackstage","numActiveTooltips","tooltipDelay","hasContentEditableState","isContentEditableTrue","getElementText","isValidAnchor","isAnchor","isHeader","isChildOfContentEditableTrue","isValidHeader","headerTarget","headerId","getOrGenerateId","getLevel","anchorTarget","anchorId","anchorText","hasTitle","LinkTargets","getTargetElements","getHeaderTargets","getAnchorTargets","STORAGE_KEY","isHttpUrl","isRecordOfUrlArray","getAllHistory","unparsedHistory","SyntaxError","itemsWithoutUrl","setAllHistory","isTruthy","makeMap","getPicker","getTextSetting","UrlInputBackstage","pickerTypes","optFileTypes","_picker","types","getPickerTypes","getPickerSetting","parts$a","partType","schema$f","itemsPart","parts$9","CustomList","_external","listBehaviours","setItems","itemComps","numListsRequired","numListsToAdd","itemsToAdd","makeItem","itemsToRemove","builtLists","setupItem","schema$e","parts$8","Toolbar","toolbarBehaviours","setGroups","setup$a","isDocked$1","getBehaviours$1","StaticHeader","getBehaviours","toolbarHeightChange","visibility","editorStickyOnClass","editorStickyOffClass","isDockedMode","updateIframeContentFlow","parentElem","parentWidth","getOccupiedHeight","updateSinkVisibility","sinkElem","updateEditorClasses","editorContainer","focusedElm","runOnSinkElement","onDockingSwitch","additionalBehaviours","headerHeight","boxHeight","topBound","constrainedBounds","constrainedBoundsY","headerElem","focusedElem","ownerDoc","activeElm","restoreFocus","rootElm","findFocusedElem","boundsWithoutOffset","getDockingMode","StickyHeader","lazyHeader","containerHeader","viewHeight","scrollPos","markerElement","markerPos","markerHeight","markerTop","markerBottom","editorHeaderPos","editorHeaderHeight","editorHeaderTop","editorHeaderBottom","editorHeaderDockedAtTop","editorHeaderDockedAtBottom","scrollFromBehindHeader","groupToolbarButtonSchema","baseMenuButtonFields","MenuButtonSchema","createMenuButton","splitButtonSchema","SilverMenubar","setMenus","newMenus","internal","activeButton","hoveredButton","activeComp","hoveredComp","schema$d","getPartName","make$1","getSlotNames","onSlot","def","slot","doShowing","hideSlot","hideSlots","onSlots","showSlot","getSlot","hideAllSlots","slotBehaviours","SlotContainer","sSpec","sidebarSchema","makePanels","panelConfigs","bridged","createSidebar","sidepanel","optSidePanelSpec","sidePanelSpec","makeSidebar","slotContainer","updateSidebarRoleOnToggle","sidebar","sidebarState","whichSidebar","fixSize","autoSize","BlockingApis","getBusySpec","blockerBehaviours","blockSpec","isBlocked","onBlock","blockWith","onUnblock","blockingConfig","blockingState","BlockingSchema","Blocking","focusBusyComponent","throbber","setup$7","lazyThrobber","throbberState","stealFocus","isFocusEvent","editorManager","tabIndexAttr","dataTabIndexAttr","tabIndex","toggleEditorTabIndex","_root","_behaviours","getBusySpec$1","throbberFocus","busyComp","toggleThrobber","fireAfterProgressState","within","withinWidth","apportion","parray","toUnit","setGroups$1","storedGroups","bGroups","refresh$2","setOverflow","builtGroups","overflowGroup","focusedComp","overflows","overflower","divide","tryFit","fitLast","fitAll","schema$c","schema$b","parts$7","expandable","setMax","schema$a","parts$6","toggledClass","shouldSkipFocus","toolbarSandbox","bounder","FloatingToolbarButton","skipFocus","makeSandbox","toggleWithoutFocusing","schema$9","parts$5","ToolbarGroup","tgroupBehaviours","itemSelector","buildGroups","refresh$1","memFloatingToolbarButton","overflowGroups","floatingToolbarButton","SplitFloatingToolbar","getOverflowBounds","overflowToggledClass","splitToolbarBehaviours","getOverflow","schema$8","parts$4","onClosed","onOpened","toggleToolbar","oveflowButton","overf","SplitSlidingToolbar","toolbarToggleEvent","_button","doSetGroups","renderToolbarGroupCommon","toolbarGroup","renderToolbarGroup","getToolbarBehaviours","toolbarSpec","modeName","onAttached","initGroups","renderMoreToolbarCommon","cyclicKeying","renderFloatingMoreToolbar","baseSpec","moreDrawerData","headerBounds","docElem","docBounds","overflowXOffset","renderSlidingMoreToolbar","renderToolbar","scrolling","baseButtonFields","schemaWithoutGroupButton","togglebutton","groupFields","viewButtonSchema","viewSchema","renderViewButton","isToggleButton","optTranslatedText","optTranslatedTextComponed","ariaLabelAttributes","optIconSpec","hasIconAndText","renderButton","deviceDetection","View","hasGroups","endButtons","btnspec","renderButtonsGroup","getPane","getOnShow","_comp","viewConfig","getOnHide","makeViews","viewConfigs","internalViewConfig","pane","makeSlotContainer","getCurrentName","runOnPaneWithInstanceApi","onCallback","ViewWrapper","setViews","whichView","toggleView","showMainView","hideMainView","optCurrentSlotName","isTogglingCurrentView","hideContainer","showContainer","runOnShow","prevName","runOnHide","views","editorCont","partMenubar","partMultipleToolbar","_mToolbar","tc","partToolbar","renderer","sliding","floating","toolbarFactory","onToolbarToggled","lazyToolbar","lazyMoreButton","partHeader","sticky","partPromotion","partSocket","partSidebar","partThrobber","partViewWrapper","partEditorContainer","OuterContainer","toolbarDrawerOpenState","toggleStatusbar","statusBar","getSocket","setSidebar","showSidebar","configKey","toggleSidebar","getHeader","setToolbar","renderedGroups","setToolbars","mToolbar","renderedToolbars","refreshToolbar","toggleToolbarDrawer","toggleToolbarDrawerWithoutFocusing","isToolbarDrawerToggled","getThrobber","focusToolbar","setMenubar","menubar","focusMenubar","defaultMenus","edit","tools","help","parseItemsString","identifyMenus","rawMenuData","userDefinedMenus","validMenus","isDefaultMenu","menuData","removedMenuItems","itemName","removedMenuItem","loadStylesheet","stylesheetUrl","styleSheetLoader","unload","loadRawCss","unloadRawCss","loadUiSkins","async","skinUiCss","loadShadowDomUiSkins","shadowDomSkinCss","loadSkin","unbundled","skinResourceIdentifier","contentCSS","skinContentCss","loadUrlSkin","_skinLoaded","fireSkinLoaded$1","fireSkinLoaded","fireSkinLoadError$1","fireSkinLoadError","makeTooltipText","labelWithPlaceholder","generateSelectItems","generateItem","si","validateItems","preItems","getCurrentValue","shouldHide","createMenuItems","createSelectButton","textUpdateEventName","getComponent","Delimiter","buildBasicSettingsDataset","settingName","delimiter","rawFormats","SemiColon","getTooltipPlaceholder$4","fallbackAlignment","alignMenuItems","getSpec$4","_format","alignment","fireAlignTextUpdate","canApply","findNearest","getStyles","getTooltipPlaceholder$3","fallbackFormat","getSpec$3","parseStyle","getCssText","fireBlocksTextUpdate","getTooltipPlaceholder$2","systemFont","systemStackFonts","splitFonts","fontFamily","fonts","font","matchesStack","getSpec$2","getMatchingValue","getFirstFont","userStack","matchOpt","isSystemFontStack","fireFontFamilyTextUpdate","Keys","tab","enter","backspace","delete","space","home","pageUp","pageDown","getTooltipPlaceholder$1","fallbackFontSize","legacyFontSizes","keywordFontSizes","toPt","fontSize","precision","factor","toLegacy","getSpec$1","pt","legacy","Space","fireFontSizeTextUpdate","getTooltipPlaceholder","getSpec","getFormatItems","flattenedItems","tooltipLabel","fireStylesTextUpdate","schema$7","arrowPart","arrow","buttonPart","splitDropdown","parts$3","SplitDropdown","executeOnButton","buttonEvents","splitDropdownBehaviours","getButtonApi","getToggleApi","getTooltipAttributes","focusButtonEvent","renderCommonStructure","optIcon","optText","renderCommonToolbarButton","specialisation","_d","itemApi","toolbarButtonBehaviours","renderToolbarButtonWith","bonusEvents","renderToolbarToggleButtonWith","fetchChoices","defaultToolbar","renderFromBridge","bridgeBuilder","renderToolbarButton","renderToolbarToggleButton","menubutton","splitbutton","buttonComp","_c","renderSplitButton","grouptoolbarbutton","getAll","TopToBottom","identifyButtons","renderFloatingToolbarButton","allowToolbarGroups","bespokeButtons","fontsize","fontsizeinput","currentComp","updateInputValue","customEvents","fromInput","focusBack","alloyComp","getNewValue","lenghtDelta","oldStart","oldEnd","decrease","increase","goToParent","focusInput","makeStepperButton","editorOffCellStepButton","altExecuting","memMinus","memPlus","buttonNode","wrapperComp","createBespokeNumberInput","skip_focus","parsedText","defaultUnit","em","cm","in","rem","getConfigFromUnit","isValidValue","fireFontSizeInputTextUpdate","getNumberInputSpec","fontfamily","blocks","toolbarConfig","prefixes","toolbarGroups","filteredItemGroups","subItem","removeUnusedDefaults","strToolbar","groupsStrings","convertStringToolbar","isToolbarGroupSettingArray","createToolbar","toolbarItem","extractFrom","lookupButton","rawUiConfig","toolbarButtonsConfig","detection","isiOS12","Iframe","lastToolbarWidth","eTargetNode","uiRoot","popupUi","dialogUi","attachUiMotherships","innerWidth","initialDocEle","lastWindowDimensions","lastDocumentDimensions","resizeWindow","outer","resizeDocument","fireScrollContent","elementLoad","setupEvents$1","socket","limit","unbinder","fireToggleSidebar","fireToggleView","toolbarMode","iframeContainer","parseToInt","numToPx","calcCappedSize","minSize","maxSize","minOverride","maxOverride","baseWidth","InlineHeader","floatContainer","isSticky","editorMaxWidthOpt","headerBackstage","isSplitToolbar","calcToolbarOffset","tbar","repositionPopups$1","stickyAction","prevScroll","isOuterContainerWidthRestored","currentScroll","optScroll","targetBounds","getOffsetParent$1","widthProperties","toolbarWidth","availableWidth","baseProperties","topValue","updateChromePosition","doUpdateMode","currentMode","newMode","toolbarHeight","docHeight","calcMode","setDockingMode","verticalDir","removeClass","updateMode","getTargetPosAndBounds","Inline","toolbarPersist","uiContainer","prevPosAndBounds","resizeContent","prevPos","prevBounds","hasResized","lastScrollX","updateUi","newScrollX","_args","setupEvents","hideContextToolbarEvent","runOnExecute","formApi","getFormApi","ContextForm","commands","findPrimary","mementos","renderContextToggleButton","renderContextButton","asSpecs","compInSystem","isVerticalOverlap","threshold","getSelectionBounds","leaf$1","getRangeRect","bodyPos","getContextToolbarBounds","toolbarType","viewportBounds","contentAreaBox","toolbarOrMenubarEnabled","getHorizontalBounds","isToolbarLocationTop","headerBox","isToolbarBelowContentArea","isToolbarAbove","containerBounds","getVerticalBounds","bubbleAlignments$1","inset","shouldUseInsetLayouts","determineInsetLayout","contextbar","selectionBounds","isSameAnchorElement","lastElement","isEntireElementSelected","currentPosition","isReposition","preservePosition","getAnchorSpec$2","mobile","smartInsetLayout","getInsetLayouts","matchTargetWith","ctxs","toolbarApi","contextToolbars","contextForms","categorise","forms","inNodeScope","inEditorScope","formNavigators","contextForm","launch","registerForm","contextToolbar","registerToolbar","forwardSlideEvent","backSlideEvent","changeSlideEvent","resizingClass","register$a","registryContextToolbars","lastTrigger","lastContextPosition","newContents","oldContents","forwardContents","renderContextToolbar","canLaunchToolbar","isContextMenuOpen","shouldContextToolbarHide","contextToolbarBounds","anchorBounds","getAnchorElementBounds","hideOrRepositionIfNecessary","contextBarEle","wrapInPopDialog","shortcuts","getScopes","alloySpec","buildToolbar","allButtons","buildContextToolbarGroups","buildContextFormGroups","launchContext","launchContextToolbar","anchorLayout","getAnchorLayout","isSameLaunchElement","isDragging","rootElem","isOutsideRoot","nodeCandidates","editorCandidates","nodeMatches","editorMatches","doesPositionExist","filterToolbarsByPosition","hasSelectionToolbars","hasNodeToolbars","nodeToolbars","selectionToolbars","filterByPositionForStartNode","matchStartNode","ancestorElem","findPosition","filterByPositionForAncestorNode","matchAncestor","lookup$1","toolbarKey","registerController","getMenuItems","getOptions","oldApi","unbindWatcher","watcher","setCurrent","addMenuButton","onToolbarSetup","onMenuSetup","register$8","normalise","lineHeightSpec","customCode","customValue","lang","languageSpec","onSetupOutdentState","makeSetupHandler","pasteAsText","pastePlainTextToggleHandler","onActionToggleFormat","_idx","registerFormatButtons","registerCommandButtons","registerCommandToggleButtons","registerButtons$1","registerMenuItems$2","onSetupUndoRedoState","onSetupVisualAidState","hasVisual","setup$6","register$9","createAlignMenu","createFontFamilyMenu","createStylesMenu","createBlocksMenu","createFontSizeMenu","register$7","registerMenuItems$1","registerButtons","applyFormat","removeFormat","fallbackColorForeground","fallbackColorBackground","lastForeColor","lastBackColor","register$d","registerToolbarButton","addToggleMenuItem","registerMenuItems","registerButtons$2","register$5","register$4","addContext","register$6","patchPipeConfig","shouldNeverUseNative","getAvoidOverlapSelector","getContextMenu","contextMenus","contextMenu","isTouchEvent$1","getPointAnchor","pageX","pageY","fromPageXY","containerPos","getPos","transpose","transposeContentAreaContainer","fromClientXY","getSelectionAnchor","getAnchorSpec$1","anchorType","getNodeAnchor","initAndShow$1","buildMenu","contextmenu","anchorSpec","bubbleAlignments","initAndShow","highlightImmediately","getAnchorSpec","openiOS","originalSelection","selectionReset","unbindEventListeners","preventMousedown","clearSelectionReset","setupiOSOverrides","rngRect","isTouchWithinSelection","makeContextItem","commonMenuItem","commonItem","addContextMenuGroup","groupItems","isTriggeredByKeyboard","isTouchEvent","pointerType","getSelectedElement","setup$5","setContextMenuState","hideContextMenu","showContextMenu","isNativeOverrideKeyEvent","isContextMenuDisabled","getAnchorType","selectedElement","sections","allItems","generateContextMenu","hideEvents","subtract","changes","asFixed","coord","asAbsolute","asOffset","toStyles","stylesOpt","absorb","partialCoord","originalCoord","absorbOne","stencil","optX","optY","parseAttrToInt","NaN","moveOrSnap","snapInfo","newCoord","snapsInfo","leftAttr","topAttr","getCoords","mustSnap","findClosestSnap","findSnap","fixedCoord","spanned","findMatchingSnap","snaps","sensor","inRange","coord1","coord2","withinRange","getSnapPoints","bestSnap","getDeltas","bestDeltas","DraggingApis","snapTo","dragConfig","getTarget","repositionTarget","snapPin","snapTo$1","initialAttribute","instigate","anyComponent","zindex","changeZIndex","discard","zIndex","resetZIndex","createComponent","blockerClass","blockerEvents","SnapSchema","schema$6","getCurrentCoord","lift3","oc","calcStartData","dragMode","dragStartData","getStartData","dlt","currentCoord","optSnaps","coords","absoluteCoord","newCoords","offset$1","clampCoords","translated","deltaX","deltaY","snapping","onSensor","calcNewCoord","onDrag","dragBy","stopDrag","onDrop","updateStartState","setStartData","MouseData","events$3","stop$1","init$3","schema$5","TouchData","getDataFrom","events$2","blockerSingleton","stopBlocking","init$2","mouseOrTouch","DraggingBranches","DragState","dragEvent","nuData","calculateDelta","Dragging","dragger","calcSnap","selectorOpt","snapWidth","selectorHandle","sensorLeft","sensorTop","getSnapsConfig","currentTd","isSameCell","createSelector","setup$4","tlTds","brTds","getTopLeftSnap","memTopLeft","getBottomRightSnap","memBottomRight","topLeftSnaps","bottomRightSnaps","bottomRight","getSnapConfig","cellRect","viewportHeight","aboveViewport","belowViewport","isBelow","showOrHideHandle","snapTopLeft","snapBottomRight","domToSugar","renderElementPath","newPath","isPropagationStopped","updatePath","_btn","describedElement","describeElement","describeId","describedBy","renderElement","ResizeTypes","resizeType","originalHeight","originalWidth","Both","getDimensions","dim","keyboardHandler","renderStatusbar","getTextComponents","shouldRenderHelp","shouldRenderElementPath","shouldRenderRightContainer","shortcutText","renderHelpAccessibility","replaceCountText","words","characters","currentVal","wordCount","renderWordCount","renderRightContainer","flexStart","flexEnd","container3Columns","getTextComponentClasses","None","Vertical","getResizeType","resizeLabel","_target","renderResizeHandler","getLazyMothership","setup$3","setupForTheme","lazyUiRefs","getUiMotherships","optDialogMothership","optPopupMothership","dm","pm","lazyGetInOuterOrDie","LazyUiReferences","lazyMothership","lazyDialogMothership","lazyPopupMothership","deviceClasses","isToolbarBottom","memAnchorBar","memBottomAnchorBar","lazyAnchorBar","backstages","lazySinks","contextMenuState","HeaderBackstage","specContext","settingsFormats","eventsFormats","replaceSettings","enriched","modifications","fromSettings","fromEvents","init$6","ColorInputBackstage","dialogSettings","DialogBackstage","commonBackstage","popupBackstage","dialogBackstage","init$5","renderMainUi","verticalDirAttributes","fireToggleToolbarDrawer","hasMultipleToolbar","hasToolbar","hasMenubar","shouldHavePromotion","promotion","hasAnyContents","menubarCollection","makeHeaderPart","sidebarContainer","viewWrapper","statusbar","editorComponents","isHidden","setEditorSize","parsedHeight","baseHeight","getHeightWithFallback","parsedWidth","getWidthWithFallback","popups","getMothership","dialogs","renderUI","isGridUiContainer","sinkSpec","reactiveWidthSpec","renderDialogUi","getPopupSinkBounds","renderPopupUi","reuseDialogUiForPopuUi","toolbarGroupButtonConfig","addGroupToolbarButton","sidebars","toolbarOpt","addShortcut","channel","fireDismissPopups","onTouchstart","onTouchmove","onTouchend","onMousedown","onMouseup","onContentClick","onContentMouseup","onContentMousedown","loopEditor","relatedTarget","onWindowScroll","onWindowResize","onElementScroll","onEditorResize","onEditorProgress","onDismissPopups","gui","setup$b","handleToggle","setup$8","renderUIWithRefs","schema$2","basic","parts$2","dragBlockClass","getDragBounds","ModalDialog","dialogComp","modalEventsId","externalBlocker","blockerDom","getFooter","setIdle","setBusy","modalBehaviours","titleElm","labelledElement","labelElement","labelId","labelledBy","dialogToggleMenuItemSchema","dialogToggleMenuItemDataProcessor","baseFooterButtonFields","dialogFooterButtonFields","normalFooterButtonFields","menuFooterButtonFields","toggleButtonSpecFields","dialogFooterButtonSchema","submit","alertBannerFields","alertBannerSchema","buttonFields","buttonSchema","formComponentFields","formComponentWithLabelFields","checkboxFields","checkboxSchema","checkboxDataProcessor","collectionFields","collectionSchema","collectionDataProcessor","colorInputFields","colorInputSchema","colorInputDataProcessor","colorPickerSchema","colorPickerDataProcessor","customEditorFields","customEditorFieldsOld","customEditorSchema","customEditorDataProcessor","dropZoneFields","dropZoneSchema","dropZoneDataProcessor","createGridFields","itemsField","htmlPanelFields","htmlPanelSchema","iframeFields","iframeSchema","iframeDataProcessor","imagePreviewSchema","imagePreviewDataProcessor","inputFields","inputSchema","inputDataProcessor","createLabelFields","listBoxSingleItemFields","listBoxNestedItemFields","listBoxItemSchema","listBoxFields","listBoxSchema","listBoxDataProcessor","selectBoxFields","selectBoxSchema","selectBoxDataProcessor","sizeInputFields","sizeInputSchema","sizeInputDataProcessor","sliderFields","sliderSchema","sliderInputDataProcessor","tableFields","tableSchema","textAreaFields","textAreaSchema","textAreaDataProcessor","baseTreeItemFields","treeItemLeafSchema","treeItemDirectoryFields","treeItemDirectorySchema","treeItemSchema","treeFields","treeSchema","urlInputFields","urlInputSchema","urlInputDataProcessor","createItemsField","itemSchema","sErr","passValue","panelSchema","panelFields","tabFields","tabPanelFields","tabPanelSchema","dialogButtonFields","dialogButtonSchema","dialogSchema","tabpanel","urlDialogButtonSchema","urlDialogSchema","getAllObjects","isNamedItem","dataProcessors","togglemenuitem","createDataValidator","namedItems","getNamedItems","getDataProcessor","internalDialog","dataValidator","DialogManager","openUrl","ActiveReflecting","reflectingConfig","reflectingState","renderComponents","newComponents","rawData","ReflectingApis","reflectState","ReflectingSchema","Reflecting","toValidValues","renderBodyPanel","memForm","formValue","TabButton","tabButtonBehaviours","schema$1","tabsPart","barDetail","dismissTab$1","tabbar","changeTab$1","clickToDismiss","tabClass","parts$1","Tabbar","tabbarBehaviours","selectedClass","Tabview","tabviewBehaviours","barPart","viewPart","TabSection","changeTabBy","byPred","tabSectionBehaviours","selectFirst","tabValue","tabview","tabData","onChangeTab","onDismissTab","getViewItems","showTab","tabKey","setTabviewHeight","updateTabviewHeight","dialogBody","maxTabHeight","tablist","documentElement$1","tabviewHeight","currentTabHeight","dialogTopMargin","dialogBottomMargin","getMaxTabviewHeight","getTabview","SendDataToSectionChannel","SendDataToViewChannel","renderTabPanel","storedValue","updateDataWithForm","formData","validData","setDataOnForm","oldTab","allTabs","tabMode","extraEvents","tabviewComp","_tab","measureHeights","maxTabHeightOpt","oldHeight","smartMode","_viewItems","oldName","tsection","renderBody","dialogId","contentId","ariaAttrs","incoming","isTabPanel","hiddenHeader","pClose","pUntitled","pBodyMessage","pFooter","footer","pFooterGroup","startButtons","renderDialog$1","dialogClass","blockerBackdropClass","scrollLockClass","extraStyles","dialogEvents","renderClose","renderTitle","titleId","renderDragHandle","pTitle","pHandle","draghandle","draggable","renderModalHeader","bs","getEventExtras","lazyDialog","closeWindow","blockEvent","fullscreenClass","largeDialogClass","mediumDialogClass","getDialogSizeClass","updateDialogSizeClass","dialogSizeClass","toggleFullscreen","currentSize","currentSizeClass","toggle$5","toggle$4","toggle$3","renderModalDialog","mapMenuButtons","menuItemStates","mapItems","extractCellsToObject","innerAcc","initCommonEvents","fireApiEvent","self","initDialog","getInstanceApi","withSpec","currentDialogInit","rootNode","cur","oldTabName","footerButtons","buttonGroups","makeGroup","renderFooter","initSpec","makeButton","lookupByName","buttonName","renderModalFooter","getFormWrapper","footerState","getDialogApi","doRedial","withRoot","instanceApi","valueComp","prevData","mergedData","newInternalData","dialogState","validateData$1","tabSection","getId","dialogInit","storedMenuButtons","renderInlineDialog","refreshDocking","dialogLabelId","dialogContentId","dialogSize","memHeader","renderInlineHeader","memBody","renderInlineBody","modalAccess","storagedMenuButtons","objOfCells","optMemFooter","renderInlineFooter","memFooter","SUPPORTED_MESSAGE_ACTIONS","isSupportedMessage","mceAction","renderUrlDialog","bodySpec","renderIframeBody","currentDialog","initUrlDialog","iframeUri","base_uri","iframeDomain","protocol","port","messageHandlerUnbinder","isSameOrigin","handleMessage","isCustomMessage","onMessage","iframeEle","iframeWin","postMessage","sendMessage","getUrlDialogApi","validateData","isAlertOrConfirmDialog","inlineAdditionalBehaviours","isStickyToolbar$1","alertDialog","closeDialog","memFooterClose","titleSpec","closeSpec","footerCloseButton","confirmDialog","memFooterYes","footerNo","footerYesButton","openModalDialog","internalInitialData","dialogSizeClasses","renderModalBody","outerForm","renderDialog","openInlineDialog","config$1","windowParams","inlineDialogComp","persistent","openBottomInlineDialog","contentAreaContainer","openModalUrlDialog","confirm","registerOptions","colorProcessor","fromString$1","canvasContext","clearRect","getImageData","anyToHex","colorColsProcessor","register$e","popupSinkBounds","renderModeUI","windowMgr","renderResult","getWindowManagerImpl","getNotificationManagerImpl","typeOf$1","eqString","eqArray","eqa","eqRecord","kx","ky","compareFn","contramap","eqSortedArray","q","eqAny","tx","isEquatableType","is$4","isArray$1","compose1","map$3","each$e","partition$2","filter$5","findUntil$1","findIndex$2","unique$1","hasOwnProperty$1","each$d","filter$4","stringArray","isArrayLike","each$c","filter$3","reduce","iteratee","accumulator","trim$4","lTrim","rTrim","isEmpty$3","toInt","radix","platform$4","platform$3","browser$3","os$1","windowsPhone","Env","transparentSrc","documentMode","cacheSuffix","canHaveCSP","whiteSpaceRegExp$1","trim$3","walk$4","delim","resolvedItems","inArray","hasOwn","exts","ext","walk","_addCacheSuffix","isHTMLElement$1","isElement$7","isText$c","isDocument$2","isDocumentFragment$1","set$3","remove$9","clone$4","read$4","fromDom$2","recurse","parents$1","prevSiblings","nextSiblings","childNodesCount","getStyleContainer","getHead","ancestor$4","descendant$2","isEditable$2","intoView","alignToTop","scrollIntoViewIfNeeded","DomTreeWalker","findSibling","findPreviousNode","startName","siblingName","zeroWidth","nbsp","isZwsp$2","whiteSpaceRegExp","isWhitespaceText","isNewLineChar","normalize$4","tabSpaces","isStartOfContent","isEndOfContent","tabSpace","normalizedText","isCollapsibleWhitespace$1","pcIsSpace","isNewline","isNodeType","isRestrictedNode","isElement$6","lowerCasedName","lowerCasedNames","matchStyleValues","isBogus$1","isTable$2","isTextareaOrInput","isText$b","isCData","isPi","isDocument$1","isBr$6","isImg","isContentEditableTrue$3","isContentEditableFalse$b","isTableCell$3","isTableCellOrCaption","isMedia$2","isListItem$2","isDetails","isSummary$1","defaultOptionValues","skipBogus","includeZwsp","isBookmark","isText$a","rootElement","whitespaceElements","getWhitespaceElements","hasWhitespacePreserveParent","isWhitespace$1","isZwsp$1","isContentNode","isContent","isNonEmptyElement$1","isNamedAnchor","hasNonEditableParent","isEmptyNode","opts","brCount","bogusValue","isContent$1","repeatable","intervalId","functionToRepeat","nodeNameToNamespaceType","lowerCaseName","isNonHtmlElementRootName","isNonHtmlElementRoot","toScopeType","namespaceElements","transparentBlockAttr","makeSelectorFromSchemaMap","elementNames","escapedName","CSS","updateTransparent","blocksSelector","updateBlockStateOnChildren","transparentSelector","getTransparentElements","trimEdge","leftSide","childPropertyName","splitInvalidChildren","transparentBlocks","blocksElements","transparentBlock","invalidChildren","stateScope","parentElm","splitElm","beforeFragment","afterFragment","split$2","updateChildren","isTransparentBlock","isTransparentInline","unwrapInvalidChildren","updateElement","isTransparentElement","hasBlockAttr","isTransparentElementName","isTransparentAstBlock","browser$2","firstElement","hasChild","StyleSheetLoader","documentOrShadowRoot","idCount","loadedStates","edos","addStyle","removeStyle","styleContainer","getOrCreateState","passed","failed","urlWithSuffix","onload","onerror","linkElem","contentCssCors","referrerPolicy","styleElem","loadAll","urls","allSettled","reason","unloadAll","_setReferrerPolicy","_setContentCssCors","WeakMap","forElement","referenceElement","rootDom","sl","create$c","isInlineContent","isBookmarkNode$2","isSpan","trimNode","isKeepElement","prevIsInline","nextIsInline","surroundedByInlineContent","isKeepTextNode","makeMap$3","attrsCharsRegExp","textCharsRegExp","rawCharsRegExp","entityRegExp","asciiMap","baseEntities","reverseEntities","buildEntitiesLookup","itemList","chr","entity","namedEntities","encodeRaw","encodeNumeric","encodeNamed","entities","resolveEntities","Entities","getEncodeFunc","entitiesMap","nameMap","named","numeric","decode","nativeDecode","split$1","patternToRegExp","getGlobalAttributeSet","getElementSetsAsStrings","blockContent","phrasingContent","flowContent","getElementSets","toArr","cachedSets","getElementsPreset","parseValidChild","preset","mapCache","makeMap$2","each$b","extend$2","explode$2","createMap","defaultValue","extendWith","getTextRootBlockElements","compileElementMap","Schema","patternElements","customElementsMap","specialElements","createLookupTable","schemaType","schemaItems","globalAttributes","addElement","attributesOrder","childNames","ni","allAttributes","addAttrs","schemaItem","video","audio","script","makeSchema","verify_html","valid_elements","validStyles","valid_styles","invalidStyles","invalid_styles","validClasses","valid_classes","whitespaceElementsMap","selfClosingElementsMap","voidElementsMap","boolAttrMap","nonEmptyOrMoveCaretBeforeOnEnter","nonEmptyElementsMap","moveCaretBeforeOnEnterElementsMap","headings","textBlockElementsMap","blockElementsMap","textInlineElementsMap","transparentElementsMap","wrapBlockElementsMap","addValidElements","validElements","globalElement","hasPatternsRegExp","elementRuleRegExp","elementName","outputName","attrsPrefix","attrData","cloneAttributesInto","paddEmpty","removeEmpty","removeEmptyAttrs","targetElement","attrRuleRegExp","attrType","attrPrefix","attributesRequired","attributesDefault","attributesForced","forcedValue","validValues","attrPattern","attributePatterns","parseValidElementsAttrDataIntoElement","aliasName","parseValidElementsRules","patternElement","setValidElements","addCustomElement","text_block_elements","block_elements","extends","cloneName","customRule","helper","isRegExp$1","deepCloneElementRule","processAttrName","globalAttrs","padEmpty","customElementChildren","processNodeName","processPreset","elmName","addCustomElements","customElements","customElementRegExp","parseCustomElementsRules","addCustomElementsFromString","addValidChildren","validChildren","childRuleRegExp","prefixToOperation","validChild","parseValidChildrenRules","getElementRule","getValidStyles","getInvalidStyles","getValidClasses","getBoolAttrs","getTextInlineElements","getSelfClosingElements","getMoveCaretBeforeOnEnterElements","getWrapBlockElements","getSpecialElements","attrPatterns","getCustomElements","padd_empty_block_inline_children","paddInEmptyBlock","custom_elements","valid_children","extended_valid_elements","dd","dt","th","tfoot","legend","area","param","parentsRequired","invalid_elements","isWrapper","rgbaToHexString","Styles","urlOrStrRegExp","styleRegExp","trimRightRegExp","encodingLookup","invisibleChar","encodingItems","isEncoded","urlConverter","url_converter","urlConverterScope","url_converter_scope","compress","noJoin","canCompress","keepSlashes","decodeSingleHexSequence","escSeq","decodeHexSequences","processUrl","url2","url3","str2","allow_script_urls","allow_svg_data_urls","colorString","serializeStyles","elemName","validStyleList","styleList","styleMap","deprecated","keyLocation","layerX","layerY","returnValue","webkitMovementX","webkitMovementY","keyIdentifier","mozPressure","clone$3","originalEvent","getModifierState","keyArg","getTargetRanges","normalize$3","fallbackTarget","srcElement","initEvent","isNativeEvent","needsNormalizing","defaultPrevented","cancelBubble","isImmediatePropagationStopped","hasIsDefaultPrevented","mouseEventRe","addEvent","removeEvent","fix","isMouseEvent","eventDoc","bindOnReady","eventUtils","domLoaded","readyHandler","EventUtils","expando","hasFocusIn","callbackList","defaultNativeHandler","executeHandlers","namesList","nativeHandler","fakeName","eventMap","ci","newCallbackList","parentWindow","each$a","internalStyleName","numericalCssMap","legacySetAttribute","camelCaseToHyphens","findNodeIndex","normalized","lastNodeType","updateInternalStyleAttr","applyStyle$1","$elm","cssName","cssValue","normalizedName","convertStyleToString","DOMUtils","addedStyles","boundEvents","ownEvents","getElementById","_get","defaultVal","attrHooks","getAttribs","originalValue","onSetAttrib","attrElm","root_element","getPos$1","castOffsetParent","bodyTop","captionTop","captionHeight","getTableCaptionDeltaY","getSize","collect","resolvedRoot","selectorVal","_findSib","setHTML","keepChildren","$node","oldElm","rv","boundTarget","boundName","boundFunc","stdMode","boxModel","getViewPort","argWin","getPrev","outHtml","frag","update_styles","stylesArg","removeAllAttribs","removeAttributeNode","serializeStyle","styleElm","styleSheet","loadCSS","hasClass","uniqueId","getOuterHTML","setOuterHTML","reference","referenceNode","attrNode","findCommonAncestor","pe","replacementElm","getContentEditableParent","dumpRng","keepValues","keep_values","keepUrlHook","sugarElm","setupAttrHooks","DOM$b","ScriptLoader","states","queue","scriptLoadedCallbacks","queueLoadedCallbacks","loading","loadScript","cleanup","isDone","markDone","loadQueue","loadScripts","scripts","execCallbacks","processResults","failures","processQueue","nextQueuedItem","uniqueScripts","currentCode","getLanguageData","I18n","setCode","newCode","getCode","langData","lcNames","translation","firstIndex","getLangData","textStr","removeContext","isTokenised","$1","$2","hasCode","AddOnManager","_listeners","runListeners","matchedListeners","isLoaded","loadLanguagePack","languages","language","waitFor","isAdded","requireLangPack","languageLoad","addOn","createUrl","baseUrl","resource","addOnUrl","urlString","lastIndexOf","PluginManager","ThemeManager","ModelManager","first$1","annotation","dataAnnotation","dataAnnotationId","dataAnnotationActive","dataAnnotationClasses","dataAnnotationAttributes","isRoot$1","annotationName","an","newStart","findMarkers","isBogusElement","findAll","nodesAlready","random","shallow$1","deep$1","TextWalker","TextSeeker","isBlockBoundary","newOffset","forwards","lazyLookup","isBr$5","isTextBlock$2","isListItem$1","isTableSection","isTableCell$2","isWsPreserveElement","createPaddingBr","fillWithPaddingBr","ZWSP$1","trim$2","isElement$5","isText$9","isCaretContainerBlock$1","isCaretContainerInline","isCaretContainer$2","hasContent","isBeforeInline","isAtStart","isAfterInline","isAtEnd","startsWithCaretContainer$1","endsWithCaretContainer$1","showCaretContainerBlock","caretContainer","brs","lastBr","trimBogusBr","isRangeInCaretContainerBlock","round$2","isValidOverflow","rect1","rect2","isAbove$1","halfHeight","isBelow$1","distanceToRectEdgeFromXY","cx","cy","getSelectedNode","getNode$1","safeOffset","clamp$2","extendingChars","isExtendingChar","isContentEditableTrue$2","isContentEditableFalse$a","isBr$4","isText$8","isInvalidTextElement","isAtomicInline","isCaretContainer$1","isCaretCandidate$3","isNonUiContentEditableFalse","isUnselectable","isEditableCaretCandidate$1","isInEditable","isElement$4","isCaretCandidate$2","isBlock$2","isFloated","isValidElementCaretCandidate","isNotPre","isText$7","isBr$3","nodeIndex$1","resolveIndex$1","createRange$1","isWhiteSpace$1","isRange","isHiddenWhiteSpaceRange","isZeroRect","getBoundingClientRect$1","clientRect","clientRects","brNode","nbsp$1","getBrClientRect","ec","so","eo","getBoundingClientRectWebKitText","collapseAndInflateWidth","newClientRect","CaretPosition","caretPosition","addUniqueAndValidRect","addCharacterOffset","beforeNode","getCaretPositionClientRects","toRange","isEqual","fromRangeStart","fromRangeEnd","isAbove","pos1","pos2","isTextPosition","isElementPosition","trimEmptyTextNode$1","rangeInsertNode","insertNode","insertFragment","isText$6","isBogus","normalizedParent","equal","createPathItem","numTextFragments","normalizedNodeIndex","create$a","outputOffset","normalizedTextOffset","parentsUntil$1","resolvePathItem","nodeOffset","targetOffset","dataLen","findTextPosition","isContentEditableFalse$9","getPoint","trimmedOffset","getNormalizedTextOffset$1","moveEndPoint$1","normalizeTableCellSelection","getOffsetBookmark","findAdjacentContentEditableFalseElm","fakeCaret","isFakeCaret","getLocation","createBookmarkSpan","filled","getPersistentBookmark","rng2","endBookmarkNode","startBookmarkNode","keep","getUndoBookmark","isInlinePattern","isBlockPattern","normalizePattern","formatOrCmd","onFormat","onCommand","commandValue","getBlockPatterns","getInlinePatterns","filterByTrigger","blockPatterns","hasBlockTrigger","fromRawPatterns","deviceDetection$1","DOM$a","isRegExp","stringOrObjectProcessor","bodyOptionProcessor","bodyObj","getHash","getIframeAttrs","getDocType","getDocumentBaseUrl","getBodyId","getBodyClass","getContentSecurityPolicy","shouldPutBrInPre$1","getNewlineBehavior","getBrNewLineSelector","getNoNewLineSelector","shouldKeepStyles","shouldEndContainerOnEmptyBlock","isAutomaticUploadsEnabled","shouldReuseFileName","shouldReplaceBlobUris","getIconPackName","getIconsUrl","getImageUploadUrl","getImageUploadBasePath","getImagesUploadCredentials","getImagesUploadHandler","shouldUseContentCssCors","getReferrerPolicy","getLanguageCode","getLanguageUrl","shouldIndentUseMargin","getIndentation","getContentCss","getContentStyle","getFontCss","getDirectionality","getInlineBoundarySelector","getObjectResizing","getResizeImgProportional","getPlaceholder","getEventRoot","getServiceMessage","getTheme","getThemeUrl","getModel","getModelUrl","isInlineBoundariesEnabled","getFormats","getPreviewStyles","canFormatEmptyLines","getFormatNoneditableSelector","getCustomUiSelector","isInline$1","hasHiddenInput","shouldPatchSubmit","shouldAddFormSubmitTrigger","shouldAddUnloadTrigger","getCustomUndoRedoLevels","shouldDisableNodeChange","isReadOnly$1","hasEditableRoot$1","hasContentCssCors","getPlugins","getExternalPlugins$1","shouldBlockUnsupportedDrop","isVisualAidsEnabled","getVisualAidsTableClass","getVisualAidsAnchorClass","getIframeAriaText","getSetupCallback","getInitInstanceCallback","getUrlConverterCallback","getAutoFocus","shouldBrowserSpellcheck","getProtect","shouldPasteBlockDrop","shouldPasteDataImages","getPastePreProcess","getPastePostProcess","getNewDocumentContent","getPasteWebkitStyles","shouldPasteRemoveWebKitStyles","shouldPasteMergeFormats","isSmartPasteEnabled","isPasteAsTextEnabled","getPasteTabSpaces","shouldAllowHtmlDataUrls","getTextPatterns","getTextPatternsLookup","getNonEditableClass","getEditableClass","getNonEditableRegExps","shouldPreserveCData","shouldHighlightOnFocus","shouldSanitizeXss","shouldUseDocumentWrite","getAllowedImageFileTypes","hasTableTabNavigation","getDetailsInitialState","getDetailsSerializedState","shouldSandboxIframes","getSandboxIframesExclusions","shouldConvertUnsafeEmbeds","getLicenseKey","getApiKey","isElement$3","isText$5","removeNode$1","trimCount","trimmedText","deleteZwspChars","deleteData","removeUnchanged","removeAndReposition","removeTextAndReposition","removeTextCaretContainer","newPosition","indexOf$1","removeElementAndReposition","removeElementCaretContainer","caretContainerNode","isContentEditableFalse$8","isMedia$1","isTableCell$1","getAbsoluteClientRect","scrollX","scrollY","rootRect","FakeCaret","lastVisualCaret","cursorInterval","caretBlock","fakeCaretTargetNodes","trimInlineCaretContainers","caretState","textNode","insertInline$1","isInlineFakeCaretTarget","blockNode","insertBlock","getCss","isFakeCaretTableBrowser","isFakeCaretTarget","isContentEditableTrue$1","isContentEditableFalse$7","isMedia","isBlockLike","isCaretContainer","isCaretContainerBlock","isElement$2","isText$4","isCaretCandidate$1","isForwards","isBackwards","skipCaretContainers","findNode","predicateFn","isCefOrCaretContainer","getParentBlock$3","isInSameBlock","caretPosition1","caretPosition2","getChildNodeAtRelativeOffset","relativeOffset","beforeAfter","isNodesInSameBlock","node1","node2","lean","before$2","leanLeft","leanRight","getRelativeCefElm","getNormalizedRangeEndPoint","normalizedRange","getElementFromPosition","getVisualCaretPosition","isMoveInsideSameBlock","inSameBlock","HDirection","isContentEditableFalse$6","isText$3","isBr$2","isCaretCandidate","isAtomic","isAtomicContentEditableFalse","isEditableCaretCandidate","nodeAtIndex","getCaretCandidatePosition","findCaretPosition$1","startPos","innerNode","Forwards","moveForwardFromBr","rootContentEditableFalseElm","getParents$3","CaretWalker","Backwards","isBeforeOrStart","isAfterOrEnd","isBeforeAfterSameElement","fromPosition","shouldSkipPosition","navigateIgnore","ignoreFilter","positionIn","walkToPositionIn","nextPosition","prevPosition","firstPositionIn","lastPositionIn","CARET_ID","isCaretNode","getParentCaretContainer","isIndexBookmark","isPathBookmark","isForwardBookmark","addBogus","tryFindRangePosition","padEmptyCaretContainer","isEmpty$1","insertZwsp","setEndPoint","isValidTextNode","markerParent","otherMarker","appendData","getBookmark$2","getCaretBookmark","getRangeBookmark","getBookmark$3","resolvePaths","isStringPathBookmark","endPos","resolveCaretPositionBookmark","isIdBookmark","spos","epos","resolveId","resolveIndex","isRangeBookmark","isBookmarkNode$1","isNbsp","expected","isWhiteSpace","getRanges$1","getCellsFromElementOrRanges","getSelectedNodes","getCellsFromRanges","getCellsFromEditor","getSel","getClosestTable","getFirstChildren","getLastChildren","hasAllContentsSelected","getStartNode","getEndNode","moveEndPoint","hasAnyRanges","runOnRanges","fakeSelectionNodes","fakeNodeRng","fillBookmark","isNode","isElementNode$1","preserveSelection","shouldMoveStart","selectedNodeBeforeAction","isSelectedBeforeNodeNoneditable","moveStartToNearestText","selectedAttr","isElementDirectlySelected","isWhiteSpaceNode$1","getNonWhiteSpaceSibling","inc","nextName","isTextBlock$1","allowSpaces","isWrappableNoneditable","baseDataSelector","formatNoneditableSelector","isWrapNoneditableTarget","replaceVars","vars","isEq$5","str1","normalizeStyleValue","strValue","getTextDecoration","decoration","getParents$2","isFormatPredicate","isInlineFormat","shouldExpandToSelector","isCaretContainerEmpty","getEmptyCaretContainers","isEmptyCaretFormatElement","getParents$1","isWhiteSpaceNode","findParentContentEditable","walkText","findSpace","findContent","findWordEndPoint","includeTrailingSpaces","textOffset","findSelectorEndPoint","formatList","curFormat","findBlockEndPoint","scopeRoot","isAtBlockBoundary$1","findParentContainer","block_expand","isSelfOrParentBookmark","expandRng","includeTrailingSpace","walk$3","firstNode","collectSiblings","findEndPoint","walkBoundary","endPoint","validBlocks","applyAnnotation","masterUId","decorate","directAnnotation","otherData","attributeNames","makeAnnotation","eDoc","master","annotate","newWrappers","finishWrapper","processElements","processElement","wrapName","isZeroWidth","isAnnotation","processNodes","Annotator","getNames","create$b","dataAnnotation$1","identifyParserNode","removeDirectAnnotation","customAttrNames","customClasses","newClassList","setup$x","changeCallbacks","withCallbacks","updateCallbacks","callbackMap","outputData","toggleActiveAttr","onNodeChange","fireNoAnnotation","fireCallbacks","addListener","setup$y","removeAnnotations","initialRng","hasFakeSelection","masterUid","applyWordGrab","annotateWithBookmark","annotationChanged","removeAll","BookmarkManager","isXYWithinRange","containsXY","fireError","errorType","fireFormatApply","fireFormatRemove","fireSetContent","fireGetContent","fireAutocompleterUpdateActiveRange","firePastePlainTextToggle","VK","ESC","SPACEBAR","PAGE_UP","PAGE_DOWN","END","HOME","modifierPressed","altKey","metaKey","elementSelectionAttr","resizeHandles","nw","ne","sw","ControlSelection","editableDoc","rootDocument","selectedElm","selectedElmGhost","resizeHelper","selectedHandle","resizeBackdrop","startX","startY","resizeStarted","startScrollWidth","startScrollHeight","isImage","contextMenuSelectImage","isEventOnImageOutsideRange","getResizeTargets","setSizeProp","setGhostElmSize","ghostElm","resizeGhostElement","proportional","resizeHelperX","resizeHelperY","screenX","screenY","selectedElmX","selectedElmY","scrollWidth","endGhostResize","wasResizeStarted","showResizeRect","unbindResizeHandleEvents","targetWidth","targetHeight","hideResizeRect","handleElm","rowSelect","createGhostElement","throttledShowResizeRect","removeSelected","isChildOrEqual","updateResizeRect","composing","controlElm","disableGeckoResize","startElm","getStart$1","toNative","getDomRange","fromPoint$1","isEq$4","rng1","hasParent$1","findParent","hasParentWithName","isCeFalseCaretContainer","hasBrBeforeAfter","findTextNodeRelative","isAfterNode","lastInlineElement","parentBlockContainer","normalizeEndPoint","directionLeft","hasContentEditableFalseParent$1","isPrevNode","normalize$2","normRng","newContainer","RangeUtils","rangeLike","newRange","normalizedRng","compareRanges","getCaretRangeFromPoint","excludeFromDescend","markerInfo","cleanupFun","withMarker","preserveWith","_s","applyWithMarker","withScrollEvents","fireScrollIntoViewEvent","fireAfterScrollIntoViewEvent","createMarker$1","elementMarker","startElement","endElement","scrollToMarker","intoWindowIfNeeded","viewportBottom","largerThanViewport","intoWindow","intoFrame","frameViewHeight","op","rangeIntoWindow","elementIntoWindow","rangeIntoFrame","elementIntoFrame","scrollRangeIntoView","hasFocus$1","clamp$1","normalizeRng","isOrContains","isRngInRoot","nativeRangeToSelectionRange","bookmarkToNativeRng","newBookmark","shouldStore","FocusManager","isEditorUIElement","Delay","wrappedSetTimeout","setEditorInterval","wrappedSetInterval","documentFocusInHandler","DOM$9","isEditorContentAreaElement","isUIElement","customSelector","getActiveElement","registerEvents$1","throttledStore","mouseUpPage","registerPageMouseUp","registerMouseUp","selectionChange","isManualNodeChange","registerEditorEvents","toggleContentAreaOnFocus","focusedEditor","blurredEditor","activeEditor","unregisterDocumentEvents","normalizeSelection","getCollapsedNode","getFocusInElement","caretPos","focusBody","rawBody","hasInlineFocus","hasIframeFocus","hasEditorOrUiFocus","hasUiFocus","activateEditor","isEditableRange","getEndpointElement","real","skipEmptyTextNodes","processRanges","typeLookup","walk$2","isEmptyTextNode","isNonEmptyElement","AstNode","selfAttrs","cloneAttrs","selfAttr","whitespace","unescapedTextParents","containsZwsp","getTemporaryNodeSelector","tempAttrs","createZwspCommentWalker","createTreeWalker","FILTER_SKIP","createUnescapedZwspTextWalker","hasZwspComment","hasUnescapedZwspText","hasTemporaryNode","trimTemporaryNodes","getTemporaryNodes","emptyAllNodeValuesInWalker","curr","emptyZwspComments","emptyUnescapedZwspTexts","conditionalTrims","condition","trimmed","cloned","cleanupBogusElements","bogusElements","cleanupInputNames","inputs","getContentFromBody","getTempAttrs","getPlainTextContent","emptyRegExp","trimEmptyContents","makeMap$1","Writer","indent","indentBefore","indent_before","indentAfter","indent_after","entity_encoding","htmlOutput","element_format","cdata","comment","pi","HtmlSerializer","writer","sortedAttrs","elementRule","nonInheritableStyles","Set","conditionalNonInheritableStyles","shorthandStyleProps","getStyleProps","getStyles$1","hasNonInheritableStyles","isNonInheritableStyle","isChar","isBeforeSpace","isAfterSpace","isEmptyText","matchesElementPosition","isImageBlock","isCefNode","isBogusAll","isBeforeImageBlock","isAfterImageBlock","isBeforeMedia","isAfterMedia","isBeforeTable","isAfterTable","isBeforeContentEditableFalse","isAfterContentEditableFalse","parentsUntil","parentsAndSelf","navigateIgnoreEmptyTextNodes","getClosestBlock$1","isAtBeforeAfterBlockBoundary","fromBlock","isAtBlockBoundary","isAtStartOfBlock","isAtEndOfBlock","isBeforeBlock","isAfterBlock","isBr$1","isBeforeBr$1","isAfterBr","getElementFromPrevPosition","findPreviousBr","findNextBr","isInMiddleOfText","getClosestBlock","hasSpaceBefore","hasSpaceAfter","isInPre","isPreValue","isSiblingCefBlock","needsToHaveNbsp","isAtBeginningOfBody","isAtEndOfBody","isAtLineBoundary","needsToBeNbspLeft","isPrevCefBlock","isAfterCefBlock","needsToBeNbspRight","nextPos","isNextCefBlock","isBeforeCefBlock","needsToBeNbsp","isNbspAt","isWhiteSpaceAt","normalizeNbspAtStart","makeNbsp","firstPos","normalizeNbspAtEnd","lastPos","normalizeNbsps$1","hasNbsp","newText","normalizeNbspMiddle","normalizeNbspInMiddleOfTextNode","normalize$1","replaceData","normalizeWhitespaceAfter","whitespaceCount","normalizeWhitespaceBefore","mergeTextNodes","normalizeWhitespace","mergeToPrev","whitespaceOffset","newNode","removeNode","insertData","needsReposition","getPreviousSiblingCaretPosition","getNextSiblingCaretPosition","findCaretPosOutsideElmAfterDelete","findCaretPositionForwardsFromElm","findCaretPositionForward","findCaretPositionBackwardsFromElm","findCaretPositionBackwards","findCaretPosition","setSelection$1","deleteElement$2","moveCaret","preserveEmptyCaret","afterDeletePos","rawNode","normalizedAfterDeletePos","afterDeletePosOpt","prevTextOpt","nextTextOpt","deleteNormalized","isInlineElement","paddEmptyBlock","paddPos","strongRtl","isInlineTarget","hasStrongRtl","findRootInline","findInlineParents","normalizePosition","normalizeForwards","normalizeBackwards","execCommandIgnoreInputEvents","inputBlocker","execNativeDeleteCommand","execNativeForwardDeleteCommand","isTextBlockOrListItem","getParentBlock$2","isBeforeRoot","paddEmptyBody","moveSelection","no_selection","willDeleteLastPositionInElement","fromPos","normalizedFirstPos","normalizedLastPos","normalizedFromPos","deleteRangeContents","deleteContents","lastBlock","additionalCleanupNodes","getTableCells","getTable$1","tableCellRng","deleteAction","singleCellTable","fullTable","partialTable","multiTable","getClosestCell$1","isExpandedCellRng","cellRng","getTableFromCellRng","startParentTable","endParentTable","getTableSelectionFromCellRng","tableSelection","getTableSelections","selectionDetails","isSameTable","sameTableSelection","endCell","startTableSelection","getCellRangeFromStartTable","endTableSelection","getCellRangeFromEndTable","getCellIndex","unselectCells","endTable","otherContentRng","getActionFromRange","isRootFromElement","optCellRng","getCellRng","isStartInTable","isEndInTable","isStartTableParentOfEndTable","isEndTableParentOfStartTable","isMultiTable","selectionInTableWithNestedTable","getTableDetailsFromRange","isSingleCellTable","isSingleCellTableContentSelected","startTableSelectedCells","endTableSelectedCells","handleMultiTable","handleSingleTable","cleanCells","deleteContentInsideCell","isFirstCellInSelection","insideTableRng","deleteCellContents","collapseAndRestoreCellSelection","selectedNode","emptySingleTableCells","outsideDetails","editorRng","cellsToClean","outsideBlock","getOutsideBlock","startInTable","emptyBlock","handleEmptyBlock","endPointCell","emptyMultiTableCells","startTableCells","endTableCells","betweenRng","startTableCellsToClean","endTableCellsToClean","deleteTableElement","getParentCell","getParentCaption","emptyElement","isNearTable","deleteCaret$3","fromCell","deleteBetweenCells","deleteCaretCells","isBeforeOrAfterTable","fromCaption","isDeleteOfLastCharPos","emptyCaretCaption","toCaption","validateCaretCaption","deleteCaretInsideCaption","deleteCaretCaption","backspaceDelete$b","deleteCellRange","deleteCaptionRange","deleteTableRange","deleteRange$3","getContentEditableRoot$1","internalAttributesPrefixes","each$9","ElementUtils","internalAttributes","isAttributeInternal","attribs","compareObjects","obj1","obj2","isHeading","matchNode$1","nodeFilters","attributeFilters","nl","ai","runFilters","matchRecord","filteringAttributes","findMatchingNodes","paddEmptyNode","pad_empty_with_br","astNode","hasOnlyChild","nonEmptyElements","isPadded","findClosestEditingHost","editableNode","removeOrUnwrapInvalidNode","originalNodeParent","childNode","cleanInvalidNodes","onCreate","textBlockElements","nonSplittableElements","isSplittableElement","newParent","hasClosest","isSummary","newEndPos","normalizeBlockSelectionRange","isListFragment","hasOnlyOneChild$1","isPaddingNode","isPaddedEmptyBlock","isEmptyFragmentElement","trimListItems","isPadding","getParentLi","findLastOf","newCaretPos","insertAtCaret$1","domFragment","cleanupDomFragment","toDomFragment","liTarget","liElms","isAt","caretWalker","newPosNode","findFirstIn","insertBefore$2","insertAfter$2","beforeRng","afterRng","cloneContents","getSplit","insertMiddle","mergeableWrappedElements","isTableCell","insertHtmlAtCaret","bookmarkHtml","preserve_zwsp","caretElement","canHaveChildren","isTableCellContentSelected","deleteSelectedContent","parserArgs","isParentBlockLi","isPastingSingleElement","isWrappedElement","isPastingInTheSameBlockTag","isPastingInContentEditable","shouldPasteContentOnly","markFragmentElements","_selectionOverrides","showBlockCaretContainer","notHeadingsInSummary","markerNode","findMarkerNode","editingHost","toExtract","getNodeFilters","getAttributeFilters","validInsertion","textInlineElements","elementUtils","fragmentSelector","fragments","hasOneChild","isConditionalNonInheritableStyle","hasConditionalNonInheritableStyles","isOverridden","oldStyles","newStyles","overriddenByAllChildren","identicalToParent","conflictWithInsertedParent","nodeStyleProps","parentNodeStyleProps","valueMismatch","parentValue","nodeStyleProp","propExists","longhandProps","hasStyleConflict","reduceInlineTextElements","nextRng","parentEditableElm","isCell","isPartOfFragment","findNextCaretRng","moveSelectionToMarker","lastChildPrevSibling","trimBlockTrailingBr","trimBrsFromTableCell","caretParent","updateCaret","isTreeNode","setEditorHtml","noSelection","isEq$3","matchesUnInheritedFormatSelector","inherit","matchParents","similar","matchedNode","matchNode","matchName","matchItems","matchAttributes","onmatch","expectedValue","isEmptyValue","match$2","ZWSP","findFirstTextNode","createCaretContainer","fill","removeCaretContainerNode","trimZwspFromCaretContainer","removeCaretContainer","appendNode","insertFormatNodesIntoCaretContainer","formatNodes","innerMostFormatNode","formatNode","normalizeNbsps","normalizeNbspsBetween","isComposing","removeCaretFormat","hasContentAfter","expandedRng","parentsAfter","newCaretContainer","allBrs","getLastChildren$1","removeTrailingBr","insertCaretContainerNode","cleanedFormatNode","validFormats","matchedFormats","formatNames","matchSimilar","isVariableValue","fieldValues","isVariableFormatName","matchAllOnNode","fmtName","otherFormatName","filterObj","validKey","fmt1","filteredFmt1","fmt2","filteredFmt2","equal$1","areSimilarFormats","clonedFormatNode","cleanFormatNode","caretTextNode","createCaretFormat","innerMost","replaceWithCaretFormat","isFormatElement","inlineElements","postProcessHooks","isPre","preBlocks","pre","hasPreSibling","pre1","pre2","sPre2","joinPre","addPostProcessHook","listItemStyles","getExpandedListItemFormat","hasListStyles","isRngStartAtStartOfElement","isRngEndAtEndOfElement","isEditableListItem","getPartiallySelectedListItems","each$8","isElementNode","findElementSibling","mergeSiblingsNodes","isPrevEditable","isNextEditable","tmpSibling","mergeSiblings","merge_siblings","processChildElements","hasStyle","applyStyle","unwrapEmptySpan","removeResult","MCE_ATTR_RE","each$7","isEq$2","isChildOfInlineParent","lastIdx","normalizeTableSelection","isTableCellOrRow","wrapWithSiblings","rootBlockElm","forcedRootBlock","list_block","isMixedFormat","processFormatAttrOrStyle","removeEmptyStyleAttributeIfNeeded","compareNode","stylesModified","styleName","styleValue","normalizedStyleValue","remove_similar","removeNodeFormatInternal","ceFalseOverride","links","isColorFormatAndAnchor","preserveAttributes","preserve_attributes","attrsToPreserve","valueOut","removeNodeFormatFromClone","newName","removeFormat$1","splitToFormatRoot","formatRoot","findFormatRoot","lastClone","firstClone","formatRootParent","mixed","wrapAndSplit","removeFormatOnNode","removeNodeFormat","currentNodeMatches","textDecoration","isRemoveBookmarkNode","removeRngStyle","liFmt","removeListStyleFormats","removeFormatInternal","each$6","each$5","applyStyles","styleVal","applyFormatAction","setElementFormat","onformat","applyNodeStyle","found","createWrapElement","wrapElm","applyRngStyle","nodeSpecific","currentWrapElm","lastContentEditable","isWrappableNoneditableElm","contentEditableValue","isEditableDescendant","validBRParentElements","hasCaretNodeSibling","canFormatBR","isWrappingBlockFormat","isMatchingWrappingBlock","isValidBlockFormatForNode","isNonWrappingBlockFormat","canRenameBlock","isValidWrapNode","isCaret","isCorrectFormatForNode","canWrapNode","childCount","isEmptyTextNode$1","getChildCount","childElement","mergeStyles","clear_child_styles","clearChildStyles","mergeWithChildren","merge_with_parents","mergeWithParents","backgroundColor","hasFontSize","mergeBackgroundColorAndFontSize","processTextDecorationsAndColor","parentTextDecoration","mergeTextDecorationsAndColor","inverseTagDescendants","mergeSubSup","wordcharRegex","applyCaretFormat","fake","getFullySelectedBlocks","getFullySelectedListItems","postProcess$1","applyFormat$1","hasVars","fallbackElement","matchingNode","matchingFormat","updateAndFireChangeCallbacks","registeredCallbacks","runIfChanged","withSimilar","withoutSimilar","withVars","explode$1","create$8","filters","addFilter","getFilters","removeFilter","newCallbacks","addFilters","domParser","convert_fonts_to_spans","fontSizes","face","removeAttrs","addFontToSpansFilter","font_size_legacy_values","convertToSTag","addStrikeFilter","parseDataUri","uri","base64Encoded","extractedData","extractBase64Data","decodeURIComponent","buildBlob","atob","Uint8Array","Blob","blobToDataUri","reader","FileReader","onloadend","readAsDataURL","count$1","processDataUri","dataUri","base64Only","generateBlobInfo","createBlobInfo$1","blobCache","blobInfo","dataUriToBlobInfo","getByData","hostCaptureRegex","extractHost","ms","sandboxIframe","iframeNode","exclusions","isMimeType","mime","create$7","each$4","queryParts","DEFAULT_PORTS","ftp","http","https","mailto","safeSvgDataUrlElements","isInvalidUri","decodedUri","encodedUri","decodeUri","allow_html_data_urls","allowSvgDataUrls","blockSvgDataUris","URI","uriComponents","isDomSafe","pathname","baseUri","isProtocolRelative","toAbsPath","urlMatch","userInfo","setPath","pathMatch","getURI","toRelative","relativeUri","tu","uu","toRelPath","noHost","absoluteUri","defaultPort","breakPoint","normalizedBase","nb","normalizedPath","baseParts","pathParts","outPath","noProtoHost","filteredUrlAttrs","internalElementAttr","processNode","allow_conditional_comments","lcTagName","isInternalElement","bogus","hasNone","shouldKeepAttribute","isRequiredAttributeOfInternalElement","isBooleanAttribute","filterAttributes","setupPurify","namespaceTracker","purify$1","track","processAttr","mkSanitizeNamespaceElement","namespaceType","xlinkAttrs","sanitizeSvgElement","allowedEncodings","allow_mathml_annotation_encodings","encoding","sanitizeMathmlElement","extend$1","transferChildren","nativeParent","nsSanitizer","nativeChild","DomParser","nodeFilterRegistry","attributeFilterRegistry","defaultedSettings","root_name","sanitizer","currentScope","scopeNode","createNamespaceTracker","sanitizeHtmlElement","mimeType","getPurifyConfig","sanitizeNamespaceElement","_mimeType","getSanitizer","removeNodeFilter","removeAttributeFilter","isWrappableNode","rootName","isSpecialRoot","parseAndSanitizeWithContext","whitespacePre","whitespacePost","textRootBlockElements","allWhiteSpaceRegExp","startWhiteSpaceRegExp","endWhiteSpaceRegExp","hasWhitespaceParent","isAtEdgeOfBlock","neighbour","isRootContent","isLineBreakNode","isNodeEmpty","isTextRootBlockEmpty","isPaddedWithNbsp","whitespaceCleaner","invalidFinder","findInvalidChildren","matchFinder","preprocessors","postprocessors","traverseOrder","walkTree","topLevelChildren","otherChildren","rootBlockName","forced_root_block","getRootBlockName","rootBlockNode","rootBlock","forced_root_block_attrs","addRootBlocks","addNoOpener","newRel","appendRel","allow_unsafe_link_target","allow_html_in_named_anchor","fix_list_elements","classValue","validClassesMap","blob_cache","processImage","inputSrc","isInternalImageSource","isBogusImage","blobUri","registerBase64ImageFilter","sandbox_iframes","sandboxIframesExclusions","sandbox_iframes_exclusions","convert_unsafe_embeds","sandboxIframes","getEmbedType","embed","createSafeEmbed","inline_styles","withSerializedContent","fireEvent","parserSettings","serializedContent","serializeContent","eventArgs","makeParserSettings","preProcessGetContent","fireBeforeGetContent","postProcessGetContent","processedEventArgs","preProcessSetContent","fireBeforeSetContent","postProcessSetContent","tableModel","tableRow","cellPosition","cellExists","findElementPos","extractRows","sx","sy","ey","toDom","tableElement","tableBody","createDomTable","modelRowsToDomRows","getWrapElements","commonAnchorContainer","wrapElements","listWrappers","_li","findParentListContainer","listCont","listElm","listStyles","_style","getFullySelectedListWrappers","allWrappers","directListWrappers","emptyFragment","getTableFragment","selectedTableCells","getParentTable","fullTableModel","y2","x2","fillout","skipCellsX","subTable","subsection","sectionedTableModel","read$3","innerElm","getFragmentFromRange","getSelectionFragment","isCollapsibleWhitespace","getInnerText","bin","getOuterHtml","insertAt","removeAt","applyDiff","vDown","vUp","buildScript","start1","end1","start2","end2","getMiddleSnake","diag","i2","buildSnake","lazyTempDocument","createFromEditor","hasIframes","beforeBookmark","applyToEditor","getLevelContent","getCleanLevelContent","isEq$1","level1","level2","hasEqualContent","hasEqualCleanedContent","isUnlocked","locks","setTyping","typing","endTyping","makePlainAdaptor","bindEvents","beforeChange","beforeChange$1","currentLevel","newLevel","lastLevel","bm","customUndoRedoLevels","setDirty","addUndoLevel$1","undo","undo$1","redo","redo$1","clear$1","hasUndo","hasUndo$1","hasRedo","hasRedo$1","transact$1","ignore$1","callback1","callback2","extra$1","matchAll","matchedFormatNames","checkedMap","rawElm","registeredFormatListeners","formatChangeItems","toAppendTo","addListeners","removeListeners","formatChangedInternal","getContentInternal","trimmedHtml","setContentTree","padd","forcedRootBlockName","setContentString","setContentInternal","matchedElm","addVisualInternal","defaultedArgs","setupArgs$3","updatedArgs","parentBlockOpt","contextNodeName","getContextNodeName","rangeContentClone","nonRenderedText","parentBlockText","textIndex","tmpElm","getSerializedContent","extractSelectedContent","getSelectedContentInternal","addDecoration","removeDecoration","isRtc","getRtcInstanceWithFallback","rtcInstance","getRtcInstanceWithError","mergeAndNormalizeText","outerNode","outerElm","oldLength","innerTextNode","walkPastBookmark","normalizeTextIfRequired","deleteFromCallbackMap","isAttachedToDom","EditorSelection","selectedRange","explicitRange","selectorChangedWithUnbind","selectorChangedData","currentSelectors","findMatchingNode","matchedSelectors","SelectorChanged","setupArgs$2","cleanedContent","contextBlock","contextArgs","cleanContent","prevText","nextText","rngSetContent","createContextualFragment","setContent$1","getRng$1","tryCompareBoundaryPoints","how","sourceRange","destinationRange","compareBoundaryPoints","START_TO_START","END_TO_END","isValidRange","anchorRange","focusRange","getSelectedContent","getContent$1","bookmarkManager","compareEndPoints","fakeSelectedElements","setNode","endElm","selectorChanged","getScrollContainer","scrollContainer","scrollElementIntoView","placeCaretAt","controlSelection","htmlParser","DomSerializerImpl","remove_trailing_brs","internalName","hasChildren","preserve_cdata","lastParent","hasEventListeners","shouldFireEvent","oldDoc","clonedNode","impl","firePreProcess","preProcess$1","process$1","getHtmlFromNode","brNode1","brNode2","trimTrailingBr","parseHtml","serializeNode","outArgs","firePostProcess","postProcess","toHtml","addRules","setRules","DomSerializer","domSerializer","setupArgs","setContent$2","removedOptions","deprecatedOptions","removedPlugins","deprecatedPlugins","getMatchingOptions","searchingFor","settingNames","setting","getRemovedOptions","getDeprecatedOptions","getMatchingPlugins","pluginNames","plugin","getRemovedPlugins","getDeprecatedPlugins","getPluginDescription","replacedWith","DOM$8","safeDestroy","iconPack","CreateIconManager","propName","getComputedSizeProp","getClientWidth","getClientHeight","getMarginTop","getMarginLeft","NotificationManager","notifications","getImplementation","theme","unimplemented","getTopNotification","closeNotification","otherNotification","isEditorAttachedToDom","addNotification","getNotifications","serviceMessage","isF12","notificationApi","WindowManager","WindowManagerImpl","funcBind","fireCloseEvent","otherDialog","storeSelectionAndOpenDialog","openDialog","fireOpenEvent","addDialog","windowManagerImpl","displayNotification","notificationManager","displayError","logError","createLoadError","initError","toContentSkinResourceName","transformToUrls","cssLinks","contentCssFile","isBundledCssSkinName","isContentCssSkinName","ImageScanner","uploadStatus","cachedPromises","images","getAllImages","isUploaded","promises","imageSrc","imageInfo","newPromise","invalidDataUri","getByUri","uriType","blobUriToBlob","imageToBlobInfo","UploadStatus","blobUriStatuses","createStatus","resultUri","hasBlobUri","getResultUri","isPending","markPending","markUploaded","removeFailed","Uploader","pendingPromises","defaultHandler","xhr","XMLHttpRequest","withCredentials","credentials","upload","onprogress","json","responseText","path1","path2","basePath","FormData","filename","send","uploadHandler","handlerSuccess","handlerFailure","resolvePending","blobInfos","openNotification","pendingUploadBlobInfo","uploadBlobInfo","uploadBlobs","createUploader","EditorUpload","toBlobInfo","rnd","seed","createObjectURL","findFirst","cachedBlobInfo","removeByUri","revokeObjectURL","BlobCache","uploader","imageScanner","urlFilters","aliveGuard","replaceString","replaceImageUrl","targetUrl","replacementUrl","replacementString","replaceUrlInUndoStack","uploadImages","scanForImages","imageInfos","imagesToRemove","shouldDispatchChange","filteredResult","uploadInfo","convertURL","replaceImageUriInView","uploadError","uploadUri","sugarElement","parentOpt","isEmptyForPadding","addPaddingToEmpty","dispatchChange","uploadImagesAuto","isValidDataUriImage","imgElm","resultItem","replaceBlobUris","editorUpload","source_view","genericBase","cellBase","cellFormats","tablecellbackgroundcolor","tablecellverticalalign","tablecellbordercolor","borderColor","tablecellclass","tableclass","tablecellborderstyle","borderStyle","tablecellborderwidth","borderWidth","each$3","isPreviewItem","parsedSelectorToHtml","ancestry","sItem","wrapInHtml","parentCandidate","ancestorName","parentRequired","elmRule","getRequiredParent","siblingElm","parentSiblings","parseSelectorItem","$0","$3","$4","previewCss","previewStyles","removeVars","previewFrag","previewElm","rawParentFontSize","parentFontSize","Formatter","valigntop","verticalAlign","valignmiddle","valignbottom","alignleft","textAlign","float","marginLeft","marginRight","aligncenter","alignright","alignjustify","bold","fontWeight","italic","fontStyle","underline","strikethrough","strike","forecolor","hilitecolor","fontname","lineheight","lineHeight","fontsize_class","blockquote","subscript","superscript","_fmt","_itemName","removeformat","FormatRegistry","formatChangeState","setup$s","disableCaretContainer","setup$v","nodeOrRange","setup$u","toggleFormat","matchFormat","closestFormat","matchAllFormats","matchNodeFormat","canApplyFormat","shouldIgnoreCommand","UndoManager","addUndoLevel","isFirstTypedCharacter","addNonTypingUndoLevel","isMeta","isDirty","modKey","inputType","isInsertFromPasteOrDrop","addKeyboardShortcuts","nonTypingKeycodes","placeholderAttr","isKeyboardEvent","isDeleteEvent","blockBoundary","getBlockPosition","containerElm","blockPosition","getClosestHost","extractChildren","getChildrenUntilBlockBoundary","removeEmptyRoot","nestedBlockMerge","toBlock","insertionPoint","isEmptyBefore","sidelongBlockMerge","getInlineToBlockDescendants","newFromBlockDescendants","trimBr","mergeBlockInto","parentsAndSelf$1","findInsertionPoint","getInsertionPoint","mergeBlocks","block1","block2","backspaceDelete$a","fromBlockPos","toBlockPos","blockPos","lastPositionInBlock","skipLastBr","isDifferentBlocks","hasSameHost","isValidBlock","hasValidBlocks","isNotAncestorial","readFromRange","isRawNodeInTable","deleteRange$2","noPrevious","noNext","isSelectionInTable","isEverythingSelected","emptyEditor","deleteRangeMergeBlocks","backspaceDelete$9","_forward","showCaret","getNodeRange","renderRangeCaret","caretPositionNode","caretPositionBeforeNode","ceRoot","renderCaretAtRange","isBeforeBoundary","isAfterBoundary","deleteContentAndShowCaret","peekCaretPosition","caretRange","deleteRange","trimEmptyTextNode","backspaceDelete$8","getNextPosFn","isBeforeFn","nextCaretPosition","normalizedNextCaretPosition","deleteBoundaryText","getEdgeCefPosition","atStart","isCefAtEdgeSelected","DeleteAction","moveToElement","moveToPosition","findCefPosition","isDeleteFromCefDifferentBlocks","toCefElm","blockElm","deleteEmptyBlockOrMoveToCef","getAncestorCe","caretLocation","isAtContentEditableBlockCaret","getContentEditableBlockAction","skipMoveToActionFromInlineCefToContent","getContentEditableAction","hideFakeCaret","deleteElement$1","paddEmptyElement","backspaceDelete$7","isTextEndpoint","endpoint","isElementEndpoint","createMarker","getEndpoint","Range","backspaceDelete$6","startBlock","endBlock","backspaceDelete$5","deleteCaret$2","isText$2","startsWithCaretContainer","endsWithCaretContainer","createZwsp","insertInline","insertBefore$1","insertAfter$1","insertInlineBefore","insertInlineAfter","insertInlinePos","isPosCaretContainer","caretNode","renderCaret","evaluateUntil","fns","Location","rescope$1","nPos","isNotInsideFormatCaretContainer","findInsideRootInline","start$1","isValidLocation","readLocation","getName","outside","betweenInlines","fromInline","toInline","hasSameParentBlock","skipNoMovement","fromLocation","toLocation","location2","location1","findLocationSimple","moveRel","modify","BreakType","walk$1","getBreakType","currentPos","Br","Block","Wrap","getPositionsUntil","breakType","breakAt","Eol","getAdjacentLinePositions","getPositionsUntilBreak","findClosestHorizontalPositionFromPoint","lastRect","newRect","lastDist","findClosestHorizontalPosition","targetRect","getPositionsUntilPreviousLine","getPositionsUntilNextLine","getPositionsAbove","getPositionsBelow","isAtFirstLine","isAtLastLine","getClosestPositionAbove","getClosestPositionBelow","isContentEditableFalse$5","distanceToRectLeft$1","distanceToRectRight$1","findClosestClientRect","oldClientRect","oldDistance","newDistance","getNodeClientRects","toArrayWithNode","VDirection","walkUntil","isAboveFn","isBeflowFn","targetClientRect","upUntil","Up","downUntil","Down","getLastClientRect","isAboveLine","lineNumber","aboveLineNumber","isLine","isLineNumber","moveToRange","renderRangeCaretOpt","moveHorizontally","isBefore","isAfter","rangeIsInContainerBlock","moveVertically","caretClientRect","linePositions","nextLinePositions","nextLineRect","dist1","dist2","caretPositions","isBelowFn","positionsUntil","closestNextLineRect","getLineEndPoint","lineInfo","moveToLineEndPoint$3","setCaretPosition","setSelected","renderCaretLocation","findLocation","getPositionFromRange","findLocationTraverse","findLocation$1","move$3","moveWord","_caret","hasSelectionModifyApi","moveByWord","setupSelectedState","isInlineTarget$1","inlineBoundaries","selectedInlines","targetInlines","toggleInlines","caretValue","isAtZwsp","safeRemoveCaretContainer","inlines","_inline","renderInsideInlineCaret","moveNextWord","movePrevWord","moveToLineEndPoint$2","linePoint","outsideLoc","setCaretLocation","deleteFromTo","rangeFromPositions","backspaceDelete$4","rescope","toPosition","hasOnlyTwoOrLessPositionsLeft","backspaceDeleteCollapsed","getParentsUntil","hasOnlyOneChild","getFormatNodes","parentInlines","isFormatElement$1","getFormatNodesAtStart","getParentInlines","deleteCaret$1","hasMultipleChildren","getParentInlinesUntilMultichildInline","deleteLastPosition","createCaretFormatAtStart","isBrInEmptyElement","createCaretFormatAtStart$1","rangeStartsAtTextContainer","requiresDeleteRangeOverride","rangeStartsAtStartOfTextContainer","startParent","rangeStartParentIsFormatElement","endParent","isEqualNode","rangeStartAndEndHaveSameParent","rangeEndsAtEndOfEndContainer","rangeEndsAtEndOfStartContainer","rangeEndsAfterEndOfStartContainer","rangeEndsAtOrAfterEndOfStartContainer","backspaceDelete$3","updateFormats","missingFormats","updateCaretFormat","deleteRange$1","refreshCaret","hasAncestorInlineCaret","hasAncestorInlineCaretAtStart","requiresRefreshCaretOverride","deleteElement","backspaceDelete$2","isNearMedia","deleteCaret","parseIndentValue","getIndentStyleName","useMargin","canOutdent","getBlocksToIndent","indentStyleName","intentValue","validateBlocks","isListComponent","parentIsListComponent","indentUnit","indentValue","parsedValue","indentElement","outdent","backspaceDelete$1","findAction","isBlockElement","isValidTarget","shouldRemoveTextNode","createRootBlock","insertEmptyLine","checkClassName","replaceMatchWithSpan","prevChar","findStartTagIndex","isValidContent","nonEditableRegExps","re","blockCaretContainer","handleBlockContainer","findBlockCaretContainer","isContentEditableFalse$4","exitPreBlock","getVisualCaretPosition$1","moveH$2","moveToCeFalseHorizontally","getHorizontalRange","flipDirection","moveV$4","moveToCeFalseVertically","getVerticalRange","moveToLineEndPoint$1","selectToEndPoint","curRng","moveV$3","getClosestTargetBlock","isAtFirstOrLastLine","moveCaretToNewEmptyLine","moveV$2","summary","move$2","baseKeyPattern","matchesEvent","defaultPatterns","match$1","executeWithDelayedAction","defaultDelayedPatterns","matchDelayed","moveH$1","moveV$1","moveToLineEndPoint","CellLocation","isEligible","isContentEditableFalse$3","getClosestCell","getYAxisValue","isTargetCorner","corners","tds","deflate","getCorners","corner","newCorner","oldCorner","oldDist","newDist","findClosestCorner","getClosestCellAbove","getClosestCellBelow","isAtTableCellLine","startsWithWrapBreak","startsWithBrBreak","breakPos","hasNextBreak","isAtFirstTableCellLine","isAtLastTableCellLine","navigateHorizontally","_td","isCaretAtStartOrEndOfTable","getTable","insertFn","renderBlock","navigateVertically","findClosestPositionInAboveCell","getClosestAbovePosition","findClosestPositionInBelowCell","getClosestBelowPosition","mover","moveH","moveV","tabGo","_current","getCellFirstCursorPosition","tabForward","tabBackward","rootElements","DOM$7","alwaysNext","textBefore","scanLeft","scanRight","repeatLeft","isWhitespace","stripTrigger","initRange","includeWhitespace","firstChar","findTrigger","toLast","isText$1","toLeaf","lookupWithContext","getDatabase","startText","autocompleters","lookupByTrigger","_element","isPreviousCharContent","isStartOfWord","ac","fieldStrings","autocompleterSchema","createAutocompleter","triggers","datasetValues","dv","setup$k","activeAutocompleter","uiActive","fireAutocompleterEnd","getAutocompleters","newContext","getTriggerContext","doLookup","lookupInfo","matchLength","commenceIfNecessary","fireAutocompleterUpdate","fireAutocompleterStart","readActiveRange","selRange","innerRange","outerRange","startComparison","endComparison","isRangeInsideOrEqual","editorCommands","setupEditorInput","emptyNodeContents","isEntireNodeSelected","getParentDetailsElementAtPos","isInDetailsElement","setCaretToPosition","moveCaretToDetailsPos","shouldPreventDeleteIntoDetails","granularity","parentDetailsAtCaret","inEmptyParentBlock","isFirstBlock","isLastBlock","parentDetailsAtNewPos","shouldPreventDeleteSummaryAction","detailElements","detailsElements","startInSummary","startSummary","endInSummary","isPartiallySelectedDetailsElements","startDetails","endDetails","isPartialDelete","isCaretInTheEndOf","isCaretAtEndOfSummary","isCaretInLastPositionInBody","isCaretInTheBeginningOf","isCaretAtStartOfSummary","isCaretInFirstPositionInBody","getDetailsElements","shouldPreventDeleteAction","appendAllChildNodes","handleDeleteActionSafari","createAndFireInputEvent","specifics","currentTarget","eventPhase","AT_TARGET","originalTarget","explicitOriginalTarget","isTrusted","cancelable","InputEvent","fireInputEvent","fireBeforeInputEvent","platform$2","isMacOSOriOS","moveToCaretPosition","firstNonWhiteSpaceNodeSibling","getEditableRoot","editableRoot","getParentBlock$1","setForcedBlockAttrs","forcedRootBlockAttrs","attrStyles","attrClassesOpt","attrClasses","currentClassesOpt","currentClasses","filteredClasses","newClasses","appliedAttrs","remainingAttrs","createNewBlock","keepStyles","newBlockName","parentBlockName","hasParent","isListBlock","isListItem","getContainerBlock","containerBlock","containerBlockParent","isFirstOrLastLi","isEmptyAnchor","containerAndPreviousSiblingName","canSplitBlock","normalizeZwspOffset","blockbreak","isAfterLastNodeInContainer","isCef","collapsedAndCef","createNewBlock$1","isCaretAtStartOrEndOfBlock","normalizedOffset","containerAndNextSiblingName","insertNewBlockAfter","containerBlockName","optionValue","shouldEndContainer","startNodeName","startNodeParent","wrapSelfAndSiblingsInDefaultBlock","isAtDetailsEdge","isLastEmptyBlockInDetails","getDetailsRoot","insertNewLine","containerParent","parentBlockStyles","hasFirstChild","previousChildren","insert$4","parentBlockParent","afterTable","parentBlockSugar","prevBrOpt","includeZwspInRange","trimZwsp","trimLeadingLineBreaks","firstChilds","trimInlineElementsOnLeftSideOfBlock","addBrToBlockIfNeeded","fakeEventName","moveSelectionToBr","brElm","extraBr","insertBrBefore","insertBrAfter","hasBrAfter","isAnchorLink","isInsideAnchor","insertBrOutsideAnchor","linebreak","anchorLocation","readInlineAnchorLocation","isControlKey","hasRightSideContent","insertBrAtCaret","newLineAction","shouldBlockNewLine","_shiftKey","shouldBlockNewLine$1","inListBlock","requiredState","isListItemParentBlock","getParentBlockName","inCefBlock","inPreBlock","shouldPutBrInPre","inBrContext","shouldInsertBr","_editor","canInsertIntoEditableRoot","rootEditable","isInRootWithEmptyOrCEF","isCefOpt","predicates","insertBreak","execEditorDeleteCommand","logicalAction","platform$1","isIOSSafari","handleEnterKeyEvent","isPageUpDown","setNodeChangeBlocker","blocked","insertTextAtPosition","insertNbspAtPosition","insertSpaceAtPosition","insertSpaceOrNbspAtSelection","locationToCaretPosition","checkPos","insertInlineBoundarySpaceOrNbsp","insertSpaceInSummaryAtSelectionOnFirefox","domUtils","insertSpaceOrNbspAtPosition","tableTabNavigation","setup$e","setup$m","executeKeydownOverride$4","setup$l","isBackspaceKeydown","unmodifiedGranularity","getModifiedGranularity","isWord","applyAction","executeKeydownOverride$3","executeKeyupOverride","setup$j","iOSSafariKeydownBookmark","koreanCharRegex","isCaretAfterKoreanCharacter","iOSSafariKeydownOverride","iOSSafariKeyupOverride","setup$i","executeKeydownOverride$1","normalizeNbspsInEditor","setup$g","executeKeydownOverride","setup$c","executeKeydownOverride$2","setup$h","executeKeyupAction","setup$f","NodeChange","lastPath","nativeRng","fakeRng","isSameElementPath","currentPath","imageId","eventId","mkSetEventFn","transfer","setDragstartEvent","setDropEvent","setDragendEvent","isInDragStartEvent","modeId","mkSetModeFn","setMode$1","setReadWriteMode","setReadOnlyMode","setProtectedMode","checkMode","expectedMode","isInReadWriteMode","isInProtectedMode","validDropEffects","validEffectAlloweds","createDataTransfer","dataTransferImpl","DataTransfer","dropEffect","effectAllowed","allowed","itemsImpl","normalizeItems","setDragImage","imageData","setHtmlData","internalMimeType","internalHtmlMime","internalMark","isMarked","pasteBinDefaultContent","isPasteBin","isDefaultPasteBinContent","trimHtml","s1","s2","processResult","cancelled","pasteHtml$1","isAbsoluteUrl","linkSelection","pasteHtmlFn","createLink","insertImage","isImageUrl","createImage","createIdGenerator","createPasteDataTransfer","doPaste","shouldSimulateInputEvent","preProcessArgs","firePastePreProcess","filteredContent","preProcess","tempBody","postProcessArgs","firePastePostProcess","postProcessFilter","filterContent","doPasteAction","smartInsertContent","pasteHtml","internalFlag","pasteText","encodedText","rootTag","rootAttrs","tagOpen","openContainer","tagClose","paragraphs","toBlockElements","getDataTransferItems","contentType","hasContentType","clipboardContent","hasHtmlOrText","pasteImageData","clipboardData","kind","getAsFile","allowedExtensions","extension","lowerExt","mimeOverrides","jpg","jpe","jfi","jif","jfif","pjpeg","pjp","getImageMimeType","getImagesFromDataTransfer","fileResults","imageItem","existingBlobInfo","useFileName","extractFilename","createBlobInfo","pasteImage","insertClipboardContent","plainTextMode","isInternal","isPlainTextHtml","isPlainText","isAbsoluteUrl$1","ignoreElements","registerEventsAndFilters","pasteBin","pasteFormat","keyboardPastePlainTextState","isKeyboardPasteEvent","isBrokenAndroidClipboardEvent","getLastRng","registerEventHandlers","isWebKitFakeUrl","isDataUri","isPasteInsert","registerDataImageFilter","setClipboardData","setHtml5Clipboard","contenteditable","offscreenRange","hasSelectedContent","isTableSelection","getCaretRangeFromEvent","setFocusedRange","rgbRegExp","rgbToHex","removeWebKitStyles","webKitStylesOption","webKitStyles","outputStyles","compareInput","outputStyle","draggingInternallyState","lastRngCell","pasteBinElm","create$6","pasteBinClone","copyAndRemove","pasteBinClones","dirtyWrappers","cleanWrapper","PasteBin","filterFunc","addPreProcessFilter","togglePlainTextPaste","setup$9","hasImage","dropContent","plainTextContent","isPlainTextFileUrl","internalContent","needsInternalDrop","parentTransparent","needsCustomInternalDrop","isInternalDrop","trimmedContent","hasNoSummary","brokenDetailElements","setupSummaryDeleteByDragFix","isContentEditableFalse$2","getClosestCef","findEdgeCaretCandidate","onTripleClickSelect","startRng","clickNode","getClosestScope","cef","findClosestBlockRange","FakeCaretPosition","distanceToRectLeft","distanceToRectRight","splitRectsPerAxis","prevRect","boundingClientRectFromRects","isInsideY","boundingRect","vertical","r1","r2","overlap","overlapY","collidesY","horizontalDistance","_y","closestChildCaretCandidateNodeRect","findCloserTextNode","caretCandidateRect","findClosestCaretCandidateNodeRect","distance","sortedRects","sndClosest","tryFindSecondBestTextNode","horizontalRects","verticalRects","above","below","closestFakeCaretCandidate","prevScope","childNodesWithoutGhost","uncheckedChildren","traverseUp","closestCaretCandidateNodeRect","Before","After","clientInfo","getAbsolutePosition","getTargetProps","makeDragEvent","dataTransferForDispatch","originalMode","getDragImage","getEvent","setEvent","cloneDataTransfer","makeDataTransferCopyForDragEvent","BUBBLING_PHASE","CAPTURING_PHASE","NONE","movementX","movementY","offsetX","offsetY","initUIEvent","initMouseEvent","makeDndEvent","makeDndEventFromMouseEvent","isContentEditableFalse$1","createGhost","clonedElm","scrollEditor","behavior","scrollRight","scrollUp","scrollDown","removeElement","dispatchDragEvent","throttledPlaceCaretAt","caretInfo","state_","dragging","mouseEventOriginatedFromWithinTheEditor","targetPos","relX","applyRelPos","calculatePosition","bodyPosition","getBodyPosition","scrollPosition","getScrollPosition","mousePosition","iframePosition","inlineScroll","iframeScroll","getBodyScroll","getMousePosition","calc","bodyElm","mouseY","mouseX","outerMouseY","outerMouseX","moveGhost","stopDragging","removeDragState","bindFakeDragEvents","pageDom","dragStartHandler","isLeftMouseButtonPressed","ceElm","isDraggable","elmPos","relY","dragHandler","dropHandler","dragElement","isValidDropTarget","getRawTarget","dropTarget","removeElementWithPadding","getHtmlData","dragEndHandler","getContentEditableRoot","SelectionOverrides","realSelectionId","isFakeSelectionTargetElement","isWithinCaretContainer","isRangeInCaretContainer","normalizeVoidElementSelection","setElementSelection","afterNode","targetClone","realSelectionContainer","setupOffscreenSelection","nodeElm","selectElement","removeElementSelection","contentEditableRoot","transposedPoint","isInsideElementContentArea","isXYInContentArea","closestContentEditable","isFakeSelectionElement","preventFileDrop","preventFileDropIfUIElement","editorRoot","eventNames","blockUnsupportedFileDrop","renderFocusCaret","getNormalizedTextOffset","generatePath","generatePathRange","resolvePath","nodePath","optNode","resolvePathRange","cleanEmptyNodes","deleteRng","getParentBlock","resolveFromDynamicPatterns","patternSet","beforeText","dynamicPatterns","dynamicPatternsLookup","inlinePatterns","getBeforeText","newMarker","rangeFromMarker","markerPrefix","pathRange","textEnd","textStart","startParentNode","removeMarker","isReplacementPattern","findPatternStartFromSpot","startPattern","patternContent","searchText","startEndIndex","startPatternIndex","nextSpot","findPattern$3","normalizedMatches","endPathRng","endRng","resultsOpt","findPatternsRec","remainingPatterns","requireGap","startRange","findPatternStart","startPathRng","generatePathRangeFromRange","patternsWithoutCurrent","applyPattern$2","patternRange","findPatterns$2","matchesWithSortedPatterns","hasSameMatches","sortedMatch","getBestMatches","applyMatches$2","matchesWithMarkers","matchesWithEnds","endMarker","startMarker","addMarkers","markerRange","applyReplacementPattern","markerEndRange","markerStartRange","patternMarker","applyPatternWithContent","stripPattern$1","textAfter","createApplyPattern","stripPattern","formatSet","isBlockFormatName","findPattern$2","sortedPatterns","sortPatterns","createFindPatterns","findPattern","skipFullMatch","applyPattern$1","findPattern$1","findPatterns$1","applyPattern","findPatterns","checkKeyEvent","codes","charCodes","keyCodes","getPatternSet","createPatternSet","queryCommandSupported","hasDynamicPatterns","hasTextPatternsLookup","dynamicPatternSet","inlineMatches","blockMatches","getMatches$1","insert$5","applyMatches$1","getMatches","applyMatches","handleBlockPatternOnSpace","handleInlineTrigger","handleInlineKey","charCode","Quirks","isGecko","isWebKit","setEditorCommandState","selectAll","documentElementEditingFocus","selectControlElements","visualAidsAnchorClass","disableBackspaceIntoATable","setGeckoEditingOptions","showBrokenImageIcon","contentStyles","restoreFocusOnKeyDown","bodyHeight","blockCmdArrowNavigation","tapLinksAndImages","blockFormSubmitInsideEditor","refreshContentEditable","serializeRng","allRng","allContentsSelected","emptyEditorWhenDeleting","isAllContentSelected","getAttributeApplyFunction","setAttributeNode","isSelectionAcrossElements","removeStylesWhenDeletingAcrossBlockElements","DOM$6","getRootName","removeUndefined","mkParserSettings","mkSchemaSettings","getStyleSheetLoader$1","loadContentCss","fontCss","removeCss","contentCssText","allStylesheets","framedFonts","bundledCss","normalCss","bundledPromises","makeStylesheetLoadingPromises","contentStyle","appendStyle","initEditorWithInitialContent","startContent","loadInitialContent","bindPendingEventDelegates","fireInit","moveSelectionToFirstCaretPosition","initInstanceCallback","autoFocus","focusEditor","destroyed","initEditor","contentBodyLoaded","readonly","_editableRoot","hasEditableRoot","createParser","mkSerializerSettings","annotator","_nodeChangeDispatcher","debounceLongpress","setup$p","preventSummaryToggle","initialStateOption","serializedStateOption","filterDetails","contentEditableAttrName","editClass","nonEditClass","hasEditClass","hasNonEditClass","convertRegExpsToNonEditable","setup$n","deleteCommand","forwardDeleteCommand","setup$q","rootNodeName","hasBlockParent","setup$o","updatePlaceholder","isNonTypingKeyboardEvent","showPlaceholder","isTypingKeyboardEvent","isVisuallyEmpty","firePlaceholderToggle","setup$r","setupRtcThunk","editorCast","rtcPlugin","getRtcSetup","nul","makeNoopAdaptor","rtcEditor","defaultVars","_undoManager","_locks","_node","_similar","_rfl","_details","getRawModel","makeRtcAdaptor","rtc","isRemote","setup$t","firePreInit","spellcheck","quirks","firePostRender","directionality","protect","preInit","licenseKey","isGplKey","isValidGeneratedKey","validateLicenseKey","validateEditorLicenseKey","cancelProgress","canceled","progressTimeout","setProgressState","startProgress","setupRtc","_rtcMode","DOM$5","DOM$4","createThemeFalseResult","renderThemeFalse","renderThemeFalseIframe","iconPackName","currentIcons","loadIcons","svgData","addIcon","initIcons","Theme","documentBaseUrl","initTheme","Model","initModel","initializedPlugins","Plugin","pluginInstance","pluginInitError","initPlugin","trimLegacyPrefix","initPlugins","renderInfo","orgDisplay","renderFromLoadedTheme","iframeHeight","renderFromThemeFunc","renderThemeUi","uiApiFacade","augmentEditorUiApi","getContentCssUrls","getFontCssUrls","appendContentCssFromSettings","boxInfo","iframeTitle","translatedTitle","customAttrs","frameBorder","allowTransparency","createIframeElement","iframeHTML","bodyId","bodyClass","translatedAriaText","getIframeHtml","createIframe","hidden","orgVisibility","setupIframeBody","init$1","DOM$3","hasSkipLoadPrefix","getIconsUrlMetaFromName","scriptLoader","isThemeLoaded","isModelLoaded","themeUrl","themeLoadError","loadTheme","modelUrl","modelLoadError","loadModel","languageCode","languageUrl","languageLoadError","loadLanguage","defaultIconsUrl","customIconsUrl","getIconsUrlMetaFromUrl","urlMeta","iconsLoadError","loadPlugin","pluginLoadError","loadPlugins","normalizePlugins","trimmedPlugins","extractSections","hasSection","sectionResult","getMobileOverrideOptions","mobileOptions","table_grid","object_resizing","toolbar_mode","toolbar_sticky","getExternalPlugins","userDefinedExternalPlugins","external_plugins","combineOptions","isMobileDevice","defaultOptions","defaultOverrideOptions","deviceOverrideOptions","extendedOptions","isOnMobile","sectionOptions","forcedPlugins","forced_plugins","desktopPlugins","mobileConfig","getSectionConfig","platformPlugins","mobilePlugins","getPlatformPlugins","combinedPlugins","combinePlugins","processPlugins","registerCommands$a","toggleAlign","addCommands","JustifyLeft","JustifyCenter","JustifyRight","JustifyFull","JustifyNone","registerExecCommands$2","alignStates","registerQueryStateCommands","trimOrPad","trimOrPadLeftRight","insertAtCaret","processValue$1","insertedContent","insertContent$1","legacyPropNames","isFont","getFontProp","legacyPropName","getProperty","getSpecifiedFontProp","getComputedFontProp","getFontSize","getFontFamily","findFirstCaretElement","mapRange","getCaretElement","bindRange","fromFontSizeNumber","fontSizeNumber","getFontStyleValues","fontClasses","getFontSizeClasses","normalizeFontNames","topParentBlock","getTopParentBlock","queryCommandEnabled","registerCommands$9","mceAddUndoLevel","mceEndUndoLevel","Undo","Redo","registerCommands$6","mceSelectNodeDepth","_command","mceSelectNode","registerCommands$1","mceCleanup","insertHorizontalRule","insertText","insertHTML","mceInsertContent","mceSetContent","mceReplaceContent","mceNewDocument","registerCommands$8","applyLinkToSelection","linkDetails","mceInsertLink","registerCommands$4","Indent","Outdent","registerCommands$5","InsertNewBlockBefore","InsertNewBlockAfter","registerCommands$3","insertParagraph","mceInsertNewLine","InsertLineBreak","registerCommands$2","fontNameAction","fontSizeAction","lineHeightAction","registerExecCommands$1","isFormatMatch","fontNameQuery","fontSizeQuery","specifiedStyle","lineHeightQuery","registerQueryValueCommands","registerCommands$7","mceRemoveNode","mcePrint","print","mceFocus","restoreBookmark","bookmarkRng","contentEditableHost","getContentEditableHost","hasContentEditableFalseParent","mceToggleVisualAid","registerExecCommands","selectionSafeCommands","isSelectionSafeCommand","EditorCommands","lowerCaseCommand","commandList","setContentEditable","toggleReadOnly","removeFakeSelection","setEditorReadonly","setCommonEditorCommands","restoreFakeSelection","unsetEditorReadonly","allowedEvents","nativeEvents","EventDispatcher","isNative","bindings","toggleEvent","beforeFire","wrappedCallback","currentName","bindingName","filteredHandlers","getEventDispatcher","_eventDispatcher","toggleNativeEvent","Observable","dispatcherArgs","customEventRootDelegates","getEventTarget","eventRoot","isListening","isClickEvent","getAnchorHrefOpt","targetEl","isReadOnlyAllowedEvent","processReadonlyEvents","bindEventDelegate","delegates","eventRootElm","editors","EditorObservable","_pendingNativeEvents","unbindAllNativeEvents","stringListProcessor","getErrorMessage","isValidResult","processValue","defaultModes","switchToMode","activeMode","availableModes","oldMode","activate","deactivate","editorReadOnly","fireSwitchMode","keyCodeLookup","f1","f2","f3","f4","f5","f6","f7","f8","f9","f10","f11","f12","modifierNames","parseShortcut","isModifier","Shortcuts","pendingPatterns","hasModifier","isFunctionKey","matchShortcut","subpatterns","executeShortcutAction","cmdFunc","normalizeCommandFunc","createShortcut","addContextToolbar","addContextForm","addSidebar","addView","create$3","Editor","loadedCSS","isNotDirty","documentBaseURL","normalizedOptions","copiedOptions","normalizeOptions","initialOptions","rawInitialOptions","isRegistered","isBuiltInSpec","getBuiltInProcessor","processDefaultValue","immutable","unset","lookupFn","rawPatterns","_ctx","rawOptions","hasRemovedPlugins","hasRemovedOptions","isLegacyMobileTheme","listJoiner","themesMessage","pluginsMessage","optionsMessage","logRemovedWarnings","hasDeprecatedPlugins","hasDeprecatedOptions","logDeprecatedWarnings","logWarnings","_setBaseUrl","baseURI","design","undoLevel","registerReadOnlySelectionBlockers","setMode","registerMode","setupCallback","getStyleSheetLoader","formEventDelegate","resetContent","_mceOldSubmit","triggerSave","isEncodingXml","save","_beforeUnload","set_dirty","getParam","loadArgs","saveArgs","is_removing","setupArgs$1","getContent$2","initialContent","oldState","urlConverterCallback","urlObject","addVisual$1","setEditableRoot","fireEditableRootStateChange","fireRemove","restoreOriginalStyles","fireDetach","remove$1","automatic","restoreForm","clearDomReferences","_scanForImages","beforeUnloadDelegate","boundGlobalEvents","globalEventDelegate","EditorManager","toggleGlobalEvents","removeEditorFromList","targetEditor","oldEditors","isQuirksMode","compatMode","majorVersion","minorVersion","releaseDate","tinyMCEPreInit","srcScript","overrideDefaults","base_url","pluginBaseUrls","plugin_base_urls","pluginBaseUrl","pluginName","invalidInlineTargets","provideResults","initEditors","initCount","execCallback","findTargets","isInvalidInlineTarget","createEditor","createId","existingEditor","editorId","editorOptions","addI18n","FakeClipboard","dataValue","relativePosition","targetW","targetH","relChars","Rect","inflate","findBestRelativePosition","constrainRect","rels","intersect","cropRect","x1","y1","clampRect","fixedSize","cx2","cy2","underflowX1","underflowY1","overflowX2","overflowY2","fromClientRect","tasks","resultFns","resources","loadErrMsg","runErrMsg","task","waiter","resolveCb","rejectCb","awaiter","localStorage","removeItem","publicApi","geom","LocalStorage","ImageUploader","showNotification","TreeWalker","Serializer","Selection","tinymce$1","tinyMCE","exportToWindowGlobal","exportToModuleLoaders","sfc","__vccOpts","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","globalThis","toStringTag","expectsLowerCase","tmp","klass","aValidType","bValidType","aHasKey","bHasKey","__v_isRef","arg","detached","effects","cleanups","currentEffectScope","fromParent","scheduler","deps","lastShouldTrack","ptr","deferStop","onStop","_effect","lazy","runner","depsMap","Map","debuggerEventExtraInfo","shouldTrack","oldTarget","newLength","allowRecurse","getOwnPropertyNames","instrumentations","isReadonly","targetIsArray","hadKey","deleteProperty","ownKeys","isShallow","rawKey","hadItems","observed","method","targetIsMap","isPair","isKeyOnly","innerIterator","mutableInstrumentations","shallowInstrumentations","readonlyInstrumentations","shallowReadonlyInstrumentations","baseHandlers","collectionHandlers","proxyMap","existingProxy","targetType","isExtensible","rawType","proxy","Proxy","newVal","__v_isShallow","_rawValue","useDirectValue","objectWithRefs","_set","_object","_defaultValue","_setter","isSSR","_dirty","_cacheable","throwInDev","vnode","exposedInstance","errorInfo","errorCapturedHooks","appErrorHandler","appContext","errorHandler","job","deduped","Infinity","HTMLElement","__VUE_DEVTOOLS_HOOK_REPLAY__","newHook","cleanupBuffer","app","rawArgs","isUnmounted","isModelListener","modelArg","modifiersKey","handlerName","onceHandler","emitted","asMixin","emitsCache","emits","__scopeId","_id","isNonScopedSlot","_n","renderFnWithContext","prevInstance","Component","withProxy","propsOptions","slots","renderCache","setupState","inheritAttrs","fallthroughAttrs","shapeFlag","proxyToUse","dirs","prevProps","nextProps","emitsOptions","nextKeys","subTree","__isSuspense","n1","n2","parentComponent","parentSuspense","isSVG","slotScopeIds","optimized","rendererInternals","patch","hiddenContainer","suspense","pendingBranch","ssContent","ssFallback","um","unmount","newBranch","newFallback","activeBranch","isInFallback","isHydrating","pendingId","hydrate","hydrateNode","isSlotChildren","eventListener","delayEnter","afterLeave","hasUnresolvedAncestor","fallbackVNode","mountFallback","registerDep","setupRenderEffect","isInPendingSuspense","hydratedEl","asyncDep","asyncSetupResult","suspenseId","asyncResolved","doRemove","trackBlock","singleChild","singleRoot","dynamicChildren","provides","parentProvides","treatDefaultAsFactory","flush","immediate","onTrack","onTrigger","forceTrigger","isMultiSource","onCleanup","baseGetter","ssrCleanup","__watcherHandles","unwatch","isMounted","isLeaving","isUnmounting","leavingVNodes","persisted","onBeforeEnter","onAfterEnter","onEnterCancelled","onBeforeLeave","onLeave","onAfterLeave","onLeaveCancelled","onBeforeAppear","onAppear","onAfterAppear","onAppearCancelled","prevTransitionKey","hasFound","rawProps","innerChild","enterHooks","oldChild","oldInnerChild","transitionKeyChanged","getTransitionKey","leavingHooks","delayLeave","earlyRemove","delayedLeave","_leaveCb","leavingVNodesCache","callHook","callAsyncHook","beforeEnter","leavingVNode","afterHook","cancelHook","_enterCb","leave","keepComment","parentKey","keyedFragmentCount","patchFlag","__asyncLoader","loader","loadingComponent","errorComponent","suspensible","userOnError","resolvedComp","pendingRequest","retries","thisRequest","__asyncResolved","delayed","ce","__isKeepAlive","include","sharedContext","__v_cache","_unmount","storageContainer","pruneCache","pruneCacheEntry","isDeactivated","vnodeHook","onVnodeMounted","da","onVnodeUnmounted","pendingCacheKey","cacheSubtree","rawVNode","cachedVNode","wrappedHook","__wdc","keepAliveRoot","injected","__weh","lifecycle","directives","internalInstance","modifiers","mounted","prevVNode","oldBindings","maybeSelfReference","warnMissing","renderItem","dynamicSlots","noSlotted","isCE","validSlotContent","rendered","scopeId","vnodes","preserveCaseIfNecessary","$","$el","$data","$props","$attrs","$slots","$refs","refs","$parent","$root","$emit","$options","$forceUpdate","$nextTick","$watch","__isScriptSetup","accessCache","normalizedProps","publicGetter","cssModule","globalProperties","__cssModules","unscopables","strats","mixins","extendsOptions","strat","methods","beforeCreate","created","beforeMount","beforeUpdate","beforeDestroy","beforeUnmount","unmounted","activated","deactivated","errorCaptured","serverPrefetch","merged","provide","inject","needCastKeys","rawCastValues","hasAttrsChanged","camelKey","rawCurrentProps","castValues","isAbsent","hasDefault","propsDefaults","propsCache","normalizedKey","booleanIndex","stringIndex","ctor","expectedTypes","rawSlot","rawSlots","needDeletionCheck","deletionComparisonTarget","$stable","isNativeTag","performance","optionMergeStrategies","warnHandler","compilerOptions","optionsCache","rootComponent","rootProps","installedPlugins","_uid","_props","_context","_instance","install","mixin","directive","mount","rootContainer","isHydrate","__vue_app__","Fragment","Text","Comment","Static","rawRef","oldRawRef","isUnmount","refValue","oldRef","_isString","_isRef","doSet","existing","mt","mountComponent","patchProp","createText","createComment","isFragmentStart","onMismatch","handleMismatch","domType","needToAdoptContent","staticCount","hydrateFragment","hydrateElement","locateClosingAsyncAnchor","hydrateChildren","forcePatchValue","vnodeHooks","onVnodeBeforeMount","parentVNode","fragmentSlotScopeIds","_vnode","createHydrationFns","__VUE__","__VUE_DEVTOOLS_GLOBAL_HOOK__","hostInsert","hostRemove","hostPatchProp","hostCreateElement","hostCreateText","hostCreateComment","hostSetText","setElementText","hostSetElementText","hostParentNode","hostNextSibling","setScopeId","hostSetScopeId","insertStaticContent","hostInsertStaticContent","getNextHostNode","processText","processCommentNode","mountStaticNode","processFragment","processComponent","mountElement","patchElement","mountChildren","unmountChildren","needCallTransitionHooks","oldProps","newProps","onVnodeBeforeUpdate","areChildrenSVG","patchBlockChildren","patchChildren","patchProps","propsToUpdate","dynamicProps","onVnodeUpdated","oldChildren","fallbackContainer","oldVNode","newVNode","fragmentStartAnchor","fragmentEndAnchor","updateComponent","initialVNode","nextVNode","prevChildren","nextChildren","updateComponentPreRender","bu","originNext","nextTree","prevTree","isAsyncWrapperVNode","hydrateSubTree","scopedInitialVNode","rawPrevProps","kebabKey","camelizedKey","prevShapeFlag","patchKeyedChildren","patchUnkeyedChildren","commonLength","nextChild","parentAnchor","l2","keyToNewIndexMap","patched","toBePatched","maxNewIndexSoFar","newIndexToOldIndexMap","prevChild","increasingNewIndexSequence","arrI","nextIndex","moveType","performLeave","moveStaticNode","shouldInvokeDirs","shouldInvokeVnodeHook","onVnodeBeforeUnmount","unmountComponent","removeFragment","removeStaticNode","performRemove","bum","mc","pbc","createApp","ch1","ch2","SVGElement","targetSelector","targetAnchor","isReorder","__isTeleport","mainAnchor","wasDisabled","currentContainer","currentAnchor","nextTarget","_lpa","ut","disableTracking","__v_isVNode","transformer","ref_key","ref_for","isBlockNode","needFullChildrenNormalization","__v_skip","extraProps","mergeRef","mergedProps","flag","numberOfNodes","asBlock","slotFlag","toMerge","exposed","exposeProxy","setupContext","bc","rtg","sp","isStateful","setupResult","resolvedResult","__ssrInlineRender","ssrRender","devtoolsRawSetupState","_compile","_rc","skipOptions","globalMixins","resolved","isCustomElement","delimiters","componentCompilerOptions","finalCompilerOptions","expose","includeInferred","displayName","__name","getterOrOptions","debugOptions","onlyGetter","excludedKeys","getAwaitable","awaitable","propsOrChildren","createComponentInstance","setupComponent","renderComponentRoot","setCurrentRenderingInstance","isVNode","normalizeVNode","createElementNS","prefixed","rawName","now","Comp","VueCustomElement","initialProps","super","_def","_connected","_resolved","_numberProps","_createVNode","attachShadow","_resolveProps","connectedCallback","_update","_resolveDef","disconnectedCallback","_setAttr","MutationObserver","mutations","observe","isAsync","numberProps","_applyStyles","asyncDef","declaredPropKeys","_setProp","_getProp","shouldReflect","shouldUpdate","CustomEvent","updateTeleports","setVars","childList","enterFromClass","enterActiveClass","enterToClass","appearFromClass","appearActiveClass","appearToClass","leaveFromClass","leaveActiveClass","leaveToClass","baseProps","durations","enterDuration","leaveDuration","finishEnter","isAppear","finishLeave","_isLeaving","makeEnterHook","_vtc","explicitTimeout","_endId","resolveIfNotStale","propCount","endEvent","ended","onEnd","getStyleProperties","transitionDelays","transitionDurations","transitionTimeout","animationDelays","animationDurations","animationTimeout","hasTransform","delays","moveClass","movedChildren","webkitTransform","transitionDuration","_moveCb","cssTransitionProps","oldPos","_assign","castToNumber","domValue","modelValue","_modelValue","elementValue","isSetModel","selectedVal","_binding","isMultiple","esc","eventKey","_vod","prevValue","nextValue","transitionClasses","isCssString","currentDisplay","invokers","_vei","existingInvoker","invoker","_vts","attached","originalStop","_stopped","needRemove","_trueValue","_falseValue","removeAttributeNS","containerOrSelector","getSSRProps","modelToUse","messages","additionalMessage","isComponent","inSSR","isStatic","constType","callee","returns","newline","isSlot","consequent","alternate","stateStack","currentOpenBracketCount","currentOpenParensCount","currentStringType","newLoc","numberOfCharacters","linesCount","lastNewLinePos","allowEmpty","exp","dynamicOnly","tagType","ssr","callPath","propsWithInjection","parentCall","propKeyName","searchValue","replaceValue","removeHelper","compatConfig","gt","lt","amp","apos","quot","getNamespace","getTextMode","isVoidTag","isPreTag","decodeEntities","rawText","p1","onWarn","comments","inVPre","removedWhitespace","shouldCondense","inPre","nestedIndex","contentStart","closeIndex","wasInPre","wasInVPre","isPreBoundary","isVPreBoundary","isSelfClosing","inlineTemplateProp","currentSource","isBuiltInComponent","codegenNode","nameSet","quote","isQuoted","unexpectedChars","isPropShorthand","dirName","valueLoc","innerStart","innerEnd","rawContentLength","rawContent","preTrimContent","endTokens","originalSource","searchString","doNotHoistNode","originalCount","hoistedCount","constantType","hoist","vSlot","transformHoist","constantCache","returnType","generatedPropsType","childType","expType","keyType","valueType","prefixIdentifiers","hoistStatic","cacheHandlers","nodeTransforms","directiveTransforms","expressionPlugins","slotted","ssrCssVars","bindingMetadata","isTS","nameMatch","helpers","hoists","imports","temps","identifiers","vFor","vPre","vOnce","childIndex","inVOnce","currentCount","helperString","replaceNode","removalIndex","onNodeRemoved","addIdentifiers","removeIdentifiers","identifier","hoisted","exitFns","onExit","nodeRemoved","assets","resolver","multilines","deindent","comma","needNewline","needsParens","indentLevel","isNested","processCodegen","ifNode","parentCondition","isTemplateIf","userKey","keyIndex","keyProperty","vnodeCall","parseResult","forNode","valueAlias","keyAlias","objectIndexAlias","renderExp","isTemplate","keyProp","keyExp","isStableFragment","fragmentFlag","childBlock","needFragmentWrapper","slotOutlet","inMatch","LHS","RHS","valueContent","iteratorMatch","keyContent","keyOffset","indexContent","memoArgs","buildSlotFn","slotsProperties","hasDynamicSlots","onComponentSlot","hasTemplateSlots","hasNamedDefaultSlot","implicitDefaultChildren","seenSlotNames","conditionalBranchIndex","slotElement","slotDir","slotChildren","slotLoc","slotName","slotProps","dirLoc","staticSlotName","slotFunction","vIf","vElse","conditional","buildDefaultSlotProperty","vnodeTag","isExplicitDynamic","isProp","isDir","builtIn","isDynamicComponent","vnodeProps","vnodeChildren","vnodePatchFlag","vnodeDynamicProps","dynamicPropNames","vnodeDirectives","shouldUseBlock","propsBuildResult","dirArgs","runtime","trueExpression","modifier","hasDynamicTextChild","propsNamesString","elementLoc","mergeArgs","runtimeDirectives","hasRef","hasClassBinding","hasStyleBinding","hasHydrationEventBinding","hasDynamicKeys","hasVnodeHook","pushMergeArg","analyzePatchFlag","isEventHandler","isVBind","isVOn","directiveTransform","needRuntime","propsExpression","classKeyIndex","styleKeyIndex","hasDynamicKey","isHandlerKey","classProp","styleProp","knownProps","nonNameProps","slotArgs","expectedLen","augmentor","shouldCache","isMemberExp","isInlineStatement","hasMultipleStatements","hasText","callArgs","WeakSet","rawExp","expString","bindingType","assignmentExp","expression","inSingle","inDouble","inTemplateString","inRegex","curly","square","paren","lastFilterIndex","pushFilter","isModuleMode","ast","sourceMap","optimizeImports","runtimeGlobalName","runtimeModuleName","ssrRuntimeModuleName","withoutNewLine","onContextCreated","hasHelpers","useWithBlock","VueBinding","preamble","toJSON","getOwnPropertySymbols","asAttr","baseResult","directiveToUse","isInvalidType","handlerExp","keyModifiers","nonKeyModifiers","eventOptionModifiers","modifierPostfix","targetQueue","onQueue","defaultSettings","localSettingsSaveId","currentSettings","fallbacks","getSettings","setSettings","perf_hooks","pluginId","proxiedOn","proxiedTarget","setRealTarget","_actions","_mutations","_wrappedGetters","_modulesNamespaceMap","_modules","oldScope","_scope","getters","_makeLocalGettersCache","wrappedGetters","computedObj","computedCache","strict","_withCommit","rootState","namespaced","parentState","moduleName","local","noNamespace","_type","_payload","_options","payload","commit","forEachMutation","forEachAction","rootGetters","_devtoolHook","forEachGetter","rawGetter","forEachChild","gettersProxy","splitPos","localType","pluginDescriptor","setupFn","enableProxy","enableEarlyProxy","__VUE_DEVTOOLS_PLUGIN_API_AVAILABLE__","__VUE_DEVTOOLS_PLUGINS__","homepage","logo","packageName","componentStateTypes","addTimelineLayer","addInspector","treeFilterPlaceholder","getInspectorTree","inspectorId","rootNodes","getInspectorState","modulePath","nodeId","gettersKeys","storeState","leafKey","_custom","abstract","moduleMap","_children","editInspectorState","subscribe","notifyComponentUpdate","sendInspectorTree","sendInspectorState","addTimelineEvent","layerId","subscribeAction","_time","groupId","subtitle","textColor","rawModule","_rawModule","rawState","addChild","getChild","rawRootModule","targetModule","newModule","this$1$1","rawChildModule","devtools","_committing","_actionSubscribers","_subscribers","_devtools","topFromScrollTop","scrollTopFromTop","_regeneratorRuntime","Op","$Symbol","iteratorSymbol","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","define","innerFn","outerFn","tryLocsList","protoGenerator","Generator","Context","makeInvokeMethod","tryCatch","ContinueSentinel","GeneratorFunction","GeneratorFunctionPrototype","IteratorPrototype","getProto","NativeIteratorPrototype","Gp","defineIteratorMethods","_invoke","AsyncIterator","PromiseImpl","invoke","__await","unwrapped","previousPromise","callInvokeWithMethodAndArg","delegateResult","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","methodName","resultName","nextLoc","pushTryEntry","locs","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","iterable","iteratorMethod","doneResult","isGeneratorFunction","genFun","awrap","iter","skipTempReset","rootRecord","rval","exception","caught","hasCatch","hasFinally","finallyEntry","thrown","delegateYield","enumerableOnly","sym","_objectSpread","_defineProperty","getOwnPropertyDescriptors","prim","toPrimitive","hint","_toPrimitive","_toPropertyKey","asyncGeneratorStep","gen","_next","_throw","_asyncToGenerator","injectKey","$store","registerModule","preserveState","unregisterModule","hasModule","hotUpdate","newOptions","committing","vuex","globalFetch","_ref","_callee","urlOrRequest","request","Request","headers","page_id","_x","_ref2","_callee2","_context2","_x2","_x3","post","_ref3","_callee3","noHeader","pageId","noReturn","_context3","sendRequest","_x4","_x5","_x6","_x7","_x8","_x9","deleteRequest","_ref4","_callee4","_context4","_x10","_x11","_x12","_x13","put","_ref5","_callee5","_context5","_x14","_x15","_x16","_x17","_x18","_ref6","_callee6","_context6","Headers","_x19","_x20","_x21","_x22","_x23","_x24","_x25","pageOverlayReturntarget","article_overlay_open","page_overlay_open","page_overlay_content","page_overlay_content_data","page_overlay_returntarget","burger_menu_links","secondary","article_overlay_data","sub_navigation_links","generalLink","subLinks","dictionary_visible","user_id","user_has_notifications","show_user","user_authorized","user_name","user_profile_img","set_dictionary_visible","open_page_overlay","pageOverlayOpeningCallback","close_page_overlay","pageOverlayClosingCallback","reset_page_overlay","set_user_id","set_user_has_notifications","set_show_user","set_user_authorized","set_user_name","set_user_profile_img","set_page_overlay_content","set_page_overlay_content_data","set_burger_menu_links","linkData","set_page_overlay_returntarget","set_article_overlay_data","set_sub_navigation_links","allLinks","set_article_overlay_open","set_page_id","closePageOverlay","openPageOverlay","overlayContent","returnTarget","getArticleOverlayContent","myHeaders","fetchConfig","setPageId","setUserData","userData","isObjectNotNullOrEmpty","userId","firstName","lastName","userAuthorized","showUser","userProfileImg","userHasNotifications","setUserProfileImage","profileImage","trackPurchaseData","_window","dataLayer","orderId","ecommerce","purchaseEvent","collections","set_collections","set_labelCollection","collectionName","labels","returnCollection","labelCollection","labelKey","emptyIfMissing","existLabel","is_searching","facets","populated_facet_ids","queries","sorting","show_results","search_inprogress","more_search_inprogress","firstPageSize","showMorePageSize","skip_take","scoped_total","replaceQueryInUrl","search_overlay_scope","filter_overlay_scopes","search_page_redirecturl","autocomplete_result","autocomplete_inprogress","dictionary_data","set_is_searching","set_dictionary_data","set_replaceQueryInUrl","bool","set_search_page_redirecturl","set_filter_overlay_scopes","guids","set_scoped_result","guid","add_populated_facet_ids","add_scoped_result","set_scoped_total","set_scoped_facets","begin_search","complete_search","new_scope","_scope$firstPageSize","_scope$showMorePageSi","take","set_scoped_query","set_scoped_skip_take","_scope$skip","_scope$take","begin_autocomplete","set_autocomplete_result","set_sorting_value","complete_autocomplete","begin_more_search","complete_more_search","patch_scoped_facets","facet","scopedFacets","deepClone","facetGroup","facetValues","facetValue","facetId","setSearchQuery","initSearchScope","searchParams","facetParams","facetGroupId","groupedFacetParams","performSearch","searchRequestGET","hits","totalHits","getUrlQuery","performZeroSearch","getBaseSearchUrl","nonEmptyFacetIds","facetIdsWithCount","performMoreSearch","refreshSearches","initAutocomplete","getAutocomplete","autocompleteRequestGET","_getters$getFacets","initialQueryParameters","urlParams","urlParamsKeyValue","_state$skip_take$scop","URLSearchParams","getUrl","_getters$getFacets2","_state$skip_take$scop2","getFacets","_step","_iterator","_createForOfIteratorHelper","filteredFacetValues","newFacetGroup","allPrimaryTags","_getters$getFacets3","facetGroupType","selectedTags","_getters$getFacets4","dictionaryData","dictionaryFilterBySearch","dictionarySearch","word","canShowMore","skipTake","wordDefinitions","add_word_definition","wordId","wordDefinition","fetch_word_definition","getWordDefinitionById","signUpCompleteShowReceipt","signUpEventId","isSubmitting","completeSignup","set_signUpEventId","set_submitting","signUpToEvent","fundraiseCreationCompleteShowReceipt","isFundraiseImageUploading","personalStoryImagesUploading","personalDonationShowReceipt","fundraiseCreationEventId","donation_settings","donationId","linkToInformationHowDonationBenefits","defaultPreset","recurring","isEditing","isFundraiseImageUploadError","isPersonalStoryImageUploadError","completeFundraiseCreation","completePersonalDonation","set_fundraiseCreationEventId","set_donation_settings","set_fundraise_image_uploading","isUploading","add_personal_story_image_uploading","remove_personal_story_image_uploading","set_fundraise_image_upload_error","set_personal_story_image_upload_error","set_editing","setEditing","discardUploadedImage","FETCHMETHOD","uploadFundraiseImage","createPersonalfundraising","continueUrl","updatePersonalfundraising","deletePersonalfundraising","submitPersonalDonation","isPbs","paymentMethod","paymentUrl","submitPersonalDonation2","fundraisingCampaignId","showReceipt","errorMessage","personalDonationInput","stafetId","donationFor","donationTeam","donationParticipant","donationFlowId","userInputs","steps","currentStep","basketTotalPrice","teams","participants","store_personal_donation_input","set_stafet_id","set_donation_for","set_donation_team","team","set_donation_participant","participant","set_teams","set_participants","set_donation_flow_id","set_user_inputs","set_steps","set_current_step","set_basket","set_basket_total_price","price","set_error_message","set_is_submitting","teamId","nonMatchingValuesList","_toConsumableArray","updatedBasket","totalPrice","intPrice","donationSubmit","getUserInputsBody","formdata","deltagerId","sponsorId","holdKode","isAnonymous","taxDeduction","cpr","cvr","companyLogo","sessionStorage","donationStotLysSubmit","stafetKode","supportSelectorSubmissionModel","supportStafet","supportHold","supportDeltager","filterList","_updateBasketAndTotals","mappedArray","cart","lineItems","mappedItem","_item$prices","_item$prices2","_item$validationError","productNumber","sku","imageUrl","hasErrors","validationErrors","variantData","minAmount","minQuantityPerOrder","maxAmount","maxQuantityPerOrder","variant","quantity","displayPrice","prices","priceType","displayBeforePrice","soldOut","alreadyRemoved","_mapBasketItem","_getMappedBasketItems","totals","containsUdlaansvare","basketState","SET_BASKET_ERRORS","hasValidationErrors","SET_BASKET_CONTAINS_UDLAANSVARE","SET_BASKET","SET_BASKET_TOTALS","_totals$lineItemsCoun","_totals$subTotal","_totals$discountTotal","_totals$taxTotal","_totals$total","_totals$shippingTotal","productsAmount","lineItemsCount","productsPrice","subTotal","discount","discountTotal","VAT","taxTotal","shippingTotal","isShippingFree","areAllItemsFree","isOrderFree","SET_INITIAL_BASKET_TOTALS_PRODUCTS_AMOUNT","newTotals","fetchBasket","addToBasket","basketPageUrl","adjustQuantity","newquantity","removeItems","updateActiveDeliveryType","shippingMethod","checkoutState","sessionStorageCheckoutState","retrievedState","checkoutSteps","_getCreateOrderData","_p$invoice$public$pub","_p$invoice","_p$invoice$public$pub2","_p$invoice2","_p$invoice$company$co","_p$invoice3","_p$payment$paymentDat2","_p$payment$paymentDat3","_state$stepTwo$pickUp","purchaseData","_p$payment$paymentDat","payment","paymentData","customerType","invoice","userInformation","stepTwo","activeDeliveryType","companyOrInstitutionName","company","companyName","publicInstitutionNameInput","companyDepartmentOrInstitutionDepartment","companyDepartment","publicInstitutionDepartmentOrContact","deliveryAddress","addressOption","addressLine1","pickUpAddressData","addressLine","zipCode","postalCode","city","department","servicePointId","showDifferentAddress","delivery","contactFirstName","contactLastName","deliveryName","deliveryDepartment","publicInstitutionUserId","publicInstitutionEan","companyCvr","invoiceAddress","mobilePhone","bankInformation","bankRegistrationNumber","pbsData","reg","bankAccountNumber","checkoutStore","_checkoutState","stepOne","showPickUpAddresses","differentAddressData","deliveryDataValidationSuccess","pickUpAddresses","activeDeliveryAddress","stepThree","paymentDataValidationSuccess","activePaymentMethod","public","udlaanData","startDate","endDate","latitude","longitude","udlaansData","terms","error_overlay_scope","set_checkout_steps","set_udlaans_data","setStateInSessionStorage","set_service_points","servicePoints","servicePoint","set_purchase_data_invoice","set_purchase_data_delivery","set_purchase_data_payment","set_show_different_address","set_show_pick_up_addresses","set_active_delivery_type","set_active_delivery_address","set_pick_up_address_data","clear_pick_up_address_data","set_different_address_data","set_payment_data","set_active_payment_method","set_payment_data_validation_success","set_delivery_data_validation_success","complete_purchase","update_checkout_step","_state$checkoutSteps","nextStepNumber","nextStep","stepNumber","update_checkout_step_been_filled","_state$checkoutSteps2","beenFilled","fetchServicePoints","placeOrder","hasError","placeOrderFrivillige","stateToSave","onbeforeunload","is_submitting","member_list_data","memberList","member_data","memberName","memberRoles","memberImgSrc","memberProfileText","memberImgAlt","answerLink","member_group_id","selected_member_id","active_member_id","active_group_id","direct_message_thread_id","direct_message_thread_data","direct_message_threads","set_add_users_data","new_chat_users","show_user_search","theme_statistics","group_statistics","post_statistics","post_latest_comment","post_comments","set_member_list_data","memberListData","set_member_data","memberData","set_direct_message_thread_id","chatId","set_direct_message_thread_data","set_direct_message_threads","threads","add_users_data","set_theme_statistics","themeId","statistics","set_group_statistics","set_post_statistics","postId","set_post_latest_comment","latest_comment","set_post_comments","set_new_chat_users","set_show_user_search","getGroupStatistics","getThemeStatistics","getPostStatistics","getPostLatestComment","getPostComments","submitLikePost","like","getMemberListData","_callee7","_context$state$member","_context7","getMemberData","_callee8","_context8","getDirectMessageThreads","_callee9","_url","_response","_config$chatId","_context9","toProfileId","refreshDirectMessageThreads","_callee10","_context10","submitSavePost","_callee11","_context11","submitNewComment","_callee12","_context12","submitNewSubComment","_callee13","_context13","submitLikeComment","_callee14","_context14","submitDeleteComment","_callee15","_context15","submitEditComment","_callee16","_context16","submitMemberApplication","_callee17","applicationUrl","_context17","removeForumProfilePicture","_callee18","_context18","submitForumProfilePicture","_callee19","_context19","submitCreatePost","_callee20","_context20","submitEditPost","_callee21","_context21","deletePost","_callee22","_context22","submitCreateGallery","_callee23","_context23","submitSaveProfile","_callee24","_context24","submitEditGallery","_callee25","_context25","getDirectMessageThreadData","_callee26","_context26","submitDirectMessageThreadComment","_callee27","threadDataPromise","messageThreadsPromise","_context27","editDirectMessageThreadComment","_callee28","_context28","commentId","deleteDirectMessageThreadComment","_callee29","_context29","deleteDirectMessageThread","_callee30","_context30","addUserDirectMessageThreadComment","_callee31","_context31","searchForUser","_callee32","_context32","clearSearchForUser","createNewDirectMessageThread","_callee33","_context33","userIds","clearDirectMessageThread","chat","chatIcon","chatName","leaveGroup","_callee34","_context34","returnUrl","rejectNotification","_callee35","_context35","notificationId","approveNotification","_callee36","_context36","rejectGruppeadgangsanmodning","_callee37","_context37","gruppeadgangsanmodningId","approveGruppeadgangsanmodning","_callee38","_context38","createCancerForumProfile","_callee39","_context39","deleteCancerProfile","_callee40","_context40","deleteCancerProfileAndData","_callee41","_context41","createEvent","_callee42","_context42","editEvent","_callee43","_context43","EVENT_EDIT","deleteEvent","_callee44","_context44","DELETE_EVENT","editFrivilligeProfile","_callee45","_context45","ROOT_MAPPE_KODE","member_list_data_total","active_request_roles_data","active_pending_roles_list","active_confirmed_roles_list","active_overlay_mode","active_item_name","active_item_id","activity_list","edit_mode_active","active_group_name","active_folder_id","active_folder_name","active_file_name","active_file_id","delete_item_type","delete_item_id","delete_item_name","file_type_dropdown_options","folder_dropdown_options","globalGruppeKode","set_file_type_dropdown_options","set_member_list_data_total","set_folder_dropdown_options","_o$value","set_active_request_roles_data","set_activity_list","set_active_pending_roles_list","set_active_confirmed_roles_list","set_active_overlay_mode","set_edit_mode_active","set_delete_item_type","set_delete_item_id","set_delete_item_name","set_active_item_id","set_active_item_name","set_active_folder_name","set_active_file_name","set_global_gruppe_kode","gruppeKode","get_global_folder_id","setActiveOverlayMode","setActiveItemName","setEditModeActive","setGlobalGruppeKode","getDeleteItemType","getDeleteItemName","getDeleteItemId","delete_type","getActiveItemName","getActiveItemId","getActivePendingAndConfirmedRolesList","roles","allRoles","newPendingRoles","newConfirmedRoles","roleStatus","getFolderDropdownOptions","getMemberRequestRolesData","active_user_id","fetchGruppemedlemmerData","members","removeMember","frivilligprofilId","submitCreateOrEditFolderOrFile","parentMappeKode","mappeName","submitGroupAccessRequest","folder","submitCreateNewFile","submitUploadNewFile","mappeKode","submitMoveFileOrFolder","submitConfirmDelete","deleteStatus","submitConfirmDeleteProfile","frivillige","submitConfirmDeleteMember","updateEvent","joinGroup","_config$reason","dataArray","_dataArray$find","totalNumberOfTeams","previousTeams","teamLights","teamLightsTotal","teamDonations","teamDonationsTotal","teamParticipantDetails","set_previous_teams","teamslist","set_total_number_of_teams","set_team_lights","set_team_lights_total","set_team_participant_details","set_team_donations","set_team_donations_total","getPreviousTeams","getTeamParticipantDetails","getTeamDonations","getTeamLights","joinATeamSubmit","_getFieldValue","_getFieldValue2","deltagere","getFieldValue","childDeltagere","isChild","isFighter","marketing","sflNewsletter","fighterNewsletter","donationItems","lysposer","ownTextLysposer","lysposeSubmissionModels","shirt","freeLunch","firstTimeFighter","joinAsAFighterSubmit","joinATeam","fighter","addDeltagereSubmit","createTeamSubmit","_sourceUrl$searchPara","previousHoldkode","relativeUrl","teamName","slogan","donationGoal","newsletter","editTeamSubmit","stafetProfileUpdatedSubmit","submitDeleteStafetProfile","submitUpdateStafetProfile","ruter","ruteUpdates","deltagerRuteUpdates","set_team_id","set_ruter","set_deltagere","init_rute_counter","ruteId","increment_rute_counter","decrement_rute_counter","set_rute_counter","reset_rute_update","init_deltager_counter","increment_deltager_counter","decrement_deltager_counter","set_deltager_counter","reset_deltager_update","getDeltagerRuteAmount","_ref7","shouldDisableApplyButton","_ref8","getStafetRoundCounter","ruterArray","rute","ruteName","meters","detailsKm","detailsRounds","dynamicUpdate","deltagereResult","deltager","ruterForDeltager","participantName","participantRole","stafetRoundCounterSubmit","_ref9","deltagerArray","submitting","aktivitet_list","rolle_list","gruppe_list","imgSrc","profileText","imageAlt","SET_AKTIVITET_LIST","SET_ROLLE_LIST","SET_GRUPPE_LIST","SET_IS_SUBMITTING","SET_MEMBER_DATA","fetchAktiviteter","fetchGrupper","activityId","fetchRoller","submitRoleRequest","deleteRolletildeling","createProfil","submitFrivilligProfilePicture","removeFrivilligProfilePicture","editFrivilligprofil","fetchMemberData","userProfileId","deleteFrivilligprofil","lottery_ticket","isWinningTicket","prize","SET_LOTTERY_ROUNDS","lottery_rounds","SET_LOTTERY_TICKET","getLotteryTicketResult","lotteryTicketId","roundNumber","logout","createFrivilligjob","getGruppeemner","jobId","GETMETHOD","updateFrivilligjob","removeFrivilligjobImage","submitFrivilligjobImage","deleteFrivilligjob","dictionary","fundraising","donation","checkout","forum","set_form","formObject","update_form","allOtherForms","setForm","stafet","stafetRoundCounter","frivilligprofil","lottery","mitid","frivilligjob","factBoxContentId","onMounted","factBoxDom","dictionaryWordHighlight","containingParent","paragraph","toggleDisplay","factBoxContentDom","Store","factbox","factBoxContentElement","_createElementVNode","xmlns","viewBox","stroke","Derived","hasNativeReflectConstruct","sham","Super","NewTarget","ReferenceError","startAt","perView","focusAt","autoplay","hoverpause","bound","swipeThreshold","dragThreshold","perSwipe","touchRatio","touchAngle","animationDuration","rewindDuration","animationTimingFunc","waitForTransition","peek","cloningRatio","breakpoints","swipeable","carousel","slide","nav","EventsBus","hop","Glide","_t","extensions","glide","transformers","Run","Transition","Move","_o","_i","wait","later","leading","throttled","at","remaining","trailing","matched","nodeList","EventsBinder","closure","Components","Direction","multiplier","Sizes","slideWidth","Gaps","Clones","Peek","Html","Events","collectSlides","slides","_r","Translate","TRANSFORMERS","translate3d","mozTransform","getStartIndex","isOffset","getTravelDistance","travelDistance","startWidth","token","setupSlides","setupWrapper","wrapperSize","reductor","_Glide$settings","cloneCount","_clone","_Components$Html","half","_i2","_i3","Resize","Binder","Build","typeClass","removeClasses","_Glide$settings$class","calculate","isStart","isEnd","viewSize","calculateForwardIndex","isBound","normalizeForwardIndex","calculateBackwardIndex","normalizeBackwardIndex","_m","Swipe","swipeSin","swipeStartX","swipeStartY","passive","bindSwipeStart","swipe","bindSwipeMove","bindSwipeEnd","subExSx","subEySy","powEX","powEY","swipeHypotenuse","swipeCathetus","asin","PI","_Glide$settings2","swipeDistance","swipeDeg","unbindSwipeMove","unbindSwipeEnd","_Glide$settings3","unbindSwipeStart","changedTouches","Images","dragstart","Anchors","prevented","Controls","_arrowControls","addBindings","removeActive","controls","setArrowState","resetArrowState","disableArrow","removeBindings","Keyboard","press","Autoplay","Breakpoints","_Core","subClass","superClass","_super","_createElementBlock","_normalizeClass","_hoisted_2","_hoisted_4","_toDisplayString","_hoisted_5","truncateSummary","_hoisted_3","dayRange","_hoisted_6","monthName","_hoisted_7","_hoisted_8","_hoisted_9","_hoisted_10","_hoisted_11","_hoisted_12","_hoisted_13","_hoisted_14","_hoisted_15","_hoisted_16","_hoisted_17","_hoisted_18","_hoisted_19","_hoisted_20","_hoisted_21","_hoisted_22","statusColor","statusDisplayName","typeDisplayName","_hoisted_23","_hoisted_24","_hoisted_25","_hoisted_26","quotee","_preset$transform","urlWithoutQueryParams","recipe_4_5","locationCard_5_4","reportCard_4_5","imageTransform","$setup","layoutA","useStore","groupsCount","_statistics$value","colorTheme","svgIcon","SliderCardBasic","ActivitySliderCard","PodcastSliderCard","CaseCard","ReportCard","ThemeCard","glideBehaviour","contentJson","carouselId","_news$activities$case","componentRootEl","glidePosition","displayProperties","configFunction","viewportSize","numberOfCases","glideConfig","configCaseCarousel","configPodcastCarousel","configFeaturedGroups","configByViewport","unifyCardHeight","sliderDOM","_event$target","_nextCard$attributes$","nextCard","_hoisted_1","_Fragment","_renderList","_createCommentVNode","_createBlock","_resolveDynamicComponent","_ctx$link","ContentCarousel","_component_SliderCardBasic","_component_ContentCarousel","rx","tooltipName","tooltipAccessibleName","_props$tooltipName","wordPopup","closeButton","clickOutsideHandler","showDialog","arrowPosition","currentLeftPosition","currentRightPosition","currentBottomPosition","popupWidth","calculatedLeftPosition","exceedsBottomEdge","exceedsLeftEdge","exceedsRightEdge","calculatedRightPosition","tapTrap","_cache","_withKeys","toggleAccordion","accordionTarget","DOMs","accordion","actionResponseText","lifeTime","fadeDuration","visibilityStatusClass","lifeTimeMinusAnimationTime","_normalizeStyle","numberOfMembers","numberOfPosts","memberCount","postsCount","_statistics$value2","handleLeaveGroup","spotCardData","handleButtonClick","linkRef","buttonTitle","buttonFill","GroupDetails","SpotCard","SpotCardGrid","spotCard","isSearching","showNotMemberComponents","_store$state$search$r","_ctx$groups","_ctx$groups2","_component_SpotCardGrid","_component_SpotCard","_component_ThemeCard","_component_GroupDetails","users","roleCardData","startDeleteRoleOverlay","groupRoleId","activityName","roleName","groupName","isApproved","ActiveRoleListCard","rolesData","_props$rolesData","pendingRoles","confirmedRoles","_ctx$rolesData","_ctx$confirmedRoles","_component_ActiveRoleListCard","_ctx$rolesData2","_ctx$pendingRoles","returnedLabel","deleteCallback","hideStatus","hideEdit","GetLabel","displayActionButtons","editUrl","tagindex","_withModifiers","$event","_hoisted_27","formLink","localValue","onChangeCallback","formFieldName","customConfig","TooltipComponent","isRequired","isValidationError","errorMessageLabel","helpMessageLabel","minDate","maxlength","validatorFunction","radioOptions","selectOptions","readOnly","isRichText","_props$modelValue","autoSelectFirstRadio","inputHasValidationErrors","formFieldFormBinder","formFieldCommonOptions","_component_TooltipComponent","startAmount","displayMessage","setAmount","doNotUseInputValidation","ariaDescribedby","preventWrongInput","onInput","headerList","richText","replaceAll","decodeURI","getDocumentIcon","acceptedFileTypes","fileErrorMessage","maxAttachments","fileIdCount","isOriginal","filesToRemove","filesToAdd","clearValidationError","formatFileSize","sizeKB","addFile","eventFiles","eventFile","MAX_FILE_SIZE_MB","newFile","removeFile","fileToRemove","srcset","altText","AmountSelector","handleDeleteButton","miniBasket","errorMaxAmountMessage","errorMinAmountMessage","cancelRemoveItem","displayMaxAmountMessage","displayMinAmountMessage","validationError","displaySoldOutMessage","displayAlreadyRemovedFromBasket","displayAlreadyRemoved","displaySoldOut","focusTarget","inputAmount","debounce","_component_AmountSelector","_ctx$getLabel","BasketCard","showPaymentOptions","basketCards","displayObsMessage","_store$state$basket$t","_store$state$basket$t2","displayBasketErrorMessageClass","asideResults","_component_BasketCard","_ctx$asideResults","_ctx$asideResults2","_ctx$asideResults$isS","_ctx$asideResults3","_ctx$asideResults4","_ctx$asideResults5","_ctx$asideResults6","_hoisted_28","_hoisted_29","_hoisted_30","_ctx$asideResults7","_hoisted_31","_hoisted_32","_hoisted_33","_hoisted_38","_hoisted_39","BasketAside","dataLoaded","cartIsEmpty","deleteItemsQueue","variables","itemSku","onRemoveItem","onCancelRemoveItem","_component_BasketAside","onBeforeMount","variants","currentVariantSku","pdf","soldOutText","soldOutReason","rolePageUrl","hasRequiredRights","_props$currentVariant","_variantData$value$st","unSubmitted","parsedVariants","placeholderVariant","variantList","pdfData","currentVariant","currentUrlName","productUrlName","displayHasRequiredRightsMessage","updatePageUrlWithVariantName","newUrl","_replaceLastElementInUrl","urlName","updateDisplayNoVariantChosenMessage","displayNoVariantChosenMessage","addToCart","openRequestRoleOverlay","outOfStock","_ctx$pdfData","_component_CaseCard","glideId","determineGlideConfig","onTransitionendCallback","_methods$statePropNam","_methods$parent","_options$persistent","statePropName","opening","closing","cancelAction","tabTrap","valueToValidate","nonEmptyString","cvrNumber","ValidationRequired","__g","core","__e","O","P","Attributes","bitmap","SHARED","SRC","TO_STRING","TPL","inspectSource","safe","that","own","IS_FORCED","F","IS_GLOBAL","G","IS_STATIC","S","IS_PROTO","IS_BIND","B","expProto","U","W","R","IS_INCLUDES","propertyIsEnumerable","$this","fromIndex","A","K","T","aLen","getSymbols","isEnum","re1","re2","USE_SYMBOL","D","C","unicode","ignoreCase","reCopy","forced","originalExec","KEY","SYMBOL","DELEGATES_TO_SYMBOL","DELEGATES_TO_EXEC","execCalled","nativeRegExpMethod","nativeMethod","arg2","forceStringMethod","strfn","rxfn","defined","SPLIT","$split","maybeCallNative","internalSplit","lastLength","lastLastIndex","splitLimit","separatorCopy","splitter","unicodeMatching","lim","IS_MAP","callbackfn","REPLACE","$replace","functionalReplace","fullUnicode","accumulatedResult","nextSourcePosition","captures","namedCaptures","replacerArgs","getSubstitution","tailPos","keyAttributeName","inAttributes","inSkip","inPatch","assert","assertInPatch","functionName","assertNotInAttributes","assertNotInSkip","assertInAttributes","updatePatchContext","setInAttributes","setInSkip","Blank","truncateArray","applyAttr","attrNS","applyProp","setStyleValue","updateAttribute","elStyle","nodesCreated","nodesDeleted","markCreated","markDeleted","notifyChanges","NodeData","nameOrCtor","_attrsArr","staticsApplied","hasEmptyAttrsArr","getAttrsArr","initialAllocationSize","createArray","importSingleNode","fallbackKey","localName","keyAttrName","keyAttr","attrsArr","recordAttributes","defaultMatchFn","expectedNameOrCtor","expectedKey","currentParent","focusPath","matchFn","argsBuilder","attrsBuilder","getArgsBuilder","getAttrsBuilder","clearUnvisitedDOM","maybeParentNode","getNextNode","enterNode","exitNode","createNode","getNamespaceForTag","alignWithDOM","existingNode","getMatchingNode","insertReferenceNode","moveBefore","currentElement","createPatcher","patchConfig","prevContext","prevDoc","prevFocusPath","prevArgsBuilder","prevAttrsBuilder","prevCurrentNode","prevCurrentParent","prevMatchFn","previousInAttributes","previousInSkip","isDocumentRoot","getAncestry","getFocusedPath","retVal","assertVirtualAttributesClosed","createPatchInner","openElement","openTags","assertNoUnclosedTags","createPatchOuter","expectedNextNode","expectedPrevNode","maybeStartNode","maybeCurrentNode","wasUpdated","wasChanged","assertPatchElementNoExtras","patchInner","patchOuter","bufferStart","queueChange","prevValuesMap","prevAttrsMap","diffAttrs","updateCtx","updateFn","calculateDiff","diffStatics","statics","staticsIndex","elementOpenStart","elementOpenEnd","elementOpen","varArgs","elementClose","currentNameOrCtor","assertCloseMatchesOpenTag","currentPointer","assertNoChildrenDeclaredYet","skipNode","setKeyAttributeName","clearCache","getKey","isDataInitialized","applyAttrs","applyStatics","elementVoid","formatted","caretpos","onSelect","suggestions","_loop","suggestion","forslagstekst","getIteratorMethod","BREAK","RETURN","ITERATOR","iterFn","setImmediate","clearImmediate","MessageChannel","Dispatch","nextTick","port2","port1","onmessage","importScripts","WebKitMutationObserver","promise","$$resolve","$$reject","domain","exit","standalone","characterData","versions","v8","FakePromise","PromiseRejectionEvent","isReject","reaction","exited","_h","unhandled","onunhandledrejection","onrejectionhandled","_w","onFulfilled","onRejected","capability","promiseCapability","$index","alreadyCalled","race","minLength","retryDelay","renderCallback","initialRenderCallback","adgangsadresserOnly","stormodtagerpostnumre","supplerendebynavn","fuzzy","fetchImpl","paramName","paramValue","statusText","responseURL","getAllResponseHeaders","setRequestHeader","AutocompleteController","currentRequest","skipVejnavn","adgangsadresseid","multilinje","startfra","_executeRequest","selectCallback","_requestCompleted","tekst","_handleResponse","_handleFailedRequest","_getAutocompleteResponse","_scheduleRequest","isBinary","inputElm","controllerOptions","optionName","controller","updateControllerOnTextChange","newCaretpos","lastArgs","lastThis","maxWait","lastCallTime","lastInvokeTime","maxing","invokeFunc","shouldInvoke","timeSinceLastCall","timerExpired","trailingEdge","remainingWait","debounced","isInvoking","leadingEdge","onTextChange","lastEmittedText","lastEmittedCaretpos","suggestionContainerElm","inputText","handleInputChanged","emitTextChange","selectSuggestion","selectedSuggestion","keydownHandler","focusHandler","blurHandler","inputChangeHandler","inputMouseUpHandler","updateScheduled","updateInput","shouldUpdateInput","setSuggestions","selectAndClose","setRenderCallback","setSelectCallback","setInitialRenderCallback","selectInitial","addressLineValue","zipCodeValue","cityValue","addressPlaceholder","zipCodePlaceholder","cityPlaceholder","addressLabel","zipCodeLabel","cityLabel","onchangeCallback","onclickCallback","_props$addressLineVal","_props$zipCodeValue","_props$cityValue","watchEffect","mainInput","zipcodeInput","cityInput","dawaAutocomplete","postnr","postnrnavn","etage","dør","adresseringsvejnavn","husnr","clearAddress","onBlur","checkoutScrollToTop","FormInputTextField","FormAddressField","hideAllErrors","firstNameInput","firstNameInputFilled","nameValidator","lastNameInput","lastNameInputFilled","phoneInput","phoneInputFilled","phoneValidator","emailInput","emailInputFilled","emailValidator","addressLineInput","addressLineInputFilled","textAreaValidator","postalCodeInputFilled","cityInputFilled","postalCodeInput","customerTypeInput","isCompany","isPublicInstitution","companyNameInput","companyNameInputFilled","companyNameValidator","companyDepartmentInput","companyDepartmentInputFilled","companyCvrInput","companyCvrInputFilled","cvrValidator","publicInstitutionNameInputFilled","publicInstitutionDepartmentOrContactFilled","publicInstitutionUserIdFilled","publicInstitutionEanFilled","eanNumber","inputIsValid","addressFilled","companyDetailsFilled","publicInstitutionDetailsFilled","showCompanyInputs","showPublicInstitutionInputs","checkoutInvoicePayload","_component_FormInputTextField","autcomplete","_component_FormAddressField","isChosenDelivery","_totals$value$isShipp","_totals$value","determineLabelCollection","updateShowDifferentAddress","updateShowPickUpAddresses","handleShowDifferentAddress","handleChosenDelivery","isStepSubmitting","onUpdated","deliveryNameInput","deliveryNameInputFilled","deliveryDepartmentInput","deliveryDepartmentInputFilled","handleSendToStore","getLabelCheckout","addressResults","displayInputErrors","isDeliveryDataValid","addressRadioInput","setPickUpAddressInStore","handleAddressSelected","getFormAddressFieldLabel","addressKey","DeliveryCard","DeliveryAddress","PickUpAddress","onSubmitCallback","activeDeliveryAddressData","checkoutDeliveryPayload","toStepOne","_component_DeliveryCard","_component_DeliveryAddress","_renderSlot","_component_PickUpAddress","gradientUnits","paymentType","paymentMethodInState","paymentMethodFilled","commitPaymentInputToStore","isAllValid","paymentPayload","paymentOptions","setPaymentTypeOnEnter","determineActivePaymentMethod","currentPaymentMethod","optionIndex","preserveAspectRatio","_hoisted_37","WebshopPaymentSelector","displayUdlaansvarePickupMessage","getLabelCheckoutNavigation","noDeliveryTitle","_store$state$checkout","termsInput","termsInputFilled","paymentDataValidationStatus","_store$state$checkout2","_store$state$basket","checkoutPaymentPayload","handleSendToStep","_component_WebshopPaymentSelector","_hoisted_34","_hoisted_35","_hoisted_36","toStepTwo","CheckoutStepOne","CheckoutStepTwo","CheckoutStepThree","activeStep","determineCheckoutStepContent","handleStepClick","clickedStepNumber","validClickedStepNumber","stepTitle","cssClass","themeName","_document$querySelect","copyText","confirmAction","deleteItemType","deleteItemName","handleRegret","FormCheckbox","cancerForumName","cancerForumConsent","consent","cancerForumErrorLabel","submitCreateProfile","setConsent","_checkbox$checked","_component_FormCheckbox","nonEmptyStringValidator","phonenumber","postalCodeValidator","scriptLoaded","scriptTag","injectScriptTag","reinitialize","apiKey","cloudChannel","modelEvents","tinymceScriptSrc","outputFormat","conf","vueEditor","elementId","inlineEditor","modelBind","mounting","initWrapper","isMounting","inputPlugins","finalInit","normalizedEvents","prevVal","scriptSrc","rerender","getEditor","elementRef","isEditContext","FormInputDropdown","FormRadioGroup","_props$userInfo$nameO","_props$userInfo","_props$userInfo$descr","_props$userInfo2","_props$userInfo$share","_props$userInfo3","_props$userInfo$manda","_props$userInfo4","_props$userInfo5","_props$userInfo6","_props$userInfo7","_props$userInfo8","_props$userInfo9","_props$userInfo$start","_props$userInfo10","_props$userInfo$start2","_props$userInfo11","_props$userInfo$endDa","_props$userInfo12","_props$userInfo$endTi","_props$userInfo13","_props$userInfo$addre","_props$userInfo14","_props$userInfo$posta","_props$userInfo15","_props$userInfo$city","_props$userInfo16","submitPath","nameOfEvent","shareInMainCalendar","mandatoryRegistration","maxParticipants","contactPersonOther","contactPersonName","contactPersonEmail","contactPersonPhone","endTime","showSpinner","contactTypeEnum","SELF","OTHER","contactType","contactTypeRadioOptions","contactPersonMyself","fieldsConfig","updateConfigAndReturnValidState","showError","showErrorAddress","validAddress","validPostalCode","validCity","startDateValidator","startDateStr","startTimeStr","endDateValidator","endDateStr","endTimeStr","isStartDateValid","isEndDateValid","_props$userInfo17","updateContactType","_component_editor","_ctx$maxParticipants","_component_FormRadioGroup","componentDOM","componentKey","DOMComponentKey","getFormattedData","overlayMode","editModeActive","FormInputNameField","FormInputEmailField","FormInputPhoneField","_props$external$userD","_props$external$userD2","_props$external$userD3","_props$external$userD4","_props$external$userD5","_props$external$userD6","_props$external$userD7","_props$external$userD8","_props$external$userD9","_props$external$userD10","_props$external$userD11","_props$external$userD12","_props$external$userD13","_props$external$userD14","phoneNumber","consentBool","newsletterBool","addressValidator","_component_FormInputNameField","_component_FormInputPhoneField","AttachmentsEditor","FormInputTextarea","subjects","jobInfo","_props$jobInfo","_props$jobInfo$startD","_props$jobInfo2","_props$jobInfo$startT","_props$jobInfo3","_props$jobInfo$endDat","_props$jobInfo4","_props$jobInfo$endTim","_props$jobInfo5","_props$jobInfo$expira","_props$jobInfo6","_props$jobInfo7","_props$jobInfo8","_props$jobInfo9","_props$jobInfo10","_props$jobInfo11","_props$jobInfo12","_props$jobInfo$placeN","_props$jobInfo13","_props$jobInfo$addres","_props$jobInfo14","_props$jobInfo$postal","_props$jobInfo15","_props$jobInfo$city","_props$jobInfo16","_props$jobInfo$isCoun","_props$jobInfo17","_props$jobInfo$isSelf","_props$jobInfo18","_props$jobInfo$contac","_props$jobInfo19","_props$jobInfo$contac2","_props$jobInfo20","_props$jobInfo$contac3","_props$jobInfo21","_props$jobInfo22","_props$jobInfo$hasSpe","_props$jobInfo23","_props$jobInfo$hasSpe2","_props$jobInfo24","activeImage","isPeriodValid","expirationDate","hasImageChanged","jobData","jobTitle","aboutJob","offerDescription","expectationDescription","placeName","isCountrywide","isSelfContactPerson","timeConsumption","hasSpecificTime","hasSpecificDate","isDateValid","dateStr","validatePeriod","formatDateTime","timeString","combinedDatetime","isFutureDate","submitCreateJob","setSubject","setSpecificDateCheckbox","setSpecificTimeCheckbox","handleTimeConsumptionSelector","setImage","setIsCountryWide","_component_AttachmentsEditor","_props$content","_props$content2","_props$content3","galleryTitle","galleryContent","galleryImages","showInputErrors","isGallery","onFileChange","fileTypeDropdown","fileTypeDropdownOptions","dokumentType","_component_FormInputDropdown","groupDescription","_props$content$title","_props$content$descri","postTitle","postContent","postFilesToAdd","postFilesToRemove","fileId","redirectUrl","updateTextarea","_ctx$content$files","_ctx$content","ActionResponseBox","ctaId","displayCopyResponse","handleCopyLink","writeText","actionResponseLifeTime","actionResponseFadeOutTime","_component_ActionResponseBox","fadeOut","extraLink","continueUrlWithData","cancerforumProfileId","deleteProfileAndData","deleteProfile","deleteComment","frivilligjobId","redirectAfterDeleteUrl","domId","wordObject","_props$wordObject","wordArticleUrl","fetchDefinition","dictionaryWordDom","higlightDom","dictionaryWordMountedEvent","DictionaryWord","wordObjects","currentWordObject","wordData","DictionaryDOM","Dictionary","showFilter","filterLetter","displayList","letter","startLettersComplete","startLettersDisplay","_dictionaryData$value","filterOnLetter","letterindex","wordindex","allResults","profileId","scrollTreadInToView","handleInputText","searchMessages","searchResults","startNewMessage","changeChat","onOnchange","resultImgSrc","resultImgAlt","hasNotification","firstMessage","creationDate","_arrayLikeToArray","_arrayWithoutHoles","_iterableToArray","minLen","_unsupportedIterableToArray","_nonIterableSpread","arr2","AttachmentsViewer","userSearchTake","newCommentModel","editCommentModel","userSearchModel","userSearchRef","editCommentId","displayInputError","newChatUsers","attachmentsComponent","chatContentComponent","chats","scrollToBottom","listOfUsers","_store$state$forum$ad","showUserSearch","editCommentObj","editCommentFiles","attachments","editCommentFilesToAdd","editCommentFilesToRemove","showCreateNewChatUsersLabel","handleCreateNewChat","addUserToThread","_userSearchRef$value","getClassModifier","editComment","_callback","deleteThread","_callback2","showSearchForUser","saveEditComment","cancelEditComment","onKeyup","timestamp","commentIndex","author","edited","createdOn","_component_AttachmentsViewer","_hoisted_40","_hoisted_41","_hoisted_42","_hoisted_43","_hoisted_44","_hoisted_45","_hoisted_46","_hoisted_47","_hoisted_49","_hoisted_50","_hoisted_51","_hoisted_52","_hoisted_53","DirectMessageNavigation","DirectMessageThread","_component_DirectMessageNavigation","_component_DirectMessageThread","cardData","cardButtonIcons","activeActionTarget","enterFunctions","currentCardFunctions","functionButton","determineStartOverlayFunction","currentOverlay","exitOnEscape","currentCardElement","currentCardFileLink","getLabelOrEmpty","activeActionLink","updateDate","createdDate","createdBy","renameIcon","deleteIcon","moveIcon","downloadLink","FileListCard","parentMappeName","parentMappeUrl","hasParentMappe","initFetchPosts","startOverlayFunction","overlay","_component_FileListCard","showCustomDonation","otherAmount","updateOtherAmount","modifierClass","note","readMoreUrl","_props$readMoreUrl","initTags","tagsTitle","subjectOptions","tagsDropdown","returnTags","handleSubjectsOptions","newTag","alreadyExisting","handleDeleteTag","clickedTagName","hasProfileImage","isSubmissionError","profilePicture","onPictureChange","picture","submitProfilePicture","t0","_profilePicture$value","profilePicturePath","_profilePicture$value2","_ctx$profilePicture","_ctx$profilePicture2","_ctx$profilePicture$u","ProfilePicture","interests","notificationWhenCommentOnSavedPosts","notificationWhenDirectMessage","notificationWhenNewDocument","notificationWhenPostsOnGroups","addressVisible","phonenumberVisible","emailVisible","hasNewsletterSubscription","deleteProfileRedirectUrl","_props$userData","_props$userData$descr","_props$userData$notif","_props$hasNewsletterS","_props$notificationWh","_props$notificationWh2","_props$notificationWh3","_props$notificationWh4","password","notificationFrequency","isSubscribedToNewsletter","gruppeemner","phoneNumberVisible","activeProfilePicture","notificationfrequencyOptions","setInterest","interest","setNotification","notificationSettings","setNewsletterSubscription","saveProfile","profileImageSrc","startUserInfoOverlay","isFrivilligContext","startDeleteUserOverlay","_component_ProfilePicture","_component_FormInputTextarea","groupsList","hasGroupsButton","noGroupsButton","sliderContentJson","sliderId","groupTitle","userInfoExpanded","componentName","_deltagere$runderegis","componentToShow","changesSaved","saveChanges","closeModal","isIndependent","isStafet","closeFlow","forceUseReturn","_wrapRegExp","Day","Month","Year","SequenceNumber","dayPart","monthPart","yearPart","year","getFullYear","day","month","getMonth","getDate","isValidDate","_cprScales","cprWithoutDash","cprNumber","cprArray","cprMod11Validation","cprValidator","previousStepCallback","nextStepCallback","skipStepCallback","submitCallback","updateBasketCallback","holdId","tshirtSizes","donationAmounts","loggedIn","holdData","holdList","redirectToEditProfile","editProfileLinkText","lysposeMinimumAmount","donationMinimumAmount","_stafetCommonStepsProps","submitRetry","submitErrorTitle","submitErrorMessage","submitReturnButtonText","submitRetryButtonText","DropdownWithTags","_props$content$member","_props$content$member2","_props$content$member3","_props$content$member4","_props$content$notifi","_props$content$notifi2","_props$content$notifi3","_props$content$notifi4","_props$content$member5","_props$content$member6","_props$content$member7","personalInfo","ProfileName","relationToCancer","cancerType","memberDiagnosis","cancerTypeChanged","memberRegion","dateOfBirth","memberDateOfBirth","gender","memberGender","NotificationForNewPostInMyGroups","postInGroup","NotificationForDirectMessage","privateMessage","NotificationForCommentOnMySavedPosts","commentOnMyPost","NotificationForNewCommentInMyGroups","commentInMyGroups","NotificationFrequency","frequency","hasProfilePicture","memberImgName","memberImgSize","changePasswordUrl","genderOptions","setCancerTypes","relationToCancerOptions","_component_DropdownWithTags","cancerTypeOptions","regionOptions","_component_FormInputEmailField","_userInformation$valu","displayErrorMessages","disablePhoneInput","updatedUserInformation","addNDaysToDate","setDate","toISOString","FormInputDateField","_store$state$checkout3","_store$state$checkout4","_store$state$checkout5","_store$state$checkout6","udlaanStartDate","udlaanEndDate","udlaanComment","udlaanMinStartDate","udlaanMinEndDate","udlaanStartDateValidator","udlaanEndDateValidator","isUdlaanStartDateValid","isUdlaanEndDateValid","deliveryPayload","_component_FormInputDateField","_component_CheckoutStepTwo","hideCompany","hideDepartment","FrivilligeCheckoutStepOne","FrivilligeCheckoutStepTwo","checkoutInvoice","_props$userData$first","_props$userData$lastN","_props$userData$email","_props$userData$phone","_props$userData$addre","_props$userData$posta","_props$userData$city","invoiceCopy","newCheckoutSteps","checkoutDeliveryStepTitle","handlePostClick","isMasked","postText","latestComment","commentsCount","hasComments","authorId","_ctx$latestComment","_ctx$latestComment2","_ctx$latestComment3","_ctx$latestComment4","_hoisted_48","_ctx$latestComment5","GroupPost","FeaturedPostSpotCard","featuredPostSpotCards","isMember","isLoggedIn","universId","_props$featuredPostSp","_props$featuredPostSp2","numberOfItems","numFeaturedPosts","posts","totalAmount","getMorePosts","_component_featuredPostSpotCard","_component_GroupPost","redirect","loginUrl","closedGroup","openCalendarOverlay","openMedlemsOverlay","openDeleteOverlay","hasFetchedGruppeemner","detailsPageUrl","__onScrollCallbacks","onscroll","buildThresholdList","thresholds","scrollToFirstError","errorElement","elementRect","viewportOffset","cancelUrl","isMindegave","draft","showUnsavedChangesWarning","_props$draft$contactF","_props$draft","_props$draft$contactL","_props$draft2","_props$draft$mobilePh","_props$draft3","_props$draft$email","_props$draft4","_props$draft$cprNo","_props$draft5","_props$draft$cvrNo","_props$draft6","_props$draft$addressL","_props$draft7","_props$draft$postalCo","_props$draft8","_props$draft$city","_props$draft9","_props$draft$paymentM","_props$draft10","_props$draft11","_props$draft12","_props$draft$companyN","_props$draft13","_props$draft$comments","_props$draft14","_props$draft$isTaxDed","_props$draft15","donationSettings","handleBeforeUnload","cprNumberInput","cprNo","cprNumberInputFilled","cvrNumberInput","cvrNo","cvrNumberInputFilled","paymentMethodInput","paymentMethodInputFilled","anonymousDonationInput","isPrivate","commentsInput","commentsInputFilled","taxDeductibleInput","isTaxDeductible","donationAmountInput","donationAmountInputFilled","customDonationAmountInput","customDonationAmountInputIsValid","_donationSettings$val","forceCustomAmountValidation","minimumAmount","customDonation","valueinputfield","enableCustomDonation","addressIsRequired","cprIsRequired","cvrIsRequired","_props$draft16","_props$draft18","_props$draft19","_props$draft$totalPri","_props$draft20","_props$draft17","showCpr","showAddress","disableCustomDonation","donationPayload","referrer","donationKey","isAuthenticated","creatorProfile","ownsPersonalFundraising","detailItems","loginLogoutButton","editFundraising","qrCode","fundraisingId","_ctx$detailItems","_ctx$creatorProfile","_ctx$creatorProfile2","logoutButtonText","loginButtonText","imgUrlBase64","imgAlt","imgUrl","Intl","NumberFormat","currency","maximumFractionDigits","rawProgress","numberOfImages","breadcrumbs","breadcrumb","crumb","crumbindex","showCardTitle","hidable","imageRatio","imageType","isExternalLink","transformImage","urlTarget","labelColorTheme","iconText","smallTitle","street","locationInfo","phoneLabel","emailLabel","emailAddress","daysOne","timeSlotOne","daysTwo","timeSlotTwo","sortingHandler","sortingValue","isInternalLink","_props$result$isInter","_props$result$url","sortOptions","urlMap","counselling","donations","gallery","patientAssociations","jobs","SearchResultCard","RecipeCard","ActivityCard","FrivilligjobCard","LocationCard","FundraisingCard","SortDropdown","DonationCard","GalleryCard","SimpleCard","hideNoResults","avoidSetQueryInUrl","isMultisearch","_news$recipe$events$d","_store$state$search$q","_store$state$search$r2","hit","totalCount","_store$state$search$s","_store$getters$search","searchLabelCollection","_URLSearchParams$get","_urlMap$type","generalSearch","hideTotalCount","hideTags","showSearchTitleCount","showCtaButton","displayModifications","gridModifications","listModifications","flatResults","flatMap","resultCount","totalCountLabel","searchTitleCountLabel","_getLabel","spotCardIndex","getMoreResults","clearFilterOnTag","gridTypeList","shouldRenderSpotCard","isLastRender","realIndex","_NewsPage$LongreadPag","documentType","_PodcastPage$RecipePa","_component_SortDropdown","facetName","groupKey","getResultImageRatio","getResultImageType","_props$content$groupI","GroupCard","hovedgruppekode","disableInitialSearch","initFetchGroups","resultFocusIndex","isNotCancerforum","searchQuery","showResults","displaySearchResults","newResults","newestResult","isKeydownEvent","_args2","_component_GroupCard","totalNumberOfNotifications","guery","removeNotification","actionsElementId","getActionsElementId","getMoreNotifications","trackData","primaryTagsDisplayed","hasTags","tagDisplay","uniquePrimaryTags","termInput","filterOnTag","startFilterOverlay","isClosedGroup","isUserAwaitingAccess","buttonText","handleClick","getInitialButtonText","zoomIn","zoomOut","rotateLeft","rotateRight","rotateDisabled","zoomDisabled","cancelAnimationFrame","imgs","scrollDisabled","escDisabled","moveDisabled","titleDisabled","maskClosable","teleport","swipeTolerance","zoomScale","maxZoom","minZoom","pinchDisabled","imgRef","imgState","setImgSize","maxScale","lastScale","rotateDeg","initX","initY","lastX","lastY","loadError","gesturing","wheeling","H","N","V","Z","J","Q","ee","te","oe","le","onMouseDown","onMouseMove","ae","onMouseUp","onTouchStart","onTouchMove","onTouchEnd","ue","be","ve","ge","he","we","ye","ze","ke","onWheel","onMousemove","onDblclick","onDragstart","toolbarMethods","rotate","VueEasyLightbox","imgRatio","visibleRef","indexRef","imgsRef","activeImg","mobileSlider","showMultiple","activeIndex","updateActiveImg","_ctx$activeImg$alt","_component_vue_easy_lightbox","_withCtx","showStafetRoundCounter","showDonationReceipt","showStafetTeamSignupReceipt","showStafetTeamCreationReceipt","showStafetTeamUpdateReceipt","showCreateHold","showProfileDeleted","showChangesSaved","showProfileCreated","showStafetDonationReceipt","showDeleteCancerProfileModal","showDeletePostOverlay","showDeleteCommentOverlay","showDeleteEventModal","showFrivilligeShopWrongRoleModal","showCalendarOverlay","showLoginOverlay","startBurgermenu","startSearchoverlay","startDonationFlow","headerOptions","_el","InfoCarouselDOM","createProfileUrl","_props$loginUrl","_props$createProfileU","gtmActive","descriptionWrapper","decodeHtml","htmlRaw","txt","descriptionRaw","descriptionHtml","lotteryRounds","lotteryDropdown","controlNumber","displayFormValidationError","displayLotteryTicketError","lotteryTicket","showResultPage","controlNumberValidationErrorLabel","lotteryDropdownOptions","roundName","roundId","resp","_ctx$lotteryTicket","_ctx$lotteryTicket2","saleLabelText","canMessage","canRemove","fetchGruppemedlemmer","canRemoveMembers","handleRemoveMember","strings","loadMore","getRolleText","roller","gruppeName","rolleName","_ctx$memberCount","member","imageSource","memberRole","memberDetails","memberDataFetched","activeFileName","activeFolderName","activeName","folderDropdown","folderDropdownOptions","submitMoveFile","getLabelFromStore","createHoldUrl","_props$createHoldUrl","reactivateHoldUrl","selectedPreviousTeam","teamlist","handleCreateTeam","handleReactivateTeam","teamindex","orders","orderNumber","toLocaleString","orderIndex","productName","productId","smallScreenMode","userName","SubNavProfile","toggleMobileMenu","_store$state$main$sub","originalTrigger","clonedLink","escCloseHandler","closeMobileMenu","SubNavigationMobile","linkIndex","ariaCurrent","_component_sub_nav_profile","mobileMenuOpen","bodysize","overlayElement","resizeObserver","ResizeObserver","unobserve","contentRect","oldScrollY","subNav","showClass","addScrollCallback","scrolledOverViewportHeight","_DOM$querySelector","_DOM$querySelector2","donateButton","overlayLinksEl","PrimaryLink","SecondaryLink","_document$querySelect2","isSimple","showReturnLink","showFunctionalButtons","primaryLinkFirstLast","linkindex","hasSecondaryLinks","_component_PrimaryLink","_component_SecondaryLink","simpleCta","_store$state$search$a","_store$state$search$a2","searchPageUrl","redirectToSearchPage","totalResultCount","facetGroups","filterResults","closeOverlay","groupindex","facetindex","succesButtonData","successButtonData","SuccessPage","isValidEmail","firstNameFilled","lastNameFilled","isValidPhone","consentChecked","_component_SuccessPage","PersonalDonationStep3","_personalDonationInpu","_personalDonationInpu2","_personalDonationInpu3","_personalDonationInpu4","_personalDonationInpu5","_personalDonationInpu6","_personalDonationInpu7","_personalDonationInpu8","_personalDonationInpu9","_personalDonationInpu10","_personalDonationInpu11","_personalDonationInpu12","_personalDonationInpu13","_personalDonationInpu14","_personalDonationInpu15","donationType","donationPresets","donationPresetDefault","pbsFieldsVisible","donationPresetsSelectedIndex","taxDeductible","pbsRegInput","pbsRegInputFilled","pbsAccnumInput","pbsAccnumInputFilled","donationAmount","paymentButtonTextAddition","presetSingleIndexAmount","presetRecurringIndexAmount","donationTypeChangeHandler","_donationPresetsSelec","onBeforeUnmount","hidePBSfields","showPBSfields","submitDonation","_pbsRegInput$value","_pbsAccnumInput$value","recurringDonation","isCustomAmount","_component_PersonalDonationStep3","_props$groupId","_ctx$memberListData$t","_store$state$main$pag","applicationContent","isInputError","_applicationContent$v","uploadedFiles","uploadedfile","_file$value","_ctx$file","lysposeFormUrl","_props$teamId","_props$lysposeFormUrl","holdetsLys","showLoadMore","lys","_component_DonationCard","getTeamParticipantEmails","addDeltagerFormUrl","donationFormUrl","_props$addDeltagerFor","_props$donationFormUr","participantList","participantEmails","getDonateToParticipantUrl","getLysposeToParticipantUrl","supportParticipantLabel","labelName","getParticipantFullName","_participant$lastName","totalAmountCollected","deltagerFeeAmount","lysposerCount","listOfDonations","hasProfile","listOfRecipients","maxRegistrationCount","_store$state$stafetRo","amountKey","handleSetRoundCount","intValue","handleAddOneRound","handleRemoveOneRound","handleSubmit","StafetRoundCounter","participantData","_component_StafetRoundCounter","StafetRoundCounterAccordion","_component_StafetRoundCounterAccordion","createEventUrl","allowedToEdit","GUID","activities","_component_ActivityCard","_components","BurgerMenu","ConfirmChanges","ConfirmDeleteProfile","OpretHoldOverlay","ChangesSaved","SearchOverlay","LoginOverlay","DonationReceiptOverlay","FilterOverlay","HoldetsDeltagere","HoldetsDonationer","HoldetsLys","ArticleOverlay","SignUpForm","ProfileDeleted","FlowEditModal","PersonalDonation","MemberListOverlay","MemberListOverlayFVL","MemberOverlay","MemberOverlayProfileCard","ClosedGroupOverlay","CreateFolderOverlay","CreateNewFileOverlay","UploadNewFileOverlay","ConfirmDeleteOverlay","DeleteRoleOverlay","MoveFileOverlay","DeleteFrivilligjobOverlay","TilmeldHoldKvittering","TilmeldProfilKvittering","HoldOprettelseKvittering","HoldetsRoundCounterOverlay","HoldRedigerKvittering","DeleteCancerProfileModal","DeletePostOverlay","DeleteCommentOverlay","DeleteEventModal","FrivilligeShopWrongRoleModal","CalendarOverlay","FVLConfirmDeleteProfile","overlayState","displayOverlayContent","startPosition","initialTop","verticalMotion","closeSliderGrip","closeSliderGripBehaviour","novalidate","enctype","argument","argStr","dirtyDate","dirtyNumber","dirtyAmount","getUTCDay","setUTCDate","getUTCDate","setUTCHours","getUTCFullYear","fourthOfJanuaryOfNextYear","setUTCFullYear","startOfNextYear","fourthOfJanuaryOfThisYear","startOfThisYear","fourthOfJanuary","_options$weekStartsOn","_options$locale","_options$locale$optio","_defaultOptions$local","_defaultOptions$local2","weekStartsOn","locale","RangeError","_options$firstWeekCon","firstWeekContainsDate","firstWeekOfNextYear","firstWeekOfThisYear","firstWeek","targetLength","sign","signedYear","getUTCMonth","getUTCHours","getUTCMinutes","getUTCSeconds","numberOfDigits","milliseconds","getUTCMilliseconds","dirtyDelimiter","absOffset","hours","minutes","localize","era","ordinalNumber","Y","signedWeekYear","weekYear","quarter","M","L","week","I","isoWeek","dayOfYear","setUTCMonth","E","dayOfWeek","localDayOfWeek","isoDayOfWeek","dayPeriodEnumValue","dayPeriod","X","_localize","timezoneOffset","_originalDate","getTimezoneOffset","originalDate","formatLong","dateTimeFormat","matchResult","datePattern","timePattern","dateTime","utcDate","UTC","getHours","getMinutes","getSeconds","getMilliseconds","lessThanXSeconds","xSeconds","halfAMinute","lessThanXMinutes","xMinutes","aboutXHours","xHours","xDays","aboutXWeeks","xWeeks","aboutXMonths","xMonths","aboutXYears","xYears","overXYears","almostXYears","full","long","medium","short","lastWeek","yesterday","today","tomorrow","nextWeek","dirtyIndex","valuesArray","formattingValues","defaultFormattingWidth","_defaultWidth","_width","argumentCallback","matchPattern","matchPatterns","defaultMatchWidth","matchedString","parsePatterns","defaultParseWidth","valueCallback","formatDistance","tokenValue","addSuffix","comparison","formatRelative","_date","_baseDate","rem100","narrow","abbreviated","wide","am","midnight","noon","morning","afternoon","evening","night","parsePattern","dirtyFormatStr","_options$locale2","_options$locale2$opti","_options$locale3","_options$locale3$opti","_defaultOptions$local3","_defaultOptions$local4","formatStr","formatterOptions","firstCharacter","longFormatter","useAdditionalWeekYearTokens","useAdditionalDayOfYearTokens","allowArrayLike","normalCompletion","didErr","_e2","Setter","_utcDate","_Setter","ValueSetter","validateValue","priority","subPriority","_Setter2","DateToSystemTimezoneSetter","_super2","timestampIsSet","convertedDate","setFullYear","setHours","Parser","dateString","_Parser","EraParser","parseFnResult","mapFn","seconds","twoDigitYear","currentYear","isCommonEra","absCurrentYear","YearParser","isTwoDigitYear","normalizedTwoDigitYear","LocalWeekYearParser","ISOWeekYearParser","_flags","firstWeekOfYear","ExtendedYearParser","QuarterParser","StandAloneQuarterParser","MonthParser","StandAloneMonthParser","LocalWeekParser","dirtyWeek","ISOWeekParser","dirtyISOWeek","DateParser","isLeapYear","DayOfYearParser","dirtyDay","DayParser","LocalDayParser","wholeWeekDays","StandAloneLocalDayParser","ISODayParser","AMPMParser","AMPMMidnightParser","DayPeriodParser","Hour1to12Parser","isPM","Hour0to23Parser","Hour0To11Parser","Hour1To24Parser","MinuteParser","setUTCMinutes","SecondParser","setUTCSeconds","FractionOfSecondParser","setUTCMilliseconds","ISOTimezoneWithZParser","ISOTimezoneParser","TimestampSecondsParser","TimestampMillisecondsParser","dirtyDateString","dirtyFormatString","dirtyReferenceDate","formatString","subFnOptions","setters","tokens","usedTokens","incompatibleTokens","incompatibleToken","usedToken","fullToken","_ret","uniquePrioritySetters","setterArray","_step2","_iterator2","dirtyMonth","dateWithDesiredMonth","daysInMonth","monthIndex","lastDayOfMonth","setMonth","setMinutes","setSeconds","setMilliseconds","dirtyHours","dirtyMinutes","dirtySeconds","dirtyMilliseconds","dirtyDateToCompare","dateToCompare","dirtyLeftDate","dirtyRightDate","dateLeft","dateRight","dateTimeDelimiter","timeZoneDelimiter","timezone","dirtyInterval","_options$step","dates","currentDate","dayOfMonth","endOfDesiredMonth","getDay","dirtyYear","years","months","weeks","days","dateWithMonths","dateWithDays","msToAdd","MODE","hour","minute","second","timezoneZ","timezoneHH","timezoneHHMM","DateTimeFormat","timeZone","hour12","hourCycle","formatToParts","dateTimePattern","plainTime","YY","YYY","YYYY","YYYYY","MM","DDD","MMDD","Www","WwwD","HH","HHMM","HHMMSS","additionalDigits","restDateString","weekday","isBetween","dp__overlay_cell_active","dp__overlay_cell","dp__overlay_cell_disabled","dp__overlay_cell_pad","dp__overlay_cell_active_disabled","dp__cell_in_between","allowStopPropagation","fromEntries","_options$additionalDi","dateStrings","parseYearResult","century","isWeekDate","_year","isoWeekYear","timezoneString","_hours","menuFocused","shiftKeyInMenu","control","setMenuFocused","setShiftKey","monthYear","actionRow","selectionGrid","timePicker","monthPicker","buildMatrix","buildMultiLevelMatrix","setTimePickerBackRef","setSelectionGrid","setTimePicker","setTimePickerElements","arrowRight","arrowLeft","arrowUp","arrowDown","clearArrowNav","setMonthPicker","refSets","menuAppearTop","menuAppearBottom","vNext","vPrevious","enableSeconds","is24","weekPicker","yearPicker","enableTimePicker","static","solo","multiCalendars","toggleOverlay","calendarWrap","calendarDays","openTimePicker","closeTimePicker","incrementValue","decrementValue","openTpOverlay","amPmButton","openYearsOverlay","openMonthsOverlay","nextMonth","prevMonth","nextYear","prevYear","ariaLabels","showSelect","showCancel","showNow","showPreview","previewFormat","enterSubmit","tabSubmit","openMenu","rangeSeparator","textInput","closeOnScroll","modeHeight","allowPreventDefault","closeOnClearValue","closeOnAutoApply","noSwipe","keepActionRow","onClickOutside","defaultedTransitions","defaultedMultiCalendars","defaultedStartTime","defaultedAriaLabels","defaultedFilters","defaultedActionRow","defaultedPreviewFormat","defaultedTextInput","defaultedInline","defaultedConfig","getDefaultPattern","getDefaultStartTime","formatLocale","modelAuto","modelType","partialRange","multiDates","utc","padStart","emitTimezone","internalModelValue","checkBeforeEmit","parseExternalModelValue","autoApply","formatInputValue","emitModelValue","center","menuRef","menuRefInner","inputRef","pickerWrapperRef","altPosition","inputEl","autoPosition","DOCUMENT_FRAGMENT_NODE","openOnTop","menuStyle","xCorrect","setMenuPosition","getScrollableParent","shadowRender","shadow","transitionName","showTransition","menuTransition","calendars","maxDate","arrMapValues","disabledDates","disabledWeekDays","yearRange","allowedDates","disabledTimes","validateDate","validateMonthYearInRange","isDateRangeAllowed","noDisabledRange","checkMinMaxRange","dirtyDateLeft","dirtyDateRight","startOfDayLeft","startOfDayRight","timestampLeft","timestampRight","minRange","maxRange","matchDate","mapDatesArrToMap","highlightedDates","isValidTime","ignoreTimeValidation","maxTime","minTime","hideNavigationButtons","showLeftIcon","showRightIcon","dark","hideNavigation","disableMonthYearSelect","disableYearSelect","menuClassName","dayClass","calendarCellClassName","monthNameFormat","hideOffsetDates","autoRange","noToday","nowButtonLabel","escClose","spaceConfirm","monthChangeOnArrows","presetDates","partialFlow","preventMinMaxNavigation","multiDatesLimit","reverseYears","arrowNavigation","disableTimeRangeValidation","highlightWeekDays","highlightDisabledDays","teleportCenter","weekNumName","weekStart","weekNumbers","calendarClassName","monthChangeOnScroll","dayNames","customProps","selectText","cancelText","hideInputIcon","clearable","inputClassName","fixedStart","fixedEnd","noHoursOverlay","noMinutesOverlay","noSecondsOverlay","hoursGridIncrement","minutesGridIncrement","secondsGridIncrement","hoursIncrement","minutesIncrement","secondsIncrement","sixWeeks","focusStartDate","showLastInRange","timePickerInline","flowStep","dp__pointer","dp__disabled","dp__input_readonly","dp__input","dp__input_icon_pad","dp__input_valid","dp__input_invalid","dp__input_focus","dp__input_reg","setParsedDate","onKeypress","menuMount","calendarWidth","selectDate","closePicker","isLast","skipButtonRef","headerRefs","useRelative","dp__overlay","dp__overlay_col","dp__btn","dp__button","dp__overlay_action","dp__over_action_scroll","dp__button_bottom","dp__overlay_container","dp__container_flex","dp__container_block","focusGrid","dp__flex_row","onMouseover","stretch","dp__instance_calendar","dp__menu_inner","dp__flex_display","dp__inner_nav_disabled","groupedMonths","groupedYears","setHoverDate","selectMonth","selectYear","onSelected","onHoverValue","onActivate","onToggle","setHoverValue","closeTimePickerBtn","disabledTimesConfig","dateWithoutDays","mstoSub","dp__time_col","dp__time_col_block","dp__time_col_reg_block","dp__time_col_reg_inline","dp__time_col_reg_with_button","dp__time_col_sec","dp__time_col_sec_with_button","openChildCmp","dp__inc_dec_button","dp__inc_dec_button_inline","dp__tp_inline_btn_top","dp__inc_dec_button_disabled","dp__time_display","dp__time_display_block","dp__time_display_inline","dp__tp_inline_btn_bottom","onResetFlow","toggleTimePicker","onOverlayClosed","onAmPmChange","disabledArr","setTime","updateHours","updateMinutes","updateSeconds","getSetDateTime","updateTimeValues","getSecondsValue","assignStartTime","updateTime","handleMonthYearChange","updateMonthYear","fromNav","updateModelValue","showSelectionGrid","toggleMonthPicker","toggleYearPicker","onSetRef","dp__year_disable_select","mappedDates","endX","endY","cmp","dp__marker_dot","dp__marker_line","dp__calendar","dp__calendar_next","triggerTransition","classData","dp__active_date","dp__range_start","dp__cell_disabled","onMouseenter","onMouseleave","De","Qe","$t","Fe","Te","Mt","rn","getCalendarDays","Ft","Tt","ln","ot","Vt","Ea","getMarker","handleScroll","handleSwipe","handleArrow","xt","presetDate","selectCurrentDate","getDayClassData","clearHoverDate","isRangeStart","isRangeEnd","dp__cell_offset","dp__cell_highlight","dp__cell_highlight_active","dp__today","dp__date_hover","dp__range_end","dp__range_between","dp__date_hover_start","dp__date_hover_end","dp__cell_auto_range","dp__cell_auto_range_start","dp__cell_auto_range_end","dp__range_between_week","getSidebarProps","onMount","onUpdateMonthYear","onSelectDate","onHandleSpace","onSetHoverDate","onHandleScroll","onHandleSwipe","onTooltipOpen","onTooltipClose","onOverlayOpened","updateFlowStep","childMount","resetFlow","dp__menu_disabled","dp__menu_readonly","dp__menu","dp__menu_index","dp__relative","switchView","dp__menu_content_wrapper","noTz","onUpdateFlowStep","onFocusMenu","onAutoApply","onRangeStart","onRangeEnd","onInvalidFixedRange","onTimeUpdate","onTimePickerOpen","onTimePickerClose","onRecalculatePosition","onClosePicker","onInvalidSelect","onSelectNow","dp__main","dp__theme_dark","dp__theme_light","dp__flex_display_with_input","Jt","en","tn","zn","closeMenu","clearValue","onScroll","updateInternalModelValue","setMonthYear","parseModel","onSetInputDate","onSetEmptyDate","onRealBlur","onFlowStep","VueDatePicker","isUpdate","personalFundraising","hasPhoneNumber","_props$personalFundra","_props$personalFundra2","_props$personalFundra3","_props$personalFundra4","_props$personalFundra5","_props$personalFundra6","_props$personalFundra7","_props$personalFundra8","_props$personalFundra9","_props$personalFundra10","_props$personalFundra11","_props$personalFundra12","_props$personalFundra13","_props$personalFundra14","_props$personalFundra15","_props$personalFundra16","_props$personalFundra17","_props$personalFundra18","_props$personalFundra19","headline","Headline","dateOfbirth","DateOfBirth","fundraisingTarget","FundraisingTarget","dateOfdeath","DateOfDeath","EndDate","fundraiseReason","FundraiseReason","fundraisePersonDescription","FundraisePersonDescription","personalStoryImage","personalStoryImages","fundraiseImage","datePickerRefDateOfBirth","datePickerRefDateOfDeath","datePickerRefEndDate","notificationSms","SmsNotification","notificationEmail","EmailNotification","isUploadingFundraiseImage","headlineFilled","dateOfbirthFilled","endDateFilled","dateOfdeathFilled","fundraisingTargetFilled","fundraiseReasonFilled","fundraisePersonDescriptionFilled","personalStoryImageFilled","fundraiseImageFilled","phoneNumberFilled","fundraiseImageUploader","Id","personalStoryImageUploader","singlePersonalStoryImageUploader","disableSubmit","showPhoneNumberInput","discardFileId","dateOfDeath","fundraiseDescription","coverImage","selectEndDate","selectDateOfBirth","selectDateOfDeath","customPosition","previousButtonPressed","defaultRedirectUrl","deleteButtonPressed","formatFilesize","roundedMb","_component_VueDatePicker","_hoisted_54","imageIndex","_hoisted_57","_hoisted_58","_hoisted_59","_hoisted_60","_hoisted_62","_hoisted_63","_hoisted_64","_hoisted_65","_hoisted_66","_hoisted_67","_hoisted_68","_hoisted_69","_hoisted_70","_hoisted_71","_hoisted_72","_hoisted_73","_hoisted_74","_hoisted_75","_hoisted_76","_hoisted_77","_hoisted_78","_hoisted_80","mapImage","Name","Url","canReply","subComments","editCommentContent","subCommentContent","subCommentFilesToAdd","isAddingSubcomment","isEditingComment","addSubCommentRef","subCommentSubmitButtonDisabled","handleSaveEditedComment","handleEditComment","handleDeleteComment","handleCancelEditedComment","_props$comment","_props$comment2","scrollToAddSubComment","_addSubCommentRef$val","canEdit","subComment","indexSub","_component_PostComment","canLike","PostComment","newComments","subcomments","handleLike","handleSave","startDeleteOverlay","scrollToElement","newCommentContent","newCommentFilesToAdd","isSubmitButtonDisabled","hasMemberAccess","openMemberOverlay","consentCheckbox","readyToSubmit","sendInfomationToServer","messageLabelText","BuySection","isSoldOut","products","productsSearch","materials","materialsSearch","frivilligUrlMap","ProductCard","MaterialCard","NoSearchResults","webshopContext","_products$productsSea","_materialsSearch$prod","_frivilligUrlMap$type","webshopSearch","gridType","_products$materials$p","_ctx$result","fundingAmount","_ctx$result2","formattedString","_ctx$result3","queryString","ProjectCard","SearchFilteredTags","initFetchProjects","_ctx$results","_ctx$tags","_component_SearchFilteredTags","_component_ProjectCard","receiptResults","orderDate","product","productTitle","productTitleAdditional","isUdlaansvare","productQuantity","productPrice","deliveryType","deliveryPrice","initFetchRelays","relays","getRelayDescription","relay","timestampStart","timestampEnd","dateStart","dateEnd","monthStart","monthEnd","dateFromTo","toLocaleDateString","activeTimeslot","roleActivityId","roleId","roleGroupId","roleGroupCheckbox","roleGroupTextField","activitySelectOptions","groupSelectOptions","kode","roleSelectOptions","roleGroupTextFieldFilled","handleActivitiesSelector","handleRoleSelector","handleGroupSelector","handleGroupCheckbox","handleGroupTextField","handleSubmitRoleRequest","aktivitetsId","rolleId","gruppekode","gruppeText","roleGroup","RequestRole","ActiveRolesList","_component_ActiveRolesList","_component_RequestRole","overlayType","overlayComponent","createFundraise","currentUrl","existingItems","getItemFromStorage","nonMatchingKeysObject","getListWithNonMatchingValues","updatedItems","setItemToStorage","existingList","formularName","formular","addToVuex","handleFighterCheck","submitFormular","updateItemFromStorage","submitFormular2","clearFormular","startSignUp","nextStepLabel","previousStepLabel","skipStepLabel","excludeMail","numberOfAdults","numberOfChildren","adults","callbackData","totalNumberOfParticipants","validateParticipants","handleCallbackData","isNumberOfParticipantsValid","isAdultsValid","isChildrenValid","fieldsValiditiy","setNumberOfAdults","updateAdults","setNumberOfChildren","registerDeltagereSelectAdultNumberLabel","registerDeltagereSelectAdultNumberErrorMessage","registerDeltagereSelectChildNumberLabel","registerDeltagereSelectChildNumberErrorMessage","registerDeltagereAdultTitle","registerDeltagereNameLabel","registerDeltagereNameErrorMessage","registerDeltagereEmailLabel","registerDeltagereEmailErrorMessage","registerDeltagereChildTitle","inTotalLabel","inTotalPrice","StafetHeader","StafetAddDeltager","StafetPayment","StafetActions","holdkode","adultPrice","childPrice","updateAddParticipants","yourInformationTotalNewAdultDeltagereLabel","yourInformationTotalDeltagereLabel","yourInformationTotalNewChildDeltagereLabel","updateBasket","goToPayment","_component_StafetHeader","_component_StafetAddDeltager","_component_StafetPayment","yourInformationTotalTitle","yourInformationTotal","_component_StafetActions","formNavigationLastStep","dependentField","dependentFieldValue","dependentFieldValidator","STAFET_JOIN_A_TEAM","STAFET_DONATION","STAFET_JOIN_AS_FIGHTER","STAFET_CREATE_A_TEAM","ADD_DELTAGERE","shirtSize","isFighterFreeLunch","hold","storedFields","sessionStorageIdentifierEnum","updateLocalRefs","stepModel","validateField","fieldValidator","handleErrorMessage","selectYourHoldTitle","selectYourHoldLabel","selectYourHoldErrorMessage","isChildBoolLabel","joinAsFighterTitle","joinAsFighterDescription","joinAsFighterBoolLabel","selectYourFighterTshirtTitle","selectYourFighterTshirtDescription","selectYourFighterTshirtLabel","selectYourFighterTshirtErrorMessage","fighterArrangementTitle","fighterArrangementDescription","fighterArrangementBoolLabel","formNavigationNextStep1","TEAM","STAFET","DELTAGER","isTeamSelected","isTeam","supportTypeEnum","isDeltagerSelected","isDeltager","isSupportTypeValid","isTeamValid","teamValidator","isDeltagerValid","deltagerValidator","supportTypeHandler","teamHandler","participantHandler","supportSelectorConfig","yourSupportSelectorDropdownLabel","shown","yourSupportSelectorDropdownErrorMessage","defaultOption","yourSupportSelectorDropdownPlaceholder","yourSupportSelectorDropdownOptionStafet","yourSupportSelectorDropdownOptionHold","yourSupportSelectorDropdownOptionDeltager","yourSupportSelectorDropdownHoldLabel","yourSupportSelectorDropdownHoldErrorMessage","yourSupportSelectorDropdownHoldPlaceholder","yourSupportSelectorDropdownDeltagerLabel","showErrorMessage","yourSupportSelectorDropdownDeltagerErrorMessage","yourSupportSelectorDropdownDeltagerPlaceholder","handleChangeCallback","numberOfDonations","isLysposerDedicated","addPersonalNote","dedicatedTypeAll","lysposeDedicatedToAll","lightPersonalNoteAll","donationAmountList","dedicationTypeOptions","inMemoryOf","inSupportOf","lysposeDedicatedTo","personalNote","lysposeDedicatedType","_props$data","dedicatedTypeValid","lightDedicatedToValid","setDedicationTypeAll","setLightDedicatedToAll","setPersonalNoteAll","toggleAddPersonalNote","toggleDedicatedLightBag","updateLightDedicatedTo","updatePersonalNote","updateDedicationType","isLysposeDedicatedCheckboxLabel","personalNoteCheckboxLabel","personalizeLightBagsTitle","dedicationTypeTextLabel","dedicationTypePlaceholder","dedicationTypeErrorMessage","lightDedicatedToTextLabel","lightDedicatedToErrorMessage","lightDedicatedToHelpTextLabel","lightDedicatedToAll","personalNoteTextLabel","personalNoteErrorMessage","personalNoteHelpTextLabel","SupportSelector","StafetLysPoserList","AdvancedRadio","lysposeQuantityOption1","lysposeQuantityOption2","lysposeQuantityOption3","donationPerLightBag","lightBagMeta","supportSelector","editorControlledDonationAmountList","taendEtLysUnitLabel","StafetFlowLightBagsMetaListLabels","taendEtLysCustomizeLysposeBoolDedicatedLabel","taendEtLysCustomizeLysposeBoolOwnNoteLabel","taendEtLysLysposeTitle","taendEtLysLysposeDedicatedToLabel","taendEtLysLysposeDedicatedToErrorMessage","taendEtLysLysposeDedicatedToSubtext","taendEtLysLysposePersonalNoteLabel","taendEtLysLysposePersonalNoteSubtext","taendEtLysLysposePersonalNoteErrorMessage","taendEtLysLysposeDedicatedTypeLabel","taendEtLysLysposeDedicatedTypePlaceholder","taendEtLysLysposeDedicatedTypeErrorMessage","taendEtLysLysposeDedicatedTypeInMemoryOf","taendEtLysLysposeDedicatedTypeInSupportOf","showDonationAmoutErrorMessage","showDonationPerLightBagErrorMessage","chooseCustomAmount","setDonationAmount","updateLightBagMeta","updateSupportSelector","setDonationPerLightBag","taendEtLysTitle","taendEtLysDescription","_component_AdvancedRadio","taendEtLysSelectQuantityLabel","taendEtLysSelectCustomQuantityLabel","taendEtLysSelectQuantityErrorMessage","_component_SupportSelector","taendEtLysSelectAmountLabel","taendEtLysSelectAmountPlaceholder","taendEtLysSelectAmountErrorMessage","taendEtLysCustomizeLysposeTitle","_component_StafetLysPoserList","formNavigationNextStep2","formNavigationSkipStep","formNavigationPrevStep","addMoreParticipants","adultParticipants","childParticipants","totalLength","toggleAddMoreParticipants","registerDeltagereTitle","registerDeltagereBoolLabel","formNavigationNextStep3","disableValidation","_userInputs$find","_getFieldValue3","_getFieldValue4","_getFieldValue5","_getFieldValue6","_getFieldValue7","_getFieldValue8","showFirstNameErrorMessage","showLastNameErrorMessage","showEmailErrorMessage","showPhoneErrorMessage","showConsentErrorMessage","setFirstTimeFighter","yourInformationTitle","yourInformationFirstTimeFighterBoolLabel","yourInformationFirstNameLabel","yourInformationFirstNameErrorMessage","yourInformationLastNameLabel","yourInformationLastNameErrorMessage","yourInformationEmailLabel","yourInformationEmailErrorMessage","yourInformationPhoneNumberLabel","yourInformationPhoneNumberErrorMessage","yourInformationConsentBoolLabel","yourInformationConsentBoolErrorMessage","yourInformationNewsLetterBoolLabel","yourInformationFighterNewsletterBoolLabel","yourInformationTotalYourDeltagergebyrLabel","formNavigationNextStep4","finalStepName","toReversed","allStepsComplete","stepData","completed","currentStepName","StafetDeltagPaaHoldStepOne","StafetDeltagPaaHoldStepTwo","StafetDeltagPaaHoldStepThree","StafetDeltagPaaHoldStepFour","FormStepSubmitting","headerSteps","mapStafetHeaderSteps","_getCommonComputedFie","getCommonComputedFields","stepsConfig","handleStepCompleted","unCompletedSteps","yourInformationTotalFighterLabel","yourInformationTotalTaendteLysLabel","setFighterNewsletter","tshirtSize","participateInFreeLunch","showTshirtSizeErrorMessage","setParticipateInFreeLunch","setTshirtSize","formNavigationPreviousStep","setJoinATeam","setIsChild","fighterJoinHoldTitle","fighterJoinHoldDescription","fighterJoinHoldCheckboxLabel","fighterJoinHoldCheckboxErrorMessage","fighterIsChildCheckboxLabel","fighterJoinHoldDropdownLabel","fighterJoinHoldDropdownErrorMessage","yourInformationNewsletterBoolLabel","fighterJoinHoldTotalTitle","fighterJoinHoldTotal","fighterJoinHoldTotalFighter","fighterJoinHoldTotalDeltagergebyr","StafetDeltagSomFighterStepOne","StafetDeltagSomFighterStepTwo","StafetDeltagSomFighterStepThree","donationTypeEnum","PRIVATE","COMPANY","yourSupportPrivateSupportRadioLabel","yourSupportCompanySupportRadioLabel","isDonationAmountValid","showDonationAmountErrorMessage","updateComment","updateDonationType","yourSupportTitle","yourSupportPrivateSupportRadioErrorMessage","yourSupportAmountLabel","yourSupportAmountPlaceholder","yourSupportAmountErrorMessage","yourSupportCommentLabel","yourSupportCommentPlaceholder","yourSupportCommentErrorMessage","_props$userData2","_props$userData3","showCprErrorMessage","setTaxDeduction","yourInformationAnonymousCheckbox","yourInformationAnonymousCheckboxErrorMessage","yourInformationTaxDeductionCheckbox","yourInformationTaxDeductionCheckboxErrorMessage","yourInformationTaxDeductionCheckboxTooltip","yourInformationCprLabel","yourInformationCprErrorMessage","_props$userData4","companyAddress","companyPostalCode","companyCity","companyWebsite","showCvrErrorMessage","showCompanyNameErrorMessage","showCompanyAddressErrorMessage","yourInformationCompanyTitle","yourInformationCompanyNameLabel","yourInformationCompanyNameErrorMessage","yourInformationCompanyAddressLabel","yourInformationCompanyZipCodeLabel","yourInformationCompanyCityLabel","yourInformationCompanyAddressErrorMessage","yourInformationCompanyWebAddressLabel","yourInformationCompanyWebAddressErrorMessage","yourInformationCompanyLogoLabel","yourInformationCompanyLogoFileFormats","yourInformationCvrLabel","yourInformationCvrErrorMessage","StafetDonationStepPrivat","StafetDonationStepVirksomhed","StafetDonationStepOne","StafetDonationStepTwo","minimumDonationAmount","isFormUnavailable","formUnavailable","yourInformationTotalDonationHold","yourInformationTotalDonationDeltager","yourInformationTotalDonationStafet","formNavigationNextStep","_props$userData$isAno","yourInformationAnonymousLabel","StafetDonationTaendLysStepOne","StafetDonationTaendLysStepTwo","StafetDonationTaendLysStepThree","showDescriptionErrorMessage","showTeamNameErrorMessage","showDonationGoalErrorMessage","showSloganErrorMessage","aboutYourHoldTitle","aboutYourHoldHoldnavnLabel","aboutYourHoldHoldnavnErrorMessage","aboutYourHoldDonationGoalLabel","aboutYourHoldDonationGoalErrorMessage","aboutYourHoldDonationGoalSubtext","personalizeYourHoldTitle","personalizeYourHoldDescription","personalizeYourHoldLogoLabel","personalizeYourHoldLogoFileFormats","personalizeYourHoldReasonLabel","personalizeYourHoldReasonErrorMessage","personalizeYourHoldSloganLabel","personalizeYourHoldSloganErrorMessage","StafetOpretHoldStepOne","newsLetterBool","StafetOpretHoldStepTwo","editProfileLink","removeProfileLink","editPasswordLink","_props$userData$newsl","_props$userData$fight","mailSettingsBool","mailSettingsFighterNewsletterBool","setMailSettingBool","setMailSettingFighterNewsletterBool","openConfirmPageOverlay","openDeletePageOverlay","_ctx$userData$phoneNu","editProfilePasswordLinkLabel","editProfileInformationLinkLabel","emailSettingsTitle","emailSettingsDescription","emailSettingsCheckboxNewsletterLabel","emailSettingsCheckboxFighterNewsletterLabel","emailSettingsSaveChangesLabel","deleteProfileDescription","deleteProfileButtonLabel","imgTopPosSticky","imgTopPosStickyInt","stickySliderElementImageContainer","observer","IntersectionObserver","handleIntersection","rootMargin","stickyElm","imageContainer","totalContainerHeight","handleResize","containerRight","textContentArea","isIntersecting","intersectionRect","changeBackgroundColor","changeImage","boundingClientRect","nextElement","getNextElement","currentIndex","containers","parentContainer","imageContainers","contentWrapper","textContentHeight","imgHeight","participantsText","captainText","captains","membersCount","donationGoals","donationGoalsText","currencyText","donationTotal","captain","TeamListCard","filterShown","teamsShownAmount","_component_TeamListCard","numberOfDeltagere","initContent","_store$state$main$use","totalNumberOfPosts","initialItemsCount","itemsCount","_store$state$basket2","itemsCountString","startMegaMenu","FactBox","SecondaryArticleSpotsDOM","contentjson","SecondaryArticleSpots","TooltipDOM","tooltipname","PageIdInit","Accordion","ActionResponseBoxDOM","ActiveGroupsDOM","ActiveGroups","ActiveRoleListCardDOM","roleCard","ActiveRolesListDOM","ActivityCardDOM","AdvancedRadioDOM","tooltiptext","errormessagelabel","helpmessagelabel","isrequired","radiooptions","AmountSelectorDOM","ArticleAnchor","ArticleAnchors","CommunityAttachmentsDOM","CommunityAttachmentsViewerDOM","BasketDOM","Basket","BasketAsideDOM","BasketCardDOM","BreadCrumb","primaryLinksData","secondaryLinksData","simpleCtaElement","simpleCtaData","BuySectionDOM","_BuySectionDOM$datase","_BuySectionDOM$datase2","_BuySectionDOM$datase3","_BuySectionDOM$datase4","_BuySectionDOM$datase5","CalendarOverlayDOM","_parseInt","_parseInt2","CaseCardDOM","CaseCarouselDOM","CaseCarousel","CaseModuleDOM","CaseModule","CategoryPickerDOM","CategoryPicker","ChangesSavedDOM","CheckoutContentDOM","CheckoutContent","CheckoutHeader","CheckoutStepThreeDOM","CheckoutStepTwoDOM","ClosedGroupOverlayDOM","ColorPreview","ConfirmChangesDOM","ConfirmDeleteOverlayDOM","ConfirmDeleteProfileDOM","ContactBanner","CarouselDOM","ContributionSelectorDOM","ContributionSelector","CreateCancerForumProfileDOM","CreateCancerForumProfile","CreateEventDOM","handleComponentProps","CreateEvent","CreateFolderOverlayDOM","_CreateFolderOverlay$","CreateFrivilligeProfileDOM","CreateFrivilligeProfile","CreateFrivilligJobDOM","CreateFrivilligJob","CreateGalleryDOM","_CreateGalleryDOM$dat","_CreateGalleryDOM$dat2","CreateGallery","CreateNewFileOverlayDOM","CreatePostDOM","_CreatePostDOM$datase","_CreatePostDOM$datase2","_CreatePostDOM$datase3","_CreatePostDOM$datase4","CreatePost","CTABoxDOM","CTABox","DeleteCancerProfileModalDOM","DeleteEventModalDOM","DeleteFrivilligjobOverlayDOM","DeleteRoleOverlayDOM","DeliveryAddressDOM","DeliveryCardDOM","DictionaryListDOM","showfilter","DictionaryList","DirectMessageNavigationDOM","externalData","DirectMessagesContentDOM","exturnalData","DirectMessagesContent","DirectMessageThreadDOM","DocumentAndFolderListDOM","_DocumentAndFolderLis","_DocumentAndFolderLis2","DocumentAndFolderList","DonationAmountDOM","DonationAmount","DonationCardDOM","DonationReceiptOverlayDOM","DropdownWithTagsDOM","tagstitle","selectoptions","EditFrivilligProfileDOM","EditFrivilligProfile","FeaturedGroupsDOM","FeaturedGroups","FeaturedPostSpotCardDOM","FeatureNavigationTeamDOM","FeatureNavigationTeam","FileListCardDOM","FlowEditModalDOM","FlowHeaderDOM","FlowHeader","FormAddressFieldDOM","FormAddressFieldGroupDOM","FormAddressFieldGroup","FormCheckboxDOM","FormInputCprFieldDOM","FormInputCprField","FormInputCvrFieldDOM","FormInputCvrField","FormInputDateFieldDOM","FormInputDropdownDOM","FormInputEmailFieldDOM","FormInputNameFieldDOM","FormInputPhoneFieldDOM","FormInputTextareaDOM","FormInputTextFieldDOM","FormRadioGroupDOM","FormStepSubmittingDOM","FormStepZeroDOM","FormStepZero","ForumEditProfileDOM","ForumEditProfile","FrivilligeCheckoutContentDOM","_externalData$userDat","FrivilligeCheckoutContent","FrivilligeCheckoutStepOneDOM","FrivilligeCheckoutStepTwoDOM","FrivilligePostsListDOM","FrivilligePostsList","FrivilligeShopWrongRoleModalDOM","FrivilligGroupHeroDOM","gruppeIsClosed","FrivilligGroupHero","FrivilligjobAsideDOM","deleteRedirectUrl","FrivilligjobAside","FrivilligjobCardDOM","FullscreenMediaDOM","replaceWith","currentScrollTopVal","currentScrollTopValGeneral","maxScreenWidth","minBoxWidth","elementDistanceFromDocumentTop","scrolledFromTop","handleIntersect","modifiedRatio","newMaxWidth","currentRatio","intersectionRatio","scrollingDown","scrollingUp","ratioModifierFunction","imageAtTopOfPage","newOpacity","fullscreenMediaElement","FullscreenMedia","FundraiseFormDOM","_FundraiseFormDOM$dat","FundraiseForm","FundraisingAsideVueDOM","FundraisingAsideVue","FundraisingCardDOM","FundraisingHeroDOM","FundraisingHero","FVLConfirmDeleteProfileDOM","GalleryCardDOM","_JSON$parse","GeneralSearch","mountOn","GroupCardDOM","GroupDetailsDOM","GroupPostDOM","GroupSearchResultDOM","GroupSearchResult","GruppeadgangsanmodningListDOM","searchGuid","GruppeadgangsanmodningList","GtmTrackerDOM","trackJson","GtmTracker","numberOfPrimaryTags","HeroGeneralSearch","HeroSectionCancerforumDOM","HeroSectionCancerforum","HoldetsDeltagereDOM","teamid","HoldetsDonationerDOM","HoldetsLysDOM","HoldetsRoundCounterOverlayDOM","HoldOprettelseKvitteringDOM","ImageGalleryDOM","ImageGallery","IndependentHeader","InfoCarousel","LocationCardDOM","LoginOverlayDOM","LotteryFormDOM","LotteryForm","MaterialCardDOM","MemberListOverlayDOM","MemberListOverlayFVLDOM","MemberOverlayDOM","MemberOverlayProfileCardDOM","MitIdLogout","MoveFileOverlayDOM","NoSearchResultsDOM","NotificationListDOM","NotificationList","OpretHoldOverlayDOM","stafetkode","OrdreOverviewDOM","OrdreOverview","closeArticleOverlay","clickHandler","ARTICLEOVERLAY_DATA","lastNotFound","getLastAnchor","firstNotFound","getFirstAnchor","SubNavigation","TheHeader","componentsToInititalize","openArticleOverlay","DOM_LINKS","overlayLinks","richTextElement","OverlayLinkInterceptor","PageOverlay","openOverlayAutomatically","contentComponentToShow","PersonalDonationStep2aDOM","PersonalDonationStep2a","PersonalDonationStep3DOM","PersonalFundraisingDOM","CoverImage","PersonalFundraising","PickUpAddressDOM","PodcastSliderCardDom","PostAsideDOM","PostAside","PostCommentDOM","_PostCommentDOM$datas","_PostCommentDOM$datas2","_PostCommentDOM$datas3","PostCommentsDOM","_PostCommentsDOM$data","_PostCommentsDOM$data2","PostComments","PostHeaderDOM","PostHeader","PostHeaderAddCommentDOM","PostHeaderAddComment","PostsListDOM","_PostsListDOM$dataset","_groupData$numberOfMe","_groupData$id","_PostsListDOM$dataset2","groupData","PostsList","PreFooter","ProductCardDOM","ProductDetailDOM","ProductDetail","ProductList","ProductsCardsSliderDOM","ProductsCardsSlider","ProfileDeletedDOM","ProfilePictureDOM","_ProfilePictureDOM$da","_ProfilePictureDOM$da2","ProjectCardDOM","ProjectsListDOM","ProjectsList","ReceiptContentDOM","ReceiptContent","RelayListDOM","RelayList","ReportCardDom","RequestRoleDOM","RolesFormContentDOM","RolesFormContent","SearchAndCTADOM","SearchAndCTA","SearchFilteredTagsDOM","searchpageurl","SessionStorageFormularTestDOM","SessionStorageFormularTest","SignUpButtonDOM","SignUpButton","SignUpFormDOM","SimpleCardDOM","SortDropdownDOM","SpotCardGridDOM","StafetActionsDOM","StafetAddDeltagerDOM","StafetAddMoreDeltagerFlowDOM","_externalData$stafetI","StafetAddMoreDeltagerFlow","StafetDeltagPaaHoldFlowDOM","_externalData$holdId","_externalData$tshirtS","_externalData$holdLis","_externalData$amounts","_externalData$lyspose","_externalData$lyspose2","_externalData$lyspose3","_externalData$lyspose4","amounts","StafetDeltagPaaHoldFlow","StafetDeltagPaaHoldStepFourDOM","StafetDeltagPaaHoldStepOneDOM","StafetDeltagPaaHoldStepThreeDOM","StafetDeltagPaaHoldStepTwoDOM","StafetDeltagSomFighterFlowDOM","_StafetDeltagSomFight","StafetDeltagSomFighterFlow","StafetDeltagSomFighterStepOneDOM","StafetDeltagSomFighterStepThreeDOM","StafetDeltagSomFighterStepTwoDOM","StafetDonationFlowDOM","_externalData$minimum","_externalData$deltage","StafetDonationFlow","StafetDonationStepOneDOM","StafetDonationStepPrivatDOM","StafetDonationStepTwoDOM","StafetDonationStepVirksomhedDOM","StafetDonationTaendLysFlowDOM","StafetDonationTaendLysFlow","StafetDonationTaendLysStepOneDOM","StafetDonationTaendLysStepThreeDOM","StafetDonationTaendLysStepTwoDOM","StafetEditHoldFlowDOM","_externalData$holdnav","_externalData$holdDat","holdnavne","StafetEditHoldFlow","StafetHeaderDOM","StafetFlowLightBagsMetaListDOM","StafetFlowLightBagsMetaList","StafetOpretHoldFlowDOM","StafetOpretHoldFlow","StafetOpretHoldStepOneDOM","StafetOpretHoldStepTwoDOM","StafetPaymentDOM","StafetProfileFormDOM","_StafetProfileFormDOM","_StafetProfileFormDOM2","_StafetProfileFormDOM3","StafetProfileForm","StafetRoundCounterDOM","StafetRoundCounterAccordionDOM","StickySliderElement","SubbrandHeader","SuccessPageDOM","SupportSelectorDOM","TeamListDOM","TeamList","TeamListCardDOM","TextEditorDOM","TextEditor","ThemeCardDOM","TilmeldHoldKvitteringDOM","loginurl","createprofileurl","hasprofile","TilmeldProfilKvitteringDOM","UploadNewFileOverlayDOM","UserPostsListDOM","_exturnalData$userDat","_UserPostsListDOM$dat","exturnal","UserPostsList","WebshopHeader","WebshopPaymentSelectorDOM"],"sourceRoot":""}