{"version":3,"file":"greg-editors.es-CN2jiaoT.js","sources":["../../../node_modules/@hotwired/stimulus/dist/stimulus.js","../../../app/javascript/controllers/application.js","../../../app/javascript/components/railsFetch.ts","../../../node_modules/react-dom/client.js","../../../app/javascript/controllers/react_controller.js","../../../node_modules/@getregistered/greg-editors/dist/greg-editors.es.js"],"sourcesContent":["/*\nStimulus 3.2.1\nCopyright © 2023 Basecamp, LLC\n */\nclass EventListener {\n constructor(eventTarget, eventName, eventOptions) {\n this.eventTarget = eventTarget;\n this.eventName = eventName;\n this.eventOptions = eventOptions;\n this.unorderedBindings = new Set();\n }\n connect() {\n this.eventTarget.addEventListener(this.eventName, this, this.eventOptions);\n }\n disconnect() {\n this.eventTarget.removeEventListener(this.eventName, this, this.eventOptions);\n }\n bindingConnected(binding) {\n this.unorderedBindings.add(binding);\n }\n bindingDisconnected(binding) {\n this.unorderedBindings.delete(binding);\n }\n handleEvent(event) {\n const extendedEvent = extendEvent(event);\n for (const binding of this.bindings) {\n if (extendedEvent.immediatePropagationStopped) {\n break;\n }\n else {\n binding.handleEvent(extendedEvent);\n }\n }\n }\n hasBindings() {\n return this.unorderedBindings.size > 0;\n }\n get bindings() {\n return Array.from(this.unorderedBindings).sort((left, right) => {\n const leftIndex = left.index, rightIndex = right.index;\n return leftIndex < rightIndex ? -1 : leftIndex > rightIndex ? 1 : 0;\n });\n }\n}\nfunction extendEvent(event) {\n if (\"immediatePropagationStopped\" in event) {\n return event;\n }\n else {\n const { stopImmediatePropagation } = event;\n return Object.assign(event, {\n immediatePropagationStopped: false,\n stopImmediatePropagation() {\n this.immediatePropagationStopped = true;\n stopImmediatePropagation.call(this);\n },\n });\n }\n}\n\nclass Dispatcher {\n constructor(application) {\n this.application = application;\n this.eventListenerMaps = new Map();\n this.started = false;\n }\n start() {\n if (!this.started) {\n this.started = true;\n this.eventListeners.forEach((eventListener) => eventListener.connect());\n }\n }\n stop() {\n if (this.started) {\n this.started = false;\n this.eventListeners.forEach((eventListener) => eventListener.disconnect());\n }\n }\n get eventListeners() {\n return Array.from(this.eventListenerMaps.values()).reduce((listeners, map) => listeners.concat(Array.from(map.values())), []);\n }\n bindingConnected(binding) {\n this.fetchEventListenerForBinding(binding).bindingConnected(binding);\n }\n bindingDisconnected(binding, clearEventListeners = false) {\n this.fetchEventListenerForBinding(binding).bindingDisconnected(binding);\n if (clearEventListeners)\n this.clearEventListenersForBinding(binding);\n }\n handleError(error, message, detail = {}) {\n this.application.handleError(error, `Error ${message}`, detail);\n }\n clearEventListenersForBinding(binding) {\n const eventListener = this.fetchEventListenerForBinding(binding);\n if (!eventListener.hasBindings()) {\n eventListener.disconnect();\n this.removeMappedEventListenerFor(binding);\n }\n }\n removeMappedEventListenerFor(binding) {\n const { eventTarget, eventName, eventOptions } = binding;\n const eventListenerMap = this.fetchEventListenerMapForEventTarget(eventTarget);\n const cacheKey = this.cacheKey(eventName, eventOptions);\n eventListenerMap.delete(cacheKey);\n if (eventListenerMap.size == 0)\n this.eventListenerMaps.delete(eventTarget);\n }\n fetchEventListenerForBinding(binding) {\n const { eventTarget, eventName, eventOptions } = binding;\n return this.fetchEventListener(eventTarget, eventName, eventOptions);\n }\n fetchEventListener(eventTarget, eventName, eventOptions) {\n const eventListenerMap = this.fetchEventListenerMapForEventTarget(eventTarget);\n const cacheKey = this.cacheKey(eventName, eventOptions);\n let eventListener = eventListenerMap.get(cacheKey);\n if (!eventListener) {\n eventListener = this.createEventListener(eventTarget, eventName, eventOptions);\n eventListenerMap.set(cacheKey, eventListener);\n }\n return eventListener;\n }\n createEventListener(eventTarget, eventName, eventOptions) {\n const eventListener = new EventListener(eventTarget, eventName, eventOptions);\n if (this.started) {\n eventListener.connect();\n }\n return eventListener;\n }\n fetchEventListenerMapForEventTarget(eventTarget) {\n let eventListenerMap = this.eventListenerMaps.get(eventTarget);\n if (!eventListenerMap) {\n eventListenerMap = new Map();\n this.eventListenerMaps.set(eventTarget, eventListenerMap);\n }\n return eventListenerMap;\n }\n cacheKey(eventName, eventOptions) {\n const parts = [eventName];\n Object.keys(eventOptions)\n .sort()\n .forEach((key) => {\n parts.push(`${eventOptions[key] ? \"\" : \"!\"}${key}`);\n });\n return parts.join(\":\");\n }\n}\n\nconst defaultActionDescriptorFilters = {\n stop({ event, value }) {\n if (value)\n event.stopPropagation();\n return true;\n },\n prevent({ event, value }) {\n if (value)\n event.preventDefault();\n return true;\n },\n self({ event, value, element }) {\n if (value) {\n return element === event.target;\n }\n else {\n return true;\n }\n },\n};\nconst descriptorPattern = /^(?:(?:([^.]+?)\\+)?(.+?)(?:\\.(.+?))?(?:@(window|document))?->)?(.+?)(?:#([^:]+?))(?::(.+))?$/;\nfunction parseActionDescriptorString(descriptorString) {\n const source = descriptorString.trim();\n const matches = source.match(descriptorPattern) || [];\n let eventName = matches[2];\n let keyFilter = matches[3];\n if (keyFilter && ![\"keydown\", \"keyup\", \"keypress\"].includes(eventName)) {\n eventName += `.${keyFilter}`;\n keyFilter = \"\";\n }\n return {\n eventTarget: parseEventTarget(matches[4]),\n eventName,\n eventOptions: matches[7] ? parseEventOptions(matches[7]) : {},\n identifier: matches[5],\n methodName: matches[6],\n keyFilter: matches[1] || keyFilter,\n };\n}\nfunction parseEventTarget(eventTargetName) {\n if (eventTargetName == \"window\") {\n return window;\n }\n else if (eventTargetName == \"document\") {\n return document;\n }\n}\nfunction parseEventOptions(eventOptions) {\n return eventOptions\n .split(\":\")\n .reduce((options, token) => Object.assign(options, { [token.replace(/^!/, \"\")]: !/^!/.test(token) }), {});\n}\nfunction stringifyEventTarget(eventTarget) {\n if (eventTarget == window) {\n return \"window\";\n }\n else if (eventTarget == document) {\n return \"document\";\n }\n}\n\nfunction camelize(value) {\n return value.replace(/(?:[_-])([a-z0-9])/g, (_, char) => char.toUpperCase());\n}\nfunction namespaceCamelize(value) {\n return camelize(value.replace(/--/g, \"-\").replace(/__/g, \"_\"));\n}\nfunction capitalize(value) {\n return value.charAt(0).toUpperCase() + value.slice(1);\n}\nfunction dasherize(value) {\n return value.replace(/([A-Z])/g, (_, char) => `-${char.toLowerCase()}`);\n}\nfunction tokenize(value) {\n return value.match(/[^\\s]+/g) || [];\n}\n\nfunction isSomething(object) {\n return object !== null && object !== undefined;\n}\nfunction hasProperty(object, property) {\n return Object.prototype.hasOwnProperty.call(object, property);\n}\n\nconst allModifiers = [\"meta\", \"ctrl\", \"alt\", \"shift\"];\nclass Action {\n constructor(element, index, descriptor, schema) {\n this.element = element;\n this.index = index;\n this.eventTarget = descriptor.eventTarget || element;\n this.eventName = descriptor.eventName || getDefaultEventNameForElement(element) || error(\"missing event name\");\n this.eventOptions = descriptor.eventOptions || {};\n this.identifier = descriptor.identifier || error(\"missing identifier\");\n this.methodName = descriptor.methodName || error(\"missing method name\");\n this.keyFilter = descriptor.keyFilter || \"\";\n this.schema = schema;\n }\n static forToken(token, schema) {\n return new this(token.element, token.index, parseActionDescriptorString(token.content), schema);\n }\n toString() {\n const eventFilter = this.keyFilter ? `.${this.keyFilter}` : \"\";\n const eventTarget = this.eventTargetName ? `@${this.eventTargetName}` : \"\";\n return `${this.eventName}${eventFilter}${eventTarget}->${this.identifier}#${this.methodName}`;\n }\n shouldIgnoreKeyboardEvent(event) {\n if (!this.keyFilter) {\n return false;\n }\n const filters = this.keyFilter.split(\"+\");\n if (this.keyFilterDissatisfied(event, filters)) {\n return true;\n }\n const standardFilter = filters.filter((key) => !allModifiers.includes(key))[0];\n if (!standardFilter) {\n return false;\n }\n if (!hasProperty(this.keyMappings, standardFilter)) {\n error(`contains unknown key filter: ${this.keyFilter}`);\n }\n return this.keyMappings[standardFilter].toLowerCase() !== event.key.toLowerCase();\n }\n shouldIgnoreMouseEvent(event) {\n if (!this.keyFilter) {\n return false;\n }\n const filters = [this.keyFilter];\n if (this.keyFilterDissatisfied(event, filters)) {\n return true;\n }\n return false;\n }\n get params() {\n const params = {};\n const pattern = new RegExp(`^data-${this.identifier}-(.+)-param$`, \"i\");\n for (const { name, value } of Array.from(this.element.attributes)) {\n const match = name.match(pattern);\n const key = match && match[1];\n if (key) {\n params[camelize(key)] = typecast(value);\n }\n }\n return params;\n }\n get eventTargetName() {\n return stringifyEventTarget(this.eventTarget);\n }\n get keyMappings() {\n return this.schema.keyMappings;\n }\n keyFilterDissatisfied(event, filters) {\n const [meta, ctrl, alt, shift] = allModifiers.map((modifier) => filters.includes(modifier));\n return event.metaKey !== meta || event.ctrlKey !== ctrl || event.altKey !== alt || event.shiftKey !== shift;\n }\n}\nconst defaultEventNames = {\n a: () => \"click\",\n button: () => \"click\",\n form: () => \"submit\",\n details: () => \"toggle\",\n input: (e) => (e.getAttribute(\"type\") == \"submit\" ? \"click\" : \"input\"),\n select: () => \"change\",\n textarea: () => \"input\",\n};\nfunction getDefaultEventNameForElement(element) {\n const tagName = element.tagName.toLowerCase();\n if (tagName in defaultEventNames) {\n return defaultEventNames[tagName](element);\n }\n}\nfunction error(message) {\n throw new Error(message);\n}\nfunction typecast(value) {\n try {\n return JSON.parse(value);\n }\n catch (o_O) {\n return value;\n }\n}\n\nclass Binding {\n constructor(context, action) {\n this.context = context;\n this.action = action;\n }\n get index() {\n return this.action.index;\n }\n get eventTarget() {\n return this.action.eventTarget;\n }\n get eventOptions() {\n return this.action.eventOptions;\n }\n get identifier() {\n return this.context.identifier;\n }\n handleEvent(event) {\n const actionEvent = this.prepareActionEvent(event);\n if (this.willBeInvokedByEvent(event) && this.applyEventModifiers(actionEvent)) {\n this.invokeWithEvent(actionEvent);\n }\n }\n get eventName() {\n return this.action.eventName;\n }\n get method() {\n const method = this.controller[this.methodName];\n if (typeof method == \"function\") {\n return method;\n }\n throw new Error(`Action \"${this.action}\" references undefined method \"${this.methodName}\"`);\n }\n applyEventModifiers(event) {\n const { element } = this.action;\n const { actionDescriptorFilters } = this.context.application;\n const { controller } = this.context;\n let passes = true;\n for (const [name, value] of Object.entries(this.eventOptions)) {\n if (name in actionDescriptorFilters) {\n const filter = actionDescriptorFilters[name];\n passes = passes && filter({ name, value, event, element, controller });\n }\n else {\n continue;\n }\n }\n return passes;\n }\n prepareActionEvent(event) {\n return Object.assign(event, { params: this.action.params });\n }\n invokeWithEvent(event) {\n const { target, currentTarget } = event;\n try {\n this.method.call(this.controller, event);\n this.context.logDebugActivity(this.methodName, { event, target, currentTarget, action: this.methodName });\n }\n catch (error) {\n const { identifier, controller, element, index } = this;\n const detail = { identifier, controller, element, index, event };\n this.context.handleError(error, `invoking action \"${this.action}\"`, detail);\n }\n }\n willBeInvokedByEvent(event) {\n const eventTarget = event.target;\n if (event instanceof KeyboardEvent && this.action.shouldIgnoreKeyboardEvent(event)) {\n return false;\n }\n if (event instanceof MouseEvent && this.action.shouldIgnoreMouseEvent(event)) {\n return false;\n }\n if (this.element === eventTarget) {\n return true;\n }\n else if (eventTarget instanceof Element && this.element.contains(eventTarget)) {\n return this.scope.containsElement(eventTarget);\n }\n else {\n return this.scope.containsElement(this.action.element);\n }\n }\n get controller() {\n return this.context.controller;\n }\n get methodName() {\n return this.action.methodName;\n }\n get element() {\n return this.scope.element;\n }\n get scope() {\n return this.context.scope;\n }\n}\n\nclass ElementObserver {\n constructor(element, delegate) {\n this.mutationObserverInit = { attributes: true, childList: true, subtree: true };\n this.element = element;\n this.started = false;\n this.delegate = delegate;\n this.elements = new Set();\n this.mutationObserver = new MutationObserver((mutations) => this.processMutations(mutations));\n }\n start() {\n if (!this.started) {\n this.started = true;\n this.mutationObserver.observe(this.element, this.mutationObserverInit);\n this.refresh();\n }\n }\n pause(callback) {\n if (this.started) {\n this.mutationObserver.disconnect();\n this.started = false;\n }\n callback();\n if (!this.started) {\n this.mutationObserver.observe(this.element, this.mutationObserverInit);\n this.started = true;\n }\n }\n stop() {\n if (this.started) {\n this.mutationObserver.takeRecords();\n this.mutationObserver.disconnect();\n this.started = false;\n }\n }\n refresh() {\n if (this.started) {\n const matches = new Set(this.matchElementsInTree());\n for (const element of Array.from(this.elements)) {\n if (!matches.has(element)) {\n this.removeElement(element);\n }\n }\n for (const element of Array.from(matches)) {\n this.addElement(element);\n }\n }\n }\n processMutations(mutations) {\n if (this.started) {\n for (const mutation of mutations) {\n this.processMutation(mutation);\n }\n }\n }\n processMutation(mutation) {\n if (mutation.type == \"attributes\") {\n this.processAttributeChange(mutation.target, mutation.attributeName);\n }\n else if (mutation.type == \"childList\") {\n this.processRemovedNodes(mutation.removedNodes);\n this.processAddedNodes(mutation.addedNodes);\n }\n }\n processAttributeChange(element, attributeName) {\n if (this.elements.has(element)) {\n if (this.delegate.elementAttributeChanged && this.matchElement(element)) {\n this.delegate.elementAttributeChanged(element, attributeName);\n }\n else {\n this.removeElement(element);\n }\n }\n else if (this.matchElement(element)) {\n this.addElement(element);\n }\n }\n processRemovedNodes(nodes) {\n for (const node of Array.from(nodes)) {\n const element = this.elementFromNode(node);\n if (element) {\n this.processTree(element, this.removeElement);\n }\n }\n }\n processAddedNodes(nodes) {\n for (const node of Array.from(nodes)) {\n const element = this.elementFromNode(node);\n if (element && this.elementIsActive(element)) {\n this.processTree(element, this.addElement);\n }\n }\n }\n matchElement(element) {\n return this.delegate.matchElement(element);\n }\n matchElementsInTree(tree = this.element) {\n return this.delegate.matchElementsInTree(tree);\n }\n processTree(tree, processor) {\n for (const element of this.matchElementsInTree(tree)) {\n processor.call(this, element);\n }\n }\n elementFromNode(node) {\n if (node.nodeType == Node.ELEMENT_NODE) {\n return node;\n }\n }\n elementIsActive(element) {\n if (element.isConnected != this.element.isConnected) {\n return false;\n }\n else {\n return this.element.contains(element);\n }\n }\n addElement(element) {\n if (!this.elements.has(element)) {\n if (this.elementIsActive(element)) {\n this.elements.add(element);\n if (this.delegate.elementMatched) {\n this.delegate.elementMatched(element);\n }\n }\n }\n }\n removeElement(element) {\n if (this.elements.has(element)) {\n this.elements.delete(element);\n if (this.delegate.elementUnmatched) {\n this.delegate.elementUnmatched(element);\n }\n }\n }\n}\n\nclass AttributeObserver {\n constructor(element, attributeName, delegate) {\n this.attributeName = attributeName;\n this.delegate = delegate;\n this.elementObserver = new ElementObserver(element, this);\n }\n get element() {\n return this.elementObserver.element;\n }\n get selector() {\n return `[${this.attributeName}]`;\n }\n start() {\n this.elementObserver.start();\n }\n pause(callback) {\n this.elementObserver.pause(callback);\n }\n stop() {\n this.elementObserver.stop();\n }\n refresh() {\n this.elementObserver.refresh();\n }\n get started() {\n return this.elementObserver.started;\n }\n matchElement(element) {\n return element.hasAttribute(this.attributeName);\n }\n matchElementsInTree(tree) {\n const match = this.matchElement(tree) ? [tree] : [];\n const matches = Array.from(tree.querySelectorAll(this.selector));\n return match.concat(matches);\n }\n elementMatched(element) {\n if (this.delegate.elementMatchedAttribute) {\n this.delegate.elementMatchedAttribute(element, this.attributeName);\n }\n }\n elementUnmatched(element) {\n if (this.delegate.elementUnmatchedAttribute) {\n this.delegate.elementUnmatchedAttribute(element, this.attributeName);\n }\n }\n elementAttributeChanged(element, attributeName) {\n if (this.delegate.elementAttributeValueChanged && this.attributeName == attributeName) {\n this.delegate.elementAttributeValueChanged(element, attributeName);\n }\n }\n}\n\nfunction add(map, key, value) {\n fetch(map, key).add(value);\n}\nfunction del(map, key, value) {\n fetch(map, key).delete(value);\n prune(map, key);\n}\nfunction fetch(map, key) {\n let values = map.get(key);\n if (!values) {\n values = new Set();\n map.set(key, values);\n }\n return values;\n}\nfunction prune(map, key) {\n const values = map.get(key);\n if (values != null && values.size == 0) {\n map.delete(key);\n }\n}\n\nclass Multimap {\n constructor() {\n this.valuesByKey = new Map();\n }\n get keys() {\n return Array.from(this.valuesByKey.keys());\n }\n get values() {\n const sets = Array.from(this.valuesByKey.values());\n return sets.reduce((values, set) => values.concat(Array.from(set)), []);\n }\n get size() {\n const sets = Array.from(this.valuesByKey.values());\n return sets.reduce((size, set) => size + set.size, 0);\n }\n add(key, value) {\n add(this.valuesByKey, key, value);\n }\n delete(key, value) {\n del(this.valuesByKey, key, value);\n }\n has(key, value) {\n const values = this.valuesByKey.get(key);\n return values != null && values.has(value);\n }\n hasKey(key) {\n return this.valuesByKey.has(key);\n }\n hasValue(value) {\n const sets = Array.from(this.valuesByKey.values());\n return sets.some((set) => set.has(value));\n }\n getValuesForKey(key) {\n const values = this.valuesByKey.get(key);\n return values ? Array.from(values) : [];\n }\n getKeysForValue(value) {\n return Array.from(this.valuesByKey)\n .filter(([_key, values]) => values.has(value))\n .map(([key, _values]) => key);\n }\n}\n\nclass IndexedMultimap extends Multimap {\n constructor() {\n super();\n this.keysByValue = new Map();\n }\n get values() {\n return Array.from(this.keysByValue.keys());\n }\n add(key, value) {\n super.add(key, value);\n add(this.keysByValue, value, key);\n }\n delete(key, value) {\n super.delete(key, value);\n del(this.keysByValue, value, key);\n }\n hasValue(value) {\n return this.keysByValue.has(value);\n }\n getKeysForValue(value) {\n const set = this.keysByValue.get(value);\n return set ? Array.from(set) : [];\n }\n}\n\nclass SelectorObserver {\n constructor(element, selector, delegate, details) {\n this._selector = selector;\n this.details = details;\n this.elementObserver = new ElementObserver(element, this);\n this.delegate = delegate;\n this.matchesByElement = new Multimap();\n }\n get started() {\n return this.elementObserver.started;\n }\n get selector() {\n return this._selector;\n }\n set selector(selector) {\n this._selector = selector;\n this.refresh();\n }\n start() {\n this.elementObserver.start();\n }\n pause(callback) {\n this.elementObserver.pause(callback);\n }\n stop() {\n this.elementObserver.stop();\n }\n refresh() {\n this.elementObserver.refresh();\n }\n get element() {\n return this.elementObserver.element;\n }\n matchElement(element) {\n const { selector } = this;\n if (selector) {\n const matches = element.matches(selector);\n if (this.delegate.selectorMatchElement) {\n return matches && this.delegate.selectorMatchElement(element, this.details);\n }\n return matches;\n }\n else {\n return false;\n }\n }\n matchElementsInTree(tree) {\n const { selector } = this;\n if (selector) {\n const match = this.matchElement(tree) ? [tree] : [];\n const matches = Array.from(tree.querySelectorAll(selector)).filter((match) => this.matchElement(match));\n return match.concat(matches);\n }\n else {\n return [];\n }\n }\n elementMatched(element) {\n const { selector } = this;\n if (selector) {\n this.selectorMatched(element, selector);\n }\n }\n elementUnmatched(element) {\n const selectors = this.matchesByElement.getKeysForValue(element);\n for (const selector of selectors) {\n this.selectorUnmatched(element, selector);\n }\n }\n elementAttributeChanged(element, _attributeName) {\n const { selector } = this;\n if (selector) {\n const matches = this.matchElement(element);\n const matchedBefore = this.matchesByElement.has(selector, element);\n if (matches && !matchedBefore) {\n this.selectorMatched(element, selector);\n }\n else if (!matches && matchedBefore) {\n this.selectorUnmatched(element, selector);\n }\n }\n }\n selectorMatched(element, selector) {\n this.delegate.selectorMatched(element, selector, this.details);\n this.matchesByElement.add(selector, element);\n }\n selectorUnmatched(element, selector) {\n this.delegate.selectorUnmatched(element, selector, this.details);\n this.matchesByElement.delete(selector, element);\n }\n}\n\nclass StringMapObserver {\n constructor(element, delegate) {\n this.element = element;\n this.delegate = delegate;\n this.started = false;\n this.stringMap = new Map();\n this.mutationObserver = new MutationObserver((mutations) => this.processMutations(mutations));\n }\n start() {\n if (!this.started) {\n this.started = true;\n this.mutationObserver.observe(this.element, { attributes: true, attributeOldValue: true });\n this.refresh();\n }\n }\n stop() {\n if (this.started) {\n this.mutationObserver.takeRecords();\n this.mutationObserver.disconnect();\n this.started = false;\n }\n }\n refresh() {\n if (this.started) {\n for (const attributeName of this.knownAttributeNames) {\n this.refreshAttribute(attributeName, null);\n }\n }\n }\n processMutations(mutations) {\n if (this.started) {\n for (const mutation of mutations) {\n this.processMutation(mutation);\n }\n }\n }\n processMutation(mutation) {\n const attributeName = mutation.attributeName;\n if (attributeName) {\n this.refreshAttribute(attributeName, mutation.oldValue);\n }\n }\n refreshAttribute(attributeName, oldValue) {\n const key = this.delegate.getStringMapKeyForAttribute(attributeName);\n if (key != null) {\n if (!this.stringMap.has(attributeName)) {\n this.stringMapKeyAdded(key, attributeName);\n }\n const value = this.element.getAttribute(attributeName);\n if (this.stringMap.get(attributeName) != value) {\n this.stringMapValueChanged(value, key, oldValue);\n }\n if (value == null) {\n const oldValue = this.stringMap.get(attributeName);\n this.stringMap.delete(attributeName);\n if (oldValue)\n this.stringMapKeyRemoved(key, attributeName, oldValue);\n }\n else {\n this.stringMap.set(attributeName, value);\n }\n }\n }\n stringMapKeyAdded(key, attributeName) {\n if (this.delegate.stringMapKeyAdded) {\n this.delegate.stringMapKeyAdded(key, attributeName);\n }\n }\n stringMapValueChanged(value, key, oldValue) {\n if (this.delegate.stringMapValueChanged) {\n this.delegate.stringMapValueChanged(value, key, oldValue);\n }\n }\n stringMapKeyRemoved(key, attributeName, oldValue) {\n if (this.delegate.stringMapKeyRemoved) {\n this.delegate.stringMapKeyRemoved(key, attributeName, oldValue);\n }\n }\n get knownAttributeNames() {\n return Array.from(new Set(this.currentAttributeNames.concat(this.recordedAttributeNames)));\n }\n get currentAttributeNames() {\n return Array.from(this.element.attributes).map((attribute) => attribute.name);\n }\n get recordedAttributeNames() {\n return Array.from(this.stringMap.keys());\n }\n}\n\nclass TokenListObserver {\n constructor(element, attributeName, delegate) {\n this.attributeObserver = new AttributeObserver(element, attributeName, this);\n this.delegate = delegate;\n this.tokensByElement = new Multimap();\n }\n get started() {\n return this.attributeObserver.started;\n }\n start() {\n this.attributeObserver.start();\n }\n pause(callback) {\n this.attributeObserver.pause(callback);\n }\n stop() {\n this.attributeObserver.stop();\n }\n refresh() {\n this.attributeObserver.refresh();\n }\n get element() {\n return this.attributeObserver.element;\n }\n get attributeName() {\n return this.attributeObserver.attributeName;\n }\n elementMatchedAttribute(element) {\n this.tokensMatched(this.readTokensForElement(element));\n }\n elementAttributeValueChanged(element) {\n const [unmatchedTokens, matchedTokens] = this.refreshTokensForElement(element);\n this.tokensUnmatched(unmatchedTokens);\n this.tokensMatched(matchedTokens);\n }\n elementUnmatchedAttribute(element) {\n this.tokensUnmatched(this.tokensByElement.getValuesForKey(element));\n }\n tokensMatched(tokens) {\n tokens.forEach((token) => this.tokenMatched(token));\n }\n tokensUnmatched(tokens) {\n tokens.forEach((token) => this.tokenUnmatched(token));\n }\n tokenMatched(token) {\n this.delegate.tokenMatched(token);\n this.tokensByElement.add(token.element, token);\n }\n tokenUnmatched(token) {\n this.delegate.tokenUnmatched(token);\n this.tokensByElement.delete(token.element, token);\n }\n refreshTokensForElement(element) {\n const previousTokens = this.tokensByElement.getValuesForKey(element);\n const currentTokens = this.readTokensForElement(element);\n const firstDifferingIndex = zip(previousTokens, currentTokens).findIndex(([previousToken, currentToken]) => !tokensAreEqual(previousToken, currentToken));\n if (firstDifferingIndex == -1) {\n return [[], []];\n }\n else {\n return [previousTokens.slice(firstDifferingIndex), currentTokens.slice(firstDifferingIndex)];\n }\n }\n readTokensForElement(element) {\n const attributeName = this.attributeName;\n const tokenString = element.getAttribute(attributeName) || \"\";\n return parseTokenString(tokenString, element, attributeName);\n }\n}\nfunction parseTokenString(tokenString, element, attributeName) {\n return tokenString\n .trim()\n .split(/\\s+/)\n .filter((content) => content.length)\n .map((content, index) => ({ element, attributeName, content, index }));\n}\nfunction zip(left, right) {\n const length = Math.max(left.length, right.length);\n return Array.from({ length }, (_, index) => [left[index], right[index]]);\n}\nfunction tokensAreEqual(left, right) {\n return left && right && left.index == right.index && left.content == right.content;\n}\n\nclass ValueListObserver {\n constructor(element, attributeName, delegate) {\n this.tokenListObserver = new TokenListObserver(element, attributeName, this);\n this.delegate = delegate;\n this.parseResultsByToken = new WeakMap();\n this.valuesByTokenByElement = new WeakMap();\n }\n get started() {\n return this.tokenListObserver.started;\n }\n start() {\n this.tokenListObserver.start();\n }\n stop() {\n this.tokenListObserver.stop();\n }\n refresh() {\n this.tokenListObserver.refresh();\n }\n get element() {\n return this.tokenListObserver.element;\n }\n get attributeName() {\n return this.tokenListObserver.attributeName;\n }\n tokenMatched(token) {\n const { element } = token;\n const { value } = this.fetchParseResultForToken(token);\n if (value) {\n this.fetchValuesByTokenForElement(element).set(token, value);\n this.delegate.elementMatchedValue(element, value);\n }\n }\n tokenUnmatched(token) {\n const { element } = token;\n const { value } = this.fetchParseResultForToken(token);\n if (value) {\n this.fetchValuesByTokenForElement(element).delete(token);\n this.delegate.elementUnmatchedValue(element, value);\n }\n }\n fetchParseResultForToken(token) {\n let parseResult = this.parseResultsByToken.get(token);\n if (!parseResult) {\n parseResult = this.parseToken(token);\n this.parseResultsByToken.set(token, parseResult);\n }\n return parseResult;\n }\n fetchValuesByTokenForElement(element) {\n let valuesByToken = this.valuesByTokenByElement.get(element);\n if (!valuesByToken) {\n valuesByToken = new Map();\n this.valuesByTokenByElement.set(element, valuesByToken);\n }\n return valuesByToken;\n }\n parseToken(token) {\n try {\n const value = this.delegate.parseValueForToken(token);\n return { value };\n }\n catch (error) {\n return { error };\n }\n }\n}\n\nclass BindingObserver {\n constructor(context, delegate) {\n this.context = context;\n this.delegate = delegate;\n this.bindingsByAction = new Map();\n }\n start() {\n if (!this.valueListObserver) {\n this.valueListObserver = new ValueListObserver(this.element, this.actionAttribute, this);\n this.valueListObserver.start();\n }\n }\n stop() {\n if (this.valueListObserver) {\n this.valueListObserver.stop();\n delete this.valueListObserver;\n this.disconnectAllActions();\n }\n }\n get element() {\n return this.context.element;\n }\n get identifier() {\n return this.context.identifier;\n }\n get actionAttribute() {\n return this.schema.actionAttribute;\n }\n get schema() {\n return this.context.schema;\n }\n get bindings() {\n return Array.from(this.bindingsByAction.values());\n }\n connectAction(action) {\n const binding = new Binding(this.context, action);\n this.bindingsByAction.set(action, binding);\n this.delegate.bindingConnected(binding);\n }\n disconnectAction(action) {\n const binding = this.bindingsByAction.get(action);\n if (binding) {\n this.bindingsByAction.delete(action);\n this.delegate.bindingDisconnected(binding);\n }\n }\n disconnectAllActions() {\n this.bindings.forEach((binding) => this.delegate.bindingDisconnected(binding, true));\n this.bindingsByAction.clear();\n }\n parseValueForToken(token) {\n const action = Action.forToken(token, this.schema);\n if (action.identifier == this.identifier) {\n return action;\n }\n }\n elementMatchedValue(element, action) {\n this.connectAction(action);\n }\n elementUnmatchedValue(element, action) {\n this.disconnectAction(action);\n }\n}\n\nclass ValueObserver {\n constructor(context, receiver) {\n this.context = context;\n this.receiver = receiver;\n this.stringMapObserver = new StringMapObserver(this.element, this);\n this.valueDescriptorMap = this.controller.valueDescriptorMap;\n }\n start() {\n this.stringMapObserver.start();\n this.invokeChangedCallbacksForDefaultValues();\n }\n stop() {\n this.stringMapObserver.stop();\n }\n get element() {\n return this.context.element;\n }\n get controller() {\n return this.context.controller;\n }\n getStringMapKeyForAttribute(attributeName) {\n if (attributeName in this.valueDescriptorMap) {\n return this.valueDescriptorMap[attributeName].name;\n }\n }\n stringMapKeyAdded(key, attributeName) {\n const descriptor = this.valueDescriptorMap[attributeName];\n if (!this.hasValue(key)) {\n this.invokeChangedCallback(key, descriptor.writer(this.receiver[key]), descriptor.writer(descriptor.defaultValue));\n }\n }\n stringMapValueChanged(value, name, oldValue) {\n const descriptor = this.valueDescriptorNameMap[name];\n if (value === null)\n return;\n if (oldValue === null) {\n oldValue = descriptor.writer(descriptor.defaultValue);\n }\n this.invokeChangedCallback(name, value, oldValue);\n }\n stringMapKeyRemoved(key, attributeName, oldValue) {\n const descriptor = this.valueDescriptorNameMap[key];\n if (this.hasValue(key)) {\n this.invokeChangedCallback(key, descriptor.writer(this.receiver[key]), oldValue);\n }\n else {\n this.invokeChangedCallback(key, descriptor.writer(descriptor.defaultValue), oldValue);\n }\n }\n invokeChangedCallbacksForDefaultValues() {\n for (const { key, name, defaultValue, writer } of this.valueDescriptors) {\n if (defaultValue != undefined && !this.controller.data.has(key)) {\n this.invokeChangedCallback(name, writer(defaultValue), undefined);\n }\n }\n }\n invokeChangedCallback(name, rawValue, rawOldValue) {\n const changedMethodName = `${name}Changed`;\n const changedMethod = this.receiver[changedMethodName];\n if (typeof changedMethod == \"function\") {\n const descriptor = this.valueDescriptorNameMap[name];\n try {\n const value = descriptor.reader(rawValue);\n let oldValue = rawOldValue;\n if (rawOldValue) {\n oldValue = descriptor.reader(rawOldValue);\n }\n changedMethod.call(this.receiver, value, oldValue);\n }\n catch (error) {\n if (error instanceof TypeError) {\n error.message = `Stimulus Value \"${this.context.identifier}.${descriptor.name}\" - ${error.message}`;\n }\n throw error;\n }\n }\n }\n get valueDescriptors() {\n const { valueDescriptorMap } = this;\n return Object.keys(valueDescriptorMap).map((key) => valueDescriptorMap[key]);\n }\n get valueDescriptorNameMap() {\n const descriptors = {};\n Object.keys(this.valueDescriptorMap).forEach((key) => {\n const descriptor = this.valueDescriptorMap[key];\n descriptors[descriptor.name] = descriptor;\n });\n return descriptors;\n }\n hasValue(attributeName) {\n const descriptor = this.valueDescriptorNameMap[attributeName];\n const hasMethodName = `has${capitalize(descriptor.name)}`;\n return this.receiver[hasMethodName];\n }\n}\n\nclass TargetObserver {\n constructor(context, delegate) {\n this.context = context;\n this.delegate = delegate;\n this.targetsByName = new Multimap();\n }\n start() {\n if (!this.tokenListObserver) {\n this.tokenListObserver = new TokenListObserver(this.element, this.attributeName, this);\n this.tokenListObserver.start();\n }\n }\n stop() {\n if (this.tokenListObserver) {\n this.disconnectAllTargets();\n this.tokenListObserver.stop();\n delete this.tokenListObserver;\n }\n }\n tokenMatched({ element, content: name }) {\n if (this.scope.containsElement(element)) {\n this.connectTarget(element, name);\n }\n }\n tokenUnmatched({ element, content: name }) {\n this.disconnectTarget(element, name);\n }\n connectTarget(element, name) {\n var _a;\n if (!this.targetsByName.has(name, element)) {\n this.targetsByName.add(name, element);\n (_a = this.tokenListObserver) === null || _a === void 0 ? void 0 : _a.pause(() => this.delegate.targetConnected(element, name));\n }\n }\n disconnectTarget(element, name) {\n var _a;\n if (this.targetsByName.has(name, element)) {\n this.targetsByName.delete(name, element);\n (_a = this.tokenListObserver) === null || _a === void 0 ? void 0 : _a.pause(() => this.delegate.targetDisconnected(element, name));\n }\n }\n disconnectAllTargets() {\n for (const name of this.targetsByName.keys) {\n for (const element of this.targetsByName.getValuesForKey(name)) {\n this.disconnectTarget(element, name);\n }\n }\n }\n get attributeName() {\n return `data-${this.context.identifier}-target`;\n }\n get element() {\n return this.context.element;\n }\n get scope() {\n return this.context.scope;\n }\n}\n\nfunction readInheritableStaticArrayValues(constructor, propertyName) {\n const ancestors = getAncestorsForConstructor(constructor);\n return Array.from(ancestors.reduce((values, constructor) => {\n getOwnStaticArrayValues(constructor, propertyName).forEach((name) => values.add(name));\n return values;\n }, new Set()));\n}\nfunction readInheritableStaticObjectPairs(constructor, propertyName) {\n const ancestors = getAncestorsForConstructor(constructor);\n return ancestors.reduce((pairs, constructor) => {\n pairs.push(...getOwnStaticObjectPairs(constructor, propertyName));\n return pairs;\n }, []);\n}\nfunction getAncestorsForConstructor(constructor) {\n const ancestors = [];\n while (constructor) {\n ancestors.push(constructor);\n constructor = Object.getPrototypeOf(constructor);\n }\n return ancestors.reverse();\n}\nfunction getOwnStaticArrayValues(constructor, propertyName) {\n const definition = constructor[propertyName];\n return Array.isArray(definition) ? definition : [];\n}\nfunction getOwnStaticObjectPairs(constructor, propertyName) {\n const definition = constructor[propertyName];\n return definition ? Object.keys(definition).map((key) => [key, definition[key]]) : [];\n}\n\nclass OutletObserver {\n constructor(context, delegate) {\n this.started = false;\n this.context = context;\n this.delegate = delegate;\n this.outletsByName = new Multimap();\n this.outletElementsByName = new Multimap();\n this.selectorObserverMap = new Map();\n this.attributeObserverMap = new Map();\n }\n start() {\n if (!this.started) {\n this.outletDefinitions.forEach((outletName) => {\n this.setupSelectorObserverForOutlet(outletName);\n this.setupAttributeObserverForOutlet(outletName);\n });\n this.started = true;\n this.dependentContexts.forEach((context) => context.refresh());\n }\n }\n refresh() {\n this.selectorObserverMap.forEach((observer) => observer.refresh());\n this.attributeObserverMap.forEach((observer) => observer.refresh());\n }\n stop() {\n if (this.started) {\n this.started = false;\n this.disconnectAllOutlets();\n this.stopSelectorObservers();\n this.stopAttributeObservers();\n }\n }\n stopSelectorObservers() {\n if (this.selectorObserverMap.size > 0) {\n this.selectorObserverMap.forEach((observer) => observer.stop());\n this.selectorObserverMap.clear();\n }\n }\n stopAttributeObservers() {\n if (this.attributeObserverMap.size > 0) {\n this.attributeObserverMap.forEach((observer) => observer.stop());\n this.attributeObserverMap.clear();\n }\n }\n selectorMatched(element, _selector, { outletName }) {\n const outlet = this.getOutlet(element, outletName);\n if (outlet) {\n this.connectOutlet(outlet, element, outletName);\n }\n }\n selectorUnmatched(element, _selector, { outletName }) {\n const outlet = this.getOutletFromMap(element, outletName);\n if (outlet) {\n this.disconnectOutlet(outlet, element, outletName);\n }\n }\n selectorMatchElement(element, { outletName }) {\n const selector = this.selector(outletName);\n const hasOutlet = this.hasOutlet(element, outletName);\n const hasOutletController = element.matches(`[${this.schema.controllerAttribute}~=${outletName}]`);\n if (selector) {\n return hasOutlet && hasOutletController && element.matches(selector);\n }\n else {\n return false;\n }\n }\n elementMatchedAttribute(_element, attributeName) {\n const outletName = this.getOutletNameFromOutletAttributeName(attributeName);\n if (outletName) {\n this.updateSelectorObserverForOutlet(outletName);\n }\n }\n elementAttributeValueChanged(_element, attributeName) {\n const outletName = this.getOutletNameFromOutletAttributeName(attributeName);\n if (outletName) {\n this.updateSelectorObserverForOutlet(outletName);\n }\n }\n elementUnmatchedAttribute(_element, attributeName) {\n const outletName = this.getOutletNameFromOutletAttributeName(attributeName);\n if (outletName) {\n this.updateSelectorObserverForOutlet(outletName);\n }\n }\n connectOutlet(outlet, element, outletName) {\n var _a;\n if (!this.outletElementsByName.has(outletName, element)) {\n this.outletsByName.add(outletName, outlet);\n this.outletElementsByName.add(outletName, element);\n (_a = this.selectorObserverMap.get(outletName)) === null || _a === void 0 ? void 0 : _a.pause(() => this.delegate.outletConnected(outlet, element, outletName));\n }\n }\n disconnectOutlet(outlet, element, outletName) {\n var _a;\n if (this.outletElementsByName.has(outletName, element)) {\n this.outletsByName.delete(outletName, outlet);\n this.outletElementsByName.delete(outletName, element);\n (_a = this.selectorObserverMap\n .get(outletName)) === null || _a === void 0 ? void 0 : _a.pause(() => this.delegate.outletDisconnected(outlet, element, outletName));\n }\n }\n disconnectAllOutlets() {\n for (const outletName of this.outletElementsByName.keys) {\n for (const element of this.outletElementsByName.getValuesForKey(outletName)) {\n for (const outlet of this.outletsByName.getValuesForKey(outletName)) {\n this.disconnectOutlet(outlet, element, outletName);\n }\n }\n }\n }\n updateSelectorObserverForOutlet(outletName) {\n const observer = this.selectorObserverMap.get(outletName);\n if (observer) {\n observer.selector = this.selector(outletName);\n }\n }\n setupSelectorObserverForOutlet(outletName) {\n const selector = this.selector(outletName);\n const selectorObserver = new SelectorObserver(document.body, selector, this, { outletName });\n this.selectorObserverMap.set(outletName, selectorObserver);\n selectorObserver.start();\n }\n setupAttributeObserverForOutlet(outletName) {\n const attributeName = this.attributeNameForOutletName(outletName);\n const attributeObserver = new AttributeObserver(this.scope.element, attributeName, this);\n this.attributeObserverMap.set(outletName, attributeObserver);\n attributeObserver.start();\n }\n selector(outletName) {\n return this.scope.outlets.getSelectorForOutletName(outletName);\n }\n attributeNameForOutletName(outletName) {\n return this.scope.schema.outletAttributeForScope(this.identifier, outletName);\n }\n getOutletNameFromOutletAttributeName(attributeName) {\n return this.outletDefinitions.find((outletName) => this.attributeNameForOutletName(outletName) === attributeName);\n }\n get outletDependencies() {\n const dependencies = new Multimap();\n this.router.modules.forEach((module) => {\n const constructor = module.definition.controllerConstructor;\n const outlets = readInheritableStaticArrayValues(constructor, \"outlets\");\n outlets.forEach((outlet) => dependencies.add(outlet, module.identifier));\n });\n return dependencies;\n }\n get outletDefinitions() {\n return this.outletDependencies.getKeysForValue(this.identifier);\n }\n get dependentControllerIdentifiers() {\n return this.outletDependencies.getValuesForKey(this.identifier);\n }\n get dependentContexts() {\n const identifiers = this.dependentControllerIdentifiers;\n return this.router.contexts.filter((context) => identifiers.includes(context.identifier));\n }\n hasOutlet(element, outletName) {\n return !!this.getOutlet(element, outletName) || !!this.getOutletFromMap(element, outletName);\n }\n getOutlet(element, outletName) {\n return this.application.getControllerForElementAndIdentifier(element, outletName);\n }\n getOutletFromMap(element, outletName) {\n return this.outletsByName.getValuesForKey(outletName).find((outlet) => outlet.element === element);\n }\n get scope() {\n return this.context.scope;\n }\n get schema() {\n return this.context.schema;\n }\n get identifier() {\n return this.context.identifier;\n }\n get application() {\n return this.context.application;\n }\n get router() {\n return this.application.router;\n }\n}\n\nclass Context {\n constructor(module, scope) {\n this.logDebugActivity = (functionName, detail = {}) => {\n const { identifier, controller, element } = this;\n detail = Object.assign({ identifier, controller, element }, detail);\n this.application.logDebugActivity(this.identifier, functionName, detail);\n };\n this.module = module;\n this.scope = scope;\n this.controller = new module.controllerConstructor(this);\n this.bindingObserver = new BindingObserver(this, this.dispatcher);\n this.valueObserver = new ValueObserver(this, this.controller);\n this.targetObserver = new TargetObserver(this, this);\n this.outletObserver = new OutletObserver(this, this);\n try {\n this.controller.initialize();\n this.logDebugActivity(\"initialize\");\n }\n catch (error) {\n this.handleError(error, \"initializing controller\");\n }\n }\n connect() {\n this.bindingObserver.start();\n this.valueObserver.start();\n this.targetObserver.start();\n this.outletObserver.start();\n try {\n this.controller.connect();\n this.logDebugActivity(\"connect\");\n }\n catch (error) {\n this.handleError(error, \"connecting controller\");\n }\n }\n refresh() {\n this.outletObserver.refresh();\n }\n disconnect() {\n try {\n this.controller.disconnect();\n this.logDebugActivity(\"disconnect\");\n }\n catch (error) {\n this.handleError(error, \"disconnecting controller\");\n }\n this.outletObserver.stop();\n this.targetObserver.stop();\n this.valueObserver.stop();\n this.bindingObserver.stop();\n }\n get application() {\n return this.module.application;\n }\n get identifier() {\n return this.module.identifier;\n }\n get schema() {\n return this.application.schema;\n }\n get dispatcher() {\n return this.application.dispatcher;\n }\n get element() {\n return this.scope.element;\n }\n get parentElement() {\n return this.element.parentElement;\n }\n handleError(error, message, detail = {}) {\n const { identifier, controller, element } = this;\n detail = Object.assign({ identifier, controller, element }, detail);\n this.application.handleError(error, `Error ${message}`, detail);\n }\n targetConnected(element, name) {\n this.invokeControllerMethod(`${name}TargetConnected`, element);\n }\n targetDisconnected(element, name) {\n this.invokeControllerMethod(`${name}TargetDisconnected`, element);\n }\n outletConnected(outlet, element, name) {\n this.invokeControllerMethod(`${namespaceCamelize(name)}OutletConnected`, outlet, element);\n }\n outletDisconnected(outlet, element, name) {\n this.invokeControllerMethod(`${namespaceCamelize(name)}OutletDisconnected`, outlet, element);\n }\n invokeControllerMethod(methodName, ...args) {\n const controller = this.controller;\n if (typeof controller[methodName] == \"function\") {\n controller[methodName](...args);\n }\n }\n}\n\nfunction bless(constructor) {\n return shadow(constructor, getBlessedProperties(constructor));\n}\nfunction shadow(constructor, properties) {\n const shadowConstructor = extend(constructor);\n const shadowProperties = getShadowProperties(constructor.prototype, properties);\n Object.defineProperties(shadowConstructor.prototype, shadowProperties);\n return shadowConstructor;\n}\nfunction getBlessedProperties(constructor) {\n const blessings = readInheritableStaticArrayValues(constructor, \"blessings\");\n return blessings.reduce((blessedProperties, blessing) => {\n const properties = blessing(constructor);\n for (const key in properties) {\n const descriptor = blessedProperties[key] || {};\n blessedProperties[key] = Object.assign(descriptor, properties[key]);\n }\n return blessedProperties;\n }, {});\n}\nfunction getShadowProperties(prototype, properties) {\n return getOwnKeys(properties).reduce((shadowProperties, key) => {\n const descriptor = getShadowedDescriptor(prototype, properties, key);\n if (descriptor) {\n Object.assign(shadowProperties, { [key]: descriptor });\n }\n return shadowProperties;\n }, {});\n}\nfunction getShadowedDescriptor(prototype, properties, key) {\n const shadowingDescriptor = Object.getOwnPropertyDescriptor(prototype, key);\n const shadowedByValue = shadowingDescriptor && \"value\" in shadowingDescriptor;\n if (!shadowedByValue) {\n const descriptor = Object.getOwnPropertyDescriptor(properties, key).value;\n if (shadowingDescriptor) {\n descriptor.get = shadowingDescriptor.get || descriptor.get;\n descriptor.set = shadowingDescriptor.set || descriptor.set;\n }\n return descriptor;\n }\n}\nconst getOwnKeys = (() => {\n if (typeof Object.getOwnPropertySymbols == \"function\") {\n return (object) => [...Object.getOwnPropertyNames(object), ...Object.getOwnPropertySymbols(object)];\n }\n else {\n return Object.getOwnPropertyNames;\n }\n})();\nconst extend = (() => {\n function extendWithReflect(constructor) {\n function extended() {\n return Reflect.construct(constructor, arguments, new.target);\n }\n extended.prototype = Object.create(constructor.prototype, {\n constructor: { value: extended },\n });\n Reflect.setPrototypeOf(extended, constructor);\n return extended;\n }\n function testReflectExtension() {\n const a = function () {\n this.a.call(this);\n };\n const b = extendWithReflect(a);\n b.prototype.a = function () { };\n return new b();\n }\n try {\n testReflectExtension();\n return extendWithReflect;\n }\n catch (error) {\n return (constructor) => class extended extends constructor {\n };\n }\n})();\n\nfunction blessDefinition(definition) {\n return {\n identifier: definition.identifier,\n controllerConstructor: bless(definition.controllerConstructor),\n };\n}\n\nclass Module {\n constructor(application, definition) {\n this.application = application;\n this.definition = blessDefinition(definition);\n this.contextsByScope = new WeakMap();\n this.connectedContexts = new Set();\n }\n get identifier() {\n return this.definition.identifier;\n }\n get controllerConstructor() {\n return this.definition.controllerConstructor;\n }\n get contexts() {\n return Array.from(this.connectedContexts);\n }\n connectContextForScope(scope) {\n const context = this.fetchContextForScope(scope);\n this.connectedContexts.add(context);\n context.connect();\n }\n disconnectContextForScope(scope) {\n const context = this.contextsByScope.get(scope);\n if (context) {\n this.connectedContexts.delete(context);\n context.disconnect();\n }\n }\n fetchContextForScope(scope) {\n let context = this.contextsByScope.get(scope);\n if (!context) {\n context = new Context(this, scope);\n this.contextsByScope.set(scope, context);\n }\n return context;\n }\n}\n\nclass ClassMap {\n constructor(scope) {\n this.scope = scope;\n }\n has(name) {\n return this.data.has(this.getDataKey(name));\n }\n get(name) {\n return this.getAll(name)[0];\n }\n getAll(name) {\n const tokenString = this.data.get(this.getDataKey(name)) || \"\";\n return tokenize(tokenString);\n }\n getAttributeName(name) {\n return this.data.getAttributeNameForKey(this.getDataKey(name));\n }\n getDataKey(name) {\n return `${name}-class`;\n }\n get data() {\n return this.scope.data;\n }\n}\n\nclass DataMap {\n constructor(scope) {\n this.scope = scope;\n }\n get element() {\n return this.scope.element;\n }\n get identifier() {\n return this.scope.identifier;\n }\n get(key) {\n const name = this.getAttributeNameForKey(key);\n return this.element.getAttribute(name);\n }\n set(key, value) {\n const name = this.getAttributeNameForKey(key);\n this.element.setAttribute(name, value);\n return this.get(key);\n }\n has(key) {\n const name = this.getAttributeNameForKey(key);\n return this.element.hasAttribute(name);\n }\n delete(key) {\n if (this.has(key)) {\n const name = this.getAttributeNameForKey(key);\n this.element.removeAttribute(name);\n return true;\n }\n else {\n return false;\n }\n }\n getAttributeNameForKey(key) {\n return `data-${this.identifier}-${dasherize(key)}`;\n }\n}\n\nclass Guide {\n constructor(logger) {\n this.warnedKeysByObject = new WeakMap();\n this.logger = logger;\n }\n warn(object, key, message) {\n let warnedKeys = this.warnedKeysByObject.get(object);\n if (!warnedKeys) {\n warnedKeys = new Set();\n this.warnedKeysByObject.set(object, warnedKeys);\n }\n if (!warnedKeys.has(key)) {\n warnedKeys.add(key);\n this.logger.warn(message, object);\n }\n }\n}\n\nfunction attributeValueContainsToken(attributeName, token) {\n return `[${attributeName}~=\"${token}\"]`;\n}\n\nclass TargetSet {\n constructor(scope) {\n this.scope = scope;\n }\n get element() {\n return this.scope.element;\n }\n get identifier() {\n return this.scope.identifier;\n }\n get schema() {\n return this.scope.schema;\n }\n has(targetName) {\n return this.find(targetName) != null;\n }\n find(...targetNames) {\n return targetNames.reduce((target, targetName) => target || this.findTarget(targetName) || this.findLegacyTarget(targetName), undefined);\n }\n findAll(...targetNames) {\n return targetNames.reduce((targets, targetName) => [\n ...targets,\n ...this.findAllTargets(targetName),\n ...this.findAllLegacyTargets(targetName),\n ], []);\n }\n findTarget(targetName) {\n const selector = this.getSelectorForTargetName(targetName);\n return this.scope.findElement(selector);\n }\n findAllTargets(targetName) {\n const selector = this.getSelectorForTargetName(targetName);\n return this.scope.findAllElements(selector);\n }\n getSelectorForTargetName(targetName) {\n const attributeName = this.schema.targetAttributeForScope(this.identifier);\n return attributeValueContainsToken(attributeName, targetName);\n }\n findLegacyTarget(targetName) {\n const selector = this.getLegacySelectorForTargetName(targetName);\n return this.deprecate(this.scope.findElement(selector), targetName);\n }\n findAllLegacyTargets(targetName) {\n const selector = this.getLegacySelectorForTargetName(targetName);\n return this.scope.findAllElements(selector).map((element) => this.deprecate(element, targetName));\n }\n getLegacySelectorForTargetName(targetName) {\n const targetDescriptor = `${this.identifier}.${targetName}`;\n return attributeValueContainsToken(this.schema.targetAttribute, targetDescriptor);\n }\n deprecate(element, targetName) {\n if (element) {\n const { identifier } = this;\n const attributeName = this.schema.targetAttribute;\n const revisedAttributeName = this.schema.targetAttributeForScope(identifier);\n this.guide.warn(element, `target:${targetName}`, `Please replace ${attributeName}=\"${identifier}.${targetName}\" with ${revisedAttributeName}=\"${targetName}\". ` +\n `The ${attributeName} attribute is deprecated and will be removed in a future version of Stimulus.`);\n }\n return element;\n }\n get guide() {\n return this.scope.guide;\n }\n}\n\nclass OutletSet {\n constructor(scope, controllerElement) {\n this.scope = scope;\n this.controllerElement = controllerElement;\n }\n get element() {\n return this.scope.element;\n }\n get identifier() {\n return this.scope.identifier;\n }\n get schema() {\n return this.scope.schema;\n }\n has(outletName) {\n return this.find(outletName) != null;\n }\n find(...outletNames) {\n return outletNames.reduce((outlet, outletName) => outlet || this.findOutlet(outletName), undefined);\n }\n findAll(...outletNames) {\n return outletNames.reduce((outlets, outletName) => [...outlets, ...this.findAllOutlets(outletName)], []);\n }\n getSelectorForOutletName(outletName) {\n const attributeName = this.schema.outletAttributeForScope(this.identifier, outletName);\n return this.controllerElement.getAttribute(attributeName);\n }\n findOutlet(outletName) {\n const selector = this.getSelectorForOutletName(outletName);\n if (selector)\n return this.findElement(selector, outletName);\n }\n findAllOutlets(outletName) {\n const selector = this.getSelectorForOutletName(outletName);\n return selector ? this.findAllElements(selector, outletName) : [];\n }\n findElement(selector, outletName) {\n const elements = this.scope.queryElements(selector);\n return elements.filter((element) => this.matchesElement(element, selector, outletName))[0];\n }\n findAllElements(selector, outletName) {\n const elements = this.scope.queryElements(selector);\n return elements.filter((element) => this.matchesElement(element, selector, outletName));\n }\n matchesElement(element, selector, outletName) {\n const controllerAttribute = element.getAttribute(this.scope.schema.controllerAttribute) || \"\";\n return element.matches(selector) && controllerAttribute.split(\" \").includes(outletName);\n }\n}\n\nclass Scope {\n constructor(schema, element, identifier, logger) {\n this.targets = new TargetSet(this);\n this.classes = new ClassMap(this);\n this.data = new DataMap(this);\n this.containsElement = (element) => {\n return element.closest(this.controllerSelector) === this.element;\n };\n this.schema = schema;\n this.element = element;\n this.identifier = identifier;\n this.guide = new Guide(logger);\n this.outlets = new OutletSet(this.documentScope, element);\n }\n findElement(selector) {\n return this.element.matches(selector) ? this.element : this.queryElements(selector).find(this.containsElement);\n }\n findAllElements(selector) {\n return [\n ...(this.element.matches(selector) ? [this.element] : []),\n ...this.queryElements(selector).filter(this.containsElement),\n ];\n }\n queryElements(selector) {\n return Array.from(this.element.querySelectorAll(selector));\n }\n get controllerSelector() {\n return attributeValueContainsToken(this.schema.controllerAttribute, this.identifier);\n }\n get isDocumentScope() {\n return this.element === document.documentElement;\n }\n get documentScope() {\n return this.isDocumentScope\n ? this\n : new Scope(this.schema, document.documentElement, this.identifier, this.guide.logger);\n }\n}\n\nclass ScopeObserver {\n constructor(element, schema, delegate) {\n this.element = element;\n this.schema = schema;\n this.delegate = delegate;\n this.valueListObserver = new ValueListObserver(this.element, this.controllerAttribute, this);\n this.scopesByIdentifierByElement = new WeakMap();\n this.scopeReferenceCounts = new WeakMap();\n }\n start() {\n this.valueListObserver.start();\n }\n stop() {\n this.valueListObserver.stop();\n }\n get controllerAttribute() {\n return this.schema.controllerAttribute;\n }\n parseValueForToken(token) {\n const { element, content: identifier } = token;\n return this.parseValueForElementAndIdentifier(element, identifier);\n }\n parseValueForElementAndIdentifier(element, identifier) {\n const scopesByIdentifier = this.fetchScopesByIdentifierForElement(element);\n let scope = scopesByIdentifier.get(identifier);\n if (!scope) {\n scope = this.delegate.createScopeForElementAndIdentifier(element, identifier);\n scopesByIdentifier.set(identifier, scope);\n }\n return scope;\n }\n elementMatchedValue(element, value) {\n const referenceCount = (this.scopeReferenceCounts.get(value) || 0) + 1;\n this.scopeReferenceCounts.set(value, referenceCount);\n if (referenceCount == 1) {\n this.delegate.scopeConnected(value);\n }\n }\n elementUnmatchedValue(element, value) {\n const referenceCount = this.scopeReferenceCounts.get(value);\n if (referenceCount) {\n this.scopeReferenceCounts.set(value, referenceCount - 1);\n if (referenceCount == 1) {\n this.delegate.scopeDisconnected(value);\n }\n }\n }\n fetchScopesByIdentifierForElement(element) {\n let scopesByIdentifier = this.scopesByIdentifierByElement.get(element);\n if (!scopesByIdentifier) {\n scopesByIdentifier = new Map();\n this.scopesByIdentifierByElement.set(element, scopesByIdentifier);\n }\n return scopesByIdentifier;\n }\n}\n\nclass Router {\n constructor(application) {\n this.application = application;\n this.scopeObserver = new ScopeObserver(this.element, this.schema, this);\n this.scopesByIdentifier = new Multimap();\n this.modulesByIdentifier = new Map();\n }\n get element() {\n return this.application.element;\n }\n get schema() {\n return this.application.schema;\n }\n get logger() {\n return this.application.logger;\n }\n get controllerAttribute() {\n return this.schema.controllerAttribute;\n }\n get modules() {\n return Array.from(this.modulesByIdentifier.values());\n }\n get contexts() {\n return this.modules.reduce((contexts, module) => contexts.concat(module.contexts), []);\n }\n start() {\n this.scopeObserver.start();\n }\n stop() {\n this.scopeObserver.stop();\n }\n loadDefinition(definition) {\n this.unloadIdentifier(definition.identifier);\n const module = new Module(this.application, definition);\n this.connectModule(module);\n const afterLoad = definition.controllerConstructor.afterLoad;\n if (afterLoad) {\n afterLoad.call(definition.controllerConstructor, definition.identifier, this.application);\n }\n }\n unloadIdentifier(identifier) {\n const module = this.modulesByIdentifier.get(identifier);\n if (module) {\n this.disconnectModule(module);\n }\n }\n getContextForElementAndIdentifier(element, identifier) {\n const module = this.modulesByIdentifier.get(identifier);\n if (module) {\n return module.contexts.find((context) => context.element == element);\n }\n }\n proposeToConnectScopeForElementAndIdentifier(element, identifier) {\n const scope = this.scopeObserver.parseValueForElementAndIdentifier(element, identifier);\n if (scope) {\n this.scopeObserver.elementMatchedValue(scope.element, scope);\n }\n else {\n console.error(`Couldn't find or create scope for identifier: \"${identifier}\" and element:`, element);\n }\n }\n handleError(error, message, detail) {\n this.application.handleError(error, message, detail);\n }\n createScopeForElementAndIdentifier(element, identifier) {\n return new Scope(this.schema, element, identifier, this.logger);\n }\n scopeConnected(scope) {\n this.scopesByIdentifier.add(scope.identifier, scope);\n const module = this.modulesByIdentifier.get(scope.identifier);\n if (module) {\n module.connectContextForScope(scope);\n }\n }\n scopeDisconnected(scope) {\n this.scopesByIdentifier.delete(scope.identifier, scope);\n const module = this.modulesByIdentifier.get(scope.identifier);\n if (module) {\n module.disconnectContextForScope(scope);\n }\n }\n connectModule(module) {\n this.modulesByIdentifier.set(module.identifier, module);\n const scopes = this.scopesByIdentifier.getValuesForKey(module.identifier);\n scopes.forEach((scope) => module.connectContextForScope(scope));\n }\n disconnectModule(module) {\n this.modulesByIdentifier.delete(module.identifier);\n const scopes = this.scopesByIdentifier.getValuesForKey(module.identifier);\n scopes.forEach((scope) => module.disconnectContextForScope(scope));\n }\n}\n\nconst defaultSchema = {\n controllerAttribute: \"data-controller\",\n actionAttribute: \"data-action\",\n targetAttribute: \"data-target\",\n targetAttributeForScope: (identifier) => `data-${identifier}-target`,\n outletAttributeForScope: (identifier, outlet) => `data-${identifier}-${outlet}-outlet`,\n keyMappings: Object.assign(Object.assign({ enter: \"Enter\", tab: \"Tab\", esc: \"Escape\", space: \" \", up: \"ArrowUp\", down: \"ArrowDown\", left: \"ArrowLeft\", right: \"ArrowRight\", home: \"Home\", end: \"End\", page_up: \"PageUp\", page_down: \"PageDown\" }, objectFromEntries(\"abcdefghijklmnopqrstuvwxyz\".split(\"\").map((c) => [c, c]))), objectFromEntries(\"0123456789\".split(\"\").map((n) => [n, n]))),\n};\nfunction objectFromEntries(array) {\n return array.reduce((memo, [k, v]) => (Object.assign(Object.assign({}, memo), { [k]: v })), {});\n}\n\nclass Application {\n constructor(element = document.documentElement, schema = defaultSchema) {\n this.logger = console;\n this.debug = false;\n this.logDebugActivity = (identifier, functionName, detail = {}) => {\n if (this.debug) {\n this.logFormattedMessage(identifier, functionName, detail);\n }\n };\n this.element = element;\n this.schema = schema;\n this.dispatcher = new Dispatcher(this);\n this.router = new Router(this);\n this.actionDescriptorFilters = Object.assign({}, defaultActionDescriptorFilters);\n }\n static start(element, schema) {\n const application = new this(element, schema);\n application.start();\n return application;\n }\n async start() {\n await domReady();\n this.logDebugActivity(\"application\", \"starting\");\n this.dispatcher.start();\n this.router.start();\n this.logDebugActivity(\"application\", \"start\");\n }\n stop() {\n this.logDebugActivity(\"application\", \"stopping\");\n this.dispatcher.stop();\n this.router.stop();\n this.logDebugActivity(\"application\", \"stop\");\n }\n register(identifier, controllerConstructor) {\n this.load({ identifier, controllerConstructor });\n }\n registerActionOption(name, filter) {\n this.actionDescriptorFilters[name] = filter;\n }\n load(head, ...rest) {\n const definitions = Array.isArray(head) ? head : [head, ...rest];\n definitions.forEach((definition) => {\n if (definition.controllerConstructor.shouldLoad) {\n this.router.loadDefinition(definition);\n }\n });\n }\n unload(head, ...rest) {\n const identifiers = Array.isArray(head) ? head : [head, ...rest];\n identifiers.forEach((identifier) => this.router.unloadIdentifier(identifier));\n }\n get controllers() {\n return this.router.contexts.map((context) => context.controller);\n }\n getControllerForElementAndIdentifier(element, identifier) {\n const context = this.router.getContextForElementAndIdentifier(element, identifier);\n return context ? context.controller : null;\n }\n handleError(error, message, detail) {\n var _a;\n this.logger.error(`%s\\n\\n%o\\n\\n%o`, message, error, detail);\n (_a = window.onerror) === null || _a === void 0 ? void 0 : _a.call(window, message, \"\", 0, 0, error);\n }\n logFormattedMessage(identifier, functionName, detail = {}) {\n detail = Object.assign({ application: this }, detail);\n this.logger.groupCollapsed(`${identifier} #${functionName}`);\n this.logger.log(\"details:\", Object.assign({}, detail));\n this.logger.groupEnd();\n }\n}\nfunction domReady() {\n return new Promise((resolve) => {\n if (document.readyState == \"loading\") {\n document.addEventListener(\"DOMContentLoaded\", () => resolve());\n }\n else {\n resolve();\n }\n });\n}\n\nfunction ClassPropertiesBlessing(constructor) {\n const classes = readInheritableStaticArrayValues(constructor, \"classes\");\n return classes.reduce((properties, classDefinition) => {\n return Object.assign(properties, propertiesForClassDefinition(classDefinition));\n }, {});\n}\nfunction propertiesForClassDefinition(key) {\n return {\n [`${key}Class`]: {\n get() {\n const { classes } = this;\n if (classes.has(key)) {\n return classes.get(key);\n }\n else {\n const attribute = classes.getAttributeName(key);\n throw new Error(`Missing attribute \"${attribute}\"`);\n }\n },\n },\n [`${key}Classes`]: {\n get() {\n return this.classes.getAll(key);\n },\n },\n [`has${capitalize(key)}Class`]: {\n get() {\n return this.classes.has(key);\n },\n },\n };\n}\n\nfunction OutletPropertiesBlessing(constructor) {\n const outlets = readInheritableStaticArrayValues(constructor, \"outlets\");\n return outlets.reduce((properties, outletDefinition) => {\n return Object.assign(properties, propertiesForOutletDefinition(outletDefinition));\n }, {});\n}\nfunction getOutletController(controller, element, identifier) {\n return controller.application.getControllerForElementAndIdentifier(element, identifier);\n}\nfunction getControllerAndEnsureConnectedScope(controller, element, outletName) {\n let outletController = getOutletController(controller, element, outletName);\n if (outletController)\n return outletController;\n controller.application.router.proposeToConnectScopeForElementAndIdentifier(element, outletName);\n outletController = getOutletController(controller, element, outletName);\n if (outletController)\n return outletController;\n}\nfunction propertiesForOutletDefinition(name) {\n const camelizedName = namespaceCamelize(name);\n return {\n [`${camelizedName}Outlet`]: {\n get() {\n const outletElement = this.outlets.find(name);\n const selector = this.outlets.getSelectorForOutletName(name);\n if (outletElement) {\n const outletController = getControllerAndEnsureConnectedScope(this, outletElement, name);\n if (outletController)\n return outletController;\n throw new Error(`The provided outlet element is missing an outlet controller \"${name}\" instance for host controller \"${this.identifier}\"`);\n }\n throw new Error(`Missing outlet element \"${name}\" for host controller \"${this.identifier}\". Stimulus couldn't find a matching outlet element using selector \"${selector}\".`);\n },\n },\n [`${camelizedName}Outlets`]: {\n get() {\n const outlets = this.outlets.findAll(name);\n if (outlets.length > 0) {\n return outlets\n .map((outletElement) => {\n const outletController = getControllerAndEnsureConnectedScope(this, outletElement, name);\n if (outletController)\n return outletController;\n console.warn(`The provided outlet element is missing an outlet controller \"${name}\" instance for host controller \"${this.identifier}\"`, outletElement);\n })\n .filter((controller) => controller);\n }\n return [];\n },\n },\n [`${camelizedName}OutletElement`]: {\n get() {\n const outletElement = this.outlets.find(name);\n const selector = this.outlets.getSelectorForOutletName(name);\n if (outletElement) {\n return outletElement;\n }\n else {\n throw new Error(`Missing outlet element \"${name}\" for host controller \"${this.identifier}\". Stimulus couldn't find a matching outlet element using selector \"${selector}\".`);\n }\n },\n },\n [`${camelizedName}OutletElements`]: {\n get() {\n return this.outlets.findAll(name);\n },\n },\n [`has${capitalize(camelizedName)}Outlet`]: {\n get() {\n return this.outlets.has(name);\n },\n },\n };\n}\n\nfunction TargetPropertiesBlessing(constructor) {\n const targets = readInheritableStaticArrayValues(constructor, \"targets\");\n return targets.reduce((properties, targetDefinition) => {\n return Object.assign(properties, propertiesForTargetDefinition(targetDefinition));\n }, {});\n}\nfunction propertiesForTargetDefinition(name) {\n return {\n [`${name}Target`]: {\n get() {\n const target = this.targets.find(name);\n if (target) {\n return target;\n }\n else {\n throw new Error(`Missing target element \"${name}\" for \"${this.identifier}\" controller`);\n }\n },\n },\n [`${name}Targets`]: {\n get() {\n return this.targets.findAll(name);\n },\n },\n [`has${capitalize(name)}Target`]: {\n get() {\n return this.targets.has(name);\n },\n },\n };\n}\n\nfunction ValuePropertiesBlessing(constructor) {\n const valueDefinitionPairs = readInheritableStaticObjectPairs(constructor, \"values\");\n const propertyDescriptorMap = {\n valueDescriptorMap: {\n get() {\n return valueDefinitionPairs.reduce((result, valueDefinitionPair) => {\n const valueDescriptor = parseValueDefinitionPair(valueDefinitionPair, this.identifier);\n const attributeName = this.data.getAttributeNameForKey(valueDescriptor.key);\n return Object.assign(result, { [attributeName]: valueDescriptor });\n }, {});\n },\n },\n };\n return valueDefinitionPairs.reduce((properties, valueDefinitionPair) => {\n return Object.assign(properties, propertiesForValueDefinitionPair(valueDefinitionPair));\n }, propertyDescriptorMap);\n}\nfunction propertiesForValueDefinitionPair(valueDefinitionPair, controller) {\n const definition = parseValueDefinitionPair(valueDefinitionPair, controller);\n const { key, name, reader: read, writer: write } = definition;\n return {\n [name]: {\n get() {\n const value = this.data.get(key);\n if (value !== null) {\n return read(value);\n }\n else {\n return definition.defaultValue;\n }\n },\n set(value) {\n if (value === undefined) {\n this.data.delete(key);\n }\n else {\n this.data.set(key, write(value));\n }\n },\n },\n [`has${capitalize(name)}`]: {\n get() {\n return this.data.has(key) || definition.hasCustomDefaultValue;\n },\n },\n };\n}\nfunction parseValueDefinitionPair([token, typeDefinition], controller) {\n return valueDescriptorForTokenAndTypeDefinition({\n controller,\n token,\n typeDefinition,\n });\n}\nfunction parseValueTypeConstant(constant) {\n switch (constant) {\n case Array:\n return \"array\";\n case Boolean:\n return \"boolean\";\n case Number:\n return \"number\";\n case Object:\n return \"object\";\n case String:\n return \"string\";\n }\n}\nfunction parseValueTypeDefault(defaultValue) {\n switch (typeof defaultValue) {\n case \"boolean\":\n return \"boolean\";\n case \"number\":\n return \"number\";\n case \"string\":\n return \"string\";\n }\n if (Array.isArray(defaultValue))\n return \"array\";\n if (Object.prototype.toString.call(defaultValue) === \"[object Object]\")\n return \"object\";\n}\nfunction parseValueTypeObject(payload) {\n const { controller, token, typeObject } = payload;\n const hasType = isSomething(typeObject.type);\n const hasDefault = isSomething(typeObject.default);\n const fullObject = hasType && hasDefault;\n const onlyType = hasType && !hasDefault;\n const onlyDefault = !hasType && hasDefault;\n const typeFromObject = parseValueTypeConstant(typeObject.type);\n const typeFromDefaultValue = parseValueTypeDefault(payload.typeObject.default);\n if (onlyType)\n return typeFromObject;\n if (onlyDefault)\n return typeFromDefaultValue;\n if (typeFromObject !== typeFromDefaultValue) {\n const propertyPath = controller ? `${controller}.${token}` : token;\n throw new Error(`The specified default value for the Stimulus Value \"${propertyPath}\" must match the defined type \"${typeFromObject}\". The provided default value of \"${typeObject.default}\" is of type \"${typeFromDefaultValue}\".`);\n }\n if (fullObject)\n return typeFromObject;\n}\nfunction parseValueTypeDefinition(payload) {\n const { controller, token, typeDefinition } = payload;\n const typeObject = { controller, token, typeObject: typeDefinition };\n const typeFromObject = parseValueTypeObject(typeObject);\n const typeFromDefaultValue = parseValueTypeDefault(typeDefinition);\n const typeFromConstant = parseValueTypeConstant(typeDefinition);\n const type = typeFromObject || typeFromDefaultValue || typeFromConstant;\n if (type)\n return type;\n const propertyPath = controller ? `${controller}.${typeDefinition}` : token;\n throw new Error(`Unknown value type \"${propertyPath}\" for \"${token}\" value`);\n}\nfunction defaultValueForDefinition(typeDefinition) {\n const constant = parseValueTypeConstant(typeDefinition);\n if (constant)\n return defaultValuesByType[constant];\n const hasDefault = hasProperty(typeDefinition, \"default\");\n const hasType = hasProperty(typeDefinition, \"type\");\n const typeObject = typeDefinition;\n if (hasDefault)\n return typeObject.default;\n if (hasType) {\n const { type } = typeObject;\n const constantFromType = parseValueTypeConstant(type);\n if (constantFromType)\n return defaultValuesByType[constantFromType];\n }\n return typeDefinition;\n}\nfunction valueDescriptorForTokenAndTypeDefinition(payload) {\n const { token, typeDefinition } = payload;\n const key = `${dasherize(token)}-value`;\n const type = parseValueTypeDefinition(payload);\n return {\n type,\n key,\n name: camelize(key),\n get defaultValue() {\n return defaultValueForDefinition(typeDefinition);\n },\n get hasCustomDefaultValue() {\n return parseValueTypeDefault(typeDefinition) !== undefined;\n },\n reader: readers[type],\n writer: writers[type] || writers.default,\n };\n}\nconst defaultValuesByType = {\n get array() {\n return [];\n },\n boolean: false,\n number: 0,\n get object() {\n return {};\n },\n string: \"\",\n};\nconst readers = {\n array(value) {\n const array = JSON.parse(value);\n if (!Array.isArray(array)) {\n throw new TypeError(`expected value of type \"array\" but instead got value \"${value}\" of type \"${parseValueTypeDefault(array)}\"`);\n }\n return array;\n },\n boolean(value) {\n return !(value == \"0\" || String(value).toLowerCase() == \"false\");\n },\n number(value) {\n return Number(value.replace(/_/g, \"\"));\n },\n object(value) {\n const object = JSON.parse(value);\n if (object === null || typeof object != \"object\" || Array.isArray(object)) {\n throw new TypeError(`expected value of type \"object\" but instead got value \"${value}\" of type \"${parseValueTypeDefault(object)}\"`);\n }\n return object;\n },\n string(value) {\n return value;\n },\n};\nconst writers = {\n default: writeString,\n array: writeJSON,\n object: writeJSON,\n};\nfunction writeJSON(value) {\n return JSON.stringify(value);\n}\nfunction writeString(value) {\n return `${value}`;\n}\n\nclass Controller {\n constructor(context) {\n this.context = context;\n }\n static get shouldLoad() {\n return true;\n }\n static afterLoad(_identifier, _application) {\n return;\n }\n get application() {\n return this.context.application;\n }\n get scope() {\n return this.context.scope;\n }\n get element() {\n return this.scope.element;\n }\n get identifier() {\n return this.scope.identifier;\n }\n get targets() {\n return this.scope.targets;\n }\n get outlets() {\n return this.scope.outlets;\n }\n get classes() {\n return this.scope.classes;\n }\n get data() {\n return this.scope.data;\n }\n initialize() {\n }\n connect() {\n }\n disconnect() {\n }\n dispatch(eventName, { target = this.element, detail = {}, prefix = this.identifier, bubbles = true, cancelable = true, } = {}) {\n const type = prefix ? `${prefix}:${eventName}` : eventName;\n const event = new CustomEvent(type, { detail, bubbles, cancelable });\n target.dispatchEvent(event);\n return event;\n }\n}\nController.blessings = [\n ClassPropertiesBlessing,\n TargetPropertiesBlessing,\n ValuePropertiesBlessing,\n OutletPropertiesBlessing,\n];\nController.targets = [];\nController.outlets = [];\nController.values = {};\n\nexport { Application, AttributeObserver, Context, Controller, ElementObserver, IndexedMultimap, Multimap, SelectorObserver, StringMapObserver, TokenListObserver, ValueListObserver, add, defaultSchema, del, fetch, prune };\n","import { Application } from \"@hotwired/stimulus\";\n\nconst application = Application.start();\n\n// Configure Stimulus development experience\napplication.debug = false;\nwindow.Stimulus = application;\n\nexport { application };\n","let authToken;\n\nconst JSON_HEADERS = {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n};\n\nexport default async function railsFetch(\n url: string,\n options: RequestInit | undefined\n) {\n if (!authToken) {\n authToken = document\n .querySelector('meta[name=\"csrf-token\"]')\n ?.getAttribute(\"content\");\n }\n\n const authHeaders = {\n \"X-CSRF-Token\": authToken,\n };\n\n const headers = Object.assign({}, options?.headers, authHeaders);\n\n return await fetch(url, { ...options, headers });\n}\n\nexport async function fetchJson(url: string, options: RequestInit | undefined) {\n const headers = Object.assign({}, options?.headers, JSON_HEADERS);\n return railsFetch(url, { ...options, headers });\n}\n","'use strict';\n\nvar m = require('react-dom');\nif (process.env.NODE_ENV === 'production') {\n exports.createRoot = m.createRoot;\n exports.hydrateRoot = m.hydrateRoot;\n} else {\n var i = m.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;\n exports.createRoot = function(c, o) {\n i.usingClientEntryPoint = true;\n try {\n return m.createRoot(c, o);\n } finally {\n i.usingClientEntryPoint = false;\n }\n };\n exports.hydrateRoot = function(c, h, o) {\n i.usingClientEntryPoint = true;\n try {\n return m.hydrateRoot(c, h, o);\n } finally {\n i.usingClientEntryPoint = false;\n }\n };\n}\n","import { Controller } from \"@hotwired/stimulus\";\nimport React from \"react\";\nimport * as ReactDOMClient from \"react-dom/client\";\n\nexport class ReactController extends Controller {\n static values = {\n props: Object,\n };\n get root() {\n if (this._root === undefined) {\n this._root = ReactDOMClient.createRoot(this.element);\n }\n return this._root;\n }\n\n disconnect() {\n this.root.unmount();\n }\n}\n","var __defProp = Object.defineProperty;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\nimport * as React from \"react\";\nimport React__default, { createContext, useContext, useLayoutEffect, useEffect, useMemo as useMemo$1, useReducer, useRef, useState, createElement, Component, createRef, forwardRef as forwardRef$1, useCallback as useCallback$1, useDebugValue } from \"react\";\nimport { Grid, GridItem, Text as Text$2, Flex, Box, Button, forwardRef, ListItem as ListItem$1, List, Center, Tab, NumberInput, NumberInputField, NumberInputStepper, NumberIncrementStepper, NumberDecrementStepper, Alert, Spinner, FormControl, VStack, FormHelperText, FormLabel, InputGroup, InputLeftAddon, useColorMode, Portal as Portal$1, Tr, Td, Editable as Editable$1, EditablePreview, EditableInput, Table as Table$1, Thead, Th, Tbody, Input, FormErrorMessage, HStack, Heading as Heading$1, useClipboard, InputRightAddon, IconButton, Textarea, Checkbox, ModalHeader, ModalCloseButton, ModalBody, ModalFooter, useDisclosure, Modal, ModalOverlay, ModalContent, MenuItem, AlertDialog, AlertDialogOverlay, AlertDialogContent, AlertDialogHeader, AlertDialogBody, AlertDialogFooter, Menu, MenuButton, MenuList, Tabs, TabList, TabPanels, TabPanel, Select, createIcon, CheckboxGroup, ButtonGroup as ButtonGroup$1, Divider, AbsoluteCenter, AccordionItem, AccordionButton, AccordionIcon, AccordionPanel, Accordion, Link as Link$1, UnorderedList, AlertIcon, RadioGroup, Radio, chakra, StackDivider, extendTheme, InputRightElement, TableContainer, Badge, Popover, PopoverTrigger, PopoverContent, PopoverArrow, PopoverCloseButton, PopoverFooter, PopoverBody, useTab, useMultiStyleConfig, CloseButton, AlertTitle, AlertDescription } from \"@chakra-ui/react\";\nimport * as ReactDOM from \"react-dom\";\nimport ReactDOM__default, { unstable_batchedUpdates, findDOMNode } from \"react-dom\";\nimport { DragHandleIcon, HamburgerIcon, EditIcon, CloseIcon, CheckIcon, Icon, ChevronDownIcon } from \"@chakra-ui/icons\";\nimport { BrowserQRCodeReader } from \"@zxing/browser\";\nvar commonjsGlobal = typeof globalThis !== \"undefined\" ? globalThis : typeof window !== \"undefined\" ? window : typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : {};\nfunction getDefaultExportFromCjs$1(x2) {\n return x2 && x2.__esModule && Object.prototype.hasOwnProperty.call(x2, \"default\") ? x2[\"default\"] : x2;\n}\nvar jsxRuntime = { exports: {} };\nvar reactJsxRuntime_production_min = {};\n/**\n * @license React\n * react-jsx-runtime.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\nvar hasRequiredReactJsxRuntime_production_min;\nfunction requireReactJsxRuntime_production_min() {\n if (hasRequiredReactJsxRuntime_production_min) return reactJsxRuntime_production_min;\n hasRequiredReactJsxRuntime_production_min = 1;\n var f2 = React__default, k2 = Symbol.for(\"react.element\"), l2 = Symbol.for(\"react.fragment\"), m = Object.prototype.hasOwnProperty, n2 = f2.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner, p2 = { key: true, ref: true, __self: true, __source: true };\n function q2(c2, a2, g2) {\n var b2, d2 = {}, e = null, h2 = null;\n void 0 !== g2 && (e = \"\" + g2);\n void 0 !== a2.key && (e = \"\" + a2.key);\n void 0 !== a2.ref && (h2 = a2.ref);\n for (b2 in a2) m.call(a2, b2) && !p2.hasOwnProperty(b2) && (d2[b2] = a2[b2]);\n if (c2 && c2.defaultProps) for (b2 in a2 = c2.defaultProps, a2) void 0 === d2[b2] && (d2[b2] = a2[b2]);\n return { $$typeof: k2, type: c2, key: e, ref: h2, props: d2, _owner: n2.current };\n }\n reactJsxRuntime_production_min.Fragment = l2;\n reactJsxRuntime_production_min.jsx = q2;\n reactJsxRuntime_production_min.jsxs = q2;\n return reactJsxRuntime_production_min;\n}\nvar reactJsxRuntime_development = {};\n/**\n * @license React\n * react-jsx-runtime.development.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\nvar hasRequiredReactJsxRuntime_development;\nfunction requireReactJsxRuntime_development() {\n if (hasRequiredReactJsxRuntime_development) return reactJsxRuntime_development;\n hasRequiredReactJsxRuntime_development = 1;\n if (process.env.NODE_ENV !== \"production\") {\n (function() {\n var React2 = React__default;\n var REACT_ELEMENT_TYPE = Symbol.for(\"react.element\");\n var REACT_PORTAL_TYPE = Symbol.for(\"react.portal\");\n var REACT_FRAGMENT_TYPE = Symbol.for(\"react.fragment\");\n var REACT_STRICT_MODE_TYPE = Symbol.for(\"react.strict_mode\");\n var REACT_PROFILER_TYPE = Symbol.for(\"react.profiler\");\n var REACT_PROVIDER_TYPE = Symbol.for(\"react.provider\");\n var REACT_CONTEXT_TYPE = Symbol.for(\"react.context\");\n var REACT_FORWARD_REF_TYPE = Symbol.for(\"react.forward_ref\");\n var REACT_SUSPENSE_TYPE = Symbol.for(\"react.suspense\");\n var REACT_SUSPENSE_LIST_TYPE = Symbol.for(\"react.suspense_list\");\n var REACT_MEMO_TYPE = Symbol.for(\"react.memo\");\n var REACT_LAZY_TYPE = Symbol.for(\"react.lazy\");\n var REACT_OFFSCREEN_TYPE = Symbol.for(\"react.offscreen\");\n var MAYBE_ITERATOR_SYMBOL = Symbol.iterator;\n var FAUX_ITERATOR_SYMBOL = \"@@iterator\";\n function getIteratorFn(maybeIterable) {\n if (maybeIterable === null || typeof maybeIterable !== \"object\") {\n return null;\n }\n var maybeIterator = MAYBE_ITERATOR_SYMBOL && maybeIterable[MAYBE_ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL];\n if (typeof maybeIterator === \"function\") {\n return maybeIterator;\n }\n return null;\n }\n var ReactSharedInternals = React2.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;\n function error2(format2) {\n {\n {\n for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n printWarning(\"error\", format2, args);\n }\n }\n }\n function printWarning(level, format2, args) {\n {\n var ReactDebugCurrentFrame2 = ReactSharedInternals.ReactDebugCurrentFrame;\n var stack = ReactDebugCurrentFrame2.getStackAddendum();\n if (stack !== \"\") {\n format2 += \"%s\";\n args = args.concat([stack]);\n }\n var argsWithFormat = args.map(function(item) {\n return String(item);\n });\n argsWithFormat.unshift(\"Warning: \" + format2);\n Function.prototype.apply.call(console[level], console, argsWithFormat);\n }\n }\n var enableScopeAPI = false;\n var enableCacheElement = false;\n var enableTransitionTracing = false;\n var enableLegacyHidden = false;\n var enableDebugTracing = false;\n var REACT_MODULE_REFERENCE;\n {\n REACT_MODULE_REFERENCE = Symbol.for(\"react.module.reference\");\n }\n function isValidElementType(type) {\n if (typeof type === \"string\" || typeof type === \"function\") {\n return true;\n }\n if (type === REACT_FRAGMENT_TYPE || type === REACT_PROFILER_TYPE || enableDebugTracing || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || enableLegacyHidden || type === REACT_OFFSCREEN_TYPE || enableScopeAPI || enableCacheElement || enableTransitionTracing) {\n return true;\n }\n if (typeof type === \"object\" && type !== null) {\n if (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || // This needs to include all possible module reference object\n // types supported by any Flight configuration anywhere since\n // we don't know which Flight build this will end up being used\n // with.\n type.$$typeof === REACT_MODULE_REFERENCE || type.getModuleId !== void 0) {\n return true;\n }\n }\n return false;\n }\n function getWrappedName(outerType, innerType, wrapperName) {\n var displayName = outerType.displayName;\n if (displayName) {\n return displayName;\n }\n var functionName = innerType.displayName || innerType.name || \"\";\n return functionName !== \"\" ? wrapperName + \"(\" + functionName + \")\" : wrapperName;\n }\n function getContextName(type) {\n return type.displayName || \"Context\";\n }\n function getComponentNameFromType(type) {\n if (type == null) {\n return null;\n }\n {\n if (typeof type.tag === \"number\") {\n error2(\"Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue.\");\n }\n }\n if (typeof type === \"function\") {\n return type.displayName || type.name || null;\n }\n if (typeof type === \"string\") {\n return type;\n }\n switch (type) {\n case REACT_FRAGMENT_TYPE:\n return \"Fragment\";\n case REACT_PORTAL_TYPE:\n return \"Portal\";\n case REACT_PROFILER_TYPE:\n return \"Profiler\";\n case REACT_STRICT_MODE_TYPE:\n return \"StrictMode\";\n case REACT_SUSPENSE_TYPE:\n return \"Suspense\";\n case REACT_SUSPENSE_LIST_TYPE:\n return \"SuspenseList\";\n }\n if (typeof type === \"object\") {\n switch (type.$$typeof) {\n case REACT_CONTEXT_TYPE:\n var context = type;\n return getContextName(context) + \".Consumer\";\n case REACT_PROVIDER_TYPE:\n var provider = type;\n return getContextName(provider._context) + \".Provider\";\n case REACT_FORWARD_REF_TYPE:\n return getWrappedName(type, type.render, \"ForwardRef\");\n case REACT_MEMO_TYPE:\n var outerName = type.displayName || null;\n if (outerName !== null) {\n return outerName;\n }\n return getComponentNameFromType(type.type) || \"Memo\";\n case REACT_LAZY_TYPE: {\n var lazyComponent = type;\n var payload = lazyComponent._payload;\n var init2 = lazyComponent._init;\n try {\n return getComponentNameFromType(init2(payload));\n } catch (x2) {\n return null;\n }\n }\n }\n }\n return null;\n }\n var assign2 = Object.assign;\n var disabledDepth = 0;\n var prevLog;\n var prevInfo;\n var prevWarn;\n var prevError;\n var prevGroup;\n var prevGroupCollapsed;\n var prevGroupEnd;\n function disabledLog() {\n }\n disabledLog.__reactDisabledLog = true;\n function disableLogs() {\n {\n if (disabledDepth === 0) {\n prevLog = console.log;\n prevInfo = console.info;\n prevWarn = console.warn;\n prevError = console.error;\n prevGroup = console.group;\n prevGroupCollapsed = console.groupCollapsed;\n prevGroupEnd = console.groupEnd;\n var props = {\n configurable: true,\n enumerable: true,\n value: disabledLog,\n writable: true\n };\n Object.defineProperties(console, {\n info: props,\n log: props,\n warn: props,\n error: props,\n group: props,\n groupCollapsed: props,\n groupEnd: props\n });\n }\n disabledDepth++;\n }\n }\n function reenableLogs() {\n {\n disabledDepth--;\n if (disabledDepth === 0) {\n var props = {\n configurable: true,\n enumerable: true,\n writable: true\n };\n Object.defineProperties(console, {\n log: assign2({}, props, {\n value: prevLog\n }),\n info: assign2({}, props, {\n value: prevInfo\n }),\n warn: assign2({}, props, {\n value: prevWarn\n }),\n error: assign2({}, props, {\n value: prevError\n }),\n group: assign2({}, props, {\n value: prevGroup\n }),\n groupCollapsed: assign2({}, props, {\n value: prevGroupCollapsed\n }),\n groupEnd: assign2({}, props, {\n value: prevGroupEnd\n })\n });\n }\n if (disabledDepth < 0) {\n error2(\"disabledDepth fell below zero. This is a bug in React. Please file an issue.\");\n }\n }\n }\n var ReactCurrentDispatcher = ReactSharedInternals.ReactCurrentDispatcher;\n var prefix2;\n function describeBuiltInComponentFrame(name, source, ownerFn) {\n {\n if (prefix2 === void 0) {\n try {\n throw Error();\n } catch (x2) {\n var match5 = x2.stack.trim().match(/\\n( *(at )?)/);\n prefix2 = match5 && match5[1] || \"\";\n }\n }\n return \"\\n\" + prefix2 + name;\n }\n }\n var reentry = false;\n var componentFrameCache;\n {\n var PossiblyWeakMap = typeof WeakMap === \"function\" ? WeakMap : Map;\n componentFrameCache = new PossiblyWeakMap();\n }\n function describeNativeComponentFrame(fn2, construct) {\n if (!fn2 || reentry) {\n return \"\";\n }\n {\n var frame = componentFrameCache.get(fn2);\n if (frame !== void 0) {\n return frame;\n }\n }\n var control;\n reentry = true;\n var previousPrepareStackTrace = Error.prepareStackTrace;\n Error.prepareStackTrace = void 0;\n var previousDispatcher;\n {\n previousDispatcher = ReactCurrentDispatcher.current;\n ReactCurrentDispatcher.current = null;\n disableLogs();\n }\n try {\n if (construct) {\n var Fake = function() {\n throw Error();\n };\n Object.defineProperty(Fake.prototype, \"props\", {\n set: function() {\n throw Error();\n }\n });\n if (typeof Reflect === \"object\" && Reflect.construct) {\n try {\n Reflect.construct(Fake, []);\n } catch (x2) {\n control = x2;\n }\n Reflect.construct(fn2, [], Fake);\n } else {\n try {\n Fake.call();\n } catch (x2) {\n control = x2;\n }\n fn2.call(Fake.prototype);\n }\n } else {\n try {\n throw Error();\n } catch (x2) {\n control = x2;\n }\n fn2();\n }\n } catch (sample) {\n if (sample && control && typeof sample.stack === \"string\") {\n var sampleLines = sample.stack.split(\"\\n\");\n var controlLines = control.stack.split(\"\\n\");\n var s2 = sampleLines.length - 1;\n var c2 = controlLines.length - 1;\n while (s2 >= 1 && c2 >= 0 && sampleLines[s2] !== controlLines[c2]) {\n c2--;\n }\n for (; s2 >= 1 && c2 >= 0; s2--, c2--) {\n if (sampleLines[s2] !== controlLines[c2]) {\n if (s2 !== 1 || c2 !== 1) {\n do {\n s2--;\n c2--;\n if (c2 < 0 || sampleLines[s2] !== controlLines[c2]) {\n var _frame = \"\\n\" + sampleLines[s2].replace(\" at new \", \" at \");\n if (fn2.displayName && _frame.includes(\"\")) {\n _frame = _frame.replace(\"\", fn2.displayName);\n }\n {\n if (typeof fn2 === \"function\") {\n componentFrameCache.set(fn2, _frame);\n }\n }\n return _frame;\n }\n } while (s2 >= 1 && c2 >= 0);\n }\n break;\n }\n }\n }\n } finally {\n reentry = false;\n {\n ReactCurrentDispatcher.current = previousDispatcher;\n reenableLogs();\n }\n Error.prepareStackTrace = previousPrepareStackTrace;\n }\n var name = fn2 ? fn2.displayName || fn2.name : \"\";\n var syntheticFrame = name ? describeBuiltInComponentFrame(name) : \"\";\n {\n if (typeof fn2 === \"function\") {\n componentFrameCache.set(fn2, syntheticFrame);\n }\n }\n return syntheticFrame;\n }\n function describeFunctionComponentFrame(fn2, source, ownerFn) {\n {\n return describeNativeComponentFrame(fn2, false);\n }\n }\n function shouldConstruct(Component2) {\n var prototype = Component2.prototype;\n return !!(prototype && prototype.isReactComponent);\n }\n function describeUnknownElementTypeFrameInDEV(type, source, ownerFn) {\n if (type == null) {\n return \"\";\n }\n if (typeof type === \"function\") {\n {\n return describeNativeComponentFrame(type, shouldConstruct(type));\n }\n }\n if (typeof type === \"string\") {\n return describeBuiltInComponentFrame(type);\n }\n switch (type) {\n case REACT_SUSPENSE_TYPE:\n return describeBuiltInComponentFrame(\"Suspense\");\n case REACT_SUSPENSE_LIST_TYPE:\n return describeBuiltInComponentFrame(\"SuspenseList\");\n }\n if (typeof type === \"object\") {\n switch (type.$$typeof) {\n case REACT_FORWARD_REF_TYPE:\n return describeFunctionComponentFrame(type.render);\n case REACT_MEMO_TYPE:\n return describeUnknownElementTypeFrameInDEV(type.type, source, ownerFn);\n case REACT_LAZY_TYPE: {\n var lazyComponent = type;\n var payload = lazyComponent._payload;\n var init2 = lazyComponent._init;\n try {\n return describeUnknownElementTypeFrameInDEV(init2(payload), source, ownerFn);\n } catch (x2) {\n }\n }\n }\n }\n return \"\";\n }\n var hasOwnProperty = Object.prototype.hasOwnProperty;\n var loggedTypeFailures = {};\n var ReactDebugCurrentFrame = ReactSharedInternals.ReactDebugCurrentFrame;\n function setCurrentlyValidatingElement(element) {\n {\n if (element) {\n var owner = element._owner;\n var stack = describeUnknownElementTypeFrameInDEV(element.type, element._source, owner ? owner.type : null);\n ReactDebugCurrentFrame.setExtraStackFrame(stack);\n } else {\n ReactDebugCurrentFrame.setExtraStackFrame(null);\n }\n }\n }\n function checkPropTypes(typeSpecs, values2, location, componentName, element) {\n {\n var has2 = Function.call.bind(hasOwnProperty);\n for (var typeSpecName in typeSpecs) {\n if (has2(typeSpecs, typeSpecName)) {\n var error$12 = void 0;\n try {\n if (typeof typeSpecs[typeSpecName] !== \"function\") {\n var err = Error((componentName || \"React class\") + \": \" + location + \" type `\" + typeSpecName + \"` is invalid; it must be a function, usually from the `prop-types` package, but received `\" + typeof typeSpecs[typeSpecName] + \"`.This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.\");\n err.name = \"Invariant Violation\";\n throw err;\n }\n error$12 = typeSpecs[typeSpecName](values2, typeSpecName, componentName, location, null, \"SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED\");\n } catch (ex) {\n error$12 = ex;\n }\n if (error$12 && !(error$12 instanceof Error)) {\n setCurrentlyValidatingElement(element);\n error2(\"%s: type specification of %s `%s` is invalid; the type checker function must return `null` or an `Error` but returned a %s. You may have forgotten to pass an argument to the type checker creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and shape all require an argument).\", componentName || \"React class\", location, typeSpecName, typeof error$12);\n setCurrentlyValidatingElement(null);\n }\n if (error$12 instanceof Error && !(error$12.message in loggedTypeFailures)) {\n loggedTypeFailures[error$12.message] = true;\n setCurrentlyValidatingElement(element);\n error2(\"Failed %s type: %s\", location, error$12.message);\n setCurrentlyValidatingElement(null);\n }\n }\n }\n }\n }\n var isArrayImpl = Array.isArray;\n function isArray2(a2) {\n return isArrayImpl(a2);\n }\n function typeName(value) {\n {\n var hasToStringTag = typeof Symbol === \"function\" && Symbol.toStringTag;\n var type = hasToStringTag && value[Symbol.toStringTag] || value.constructor.name || \"Object\";\n return type;\n }\n }\n function willCoercionThrow(value) {\n {\n try {\n testStringCoercion(value);\n return false;\n } catch (e) {\n return true;\n }\n }\n }\n function testStringCoercion(value) {\n return \"\" + value;\n }\n function checkKeyStringCoercion(value) {\n {\n if (willCoercionThrow(value)) {\n error2(\"The provided key is an unsupported type %s. This value must be coerced to a string before before using it here.\", typeName(value));\n return testStringCoercion(value);\n }\n }\n }\n var ReactCurrentOwner = ReactSharedInternals.ReactCurrentOwner;\n var RESERVED_PROPS = {\n key: true,\n ref: true,\n __self: true,\n __source: true\n };\n var specialPropKeyWarningShown;\n var specialPropRefWarningShown;\n var didWarnAboutStringRefs;\n {\n didWarnAboutStringRefs = {};\n }\n function hasValidRef(config2) {\n {\n if (hasOwnProperty.call(config2, \"ref\")) {\n var getter = Object.getOwnPropertyDescriptor(config2, \"ref\").get;\n if (getter && getter.isReactWarning) {\n return false;\n }\n }\n }\n return config2.ref !== void 0;\n }\n function hasValidKey(config2) {\n {\n if (hasOwnProperty.call(config2, \"key\")) {\n var getter = Object.getOwnPropertyDescriptor(config2, \"key\").get;\n if (getter && getter.isReactWarning) {\n return false;\n }\n }\n }\n return config2.key !== void 0;\n }\n function warnIfStringRefCannotBeAutoConverted(config2, self2) {\n {\n if (typeof config2.ref === \"string\" && ReactCurrentOwner.current && self2 && ReactCurrentOwner.current.stateNode !== self2) {\n var componentName = getComponentNameFromType(ReactCurrentOwner.current.type);\n if (!didWarnAboutStringRefs[componentName]) {\n error2('Component \"%s\" contains the string ref \"%s\". Support for string refs will be removed in a future major release. This case cannot be automatically converted to an arrow function. We ask you to manually fix this case by using useRef() or createRef() instead. Learn more about using refs safely here: https://reactjs.org/link/strict-mode-string-ref', getComponentNameFromType(ReactCurrentOwner.current.type), config2.ref);\n didWarnAboutStringRefs[componentName] = true;\n }\n }\n }\n }\n function defineKeyPropWarningGetter(props, displayName) {\n {\n var warnAboutAccessingKey = function() {\n if (!specialPropKeyWarningShown) {\n specialPropKeyWarningShown = true;\n error2(\"%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://reactjs.org/link/special-props)\", displayName);\n }\n };\n warnAboutAccessingKey.isReactWarning = true;\n Object.defineProperty(props, \"key\", {\n get: warnAboutAccessingKey,\n configurable: true\n });\n }\n }\n function defineRefPropWarningGetter(props, displayName) {\n {\n var warnAboutAccessingRef = function() {\n if (!specialPropRefWarningShown) {\n specialPropRefWarningShown = true;\n error2(\"%s: `ref` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://reactjs.org/link/special-props)\", displayName);\n }\n };\n warnAboutAccessingRef.isReactWarning = true;\n Object.defineProperty(props, \"ref\", {\n get: warnAboutAccessingRef,\n configurable: true\n });\n }\n }\n var ReactElement = function(type, key, ref2, self2, source, owner, props) {\n var element = {\n // This tag allows us to uniquely identify this as a React Element\n $$typeof: REACT_ELEMENT_TYPE,\n // Built-in properties that belong on the element\n type,\n key,\n ref: ref2,\n props,\n // Record the component responsible for creating this element.\n _owner: owner\n };\n {\n element._store = {};\n Object.defineProperty(element._store, \"validated\", {\n configurable: false,\n enumerable: false,\n writable: true,\n value: false\n });\n Object.defineProperty(element, \"_self\", {\n configurable: false,\n enumerable: false,\n writable: false,\n value: self2\n });\n Object.defineProperty(element, \"_source\", {\n configurable: false,\n enumerable: false,\n writable: false,\n value: source\n });\n if (Object.freeze) {\n Object.freeze(element.props);\n Object.freeze(element);\n }\n }\n return element;\n };\n function jsxDEV(type, config2, maybeKey, source, self2) {\n {\n var propName;\n var props = {};\n var key = null;\n var ref2 = null;\n if (maybeKey !== void 0) {\n {\n checkKeyStringCoercion(maybeKey);\n }\n key = \"\" + maybeKey;\n }\n if (hasValidKey(config2)) {\n {\n checkKeyStringCoercion(config2.key);\n }\n key = \"\" + config2.key;\n }\n if (hasValidRef(config2)) {\n ref2 = config2.ref;\n warnIfStringRefCannotBeAutoConverted(config2, self2);\n }\n for (propName in config2) {\n if (hasOwnProperty.call(config2, propName) && !RESERVED_PROPS.hasOwnProperty(propName)) {\n props[propName] = config2[propName];\n }\n }\n if (type && type.defaultProps) {\n var defaultProps2 = type.defaultProps;\n for (propName in defaultProps2) {\n if (props[propName] === void 0) {\n props[propName] = defaultProps2[propName];\n }\n }\n }\n if (key || ref2) {\n var displayName = typeof type === \"function\" ? type.displayName || type.name || \"Unknown\" : type;\n if (key) {\n defineKeyPropWarningGetter(props, displayName);\n }\n if (ref2) {\n defineRefPropWarningGetter(props, displayName);\n }\n }\n return ReactElement(type, key, ref2, self2, source, ReactCurrentOwner.current, props);\n }\n }\n var ReactCurrentOwner$1 = ReactSharedInternals.ReactCurrentOwner;\n var ReactDebugCurrentFrame$1 = ReactSharedInternals.ReactDebugCurrentFrame;\n function setCurrentlyValidatingElement$1(element) {\n {\n if (element) {\n var owner = element._owner;\n var stack = describeUnknownElementTypeFrameInDEV(element.type, element._source, owner ? owner.type : null);\n ReactDebugCurrentFrame$1.setExtraStackFrame(stack);\n } else {\n ReactDebugCurrentFrame$1.setExtraStackFrame(null);\n }\n }\n }\n var propTypesMisspellWarningShown;\n {\n propTypesMisspellWarningShown = false;\n }\n function isValidElement(object) {\n {\n return typeof object === \"object\" && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\n }\n }\n function getDeclarationErrorAddendum() {\n {\n if (ReactCurrentOwner$1.current) {\n var name = getComponentNameFromType(ReactCurrentOwner$1.current.type);\n if (name) {\n return \"\\n\\nCheck the render method of `\" + name + \"`.\";\n }\n }\n return \"\";\n }\n }\n function getSourceInfoErrorAddendum(source) {\n {\n return \"\";\n }\n }\n var ownerHasKeyUseWarning = {};\n function getCurrentComponentErrorInfo(parentType) {\n {\n var info = getDeclarationErrorAddendum();\n if (!info) {\n var parentName = typeof parentType === \"string\" ? parentType : parentType.displayName || parentType.name;\n if (parentName) {\n info = \"\\n\\nCheck the top-level render call using <\" + parentName + \">.\";\n }\n }\n return info;\n }\n }\n function validateExplicitKey(element, parentType) {\n {\n if (!element._store || element._store.validated || element.key != null) {\n return;\n }\n element._store.validated = true;\n var currentComponentErrorInfo = getCurrentComponentErrorInfo(parentType);\n if (ownerHasKeyUseWarning[currentComponentErrorInfo]) {\n return;\n }\n ownerHasKeyUseWarning[currentComponentErrorInfo] = true;\n var childOwner = \"\";\n if (element && element._owner && element._owner !== ReactCurrentOwner$1.current) {\n childOwner = \" It was passed a child from \" + getComponentNameFromType(element._owner.type) + \".\";\n }\n setCurrentlyValidatingElement$1(element);\n error2('Each child in a list should have a unique \"key\" prop.%s%s See https://reactjs.org/link/warning-keys for more information.', currentComponentErrorInfo, childOwner);\n setCurrentlyValidatingElement$1(null);\n }\n }\n function validateChildKeys(node2, parentType) {\n {\n if (typeof node2 !== \"object\") {\n return;\n }\n if (isArray2(node2)) {\n for (var i = 0; i < node2.length; i++) {\n var child = node2[i];\n if (isValidElement(child)) {\n validateExplicitKey(child, parentType);\n }\n }\n } else if (isValidElement(node2)) {\n if (node2._store) {\n node2._store.validated = true;\n }\n } else if (node2) {\n var iteratorFn = getIteratorFn(node2);\n if (typeof iteratorFn === \"function\") {\n if (iteratorFn !== node2.entries) {\n var iterator = iteratorFn.call(node2);\n var step;\n while (!(step = iterator.next()).done) {\n if (isValidElement(step.value)) {\n validateExplicitKey(step.value, parentType);\n }\n }\n }\n }\n }\n }\n }\n function validatePropTypes(element) {\n {\n var type = element.type;\n if (type === null || type === void 0 || typeof type === \"string\") {\n return;\n }\n var propTypes2;\n if (typeof type === \"function\") {\n propTypes2 = type.propTypes;\n } else if (typeof type === \"object\" && (type.$$typeof === REACT_FORWARD_REF_TYPE || // Note: Memo only checks outer props here.\n // Inner props are checked in the reconciler.\n type.$$typeof === REACT_MEMO_TYPE)) {\n propTypes2 = type.propTypes;\n } else {\n return;\n }\n if (propTypes2) {\n var name = getComponentNameFromType(type);\n checkPropTypes(propTypes2, element.props, \"prop\", name, element);\n } else if (type.PropTypes !== void 0 && !propTypesMisspellWarningShown) {\n propTypesMisspellWarningShown = true;\n var _name = getComponentNameFromType(type);\n error2(\"Component %s declared `PropTypes` instead of `propTypes`. Did you misspell the property assignment?\", _name || \"Unknown\");\n }\n if (typeof type.getDefaultProps === \"function\" && !type.getDefaultProps.isReactClassApproved) {\n error2(\"getDefaultProps is only used on classic React.createClass definitions. Use a static property named `defaultProps` instead.\");\n }\n }\n }\n function validateFragmentProps(fragment) {\n {\n var keys2 = Object.keys(fragment.props);\n for (var i = 0; i < keys2.length; i++) {\n var key = keys2[i];\n if (key !== \"children\" && key !== \"key\") {\n setCurrentlyValidatingElement$1(fragment);\n error2(\"Invalid prop `%s` supplied to `React.Fragment`. React.Fragment can only have `key` and `children` props.\", key);\n setCurrentlyValidatingElement$1(null);\n break;\n }\n }\n if (fragment.ref !== null) {\n setCurrentlyValidatingElement$1(fragment);\n error2(\"Invalid attribute `ref` supplied to `React.Fragment`.\");\n setCurrentlyValidatingElement$1(null);\n }\n }\n }\n var didWarnAboutKeySpread = {};\n function jsxWithValidation(type, props, key, isStaticChildren, source, self2) {\n {\n var validType = isValidElementType(type);\n if (!validType) {\n var info = \"\";\n if (type === void 0 || typeof type === \"object\" && type !== null && Object.keys(type).length === 0) {\n info += \" You likely forgot to export your component from the file it's defined in, or you might have mixed up default and named imports.\";\n }\n var sourceInfo = getSourceInfoErrorAddendum();\n if (sourceInfo) {\n info += sourceInfo;\n } else {\n info += getDeclarationErrorAddendum();\n }\n var typeString;\n if (type === null) {\n typeString = \"null\";\n } else if (isArray2(type)) {\n typeString = \"array\";\n } else if (type !== void 0 && type.$$typeof === REACT_ELEMENT_TYPE) {\n typeString = \"<\" + (getComponentNameFromType(type.type) || \"Unknown\") + \" />\";\n info = \" Did you accidentally export a JSX literal instead of a component?\";\n } else {\n typeString = typeof type;\n }\n error2(\"React.jsx: type is invalid -- expected a string (for built-in components) or a class/function (for composite components) but got: %s.%s\", typeString, info);\n }\n var element = jsxDEV(type, props, key, source, self2);\n if (element == null) {\n return element;\n }\n if (validType) {\n var children = props.children;\n if (children !== void 0) {\n if (isStaticChildren) {\n if (isArray2(children)) {\n for (var i = 0; i < children.length; i++) {\n validateChildKeys(children[i], type);\n }\n if (Object.freeze) {\n Object.freeze(children);\n }\n } else {\n error2(\"React.jsx: Static children should always be an array. You are likely explicitly calling React.jsxs or React.jsxDEV. Use the Babel transform instead.\");\n }\n } else {\n validateChildKeys(children, type);\n }\n }\n }\n {\n if (hasOwnProperty.call(props, \"key\")) {\n var componentName = getComponentNameFromType(type);\n var keys2 = Object.keys(props).filter(function(k2) {\n return k2 !== \"key\";\n });\n var beforeExample = keys2.length > 0 ? \"{key: someKey, \" + keys2.join(\": ..., \") + \": ...}\" : \"{key: someKey}\";\n if (!didWarnAboutKeySpread[componentName + beforeExample]) {\n var afterExample = keys2.length > 0 ? \"{\" + keys2.join(\": ..., \") + \": ...}\" : \"{}\";\n error2('A props object containing a \"key\" prop is being spread into JSX:\\n let props = %s;\\n <%s {...props} />\\nReact keys must be passed directly to JSX without using spread:\\n let props = %s;\\n <%s key={someKey} {...props} />', beforeExample, componentName, afterExample, componentName);\n didWarnAboutKeySpread[componentName + beforeExample] = true;\n }\n }\n }\n if (type === REACT_FRAGMENT_TYPE) {\n validateFragmentProps(element);\n } else {\n validatePropTypes(element);\n }\n return element;\n }\n }\n function jsxWithValidationStatic(type, props, key) {\n {\n return jsxWithValidation(type, props, key, true);\n }\n }\n function jsxWithValidationDynamic(type, props, key) {\n {\n return jsxWithValidation(type, props, key, false);\n }\n }\n var jsx = jsxWithValidationDynamic;\n var jsxs = jsxWithValidationStatic;\n reactJsxRuntime_development.Fragment = REACT_FRAGMENT_TYPE;\n reactJsxRuntime_development.jsx = jsx;\n reactJsxRuntime_development.jsxs = jsxs;\n })();\n }\n return reactJsxRuntime_development;\n}\nvar hasRequiredJsxRuntime;\nfunction requireJsxRuntime() {\n if (hasRequiredJsxRuntime) return jsxRuntime.exports;\n hasRequiredJsxRuntime = 1;\n if (process.env.NODE_ENV === \"production\") {\n jsxRuntime.exports = requireReactJsxRuntime_production_min();\n } else {\n jsxRuntime.exports = requireReactJsxRuntime_development();\n }\n return jsxRuntime.exports;\n}\nvar jsxRuntimeExports = requireJsxRuntime();\nconst millisecondsInWeek$1 = 6048e5;\nconst millisecondsInDay$1 = 864e5;\nconst millisecondsInMinute$1 = 6e4;\nconst millisecondsInHour$1 = 36e5;\nconst millisecondsInSecond$1 = 1e3;\nconst constructFromSymbol = Symbol.for(\"constructDateFrom\");\nfunction constructFrom$1(date, value) {\n if (typeof date === \"function\") return date(value);\n if (date && typeof date === \"object\" && constructFromSymbol in date)\n return date[constructFromSymbol](value);\n if (date instanceof Date) return new date.constructor(value);\n return new Date(value);\n}\nfunction toDate$3(argument, context) {\n return constructFrom$1(context || argument, argument);\n}\nfunction addDays$1(date, amount, options) {\n const _date = toDate$3(date, options == null ? void 0 : options.in);\n if (isNaN(amount)) return constructFrom$1((options == null ? void 0 : options.in) || date, NaN);\n if (!amount) return _date;\n _date.setDate(_date.getDate() + amount);\n return _date;\n}\nfunction addMilliseconds$1(date, amount, options) {\n return constructFrom$1(date, +toDate$3(date) + amount);\n}\nfunction addHours$1(date, amount, options) {\n return addMilliseconds$1(date, amount * millisecondsInHour$1);\n}\nlet defaultOptions$2 = {};\nfunction getDefaultOptions$3() {\n return defaultOptions$2;\n}\nfunction startOfWeek$1(date, options) {\n var _a, _b, _c, _d;\n const defaultOptions2 = getDefaultOptions$3();\n const weekStartsOn = (options == null ? void 0 : options.weekStartsOn) ?? ((_b = (_a = options == null ? void 0 : options.locale) == null ? void 0 : _a.options) == null ? void 0 : _b.weekStartsOn) ?? defaultOptions2.weekStartsOn ?? ((_d = (_c = defaultOptions2.locale) == null ? void 0 : _c.options) == null ? void 0 : _d.weekStartsOn) ?? 0;\n const _date = toDate$3(date, options == null ? void 0 : options.in);\n const day = _date.getDay();\n const diff2 = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n _date.setDate(_date.getDate() - diff2);\n _date.setHours(0, 0, 0, 0);\n return _date;\n}\nfunction startOfISOWeek$1(date, options) {\n return startOfWeek$1(date, { ...options, weekStartsOn: 1 });\n}\nfunction getISOWeekYear$1(date, options) {\n const _date = toDate$3(date, options == null ? void 0 : options.in);\n const year = _date.getFullYear();\n const fourthOfJanuaryOfNextYear = constructFrom$1(_date, 0);\n fourthOfJanuaryOfNextYear.setFullYear(year + 1, 0, 4);\n fourthOfJanuaryOfNextYear.setHours(0, 0, 0, 0);\n const startOfNextYear = startOfISOWeek$1(fourthOfJanuaryOfNextYear);\n const fourthOfJanuaryOfThisYear = constructFrom$1(_date, 0);\n fourthOfJanuaryOfThisYear.setFullYear(year, 0, 4);\n fourthOfJanuaryOfThisYear.setHours(0, 0, 0, 0);\n const startOfThisYear = startOfISOWeek$1(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}\nfunction getTimezoneOffsetInMilliseconds$2(date) {\n const _date = toDate$3(date);\n const utcDate = new Date(\n Date.UTC(\n _date.getFullYear(),\n _date.getMonth(),\n _date.getDate(),\n _date.getHours(),\n _date.getMinutes(),\n _date.getSeconds(),\n _date.getMilliseconds()\n )\n );\n utcDate.setUTCFullYear(_date.getFullYear());\n return +date - +utcDate;\n}\nfunction normalizeDates(context, ...dates) {\n const normalize2 = constructFrom$1.bind(\n null,\n dates.find((date) => typeof date === \"object\")\n );\n return dates.map(normalize2);\n}\nfunction startOfDay$1(date, options) {\n const _date = toDate$3(date, options == null ? void 0 : options.in);\n _date.setHours(0, 0, 0, 0);\n return _date;\n}\nfunction differenceInCalendarDays$1(laterDate, earlierDate, options) {\n const [laterDate_, earlierDate_] = normalizeDates(\n options == null ? void 0 : options.in,\n laterDate,\n earlierDate\n );\n const laterStartOfDay = startOfDay$1(laterDate_);\n const earlierStartOfDay = startOfDay$1(earlierDate_);\n const laterTimestamp = +laterStartOfDay - getTimezoneOffsetInMilliseconds$2(laterStartOfDay);\n const earlierTimestamp = +earlierStartOfDay - getTimezoneOffsetInMilliseconds$2(earlierStartOfDay);\n return Math.round((laterTimestamp - earlierTimestamp) / millisecondsInDay$1);\n}\nfunction startOfISOWeekYear$1(date, options) {\n const year = getISOWeekYear$1(date, options);\n const fourthOfJanuary = constructFrom$1(date, 0);\n fourthOfJanuary.setFullYear(year, 0, 4);\n fourthOfJanuary.setHours(0, 0, 0, 0);\n return startOfISOWeek$1(fourthOfJanuary);\n}\nfunction max$3(dates, options) {\n let result;\n let context = options == null ? void 0 : options.in;\n dates.forEach((date) => {\n if (!context && typeof date === \"object\")\n context = constructFrom$1.bind(null, date);\n const date_ = toDate$3(date, context);\n if (!result || result < date_ || isNaN(+date_)) result = date_;\n });\n return constructFrom$1(context, result || NaN);\n}\nfunction min$3(dates, options) {\n let result;\n let context = options == null ? void 0 : options.in;\n dates.forEach((date) => {\n if (!context && typeof date === \"object\")\n context = constructFrom$1.bind(null, date);\n const date_ = toDate$3(date, context);\n if (!result || result > date_ || isNaN(+date_)) result = date_;\n });\n return constructFrom$1(context, result || NaN);\n}\nfunction isSameDay$2(laterDate, earlierDate, options) {\n const [dateLeft_, dateRight_] = normalizeDates(\n options == null ? void 0 : options.in,\n laterDate,\n earlierDate\n );\n return +startOfDay$1(dateLeft_) === +startOfDay$1(dateRight_);\n}\nfunction isDate$3(value) {\n return value instanceof Date || typeof value === \"object\" && Object.prototype.toString.call(value) === \"[object Date]\";\n}\nfunction isValid$5(date) {\n return !(!isDate$3(date) && typeof date !== \"number\" || isNaN(+toDate$3(date)));\n}\nfunction normalizeInterval(context, interval) {\n const [start4, end2] = normalizeDates(context, interval.start, interval.end);\n return { start: start4, end: end2 };\n}\nfunction eachDayOfInterval(interval, options) {\n const { start: start4, end: end2 } = normalizeInterval(options == null ? void 0 : options.in, interval);\n let reversed = +start4 > +end2;\n const endTime = reversed ? +start4 : +end2;\n const date = reversed ? end2 : start4;\n date.setHours(0, 0, 0, 0);\n let step = 1;\n const dates = [];\n while (+date <= endTime) {\n dates.push(constructFrom$1(start4, date));\n date.setDate(date.getDate() + step);\n date.setHours(0, 0, 0, 0);\n }\n return reversed ? dates.reverse() : dates;\n}\nfunction startOfYear$1(date, options) {\n const date_ = toDate$3(date, options == null ? void 0 : options.in);\n date_.setFullYear(date_.getFullYear(), 0, 1);\n date_.setHours(0, 0, 0, 0);\n return date_;\n}\nconst formatDistanceLocale$1 = {\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};\nconst formatDistance$1 = (token2, count2, options) => {\n let result;\n const tokenValue = formatDistanceLocale$1[token2];\n if (typeof tokenValue === \"string\") {\n result = tokenValue;\n } else if (count2 === 1) {\n result = tokenValue.one;\n } else {\n result = tokenValue.other.replace(\"{{count}}\", count2.toString());\n }\n if (options == null ? 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};\nfunction buildFormatLongFn$1(args) {\n return (options = {}) => {\n const width = options.width ? String(options.width) : args.defaultWidth;\n const format2 = args.formats[width] || args.formats[args.defaultWidth];\n return format2;\n };\n}\nconst dateFormats$1 = {\n full: \"EEEE, MMMM do, y\",\n long: \"MMMM do, y\",\n medium: \"MMM d, y\",\n short: \"MM/dd/yyyy\"\n};\nconst timeFormats$1 = {\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};\nconst dateTimeFormats$1 = {\n full: \"{{date}} 'at' {{time}}\",\n long: \"{{date}} 'at' {{time}}\",\n medium: \"{{date}}, {{time}}\",\n short: \"{{date}}, {{time}}\"\n};\nconst formatLong$1 = {\n date: buildFormatLongFn$1({\n formats: dateFormats$1,\n defaultWidth: \"full\"\n }),\n time: buildFormatLongFn$1({\n formats: timeFormats$1,\n defaultWidth: \"full\"\n }),\n dateTime: buildFormatLongFn$1({\n formats: dateTimeFormats$1,\n defaultWidth: \"full\"\n })\n};\nconst formatRelativeLocale$1 = {\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};\nconst formatRelative$1 = (token2, _date, _baseDate, _options) => formatRelativeLocale$1[token2];\nfunction buildLocalizeFn$1(args) {\n return (value, options) => {\n const context = (options == null ? void 0 : options.context) ? String(options.context) : \"standalone\";\n let valuesArray;\n if (context === \"formatting\" && args.formattingValues) {\n const defaultWidth = args.defaultFormattingWidth || args.defaultWidth;\n const width = (options == null ? void 0 : options.width) ? String(options.width) : defaultWidth;\n valuesArray = args.formattingValues[width] || args.formattingValues[defaultWidth];\n } else {\n const defaultWidth = args.defaultWidth;\n const width = (options == null ? void 0 : options.width) ? String(options.width) : args.defaultWidth;\n valuesArray = args.values[width] || args.values[defaultWidth];\n }\n const index2 = args.argumentCallback ? args.argumentCallback(value) : value;\n return valuesArray[index2];\n };\n}\nconst eraValues$1 = {\n narrow: [\"B\", \"A\"],\n abbreviated: [\"BC\", \"AD\"],\n wide: [\"Before Christ\", \"Anno Domini\"]\n};\nconst quarterValues$1 = {\n narrow: [\"1\", \"2\", \"3\", \"4\"],\n abbreviated: [\"Q1\", \"Q2\", \"Q3\", \"Q4\"],\n wide: [\"1st quarter\", \"2nd quarter\", \"3rd quarter\", \"4th quarter\"]\n};\nconst monthValues$1 = {\n narrow: [\"J\", \"F\", \"M\", \"A\", \"M\", \"J\", \"J\", \"A\", \"S\", \"O\", \"N\", \"D\"],\n abbreviated: [\n \"Jan\",\n \"Feb\",\n \"Mar\",\n \"Apr\",\n \"May\",\n \"Jun\",\n \"Jul\",\n \"Aug\",\n \"Sep\",\n \"Oct\",\n \"Nov\",\n \"Dec\"\n ],\n wide: [\n \"January\",\n \"February\",\n \"March\",\n \"April\",\n \"May\",\n \"June\",\n \"July\",\n \"August\",\n \"September\",\n \"October\",\n \"November\",\n \"December\"\n ]\n};\nconst dayValues$1 = {\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: [\n \"Sunday\",\n \"Monday\",\n \"Tuesday\",\n \"Wednesday\",\n \"Thursday\",\n \"Friday\",\n \"Saturday\"\n ]\n};\nconst dayPeriodValues$1 = {\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};\nconst formattingDayPeriodValues$1 = {\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};\nconst ordinalNumber$1 = (dirtyNumber, _options) => {\n const number = Number(dirtyNumber);\n const 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};\nconst localize$1 = {\n ordinalNumber: ordinalNumber$1,\n era: buildLocalizeFn$1({\n values: eraValues$1,\n defaultWidth: \"wide\"\n }),\n quarter: buildLocalizeFn$1({\n values: quarterValues$1,\n defaultWidth: \"wide\",\n argumentCallback: (quarter) => quarter - 1\n }),\n month: buildLocalizeFn$1({\n values: monthValues$1,\n defaultWidth: \"wide\"\n }),\n day: buildLocalizeFn$1({\n values: dayValues$1,\n defaultWidth: \"wide\"\n }),\n dayPeriod: buildLocalizeFn$1({\n values: dayPeriodValues$1,\n defaultWidth: \"wide\",\n formattingValues: formattingDayPeriodValues$1,\n defaultFormattingWidth: \"wide\"\n })\n};\nfunction buildMatchFn$1(args) {\n return (string, options = {}) => {\n const width = options.width;\n const matchPattern = width && args.matchPatterns[width] || args.matchPatterns[args.defaultMatchWidth];\n const matchResult = string.match(matchPattern);\n if (!matchResult) {\n return null;\n }\n const matchedString = matchResult[0];\n const parsePatterns = width && args.parsePatterns[width] || args.parsePatterns[args.defaultParseWidth];\n const key = Array.isArray(parsePatterns) ? findIndex$3(parsePatterns, (pattern) => pattern.test(matchedString)) : (\n // [TODO] -- I challenge you to fix the type\n findKey$1(parsePatterns, (pattern) => pattern.test(matchedString))\n );\n let value;\n value = args.valueCallback ? args.valueCallback(key) : key;\n value = options.valueCallback ? (\n // [TODO] -- I challenge you to fix the type\n options.valueCallback(value)\n ) : value;\n const rest = string.slice(matchedString.length);\n return { value, rest };\n };\n}\nfunction findKey$1(object, predicate) {\n for (const key in object) {\n if (Object.prototype.hasOwnProperty.call(object, key) && predicate(object[key])) {\n return key;\n }\n }\n return void 0;\n}\nfunction findIndex$3(array, predicate) {\n for (let key = 0; key < array.length; key++) {\n if (predicate(array[key])) {\n return key;\n }\n }\n return void 0;\n}\nfunction buildMatchPatternFn$1(args) {\n return (string, options = {}) => {\n const matchResult = string.match(args.matchPattern);\n if (!matchResult) return null;\n const matchedString = matchResult[0];\n const parseResult = string.match(args.parsePattern);\n if (!parseResult) return null;\n let value = args.valueCallback ? args.valueCallback(parseResult[0]) : parseResult[0];\n value = options.valueCallback ? options.valueCallback(value) : value;\n const rest = string.slice(matchedString.length);\n return { value, rest };\n };\n}\nconst matchOrdinalNumberPattern$1 = /^(\\d+)(th|st|nd|rd)?/i;\nconst parseOrdinalNumberPattern$1 = /\\d+/i;\nconst matchEraPatterns$1 = {\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};\nconst parseEraPatterns$1 = {\n any: [/^b/i, /^(a|c)/i]\n};\nconst matchQuarterPatterns$1 = {\n narrow: /^[1234]/i,\n abbreviated: /^q[1234]/i,\n wide: /^[1234](th|st|nd|rd)? quarter/i\n};\nconst parseQuarterPatterns$1 = {\n any: [/1/i, /2/i, /3/i, /4/i]\n};\nconst matchMonthPatterns$1 = {\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};\nconst parseMonthPatterns$1 = {\n narrow: [\n /^j/i,\n /^f/i,\n /^m/i,\n /^a/i,\n /^m/i,\n /^j/i,\n /^j/i,\n /^a/i,\n /^s/i,\n /^o/i,\n /^n/i,\n /^d/i\n ],\n any: [\n /^ja/i,\n /^f/i,\n /^mar/i,\n /^ap/i,\n /^may/i,\n /^jun/i,\n /^jul/i,\n /^au/i,\n /^s/i,\n /^o/i,\n /^n/i,\n /^d/i\n ]\n};\nconst matchDayPatterns$1 = {\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};\nconst parseDayPatterns$1 = {\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};\nconst matchDayPeriodPatterns$1 = {\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};\nconst parseDayPeriodPatterns$1 = {\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};\nconst match$3 = {\n ordinalNumber: buildMatchPatternFn$1({\n matchPattern: matchOrdinalNumberPattern$1,\n parsePattern: parseOrdinalNumberPattern$1,\n valueCallback: (value) => parseInt(value, 10)\n }),\n era: buildMatchFn$1({\n matchPatterns: matchEraPatterns$1,\n defaultMatchWidth: \"wide\",\n parsePatterns: parseEraPatterns$1,\n defaultParseWidth: \"any\"\n }),\n quarter: buildMatchFn$1({\n matchPatterns: matchQuarterPatterns$1,\n defaultMatchWidth: \"wide\",\n parsePatterns: parseQuarterPatterns$1,\n defaultParseWidth: \"any\",\n valueCallback: (index2) => index2 + 1\n }),\n month: buildMatchFn$1({\n matchPatterns: matchMonthPatterns$1,\n defaultMatchWidth: \"wide\",\n parsePatterns: parseMonthPatterns$1,\n defaultParseWidth: \"any\"\n }),\n day: buildMatchFn$1({\n matchPatterns: matchDayPatterns$1,\n defaultMatchWidth: \"wide\",\n parsePatterns: parseDayPatterns$1,\n defaultParseWidth: \"any\"\n }),\n dayPeriod: buildMatchFn$1({\n matchPatterns: matchDayPeriodPatterns$1,\n defaultMatchWidth: \"any\",\n parsePatterns: parseDayPeriodPatterns$1,\n defaultParseWidth: \"any\"\n })\n};\nconst enUS$1 = {\n code: \"en-US\",\n formatDistance: formatDistance$1,\n formatLong: formatLong$1,\n formatRelative: formatRelative$1,\n localize: localize$1,\n match: match$3,\n options: {\n weekStartsOn: 0,\n firstWeekContainsDate: 1\n }\n};\nfunction getDayOfYear$1(date, options) {\n const _date = toDate$3(date, options == null ? void 0 : options.in);\n const diff2 = differenceInCalendarDays$1(_date, startOfYear$1(_date));\n const dayOfYear = diff2 + 1;\n return dayOfYear;\n}\nfunction getISOWeek$1(date, options) {\n const _date = toDate$3(date, options == null ? void 0 : options.in);\n const diff2 = +startOfISOWeek$1(_date) - +startOfISOWeekYear$1(_date);\n return Math.round(diff2 / millisecondsInWeek$1) + 1;\n}\nfunction getWeekYear$1(date, options) {\n var _a, _b, _c, _d;\n const _date = toDate$3(date, options == null ? void 0 : options.in);\n const year = _date.getFullYear();\n const defaultOptions2 = getDefaultOptions$3();\n const firstWeekContainsDate = (options == null ? void 0 : options.firstWeekContainsDate) ?? ((_b = (_a = options == null ? void 0 : options.locale) == null ? void 0 : _a.options) == null ? void 0 : _b.firstWeekContainsDate) ?? defaultOptions2.firstWeekContainsDate ?? ((_d = (_c = defaultOptions2.locale) == null ? void 0 : _c.options) == null ? void 0 : _d.firstWeekContainsDate) ?? 1;\n const firstWeekOfNextYear = constructFrom$1((options == null ? void 0 : options.in) || date, 0);\n firstWeekOfNextYear.setFullYear(year + 1, 0, firstWeekContainsDate);\n firstWeekOfNextYear.setHours(0, 0, 0, 0);\n const startOfNextYear = startOfWeek$1(firstWeekOfNextYear, options);\n const firstWeekOfThisYear = constructFrom$1((options == null ? void 0 : options.in) || date, 0);\n firstWeekOfThisYear.setFullYear(year, 0, firstWeekContainsDate);\n firstWeekOfThisYear.setHours(0, 0, 0, 0);\n const startOfThisYear = startOfWeek$1(firstWeekOfThisYear, options);\n if (+_date >= +startOfNextYear) {\n return year + 1;\n } else if (+_date >= +startOfThisYear) {\n return year;\n } else {\n return year - 1;\n }\n}\nfunction startOfWeekYear$1(date, options) {\n var _a, _b, _c, _d;\n const defaultOptions2 = getDefaultOptions$3();\n const firstWeekContainsDate = (options == null ? void 0 : options.firstWeekContainsDate) ?? ((_b = (_a = options == null ? void 0 : options.locale) == null ? void 0 : _a.options) == null ? void 0 : _b.firstWeekContainsDate) ?? defaultOptions2.firstWeekContainsDate ?? ((_d = (_c = defaultOptions2.locale) == null ? void 0 : _c.options) == null ? void 0 : _d.firstWeekContainsDate) ?? 1;\n const year = getWeekYear$1(date, options);\n const firstWeek = constructFrom$1((options == null ? void 0 : options.in) || date, 0);\n firstWeek.setFullYear(year, 0, firstWeekContainsDate);\n firstWeek.setHours(0, 0, 0, 0);\n const _date = startOfWeek$1(firstWeek, options);\n return _date;\n}\nfunction getWeek$2(date, options) {\n const _date = toDate$3(date, options == null ? void 0 : options.in);\n const diff2 = +startOfWeek$1(_date, options) - +startOfWeekYear$1(_date, options);\n return Math.round(diff2 / millisecondsInWeek$1) + 1;\n}\nfunction addLeadingZeros$1(number, targetLength) {\n const sign2 = number < 0 ? \"-\" : \"\";\n const output = Math.abs(number).toString().padStart(targetLength, \"0\");\n return sign2 + output;\n}\nconst lightFormatters$1 = {\n // Year\n y(date, token2) {\n const signedYear = date.getFullYear();\n const year = signedYear > 0 ? signedYear : 1 - signedYear;\n return addLeadingZeros$1(token2 === \"yy\" ? year % 100 : year, token2.length);\n },\n // Month\n M(date, token2) {\n const month = date.getMonth();\n return token2 === \"M\" ? String(month + 1) : addLeadingZeros$1(month + 1, 2);\n },\n // Day of the month\n d(date, token2) {\n return addLeadingZeros$1(date.getDate(), token2.length);\n },\n // AM or PM\n a(date, token2) {\n const dayPeriodEnumValue = date.getHours() / 12 >= 1 ? \"pm\" : \"am\";\n switch (token2) {\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(date, token2) {\n return addLeadingZeros$1(date.getHours() % 12 || 12, token2.length);\n },\n // Hour [0-23]\n H(date, token2) {\n return addLeadingZeros$1(date.getHours(), token2.length);\n },\n // Minute\n m(date, token2) {\n return addLeadingZeros$1(date.getMinutes(), token2.length);\n },\n // Second\n s(date, token2) {\n return addLeadingZeros$1(date.getSeconds(), token2.length);\n },\n // Fraction of second\n S(date, token2) {\n const numberOfDigits = token2.length;\n const milliseconds2 = date.getMilliseconds();\n const fractionalSeconds = Math.trunc(\n milliseconds2 * Math.pow(10, numberOfDigits - 3)\n );\n return addLeadingZeros$1(fractionalSeconds, token2.length);\n }\n};\nconst dayPeriodEnum$1 = {\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};\nconst formatters$1 = {\n // Era\n G: function(date, token2, localize2) {\n const era = date.getFullYear() > 0 ? 1 : 0;\n switch (token2) {\n // AD, BC\n case \"G\":\n case \"GG\":\n case \"GGG\":\n return localize2.era(era, { width: \"abbreviated\" });\n // A, B\n case \"GGGGG\":\n return localize2.era(era, { width: \"narrow\" });\n // Anno Domini, Before Christ\n case \"GGGG\":\n default:\n return localize2.era(era, { width: \"wide\" });\n }\n },\n // Year\n y: function(date, token2, localize2) {\n if (token2 === \"yo\") {\n const signedYear = date.getFullYear();\n const year = signedYear > 0 ? signedYear : 1 - signedYear;\n return localize2.ordinalNumber(year, { unit: \"year\" });\n }\n return lightFormatters$1.y(date, token2);\n },\n // Local week-numbering year\n Y: function(date, token2, localize2, options) {\n const signedWeekYear = getWeekYear$1(date, options);\n const weekYear = signedWeekYear > 0 ? signedWeekYear : 1 - signedWeekYear;\n if (token2 === \"YY\") {\n const twoDigitYear = weekYear % 100;\n return addLeadingZeros$1(twoDigitYear, 2);\n }\n if (token2 === \"Yo\") {\n return localize2.ordinalNumber(weekYear, { unit: \"year\" });\n }\n return addLeadingZeros$1(weekYear, token2.length);\n },\n // ISO week-numbering year\n R: function(date, token2) {\n const isoWeekYear = getISOWeekYear$1(date);\n return addLeadingZeros$1(isoWeekYear, token2.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(date, token2) {\n const year = date.getFullYear();\n return addLeadingZeros$1(year, token2.length);\n },\n // Quarter\n Q: function(date, token2, localize2) {\n const quarter = Math.ceil((date.getMonth() + 1) / 3);\n switch (token2) {\n // 1, 2, 3, 4\n case \"Q\":\n return String(quarter);\n // 01, 02, 03, 04\n case \"QQ\":\n return addLeadingZeros$1(quarter, 2);\n // 1st, 2nd, 3rd, 4th\n case \"Qo\":\n return localize2.ordinalNumber(quarter, { unit: \"quarter\" });\n // Q1, Q2, Q3, Q4\n case \"QQQ\":\n return localize2.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 localize2.quarter(quarter, {\n width: \"narrow\",\n context: \"formatting\"\n });\n // 1st quarter, 2nd quarter, ...\n case \"QQQQ\":\n default:\n return localize2.quarter(quarter, {\n width: \"wide\",\n context: \"formatting\"\n });\n }\n },\n // Stand-alone quarter\n q: function(date, token2, localize2) {\n const quarter = Math.ceil((date.getMonth() + 1) / 3);\n switch (token2) {\n // 1, 2, 3, 4\n case \"q\":\n return String(quarter);\n // 01, 02, 03, 04\n case \"qq\":\n return addLeadingZeros$1(quarter, 2);\n // 1st, 2nd, 3rd, 4th\n case \"qo\":\n return localize2.ordinalNumber(quarter, { unit: \"quarter\" });\n // Q1, Q2, Q3, Q4\n case \"qqq\":\n return localize2.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 localize2.quarter(quarter, {\n width: \"narrow\",\n context: \"standalone\"\n });\n // 1st quarter, 2nd quarter, ...\n case \"qqqq\":\n default:\n return localize2.quarter(quarter, {\n width: \"wide\",\n context: \"standalone\"\n });\n }\n },\n // Month\n M: function(date, token2, localize2) {\n const month = date.getMonth();\n switch (token2) {\n case \"M\":\n case \"MM\":\n return lightFormatters$1.M(date, token2);\n // 1st, 2nd, ..., 12th\n case \"Mo\":\n return localize2.ordinalNumber(month + 1, { unit: \"month\" });\n // Jan, Feb, ..., Dec\n case \"MMM\":\n return localize2.month(month, {\n width: \"abbreviated\",\n context: \"formatting\"\n });\n // J, F, ..., D\n case \"MMMMM\":\n return localize2.month(month, {\n width: \"narrow\",\n context: \"formatting\"\n });\n // January, February, ..., December\n case \"MMMM\":\n default:\n return localize2.month(month, { width: \"wide\", context: \"formatting\" });\n }\n },\n // Stand-alone month\n L: function(date, token2, localize2) {\n const month = date.getMonth();\n switch (token2) {\n // 1, 2, ..., 12\n case \"L\":\n return String(month + 1);\n // 01, 02, ..., 12\n case \"LL\":\n return addLeadingZeros$1(month + 1, 2);\n // 1st, 2nd, ..., 12th\n case \"Lo\":\n return localize2.ordinalNumber(month + 1, { unit: \"month\" });\n // Jan, Feb, ..., Dec\n case \"LLL\":\n return localize2.month(month, {\n width: \"abbreviated\",\n context: \"standalone\"\n });\n // J, F, ..., D\n case \"LLLLL\":\n return localize2.month(month, {\n width: \"narrow\",\n context: \"standalone\"\n });\n // January, February, ..., December\n case \"LLLL\":\n default:\n return localize2.month(month, { width: \"wide\", context: \"standalone\" });\n }\n },\n // Local week of year\n w: function(date, token2, localize2, options) {\n const week = getWeek$2(date, options);\n if (token2 === \"wo\") {\n return localize2.ordinalNumber(week, { unit: \"week\" });\n }\n return addLeadingZeros$1(week, token2.length);\n },\n // ISO week of year\n I: function(date, token2, localize2) {\n const isoWeek = getISOWeek$1(date);\n if (token2 === \"Io\") {\n return localize2.ordinalNumber(isoWeek, { unit: \"week\" });\n }\n return addLeadingZeros$1(isoWeek, token2.length);\n },\n // Day of the month\n d: function(date, token2, localize2) {\n if (token2 === \"do\") {\n return localize2.ordinalNumber(date.getDate(), { unit: \"date\" });\n }\n return lightFormatters$1.d(date, token2);\n },\n // Day of year\n D: function(date, token2, localize2) {\n const dayOfYear = getDayOfYear$1(date);\n if (token2 === \"Do\") {\n return localize2.ordinalNumber(dayOfYear, { unit: \"dayOfYear\" });\n }\n return addLeadingZeros$1(dayOfYear, token2.length);\n },\n // Day of week\n E: function(date, token2, localize2) {\n const dayOfWeek = date.getDay();\n switch (token2) {\n // Tue\n case \"E\":\n case \"EE\":\n case \"EEE\":\n return localize2.day(dayOfWeek, {\n width: \"abbreviated\",\n context: \"formatting\"\n });\n // T\n case \"EEEEE\":\n return localize2.day(dayOfWeek, {\n width: \"narrow\",\n context: \"formatting\"\n });\n // Tu\n case \"EEEEEE\":\n return localize2.day(dayOfWeek, {\n width: \"short\",\n context: \"formatting\"\n });\n // Tuesday\n case \"EEEE\":\n default:\n return localize2.day(dayOfWeek, {\n width: \"wide\",\n context: \"formatting\"\n });\n }\n },\n // Local day of week\n e: function(date, token2, localize2, options) {\n const dayOfWeek = date.getDay();\n const localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n switch (token2) {\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$1(localDayOfWeek, 2);\n // 1st, 2nd, ..., 7th\n case \"eo\":\n return localize2.ordinalNumber(localDayOfWeek, { unit: \"day\" });\n case \"eee\":\n return localize2.day(dayOfWeek, {\n width: \"abbreviated\",\n context: \"formatting\"\n });\n // T\n case \"eeeee\":\n return localize2.day(dayOfWeek, {\n width: \"narrow\",\n context: \"formatting\"\n });\n // Tu\n case \"eeeeee\":\n return localize2.day(dayOfWeek, {\n width: \"short\",\n context: \"formatting\"\n });\n // Tuesday\n case \"eeee\":\n default:\n return localize2.day(dayOfWeek, {\n width: \"wide\",\n context: \"formatting\"\n });\n }\n },\n // Stand-alone local day of week\n c: function(date, token2, localize2, options) {\n const dayOfWeek = date.getDay();\n const localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n switch (token2) {\n // Numerical value (same as in `e`)\n case \"c\":\n return String(localDayOfWeek);\n // Padded numerical value\n case \"cc\":\n return addLeadingZeros$1(localDayOfWeek, token2.length);\n // 1st, 2nd, ..., 7th\n case \"co\":\n return localize2.ordinalNumber(localDayOfWeek, { unit: \"day\" });\n case \"ccc\":\n return localize2.day(dayOfWeek, {\n width: \"abbreviated\",\n context: \"standalone\"\n });\n // T\n case \"ccccc\":\n return localize2.day(dayOfWeek, {\n width: \"narrow\",\n context: \"standalone\"\n });\n // Tu\n case \"cccccc\":\n return localize2.day(dayOfWeek, {\n width: \"short\",\n context: \"standalone\"\n });\n // Tuesday\n case \"cccc\":\n default:\n return localize2.day(dayOfWeek, {\n width: \"wide\",\n context: \"standalone\"\n });\n }\n },\n // ISO day of week\n i: function(date, token2, localize2) {\n const dayOfWeek = date.getDay();\n const isoDayOfWeek = dayOfWeek === 0 ? 7 : dayOfWeek;\n switch (token2) {\n // 2\n case \"i\":\n return String(isoDayOfWeek);\n // 02\n case \"ii\":\n return addLeadingZeros$1(isoDayOfWeek, token2.length);\n // 2nd\n case \"io\":\n return localize2.ordinalNumber(isoDayOfWeek, { unit: \"day\" });\n // Tue\n case \"iii\":\n return localize2.day(dayOfWeek, {\n width: \"abbreviated\",\n context: \"formatting\"\n });\n // T\n case \"iiiii\":\n return localize2.day(dayOfWeek, {\n width: \"narrow\",\n context: \"formatting\"\n });\n // Tu\n case \"iiiiii\":\n return localize2.day(dayOfWeek, {\n width: \"short\",\n context: \"formatting\"\n });\n // Tuesday\n case \"iiii\":\n default:\n return localize2.day(dayOfWeek, {\n width: \"wide\",\n context: \"formatting\"\n });\n }\n },\n // AM or PM\n a: function(date, token2, localize2) {\n const hours2 = date.getHours();\n const dayPeriodEnumValue = hours2 / 12 >= 1 ? \"pm\" : \"am\";\n switch (token2) {\n case \"a\":\n case \"aa\":\n return localize2.dayPeriod(dayPeriodEnumValue, {\n width: \"abbreviated\",\n context: \"formatting\"\n });\n case \"aaa\":\n return localize2.dayPeriod(dayPeriodEnumValue, {\n width: \"abbreviated\",\n context: \"formatting\"\n }).toLowerCase();\n case \"aaaaa\":\n return localize2.dayPeriod(dayPeriodEnumValue, {\n width: \"narrow\",\n context: \"formatting\"\n });\n case \"aaaa\":\n default:\n return localize2.dayPeriod(dayPeriodEnumValue, {\n width: \"wide\",\n context: \"formatting\"\n });\n }\n },\n // AM, PM, midnight, noon\n b: function(date, token2, localize2) {\n const hours2 = date.getHours();\n let dayPeriodEnumValue;\n if (hours2 === 12) {\n dayPeriodEnumValue = dayPeriodEnum$1.noon;\n } else if (hours2 === 0) {\n dayPeriodEnumValue = dayPeriodEnum$1.midnight;\n } else {\n dayPeriodEnumValue = hours2 / 12 >= 1 ? \"pm\" : \"am\";\n }\n switch (token2) {\n case \"b\":\n case \"bb\":\n return localize2.dayPeriod(dayPeriodEnumValue, {\n width: \"abbreviated\",\n context: \"formatting\"\n });\n case \"bbb\":\n return localize2.dayPeriod(dayPeriodEnumValue, {\n width: \"abbreviated\",\n context: \"formatting\"\n }).toLowerCase();\n case \"bbbbb\":\n return localize2.dayPeriod(dayPeriodEnumValue, {\n width: \"narrow\",\n context: \"formatting\"\n });\n case \"bbbb\":\n default:\n return localize2.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(date, token2, localize2) {\n const hours2 = date.getHours();\n let dayPeriodEnumValue;\n if (hours2 >= 17) {\n dayPeriodEnumValue = dayPeriodEnum$1.evening;\n } else if (hours2 >= 12) {\n dayPeriodEnumValue = dayPeriodEnum$1.afternoon;\n } else if (hours2 >= 4) {\n dayPeriodEnumValue = dayPeriodEnum$1.morning;\n } else {\n dayPeriodEnumValue = dayPeriodEnum$1.night;\n }\n switch (token2) {\n case \"B\":\n case \"BB\":\n case \"BBB\":\n return localize2.dayPeriod(dayPeriodEnumValue, {\n width: \"abbreviated\",\n context: \"formatting\"\n });\n case \"BBBBB\":\n return localize2.dayPeriod(dayPeriodEnumValue, {\n width: \"narrow\",\n context: \"formatting\"\n });\n case \"BBBB\":\n default:\n return localize2.dayPeriod(dayPeriodEnumValue, {\n width: \"wide\",\n context: \"formatting\"\n });\n }\n },\n // Hour [1-12]\n h: function(date, token2, localize2) {\n if (token2 === \"ho\") {\n let hours2 = date.getHours() % 12;\n if (hours2 === 0) hours2 = 12;\n return localize2.ordinalNumber(hours2, { unit: \"hour\" });\n }\n return lightFormatters$1.h(date, token2);\n },\n // Hour [0-23]\n H: function(date, token2, localize2) {\n if (token2 === \"Ho\") {\n return localize2.ordinalNumber(date.getHours(), { unit: \"hour\" });\n }\n return lightFormatters$1.H(date, token2);\n },\n // Hour [0-11]\n K: function(date, token2, localize2) {\n const hours2 = date.getHours() % 12;\n if (token2 === \"Ko\") {\n return localize2.ordinalNumber(hours2, { unit: \"hour\" });\n }\n return addLeadingZeros$1(hours2, token2.length);\n },\n // Hour [1-24]\n k: function(date, token2, localize2) {\n let hours2 = date.getHours();\n if (hours2 === 0) hours2 = 24;\n if (token2 === \"ko\") {\n return localize2.ordinalNumber(hours2, { unit: \"hour\" });\n }\n return addLeadingZeros$1(hours2, token2.length);\n },\n // Minute\n m: function(date, token2, localize2) {\n if (token2 === \"mo\") {\n return localize2.ordinalNumber(date.getMinutes(), { unit: \"minute\" });\n }\n return lightFormatters$1.m(date, token2);\n },\n // Second\n s: function(date, token2, localize2) {\n if (token2 === \"so\") {\n return localize2.ordinalNumber(date.getSeconds(), { unit: \"second\" });\n }\n return lightFormatters$1.s(date, token2);\n },\n // Fraction of second\n S: function(date, token2) {\n return lightFormatters$1.S(date, token2);\n },\n // Timezone (ISO-8601. If offset is 0, output is always `'Z'`)\n X: function(date, token2, _localize) {\n const timezoneOffset = date.getTimezoneOffset();\n if (timezoneOffset === 0) {\n return \"Z\";\n }\n switch (token2) {\n // Hours and optional minutes\n case \"X\":\n return formatTimezoneWithOptionalMinutes$1(timezoneOffset);\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 return formatTimezone$1(timezoneOffset);\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\":\n // Hours and minutes with `:` delimiter\n default:\n return formatTimezone$1(timezoneOffset, \":\");\n }\n },\n // Timezone (ISO-8601. If offset is 0, output is `'+00:00'` or equivalent)\n x: function(date, token2, _localize) {\n const timezoneOffset = date.getTimezoneOffset();\n switch (token2) {\n // Hours and optional minutes\n case \"x\":\n return formatTimezoneWithOptionalMinutes$1(timezoneOffset);\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 return formatTimezone$1(timezoneOffset);\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\":\n // Hours and minutes with `:` delimiter\n default:\n return formatTimezone$1(timezoneOffset, \":\");\n }\n },\n // Timezone (GMT)\n O: function(date, token2, _localize) {\n const timezoneOffset = date.getTimezoneOffset();\n switch (token2) {\n // Short\n case \"O\":\n case \"OO\":\n case \"OOO\":\n return \"GMT\" + formatTimezoneShort$1(timezoneOffset, \":\");\n // Long\n case \"OOOO\":\n default:\n return \"GMT\" + formatTimezone$1(timezoneOffset, \":\");\n }\n },\n // Timezone (specific non-location)\n z: function(date, token2, _localize) {\n const timezoneOffset = date.getTimezoneOffset();\n switch (token2) {\n // Short\n case \"z\":\n case \"zz\":\n case \"zzz\":\n return \"GMT\" + formatTimezoneShort$1(timezoneOffset, \":\");\n // Long\n case \"zzzz\":\n default:\n return \"GMT\" + formatTimezone$1(timezoneOffset, \":\");\n }\n },\n // Seconds timestamp\n t: function(date, token2, _localize) {\n const timestamp = Math.trunc(+date / 1e3);\n return addLeadingZeros$1(timestamp, token2.length);\n },\n // Milliseconds timestamp\n T: function(date, token2, _localize) {\n return addLeadingZeros$1(+date, token2.length);\n }\n};\nfunction formatTimezoneShort$1(offset3, delimiter2 = \"\") {\n const sign2 = offset3 > 0 ? \"-\" : \"+\";\n const absOffset = Math.abs(offset3);\n const hours2 = Math.trunc(absOffset / 60);\n const minutes2 = absOffset % 60;\n if (minutes2 === 0) {\n return sign2 + String(hours2);\n }\n return sign2 + String(hours2) + delimiter2 + addLeadingZeros$1(minutes2, 2);\n}\nfunction formatTimezoneWithOptionalMinutes$1(offset3, delimiter2) {\n if (offset3 % 60 === 0) {\n const sign2 = offset3 > 0 ? \"-\" : \"+\";\n return sign2 + addLeadingZeros$1(Math.abs(offset3) / 60, 2);\n }\n return formatTimezone$1(offset3, delimiter2);\n}\nfunction formatTimezone$1(offset3, delimiter2 = \"\") {\n const sign2 = offset3 > 0 ? \"-\" : \"+\";\n const absOffset = Math.abs(offset3);\n const hours2 = addLeadingZeros$1(Math.trunc(absOffset / 60), 2);\n const minutes2 = addLeadingZeros$1(absOffset % 60, 2);\n return sign2 + hours2 + delimiter2 + minutes2;\n}\nconst dateLongFormatter$1 = (pattern, formatLong2) => {\n switch (pattern) {\n case \"P\":\n return formatLong2.date({ width: \"short\" });\n case \"PP\":\n return formatLong2.date({ width: \"medium\" });\n case \"PPP\":\n return formatLong2.date({ width: \"long\" });\n case \"PPPP\":\n default:\n return formatLong2.date({ width: \"full\" });\n }\n};\nconst timeLongFormatter$1 = (pattern, formatLong2) => {\n switch (pattern) {\n case \"p\":\n return formatLong2.time({ width: \"short\" });\n case \"pp\":\n return formatLong2.time({ width: \"medium\" });\n case \"ppp\":\n return formatLong2.time({ width: \"long\" });\n case \"pppp\":\n default:\n return formatLong2.time({ width: \"full\" });\n }\n};\nconst dateTimeLongFormatter$1 = (pattern, formatLong2) => {\n const matchResult = pattern.match(/(P+)(p+)?/) || [];\n const datePattern = matchResult[1];\n const timePattern = matchResult[2];\n if (!timePattern) {\n return dateLongFormatter$1(pattern, formatLong2);\n }\n let dateTimeFormat;\n switch (datePattern) {\n case \"P\":\n dateTimeFormat = formatLong2.dateTime({ width: \"short\" });\n break;\n case \"PP\":\n dateTimeFormat = formatLong2.dateTime({ width: \"medium\" });\n break;\n case \"PPP\":\n dateTimeFormat = formatLong2.dateTime({ width: \"long\" });\n break;\n case \"PPPP\":\n default:\n dateTimeFormat = formatLong2.dateTime({ width: \"full\" });\n break;\n }\n return dateTimeFormat.replace(\"{{date}}\", dateLongFormatter$1(datePattern, formatLong2)).replace(\"{{time}}\", timeLongFormatter$1(timePattern, formatLong2));\n};\nconst longFormatters$1 = {\n p: timeLongFormatter$1,\n P: dateTimeLongFormatter$1\n};\nconst dayOfYearTokenRE$1 = /^D+$/;\nconst weekYearTokenRE$1 = /^Y+$/;\nconst throwTokens$1 = [\"D\", \"DD\", \"YY\", \"YYYY\"];\nfunction isProtectedDayOfYearToken$1(token2) {\n return dayOfYearTokenRE$1.test(token2);\n}\nfunction isProtectedWeekYearToken$1(token2) {\n return weekYearTokenRE$1.test(token2);\n}\nfunction warnOrThrowProtectedError$1(token2, format2, input) {\n const _message = message$1(token2, format2, input);\n console.warn(_message);\n if (throwTokens$1.includes(token2)) throw new RangeError(_message);\n}\nfunction message$1(token2, format2, input) {\n const subject = token2[0] === \"Y\" ? \"years\" : \"days of the month\";\n return `Use \\`${token2.toLowerCase()}\\` instead of \\`${token2}\\` (in \\`${format2}\\`) for formatting ${subject} to the input \\`${input}\\`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md`;\n}\nconst formattingTokensRegExp$3 = /[yYQqMLwIdDecihHKkms]o|(\\w)\\1*|''|'(''|[^'])+('|$)|./g;\nconst longFormattingTokensRegExp$4 = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g;\nconst escapedStringRegExp$3 = /^'([^]*?)'?$/;\nconst doubleQuoteRegExp$3 = /''/g;\nconst unescapedLatinCharacterRegExp$3 = /[a-zA-Z]/;\nfunction format$2(date, formatStr, options) {\n var _a, _b, _c, _d;\n const defaultOptions2 = getDefaultOptions$3();\n const locale2 = defaultOptions2.locale ?? enUS$1;\n const firstWeekContainsDate = defaultOptions2.firstWeekContainsDate ?? ((_b = (_a = defaultOptions2.locale) == null ? void 0 : _a.options) == null ? void 0 : _b.firstWeekContainsDate) ?? 1;\n const weekStartsOn = defaultOptions2.weekStartsOn ?? ((_d = (_c = defaultOptions2.locale) == null ? void 0 : _c.options) == null ? void 0 : _d.weekStartsOn) ?? 0;\n const originalDate = toDate$3(date, options == null ? void 0 : options.in);\n if (!isValid$5(originalDate)) {\n throw new RangeError(\"Invalid time value\");\n }\n let parts = formatStr.match(longFormattingTokensRegExp$4).map((substring) => {\n const firstCharacter = substring[0];\n if (firstCharacter === \"p\" || firstCharacter === \"P\") {\n const longFormatter = longFormatters$1[firstCharacter];\n return longFormatter(substring, locale2.formatLong);\n }\n return substring;\n }).join(\"\").match(formattingTokensRegExp$3).map((substring) => {\n if (substring === \"''\") {\n return { isToken: false, value: \"'\" };\n }\n const firstCharacter = substring[0];\n if (firstCharacter === \"'\") {\n return { isToken: false, value: cleanEscapedString$3(substring) };\n }\n if (formatters$1[firstCharacter]) {\n return { isToken: true, value: substring };\n }\n if (firstCharacter.match(unescapedLatinCharacterRegExp$3)) {\n throw new RangeError(\n \"Format string contains an unescaped latin alphabet character `\" + firstCharacter + \"`\"\n );\n }\n return { isToken: false, value: substring };\n });\n if (locale2.localize.preprocessor) {\n parts = locale2.localize.preprocessor(originalDate, parts);\n }\n const formatterOptions = {\n firstWeekContainsDate,\n weekStartsOn,\n locale: locale2\n };\n return parts.map((part) => {\n if (!part.isToken) return part.value;\n const token2 = part.value;\n if (isProtectedWeekYearToken$1(token2) || isProtectedDayOfYearToken$1(token2)) {\n warnOrThrowProtectedError$1(token2, formatStr, String(date));\n }\n const formatter = formatters$1[token2[0]];\n return formatter(originalDate, token2, locale2.localize, formatterOptions);\n }).join(\"\");\n}\nfunction cleanEscapedString$3(input) {\n const matched = input.match(escapedStringRegExp$3);\n if (!matched) {\n return input;\n }\n return matched[1].replace(doubleQuoteRegExp$3, \"'\");\n}\nfunction formatISO(date, options) {\n const date_ = toDate$3(date, options == null ? void 0 : options.in);\n if (isNaN(+date_)) {\n throw new RangeError(\"Invalid time value\");\n }\n const format2 = (options == null ? void 0 : options.format) ?? \"extended\";\n const representation = (options == null ? void 0 : options.representation) ?? \"complete\";\n let result = \"\";\n let tzOffset = \"\";\n const dateDelimiter = format2 === \"extended\" ? \"-\" : \"\";\n const timeDelimiter = format2 === \"extended\" ? \":\" : \"\";\n if (representation !== \"time\") {\n const day = addLeadingZeros$1(date_.getDate(), 2);\n const month = addLeadingZeros$1(date_.getMonth() + 1, 2);\n const year = addLeadingZeros$1(date_.getFullYear(), 4);\n result = `${year}${dateDelimiter}${month}${dateDelimiter}${day}`;\n }\n if (representation !== \"date\") {\n const offset3 = date_.getTimezoneOffset();\n if (offset3 !== 0) {\n const absoluteOffset = Math.abs(offset3);\n const hourOffset = addLeadingZeros$1(Math.trunc(absoluteOffset / 60), 2);\n const minuteOffset = addLeadingZeros$1(absoluteOffset % 60, 2);\n const sign2 = offset3 < 0 ? \"+\" : \"-\";\n tzOffset = `${sign2}${hourOffset}:${minuteOffset}`;\n } else {\n tzOffset = \"Z\";\n }\n const hour = addLeadingZeros$1(date_.getHours(), 2);\n const minute = addLeadingZeros$1(date_.getMinutes(), 2);\n const second = addLeadingZeros$1(date_.getSeconds(), 2);\n const separator = result === \"\" ? \"\" : \"T\";\n const time = [hour, minute, second].join(timeDelimiter);\n result = `${result}${separator}${time}${tzOffset}`;\n }\n return result;\n}\nfunction getDefaultOptions$2() {\n return Object.assign({}, getDefaultOptions$3());\n}\nfunction getISODay$1(date, options) {\n const day = toDate$3(date, options == null ? void 0 : options.in).getDay();\n return day === 0 ? 7 : day;\n}\nfunction transpose$1(date, constructor) {\n const date_ = isConstructor(constructor) ? new constructor(0) : constructFrom$1(constructor, 0);\n date_.setFullYear(date.getFullYear(), date.getMonth(), date.getDate());\n date_.setHours(\n date.getHours(),\n date.getMinutes(),\n date.getSeconds(),\n date.getMilliseconds()\n );\n return date_;\n}\nfunction isConstructor(constructor) {\n var _a;\n return typeof constructor === \"function\" && ((_a = constructor.prototype) == null ? void 0 : _a.constructor) === constructor;\n}\nconst TIMEZONE_UNIT_PRIORITY$1 = 10;\nlet Setter$1 = class Setter {\n constructor() {\n __publicField(this, \"subPriority\", 0);\n }\n validate(_utcDate, _options) {\n return true;\n }\n};\nlet ValueSetter$1 = class ValueSetter extends Setter$1 {\n constructor(value, validateValue, setValue, priority, subPriority) {\n super();\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 }\n validate(date, options) {\n return this.validateValue(date, this.value, options);\n }\n set(date, flags, options) {\n return this.setValue(date, flags, this.value, options);\n }\n};\nclass DateTimezoneSetter extends Setter$1 {\n constructor(context, reference) {\n super();\n __publicField(this, \"priority\", TIMEZONE_UNIT_PRIORITY$1);\n __publicField(this, \"subPriority\", -1);\n this.context = context || ((date) => constructFrom$1(reference, date));\n }\n set(date, flags) {\n if (flags.timestampIsSet) return date;\n return constructFrom$1(date, transpose$1(date, this.context));\n }\n}\nlet Parser$1 = class Parser {\n run(dateString, token2, match5, options) {\n const result = this.parse(dateString, token2, match5, options);\n if (!result) {\n return null;\n }\n return {\n setter: new ValueSetter$1(\n result.value,\n this.validate,\n this.set,\n this.priority,\n this.subPriority\n ),\n rest: result.rest\n };\n }\n validate(_utcDate, _value, _options) {\n return true;\n }\n};\nlet EraParser$1 = class EraParser extends Parser$1 {\n constructor() {\n super(...arguments);\n __publicField(this, \"priority\", 140);\n __publicField(this, \"incompatibleTokens\", [\"R\", \"u\", \"t\", \"T\"]);\n }\n parse(dateString, token2, match5) {\n switch (token2) {\n // AD, BC\n case \"G\":\n case \"GG\":\n case \"GGG\":\n return match5.era(dateString, { width: \"abbreviated\" }) || match5.era(dateString, { width: \"narrow\" });\n // A, B\n case \"GGGGG\":\n return match5.era(dateString, { width: \"narrow\" });\n // Anno Domini, Before Christ\n case \"GGGG\":\n default:\n return match5.era(dateString, { width: \"wide\" }) || match5.era(dateString, { width: \"abbreviated\" }) || match5.era(dateString, { width: \"narrow\" });\n }\n }\n set(date, flags, value) {\n flags.era = value;\n date.setFullYear(value, 0, 1);\n date.setHours(0, 0, 0, 0);\n return date;\n }\n};\nconst numericPatterns$1 = {\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 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 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}/\n // 0 to 9999, -0 to -9999\n};\nconst timezonePatterns$1 = {\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};\nfunction mapValue$1(parseFnResult, mapFn) {\n if (!parseFnResult) {\n return parseFnResult;\n }\n return {\n value: mapFn(parseFnResult.value),\n rest: parseFnResult.rest\n };\n}\nfunction parseNumericPattern$1(pattern, dateString) {\n const 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}\nfunction parseTimezonePattern$1(pattern, dateString) {\n const matchResult = dateString.match(pattern);\n if (!matchResult) {\n return null;\n }\n if (matchResult[0] === \"Z\") {\n return {\n value: 0,\n rest: dateString.slice(1)\n };\n }\n const sign2 = matchResult[1] === \"+\" ? 1 : -1;\n const hours2 = matchResult[2] ? parseInt(matchResult[2], 10) : 0;\n const minutes2 = matchResult[3] ? parseInt(matchResult[3], 10) : 0;\n const seconds2 = matchResult[5] ? parseInt(matchResult[5], 10) : 0;\n return {\n value: sign2 * (hours2 * millisecondsInHour$1 + minutes2 * millisecondsInMinute$1 + seconds2 * millisecondsInSecond$1),\n rest: dateString.slice(matchResult[0].length)\n };\n}\nfunction parseAnyDigitsSigned$1(dateString) {\n return parseNumericPattern$1(numericPatterns$1.anyDigitsSigned, dateString);\n}\nfunction parseNDigits$1(n2, dateString) {\n switch (n2) {\n case 1:\n return parseNumericPattern$1(numericPatterns$1.singleDigit, dateString);\n case 2:\n return parseNumericPattern$1(numericPatterns$1.twoDigits, dateString);\n case 3:\n return parseNumericPattern$1(numericPatterns$1.threeDigits, dateString);\n case 4:\n return parseNumericPattern$1(numericPatterns$1.fourDigits, dateString);\n default:\n return parseNumericPattern$1(new RegExp(\"^\\\\d{1,\" + n2 + \"}\"), dateString);\n }\n}\nfunction parseNDigitsSigned$1(n2, dateString) {\n switch (n2) {\n case 1:\n return parseNumericPattern$1(numericPatterns$1.singleDigitSigned, dateString);\n case 2:\n return parseNumericPattern$1(numericPatterns$1.twoDigitsSigned, dateString);\n case 3:\n return parseNumericPattern$1(numericPatterns$1.threeDigitsSigned, dateString);\n case 4:\n return parseNumericPattern$1(numericPatterns$1.fourDigitsSigned, dateString);\n default:\n return parseNumericPattern$1(new RegExp(\"^-?\\\\d{1,\" + n2 + \"}\"), dateString);\n }\n}\nfunction dayPeriodEnumToHours$1(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}\nfunction normalizeTwoDigitYear$1(twoDigitYear, currentYear) {\n const isCommonEra = currentYear > 0;\n const absCurrentYear = isCommonEra ? currentYear : 1 - currentYear;\n let result;\n if (absCurrentYear <= 50) {\n result = twoDigitYear || 100;\n } else {\n const rangeEnd = absCurrentYear + 50;\n const rangeEndCentury = Math.trunc(rangeEnd / 100) * 100;\n const isPreviousCentury = twoDigitYear >= rangeEnd % 100;\n result = twoDigitYear + rangeEndCentury - (isPreviousCentury ? 100 : 0);\n }\n return isCommonEra ? result : 1 - result;\n}\nfunction isLeapYearIndex$4(year) {\n return year % 400 === 0 || year % 4 === 0 && year % 100 !== 0;\n}\nlet YearParser$1 = class YearParser extends Parser$1 {\n constructor() {\n super(...arguments);\n __publicField(this, \"priority\", 130);\n __publicField(this, \"incompatibleTokens\", [\"Y\", \"R\", \"u\", \"w\", \"I\", \"i\", \"e\", \"c\", \"t\", \"T\"]);\n }\n parse(dateString, token2, match5) {\n const valueCallback = (year) => ({\n year,\n isTwoDigitYear: token2 === \"yy\"\n });\n switch (token2) {\n case \"y\":\n return mapValue$1(parseNDigits$1(4, dateString), valueCallback);\n case \"yo\":\n return mapValue$1(\n match5.ordinalNumber(dateString, {\n unit: \"year\"\n }),\n valueCallback\n );\n default:\n return mapValue$1(parseNDigits$1(token2.length, dateString), valueCallback);\n }\n }\n validate(_date, value) {\n return value.isTwoDigitYear || value.year > 0;\n }\n set(date, flags, value) {\n const currentYear = date.getFullYear();\n if (value.isTwoDigitYear) {\n const normalizedTwoDigitYear = normalizeTwoDigitYear$1(\n value.year,\n currentYear\n );\n date.setFullYear(normalizedTwoDigitYear, 0, 1);\n date.setHours(0, 0, 0, 0);\n return date;\n }\n const year = !(\"era\" in flags) || flags.era === 1 ? value.year : 1 - value.year;\n date.setFullYear(year, 0, 1);\n date.setHours(0, 0, 0, 0);\n return date;\n }\n};\nlet LocalWeekYearParser$1 = class LocalWeekYearParser extends Parser$1 {\n constructor() {\n super(...arguments);\n __publicField(this, \"priority\", 130);\n __publicField(this, \"incompatibleTokens\", [\n \"y\",\n \"R\",\n \"u\",\n \"Q\",\n \"q\",\n \"M\",\n \"L\",\n \"I\",\n \"d\",\n \"D\",\n \"i\",\n \"t\",\n \"T\"\n ]);\n }\n parse(dateString, token2, match5) {\n const valueCallback = (year) => ({\n year,\n isTwoDigitYear: token2 === \"YY\"\n });\n switch (token2) {\n case \"Y\":\n return mapValue$1(parseNDigits$1(4, dateString), valueCallback);\n case \"Yo\":\n return mapValue$1(\n match5.ordinalNumber(dateString, {\n unit: \"year\"\n }),\n valueCallback\n );\n default:\n return mapValue$1(parseNDigits$1(token2.length, dateString), valueCallback);\n }\n }\n validate(_date, value) {\n return value.isTwoDigitYear || value.year > 0;\n }\n set(date, flags, value, options) {\n const currentYear = getWeekYear$1(date, options);\n if (value.isTwoDigitYear) {\n const normalizedTwoDigitYear = normalizeTwoDigitYear$1(\n value.year,\n currentYear\n );\n date.setFullYear(\n normalizedTwoDigitYear,\n 0,\n options.firstWeekContainsDate\n );\n date.setHours(0, 0, 0, 0);\n return startOfWeek$1(date, options);\n }\n const year = !(\"era\" in flags) || flags.era === 1 ? value.year : 1 - value.year;\n date.setFullYear(year, 0, options.firstWeekContainsDate);\n date.setHours(0, 0, 0, 0);\n return startOfWeek$1(date, options);\n }\n};\nlet ISOWeekYearParser$1 = class ISOWeekYearParser extends Parser$1 {\n constructor() {\n super(...arguments);\n __publicField(this, \"priority\", 130);\n __publicField(this, \"incompatibleTokens\", [\n \"G\",\n \"y\",\n \"Y\",\n \"u\",\n \"Q\",\n \"q\",\n \"M\",\n \"L\",\n \"w\",\n \"d\",\n \"D\",\n \"e\",\n \"c\",\n \"t\",\n \"T\"\n ]);\n }\n parse(dateString, token2) {\n if (token2 === \"R\") {\n return parseNDigitsSigned$1(4, dateString);\n }\n return parseNDigitsSigned$1(token2.length, dateString);\n }\n set(date, _flags, value) {\n const firstWeekOfYear = constructFrom$1(date, 0);\n firstWeekOfYear.setFullYear(value, 0, 4);\n firstWeekOfYear.setHours(0, 0, 0, 0);\n return startOfISOWeek$1(firstWeekOfYear);\n }\n};\nlet ExtendedYearParser$1 = class ExtendedYearParser extends Parser$1 {\n constructor() {\n super(...arguments);\n __publicField(this, \"priority\", 130);\n __publicField(this, \"incompatibleTokens\", [\"G\", \"y\", \"Y\", \"R\", \"w\", \"I\", \"i\", \"e\", \"c\", \"t\", \"T\"]);\n }\n parse(dateString, token2) {\n if (token2 === \"u\") {\n return parseNDigitsSigned$1(4, dateString);\n }\n return parseNDigitsSigned$1(token2.length, dateString);\n }\n set(date, _flags, value) {\n date.setFullYear(value, 0, 1);\n date.setHours(0, 0, 0, 0);\n return date;\n }\n};\nlet QuarterParser$1 = class QuarterParser extends Parser$1 {\n constructor() {\n super(...arguments);\n __publicField(this, \"priority\", 120);\n __publicField(this, \"incompatibleTokens\", [\n \"Y\",\n \"R\",\n \"q\",\n \"M\",\n \"L\",\n \"w\",\n \"I\",\n \"d\",\n \"D\",\n \"i\",\n \"e\",\n \"c\",\n \"t\",\n \"T\"\n ]);\n }\n parse(dateString, token2, match5) {\n switch (token2) {\n // 1, 2, 3, 4\n case \"Q\":\n case \"QQ\":\n return parseNDigits$1(token2.length, dateString);\n // 1st, 2nd, 3rd, 4th\n case \"Qo\":\n return match5.ordinalNumber(dateString, { unit: \"quarter\" });\n // Q1, Q2, Q3, Q4\n case \"QQQ\":\n return match5.quarter(dateString, {\n width: \"abbreviated\",\n context: \"formatting\"\n }) || match5.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 match5.quarter(dateString, {\n width: \"narrow\",\n context: \"formatting\"\n });\n // 1st quarter, 2nd quarter, ...\n case \"QQQQ\":\n default:\n return match5.quarter(dateString, {\n width: \"wide\",\n context: \"formatting\"\n }) || match5.quarter(dateString, {\n width: \"abbreviated\",\n context: \"formatting\"\n }) || match5.quarter(dateString, {\n width: \"narrow\",\n context: \"formatting\"\n });\n }\n }\n validate(_date, value) {\n return value >= 1 && value <= 4;\n }\n set(date, _flags, value) {\n date.setMonth((value - 1) * 3, 1);\n date.setHours(0, 0, 0, 0);\n return date;\n }\n};\nlet StandAloneQuarterParser$1 = class StandAloneQuarterParser extends Parser$1 {\n constructor() {\n super(...arguments);\n __publicField(this, \"priority\", 120);\n __publicField(this, \"incompatibleTokens\", [\n \"Y\",\n \"R\",\n \"Q\",\n \"M\",\n \"L\",\n \"w\",\n \"I\",\n \"d\",\n \"D\",\n \"i\",\n \"e\",\n \"c\",\n \"t\",\n \"T\"\n ]);\n }\n parse(dateString, token2, match5) {\n switch (token2) {\n // 1, 2, 3, 4\n case \"q\":\n case \"qq\":\n return parseNDigits$1(token2.length, dateString);\n // 1st, 2nd, 3rd, 4th\n case \"qo\":\n return match5.ordinalNumber(dateString, { unit: \"quarter\" });\n // Q1, Q2, Q3, Q4\n case \"qqq\":\n return match5.quarter(dateString, {\n width: \"abbreviated\",\n context: \"standalone\"\n }) || match5.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 match5.quarter(dateString, {\n width: \"narrow\",\n context: \"standalone\"\n });\n // 1st quarter, 2nd quarter, ...\n case \"qqqq\":\n default:\n return match5.quarter(dateString, {\n width: \"wide\",\n context: \"standalone\"\n }) || match5.quarter(dateString, {\n width: \"abbreviated\",\n context: \"standalone\"\n }) || match5.quarter(dateString, {\n width: \"narrow\",\n context: \"standalone\"\n });\n }\n }\n validate(_date, value) {\n return value >= 1 && value <= 4;\n }\n set(date, _flags, value) {\n date.setMonth((value - 1) * 3, 1);\n date.setHours(0, 0, 0, 0);\n return date;\n }\n};\nlet MonthParser$1 = class MonthParser extends Parser$1 {\n constructor() {\n super(...arguments);\n __publicField(this, \"incompatibleTokens\", [\n \"Y\",\n \"R\",\n \"q\",\n \"Q\",\n \"L\",\n \"w\",\n \"I\",\n \"D\",\n \"i\",\n \"e\",\n \"c\",\n \"t\",\n \"T\"\n ]);\n __publicField(this, \"priority\", 110);\n }\n parse(dateString, token2, match5) {\n const valueCallback = (value) => value - 1;\n switch (token2) {\n // 1, 2, ..., 12\n case \"M\":\n return mapValue$1(\n parseNumericPattern$1(numericPatterns$1.month, dateString),\n valueCallback\n );\n // 01, 02, ..., 12\n case \"MM\":\n return mapValue$1(parseNDigits$1(2, dateString), valueCallback);\n // 1st, 2nd, ..., 12th\n case \"Mo\":\n return mapValue$1(\n match5.ordinalNumber(dateString, {\n unit: \"month\"\n }),\n valueCallback\n );\n // Jan, Feb, ..., Dec\n case \"MMM\":\n return match5.month(dateString, {\n width: \"abbreviated\",\n context: \"formatting\"\n }) || match5.month(dateString, { width: \"narrow\", context: \"formatting\" });\n // J, F, ..., D\n case \"MMMMM\":\n return match5.month(dateString, {\n width: \"narrow\",\n context: \"formatting\"\n });\n // January, February, ..., December\n case \"MMMM\":\n default:\n return match5.month(dateString, { width: \"wide\", context: \"formatting\" }) || match5.month(dateString, {\n width: \"abbreviated\",\n context: \"formatting\"\n }) || match5.month(dateString, { width: \"narrow\", context: \"formatting\" });\n }\n }\n validate(_date, value) {\n return value >= 0 && value <= 11;\n }\n set(date, _flags, value) {\n date.setMonth(value, 1);\n date.setHours(0, 0, 0, 0);\n return date;\n }\n};\nlet StandAloneMonthParser$1 = class StandAloneMonthParser extends Parser$1 {\n constructor() {\n super(...arguments);\n __publicField(this, \"priority\", 110);\n __publicField(this, \"incompatibleTokens\", [\n \"Y\",\n \"R\",\n \"q\",\n \"Q\",\n \"M\",\n \"w\",\n \"I\",\n \"D\",\n \"i\",\n \"e\",\n \"c\",\n \"t\",\n \"T\"\n ]);\n }\n parse(dateString, token2, match5) {\n const valueCallback = (value) => value - 1;\n switch (token2) {\n // 1, 2, ..., 12\n case \"L\":\n return mapValue$1(\n parseNumericPattern$1(numericPatterns$1.month, dateString),\n valueCallback\n );\n // 01, 02, ..., 12\n case \"LL\":\n return mapValue$1(parseNDigits$1(2, dateString), valueCallback);\n // 1st, 2nd, ..., 12th\n case \"Lo\":\n return mapValue$1(\n match5.ordinalNumber(dateString, {\n unit: \"month\"\n }),\n valueCallback\n );\n // Jan, Feb, ..., Dec\n case \"LLL\":\n return match5.month(dateString, {\n width: \"abbreviated\",\n context: \"standalone\"\n }) || match5.month(dateString, { width: \"narrow\", context: \"standalone\" });\n // J, F, ..., D\n case \"LLLLL\":\n return match5.month(dateString, {\n width: \"narrow\",\n context: \"standalone\"\n });\n // January, February, ..., December\n case \"LLLL\":\n default:\n return match5.month(dateString, { width: \"wide\", context: \"standalone\" }) || match5.month(dateString, {\n width: \"abbreviated\",\n context: \"standalone\"\n }) || match5.month(dateString, { width: \"narrow\", context: \"standalone\" });\n }\n }\n validate(_date, value) {\n return value >= 0 && value <= 11;\n }\n set(date, _flags, value) {\n date.setMonth(value, 1);\n date.setHours(0, 0, 0, 0);\n return date;\n }\n};\nfunction setWeek$1(date, week, options) {\n const date_ = toDate$3(date, options == null ? void 0 : options.in);\n const diff2 = getWeek$2(date_, options) - week;\n date_.setDate(date_.getDate() - diff2 * 7);\n return toDate$3(date_, options == null ? void 0 : options.in);\n}\nlet LocalWeekParser$1 = class LocalWeekParser extends Parser$1 {\n constructor() {\n super(...arguments);\n __publicField(this, \"priority\", 100);\n __publicField(this, \"incompatibleTokens\", [\n \"y\",\n \"R\",\n \"u\",\n \"q\",\n \"Q\",\n \"M\",\n \"L\",\n \"I\",\n \"d\",\n \"D\",\n \"i\",\n \"t\",\n \"T\"\n ]);\n }\n parse(dateString, token2, match5) {\n switch (token2) {\n case \"w\":\n return parseNumericPattern$1(numericPatterns$1.week, dateString);\n case \"wo\":\n return match5.ordinalNumber(dateString, { unit: \"week\" });\n default:\n return parseNDigits$1(token2.length, dateString);\n }\n }\n validate(_date, value) {\n return value >= 1 && value <= 53;\n }\n set(date, _flags, value, options) {\n return startOfWeek$1(setWeek$1(date, value, options), options);\n }\n};\nfunction setISOWeek$1(date, week, options) {\n const _date = toDate$3(date, options == null ? void 0 : options.in);\n const diff2 = getISOWeek$1(_date, options) - week;\n _date.setDate(_date.getDate() - diff2 * 7);\n return _date;\n}\nlet ISOWeekParser$1 = class ISOWeekParser extends Parser$1 {\n constructor() {\n super(...arguments);\n __publicField(this, \"priority\", 100);\n __publicField(this, \"incompatibleTokens\", [\n \"y\",\n \"Y\",\n \"u\",\n \"q\",\n \"Q\",\n \"M\",\n \"L\",\n \"w\",\n \"d\",\n \"D\",\n \"e\",\n \"c\",\n \"t\",\n \"T\"\n ]);\n }\n parse(dateString, token2, match5) {\n switch (token2) {\n case \"I\":\n return parseNumericPattern$1(numericPatterns$1.week, dateString);\n case \"Io\":\n return match5.ordinalNumber(dateString, { unit: \"week\" });\n default:\n return parseNDigits$1(token2.length, dateString);\n }\n }\n validate(_date, value) {\n return value >= 1 && value <= 53;\n }\n set(date, _flags, value) {\n return startOfISOWeek$1(setISOWeek$1(date, value));\n }\n};\nconst DAYS_IN_MONTH$2 = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\nconst DAYS_IN_MONTH_LEAP_YEAR$2 = [\n 31,\n 29,\n 31,\n 30,\n 31,\n 30,\n 31,\n 31,\n 30,\n 31,\n 30,\n 31\n];\nlet DateParser$1 = class DateParser extends Parser$1 {\n constructor() {\n super(...arguments);\n __publicField(this, \"priority\", 90);\n __publicField(this, \"subPriority\", 1);\n __publicField(this, \"incompatibleTokens\", [\n \"Y\",\n \"R\",\n \"q\",\n \"Q\",\n \"w\",\n \"I\",\n \"D\",\n \"i\",\n \"e\",\n \"c\",\n \"t\",\n \"T\"\n ]);\n }\n parse(dateString, token2, match5) {\n switch (token2) {\n case \"d\":\n return parseNumericPattern$1(numericPatterns$1.date, dateString);\n case \"do\":\n return match5.ordinalNumber(dateString, { unit: \"date\" });\n default:\n return parseNDigits$1(token2.length, dateString);\n }\n }\n validate(date, value) {\n const year = date.getFullYear();\n const isLeapYear2 = isLeapYearIndex$4(year);\n const month = date.getMonth();\n if (isLeapYear2) {\n return value >= 1 && value <= DAYS_IN_MONTH_LEAP_YEAR$2[month];\n } else {\n return value >= 1 && value <= DAYS_IN_MONTH$2[month];\n }\n }\n set(date, _flags, value) {\n date.setDate(value);\n date.setHours(0, 0, 0, 0);\n return date;\n }\n};\nlet DayOfYearParser$1 = class DayOfYearParser extends Parser$1 {\n constructor() {\n super(...arguments);\n __publicField(this, \"priority\", 90);\n __publicField(this, \"subpriority\", 1);\n __publicField(this, \"incompatibleTokens\", [\n \"Y\",\n \"R\",\n \"q\",\n \"Q\",\n \"M\",\n \"L\",\n \"w\",\n \"I\",\n \"d\",\n \"E\",\n \"i\",\n \"e\",\n \"c\",\n \"t\",\n \"T\"\n ]);\n }\n parse(dateString, token2, match5) {\n switch (token2) {\n case \"D\":\n case \"DD\":\n return parseNumericPattern$1(numericPatterns$1.dayOfYear, dateString);\n case \"Do\":\n return match5.ordinalNumber(dateString, { unit: \"date\" });\n default:\n return parseNDigits$1(token2.length, dateString);\n }\n }\n validate(date, value) {\n const year = date.getFullYear();\n const isLeapYear2 = isLeapYearIndex$4(year);\n if (isLeapYear2) {\n return value >= 1 && value <= 366;\n } else {\n return value >= 1 && value <= 365;\n }\n }\n set(date, _flags, value) {\n date.setMonth(0, value);\n date.setHours(0, 0, 0, 0);\n return date;\n }\n};\nfunction setDay$1(date, day, options) {\n var _a, _b, _c, _d;\n const defaultOptions2 = getDefaultOptions$3();\n const weekStartsOn = (options == null ? void 0 : options.weekStartsOn) ?? ((_b = (_a = options == null ? void 0 : options.locale) == null ? void 0 : _a.options) == null ? void 0 : _b.weekStartsOn) ?? defaultOptions2.weekStartsOn ?? ((_d = (_c = defaultOptions2.locale) == null ? void 0 : _c.options) == null ? void 0 : _d.weekStartsOn) ?? 0;\n const date_ = toDate$3(date, options == null ? void 0 : options.in);\n const currentDay = date_.getDay();\n const remainder = day % 7;\n const dayIndex = (remainder + 7) % 7;\n const delta = 7 - weekStartsOn;\n const diff2 = day < 0 || day > 6 ? day - (currentDay + delta) % 7 : (dayIndex + delta) % 7 - (currentDay + delta) % 7;\n return addDays$1(date_, diff2, options);\n}\nlet DayParser$1 = class DayParser extends Parser$1 {\n constructor() {\n super(...arguments);\n __publicField(this, \"priority\", 90);\n __publicField(this, \"incompatibleTokens\", [\"D\", \"i\", \"e\", \"c\", \"t\", \"T\"]);\n }\n parse(dateString, token2, match5) {\n switch (token2) {\n // Tue\n case \"E\":\n case \"EE\":\n case \"EEE\":\n return match5.day(dateString, {\n width: \"abbreviated\",\n context: \"formatting\"\n }) || match5.day(dateString, { width: \"short\", context: \"formatting\" }) || match5.day(dateString, { width: \"narrow\", context: \"formatting\" });\n // T\n case \"EEEEE\":\n return match5.day(dateString, {\n width: \"narrow\",\n context: \"formatting\"\n });\n // Tu\n case \"EEEEEE\":\n return match5.day(dateString, { width: \"short\", context: \"formatting\" }) || match5.day(dateString, { width: \"narrow\", context: \"formatting\" });\n // Tuesday\n case \"EEEE\":\n default:\n return match5.day(dateString, { width: \"wide\", context: \"formatting\" }) || match5.day(dateString, {\n width: \"abbreviated\",\n context: \"formatting\"\n }) || match5.day(dateString, { width: \"short\", context: \"formatting\" }) || match5.day(dateString, { width: \"narrow\", context: \"formatting\" });\n }\n }\n validate(_date, value) {\n return value >= 0 && value <= 6;\n }\n set(date, _flags, value, options) {\n date = setDay$1(date, value, options);\n date.setHours(0, 0, 0, 0);\n return date;\n }\n};\nlet LocalDayParser$1 = class LocalDayParser extends Parser$1 {\n constructor() {\n super(...arguments);\n __publicField(this, \"priority\", 90);\n __publicField(this, \"incompatibleTokens\", [\n \"y\",\n \"R\",\n \"u\",\n \"q\",\n \"Q\",\n \"M\",\n \"L\",\n \"I\",\n \"d\",\n \"D\",\n \"E\",\n \"i\",\n \"c\",\n \"t\",\n \"T\"\n ]);\n }\n parse(dateString, token2, match5, options) {\n const valueCallback = (value) => {\n const wholeWeekDays = Math.floor((value - 1) / 7) * 7;\n return (value + options.weekStartsOn + 6) % 7 + wholeWeekDays;\n };\n switch (token2) {\n // 3\n case \"e\":\n case \"ee\":\n return mapValue$1(parseNDigits$1(token2.length, dateString), valueCallback);\n // 3rd\n case \"eo\":\n return mapValue$1(\n match5.ordinalNumber(dateString, {\n unit: \"day\"\n }),\n valueCallback\n );\n // Tue\n case \"eee\":\n return match5.day(dateString, {\n width: \"abbreviated\",\n context: \"formatting\"\n }) || match5.day(dateString, { width: \"short\", context: \"formatting\" }) || match5.day(dateString, { width: \"narrow\", context: \"formatting\" });\n // T\n case \"eeeee\":\n return match5.day(dateString, {\n width: \"narrow\",\n context: \"formatting\"\n });\n // Tu\n case \"eeeeee\":\n return match5.day(dateString, { width: \"short\", context: \"formatting\" }) || match5.day(dateString, { width: \"narrow\", context: \"formatting\" });\n // Tuesday\n case \"eeee\":\n default:\n return match5.day(dateString, { width: \"wide\", context: \"formatting\" }) || match5.day(dateString, {\n width: \"abbreviated\",\n context: \"formatting\"\n }) || match5.day(dateString, { width: \"short\", context: \"formatting\" }) || match5.day(dateString, { width: \"narrow\", context: \"formatting\" });\n }\n }\n validate(_date, value) {\n return value >= 0 && value <= 6;\n }\n set(date, _flags, value, options) {\n date = setDay$1(date, value, options);\n date.setHours(0, 0, 0, 0);\n return date;\n }\n};\nlet StandAloneLocalDayParser$1 = class StandAloneLocalDayParser extends Parser$1 {\n constructor() {\n super(...arguments);\n __publicField(this, \"priority\", 90);\n __publicField(this, \"incompatibleTokens\", [\n \"y\",\n \"R\",\n \"u\",\n \"q\",\n \"Q\",\n \"M\",\n \"L\",\n \"I\",\n \"d\",\n \"D\",\n \"E\",\n \"i\",\n \"e\",\n \"t\",\n \"T\"\n ]);\n }\n parse(dateString, token2, match5, options) {\n const valueCallback = (value) => {\n const wholeWeekDays = Math.floor((value - 1) / 7) * 7;\n return (value + options.weekStartsOn + 6) % 7 + wholeWeekDays;\n };\n switch (token2) {\n // 3\n case \"c\":\n case \"cc\":\n return mapValue$1(parseNDigits$1(token2.length, dateString), valueCallback);\n // 3rd\n case \"co\":\n return mapValue$1(\n match5.ordinalNumber(dateString, {\n unit: \"day\"\n }),\n valueCallback\n );\n // Tue\n case \"ccc\":\n return match5.day(dateString, {\n width: \"abbreviated\",\n context: \"standalone\"\n }) || match5.day(dateString, { width: \"short\", context: \"standalone\" }) || match5.day(dateString, { width: \"narrow\", context: \"standalone\" });\n // T\n case \"ccccc\":\n return match5.day(dateString, {\n width: \"narrow\",\n context: \"standalone\"\n });\n // Tu\n case \"cccccc\":\n return match5.day(dateString, { width: \"short\", context: \"standalone\" }) || match5.day(dateString, { width: \"narrow\", context: \"standalone\" });\n // Tuesday\n case \"cccc\":\n default:\n return match5.day(dateString, { width: \"wide\", context: \"standalone\" }) || match5.day(dateString, {\n width: \"abbreviated\",\n context: \"standalone\"\n }) || match5.day(dateString, { width: \"short\", context: \"standalone\" }) || match5.day(dateString, { width: \"narrow\", context: \"standalone\" });\n }\n }\n validate(_date, value) {\n return value >= 0 && value <= 6;\n }\n set(date, _flags, value, options) {\n date = setDay$1(date, value, options);\n date.setHours(0, 0, 0, 0);\n return date;\n }\n};\nfunction setISODay$1(date, day, options) {\n const date_ = toDate$3(date, options == null ? void 0 : options.in);\n const currentDay = getISODay$1(date_, options);\n const diff2 = day - currentDay;\n return addDays$1(date_, diff2, options);\n}\nlet ISODayParser$1 = class ISODayParser extends Parser$1 {\n constructor() {\n super(...arguments);\n __publicField(this, \"priority\", 90);\n __publicField(this, \"incompatibleTokens\", [\n \"y\",\n \"Y\",\n \"u\",\n \"q\",\n \"Q\",\n \"M\",\n \"L\",\n \"w\",\n \"d\",\n \"D\",\n \"E\",\n \"e\",\n \"c\",\n \"t\",\n \"T\"\n ]);\n }\n parse(dateString, token2, match5) {\n const valueCallback = (value) => {\n if (value === 0) {\n return 7;\n }\n return value;\n };\n switch (token2) {\n // 2\n case \"i\":\n case \"ii\":\n return parseNDigits$1(token2.length, dateString);\n // 2nd\n case \"io\":\n return match5.ordinalNumber(dateString, { unit: \"day\" });\n // Tue\n case \"iii\":\n return mapValue$1(\n match5.day(dateString, {\n width: \"abbreviated\",\n context: \"formatting\"\n }) || match5.day(dateString, {\n width: \"short\",\n context: \"formatting\"\n }) || match5.day(dateString, {\n width: \"narrow\",\n context: \"formatting\"\n }),\n valueCallback\n );\n // T\n case \"iiiii\":\n return mapValue$1(\n match5.day(dateString, {\n width: \"narrow\",\n context: \"formatting\"\n }),\n valueCallback\n );\n // Tu\n case \"iiiiii\":\n return mapValue$1(\n match5.day(dateString, {\n width: \"short\",\n context: \"formatting\"\n }) || match5.day(dateString, {\n width: \"narrow\",\n context: \"formatting\"\n }),\n valueCallback\n );\n // Tuesday\n case \"iiii\":\n default:\n return mapValue$1(\n match5.day(dateString, {\n width: \"wide\",\n context: \"formatting\"\n }) || match5.day(dateString, {\n width: \"abbreviated\",\n context: \"formatting\"\n }) || match5.day(dateString, {\n width: \"short\",\n context: \"formatting\"\n }) || match5.day(dateString, {\n width: \"narrow\",\n context: \"formatting\"\n }),\n valueCallback\n );\n }\n }\n validate(_date, value) {\n return value >= 1 && value <= 7;\n }\n set(date, _flags, value) {\n date = setISODay$1(date, value);\n date.setHours(0, 0, 0, 0);\n return date;\n }\n};\nlet AMPMParser$1 = class AMPMParser extends Parser$1 {\n constructor() {\n super(...arguments);\n __publicField(this, \"priority\", 80);\n __publicField(this, \"incompatibleTokens\", [\"b\", \"B\", \"H\", \"k\", \"t\", \"T\"]);\n }\n parse(dateString, token2, match5) {\n switch (token2) {\n case \"a\":\n case \"aa\":\n case \"aaa\":\n return match5.dayPeriod(dateString, {\n width: \"abbreviated\",\n context: \"formatting\"\n }) || match5.dayPeriod(dateString, {\n width: \"narrow\",\n context: \"formatting\"\n });\n case \"aaaaa\":\n return match5.dayPeriod(dateString, {\n width: \"narrow\",\n context: \"formatting\"\n });\n case \"aaaa\":\n default:\n return match5.dayPeriod(dateString, {\n width: \"wide\",\n context: \"formatting\"\n }) || match5.dayPeriod(dateString, {\n width: \"abbreviated\",\n context: \"formatting\"\n }) || match5.dayPeriod(dateString, {\n width: \"narrow\",\n context: \"formatting\"\n });\n }\n }\n set(date, _flags, value) {\n date.setHours(dayPeriodEnumToHours$1(value), 0, 0, 0);\n return date;\n }\n};\nlet AMPMMidnightParser$1 = class AMPMMidnightParser extends Parser$1 {\n constructor() {\n super(...arguments);\n __publicField(this, \"priority\", 80);\n __publicField(this, \"incompatibleTokens\", [\"a\", \"B\", \"H\", \"k\", \"t\", \"T\"]);\n }\n parse(dateString, token2, match5) {\n switch (token2) {\n case \"b\":\n case \"bb\":\n case \"bbb\":\n return match5.dayPeriod(dateString, {\n width: \"abbreviated\",\n context: \"formatting\"\n }) || match5.dayPeriod(dateString, {\n width: \"narrow\",\n context: \"formatting\"\n });\n case \"bbbbb\":\n return match5.dayPeriod(dateString, {\n width: \"narrow\",\n context: \"formatting\"\n });\n case \"bbbb\":\n default:\n return match5.dayPeriod(dateString, {\n width: \"wide\",\n context: \"formatting\"\n }) || match5.dayPeriod(dateString, {\n width: \"abbreviated\",\n context: \"formatting\"\n }) || match5.dayPeriod(dateString, {\n width: \"narrow\",\n context: \"formatting\"\n });\n }\n }\n set(date, _flags, value) {\n date.setHours(dayPeriodEnumToHours$1(value), 0, 0, 0);\n return date;\n }\n};\nlet DayPeriodParser$1 = class DayPeriodParser extends Parser$1 {\n constructor() {\n super(...arguments);\n __publicField(this, \"priority\", 80);\n __publicField(this, \"incompatibleTokens\", [\"a\", \"b\", \"t\", \"T\"]);\n }\n parse(dateString, token2, match5) {\n switch (token2) {\n case \"B\":\n case \"BB\":\n case \"BBB\":\n return match5.dayPeriod(dateString, {\n width: \"abbreviated\",\n context: \"formatting\"\n }) || match5.dayPeriod(dateString, {\n width: \"narrow\",\n context: \"formatting\"\n });\n case \"BBBBB\":\n return match5.dayPeriod(dateString, {\n width: \"narrow\",\n context: \"formatting\"\n });\n case \"BBBB\":\n default:\n return match5.dayPeriod(dateString, {\n width: \"wide\",\n context: \"formatting\"\n }) || match5.dayPeriod(dateString, {\n width: \"abbreviated\",\n context: \"formatting\"\n }) || match5.dayPeriod(dateString, {\n width: \"narrow\",\n context: \"formatting\"\n });\n }\n }\n set(date, _flags, value) {\n date.setHours(dayPeriodEnumToHours$1(value), 0, 0, 0);\n return date;\n }\n};\nlet Hour1to12Parser$1 = class Hour1to12Parser extends Parser$1 {\n constructor() {\n super(...arguments);\n __publicField(this, \"priority\", 70);\n __publicField(this, \"incompatibleTokens\", [\"H\", \"K\", \"k\", \"t\", \"T\"]);\n }\n parse(dateString, token2, match5) {\n switch (token2) {\n case \"h\":\n return parseNumericPattern$1(numericPatterns$1.hour12h, dateString);\n case \"ho\":\n return match5.ordinalNumber(dateString, { unit: \"hour\" });\n default:\n return parseNDigits$1(token2.length, dateString);\n }\n }\n validate(_date, value) {\n return value >= 1 && value <= 12;\n }\n set(date, _flags, value) {\n const isPM = date.getHours() >= 12;\n if (isPM && value < 12) {\n date.setHours(value + 12, 0, 0, 0);\n } else if (!isPM && value === 12) {\n date.setHours(0, 0, 0, 0);\n } else {\n date.setHours(value, 0, 0, 0);\n }\n return date;\n }\n};\nlet Hour0to23Parser$1 = class Hour0to23Parser extends Parser$1 {\n constructor() {\n super(...arguments);\n __publicField(this, \"priority\", 70);\n __publicField(this, \"incompatibleTokens\", [\"a\", \"b\", \"h\", \"K\", \"k\", \"t\", \"T\"]);\n }\n parse(dateString, token2, match5) {\n switch (token2) {\n case \"H\":\n return parseNumericPattern$1(numericPatterns$1.hour23h, dateString);\n case \"Ho\":\n return match5.ordinalNumber(dateString, { unit: \"hour\" });\n default:\n return parseNDigits$1(token2.length, dateString);\n }\n }\n validate(_date, value) {\n return value >= 0 && value <= 23;\n }\n set(date, _flags, value) {\n date.setHours(value, 0, 0, 0);\n return date;\n }\n};\nlet Hour0To11Parser$1 = class Hour0To11Parser extends Parser$1 {\n constructor() {\n super(...arguments);\n __publicField(this, \"priority\", 70);\n __publicField(this, \"incompatibleTokens\", [\"h\", \"H\", \"k\", \"t\", \"T\"]);\n }\n parse(dateString, token2, match5) {\n switch (token2) {\n case \"K\":\n return parseNumericPattern$1(numericPatterns$1.hour11h, dateString);\n case \"Ko\":\n return match5.ordinalNumber(dateString, { unit: \"hour\" });\n default:\n return parseNDigits$1(token2.length, dateString);\n }\n }\n validate(_date, value) {\n return value >= 0 && value <= 11;\n }\n set(date, _flags, value) {\n const isPM = date.getHours() >= 12;\n if (isPM && value < 12) {\n date.setHours(value + 12, 0, 0, 0);\n } else {\n date.setHours(value, 0, 0, 0);\n }\n return date;\n }\n};\nlet Hour1To24Parser$1 = class Hour1To24Parser extends Parser$1 {\n constructor() {\n super(...arguments);\n __publicField(this, \"priority\", 70);\n __publicField(this, \"incompatibleTokens\", [\"a\", \"b\", \"h\", \"H\", \"K\", \"t\", \"T\"]);\n }\n parse(dateString, token2, match5) {\n switch (token2) {\n case \"k\":\n return parseNumericPattern$1(numericPatterns$1.hour24h, dateString);\n case \"ko\":\n return match5.ordinalNumber(dateString, { unit: \"hour\" });\n default:\n return parseNDigits$1(token2.length, dateString);\n }\n }\n validate(_date, value) {\n return value >= 1 && value <= 24;\n }\n set(date, _flags, value) {\n const hours2 = value <= 24 ? value % 24 : value;\n date.setHours(hours2, 0, 0, 0);\n return date;\n }\n};\nlet MinuteParser$1 = class MinuteParser extends Parser$1 {\n constructor() {\n super(...arguments);\n __publicField(this, \"priority\", 60);\n __publicField(this, \"incompatibleTokens\", [\"t\", \"T\"]);\n }\n parse(dateString, token2, match5) {\n switch (token2) {\n case \"m\":\n return parseNumericPattern$1(numericPatterns$1.minute, dateString);\n case \"mo\":\n return match5.ordinalNumber(dateString, { unit: \"minute\" });\n default:\n return parseNDigits$1(token2.length, dateString);\n }\n }\n validate(_date, value) {\n return value >= 0 && value <= 59;\n }\n set(date, _flags, value) {\n date.setMinutes(value, 0, 0);\n return date;\n }\n};\nlet SecondParser$1 = class SecondParser extends Parser$1 {\n constructor() {\n super(...arguments);\n __publicField(this, \"priority\", 50);\n __publicField(this, \"incompatibleTokens\", [\"t\", \"T\"]);\n }\n parse(dateString, token2, match5) {\n switch (token2) {\n case \"s\":\n return parseNumericPattern$1(numericPatterns$1.second, dateString);\n case \"so\":\n return match5.ordinalNumber(dateString, { unit: \"second\" });\n default:\n return parseNDigits$1(token2.length, dateString);\n }\n }\n validate(_date, value) {\n return value >= 0 && value <= 59;\n }\n set(date, _flags, value) {\n date.setSeconds(value, 0);\n return date;\n }\n};\nlet FractionOfSecondParser$1 = class FractionOfSecondParser extends Parser$1 {\n constructor() {\n super(...arguments);\n __publicField(this, \"priority\", 30);\n __publicField(this, \"incompatibleTokens\", [\"t\", \"T\"]);\n }\n parse(dateString, token2) {\n const valueCallback = (value) => Math.trunc(value * Math.pow(10, -token2.length + 3));\n return mapValue$1(parseNDigits$1(token2.length, dateString), valueCallback);\n }\n set(date, _flags, value) {\n date.setMilliseconds(value);\n return date;\n }\n};\nlet ISOTimezoneWithZParser$1 = class ISOTimezoneWithZParser extends Parser$1 {\n constructor() {\n super(...arguments);\n __publicField(this, \"priority\", 10);\n __publicField(this, \"incompatibleTokens\", [\"t\", \"T\", \"x\"]);\n }\n parse(dateString, token2) {\n switch (token2) {\n case \"X\":\n return parseTimezonePattern$1(\n timezonePatterns$1.basicOptionalMinutes,\n dateString\n );\n case \"XX\":\n return parseTimezonePattern$1(timezonePatterns$1.basic, dateString);\n case \"XXXX\":\n return parseTimezonePattern$1(\n timezonePatterns$1.basicOptionalSeconds,\n dateString\n );\n case \"XXXXX\":\n return parseTimezonePattern$1(\n timezonePatterns$1.extendedOptionalSeconds,\n dateString\n );\n case \"XXX\":\n default:\n return parseTimezonePattern$1(timezonePatterns$1.extended, dateString);\n }\n }\n set(date, flags, value) {\n if (flags.timestampIsSet) return date;\n return constructFrom$1(\n date,\n date.getTime() - getTimezoneOffsetInMilliseconds$2(date) - value\n );\n }\n};\nlet ISOTimezoneParser$1 = class ISOTimezoneParser extends Parser$1 {\n constructor() {\n super(...arguments);\n __publicField(this, \"priority\", 10);\n __publicField(this, \"incompatibleTokens\", [\"t\", \"T\", \"X\"]);\n }\n parse(dateString, token2) {\n switch (token2) {\n case \"x\":\n return parseTimezonePattern$1(\n timezonePatterns$1.basicOptionalMinutes,\n dateString\n );\n case \"xx\":\n return parseTimezonePattern$1(timezonePatterns$1.basic, dateString);\n case \"xxxx\":\n return parseTimezonePattern$1(\n timezonePatterns$1.basicOptionalSeconds,\n dateString\n );\n case \"xxxxx\":\n return parseTimezonePattern$1(\n timezonePatterns$1.extendedOptionalSeconds,\n dateString\n );\n case \"xxx\":\n default:\n return parseTimezonePattern$1(timezonePatterns$1.extended, dateString);\n }\n }\n set(date, flags, value) {\n if (flags.timestampIsSet) return date;\n return constructFrom$1(\n date,\n date.getTime() - getTimezoneOffsetInMilliseconds$2(date) - value\n );\n }\n};\nlet TimestampSecondsParser$1 = class TimestampSecondsParser extends Parser$1 {\n constructor() {\n super(...arguments);\n __publicField(this, \"priority\", 40);\n __publicField(this, \"incompatibleTokens\", \"*\");\n }\n parse(dateString) {\n return parseAnyDigitsSigned$1(dateString);\n }\n set(date, _flags, value) {\n return [constructFrom$1(date, value * 1e3), { timestampIsSet: true }];\n }\n};\nlet TimestampMillisecondsParser$1 = class TimestampMillisecondsParser extends Parser$1 {\n constructor() {\n super(...arguments);\n __publicField(this, \"priority\", 20);\n __publicField(this, \"incompatibleTokens\", \"*\");\n }\n parse(dateString) {\n return parseAnyDigitsSigned$1(dateString);\n }\n set(date, _flags, value) {\n return [constructFrom$1(date, value), { timestampIsSet: true }];\n }\n};\nconst parsers$1 = {\n G: new EraParser$1(),\n y: new YearParser$1(),\n Y: new LocalWeekYearParser$1(),\n R: new ISOWeekYearParser$1(),\n u: new ExtendedYearParser$1(),\n Q: new QuarterParser$1(),\n q: new StandAloneQuarterParser$1(),\n M: new MonthParser$1(),\n L: new StandAloneMonthParser$1(),\n w: new LocalWeekParser$1(),\n I: new ISOWeekParser$1(),\n d: new DateParser$1(),\n D: new DayOfYearParser$1(),\n E: new DayParser$1(),\n e: new LocalDayParser$1(),\n c: new StandAloneLocalDayParser$1(),\n i: new ISODayParser$1(),\n a: new AMPMParser$1(),\n b: new AMPMMidnightParser$1(),\n B: new DayPeriodParser$1(),\n h: new Hour1to12Parser$1(),\n H: new Hour0to23Parser$1(),\n K: new Hour0To11Parser$1(),\n k: new Hour1To24Parser$1(),\n m: new MinuteParser$1(),\n s: new SecondParser$1(),\n S: new FractionOfSecondParser$1(),\n X: new ISOTimezoneWithZParser$1(),\n x: new ISOTimezoneParser$1(),\n t: new TimestampSecondsParser$1(),\n T: new TimestampMillisecondsParser$1()\n};\nconst formattingTokensRegExp$2 = /[yYQqMLwIdDecihHKkms]o|(\\w)\\1*|''|'(''|[^'])+('|$)|./g;\nconst longFormattingTokensRegExp$3 = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g;\nconst escapedStringRegExp$2 = /^'([^]*?)'?$/;\nconst doubleQuoteRegExp$2 = /''/g;\nconst notWhitespaceRegExp$1 = /\\S/;\nconst unescapedLatinCharacterRegExp$2 = /[a-zA-Z]/;\nfunction parse$3(dateStr, formatStr, referenceDate, options) {\n var _a, _b, _c, _d;\n const invalidDate2 = () => constructFrom$1(referenceDate, NaN);\n const defaultOptions2 = getDefaultOptions$2();\n const locale2 = defaultOptions2.locale ?? enUS$1;\n const firstWeekContainsDate = defaultOptions2.firstWeekContainsDate ?? ((_b = (_a = defaultOptions2.locale) == null ? void 0 : _a.options) == null ? void 0 : _b.firstWeekContainsDate) ?? 1;\n const weekStartsOn = defaultOptions2.weekStartsOn ?? ((_d = (_c = defaultOptions2.locale) == null ? void 0 : _c.options) == null ? void 0 : _d.weekStartsOn) ?? 0;\n const subFnOptions = {\n firstWeekContainsDate,\n weekStartsOn,\n locale: locale2\n };\n const setters = [new DateTimezoneSetter(options == null ? void 0 : options.in, referenceDate)];\n const tokens2 = formatStr.match(longFormattingTokensRegExp$3).map((substring) => {\n const firstCharacter = substring[0];\n if (firstCharacter in longFormatters$1) {\n const longFormatter = longFormatters$1[firstCharacter];\n return longFormatter(substring, locale2.formatLong);\n }\n return substring;\n }).join(\"\").match(formattingTokensRegExp$2);\n const usedTokens = [];\n for (let token2 of tokens2) {\n if (isProtectedWeekYearToken$1(token2)) {\n warnOrThrowProtectedError$1(token2, formatStr, dateStr);\n }\n if (isProtectedDayOfYearToken$1(token2)) {\n warnOrThrowProtectedError$1(token2, formatStr, dateStr);\n }\n const firstCharacter = token2[0];\n const parser = parsers$1[firstCharacter];\n if (parser) {\n const { incompatibleTokens } = parser;\n if (Array.isArray(incompatibleTokens)) {\n const incompatibleToken = usedTokens.find(\n (usedToken) => incompatibleTokens.includes(usedToken.token) || usedToken.token === firstCharacter\n );\n if (incompatibleToken) {\n throw new RangeError(\n `The format string mustn't contain \\`${incompatibleToken.fullToken}\\` and \\`${token2}\\` at the same time`\n );\n }\n } else if (parser.incompatibleTokens === \"*\" && usedTokens.length > 0) {\n throw new RangeError(\n `The format string mustn't contain \\`${token2}\\` and any other token at the same time`\n );\n }\n usedTokens.push({ token: firstCharacter, fullToken: token2 });\n const parseResult = parser.run(\n dateStr,\n token2,\n locale2.match,\n subFnOptions\n );\n if (!parseResult) {\n return invalidDate2();\n }\n setters.push(parseResult.setter);\n dateStr = parseResult.rest;\n } else {\n if (firstCharacter.match(unescapedLatinCharacterRegExp$2)) {\n throw new RangeError(\n \"Format string contains an unescaped latin alphabet character `\" + firstCharacter + \"`\"\n );\n }\n if (token2 === \"''\") {\n token2 = \"'\";\n } else if (firstCharacter === \"'\") {\n token2 = cleanEscapedString$2(token2);\n }\n if (dateStr.indexOf(token2) === 0) {\n dateStr = dateStr.slice(token2.length);\n } else {\n return invalidDate2();\n }\n }\n }\n if (dateStr.length > 0 && notWhitespaceRegExp$1.test(dateStr)) {\n return invalidDate2();\n }\n const uniquePrioritySetters = setters.map((setter) => setter.priority).sort((a2, b2) => b2 - a2).filter((priority, index2, array) => array.indexOf(priority) === index2).map(\n (priority) => setters.filter((setter) => setter.priority === priority).sort((a2, b2) => b2.subPriority - a2.subPriority)\n ).map((setterArray) => setterArray[0]);\n let date = toDate$3(referenceDate, options == null ? void 0 : options.in);\n if (isNaN(+date)) return invalidDate2();\n const flags = {};\n for (const setter of uniquePrioritySetters) {\n if (!setter.validate(date, subFnOptions)) {\n return invalidDate2();\n }\n const result = setter.set(date, flags, subFnOptions);\n if (Array.isArray(result)) {\n date = result[0];\n Object.assign(flags, result[1]);\n } else {\n date = result;\n }\n }\n return date;\n}\nfunction cleanEscapedString$2(input) {\n return input.match(escapedStringRegExp$2)[1].replace(doubleQuoteRegExp$2, \"'\");\n}\nfunction subDays$1(date, amount, options) {\n return addDays$1(date, -amount, options);\n}\nfunction parseISO$1(argument, options) {\n const invalidDate2 = () => constructFrom$1(options == null ? void 0 : options.in, NaN);\n const additionalDigits = 2;\n const dateStrings = splitDateString$2(argument);\n let date;\n if (dateStrings.date) {\n const parseYearResult = parseYear$2(dateStrings.date, additionalDigits);\n date = parseDate$3(parseYearResult.restDateString, parseYearResult.year);\n }\n if (!date || isNaN(+date)) return invalidDate2();\n const timestamp = +date;\n let time = 0;\n let offset3;\n if (dateStrings.time) {\n time = parseTime$2(dateStrings.time);\n if (isNaN(time)) return invalidDate2();\n }\n if (dateStrings.timezone) {\n offset3 = parseTimezone$1(dateStrings.timezone);\n if (isNaN(offset3)) return invalidDate2();\n } else {\n const tmpDate = new Date(timestamp + time);\n const result = toDate$3(0, options == null ? void 0 : options.in);\n result.setFullYear(\n tmpDate.getUTCFullYear(),\n tmpDate.getUTCMonth(),\n tmpDate.getUTCDate()\n );\n result.setHours(\n tmpDate.getUTCHours(),\n tmpDate.getUTCMinutes(),\n tmpDate.getUTCSeconds(),\n tmpDate.getUTCMilliseconds()\n );\n return result;\n }\n return toDate$3(timestamp + time + offset3, options == null ? void 0 : options.in);\n}\nconst patterns$3 = {\n dateTimeDelimiter: /[T ]/,\n timeZoneDelimiter: /[Z ]/i,\n timezone: /([Z+-].*)$/\n};\nconst dateRegex$1 = /^-?(?:(\\d{3})|(\\d{2})(?:-?(\\d{2}))?|W(\\d{2})(?:-?(\\d{1}))?|)$/;\nconst timeRegex$1 = /^(\\d{2}(?:[.,]\\d*)?)(?::?(\\d{2}(?:[.,]\\d*)?))?(?::?(\\d{2}(?:[.,]\\d*)?))?$/;\nconst timezoneRegex$1 = /^([+-])(\\d{2})(?::?(\\d{2}))?$/;\nfunction splitDateString$2(dateString) {\n const dateStrings = {};\n const array = dateString.split(patterns$3.dateTimeDelimiter);\n let timeString;\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$3.timeZoneDelimiter.test(dateStrings.date)) {\n dateStrings.date = dateString.split(patterns$3.timeZoneDelimiter)[0];\n timeString = dateString.substr(\n dateStrings.date.length,\n dateString.length\n );\n }\n }\n if (timeString) {\n const token2 = patterns$3.timezone.exec(timeString);\n if (token2) {\n dateStrings.time = timeString.replace(token2[1], \"\");\n dateStrings.timezone = token2[1];\n } else {\n dateStrings.time = timeString;\n }\n }\n return dateStrings;\n}\nfunction parseYear$2(dateString, additionalDigits) {\n const regex = new RegExp(\n \"^(?:(\\\\d{4}|[+-]\\\\d{\" + (4 + additionalDigits) + \"})|(\\\\d{2}|[+-]\\\\d{\" + (2 + additionalDigits) + \"})$)\"\n );\n const captures = dateString.match(regex);\n if (!captures) return { year: NaN, restDateString: \"\" };\n const year = captures[1] ? parseInt(captures[1]) : null;\n const century = captures[2] ? parseInt(captures[2]) : null;\n return {\n year: century === null ? year : century * 100,\n restDateString: dateString.slice((captures[1] || captures[2]).length)\n };\n}\nfunction parseDate$3(dateString, year) {\n if (year === null) return /* @__PURE__ */ new Date(NaN);\n const captures = dateString.match(dateRegex$1);\n if (!captures) return /* @__PURE__ */ new Date(NaN);\n const isWeekDate = !!captures[4];\n const dayOfYear = parseDateUnit$1(captures[1]);\n const month = parseDateUnit$1(captures[2]) - 1;\n const day = parseDateUnit$1(captures[3]);\n const week = parseDateUnit$1(captures[4]);\n const dayOfWeek = parseDateUnit$1(captures[5]) - 1;\n if (isWeekDate) {\n if (!validateWeekDate$2(year, week, dayOfWeek)) {\n return /* @__PURE__ */ new Date(NaN);\n }\n return dayOfISOWeekYear$2(year, week, dayOfWeek);\n } else {\n const date = /* @__PURE__ */ new Date(0);\n if (!validateDate$2(year, month, day) || !validateDayOfYearDate$2(year, dayOfYear)) {\n return /* @__PURE__ */ new Date(NaN);\n }\n date.setUTCFullYear(year, month, Math.max(dayOfYear, day));\n return date;\n }\n}\nfunction parseDateUnit$1(value) {\n return value ? parseInt(value) : 1;\n}\nfunction parseTime$2(timeString) {\n const captures = timeString.match(timeRegex$1);\n if (!captures) return NaN;\n const hours2 = parseTimeUnit$1(captures[1]);\n const minutes2 = parseTimeUnit$1(captures[2]);\n const seconds2 = parseTimeUnit$1(captures[3]);\n if (!validateTime$2(hours2, minutes2, seconds2)) {\n return NaN;\n }\n return hours2 * millisecondsInHour$1 + minutes2 * millisecondsInMinute$1 + seconds2 * 1e3;\n}\nfunction parseTimeUnit$1(value) {\n return value && parseFloat(value.replace(\",\", \".\")) || 0;\n}\nfunction parseTimezone$1(timezoneString) {\n if (timezoneString === \"Z\") return 0;\n const captures = timezoneString.match(timezoneRegex$1);\n if (!captures) return 0;\n const sign2 = captures[1] === \"+\" ? -1 : 1;\n const hours2 = parseInt(captures[2]);\n const minutes2 = captures[3] && parseInt(captures[3]) || 0;\n if (!validateTimezone$2(hours2, minutes2)) {\n return NaN;\n }\n return sign2 * (hours2 * millisecondsInHour$1 + minutes2 * millisecondsInMinute$1);\n}\nfunction dayOfISOWeekYear$2(isoWeekYear, week, day) {\n const date = /* @__PURE__ */ new Date(0);\n date.setUTCFullYear(isoWeekYear, 0, 4);\n const fourthOfJanuaryDay = date.getUTCDay() || 7;\n const diff2 = (week - 1) * 7 + day + 1 - fourthOfJanuaryDay;\n date.setUTCDate(date.getUTCDate() + diff2);\n return date;\n}\nconst daysInMonths$1 = [31, null, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\nfunction isLeapYearIndex$3(year) {\n return year % 400 === 0 || year % 4 === 0 && year % 100 !== 0;\n}\nfunction validateDate$2(year, month, date) {\n return month >= 0 && month <= 11 && date >= 1 && date <= (daysInMonths$1[month] || (isLeapYearIndex$3(year) ? 29 : 28));\n}\nfunction validateDayOfYearDate$2(year, dayOfYear) {\n return dayOfYear >= 1 && dayOfYear <= (isLeapYearIndex$3(year) ? 366 : 365);\n}\nfunction validateWeekDate$2(_year, week, day) {\n return week >= 1 && week <= 53 && day >= 0 && day <= 6;\n}\nfunction validateTime$2(hours2, minutes2, seconds2) {\n if (hours2 === 24) {\n return minutes2 === 0 && seconds2 === 0;\n }\n return seconds2 >= 0 && seconds2 < 60 && minutes2 >= 0 && minutes2 < 60 && hours2 >= 0 && hours2 < 25;\n}\nfunction validateTimezone$2(_hours, minutes2) {\n return minutes2 >= 0 && minutes2 <= 59;\n}\nfunction setHours$1(date, hours2, options) {\n const _date = toDate$3(date, options == null ? void 0 : options.in);\n _date.setHours(hours2);\n return _date;\n}\nfunction setMinutes$1(date, minutes2, options) {\n const date_ = toDate$3(date, options == null ? void 0 : options.in);\n date_.setMinutes(minutes2);\n return date_;\n}\nconst parseDateOrString = (input) => {\n if (typeof input === \"string\") {\n return parseISODate(input);\n } else {\n return input;\n }\n};\nconst parseISODate = (isoString) => isoString !== void 0 ? parseISO$1(isoString) : void 0;\nconst formatISODate = (date) => date !== void 0 ? formatISO(date, { representation: \"date\" }) : void 0;\nconst formatISODateTimeUTC = (date) => date !== void 0 ? format$2(date, \"yyyy-MM-dd'T'HH:mm:ss\") : void 0;\nconst setHoursAndMinutes = (date, hours2, minutes2) => setMinutes$1(setHours$1(date, hours2), minutes2);\nconst union = (a2, b2) => /* @__PURE__ */ new Set([...Array.from(a2.values()), ...Array.from(b2.values())]);\nconst getMetaValues = (metaKey, metadata) => new Set(\n metadata.filter(({ key }) => key === metaKey).map(({ value }) => value)\n);\nconst getSlotsTagValues = (tag2, session) => session.slots.reduce(\n (tags2, slot) => slot.metadata !== void 0 ? union(tags2, getMetaValues(tag2, slot.metadata)) : tags2,\n /* @__PURE__ */ new Set()\n);\nconst getSessionsTagValues = (tag2, sessions) => sessions.reduce(\n (tags2, session) => union(tags2, getSlotsTagValues(tag2, session)),\n /* @__PURE__ */ new Set()\n);\nconst getTicketTypeTagValues = (tag2, track) => {\n var _a;\n return ((_a = track.ticketTypes) == null ? void 0 : _a.reduce(\n (tags2, ticketType) => ticketType.metadata !== void 0 ? union(tags2, getMetaValues(tag2, ticketType.metadata)) : tags2,\n /* @__PURE__ */ new Set()\n )) || /* @__PURE__ */ new Set();\n};\nconst getTracksTagValues = (tag2, tracks) => tracks.reduce(\n (tags2, track) => union(tags2, getTicketTypeTagValues(tag2, track)),\n /* @__PURE__ */ new Set()\n);\nconst EVENT_PATH = \"EVENT_PATH\";\nconst getEventPathValues = (tracks, sessions) => {\n let eventPaths = /* @__PURE__ */ new Set();\n if (tracks !== void 0) {\n eventPaths = getTracksTagValues(EVENT_PATH, tracks);\n }\n if (sessions !== void 0) {\n eventPaths = union(eventPaths, getSessionsTagValues(EVENT_PATH, sessions));\n }\n return eventPaths;\n};\nfunction isValidMetaTag(metaTag) {\n return typeof metaTag.key === \"string\" && typeof metaTag.value === \"string\" && metaTag.key.length > 0 && metaTag.value.length > 0;\n}\nlet random = (bytes) => crypto.getRandomValues(new Uint8Array(bytes));\nlet customRandom = (alphabet2, defaultSize, getRandom) => {\n let mask = (2 << Math.log2(alphabet2.length - 1)) - 1;\n let step = -~(1.6 * mask * defaultSize / alphabet2.length);\n return (size = defaultSize) => {\n let id = \"\";\n while (true) {\n let bytes = getRandom(step);\n let j2 = step | 0;\n while (j2--) {\n id += alphabet2[bytes[j2] & mask] || \"\";\n if (id.length >= size) return id;\n }\n }\n };\n};\nlet customAlphabet = (alphabet2, size = 21) => customRandom(alphabet2, size | 0, random);\nconst alphabet = \"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz\";\nconst idGenerator = customAlphabet(alphabet, 12);\nconst isFieldContainer = (field) => field.type === \"page\" || field.type === \"section\";\nconst isInfoField = (field) => field.type === \"info\";\nconst isDependTarget = (field) => field.type === \"boolean\" || field.type === \"session_booking\" || field.type === \"room_block\" || hasChoices(field);\nconst isRoomBlockField$1 = (field) => field.type === \"room_block\";\nconst hasTracksSelected = (field) => field.tracks !== void 0 && field.tracks.length > 0;\nconst hasIncludeRoomTypes = (field) => field.includeRoomTypes !== void 0 && field.includeRoomTypes.length > 0;\nconst hasIncludeSlots = (field) => field.includeSlots !== void 0 && field.includeSlots.length > 0;\nfunction findField(fields, name) {\n if (!fields) {\n return null;\n }\n for (const theField of fields) {\n if (theField.name === name) {\n return theField;\n }\n if (isFieldContainer(theField)) {\n const found2 = findField(theField.fields, name);\n if (found2) return found2;\n }\n }\n return null;\n}\nconst findFieldWithContainer = (fields, name) => {\n if (!fields) {\n return {};\n }\n for (const theField of fields) {\n if (theField.name === name) {\n return { field: theField, container: fields };\n }\n if (isFieldContainer(theField)) {\n const found2 = findFieldWithContainer(theField.fields, name);\n if (found2.field) return found2;\n }\n }\n return {};\n};\nfunction findFieldWithParent(fields, name) {\n var _a;\n for (const theField of fields) {\n if (theField.name === name) {\n return { field: theField };\n }\n if (isFieldContainer(theField) && ((_a = theField.fields) == null ? void 0 : _a.length) > 0) {\n const found2 = findFieldWithParent(theField.fields, name);\n if (found2.field) {\n if (!found2.parent) {\n found2.parent = theField;\n }\n return found2;\n }\n }\n }\n return {};\n}\nfunction flatFields$1(container) {\n if (!container.fields) {\n return [];\n }\n const result = [];\n container.fields.forEach((field) => {\n result.push(field);\n if (isFieldContainer(field)) {\n result.push(...flatFields$1(field));\n }\n });\n return result;\n}\nconst getFieldForSession = (form, session) => flatFields$1(form).find(\n (f2) => f2.type === \"session_booking\" && f2.session === session.id\n);\nconst hasRoomBlockField = (form, roomBlock) => flatFields$1(form).some(\n (f2) => f2.type === \"room_block\" && f2.roomBlockId === roomBlock.id\n);\nfunction getSelectedItems$2(state) {\n const selectedPage = state.fields.find((p2) => p2.name === state.selectedPageName) || state.fields[0];\n const selectedField = state.selectedFieldName !== void 0 ? findField(state.fields, state.selectedFieldName) : null;\n return { selectedPage, selectedField };\n}\nconst hasChoices = (field) => \"choices\" in field && field.choices !== void 0 && field.choices !== null && field.choices.length > 1;\nconst isChoiceWithId = (choice) => choice.id !== void 0;\nconst normalizedChoice = (choice) => {\n if (Array.isArray(choice)) {\n return {\n label: choice[0],\n value: choice[1]\n };\n } else if (typeof choice === \"string\") {\n return {\n label: choice,\n value: choice\n };\n } else if (choice.value === void 0 || choice.value === null || choice.value === \"\") {\n return {\n ...choice,\n value: choice.label\n };\n } else {\n return choice;\n }\n};\nconst normalizedChoiceWithId = (choiceOption) => {\n const choice = normalizedChoice(choiceOption);\n if (isChoiceWithId(choice)) {\n return choice;\n } else {\n return {\n ...choice,\n id: idGenerator()\n };\n }\n};\nconst normalizedFieldChoices = (field) => {\n if (!(\"choices\" in field) || !field.choices) {\n return [];\n } else {\n return field.choices.map(normalizedChoiceWithId);\n }\n};\nconst hasTracks = (field) => \"tracks\" in field && field.tracks !== void 0 && (field == null ? void 0 : field.tracks.length) > 0;\nconst getDependTargets = (form) => flatFields$1(form).filter(isDependTarget);\nconst getFieldDependTargets = (form, field) => getDependTargets(form).filter((f2) => f2.name !== field.name);\nconst getDependTargetsWithEventPath = (form, field, sessions, tracks) => {\n const fieldTargets = getFieldDependTargets(form, field);\n const eventPaths = getEventPathValues(tracks, sessions);\n if (sessions !== void 0 && eventPaths.size > 0) {\n return [\"EVENT_PATH\", ...fieldTargets];\n } else {\n return fieldTargets;\n }\n};\nconst getDependTarget = (form, name) => getDependTargets(form).find((f2) => f2.name === name);\nconst targetName = (target) => target === \"EVENT_PATH\" ? \"EVENT_PATH\" : target.name;\nconst isDependsField = (target) => target !== \"EVENT_PATH\";\nconst getTracksVisibilitySource = (field, form) => {\n const { parent } = findFieldWithParent(form.fields, field.name);\n if (parent === void 0) {\n return hasTracks(field) ? field : void 0;\n }\n const ancestorSource = getTracksVisibilitySource(parent, form);\n if (ancestorSource !== void 0) {\n return ancestorSource;\n } else {\n return hasTracks(parent) ? parent : void 0;\n }\n};\nconst isTrackVisible = (field, track) => {\n var _a;\n return field.tracks === void 0 || field.tracks.length === 0 || ((_a = field == null ? void 0 : field.tracks) == null ? void 0 : _a.includes(track.id));\n};\nconst containsAttendeeReference = (field) => field.fields.some(\n (f2) => f2.type === \"attendee_reference\" || isFieldContainer(f2) && containsAttendeeReference(f2)\n);\nconst isAttendeeReferenceContainer = (field) => isFieldContainer(field) && containsAttendeeReference(field);\nconst protectFromHideOrDelete = (field, settings) => settings.protectAttendeeReferenceFields && (isAttendeeReferenceContainer(field) || field.type === \"attendee_reference\");\nfunction numberToCents(numericPrice2) {\n if (Number.isInteger(numericPrice2)) {\n return numericPrice2 * 100;\n }\n return Math.round(numericPrice2 * 100);\n}\nfunction formatCents(cents) {\n const dollars = cents / 100;\n if (Number.isInteger(dollars)) {\n return dollars.toLocaleString();\n } else {\n return dollars.toFixed(2).toLocaleString();\n }\n}\nfunction priceWithSymbol({\n currency,\n price\n}) {\n const numericPrice2 = Number(price);\n if (isNaN(numericPrice2)) {\n return \"\";\n }\n return `${currency}${formatCents(numericPrice2)}`;\n}\nfunction n(n2) {\n for (var r2 = arguments.length, t2 = Array(r2 > 1 ? r2 - 1 : 0), e = 1; e < r2; e++) t2[e - 1] = arguments[e];\n if (\"production\" !== process.env.NODE_ENV) {\n var i = Y[n2], o2 = i ? \"function\" == typeof i ? i.apply(null, t2) : i : \"unknown error nr: \" + n2;\n throw Error(\"[Immer] \" + o2);\n }\n throw Error(\"[Immer] minified error nr: \" + n2 + (t2.length ? \" \" + t2.map(function(n3) {\n return \"'\" + n3 + \"'\";\n }).join(\",\") : \"\") + \". Find the full error at: https://bit.ly/3cXEKWf\");\n}\nfunction r$1(n2) {\n return !!n2 && !!n2[Q];\n}\nfunction t(n2) {\n var r2;\n return !!n2 && (function(n3) {\n if (!n3 || \"object\" != typeof n3) return false;\n var r3 = Object.getPrototypeOf(n3);\n if (null === r3) return true;\n var t2 = Object.hasOwnProperty.call(r3, \"constructor\") && r3.constructor;\n return t2 === Object || \"function\" == typeof t2 && Function.toString.call(t2) === Z;\n }(n2) || Array.isArray(n2) || !!n2[L] || !!(null === (r2 = n2.constructor) || void 0 === r2 ? void 0 : r2[L]) || s(n2) || v(n2));\n}\nfunction i$1(n2, r2, t2) {\n void 0 === t2 && (t2 = false), 0 === o(n2) ? (t2 ? Object.keys : nn)(n2).forEach(function(e) {\n t2 && \"symbol\" == typeof e || r2(e, n2[e], n2);\n }) : n2.forEach(function(t3, e) {\n return r2(e, t3, n2);\n });\n}\nfunction o(n2) {\n var r2 = n2[Q];\n return r2 ? r2.i > 3 ? r2.i - 4 : r2.i : Array.isArray(n2) ? 1 : s(n2) ? 2 : v(n2) ? 3 : 0;\n}\nfunction u(n2, r2) {\n return 2 === o(n2) ? n2.has(r2) : Object.prototype.hasOwnProperty.call(n2, r2);\n}\nfunction a(n2, r2) {\n return 2 === o(n2) ? n2.get(r2) : n2[r2];\n}\nfunction f(n2, r2, t2) {\n var e = o(n2);\n 2 === e ? n2.set(r2, t2) : 3 === e ? n2.add(t2) : n2[r2] = t2;\n}\nfunction c(n2, r2) {\n return n2 === r2 ? 0 !== n2 || 1 / n2 == 1 / r2 : n2 != n2 && r2 != r2;\n}\nfunction s(n2) {\n return X && n2 instanceof Map;\n}\nfunction v(n2) {\n return q && n2 instanceof Set;\n}\nfunction p(n2) {\n return n2.o || n2.t;\n}\nfunction l(n2) {\n if (Array.isArray(n2)) return Array.prototype.slice.call(n2);\n var r2 = rn(n2);\n delete r2[Q];\n for (var t2 = nn(r2), e = 0; e < t2.length; e++) {\n var i = t2[e], o2 = r2[i];\n false === o2.writable && (o2.writable = true, o2.configurable = true), (o2.get || o2.set) && (r2[i] = { configurable: true, writable: true, enumerable: o2.enumerable, value: n2[i] });\n }\n return Object.create(Object.getPrototypeOf(n2), r2);\n}\nfunction d(n2, e) {\n return void 0 === e && (e = false), y(n2) || r$1(n2) || !t(n2) || (o(n2) > 1 && (n2.set = n2.add = n2.clear = n2.delete = h), Object.freeze(n2), e && i$1(n2, function(n3, r2) {\n return d(r2, true);\n }, true)), n2;\n}\nfunction h() {\n n(2);\n}\nfunction y(n2) {\n return null == n2 || \"object\" != typeof n2 || Object.isFrozen(n2);\n}\nfunction b(r2) {\n var t2 = tn[r2];\n return t2 || n(18, r2), t2;\n}\nfunction _() {\n return \"production\" === process.env.NODE_ENV || U || n(0), U;\n}\nfunction j(n2, r2) {\n r2 && (b(\"Patches\"), n2.u = [], n2.s = [], n2.v = r2);\n}\nfunction g(n2) {\n O(n2), n2.p.forEach(S), n2.p = null;\n}\nfunction O(n2) {\n n2 === U && (U = n2.l);\n}\nfunction w(n2) {\n return U = { p: [], l: U, h: n2, m: true, _: 0 };\n}\nfunction S(n2) {\n var r2 = n2[Q];\n 0 === r2.i || 1 === r2.i ? r2.j() : r2.g = true;\n}\nfunction P(r2, e) {\n e._ = e.p.length;\n var i = e.p[0], o2 = void 0 !== r2 && r2 !== i;\n return e.h.O || b(\"ES5\").S(e, r2, o2), o2 ? (i[Q].P && (g(e), n(4)), t(r2) && (r2 = M(e, r2), e.l || x(e, r2)), e.u && b(\"Patches\").M(i[Q].t, r2, e.u, e.s)) : r2 = M(e, i, []), g(e), e.u && e.v(e.u, e.s), r2 !== H ? r2 : void 0;\n}\nfunction M(n2, r2, t2) {\n if (y(r2)) return r2;\n var e = r2[Q];\n if (!e) return i$1(r2, function(i, o3) {\n return A(n2, e, r2, i, o3, t2);\n }, true), r2;\n if (e.A !== n2) return r2;\n if (!e.P) return x(n2, e.t, true), e.t;\n if (!e.I) {\n e.I = true, e.A._--;\n var o2 = 4 === e.i || 5 === e.i ? e.o = l(e.k) : e.o, u2 = o2, a2 = false;\n 3 === e.i && (u2 = new Set(o2), o2.clear(), a2 = true), i$1(u2, function(r3, i) {\n return A(n2, e, o2, r3, i, t2, a2);\n }), x(n2, o2, false), t2 && n2.u && b(\"Patches\").N(e, t2, n2.u, n2.s);\n }\n return e.o;\n}\nfunction A(e, i, o2, a2, c2, s2, v2) {\n if (\"production\" !== process.env.NODE_ENV && c2 === o2 && n(5), r$1(c2)) {\n var p2 = M(e, c2, s2 && i && 3 !== i.i && !u(i.R, a2) ? s2.concat(a2) : void 0);\n if (f(o2, a2, p2), !r$1(p2)) return;\n e.m = false;\n } else v2 && o2.add(c2);\n if (t(c2) && !y(c2)) {\n if (!e.h.D && e._ < 1) return;\n M(e, c2), i && i.A.l || x(e, c2);\n }\n}\nfunction x(n2, r2, t2) {\n void 0 === t2 && (t2 = false), !n2.l && n2.h.D && n2.m && d(r2, t2);\n}\nfunction z(n2, r2) {\n var t2 = n2[Q];\n return (t2 ? p(t2) : n2)[r2];\n}\nfunction I(n2, r2) {\n if (r2 in n2) for (var t2 = Object.getPrototypeOf(n2); t2; ) {\n var e = Object.getOwnPropertyDescriptor(t2, r2);\n if (e) return e;\n t2 = Object.getPrototypeOf(t2);\n }\n}\nfunction k(n2) {\n n2.P || (n2.P = true, n2.l && k(n2.l));\n}\nfunction E(n2) {\n n2.o || (n2.o = l(n2.t));\n}\nfunction N(n2, r2, t2) {\n var e = s(r2) ? b(\"MapSet\").F(r2, t2) : v(r2) ? b(\"MapSet\").T(r2, t2) : n2.O ? function(n3, r3) {\n var t3 = Array.isArray(n3), e2 = { i: t3 ? 1 : 0, A: r3 ? r3.A : _(), P: false, I: false, R: {}, l: r3, t: n3, k: null, o: null, j: null, C: false }, i = e2, o2 = en;\n t3 && (i = [e2], o2 = on);\n var u2 = Proxy.revocable(i, o2), a2 = u2.revoke, f2 = u2.proxy;\n return e2.k = f2, e2.j = a2, f2;\n }(r2, t2) : b(\"ES5\").J(r2, t2);\n return (t2 ? t2.A : _()).p.push(e), e;\n}\nfunction R(e) {\n return r$1(e) || n(22, e), function n2(r2) {\n if (!t(r2)) return r2;\n var e2, u2 = r2[Q], c2 = o(r2);\n if (u2) {\n if (!u2.P && (u2.i < 4 || !b(\"ES5\").K(u2))) return u2.t;\n u2.I = true, e2 = D(r2, c2), u2.I = false;\n } else e2 = D(r2, c2);\n return i$1(e2, function(r3, t2) {\n u2 && a(u2.t, r3) === t2 || f(e2, r3, n2(t2));\n }), 3 === c2 ? new Set(e2) : e2;\n }(e);\n}\nfunction D(n2, r2) {\n switch (r2) {\n case 2:\n return new Map(n2);\n case 3:\n return Array.from(n2);\n }\n return l(n2);\n}\nvar G, U, W = \"undefined\" != typeof Symbol && \"symbol\" == typeof Symbol(\"x\"), X = \"undefined\" != typeof Map, q = \"undefined\" != typeof Set, B = \"undefined\" != typeof Proxy && void 0 !== Proxy.revocable && \"undefined\" != typeof Reflect, H = W ? Symbol.for(\"immer-nothing\") : ((G = {})[\"immer-nothing\"] = true, G), L = W ? Symbol.for(\"immer-draftable\") : \"__$immer_draftable\", Q = W ? Symbol.for(\"immer-state\") : \"__$immer_state\", Y = { 0: \"Illegal state\", 1: \"Immer drafts cannot have computed properties\", 2: \"This object has been frozen and should not be mutated\", 3: function(n2) {\n return \"Cannot use a proxy that has been revoked. Did you pass an object from inside an immer function to an async process? \" + n2;\n}, 4: \"An immer producer returned a new value *and* modified its draft. Either return a new value *or* modify the draft.\", 5: \"Immer forbids circular references\", 6: \"The first or second argument to `produce` must be a function\", 7: \"The third argument to `produce` must be a function or undefined\", 8: \"First argument to `createDraft` must be a plain object, an array, or an immerable object\", 9: \"First argument to `finishDraft` must be a draft returned by `createDraft`\", 10: \"The given draft is already finalized\", 11: \"Object.defineProperty() cannot be used on an Immer draft\", 12: \"Object.setPrototypeOf() cannot be used on an Immer draft\", 13: \"Immer only supports deleting array indices\", 14: \"Immer only supports setting array indices and the 'length' property\", 15: function(n2) {\n return \"Cannot apply patch, path doesn't resolve: \" + n2;\n}, 16: 'Sets cannot have \"replace\" patches.', 17: function(n2) {\n return \"Unsupported patch operation: \" + n2;\n}, 18: function(n2) {\n return \"The plugin for '\" + n2 + \"' has not been loaded into Immer. To enable the plugin, import and call `enable\" + n2 + \"()` when initializing your application.\";\n}, 20: \"Cannot use proxies if Proxy, Proxy.revocable or Reflect are not available\", 21: function(n2) {\n return \"produce can only be called on things that are draftable: plain objects, arrays, Map, Set or classes that are marked with '[immerable]: true'. Got '\" + n2 + \"'\";\n}, 22: function(n2) {\n return \"'current' expects a draft, got: \" + n2;\n}, 23: function(n2) {\n return \"'original' expects a draft, got: \" + n2;\n}, 24: \"Patching reserved attributes like __proto__, prototype and constructor is not allowed\" }, Z = \"\" + Object.prototype.constructor, nn = \"undefined\" != typeof Reflect && Reflect.ownKeys ? Reflect.ownKeys : void 0 !== Object.getOwnPropertySymbols ? function(n2) {\n return Object.getOwnPropertyNames(n2).concat(Object.getOwnPropertySymbols(n2));\n} : Object.getOwnPropertyNames, rn = Object.getOwnPropertyDescriptors || function(n2) {\n var r2 = {};\n return nn(n2).forEach(function(t2) {\n r2[t2] = Object.getOwnPropertyDescriptor(n2, t2);\n }), r2;\n}, tn = {}, en = { get: function(n2, r2) {\n if (r2 === Q) return n2;\n var e = p(n2);\n if (!u(e, r2)) return function(n3, r3, t2) {\n var e2, i2 = I(r3, t2);\n return i2 ? \"value\" in i2 ? i2.value : null === (e2 = i2.get) || void 0 === e2 ? void 0 : e2.call(n3.k) : void 0;\n }(n2, e, r2);\n var i = e[r2];\n return n2.I || !t(i) ? i : i === z(n2.t, r2) ? (E(n2), n2.o[r2] = N(n2.A.h, i, n2)) : i;\n}, has: function(n2, r2) {\n return r2 in p(n2);\n}, ownKeys: function(n2) {\n return Reflect.ownKeys(p(n2));\n}, set: function(n2, r2, t2) {\n var e = I(p(n2), r2);\n if (null == e ? void 0 : e.set) return e.set.call(n2.k, t2), true;\n if (!n2.P) {\n var i = z(p(n2), r2), o2 = null == i ? void 0 : i[Q];\n if (o2 && o2.t === t2) return n2.o[r2] = t2, n2.R[r2] = false, true;\n if (c(t2, i) && (void 0 !== t2 || u(n2.t, r2))) return true;\n E(n2), k(n2);\n }\n return n2.o[r2] === t2 && (void 0 !== t2 || r2 in n2.o) || Number.isNaN(t2) && Number.isNaN(n2.o[r2]) || (n2.o[r2] = t2, n2.R[r2] = true), true;\n}, deleteProperty: function(n2, r2) {\n return void 0 !== z(n2.t, r2) || r2 in n2.t ? (n2.R[r2] = false, E(n2), k(n2)) : delete n2.R[r2], n2.o && delete n2.o[r2], true;\n}, getOwnPropertyDescriptor: function(n2, r2) {\n var t2 = p(n2), e = Reflect.getOwnPropertyDescriptor(t2, r2);\n return e ? { writable: true, configurable: 1 !== n2.i || \"length\" !== r2, enumerable: e.enumerable, value: t2[r2] } : e;\n}, defineProperty: function() {\n n(11);\n}, getPrototypeOf: function(n2) {\n return Object.getPrototypeOf(n2.t);\n}, setPrototypeOf: function() {\n n(12);\n} }, on = {};\ni$1(en, function(n2, r2) {\n on[n2] = function() {\n return arguments[0] = arguments[0][0], r2.apply(this, arguments);\n };\n}), on.deleteProperty = function(r2, t2) {\n return \"production\" !== process.env.NODE_ENV && isNaN(parseInt(t2)) && n(13), on.set.call(this, r2, t2, void 0);\n}, on.set = function(r2, t2, e) {\n return \"production\" !== process.env.NODE_ENV && \"length\" !== t2 && isNaN(parseInt(t2)) && n(14), en.set.call(this, r2[0], t2, e, r2[0]);\n};\nvar un = function() {\n function e(r2) {\n var e2 = this;\n this.O = B, this.D = true, this.produce = function(r3, i2, o2) {\n if (\"function\" == typeof r3 && \"function\" != typeof i2) {\n var u2 = i2;\n i2 = r3;\n var a2 = e2;\n return function(n2) {\n var r4 = this;\n void 0 === n2 && (n2 = u2);\n for (var t2 = arguments.length, e3 = Array(t2 > 1 ? t2 - 1 : 0), o3 = 1; o3 < t2; o3++) e3[o3 - 1] = arguments[o3];\n return a2.produce(n2, function(n3) {\n var t3;\n return (t3 = i2).call.apply(t3, [r4, n3].concat(e3));\n });\n };\n }\n var f2;\n if (\"function\" != typeof i2 && n(6), void 0 !== o2 && \"function\" != typeof o2 && n(7), t(r3)) {\n var c2 = w(e2), s2 = N(e2, r3, void 0), v2 = true;\n try {\n f2 = i2(s2), v2 = false;\n } finally {\n v2 ? g(c2) : O(c2);\n }\n return \"undefined\" != typeof Promise && f2 instanceof Promise ? f2.then(function(n2) {\n return j(c2, o2), P(n2, c2);\n }, function(n2) {\n throw g(c2), n2;\n }) : (j(c2, o2), P(f2, c2));\n }\n if (!r3 || \"object\" != typeof r3) {\n if (void 0 === (f2 = i2(r3)) && (f2 = r3), f2 === H && (f2 = void 0), e2.D && d(f2, true), o2) {\n var p2 = [], l2 = [];\n b(\"Patches\").M(r3, f2, p2, l2), o2(p2, l2);\n }\n return f2;\n }\n n(21, r3);\n }, this.produceWithPatches = function(n2, r3) {\n if (\"function\" == typeof n2) return function(r4) {\n for (var t3 = arguments.length, i3 = Array(t3 > 1 ? t3 - 1 : 0), o3 = 1; o3 < t3; o3++) i3[o3 - 1] = arguments[o3];\n return e2.produceWithPatches(r4, function(r5) {\n return n2.apply(void 0, [r5].concat(i3));\n });\n };\n var t2, i2, o2 = e2.produce(n2, r3, function(n3, r4) {\n t2 = n3, i2 = r4;\n });\n return \"undefined\" != typeof Promise && o2 instanceof Promise ? o2.then(function(n3) {\n return [n3, t2, i2];\n }) : [o2, t2, i2];\n }, \"boolean\" == typeof (null == r2 ? void 0 : r2.useProxies) && this.setUseProxies(r2.useProxies), \"boolean\" == typeof (null == r2 ? void 0 : r2.autoFreeze) && this.setAutoFreeze(r2.autoFreeze);\n }\n var i = e.prototype;\n return i.createDraft = function(e2) {\n t(e2) || n(8), r$1(e2) && (e2 = R(e2));\n var i2 = w(this), o2 = N(this, e2, void 0);\n return o2[Q].C = true, O(i2), o2;\n }, i.finishDraft = function(r2, t2) {\n var e2 = r2 && r2[Q];\n \"production\" !== process.env.NODE_ENV && (e2 && e2.C || n(9), e2.I && n(10));\n var i2 = e2.A;\n return j(i2, t2), P(void 0, i2);\n }, i.setAutoFreeze = function(n2) {\n this.D = n2;\n }, i.setUseProxies = function(r2) {\n r2 && !B && n(20), this.O = r2;\n }, i.applyPatches = function(n2, t2) {\n var e2;\n for (e2 = t2.length - 1; e2 >= 0; e2--) {\n var i2 = t2[e2];\n if (0 === i2.path.length && \"replace\" === i2.op) {\n n2 = i2.value;\n break;\n }\n }\n e2 > -1 && (t2 = t2.slice(e2 + 1));\n var o2 = b(\"Patches\").$;\n return r$1(n2) ? o2(n2, t2) : this.produce(n2, function(n3) {\n return o2(n3, t2);\n });\n }, e;\n}(), an = new un(), fn = an.produce;\nan.produceWithPatches.bind(an);\nan.setAutoFreeze.bind(an);\nan.setUseProxies.bind(an);\nan.applyPatches.bind(an);\nan.createDraft.bind(an);\nan.finishDraft.bind(an);\nconst roomBlockDefaults = {\n collectPayment: true,\n hidePrices: false\n};\nconst initialApplicationState = {\n isDirty: false\n};\nconst roomTypeDefaults = {\n name: \"Standard room\",\n nights: [],\n minOccupancy: 1,\n maxOccupancy: 2,\n price: 1e4\n};\nconst reducer$5 = (state, action) => {\n return fn(state, ({ roomBlock, application }) => {\n var _a;\n switch (action.type) {\n case \"add_room_type\":\n const roomType = initializeRoomType(roomBlock, action.payload);\n roomBlock.roomTypes.push({\n ...roomType,\n nights: getRoomTypeNights(roomType, roomBlock)\n });\n application.isDirty = true;\n break;\n case \"update_room_type\":\n roomBlock.roomTypes = roomBlock.roomTypes.map((roomType2) => {\n if (action.id === roomType2.id) {\n return { ...roomType2, ...action.payload };\n } else {\n return roomType2;\n }\n });\n application.isDirty = true;\n break;\n case \"delete_room_type\":\n roomBlock.roomTypes = roomBlock.roomTypes.filter(\n (r2) => r2.id !== action.id\n );\n if (((_a = application.selectedRoomType) == null ? void 0 : _a.id) === action.id) {\n application.selectedRoomType = void 0;\n }\n application.isDirty = true;\n break;\n case \"set_dates\":\n roomBlock.startDate = action.payload.startDate;\n roomBlock.endDate = action.payload.endDate;\n if (roomBlock.startDate && roomBlock.endDate) {\n roomBlock.roomTypes = setRoomTypeNights(roomBlock).roomTypes;\n }\n application.isDirty = true;\n break;\n case \"set_name\":\n roomBlock.name = action.payload.name;\n application.isDirty = true;\n break;\n case \"update_room_block\":\n Object.assign(roomBlock, action.payload);\n application.isDirty = true;\n break;\n case \"update_availability\":\n const roomNight = getRoomNight(roomBlock, action.id);\n if (!roomNight) {\n console.error(`Unable to find a room night with id ${action.id}`);\n return;\n }\n roomNight.availability = action.availability;\n application.isDirty = true;\n break;\n case \"select_room_type\":\n application.selectedRoomType = action.payload;\n break;\n case \"set_is_dirty\":\n application.isDirty = action.isDirty;\n break;\n default:\n throw new Error(\"Unknown action\");\n }\n });\n};\nconst initializeState$1 = (state) => {\n return fn(state, ({ roomBlock }) => {\n setRoomTypeNights(roomBlock);\n });\n};\nconst getSortedItems = (items) => items.slice().sort((a2, b2) => a2.sort - b2.sort);\nconst getNewSort = (items, fromIndex, toIndex) => {\n if (toIndex >= items.length - 1) {\n return items[items.length - 1].sort + 1;\n }\n const startIndex = fromIndex > toIndex ? toIndex - 1 : toIndex;\n const endIndex = fromIndex > toIndex ? toIndex : toIndex + 1;\n const startSort = toIndex === 0 ? 0 : items[startIndex].sort;\n const endSort = items[endIndex].sort;\n return (startSort + endSort) / 2;\n};\nconst getNextSort = (items) => {\n if (items === void 0) {\n return 1;\n } else {\n return Math.max(0, ...items.map((item) => item.sort)) + 1;\n }\n};\nconst DEFAULT_AVAILABILITY = 1;\nconst initializeRoomNight = (roomType, date) => ({\n date,\n id: idGenerator(),\n roomTypeId: roomType.id,\n availability: DEFAULT_AVAILABILITY\n});\nconst getRoomNight$1 = (roomType, date) => roomType.nights.find((rn2) => isSameDay$2(date, rn2.date));\nconst getRoomTypeNights = (roomType, roomBlock) => getRoomBlockDateRange(roomBlock).map((date) => {\n const existingNight = getRoomNight$1(roomType, date);\n if (existingNight) {\n return { ...existingNight, date };\n } else {\n return initializeRoomNight(roomType, date);\n }\n});\nfunction setRoomTypeNights(roomBlock) {\n if (!isValidRoomBlock(roomBlock)) {\n throw new Error(\"Invalid room block\");\n }\n return {\n ...roomBlock,\n roomTypes: roomBlock.roomTypes.map((roomType) => ({\n ...roomType,\n nights: getRoomTypeNights(roomType, roomBlock)\n }))\n };\n}\nconst getRoomTypes = (roomBlock) => \"roomTypes\" in roomBlock ? roomBlock.roomTypes : [];\nconst initializeRoomType = (roomBlock, roomType) => ({\n ...roomTypeDefaults,\n name: `Room type ${getRoomTypes(roomBlock).length + 1}`,\n sort: getNextSort(getRoomTypes(roomBlock)),\n id: idGenerator(),\n ...roomType\n});\nconst initializeRoomBlock = (roomBlockInput) => {\n return setRoomTypeNights({\n ...roomBlockInput,\n roomTypes: [initializeRoomType(roomBlockInput)]\n });\n};\nconst defaultRoomBlockDates = (formSettings) => {\n console.log(\"Default dates\", formSettings);\n if (isSameDay$2(formSettings.startDate, formSettings.endDate)) {\n return {\n startDate: formSettings.startDate,\n endDate: addDays$1(formSettings.endDate, 1)\n };\n } else {\n return {\n startDate: formSettings.startDate,\n endDate: formSettings.endDate\n };\n }\n};\nconst getRoomBlockDateRange = (roomBlock) => eachDayOfInterval({\n start: roomBlock.startDate,\n end: subDays$1(roomBlock.endDate, 1)\n});\nconst getBlockNightsCount = (roomBlock) => getRoomBlockDateRange(roomBlock).length;\nconst getBookingNightsCount = (roomBooking) => eachDayOfInterval({\n start: roomBooking.checkIn,\n end: subDays$1(roomBooking.checkOut, 1)\n}).length;\nconst hasRoomTypes = (rb) => rb.roomTypes.length > 0;\nconst isValidRoomBlock = (rb) => hasRoomTypes(rb);\nconst canDeleteRoomBlock = (rb, form) => rb.numberBooked === 0 && !hasRoomBlockField(form, rb);\nfunction getSortedRoomBlocks(roomBlocks) {\n return [...roomBlocks].sort((a2, b2) => a2.name.localeCompare(b2.name));\n}\nconst getIncludedRoomTypes = (roomBlock, formField) => {\n return formField.includeRoomTypes === void 0 ? roomBlock.roomTypes : roomBlock.roomTypes.filter(\n (rt) => {\n var _a;\n return (_a = formField.includeRoomTypes) == null ? void 0 : _a.includes(rt.id);\n }\n );\n};\nconst getIncludedRoomTypesWithOccupancy = (roomBlock, formField) => {\n const result = [];\n const roomTypes = getIncludedRoomTypes(roomBlock, formField);\n for (const roomType of roomTypes) {\n for (let i = roomType.minOccupancy; i <= roomType.maxOccupancy; i++) {\n result.push({ roomType, occupancy: i });\n }\n }\n return result;\n};\nfunction getRoomNight(roomBlock, roomNightId) {\n for (const roomType of roomBlock.roomTypes) {\n const night = roomType.nights.find((n2) => n2.id === roomNightId);\n if (night) {\n return night;\n }\n }\n}\nconst getPriceOverride$1 = (formField, roomNight) => formField.priceOverrides !== void 0 ? formField.priceOverrides[roomNight.id] : void 0;\nconst getOccupancyPriceOverride = (formField, roomNight, occupancy) => {\n var _a;\n return formField.occupancyPriceOverrides !== void 0 ? (_a = formField.occupancyPriceOverrides[roomNight.id]) == null ? void 0 : _a[occupancy] : void 0;\n};\nconst getInitialOccupancy = (booking, roomType) => {\n if (roomType.occupancy !== void 0) {\n return roomType.occupancy;\n }\n if (booking.occupancy === void 0) {\n return roomType.minOccupancy;\n }\n if (booking.occupancy > roomType.maxOccupancy) {\n return roomType.maxOccupancy;\n }\n if (booking.occupancy < roomType.minOccupancy) {\n return roomType.minOccupancy;\n }\n return booking.occupancy;\n};\nconst roomBookingHasDates = (booking) => booking.checkIn !== void 0 && booking.checkOut !== void 0;\nconst isValidRoomBooking = (booking) => booking.checkIn !== void 0 && booking.checkOut !== void 0 && booking.roomType !== void 0 && booking.occupancy !== void 0;\nconst shouldShowPrice = (roomBlock, booking) => roomBlock.hidePrices !== true && booking.priceCents !== null && booking.priceCents !== void 0 && booking.priceCents !== 0;\nconst defaultBookingDateDefaults = (roomBlock, formSettings) => {\n const defaultDates = defaultRoomBlockDates(formSettings);\n return {\n defaultCheckIn: formatISODate(\n max$3([roomBlock.startDate, defaultDates.startDate])\n ),\n defaultCheckOut: formatISODate(\n min$3([roomBlock.endDate, addDays$1(defaultDates.endDate, 1)])\n )\n };\n};\nconst availableRoomTypeId = (roomType) => roomType.occupancy !== void 0 ? `${roomType.id}-${roomType.occupancy}` : roomType.id;\nconst getAvailableRoomType = (availableRoomTypes, id) => availableRoomTypes.find((rt) => id === availableRoomTypeId(rt));\nconst defaultFormSettings = {\n dateFormat: \"MMM d yyy\",\n dateTimeFormat: \"MMM d yyy h:mm aaa\",\n documentUploadsEnabled: false,\n guestBookingEnabled: false,\n leadScannersEnabled: false,\n metadataEnabled: false,\n multipleSessionSlotChoices: false,\n newAddPanel: false,\n newChoicesEditor: false,\n occupancyPricingEnabled: false,\n protectAttendeeReferenceFields: true,\n roomingEnabled: false,\n sessionBookingEnabled: false,\n sessionSlotDescriptionsEnabled: false,\n shoppingCartCurrency: \"$\",\n shoppingCartEnabled: false,\n tracksBlockedByUntrackedRegistrations: false,\n tracksEnabled: false\n};\nconst defaultChoices = [\n [\"One\", \"One\"],\n [\"Two\", \"Two\"]\n].map(normalizedChoiceWithId);\nconst fieldDefaults$1 = {\n textField: {\n type: \"string\",\n kind: \"text\",\n label: \"New text field\"\n },\n checkBoxField: {\n label: \"New check box\",\n kind: \"checkbox\",\n type: \"boolean\"\n },\n dropDownField: {\n label: \"New drop down\",\n type: \"string\",\n kind: \"dropdown\",\n choices: defaultChoices,\n includeBlank: true\n },\n radioField: {\n label: \"New Radio\",\n type: \"string\",\n widget: \"radio\",\n kind: \"radio\",\n choices: defaultChoices\n },\n numberField: {\n type: \"integer\",\n kind: \"integer\",\n label: \"New number field\"\n },\n textAreaField: {\n type: \"string\",\n widget: \"textarea\",\n kind: \"textarea\",\n label: \"New text area field\"\n },\n emailField: {\n type: \"string\",\n widget: \"email\",\n kind: \"email\",\n label: \"New email field\"\n },\n dateField: {\n type: \"date\",\n kind: \"date\",\n label: \"New date field\"\n },\n phoneNumberField: {\n type: \"telephone\",\n kind: \"telephone\",\n label: \"New telephone field\"\n },\n documentField: {\n type: \"document\",\n kind: \"document\",\n label: \"New document upload\"\n },\n infoField: {\n type: \"info\",\n text: \"New info section\"\n },\n leadScannerField: {\n type: \"lead_scanner\",\n label: \"Attendee Lead Scanner\"\n },\n section: {\n type: \"section\",\n label: \"New section\",\n fields: []\n }\n};\nconst defaultSessionField = (session) => ({\n session: session.id,\n type: \"session_booking\",\n label: session.name,\n helpText: session.description\n});\nconst defaultRoomBlockField = (roomBlock, formSettings) => ({\n type: \"room_block\",\n roomBlockId: roomBlock.id,\n label: roomBlock.name,\n ...defaultBookingDateDefaults(roomBlock, formSettings)\n});\nconst handlePreserveConsecutiveUppercase = (decamelized, separator) => {\n decamelized = decamelized.replace(\n new RegExp(\"((? $0.toLowerCase()\n );\n return decamelized.replace(\n new RegExp(\"(\\\\p{Uppercase_Letter}+)(\\\\p{Uppercase_Letter}\\\\p{Lowercase_Letter}+)\", \"gu\"),\n (_2, $1, $2) => $1 + separator + $2.toLowerCase()\n );\n};\nfunction decamelize(text, {\n separator = \"_\",\n preserveConsecutiveUppercase = false\n} = {}) {\n if (!(typeof text === \"string\" && typeof separator === \"string\")) {\n throw new TypeError(\n \"The `text` and `separator` arguments should be of type `string`\"\n );\n }\n if (text.length < 2) {\n return preserveConsecutiveUppercase ? text : text.toLowerCase();\n }\n const replacement = `$1${separator}$2`;\n const decamelized = text.replace(\n new RegExp(\"([\\\\p{Lowercase_Letter}\\\\d])(\\\\p{Uppercase_Letter})\", \"gu\"),\n replacement\n );\n if (preserveConsecutiveUppercase) {\n return handlePreserveConsecutiveUppercase(decamelized, separator);\n }\n return decamelized.replace(\n new RegExp(\"(\\\\p{Uppercase_Letter})(\\\\p{Uppercase_Letter}\\\\p{Lowercase_Letter}+)\", \"gu\"),\n replacement\n ).toLowerCase();\n}\nfunction humanizeString(string) {\n if (typeof string !== \"string\") {\n throw new TypeError(\"Expected a string\");\n }\n string = decamelize(string);\n string = string.toLowerCase().replace(/[_-]+/g, \" \").replace(/\\s{2,}/g, \" \").trim();\n string = string.charAt(0).toUpperCase() + string.slice(1);\n return string;\n}\nfunction generateName(fields, label) {\n if (!label) {\n return idGenerator();\n }\n const sanitizedLabel = label.replace(/[^a-zA-Z0-9\\s]/g, \"\").replace(/\\s+/g, \" \").replace(/\\s/g, \"_\").replace(/^[0-9]+/, \"\");\n const name = sanitizedLabel.toLowerCase();\n const existingField = findField(fields, name);\n if (existingField) {\n return `${name}_${idGenerator()}`;\n } else {\n return name;\n }\n}\nconst fieldLabel = (field) => field.label !== void 0 ? field.label : humanizeString(field.name);\nconst pageDefaults$1 = {\n label: \"New page\",\n type: \"page\",\n fields: []\n};\nconst fieldDefaults = {\n type: \"string\",\n label: \"New field\"\n};\nconst infoDefaultText = \"Click to edit\";\nfunction visitFields(fields, callback) {\n fields.forEach((field) => {\n callback(field);\n if (isFieldContainer(field)) {\n visitFields(field.fields, callback);\n }\n });\n}\nfunction withField(fields, name, callback) {\n callback(findFieldWithContainer(fields, name));\n}\nfunction withFieldAndParent(fields, name, callback) {\n callback(findFieldWithParent(fields, name));\n}\nconst isStructuredDepends = (depends) => depends !== void 0 && depends !== null && typeof depends !== \"string\";\nfunction findDependents(fields, name, callback) {\n visitFields(fields, (field) => {\n if (isStructuredDepends(field.dependsOn) && field.dependsOn[0] === name || field.dependsOn === name) {\n callback(field);\n }\n });\n}\nfunction clearDependents(fields, name) {\n findDependents(fields, name, (dependant) => {\n delete dependant.dependsOn;\n });\n}\nconst reducer$4 = (state, action) => {\n return fn(state, (draft) => {\n var _a;\n switch (action.type) {\n case \"select_page\":\n const page = draft.fields.find((p2) => p2.name === action.name);\n if (page === void 0) {\n console.error(\n `Trying to select a page that doesn't exist: ${action.name}`\n );\n break;\n }\n draft.selectedPageName = page.name;\n draft.selectedFieldName = page.name;\n draft.selectedTab = \"edit\";\n break;\n case \"select_field\":\n draft.selectedFieldName = (_a = findField(draft.fields, action.name)) == null ? void 0 : _a.name;\n draft.selectedTab = \"edit\";\n break;\n case \"select_tab\":\n draft.selectedTab = action.tab;\n break;\n case \"add_field\":\n const parentFieldName = action.parent ?? draft.selectedPageName;\n if (parentFieldName === void 0) {\n console.error(\n `Please supply a field name to add a field or ensure a has been selected`\n );\n break;\n }\n withField(draft.fields, parentFieldName, ({ field: parent }) => {\n if (parent === void 0) {\n console.error(\n `Trying to add field to undefined parent field ${action.parent}`\n );\n return;\n }\n if (!isFieldContainer(parent)) {\n console.error(\n `Trying to add field to invalid parent field ${action.parent}`\n );\n return;\n }\n const newField = {\n ...fieldDefaults,\n ...action.field\n };\n if (!newField.name) {\n newField.name = idGenerator();\n newField.isNew = true;\n }\n if (isInfoField(newField)) {\n newField.text = infoDefaultText;\n }\n if (parent.fields) {\n parent.fields.push(newField);\n } else {\n parent.fields = [newField];\n }\n });\n draft.dirty = true;\n break;\n case \"move_field\":\n withFieldAndParent(draft.fields, action.field, ({ field: field2, parent }) => {\n if (parent === void 0 || field2 === void 0) {\n console.error(`Error finding field ${action.field}`);\n return;\n }\n let destination;\n if (!action.destination) {\n destination = parent;\n } else {\n destination = findField(draft.fields, action.destination);\n if (destination === null) {\n console.error(\n `Invalid destination field specified for move destination: ${action.destination}`\n );\n return;\n }\n }\n if (!isFieldContainer(destination)) {\n console.error(\n `Move to invalid destination field ${destination.name}`\n );\n return;\n }\n const startIndex2 = parent.fields.findIndex(\n (f2) => f2.name === field2.name\n );\n const [removed] = parent.fields.splice(startIndex2, 1);\n if (destination.fields) {\n destination.fields.splice(action.index, 0, removed);\n } else {\n destination.fields = [removed];\n }\n draft.dirty = true;\n });\n break;\n case \"add_page\":\n const newPage = { ...pageDefaults$1, ...action.page };\n if (!newPage.name) {\n newPage.name = idGenerator();\n newPage.isNew = true;\n }\n if (draft.fields) {\n draft.fields.push(newPage);\n } else {\n draft.fields = [newPage];\n }\n draft.dirty = true;\n draft.selectedPageName = newPage.name;\n draft.selectedFieldName = newPage.name;\n draft.selectedTab = \"edit\";\n break;\n case \"update_field\":\n const fieldToUpdate = findField(draft.fields, action.name);\n if (fieldToUpdate === null) {\n console.error(`Failed to find field to update: ${action.name}`);\n break;\n }\n Object.assign(fieldToUpdate, action.payload);\n if (action.payload.type === \"boolean\") {\n if (\"widget\" in fieldToUpdate) {\n delete fieldToUpdate.widget;\n }\n if (\"choices\" in fieldToUpdate) {\n delete fieldToUpdate.choices;\n }\n }\n if (action.payload.tracks !== void 0 && isFieldContainer(fieldToUpdate)) {\n visitFields(fieldToUpdate.fields, (field2) => {\n field2.tracks = void 0;\n });\n }\n console.log(\"fieldToUpdate\", fieldToUpdate);\n draft.dirty = true;\n break;\n case \"move_page\":\n const startIndex = draft.fields.findIndex(\n (f2) => f2.name === action.name\n );\n if (startIndex === -1) {\n throw new Error(`Page not found with name: ${action.name}`);\n }\n const pageToMove = draft.fields.splice(startIndex, 1)[0];\n draft.fields.splice(action.toIndex, 0, pageToMove);\n draft.dirty = true;\n break;\n case \"delete_field\":\n const { field, container } = findFieldWithContainer(\n draft.fields,\n action.name\n );\n if (field === void 0) {\n console.error(`Attempting to delete undefined field: ${action.name}`);\n break;\n }\n if (container === void 0) {\n console.error(`Error. Field container not found for: ${action.name}`);\n break;\n }\n const index2 = container.findIndex((f2) => f2.name === field.name);\n container.splice(index2, 1);\n if (field.name === draft.selectedPageName) {\n draft.selectedPageName = draft.fields[0].name;\n draft.selectedFieldName = void 0;\n }\n clearDependents(draft.fields, field.name);\n draft.dirty = true;\n break;\n case \"reset_fields\":\n draft.fields = action.fields;\n draft.dirty = false;\n const selectedPage = draft.selectedPageName && findField(draft.fields, draft.selectedPageName);\n if (!selectedPage) {\n draft.selectedPageName = draft.fields[0].name;\n }\n break;\n case \"name_new_fields\":\n visitFields(draft.fields, (field2) => {\n if (field2.isNew) {\n delete field2.isNew;\n const oldName = field2.name;\n field2.name = generateName(draft.fields, field2.label);\n if (oldName === draft.selectedPageName) {\n draft.selectedPageName = field2.name;\n }\n }\n });\n break;\n case \"set_dirty\":\n draft.dirty = action.dirty;\n break;\n default:\n throw new Error(`Unknown action ${action.type}`);\n }\n });\n};\nconst initializeState = (state) => ({\n ...state,\n selectedPageName: state.fields[0].name,\n selectedFieldName: state.fields[0].name\n});\nclass Subscribable {\n constructor() {\n this.listeners = /* @__PURE__ */ new Set();\n this.subscribe = this.subscribe.bind(this);\n }\n subscribe(listener) {\n const identity = {\n listener\n };\n this.listeners.add(identity);\n this.onSubscribe();\n return () => {\n this.listeners.delete(identity);\n this.onUnsubscribe();\n };\n }\n hasListeners() {\n return this.listeners.size > 0;\n }\n onSubscribe() {\n }\n onUnsubscribe() {\n }\n}\nconst isServer = typeof window === \"undefined\" || \"Deno\" in window;\nfunction noop$7() {\n return void 0;\n}\nfunction functionalUpdate(updater, input) {\n return typeof updater === \"function\" ? updater(input) : updater;\n}\nfunction isValidTimeout(value) {\n return typeof value === \"number\" && value >= 0 && value !== Infinity;\n}\nfunction timeUntilStale(updatedAt, staleTime) {\n return Math.max(updatedAt + (staleTime || 0) - Date.now(), 0);\n}\nfunction parseQueryArgs(arg1, arg2, arg3) {\n if (!isQueryKey(arg1)) {\n return arg1;\n }\n if (typeof arg2 === \"function\") {\n return {\n ...arg3,\n queryKey: arg1,\n queryFn: arg2\n };\n }\n return {\n ...arg2,\n queryKey: arg1\n };\n}\nfunction parseMutationArgs(arg1, arg2, arg3) {\n if (isQueryKey(arg1)) {\n if (typeof arg2 === \"function\") {\n return {\n ...arg3,\n mutationKey: arg1,\n mutationFn: arg2\n };\n }\n return {\n ...arg2,\n mutationKey: arg1\n };\n }\n if (typeof arg1 === \"function\") {\n return {\n ...arg2,\n mutationFn: arg1\n };\n }\n return {\n ...arg1\n };\n}\nfunction parseFilterArgs(arg1, arg2, arg3) {\n return isQueryKey(arg1) ? [{\n ...arg2,\n queryKey: arg1\n }, arg3] : [arg1 || {}, arg2];\n}\nfunction matchQuery(filters, query) {\n const {\n type = \"all\",\n exact,\n fetchStatus,\n predicate,\n queryKey,\n stale\n } = filters;\n if (isQueryKey(queryKey)) {\n if (exact) {\n if (query.queryHash !== hashQueryKeyByOptions(queryKey, query.options)) {\n return false;\n }\n } else if (!partialMatchKey(query.queryKey, queryKey)) {\n return false;\n }\n }\n if (type !== \"all\") {\n const isActive2 = query.isActive();\n if (type === \"active\" && !isActive2) {\n return false;\n }\n if (type === \"inactive\" && isActive2) {\n return false;\n }\n }\n if (typeof stale === \"boolean\" && query.isStale() !== stale) {\n return false;\n }\n if (typeof fetchStatus !== \"undefined\" && fetchStatus !== query.state.fetchStatus) {\n return false;\n }\n if (predicate && !predicate(query)) {\n return false;\n }\n return true;\n}\nfunction matchMutation(filters, mutation) {\n const {\n exact,\n fetching,\n predicate,\n mutationKey\n } = filters;\n if (isQueryKey(mutationKey)) {\n if (!mutation.options.mutationKey) {\n return false;\n }\n if (exact) {\n if (hashQueryKey(mutation.options.mutationKey) !== hashQueryKey(mutationKey)) {\n return false;\n }\n } else if (!partialMatchKey(mutation.options.mutationKey, mutationKey)) {\n return false;\n }\n }\n if (typeof fetching === \"boolean\" && mutation.state.status === \"loading\" !== fetching) {\n return false;\n }\n if (predicate && !predicate(mutation)) {\n return false;\n }\n return true;\n}\nfunction hashQueryKeyByOptions(queryKey, options) {\n const hashFn = (options == null ? void 0 : options.queryKeyHashFn) || hashQueryKey;\n return hashFn(queryKey);\n}\nfunction hashQueryKey(queryKey) {\n return JSON.stringify(queryKey, (_2, val) => isPlainObject$4(val) ? Object.keys(val).sort().reduce((result, key) => {\n result[key] = val[key];\n return result;\n }, {}) : val);\n}\nfunction partialMatchKey(a2, b2) {\n return partialDeepEqual(a2, b2);\n}\nfunction partialDeepEqual(a2, b2) {\n if (a2 === b2) {\n return true;\n }\n if (typeof a2 !== typeof b2) {\n return false;\n }\n if (a2 && b2 && typeof a2 === \"object\" && typeof b2 === \"object\") {\n return !Object.keys(b2).some((key) => !partialDeepEqual(a2[key], b2[key]));\n }\n return false;\n}\nfunction replaceEqualDeep(a2, b2) {\n if (a2 === b2) {\n return a2;\n }\n const array = isPlainArray(a2) && isPlainArray(b2);\n if (array || isPlainObject$4(a2) && isPlainObject$4(b2)) {\n const aSize = array ? a2.length : Object.keys(a2).length;\n const bItems = array ? b2 : Object.keys(b2);\n const bSize = bItems.length;\n const copy2 = array ? [] : {};\n let equalItems = 0;\n for (let i = 0; i < bSize; i++) {\n const key = array ? i : bItems[i];\n copy2[key] = replaceEqualDeep(a2[key], b2[key]);\n if (copy2[key] === a2[key]) {\n equalItems++;\n }\n }\n return aSize === bSize && equalItems === aSize ? a2 : copy2;\n }\n return b2;\n}\nfunction shallowEqualObjects(a2, b2) {\n if (a2 && !b2 || b2 && !a2) {\n return false;\n }\n for (const key in a2) {\n if (a2[key] !== b2[key]) {\n return false;\n }\n }\n return true;\n}\nfunction isPlainArray(value) {\n return Array.isArray(value) && value.length === Object.keys(value).length;\n}\nfunction isPlainObject$4(o2) {\n if (!hasObjectPrototype(o2)) {\n return false;\n }\n const ctor = o2.constructor;\n if (typeof ctor === \"undefined\") {\n return true;\n }\n const prot = ctor.prototype;\n if (!hasObjectPrototype(prot)) {\n return false;\n }\n if (!prot.hasOwnProperty(\"isPrototypeOf\")) {\n return false;\n }\n return true;\n}\nfunction hasObjectPrototype(o2) {\n return Object.prototype.toString.call(o2) === \"[object Object]\";\n}\nfunction isQueryKey(value) {\n return Array.isArray(value);\n}\nfunction sleep(timeout) {\n return new Promise((resolve) => {\n setTimeout(resolve, timeout);\n });\n}\nfunction scheduleMicrotask(callback) {\n sleep(0).then(callback);\n}\nfunction getAbortController() {\n if (typeof AbortController === \"function\") {\n return new AbortController();\n }\n return;\n}\nfunction replaceData(prevData, data, options) {\n if (options.isDataEqual != null && options.isDataEqual(prevData, data)) {\n return prevData;\n } else if (typeof options.structuralSharing === \"function\") {\n return options.structuralSharing(prevData, data);\n } else if (options.structuralSharing !== false) {\n return replaceEqualDeep(prevData, data);\n }\n return data;\n}\nclass FocusManager extends Subscribable {\n constructor() {\n super();\n this.setup = (onFocus) => {\n if (!isServer && window.addEventListener) {\n const listener = () => onFocus();\n window.addEventListener(\"visibilitychange\", listener, false);\n window.addEventListener(\"focus\", listener, false);\n return () => {\n window.removeEventListener(\"visibilitychange\", listener);\n window.removeEventListener(\"focus\", listener);\n };\n }\n return;\n };\n }\n onSubscribe() {\n if (!this.cleanup) {\n this.setEventListener(this.setup);\n }\n }\n onUnsubscribe() {\n if (!this.hasListeners()) {\n var _this$cleanup;\n (_this$cleanup = this.cleanup) == null ? void 0 : _this$cleanup.call(this);\n this.cleanup = void 0;\n }\n }\n setEventListener(setup) {\n var _this$cleanup2;\n this.setup = setup;\n (_this$cleanup2 = this.cleanup) == null ? void 0 : _this$cleanup2.call(this);\n this.cleanup = setup((focused) => {\n if (typeof focused === \"boolean\") {\n this.setFocused(focused);\n } else {\n this.onFocus();\n }\n });\n }\n setFocused(focused) {\n const changed = this.focused !== focused;\n if (changed) {\n this.focused = focused;\n this.onFocus();\n }\n }\n onFocus() {\n this.listeners.forEach(({\n listener\n }) => {\n listener();\n });\n }\n isFocused() {\n if (typeof this.focused === \"boolean\") {\n return this.focused;\n }\n if (typeof document === \"undefined\") {\n return true;\n }\n return [void 0, \"visible\", \"prerender\"].includes(document.visibilityState);\n }\n}\nconst focusManager = new FocusManager();\nconst onlineEvents = [\"online\", \"offline\"];\nclass OnlineManager extends Subscribable {\n constructor() {\n super();\n this.setup = (onOnline) => {\n if (!isServer && window.addEventListener) {\n const listener = () => onOnline();\n onlineEvents.forEach((event) => {\n window.addEventListener(event, listener, false);\n });\n return () => {\n onlineEvents.forEach((event) => {\n window.removeEventListener(event, listener);\n });\n };\n }\n return;\n };\n }\n onSubscribe() {\n if (!this.cleanup) {\n this.setEventListener(this.setup);\n }\n }\n onUnsubscribe() {\n if (!this.hasListeners()) {\n var _this$cleanup;\n (_this$cleanup = this.cleanup) == null ? void 0 : _this$cleanup.call(this);\n this.cleanup = void 0;\n }\n }\n setEventListener(setup) {\n var _this$cleanup2;\n this.setup = setup;\n (_this$cleanup2 = this.cleanup) == null ? void 0 : _this$cleanup2.call(this);\n this.cleanup = setup((online) => {\n if (typeof online === \"boolean\") {\n this.setOnline(online);\n } else {\n this.onOnline();\n }\n });\n }\n setOnline(online) {\n const changed = this.online !== online;\n if (changed) {\n this.online = online;\n this.onOnline();\n }\n }\n onOnline() {\n this.listeners.forEach(({\n listener\n }) => {\n listener();\n });\n }\n isOnline() {\n if (typeof this.online === \"boolean\") {\n return this.online;\n }\n if (typeof navigator === \"undefined\" || typeof navigator.onLine === \"undefined\") {\n return true;\n }\n return navigator.onLine;\n }\n}\nconst onlineManager = new OnlineManager();\nfunction defaultRetryDelay(failureCount) {\n return Math.min(1e3 * 2 ** failureCount, 3e4);\n}\nfunction canFetch(networkMode) {\n return (networkMode != null ? networkMode : \"online\") === \"online\" ? onlineManager.isOnline() : true;\n}\nclass CancelledError {\n constructor(options) {\n this.revert = options == null ? void 0 : options.revert;\n this.silent = options == null ? void 0 : options.silent;\n }\n}\nfunction isCancelledError(value) {\n return value instanceof CancelledError;\n}\nfunction createRetryer(config2) {\n let isRetryCancelled = false;\n let failureCount = 0;\n let isResolved = false;\n let continueFn;\n let promiseResolve;\n let promiseReject;\n const promise = new Promise((outerResolve, outerReject) => {\n promiseResolve = outerResolve;\n promiseReject = outerReject;\n });\n const cancel = (cancelOptions) => {\n if (!isResolved) {\n reject(new CancelledError(cancelOptions));\n config2.abort == null ? void 0 : config2.abort();\n }\n };\n const cancelRetry = () => {\n isRetryCancelled = true;\n };\n const continueRetry = () => {\n isRetryCancelled = false;\n };\n const shouldPause = () => !focusManager.isFocused() || config2.networkMode !== \"always\" && !onlineManager.isOnline();\n const resolve = (value) => {\n if (!isResolved) {\n isResolved = true;\n config2.onSuccess == null ? void 0 : config2.onSuccess(value);\n continueFn == null ? void 0 : continueFn();\n promiseResolve(value);\n }\n };\n const reject = (value) => {\n if (!isResolved) {\n isResolved = true;\n config2.onError == null ? void 0 : config2.onError(value);\n continueFn == null ? void 0 : continueFn();\n promiseReject(value);\n }\n };\n const pause = () => {\n return new Promise((continueResolve) => {\n continueFn = (value) => {\n const canContinue = isResolved || !shouldPause();\n if (canContinue) {\n continueResolve(value);\n }\n return canContinue;\n };\n config2.onPause == null ? void 0 : config2.onPause();\n }).then(() => {\n continueFn = void 0;\n if (!isResolved) {\n config2.onContinue == null ? void 0 : config2.onContinue();\n }\n });\n };\n const run2 = () => {\n if (isResolved) {\n return;\n }\n let promiseOrValue;\n try {\n promiseOrValue = config2.fn();\n } catch (error2) {\n promiseOrValue = Promise.reject(error2);\n }\n Promise.resolve(promiseOrValue).then(resolve).catch((error2) => {\n var _config$retry, _config$retryDelay;\n if (isResolved) {\n return;\n }\n const retry = (_config$retry = config2.retry) != null ? _config$retry : 3;\n const retryDelay = (_config$retryDelay = config2.retryDelay) != null ? _config$retryDelay : defaultRetryDelay;\n const delay = typeof retryDelay === \"function\" ? retryDelay(failureCount, error2) : retryDelay;\n const shouldRetry = retry === true || typeof retry === \"number\" && failureCount < retry || typeof retry === \"function\" && retry(failureCount, error2);\n if (isRetryCancelled || !shouldRetry) {\n reject(error2);\n return;\n }\n failureCount++;\n config2.onFail == null ? void 0 : config2.onFail(failureCount, error2);\n sleep(delay).then(() => {\n if (shouldPause()) {\n return pause();\n }\n return;\n }).then(() => {\n if (isRetryCancelled) {\n reject(error2);\n } else {\n run2();\n }\n });\n });\n };\n if (canFetch(config2.networkMode)) {\n run2();\n } else {\n pause().then(run2);\n }\n return {\n promise,\n cancel,\n continue: () => {\n const didContinue = continueFn == null ? void 0 : continueFn();\n return didContinue ? promise : Promise.resolve();\n },\n cancelRetry,\n continueRetry\n };\n}\nconst defaultLogger = console;\nfunction createNotifyManager() {\n let queue = [];\n let transactions = 0;\n let notifyFn = (callback) => {\n callback();\n };\n let batchNotifyFn = (callback) => {\n callback();\n };\n const batch2 = (callback) => {\n let result;\n transactions++;\n try {\n result = callback();\n } finally {\n transactions--;\n if (!transactions) {\n flush3();\n }\n }\n return result;\n };\n const schedule = (callback) => {\n if (transactions) {\n queue.push(callback);\n } else {\n scheduleMicrotask(() => {\n notifyFn(callback);\n });\n }\n };\n const batchCalls = (callback) => {\n return (...args) => {\n schedule(() => {\n callback(...args);\n });\n };\n };\n const flush3 = () => {\n const originalQueue = queue;\n queue = [];\n if (originalQueue.length) {\n scheduleMicrotask(() => {\n batchNotifyFn(() => {\n originalQueue.forEach((callback) => {\n notifyFn(callback);\n });\n });\n });\n }\n };\n const setNotifyFunction = (fn2) => {\n notifyFn = fn2;\n };\n const setBatchNotifyFunction = (fn2) => {\n batchNotifyFn = fn2;\n };\n return {\n batch: batch2,\n batchCalls,\n schedule,\n setNotifyFunction,\n setBatchNotifyFunction\n };\n}\nconst notifyManager = createNotifyManager();\nclass Removable {\n destroy() {\n this.clearGcTimeout();\n }\n scheduleGc() {\n this.clearGcTimeout();\n if (isValidTimeout(this.cacheTime)) {\n this.gcTimeout = setTimeout(() => {\n this.optionalRemove();\n }, this.cacheTime);\n }\n }\n updateCacheTime(newCacheTime) {\n this.cacheTime = Math.max(this.cacheTime || 0, newCacheTime != null ? newCacheTime : isServer ? Infinity : 5 * 60 * 1e3);\n }\n clearGcTimeout() {\n if (this.gcTimeout) {\n clearTimeout(this.gcTimeout);\n this.gcTimeout = void 0;\n }\n }\n}\nclass Query extends Removable {\n constructor(config2) {\n super();\n this.abortSignalConsumed = false;\n this.defaultOptions = config2.defaultOptions;\n this.setOptions(config2.options);\n this.observers = [];\n this.cache = config2.cache;\n this.logger = config2.logger || defaultLogger;\n this.queryKey = config2.queryKey;\n this.queryHash = config2.queryHash;\n this.initialState = config2.state || getDefaultState$1(this.options);\n this.state = this.initialState;\n this.scheduleGc();\n }\n get meta() {\n return this.options.meta;\n }\n setOptions(options) {\n this.options = {\n ...this.defaultOptions,\n ...options\n };\n this.updateCacheTime(this.options.cacheTime);\n }\n optionalRemove() {\n if (!this.observers.length && this.state.fetchStatus === \"idle\") {\n this.cache.remove(this);\n }\n }\n setData(newData, options) {\n const data = replaceData(this.state.data, newData, this.options);\n this.dispatch({\n data,\n type: \"success\",\n dataUpdatedAt: options == null ? void 0 : options.updatedAt,\n manual: options == null ? void 0 : options.manual\n });\n return data;\n }\n setState(state, setStateOptions) {\n this.dispatch({\n type: \"setState\",\n state,\n setStateOptions\n });\n }\n cancel(options) {\n var _this$retryer;\n const promise = this.promise;\n (_this$retryer = this.retryer) == null ? void 0 : _this$retryer.cancel(options);\n return promise ? promise.then(noop$7).catch(noop$7) : Promise.resolve();\n }\n destroy() {\n super.destroy();\n this.cancel({\n silent: true\n });\n }\n reset() {\n this.destroy();\n this.setState(this.initialState);\n }\n isActive() {\n return this.observers.some((observer) => observer.options.enabled !== false);\n }\n isDisabled() {\n return this.getObserversCount() > 0 && !this.isActive();\n }\n isStale() {\n return this.state.isInvalidated || !this.state.dataUpdatedAt || this.observers.some((observer) => observer.getCurrentResult().isStale);\n }\n isStaleByTime(staleTime = 0) {\n return this.state.isInvalidated || !this.state.dataUpdatedAt || !timeUntilStale(this.state.dataUpdatedAt, staleTime);\n }\n onFocus() {\n var _this$retryer2;\n const observer = this.observers.find((x2) => x2.shouldFetchOnWindowFocus());\n if (observer) {\n observer.refetch({\n cancelRefetch: false\n });\n }\n (_this$retryer2 = this.retryer) == null ? void 0 : _this$retryer2.continue();\n }\n onOnline() {\n var _this$retryer3;\n const observer = this.observers.find((x2) => x2.shouldFetchOnReconnect());\n if (observer) {\n observer.refetch({\n cancelRefetch: false\n });\n }\n (_this$retryer3 = this.retryer) == null ? void 0 : _this$retryer3.continue();\n }\n addObserver(observer) {\n if (!this.observers.includes(observer)) {\n this.observers.push(observer);\n this.clearGcTimeout();\n this.cache.notify({\n type: \"observerAdded\",\n query: this,\n observer\n });\n }\n }\n removeObserver(observer) {\n if (this.observers.includes(observer)) {\n this.observers = this.observers.filter((x2) => x2 !== observer);\n if (!this.observers.length) {\n if (this.retryer) {\n if (this.abortSignalConsumed) {\n this.retryer.cancel({\n revert: true\n });\n } else {\n this.retryer.cancelRetry();\n }\n }\n this.scheduleGc();\n }\n this.cache.notify({\n type: \"observerRemoved\",\n query: this,\n observer\n });\n }\n }\n getObserversCount() {\n return this.observers.length;\n }\n invalidate() {\n if (!this.state.isInvalidated) {\n this.dispatch({\n type: \"invalidate\"\n });\n }\n }\n fetch(options, fetchOptions) {\n var _this$options$behavio, _context$fetchOptions;\n if (this.state.fetchStatus !== \"idle\") {\n if (this.state.dataUpdatedAt && fetchOptions != null && fetchOptions.cancelRefetch) {\n this.cancel({\n silent: true\n });\n } else if (this.promise) {\n var _this$retryer4;\n (_this$retryer4 = this.retryer) == null ? void 0 : _this$retryer4.continueRetry();\n return this.promise;\n }\n }\n if (options) {\n this.setOptions(options);\n }\n if (!this.options.queryFn) {\n const observer = this.observers.find((x2) => x2.options.queryFn);\n if (observer) {\n this.setOptions(observer.options);\n }\n }\n if (process.env.NODE_ENV !== \"production\") {\n if (!Array.isArray(this.options.queryKey)) {\n this.logger.error(\"As of v4, queryKey needs to be an Array. If you are using a string like 'repoData', please change it to an Array, e.g. ['repoData']\");\n }\n }\n const abortController = getAbortController();\n const queryFnContext = {\n queryKey: this.queryKey,\n pageParam: void 0,\n meta: this.meta\n };\n const addSignalProperty = (object) => {\n Object.defineProperty(object, \"signal\", {\n enumerable: true,\n get: () => {\n if (abortController) {\n this.abortSignalConsumed = true;\n return abortController.signal;\n }\n return void 0;\n }\n });\n };\n addSignalProperty(queryFnContext);\n const fetchFn = () => {\n if (!this.options.queryFn) {\n return Promise.reject(\"Missing queryFn for queryKey '\" + this.options.queryHash + \"'\");\n }\n this.abortSignalConsumed = false;\n return this.options.queryFn(queryFnContext);\n };\n const context = {\n fetchOptions,\n options: this.options,\n queryKey: this.queryKey,\n state: this.state,\n fetchFn\n };\n addSignalProperty(context);\n (_this$options$behavio = this.options.behavior) == null ? void 0 : _this$options$behavio.onFetch(context);\n this.revertState = this.state;\n if (this.state.fetchStatus === \"idle\" || this.state.fetchMeta !== ((_context$fetchOptions = context.fetchOptions) == null ? void 0 : _context$fetchOptions.meta)) {\n var _context$fetchOptions2;\n this.dispatch({\n type: \"fetch\",\n meta: (_context$fetchOptions2 = context.fetchOptions) == null ? void 0 : _context$fetchOptions2.meta\n });\n }\n const onError = (error2) => {\n if (!(isCancelledError(error2) && error2.silent)) {\n this.dispatch({\n type: \"error\",\n error: error2\n });\n }\n if (!isCancelledError(error2)) {\n var _this$cache$config$on, _this$cache$config, _this$cache$config$on2, _this$cache$config2;\n (_this$cache$config$on = (_this$cache$config = this.cache.config).onError) == null ? void 0 : _this$cache$config$on.call(_this$cache$config, error2, this);\n (_this$cache$config$on2 = (_this$cache$config2 = this.cache.config).onSettled) == null ? void 0 : _this$cache$config$on2.call(_this$cache$config2, this.state.data, error2, this);\n if (process.env.NODE_ENV !== \"production\") {\n this.logger.error(error2);\n }\n }\n if (!this.isFetchingOptimistic) {\n this.scheduleGc();\n }\n this.isFetchingOptimistic = false;\n };\n this.retryer = createRetryer({\n fn: context.fetchFn,\n abort: abortController == null ? void 0 : abortController.abort.bind(abortController),\n onSuccess: (data) => {\n var _this$cache$config$on3, _this$cache$config3, _this$cache$config$on4, _this$cache$config4;\n if (typeof data === \"undefined\") {\n if (process.env.NODE_ENV !== \"production\") {\n this.logger.error(\"Query data cannot be undefined. Please make sure to return a value other than undefined from your query function. Affected query key: \" + this.queryHash);\n }\n onError(new Error(this.queryHash + \" data is undefined\"));\n return;\n }\n this.setData(data);\n (_this$cache$config$on3 = (_this$cache$config3 = this.cache.config).onSuccess) == null ? void 0 : _this$cache$config$on3.call(_this$cache$config3, data, this);\n (_this$cache$config$on4 = (_this$cache$config4 = this.cache.config).onSettled) == null ? void 0 : _this$cache$config$on4.call(_this$cache$config4, data, this.state.error, this);\n if (!this.isFetchingOptimistic) {\n this.scheduleGc();\n }\n this.isFetchingOptimistic = false;\n },\n onError,\n onFail: (failureCount, error2) => {\n this.dispatch({\n type: \"failed\",\n failureCount,\n error: error2\n });\n },\n onPause: () => {\n this.dispatch({\n type: \"pause\"\n });\n },\n onContinue: () => {\n this.dispatch({\n type: \"continue\"\n });\n },\n retry: context.options.retry,\n retryDelay: context.options.retryDelay,\n networkMode: context.options.networkMode\n });\n this.promise = this.retryer.promise;\n return this.promise;\n }\n dispatch(action) {\n const reducer2 = (state) => {\n var _action$meta, _action$dataUpdatedAt;\n switch (action.type) {\n case \"failed\":\n return {\n ...state,\n fetchFailureCount: action.failureCount,\n fetchFailureReason: action.error\n };\n case \"pause\":\n return {\n ...state,\n fetchStatus: \"paused\"\n };\n case \"continue\":\n return {\n ...state,\n fetchStatus: \"fetching\"\n };\n case \"fetch\":\n return {\n ...state,\n fetchFailureCount: 0,\n fetchFailureReason: null,\n fetchMeta: (_action$meta = action.meta) != null ? _action$meta : null,\n fetchStatus: canFetch(this.options.networkMode) ? \"fetching\" : \"paused\",\n ...!state.dataUpdatedAt && {\n error: null,\n status: \"loading\"\n }\n };\n case \"success\":\n return {\n ...state,\n data: action.data,\n dataUpdateCount: state.dataUpdateCount + 1,\n dataUpdatedAt: (_action$dataUpdatedAt = action.dataUpdatedAt) != null ? _action$dataUpdatedAt : Date.now(),\n error: null,\n isInvalidated: false,\n status: \"success\",\n ...!action.manual && {\n fetchStatus: \"idle\",\n fetchFailureCount: 0,\n fetchFailureReason: null\n }\n };\n case \"error\":\n const error2 = action.error;\n if (isCancelledError(error2) && error2.revert && this.revertState) {\n return {\n ...this.revertState,\n fetchStatus: \"idle\"\n };\n }\n return {\n ...state,\n error: error2,\n errorUpdateCount: state.errorUpdateCount + 1,\n errorUpdatedAt: Date.now(),\n fetchFailureCount: state.fetchFailureCount + 1,\n fetchFailureReason: error2,\n fetchStatus: \"idle\",\n status: \"error\"\n };\n case \"invalidate\":\n return {\n ...state,\n isInvalidated: true\n };\n case \"setState\":\n return {\n ...state,\n ...action.state\n };\n }\n };\n this.state = reducer2(this.state);\n notifyManager.batch(() => {\n this.observers.forEach((observer) => {\n observer.onQueryUpdate(action);\n });\n this.cache.notify({\n query: this,\n type: \"updated\",\n action\n });\n });\n }\n}\nfunction getDefaultState$1(options) {\n const data = typeof options.initialData === \"function\" ? options.initialData() : options.initialData;\n const hasData = typeof data !== \"undefined\";\n const initialDataUpdatedAt = hasData ? typeof options.initialDataUpdatedAt === \"function\" ? options.initialDataUpdatedAt() : options.initialDataUpdatedAt : 0;\n return {\n data,\n dataUpdateCount: 0,\n dataUpdatedAt: hasData ? initialDataUpdatedAt != null ? initialDataUpdatedAt : Date.now() : 0,\n error: null,\n errorUpdateCount: 0,\n errorUpdatedAt: 0,\n fetchFailureCount: 0,\n fetchFailureReason: null,\n fetchMeta: null,\n isInvalidated: false,\n status: hasData ? \"success\" : \"loading\",\n fetchStatus: \"idle\"\n };\n}\nclass QueryCache extends Subscribable {\n constructor(config2) {\n super();\n this.config = config2 || {};\n this.queries = [];\n this.queriesMap = {};\n }\n build(client, options, state) {\n var _options$queryHash;\n const queryKey = options.queryKey;\n const queryHash = (_options$queryHash = options.queryHash) != null ? _options$queryHash : hashQueryKeyByOptions(queryKey, options);\n let query = this.get(queryHash);\n if (!query) {\n query = new Query({\n cache: this,\n logger: client.getLogger(),\n queryKey,\n queryHash,\n options: client.defaultQueryOptions(options),\n state,\n defaultOptions: client.getQueryDefaults(queryKey)\n });\n this.add(query);\n }\n return query;\n }\n add(query) {\n if (!this.queriesMap[query.queryHash]) {\n this.queriesMap[query.queryHash] = query;\n this.queries.push(query);\n this.notify({\n type: \"added\",\n query\n });\n }\n }\n remove(query) {\n const queryInMap = this.queriesMap[query.queryHash];\n if (queryInMap) {\n query.destroy();\n this.queries = this.queries.filter((x2) => x2 !== query);\n if (queryInMap === query) {\n delete this.queriesMap[query.queryHash];\n }\n this.notify({\n type: \"removed\",\n query\n });\n }\n }\n clear() {\n notifyManager.batch(() => {\n this.queries.forEach((query) => {\n this.remove(query);\n });\n });\n }\n get(queryHash) {\n return this.queriesMap[queryHash];\n }\n getAll() {\n return this.queries;\n }\n find(arg1, arg2) {\n const [filters] = parseFilterArgs(arg1, arg2);\n if (typeof filters.exact === \"undefined\") {\n filters.exact = true;\n }\n return this.queries.find((query) => matchQuery(filters, query));\n }\n findAll(arg1, arg2) {\n const [filters] = parseFilterArgs(arg1, arg2);\n return Object.keys(filters).length > 0 ? this.queries.filter((query) => matchQuery(filters, query)) : this.queries;\n }\n notify(event) {\n notifyManager.batch(() => {\n this.listeners.forEach(({\n listener\n }) => {\n listener(event);\n });\n });\n }\n onFocus() {\n notifyManager.batch(() => {\n this.queries.forEach((query) => {\n query.onFocus();\n });\n });\n }\n onOnline() {\n notifyManager.batch(() => {\n this.queries.forEach((query) => {\n query.onOnline();\n });\n });\n }\n}\nclass Mutation extends Removable {\n constructor(config2) {\n super();\n this.defaultOptions = config2.defaultOptions;\n this.mutationId = config2.mutationId;\n this.mutationCache = config2.mutationCache;\n this.logger = config2.logger || defaultLogger;\n this.observers = [];\n this.state = config2.state || getDefaultState();\n this.setOptions(config2.options);\n this.scheduleGc();\n }\n setOptions(options) {\n this.options = {\n ...this.defaultOptions,\n ...options\n };\n this.updateCacheTime(this.options.cacheTime);\n }\n get meta() {\n return this.options.meta;\n }\n setState(state) {\n this.dispatch({\n type: \"setState\",\n state\n });\n }\n addObserver(observer) {\n if (!this.observers.includes(observer)) {\n this.observers.push(observer);\n this.clearGcTimeout();\n this.mutationCache.notify({\n type: \"observerAdded\",\n mutation: this,\n observer\n });\n }\n }\n removeObserver(observer) {\n this.observers = this.observers.filter((x2) => x2 !== observer);\n this.scheduleGc();\n this.mutationCache.notify({\n type: \"observerRemoved\",\n mutation: this,\n observer\n });\n }\n optionalRemove() {\n if (!this.observers.length) {\n if (this.state.status === \"loading\") {\n this.scheduleGc();\n } else {\n this.mutationCache.remove(this);\n }\n }\n }\n continue() {\n var _this$retryer$continu, _this$retryer;\n return (_this$retryer$continu = (_this$retryer = this.retryer) == null ? void 0 : _this$retryer.continue()) != null ? _this$retryer$continu : this.execute();\n }\n async execute() {\n const executeMutation = () => {\n var _this$options$retry;\n this.retryer = createRetryer({\n fn: () => {\n if (!this.options.mutationFn) {\n return Promise.reject(\"No mutationFn found\");\n }\n return this.options.mutationFn(this.state.variables);\n },\n onFail: (failureCount, error2) => {\n this.dispatch({\n type: \"failed\",\n failureCount,\n error: error2\n });\n },\n onPause: () => {\n this.dispatch({\n type: \"pause\"\n });\n },\n onContinue: () => {\n this.dispatch({\n type: \"continue\"\n });\n },\n retry: (_this$options$retry = this.options.retry) != null ? _this$options$retry : 0,\n retryDelay: this.options.retryDelay,\n networkMode: this.options.networkMode\n });\n return this.retryer.promise;\n };\n const restored = this.state.status === \"loading\";\n try {\n var _this$mutationCache$c3, _this$mutationCache$c4, _this$options$onSucce, _this$options2, _this$mutationCache$c5, _this$mutationCache$c6, _this$options$onSettl, _this$options3;\n if (!restored) {\n var _this$mutationCache$c, _this$mutationCache$c2, _this$options$onMutat, _this$options;\n this.dispatch({\n type: \"loading\",\n variables: this.options.variables\n });\n await ((_this$mutationCache$c = (_this$mutationCache$c2 = this.mutationCache.config).onMutate) == null ? void 0 : _this$mutationCache$c.call(_this$mutationCache$c2, this.state.variables, this));\n const context = await ((_this$options$onMutat = (_this$options = this.options).onMutate) == null ? void 0 : _this$options$onMutat.call(_this$options, this.state.variables));\n if (context !== this.state.context) {\n this.dispatch({\n type: \"loading\",\n context,\n variables: this.state.variables\n });\n }\n }\n const data = await executeMutation();\n await ((_this$mutationCache$c3 = (_this$mutationCache$c4 = this.mutationCache.config).onSuccess) == null ? void 0 : _this$mutationCache$c3.call(_this$mutationCache$c4, data, this.state.variables, this.state.context, this));\n await ((_this$options$onSucce = (_this$options2 = this.options).onSuccess) == null ? void 0 : _this$options$onSucce.call(_this$options2, data, this.state.variables, this.state.context));\n await ((_this$mutationCache$c5 = (_this$mutationCache$c6 = this.mutationCache.config).onSettled) == null ? void 0 : _this$mutationCache$c5.call(_this$mutationCache$c6, data, null, this.state.variables, this.state.context, this));\n await ((_this$options$onSettl = (_this$options3 = this.options).onSettled) == null ? void 0 : _this$options$onSettl.call(_this$options3, data, null, this.state.variables, this.state.context));\n this.dispatch({\n type: \"success\",\n data\n });\n return data;\n } catch (error2) {\n try {\n var _this$mutationCache$c7, _this$mutationCache$c8, _this$options$onError, _this$options4, _this$mutationCache$c9, _this$mutationCache$c10, _this$options$onSettl2, _this$options5;\n await ((_this$mutationCache$c7 = (_this$mutationCache$c8 = this.mutationCache.config).onError) == null ? void 0 : _this$mutationCache$c7.call(_this$mutationCache$c8, error2, this.state.variables, this.state.context, this));\n if (process.env.NODE_ENV !== \"production\") {\n this.logger.error(error2);\n }\n await ((_this$options$onError = (_this$options4 = this.options).onError) == null ? void 0 : _this$options$onError.call(_this$options4, error2, this.state.variables, this.state.context));\n await ((_this$mutationCache$c9 = (_this$mutationCache$c10 = this.mutationCache.config).onSettled) == null ? void 0 : _this$mutationCache$c9.call(_this$mutationCache$c10, void 0, error2, this.state.variables, this.state.context, this));\n await ((_this$options$onSettl2 = (_this$options5 = this.options).onSettled) == null ? void 0 : _this$options$onSettl2.call(_this$options5, void 0, error2, this.state.variables, this.state.context));\n throw error2;\n } finally {\n this.dispatch({\n type: \"error\",\n error: error2\n });\n }\n }\n }\n dispatch(action) {\n const reducer2 = (state) => {\n switch (action.type) {\n case \"failed\":\n return {\n ...state,\n failureCount: action.failureCount,\n failureReason: action.error\n };\n case \"pause\":\n return {\n ...state,\n isPaused: true\n };\n case \"continue\":\n return {\n ...state,\n isPaused: false\n };\n case \"loading\":\n return {\n ...state,\n context: action.context,\n data: void 0,\n failureCount: 0,\n failureReason: null,\n error: null,\n isPaused: !canFetch(this.options.networkMode),\n status: \"loading\",\n variables: action.variables\n };\n case \"success\":\n return {\n ...state,\n data: action.data,\n failureCount: 0,\n failureReason: null,\n error: null,\n status: \"success\",\n isPaused: false\n };\n case \"error\":\n return {\n ...state,\n data: void 0,\n error: action.error,\n failureCount: state.failureCount + 1,\n failureReason: action.error,\n isPaused: false,\n status: \"error\"\n };\n case \"setState\":\n return {\n ...state,\n ...action.state\n };\n }\n };\n this.state = reducer2(this.state);\n notifyManager.batch(() => {\n this.observers.forEach((observer) => {\n observer.onMutationUpdate(action);\n });\n this.mutationCache.notify({\n mutation: this,\n type: \"updated\",\n action\n });\n });\n }\n}\nfunction getDefaultState() {\n return {\n context: void 0,\n data: void 0,\n error: null,\n failureCount: 0,\n failureReason: null,\n isPaused: false,\n status: \"idle\",\n variables: void 0\n };\n}\nclass MutationCache extends Subscribable {\n constructor(config2) {\n super();\n this.config = config2 || {};\n this.mutations = [];\n this.mutationId = 0;\n }\n build(client, options, state) {\n const mutation = new Mutation({\n mutationCache: this,\n logger: client.getLogger(),\n mutationId: ++this.mutationId,\n options: client.defaultMutationOptions(options),\n state,\n defaultOptions: options.mutationKey ? client.getMutationDefaults(options.mutationKey) : void 0\n });\n this.add(mutation);\n return mutation;\n }\n add(mutation) {\n this.mutations.push(mutation);\n this.notify({\n type: \"added\",\n mutation\n });\n }\n remove(mutation) {\n this.mutations = this.mutations.filter((x2) => x2 !== mutation);\n this.notify({\n type: \"removed\",\n mutation\n });\n }\n clear() {\n notifyManager.batch(() => {\n this.mutations.forEach((mutation) => {\n this.remove(mutation);\n });\n });\n }\n getAll() {\n return this.mutations;\n }\n find(filters) {\n if (typeof filters.exact === \"undefined\") {\n filters.exact = true;\n }\n return this.mutations.find((mutation) => matchMutation(filters, mutation));\n }\n findAll(filters) {\n return this.mutations.filter((mutation) => matchMutation(filters, mutation));\n }\n notify(event) {\n notifyManager.batch(() => {\n this.listeners.forEach(({\n listener\n }) => {\n listener(event);\n });\n });\n }\n resumePausedMutations() {\n var _this$resuming;\n this.resuming = ((_this$resuming = this.resuming) != null ? _this$resuming : Promise.resolve()).then(() => {\n const pausedMutations = this.mutations.filter((x2) => x2.state.isPaused);\n return notifyManager.batch(() => pausedMutations.reduce((promise, mutation) => promise.then(() => mutation.continue().catch(noop$7)), Promise.resolve()));\n }).then(() => {\n this.resuming = void 0;\n });\n return this.resuming;\n }\n}\nfunction infiniteQueryBehavior() {\n return {\n onFetch: (context) => {\n context.fetchFn = () => {\n var _context$fetchOptions, _context$fetchOptions2, _context$fetchOptions3, _context$fetchOptions4, _context$state$data, _context$state$data2;\n const refetchPage = (_context$fetchOptions = context.fetchOptions) == null ? void 0 : (_context$fetchOptions2 = _context$fetchOptions.meta) == null ? void 0 : _context$fetchOptions2.refetchPage;\n const fetchMore = (_context$fetchOptions3 = context.fetchOptions) == null ? void 0 : (_context$fetchOptions4 = _context$fetchOptions3.meta) == null ? void 0 : _context$fetchOptions4.fetchMore;\n const pageParam = fetchMore == null ? void 0 : fetchMore.pageParam;\n const isFetchingNextPage = (fetchMore == null ? void 0 : fetchMore.direction) === \"forward\";\n const isFetchingPreviousPage = (fetchMore == null ? void 0 : fetchMore.direction) === \"backward\";\n const oldPages = ((_context$state$data = context.state.data) == null ? void 0 : _context$state$data.pages) || [];\n const oldPageParams = ((_context$state$data2 = context.state.data) == null ? void 0 : _context$state$data2.pageParams) || [];\n let newPageParams = oldPageParams;\n let cancelled = false;\n const addSignalProperty = (object) => {\n Object.defineProperty(object, \"signal\", {\n enumerable: true,\n get: () => {\n var _context$signal;\n if ((_context$signal = context.signal) != null && _context$signal.aborted) {\n cancelled = true;\n } else {\n var _context$signal2;\n (_context$signal2 = context.signal) == null ? void 0 : _context$signal2.addEventListener(\"abort\", () => {\n cancelled = true;\n });\n }\n return context.signal;\n }\n });\n };\n const queryFn = context.options.queryFn || (() => Promise.reject(\"Missing queryFn for queryKey '\" + context.options.queryHash + \"'\"));\n const buildNewPages = (pages, param, page, previous) => {\n newPageParams = previous ? [param, ...newPageParams] : [...newPageParams, param];\n return previous ? [page, ...pages] : [...pages, page];\n };\n const fetchPage = (pages, manual, param, previous) => {\n if (cancelled) {\n return Promise.reject(\"Cancelled\");\n }\n if (typeof param === \"undefined\" && !manual && pages.length) {\n return Promise.resolve(pages);\n }\n const queryFnContext = {\n queryKey: context.queryKey,\n pageParam: param,\n meta: context.options.meta\n };\n addSignalProperty(queryFnContext);\n const queryFnResult = queryFn(queryFnContext);\n const promise2 = Promise.resolve(queryFnResult).then((page) => buildNewPages(pages, param, page, previous));\n return promise2;\n };\n let promise;\n if (!oldPages.length) {\n promise = fetchPage([]);\n } else if (isFetchingNextPage) {\n const manual = typeof pageParam !== \"undefined\";\n const param = manual ? pageParam : getNextPageParam(context.options, oldPages);\n promise = fetchPage(oldPages, manual, param);\n } else if (isFetchingPreviousPage) {\n const manual = typeof pageParam !== \"undefined\";\n const param = manual ? pageParam : getPreviousPageParam(context.options, oldPages);\n promise = fetchPage(oldPages, manual, param, true);\n } else {\n newPageParams = [];\n const manual = typeof context.options.getNextPageParam === \"undefined\";\n const shouldFetchFirstPage = refetchPage && oldPages[0] ? refetchPage(oldPages[0], 0, oldPages) : true;\n promise = shouldFetchFirstPage ? fetchPage([], manual, oldPageParams[0]) : Promise.resolve(buildNewPages([], oldPageParams[0], oldPages[0]));\n for (let i = 1; i < oldPages.length; i++) {\n promise = promise.then((pages) => {\n const shouldFetchNextPage = refetchPage && oldPages[i] ? refetchPage(oldPages[i], i, oldPages) : true;\n if (shouldFetchNextPage) {\n const param = manual ? oldPageParams[i] : getNextPageParam(context.options, pages);\n return fetchPage(pages, manual, param);\n }\n return Promise.resolve(buildNewPages(pages, oldPageParams[i], oldPages[i]));\n });\n }\n }\n const finalPromise = promise.then((pages) => ({\n pages,\n pageParams: newPageParams\n }));\n return finalPromise;\n };\n }\n };\n}\nfunction getNextPageParam(options, pages) {\n return options.getNextPageParam == null ? void 0 : options.getNextPageParam(pages[pages.length - 1], pages);\n}\nfunction getPreviousPageParam(options, pages) {\n return options.getPreviousPageParam == null ? void 0 : options.getPreviousPageParam(pages[0], pages);\n}\nclass QueryClient {\n constructor(config2 = {}) {\n this.queryCache = config2.queryCache || new QueryCache();\n this.mutationCache = config2.mutationCache || new MutationCache();\n this.logger = config2.logger || defaultLogger;\n this.defaultOptions = config2.defaultOptions || {};\n this.queryDefaults = [];\n this.mutationDefaults = [];\n this.mountCount = 0;\n if (process.env.NODE_ENV !== \"production\" && config2.logger) {\n this.logger.error(\"Passing a custom logger has been deprecated and will be removed in the next major version.\");\n }\n }\n mount() {\n this.mountCount++;\n if (this.mountCount !== 1) return;\n this.unsubscribeFocus = focusManager.subscribe(() => {\n if (focusManager.isFocused()) {\n this.resumePausedMutations();\n this.queryCache.onFocus();\n }\n });\n this.unsubscribeOnline = onlineManager.subscribe(() => {\n if (onlineManager.isOnline()) {\n this.resumePausedMutations();\n this.queryCache.onOnline();\n }\n });\n }\n unmount() {\n var _this$unsubscribeFocu, _this$unsubscribeOnli;\n this.mountCount--;\n if (this.mountCount !== 0) return;\n (_this$unsubscribeFocu = this.unsubscribeFocus) == null ? void 0 : _this$unsubscribeFocu.call(this);\n this.unsubscribeFocus = void 0;\n (_this$unsubscribeOnli = this.unsubscribeOnline) == null ? void 0 : _this$unsubscribeOnli.call(this);\n this.unsubscribeOnline = void 0;\n }\n isFetching(arg1, arg2) {\n const [filters] = parseFilterArgs(arg1, arg2);\n filters.fetchStatus = \"fetching\";\n return this.queryCache.findAll(filters).length;\n }\n isMutating(filters) {\n return this.mutationCache.findAll({\n ...filters,\n fetching: true\n }).length;\n }\n getQueryData(queryKey, filters) {\n var _this$queryCache$find;\n return (_this$queryCache$find = this.queryCache.find(queryKey, filters)) == null ? void 0 : _this$queryCache$find.state.data;\n }\n ensureQueryData(arg1, arg2, arg3) {\n const parsedOptions = parseQueryArgs(arg1, arg2, arg3);\n const cachedData = this.getQueryData(parsedOptions.queryKey);\n return cachedData ? Promise.resolve(cachedData) : this.fetchQuery(parsedOptions);\n }\n getQueriesData(queryKeyOrFilters) {\n return this.getQueryCache().findAll(queryKeyOrFilters).map(({\n queryKey,\n state\n }) => {\n const data = state.data;\n return [queryKey, data];\n });\n }\n setQueryData(queryKey, updater, options) {\n const query = this.queryCache.find(queryKey);\n const prevData = query == null ? void 0 : query.state.data;\n const data = functionalUpdate(updater, prevData);\n if (typeof data === \"undefined\") {\n return void 0;\n }\n const parsedOptions = parseQueryArgs(queryKey);\n const defaultedOptions = this.defaultQueryOptions(parsedOptions);\n return this.queryCache.build(this, defaultedOptions).setData(data, {\n ...options,\n manual: true\n });\n }\n setQueriesData(queryKeyOrFilters, updater, options) {\n return notifyManager.batch(() => this.getQueryCache().findAll(queryKeyOrFilters).map(({\n queryKey\n }) => [queryKey, this.setQueryData(queryKey, updater, options)]));\n }\n getQueryState(queryKey, filters) {\n var _this$queryCache$find2;\n return (_this$queryCache$find2 = this.queryCache.find(queryKey, filters)) == null ? void 0 : _this$queryCache$find2.state;\n }\n removeQueries(arg1, arg2) {\n const [filters] = parseFilterArgs(arg1, arg2);\n const queryCache = this.queryCache;\n notifyManager.batch(() => {\n queryCache.findAll(filters).forEach((query) => {\n queryCache.remove(query);\n });\n });\n }\n resetQueries(arg1, arg2, arg3) {\n const [filters, options] = parseFilterArgs(arg1, arg2, arg3);\n const queryCache = this.queryCache;\n const refetchFilters = {\n type: \"active\",\n ...filters\n };\n return notifyManager.batch(() => {\n queryCache.findAll(filters).forEach((query) => {\n query.reset();\n });\n return this.refetchQueries(refetchFilters, options);\n });\n }\n cancelQueries(arg1, arg2, arg3) {\n const [filters, cancelOptions = {}] = parseFilterArgs(arg1, arg2, arg3);\n if (typeof cancelOptions.revert === \"undefined\") {\n cancelOptions.revert = true;\n }\n const promises = notifyManager.batch(() => this.queryCache.findAll(filters).map((query) => query.cancel(cancelOptions)));\n return Promise.all(promises).then(noop$7).catch(noop$7);\n }\n invalidateQueries(arg1, arg2, arg3) {\n const [filters, options] = parseFilterArgs(arg1, arg2, arg3);\n return notifyManager.batch(() => {\n var _ref, _filters$refetchType;\n this.queryCache.findAll(filters).forEach((query) => {\n query.invalidate();\n });\n if (filters.refetchType === \"none\") {\n return Promise.resolve();\n }\n const refetchFilters = {\n ...filters,\n type: (_ref = (_filters$refetchType = filters.refetchType) != null ? _filters$refetchType : filters.type) != null ? _ref : \"active\"\n };\n return this.refetchQueries(refetchFilters, options);\n });\n }\n refetchQueries(arg1, arg2, arg3) {\n const [filters, options] = parseFilterArgs(arg1, arg2, arg3);\n const promises = notifyManager.batch(() => this.queryCache.findAll(filters).filter((query) => !query.isDisabled()).map((query) => {\n var _options$cancelRefetc;\n return query.fetch(void 0, {\n ...options,\n cancelRefetch: (_options$cancelRefetc = options == null ? void 0 : options.cancelRefetch) != null ? _options$cancelRefetc : true,\n meta: {\n refetchPage: filters.refetchPage\n }\n });\n }));\n let promise = Promise.all(promises).then(noop$7);\n if (!(options != null && options.throwOnError)) {\n promise = promise.catch(noop$7);\n }\n return promise;\n }\n fetchQuery(arg1, arg2, arg3) {\n const parsedOptions = parseQueryArgs(arg1, arg2, arg3);\n const defaultedOptions = this.defaultQueryOptions(parsedOptions);\n if (typeof defaultedOptions.retry === \"undefined\") {\n defaultedOptions.retry = false;\n }\n const query = this.queryCache.build(this, defaultedOptions);\n return query.isStaleByTime(defaultedOptions.staleTime) ? query.fetch(defaultedOptions) : Promise.resolve(query.state.data);\n }\n prefetchQuery(arg1, arg2, arg3) {\n return this.fetchQuery(arg1, arg2, arg3).then(noop$7).catch(noop$7);\n }\n fetchInfiniteQuery(arg1, arg2, arg3) {\n const parsedOptions = parseQueryArgs(arg1, arg2, arg3);\n parsedOptions.behavior = infiniteQueryBehavior();\n return this.fetchQuery(parsedOptions);\n }\n prefetchInfiniteQuery(arg1, arg2, arg3) {\n return this.fetchInfiniteQuery(arg1, arg2, arg3).then(noop$7).catch(noop$7);\n }\n resumePausedMutations() {\n return this.mutationCache.resumePausedMutations();\n }\n getQueryCache() {\n return this.queryCache;\n }\n getMutationCache() {\n return this.mutationCache;\n }\n getLogger() {\n return this.logger;\n }\n getDefaultOptions() {\n return this.defaultOptions;\n }\n setDefaultOptions(options) {\n this.defaultOptions = options;\n }\n setQueryDefaults(queryKey, options) {\n const result = this.queryDefaults.find((x2) => hashQueryKey(queryKey) === hashQueryKey(x2.queryKey));\n if (result) {\n result.defaultOptions = options;\n } else {\n this.queryDefaults.push({\n queryKey,\n defaultOptions: options\n });\n }\n }\n getQueryDefaults(queryKey) {\n if (!queryKey) {\n return void 0;\n }\n const firstMatchingDefaults = this.queryDefaults.find((x2) => partialMatchKey(queryKey, x2.queryKey));\n if (process.env.NODE_ENV !== \"production\") {\n const matchingDefaults = this.queryDefaults.filter((x2) => partialMatchKey(queryKey, x2.queryKey));\n if (matchingDefaults.length > 1) {\n this.logger.error(\"[QueryClient] Several query defaults match with key '\" + JSON.stringify(queryKey) + \"'. The first matching query defaults are used. Please check how query defaults are registered. Order does matter here. cf. https://react-query.tanstack.com/reference/QueryClient#queryclientsetquerydefaults.\");\n }\n }\n return firstMatchingDefaults == null ? void 0 : firstMatchingDefaults.defaultOptions;\n }\n setMutationDefaults(mutationKey, options) {\n const result = this.mutationDefaults.find((x2) => hashQueryKey(mutationKey) === hashQueryKey(x2.mutationKey));\n if (result) {\n result.defaultOptions = options;\n } else {\n this.mutationDefaults.push({\n mutationKey,\n defaultOptions: options\n });\n }\n }\n getMutationDefaults(mutationKey) {\n if (!mutationKey) {\n return void 0;\n }\n const firstMatchingDefaults = this.mutationDefaults.find((x2) => partialMatchKey(mutationKey, x2.mutationKey));\n if (process.env.NODE_ENV !== \"production\") {\n const matchingDefaults = this.mutationDefaults.filter((x2) => partialMatchKey(mutationKey, x2.mutationKey));\n if (matchingDefaults.length > 1) {\n this.logger.error(\"[QueryClient] Several mutation defaults match with key '\" + JSON.stringify(mutationKey) + \"'. The first matching mutation defaults are used. Please check how mutation defaults are registered. Order does matter here. cf. https://react-query.tanstack.com/reference/QueryClient#queryclientsetmutationdefaults.\");\n }\n }\n return firstMatchingDefaults == null ? void 0 : firstMatchingDefaults.defaultOptions;\n }\n defaultQueryOptions(options) {\n if (options != null && options._defaulted) {\n return options;\n }\n const defaultedOptions = {\n ...this.defaultOptions.queries,\n ...this.getQueryDefaults(options == null ? void 0 : options.queryKey),\n ...options,\n _defaulted: true\n };\n if (!defaultedOptions.queryHash && defaultedOptions.queryKey) {\n defaultedOptions.queryHash = hashQueryKeyByOptions(defaultedOptions.queryKey, defaultedOptions);\n }\n if (typeof defaultedOptions.refetchOnReconnect === \"undefined\") {\n defaultedOptions.refetchOnReconnect = defaultedOptions.networkMode !== \"always\";\n }\n if (typeof defaultedOptions.useErrorBoundary === \"undefined\") {\n defaultedOptions.useErrorBoundary = !!defaultedOptions.suspense;\n }\n return defaultedOptions;\n }\n defaultMutationOptions(options) {\n if (options != null && options._defaulted) {\n return options;\n }\n return {\n ...this.defaultOptions.mutations,\n ...this.getMutationDefaults(options == null ? void 0 : options.mutationKey),\n ...options,\n _defaulted: true\n };\n }\n clear() {\n this.queryCache.clear();\n this.mutationCache.clear();\n }\n}\nclass QueryObserver extends Subscribable {\n constructor(client, options) {\n super();\n this.client = client;\n this.options = options;\n this.trackedProps = /* @__PURE__ */ new Set();\n this.selectError = null;\n this.bindMethods();\n this.setOptions(options);\n }\n bindMethods() {\n this.remove = this.remove.bind(this);\n this.refetch = this.refetch.bind(this);\n }\n onSubscribe() {\n if (this.listeners.size === 1) {\n this.currentQuery.addObserver(this);\n if (shouldFetchOnMount(this.currentQuery, this.options)) {\n this.executeFetch();\n }\n this.updateTimers();\n }\n }\n onUnsubscribe() {\n if (!this.hasListeners()) {\n this.destroy();\n }\n }\n shouldFetchOnReconnect() {\n return shouldFetchOn(this.currentQuery, this.options, this.options.refetchOnReconnect);\n }\n shouldFetchOnWindowFocus() {\n return shouldFetchOn(this.currentQuery, this.options, this.options.refetchOnWindowFocus);\n }\n destroy() {\n this.listeners = /* @__PURE__ */ new Set();\n this.clearStaleTimeout();\n this.clearRefetchInterval();\n this.currentQuery.removeObserver(this);\n }\n setOptions(options, notifyOptions) {\n const prevOptions = this.options;\n const prevQuery = this.currentQuery;\n this.options = this.client.defaultQueryOptions(options);\n if (process.env.NODE_ENV !== \"production\" && typeof (options == null ? void 0 : options.isDataEqual) !== \"undefined\") {\n this.client.getLogger().error(\"The isDataEqual option has been deprecated and will be removed in the next major version. You can achieve the same functionality by passing a function as the structuralSharing option\");\n }\n if (!shallowEqualObjects(prevOptions, this.options)) {\n this.client.getQueryCache().notify({\n type: \"observerOptionsUpdated\",\n query: this.currentQuery,\n observer: this\n });\n }\n if (typeof this.options.enabled !== \"undefined\" && typeof this.options.enabled !== \"boolean\") {\n throw new Error(\"Expected enabled to be a boolean\");\n }\n if (!this.options.queryKey) {\n this.options.queryKey = prevOptions.queryKey;\n }\n this.updateQuery();\n const mounted = this.hasListeners();\n if (mounted && shouldFetchOptionally(this.currentQuery, prevQuery, this.options, prevOptions)) {\n this.executeFetch();\n }\n this.updateResult(notifyOptions);\n if (mounted && (this.currentQuery !== prevQuery || this.options.enabled !== prevOptions.enabled || this.options.staleTime !== prevOptions.staleTime)) {\n this.updateStaleTimeout();\n }\n const nextRefetchInterval = this.computeRefetchInterval();\n if (mounted && (this.currentQuery !== prevQuery || this.options.enabled !== prevOptions.enabled || nextRefetchInterval !== this.currentRefetchInterval)) {\n this.updateRefetchInterval(nextRefetchInterval);\n }\n }\n getOptimisticResult(options) {\n const query = this.client.getQueryCache().build(this.client, options);\n const result = this.createResult(query, options);\n if (shouldAssignObserverCurrentProperties(this, result, options)) {\n this.currentResult = result;\n this.currentResultOptions = this.options;\n this.currentResultState = this.currentQuery.state;\n }\n return result;\n }\n getCurrentResult() {\n return this.currentResult;\n }\n trackResult(result) {\n const trackedResult = {};\n Object.keys(result).forEach((key) => {\n Object.defineProperty(trackedResult, key, {\n configurable: false,\n enumerable: true,\n get: () => {\n this.trackedProps.add(key);\n return result[key];\n }\n });\n });\n return trackedResult;\n }\n getCurrentQuery() {\n return this.currentQuery;\n }\n remove() {\n this.client.getQueryCache().remove(this.currentQuery);\n }\n refetch({\n refetchPage,\n ...options\n } = {}) {\n return this.fetch({\n ...options,\n meta: {\n refetchPage\n }\n });\n }\n fetchOptimistic(options) {\n const defaultedOptions = this.client.defaultQueryOptions(options);\n const query = this.client.getQueryCache().build(this.client, defaultedOptions);\n query.isFetchingOptimistic = true;\n return query.fetch().then(() => this.createResult(query, defaultedOptions));\n }\n fetch(fetchOptions) {\n var _fetchOptions$cancelR;\n return this.executeFetch({\n ...fetchOptions,\n cancelRefetch: (_fetchOptions$cancelR = fetchOptions.cancelRefetch) != null ? _fetchOptions$cancelR : true\n }).then(() => {\n this.updateResult();\n return this.currentResult;\n });\n }\n executeFetch(fetchOptions) {\n this.updateQuery();\n let promise = this.currentQuery.fetch(this.options, fetchOptions);\n if (!(fetchOptions != null && fetchOptions.throwOnError)) {\n promise = promise.catch(noop$7);\n }\n return promise;\n }\n updateStaleTimeout() {\n this.clearStaleTimeout();\n if (isServer || this.currentResult.isStale || !isValidTimeout(this.options.staleTime)) {\n return;\n }\n const time = timeUntilStale(this.currentResult.dataUpdatedAt, this.options.staleTime);\n const timeout = time + 1;\n this.staleTimeoutId = setTimeout(() => {\n if (!this.currentResult.isStale) {\n this.updateResult();\n }\n }, timeout);\n }\n computeRefetchInterval() {\n var _this$options$refetch;\n return typeof this.options.refetchInterval === \"function\" ? this.options.refetchInterval(this.currentResult.data, this.currentQuery) : (_this$options$refetch = this.options.refetchInterval) != null ? _this$options$refetch : false;\n }\n updateRefetchInterval(nextInterval) {\n this.clearRefetchInterval();\n this.currentRefetchInterval = nextInterval;\n if (isServer || this.options.enabled === false || !isValidTimeout(this.currentRefetchInterval) || this.currentRefetchInterval === 0) {\n return;\n }\n this.refetchIntervalId = setInterval(() => {\n if (this.options.refetchIntervalInBackground || focusManager.isFocused()) {\n this.executeFetch();\n }\n }, this.currentRefetchInterval);\n }\n updateTimers() {\n this.updateStaleTimeout();\n this.updateRefetchInterval(this.computeRefetchInterval());\n }\n clearStaleTimeout() {\n if (this.staleTimeoutId) {\n clearTimeout(this.staleTimeoutId);\n this.staleTimeoutId = void 0;\n }\n }\n clearRefetchInterval() {\n if (this.refetchIntervalId) {\n clearInterval(this.refetchIntervalId);\n this.refetchIntervalId = void 0;\n }\n }\n createResult(query, options) {\n const prevQuery = this.currentQuery;\n const prevOptions = this.options;\n const prevResult = this.currentResult;\n const prevResultState = this.currentResultState;\n const prevResultOptions = this.currentResultOptions;\n const queryChange = query !== prevQuery;\n const queryInitialState = queryChange ? query.state : this.currentQueryInitialState;\n const prevQueryResult = queryChange ? this.currentResult : this.previousQueryResult;\n const {\n state\n } = query;\n let {\n dataUpdatedAt,\n error: error2,\n errorUpdatedAt,\n fetchStatus,\n status\n } = state;\n let isPreviousData = false;\n let isPlaceholderData = false;\n let data;\n if (options._optimisticResults) {\n const mounted = this.hasListeners();\n const fetchOnMount = !mounted && shouldFetchOnMount(query, options);\n const fetchOptionally = mounted && shouldFetchOptionally(query, prevQuery, options, prevOptions);\n if (fetchOnMount || fetchOptionally) {\n fetchStatus = canFetch(query.options.networkMode) ? \"fetching\" : \"paused\";\n if (!dataUpdatedAt) {\n status = \"loading\";\n }\n }\n if (options._optimisticResults === \"isRestoring\") {\n fetchStatus = \"idle\";\n }\n }\n if (options.keepPreviousData && !state.dataUpdatedAt && prevQueryResult != null && prevQueryResult.isSuccess && status !== \"error\") {\n data = prevQueryResult.data;\n dataUpdatedAt = prevQueryResult.dataUpdatedAt;\n status = prevQueryResult.status;\n isPreviousData = true;\n } else if (options.select && typeof state.data !== \"undefined\") {\n if (prevResult && state.data === (prevResultState == null ? void 0 : prevResultState.data) && options.select === this.selectFn) {\n data = this.selectResult;\n } else {\n try {\n this.selectFn = options.select;\n data = options.select(state.data);\n data = replaceData(prevResult == null ? void 0 : prevResult.data, data, options);\n this.selectResult = data;\n this.selectError = null;\n } catch (selectError) {\n if (process.env.NODE_ENV !== \"production\") {\n this.client.getLogger().error(selectError);\n }\n this.selectError = selectError;\n }\n }\n } else {\n data = state.data;\n }\n if (typeof options.placeholderData !== \"undefined\" && typeof data === \"undefined\" && status === \"loading\") {\n let placeholderData;\n if (prevResult != null && prevResult.isPlaceholderData && options.placeholderData === (prevResultOptions == null ? void 0 : prevResultOptions.placeholderData)) {\n placeholderData = prevResult.data;\n } else {\n placeholderData = typeof options.placeholderData === \"function\" ? options.placeholderData() : options.placeholderData;\n if (options.select && typeof placeholderData !== \"undefined\") {\n try {\n placeholderData = options.select(placeholderData);\n this.selectError = null;\n } catch (selectError) {\n if (process.env.NODE_ENV !== \"production\") {\n this.client.getLogger().error(selectError);\n }\n this.selectError = selectError;\n }\n }\n }\n if (typeof placeholderData !== \"undefined\") {\n status = \"success\";\n data = replaceData(prevResult == null ? void 0 : prevResult.data, placeholderData, options);\n isPlaceholderData = true;\n }\n }\n if (this.selectError) {\n error2 = this.selectError;\n data = this.selectResult;\n errorUpdatedAt = Date.now();\n status = \"error\";\n }\n const isFetching = fetchStatus === \"fetching\";\n const isLoading = status === \"loading\";\n const isError2 = status === \"error\";\n const result = {\n status,\n fetchStatus,\n isLoading,\n isSuccess: status === \"success\",\n isError: isError2,\n isInitialLoading: isLoading && isFetching,\n data,\n dataUpdatedAt,\n error: error2,\n errorUpdatedAt,\n failureCount: state.fetchFailureCount,\n failureReason: state.fetchFailureReason,\n errorUpdateCount: state.errorUpdateCount,\n isFetched: state.dataUpdateCount > 0 || state.errorUpdateCount > 0,\n isFetchedAfterMount: state.dataUpdateCount > queryInitialState.dataUpdateCount || state.errorUpdateCount > queryInitialState.errorUpdateCount,\n isFetching,\n isRefetching: isFetching && !isLoading,\n isLoadingError: isError2 && state.dataUpdatedAt === 0,\n isPaused: fetchStatus === \"paused\",\n isPlaceholderData,\n isPreviousData,\n isRefetchError: isError2 && state.dataUpdatedAt !== 0,\n isStale: isStale(query, options),\n refetch: this.refetch,\n remove: this.remove\n };\n return result;\n }\n updateResult(notifyOptions) {\n const prevResult = this.currentResult;\n const nextResult = this.createResult(this.currentQuery, this.options);\n this.currentResultState = this.currentQuery.state;\n this.currentResultOptions = this.options;\n if (shallowEqualObjects(nextResult, prevResult)) {\n return;\n }\n this.currentResult = nextResult;\n const defaultNotifyOptions = {\n cache: true\n };\n const shouldNotifyListeners = () => {\n if (!prevResult) {\n return true;\n }\n const {\n notifyOnChangeProps\n } = this.options;\n const notifyOnChangePropsValue = typeof notifyOnChangeProps === \"function\" ? notifyOnChangeProps() : notifyOnChangeProps;\n if (notifyOnChangePropsValue === \"all\" || !notifyOnChangePropsValue && !this.trackedProps.size) {\n return true;\n }\n const includedProps = new Set(notifyOnChangePropsValue != null ? notifyOnChangePropsValue : this.trackedProps);\n if (this.options.useErrorBoundary) {\n includedProps.add(\"error\");\n }\n return Object.keys(this.currentResult).some((key) => {\n const typedKey = key;\n const changed = this.currentResult[typedKey] !== prevResult[typedKey];\n return changed && includedProps.has(typedKey);\n });\n };\n if ((notifyOptions == null ? void 0 : notifyOptions.listeners) !== false && shouldNotifyListeners()) {\n defaultNotifyOptions.listeners = true;\n }\n this.notify({\n ...defaultNotifyOptions,\n ...notifyOptions\n });\n }\n updateQuery() {\n const query = this.client.getQueryCache().build(this.client, this.options);\n if (query === this.currentQuery) {\n return;\n }\n const prevQuery = this.currentQuery;\n this.currentQuery = query;\n this.currentQueryInitialState = query.state;\n this.previousQueryResult = this.currentResult;\n if (this.hasListeners()) {\n prevQuery == null ? void 0 : prevQuery.removeObserver(this);\n query.addObserver(this);\n }\n }\n onQueryUpdate(action) {\n const notifyOptions = {};\n if (action.type === \"success\") {\n notifyOptions.onSuccess = !action.manual;\n } else if (action.type === \"error\" && !isCancelledError(action.error)) {\n notifyOptions.onError = true;\n }\n this.updateResult(notifyOptions);\n if (this.hasListeners()) {\n this.updateTimers();\n }\n }\n notify(notifyOptions) {\n notifyManager.batch(() => {\n if (notifyOptions.onSuccess) {\n var _this$options$onSucce, _this$options, _this$options$onSettl, _this$options2;\n (_this$options$onSucce = (_this$options = this.options).onSuccess) == null ? void 0 : _this$options$onSucce.call(_this$options, this.currentResult.data);\n (_this$options$onSettl = (_this$options2 = this.options).onSettled) == null ? void 0 : _this$options$onSettl.call(_this$options2, this.currentResult.data, null);\n } else if (notifyOptions.onError) {\n var _this$options$onError, _this$options3, _this$options$onSettl2, _this$options4;\n (_this$options$onError = (_this$options3 = this.options).onError) == null ? void 0 : _this$options$onError.call(_this$options3, this.currentResult.error);\n (_this$options$onSettl2 = (_this$options4 = this.options).onSettled) == null ? void 0 : _this$options$onSettl2.call(_this$options4, void 0, this.currentResult.error);\n }\n if (notifyOptions.listeners) {\n this.listeners.forEach(({\n listener\n }) => {\n listener(this.currentResult);\n });\n }\n if (notifyOptions.cache) {\n this.client.getQueryCache().notify({\n query: this.currentQuery,\n type: \"observerResultsUpdated\"\n });\n }\n });\n }\n}\nfunction shouldLoadOnMount(query, options) {\n return options.enabled !== false && !query.state.dataUpdatedAt && !(query.state.status === \"error\" && options.retryOnMount === false);\n}\nfunction shouldFetchOnMount(query, options) {\n return shouldLoadOnMount(query, options) || query.state.dataUpdatedAt > 0 && shouldFetchOn(query, options, options.refetchOnMount);\n}\nfunction shouldFetchOn(query, options, field) {\n if (options.enabled !== false) {\n const value = typeof field === \"function\" ? field(query) : field;\n return value === \"always\" || value !== false && isStale(query, options);\n }\n return false;\n}\nfunction shouldFetchOptionally(query, prevQuery, options, prevOptions) {\n return options.enabled !== false && (query !== prevQuery || prevOptions.enabled === false) && (!options.suspense || query.state.status !== \"error\") && isStale(query, options);\n}\nfunction isStale(query, options) {\n return query.isStaleByTime(options.staleTime);\n}\nfunction shouldAssignObserverCurrentProperties(observer, optimisticResult, options) {\n if (options.keepPreviousData) {\n return false;\n }\n if (options.placeholderData !== void 0) {\n return optimisticResult.isPlaceholderData;\n }\n if (!shallowEqualObjects(observer.getCurrentResult(), optimisticResult)) {\n return true;\n }\n return false;\n}\nclass MutationObserver extends Subscribable {\n constructor(client, options) {\n super();\n this.client = client;\n this.setOptions(options);\n this.bindMethods();\n this.updateResult();\n }\n bindMethods() {\n this.mutate = this.mutate.bind(this);\n this.reset = this.reset.bind(this);\n }\n setOptions(options) {\n var _this$currentMutation;\n const prevOptions = this.options;\n this.options = this.client.defaultMutationOptions(options);\n if (!shallowEqualObjects(prevOptions, this.options)) {\n this.client.getMutationCache().notify({\n type: \"observerOptionsUpdated\",\n mutation: this.currentMutation,\n observer: this\n });\n }\n (_this$currentMutation = this.currentMutation) == null ? void 0 : _this$currentMutation.setOptions(this.options);\n }\n onUnsubscribe() {\n if (!this.hasListeners()) {\n var _this$currentMutation2;\n (_this$currentMutation2 = this.currentMutation) == null ? void 0 : _this$currentMutation2.removeObserver(this);\n }\n }\n onMutationUpdate(action) {\n this.updateResult();\n const notifyOptions = {\n listeners: true\n };\n if (action.type === \"success\") {\n notifyOptions.onSuccess = true;\n } else if (action.type === \"error\") {\n notifyOptions.onError = true;\n }\n this.notify(notifyOptions);\n }\n getCurrentResult() {\n return this.currentResult;\n }\n reset() {\n this.currentMutation = void 0;\n this.updateResult();\n this.notify({\n listeners: true\n });\n }\n mutate(variables, options) {\n this.mutateOptions = options;\n if (this.currentMutation) {\n this.currentMutation.removeObserver(this);\n }\n this.currentMutation = this.client.getMutationCache().build(this.client, {\n ...this.options,\n variables: typeof variables !== \"undefined\" ? variables : this.options.variables\n });\n this.currentMutation.addObserver(this);\n return this.currentMutation.execute();\n }\n updateResult() {\n const state = this.currentMutation ? this.currentMutation.state : getDefaultState();\n const result = {\n ...state,\n isLoading: state.status === \"loading\",\n isSuccess: state.status === \"success\",\n isError: state.status === \"error\",\n isIdle: state.status === \"idle\",\n mutate: this.mutate,\n reset: this.reset\n };\n this.currentResult = result;\n }\n notify(options) {\n notifyManager.batch(() => {\n if (this.mutateOptions && this.hasListeners()) {\n if (options.onSuccess) {\n var _this$mutateOptions$o, _this$mutateOptions, _this$mutateOptions$o2, _this$mutateOptions2;\n (_this$mutateOptions$o = (_this$mutateOptions = this.mutateOptions).onSuccess) == null ? void 0 : _this$mutateOptions$o.call(_this$mutateOptions, this.currentResult.data, this.currentResult.variables, this.currentResult.context);\n (_this$mutateOptions$o2 = (_this$mutateOptions2 = this.mutateOptions).onSettled) == null ? void 0 : _this$mutateOptions$o2.call(_this$mutateOptions2, this.currentResult.data, null, this.currentResult.variables, this.currentResult.context);\n } else if (options.onError) {\n var _this$mutateOptions$o3, _this$mutateOptions3, _this$mutateOptions$o4, _this$mutateOptions4;\n (_this$mutateOptions$o3 = (_this$mutateOptions3 = this.mutateOptions).onError) == null ? void 0 : _this$mutateOptions$o3.call(_this$mutateOptions3, this.currentResult.error, this.currentResult.variables, this.currentResult.context);\n (_this$mutateOptions$o4 = (_this$mutateOptions4 = this.mutateOptions).onSettled) == null ? void 0 : _this$mutateOptions$o4.call(_this$mutateOptions4, void 0, this.currentResult.error, this.currentResult.variables, this.currentResult.context);\n }\n }\n if (options.listeners) {\n this.listeners.forEach(({\n listener\n }) => {\n listener(this.currentResult);\n });\n }\n });\n }\n}\nvar shim$1 = { exports: {} };\nvar useSyncExternalStoreShim_production_min$1 = {};\n/**\n * @license React\n * use-sync-external-store-shim.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\nvar hasRequiredUseSyncExternalStoreShim_production_min$1;\nfunction requireUseSyncExternalStoreShim_production_min$1() {\n if (hasRequiredUseSyncExternalStoreShim_production_min$1) return useSyncExternalStoreShim_production_min$1;\n hasRequiredUseSyncExternalStoreShim_production_min$1 = 1;\n var e = React__default;\n function h2(a2, b2) {\n return a2 === b2 && (0 !== a2 || 1 / a2 === 1 / b2) || a2 !== a2 && b2 !== b2;\n }\n var k2 = \"function\" === typeof Object.is ? Object.is : h2, l2 = e.useState, m = e.useEffect, n2 = e.useLayoutEffect, p2 = e.useDebugValue;\n function q2(a2, b2) {\n var d2 = b2(), f2 = l2({ inst: { value: d2, getSnapshot: b2 } }), c2 = f2[0].inst, g2 = f2[1];\n n2(function() {\n c2.value = d2;\n c2.getSnapshot = b2;\n r2(c2) && g2({ inst: c2 });\n }, [a2, d2, b2]);\n m(function() {\n r2(c2) && g2({ inst: c2 });\n return a2(function() {\n r2(c2) && g2({ inst: c2 });\n });\n }, [a2]);\n p2(d2);\n return d2;\n }\n function r2(a2) {\n var b2 = a2.getSnapshot;\n a2 = a2.value;\n try {\n var d2 = b2();\n return !k2(a2, d2);\n } catch (f2) {\n return true;\n }\n }\n function t2(a2, b2) {\n return b2();\n }\n var u2 = \"undefined\" === typeof window || \"undefined\" === typeof window.document || \"undefined\" === typeof window.document.createElement ? t2 : q2;\n useSyncExternalStoreShim_production_min$1.useSyncExternalStore = void 0 !== e.useSyncExternalStore ? e.useSyncExternalStore : u2;\n return useSyncExternalStoreShim_production_min$1;\n}\nvar useSyncExternalStoreShim_development$1 = {};\n/**\n * @license React\n * use-sync-external-store-shim.development.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\nvar hasRequiredUseSyncExternalStoreShim_development$1;\nfunction requireUseSyncExternalStoreShim_development$1() {\n if (hasRequiredUseSyncExternalStoreShim_development$1) return useSyncExternalStoreShim_development$1;\n hasRequiredUseSyncExternalStoreShim_development$1 = 1;\n if (process.env.NODE_ENV !== \"production\") {\n (function() {\n if (typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== \"undefined\" && typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart === \"function\") {\n __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(new Error());\n }\n var React2 = React__default;\n var ReactSharedInternals = React2.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;\n function error2(format2) {\n {\n {\n for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n printWarning(\"error\", format2, args);\n }\n }\n }\n function printWarning(level, format2, args) {\n {\n var ReactDebugCurrentFrame = ReactSharedInternals.ReactDebugCurrentFrame;\n var stack = ReactDebugCurrentFrame.getStackAddendum();\n if (stack !== \"\") {\n format2 += \"%s\";\n args = args.concat([stack]);\n }\n var argsWithFormat = args.map(function(item) {\n return String(item);\n });\n argsWithFormat.unshift(\"Warning: \" + format2);\n Function.prototype.apply.call(console[level], console, argsWithFormat);\n }\n }\n function is2(x2, y2) {\n return x2 === y2 && (x2 !== 0 || 1 / x2 === 1 / y2) || x2 !== x2 && y2 !== y2;\n }\n var objectIs = typeof Object.is === \"function\" ? Object.is : is2;\n var useState2 = React2.useState, useEffect2 = React2.useEffect, useLayoutEffect2 = React2.useLayoutEffect, useDebugValue2 = React2.useDebugValue;\n var didWarnOld18Alpha = false;\n var didWarnUncachedGetSnapshot = false;\n function useSyncExternalStore2(subscribe, getSnapshot, getServerSnapshot) {\n {\n if (!didWarnOld18Alpha) {\n if (React2.startTransition !== void 0) {\n didWarnOld18Alpha = true;\n error2(\"You are using an outdated, pre-release alpha of React 18 that does not support useSyncExternalStore. The use-sync-external-store shim will not work correctly. Upgrade to a newer pre-release.\");\n }\n }\n }\n var value = getSnapshot();\n {\n if (!didWarnUncachedGetSnapshot) {\n var cachedValue = getSnapshot();\n if (!objectIs(value, cachedValue)) {\n error2(\"The result of getSnapshot should be cached to avoid an infinite loop\");\n didWarnUncachedGetSnapshot = true;\n }\n }\n }\n var _useState = useState2({\n inst: {\n value,\n getSnapshot\n }\n }), inst = _useState[0].inst, forceUpdate = _useState[1];\n useLayoutEffect2(function() {\n inst.value = value;\n inst.getSnapshot = getSnapshot;\n if (checkIfSnapshotChanged(inst)) {\n forceUpdate({\n inst\n });\n }\n }, [subscribe, value, getSnapshot]);\n useEffect2(function() {\n if (checkIfSnapshotChanged(inst)) {\n forceUpdate({\n inst\n });\n }\n var handleStoreChange = function() {\n if (checkIfSnapshotChanged(inst)) {\n forceUpdate({\n inst\n });\n }\n };\n return subscribe(handleStoreChange);\n }, [subscribe]);\n useDebugValue2(value);\n return value;\n }\n function checkIfSnapshotChanged(inst) {\n var latestGetSnapshot = inst.getSnapshot;\n var prevValue = inst.value;\n try {\n var nextValue = latestGetSnapshot();\n return !objectIs(prevValue, nextValue);\n } catch (error3) {\n return true;\n }\n }\n function useSyncExternalStore$1(subscribe, getSnapshot, getServerSnapshot) {\n return getSnapshot();\n }\n var canUseDOM = !!(typeof window !== \"undefined\" && typeof window.document !== \"undefined\" && typeof window.document.createElement !== \"undefined\");\n var isServerEnvironment = !canUseDOM;\n var shim2 = isServerEnvironment ? useSyncExternalStore$1 : useSyncExternalStore2;\n var useSyncExternalStore$2 = React2.useSyncExternalStore !== void 0 ? React2.useSyncExternalStore : shim2;\n useSyncExternalStoreShim_development$1.useSyncExternalStore = useSyncExternalStore$2;\n if (typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== \"undefined\" && typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop === \"function\") {\n __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(new Error());\n }\n })();\n }\n return useSyncExternalStoreShim_development$1;\n}\nvar hasRequiredShim;\nfunction requireShim() {\n if (hasRequiredShim) return shim$1.exports;\n hasRequiredShim = 1;\n if (process.env.NODE_ENV === \"production\") {\n shim$1.exports = requireUseSyncExternalStoreShim_production_min$1();\n } else {\n shim$1.exports = requireUseSyncExternalStoreShim_development$1();\n }\n return shim$1.exports;\n}\nvar shimExports$1 = requireShim();\nconst useSyncExternalStore = shimExports$1.useSyncExternalStore;\nconst defaultContext = /* @__PURE__ */ React.createContext(void 0);\nconst QueryClientSharingContext = /* @__PURE__ */ React.createContext(false);\nfunction getQueryClientContext(context, contextSharing) {\n if (context) {\n return context;\n }\n if (contextSharing && typeof window !== \"undefined\") {\n if (!window.ReactQueryClientContext) {\n window.ReactQueryClientContext = defaultContext;\n }\n return window.ReactQueryClientContext;\n }\n return defaultContext;\n}\nconst useQueryClient = ({\n context\n} = {}) => {\n const queryClient = React.useContext(getQueryClientContext(context, React.useContext(QueryClientSharingContext)));\n if (!queryClient) {\n throw new Error(\"No QueryClient set, use QueryClientProvider to set one\");\n }\n return queryClient;\n};\nconst QueryClientProvider = ({\n client,\n children,\n context,\n contextSharing = false\n}) => {\n React.useEffect(() => {\n client.mount();\n return () => {\n client.unmount();\n };\n }, [client]);\n if (process.env.NODE_ENV !== \"production\" && contextSharing) {\n client.getLogger().error(\"The contextSharing option has been deprecated and will be removed in the next major version\");\n }\n const Context = getQueryClientContext(context, contextSharing);\n return /* @__PURE__ */ React.createElement(QueryClientSharingContext.Provider, {\n value: !context && contextSharing\n }, /* @__PURE__ */ React.createElement(Context.Provider, {\n value: client\n }, children));\n};\nconst IsRestoringContext = /* @__PURE__ */ React.createContext(false);\nconst useIsRestoring = () => React.useContext(IsRestoringContext);\nIsRestoringContext.Provider;\nfunction createValue() {\n let isReset = false;\n return {\n clearReset: () => {\n isReset = false;\n },\n reset: () => {\n isReset = true;\n },\n isReset: () => {\n return isReset;\n }\n };\n}\nconst QueryErrorResetBoundaryContext = /* @__PURE__ */ React.createContext(createValue());\nconst useQueryErrorResetBoundary = () => React.useContext(QueryErrorResetBoundaryContext);\nfunction shouldThrowError(_useErrorBoundary, params) {\n if (typeof _useErrorBoundary === \"function\") {\n return _useErrorBoundary(...params);\n }\n return !!_useErrorBoundary;\n}\nconst ensurePreventErrorBoundaryRetry = (options, errorResetBoundary) => {\n if (options.suspense || options.useErrorBoundary) {\n if (!errorResetBoundary.isReset()) {\n options.retryOnMount = false;\n }\n }\n};\nconst useClearResetErrorBoundary = (errorResetBoundary) => {\n React.useEffect(() => {\n errorResetBoundary.clearReset();\n }, [errorResetBoundary]);\n};\nconst getHasError = ({\n result,\n errorResetBoundary,\n useErrorBoundary,\n query\n}) => {\n return result.isError && !errorResetBoundary.isReset() && !result.isFetching && shouldThrowError(useErrorBoundary, [result.error, query]);\n};\nconst ensureStaleTime = (defaultedOptions) => {\n if (defaultedOptions.suspense) {\n if (typeof defaultedOptions.staleTime !== \"number\") {\n defaultedOptions.staleTime = 1e3;\n }\n }\n};\nconst willFetch = (result, isRestoring) => result.isLoading && result.isFetching && !isRestoring;\nconst shouldSuspend = (defaultedOptions, result, isRestoring) => (defaultedOptions == null ? void 0 : defaultedOptions.suspense) && willFetch(result, isRestoring);\nconst fetchOptimistic = (defaultedOptions, observer, errorResetBoundary) => observer.fetchOptimistic(defaultedOptions).then(({\n data\n}) => {\n defaultedOptions.onSuccess == null ? void 0 : defaultedOptions.onSuccess(data);\n defaultedOptions.onSettled == null ? void 0 : defaultedOptions.onSettled(data, null);\n}).catch((error2) => {\n errorResetBoundary.clearReset();\n defaultedOptions.onError == null ? void 0 : defaultedOptions.onError(error2);\n defaultedOptions.onSettled == null ? void 0 : defaultedOptions.onSettled(void 0, error2);\n});\nfunction useBaseQuery(options, Observer) {\n const queryClient = useQueryClient({\n context: options.context\n });\n const isRestoring = useIsRestoring();\n const errorResetBoundary = useQueryErrorResetBoundary();\n const defaultedOptions = queryClient.defaultQueryOptions(options);\n defaultedOptions._optimisticResults = isRestoring ? \"isRestoring\" : \"optimistic\";\n if (defaultedOptions.onError) {\n defaultedOptions.onError = notifyManager.batchCalls(defaultedOptions.onError);\n }\n if (defaultedOptions.onSuccess) {\n defaultedOptions.onSuccess = notifyManager.batchCalls(defaultedOptions.onSuccess);\n }\n if (defaultedOptions.onSettled) {\n defaultedOptions.onSettled = notifyManager.batchCalls(defaultedOptions.onSettled);\n }\n ensureStaleTime(defaultedOptions);\n ensurePreventErrorBoundaryRetry(defaultedOptions, errorResetBoundary);\n useClearResetErrorBoundary(errorResetBoundary);\n const [observer] = React.useState(() => new Observer(queryClient, defaultedOptions));\n const result = observer.getOptimisticResult(defaultedOptions);\n useSyncExternalStore(React.useCallback((onStoreChange) => {\n const unsubscribe = isRestoring ? () => void 0 : observer.subscribe(notifyManager.batchCalls(onStoreChange));\n observer.updateResult();\n return unsubscribe;\n }, [observer, isRestoring]), () => observer.getCurrentResult(), () => observer.getCurrentResult());\n React.useEffect(() => {\n observer.setOptions(defaultedOptions, {\n listeners: false\n });\n }, [defaultedOptions, observer]);\n if (shouldSuspend(defaultedOptions, result, isRestoring)) {\n throw fetchOptimistic(defaultedOptions, observer, errorResetBoundary);\n }\n if (getHasError({\n result,\n errorResetBoundary,\n useErrorBoundary: defaultedOptions.useErrorBoundary,\n query: observer.getCurrentQuery()\n })) {\n throw result.error;\n }\n return !defaultedOptions.notifyOnChangeProps ? observer.trackResult(result) : result;\n}\nfunction useQuery(arg1, arg2, arg3) {\n const parsedOptions = parseQueryArgs(arg1, arg2, arg3);\n return useBaseQuery(parsedOptions, QueryObserver);\n}\nfunction useMutation(arg1, arg2, arg3) {\n const options = parseMutationArgs(arg1, arg2, arg3);\n const queryClient = useQueryClient({\n context: options.context\n });\n const [observer] = React.useState(() => new MutationObserver(queryClient, options));\n React.useEffect(() => {\n observer.setOptions(options);\n }, [observer, options]);\n const result = useSyncExternalStore(React.useCallback((onStoreChange) => observer.subscribe(notifyManager.batchCalls(onStoreChange)), [observer]), () => observer.getCurrentResult(), () => observer.getCurrentResult());\n const mutate = React.useCallback((variables, mutateOptions) => {\n observer.mutate(variables, mutateOptions).catch(noop$6);\n }, [observer]);\n if (result.error && shouldThrowError(observer.options.useErrorBoundary, [result.error])) {\n throw result.error;\n }\n return {\n ...result,\n mutate,\n mutateAsync: result.mutate\n };\n}\nfunction noop$6() {\n}\nconst FormContext = createContext(void 0);\nconst FormProvider = ({\n children,\n form,\n formSettings,\n editorState,\n dispatch\n}) => {\n return /* @__PURE__ */ jsxRuntimeExports.jsx(\n FormContext.Provider,\n {\n value: {\n form,\n formSettings,\n editorState,\n dispatch\n },\n children: /* @__PURE__ */ jsxRuntimeExports.jsx(QueryClientProvider, { client: new QueryClient(), children })\n }\n );\n};\nconst useRegForm = () => useContext(FormContext);\nconst EditorLayout = ({ children, ...props }) => /* @__PURE__ */ jsxRuntimeExports.jsx(\n Grid,\n {\n minW: \"900px\",\n height: \"calc(100vh - 60px)\",\n overflow: \"auto\",\n templateColumns: \"minmax(205px, 0.8fr) 2fr minmax(300px, 1.5fr)\",\n templateRows: \"min-content auto\",\n templateAreas: \"'header header header' 'sidebar main right_panel'\",\n alignContent: \"stretch\",\n gap: 0,\n ...props,\n children\n }\n);\nconst EditorHeader$1 = ({ children, ...props }) => /* @__PURE__ */ jsxRuntimeExports.jsx(GridItem, { gridArea: \"header\", colSpan: 3, ...props, children });\nconst StateBarClean = ({ children }) => /* @__PURE__ */ jsxRuntimeExports.jsxs(\"div\", { className: \"t-state-bar-clean state-bar clean\", children: [\n /* @__PURE__ */ jsxRuntimeExports.jsx(\"p\", { className: \"state-bar-copy\", children: \"Saved, nothing added or changed.\" }),\n /* @__PURE__ */ jsxRuntimeExports.jsx(\"div\", { className: \"state-bar-actions\", children })\n] });\nconst StateBar = ({\n children,\n dirty = false,\n disabled = false,\n showResetButton = true,\n onSave,\n onReset\n}) => {\n if (dirty) {\n return /* @__PURE__ */ jsxRuntimeExports.jsxs(\"div\", { className: \"t-state-bar-dirty state-bar\", children: [\n /* @__PURE__ */ jsxRuntimeExports.jsxs(\"div\", { className: \"state-bar-copy\", children: [\n /* @__PURE__ */ jsxRuntimeExports.jsx(\"span\", { className: \"dark\", children: \"unsaved changes \" }),\n \"Save and apply to this event, or reset to removed any unsaved changes\"\n ] }),\n /* @__PURE__ */ jsxRuntimeExports.jsxs(\"div\", { className: \"state-bar-actions\", children: [\n showResetButton && /* @__PURE__ */ jsxRuntimeExports.jsx(\n \"button\",\n {\n type: \"reset\",\n className: \"reset t-reset\",\n onClick: (e) => {\n e.preventDefault();\n if (typeof onReset === \"function\") {\n onReset();\n }\n },\n children: \"Reset\"\n }\n ),\n /* @__PURE__ */ jsxRuntimeExports.jsx(\n \"button\",\n {\n type: \"submit\",\n className: \"save\",\n disabled,\n onClick: (e) => {\n e.preventDefault();\n onSave();\n },\n children: \"Save\"\n }\n ),\n children\n ] })\n ] });\n } else {\n return /* @__PURE__ */ jsxRuntimeExports.jsx(StateBarClean, { children });\n }\n};\nconst DirtyCopy = () => /* @__PURE__ */ jsxRuntimeExports.jsxs(\n Text$2,\n {\n textStyle: \"label\",\n textOverflow: \"ellipsis\",\n whiteSpace: \"nowrap\",\n overflow: \"hidden\",\n children: [\n /* @__PURE__ */ jsxRuntimeExports.jsxs(Text$2, { as: \"span\", color: \"black\", children: [\n \"unsaved changes\",\n \" \"\n ] }),\n \"Save and apply to this event, or reset to removed any unsaved changes\"\n ]\n }\n);\nconst CleanCopy = () => /* @__PURE__ */ jsxRuntimeExports.jsx(Text$2, { textStyle: \"label\", children: \"Saved, nothing added or changed.\" });\nconst StateBarV2 = ({\n children,\n dirty = false,\n disabled = false,\n onSave,\n onReset\n}) => /* @__PURE__ */ jsxRuntimeExports.jsxs(\n Flex,\n {\n p: 2,\n bgColor: dirty ? \"redAlpha.400\" : \"blueAlpha.400\",\n color: \"white\",\n justifyContent: \"space-between\",\n alignItems: \"center\",\n children: [\n /* @__PURE__ */ jsxRuntimeExports.jsx(Box, { overflow: \"hidden\", children: dirty ? /* @__PURE__ */ jsxRuntimeExports.jsx(DirtyCopy, {}) : /* @__PURE__ */ jsxRuntimeExports.jsx(CleanCopy, {}) }),\n /* @__PURE__ */ jsxRuntimeExports.jsxs(Box, { minW: \"fit-content\", flexShrink: 0, children: [\n children,\n dirty && onReset !== void 0 && /* @__PURE__ */ jsxRuntimeExports.jsx(Button, { variant: \"ghost\", size: \"sm\", onClick: onReset, children: \"Reset\" }),\n dirty && /* @__PURE__ */ jsxRuntimeExports.jsx(\n Button,\n {\n colorScheme: \"green\",\n size: \"sm\",\n disabled,\n onClick: onSave,\n children: \"Save\"\n }\n )\n ] })\n ]\n }\n);\nconst EditorSidebar = ({ children, ...props }) => /* @__PURE__ */ jsxRuntimeExports.jsx(GridItem, { gridArea: \"sidebar\", ...props, children });\nconst SidebarItem = forwardRef(\n (props, ref2) => /* @__PURE__ */ jsxRuntimeExports.jsx(\n ListItem$1,\n {\n ref: ref2,\n cursor: \"grab\",\n borderBottom: \"1px solid white\",\n borderBottomColor: \"whiteAlpha.200\",\n padding: 6,\n textStyle: \"editorItemLabel\",\n ...props\n }\n )\n);\nfunction _setPrototypeOf$3(t2, e) {\n return _setPrototypeOf$3 = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(t3, e2) {\n return t3.__proto__ = e2, t3;\n }, _setPrototypeOf$3(t2, e);\n}\nfunction _inheritsLoose$2(t2, o2) {\n t2.prototype = Object.create(o2.prototype), t2.prototype.constructor = t2, _setPrototypeOf$3(t2, o2);\n}\nfunction _extends$4() {\n return _extends$4 = Object.assign ? Object.assign.bind() : function(n2) {\n for (var e = 1; e < arguments.length; e++) {\n var t2 = arguments[e];\n for (var r2 in t2) ({}).hasOwnProperty.call(t2, r2) && (n2[r2] = t2[r2]);\n }\n return n2;\n }, _extends$4.apply(null, arguments);\n}\nfunction _typeof$1(o2) {\n \"@babel/helpers - typeof\";\n return _typeof$1 = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function(o3) {\n return typeof o3;\n } : function(o3) {\n return o3 && \"function\" == typeof Symbol && o3.constructor === Symbol && o3 !== Symbol.prototype ? \"symbol\" : typeof o3;\n }, _typeof$1(o2);\n}\nfunction toPrimitive(t2, r2) {\n if (\"object\" != _typeof$1(t2) || !t2) return t2;\n var e = t2[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t2, r2 || \"default\");\n if (\"object\" != _typeof$1(i)) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r2 ? String : Number)(t2);\n}\nfunction toPropertyKey(t2) {\n var i = toPrimitive(t2, \"string\");\n return \"symbol\" == _typeof$1(i) ? i : i + \"\";\n}\nfunction _defineProperty$2(e, r2, t2) {\n return (r2 = toPropertyKey(r2)) in e ? Object.defineProperty(e, r2, {\n value: t2,\n enumerable: true,\n configurable: true,\n writable: true\n }) : e[r2] = t2, e;\n}\nfunction ownKeys$6(e, r2) {\n var t2 = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o2 = Object.getOwnPropertySymbols(e);\n r2 && (o2 = o2.filter(function(r3) {\n return Object.getOwnPropertyDescriptor(e, r3).enumerable;\n })), t2.push.apply(t2, o2);\n }\n return t2;\n}\nfunction _objectSpread2$1(e) {\n for (var r2 = 1; r2 < arguments.length; r2++) {\n var t2 = null != arguments[r2] ? arguments[r2] : {};\n r2 % 2 ? ownKeys$6(Object(t2), true).forEach(function(r3) {\n _defineProperty$2(e, r3, t2[r3]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t2)) : ownKeys$6(Object(t2)).forEach(function(r3) {\n Object.defineProperty(e, r3, Object.getOwnPropertyDescriptor(t2, r3));\n });\n }\n return e;\n}\nfunction formatProdErrorMessage(code) {\n return \"Minified Redux error #\" + code + \"; visit https://redux.js.org/Errors?code=\" + code + \" for the full message or use the non-minified dev environment for full errors. \";\n}\nvar $$observable = function() {\n return typeof Symbol === \"function\" && Symbol.observable || \"@@observable\";\n}();\nvar randomString = function randomString2() {\n return Math.random().toString(36).substring(7).split(\"\").join(\".\");\n};\nvar ActionTypes = {\n INIT: \"@@redux/INIT\" + randomString(),\n REPLACE: \"@@redux/REPLACE\" + randomString(),\n PROBE_UNKNOWN_ACTION: function PROBE_UNKNOWN_ACTION() {\n return \"@@redux/PROBE_UNKNOWN_ACTION\" + randomString();\n }\n};\nfunction isPlainObject$3(obj) {\n if (typeof obj !== \"object\" || obj === null) return false;\n var proto2 = obj;\n while (Object.getPrototypeOf(proto2) !== null) {\n proto2 = Object.getPrototypeOf(proto2);\n }\n return Object.getPrototypeOf(obj) === proto2;\n}\nfunction miniKindOf(val) {\n if (val === void 0) return \"undefined\";\n if (val === null) return \"null\";\n var type = typeof val;\n switch (type) {\n case \"boolean\":\n case \"string\":\n case \"number\":\n case \"symbol\":\n case \"function\": {\n return type;\n }\n }\n if (Array.isArray(val)) return \"array\";\n if (isDate$2(val)) return \"date\";\n if (isError(val)) return \"error\";\n var constructorName = ctorName(val);\n switch (constructorName) {\n case \"Symbol\":\n case \"Promise\":\n case \"WeakMap\":\n case \"WeakSet\":\n case \"Map\":\n case \"Set\":\n return constructorName;\n }\n return type.slice(8, -1).toLowerCase().replace(/\\s/g, \"\");\n}\nfunction ctorName(val) {\n return typeof val.constructor === \"function\" ? val.constructor.name : null;\n}\nfunction isError(val) {\n return val instanceof Error || typeof val.message === \"string\" && val.constructor && typeof val.constructor.stackTraceLimit === \"number\";\n}\nfunction isDate$2(val) {\n if (val instanceof Date) return true;\n return typeof val.toDateString === \"function\" && typeof val.getDate === \"function\" && typeof val.setDate === \"function\";\n}\nfunction kindOf(val) {\n var typeOfVal = typeof val;\n if (process.env.NODE_ENV !== \"production\") {\n typeOfVal = miniKindOf(val);\n }\n return typeOfVal;\n}\nfunction createStore$2(reducer2, preloadedState, enhancer) {\n var _ref2;\n if (typeof preloadedState === \"function\" && typeof enhancer === \"function\" || typeof enhancer === \"function\" && typeof arguments[3] === \"function\") {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(0) : \"It looks like you are passing several store enhancers to createStore(). This is not supported. Instead, compose them together to a single function. See https://redux.js.org/tutorials/fundamentals/part-4-store#creating-a-store-with-enhancers for an example.\");\n }\n if (typeof preloadedState === \"function\" && typeof enhancer === \"undefined\") {\n enhancer = preloadedState;\n preloadedState = void 0;\n }\n if (typeof enhancer !== \"undefined\") {\n if (typeof enhancer !== \"function\") {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(1) : \"Expected the enhancer to be a function. Instead, received: '\" + kindOf(enhancer) + \"'\");\n }\n return enhancer(createStore$2)(reducer2, preloadedState);\n }\n if (typeof reducer2 !== \"function\") {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(2) : \"Expected the root reducer to be a function. Instead, received: '\" + kindOf(reducer2) + \"'\");\n }\n var currentReducer = reducer2;\n var currentState = preloadedState;\n var currentListeners = [];\n var nextListeners = currentListeners;\n var isDispatching = false;\n function ensureCanMutateNextListeners() {\n if (nextListeners === currentListeners) {\n nextListeners = currentListeners.slice();\n }\n }\n function getState() {\n if (isDispatching) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(3) : \"You may not call store.getState() while the reducer is executing. The reducer has already received the state as an argument. Pass it down from the top reducer instead of reading it from the store.\");\n }\n return currentState;\n }\n function subscribe(listener) {\n if (typeof listener !== \"function\") {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(4) : \"Expected the listener to be a function. Instead, received: '\" + kindOf(listener) + \"'\");\n }\n if (isDispatching) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(5) : \"You may not call store.subscribe() while the reducer is executing. If you would like to be notified after the store has been updated, subscribe from a component and invoke store.getState() in the callback to access the latest state. See https://redux.js.org/api/store#subscribelistener for more details.\");\n }\n var isSubscribed = true;\n ensureCanMutateNextListeners();\n nextListeners.push(listener);\n return function unsubscribe() {\n if (!isSubscribed) {\n return;\n }\n if (isDispatching) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(6) : \"You may not unsubscribe from a store listener while the reducer is executing. See https://redux.js.org/api/store#subscribelistener for more details.\");\n }\n isSubscribed = false;\n ensureCanMutateNextListeners();\n var index2 = nextListeners.indexOf(listener);\n nextListeners.splice(index2, 1);\n currentListeners = null;\n };\n }\n function dispatch(action) {\n if (!isPlainObject$3(action)) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(7) : \"Actions must be plain objects. Instead, the actual type was: '\" + kindOf(action) + \"'. You may need to add middleware to your store setup to handle dispatching other values, such as 'redux-thunk' to handle dispatching functions. See https://redux.js.org/tutorials/fundamentals/part-4-store#middleware and https://redux.js.org/tutorials/fundamentals/part-6-async-logic#using-the-redux-thunk-middleware for examples.\");\n }\n if (typeof action.type === \"undefined\") {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(8) : 'Actions may not have an undefined \"type\" property. You may have misspelled an action type string constant.');\n }\n if (isDispatching) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(9) : \"Reducers may not dispatch actions.\");\n }\n try {\n isDispatching = true;\n currentState = currentReducer(currentState, action);\n } finally {\n isDispatching = false;\n }\n var listeners = currentListeners = nextListeners;\n for (var i = 0; i < listeners.length; i++) {\n var listener = listeners[i];\n listener();\n }\n return action;\n }\n function replaceReducer(nextReducer) {\n if (typeof nextReducer !== \"function\") {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(10) : \"Expected the nextReducer to be a function. Instead, received: '\" + kindOf(nextReducer));\n }\n currentReducer = nextReducer;\n dispatch({\n type: ActionTypes.REPLACE\n });\n }\n function observable() {\n var _ref;\n var outerSubscribe = subscribe;\n return _ref = {\n /**\n * The minimal observable subscription method.\n * @param {Object} observer Any object that can be used as an observer.\n * The observer object should have a `next` method.\n * @returns {subscription} An object with an `unsubscribe` method that can\n * be used to unsubscribe the observable from the store, and prevent further\n * emission of values from the observable.\n */\n subscribe: function subscribe2(observer) {\n if (typeof observer !== \"object\" || observer === null) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(11) : \"Expected the observer to be an object. Instead, received: '\" + kindOf(observer) + \"'\");\n }\n function observeState() {\n if (observer.next) {\n observer.next(getState());\n }\n }\n observeState();\n var unsubscribe = outerSubscribe(observeState);\n return {\n unsubscribe\n };\n }\n }, _ref[$$observable] = function() {\n return this;\n }, _ref;\n }\n dispatch({\n type: ActionTypes.INIT\n });\n return _ref2 = {\n dispatch,\n subscribe,\n getState,\n replaceReducer\n }, _ref2[$$observable] = observable, _ref2;\n}\nfunction bindActionCreator(actionCreator, dispatch) {\n return function() {\n return dispatch(actionCreator.apply(this, arguments));\n };\n}\nfunction bindActionCreators$1(actionCreators, dispatch) {\n if (typeof actionCreators === \"function\") {\n return bindActionCreator(actionCreators, dispatch);\n }\n if (typeof actionCreators !== \"object\" || actionCreators === null) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(16) : \"bindActionCreators expected an object or a function, but instead received: '\" + kindOf(actionCreators) + `'. Did you write \"import ActionCreators from\" instead of \"import * as ActionCreators from\"?`);\n }\n var boundActionCreators = {};\n for (var key in actionCreators) {\n var actionCreator = actionCreators[key];\n if (typeof actionCreator === \"function\") {\n boundActionCreators[key] = bindActionCreator(actionCreator, dispatch);\n }\n }\n return boundActionCreators;\n}\nfunction compose() {\n for (var _len = arguments.length, funcs = new Array(_len), _key = 0; _key < _len; _key++) {\n funcs[_key] = arguments[_key];\n }\n if (funcs.length === 0) {\n return function(arg) {\n return arg;\n };\n }\n if (funcs.length === 1) {\n return funcs[0];\n }\n return funcs.reduce(function(a2, b2) {\n return function() {\n return a2(b2.apply(void 0, arguments));\n };\n });\n}\nfunction applyMiddleware() {\n for (var _len = arguments.length, middlewares = new Array(_len), _key = 0; _key < _len; _key++) {\n middlewares[_key] = arguments[_key];\n }\n return function(createStore2) {\n return function() {\n var store = createStore2.apply(void 0, arguments);\n var _dispatch = function dispatch() {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(15) : \"Dispatching while constructing your middleware is not allowed. Other middleware would not be applied to this dispatch.\");\n };\n var middlewareAPI = {\n getState: store.getState,\n dispatch: function dispatch() {\n return _dispatch.apply(void 0, arguments);\n }\n };\n var chain = middlewares.map(function(middleware2) {\n return middleware2(middlewareAPI);\n });\n _dispatch = compose.apply(void 0, chain)(store.dispatch);\n return _objectSpread2$1(_objectSpread2$1({}, store), {}, {\n dispatch: _dispatch\n });\n };\n };\n}\nvar propTypes = { exports: {} };\nvar reactIs$2 = { exports: {} };\nvar reactIs_production_min$2 = {};\n/** @license React v16.13.1\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\nvar hasRequiredReactIs_production_min$2;\nfunction requireReactIs_production_min$2() {\n if (hasRequiredReactIs_production_min$2) return reactIs_production_min$2;\n hasRequiredReactIs_production_min$2 = 1;\n var b2 = \"function\" === typeof Symbol && Symbol.for, c2 = b2 ? Symbol.for(\"react.element\") : 60103, d2 = b2 ? Symbol.for(\"react.portal\") : 60106, e = b2 ? Symbol.for(\"react.fragment\") : 60107, f2 = b2 ? Symbol.for(\"react.strict_mode\") : 60108, g2 = b2 ? Symbol.for(\"react.profiler\") : 60114, h2 = b2 ? Symbol.for(\"react.provider\") : 60109, k2 = b2 ? Symbol.for(\"react.context\") : 60110, l2 = b2 ? Symbol.for(\"react.async_mode\") : 60111, m = b2 ? Symbol.for(\"react.concurrent_mode\") : 60111, n2 = b2 ? Symbol.for(\"react.forward_ref\") : 60112, p2 = b2 ? Symbol.for(\"react.suspense\") : 60113, q2 = b2 ? Symbol.for(\"react.suspense_list\") : 60120, r2 = b2 ? Symbol.for(\"react.memo\") : 60115, t2 = b2 ? Symbol.for(\"react.lazy\") : 60116, v2 = b2 ? Symbol.for(\"react.block\") : 60121, w2 = b2 ? Symbol.for(\"react.fundamental\") : 60117, x2 = b2 ? Symbol.for(\"react.responder\") : 60118, y2 = b2 ? Symbol.for(\"react.scope\") : 60119;\n function z2(a2) {\n if (\"object\" === typeof a2 && null !== a2) {\n var u2 = a2.$$typeof;\n switch (u2) {\n case c2:\n switch (a2 = a2.type, a2) {\n case l2:\n case m:\n case e:\n case g2:\n case f2:\n case p2:\n return a2;\n default:\n switch (a2 = a2 && a2.$$typeof, a2) {\n case k2:\n case n2:\n case t2:\n case r2:\n case h2:\n return a2;\n default:\n return u2;\n }\n }\n case d2:\n return u2;\n }\n }\n }\n function A2(a2) {\n return z2(a2) === m;\n }\n reactIs_production_min$2.AsyncMode = l2;\n reactIs_production_min$2.ConcurrentMode = m;\n reactIs_production_min$2.ContextConsumer = k2;\n reactIs_production_min$2.ContextProvider = h2;\n reactIs_production_min$2.Element = c2;\n reactIs_production_min$2.ForwardRef = n2;\n reactIs_production_min$2.Fragment = e;\n reactIs_production_min$2.Lazy = t2;\n reactIs_production_min$2.Memo = r2;\n reactIs_production_min$2.Portal = d2;\n reactIs_production_min$2.Profiler = g2;\n reactIs_production_min$2.StrictMode = f2;\n reactIs_production_min$2.Suspense = p2;\n reactIs_production_min$2.isAsyncMode = function(a2) {\n return A2(a2) || z2(a2) === l2;\n };\n reactIs_production_min$2.isConcurrentMode = A2;\n reactIs_production_min$2.isContextConsumer = function(a2) {\n return z2(a2) === k2;\n };\n reactIs_production_min$2.isContextProvider = function(a2) {\n return z2(a2) === h2;\n };\n reactIs_production_min$2.isElement = function(a2) {\n return \"object\" === typeof a2 && null !== a2 && a2.$$typeof === c2;\n };\n reactIs_production_min$2.isForwardRef = function(a2) {\n return z2(a2) === n2;\n };\n reactIs_production_min$2.isFragment = function(a2) {\n return z2(a2) === e;\n };\n reactIs_production_min$2.isLazy = function(a2) {\n return z2(a2) === t2;\n };\n reactIs_production_min$2.isMemo = function(a2) {\n return z2(a2) === r2;\n };\n reactIs_production_min$2.isPortal = function(a2) {\n return z2(a2) === d2;\n };\n reactIs_production_min$2.isProfiler = function(a2) {\n return z2(a2) === g2;\n };\n reactIs_production_min$2.isStrictMode = function(a2) {\n return z2(a2) === f2;\n };\n reactIs_production_min$2.isSuspense = function(a2) {\n return z2(a2) === p2;\n };\n reactIs_production_min$2.isValidElementType = function(a2) {\n return \"string\" === typeof a2 || \"function\" === typeof a2 || a2 === e || a2 === m || a2 === g2 || a2 === f2 || a2 === p2 || a2 === q2 || \"object\" === typeof a2 && null !== a2 && (a2.$$typeof === t2 || a2.$$typeof === r2 || a2.$$typeof === h2 || a2.$$typeof === k2 || a2.$$typeof === n2 || a2.$$typeof === w2 || a2.$$typeof === x2 || a2.$$typeof === y2 || a2.$$typeof === v2);\n };\n reactIs_production_min$2.typeOf = z2;\n return reactIs_production_min$2;\n}\nvar reactIs_development$2 = {};\n/** @license React v16.13.1\n * react-is.development.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\nvar hasRequiredReactIs_development$2;\nfunction requireReactIs_development$2() {\n if (hasRequiredReactIs_development$2) return reactIs_development$2;\n hasRequiredReactIs_development$2 = 1;\n if (process.env.NODE_ENV !== \"production\") {\n (function() {\n var hasSymbol = typeof Symbol === \"function\" && Symbol.for;\n var REACT_ELEMENT_TYPE = hasSymbol ? Symbol.for(\"react.element\") : 60103;\n var REACT_PORTAL_TYPE = hasSymbol ? Symbol.for(\"react.portal\") : 60106;\n var REACT_FRAGMENT_TYPE = hasSymbol ? Symbol.for(\"react.fragment\") : 60107;\n var REACT_STRICT_MODE_TYPE = hasSymbol ? Symbol.for(\"react.strict_mode\") : 60108;\n var REACT_PROFILER_TYPE = hasSymbol ? Symbol.for(\"react.profiler\") : 60114;\n var REACT_PROVIDER_TYPE = hasSymbol ? Symbol.for(\"react.provider\") : 60109;\n var REACT_CONTEXT_TYPE = hasSymbol ? Symbol.for(\"react.context\") : 60110;\n var REACT_ASYNC_MODE_TYPE = hasSymbol ? Symbol.for(\"react.async_mode\") : 60111;\n var REACT_CONCURRENT_MODE_TYPE = hasSymbol ? Symbol.for(\"react.concurrent_mode\") : 60111;\n var REACT_FORWARD_REF_TYPE = hasSymbol ? Symbol.for(\"react.forward_ref\") : 60112;\n var REACT_SUSPENSE_TYPE = hasSymbol ? Symbol.for(\"react.suspense\") : 60113;\n var REACT_SUSPENSE_LIST_TYPE = hasSymbol ? Symbol.for(\"react.suspense_list\") : 60120;\n var REACT_MEMO_TYPE = hasSymbol ? Symbol.for(\"react.memo\") : 60115;\n var REACT_LAZY_TYPE = hasSymbol ? Symbol.for(\"react.lazy\") : 60116;\n var REACT_BLOCK_TYPE = hasSymbol ? Symbol.for(\"react.block\") : 60121;\n var REACT_FUNDAMENTAL_TYPE = hasSymbol ? Symbol.for(\"react.fundamental\") : 60117;\n var REACT_RESPONDER_TYPE = hasSymbol ? Symbol.for(\"react.responder\") : 60118;\n var REACT_SCOPE_TYPE = hasSymbol ? Symbol.for(\"react.scope\") : 60119;\n function isValidElementType(type) {\n return typeof type === \"string\" || typeof type === \"function\" || // Note: its typeof might be other than 'symbol' or 'number' if it's a polyfill.\n type === REACT_FRAGMENT_TYPE || type === REACT_CONCURRENT_MODE_TYPE || type === REACT_PROFILER_TYPE || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || typeof type === \"object\" && type !== null && (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || type.$$typeof === REACT_FUNDAMENTAL_TYPE || type.$$typeof === REACT_RESPONDER_TYPE || type.$$typeof === REACT_SCOPE_TYPE || type.$$typeof === REACT_BLOCK_TYPE);\n }\n function typeOf(object) {\n if (typeof object === \"object\" && object !== null) {\n var $$typeof = object.$$typeof;\n switch ($$typeof) {\n case REACT_ELEMENT_TYPE:\n var type = object.type;\n switch (type) {\n case REACT_ASYNC_MODE_TYPE:\n case REACT_CONCURRENT_MODE_TYPE:\n case REACT_FRAGMENT_TYPE:\n case REACT_PROFILER_TYPE:\n case REACT_STRICT_MODE_TYPE:\n case REACT_SUSPENSE_TYPE:\n return type;\n default:\n var $$typeofType = type && type.$$typeof;\n switch ($$typeofType) {\n case REACT_CONTEXT_TYPE:\n case REACT_FORWARD_REF_TYPE:\n case REACT_LAZY_TYPE:\n case REACT_MEMO_TYPE:\n case REACT_PROVIDER_TYPE:\n return $$typeofType;\n default:\n return $$typeof;\n }\n }\n case REACT_PORTAL_TYPE:\n return $$typeof;\n }\n }\n return void 0;\n }\n var AsyncMode = REACT_ASYNC_MODE_TYPE;\n var ConcurrentMode = REACT_CONCURRENT_MODE_TYPE;\n var ContextConsumer = REACT_CONTEXT_TYPE;\n var ContextProvider = REACT_PROVIDER_TYPE;\n var Element2 = REACT_ELEMENT_TYPE;\n var ForwardRef = REACT_FORWARD_REF_TYPE;\n var Fragment2 = REACT_FRAGMENT_TYPE;\n var Lazy = REACT_LAZY_TYPE;\n var Memo = REACT_MEMO_TYPE;\n var Portal2 = REACT_PORTAL_TYPE;\n var Profiler = REACT_PROFILER_TYPE;\n var StrictMode = REACT_STRICT_MODE_TYPE;\n var Suspense = REACT_SUSPENSE_TYPE;\n var hasWarnedAboutDeprecatedIsAsyncMode = false;\n function isAsyncMode(object) {\n {\n if (!hasWarnedAboutDeprecatedIsAsyncMode) {\n hasWarnedAboutDeprecatedIsAsyncMode = true;\n console[\"warn\"](\"The ReactIs.isAsyncMode() alias has been deprecated, and will be removed in React 17+. Update your code to use ReactIs.isConcurrentMode() instead. It has the exact same API.\");\n }\n }\n return isConcurrentMode(object) || typeOf(object) === REACT_ASYNC_MODE_TYPE;\n }\n function isConcurrentMode(object) {\n return typeOf(object) === REACT_CONCURRENT_MODE_TYPE;\n }\n function isContextConsumer(object) {\n return typeOf(object) === REACT_CONTEXT_TYPE;\n }\n function isContextProvider(object) {\n return typeOf(object) === REACT_PROVIDER_TYPE;\n }\n function isElement2(object) {\n return typeof object === \"object\" && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\n }\n function isForwardRef(object) {\n return typeOf(object) === REACT_FORWARD_REF_TYPE;\n }\n function isFragment2(object) {\n return typeOf(object) === REACT_FRAGMENT_TYPE;\n }\n function isLazy(object) {\n return typeOf(object) === REACT_LAZY_TYPE;\n }\n function isMemo(object) {\n return typeOf(object) === REACT_MEMO_TYPE;\n }\n function isPortal(object) {\n return typeOf(object) === REACT_PORTAL_TYPE;\n }\n function isProfiler(object) {\n return typeOf(object) === REACT_PROFILER_TYPE;\n }\n function isStrictMode(object) {\n return typeOf(object) === REACT_STRICT_MODE_TYPE;\n }\n function isSuspense(object) {\n return typeOf(object) === REACT_SUSPENSE_TYPE;\n }\n reactIs_development$2.AsyncMode = AsyncMode;\n reactIs_development$2.ConcurrentMode = ConcurrentMode;\n reactIs_development$2.ContextConsumer = ContextConsumer;\n reactIs_development$2.ContextProvider = ContextProvider;\n reactIs_development$2.Element = Element2;\n reactIs_development$2.ForwardRef = ForwardRef;\n reactIs_development$2.Fragment = Fragment2;\n reactIs_development$2.Lazy = Lazy;\n reactIs_development$2.Memo = Memo;\n reactIs_development$2.Portal = Portal2;\n reactIs_development$2.Profiler = Profiler;\n reactIs_development$2.StrictMode = StrictMode;\n reactIs_development$2.Suspense = Suspense;\n reactIs_development$2.isAsyncMode = isAsyncMode;\n reactIs_development$2.isConcurrentMode = isConcurrentMode;\n reactIs_development$2.isContextConsumer = isContextConsumer;\n reactIs_development$2.isContextProvider = isContextProvider;\n reactIs_development$2.isElement = isElement2;\n reactIs_development$2.isForwardRef = isForwardRef;\n reactIs_development$2.isFragment = isFragment2;\n reactIs_development$2.isLazy = isLazy;\n reactIs_development$2.isMemo = isMemo;\n reactIs_development$2.isPortal = isPortal;\n reactIs_development$2.isProfiler = isProfiler;\n reactIs_development$2.isStrictMode = isStrictMode;\n reactIs_development$2.isSuspense = isSuspense;\n reactIs_development$2.isValidElementType = isValidElementType;\n reactIs_development$2.typeOf = typeOf;\n })();\n }\n return reactIs_development$2;\n}\nvar hasRequiredReactIs$2;\nfunction requireReactIs$2() {\n if (hasRequiredReactIs$2) return reactIs$2.exports;\n hasRequiredReactIs$2 = 1;\n if (process.env.NODE_ENV === \"production\") {\n reactIs$2.exports = requireReactIs_production_min$2();\n } else {\n reactIs$2.exports = requireReactIs_development$2();\n }\n return reactIs$2.exports;\n}\n/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\nvar objectAssign;\nvar hasRequiredObjectAssign;\nfunction requireObjectAssign() {\n if (hasRequiredObjectAssign) return objectAssign;\n hasRequiredObjectAssign = 1;\n var getOwnPropertySymbols = Object.getOwnPropertySymbols;\n var hasOwnProperty = Object.prototype.hasOwnProperty;\n var propIsEnumerable = Object.prototype.propertyIsEnumerable;\n function toObject2(val) {\n if (val === null || val === void 0) {\n throw new TypeError(\"Object.assign cannot be called with null or undefined\");\n }\n return Object(val);\n }\n function shouldUseNative() {\n try {\n if (!Object.assign) {\n return false;\n }\n var test1 = new String(\"abc\");\n test1[5] = \"de\";\n if (Object.getOwnPropertyNames(test1)[0] === \"5\") {\n return false;\n }\n var test2 = {};\n for (var i = 0; i < 10; i++) {\n test2[\"_\" + String.fromCharCode(i)] = i;\n }\n var order2 = Object.getOwnPropertyNames(test2).map(function(n2) {\n return test2[n2];\n });\n if (order2.join(\"\") !== \"0123456789\") {\n return false;\n }\n var test3 = {};\n \"abcdefghijklmnopqrst\".split(\"\").forEach(function(letter) {\n test3[letter] = letter;\n });\n if (Object.keys(Object.assign({}, test3)).join(\"\") !== \"abcdefghijklmnopqrst\") {\n return false;\n }\n return true;\n } catch (err) {\n return false;\n }\n }\n objectAssign = shouldUseNative() ? Object.assign : function(target, source) {\n var from3;\n var to2 = toObject2(target);\n var symbols;\n for (var s2 = 1; s2 < arguments.length; s2++) {\n from3 = Object(arguments[s2]);\n for (var key in from3) {\n if (hasOwnProperty.call(from3, key)) {\n to2[key] = from3[key];\n }\n }\n if (getOwnPropertySymbols) {\n symbols = getOwnPropertySymbols(from3);\n for (var i = 0; i < symbols.length; i++) {\n if (propIsEnumerable.call(from3, symbols[i])) {\n to2[symbols[i]] = from3[symbols[i]];\n }\n }\n }\n }\n return to2;\n };\n return objectAssign;\n}\nvar ReactPropTypesSecret_1;\nvar hasRequiredReactPropTypesSecret;\nfunction requireReactPropTypesSecret() {\n if (hasRequiredReactPropTypesSecret) return ReactPropTypesSecret_1;\n hasRequiredReactPropTypesSecret = 1;\n var ReactPropTypesSecret = \"SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED\";\n ReactPropTypesSecret_1 = ReactPropTypesSecret;\n return ReactPropTypesSecret_1;\n}\nvar has;\nvar hasRequiredHas;\nfunction requireHas() {\n if (hasRequiredHas) return has;\n hasRequiredHas = 1;\n has = Function.call.bind(Object.prototype.hasOwnProperty);\n return has;\n}\nvar checkPropTypes_1;\nvar hasRequiredCheckPropTypes;\nfunction requireCheckPropTypes() {\n if (hasRequiredCheckPropTypes) return checkPropTypes_1;\n hasRequiredCheckPropTypes = 1;\n var printWarning = function() {\n };\n if (process.env.NODE_ENV !== \"production\") {\n var ReactPropTypesSecret = /* @__PURE__ */ requireReactPropTypesSecret();\n var loggedTypeFailures = {};\n var has2 = /* @__PURE__ */ requireHas();\n printWarning = function(text) {\n var message2 = \"Warning: \" + text;\n if (typeof console !== \"undefined\") {\n console.error(message2);\n }\n try {\n throw new Error(message2);\n } catch (x2) {\n }\n };\n }\n function checkPropTypes(typeSpecs, values2, location, componentName, getStack) {\n if (process.env.NODE_ENV !== \"production\") {\n for (var typeSpecName in typeSpecs) {\n if (has2(typeSpecs, typeSpecName)) {\n var error2;\n try {\n if (typeof typeSpecs[typeSpecName] !== \"function\") {\n var err = Error(\n (componentName || \"React class\") + \": \" + location + \" type `\" + typeSpecName + \"` is invalid; it must be a function, usually from the `prop-types` package, but received `\" + typeof typeSpecs[typeSpecName] + \"`.This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.\"\n );\n err.name = \"Invariant Violation\";\n throw err;\n }\n error2 = typeSpecs[typeSpecName](values2, typeSpecName, componentName, location, null, ReactPropTypesSecret);\n } catch (ex) {\n error2 = ex;\n }\n if (error2 && !(error2 instanceof Error)) {\n printWarning(\n (componentName || \"React class\") + \": type specification of \" + location + \" `\" + typeSpecName + \"` is invalid; the type checker function must return `null` or an `Error` but returned a \" + typeof error2 + \". You may have forgotten to pass an argument to the type checker creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and shape all require an argument).\"\n );\n }\n if (error2 instanceof Error && !(error2.message in loggedTypeFailures)) {\n loggedTypeFailures[error2.message] = true;\n var stack = getStack ? getStack() : \"\";\n printWarning(\n \"Failed \" + location + \" type: \" + error2.message + (stack != null ? stack : \"\")\n );\n }\n }\n }\n }\n }\n checkPropTypes.resetWarningCache = function() {\n if (process.env.NODE_ENV !== \"production\") {\n loggedTypeFailures = {};\n }\n };\n checkPropTypes_1 = checkPropTypes;\n return checkPropTypes_1;\n}\nvar factoryWithTypeCheckers;\nvar hasRequiredFactoryWithTypeCheckers;\nfunction requireFactoryWithTypeCheckers() {\n if (hasRequiredFactoryWithTypeCheckers) return factoryWithTypeCheckers;\n hasRequiredFactoryWithTypeCheckers = 1;\n var ReactIs = requireReactIs$2();\n var assign2 = requireObjectAssign();\n var ReactPropTypesSecret = /* @__PURE__ */ requireReactPropTypesSecret();\n var has2 = /* @__PURE__ */ requireHas();\n var checkPropTypes = /* @__PURE__ */ requireCheckPropTypes();\n var printWarning = function() {\n };\n if (process.env.NODE_ENV !== \"production\") {\n printWarning = function(text) {\n var message2 = \"Warning: \" + text;\n if (typeof console !== \"undefined\") {\n console.error(message2);\n }\n try {\n throw new Error(message2);\n } catch (x2) {\n }\n };\n }\n function emptyFunctionThatReturnsNull() {\n return null;\n }\n factoryWithTypeCheckers = function(isValidElement, throwOnDirectAccess) {\n var ITERATOR_SYMBOL = typeof Symbol === \"function\" && Symbol.iterator;\n var FAUX_ITERATOR_SYMBOL = \"@@iterator\";\n function getIteratorFn(maybeIterable) {\n var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);\n if (typeof iteratorFn === \"function\") {\n return iteratorFn;\n }\n }\n var ANONYMOUS = \"<>\";\n var ReactPropTypes = {\n array: createPrimitiveTypeChecker(\"array\"),\n bigint: createPrimitiveTypeChecker(\"bigint\"),\n bool: createPrimitiveTypeChecker(\"boolean\"),\n func: createPrimitiveTypeChecker(\"function\"),\n number: createPrimitiveTypeChecker(\"number\"),\n object: createPrimitiveTypeChecker(\"object\"),\n string: createPrimitiveTypeChecker(\"string\"),\n symbol: createPrimitiveTypeChecker(\"symbol\"),\n any: createAnyTypeChecker(),\n arrayOf: createArrayOfTypeChecker,\n element: createElementTypeChecker(),\n elementType: createElementTypeTypeChecker(),\n instanceOf: createInstanceTypeChecker,\n node: createNodeChecker(),\n objectOf: createObjectOfTypeChecker,\n oneOf: createEnumTypeChecker,\n oneOfType: createUnionTypeChecker,\n shape: createShapeTypeChecker,\n exact: createStrictShapeTypeChecker\n };\n function is2(x2, y2) {\n if (x2 === y2) {\n return x2 !== 0 || 1 / x2 === 1 / y2;\n } else {\n return x2 !== x2 && y2 !== y2;\n }\n }\n function PropTypeError(message2, data) {\n this.message = message2;\n this.data = data && typeof data === \"object\" ? data : {};\n this.stack = \"\";\n }\n PropTypeError.prototype = Error.prototype;\n function createChainableTypeChecker(validate) {\n if (process.env.NODE_ENV !== \"production\") {\n var manualPropTypeCallCache = {};\n var manualPropTypeWarningCount = 0;\n }\n function checkType(isRequired, props, propName, componentName, location, propFullName, secret) {\n componentName = componentName || ANONYMOUS;\n propFullName = propFullName || propName;\n if (secret !== ReactPropTypesSecret) {\n if (throwOnDirectAccess) {\n var err = new Error(\n \"Calling PropTypes validators directly is not supported by the `prop-types` package. Use `PropTypes.checkPropTypes()` to call them. Read more at http://fb.me/use-check-prop-types\"\n );\n err.name = \"Invariant Violation\";\n throw err;\n } else if (process.env.NODE_ENV !== \"production\" && typeof console !== \"undefined\") {\n var cacheKey = componentName + \":\" + propName;\n if (!manualPropTypeCallCache[cacheKey] && // Avoid spamming the console because they are often not actionable except for lib authors\n manualPropTypeWarningCount < 3) {\n printWarning(\n \"You are manually calling a React.PropTypes validation function for the `\" + propFullName + \"` prop on `\" + componentName + \"`. This is deprecated and will throw in the standalone `prop-types` package. You may be seeing this warning due to a third-party PropTypes library. See https://fb.me/react-warning-dont-call-proptypes for details.\"\n );\n manualPropTypeCallCache[cacheKey] = true;\n manualPropTypeWarningCount++;\n }\n }\n }\n if (props[propName] == null) {\n if (isRequired) {\n if (props[propName] === null) {\n return new PropTypeError(\"The \" + location + \" `\" + propFullName + \"` is marked as required \" + (\"in `\" + componentName + \"`, but its value is `null`.\"));\n }\n return new PropTypeError(\"The \" + location + \" `\" + propFullName + \"` is marked as required in \" + (\"`\" + componentName + \"`, but its value is `undefined`.\"));\n }\n return null;\n } else {\n return validate(props, propName, componentName, location, propFullName);\n }\n }\n var chainedCheckType = checkType.bind(null, false);\n chainedCheckType.isRequired = checkType.bind(null, true);\n return chainedCheckType;\n }\n function createPrimitiveTypeChecker(expectedType) {\n function validate(props, propName, componentName, location, propFullName, secret) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== expectedType) {\n var preciseType = getPreciseType(propValue);\n return new PropTypeError(\n \"Invalid \" + location + \" `\" + propFullName + \"` of type \" + (\"`\" + preciseType + \"` supplied to `\" + componentName + \"`, expected \") + (\"`\" + expectedType + \"`.\"),\n { expectedType }\n );\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n function createAnyTypeChecker() {\n return createChainableTypeChecker(emptyFunctionThatReturnsNull);\n }\n function createArrayOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== \"function\") {\n return new PropTypeError(\"Property `\" + propFullName + \"` of component `\" + componentName + \"` has invalid PropType notation inside arrayOf.\");\n }\n var propValue = props[propName];\n if (!Array.isArray(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError(\"Invalid \" + location + \" `\" + propFullName + \"` of type \" + (\"`\" + propType + \"` supplied to `\" + componentName + \"`, expected an array.\"));\n }\n for (var i = 0; i < propValue.length; i++) {\n var error2 = typeChecker(propValue, i, componentName, location, propFullName + \"[\" + i + \"]\", ReactPropTypesSecret);\n if (error2 instanceof Error) {\n return error2;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n function createElementTypeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n if (!isValidElement(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError(\"Invalid \" + location + \" `\" + propFullName + \"` of type \" + (\"`\" + propType + \"` supplied to `\" + componentName + \"`, expected a single ReactElement.\"));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n function createElementTypeTypeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n if (!ReactIs.isValidElementType(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError(\"Invalid \" + location + \" `\" + propFullName + \"` of type \" + (\"`\" + propType + \"` supplied to `\" + componentName + \"`, expected a single ReactElement type.\"));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n function createInstanceTypeChecker(expectedClass) {\n function validate(props, propName, componentName, location, propFullName) {\n if (!(props[propName] instanceof expectedClass)) {\n var expectedClassName = expectedClass.name || ANONYMOUS;\n var actualClassName = getClassName(props[propName]);\n return new PropTypeError(\"Invalid \" + location + \" `\" + propFullName + \"` of type \" + (\"`\" + actualClassName + \"` supplied to `\" + componentName + \"`, expected \") + (\"instance of `\" + expectedClassName + \"`.\"));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n function createEnumTypeChecker(expectedValues) {\n if (!Array.isArray(expectedValues)) {\n if (process.env.NODE_ENV !== \"production\") {\n if (arguments.length > 1) {\n printWarning(\n \"Invalid arguments supplied to oneOf, expected an array, got \" + arguments.length + \" arguments. A common mistake is to write oneOf(x, y, z) instead of oneOf([x, y, z]).\"\n );\n } else {\n printWarning(\"Invalid argument supplied to oneOf, expected an array.\");\n }\n }\n return emptyFunctionThatReturnsNull;\n }\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n for (var i = 0; i < expectedValues.length; i++) {\n if (is2(propValue, expectedValues[i])) {\n return null;\n }\n }\n var valuesString = JSON.stringify(expectedValues, function replacer(key, value) {\n var type = getPreciseType(value);\n if (type === \"symbol\") {\n return String(value);\n }\n return value;\n });\n return new PropTypeError(\"Invalid \" + location + \" `\" + propFullName + \"` of value `\" + String(propValue) + \"` \" + (\"supplied to `\" + componentName + \"`, expected one of \" + valuesString + \".\"));\n }\n return createChainableTypeChecker(validate);\n }\n function createObjectOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== \"function\") {\n return new PropTypeError(\"Property `\" + propFullName + \"` of component `\" + componentName + \"` has invalid PropType notation inside objectOf.\");\n }\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== \"object\") {\n return new PropTypeError(\"Invalid \" + location + \" `\" + propFullName + \"` of type \" + (\"`\" + propType + \"` supplied to `\" + componentName + \"`, expected an object.\"));\n }\n for (var key in propValue) {\n if (has2(propValue, key)) {\n var error2 = typeChecker(propValue, key, componentName, location, propFullName + \".\" + key, ReactPropTypesSecret);\n if (error2 instanceof Error) {\n return error2;\n }\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n function createUnionTypeChecker(arrayOfTypeCheckers) {\n if (!Array.isArray(arrayOfTypeCheckers)) {\n process.env.NODE_ENV !== \"production\" ? printWarning(\"Invalid argument supplied to oneOfType, expected an instance of array.\") : void 0;\n return emptyFunctionThatReturnsNull;\n }\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n if (typeof checker !== \"function\") {\n printWarning(\n \"Invalid argument supplied to oneOfType. Expected an array of check functions, but received \" + getPostfixForTypeWarning(checker) + \" at index \" + i + \".\"\n );\n return emptyFunctionThatReturnsNull;\n }\n }\n function validate(props, propName, componentName, location, propFullName) {\n var expectedTypes = [];\n for (var i2 = 0; i2 < arrayOfTypeCheckers.length; i2++) {\n var checker2 = arrayOfTypeCheckers[i2];\n var checkerResult = checker2(props, propName, componentName, location, propFullName, ReactPropTypesSecret);\n if (checkerResult == null) {\n return null;\n }\n if (checkerResult.data && has2(checkerResult.data, \"expectedType\")) {\n expectedTypes.push(checkerResult.data.expectedType);\n }\n }\n var expectedTypesMessage = expectedTypes.length > 0 ? \", expected one of type [\" + expectedTypes.join(\", \") + \"]\" : \"\";\n return new PropTypeError(\"Invalid \" + location + \" `\" + propFullName + \"` supplied to \" + (\"`\" + componentName + \"`\" + expectedTypesMessage + \".\"));\n }\n return createChainableTypeChecker(validate);\n }\n function createNodeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n if (!isNode2(props[propName])) {\n return new PropTypeError(\"Invalid \" + location + \" `\" + propFullName + \"` supplied to \" + (\"`\" + componentName + \"`, expected a ReactNode.\"));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n function invalidValidatorError(componentName, location, propFullName, key, type) {\n return new PropTypeError(\n (componentName || \"React class\") + \": \" + location + \" type `\" + propFullName + \".\" + key + \"` is invalid; it must be a function, usually from the `prop-types` package, but received `\" + type + \"`.\"\n );\n }\n function createShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== \"object\") {\n return new PropTypeError(\"Invalid \" + location + \" `\" + propFullName + \"` of type `\" + propType + \"` \" + (\"supplied to `\" + componentName + \"`, expected `object`.\"));\n }\n for (var key in shapeTypes) {\n var checker = shapeTypes[key];\n if (typeof checker !== \"function\") {\n return invalidValidatorError(componentName, location, propFullName, key, getPreciseType(checker));\n }\n var error2 = checker(propValue, key, componentName, location, propFullName + \".\" + key, ReactPropTypesSecret);\n if (error2) {\n return error2;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n function createStrictShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== \"object\") {\n return new PropTypeError(\"Invalid \" + location + \" `\" + propFullName + \"` of type `\" + propType + \"` \" + (\"supplied to `\" + componentName + \"`, expected `object`.\"));\n }\n var allKeys = assign2({}, props[propName], shapeTypes);\n for (var key in allKeys) {\n var checker = shapeTypes[key];\n if (has2(shapeTypes, key) && typeof checker !== \"function\") {\n return invalidValidatorError(componentName, location, propFullName, key, getPreciseType(checker));\n }\n if (!checker) {\n return new PropTypeError(\n \"Invalid \" + location + \" `\" + propFullName + \"` key `\" + key + \"` supplied to `\" + componentName + \"`.\\nBad object: \" + JSON.stringify(props[propName], null, \" \") + \"\\nValid keys: \" + JSON.stringify(Object.keys(shapeTypes), null, \" \")\n );\n }\n var error2 = checker(propValue, key, componentName, location, propFullName + \".\" + key, ReactPropTypesSecret);\n if (error2) {\n return error2;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n function isNode2(propValue) {\n switch (typeof propValue) {\n case \"number\":\n case \"string\":\n case \"undefined\":\n return true;\n case \"boolean\":\n return !propValue;\n case \"object\":\n if (Array.isArray(propValue)) {\n return propValue.every(isNode2);\n }\n if (propValue === null || isValidElement(propValue)) {\n return true;\n }\n var iteratorFn = getIteratorFn(propValue);\n if (iteratorFn) {\n var iterator = iteratorFn.call(propValue);\n var step;\n if (iteratorFn !== propValue.entries) {\n while (!(step = iterator.next()).done) {\n if (!isNode2(step.value)) {\n return false;\n }\n }\n } else {\n while (!(step = iterator.next()).done) {\n var entry = step.value;\n if (entry) {\n if (!isNode2(entry[1])) {\n return false;\n }\n }\n }\n }\n } else {\n return false;\n }\n return true;\n default:\n return false;\n }\n }\n function isSymbol(propType, propValue) {\n if (propType === \"symbol\") {\n return true;\n }\n if (!propValue) {\n return false;\n }\n if (propValue[\"@@toStringTag\"] === \"Symbol\") {\n return true;\n }\n if (typeof Symbol === \"function\" && propValue instanceof Symbol) {\n return true;\n }\n return false;\n }\n function getPropType(propValue) {\n var propType = typeof propValue;\n if (Array.isArray(propValue)) {\n return \"array\";\n }\n if (propValue instanceof RegExp) {\n return \"object\";\n }\n if (isSymbol(propType, propValue)) {\n return \"symbol\";\n }\n return propType;\n }\n function getPreciseType(propValue) {\n if (typeof propValue === \"undefined\" || propValue === null) {\n return \"\" + propValue;\n }\n var propType = getPropType(propValue);\n if (propType === \"object\") {\n if (propValue instanceof Date) {\n return \"date\";\n } else if (propValue instanceof RegExp) {\n return \"regexp\";\n }\n }\n return propType;\n }\n function getPostfixForTypeWarning(value) {\n var type = getPreciseType(value);\n switch (type) {\n case \"array\":\n case \"object\":\n return \"an \" + type;\n case \"boolean\":\n case \"date\":\n case \"regexp\":\n return \"a \" + type;\n default:\n return type;\n }\n }\n function getClassName(propValue) {\n if (!propValue.constructor || !propValue.constructor.name) {\n return ANONYMOUS;\n }\n return propValue.constructor.name;\n }\n ReactPropTypes.checkPropTypes = checkPropTypes;\n ReactPropTypes.resetWarningCache = checkPropTypes.resetWarningCache;\n ReactPropTypes.PropTypes = ReactPropTypes;\n return ReactPropTypes;\n };\n return factoryWithTypeCheckers;\n}\nvar factoryWithThrowingShims;\nvar hasRequiredFactoryWithThrowingShims;\nfunction requireFactoryWithThrowingShims() {\n if (hasRequiredFactoryWithThrowingShims) return factoryWithThrowingShims;\n hasRequiredFactoryWithThrowingShims = 1;\n var ReactPropTypesSecret = /* @__PURE__ */ requireReactPropTypesSecret();\n function emptyFunction() {\n }\n function emptyFunctionWithReset() {\n }\n emptyFunctionWithReset.resetWarningCache = emptyFunction;\n factoryWithThrowingShims = function() {\n function shim2(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n return;\n }\n var err = new Error(\n \"Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types\"\n );\n err.name = \"Invariant Violation\";\n throw err;\n }\n shim2.isRequired = shim2;\n function getShim() {\n return shim2;\n }\n var ReactPropTypes = {\n array: shim2,\n bigint: shim2,\n bool: shim2,\n func: shim2,\n number: shim2,\n object: shim2,\n string: shim2,\n symbol: shim2,\n any: shim2,\n arrayOf: getShim,\n element: shim2,\n elementType: shim2,\n instanceOf: getShim,\n node: shim2,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n ReactPropTypes.PropTypes = ReactPropTypes;\n return ReactPropTypes;\n };\n return factoryWithThrowingShims;\n}\nvar hasRequiredPropTypes;\nfunction requirePropTypes() {\n if (hasRequiredPropTypes) return propTypes.exports;\n hasRequiredPropTypes = 1;\n if (process.env.NODE_ENV !== \"production\") {\n var ReactIs = requireReactIs$2();\n var throwOnDirectAccess = true;\n propTypes.exports = /* @__PURE__ */ requireFactoryWithTypeCheckers()(ReactIs.isElement, throwOnDirectAccess);\n } else {\n propTypes.exports = /* @__PURE__ */ requireFactoryWithThrowingShims()();\n }\n return propTypes.exports;\n}\nvar propTypesExports = /* @__PURE__ */ requirePropTypes();\nconst PropTypes = /* @__PURE__ */ getDefaultExportFromCjs$1(propTypesExports);\nvar ReactReduxContext = /* @__PURE__ */ React__default.createContext(null);\nif (process.env.NODE_ENV !== \"production\") {\n ReactReduxContext.displayName = \"ReactRedux\";\n}\nfunction defaultNoopBatch(callback) {\n callback();\n}\nvar batch = defaultNoopBatch;\nvar setBatch = function setBatch2(newBatch) {\n return batch = newBatch;\n};\nvar getBatch = function getBatch2() {\n return batch;\n};\nfunction createListenerCollection() {\n var batch2 = getBatch();\n var first2 = null;\n var last = null;\n return {\n clear: function clear() {\n first2 = null;\n last = null;\n },\n notify: function notify2() {\n batch2(function() {\n var listener = first2;\n while (listener) {\n listener.callback();\n listener = listener.next;\n }\n });\n },\n get: function get4() {\n var listeners = [];\n var listener = first2;\n while (listener) {\n listeners.push(listener);\n listener = listener.next;\n }\n return listeners;\n },\n subscribe: function subscribe(callback) {\n var isSubscribed = true;\n var listener = last = {\n callback,\n next: null,\n prev: last\n };\n if (listener.prev) {\n listener.prev.next = listener;\n } else {\n first2 = listener;\n }\n return function unsubscribe() {\n if (!isSubscribed || first2 === null) return;\n isSubscribed = false;\n if (listener.next) {\n listener.next.prev = listener.prev;\n } else {\n last = listener.prev;\n }\n if (listener.prev) {\n listener.prev.next = listener.next;\n } else {\n first2 = listener.next;\n }\n };\n }\n };\n}\nvar nullListeners = {\n notify: function notify() {\n },\n get: function get() {\n return [];\n }\n};\nfunction createSubscription(store, parentSub) {\n var unsubscribe;\n var listeners = nullListeners;\n function addNestedSub(listener) {\n trySubscribe();\n return listeners.subscribe(listener);\n }\n function notifyNestedSubs() {\n listeners.notify();\n }\n function handleChangeWrapper() {\n if (subscription.onStateChange) {\n subscription.onStateChange();\n }\n }\n function isSubscribed() {\n return Boolean(unsubscribe);\n }\n function trySubscribe() {\n if (!unsubscribe) {\n unsubscribe = parentSub ? parentSub.addNestedSub(handleChangeWrapper) : store.subscribe(handleChangeWrapper);\n listeners = createListenerCollection();\n }\n }\n function tryUnsubscribe() {\n if (unsubscribe) {\n unsubscribe();\n unsubscribe = void 0;\n listeners.clear();\n listeners = nullListeners;\n }\n }\n var subscription = {\n addNestedSub,\n notifyNestedSubs,\n handleChangeWrapper,\n isSubscribed,\n trySubscribe,\n tryUnsubscribe,\n getListeners: function getListeners() {\n return listeners;\n }\n };\n return subscription;\n}\nvar useIsomorphicLayoutEffect$3 = typeof window !== \"undefined\" && typeof window.document !== \"undefined\" && typeof window.document.createElement !== \"undefined\" ? useLayoutEffect : useEffect;\nfunction Provider(_ref) {\n var store = _ref.store, context = _ref.context, children = _ref.children;\n var contextValue = useMemo$1(function() {\n var subscription = createSubscription(store);\n return {\n store,\n subscription\n };\n }, [store]);\n var previousState = useMemo$1(function() {\n return store.getState();\n }, [store]);\n useIsomorphicLayoutEffect$3(function() {\n var subscription = contextValue.subscription;\n subscription.onStateChange = subscription.notifyNestedSubs;\n subscription.trySubscribe();\n if (previousState !== store.getState()) {\n subscription.notifyNestedSubs();\n }\n return function() {\n subscription.tryUnsubscribe();\n subscription.onStateChange = null;\n };\n }, [contextValue, previousState]);\n var Context = context || ReactReduxContext;\n return /* @__PURE__ */ React__default.createElement(Context.Provider, {\n value: contextValue\n }, children);\n}\nif (process.env.NODE_ENV !== \"production\") {\n Provider.propTypes = {\n store: PropTypes.shape({\n subscribe: PropTypes.func.isRequired,\n dispatch: PropTypes.func.isRequired,\n getState: PropTypes.func.isRequired\n }),\n context: PropTypes.object,\n children: PropTypes.any\n };\n}\nfunction _objectWithoutPropertiesLoose$2(r2, e) {\n if (null == r2) return {};\n var t2 = {};\n for (var n2 in r2) if ({}.hasOwnProperty.call(r2, n2)) {\n if (e.includes(n2)) continue;\n t2[n2] = r2[n2];\n }\n return t2;\n}\nvar reactIs$1 = { exports: {} };\nvar reactIs_production_min$1 = {};\n/** @license React v16.13.1\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\nvar hasRequiredReactIs_production_min$1;\nfunction requireReactIs_production_min$1() {\n if (hasRequiredReactIs_production_min$1) return reactIs_production_min$1;\n hasRequiredReactIs_production_min$1 = 1;\n var b2 = \"function\" === typeof Symbol && Symbol.for, c2 = b2 ? Symbol.for(\"react.element\") : 60103, d2 = b2 ? Symbol.for(\"react.portal\") : 60106, e = b2 ? Symbol.for(\"react.fragment\") : 60107, f2 = b2 ? Symbol.for(\"react.strict_mode\") : 60108, g2 = b2 ? Symbol.for(\"react.profiler\") : 60114, h2 = b2 ? Symbol.for(\"react.provider\") : 60109, k2 = b2 ? Symbol.for(\"react.context\") : 60110, l2 = b2 ? Symbol.for(\"react.async_mode\") : 60111, m = b2 ? Symbol.for(\"react.concurrent_mode\") : 60111, n2 = b2 ? Symbol.for(\"react.forward_ref\") : 60112, p2 = b2 ? Symbol.for(\"react.suspense\") : 60113, q2 = b2 ? Symbol.for(\"react.suspense_list\") : 60120, r2 = b2 ? Symbol.for(\"react.memo\") : 60115, t2 = b2 ? Symbol.for(\"react.lazy\") : 60116, v2 = b2 ? Symbol.for(\"react.block\") : 60121, w2 = b2 ? Symbol.for(\"react.fundamental\") : 60117, x2 = b2 ? Symbol.for(\"react.responder\") : 60118, y2 = b2 ? Symbol.for(\"react.scope\") : 60119;\n function z2(a2) {\n if (\"object\" === typeof a2 && null !== a2) {\n var u2 = a2.$$typeof;\n switch (u2) {\n case c2:\n switch (a2 = a2.type, a2) {\n case l2:\n case m:\n case e:\n case g2:\n case f2:\n case p2:\n return a2;\n default:\n switch (a2 = a2 && a2.$$typeof, a2) {\n case k2:\n case n2:\n case t2:\n case r2:\n case h2:\n return a2;\n default:\n return u2;\n }\n }\n case d2:\n return u2;\n }\n }\n }\n function A2(a2) {\n return z2(a2) === m;\n }\n reactIs_production_min$1.AsyncMode = l2;\n reactIs_production_min$1.ConcurrentMode = m;\n reactIs_production_min$1.ContextConsumer = k2;\n reactIs_production_min$1.ContextProvider = h2;\n reactIs_production_min$1.Element = c2;\n reactIs_production_min$1.ForwardRef = n2;\n reactIs_production_min$1.Fragment = e;\n reactIs_production_min$1.Lazy = t2;\n reactIs_production_min$1.Memo = r2;\n reactIs_production_min$1.Portal = d2;\n reactIs_production_min$1.Profiler = g2;\n reactIs_production_min$1.StrictMode = f2;\n reactIs_production_min$1.Suspense = p2;\n reactIs_production_min$1.isAsyncMode = function(a2) {\n return A2(a2) || z2(a2) === l2;\n };\n reactIs_production_min$1.isConcurrentMode = A2;\n reactIs_production_min$1.isContextConsumer = function(a2) {\n return z2(a2) === k2;\n };\n reactIs_production_min$1.isContextProvider = function(a2) {\n return z2(a2) === h2;\n };\n reactIs_production_min$1.isElement = function(a2) {\n return \"object\" === typeof a2 && null !== a2 && a2.$$typeof === c2;\n };\n reactIs_production_min$1.isForwardRef = function(a2) {\n return z2(a2) === n2;\n };\n reactIs_production_min$1.isFragment = function(a2) {\n return z2(a2) === e;\n };\n reactIs_production_min$1.isLazy = function(a2) {\n return z2(a2) === t2;\n };\n reactIs_production_min$1.isMemo = function(a2) {\n return z2(a2) === r2;\n };\n reactIs_production_min$1.isPortal = function(a2) {\n return z2(a2) === d2;\n };\n reactIs_production_min$1.isProfiler = function(a2) {\n return z2(a2) === g2;\n };\n reactIs_production_min$1.isStrictMode = function(a2) {\n return z2(a2) === f2;\n };\n reactIs_production_min$1.isSuspense = function(a2) {\n return z2(a2) === p2;\n };\n reactIs_production_min$1.isValidElementType = function(a2) {\n return \"string\" === typeof a2 || \"function\" === typeof a2 || a2 === e || a2 === m || a2 === g2 || a2 === f2 || a2 === p2 || a2 === q2 || \"object\" === typeof a2 && null !== a2 && (a2.$$typeof === t2 || a2.$$typeof === r2 || a2.$$typeof === h2 || a2.$$typeof === k2 || a2.$$typeof === n2 || a2.$$typeof === w2 || a2.$$typeof === x2 || a2.$$typeof === y2 || a2.$$typeof === v2);\n };\n reactIs_production_min$1.typeOf = z2;\n return reactIs_production_min$1;\n}\nvar reactIs_development$1 = {};\n/** @license React v16.13.1\n * react-is.development.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\nvar hasRequiredReactIs_development$1;\nfunction requireReactIs_development$1() {\n if (hasRequiredReactIs_development$1) return reactIs_development$1;\n hasRequiredReactIs_development$1 = 1;\n if (process.env.NODE_ENV !== \"production\") {\n (function() {\n var hasSymbol = typeof Symbol === \"function\" && Symbol.for;\n var REACT_ELEMENT_TYPE = hasSymbol ? Symbol.for(\"react.element\") : 60103;\n var REACT_PORTAL_TYPE = hasSymbol ? Symbol.for(\"react.portal\") : 60106;\n var REACT_FRAGMENT_TYPE = hasSymbol ? Symbol.for(\"react.fragment\") : 60107;\n var REACT_STRICT_MODE_TYPE = hasSymbol ? Symbol.for(\"react.strict_mode\") : 60108;\n var REACT_PROFILER_TYPE = hasSymbol ? Symbol.for(\"react.profiler\") : 60114;\n var REACT_PROVIDER_TYPE = hasSymbol ? Symbol.for(\"react.provider\") : 60109;\n var REACT_CONTEXT_TYPE = hasSymbol ? Symbol.for(\"react.context\") : 60110;\n var REACT_ASYNC_MODE_TYPE = hasSymbol ? Symbol.for(\"react.async_mode\") : 60111;\n var REACT_CONCURRENT_MODE_TYPE = hasSymbol ? Symbol.for(\"react.concurrent_mode\") : 60111;\n var REACT_FORWARD_REF_TYPE = hasSymbol ? Symbol.for(\"react.forward_ref\") : 60112;\n var REACT_SUSPENSE_TYPE = hasSymbol ? Symbol.for(\"react.suspense\") : 60113;\n var REACT_SUSPENSE_LIST_TYPE = hasSymbol ? Symbol.for(\"react.suspense_list\") : 60120;\n var REACT_MEMO_TYPE = hasSymbol ? Symbol.for(\"react.memo\") : 60115;\n var REACT_LAZY_TYPE = hasSymbol ? Symbol.for(\"react.lazy\") : 60116;\n var REACT_BLOCK_TYPE = hasSymbol ? Symbol.for(\"react.block\") : 60121;\n var REACT_FUNDAMENTAL_TYPE = hasSymbol ? Symbol.for(\"react.fundamental\") : 60117;\n var REACT_RESPONDER_TYPE = hasSymbol ? Symbol.for(\"react.responder\") : 60118;\n var REACT_SCOPE_TYPE = hasSymbol ? Symbol.for(\"react.scope\") : 60119;\n function isValidElementType(type) {\n return typeof type === \"string\" || typeof type === \"function\" || // Note: its typeof might be other than 'symbol' or 'number' if it's a polyfill.\n type === REACT_FRAGMENT_TYPE || type === REACT_CONCURRENT_MODE_TYPE || type === REACT_PROFILER_TYPE || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || typeof type === \"object\" && type !== null && (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || type.$$typeof === REACT_FUNDAMENTAL_TYPE || type.$$typeof === REACT_RESPONDER_TYPE || type.$$typeof === REACT_SCOPE_TYPE || type.$$typeof === REACT_BLOCK_TYPE);\n }\n function typeOf(object) {\n if (typeof object === \"object\" && object !== null) {\n var $$typeof = object.$$typeof;\n switch ($$typeof) {\n case REACT_ELEMENT_TYPE:\n var type = object.type;\n switch (type) {\n case REACT_ASYNC_MODE_TYPE:\n case REACT_CONCURRENT_MODE_TYPE:\n case REACT_FRAGMENT_TYPE:\n case REACT_PROFILER_TYPE:\n case REACT_STRICT_MODE_TYPE:\n case REACT_SUSPENSE_TYPE:\n return type;\n default:\n var $$typeofType = type && type.$$typeof;\n switch ($$typeofType) {\n case REACT_CONTEXT_TYPE:\n case REACT_FORWARD_REF_TYPE:\n case REACT_LAZY_TYPE:\n case REACT_MEMO_TYPE:\n case REACT_PROVIDER_TYPE:\n return $$typeofType;\n default:\n return $$typeof;\n }\n }\n case REACT_PORTAL_TYPE:\n return $$typeof;\n }\n }\n return void 0;\n }\n var AsyncMode = REACT_ASYNC_MODE_TYPE;\n var ConcurrentMode = REACT_CONCURRENT_MODE_TYPE;\n var ContextConsumer = REACT_CONTEXT_TYPE;\n var ContextProvider = REACT_PROVIDER_TYPE;\n var Element2 = REACT_ELEMENT_TYPE;\n var ForwardRef = REACT_FORWARD_REF_TYPE;\n var Fragment2 = REACT_FRAGMENT_TYPE;\n var Lazy = REACT_LAZY_TYPE;\n var Memo = REACT_MEMO_TYPE;\n var Portal2 = REACT_PORTAL_TYPE;\n var Profiler = REACT_PROFILER_TYPE;\n var StrictMode = REACT_STRICT_MODE_TYPE;\n var Suspense = REACT_SUSPENSE_TYPE;\n var hasWarnedAboutDeprecatedIsAsyncMode = false;\n function isAsyncMode(object) {\n {\n if (!hasWarnedAboutDeprecatedIsAsyncMode) {\n hasWarnedAboutDeprecatedIsAsyncMode = true;\n console[\"warn\"](\"The ReactIs.isAsyncMode() alias has been deprecated, and will be removed in React 17+. Update your code to use ReactIs.isConcurrentMode() instead. It has the exact same API.\");\n }\n }\n return isConcurrentMode(object) || typeOf(object) === REACT_ASYNC_MODE_TYPE;\n }\n function isConcurrentMode(object) {\n return typeOf(object) === REACT_CONCURRENT_MODE_TYPE;\n }\n function isContextConsumer(object) {\n return typeOf(object) === REACT_CONTEXT_TYPE;\n }\n function isContextProvider(object) {\n return typeOf(object) === REACT_PROVIDER_TYPE;\n }\n function isElement2(object) {\n return typeof object === \"object\" && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\n }\n function isForwardRef(object) {\n return typeOf(object) === REACT_FORWARD_REF_TYPE;\n }\n function isFragment2(object) {\n return typeOf(object) === REACT_FRAGMENT_TYPE;\n }\n function isLazy(object) {\n return typeOf(object) === REACT_LAZY_TYPE;\n }\n function isMemo(object) {\n return typeOf(object) === REACT_MEMO_TYPE;\n }\n function isPortal(object) {\n return typeOf(object) === REACT_PORTAL_TYPE;\n }\n function isProfiler(object) {\n return typeOf(object) === REACT_PROFILER_TYPE;\n }\n function isStrictMode(object) {\n return typeOf(object) === REACT_STRICT_MODE_TYPE;\n }\n function isSuspense(object) {\n return typeOf(object) === REACT_SUSPENSE_TYPE;\n }\n reactIs_development$1.AsyncMode = AsyncMode;\n reactIs_development$1.ConcurrentMode = ConcurrentMode;\n reactIs_development$1.ContextConsumer = ContextConsumer;\n reactIs_development$1.ContextProvider = ContextProvider;\n reactIs_development$1.Element = Element2;\n reactIs_development$1.ForwardRef = ForwardRef;\n reactIs_development$1.Fragment = Fragment2;\n reactIs_development$1.Lazy = Lazy;\n reactIs_development$1.Memo = Memo;\n reactIs_development$1.Portal = Portal2;\n reactIs_development$1.Profiler = Profiler;\n reactIs_development$1.StrictMode = StrictMode;\n reactIs_development$1.Suspense = Suspense;\n reactIs_development$1.isAsyncMode = isAsyncMode;\n reactIs_development$1.isConcurrentMode = isConcurrentMode;\n reactIs_development$1.isContextConsumer = isContextConsumer;\n reactIs_development$1.isContextProvider = isContextProvider;\n reactIs_development$1.isElement = isElement2;\n reactIs_development$1.isForwardRef = isForwardRef;\n reactIs_development$1.isFragment = isFragment2;\n reactIs_development$1.isLazy = isLazy;\n reactIs_development$1.isMemo = isMemo;\n reactIs_development$1.isPortal = isPortal;\n reactIs_development$1.isProfiler = isProfiler;\n reactIs_development$1.isStrictMode = isStrictMode;\n reactIs_development$1.isSuspense = isSuspense;\n reactIs_development$1.isValidElementType = isValidElementType;\n reactIs_development$1.typeOf = typeOf;\n })();\n }\n return reactIs_development$1;\n}\nvar hasRequiredReactIs$1;\nfunction requireReactIs$1() {\n if (hasRequiredReactIs$1) return reactIs$1.exports;\n hasRequiredReactIs$1 = 1;\n if (process.env.NODE_ENV === \"production\") {\n reactIs$1.exports = requireReactIs_production_min$1();\n } else {\n reactIs$1.exports = requireReactIs_development$1();\n }\n return reactIs$1.exports;\n}\nvar hoistNonReactStatics_cjs;\nvar hasRequiredHoistNonReactStatics_cjs;\nfunction requireHoistNonReactStatics_cjs() {\n if (hasRequiredHoistNonReactStatics_cjs) return hoistNonReactStatics_cjs;\n hasRequiredHoistNonReactStatics_cjs = 1;\n var reactIs2 = requireReactIs$1();\n var REACT_STATICS = {\n childContextTypes: true,\n contextType: true,\n contextTypes: true,\n defaultProps: true,\n displayName: true,\n getDefaultProps: true,\n getDerivedStateFromError: true,\n getDerivedStateFromProps: true,\n mixins: true,\n propTypes: true,\n type: true\n };\n var KNOWN_STATICS = {\n name: true,\n length: true,\n prototype: true,\n caller: true,\n callee: true,\n arguments: true,\n arity: true\n };\n var FORWARD_REF_STATICS = {\n \"$$typeof\": true,\n render: true,\n defaultProps: true,\n displayName: true,\n propTypes: true\n };\n var MEMO_STATICS = {\n \"$$typeof\": true,\n compare: true,\n defaultProps: true,\n displayName: true,\n propTypes: true,\n type: true\n };\n var TYPE_STATICS = {};\n TYPE_STATICS[reactIs2.ForwardRef] = FORWARD_REF_STATICS;\n TYPE_STATICS[reactIs2.Memo] = MEMO_STATICS;\n function getStatics(component) {\n if (reactIs2.isMemo(component)) {\n return MEMO_STATICS;\n }\n return TYPE_STATICS[component[\"$$typeof\"]] || REACT_STATICS;\n }\n var defineProperty = Object.defineProperty;\n var getOwnPropertyNames = Object.getOwnPropertyNames;\n var getOwnPropertySymbols = Object.getOwnPropertySymbols;\n var getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n var getPrototypeOf = Object.getPrototypeOf;\n var objectPrototype = Object.prototype;\n function hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {\n if (typeof sourceComponent !== \"string\") {\n if (objectPrototype) {\n var inheritedComponent = getPrototypeOf(sourceComponent);\n if (inheritedComponent && inheritedComponent !== objectPrototype) {\n hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);\n }\n }\n var keys2 = getOwnPropertyNames(sourceComponent);\n if (getOwnPropertySymbols) {\n keys2 = keys2.concat(getOwnPropertySymbols(sourceComponent));\n }\n var targetStatics = getStatics(targetComponent);\n var sourceStatics = getStatics(sourceComponent);\n for (var i = 0; i < keys2.length; ++i) {\n var key = keys2[i];\n if (!KNOWN_STATICS[key] && !(blacklist && blacklist[key]) && !(sourceStatics && sourceStatics[key]) && !(targetStatics && targetStatics[key])) {\n var descriptor = getOwnPropertyDescriptor(sourceComponent, key);\n try {\n defineProperty(targetComponent, key, descriptor);\n } catch (e) {\n }\n }\n }\n }\n return targetComponent;\n }\n hoistNonReactStatics_cjs = hoistNonReactStatics;\n return hoistNonReactStatics_cjs;\n}\nvar hoistNonReactStatics_cjsExports = requireHoistNonReactStatics_cjs();\nconst hoistNonReactStatics$1 = /* @__PURE__ */ getDefaultExportFromCjs$1(hoistNonReactStatics_cjsExports);\nvar reactIs = { exports: {} };\nvar reactIs_production_min = {};\n/** @license React v17.0.2\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\nvar hasRequiredReactIs_production_min;\nfunction requireReactIs_production_min() {\n if (hasRequiredReactIs_production_min) return reactIs_production_min;\n hasRequiredReactIs_production_min = 1;\n var b2 = 60103, c2 = 60106, d2 = 60107, e = 60108, f2 = 60114, g2 = 60109, h2 = 60110, k2 = 60112, l2 = 60113, m = 60120, n2 = 60115, p2 = 60116, q2 = 60121, r2 = 60122, u2 = 60117, v2 = 60129, w2 = 60131;\n if (\"function\" === typeof Symbol && Symbol.for) {\n var x2 = Symbol.for;\n b2 = x2(\"react.element\");\n c2 = x2(\"react.portal\");\n d2 = x2(\"react.fragment\");\n e = x2(\"react.strict_mode\");\n f2 = x2(\"react.profiler\");\n g2 = x2(\"react.provider\");\n h2 = x2(\"react.context\");\n k2 = x2(\"react.forward_ref\");\n l2 = x2(\"react.suspense\");\n m = x2(\"react.suspense_list\");\n n2 = x2(\"react.memo\");\n p2 = x2(\"react.lazy\");\n q2 = x2(\"react.block\");\n r2 = x2(\"react.server.block\");\n u2 = x2(\"react.fundamental\");\n v2 = x2(\"react.debug_trace_mode\");\n w2 = x2(\"react.legacy_hidden\");\n }\n function y2(a2) {\n if (\"object\" === typeof a2 && null !== a2) {\n var t2 = a2.$$typeof;\n switch (t2) {\n case b2:\n switch (a2 = a2.type, a2) {\n case d2:\n case f2:\n case e:\n case l2:\n case m:\n return a2;\n default:\n switch (a2 = a2 && a2.$$typeof, a2) {\n case h2:\n case k2:\n case p2:\n case n2:\n case g2:\n return a2;\n default:\n return t2;\n }\n }\n case c2:\n return t2;\n }\n }\n }\n var z2 = g2, A2 = b2, B2 = k2, C = d2, D2 = p2, E2 = n2, F = c2, G2 = f2, H2 = e, I2 = l2;\n reactIs_production_min.ContextConsumer = h2;\n reactIs_production_min.ContextProvider = z2;\n reactIs_production_min.Element = A2;\n reactIs_production_min.ForwardRef = B2;\n reactIs_production_min.Fragment = C;\n reactIs_production_min.Lazy = D2;\n reactIs_production_min.Memo = E2;\n reactIs_production_min.Portal = F;\n reactIs_production_min.Profiler = G2;\n reactIs_production_min.StrictMode = H2;\n reactIs_production_min.Suspense = I2;\n reactIs_production_min.isAsyncMode = function() {\n return false;\n };\n reactIs_production_min.isConcurrentMode = function() {\n return false;\n };\n reactIs_production_min.isContextConsumer = function(a2) {\n return y2(a2) === h2;\n };\n reactIs_production_min.isContextProvider = function(a2) {\n return y2(a2) === g2;\n };\n reactIs_production_min.isElement = function(a2) {\n return \"object\" === typeof a2 && null !== a2 && a2.$$typeof === b2;\n };\n reactIs_production_min.isForwardRef = function(a2) {\n return y2(a2) === k2;\n };\n reactIs_production_min.isFragment = function(a2) {\n return y2(a2) === d2;\n };\n reactIs_production_min.isLazy = function(a2) {\n return y2(a2) === p2;\n };\n reactIs_production_min.isMemo = function(a2) {\n return y2(a2) === n2;\n };\n reactIs_production_min.isPortal = function(a2) {\n return y2(a2) === c2;\n };\n reactIs_production_min.isProfiler = function(a2) {\n return y2(a2) === f2;\n };\n reactIs_production_min.isStrictMode = function(a2) {\n return y2(a2) === e;\n };\n reactIs_production_min.isSuspense = function(a2) {\n return y2(a2) === l2;\n };\n reactIs_production_min.isValidElementType = function(a2) {\n return \"string\" === typeof a2 || \"function\" === typeof a2 || a2 === d2 || a2 === f2 || a2 === v2 || a2 === e || a2 === l2 || a2 === m || a2 === w2 || \"object\" === typeof a2 && null !== a2 && (a2.$$typeof === p2 || a2.$$typeof === n2 || a2.$$typeof === g2 || a2.$$typeof === h2 || a2.$$typeof === k2 || a2.$$typeof === u2 || a2.$$typeof === q2 || a2[0] === r2) ? true : false;\n };\n reactIs_production_min.typeOf = y2;\n return reactIs_production_min;\n}\nvar reactIs_development = {};\n/** @license React v17.0.2\n * react-is.development.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\nvar hasRequiredReactIs_development;\nfunction requireReactIs_development() {\n if (hasRequiredReactIs_development) return reactIs_development;\n hasRequiredReactIs_development = 1;\n if (process.env.NODE_ENV !== \"production\") {\n (function() {\n var REACT_ELEMENT_TYPE = 60103;\n var REACT_PORTAL_TYPE = 60106;\n var REACT_FRAGMENT_TYPE = 60107;\n var REACT_STRICT_MODE_TYPE = 60108;\n var REACT_PROFILER_TYPE = 60114;\n var REACT_PROVIDER_TYPE = 60109;\n var REACT_CONTEXT_TYPE = 60110;\n var REACT_FORWARD_REF_TYPE = 60112;\n var REACT_SUSPENSE_TYPE = 60113;\n var REACT_SUSPENSE_LIST_TYPE = 60120;\n var REACT_MEMO_TYPE = 60115;\n var REACT_LAZY_TYPE = 60116;\n var REACT_BLOCK_TYPE = 60121;\n var REACT_SERVER_BLOCK_TYPE = 60122;\n var REACT_FUNDAMENTAL_TYPE = 60117;\n var REACT_DEBUG_TRACING_MODE_TYPE = 60129;\n var REACT_LEGACY_HIDDEN_TYPE = 60131;\n if (typeof Symbol === \"function\" && Symbol.for) {\n var symbolFor = Symbol.for;\n REACT_ELEMENT_TYPE = symbolFor(\"react.element\");\n REACT_PORTAL_TYPE = symbolFor(\"react.portal\");\n REACT_FRAGMENT_TYPE = symbolFor(\"react.fragment\");\n REACT_STRICT_MODE_TYPE = symbolFor(\"react.strict_mode\");\n REACT_PROFILER_TYPE = symbolFor(\"react.profiler\");\n REACT_PROVIDER_TYPE = symbolFor(\"react.provider\");\n REACT_CONTEXT_TYPE = symbolFor(\"react.context\");\n REACT_FORWARD_REF_TYPE = symbolFor(\"react.forward_ref\");\n REACT_SUSPENSE_TYPE = symbolFor(\"react.suspense\");\n REACT_SUSPENSE_LIST_TYPE = symbolFor(\"react.suspense_list\");\n REACT_MEMO_TYPE = symbolFor(\"react.memo\");\n REACT_LAZY_TYPE = symbolFor(\"react.lazy\");\n REACT_BLOCK_TYPE = symbolFor(\"react.block\");\n REACT_SERVER_BLOCK_TYPE = symbolFor(\"react.server.block\");\n REACT_FUNDAMENTAL_TYPE = symbolFor(\"react.fundamental\");\n symbolFor(\"react.scope\");\n symbolFor(\"react.opaque.id\");\n REACT_DEBUG_TRACING_MODE_TYPE = symbolFor(\"react.debug_trace_mode\");\n symbolFor(\"react.offscreen\");\n REACT_LEGACY_HIDDEN_TYPE = symbolFor(\"react.legacy_hidden\");\n }\n var enableScopeAPI = false;\n function isValidElementType(type) {\n if (typeof type === \"string\" || typeof type === \"function\") {\n return true;\n }\n if (type === REACT_FRAGMENT_TYPE || type === REACT_PROFILER_TYPE || type === REACT_DEBUG_TRACING_MODE_TYPE || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || type === REACT_LEGACY_HIDDEN_TYPE || enableScopeAPI) {\n return true;\n }\n if (typeof type === \"object\" && type !== null) {\n if (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || type.$$typeof === REACT_FUNDAMENTAL_TYPE || type.$$typeof === REACT_BLOCK_TYPE || type[0] === REACT_SERVER_BLOCK_TYPE) {\n return true;\n }\n }\n return false;\n }\n function typeOf(object) {\n if (typeof object === \"object\" && object !== null) {\n var $$typeof = object.$$typeof;\n switch ($$typeof) {\n case REACT_ELEMENT_TYPE:\n var type = object.type;\n switch (type) {\n case REACT_FRAGMENT_TYPE:\n case REACT_PROFILER_TYPE:\n case REACT_STRICT_MODE_TYPE:\n case REACT_SUSPENSE_TYPE:\n case REACT_SUSPENSE_LIST_TYPE:\n return type;\n default:\n var $$typeofType = type && type.$$typeof;\n switch ($$typeofType) {\n case REACT_CONTEXT_TYPE:\n case REACT_FORWARD_REF_TYPE:\n case REACT_LAZY_TYPE:\n case REACT_MEMO_TYPE:\n case REACT_PROVIDER_TYPE:\n return $$typeofType;\n default:\n return $$typeof;\n }\n }\n case REACT_PORTAL_TYPE:\n return $$typeof;\n }\n }\n return void 0;\n }\n var ContextConsumer = REACT_CONTEXT_TYPE;\n var ContextProvider = REACT_PROVIDER_TYPE;\n var Element2 = REACT_ELEMENT_TYPE;\n var ForwardRef = REACT_FORWARD_REF_TYPE;\n var Fragment2 = REACT_FRAGMENT_TYPE;\n var Lazy = REACT_LAZY_TYPE;\n var Memo = REACT_MEMO_TYPE;\n var Portal2 = REACT_PORTAL_TYPE;\n var Profiler = REACT_PROFILER_TYPE;\n var StrictMode = REACT_STRICT_MODE_TYPE;\n var Suspense = REACT_SUSPENSE_TYPE;\n var hasWarnedAboutDeprecatedIsAsyncMode = false;\n var hasWarnedAboutDeprecatedIsConcurrentMode = false;\n function isAsyncMode(object) {\n {\n if (!hasWarnedAboutDeprecatedIsAsyncMode) {\n hasWarnedAboutDeprecatedIsAsyncMode = true;\n console[\"warn\"](\"The ReactIs.isAsyncMode() alias has been deprecated, and will be removed in React 18+.\");\n }\n }\n return false;\n }\n function isConcurrentMode(object) {\n {\n if (!hasWarnedAboutDeprecatedIsConcurrentMode) {\n hasWarnedAboutDeprecatedIsConcurrentMode = true;\n console[\"warn\"](\"The ReactIs.isConcurrentMode() alias has been deprecated, and will be removed in React 18+.\");\n }\n }\n return false;\n }\n function isContextConsumer(object) {\n return typeOf(object) === REACT_CONTEXT_TYPE;\n }\n function isContextProvider(object) {\n return typeOf(object) === REACT_PROVIDER_TYPE;\n }\n function isElement2(object) {\n return typeof object === \"object\" && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\n }\n function isForwardRef(object) {\n return typeOf(object) === REACT_FORWARD_REF_TYPE;\n }\n function isFragment2(object) {\n return typeOf(object) === REACT_FRAGMENT_TYPE;\n }\n function isLazy(object) {\n return typeOf(object) === REACT_LAZY_TYPE;\n }\n function isMemo(object) {\n return typeOf(object) === REACT_MEMO_TYPE;\n }\n function isPortal(object) {\n return typeOf(object) === REACT_PORTAL_TYPE;\n }\n function isProfiler(object) {\n return typeOf(object) === REACT_PROFILER_TYPE;\n }\n function isStrictMode(object) {\n return typeOf(object) === REACT_STRICT_MODE_TYPE;\n }\n function isSuspense(object) {\n return typeOf(object) === REACT_SUSPENSE_TYPE;\n }\n reactIs_development.ContextConsumer = ContextConsumer;\n reactIs_development.ContextProvider = ContextProvider;\n reactIs_development.Element = Element2;\n reactIs_development.ForwardRef = ForwardRef;\n reactIs_development.Fragment = Fragment2;\n reactIs_development.Lazy = Lazy;\n reactIs_development.Memo = Memo;\n reactIs_development.Portal = Portal2;\n reactIs_development.Profiler = Profiler;\n reactIs_development.StrictMode = StrictMode;\n reactIs_development.Suspense = Suspense;\n reactIs_development.isAsyncMode = isAsyncMode;\n reactIs_development.isConcurrentMode = isConcurrentMode;\n reactIs_development.isContextConsumer = isContextConsumer;\n reactIs_development.isContextProvider = isContextProvider;\n reactIs_development.isElement = isElement2;\n reactIs_development.isForwardRef = isForwardRef;\n reactIs_development.isFragment = isFragment2;\n reactIs_development.isLazy = isLazy;\n reactIs_development.isMemo = isMemo;\n reactIs_development.isPortal = isPortal;\n reactIs_development.isProfiler = isProfiler;\n reactIs_development.isStrictMode = isStrictMode;\n reactIs_development.isSuspense = isSuspense;\n reactIs_development.isValidElementType = isValidElementType;\n reactIs_development.typeOf = typeOf;\n })();\n }\n return reactIs_development;\n}\nvar hasRequiredReactIs;\nfunction requireReactIs() {\n if (hasRequiredReactIs) return reactIs.exports;\n hasRequiredReactIs = 1;\n if (process.env.NODE_ENV === \"production\") {\n reactIs.exports = requireReactIs_production_min();\n } else {\n reactIs.exports = requireReactIs_development();\n }\n return reactIs.exports;\n}\nvar reactIsExports = requireReactIs();\nvar _excluded$3 = [\"getDisplayName\", \"methodName\", \"renderCountProp\", \"shouldHandleStateChanges\", \"storeKey\", \"withRef\", \"forwardRef\", \"context\"], _excluded2 = [\"reactReduxForwardedRef\"];\nvar EMPTY_ARRAY = [];\nvar NO_SUBSCRIPTION_ARRAY = [null, null];\nvar stringifyComponent = function stringifyComponent2(Comp) {\n try {\n return JSON.stringify(Comp);\n } catch (err) {\n return String(Comp);\n }\n};\nfunction storeStateUpdatesReducer(state, action) {\n var updateCount = state[1];\n return [action.payload, updateCount + 1];\n}\nfunction useIsomorphicLayoutEffectWithArgs(effectFunc, effectArgs, dependencies) {\n useIsomorphicLayoutEffect$3(function() {\n return effectFunc.apply(void 0, effectArgs);\n }, dependencies);\n}\nfunction captureWrapperProps(lastWrapperProps, lastChildProps, renderIsScheduled, wrapperProps, actualChildProps, childPropsFromStoreUpdate, notifyNestedSubs) {\n lastWrapperProps.current = wrapperProps;\n lastChildProps.current = actualChildProps;\n renderIsScheduled.current = false;\n if (childPropsFromStoreUpdate.current) {\n childPropsFromStoreUpdate.current = null;\n notifyNestedSubs();\n }\n}\nfunction subscribeUpdates(shouldHandleStateChanges, store, subscription, childPropsSelector, lastWrapperProps, lastChildProps, renderIsScheduled, childPropsFromStoreUpdate, notifyNestedSubs, forceComponentUpdateDispatch) {\n if (!shouldHandleStateChanges) return;\n var didUnsubscribe = false;\n var lastThrownError = null;\n var checkForUpdates = function checkForUpdates2() {\n if (didUnsubscribe) {\n return;\n }\n var latestStoreState = store.getState();\n var newChildProps, error2;\n try {\n newChildProps = childPropsSelector(latestStoreState, lastWrapperProps.current);\n } catch (e) {\n error2 = e;\n lastThrownError = e;\n }\n if (!error2) {\n lastThrownError = null;\n }\n if (newChildProps === lastChildProps.current) {\n if (!renderIsScheduled.current) {\n notifyNestedSubs();\n }\n } else {\n lastChildProps.current = newChildProps;\n childPropsFromStoreUpdate.current = newChildProps;\n renderIsScheduled.current = true;\n forceComponentUpdateDispatch({\n type: \"STORE_UPDATED\",\n payload: {\n error: error2\n }\n });\n }\n };\n subscription.onStateChange = checkForUpdates;\n subscription.trySubscribe();\n checkForUpdates();\n var unsubscribeWrapper = function unsubscribeWrapper2() {\n didUnsubscribe = true;\n subscription.tryUnsubscribe();\n subscription.onStateChange = null;\n if (lastThrownError) {\n throw lastThrownError;\n }\n };\n return unsubscribeWrapper;\n}\nvar initStateUpdates = function initStateUpdates2() {\n return [null, 0];\n};\nfunction connectAdvanced(selectorFactory, _ref) {\n if (_ref === void 0) {\n _ref = {};\n }\n var _ref2 = _ref, _ref2$getDisplayName = _ref2.getDisplayName, getDisplayName = _ref2$getDisplayName === void 0 ? function(name) {\n return \"ConnectAdvanced(\" + name + \")\";\n } : _ref2$getDisplayName, _ref2$methodName = _ref2.methodName, methodName = _ref2$methodName === void 0 ? \"connectAdvanced\" : _ref2$methodName, _ref2$renderCountProp = _ref2.renderCountProp, renderCountProp = _ref2$renderCountProp === void 0 ? void 0 : _ref2$renderCountProp, _ref2$shouldHandleSta = _ref2.shouldHandleStateChanges, shouldHandleStateChanges = _ref2$shouldHandleSta === void 0 ? true : _ref2$shouldHandleSta, _ref2$storeKey = _ref2.storeKey, storeKey = _ref2$storeKey === void 0 ? \"store\" : _ref2$storeKey, _ref2$withRef = _ref2.withRef, withRef = _ref2$withRef === void 0 ? false : _ref2$withRef, _ref2$forwardRef = _ref2.forwardRef, forwardRef2 = _ref2$forwardRef === void 0 ? false : _ref2$forwardRef, _ref2$context = _ref2.context, context = _ref2$context === void 0 ? ReactReduxContext : _ref2$context, connectOptions = _objectWithoutPropertiesLoose$2(_ref2, _excluded$3);\n if (process.env.NODE_ENV !== \"production\") {\n if (renderCountProp !== void 0) {\n throw new Error(\"renderCountProp is removed. render counting is built into the latest React Dev Tools profiling extension\");\n }\n if (withRef) {\n throw new Error(\"withRef is removed. To access the wrapped instance, use a ref on the connected component\");\n }\n var customStoreWarningMessage = \"To use a custom Redux store for specific components, create a custom React context with React.createContext(), and pass the context object to React Redux's Provider and specific components like: . You may also pass a {context : MyContext} option to connect\";\n if (storeKey !== \"store\") {\n throw new Error(\"storeKey has been removed and does not do anything. \" + customStoreWarningMessage);\n }\n }\n var Context = context;\n return function wrapWithConnect(WrappedComponent) {\n if (process.env.NODE_ENV !== \"production\" && !reactIsExports.isValidElementType(WrappedComponent)) {\n throw new Error(\"You must pass a component to the function returned by \" + (methodName + \". Instead received \" + stringifyComponent(WrappedComponent)));\n }\n var wrappedComponentName = WrappedComponent.displayName || WrappedComponent.name || \"Component\";\n var displayName = getDisplayName(wrappedComponentName);\n var selectorFactoryOptions = _extends$4({}, connectOptions, {\n getDisplayName,\n methodName,\n renderCountProp,\n shouldHandleStateChanges,\n storeKey,\n displayName,\n wrappedComponentName,\n WrappedComponent\n });\n var pure = connectOptions.pure;\n function createChildSelector(store) {\n return selectorFactory(store.dispatch, selectorFactoryOptions);\n }\n var usePureOnlyMemo = pure ? useMemo$1 : function(callback) {\n return callback();\n };\n function ConnectFunction(props) {\n var _useMemo = useMemo$1(function() {\n var reactReduxForwardedRef2 = props.reactReduxForwardedRef, wrapperProps2 = _objectWithoutPropertiesLoose$2(props, _excluded2);\n return [props.context, reactReduxForwardedRef2, wrapperProps2];\n }, [props]), propsContext = _useMemo[0], reactReduxForwardedRef = _useMemo[1], wrapperProps = _useMemo[2];\n var ContextToUse = useMemo$1(function() {\n return propsContext && propsContext.Consumer && reactIsExports.isContextConsumer(/* @__PURE__ */ React__default.createElement(propsContext.Consumer, null)) ? propsContext : Context;\n }, [propsContext, Context]);\n var contextValue = useContext(ContextToUse);\n var didStoreComeFromProps = Boolean(props.store) && Boolean(props.store.getState) && Boolean(props.store.dispatch);\n var didStoreComeFromContext = Boolean(contextValue) && Boolean(contextValue.store);\n if (process.env.NODE_ENV !== \"production\" && !didStoreComeFromProps && !didStoreComeFromContext) {\n throw new Error('Could not find \"store\" in the context of ' + ('\"' + displayName + '\". Either wrap the root component in a , ') + \"or pass a custom React context provider to and the corresponding \" + (\"React context consumer to \" + displayName + \" in connect options.\"));\n }\n var store = didStoreComeFromProps ? props.store : contextValue.store;\n var childPropsSelector = useMemo$1(function() {\n return createChildSelector(store);\n }, [store]);\n var _useMemo2 = useMemo$1(function() {\n if (!shouldHandleStateChanges) return NO_SUBSCRIPTION_ARRAY;\n var subscription2 = createSubscription(store, didStoreComeFromProps ? null : contextValue.subscription);\n var notifyNestedSubs2 = subscription2.notifyNestedSubs.bind(subscription2);\n return [subscription2, notifyNestedSubs2];\n }, [store, didStoreComeFromProps, contextValue]), subscription = _useMemo2[0], notifyNestedSubs = _useMemo2[1];\n var overriddenContextValue = useMemo$1(function() {\n if (didStoreComeFromProps) {\n return contextValue;\n }\n return _extends$4({}, contextValue, {\n subscription\n });\n }, [didStoreComeFromProps, contextValue, subscription]);\n var _useReducer = useReducer(storeStateUpdatesReducer, EMPTY_ARRAY, initStateUpdates), _useReducer$ = _useReducer[0], previousStateUpdateResult = _useReducer$[0], forceComponentUpdateDispatch = _useReducer[1];\n if (previousStateUpdateResult && previousStateUpdateResult.error) {\n throw previousStateUpdateResult.error;\n }\n var lastChildProps = useRef();\n var lastWrapperProps = useRef(wrapperProps);\n var childPropsFromStoreUpdate = useRef();\n var renderIsScheduled = useRef(false);\n var actualChildProps = usePureOnlyMemo(function() {\n if (childPropsFromStoreUpdate.current && wrapperProps === lastWrapperProps.current) {\n return childPropsFromStoreUpdate.current;\n }\n return childPropsSelector(store.getState(), wrapperProps);\n }, [store, previousStateUpdateResult, wrapperProps]);\n useIsomorphicLayoutEffectWithArgs(captureWrapperProps, [lastWrapperProps, lastChildProps, renderIsScheduled, wrapperProps, actualChildProps, childPropsFromStoreUpdate, notifyNestedSubs]);\n useIsomorphicLayoutEffectWithArgs(subscribeUpdates, [shouldHandleStateChanges, store, subscription, childPropsSelector, lastWrapperProps, lastChildProps, renderIsScheduled, childPropsFromStoreUpdate, notifyNestedSubs, forceComponentUpdateDispatch], [store, subscription, childPropsSelector]);\n var renderedWrappedComponent = useMemo$1(function() {\n return /* @__PURE__ */ React__default.createElement(WrappedComponent, _extends$4({}, actualChildProps, {\n ref: reactReduxForwardedRef\n }));\n }, [reactReduxForwardedRef, WrappedComponent, actualChildProps]);\n var renderedChild = useMemo$1(function() {\n if (shouldHandleStateChanges) {\n return /* @__PURE__ */ React__default.createElement(ContextToUse.Provider, {\n value: overriddenContextValue\n }, renderedWrappedComponent);\n }\n return renderedWrappedComponent;\n }, [ContextToUse, renderedWrappedComponent, overriddenContextValue]);\n return renderedChild;\n }\n var Connect = pure ? React__default.memo(ConnectFunction) : ConnectFunction;\n Connect.WrappedComponent = WrappedComponent;\n Connect.displayName = ConnectFunction.displayName = displayName;\n if (forwardRef2) {\n var forwarded = React__default.forwardRef(function forwardConnectRef(props, ref2) {\n return /* @__PURE__ */ React__default.createElement(Connect, _extends$4({}, props, {\n reactReduxForwardedRef: ref2\n }));\n });\n forwarded.displayName = displayName;\n forwarded.WrappedComponent = WrappedComponent;\n return hoistNonReactStatics$1(forwarded, WrappedComponent);\n }\n return hoistNonReactStatics$1(Connect, WrappedComponent);\n };\n}\nfunction is(x2, y2) {\n if (x2 === y2) {\n return x2 !== 0 || y2 !== 0 || 1 / x2 === 1 / y2;\n } else {\n return x2 !== x2 && y2 !== y2;\n }\n}\nfunction shallowEqual(objA, objB) {\n if (is(objA, objB)) return true;\n if (typeof objA !== \"object\" || objA === null || typeof objB !== \"object\" || objB === null) {\n return false;\n }\n var keysA = Object.keys(objA);\n var keysB = Object.keys(objB);\n if (keysA.length !== keysB.length) return false;\n for (var i = 0; i < keysA.length; i++) {\n if (!Object.prototype.hasOwnProperty.call(objB, keysA[i]) || !is(objA[keysA[i]], objB[keysA[i]])) {\n return false;\n }\n }\n return true;\n}\nfunction bindActionCreators(actionCreators, dispatch) {\n var boundActionCreators = {};\n var _loop = function _loop2(key2) {\n var actionCreator = actionCreators[key2];\n if (typeof actionCreator === \"function\") {\n boundActionCreators[key2] = function() {\n return dispatch(actionCreator.apply(void 0, arguments));\n };\n }\n };\n for (var key in actionCreators) {\n _loop(key);\n }\n return boundActionCreators;\n}\nfunction isPlainObject$2(obj) {\n if (typeof obj !== \"object\" || obj === null) return false;\n var proto2 = Object.getPrototypeOf(obj);\n if (proto2 === null) return true;\n var baseProto = proto2;\n while (Object.getPrototypeOf(baseProto) !== null) {\n baseProto = Object.getPrototypeOf(baseProto);\n }\n return proto2 === baseProto;\n}\nfunction warning$2(message2) {\n if (typeof console !== \"undefined\" && typeof console.error === \"function\") {\n console.error(message2);\n }\n try {\n throw new Error(message2);\n } catch (e) {\n }\n}\nfunction verifyPlainObject(value, displayName, methodName) {\n if (!isPlainObject$2(value)) {\n warning$2(methodName + \"() in \" + displayName + \" must return a plain object. Instead received \" + value + \".\");\n }\n}\nfunction wrapMapToPropsConstant(getConstant) {\n return function initConstantSelector(dispatch, options) {\n var constant = getConstant(dispatch, options);\n function constantSelector() {\n return constant;\n }\n constantSelector.dependsOnOwnProps = false;\n return constantSelector;\n };\n}\nfunction getDependsOnOwnProps(mapToProps) {\n return mapToProps.dependsOnOwnProps !== null && mapToProps.dependsOnOwnProps !== void 0 ? Boolean(mapToProps.dependsOnOwnProps) : mapToProps.length !== 1;\n}\nfunction wrapMapToPropsFunc(mapToProps, methodName) {\n return function initProxySelector(dispatch, _ref) {\n var displayName = _ref.displayName;\n var proxy = function mapToPropsProxy(stateOrDispatch, ownProps) {\n return proxy.dependsOnOwnProps ? proxy.mapToProps(stateOrDispatch, ownProps) : proxy.mapToProps(stateOrDispatch);\n };\n proxy.dependsOnOwnProps = true;\n proxy.mapToProps = function detectFactoryAndVerify(stateOrDispatch, ownProps) {\n proxy.mapToProps = mapToProps;\n proxy.dependsOnOwnProps = getDependsOnOwnProps(mapToProps);\n var props = proxy(stateOrDispatch, ownProps);\n if (typeof props === \"function\") {\n proxy.mapToProps = props;\n proxy.dependsOnOwnProps = getDependsOnOwnProps(props);\n props = proxy(stateOrDispatch, ownProps);\n }\n if (process.env.NODE_ENV !== \"production\") verifyPlainObject(props, displayName, methodName);\n return props;\n };\n return proxy;\n };\n}\nfunction whenMapDispatchToPropsIsFunction(mapDispatchToProps2) {\n return typeof mapDispatchToProps2 === \"function\" ? wrapMapToPropsFunc(mapDispatchToProps2, \"mapDispatchToProps\") : void 0;\n}\nfunction whenMapDispatchToPropsIsMissing(mapDispatchToProps2) {\n return !mapDispatchToProps2 ? wrapMapToPropsConstant(function(dispatch) {\n return {\n dispatch\n };\n }) : void 0;\n}\nfunction whenMapDispatchToPropsIsObject(mapDispatchToProps2) {\n return mapDispatchToProps2 && typeof mapDispatchToProps2 === \"object\" ? wrapMapToPropsConstant(function(dispatch) {\n return bindActionCreators(mapDispatchToProps2, dispatch);\n }) : void 0;\n}\nconst defaultMapDispatchToPropsFactories = [whenMapDispatchToPropsIsFunction, whenMapDispatchToPropsIsMissing, whenMapDispatchToPropsIsObject];\nfunction whenMapStateToPropsIsFunction(mapStateToProps) {\n return typeof mapStateToProps === \"function\" ? wrapMapToPropsFunc(mapStateToProps, \"mapStateToProps\") : void 0;\n}\nfunction whenMapStateToPropsIsMissing(mapStateToProps) {\n return !mapStateToProps ? wrapMapToPropsConstant(function() {\n return {};\n }) : void 0;\n}\nconst defaultMapStateToPropsFactories = [whenMapStateToPropsIsFunction, whenMapStateToPropsIsMissing];\nfunction defaultMergeProps(stateProps, dispatchProps, ownProps) {\n return _extends$4({}, ownProps, stateProps, dispatchProps);\n}\nfunction wrapMergePropsFunc(mergeProps) {\n return function initMergePropsProxy(dispatch, _ref) {\n var displayName = _ref.displayName, pure = _ref.pure, areMergedPropsEqual = _ref.areMergedPropsEqual;\n var hasRunOnce = false;\n var mergedProps;\n return function mergePropsProxy(stateProps, dispatchProps, ownProps) {\n var nextMergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n if (hasRunOnce) {\n if (!pure || !areMergedPropsEqual(nextMergedProps, mergedProps)) mergedProps = nextMergedProps;\n } else {\n hasRunOnce = true;\n mergedProps = nextMergedProps;\n if (process.env.NODE_ENV !== \"production\") verifyPlainObject(mergedProps, displayName, \"mergeProps\");\n }\n return mergedProps;\n };\n };\n}\nfunction whenMergePropsIsFunction(mergeProps) {\n return typeof mergeProps === \"function\" ? wrapMergePropsFunc(mergeProps) : void 0;\n}\nfunction whenMergePropsIsOmitted(mergeProps) {\n return !mergeProps ? function() {\n return defaultMergeProps;\n } : void 0;\n}\nconst defaultMergePropsFactories = [whenMergePropsIsFunction, whenMergePropsIsOmitted];\nfunction verify(selector2, methodName, displayName) {\n if (!selector2) {\n throw new Error(\"Unexpected value for \" + methodName + \" in \" + displayName + \".\");\n } else if (methodName === \"mapStateToProps\" || methodName === \"mapDispatchToProps\") {\n if (!Object.prototype.hasOwnProperty.call(selector2, \"dependsOnOwnProps\")) {\n warning$2(\"The selector for \" + methodName + \" of \" + displayName + \" did not specify a value for dependsOnOwnProps.\");\n }\n }\n}\nfunction verifySubselectors(mapStateToProps, mapDispatchToProps2, mergeProps, displayName) {\n verify(mapStateToProps, \"mapStateToProps\", displayName);\n verify(mapDispatchToProps2, \"mapDispatchToProps\", displayName);\n verify(mergeProps, \"mergeProps\", displayName);\n}\nvar _excluded$2 = [\"initMapStateToProps\", \"initMapDispatchToProps\", \"initMergeProps\"];\nfunction impureFinalPropsSelectorFactory(mapStateToProps, mapDispatchToProps2, mergeProps, dispatch) {\n return function impureFinalPropsSelector(state, ownProps) {\n return mergeProps(mapStateToProps(state, ownProps), mapDispatchToProps2(dispatch, ownProps), ownProps);\n };\n}\nfunction pureFinalPropsSelectorFactory(mapStateToProps, mapDispatchToProps2, mergeProps, dispatch, _ref) {\n var areStatesEqual = _ref.areStatesEqual, areOwnPropsEqual = _ref.areOwnPropsEqual, areStatePropsEqual = _ref.areStatePropsEqual;\n var hasRunAtLeastOnce = false;\n var state;\n var ownProps;\n var stateProps;\n var dispatchProps;\n var mergedProps;\n function handleFirstCall(firstState, firstOwnProps) {\n state = firstState;\n ownProps = firstOwnProps;\n stateProps = mapStateToProps(state, ownProps);\n dispatchProps = mapDispatchToProps2(dispatch, ownProps);\n mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n hasRunAtLeastOnce = true;\n return mergedProps;\n }\n function handleNewPropsAndNewState() {\n stateProps = mapStateToProps(state, ownProps);\n if (mapDispatchToProps2.dependsOnOwnProps) dispatchProps = mapDispatchToProps2(dispatch, ownProps);\n mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n return mergedProps;\n }\n function handleNewProps() {\n if (mapStateToProps.dependsOnOwnProps) stateProps = mapStateToProps(state, ownProps);\n if (mapDispatchToProps2.dependsOnOwnProps) dispatchProps = mapDispatchToProps2(dispatch, ownProps);\n mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n return mergedProps;\n }\n function handleNewState() {\n var nextStateProps = mapStateToProps(state, ownProps);\n var statePropsChanged = !areStatePropsEqual(nextStateProps, stateProps);\n stateProps = nextStateProps;\n if (statePropsChanged) mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n return mergedProps;\n }\n function handleSubsequentCalls(nextState, nextOwnProps) {\n var propsChanged = !areOwnPropsEqual(nextOwnProps, ownProps);\n var stateChanged = !areStatesEqual(nextState, state, nextOwnProps, ownProps);\n state = nextState;\n ownProps = nextOwnProps;\n if (propsChanged && stateChanged) return handleNewPropsAndNewState();\n if (propsChanged) return handleNewProps();\n if (stateChanged) return handleNewState();\n return mergedProps;\n }\n return function pureFinalPropsSelector(nextState, nextOwnProps) {\n return hasRunAtLeastOnce ? handleSubsequentCalls(nextState, nextOwnProps) : handleFirstCall(nextState, nextOwnProps);\n };\n}\nfunction finalPropsSelectorFactory(dispatch, _ref2) {\n var initMapStateToProps = _ref2.initMapStateToProps, initMapDispatchToProps = _ref2.initMapDispatchToProps, initMergeProps = _ref2.initMergeProps, options = _objectWithoutPropertiesLoose$2(_ref2, _excluded$2);\n var mapStateToProps = initMapStateToProps(dispatch, options);\n var mapDispatchToProps2 = initMapDispatchToProps(dispatch, options);\n var mergeProps = initMergeProps(dispatch, options);\n if (process.env.NODE_ENV !== \"production\") {\n verifySubselectors(mapStateToProps, mapDispatchToProps2, mergeProps, options.displayName);\n }\n var selectorFactory = options.pure ? pureFinalPropsSelectorFactory : impureFinalPropsSelectorFactory;\n return selectorFactory(mapStateToProps, mapDispatchToProps2, mergeProps, dispatch, options);\n}\nvar _excluded$1 = [\"pure\", \"areStatesEqual\", \"areOwnPropsEqual\", \"areStatePropsEqual\", \"areMergedPropsEqual\"];\nfunction match$2(arg, factories, name) {\n for (var i = factories.length - 1; i >= 0; i--) {\n var result = factories[i](arg);\n if (result) return result;\n }\n return function(dispatch, options) {\n throw new Error(\"Invalid value of type \" + typeof arg + \" for \" + name + \" argument when connecting component \" + options.wrappedComponentName + \".\");\n };\n}\nfunction strictEqual(a2, b2) {\n return a2 === b2;\n}\nfunction createConnect(_temp) {\n var _ref = _temp === void 0 ? {} : _temp, _ref$connectHOC = _ref.connectHOC, connectHOC = _ref$connectHOC === void 0 ? connectAdvanced : _ref$connectHOC, _ref$mapStateToPropsF = _ref.mapStateToPropsFactories, mapStateToPropsFactories = _ref$mapStateToPropsF === void 0 ? defaultMapStateToPropsFactories : _ref$mapStateToPropsF, _ref$mapDispatchToPro = _ref.mapDispatchToPropsFactories, mapDispatchToPropsFactories = _ref$mapDispatchToPro === void 0 ? defaultMapDispatchToPropsFactories : _ref$mapDispatchToPro, _ref$mergePropsFactor = _ref.mergePropsFactories, mergePropsFactories = _ref$mergePropsFactor === void 0 ? defaultMergePropsFactories : _ref$mergePropsFactor, _ref$selectorFactory = _ref.selectorFactory, selectorFactory = _ref$selectorFactory === void 0 ? finalPropsSelectorFactory : _ref$selectorFactory;\n return function connect2(mapStateToProps, mapDispatchToProps2, mergeProps, _ref2) {\n if (_ref2 === void 0) {\n _ref2 = {};\n }\n var _ref3 = _ref2, _ref3$pure = _ref3.pure, pure = _ref3$pure === void 0 ? true : _ref3$pure, _ref3$areStatesEqual = _ref3.areStatesEqual, areStatesEqual = _ref3$areStatesEqual === void 0 ? strictEqual : _ref3$areStatesEqual, _ref3$areOwnPropsEqua = _ref3.areOwnPropsEqual, areOwnPropsEqual = _ref3$areOwnPropsEqua === void 0 ? shallowEqual : _ref3$areOwnPropsEqua, _ref3$areStatePropsEq = _ref3.areStatePropsEqual, areStatePropsEqual = _ref3$areStatePropsEq === void 0 ? shallowEqual : _ref3$areStatePropsEq, _ref3$areMergedPropsE = _ref3.areMergedPropsEqual, areMergedPropsEqual = _ref3$areMergedPropsE === void 0 ? shallowEqual : _ref3$areMergedPropsE, extraOptions = _objectWithoutPropertiesLoose$2(_ref3, _excluded$1);\n var initMapStateToProps = match$2(mapStateToProps, mapStateToPropsFactories, \"mapStateToProps\");\n var initMapDispatchToProps = match$2(mapDispatchToProps2, mapDispatchToPropsFactories, \"mapDispatchToProps\");\n var initMergeProps = match$2(mergeProps, mergePropsFactories, \"mergeProps\");\n return connectHOC(selectorFactory, _extends$4({\n // used in error messages\n methodName: \"connect\",\n // used to compute Connect's displayName from the wrapped component's displayName.\n getDisplayName: function getDisplayName(name) {\n return \"Connect(\" + name + \")\";\n },\n // if mapStateToProps is falsy, the Connect component doesn't subscribe to store state changes\n shouldHandleStateChanges: Boolean(mapStateToProps),\n // passed through to selectorFactory\n initMapStateToProps,\n initMapDispatchToProps,\n initMergeProps,\n pure,\n areStatesEqual,\n areOwnPropsEqual,\n areStatePropsEqual,\n areMergedPropsEqual\n }, extraOptions));\n };\n}\nconst connect = /* @__PURE__ */ createConnect();\nsetBatch(unstable_batchedUpdates);\nfunction areInputsEqual$1(newInputs, lastInputs) {\n if (newInputs.length !== lastInputs.length) {\n return false;\n }\n for (var i = 0; i < newInputs.length; i++) {\n if (newInputs[i] !== lastInputs[i]) {\n return false;\n }\n }\n return true;\n}\nfunction useMemoOne(getResult, inputs) {\n var initial = useState(function() {\n return {\n inputs,\n result: getResult()\n };\n })[0];\n var isFirstRun = useRef(true);\n var committed = useRef(initial);\n var useCache = isFirstRun.current || Boolean(inputs && committed.current.inputs && areInputsEqual$1(inputs, committed.current.inputs));\n var cache = useCache ? committed.current : {\n inputs,\n result: getResult()\n };\n useEffect(function() {\n isFirstRun.current = false;\n committed.current = cache;\n }, [cache]);\n return cache.result;\n}\nfunction useCallbackOne(callback, inputs) {\n return useMemoOne(function() {\n return callback;\n }, inputs);\n}\nvar useMemo = useMemoOne;\nvar useCallback = useCallbackOne;\nvar isProduction$2 = process.env.NODE_ENV === \"production\";\nvar prefix$3 = \"Invariant failed\";\nfunction invariant$1(condition, message2) {\n if (isProduction$2) {\n throw new Error(prefix$3);\n }\n var provided = typeof message2 === \"function\" ? message2() : message2;\n var value = provided ? \"\".concat(prefix$3, \": \").concat(provided) : prefix$3;\n throw new Error(value);\n}\nvar getRect = function getRect2(_ref) {\n var top = _ref.top, right = _ref.right, bottom = _ref.bottom, left = _ref.left;\n var width = right - left;\n var height = bottom - top;\n var rect = {\n top,\n right,\n bottom,\n left,\n width,\n height,\n x: left,\n y: top,\n center: {\n x: (right + left) / 2,\n y: (bottom + top) / 2\n }\n };\n return rect;\n};\nvar expand = function expand2(target, expandBy) {\n return {\n top: target.top - expandBy.top,\n left: target.left - expandBy.left,\n bottom: target.bottom + expandBy.bottom,\n right: target.right + expandBy.right\n };\n};\nvar shrink = function shrink2(target, shrinkBy) {\n return {\n top: target.top + shrinkBy.top,\n left: target.left + shrinkBy.left,\n bottom: target.bottom - shrinkBy.bottom,\n right: target.right - shrinkBy.right\n };\n};\nvar shift$1 = function shift(target, shiftBy) {\n return {\n top: target.top + shiftBy.y,\n left: target.left + shiftBy.x,\n bottom: target.bottom + shiftBy.y,\n right: target.right + shiftBy.x\n };\n};\nvar noSpacing$2 = {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n};\nvar createBox = function createBox2(_ref2) {\n var borderBox = _ref2.borderBox, _ref2$margin = _ref2.margin, margin = _ref2$margin === void 0 ? noSpacing$2 : _ref2$margin, _ref2$border = _ref2.border, border = _ref2$border === void 0 ? noSpacing$2 : _ref2$border, _ref2$padding = _ref2.padding, padding = _ref2$padding === void 0 ? noSpacing$2 : _ref2$padding;\n var marginBox = getRect(expand(borderBox, margin));\n var paddingBox = getRect(shrink(borderBox, border));\n var contentBox = getRect(shrink(paddingBox, padding));\n return {\n marginBox,\n borderBox: getRect(borderBox),\n paddingBox,\n contentBox,\n margin,\n border,\n padding\n };\n};\nvar parse$2 = function parse(raw) {\n var value = raw.slice(0, -2);\n var suffix2 = raw.slice(-2);\n if (suffix2 !== \"px\") {\n return 0;\n }\n var result = Number(value);\n !!isNaN(result) ? process.env.NODE_ENV !== \"production\" ? invariant$1(false, \"Could not parse value [raw: \" + raw + \", without suffix: \" + value + \"]\") : invariant$1() : void 0;\n return result;\n};\nvar getWindowScroll$2 = function getWindowScroll() {\n return {\n x: window.pageXOffset,\n y: window.pageYOffset\n };\n};\nvar offset$4 = function offset(original, change) {\n var borderBox = original.borderBox, border = original.border, margin = original.margin, padding = original.padding;\n var shifted = shift$1(borderBox, change);\n return createBox({\n borderBox: shifted,\n border,\n margin,\n padding\n });\n};\nvar withScroll = function withScroll2(original, scroll4) {\n if (scroll4 === void 0) {\n scroll4 = getWindowScroll$2();\n }\n return offset$4(original, scroll4);\n};\nvar calculateBox = function calculateBox2(borderBox, styles2) {\n var margin = {\n top: parse$2(styles2.marginTop),\n right: parse$2(styles2.marginRight),\n bottom: parse$2(styles2.marginBottom),\n left: parse$2(styles2.marginLeft)\n };\n var padding = {\n top: parse$2(styles2.paddingTop),\n right: parse$2(styles2.paddingRight),\n bottom: parse$2(styles2.paddingBottom),\n left: parse$2(styles2.paddingLeft)\n };\n var border = {\n top: parse$2(styles2.borderTopWidth),\n right: parse$2(styles2.borderRightWidth),\n bottom: parse$2(styles2.borderBottomWidth),\n left: parse$2(styles2.borderLeftWidth)\n };\n return createBox({\n borderBox,\n margin,\n padding,\n border\n });\n};\nvar getBox = function getBox2(el) {\n var borderBox = el.getBoundingClientRect();\n var styles2 = window.getComputedStyle(el);\n return calculateBox(borderBox, styles2);\n};\nvar safeIsNaN = Number.isNaN || function ponyfill(value) {\n return typeof value === \"number\" && value !== value;\n};\nfunction isEqual$6(first2, second) {\n if (first2 === second) {\n return true;\n }\n if (safeIsNaN(first2) && safeIsNaN(second)) {\n return true;\n }\n return false;\n}\nfunction areInputsEqual(newInputs, lastInputs) {\n if (newInputs.length !== lastInputs.length) {\n return false;\n }\n for (var i = 0; i < newInputs.length; i++) {\n if (!isEqual$6(newInputs[i], lastInputs[i])) {\n return false;\n }\n }\n return true;\n}\nfunction memoizeOne(resultFn, isEqual7) {\n if (isEqual7 === void 0) {\n isEqual7 = areInputsEqual;\n }\n var lastThis;\n var lastArgs = [];\n var lastResult;\n var calledOnce = false;\n function memoized() {\n var newArgs = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n newArgs[_i] = arguments[_i];\n }\n if (calledOnce && lastThis === this && isEqual7(newArgs, lastArgs)) {\n return lastResult;\n }\n lastResult = resultFn.apply(this, newArgs);\n calledOnce = true;\n lastThis = this;\n lastArgs = newArgs;\n return lastResult;\n }\n return memoized;\n}\nvar rafSchd = function rafSchd2(fn2) {\n var lastArgs = [];\n var frameId = null;\n var wrapperFn = function wrapperFn2() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n lastArgs = args;\n if (frameId) {\n return;\n }\n frameId = requestAnimationFrame(function() {\n frameId = null;\n fn2.apply(void 0, lastArgs);\n });\n };\n wrapperFn.cancel = function() {\n if (!frameId) {\n return;\n }\n cancelAnimationFrame(frameId);\n frameId = null;\n };\n return wrapperFn;\n};\nvar isProduction$1 = process.env.NODE_ENV === \"production\";\nvar spacesAndTabs$1 = /[ \\t]{2,}/g;\nvar lineStartWithSpaces$1 = /^[ \\t]*/gm;\nvar clean$4 = function clean(value) {\n return value.replace(spacesAndTabs$1, \" \").replace(lineStartWithSpaces$1, \"\").trim();\n};\nvar getDevMessage$1 = function getDevMessage(message2) {\n return clean$4(\"\\n %creact-beautiful-dnd\\n\\n %c\" + clean$4(message2) + \"\\n\\n %c👷‍ This is a development only message. It will be removed in production builds.\\n\");\n};\nvar getFormattedMessage$1 = function getFormattedMessage(message2) {\n return [getDevMessage$1(message2), \"color: #00C584; font-size: 1.2em; font-weight: bold;\", \"line-height: 1.5\", \"color: #723874;\"];\n};\nvar isDisabledFlag$1 = \"__react-beautiful-dnd-disable-dev-warnings\";\nfunction log(type, message2) {\n var _console;\n if (isProduction$1) {\n return;\n }\n if (typeof window !== \"undefined\" && window[isDisabledFlag$1]) {\n return;\n }\n (_console = console)[type].apply(_console, getFormattedMessage$1(message2));\n}\nvar warning$1 = log.bind(null, \"warn\");\nvar error$1 = log.bind(null, \"error\");\nfunction noop$5() {\n}\nfunction getOptions$1(shared2, fromBinding) {\n return _extends$4({}, shared2, {}, fromBinding);\n}\nfunction bindEvents$1(el, bindings, sharedOptions2) {\n var unbindings = bindings.map(function(binding) {\n var options = getOptions$1(sharedOptions2, binding.options);\n el.addEventListener(binding.eventName, binding.fn, options);\n return function unbind() {\n el.removeEventListener(binding.eventName, binding.fn, options);\n };\n });\n return function unbindAll() {\n unbindings.forEach(function(unbind) {\n unbind();\n });\n };\n}\nvar isProduction$1$1 = process.env.NODE_ENV === \"production\";\nvar prefix$2 = \"Invariant failed\";\nfunction RbdInvariant(message2) {\n this.message = message2;\n}\nRbdInvariant.prototype.toString = function toString() {\n return this.message;\n};\nfunction invariant(condition, message2) {\n if (isProduction$1$1) {\n throw new RbdInvariant(prefix$2);\n } else {\n throw new RbdInvariant(prefix$2 + \": \" + (message2 || \"\"));\n }\n}\nvar ErrorBoundary$1 = function(_React$Component) {\n _inheritsLoose$2(ErrorBoundary2, _React$Component);\n function ErrorBoundary2() {\n var _this;\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n _this.callbacks = null;\n _this.unbind = noop$5;\n _this.onWindowError = function(event) {\n var callbacks = _this.getCallbacks();\n if (callbacks.isDragging()) {\n callbacks.tryAbort();\n process.env.NODE_ENV !== \"production\" ? warning$1(\"\\n An error was caught by our window 'error' event listener while a drag was occurring.\\n The active drag has been aborted.\\n \") : void 0;\n }\n var err = event.error;\n if (err instanceof RbdInvariant) {\n event.preventDefault();\n if (process.env.NODE_ENV !== \"production\") {\n error$1(err.message);\n }\n }\n };\n _this.getCallbacks = function() {\n if (!_this.callbacks) {\n throw new Error(\"Unable to find AppCallbacks in \");\n }\n return _this.callbacks;\n };\n _this.setCallbacks = function(callbacks) {\n _this.callbacks = callbacks;\n };\n return _this;\n }\n var _proto = ErrorBoundary2.prototype;\n _proto.componentDidMount = function componentDidMount() {\n this.unbind = bindEvents$1(window, [{\n eventName: \"error\",\n fn: this.onWindowError\n }]);\n };\n _proto.componentDidCatch = function componentDidCatch(err) {\n if (err instanceof RbdInvariant) {\n if (process.env.NODE_ENV !== \"production\") {\n error$1(err.message);\n }\n this.setState({});\n return;\n }\n throw err;\n };\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.unbind();\n };\n _proto.render = function render() {\n return this.props.children(this.setCallbacks);\n };\n return ErrorBoundary2;\n}(React__default.Component);\nvar dragHandleUsageInstructions = \"\\n Press space bar to start a drag.\\n When dragging you can use the arrow keys to move the item around and escape to cancel.\\n Some screen readers may require you to be in focus mode or to use your pass through key\\n\";\nvar position$2 = function position(index2) {\n return index2 + 1;\n};\nvar onDragStart$1 = function onDragStart(start4) {\n return \"\\n You have lifted an item in position \" + position$2(start4.source.index) + \"\\n\";\n};\nvar withLocation$1 = function withLocation(source, destination) {\n var isInHomeList = source.droppableId === destination.droppableId;\n var startPosition = position$2(source.index);\n var endPosition = position$2(destination.index);\n if (isInHomeList) {\n return \"\\n You have moved the item from position \" + startPosition + \"\\n to position \" + endPosition + \"\\n \";\n }\n return \"\\n You have moved the item from position \" + startPosition + \"\\n in list \" + source.droppableId + \"\\n to list \" + destination.droppableId + \"\\n in position \" + endPosition + \"\\n \";\n};\nvar withCombine$1 = function withCombine(id, source, combine2) {\n var inHomeList = source.droppableId === combine2.droppableId;\n if (inHomeList) {\n return \"\\n The item \" + id + \"\\n has been combined with \" + combine2.draggableId;\n }\n return \"\\n The item \" + id + \"\\n in list \" + source.droppableId + \"\\n has been combined with \" + combine2.draggableId + \"\\n in list \" + combine2.droppableId + \"\\n \";\n};\nvar onDragUpdate$1 = function onDragUpdate(update2) {\n var location = update2.destination;\n if (location) {\n return withLocation$1(update2.source, location);\n }\n var combine2 = update2.combine;\n if (combine2) {\n return withCombine$1(update2.draggableId, update2.source, combine2);\n }\n return \"You are over an area that cannot be dropped on\";\n};\nvar returnedToStart$1 = function returnedToStart(source) {\n return \"\\n The item has returned to its starting position\\n of \" + position$2(source.index) + \"\\n\";\n};\nvar onDragEnd$1 = function onDragEnd(result) {\n if (result.reason === \"CANCEL\") {\n return \"\\n Movement cancelled.\\n \" + returnedToStart$1(result.source) + \"\\n \";\n }\n var location = result.destination;\n var combine2 = result.combine;\n if (location) {\n return \"\\n You have dropped the item.\\n \" + withLocation$1(result.source, location) + \"\\n \";\n }\n if (combine2) {\n return \"\\n You have dropped the item.\\n \" + withCombine$1(result.draggableId, result.source, combine2) + \"\\n \";\n }\n return \"\\n The item has been dropped while not over a drop area.\\n \" + returnedToStart$1(result.source) + \"\\n \";\n};\nvar preset$1 = {\n dragHandleUsageInstructions,\n onDragStart: onDragStart$1,\n onDragUpdate: onDragUpdate$1,\n onDragEnd: onDragEnd$1\n};\nvar origin$1 = {\n x: 0,\n y: 0\n};\nvar add$3 = function add(point1, point2) {\n return {\n x: point1.x + point2.x,\n y: point1.y + point2.y\n };\n};\nvar subtract$3 = function subtract(point1, point2) {\n return {\n x: point1.x - point2.x,\n y: point1.y - point2.y\n };\n};\nvar isEqual$5 = function isEqual(point1, point2) {\n return point1.x === point2.x && point1.y === point2.y;\n};\nvar negate$1 = function negate(point) {\n return {\n x: point.x !== 0 ? -point.x : 0,\n y: point.y !== 0 ? -point.y : 0\n };\n};\nvar patch$1 = function patch(line2, value, otherValue) {\n var _ref;\n if (otherValue === void 0) {\n otherValue = 0;\n }\n return _ref = {}, _ref[line2] = value, _ref[line2 === \"x\" ? \"y\" : \"x\"] = otherValue, _ref;\n};\nvar distance$1 = function distance(point1, point2) {\n return Math.sqrt(Math.pow(point2.x - point1.x, 2) + Math.pow(point2.y - point1.y, 2));\n};\nvar closest$1 = function closest(target, points) {\n return Math.min.apply(Math, points.map(function(point) {\n return distance$1(target, point);\n }));\n};\nvar apply$2 = function apply(fn2) {\n return function(point) {\n return {\n x: fn2(point.x),\n y: fn2(point.y)\n };\n };\n};\nvar executeClip$1 = function(frame, subject) {\n var result = getRect({\n top: Math.max(subject.top, frame.top),\n right: Math.min(subject.right, frame.right),\n bottom: Math.min(subject.bottom, frame.bottom),\n left: Math.max(subject.left, frame.left)\n });\n if (result.width <= 0 || result.height <= 0) {\n return null;\n }\n return result;\n};\nvar offsetByPosition$1 = function offsetByPosition(spacing, point) {\n return {\n top: spacing.top + point.y,\n left: spacing.left + point.x,\n bottom: spacing.bottom + point.y,\n right: spacing.right + point.x\n };\n};\nvar getCorners$1 = function getCorners(spacing) {\n return [{\n x: spacing.left,\n y: spacing.top\n }, {\n x: spacing.right,\n y: spacing.top\n }, {\n x: spacing.left,\n y: spacing.bottom\n }, {\n x: spacing.right,\n y: spacing.bottom\n }];\n};\nvar noSpacing$1 = {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n};\nvar scroll$2 = function scroll(target, frame) {\n if (!frame) {\n return target;\n }\n return offsetByPosition$1(target, frame.scroll.diff.displacement);\n};\nvar increase$1 = function increase(target, axis, withPlaceholder) {\n if (withPlaceholder && withPlaceholder.increasedBy) {\n var _extends2;\n return _extends$4({}, target, (_extends2 = {}, _extends2[axis.end] = target[axis.end] + withPlaceholder.increasedBy[axis.line], _extends2));\n }\n return target;\n};\nvar clip$1 = function clip(target, frame) {\n if (frame && frame.shouldClipSubject) {\n return executeClip$1(frame.pageMarginBox, target);\n }\n return getRect(target);\n};\nvar getSubject$1 = function(_ref) {\n var page = _ref.page, withPlaceholder = _ref.withPlaceholder, axis = _ref.axis, frame = _ref.frame;\n var scrolled = scroll$2(page.marginBox, frame);\n var increased = increase$1(scrolled, axis, withPlaceholder);\n var clipped = clip$1(increased, frame);\n return {\n page,\n withPlaceholder,\n active: clipped\n };\n};\nvar scrollDroppable$1 = function(droppable2, newScroll) {\n !droppable2.frame ? process.env.NODE_ENV !== \"production\" ? invariant() : invariant() : void 0;\n var scrollable = droppable2.frame;\n var scrollDiff = subtract$3(newScroll, scrollable.scroll.initial);\n var scrollDisplacement = negate$1(scrollDiff);\n var frame = _extends$4({}, scrollable, {\n scroll: {\n initial: scrollable.scroll.initial,\n current: newScroll,\n diff: {\n value: scrollDiff,\n displacement: scrollDisplacement\n },\n max: scrollable.scroll.max\n }\n });\n var subject = getSubject$1({\n page: droppable2.subject.page,\n withPlaceholder: droppable2.subject.withPlaceholder,\n axis: droppable2.axis,\n frame\n });\n var result = _extends$4({}, droppable2, {\n frame,\n subject\n });\n return result;\n};\nfunction isInteger$2(value) {\n if (Number.isInteger) {\n return Number.isInteger(value);\n }\n return typeof value === \"number\" && isFinite(value) && Math.floor(value) === value;\n}\nfunction values$3(map3) {\n if (Object.values) {\n return Object.values(map3);\n }\n return Object.keys(map3).map(function(key) {\n return map3[key];\n });\n}\nfunction findIndex$2(list2, predicate) {\n if (list2.findIndex) {\n return list2.findIndex(predicate);\n }\n for (var i = 0; i < list2.length; i++) {\n if (predicate(list2[i])) {\n return i;\n }\n }\n return -1;\n}\nfunction find$2(list2, predicate) {\n if (list2.find) {\n return list2.find(predicate);\n }\n var index2 = findIndex$2(list2, predicate);\n if (index2 !== -1) {\n return list2[index2];\n }\n return void 0;\n}\nfunction toArray$1(list2) {\n return Array.prototype.slice.call(list2);\n}\nvar toDroppableMap$1 = memoizeOne(function(droppables) {\n return droppables.reduce(function(previous, current) {\n previous[current.descriptor.id] = current;\n return previous;\n }, {});\n});\nvar toDraggableMap$1 = memoizeOne(function(draggables) {\n return draggables.reduce(function(previous, current) {\n previous[current.descriptor.id] = current;\n return previous;\n }, {});\n});\nvar toDroppableList$1 = memoizeOne(function(droppables) {\n return values$3(droppables);\n});\nvar toDraggableList$1 = memoizeOne(function(draggables) {\n return values$3(draggables);\n});\nvar getDraggablesInsideDroppable$1 = memoizeOne(function(droppableId, draggables) {\n var result = toDraggableList$1(draggables).filter(function(draggable2) {\n return droppableId === draggable2.descriptor.droppableId;\n }).sort(function(a2, b2) {\n return a2.descriptor.index - b2.descriptor.index;\n });\n return result;\n});\nfunction tryGetDestination(impact) {\n if (impact.at && impact.at.type === \"REORDER\") {\n return impact.at.destination;\n }\n return null;\n}\nfunction tryGetCombine(impact) {\n if (impact.at && impact.at.type === \"COMBINE\") {\n return impact.at.combine;\n }\n return null;\n}\nvar removeDraggableFromList$1 = memoizeOne(function(remove, list2) {\n return list2.filter(function(item) {\n return item.descriptor.id !== remove.descriptor.id;\n });\n});\nvar moveToNextCombine$1 = function(_ref) {\n var isMovingForward = _ref.isMovingForward, draggable2 = _ref.draggable, destination = _ref.destination, insideDestination = _ref.insideDestination, previousImpact = _ref.previousImpact;\n if (!destination.isCombineEnabled) {\n return null;\n }\n var location = tryGetDestination(previousImpact);\n if (!location) {\n return null;\n }\n function getImpact(target) {\n var at = {\n type: \"COMBINE\",\n combine: {\n draggableId: target,\n droppableId: destination.descriptor.id\n }\n };\n return _extends$4({}, previousImpact, {\n at\n });\n }\n var all = previousImpact.displaced.all;\n var closestId = all.length ? all[0] : null;\n if (isMovingForward) {\n return closestId ? getImpact(closestId) : null;\n }\n var withoutDraggable = removeDraggableFromList$1(draggable2, insideDestination);\n if (!closestId) {\n if (!withoutDraggable.length) {\n return null;\n }\n var last = withoutDraggable[withoutDraggable.length - 1];\n return getImpact(last.descriptor.id);\n }\n var indexOfClosest = findIndex$2(withoutDraggable, function(d2) {\n return d2.descriptor.id === closestId;\n });\n !(indexOfClosest !== -1) ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Could not find displaced item in set\") : invariant() : void 0;\n var proposedIndex = indexOfClosest - 1;\n if (proposedIndex < 0) {\n return null;\n }\n var before = withoutDraggable[proposedIndex];\n return getImpact(before.descriptor.id);\n};\nvar isHomeOf$1 = function(draggable2, destination) {\n return draggable2.descriptor.droppableId === destination.descriptor.id;\n};\nvar noDisplacedBy$1 = {\n point: origin$1,\n value: 0\n};\nvar emptyGroups = {\n invisible: {},\n visible: {},\n all: []\n};\nvar noImpact$1 = {\n displaced: emptyGroups,\n displacedBy: noDisplacedBy$1,\n at: null\n};\nvar isWithin$1 = function(lowerBound, upperBound) {\n return function(value) {\n return lowerBound <= value && value <= upperBound;\n };\n};\nvar isPartiallyVisibleThroughFrame$1 = function(frame) {\n var isWithinVertical = isWithin$1(frame.top, frame.bottom);\n var isWithinHorizontal = isWithin$1(frame.left, frame.right);\n return function(subject) {\n var isContained = isWithinVertical(subject.top) && isWithinVertical(subject.bottom) && isWithinHorizontal(subject.left) && isWithinHorizontal(subject.right);\n if (isContained) {\n return true;\n }\n var isPartiallyVisibleVertically = isWithinVertical(subject.top) || isWithinVertical(subject.bottom);\n var isPartiallyVisibleHorizontally = isWithinHorizontal(subject.left) || isWithinHorizontal(subject.right);\n var isPartiallyContained = isPartiallyVisibleVertically && isPartiallyVisibleHorizontally;\n if (isPartiallyContained) {\n return true;\n }\n var isBiggerVertically = subject.top < frame.top && subject.bottom > frame.bottom;\n var isBiggerHorizontally = subject.left < frame.left && subject.right > frame.right;\n var isTargetBiggerThanFrame = isBiggerVertically && isBiggerHorizontally;\n if (isTargetBiggerThanFrame) {\n return true;\n }\n var isTargetBiggerOnOneAxis = isBiggerVertically && isPartiallyVisibleHorizontally || isBiggerHorizontally && isPartiallyVisibleVertically;\n return isTargetBiggerOnOneAxis;\n };\n};\nvar isTotallyVisibleThroughFrame$1 = function(frame) {\n var isWithinVertical = isWithin$1(frame.top, frame.bottom);\n var isWithinHorizontal = isWithin$1(frame.left, frame.right);\n return function(subject) {\n var isContained = isWithinVertical(subject.top) && isWithinVertical(subject.bottom) && isWithinHorizontal(subject.left) && isWithinHorizontal(subject.right);\n return isContained;\n };\n};\nvar vertical$1 = {\n direction: \"vertical\",\n line: \"y\",\n crossAxisLine: \"x\",\n start: \"top\",\n end: \"bottom\",\n size: \"height\",\n crossAxisStart: \"left\",\n crossAxisEnd: \"right\",\n crossAxisSize: \"width\"\n};\nvar horizontal$1 = {\n direction: \"horizontal\",\n line: \"x\",\n crossAxisLine: \"y\",\n start: \"left\",\n end: \"right\",\n size: \"width\",\n crossAxisStart: \"top\",\n crossAxisEnd: \"bottom\",\n crossAxisSize: \"height\"\n};\nvar isTotallyVisibleThroughFrameOnAxis$1 = function(axis) {\n return function(frame) {\n var isWithinVertical = isWithin$1(frame.top, frame.bottom);\n var isWithinHorizontal = isWithin$1(frame.left, frame.right);\n return function(subject) {\n if (axis === vertical$1) {\n return isWithinVertical(subject.top) && isWithinVertical(subject.bottom);\n }\n return isWithinHorizontal(subject.left) && isWithinHorizontal(subject.right);\n };\n };\n};\nvar getDroppableDisplaced$1 = function getDroppableDisplaced(target, destination) {\n var displacement = destination.frame ? destination.frame.scroll.diff.displacement : origin$1;\n return offsetByPosition$1(target, displacement);\n};\nvar isVisibleInDroppable$1 = function isVisibleInDroppable(target, destination, isVisibleThroughFrameFn) {\n if (!destination.subject.active) {\n return false;\n }\n return isVisibleThroughFrameFn(destination.subject.active)(target);\n};\nvar isVisibleInViewport$1 = function isVisibleInViewport(target, viewport, isVisibleThroughFrameFn) {\n return isVisibleThroughFrameFn(viewport)(target);\n};\nvar isVisible$2 = function isVisible(_ref) {\n var toBeDisplaced = _ref.target, destination = _ref.destination, viewport = _ref.viewport, withDroppableDisplacement2 = _ref.withDroppableDisplacement, isVisibleThroughFrameFn = _ref.isVisibleThroughFrameFn;\n var displacedTarget = withDroppableDisplacement2 ? getDroppableDisplaced$1(toBeDisplaced, destination) : toBeDisplaced;\n return isVisibleInDroppable$1(displacedTarget, destination, isVisibleThroughFrameFn) && isVisibleInViewport$1(displacedTarget, viewport, isVisibleThroughFrameFn);\n};\nvar isPartiallyVisible$1 = function isPartiallyVisible(args) {\n return isVisible$2(_extends$4({}, args, {\n isVisibleThroughFrameFn: isPartiallyVisibleThroughFrame$1\n }));\n};\nvar isTotallyVisible$1 = function isTotallyVisible(args) {\n return isVisible$2(_extends$4({}, args, {\n isVisibleThroughFrameFn: isTotallyVisibleThroughFrame$1\n }));\n};\nvar isTotallyVisibleOnAxis$1 = function isTotallyVisibleOnAxis(args) {\n return isVisible$2(_extends$4({}, args, {\n isVisibleThroughFrameFn: isTotallyVisibleThroughFrameOnAxis$1(args.destination.axis)\n }));\n};\nvar getShouldAnimate$1 = function getShouldAnimate(id, last, forceShouldAnimate) {\n if (typeof forceShouldAnimate === \"boolean\") {\n return forceShouldAnimate;\n }\n if (!last) {\n return true;\n }\n var invisible = last.invisible, visible = last.visible;\n if (invisible[id]) {\n return false;\n }\n var previous = visible[id];\n return previous ? previous.shouldAnimate : true;\n};\nfunction getTarget$1(draggable2, displacedBy) {\n var marginBox = draggable2.page.marginBox;\n var expandBy = {\n top: displacedBy.point.y,\n right: 0,\n bottom: 0,\n left: displacedBy.point.x\n };\n return getRect(expand(marginBox, expandBy));\n}\nfunction getDisplacementGroups(_ref) {\n var afterDragging = _ref.afterDragging, destination = _ref.destination, displacedBy = _ref.displacedBy, viewport = _ref.viewport, forceShouldAnimate = _ref.forceShouldAnimate, last = _ref.last;\n return afterDragging.reduce(function process2(groups, draggable2) {\n var target = getTarget$1(draggable2, displacedBy);\n var id = draggable2.descriptor.id;\n groups.all.push(id);\n var isVisible4 = isPartiallyVisible$1({\n target,\n destination,\n viewport,\n withDroppableDisplacement: true\n });\n if (!isVisible4) {\n groups.invisible[draggable2.descriptor.id] = true;\n return groups;\n }\n var shouldAnimate = getShouldAnimate$1(id, last, forceShouldAnimate);\n var displacement = {\n draggableId: id,\n shouldAnimate\n };\n groups.visible[id] = displacement;\n return groups;\n }, {\n all: [],\n visible: {},\n invisible: {}\n });\n}\nfunction getIndexOfLastItem(draggables, options) {\n if (!draggables.length) {\n return 0;\n }\n var indexOfLastItem = draggables[draggables.length - 1].descriptor.index;\n return options.inHomeList ? indexOfLastItem : indexOfLastItem + 1;\n}\nfunction goAtEnd(_ref) {\n var insideDestination = _ref.insideDestination, inHomeList = _ref.inHomeList, displacedBy = _ref.displacedBy, destination = _ref.destination;\n var newIndex = getIndexOfLastItem(insideDestination, {\n inHomeList\n });\n return {\n displaced: emptyGroups,\n displacedBy,\n at: {\n type: \"REORDER\",\n destination: {\n droppableId: destination.descriptor.id,\n index: newIndex\n }\n }\n };\n}\nfunction calculateReorderImpact(_ref2) {\n var draggable2 = _ref2.draggable, insideDestination = _ref2.insideDestination, destination = _ref2.destination, viewport = _ref2.viewport, displacedBy = _ref2.displacedBy, last = _ref2.last, index2 = _ref2.index, forceShouldAnimate = _ref2.forceShouldAnimate;\n var inHomeList = isHomeOf$1(draggable2, destination);\n if (index2 == null) {\n return goAtEnd({\n insideDestination,\n inHomeList,\n displacedBy,\n destination\n });\n }\n var match5 = find$2(insideDestination, function(item) {\n return item.descriptor.index === index2;\n });\n if (!match5) {\n return goAtEnd({\n insideDestination,\n inHomeList,\n displacedBy,\n destination\n });\n }\n var withoutDragging = removeDraggableFromList$1(draggable2, insideDestination);\n var sliceFrom = insideDestination.indexOf(match5);\n var impacted = withoutDragging.slice(sliceFrom);\n var displaced = getDisplacementGroups({\n afterDragging: impacted,\n destination,\n displacedBy,\n last,\n viewport: viewport.frame,\n forceShouldAnimate\n });\n return {\n displaced,\n displacedBy,\n at: {\n type: \"REORDER\",\n destination: {\n droppableId: destination.descriptor.id,\n index: index2\n }\n }\n };\n}\nfunction didStartAfterCritical(draggableId, afterCritical) {\n return Boolean(afterCritical.effected[draggableId]);\n}\nvar fromCombine$1 = function(_ref) {\n var isMovingForward = _ref.isMovingForward, destination = _ref.destination, draggables = _ref.draggables, combine2 = _ref.combine, afterCritical = _ref.afterCritical;\n if (!destination.isCombineEnabled) {\n return null;\n }\n var combineId = combine2.draggableId;\n var combineWith = draggables[combineId];\n var combineWithIndex = combineWith.descriptor.index;\n var didCombineWithStartAfterCritical = didStartAfterCritical(combineId, afterCritical);\n if (didCombineWithStartAfterCritical) {\n if (isMovingForward) {\n return combineWithIndex;\n }\n return combineWithIndex - 1;\n }\n if (isMovingForward) {\n return combineWithIndex + 1;\n }\n return combineWithIndex;\n};\nvar fromReorder$1 = function(_ref) {\n var isMovingForward = _ref.isMovingForward, isInHomeList = _ref.isInHomeList, insideDestination = _ref.insideDestination, location = _ref.location;\n if (!insideDestination.length) {\n return null;\n }\n var currentIndex = location.index;\n var proposedIndex = isMovingForward ? currentIndex + 1 : currentIndex - 1;\n var firstIndex = insideDestination[0].descriptor.index;\n var lastIndex = insideDestination[insideDestination.length - 1].descriptor.index;\n var upperBound = isInHomeList ? lastIndex : lastIndex + 1;\n if (proposedIndex < firstIndex) {\n return null;\n }\n if (proposedIndex > upperBound) {\n return null;\n }\n return proposedIndex;\n};\nvar moveToNextIndex$1 = function(_ref) {\n var isMovingForward = _ref.isMovingForward, isInHomeList = _ref.isInHomeList, draggable2 = _ref.draggable, draggables = _ref.draggables, destination = _ref.destination, insideDestination = _ref.insideDestination, previousImpact = _ref.previousImpact, viewport = _ref.viewport, afterCritical = _ref.afterCritical;\n var wasAt = previousImpact.at;\n !wasAt ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Cannot move in direction without previous impact location\") : invariant() : void 0;\n if (wasAt.type === \"REORDER\") {\n var _newIndex = fromReorder$1({\n isMovingForward,\n isInHomeList,\n location: wasAt.destination,\n insideDestination\n });\n if (_newIndex == null) {\n return null;\n }\n return calculateReorderImpact({\n draggable: draggable2,\n insideDestination,\n destination,\n viewport,\n last: previousImpact.displaced,\n displacedBy: previousImpact.displacedBy,\n index: _newIndex\n });\n }\n var newIndex = fromCombine$1({\n isMovingForward,\n destination,\n displaced: previousImpact.displaced,\n draggables,\n combine: wasAt.combine,\n afterCritical\n });\n if (newIndex == null) {\n return null;\n }\n return calculateReorderImpact({\n draggable: draggable2,\n insideDestination,\n destination,\n viewport,\n last: previousImpact.displaced,\n displacedBy: previousImpact.displacedBy,\n index: newIndex\n });\n};\nvar getCombinedItemDisplacement$1 = function(_ref) {\n var displaced = _ref.displaced, afterCritical = _ref.afterCritical, combineWith = _ref.combineWith, displacedBy = _ref.displacedBy;\n var isDisplaced = Boolean(displaced.visible[combineWith] || displaced.invisible[combineWith]);\n if (didStartAfterCritical(combineWith, afterCritical)) {\n return isDisplaced ? origin$1 : negate$1(displacedBy.point);\n }\n return isDisplaced ? displacedBy.point : origin$1;\n};\nvar whenCombining$1 = function(_ref) {\n var afterCritical = _ref.afterCritical, impact = _ref.impact, draggables = _ref.draggables;\n var combine2 = tryGetCombine(impact);\n !combine2 ? process.env.NODE_ENV !== \"production\" ? invariant() : invariant() : void 0;\n var combineWith = combine2.draggableId;\n var center = draggables[combineWith].page.borderBox.center;\n var displaceBy = getCombinedItemDisplacement$1({\n displaced: impact.displaced,\n afterCritical,\n combineWith,\n displacedBy: impact.displacedBy\n });\n return add$3(center, displaceBy);\n};\nvar distanceFromStartToBorderBoxCenter$1 = function distanceFromStartToBorderBoxCenter(axis, box) {\n return box.margin[axis.start] + box.borderBox[axis.size] / 2;\n};\nvar distanceFromEndToBorderBoxCenter$1 = function distanceFromEndToBorderBoxCenter(axis, box) {\n return box.margin[axis.end] + box.borderBox[axis.size] / 2;\n};\nvar getCrossAxisBorderBoxCenter$1 = function getCrossAxisBorderBoxCenter(axis, target, isMoving) {\n return target[axis.crossAxisStart] + isMoving.margin[axis.crossAxisStart] + isMoving.borderBox[axis.crossAxisSize] / 2;\n};\nvar goAfter$1 = function goAfter(_ref) {\n var axis = _ref.axis, moveRelativeTo = _ref.moveRelativeTo, isMoving = _ref.isMoving;\n return patch$1(axis.line, moveRelativeTo.marginBox[axis.end] + distanceFromStartToBorderBoxCenter$1(axis, isMoving), getCrossAxisBorderBoxCenter$1(axis, moveRelativeTo.marginBox, isMoving));\n};\nvar goBefore$1 = function goBefore(_ref2) {\n var axis = _ref2.axis, moveRelativeTo = _ref2.moveRelativeTo, isMoving = _ref2.isMoving;\n return patch$1(axis.line, moveRelativeTo.marginBox[axis.start] - distanceFromEndToBorderBoxCenter$1(axis, isMoving), getCrossAxisBorderBoxCenter$1(axis, moveRelativeTo.marginBox, isMoving));\n};\nvar goIntoStart$1 = function goIntoStart(_ref3) {\n var axis = _ref3.axis, moveInto = _ref3.moveInto, isMoving = _ref3.isMoving;\n return patch$1(axis.line, moveInto.contentBox[axis.start] + distanceFromStartToBorderBoxCenter$1(axis, isMoving), getCrossAxisBorderBoxCenter$1(axis, moveInto.contentBox, isMoving));\n};\nvar whenReordering$1 = function(_ref) {\n var impact = _ref.impact, draggable2 = _ref.draggable, draggables = _ref.draggables, droppable2 = _ref.droppable, afterCritical = _ref.afterCritical;\n var insideDestination = getDraggablesInsideDroppable$1(droppable2.descriptor.id, draggables);\n var draggablePage = draggable2.page;\n var axis = droppable2.axis;\n if (!insideDestination.length) {\n return goIntoStart$1({\n axis,\n moveInto: droppable2.page,\n isMoving: draggablePage\n });\n }\n var displaced = impact.displaced, displacedBy = impact.displacedBy;\n var closestAfter = displaced.all[0];\n if (closestAfter) {\n var closest4 = draggables[closestAfter];\n if (didStartAfterCritical(closestAfter, afterCritical)) {\n return goBefore$1({\n axis,\n moveRelativeTo: closest4.page,\n isMoving: draggablePage\n });\n }\n var withDisplacement = offset$4(closest4.page, displacedBy.point);\n return goBefore$1({\n axis,\n moveRelativeTo: withDisplacement,\n isMoving: draggablePage\n });\n }\n var last = insideDestination[insideDestination.length - 1];\n if (last.descriptor.id === draggable2.descriptor.id) {\n return draggablePage.borderBox.center;\n }\n if (didStartAfterCritical(last.descriptor.id, afterCritical)) {\n var page = offset$4(last.page, negate$1(afterCritical.displacedBy.point));\n return goAfter$1({\n axis,\n moveRelativeTo: page,\n isMoving: draggablePage\n });\n }\n return goAfter$1({\n axis,\n moveRelativeTo: last.page,\n isMoving: draggablePage\n });\n};\nvar withDroppableDisplacement$1 = function(droppable2, point) {\n var frame = droppable2.frame;\n if (!frame) {\n return point;\n }\n return add$3(point, frame.scroll.diff.displacement);\n};\nvar getResultWithoutDroppableDisplacement$1 = function getResultWithoutDroppableDisplacement(_ref) {\n var impact = _ref.impact, draggable2 = _ref.draggable, droppable2 = _ref.droppable, draggables = _ref.draggables, afterCritical = _ref.afterCritical;\n var original = draggable2.page.borderBox.center;\n var at = impact.at;\n if (!droppable2) {\n return original;\n }\n if (!at) {\n return original;\n }\n if (at.type === \"REORDER\") {\n return whenReordering$1({\n impact,\n draggable: draggable2,\n draggables,\n droppable: droppable2,\n afterCritical\n });\n }\n return whenCombining$1({\n impact,\n draggables,\n afterCritical\n });\n};\nvar getPageBorderBoxCenterFromImpact$1 = function(args) {\n var withoutDisplacement = getResultWithoutDroppableDisplacement$1(args);\n var droppable2 = args.droppable;\n var withDisplacement = droppable2 ? withDroppableDisplacement$1(droppable2, withoutDisplacement) : withoutDisplacement;\n return withDisplacement;\n};\nvar scrollViewport$1 = function(viewport, newScroll) {\n var diff2 = subtract$3(newScroll, viewport.scroll.initial);\n var displacement = negate$1(diff2);\n var frame = getRect({\n top: newScroll.y,\n bottom: newScroll.y + viewport.frame.height,\n left: newScroll.x,\n right: newScroll.x + viewport.frame.width\n });\n var updated = {\n frame,\n scroll: {\n initial: viewport.scroll.initial,\n max: viewport.scroll.max,\n current: newScroll,\n diff: {\n value: diff2,\n displacement\n }\n }\n };\n return updated;\n};\nfunction getDraggables(ids, draggables) {\n return ids.map(function(id) {\n return draggables[id];\n });\n}\nfunction tryGetVisible(id, groups) {\n for (var i = 0; i < groups.length; i++) {\n var displacement = groups[i].visible[id];\n if (displacement) {\n return displacement;\n }\n }\n return null;\n}\nvar speculativelyIncrease$1 = function(_ref) {\n var impact = _ref.impact, viewport = _ref.viewport, destination = _ref.destination, draggables = _ref.draggables, maxScrollChange = _ref.maxScrollChange;\n var scrolledViewport = scrollViewport$1(viewport, add$3(viewport.scroll.current, maxScrollChange));\n var scrolledDroppable = destination.frame ? scrollDroppable$1(destination, add$3(destination.frame.scroll.current, maxScrollChange)) : destination;\n var last = impact.displaced;\n var withViewportScroll = getDisplacementGroups({\n afterDragging: getDraggables(last.all, draggables),\n destination,\n displacedBy: impact.displacedBy,\n viewport: scrolledViewport.frame,\n last,\n forceShouldAnimate: false\n });\n var withDroppableScroll2 = getDisplacementGroups({\n afterDragging: getDraggables(last.all, draggables),\n destination: scrolledDroppable,\n displacedBy: impact.displacedBy,\n viewport: viewport.frame,\n last,\n forceShouldAnimate: false\n });\n var invisible = {};\n var visible = {};\n var groups = [last, withViewportScroll, withDroppableScroll2];\n last.all.forEach(function(id) {\n var displacement = tryGetVisible(id, groups);\n if (displacement) {\n visible[id] = displacement;\n return;\n }\n invisible[id] = true;\n });\n var newImpact = _extends$4({}, impact, {\n displaced: {\n all: last.all,\n invisible,\n visible\n }\n });\n return newImpact;\n};\nvar withViewportDisplacement$1 = function(viewport, point) {\n return add$3(viewport.scroll.diff.displacement, point);\n};\nvar getClientFromPageBorderBoxCenter$1 = function(_ref) {\n var pageBorderBoxCenter = _ref.pageBorderBoxCenter, draggable2 = _ref.draggable, viewport = _ref.viewport;\n var withoutPageScrollChange = withViewportDisplacement$1(viewport, pageBorderBoxCenter);\n var offset3 = subtract$3(withoutPageScrollChange, draggable2.page.borderBox.center);\n return add$3(draggable2.client.borderBox.center, offset3);\n};\nvar isTotallyVisibleInNewLocation$1 = function(_ref) {\n var draggable2 = _ref.draggable, destination = _ref.destination, newPageBorderBoxCenter = _ref.newPageBorderBoxCenter, viewport = _ref.viewport, withDroppableDisplacement2 = _ref.withDroppableDisplacement, _ref$onlyOnMainAxis = _ref.onlyOnMainAxis, onlyOnMainAxis = _ref$onlyOnMainAxis === void 0 ? false : _ref$onlyOnMainAxis;\n var changeNeeded = subtract$3(newPageBorderBoxCenter, draggable2.page.borderBox.center);\n var shifted = offsetByPosition$1(draggable2.page.borderBox, changeNeeded);\n var args = {\n target: shifted,\n destination,\n withDroppableDisplacement: withDroppableDisplacement2,\n viewport\n };\n return onlyOnMainAxis ? isTotallyVisibleOnAxis$1(args) : isTotallyVisible$1(args);\n};\nvar moveToNextPlace$1 = function(_ref) {\n var isMovingForward = _ref.isMovingForward, draggable2 = _ref.draggable, destination = _ref.destination, draggables = _ref.draggables, previousImpact = _ref.previousImpact, viewport = _ref.viewport, previousPageBorderBoxCenter = _ref.previousPageBorderBoxCenter, previousClientSelection = _ref.previousClientSelection, afterCritical = _ref.afterCritical;\n if (!destination.isEnabled) {\n return null;\n }\n var insideDestination = getDraggablesInsideDroppable$1(destination.descriptor.id, draggables);\n var isInHomeList = isHomeOf$1(draggable2, destination);\n var impact = moveToNextCombine$1({\n isMovingForward,\n draggable: draggable2,\n destination,\n insideDestination,\n previousImpact\n }) || moveToNextIndex$1({\n isMovingForward,\n isInHomeList,\n draggable: draggable2,\n draggables,\n destination,\n insideDestination,\n previousImpact,\n viewport,\n afterCritical\n });\n if (!impact) {\n return null;\n }\n var pageBorderBoxCenter = getPageBorderBoxCenterFromImpact$1({\n impact,\n draggable: draggable2,\n droppable: destination,\n draggables,\n afterCritical\n });\n var isVisibleInNewLocation = isTotallyVisibleInNewLocation$1({\n draggable: draggable2,\n destination,\n newPageBorderBoxCenter: pageBorderBoxCenter,\n viewport: viewport.frame,\n withDroppableDisplacement: false,\n onlyOnMainAxis: true\n });\n if (isVisibleInNewLocation) {\n var clientSelection = getClientFromPageBorderBoxCenter$1({\n pageBorderBoxCenter,\n draggable: draggable2,\n viewport\n });\n return {\n clientSelection,\n impact,\n scrollJumpRequest: null\n };\n }\n var distance4 = subtract$3(pageBorderBoxCenter, previousPageBorderBoxCenter);\n var cautious = speculativelyIncrease$1({\n impact,\n viewport,\n destination,\n draggables,\n maxScrollChange: distance4\n });\n return {\n clientSelection: previousClientSelection,\n impact: cautious,\n scrollJumpRequest: distance4\n };\n};\nvar getKnownActive$1 = function getKnownActive(droppable2) {\n var rect = droppable2.subject.active;\n !rect ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Cannot get clipped area from droppable\") : invariant() : void 0;\n return rect;\n};\nvar getBestCrossAxisDroppable$1 = function(_ref) {\n var isMovingForward = _ref.isMovingForward, pageBorderBoxCenter = _ref.pageBorderBoxCenter, source = _ref.source, droppables = _ref.droppables, viewport = _ref.viewport;\n var active = source.subject.active;\n if (!active) {\n return null;\n }\n var axis = source.axis;\n var isBetweenSourceClipped = isWithin$1(active[axis.start], active[axis.end]);\n var candidates = toDroppableList$1(droppables).filter(function(droppable2) {\n return droppable2 !== source;\n }).filter(function(droppable2) {\n return droppable2.isEnabled;\n }).filter(function(droppable2) {\n return Boolean(droppable2.subject.active);\n }).filter(function(droppable2) {\n return isPartiallyVisibleThroughFrame$1(viewport.frame)(getKnownActive$1(droppable2));\n }).filter(function(droppable2) {\n var activeOfTarget = getKnownActive$1(droppable2);\n if (isMovingForward) {\n return active[axis.crossAxisEnd] < activeOfTarget[axis.crossAxisEnd];\n }\n return activeOfTarget[axis.crossAxisStart] < active[axis.crossAxisStart];\n }).filter(function(droppable2) {\n var activeOfTarget = getKnownActive$1(droppable2);\n var isBetweenDestinationClipped = isWithin$1(activeOfTarget[axis.start], activeOfTarget[axis.end]);\n return isBetweenSourceClipped(activeOfTarget[axis.start]) || isBetweenSourceClipped(activeOfTarget[axis.end]) || isBetweenDestinationClipped(active[axis.start]) || isBetweenDestinationClipped(active[axis.end]);\n }).sort(function(a2, b2) {\n var first2 = getKnownActive$1(a2)[axis.crossAxisStart];\n var second = getKnownActive$1(b2)[axis.crossAxisStart];\n if (isMovingForward) {\n return first2 - second;\n }\n return second - first2;\n }).filter(function(droppable2, index2, array) {\n return getKnownActive$1(droppable2)[axis.crossAxisStart] === getKnownActive$1(array[0])[axis.crossAxisStart];\n });\n if (!candidates.length) {\n return null;\n }\n if (candidates.length === 1) {\n return candidates[0];\n }\n var contains = candidates.filter(function(droppable2) {\n var isWithinDroppable = isWithin$1(getKnownActive$1(droppable2)[axis.start], getKnownActive$1(droppable2)[axis.end]);\n return isWithinDroppable(pageBorderBoxCenter[axis.line]);\n });\n if (contains.length === 1) {\n return contains[0];\n }\n if (contains.length > 1) {\n return contains.sort(function(a2, b2) {\n return getKnownActive$1(a2)[axis.start] - getKnownActive$1(b2)[axis.start];\n })[0];\n }\n return candidates.sort(function(a2, b2) {\n var first2 = closest$1(pageBorderBoxCenter, getCorners$1(getKnownActive$1(a2)));\n var second = closest$1(pageBorderBoxCenter, getCorners$1(getKnownActive$1(b2)));\n if (first2 !== second) {\n return first2 - second;\n }\n return getKnownActive$1(a2)[axis.start] - getKnownActive$1(b2)[axis.start];\n })[0];\n};\nvar getCurrentPageBorderBoxCenter$1 = function getCurrentPageBorderBoxCenter(draggable2, afterCritical) {\n var original = draggable2.page.borderBox.center;\n return didStartAfterCritical(draggable2.descriptor.id, afterCritical) ? subtract$3(original, afterCritical.displacedBy.point) : original;\n};\nvar getCurrentPageBorderBox$1 = function getCurrentPageBorderBox(draggable2, afterCritical) {\n var original = draggable2.page.borderBox;\n return didStartAfterCritical(draggable2.descriptor.id, afterCritical) ? offsetByPosition$1(original, negate$1(afterCritical.displacedBy.point)) : original;\n};\nvar getClosestDraggable$1 = function(_ref) {\n var pageBorderBoxCenter = _ref.pageBorderBoxCenter, viewport = _ref.viewport, destination = _ref.destination, insideDestination = _ref.insideDestination, afterCritical = _ref.afterCritical;\n var sorted = insideDestination.filter(function(draggable2) {\n return isTotallyVisible$1({\n target: getCurrentPageBorderBox$1(draggable2, afterCritical),\n destination,\n viewport: viewport.frame,\n withDroppableDisplacement: true\n });\n }).sort(function(a2, b2) {\n var distanceToA = distance$1(pageBorderBoxCenter, withDroppableDisplacement$1(destination, getCurrentPageBorderBoxCenter$1(a2, afterCritical)));\n var distanceToB = distance$1(pageBorderBoxCenter, withDroppableDisplacement$1(destination, getCurrentPageBorderBoxCenter$1(b2, afterCritical)));\n if (distanceToA < distanceToB) {\n return -1;\n }\n if (distanceToB < distanceToA) {\n return 1;\n }\n return a2.descriptor.index - b2.descriptor.index;\n });\n return sorted[0] || null;\n};\nvar getDisplacedBy$1 = memoizeOne(function getDisplacedBy(axis, displaceBy) {\n var displacement = displaceBy[axis.line];\n return {\n value: displacement,\n point: patch$1(axis.line, displacement)\n };\n});\nvar getRequiredGrowthForPlaceholder$1 = function getRequiredGrowthForPlaceholder(droppable2, placeholderSize, draggables) {\n var axis = droppable2.axis;\n if (droppable2.descriptor.mode === \"virtual\") {\n return patch$1(axis.line, placeholderSize[axis.line]);\n }\n var availableSpace = droppable2.subject.page.contentBox[axis.size];\n var insideDroppable = getDraggablesInsideDroppable$1(droppable2.descriptor.id, draggables);\n var spaceUsed = insideDroppable.reduce(function(sum, dimension) {\n return sum + dimension.client.marginBox[axis.size];\n }, 0);\n var requiredSpace = spaceUsed + placeholderSize[axis.line];\n var needsToGrowBy = requiredSpace - availableSpace;\n if (needsToGrowBy <= 0) {\n return null;\n }\n return patch$1(axis.line, needsToGrowBy);\n};\nvar withMaxScroll$1 = function withMaxScroll(frame, max2) {\n return _extends$4({}, frame, {\n scroll: _extends$4({}, frame.scroll, {\n max: max2\n })\n });\n};\nvar addPlaceholder$1 = function addPlaceholder(droppable2, draggable2, draggables) {\n var frame = droppable2.frame;\n !!isHomeOf$1(draggable2, droppable2) ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Should not add placeholder space to home list\") : invariant() : void 0;\n !!droppable2.subject.withPlaceholder ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Cannot add placeholder size to a subject when it already has one\") : invariant() : void 0;\n var placeholderSize = getDisplacedBy$1(droppable2.axis, draggable2.displaceBy).point;\n var requiredGrowth = getRequiredGrowthForPlaceholder$1(droppable2, placeholderSize, draggables);\n var added = {\n placeholderSize,\n increasedBy: requiredGrowth,\n oldFrameMaxScroll: droppable2.frame ? droppable2.frame.scroll.max : null\n };\n if (!frame) {\n var _subject = getSubject$1({\n page: droppable2.subject.page,\n withPlaceholder: added,\n axis: droppable2.axis,\n frame: droppable2.frame\n });\n return _extends$4({}, droppable2, {\n subject: _subject\n });\n }\n var maxScroll = requiredGrowth ? add$3(frame.scroll.max, requiredGrowth) : frame.scroll.max;\n var newFrame = withMaxScroll$1(frame, maxScroll);\n var subject = getSubject$1({\n page: droppable2.subject.page,\n withPlaceholder: added,\n axis: droppable2.axis,\n frame: newFrame\n });\n return _extends$4({}, droppable2, {\n subject,\n frame: newFrame\n });\n};\nvar removePlaceholder$1 = function removePlaceholder(droppable2) {\n var added = droppable2.subject.withPlaceholder;\n !added ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Cannot remove placeholder form subject when there was none\") : invariant() : void 0;\n var frame = droppable2.frame;\n if (!frame) {\n var _subject2 = getSubject$1({\n page: droppable2.subject.page,\n axis: droppable2.axis,\n frame: null,\n withPlaceholder: null\n });\n return _extends$4({}, droppable2, {\n subject: _subject2\n });\n }\n var oldMaxScroll = added.oldFrameMaxScroll;\n !oldMaxScroll ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Expected droppable with frame to have old max frame scroll when removing placeholder\") : invariant() : void 0;\n var newFrame = withMaxScroll$1(frame, oldMaxScroll);\n var subject = getSubject$1({\n page: droppable2.subject.page,\n axis: droppable2.axis,\n frame: newFrame,\n withPlaceholder: null\n });\n return _extends$4({}, droppable2, {\n subject,\n frame: newFrame\n });\n};\nvar moveToNewDroppable$1 = function(_ref) {\n var previousPageBorderBoxCenter = _ref.previousPageBorderBoxCenter, moveRelativeTo = _ref.moveRelativeTo, insideDestination = _ref.insideDestination, draggable2 = _ref.draggable, draggables = _ref.draggables, destination = _ref.destination, viewport = _ref.viewport, afterCritical = _ref.afterCritical;\n if (!moveRelativeTo) {\n if (insideDestination.length) {\n return null;\n }\n var proposed = {\n displaced: emptyGroups,\n displacedBy: noDisplacedBy$1,\n at: {\n type: \"REORDER\",\n destination: {\n droppableId: destination.descriptor.id,\n index: 0\n }\n }\n };\n var proposedPageBorderBoxCenter = getPageBorderBoxCenterFromImpact$1({\n impact: proposed,\n draggable: draggable2,\n droppable: destination,\n draggables,\n afterCritical\n });\n var withPlaceholder = isHomeOf$1(draggable2, destination) ? destination : addPlaceholder$1(destination, draggable2, draggables);\n var isVisibleInNewLocation = isTotallyVisibleInNewLocation$1({\n draggable: draggable2,\n destination: withPlaceholder,\n newPageBorderBoxCenter: proposedPageBorderBoxCenter,\n viewport: viewport.frame,\n withDroppableDisplacement: false,\n onlyOnMainAxis: true\n });\n return isVisibleInNewLocation ? proposed : null;\n }\n var isGoingBeforeTarget = Boolean(previousPageBorderBoxCenter[destination.axis.line] <= moveRelativeTo.page.borderBox.center[destination.axis.line]);\n var proposedIndex = function() {\n var relativeTo = moveRelativeTo.descriptor.index;\n if (moveRelativeTo.descriptor.id === draggable2.descriptor.id) {\n return relativeTo;\n }\n if (isGoingBeforeTarget) {\n return relativeTo;\n }\n return relativeTo + 1;\n }();\n var displacedBy = getDisplacedBy$1(destination.axis, draggable2.displaceBy);\n return calculateReorderImpact({\n draggable: draggable2,\n insideDestination,\n destination,\n viewport,\n displacedBy,\n last: emptyGroups,\n index: proposedIndex\n });\n};\nvar moveCrossAxis$1 = function(_ref) {\n var isMovingForward = _ref.isMovingForward, previousPageBorderBoxCenter = _ref.previousPageBorderBoxCenter, draggable2 = _ref.draggable, isOver = _ref.isOver, draggables = _ref.draggables, droppables = _ref.droppables, viewport = _ref.viewport, afterCritical = _ref.afterCritical;\n var destination = getBestCrossAxisDroppable$1({\n isMovingForward,\n pageBorderBoxCenter: previousPageBorderBoxCenter,\n source: isOver,\n droppables,\n viewport\n });\n if (!destination) {\n return null;\n }\n var insideDestination = getDraggablesInsideDroppable$1(destination.descriptor.id, draggables);\n var moveRelativeTo = getClosestDraggable$1({\n pageBorderBoxCenter: previousPageBorderBoxCenter,\n viewport,\n destination,\n insideDestination,\n afterCritical\n });\n var impact = moveToNewDroppable$1({\n previousPageBorderBoxCenter,\n destination,\n draggable: draggable2,\n draggables,\n moveRelativeTo,\n insideDestination,\n viewport,\n afterCritical\n });\n if (!impact) {\n return null;\n }\n var pageBorderBoxCenter = getPageBorderBoxCenterFromImpact$1({\n impact,\n draggable: draggable2,\n droppable: destination,\n draggables,\n afterCritical\n });\n var clientSelection = getClientFromPageBorderBoxCenter$1({\n pageBorderBoxCenter,\n draggable: draggable2,\n viewport\n });\n return {\n clientSelection,\n impact,\n scrollJumpRequest: null\n };\n};\nvar whatIsDraggedOver$1 = function(impact) {\n var at = impact.at;\n if (!at) {\n return null;\n }\n if (at.type === \"REORDER\") {\n return at.destination.droppableId;\n }\n return at.combine.droppableId;\n};\nvar getDroppableOver$2 = function getDroppableOver(impact, droppables) {\n var id = whatIsDraggedOver$1(impact);\n return id ? droppables[id] : null;\n};\nvar moveInDirection$1 = function(_ref) {\n var state = _ref.state, type = _ref.type;\n var isActuallyOver = getDroppableOver$2(state.impact, state.dimensions.droppables);\n var isMainAxisMovementAllowed = Boolean(isActuallyOver);\n var home2 = state.dimensions.droppables[state.critical.droppable.id];\n var isOver = isActuallyOver || home2;\n var direction = isOver.axis.direction;\n var isMovingOnMainAxis = direction === \"vertical\" && (type === \"MOVE_UP\" || type === \"MOVE_DOWN\") || direction === \"horizontal\" && (type === \"MOVE_LEFT\" || type === \"MOVE_RIGHT\");\n if (isMovingOnMainAxis && !isMainAxisMovementAllowed) {\n return null;\n }\n var isMovingForward = type === \"MOVE_DOWN\" || type === \"MOVE_RIGHT\";\n var draggable2 = state.dimensions.draggables[state.critical.draggable.id];\n var previousPageBorderBoxCenter = state.current.page.borderBoxCenter;\n var _state$dimensions = state.dimensions, draggables = _state$dimensions.draggables, droppables = _state$dimensions.droppables;\n return isMovingOnMainAxis ? moveToNextPlace$1({\n isMovingForward,\n previousPageBorderBoxCenter,\n draggable: draggable2,\n destination: isOver,\n draggables,\n viewport: state.viewport,\n previousClientSelection: state.current.client.selection,\n previousImpact: state.impact,\n afterCritical: state.afterCritical\n }) : moveCrossAxis$1({\n isMovingForward,\n previousPageBorderBoxCenter,\n draggable: draggable2,\n isOver,\n draggables,\n droppables,\n viewport: state.viewport,\n afterCritical: state.afterCritical\n });\n};\nfunction isMovementAllowed$1(state) {\n return state.phase === \"DRAGGING\" || state.phase === \"COLLECTING\";\n}\nfunction isPositionInFrame$1(frame) {\n var isWithinVertical = isWithin$1(frame.top, frame.bottom);\n var isWithinHorizontal = isWithin$1(frame.left, frame.right);\n return function run2(point) {\n return isWithinVertical(point.y) && isWithinHorizontal(point.x);\n };\n}\nfunction getHasOverlap(first2, second) {\n return first2.left < second.right && first2.right > second.left && first2.top < second.bottom && first2.bottom > second.top;\n}\nfunction getFurthestAway(_ref) {\n var pageBorderBox = _ref.pageBorderBox, draggable2 = _ref.draggable, candidates = _ref.candidates;\n var startCenter = draggable2.page.borderBox.center;\n var sorted = candidates.map(function(candidate) {\n var axis = candidate.axis;\n var target = patch$1(candidate.axis.line, pageBorderBox.center[axis.line], candidate.page.borderBox.center[axis.crossAxisLine]);\n return {\n id: candidate.descriptor.id,\n distance: distance$1(startCenter, target)\n };\n }).sort(function(a2, b2) {\n return b2.distance - a2.distance;\n });\n return sorted[0] ? sorted[0].id : null;\n}\nfunction getDroppableOver$1$1(_ref2) {\n var pageBorderBox = _ref2.pageBorderBox, draggable2 = _ref2.draggable, droppables = _ref2.droppables;\n var candidates = toDroppableList$1(droppables).filter(function(item) {\n if (!item.isEnabled) {\n return false;\n }\n var active = item.subject.active;\n if (!active) {\n return false;\n }\n if (!getHasOverlap(pageBorderBox, active)) {\n return false;\n }\n if (isPositionInFrame$1(active)(pageBorderBox.center)) {\n return true;\n }\n var axis = item.axis;\n var childCenter = active.center[axis.crossAxisLine];\n var crossAxisStart = pageBorderBox[axis.crossAxisStart];\n var crossAxisEnd = pageBorderBox[axis.crossAxisEnd];\n var isContained = isWithin$1(active[axis.crossAxisStart], active[axis.crossAxisEnd]);\n var isStartContained = isContained(crossAxisStart);\n var isEndContained = isContained(crossAxisEnd);\n if (!isStartContained && !isEndContained) {\n return true;\n }\n if (isStartContained) {\n return crossAxisStart < childCenter;\n }\n return crossAxisEnd > childCenter;\n });\n if (!candidates.length) {\n return null;\n }\n if (candidates.length === 1) {\n return candidates[0].descriptor.id;\n }\n return getFurthestAway({\n pageBorderBox,\n draggable: draggable2,\n candidates\n });\n}\nvar offsetRectByPosition = function offsetRectByPosition2(rect, point) {\n return getRect(offsetByPosition$1(rect, point));\n};\nvar withDroppableScroll$1 = function(droppable2, area) {\n var frame = droppable2.frame;\n if (!frame) {\n return area;\n }\n return offsetRectByPosition(area, frame.scroll.diff.value);\n};\nfunction getIsDisplaced(_ref) {\n var displaced = _ref.displaced, id = _ref.id;\n return Boolean(displaced.visible[id] || displaced.invisible[id]);\n}\nfunction atIndex(_ref) {\n var draggable2 = _ref.draggable, closest4 = _ref.closest, inHomeList = _ref.inHomeList;\n if (!closest4) {\n return null;\n }\n if (!inHomeList) {\n return closest4.descriptor.index;\n }\n if (closest4.descriptor.index > draggable2.descriptor.index) {\n return closest4.descriptor.index - 1;\n }\n return closest4.descriptor.index;\n}\nvar getReorderImpact$1 = function(_ref2) {\n var targetRect = _ref2.pageBorderBoxWithDroppableScroll, draggable2 = _ref2.draggable, destination = _ref2.destination, insideDestination = _ref2.insideDestination, last = _ref2.last, viewport = _ref2.viewport, afterCritical = _ref2.afterCritical;\n var axis = destination.axis;\n var displacedBy = getDisplacedBy$1(destination.axis, draggable2.displaceBy);\n var displacement = displacedBy.value;\n var targetStart = targetRect[axis.start];\n var targetEnd = targetRect[axis.end];\n var withoutDragging = removeDraggableFromList$1(draggable2, insideDestination);\n var closest4 = find$2(withoutDragging, function(child) {\n var id = child.descriptor.id;\n var childCenter = child.page.borderBox.center[axis.line];\n var didStartAfterCritical$1 = didStartAfterCritical(id, afterCritical);\n var isDisplaced = getIsDisplaced({\n displaced: last,\n id\n });\n if (didStartAfterCritical$1) {\n if (isDisplaced) {\n return targetEnd <= childCenter;\n }\n return targetStart < childCenter - displacement;\n }\n if (isDisplaced) {\n return targetEnd <= childCenter + displacement;\n }\n return targetStart < childCenter;\n });\n var newIndex = atIndex({\n draggable: draggable2,\n closest: closest4,\n inHomeList: isHomeOf$1(draggable2, destination)\n });\n return calculateReorderImpact({\n draggable: draggable2,\n insideDestination,\n destination,\n viewport,\n last,\n displacedBy,\n index: newIndex\n });\n};\nvar combineThresholdDivisor = 4;\nvar getCombineImpact$1 = function(_ref) {\n var draggable2 = _ref.draggable, targetRect = _ref.pageBorderBoxWithDroppableScroll, previousImpact = _ref.previousImpact, destination = _ref.destination, insideDestination = _ref.insideDestination, afterCritical = _ref.afterCritical;\n if (!destination.isCombineEnabled) {\n return null;\n }\n var axis = destination.axis;\n var displacedBy = getDisplacedBy$1(destination.axis, draggable2.displaceBy);\n var displacement = displacedBy.value;\n var targetStart = targetRect[axis.start];\n var targetEnd = targetRect[axis.end];\n var withoutDragging = removeDraggableFromList$1(draggable2, insideDestination);\n var combineWith = find$2(withoutDragging, function(child) {\n var id = child.descriptor.id;\n var childRect = child.page.borderBox;\n var childSize = childRect[axis.size];\n var threshold = childSize / combineThresholdDivisor;\n var didStartAfterCritical$1 = didStartAfterCritical(id, afterCritical);\n var isDisplaced = getIsDisplaced({\n displaced: previousImpact.displaced,\n id\n });\n if (didStartAfterCritical$1) {\n if (isDisplaced) {\n return targetEnd > childRect[axis.start] + threshold && targetEnd < childRect[axis.end] - threshold;\n }\n return targetStart > childRect[axis.start] - displacement + threshold && targetStart < childRect[axis.end] - displacement - threshold;\n }\n if (isDisplaced) {\n return targetEnd > childRect[axis.start] + displacement + threshold && targetEnd < childRect[axis.end] + displacement - threshold;\n }\n return targetStart > childRect[axis.start] + threshold && targetStart < childRect[axis.end] - threshold;\n });\n if (!combineWith) {\n return null;\n }\n var impact = {\n displacedBy,\n displaced: previousImpact.displaced,\n at: {\n type: \"COMBINE\",\n combine: {\n draggableId: combineWith.descriptor.id,\n droppableId: destination.descriptor.id\n }\n }\n };\n return impact;\n};\nvar getDragImpact$1 = function(_ref) {\n var pageOffset = _ref.pageOffset, draggable2 = _ref.draggable, draggables = _ref.draggables, droppables = _ref.droppables, previousImpact = _ref.previousImpact, viewport = _ref.viewport, afterCritical = _ref.afterCritical;\n var pageBorderBox = offsetRectByPosition(draggable2.page.borderBox, pageOffset);\n var destinationId = getDroppableOver$1$1({\n pageBorderBox,\n draggable: draggable2,\n droppables\n });\n if (!destinationId) {\n return noImpact$1;\n }\n var destination = droppables[destinationId];\n var insideDestination = getDraggablesInsideDroppable$1(destination.descriptor.id, draggables);\n var pageBorderBoxWithDroppableScroll = withDroppableScroll$1(destination, pageBorderBox);\n return getCombineImpact$1({\n pageBorderBoxWithDroppableScroll,\n draggable: draggable2,\n previousImpact,\n destination,\n insideDestination,\n afterCritical\n }) || getReorderImpact$1({\n pageBorderBoxWithDroppableScroll,\n draggable: draggable2,\n destination,\n insideDestination,\n last: previousImpact.displaced,\n viewport,\n afterCritical\n });\n};\nvar patchDroppableMap$1 = function(droppables, updated) {\n var _extends2;\n return _extends$4({}, droppables, (_extends2 = {}, _extends2[updated.descriptor.id] = updated, _extends2));\n};\nvar clearUnusedPlaceholder$1 = function clearUnusedPlaceholder(_ref) {\n var previousImpact = _ref.previousImpact, impact = _ref.impact, droppables = _ref.droppables;\n var last = whatIsDraggedOver$1(previousImpact);\n var now2 = whatIsDraggedOver$1(impact);\n if (!last) {\n return droppables;\n }\n if (last === now2) {\n return droppables;\n }\n var lastDroppable = droppables[last];\n if (!lastDroppable.subject.withPlaceholder) {\n return droppables;\n }\n var updated = removePlaceholder$1(lastDroppable);\n return patchDroppableMap$1(droppables, updated);\n};\nvar recomputePlaceholders$1 = function(_ref2) {\n var draggable2 = _ref2.draggable, draggables = _ref2.draggables, droppables = _ref2.droppables, previousImpact = _ref2.previousImpact, impact = _ref2.impact;\n var cleaned = clearUnusedPlaceholder$1({\n previousImpact,\n impact,\n droppables\n });\n var isOver = whatIsDraggedOver$1(impact);\n if (!isOver) {\n return cleaned;\n }\n var droppable2 = droppables[isOver];\n if (isHomeOf$1(draggable2, droppable2)) {\n return cleaned;\n }\n if (droppable2.subject.withPlaceholder) {\n return cleaned;\n }\n var patched = addPlaceholder$1(droppable2, draggable2, draggables);\n return patchDroppableMap$1(cleaned, patched);\n};\nvar update$1 = function(_ref) {\n var state = _ref.state, forcedClientSelection = _ref.clientSelection, forcedDimensions = _ref.dimensions, forcedViewport = _ref.viewport, forcedImpact = _ref.impact, scrollJumpRequest = _ref.scrollJumpRequest;\n var viewport = forcedViewport || state.viewport;\n var dimensions = forcedDimensions || state.dimensions;\n var clientSelection = forcedClientSelection || state.current.client.selection;\n var offset3 = subtract$3(clientSelection, state.initial.client.selection);\n var client = {\n offset: offset3,\n selection: clientSelection,\n borderBoxCenter: add$3(state.initial.client.borderBoxCenter, offset3)\n };\n var page = {\n selection: add$3(client.selection, viewport.scroll.current),\n borderBoxCenter: add$3(client.borderBoxCenter, viewport.scroll.current),\n offset: add$3(client.offset, viewport.scroll.diff.value)\n };\n var current = {\n client,\n page\n };\n if (state.phase === \"COLLECTING\") {\n return _extends$4({\n phase: \"COLLECTING\"\n }, state, {\n dimensions,\n viewport,\n current\n });\n }\n var draggable2 = dimensions.draggables[state.critical.draggable.id];\n var newImpact = forcedImpact || getDragImpact$1({\n pageOffset: page.offset,\n draggable: draggable2,\n draggables: dimensions.draggables,\n droppables: dimensions.droppables,\n previousImpact: state.impact,\n viewport,\n afterCritical: state.afterCritical\n });\n var withUpdatedPlaceholders = recomputePlaceholders$1({\n draggable: draggable2,\n impact: newImpact,\n previousImpact: state.impact,\n draggables: dimensions.draggables,\n droppables: dimensions.droppables\n });\n var result = _extends$4({}, state, {\n current,\n dimensions: {\n draggables: dimensions.draggables,\n droppables: withUpdatedPlaceholders\n },\n impact: newImpact,\n viewport,\n scrollJumpRequest: scrollJumpRequest || null,\n forceShouldAnimate: scrollJumpRequest ? false : null\n });\n return result;\n};\nfunction getDraggables$1(ids, draggables) {\n return ids.map(function(id) {\n return draggables[id];\n });\n}\nvar recompute$1 = function(_ref) {\n var impact = _ref.impact, viewport = _ref.viewport, draggables = _ref.draggables, destination = _ref.destination, forceShouldAnimate = _ref.forceShouldAnimate;\n var last = impact.displaced;\n var afterDragging = getDraggables$1(last.all, draggables);\n var displaced = getDisplacementGroups({\n afterDragging,\n destination,\n displacedBy: impact.displacedBy,\n viewport: viewport.frame,\n forceShouldAnimate,\n last\n });\n return _extends$4({}, impact, {\n displaced\n });\n};\nvar getClientBorderBoxCenter$1 = function(_ref) {\n var impact = _ref.impact, draggable2 = _ref.draggable, droppable2 = _ref.droppable, draggables = _ref.draggables, viewport = _ref.viewport, afterCritical = _ref.afterCritical;\n var pageBorderBoxCenter = getPageBorderBoxCenterFromImpact$1({\n impact,\n draggable: draggable2,\n draggables,\n droppable: droppable2,\n afterCritical\n });\n return getClientFromPageBorderBoxCenter$1({\n pageBorderBoxCenter,\n draggable: draggable2,\n viewport\n });\n};\nvar refreshSnap$1 = function(_ref) {\n var state = _ref.state, forcedDimensions = _ref.dimensions, forcedViewport = _ref.viewport;\n !(state.movementMode === \"SNAP\") ? process.env.NODE_ENV !== \"production\" ? invariant() : invariant() : void 0;\n var needsVisibilityCheck = state.impact;\n var viewport = forcedViewport || state.viewport;\n var dimensions = forcedDimensions || state.dimensions;\n var draggables = dimensions.draggables, droppables = dimensions.droppables;\n var draggable2 = draggables[state.critical.draggable.id];\n var isOver = whatIsDraggedOver$1(needsVisibilityCheck);\n !isOver ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Must be over a destination in SNAP movement mode\") : invariant() : void 0;\n var destination = droppables[isOver];\n var impact = recompute$1({\n impact: needsVisibilityCheck,\n viewport,\n destination,\n draggables\n });\n var clientSelection = getClientBorderBoxCenter$1({\n impact,\n draggable: draggable2,\n droppable: destination,\n draggables,\n viewport,\n afterCritical: state.afterCritical\n });\n return update$1({\n impact,\n clientSelection,\n state,\n dimensions,\n viewport\n });\n};\nvar getHomeLocation$1 = function(descriptor) {\n return {\n index: descriptor.index,\n droppableId: descriptor.droppableId\n };\n};\nvar getLiftEffect = function(_ref) {\n var draggable2 = _ref.draggable, home2 = _ref.home, draggables = _ref.draggables, viewport = _ref.viewport;\n var displacedBy = getDisplacedBy$1(home2.axis, draggable2.displaceBy);\n var insideHome = getDraggablesInsideDroppable$1(home2.descriptor.id, draggables);\n var rawIndex = insideHome.indexOf(draggable2);\n !(rawIndex !== -1) ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Expected draggable to be inside home list\") : invariant() : void 0;\n var afterDragging = insideHome.slice(rawIndex + 1);\n var effected = afterDragging.reduce(function(previous, item) {\n previous[item.descriptor.id] = true;\n return previous;\n }, {});\n var afterCritical = {\n inVirtualList: home2.descriptor.mode === \"virtual\",\n displacedBy,\n effected\n };\n var displaced = getDisplacementGroups({\n afterDragging,\n destination: home2,\n displacedBy,\n last: null,\n viewport: viewport.frame,\n forceShouldAnimate: false\n });\n var impact = {\n displaced,\n displacedBy,\n at: {\n type: \"REORDER\",\n destination: getHomeLocation$1(draggable2.descriptor)\n }\n };\n return {\n impact,\n afterCritical\n };\n};\nvar patchDimensionMap$1 = function(dimensions, updated) {\n return {\n draggables: dimensions.draggables,\n droppables: patchDroppableMap$1(dimensions.droppables, updated)\n };\n};\nvar start$1 = function start(key) {\n if (process.env.NODE_ENV !== \"production\") {\n {\n return;\n }\n }\n};\nvar finish$1 = function finish(key) {\n if (process.env.NODE_ENV !== \"production\") {\n {\n return;\n }\n }\n};\nvar offsetDraggable$1 = function(_ref) {\n var draggable2 = _ref.draggable, offset$12 = _ref.offset, initialWindowScroll = _ref.initialWindowScroll;\n var client = offset$4(draggable2.client, offset$12);\n var page = withScroll(client, initialWindowScroll);\n var moved = _extends$4({}, draggable2, {\n placeholder: _extends$4({}, draggable2.placeholder, {\n client\n }),\n client,\n page\n });\n return moved;\n};\nvar getFrame$1 = function(droppable2) {\n var frame = droppable2.frame;\n !frame ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Expected Droppable to have a frame\") : invariant() : void 0;\n return frame;\n};\nvar adjustAdditionsForScrollChanges$1 = function(_ref) {\n var additions = _ref.additions, updatedDroppables = _ref.updatedDroppables, viewport = _ref.viewport;\n var windowScrollChange = viewport.scroll.diff.value;\n return additions.map(function(draggable2) {\n var droppableId = draggable2.descriptor.droppableId;\n var modified = updatedDroppables[droppableId];\n var frame = getFrame$1(modified);\n var droppableScrollChange = frame.scroll.diff.value;\n var totalChange = add$3(windowScrollChange, droppableScrollChange);\n var moved = offsetDraggable$1({\n draggable: draggable2,\n offset: totalChange,\n initialWindowScroll: viewport.scroll.initial\n });\n return moved;\n });\n};\nvar publishWhileDraggingInVirtual = function(_ref) {\n var state = _ref.state, published = _ref.published;\n start$1();\n var withScrollChange = published.modified.map(function(update2) {\n var existing = state.dimensions.droppables[update2.droppableId];\n var scrolled = scrollDroppable$1(existing, update2.scroll);\n return scrolled;\n });\n var droppables = _extends$4({}, state.dimensions.droppables, {}, toDroppableMap$1(withScrollChange));\n var updatedAdditions = toDraggableMap$1(adjustAdditionsForScrollChanges$1({\n additions: published.additions,\n updatedDroppables: droppables,\n viewport: state.viewport\n }));\n var draggables = _extends$4({}, state.dimensions.draggables, {}, updatedAdditions);\n published.removals.forEach(function(id) {\n delete draggables[id];\n });\n var dimensions = {\n droppables,\n draggables\n };\n var wasOverId = whatIsDraggedOver$1(state.impact);\n var wasOver = wasOverId ? dimensions.droppables[wasOverId] : null;\n var draggable2 = dimensions.draggables[state.critical.draggable.id];\n var home2 = dimensions.droppables[state.critical.droppable.id];\n var _getLiftEffect = getLiftEffect({\n draggable: draggable2,\n home: home2,\n draggables,\n viewport: state.viewport\n }), onLiftImpact = _getLiftEffect.impact, afterCritical = _getLiftEffect.afterCritical;\n var previousImpact = wasOver && wasOver.isCombineEnabled ? state.impact : onLiftImpact;\n var impact = getDragImpact$1({\n pageOffset: state.current.page.offset,\n draggable: dimensions.draggables[state.critical.draggable.id],\n draggables: dimensions.draggables,\n droppables: dimensions.droppables,\n previousImpact,\n viewport: state.viewport,\n afterCritical\n });\n finish$1();\n var draggingState = _extends$4({\n phase: \"DRAGGING\"\n }, state, {\n phase: \"DRAGGING\",\n impact,\n onLiftImpact,\n dimensions,\n afterCritical,\n forceShouldAnimate: false\n });\n if (state.phase === \"COLLECTING\") {\n return draggingState;\n }\n var dropPending4 = _extends$4({\n phase: \"DROP_PENDING\"\n }, draggingState, {\n phase: \"DROP_PENDING\",\n reason: state.reason,\n isWaiting: false\n });\n return dropPending4;\n};\nvar isSnapping$1 = function isSnapping(state) {\n return state.movementMode === \"SNAP\";\n};\nvar postDroppableChange$1 = function postDroppableChange(state, updated, isEnabledChanging) {\n var dimensions = patchDimensionMap$1(state.dimensions, updated);\n if (!isSnapping$1(state) || isEnabledChanging) {\n return update$1({\n state,\n dimensions\n });\n }\n return refreshSnap$1({\n state,\n dimensions\n });\n};\nfunction removeScrollJumpRequest(state) {\n if (state.isDragging && state.movementMode === \"SNAP\") {\n return _extends$4({\n phase: \"DRAGGING\"\n }, state, {\n scrollJumpRequest: null\n });\n }\n return state;\n}\nvar idle$1 = {\n phase: \"IDLE\",\n completed: null,\n shouldFlush: false\n};\nvar reducer$3 = function(state, action) {\n if (state === void 0) {\n state = idle$1;\n }\n if (action.type === \"FLUSH\") {\n return _extends$4({}, idle$1, {\n shouldFlush: true\n });\n }\n if (action.type === \"INITIAL_PUBLISH\") {\n !(state.phase === \"IDLE\") ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"INITIAL_PUBLISH must come after a IDLE phase\") : invariant() : void 0;\n var _action$payload = action.payload, critical = _action$payload.critical, clientSelection = _action$payload.clientSelection, viewport = _action$payload.viewport, dimensions = _action$payload.dimensions, movementMode = _action$payload.movementMode;\n var draggable2 = dimensions.draggables[critical.draggable.id];\n var home2 = dimensions.droppables[critical.droppable.id];\n var client = {\n selection: clientSelection,\n borderBoxCenter: draggable2.client.borderBox.center,\n offset: origin$1\n };\n var initial = {\n client,\n page: {\n selection: add$3(client.selection, viewport.scroll.initial),\n borderBoxCenter: add$3(client.selection, viewport.scroll.initial),\n offset: add$3(client.selection, viewport.scroll.diff.value)\n }\n };\n var isWindowScrollAllowed = toDroppableList$1(dimensions.droppables).every(function(item) {\n return !item.isFixedOnPage;\n });\n var _getLiftEffect = getLiftEffect({\n draggable: draggable2,\n home: home2,\n draggables: dimensions.draggables,\n viewport\n }), impact = _getLiftEffect.impact, afterCritical = _getLiftEffect.afterCritical;\n var result = {\n phase: \"DRAGGING\",\n isDragging: true,\n critical,\n movementMode,\n dimensions,\n initial,\n current: initial,\n isWindowScrollAllowed,\n impact,\n afterCritical,\n onLiftImpact: impact,\n viewport,\n scrollJumpRequest: null,\n forceShouldAnimate: null\n };\n return result;\n }\n if (action.type === \"COLLECTION_STARTING\") {\n if (state.phase === \"COLLECTING\" || state.phase === \"DROP_PENDING\") {\n return state;\n }\n !(state.phase === \"DRAGGING\") ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Collection cannot start from phase \" + state.phase) : invariant() : void 0;\n var _result = _extends$4({\n phase: \"COLLECTING\"\n }, state, {\n phase: \"COLLECTING\"\n });\n return _result;\n }\n if (action.type === \"PUBLISH_WHILE_DRAGGING\") {\n !(state.phase === \"COLLECTING\" || state.phase === \"DROP_PENDING\") ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Unexpected \" + action.type + \" received in phase \" + state.phase) : invariant() : void 0;\n return publishWhileDraggingInVirtual({\n state,\n published: action.payload\n });\n }\n if (action.type === \"MOVE\") {\n if (state.phase === \"DROP_PENDING\") {\n return state;\n }\n !isMovementAllowed$1(state) ? process.env.NODE_ENV !== \"production\" ? invariant(false, action.type + \" not permitted in phase \" + state.phase) : invariant() : void 0;\n var _clientSelection = action.payload.client;\n if (isEqual$5(_clientSelection, state.current.client.selection)) {\n return state;\n }\n return update$1({\n state,\n clientSelection: _clientSelection,\n impact: isSnapping$1(state) ? state.impact : null\n });\n }\n if (action.type === \"UPDATE_DROPPABLE_SCROLL\") {\n if (state.phase === \"DROP_PENDING\") {\n return removeScrollJumpRequest(state);\n }\n if (state.phase === \"COLLECTING\") {\n return removeScrollJumpRequest(state);\n }\n !isMovementAllowed$1(state) ? process.env.NODE_ENV !== \"production\" ? invariant(false, action.type + \" not permitted in phase \" + state.phase) : invariant() : void 0;\n var _action$payload2 = action.payload, id = _action$payload2.id, newScroll = _action$payload2.newScroll;\n var target = state.dimensions.droppables[id];\n if (!target) {\n return state;\n }\n var scrolled = scrollDroppable$1(target, newScroll);\n return postDroppableChange$1(state, scrolled, false);\n }\n if (action.type === \"UPDATE_DROPPABLE_IS_ENABLED\") {\n if (state.phase === \"DROP_PENDING\") {\n return state;\n }\n !isMovementAllowed$1(state) ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Attempting to move in an unsupported phase \" + state.phase) : invariant() : void 0;\n var _action$payload3 = action.payload, _id = _action$payload3.id, isEnabled = _action$payload3.isEnabled;\n var _target = state.dimensions.droppables[_id];\n !_target ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Cannot find Droppable[id: \" + _id + \"] to toggle its enabled state\") : invariant() : void 0;\n !(_target.isEnabled !== isEnabled) ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Trying to set droppable isEnabled to \" + String(isEnabled) + \"\\n but it is already \" + String(_target.isEnabled)) : invariant() : void 0;\n var updated = _extends$4({}, _target, {\n isEnabled\n });\n return postDroppableChange$1(state, updated, true);\n }\n if (action.type === \"UPDATE_DROPPABLE_IS_COMBINE_ENABLED\") {\n if (state.phase === \"DROP_PENDING\") {\n return state;\n }\n !isMovementAllowed$1(state) ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Attempting to move in an unsupported phase \" + state.phase) : invariant() : void 0;\n var _action$payload4 = action.payload, _id2 = _action$payload4.id, isCombineEnabled = _action$payload4.isCombineEnabled;\n var _target2 = state.dimensions.droppables[_id2];\n !_target2 ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Cannot find Droppable[id: \" + _id2 + \"] to toggle its isCombineEnabled state\") : invariant() : void 0;\n !(_target2.isCombineEnabled !== isCombineEnabled) ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Trying to set droppable isCombineEnabled to \" + String(isCombineEnabled) + \"\\n but it is already \" + String(_target2.isCombineEnabled)) : invariant() : void 0;\n var _updated = _extends$4({}, _target2, {\n isCombineEnabled\n });\n return postDroppableChange$1(state, _updated, true);\n }\n if (action.type === \"MOVE_BY_WINDOW_SCROLL\") {\n if (state.phase === \"DROP_PENDING\" || state.phase === \"DROP_ANIMATING\") {\n return state;\n }\n !isMovementAllowed$1(state) ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Cannot move by window in phase \" + state.phase) : invariant() : void 0;\n !state.isWindowScrollAllowed ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Window scrolling is currently not supported for fixed lists\") : invariant() : void 0;\n var _newScroll = action.payload.newScroll;\n if (isEqual$5(state.viewport.scroll.current, _newScroll)) {\n return removeScrollJumpRequest(state);\n }\n var _viewport = scrollViewport$1(state.viewport, _newScroll);\n if (isSnapping$1(state)) {\n return refreshSnap$1({\n state,\n viewport: _viewport\n });\n }\n return update$1({\n state,\n viewport: _viewport\n });\n }\n if (action.type === \"UPDATE_VIEWPORT_MAX_SCROLL\") {\n if (!isMovementAllowed$1(state)) {\n return state;\n }\n var maxScroll = action.payload.maxScroll;\n if (isEqual$5(maxScroll, state.viewport.scroll.max)) {\n return state;\n }\n var withMaxScroll4 = _extends$4({}, state.viewport, {\n scroll: _extends$4({}, state.viewport.scroll, {\n max: maxScroll\n })\n });\n return _extends$4({\n phase: \"DRAGGING\"\n }, state, {\n viewport: withMaxScroll4\n });\n }\n if (action.type === \"MOVE_UP\" || action.type === \"MOVE_DOWN\" || action.type === \"MOVE_LEFT\" || action.type === \"MOVE_RIGHT\") {\n if (state.phase === \"COLLECTING\" || state.phase === \"DROP_PENDING\") {\n return state;\n }\n !(state.phase === \"DRAGGING\") ? process.env.NODE_ENV !== \"production\" ? invariant(false, action.type + \" received while not in DRAGGING phase\") : invariant() : void 0;\n var _result2 = moveInDirection$1({\n state,\n type: action.type\n });\n if (!_result2) {\n return state;\n }\n return update$1({\n state,\n impact: _result2.impact,\n clientSelection: _result2.clientSelection,\n scrollJumpRequest: _result2.scrollJumpRequest\n });\n }\n if (action.type === \"DROP_PENDING\") {\n var reason = action.payload.reason;\n !(state.phase === \"COLLECTING\") ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Can only move into the DROP_PENDING phase from the COLLECTING phase\") : invariant() : void 0;\n var newState = _extends$4({\n phase: \"DROP_PENDING\"\n }, state, {\n phase: \"DROP_PENDING\",\n isWaiting: true,\n reason\n });\n return newState;\n }\n if (action.type === \"DROP_ANIMATE\") {\n var _action$payload5 = action.payload, completed = _action$payload5.completed, dropDuration = _action$payload5.dropDuration, newHomeClientOffset = _action$payload5.newHomeClientOffset;\n !(state.phase === \"DRAGGING\" || state.phase === \"DROP_PENDING\") ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Cannot animate drop from phase \" + state.phase) : invariant() : void 0;\n var _result3 = {\n phase: \"DROP_ANIMATING\",\n completed,\n dropDuration,\n newHomeClientOffset,\n dimensions: state.dimensions\n };\n return _result3;\n }\n if (action.type === \"DROP_COMPLETE\") {\n var _completed = action.payload.completed;\n return {\n phase: \"IDLE\",\n completed: _completed,\n shouldFlush: false\n };\n }\n return state;\n};\nvar beforeInitialCapture = function beforeInitialCapture2(args) {\n return {\n type: \"BEFORE_INITIAL_CAPTURE\",\n payload: args\n };\n};\nvar lift$4 = function lift(args) {\n return {\n type: \"LIFT\",\n payload: args\n };\n};\nvar initialPublish$1 = function initialPublish(args) {\n return {\n type: \"INITIAL_PUBLISH\",\n payload: args\n };\n};\nvar publishWhileDragging$2 = function publishWhileDragging(args) {\n return {\n type: \"PUBLISH_WHILE_DRAGGING\",\n payload: args\n };\n};\nvar collectionStarting$1 = function collectionStarting() {\n return {\n type: \"COLLECTION_STARTING\",\n payload: null\n };\n};\nvar updateDroppableScroll$1 = function updateDroppableScroll(args) {\n return {\n type: \"UPDATE_DROPPABLE_SCROLL\",\n payload: args\n };\n};\nvar updateDroppableIsEnabled$1 = function updateDroppableIsEnabled(args) {\n return {\n type: \"UPDATE_DROPPABLE_IS_ENABLED\",\n payload: args\n };\n};\nvar updateDroppableIsCombineEnabled$1 = function updateDroppableIsCombineEnabled(args) {\n return {\n type: \"UPDATE_DROPPABLE_IS_COMBINE_ENABLED\",\n payload: args\n };\n};\nvar move$1 = function move(args) {\n return {\n type: \"MOVE\",\n payload: args\n };\n};\nvar moveByWindowScroll$1 = function moveByWindowScroll(args) {\n return {\n type: \"MOVE_BY_WINDOW_SCROLL\",\n payload: args\n };\n};\nvar updateViewportMaxScroll$1 = function updateViewportMaxScroll(args) {\n return {\n type: \"UPDATE_VIEWPORT_MAX_SCROLL\",\n payload: args\n };\n};\nvar moveUp$1 = function moveUp() {\n return {\n type: \"MOVE_UP\",\n payload: null\n };\n};\nvar moveDown$1 = function moveDown() {\n return {\n type: \"MOVE_DOWN\",\n payload: null\n };\n};\nvar moveRight$1 = function moveRight() {\n return {\n type: \"MOVE_RIGHT\",\n payload: null\n };\n};\nvar moveLeft$1 = function moveLeft() {\n return {\n type: \"MOVE_LEFT\",\n payload: null\n };\n};\nvar flush = function flush2() {\n return {\n type: \"FLUSH\",\n payload: null\n };\n};\nvar animateDrop$1 = function animateDrop(args) {\n return {\n type: \"DROP_ANIMATE\",\n payload: args\n };\n};\nvar completeDrop$1 = function completeDrop(args) {\n return {\n type: \"DROP_COMPLETE\",\n payload: args\n };\n};\nvar drop$2 = function drop(args) {\n return {\n type: \"DROP\",\n payload: args\n };\n};\nvar dropPending$1 = function dropPending(args) {\n return {\n type: \"DROP_PENDING\",\n payload: args\n };\n};\nvar dropAnimationFinished$1 = function dropAnimationFinished() {\n return {\n type: \"DROP_ANIMATION_FINISHED\",\n payload: null\n };\n};\nfunction checkIndexes(insideDestination) {\n if (insideDestination.length <= 1) {\n return;\n }\n var indexes = insideDestination.map(function(d2) {\n return d2.descriptor.index;\n });\n var errors = {};\n for (var i = 1; i < indexes.length; i++) {\n var current = indexes[i];\n var previous = indexes[i - 1];\n if (current !== previous + 1) {\n errors[current] = true;\n }\n }\n if (!Object.keys(errors).length) {\n return;\n }\n var formatted = indexes.map(function(index2) {\n var hasError = Boolean(errors[index2]);\n return hasError ? \"[🔥\" + index2 + \"]\" : \"\" + index2;\n }).join(\", \");\n process.env.NODE_ENV !== \"production\" ? warning$1(\"\\n Detected non-consecutive indexes.\\n\\n (This can cause unexpected bugs)\\n\\n \" + formatted + \"\\n \") : void 0;\n}\nfunction validateDimensions(critical, dimensions) {\n if (process.env.NODE_ENV !== \"production\") {\n var insideDestination = getDraggablesInsideDroppable$1(critical.droppable.id, dimensions.draggables);\n checkIndexes(insideDestination);\n }\n}\nvar lift$1$2 = function(marshal) {\n return function(_ref) {\n var getState = _ref.getState, dispatch = _ref.dispatch;\n return function(next2) {\n return function(action) {\n if (action.type !== \"LIFT\") {\n next2(action);\n return;\n }\n var _action$payload = action.payload, id = _action$payload.id, clientSelection = _action$payload.clientSelection, movementMode = _action$payload.movementMode;\n var initial = getState();\n if (initial.phase === \"DROP_ANIMATING\") {\n dispatch(completeDrop$1({\n completed: initial.completed\n }));\n }\n !(getState().phase === \"IDLE\") ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Unexpected phase to start a drag\") : invariant() : void 0;\n dispatch(flush());\n dispatch(beforeInitialCapture({\n draggableId: id,\n movementMode\n }));\n var scrollOptions = {\n shouldPublishImmediately: movementMode === \"SNAP\"\n };\n var request = {\n draggableId: id,\n scrollOptions\n };\n var _marshal$startPublish = marshal.startPublishing(request), critical = _marshal$startPublish.critical, dimensions = _marshal$startPublish.dimensions, viewport = _marshal$startPublish.viewport;\n validateDimensions(critical, dimensions);\n dispatch(initialPublish$1({\n critical,\n dimensions,\n clientSelection,\n movementMode,\n viewport\n }));\n };\n };\n };\n};\nvar style$2 = function(marshal) {\n return function() {\n return function(next2) {\n return function(action) {\n if (action.type === \"INITIAL_PUBLISH\") {\n marshal.dragging();\n }\n if (action.type === \"DROP_ANIMATE\") {\n marshal.dropping(action.payload.completed.result.reason);\n }\n if (action.type === \"FLUSH\" || action.type === \"DROP_COMPLETE\") {\n marshal.resting();\n }\n next2(action);\n };\n };\n };\n};\nvar curves$1 = {\n outOfTheWay: \"cubic-bezier(0.2, 0, 0, 1)\",\n drop: \"cubic-bezier(.2,1,.1,1)\"\n};\nvar combine$2 = {\n opacity: {\n drop: 0,\n combining: 0.7\n },\n scale: {\n drop: 0.75\n }\n};\nvar timings$1 = {\n outOfTheWay: 0.2,\n minDropTime: 0.33,\n maxDropTime: 0.55\n};\nvar outOfTheWayTiming$1 = timings$1.outOfTheWay + \"s \" + curves$1.outOfTheWay;\nvar transitions$1 = {\n fluid: \"opacity \" + outOfTheWayTiming$1,\n snap: \"transform \" + outOfTheWayTiming$1 + \", opacity \" + outOfTheWayTiming$1,\n drop: function drop2(duration) {\n var timing = duration + \"s \" + curves$1.drop;\n return \"transform \" + timing + \", opacity \" + timing;\n },\n outOfTheWay: \"transform \" + outOfTheWayTiming$1,\n placeholder: \"height \" + outOfTheWayTiming$1 + \", width \" + outOfTheWayTiming$1 + \", margin \" + outOfTheWayTiming$1\n};\nvar moveTo$1 = function moveTo(offset3) {\n return isEqual$5(offset3, origin$1) ? null : \"translate(\" + offset3.x + \"px, \" + offset3.y + \"px)\";\n};\nvar transforms$1 = {\n moveTo: moveTo$1,\n drop: function drop3(offset3, isCombining) {\n var translate = moveTo$1(offset3);\n if (!translate) {\n return null;\n }\n if (!isCombining) {\n return translate;\n }\n return translate + \" scale(\" + combine$2.scale.drop + \")\";\n }\n};\nvar minDropTime$1 = timings$1.minDropTime, maxDropTime$1 = timings$1.maxDropTime;\nvar dropTimeRange$1 = maxDropTime$1 - minDropTime$1;\nvar maxDropTimeAtDistance$1 = 1500;\nvar cancelDropModifier$1 = 0.6;\nvar getDropDuration$1 = function(_ref) {\n var current = _ref.current, destination = _ref.destination, reason = _ref.reason;\n var distance$1$1 = distance$1(current, destination);\n if (distance$1$1 <= 0) {\n return minDropTime$1;\n }\n if (distance$1$1 >= maxDropTimeAtDistance$1) {\n return maxDropTime$1;\n }\n var percentage = distance$1$1 / maxDropTimeAtDistance$1;\n var duration = minDropTime$1 + dropTimeRange$1 * percentage;\n var withDuration = reason === \"CANCEL\" ? duration * cancelDropModifier$1 : duration;\n return Number(withDuration.toFixed(2));\n};\nvar getNewHomeClientOffset$1 = function(_ref) {\n var impact = _ref.impact, draggable2 = _ref.draggable, dimensions = _ref.dimensions, viewport = _ref.viewport, afterCritical = _ref.afterCritical;\n var draggables = dimensions.draggables, droppables = dimensions.droppables;\n var droppableId = whatIsDraggedOver$1(impact);\n var destination = droppableId ? droppables[droppableId] : null;\n var home2 = droppables[draggable2.descriptor.droppableId];\n var newClientCenter = getClientBorderBoxCenter$1({\n impact,\n draggable: draggable2,\n draggables,\n afterCritical,\n droppable: destination || home2,\n viewport\n });\n var offset3 = subtract$3(newClientCenter, draggable2.client.borderBox.center);\n return offset3;\n};\nvar getDropImpact$1 = function(_ref) {\n var draggables = _ref.draggables, reason = _ref.reason, lastImpact = _ref.lastImpact, home2 = _ref.home, viewport = _ref.viewport, onLiftImpact = _ref.onLiftImpact;\n if (!lastImpact.at || reason !== \"DROP\") {\n var recomputedHomeImpact = recompute$1({\n draggables,\n impact: onLiftImpact,\n destination: home2,\n viewport,\n forceShouldAnimate: true\n });\n return {\n impact: recomputedHomeImpact,\n didDropInsideDroppable: false\n };\n }\n if (lastImpact.at.type === \"REORDER\") {\n return {\n impact: lastImpact,\n didDropInsideDroppable: true\n };\n }\n var withoutMovement = _extends$4({}, lastImpact, {\n displaced: emptyGroups\n });\n return {\n impact: withoutMovement,\n didDropInsideDroppable: true\n };\n};\nvar drop$1$1 = function(_ref) {\n var getState = _ref.getState, dispatch = _ref.dispatch;\n return function(next2) {\n return function(action) {\n if (action.type !== \"DROP\") {\n next2(action);\n return;\n }\n var state = getState();\n var reason = action.payload.reason;\n if (state.phase === \"COLLECTING\") {\n dispatch(dropPending$1({\n reason\n }));\n return;\n }\n if (state.phase === \"IDLE\") {\n return;\n }\n var isWaitingForDrop = state.phase === \"DROP_PENDING\" && state.isWaiting;\n !!isWaitingForDrop ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"A DROP action occurred while DROP_PENDING and still waiting\") : invariant() : void 0;\n !(state.phase === \"DRAGGING\" || state.phase === \"DROP_PENDING\") ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Cannot drop in phase: \" + state.phase) : invariant() : void 0;\n var critical = state.critical;\n var dimensions = state.dimensions;\n var draggable2 = dimensions.draggables[state.critical.draggable.id];\n var _getDropImpact = getDropImpact$1({\n reason,\n lastImpact: state.impact,\n afterCritical: state.afterCritical,\n onLiftImpact: state.onLiftImpact,\n home: state.dimensions.droppables[state.critical.droppable.id],\n viewport: state.viewport,\n draggables: state.dimensions.draggables\n }), impact = _getDropImpact.impact, didDropInsideDroppable = _getDropImpact.didDropInsideDroppable;\n var destination = didDropInsideDroppable ? tryGetDestination(impact) : null;\n var combine2 = didDropInsideDroppable ? tryGetCombine(impact) : null;\n var source = {\n index: critical.draggable.index,\n droppableId: critical.droppable.id\n };\n var result = {\n draggableId: draggable2.descriptor.id,\n type: draggable2.descriptor.type,\n source,\n reason,\n mode: state.movementMode,\n destination,\n combine: combine2\n };\n var newHomeClientOffset = getNewHomeClientOffset$1({\n impact,\n draggable: draggable2,\n dimensions,\n viewport: state.viewport,\n afterCritical: state.afterCritical\n });\n var completed = {\n critical: state.critical,\n afterCritical: state.afterCritical,\n result,\n impact\n };\n var isAnimationRequired = !isEqual$5(state.current.client.offset, newHomeClientOffset) || Boolean(result.combine);\n if (!isAnimationRequired) {\n dispatch(completeDrop$1({\n completed\n }));\n return;\n }\n var dropDuration = getDropDuration$1({\n current: state.current.client.offset,\n destination: newHomeClientOffset,\n reason\n });\n var args = {\n newHomeClientOffset,\n dropDuration,\n completed\n };\n dispatch(animateDrop$1(args));\n };\n };\n};\nvar getWindowScroll$1 = function() {\n return {\n x: window.pageXOffset,\n y: window.pageYOffset\n };\n};\nfunction getWindowScrollBinding(update2) {\n return {\n eventName: \"scroll\",\n options: {\n passive: true,\n capture: false\n },\n fn: function fn2(event) {\n if (event.target !== window && event.target !== window.document) {\n return;\n }\n update2();\n }\n };\n}\nfunction getScrollListener(_ref) {\n var onWindowScroll = _ref.onWindowScroll;\n function updateScroll() {\n onWindowScroll(getWindowScroll$1());\n }\n var scheduled = rafSchd(updateScroll);\n var binding = getWindowScrollBinding(scheduled);\n var unbind = noop$5;\n function isActive2() {\n return unbind !== noop$5;\n }\n function start4() {\n !!isActive2() ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Cannot start scroll listener when already active\") : invariant() : void 0;\n unbind = bindEvents$1(window, [binding]);\n }\n function stop() {\n !isActive2() ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Cannot stop scroll listener when not active\") : invariant() : void 0;\n scheduled.cancel();\n unbind();\n unbind = noop$5;\n }\n return {\n start: start4,\n stop,\n isActive: isActive2\n };\n}\nvar shouldEnd$1 = function shouldEnd(action) {\n return action.type === \"DROP_COMPLETE\" || action.type === \"DROP_ANIMATE\" || action.type === \"FLUSH\";\n};\nvar scrollListener = function(store) {\n var listener = getScrollListener({\n onWindowScroll: function onWindowScroll(newScroll) {\n store.dispatch(moveByWindowScroll$1({\n newScroll\n }));\n }\n });\n return function(next2) {\n return function(action) {\n if (!listener.isActive() && action.type === \"INITIAL_PUBLISH\") {\n listener.start();\n }\n if (listener.isActive() && shouldEnd$1(action)) {\n listener.stop();\n }\n next2(action);\n };\n };\n};\nvar getExpiringAnnounce$1 = function(announce) {\n var wasCalled = false;\n var isExpired = false;\n var timeoutId = setTimeout(function() {\n isExpired = true;\n });\n var result = function result2(message2) {\n if (wasCalled) {\n process.env.NODE_ENV !== \"production\" ? warning$1(\"Announcement already made. Not making a second announcement\") : void 0;\n return;\n }\n if (isExpired) {\n process.env.NODE_ENV !== \"production\" ? warning$1(\"\\n Announcements cannot be made asynchronously.\\n Default message has already been announced.\\n \") : void 0;\n return;\n }\n wasCalled = true;\n announce(message2);\n clearTimeout(timeoutId);\n };\n result.wasCalled = function() {\n return wasCalled;\n };\n return result;\n};\nvar getAsyncMarshal$1 = function() {\n var entries = [];\n var execute4 = function execute5(timerId) {\n var index2 = findIndex$2(entries, function(item) {\n return item.timerId === timerId;\n });\n !(index2 !== -1) ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Could not find timer\") : invariant() : void 0;\n var _entries$splice = entries.splice(index2, 1), entry = _entries$splice[0];\n entry.callback();\n };\n var add4 = function add5(fn2) {\n var timerId = setTimeout(function() {\n return execute4(timerId);\n });\n var entry = {\n timerId,\n callback: fn2\n };\n entries.push(entry);\n };\n var flush3 = function flush4() {\n if (!entries.length) {\n return;\n }\n var shallow = [].concat(entries);\n entries.length = 0;\n shallow.forEach(function(entry) {\n clearTimeout(entry.timerId);\n entry.callback();\n });\n };\n return {\n add: add4,\n flush: flush3\n };\n};\nvar areLocationsEqual$1 = function areLocationsEqual(first2, second) {\n if (first2 == null && second == null) {\n return true;\n }\n if (first2 == null || second == null) {\n return false;\n }\n return first2.droppableId === second.droppableId && first2.index === second.index;\n};\nvar isCombineEqual$1 = function isCombineEqual(first2, second) {\n if (first2 == null && second == null) {\n return true;\n }\n if (first2 == null || second == null) {\n return false;\n }\n return first2.draggableId === second.draggableId && first2.droppableId === second.droppableId;\n};\nvar isCriticalEqual$1 = function isCriticalEqual(first2, second) {\n if (first2 === second) {\n return true;\n }\n var isDraggableEqual = first2.draggable.id === second.draggable.id && first2.draggable.droppableId === second.draggable.droppableId && first2.draggable.type === second.draggable.type && first2.draggable.index === second.draggable.index;\n var isDroppableEqual = first2.droppable.id === second.droppable.id && first2.droppable.type === second.droppable.type;\n return isDraggableEqual && isDroppableEqual;\n};\nvar withTimings$1 = function withTimings(key, fn2) {\n start$1();\n fn2();\n finish$1();\n};\nvar getDragStart$1 = function getDragStart(critical, mode) {\n return {\n draggableId: critical.draggable.id,\n type: critical.droppable.type,\n source: {\n droppableId: critical.droppable.id,\n index: critical.draggable.index\n },\n mode\n };\n};\nvar execute$1 = function execute(responder, data, announce, getDefaultMessage) {\n if (!responder) {\n announce(getDefaultMessage(data));\n return;\n }\n var willExpire = getExpiringAnnounce$1(announce);\n var provided = {\n announce: willExpire\n };\n responder(data, provided);\n if (!willExpire.wasCalled()) {\n announce(getDefaultMessage(data));\n }\n};\nvar getPublisher$1 = function(getResponders, announce) {\n var asyncMarshal = getAsyncMarshal$1();\n var dragging = null;\n var beforeCapture = function beforeCapture2(draggableId, mode) {\n !!dragging ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Cannot fire onBeforeCapture as a drag start has already been published\") : invariant() : void 0;\n withTimings$1(\"onBeforeCapture\", function() {\n var fn2 = getResponders().onBeforeCapture;\n if (fn2) {\n var before = {\n draggableId,\n mode\n };\n fn2(before);\n }\n });\n };\n var beforeStart = function beforeStart2(critical, mode) {\n !!dragging ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Cannot fire onBeforeDragStart as a drag start has already been published\") : invariant() : void 0;\n withTimings$1(\"onBeforeDragStart\", function() {\n var fn2 = getResponders().onBeforeDragStart;\n if (fn2) {\n fn2(getDragStart$1(critical, mode));\n }\n });\n };\n var start4 = function start5(critical, mode) {\n !!dragging ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Cannot fire onBeforeDragStart as a drag start has already been published\") : invariant() : void 0;\n var data = getDragStart$1(critical, mode);\n dragging = {\n mode,\n lastCritical: critical,\n lastLocation: data.source,\n lastCombine: null\n };\n asyncMarshal.add(function() {\n withTimings$1(\"onDragStart\", function() {\n return execute$1(getResponders().onDragStart, data, announce, preset$1.onDragStart);\n });\n });\n };\n var update2 = function update3(critical, impact) {\n var location = tryGetDestination(impact);\n var combine2 = tryGetCombine(impact);\n !dragging ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Cannot fire onDragMove when onDragStart has not been called\") : invariant() : void 0;\n var hasCriticalChanged = !isCriticalEqual$1(critical, dragging.lastCritical);\n if (hasCriticalChanged) {\n dragging.lastCritical = critical;\n }\n var hasLocationChanged = !areLocationsEqual$1(dragging.lastLocation, location);\n if (hasLocationChanged) {\n dragging.lastLocation = location;\n }\n var hasGroupingChanged = !isCombineEqual$1(dragging.lastCombine, combine2);\n if (hasGroupingChanged) {\n dragging.lastCombine = combine2;\n }\n if (!hasCriticalChanged && !hasLocationChanged && !hasGroupingChanged) {\n return;\n }\n var data = _extends$4({}, getDragStart$1(critical, dragging.mode), {\n combine: combine2,\n destination: location\n });\n asyncMarshal.add(function() {\n withTimings$1(\"onDragUpdate\", function() {\n return execute$1(getResponders().onDragUpdate, data, announce, preset$1.onDragUpdate);\n });\n });\n };\n var flush3 = function flush4() {\n !dragging ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Can only flush responders while dragging\") : invariant() : void 0;\n asyncMarshal.flush();\n };\n var drop8 = function drop9(result) {\n !dragging ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Cannot fire onDragEnd when there is no matching onDragStart\") : invariant() : void 0;\n dragging = null;\n withTimings$1(\"onDragEnd\", function() {\n return execute$1(getResponders().onDragEnd, result, announce, preset$1.onDragEnd);\n });\n };\n var abort = function abort2() {\n if (!dragging) {\n return;\n }\n var result = _extends$4({}, getDragStart$1(dragging.lastCritical, dragging.mode), {\n combine: null,\n destination: null,\n reason: \"CANCEL\"\n });\n drop8(result);\n };\n return {\n beforeCapture,\n beforeStart,\n start: start4,\n update: update2,\n flush: flush3,\n drop: drop8,\n abort\n };\n};\nvar responders$1 = function(getResponders, announce) {\n var publisher = getPublisher$1(getResponders, announce);\n return function(store) {\n return function(next2) {\n return function(action) {\n if (action.type === \"BEFORE_INITIAL_CAPTURE\") {\n publisher.beforeCapture(action.payload.draggableId, action.payload.movementMode);\n return;\n }\n if (action.type === \"INITIAL_PUBLISH\") {\n var critical = action.payload.critical;\n publisher.beforeStart(critical, action.payload.movementMode);\n next2(action);\n publisher.start(critical, action.payload.movementMode);\n return;\n }\n if (action.type === \"DROP_COMPLETE\") {\n var result = action.payload.completed.result;\n publisher.flush();\n next2(action);\n publisher.drop(result);\n return;\n }\n next2(action);\n if (action.type === \"FLUSH\") {\n publisher.abort();\n return;\n }\n var state = store.getState();\n if (state.phase === \"DRAGGING\") {\n publisher.update(state.critical, state.impact);\n }\n };\n };\n };\n};\nvar dropAnimationFinish$1 = function(store) {\n return function(next2) {\n return function(action) {\n if (action.type !== \"DROP_ANIMATION_FINISHED\") {\n next2(action);\n return;\n }\n var state = store.getState();\n !(state.phase === \"DROP_ANIMATING\") ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Cannot finish a drop animating when no drop is occurring\") : invariant() : void 0;\n store.dispatch(completeDrop$1({\n completed: state.completed\n }));\n };\n };\n};\nvar dropAnimationFlushOnScroll = function(store) {\n var unbind = null;\n var frameId = null;\n function clear() {\n if (frameId) {\n cancelAnimationFrame(frameId);\n frameId = null;\n }\n if (unbind) {\n unbind();\n unbind = null;\n }\n }\n return function(next2) {\n return function(action) {\n if (action.type === \"FLUSH\" || action.type === \"DROP_COMPLETE\" || action.type === \"DROP_ANIMATION_FINISHED\") {\n clear();\n }\n next2(action);\n if (action.type !== \"DROP_ANIMATE\") {\n return;\n }\n var binding = {\n eventName: \"scroll\",\n options: {\n capture: true,\n passive: false,\n once: true\n },\n fn: function flushDropAnimation() {\n var state = store.getState();\n if (state.phase === \"DROP_ANIMATING\") {\n store.dispatch(dropAnimationFinished$1());\n }\n }\n };\n frameId = requestAnimationFrame(function() {\n frameId = null;\n unbind = bindEvents$1(window, [binding]);\n });\n };\n };\n};\nvar dimensionMarshalStopper$1 = function(marshal) {\n return function() {\n return function(next2) {\n return function(action) {\n if (action.type === \"DROP_COMPLETE\" || action.type === \"FLUSH\" || action.type === \"DROP_ANIMATE\") {\n marshal.stopPublishing();\n }\n next2(action);\n };\n };\n };\n};\nvar focus$1 = function(marshal) {\n var isWatching = false;\n return function() {\n return function(next2) {\n return function(action) {\n if (action.type === \"INITIAL_PUBLISH\") {\n isWatching = true;\n marshal.tryRecordFocus(action.payload.critical.draggable.id);\n next2(action);\n marshal.tryRestoreFocusRecorded();\n return;\n }\n next2(action);\n if (!isWatching) {\n return;\n }\n if (action.type === \"FLUSH\") {\n isWatching = false;\n marshal.tryRestoreFocusRecorded();\n return;\n }\n if (action.type === \"DROP_COMPLETE\") {\n isWatching = false;\n var result = action.payload.completed.result;\n if (result.combine) {\n marshal.tryShiftRecord(result.draggableId, result.combine.draggableId);\n }\n marshal.tryRestoreFocusRecorded();\n }\n };\n };\n };\n};\nvar shouldStop = function shouldStop2(action) {\n return action.type === \"DROP_COMPLETE\" || action.type === \"DROP_ANIMATE\" || action.type === \"FLUSH\";\n};\nvar autoScroll$1 = function(autoScroller) {\n return function(store) {\n return function(next2) {\n return function(action) {\n if (shouldStop(action)) {\n autoScroller.stop();\n next2(action);\n return;\n }\n if (action.type === \"INITIAL_PUBLISH\") {\n next2(action);\n var state = store.getState();\n !(state.phase === \"DRAGGING\") ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Expected phase to be DRAGGING after INITIAL_PUBLISH\") : invariant() : void 0;\n autoScroller.start(state);\n return;\n }\n next2(action);\n autoScroller.scroll(store.getState());\n };\n };\n };\n};\nvar pendingDrop$1 = function(store) {\n return function(next2) {\n return function(action) {\n next2(action);\n if (action.type !== \"PUBLISH_WHILE_DRAGGING\") {\n return;\n }\n var postActionState = store.getState();\n if (postActionState.phase !== \"DROP_PENDING\") {\n return;\n }\n if (postActionState.isWaiting) {\n return;\n }\n store.dispatch(drop$2({\n reason: postActionState.reason\n }));\n };\n };\n};\nvar composeEnhancers$1 = process.env.NODE_ENV !== \"production\" && typeof window !== \"undefined\" && window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ ? window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__({\n name: \"react-beautiful-dnd\"\n}) : compose;\nvar createStore$1 = function(_ref) {\n var dimensionMarshal = _ref.dimensionMarshal, focusMarshal = _ref.focusMarshal, styleMarshal = _ref.styleMarshal, getResponders = _ref.getResponders, announce = _ref.announce, autoScroller = _ref.autoScroller;\n return createStore$2(reducer$3, composeEnhancers$1(applyMiddleware(style$2(styleMarshal), dimensionMarshalStopper$1(dimensionMarshal), lift$1$2(dimensionMarshal), drop$1$1, dropAnimationFinish$1, dropAnimationFlushOnScroll, pendingDrop$1, autoScroll$1(autoScroller), scrollListener, focus$1(focusMarshal), responders$1(getResponders, announce))));\n};\nvar clean$1$1 = function clean2() {\n return {\n additions: {},\n removals: {},\n modified: {}\n };\n};\nfunction createPublisher$1(_ref) {\n var registry = _ref.registry, callbacks = _ref.callbacks;\n var staging = clean$1$1();\n var frameId = null;\n var collect = function collect2() {\n if (frameId) {\n return;\n }\n callbacks.collectionStarting();\n frameId = requestAnimationFrame(function() {\n frameId = null;\n start$1();\n var _staging = staging, additions = _staging.additions, removals = _staging.removals, modified = _staging.modified;\n var added = Object.keys(additions).map(function(id) {\n return registry.draggable.getById(id).getDimension(origin$1);\n }).sort(function(a2, b2) {\n return a2.descriptor.index - b2.descriptor.index;\n });\n var updated = Object.keys(modified).map(function(id) {\n var entry = registry.droppable.getById(id);\n var scroll4 = entry.callbacks.getScrollWhileDragging();\n return {\n droppableId: id,\n scroll: scroll4\n };\n });\n var result = {\n additions: added,\n removals: Object.keys(removals),\n modified: updated\n };\n staging = clean$1$1();\n finish$1();\n callbacks.publish(result);\n });\n };\n var add4 = function add5(entry) {\n var id = entry.descriptor.id;\n staging.additions[id] = entry;\n staging.modified[entry.descriptor.droppableId] = true;\n if (staging.removals[id]) {\n delete staging.removals[id];\n }\n collect();\n };\n var remove = function remove2(entry) {\n var descriptor = entry.descriptor;\n staging.removals[descriptor.id] = true;\n staging.modified[descriptor.droppableId] = true;\n if (staging.additions[descriptor.id]) {\n delete staging.additions[descriptor.id];\n }\n collect();\n };\n var stop = function stop2() {\n if (!frameId) {\n return;\n }\n cancelAnimationFrame(frameId);\n frameId = null;\n staging = clean$1$1();\n };\n return {\n add: add4,\n remove,\n stop\n };\n}\nvar getMaxScroll$1 = function(_ref) {\n var scrollHeight = _ref.scrollHeight, scrollWidth = _ref.scrollWidth, height = _ref.height, width = _ref.width;\n var maxScroll = subtract$3({\n x: scrollWidth,\n y: scrollHeight\n }, {\n x: width,\n y: height\n });\n var adjustedMaxScroll = {\n x: Math.max(0, maxScroll.x),\n y: Math.max(0, maxScroll.y)\n };\n return adjustedMaxScroll;\n};\nvar getDocumentElement$2 = function() {\n var doc2 = document.documentElement;\n !doc2 ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Cannot find document.documentElement\") : invariant() : void 0;\n return doc2;\n};\nvar getMaxWindowScroll$1 = function() {\n var doc2 = getDocumentElement$2();\n var maxScroll = getMaxScroll$1({\n scrollHeight: doc2.scrollHeight,\n scrollWidth: doc2.scrollWidth,\n width: doc2.clientWidth,\n height: doc2.clientHeight\n });\n return maxScroll;\n};\nvar getViewport$1 = function() {\n var scroll4 = getWindowScroll$1();\n var maxScroll = getMaxWindowScroll$1();\n var top = scroll4.y;\n var left = scroll4.x;\n var doc2 = getDocumentElement$2();\n var width = doc2.clientWidth;\n var height = doc2.clientHeight;\n var right = left + width;\n var bottom = top + height;\n var frame = getRect({\n top,\n left,\n right,\n bottom\n });\n var viewport = {\n frame,\n scroll: {\n initial: scroll4,\n current: scroll4,\n max: maxScroll,\n diff: {\n value: origin$1,\n displacement: origin$1\n }\n }\n };\n return viewport;\n};\nvar getInitialPublish$1 = function(_ref) {\n var critical = _ref.critical, scrollOptions = _ref.scrollOptions, registry = _ref.registry;\n start$1();\n var viewport = getViewport$1();\n var windowScroll = viewport.scroll.current;\n var home2 = critical.droppable;\n var droppables = registry.droppable.getAllByType(home2.type).map(function(entry) {\n return entry.callbacks.getDimensionAndWatchScroll(windowScroll, scrollOptions);\n });\n var draggables = registry.draggable.getAllByType(critical.draggable.type).map(function(entry) {\n return entry.getDimension(windowScroll);\n });\n var dimensions = {\n draggables: toDraggableMap$1(draggables),\n droppables: toDroppableMap$1(droppables)\n };\n finish$1();\n var result = {\n dimensions,\n critical,\n viewport\n };\n return result;\n};\nfunction shouldPublishUpdate(registry, dragging, entry) {\n if (entry.descriptor.id === dragging.id) {\n return false;\n }\n if (entry.descriptor.type !== dragging.type) {\n return false;\n }\n var home2 = registry.droppable.getById(entry.descriptor.droppableId);\n if (home2.descriptor.mode !== \"virtual\") {\n process.env.NODE_ENV !== \"production\" ? warning$1(\"\\n You are attempting to add or remove a Draggable [id: \" + entry.descriptor.id + \"]\\n while a drag is occurring. This is only supported for virtual lists.\\n\\n See https://github.com/atlassian/react-beautiful-dnd/blob/master/docs/patterns/virtual-lists.md\\n \") : void 0;\n return false;\n }\n return true;\n}\nvar createDimensionMarshal$1 = function(registry, callbacks) {\n var collection = null;\n var publisher = createPublisher$1({\n callbacks: {\n publish: callbacks.publishWhileDragging,\n collectionStarting: callbacks.collectionStarting\n },\n registry\n });\n var updateDroppableIsEnabled4 = function updateDroppableIsEnabled5(id, isEnabled) {\n !registry.droppable.exists(id) ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Cannot update is enabled flag of Droppable \" + id + \" as it is not registered\") : invariant() : void 0;\n if (!collection) {\n return;\n }\n callbacks.updateDroppableIsEnabled({\n id,\n isEnabled\n });\n };\n var updateDroppableIsCombineEnabled4 = function updateDroppableIsCombineEnabled5(id, isCombineEnabled) {\n if (!collection) {\n return;\n }\n !registry.droppable.exists(id) ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Cannot update isCombineEnabled flag of Droppable \" + id + \" as it is not registered\") : invariant() : void 0;\n callbacks.updateDroppableIsCombineEnabled({\n id,\n isCombineEnabled\n });\n };\n var updateDroppableScroll4 = function updateDroppableScroll5(id, newScroll) {\n if (!collection) {\n return;\n }\n !registry.droppable.exists(id) ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Cannot update the scroll on Droppable \" + id + \" as it is not registered\") : invariant() : void 0;\n callbacks.updateDroppableScroll({\n id,\n newScroll\n });\n };\n var scrollDroppable2 = function scrollDroppable3(id, change) {\n if (!collection) {\n return;\n }\n registry.droppable.getById(id).callbacks.scroll(change);\n };\n var stopPublishing = function stopPublishing2() {\n if (!collection) {\n return;\n }\n publisher.stop();\n var home2 = collection.critical.droppable;\n registry.droppable.getAllByType(home2.type).forEach(function(entry) {\n return entry.callbacks.dragStopped();\n });\n collection.unsubscribe();\n collection = null;\n };\n var subscriber = function subscriber2(event) {\n !collection ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Should only be subscribed when a collection is occurring\") : invariant() : void 0;\n var dragging = collection.critical.draggable;\n if (event.type === \"ADDITION\") {\n if (shouldPublishUpdate(registry, dragging, event.value)) {\n publisher.add(event.value);\n }\n }\n if (event.type === \"REMOVAL\") {\n if (shouldPublishUpdate(registry, dragging, event.value)) {\n publisher.remove(event.value);\n }\n }\n };\n var startPublishing = function startPublishing2(request) {\n !!collection ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Cannot start capturing critical dimensions as there is already a collection\") : invariant() : void 0;\n var entry = registry.draggable.getById(request.draggableId);\n var home2 = registry.droppable.getById(entry.descriptor.droppableId);\n var critical = {\n draggable: entry.descriptor,\n droppable: home2.descriptor\n };\n var unsubscribe = registry.subscribe(subscriber);\n collection = {\n critical,\n unsubscribe\n };\n return getInitialPublish$1({\n critical,\n registry,\n scrollOptions: request.scrollOptions\n });\n };\n var marshal = {\n updateDroppableIsEnabled: updateDroppableIsEnabled4,\n updateDroppableIsCombineEnabled: updateDroppableIsCombineEnabled4,\n scrollDroppable: scrollDroppable2,\n updateDroppableScroll: updateDroppableScroll4,\n startPublishing,\n stopPublishing\n };\n return marshal;\n};\nvar canStartDrag$1 = function(state, id) {\n if (state.phase === \"IDLE\") {\n return true;\n }\n if (state.phase !== \"DROP_ANIMATING\") {\n return false;\n }\n if (state.completed.result.draggableId === id) {\n return false;\n }\n return state.completed.result.reason === \"DROP\";\n};\nvar scrollWindow$1 = function(change) {\n window.scrollBy(change.x, change.y);\n};\nvar getScrollableDroppables$1 = memoizeOne(function(droppables) {\n return toDroppableList$1(droppables).filter(function(droppable2) {\n if (!droppable2.isEnabled) {\n return false;\n }\n if (!droppable2.frame) {\n return false;\n }\n return true;\n });\n});\nvar getScrollableDroppableOver$1 = function getScrollableDroppableOver(target, droppables) {\n var maybe = find$2(getScrollableDroppables$1(droppables), function(droppable2) {\n !droppable2.frame ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Invalid result\") : invariant() : void 0;\n return isPositionInFrame$1(droppable2.frame.pageMarginBox)(target);\n });\n return maybe;\n};\nvar getBestScrollableDroppable$1 = function(_ref) {\n var center = _ref.center, destination = _ref.destination, droppables = _ref.droppables;\n if (destination) {\n var _dimension = droppables[destination];\n if (!_dimension.frame) {\n return null;\n }\n return _dimension;\n }\n var dimension = getScrollableDroppableOver$1(center, droppables);\n return dimension;\n};\nvar config$1 = {\n startFromPercentage: 0.25,\n maxScrollAtPercentage: 0.05,\n maxPixelScroll: 28,\n ease: function ease(percentage) {\n return Math.pow(percentage, 2);\n },\n durationDampening: {\n stopDampeningAt: 1200,\n accelerateAt: 360\n }\n};\nvar getDistanceThresholds$1 = function(container, axis) {\n var startScrollingFrom = container[axis.size] * config$1.startFromPercentage;\n var maxScrollValueAt = container[axis.size] * config$1.maxScrollAtPercentage;\n var thresholds2 = {\n startScrollingFrom,\n maxScrollValueAt\n };\n return thresholds2;\n};\nvar getPercentage$1 = function(_ref) {\n var startOfRange = _ref.startOfRange, endOfRange = _ref.endOfRange, current = _ref.current;\n var range = endOfRange - startOfRange;\n if (range === 0) {\n process.env.NODE_ENV !== \"production\" ? warning$1(\"\\n Detected distance range of 0 in the fluid auto scroller\\n This is unexpected and would cause a divide by 0 issue.\\n Not allowing an auto scroll\\n \") : void 0;\n return 0;\n }\n var currentInRange = current - startOfRange;\n var percentage = currentInRange / range;\n return percentage;\n};\nvar minScroll$1 = 1;\nvar getValueFromDistance$1 = function(distanceToEdge, thresholds2) {\n if (distanceToEdge > thresholds2.startScrollingFrom) {\n return 0;\n }\n if (distanceToEdge <= thresholds2.maxScrollValueAt) {\n return config$1.maxPixelScroll;\n }\n if (distanceToEdge === thresholds2.startScrollingFrom) {\n return minScroll$1;\n }\n var percentageFromMaxScrollValueAt = getPercentage$1({\n startOfRange: thresholds2.maxScrollValueAt,\n endOfRange: thresholds2.startScrollingFrom,\n current: distanceToEdge\n });\n var percentageFromStartScrollingFrom = 1 - percentageFromMaxScrollValueAt;\n var scroll4 = config$1.maxPixelScroll * config$1.ease(percentageFromStartScrollingFrom);\n return Math.ceil(scroll4);\n};\nvar accelerateAt$1 = config$1.durationDampening.accelerateAt;\nvar stopAt$1 = config$1.durationDampening.stopDampeningAt;\nvar dampenValueByTime$1 = function(proposedScroll, dragStartTime) {\n var startOfRange = dragStartTime;\n var endOfRange = stopAt$1;\n var now2 = Date.now();\n var runTime = now2 - startOfRange;\n if (runTime >= stopAt$1) {\n return proposedScroll;\n }\n if (runTime < accelerateAt$1) {\n return minScroll$1;\n }\n var betweenAccelerateAtAndStopAtPercentage = getPercentage$1({\n startOfRange: accelerateAt$1,\n endOfRange,\n current: runTime\n });\n var scroll4 = proposedScroll * config$1.ease(betweenAccelerateAtAndStopAtPercentage);\n return Math.ceil(scroll4);\n};\nvar getValue$1 = function(_ref) {\n var distanceToEdge = _ref.distanceToEdge, thresholds2 = _ref.thresholds, dragStartTime = _ref.dragStartTime, shouldUseTimeDampening = _ref.shouldUseTimeDampening;\n var scroll4 = getValueFromDistance$1(distanceToEdge, thresholds2);\n if (scroll4 === 0) {\n return 0;\n }\n if (!shouldUseTimeDampening) {\n return scroll4;\n }\n return Math.max(dampenValueByTime$1(scroll4, dragStartTime), minScroll$1);\n};\nvar getScrollOnAxis$1 = function(_ref) {\n var container = _ref.container, distanceToEdges = _ref.distanceToEdges, dragStartTime = _ref.dragStartTime, axis = _ref.axis, shouldUseTimeDampening = _ref.shouldUseTimeDampening;\n var thresholds2 = getDistanceThresholds$1(container, axis);\n var isCloserToEnd = distanceToEdges[axis.end] < distanceToEdges[axis.start];\n if (isCloserToEnd) {\n return getValue$1({\n distanceToEdge: distanceToEdges[axis.end],\n thresholds: thresholds2,\n dragStartTime,\n shouldUseTimeDampening\n });\n }\n return -1 * getValue$1({\n distanceToEdge: distanceToEdges[axis.start],\n thresholds: thresholds2,\n dragStartTime,\n shouldUseTimeDampening\n });\n};\nvar adjustForSizeLimits$1 = function(_ref) {\n var container = _ref.container, subject = _ref.subject, proposedScroll = _ref.proposedScroll;\n var isTooBigVertically = subject.height > container.height;\n var isTooBigHorizontally = subject.width > container.width;\n if (!isTooBigHorizontally && !isTooBigVertically) {\n return proposedScroll;\n }\n if (isTooBigHorizontally && isTooBigVertically) {\n return null;\n }\n return {\n x: isTooBigHorizontally ? 0 : proposedScroll.x,\n y: isTooBigVertically ? 0 : proposedScroll.y\n };\n};\nvar clean$2$1 = apply$2(function(value) {\n return value === 0 ? 0 : value;\n});\nvar getScroll$2 = function(_ref) {\n var dragStartTime = _ref.dragStartTime, container = _ref.container, subject = _ref.subject, center = _ref.center, shouldUseTimeDampening = _ref.shouldUseTimeDampening;\n var distanceToEdges = {\n top: center.y - container.top,\n right: container.right - center.x,\n bottom: container.bottom - center.y,\n left: center.x - container.left\n };\n var y2 = getScrollOnAxis$1({\n container,\n distanceToEdges,\n dragStartTime,\n axis: vertical$1,\n shouldUseTimeDampening\n });\n var x2 = getScrollOnAxis$1({\n container,\n distanceToEdges,\n dragStartTime,\n axis: horizontal$1,\n shouldUseTimeDampening\n });\n var required2 = clean$2$1({\n x: x2,\n y: y2\n });\n if (isEqual$5(required2, origin$1)) {\n return null;\n }\n var limited = adjustForSizeLimits$1({\n container,\n subject,\n proposedScroll: required2\n });\n if (!limited) {\n return null;\n }\n return isEqual$5(limited, origin$1) ? null : limited;\n};\nvar smallestSigned$1 = apply$2(function(value) {\n if (value === 0) {\n return 0;\n }\n return value > 0 ? 1 : -1;\n});\nvar getOverlap$1 = /* @__PURE__ */ function() {\n var getRemainder = function getRemainder2(target, max2) {\n if (target < 0) {\n return target;\n }\n if (target > max2) {\n return target - max2;\n }\n return 0;\n };\n return function(_ref) {\n var current = _ref.current, max2 = _ref.max, change = _ref.change;\n var targetScroll = add$3(current, change);\n var overlap = {\n x: getRemainder(targetScroll.x, max2.x),\n y: getRemainder(targetScroll.y, max2.y)\n };\n if (isEqual$5(overlap, origin$1)) {\n return null;\n }\n return overlap;\n };\n}();\nvar canPartiallyScroll$1 = function canPartiallyScroll(_ref2) {\n var rawMax = _ref2.max, current = _ref2.current, change = _ref2.change;\n var max2 = {\n x: Math.max(current.x, rawMax.x),\n y: Math.max(current.y, rawMax.y)\n };\n var smallestChange = smallestSigned$1(change);\n var overlap = getOverlap$1({\n max: max2,\n current,\n change: smallestChange\n });\n if (!overlap) {\n return true;\n }\n if (smallestChange.x !== 0 && overlap.x === 0) {\n return true;\n }\n if (smallestChange.y !== 0 && overlap.y === 0) {\n return true;\n }\n return false;\n};\nvar canScrollWindow$1 = function canScrollWindow(viewport, change) {\n return canPartiallyScroll$1({\n current: viewport.scroll.current,\n max: viewport.scroll.max,\n change\n });\n};\nvar getWindowOverlap$1 = function getWindowOverlap(viewport, change) {\n if (!canScrollWindow$1(viewport, change)) {\n return null;\n }\n var max2 = viewport.scroll.max;\n var current = viewport.scroll.current;\n return getOverlap$1({\n current,\n max: max2,\n change\n });\n};\nvar canScrollDroppable$1 = function canScrollDroppable(droppable2, change) {\n var frame = droppable2.frame;\n if (!frame) {\n return false;\n }\n return canPartiallyScroll$1({\n current: frame.scroll.current,\n max: frame.scroll.max,\n change\n });\n};\nvar getDroppableOverlap$1 = function getDroppableOverlap(droppable2, change) {\n var frame = droppable2.frame;\n if (!frame) {\n return null;\n }\n if (!canScrollDroppable$1(droppable2, change)) {\n return null;\n }\n return getOverlap$1({\n current: frame.scroll.current,\n max: frame.scroll.max,\n change\n });\n};\nvar getWindowScrollChange$1 = function(_ref) {\n var viewport = _ref.viewport, subject = _ref.subject, center = _ref.center, dragStartTime = _ref.dragStartTime, shouldUseTimeDampening = _ref.shouldUseTimeDampening;\n var scroll4 = getScroll$2({\n dragStartTime,\n container: viewport.frame,\n subject,\n center,\n shouldUseTimeDampening\n });\n return scroll4 && canScrollWindow$1(viewport, scroll4) ? scroll4 : null;\n};\nvar getDroppableScrollChange$1 = function(_ref) {\n var droppable2 = _ref.droppable, subject = _ref.subject, center = _ref.center, dragStartTime = _ref.dragStartTime, shouldUseTimeDampening = _ref.shouldUseTimeDampening;\n var frame = droppable2.frame;\n if (!frame) {\n return null;\n }\n var scroll4 = getScroll$2({\n dragStartTime,\n container: frame.pageMarginBox,\n subject,\n center,\n shouldUseTimeDampening\n });\n return scroll4 && canScrollDroppable$1(droppable2, scroll4) ? scroll4 : null;\n};\nvar scroll$1$1 = function(_ref) {\n var state = _ref.state, dragStartTime = _ref.dragStartTime, shouldUseTimeDampening = _ref.shouldUseTimeDampening, scrollWindow2 = _ref.scrollWindow, scrollDroppable2 = _ref.scrollDroppable;\n var center = state.current.page.borderBoxCenter;\n var draggable2 = state.dimensions.draggables[state.critical.draggable.id];\n var subject = draggable2.page.marginBox;\n if (state.isWindowScrollAllowed) {\n var viewport = state.viewport;\n var _change = getWindowScrollChange$1({\n dragStartTime,\n viewport,\n subject,\n center,\n shouldUseTimeDampening\n });\n if (_change) {\n scrollWindow2(_change);\n return;\n }\n }\n var droppable2 = getBestScrollableDroppable$1({\n center,\n destination: whatIsDraggedOver$1(state.impact),\n droppables: state.dimensions.droppables\n });\n if (!droppable2) {\n return;\n }\n var change = getDroppableScrollChange$1({\n dragStartTime,\n droppable: droppable2,\n subject,\n center,\n shouldUseTimeDampening\n });\n if (change) {\n scrollDroppable2(droppable2.descriptor.id, change);\n }\n};\nvar createFluidScroller$1 = function(_ref) {\n var scrollWindow2 = _ref.scrollWindow, scrollDroppable2 = _ref.scrollDroppable;\n var scheduleWindowScroll = rafSchd(scrollWindow2);\n var scheduleDroppableScroll = rafSchd(scrollDroppable2);\n var dragging = null;\n var tryScroll = function tryScroll2(state) {\n !dragging ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Cannot fluid scroll if not dragging\") : invariant() : void 0;\n var _dragging = dragging, shouldUseTimeDampening = _dragging.shouldUseTimeDampening, dragStartTime = _dragging.dragStartTime;\n scroll$1$1({\n state,\n scrollWindow: scheduleWindowScroll,\n scrollDroppable: scheduleDroppableScroll,\n dragStartTime,\n shouldUseTimeDampening\n });\n };\n var start$1$1 = function start$1$12(state) {\n start$1();\n !!dragging ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Cannot start auto scrolling when already started\") : invariant() : void 0;\n var dragStartTime = Date.now();\n var wasScrollNeeded = false;\n var fakeScrollCallback = function fakeScrollCallback2() {\n wasScrollNeeded = true;\n };\n scroll$1$1({\n state,\n dragStartTime: 0,\n shouldUseTimeDampening: false,\n scrollWindow: fakeScrollCallback,\n scrollDroppable: fakeScrollCallback\n });\n dragging = {\n dragStartTime,\n shouldUseTimeDampening: wasScrollNeeded\n };\n finish$1();\n if (wasScrollNeeded) {\n tryScroll(state);\n }\n };\n var stop = function stop2() {\n if (!dragging) {\n return;\n }\n scheduleWindowScroll.cancel();\n scheduleDroppableScroll.cancel();\n dragging = null;\n };\n return {\n start: start$1$1,\n stop,\n scroll: tryScroll\n };\n};\nvar createJumpScroller$1 = function(_ref) {\n var move4 = _ref.move, scrollDroppable2 = _ref.scrollDroppable, scrollWindow2 = _ref.scrollWindow;\n var moveByOffset = function moveByOffset2(state, offset3) {\n var client = add$3(state.current.client.selection, offset3);\n move4({\n client\n });\n };\n var scrollDroppableAsMuchAsItCan = function scrollDroppableAsMuchAsItCan2(droppable2, change) {\n if (!canScrollDroppable$1(droppable2, change)) {\n return change;\n }\n var overlap = getDroppableOverlap$1(droppable2, change);\n if (!overlap) {\n scrollDroppable2(droppable2.descriptor.id, change);\n return null;\n }\n var whatTheDroppableCanScroll = subtract$3(change, overlap);\n scrollDroppable2(droppable2.descriptor.id, whatTheDroppableCanScroll);\n var remainder = subtract$3(change, whatTheDroppableCanScroll);\n return remainder;\n };\n var scrollWindowAsMuchAsItCan = function scrollWindowAsMuchAsItCan2(isWindowScrollAllowed, viewport, change) {\n if (!isWindowScrollAllowed) {\n return change;\n }\n if (!canScrollWindow$1(viewport, change)) {\n return change;\n }\n var overlap = getWindowOverlap$1(viewport, change);\n if (!overlap) {\n scrollWindow2(change);\n return null;\n }\n var whatTheWindowCanScroll = subtract$3(change, overlap);\n scrollWindow2(whatTheWindowCanScroll);\n var remainder = subtract$3(change, whatTheWindowCanScroll);\n return remainder;\n };\n var jumpScroller = function jumpScroller2(state) {\n var request = state.scrollJumpRequest;\n if (!request) {\n return;\n }\n var destination = whatIsDraggedOver$1(state.impact);\n !destination ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Cannot perform a jump scroll when there is no destination\") : invariant() : void 0;\n var droppableRemainder = scrollDroppableAsMuchAsItCan(state.dimensions.droppables[destination], request);\n if (!droppableRemainder) {\n return;\n }\n var viewport = state.viewport;\n var windowRemainder = scrollWindowAsMuchAsItCan(state.isWindowScrollAllowed, viewport, droppableRemainder);\n if (!windowRemainder) {\n return;\n }\n moveByOffset(state, windowRemainder);\n };\n return jumpScroller;\n};\nvar createAutoScroller$1 = function(_ref) {\n var scrollDroppable2 = _ref.scrollDroppable, scrollWindow2 = _ref.scrollWindow, move4 = _ref.move;\n var fluidScroller = createFluidScroller$1({\n scrollWindow: scrollWindow2,\n scrollDroppable: scrollDroppable2\n });\n var jumpScroll = createJumpScroller$1({\n move: move4,\n scrollWindow: scrollWindow2,\n scrollDroppable: scrollDroppable2\n });\n var scroll4 = function scroll5(state) {\n if (state.phase !== \"DRAGGING\") {\n return;\n }\n if (state.movementMode === \"FLUID\") {\n fluidScroller.scroll(state);\n return;\n }\n if (!state.scrollJumpRequest) {\n return;\n }\n jumpScroll(state);\n };\n var scroller = {\n scroll: scroll4,\n start: fluidScroller.start,\n stop: fluidScroller.stop\n };\n return scroller;\n};\nvar prefix$1$1 = \"data-rbd\";\nvar dragHandle$1 = function() {\n var base2 = prefix$1$1 + \"-drag-handle\";\n return {\n base: base2,\n draggableId: base2 + \"-draggable-id\",\n contextId: base2 + \"-context-id\"\n };\n}();\nvar draggable$1 = function() {\n var base2 = prefix$1$1 + \"-draggable\";\n return {\n base: base2,\n contextId: base2 + \"-context-id\",\n id: base2 + \"-id\"\n };\n}();\nvar droppable$1 = function() {\n var base2 = prefix$1$1 + \"-droppable\";\n return {\n base: base2,\n contextId: base2 + \"-context-id\",\n id: base2 + \"-id\"\n };\n}();\nvar scrollContainer = {\n contextId: prefix$1$1 + \"-scroll-container-context-id\"\n};\nvar makeGetSelector$1 = function makeGetSelector(context) {\n return function(attribute) {\n return \"[\" + attribute + '=\"' + context + '\"]';\n };\n};\nvar getStyles$2 = function getStyles(rules, property) {\n return rules.map(function(rule) {\n var value = rule.styles[property];\n if (!value) {\n return \"\";\n }\n return rule.selector + \" { \" + value + \" }\";\n }).join(\" \");\n};\nvar noPointerEvents$1 = \"pointer-events: none;\";\nvar getStyles$1$1 = function(contextId) {\n var getSelector2 = makeGetSelector$1(contextId);\n var dragHandle$1$1 = function() {\n var grabCursor = \"\\n cursor: -webkit-grab;\\n cursor: grab;\\n \";\n return {\n selector: getSelector2(dragHandle$1.contextId),\n styles: {\n always: \"\\n -webkit-touch-callout: none;\\n -webkit-tap-highlight-color: rgba(0,0,0,0);\\n touch-action: manipulation;\\n \",\n resting: grabCursor,\n dragging: noPointerEvents$1,\n dropAnimating: grabCursor\n }\n };\n }();\n var draggable$1$1 = function() {\n var transition = \"\\n transition: \" + transitions$1.outOfTheWay + \";\\n \";\n return {\n selector: getSelector2(draggable$1.contextId),\n styles: {\n dragging: transition,\n dropAnimating: transition,\n userCancel: transition\n }\n };\n }();\n var droppable$1$1 = {\n selector: getSelector2(droppable$1.contextId),\n styles: {\n always: \"overflow-anchor: none;\"\n }\n };\n var body = {\n selector: \"body\",\n styles: {\n dragging: \"\\n cursor: grabbing;\\n cursor: -webkit-grabbing;\\n user-select: none;\\n -webkit-user-select: none;\\n -moz-user-select: none;\\n -ms-user-select: none;\\n overflow-anchor: none;\\n \"\n }\n };\n var rules = [draggable$1$1, dragHandle$1$1, droppable$1$1, body];\n return {\n always: getStyles$2(rules, \"always\"),\n resting: getStyles$2(rules, \"resting\"),\n dragging: getStyles$2(rules, \"dragging\"),\n dropAnimating: getStyles$2(rules, \"dropAnimating\"),\n userCancel: getStyles$2(rules, \"userCancel\")\n };\n};\nvar useIsomorphicLayoutEffect$2 = typeof window !== \"undefined\" && typeof window.document !== \"undefined\" && typeof window.document.createElement !== \"undefined\" ? useLayoutEffect : useEffect;\nvar getHead$1 = function getHead() {\n var head = document.querySelector(\"head\");\n !head ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Cannot find the head to append a style to\") : invariant() : void 0;\n return head;\n};\nvar createStyleEl$1 = function createStyleEl(nonce) {\n var el = document.createElement(\"style\");\n if (nonce) {\n el.setAttribute(\"nonce\", nonce);\n }\n el.type = \"text/css\";\n return el;\n};\nfunction useStyleMarshal$1(contextId, nonce) {\n var styles2 = useMemo(function() {\n return getStyles$1$1(contextId);\n }, [contextId]);\n var alwaysRef = useRef(null);\n var dynamicRef = useRef(null);\n var setDynamicStyle = useCallback(memoizeOne(function(proposed) {\n var el = dynamicRef.current;\n !el ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Cannot set dynamic style element if it is not set\") : invariant() : void 0;\n el.textContent = proposed;\n }), []);\n var setAlwaysStyle = useCallback(function(proposed) {\n var el = alwaysRef.current;\n !el ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Cannot set dynamic style element if it is not set\") : invariant() : void 0;\n el.textContent = proposed;\n }, []);\n useIsomorphicLayoutEffect$2(function() {\n !(!alwaysRef.current && !dynamicRef.current) ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"style elements already mounted\") : invariant() : void 0;\n var always = createStyleEl$1(nonce);\n var dynamic = createStyleEl$1(nonce);\n alwaysRef.current = always;\n dynamicRef.current = dynamic;\n always.setAttribute(prefix$1$1 + \"-always\", contextId);\n dynamic.setAttribute(prefix$1$1 + \"-dynamic\", contextId);\n getHead$1().appendChild(always);\n getHead$1().appendChild(dynamic);\n setAlwaysStyle(styles2.always);\n setDynamicStyle(styles2.resting);\n return function() {\n var remove = function remove2(ref2) {\n var current = ref2.current;\n !current ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Cannot unmount ref as it is not set\") : invariant() : void 0;\n getHead$1().removeChild(current);\n ref2.current = null;\n };\n remove(alwaysRef);\n remove(dynamicRef);\n };\n }, [nonce, setAlwaysStyle, setDynamicStyle, styles2.always, styles2.resting, contextId]);\n var dragging = useCallback(function() {\n return setDynamicStyle(styles2.dragging);\n }, [setDynamicStyle, styles2.dragging]);\n var dropping = useCallback(function(reason) {\n if (reason === \"DROP\") {\n setDynamicStyle(styles2.dropAnimating);\n return;\n }\n setDynamicStyle(styles2.userCancel);\n }, [setDynamicStyle, styles2.dropAnimating, styles2.userCancel]);\n var resting = useCallback(function() {\n if (!dynamicRef.current) {\n return;\n }\n setDynamicStyle(styles2.resting);\n }, [setDynamicStyle, styles2.resting]);\n var marshal = useMemo(function() {\n return {\n dragging,\n dropping,\n resting\n };\n }, [dragging, dropping, resting]);\n return marshal;\n}\nvar getWindowFromEl$1 = function(el) {\n return el && el.ownerDocument ? el.ownerDocument.defaultView : window;\n};\nfunction isHtmlElement$1(el) {\n return el instanceof getWindowFromEl$1(el).HTMLElement;\n}\nfunction findDragHandle(contextId, draggableId) {\n var selector2 = \"[\" + dragHandle$1.contextId + '=\"' + contextId + '\"]';\n var possible = toArray$1(document.querySelectorAll(selector2));\n if (!possible.length) {\n process.env.NODE_ENV !== \"production\" ? warning$1('Unable to find any drag handles in the context \"' + contextId + '\"') : void 0;\n return null;\n }\n var handle = find$2(possible, function(el) {\n return el.getAttribute(dragHandle$1.draggableId) === draggableId;\n });\n if (!handle) {\n process.env.NODE_ENV !== \"production\" ? warning$1('Unable to find drag handle with id \"' + draggableId + '\" as no handle with a matching id was found') : void 0;\n return null;\n }\n if (!isHtmlElement$1(handle)) {\n process.env.NODE_ENV !== \"production\" ? warning$1(\"drag handle needs to be a HTMLElement\") : void 0;\n return null;\n }\n return handle;\n}\nfunction useFocusMarshal(contextId) {\n var entriesRef = useRef({});\n var recordRef = useRef(null);\n var restoreFocusFrameRef = useRef(null);\n var isMountedRef = useRef(false);\n var register = useCallback(function register2(id, focus2) {\n var entry = {\n id,\n focus: focus2\n };\n entriesRef.current[id] = entry;\n return function unregister() {\n var entries = entriesRef.current;\n var current = entries[id];\n if (current !== entry) {\n delete entries[id];\n }\n };\n }, []);\n var tryGiveFocus = useCallback(function tryGiveFocus2(tryGiveFocusTo) {\n var handle = findDragHandle(contextId, tryGiveFocusTo);\n if (handle && handle !== document.activeElement) {\n handle.focus();\n }\n }, [contextId]);\n var tryShiftRecord = useCallback(function tryShiftRecord2(previous, redirectTo) {\n if (recordRef.current === previous) {\n recordRef.current = redirectTo;\n }\n }, []);\n var tryRestoreFocusRecorded = useCallback(function tryRestoreFocusRecorded2() {\n if (restoreFocusFrameRef.current) {\n return;\n }\n if (!isMountedRef.current) {\n return;\n }\n restoreFocusFrameRef.current = requestAnimationFrame(function() {\n restoreFocusFrameRef.current = null;\n var record = recordRef.current;\n if (record) {\n tryGiveFocus(record);\n }\n });\n }, [tryGiveFocus]);\n var tryRecordFocus = useCallback(function tryRecordFocus2(id) {\n recordRef.current = null;\n var focused = document.activeElement;\n if (!focused) {\n return;\n }\n if (focused.getAttribute(dragHandle$1.draggableId) !== id) {\n return;\n }\n recordRef.current = id;\n }, []);\n useIsomorphicLayoutEffect$2(function() {\n isMountedRef.current = true;\n return function clearFrameOnUnmount() {\n isMountedRef.current = false;\n var frameId = restoreFocusFrameRef.current;\n if (frameId) {\n cancelAnimationFrame(frameId);\n }\n };\n }, []);\n var marshal = useMemo(function() {\n return {\n register,\n tryRecordFocus,\n tryRestoreFocusRecorded,\n tryShiftRecord\n };\n }, [register, tryRecordFocus, tryRestoreFocusRecorded, tryShiftRecord]);\n return marshal;\n}\nfunction createRegistry() {\n var entries = {\n draggables: {},\n droppables: {}\n };\n var subscribers = [];\n function subscribe(cb) {\n subscribers.push(cb);\n return function unsubscribe() {\n var index2 = subscribers.indexOf(cb);\n if (index2 === -1) {\n return;\n }\n subscribers.splice(index2, 1);\n };\n }\n function notify2(event) {\n if (subscribers.length) {\n subscribers.forEach(function(cb) {\n return cb(event);\n });\n }\n }\n function findDraggableById(id) {\n return entries.draggables[id] || null;\n }\n function getDraggableById(id) {\n var entry = findDraggableById(id);\n !entry ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Cannot find draggable entry with id [\" + id + \"]\") : invariant() : void 0;\n return entry;\n }\n var draggableAPI = {\n register: function register(entry) {\n entries.draggables[entry.descriptor.id] = entry;\n notify2({\n type: \"ADDITION\",\n value: entry\n });\n },\n update: function update2(entry, last) {\n var current = entries.draggables[last.descriptor.id];\n if (!current) {\n return;\n }\n if (current.uniqueId !== entry.uniqueId) {\n return;\n }\n delete entries.draggables[last.descriptor.id];\n entries.draggables[entry.descriptor.id] = entry;\n },\n unregister: function unregister(entry) {\n var draggableId = entry.descriptor.id;\n var current = findDraggableById(draggableId);\n if (!current) {\n return;\n }\n if (entry.uniqueId !== current.uniqueId) {\n return;\n }\n delete entries.draggables[draggableId];\n notify2({\n type: \"REMOVAL\",\n value: entry\n });\n },\n getById: getDraggableById,\n findById: findDraggableById,\n exists: function exists(id) {\n return Boolean(findDraggableById(id));\n },\n getAllByType: function getAllByType(type) {\n return values$3(entries.draggables).filter(function(entry) {\n return entry.descriptor.type === type;\n });\n }\n };\n function findDroppableById(id) {\n return entries.droppables[id] || null;\n }\n function getDroppableById(id) {\n var entry = findDroppableById(id);\n !entry ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Cannot find droppable entry with id [\" + id + \"]\") : invariant() : void 0;\n return entry;\n }\n var droppableAPI = {\n register: function register(entry) {\n entries.droppables[entry.descriptor.id] = entry;\n },\n unregister: function unregister(entry) {\n var current = findDroppableById(entry.descriptor.id);\n if (!current) {\n return;\n }\n if (entry.uniqueId !== current.uniqueId) {\n return;\n }\n delete entries.droppables[entry.descriptor.id];\n },\n getById: getDroppableById,\n findById: findDroppableById,\n exists: function exists(id) {\n return Boolean(findDroppableById(id));\n },\n getAllByType: function getAllByType(type) {\n return values$3(entries.droppables).filter(function(entry) {\n return entry.descriptor.type === type;\n });\n }\n };\n function clean7() {\n entries.draggables = {};\n entries.droppables = {};\n subscribers.length = 0;\n }\n return {\n draggable: draggableAPI,\n droppable: droppableAPI,\n subscribe,\n clean: clean7\n };\n}\nfunction useRegistry() {\n var registry = useMemo(createRegistry, []);\n useEffect(function() {\n return function unmount() {\n requestAnimationFrame(registry.clean);\n };\n }, [registry]);\n return registry;\n}\nvar StoreContext$1 = React__default.createContext(null);\nvar getBodyElement$1 = function() {\n var body = document.body;\n !body ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Cannot find document.body\") : invariant() : void 0;\n return body;\n};\nvar visuallyHidden$1 = {\n position: \"absolute\",\n width: \"1px\",\n height: \"1px\",\n margin: \"-1px\",\n border: \"0\",\n padding: \"0\",\n overflow: \"hidden\",\n clip: \"rect(0 0 0 0)\",\n \"clip-path\": \"inset(100%)\"\n};\nvar getId$1 = function getId(contextId) {\n return \"rbd-announcement-\" + contextId;\n};\nfunction useAnnouncer$1(contextId) {\n var id = useMemo(function() {\n return getId$1(contextId);\n }, [contextId]);\n var ref2 = useRef(null);\n useEffect(function setup() {\n var el = document.createElement(\"div\");\n ref2.current = el;\n el.id = id;\n el.setAttribute(\"aria-live\", \"assertive\");\n el.setAttribute(\"aria-atomic\", \"true\");\n _extends$4(el.style, visuallyHidden$1);\n getBodyElement$1().appendChild(el);\n return function cleanup() {\n setTimeout(function remove() {\n var body = getBodyElement$1();\n if (body.contains(el)) {\n body.removeChild(el);\n }\n if (el === ref2.current) {\n ref2.current = null;\n }\n });\n };\n }, [id]);\n var announce = useCallback(function(message2) {\n var el = ref2.current;\n if (el) {\n el.textContent = message2;\n return;\n }\n process.env.NODE_ENV !== \"production\" ? warning$1('\\n A screen reader message was trying to be announced but it was unable to do so.\\n This can occur if you unmount your in your onDragEnd.\\n Consider calling provided.announce() before the unmount so that the instruction will\\n not be lost for users relying on a screen reader.\\n\\n Message not passed to screen reader:\\n\\n \"' + message2 + '\"\\n ') : void 0;\n }, []);\n return announce;\n}\nvar count$1 = 0;\nvar defaults$2 = {\n separator: \"::\"\n};\nfunction useUniqueId(prefix2, options) {\n if (options === void 0) {\n options = defaults$2;\n }\n return useMemo(function() {\n return \"\" + prefix2 + options.separator + count$1++;\n }, [options.separator, prefix2]);\n}\nfunction getElementId(_ref) {\n var contextId = _ref.contextId, uniqueId = _ref.uniqueId;\n return \"rbd-hidden-text-\" + contextId + \"-\" + uniqueId;\n}\nfunction useHiddenTextElement(_ref2) {\n var contextId = _ref2.contextId, text = _ref2.text;\n var uniqueId = useUniqueId(\"hidden-text\", {\n separator: \"-\"\n });\n var id = useMemo(function() {\n return getElementId({\n contextId,\n uniqueId\n });\n }, [uniqueId, contextId]);\n useEffect(function mount() {\n var el = document.createElement(\"div\");\n el.id = id;\n el.textContent = text;\n el.style.display = \"none\";\n getBodyElement$1().appendChild(el);\n return function unmount() {\n var body = getBodyElement$1();\n if (body.contains(el)) {\n body.removeChild(el);\n }\n };\n }, [id, text]);\n return id;\n}\nvar AppContext$1 = React__default.createContext(null);\nvar peerDependencies$1 = {\n react: \"^16.8.5 || ^17.0.0 || ^18.0.0\",\n \"react-dom\": \"^16.8.5 || ^17.0.0 || ^18.0.0\"\n};\nvar semver$1 = /(\\d+)\\.(\\d+)\\.(\\d+)/;\nvar getVersion$1 = function getVersion(value) {\n var result = semver$1.exec(value);\n !(result != null) ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Unable to parse React version \" + value) : invariant() : void 0;\n var major = Number(result[1]);\n var minor = Number(result[2]);\n var patch4 = Number(result[3]);\n return {\n major,\n minor,\n patch: patch4,\n raw: value\n };\n};\nvar isSatisfied$1 = function isSatisfied(expected, actual) {\n if (actual.major > expected.major) {\n return true;\n }\n if (actual.major < expected.major) {\n return false;\n }\n if (actual.minor > expected.minor) {\n return true;\n }\n if (actual.minor < expected.minor) {\n return false;\n }\n return actual.patch >= expected.patch;\n};\nvar checkReactVersion$1 = function(peerDepValue, actualValue) {\n var peerDep = getVersion$1(peerDepValue);\n var actual = getVersion$1(actualValue);\n if (isSatisfied$1(peerDep, actual)) {\n return;\n }\n process.env.NODE_ENV !== \"production\" ? warning$1(\"\\n React version: [\" + actual.raw + \"]\\n does not satisfy expected peer dependency version: [\" + peerDep.raw + \"]\\n\\n This can result in run time bugs, and even fatal crashes\\n \") : void 0;\n};\nvar suffix$1 = \"\\n We expect a html5 doctype: \\n This is to ensure consistent browser layout and measurement\\n\\n More information: https://github.com/atlassian/react-beautiful-dnd/blob/master/docs/guides/doctype.md\\n\";\nvar checkDoctype$1 = function(doc2) {\n var doctype = doc2.doctype;\n if (!doctype) {\n process.env.NODE_ENV !== \"production\" ? warning$1(\"\\n No found.\\n\\n \" + suffix$1 + \"\\n \") : void 0;\n return;\n }\n if (doctype.name.toLowerCase() !== \"html\") {\n process.env.NODE_ENV !== \"production\" ? warning$1(\"\\n Unexpected found: (\" + doctype.name + \")\\n\\n \" + suffix$1 + \"\\n \") : void 0;\n }\n if (doctype.publicId !== \"\") {\n process.env.NODE_ENV !== \"production\" ? warning$1(\"\\n Unexpected publicId found: (\" + doctype.publicId + \")\\n A html5 doctype does not have a publicId\\n\\n \" + suffix$1 + \"\\n \") : void 0;\n }\n};\nfunction useDev(useHook) {\n if (process.env.NODE_ENV !== \"production\") {\n useHook();\n }\n}\nfunction useDevSetupWarning(fn2, inputs) {\n useDev(function() {\n useEffect(function() {\n try {\n fn2();\n } catch (e) {\n error$1(\"\\n A setup problem was encountered.\\n\\n > \" + e.message + \"\\n \");\n }\n }, inputs);\n });\n}\nfunction useStartupValidation$1() {\n useDevSetupWarning(function() {\n checkReactVersion$1(peerDependencies$1.react, React__default.version);\n checkDoctype$1(document);\n }, []);\n}\nfunction usePrevious$1(current) {\n var ref2 = useRef(current);\n useEffect(function() {\n ref2.current = current;\n });\n return ref2;\n}\nfunction create$1() {\n var lock = null;\n function isClaimed() {\n return Boolean(lock);\n }\n function isActive2(value) {\n return value === lock;\n }\n function claim(abandon) {\n !!lock ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Cannot claim lock as it is already claimed\") : invariant() : void 0;\n var newLock = {\n abandon\n };\n lock = newLock;\n return newLock;\n }\n function release() {\n !lock ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Cannot release lock when there is no lock\") : invariant() : void 0;\n lock = null;\n }\n function tryAbandon() {\n if (lock) {\n lock.abandon();\n release();\n }\n }\n return {\n isClaimed,\n isActive: isActive2,\n claim,\n release,\n tryAbandon\n };\n}\nvar tab$1 = 9;\nvar enter$2 = 13;\nvar escape$3 = 27;\nvar space$1 = 32;\nvar pageUp$1 = 33;\nvar pageDown$1 = 34;\nvar end$1 = 35;\nvar home$1 = 36;\nvar arrowLeft$1 = 37;\nvar arrowUp$1 = 38;\nvar arrowRight$1 = 39;\nvar arrowDown$1 = 40;\nvar _preventedKeys$1;\nvar preventedKeys$1 = (_preventedKeys$1 = {}, _preventedKeys$1[enter$2] = true, _preventedKeys$1[tab$1] = true, _preventedKeys$1);\nvar preventStandardKeyEvents$1 = function(event) {\n if (preventedKeys$1[event.keyCode]) {\n event.preventDefault();\n }\n};\nvar supportedEventName$1 = function() {\n var base2 = \"visibilitychange\";\n if (typeof document === \"undefined\") {\n return base2;\n }\n var candidates = [base2, \"ms\" + base2, \"webkit\" + base2, \"moz\" + base2, \"o\" + base2];\n var supported = find$2(candidates, function(eventName) {\n return \"on\" + eventName in document;\n });\n return supported || base2;\n}();\nvar primaryButton$1 = 0;\nvar sloppyClickThreshold$1 = 5;\nfunction isSloppyClickThresholdExceeded$1(original, current) {\n return Math.abs(current.x - original.x) >= sloppyClickThreshold$1 || Math.abs(current.y - original.y) >= sloppyClickThreshold$1;\n}\nvar idle$1$1 = {\n type: \"IDLE\"\n};\nfunction getCaptureBindings(_ref) {\n var cancel = _ref.cancel, completed = _ref.completed, getPhase = _ref.getPhase, setPhase = _ref.setPhase;\n return [{\n eventName: \"mousemove\",\n fn: function fn2(event) {\n var button = event.button, clientX = event.clientX, clientY = event.clientY;\n if (button !== primaryButton$1) {\n return;\n }\n var point = {\n x: clientX,\n y: clientY\n };\n var phase = getPhase();\n if (phase.type === \"DRAGGING\") {\n event.preventDefault();\n phase.actions.move(point);\n return;\n }\n !(phase.type === \"PENDING\") ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Cannot be IDLE\") : invariant() : void 0;\n var pending = phase.point;\n if (!isSloppyClickThresholdExceeded$1(pending, point)) {\n return;\n }\n event.preventDefault();\n var actions = phase.actions.fluidLift(point);\n setPhase({\n type: \"DRAGGING\",\n actions\n });\n }\n }, {\n eventName: \"mouseup\",\n fn: function fn2(event) {\n var phase = getPhase();\n if (phase.type !== \"DRAGGING\") {\n cancel();\n return;\n }\n event.preventDefault();\n phase.actions.drop({\n shouldBlockNextClick: true\n });\n completed();\n }\n }, {\n eventName: \"mousedown\",\n fn: function fn2(event) {\n if (getPhase().type === \"DRAGGING\") {\n event.preventDefault();\n }\n cancel();\n }\n }, {\n eventName: \"keydown\",\n fn: function fn2(event) {\n var phase = getPhase();\n if (phase.type === \"PENDING\") {\n cancel();\n return;\n }\n if (event.keyCode === escape$3) {\n event.preventDefault();\n cancel();\n return;\n }\n preventStandardKeyEvents$1(event);\n }\n }, {\n eventName: \"resize\",\n fn: cancel\n }, {\n eventName: \"scroll\",\n options: {\n passive: true,\n capture: false\n },\n fn: function fn2() {\n if (getPhase().type === \"PENDING\") {\n cancel();\n }\n }\n }, {\n eventName: \"webkitmouseforcedown\",\n fn: function fn2(event) {\n var phase = getPhase();\n !(phase.type !== \"IDLE\") ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Unexpected phase\") : invariant() : void 0;\n if (phase.actions.shouldRespectForcePress()) {\n cancel();\n return;\n }\n event.preventDefault();\n }\n }, {\n eventName: supportedEventName$1,\n fn: cancel\n }];\n}\nfunction useMouseSensor$1(api) {\n var phaseRef = useRef(idle$1$1);\n var unbindEventsRef = useRef(noop$5);\n var startCaptureBinding = useMemo(function() {\n return {\n eventName: \"mousedown\",\n fn: function onMouseDown(event) {\n if (event.defaultPrevented) {\n return;\n }\n if (event.button !== primaryButton$1) {\n return;\n }\n if (event.ctrlKey || event.metaKey || event.shiftKey || event.altKey) {\n return;\n }\n var draggableId = api.findClosestDraggableId(event);\n if (!draggableId) {\n return;\n }\n var actions = api.tryGetLock(draggableId, stop, {\n sourceEvent: event\n });\n if (!actions) {\n return;\n }\n event.preventDefault();\n var point = {\n x: event.clientX,\n y: event.clientY\n };\n unbindEventsRef.current();\n startPendingDrag(actions, point);\n }\n };\n }, [api]);\n var preventForcePressBinding = useMemo(function() {\n return {\n eventName: \"webkitmouseforcewillbegin\",\n fn: function fn2(event) {\n if (event.defaultPrevented) {\n return;\n }\n var id = api.findClosestDraggableId(event);\n if (!id) {\n return;\n }\n var options = api.findOptionsForDraggable(id);\n if (!options) {\n return;\n }\n if (options.shouldRespectForcePress) {\n return;\n }\n if (!api.canGetLock(id)) {\n return;\n }\n event.preventDefault();\n }\n };\n }, [api]);\n var listenForCapture = useCallback(function listenForCapture2() {\n var options = {\n passive: false,\n capture: true\n };\n unbindEventsRef.current = bindEvents$1(window, [preventForcePressBinding, startCaptureBinding], options);\n }, [preventForcePressBinding, startCaptureBinding]);\n var stop = useCallback(function() {\n var current = phaseRef.current;\n if (current.type === \"IDLE\") {\n return;\n }\n phaseRef.current = idle$1$1;\n unbindEventsRef.current();\n listenForCapture();\n }, [listenForCapture]);\n var cancel = useCallback(function() {\n var phase = phaseRef.current;\n stop();\n if (phase.type === \"DRAGGING\") {\n phase.actions.cancel({\n shouldBlockNextClick: true\n });\n }\n if (phase.type === \"PENDING\") {\n phase.actions.abort();\n }\n }, [stop]);\n var bindCapturingEvents = useCallback(function bindCapturingEvents2() {\n var options = {\n capture: true,\n passive: false\n };\n var bindings = getCaptureBindings({\n cancel,\n completed: stop,\n getPhase: function getPhase() {\n return phaseRef.current;\n },\n setPhase: function setPhase(phase) {\n phaseRef.current = phase;\n }\n });\n unbindEventsRef.current = bindEvents$1(window, bindings, options);\n }, [cancel, stop]);\n var startPendingDrag = useCallback(function startPendingDrag2(actions, point) {\n !(phaseRef.current.type === \"IDLE\") ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Expected to move from IDLE to PENDING drag\") : invariant() : void 0;\n phaseRef.current = {\n type: \"PENDING\",\n point,\n actions\n };\n bindCapturingEvents();\n }, [bindCapturingEvents]);\n useIsomorphicLayoutEffect$2(function mount() {\n listenForCapture();\n return function unmount() {\n unbindEventsRef.current();\n };\n }, [listenForCapture]);\n}\nvar _scrollJumpKeys$1;\nfunction noop$1$2() {\n}\nvar scrollJumpKeys$1 = (_scrollJumpKeys$1 = {}, _scrollJumpKeys$1[pageDown$1] = true, _scrollJumpKeys$1[pageUp$1] = true, _scrollJumpKeys$1[home$1] = true, _scrollJumpKeys$1[end$1] = true, _scrollJumpKeys$1);\nfunction getDraggingBindings(actions, stop) {\n function cancel() {\n stop();\n actions.cancel();\n }\n function drop8() {\n stop();\n actions.drop();\n }\n return [{\n eventName: \"keydown\",\n fn: function fn2(event) {\n if (event.keyCode === escape$3) {\n event.preventDefault();\n cancel();\n return;\n }\n if (event.keyCode === space$1) {\n event.preventDefault();\n drop8();\n return;\n }\n if (event.keyCode === arrowDown$1) {\n event.preventDefault();\n actions.moveDown();\n return;\n }\n if (event.keyCode === arrowUp$1) {\n event.preventDefault();\n actions.moveUp();\n return;\n }\n if (event.keyCode === arrowRight$1) {\n event.preventDefault();\n actions.moveRight();\n return;\n }\n if (event.keyCode === arrowLeft$1) {\n event.preventDefault();\n actions.moveLeft();\n return;\n }\n if (scrollJumpKeys$1[event.keyCode]) {\n event.preventDefault();\n return;\n }\n preventStandardKeyEvents$1(event);\n }\n }, {\n eventName: \"mousedown\",\n fn: cancel\n }, {\n eventName: \"mouseup\",\n fn: cancel\n }, {\n eventName: \"click\",\n fn: cancel\n }, {\n eventName: \"touchstart\",\n fn: cancel\n }, {\n eventName: \"resize\",\n fn: cancel\n }, {\n eventName: \"wheel\",\n fn: cancel,\n options: {\n passive: true\n }\n }, {\n eventName: supportedEventName$1,\n fn: cancel\n }];\n}\nfunction useKeyboardSensor$1(api) {\n var unbindEventsRef = useRef(noop$1$2);\n var startCaptureBinding = useMemo(function() {\n return {\n eventName: \"keydown\",\n fn: function onKeyDown(event) {\n if (event.defaultPrevented) {\n return;\n }\n if (event.keyCode !== space$1) {\n return;\n }\n var draggableId = api.findClosestDraggableId(event);\n if (!draggableId) {\n return;\n }\n var preDrag = api.tryGetLock(draggableId, stop, {\n sourceEvent: event\n });\n if (!preDrag) {\n return;\n }\n event.preventDefault();\n var isCapturing = true;\n var actions = preDrag.snapLift();\n unbindEventsRef.current();\n function stop() {\n !isCapturing ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Cannot stop capturing a keyboard drag when not capturing\") : invariant() : void 0;\n isCapturing = false;\n unbindEventsRef.current();\n listenForCapture();\n }\n unbindEventsRef.current = bindEvents$1(window, getDraggingBindings(actions, stop), {\n capture: true,\n passive: false\n });\n }\n };\n }, [api]);\n var listenForCapture = useCallback(function tryStartCapture() {\n var options = {\n passive: false,\n capture: true\n };\n unbindEventsRef.current = bindEvents$1(window, [startCaptureBinding], options);\n }, [startCaptureBinding]);\n useIsomorphicLayoutEffect$2(function mount() {\n listenForCapture();\n return function unmount() {\n unbindEventsRef.current();\n };\n }, [listenForCapture]);\n}\nvar idle$2 = {\n type: \"IDLE\"\n};\nvar timeForLongPress$1 = 120;\nvar forcePressThreshold$1 = 0.15;\nfunction getWindowBindings(_ref) {\n var cancel = _ref.cancel, getPhase = _ref.getPhase;\n return [{\n eventName: \"orientationchange\",\n fn: cancel\n }, {\n eventName: \"resize\",\n fn: cancel\n }, {\n eventName: \"contextmenu\",\n fn: function fn2(event) {\n event.preventDefault();\n }\n }, {\n eventName: \"keydown\",\n fn: function fn2(event) {\n if (getPhase().type !== \"DRAGGING\") {\n cancel();\n return;\n }\n if (event.keyCode === escape$3) {\n event.preventDefault();\n }\n cancel();\n }\n }, {\n eventName: supportedEventName$1,\n fn: cancel\n }];\n}\nfunction getHandleBindings(_ref2) {\n var cancel = _ref2.cancel, completed = _ref2.completed, getPhase = _ref2.getPhase;\n return [{\n eventName: \"touchmove\",\n options: {\n capture: false\n },\n fn: function fn2(event) {\n var phase = getPhase();\n if (phase.type !== \"DRAGGING\") {\n cancel();\n return;\n }\n phase.hasMoved = true;\n var _event$touches$ = event.touches[0], clientX = _event$touches$.clientX, clientY = _event$touches$.clientY;\n var point = {\n x: clientX,\n y: clientY\n };\n event.preventDefault();\n phase.actions.move(point);\n }\n }, {\n eventName: \"touchend\",\n fn: function fn2(event) {\n var phase = getPhase();\n if (phase.type !== \"DRAGGING\") {\n cancel();\n return;\n }\n event.preventDefault();\n phase.actions.drop({\n shouldBlockNextClick: true\n });\n completed();\n }\n }, {\n eventName: \"touchcancel\",\n fn: function fn2(event) {\n if (getPhase().type !== \"DRAGGING\") {\n cancel();\n return;\n }\n event.preventDefault();\n cancel();\n }\n }, {\n eventName: \"touchforcechange\",\n fn: function fn2(event) {\n var phase = getPhase();\n !(phase.type !== \"IDLE\") ? process.env.NODE_ENV !== \"production\" ? invariant() : invariant() : void 0;\n var touch = event.touches[0];\n if (!touch) {\n return;\n }\n var isForcePress = touch.force >= forcePressThreshold$1;\n if (!isForcePress) {\n return;\n }\n var shouldRespect = phase.actions.shouldRespectForcePress();\n if (phase.type === \"PENDING\") {\n if (shouldRespect) {\n cancel();\n }\n return;\n }\n if (shouldRespect) {\n if (phase.hasMoved) {\n event.preventDefault();\n return;\n }\n cancel();\n return;\n }\n event.preventDefault();\n }\n }, {\n eventName: supportedEventName$1,\n fn: cancel\n }];\n}\nfunction useTouchSensor$1(api) {\n var phaseRef = useRef(idle$2);\n var unbindEventsRef = useRef(noop$5);\n var getPhase = useCallback(function getPhase2() {\n return phaseRef.current;\n }, []);\n var setPhase = useCallback(function setPhase2(phase) {\n phaseRef.current = phase;\n }, []);\n var startCaptureBinding = useMemo(function() {\n return {\n eventName: \"touchstart\",\n fn: function onTouchStart(event) {\n if (event.defaultPrevented) {\n return;\n }\n var draggableId = api.findClosestDraggableId(event);\n if (!draggableId) {\n return;\n }\n var actions = api.tryGetLock(draggableId, stop, {\n sourceEvent: event\n });\n if (!actions) {\n return;\n }\n var touch = event.touches[0];\n var clientX = touch.clientX, clientY = touch.clientY;\n var point = {\n x: clientX,\n y: clientY\n };\n unbindEventsRef.current();\n startPendingDrag(actions, point);\n }\n };\n }, [api]);\n var listenForCapture = useCallback(function listenForCapture2() {\n var options = {\n capture: true,\n passive: false\n };\n unbindEventsRef.current = bindEvents$1(window, [startCaptureBinding], options);\n }, [startCaptureBinding]);\n var stop = useCallback(function() {\n var current = phaseRef.current;\n if (current.type === \"IDLE\") {\n return;\n }\n if (current.type === \"PENDING\") {\n clearTimeout(current.longPressTimerId);\n }\n setPhase(idle$2);\n unbindEventsRef.current();\n listenForCapture();\n }, [listenForCapture, setPhase]);\n var cancel = useCallback(function() {\n var phase = phaseRef.current;\n stop();\n if (phase.type === \"DRAGGING\") {\n phase.actions.cancel({\n shouldBlockNextClick: true\n });\n }\n if (phase.type === \"PENDING\") {\n phase.actions.abort();\n }\n }, [stop]);\n var bindCapturingEvents = useCallback(function bindCapturingEvents2() {\n var options = {\n capture: true,\n passive: false\n };\n var args = {\n cancel,\n completed: stop,\n getPhase\n };\n var unbindTarget = bindEvents$1(window, getHandleBindings(args), options);\n var unbindWindow = bindEvents$1(window, getWindowBindings(args), options);\n unbindEventsRef.current = function unbindAll() {\n unbindTarget();\n unbindWindow();\n };\n }, [cancel, getPhase, stop]);\n var startDragging = useCallback(function startDragging2() {\n var phase = getPhase();\n !(phase.type === \"PENDING\") ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Cannot start dragging from phase \" + phase.type) : invariant() : void 0;\n var actions = phase.actions.fluidLift(phase.point);\n setPhase({\n type: \"DRAGGING\",\n actions,\n hasMoved: false\n });\n }, [getPhase, setPhase]);\n var startPendingDrag = useCallback(function startPendingDrag2(actions, point) {\n !(getPhase().type === \"IDLE\") ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Expected to move from IDLE to PENDING drag\") : invariant() : void 0;\n var longPressTimerId = setTimeout(startDragging, timeForLongPress$1);\n setPhase({\n type: \"PENDING\",\n point,\n actions,\n longPressTimerId\n });\n bindCapturingEvents();\n }, [bindCapturingEvents, getPhase, setPhase, startDragging]);\n useIsomorphicLayoutEffect$2(function mount() {\n listenForCapture();\n return function unmount() {\n unbindEventsRef.current();\n var phase = getPhase();\n if (phase.type === \"PENDING\") {\n clearTimeout(phase.longPressTimerId);\n setPhase(idle$2);\n }\n };\n }, [getPhase, listenForCapture, setPhase]);\n useIsomorphicLayoutEffect$2(function webkitHack() {\n var unbind = bindEvents$1(window, [{\n eventName: \"touchmove\",\n fn: function fn2() {\n },\n options: {\n capture: false,\n passive: false\n }\n }]);\n return unbind;\n }, []);\n}\nfunction useValidateSensorHooks(sensorHooks) {\n useDev(function() {\n var previousRef = usePrevious$1(sensorHooks);\n useDevSetupWarning(function() {\n !(previousRef.current.length === sensorHooks.length) ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Cannot change the amount of sensor hooks after mounting\") : invariant(false) : void 0;\n });\n });\n}\nvar interactiveTagNames$1 = {\n input: true,\n button: true,\n textarea: true,\n select: true,\n option: true,\n optgroup: true,\n video: true,\n audio: true\n};\nfunction isAnInteractiveElement$1(parent, current) {\n if (current == null) {\n return false;\n }\n var hasAnInteractiveTag = Boolean(interactiveTagNames$1[current.tagName.toLowerCase()]);\n if (hasAnInteractiveTag) {\n return true;\n }\n var attribute = current.getAttribute(\"contenteditable\");\n if (attribute === \"true\" || attribute === \"\") {\n return true;\n }\n if (current === parent) {\n return false;\n }\n return isAnInteractiveElement$1(parent, current.parentElement);\n}\nfunction isEventInInteractiveElement(draggable2, event) {\n var target = event.target;\n if (!isHtmlElement$1(target)) {\n return false;\n }\n return isAnInteractiveElement$1(draggable2, target);\n}\nvar getBorderBoxCenterPosition$1 = function(el) {\n return getRect(el.getBoundingClientRect()).center;\n};\nfunction isElement$2(el) {\n return el instanceof getWindowFromEl$1(el).Element;\n}\nvar supportedMatchesName = function() {\n var base2 = \"matches\";\n if (typeof document === \"undefined\") {\n return base2;\n }\n var candidates = [base2, \"msMatchesSelector\", \"webkitMatchesSelector\"];\n var value = find$2(candidates, function(name) {\n return name in Element.prototype;\n });\n return value || base2;\n}();\nfunction closestPonyfill(el, selector2) {\n if (el == null) {\n return null;\n }\n if (el[supportedMatchesName](selector2)) {\n return el;\n }\n return closestPonyfill(el.parentElement, selector2);\n}\nfunction closest$1$1(el, selector2) {\n if (el.closest) {\n return el.closest(selector2);\n }\n return closestPonyfill(el, selector2);\n}\nfunction getSelector(contextId) {\n return \"[\" + dragHandle$1.contextId + '=\"' + contextId + '\"]';\n}\nfunction findClosestDragHandleFromEvent(contextId, event) {\n var target = event.target;\n if (!isElement$2(target)) {\n process.env.NODE_ENV !== \"production\" ? warning$1(\"event.target must be a Element\") : void 0;\n return null;\n }\n var selector2 = getSelector(contextId);\n var handle = closest$1$1(target, selector2);\n if (!handle) {\n return null;\n }\n if (!isHtmlElement$1(handle)) {\n process.env.NODE_ENV !== \"production\" ? warning$1(\"drag handle must be a HTMLElement\") : void 0;\n return null;\n }\n return handle;\n}\nfunction tryGetClosestDraggableIdFromEvent(contextId, event) {\n var handle = findClosestDragHandleFromEvent(contextId, event);\n if (!handle) {\n return null;\n }\n return handle.getAttribute(dragHandle$1.draggableId);\n}\nfunction findDraggable(contextId, draggableId) {\n var selector2 = \"[\" + draggable$1.contextId + '=\"' + contextId + '\"]';\n var possible = toArray$1(document.querySelectorAll(selector2));\n var draggable$1$1 = find$2(possible, function(el) {\n return el.getAttribute(draggable$1.id) === draggableId;\n });\n if (!draggable$1$1) {\n return null;\n }\n if (!isHtmlElement$1(draggable$1$1)) {\n process.env.NODE_ENV !== \"production\" ? warning$1(\"Draggable element is not a HTMLElement\") : void 0;\n return null;\n }\n return draggable$1$1;\n}\nfunction preventDefault(event) {\n event.preventDefault();\n}\nfunction _isActive(_ref) {\n var expected = _ref.expected, phase = _ref.phase, isLockActive = _ref.isLockActive, shouldWarn = _ref.shouldWarn;\n if (!isLockActive()) {\n if (shouldWarn) {\n process.env.NODE_ENV !== \"production\" ? warning$1(\"\\n Cannot perform action.\\n The sensor no longer has an action lock.\\n\\n Tips:\\n\\n - Throw away your action handlers when forceStop() is called\\n - Check actions.isActive() if you really need to\\n \") : void 0;\n }\n return false;\n }\n if (expected !== phase) {\n if (shouldWarn) {\n process.env.NODE_ENV !== \"production\" ? warning$1(\"\\n Cannot perform action.\\n The actions you used belong to an outdated phase\\n\\n Current phase: \" + expected + \"\\n You called an action from outdated phase: \" + phase + \"\\n\\n Tips:\\n\\n - Do not use preDragActions actions after calling preDragActions.lift()\\n \") : void 0;\n }\n return false;\n }\n return true;\n}\nfunction canStart(_ref2) {\n var lockAPI = _ref2.lockAPI, store = _ref2.store, registry = _ref2.registry, draggableId = _ref2.draggableId;\n if (lockAPI.isClaimed()) {\n return false;\n }\n var entry = registry.draggable.findById(draggableId);\n if (!entry) {\n process.env.NODE_ENV !== \"production\" ? warning$1(\"Unable to find draggable with id: \" + draggableId) : void 0;\n return false;\n }\n if (!entry.options.isEnabled) {\n return false;\n }\n if (!canStartDrag$1(store.getState(), draggableId)) {\n return false;\n }\n return true;\n}\nfunction tryStart(_ref3) {\n var lockAPI = _ref3.lockAPI, contextId = _ref3.contextId, store = _ref3.store, registry = _ref3.registry, draggableId = _ref3.draggableId, forceSensorStop = _ref3.forceSensorStop, sourceEvent = _ref3.sourceEvent;\n var shouldStart = canStart({\n lockAPI,\n store,\n registry,\n draggableId\n });\n if (!shouldStart) {\n return null;\n }\n var entry = registry.draggable.getById(draggableId);\n var el = findDraggable(contextId, entry.descriptor.id);\n if (!el) {\n process.env.NODE_ENV !== \"production\" ? warning$1(\"Unable to find draggable element with id: \" + draggableId) : void 0;\n return null;\n }\n if (sourceEvent && !entry.options.canDragInteractiveElements && isEventInInteractiveElement(el, sourceEvent)) {\n return null;\n }\n var lock = lockAPI.claim(forceSensorStop || noop$5);\n var phase = \"PRE_DRAG\";\n function getShouldRespectForcePress() {\n return entry.options.shouldRespectForcePress;\n }\n function isLockActive() {\n return lockAPI.isActive(lock);\n }\n function tryDispatch(expected, getAction) {\n if (_isActive({\n expected,\n phase,\n isLockActive,\n shouldWarn: true\n })) {\n store.dispatch(getAction());\n }\n }\n var tryDispatchWhenDragging = tryDispatch.bind(null, \"DRAGGING\");\n function lift$12(args) {\n function completed() {\n lockAPI.release();\n phase = \"COMPLETED\";\n }\n if (phase !== \"PRE_DRAG\") {\n completed();\n !(phase === \"PRE_DRAG\") ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Cannot lift in phase \" + phase) : invariant() : void 0;\n }\n store.dispatch(lift$4(args.liftActionArgs));\n phase = \"DRAGGING\";\n function finish4(reason, options) {\n if (options === void 0) {\n options = {\n shouldBlockNextClick: false\n };\n }\n args.cleanup();\n if (options.shouldBlockNextClick) {\n var unbind = bindEvents$1(window, [{\n eventName: \"click\",\n fn: preventDefault,\n options: {\n once: true,\n passive: false,\n capture: true\n }\n }]);\n setTimeout(unbind);\n }\n completed();\n store.dispatch(drop$2({\n reason\n }));\n }\n return _extends$4({\n isActive: function isActive2() {\n return _isActive({\n expected: \"DRAGGING\",\n phase,\n isLockActive,\n shouldWarn: false\n });\n },\n shouldRespectForcePress: getShouldRespectForcePress,\n drop: function drop8(options) {\n return finish4(\"DROP\", options);\n },\n cancel: function cancel(options) {\n return finish4(\"CANCEL\", options);\n }\n }, args.actions);\n }\n function fluidLift(clientSelection) {\n var move$1$1 = rafSchd(function(client) {\n tryDispatchWhenDragging(function() {\n return move$1({\n client\n });\n });\n });\n var api = lift$12({\n liftActionArgs: {\n id: draggableId,\n clientSelection,\n movementMode: \"FLUID\"\n },\n cleanup: function cleanup() {\n return move$1$1.cancel();\n },\n actions: {\n move: move$1$1\n }\n });\n return _extends$4({}, api, {\n move: move$1$1\n });\n }\n function snapLift() {\n var actions = {\n moveUp: function moveUp$1$1() {\n return tryDispatchWhenDragging(moveUp$1);\n },\n moveRight: function moveRight$1$1() {\n return tryDispatchWhenDragging(moveRight$1);\n },\n moveDown: function moveDown$1$1() {\n return tryDispatchWhenDragging(moveDown$1);\n },\n moveLeft: function moveLeft$1$1() {\n return tryDispatchWhenDragging(moveLeft$1);\n }\n };\n return lift$12({\n liftActionArgs: {\n id: draggableId,\n clientSelection: getBorderBoxCenterPosition$1(el),\n movementMode: \"SNAP\"\n },\n cleanup: noop$5,\n actions\n });\n }\n function abortPreDrag() {\n var shouldRelease = _isActive({\n expected: \"PRE_DRAG\",\n phase,\n isLockActive,\n shouldWarn: true\n });\n if (shouldRelease) {\n lockAPI.release();\n }\n }\n var preDrag = {\n isActive: function isActive2() {\n return _isActive({\n expected: \"PRE_DRAG\",\n phase,\n isLockActive,\n shouldWarn: false\n });\n },\n shouldRespectForcePress: getShouldRespectForcePress,\n fluidLift,\n snapLift,\n abort: abortPreDrag\n };\n return preDrag;\n}\nvar defaultSensors = [useMouseSensor$1, useKeyboardSensor$1, useTouchSensor$1];\nfunction useSensorMarshal(_ref4) {\n var contextId = _ref4.contextId, store = _ref4.store, registry = _ref4.registry, customSensors = _ref4.customSensors, enableDefaultSensors = _ref4.enableDefaultSensors;\n var useSensors = [].concat(enableDefaultSensors ? defaultSensors : [], customSensors || []);\n var lockAPI = useState(function() {\n return create$1();\n })[0];\n var tryAbandonLock = useCallback(function tryAbandonLock2(previous, current) {\n if (previous.isDragging && !current.isDragging) {\n lockAPI.tryAbandon();\n }\n }, [lockAPI]);\n useIsomorphicLayoutEffect$2(function listenToStore() {\n var previous = store.getState();\n var unsubscribe = store.subscribe(function() {\n var current = store.getState();\n tryAbandonLock(previous, current);\n previous = current;\n });\n return unsubscribe;\n }, [lockAPI, store, tryAbandonLock]);\n useIsomorphicLayoutEffect$2(function() {\n return lockAPI.tryAbandon;\n }, [lockAPI.tryAbandon]);\n var canGetLock = useCallback(function(draggableId) {\n return canStart({\n lockAPI,\n registry,\n store,\n draggableId\n });\n }, [lockAPI, registry, store]);\n var tryGetLock = useCallback(function(draggableId, forceStop, options) {\n return tryStart({\n lockAPI,\n registry,\n contextId,\n store,\n draggableId,\n forceSensorStop: forceStop,\n sourceEvent: options && options.sourceEvent ? options.sourceEvent : null\n });\n }, [contextId, lockAPI, registry, store]);\n var findClosestDraggableId = useCallback(function(event) {\n return tryGetClosestDraggableIdFromEvent(contextId, event);\n }, [contextId]);\n var findOptionsForDraggable = useCallback(function(id) {\n var entry = registry.draggable.findById(id);\n return entry ? entry.options : null;\n }, [registry.draggable]);\n var tryReleaseLock = useCallback(function tryReleaseLock2() {\n if (!lockAPI.isClaimed()) {\n return;\n }\n lockAPI.tryAbandon();\n if (store.getState().phase !== \"IDLE\") {\n store.dispatch(flush());\n }\n }, [lockAPI, store]);\n var isLockClaimed = useCallback(lockAPI.isClaimed, [lockAPI]);\n var api = useMemo(function() {\n return {\n canGetLock,\n tryGetLock,\n findClosestDraggableId,\n findOptionsForDraggable,\n tryReleaseLock,\n isLockClaimed\n };\n }, [canGetLock, tryGetLock, findClosestDraggableId, findOptionsForDraggable, tryReleaseLock, isLockClaimed]);\n useValidateSensorHooks(useSensors);\n for (var i = 0; i < useSensors.length; i++) {\n useSensors[i](api);\n }\n}\nvar createResponders$1 = function createResponders(props) {\n return {\n onBeforeCapture: props.onBeforeCapture,\n onBeforeDragStart: props.onBeforeDragStart,\n onDragStart: props.onDragStart,\n onDragEnd: props.onDragEnd,\n onDragUpdate: props.onDragUpdate\n };\n};\nfunction getStore$1(lazyRef) {\n !lazyRef.current ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Could not find store from lazy ref\") : invariant() : void 0;\n return lazyRef.current;\n}\nfunction App$1(props) {\n var contextId = props.contextId, setCallbacks = props.setCallbacks, sensors = props.sensors, nonce = props.nonce, dragHandleUsageInstructions2 = props.dragHandleUsageInstructions;\n var lazyStoreRef = useRef(null);\n useStartupValidation$1();\n var lastPropsRef = usePrevious$1(props);\n var getResponders = useCallback(function() {\n return createResponders$1(lastPropsRef.current);\n }, [lastPropsRef]);\n var announce = useAnnouncer$1(contextId);\n var dragHandleUsageInstructionsId = useHiddenTextElement({\n contextId,\n text: dragHandleUsageInstructions2\n });\n var styleMarshal = useStyleMarshal$1(contextId, nonce);\n var lazyDispatch = useCallback(function(action) {\n getStore$1(lazyStoreRef).dispatch(action);\n }, []);\n var marshalCallbacks = useMemo(function() {\n return bindActionCreators$1({\n publishWhileDragging: publishWhileDragging$2,\n updateDroppableScroll: updateDroppableScroll$1,\n updateDroppableIsEnabled: updateDroppableIsEnabled$1,\n updateDroppableIsCombineEnabled: updateDroppableIsCombineEnabled$1,\n collectionStarting: collectionStarting$1\n }, lazyDispatch);\n }, [lazyDispatch]);\n var registry = useRegistry();\n var dimensionMarshal = useMemo(function() {\n return createDimensionMarshal$1(registry, marshalCallbacks);\n }, [registry, marshalCallbacks]);\n var autoScroller = useMemo(function() {\n return createAutoScroller$1(_extends$4({\n scrollWindow: scrollWindow$1,\n scrollDroppable: dimensionMarshal.scrollDroppable\n }, bindActionCreators$1({\n move: move$1\n }, lazyDispatch)));\n }, [dimensionMarshal.scrollDroppable, lazyDispatch]);\n var focusMarshal = useFocusMarshal(contextId);\n var store = useMemo(function() {\n return createStore$1({\n announce,\n autoScroller,\n dimensionMarshal,\n focusMarshal,\n getResponders,\n styleMarshal\n });\n }, [announce, autoScroller, dimensionMarshal, focusMarshal, getResponders, styleMarshal]);\n if (process.env.NODE_ENV !== \"production\") {\n if (lazyStoreRef.current && lazyStoreRef.current !== store) {\n process.env.NODE_ENV !== \"production\" ? warning$1(\"unexpected store change\") : void 0;\n }\n }\n lazyStoreRef.current = store;\n var tryResetStore = useCallback(function() {\n var current = getStore$1(lazyStoreRef);\n var state = current.getState();\n if (state.phase !== \"IDLE\") {\n current.dispatch(flush());\n }\n }, []);\n var isDragging = useCallback(function() {\n var state = getStore$1(lazyStoreRef).getState();\n return state.isDragging || state.phase === \"DROP_ANIMATING\";\n }, []);\n var appCallbacks = useMemo(function() {\n return {\n isDragging,\n tryAbort: tryResetStore\n };\n }, [isDragging, tryResetStore]);\n setCallbacks(appCallbacks);\n var getCanLift = useCallback(function(id) {\n return canStartDrag$1(getStore$1(lazyStoreRef).getState(), id);\n }, []);\n var getIsMovementAllowed = useCallback(function() {\n return isMovementAllowed$1(getStore$1(lazyStoreRef).getState());\n }, []);\n var appContext = useMemo(function() {\n return {\n marshal: dimensionMarshal,\n focus: focusMarshal,\n contextId,\n canLift: getCanLift,\n isMovementAllowed: getIsMovementAllowed,\n dragHandleUsageInstructionsId,\n registry\n };\n }, [contextId, dimensionMarshal, dragHandleUsageInstructionsId, focusMarshal, getCanLift, getIsMovementAllowed, registry]);\n useSensorMarshal({\n contextId,\n store,\n registry,\n customSensors: sensors,\n enableDefaultSensors: props.enableDefaultSensors !== false\n });\n useEffect(function() {\n return tryResetStore;\n }, [tryResetStore]);\n return React__default.createElement(AppContext$1.Provider, {\n value: appContext\n }, React__default.createElement(Provider, {\n context: StoreContext$1,\n store\n }, props.children));\n}\nvar count$1$1 = 0;\nfunction useInstanceCount() {\n return useMemo(function() {\n return \"\" + count$1$1++;\n }, []);\n}\nfunction DragDropContext$1(props) {\n var contextId = useInstanceCount();\n var dragHandleUsageInstructions2 = props.dragHandleUsageInstructions || preset$1.dragHandleUsageInstructions;\n return React__default.createElement(ErrorBoundary$1, null, function(setCallbacks) {\n return React__default.createElement(App$1, {\n nonce: props.nonce,\n contextId,\n setCallbacks,\n dragHandleUsageInstructions: dragHandleUsageInstructions2,\n enableDefaultSensors: props.enableDefaultSensors,\n sensors: props.sensors,\n onBeforeCapture: props.onBeforeCapture,\n onBeforeDragStart: props.onBeforeDragStart,\n onDragStart: props.onDragStart,\n onDragUpdate: props.onDragUpdate,\n onDragEnd: props.onDragEnd\n }, props.children);\n });\n}\nvar isEqual$1$2 = function isEqual2(base2) {\n return function(value) {\n return base2 === value;\n };\n};\nvar isScroll$1 = isEqual$1$2(\"scroll\");\nvar isAuto$1 = isEqual$1$2(\"auto\");\nvar isVisible$1$1 = isEqual$1$2(\"visible\");\nvar isEither$1 = function isEither(overflow, fn2) {\n return fn2(overflow.overflowX) || fn2(overflow.overflowY);\n};\nvar isBoth$1 = function isBoth(overflow, fn2) {\n return fn2(overflow.overflowX) && fn2(overflow.overflowY);\n};\nvar isElementScrollable$1 = function isElementScrollable(el) {\n var style2 = window.getComputedStyle(el);\n var overflow = {\n overflowX: style2.overflowX,\n overflowY: style2.overflowY\n };\n return isEither$1(overflow, isScroll$1) || isEither$1(overflow, isAuto$1);\n};\nvar isBodyScrollable$1 = function isBodyScrollable() {\n if (process.env.NODE_ENV === \"production\") {\n return false;\n }\n var body = getBodyElement$1();\n var html2 = document.documentElement;\n !html2 ? process.env.NODE_ENV !== \"production\" ? invariant() : invariant() : void 0;\n if (!isElementScrollable$1(body)) {\n return false;\n }\n var htmlStyle = window.getComputedStyle(html2);\n var htmlOverflow = {\n overflowX: htmlStyle.overflowX,\n overflowY: htmlStyle.overflowY\n };\n if (isBoth$1(htmlOverflow, isVisible$1$1)) {\n return false;\n }\n process.env.NODE_ENV !== \"production\" ? warning$1(\"\\n We have detected that your element might be a scroll container.\\n We have found no reliable way of detecting whether the element is a scroll container.\\n Under most circumstances a scroll bar will be on the element (document.documentElement)\\n\\n Because we cannot determine if the is a scroll container, and generally it is not one,\\n we will be treating the as *not* a scroll container\\n\\n More information: https://github.com/atlassian/react-beautiful-dnd/blob/master/docs/guides/how-we-detect-scroll-containers.md\\n \") : void 0;\n return false;\n};\nvar getClosestScrollable$1 = function getClosestScrollable(el) {\n if (el == null) {\n return null;\n }\n if (el === document.body) {\n return isBodyScrollable$1() ? el : null;\n }\n if (el === document.documentElement) {\n return null;\n }\n if (!isElementScrollable$1(el)) {\n return getClosestScrollable(el.parentElement);\n }\n return el;\n};\nvar checkForNestedScrollContainers$1 = function(scrollable) {\n if (!scrollable) {\n return;\n }\n var anotherScrollParent = getClosestScrollable$1(scrollable.parentElement);\n if (!anotherScrollParent) {\n return;\n }\n process.env.NODE_ENV !== \"production\" ? warning$1(\"\\n Droppable: unsupported nested scroll container detected.\\n A Droppable can only have one scroll parent (which can be itself)\\n Nested scroll containers are currently not supported.\\n\\n We hope to support nested scroll containers soon: https://github.com/atlassian/react-beautiful-dnd/issues/131\\n \") : void 0;\n};\nvar getScroll$1$1 = function(el) {\n return {\n x: el.scrollLeft,\n y: el.scrollTop\n };\n};\nvar getIsFixed$1 = function getIsFixed(el) {\n if (!el) {\n return false;\n }\n var style2 = window.getComputedStyle(el);\n if (style2.position === \"fixed\") {\n return true;\n }\n return getIsFixed(el.parentElement);\n};\nvar getEnv$1 = function(start4) {\n var closestScrollable = getClosestScrollable$1(start4);\n var isFixedOnPage = getIsFixed$1(start4);\n return {\n closestScrollable,\n isFixedOnPage\n };\n};\nvar getDroppableDimension$1 = function(_ref) {\n var descriptor = _ref.descriptor, isEnabled = _ref.isEnabled, isCombineEnabled = _ref.isCombineEnabled, isFixedOnPage = _ref.isFixedOnPage, direction = _ref.direction, client = _ref.client, page = _ref.page, closest4 = _ref.closest;\n var frame = function() {\n if (!closest4) {\n return null;\n }\n var scrollSize = closest4.scrollSize, frameClient = closest4.client;\n var maxScroll = getMaxScroll$1({\n scrollHeight: scrollSize.scrollHeight,\n scrollWidth: scrollSize.scrollWidth,\n height: frameClient.paddingBox.height,\n width: frameClient.paddingBox.width\n });\n return {\n pageMarginBox: closest4.page.marginBox,\n frameClient,\n scrollSize,\n shouldClipSubject: closest4.shouldClipSubject,\n scroll: {\n initial: closest4.scroll,\n current: closest4.scroll,\n max: maxScroll,\n diff: {\n value: origin$1,\n displacement: origin$1\n }\n }\n };\n }();\n var axis = direction === \"vertical\" ? vertical$1 : horizontal$1;\n var subject = getSubject$1({\n page,\n withPlaceholder: null,\n axis,\n frame\n });\n var dimension = {\n descriptor,\n isCombineEnabled,\n isFixedOnPage,\n axis,\n isEnabled,\n client,\n page,\n frame,\n subject\n };\n return dimension;\n};\nvar getClient$1 = function getClient(targetRef, closestScrollable) {\n var base2 = getBox(targetRef);\n if (!closestScrollable) {\n return base2;\n }\n if (targetRef !== closestScrollable) {\n return base2;\n }\n var top = base2.paddingBox.top - closestScrollable.scrollTop;\n var left = base2.paddingBox.left - closestScrollable.scrollLeft;\n var bottom = top + closestScrollable.scrollHeight;\n var right = left + closestScrollable.scrollWidth;\n var paddingBox = {\n top,\n right,\n bottom,\n left\n };\n var borderBox = expand(paddingBox, base2.border);\n var client = createBox({\n borderBox,\n margin: base2.margin,\n border: base2.border,\n padding: base2.padding\n });\n return client;\n};\nvar getDimension$2 = function(_ref) {\n var ref2 = _ref.ref, descriptor = _ref.descriptor, env = _ref.env, windowScroll = _ref.windowScroll, direction = _ref.direction, isDropDisabled = _ref.isDropDisabled, isCombineEnabled = _ref.isCombineEnabled, shouldClipSubject = _ref.shouldClipSubject;\n var closestScrollable = env.closestScrollable;\n var client = getClient$1(ref2, closestScrollable);\n var page = withScroll(client, windowScroll);\n var closest4 = function() {\n if (!closestScrollable) {\n return null;\n }\n var frameClient = getBox(closestScrollable);\n var scrollSize = {\n scrollHeight: closestScrollable.scrollHeight,\n scrollWidth: closestScrollable.scrollWidth\n };\n return {\n client: frameClient,\n page: withScroll(frameClient, windowScroll),\n scroll: getScroll$1$1(closestScrollable),\n scrollSize,\n shouldClipSubject\n };\n }();\n var dimension = getDroppableDimension$1({\n descriptor,\n isEnabled: !isDropDisabled,\n isCombineEnabled,\n isFixedOnPage: env.isFixedOnPage,\n direction,\n client,\n page,\n closest: closest4\n });\n return dimension;\n};\nvar immediate$1 = {\n passive: false\n};\nvar delayed$1 = {\n passive: true\n};\nvar getListenerOptions$1 = function(options) {\n return options.shouldPublishImmediately ? immediate$1 : delayed$1;\n};\nfunction useRequiredContext$1(Context) {\n var result = useContext(Context);\n !result ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Could not find required context\") : invariant() : void 0;\n return result;\n}\nvar getClosestScrollableFromDrag$1 = function getClosestScrollableFromDrag(dragging) {\n return dragging && dragging.env.closestScrollable || null;\n};\nfunction useDroppablePublisher(args) {\n var whileDraggingRef = useRef(null);\n var appContext = useRequiredContext$1(AppContext$1);\n var uniqueId = useUniqueId(\"droppable\");\n var registry = appContext.registry, marshal = appContext.marshal;\n var previousRef = usePrevious$1(args);\n var descriptor = useMemo(function() {\n return {\n id: args.droppableId,\n type: args.type,\n mode: args.mode\n };\n }, [args.droppableId, args.mode, args.type]);\n var publishedDescriptorRef = useRef(descriptor);\n var memoizedUpdateScroll = useMemo(function() {\n return memoizeOne(function(x2, y2) {\n !whileDraggingRef.current ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Can only update scroll when dragging\") : invariant() : void 0;\n var scroll5 = {\n x: x2,\n y: y2\n };\n marshal.updateDroppableScroll(descriptor.id, scroll5);\n });\n }, [descriptor.id, marshal]);\n var getClosestScroll = useCallback(function() {\n var dragging = whileDraggingRef.current;\n if (!dragging || !dragging.env.closestScrollable) {\n return origin$1;\n }\n return getScroll$1$1(dragging.env.closestScrollable);\n }, []);\n var updateScroll = useCallback(function() {\n var scroll5 = getClosestScroll();\n memoizedUpdateScroll(scroll5.x, scroll5.y);\n }, [getClosestScroll, memoizedUpdateScroll]);\n var scheduleScrollUpdate = useMemo(function() {\n return rafSchd(updateScroll);\n }, [updateScroll]);\n var onClosestScroll = useCallback(function() {\n var dragging = whileDraggingRef.current;\n var closest4 = getClosestScrollableFromDrag$1(dragging);\n !(dragging && closest4) ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Could not find scroll options while scrolling\") : invariant() : void 0;\n var options = dragging.scrollOptions;\n if (options.shouldPublishImmediately) {\n updateScroll();\n return;\n }\n scheduleScrollUpdate();\n }, [scheduleScrollUpdate, updateScroll]);\n var getDimensionAndWatchScroll = useCallback(function(windowScroll, options) {\n !!whileDraggingRef.current ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Cannot collect a droppable while a drag is occurring\") : invariant() : void 0;\n var previous = previousRef.current;\n var ref2 = previous.getDroppableRef();\n !ref2 ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Cannot collect without a droppable ref\") : invariant() : void 0;\n var env = getEnv$1(ref2);\n var dragging = {\n ref: ref2,\n descriptor,\n env,\n scrollOptions: options\n };\n whileDraggingRef.current = dragging;\n var dimension = getDimension$2({\n ref: ref2,\n descriptor,\n env,\n windowScroll,\n direction: previous.direction,\n isDropDisabled: previous.isDropDisabled,\n isCombineEnabled: previous.isCombineEnabled,\n shouldClipSubject: !previous.ignoreContainerClipping\n });\n var scrollable = env.closestScrollable;\n if (scrollable) {\n scrollable.setAttribute(scrollContainer.contextId, appContext.contextId);\n scrollable.addEventListener(\"scroll\", onClosestScroll, getListenerOptions$1(dragging.scrollOptions));\n if (process.env.NODE_ENV !== \"production\") {\n checkForNestedScrollContainers$1(scrollable);\n }\n }\n return dimension;\n }, [appContext.contextId, descriptor, onClosestScroll, previousRef]);\n var getScrollWhileDragging = useCallback(function() {\n var dragging = whileDraggingRef.current;\n var closest4 = getClosestScrollableFromDrag$1(dragging);\n !(dragging && closest4) ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Can only recollect Droppable client for Droppables that have a scroll container\") : invariant() : void 0;\n return getScroll$1$1(closest4);\n }, []);\n var dragStopped = useCallback(function() {\n var dragging = whileDraggingRef.current;\n !dragging ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Cannot stop drag when no active drag\") : invariant() : void 0;\n var closest4 = getClosestScrollableFromDrag$1(dragging);\n whileDraggingRef.current = null;\n if (!closest4) {\n return;\n }\n scheduleScrollUpdate.cancel();\n closest4.removeAttribute(scrollContainer.contextId);\n closest4.removeEventListener(\"scroll\", onClosestScroll, getListenerOptions$1(dragging.scrollOptions));\n }, [onClosestScroll, scheduleScrollUpdate]);\n var scroll4 = useCallback(function(change) {\n var dragging = whileDraggingRef.current;\n !dragging ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Cannot scroll when there is no drag\") : invariant() : void 0;\n var closest4 = getClosestScrollableFromDrag$1(dragging);\n !closest4 ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Cannot scroll a droppable with no closest scrollable\") : invariant() : void 0;\n closest4.scrollTop += change.y;\n closest4.scrollLeft += change.x;\n }, []);\n var callbacks = useMemo(function() {\n return {\n getDimensionAndWatchScroll,\n getScrollWhileDragging,\n dragStopped,\n scroll: scroll4\n };\n }, [dragStopped, getDimensionAndWatchScroll, getScrollWhileDragging, scroll4]);\n var entry = useMemo(function() {\n return {\n uniqueId,\n descriptor,\n callbacks\n };\n }, [callbacks, descriptor, uniqueId]);\n useIsomorphicLayoutEffect$2(function() {\n publishedDescriptorRef.current = entry.descriptor;\n registry.droppable.register(entry);\n return function() {\n if (whileDraggingRef.current) {\n process.env.NODE_ENV !== \"production\" ? warning$1(\"Unsupported: changing the droppableId or type of a Droppable during a drag\") : void 0;\n dragStopped();\n }\n registry.droppable.unregister(entry);\n };\n }, [callbacks, descriptor, dragStopped, entry, marshal, registry.droppable]);\n useIsomorphicLayoutEffect$2(function() {\n if (!whileDraggingRef.current) {\n return;\n }\n marshal.updateDroppableIsEnabled(publishedDescriptorRef.current.id, !args.isDropDisabled);\n }, [args.isDropDisabled, marshal]);\n useIsomorphicLayoutEffect$2(function() {\n if (!whileDraggingRef.current) {\n return;\n }\n marshal.updateDroppableIsCombineEnabled(publishedDescriptorRef.current.id, args.isCombineEnabled);\n }, [args.isCombineEnabled, marshal]);\n}\nfunction noop$2$2() {\n}\nvar empty$2 = {\n width: 0,\n height: 0,\n margin: noSpacing$1\n};\nvar getSize$1 = function getSize(_ref) {\n var isAnimatingOpenOnMount = _ref.isAnimatingOpenOnMount, placeholder2 = _ref.placeholder, animate = _ref.animate;\n if (isAnimatingOpenOnMount) {\n return empty$2;\n }\n if (animate === \"close\") {\n return empty$2;\n }\n return {\n height: placeholder2.client.borderBox.height,\n width: placeholder2.client.borderBox.width,\n margin: placeholder2.client.margin\n };\n};\nvar getStyle$2 = function getStyle(_ref2) {\n var isAnimatingOpenOnMount = _ref2.isAnimatingOpenOnMount, placeholder2 = _ref2.placeholder, animate = _ref2.animate;\n var size = getSize$1({\n isAnimatingOpenOnMount,\n placeholder: placeholder2,\n animate\n });\n return {\n display: placeholder2.display,\n boxSizing: \"border-box\",\n width: size.width,\n height: size.height,\n marginTop: size.margin.top,\n marginRight: size.margin.right,\n marginBottom: size.margin.bottom,\n marginLeft: size.margin.left,\n flexShrink: \"0\",\n flexGrow: \"0\",\n pointerEvents: \"none\",\n transition: animate !== \"none\" ? transitions$1.placeholder : null\n };\n};\nfunction Placeholder$2(props) {\n var animateOpenTimerRef = useRef(null);\n var tryClearAnimateOpenTimer = useCallback(function() {\n if (!animateOpenTimerRef.current) {\n return;\n }\n clearTimeout(animateOpenTimerRef.current);\n animateOpenTimerRef.current = null;\n }, []);\n var animate = props.animate, onTransitionEnd = props.onTransitionEnd, onClose = props.onClose, contextId = props.contextId;\n var _useState = useState(props.animate === \"open\"), isAnimatingOpenOnMount = _useState[0], setIsAnimatingOpenOnMount = _useState[1];\n useEffect(function() {\n if (!isAnimatingOpenOnMount) {\n return noop$2$2;\n }\n if (animate !== \"open\") {\n tryClearAnimateOpenTimer();\n setIsAnimatingOpenOnMount(false);\n return noop$2$2;\n }\n if (animateOpenTimerRef.current) {\n return noop$2$2;\n }\n animateOpenTimerRef.current = setTimeout(function() {\n animateOpenTimerRef.current = null;\n setIsAnimatingOpenOnMount(false);\n });\n return tryClearAnimateOpenTimer;\n }, [animate, isAnimatingOpenOnMount, tryClearAnimateOpenTimer]);\n var onSizeChangeEnd = useCallback(function(event) {\n if (event.propertyName !== \"height\") {\n return;\n }\n onTransitionEnd();\n if (animate === \"close\") {\n onClose();\n }\n }, [animate, onClose, onTransitionEnd]);\n var style2 = getStyle$2({\n isAnimatingOpenOnMount,\n animate: props.animate,\n placeholder: props.placeholder\n });\n return React__default.createElement(props.placeholder.tagName, {\n style: style2,\n \"data-rbd-placeholder-context-id\": contextId,\n onTransitionEnd: onSizeChangeEnd,\n ref: props.innerRef\n });\n}\nvar Placeholder$1$2 = React__default.memo(Placeholder$2);\nvar DroppableContext$1 = React__default.createContext(null);\nfunction checkIsValidInnerRef$1(el) {\n !(el && isHtmlElement$1(el)) ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"\\n provided.innerRef has not been provided with a HTMLElement.\\n\\n You can find a guide on using the innerRef callback functions at:\\n https://github.com/atlassian/react-beautiful-dnd/blob/master/docs/guides/using-inner-ref.md\\n \") : invariant() : void 0;\n}\nfunction isBoolean$1(value) {\n return typeof value === \"boolean\";\n}\nfunction runChecks(args, checks) {\n checks.forEach(function(check) {\n return check(args);\n });\n}\nvar shared = [function required(_ref) {\n var props = _ref.props;\n !props.droppableId ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"A Droppable requires a droppableId prop\") : invariant() : void 0;\n !(typeof props.droppableId === \"string\") ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"A Droppable requires a [string] droppableId. Provided: [\" + typeof props.droppableId + \"]\") : invariant() : void 0;\n}, function _boolean(_ref2) {\n var props = _ref2.props;\n !isBoolean$1(props.isDropDisabled) ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"isDropDisabled must be a boolean\") : invariant() : void 0;\n !isBoolean$1(props.isCombineEnabled) ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"isCombineEnabled must be a boolean\") : invariant() : void 0;\n !isBoolean$1(props.ignoreContainerClipping) ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"ignoreContainerClipping must be a boolean\") : invariant() : void 0;\n}, function ref(_ref3) {\n var getDroppableRef = _ref3.getDroppableRef;\n checkIsValidInnerRef$1(getDroppableRef());\n}];\nvar standard = [function placeholder(_ref4) {\n var props = _ref4.props, getPlaceholderRef = _ref4.getPlaceholderRef;\n if (!props.placeholder) {\n return;\n }\n var ref2 = getPlaceholderRef();\n if (ref2) {\n return;\n }\n process.env.NODE_ENV !== \"production\" ? warning$1('\\n Droppable setup issue [droppableId: \"' + props.droppableId + '\"]:\\n DroppableProvided > placeholder could not be found.\\n\\n Please be sure to add the {provided.placeholder} React Node as a child of your Droppable.\\n More information: https://github.com/atlassian/react-beautiful-dnd/blob/master/docs/api/droppable.md\\n ') : void 0;\n}];\nvar virtual = [function hasClone(_ref5) {\n var props = _ref5.props;\n !props.renderClone ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Must provide a clone render function (renderClone) for virtual lists\") : invariant() : void 0;\n}, function hasNoPlaceholder(_ref6) {\n var getPlaceholderRef = _ref6.getPlaceholderRef;\n !!getPlaceholderRef() ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Expected virtual list to not have a placeholder\") : invariant() : void 0;\n}];\nfunction useValidation$3(args) {\n useDevSetupWarning(function() {\n runChecks(args, shared);\n if (args.props.mode === \"standard\") {\n runChecks(args, standard);\n }\n if (args.props.mode === \"virtual\") {\n runChecks(args, virtual);\n }\n });\n}\nvar AnimateInOut$1 = function(_React$PureComponent) {\n _inheritsLoose$2(AnimateInOut2, _React$PureComponent);\n function AnimateInOut2() {\n var _this;\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _React$PureComponent.call.apply(_React$PureComponent, [this].concat(args)) || this;\n _this.state = {\n isVisible: Boolean(_this.props.on),\n data: _this.props.on,\n animate: _this.props.shouldAnimate && _this.props.on ? \"open\" : \"none\"\n };\n _this.onClose = function() {\n if (_this.state.animate !== \"close\") {\n return;\n }\n _this.setState({\n isVisible: false\n });\n };\n return _this;\n }\n AnimateInOut2.getDerivedStateFromProps = function getDerivedStateFromProps(props, state) {\n if (!props.shouldAnimate) {\n return {\n isVisible: Boolean(props.on),\n data: props.on,\n animate: \"none\"\n };\n }\n if (props.on) {\n return {\n isVisible: true,\n data: props.on,\n animate: \"open\"\n };\n }\n if (state.isVisible) {\n return {\n isVisible: true,\n data: state.data,\n animate: \"close\"\n };\n }\n return {\n isVisible: false,\n animate: \"close\",\n data: null\n };\n };\n var _proto = AnimateInOut2.prototype;\n _proto.render = function render() {\n if (!this.state.isVisible) {\n return null;\n }\n var provided = {\n onClose: this.onClose,\n data: this.state.data,\n animate: this.state.animate\n };\n return this.props.children(provided);\n };\n return AnimateInOut2;\n}(React__default.PureComponent);\nvar zIndexOptions$1 = {\n dragging: 5e3,\n dropAnimating: 4500\n};\nvar getDraggingTransition$1 = function getDraggingTransition(shouldAnimateDragMovement, dropping) {\n if (dropping) {\n return transitions$1.drop(dropping.duration);\n }\n if (shouldAnimateDragMovement) {\n return transitions$1.snap;\n }\n return transitions$1.fluid;\n};\nvar getDraggingOpacity$1 = function getDraggingOpacity(isCombining, isDropAnimating) {\n if (!isCombining) {\n return null;\n }\n return isDropAnimating ? combine$2.opacity.drop : combine$2.opacity.combining;\n};\nvar getShouldDraggingAnimate$1 = function getShouldDraggingAnimate(dragging) {\n if (dragging.forceShouldAnimate != null) {\n return dragging.forceShouldAnimate;\n }\n return dragging.mode === \"SNAP\";\n};\nfunction getDraggingStyle$1(dragging) {\n var dimension = dragging.dimension;\n var box = dimension.client;\n var offset3 = dragging.offset, combineWith = dragging.combineWith, dropping = dragging.dropping;\n var isCombining = Boolean(combineWith);\n var shouldAnimate = getShouldDraggingAnimate$1(dragging);\n var isDropAnimating = Boolean(dropping);\n var transform = isDropAnimating ? transforms$1.drop(offset3, isCombining) : transforms$1.moveTo(offset3);\n var style2 = {\n position: \"fixed\",\n top: box.marginBox.top,\n left: box.marginBox.left,\n boxSizing: \"border-box\",\n width: box.borderBox.width,\n height: box.borderBox.height,\n transition: getDraggingTransition$1(shouldAnimate, dropping),\n transform,\n opacity: getDraggingOpacity$1(isCombining, isDropAnimating),\n zIndex: isDropAnimating ? zIndexOptions$1.dropAnimating : zIndexOptions$1.dragging,\n pointerEvents: \"none\"\n };\n return style2;\n}\nfunction getSecondaryStyle$1(secondary) {\n return {\n transform: transforms$1.moveTo(secondary.offset),\n transition: secondary.shouldAnimateDisplacement ? null : \"none\"\n };\n}\nfunction getStyle$1$1(mapped) {\n return mapped.type === \"DRAGGING\" ? getDraggingStyle$1(mapped) : getSecondaryStyle$1(mapped);\n}\nfunction getDimension$1$1(descriptor, el, windowScroll) {\n if (windowScroll === void 0) {\n windowScroll = origin$1;\n }\n var computedStyles = window.getComputedStyle(el);\n var borderBox = el.getBoundingClientRect();\n var client = calculateBox(borderBox, computedStyles);\n var page = withScroll(client, windowScroll);\n var placeholder2 = {\n client,\n tagName: el.tagName.toLowerCase(),\n display: computedStyles.display\n };\n var displaceBy = {\n x: client.marginBox.width,\n y: client.marginBox.height\n };\n var dimension = {\n descriptor,\n placeholder: placeholder2,\n displaceBy,\n client,\n page\n };\n return dimension;\n}\nfunction useDraggablePublisher(args) {\n var uniqueId = useUniqueId(\"draggable\");\n var descriptor = args.descriptor, registry = args.registry, getDraggableRef = args.getDraggableRef, canDragInteractiveElements = args.canDragInteractiveElements, shouldRespectForcePress = args.shouldRespectForcePress, isEnabled = args.isEnabled;\n var options = useMemo(function() {\n return {\n canDragInteractiveElements,\n shouldRespectForcePress,\n isEnabled\n };\n }, [canDragInteractiveElements, isEnabled, shouldRespectForcePress]);\n var getDimension2 = useCallback(function(windowScroll) {\n var el = getDraggableRef();\n !el ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Cannot get dimension when no ref is set\") : invariant() : void 0;\n return getDimension$1$1(descriptor, el, windowScroll);\n }, [descriptor, getDraggableRef]);\n var entry = useMemo(function() {\n return {\n uniqueId,\n descriptor,\n options,\n getDimension: getDimension2\n };\n }, [descriptor, getDimension2, options, uniqueId]);\n var publishedRef = useRef(entry);\n var isFirstPublishRef = useRef(true);\n useIsomorphicLayoutEffect$2(function() {\n registry.draggable.register(publishedRef.current);\n return function() {\n return registry.draggable.unregister(publishedRef.current);\n };\n }, [registry.draggable]);\n useIsomorphicLayoutEffect$2(function() {\n if (isFirstPublishRef.current) {\n isFirstPublishRef.current = false;\n return;\n }\n var last = publishedRef.current;\n publishedRef.current = entry;\n registry.draggable.update(entry, last);\n }, [entry, registry.draggable]);\n}\nfunction useValidation$1$1(props, contextId, getRef) {\n useDevSetupWarning(function() {\n function prefix2(id2) {\n return \"Draggable[id: \" + id2 + \"]: \";\n }\n var id = props.draggableId;\n !id ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Draggable requires a draggableId\") : invariant(false) : void 0;\n !(typeof id === \"string\") ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Draggable requires a [string] draggableId.\\n Provided: [type: \" + typeof id + \"] (value: \" + id + \")\") : invariant(false) : void 0;\n !isInteger$2(props.index) ? process.env.NODE_ENV !== \"production\" ? invariant(false, prefix2(id) + \" requires an integer index prop\") : invariant(false) : void 0;\n if (props.mapped.type === \"DRAGGING\") {\n return;\n }\n checkIsValidInnerRef$1(getRef());\n if (props.isEnabled) {\n !findDragHandle(contextId, id) ? process.env.NODE_ENV !== \"production\" ? invariant(false, prefix2(id) + \" Unable to find drag handle\") : invariant(false) : void 0;\n }\n });\n}\nfunction useClonePropValidation(isClone) {\n useDev(function() {\n var initialRef = useRef(isClone);\n useDevSetupWarning(function() {\n !(isClone === initialRef.current) ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Draggable isClone prop value changed during component life\") : invariant(false) : void 0;\n }, [isClone]);\n });\n}\nfunction preventHtml5Dnd$1(event) {\n event.preventDefault();\n}\nfunction Draggable$1(props) {\n var ref2 = useRef(null);\n var setRef = useCallback(function(el) {\n ref2.current = el;\n }, []);\n var getRef = useCallback(function() {\n return ref2.current;\n }, []);\n var _useRequiredContext = useRequiredContext$1(AppContext$1), contextId = _useRequiredContext.contextId, dragHandleUsageInstructionsId = _useRequiredContext.dragHandleUsageInstructionsId, registry = _useRequiredContext.registry;\n var _useRequiredContext2 = useRequiredContext$1(DroppableContext$1), type = _useRequiredContext2.type, droppableId = _useRequiredContext2.droppableId;\n var descriptor = useMemo(function() {\n return {\n id: props.draggableId,\n index: props.index,\n type,\n droppableId\n };\n }, [props.draggableId, props.index, type, droppableId]);\n var children = props.children, draggableId = props.draggableId, isEnabled = props.isEnabled, shouldRespectForcePress = props.shouldRespectForcePress, canDragInteractiveElements = props.canDragInteractiveElements, isClone = props.isClone, mapped = props.mapped, dropAnimationFinishedAction = props.dropAnimationFinished;\n useValidation$1$1(props, contextId, getRef);\n useClonePropValidation(isClone);\n if (!isClone) {\n var forPublisher = useMemo(function() {\n return {\n descriptor,\n registry,\n getDraggableRef: getRef,\n canDragInteractiveElements,\n shouldRespectForcePress,\n isEnabled\n };\n }, [descriptor, registry, getRef, canDragInteractiveElements, shouldRespectForcePress, isEnabled]);\n useDraggablePublisher(forPublisher);\n }\n var dragHandleProps = useMemo(function() {\n return isEnabled ? {\n tabIndex: 0,\n role: \"button\",\n \"aria-describedby\": dragHandleUsageInstructionsId,\n \"data-rbd-drag-handle-draggable-id\": draggableId,\n \"data-rbd-drag-handle-context-id\": contextId,\n draggable: false,\n onDragStart: preventHtml5Dnd$1\n } : null;\n }, [contextId, dragHandleUsageInstructionsId, draggableId, isEnabled]);\n var onMoveEnd = useCallback(function(event) {\n if (mapped.type !== \"DRAGGING\") {\n return;\n }\n if (!mapped.dropping) {\n return;\n }\n if (event.propertyName !== \"transform\") {\n return;\n }\n dropAnimationFinishedAction();\n }, [dropAnimationFinishedAction, mapped]);\n var provided = useMemo(function() {\n var style2 = getStyle$1$1(mapped);\n var onTransitionEnd = mapped.type === \"DRAGGING\" && mapped.dropping ? onMoveEnd : null;\n var result = {\n innerRef: setRef,\n draggableProps: {\n \"data-rbd-draggable-context-id\": contextId,\n \"data-rbd-draggable-id\": draggableId,\n style: style2,\n onTransitionEnd\n },\n dragHandleProps\n };\n return result;\n }, [contextId, dragHandleProps, draggableId, mapped, onMoveEnd, setRef]);\n var rubric = useMemo(function() {\n return {\n draggableId: descriptor.id,\n type: descriptor.type,\n source: {\n index: descriptor.index,\n droppableId: descriptor.droppableId\n }\n };\n }, [descriptor.droppableId, descriptor.id, descriptor.index, descriptor.type]);\n return children(provided, mapped.snapshot, rubric);\n}\nvar isStrictEqual$1 = function(a2, b2) {\n return a2 === b2;\n};\nvar whatIsDraggedOverFromResult$1 = function(result) {\n var combine2 = result.combine, destination = result.destination;\n if (destination) {\n return destination.droppableId;\n }\n if (combine2) {\n return combine2.droppableId;\n }\n return null;\n};\nvar getCombineWithFromResult$1 = function getCombineWithFromResult(result) {\n return result.combine ? result.combine.draggableId : null;\n};\nvar getCombineWithFromImpact$1 = function getCombineWithFromImpact(impact) {\n return impact.at && impact.at.type === \"COMBINE\" ? impact.at.combine.draggableId : null;\n};\nfunction getDraggableSelector() {\n var memoizedOffset = memoizeOne(function(x2, y2) {\n return {\n x: x2,\n y: y2\n };\n });\n var getMemoizedSnapshot = memoizeOne(function(mode, isClone, draggingOver, combineWith, dropping) {\n return {\n isDragging: true,\n isClone,\n isDropAnimating: Boolean(dropping),\n dropAnimation: dropping,\n mode,\n draggingOver,\n combineWith,\n combineTargetFor: null\n };\n });\n var getMemoizedProps = memoizeOne(function(offset3, mode, dimension, isClone, draggingOver, combineWith, forceShouldAnimate) {\n return {\n mapped: {\n type: \"DRAGGING\",\n dropping: null,\n draggingOver,\n combineWith,\n mode,\n offset: offset3,\n dimension,\n forceShouldAnimate,\n snapshot: getMemoizedSnapshot(mode, isClone, draggingOver, combineWith, null)\n }\n };\n });\n var selector2 = function selector3(state, ownProps) {\n if (state.isDragging) {\n if (state.critical.draggable.id !== ownProps.draggableId) {\n return null;\n }\n var offset3 = state.current.client.offset;\n var dimension = state.dimensions.draggables[ownProps.draggableId];\n var draggingOver = whatIsDraggedOver$1(state.impact);\n var combineWith = getCombineWithFromImpact$1(state.impact);\n var forceShouldAnimate = state.forceShouldAnimate;\n return getMemoizedProps(memoizedOffset(offset3.x, offset3.y), state.movementMode, dimension, ownProps.isClone, draggingOver, combineWith, forceShouldAnimate);\n }\n if (state.phase === \"DROP_ANIMATING\") {\n var completed = state.completed;\n if (completed.result.draggableId !== ownProps.draggableId) {\n return null;\n }\n var isClone = ownProps.isClone;\n var _dimension = state.dimensions.draggables[ownProps.draggableId];\n var result = completed.result;\n var mode = result.mode;\n var _draggingOver = whatIsDraggedOverFromResult$1(result);\n var _combineWith = getCombineWithFromResult$1(result);\n var duration = state.dropDuration;\n var dropping = {\n duration,\n curve: curves$1.drop,\n moveTo: state.newHomeClientOffset,\n opacity: _combineWith ? combine$2.opacity.drop : null,\n scale: _combineWith ? combine$2.scale.drop : null\n };\n return {\n mapped: {\n type: \"DRAGGING\",\n offset: state.newHomeClientOffset,\n dimension: _dimension,\n dropping,\n draggingOver: _draggingOver,\n combineWith: _combineWith,\n mode,\n forceShouldAnimate: null,\n snapshot: getMemoizedSnapshot(mode, isClone, _draggingOver, _combineWith, dropping)\n }\n };\n }\n return null;\n };\n return selector2;\n}\nfunction getSecondarySnapshot(combineTargetFor) {\n return {\n isDragging: false,\n isDropAnimating: false,\n isClone: false,\n dropAnimation: null,\n mode: null,\n draggingOver: null,\n combineTargetFor,\n combineWith: null\n };\n}\nvar atRest = {\n mapped: {\n type: \"SECONDARY\",\n offset: origin$1,\n combineTargetFor: null,\n shouldAnimateDisplacement: true,\n snapshot: getSecondarySnapshot(null)\n }\n};\nfunction getSecondarySelector() {\n var memoizedOffset = memoizeOne(function(x2, y2) {\n return {\n x: x2,\n y: y2\n };\n });\n var getMemoizedSnapshot = memoizeOne(getSecondarySnapshot);\n var getMemoizedProps = memoizeOne(function(offset3, combineTargetFor, shouldAnimateDisplacement) {\n if (combineTargetFor === void 0) {\n combineTargetFor = null;\n }\n return {\n mapped: {\n type: \"SECONDARY\",\n offset: offset3,\n combineTargetFor,\n shouldAnimateDisplacement,\n snapshot: getMemoizedSnapshot(combineTargetFor)\n }\n };\n });\n var getFallback = function getFallback2(combineTargetFor) {\n return combineTargetFor ? getMemoizedProps(origin$1, combineTargetFor, true) : null;\n };\n var getProps = function getProps2(ownId, draggingId, impact, afterCritical) {\n var visualDisplacement = impact.displaced.visible[ownId];\n var isAfterCriticalInVirtualList = Boolean(afterCritical.inVirtualList && afterCritical.effected[ownId]);\n var combine2 = tryGetCombine(impact);\n var combineTargetFor = combine2 && combine2.draggableId === ownId ? draggingId : null;\n if (!visualDisplacement) {\n if (!isAfterCriticalInVirtualList) {\n return getFallback(combineTargetFor);\n }\n if (impact.displaced.invisible[ownId]) {\n return null;\n }\n var change = negate$1(afterCritical.displacedBy.point);\n var _offset = memoizedOffset(change.x, change.y);\n return getMemoizedProps(_offset, combineTargetFor, true);\n }\n if (isAfterCriticalInVirtualList) {\n return getFallback(combineTargetFor);\n }\n var displaceBy = impact.displacedBy.point;\n var offset3 = memoizedOffset(displaceBy.x, displaceBy.y);\n return getMemoizedProps(offset3, combineTargetFor, visualDisplacement.shouldAnimate);\n };\n var selector2 = function selector3(state, ownProps) {\n if (state.isDragging) {\n if (state.critical.draggable.id === ownProps.draggableId) {\n return null;\n }\n return getProps(ownProps.draggableId, state.critical.draggable.id, state.impact, state.afterCritical);\n }\n if (state.phase === \"DROP_ANIMATING\") {\n var completed = state.completed;\n if (completed.result.draggableId === ownProps.draggableId) {\n return null;\n }\n return getProps(ownProps.draggableId, completed.result.draggableId, completed.impact, completed.afterCritical);\n }\n return null;\n };\n return selector2;\n}\nvar makeMapStateToProps$2 = function makeMapStateToProps() {\n var draggingSelector = getDraggableSelector();\n var secondarySelector = getSecondarySelector();\n var selector2 = function selector3(state, ownProps) {\n return draggingSelector(state, ownProps) || secondarySelector(state, ownProps) || atRest;\n };\n return selector2;\n};\nvar mapDispatchToProps$2 = {\n dropAnimationFinished: dropAnimationFinished$1\n};\nvar ConnectedDraggable$1 = connect(makeMapStateToProps$2, mapDispatchToProps$2, null, {\n context: StoreContext$1,\n pure: true,\n areStatePropsEqual: isStrictEqual$1\n})(Draggable$1);\nfunction PrivateDraggable(props) {\n var droppableContext = useRequiredContext$1(DroppableContext$1);\n var isUsingCloneFor = droppableContext.isUsingCloneFor;\n if (isUsingCloneFor === props.draggableId && !props.isClone) {\n return null;\n }\n return React__default.createElement(ConnectedDraggable$1, props);\n}\nfunction PublicDraggable(props) {\n var isEnabled = typeof props.isDragDisabled === \"boolean\" ? !props.isDragDisabled : true;\n var canDragInteractiveElements = Boolean(props.disableInteractiveElementBlocking);\n var shouldRespectForcePress = Boolean(props.shouldRespectForcePress);\n return React__default.createElement(PrivateDraggable, _extends$4({}, props, {\n isClone: false,\n isEnabled,\n canDragInteractiveElements,\n shouldRespectForcePress\n }));\n}\nfunction Droppable$1(props) {\n var appContext = useContext(AppContext$1);\n !appContext ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Could not find app context\") : invariant() : void 0;\n var contextId = appContext.contextId, isMovementAllowed2 = appContext.isMovementAllowed;\n var droppableRef = useRef(null);\n var placeholderRef = useRef(null);\n var children = props.children, droppableId = props.droppableId, type = props.type, mode = props.mode, direction = props.direction, ignoreContainerClipping = props.ignoreContainerClipping, isDropDisabled = props.isDropDisabled, isCombineEnabled = props.isCombineEnabled, snapshot = props.snapshot, useClone = props.useClone, updateViewportMaxScroll4 = props.updateViewportMaxScroll, getContainerForClone = props.getContainerForClone;\n var getDroppableRef = useCallback(function() {\n return droppableRef.current;\n }, []);\n var setDroppableRef = useCallback(function(value) {\n droppableRef.current = value;\n }, []);\n var getPlaceholderRef = useCallback(function() {\n return placeholderRef.current;\n }, []);\n var setPlaceholderRef = useCallback(function(value) {\n placeholderRef.current = value;\n }, []);\n useValidation$3({\n props,\n getDroppableRef,\n getPlaceholderRef\n });\n var onPlaceholderTransitionEnd = useCallback(function() {\n if (isMovementAllowed2()) {\n updateViewportMaxScroll4({\n maxScroll: getMaxWindowScroll$1()\n });\n }\n }, [isMovementAllowed2, updateViewportMaxScroll4]);\n useDroppablePublisher({\n droppableId,\n type,\n mode,\n direction,\n isDropDisabled,\n isCombineEnabled,\n ignoreContainerClipping,\n getDroppableRef\n });\n var placeholder2 = React__default.createElement(AnimateInOut$1, {\n on: props.placeholder,\n shouldAnimate: props.shouldAnimatePlaceholder\n }, function(_ref) {\n var onClose = _ref.onClose, data = _ref.data, animate = _ref.animate;\n return React__default.createElement(Placeholder$1$2, {\n placeholder: data,\n onClose,\n innerRef: setPlaceholderRef,\n animate,\n contextId,\n onTransitionEnd: onPlaceholderTransitionEnd\n });\n });\n var provided = useMemo(function() {\n return {\n innerRef: setDroppableRef,\n placeholder: placeholder2,\n droppableProps: {\n \"data-rbd-droppable-id\": droppableId,\n \"data-rbd-droppable-context-id\": contextId\n }\n };\n }, [contextId, droppableId, placeholder2, setDroppableRef]);\n var isUsingCloneFor = useClone ? useClone.dragging.draggableId : null;\n var droppableContext = useMemo(function() {\n return {\n droppableId,\n type,\n isUsingCloneFor\n };\n }, [droppableId, isUsingCloneFor, type]);\n function getClone() {\n if (!useClone) {\n return null;\n }\n var dragging = useClone.dragging, render = useClone.render;\n var node2 = React__default.createElement(PrivateDraggable, {\n draggableId: dragging.draggableId,\n index: dragging.source.index,\n isClone: true,\n isEnabled: true,\n shouldRespectForcePress: false,\n canDragInteractiveElements: true\n }, function(draggableProvided, draggableSnapshot) {\n return render(draggableProvided, draggableSnapshot, dragging);\n });\n return ReactDOM__default.createPortal(node2, getContainerForClone());\n }\n return React__default.createElement(DroppableContext$1.Provider, {\n value: droppableContext\n }, children(provided, snapshot), getClone());\n}\nvar isMatchingType$1 = function isMatchingType(type, critical) {\n return type === critical.droppable.type;\n};\nvar getDraggable$1 = function getDraggable(critical, dimensions) {\n return dimensions.draggables[critical.draggable.id];\n};\nvar makeMapStateToProps$1$1 = function makeMapStateToProps2() {\n var idleWithAnimation = {\n placeholder: null,\n shouldAnimatePlaceholder: true,\n snapshot: {\n isDraggingOver: false,\n draggingOverWith: null,\n draggingFromThisWith: null,\n isUsingPlaceholder: false\n },\n useClone: null\n };\n var idleWithoutAnimation = _extends$4({}, idleWithAnimation, {\n shouldAnimatePlaceholder: false\n });\n var getDraggableRubric = memoizeOne(function(descriptor) {\n return {\n draggableId: descriptor.id,\n type: descriptor.type,\n source: {\n index: descriptor.index,\n droppableId: descriptor.droppableId\n }\n };\n });\n var getMapProps = memoizeOne(function(id, isEnabled, isDraggingOverForConsumer, isDraggingOverForImpact, dragging, renderClone) {\n var draggableId = dragging.descriptor.id;\n var isHome = dragging.descriptor.droppableId === id;\n if (isHome) {\n var useClone = renderClone ? {\n render: renderClone,\n dragging: getDraggableRubric(dragging.descriptor)\n } : null;\n var _snapshot = {\n isDraggingOver: isDraggingOverForConsumer,\n draggingOverWith: isDraggingOverForConsumer ? draggableId : null,\n draggingFromThisWith: draggableId,\n isUsingPlaceholder: true\n };\n return {\n placeholder: dragging.placeholder,\n shouldAnimatePlaceholder: false,\n snapshot: _snapshot,\n useClone\n };\n }\n if (!isEnabled) {\n return idleWithoutAnimation;\n }\n if (!isDraggingOverForImpact) {\n return idleWithAnimation;\n }\n var snapshot = {\n isDraggingOver: isDraggingOverForConsumer,\n draggingOverWith: draggableId,\n draggingFromThisWith: null,\n isUsingPlaceholder: true\n };\n return {\n placeholder: dragging.placeholder,\n shouldAnimatePlaceholder: true,\n snapshot,\n useClone: null\n };\n });\n var selector2 = function selector3(state, ownProps) {\n var id = ownProps.droppableId;\n var type = ownProps.type;\n var isEnabled = !ownProps.isDropDisabled;\n var renderClone = ownProps.renderClone;\n if (state.isDragging) {\n var critical = state.critical;\n if (!isMatchingType$1(type, critical)) {\n return idleWithoutAnimation;\n }\n var dragging = getDraggable$1(critical, state.dimensions);\n var isDraggingOver = whatIsDraggedOver$1(state.impact) === id;\n return getMapProps(id, isEnabled, isDraggingOver, isDraggingOver, dragging, renderClone);\n }\n if (state.phase === \"DROP_ANIMATING\") {\n var completed = state.completed;\n if (!isMatchingType$1(type, completed.critical)) {\n return idleWithoutAnimation;\n }\n var _dragging = getDraggable$1(completed.critical, state.dimensions);\n return getMapProps(id, isEnabled, whatIsDraggedOverFromResult$1(completed.result) === id, whatIsDraggedOver$1(completed.impact) === id, _dragging, renderClone);\n }\n if (state.phase === \"IDLE\" && state.completed && !state.shouldFlush) {\n var _completed = state.completed;\n if (!isMatchingType$1(type, _completed.critical)) {\n return idleWithoutAnimation;\n }\n var wasOver = whatIsDraggedOver$1(_completed.impact) === id;\n var wasCombining = Boolean(_completed.impact.at && _completed.impact.at.type === \"COMBINE\");\n var isHome = _completed.critical.droppable.id === id;\n if (wasOver) {\n return wasCombining ? idleWithAnimation : idleWithoutAnimation;\n }\n if (isHome) {\n return idleWithAnimation;\n }\n return idleWithoutAnimation;\n }\n return idleWithoutAnimation;\n };\n return selector2;\n};\nvar mapDispatchToProps$1$1 = {\n updateViewportMaxScroll: updateViewportMaxScroll$1\n};\nfunction getBody() {\n !document.body ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"document.body is not ready\") : invariant() : void 0;\n return document.body;\n}\nvar defaultProps$2 = {\n mode: \"standard\",\n type: \"DEFAULT\",\n direction: \"vertical\",\n isDropDisabled: false,\n isCombineEnabled: false,\n ignoreContainerClipping: false,\n renderClone: null,\n getContainerForClone: getBody\n};\nvar ConnectedDroppable$1 = connect(makeMapStateToProps$1$1, mapDispatchToProps$1$1, null, {\n context: StoreContext$1,\n pure: true,\n areStatePropsEqual: isStrictEqual$1\n})(Droppable$1);\nConnectedDroppable$1.defaultProps = defaultProps$2;\nconst pageLabel = (page) => page.label || humanizeString(page.name.toString());\nconst PagesMenu$2 = () => {\n const { form, dispatch } = useRegForm();\n return /* @__PURE__ */ jsxRuntimeExports.jsxs(Box, { className: \"t-pages-menu\", children: [\n /* @__PURE__ */ jsxRuntimeExports.jsx(\n DragDropContext$1,\n {\n onDragEnd: (result) => result.destination !== void 0 && result.destination !== null && dispatch({\n type: \"move_page\",\n name: result.draggableId,\n toIndex: result.destination.index\n }),\n children: /* @__PURE__ */ jsxRuntimeExports.jsx(ConnectedDroppable$1, { droppableId: \"pagesMenu\", children: (provided) => /* @__PURE__ */ jsxRuntimeExports.jsxs(List, { ref: provided.innerRef, children: [\n form.fields.map((page, index2) => /* @__PURE__ */ jsxRuntimeExports.jsx(\n PublicDraggable,\n {\n draggableId: page.name,\n index: index2,\n children: (provided2) => /* @__PURE__ */ jsxRuntimeExports.jsx(\n SidebarItem,\n {\n className: \"t-page-item\",\n ref: provided2.innerRef,\n ...provided2.draggableProps,\n ...provided2.dragHandleProps,\n onClick: () => dispatch({ type: \"select_page\", name: page.name }),\n children: pageLabel(page)\n }\n )\n },\n page.name\n )),\n provided.placeholder\n ] }) })\n }\n ),\n /* @__PURE__ */ jsxRuntimeExports.jsx(Center, { py: 5, pr: 5, children: /* @__PURE__ */ jsxRuntimeExports.jsx(\n Button,\n {\n width: \"full\",\n className: \"t-add-page\",\n colorScheme: \"blue\",\n onClick: () => dispatch({ type: \"add_page\" }),\n children: \"Add Page\"\n }\n ) })\n ] });\n};\nconst SidebarTab = (props) => /* @__PURE__ */ jsxRuntimeExports.jsx(\n Tab,\n {\n sx: {\n fontSize: \"12px !important\",\n lineHeight: \"28px !important\",\n margin: \"0 !important\"\n },\n _hover: { bg: \"blackAlpha.200\" },\n _selected: { bg: \"blackAlpha.200\" },\n _focus: { boxShadow: \"none\" },\n borderRadius: 0,\n border: 0,\n ...props\n }\n);\nclass AdminApiUrls {\n constructor(baseUrl = \"http://get.lvh.me:3003\") {\n this.paths = {\n roomBlocks: \"room_nights\",\n roomBookings: \"room_bookings\",\n sessions: \"bookable_sessions\",\n tracks: \"tracks\",\n sponsorTiers: \"sponsorship-tiers\",\n reports: \"reports\"\n };\n this.baseUrl = baseUrl;\n }\n roomBlocksUrl() {\n return `${this.baseUrl}/${this.paths.roomBlocks}`;\n }\n roomBlockUrl(roomBlockId) {\n return `${this.roomBlocksUrl()}/${roomBlockId}`;\n }\n roomBookingsUrl(roomBlockId) {\n return `${this.roomBlocksUrl()}/${roomBlockId}/${this.paths.roomBookings}`;\n }\n roomBookingUrl(roomBookingId) {\n return `${this.baseUrl}/${this.paths.roomBookings}/${roomBookingId}`;\n }\n sessionsUrl() {\n return `${this.baseUrl}/${this.paths.sessions}`;\n }\n sessionUrl(sessionId) {\n return `${this.sessionsUrl()}/${sessionId}`;\n }\n sponsorTiersUrl() {\n return `${this.baseUrl}/${this.paths.sponsorTiers}`;\n }\n tracksUrl() {\n return `${this.baseUrl}/${this.paths.tracks}`;\n }\n trackUrl(trackId) {\n return `${this.tracksUrl()}/${trackId}`;\n }\n reportsUrl() {\n return `${this.baseUrl}/${this.paths.reports}`;\n }\n reportUrl(reportID) {\n return `${this.reportsUrl()}/${reportID}`;\n }\n}\nclass BaseApiClient {\n constructor(urls, fetcher) {\n this.urls = urls;\n this.fetcher = fetcher;\n }\n}\nconst headers = {\n accept: \"application/json\"\n};\nconst writeHeaders = {\n ...headers,\n \"content-type\": \"application/json;charset=UTF-8\"\n};\nconst adaptRoomBlockForRequest = (roomBlock) => ({\n ...roomBlock,\n startDate: formatISO(roomBlock.startDate, { representation: \"date\" }),\n endDate: formatISO(roomBlock.endDate, { representation: \"date\" }),\n roomTypes: roomBlock.roomTypes.map((roomType) => ({\n ...roomType,\n nights: roomType.nights.map((night) => ({\n ...night,\n date: formatISO(night.date, { representation: \"date\" })\n }))\n }))\n});\nconst adaptRoomBlockFromResponse = (roomBlock) => ({\n ...roomBlock,\n startDate: parseISO$1(roomBlock.startDate),\n endDate: parseISO$1(roomBlock.endDate),\n roomTypes: roomBlock.roomTypes.map((responseRoomType) => ({\n ...responseRoomType,\n nights: responseRoomType.nights.map((responseRoomNight) => ({\n ...responseRoomNight,\n date: parseISO$1(responseRoomNight.date)\n }))\n }))\n});\nconst adaptRegFlowRoomBlockFromResponse = (roomBlock) => ({\n ...roomBlock,\n startDate: parseISO$1(roomBlock.startDate),\n endDate: parseISO$1(roomBlock.endDate)\n});\nfunction adaptRoomBookingResponse(booking) {\n return {\n ...booking,\n checkIn: parseISO$1(booking.checkIn),\n checkOut: parseISO$1(booking.checkOut)\n };\n}\nconst adaptRoomBookingForRequest = ({\n roomType,\n ...booking\n}) => ({\n ...booking,\n checkIn: formatISO(booking.checkIn, { representation: \"date\" }),\n checkOut: formatISO(booking.checkOut, { representation: \"date\" }),\n roomTypeId: roomType.id\n});\nclass RoomingClient extends BaseApiClient {\n async getRoomBlocks() {\n const response = await this.fetcher(this.urls.roomBlocksUrl(), { headers });\n if (!response.ok) {\n throw new Error(\"Network response was not ok\");\n }\n const json = await response.json();\n return json.map(adaptRoomBlockFromResponse);\n }\n async getRoomBlock(id) {\n const response = await this.fetcher(this.urls.roomBlockUrl(id), {\n headers\n });\n if (!response.ok) {\n throw new Error(\"Network response was not ok\");\n }\n const json = await response.json();\n return adaptRoomBlockFromResponse(json.roomBlock);\n }\n async createRoomBlock(roomBlock) {\n const response = await this.fetcher(this.urls.roomBlocksUrl(), {\n method: \"POST\",\n headers: writeHeaders,\n body: JSON.stringify({ roomBlock: adaptRoomBlockForRequest(roomBlock) })\n });\n if (!response.ok) {\n throw new Error(\"Network response was not ok\");\n }\n const json = await response.json();\n return adaptRoomBlockFromResponse(json.roomBlock);\n }\n async updateRoomBlock(roomBlock) {\n const response = await this.fetcher(this.urls.roomBlockUrl(roomBlock.id), {\n method: \"PUT\",\n headers: writeHeaders,\n body: JSON.stringify({ roomBlock: adaptRoomBlockForRequest(roomBlock) })\n });\n if (!response.ok) {\n throw new Error(\"Network response was not ok\");\n }\n const json = await response.json();\n return adaptRoomBlockFromResponse(json.roomBlock);\n }\n async deleteRoomBlock(roomBlock) {\n const response = await this.fetcher(this.urls.roomBlockUrl(roomBlock.id), {\n method: \"DELETE\",\n headers: writeHeaders\n });\n if (!response.ok) {\n throw new Error(\"Network response was not ok\");\n }\n const json = await response.json();\n return adaptRoomBlockFromResponse(json.roomBlock);\n }\n async getBooking(bookingId) {\n const response = await this.fetcher(this.urls.roomBookingUrl(bookingId), {\n headers\n });\n if (!response.ok) {\n throw new Error(\"Network response was not ok\");\n }\n const json = await response.json();\n return json.booking;\n }\n async createBooking(booking, roomBlockId) {\n const response = await this.fetcher(\n this.urls.roomBookingsUrl(roomBlockId),\n {\n method: \"POST\",\n headers: writeHeaders,\n body: JSON.stringify({ booking })\n }\n );\n if (!response.ok) {\n throw new Error(\"Network response was not ok\");\n }\n const json = await response.json();\n return adaptRoomBookingResponse(json.booking);\n }\n async cancelBooking(booking) {\n const response = await this.fetcher(this.urls.roomBookingUrl(booking.id), {\n method: \"DELETE\",\n headers: writeHeaders,\n body: JSON.stringify({ booking })\n });\n if (!response.ok) {\n throw new Error(\"Network response was not ok\");\n }\n const json = await response.json();\n return adaptRoomBookingResponse(json.booking);\n }\n}\nconst buildRequestSlot = (slot) => {\n const requestSlot = {\n name: slot.name,\n total_capacity: slot.totalCapacity,\n price_cents: slot.priceInCents || null,\n sort: slot.sort,\n metadata: slot.metadata,\n description: slot.description,\n start_time: slot.startTime !== void 0 ? formatISODateTimeUTC(slot.startTime) : null,\n end_time: slot.endTime !== void 0 ? formatISODateTimeUTC(slot.endTime) : null\n };\n if (!slot.isNew) {\n requestSlot.id = slot.id;\n }\n return requestSlot;\n};\nconst buildSlotFromResponse = (responseSlot) => {\n return {\n id: responseSlot.id,\n name: responseSlot.name,\n totalCapacity: responseSlot.total_capacity,\n numberBooked: responseSlot.number_booked,\n priceInCents: responseSlot.price_cents,\n sort: responseSlot.sort || Infinity,\n metadata: responseSlot.metadata,\n description: responseSlot.description,\n startTime: responseSlot.start_time ? parseISO$1(responseSlot.start_time) : void 0,\n endTime: responseSlot.end_time ? parseISO$1(responseSlot.end_time) : void 0\n };\n};\nconst buildSessionRequestBody = (session) => {\n const { slots, checkpointCreation, ...attributes } = session;\n return {\n session_booking_session: {\n ...attributes,\n checkpoint_creation: checkpointCreation,\n slots_attributes: buildSlotsAttributes(session)\n }\n };\n};\nconst buildSlotsAttributes = (session) => {\n const slotsAttributes = session.slots.map(buildRequestSlot);\n if (session.deletedSlots !== void 0) {\n session.deletedSlots.forEach(\n (id) => slotsAttributes.push({ id, _destroy: 1 })\n );\n }\n return slotsAttributes;\n};\nconst buildSessionInputRequestBody = (session) => {\n const { checkpointCreation, ...attributes } = session;\n return {\n session_booking_session: {\n ...attributes,\n checkpoint_creation: checkpointCreation\n }\n };\n};\nconst buildSessionFromResponse = (responseSession) => {\n const { slots, checkpoint_creation, ...attributes } = responseSession;\n return {\n ...attributes,\n checkpointCreation: checkpoint_creation,\n slots: slots.map(buildSlotFromResponse).sort((a2, b2) => a2.sort - b2.sort),\n deletedSlots: []\n };\n};\nconst buildSessionsFromResponse = (sessionsResponseBody) => sessionsResponseBody.map(buildSessionFromResponse);\nclass SessionsClient extends BaseApiClient {\n async getSessions() {\n const response = await this.fetcher(this.urls.sessionsUrl(), {\n headers\n });\n if (!response.ok) {\n throw new Error(\"Network response was not ok\");\n }\n const json = await response.json();\n return buildSessionsFromResponse(json);\n }\n async getSession(sessionId) {\n const response = await this.fetcher(this.urls.sessionUrl(sessionId), {\n headers\n });\n if (!response.ok) {\n throw new Error(\"Network response was not ok\");\n }\n const json = await response.json();\n return buildSessionFromResponse(json);\n }\n async updateSession(session) {\n const response = await this.fetcher(this.urls.sessionUrl(session.id), {\n method: \"PUT\",\n headers: writeHeaders,\n body: JSON.stringify(buildSessionRequestBody(session))\n });\n if (!response.ok) {\n throw new Error(\"Network response was not ok\");\n }\n const json = await response.json();\n return buildSessionFromResponse(json);\n }\n async deleteSession(session) {\n const response = await this.fetcher(this.urls.sessionUrl(session.id), {\n method: \"DELETE\",\n headers: writeHeaders,\n body: JSON.stringify(buildSessionRequestBody(session))\n });\n if (!response.ok) {\n throw new Error(\"Network response was not ok\");\n }\n const json = await response.json();\n return buildSessionFromResponse(json);\n }\n async createSession(session) {\n const response = await this.fetcher(this.urls.sessionsUrl(), {\n method: \"POST\",\n headers: writeHeaders,\n body: JSON.stringify(buildSessionInputRequestBody(session))\n });\n if (!response.ok) {\n throw new Error(\"Network response was not ok\");\n }\n const json = await response.json();\n return buildSessionFromResponse(json);\n }\n}\nconst extractDate = (object, key, representation = \"date\") => {\n if (!(key in object)) {\n return void 0;\n }\n const value = object[key];\n if (value === void 0) {\n return null;\n }\n return formatISO(value, { representation });\n};\nconst buildRequestGuestInvites = (track) => {\n var _a;\n return (_a = track.guestInvites) == null ? void 0 : _a.map((invite) => ({\n id: invite.id,\n inviter_track_id: invite.inviterTrackId,\n number_of_invites: invite.numberOfInvites\n }));\n};\nconst buildRequestTicketTypes = (track) => {\n var _a, _b;\n const result = [];\n (_a = track.ticketTypes) == null ? void 0 : _a.forEach((ticketType) => {\n const requestTicketType = {\n name: ticketType.name,\n sort: ticketType.sort,\n available_from: extractDate(ticketType, \"availableFrom\", \"complete\"),\n available_to: extractDate(ticketType, \"availableTo\", \"complete\"),\n capacity: ticketType.capacity || null,\n price_cents: ticketType.priceInCents || null,\n metadata: ticketType.metadata\n };\n if (!ticketType.isNew) {\n requestTicketType.id = ticketType.id;\n }\n result.push(requestTicketType);\n });\n (_b = track.deletedTicketTypes) == null ? void 0 : _b.forEach((id) => {\n result.push({\n id,\n _destroy: 1\n });\n });\n if (result.length === 0) {\n return void 0;\n } else {\n return result;\n }\n};\nconst buildCreateTrackRequest = (track) => ({\n name: track.name,\n description: track.description,\n invite_only: track.inviteOnly,\n is_guest_track: track.isGuestTrack,\n number_booked: track.numberBooked,\n guest_account_activation: track.guestAccountActivation,\n override_registration_close: track.overrideRegistrationClose,\n guest_invites: buildRequestGuestInvites(track),\n ticket_types_attributes: buildRequestTicketTypes(track),\n sort: track.sort\n});\nconst buildUpdateTrackRequest = (track) => ({\n id: track.id,\n name: track.name,\n description: track.description,\n invite_only: track.inviteOnly,\n is_guest_track: track.isGuestTrack,\n number_booked: track.numberBooked,\n guest_account_activation: track.guestAccountActivation,\n override_registration_close: track.overrideRegistrationClose,\n guest_invites: buildRequestGuestInvites(track),\n ticket_types_attributes: buildRequestTicketTypes(track),\n pre_populate_fields: track.prePopulateFields,\n sort: track.sort,\n metadata: track.metadata\n});\nconst buildGuestInvitesFromResponse = (track) => {\n var _a;\n return (_a = track == null ? void 0 : track.guest_invites) == null ? void 0 : _a.map((invite) => ({\n id: invite.id,\n inviterTrackId: invite.inviter_track_id,\n numberOfInvites: invite.number_of_invites\n }));\n};\nconst buildTicketTypeFromResponse = (track) => {\n var _a;\n return (_a = track == null ? void 0 : track.ticket_types) == null ? void 0 : _a.map((ticketType) => ({\n id: ticketType.id,\n name: ticketType.name,\n sort: ticketType.sort,\n availableFrom: ticketType.available_from ? parseISO$1(ticketType.available_from) : void 0,\n availableTo: ticketType.available_to ? parseISO$1(ticketType.available_to) : void 0,\n priceInCents: ticketType.price_cents || void 0,\n capacity: ticketType.capacity || void 0,\n numberBooked: ticketType.number_booked,\n metadata: ticketType.metadata\n }));\n};\nconst buildTrackFromResponse = (track) => ({\n id: track.id,\n inviteUrl: track.invite_url,\n name: track.name,\n description: track.description,\n inviteOnly: track.invite_only,\n numberBooked: track.number_booked,\n isGuestTrack: track.is_guest_track,\n guestAccountActivation: track.guest_account_activation,\n overrideRegistrationClose: track.override_registration_close,\n guestInvites: buildGuestInvitesFromResponse(track),\n ticketTypes: buildTicketTypeFromResponse(track) || [],\n prePopulateFields: track.pre_populate_fields,\n sort: track.sort,\n metadata: track.metadata\n});\nclass TracksClient extends BaseApiClient {\n async getTracks() {\n const response = await this.fetcher(this.urls.tracksUrl(), {\n headers\n });\n if (!response.ok) {\n throw new Error(\"Network response was not ok\");\n }\n const json = await response.json();\n return json.map(buildTrackFromResponse);\n }\n async createTrack(track) {\n const response = await this.fetcher(this.urls.tracksUrl(), {\n method: \"POST\",\n headers: writeHeaders,\n body: JSON.stringify({ track: buildCreateTrackRequest(track) })\n });\n if (!response.ok) {\n throw new Error(\"Network response was not ok\");\n }\n const json = await response.json();\n return buildTrackFromResponse(json.track);\n }\n async updateTrack(update2) {\n const response = await this.fetcher(this.urls.trackUrl(update2.id), {\n method: \"PUT\",\n headers: writeHeaders,\n body: JSON.stringify({ track: buildUpdateTrackRequest(update2) })\n });\n if (!response.ok) {\n throw new Error(\"Network response was not ok\");\n }\n const json = await response.json();\n return buildTrackFromResponse(json.track);\n }\n async deleteTrack(track) {\n const response = await this.fetcher(this.urls.trackUrl(track.id), {\n method: \"DELETE\",\n headers: writeHeaders\n });\n if (!response.ok) {\n throw new Error(\"Network response was not ok\");\n }\n const json = await response.json();\n return json.track;\n }\n}\nclass SponsorsClient extends BaseApiClient {\n async getSponsorTiers() {\n const response = await this.fetcher(this.urls.sponsorTiersUrl(), {\n headers\n });\n if (!response.ok) {\n throw new Error(\"Network response was not ok\");\n }\n const json = await response.json();\n return json;\n }\n}\nclass AdminApiClient {\n constructor(apiUrl = \"http://get.lvh.me:3003\", fetchFn) {\n this.urls = new AdminApiUrls(apiUrl);\n this.fetchFn = fetchFn;\n const doFetch = (url, options) => {\n if (fetchFn === void 0) {\n return fetch(url, options);\n } else {\n return fetchFn(url, options);\n }\n };\n this.rooming = new RoomingClient(this.urls, doFetch);\n this.sessions = new SessionsClient(this.urls, doFetch);\n this.tracks = new TracksClient(this.urls, doFetch);\n this.sponsors = new SponsorsClient(this.urls, doFetch);\n }\n}\nconst AdminApiContext = React__default.createContext(\n new AdminApiClient()\n);\nconst useAdminApi = () => useContext(AdminApiContext);\nconst urlDate = (date) => formatISO(date, { representation: \"date\" });\nclass RegFlowApiUrls {\n constructor(baseUrl = \"http://get.lvh.me:3003/reg\") {\n this.paths = {\n roomBlocks: \"room_blocks\"\n };\n this.baseUrl = baseUrl;\n }\n roomBookingsUrl(formField) {\n return `${this.baseUrl}/room_bookings/${formField}`;\n }\n roomTypesUrl(formField) {\n return `${this.roomBookingsUrl(formField)}/availability`;\n }\n roomTypesAvailabilityUrl(formField, checkIn, checkOut) {\n return `${this.roomTypesUrl(formField)}?checkIn=${urlDate(\n checkIn\n )}&checkOut=${urlDate(checkOut)}`;\n }\n}\nclass RoomBookingClient extends BaseApiClient {\n async getRoomBlockAvailability(formField, checkIn, checkOut) {\n const response = await this.fetcher(\n this.urls.roomTypesAvailabilityUrl(formField, checkIn, checkOut)\n );\n if (!response.ok) {\n throw new Error(\"Network response was not ok\");\n }\n const json = await response.json();\n return json.roomTypes;\n }\n async getBooking(formField) {\n const response = await this.fetcher(this.urls.roomBookingsUrl(formField), {\n headers\n });\n if (response.status === 404) {\n return null;\n }\n if (!response.ok) {\n throw new Error(\"Network response was not ok\");\n }\n const json = await response.json();\n return adaptRoomBookingResponse(json.booking);\n }\n async createBooking(booking) {\n const response = await this.fetcher(\n this.urls.roomBookingsUrl(booking.formField),\n {\n method: \"POST\",\n headers: writeHeaders,\n body: JSON.stringify({ booking: adaptRoomBookingForRequest(booking) })\n }\n );\n if (!response.ok) {\n throw new Error(\"Network response was not ok\");\n }\n const json = await response.json();\n return adaptRoomBookingResponse(json.booking);\n }\n async cancelBooking(booking) {\n const response = await this.fetcher(\n this.urls.roomBookingsUrl(booking.formField),\n {\n method: \"DELETE\",\n headers: writeHeaders,\n body: JSON.stringify({ booking })\n }\n );\n if (!response.ok) {\n throw new Error(\"Network response was not ok\");\n }\n const json = await response.json();\n return adaptRoomBookingResponse(json.booking);\n }\n async updateBooking(formField, update2) {\n const response = await this.fetcher(this.urls.roomBookingsUrl(formField), {\n method: \"PATCH\",\n headers: writeHeaders,\n body: JSON.stringify({ booking: update2 })\n });\n if (!response.ok) {\n throw new Error(\"Network response was not ok\");\n }\n const json = await response.json();\n return adaptRoomBookingResponse(json.booking);\n }\n}\nclass RegFlowApiClient {\n constructor(apiUrl = \"http://get.lvh.me:3003/reg\", fetchFn) {\n this.urls = new RegFlowApiUrls(apiUrl);\n this.fetchFn = fetchFn;\n const doFetch = (url, options) => {\n if (fetchFn === void 0) {\n return fetch(url, options);\n } else {\n return fetchFn(url, options);\n }\n };\n this.roomBooking = new RoomBookingClient(this.urls, doFetch);\n }\n}\nconst RegFlowApiContext = React__default.createContext(\n new RegFlowApiClient()\n);\nconst useRegFlowApi = () => useContext(RegFlowApiContext);\nconst useUpdateTrack = (options) => {\n const { tracks } = useAdminApi();\n const queryClient = useQueryClient();\n const mutateFn = (update2) => tracks.updateTrack(update2);\n return useMutation(mutateFn, {\n ...options,\n onSuccess: (data, variables, context) => {\n var _a;\n queryClient.invalidateQueries({ queryKey: [\"tracks\"] });\n (_a = options == null ? void 0 : options.onSuccess) == null ? void 0 : _a.call(void 0, data, variables, context);\n }\n });\n};\nvar isCheckBoxInput = (element) => element.type === \"checkbox\";\nvar isDateObject = (value) => value instanceof Date;\nvar isNullOrUndefined = (value) => value == null;\nconst isObjectType = (value) => typeof value === \"object\";\nvar isObject$1 = (value) => !isNullOrUndefined(value) && !Array.isArray(value) && isObjectType(value) && !isDateObject(value);\nvar getEventValue = (event) => isObject$1(event) && event.target ? isCheckBoxInput(event.target) ? event.target.checked : event.target.value : event;\nvar getNodeParentName = (name) => name.substring(0, name.search(/\\.\\d+(\\.|$)/)) || name;\nvar isNameInFieldArray = (names, name) => names.has(getNodeParentName(name));\nvar isPlainObject$1 = (tempObject) => {\n const prototypeCopy = tempObject.constructor && tempObject.constructor.prototype;\n return isObject$1(prototypeCopy) && prototypeCopy.hasOwnProperty(\"isPrototypeOf\");\n};\nvar isWeb = typeof window !== \"undefined\" && typeof window.HTMLElement !== \"undefined\" && typeof document !== \"undefined\";\nfunction cloneObject(data) {\n let copy2;\n const isArray2 = Array.isArray(data);\n if (data instanceof Date) {\n copy2 = new Date(data);\n } else if (data instanceof Set) {\n copy2 = new Set(data);\n } else if (!(isWeb && (data instanceof Blob || data instanceof FileList)) && (isArray2 || isObject$1(data))) {\n copy2 = isArray2 ? [] : {};\n if (!isArray2 && !isPlainObject$1(data)) {\n copy2 = data;\n } else {\n for (const key in data) {\n if (data.hasOwnProperty(key)) {\n copy2[key] = cloneObject(data[key]);\n }\n }\n }\n } else {\n return data;\n }\n return copy2;\n}\nvar compact = (value) => Array.isArray(value) ? value.filter(Boolean) : [];\nvar isUndefined$1 = (val) => val === void 0;\nvar get$3 = (object, path, defaultValue) => {\n if (!path || !isObject$1(object)) {\n return defaultValue;\n }\n const result = compact(path.split(/[,[\\].]+?/)).reduce((result2, key) => isNullOrUndefined(result2) ? result2 : result2[key], object);\n return isUndefined$1(result) || result === object ? isUndefined$1(object[path]) ? defaultValue : object[path] : result;\n};\nvar isBoolean = (value) => typeof value === \"boolean\";\nvar isKey = (value) => /^\\w*$/.test(value);\nvar stringToPath = (input) => compact(input.replace(/[\"|']|\\]/g, \"\").split(/\\.|\\[/));\nvar set$3 = (object, path, value) => {\n let index2 = -1;\n const tempPath = isKey(path) ? [path] : stringToPath(path);\n const length2 = tempPath.length;\n const lastIndex = length2 - 1;\n while (++index2 < length2) {\n const key = tempPath[index2];\n let newValue = value;\n if (index2 !== lastIndex) {\n const objValue = object[key];\n newValue = isObject$1(objValue) || Array.isArray(objValue) ? objValue : !isNaN(+tempPath[index2 + 1]) ? [] : {};\n }\n if (key === \"__proto__\") {\n return;\n }\n object[key] = newValue;\n object = object[key];\n }\n return object;\n};\nconst EVENTS = {\n BLUR: \"blur\",\n FOCUS_OUT: \"focusout\",\n CHANGE: \"change\"\n};\nconst VALIDATION_MODE = {\n onBlur: \"onBlur\",\n onChange: \"onChange\",\n onSubmit: \"onSubmit\",\n onTouched: \"onTouched\",\n all: \"all\"\n};\nconst INPUT_VALIDATION_RULES = {\n max: \"max\",\n min: \"min\",\n maxLength: \"maxLength\",\n minLength: \"minLength\",\n pattern: \"pattern\",\n required: \"required\",\n validate: \"validate\"\n};\nconst HookFormContext = React__default.createContext(null);\nconst useFormContext = () => React__default.useContext(HookFormContext);\nvar getProxyFormState = (formState, control, localProxyFormState, isRoot = true) => {\n const result = {\n defaultValues: control._defaultValues\n };\n for (const key in formState) {\n Object.defineProperty(result, key, {\n get: () => {\n const _key = key;\n if (control._proxyFormState[_key] !== VALIDATION_MODE.all) {\n control._proxyFormState[_key] = !isRoot || VALIDATION_MODE.all;\n }\n localProxyFormState && (localProxyFormState[_key] = true);\n return formState[_key];\n }\n });\n }\n return result;\n};\nvar isEmptyObject$1 = (value) => isObject$1(value) && !Object.keys(value).length;\nvar shouldRenderFormState = (formStateData, _proxyFormState, updateFormState, isRoot) => {\n updateFormState(formStateData);\n const { name, ...formState } = formStateData;\n return isEmptyObject$1(formState) || Object.keys(formState).length >= Object.keys(_proxyFormState).length || Object.keys(formState).find((key) => _proxyFormState[key] === (!isRoot || VALIDATION_MODE.all));\n};\nvar convertToArrayPayload = (value) => Array.isArray(value) ? value : [value];\nvar shouldSubscribeByName = (name, signalName, exact) => !name || !signalName || name === signalName || convertToArrayPayload(name).some((currentName) => currentName && (exact ? currentName === signalName : currentName.startsWith(signalName) || signalName.startsWith(currentName)));\nfunction useSubscribe(props) {\n const _props = React__default.useRef(props);\n _props.current = props;\n React__default.useEffect(() => {\n const subscription = !props.disabled && _props.current.subject && _props.current.subject.subscribe({\n next: _props.current.next\n });\n return () => {\n subscription && subscription.unsubscribe();\n };\n }, [props.disabled]);\n}\nfunction useFormState(props) {\n const methods = useFormContext();\n const { control = methods.control, disabled, name, exact } = props || {};\n const [formState, updateFormState] = React__default.useState(control._formState);\n const _mounted = React__default.useRef(true);\n const _localProxyFormState = React__default.useRef({\n isDirty: false,\n isLoading: false,\n dirtyFields: false,\n touchedFields: false,\n validatingFields: false,\n isValidating: false,\n isValid: false,\n errors: false\n });\n const _name = React__default.useRef(name);\n _name.current = name;\n useSubscribe({\n disabled,\n next: (value) => _mounted.current && shouldSubscribeByName(_name.current, value.name, exact) && shouldRenderFormState(value, _localProxyFormState.current, control._updateFormState) && updateFormState({\n ...control._formState,\n ...value\n }),\n subject: control._subjects.state\n });\n React__default.useEffect(() => {\n _mounted.current = true;\n _localProxyFormState.current.isValid && control._updateValid(true);\n return () => {\n _mounted.current = false;\n };\n }, [control]);\n return getProxyFormState(formState, control, _localProxyFormState.current, false);\n}\nvar isString$1 = (value) => typeof value === \"string\";\nvar generateWatchOutput = (names, _names, formValues, isGlobal, defaultValue) => {\n if (isString$1(names)) {\n isGlobal && _names.watch.add(names);\n return get$3(formValues, names, defaultValue);\n }\n if (Array.isArray(names)) {\n return names.map((fieldName) => (isGlobal && _names.watch.add(fieldName), get$3(formValues, fieldName)));\n }\n isGlobal && (_names.watchAll = true);\n return formValues;\n};\nfunction useWatch(props) {\n const methods = useFormContext();\n const { control = methods.control, name, defaultValue, disabled, exact } = props || {};\n const _name = React__default.useRef(name);\n _name.current = name;\n useSubscribe({\n disabled,\n subject: control._subjects.values,\n next: (formState) => {\n if (shouldSubscribeByName(_name.current, formState.name, exact)) {\n updateValue(cloneObject(generateWatchOutput(_name.current, control._names, formState.values || control._formValues, false, defaultValue)));\n }\n }\n });\n const [value, updateValue] = React__default.useState(control._getWatch(name, defaultValue));\n React__default.useEffect(() => control._removeUnmounted());\n return value;\n}\nfunction useController(props) {\n const methods = useFormContext();\n const { name, disabled, control = methods.control, shouldUnregister } = props;\n const isArrayField = isNameInFieldArray(control._names.array, name);\n const value = useWatch({\n control,\n name,\n defaultValue: get$3(control._formValues, name, get$3(control._defaultValues, name, props.defaultValue)),\n exact: true\n });\n const formState = useFormState({\n control,\n name,\n exact: true\n });\n const _registerProps = React__default.useRef(control.register(name, {\n ...props.rules,\n value,\n ...isBoolean(props.disabled) ? { disabled: props.disabled } : {}\n }));\n React__default.useEffect(() => {\n const _shouldUnregisterField = control._options.shouldUnregister || shouldUnregister;\n const updateMounted = (name2, value2) => {\n const field = get$3(control._fields, name2);\n if (field && field._f) {\n field._f.mount = value2;\n }\n };\n updateMounted(name, true);\n if (_shouldUnregisterField) {\n const value2 = cloneObject(get$3(control._options.defaultValues, name));\n set$3(control._defaultValues, name, value2);\n if (isUndefined$1(get$3(control._formValues, name))) {\n set$3(control._formValues, name, value2);\n }\n }\n return () => {\n (isArrayField ? _shouldUnregisterField && !control._state.action : _shouldUnregisterField) ? control.unregister(name) : updateMounted(name, false);\n };\n }, [name, control, isArrayField, shouldUnregister]);\n React__default.useEffect(() => {\n if (get$3(control._fields, name)) {\n control._updateDisabledField({\n disabled,\n fields: control._fields,\n name,\n value: get$3(control._fields, name)._f.value\n });\n }\n }, [disabled, name, control]);\n return {\n field: {\n name,\n value,\n ...isBoolean(disabled) || formState.disabled ? { disabled: formState.disabled || disabled } : {},\n onChange: React__default.useCallback((event) => _registerProps.current.onChange({\n target: {\n value: getEventValue(event),\n name\n },\n type: EVENTS.CHANGE\n }), [name]),\n onBlur: React__default.useCallback(() => _registerProps.current.onBlur({\n target: {\n value: get$3(control._formValues, name),\n name\n },\n type: EVENTS.BLUR\n }), [name, control]),\n ref: React__default.useCallback((elm) => {\n const field = get$3(control._fields, name);\n if (field && elm) {\n field._f.ref = {\n focus: () => elm.focus(),\n select: () => elm.select(),\n setCustomValidity: (message2) => elm.setCustomValidity(message2),\n reportValidity: () => elm.reportValidity()\n };\n }\n }, [control._fields, name])\n },\n formState,\n fieldState: Object.defineProperties({}, {\n invalid: {\n enumerable: true,\n get: () => !!get$3(formState.errors, name)\n },\n isDirty: {\n enumerable: true,\n get: () => !!get$3(formState.dirtyFields, name)\n },\n isTouched: {\n enumerable: true,\n get: () => !!get$3(formState.touchedFields, name)\n },\n isValidating: {\n enumerable: true,\n get: () => !!get$3(formState.validatingFields, name)\n },\n error: {\n enumerable: true,\n get: () => get$3(formState.errors, name)\n }\n })\n };\n}\nconst Controller = (props) => props.render(useController(props));\nvar appendErrors = (name, validateAllFieldCriteria, errors, type, message2) => validateAllFieldCriteria ? {\n ...errors[name],\n types: {\n ...errors[name] && errors[name].types ? errors[name].types : {},\n [type]: message2 || true\n }\n} : {};\nvar generateId = () => {\n const d2 = typeof performance === \"undefined\" ? Date.now() : performance.now() * 1e3;\n return \"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\".replace(/[xy]/g, (c2) => {\n const r2 = (Math.random() * 16 + d2) % 16 | 0;\n return (c2 == \"x\" ? r2 : r2 & 3 | 8).toString(16);\n });\n};\nvar getFocusFieldName = (name, index2, options = {}) => options.shouldFocus || isUndefined$1(options.shouldFocus) ? options.focusName || `${name}.${isUndefined$1(options.focusIndex) ? index2 : options.focusIndex}.` : \"\";\nvar getValidationModes = (mode) => ({\n isOnSubmit: !mode || mode === VALIDATION_MODE.onSubmit,\n isOnBlur: mode === VALIDATION_MODE.onBlur,\n isOnChange: mode === VALIDATION_MODE.onChange,\n isOnAll: mode === VALIDATION_MODE.all,\n isOnTouch: mode === VALIDATION_MODE.onTouched\n});\nvar isWatched = (name, _names, isBlurEvent) => !isBlurEvent && (_names.watchAll || _names.watch.has(name) || [..._names.watch].some((watchName) => name.startsWith(watchName) && /^\\.\\w+/.test(name.slice(watchName.length))));\nconst iterateFieldsByAction = (fields, action, fieldsNames, abortEarly) => {\n for (const key of fieldsNames || Object.keys(fields)) {\n const field = get$3(fields, key);\n if (field) {\n const { _f, ...currentField } = field;\n if (_f) {\n if (_f.refs && _f.refs[0] && action(_f.refs[0], key) && !abortEarly) {\n return true;\n } else if (_f.ref && action(_f.ref, _f.name) && !abortEarly) {\n return true;\n } else {\n if (iterateFieldsByAction(currentField, action)) {\n break;\n }\n }\n } else if (isObject$1(currentField)) {\n if (iterateFieldsByAction(currentField, action)) {\n break;\n }\n }\n }\n }\n return;\n};\nvar updateFieldArrayRootError = (errors, error2, name) => {\n const fieldArrayErrors = convertToArrayPayload(get$3(errors, name));\n set$3(fieldArrayErrors, \"root\", error2[name]);\n set$3(errors, name, fieldArrayErrors);\n return errors;\n};\nvar isFileInput = (element) => element.type === \"file\";\nvar isFunction$2 = (value) => typeof value === \"function\";\nvar isHTMLElement$1 = (value) => {\n if (!isWeb) {\n return false;\n }\n const owner = value ? value.ownerDocument : 0;\n return value instanceof (owner && owner.defaultView ? owner.defaultView.HTMLElement : HTMLElement);\n};\nvar isMessage = (value) => isString$1(value);\nvar isRadioInput = (element) => element.type === \"radio\";\nvar isRegex = (value) => value instanceof RegExp;\nconst defaultResult = {\n value: false,\n isValid: false\n};\nconst validResult = { value: true, isValid: true };\nvar getCheckboxValue = (options) => {\n if (Array.isArray(options)) {\n if (options.length > 1) {\n const values2 = options.filter((option) => option && option.checked && !option.disabled).map((option) => option.value);\n return { value: values2, isValid: !!values2.length };\n }\n return options[0].checked && !options[0].disabled ? (\n // @ts-expect-error expected to work in the browser\n options[0].attributes && !isUndefined$1(options[0].attributes.value) ? isUndefined$1(options[0].value) || options[0].value === \"\" ? validResult : { value: options[0].value, isValid: true } : validResult\n ) : defaultResult;\n }\n return defaultResult;\n};\nconst defaultReturn = {\n isValid: false,\n value: null\n};\nvar getRadioValue = (options) => Array.isArray(options) ? options.reduce((previous, option) => option && option.checked && !option.disabled ? {\n isValid: true,\n value: option.value\n} : previous, defaultReturn) : defaultReturn;\nfunction getValidateError(result, ref2, type = \"validate\") {\n if (isMessage(result) || Array.isArray(result) && result.every(isMessage) || isBoolean(result) && !result) {\n return {\n type,\n message: isMessage(result) ? result : \"\",\n ref: ref2\n };\n }\n}\nvar getValueAndMessage = (validationData) => isObject$1(validationData) && !isRegex(validationData) ? validationData : {\n value: validationData,\n message: \"\"\n};\nvar validateField = async (field, formValues, validateAllFieldCriteria, shouldUseNativeValidation, isFieldArray) => {\n const { ref: ref2, refs, required: required2, maxLength, minLength, min: min2, max: max2, pattern, validate, name, valueAsNumber, mount, disabled } = field._f;\n const inputValue = get$3(formValues, name);\n if (!mount || disabled) {\n return {};\n }\n const inputRef = refs ? refs[0] : ref2;\n const setCustomValidity = (message2) => {\n if (shouldUseNativeValidation && inputRef.reportValidity) {\n inputRef.setCustomValidity(isBoolean(message2) ? \"\" : message2 || \"\");\n inputRef.reportValidity();\n }\n };\n const error2 = {};\n const isRadio = isRadioInput(ref2);\n const isCheckBox = isCheckBoxInput(ref2);\n const isRadioOrCheckbox2 = isRadio || isCheckBox;\n const isEmpty2 = (valueAsNumber || isFileInput(ref2)) && isUndefined$1(ref2.value) && isUndefined$1(inputValue) || isHTMLElement$1(ref2) && ref2.value === \"\" || inputValue === \"\" || Array.isArray(inputValue) && !inputValue.length;\n const appendErrorsCurry = appendErrors.bind(null, name, validateAllFieldCriteria, error2);\n const getMinMaxMessage = (exceedMax, maxLengthMessage, minLengthMessage, maxType = INPUT_VALIDATION_RULES.maxLength, minType = INPUT_VALIDATION_RULES.minLength) => {\n const message2 = exceedMax ? maxLengthMessage : minLengthMessage;\n error2[name] = {\n type: exceedMax ? maxType : minType,\n message: message2,\n ref: ref2,\n ...appendErrorsCurry(exceedMax ? maxType : minType, message2)\n };\n };\n if (isFieldArray ? !Array.isArray(inputValue) || !inputValue.length : required2 && (!isRadioOrCheckbox2 && (isEmpty2 || isNullOrUndefined(inputValue)) || isBoolean(inputValue) && !inputValue || isCheckBox && !getCheckboxValue(refs).isValid || isRadio && !getRadioValue(refs).isValid)) {\n const { value, message: message2 } = isMessage(required2) ? { value: !!required2, message: required2 } : getValueAndMessage(required2);\n if (value) {\n error2[name] = {\n type: INPUT_VALIDATION_RULES.required,\n message: message2,\n ref: inputRef,\n ...appendErrorsCurry(INPUT_VALIDATION_RULES.required, message2)\n };\n if (!validateAllFieldCriteria) {\n setCustomValidity(message2);\n return error2;\n }\n }\n }\n if (!isEmpty2 && (!isNullOrUndefined(min2) || !isNullOrUndefined(max2))) {\n let exceedMax;\n let exceedMin;\n const maxOutput = getValueAndMessage(max2);\n const minOutput = getValueAndMessage(min2);\n if (!isNullOrUndefined(inputValue) && !isNaN(inputValue)) {\n const valueNumber = ref2.valueAsNumber || (inputValue ? +inputValue : inputValue);\n if (!isNullOrUndefined(maxOutput.value)) {\n exceedMax = valueNumber > maxOutput.value;\n }\n if (!isNullOrUndefined(minOutput.value)) {\n exceedMin = valueNumber < minOutput.value;\n }\n } else {\n const valueDate = ref2.valueAsDate || new Date(inputValue);\n const convertTimeToDate = (time) => /* @__PURE__ */ new Date((/* @__PURE__ */ new Date()).toDateString() + \" \" + time);\n const isTime = ref2.type == \"time\";\n const isWeek = ref2.type == \"week\";\n if (isString$1(maxOutput.value) && inputValue) {\n exceedMax = isTime ? convertTimeToDate(inputValue) > convertTimeToDate(maxOutput.value) : isWeek ? inputValue > maxOutput.value : valueDate > new Date(maxOutput.value);\n }\n if (isString$1(minOutput.value) && inputValue) {\n exceedMin = isTime ? convertTimeToDate(inputValue) < convertTimeToDate(minOutput.value) : isWeek ? inputValue < minOutput.value : valueDate < new Date(minOutput.value);\n }\n }\n if (exceedMax || exceedMin) {\n getMinMaxMessage(!!exceedMax, maxOutput.message, minOutput.message, INPUT_VALIDATION_RULES.max, INPUT_VALIDATION_RULES.min);\n if (!validateAllFieldCriteria) {\n setCustomValidity(error2[name].message);\n return error2;\n }\n }\n }\n if ((maxLength || minLength) && !isEmpty2 && (isString$1(inputValue) || isFieldArray && Array.isArray(inputValue))) {\n const maxLengthOutput = getValueAndMessage(maxLength);\n const minLengthOutput = getValueAndMessage(minLength);\n const exceedMax = !isNullOrUndefined(maxLengthOutput.value) && inputValue.length > +maxLengthOutput.value;\n const exceedMin = !isNullOrUndefined(minLengthOutput.value) && inputValue.length < +minLengthOutput.value;\n if (exceedMax || exceedMin) {\n getMinMaxMessage(exceedMax, maxLengthOutput.message, minLengthOutput.message);\n if (!validateAllFieldCriteria) {\n setCustomValidity(error2[name].message);\n return error2;\n }\n }\n }\n if (pattern && !isEmpty2 && isString$1(inputValue)) {\n const { value: patternValue, message: message2 } = getValueAndMessage(pattern);\n if (isRegex(patternValue) && !inputValue.match(patternValue)) {\n error2[name] = {\n type: INPUT_VALIDATION_RULES.pattern,\n message: message2,\n ref: ref2,\n ...appendErrorsCurry(INPUT_VALIDATION_RULES.pattern, message2)\n };\n if (!validateAllFieldCriteria) {\n setCustomValidity(message2);\n return error2;\n }\n }\n }\n if (validate) {\n if (isFunction$2(validate)) {\n const result = await validate(inputValue, formValues);\n const validateError = getValidateError(result, inputRef);\n if (validateError) {\n error2[name] = {\n ...validateError,\n ...appendErrorsCurry(INPUT_VALIDATION_RULES.validate, validateError.message)\n };\n if (!validateAllFieldCriteria) {\n setCustomValidity(validateError.message);\n return error2;\n }\n }\n } else if (isObject$1(validate)) {\n let validationResult = {};\n for (const key in validate) {\n if (!isEmptyObject$1(validationResult) && !validateAllFieldCriteria) {\n break;\n }\n const validateError = getValidateError(await validate[key](inputValue, formValues), inputRef, key);\n if (validateError) {\n validationResult = {\n ...validateError,\n ...appendErrorsCurry(key, validateError.message)\n };\n setCustomValidity(validateError.message);\n if (validateAllFieldCriteria) {\n error2[name] = validationResult;\n }\n }\n }\n if (!isEmptyObject$1(validationResult)) {\n error2[name] = {\n ref: inputRef,\n ...validationResult\n };\n if (!validateAllFieldCriteria) {\n return error2;\n }\n }\n }\n }\n setCustomValidity(true);\n return error2;\n};\nvar appendAt = (data, value) => [\n ...data,\n ...convertToArrayPayload(value)\n];\nvar fillEmptyArray = (value) => Array.isArray(value) ? value.map(() => void 0) : void 0;\nfunction insert(data, index2, value) {\n return [\n ...data.slice(0, index2),\n ...convertToArrayPayload(value),\n ...data.slice(index2)\n ];\n}\nvar moveArrayAt = (data, from3, to2) => {\n if (!Array.isArray(data)) {\n return [];\n }\n if (isUndefined$1(data[to2])) {\n data[to2] = void 0;\n }\n data.splice(to2, 0, data.splice(from3, 1)[0]);\n return data;\n};\nvar prependAt = (data, value) => [\n ...convertToArrayPayload(value),\n ...convertToArrayPayload(data)\n];\nfunction removeAtIndexes(data, indexes) {\n let i = 0;\n const temp = [...data];\n for (const index2 of indexes) {\n temp.splice(index2 - i, 1);\n i++;\n }\n return compact(temp).length ? temp : [];\n}\nvar removeArrayAt = (data, index2) => isUndefined$1(index2) ? [] : removeAtIndexes(data, convertToArrayPayload(index2).sort((a2, b2) => a2 - b2));\nvar swapArrayAt = (data, indexA, indexB) => {\n [data[indexA], data[indexB]] = [data[indexB], data[indexA]];\n};\nfunction baseGet(object, updatePath) {\n const length2 = updatePath.slice(0, -1).length;\n let index2 = 0;\n while (index2 < length2) {\n object = isUndefined$1(object) ? index2++ : object[updatePath[index2++]];\n }\n return object;\n}\nfunction isEmptyArray$1(obj) {\n for (const key in obj) {\n if (obj.hasOwnProperty(key) && !isUndefined$1(obj[key])) {\n return false;\n }\n }\n return true;\n}\nfunction unset(object, path) {\n const paths = Array.isArray(path) ? path : isKey(path) ? [path] : stringToPath(path);\n const childObject = paths.length === 1 ? object : baseGet(object, paths);\n const index2 = paths.length - 1;\n const key = paths[index2];\n if (childObject) {\n delete childObject[key];\n }\n if (index2 !== 0 && (isObject$1(childObject) && isEmptyObject$1(childObject) || Array.isArray(childObject) && isEmptyArray$1(childObject))) {\n unset(object, paths.slice(0, -1));\n }\n return object;\n}\nvar updateAt = (fieldValues, index2, value) => {\n fieldValues[index2] = value;\n return fieldValues;\n};\nfunction useFieldArray(props) {\n const methods = useFormContext();\n const { control = methods.control, name, keyName: keyName2 = \"id\", shouldUnregister } = props;\n const [fields, setFields] = React__default.useState(control._getFieldArray(name));\n const ids = React__default.useRef(control._getFieldArray(name).map(generateId));\n const _fieldIds = React__default.useRef(fields);\n const _name = React__default.useRef(name);\n const _actioned = React__default.useRef(false);\n _name.current = name;\n _fieldIds.current = fields;\n control._names.array.add(name);\n props.rules && control.register(name, props.rules);\n useSubscribe({\n next: ({ values: values2, name: fieldArrayName }) => {\n if (fieldArrayName === _name.current || !fieldArrayName) {\n const fieldValues = get$3(values2, _name.current);\n if (Array.isArray(fieldValues)) {\n setFields(fieldValues);\n ids.current = fieldValues.map(generateId);\n }\n }\n },\n subject: control._subjects.array\n });\n const updateValues = React__default.useCallback((updatedFieldArrayValues) => {\n _actioned.current = true;\n control._updateFieldArray(name, updatedFieldArrayValues);\n }, [control, name]);\n const append3 = (value, options) => {\n const appendValue = convertToArrayPayload(cloneObject(value));\n const updatedFieldArrayValues = appendAt(control._getFieldArray(name), appendValue);\n control._names.focus = getFocusFieldName(name, updatedFieldArrayValues.length - 1, options);\n ids.current = appendAt(ids.current, appendValue.map(generateId));\n updateValues(updatedFieldArrayValues);\n setFields(updatedFieldArrayValues);\n control._updateFieldArray(name, updatedFieldArrayValues, appendAt, {\n argA: fillEmptyArray(value)\n });\n };\n const prepend2 = (value, options) => {\n const prependValue = convertToArrayPayload(cloneObject(value));\n const updatedFieldArrayValues = prependAt(control._getFieldArray(name), prependValue);\n control._names.focus = getFocusFieldName(name, 0, options);\n ids.current = prependAt(ids.current, prependValue.map(generateId));\n updateValues(updatedFieldArrayValues);\n setFields(updatedFieldArrayValues);\n control._updateFieldArray(name, updatedFieldArrayValues, prependAt, {\n argA: fillEmptyArray(value)\n });\n };\n const remove = (index2) => {\n const updatedFieldArrayValues = removeArrayAt(control._getFieldArray(name), index2);\n ids.current = removeArrayAt(ids.current, index2);\n updateValues(updatedFieldArrayValues);\n setFields(updatedFieldArrayValues);\n control._updateFieldArray(name, updatedFieldArrayValues, removeArrayAt, {\n argA: index2\n });\n };\n const insert$1 = (index2, value, options) => {\n const insertValue = convertToArrayPayload(cloneObject(value));\n const updatedFieldArrayValues = insert(control._getFieldArray(name), index2, insertValue);\n control._names.focus = getFocusFieldName(name, index2, options);\n ids.current = insert(ids.current, index2, insertValue.map(generateId));\n updateValues(updatedFieldArrayValues);\n setFields(updatedFieldArrayValues);\n control._updateFieldArray(name, updatedFieldArrayValues, insert, {\n argA: index2,\n argB: fillEmptyArray(value)\n });\n };\n const swap = (indexA, indexB) => {\n const updatedFieldArrayValues = control._getFieldArray(name);\n swapArrayAt(updatedFieldArrayValues, indexA, indexB);\n swapArrayAt(ids.current, indexA, indexB);\n updateValues(updatedFieldArrayValues);\n setFields(updatedFieldArrayValues);\n control._updateFieldArray(name, updatedFieldArrayValues, swapArrayAt, {\n argA: indexA,\n argB: indexB\n }, false);\n };\n const move4 = (from3, to2) => {\n const updatedFieldArrayValues = control._getFieldArray(name);\n moveArrayAt(updatedFieldArrayValues, from3, to2);\n moveArrayAt(ids.current, from3, to2);\n updateValues(updatedFieldArrayValues);\n setFields(updatedFieldArrayValues);\n control._updateFieldArray(name, updatedFieldArrayValues, moveArrayAt, {\n argA: from3,\n argB: to2\n }, false);\n };\n const update2 = (index2, value) => {\n const updateValue = cloneObject(value);\n const updatedFieldArrayValues = updateAt(control._getFieldArray(name), index2, updateValue);\n ids.current = [...updatedFieldArrayValues].map((item, i) => !item || i === index2 ? generateId() : ids.current[i]);\n updateValues(updatedFieldArrayValues);\n setFields([...updatedFieldArrayValues]);\n control._updateFieldArray(name, updatedFieldArrayValues, updateAt, {\n argA: index2,\n argB: updateValue\n }, true, false);\n };\n const replace2 = (value) => {\n const updatedFieldArrayValues = convertToArrayPayload(cloneObject(value));\n ids.current = updatedFieldArrayValues.map(generateId);\n updateValues([...updatedFieldArrayValues]);\n setFields([...updatedFieldArrayValues]);\n control._updateFieldArray(name, [...updatedFieldArrayValues], (data) => data, {}, true, false);\n };\n React__default.useEffect(() => {\n control._state.action = false;\n isWatched(name, control._names) && control._subjects.state.next({\n ...control._formState\n });\n if (_actioned.current && (!getValidationModes(control._options.mode).isOnSubmit || control._formState.isSubmitted)) {\n if (control._options.resolver) {\n control._executeSchema([name]).then((result) => {\n const error2 = get$3(result.errors, name);\n const existingError = get$3(control._formState.errors, name);\n if (existingError ? !error2 && existingError.type || error2 && (existingError.type !== error2.type || existingError.message !== error2.message) : error2 && error2.type) {\n error2 ? set$3(control._formState.errors, name, error2) : unset(control._formState.errors, name);\n control._subjects.state.next({\n errors: control._formState.errors\n });\n }\n });\n } else {\n const field = get$3(control._fields, name);\n if (field && field._f && !(getValidationModes(control._options.reValidateMode).isOnSubmit && getValidationModes(control._options.mode).isOnSubmit)) {\n validateField(field, control._formValues, control._options.criteriaMode === VALIDATION_MODE.all, control._options.shouldUseNativeValidation, true).then((error2) => !isEmptyObject$1(error2) && control._subjects.state.next({\n errors: updateFieldArrayRootError(control._formState.errors, error2, name)\n }));\n }\n }\n }\n control._subjects.values.next({\n name,\n values: { ...control._formValues }\n });\n control._names.focus && iterateFieldsByAction(control._fields, (ref2, key) => {\n if (control._names.focus && key.startsWith(control._names.focus) && ref2.focus) {\n ref2.focus();\n return 1;\n }\n return;\n });\n control._names.focus = \"\";\n control._updateValid();\n _actioned.current = false;\n }, [fields, name, control]);\n React__default.useEffect(() => {\n !get$3(control._formValues, name) && control._updateFieldArray(name);\n return () => {\n (control._options.shouldUnregister || shouldUnregister) && control.unregister(name);\n };\n }, [name, control, keyName2, shouldUnregister]);\n return {\n swap: React__default.useCallback(swap, [updateValues, name, control]),\n move: React__default.useCallback(move4, [updateValues, name, control]),\n prepend: React__default.useCallback(prepend2, [updateValues, name, control]),\n append: React__default.useCallback(append3, [updateValues, name, control]),\n remove: React__default.useCallback(remove, [updateValues, name, control]),\n insert: React__default.useCallback(insert$1, [updateValues, name, control]),\n update: React__default.useCallback(update2, [updateValues, name, control]),\n replace: React__default.useCallback(replace2, [updateValues, name, control]),\n fields: React__default.useMemo(() => fields.map((field, index2) => ({\n ...field,\n [keyName2]: ids.current[index2] || generateId()\n })), [fields, keyName2])\n };\n}\nvar createSubject = () => {\n let _observers = [];\n const next2 = (value) => {\n for (const observer of _observers) {\n observer.next && observer.next(value);\n }\n };\n const subscribe = (observer) => {\n _observers.push(observer);\n return {\n unsubscribe: () => {\n _observers = _observers.filter((o2) => o2 !== observer);\n }\n };\n };\n const unsubscribe = () => {\n _observers = [];\n };\n return {\n get observers() {\n return _observers;\n },\n next: next2,\n subscribe,\n unsubscribe\n };\n};\nvar isPrimitive = (value) => isNullOrUndefined(value) || !isObjectType(value);\nfunction deepEqual$2(object1, object2) {\n if (isPrimitive(object1) || isPrimitive(object2)) {\n return object1 === object2;\n }\n if (isDateObject(object1) && isDateObject(object2)) {\n return object1.getTime() === object2.getTime();\n }\n const keys1 = Object.keys(object1);\n const keys2 = Object.keys(object2);\n if (keys1.length !== keys2.length) {\n return false;\n }\n for (const key of keys1) {\n const val1 = object1[key];\n if (!keys2.includes(key)) {\n return false;\n }\n if (key !== \"ref\") {\n const val2 = object2[key];\n if (isDateObject(val1) && isDateObject(val2) || isObject$1(val1) && isObject$1(val2) || Array.isArray(val1) && Array.isArray(val2) ? !deepEqual$2(val1, val2) : val1 !== val2) {\n return false;\n }\n }\n }\n return true;\n}\nvar isMultipleSelect = (element) => element.type === `select-multiple`;\nvar isRadioOrCheckbox = (ref2) => isRadioInput(ref2) || isCheckBoxInput(ref2);\nvar live = (ref2) => isHTMLElement$1(ref2) && ref2.isConnected;\nvar objectHasFunction = (data) => {\n for (const key in data) {\n if (isFunction$2(data[key])) {\n return true;\n }\n }\n return false;\n};\nfunction markFieldsDirty(data, fields = {}) {\n const isParentNodeArray = Array.isArray(data);\n if (isObject$1(data) || isParentNodeArray) {\n for (const key in data) {\n if (Array.isArray(data[key]) || isObject$1(data[key]) && !objectHasFunction(data[key])) {\n fields[key] = Array.isArray(data[key]) ? [] : {};\n markFieldsDirty(data[key], fields[key]);\n } else if (!isNullOrUndefined(data[key])) {\n fields[key] = true;\n }\n }\n }\n return fields;\n}\nfunction getDirtyFieldsFromDefaultValues(data, formValues, dirtyFieldsFromValues) {\n const isParentNodeArray = Array.isArray(data);\n if (isObject$1(data) || isParentNodeArray) {\n for (const key in data) {\n if (Array.isArray(data[key]) || isObject$1(data[key]) && !objectHasFunction(data[key])) {\n if (isUndefined$1(formValues) || isPrimitive(dirtyFieldsFromValues[key])) {\n dirtyFieldsFromValues[key] = Array.isArray(data[key]) ? markFieldsDirty(data[key], []) : { ...markFieldsDirty(data[key]) };\n } else {\n getDirtyFieldsFromDefaultValues(data[key], isNullOrUndefined(formValues) ? {} : formValues[key], dirtyFieldsFromValues[key]);\n }\n } else {\n dirtyFieldsFromValues[key] = !deepEqual$2(data[key], formValues[key]);\n }\n }\n }\n return dirtyFieldsFromValues;\n}\nvar getDirtyFields = (defaultValues, formValues) => getDirtyFieldsFromDefaultValues(defaultValues, formValues, markFieldsDirty(formValues));\nvar getFieldValueAs = (value, { valueAsNumber, valueAsDate, setValueAs }) => isUndefined$1(value) ? value : valueAsNumber ? value === \"\" ? NaN : value ? +value : value : valueAsDate && isString$1(value) ? new Date(value) : setValueAs ? setValueAs(value) : value;\nfunction getFieldValue(_f) {\n const ref2 = _f.ref;\n if (_f.refs ? _f.refs.every((ref3) => ref3.disabled) : ref2.disabled) {\n return;\n }\n if (isFileInput(ref2)) {\n return ref2.files;\n }\n if (isRadioInput(ref2)) {\n return getRadioValue(_f.refs).value;\n }\n if (isMultipleSelect(ref2)) {\n return [...ref2.selectedOptions].map(({ value }) => value);\n }\n if (isCheckBoxInput(ref2)) {\n return getCheckboxValue(_f.refs).value;\n }\n return getFieldValueAs(isUndefined$1(ref2.value) ? _f.ref.value : ref2.value, _f);\n}\nvar getResolverOptions = (fieldsNames, _fields, criteriaMode, shouldUseNativeValidation) => {\n const fields = {};\n for (const name of fieldsNames) {\n const field = get$3(_fields, name);\n field && set$3(fields, name, field._f);\n }\n return {\n criteriaMode,\n names: [...fieldsNames],\n fields,\n shouldUseNativeValidation\n };\n};\nvar getRuleValue = (rule) => isUndefined$1(rule) ? rule : isRegex(rule) ? rule.source : isObject$1(rule) ? isRegex(rule.value) ? rule.value.source : rule.value : rule;\nconst ASYNC_FUNCTION = \"AsyncFunction\";\nvar hasPromiseValidation = (fieldReference) => (!fieldReference || !fieldReference.validate) && !!(isFunction$2(fieldReference.validate) && fieldReference.validate.constructor.name === ASYNC_FUNCTION || isObject$1(fieldReference.validate) && Object.values(fieldReference.validate).find((validateFunction) => validateFunction.constructor.name === ASYNC_FUNCTION));\nvar hasValidation = (options) => options.mount && (options.required || options.min || options.max || options.maxLength || options.minLength || options.pattern || options.validate);\nfunction schemaErrorLookup(errors, _fields, name) {\n const error2 = get$3(errors, name);\n if (error2 || isKey(name)) {\n return {\n error: error2,\n name\n };\n }\n const names = name.split(\".\");\n while (names.length) {\n const fieldName = names.join(\".\");\n const field = get$3(_fields, fieldName);\n const foundError = get$3(errors, fieldName);\n if (field && !Array.isArray(field) && name !== fieldName) {\n return { name };\n }\n if (foundError && foundError.type) {\n return {\n name: fieldName,\n error: foundError\n };\n }\n names.pop();\n }\n return {\n name\n };\n}\nvar skipValidation = (isBlurEvent, isTouched, isSubmitted, reValidateMode, mode) => {\n if (mode.isOnAll) {\n return false;\n } else if (!isSubmitted && mode.isOnTouch) {\n return !(isTouched || isBlurEvent);\n } else if (isSubmitted ? reValidateMode.isOnBlur : mode.isOnBlur) {\n return !isBlurEvent;\n } else if (isSubmitted ? reValidateMode.isOnChange : mode.isOnChange) {\n return isBlurEvent;\n }\n return true;\n};\nvar unsetEmptyArray = (ref2, name) => !compact(get$3(ref2, name)).length && unset(ref2, name);\nconst defaultOptions$1 = {\n mode: VALIDATION_MODE.onSubmit,\n reValidateMode: VALIDATION_MODE.onChange,\n shouldFocusError: true\n};\nfunction createFormControl(props = {}) {\n let _options = {\n ...defaultOptions$1,\n ...props\n };\n let _formState = {\n submitCount: 0,\n isDirty: false,\n isLoading: isFunction$2(_options.defaultValues),\n isValidating: false,\n isSubmitted: false,\n isSubmitting: false,\n isSubmitSuccessful: false,\n isValid: false,\n touchedFields: {},\n dirtyFields: {},\n validatingFields: {},\n errors: _options.errors || {},\n disabled: _options.disabled || false\n };\n let _fields = {};\n let _defaultValues = isObject$1(_options.defaultValues) || isObject$1(_options.values) ? cloneObject(_options.defaultValues || _options.values) || {} : {};\n let _formValues = _options.shouldUnregister ? {} : cloneObject(_defaultValues);\n let _state = {\n action: false,\n mount: false,\n watch: false\n };\n let _names = {\n mount: /* @__PURE__ */ new Set(),\n unMount: /* @__PURE__ */ new Set(),\n array: /* @__PURE__ */ new Set(),\n watch: /* @__PURE__ */ new Set()\n };\n let delayErrorCallback;\n let timer = 0;\n const _proxyFormState = {\n isDirty: false,\n dirtyFields: false,\n validatingFields: false,\n touchedFields: false,\n isValidating: false,\n isValid: false,\n errors: false\n };\n const _subjects = {\n values: createSubject(),\n array: createSubject(),\n state: createSubject()\n };\n const validationModeBeforeSubmit = getValidationModes(_options.mode);\n const validationModeAfterSubmit = getValidationModes(_options.reValidateMode);\n const shouldDisplayAllAssociatedErrors = _options.criteriaMode === VALIDATION_MODE.all;\n const debounce = (callback) => (wait) => {\n clearTimeout(timer);\n timer = setTimeout(callback, wait);\n };\n const _updateValid = async (shouldUpdateValid) => {\n if (!_options.disabled && (_proxyFormState.isValid || shouldUpdateValid)) {\n const isValid2 = _options.resolver ? isEmptyObject$1((await _executeSchema()).errors) : await executeBuiltInValidation(_fields, true);\n if (isValid2 !== _formState.isValid) {\n _subjects.state.next({\n isValid: isValid2\n });\n }\n }\n };\n const _updateIsValidating = (names, isValidating) => {\n if (!_options.disabled && (_proxyFormState.isValidating || _proxyFormState.validatingFields)) {\n (names || Array.from(_names.mount)).forEach((name) => {\n if (name) {\n isValidating ? set$3(_formState.validatingFields, name, isValidating) : unset(_formState.validatingFields, name);\n }\n });\n _subjects.state.next({\n validatingFields: _formState.validatingFields,\n isValidating: !isEmptyObject$1(_formState.validatingFields)\n });\n }\n };\n const _updateFieldArray = (name, values2 = [], method, args, shouldSetValues = true, shouldUpdateFieldsAndState = true) => {\n if (args && method && !_options.disabled) {\n _state.action = true;\n if (shouldUpdateFieldsAndState && Array.isArray(get$3(_fields, name))) {\n const fieldValues = method(get$3(_fields, name), args.argA, args.argB);\n shouldSetValues && set$3(_fields, name, fieldValues);\n }\n if (shouldUpdateFieldsAndState && Array.isArray(get$3(_formState.errors, name))) {\n const errors = method(get$3(_formState.errors, name), args.argA, args.argB);\n shouldSetValues && set$3(_formState.errors, name, errors);\n unsetEmptyArray(_formState.errors, name);\n }\n if (_proxyFormState.touchedFields && shouldUpdateFieldsAndState && Array.isArray(get$3(_formState.touchedFields, name))) {\n const touchedFields = method(get$3(_formState.touchedFields, name), args.argA, args.argB);\n shouldSetValues && set$3(_formState.touchedFields, name, touchedFields);\n }\n if (_proxyFormState.dirtyFields) {\n _formState.dirtyFields = getDirtyFields(_defaultValues, _formValues);\n }\n _subjects.state.next({\n name,\n isDirty: _getDirty(name, values2),\n dirtyFields: _formState.dirtyFields,\n errors: _formState.errors,\n isValid: _formState.isValid\n });\n } else {\n set$3(_formValues, name, values2);\n }\n };\n const updateErrors = (name, error2) => {\n set$3(_formState.errors, name, error2);\n _subjects.state.next({\n errors: _formState.errors\n });\n };\n const _setErrors = (errors) => {\n _formState.errors = errors;\n _subjects.state.next({\n errors: _formState.errors,\n isValid: false\n });\n };\n const updateValidAndValue = (name, shouldSkipSetValueAs, value, ref2) => {\n const field = get$3(_fields, name);\n if (field) {\n const defaultValue = get$3(_formValues, name, isUndefined$1(value) ? get$3(_defaultValues, name) : value);\n isUndefined$1(defaultValue) || ref2 && ref2.defaultChecked || shouldSkipSetValueAs ? set$3(_formValues, name, shouldSkipSetValueAs ? defaultValue : getFieldValue(field._f)) : setFieldValue(name, defaultValue);\n _state.mount && _updateValid();\n }\n };\n const updateTouchAndDirty = (name, fieldValue, isBlurEvent, shouldDirty, shouldRender) => {\n let shouldUpdateField = false;\n let isPreviousDirty = false;\n const output = {\n name\n };\n if (!_options.disabled) {\n const disabledField = !!(get$3(_fields, name) && get$3(_fields, name)._f && get$3(_fields, name)._f.disabled);\n if (!isBlurEvent || shouldDirty) {\n if (_proxyFormState.isDirty) {\n isPreviousDirty = _formState.isDirty;\n _formState.isDirty = output.isDirty = _getDirty();\n shouldUpdateField = isPreviousDirty !== output.isDirty;\n }\n const isCurrentFieldPristine = disabledField || deepEqual$2(get$3(_defaultValues, name), fieldValue);\n isPreviousDirty = !!(!disabledField && get$3(_formState.dirtyFields, name));\n isCurrentFieldPristine || disabledField ? unset(_formState.dirtyFields, name) : set$3(_formState.dirtyFields, name, true);\n output.dirtyFields = _formState.dirtyFields;\n shouldUpdateField = shouldUpdateField || _proxyFormState.dirtyFields && isPreviousDirty !== !isCurrentFieldPristine;\n }\n if (isBlurEvent) {\n const isPreviousFieldTouched = get$3(_formState.touchedFields, name);\n if (!isPreviousFieldTouched) {\n set$3(_formState.touchedFields, name, isBlurEvent);\n output.touchedFields = _formState.touchedFields;\n shouldUpdateField = shouldUpdateField || _proxyFormState.touchedFields && isPreviousFieldTouched !== isBlurEvent;\n }\n }\n shouldUpdateField && shouldRender && _subjects.state.next(output);\n }\n return shouldUpdateField ? output : {};\n };\n const shouldRenderByError = (name, isValid2, error2, fieldState) => {\n const previousFieldError = get$3(_formState.errors, name);\n const shouldUpdateValid = _proxyFormState.isValid && isBoolean(isValid2) && _formState.isValid !== isValid2;\n if (props.delayError && error2) {\n delayErrorCallback = debounce(() => updateErrors(name, error2));\n delayErrorCallback(props.delayError);\n } else {\n clearTimeout(timer);\n delayErrorCallback = null;\n error2 ? set$3(_formState.errors, name, error2) : unset(_formState.errors, name);\n }\n if ((error2 ? !deepEqual$2(previousFieldError, error2) : previousFieldError) || !isEmptyObject$1(fieldState) || shouldUpdateValid) {\n const updatedFormState = {\n ...fieldState,\n ...shouldUpdateValid && isBoolean(isValid2) ? { isValid: isValid2 } : {},\n errors: _formState.errors,\n name\n };\n _formState = {\n ..._formState,\n ...updatedFormState\n };\n _subjects.state.next(updatedFormState);\n }\n };\n const _executeSchema = async (name) => {\n _updateIsValidating(name, true);\n const result = await _options.resolver(_formValues, _options.context, getResolverOptions(name || _names.mount, _fields, _options.criteriaMode, _options.shouldUseNativeValidation));\n _updateIsValidating(name);\n return result;\n };\n const executeSchemaAndUpdateState = async (names) => {\n const { errors } = await _executeSchema(names);\n if (names) {\n for (const name of names) {\n const error2 = get$3(errors, name);\n error2 ? set$3(_formState.errors, name, error2) : unset(_formState.errors, name);\n }\n } else {\n _formState.errors = errors;\n }\n return errors;\n };\n const executeBuiltInValidation = async (fields, shouldOnlyCheckValid, context = {\n valid: true\n }) => {\n for (const name in fields) {\n const field = fields[name];\n if (field) {\n const { _f, ...fieldValue } = field;\n if (_f) {\n const isFieldArrayRoot = _names.array.has(_f.name);\n const isPromiseFunction = field._f && hasPromiseValidation(field._f);\n if (isPromiseFunction && _proxyFormState.validatingFields) {\n _updateIsValidating([name], true);\n }\n const fieldError = await validateField(field, _formValues, shouldDisplayAllAssociatedErrors, _options.shouldUseNativeValidation && !shouldOnlyCheckValid, isFieldArrayRoot);\n if (isPromiseFunction && _proxyFormState.validatingFields) {\n _updateIsValidating([name]);\n }\n if (fieldError[_f.name]) {\n context.valid = false;\n if (shouldOnlyCheckValid) {\n break;\n }\n }\n !shouldOnlyCheckValid && (get$3(fieldError, _f.name) ? isFieldArrayRoot ? updateFieldArrayRootError(_formState.errors, fieldError, _f.name) : set$3(_formState.errors, _f.name, fieldError[_f.name]) : unset(_formState.errors, _f.name));\n }\n !isEmptyObject$1(fieldValue) && await executeBuiltInValidation(fieldValue, shouldOnlyCheckValid, context);\n }\n }\n return context.valid;\n };\n const _removeUnmounted = () => {\n for (const name of _names.unMount) {\n const field = get$3(_fields, name);\n field && (field._f.refs ? field._f.refs.every((ref2) => !live(ref2)) : !live(field._f.ref)) && unregister(name);\n }\n _names.unMount = /* @__PURE__ */ new Set();\n };\n const _getDirty = (name, data) => !_options.disabled && (name && data && set$3(_formValues, name, data), !deepEqual$2(getValues(), _defaultValues));\n const _getWatch = (names, defaultValue, isGlobal) => generateWatchOutput(names, _names, {\n ..._state.mount ? _formValues : isUndefined$1(defaultValue) ? _defaultValues : isString$1(names) ? { [names]: defaultValue } : defaultValue\n }, isGlobal, defaultValue);\n const _getFieldArray = (name) => compact(get$3(_state.mount ? _formValues : _defaultValues, name, props.shouldUnregister ? get$3(_defaultValues, name, []) : []));\n const setFieldValue = (name, value, options = {}) => {\n const field = get$3(_fields, name);\n let fieldValue = value;\n if (field) {\n const fieldReference = field._f;\n if (fieldReference) {\n !fieldReference.disabled && set$3(_formValues, name, getFieldValueAs(value, fieldReference));\n fieldValue = isHTMLElement$1(fieldReference.ref) && isNullOrUndefined(value) ? \"\" : value;\n if (isMultipleSelect(fieldReference.ref)) {\n [...fieldReference.ref.options].forEach((optionRef) => optionRef.selected = fieldValue.includes(optionRef.value));\n } else if (fieldReference.refs) {\n if (isCheckBoxInput(fieldReference.ref)) {\n fieldReference.refs.length > 1 ? fieldReference.refs.forEach((checkboxRef) => (!checkboxRef.defaultChecked || !checkboxRef.disabled) && (checkboxRef.checked = Array.isArray(fieldValue) ? !!fieldValue.find((data) => data === checkboxRef.value) : fieldValue === checkboxRef.value)) : fieldReference.refs[0] && (fieldReference.refs[0].checked = !!fieldValue);\n } else {\n fieldReference.refs.forEach((radioRef) => radioRef.checked = radioRef.value === fieldValue);\n }\n } else if (isFileInput(fieldReference.ref)) {\n fieldReference.ref.value = \"\";\n } else {\n fieldReference.ref.value = fieldValue;\n if (!fieldReference.ref.type) {\n _subjects.values.next({\n name,\n values: { ..._formValues }\n });\n }\n }\n }\n }\n (options.shouldDirty || options.shouldTouch) && updateTouchAndDirty(name, fieldValue, options.shouldTouch, options.shouldDirty, true);\n options.shouldValidate && trigger(name);\n };\n const setValues = (name, value, options) => {\n for (const fieldKey in value) {\n const fieldValue = value[fieldKey];\n const fieldName = `${name}.${fieldKey}`;\n const field = get$3(_fields, fieldName);\n (_names.array.has(name) || isObject$1(fieldValue) || field && !field._f) && !isDateObject(fieldValue) ? setValues(fieldName, fieldValue, options) : setFieldValue(fieldName, fieldValue, options);\n }\n };\n const setValue = (name, value, options = {}) => {\n const field = get$3(_fields, name);\n const isFieldArray = _names.array.has(name);\n const cloneValue = cloneObject(value);\n set$3(_formValues, name, cloneValue);\n if (isFieldArray) {\n _subjects.array.next({\n name,\n values: { ..._formValues }\n });\n if ((_proxyFormState.isDirty || _proxyFormState.dirtyFields) && options.shouldDirty) {\n _subjects.state.next({\n name,\n dirtyFields: getDirtyFields(_defaultValues, _formValues),\n isDirty: _getDirty(name, cloneValue)\n });\n }\n } else {\n field && !field._f && !isNullOrUndefined(cloneValue) ? setValues(name, cloneValue, options) : setFieldValue(name, cloneValue, options);\n }\n isWatched(name, _names) && _subjects.state.next({ ..._formState });\n _subjects.values.next({\n name: _state.mount ? name : void 0,\n values: { ..._formValues }\n });\n };\n const onChange = async (event) => {\n _state.mount = true;\n const target = event.target;\n let name = target.name;\n let isFieldValueUpdated = true;\n const field = get$3(_fields, name);\n const getCurrentFieldValue = () => target.type ? getFieldValue(field._f) : getEventValue(event);\n const _updateIsFieldValueUpdated = (fieldValue) => {\n isFieldValueUpdated = Number.isNaN(fieldValue) || isDateObject(fieldValue) && isNaN(fieldValue.getTime()) || deepEqual$2(fieldValue, get$3(_formValues, name, fieldValue));\n };\n if (field) {\n let error2;\n let isValid2;\n const fieldValue = getCurrentFieldValue();\n const isBlurEvent = event.type === EVENTS.BLUR || event.type === EVENTS.FOCUS_OUT;\n const shouldSkipValidation = !hasValidation(field._f) && !_options.resolver && !get$3(_formState.errors, name) && !field._f.deps || skipValidation(isBlurEvent, get$3(_formState.touchedFields, name), _formState.isSubmitted, validationModeAfterSubmit, validationModeBeforeSubmit);\n const watched = isWatched(name, _names, isBlurEvent);\n set$3(_formValues, name, fieldValue);\n if (isBlurEvent) {\n field._f.onBlur && field._f.onBlur(event);\n delayErrorCallback && delayErrorCallback(0);\n } else if (field._f.onChange) {\n field._f.onChange(event);\n }\n const fieldState = updateTouchAndDirty(name, fieldValue, isBlurEvent, false);\n const shouldRender = !isEmptyObject$1(fieldState) || watched;\n !isBlurEvent && _subjects.values.next({\n name,\n type: event.type,\n values: { ..._formValues }\n });\n if (shouldSkipValidation) {\n if (_proxyFormState.isValid) {\n if (props.mode === \"onBlur\") {\n if (isBlurEvent) {\n _updateValid();\n }\n } else {\n _updateValid();\n }\n }\n return shouldRender && _subjects.state.next({ name, ...watched ? {} : fieldState });\n }\n !isBlurEvent && watched && _subjects.state.next({ ..._formState });\n if (_options.resolver) {\n const { errors } = await _executeSchema([name]);\n _updateIsFieldValueUpdated(fieldValue);\n if (isFieldValueUpdated) {\n const previousErrorLookupResult = schemaErrorLookup(_formState.errors, _fields, name);\n const errorLookupResult = schemaErrorLookup(errors, _fields, previousErrorLookupResult.name || name);\n error2 = errorLookupResult.error;\n name = errorLookupResult.name;\n isValid2 = isEmptyObject$1(errors);\n }\n } else {\n _updateIsValidating([name], true);\n error2 = (await validateField(field, _formValues, shouldDisplayAllAssociatedErrors, _options.shouldUseNativeValidation))[name];\n _updateIsValidating([name]);\n _updateIsFieldValueUpdated(fieldValue);\n if (isFieldValueUpdated) {\n if (error2) {\n isValid2 = false;\n } else if (_proxyFormState.isValid) {\n isValid2 = await executeBuiltInValidation(_fields, true);\n }\n }\n }\n if (isFieldValueUpdated) {\n field._f.deps && trigger(field._f.deps);\n shouldRenderByError(name, isValid2, error2, fieldState);\n }\n }\n };\n const _focusInput = (ref2, key) => {\n if (get$3(_formState.errors, key) && ref2.focus) {\n ref2.focus();\n return 1;\n }\n return;\n };\n const trigger = async (name, options = {}) => {\n let isValid2;\n let validationResult;\n const fieldNames = convertToArrayPayload(name);\n if (_options.resolver) {\n const errors = await executeSchemaAndUpdateState(isUndefined$1(name) ? name : fieldNames);\n isValid2 = isEmptyObject$1(errors);\n validationResult = name ? !fieldNames.some((name2) => get$3(errors, name2)) : isValid2;\n } else if (name) {\n validationResult = (await Promise.all(fieldNames.map(async (fieldName) => {\n const field = get$3(_fields, fieldName);\n return await executeBuiltInValidation(field && field._f ? { [fieldName]: field } : field);\n }))).every(Boolean);\n !(!validationResult && !_formState.isValid) && _updateValid();\n } else {\n validationResult = isValid2 = await executeBuiltInValidation(_fields);\n }\n _subjects.state.next({\n ...!isString$1(name) || _proxyFormState.isValid && isValid2 !== _formState.isValid ? {} : { name },\n ..._options.resolver || !name ? { isValid: isValid2 } : {},\n errors: _formState.errors\n });\n options.shouldFocus && !validationResult && iterateFieldsByAction(_fields, _focusInput, name ? fieldNames : _names.mount);\n return validationResult;\n };\n const getValues = (fieldNames) => {\n const values2 = {\n ..._state.mount ? _formValues : _defaultValues\n };\n return isUndefined$1(fieldNames) ? values2 : isString$1(fieldNames) ? get$3(values2, fieldNames) : fieldNames.map((name) => get$3(values2, name));\n };\n const getFieldState = (name, formState) => ({\n invalid: !!get$3((formState || _formState).errors, name),\n isDirty: !!get$3((formState || _formState).dirtyFields, name),\n error: get$3((formState || _formState).errors, name),\n isValidating: !!get$3(_formState.validatingFields, name),\n isTouched: !!get$3((formState || _formState).touchedFields, name)\n });\n const clearErrors = (name) => {\n name && convertToArrayPayload(name).forEach((inputName) => unset(_formState.errors, inputName));\n _subjects.state.next({\n errors: name ? _formState.errors : {}\n });\n };\n const setError = (name, error2, options) => {\n const ref2 = (get$3(_fields, name, { _f: {} })._f || {}).ref;\n const currentError = get$3(_formState.errors, name) || {};\n const { ref: currentRef, message: message2, type, ...restOfErrorTree } = currentError;\n set$3(_formState.errors, name, {\n ...restOfErrorTree,\n ...error2,\n ref: ref2\n });\n _subjects.state.next({\n name,\n errors: _formState.errors,\n isValid: false\n });\n options && options.shouldFocus && ref2 && ref2.focus && ref2.focus();\n };\n const watch = (name, defaultValue) => isFunction$2(name) ? _subjects.values.subscribe({\n next: (payload) => name(_getWatch(void 0, defaultValue), payload)\n }) : _getWatch(name, defaultValue, true);\n const unregister = (name, options = {}) => {\n for (const fieldName of name ? convertToArrayPayload(name) : _names.mount) {\n _names.mount.delete(fieldName);\n _names.array.delete(fieldName);\n if (!options.keepValue) {\n unset(_fields, fieldName);\n unset(_formValues, fieldName);\n }\n !options.keepError && unset(_formState.errors, fieldName);\n !options.keepDirty && unset(_formState.dirtyFields, fieldName);\n !options.keepTouched && unset(_formState.touchedFields, fieldName);\n !options.keepIsValidating && unset(_formState.validatingFields, fieldName);\n !_options.shouldUnregister && !options.keepDefaultValue && unset(_defaultValues, fieldName);\n }\n _subjects.values.next({\n values: { ..._formValues }\n });\n _subjects.state.next({\n ..._formState,\n ...!options.keepDirty ? {} : { isDirty: _getDirty() }\n });\n !options.keepIsValid && _updateValid();\n };\n const _updateDisabledField = ({ disabled, name, field, fields, value }) => {\n if (isBoolean(disabled) && _state.mount || !!disabled) {\n const inputValue = disabled ? void 0 : isUndefined$1(value) ? getFieldValue(field ? field._f : get$3(fields, name)._f) : value;\n set$3(_formValues, name, inputValue);\n updateTouchAndDirty(name, inputValue, false, false, true);\n }\n };\n const register = (name, options = {}) => {\n let field = get$3(_fields, name);\n const disabledIsDefined = isBoolean(options.disabled) || isBoolean(_options.disabled);\n set$3(_fields, name, {\n ...field || {},\n _f: {\n ...field && field._f ? field._f : { ref: { name } },\n name,\n mount: true,\n ...options\n }\n });\n _names.mount.add(name);\n if (field) {\n _updateDisabledField({\n field,\n disabled: isBoolean(options.disabled) ? options.disabled : _options.disabled,\n name,\n value: options.value\n });\n } else {\n updateValidAndValue(name, true, options.value);\n }\n return {\n ...disabledIsDefined ? { disabled: options.disabled || _options.disabled } : {},\n ..._options.progressive ? {\n required: !!options.required,\n min: getRuleValue(options.min),\n max: getRuleValue(options.max),\n minLength: getRuleValue(options.minLength),\n maxLength: getRuleValue(options.maxLength),\n pattern: getRuleValue(options.pattern)\n } : {},\n name,\n onChange,\n onBlur: onChange,\n ref: (ref2) => {\n if (ref2) {\n register(name, options);\n field = get$3(_fields, name);\n const fieldRef = isUndefined$1(ref2.value) ? ref2.querySelectorAll ? ref2.querySelectorAll(\"input,select,textarea\")[0] || ref2 : ref2 : ref2;\n const radioOrCheckbox = isRadioOrCheckbox(fieldRef);\n const refs = field._f.refs || [];\n if (radioOrCheckbox ? refs.find((option) => option === fieldRef) : fieldRef === field._f.ref) {\n return;\n }\n set$3(_fields, name, {\n _f: {\n ...field._f,\n ...radioOrCheckbox ? {\n refs: [\n ...refs.filter(live),\n fieldRef,\n ...Array.isArray(get$3(_defaultValues, name)) ? [{}] : []\n ],\n ref: { type: fieldRef.type, name }\n } : { ref: fieldRef }\n }\n });\n updateValidAndValue(name, false, void 0, fieldRef);\n } else {\n field = get$3(_fields, name, {});\n if (field._f) {\n field._f.mount = false;\n }\n (_options.shouldUnregister || options.shouldUnregister) && !(isNameInFieldArray(_names.array, name) && _state.action) && _names.unMount.add(name);\n }\n }\n };\n };\n const _focusError = () => _options.shouldFocusError && iterateFieldsByAction(_fields, _focusInput, _names.mount);\n const _disableForm = (disabled) => {\n if (isBoolean(disabled)) {\n _subjects.state.next({ disabled });\n iterateFieldsByAction(_fields, (ref2, name) => {\n const currentField = get$3(_fields, name);\n if (currentField) {\n ref2.disabled = currentField._f.disabled || disabled;\n if (Array.isArray(currentField._f.refs)) {\n currentField._f.refs.forEach((inputRef) => {\n inputRef.disabled = currentField._f.disabled || disabled;\n });\n }\n }\n }, 0, false);\n }\n };\n const handleSubmit = (onValid, onInvalid) => async (e) => {\n let onValidError = void 0;\n if (e) {\n e.preventDefault && e.preventDefault();\n e.persist && e.persist();\n }\n if (_options.disabled) {\n if (onInvalid) {\n await onInvalid({ ..._formState.errors }, e);\n }\n return;\n }\n let fieldValues = cloneObject(_formValues);\n _subjects.state.next({\n isSubmitting: true\n });\n if (_options.resolver) {\n const { errors, values: values2 } = await _executeSchema();\n _formState.errors = errors;\n fieldValues = values2;\n } else {\n await executeBuiltInValidation(_fields);\n }\n unset(_formState.errors, \"root\");\n if (isEmptyObject$1(_formState.errors)) {\n _subjects.state.next({\n errors: {}\n });\n try {\n await onValid(fieldValues, e);\n } catch (error2) {\n onValidError = error2;\n }\n } else {\n if (onInvalid) {\n await onInvalid({ ..._formState.errors }, e);\n }\n _focusError();\n setTimeout(_focusError);\n }\n _subjects.state.next({\n isSubmitted: true,\n isSubmitting: false,\n isSubmitSuccessful: isEmptyObject$1(_formState.errors) && !onValidError,\n submitCount: _formState.submitCount + 1,\n errors: _formState.errors\n });\n if (onValidError) {\n throw onValidError;\n }\n };\n const resetField = (name, options = {}) => {\n if (get$3(_fields, name)) {\n if (isUndefined$1(options.defaultValue)) {\n setValue(name, cloneObject(get$3(_defaultValues, name)));\n } else {\n setValue(name, options.defaultValue);\n set$3(_defaultValues, name, cloneObject(options.defaultValue));\n }\n if (!options.keepTouched) {\n unset(_formState.touchedFields, name);\n }\n if (!options.keepDirty) {\n unset(_formState.dirtyFields, name);\n _formState.isDirty = options.defaultValue ? _getDirty(name, cloneObject(get$3(_defaultValues, name))) : _getDirty();\n }\n if (!options.keepError) {\n unset(_formState.errors, name);\n _proxyFormState.isValid && _updateValid();\n }\n _subjects.state.next({ ..._formState });\n }\n };\n const _reset = (formValues, keepStateOptions = {}) => {\n const updatedValues = formValues ? cloneObject(formValues) : _defaultValues;\n const cloneUpdatedValues = cloneObject(updatedValues);\n const isEmptyResetValues = isEmptyObject$1(formValues);\n const values2 = isEmptyResetValues ? _defaultValues : cloneUpdatedValues;\n if (!keepStateOptions.keepDefaultValues) {\n _defaultValues = updatedValues;\n }\n if (!keepStateOptions.keepValues) {\n if (keepStateOptions.keepDirtyValues) {\n const fieldsToCheck = /* @__PURE__ */ new Set([\n ..._names.mount,\n ...Object.keys(getDirtyFields(_defaultValues, _formValues))\n ]);\n for (const fieldName of Array.from(fieldsToCheck)) {\n get$3(_formState.dirtyFields, fieldName) ? set$3(values2, fieldName, get$3(_formValues, fieldName)) : setValue(fieldName, get$3(values2, fieldName));\n }\n } else {\n if (isWeb && isUndefined$1(formValues)) {\n for (const name of _names.mount) {\n const field = get$3(_fields, name);\n if (field && field._f) {\n const fieldReference = Array.isArray(field._f.refs) ? field._f.refs[0] : field._f.ref;\n if (isHTMLElement$1(fieldReference)) {\n const form = fieldReference.closest(\"form\");\n if (form) {\n form.reset();\n break;\n }\n }\n }\n }\n }\n _fields = {};\n }\n _formValues = props.shouldUnregister ? keepStateOptions.keepDefaultValues ? cloneObject(_defaultValues) : {} : cloneObject(values2);\n _subjects.array.next({\n values: { ...values2 }\n });\n _subjects.values.next({\n values: { ...values2 }\n });\n }\n _names = {\n mount: keepStateOptions.keepDirtyValues ? _names.mount : /* @__PURE__ */ new Set(),\n unMount: /* @__PURE__ */ new Set(),\n array: /* @__PURE__ */ new Set(),\n watch: /* @__PURE__ */ new Set(),\n watchAll: false,\n focus: \"\"\n };\n _state.mount = !_proxyFormState.isValid || !!keepStateOptions.keepIsValid || !!keepStateOptions.keepDirtyValues;\n _state.watch = !!props.shouldUnregister;\n _subjects.state.next({\n submitCount: keepStateOptions.keepSubmitCount ? _formState.submitCount : 0,\n isDirty: isEmptyResetValues ? false : keepStateOptions.keepDirty ? _formState.isDirty : !!(keepStateOptions.keepDefaultValues && !deepEqual$2(formValues, _defaultValues)),\n isSubmitted: keepStateOptions.keepIsSubmitted ? _formState.isSubmitted : false,\n dirtyFields: isEmptyResetValues ? {} : keepStateOptions.keepDirtyValues ? keepStateOptions.keepDefaultValues && _formValues ? getDirtyFields(_defaultValues, _formValues) : _formState.dirtyFields : keepStateOptions.keepDefaultValues && formValues ? getDirtyFields(_defaultValues, formValues) : keepStateOptions.keepDirty ? _formState.dirtyFields : {},\n touchedFields: keepStateOptions.keepTouched ? _formState.touchedFields : {},\n errors: keepStateOptions.keepErrors ? _formState.errors : {},\n isSubmitSuccessful: keepStateOptions.keepIsSubmitSuccessful ? _formState.isSubmitSuccessful : false,\n isSubmitting: false\n });\n };\n const reset2 = (formValues, keepStateOptions) => _reset(isFunction$2(formValues) ? formValues(_formValues) : formValues, keepStateOptions);\n const setFocus = (name, options = {}) => {\n const field = get$3(_fields, name);\n const fieldReference = field && field._f;\n if (fieldReference) {\n const fieldRef = fieldReference.refs ? fieldReference.refs[0] : fieldReference.ref;\n if (fieldRef.focus) {\n fieldRef.focus();\n options.shouldSelect && isFunction$2(fieldRef.select) && fieldRef.select();\n }\n }\n };\n const _updateFormState = (updatedFormState) => {\n _formState = {\n ..._formState,\n ...updatedFormState\n };\n };\n const _resetDefaultValues = () => isFunction$2(_options.defaultValues) && _options.defaultValues().then((values2) => {\n reset2(values2, _options.resetOptions);\n _subjects.state.next({\n isLoading: false\n });\n });\n return {\n control: {\n register,\n unregister,\n getFieldState,\n handleSubmit,\n setError,\n _executeSchema,\n _getWatch,\n _getDirty,\n _updateValid,\n _removeUnmounted,\n _updateFieldArray,\n _updateDisabledField,\n _getFieldArray,\n _reset,\n _resetDefaultValues,\n _updateFormState,\n _disableForm,\n _subjects,\n _proxyFormState,\n _setErrors,\n get _fields() {\n return _fields;\n },\n get _formValues() {\n return _formValues;\n },\n get _state() {\n return _state;\n },\n set _state(value) {\n _state = value;\n },\n get _defaultValues() {\n return _defaultValues;\n },\n get _names() {\n return _names;\n },\n set _names(value) {\n _names = value;\n },\n get _formState() {\n return _formState;\n },\n set _formState(value) {\n _formState = value;\n },\n get _options() {\n return _options;\n },\n set _options(value) {\n _options = {\n ..._options,\n ...value\n };\n }\n },\n trigger,\n register,\n handleSubmit,\n watch,\n setValue,\n getValues,\n reset: reset2,\n resetField,\n clearErrors,\n unregister,\n setError,\n setFocus,\n getFieldState\n };\n}\nfunction useForm(props = {}) {\n const _formControl = React__default.useRef();\n const _values = React__default.useRef();\n const [formState, updateFormState] = React__default.useState({\n isDirty: false,\n isValidating: false,\n isLoading: isFunction$2(props.defaultValues),\n isSubmitted: false,\n isSubmitting: false,\n isSubmitSuccessful: false,\n isValid: false,\n submitCount: 0,\n dirtyFields: {},\n touchedFields: {},\n validatingFields: {},\n errors: props.errors || {},\n disabled: props.disabled || false,\n defaultValues: isFunction$2(props.defaultValues) ? void 0 : props.defaultValues\n });\n if (!_formControl.current) {\n _formControl.current = {\n ...createFormControl(props),\n formState\n };\n }\n const control = _formControl.current.control;\n control._options = props;\n useSubscribe({\n subject: control._subjects.state,\n next: (value) => {\n if (shouldRenderFormState(value, control._proxyFormState, control._updateFormState, true)) {\n updateFormState({ ...control._formState });\n }\n }\n });\n React__default.useEffect(() => control._disableForm(props.disabled), [control, props.disabled]);\n React__default.useEffect(() => {\n if (control._proxyFormState.isDirty) {\n const isDirty = control._getDirty();\n if (isDirty !== formState.isDirty) {\n control._subjects.state.next({\n isDirty\n });\n }\n }\n }, [control, formState.isDirty]);\n React__default.useEffect(() => {\n if (props.values && !deepEqual$2(props.values, _values.current)) {\n control._reset(props.values, control._options.resetOptions);\n _values.current = props.values;\n updateFormState((state) => ({ ...state }));\n } else {\n control._resetDefaultValues();\n }\n }, [props.values, control]);\n React__default.useEffect(() => {\n if (props.errors) {\n control._setErrors(props.errors);\n }\n }, [props.errors, control]);\n React__default.useEffect(() => {\n if (!control._state.mount) {\n control._updateValid();\n control._state.mount = true;\n }\n if (control._state.watch) {\n control._state.watch = false;\n control._subjects.state.next({ ...control._formState });\n }\n control._removeUnmounted();\n });\n React__default.useEffect(() => {\n props.shouldUnregister && control._subjects.values.next({\n values: control._getWatch()\n });\n }, [props.shouldUnregister, control]);\n _formControl.current.formState = getProxyFormState(formState, control);\n return _formControl.current;\n}\nconst useTracks = () => {\n var _a;\n const [selectedTracks, setSelectedTracks] = useState([]);\n const { tracks } = useAdminApi();\n const queryResult = useQuery(\n [\"tracks\"],\n () => tracks.getTracks()\n );\n const result = {\n ...queryResult,\n selectedTracks,\n selectTracks: setSelectedTracks\n };\n if ((_a = result == null ? void 0 : result.data) == null ? void 0 : _a.length) {\n result.tracks = getSortedItems(result.data);\n }\n return result;\n};\nconst idsEqual = (idA, idB) => idA.toString() === idB.toString();\nconst getSlotIndex = (session, slotId) => {\n var _a;\n return (_a = session.slots) == null ? void 0 : _a.findIndex((s2) => idsEqual(s2.id, slotId));\n};\nconst initializeSlot = (session) => ({\n totalCapacity: 0,\n name: `Slot ${session.slots.length + 1}`,\n sort: Infinity\n});\nconst hasSessionFormField = (form, session) => getFieldForSession(form, session) !== void 0;\nconst canSelectSession = (form, formSettings, session) => session.slots.length > 0;\nconst getSessionFieldLabel = (field, session) => {\n if (field.label !== void 0) {\n return field.label;\n }\n if (session !== void 0) {\n return session.name;\n }\n return humanizeString(field.name);\n};\nconst canDeleteSlot = (slot) => slot.numberBooked === void 0 || slot.numberBooked === 0;\nconst canDeleteSession = (form, session) => session.slots.every(canDeleteSlot) && !hasSessionFormField(form, session);\nconst visibleSlots = (field, session) => hasIncludeSlots(field) ? field.includeSlots.map((id) => session.slots.find((s2) => s2.id === id)).filter((s2) => s2 !== void 0) : session.slots;\nconst slotExists = (session, id) => session.slots.some((s2) => idsEqual(id, s2.id));\nconst isVisibleSlot = (field, session, id) => field.includeSlots !== void 0 ? field.includeSlots.some((s2) => idsEqual(id, s2)) : slotExists(session, id);\nconst getPriceOverride = (field, slot) => {\n var _a;\n return (_a = field.priceOverrides) == null ? void 0 : _a[slot.id];\n};\nconst getSessionSlotFieldPrice = (slot, field) => {\n var _a;\n console.log(\"getSessionSlotFieldPrice\", field, slot);\n return ((_a = field == null ? void 0 : field.priceOverrides) == null ? void 0 : _a[slot.id]) || slot.priceInCents;\n};\nconst reducer$2 = (state, action) => {\n switch (action.type) {\n case \"remove_invite\":\n return state.filter(\n (i) => !idsEqual(i.inviterTrackId, action.inviterTrackId)\n );\n case \"add_invite\":\n return [\n ...state,\n {\n inviterTrackId: action.inviterTrackId,\n numberOfInvites: action.numberOfInvites\n }\n ];\n case \"update_invite\":\n return state.map(\n (i) => idsEqual(i.inviterTrackId, action.inviterTrackId) ? { ...i, numberOfInvites: action.numberOfInvites } : i\n );\n }\n};\nconst canDeleteTrack = (track) => track.numberBooked === void 0 || track.numberBooked === 0;\nconst trackHasBookings = (track) => track.numberBooked !== void 0 && track.numberBooked > 0;\nconst isTrackWithBookings = (track) => track !== void 0 && trackHasBookings(track);\nconst getInvitingTracks = (guestTrack, tracks) => tracks.filter(\n (t2) => t2.isGuestTrack !== true && (guestTrack.id === void 0 || !idsEqual(t2.id, guestTrack.id))\n);\nconst guestInvitesFor = (guestTrack, otherTrack) => {\n var _a, _b;\n return (_b = (_a = guestTrack.guestInvites) == null ? void 0 : _a.find(\n (invite) => idsEqual(invite.inviterTrackId, otherTrack.id)\n )) == null ? void 0 : _b.numberOfInvites;\n};\nconst canPrePop = (field) => {\n switch (field.type) {\n case \"info\":\n case \"session_booking\":\n case \"attendee_reference\":\n case \"room_block\":\n return false;\n case \"section\":\n case \"page\":\n return field.fields.some(canPrePop);\n default:\n return true;\n }\n};\nconst prePopChildren = (field) => field.fields.filter(canPrePop);\nconst fieldIsPrePop = (field, prePopFields) => {\n switch (field.type) {\n case \"page\":\n case \"section\":\n return prePopChildren(field).every(\n (field2) => fieldIsPrePop(field2, prePopFields)\n );\n default:\n return prePopFields.includes(field.name);\n }\n};\nconst isTrackWithCapacity = (track) => trackTotalCapacity(track) !== void 0;\nconst isUnlimitedCapacity = (track) => !isTrackWithCapacity(track);\nconst isGuestTrack = (track) => track.isGuestTrack === true;\nconst invitesWithTrack = (guestTrack, tracks) => {\n var _a;\n if (guestTrack.guestInvites === void 0) {\n return [];\n }\n return (_a = guestTrack.guestInvites) == null ? void 0 : _a.reduce(\n (result, invite) => {\n const inviterTrack = tracks.find((t2) => t2.id === invite.inviterTrackId);\n if (inviterTrack !== void 0) {\n result.push({\n numberOfInvites: invite.numberOfInvites,\n inviterTrack\n });\n }\n return result;\n },\n []\n );\n};\nconst guestTrackCapacityViaInvites = (guestTrack, tracks) => {\n const invites = invitesWithTrack(guestTrack, tracks);\n if (invites.some(({ inviterTrack }) => isUnlimitedCapacity(inviterTrack))) {\n return void 0;\n }\n return invites.reduce((tally, invite) => {\n if (isTrackWithCapacity(invite.inviterTrack)) {\n return tally + invite.numberOfInvites * (trackTotalCapacity(invite.inviterTrack) || 0);\n } else {\n return tally;\n }\n }, 0);\n};\nconst trackTotalCapacity = (track) => {\n const sum = track.ticketTypes.reduce(\n (acc, tt2) => tt2.capacity !== void 0 ? acc + tt2.capacity : acc,\n 0\n );\n if (sum === 0) {\n return void 0;\n } else {\n return sum;\n }\n};\nconst guestTrackCapacity = (guestTrack, tracks) => {\n const assignedCapacity = trackTotalCapacity(guestTrack);\n const inviteCapacity = guestTrackCapacityViaInvites(guestTrack, tracks);\n if (assignedCapacity === void 0 && inviteCapacity === void 0) {\n return void 0;\n }\n if (assignedCapacity === void 0) {\n return inviteCapacity;\n }\n if (inviteCapacity === void 0) {\n return assignedCapacity;\n }\n return Math.min(assignedCapacity, inviteCapacity);\n};\nconst trackCapacity = (track, tracks) => isGuestTrack(track) ? guestTrackCapacity(track, tracks) : trackTotalCapacity(track);\nconst getTrackPrice = (track) => {\n const prices = track.ticketTypes.map((t2) => t2.priceInCents).filter((t2) => t2 !== void 0);\n if (prices.length === 0) {\n return null;\n }\n const max2 = Math.max(...prices);\n const min2 = Math.min(...prices);\n if (min2 === max2) {\n return min2;\n }\n return { min: min2, max: max2 };\n};\nconst GuestInviteInput = ({\n guestTrack,\n inviterTrack,\n maxInvites,\n onChange\n}) => {\n const [value, setValue] = useState(\n guestInvitesFor(guestTrack, inviterTrack)\n );\n return /* @__PURE__ */ jsxRuntimeExports.jsxs(\n NumberInput,\n {\n min: 0,\n max: maxInvites,\n value,\n onChange: (valueAsString, valueAsNumber) => {\n if (isNaN(valueAsNumber)) {\n setValue(void 0);\n } else {\n setValue(valueAsNumber);\n }\n onChange(valueAsNumber);\n },\n children: [\n /* @__PURE__ */ jsxRuntimeExports.jsx(NumberInputField, {}),\n /* @__PURE__ */ jsxRuntimeExports.jsxs(NumberInputStepper, { children: [\n /* @__PURE__ */ jsxRuntimeExports.jsx(NumberIncrementStepper, {}),\n /* @__PURE__ */ jsxRuntimeExports.jsx(NumberDecrementStepper, {})\n ] })\n ]\n }\n );\n};\nconst MAX_GUEST_BOOKINGS = 10;\nconst GuestTrackInvites = ({\n guestTrack,\n onChange\n}) => {\n const { data: tracks, error: error2 } = useTracks();\n const [guestInvites, dispatch] = useReducer(\n reducer$2,\n guestTrack.guestInvites || []\n );\n useEffect(() => {\n onChange(guestInvites);\n }, [guestInvites]);\n if (error2) {\n return /* @__PURE__ */ jsxRuntimeExports.jsx(Alert, { status: \"error\", children: \"Error loading tracks\" });\n }\n if (tracks === void 0) {\n return /* @__PURE__ */ jsxRuntimeExports.jsx(Spinner, {});\n }\n const handleInvitesChange = (track, numberOfInvites) => {\n if (isNaN(numberOfInvites) || numberOfInvites === 0) {\n dispatch({ type: \"remove_invite\", inviterTrackId: track.id });\n } else if (guestInvites.some((i) => idsEqual(i.inviterTrackId, track.id))) {\n dispatch({\n type: \"update_invite\",\n inviterTrackId: track.id,\n numberOfInvites\n });\n } else {\n dispatch({\n type: \"add_invite\",\n inviterTrackId: track.id,\n numberOfInvites\n });\n }\n };\n const invitingTracks = getInvitingTracks(guestTrack, tracks);\n if (invitingTracks.length === 0) {\n return /* @__PURE__ */ jsxRuntimeExports.jsx(FormControl, { children: /* @__PURE__ */ jsxRuntimeExports.jsx(Alert, { status: \"warning\", children: \"Please add at least one non-guest track to set guest invite options.\" }) });\n }\n return /* @__PURE__ */ jsxRuntimeExports.jsx(FormControl, { children: /* @__PURE__ */ jsxRuntimeExports.jsxs(VStack, { align: \"left\", px: 4, children: [\n /* @__PURE__ */ jsxRuntimeExports.jsx(FormHelperText, { mb: 4, children: \"Select the number of guests that can be added to this track by attendees registering on other tracks on this event.\" }),\n getInvitingTracks(guestTrack, tracks).map((track) => /* @__PURE__ */ jsxRuntimeExports.jsx(FormControl, { children: /* @__PURE__ */ jsxRuntimeExports.jsxs(Flex, { justifyContent: \"space-between\", alignItems: \"start\", children: [\n /* @__PURE__ */ jsxRuntimeExports.jsxs(FormLabel, { pt: 1, children: [\n /* @__PURE__ */ jsxRuntimeExports.jsx(\"b\", { children: track.name }),\n \" track number of guests\"\n ] }),\n /* @__PURE__ */ jsxRuntimeExports.jsx(Box, { maxW: \"70px\", children: /* @__PURE__ */ jsxRuntimeExports.jsx(\n GuestInviteInput,\n {\n guestTrack,\n inviterTrack: track,\n maxInvites: MAX_GUEST_BOOKINGS,\n onChange: (value) => handleInvitesChange(track, value)\n }\n ) })\n ] }) }, track.id))\n ] }) });\n};\nconst ticketTypeDefaults = {\n name: \"Admission\",\n sort: 1\n};\nconst initTicketType$1 = (ticketType) => ({\n ...ticketType,\n isNew: true,\n id: idGenerator()\n});\nconst defaultTicketType = () => initTicketType$1(ticketTypeDefaults);\nconst initTicketType = (ticketType) => ({\n ...ticketType,\n isNew: true,\n id: idGenerator()\n});\nconst ticketTypeReducer = (state, action) => {\n console.log(\"ticket type reducer action\", action);\n return fn(state, (draft) => {\n var _a;\n switch (action.type) {\n case \"add_ticket_type\": {\n if (draft.ticketTypes === void 0) {\n draft.ticketTypes = [];\n }\n draft.ticketTypes.push(initTicketType(action.payload));\n break;\n }\n case \"update_ticket_type\": {\n const index2 = (_a = draft == null ? void 0 : draft.ticketTypes) == null ? void 0 : _a.findIndex(\n (t2) => idsEqual(t2.id, action.payload.id)\n );\n if (index2 === -1 || index2 === void 0 || draft.ticketTypes === void 0) {\n console.error(\"Missing ticket type index\", action.payload.id);\n break;\n }\n draft.ticketTypes[index2] = {\n ...draft.ticketTypes[index2],\n ...action.payload\n };\n if (draft.ticketTypes[index2].name === void 0 || draft.ticketTypes[index2].name === \"\" || draft.ticketTypes[index2].name === null) {\n draft.ticketTypes[index2].name = ticketTypeDefaults.name;\n }\n break;\n }\n case \"delete_ticket_type\": {\n if (draft.ticketTypes === void 0) {\n console.error(\"No ticket types to delete\");\n break;\n }\n draft.ticketTypes = draft.ticketTypes.filter(\n (t2) => !idsEqual(t2.id, action.payload.id)\n );\n if (draft.deletedTicketTypes === void 0) {\n draft.deletedTicketTypes = [];\n }\n draft.deletedTicketTypes.push(action.payload.id);\n break;\n }\n case \"move_ticket_type\": {\n if (draft.ticketTypes === void 0) {\n console.error(\"Can't move empty ticket types\");\n break;\n }\n const ticketType = draft.ticketTypes[action.payload.fromIndex];\n ticketType.sort = getNewSort(\n draft.ticketTypes,\n action.payload.fromIndex,\n action.payload.toIndex\n );\n draft.ticketTypes = getSortedItems(draft.ticketTypes);\n break;\n }\n }\n });\n};\nconst initializeValue = (value) => value === null ? void 0 : value;\nconst IntegerInput = ({\n onChange,\n value: initialValue,\n ...props\n}) => {\n const [value, setValue] = useState(\n initializeValue(initialValue)\n );\n useEffect(() => {\n setValue(initializeValue(initialValue));\n }, [initialValue]);\n return /* @__PURE__ */ jsxRuntimeExports.jsxs(\n NumberInput,\n {\n ...props,\n value: value === null ? void 0 : value,\n onChange: (valueAsString, valueAsNumber) => {\n setValue(valueAsString);\n if (!isNaN(valueAsNumber)) {\n if (Number.isInteger(valueAsNumber)) {\n onChange(valueAsNumber);\n } else {\n const valueAsInteger = Math.floor(valueAsNumber);\n setValue(valueAsInteger);\n onChange(valueAsInteger);\n }\n } else if (valueAsString === \"\") {\n onChange(void 0);\n }\n },\n children: [\n /* @__PURE__ */ jsxRuntimeExports.jsx(NumberInputField, { style: { marginBottom: 0 } }),\n /* @__PURE__ */ jsxRuntimeExports.jsxs(NumberInputStepper, { children: [\n /* @__PURE__ */ jsxRuntimeExports.jsx(NumberIncrementStepper, {}),\n /* @__PURE__ */ jsxRuntimeExports.jsx(NumberDecrementStepper, {})\n ] })\n ]\n }\n );\n};\nconst PercentageInput = ({\n onChange,\n value: initialValue,\n ...props\n}) => {\n const [value, setValue] = useState(initialValue);\n useEffect(() => {\n setValue(initialValue);\n }, [initialValue]);\n return /* @__PURE__ */ jsxRuntimeExports.jsx(\n NumberInput,\n {\n ...props,\n value,\n onChange: (valueAsString, valueAsNumber) => {\n setValue(valueAsString);\n if (!isNaN(valueAsNumber)) {\n onChange(valueAsNumber);\n }\n },\n children: /* @__PURE__ */ jsxRuntimeExports.jsxs(InputGroup, { children: [\n /* @__PURE__ */ jsxRuntimeExports.jsx(InputLeftAddon, { pl: 2, pr: 1, children: /* @__PURE__ */ jsxRuntimeExports.jsx(Text$2, { as: \"span\", fontSize: \"md\", children: \"%\" }) }),\n /* @__PURE__ */ jsxRuntimeExports.jsx(NumberInputField, { style: { marginBottom: 0 } })\n ] })\n }\n );\n};\nconst PriceInput = ({\n valueInCents,\n defaultValue,\n currency = \"$\",\n precision = 2,\n onChange,\n inputFieldProps = {},\n ...props\n}) => {\n const [value, setValue] = useState(defaultValue);\n useEffect(() => {\n if (valueInCents === void 0 || valueInCents === null) {\n return;\n }\n if (value !== (valueInCents / 100).toFixed(1)) {\n setValue(formatCents(valueInCents));\n }\n }, [valueInCents]);\n const handleChange = (valueString, valueAsNumber) => {\n setValue(valueString);\n if (!isNaN(valueAsNumber)) {\n onChange(numberToCents(valueAsNumber));\n } else {\n onChange(void 0);\n }\n };\n return /* @__PURE__ */ jsxRuntimeExports.jsx(\n NumberInput,\n {\n defaultValue,\n precision: Number.isInteger(Number(value)) ? 0 : precision,\n focusInputOnChange: false,\n size: \"md\",\n min: 0,\n onChange: handleChange,\n value,\n ...props,\n children: /* @__PURE__ */ jsxRuntimeExports.jsxs(InputGroup, { children: [\n /* @__PURE__ */ jsxRuntimeExports.jsx(InputLeftAddon, { pl: 2, pr: 1, children: /* @__PURE__ */ jsxRuntimeExports.jsx(Text$2, { as: \"span\", fontSize: \"md\", children: currency }) }),\n /* @__PURE__ */ jsxRuntimeExports.jsx(NumberInputField, { style: { marginBottom: 0 }, ...inputFieldProps })\n ] })\n }\n );\n};\nfunction tzTokenizeDate(date, timeZone) {\n const dtf = getDateTimeFormat(timeZone);\n return \"formatToParts\" in dtf ? partsOffset(dtf, date) : hackyOffset(dtf, date);\n}\nconst typeToPos = {\n year: 0,\n month: 1,\n day: 2,\n hour: 3,\n minute: 4,\n second: 5\n};\nfunction partsOffset(dtf, date) {\n try {\n const formatted = dtf.formatToParts(date);\n const filled = [];\n for (let i = 0; i < formatted.length; i++) {\n const pos = typeToPos[formatted[i].type];\n if (pos !== void 0) {\n filled[pos] = parseInt(formatted[i].value, 10);\n }\n }\n return filled;\n } catch (error2) {\n if (error2 instanceof RangeError) {\n return [NaN];\n }\n throw error2;\n }\n}\nfunction hackyOffset(dtf, date) {\n const formatted = dtf.format(date);\n const parsed = /(\\d+)\\/(\\d+)\\/(\\d+),? (\\d+):(\\d+):(\\d+)/.exec(formatted);\n return [\n parseInt(parsed[3], 10),\n parseInt(parsed[1], 10),\n parseInt(parsed[2], 10),\n parseInt(parsed[4], 10),\n parseInt(parsed[5], 10),\n parseInt(parsed[6], 10)\n ];\n}\nconst dtfCache = {};\nconst testDateFormatted = new Intl.DateTimeFormat(\"en-US\", {\n hourCycle: \"h23\",\n timeZone: \"America/New_York\",\n year: \"numeric\",\n month: \"2-digit\",\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\"));\nconst hourCycleSupported = testDateFormatted === \"06/25/2014, 00:00:00\" || testDateFormatted === \"‎06‎/‎25‎/‎2014‎ ‎00‎:‎00‎:‎00\";\nfunction getDateTimeFormat(timeZone) {\n if (!dtfCache[timeZone]) {\n dtfCache[timeZone] = hourCycleSupported ? new Intl.DateTimeFormat(\"en-US\", {\n hourCycle: \"h23\",\n timeZone,\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 hour12: false,\n timeZone,\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 dtfCache[timeZone];\n}\nfunction newDateUTC(fullYear, month, day, hour, minute, second, millisecond) {\n const utcDate = /* @__PURE__ */ new Date(0);\n utcDate.setUTCFullYear(fullYear, month, day);\n utcDate.setUTCHours(hour, minute, second, millisecond);\n return utcDate;\n}\nconst MILLISECONDS_IN_HOUR$1 = 36e5;\nconst MILLISECONDS_IN_MINUTE$1 = 6e4;\nconst patterns$2 = {\n timezone: /([Z+-].*)$/,\n timezoneZ: /^(Z)$/,\n timezoneHH: /^([+-]\\d{2})$/,\n timezoneHHMM: /^([+-])(\\d{2}):?(\\d{2})$/\n};\nfunction tzParseTimezone(timezoneString, date, isUtcDate) {\n if (!timezoneString) {\n return 0;\n }\n let token2 = patterns$2.timezoneZ.exec(timezoneString);\n if (token2) {\n return 0;\n }\n let hours2;\n let absoluteOffset;\n token2 = patterns$2.timezoneHH.exec(timezoneString);\n if (token2) {\n hours2 = parseInt(token2[1], 10);\n if (!validateTimezone$1(hours2)) {\n return NaN;\n }\n return -(hours2 * MILLISECONDS_IN_HOUR$1);\n }\n token2 = patterns$2.timezoneHHMM.exec(timezoneString);\n if (token2) {\n hours2 = parseInt(token2[2], 10);\n const minutes2 = parseInt(token2[3], 10);\n if (!validateTimezone$1(hours2, minutes2)) {\n return NaN;\n }\n absoluteOffset = Math.abs(hours2) * MILLISECONDS_IN_HOUR$1 + minutes2 * MILLISECONDS_IN_MINUTE$1;\n return token2[1] === \"+\" ? -absoluteOffset : absoluteOffset;\n }\n if (isValidTimezoneIANAString(timezoneString)) {\n date = new Date(date || Date.now());\n const utcDate = isUtcDate ? date : toUtcDate(date);\n const offset3 = calcOffset(utcDate, timezoneString);\n const fixedOffset = isUtcDate ? offset3 : fixOffset(date, offset3, timezoneString);\n return -fixedOffset;\n }\n return NaN;\n}\nfunction toUtcDate(date) {\n return newDateUTC(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds());\n}\nfunction calcOffset(date, timezoneString) {\n const tokens2 = tzTokenizeDate(date, timezoneString);\n const asUTC = newDateUTC(tokens2[0], tokens2[1] - 1, tokens2[2], tokens2[3] % 24, tokens2[4], tokens2[5], 0).getTime();\n let asTS = date.getTime();\n const over = asTS % 1e3;\n asTS -= over >= 0 ? over : 1e3 + over;\n return asUTC - asTS;\n}\nfunction fixOffset(date, offset3, timezoneString) {\n const localTS = date.getTime();\n let utcGuess = localTS - offset3;\n const o2 = calcOffset(new Date(utcGuess), timezoneString);\n if (offset3 === o2) {\n return offset3;\n }\n utcGuess -= o2 - offset3;\n const o3 = calcOffset(new Date(utcGuess), timezoneString);\n if (o2 === o3) {\n return o2;\n }\n return Math.max(o2, o3);\n}\nfunction validateTimezone$1(hours2, minutes2) {\n return -23 <= hours2 && hours2 <= 23 && (minutes2 == null || 0 <= minutes2 && minutes2 <= 59);\n}\nconst validIANATimezoneCache = {};\nfunction isValidTimezoneIANAString(timeZoneString) {\n if (validIANATimezoneCache[timeZoneString])\n return true;\n try {\n new Intl.DateTimeFormat(void 0, { timeZone: timeZoneString });\n validIANATimezoneCache[timeZoneString] = true;\n return true;\n } catch (error2) {\n return false;\n }\n}\nfunction getTimezoneOffsetInMilliseconds$1(date) {\n const 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 - +utcDate;\n}\nconst tzPattern = /(Z|[+-]\\d{2}(?::?\\d{2})?| UTC| [a-zA-Z]+\\/[a-zA-Z_]+(?:\\/[a-zA-Z_]+)?)$/;\nconst MILLISECONDS_IN_HOUR = 36e5;\nconst MILLISECONDS_IN_MINUTE = 6e4;\nconst DEFAULT_ADDITIONAL_DIGITS = 2;\nconst patterns$1 = {\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: tzPattern\n};\nfunction toDate$2(argument, options = {}) {\n if (arguments.length < 1) {\n throw new TypeError(\"1 argument required, but only \" + arguments.length + \" present\");\n }\n if (argument === null) {\n return /* @__PURE__ */ new Date(NaN);\n }\n const additionalDigits = options.additionalDigits == null ? DEFAULT_ADDITIONAL_DIGITS : Number(options.additionalDigits);\n if (additionalDigits !== 2 && additionalDigits !== 1 && additionalDigits !== 0) {\n throw new RangeError(\"additionalDigits must be 0, 1 or 2\");\n }\n if (argument instanceof Date || typeof argument === \"object\" && Object.prototype.toString.call(argument) === \"[object Date]\") {\n return new Date(argument.getTime());\n } else if (typeof argument === \"number\" || Object.prototype.toString.call(argument) === \"[object Number]\") {\n return new Date(argument);\n } else if (!(Object.prototype.toString.call(argument) === \"[object String]\")) {\n return /* @__PURE__ */ new Date(NaN);\n }\n const dateStrings = splitDateString$1(argument);\n const { year, restDateString } = parseYear$1(dateStrings.date, additionalDigits);\n const date = parseDate$2(restDateString, year);\n if (date === null || isNaN(date.getTime())) {\n return /* @__PURE__ */ new Date(NaN);\n }\n if (date) {\n const timestamp = date.getTime();\n let time = 0;\n let offset3;\n if (dateStrings.time) {\n time = parseTime$1(dateStrings.time);\n if (time === null || isNaN(time)) {\n return /* @__PURE__ */ new Date(NaN);\n }\n }\n if (dateStrings.timeZone || options.timeZone) {\n offset3 = tzParseTimezone(dateStrings.timeZone || options.timeZone, new Date(timestamp + time));\n if (isNaN(offset3)) {\n return /* @__PURE__ */ new Date(NaN);\n }\n } else {\n offset3 = getTimezoneOffsetInMilliseconds$1(new Date(timestamp + time));\n offset3 = getTimezoneOffsetInMilliseconds$1(new Date(timestamp + time + offset3));\n }\n return new Date(timestamp + time + offset3);\n } else {\n return /* @__PURE__ */ new Date(NaN);\n }\n}\nfunction splitDateString$1(dateString) {\n const dateStrings = {};\n let parts = patterns$1.dateTimePattern.exec(dateString);\n let timeString;\n if (!parts) {\n parts = patterns$1.datePattern.exec(dateString);\n if (parts) {\n dateStrings.date = parts[1];\n timeString = parts[2];\n } else {\n dateStrings.date = null;\n timeString = dateString;\n }\n } else {\n dateStrings.date = parts[1];\n timeString = parts[3];\n }\n if (timeString) {\n const token2 = patterns$1.timeZone.exec(timeString);\n if (token2) {\n dateStrings.time = timeString.replace(token2[1], \"\");\n dateStrings.timeZone = token2[1].trim();\n } else {\n dateStrings.time = timeString;\n }\n }\n return dateStrings;\n}\nfunction parseYear$1(dateString, additionalDigits) {\n if (dateString) {\n const patternYYY = patterns$1.YYY[additionalDigits];\n const patternYYYYY = patterns$1.YYYYY[additionalDigits];\n let token2 = patterns$1.YYYY.exec(dateString) || patternYYYYY.exec(dateString);\n if (token2) {\n const yearString = token2[1];\n return {\n year: parseInt(yearString, 10),\n restDateString: dateString.slice(yearString.length)\n };\n }\n token2 = patterns$1.YY.exec(dateString) || patternYYY.exec(dateString);\n if (token2) {\n const centuryString = token2[1];\n return {\n year: parseInt(centuryString, 10) * 100,\n restDateString: dateString.slice(centuryString.length)\n };\n }\n }\n return {\n year: null\n };\n}\nfunction parseDate$2(dateString, year) {\n if (year === null) {\n return null;\n }\n let date;\n let month;\n let week;\n if (!dateString || !dateString.length) {\n date = /* @__PURE__ */ new Date(0);\n date.setUTCFullYear(year);\n return date;\n }\n let token2 = patterns$1.MM.exec(dateString);\n if (token2) {\n date = /* @__PURE__ */ new Date(0);\n month = parseInt(token2[1], 10) - 1;\n if (!validateDate$1(year, month)) {\n return /* @__PURE__ */ new Date(NaN);\n }\n date.setUTCFullYear(year, month);\n return date;\n }\n token2 = patterns$1.DDD.exec(dateString);\n if (token2) {\n date = /* @__PURE__ */ new Date(0);\n const dayOfYear = parseInt(token2[1], 10);\n if (!validateDayOfYearDate$1(year, dayOfYear)) {\n return /* @__PURE__ */ new Date(NaN);\n }\n date.setUTCFullYear(year, 0, dayOfYear);\n return date;\n }\n token2 = patterns$1.MMDD.exec(dateString);\n if (token2) {\n date = /* @__PURE__ */ new Date(0);\n month = parseInt(token2[1], 10) - 1;\n const day = parseInt(token2[2], 10);\n if (!validateDate$1(year, month, day)) {\n return /* @__PURE__ */ new Date(NaN);\n }\n date.setUTCFullYear(year, month, day);\n return date;\n }\n token2 = patterns$1.Www.exec(dateString);\n if (token2) {\n week = parseInt(token2[1], 10) - 1;\n if (!validateWeekDate$1(week)) {\n return /* @__PURE__ */ new Date(NaN);\n }\n return dayOfISOWeekYear$1(year, week);\n }\n token2 = patterns$1.WwwD.exec(dateString);\n if (token2) {\n week = parseInt(token2[1], 10) - 1;\n const dayOfWeek = parseInt(token2[2], 10) - 1;\n if (!validateWeekDate$1(week, dayOfWeek)) {\n return /* @__PURE__ */ new Date(NaN);\n }\n return dayOfISOWeekYear$1(year, week, dayOfWeek);\n }\n return null;\n}\nfunction parseTime$1(timeString) {\n let hours2;\n let minutes2;\n let token2 = patterns$1.HH.exec(timeString);\n if (token2) {\n hours2 = parseFloat(token2[1].replace(\",\", \".\"));\n if (!validateTime$1(hours2)) {\n return NaN;\n }\n return hours2 % 24 * MILLISECONDS_IN_HOUR;\n }\n token2 = patterns$1.HHMM.exec(timeString);\n if (token2) {\n hours2 = parseInt(token2[1], 10);\n minutes2 = parseFloat(token2[2].replace(\",\", \".\"));\n if (!validateTime$1(hours2, minutes2)) {\n return NaN;\n }\n return hours2 % 24 * MILLISECONDS_IN_HOUR + minutes2 * MILLISECONDS_IN_MINUTE;\n }\n token2 = patterns$1.HHMMSS.exec(timeString);\n if (token2) {\n hours2 = parseInt(token2[1], 10);\n minutes2 = parseInt(token2[2], 10);\n const seconds2 = parseFloat(token2[3].replace(\",\", \".\"));\n if (!validateTime$1(hours2, minutes2, seconds2)) {\n return NaN;\n }\n return hours2 % 24 * MILLISECONDS_IN_HOUR + minutes2 * MILLISECONDS_IN_MINUTE + seconds2 * 1e3;\n }\n return null;\n}\nfunction dayOfISOWeekYear$1(isoWeekYear, week, day) {\n week = week || 0;\n day = day || 0;\n const date = /* @__PURE__ */ new Date(0);\n date.setUTCFullYear(isoWeekYear, 0, 4);\n const fourthOfJanuaryDay = date.getUTCDay() || 7;\n const diff2 = week * 7 + day + 1 - fourthOfJanuaryDay;\n date.setUTCDate(date.getUTCDate() + diff2);\n return date;\n}\nconst DAYS_IN_MONTH$1 = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\nconst DAYS_IN_MONTH_LEAP_YEAR$1 = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\nfunction isLeapYearIndex$2(year) {\n return year % 400 === 0 || year % 4 === 0 && year % 100 !== 0;\n}\nfunction validateDate$1(year, month, date) {\n if (month < 0 || month > 11) {\n return false;\n }\n if (date != null) {\n if (date < 1) {\n return false;\n }\n const isLeapYear2 = isLeapYearIndex$2(year);\n if (isLeapYear2 && date > DAYS_IN_MONTH_LEAP_YEAR$1[month]) {\n return false;\n }\n if (!isLeapYear2 && date > DAYS_IN_MONTH$1[month]) {\n return false;\n }\n }\n return true;\n}\nfunction validateDayOfYearDate$1(year, dayOfYear) {\n if (dayOfYear < 1) {\n return false;\n }\n const isLeapYear2 = isLeapYearIndex$2(year);\n if (isLeapYear2 && dayOfYear > 366) {\n return false;\n }\n if (!isLeapYear2 && dayOfYear > 365) {\n return false;\n }\n return true;\n}\nfunction validateWeekDate$1(week, day) {\n if (week < 0 || week > 52) {\n return false;\n }\n if (day != null && (day < 0 || day > 6)) {\n return false;\n }\n return true;\n}\nfunction validateTime$1(hours2, minutes2, seconds2) {\n if (hours2 < 0 || hours2 >= 25) {\n return false;\n }\n if (minutes2 != null && (minutes2 < 0 || minutes2 >= 60)) {\n return false;\n }\n if (seconds2 != null && (seconds2 < 0 || seconds2 >= 60)) {\n return false;\n }\n return true;\n}\nfunction toZonedTime(date, timeZone, options) {\n date = toDate$2(date, options);\n const offsetMilliseconds = tzParseTimezone(timeZone, date, true);\n const d2 = new Date(date.getTime() - offsetMilliseconds);\n const resultDate = /* @__PURE__ */ new Date(0);\n resultDate.setFullYear(d2.getUTCFullYear(), d2.getUTCMonth(), d2.getUTCDate());\n resultDate.setHours(d2.getUTCHours(), d2.getUTCMinutes(), d2.getUTCSeconds(), d2.getUTCMilliseconds());\n return resultDate;\n}\nfunction getTimezoneOffset(timeZone, date) {\n return -tzParseTimezone(timeZone, date);\n}\nfunction r(e) {\n var t2, f2, n2 = \"\";\n if (\"string\" == typeof e || \"number\" == typeof e) n2 += e;\n else if (\"object\" == typeof e) if (Array.isArray(e)) {\n var o2 = e.length;\n for (t2 = 0; t2 < o2; t2++) e[t2] && (f2 = r(e[t2])) && (n2 && (n2 += \" \"), n2 += f2);\n } else for (f2 in e) e[f2] && (n2 && (n2 += \" \"), n2 += f2);\n return n2;\n}\nfunction clsx() {\n for (var e, t2, f2 = 0, n2 = \"\", o2 = arguments.length; f2 < o2; f2++) (e = arguments[f2]) && (t2 = r(e)) && (n2 && (n2 += \" \"), n2 += t2);\n return n2;\n}\nfunction isDate$1(value) {\n return value instanceof Date || typeof value === \"object\" && Object.prototype.toString.call(value) === \"[object Date]\";\n}\nfunction toDate$1(argument) {\n const argStr = Object.prototype.toString.call(argument);\n if (argument instanceof Date || typeof argument === \"object\" && argStr === \"[object Date]\") {\n return new argument.constructor(+argument);\n } else if (typeof argument === \"number\" || argStr === \"[object Number]\" || typeof argument === \"string\" || argStr === \"[object String]\") {\n return new Date(argument);\n } else {\n return /* @__PURE__ */ new Date(NaN);\n }\n}\nfunction isValid$4(date) {\n if (!isDate$1(date) && typeof date !== \"number\") {\n return false;\n }\n const _date = toDate$1(date);\n return !isNaN(Number(_date));\n}\nconst 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};\nconst formatDistance = (token2, count2, options) => {\n let result;\n const tokenValue = formatDistanceLocale[token2];\n if (typeof tokenValue === \"string\") {\n result = tokenValue;\n } else if (count2 === 1) {\n result = tokenValue.one;\n } else {\n result = tokenValue.other.replace(\"{{count}}\", count2.toString());\n }\n if (options == null ? 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};\nfunction buildFormatLongFn(args) {\n return (options = {}) => {\n const width = options.width ? String(options.width) : args.defaultWidth;\n const format2 = args.formats[width] || args.formats[args.defaultWidth];\n return format2;\n };\n}\nconst dateFormats = {\n full: \"EEEE, MMMM do, y\",\n long: \"MMMM do, y\",\n medium: \"MMM d, y\",\n short: \"MM/dd/yyyy\"\n};\nconst 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};\nconst dateTimeFormats = {\n full: \"{{date}} 'at' {{time}}\",\n long: \"{{date}} 'at' {{time}}\",\n medium: \"{{date}}, {{time}}\",\n short: \"{{date}}, {{time}}\"\n};\nconst 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};\nconst 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};\nconst formatRelative = (token2, _date, _baseDate, _options) => formatRelativeLocale[token2];\nfunction buildLocalizeFn(args) {\n return (value, options) => {\n const context = (options == null ? void 0 : options.context) ? String(options.context) : \"standalone\";\n let valuesArray;\n if (context === \"formatting\" && args.formattingValues) {\n const defaultWidth = args.defaultFormattingWidth || args.defaultWidth;\n const width = (options == null ? void 0 : options.width) ? String(options.width) : defaultWidth;\n valuesArray = args.formattingValues[width] || args.formattingValues[defaultWidth];\n } else {\n const defaultWidth = args.defaultWidth;\n const width = (options == null ? void 0 : options.width) ? String(options.width) : args.defaultWidth;\n valuesArray = args.values[width] || args.values[defaultWidth];\n }\n const index2 = args.argumentCallback ? args.argumentCallback(value) : value;\n return valuesArray[index2];\n };\n}\nconst eraValues = {\n narrow: [\"B\", \"A\"],\n abbreviated: [\"BC\", \"AD\"],\n wide: [\"Before Christ\", \"Anno Domini\"]\n};\nconst quarterValues = {\n narrow: [\"1\", \"2\", \"3\", \"4\"],\n abbreviated: [\"Q1\", \"Q2\", \"Q3\", \"Q4\"],\n wide: [\"1st quarter\", \"2nd quarter\", \"3rd quarter\", \"4th quarter\"]\n};\nconst monthValues = {\n narrow: [\"J\", \"F\", \"M\", \"A\", \"M\", \"J\", \"J\", \"A\", \"S\", \"O\", \"N\", \"D\"],\n abbreviated: [\n \"Jan\",\n \"Feb\",\n \"Mar\",\n \"Apr\",\n \"May\",\n \"Jun\",\n \"Jul\",\n \"Aug\",\n \"Sep\",\n \"Oct\",\n \"Nov\",\n \"Dec\"\n ],\n wide: [\n \"January\",\n \"February\",\n \"March\",\n \"April\",\n \"May\",\n \"June\",\n \"July\",\n \"August\",\n \"September\",\n \"October\",\n \"November\",\n \"December\"\n ]\n};\nconst 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: [\n \"Sunday\",\n \"Monday\",\n \"Tuesday\",\n \"Wednesday\",\n \"Thursday\",\n \"Friday\",\n \"Saturday\"\n ]\n};\nconst 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};\nconst 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};\nconst ordinalNumber = (dirtyNumber, _options) => {\n const number = Number(dirtyNumber);\n const 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};\nconst localize = {\n ordinalNumber,\n era: buildLocalizeFn({\n values: eraValues,\n defaultWidth: \"wide\"\n }),\n quarter: buildLocalizeFn({\n values: quarterValues,\n defaultWidth: \"wide\",\n argumentCallback: (quarter) => quarter - 1\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};\nfunction buildMatchFn(args) {\n return (string, options = {}) => {\n const width = options.width;\n const matchPattern = width && args.matchPatterns[width] || args.matchPatterns[args.defaultMatchWidth];\n const matchResult = string.match(matchPattern);\n if (!matchResult) {\n return null;\n }\n const matchedString = matchResult[0];\n const parsePatterns = width && args.parsePatterns[width] || args.parsePatterns[args.defaultParseWidth];\n const key = Array.isArray(parsePatterns) ? findIndex$1(parsePatterns, (pattern) => pattern.test(matchedString)) : (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- I challange you to fix the type\n findKey(parsePatterns, (pattern) => pattern.test(matchedString))\n );\n let value;\n value = args.valueCallback ? args.valueCallback(key) : key;\n value = options.valueCallback ? (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- I challange you to fix the type\n options.valueCallback(value)\n ) : value;\n const rest = string.slice(matchedString.length);\n return { value, rest };\n };\n}\nfunction findKey(object, predicate) {\n for (const key in object) {\n if (Object.prototype.hasOwnProperty.call(object, key) && predicate(object[key])) {\n return key;\n }\n }\n return void 0;\n}\nfunction findIndex$1(array, predicate) {\n for (let key = 0; key < array.length; key++) {\n if (predicate(array[key])) {\n return key;\n }\n }\n return void 0;\n}\nfunction buildMatchPatternFn(args) {\n return (string, options = {}) => {\n const matchResult = string.match(args.matchPattern);\n if (!matchResult) return null;\n const matchedString = matchResult[0];\n const parseResult = string.match(args.parsePattern);\n if (!parseResult) return null;\n let value = args.valueCallback ? args.valueCallback(parseResult[0]) : parseResult[0];\n value = options.valueCallback ? options.valueCallback(value) : value;\n const rest = string.slice(matchedString.length);\n return { value, rest };\n };\n}\nconst matchOrdinalNumberPattern = /^(\\d+)(th|st|nd|rd)?/i;\nconst parseOrdinalNumberPattern = /\\d+/i;\nconst 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};\nconst parseEraPatterns = {\n any: [/^b/i, /^(a|c)/i]\n};\nconst matchQuarterPatterns = {\n narrow: /^[1234]/i,\n abbreviated: /^q[1234]/i,\n wide: /^[1234](th|st|nd|rd)? quarter/i\n};\nconst parseQuarterPatterns = {\n any: [/1/i, /2/i, /3/i, /4/i]\n};\nconst 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};\nconst parseMonthPatterns = {\n narrow: [\n /^j/i,\n /^f/i,\n /^m/i,\n /^a/i,\n /^m/i,\n /^j/i,\n /^j/i,\n /^a/i,\n /^s/i,\n /^o/i,\n /^n/i,\n /^d/i\n ],\n any: [\n /^ja/i,\n /^f/i,\n /^mar/i,\n /^ap/i,\n /^may/i,\n /^jun/i,\n /^jul/i,\n /^au/i,\n /^s/i,\n /^o/i,\n /^n/i,\n /^d/i\n ]\n};\nconst 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};\nconst 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};\nconst 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};\nconst 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};\nconst match$1 = {\n ordinalNumber: buildMatchPatternFn({\n matchPattern: matchOrdinalNumberPattern,\n parsePattern: parseOrdinalNumberPattern,\n valueCallback: (value) => parseInt(value, 10)\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: (index2) => index2 + 1\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};\nconst enUS = {\n code: \"en-US\",\n formatDistance,\n formatLong,\n formatRelative,\n localize,\n match: match$1,\n options: {\n weekStartsOn: 0,\n firstWeekContainsDate: 1\n }\n};\nlet defaultOptions = {};\nfunction getDefaultOptions$1() {\n return defaultOptions;\n}\nconst millisecondsInWeek = 6048e5;\nconst millisecondsInDay = 864e5;\nconst millisecondsInMinute = 6e4;\nconst millisecondsInHour = 36e5;\nconst millisecondsInSecond = 1e3;\nfunction startOfDay(date) {\n const _date = toDate$1(date);\n _date.setHours(0, 0, 0, 0);\n return _date;\n}\nfunction getTimezoneOffsetInMilliseconds(date) {\n const _date = toDate$1(date);\n const utcDate = new Date(\n Date.UTC(\n _date.getFullYear(),\n _date.getMonth(),\n _date.getDate(),\n _date.getHours(),\n _date.getMinutes(),\n _date.getSeconds(),\n _date.getMilliseconds()\n )\n );\n utcDate.setUTCFullYear(_date.getFullYear());\n return +date - +utcDate;\n}\nfunction differenceInCalendarDays(dateLeft, dateRight) {\n const startOfDayLeft = startOfDay(dateLeft);\n const startOfDayRight = startOfDay(dateRight);\n const timestampLeft = +startOfDayLeft - getTimezoneOffsetInMilliseconds(startOfDayLeft);\n const timestampRight = +startOfDayRight - getTimezoneOffsetInMilliseconds(startOfDayRight);\n return Math.round((timestampLeft - timestampRight) / millisecondsInDay);\n}\nfunction constructFrom(date, value) {\n if (date instanceof Date) {\n return new date.constructor(value);\n } else {\n return new Date(value);\n }\n}\nfunction startOfYear(date) {\n const cleanDate = toDate$1(date);\n const _date = constructFrom(date, 0);\n _date.setFullYear(cleanDate.getFullYear(), 0, 1);\n _date.setHours(0, 0, 0, 0);\n return _date;\n}\nfunction getDayOfYear(date) {\n const _date = toDate$1(date);\n const diff2 = differenceInCalendarDays(_date, startOfYear(_date));\n const dayOfYear = diff2 + 1;\n return dayOfYear;\n}\nfunction startOfWeek(date, options) {\n var _a, _b, _c, _d;\n const defaultOptions2 = getDefaultOptions$1();\n const weekStartsOn = (options == null ? void 0 : options.weekStartsOn) ?? ((_b = (_a = options == null ? void 0 : options.locale) == null ? void 0 : _a.options) == null ? void 0 : _b.weekStartsOn) ?? defaultOptions2.weekStartsOn ?? ((_d = (_c = defaultOptions2.locale) == null ? void 0 : _c.options) == null ? void 0 : _d.weekStartsOn) ?? 0;\n const _date = toDate$1(date);\n const day = _date.getDay();\n const diff2 = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n _date.setDate(_date.getDate() - diff2);\n _date.setHours(0, 0, 0, 0);\n return _date;\n}\nfunction startOfISOWeek(date) {\n return startOfWeek(date, { weekStartsOn: 1 });\n}\nfunction getISOWeekYear(date) {\n const _date = toDate$1(date);\n const year = _date.getFullYear();\n const fourthOfJanuaryOfNextYear = constructFrom(date, 0);\n fourthOfJanuaryOfNextYear.setFullYear(year + 1, 0, 4);\n fourthOfJanuaryOfNextYear.setHours(0, 0, 0, 0);\n const startOfNextYear = startOfISOWeek(fourthOfJanuaryOfNextYear);\n const fourthOfJanuaryOfThisYear = constructFrom(date, 0);\n fourthOfJanuaryOfThisYear.setFullYear(year, 0, 4);\n fourthOfJanuaryOfThisYear.setHours(0, 0, 0, 0);\n const 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}\nfunction startOfISOWeekYear(date) {\n const year = getISOWeekYear(date);\n const fourthOfJanuary = constructFrom(date, 0);\n fourthOfJanuary.setFullYear(year, 0, 4);\n fourthOfJanuary.setHours(0, 0, 0, 0);\n return startOfISOWeek(fourthOfJanuary);\n}\nfunction getISOWeek(date) {\n const _date = toDate$1(date);\n const diff2 = +startOfISOWeek(_date) - +startOfISOWeekYear(_date);\n return Math.round(diff2 / millisecondsInWeek) + 1;\n}\nfunction getWeekYear(date, options) {\n var _a, _b, _c, _d;\n const _date = toDate$1(date);\n const year = _date.getFullYear();\n const defaultOptions2 = getDefaultOptions$1();\n const firstWeekContainsDate = (options == null ? void 0 : options.firstWeekContainsDate) ?? ((_b = (_a = options == null ? void 0 : options.locale) == null ? void 0 : _a.options) == null ? void 0 : _b.firstWeekContainsDate) ?? defaultOptions2.firstWeekContainsDate ?? ((_d = (_c = defaultOptions2.locale) == null ? void 0 : _c.options) == null ? void 0 : _d.firstWeekContainsDate) ?? 1;\n const firstWeekOfNextYear = constructFrom(date, 0);\n firstWeekOfNextYear.setFullYear(year + 1, 0, firstWeekContainsDate);\n firstWeekOfNextYear.setHours(0, 0, 0, 0);\n const startOfNextYear = startOfWeek(firstWeekOfNextYear, options);\n const firstWeekOfThisYear = constructFrom(date, 0);\n firstWeekOfThisYear.setFullYear(year, 0, firstWeekContainsDate);\n firstWeekOfThisYear.setHours(0, 0, 0, 0);\n const 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}\nfunction startOfWeekYear(date, options) {\n var _a, _b, _c, _d;\n const defaultOptions2 = getDefaultOptions$1();\n const firstWeekContainsDate = (options == null ? void 0 : options.firstWeekContainsDate) ?? ((_b = (_a = options == null ? void 0 : options.locale) == null ? void 0 : _a.options) == null ? void 0 : _b.firstWeekContainsDate) ?? defaultOptions2.firstWeekContainsDate ?? ((_d = (_c = defaultOptions2.locale) == null ? void 0 : _c.options) == null ? void 0 : _d.firstWeekContainsDate) ?? 1;\n const year = getWeekYear(date, options);\n const firstWeek = constructFrom(date, 0);\n firstWeek.setFullYear(year, 0, firstWeekContainsDate);\n firstWeek.setHours(0, 0, 0, 0);\n const _date = startOfWeek(firstWeek, options);\n return _date;\n}\nfunction getWeek$1(date, options) {\n const _date = toDate$1(date);\n const diff2 = +startOfWeek(_date, options) - +startOfWeekYear(_date, options);\n return Math.round(diff2 / millisecondsInWeek) + 1;\n}\nfunction addLeadingZeros(number, targetLength) {\n const sign2 = number < 0 ? \"-\" : \"\";\n const output = Math.abs(number).toString().padStart(targetLength, \"0\");\n return sign2 + output;\n}\nconst lightFormatters = {\n // Year\n y(date, token2) {\n const signedYear = date.getFullYear();\n const year = signedYear > 0 ? signedYear : 1 - signedYear;\n return addLeadingZeros(token2 === \"yy\" ? year % 100 : year, token2.length);\n },\n // Month\n M(date, token2) {\n const month = date.getMonth();\n return token2 === \"M\" ? String(month + 1) : addLeadingZeros(month + 1, 2);\n },\n // Day of the month\n d(date, token2) {\n return addLeadingZeros(date.getDate(), token2.length);\n },\n // AM or PM\n a(date, token2) {\n const dayPeriodEnumValue = date.getHours() / 12 >= 1 ? \"pm\" : \"am\";\n switch (token2) {\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(date, token2) {\n return addLeadingZeros(date.getHours() % 12 || 12, token2.length);\n },\n // Hour [0-23]\n H(date, token2) {\n return addLeadingZeros(date.getHours(), token2.length);\n },\n // Minute\n m(date, token2) {\n return addLeadingZeros(date.getMinutes(), token2.length);\n },\n // Second\n s(date, token2) {\n return addLeadingZeros(date.getSeconds(), token2.length);\n },\n // Fraction of second\n S(date, token2) {\n const numberOfDigits = token2.length;\n const milliseconds2 = date.getMilliseconds();\n const fractionalSeconds = Math.trunc(\n milliseconds2 * Math.pow(10, numberOfDigits - 3)\n );\n return addLeadingZeros(fractionalSeconds, token2.length);\n }\n};\nconst 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};\nconst formatters = {\n // Era\n G: function(date, token2, localize2) {\n const era = date.getFullYear() > 0 ? 1 : 0;\n switch (token2) {\n // AD, BC\n case \"G\":\n case \"GG\":\n case \"GGG\":\n return localize2.era(era, { width: \"abbreviated\" });\n // A, B\n case \"GGGGG\":\n return localize2.era(era, { width: \"narrow\" });\n // Anno Domini, Before Christ\n case \"GGGG\":\n default:\n return localize2.era(era, { width: \"wide\" });\n }\n },\n // Year\n y: function(date, token2, localize2) {\n if (token2 === \"yo\") {\n const signedYear = date.getFullYear();\n const year = signedYear > 0 ? signedYear : 1 - signedYear;\n return localize2.ordinalNumber(year, { unit: \"year\" });\n }\n return lightFormatters.y(date, token2);\n },\n // Local week-numbering year\n Y: function(date, token2, localize2, options) {\n const signedWeekYear = getWeekYear(date, options);\n const weekYear = signedWeekYear > 0 ? signedWeekYear : 1 - signedWeekYear;\n if (token2 === \"YY\") {\n const twoDigitYear = weekYear % 100;\n return addLeadingZeros(twoDigitYear, 2);\n }\n if (token2 === \"Yo\") {\n return localize2.ordinalNumber(weekYear, { unit: \"year\" });\n }\n return addLeadingZeros(weekYear, token2.length);\n },\n // ISO week-numbering year\n R: function(date, token2) {\n const isoWeekYear = getISOWeekYear(date);\n return addLeadingZeros(isoWeekYear, token2.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(date, token2) {\n const year = date.getFullYear();\n return addLeadingZeros(year, token2.length);\n },\n // Quarter\n Q: function(date, token2, localize2) {\n const quarter = Math.ceil((date.getMonth() + 1) / 3);\n switch (token2) {\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 localize2.ordinalNumber(quarter, { unit: \"quarter\" });\n // Q1, Q2, Q3, Q4\n case \"QQQ\":\n return localize2.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 localize2.quarter(quarter, {\n width: \"narrow\",\n context: \"formatting\"\n });\n // 1st quarter, 2nd quarter, ...\n case \"QQQQ\":\n default:\n return localize2.quarter(quarter, {\n width: \"wide\",\n context: \"formatting\"\n });\n }\n },\n // Stand-alone quarter\n q: function(date, token2, localize2) {\n const quarter = Math.ceil((date.getMonth() + 1) / 3);\n switch (token2) {\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 localize2.ordinalNumber(quarter, { unit: \"quarter\" });\n // Q1, Q2, Q3, Q4\n case \"qqq\":\n return localize2.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 localize2.quarter(quarter, {\n width: \"narrow\",\n context: \"standalone\"\n });\n // 1st quarter, 2nd quarter, ...\n case \"qqqq\":\n default:\n return localize2.quarter(quarter, {\n width: \"wide\",\n context: \"standalone\"\n });\n }\n },\n // Month\n M: function(date, token2, localize2) {\n const month = date.getMonth();\n switch (token2) {\n case \"M\":\n case \"MM\":\n return lightFormatters.M(date, token2);\n // 1st, 2nd, ..., 12th\n case \"Mo\":\n return localize2.ordinalNumber(month + 1, { unit: \"month\" });\n // Jan, Feb, ..., Dec\n case \"MMM\":\n return localize2.month(month, {\n width: \"abbreviated\",\n context: \"formatting\"\n });\n // J, F, ..., D\n case \"MMMMM\":\n return localize2.month(month, {\n width: \"narrow\",\n context: \"formatting\"\n });\n // January, February, ..., December\n case \"MMMM\":\n default:\n return localize2.month(month, { width: \"wide\", context: \"formatting\" });\n }\n },\n // Stand-alone month\n L: function(date, token2, localize2) {\n const month = date.getMonth();\n switch (token2) {\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 localize2.ordinalNumber(month + 1, { unit: \"month\" });\n // Jan, Feb, ..., Dec\n case \"LLL\":\n return localize2.month(month, {\n width: \"abbreviated\",\n context: \"standalone\"\n });\n // J, F, ..., D\n case \"LLLLL\":\n return localize2.month(month, {\n width: \"narrow\",\n context: \"standalone\"\n });\n // January, February, ..., December\n case \"LLLL\":\n default:\n return localize2.month(month, { width: \"wide\", context: \"standalone\" });\n }\n },\n // Local week of year\n w: function(date, token2, localize2, options) {\n const week = getWeek$1(date, options);\n if (token2 === \"wo\") {\n return localize2.ordinalNumber(week, { unit: \"week\" });\n }\n return addLeadingZeros(week, token2.length);\n },\n // ISO week of year\n I: function(date, token2, localize2) {\n const isoWeek = getISOWeek(date);\n if (token2 === \"Io\") {\n return localize2.ordinalNumber(isoWeek, { unit: \"week\" });\n }\n return addLeadingZeros(isoWeek, token2.length);\n },\n // Day of the month\n d: function(date, token2, localize2) {\n if (token2 === \"do\") {\n return localize2.ordinalNumber(date.getDate(), { unit: \"date\" });\n }\n return lightFormatters.d(date, token2);\n },\n // Day of year\n D: function(date, token2, localize2) {\n const dayOfYear = getDayOfYear(date);\n if (token2 === \"Do\") {\n return localize2.ordinalNumber(dayOfYear, { unit: \"dayOfYear\" });\n }\n return addLeadingZeros(dayOfYear, token2.length);\n },\n // Day of week\n E: function(date, token2, localize2) {\n const dayOfWeek = date.getDay();\n switch (token2) {\n // Tue\n case \"E\":\n case \"EE\":\n case \"EEE\":\n return localize2.day(dayOfWeek, {\n width: \"abbreviated\",\n context: \"formatting\"\n });\n // T\n case \"EEEEE\":\n return localize2.day(dayOfWeek, {\n width: \"narrow\",\n context: \"formatting\"\n });\n // Tu\n case \"EEEEEE\":\n return localize2.day(dayOfWeek, {\n width: \"short\",\n context: \"formatting\"\n });\n // Tuesday\n case \"EEEE\":\n default:\n return localize2.day(dayOfWeek, {\n width: \"wide\",\n context: \"formatting\"\n });\n }\n },\n // Local day of week\n e: function(date, token2, localize2, options) {\n const dayOfWeek = date.getDay();\n const localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n switch (token2) {\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 localize2.ordinalNumber(localDayOfWeek, { unit: \"day\" });\n case \"eee\":\n return localize2.day(dayOfWeek, {\n width: \"abbreviated\",\n context: \"formatting\"\n });\n // T\n case \"eeeee\":\n return localize2.day(dayOfWeek, {\n width: \"narrow\",\n context: \"formatting\"\n });\n // Tu\n case \"eeeeee\":\n return localize2.day(dayOfWeek, {\n width: \"short\",\n context: \"formatting\"\n });\n // Tuesday\n case \"eeee\":\n default:\n return localize2.day(dayOfWeek, {\n width: \"wide\",\n context: \"formatting\"\n });\n }\n },\n // Stand-alone local day of week\n c: function(date, token2, localize2, options) {\n const dayOfWeek = date.getDay();\n const localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n switch (token2) {\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, token2.length);\n // 1st, 2nd, ..., 7th\n case \"co\":\n return localize2.ordinalNumber(localDayOfWeek, { unit: \"day\" });\n case \"ccc\":\n return localize2.day(dayOfWeek, {\n width: \"abbreviated\",\n context: \"standalone\"\n });\n // T\n case \"ccccc\":\n return localize2.day(dayOfWeek, {\n width: \"narrow\",\n context: \"standalone\"\n });\n // Tu\n case \"cccccc\":\n return localize2.day(dayOfWeek, {\n width: \"short\",\n context: \"standalone\"\n });\n // Tuesday\n case \"cccc\":\n default:\n return localize2.day(dayOfWeek, {\n width: \"wide\",\n context: \"standalone\"\n });\n }\n },\n // ISO day of week\n i: function(date, token2, localize2) {\n const dayOfWeek = date.getDay();\n const isoDayOfWeek = dayOfWeek === 0 ? 7 : dayOfWeek;\n switch (token2) {\n // 2\n case \"i\":\n return String(isoDayOfWeek);\n // 02\n case \"ii\":\n return addLeadingZeros(isoDayOfWeek, token2.length);\n // 2nd\n case \"io\":\n return localize2.ordinalNumber(isoDayOfWeek, { unit: \"day\" });\n // Tue\n case \"iii\":\n return localize2.day(dayOfWeek, {\n width: \"abbreviated\",\n context: \"formatting\"\n });\n // T\n case \"iiiii\":\n return localize2.day(dayOfWeek, {\n width: \"narrow\",\n context: \"formatting\"\n });\n // Tu\n case \"iiiiii\":\n return localize2.day(dayOfWeek, {\n width: \"short\",\n context: \"formatting\"\n });\n // Tuesday\n case \"iiii\":\n default:\n return localize2.day(dayOfWeek, {\n width: \"wide\",\n context: \"formatting\"\n });\n }\n },\n // AM or PM\n a: function(date, token2, localize2) {\n const hours2 = date.getHours();\n const dayPeriodEnumValue = hours2 / 12 >= 1 ? \"pm\" : \"am\";\n switch (token2) {\n case \"a\":\n case \"aa\":\n return localize2.dayPeriod(dayPeriodEnumValue, {\n width: \"abbreviated\",\n context: \"formatting\"\n });\n case \"aaa\":\n return localize2.dayPeriod(dayPeriodEnumValue, {\n width: \"abbreviated\",\n context: \"formatting\"\n }).toLowerCase();\n case \"aaaaa\":\n return localize2.dayPeriod(dayPeriodEnumValue, {\n width: \"narrow\",\n context: \"formatting\"\n });\n case \"aaaa\":\n default:\n return localize2.dayPeriod(dayPeriodEnumValue, {\n width: \"wide\",\n context: \"formatting\"\n });\n }\n },\n // AM, PM, midnight, noon\n b: function(date, token2, localize2) {\n const hours2 = date.getHours();\n let dayPeriodEnumValue;\n if (hours2 === 12) {\n dayPeriodEnumValue = dayPeriodEnum.noon;\n } else if (hours2 === 0) {\n dayPeriodEnumValue = dayPeriodEnum.midnight;\n } else {\n dayPeriodEnumValue = hours2 / 12 >= 1 ? \"pm\" : \"am\";\n }\n switch (token2) {\n case \"b\":\n case \"bb\":\n return localize2.dayPeriod(dayPeriodEnumValue, {\n width: \"abbreviated\",\n context: \"formatting\"\n });\n case \"bbb\":\n return localize2.dayPeriod(dayPeriodEnumValue, {\n width: \"abbreviated\",\n context: \"formatting\"\n }).toLowerCase();\n case \"bbbbb\":\n return localize2.dayPeriod(dayPeriodEnumValue, {\n width: \"narrow\",\n context: \"formatting\"\n });\n case \"bbbb\":\n default:\n return localize2.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(date, token2, localize2) {\n const hours2 = date.getHours();\n let dayPeriodEnumValue;\n if (hours2 >= 17) {\n dayPeriodEnumValue = dayPeriodEnum.evening;\n } else if (hours2 >= 12) {\n dayPeriodEnumValue = dayPeriodEnum.afternoon;\n } else if (hours2 >= 4) {\n dayPeriodEnumValue = dayPeriodEnum.morning;\n } else {\n dayPeriodEnumValue = dayPeriodEnum.night;\n }\n switch (token2) {\n case \"B\":\n case \"BB\":\n case \"BBB\":\n return localize2.dayPeriod(dayPeriodEnumValue, {\n width: \"abbreviated\",\n context: \"formatting\"\n });\n case \"BBBBB\":\n return localize2.dayPeriod(dayPeriodEnumValue, {\n width: \"narrow\",\n context: \"formatting\"\n });\n case \"BBBB\":\n default:\n return localize2.dayPeriod(dayPeriodEnumValue, {\n width: \"wide\",\n context: \"formatting\"\n });\n }\n },\n // Hour [1-12]\n h: function(date, token2, localize2) {\n if (token2 === \"ho\") {\n let hours2 = date.getHours() % 12;\n if (hours2 === 0) hours2 = 12;\n return localize2.ordinalNumber(hours2, { unit: \"hour\" });\n }\n return lightFormatters.h(date, token2);\n },\n // Hour [0-23]\n H: function(date, token2, localize2) {\n if (token2 === \"Ho\") {\n return localize2.ordinalNumber(date.getHours(), { unit: \"hour\" });\n }\n return lightFormatters.H(date, token2);\n },\n // Hour [0-11]\n K: function(date, token2, localize2) {\n const hours2 = date.getHours() % 12;\n if (token2 === \"Ko\") {\n return localize2.ordinalNumber(hours2, { unit: \"hour\" });\n }\n return addLeadingZeros(hours2, token2.length);\n },\n // Hour [1-24]\n k: function(date, token2, localize2) {\n let hours2 = date.getHours();\n if (hours2 === 0) hours2 = 24;\n if (token2 === \"ko\") {\n return localize2.ordinalNumber(hours2, { unit: \"hour\" });\n }\n return addLeadingZeros(hours2, token2.length);\n },\n // Minute\n m: function(date, token2, localize2) {\n if (token2 === \"mo\") {\n return localize2.ordinalNumber(date.getMinutes(), { unit: \"minute\" });\n }\n return lightFormatters.m(date, token2);\n },\n // Second\n s: function(date, token2, localize2) {\n if (token2 === \"so\") {\n return localize2.ordinalNumber(date.getSeconds(), { unit: \"second\" });\n }\n return lightFormatters.s(date, token2);\n },\n // Fraction of second\n S: function(date, token2) {\n return lightFormatters.S(date, token2);\n },\n // Timezone (ISO-8601. If offset is 0, output is always `'Z'`)\n X: function(date, token2, _localize) {\n const timezoneOffset = date.getTimezoneOffset();\n if (timezoneOffset === 0) {\n return \"Z\";\n }\n switch (token2) {\n // Hours and optional minutes\n case \"X\":\n return formatTimezoneWithOptionalMinutes(timezoneOffset);\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 return formatTimezone(timezoneOffset);\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\":\n // 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(date, token2, _localize) {\n const timezoneOffset = date.getTimezoneOffset();\n switch (token2) {\n // Hours and optional minutes\n case \"x\":\n return formatTimezoneWithOptionalMinutes(timezoneOffset);\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 return formatTimezone(timezoneOffset);\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\":\n // Hours and minutes with `:` delimiter\n default:\n return formatTimezone(timezoneOffset, \":\");\n }\n },\n // Timezone (GMT)\n O: function(date, token2, _localize) {\n const timezoneOffset = date.getTimezoneOffset();\n switch (token2) {\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(date, token2, _localize) {\n const timezoneOffset = date.getTimezoneOffset();\n switch (token2) {\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(date, token2, _localize) {\n const timestamp = Math.trunc(date.getTime() / 1e3);\n return addLeadingZeros(timestamp, token2.length);\n },\n // Milliseconds timestamp\n T: function(date, token2, _localize) {\n const timestamp = date.getTime();\n return addLeadingZeros(timestamp, token2.length);\n }\n};\nfunction formatTimezoneShort(offset3, delimiter2 = \"\") {\n const sign2 = offset3 > 0 ? \"-\" : \"+\";\n const absOffset = Math.abs(offset3);\n const hours2 = Math.trunc(absOffset / 60);\n const minutes2 = absOffset % 60;\n if (minutes2 === 0) {\n return sign2 + String(hours2);\n }\n return sign2 + String(hours2) + delimiter2 + addLeadingZeros(minutes2, 2);\n}\nfunction formatTimezoneWithOptionalMinutes(offset3, delimiter2) {\n if (offset3 % 60 === 0) {\n const sign2 = offset3 > 0 ? \"-\" : \"+\";\n return sign2 + addLeadingZeros(Math.abs(offset3) / 60, 2);\n }\n return formatTimezone(offset3, delimiter2);\n}\nfunction formatTimezone(offset3, delimiter2 = \"\") {\n const sign2 = offset3 > 0 ? \"-\" : \"+\";\n const absOffset = Math.abs(offset3);\n const hours2 = addLeadingZeros(Math.trunc(absOffset / 60), 2);\n const minutes2 = addLeadingZeros(absOffset % 60, 2);\n return sign2 + hours2 + delimiter2 + minutes2;\n}\nconst dateLongFormatter = (pattern, formatLong2) => {\n switch (pattern) {\n case \"P\":\n return formatLong2.date({ width: \"short\" });\n case \"PP\":\n return formatLong2.date({ width: \"medium\" });\n case \"PPP\":\n return formatLong2.date({ width: \"long\" });\n case \"PPPP\":\n default:\n return formatLong2.date({ width: \"full\" });\n }\n};\nconst timeLongFormatter = (pattern, formatLong2) => {\n switch (pattern) {\n case \"p\":\n return formatLong2.time({ width: \"short\" });\n case \"pp\":\n return formatLong2.time({ width: \"medium\" });\n case \"ppp\":\n return formatLong2.time({ width: \"long\" });\n case \"pppp\":\n default:\n return formatLong2.time({ width: \"full\" });\n }\n};\nconst dateTimeLongFormatter = (pattern, formatLong2) => {\n const matchResult = pattern.match(/(P+)(p+)?/) || [];\n const datePattern = matchResult[1];\n const timePattern = matchResult[2];\n if (!timePattern) {\n return dateLongFormatter(pattern, formatLong2);\n }\n let dateTimeFormat;\n switch (datePattern) {\n case \"P\":\n dateTimeFormat = formatLong2.dateTime({ width: \"short\" });\n break;\n case \"PP\":\n dateTimeFormat = formatLong2.dateTime({ width: \"medium\" });\n break;\n case \"PPP\":\n dateTimeFormat = formatLong2.dateTime({ width: \"long\" });\n break;\n case \"PPPP\":\n default:\n dateTimeFormat = formatLong2.dateTime({ width: \"full\" });\n break;\n }\n return dateTimeFormat.replace(\"{{date}}\", dateLongFormatter(datePattern, formatLong2)).replace(\"{{time}}\", timeLongFormatter(timePattern, formatLong2));\n};\nconst longFormatters = {\n p: timeLongFormatter,\n P: dateTimeLongFormatter\n};\nconst dayOfYearTokenRE = /^D+$/;\nconst weekYearTokenRE = /^Y+$/;\nconst throwTokens = [\"D\", \"DD\", \"YY\", \"YYYY\"];\nfunction isProtectedDayOfYearToken(token2) {\n return dayOfYearTokenRE.test(token2);\n}\nfunction isProtectedWeekYearToken(token2) {\n return weekYearTokenRE.test(token2);\n}\nfunction warnOrThrowProtectedError(token2, format2, input) {\n const _message = message(token2, format2, input);\n console.warn(_message);\n if (throwTokens.includes(token2)) throw new RangeError(_message);\n}\nfunction message(token2, format2, input) {\n const subject = token2[0] === \"Y\" ? \"years\" : \"days of the month\";\n return `Use \\`${token2.toLowerCase()}\\` instead of \\`${token2}\\` (in \\`${format2}\\`) for formatting ${subject} to the input \\`${input}\\`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md`;\n}\nconst formattingTokensRegExp$1 = /[yYQqMLwIdDecihHKkms]o|(\\w)\\1*|''|'(''|[^'])+('|$)|./g;\nconst longFormattingTokensRegExp$2 = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g;\nconst escapedStringRegExp$1 = /^'([^]*?)'?$/;\nconst doubleQuoteRegExp$1 = /''/g;\nconst unescapedLatinCharacterRegExp$1 = /[a-zA-Z]/;\nfunction format$1(date, formatStr, options) {\n var _a, _b, _c, _d, _e, _f, _g, _h;\n const defaultOptions2 = getDefaultOptions$1();\n const locale2 = (options == null ? void 0 : options.locale) ?? defaultOptions2.locale ?? enUS;\n const firstWeekContainsDate = (options == null ? void 0 : options.firstWeekContainsDate) ?? ((_b = (_a = options == null ? void 0 : options.locale) == null ? void 0 : _a.options) == null ? void 0 : _b.firstWeekContainsDate) ?? defaultOptions2.firstWeekContainsDate ?? ((_d = (_c = defaultOptions2.locale) == null ? void 0 : _c.options) == null ? void 0 : _d.firstWeekContainsDate) ?? 1;\n const weekStartsOn = (options == null ? void 0 : options.weekStartsOn) ?? ((_f = (_e = options == null ? void 0 : options.locale) == null ? void 0 : _e.options) == null ? void 0 : _f.weekStartsOn) ?? defaultOptions2.weekStartsOn ?? ((_h = (_g = defaultOptions2.locale) == null ? void 0 : _g.options) == null ? void 0 : _h.weekStartsOn) ?? 0;\n const originalDate = toDate$1(date);\n if (!isValid$4(originalDate)) {\n throw new RangeError(\"Invalid time value\");\n }\n let parts = formatStr.match(longFormattingTokensRegExp$2).map((substring) => {\n const firstCharacter = substring[0];\n if (firstCharacter === \"p\" || firstCharacter === \"P\") {\n const longFormatter = longFormatters[firstCharacter];\n return longFormatter(substring, locale2.formatLong);\n }\n return substring;\n }).join(\"\").match(formattingTokensRegExp$1).map((substring) => {\n if (substring === \"''\") {\n return { isToken: false, value: \"'\" };\n }\n const firstCharacter = substring[0];\n if (firstCharacter === \"'\") {\n return { isToken: false, value: cleanEscapedString$1(substring) };\n }\n if (formatters[firstCharacter]) {\n return { isToken: true, value: substring };\n }\n if (firstCharacter.match(unescapedLatinCharacterRegExp$1)) {\n throw new RangeError(\n \"Format string contains an unescaped latin alphabet character `\" + firstCharacter + \"`\"\n );\n }\n return { isToken: false, value: substring };\n });\n if (locale2.localize.preprocessor) {\n parts = locale2.localize.preprocessor(originalDate, parts);\n }\n const formatterOptions = {\n firstWeekContainsDate,\n weekStartsOn,\n locale: locale2\n };\n return parts.map((part) => {\n if (!part.isToken) return part.value;\n const token2 = part.value;\n if (!(options == null ? void 0 : options.useAdditionalWeekYearTokens) && isProtectedWeekYearToken(token2) || !(options == null ? void 0 : options.useAdditionalDayOfYearTokens) && isProtectedDayOfYearToken(token2)) {\n warnOrThrowProtectedError(token2, formatStr, String(date));\n }\n const formatter = formatters[token2[0]];\n return formatter(originalDate, token2, locale2.localize, formatterOptions);\n }).join(\"\");\n}\nfunction cleanEscapedString$1(input) {\n const matched = input.match(escapedStringRegExp$1);\n if (!matched) {\n return input;\n }\n return matched[1].replace(doubleQuoteRegExp$1, \"'\");\n}\nfunction addMilliseconds(date, amount) {\n const timestamp = +toDate$1(date);\n return constructFrom(date, timestamp + amount);\n}\nfunction addMinutes(date, amount) {\n return addMilliseconds(date, amount * millisecondsInMinute);\n}\nfunction addHours(date, amount) {\n return addMilliseconds(date, amount * millisecondsInHour);\n}\nfunction addDays(date, amount) {\n const _date = toDate$1(date);\n if (isNaN(amount)) return constructFrom(date, NaN);\n if (!amount) {\n return _date;\n }\n _date.setDate(_date.getDate() + amount);\n return _date;\n}\nfunction addWeeks(date, amount) {\n const days2 = amount * 7;\n return addDays(date, days2);\n}\nfunction addMonths(date, amount) {\n const _date = toDate$1(date);\n if (isNaN(amount)) return constructFrom(date, NaN);\n if (!amount) {\n return _date;\n }\n const dayOfMonth = _date.getDate();\n const endOfDesiredMonth = constructFrom(date, _date.getTime());\n endOfDesiredMonth.setMonth(_date.getMonth() + amount + 1, 0);\n const daysInMonth2 = endOfDesiredMonth.getDate();\n if (dayOfMonth >= daysInMonth2) {\n return endOfDesiredMonth;\n } else {\n _date.setFullYear(\n endOfDesiredMonth.getFullYear(),\n endOfDesiredMonth.getMonth(),\n dayOfMonth\n );\n return _date;\n }\n}\nfunction addQuarters(date, amount) {\n const months2 = amount * 3;\n return addMonths(date, months2);\n}\nfunction addYears(date, amount) {\n return addMonths(date, amount * 12);\n}\nfunction subDays(date, amount) {\n return addDays(date, -amount);\n}\nfunction subWeeks(date, amount) {\n return addWeeks(date, -amount);\n}\nfunction subMonths(date, amount) {\n return addMonths(date, -amount);\n}\nfunction subQuarters(date, amount) {\n return addQuarters(date, -amount);\n}\nfunction subYears(date, amount) {\n return addYears(date, -amount);\n}\nfunction getSeconds(date) {\n const _date = toDate$1(date);\n const seconds2 = _date.getSeconds();\n return seconds2;\n}\nfunction getMinutes(date) {\n const _date = toDate$1(date);\n const minutes2 = _date.getMinutes();\n return minutes2;\n}\nfunction getHours(date) {\n const _date = toDate$1(date);\n const hours2 = _date.getHours();\n return hours2;\n}\nfunction getDay(date) {\n const _date = toDate$1(date);\n const day = _date.getDay();\n return day;\n}\nfunction getDate(date) {\n const _date = toDate$1(date);\n const dayOfMonth = _date.getDate();\n return dayOfMonth;\n}\nfunction getMonth(date) {\n const _date = toDate$1(date);\n const month = _date.getMonth();\n return month;\n}\nfunction getQuarter(date) {\n const _date = toDate$1(date);\n const quarter = Math.trunc(_date.getMonth() / 3) + 1;\n return quarter;\n}\nfunction getYear(date) {\n return toDate$1(date).getFullYear();\n}\nfunction getTime(date) {\n const _date = toDate$1(date);\n const timestamp = _date.getTime();\n return timestamp;\n}\nfunction setSeconds(date, seconds2) {\n const _date = toDate$1(date);\n _date.setSeconds(seconds2);\n return _date;\n}\nfunction setMinutes(date, minutes2) {\n const _date = toDate$1(date);\n _date.setMinutes(minutes2);\n return _date;\n}\nfunction setHours(date, hours2) {\n const _date = toDate$1(date);\n _date.setHours(hours2);\n return _date;\n}\nfunction getDaysInMonth$1(date) {\n const _date = toDate$1(date);\n const year = _date.getFullYear();\n const monthIndex = _date.getMonth();\n const lastDayOfMonth = constructFrom(date, 0);\n lastDayOfMonth.setFullYear(year, monthIndex + 1, 0);\n lastDayOfMonth.setHours(0, 0, 0, 0);\n return lastDayOfMonth.getDate();\n}\nfunction setMonth$1(date, month) {\n const _date = toDate$1(date);\n const year = _date.getFullYear();\n const day = _date.getDate();\n const dateWithDesiredMonth = constructFrom(date, 0);\n dateWithDesiredMonth.setFullYear(year, month, 15);\n dateWithDesiredMonth.setHours(0, 0, 0, 0);\n const daysInMonth2 = getDaysInMonth$1(dateWithDesiredMonth);\n _date.setMonth(month, Math.min(day, daysInMonth2));\n return _date;\n}\nfunction setQuarter(date, quarter) {\n const _date = toDate$1(date);\n const oldQuarter = Math.trunc(_date.getMonth() / 3) + 1;\n const diff2 = quarter - oldQuarter;\n return setMonth$1(_date, _date.getMonth() + diff2 * 3);\n}\nfunction setYear(date, year) {\n const _date = toDate$1(date);\n if (isNaN(+_date)) {\n return constructFrom(date, NaN);\n }\n _date.setFullYear(year);\n return _date;\n}\nfunction min$2(dates) {\n let result;\n dates.forEach((dirtyDate) => {\n const date = toDate$1(dirtyDate);\n if (!result || result > date || isNaN(+date)) {\n result = date;\n }\n });\n return result || /* @__PURE__ */ new Date(NaN);\n}\nfunction max$2(dates) {\n let result;\n dates.forEach(function(dirtyDate) {\n const currentDate = toDate$1(dirtyDate);\n if (result === void 0 || result < currentDate || isNaN(Number(currentDate))) {\n result = currentDate;\n }\n });\n return result || /* @__PURE__ */ new Date(NaN);\n}\nfunction differenceInCalendarMonths(dateLeft, dateRight) {\n const _dateLeft = toDate$1(dateLeft);\n const _dateRight = toDate$1(dateRight);\n const yearDiff = _dateLeft.getFullYear() - _dateRight.getFullYear();\n const monthDiff2 = _dateLeft.getMonth() - _dateRight.getMonth();\n return yearDiff * 12 + monthDiff2;\n}\nfunction differenceInCalendarYears(dateLeft, dateRight) {\n const _dateLeft = toDate$1(dateLeft);\n const _dateRight = toDate$1(dateRight);\n return _dateLeft.getFullYear() - _dateRight.getFullYear();\n}\nfunction differenceInCalendarQuarters(dateLeft, dateRight) {\n const _dateLeft = toDate$1(dateLeft);\n const _dateRight = toDate$1(dateRight);\n const yearDiff = _dateLeft.getFullYear() - _dateRight.getFullYear();\n const quarterDiff = getQuarter(_dateLeft) - getQuarter(_dateRight);\n return yearDiff * 4 + quarterDiff;\n}\nfunction startOfMonth(date) {\n const _date = toDate$1(date);\n _date.setDate(1);\n _date.setHours(0, 0, 0, 0);\n return _date;\n}\nfunction startOfQuarter(date) {\n const _date = toDate$1(date);\n const currentMonth = _date.getMonth();\n const month = currentMonth - currentMonth % 3;\n _date.setMonth(month, 1);\n _date.setHours(0, 0, 0, 0);\n return _date;\n}\nfunction endOfDay(date) {\n const _date = toDate$1(date);\n _date.setHours(23, 59, 59, 999);\n return _date;\n}\nfunction endOfWeek(date, options) {\n var _a, _b;\n const defaultOptions2 = getDefaultOptions$1();\n const weekStartsOn = defaultOptions2.weekStartsOn ?? ((_b = (_a = defaultOptions2.locale) == null ? void 0 : _a.options) == null ? void 0 : _b.weekStartsOn) ?? 0;\n const _date = toDate$1(date);\n const day = _date.getDay();\n const diff2 = (day < weekStartsOn ? -7 : 0) + 6 - (day - weekStartsOn);\n _date.setDate(_date.getDate() + diff2);\n _date.setHours(23, 59, 59, 999);\n return _date;\n}\nfunction endOfMonth(date) {\n const _date = toDate$1(date);\n const month = _date.getMonth();\n _date.setFullYear(_date.getFullYear(), month + 1, 0);\n _date.setHours(23, 59, 59, 999);\n return _date;\n}\nfunction endOfYear(date) {\n const _date = toDate$1(date);\n const year = _date.getFullYear();\n _date.setFullYear(year + 1, 0, 0);\n _date.setHours(23, 59, 59, 999);\n return _date;\n}\nfunction isEqual$4(leftDate, rightDate) {\n const _dateLeft = toDate$1(leftDate);\n const _dateRight = toDate$1(rightDate);\n return +_dateLeft === +_dateRight;\n}\nfunction isSameDay$1(dateLeft, dateRight) {\n const dateLeftStartOfDay = startOfDay(dateLeft);\n const dateRightStartOfDay = startOfDay(dateRight);\n return +dateLeftStartOfDay === +dateRightStartOfDay;\n}\nfunction isSameMonth$1(dateLeft, dateRight) {\n const _dateLeft = toDate$1(dateLeft);\n const _dateRight = toDate$1(dateRight);\n return _dateLeft.getFullYear() === _dateRight.getFullYear() && _dateLeft.getMonth() === _dateRight.getMonth();\n}\nfunction isSameYear$1(dateLeft, dateRight) {\n const _dateLeft = toDate$1(dateLeft);\n const _dateRight = toDate$1(dateRight);\n return _dateLeft.getFullYear() === _dateRight.getFullYear();\n}\nfunction isSameQuarter$1(dateLeft, dateRight) {\n const dateLeftStartOfQuarter = startOfQuarter(dateLeft);\n const dateRightStartOfQuarter = startOfQuarter(dateRight);\n return +dateLeftStartOfQuarter === +dateRightStartOfQuarter;\n}\nfunction isAfter$1(date, dateToCompare) {\n const _date = toDate$1(date);\n const _dateToCompare = toDate$1(dateToCompare);\n return _date.getTime() > _dateToCompare.getTime();\n}\nfunction isBefore$1(date, dateToCompare) {\n const _date = toDate$1(date);\n const _dateToCompare = toDate$1(dateToCompare);\n return +_date < +_dateToCompare;\n}\nfunction isWithinInterval(date, interval) {\n const time = +toDate$1(date);\n const [startTime, endTime] = [\n +toDate$1(interval.start),\n +toDate$1(interval.end)\n ].sort((a2, b2) => a2 - b2);\n return time >= startTime && time <= endTime;\n}\nfunction getDefaultOptions() {\n return Object.assign({}, getDefaultOptions$1());\n}\nfunction transpose(fromDate, constructor) {\n const date = constructor instanceof Date ? constructFrom(constructor, 0) : new constructor(0);\n date.setFullYear(\n fromDate.getFullYear(),\n fromDate.getMonth(),\n fromDate.getDate()\n );\n date.setHours(\n fromDate.getHours(),\n fromDate.getMinutes(),\n fromDate.getSeconds(),\n fromDate.getMilliseconds()\n );\n return date;\n}\nconst TIMEZONE_UNIT_PRIORITY = 10;\nclass Setter2 {\n constructor() {\n __publicField(this, \"subPriority\", 0);\n }\n validate(_utcDate, _options) {\n return true;\n }\n}\nclass ValueSetter2 extends Setter2 {\n constructor(value, validateValue, setValue, priority, subPriority) {\n super();\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 }\n validate(date, options) {\n return this.validateValue(date, this.value, options);\n }\n set(date, flags, options) {\n return this.setValue(date, flags, this.value, options);\n }\n}\nclass DateToSystemTimezoneSetter extends Setter2 {\n constructor() {\n super(...arguments);\n __publicField(this, \"priority\", TIMEZONE_UNIT_PRIORITY);\n __publicField(this, \"subPriority\", -1);\n }\n set(date, flags) {\n if (flags.timestampIsSet) return date;\n return constructFrom(date, transpose(date, Date));\n }\n}\nclass Parser2 {\n run(dateString, token2, match5, options) {\n const result = this.parse(dateString, token2, match5, options);\n if (!result) {\n return null;\n }\n return {\n setter: new ValueSetter2(\n result.value,\n this.validate,\n this.set,\n this.priority,\n this.subPriority\n ),\n rest: result.rest\n };\n }\n validate(_utcDate, _value, _options) {\n return true;\n }\n}\nclass EraParser2 extends Parser2 {\n constructor() {\n super(...arguments);\n __publicField(this, \"priority\", 140);\n __publicField(this, \"incompatibleTokens\", [\"R\", \"u\", \"t\", \"T\"]);\n }\n parse(dateString, token2, match5) {\n switch (token2) {\n // AD, BC\n case \"G\":\n case \"GG\":\n case \"GGG\":\n return match5.era(dateString, { width: \"abbreviated\" }) || match5.era(dateString, { width: \"narrow\" });\n // A, B\n case \"GGGGG\":\n return match5.era(dateString, { width: \"narrow\" });\n // Anno Domini, Before Christ\n case \"GGGG\":\n default:\n return match5.era(dateString, { width: \"wide\" }) || match5.era(dateString, { width: \"abbreviated\" }) || match5.era(dateString, { width: \"narrow\" });\n }\n }\n set(date, flags, value) {\n flags.era = value;\n date.setFullYear(value, 0, 1);\n date.setHours(0, 0, 0, 0);\n return date;\n }\n}\nconst 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 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 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}/\n // 0 to 9999, -0 to -9999\n};\nconst 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};\nfunction mapValue(parseFnResult, mapFn) {\n if (!parseFnResult) {\n return parseFnResult;\n }\n return {\n value: mapFn(parseFnResult.value),\n rest: parseFnResult.rest\n };\n}\nfunction parseNumericPattern(pattern, dateString) {\n const 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}\nfunction parseTimezonePattern(pattern, dateString) {\n const matchResult = dateString.match(pattern);\n if (!matchResult) {\n return null;\n }\n if (matchResult[0] === \"Z\") {\n return {\n value: 0,\n rest: dateString.slice(1)\n };\n }\n const sign2 = matchResult[1] === \"+\" ? 1 : -1;\n const hours2 = matchResult[2] ? parseInt(matchResult[2], 10) : 0;\n const minutes2 = matchResult[3] ? parseInt(matchResult[3], 10) : 0;\n const seconds2 = matchResult[5] ? parseInt(matchResult[5], 10) : 0;\n return {\n value: sign2 * (hours2 * millisecondsInHour + minutes2 * millisecondsInMinute + seconds2 * millisecondsInSecond),\n rest: dateString.slice(matchResult[0].length)\n };\n}\nfunction parseAnyDigitsSigned(dateString) {\n return parseNumericPattern(numericPatterns.anyDigitsSigned, dateString);\n}\nfunction parseNDigits(n2, dateString) {\n switch (n2) {\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,\" + n2 + \"}\"), dateString);\n }\n}\nfunction parseNDigitsSigned(n2, dateString) {\n switch (n2) {\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,\" + n2 + \"}\"), dateString);\n }\n}\nfunction 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}\nfunction normalizeTwoDigitYear(twoDigitYear, currentYear) {\n const isCommonEra = currentYear > 0;\n const absCurrentYear = isCommonEra ? currentYear : 1 - currentYear;\n let result;\n if (absCurrentYear <= 50) {\n result = twoDigitYear || 100;\n } else {\n const rangeEnd = absCurrentYear + 50;\n const rangeEndCentury = Math.trunc(rangeEnd / 100) * 100;\n const isPreviousCentury = twoDigitYear >= rangeEnd % 100;\n result = twoDigitYear + rangeEndCentury - (isPreviousCentury ? 100 : 0);\n }\n return isCommonEra ? result : 1 - result;\n}\nfunction isLeapYearIndex$1(year) {\n return year % 400 === 0 || year % 4 === 0 && year % 100 !== 0;\n}\nclass YearParser2 extends Parser2 {\n constructor() {\n super(...arguments);\n __publicField(this, \"priority\", 130);\n __publicField(this, \"incompatibleTokens\", [\"Y\", \"R\", \"u\", \"w\", \"I\", \"i\", \"e\", \"c\", \"t\", \"T\"]);\n }\n parse(dateString, token2, match5) {\n const valueCallback = (year) => ({\n year,\n isTwoDigitYear: token2 === \"yy\"\n });\n switch (token2) {\n case \"y\":\n return mapValue(parseNDigits(4, dateString), valueCallback);\n case \"yo\":\n return mapValue(\n match5.ordinalNumber(dateString, {\n unit: \"year\"\n }),\n valueCallback\n );\n default:\n return mapValue(parseNDigits(token2.length, dateString), valueCallback);\n }\n }\n validate(_date, value) {\n return value.isTwoDigitYear || value.year > 0;\n }\n set(date, flags, value) {\n const currentYear = date.getFullYear();\n if (value.isTwoDigitYear) {\n const normalizedTwoDigitYear = normalizeTwoDigitYear(\n value.year,\n currentYear\n );\n date.setFullYear(normalizedTwoDigitYear, 0, 1);\n date.setHours(0, 0, 0, 0);\n return date;\n }\n const year = !(\"era\" in flags) || flags.era === 1 ? value.year : 1 - value.year;\n date.setFullYear(year, 0, 1);\n date.setHours(0, 0, 0, 0);\n return date;\n }\n}\nclass LocalWeekYearParser2 extends Parser2 {\n constructor() {\n super(...arguments);\n __publicField(this, \"priority\", 130);\n __publicField(this, \"incompatibleTokens\", [\n \"y\",\n \"R\",\n \"u\",\n \"Q\",\n \"q\",\n \"M\",\n \"L\",\n \"I\",\n \"d\",\n \"D\",\n \"i\",\n \"t\",\n \"T\"\n ]);\n }\n parse(dateString, token2, match5) {\n const valueCallback = (year) => ({\n year,\n isTwoDigitYear: token2 === \"YY\"\n });\n switch (token2) {\n case \"Y\":\n return mapValue(parseNDigits(4, dateString), valueCallback);\n case \"Yo\":\n return mapValue(\n match5.ordinalNumber(dateString, {\n unit: \"year\"\n }),\n valueCallback\n );\n default:\n return mapValue(parseNDigits(token2.length, dateString), valueCallback);\n }\n }\n validate(_date, value) {\n return value.isTwoDigitYear || value.year > 0;\n }\n set(date, flags, value, options) {\n const currentYear = getWeekYear(date, options);\n if (value.isTwoDigitYear) {\n const normalizedTwoDigitYear = normalizeTwoDigitYear(\n value.year,\n currentYear\n );\n date.setFullYear(\n normalizedTwoDigitYear,\n 0,\n options.firstWeekContainsDate\n );\n date.setHours(0, 0, 0, 0);\n return startOfWeek(date, options);\n }\n const year = !(\"era\" in flags) || flags.era === 1 ? value.year : 1 - value.year;\n date.setFullYear(year, 0, options.firstWeekContainsDate);\n date.setHours(0, 0, 0, 0);\n return startOfWeek(date, options);\n }\n}\nclass ISOWeekYearParser2 extends Parser2 {\n constructor() {\n super(...arguments);\n __publicField(this, \"priority\", 130);\n __publicField(this, \"incompatibleTokens\", [\n \"G\",\n \"y\",\n \"Y\",\n \"u\",\n \"Q\",\n \"q\",\n \"M\",\n \"L\",\n \"w\",\n \"d\",\n \"D\",\n \"e\",\n \"c\",\n \"t\",\n \"T\"\n ]);\n }\n parse(dateString, token2) {\n if (token2 === \"R\") {\n return parseNDigitsSigned(4, dateString);\n }\n return parseNDigitsSigned(token2.length, dateString);\n }\n set(date, _flags, value) {\n const firstWeekOfYear = constructFrom(date, 0);\n firstWeekOfYear.setFullYear(value, 0, 4);\n firstWeekOfYear.setHours(0, 0, 0, 0);\n return startOfISOWeek(firstWeekOfYear);\n }\n}\nclass ExtendedYearParser2 extends Parser2 {\n constructor() {\n super(...arguments);\n __publicField(this, \"priority\", 130);\n __publicField(this, \"incompatibleTokens\", [\"G\", \"y\", \"Y\", \"R\", \"w\", \"I\", \"i\", \"e\", \"c\", \"t\", \"T\"]);\n }\n parse(dateString, token2) {\n if (token2 === \"u\") {\n return parseNDigitsSigned(4, dateString);\n }\n return parseNDigitsSigned(token2.length, dateString);\n }\n set(date, _flags, value) {\n date.setFullYear(value, 0, 1);\n date.setHours(0, 0, 0, 0);\n return date;\n }\n}\nclass QuarterParser2 extends Parser2 {\n constructor() {\n super(...arguments);\n __publicField(this, \"priority\", 120);\n __publicField(this, \"incompatibleTokens\", [\n \"Y\",\n \"R\",\n \"q\",\n \"M\",\n \"L\",\n \"w\",\n \"I\",\n \"d\",\n \"D\",\n \"i\",\n \"e\",\n \"c\",\n \"t\",\n \"T\"\n ]);\n }\n parse(dateString, token2, match5) {\n switch (token2) {\n // 1, 2, 3, 4\n case \"Q\":\n case \"QQ\":\n return parseNDigits(token2.length, dateString);\n // 1st, 2nd, 3rd, 4th\n case \"Qo\":\n return match5.ordinalNumber(dateString, { unit: \"quarter\" });\n // Q1, Q2, Q3, Q4\n case \"QQQ\":\n return match5.quarter(dateString, {\n width: \"abbreviated\",\n context: \"formatting\"\n }) || match5.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 match5.quarter(dateString, {\n width: \"narrow\",\n context: \"formatting\"\n });\n // 1st quarter, 2nd quarter, ...\n case \"QQQQ\":\n default:\n return match5.quarter(dateString, {\n width: \"wide\",\n context: \"formatting\"\n }) || match5.quarter(dateString, {\n width: \"abbreviated\",\n context: \"formatting\"\n }) || match5.quarter(dateString, {\n width: \"narrow\",\n context: \"formatting\"\n });\n }\n }\n validate(_date, value) {\n return value >= 1 && value <= 4;\n }\n set(date, _flags, value) {\n date.setMonth((value - 1) * 3, 1);\n date.setHours(0, 0, 0, 0);\n return date;\n }\n}\nclass StandAloneQuarterParser2 extends Parser2 {\n constructor() {\n super(...arguments);\n __publicField(this, \"priority\", 120);\n __publicField(this, \"incompatibleTokens\", [\n \"Y\",\n \"R\",\n \"Q\",\n \"M\",\n \"L\",\n \"w\",\n \"I\",\n \"d\",\n \"D\",\n \"i\",\n \"e\",\n \"c\",\n \"t\",\n \"T\"\n ]);\n }\n parse(dateString, token2, match5) {\n switch (token2) {\n // 1, 2, 3, 4\n case \"q\":\n case \"qq\":\n return parseNDigits(token2.length, dateString);\n // 1st, 2nd, 3rd, 4th\n case \"qo\":\n return match5.ordinalNumber(dateString, { unit: \"quarter\" });\n // Q1, Q2, Q3, Q4\n case \"qqq\":\n return match5.quarter(dateString, {\n width: \"abbreviated\",\n context: \"standalone\"\n }) || match5.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 match5.quarter(dateString, {\n width: \"narrow\",\n context: \"standalone\"\n });\n // 1st quarter, 2nd quarter, ...\n case \"qqqq\":\n default:\n return match5.quarter(dateString, {\n width: \"wide\",\n context: \"standalone\"\n }) || match5.quarter(dateString, {\n width: \"abbreviated\",\n context: \"standalone\"\n }) || match5.quarter(dateString, {\n width: \"narrow\",\n context: \"standalone\"\n });\n }\n }\n validate(_date, value) {\n return value >= 1 && value <= 4;\n }\n set(date, _flags, value) {\n date.setMonth((value - 1) * 3, 1);\n date.setHours(0, 0, 0, 0);\n return date;\n }\n}\nclass MonthParser2 extends Parser2 {\n constructor() {\n super(...arguments);\n __publicField(this, \"incompatibleTokens\", [\n \"Y\",\n \"R\",\n \"q\",\n \"Q\",\n \"L\",\n \"w\",\n \"I\",\n \"D\",\n \"i\",\n \"e\",\n \"c\",\n \"t\",\n \"T\"\n ]);\n __publicField(this, \"priority\", 110);\n }\n parse(dateString, token2, match5) {\n const valueCallback = (value) => value - 1;\n switch (token2) {\n // 1, 2, ..., 12\n case \"M\":\n return mapValue(\n parseNumericPattern(numericPatterns.month, dateString),\n valueCallback\n );\n // 01, 02, ..., 12\n case \"MM\":\n return mapValue(parseNDigits(2, dateString), valueCallback);\n // 1st, 2nd, ..., 12th\n case \"Mo\":\n return mapValue(\n match5.ordinalNumber(dateString, {\n unit: \"month\"\n }),\n valueCallback\n );\n // Jan, Feb, ..., Dec\n case \"MMM\":\n return match5.month(dateString, {\n width: \"abbreviated\",\n context: \"formatting\"\n }) || match5.month(dateString, { width: \"narrow\", context: \"formatting\" });\n // J, F, ..., D\n case \"MMMMM\":\n return match5.month(dateString, {\n width: \"narrow\",\n context: \"formatting\"\n });\n // January, February, ..., December\n case \"MMMM\":\n default:\n return match5.month(dateString, { width: \"wide\", context: \"formatting\" }) || match5.month(dateString, {\n width: \"abbreviated\",\n context: \"formatting\"\n }) || match5.month(dateString, { width: \"narrow\", context: \"formatting\" });\n }\n }\n validate(_date, value) {\n return value >= 0 && value <= 11;\n }\n set(date, _flags, value) {\n date.setMonth(value, 1);\n date.setHours(0, 0, 0, 0);\n return date;\n }\n}\nclass StandAloneMonthParser2 extends Parser2 {\n constructor() {\n super(...arguments);\n __publicField(this, \"priority\", 110);\n __publicField(this, \"incompatibleTokens\", [\n \"Y\",\n \"R\",\n \"q\",\n \"Q\",\n \"M\",\n \"w\",\n \"I\",\n \"D\",\n \"i\",\n \"e\",\n \"c\",\n \"t\",\n \"T\"\n ]);\n }\n parse(dateString, token2, match5) {\n const valueCallback = (value) => value - 1;\n switch (token2) {\n // 1, 2, ..., 12\n case \"L\":\n return mapValue(\n parseNumericPattern(numericPatterns.month, dateString),\n valueCallback\n );\n // 01, 02, ..., 12\n case \"LL\":\n return mapValue(parseNDigits(2, dateString), valueCallback);\n // 1st, 2nd, ..., 12th\n case \"Lo\":\n return mapValue(\n match5.ordinalNumber(dateString, {\n unit: \"month\"\n }),\n valueCallback\n );\n // Jan, Feb, ..., Dec\n case \"LLL\":\n return match5.month(dateString, {\n width: \"abbreviated\",\n context: \"standalone\"\n }) || match5.month(dateString, { width: \"narrow\", context: \"standalone\" });\n // J, F, ..., D\n case \"LLLLL\":\n return match5.month(dateString, {\n width: \"narrow\",\n context: \"standalone\"\n });\n // January, February, ..., December\n case \"LLLL\":\n default:\n return match5.month(dateString, { width: \"wide\", context: \"standalone\" }) || match5.month(dateString, {\n width: \"abbreviated\",\n context: \"standalone\"\n }) || match5.month(dateString, { width: \"narrow\", context: \"standalone\" });\n }\n }\n validate(_date, value) {\n return value >= 0 && value <= 11;\n }\n set(date, _flags, value) {\n date.setMonth(value, 1);\n date.setHours(0, 0, 0, 0);\n return date;\n }\n}\nfunction setWeek(date, week, options) {\n const _date = toDate$1(date);\n const diff2 = getWeek$1(_date, options) - week;\n _date.setDate(_date.getDate() - diff2 * 7);\n return _date;\n}\nclass LocalWeekParser2 extends Parser2 {\n constructor() {\n super(...arguments);\n __publicField(this, \"priority\", 100);\n __publicField(this, \"incompatibleTokens\", [\n \"y\",\n \"R\",\n \"u\",\n \"q\",\n \"Q\",\n \"M\",\n \"L\",\n \"I\",\n \"d\",\n \"D\",\n \"i\",\n \"t\",\n \"T\"\n ]);\n }\n parse(dateString, token2, match5) {\n switch (token2) {\n case \"w\":\n return parseNumericPattern(numericPatterns.week, dateString);\n case \"wo\":\n return match5.ordinalNumber(dateString, { unit: \"week\" });\n default:\n return parseNDigits(token2.length, dateString);\n }\n }\n validate(_date, value) {\n return value >= 1 && value <= 53;\n }\n set(date, _flags, value, options) {\n return startOfWeek(setWeek(date, value, options), options);\n }\n}\nfunction setISOWeek(date, week) {\n const _date = toDate$1(date);\n const diff2 = getISOWeek(_date) - week;\n _date.setDate(_date.getDate() - diff2 * 7);\n return _date;\n}\nclass ISOWeekParser2 extends Parser2 {\n constructor() {\n super(...arguments);\n __publicField(this, \"priority\", 100);\n __publicField(this, \"incompatibleTokens\", [\n \"y\",\n \"Y\",\n \"u\",\n \"q\",\n \"Q\",\n \"M\",\n \"L\",\n \"w\",\n \"d\",\n \"D\",\n \"e\",\n \"c\",\n \"t\",\n \"T\"\n ]);\n }\n parse(dateString, token2, match5) {\n switch (token2) {\n case \"I\":\n return parseNumericPattern(numericPatterns.week, dateString);\n case \"Io\":\n return match5.ordinalNumber(dateString, { unit: \"week\" });\n default:\n return parseNDigits(token2.length, dateString);\n }\n }\n validate(_date, value) {\n return value >= 1 && value <= 53;\n }\n set(date, _flags, value) {\n return startOfISOWeek(setISOWeek(date, value));\n }\n}\nconst DAYS_IN_MONTH = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\nconst DAYS_IN_MONTH_LEAP_YEAR = [\n 31,\n 29,\n 31,\n 30,\n 31,\n 30,\n 31,\n 31,\n 30,\n 31,\n 30,\n 31\n];\nclass DateParser2 extends Parser2 {\n constructor() {\n super(...arguments);\n __publicField(this, \"priority\", 90);\n __publicField(this, \"subPriority\", 1);\n __publicField(this, \"incompatibleTokens\", [\n \"Y\",\n \"R\",\n \"q\",\n \"Q\",\n \"w\",\n \"I\",\n \"D\",\n \"i\",\n \"e\",\n \"c\",\n \"t\",\n \"T\"\n ]);\n }\n parse(dateString, token2, match5) {\n switch (token2) {\n case \"d\":\n return parseNumericPattern(numericPatterns.date, dateString);\n case \"do\":\n return match5.ordinalNumber(dateString, { unit: \"date\" });\n default:\n return parseNDigits(token2.length, dateString);\n }\n }\n validate(date, value) {\n const year = date.getFullYear();\n const isLeapYear2 = isLeapYearIndex$1(year);\n const month = date.getMonth();\n if (isLeapYear2) {\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 set(date, _flags, value) {\n date.setDate(value);\n date.setHours(0, 0, 0, 0);\n return date;\n }\n}\nclass DayOfYearParser2 extends Parser2 {\n constructor() {\n super(...arguments);\n __publicField(this, \"priority\", 90);\n __publicField(this, \"subpriority\", 1);\n __publicField(this, \"incompatibleTokens\", [\n \"Y\",\n \"R\",\n \"q\",\n \"Q\",\n \"M\",\n \"L\",\n \"w\",\n \"I\",\n \"d\",\n \"E\",\n \"i\",\n \"e\",\n \"c\",\n \"t\",\n \"T\"\n ]);\n }\n parse(dateString, token2, match5) {\n switch (token2) {\n case \"D\":\n case \"DD\":\n return parseNumericPattern(numericPatterns.dayOfYear, dateString);\n case \"Do\":\n return match5.ordinalNumber(dateString, { unit: \"date\" });\n default:\n return parseNDigits(token2.length, dateString);\n }\n }\n validate(date, value) {\n const year = date.getFullYear();\n const isLeapYear2 = isLeapYearIndex$1(year);\n if (isLeapYear2) {\n return value >= 1 && value <= 366;\n } else {\n return value >= 1 && value <= 365;\n }\n }\n set(date, _flags, value) {\n date.setMonth(0, value);\n date.setHours(0, 0, 0, 0);\n return date;\n }\n}\nfunction setDay(date, day, options) {\n var _a, _b, _c, _d;\n const defaultOptions2 = getDefaultOptions$1();\n const weekStartsOn = (options == null ? void 0 : options.weekStartsOn) ?? ((_b = (_a = options == null ? void 0 : options.locale) == null ? void 0 : _a.options) == null ? void 0 : _b.weekStartsOn) ?? defaultOptions2.weekStartsOn ?? ((_d = (_c = defaultOptions2.locale) == null ? void 0 : _c.options) == null ? void 0 : _d.weekStartsOn) ?? 0;\n const _date = toDate$1(date);\n const currentDay = _date.getDay();\n const remainder = day % 7;\n const dayIndex = (remainder + 7) % 7;\n const delta = 7 - weekStartsOn;\n const diff2 = day < 0 || day > 6 ? day - (currentDay + delta) % 7 : (dayIndex + delta) % 7 - (currentDay + delta) % 7;\n return addDays(_date, diff2);\n}\nclass DayParser2 extends Parser2 {\n constructor() {\n super(...arguments);\n __publicField(this, \"priority\", 90);\n __publicField(this, \"incompatibleTokens\", [\"D\", \"i\", \"e\", \"c\", \"t\", \"T\"]);\n }\n parse(dateString, token2, match5) {\n switch (token2) {\n // Tue\n case \"E\":\n case \"EE\":\n case \"EEE\":\n return match5.day(dateString, {\n width: \"abbreviated\",\n context: \"formatting\"\n }) || match5.day(dateString, { width: \"short\", context: \"formatting\" }) || match5.day(dateString, { width: \"narrow\", context: \"formatting\" });\n // T\n case \"EEEEE\":\n return match5.day(dateString, {\n width: \"narrow\",\n context: \"formatting\"\n });\n // Tu\n case \"EEEEEE\":\n return match5.day(dateString, { width: \"short\", context: \"formatting\" }) || match5.day(dateString, { width: \"narrow\", context: \"formatting\" });\n // Tuesday\n case \"EEEE\":\n default:\n return match5.day(dateString, { width: \"wide\", context: \"formatting\" }) || match5.day(dateString, {\n width: \"abbreviated\",\n context: \"formatting\"\n }) || match5.day(dateString, { width: \"short\", context: \"formatting\" }) || match5.day(dateString, { width: \"narrow\", context: \"formatting\" });\n }\n }\n validate(_date, value) {\n return value >= 0 && value <= 6;\n }\n set(date, _flags, value, options) {\n date = setDay(date, value, options);\n date.setHours(0, 0, 0, 0);\n return date;\n }\n}\nclass LocalDayParser2 extends Parser2 {\n constructor() {\n super(...arguments);\n __publicField(this, \"priority\", 90);\n __publicField(this, \"incompatibleTokens\", [\n \"y\",\n \"R\",\n \"u\",\n \"q\",\n \"Q\",\n \"M\",\n \"L\",\n \"I\",\n \"d\",\n \"D\",\n \"E\",\n \"i\",\n \"c\",\n \"t\",\n \"T\"\n ]);\n }\n parse(dateString, token2, match5, options) {\n const valueCallback = (value) => {\n const wholeWeekDays = Math.floor((value - 1) / 7) * 7;\n return (value + options.weekStartsOn + 6) % 7 + wholeWeekDays;\n };\n switch (token2) {\n // 3\n case \"e\":\n case \"ee\":\n return mapValue(parseNDigits(token2.length, dateString), valueCallback);\n // 3rd\n case \"eo\":\n return mapValue(\n match5.ordinalNumber(dateString, {\n unit: \"day\"\n }),\n valueCallback\n );\n // Tue\n case \"eee\":\n return match5.day(dateString, {\n width: \"abbreviated\",\n context: \"formatting\"\n }) || match5.day(dateString, { width: \"short\", context: \"formatting\" }) || match5.day(dateString, { width: \"narrow\", context: \"formatting\" });\n // T\n case \"eeeee\":\n return match5.day(dateString, {\n width: \"narrow\",\n context: \"formatting\"\n });\n // Tu\n case \"eeeeee\":\n return match5.day(dateString, { width: \"short\", context: \"formatting\" }) || match5.day(dateString, { width: \"narrow\", context: \"formatting\" });\n // Tuesday\n case \"eeee\":\n default:\n return match5.day(dateString, { width: \"wide\", context: \"formatting\" }) || match5.day(dateString, {\n width: \"abbreviated\",\n context: \"formatting\"\n }) || match5.day(dateString, { width: \"short\", context: \"formatting\" }) || match5.day(dateString, { width: \"narrow\", context: \"formatting\" });\n }\n }\n validate(_date, value) {\n return value >= 0 && value <= 6;\n }\n set(date, _flags, value, options) {\n date = setDay(date, value, options);\n date.setHours(0, 0, 0, 0);\n return date;\n }\n}\nclass StandAloneLocalDayParser2 extends Parser2 {\n constructor() {\n super(...arguments);\n __publicField(this, \"priority\", 90);\n __publicField(this, \"incompatibleTokens\", [\n \"y\",\n \"R\",\n \"u\",\n \"q\",\n \"Q\",\n \"M\",\n \"L\",\n \"I\",\n \"d\",\n \"D\",\n \"E\",\n \"i\",\n \"e\",\n \"t\",\n \"T\"\n ]);\n }\n parse(dateString, token2, match5, options) {\n const valueCallback = (value) => {\n const wholeWeekDays = Math.floor((value - 1) / 7) * 7;\n return (value + options.weekStartsOn + 6) % 7 + wholeWeekDays;\n };\n switch (token2) {\n // 3\n case \"c\":\n case \"cc\":\n return mapValue(parseNDigits(token2.length, dateString), valueCallback);\n // 3rd\n case \"co\":\n return mapValue(\n match5.ordinalNumber(dateString, {\n unit: \"day\"\n }),\n valueCallback\n );\n // Tue\n case \"ccc\":\n return match5.day(dateString, {\n width: \"abbreviated\",\n context: \"standalone\"\n }) || match5.day(dateString, { width: \"short\", context: \"standalone\" }) || match5.day(dateString, { width: \"narrow\", context: \"standalone\" });\n // T\n case \"ccccc\":\n return match5.day(dateString, {\n width: \"narrow\",\n context: \"standalone\"\n });\n // Tu\n case \"cccccc\":\n return match5.day(dateString, { width: \"short\", context: \"standalone\" }) || match5.day(dateString, { width: \"narrow\", context: \"standalone\" });\n // Tuesday\n case \"cccc\":\n default:\n return match5.day(dateString, { width: \"wide\", context: \"standalone\" }) || match5.day(dateString, {\n width: \"abbreviated\",\n context: \"standalone\"\n }) || match5.day(dateString, { width: \"short\", context: \"standalone\" }) || match5.day(dateString, { width: \"narrow\", context: \"standalone\" });\n }\n }\n validate(_date, value) {\n return value >= 0 && value <= 6;\n }\n set(date, _flags, value, options) {\n date = setDay(date, value, options);\n date.setHours(0, 0, 0, 0);\n return date;\n }\n}\nfunction getISODay(date) {\n const _date = toDate$1(date);\n let day = _date.getDay();\n if (day === 0) {\n day = 7;\n }\n return day;\n}\nfunction setISODay(date, day) {\n const _date = toDate$1(date);\n const currentDay = getISODay(_date);\n const diff2 = day - currentDay;\n return addDays(_date, diff2);\n}\nclass ISODayParser2 extends Parser2 {\n constructor() {\n super(...arguments);\n __publicField(this, \"priority\", 90);\n __publicField(this, \"incompatibleTokens\", [\n \"y\",\n \"Y\",\n \"u\",\n \"q\",\n \"Q\",\n \"M\",\n \"L\",\n \"w\",\n \"d\",\n \"D\",\n \"E\",\n \"e\",\n \"c\",\n \"t\",\n \"T\"\n ]);\n }\n parse(dateString, token2, match5) {\n const valueCallback = (value) => {\n if (value === 0) {\n return 7;\n }\n return value;\n };\n switch (token2) {\n // 2\n case \"i\":\n case \"ii\":\n return parseNDigits(token2.length, dateString);\n // 2nd\n case \"io\":\n return match5.ordinalNumber(dateString, { unit: \"day\" });\n // Tue\n case \"iii\":\n return mapValue(\n match5.day(dateString, {\n width: \"abbreviated\",\n context: \"formatting\"\n }) || match5.day(dateString, {\n width: \"short\",\n context: \"formatting\"\n }) || match5.day(dateString, {\n width: \"narrow\",\n context: \"formatting\"\n }),\n valueCallback\n );\n // T\n case \"iiiii\":\n return mapValue(\n match5.day(dateString, {\n width: \"narrow\",\n context: \"formatting\"\n }),\n valueCallback\n );\n // Tu\n case \"iiiiii\":\n return mapValue(\n match5.day(dateString, {\n width: \"short\",\n context: \"formatting\"\n }) || match5.day(dateString, {\n width: \"narrow\",\n context: \"formatting\"\n }),\n valueCallback\n );\n // Tuesday\n case \"iiii\":\n default:\n return mapValue(\n match5.day(dateString, {\n width: \"wide\",\n context: \"formatting\"\n }) || match5.day(dateString, {\n width: \"abbreviated\",\n context: \"formatting\"\n }) || match5.day(dateString, {\n width: \"short\",\n context: \"formatting\"\n }) || match5.day(dateString, {\n width: \"narrow\",\n context: \"formatting\"\n }),\n valueCallback\n );\n }\n }\n validate(_date, value) {\n return value >= 1 && value <= 7;\n }\n set(date, _flags, value) {\n date = setISODay(date, value);\n date.setHours(0, 0, 0, 0);\n return date;\n }\n}\nclass AMPMParser2 extends Parser2 {\n constructor() {\n super(...arguments);\n __publicField(this, \"priority\", 80);\n __publicField(this, \"incompatibleTokens\", [\"b\", \"B\", \"H\", \"k\", \"t\", \"T\"]);\n }\n parse(dateString, token2, match5) {\n switch (token2) {\n case \"a\":\n case \"aa\":\n case \"aaa\":\n return match5.dayPeriod(dateString, {\n width: \"abbreviated\",\n context: \"formatting\"\n }) || match5.dayPeriod(dateString, {\n width: \"narrow\",\n context: \"formatting\"\n });\n case \"aaaaa\":\n return match5.dayPeriod(dateString, {\n width: \"narrow\",\n context: \"formatting\"\n });\n case \"aaaa\":\n default:\n return match5.dayPeriod(dateString, {\n width: \"wide\",\n context: \"formatting\"\n }) || match5.dayPeriod(dateString, {\n width: \"abbreviated\",\n context: \"formatting\"\n }) || match5.dayPeriod(dateString, {\n width: \"narrow\",\n context: \"formatting\"\n });\n }\n }\n set(date, _flags, value) {\n date.setHours(dayPeriodEnumToHours(value), 0, 0, 0);\n return date;\n }\n}\nclass AMPMMidnightParser2 extends Parser2 {\n constructor() {\n super(...arguments);\n __publicField(this, \"priority\", 80);\n __publicField(this, \"incompatibleTokens\", [\"a\", \"B\", \"H\", \"k\", \"t\", \"T\"]);\n }\n parse(dateString, token2, match5) {\n switch (token2) {\n case \"b\":\n case \"bb\":\n case \"bbb\":\n return match5.dayPeriod(dateString, {\n width: \"abbreviated\",\n context: \"formatting\"\n }) || match5.dayPeriod(dateString, {\n width: \"narrow\",\n context: \"formatting\"\n });\n case \"bbbbb\":\n return match5.dayPeriod(dateString, {\n width: \"narrow\",\n context: \"formatting\"\n });\n case \"bbbb\":\n default:\n return match5.dayPeriod(dateString, {\n width: \"wide\",\n context: \"formatting\"\n }) || match5.dayPeriod(dateString, {\n width: \"abbreviated\",\n context: \"formatting\"\n }) || match5.dayPeriod(dateString, {\n width: \"narrow\",\n context: \"formatting\"\n });\n }\n }\n set(date, _flags, value) {\n date.setHours(dayPeriodEnumToHours(value), 0, 0, 0);\n return date;\n }\n}\nclass DayPeriodParser2 extends Parser2 {\n constructor() {\n super(...arguments);\n __publicField(this, \"priority\", 80);\n __publicField(this, \"incompatibleTokens\", [\"a\", \"b\", \"t\", \"T\"]);\n }\n parse(dateString, token2, match5) {\n switch (token2) {\n case \"B\":\n case \"BB\":\n case \"BBB\":\n return match5.dayPeriod(dateString, {\n width: \"abbreviated\",\n context: \"formatting\"\n }) || match5.dayPeriod(dateString, {\n width: \"narrow\",\n context: \"formatting\"\n });\n case \"BBBBB\":\n return match5.dayPeriod(dateString, {\n width: \"narrow\",\n context: \"formatting\"\n });\n case \"BBBB\":\n default:\n return match5.dayPeriod(dateString, {\n width: \"wide\",\n context: \"formatting\"\n }) || match5.dayPeriod(dateString, {\n width: \"abbreviated\",\n context: \"formatting\"\n }) || match5.dayPeriod(dateString, {\n width: \"narrow\",\n context: \"formatting\"\n });\n }\n }\n set(date, _flags, value) {\n date.setHours(dayPeriodEnumToHours(value), 0, 0, 0);\n return date;\n }\n}\nclass Hour1to12Parser2 extends Parser2 {\n constructor() {\n super(...arguments);\n __publicField(this, \"priority\", 70);\n __publicField(this, \"incompatibleTokens\", [\"H\", \"K\", \"k\", \"t\", \"T\"]);\n }\n parse(dateString, token2, match5) {\n switch (token2) {\n case \"h\":\n return parseNumericPattern(numericPatterns.hour12h, dateString);\n case \"ho\":\n return match5.ordinalNumber(dateString, { unit: \"hour\" });\n default:\n return parseNDigits(token2.length, dateString);\n }\n }\n validate(_date, value) {\n return value >= 1 && value <= 12;\n }\n set(date, _flags, value) {\n const isPM = date.getHours() >= 12;\n if (isPM && value < 12) {\n date.setHours(value + 12, 0, 0, 0);\n } else if (!isPM && value === 12) {\n date.setHours(0, 0, 0, 0);\n } else {\n date.setHours(value, 0, 0, 0);\n }\n return date;\n }\n}\nclass Hour0to23Parser2 extends Parser2 {\n constructor() {\n super(...arguments);\n __publicField(this, \"priority\", 70);\n __publicField(this, \"incompatibleTokens\", [\"a\", \"b\", \"h\", \"K\", \"k\", \"t\", \"T\"]);\n }\n parse(dateString, token2, match5) {\n switch (token2) {\n case \"H\":\n return parseNumericPattern(numericPatterns.hour23h, dateString);\n case \"Ho\":\n return match5.ordinalNumber(dateString, { unit: \"hour\" });\n default:\n return parseNDigits(token2.length, dateString);\n }\n }\n validate(_date, value) {\n return value >= 0 && value <= 23;\n }\n set(date, _flags, value) {\n date.setHours(value, 0, 0, 0);\n return date;\n }\n}\nclass Hour0To11Parser2 extends Parser2 {\n constructor() {\n super(...arguments);\n __publicField(this, \"priority\", 70);\n __publicField(this, \"incompatibleTokens\", [\"h\", \"H\", \"k\", \"t\", \"T\"]);\n }\n parse(dateString, token2, match5) {\n switch (token2) {\n case \"K\":\n return parseNumericPattern(numericPatterns.hour11h, dateString);\n case \"Ko\":\n return match5.ordinalNumber(dateString, { unit: \"hour\" });\n default:\n return parseNDigits(token2.length, dateString);\n }\n }\n validate(_date, value) {\n return value >= 0 && value <= 11;\n }\n set(date, _flags, value) {\n const isPM = date.getHours() >= 12;\n if (isPM && value < 12) {\n date.setHours(value + 12, 0, 0, 0);\n } else {\n date.setHours(value, 0, 0, 0);\n }\n return date;\n }\n}\nclass Hour1To24Parser2 extends Parser2 {\n constructor() {\n super(...arguments);\n __publicField(this, \"priority\", 70);\n __publicField(this, \"incompatibleTokens\", [\"a\", \"b\", \"h\", \"H\", \"K\", \"t\", \"T\"]);\n }\n parse(dateString, token2, match5) {\n switch (token2) {\n case \"k\":\n return parseNumericPattern(numericPatterns.hour24h, dateString);\n case \"ko\":\n return match5.ordinalNumber(dateString, { unit: \"hour\" });\n default:\n return parseNDigits(token2.length, dateString);\n }\n }\n validate(_date, value) {\n return value >= 1 && value <= 24;\n }\n set(date, _flags, value) {\n const hours2 = value <= 24 ? value % 24 : value;\n date.setHours(hours2, 0, 0, 0);\n return date;\n }\n}\nclass MinuteParser2 extends Parser2 {\n constructor() {\n super(...arguments);\n __publicField(this, \"priority\", 60);\n __publicField(this, \"incompatibleTokens\", [\"t\", \"T\"]);\n }\n parse(dateString, token2, match5) {\n switch (token2) {\n case \"m\":\n return parseNumericPattern(numericPatterns.minute, dateString);\n case \"mo\":\n return match5.ordinalNumber(dateString, { unit: \"minute\" });\n default:\n return parseNDigits(token2.length, dateString);\n }\n }\n validate(_date, value) {\n return value >= 0 && value <= 59;\n }\n set(date, _flags, value) {\n date.setMinutes(value, 0, 0);\n return date;\n }\n}\nclass SecondParser2 extends Parser2 {\n constructor() {\n super(...arguments);\n __publicField(this, \"priority\", 50);\n __publicField(this, \"incompatibleTokens\", [\"t\", \"T\"]);\n }\n parse(dateString, token2, match5) {\n switch (token2) {\n case \"s\":\n return parseNumericPattern(numericPatterns.second, dateString);\n case \"so\":\n return match5.ordinalNumber(dateString, { unit: \"second\" });\n default:\n return parseNDigits(token2.length, dateString);\n }\n }\n validate(_date, value) {\n return value >= 0 && value <= 59;\n }\n set(date, _flags, value) {\n date.setSeconds(value, 0);\n return date;\n }\n}\nclass FractionOfSecondParser2 extends Parser2 {\n constructor() {\n super(...arguments);\n __publicField(this, \"priority\", 30);\n __publicField(this, \"incompatibleTokens\", [\"t\", \"T\"]);\n }\n parse(dateString, token2) {\n const valueCallback = (value) => Math.trunc(value * Math.pow(10, -token2.length + 3));\n return mapValue(parseNDigits(token2.length, dateString), valueCallback);\n }\n set(date, _flags, value) {\n date.setMilliseconds(value);\n return date;\n }\n}\nclass ISOTimezoneWithZParser2 extends Parser2 {\n constructor() {\n super(...arguments);\n __publicField(this, \"priority\", 10);\n __publicField(this, \"incompatibleTokens\", [\"t\", \"T\", \"x\"]);\n }\n parse(dateString, token2) {\n switch (token2) {\n case \"X\":\n return parseTimezonePattern(\n timezonePatterns.basicOptionalMinutes,\n dateString\n );\n case \"XX\":\n return parseTimezonePattern(timezonePatterns.basic, dateString);\n case \"XXXX\":\n return parseTimezonePattern(\n timezonePatterns.basicOptionalSeconds,\n dateString\n );\n case \"XXXXX\":\n return parseTimezonePattern(\n timezonePatterns.extendedOptionalSeconds,\n dateString\n );\n case \"XXX\":\n default:\n return parseTimezonePattern(timezonePatterns.extended, dateString);\n }\n }\n set(date, flags, value) {\n if (flags.timestampIsSet) return date;\n return constructFrom(\n date,\n date.getTime() - getTimezoneOffsetInMilliseconds(date) - value\n );\n }\n}\nclass ISOTimezoneParser2 extends Parser2 {\n constructor() {\n super(...arguments);\n __publicField(this, \"priority\", 10);\n __publicField(this, \"incompatibleTokens\", [\"t\", \"T\", \"X\"]);\n }\n parse(dateString, token2) {\n switch (token2) {\n case \"x\":\n return parseTimezonePattern(\n timezonePatterns.basicOptionalMinutes,\n dateString\n );\n case \"xx\":\n return parseTimezonePattern(timezonePatterns.basic, dateString);\n case \"xxxx\":\n return parseTimezonePattern(\n timezonePatterns.basicOptionalSeconds,\n dateString\n );\n case \"xxxxx\":\n return parseTimezonePattern(\n timezonePatterns.extendedOptionalSeconds,\n dateString\n );\n case \"xxx\":\n default:\n return parseTimezonePattern(timezonePatterns.extended, dateString);\n }\n }\n set(date, flags, value) {\n if (flags.timestampIsSet) return date;\n return constructFrom(\n date,\n date.getTime() - getTimezoneOffsetInMilliseconds(date) - value\n );\n }\n}\nclass TimestampSecondsParser2 extends Parser2 {\n constructor() {\n super(...arguments);\n __publicField(this, \"priority\", 40);\n __publicField(this, \"incompatibleTokens\", \"*\");\n }\n parse(dateString) {\n return parseAnyDigitsSigned(dateString);\n }\n set(date, _flags, value) {\n return [constructFrom(date, value * 1e3), { timestampIsSet: true }];\n }\n}\nclass TimestampMillisecondsParser2 extends Parser2 {\n constructor() {\n super(...arguments);\n __publicField(this, \"priority\", 20);\n __publicField(this, \"incompatibleTokens\", \"*\");\n }\n parse(dateString) {\n return parseAnyDigitsSigned(dateString);\n }\n set(date, _flags, value) {\n return [constructFrom(date, value), { timestampIsSet: true }];\n }\n}\nconst parsers = {\n G: new EraParser2(),\n y: new YearParser2(),\n Y: new LocalWeekYearParser2(),\n R: new ISOWeekYearParser2(),\n u: new ExtendedYearParser2(),\n Q: new QuarterParser2(),\n q: new StandAloneQuarterParser2(),\n M: new MonthParser2(),\n L: new StandAloneMonthParser2(),\n w: new LocalWeekParser2(),\n I: new ISOWeekParser2(),\n d: new DateParser2(),\n D: new DayOfYearParser2(),\n E: new DayParser2(),\n e: new LocalDayParser2(),\n c: new StandAloneLocalDayParser2(),\n i: new ISODayParser2(),\n a: new AMPMParser2(),\n b: new AMPMMidnightParser2(),\n B: new DayPeriodParser2(),\n h: new Hour1to12Parser2(),\n H: new Hour0to23Parser2(),\n K: new Hour0To11Parser2(),\n k: new Hour1To24Parser2(),\n m: new MinuteParser2(),\n s: new SecondParser2(),\n S: new FractionOfSecondParser2(),\n X: new ISOTimezoneWithZParser2(),\n x: new ISOTimezoneParser2(),\n t: new TimestampSecondsParser2(),\n T: new TimestampMillisecondsParser2()\n};\nconst formattingTokensRegExp = /[yYQqMLwIdDecihHKkms]o|(\\w)\\1*|''|'(''|[^'])+('|$)|./g;\nconst longFormattingTokensRegExp$1 = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g;\nconst escapedStringRegExp = /^'([^]*?)'?$/;\nconst doubleQuoteRegExp = /''/g;\nconst notWhitespaceRegExp = /\\S/;\nconst unescapedLatinCharacterRegExp = /[a-zA-Z]/;\nfunction parse$1(dateStr, formatStr, referenceDate, options) {\n var _a, _b, _c, _d, _e, _f, _g, _h;\n const defaultOptions2 = getDefaultOptions();\n const locale2 = (options == null ? void 0 : options.locale) ?? defaultOptions2.locale ?? enUS;\n const firstWeekContainsDate = (options == null ? void 0 : options.firstWeekContainsDate) ?? ((_b = (_a = options == null ? void 0 : options.locale) == null ? void 0 : _a.options) == null ? void 0 : _b.firstWeekContainsDate) ?? defaultOptions2.firstWeekContainsDate ?? ((_d = (_c = defaultOptions2.locale) == null ? void 0 : _c.options) == null ? void 0 : _d.firstWeekContainsDate) ?? 1;\n const weekStartsOn = (options == null ? void 0 : options.weekStartsOn) ?? ((_f = (_e = options == null ? void 0 : options.locale) == null ? void 0 : _e.options) == null ? void 0 : _f.weekStartsOn) ?? defaultOptions2.weekStartsOn ?? ((_h = (_g = defaultOptions2.locale) == null ? void 0 : _g.options) == null ? void 0 : _h.weekStartsOn) ?? 0;\n if (formatStr === \"\") {\n if (dateStr === \"\") {\n return toDate$1(referenceDate);\n } else {\n return constructFrom(referenceDate, NaN);\n }\n }\n const subFnOptions = {\n firstWeekContainsDate,\n weekStartsOn,\n locale: locale2\n };\n const setters = [new DateToSystemTimezoneSetter()];\n const tokens2 = formatStr.match(longFormattingTokensRegExp$1).map((substring) => {\n const firstCharacter = substring[0];\n if (firstCharacter in longFormatters) {\n const longFormatter = longFormatters[firstCharacter];\n return longFormatter(substring, locale2.formatLong);\n }\n return substring;\n }).join(\"\").match(formattingTokensRegExp);\n const usedTokens = [];\n for (let token2 of tokens2) {\n if (!(options == null ? void 0 : options.useAdditionalWeekYearTokens) && isProtectedWeekYearToken(token2)) {\n warnOrThrowProtectedError(token2, formatStr, dateStr);\n }\n if (!(options == null ? void 0 : options.useAdditionalDayOfYearTokens) && isProtectedDayOfYearToken(token2)) {\n warnOrThrowProtectedError(token2, formatStr, dateStr);\n }\n const firstCharacter = token2[0];\n const parser = parsers[firstCharacter];\n if (parser) {\n const { incompatibleTokens } = parser;\n if (Array.isArray(incompatibleTokens)) {\n const incompatibleToken = usedTokens.find(\n (usedToken) => incompatibleTokens.includes(usedToken.token) || usedToken.token === firstCharacter\n );\n if (incompatibleToken) {\n throw new RangeError(\n `The format string mustn't contain \\`${incompatibleToken.fullToken}\\` and \\`${token2}\\` at the same time`\n );\n }\n } else if (parser.incompatibleTokens === \"*\" && usedTokens.length > 0) {\n throw new RangeError(\n `The format string mustn't contain \\`${token2}\\` and any other token at the same time`\n );\n }\n usedTokens.push({ token: firstCharacter, fullToken: token2 });\n const parseResult = parser.run(\n dateStr,\n token2,\n locale2.match,\n subFnOptions\n );\n if (!parseResult) {\n return constructFrom(referenceDate, NaN);\n }\n setters.push(parseResult.setter);\n dateStr = parseResult.rest;\n } else {\n if (firstCharacter.match(unescapedLatinCharacterRegExp)) {\n throw new RangeError(\n \"Format string contains an unescaped latin alphabet character `\" + firstCharacter + \"`\"\n );\n }\n if (token2 === \"''\") {\n token2 = \"'\";\n } else if (firstCharacter === \"'\") {\n token2 = cleanEscapedString(token2);\n }\n if (dateStr.indexOf(token2) === 0) {\n dateStr = dateStr.slice(token2.length);\n } else {\n return constructFrom(referenceDate, NaN);\n }\n }\n }\n if (dateStr.length > 0 && notWhitespaceRegExp.test(dateStr)) {\n return constructFrom(referenceDate, NaN);\n }\n const uniquePrioritySetters = setters.map((setter) => setter.priority).sort((a2, b2) => b2 - a2).filter((priority, index2, array) => array.indexOf(priority) === index2).map(\n (priority) => setters.filter((setter) => setter.priority === priority).sort((a2, b2) => b2.subPriority - a2.subPriority)\n ).map((setterArray) => setterArray[0]);\n let date = toDate$1(referenceDate);\n if (isNaN(date.getTime())) {\n return constructFrom(referenceDate, NaN);\n }\n const flags = {};\n for (const setter of uniquePrioritySetters) {\n if (!setter.validate(date, subFnOptions)) {\n return constructFrom(referenceDate, NaN);\n }\n const result = setter.set(date, flags, subFnOptions);\n if (Array.isArray(result)) {\n date = result[0];\n Object.assign(flags, result[1]);\n } else {\n date = result;\n }\n }\n return constructFrom(referenceDate, date);\n}\nfunction cleanEscapedString(input) {\n return input.match(escapedStringRegExp)[1].replace(doubleQuoteRegExp, \"'\");\n}\nfunction parseISO(argument, options) {\n const additionalDigits = 2;\n const dateStrings = splitDateString(argument);\n let date;\n if (dateStrings.date) {\n const parseYearResult = parseYear(dateStrings.date, additionalDigits);\n date = parseDate$1(parseYearResult.restDateString, parseYearResult.year);\n }\n if (!date || isNaN(date.getTime())) {\n return /* @__PURE__ */ new Date(NaN);\n }\n const timestamp = date.getTime();\n let time = 0;\n let offset3;\n if (dateStrings.time) {\n time = parseTime(dateStrings.time);\n if (isNaN(time)) {\n return /* @__PURE__ */ new Date(NaN);\n }\n }\n if (dateStrings.timezone) {\n offset3 = parseTimezone(dateStrings.timezone);\n if (isNaN(offset3)) {\n return /* @__PURE__ */ new Date(NaN);\n }\n } else {\n const dirtyDate = new Date(timestamp + time);\n const result = /* @__PURE__ */ new Date(0);\n result.setFullYear(\n dirtyDate.getUTCFullYear(),\n dirtyDate.getUTCMonth(),\n dirtyDate.getUTCDate()\n );\n result.setHours(\n dirtyDate.getUTCHours(),\n dirtyDate.getUTCMinutes(),\n dirtyDate.getUTCSeconds(),\n dirtyDate.getUTCMilliseconds()\n );\n return result;\n }\n return new Date(timestamp + time + offset3);\n}\nconst patterns = {\n dateTimeDelimiter: /[T ]/,\n timeZoneDelimiter: /[Z ]/i,\n timezone: /([Z+-].*)$/\n};\nconst dateRegex = /^-?(?:(\\d{3})|(\\d{2})(?:-?(\\d{2}))?|W(\\d{2})(?:-?(\\d{1}))?|)$/;\nconst timeRegex = /^(\\d{2}(?:[.,]\\d*)?)(?::?(\\d{2}(?:[.,]\\d*)?))?(?::?(\\d{2}(?:[.,]\\d*)?))?$/;\nconst timezoneRegex = /^([+-])(\\d{2})(?::?(\\d{2}))?$/;\nfunction splitDateString(dateString) {\n const dateStrings = {};\n const array = dateString.split(patterns.dateTimeDelimiter);\n let timeString;\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(\n dateStrings.date.length,\n dateString.length\n );\n }\n }\n if (timeString) {\n const token2 = patterns.timezone.exec(timeString);\n if (token2) {\n dateStrings.time = timeString.replace(token2[1], \"\");\n dateStrings.timezone = token2[1];\n } else {\n dateStrings.time = timeString;\n }\n }\n return dateStrings;\n}\nfunction parseYear(dateString, additionalDigits) {\n const regex = new RegExp(\n \"^(?:(\\\\d{4}|[+-]\\\\d{\" + (4 + additionalDigits) + \"})|(\\\\d{2}|[+-]\\\\d{\" + (2 + additionalDigits) + \"})$)\"\n );\n const captures = dateString.match(regex);\n if (!captures) return { year: NaN, restDateString: \"\" };\n const year = captures[1] ? parseInt(captures[1]) : null;\n const century = captures[2] ? parseInt(captures[2]) : null;\n return {\n year: century === null ? year : century * 100,\n restDateString: dateString.slice((captures[1] || captures[2]).length)\n };\n}\nfunction parseDate$1(dateString, year) {\n if (year === null) return /* @__PURE__ */ new Date(NaN);\n const captures = dateString.match(dateRegex);\n if (!captures) return /* @__PURE__ */ new Date(NaN);\n const isWeekDate = !!captures[4];\n const dayOfYear = parseDateUnit(captures[1]);\n const month = parseDateUnit(captures[2]) - 1;\n const day = parseDateUnit(captures[3]);\n const week = parseDateUnit(captures[4]);\n const dayOfWeek = parseDateUnit(captures[5]) - 1;\n if (isWeekDate) {\n if (!validateWeekDate(year, week, dayOfWeek)) {\n return /* @__PURE__ */ new Date(NaN);\n }\n return dayOfISOWeekYear(year, week, dayOfWeek);\n } else {\n const date = /* @__PURE__ */ new Date(0);\n if (!validateDate(year, month, day) || !validateDayOfYearDate(year, dayOfYear)) {\n return /* @__PURE__ */ 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 const captures = timeString.match(timeRegex);\n if (!captures) return NaN;\n const hours2 = parseTimeUnit(captures[1]);\n const minutes2 = parseTimeUnit(captures[2]);\n const seconds2 = parseTimeUnit(captures[3]);\n if (!validateTime(hours2, minutes2, seconds2)) {\n return NaN;\n }\n return hours2 * millisecondsInHour + minutes2 * millisecondsInMinute + seconds2 * 1e3;\n}\nfunction parseTimeUnit(value) {\n return value && parseFloat(value.replace(\",\", \".\")) || 0;\n}\nfunction parseTimezone(timezoneString) {\n if (timezoneString === \"Z\") return 0;\n const captures = timezoneString.match(timezoneRegex);\n if (!captures) return 0;\n const sign2 = captures[1] === \"+\" ? -1 : 1;\n const hours2 = parseInt(captures[2]);\n const minutes2 = captures[3] && parseInt(captures[3]) || 0;\n if (!validateTimezone(hours2, minutes2)) {\n return NaN;\n }\n return sign2 * (hours2 * millisecondsInHour + minutes2 * millisecondsInMinute);\n}\nfunction dayOfISOWeekYear(isoWeekYear, week, day) {\n const date = /* @__PURE__ */ new Date(0);\n date.setUTCFullYear(isoWeekYear, 0, 4);\n const fourthOfJanuaryDay = date.getUTCDay() || 7;\n const diff2 = (week - 1) * 7 + day + 1 - fourthOfJanuaryDay;\n date.setUTCDate(date.getUTCDate() + diff2);\n return date;\n}\nconst 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(hours2, minutes2, seconds2) {\n if (hours2 === 24) {\n return minutes2 === 0 && seconds2 === 0;\n }\n return seconds2 >= 0 && seconds2 < 60 && minutes2 >= 0 && minutes2 < 60 && hours2 >= 0 && hours2 < 25;\n}\nfunction validateTimezone(_hours, minutes2) {\n return minutes2 >= 0 && minutes2 <= 59;\n}\nfunction addSeconds(date, amount) {\n return addMilliseconds(date, amount * 1e3);\n}\nfunction set$2(date, values2) {\n let _date = toDate$1(date);\n if (isNaN(+_date)) {\n return constructFrom(date, NaN);\n }\n if (values2.year != null) {\n _date.setFullYear(values2.year);\n }\n if (values2.month != null) {\n _date = setMonth$1(_date, values2.month);\n }\n if (values2.date != null) {\n _date.setDate(values2.date);\n }\n if (values2.hours != null) {\n _date.setHours(values2.hours);\n }\n if (values2.minutes != null) {\n _date.setMinutes(values2.minutes);\n }\n if (values2.seconds != null) {\n _date.setSeconds(values2.seconds);\n }\n if (values2.milliseconds != null) {\n _date.setMilliseconds(values2.milliseconds);\n }\n return _date;\n}\nfunction _inheritsLoose$1(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n _setPrototypeOf$2(subClass, superClass);\n}\nfunction _setPrototypeOf$2(o2, p2) {\n _setPrototypeOf$2 = Object.setPrototypeOf || function _setPrototypeOf2(o3, p3) {\n o3.__proto__ = p3;\n return o3;\n };\n return _setPrototypeOf$2(o2, p2);\n}\nfunction _objectWithoutPropertiesLoose$1(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n return target;\n}\nfunction _assertThisInitialized$2(self2) {\n if (self2 === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n return self2;\n}\nfunction isNodeFound(current, componentNode, ignoreClass) {\n if (current === componentNode) {\n return true;\n }\n if (current.correspondingElement) {\n return current.correspondingElement.classList.contains(ignoreClass);\n }\n return current.classList.contains(ignoreClass);\n}\nfunction findHighest(current, componentNode, ignoreClass) {\n if (current === componentNode) {\n return true;\n }\n while (current.parentNode || current.host) {\n if (current.parentNode && isNodeFound(current, componentNode, ignoreClass)) {\n return true;\n }\n current = current.parentNode || current.host;\n }\n return current;\n}\nfunction clickedScrollbar(evt) {\n return document.documentElement.clientWidth <= evt.clientX || document.documentElement.clientHeight <= evt.clientY;\n}\nvar testPassiveEventSupport = function testPassiveEventSupport2() {\n if (typeof window === \"undefined\" || typeof window.addEventListener !== \"function\") {\n return;\n }\n var passive = false;\n var options = Object.defineProperty({}, \"passive\", {\n get: function get4() {\n passive = true;\n }\n });\n var noop5 = function noop6() {\n };\n window.addEventListener(\"testPassiveEventSupport\", noop5, options);\n window.removeEventListener(\"testPassiveEventSupport\", noop5, options);\n return passive;\n};\nfunction autoInc(seed) {\n if (seed === void 0) {\n seed = 0;\n }\n return function() {\n return ++seed;\n };\n}\nvar uid = autoInc();\nvar passiveEventSupport;\nvar handlersMap = {};\nvar enabledInstances = {};\nvar touchEvents = [\"touchstart\", \"touchmove\"];\nvar IGNORE_CLASS_NAME = \"ignore-react-onclickoutside\";\nfunction getEventHandlerOptions(instance, eventName) {\n var handlerOptions = {};\n var isTouchEvent = touchEvents.indexOf(eventName) !== -1;\n if (isTouchEvent && passiveEventSupport) {\n handlerOptions.passive = !instance.props.preventDefault;\n }\n return handlerOptions;\n}\nfunction onClickOutsideHOC(WrappedComponent, config2) {\n var _class, _temp;\n var componentName = WrappedComponent.displayName || WrappedComponent.name || \"Component\";\n return _temp = _class = /* @__PURE__ */ function(_Component) {\n _inheritsLoose$1(onClickOutside, _Component);\n function onClickOutside(props) {\n var _this;\n _this = _Component.call(this, props) || this;\n _this.__outsideClickHandler = function(event) {\n if (typeof _this.__clickOutsideHandlerProp === \"function\") {\n _this.__clickOutsideHandlerProp(event);\n return;\n }\n var instance = _this.getInstance();\n if (typeof instance.props.handleClickOutside === \"function\") {\n instance.props.handleClickOutside(event);\n return;\n }\n if (typeof instance.handleClickOutside === \"function\") {\n instance.handleClickOutside(event);\n return;\n }\n throw new Error(\"WrappedComponent: \" + componentName + \" lacks a handleClickOutside(event) function for processing outside click events.\");\n };\n _this.__getComponentNode = function() {\n var instance = _this.getInstance();\n if (typeof instance.setClickOutsideRef === \"function\") {\n return instance.setClickOutsideRef();\n }\n return findDOMNode(instance);\n };\n _this.enableOnClickOutside = function() {\n if (typeof document === \"undefined\" || enabledInstances[_this._uid]) {\n return;\n }\n if (typeof passiveEventSupport === \"undefined\") {\n passiveEventSupport = testPassiveEventSupport();\n }\n enabledInstances[_this._uid] = true;\n var events = _this.props.eventTypes;\n if (!events.forEach) {\n events = [events];\n }\n handlersMap[_this._uid] = function(event) {\n if (_this.componentNode === null) return;\n if (_this.initTimeStamp > event.timeStamp) return;\n if (_this.props.preventDefault) {\n event.preventDefault();\n }\n if (_this.props.stopPropagation) {\n event.stopPropagation();\n }\n if (_this.props.excludeScrollbar && clickedScrollbar(event)) return;\n var current = event.composed && event.composedPath && event.composedPath().shift() || event.target;\n if (findHighest(current, _this.componentNode, _this.props.outsideClickIgnoreClass) !== document) {\n return;\n }\n _this.__outsideClickHandler(event);\n };\n events.forEach(function(eventName) {\n document.addEventListener(eventName, handlersMap[_this._uid], getEventHandlerOptions(_assertThisInitialized$2(_this), eventName));\n });\n };\n _this.disableOnClickOutside = function() {\n delete enabledInstances[_this._uid];\n var fn2 = handlersMap[_this._uid];\n if (fn2 && typeof document !== \"undefined\") {\n var events = _this.props.eventTypes;\n if (!events.forEach) {\n events = [events];\n }\n events.forEach(function(eventName) {\n return document.removeEventListener(eventName, fn2, getEventHandlerOptions(_assertThisInitialized$2(_this), eventName));\n });\n delete handlersMap[_this._uid];\n }\n };\n _this.getRef = function(ref2) {\n return _this.instanceRef = ref2;\n };\n _this._uid = uid();\n _this.initTimeStamp = performance.now();\n return _this;\n }\n var _proto = onClickOutside.prototype;\n _proto.getInstance = function getInstance2() {\n if (WrappedComponent.prototype && !WrappedComponent.prototype.isReactComponent) {\n return this;\n }\n var ref2 = this.instanceRef;\n return ref2.getInstance ? ref2.getInstance() : ref2;\n };\n _proto.componentDidMount = function componentDidMount() {\n if (typeof document === \"undefined\" || !document.createElement) {\n return;\n }\n this.getInstance();\n this.componentNode = this.__getComponentNode();\n if (this.props.disableOnClickOutside) return;\n this.enableOnClickOutside();\n };\n _proto.componentDidUpdate = function componentDidUpdate() {\n this.componentNode = this.__getComponentNode();\n };\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.disableOnClickOutside();\n };\n _proto.render = function render() {\n var _this$props = this.props;\n _this$props.excludeScrollbar;\n var props = _objectWithoutPropertiesLoose$1(_this$props, [\"excludeScrollbar\"]);\n if (WrappedComponent.prototype && WrappedComponent.prototype.isReactComponent) {\n props.ref = this.getRef;\n } else {\n props.wrappedRef = this.getRef;\n }\n props.disableOnClickOutside = this.disableOnClickOutside;\n props.enableOnClickOutside = this.enableOnClickOutside;\n return createElement(WrappedComponent, props);\n };\n return onClickOutside;\n }(Component), _class.displayName = \"OnClickOutside(\" + componentName + \")\", _class.defaultProps = {\n eventTypes: [\"mousedown\", \"touchstart\"],\n excludeScrollbar: false,\n outsideClickIgnoreClass: IGNORE_CLASS_NAME,\n preventDefault: false,\n stopPropagation: false\n }, _class.getClass = function() {\n return WrappedComponent.getClass ? WrappedComponent.getClass() : WrappedComponent;\n }, _temp;\n}\nfunction hasWindow() {\n return typeof window !== \"undefined\";\n}\nfunction getNodeName(node2) {\n if (isNode(node2)) {\n return (node2.nodeName || \"\").toLowerCase();\n }\n return \"#document\";\n}\nfunction getWindow(node2) {\n var _node$ownerDocument;\n return (node2 == null || (_node$ownerDocument = node2.ownerDocument) == null ? void 0 : _node$ownerDocument.defaultView) || window;\n}\nfunction getDocumentElement$1(node2) {\n var _ref;\n return (_ref = (isNode(node2) ? node2.ownerDocument : node2.document) || window.document) == null ? void 0 : _ref.documentElement;\n}\nfunction isNode(value) {\n if (!hasWindow()) {\n return false;\n }\n return value instanceof Node || value instanceof getWindow(value).Node;\n}\nfunction isElement$1(value) {\n if (!hasWindow()) {\n return false;\n }\n return value instanceof Element || value instanceof getWindow(value).Element;\n}\nfunction isHTMLElement(value) {\n if (!hasWindow()) {\n return false;\n }\n return value instanceof HTMLElement || value instanceof getWindow(value).HTMLElement;\n}\nfunction isShadowRoot(value) {\n if (!hasWindow() || typeof ShadowRoot === \"undefined\") {\n return false;\n }\n return value instanceof ShadowRoot || value instanceof getWindow(value).ShadowRoot;\n}\nfunction isOverflowElement(element) {\n const {\n overflow,\n overflowX,\n overflowY,\n display\n } = getComputedStyle$1(element);\n return /auto|scroll|overlay|hidden|clip/.test(overflow + overflowY + overflowX) && ![\"inline\", \"contents\"].includes(display);\n}\nfunction isTableElement(element) {\n return [\"table\", \"td\", \"th\"].includes(getNodeName(element));\n}\nfunction isTopLayer(element) {\n return [\":popover-open\", \":modal\"].some((selector2) => {\n try {\n return element.matches(selector2);\n } catch (e) {\n return false;\n }\n });\n}\nfunction isContainingBlock(elementOrCss) {\n const webkit2 = isWebKit();\n const css = isElement$1(elementOrCss) ? getComputedStyle$1(elementOrCss) : elementOrCss;\n return css.transform !== \"none\" || css.perspective !== \"none\" || (css.containerType ? css.containerType !== \"normal\" : false) || !webkit2 && (css.backdropFilter ? css.backdropFilter !== \"none\" : false) || !webkit2 && (css.filter ? css.filter !== \"none\" : false) || [\"transform\", \"perspective\", \"filter\"].some((value) => (css.willChange || \"\").includes(value)) || [\"paint\", \"layout\", \"strict\", \"content\"].some((value) => (css.contain || \"\").includes(value));\n}\nfunction getContainingBlock(element) {\n let currentNode = getParentNode(element);\n while (isHTMLElement(currentNode) && !isLastTraversableNode(currentNode)) {\n if (isContainingBlock(currentNode)) {\n return currentNode;\n } else if (isTopLayer(currentNode)) {\n return null;\n }\n currentNode = getParentNode(currentNode);\n }\n return null;\n}\nfunction isWebKit() {\n if (typeof CSS === \"undefined\" || !CSS.supports) return false;\n return CSS.supports(\"-webkit-backdrop-filter\", \"none\");\n}\nfunction isLastTraversableNode(node2) {\n return [\"html\", \"body\", \"#document\"].includes(getNodeName(node2));\n}\nfunction getComputedStyle$1(element) {\n return getWindow(element).getComputedStyle(element);\n}\nfunction getNodeScroll(element) {\n if (isElement$1(element)) {\n return {\n scrollLeft: element.scrollLeft,\n scrollTop: element.scrollTop\n };\n }\n return {\n scrollLeft: element.scrollX,\n scrollTop: element.scrollY\n };\n}\nfunction getParentNode(node2) {\n if (getNodeName(node2) === \"html\") {\n return node2;\n }\n const result = (\n // Step into the shadow DOM of the parent of a slotted node.\n node2.assignedSlot || // DOM Element detected.\n node2.parentNode || // ShadowRoot detected.\n isShadowRoot(node2) && node2.host || // Fallback.\n getDocumentElement$1(node2)\n );\n return isShadowRoot(result) ? result.host : result;\n}\nfunction getNearestOverflowAncestor(node2) {\n const parentNode2 = getParentNode(node2);\n if (isLastTraversableNode(parentNode2)) {\n return node2.ownerDocument ? node2.ownerDocument.body : node2.body;\n }\n if (isHTMLElement(parentNode2) && isOverflowElement(parentNode2)) {\n return parentNode2;\n }\n return getNearestOverflowAncestor(parentNode2);\n}\nfunction getOverflowAncestors(node2, list2, traverseIframes) {\n var _node$ownerDocument2;\n if (list2 === void 0) {\n list2 = [];\n }\n if (traverseIframes === void 0) {\n traverseIframes = true;\n }\n const scrollableAncestor = getNearestOverflowAncestor(node2);\n const isBody = scrollableAncestor === ((_node$ownerDocument2 = node2.ownerDocument) == null ? void 0 : _node$ownerDocument2.body);\n const win = getWindow(scrollableAncestor);\n if (isBody) {\n const frameElement = getFrameElement(win);\n return list2.concat(win, win.visualViewport || [], isOverflowElement(scrollableAncestor) ? scrollableAncestor : [], frameElement && traverseIframes ? getOverflowAncestors(frameElement) : []);\n }\n return list2.concat(scrollableAncestor, getOverflowAncestors(scrollableAncestor, [], traverseIframes));\n}\nfunction getFrameElement(win) {\n return win.parent && Object.getPrototypeOf(win.parent) ? win.frameElement : null;\n}\nconst min$1 = Math.min;\nconst max$1 = Math.max;\nconst round$1 = Math.round;\nconst floor = Math.floor;\nconst createCoords = (v2) => ({\n x: v2,\n y: v2\n});\nconst oppositeSideMap = {\n left: \"right\",\n right: \"left\",\n bottom: \"top\",\n top: \"bottom\"\n};\nconst oppositeAlignmentMap = {\n start: \"end\",\n end: \"start\"\n};\nfunction clamp(start4, value, end2) {\n return max$1(start4, min$1(value, end2));\n}\nfunction evaluate(value, param) {\n return typeof value === \"function\" ? value(param) : value;\n}\nfunction getSide$1(placement) {\n return placement.split(\"-\")[0];\n}\nfunction getAlignment(placement) {\n return placement.split(\"-\")[1];\n}\nfunction getOppositeAxis(axis) {\n return axis === \"x\" ? \"y\" : \"x\";\n}\nfunction getAxisLength(axis) {\n return axis === \"y\" ? \"height\" : \"width\";\n}\nfunction getSideAxis(placement) {\n return [\"top\", \"bottom\"].includes(getSide$1(placement)) ? \"y\" : \"x\";\n}\nfunction getAlignmentAxis(placement) {\n return getOppositeAxis(getSideAxis(placement));\n}\nfunction getAlignmentSides(placement, rects, rtl) {\n if (rtl === void 0) {\n rtl = false;\n }\n const alignment = getAlignment(placement);\n const alignmentAxis = getAlignmentAxis(placement);\n const length2 = getAxisLength(alignmentAxis);\n let mainAlignmentSide = alignmentAxis === \"x\" ? alignment === (rtl ? \"end\" : \"start\") ? \"right\" : \"left\" : alignment === \"start\" ? \"bottom\" : \"top\";\n if (rects.reference[length2] > rects.floating[length2]) {\n mainAlignmentSide = getOppositePlacement(mainAlignmentSide);\n }\n return [mainAlignmentSide, getOppositePlacement(mainAlignmentSide)];\n}\nfunction getExpandedPlacements(placement) {\n const oppositePlacement = getOppositePlacement(placement);\n return [getOppositeAlignmentPlacement(placement), oppositePlacement, getOppositeAlignmentPlacement(oppositePlacement)];\n}\nfunction getOppositeAlignmentPlacement(placement) {\n return placement.replace(/start|end/g, (alignment) => oppositeAlignmentMap[alignment]);\n}\nfunction getSideList(side, isStart, rtl) {\n const lr = [\"left\", \"right\"];\n const rl = [\"right\", \"left\"];\n const tb = [\"top\", \"bottom\"];\n const bt = [\"bottom\", \"top\"];\n switch (side) {\n case \"top\":\n case \"bottom\":\n if (rtl) return isStart ? rl : lr;\n return isStart ? lr : rl;\n case \"left\":\n case \"right\":\n return isStart ? tb : bt;\n default:\n return [];\n }\n}\nfunction getOppositeAxisPlacements(placement, flipAlignment, direction, rtl) {\n const alignment = getAlignment(placement);\n let list2 = getSideList(getSide$1(placement), direction === \"start\", rtl);\n if (alignment) {\n list2 = list2.map((side) => side + \"-\" + alignment);\n if (flipAlignment) {\n list2 = list2.concat(list2.map(getOppositeAlignmentPlacement));\n }\n }\n return list2;\n}\nfunction getOppositePlacement(placement) {\n return placement.replace(/left|right|bottom|top/g, (side) => oppositeSideMap[side]);\n}\nfunction expandPaddingObject(padding) {\n return {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n ...padding\n };\n}\nfunction getPaddingObject(padding) {\n return typeof padding !== \"number\" ? expandPaddingObject(padding) : {\n top: padding,\n right: padding,\n bottom: padding,\n left: padding\n };\n}\nfunction rectToClientRect(rect) {\n const {\n x: x2,\n y: y2,\n width,\n height\n } = rect;\n return {\n width,\n height,\n top: y2,\n left: x2,\n right: x2 + width,\n bottom: y2 + height,\n x: x2,\n y: y2\n };\n}\nfunction computeCoordsFromPlacement(_ref, placement, rtl) {\n let {\n reference,\n floating\n } = _ref;\n const sideAxis = getSideAxis(placement);\n const alignmentAxis = getAlignmentAxis(placement);\n const alignLength = getAxisLength(alignmentAxis);\n const side = getSide$1(placement);\n const isVertical = sideAxis === \"y\";\n const commonX = reference.x + reference.width / 2 - floating.width / 2;\n const commonY = reference.y + reference.height / 2 - floating.height / 2;\n const commonAlign = reference[alignLength] / 2 - floating[alignLength] / 2;\n let coords;\n switch (side) {\n case \"top\":\n coords = {\n x: commonX,\n y: reference.y - floating.height\n };\n break;\n case \"bottom\":\n coords = {\n x: commonX,\n y: reference.y + reference.height\n };\n break;\n case \"right\":\n coords = {\n x: reference.x + reference.width,\n y: commonY\n };\n break;\n case \"left\":\n coords = {\n x: reference.x - floating.width,\n y: commonY\n };\n break;\n default:\n coords = {\n x: reference.x,\n y: reference.y\n };\n }\n switch (getAlignment(placement)) {\n case \"start\":\n coords[alignmentAxis] -= commonAlign * (rtl && isVertical ? -1 : 1);\n break;\n case \"end\":\n coords[alignmentAxis] += commonAlign * (rtl && isVertical ? -1 : 1);\n break;\n }\n return coords;\n}\nconst computePosition$1 = async (reference, floating, config2) => {\n const {\n placement = \"bottom\",\n strategy = \"absolute\",\n middleware: middleware2 = [],\n platform: platform2\n } = config2;\n const validMiddleware = middleware2.filter(Boolean);\n const rtl = await (platform2.isRTL == null ? void 0 : platform2.isRTL(floating));\n let rects = await platform2.getElementRects({\n reference,\n floating,\n strategy\n });\n let {\n x: x2,\n y: y2\n } = computeCoordsFromPlacement(rects, placement, rtl);\n let statefulPlacement = placement;\n let middlewareData = {};\n let resetCount = 0;\n for (let i = 0; i < validMiddleware.length; i++) {\n const {\n name,\n fn: fn2\n } = validMiddleware[i];\n const {\n x: nextX,\n y: nextY,\n data,\n reset: reset2\n } = await fn2({\n x: x2,\n y: y2,\n initialPlacement: placement,\n placement: statefulPlacement,\n strategy,\n middlewareData,\n rects,\n platform: platform2,\n elements: {\n reference,\n floating\n }\n });\n x2 = nextX != null ? nextX : x2;\n y2 = nextY != null ? nextY : y2;\n middlewareData = {\n ...middlewareData,\n [name]: {\n ...middlewareData[name],\n ...data\n }\n };\n if (reset2 && resetCount <= 50) {\n resetCount++;\n if (typeof reset2 === \"object\") {\n if (reset2.placement) {\n statefulPlacement = reset2.placement;\n }\n if (reset2.rects) {\n rects = reset2.rects === true ? await platform2.getElementRects({\n reference,\n floating,\n strategy\n }) : reset2.rects;\n }\n ({\n x: x2,\n y: y2\n } = computeCoordsFromPlacement(rects, statefulPlacement, rtl));\n }\n i = -1;\n }\n }\n return {\n x: x2,\n y: y2,\n placement: statefulPlacement,\n strategy,\n middlewareData\n };\n};\nasync function detectOverflow(state, options) {\n var _await$platform$isEle;\n if (options === void 0) {\n options = {};\n }\n const {\n x: x2,\n y: y2,\n platform: platform2,\n rects,\n elements,\n strategy\n } = state;\n const {\n boundary = \"clippingAncestors\",\n rootBoundary = \"viewport\",\n elementContext = \"floating\",\n altBoundary = false,\n padding = 0\n } = evaluate(options, state);\n const paddingObject = getPaddingObject(padding);\n const altContext = elementContext === \"floating\" ? \"reference\" : \"floating\";\n const element = elements[altBoundary ? altContext : elementContext];\n const clippingClientRect = rectToClientRect(await platform2.getClippingRect({\n element: ((_await$platform$isEle = await (platform2.isElement == null ? void 0 : platform2.isElement(element))) != null ? _await$platform$isEle : true) ? element : element.contextElement || await (platform2.getDocumentElement == null ? void 0 : platform2.getDocumentElement(elements.floating)),\n boundary,\n rootBoundary,\n strategy\n }));\n const rect = elementContext === \"floating\" ? {\n x: x2,\n y: y2,\n width: rects.floating.width,\n height: rects.floating.height\n } : rects.reference;\n const offsetParent = await (platform2.getOffsetParent == null ? void 0 : platform2.getOffsetParent(elements.floating));\n const offsetScale = await (platform2.isElement == null ? void 0 : platform2.isElement(offsetParent)) ? await (platform2.getScale == null ? void 0 : platform2.getScale(offsetParent)) || {\n x: 1,\n y: 1\n } : {\n x: 1,\n y: 1\n };\n const elementClientRect = rectToClientRect(platform2.convertOffsetParentRelativeRectToViewportRelativeRect ? await platform2.convertOffsetParentRelativeRectToViewportRelativeRect({\n elements,\n rect,\n offsetParent,\n strategy\n }) : rect);\n return {\n top: (clippingClientRect.top - elementClientRect.top + paddingObject.top) / offsetScale.y,\n bottom: (elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom) / offsetScale.y,\n left: (clippingClientRect.left - elementClientRect.left + paddingObject.left) / offsetScale.x,\n right: (elementClientRect.right - clippingClientRect.right + paddingObject.right) / offsetScale.x\n };\n}\nconst arrow$4 = (options) => ({\n name: \"arrow\",\n options,\n async fn(state) {\n const {\n x: x2,\n y: y2,\n placement,\n rects,\n platform: platform2,\n elements,\n middlewareData\n } = state;\n const {\n element,\n padding = 0\n } = evaluate(options, state) || {};\n if (element == null) {\n return {};\n }\n const paddingObject = getPaddingObject(padding);\n const coords = {\n x: x2,\n y: y2\n };\n const axis = getAlignmentAxis(placement);\n const length2 = getAxisLength(axis);\n const arrowDimensions = await platform2.getDimensions(element);\n const isYAxis = axis === \"y\";\n const minProp = isYAxis ? \"top\" : \"left\";\n const maxProp = isYAxis ? \"bottom\" : \"right\";\n const clientProp = isYAxis ? \"clientHeight\" : \"clientWidth\";\n const endDiff = rects.reference[length2] + rects.reference[axis] - coords[axis] - rects.floating[length2];\n const startDiff = coords[axis] - rects.reference[axis];\n const arrowOffsetParent = await (platform2.getOffsetParent == null ? void 0 : platform2.getOffsetParent(element));\n let clientSize = arrowOffsetParent ? arrowOffsetParent[clientProp] : 0;\n if (!clientSize || !await (platform2.isElement == null ? void 0 : platform2.isElement(arrowOffsetParent))) {\n clientSize = elements.floating[clientProp] || rects.floating[length2];\n }\n const centerToReference = endDiff / 2 - startDiff / 2;\n const largestPossiblePadding = clientSize / 2 - arrowDimensions[length2] / 2 - 1;\n const minPadding = min$1(paddingObject[minProp], largestPossiblePadding);\n const maxPadding = min$1(paddingObject[maxProp], largestPossiblePadding);\n const min$1$1 = minPadding;\n const max2 = clientSize - arrowDimensions[length2] - maxPadding;\n const center = clientSize / 2 - arrowDimensions[length2] / 2 + centerToReference;\n const offset3 = clamp(min$1$1, center, max2);\n const shouldAddOffset = !middlewareData.arrow && getAlignment(placement) != null && center !== offset3 && rects.reference[length2] / 2 - (center < min$1$1 ? minPadding : maxPadding) - arrowDimensions[length2] / 2 < 0;\n const alignmentOffset = shouldAddOffset ? center < min$1$1 ? center - min$1$1 : center - max2 : 0;\n return {\n [axis]: coords[axis] + alignmentOffset,\n data: {\n [axis]: offset3,\n centerOffset: center - offset3 - alignmentOffset,\n ...shouldAddOffset && {\n alignmentOffset\n }\n },\n reset: shouldAddOffset\n };\n }\n});\nconst flip$2 = function(options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: \"flip\",\n options,\n async fn(state) {\n var _middlewareData$arrow, _middlewareData$flip;\n const {\n placement,\n middlewareData,\n rects,\n initialPlacement,\n platform: platform2,\n elements\n } = state;\n const {\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = true,\n fallbackPlacements: specifiedFallbackPlacements,\n fallbackStrategy = \"bestFit\",\n fallbackAxisSideDirection = \"none\",\n flipAlignment = true,\n ...detectOverflowOptions\n } = evaluate(options, state);\n if ((_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {\n return {};\n }\n const side = getSide$1(placement);\n const initialSideAxis = getSideAxis(initialPlacement);\n const isBasePlacement = getSide$1(initialPlacement) === initialPlacement;\n const rtl = await (platform2.isRTL == null ? void 0 : platform2.isRTL(elements.floating));\n const fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipAlignment ? [getOppositePlacement(initialPlacement)] : getExpandedPlacements(initialPlacement));\n const hasFallbackAxisSideDirection = fallbackAxisSideDirection !== \"none\";\n if (!specifiedFallbackPlacements && hasFallbackAxisSideDirection) {\n fallbackPlacements.push(...getOppositeAxisPlacements(initialPlacement, flipAlignment, fallbackAxisSideDirection, rtl));\n }\n const placements = [initialPlacement, ...fallbackPlacements];\n const overflow = await detectOverflow(state, detectOverflowOptions);\n const overflows = [];\n let overflowsData = ((_middlewareData$flip = middlewareData.flip) == null ? void 0 : _middlewareData$flip.overflows) || [];\n if (checkMainAxis) {\n overflows.push(overflow[side]);\n }\n if (checkCrossAxis) {\n const sides = getAlignmentSides(placement, rects, rtl);\n overflows.push(overflow[sides[0]], overflow[sides[1]]);\n }\n overflowsData = [...overflowsData, {\n placement,\n overflows\n }];\n if (!overflows.every((side2) => side2 <= 0)) {\n var _middlewareData$flip2, _overflowsData$filter;\n const nextIndex = (((_middlewareData$flip2 = middlewareData.flip) == null ? void 0 : _middlewareData$flip2.index) || 0) + 1;\n const nextPlacement = placements[nextIndex];\n if (nextPlacement) {\n return {\n data: {\n index: nextIndex,\n overflows: overflowsData\n },\n reset: {\n placement: nextPlacement\n }\n };\n }\n let resetPlacement = (_overflowsData$filter = overflowsData.filter((d2) => d2.overflows[0] <= 0).sort((a2, b2) => a2.overflows[1] - b2.overflows[1])[0]) == null ? void 0 : _overflowsData$filter.placement;\n if (!resetPlacement) {\n switch (fallbackStrategy) {\n case \"bestFit\": {\n var _overflowsData$filter2;\n const placement2 = (_overflowsData$filter2 = overflowsData.filter((d2) => {\n if (hasFallbackAxisSideDirection) {\n const currentSideAxis = getSideAxis(d2.placement);\n return currentSideAxis === initialSideAxis || // Create a bias to the `y` side axis due to horizontal\n // reading directions favoring greater width.\n currentSideAxis === \"y\";\n }\n return true;\n }).map((d2) => [d2.placement, d2.overflows.filter((overflow2) => overflow2 > 0).reduce((acc, overflow2) => acc + overflow2, 0)]).sort((a2, b2) => a2[1] - b2[1])[0]) == null ? void 0 : _overflowsData$filter2[0];\n if (placement2) {\n resetPlacement = placement2;\n }\n break;\n }\n case \"initialPlacement\":\n resetPlacement = initialPlacement;\n break;\n }\n }\n if (placement !== resetPlacement) {\n return {\n reset: {\n placement: resetPlacement\n }\n };\n }\n }\n return {};\n }\n };\n};\nasync function convertValueToCoords(state, options) {\n const {\n placement,\n platform: platform2,\n elements\n } = state;\n const rtl = await (platform2.isRTL == null ? void 0 : platform2.isRTL(elements.floating));\n const side = getSide$1(placement);\n const alignment = getAlignment(placement);\n const isVertical = getSideAxis(placement) === \"y\";\n const mainAxisMulti = [\"left\", \"top\"].includes(side) ? -1 : 1;\n const crossAxisMulti = rtl && isVertical ? -1 : 1;\n const rawValue = evaluate(options, state);\n let {\n mainAxis,\n crossAxis,\n alignmentAxis\n } = typeof rawValue === \"number\" ? {\n mainAxis: rawValue,\n crossAxis: 0,\n alignmentAxis: null\n } : {\n mainAxis: rawValue.mainAxis || 0,\n crossAxis: rawValue.crossAxis || 0,\n alignmentAxis: rawValue.alignmentAxis\n };\n if (alignment && typeof alignmentAxis === \"number\") {\n crossAxis = alignment === \"end\" ? alignmentAxis * -1 : alignmentAxis;\n }\n return isVertical ? {\n x: crossAxis * crossAxisMulti,\n y: mainAxis * mainAxisMulti\n } : {\n x: mainAxis * mainAxisMulti,\n y: crossAxis * crossAxisMulti\n };\n}\nconst offset$3 = function(options) {\n if (options === void 0) {\n options = 0;\n }\n return {\n name: \"offset\",\n options,\n async fn(state) {\n var _middlewareData$offse, _middlewareData$arrow;\n const {\n x: x2,\n y: y2,\n placement,\n middlewareData\n } = state;\n const diffCoords = await convertValueToCoords(state, options);\n if (placement === ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse.placement) && (_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {\n return {};\n }\n return {\n x: x2 + diffCoords.x,\n y: y2 + diffCoords.y,\n data: {\n ...diffCoords,\n placement\n }\n };\n }\n };\n};\nfunction getCssDimensions(element) {\n const css = getComputedStyle$1(element);\n let width = parseFloat(css.width) || 0;\n let height = parseFloat(css.height) || 0;\n const hasOffset = isHTMLElement(element);\n const offsetWidth = hasOffset ? element.offsetWidth : width;\n const offsetHeight = hasOffset ? element.offsetHeight : height;\n const shouldFallback = round$1(width) !== offsetWidth || round$1(height) !== offsetHeight;\n if (shouldFallback) {\n width = offsetWidth;\n height = offsetHeight;\n }\n return {\n width,\n height,\n $: shouldFallback\n };\n}\nfunction unwrapElement(element) {\n return !isElement$1(element) ? element.contextElement : element;\n}\nfunction getScale(element) {\n const domElement = unwrapElement(element);\n if (!isHTMLElement(domElement)) {\n return createCoords(1);\n }\n const rect = domElement.getBoundingClientRect();\n const {\n width,\n height,\n $\n } = getCssDimensions(domElement);\n let x2 = ($ ? round$1(rect.width) : rect.width) / width;\n let y2 = ($ ? round$1(rect.height) : rect.height) / height;\n if (!x2 || !Number.isFinite(x2)) {\n x2 = 1;\n }\n if (!y2 || !Number.isFinite(y2)) {\n y2 = 1;\n }\n return {\n x: x2,\n y: y2\n };\n}\nconst noOffsets = /* @__PURE__ */ createCoords(0);\nfunction getVisualOffsets(element) {\n const win = getWindow(element);\n if (!isWebKit() || !win.visualViewport) {\n return noOffsets;\n }\n return {\n x: win.visualViewport.offsetLeft,\n y: win.visualViewport.offsetTop\n };\n}\nfunction shouldAddVisualOffsets(element, isFixed, floatingOffsetParent) {\n if (isFixed === void 0) {\n isFixed = false;\n }\n if (!floatingOffsetParent || isFixed && floatingOffsetParent !== getWindow(element)) {\n return false;\n }\n return isFixed;\n}\nfunction getBoundingClientRect(element, includeScale, isFixedStrategy, offsetParent) {\n if (includeScale === void 0) {\n includeScale = false;\n }\n if (isFixedStrategy === void 0) {\n isFixedStrategy = false;\n }\n const clientRect2 = element.getBoundingClientRect();\n const domElement = unwrapElement(element);\n let scale = createCoords(1);\n if (includeScale) {\n if (offsetParent) {\n if (isElement$1(offsetParent)) {\n scale = getScale(offsetParent);\n }\n } else {\n scale = getScale(element);\n }\n }\n const visualOffsets = shouldAddVisualOffsets(domElement, isFixedStrategy, offsetParent) ? getVisualOffsets(domElement) : createCoords(0);\n let x2 = (clientRect2.left + visualOffsets.x) / scale.x;\n let y2 = (clientRect2.top + visualOffsets.y) / scale.y;\n let width = clientRect2.width / scale.x;\n let height = clientRect2.height / scale.y;\n if (domElement) {\n const win = getWindow(domElement);\n const offsetWin = offsetParent && isElement$1(offsetParent) ? getWindow(offsetParent) : offsetParent;\n let currentWin = win;\n let currentIFrame = getFrameElement(currentWin);\n while (currentIFrame && offsetParent && offsetWin !== currentWin) {\n const iframeScale = getScale(currentIFrame);\n const iframeRect = currentIFrame.getBoundingClientRect();\n const css = getComputedStyle$1(currentIFrame);\n const left = iframeRect.left + (currentIFrame.clientLeft + parseFloat(css.paddingLeft)) * iframeScale.x;\n const top = iframeRect.top + (currentIFrame.clientTop + parseFloat(css.paddingTop)) * iframeScale.y;\n x2 *= iframeScale.x;\n y2 *= iframeScale.y;\n width *= iframeScale.x;\n height *= iframeScale.y;\n x2 += left;\n y2 += top;\n currentWin = getWindow(currentIFrame);\n currentIFrame = getFrameElement(currentWin);\n }\n }\n return rectToClientRect({\n width,\n height,\n x: x2,\n y: y2\n });\n}\nfunction getWindowScrollBarX(element, rect) {\n const leftScroll = getNodeScroll(element).scrollLeft;\n if (!rect) {\n return getBoundingClientRect(getDocumentElement$1(element)).left + leftScroll;\n }\n return rect.left + leftScroll;\n}\nfunction getHTMLOffset(documentElement, scroll4, ignoreScrollbarX) {\n if (ignoreScrollbarX === void 0) {\n ignoreScrollbarX = false;\n }\n const htmlRect = documentElement.getBoundingClientRect();\n const x2 = htmlRect.left + scroll4.scrollLeft - (ignoreScrollbarX ? 0 : (\n // RTL scrollbar.\n getWindowScrollBarX(documentElement, htmlRect)\n ));\n const y2 = htmlRect.top + scroll4.scrollTop;\n return {\n x: x2,\n y: y2\n };\n}\nfunction convertOffsetParentRelativeRectToViewportRelativeRect(_ref) {\n let {\n elements,\n rect,\n offsetParent,\n strategy\n } = _ref;\n const isFixed = strategy === \"fixed\";\n const documentElement = getDocumentElement$1(offsetParent);\n const topLayer = elements ? isTopLayer(elements.floating) : false;\n if (offsetParent === documentElement || topLayer && isFixed) {\n return rect;\n }\n let scroll4 = {\n scrollLeft: 0,\n scrollTop: 0\n };\n let scale = createCoords(1);\n const offsets = createCoords(0);\n const isOffsetParentAnElement = isHTMLElement(offsetParent);\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== \"body\" || isOverflowElement(documentElement)) {\n scroll4 = getNodeScroll(offsetParent);\n }\n if (isHTMLElement(offsetParent)) {\n const offsetRect = getBoundingClientRect(offsetParent);\n scale = getScale(offsetParent);\n offsets.x = offsetRect.x + offsetParent.clientLeft;\n offsets.y = offsetRect.y + offsetParent.clientTop;\n }\n }\n const htmlOffset = documentElement && !isOffsetParentAnElement && !isFixed ? getHTMLOffset(documentElement, scroll4, true) : createCoords(0);\n return {\n width: rect.width * scale.x,\n height: rect.height * scale.y,\n x: rect.x * scale.x - scroll4.scrollLeft * scale.x + offsets.x + htmlOffset.x,\n y: rect.y * scale.y - scroll4.scrollTop * scale.y + offsets.y + htmlOffset.y\n };\n}\nfunction getClientRects(element) {\n return Array.from(element.getClientRects());\n}\nfunction getDocumentRect(element) {\n const html2 = getDocumentElement$1(element);\n const scroll4 = getNodeScroll(element);\n const body = element.ownerDocument.body;\n const width = max$1(html2.scrollWidth, html2.clientWidth, body.scrollWidth, body.clientWidth);\n const height = max$1(html2.scrollHeight, html2.clientHeight, body.scrollHeight, body.clientHeight);\n let x2 = -scroll4.scrollLeft + getWindowScrollBarX(element);\n const y2 = -scroll4.scrollTop;\n if (getComputedStyle$1(body).direction === \"rtl\") {\n x2 += max$1(html2.clientWidth, body.clientWidth) - width;\n }\n return {\n width,\n height,\n x: x2,\n y: y2\n };\n}\nfunction getViewportRect(element, strategy) {\n const win = getWindow(element);\n const html2 = getDocumentElement$1(element);\n const visualViewport = win.visualViewport;\n let width = html2.clientWidth;\n let height = html2.clientHeight;\n let x2 = 0;\n let y2 = 0;\n if (visualViewport) {\n width = visualViewport.width;\n height = visualViewport.height;\n const visualViewportBased = isWebKit();\n if (!visualViewportBased || visualViewportBased && strategy === \"fixed\") {\n x2 = visualViewport.offsetLeft;\n y2 = visualViewport.offsetTop;\n }\n }\n return {\n width,\n height,\n x: x2,\n y: y2\n };\n}\nfunction getInnerBoundingClientRect(element, strategy) {\n const clientRect2 = getBoundingClientRect(element, true, strategy === \"fixed\");\n const top = clientRect2.top + element.clientTop;\n const left = clientRect2.left + element.clientLeft;\n const scale = isHTMLElement(element) ? getScale(element) : createCoords(1);\n const width = element.clientWidth * scale.x;\n const height = element.clientHeight * scale.y;\n const x2 = left * scale.x;\n const y2 = top * scale.y;\n return {\n width,\n height,\n x: x2,\n y: y2\n };\n}\nfunction getClientRectFromClippingAncestor(element, clippingAncestor, strategy) {\n let rect;\n if (clippingAncestor === \"viewport\") {\n rect = getViewportRect(element, strategy);\n } else if (clippingAncestor === \"document\") {\n rect = getDocumentRect(getDocumentElement$1(element));\n } else if (isElement$1(clippingAncestor)) {\n rect = getInnerBoundingClientRect(clippingAncestor, strategy);\n } else {\n const visualOffsets = getVisualOffsets(element);\n rect = {\n x: clippingAncestor.x - visualOffsets.x,\n y: clippingAncestor.y - visualOffsets.y,\n width: clippingAncestor.width,\n height: clippingAncestor.height\n };\n }\n return rectToClientRect(rect);\n}\nfunction hasFixedPositionAncestor(element, stopNode) {\n const parentNode2 = getParentNode(element);\n if (parentNode2 === stopNode || !isElement$1(parentNode2) || isLastTraversableNode(parentNode2)) {\n return false;\n }\n return getComputedStyle$1(parentNode2).position === \"fixed\" || hasFixedPositionAncestor(parentNode2, stopNode);\n}\nfunction getClippingElementAncestors(element, cache) {\n const cachedResult2 = cache.get(element);\n if (cachedResult2) {\n return cachedResult2;\n }\n let result = getOverflowAncestors(element, [], false).filter((el) => isElement$1(el) && getNodeName(el) !== \"body\");\n let currentContainingBlockComputedStyle = null;\n const elementIsFixed = getComputedStyle$1(element).position === \"fixed\";\n let currentNode = elementIsFixed ? getParentNode(element) : element;\n while (isElement$1(currentNode) && !isLastTraversableNode(currentNode)) {\n const computedStyle = getComputedStyle$1(currentNode);\n const currentNodeIsContaining = isContainingBlock(currentNode);\n if (!currentNodeIsContaining && computedStyle.position === \"fixed\") {\n currentContainingBlockComputedStyle = null;\n }\n const shouldDropCurrentNode = elementIsFixed ? !currentNodeIsContaining && !currentContainingBlockComputedStyle : !currentNodeIsContaining && computedStyle.position === \"static\" && !!currentContainingBlockComputedStyle && [\"absolute\", \"fixed\"].includes(currentContainingBlockComputedStyle.position) || isOverflowElement(currentNode) && !currentNodeIsContaining && hasFixedPositionAncestor(element, currentNode);\n if (shouldDropCurrentNode) {\n result = result.filter((ancestor) => ancestor !== currentNode);\n } else {\n currentContainingBlockComputedStyle = computedStyle;\n }\n currentNode = getParentNode(currentNode);\n }\n cache.set(element, result);\n return result;\n}\nfunction getClippingRect(_ref) {\n let {\n element,\n boundary,\n rootBoundary,\n strategy\n } = _ref;\n const elementClippingAncestors = boundary === \"clippingAncestors\" ? isTopLayer(element) ? [] : getClippingElementAncestors(element, this._c) : [].concat(boundary);\n const clippingAncestors = [...elementClippingAncestors, rootBoundary];\n const firstClippingAncestor = clippingAncestors[0];\n const clippingRect = clippingAncestors.reduce((accRect, clippingAncestor) => {\n const rect = getClientRectFromClippingAncestor(element, clippingAncestor, strategy);\n accRect.top = max$1(rect.top, accRect.top);\n accRect.right = min$1(rect.right, accRect.right);\n accRect.bottom = min$1(rect.bottom, accRect.bottom);\n accRect.left = max$1(rect.left, accRect.left);\n return accRect;\n }, getClientRectFromClippingAncestor(element, firstClippingAncestor, strategy));\n return {\n width: clippingRect.right - clippingRect.left,\n height: clippingRect.bottom - clippingRect.top,\n x: clippingRect.left,\n y: clippingRect.top\n };\n}\nfunction getDimensions(element) {\n const {\n width,\n height\n } = getCssDimensions(element);\n return {\n width,\n height\n };\n}\nfunction getRectRelativeToOffsetParent(element, offsetParent, strategy) {\n const isOffsetParentAnElement = isHTMLElement(offsetParent);\n const documentElement = getDocumentElement$1(offsetParent);\n const isFixed = strategy === \"fixed\";\n const rect = getBoundingClientRect(element, true, isFixed, offsetParent);\n let scroll4 = {\n scrollLeft: 0,\n scrollTop: 0\n };\n const offsets = createCoords(0);\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== \"body\" || isOverflowElement(documentElement)) {\n scroll4 = getNodeScroll(offsetParent);\n }\n if (isOffsetParentAnElement) {\n const offsetRect = getBoundingClientRect(offsetParent, true, isFixed, offsetParent);\n offsets.x = offsetRect.x + offsetParent.clientLeft;\n offsets.y = offsetRect.y + offsetParent.clientTop;\n } else if (documentElement) {\n offsets.x = getWindowScrollBarX(documentElement);\n }\n }\n const htmlOffset = documentElement && !isOffsetParentAnElement && !isFixed ? getHTMLOffset(documentElement, scroll4) : createCoords(0);\n const x2 = rect.left + scroll4.scrollLeft - offsets.x - htmlOffset.x;\n const y2 = rect.top + scroll4.scrollTop - offsets.y - htmlOffset.y;\n return {\n x: x2,\n y: y2,\n width: rect.width,\n height: rect.height\n };\n}\nfunction isStaticPositioned(element) {\n return getComputedStyle$1(element).position === \"static\";\n}\nfunction getTrueOffsetParent(element, polyfill) {\n if (!isHTMLElement(element) || getComputedStyle$1(element).position === \"fixed\") {\n return null;\n }\n if (polyfill) {\n return polyfill(element);\n }\n let rawOffsetParent = element.offsetParent;\n if (getDocumentElement$1(element) === rawOffsetParent) {\n rawOffsetParent = rawOffsetParent.ownerDocument.body;\n }\n return rawOffsetParent;\n}\nfunction getOffsetParent(element, polyfill) {\n const win = getWindow(element);\n if (isTopLayer(element)) {\n return win;\n }\n if (!isHTMLElement(element)) {\n let svgOffsetParent = getParentNode(element);\n while (svgOffsetParent && !isLastTraversableNode(svgOffsetParent)) {\n if (isElement$1(svgOffsetParent) && !isStaticPositioned(svgOffsetParent)) {\n return svgOffsetParent;\n }\n svgOffsetParent = getParentNode(svgOffsetParent);\n }\n return win;\n }\n let offsetParent = getTrueOffsetParent(element, polyfill);\n while (offsetParent && isTableElement(offsetParent) && isStaticPositioned(offsetParent)) {\n offsetParent = getTrueOffsetParent(offsetParent, polyfill);\n }\n if (offsetParent && isLastTraversableNode(offsetParent) && isStaticPositioned(offsetParent) && !isContainingBlock(offsetParent)) {\n return win;\n }\n return offsetParent || getContainingBlock(element) || win;\n}\nconst getElementRects = async function(data) {\n const getOffsetParentFn = this.getOffsetParent || getOffsetParent;\n const getDimensionsFn = this.getDimensions;\n const floatingDimensions = await getDimensionsFn(data.floating);\n return {\n reference: getRectRelativeToOffsetParent(data.reference, await getOffsetParentFn(data.floating), data.strategy),\n floating: {\n x: 0,\n y: 0,\n width: floatingDimensions.width,\n height: floatingDimensions.height\n }\n };\n};\nfunction isRTL(element) {\n return getComputedStyle$1(element).direction === \"rtl\";\n}\nconst platform = {\n convertOffsetParentRelativeRectToViewportRelativeRect,\n getDocumentElement: getDocumentElement$1,\n getClippingRect,\n getOffsetParent,\n getElementRects,\n getClientRects,\n getDimensions,\n getScale,\n isElement: isElement$1,\n isRTL\n};\nfunction observeMove(element, onMove) {\n let io = null;\n let timeoutId;\n const root = getDocumentElement$1(element);\n function cleanup() {\n var _io;\n clearTimeout(timeoutId);\n (_io = io) == null || _io.disconnect();\n io = null;\n }\n function refresh(skip, threshold) {\n if (skip === void 0) {\n skip = false;\n }\n if (threshold === void 0) {\n threshold = 1;\n }\n cleanup();\n const {\n left,\n top,\n width,\n height\n } = element.getBoundingClientRect();\n if (!skip) {\n onMove();\n }\n if (!width || !height) {\n return;\n }\n const insetTop = floor(top);\n const insetRight = floor(root.clientWidth - (left + width));\n const insetBottom = floor(root.clientHeight - (top + height));\n const insetLeft = floor(left);\n const rootMargin = -insetTop + \"px \" + -insetRight + \"px \" + -insetBottom + \"px \" + -insetLeft + \"px\";\n const options = {\n rootMargin,\n threshold: max$1(0, min$1(1, threshold)) || 1\n };\n let isFirstUpdate = true;\n function handleObserve(entries) {\n const ratio = entries[0].intersectionRatio;\n if (ratio !== threshold) {\n if (!isFirstUpdate) {\n return refresh();\n }\n if (!ratio) {\n timeoutId = setTimeout(() => {\n refresh(false, 1e-7);\n }, 1e3);\n } else {\n refresh(false, ratio);\n }\n }\n isFirstUpdate = false;\n }\n try {\n io = new IntersectionObserver(handleObserve, {\n ...options,\n // Handle