diff --git a/emhttp/plugins/dynamix.gui.search/gui_search.page b/emhttp/plugins/dynamix.gui.search/gui_search.page index bbf63aa72..52bc3c265 100644 --- a/emhttp/plugins/dynamix.gui.search/gui_search.page +++ b/emhttp/plugins/dynamix.gui.search/gui_search.page @@ -12,7 +12,7 @@ Code='e956' ################################################### $currentUnraidPage = str_replace('Browse','Main',basename(explode('?',$_SERVER['REQUEST_URI'])[0])); -$guiSearchBoxSpan = ""; +$guiSearchBoxSpan = ""; ?> \n\n\n \n \n \n \n \n\n","import { cva, type VariantProps } from 'class-variance-authority';\n\nexport const brandButtonVariants = cva(\n 'group text-center font-semibold leading-none relative z-0 flex flex-row items-center justify-center border-2 border-solid shadow-none cursor-pointer rounded-md hover:shadow-md focus:shadow-md disabled:opacity-25 disabled:hover:opacity-25 disabled:focus:opacity-25 disabled:cursor-not-allowed',\n {\n variants: {\n variant: {\n fill: '[&]:text-white bg-transparent border-transparent',\n black:\n '[&]:text-white bg-black border-black transition hover:text-black focus:text-black hover:bg-grey focus:bg-grey hover:border-grey focus:border-grey',\n gray: 'text-black bg-grey transition hover:text-white focus:text-white hover:bg-grey-mid focus:bg-grey-mid hover:border-grey-mid focus:border-grey-mid',\n outline: '[&]:text-orange bg-transparent border-orange hover:text-white focus:text-white',\n 'outline-primary':\n 'text-primary [&]:text-primary uppercase tracking-widest bg-transparent border-primary rounded-sm hover:text-white focus:text-white',\n 'outline-black':\n 'text-black bg-transparent border-black hover:text-black focus:text-black hover:bg-grey focus:bg-grey hover:border-grey focus:border-grey',\n 'outline-white':\n 'text-white bg-transparent border-white hover:text-black focus:text-black hover:bg-white focus:bg-white',\n underline:\n 'opacity-75 underline border-transparent transition hover:text-primary hover:bg-muted hover:border-muted focus:text-primary focus:bg-muted focus:border-muted hover:opacity-100 focus:opacity-100',\n 'underline-hover-red':\n 'opacity-75 underline border-transparent transition hover:text-white hover:bg-unraid-red hover:border-unraid-red focus:text-white focus:bg-unraid-red focus:border-unraid-red hover:opacity-100 focus:opacity-100',\n white: 'text-black bg-white transition hover:bg-grey focus:bg-grey',\n none: '',\n },\n size: {\n '12px': 'text-12px gap-4px',\n '14px': 'text-14px gap-8px',\n '16px': 'text-16px gap-8px',\n '18px': 'text-18px gap-8px',\n '20px': 'text-20px gap-8px',\n '24px': 'text-24px gap-8px',\n },\n padding: {\n default: '',\n none: 'p-0',\n lean: 'px-4 py-2',\n },\n },\n compoundVariants: [\n {\n size: '12px',\n padding: 'default',\n class: 'p-8px',\n },\n {\n size: '14px',\n padding: 'default',\n class: 'p-8px',\n },\n {\n size: '16px',\n padding: 'default',\n class: 'p-12px',\n },\n {\n size: '18px',\n padding: 'default',\n class: 'p-12px',\n },\n {\n size: '20px',\n padding: 'default',\n class: 'p-16px',\n },\n {\n size: '24px',\n padding: 'default',\n class: 'p-16px',\n },\n ],\n defaultVariants: {\n variant: 'fill',\n size: '16px',\n padding: 'default',\n },\n }\n);\n\nexport type BrandButtonVariants = VariantProps;\n","const CLASS_PART_SEPARATOR = '-';\nconst createClassGroupUtils = config => {\n const classMap = createClassMap(config);\n const {\n conflictingClassGroups,\n conflictingClassGroupModifiers\n } = config;\n const getClassGroupId = className => {\n const classParts = className.split(CLASS_PART_SEPARATOR);\n // Classes like `-inset-1` produce an empty string as first classPart. We assume that classes for negative values are used correctly and remove it from classParts.\n if (classParts[0] === '' && classParts.length !== 1) {\n classParts.shift();\n }\n return getGroupRecursive(classParts, classMap) || getGroupIdForArbitraryProperty(className);\n };\n const getConflictingClassGroupIds = (classGroupId, hasPostfixModifier) => {\n const conflicts = conflictingClassGroups[classGroupId] || [];\n if (hasPostfixModifier && conflictingClassGroupModifiers[classGroupId]) {\n return [...conflicts, ...conflictingClassGroupModifiers[classGroupId]];\n }\n return conflicts;\n };\n return {\n getClassGroupId,\n getConflictingClassGroupIds\n };\n};\nconst getGroupRecursive = (classParts, classPartObject) => {\n if (classParts.length === 0) {\n return classPartObject.classGroupId;\n }\n const currentClassPart = classParts[0];\n const nextClassPartObject = classPartObject.nextPart.get(currentClassPart);\n const classGroupFromNextClassPart = nextClassPartObject ? getGroupRecursive(classParts.slice(1), nextClassPartObject) : undefined;\n if (classGroupFromNextClassPart) {\n return classGroupFromNextClassPart;\n }\n if (classPartObject.validators.length === 0) {\n return undefined;\n }\n const classRest = classParts.join(CLASS_PART_SEPARATOR);\n return classPartObject.validators.find(({\n validator\n }) => validator(classRest))?.classGroupId;\n};\nconst arbitraryPropertyRegex = /^\\[(.+)\\]$/;\nconst getGroupIdForArbitraryProperty = className => {\n if (arbitraryPropertyRegex.test(className)) {\n const arbitraryPropertyClassName = arbitraryPropertyRegex.exec(className)[1];\n const property = arbitraryPropertyClassName?.substring(0, arbitraryPropertyClassName.indexOf(':'));\n if (property) {\n // I use two dots here because one dot is used as prefix for class groups in plugins\n return 'arbitrary..' + property;\n }\n }\n};\n/**\n * Exported for testing only\n */\nconst createClassMap = config => {\n const {\n theme,\n prefix\n } = config;\n const classMap = {\n nextPart: new Map(),\n validators: []\n };\n const prefixedClassGroupEntries = getPrefixedClassGroupEntries(Object.entries(config.classGroups), prefix);\n prefixedClassGroupEntries.forEach(([classGroupId, classGroup]) => {\n processClassesRecursively(classGroup, classMap, classGroupId, theme);\n });\n return classMap;\n};\nconst processClassesRecursively = (classGroup, classPartObject, classGroupId, theme) => {\n classGroup.forEach(classDefinition => {\n if (typeof classDefinition === 'string') {\n const classPartObjectToEdit = classDefinition === '' ? classPartObject : getPart(classPartObject, classDefinition);\n classPartObjectToEdit.classGroupId = classGroupId;\n return;\n }\n if (typeof classDefinition === 'function') {\n if (isThemeGetter(classDefinition)) {\n processClassesRecursively(classDefinition(theme), classPartObject, classGroupId, theme);\n return;\n }\n classPartObject.validators.push({\n validator: classDefinition,\n classGroupId\n });\n return;\n }\n Object.entries(classDefinition).forEach(([key, classGroup]) => {\n processClassesRecursively(classGroup, getPart(classPartObject, key), classGroupId, theme);\n });\n });\n};\nconst getPart = (classPartObject, path) => {\n let currentClassPartObject = classPartObject;\n path.split(CLASS_PART_SEPARATOR).forEach(pathPart => {\n if (!currentClassPartObject.nextPart.has(pathPart)) {\n currentClassPartObject.nextPart.set(pathPart, {\n nextPart: new Map(),\n validators: []\n });\n }\n currentClassPartObject = currentClassPartObject.nextPart.get(pathPart);\n });\n return currentClassPartObject;\n};\nconst isThemeGetter = func => func.isThemeGetter;\nconst getPrefixedClassGroupEntries = (classGroupEntries, prefix) => {\n if (!prefix) {\n return classGroupEntries;\n }\n return classGroupEntries.map(([classGroupId, classGroup]) => {\n const prefixedClassGroup = classGroup.map(classDefinition => {\n if (typeof classDefinition === 'string') {\n return prefix + classDefinition;\n }\n if (typeof classDefinition === 'object') {\n return Object.fromEntries(Object.entries(classDefinition).map(([key, value]) => [prefix + key, value]));\n }\n return classDefinition;\n });\n return [classGroupId, prefixedClassGroup];\n });\n};\n\n// LRU cache inspired from hashlru (https://github.com/dominictarr/hashlru/blob/v1.0.4/index.js) but object replaced with Map to improve performance\nconst createLruCache = maxCacheSize => {\n if (maxCacheSize < 1) {\n return {\n get: () => undefined,\n set: () => {}\n };\n }\n let cacheSize = 0;\n let cache = new Map();\n let previousCache = new Map();\n const update = (key, value) => {\n cache.set(key, value);\n cacheSize++;\n if (cacheSize > maxCacheSize) {\n cacheSize = 0;\n previousCache = cache;\n cache = new Map();\n }\n };\n return {\n get(key) {\n let value = cache.get(key);\n if (value !== undefined) {\n return value;\n }\n if ((value = previousCache.get(key)) !== undefined) {\n update(key, value);\n return value;\n }\n },\n set(key, value) {\n if (cache.has(key)) {\n cache.set(key, value);\n } else {\n update(key, value);\n }\n }\n };\n};\nconst IMPORTANT_MODIFIER = '!';\nconst createParseClassName = config => {\n const {\n separator,\n experimentalParseClassName\n } = config;\n const isSeparatorSingleCharacter = separator.length === 1;\n const firstSeparatorCharacter = separator[0];\n const separatorLength = separator.length;\n // parseClassName inspired by https://github.com/tailwindlabs/tailwindcss/blob/v3.2.2/src/util/splitAtTopLevelOnly.js\n const parseClassName = className => {\n const modifiers = [];\n let bracketDepth = 0;\n let modifierStart = 0;\n let postfixModifierPosition;\n for (let index = 0; index < className.length; index++) {\n let currentCharacter = className[index];\n if (bracketDepth === 0) {\n if (currentCharacter === firstSeparatorCharacter && (isSeparatorSingleCharacter || className.slice(index, index + separatorLength) === separator)) {\n modifiers.push(className.slice(modifierStart, index));\n modifierStart = index + separatorLength;\n continue;\n }\n if (currentCharacter === '/') {\n postfixModifierPosition = index;\n continue;\n }\n }\n if (currentCharacter === '[') {\n bracketDepth++;\n } else if (currentCharacter === ']') {\n bracketDepth--;\n }\n }\n const baseClassNameWithImportantModifier = modifiers.length === 0 ? className : className.substring(modifierStart);\n const hasImportantModifier = baseClassNameWithImportantModifier.startsWith(IMPORTANT_MODIFIER);\n const baseClassName = hasImportantModifier ? baseClassNameWithImportantModifier.substring(1) : baseClassNameWithImportantModifier;\n const maybePostfixModifierPosition = postfixModifierPosition && postfixModifierPosition > modifierStart ? postfixModifierPosition - modifierStart : undefined;\n return {\n modifiers,\n hasImportantModifier,\n baseClassName,\n maybePostfixModifierPosition\n };\n };\n if (experimentalParseClassName) {\n return className => experimentalParseClassName({\n className,\n parseClassName\n });\n }\n return parseClassName;\n};\n/**\n * Sorts modifiers according to following schema:\n * - Predefined modifiers are sorted alphabetically\n * - When an arbitrary variant appears, it must be preserved which modifiers are before and after it\n */\nconst sortModifiers = modifiers => {\n if (modifiers.length <= 1) {\n return modifiers;\n }\n const sortedModifiers = [];\n let unsortedModifiers = [];\n modifiers.forEach(modifier => {\n const isArbitraryVariant = modifier[0] === '[';\n if (isArbitraryVariant) {\n sortedModifiers.push(...unsortedModifiers.sort(), modifier);\n unsortedModifiers = [];\n } else {\n unsortedModifiers.push(modifier);\n }\n });\n sortedModifiers.push(...unsortedModifiers.sort());\n return sortedModifiers;\n};\nconst createConfigUtils = config => ({\n cache: createLruCache(config.cacheSize),\n parseClassName: createParseClassName(config),\n ...createClassGroupUtils(config)\n});\nconst SPLIT_CLASSES_REGEX = /\\s+/;\nconst mergeClassList = (classList, configUtils) => {\n const {\n parseClassName,\n getClassGroupId,\n getConflictingClassGroupIds\n } = configUtils;\n /**\n * Set of classGroupIds in following format:\n * `{importantModifier}{variantModifiers}{classGroupId}`\n * @example 'float'\n * @example 'hover:focus:bg-color'\n * @example 'md:!pr'\n */\n const classGroupsInConflict = [];\n const classNames = classList.trim().split(SPLIT_CLASSES_REGEX);\n let result = '';\n for (let index = classNames.length - 1; index >= 0; index -= 1) {\n const originalClassName = classNames[index];\n const {\n modifiers,\n hasImportantModifier,\n baseClassName,\n maybePostfixModifierPosition\n } = parseClassName(originalClassName);\n let hasPostfixModifier = Boolean(maybePostfixModifierPosition);\n let classGroupId = getClassGroupId(hasPostfixModifier ? baseClassName.substring(0, maybePostfixModifierPosition) : baseClassName);\n if (!classGroupId) {\n if (!hasPostfixModifier) {\n // Not a Tailwind class\n result = originalClassName + (result.length > 0 ? ' ' + result : result);\n continue;\n }\n classGroupId = getClassGroupId(baseClassName);\n if (!classGroupId) {\n // Not a Tailwind class\n result = originalClassName + (result.length > 0 ? ' ' + result : result);\n continue;\n }\n hasPostfixModifier = false;\n }\n const variantModifier = sortModifiers(modifiers).join(':');\n const modifierId = hasImportantModifier ? variantModifier + IMPORTANT_MODIFIER : variantModifier;\n const classId = modifierId + classGroupId;\n if (classGroupsInConflict.includes(classId)) {\n // Tailwind class omitted due to conflict\n continue;\n }\n classGroupsInConflict.push(classId);\n const conflictGroups = getConflictingClassGroupIds(classGroupId, hasPostfixModifier);\n for (let i = 0; i < conflictGroups.length; ++i) {\n const group = conflictGroups[i];\n classGroupsInConflict.push(modifierId + group);\n }\n // Tailwind class not in conflict\n result = originalClassName + (result.length > 0 ? ' ' + result : result);\n }\n return result;\n};\n\n/**\n * The code in this file is copied from https://github.com/lukeed/clsx and modified to suit the needs of tailwind-merge better.\n *\n * Specifically:\n * - Runtime code from https://github.com/lukeed/clsx/blob/v1.2.1/src/index.js\n * - TypeScript types from https://github.com/lukeed/clsx/blob/v1.2.1/clsx.d.ts\n *\n * Original code has MIT license: Copyright (c) Luke Edwards (lukeed.com)\n */\nfunction twJoin() {\n let index = 0;\n let argument;\n let resolvedValue;\n let string = '';\n while (index < arguments.length) {\n if (argument = arguments[index++]) {\n if (resolvedValue = toValue(argument)) {\n string && (string += ' ');\n string += resolvedValue;\n }\n }\n }\n return string;\n}\nconst toValue = mix => {\n if (typeof mix === 'string') {\n return mix;\n }\n let resolvedValue;\n let string = '';\n for (let k = 0; k < mix.length; k++) {\n if (mix[k]) {\n if (resolvedValue = toValue(mix[k])) {\n string && (string += ' ');\n string += resolvedValue;\n }\n }\n }\n return string;\n};\nfunction createTailwindMerge(createConfigFirst, ...createConfigRest) {\n let configUtils;\n let cacheGet;\n let cacheSet;\n let functionToCall = initTailwindMerge;\n function initTailwindMerge(classList) {\n const config = createConfigRest.reduce((previousConfig, createConfigCurrent) => createConfigCurrent(previousConfig), createConfigFirst());\n configUtils = createConfigUtils(config);\n cacheGet = configUtils.cache.get;\n cacheSet = configUtils.cache.set;\n functionToCall = tailwindMerge;\n return tailwindMerge(classList);\n }\n function tailwindMerge(classList) {\n const cachedResult = cacheGet(classList);\n if (cachedResult) {\n return cachedResult;\n }\n const result = mergeClassList(classList, configUtils);\n cacheSet(classList, result);\n return result;\n }\n return function callTailwindMerge() {\n return functionToCall(twJoin.apply(null, arguments));\n };\n}\nconst fromTheme = key => {\n const themeGetter = theme => theme[key] || [];\n themeGetter.isThemeGetter = true;\n return themeGetter;\n};\nconst arbitraryValueRegex = /^\\[(?:([a-z-]+):)?(.+)\\]$/i;\nconst fractionRegex = /^\\d+\\/\\d+$/;\nconst stringLengths = /*#__PURE__*/new Set(['px', 'full', 'screen']);\nconst tshirtUnitRegex = /^(\\d+(\\.\\d+)?)?(xs|sm|md|lg|xl)$/;\nconst lengthUnitRegex = /\\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\\b(calc|min|max|clamp)\\(.+\\)|^0$/;\nconst colorFunctionRegex = /^(rgba?|hsla?|hwb|(ok)?(lab|lch))\\(.+\\)$/;\n// Shadow always begins with x and y offset separated by underscore optionally prepended by inset\nconst shadowRegex = /^(inset_)?-?((\\d+)?\\.?(\\d+)[a-z]+|0)_-?((\\d+)?\\.?(\\d+)[a-z]+|0)/;\nconst imageRegex = /^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\\(.+\\)$/;\nconst isLength = value => isNumber(value) || stringLengths.has(value) || fractionRegex.test(value);\nconst isArbitraryLength = value => getIsArbitraryValue(value, 'length', isLengthOnly);\nconst isNumber = value => Boolean(value) && !Number.isNaN(Number(value));\nconst isArbitraryNumber = value => getIsArbitraryValue(value, 'number', isNumber);\nconst isInteger = value => Boolean(value) && Number.isInteger(Number(value));\nconst isPercent = value => value.endsWith('%') && isNumber(value.slice(0, -1));\nconst isArbitraryValue = value => arbitraryValueRegex.test(value);\nconst isTshirtSize = value => tshirtUnitRegex.test(value);\nconst sizeLabels = /*#__PURE__*/new Set(['length', 'size', 'percentage']);\nconst isArbitrarySize = value => getIsArbitraryValue(value, sizeLabels, isNever);\nconst isArbitraryPosition = value => getIsArbitraryValue(value, 'position', isNever);\nconst imageLabels = /*#__PURE__*/new Set(['image', 'url']);\nconst isArbitraryImage = value => getIsArbitraryValue(value, imageLabels, isImage);\nconst isArbitraryShadow = value => getIsArbitraryValue(value, '', isShadow);\nconst isAny = () => true;\nconst getIsArbitraryValue = (value, label, testValue) => {\n const result = arbitraryValueRegex.exec(value);\n if (result) {\n if (result[1]) {\n return typeof label === 'string' ? result[1] === label : label.has(result[1]);\n }\n return testValue(result[2]);\n }\n return false;\n};\nconst isLengthOnly = value =>\n// `colorFunctionRegex` check is necessary because color functions can have percentages in them which which would be incorrectly classified as lengths.\n// For example, `hsl(0 0% 0%)` would be classified as a length without this check.\n// I could also use lookbehind assertion in `lengthUnitRegex` but that isn't supported widely enough.\nlengthUnitRegex.test(value) && !colorFunctionRegex.test(value);\nconst isNever = () => false;\nconst isShadow = value => shadowRegex.test(value);\nconst isImage = value => imageRegex.test(value);\nconst validators = /*#__PURE__*/Object.defineProperty({\n __proto__: null,\n isAny,\n isArbitraryImage,\n isArbitraryLength,\n isArbitraryNumber,\n isArbitraryPosition,\n isArbitraryShadow,\n isArbitrarySize,\n isArbitraryValue,\n isInteger,\n isLength,\n isNumber,\n isPercent,\n isTshirtSize\n}, Symbol.toStringTag, {\n value: 'Module'\n});\nconst getDefaultConfig = () => {\n const colors = fromTheme('colors');\n const spacing = fromTheme('spacing');\n const blur = fromTheme('blur');\n const brightness = fromTheme('brightness');\n const borderColor = fromTheme('borderColor');\n const borderRadius = fromTheme('borderRadius');\n const borderSpacing = fromTheme('borderSpacing');\n const borderWidth = fromTheme('borderWidth');\n const contrast = fromTheme('contrast');\n const grayscale = fromTheme('grayscale');\n const hueRotate = fromTheme('hueRotate');\n const invert = fromTheme('invert');\n const gap = fromTheme('gap');\n const gradientColorStops = fromTheme('gradientColorStops');\n const gradientColorStopPositions = fromTheme('gradientColorStopPositions');\n const inset = fromTheme('inset');\n const margin = fromTheme('margin');\n const opacity = fromTheme('opacity');\n const padding = fromTheme('padding');\n const saturate = fromTheme('saturate');\n const scale = fromTheme('scale');\n const sepia = fromTheme('sepia');\n const skew = fromTheme('skew');\n const space = fromTheme('space');\n const translate = fromTheme('translate');\n const getOverscroll = () => ['auto', 'contain', 'none'];\n const getOverflow = () => ['auto', 'hidden', 'clip', 'visible', 'scroll'];\n const getSpacingWithAutoAndArbitrary = () => ['auto', isArbitraryValue, spacing];\n const getSpacingWithArbitrary = () => [isArbitraryValue, spacing];\n const getLengthWithEmptyAndArbitrary = () => ['', isLength, isArbitraryLength];\n const getNumberWithAutoAndArbitrary = () => ['auto', isNumber, isArbitraryValue];\n const getPositions = () => ['bottom', 'center', 'left', 'left-bottom', 'left-top', 'right', 'right-bottom', 'right-top', 'top'];\n const getLineStyles = () => ['solid', 'dashed', 'dotted', 'double', 'none'];\n const getBlendModes = () => ['normal', 'multiply', 'screen', 'overlay', 'darken', 'lighten', 'color-dodge', 'color-burn', 'hard-light', 'soft-light', 'difference', 'exclusion', 'hue', 'saturation', 'color', 'luminosity'];\n const getAlign = () => ['start', 'end', 'center', 'between', 'around', 'evenly', 'stretch'];\n const getZeroAndEmpty = () => ['', '0', isArbitraryValue];\n const getBreaks = () => ['auto', 'avoid', 'all', 'avoid-page', 'page', 'left', 'right', 'column'];\n const getNumberAndArbitrary = () => [isNumber, isArbitraryValue];\n return {\n cacheSize: 500,\n separator: ':',\n theme: {\n colors: [isAny],\n spacing: [isLength, isArbitraryLength],\n blur: ['none', '', isTshirtSize, isArbitraryValue],\n brightness: getNumberAndArbitrary(),\n borderColor: [colors],\n borderRadius: ['none', '', 'full', isTshirtSize, isArbitraryValue],\n borderSpacing: getSpacingWithArbitrary(),\n borderWidth: getLengthWithEmptyAndArbitrary(),\n contrast: getNumberAndArbitrary(),\n grayscale: getZeroAndEmpty(),\n hueRotate: getNumberAndArbitrary(),\n invert: getZeroAndEmpty(),\n gap: getSpacingWithArbitrary(),\n gradientColorStops: [colors],\n gradientColorStopPositions: [isPercent, isArbitraryLength],\n inset: getSpacingWithAutoAndArbitrary(),\n margin: getSpacingWithAutoAndArbitrary(),\n opacity: getNumberAndArbitrary(),\n padding: getSpacingWithArbitrary(),\n saturate: getNumberAndArbitrary(),\n scale: getNumberAndArbitrary(),\n sepia: getZeroAndEmpty(),\n skew: getNumberAndArbitrary(),\n space: getSpacingWithArbitrary(),\n translate: getSpacingWithArbitrary()\n },\n classGroups: {\n // Layout\n /**\n * Aspect Ratio\n * @see https://tailwindcss.com/docs/aspect-ratio\n */\n aspect: [{\n aspect: ['auto', 'square', 'video', isArbitraryValue]\n }],\n /**\n * Container\n * @see https://tailwindcss.com/docs/container\n */\n container: ['container'],\n /**\n * Columns\n * @see https://tailwindcss.com/docs/columns\n */\n columns: [{\n columns: [isTshirtSize]\n }],\n /**\n * Break After\n * @see https://tailwindcss.com/docs/break-after\n */\n 'break-after': [{\n 'break-after': getBreaks()\n }],\n /**\n * Break Before\n * @see https://tailwindcss.com/docs/break-before\n */\n 'break-before': [{\n 'break-before': getBreaks()\n }],\n /**\n * Break Inside\n * @see https://tailwindcss.com/docs/break-inside\n */\n 'break-inside': [{\n 'break-inside': ['auto', 'avoid', 'avoid-page', 'avoid-column']\n }],\n /**\n * Box Decoration Break\n * @see https://tailwindcss.com/docs/box-decoration-break\n */\n 'box-decoration': [{\n 'box-decoration': ['slice', 'clone']\n }],\n /**\n * Box Sizing\n * @see https://tailwindcss.com/docs/box-sizing\n */\n box: [{\n box: ['border', 'content']\n }],\n /**\n * Display\n * @see https://tailwindcss.com/docs/display\n */\n display: ['block', 'inline-block', 'inline', 'flex', 'inline-flex', 'table', 'inline-table', 'table-caption', 'table-cell', 'table-column', 'table-column-group', 'table-footer-group', 'table-header-group', 'table-row-group', 'table-row', 'flow-root', 'grid', 'inline-grid', 'contents', 'list-item', 'hidden'],\n /**\n * Floats\n * @see https://tailwindcss.com/docs/float\n */\n float: [{\n float: ['right', 'left', 'none', 'start', 'end']\n }],\n /**\n * Clear\n * @see https://tailwindcss.com/docs/clear\n */\n clear: [{\n clear: ['left', 'right', 'both', 'none', 'start', 'end']\n }],\n /**\n * Isolation\n * @see https://tailwindcss.com/docs/isolation\n */\n isolation: ['isolate', 'isolation-auto'],\n /**\n * Object Fit\n * @see https://tailwindcss.com/docs/object-fit\n */\n 'object-fit': [{\n object: ['contain', 'cover', 'fill', 'none', 'scale-down']\n }],\n /**\n * Object Position\n * @see https://tailwindcss.com/docs/object-position\n */\n 'object-position': [{\n object: [...getPositions(), isArbitraryValue]\n }],\n /**\n * Overflow\n * @see https://tailwindcss.com/docs/overflow\n */\n overflow: [{\n overflow: getOverflow()\n }],\n /**\n * Overflow X\n * @see https://tailwindcss.com/docs/overflow\n */\n 'overflow-x': [{\n 'overflow-x': getOverflow()\n }],\n /**\n * Overflow Y\n * @see https://tailwindcss.com/docs/overflow\n */\n 'overflow-y': [{\n 'overflow-y': getOverflow()\n }],\n /**\n * Overscroll Behavior\n * @see https://tailwindcss.com/docs/overscroll-behavior\n */\n overscroll: [{\n overscroll: getOverscroll()\n }],\n /**\n * Overscroll Behavior X\n * @see https://tailwindcss.com/docs/overscroll-behavior\n */\n 'overscroll-x': [{\n 'overscroll-x': getOverscroll()\n }],\n /**\n * Overscroll Behavior Y\n * @see https://tailwindcss.com/docs/overscroll-behavior\n */\n 'overscroll-y': [{\n 'overscroll-y': getOverscroll()\n }],\n /**\n * Position\n * @see https://tailwindcss.com/docs/position\n */\n position: ['static', 'fixed', 'absolute', 'relative', 'sticky'],\n /**\n * Top / Right / Bottom / Left\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n inset: [{\n inset: [inset]\n }],\n /**\n * Right / Left\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n 'inset-x': [{\n 'inset-x': [inset]\n }],\n /**\n * Top / Bottom\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n 'inset-y': [{\n 'inset-y': [inset]\n }],\n /**\n * Start\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n start: [{\n start: [inset]\n }],\n /**\n * End\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n end: [{\n end: [inset]\n }],\n /**\n * Top\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n top: [{\n top: [inset]\n }],\n /**\n * Right\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n right: [{\n right: [inset]\n }],\n /**\n * Bottom\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n bottom: [{\n bottom: [inset]\n }],\n /**\n * Left\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n left: [{\n left: [inset]\n }],\n /**\n * Visibility\n * @see https://tailwindcss.com/docs/visibility\n */\n visibility: ['visible', 'invisible', 'collapse'],\n /**\n * Z-Index\n * @see https://tailwindcss.com/docs/z-index\n */\n z: [{\n z: ['auto', isInteger, isArbitraryValue]\n }],\n // Flexbox and Grid\n /**\n * Flex Basis\n * @see https://tailwindcss.com/docs/flex-basis\n */\n basis: [{\n basis: getSpacingWithAutoAndArbitrary()\n }],\n /**\n * Flex Direction\n * @see https://tailwindcss.com/docs/flex-direction\n */\n 'flex-direction': [{\n flex: ['row', 'row-reverse', 'col', 'col-reverse']\n }],\n /**\n * Flex Wrap\n * @see https://tailwindcss.com/docs/flex-wrap\n */\n 'flex-wrap': [{\n flex: ['wrap', 'wrap-reverse', 'nowrap']\n }],\n /**\n * Flex\n * @see https://tailwindcss.com/docs/flex\n */\n flex: [{\n flex: ['1', 'auto', 'initial', 'none', isArbitraryValue]\n }],\n /**\n * Flex Grow\n * @see https://tailwindcss.com/docs/flex-grow\n */\n grow: [{\n grow: getZeroAndEmpty()\n }],\n /**\n * Flex Shrink\n * @see https://tailwindcss.com/docs/flex-shrink\n */\n shrink: [{\n shrink: getZeroAndEmpty()\n }],\n /**\n * Order\n * @see https://tailwindcss.com/docs/order\n */\n order: [{\n order: ['first', 'last', 'none', isInteger, isArbitraryValue]\n }],\n /**\n * Grid Template Columns\n * @see https://tailwindcss.com/docs/grid-template-columns\n */\n 'grid-cols': [{\n 'grid-cols': [isAny]\n }],\n /**\n * Grid Column Start / End\n * @see https://tailwindcss.com/docs/grid-column\n */\n 'col-start-end': [{\n col: ['auto', {\n span: ['full', isInteger, isArbitraryValue]\n }, isArbitraryValue]\n }],\n /**\n * Grid Column Start\n * @see https://tailwindcss.com/docs/grid-column\n */\n 'col-start': [{\n 'col-start': getNumberWithAutoAndArbitrary()\n }],\n /**\n * Grid Column End\n * @see https://tailwindcss.com/docs/grid-column\n */\n 'col-end': [{\n 'col-end': getNumberWithAutoAndArbitrary()\n }],\n /**\n * Grid Template Rows\n * @see https://tailwindcss.com/docs/grid-template-rows\n */\n 'grid-rows': [{\n 'grid-rows': [isAny]\n }],\n /**\n * Grid Row Start / End\n * @see https://tailwindcss.com/docs/grid-row\n */\n 'row-start-end': [{\n row: ['auto', {\n span: [isInteger, isArbitraryValue]\n }, isArbitraryValue]\n }],\n /**\n * Grid Row Start\n * @see https://tailwindcss.com/docs/grid-row\n */\n 'row-start': [{\n 'row-start': getNumberWithAutoAndArbitrary()\n }],\n /**\n * Grid Row End\n * @see https://tailwindcss.com/docs/grid-row\n */\n 'row-end': [{\n 'row-end': getNumberWithAutoAndArbitrary()\n }],\n /**\n * Grid Auto Flow\n * @see https://tailwindcss.com/docs/grid-auto-flow\n */\n 'grid-flow': [{\n 'grid-flow': ['row', 'col', 'dense', 'row-dense', 'col-dense']\n }],\n /**\n * Grid Auto Columns\n * @see https://tailwindcss.com/docs/grid-auto-columns\n */\n 'auto-cols': [{\n 'auto-cols': ['auto', 'min', 'max', 'fr', isArbitraryValue]\n }],\n /**\n * Grid Auto Rows\n * @see https://tailwindcss.com/docs/grid-auto-rows\n */\n 'auto-rows': [{\n 'auto-rows': ['auto', 'min', 'max', 'fr', isArbitraryValue]\n }],\n /**\n * Gap\n * @see https://tailwindcss.com/docs/gap\n */\n gap: [{\n gap: [gap]\n }],\n /**\n * Gap X\n * @see https://tailwindcss.com/docs/gap\n */\n 'gap-x': [{\n 'gap-x': [gap]\n }],\n /**\n * Gap Y\n * @see https://tailwindcss.com/docs/gap\n */\n 'gap-y': [{\n 'gap-y': [gap]\n }],\n /**\n * Justify Content\n * @see https://tailwindcss.com/docs/justify-content\n */\n 'justify-content': [{\n justify: ['normal', ...getAlign()]\n }],\n /**\n * Justify Items\n * @see https://tailwindcss.com/docs/justify-items\n */\n 'justify-items': [{\n 'justify-items': ['start', 'end', 'center', 'stretch']\n }],\n /**\n * Justify Self\n * @see https://tailwindcss.com/docs/justify-self\n */\n 'justify-self': [{\n 'justify-self': ['auto', 'start', 'end', 'center', 'stretch']\n }],\n /**\n * Align Content\n * @see https://tailwindcss.com/docs/align-content\n */\n 'align-content': [{\n content: ['normal', ...getAlign(), 'baseline']\n }],\n /**\n * Align Items\n * @see https://tailwindcss.com/docs/align-items\n */\n 'align-items': [{\n items: ['start', 'end', 'center', 'baseline', 'stretch']\n }],\n /**\n * Align Self\n * @see https://tailwindcss.com/docs/align-self\n */\n 'align-self': [{\n self: ['auto', 'start', 'end', 'center', 'stretch', 'baseline']\n }],\n /**\n * Place Content\n * @see https://tailwindcss.com/docs/place-content\n */\n 'place-content': [{\n 'place-content': [...getAlign(), 'baseline']\n }],\n /**\n * Place Items\n * @see https://tailwindcss.com/docs/place-items\n */\n 'place-items': [{\n 'place-items': ['start', 'end', 'center', 'baseline', 'stretch']\n }],\n /**\n * Place Self\n * @see https://tailwindcss.com/docs/place-self\n */\n 'place-self': [{\n 'place-self': ['auto', 'start', 'end', 'center', 'stretch']\n }],\n // Spacing\n /**\n * Padding\n * @see https://tailwindcss.com/docs/padding\n */\n p: [{\n p: [padding]\n }],\n /**\n * Padding X\n * @see https://tailwindcss.com/docs/padding\n */\n px: [{\n px: [padding]\n }],\n /**\n * Padding Y\n * @see https://tailwindcss.com/docs/padding\n */\n py: [{\n py: [padding]\n }],\n /**\n * Padding Start\n * @see https://tailwindcss.com/docs/padding\n */\n ps: [{\n ps: [padding]\n }],\n /**\n * Padding End\n * @see https://tailwindcss.com/docs/padding\n */\n pe: [{\n pe: [padding]\n }],\n /**\n * Padding Top\n * @see https://tailwindcss.com/docs/padding\n */\n pt: [{\n pt: [padding]\n }],\n /**\n * Padding Right\n * @see https://tailwindcss.com/docs/padding\n */\n pr: [{\n pr: [padding]\n }],\n /**\n * Padding Bottom\n * @see https://tailwindcss.com/docs/padding\n */\n pb: [{\n pb: [padding]\n }],\n /**\n * Padding Left\n * @see https://tailwindcss.com/docs/padding\n */\n pl: [{\n pl: [padding]\n }],\n /**\n * Margin\n * @see https://tailwindcss.com/docs/margin\n */\n m: [{\n m: [margin]\n }],\n /**\n * Margin X\n * @see https://tailwindcss.com/docs/margin\n */\n mx: [{\n mx: [margin]\n }],\n /**\n * Margin Y\n * @see https://tailwindcss.com/docs/margin\n */\n my: [{\n my: [margin]\n }],\n /**\n * Margin Start\n * @see https://tailwindcss.com/docs/margin\n */\n ms: [{\n ms: [margin]\n }],\n /**\n * Margin End\n * @see https://tailwindcss.com/docs/margin\n */\n me: [{\n me: [margin]\n }],\n /**\n * Margin Top\n * @see https://tailwindcss.com/docs/margin\n */\n mt: [{\n mt: [margin]\n }],\n /**\n * Margin Right\n * @see https://tailwindcss.com/docs/margin\n */\n mr: [{\n mr: [margin]\n }],\n /**\n * Margin Bottom\n * @see https://tailwindcss.com/docs/margin\n */\n mb: [{\n mb: [margin]\n }],\n /**\n * Margin Left\n * @see https://tailwindcss.com/docs/margin\n */\n ml: [{\n ml: [margin]\n }],\n /**\n * Space Between X\n * @see https://tailwindcss.com/docs/space\n */\n 'space-x': [{\n 'space-x': [space]\n }],\n /**\n * Space Between X Reverse\n * @see https://tailwindcss.com/docs/space\n */\n 'space-x-reverse': ['space-x-reverse'],\n /**\n * Space Between Y\n * @see https://tailwindcss.com/docs/space\n */\n 'space-y': [{\n 'space-y': [space]\n }],\n /**\n * Space Between Y Reverse\n * @see https://tailwindcss.com/docs/space\n */\n 'space-y-reverse': ['space-y-reverse'],\n // Sizing\n /**\n * Width\n * @see https://tailwindcss.com/docs/width\n */\n w: [{\n w: ['auto', 'min', 'max', 'fit', 'svw', 'lvw', 'dvw', isArbitraryValue, spacing]\n }],\n /**\n * Min-Width\n * @see https://tailwindcss.com/docs/min-width\n */\n 'min-w': [{\n 'min-w': [isArbitraryValue, spacing, 'min', 'max', 'fit']\n }],\n /**\n * Max-Width\n * @see https://tailwindcss.com/docs/max-width\n */\n 'max-w': [{\n 'max-w': [isArbitraryValue, spacing, 'none', 'full', 'min', 'max', 'fit', 'prose', {\n screen: [isTshirtSize]\n }, isTshirtSize]\n }],\n /**\n * Height\n * @see https://tailwindcss.com/docs/height\n */\n h: [{\n h: [isArbitraryValue, spacing, 'auto', 'min', 'max', 'fit', 'svh', 'lvh', 'dvh']\n }],\n /**\n * Min-Height\n * @see https://tailwindcss.com/docs/min-height\n */\n 'min-h': [{\n 'min-h': [isArbitraryValue, spacing, 'min', 'max', 'fit', 'svh', 'lvh', 'dvh']\n }],\n /**\n * Max-Height\n * @see https://tailwindcss.com/docs/max-height\n */\n 'max-h': [{\n 'max-h': [isArbitraryValue, spacing, 'min', 'max', 'fit', 'svh', 'lvh', 'dvh']\n }],\n /**\n * Size\n * @see https://tailwindcss.com/docs/size\n */\n size: [{\n size: [isArbitraryValue, spacing, 'auto', 'min', 'max', 'fit']\n }],\n // Typography\n /**\n * Font Size\n * @see https://tailwindcss.com/docs/font-size\n */\n 'font-size': [{\n text: ['base', isTshirtSize, isArbitraryLength]\n }],\n /**\n * Font Smoothing\n * @see https://tailwindcss.com/docs/font-smoothing\n */\n 'font-smoothing': ['antialiased', 'subpixel-antialiased'],\n /**\n * Font Style\n * @see https://tailwindcss.com/docs/font-style\n */\n 'font-style': ['italic', 'not-italic'],\n /**\n * Font Weight\n * @see https://tailwindcss.com/docs/font-weight\n */\n 'font-weight': [{\n font: ['thin', 'extralight', 'light', 'normal', 'medium', 'semibold', 'bold', 'extrabold', 'black', isArbitraryNumber]\n }],\n /**\n * Font Family\n * @see https://tailwindcss.com/docs/font-family\n */\n 'font-family': [{\n font: [isAny]\n }],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-normal': ['normal-nums'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-ordinal': ['ordinal'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-slashed-zero': ['slashed-zero'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-figure': ['lining-nums', 'oldstyle-nums'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-spacing': ['proportional-nums', 'tabular-nums'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-fraction': ['diagonal-fractions', 'stacked-fractions'],\n /**\n * Letter Spacing\n * @see https://tailwindcss.com/docs/letter-spacing\n */\n tracking: [{\n tracking: ['tighter', 'tight', 'normal', 'wide', 'wider', 'widest', isArbitraryValue]\n }],\n /**\n * Line Clamp\n * @see https://tailwindcss.com/docs/line-clamp\n */\n 'line-clamp': [{\n 'line-clamp': ['none', isNumber, isArbitraryNumber]\n }],\n /**\n * Line Height\n * @see https://tailwindcss.com/docs/line-height\n */\n leading: [{\n leading: ['none', 'tight', 'snug', 'normal', 'relaxed', 'loose', isLength, isArbitraryValue]\n }],\n /**\n * List Style Image\n * @see https://tailwindcss.com/docs/list-style-image\n */\n 'list-image': [{\n 'list-image': ['none', isArbitraryValue]\n }],\n /**\n * List Style Type\n * @see https://tailwindcss.com/docs/list-style-type\n */\n 'list-style-type': [{\n list: ['none', 'disc', 'decimal', isArbitraryValue]\n }],\n /**\n * List Style Position\n * @see https://tailwindcss.com/docs/list-style-position\n */\n 'list-style-position': [{\n list: ['inside', 'outside']\n }],\n /**\n * Placeholder Color\n * @deprecated since Tailwind CSS v3.0.0\n * @see https://tailwindcss.com/docs/placeholder-color\n */\n 'placeholder-color': [{\n placeholder: [colors]\n }],\n /**\n * Placeholder Opacity\n * @see https://tailwindcss.com/docs/placeholder-opacity\n */\n 'placeholder-opacity': [{\n 'placeholder-opacity': [opacity]\n }],\n /**\n * Text Alignment\n * @see https://tailwindcss.com/docs/text-align\n */\n 'text-alignment': [{\n text: ['left', 'center', 'right', 'justify', 'start', 'end']\n }],\n /**\n * Text Color\n * @see https://tailwindcss.com/docs/text-color\n */\n 'text-color': [{\n text: [colors]\n }],\n /**\n * Text Opacity\n * @see https://tailwindcss.com/docs/text-opacity\n */\n 'text-opacity': [{\n 'text-opacity': [opacity]\n }],\n /**\n * Text Decoration\n * @see https://tailwindcss.com/docs/text-decoration\n */\n 'text-decoration': ['underline', 'overline', 'line-through', 'no-underline'],\n /**\n * Text Decoration Style\n * @see https://tailwindcss.com/docs/text-decoration-style\n */\n 'text-decoration-style': [{\n decoration: [...getLineStyles(), 'wavy']\n }],\n /**\n * Text Decoration Thickness\n * @see https://tailwindcss.com/docs/text-decoration-thickness\n */\n 'text-decoration-thickness': [{\n decoration: ['auto', 'from-font', isLength, isArbitraryLength]\n }],\n /**\n * Text Underline Offset\n * @see https://tailwindcss.com/docs/text-underline-offset\n */\n 'underline-offset': [{\n 'underline-offset': ['auto', isLength, isArbitraryValue]\n }],\n /**\n * Text Decoration Color\n * @see https://tailwindcss.com/docs/text-decoration-color\n */\n 'text-decoration-color': [{\n decoration: [colors]\n }],\n /**\n * Text Transform\n * @see https://tailwindcss.com/docs/text-transform\n */\n 'text-transform': ['uppercase', 'lowercase', 'capitalize', 'normal-case'],\n /**\n * Text Overflow\n * @see https://tailwindcss.com/docs/text-overflow\n */\n 'text-overflow': ['truncate', 'text-ellipsis', 'text-clip'],\n /**\n * Text Wrap\n * @see https://tailwindcss.com/docs/text-wrap\n */\n 'text-wrap': [{\n text: ['wrap', 'nowrap', 'balance', 'pretty']\n }],\n /**\n * Text Indent\n * @see https://tailwindcss.com/docs/text-indent\n */\n indent: [{\n indent: getSpacingWithArbitrary()\n }],\n /**\n * Vertical Alignment\n * @see https://tailwindcss.com/docs/vertical-align\n */\n 'vertical-align': [{\n align: ['baseline', 'top', 'middle', 'bottom', 'text-top', 'text-bottom', 'sub', 'super', isArbitraryValue]\n }],\n /**\n * Whitespace\n * @see https://tailwindcss.com/docs/whitespace\n */\n whitespace: [{\n whitespace: ['normal', 'nowrap', 'pre', 'pre-line', 'pre-wrap', 'break-spaces']\n }],\n /**\n * Word Break\n * @see https://tailwindcss.com/docs/word-break\n */\n break: [{\n break: ['normal', 'words', 'all', 'keep']\n }],\n /**\n * Hyphens\n * @see https://tailwindcss.com/docs/hyphens\n */\n hyphens: [{\n hyphens: ['none', 'manual', 'auto']\n }],\n /**\n * Content\n * @see https://tailwindcss.com/docs/content\n */\n content: [{\n content: ['none', isArbitraryValue]\n }],\n // Backgrounds\n /**\n * Background Attachment\n * @see https://tailwindcss.com/docs/background-attachment\n */\n 'bg-attachment': [{\n bg: ['fixed', 'local', 'scroll']\n }],\n /**\n * Background Clip\n * @see https://tailwindcss.com/docs/background-clip\n */\n 'bg-clip': [{\n 'bg-clip': ['border', 'padding', 'content', 'text']\n }],\n /**\n * Background Opacity\n * @deprecated since Tailwind CSS v3.0.0\n * @see https://tailwindcss.com/docs/background-opacity\n */\n 'bg-opacity': [{\n 'bg-opacity': [opacity]\n }],\n /**\n * Background Origin\n * @see https://tailwindcss.com/docs/background-origin\n */\n 'bg-origin': [{\n 'bg-origin': ['border', 'padding', 'content']\n }],\n /**\n * Background Position\n * @see https://tailwindcss.com/docs/background-position\n */\n 'bg-position': [{\n bg: [...getPositions(), isArbitraryPosition]\n }],\n /**\n * Background Repeat\n * @see https://tailwindcss.com/docs/background-repeat\n */\n 'bg-repeat': [{\n bg: ['no-repeat', {\n repeat: ['', 'x', 'y', 'round', 'space']\n }]\n }],\n /**\n * Background Size\n * @see https://tailwindcss.com/docs/background-size\n */\n 'bg-size': [{\n bg: ['auto', 'cover', 'contain', isArbitrarySize]\n }],\n /**\n * Background Image\n * @see https://tailwindcss.com/docs/background-image\n */\n 'bg-image': [{\n bg: ['none', {\n 'gradient-to': ['t', 'tr', 'r', 'br', 'b', 'bl', 'l', 'tl']\n }, isArbitraryImage]\n }],\n /**\n * Background Color\n * @see https://tailwindcss.com/docs/background-color\n */\n 'bg-color': [{\n bg: [colors]\n }],\n /**\n * Gradient Color Stops From Position\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-from-pos': [{\n from: [gradientColorStopPositions]\n }],\n /**\n * Gradient Color Stops Via Position\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-via-pos': [{\n via: [gradientColorStopPositions]\n }],\n /**\n * Gradient Color Stops To Position\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-to-pos': [{\n to: [gradientColorStopPositions]\n }],\n /**\n * Gradient Color Stops From\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-from': [{\n from: [gradientColorStops]\n }],\n /**\n * Gradient Color Stops Via\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-via': [{\n via: [gradientColorStops]\n }],\n /**\n * Gradient Color Stops To\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-to': [{\n to: [gradientColorStops]\n }],\n // Borders\n /**\n * Border Radius\n * @see https://tailwindcss.com/docs/border-radius\n */\n rounded: [{\n rounded: [borderRadius]\n }],\n /**\n * Border Radius Start\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-s': [{\n 'rounded-s': [borderRadius]\n }],\n /**\n * Border Radius End\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-e': [{\n 'rounded-e': [borderRadius]\n }],\n /**\n * Border Radius Top\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-t': [{\n 'rounded-t': [borderRadius]\n }],\n /**\n * Border Radius Right\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-r': [{\n 'rounded-r': [borderRadius]\n }],\n /**\n * Border Radius Bottom\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-b': [{\n 'rounded-b': [borderRadius]\n }],\n /**\n * Border Radius Left\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-l': [{\n 'rounded-l': [borderRadius]\n }],\n /**\n * Border Radius Start Start\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-ss': [{\n 'rounded-ss': [borderRadius]\n }],\n /**\n * Border Radius Start End\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-se': [{\n 'rounded-se': [borderRadius]\n }],\n /**\n * Border Radius End End\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-ee': [{\n 'rounded-ee': [borderRadius]\n }],\n /**\n * Border Radius End Start\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-es': [{\n 'rounded-es': [borderRadius]\n }],\n /**\n * Border Radius Top Left\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-tl': [{\n 'rounded-tl': [borderRadius]\n }],\n /**\n * Border Radius Top Right\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-tr': [{\n 'rounded-tr': [borderRadius]\n }],\n /**\n * Border Radius Bottom Right\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-br': [{\n 'rounded-br': [borderRadius]\n }],\n /**\n * Border Radius Bottom Left\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-bl': [{\n 'rounded-bl': [borderRadius]\n }],\n /**\n * Border Width\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w': [{\n border: [borderWidth]\n }],\n /**\n * Border Width X\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-x': [{\n 'border-x': [borderWidth]\n }],\n /**\n * Border Width Y\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-y': [{\n 'border-y': [borderWidth]\n }],\n /**\n * Border Width Start\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-s': [{\n 'border-s': [borderWidth]\n }],\n /**\n * Border Width End\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-e': [{\n 'border-e': [borderWidth]\n }],\n /**\n * Border Width Top\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-t': [{\n 'border-t': [borderWidth]\n }],\n /**\n * Border Width Right\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-r': [{\n 'border-r': [borderWidth]\n }],\n /**\n * Border Width Bottom\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-b': [{\n 'border-b': [borderWidth]\n }],\n /**\n * Border Width Left\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-l': [{\n 'border-l': [borderWidth]\n }],\n /**\n * Border Opacity\n * @see https://tailwindcss.com/docs/border-opacity\n */\n 'border-opacity': [{\n 'border-opacity': [opacity]\n }],\n /**\n * Border Style\n * @see https://tailwindcss.com/docs/border-style\n */\n 'border-style': [{\n border: [...getLineStyles(), 'hidden']\n }],\n /**\n * Divide Width X\n * @see https://tailwindcss.com/docs/divide-width\n */\n 'divide-x': [{\n 'divide-x': [borderWidth]\n }],\n /**\n * Divide Width X Reverse\n * @see https://tailwindcss.com/docs/divide-width\n */\n 'divide-x-reverse': ['divide-x-reverse'],\n /**\n * Divide Width Y\n * @see https://tailwindcss.com/docs/divide-width\n */\n 'divide-y': [{\n 'divide-y': [borderWidth]\n }],\n /**\n * Divide Width Y Reverse\n * @see https://tailwindcss.com/docs/divide-width\n */\n 'divide-y-reverse': ['divide-y-reverse'],\n /**\n * Divide Opacity\n * @see https://tailwindcss.com/docs/divide-opacity\n */\n 'divide-opacity': [{\n 'divide-opacity': [opacity]\n }],\n /**\n * Divide Style\n * @see https://tailwindcss.com/docs/divide-style\n */\n 'divide-style': [{\n divide: getLineStyles()\n }],\n /**\n * Border Color\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color': [{\n border: [borderColor]\n }],\n /**\n * Border Color X\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-x': [{\n 'border-x': [borderColor]\n }],\n /**\n * Border Color Y\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-y': [{\n 'border-y': [borderColor]\n }],\n /**\n * Border Color S\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-s': [{\n 'border-s': [borderColor]\n }],\n /**\n * Border Color E\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-e': [{\n 'border-e': [borderColor]\n }],\n /**\n * Border Color Top\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-t': [{\n 'border-t': [borderColor]\n }],\n /**\n * Border Color Right\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-r': [{\n 'border-r': [borderColor]\n }],\n /**\n * Border Color Bottom\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-b': [{\n 'border-b': [borderColor]\n }],\n /**\n * Border Color Left\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-l': [{\n 'border-l': [borderColor]\n }],\n /**\n * Divide Color\n * @see https://tailwindcss.com/docs/divide-color\n */\n 'divide-color': [{\n divide: [borderColor]\n }],\n /**\n * Outline Style\n * @see https://tailwindcss.com/docs/outline-style\n */\n 'outline-style': [{\n outline: ['', ...getLineStyles()]\n }],\n /**\n * Outline Offset\n * @see https://tailwindcss.com/docs/outline-offset\n */\n 'outline-offset': [{\n 'outline-offset': [isLength, isArbitraryValue]\n }],\n /**\n * Outline Width\n * @see https://tailwindcss.com/docs/outline-width\n */\n 'outline-w': [{\n outline: [isLength, isArbitraryLength]\n }],\n /**\n * Outline Color\n * @see https://tailwindcss.com/docs/outline-color\n */\n 'outline-color': [{\n outline: [colors]\n }],\n /**\n * Ring Width\n * @see https://tailwindcss.com/docs/ring-width\n */\n 'ring-w': [{\n ring: getLengthWithEmptyAndArbitrary()\n }],\n /**\n * Ring Width Inset\n * @see https://tailwindcss.com/docs/ring-width\n */\n 'ring-w-inset': ['ring-inset'],\n /**\n * Ring Color\n * @see https://tailwindcss.com/docs/ring-color\n */\n 'ring-color': [{\n ring: [colors]\n }],\n /**\n * Ring Opacity\n * @see https://tailwindcss.com/docs/ring-opacity\n */\n 'ring-opacity': [{\n 'ring-opacity': [opacity]\n }],\n /**\n * Ring Offset Width\n * @see https://tailwindcss.com/docs/ring-offset-width\n */\n 'ring-offset-w': [{\n 'ring-offset': [isLength, isArbitraryLength]\n }],\n /**\n * Ring Offset Color\n * @see https://tailwindcss.com/docs/ring-offset-color\n */\n 'ring-offset-color': [{\n 'ring-offset': [colors]\n }],\n // Effects\n /**\n * Box Shadow\n * @see https://tailwindcss.com/docs/box-shadow\n */\n shadow: [{\n shadow: ['', 'inner', 'none', isTshirtSize, isArbitraryShadow]\n }],\n /**\n * Box Shadow Color\n * @see https://tailwindcss.com/docs/box-shadow-color\n */\n 'shadow-color': [{\n shadow: [isAny]\n }],\n /**\n * Opacity\n * @see https://tailwindcss.com/docs/opacity\n */\n opacity: [{\n opacity: [opacity]\n }],\n /**\n * Mix Blend Mode\n * @see https://tailwindcss.com/docs/mix-blend-mode\n */\n 'mix-blend': [{\n 'mix-blend': [...getBlendModes(), 'plus-lighter', 'plus-darker']\n }],\n /**\n * Background Blend Mode\n * @see https://tailwindcss.com/docs/background-blend-mode\n */\n 'bg-blend': [{\n 'bg-blend': getBlendModes()\n }],\n // Filters\n /**\n * Filter\n * @deprecated since Tailwind CSS v3.0.0\n * @see https://tailwindcss.com/docs/filter\n */\n filter: [{\n filter: ['', 'none']\n }],\n /**\n * Blur\n * @see https://tailwindcss.com/docs/blur\n */\n blur: [{\n blur: [blur]\n }],\n /**\n * Brightness\n * @see https://tailwindcss.com/docs/brightness\n */\n brightness: [{\n brightness: [brightness]\n }],\n /**\n * Contrast\n * @see https://tailwindcss.com/docs/contrast\n */\n contrast: [{\n contrast: [contrast]\n }],\n /**\n * Drop Shadow\n * @see https://tailwindcss.com/docs/drop-shadow\n */\n 'drop-shadow': [{\n 'drop-shadow': ['', 'none', isTshirtSize, isArbitraryValue]\n }],\n /**\n * Grayscale\n * @see https://tailwindcss.com/docs/grayscale\n */\n grayscale: [{\n grayscale: [grayscale]\n }],\n /**\n * Hue Rotate\n * @see https://tailwindcss.com/docs/hue-rotate\n */\n 'hue-rotate': [{\n 'hue-rotate': [hueRotate]\n }],\n /**\n * Invert\n * @see https://tailwindcss.com/docs/invert\n */\n invert: [{\n invert: [invert]\n }],\n /**\n * Saturate\n * @see https://tailwindcss.com/docs/saturate\n */\n saturate: [{\n saturate: [saturate]\n }],\n /**\n * Sepia\n * @see https://tailwindcss.com/docs/sepia\n */\n sepia: [{\n sepia: [sepia]\n }],\n /**\n * Backdrop Filter\n * @deprecated since Tailwind CSS v3.0.0\n * @see https://tailwindcss.com/docs/backdrop-filter\n */\n 'backdrop-filter': [{\n 'backdrop-filter': ['', 'none']\n }],\n /**\n * Backdrop Blur\n * @see https://tailwindcss.com/docs/backdrop-blur\n */\n 'backdrop-blur': [{\n 'backdrop-blur': [blur]\n }],\n /**\n * Backdrop Brightness\n * @see https://tailwindcss.com/docs/backdrop-brightness\n */\n 'backdrop-brightness': [{\n 'backdrop-brightness': [brightness]\n }],\n /**\n * Backdrop Contrast\n * @see https://tailwindcss.com/docs/backdrop-contrast\n */\n 'backdrop-contrast': [{\n 'backdrop-contrast': [contrast]\n }],\n /**\n * Backdrop Grayscale\n * @see https://tailwindcss.com/docs/backdrop-grayscale\n */\n 'backdrop-grayscale': [{\n 'backdrop-grayscale': [grayscale]\n }],\n /**\n * Backdrop Hue Rotate\n * @see https://tailwindcss.com/docs/backdrop-hue-rotate\n */\n 'backdrop-hue-rotate': [{\n 'backdrop-hue-rotate': [hueRotate]\n }],\n /**\n * Backdrop Invert\n * @see https://tailwindcss.com/docs/backdrop-invert\n */\n 'backdrop-invert': [{\n 'backdrop-invert': [invert]\n }],\n /**\n * Backdrop Opacity\n * @see https://tailwindcss.com/docs/backdrop-opacity\n */\n 'backdrop-opacity': [{\n 'backdrop-opacity': [opacity]\n }],\n /**\n * Backdrop Saturate\n * @see https://tailwindcss.com/docs/backdrop-saturate\n */\n 'backdrop-saturate': [{\n 'backdrop-saturate': [saturate]\n }],\n /**\n * Backdrop Sepia\n * @see https://tailwindcss.com/docs/backdrop-sepia\n */\n 'backdrop-sepia': [{\n 'backdrop-sepia': [sepia]\n }],\n // Tables\n /**\n * Border Collapse\n * @see https://tailwindcss.com/docs/border-collapse\n */\n 'border-collapse': [{\n border: ['collapse', 'separate']\n }],\n /**\n * Border Spacing\n * @see https://tailwindcss.com/docs/border-spacing\n */\n 'border-spacing': [{\n 'border-spacing': [borderSpacing]\n }],\n /**\n * Border Spacing X\n * @see https://tailwindcss.com/docs/border-spacing\n */\n 'border-spacing-x': [{\n 'border-spacing-x': [borderSpacing]\n }],\n /**\n * Border Spacing Y\n * @see https://tailwindcss.com/docs/border-spacing\n */\n 'border-spacing-y': [{\n 'border-spacing-y': [borderSpacing]\n }],\n /**\n * Table Layout\n * @see https://tailwindcss.com/docs/table-layout\n */\n 'table-layout': [{\n table: ['auto', 'fixed']\n }],\n /**\n * Caption Side\n * @see https://tailwindcss.com/docs/caption-side\n */\n caption: [{\n caption: ['top', 'bottom']\n }],\n // Transitions and Animation\n /**\n * Tranisition Property\n * @see https://tailwindcss.com/docs/transition-property\n */\n transition: [{\n transition: ['none', 'all', '', 'colors', 'opacity', 'shadow', 'transform', isArbitraryValue]\n }],\n /**\n * Transition Duration\n * @see https://tailwindcss.com/docs/transition-duration\n */\n duration: [{\n duration: getNumberAndArbitrary()\n }],\n /**\n * Transition Timing Function\n * @see https://tailwindcss.com/docs/transition-timing-function\n */\n ease: [{\n ease: ['linear', 'in', 'out', 'in-out', isArbitraryValue]\n }],\n /**\n * Transition Delay\n * @see https://tailwindcss.com/docs/transition-delay\n */\n delay: [{\n delay: getNumberAndArbitrary()\n }],\n /**\n * Animation\n * @see https://tailwindcss.com/docs/animation\n */\n animate: [{\n animate: ['none', 'spin', 'ping', 'pulse', 'bounce', isArbitraryValue]\n }],\n // Transforms\n /**\n * Transform\n * @see https://tailwindcss.com/docs/transform\n */\n transform: [{\n transform: ['', 'gpu', 'none']\n }],\n /**\n * Scale\n * @see https://tailwindcss.com/docs/scale\n */\n scale: [{\n scale: [scale]\n }],\n /**\n * Scale X\n * @see https://tailwindcss.com/docs/scale\n */\n 'scale-x': [{\n 'scale-x': [scale]\n }],\n /**\n * Scale Y\n * @see https://tailwindcss.com/docs/scale\n */\n 'scale-y': [{\n 'scale-y': [scale]\n }],\n /**\n * Rotate\n * @see https://tailwindcss.com/docs/rotate\n */\n rotate: [{\n rotate: [isInteger, isArbitraryValue]\n }],\n /**\n * Translate X\n * @see https://tailwindcss.com/docs/translate\n */\n 'translate-x': [{\n 'translate-x': [translate]\n }],\n /**\n * Translate Y\n * @see https://tailwindcss.com/docs/translate\n */\n 'translate-y': [{\n 'translate-y': [translate]\n }],\n /**\n * Skew X\n * @see https://tailwindcss.com/docs/skew\n */\n 'skew-x': [{\n 'skew-x': [skew]\n }],\n /**\n * Skew Y\n * @see https://tailwindcss.com/docs/skew\n */\n 'skew-y': [{\n 'skew-y': [skew]\n }],\n /**\n * Transform Origin\n * @see https://tailwindcss.com/docs/transform-origin\n */\n 'transform-origin': [{\n origin: ['center', 'top', 'top-right', 'right', 'bottom-right', 'bottom', 'bottom-left', 'left', 'top-left', isArbitraryValue]\n }],\n // Interactivity\n /**\n * Accent Color\n * @see https://tailwindcss.com/docs/accent-color\n */\n accent: [{\n accent: ['auto', colors]\n }],\n /**\n * Appearance\n * @see https://tailwindcss.com/docs/appearance\n */\n appearance: [{\n appearance: ['none', 'auto']\n }],\n /**\n * Cursor\n * @see https://tailwindcss.com/docs/cursor\n */\n cursor: [{\n cursor: ['auto', 'default', 'pointer', 'wait', 'text', 'move', 'help', 'not-allowed', 'none', 'context-menu', 'progress', 'cell', 'crosshair', 'vertical-text', 'alias', 'copy', 'no-drop', 'grab', 'grabbing', 'all-scroll', 'col-resize', 'row-resize', 'n-resize', 'e-resize', 's-resize', 'w-resize', 'ne-resize', 'nw-resize', 'se-resize', 'sw-resize', 'ew-resize', 'ns-resize', 'nesw-resize', 'nwse-resize', 'zoom-in', 'zoom-out', isArbitraryValue]\n }],\n /**\n * Caret Color\n * @see https://tailwindcss.com/docs/just-in-time-mode#caret-color-utilities\n */\n 'caret-color': [{\n caret: [colors]\n }],\n /**\n * Pointer Events\n * @see https://tailwindcss.com/docs/pointer-events\n */\n 'pointer-events': [{\n 'pointer-events': ['none', 'auto']\n }],\n /**\n * Resize\n * @see https://tailwindcss.com/docs/resize\n */\n resize: [{\n resize: ['none', 'y', 'x', '']\n }],\n /**\n * Scroll Behavior\n * @see https://tailwindcss.com/docs/scroll-behavior\n */\n 'scroll-behavior': [{\n scroll: ['auto', 'smooth']\n }],\n /**\n * Scroll Margin\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-m': [{\n 'scroll-m': getSpacingWithArbitrary()\n }],\n /**\n * Scroll Margin X\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mx': [{\n 'scroll-mx': getSpacingWithArbitrary()\n }],\n /**\n * Scroll Margin Y\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-my': [{\n 'scroll-my': getSpacingWithArbitrary()\n }],\n /**\n * Scroll Margin Start\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-ms': [{\n 'scroll-ms': getSpacingWithArbitrary()\n }],\n /**\n * Scroll Margin End\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-me': [{\n 'scroll-me': getSpacingWithArbitrary()\n }],\n /**\n * Scroll Margin Top\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mt': [{\n 'scroll-mt': getSpacingWithArbitrary()\n }],\n /**\n * Scroll Margin Right\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mr': [{\n 'scroll-mr': getSpacingWithArbitrary()\n }],\n /**\n * Scroll Margin Bottom\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mb': [{\n 'scroll-mb': getSpacingWithArbitrary()\n }],\n /**\n * Scroll Margin Left\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-ml': [{\n 'scroll-ml': getSpacingWithArbitrary()\n }],\n /**\n * Scroll Padding\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-p': [{\n 'scroll-p': getSpacingWithArbitrary()\n }],\n /**\n * Scroll Padding X\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-px': [{\n 'scroll-px': getSpacingWithArbitrary()\n }],\n /**\n * Scroll Padding Y\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-py': [{\n 'scroll-py': getSpacingWithArbitrary()\n }],\n /**\n * Scroll Padding Start\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-ps': [{\n 'scroll-ps': getSpacingWithArbitrary()\n }],\n /**\n * Scroll Padding End\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pe': [{\n 'scroll-pe': getSpacingWithArbitrary()\n }],\n /**\n * Scroll Padding Top\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pt': [{\n 'scroll-pt': getSpacingWithArbitrary()\n }],\n /**\n * Scroll Padding Right\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pr': [{\n 'scroll-pr': getSpacingWithArbitrary()\n }],\n /**\n * Scroll Padding Bottom\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pb': [{\n 'scroll-pb': getSpacingWithArbitrary()\n }],\n /**\n * Scroll Padding Left\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pl': [{\n 'scroll-pl': getSpacingWithArbitrary()\n }],\n /**\n * Scroll Snap Align\n * @see https://tailwindcss.com/docs/scroll-snap-align\n */\n 'snap-align': [{\n snap: ['start', 'end', 'center', 'align-none']\n }],\n /**\n * Scroll Snap Stop\n * @see https://tailwindcss.com/docs/scroll-snap-stop\n */\n 'snap-stop': [{\n snap: ['normal', 'always']\n }],\n /**\n * Scroll Snap Type\n * @see https://tailwindcss.com/docs/scroll-snap-type\n */\n 'snap-type': [{\n snap: ['none', 'x', 'y', 'both']\n }],\n /**\n * Scroll Snap Type Strictness\n * @see https://tailwindcss.com/docs/scroll-snap-type\n */\n 'snap-strictness': [{\n snap: ['mandatory', 'proximity']\n }],\n /**\n * Touch Action\n * @see https://tailwindcss.com/docs/touch-action\n */\n touch: [{\n touch: ['auto', 'none', 'manipulation']\n }],\n /**\n * Touch Action X\n * @see https://tailwindcss.com/docs/touch-action\n */\n 'touch-x': [{\n 'touch-pan': ['x', 'left', 'right']\n }],\n /**\n * Touch Action Y\n * @see https://tailwindcss.com/docs/touch-action\n */\n 'touch-y': [{\n 'touch-pan': ['y', 'up', 'down']\n }],\n /**\n * Touch Action Pinch Zoom\n * @see https://tailwindcss.com/docs/touch-action\n */\n 'touch-pz': ['touch-pinch-zoom'],\n /**\n * User Select\n * @see https://tailwindcss.com/docs/user-select\n */\n select: [{\n select: ['none', 'text', 'all', 'auto']\n }],\n /**\n * Will Change\n * @see https://tailwindcss.com/docs/will-change\n */\n 'will-change': [{\n 'will-change': ['auto', 'scroll', 'contents', 'transform', isArbitraryValue]\n }],\n // SVG\n /**\n * Fill\n * @see https://tailwindcss.com/docs/fill\n */\n fill: [{\n fill: [colors, 'none']\n }],\n /**\n * Stroke Width\n * @see https://tailwindcss.com/docs/stroke-width\n */\n 'stroke-w': [{\n stroke: [isLength, isArbitraryLength, isArbitraryNumber]\n }],\n /**\n * Stroke\n * @see https://tailwindcss.com/docs/stroke\n */\n stroke: [{\n stroke: [colors, 'none']\n }],\n // Accessibility\n /**\n * Screen Readers\n * @see https://tailwindcss.com/docs/screen-readers\n */\n sr: ['sr-only', 'not-sr-only'],\n /**\n * Forced Color Adjust\n * @see https://tailwindcss.com/docs/forced-color-adjust\n */\n 'forced-color-adjust': [{\n 'forced-color-adjust': ['auto', 'none']\n }]\n },\n conflictingClassGroups: {\n overflow: ['overflow-x', 'overflow-y'],\n overscroll: ['overscroll-x', 'overscroll-y'],\n inset: ['inset-x', 'inset-y', 'start', 'end', 'top', 'right', 'bottom', 'left'],\n 'inset-x': ['right', 'left'],\n 'inset-y': ['top', 'bottom'],\n flex: ['basis', 'grow', 'shrink'],\n gap: ['gap-x', 'gap-y'],\n p: ['px', 'py', 'ps', 'pe', 'pt', 'pr', 'pb', 'pl'],\n px: ['pr', 'pl'],\n py: ['pt', 'pb'],\n m: ['mx', 'my', 'ms', 'me', 'mt', 'mr', 'mb', 'ml'],\n mx: ['mr', 'ml'],\n my: ['mt', 'mb'],\n size: ['w', 'h'],\n 'font-size': ['leading'],\n 'fvn-normal': ['fvn-ordinal', 'fvn-slashed-zero', 'fvn-figure', 'fvn-spacing', 'fvn-fraction'],\n 'fvn-ordinal': ['fvn-normal'],\n 'fvn-slashed-zero': ['fvn-normal'],\n 'fvn-figure': ['fvn-normal'],\n 'fvn-spacing': ['fvn-normal'],\n 'fvn-fraction': ['fvn-normal'],\n 'line-clamp': ['display', 'overflow'],\n rounded: ['rounded-s', 'rounded-e', 'rounded-t', 'rounded-r', 'rounded-b', 'rounded-l', 'rounded-ss', 'rounded-se', 'rounded-ee', 'rounded-es', 'rounded-tl', 'rounded-tr', 'rounded-br', 'rounded-bl'],\n 'rounded-s': ['rounded-ss', 'rounded-es'],\n 'rounded-e': ['rounded-se', 'rounded-ee'],\n 'rounded-t': ['rounded-tl', 'rounded-tr'],\n 'rounded-r': ['rounded-tr', 'rounded-br'],\n 'rounded-b': ['rounded-br', 'rounded-bl'],\n 'rounded-l': ['rounded-tl', 'rounded-bl'],\n 'border-spacing': ['border-spacing-x', 'border-spacing-y'],\n 'border-w': ['border-w-s', 'border-w-e', 'border-w-t', 'border-w-r', 'border-w-b', 'border-w-l'],\n 'border-w-x': ['border-w-r', 'border-w-l'],\n 'border-w-y': ['border-w-t', 'border-w-b'],\n 'border-color': ['border-color-s', 'border-color-e', 'border-color-t', 'border-color-r', 'border-color-b', 'border-color-l'],\n 'border-color-x': ['border-color-r', 'border-color-l'],\n 'border-color-y': ['border-color-t', 'border-color-b'],\n 'scroll-m': ['scroll-mx', 'scroll-my', 'scroll-ms', 'scroll-me', 'scroll-mt', 'scroll-mr', 'scroll-mb', 'scroll-ml'],\n 'scroll-mx': ['scroll-mr', 'scroll-ml'],\n 'scroll-my': ['scroll-mt', 'scroll-mb'],\n 'scroll-p': ['scroll-px', 'scroll-py', 'scroll-ps', 'scroll-pe', 'scroll-pt', 'scroll-pr', 'scroll-pb', 'scroll-pl'],\n 'scroll-px': ['scroll-pr', 'scroll-pl'],\n 'scroll-py': ['scroll-pt', 'scroll-pb'],\n touch: ['touch-x', 'touch-y', 'touch-pz'],\n 'touch-x': ['touch'],\n 'touch-y': ['touch'],\n 'touch-pz': ['touch']\n },\n conflictingClassGroupModifiers: {\n 'font-size': ['leading']\n }\n };\n};\n\n/**\n * @param baseConfig Config where other config will be merged into. This object will be mutated.\n * @param configExtension Partial config to merge into the `baseConfig`.\n */\nconst mergeConfigs = (baseConfig, {\n cacheSize,\n prefix,\n separator,\n experimentalParseClassName,\n extend = {},\n override = {}\n}) => {\n overrideProperty(baseConfig, 'cacheSize', cacheSize);\n overrideProperty(baseConfig, 'prefix', prefix);\n overrideProperty(baseConfig, 'separator', separator);\n overrideProperty(baseConfig, 'experimentalParseClassName', experimentalParseClassName);\n for (const configKey in override) {\n overrideConfigProperties(baseConfig[configKey], override[configKey]);\n }\n for (const key in extend) {\n mergeConfigProperties(baseConfig[key], extend[key]);\n }\n return baseConfig;\n};\nconst overrideProperty = (baseObject, overrideKey, overrideValue) => {\n if (overrideValue !== undefined) {\n baseObject[overrideKey] = overrideValue;\n }\n};\nconst overrideConfigProperties = (baseObject, overrideObject) => {\n if (overrideObject) {\n for (const key in overrideObject) {\n overrideProperty(baseObject, key, overrideObject[key]);\n }\n }\n};\nconst mergeConfigProperties = (baseObject, mergeObject) => {\n if (mergeObject) {\n for (const key in mergeObject) {\n const mergeValue = mergeObject[key];\n if (mergeValue !== undefined) {\n baseObject[key] = (baseObject[key] || []).concat(mergeValue);\n }\n }\n }\n};\nconst extendTailwindMerge = (configExtension, ...createConfig) => typeof configExtension === 'function' ? createTailwindMerge(getDefaultConfig, configExtension, ...createConfig) : createTailwindMerge(() => mergeConfigs(getDefaultConfig(), configExtension), ...createConfig);\nconst twMerge = /*#__PURE__*/createTailwindMerge(getDefaultConfig);\nexport { createTailwindMerge, extendTailwindMerge, fromTheme, getDefaultConfig, mergeConfigs, twJoin, twMerge, validators };\n//# sourceMappingURL=bundle-mjs.mjs.map\n","import { clsx, type ClassValue } from 'clsx';\nimport { twMerge } from 'tailwind-merge';\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n","\n\n\n \n \n \n \n\n \n\n {{ text }}\n \n\n \n \n\n","import { cva, type VariantProps } from 'class-variance-authority';\n\nexport const brandLoadingVariants = cva(\n 'inline-flex items-center justify-center w-full h-full aspect-[7/4]',\n {\n variants: {\n variant: {\n default: '',\n black: 'text-black fill-black',\n white: 'text-white fill-white',\n },\n size: {\n sm: 'w-12',\n md: 'w-16',\n lg: 'w-20',\n full: 'w-full',\n custom: '',\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n }\n);\n\nexport const markAnimations = {\n mark_2_4: 'animate-mark-2',\n mark_3: 'animate-mark-3',\n mark_6_8: 'animate-mark-6',\n mark_7: 'animate-mark-7',\n};\n\nexport type BrandLoadingVariants = VariantProps;\n","\n\n\n \n {{ title }}\n Unraid logo animating with a wave like effect\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n","import { cva, VariantProps } from 'class-variance-authority';\n\nexport const buttonVariants = cva(\n 'inline-flex items-center justify-center rounded-md text-base font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50',\n {\n variants: {\n variant: {\n primary: 'bg-primary text-primary-foreground hover:bg-primary/90',\n destructive: 'bg-destructive text-destructive-foreground hover:bg-destructive/90',\n outline: 'border border-input bg-background hover:bg-accent hover:text-accent-foreground',\n secondary: 'bg-secondary text-secondary-foreground hover:bg-secondary/80',\n ghost: 'hover:bg-accent hover:text-accent-foreground',\n link: 'text-primary underline-offset-4 hover:underline',\n },\n size: {\n sm: 'h-9 rounded-md px-3',\n md: 'h-10 px-4 py-2',\n lg: 'h-11 rounded-md px-8',\n icon: 'h-10 w-10',\n },\n },\n defaultVariants: {\n variant: 'primary',\n size: 'md',\n },\n }\n);\n\nexport type ButtonVariants = VariantProps;\n","\n\n\n \n \n \n\n","/**\n * Custom positioning reference element.\n * @see https://floating-ui.com/docs/virtual-elements\n */\n\nconst sides = ['top', 'right', 'bottom', 'left'];\nconst alignments = ['start', 'end'];\nconst placements = /*#__PURE__*/sides.reduce((acc, side) => acc.concat(side, side + \"-\" + alignments[0], side + \"-\" + alignments[1]), []);\nconst min = Math.min;\nconst max = Math.max;\nconst round = Math.round;\nconst floor = Math.floor;\nconst createCoords = v => ({\n x: v,\n y: v\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(start, value, end) {\n return max(start, min(value, end));\n}\nfunction evaluate(value, param) {\n return typeof value === 'function' ? value(param) : value;\n}\nfunction getSide(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(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 length = getAxisLength(alignmentAxis);\n let mainAlignmentSide = alignmentAxis === 'x' ? alignment === (rtl ? 'end' : 'start') ? 'right' : 'left' : alignment === 'start' ? 'bottom' : 'top';\n if (rects.reference[length] > rects.floating[length]) {\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 list = getSideList(getSide(placement), direction === 'start', rtl);\n if (alignment) {\n list = list.map(side => side + \"-\" + alignment);\n if (flipAlignment) {\n list = list.concat(list.map(getOppositeAlignmentPlacement));\n }\n }\n return list;\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,\n y,\n width,\n height\n } = rect;\n return {\n width,\n height,\n top: y,\n left: x,\n right: x + width,\n bottom: y + height,\n x,\n y\n };\n}\n\nexport { alignments, clamp, createCoords, evaluate, expandPaddingObject, floor, getAlignment, getAlignmentAxis, getAlignmentSides, getAxisLength, getExpandedPlacements, getOppositeAlignmentPlacement, getOppositeAxis, getOppositeAxisPlacements, getOppositePlacement, getPaddingObject, getSide, getSideAxis, max, min, placements, rectToClientRect, round, sides };\n","import { getSideAxis, getAlignmentAxis, getAxisLength, getSide, getAlignment, evaluate, getPaddingObject, rectToClientRect, min, clamp, placements, getAlignmentSides, getOppositeAlignmentPlacement, getOppositePlacement, getExpandedPlacements, getOppositeAxisPlacements, sides, max, getOppositeAxis } from '@floating-ui/utils';\nexport { rectToClientRect } from '@floating-ui/utils';\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(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}\n\n/**\n * Computes the `x` and `y` coordinates that will place the floating element\n * next to a given reference element.\n *\n * This export does not have any `platform` interface logic. You will need to\n * write one for the platform you are using Floating UI with.\n */\nconst computePosition = async (reference, floating, config) => {\n const {\n placement = 'bottom',\n strategy = 'absolute',\n middleware = [],\n platform\n } = config;\n const validMiddleware = middleware.filter(Boolean);\n const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(floating));\n let rects = await platform.getElementRects({\n reference,\n floating,\n strategy\n });\n let {\n x,\n y\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\n } = validMiddleware[i];\n const {\n x: nextX,\n y: nextY,\n data,\n reset\n } = await fn({\n x,\n y,\n initialPlacement: placement,\n placement: statefulPlacement,\n strategy,\n middlewareData,\n rects,\n platform,\n elements: {\n reference,\n floating\n }\n });\n x = nextX != null ? nextX : x;\n y = nextY != null ? nextY : y;\n middlewareData = {\n ...middlewareData,\n [name]: {\n ...middlewareData[name],\n ...data\n }\n };\n if (reset && resetCount <= 50) {\n resetCount++;\n if (typeof reset === 'object') {\n if (reset.placement) {\n statefulPlacement = reset.placement;\n }\n if (reset.rects) {\n rects = reset.rects === true ? await platform.getElementRects({\n reference,\n floating,\n strategy\n }) : reset.rects;\n }\n ({\n x,\n y\n } = computeCoordsFromPlacement(rects, statefulPlacement, rtl));\n }\n i = -1;\n }\n }\n return {\n x,\n y,\n placement: statefulPlacement,\n strategy,\n middlewareData\n };\n};\n\n/**\n * Resolves with an object of overflow side offsets that determine how much the\n * element is overflowing a given clipping boundary on each side.\n * - positive = overflowing the boundary by that number of pixels\n * - negative = how many pixels left before it will overflow\n * - 0 = lies flush with the boundary\n * @see https://floating-ui.com/docs/detectOverflow\n */\nasync function detectOverflow(state, options) {\n var _await$platform$isEle;\n if (options === void 0) {\n options = {};\n }\n const {\n x,\n y,\n platform,\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 platform.getClippingRect({\n element: ((_await$platform$isEle = await (platform.isElement == null ? void 0 : platform.isElement(element))) != null ? _await$platform$isEle : true) ? element : element.contextElement || (await (platform.getDocumentElement == null ? void 0 : platform.getDocumentElement(elements.floating))),\n boundary,\n rootBoundary,\n strategy\n }));\n const rect = elementContext === 'floating' ? {\n x,\n y,\n width: rects.floating.width,\n height: rects.floating.height\n } : rects.reference;\n const offsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(elements.floating));\n const offsetScale = (await (platform.isElement == null ? void 0 : platform.isElement(offsetParent))) ? (await (platform.getScale == null ? void 0 : platform.getScale(offsetParent))) || {\n x: 1,\n y: 1\n } : {\n x: 1,\n y: 1\n };\n const elementClientRect = rectToClientRect(platform.convertOffsetParentRelativeRectToViewportRelativeRect ? await platform.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}\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = options => ({\n name: 'arrow',\n options,\n async fn(state) {\n const {\n x,\n y,\n placement,\n rects,\n platform,\n elements,\n middlewareData\n } = state;\n // Since `element` is required, we don't Partial<> the type.\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,\n y\n };\n const axis = getAlignmentAxis(placement);\n const length = getAxisLength(axis);\n const arrowDimensions = await platform.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[length] + rects.reference[axis] - coords[axis] - rects.floating[length];\n const startDiff = coords[axis] - rects.reference[axis];\n const arrowOffsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(element));\n let clientSize = arrowOffsetParent ? arrowOffsetParent[clientProp] : 0;\n\n // DOM platform can return `window` as the `offsetParent`.\n if (!clientSize || !(await (platform.isElement == null ? void 0 : platform.isElement(arrowOffsetParent)))) {\n clientSize = elements.floating[clientProp] || rects.floating[length];\n }\n const centerToReference = endDiff / 2 - startDiff / 2;\n\n // If the padding is large enough that it causes the arrow to no longer be\n // centered, modify the padding so that it is centered.\n const largestPossiblePadding = clientSize / 2 - arrowDimensions[length] / 2 - 1;\n const minPadding = min(paddingObject[minProp], largestPossiblePadding);\n const maxPadding = min(paddingObject[maxProp], largestPossiblePadding);\n\n // Make sure the arrow doesn't overflow the floating element if the center\n // point is outside the floating element's bounds.\n const min$1 = minPadding;\n const max = clientSize - arrowDimensions[length] - maxPadding;\n const center = clientSize / 2 - arrowDimensions[length] / 2 + centerToReference;\n const offset = clamp(min$1, center, max);\n\n // If the reference is small enough that the arrow's padding causes it to\n // to point to nothing for an aligned placement, adjust the offset of the\n // floating element itself. To ensure `shift()` continues to take action,\n // a single reset is performed when this is true.\n const shouldAddOffset = !middlewareData.arrow && getAlignment(placement) != null && center !== offset && rects.reference[length] / 2 - (center < min$1 ? minPadding : maxPadding) - arrowDimensions[length] / 2 < 0;\n const alignmentOffset = shouldAddOffset ? center < min$1 ? center - min$1 : center - max : 0;\n return {\n [axis]: coords[axis] + alignmentOffset,\n data: {\n [axis]: offset,\n centerOffset: center - offset - alignmentOffset,\n ...(shouldAddOffset && {\n alignmentOffset\n })\n },\n reset: shouldAddOffset\n };\n }\n});\n\nfunction getPlacementList(alignment, autoAlignment, allowedPlacements) {\n const allowedPlacementsSortedByAlignment = alignment ? [...allowedPlacements.filter(placement => getAlignment(placement) === alignment), ...allowedPlacements.filter(placement => getAlignment(placement) !== alignment)] : allowedPlacements.filter(placement => getSide(placement) === placement);\n return allowedPlacementsSortedByAlignment.filter(placement => {\n if (alignment) {\n return getAlignment(placement) === alignment || (autoAlignment ? getOppositeAlignmentPlacement(placement) !== placement : false);\n }\n return true;\n });\n}\n/**\n * Optimizes the visibility of the floating element by choosing the placement\n * that has the most space available automatically, without needing to specify a\n * preferred placement. Alternative to `flip`.\n * @see https://floating-ui.com/docs/autoPlacement\n */\nconst autoPlacement = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'autoPlacement',\n options,\n async fn(state) {\n var _middlewareData$autoP, _middlewareData$autoP2, _placementsThatFitOnE;\n const {\n rects,\n middlewareData,\n placement,\n platform,\n elements\n } = state;\n const {\n crossAxis = false,\n alignment,\n allowedPlacements = placements,\n autoAlignment = true,\n ...detectOverflowOptions\n } = evaluate(options, state);\n const placements$1 = alignment !== undefined || allowedPlacements === placements ? getPlacementList(alignment || null, autoAlignment, allowedPlacements) : allowedPlacements;\n const overflow = await detectOverflow(state, detectOverflowOptions);\n const currentIndex = ((_middlewareData$autoP = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP.index) || 0;\n const currentPlacement = placements$1[currentIndex];\n if (currentPlacement == null) {\n return {};\n }\n const alignmentSides = getAlignmentSides(currentPlacement, rects, await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating)));\n\n // Make `computeCoords` start from the right place.\n if (placement !== currentPlacement) {\n return {\n reset: {\n placement: placements$1[0]\n }\n };\n }\n const currentOverflows = [overflow[getSide(currentPlacement)], overflow[alignmentSides[0]], overflow[alignmentSides[1]]];\n const allOverflows = [...(((_middlewareData$autoP2 = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP2.overflows) || []), {\n placement: currentPlacement,\n overflows: currentOverflows\n }];\n const nextPlacement = placements$1[currentIndex + 1];\n\n // There are more placements to check.\n if (nextPlacement) {\n return {\n data: {\n index: currentIndex + 1,\n overflows: allOverflows\n },\n reset: {\n placement: nextPlacement\n }\n };\n }\n const placementsSortedByMostSpace = allOverflows.map(d => {\n const alignment = getAlignment(d.placement);\n return [d.placement, alignment && crossAxis ?\n // Check along the mainAxis and main crossAxis side.\n d.overflows.slice(0, 2).reduce((acc, v) => acc + v, 0) :\n // Check only the mainAxis.\n d.overflows[0], d.overflows];\n }).sort((a, b) => a[1] - b[1]);\n const placementsThatFitOnEachSide = placementsSortedByMostSpace.filter(d => d[2].slice(0,\n // Aligned placements should not check their opposite crossAxis\n // side.\n getAlignment(d[0]) ? 2 : 3).every(v => v <= 0));\n const resetPlacement = ((_placementsThatFitOnE = placementsThatFitOnEachSide[0]) == null ? void 0 : _placementsThatFitOnE[0]) || placementsSortedByMostSpace[0][0];\n if (resetPlacement !== placement) {\n return {\n data: {\n index: currentIndex + 1,\n overflows: allOverflows\n },\n reset: {\n placement: resetPlacement\n }\n };\n }\n return {};\n }\n };\n};\n\n/**\n * Optimizes the visibility of the floating element by flipping the `placement`\n * in order to keep it in view when the preferred placement(s) will overflow the\n * clipping boundary. Alternative to `autoPlacement`.\n * @see https://floating-ui.com/docs/flip\n */\nconst flip = 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,\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\n // If a reset by the arrow was caused due to an alignment offset being\n // added, we should skip any logic now since `flip()` has already done its\n // work.\n // https://github.com/floating-ui/floating-ui/issues/2549#issuecomment-1719601643\n if ((_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {\n return {};\n }\n const side = getSide(placement);\n const initialSideAxis = getSideAxis(initialPlacement);\n const isBasePlacement = getSide(initialPlacement) === initialPlacement;\n const rtl = await (platform.isRTL == null ? void 0 : platform.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\n // One or more sides is overflowing.\n if (!overflows.every(side => side <= 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 // Try next placement and re-run the lifecycle.\n return {\n data: {\n index: nextIndex,\n overflows: overflowsData\n },\n reset: {\n placement: nextPlacement\n }\n };\n }\n\n // First, find the candidates that fit on the mainAxis side of overflow,\n // then find the placement that fits the best on the main crossAxis side.\n let resetPlacement = (_overflowsData$filter = overflowsData.filter(d => d.overflows[0] <= 0).sort((a, b) => a.overflows[1] - b.overflows[1])[0]) == null ? void 0 : _overflowsData$filter.placement;\n\n // Otherwise fallback.\n if (!resetPlacement) {\n switch (fallbackStrategy) {\n case 'bestFit':\n {\n var _overflowsData$filter2;\n const placement = (_overflowsData$filter2 = overflowsData.filter(d => {\n if (hasFallbackAxisSideDirection) {\n const currentSideAxis = getSideAxis(d.placement);\n return currentSideAxis === initialSideAxis ||\n // 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(d => [d.placement, d.overflows.filter(overflow => overflow > 0).reduce((acc, overflow) => acc + overflow, 0)]).sort((a, b) => a[1] - b[1])[0]) == null ? void 0 : _overflowsData$filter2[0];\n if (placement) {\n resetPlacement = placement;\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};\n\nfunction getSideOffsets(overflow, rect) {\n return {\n top: overflow.top - rect.height,\n right: overflow.right - rect.width,\n bottom: overflow.bottom - rect.height,\n left: overflow.left - rect.width\n };\n}\nfunction isAnySideFullyClipped(overflow) {\n return sides.some(side => overflow[side] >= 0);\n}\n/**\n * Provides data to hide the floating element in applicable situations, such as\n * when it is not in the same clipping context as the reference element.\n * @see https://floating-ui.com/docs/hide\n */\nconst hide = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'hide',\n options,\n async fn(state) {\n const {\n rects\n } = state;\n const {\n strategy = 'referenceHidden',\n ...detectOverflowOptions\n } = evaluate(options, state);\n switch (strategy) {\n case 'referenceHidden':\n {\n const overflow = await detectOverflow(state, {\n ...detectOverflowOptions,\n elementContext: 'reference'\n });\n const offsets = getSideOffsets(overflow, rects.reference);\n return {\n data: {\n referenceHiddenOffsets: offsets,\n referenceHidden: isAnySideFullyClipped(offsets)\n }\n };\n }\n case 'escaped':\n {\n const overflow = await detectOverflow(state, {\n ...detectOverflowOptions,\n altBoundary: true\n });\n const offsets = getSideOffsets(overflow, rects.floating);\n return {\n data: {\n escapedOffsets: offsets,\n escaped: isAnySideFullyClipped(offsets)\n }\n };\n }\n default:\n {\n return {};\n }\n }\n }\n };\n};\n\nfunction getBoundingRect(rects) {\n const minX = min(...rects.map(rect => rect.left));\n const minY = min(...rects.map(rect => rect.top));\n const maxX = max(...rects.map(rect => rect.right));\n const maxY = max(...rects.map(rect => rect.bottom));\n return {\n x: minX,\n y: minY,\n width: maxX - minX,\n height: maxY - minY\n };\n}\nfunction getRectsByLine(rects) {\n const sortedRects = rects.slice().sort((a, b) => a.y - b.y);\n const groups = [];\n let prevRect = null;\n for (let i = 0; i < sortedRects.length; i++) {\n const rect = sortedRects[i];\n if (!prevRect || rect.y - prevRect.y > prevRect.height / 2) {\n groups.push([rect]);\n } else {\n groups[groups.length - 1].push(rect);\n }\n prevRect = rect;\n }\n return groups.map(rect => rectToClientRect(getBoundingRect(rect)));\n}\n/**\n * Provides improved positioning for inline reference elements that can span\n * over multiple lines, such as hyperlinks or range selections.\n * @see https://floating-ui.com/docs/inline\n */\nconst inline = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'inline',\n options,\n async fn(state) {\n const {\n placement,\n elements,\n rects,\n platform,\n strategy\n } = state;\n // A MouseEvent's client{X,Y} coords can be up to 2 pixels off a\n // ClientRect's bounds, despite the event listener being triggered. A\n // padding of 2 seems to handle this issue.\n const {\n padding = 2,\n x,\n y\n } = evaluate(options, state);\n const nativeClientRects = Array.from((await (platform.getClientRects == null ? void 0 : platform.getClientRects(elements.reference))) || []);\n const clientRects = getRectsByLine(nativeClientRects);\n const fallback = rectToClientRect(getBoundingRect(nativeClientRects));\n const paddingObject = getPaddingObject(padding);\n function getBoundingClientRect() {\n // There are two rects and they are disjoined.\n if (clientRects.length === 2 && clientRects[0].left > clientRects[1].right && x != null && y != null) {\n // Find the first rect in which the point is fully inside.\n return clientRects.find(rect => x > rect.left - paddingObject.left && x < rect.right + paddingObject.right && y > rect.top - paddingObject.top && y < rect.bottom + paddingObject.bottom) || fallback;\n }\n\n // There are 2 or more connected rects.\n if (clientRects.length >= 2) {\n if (getSideAxis(placement) === 'y') {\n const firstRect = clientRects[0];\n const lastRect = clientRects[clientRects.length - 1];\n const isTop = getSide(placement) === 'top';\n const top = firstRect.top;\n const bottom = lastRect.bottom;\n const left = isTop ? firstRect.left : lastRect.left;\n const right = isTop ? firstRect.right : lastRect.right;\n const width = right - left;\n const height = bottom - top;\n return {\n top,\n bottom,\n left,\n right,\n width,\n height,\n x: left,\n y: top\n };\n }\n const isLeftSide = getSide(placement) === 'left';\n const maxRight = max(...clientRects.map(rect => rect.right));\n const minLeft = min(...clientRects.map(rect => rect.left));\n const measureRects = clientRects.filter(rect => isLeftSide ? rect.left === minLeft : rect.right === maxRight);\n const top = measureRects[0].top;\n const bottom = measureRects[measureRects.length - 1].bottom;\n const left = minLeft;\n const right = maxRight;\n const width = right - left;\n const height = bottom - top;\n return {\n top,\n bottom,\n left,\n right,\n width,\n height,\n x: left,\n y: top\n };\n }\n return fallback;\n }\n const resetRects = await platform.getElementRects({\n reference: {\n getBoundingClientRect\n },\n floating: elements.floating,\n strategy\n });\n if (rects.reference.x !== resetRects.reference.x || rects.reference.y !== resetRects.reference.y || rects.reference.width !== resetRects.reference.width || rects.reference.height !== resetRects.reference.height) {\n return {\n reset: {\n rects: resetRects\n }\n };\n }\n return {};\n }\n };\n};\n\n// For type backwards-compatibility, the `OffsetOptions` type was also\n// Derivable.\n\nasync function convertValueToCoords(state, options) {\n const {\n placement,\n platform,\n elements\n } = state;\n const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));\n const side = getSide(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\n // eslint-disable-next-line prefer-const\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}\n\n/**\n * Modifies the placement by translating the floating element along the\n * specified axes.\n * A number (shorthand for `mainAxis` or distance), or an axes configuration\n * object may be passed.\n * @see https://floating-ui.com/docs/offset\n */\nconst offset = 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,\n y,\n placement,\n middlewareData\n } = state;\n const diffCoords = await convertValueToCoords(state, options);\n\n // If the placement is the same and the arrow caused an alignment offset\n // then we don't need to change the positioning coordinates.\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: x + diffCoords.x,\n y: y + diffCoords.y,\n data: {\n ...diffCoords,\n placement\n }\n };\n }\n };\n};\n\n/**\n * Optimizes the visibility of the floating element by shifting it in order to\n * keep it in view when it will overflow the clipping boundary.\n * @see https://floating-ui.com/docs/shift\n */\nconst shift = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'shift',\n options,\n async fn(state) {\n const {\n x,\n y,\n placement\n } = state;\n const {\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = false,\n limiter = {\n fn: _ref => {\n let {\n x,\n y\n } = _ref;\n return {\n x,\n y\n };\n }\n },\n ...detectOverflowOptions\n } = evaluate(options, state);\n const coords = {\n x,\n y\n };\n const overflow = await detectOverflow(state, detectOverflowOptions);\n const crossAxis = getSideAxis(getSide(placement));\n const mainAxis = getOppositeAxis(crossAxis);\n let mainAxisCoord = coords[mainAxis];\n let crossAxisCoord = coords[crossAxis];\n if (checkMainAxis) {\n const minSide = mainAxis === 'y' ? 'top' : 'left';\n const maxSide = mainAxis === 'y' ? 'bottom' : 'right';\n const min = mainAxisCoord + overflow[minSide];\n const max = mainAxisCoord - overflow[maxSide];\n mainAxisCoord = clamp(min, mainAxisCoord, max);\n }\n if (checkCrossAxis) {\n const minSide = crossAxis === 'y' ? 'top' : 'left';\n const maxSide = crossAxis === 'y' ? 'bottom' : 'right';\n const min = crossAxisCoord + overflow[minSide];\n const max = crossAxisCoord - overflow[maxSide];\n crossAxisCoord = clamp(min, crossAxisCoord, max);\n }\n const limitedCoords = limiter.fn({\n ...state,\n [mainAxis]: mainAxisCoord,\n [crossAxis]: crossAxisCoord\n });\n return {\n ...limitedCoords,\n data: {\n x: limitedCoords.x - x,\n y: limitedCoords.y - y,\n enabled: {\n [mainAxis]: checkMainAxis,\n [crossAxis]: checkCrossAxis\n }\n }\n };\n }\n };\n};\n/**\n * Built-in `limiter` that will stop `shift()` at a certain point.\n */\nconst limitShift = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n options,\n fn(state) {\n const {\n x,\n y,\n placement,\n rects,\n middlewareData\n } = state;\n const {\n offset = 0,\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = true\n } = evaluate(options, state);\n const coords = {\n x,\n y\n };\n const crossAxis = getSideAxis(placement);\n const mainAxis = getOppositeAxis(crossAxis);\n let mainAxisCoord = coords[mainAxis];\n let crossAxisCoord = coords[crossAxis];\n const rawOffset = evaluate(offset, state);\n const computedOffset = typeof rawOffset === 'number' ? {\n mainAxis: rawOffset,\n crossAxis: 0\n } : {\n mainAxis: 0,\n crossAxis: 0,\n ...rawOffset\n };\n if (checkMainAxis) {\n const len = mainAxis === 'y' ? 'height' : 'width';\n const limitMin = rects.reference[mainAxis] - rects.floating[len] + computedOffset.mainAxis;\n const limitMax = rects.reference[mainAxis] + rects.reference[len] - computedOffset.mainAxis;\n if (mainAxisCoord < limitMin) {\n mainAxisCoord = limitMin;\n } else if (mainAxisCoord > limitMax) {\n mainAxisCoord = limitMax;\n }\n }\n if (checkCrossAxis) {\n var _middlewareData$offse, _middlewareData$offse2;\n const len = mainAxis === 'y' ? 'width' : 'height';\n const isOriginSide = ['top', 'left'].includes(getSide(placement));\n const limitMin = rects.reference[crossAxis] - rects.floating[len] + (isOriginSide ? ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse[crossAxis]) || 0 : 0) + (isOriginSide ? 0 : computedOffset.crossAxis);\n const limitMax = rects.reference[crossAxis] + rects.reference[len] + (isOriginSide ? 0 : ((_middlewareData$offse2 = middlewareData.offset) == null ? void 0 : _middlewareData$offse2[crossAxis]) || 0) - (isOriginSide ? computedOffset.crossAxis : 0);\n if (crossAxisCoord < limitMin) {\n crossAxisCoord = limitMin;\n } else if (crossAxisCoord > limitMax) {\n crossAxisCoord = limitMax;\n }\n }\n return {\n [mainAxis]: mainAxisCoord,\n [crossAxis]: crossAxisCoord\n };\n }\n };\n};\n\n/**\n * Provides data that allows you to change the size of the floating element —\n * for instance, prevent it from overflowing the clipping boundary or match the\n * width of the reference element.\n * @see https://floating-ui.com/docs/size\n */\nconst size = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'size',\n options,\n async fn(state) {\n var _state$middlewareData, _state$middlewareData2;\n const {\n placement,\n rects,\n platform,\n elements\n } = state;\n const {\n apply = () => {},\n ...detectOverflowOptions\n } = evaluate(options, state);\n const overflow = await detectOverflow(state, detectOverflowOptions);\n const side = getSide(placement);\n const alignment = getAlignment(placement);\n const isYAxis = getSideAxis(placement) === 'y';\n const {\n width,\n height\n } = rects.floating;\n let heightSide;\n let widthSide;\n if (side === 'top' || side === 'bottom') {\n heightSide = side;\n widthSide = alignment === ((await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating))) ? 'start' : 'end') ? 'left' : 'right';\n } else {\n widthSide = side;\n heightSide = alignment === 'end' ? 'top' : 'bottom';\n }\n const maximumClippingHeight = height - overflow.top - overflow.bottom;\n const maximumClippingWidth = width - overflow.left - overflow.right;\n const overflowAvailableHeight = min(height - overflow[heightSide], maximumClippingHeight);\n const overflowAvailableWidth = min(width - overflow[widthSide], maximumClippingWidth);\n const noShift = !state.middlewareData.shift;\n let availableHeight = overflowAvailableHeight;\n let availableWidth = overflowAvailableWidth;\n if ((_state$middlewareData = state.middlewareData.shift) != null && _state$middlewareData.enabled.x) {\n availableWidth = maximumClippingWidth;\n }\n if ((_state$middlewareData2 = state.middlewareData.shift) != null && _state$middlewareData2.enabled.y) {\n availableHeight = maximumClippingHeight;\n }\n if (noShift && !alignment) {\n const xMin = max(overflow.left, 0);\n const xMax = max(overflow.right, 0);\n const yMin = max(overflow.top, 0);\n const yMax = max(overflow.bottom, 0);\n if (isYAxis) {\n availableWidth = width - 2 * (xMin !== 0 || xMax !== 0 ? xMin + xMax : max(overflow.left, overflow.right));\n } else {\n availableHeight = height - 2 * (yMin !== 0 || yMax !== 0 ? yMin + yMax : max(overflow.top, overflow.bottom));\n }\n }\n await apply({\n ...state,\n availableWidth,\n availableHeight\n });\n const nextDimensions = await platform.getDimensions(elements.floating);\n if (width !== nextDimensions.width || height !== nextDimensions.height) {\n return {\n reset: {\n rects: true\n }\n };\n }\n return {};\n }\n };\n};\n\nexport { arrow, autoPlacement, computePosition, detectOverflow, flip, hide, inline, limitShift, offset, shift, size };\n","function hasWindow() {\n return typeof window !== 'undefined';\n}\nfunction getNodeName(node) {\n if (isNode(node)) {\n return (node.nodeName || '').toLowerCase();\n }\n // Mocked nodes in testing environments may not be instances of Node. By\n // returning `#document` an infinite loop won't occur.\n // https://github.com/floating-ui/floating-ui/issues/2317\n return '#document';\n}\nfunction getWindow(node) {\n var _node$ownerDocument;\n return (node == null || (_node$ownerDocument = node.ownerDocument) == null ? void 0 : _node$ownerDocument.defaultView) || window;\n}\nfunction getDocumentElement(node) {\n var _ref;\n return (_ref = (isNode(node) ? node.ownerDocument : node.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(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(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(selector => {\n try {\n return element.matches(selector);\n } catch (e) {\n return false;\n }\n });\n}\nfunction isContainingBlock(elementOrCss) {\n const webkit = isWebKit();\n const css = isElement(elementOrCss) ? getComputedStyle(elementOrCss) : elementOrCss;\n\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n // https://drafts.csswg.org/css-transforms-2/#individual-transforms\n return ['transform', 'translate', 'scale', 'rotate', 'perspective'].some(value => css[value] ? css[value] !== 'none' : false) || (css.containerType ? css.containerType !== 'normal' : false) || !webkit && (css.backdropFilter ? css.backdropFilter !== 'none' : false) || !webkit && (css.filter ? css.filter !== 'none' : false) || ['transform', 'translate', 'scale', 'rotate', '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(node) {\n return ['html', 'body', '#document'].includes(getNodeName(node));\n}\nfunction getComputedStyle(element) {\n return getWindow(element).getComputedStyle(element);\n}\nfunction getNodeScroll(element) {\n if (isElement(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(node) {\n if (getNodeName(node) === 'html') {\n return node;\n }\n const result =\n // Step into the shadow DOM of the parent of a slotted node.\n node.assignedSlot ||\n // DOM Element detected.\n node.parentNode ||\n // ShadowRoot detected.\n isShadowRoot(node) && node.host ||\n // Fallback.\n getDocumentElement(node);\n return isShadowRoot(result) ? result.host : result;\n}\nfunction getNearestOverflowAncestor(node) {\n const parentNode = getParentNode(node);\n if (isLastTraversableNode(parentNode)) {\n return node.ownerDocument ? node.ownerDocument.body : node.body;\n }\n if (isHTMLElement(parentNode) && isOverflowElement(parentNode)) {\n return parentNode;\n }\n return getNearestOverflowAncestor(parentNode);\n}\nfunction getOverflowAncestors(node, list, traverseIframes) {\n var _node$ownerDocument2;\n if (list === void 0) {\n list = [];\n }\n if (traverseIframes === void 0) {\n traverseIframes = true;\n }\n const scrollableAncestor = getNearestOverflowAncestor(node);\n const isBody = scrollableAncestor === ((_node$ownerDocument2 = node.ownerDocument) == null ? void 0 : _node$ownerDocument2.body);\n const win = getWindow(scrollableAncestor);\n if (isBody) {\n const frameElement = getFrameElement(win);\n return list.concat(win, win.visualViewport || [], isOverflowElement(scrollableAncestor) ? scrollableAncestor : [], frameElement && traverseIframes ? getOverflowAncestors(frameElement) : []);\n }\n return list.concat(scrollableAncestor, getOverflowAncestors(scrollableAncestor, [], traverseIframes));\n}\nfunction getFrameElement(win) {\n return win.parent && Object.getPrototypeOf(win.parent) ? win.frameElement : null;\n}\n\nexport { getComputedStyle, getContainingBlock, getDocumentElement, getFrameElement, getNearestOverflowAncestor, getNodeName, getNodeScroll, getOverflowAncestors, getParentNode, getWindow, isContainingBlock, isElement, isHTMLElement, isLastTraversableNode, isNode, isOverflowElement, isShadowRoot, isTableElement, isTopLayer, isWebKit };\n","import { rectToClientRect, detectOverflow as detectOverflow$1, offset as offset$1, autoPlacement as autoPlacement$1, shift as shift$1, flip as flip$1, size as size$1, hide as hide$1, arrow as arrow$1, inline as inline$1, limitShift as limitShift$1, computePosition as computePosition$1 } from '@floating-ui/core';\nimport { round, createCoords, max, min, floor } from '@floating-ui/utils';\nimport { getComputedStyle, isHTMLElement, isElement, getWindow, isWebKit, getFrameElement, getNodeScroll, getDocumentElement, isTopLayer, getNodeName, isOverflowElement, getOverflowAncestors, getParentNode, isLastTraversableNode, isContainingBlock, isTableElement, getContainingBlock } from '@floating-ui/utils/dom';\nexport { getOverflowAncestors } from '@floating-ui/utils/dom';\n\nfunction getCssDimensions(element) {\n const css = getComputedStyle(element);\n // In testing environments, the `width` and `height` properties are empty\n // strings for SVG elements, returning NaN. Fallback to `0` in this case.\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(width) !== offsetWidth || round(height) !== offsetHeight;\n if (shouldFallback) {\n width = offsetWidth;\n height = offsetHeight;\n }\n return {\n width,\n height,\n $: shouldFallback\n };\n}\n\nfunction unwrapElement(element) {\n return !isElement(element) ? element.contextElement : element;\n}\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 x = ($ ? round(rect.width) : rect.width) / width;\n let y = ($ ? round(rect.height) : rect.height) / height;\n\n // 0, NaN, or Infinity should always fallback to 1.\n\n if (!x || !Number.isFinite(x)) {\n x = 1;\n }\n if (!y || !Number.isFinite(y)) {\n y = 1;\n }\n return {\n x,\n y\n };\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}\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 clientRect = element.getBoundingClientRect();\n const domElement = unwrapElement(element);\n let scale = createCoords(1);\n if (includeScale) {\n if (offsetParent) {\n if (isElement(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 x = (clientRect.left + visualOffsets.x) / scale.x;\n let y = (clientRect.top + visualOffsets.y) / scale.y;\n let width = clientRect.width / scale.x;\n let height = clientRect.height / scale.y;\n if (domElement) {\n const win = getWindow(domElement);\n const offsetWin = offsetParent && isElement(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(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 x *= iframeScale.x;\n y *= iframeScale.y;\n width *= iframeScale.x;\n height *= iframeScale.y;\n x += left;\n y += top;\n currentWin = getWindow(currentIFrame);\n currentIFrame = getFrameElement(currentWin);\n }\n }\n return rectToClientRect({\n width,\n height,\n x,\n y\n });\n}\n\n// If has a CSS width greater than the viewport, then this will be\n// incorrect for RTL.\nfunction getWindowScrollBarX(element, rect) {\n const leftScroll = getNodeScroll(element).scrollLeft;\n if (!rect) {\n return getBoundingClientRect(getDocumentElement(element)).left + leftScroll;\n }\n return rect.left + leftScroll;\n}\n\nfunction getHTMLOffset(documentElement, scroll, ignoreScrollbarX) {\n if (ignoreScrollbarX === void 0) {\n ignoreScrollbarX = false;\n }\n const htmlRect = documentElement.getBoundingClientRect();\n const x = htmlRect.left + scroll.scrollLeft - (ignoreScrollbarX ? 0 :\n // RTL scrollbar.\n getWindowScrollBarX(documentElement, htmlRect));\n const y = htmlRect.top + scroll.scrollTop;\n return {\n x,\n y\n };\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(offsetParent);\n const topLayer = elements ? isTopLayer(elements.floating) : false;\n if (offsetParent === documentElement || topLayer && isFixed) {\n return rect;\n }\n let scroll = {\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 scroll = 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, scroll, true) : createCoords(0);\n return {\n width: rect.width * scale.x,\n height: rect.height * scale.y,\n x: rect.x * scale.x - scroll.scrollLeft * scale.x + offsets.x + htmlOffset.x,\n y: rect.y * scale.y - scroll.scrollTop * scale.y + offsets.y + htmlOffset.y\n };\n}\n\nfunction getClientRects(element) {\n return Array.from(element.getClientRects());\n}\n\n// Gets the entire size of the scrollable document area, even extending outside\n// of the `` and `` rect bounds if horizontally scrollable.\nfunction getDocumentRect(element) {\n const html = getDocumentElement(element);\n const scroll = getNodeScroll(element);\n const body = element.ownerDocument.body;\n const width = max(html.scrollWidth, html.clientWidth, body.scrollWidth, body.clientWidth);\n const height = max(html.scrollHeight, html.clientHeight, body.scrollHeight, body.clientHeight);\n let x = -scroll.scrollLeft + getWindowScrollBarX(element);\n const y = -scroll.scrollTop;\n if (getComputedStyle(body).direction === 'rtl') {\n x += max(html.clientWidth, body.clientWidth) - width;\n }\n return {\n width,\n height,\n x,\n y\n };\n}\n\nfunction getViewportRect(element, strategy) {\n const win = getWindow(element);\n const html = getDocumentElement(element);\n const visualViewport = win.visualViewport;\n let width = html.clientWidth;\n let height = html.clientHeight;\n let x = 0;\n let y = 0;\n if (visualViewport) {\n width = visualViewport.width;\n height = visualViewport.height;\n const visualViewportBased = isWebKit();\n if (!visualViewportBased || visualViewportBased && strategy === 'fixed') {\n x = visualViewport.offsetLeft;\n y = visualViewport.offsetTop;\n }\n }\n return {\n width,\n height,\n x,\n y\n };\n}\n\n// Returns the inner client rect, subtracting scrollbars if present.\nfunction getInnerBoundingClientRect(element, strategy) {\n const clientRect = getBoundingClientRect(element, true, strategy === 'fixed');\n const top = clientRect.top + element.clientTop;\n const left = clientRect.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 x = left * scale.x;\n const y = top * scale.y;\n return {\n width,\n height,\n x,\n y\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(element));\n } else if (isElement(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 parentNode = getParentNode(element);\n if (parentNode === stopNode || !isElement(parentNode) || isLastTraversableNode(parentNode)) {\n return false;\n }\n return getComputedStyle(parentNode).position === 'fixed' || hasFixedPositionAncestor(parentNode, stopNode);\n}\n\n// A \"clipping ancestor\" is an `overflow` element with the characteristic of\n// clipping (or hiding) child elements. This returns all clipping ancestors\n// of the given element up the tree.\nfunction getClippingElementAncestors(element, cache) {\n const cachedResult = cache.get(element);\n if (cachedResult) {\n return cachedResult;\n }\n let result = getOverflowAncestors(element, [], false).filter(el => isElement(el) && getNodeName(el) !== 'body');\n let currentContainingBlockComputedStyle = null;\n const elementIsFixed = getComputedStyle(element).position === 'fixed';\n let currentNode = elementIsFixed ? getParentNode(element) : element;\n\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n while (isElement(currentNode) && !isLastTraversableNode(currentNode)) {\n const computedStyle = getComputedStyle(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 // Drop non-containing blocks.\n result = result.filter(ancestor => ancestor !== currentNode);\n } else {\n // Record last containing block for next iteration.\n currentContainingBlockComputedStyle = computedStyle;\n }\n currentNode = getParentNode(currentNode);\n }\n cache.set(element, result);\n return result;\n}\n\n// Gets the maximum area that the element is visible in due to any number of\n// clipping ancestors.\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(rect.top, accRect.top);\n accRect.right = min(rect.right, accRect.right);\n accRect.bottom = min(rect.bottom, accRect.bottom);\n accRect.left = max(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}\n\nfunction getDimensions(element) {\n const {\n width,\n height\n } = getCssDimensions(element);\n return {\n width,\n height\n };\n}\n\nfunction getRectRelativeToOffsetParent(element, offsetParent, strategy) {\n const isOffsetParentAnElement = isHTMLElement(offsetParent);\n const documentElement = getDocumentElement(offsetParent);\n const isFixed = strategy === 'fixed';\n const rect = getBoundingClientRect(element, true, isFixed, offsetParent);\n let scroll = {\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 scroll = 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 // If the scrollbar appears on the left (e.g. RTL systems). Use\n // Firefox with layout.scrollbar.side = 3 in about:config to test this.\n offsets.x = getWindowScrollBarX(documentElement);\n }\n }\n const htmlOffset = documentElement && !isOffsetParentAnElement && !isFixed ? getHTMLOffset(documentElement, scroll) : createCoords(0);\n const x = rect.left + scroll.scrollLeft - offsets.x - htmlOffset.x;\n const y = rect.top + scroll.scrollTop - offsets.y - htmlOffset.y;\n return {\n x,\n y,\n width: rect.width,\n height: rect.height\n };\n}\n\nfunction isStaticPositioned(element) {\n return getComputedStyle(element).position === 'static';\n}\n\nfunction getTrueOffsetParent(element, polyfill) {\n if (!isHTMLElement(element) || getComputedStyle(element).position === 'fixed') {\n return null;\n }\n if (polyfill) {\n return polyfill(element);\n }\n let rawOffsetParent = element.offsetParent;\n\n // Firefox returns the element as the offsetParent if it's non-static,\n // while Chrome and Safari return the element. The element must\n // be used to perform the correct calculations even if the element is\n // non-static.\n if (getDocumentElement(element) === rawOffsetParent) {\n rawOffsetParent = rawOffsetParent.ownerDocument.body;\n }\n return rawOffsetParent;\n}\n\n// Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\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(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}\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};\n\nfunction isRTL(element) {\n return getComputedStyle(element).direction === 'rtl';\n}\n\nconst platform = {\n convertOffsetParentRelativeRectToViewportRelativeRect,\n getDocumentElement,\n getClippingRect,\n getOffsetParent,\n getElementRects,\n getClientRects,\n getDimensions,\n getScale,\n isElement,\n isRTL\n};\n\nfunction rectsAreEqual(a, b) {\n return a.x === b.x && a.y === b.y && a.width === b.width && a.height === b.height;\n}\n\n// https://samthor.au/2021/observing-dom/\nfunction observeMove(element, onMove) {\n let io = null;\n let timeoutId;\n const root = getDocumentElement(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 elementRectForRootMargin = element.getBoundingClientRect();\n const {\n left,\n top,\n width,\n height\n } = elementRectForRootMargin;\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(0, min(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 // If the reference is clipped, the ratio is 0. Throttle the refresh\n // to prevent an infinite loop of updates.\n timeoutId = setTimeout(() => {\n refresh(false, 1e-7);\n }, 1000);\n } else {\n refresh(false, ratio);\n }\n }\n if (ratio === 1 && !rectsAreEqual(elementRectForRootMargin, element.getBoundingClientRect())) {\n // It's possible that even though the ratio is reported as 1, the\n // element is not actually fully within the IntersectionObserver's root\n // area anymore. This can happen under performance constraints. This may\n // be a bug in the browser's IntersectionObserver implementation. To\n // work around this, we compare the element's bounding rect now with\n // what it was at the time we created the IntersectionObserver. If they\n // are not equal then the element moved, so we refresh.\n refresh();\n }\n isFirstUpdate = false;\n }\n\n // Older browsers don't support a `document` as the root and will throw an\n // error.\n try {\n io = new IntersectionObserver(handleObserve, {\n ...options,\n // Handle s\n root: root.ownerDocument\n });\n } catch (e) {\n io = new IntersectionObserver(handleObserve, options);\n }\n io.observe(element);\n }\n refresh(true);\n return cleanup;\n}\n\n/**\n * Automatically updates the position of the floating element when necessary.\n * Should only be called when the floating element is mounted on the DOM or\n * visible on the screen.\n * @returns cleanup function that should be invoked when the floating element is\n * removed from the DOM or hidden from the screen.\n * @see https://floating-ui.com/docs/autoUpdate\n */\nfunction autoUpdate(reference, floating, update, options) {\n if (options === void 0) {\n options = {};\n }\n const {\n ancestorScroll = true,\n ancestorResize = true,\n elementResize = typeof ResizeObserver === 'function',\n layoutShift = typeof IntersectionObserver === 'function',\n animationFrame = false\n } = options;\n const referenceEl = unwrapElement(reference);\n const ancestors = ancestorScroll || ancestorResize ? [...(referenceEl ? getOverflowAncestors(referenceEl) : []), ...getOverflowAncestors(floating)] : [];\n ancestors.forEach(ancestor => {\n ancestorScroll && ancestor.addEventListener('scroll', update, {\n passive: true\n });\n ancestorResize && ancestor.addEventListener('resize', update);\n });\n const cleanupIo = referenceEl && layoutShift ? observeMove(referenceEl, update) : null;\n let reobserveFrame = -1;\n let resizeObserver = null;\n if (elementResize) {\n resizeObserver = new ResizeObserver(_ref => {\n let [firstEntry] = _ref;\n if (firstEntry && firstEntry.target === referenceEl && resizeObserver) {\n // Prevent update loops when using the `size` middleware.\n // https://github.com/floating-ui/floating-ui/issues/1740\n resizeObserver.unobserve(floating);\n cancelAnimationFrame(reobserveFrame);\n reobserveFrame = requestAnimationFrame(() => {\n var _resizeObserver;\n (_resizeObserver = resizeObserver) == null || _resizeObserver.observe(floating);\n });\n }\n update();\n });\n if (referenceEl && !animationFrame) {\n resizeObserver.observe(referenceEl);\n }\n resizeObserver.observe(floating);\n }\n let frameId;\n let prevRefRect = animationFrame ? getBoundingClientRect(reference) : null;\n if (animationFrame) {\n frameLoop();\n }\n function frameLoop() {\n const nextRefRect = getBoundingClientRect(reference);\n if (prevRefRect && !rectsAreEqual(prevRefRect, nextRefRect)) {\n update();\n }\n prevRefRect = nextRefRect;\n frameId = requestAnimationFrame(frameLoop);\n }\n update();\n return () => {\n var _resizeObserver2;\n ancestors.forEach(ancestor => {\n ancestorScroll && ancestor.removeEventListener('scroll', update);\n ancestorResize && ancestor.removeEventListener('resize', update);\n });\n cleanupIo == null || cleanupIo();\n (_resizeObserver2 = resizeObserver) == null || _resizeObserver2.disconnect();\n resizeObserver = null;\n if (animationFrame) {\n cancelAnimationFrame(frameId);\n }\n };\n}\n\n/**\n * Resolves with an object of overflow side offsets that determine how much the\n * element is overflowing a given clipping boundary on each side.\n * - positive = overflowing the boundary by that number of pixels\n * - negative = how many pixels left before it will overflow\n * - 0 = lies flush with the boundary\n * @see https://floating-ui.com/docs/detectOverflow\n */\nconst detectOverflow = detectOverflow$1;\n\n/**\n * Modifies the placement by translating the floating element along the\n * specified axes.\n * A number (shorthand for `mainAxis` or distance), or an axes configuration\n * object may be passed.\n * @see https://floating-ui.com/docs/offset\n */\nconst offset = offset$1;\n\n/**\n * Optimizes the visibility of the floating element by choosing the placement\n * that has the most space available automatically, without needing to specify a\n * preferred placement. Alternative to `flip`.\n * @see https://floating-ui.com/docs/autoPlacement\n */\nconst autoPlacement = autoPlacement$1;\n\n/**\n * Optimizes the visibility of the floating element by shifting it in order to\n * keep it in view when it will overflow the clipping boundary.\n * @see https://floating-ui.com/docs/shift\n */\nconst shift = shift$1;\n\n/**\n * Optimizes the visibility of the floating element by flipping the `placement`\n * in order to keep it in view when the preferred placement(s) will overflow the\n * clipping boundary. Alternative to `autoPlacement`.\n * @see https://floating-ui.com/docs/flip\n */\nconst flip = flip$1;\n\n/**\n * Provides data that allows you to change the size of the floating element —\n * for instance, prevent it from overflowing the clipping boundary or match the\n * width of the reference element.\n * @see https://floating-ui.com/docs/size\n */\nconst size = size$1;\n\n/**\n * Provides data to hide the floating element in applicable situations, such as\n * when it is not in the same clipping context as the reference element.\n * @see https://floating-ui.com/docs/hide\n */\nconst hide = hide$1;\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = arrow$1;\n\n/**\n * Provides improved positioning for inline reference elements that can span\n * over multiple lines, such as hyperlinks or range selections.\n * @see https://floating-ui.com/docs/inline\n */\nconst inline = inline$1;\n\n/**\n * Built-in `limiter` that will stop `shift()` at a certain point.\n */\nconst limitShift = limitShift$1;\n\n/**\n * Computes the `x` and `y` coordinates that will place the floating element\n * next to a given reference element.\n */\nconst computePosition = (reference, floating, options) => {\n // This caches the expensive `getClippingElementAncestors` function so that\n // multiple lifecycle resets re-use the same result. It only lives for a\n // single call. If other functions become expensive, we can add them as well.\n const cache = new Map();\n const mergedOptions = {\n platform,\n ...options\n };\n const platformWithCache = {\n ...mergedOptions.platform,\n _c: cache\n };\n return computePosition$1(reference, floating, {\n ...mergedOptions,\n platform: platformWithCache\n });\n};\n\nexport { arrow, autoPlacement, autoUpdate, computePosition, detectOverflow, flip, hide, inline, limitShift, offset, platform, shift, size };\n","import { arrow as arrow$1, computePosition } from '@floating-ui/dom';\nexport { autoPlacement, autoUpdate, computePosition, detectOverflow, flip, getOverflowAncestors, hide, inline, limitShift, offset, platform, shift, size } from '@floating-ui/dom';\nimport { isNode, getNodeName } from '@floating-ui/utils/dom';\nimport { unref, computed, ref, shallowRef, watch, getCurrentScope, onScopeDispose, shallowReadonly } from 'vue-demi';\n\nfunction isComponentPublicInstance(target) {\n return target != null && typeof target === 'object' && '$el' in target;\n}\nfunction unwrapElement(target) {\n if (isComponentPublicInstance(target)) {\n const element = target.$el;\n return isNode(element) && getNodeName(element) === '#comment' ? null : element;\n }\n return target;\n}\n\nfunction toValue(source) {\n return typeof source === 'function' ? source() : unref(source);\n}\n\n/**\n * Positions an inner element of the floating element such that it is centered to the reference element.\n * @param options The arrow options.\n * @see https://floating-ui.com/docs/arrow\n */\nfunction arrow(options) {\n return {\n name: 'arrow',\n options,\n fn(args) {\n const element = unwrapElement(toValue(options.element));\n if (element == null) {\n return {};\n }\n return arrow$1({\n element,\n padding: options.padding\n }).fn(args);\n }\n };\n}\n\nfunction getDPR(element) {\n if (typeof window === 'undefined') {\n return 1;\n }\n const win = element.ownerDocument.defaultView || window;\n return win.devicePixelRatio || 1;\n}\n\nfunction roundByDPR(element, value) {\n const dpr = getDPR(element);\n return Math.round(value * dpr) / dpr;\n}\n\n/**\n * Computes the `x` and `y` coordinates that will place the floating element next to a reference element when it is given a certain CSS positioning strategy.\n * @param reference The reference template ref.\n * @param floating The floating template ref.\n * @param options The floating options.\n * @see https://floating-ui.com/docs/vue\n */\nfunction useFloating(reference, floating, options) {\n if (options === void 0) {\n options = {};\n }\n const whileElementsMountedOption = options.whileElementsMounted;\n const openOption = computed(() => {\n var _toValue;\n return (_toValue = toValue(options.open)) != null ? _toValue : true;\n });\n const middlewareOption = computed(() => toValue(options.middleware));\n const placementOption = computed(() => {\n var _toValue2;\n return (_toValue2 = toValue(options.placement)) != null ? _toValue2 : 'bottom';\n });\n const strategyOption = computed(() => {\n var _toValue3;\n return (_toValue3 = toValue(options.strategy)) != null ? _toValue3 : 'absolute';\n });\n const transformOption = computed(() => {\n var _toValue4;\n return (_toValue4 = toValue(options.transform)) != null ? _toValue4 : true;\n });\n const referenceElement = computed(() => unwrapElement(reference.value));\n const floatingElement = computed(() => unwrapElement(floating.value));\n const x = ref(0);\n const y = ref(0);\n const strategy = ref(strategyOption.value);\n const placement = ref(placementOption.value);\n const middlewareData = shallowRef({});\n const isPositioned = ref(false);\n const floatingStyles = computed(() => {\n const initialStyles = {\n position: strategy.value,\n left: '0',\n top: '0'\n };\n if (!floatingElement.value) {\n return initialStyles;\n }\n const xVal = roundByDPR(floatingElement.value, x.value);\n const yVal = roundByDPR(floatingElement.value, y.value);\n if (transformOption.value) {\n return {\n ...initialStyles,\n transform: \"translate(\" + xVal + \"px, \" + yVal + \"px)\",\n ...(getDPR(floatingElement.value) >= 1.5 && {\n willChange: 'transform'\n })\n };\n }\n return {\n position: strategy.value,\n left: xVal + \"px\",\n top: yVal + \"px\"\n };\n });\n let whileElementsMountedCleanup;\n function update() {\n if (referenceElement.value == null || floatingElement.value == null) {\n return;\n }\n const open = openOption.value;\n computePosition(referenceElement.value, floatingElement.value, {\n middleware: middlewareOption.value,\n placement: placementOption.value,\n strategy: strategyOption.value\n }).then(position => {\n x.value = position.x;\n y.value = position.y;\n strategy.value = position.strategy;\n placement.value = position.placement;\n middlewareData.value = position.middlewareData;\n /**\n * The floating element's position may be recomputed while it's closed\n * but still mounted (such as when transitioning out). To ensure\n * `isPositioned` will be `false` initially on the next open, avoid\n * setting it to `true` when `open === false` (must be specified).\n */\n isPositioned.value = open !== false;\n });\n }\n function cleanup() {\n if (typeof whileElementsMountedCleanup === 'function') {\n whileElementsMountedCleanup();\n whileElementsMountedCleanup = undefined;\n }\n }\n function attach() {\n cleanup();\n if (whileElementsMountedOption === undefined) {\n update();\n return;\n }\n if (referenceElement.value != null && floatingElement.value != null) {\n whileElementsMountedCleanup = whileElementsMountedOption(referenceElement.value, floatingElement.value, update);\n return;\n }\n }\n function reset() {\n if (!openOption.value) {\n isPositioned.value = false;\n }\n }\n watch([middlewareOption, placementOption, strategyOption, openOption], update, {\n flush: 'sync'\n });\n watch([referenceElement, floatingElement], attach, {\n flush: 'sync'\n });\n watch(openOption, reset, {\n flush: 'sync'\n });\n if (getCurrentScope()) {\n onScopeDispose(cleanup);\n }\n return {\n x: shallowReadonly(x),\n y: shallowReadonly(y),\n strategy: shallowReadonly(strategy),\n placement: shallowReadonly(placement),\n middlewareData: shallowReadonly(middlewareData),\n isPositioned: shallowReadonly(isPositioned),\n floatingStyles,\n update\n };\n}\n\nexport { arrow, useFloating };\n","import { Fragment } from 'vue';\n\nfunction renderSlotFragments(children) {\n if (!children)\n return [];\n return children.flatMap((child) => {\n if (child.type === Fragment)\n return renderSlotFragments(child.children);\n return [child];\n });\n}\n\nexport { renderSlotFragments as r };\n//# sourceMappingURL=renderSlotFragments.js.map\n","import { defineComponent, Comment, mergeProps, cloneVNode } from 'vue';\nimport { r as renderSlotFragments } from '../shared/renderSlotFragments.js';\n\nconst Slot = defineComponent({\n name: \"PrimitiveSlot\",\n inheritAttrs: false,\n setup(_, { attrs, slots }) {\n return () => {\n if (!slots.default)\n return null;\n const childrens = renderSlotFragments(slots.default());\n const firstNonCommentChildrenIndex = childrens.findIndex((child) => child.type !== Comment);\n if (firstNonCommentChildrenIndex === -1)\n return childrens;\n const firstNonCommentChildren = childrens[firstNonCommentChildrenIndex];\n delete firstNonCommentChildren.props?.ref;\n const mergedProps = firstNonCommentChildren.props ? mergeProps(attrs, firstNonCommentChildren.props) : attrs;\n if (attrs.class && firstNonCommentChildren.props?.class)\n delete firstNonCommentChildren.props.class;\n const cloned = cloneVNode(firstNonCommentChildren, mergedProps);\n for (const prop in mergedProps) {\n if (prop.startsWith(\"on\")) {\n cloned.props ||= {};\n cloned.props[prop] = mergedProps[prop];\n }\n }\n if (childrens.length === 1)\n return cloned;\n childrens[firstNonCommentChildrenIndex] = cloned;\n return childrens;\n };\n }\n});\n\nexport { Slot as S };\n//# sourceMappingURL=Slot.js.map\n","import { defineComponent, h } from 'vue';\nimport { S as Slot } from './Slot.js';\n\nconst Primitive = defineComponent({\n name: \"Primitive\",\n inheritAttrs: false,\n props: {\n asChild: {\n type: Boolean,\n default: false\n },\n as: {\n type: [String, Object],\n default: \"div\"\n }\n },\n setup(props, { attrs, slots }) {\n const asTag = props.asChild ? \"template\" : props.as;\n const SELF_CLOSING_TAGS = [\"area\", \"img\", \"input\"];\n if (typeof asTag === \"string\" && SELF_CLOSING_TAGS.includes(asTag))\n return () => h(asTag, attrs);\n if (asTag !== \"template\")\n return () => h(props.as, attrs, { default: slots.default });\n return () => h(Slot, attrs, { default: slots.default });\n }\n});\n\nexport { Primitive as P };\n//# sourceMappingURL=Primitive.js.map\n","import { defineComponent, openBlock, createBlock, unref, withCtx, renderSlot } from 'vue';\nimport { P as Primitive } from '../Primitive/Primitive.js';\n\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"VisuallyHidden\",\n props: {\n feature: { default: \"focusable\" },\n asChild: { type: Boolean },\n as: { default: \"span\" }\n },\n setup(__props) {\n return (_ctx, _cache) => {\n return openBlock(), createBlock(unref(Primitive), {\n as: _ctx.as,\n \"as-child\": _ctx.asChild,\n \"aria-hidden\": _ctx.feature === \"focusable\" ? \"true\" : undefined,\n \"data-hidden\": _ctx.feature === \"fully-hidden\" ? \"\" : undefined,\n tabindex: _ctx.feature === \"fully-hidden\" ? \"-1\" : undefined,\n style: {\n // See: https://github.com/twbs/bootstrap/blob/master/scss/mixins/_screen-reader.scss\n position: \"absolute\",\n border: 0,\n width: \"1px\",\n height: \"1px\",\n padding: 0,\n margin: \"-1px\",\n overflow: \"hidden\",\n clip: \"rect(0, 0, 0, 0)\",\n clipPath: \"inset(50%)\",\n whiteSpace: \"nowrap\",\n wordWrap: \"normal\"\n }\n }, {\n default: withCtx(() => [\n renderSlot(_ctx.$slots, \"default\")\n ]),\n _: 3\n }, 8, [\"as\", \"as-child\", \"aria-hidden\", \"data-hidden\", \"tabindex\"]);\n };\n }\n});\n\nexport { _sfc_main as _ };\n//# sourceMappingURL=VisuallyHidden.js.map\n","import { shallowRef, watchEffect, readonly, watch, customRef, getCurrentScope, onScopeDispose, effectScope, getCurrentInstance, hasInjectionContext, inject, provide, ref, isRef, unref, toValue as toValue$1, computed, reactive, toRefs as toRefs$1, toRef as toRef$1, onBeforeMount, nextTick, onBeforeUnmount, onMounted, onUnmounted, isReactive } from 'vue';\n\nfunction computedEager(fn, options) {\n var _a;\n const result = shallowRef();\n watchEffect(() => {\n result.value = fn();\n }, {\n ...options,\n flush: (_a = options == null ? void 0 : options.flush) != null ? _a : \"sync\"\n });\n return readonly(result);\n}\n\nfunction computedWithControl(source, fn) {\n let v = void 0;\n let track;\n let trigger;\n const dirty = shallowRef(true);\n const update = () => {\n dirty.value = true;\n trigger();\n };\n watch(source, update, { flush: \"sync\" });\n const get = typeof fn === \"function\" ? fn : fn.get;\n const set = typeof fn === \"function\" ? void 0 : fn.set;\n const result = customRef((_track, _trigger) => {\n track = _track;\n trigger = _trigger;\n return {\n get() {\n if (dirty.value) {\n v = get(v);\n dirty.value = false;\n }\n track();\n return v;\n },\n set(v2) {\n set == null ? void 0 : set(v2);\n }\n };\n });\n if (Object.isExtensible(result))\n result.trigger = update;\n return result;\n}\n\nfunction tryOnScopeDispose(fn) {\n if (getCurrentScope()) {\n onScopeDispose(fn);\n return true;\n }\n return false;\n}\n\nfunction createEventHook() {\n const fns = /* @__PURE__ */ new Set();\n const off = (fn) => {\n fns.delete(fn);\n };\n const clear = () => {\n fns.clear();\n };\n const on = (fn) => {\n fns.add(fn);\n const offFn = () => off(fn);\n tryOnScopeDispose(offFn);\n return {\n off: offFn\n };\n };\n const trigger = (...args) => {\n return Promise.all(Array.from(fns).map((fn) => fn(...args)));\n };\n return {\n on,\n off,\n trigger,\n clear\n };\n}\n\nfunction createGlobalState(stateFactory) {\n let initialized = false;\n let state;\n const scope = effectScope(true);\n return (...args) => {\n if (!initialized) {\n state = scope.run(() => stateFactory(...args));\n initialized = true;\n }\n return state;\n };\n}\n\nconst localProvidedStateMap = /* @__PURE__ */ new WeakMap();\n\nconst injectLocal = (...args) => {\n var _a;\n const key = args[0];\n const instance = (_a = getCurrentInstance()) == null ? void 0 : _a.proxy;\n if (instance == null && !hasInjectionContext())\n throw new Error(\"injectLocal must be called in setup\");\n if (instance && localProvidedStateMap.has(instance) && key in localProvidedStateMap.get(instance))\n return localProvidedStateMap.get(instance)[key];\n return inject(...args);\n};\n\nconst provideLocal = (key, value) => {\n var _a;\n const instance = (_a = getCurrentInstance()) == null ? void 0 : _a.proxy;\n if (instance == null)\n throw new Error(\"provideLocal must be called in setup\");\n if (!localProvidedStateMap.has(instance))\n localProvidedStateMap.set(instance, /* @__PURE__ */ Object.create(null));\n const localProvidedState = localProvidedStateMap.get(instance);\n localProvidedState[key] = value;\n provide(key, value);\n};\n\nfunction createInjectionState(composable, options) {\n const key = (options == null ? void 0 : options.injectionKey) || Symbol(composable.name || \"InjectionState\");\n const defaultValue = options == null ? void 0 : options.defaultValue;\n const useProvidingState = (...args) => {\n const state = composable(...args);\n provideLocal(key, state);\n return state;\n };\n const useInjectedState = () => injectLocal(key, defaultValue);\n return [useProvidingState, useInjectedState];\n}\n\nfunction createRef(value, deep) {\n if (deep === true) {\n return ref(value);\n } else {\n return shallowRef(value);\n }\n}\n\nfunction createSharedComposable(composable) {\n let subscribers = 0;\n let state;\n let scope;\n const dispose = () => {\n subscribers -= 1;\n if (scope && subscribers <= 0) {\n scope.stop();\n state = void 0;\n scope = void 0;\n }\n };\n return (...args) => {\n subscribers += 1;\n if (!scope) {\n scope = effectScope(true);\n state = scope.run(() => composable(...args));\n }\n tryOnScopeDispose(dispose);\n return state;\n };\n}\n\nfunction extendRef(ref, extend, { enumerable = false, unwrap = true } = {}) {\n for (const [key, value] of Object.entries(extend)) {\n if (key === \"value\")\n continue;\n if (isRef(value) && unwrap) {\n Object.defineProperty(ref, key, {\n get() {\n return value.value;\n },\n set(v) {\n value.value = v;\n },\n enumerable\n });\n } else {\n Object.defineProperty(ref, key, { value, enumerable });\n }\n }\n return ref;\n}\n\nfunction get(obj, key) {\n if (key == null)\n return unref(obj);\n return unref(obj)[key];\n}\n\nfunction isDefined(v) {\n return unref(v) != null;\n}\n\nfunction makeDestructurable(obj, arr) {\n if (typeof Symbol !== \"undefined\") {\n const clone = { ...obj };\n Object.defineProperty(clone, Symbol.iterator, {\n enumerable: false,\n value() {\n let index = 0;\n return {\n next: () => ({\n value: arr[index++],\n done: index > arr.length\n })\n };\n }\n });\n return clone;\n } else {\n return Object.assign([...arr], obj);\n }\n}\n\nfunction reactify(fn, options) {\n const unrefFn = (options == null ? void 0 : options.computedGetter) === false ? unref : toValue$1;\n return function(...args) {\n return computed(() => fn.apply(this, args.map((i) => unrefFn(i))));\n };\n}\n\nfunction reactifyObject(obj, optionsOrKeys = {}) {\n let keys = [];\n let options;\n if (Array.isArray(optionsOrKeys)) {\n keys = optionsOrKeys;\n } else {\n options = optionsOrKeys;\n const { includeOwnProperties = true } = optionsOrKeys;\n keys.push(...Object.keys(obj));\n if (includeOwnProperties)\n keys.push(...Object.getOwnPropertyNames(obj));\n }\n return Object.fromEntries(\n keys.map((key) => {\n const value = obj[key];\n return [\n key,\n typeof value === \"function\" ? reactify(value.bind(obj), options) : value\n ];\n })\n );\n}\n\nfunction toReactive(objectRef) {\n if (!isRef(objectRef))\n return reactive(objectRef);\n const proxy = new Proxy({}, {\n get(_, p, receiver) {\n return unref(Reflect.get(objectRef.value, p, receiver));\n },\n set(_, p, value) {\n if (isRef(objectRef.value[p]) && !isRef(value))\n objectRef.value[p].value = value;\n else\n objectRef.value[p] = value;\n return true;\n },\n deleteProperty(_, p) {\n return Reflect.deleteProperty(objectRef.value, p);\n },\n has(_, p) {\n return Reflect.has(objectRef.value, p);\n },\n ownKeys() {\n return Object.keys(objectRef.value);\n },\n getOwnPropertyDescriptor() {\n return {\n enumerable: true,\n configurable: true\n };\n }\n });\n return reactive(proxy);\n}\n\nfunction reactiveComputed(fn) {\n return toReactive(computed(fn));\n}\n\nfunction reactiveOmit(obj, ...keys) {\n const flatKeys = keys.flat();\n const predicate = flatKeys[0];\n return reactiveComputed(() => typeof predicate === \"function\" ? Object.fromEntries(Object.entries(toRefs$1(obj)).filter(([k, v]) => !predicate(toValue$1(v), k))) : Object.fromEntries(Object.entries(toRefs$1(obj)).filter((e) => !flatKeys.includes(e[0]))));\n}\n\nconst isClient = typeof window !== \"undefined\" && typeof document !== \"undefined\";\nconst isWorker = typeof WorkerGlobalScope !== \"undefined\" && globalThis instanceof WorkerGlobalScope;\nconst isDef = (val) => typeof val !== \"undefined\";\nconst notNullish = (val) => val != null;\nconst assert = (condition, ...infos) => {\n if (!condition)\n console.warn(...infos);\n};\nconst toString = Object.prototype.toString;\nconst isObject = (val) => toString.call(val) === \"[object Object]\";\nconst now = () => Date.now();\nconst timestamp = () => +Date.now();\nconst clamp = (n, min, max) => Math.min(max, Math.max(min, n));\nconst noop = () => {\n};\nconst rand = (min, max) => {\n min = Math.ceil(min);\n max = Math.floor(max);\n return Math.floor(Math.random() * (max - min + 1)) + min;\n};\nconst hasOwn = (val, key) => Object.prototype.hasOwnProperty.call(val, key);\nconst isIOS = /* @__PURE__ */ getIsIOS();\nfunction getIsIOS() {\n var _a, _b;\n return isClient && ((_a = window == null ? void 0 : window.navigator) == null ? void 0 : _a.userAgent) && (/iP(?:ad|hone|od)/.test(window.navigator.userAgent) || ((_b = window == null ? void 0 : window.navigator) == null ? void 0 : _b.maxTouchPoints) > 2 && /iPad|Macintosh/.test(window == null ? void 0 : window.navigator.userAgent));\n}\n\nfunction createFilterWrapper(filter, fn) {\n function wrapper(...args) {\n return new Promise((resolve, reject) => {\n Promise.resolve(filter(() => fn.apply(this, args), { fn, thisArg: this, args })).then(resolve).catch(reject);\n });\n }\n return wrapper;\n}\nconst bypassFilter = (invoke) => {\n return invoke();\n};\nfunction debounceFilter(ms, options = {}) {\n let timer;\n let maxTimer;\n let lastRejector = noop;\n const _clearTimeout = (timer2) => {\n clearTimeout(timer2);\n lastRejector();\n lastRejector = noop;\n };\n let lastInvoker;\n const filter = (invoke) => {\n const duration = toValue$1(ms);\n const maxDuration = toValue$1(options.maxWait);\n if (timer)\n _clearTimeout(timer);\n if (duration <= 0 || maxDuration !== void 0 && maxDuration <= 0) {\n if (maxTimer) {\n _clearTimeout(maxTimer);\n maxTimer = null;\n }\n return Promise.resolve(invoke());\n }\n return new Promise((resolve, reject) => {\n lastRejector = options.rejectOnCancel ? reject : resolve;\n lastInvoker = invoke;\n if (maxDuration && !maxTimer) {\n maxTimer = setTimeout(() => {\n if (timer)\n _clearTimeout(timer);\n maxTimer = null;\n resolve(lastInvoker());\n }, maxDuration);\n }\n timer = setTimeout(() => {\n if (maxTimer)\n _clearTimeout(maxTimer);\n maxTimer = null;\n resolve(invoke());\n }, duration);\n });\n };\n return filter;\n}\nfunction throttleFilter(...args) {\n let lastExec = 0;\n let timer;\n let isLeading = true;\n let lastRejector = noop;\n let lastValue;\n let ms;\n let trailing;\n let leading;\n let rejectOnCancel;\n if (!isRef(args[0]) && typeof args[0] === \"object\")\n ({ delay: ms, trailing = true, leading = true, rejectOnCancel = false } = args[0]);\n else\n [ms, trailing = true, leading = true, rejectOnCancel = false] = args;\n const clear = () => {\n if (timer) {\n clearTimeout(timer);\n timer = void 0;\n lastRejector();\n lastRejector = noop;\n }\n };\n const filter = (_invoke) => {\n const duration = toValue$1(ms);\n const elapsed = Date.now() - lastExec;\n const invoke = () => {\n return lastValue = _invoke();\n };\n clear();\n if (duration <= 0) {\n lastExec = Date.now();\n return invoke();\n }\n if (elapsed > duration && (leading || !isLeading)) {\n lastExec = Date.now();\n invoke();\n } else if (trailing) {\n lastValue = new Promise((resolve, reject) => {\n lastRejector = rejectOnCancel ? reject : resolve;\n timer = setTimeout(() => {\n lastExec = Date.now();\n isLeading = true;\n resolve(invoke());\n clear();\n }, Math.max(0, duration - elapsed));\n });\n }\n if (!leading && !timer)\n timer = setTimeout(() => isLeading = true, duration);\n isLeading = false;\n return lastValue;\n };\n return filter;\n}\nfunction pausableFilter(extendFilter = bypassFilter, options = {}) {\n const {\n initialState = \"active\"\n } = options;\n const isActive = toRef(initialState === \"active\");\n function pause() {\n isActive.value = false;\n }\n function resume() {\n isActive.value = true;\n }\n const eventFilter = (...args) => {\n if (isActive.value)\n extendFilter(...args);\n };\n return { isActive: readonly(isActive), pause, resume, eventFilter };\n}\n\nfunction cacheStringFunction(fn) {\n const cache = /* @__PURE__ */ Object.create(null);\n return (str) => {\n const hit = cache[str];\n return hit || (cache[str] = fn(str));\n };\n}\nconst hyphenateRE = /\\B([A-Z])/g;\nconst hyphenate = cacheStringFunction((str) => str.replace(hyphenateRE, \"-$1\").toLowerCase());\nconst camelizeRE = /-(\\w)/g;\nconst camelize = cacheStringFunction((str) => {\n return str.replace(camelizeRE, (_, c) => c ? c.toUpperCase() : \"\");\n});\n\nfunction promiseTimeout(ms, throwOnTimeout = false, reason = \"Timeout\") {\n return new Promise((resolve, reject) => {\n if (throwOnTimeout)\n setTimeout(() => reject(reason), ms);\n else\n setTimeout(resolve, ms);\n });\n}\nfunction identity(arg) {\n return arg;\n}\nfunction createSingletonPromise(fn) {\n let _promise;\n function wrapper() {\n if (!_promise)\n _promise = fn();\n return _promise;\n }\n wrapper.reset = async () => {\n const _prev = _promise;\n _promise = void 0;\n if (_prev)\n await _prev;\n };\n return wrapper;\n}\nfunction invoke(fn) {\n return fn();\n}\nfunction containsProp(obj, ...props) {\n return props.some((k) => k in obj);\n}\nfunction increaseWithUnit(target, delta) {\n var _a;\n if (typeof target === \"number\")\n return target + delta;\n const value = ((_a = target.match(/^-?\\d+\\.?\\d*/)) == null ? void 0 : _a[0]) || \"\";\n const unit = target.slice(value.length);\n const result = Number.parseFloat(value) + delta;\n if (Number.isNaN(result))\n return target;\n return result + unit;\n}\nfunction pxValue(px) {\n return px.endsWith(\"rem\") ? Number.parseFloat(px) * 16 : Number.parseFloat(px);\n}\nfunction objectPick(obj, keys, omitUndefined = false) {\n return keys.reduce((n, k) => {\n if (k in obj) {\n if (!omitUndefined || obj[k] !== void 0)\n n[k] = obj[k];\n }\n return n;\n }, {});\n}\nfunction objectOmit(obj, keys, omitUndefined = false) {\n return Object.fromEntries(Object.entries(obj).filter(([key, value]) => {\n return (!omitUndefined || value !== void 0) && !keys.includes(key);\n }));\n}\nfunction objectEntries(obj) {\n return Object.entries(obj);\n}\nfunction getLifeCycleTarget(target) {\n return target || getCurrentInstance();\n}\nfunction toArray(value) {\n return Array.isArray(value) ? value : [value];\n}\n\nfunction toRef(...args) {\n if (args.length !== 1)\n return toRef$1(...args);\n const r = args[0];\n return typeof r === \"function\" ? readonly(customRef(() => ({ get: r, set: noop }))) : ref(r);\n}\nconst resolveRef = toRef;\n\nfunction reactivePick(obj, ...keys) {\n const flatKeys = keys.flat();\n const predicate = flatKeys[0];\n return reactiveComputed(() => typeof predicate === \"function\" ? Object.fromEntries(Object.entries(toRefs$1(obj)).filter(([k, v]) => predicate(toValue$1(v), k))) : Object.fromEntries(flatKeys.map((k) => [k, toRef(obj, k)])));\n}\n\nfunction refAutoReset(defaultValue, afterMs = 1e4) {\n return customRef((track, trigger) => {\n let value = toValue$1(defaultValue);\n let timer;\n const resetAfter = () => setTimeout(() => {\n value = toValue$1(defaultValue);\n trigger();\n }, toValue$1(afterMs));\n tryOnScopeDispose(() => {\n clearTimeout(timer);\n });\n return {\n get() {\n track();\n return value;\n },\n set(newValue) {\n value = newValue;\n trigger();\n clearTimeout(timer);\n timer = resetAfter();\n }\n };\n });\n}\n\nfunction useDebounceFn(fn, ms = 200, options = {}) {\n return createFilterWrapper(\n debounceFilter(ms, options),\n fn\n );\n}\n\nfunction refDebounced(value, ms = 200, options = {}) {\n const debounced = ref(value.value);\n const updater = useDebounceFn(() => {\n debounced.value = value.value;\n }, ms, options);\n watch(value, () => updater());\n return debounced;\n}\n\nfunction refDefault(source, defaultValue) {\n return computed({\n get() {\n var _a;\n return (_a = source.value) != null ? _a : defaultValue;\n },\n set(value) {\n source.value = value;\n }\n });\n}\n\nfunction useThrottleFn(fn, ms = 200, trailing = false, leading = true, rejectOnCancel = false) {\n return createFilterWrapper(\n throttleFilter(ms, trailing, leading, rejectOnCancel),\n fn\n );\n}\n\nfunction refThrottled(value, delay = 200, trailing = true, leading = true) {\n if (delay <= 0)\n return value;\n const throttled = ref(value.value);\n const updater = useThrottleFn(() => {\n throttled.value = value.value;\n }, delay, trailing, leading);\n watch(value, () => updater());\n return throttled;\n}\n\nfunction refWithControl(initial, options = {}) {\n let source = initial;\n let track;\n let trigger;\n const ref = customRef((_track, _trigger) => {\n track = _track;\n trigger = _trigger;\n return {\n get() {\n return get();\n },\n set(v) {\n set(v);\n }\n };\n });\n function get(tracking = true) {\n if (tracking)\n track();\n return source;\n }\n function set(value, triggering = true) {\n var _a, _b;\n if (value === source)\n return;\n const old = source;\n if (((_a = options.onBeforeChange) == null ? void 0 : _a.call(options, value, old)) === false)\n return;\n source = value;\n (_b = options.onChanged) == null ? void 0 : _b.call(options, value, old);\n if (triggering)\n trigger();\n }\n const untrackedGet = () => get(false);\n const silentSet = (v) => set(v, false);\n const peek = () => get(false);\n const lay = (v) => set(v, false);\n return extendRef(\n ref,\n {\n get,\n set,\n untrackedGet,\n silentSet,\n peek,\n lay\n },\n { enumerable: true }\n );\n}\nconst controlledRef = refWithControl;\n\nfunction set(...args) {\n if (args.length === 2) {\n const [ref, value] = args;\n ref.value = value;\n }\n if (args.length === 3) {\n const [target, key, value] = args;\n target[key] = value;\n }\n}\n\nfunction watchWithFilter(source, cb, options = {}) {\n const {\n eventFilter = bypassFilter,\n ...watchOptions\n } = options;\n return watch(\n source,\n createFilterWrapper(\n eventFilter,\n cb\n ),\n watchOptions\n );\n}\n\nfunction watchPausable(source, cb, options = {}) {\n const {\n eventFilter: filter,\n initialState = \"active\",\n ...watchOptions\n } = options;\n const { eventFilter, pause, resume, isActive } = pausableFilter(filter, { initialState });\n const stop = watchWithFilter(\n source,\n cb,\n {\n ...watchOptions,\n eventFilter\n }\n );\n return { stop, pause, resume, isActive };\n}\n\nfunction syncRef(left, right, ...[options]) {\n const {\n flush = \"sync\",\n deep = false,\n immediate = true,\n direction = \"both\",\n transform = {}\n } = options || {};\n const watchers = [];\n const transformLTR = \"ltr\" in transform && transform.ltr || ((v) => v);\n const transformRTL = \"rtl\" in transform && transform.rtl || ((v) => v);\n if (direction === \"both\" || direction === \"ltr\") {\n watchers.push(watchPausable(\n left,\n (newValue) => {\n watchers.forEach((w) => w.pause());\n right.value = transformLTR(newValue);\n watchers.forEach((w) => w.resume());\n },\n { flush, deep, immediate }\n ));\n }\n if (direction === \"both\" || direction === \"rtl\") {\n watchers.push(watchPausable(\n right,\n (newValue) => {\n watchers.forEach((w) => w.pause());\n left.value = transformRTL(newValue);\n watchers.forEach((w) => w.resume());\n },\n { flush, deep, immediate }\n ));\n }\n const stop = () => {\n watchers.forEach((w) => w.stop());\n };\n return stop;\n}\n\nfunction syncRefs(source, targets, options = {}) {\n const {\n flush = \"sync\",\n deep = false,\n immediate = true\n } = options;\n const targetsArray = toArray(targets);\n return watch(\n source,\n (newValue) => targetsArray.forEach((target) => target.value = newValue),\n { flush, deep, immediate }\n );\n}\n\nfunction toRefs(objectRef, options = {}) {\n if (!isRef(objectRef))\n return toRefs$1(objectRef);\n const result = Array.isArray(objectRef.value) ? Array.from({ length: objectRef.value.length }) : {};\n for (const key in objectRef.value) {\n result[key] = customRef(() => ({\n get() {\n return objectRef.value[key];\n },\n set(v) {\n var _a;\n const replaceRef = (_a = toValue$1(options.replaceRef)) != null ? _a : true;\n if (replaceRef) {\n if (Array.isArray(objectRef.value)) {\n const copy = [...objectRef.value];\n copy[key] = v;\n objectRef.value = copy;\n } else {\n const newObject = { ...objectRef.value, [key]: v };\n Object.setPrototypeOf(newObject, Object.getPrototypeOf(objectRef.value));\n objectRef.value = newObject;\n }\n } else {\n objectRef.value[key] = v;\n }\n }\n }));\n }\n return result;\n}\n\nconst toValue = toValue$1;\nconst resolveUnref = toValue$1;\n\nfunction tryOnBeforeMount(fn, sync = true, target) {\n const instance = getLifeCycleTarget(target);\n if (instance)\n onBeforeMount(fn, target);\n else if (sync)\n fn();\n else\n nextTick(fn);\n}\n\nfunction tryOnBeforeUnmount(fn, target) {\n const instance = getLifeCycleTarget(target);\n if (instance)\n onBeforeUnmount(fn, target);\n}\n\nfunction tryOnMounted(fn, sync = true, target) {\n const instance = getLifeCycleTarget();\n if (instance)\n onMounted(fn, target);\n else if (sync)\n fn();\n else\n nextTick(fn);\n}\n\nfunction tryOnUnmounted(fn, target) {\n const instance = getLifeCycleTarget(target);\n if (instance)\n onUnmounted(fn, target);\n}\n\nfunction createUntil(r, isNot = false) {\n function toMatch(condition, { flush = \"sync\", deep = false, timeout, throwOnTimeout } = {}) {\n let stop = null;\n const watcher = new Promise((resolve) => {\n stop = watch(\n r,\n (v) => {\n if (condition(v) !== isNot) {\n if (stop)\n stop();\n else\n nextTick(() => stop == null ? void 0 : stop());\n resolve(v);\n }\n },\n {\n flush,\n deep,\n immediate: true\n }\n );\n });\n const promises = [watcher];\n if (timeout != null) {\n promises.push(\n promiseTimeout(timeout, throwOnTimeout).then(() => toValue$1(r)).finally(() => stop == null ? void 0 : stop())\n );\n }\n return Promise.race(promises);\n }\n function toBe(value, options) {\n if (!isRef(value))\n return toMatch((v) => v === value, options);\n const { flush = \"sync\", deep = false, timeout, throwOnTimeout } = options != null ? options : {};\n let stop = null;\n const watcher = new Promise((resolve) => {\n stop = watch(\n [r, value],\n ([v1, v2]) => {\n if (isNot !== (v1 === v2)) {\n if (stop)\n stop();\n else\n nextTick(() => stop == null ? void 0 : stop());\n resolve(v1);\n }\n },\n {\n flush,\n deep,\n immediate: true\n }\n );\n });\n const promises = [watcher];\n if (timeout != null) {\n promises.push(\n promiseTimeout(timeout, throwOnTimeout).then(() => toValue$1(r)).finally(() => {\n stop == null ? void 0 : stop();\n return toValue$1(r);\n })\n );\n }\n return Promise.race(promises);\n }\n function toBeTruthy(options) {\n return toMatch((v) => Boolean(v), options);\n }\n function toBeNull(options) {\n return toBe(null, options);\n }\n function toBeUndefined(options) {\n return toBe(void 0, options);\n }\n function toBeNaN(options) {\n return toMatch(Number.isNaN, options);\n }\n function toContains(value, options) {\n return toMatch((v) => {\n const array = Array.from(v);\n return array.includes(value) || array.includes(toValue$1(value));\n }, options);\n }\n function changed(options) {\n return changedTimes(1, options);\n }\n function changedTimes(n = 1, options) {\n let count = -1;\n return toMatch(() => {\n count += 1;\n return count >= n;\n }, options);\n }\n if (Array.isArray(toValue$1(r))) {\n const instance = {\n toMatch,\n toContains,\n changed,\n changedTimes,\n get not() {\n return createUntil(r, !isNot);\n }\n };\n return instance;\n } else {\n const instance = {\n toMatch,\n toBe,\n toBeTruthy,\n toBeNull,\n toBeNaN,\n toBeUndefined,\n changed,\n changedTimes,\n get not() {\n return createUntil(r, !isNot);\n }\n };\n return instance;\n }\n}\nfunction until(r) {\n return createUntil(r);\n}\n\nfunction defaultComparator(value, othVal) {\n return value === othVal;\n}\nfunction useArrayDifference(...args) {\n var _a, _b;\n const list = args[0];\n const values = args[1];\n let compareFn = (_a = args[2]) != null ? _a : defaultComparator;\n const {\n symmetric = false\n } = (_b = args[3]) != null ? _b : {};\n if (typeof compareFn === \"string\") {\n const key = compareFn;\n compareFn = (value, othVal) => value[key] === othVal[key];\n }\n const diff1 = computed(() => toValue$1(list).filter((x) => toValue$1(values).findIndex((y) => compareFn(x, y)) === -1));\n if (symmetric) {\n const diff2 = computed(() => toValue$1(values).filter((x) => toValue$1(list).findIndex((y) => compareFn(x, y)) === -1));\n return computed(() => symmetric ? [...toValue$1(diff1), ...toValue$1(diff2)] : toValue$1(diff1));\n } else {\n return diff1;\n }\n}\n\nfunction useArrayEvery(list, fn) {\n return computed(() => toValue$1(list).every((element, index, array) => fn(toValue$1(element), index, array)));\n}\n\nfunction useArrayFilter(list, fn) {\n return computed(() => toValue$1(list).map((i) => toValue$1(i)).filter(fn));\n}\n\nfunction useArrayFind(list, fn) {\n return computed(() => toValue$1(\n toValue$1(list).find((element, index, array) => fn(toValue$1(element), index, array))\n ));\n}\n\nfunction useArrayFindIndex(list, fn) {\n return computed(() => toValue$1(list).findIndex((element, index, array) => fn(toValue$1(element), index, array)));\n}\n\nfunction findLast(arr, cb) {\n let index = arr.length;\n while (index-- > 0) {\n if (cb(arr[index], index, arr))\n return arr[index];\n }\n return void 0;\n}\nfunction useArrayFindLast(list, fn) {\n return computed(() => toValue$1(\n !Array.prototype.findLast ? findLast(toValue$1(list), (element, index, array) => fn(toValue$1(element), index, array)) : toValue$1(list).findLast((element, index, array) => fn(toValue$1(element), index, array))\n ));\n}\n\nfunction isArrayIncludesOptions(obj) {\n return isObject(obj) && containsProp(obj, \"formIndex\", \"comparator\");\n}\nfunction useArrayIncludes(...args) {\n var _a;\n const list = args[0];\n const value = args[1];\n let comparator = args[2];\n let formIndex = 0;\n if (isArrayIncludesOptions(comparator)) {\n formIndex = (_a = comparator.fromIndex) != null ? _a : 0;\n comparator = comparator.comparator;\n }\n if (typeof comparator === \"string\") {\n const key = comparator;\n comparator = (element, value2) => element[key] === toValue$1(value2);\n }\n comparator = comparator != null ? comparator : (element, value2) => element === toValue$1(value2);\n return computed(() => toValue$1(list).slice(formIndex).some((element, index, array) => comparator(\n toValue$1(element),\n toValue$1(value),\n index,\n toValue$1(array)\n )));\n}\n\nfunction useArrayJoin(list, separator) {\n return computed(() => toValue$1(list).map((i) => toValue$1(i)).join(toValue$1(separator)));\n}\n\nfunction useArrayMap(list, fn) {\n return computed(() => toValue$1(list).map((i) => toValue$1(i)).map(fn));\n}\n\nfunction useArrayReduce(list, reducer, ...args) {\n const reduceCallback = (sum, value, index) => reducer(toValue$1(sum), toValue$1(value), index);\n return computed(() => {\n const resolved = toValue$1(list);\n return args.length ? resolved.reduce(reduceCallback, typeof args[0] === \"function\" ? toValue$1(args[0]()) : toValue$1(args[0])) : resolved.reduce(reduceCallback);\n });\n}\n\nfunction useArraySome(list, fn) {\n return computed(() => toValue$1(list).some((element, index, array) => fn(toValue$1(element), index, array)));\n}\n\nfunction uniq(array) {\n return Array.from(new Set(array));\n}\nfunction uniqueElementsBy(array, fn) {\n return array.reduce((acc, v) => {\n if (!acc.some((x) => fn(v, x, array)))\n acc.push(v);\n return acc;\n }, []);\n}\nfunction useArrayUnique(list, compareFn) {\n return computed(() => {\n const resolvedList = toValue$1(list).map((element) => toValue$1(element));\n return compareFn ? uniqueElementsBy(resolvedList, compareFn) : uniq(resolvedList);\n });\n}\n\nfunction useCounter(initialValue = 0, options = {}) {\n let _initialValue = unref(initialValue);\n const count = shallowRef(initialValue);\n const {\n max = Number.POSITIVE_INFINITY,\n min = Number.NEGATIVE_INFINITY\n } = options;\n const inc = (delta = 1) => count.value = Math.max(Math.min(max, count.value + delta), min);\n const dec = (delta = 1) => count.value = Math.min(Math.max(min, count.value - delta), max);\n const get = () => count.value;\n const set = (val) => count.value = Math.max(min, Math.min(max, val));\n const reset = (val = _initialValue) => {\n _initialValue = val;\n return set(val);\n };\n return { count, inc, dec, get, set, reset };\n}\n\nconst REGEX_PARSE = /^(\\d{4})[-/]?(\\d{1,2})?[-/]?(\\d{0,2})[T\\s]*(\\d{1,2})?:?(\\d{1,2})?:?(\\d{1,2})?[.:]?(\\d+)?$/i;\nconst REGEX_FORMAT = /[YMDHhms]o|\\[([^\\]]+)\\]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a{1,2}|A{1,2}|m{1,2}|s{1,2}|Z{1,2}|z{1,4}|SSS/g;\nfunction defaultMeridiem(hours, minutes, isLowercase, hasPeriod) {\n let m = hours < 12 ? \"AM\" : \"PM\";\n if (hasPeriod)\n m = m.split(\"\").reduce((acc, curr) => acc += `${curr}.`, \"\");\n return isLowercase ? m.toLowerCase() : m;\n}\nfunction formatOrdinal(num) {\n const suffixes = [\"th\", \"st\", \"nd\", \"rd\"];\n const v = num % 100;\n return num + (suffixes[(v - 20) % 10] || suffixes[v] || suffixes[0]);\n}\nfunction formatDate(date, formatStr, options = {}) {\n var _a;\n const years = date.getFullYear();\n const month = date.getMonth();\n const days = date.getDate();\n const hours = date.getHours();\n const minutes = date.getMinutes();\n const seconds = date.getSeconds();\n const milliseconds = date.getMilliseconds();\n const day = date.getDay();\n const meridiem = (_a = options.customMeridiem) != null ? _a : defaultMeridiem;\n const stripTimeZone = (dateString) => {\n var _a2;\n return (_a2 = dateString.split(\" \")[1]) != null ? _a2 : \"\";\n };\n const matches = {\n Yo: () => formatOrdinal(years),\n YY: () => String(years).slice(-2),\n YYYY: () => years,\n M: () => month + 1,\n Mo: () => formatOrdinal(month + 1),\n MM: () => `${month + 1}`.padStart(2, \"0\"),\n MMM: () => date.toLocaleDateString(toValue$1(options.locales), { month: \"short\" }),\n MMMM: () => date.toLocaleDateString(toValue$1(options.locales), { month: \"long\" }),\n D: () => String(days),\n Do: () => formatOrdinal(days),\n DD: () => `${days}`.padStart(2, \"0\"),\n H: () => String(hours),\n Ho: () => formatOrdinal(hours),\n HH: () => `${hours}`.padStart(2, \"0\"),\n h: () => `${hours % 12 || 12}`.padStart(1, \"0\"),\n ho: () => formatOrdinal(hours % 12 || 12),\n hh: () => `${hours % 12 || 12}`.padStart(2, \"0\"),\n m: () => String(minutes),\n mo: () => formatOrdinal(minutes),\n mm: () => `${minutes}`.padStart(2, \"0\"),\n s: () => String(seconds),\n so: () => formatOrdinal(seconds),\n ss: () => `${seconds}`.padStart(2, \"0\"),\n SSS: () => `${milliseconds}`.padStart(3, \"0\"),\n d: () => day,\n dd: () => date.toLocaleDateString(toValue$1(options.locales), { weekday: \"narrow\" }),\n ddd: () => date.toLocaleDateString(toValue$1(options.locales), { weekday: \"short\" }),\n dddd: () => date.toLocaleDateString(toValue$1(options.locales), { weekday: \"long\" }),\n A: () => meridiem(hours, minutes),\n AA: () => meridiem(hours, minutes, false, true),\n a: () => meridiem(hours, minutes, true),\n aa: () => meridiem(hours, minutes, true, true),\n z: () => stripTimeZone(date.toLocaleDateString(toValue$1(options.locales), { timeZoneName: \"shortOffset\" })),\n zz: () => stripTimeZone(date.toLocaleDateString(toValue$1(options.locales), { timeZoneName: \"shortOffset\" })),\n zzz: () => stripTimeZone(date.toLocaleDateString(toValue$1(options.locales), { timeZoneName: \"shortOffset\" })),\n zzzz: () => stripTimeZone(date.toLocaleDateString(toValue$1(options.locales), { timeZoneName: \"longOffset\" }))\n };\n return formatStr.replace(REGEX_FORMAT, (match, $1) => {\n var _a2, _b;\n return (_b = $1 != null ? $1 : (_a2 = matches[match]) == null ? void 0 : _a2.call(matches)) != null ? _b : match;\n });\n}\nfunction normalizeDate(date) {\n if (date === null)\n return new Date(Number.NaN);\n if (date === void 0)\n return /* @__PURE__ */ new Date();\n if (date instanceof Date)\n return new Date(date);\n if (typeof date === \"string\" && !/Z$/i.test(date)) {\n const d = date.match(REGEX_PARSE);\n if (d) {\n const m = d[2] - 1 || 0;\n const ms = (d[7] || \"0\").substring(0, 3);\n return new Date(d[1], m, d[3] || 1, d[4] || 0, d[5] || 0, d[6] || 0, ms);\n }\n }\n return new Date(date);\n}\nfunction useDateFormat(date, formatStr = \"HH:mm:ss\", options = {}) {\n return computed(() => formatDate(normalizeDate(toValue$1(date)), toValue$1(formatStr), options));\n}\n\nfunction useIntervalFn(cb, interval = 1e3, options = {}) {\n const {\n immediate = true,\n immediateCallback = false\n } = options;\n let timer = null;\n const isActive = shallowRef(false);\n function clean() {\n if (timer) {\n clearInterval(timer);\n timer = null;\n }\n }\n function pause() {\n isActive.value = false;\n clean();\n }\n function resume() {\n const intervalValue = toValue$1(interval);\n if (intervalValue <= 0)\n return;\n isActive.value = true;\n if (immediateCallback)\n cb();\n clean();\n if (isActive.value)\n timer = setInterval(cb, intervalValue);\n }\n if (immediate && isClient)\n resume();\n if (isRef(interval) || typeof interval === \"function\") {\n const stopWatch = watch(interval, () => {\n if (isActive.value && isClient)\n resume();\n });\n tryOnScopeDispose(stopWatch);\n }\n tryOnScopeDispose(pause);\n return {\n isActive,\n pause,\n resume\n };\n}\n\nfunction useInterval(interval = 1e3, options = {}) {\n const {\n controls: exposeControls = false,\n immediate = true,\n callback\n } = options;\n const counter = shallowRef(0);\n const update = () => counter.value += 1;\n const reset = () => {\n counter.value = 0;\n };\n const controls = useIntervalFn(\n callback ? () => {\n update();\n callback(counter.value);\n } : update,\n interval,\n { immediate }\n );\n if (exposeControls) {\n return {\n counter,\n reset,\n ...controls\n };\n } else {\n return counter;\n }\n}\n\nfunction useLastChanged(source, options = {}) {\n var _a;\n const ms = shallowRef((_a = options.initialValue) != null ? _a : null);\n watch(\n source,\n () => ms.value = timestamp(),\n options\n );\n return ms;\n}\n\nfunction useTimeoutFn(cb, interval, options = {}) {\n const {\n immediate = true,\n immediateCallback = false\n } = options;\n const isPending = shallowRef(false);\n let timer = null;\n function clear() {\n if (timer) {\n clearTimeout(timer);\n timer = null;\n }\n }\n function stop() {\n isPending.value = false;\n clear();\n }\n function start(...args) {\n if (immediateCallback)\n cb();\n clear();\n isPending.value = true;\n timer = setTimeout(() => {\n isPending.value = false;\n timer = null;\n cb(...args);\n }, toValue$1(interval));\n }\n if (immediate) {\n isPending.value = true;\n if (isClient)\n start();\n }\n tryOnScopeDispose(stop);\n return {\n isPending: readonly(isPending),\n start,\n stop\n };\n}\n\nfunction useTimeout(interval = 1e3, options = {}) {\n const {\n controls: exposeControls = false,\n callback\n } = options;\n const controls = useTimeoutFn(\n callback != null ? callback : noop,\n interval,\n options\n );\n const ready = computed(() => !controls.isPending.value);\n if (exposeControls) {\n return {\n ready,\n ...controls\n };\n } else {\n return ready;\n }\n}\n\nfunction useToNumber(value, options = {}) {\n const {\n method = \"parseFloat\",\n radix,\n nanToZero\n } = options;\n return computed(() => {\n let resolved = toValue$1(value);\n if (typeof method === \"function\")\n resolved = method(resolved);\n else if (typeof resolved === \"string\")\n resolved = Number[method](resolved, radix);\n if (nanToZero && Number.isNaN(resolved))\n resolved = 0;\n return resolved;\n });\n}\n\nfunction useToString(value) {\n return computed(() => `${toValue$1(value)}`);\n}\n\nfunction useToggle(initialValue = false, options = {}) {\n const {\n truthyValue = true,\n falsyValue = false\n } = options;\n const valueIsRef = isRef(initialValue);\n const _value = shallowRef(initialValue);\n function toggle(value) {\n if (arguments.length) {\n _value.value = value;\n return _value.value;\n } else {\n const truthy = toValue$1(truthyValue);\n _value.value = _value.value === truthy ? toValue$1(falsyValue) : truthy;\n return _value.value;\n }\n }\n if (valueIsRef)\n return toggle;\n else\n return [_value, toggle];\n}\n\nfunction watchArray(source, cb, options) {\n let oldList = (options == null ? void 0 : options.immediate) ? [] : [...typeof source === \"function\" ? source() : Array.isArray(source) ? source : toValue$1(source)];\n return watch(source, (newList, _, onCleanup) => {\n const oldListRemains = Array.from({ length: oldList.length });\n const added = [];\n for (const obj of newList) {\n let found = false;\n for (let i = 0; i < oldList.length; i++) {\n if (!oldListRemains[i] && obj === oldList[i]) {\n oldListRemains[i] = true;\n found = true;\n break;\n }\n }\n if (!found)\n added.push(obj);\n }\n const removed = oldList.filter((_2, i) => !oldListRemains[i]);\n cb(newList, oldList, added, removed, onCleanup);\n oldList = [...newList];\n }, options);\n}\n\nfunction watchAtMost(source, cb, options) {\n const {\n count,\n ...watchOptions\n } = options;\n const current = shallowRef(0);\n const stop = watchWithFilter(\n source,\n (...args) => {\n current.value += 1;\n if (current.value >= toValue$1(count))\n nextTick(() => stop());\n cb(...args);\n },\n watchOptions\n );\n return { count: current, stop };\n}\n\nfunction watchDebounced(source, cb, options = {}) {\n const {\n debounce = 0,\n maxWait = void 0,\n ...watchOptions\n } = options;\n return watchWithFilter(\n source,\n cb,\n {\n ...watchOptions,\n eventFilter: debounceFilter(debounce, { maxWait })\n }\n );\n}\n\nfunction watchDeep(source, cb, options) {\n return watch(\n source,\n cb,\n {\n ...options,\n deep: true\n }\n );\n}\n\nfunction watchIgnorable(source, cb, options = {}) {\n const {\n eventFilter = bypassFilter,\n ...watchOptions\n } = options;\n const filteredCb = createFilterWrapper(\n eventFilter,\n cb\n );\n let ignoreUpdates;\n let ignorePrevAsyncUpdates;\n let stop;\n if (watchOptions.flush === \"sync\") {\n const ignore = shallowRef(false);\n ignorePrevAsyncUpdates = () => {\n };\n ignoreUpdates = (updater) => {\n ignore.value = true;\n updater();\n ignore.value = false;\n };\n stop = watch(\n source,\n (...args) => {\n if (!ignore.value)\n filteredCb(...args);\n },\n watchOptions\n );\n } else {\n const disposables = [];\n const ignoreCounter = shallowRef(0);\n const syncCounter = shallowRef(0);\n ignorePrevAsyncUpdates = () => {\n ignoreCounter.value = syncCounter.value;\n };\n disposables.push(\n watch(\n source,\n () => {\n syncCounter.value++;\n },\n { ...watchOptions, flush: \"sync\" }\n )\n );\n ignoreUpdates = (updater) => {\n const syncCounterPrev = syncCounter.value;\n updater();\n ignoreCounter.value += syncCounter.value - syncCounterPrev;\n };\n disposables.push(\n watch(\n source,\n (...args) => {\n const ignore = ignoreCounter.value > 0 && ignoreCounter.value === syncCounter.value;\n ignoreCounter.value = 0;\n syncCounter.value = 0;\n if (ignore)\n return;\n filteredCb(...args);\n },\n watchOptions\n )\n );\n stop = () => {\n disposables.forEach((fn) => fn());\n };\n }\n return { stop, ignoreUpdates, ignorePrevAsyncUpdates };\n}\n\nfunction watchImmediate(source, cb, options) {\n return watch(\n source,\n cb,\n {\n ...options,\n immediate: true\n }\n );\n}\n\nfunction watchOnce(source, cb, options) {\n const stop = watch(source, (...args) => {\n nextTick(() => stop());\n return cb(...args);\n }, options);\n return stop;\n}\n\nfunction watchThrottled(source, cb, options = {}) {\n const {\n throttle = 0,\n trailing = true,\n leading = true,\n ...watchOptions\n } = options;\n return watchWithFilter(\n source,\n cb,\n {\n ...watchOptions,\n eventFilter: throttleFilter(throttle, trailing, leading)\n }\n );\n}\n\nfunction watchTriggerable(source, cb, options = {}) {\n let cleanupFn;\n function onEffect() {\n if (!cleanupFn)\n return;\n const fn = cleanupFn;\n cleanupFn = void 0;\n fn();\n }\n function onCleanup(callback) {\n cleanupFn = callback;\n }\n const _cb = (value, oldValue) => {\n onEffect();\n return cb(value, oldValue, onCleanup);\n };\n const res = watchIgnorable(source, _cb, options);\n const { ignoreUpdates } = res;\n const trigger = () => {\n let res2;\n ignoreUpdates(() => {\n res2 = _cb(getWatchSources(source), getOldValue(source));\n });\n return res2;\n };\n return {\n ...res,\n trigger\n };\n}\nfunction getWatchSources(sources) {\n if (isReactive(sources))\n return sources;\n if (Array.isArray(sources))\n return sources.map((item) => toValue$1(item));\n return toValue$1(sources);\n}\nfunction getOldValue(source) {\n return Array.isArray(source) ? source.map(() => void 0) : void 0;\n}\n\nfunction whenever(source, cb, options) {\n const stop = watch(\n source,\n (v, ov, onInvalidate) => {\n if (v) {\n if (options == null ? void 0 : options.once)\n nextTick(() => stop());\n cb(v, ov, onInvalidate);\n }\n },\n {\n ...options,\n once: false\n }\n );\n return stop;\n}\n\nexport { assert, refAutoReset as autoResetRef, bypassFilter, camelize, clamp, computedEager, computedWithControl, containsProp, computedWithControl as controlledComputed, controlledRef, createEventHook, createFilterWrapper, createGlobalState, createInjectionState, reactify as createReactiveFn, createRef, createSharedComposable, createSingletonPromise, debounceFilter, refDebounced as debouncedRef, watchDebounced as debouncedWatch, computedEager as eagerComputed, extendRef, formatDate, get, getLifeCycleTarget, hasOwn, hyphenate, identity, watchIgnorable as ignorableWatch, increaseWithUnit, injectLocal, invoke, isClient, isDef, isDefined, isIOS, isObject, isWorker, makeDestructurable, noop, normalizeDate, notNullish, now, objectEntries, objectOmit, objectPick, pausableFilter, watchPausable as pausableWatch, promiseTimeout, provideLocal, pxValue, rand, reactify, reactifyObject, reactiveComputed, reactiveOmit, reactivePick, refAutoReset, refDebounced, refDefault, refThrottled, refWithControl, resolveRef, resolveUnref, set, syncRef, syncRefs, throttleFilter, refThrottled as throttledRef, watchThrottled as throttledWatch, timestamp, toArray, toReactive, toRef, toRefs, toValue, tryOnBeforeMount, tryOnBeforeUnmount, tryOnMounted, tryOnScopeDispose, tryOnUnmounted, until, useArrayDifference, useArrayEvery, useArrayFilter, useArrayFind, useArrayFindIndex, useArrayFindLast, useArrayIncludes, useArrayJoin, useArrayMap, useArrayReduce, useArraySome, useArrayUnique, useCounter, useDateFormat, refDebounced as useDebounce, useDebounceFn, useInterval, useIntervalFn, useLastChanged, refThrottled as useThrottle, useThrottleFn, useTimeout, useTimeoutFn, useToNumber, useToString, useToggle, watchArray, watchAtMost, watchDebounced, watchDeep, watchIgnorable, watchImmediate, watchOnce, watchPausable, watchThrottled, watchTriggerable, watchWithFilter, whenever };\n","import { noop, makeDestructurable, camelize, isClient, toArray, watchImmediate, isObject, tryOnScopeDispose, isIOS, notNullish, tryOnMounted, objectOmit, promiseTimeout, until, injectLocal, provideLocal, pxValue, increaseWithUnit, objectEntries, createRef, createSingletonPromise, useTimeoutFn, pausableWatch, toRef, createEventHook, useIntervalFn, computedWithControl, timestamp, pausableFilter, watchIgnorable, debounceFilter, bypassFilter, createFilterWrapper, toRefs, watchOnce, containsProp, hasOwn, throttleFilter, useDebounceFn, useThrottleFn, tryOnUnmounted, clamp, syncRef, objectPick, watchWithFilter, identity, isDef, whenever, isWorker } from '@vueuse/shared';\nexport * from '@vueuse/shared';\nimport { isRef, shallowRef, ref, watchEffect, computed, inject, defineComponent, h, TransitionGroup, shallowReactive, Fragment, toValue, unref, getCurrentInstance, onMounted, watch, customRef, onUpdated, readonly, reactive, hasInjectionContext, toRaw, nextTick, markRaw, getCurrentScope, isReadonly, onBeforeUpdate } from 'vue';\n\nfunction computedAsync(evaluationCallback, initialState, optionsOrRef) {\n let options;\n if (isRef(optionsOrRef)) {\n options = {\n evaluating: optionsOrRef\n };\n } else {\n options = optionsOrRef || {};\n }\n const {\n lazy = false,\n evaluating = void 0,\n shallow = true,\n onError = noop\n } = options;\n const started = shallowRef(!lazy);\n const current = shallow ? shallowRef(initialState) : ref(initialState);\n let counter = 0;\n watchEffect(async (onInvalidate) => {\n if (!started.value)\n return;\n counter++;\n const counterAtBeginning = counter;\n let hasFinished = false;\n if (evaluating) {\n Promise.resolve().then(() => {\n evaluating.value = true;\n });\n }\n try {\n const result = await evaluationCallback((cancelCallback) => {\n onInvalidate(() => {\n if (evaluating)\n evaluating.value = false;\n if (!hasFinished)\n cancelCallback();\n });\n });\n if (counterAtBeginning === counter)\n current.value = result;\n } catch (e) {\n onError(e);\n } finally {\n if (evaluating && counterAtBeginning === counter)\n evaluating.value = false;\n hasFinished = true;\n }\n });\n if (lazy) {\n return computed(() => {\n started.value = true;\n return current.value;\n });\n } else {\n return current;\n }\n}\n\nfunction computedInject(key, options, defaultSource, treatDefaultAsFactory) {\n let source = inject(key);\n if (defaultSource)\n source = inject(key, defaultSource);\n if (treatDefaultAsFactory)\n source = inject(key, defaultSource, treatDefaultAsFactory);\n if (typeof options === \"function\") {\n return computed((ctx) => options(source, ctx));\n } else {\n return computed({\n get: (ctx) => options.get(source, ctx),\n set: options.set\n });\n }\n}\n\nfunction createReusableTemplate(options = {}) {\n const {\n inheritAttrs = true\n } = options;\n const render = shallowRef();\n const define = /*@__PURE__*/ defineComponent({\n setup(_, { slots }) {\n return () => {\n render.value = slots.default;\n };\n }\n });\n const reuse = /*@__PURE__*/ defineComponent({\n inheritAttrs,\n props: options.props,\n setup(props, { attrs, slots }) {\n return () => {\n var _a;\n if (!render.value && process.env.NODE_ENV !== \"production\")\n throw new Error(\"[VueUse] Failed to find the definition of reusable template\");\n const vnode = (_a = render.value) == null ? void 0 : _a.call(render, {\n ...options.props == null ? keysToCamelKebabCase(attrs) : props,\n $slots: slots\n });\n return inheritAttrs && (vnode == null ? void 0 : vnode.length) === 1 ? vnode[0] : vnode;\n };\n }\n });\n return makeDestructurable(\n { define, reuse },\n [define, reuse]\n );\n}\nfunction keysToCamelKebabCase(obj) {\n const newObj = {};\n for (const key in obj)\n newObj[camelize(key)] = obj[key];\n return newObj;\n}\n\nfunction createTemplatePromise(options = {}) {\n let index = 0;\n const instances = ref([]);\n function create(...args) {\n const props = shallowReactive({\n key: index++,\n args,\n promise: void 0,\n resolve: () => {\n },\n reject: () => {\n },\n isResolving: false,\n options\n });\n instances.value.push(props);\n props.promise = new Promise((_resolve, _reject) => {\n props.resolve = (v) => {\n props.isResolving = true;\n return _resolve(v);\n };\n props.reject = _reject;\n }).finally(() => {\n props.promise = void 0;\n const index2 = instances.value.indexOf(props);\n if (index2 !== -1)\n instances.value.splice(index2, 1);\n });\n return props.promise;\n }\n function start(...args) {\n if (options.singleton && instances.value.length > 0)\n return instances.value[0].promise;\n return create(...args);\n }\n const component = /*@__PURE__*/ defineComponent((_, { slots }) => {\n const renderList = () => instances.value.map((props) => {\n var _a;\n return h(Fragment, { key: props.key }, (_a = slots.default) == null ? void 0 : _a.call(slots, props));\n });\n if (options.transition)\n return () => h(TransitionGroup, options.transition, renderList);\n return renderList;\n });\n component.start = start;\n return component;\n}\n\nfunction createUnrefFn(fn) {\n return function(...args) {\n return fn.apply(this, args.map((i) => toValue(i)));\n };\n}\n\nconst defaultWindow = isClient ? window : void 0;\nconst defaultDocument = isClient ? window.document : void 0;\nconst defaultNavigator = isClient ? window.navigator : void 0;\nconst defaultLocation = isClient ? window.location : void 0;\n\nfunction unrefElement(elRef) {\n var _a;\n const plain = toValue(elRef);\n return (_a = plain == null ? void 0 : plain.$el) != null ? _a : plain;\n}\n\nfunction useEventListener(...args) {\n const cleanups = [];\n const cleanup = () => {\n cleanups.forEach((fn) => fn());\n cleanups.length = 0;\n };\n const register = (el, event, listener, options) => {\n el.addEventListener(event, listener, options);\n return () => el.removeEventListener(event, listener, options);\n };\n const firstParamTargets = computed(() => {\n const test = toArray(toValue(args[0])).filter((e) => e != null);\n return test.every((e) => typeof e !== \"string\") ? test : void 0;\n });\n const stopWatch = watchImmediate(\n () => {\n var _a, _b;\n return [\n (_b = (_a = firstParamTargets.value) == null ? void 0 : _a.map((e) => unrefElement(e))) != null ? _b : [defaultWindow].filter((e) => e != null),\n toArray(toValue(firstParamTargets.value ? args[1] : args[0])),\n toArray(unref(firstParamTargets.value ? args[2] : args[1])),\n // @ts-expect-error - TypeScript gets the correct types, but somehow still complains\n toValue(firstParamTargets.value ? args[3] : args[2])\n ];\n },\n ([raw_targets, raw_events, raw_listeners, raw_options]) => {\n cleanup();\n if (!(raw_targets == null ? void 0 : raw_targets.length) || !(raw_events == null ? void 0 : raw_events.length) || !(raw_listeners == null ? void 0 : raw_listeners.length))\n return;\n const optionsClone = isObject(raw_options) ? { ...raw_options } : raw_options;\n cleanups.push(\n ...raw_targets.flatMap(\n (el) => raw_events.flatMap(\n (event) => raw_listeners.map((listener) => register(el, event, listener, optionsClone))\n )\n )\n );\n },\n { flush: \"post\" }\n );\n const stop = () => {\n stopWatch();\n cleanup();\n };\n tryOnScopeDispose(cleanup);\n return stop;\n}\n\nlet _iOSWorkaround = false;\nfunction onClickOutside(target, handler, options = {}) {\n const { window = defaultWindow, ignore = [], capture = true, detectIframe = false, controls = false } = options;\n if (!window) {\n return controls ? { stop: noop, cancel: noop, trigger: noop } : noop;\n }\n if (isIOS && !_iOSWorkaround) {\n _iOSWorkaround = true;\n const listenerOptions = { passive: true };\n Array.from(window.document.body.children).forEach((el) => useEventListener(el, \"click\", noop, listenerOptions));\n useEventListener(window.document.documentElement, \"click\", noop, listenerOptions);\n }\n let shouldListen = true;\n const shouldIgnore = (event) => {\n return toValue(ignore).some((target2) => {\n if (typeof target2 === \"string\") {\n return Array.from(window.document.querySelectorAll(target2)).some((el) => el === event.target || event.composedPath().includes(el));\n } else {\n const el = unrefElement(target2);\n return el && (event.target === el || event.composedPath().includes(el));\n }\n });\n };\n function hasMultipleRoots(target2) {\n const vm = toValue(target2);\n return vm && vm.$.subTree.shapeFlag === 16;\n }\n function checkMultipleRoots(target2, event) {\n const vm = toValue(target2);\n const children = vm.$.subTree && vm.$.subTree.children;\n if (children == null || !Array.isArray(children))\n return false;\n return children.some((child) => child.el === event.target || event.composedPath().includes(child.el));\n }\n const listener = (event) => {\n const el = unrefElement(target);\n if (event.target == null)\n return;\n if (!(el instanceof Element) && hasMultipleRoots(target) && checkMultipleRoots(target, event))\n return;\n if (!el || el === event.target || event.composedPath().includes(el))\n return;\n if (\"detail\" in event && event.detail === 0)\n shouldListen = !shouldIgnore(event);\n if (!shouldListen) {\n shouldListen = true;\n return;\n }\n handler(event);\n };\n let isProcessingClick = false;\n const cleanup = [\n useEventListener(window, \"click\", (event) => {\n if (!isProcessingClick) {\n isProcessingClick = true;\n setTimeout(() => {\n isProcessingClick = false;\n }, 0);\n listener(event);\n }\n }, { passive: true, capture }),\n useEventListener(window, \"pointerdown\", (e) => {\n const el = unrefElement(target);\n shouldListen = !shouldIgnore(e) && !!(el && !e.composedPath().includes(el));\n }, { passive: true }),\n detectIframe && useEventListener(window, \"blur\", (event) => {\n setTimeout(() => {\n var _a;\n const el = unrefElement(target);\n if (((_a = window.document.activeElement) == null ? void 0 : _a.tagName) === \"IFRAME\" && !(el == null ? void 0 : el.contains(window.document.activeElement))) {\n handler(event);\n }\n }, 0);\n }, { passive: true })\n ].filter(Boolean);\n const stop = () => cleanup.forEach((fn) => fn());\n if (controls) {\n return {\n stop,\n cancel: () => {\n shouldListen = false;\n },\n trigger: (event) => {\n shouldListen = true;\n listener(event);\n shouldListen = false;\n }\n };\n }\n return stop;\n}\n\nfunction useMounted() {\n const isMounted = shallowRef(false);\n const instance = getCurrentInstance();\n if (instance) {\n onMounted(() => {\n isMounted.value = true;\n }, instance);\n }\n return isMounted;\n}\n\nfunction useSupported(callback) {\n const isMounted = useMounted();\n return computed(() => {\n isMounted.value;\n return Boolean(callback());\n });\n}\n\nfunction useMutationObserver(target, callback, options = {}) {\n const { window = defaultWindow, ...mutationOptions } = options;\n let observer;\n const isSupported = useSupported(() => window && \"MutationObserver\" in window);\n const cleanup = () => {\n if (observer) {\n observer.disconnect();\n observer = void 0;\n }\n };\n const targets = computed(() => {\n const value = toValue(target);\n const items = toArray(value).map(unrefElement).filter(notNullish);\n return new Set(items);\n });\n const stopWatch = watch(\n () => targets.value,\n (targets2) => {\n cleanup();\n if (isSupported.value && targets2.size) {\n observer = new MutationObserver(callback);\n targets2.forEach((el) => observer.observe(el, mutationOptions));\n }\n },\n { immediate: true, flush: \"post\" }\n );\n const takeRecords = () => {\n return observer == null ? void 0 : observer.takeRecords();\n };\n const stop = () => {\n stopWatch();\n cleanup();\n };\n tryOnScopeDispose(stop);\n return {\n isSupported,\n stop,\n takeRecords\n };\n}\n\nfunction onElementRemoval(target, callback, options = {}) {\n const {\n window = defaultWindow,\n document = window == null ? void 0 : window.document,\n flush = \"sync\"\n } = options;\n if (!window || !document)\n return noop;\n let stopFn;\n const cleanupAndUpdate = (fn) => {\n stopFn == null ? void 0 : stopFn();\n stopFn = fn;\n };\n const stopWatch = watchEffect(() => {\n const el = unrefElement(target);\n if (el) {\n const { stop } = useMutationObserver(\n document,\n (mutationsList) => {\n const targetRemoved = mutationsList.map((mutation) => [...mutation.removedNodes]).flat().some((node) => node === el || node.contains(el));\n if (targetRemoved) {\n callback(mutationsList);\n }\n },\n {\n window,\n childList: true,\n subtree: true\n }\n );\n cleanupAndUpdate(stop);\n }\n }, { flush });\n const stopHandle = () => {\n stopWatch();\n cleanupAndUpdate();\n };\n tryOnScopeDispose(stopHandle);\n return stopHandle;\n}\n\nfunction createKeyPredicate(keyFilter) {\n if (typeof keyFilter === \"function\")\n return keyFilter;\n else if (typeof keyFilter === \"string\")\n return (event) => event.key === keyFilter;\n else if (Array.isArray(keyFilter))\n return (event) => keyFilter.includes(event.key);\n return () => true;\n}\nfunction onKeyStroke(...args) {\n let key;\n let handler;\n let options = {};\n if (args.length === 3) {\n key = args[0];\n handler = args[1];\n options = args[2];\n } else if (args.length === 2) {\n if (typeof args[1] === \"object\") {\n key = true;\n handler = args[0];\n options = args[1];\n } else {\n key = args[0];\n handler = args[1];\n }\n } else {\n key = true;\n handler = args[0];\n }\n const {\n target = defaultWindow,\n eventName = \"keydown\",\n passive = false,\n dedupe = false\n } = options;\n const predicate = createKeyPredicate(key);\n const listener = (e) => {\n if (e.repeat && toValue(dedupe))\n return;\n if (predicate(e))\n handler(e);\n };\n return useEventListener(target, eventName, listener, passive);\n}\nfunction onKeyDown(key, handler, options = {}) {\n return onKeyStroke(key, handler, { ...options, eventName: \"keydown\" });\n}\nfunction onKeyPressed(key, handler, options = {}) {\n return onKeyStroke(key, handler, { ...options, eventName: \"keypress\" });\n}\nfunction onKeyUp(key, handler, options = {}) {\n return onKeyStroke(key, handler, { ...options, eventName: \"keyup\" });\n}\n\nconst DEFAULT_DELAY = 500;\nconst DEFAULT_THRESHOLD = 10;\nfunction onLongPress(target, handler, options) {\n var _a, _b;\n const elementRef = computed(() => unrefElement(target));\n let timeout;\n let posStart;\n let startTimestamp;\n let hasLongPressed = false;\n function clear() {\n if (timeout) {\n clearTimeout(timeout);\n timeout = void 0;\n }\n posStart = void 0;\n startTimestamp = void 0;\n hasLongPressed = false;\n }\n function onRelease(ev) {\n var _a2, _b2, _c;\n const [_startTimestamp, _posStart, _hasLongPressed] = [startTimestamp, posStart, hasLongPressed];\n clear();\n if (!(options == null ? void 0 : options.onMouseUp) || !_posStart || !_startTimestamp)\n return;\n if (((_a2 = options == null ? void 0 : options.modifiers) == null ? void 0 : _a2.self) && ev.target !== elementRef.value)\n return;\n if ((_b2 = options == null ? void 0 : options.modifiers) == null ? void 0 : _b2.prevent)\n ev.preventDefault();\n if ((_c = options == null ? void 0 : options.modifiers) == null ? void 0 : _c.stop)\n ev.stopPropagation();\n const dx = ev.x - _posStart.x;\n const dy = ev.y - _posStart.y;\n const distance = Math.sqrt(dx * dx + dy * dy);\n options.onMouseUp(ev.timeStamp - _startTimestamp, distance, _hasLongPressed);\n }\n function onDown(ev) {\n var _a2, _b2, _c, _d;\n if (((_a2 = options == null ? void 0 : options.modifiers) == null ? void 0 : _a2.self) && ev.target !== elementRef.value)\n return;\n clear();\n if ((_b2 = options == null ? void 0 : options.modifiers) == null ? void 0 : _b2.prevent)\n ev.preventDefault();\n if ((_c = options == null ? void 0 : options.modifiers) == null ? void 0 : _c.stop)\n ev.stopPropagation();\n posStart = {\n x: ev.x,\n y: ev.y\n };\n startTimestamp = ev.timeStamp;\n timeout = setTimeout(\n () => {\n hasLongPressed = true;\n handler(ev);\n },\n (_d = options == null ? void 0 : options.delay) != null ? _d : DEFAULT_DELAY\n );\n }\n function onMove(ev) {\n var _a2, _b2, _c, _d;\n if (((_a2 = options == null ? void 0 : options.modifiers) == null ? void 0 : _a2.self) && ev.target !== elementRef.value)\n return;\n if (!posStart || (options == null ? void 0 : options.distanceThreshold) === false)\n return;\n if ((_b2 = options == null ? void 0 : options.modifiers) == null ? void 0 : _b2.prevent)\n ev.preventDefault();\n if ((_c = options == null ? void 0 : options.modifiers) == null ? void 0 : _c.stop)\n ev.stopPropagation();\n const dx = ev.x - posStart.x;\n const dy = ev.y - posStart.y;\n const distance = Math.sqrt(dx * dx + dy * dy);\n if (distance >= ((_d = options == null ? void 0 : options.distanceThreshold) != null ? _d : DEFAULT_THRESHOLD))\n clear();\n }\n const listenerOptions = {\n capture: (_a = options == null ? void 0 : options.modifiers) == null ? void 0 : _a.capture,\n once: (_b = options == null ? void 0 : options.modifiers) == null ? void 0 : _b.once\n };\n const cleanup = [\n useEventListener(elementRef, \"pointerdown\", onDown, listenerOptions),\n useEventListener(elementRef, \"pointermove\", onMove, listenerOptions),\n useEventListener(elementRef, [\"pointerup\", \"pointerleave\"], onRelease, listenerOptions)\n ];\n const stop = () => cleanup.forEach((fn) => fn());\n return stop;\n}\n\nfunction isFocusedElementEditable() {\n const { activeElement, body } = document;\n if (!activeElement)\n return false;\n if (activeElement === body)\n return false;\n switch (activeElement.tagName) {\n case \"INPUT\":\n case \"TEXTAREA\":\n return true;\n }\n return activeElement.hasAttribute(\"contenteditable\");\n}\nfunction isTypedCharValid({\n keyCode,\n metaKey,\n ctrlKey,\n altKey\n}) {\n if (metaKey || ctrlKey || altKey)\n return false;\n if (keyCode >= 48 && keyCode <= 57 || keyCode >= 96 && keyCode <= 105)\n return true;\n if (keyCode >= 65 && keyCode <= 90)\n return true;\n return false;\n}\nfunction onStartTyping(callback, options = {}) {\n const { document: document2 = defaultDocument } = options;\n const keydown = (event) => {\n if (!isFocusedElementEditable() && isTypedCharValid(event)) {\n callback(event);\n }\n };\n if (document2)\n useEventListener(document2, \"keydown\", keydown, { passive: true });\n}\n\nfunction templateRef(key, initialValue = null) {\n const instance = getCurrentInstance();\n let _trigger = () => {\n };\n const element = customRef((track, trigger) => {\n _trigger = trigger;\n return {\n get() {\n var _a, _b;\n track();\n return (_b = (_a = instance == null ? void 0 : instance.proxy) == null ? void 0 : _a.$refs[key]) != null ? _b : initialValue;\n },\n set() {\n }\n };\n });\n tryOnMounted(_trigger);\n onUpdated(_trigger);\n return element;\n}\n\nfunction useActiveElement(options = {}) {\n var _a;\n const {\n window = defaultWindow,\n deep = true,\n triggerOnRemoval = false\n } = options;\n const document = (_a = options.document) != null ? _a : window == null ? void 0 : window.document;\n const getDeepActiveElement = () => {\n var _a2;\n let element = document == null ? void 0 : document.activeElement;\n if (deep) {\n while (element == null ? void 0 : element.shadowRoot)\n element = (_a2 = element == null ? void 0 : element.shadowRoot) == null ? void 0 : _a2.activeElement;\n }\n return element;\n };\n const activeElement = shallowRef();\n const trigger = () => {\n activeElement.value = getDeepActiveElement();\n };\n if (window) {\n const listenerOptions = {\n capture: true,\n passive: true\n };\n useEventListener(\n window,\n \"blur\",\n (event) => {\n if (event.relatedTarget !== null)\n return;\n trigger();\n },\n listenerOptions\n );\n useEventListener(\n window,\n \"focus\",\n trigger,\n listenerOptions\n );\n }\n if (triggerOnRemoval) {\n onElementRemoval(activeElement, trigger, { document });\n }\n trigger();\n return activeElement;\n}\n\nfunction useRafFn(fn, options = {}) {\n const {\n immediate = true,\n fpsLimit = void 0,\n window = defaultWindow,\n once = false\n } = options;\n const isActive = shallowRef(false);\n const intervalLimit = computed(() => {\n return fpsLimit ? 1e3 / toValue(fpsLimit) : null;\n });\n let previousFrameTimestamp = 0;\n let rafId = null;\n function loop(timestamp) {\n if (!isActive.value || !window)\n return;\n if (!previousFrameTimestamp)\n previousFrameTimestamp = timestamp;\n const delta = timestamp - previousFrameTimestamp;\n if (intervalLimit.value && delta < intervalLimit.value) {\n rafId = window.requestAnimationFrame(loop);\n return;\n }\n previousFrameTimestamp = timestamp;\n fn({ delta, timestamp });\n if (once) {\n isActive.value = false;\n rafId = null;\n return;\n }\n rafId = window.requestAnimationFrame(loop);\n }\n function resume() {\n if (!isActive.value && window) {\n isActive.value = true;\n previousFrameTimestamp = 0;\n rafId = window.requestAnimationFrame(loop);\n }\n }\n function pause() {\n isActive.value = false;\n if (rafId != null && window) {\n window.cancelAnimationFrame(rafId);\n rafId = null;\n }\n }\n if (immediate)\n resume();\n tryOnScopeDispose(pause);\n return {\n isActive: readonly(isActive),\n pause,\n resume\n };\n}\n\nfunction useAnimate(target, keyframes, options) {\n let config;\n let animateOptions;\n if (isObject(options)) {\n config = options;\n animateOptions = objectOmit(options, [\"window\", \"immediate\", \"commitStyles\", \"persist\", \"onReady\", \"onError\"]);\n } else {\n config = { duration: options };\n animateOptions = options;\n }\n const {\n window = defaultWindow,\n immediate = true,\n commitStyles,\n persist,\n playbackRate: _playbackRate = 1,\n onReady,\n onError = (e) => {\n console.error(e);\n }\n } = config;\n const isSupported = useSupported(() => window && HTMLElement && \"animate\" in HTMLElement.prototype);\n const animate = shallowRef(void 0);\n const store = shallowReactive({\n startTime: null,\n currentTime: null,\n timeline: null,\n playbackRate: _playbackRate,\n pending: false,\n playState: immediate ? \"idle\" : \"paused\",\n replaceState: \"active\"\n });\n const pending = computed(() => store.pending);\n const playState = computed(() => store.playState);\n const replaceState = computed(() => store.replaceState);\n const startTime = computed({\n get() {\n return store.startTime;\n },\n set(value) {\n store.startTime = value;\n if (animate.value)\n animate.value.startTime = value;\n }\n });\n const currentTime = computed({\n get() {\n return store.currentTime;\n },\n set(value) {\n store.currentTime = value;\n if (animate.value) {\n animate.value.currentTime = value;\n syncResume();\n }\n }\n });\n const timeline = computed({\n get() {\n return store.timeline;\n },\n set(value) {\n store.timeline = value;\n if (animate.value)\n animate.value.timeline = value;\n }\n });\n const playbackRate = computed({\n get() {\n return store.playbackRate;\n },\n set(value) {\n store.playbackRate = value;\n if (animate.value)\n animate.value.playbackRate = value;\n }\n });\n const play = () => {\n if (animate.value) {\n try {\n animate.value.play();\n syncResume();\n } catch (e) {\n syncPause();\n onError(e);\n }\n } else {\n update();\n }\n };\n const pause = () => {\n var _a;\n try {\n (_a = animate.value) == null ? void 0 : _a.pause();\n syncPause();\n } catch (e) {\n onError(e);\n }\n };\n const reverse = () => {\n var _a;\n if (!animate.value)\n update();\n try {\n (_a = animate.value) == null ? void 0 : _a.reverse();\n syncResume();\n } catch (e) {\n syncPause();\n onError(e);\n }\n };\n const finish = () => {\n var _a;\n try {\n (_a = animate.value) == null ? void 0 : _a.finish();\n syncPause();\n } catch (e) {\n onError(e);\n }\n };\n const cancel = () => {\n var _a;\n try {\n (_a = animate.value) == null ? void 0 : _a.cancel();\n syncPause();\n } catch (e) {\n onError(e);\n }\n };\n watch(() => unrefElement(target), (el) => {\n if (el) {\n update();\n } else {\n animate.value = void 0;\n }\n });\n watch(() => keyframes, (value) => {\n if (animate.value) {\n update();\n const targetEl = unrefElement(target);\n if (targetEl) {\n animate.value.effect = new KeyframeEffect(\n targetEl,\n toValue(value),\n animateOptions\n );\n }\n }\n }, { deep: true });\n tryOnMounted(() => update(true), false);\n tryOnScopeDispose(cancel);\n function update(init) {\n const el = unrefElement(target);\n if (!isSupported.value || !el)\n return;\n if (!animate.value)\n animate.value = el.animate(toValue(keyframes), animateOptions);\n if (persist)\n animate.value.persist();\n if (_playbackRate !== 1)\n animate.value.playbackRate = _playbackRate;\n if (init && !immediate)\n animate.value.pause();\n else\n syncResume();\n onReady == null ? void 0 : onReady(animate.value);\n }\n const listenerOptions = { passive: true };\n useEventListener(animate, [\"cancel\", \"finish\", \"remove\"], syncPause, listenerOptions);\n useEventListener(animate, \"finish\", () => {\n var _a;\n if (commitStyles)\n (_a = animate.value) == null ? void 0 : _a.commitStyles();\n }, listenerOptions);\n const { resume: resumeRef, pause: pauseRef } = useRafFn(() => {\n if (!animate.value)\n return;\n store.pending = animate.value.pending;\n store.playState = animate.value.playState;\n store.replaceState = animate.value.replaceState;\n store.startTime = animate.value.startTime;\n store.currentTime = animate.value.currentTime;\n store.timeline = animate.value.timeline;\n store.playbackRate = animate.value.playbackRate;\n }, { immediate: false });\n function syncResume() {\n if (isSupported.value)\n resumeRef();\n }\n function syncPause() {\n if (isSupported.value && window)\n window.requestAnimationFrame(pauseRef);\n }\n return {\n isSupported,\n animate,\n // actions\n play,\n pause,\n reverse,\n finish,\n cancel,\n // state\n pending,\n playState,\n replaceState,\n startTime,\n currentTime,\n timeline,\n playbackRate\n };\n}\n\nfunction useAsyncQueue(tasks, options) {\n const {\n interrupt = true,\n onError = noop,\n onFinished = noop,\n signal\n } = options || {};\n const promiseState = {\n aborted: \"aborted\",\n fulfilled: \"fulfilled\",\n pending: \"pending\",\n rejected: \"rejected\"\n };\n const initialResult = Array.from(Array.from({ length: tasks.length }), () => ({ state: promiseState.pending, data: null }));\n const result = reactive(initialResult);\n const activeIndex = shallowRef(-1);\n if (!tasks || tasks.length === 0) {\n onFinished();\n return {\n activeIndex,\n result\n };\n }\n function updateResult(state, res) {\n activeIndex.value++;\n result[activeIndex.value].data = res;\n result[activeIndex.value].state = state;\n }\n tasks.reduce((prev, curr) => {\n return prev.then((prevRes) => {\n var _a;\n if (signal == null ? void 0 : signal.aborted) {\n updateResult(promiseState.aborted, new Error(\"aborted\"));\n return;\n }\n if (((_a = result[activeIndex.value]) == null ? void 0 : _a.state) === promiseState.rejected && interrupt) {\n onFinished();\n return;\n }\n const done = curr(prevRes).then((currentRes) => {\n updateResult(promiseState.fulfilled, currentRes);\n if (activeIndex.value === tasks.length - 1)\n onFinished();\n return currentRes;\n });\n if (!signal)\n return done;\n return Promise.race([done, whenAborted(signal)]);\n }).catch((e) => {\n if (signal == null ? void 0 : signal.aborted) {\n updateResult(promiseState.aborted, e);\n return e;\n }\n updateResult(promiseState.rejected, e);\n onError();\n return e;\n });\n }, Promise.resolve());\n return {\n activeIndex,\n result\n };\n}\nfunction whenAborted(signal) {\n return new Promise((resolve, reject) => {\n const error = new Error(\"aborted\");\n if (signal.aborted)\n reject(error);\n else\n signal.addEventListener(\"abort\", () => reject(error), { once: true });\n });\n}\n\nfunction useAsyncState(promise, initialState, options) {\n const {\n immediate = true,\n delay = 0,\n onError = noop,\n onSuccess = noop,\n resetOnExecute = true,\n shallow = true,\n throwError\n } = options != null ? options : {};\n const state = shallow ? shallowRef(initialState) : ref(initialState);\n const isReady = shallowRef(false);\n const isLoading = shallowRef(false);\n const error = shallowRef(void 0);\n async function execute(delay2 = 0, ...args) {\n if (resetOnExecute)\n state.value = initialState;\n error.value = void 0;\n isReady.value = false;\n isLoading.value = true;\n if (delay2 > 0)\n await promiseTimeout(delay2);\n const _promise = typeof promise === \"function\" ? promise(...args) : promise;\n try {\n const data = await _promise;\n state.value = data;\n isReady.value = true;\n onSuccess(data);\n } catch (e) {\n error.value = e;\n onError(e);\n if (throwError)\n throw e;\n } finally {\n isLoading.value = false;\n }\n return state.value;\n }\n if (immediate) {\n execute(delay);\n }\n const shell = {\n state,\n isReady,\n isLoading,\n error,\n execute\n };\n function waitUntilIsLoaded() {\n return new Promise((resolve, reject) => {\n until(isLoading).toBe(false).then(() => resolve(shell)).catch(reject);\n });\n }\n return {\n ...shell,\n then(onFulfilled, onRejected) {\n return waitUntilIsLoaded().then(onFulfilled, onRejected);\n }\n };\n}\n\nconst defaults = {\n array: (v) => JSON.stringify(v),\n object: (v) => JSON.stringify(v),\n set: (v) => JSON.stringify(Array.from(v)),\n map: (v) => JSON.stringify(Object.fromEntries(v)),\n null: () => \"\"\n};\nfunction getDefaultSerialization(target) {\n if (!target)\n return defaults.null;\n if (target instanceof Map)\n return defaults.map;\n else if (target instanceof Set)\n return defaults.set;\n else if (Array.isArray(target))\n return defaults.array;\n else\n return defaults.object;\n}\n\nfunction useBase64(target, options) {\n const base64 = shallowRef(\"\");\n const promise = shallowRef();\n function execute() {\n if (!isClient)\n return;\n promise.value = new Promise((resolve, reject) => {\n try {\n const _target = toValue(target);\n if (_target == null) {\n resolve(\"\");\n } else if (typeof _target === \"string\") {\n resolve(blobToBase64(new Blob([_target], { type: \"text/plain\" })));\n } else if (_target instanceof Blob) {\n resolve(blobToBase64(_target));\n } else if (_target instanceof ArrayBuffer) {\n resolve(window.btoa(String.fromCharCode(...new Uint8Array(_target))));\n } else if (_target instanceof HTMLCanvasElement) {\n resolve(_target.toDataURL(options == null ? void 0 : options.type, options == null ? void 0 : options.quality));\n } else if (_target instanceof HTMLImageElement) {\n const img = _target.cloneNode(false);\n img.crossOrigin = \"Anonymous\";\n imgLoaded(img).then(() => {\n const canvas = document.createElement(\"canvas\");\n const ctx = canvas.getContext(\"2d\");\n canvas.width = img.width;\n canvas.height = img.height;\n ctx.drawImage(img, 0, 0, canvas.width, canvas.height);\n resolve(canvas.toDataURL(options == null ? void 0 : options.type, options == null ? void 0 : options.quality));\n }).catch(reject);\n } else if (typeof _target === \"object\") {\n const _serializeFn = (options == null ? void 0 : options.serializer) || getDefaultSerialization(_target);\n const serialized = _serializeFn(_target);\n return resolve(blobToBase64(new Blob([serialized], { type: \"application/json\" })));\n } else {\n reject(new Error(\"target is unsupported types\"));\n }\n } catch (error) {\n reject(error);\n }\n });\n promise.value.then((res) => {\n base64.value = (options == null ? void 0 : options.dataUrl) === false ? res.replace(/^data:.*?;base64,/, \"\") : res;\n });\n return promise.value;\n }\n if (isRef(target) || typeof target === \"function\")\n watch(target, execute, { immediate: true });\n else\n execute();\n return {\n base64,\n promise,\n execute\n };\n}\nfunction imgLoaded(img) {\n return new Promise((resolve, reject) => {\n if (!img.complete) {\n img.onload = () => {\n resolve();\n };\n img.onerror = reject;\n } else {\n resolve();\n }\n });\n}\nfunction blobToBase64(blob) {\n return new Promise((resolve, reject) => {\n const fr = new FileReader();\n fr.onload = (e) => {\n resolve(e.target.result);\n };\n fr.onerror = reject;\n fr.readAsDataURL(blob);\n });\n}\n\nfunction useBattery(options = {}) {\n const { navigator = defaultNavigator } = options;\n const events = [\"chargingchange\", \"chargingtimechange\", \"dischargingtimechange\", \"levelchange\"];\n const isSupported = useSupported(() => navigator && \"getBattery\" in navigator && typeof navigator.getBattery === \"function\");\n const charging = shallowRef(false);\n const chargingTime = shallowRef(0);\n const dischargingTime = shallowRef(0);\n const level = shallowRef(1);\n let battery;\n function updateBatteryInfo() {\n charging.value = this.charging;\n chargingTime.value = this.chargingTime || 0;\n dischargingTime.value = this.dischargingTime || 0;\n level.value = this.level;\n }\n if (isSupported.value) {\n navigator.getBattery().then((_battery) => {\n battery = _battery;\n updateBatteryInfo.call(battery);\n useEventListener(battery, events, updateBatteryInfo, { passive: true });\n });\n }\n return {\n isSupported,\n charging,\n chargingTime,\n dischargingTime,\n level\n };\n}\n\nfunction useBluetooth(options) {\n let {\n acceptAllDevices = false\n } = options || {};\n const {\n filters = void 0,\n optionalServices = void 0,\n navigator = defaultNavigator\n } = options || {};\n const isSupported = useSupported(() => navigator && \"bluetooth\" in navigator);\n const device = shallowRef();\n const error = shallowRef(null);\n watch(device, () => {\n connectToBluetoothGATTServer();\n });\n async function requestDevice() {\n if (!isSupported.value)\n return;\n error.value = null;\n if (filters && filters.length > 0)\n acceptAllDevices = false;\n try {\n device.value = await (navigator == null ? void 0 : navigator.bluetooth.requestDevice({\n acceptAllDevices,\n filters,\n optionalServices\n }));\n } catch (err) {\n error.value = err;\n }\n }\n const server = shallowRef();\n const isConnected = shallowRef(false);\n function reset() {\n isConnected.value = false;\n device.value = void 0;\n server.value = void 0;\n }\n async function connectToBluetoothGATTServer() {\n error.value = null;\n if (device.value && device.value.gatt) {\n useEventListener(device, \"gattserverdisconnected\", reset, { passive: true });\n try {\n server.value = await device.value.gatt.connect();\n isConnected.value = server.value.connected;\n } catch (err) {\n error.value = err;\n }\n }\n }\n tryOnMounted(() => {\n var _a;\n if (device.value)\n (_a = device.value.gatt) == null ? void 0 : _a.connect();\n });\n tryOnScopeDispose(() => {\n var _a;\n if (device.value)\n (_a = device.value.gatt) == null ? void 0 : _a.disconnect();\n });\n return {\n isSupported,\n isConnected: readonly(isConnected),\n // Device:\n device,\n requestDevice,\n // Server:\n server,\n // Errors:\n error\n };\n}\n\nconst ssrWidthSymbol = Symbol(\"vueuse-ssr-width\");\nfunction useSSRWidth() {\n const ssrWidth = hasInjectionContext() ? injectLocal(ssrWidthSymbol, null) : null;\n return typeof ssrWidth === \"number\" ? ssrWidth : void 0;\n}\nfunction provideSSRWidth(width, app) {\n if (app !== void 0) {\n app.provide(ssrWidthSymbol, width);\n } else {\n provideLocal(ssrWidthSymbol, width);\n }\n}\n\nfunction useMediaQuery(query, options = {}) {\n const { window = defaultWindow, ssrWidth = useSSRWidth() } = options;\n const isSupported = useSupported(() => window && \"matchMedia\" in window && typeof window.matchMedia === \"function\");\n const ssrSupport = shallowRef(typeof ssrWidth === \"number\");\n const mediaQuery = shallowRef();\n const matches = shallowRef(false);\n const handler = (event) => {\n matches.value = event.matches;\n };\n watchEffect(() => {\n if (ssrSupport.value) {\n ssrSupport.value = !isSupported.value;\n const queryStrings = toValue(query).split(\",\");\n matches.value = queryStrings.some((queryString) => {\n const not = queryString.includes(\"not all\");\n const minWidth = queryString.match(/\\(\\s*min-width:\\s*(-?\\d+(?:\\.\\d*)?[a-z]+\\s*)\\)/);\n const maxWidth = queryString.match(/\\(\\s*max-width:\\s*(-?\\d+(?:\\.\\d*)?[a-z]+\\s*)\\)/);\n let res = Boolean(minWidth || maxWidth);\n if (minWidth && res) {\n res = ssrWidth >= pxValue(minWidth[1]);\n }\n if (maxWidth && res) {\n res = ssrWidth <= pxValue(maxWidth[1]);\n }\n return not ? !res : res;\n });\n return;\n }\n if (!isSupported.value)\n return;\n mediaQuery.value = window.matchMedia(toValue(query));\n matches.value = mediaQuery.value.matches;\n });\n useEventListener(mediaQuery, \"change\", handler, { passive: true });\n return computed(() => matches.value);\n}\n\nconst breakpointsTailwind = {\n \"sm\": 640,\n \"md\": 768,\n \"lg\": 1024,\n \"xl\": 1280,\n \"2xl\": 1536\n};\nconst breakpointsBootstrapV5 = {\n xs: 0,\n sm: 576,\n md: 768,\n lg: 992,\n xl: 1200,\n xxl: 1400\n};\nconst breakpointsVuetifyV2 = {\n xs: 0,\n sm: 600,\n md: 960,\n lg: 1264,\n xl: 1904\n};\nconst breakpointsVuetifyV3 = {\n xs: 0,\n sm: 600,\n md: 960,\n lg: 1280,\n xl: 1920,\n xxl: 2560\n};\nconst breakpointsVuetify = breakpointsVuetifyV2;\nconst breakpointsAntDesign = {\n xs: 480,\n sm: 576,\n md: 768,\n lg: 992,\n xl: 1200,\n xxl: 1600\n};\nconst breakpointsQuasar = {\n xs: 0,\n sm: 600,\n md: 1024,\n lg: 1440,\n xl: 1920\n};\nconst breakpointsSematic = {\n mobileS: 320,\n mobileM: 375,\n mobileL: 425,\n tablet: 768,\n laptop: 1024,\n laptopL: 1440,\n desktop4K: 2560\n};\nconst breakpointsMasterCss = {\n \"3xs\": 360,\n \"2xs\": 480,\n \"xs\": 600,\n \"sm\": 768,\n \"md\": 1024,\n \"lg\": 1280,\n \"xl\": 1440,\n \"2xl\": 1600,\n \"3xl\": 1920,\n \"4xl\": 2560\n};\nconst breakpointsPrimeFlex = {\n sm: 576,\n md: 768,\n lg: 992,\n xl: 1200\n};\nconst breakpointsElement = {\n xs: 0,\n sm: 768,\n md: 992,\n lg: 1200,\n xl: 1920\n};\n\nfunction useBreakpoints(breakpoints, options = {}) {\n function getValue(k, delta) {\n let v = toValue(breakpoints[toValue(k)]);\n if (delta != null)\n v = increaseWithUnit(v, delta);\n if (typeof v === \"number\")\n v = `${v}px`;\n return v;\n }\n const { window = defaultWindow, strategy = \"min-width\", ssrWidth = useSSRWidth() } = options;\n const ssrSupport = typeof ssrWidth === \"number\";\n const mounted = ssrSupport ? shallowRef(false) : { value: true };\n if (ssrSupport) {\n tryOnMounted(() => mounted.value = !!window);\n }\n function match(query, size) {\n if (!mounted.value && ssrSupport) {\n return query === \"min\" ? ssrWidth >= pxValue(size) : ssrWidth <= pxValue(size);\n }\n if (!window)\n return false;\n return window.matchMedia(`(${query}-width: ${size})`).matches;\n }\n const greaterOrEqual = (k) => {\n return useMediaQuery(() => `(min-width: ${getValue(k)})`, options);\n };\n const smallerOrEqual = (k) => {\n return useMediaQuery(() => `(max-width: ${getValue(k)})`, options);\n };\n const shortcutMethods = Object.keys(breakpoints).reduce((shortcuts, k) => {\n Object.defineProperty(shortcuts, k, {\n get: () => strategy === \"min-width\" ? greaterOrEqual(k) : smallerOrEqual(k),\n enumerable: true,\n configurable: true\n });\n return shortcuts;\n }, {});\n function current() {\n const points = Object.keys(breakpoints).map((k) => [k, shortcutMethods[k], pxValue(getValue(k))]).sort((a, b) => a[2] - b[2]);\n return computed(() => points.filter(([, v]) => v.value).map(([k]) => k));\n }\n return Object.assign(shortcutMethods, {\n greaterOrEqual,\n smallerOrEqual,\n greater(k) {\n return useMediaQuery(() => `(min-width: ${getValue(k, 0.1)})`, options);\n },\n smaller(k) {\n return useMediaQuery(() => `(max-width: ${getValue(k, -0.1)})`, options);\n },\n between(a, b) {\n return useMediaQuery(() => `(min-width: ${getValue(a)}) and (max-width: ${getValue(b, -0.1)})`, options);\n },\n isGreater(k) {\n return match(\"min\", getValue(k, 0.1));\n },\n isGreaterOrEqual(k) {\n return match(\"min\", getValue(k));\n },\n isSmaller(k) {\n return match(\"max\", getValue(k, -0.1));\n },\n isSmallerOrEqual(k) {\n return match(\"max\", getValue(k));\n },\n isInBetween(a, b) {\n return match(\"min\", getValue(a)) && match(\"max\", getValue(b, -0.1));\n },\n current,\n active() {\n const bps = current();\n return computed(() => bps.value.length === 0 ? \"\" : bps.value.at(strategy === \"min-width\" ? -1 : 0));\n }\n });\n}\n\nfunction useBroadcastChannel(options) {\n const {\n name,\n window = defaultWindow\n } = options;\n const isSupported = useSupported(() => window && \"BroadcastChannel\" in window);\n const isClosed = shallowRef(false);\n const channel = ref();\n const data = ref();\n const error = shallowRef(null);\n const post = (data2) => {\n if (channel.value)\n channel.value.postMessage(data2);\n };\n const close = () => {\n if (channel.value)\n channel.value.close();\n isClosed.value = true;\n };\n if (isSupported.value) {\n tryOnMounted(() => {\n error.value = null;\n channel.value = new BroadcastChannel(name);\n const listenerOptions = {\n passive: true\n };\n useEventListener(channel, \"message\", (e) => {\n data.value = e.data;\n }, listenerOptions);\n useEventListener(channel, \"messageerror\", (e) => {\n error.value = e;\n }, listenerOptions);\n useEventListener(channel, \"close\", () => {\n isClosed.value = true;\n }, listenerOptions);\n });\n }\n tryOnScopeDispose(() => {\n close();\n });\n return {\n isSupported,\n channel,\n data,\n post,\n close,\n error,\n isClosed\n };\n}\n\nconst WRITABLE_PROPERTIES = [\n \"hash\",\n \"host\",\n \"hostname\",\n \"href\",\n \"pathname\",\n \"port\",\n \"protocol\",\n \"search\"\n];\nfunction useBrowserLocation(options = {}) {\n const { window = defaultWindow } = options;\n const refs = Object.fromEntries(\n WRITABLE_PROPERTIES.map((key) => [key, ref()])\n );\n for (const [key, ref] of objectEntries(refs)) {\n watch(ref, (value) => {\n if (!(window == null ? void 0 : window.location) || window.location[key] === value)\n return;\n window.location[key] = value;\n });\n }\n const buildState = (trigger) => {\n var _a;\n const { state: state2, length } = (window == null ? void 0 : window.history) || {};\n const { origin } = (window == null ? void 0 : window.location) || {};\n for (const key of WRITABLE_PROPERTIES)\n refs[key].value = (_a = window == null ? void 0 : window.location) == null ? void 0 : _a[key];\n return reactive({\n trigger,\n state: state2,\n length,\n origin,\n ...refs\n });\n };\n const state = ref(buildState(\"load\"));\n if (window) {\n const listenerOptions = { passive: true };\n useEventListener(window, \"popstate\", () => state.value = buildState(\"popstate\"), listenerOptions);\n useEventListener(window, \"hashchange\", () => state.value = buildState(\"hashchange\"), listenerOptions);\n }\n return state;\n}\n\nfunction useCached(refValue, comparator = (a, b) => a === b, options) {\n const { deepRefs = true, ...watchOptions } = options || {};\n const cachedValue = createRef(refValue.value, deepRefs);\n watch(() => refValue.value, (value) => {\n if (!comparator(value, cachedValue.value))\n cachedValue.value = value;\n }, watchOptions);\n return cachedValue;\n}\n\nfunction usePermission(permissionDesc, options = {}) {\n const {\n controls = false,\n navigator = defaultNavigator\n } = options;\n const isSupported = useSupported(() => navigator && \"permissions\" in navigator);\n const permissionStatus = shallowRef();\n const desc = typeof permissionDesc === \"string\" ? { name: permissionDesc } : permissionDesc;\n const state = shallowRef();\n const update = () => {\n var _a, _b;\n state.value = (_b = (_a = permissionStatus.value) == null ? void 0 : _a.state) != null ? _b : \"prompt\";\n };\n useEventListener(permissionStatus, \"change\", update, { passive: true });\n const query = createSingletonPromise(async () => {\n if (!isSupported.value)\n return;\n if (!permissionStatus.value) {\n try {\n permissionStatus.value = await navigator.permissions.query(desc);\n } catch (e) {\n permissionStatus.value = void 0;\n } finally {\n update();\n }\n }\n if (controls)\n return toRaw(permissionStatus.value);\n });\n query();\n if (controls) {\n return {\n state,\n isSupported,\n query\n };\n } else {\n return state;\n }\n}\n\nfunction useClipboard(options = {}) {\n const {\n navigator = defaultNavigator,\n read = false,\n source,\n copiedDuring = 1500,\n legacy = false\n } = options;\n const isClipboardApiSupported = useSupported(() => navigator && \"clipboard\" in navigator);\n const permissionRead = usePermission(\"clipboard-read\");\n const permissionWrite = usePermission(\"clipboard-write\");\n const isSupported = computed(() => isClipboardApiSupported.value || legacy);\n const text = shallowRef(\"\");\n const copied = shallowRef(false);\n const timeout = useTimeoutFn(() => copied.value = false, copiedDuring, { immediate: false });\n async function updateText() {\n let useLegacy = !(isClipboardApiSupported.value && isAllowed(permissionRead.value));\n if (!useLegacy) {\n try {\n text.value = await navigator.clipboard.readText();\n } catch (e) {\n useLegacy = true;\n }\n }\n if (useLegacy) {\n text.value = legacyRead();\n }\n }\n if (isSupported.value && read)\n useEventListener([\"copy\", \"cut\"], updateText, { passive: true });\n async function copy(value = toValue(source)) {\n if (isSupported.value && value != null) {\n let useLegacy = !(isClipboardApiSupported.value && isAllowed(permissionWrite.value));\n if (!useLegacy) {\n try {\n await navigator.clipboard.writeText(value);\n } catch (e) {\n useLegacy = true;\n }\n }\n if (useLegacy)\n legacyCopy(value);\n text.value = value;\n copied.value = true;\n timeout.start();\n }\n }\n function legacyCopy(value) {\n const ta = document.createElement(\"textarea\");\n ta.value = value != null ? value : \"\";\n ta.style.position = \"absolute\";\n ta.style.opacity = \"0\";\n document.body.appendChild(ta);\n ta.select();\n document.execCommand(\"copy\");\n ta.remove();\n }\n function legacyRead() {\n var _a, _b, _c;\n return (_c = (_b = (_a = document == null ? void 0 : document.getSelection) == null ? void 0 : _a.call(document)) == null ? void 0 : _b.toString()) != null ? _c : \"\";\n }\n function isAllowed(status) {\n return status === \"granted\" || status === \"prompt\";\n }\n return {\n isSupported,\n text,\n copied,\n copy\n };\n}\n\nfunction useClipboardItems(options = {}) {\n const {\n navigator = defaultNavigator,\n read = false,\n source,\n copiedDuring = 1500\n } = options;\n const isSupported = useSupported(() => navigator && \"clipboard\" in navigator);\n const content = ref([]);\n const copied = shallowRef(false);\n const timeout = useTimeoutFn(() => copied.value = false, copiedDuring, { immediate: false });\n function updateContent() {\n if (isSupported.value) {\n navigator.clipboard.read().then((items) => {\n content.value = items;\n });\n }\n }\n if (isSupported.value && read)\n useEventListener([\"copy\", \"cut\"], updateContent, { passive: true });\n async function copy(value = toValue(source)) {\n if (isSupported.value && value != null) {\n await navigator.clipboard.write(value);\n content.value = value;\n copied.value = true;\n timeout.start();\n }\n }\n return {\n isSupported,\n content,\n copied,\n copy\n };\n}\n\nfunction cloneFnJSON(source) {\n return JSON.parse(JSON.stringify(source));\n}\nfunction useCloned(source, options = {}) {\n const cloned = ref({});\n const isModified = shallowRef(false);\n let _lastSync = false;\n const {\n manual,\n clone = cloneFnJSON,\n // watch options\n deep = true,\n immediate = true\n } = options;\n watch(cloned, () => {\n if (_lastSync) {\n _lastSync = false;\n return;\n }\n isModified.value = true;\n }, {\n deep: true,\n flush: \"sync\"\n });\n function sync() {\n _lastSync = true;\n isModified.value = false;\n cloned.value = clone(toValue(source));\n }\n if (!manual && (isRef(source) || typeof source === \"function\")) {\n watch(source, sync, {\n ...options,\n deep,\n immediate\n });\n } else {\n sync();\n }\n return { cloned, isModified, sync };\n}\n\nconst _global = typeof globalThis !== \"undefined\" ? globalThis : typeof window !== \"undefined\" ? window : typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : {};\nconst globalKey = \"__vueuse_ssr_handlers__\";\nconst handlers = /* @__PURE__ */ getHandlers();\nfunction getHandlers() {\n if (!(globalKey in _global))\n _global[globalKey] = _global[globalKey] || {};\n return _global[globalKey];\n}\nfunction getSSRHandler(key, fallback) {\n return handlers[key] || fallback;\n}\nfunction setSSRHandler(key, fn) {\n handlers[key] = fn;\n}\n\nfunction usePreferredDark(options) {\n return useMediaQuery(\"(prefers-color-scheme: dark)\", options);\n}\n\nfunction guessSerializerType(rawInit) {\n return rawInit == null ? \"any\" : rawInit instanceof Set ? \"set\" : rawInit instanceof Map ? \"map\" : rawInit instanceof Date ? \"date\" : typeof rawInit === \"boolean\" ? \"boolean\" : typeof rawInit === \"string\" ? \"string\" : typeof rawInit === \"object\" ? \"object\" : !Number.isNaN(rawInit) ? \"number\" : \"any\";\n}\n\nconst StorageSerializers = {\n boolean: {\n read: (v) => v === \"true\",\n write: (v) => String(v)\n },\n object: {\n read: (v) => JSON.parse(v),\n write: (v) => JSON.stringify(v)\n },\n number: {\n read: (v) => Number.parseFloat(v),\n write: (v) => String(v)\n },\n any: {\n read: (v) => v,\n write: (v) => String(v)\n },\n string: {\n read: (v) => v,\n write: (v) => String(v)\n },\n map: {\n read: (v) => new Map(JSON.parse(v)),\n write: (v) => JSON.stringify(Array.from(v.entries()))\n },\n set: {\n read: (v) => new Set(JSON.parse(v)),\n write: (v) => JSON.stringify(Array.from(v))\n },\n date: {\n read: (v) => new Date(v),\n write: (v) => v.toISOString()\n }\n};\nconst customStorageEventName = \"vueuse-storage\";\nfunction useStorage(key, defaults, storage, options = {}) {\n var _a;\n const {\n flush = \"pre\",\n deep = true,\n listenToStorageChanges = true,\n writeDefaults = true,\n mergeDefaults = false,\n shallow,\n window = defaultWindow,\n eventFilter,\n onError = (e) => {\n console.error(e);\n },\n initOnMounted\n } = options;\n const data = (shallow ? shallowRef : ref)(typeof defaults === \"function\" ? defaults() : defaults);\n const keyComputed = computed(() => toValue(key));\n if (!storage) {\n try {\n storage = getSSRHandler(\"getDefaultStorage\", () => {\n var _a2;\n return (_a2 = defaultWindow) == null ? void 0 : _a2.localStorage;\n })();\n } catch (e) {\n onError(e);\n }\n }\n if (!storage)\n return data;\n const rawInit = toValue(defaults);\n const type = guessSerializerType(rawInit);\n const serializer = (_a = options.serializer) != null ? _a : StorageSerializers[type];\n const { pause: pauseWatch, resume: resumeWatch } = pausableWatch(\n data,\n () => write(data.value),\n { flush, deep, eventFilter }\n );\n watch(keyComputed, () => update(), { flush });\n if (window && listenToStorageChanges) {\n tryOnMounted(() => {\n if (storage instanceof Storage)\n useEventListener(window, \"storage\", update, { passive: true });\n else\n useEventListener(window, customStorageEventName, updateFromCustomEvent);\n if (initOnMounted)\n update();\n });\n }\n if (!initOnMounted)\n update();\n function dispatchWriteEvent(oldValue, newValue) {\n if (window) {\n const payload = {\n key: keyComputed.value,\n oldValue,\n newValue,\n storageArea: storage\n };\n window.dispatchEvent(storage instanceof Storage ? new StorageEvent(\"storage\", payload) : new CustomEvent(customStorageEventName, {\n detail: payload\n }));\n }\n }\n function write(v) {\n try {\n const oldValue = storage.getItem(keyComputed.value);\n if (v == null) {\n dispatchWriteEvent(oldValue, null);\n storage.removeItem(keyComputed.value);\n } else {\n const serialized = serializer.write(v);\n if (oldValue !== serialized) {\n storage.setItem(keyComputed.value, serialized);\n dispatchWriteEvent(oldValue, serialized);\n }\n }\n } catch (e) {\n onError(e);\n }\n }\n function read(event) {\n const rawValue = event ? event.newValue : storage.getItem(keyComputed.value);\n if (rawValue == null) {\n if (writeDefaults && rawInit != null)\n storage.setItem(keyComputed.value, serializer.write(rawInit));\n return rawInit;\n } else if (!event && mergeDefaults) {\n const value = serializer.read(rawValue);\n if (typeof mergeDefaults === \"function\")\n return mergeDefaults(value, rawInit);\n else if (type === \"object\" && !Array.isArray(value))\n return { ...rawInit, ...value };\n return value;\n } else if (typeof rawValue !== \"string\") {\n return rawValue;\n } else {\n return serializer.read(rawValue);\n }\n }\n function update(event) {\n if (event && event.storageArea !== storage)\n return;\n if (event && event.key == null) {\n data.value = rawInit;\n return;\n }\n if (event && event.key !== keyComputed.value)\n return;\n pauseWatch();\n try {\n if ((event == null ? void 0 : event.newValue) !== serializer.write(data.value))\n data.value = read(event);\n } catch (e) {\n onError(e);\n } finally {\n if (event)\n nextTick(resumeWatch);\n else\n resumeWatch();\n }\n }\n function updateFromCustomEvent(event) {\n update(event.detail);\n }\n return data;\n}\n\nconst CSS_DISABLE_TRANS = \"*,*::before,*::after{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;-ms-transition:none!important;transition:none!important}\";\nfunction useColorMode(options = {}) {\n const {\n selector = \"html\",\n attribute = \"class\",\n initialValue = \"auto\",\n window = defaultWindow,\n storage,\n storageKey = \"vueuse-color-scheme\",\n listenToStorageChanges = true,\n storageRef,\n emitAuto,\n disableTransition = true\n } = options;\n const modes = {\n auto: \"\",\n light: \"light\",\n dark: \"dark\",\n ...options.modes || {}\n };\n const preferredDark = usePreferredDark({ window });\n const system = computed(() => preferredDark.value ? \"dark\" : \"light\");\n const store = storageRef || (storageKey == null ? toRef(initialValue) : useStorage(storageKey, initialValue, storage, { window, listenToStorageChanges }));\n const state = computed(() => store.value === \"auto\" ? system.value : store.value);\n const updateHTMLAttrs = getSSRHandler(\n \"updateHTMLAttrs\",\n (selector2, attribute2, value) => {\n const el = typeof selector2 === \"string\" ? window == null ? void 0 : window.document.querySelector(selector2) : unrefElement(selector2);\n if (!el)\n return;\n const classesToAdd = /* @__PURE__ */ new Set();\n const classesToRemove = /* @__PURE__ */ new Set();\n let attributeToChange = null;\n if (attribute2 === \"class\") {\n const current = value.split(/\\s/g);\n Object.values(modes).flatMap((i) => (i || \"\").split(/\\s/g)).filter(Boolean).forEach((v) => {\n if (current.includes(v))\n classesToAdd.add(v);\n else\n classesToRemove.add(v);\n });\n } else {\n attributeToChange = { key: attribute2, value };\n }\n if (classesToAdd.size === 0 && classesToRemove.size === 0 && attributeToChange === null)\n return;\n let style;\n if (disableTransition) {\n style = window.document.createElement(\"style\");\n style.appendChild(document.createTextNode(CSS_DISABLE_TRANS));\n window.document.head.appendChild(style);\n }\n for (const c of classesToAdd) {\n el.classList.add(c);\n }\n for (const c of classesToRemove) {\n el.classList.remove(c);\n }\n if (attributeToChange) {\n el.setAttribute(attributeToChange.key, attributeToChange.value);\n }\n if (disableTransition) {\n window.getComputedStyle(style).opacity;\n document.head.removeChild(style);\n }\n }\n );\n function defaultOnChanged(mode) {\n var _a;\n updateHTMLAttrs(selector, attribute, (_a = modes[mode]) != null ? _a : mode);\n }\n function onChanged(mode) {\n if (options.onChanged)\n options.onChanged(mode, defaultOnChanged);\n else\n defaultOnChanged(mode);\n }\n watch(state, onChanged, { flush: \"post\", immediate: true });\n tryOnMounted(() => onChanged(state.value));\n const auto = computed({\n get() {\n return emitAuto ? store.value : state.value;\n },\n set(v) {\n store.value = v;\n }\n });\n return Object.assign(auto, { store, system, state });\n}\n\nfunction useConfirmDialog(revealed = shallowRef(false)) {\n const confirmHook = createEventHook();\n const cancelHook = createEventHook();\n const revealHook = createEventHook();\n let _resolve = noop;\n const reveal = (data) => {\n revealHook.trigger(data);\n revealed.value = true;\n return new Promise((resolve) => {\n _resolve = resolve;\n });\n };\n const confirm = (data) => {\n revealed.value = false;\n confirmHook.trigger(data);\n _resolve({ data, isCanceled: false });\n };\n const cancel = (data) => {\n revealed.value = false;\n cancelHook.trigger(data);\n _resolve({ data, isCanceled: true });\n };\n return {\n isRevealed: computed(() => revealed.value),\n reveal,\n confirm,\n cancel,\n onReveal: revealHook.on,\n onConfirm: confirmHook.on,\n onCancel: cancelHook.on\n };\n}\n\nfunction useCountdown(initialCountdown, options) {\n var _a, _b;\n const remaining = shallowRef(toValue(initialCountdown));\n const intervalController = useIntervalFn(() => {\n var _a2, _b2;\n const value = remaining.value - 1;\n remaining.value = value < 0 ? 0 : value;\n (_a2 = options == null ? void 0 : options.onTick) == null ? void 0 : _a2.call(options);\n if (remaining.value <= 0) {\n intervalController.pause();\n (_b2 = options == null ? void 0 : options.onComplete) == null ? void 0 : _b2.call(options);\n }\n }, (_a = options == null ? void 0 : options.interval) != null ? _a : 1e3, { immediate: (_b = options == null ? void 0 : options.immediate) != null ? _b : false });\n const reset = (countdown) => {\n var _a2;\n remaining.value = (_a2 = toValue(countdown)) != null ? _a2 : toValue(initialCountdown);\n };\n const stop = () => {\n intervalController.pause();\n reset();\n };\n const resume = () => {\n if (!intervalController.isActive.value) {\n if (remaining.value > 0) {\n intervalController.resume();\n }\n }\n };\n const start = (countdown) => {\n reset(countdown);\n intervalController.resume();\n };\n return {\n remaining,\n reset,\n stop,\n start,\n pause: intervalController.pause,\n resume,\n isActive: intervalController.isActive\n };\n}\n\nfunction useCssVar(prop, target, options = {}) {\n const { window = defaultWindow, initialValue, observe = false } = options;\n const variable = shallowRef(initialValue);\n const elRef = computed(() => {\n var _a;\n return unrefElement(target) || ((_a = window == null ? void 0 : window.document) == null ? void 0 : _a.documentElement);\n });\n function updateCssVar() {\n var _a;\n const key = toValue(prop);\n const el = toValue(elRef);\n if (el && window && key) {\n const value = (_a = window.getComputedStyle(el).getPropertyValue(key)) == null ? void 0 : _a.trim();\n variable.value = value || variable.value || initialValue;\n }\n }\n if (observe) {\n useMutationObserver(elRef, updateCssVar, {\n attributeFilter: [\"style\", \"class\"],\n window\n });\n }\n watch(\n [elRef, () => toValue(prop)],\n (_, old) => {\n if (old[0] && old[1])\n old[0].style.removeProperty(old[1]);\n updateCssVar();\n },\n { immediate: true }\n );\n watch(\n [variable, elRef],\n ([val, el]) => {\n const raw_prop = toValue(prop);\n if ((el == null ? void 0 : el.style) && raw_prop) {\n if (val == null)\n el.style.removeProperty(raw_prop);\n else\n el.style.setProperty(raw_prop, val);\n }\n },\n { immediate: true }\n );\n return variable;\n}\n\nfunction useCurrentElement(rootComponent) {\n const vm = getCurrentInstance();\n const currentElement = computedWithControl(\n () => null,\n () => rootComponent ? unrefElement(rootComponent) : vm.proxy.$el\n );\n onUpdated(currentElement.trigger);\n onMounted(currentElement.trigger);\n return currentElement;\n}\n\nfunction useCycleList(list, options) {\n const state = shallowRef(getInitialValue());\n const listRef = toRef(list);\n const index = computed({\n get() {\n var _a;\n const targetList = listRef.value;\n let index2 = (options == null ? void 0 : options.getIndexOf) ? options.getIndexOf(state.value, targetList) : targetList.indexOf(state.value);\n if (index2 < 0)\n index2 = (_a = options == null ? void 0 : options.fallbackIndex) != null ? _a : 0;\n return index2;\n },\n set(v) {\n set(v);\n }\n });\n function set(i) {\n const targetList = listRef.value;\n const length = targetList.length;\n const index2 = (i % length + length) % length;\n const value = targetList[index2];\n state.value = value;\n return value;\n }\n function shift(delta = 1) {\n return set(index.value + delta);\n }\n function next(n = 1) {\n return shift(n);\n }\n function prev(n = 1) {\n return shift(-n);\n }\n function getInitialValue() {\n var _a, _b;\n return (_b = toValue((_a = options == null ? void 0 : options.initialValue) != null ? _a : toValue(list)[0])) != null ? _b : void 0;\n }\n watch(listRef, () => set(index.value));\n return {\n state,\n index,\n next,\n prev,\n go: set\n };\n}\n\nfunction useDark(options = {}) {\n const {\n valueDark = \"dark\",\n valueLight = \"\"\n } = options;\n const mode = useColorMode({\n ...options,\n onChanged: (mode2, defaultHandler) => {\n var _a;\n if (options.onChanged)\n (_a = options.onChanged) == null ? void 0 : _a.call(options, mode2 === \"dark\", defaultHandler, mode2);\n else\n defaultHandler(mode2);\n },\n modes: {\n dark: valueDark,\n light: valueLight\n }\n });\n const system = computed(() => mode.system.value);\n const isDark = computed({\n get() {\n return mode.value === \"dark\";\n },\n set(v) {\n const modeVal = v ? \"dark\" : \"light\";\n if (system.value === modeVal)\n mode.value = \"auto\";\n else\n mode.value = modeVal;\n }\n });\n return isDark;\n}\n\nfunction fnBypass(v) {\n return v;\n}\nfunction fnSetSource(source, value) {\n return source.value = value;\n}\nfunction defaultDump(clone) {\n return clone ? typeof clone === \"function\" ? clone : cloneFnJSON : fnBypass;\n}\nfunction defaultParse(clone) {\n return clone ? typeof clone === \"function\" ? clone : cloneFnJSON : fnBypass;\n}\nfunction useManualRefHistory(source, options = {}) {\n const {\n clone = false,\n dump = defaultDump(clone),\n parse = defaultParse(clone),\n setSource = fnSetSource\n } = options;\n function _createHistoryRecord() {\n return markRaw({\n snapshot: dump(source.value),\n timestamp: timestamp()\n });\n }\n const last = ref(_createHistoryRecord());\n const undoStack = ref([]);\n const redoStack = ref([]);\n const _setSource = (record) => {\n setSource(source, parse(record.snapshot));\n last.value = record;\n };\n const commit = () => {\n undoStack.value.unshift(last.value);\n last.value = _createHistoryRecord();\n if (options.capacity && undoStack.value.length > options.capacity)\n undoStack.value.splice(options.capacity, Number.POSITIVE_INFINITY);\n if (redoStack.value.length)\n redoStack.value.splice(0, redoStack.value.length);\n };\n const clear = () => {\n undoStack.value.splice(0, undoStack.value.length);\n redoStack.value.splice(0, redoStack.value.length);\n };\n const undo = () => {\n const state = undoStack.value.shift();\n if (state) {\n redoStack.value.unshift(last.value);\n _setSource(state);\n }\n };\n const redo = () => {\n const state = redoStack.value.shift();\n if (state) {\n undoStack.value.unshift(last.value);\n _setSource(state);\n }\n };\n const reset = () => {\n _setSource(last.value);\n };\n const history = computed(() => [last.value, ...undoStack.value]);\n const canUndo = computed(() => undoStack.value.length > 0);\n const canRedo = computed(() => redoStack.value.length > 0);\n return {\n source,\n undoStack,\n redoStack,\n last,\n history,\n canUndo,\n canRedo,\n clear,\n commit,\n reset,\n undo,\n redo\n };\n}\n\nfunction useRefHistory(source, options = {}) {\n const {\n deep = false,\n flush = \"pre\",\n eventFilter\n } = options;\n const {\n eventFilter: composedFilter,\n pause,\n resume: resumeTracking,\n isActive: isTracking\n } = pausableFilter(eventFilter);\n const {\n ignoreUpdates,\n ignorePrevAsyncUpdates,\n stop\n } = watchIgnorable(\n source,\n commit,\n { deep, flush, eventFilter: composedFilter }\n );\n function setSource(source2, value) {\n ignorePrevAsyncUpdates();\n ignoreUpdates(() => {\n source2.value = value;\n });\n }\n const manualHistory = useManualRefHistory(source, { ...options, clone: options.clone || deep, setSource });\n const { clear, commit: manualCommit } = manualHistory;\n function commit() {\n ignorePrevAsyncUpdates();\n manualCommit();\n }\n function resume(commitNow) {\n resumeTracking();\n if (commitNow)\n commit();\n }\n function batch(fn) {\n let canceled = false;\n const cancel = () => canceled = true;\n ignoreUpdates(() => {\n fn(cancel);\n });\n if (!canceled)\n commit();\n }\n function dispose() {\n stop();\n clear();\n }\n return {\n ...manualHistory,\n isTracking,\n pause,\n resume,\n commit,\n batch,\n dispose\n };\n}\n\nfunction useDebouncedRefHistory(source, options = {}) {\n const filter = options.debounce ? debounceFilter(options.debounce) : void 0;\n const history = useRefHistory(source, { ...options, eventFilter: filter });\n return {\n ...history\n };\n}\n\nfunction useDeviceMotion(options = {}) {\n const {\n window = defaultWindow,\n requestPermissions = false,\n eventFilter = bypassFilter\n } = options;\n const isSupported = useSupported(() => typeof DeviceMotionEvent !== \"undefined\");\n const requirePermissions = useSupported(() => isSupported.value && \"requestPermission\" in DeviceMotionEvent && typeof DeviceMotionEvent.requestPermission === \"function\");\n const permissionGranted = shallowRef(false);\n const acceleration = ref({ x: null, y: null, z: null });\n const rotationRate = ref({ alpha: null, beta: null, gamma: null });\n const interval = shallowRef(0);\n const accelerationIncludingGravity = ref({\n x: null,\n y: null,\n z: null\n });\n function init() {\n if (window) {\n const onDeviceMotion = createFilterWrapper(\n eventFilter,\n (event) => {\n var _a, _b, _c, _d, _e, _f, _g, _h, _i;\n acceleration.value = {\n x: ((_a = event.acceleration) == null ? void 0 : _a.x) || null,\n y: ((_b = event.acceleration) == null ? void 0 : _b.y) || null,\n z: ((_c = event.acceleration) == null ? void 0 : _c.z) || null\n };\n accelerationIncludingGravity.value = {\n x: ((_d = event.accelerationIncludingGravity) == null ? void 0 : _d.x) || null,\n y: ((_e = event.accelerationIncludingGravity) == null ? void 0 : _e.y) || null,\n z: ((_f = event.accelerationIncludingGravity) == null ? void 0 : _f.z) || null\n };\n rotationRate.value = {\n alpha: ((_g = event.rotationRate) == null ? void 0 : _g.alpha) || null,\n beta: ((_h = event.rotationRate) == null ? void 0 : _h.beta) || null,\n gamma: ((_i = event.rotationRate) == null ? void 0 : _i.gamma) || null\n };\n interval.value = event.interval;\n }\n );\n useEventListener(window, \"devicemotion\", onDeviceMotion, { passive: true });\n }\n }\n const ensurePermissions = async () => {\n if (!requirePermissions.value)\n permissionGranted.value = true;\n if (permissionGranted.value)\n return;\n if (requirePermissions.value) {\n const requestPermission = DeviceMotionEvent.requestPermission;\n try {\n const response = await requestPermission();\n if (response === \"granted\") {\n permissionGranted.value = true;\n init();\n }\n } catch (error) {\n console.error(error);\n }\n }\n };\n if (isSupported.value) {\n if (requestPermissions && requirePermissions.value) {\n ensurePermissions().then(() => init());\n } else {\n init();\n }\n }\n return {\n acceleration,\n accelerationIncludingGravity,\n rotationRate,\n interval,\n isSupported,\n requirePermissions,\n ensurePermissions,\n permissionGranted\n };\n}\n\nfunction useDeviceOrientation(options = {}) {\n const { window = defaultWindow } = options;\n const isSupported = useSupported(() => window && \"DeviceOrientationEvent\" in window);\n const isAbsolute = shallowRef(false);\n const alpha = shallowRef(null);\n const beta = shallowRef(null);\n const gamma = shallowRef(null);\n if (window && isSupported.value) {\n useEventListener(window, \"deviceorientation\", (event) => {\n isAbsolute.value = event.absolute;\n alpha.value = event.alpha;\n beta.value = event.beta;\n gamma.value = event.gamma;\n }, { passive: true });\n }\n return {\n isSupported,\n isAbsolute,\n alpha,\n beta,\n gamma\n };\n}\n\nfunction useDevicePixelRatio(options = {}) {\n const {\n window = defaultWindow\n } = options;\n const pixelRatio = shallowRef(1);\n const query = useMediaQuery(() => `(resolution: ${pixelRatio.value}dppx)`, options);\n let stop = noop;\n if (window) {\n stop = watchImmediate(query, () => pixelRatio.value = window.devicePixelRatio);\n }\n return {\n pixelRatio: readonly(pixelRatio),\n stop\n };\n}\n\nfunction useDevicesList(options = {}) {\n const {\n navigator = defaultNavigator,\n requestPermissions = false,\n constraints = { audio: true, video: true },\n onUpdated\n } = options;\n const devices = ref([]);\n const videoInputs = computed(() => devices.value.filter((i) => i.kind === \"videoinput\"));\n const audioInputs = computed(() => devices.value.filter((i) => i.kind === \"audioinput\"));\n const audioOutputs = computed(() => devices.value.filter((i) => i.kind === \"audiooutput\"));\n const isSupported = useSupported(() => navigator && navigator.mediaDevices && navigator.mediaDevices.enumerateDevices);\n const permissionGranted = shallowRef(false);\n let stream;\n async function update() {\n if (!isSupported.value)\n return;\n devices.value = await navigator.mediaDevices.enumerateDevices();\n onUpdated == null ? void 0 : onUpdated(devices.value);\n if (stream) {\n stream.getTracks().forEach((t) => t.stop());\n stream = null;\n }\n }\n async function ensurePermissions() {\n const deviceName = constraints.video ? \"camera\" : \"microphone\";\n if (!isSupported.value)\n return false;\n if (permissionGranted.value)\n return true;\n const { state, query } = usePermission(deviceName, { controls: true });\n await query();\n if (state.value !== \"granted\") {\n let granted = true;\n try {\n stream = await navigator.mediaDevices.getUserMedia(constraints);\n } catch (e) {\n stream = null;\n granted = false;\n }\n update();\n permissionGranted.value = granted;\n } else {\n permissionGranted.value = true;\n }\n return permissionGranted.value;\n }\n if (isSupported.value) {\n if (requestPermissions)\n ensurePermissions();\n useEventListener(navigator.mediaDevices, \"devicechange\", update, { passive: true });\n update();\n }\n return {\n devices,\n ensurePermissions,\n permissionGranted,\n videoInputs,\n audioInputs,\n audioOutputs,\n isSupported\n };\n}\n\nfunction useDisplayMedia(options = {}) {\n var _a;\n const enabled = shallowRef((_a = options.enabled) != null ? _a : false);\n const video = options.video;\n const audio = options.audio;\n const { navigator = defaultNavigator } = options;\n const isSupported = useSupported(() => {\n var _a2;\n return (_a2 = navigator == null ? void 0 : navigator.mediaDevices) == null ? void 0 : _a2.getDisplayMedia;\n });\n const constraint = { audio, video };\n const stream = shallowRef();\n async function _start() {\n var _a2;\n if (!isSupported.value || stream.value)\n return;\n stream.value = await navigator.mediaDevices.getDisplayMedia(constraint);\n (_a2 = stream.value) == null ? void 0 : _a2.getTracks().forEach((t) => useEventListener(t, \"ended\", stop, { passive: true }));\n return stream.value;\n }\n async function _stop() {\n var _a2;\n (_a2 = stream.value) == null ? void 0 : _a2.getTracks().forEach((t) => t.stop());\n stream.value = void 0;\n }\n function stop() {\n _stop();\n enabled.value = false;\n }\n async function start() {\n await _start();\n if (stream.value)\n enabled.value = true;\n return stream.value;\n }\n watch(\n enabled,\n (v) => {\n if (v)\n _start();\n else\n _stop();\n },\n { immediate: true }\n );\n return {\n isSupported,\n stream,\n start,\n stop,\n enabled\n };\n}\n\nfunction useDocumentVisibility(options = {}) {\n const { document = defaultDocument } = options;\n if (!document)\n return shallowRef(\"visible\");\n const visibility = shallowRef(document.visibilityState);\n useEventListener(document, \"visibilitychange\", () => {\n visibility.value = document.visibilityState;\n }, { passive: true });\n return visibility;\n}\n\nfunction useDraggable(target, options = {}) {\n var _a;\n const {\n pointerTypes,\n preventDefault,\n stopPropagation,\n exact,\n onMove,\n onEnd,\n onStart,\n initialValue,\n axis = \"both\",\n draggingElement = defaultWindow,\n containerElement,\n handle: draggingHandle = target,\n buttons = [0]\n } = options;\n const position = ref(\n (_a = toValue(initialValue)) != null ? _a : { x: 0, y: 0 }\n );\n const pressedDelta = ref();\n const filterEvent = (e) => {\n if (pointerTypes)\n return pointerTypes.includes(e.pointerType);\n return true;\n };\n const handleEvent = (e) => {\n if (toValue(preventDefault))\n e.preventDefault();\n if (toValue(stopPropagation))\n e.stopPropagation();\n };\n const start = (e) => {\n var _a2;\n if (!toValue(buttons).includes(e.button))\n return;\n if (toValue(options.disabled) || !filterEvent(e))\n return;\n if (toValue(exact) && e.target !== toValue(target))\n return;\n const container = toValue(containerElement);\n const containerRect = (_a2 = container == null ? void 0 : container.getBoundingClientRect) == null ? void 0 : _a2.call(container);\n const targetRect = toValue(target).getBoundingClientRect();\n const pos = {\n x: e.clientX - (container ? targetRect.left - containerRect.left + container.scrollLeft : targetRect.left),\n y: e.clientY - (container ? targetRect.top - containerRect.top + container.scrollTop : targetRect.top)\n };\n if ((onStart == null ? void 0 : onStart(pos, e)) === false)\n return;\n pressedDelta.value = pos;\n handleEvent(e);\n };\n const move = (e) => {\n if (toValue(options.disabled) || !filterEvent(e))\n return;\n if (!pressedDelta.value)\n return;\n const container = toValue(containerElement);\n const targetRect = toValue(target).getBoundingClientRect();\n let { x, y } = position.value;\n if (axis === \"x\" || axis === \"both\") {\n x = e.clientX - pressedDelta.value.x;\n if (container)\n x = Math.min(Math.max(0, x), container.scrollWidth - targetRect.width);\n }\n if (axis === \"y\" || axis === \"both\") {\n y = e.clientY - pressedDelta.value.y;\n if (container)\n y = Math.min(Math.max(0, y), container.scrollHeight - targetRect.height);\n }\n position.value = {\n x,\n y\n };\n onMove == null ? void 0 : onMove(position.value, e);\n handleEvent(e);\n };\n const end = (e) => {\n if (toValue(options.disabled) || !filterEvent(e))\n return;\n if (!pressedDelta.value)\n return;\n pressedDelta.value = void 0;\n onEnd == null ? void 0 : onEnd(position.value, e);\n handleEvent(e);\n };\n if (isClient) {\n const config = () => {\n var _a2;\n return {\n capture: (_a2 = options.capture) != null ? _a2 : true,\n passive: !toValue(preventDefault)\n };\n };\n useEventListener(draggingHandle, \"pointerdown\", start, config);\n useEventListener(draggingElement, \"pointermove\", move, config);\n useEventListener(draggingElement, \"pointerup\", end, config);\n }\n return {\n ...toRefs(position),\n position,\n isDragging: computed(() => !!pressedDelta.value),\n style: computed(\n () => `left:${position.value.x}px;top:${position.value.y}px;`\n )\n };\n}\n\nfunction useDropZone(target, options = {}) {\n var _a, _b;\n const isOverDropZone = shallowRef(false);\n const files = shallowRef(null);\n let counter = 0;\n let isValid = true;\n if (isClient) {\n const _options = typeof options === \"function\" ? { onDrop: options } : options;\n const multiple = (_a = _options.multiple) != null ? _a : true;\n const preventDefaultForUnhandled = (_b = _options.preventDefaultForUnhandled) != null ? _b : false;\n const getFiles = (event) => {\n var _a2, _b2;\n const list = Array.from((_b2 = (_a2 = event.dataTransfer) == null ? void 0 : _a2.files) != null ? _b2 : []);\n return list.length === 0 ? null : multiple ? list : [list[0]];\n };\n const checkDataTypes = (types) => {\n const dataTypes = unref(_options.dataTypes);\n if (typeof dataTypes === \"function\")\n return dataTypes(types);\n if (!(dataTypes == null ? void 0 : dataTypes.length))\n return true;\n if (types.length === 0)\n return false;\n return types.every(\n (type) => dataTypes.some((allowedType) => type.includes(allowedType))\n );\n };\n const checkValidity = (items) => {\n const types = Array.from(items != null ? items : []).map((item) => item.type);\n const dataTypesValid = checkDataTypes(types);\n const multipleFilesValid = multiple || items.length <= 1;\n return dataTypesValid && multipleFilesValid;\n };\n const isSafari = () => /^(?:(?!chrome|android).)*safari/i.test(navigator.userAgent) && !(\"chrome\" in window);\n const handleDragEvent = (event, eventType) => {\n var _a2, _b2, _c, _d, _e, _f;\n const dataTransferItemList = (_a2 = event.dataTransfer) == null ? void 0 : _a2.items;\n isValid = (_b2 = dataTransferItemList && checkValidity(dataTransferItemList)) != null ? _b2 : false;\n if (preventDefaultForUnhandled) {\n event.preventDefault();\n }\n if (!isSafari() && !isValid) {\n if (event.dataTransfer) {\n event.dataTransfer.dropEffect = \"none\";\n }\n return;\n }\n event.preventDefault();\n if (event.dataTransfer) {\n event.dataTransfer.dropEffect = \"copy\";\n }\n const currentFiles = getFiles(event);\n switch (eventType) {\n case \"enter\":\n counter += 1;\n isOverDropZone.value = true;\n (_c = _options.onEnter) == null ? void 0 : _c.call(_options, null, event);\n break;\n case \"over\":\n (_d = _options.onOver) == null ? void 0 : _d.call(_options, null, event);\n break;\n case \"leave\":\n counter -= 1;\n if (counter === 0)\n isOverDropZone.value = false;\n (_e = _options.onLeave) == null ? void 0 : _e.call(_options, null, event);\n break;\n case \"drop\":\n counter = 0;\n isOverDropZone.value = false;\n if (isValid) {\n files.value = currentFiles;\n (_f = _options.onDrop) == null ? void 0 : _f.call(_options, currentFiles, event);\n }\n break;\n }\n };\n useEventListener(target, \"dragenter\", (event) => handleDragEvent(event, \"enter\"));\n useEventListener(target, \"dragover\", (event) => handleDragEvent(event, \"over\"));\n useEventListener(target, \"dragleave\", (event) => handleDragEvent(event, \"leave\"));\n useEventListener(target, \"drop\", (event) => handleDragEvent(event, \"drop\"));\n }\n return {\n files,\n isOverDropZone\n };\n}\n\nfunction useResizeObserver(target, callback, options = {}) {\n const { window = defaultWindow, ...observerOptions } = options;\n let observer;\n const isSupported = useSupported(() => window && \"ResizeObserver\" in window);\n const cleanup = () => {\n if (observer) {\n observer.disconnect();\n observer = void 0;\n }\n };\n const targets = computed(() => {\n const _targets = toValue(target);\n return Array.isArray(_targets) ? _targets.map((el) => unrefElement(el)) : [unrefElement(_targets)];\n });\n const stopWatch = watch(\n targets,\n (els) => {\n cleanup();\n if (isSupported.value && window) {\n observer = new ResizeObserver(callback);\n for (const _el of els) {\n if (_el)\n observer.observe(_el, observerOptions);\n }\n }\n },\n { immediate: true, flush: \"post\" }\n );\n const stop = () => {\n cleanup();\n stopWatch();\n };\n tryOnScopeDispose(stop);\n return {\n isSupported,\n stop\n };\n}\n\nfunction useElementBounding(target, options = {}) {\n const {\n reset = true,\n windowResize = true,\n windowScroll = true,\n immediate = true,\n updateTiming = \"sync\"\n } = options;\n const height = shallowRef(0);\n const bottom = shallowRef(0);\n const left = shallowRef(0);\n const right = shallowRef(0);\n const top = shallowRef(0);\n const width = shallowRef(0);\n const x = shallowRef(0);\n const y = shallowRef(0);\n function recalculate() {\n const el = unrefElement(target);\n if (!el) {\n if (reset) {\n height.value = 0;\n bottom.value = 0;\n left.value = 0;\n right.value = 0;\n top.value = 0;\n width.value = 0;\n x.value = 0;\n y.value = 0;\n }\n return;\n }\n const rect = el.getBoundingClientRect();\n height.value = rect.height;\n bottom.value = rect.bottom;\n left.value = rect.left;\n right.value = rect.right;\n top.value = rect.top;\n width.value = rect.width;\n x.value = rect.x;\n y.value = rect.y;\n }\n function update() {\n if (updateTiming === \"sync\")\n recalculate();\n else if (updateTiming === \"next-frame\")\n requestAnimationFrame(() => recalculate());\n }\n useResizeObserver(target, update);\n watch(() => unrefElement(target), (ele) => !ele && update());\n useMutationObserver(target, update, {\n attributeFilter: [\"style\", \"class\"]\n });\n if (windowScroll)\n useEventListener(\"scroll\", update, { capture: true, passive: true });\n if (windowResize)\n useEventListener(\"resize\", update, { passive: true });\n tryOnMounted(() => {\n if (immediate)\n update();\n });\n return {\n height,\n bottom,\n left,\n right,\n top,\n width,\n x,\n y,\n update\n };\n}\n\nfunction useElementByPoint(options) {\n const {\n x,\n y,\n document = defaultDocument,\n multiple,\n interval = \"requestAnimationFrame\",\n immediate = true\n } = options;\n const isSupported = useSupported(() => {\n if (toValue(multiple))\n return document && \"elementsFromPoint\" in document;\n return document && \"elementFromPoint\" in document;\n });\n const element = shallowRef(null);\n const cb = () => {\n var _a, _b;\n element.value = toValue(multiple) ? (_a = document == null ? void 0 : document.elementsFromPoint(toValue(x), toValue(y))) != null ? _a : [] : (_b = document == null ? void 0 : document.elementFromPoint(toValue(x), toValue(y))) != null ? _b : null;\n };\n const controls = interval === \"requestAnimationFrame\" ? useRafFn(cb, { immediate }) : useIntervalFn(cb, interval, { immediate });\n return {\n isSupported,\n element,\n ...controls\n };\n}\n\nfunction useElementHover(el, options = {}) {\n const {\n delayEnter = 0,\n delayLeave = 0,\n triggerOnRemoval = false,\n window = defaultWindow\n } = options;\n const isHovered = shallowRef(false);\n let timer;\n const toggle = (entering) => {\n const delay = entering ? delayEnter : delayLeave;\n if (timer) {\n clearTimeout(timer);\n timer = void 0;\n }\n if (delay)\n timer = setTimeout(() => isHovered.value = entering, delay);\n else\n isHovered.value = entering;\n };\n if (!window)\n return isHovered;\n useEventListener(el, \"mouseenter\", () => toggle(true), { passive: true });\n useEventListener(el, \"mouseleave\", () => toggle(false), { passive: true });\n if (triggerOnRemoval) {\n onElementRemoval(\n computed(() => unrefElement(el)),\n () => toggle(false)\n );\n }\n return isHovered;\n}\n\nfunction useElementSize(target, initialSize = { width: 0, height: 0 }, options = {}) {\n const { window = defaultWindow, box = \"content-box\" } = options;\n const isSVG = computed(() => {\n var _a, _b;\n return (_b = (_a = unrefElement(target)) == null ? void 0 : _a.namespaceURI) == null ? void 0 : _b.includes(\"svg\");\n });\n const width = shallowRef(initialSize.width);\n const height = shallowRef(initialSize.height);\n const { stop: stop1 } = useResizeObserver(\n target,\n ([entry]) => {\n const boxSize = box === \"border-box\" ? entry.borderBoxSize : box === \"content-box\" ? entry.contentBoxSize : entry.devicePixelContentBoxSize;\n if (window && isSVG.value) {\n const $elem = unrefElement(target);\n if ($elem) {\n const rect = $elem.getBoundingClientRect();\n width.value = rect.width;\n height.value = rect.height;\n }\n } else {\n if (boxSize) {\n const formatBoxSize = toArray(boxSize);\n width.value = formatBoxSize.reduce((acc, { inlineSize }) => acc + inlineSize, 0);\n height.value = formatBoxSize.reduce((acc, { blockSize }) => acc + blockSize, 0);\n } else {\n width.value = entry.contentRect.width;\n height.value = entry.contentRect.height;\n }\n }\n },\n options\n );\n tryOnMounted(() => {\n const ele = unrefElement(target);\n if (ele) {\n width.value = \"offsetWidth\" in ele ? ele.offsetWidth : initialSize.width;\n height.value = \"offsetHeight\" in ele ? ele.offsetHeight : initialSize.height;\n }\n });\n const stop2 = watch(\n () => unrefElement(target),\n (ele) => {\n width.value = ele ? initialSize.width : 0;\n height.value = ele ? initialSize.height : 0;\n }\n );\n function stop() {\n stop1();\n stop2();\n }\n return {\n width,\n height,\n stop\n };\n}\n\nfunction useIntersectionObserver(target, callback, options = {}) {\n const {\n root,\n rootMargin = \"0px\",\n threshold = 0,\n window = defaultWindow,\n immediate = true\n } = options;\n const isSupported = useSupported(() => window && \"IntersectionObserver\" in window);\n const targets = computed(() => {\n const _target = toValue(target);\n return toArray(_target).map(unrefElement).filter(notNullish);\n });\n let cleanup = noop;\n const isActive = shallowRef(immediate);\n const stopWatch = isSupported.value ? watch(\n () => [targets.value, unrefElement(root), isActive.value],\n ([targets2, root2]) => {\n cleanup();\n if (!isActive.value)\n return;\n if (!targets2.length)\n return;\n const observer = new IntersectionObserver(\n callback,\n {\n root: unrefElement(root2),\n rootMargin,\n threshold\n }\n );\n targets2.forEach((el) => el && observer.observe(el));\n cleanup = () => {\n observer.disconnect();\n cleanup = noop;\n };\n },\n { immediate, flush: \"post\" }\n ) : noop;\n const stop = () => {\n cleanup();\n stopWatch();\n isActive.value = false;\n };\n tryOnScopeDispose(stop);\n return {\n isSupported,\n isActive,\n pause() {\n cleanup();\n isActive.value = false;\n },\n resume() {\n isActive.value = true;\n },\n stop\n };\n}\n\nfunction useElementVisibility(element, options = {}) {\n const {\n window = defaultWindow,\n scrollTarget,\n threshold = 0,\n rootMargin,\n once = false\n } = options;\n const elementIsVisible = shallowRef(false);\n const { stop } = useIntersectionObserver(\n element,\n (intersectionObserverEntries) => {\n let isIntersecting = elementIsVisible.value;\n let latestTime = 0;\n for (const entry of intersectionObserverEntries) {\n if (entry.time >= latestTime) {\n latestTime = entry.time;\n isIntersecting = entry.isIntersecting;\n }\n }\n elementIsVisible.value = isIntersecting;\n if (once) {\n watchOnce(elementIsVisible, () => {\n stop();\n });\n }\n },\n {\n root: scrollTarget,\n window,\n threshold,\n rootMargin: toValue(rootMargin)\n }\n );\n return elementIsVisible;\n}\n\nconst events = /* @__PURE__ */ new Map();\n\nfunction useEventBus(key) {\n const scope = getCurrentScope();\n function on(listener) {\n var _a;\n const listeners = events.get(key) || /* @__PURE__ */ new Set();\n listeners.add(listener);\n events.set(key, listeners);\n const _off = () => off(listener);\n (_a = scope == null ? void 0 : scope.cleanups) == null ? void 0 : _a.push(_off);\n return _off;\n }\n function once(listener) {\n function _listener(...args) {\n off(_listener);\n listener(...args);\n }\n return on(_listener);\n }\n function off(listener) {\n const listeners = events.get(key);\n if (!listeners)\n return;\n listeners.delete(listener);\n if (!listeners.size)\n reset();\n }\n function reset() {\n events.delete(key);\n }\n function emit(event, payload) {\n var _a;\n (_a = events.get(key)) == null ? void 0 : _a.forEach((v) => v(event, payload));\n }\n return { on, once, off, emit, reset };\n}\n\nfunction resolveNestedOptions$1(options) {\n if (options === true)\n return {};\n return options;\n}\nfunction useEventSource(url, events = [], options = {}) {\n const event = shallowRef(null);\n const data = shallowRef(null);\n const status = shallowRef(\"CONNECTING\");\n const eventSource = ref(null);\n const error = shallowRef(null);\n const urlRef = toRef(url);\n const lastEventId = shallowRef(null);\n let explicitlyClosed = false;\n let retried = 0;\n const {\n withCredentials = false,\n immediate = true,\n autoConnect = true,\n autoReconnect\n } = options;\n const close = () => {\n if (isClient && eventSource.value) {\n eventSource.value.close();\n eventSource.value = null;\n status.value = \"CLOSED\";\n explicitlyClosed = true;\n }\n };\n const _init = () => {\n if (explicitlyClosed || typeof urlRef.value === \"undefined\")\n return;\n const es = new EventSource(urlRef.value, { withCredentials });\n status.value = \"CONNECTING\";\n eventSource.value = es;\n es.onopen = () => {\n status.value = \"OPEN\";\n error.value = null;\n };\n es.onerror = (e) => {\n status.value = \"CLOSED\";\n error.value = e;\n if (es.readyState === 2 && !explicitlyClosed && autoReconnect) {\n es.close();\n const {\n retries = -1,\n delay = 1e3,\n onFailed\n } = resolveNestedOptions$1(autoReconnect);\n retried += 1;\n if (typeof retries === \"number\" && (retries < 0 || retried < retries))\n setTimeout(_init, delay);\n else if (typeof retries === \"function\" && retries())\n setTimeout(_init, delay);\n else\n onFailed == null ? void 0 : onFailed();\n }\n };\n es.onmessage = (e) => {\n event.value = null;\n data.value = e.data;\n lastEventId.value = e.lastEventId;\n };\n for (const event_name of events) {\n useEventListener(es, event_name, (e) => {\n event.value = event_name;\n data.value = e.data || null;\n }, { passive: true });\n }\n };\n const open = () => {\n if (!isClient)\n return;\n close();\n explicitlyClosed = false;\n retried = 0;\n _init();\n };\n if (immediate)\n open();\n if (autoConnect)\n watch(urlRef, open);\n tryOnScopeDispose(close);\n return {\n eventSource,\n event,\n data,\n status,\n error,\n open,\n close,\n lastEventId\n };\n}\n\nfunction useEyeDropper(options = {}) {\n const { initialValue = \"\" } = options;\n const isSupported = useSupported(() => typeof window !== \"undefined\" && \"EyeDropper\" in window);\n const sRGBHex = shallowRef(initialValue);\n async function open(openOptions) {\n if (!isSupported.value)\n return;\n const eyeDropper = new window.EyeDropper();\n const result = await eyeDropper.open(openOptions);\n sRGBHex.value = result.sRGBHex;\n return result;\n }\n return { isSupported, sRGBHex, open };\n}\n\nfunction useFavicon(newIcon = null, options = {}) {\n const {\n baseUrl = \"\",\n rel = \"icon\",\n document = defaultDocument\n } = options;\n const favicon = toRef(newIcon);\n const applyIcon = (icon) => {\n const elements = document == null ? void 0 : document.head.querySelectorAll(`link[rel*=\"${rel}\"]`);\n if (!elements || elements.length === 0) {\n const link = document == null ? void 0 : document.createElement(\"link\");\n if (link) {\n link.rel = rel;\n link.href = `${baseUrl}${icon}`;\n link.type = `image/${icon.split(\".\").pop()}`;\n document == null ? void 0 : document.head.append(link);\n }\n return;\n }\n elements == null ? void 0 : elements.forEach((el) => el.href = `${baseUrl}${icon}`);\n };\n watch(\n favicon,\n (i, o) => {\n if (typeof i === \"string\" && i !== o)\n applyIcon(i);\n },\n { immediate: true }\n );\n return favicon;\n}\n\nconst payloadMapping = {\n json: \"application/json\",\n text: \"text/plain\"\n};\nfunction isFetchOptions(obj) {\n return obj && containsProp(obj, \"immediate\", \"refetch\", \"initialData\", \"timeout\", \"beforeFetch\", \"afterFetch\", \"onFetchError\", \"fetch\", \"updateDataOnError\");\n}\nconst reAbsolute = /^(?:[a-z][a-z\\d+\\-.]*:)?\\/\\//i;\nfunction isAbsoluteURL(url) {\n return reAbsolute.test(url);\n}\nfunction headersToObject(headers) {\n if (typeof Headers !== \"undefined\" && headers instanceof Headers)\n return Object.fromEntries(headers.entries());\n return headers;\n}\nfunction combineCallbacks(combination, ...callbacks) {\n if (combination === \"overwrite\") {\n return async (ctx) => {\n let callback;\n for (let i = callbacks.length - 1; i >= 0; i--) {\n if (callbacks[i] != null) {\n callback = callbacks[i];\n break;\n }\n }\n if (callback)\n return { ...ctx, ...await callback(ctx) };\n return ctx;\n };\n } else {\n return async (ctx) => {\n for (const callback of callbacks) {\n if (callback)\n ctx = { ...ctx, ...await callback(ctx) };\n }\n return ctx;\n };\n }\n}\nfunction createFetch(config = {}) {\n const _combination = config.combination || \"chain\";\n const _options = config.options || {};\n const _fetchOptions = config.fetchOptions || {};\n function useFactoryFetch(url, ...args) {\n const computedUrl = computed(() => {\n const baseUrl = toValue(config.baseUrl);\n const targetUrl = toValue(url);\n return baseUrl && !isAbsoluteURL(targetUrl) ? joinPaths(baseUrl, targetUrl) : targetUrl;\n });\n let options = _options;\n let fetchOptions = _fetchOptions;\n if (args.length > 0) {\n if (isFetchOptions(args[0])) {\n options = {\n ...options,\n ...args[0],\n beforeFetch: combineCallbacks(_combination, _options.beforeFetch, args[0].beforeFetch),\n afterFetch: combineCallbacks(_combination, _options.afterFetch, args[0].afterFetch),\n onFetchError: combineCallbacks(_combination, _options.onFetchError, args[0].onFetchError)\n };\n } else {\n fetchOptions = {\n ...fetchOptions,\n ...args[0],\n headers: {\n ...headersToObject(fetchOptions.headers) || {},\n ...headersToObject(args[0].headers) || {}\n }\n };\n }\n }\n if (args.length > 1 && isFetchOptions(args[1])) {\n options = {\n ...options,\n ...args[1],\n beforeFetch: combineCallbacks(_combination, _options.beforeFetch, args[1].beforeFetch),\n afterFetch: combineCallbacks(_combination, _options.afterFetch, args[1].afterFetch),\n onFetchError: combineCallbacks(_combination, _options.onFetchError, args[1].onFetchError)\n };\n }\n return useFetch(computedUrl, fetchOptions, options);\n }\n return useFactoryFetch;\n}\nfunction useFetch(url, ...args) {\n var _a;\n const supportsAbort = typeof AbortController === \"function\";\n let fetchOptions = {};\n let options = {\n immediate: true,\n refetch: false,\n timeout: 0,\n updateDataOnError: false\n };\n const config = {\n method: \"GET\",\n type: \"text\",\n payload: void 0\n };\n if (args.length > 0) {\n if (isFetchOptions(args[0]))\n options = { ...options, ...args[0] };\n else\n fetchOptions = args[0];\n }\n if (args.length > 1) {\n if (isFetchOptions(args[1]))\n options = { ...options, ...args[1] };\n }\n const {\n fetch = (_a = defaultWindow) == null ? void 0 : _a.fetch,\n initialData,\n timeout\n } = options;\n const responseEvent = createEventHook();\n const errorEvent = createEventHook();\n const finallyEvent = createEventHook();\n const isFinished = shallowRef(false);\n const isFetching = shallowRef(false);\n const aborted = shallowRef(false);\n const statusCode = shallowRef(null);\n const response = shallowRef(null);\n const error = shallowRef(null);\n const data = shallowRef(initialData || null);\n const canAbort = computed(() => supportsAbort && isFetching.value);\n let controller;\n let timer;\n const abort = () => {\n if (supportsAbort) {\n controller == null ? void 0 : controller.abort();\n controller = new AbortController();\n controller.signal.onabort = () => aborted.value = true;\n fetchOptions = {\n ...fetchOptions,\n signal: controller.signal\n };\n }\n };\n const loading = (isLoading) => {\n isFetching.value = isLoading;\n isFinished.value = !isLoading;\n };\n if (timeout)\n timer = useTimeoutFn(abort, timeout, { immediate: false });\n let executeCounter = 0;\n const execute = async (throwOnFailed = false) => {\n var _a2, _b;\n abort();\n loading(true);\n error.value = null;\n statusCode.value = null;\n aborted.value = false;\n executeCounter += 1;\n const currentExecuteCounter = executeCounter;\n const defaultFetchOptions = {\n method: config.method,\n headers: {}\n };\n const payload = toValue(config.payload);\n if (payload) {\n const headers = headersToObject(defaultFetchOptions.headers);\n const proto = Object.getPrototypeOf(payload);\n if (!config.payloadType && payload && (proto === Object.prototype || Array.isArray(proto)) && !(payload instanceof FormData))\n config.payloadType = \"json\";\n if (config.payloadType)\n headers[\"Content-Type\"] = (_a2 = payloadMapping[config.payloadType]) != null ? _a2 : config.payloadType;\n defaultFetchOptions.body = config.payloadType === \"json\" ? JSON.stringify(payload) : payload;\n }\n let isCanceled = false;\n const context = {\n url: toValue(url),\n options: {\n ...defaultFetchOptions,\n ...fetchOptions\n },\n cancel: () => {\n isCanceled = true;\n }\n };\n if (options.beforeFetch)\n Object.assign(context, await options.beforeFetch(context));\n if (isCanceled || !fetch) {\n loading(false);\n return Promise.resolve(null);\n }\n let responseData = null;\n if (timer)\n timer.start();\n return fetch(\n context.url,\n {\n ...defaultFetchOptions,\n ...context.options,\n headers: {\n ...headersToObject(defaultFetchOptions.headers),\n ...headersToObject((_b = context.options) == null ? void 0 : _b.headers)\n }\n }\n ).then(async (fetchResponse) => {\n response.value = fetchResponse;\n statusCode.value = fetchResponse.status;\n responseData = await fetchResponse.clone()[config.type]();\n if (!fetchResponse.ok) {\n data.value = initialData || null;\n throw new Error(fetchResponse.statusText);\n }\n if (options.afterFetch) {\n ({ data: responseData } = await options.afterFetch({\n data: responseData,\n response: fetchResponse,\n context,\n execute\n }));\n }\n data.value = responseData;\n responseEvent.trigger(fetchResponse);\n return fetchResponse;\n }).catch(async (fetchError) => {\n let errorData = fetchError.message || fetchError.name;\n if (options.onFetchError) {\n ({ error: errorData, data: responseData } = await options.onFetchError({\n data: responseData,\n error: fetchError,\n response: response.value,\n context,\n execute\n }));\n }\n error.value = errorData;\n if (options.updateDataOnError)\n data.value = responseData;\n errorEvent.trigger(fetchError);\n if (throwOnFailed)\n throw fetchError;\n return null;\n }).finally(() => {\n if (currentExecuteCounter === executeCounter)\n loading(false);\n if (timer)\n timer.stop();\n finallyEvent.trigger(null);\n });\n };\n const refetch = toRef(options.refetch);\n watch(\n [\n refetch,\n toRef(url)\n ],\n ([refetch2]) => refetch2 && execute(),\n { deep: true }\n );\n const shell = {\n isFinished: readonly(isFinished),\n isFetching: readonly(isFetching),\n statusCode,\n response,\n error,\n data,\n canAbort,\n aborted,\n abort,\n execute,\n onFetchResponse: responseEvent.on,\n onFetchError: errorEvent.on,\n onFetchFinally: finallyEvent.on,\n // method\n get: setMethod(\"GET\"),\n put: setMethod(\"PUT\"),\n post: setMethod(\"POST\"),\n delete: setMethod(\"DELETE\"),\n patch: setMethod(\"PATCH\"),\n head: setMethod(\"HEAD\"),\n options: setMethod(\"OPTIONS\"),\n // type\n json: setType(\"json\"),\n text: setType(\"text\"),\n blob: setType(\"blob\"),\n arrayBuffer: setType(\"arrayBuffer\"),\n formData: setType(\"formData\")\n };\n function setMethod(method) {\n return (payload, payloadType) => {\n if (!isFetching.value) {\n config.method = method;\n config.payload = payload;\n config.payloadType = payloadType;\n if (isRef(config.payload)) {\n watch(\n [\n refetch,\n toRef(config.payload)\n ],\n ([refetch2]) => refetch2 && execute(),\n { deep: true }\n );\n }\n return {\n ...shell,\n then(onFulfilled, onRejected) {\n return waitUntilFinished().then(onFulfilled, onRejected);\n }\n };\n }\n return void 0;\n };\n }\n function waitUntilFinished() {\n return new Promise((resolve, reject) => {\n until(isFinished).toBe(true).then(() => resolve(shell)).catch(reject);\n });\n }\n function setType(type) {\n return () => {\n if (!isFetching.value) {\n config.type = type;\n return {\n ...shell,\n then(onFulfilled, onRejected) {\n return waitUntilFinished().then(onFulfilled, onRejected);\n }\n };\n }\n return void 0;\n };\n }\n if (options.immediate)\n Promise.resolve().then(() => execute());\n return {\n ...shell,\n then(onFulfilled, onRejected) {\n return waitUntilFinished().then(onFulfilled, onRejected);\n }\n };\n}\nfunction joinPaths(start, end) {\n if (!start.endsWith(\"/\") && !end.startsWith(\"/\")) {\n return `${start}/${end}`;\n }\n if (start.endsWith(\"/\") && end.startsWith(\"/\")) {\n return `${start.slice(0, -1)}${end}`;\n }\n return `${start}${end}`;\n}\n\nconst DEFAULT_OPTIONS = {\n multiple: true,\n accept: \"*\",\n reset: false,\n directory: false\n};\nfunction prepareInitialFiles(files) {\n if (!files)\n return null;\n if (files instanceof FileList)\n return files;\n const dt = new DataTransfer();\n for (const file of files) {\n dt.items.add(file);\n }\n return dt.files;\n}\nfunction useFileDialog(options = {}) {\n const {\n document = defaultDocument\n } = options;\n const files = ref(prepareInitialFiles(options.initialFiles));\n const { on: onChange, trigger: changeTrigger } = createEventHook();\n const { on: onCancel, trigger: cancelTrigger } = createEventHook();\n let input;\n if (document) {\n input = document.createElement(\"input\");\n input.type = \"file\";\n input.onchange = (event) => {\n const result = event.target;\n files.value = result.files;\n changeTrigger(files.value);\n };\n input.oncancel = () => {\n cancelTrigger();\n };\n }\n const reset = () => {\n files.value = null;\n if (input && input.value) {\n input.value = \"\";\n changeTrigger(null);\n }\n };\n const open = (localOptions) => {\n if (!input)\n return;\n const _options = {\n ...DEFAULT_OPTIONS,\n ...options,\n ...localOptions\n };\n input.multiple = _options.multiple;\n input.accept = _options.accept;\n input.webkitdirectory = _options.directory;\n if (hasOwn(_options, \"capture\"))\n input.capture = _options.capture;\n if (_options.reset)\n reset();\n input.click();\n };\n return {\n files: readonly(files),\n open,\n reset,\n onCancel,\n onChange\n };\n}\n\nfunction useFileSystemAccess(options = {}) {\n const {\n window: _window = defaultWindow,\n dataType = \"Text\"\n } = options;\n const window = _window;\n const isSupported = useSupported(() => window && \"showSaveFilePicker\" in window && \"showOpenFilePicker\" in window);\n const fileHandle = shallowRef();\n const data = shallowRef();\n const file = shallowRef();\n const fileName = computed(() => {\n var _a, _b;\n return (_b = (_a = file.value) == null ? void 0 : _a.name) != null ? _b : \"\";\n });\n const fileMIME = computed(() => {\n var _a, _b;\n return (_b = (_a = file.value) == null ? void 0 : _a.type) != null ? _b : \"\";\n });\n const fileSize = computed(() => {\n var _a, _b;\n return (_b = (_a = file.value) == null ? void 0 : _a.size) != null ? _b : 0;\n });\n const fileLastModified = computed(() => {\n var _a, _b;\n return (_b = (_a = file.value) == null ? void 0 : _a.lastModified) != null ? _b : 0;\n });\n async function open(_options = {}) {\n if (!isSupported.value)\n return;\n const [handle] = await window.showOpenFilePicker({ ...toValue(options), ..._options });\n fileHandle.value = handle;\n await updateData();\n }\n async function create(_options = {}) {\n if (!isSupported.value)\n return;\n fileHandle.value = await window.showSaveFilePicker({ ...options, ..._options });\n data.value = void 0;\n await updateData();\n }\n async function save(_options = {}) {\n if (!isSupported.value)\n return;\n if (!fileHandle.value)\n return saveAs(_options);\n if (data.value) {\n const writableStream = await fileHandle.value.createWritable();\n await writableStream.write(data.value);\n await writableStream.close();\n }\n await updateFile();\n }\n async function saveAs(_options = {}) {\n if (!isSupported.value)\n return;\n fileHandle.value = await window.showSaveFilePicker({ ...options, ..._options });\n if (data.value) {\n const writableStream = await fileHandle.value.createWritable();\n await writableStream.write(data.value);\n await writableStream.close();\n }\n await updateFile();\n }\n async function updateFile() {\n var _a;\n file.value = await ((_a = fileHandle.value) == null ? void 0 : _a.getFile());\n }\n async function updateData() {\n var _a, _b;\n await updateFile();\n const type = toValue(dataType);\n if (type === \"Text\")\n data.value = await ((_a = file.value) == null ? void 0 : _a.text());\n else if (type === \"ArrayBuffer\")\n data.value = await ((_b = file.value) == null ? void 0 : _b.arrayBuffer());\n else if (type === \"Blob\")\n data.value = file.value;\n }\n watch(() => toValue(dataType), updateData);\n return {\n isSupported,\n data,\n file,\n fileName,\n fileMIME,\n fileSize,\n fileLastModified,\n open,\n create,\n save,\n saveAs,\n updateData\n };\n}\n\nfunction useFocus(target, options = {}) {\n const { initialValue = false, focusVisible = false, preventScroll = false } = options;\n const innerFocused = shallowRef(false);\n const targetElement = computed(() => unrefElement(target));\n const listenerOptions = { passive: true };\n useEventListener(targetElement, \"focus\", (event) => {\n var _a, _b;\n if (!focusVisible || ((_b = (_a = event.target).matches) == null ? void 0 : _b.call(_a, \":focus-visible\")))\n innerFocused.value = true;\n }, listenerOptions);\n useEventListener(targetElement, \"blur\", () => innerFocused.value = false, listenerOptions);\n const focused = computed({\n get: () => innerFocused.value,\n set(value) {\n var _a, _b;\n if (!value && innerFocused.value)\n (_a = targetElement.value) == null ? void 0 : _a.blur();\n else if (value && !innerFocused.value)\n (_b = targetElement.value) == null ? void 0 : _b.focus({ preventScroll });\n }\n });\n watch(\n targetElement,\n () => {\n focused.value = initialValue;\n },\n { immediate: true, flush: \"post\" }\n );\n return { focused };\n}\n\nconst EVENT_FOCUS_IN = \"focusin\";\nconst EVENT_FOCUS_OUT = \"focusout\";\nconst PSEUDO_CLASS_FOCUS_WITHIN = \":focus-within\";\nfunction useFocusWithin(target, options = {}) {\n const { window = defaultWindow } = options;\n const targetElement = computed(() => unrefElement(target));\n const _focused = shallowRef(false);\n const focused = computed(() => _focused.value);\n const activeElement = useActiveElement(options);\n if (!window || !activeElement.value) {\n return { focused };\n }\n const listenerOptions = { passive: true };\n useEventListener(targetElement, EVENT_FOCUS_IN, () => _focused.value = true, listenerOptions);\n useEventListener(targetElement, EVENT_FOCUS_OUT, () => {\n var _a, _b, _c;\n return _focused.value = (_c = (_b = (_a = targetElement.value) == null ? void 0 : _a.matches) == null ? void 0 : _b.call(_a, PSEUDO_CLASS_FOCUS_WITHIN)) != null ? _c : false;\n }, listenerOptions);\n return { focused };\n}\n\nfunction useFps(options) {\n var _a;\n const fps = shallowRef(0);\n if (typeof performance === \"undefined\")\n return fps;\n const every = (_a = options == null ? void 0 : options.every) != null ? _a : 10;\n let last = performance.now();\n let ticks = 0;\n useRafFn(() => {\n ticks += 1;\n if (ticks >= every) {\n const now = performance.now();\n const diff = now - last;\n fps.value = Math.round(1e3 / (diff / ticks));\n last = now;\n ticks = 0;\n }\n });\n return fps;\n}\n\nconst eventHandlers = [\n \"fullscreenchange\",\n \"webkitfullscreenchange\",\n \"webkitendfullscreen\",\n \"mozfullscreenchange\",\n \"MSFullscreenChange\"\n];\nfunction useFullscreen(target, options = {}) {\n const {\n document = defaultDocument,\n autoExit = false\n } = options;\n const targetRef = computed(() => {\n var _a;\n return (_a = unrefElement(target)) != null ? _a : document == null ? void 0 : document.documentElement;\n });\n const isFullscreen = shallowRef(false);\n const requestMethod = computed(() => {\n return [\n \"requestFullscreen\",\n \"webkitRequestFullscreen\",\n \"webkitEnterFullscreen\",\n \"webkitEnterFullScreen\",\n \"webkitRequestFullScreen\",\n \"mozRequestFullScreen\",\n \"msRequestFullscreen\"\n ].find((m) => document && m in document || targetRef.value && m in targetRef.value);\n });\n const exitMethod = computed(() => {\n return [\n \"exitFullscreen\",\n \"webkitExitFullscreen\",\n \"webkitExitFullScreen\",\n \"webkitCancelFullScreen\",\n \"mozCancelFullScreen\",\n \"msExitFullscreen\"\n ].find((m) => document && m in document || targetRef.value && m in targetRef.value);\n });\n const fullscreenEnabled = computed(() => {\n return [\n \"fullScreen\",\n \"webkitIsFullScreen\",\n \"webkitDisplayingFullscreen\",\n \"mozFullScreen\",\n \"msFullscreenElement\"\n ].find((m) => document && m in document || targetRef.value && m in targetRef.value);\n });\n const fullscreenElementMethod = [\n \"fullscreenElement\",\n \"webkitFullscreenElement\",\n \"mozFullScreenElement\",\n \"msFullscreenElement\"\n ].find((m) => document && m in document);\n const isSupported = useSupported(() => targetRef.value && document && requestMethod.value !== void 0 && exitMethod.value !== void 0 && fullscreenEnabled.value !== void 0);\n const isCurrentElementFullScreen = () => {\n if (fullscreenElementMethod)\n return (document == null ? void 0 : document[fullscreenElementMethod]) === targetRef.value;\n return false;\n };\n const isElementFullScreen = () => {\n if (fullscreenEnabled.value) {\n if (document && document[fullscreenEnabled.value] != null) {\n return document[fullscreenEnabled.value];\n } else {\n const target2 = targetRef.value;\n if ((target2 == null ? void 0 : target2[fullscreenEnabled.value]) != null) {\n return Boolean(target2[fullscreenEnabled.value]);\n }\n }\n }\n return false;\n };\n async function exit() {\n if (!isSupported.value || !isFullscreen.value)\n return;\n if (exitMethod.value) {\n if ((document == null ? void 0 : document[exitMethod.value]) != null) {\n await document[exitMethod.value]();\n } else {\n const target2 = targetRef.value;\n if ((target2 == null ? void 0 : target2[exitMethod.value]) != null)\n await target2[exitMethod.value]();\n }\n }\n isFullscreen.value = false;\n }\n async function enter() {\n if (!isSupported.value || isFullscreen.value)\n return;\n if (isElementFullScreen())\n await exit();\n const target2 = targetRef.value;\n if (requestMethod.value && (target2 == null ? void 0 : target2[requestMethod.value]) != null) {\n await target2[requestMethod.value]();\n isFullscreen.value = true;\n }\n }\n async function toggle() {\n await (isFullscreen.value ? exit() : enter());\n }\n const handlerCallback = () => {\n const isElementFullScreenValue = isElementFullScreen();\n if (!isElementFullScreenValue || isElementFullScreenValue && isCurrentElementFullScreen())\n isFullscreen.value = isElementFullScreenValue;\n };\n const listenerOptions = { capture: false, passive: true };\n useEventListener(document, eventHandlers, handlerCallback, listenerOptions);\n useEventListener(() => unrefElement(targetRef), eventHandlers, handlerCallback, listenerOptions);\n if (autoExit)\n tryOnScopeDispose(exit);\n return {\n isSupported,\n isFullscreen,\n enter,\n exit,\n toggle\n };\n}\n\nfunction mapGamepadToXbox360Controller(gamepad) {\n return computed(() => {\n if (gamepad.value) {\n return {\n buttons: {\n a: gamepad.value.buttons[0],\n b: gamepad.value.buttons[1],\n x: gamepad.value.buttons[2],\n y: gamepad.value.buttons[3]\n },\n bumper: {\n left: gamepad.value.buttons[4],\n right: gamepad.value.buttons[5]\n },\n triggers: {\n left: gamepad.value.buttons[6],\n right: gamepad.value.buttons[7]\n },\n stick: {\n left: {\n horizontal: gamepad.value.axes[0],\n vertical: gamepad.value.axes[1],\n button: gamepad.value.buttons[10]\n },\n right: {\n horizontal: gamepad.value.axes[2],\n vertical: gamepad.value.axes[3],\n button: gamepad.value.buttons[11]\n }\n },\n dpad: {\n up: gamepad.value.buttons[12],\n down: gamepad.value.buttons[13],\n left: gamepad.value.buttons[14],\n right: gamepad.value.buttons[15]\n },\n back: gamepad.value.buttons[8],\n start: gamepad.value.buttons[9]\n };\n }\n return null;\n });\n}\nfunction useGamepad(options = {}) {\n const {\n navigator = defaultNavigator\n } = options;\n const isSupported = useSupported(() => navigator && \"getGamepads\" in navigator);\n const gamepads = ref([]);\n const onConnectedHook = createEventHook();\n const onDisconnectedHook = createEventHook();\n const stateFromGamepad = (gamepad) => {\n const hapticActuators = [];\n const vibrationActuator = \"vibrationActuator\" in gamepad ? gamepad.vibrationActuator : null;\n if (vibrationActuator)\n hapticActuators.push(vibrationActuator);\n if (gamepad.hapticActuators)\n hapticActuators.push(...gamepad.hapticActuators);\n return {\n id: gamepad.id,\n index: gamepad.index,\n connected: gamepad.connected,\n mapping: gamepad.mapping,\n timestamp: gamepad.timestamp,\n vibrationActuator: gamepad.vibrationActuator,\n hapticActuators,\n axes: gamepad.axes.map((axes) => axes),\n buttons: gamepad.buttons.map((button) => ({ pressed: button.pressed, touched: button.touched, value: button.value }))\n };\n };\n const updateGamepadState = () => {\n const _gamepads = (navigator == null ? void 0 : navigator.getGamepads()) || [];\n for (const gamepad of _gamepads) {\n if (gamepad && gamepads.value[gamepad.index])\n gamepads.value[gamepad.index] = stateFromGamepad(gamepad);\n }\n };\n const { isActive, pause, resume } = useRafFn(updateGamepadState);\n const onGamepadConnected = (gamepad) => {\n if (!gamepads.value.some(({ index }) => index === gamepad.index)) {\n gamepads.value.push(stateFromGamepad(gamepad));\n onConnectedHook.trigger(gamepad.index);\n }\n resume();\n };\n const onGamepadDisconnected = (gamepad) => {\n gamepads.value = gamepads.value.filter((x) => x.index !== gamepad.index);\n onDisconnectedHook.trigger(gamepad.index);\n };\n const listenerOptions = { passive: true };\n useEventListener(\"gamepadconnected\", (e) => onGamepadConnected(e.gamepad), listenerOptions);\n useEventListener(\"gamepaddisconnected\", (e) => onGamepadDisconnected(e.gamepad), listenerOptions);\n tryOnMounted(() => {\n const _gamepads = (navigator == null ? void 0 : navigator.getGamepads()) || [];\n for (const gamepad of _gamepads) {\n if (gamepad && gamepads.value[gamepad.index])\n onGamepadConnected(gamepad);\n }\n });\n pause();\n return {\n isSupported,\n onConnected: onConnectedHook.on,\n onDisconnected: onDisconnectedHook.on,\n gamepads,\n pause,\n resume,\n isActive\n };\n}\n\nfunction useGeolocation(options = {}) {\n const {\n enableHighAccuracy = true,\n maximumAge = 3e4,\n timeout = 27e3,\n navigator = defaultNavigator,\n immediate = true\n } = options;\n const isSupported = useSupported(() => navigator && \"geolocation\" in navigator);\n const locatedAt = shallowRef(null);\n const error = shallowRef(null);\n const coords = ref({\n accuracy: 0,\n latitude: Number.POSITIVE_INFINITY,\n longitude: Number.POSITIVE_INFINITY,\n altitude: null,\n altitudeAccuracy: null,\n heading: null,\n speed: null\n });\n function updatePosition(position) {\n locatedAt.value = position.timestamp;\n coords.value = position.coords;\n error.value = null;\n }\n let watcher;\n function resume() {\n if (isSupported.value) {\n watcher = navigator.geolocation.watchPosition(\n updatePosition,\n (err) => error.value = err,\n {\n enableHighAccuracy,\n maximumAge,\n timeout\n }\n );\n }\n }\n if (immediate)\n resume();\n function pause() {\n if (watcher && navigator)\n navigator.geolocation.clearWatch(watcher);\n }\n tryOnScopeDispose(() => {\n pause();\n });\n return {\n isSupported,\n coords,\n locatedAt,\n error,\n resume,\n pause\n };\n}\n\nconst defaultEvents$1 = [\"mousemove\", \"mousedown\", \"resize\", \"keydown\", \"touchstart\", \"wheel\"];\nconst oneMinute = 6e4;\nfunction useIdle(timeout = oneMinute, options = {}) {\n const {\n initialState = false,\n listenForVisibilityChange = true,\n events = defaultEvents$1,\n window = defaultWindow,\n eventFilter = throttleFilter(50)\n } = options;\n const idle = shallowRef(initialState);\n const lastActive = shallowRef(timestamp());\n let timer;\n const reset = () => {\n idle.value = false;\n clearTimeout(timer);\n timer = setTimeout(() => idle.value = true, timeout);\n };\n const onEvent = createFilterWrapper(\n eventFilter,\n () => {\n lastActive.value = timestamp();\n reset();\n }\n );\n if (window) {\n const document = window.document;\n const listenerOptions = { passive: true };\n for (const event of events)\n useEventListener(window, event, onEvent, listenerOptions);\n if (listenForVisibilityChange) {\n useEventListener(document, \"visibilitychange\", () => {\n if (!document.hidden)\n onEvent();\n }, listenerOptions);\n }\n reset();\n }\n return {\n idle,\n lastActive,\n reset\n };\n}\n\nasync function loadImage(options) {\n return new Promise((resolve, reject) => {\n const img = new Image();\n const { src, srcset, sizes, class: clazz, loading, crossorigin, referrerPolicy, width, height, decoding, fetchPriority, ismap, usemap } = options;\n img.src = src;\n if (srcset != null)\n img.srcset = srcset;\n if (sizes != null)\n img.sizes = sizes;\n if (clazz != null)\n img.className = clazz;\n if (loading != null)\n img.loading = loading;\n if (crossorigin != null)\n img.crossOrigin = crossorigin;\n if (referrerPolicy != null)\n img.referrerPolicy = referrerPolicy;\n if (width != null)\n img.width = width;\n if (height != null)\n img.height = height;\n if (decoding != null)\n img.decoding = decoding;\n if (fetchPriority != null)\n img.fetchPriority = fetchPriority;\n if (ismap != null)\n img.isMap = ismap;\n if (usemap != null)\n img.useMap = usemap;\n img.onload = () => resolve(img);\n img.onerror = reject;\n });\n}\nfunction useImage(options, asyncStateOptions = {}) {\n const state = useAsyncState(\n () => loadImage(toValue(options)),\n void 0,\n {\n resetOnExecute: true,\n ...asyncStateOptions\n }\n );\n watch(\n () => toValue(options),\n () => state.execute(asyncStateOptions.delay),\n { deep: true }\n );\n return state;\n}\n\nfunction resolveElement(el) {\n if (typeof Window !== \"undefined\" && el instanceof Window)\n return el.document.documentElement;\n if (typeof Document !== \"undefined\" && el instanceof Document)\n return el.documentElement;\n return el;\n}\n\nconst ARRIVED_STATE_THRESHOLD_PIXELS = 1;\nfunction useScroll(element, options = {}) {\n const {\n throttle = 0,\n idle = 200,\n onStop = noop,\n onScroll = noop,\n offset = {\n left: 0,\n right: 0,\n top: 0,\n bottom: 0\n },\n eventListenerOptions = {\n capture: false,\n passive: true\n },\n behavior = \"auto\",\n window = defaultWindow,\n onError = (e) => {\n console.error(e);\n }\n } = options;\n const internalX = shallowRef(0);\n const internalY = shallowRef(0);\n const x = computed({\n get() {\n return internalX.value;\n },\n set(x2) {\n scrollTo(x2, void 0);\n }\n });\n const y = computed({\n get() {\n return internalY.value;\n },\n set(y2) {\n scrollTo(void 0, y2);\n }\n });\n function scrollTo(_x, _y) {\n var _a, _b, _c, _d;\n if (!window)\n return;\n const _element = toValue(element);\n if (!_element)\n return;\n (_c = _element instanceof Document ? window.document.body : _element) == null ? void 0 : _c.scrollTo({\n top: (_a = toValue(_y)) != null ? _a : y.value,\n left: (_b = toValue(_x)) != null ? _b : x.value,\n behavior: toValue(behavior)\n });\n const scrollContainer = ((_d = _element == null ? void 0 : _element.document) == null ? void 0 : _d.documentElement) || (_element == null ? void 0 : _element.documentElement) || _element;\n if (x != null)\n internalX.value = scrollContainer.scrollLeft;\n if (y != null)\n internalY.value = scrollContainer.scrollTop;\n }\n const isScrolling = shallowRef(false);\n const arrivedState = reactive({\n left: true,\n right: false,\n top: true,\n bottom: false\n });\n const directions = reactive({\n left: false,\n right: false,\n top: false,\n bottom: false\n });\n const onScrollEnd = (e) => {\n if (!isScrolling.value)\n return;\n isScrolling.value = false;\n directions.left = false;\n directions.right = false;\n directions.top = false;\n directions.bottom = false;\n onStop(e);\n };\n const onScrollEndDebounced = useDebounceFn(onScrollEnd, throttle + idle);\n const setArrivedState = (target) => {\n var _a;\n if (!window)\n return;\n const el = ((_a = target == null ? void 0 : target.document) == null ? void 0 : _a.documentElement) || (target == null ? void 0 : target.documentElement) || unrefElement(target);\n const { display, flexDirection, direction } = getComputedStyle(el);\n const directionMultipler = direction === \"rtl\" ? -1 : 1;\n const scrollLeft = el.scrollLeft;\n directions.left = scrollLeft < internalX.value;\n directions.right = scrollLeft > internalX.value;\n const left = Math.abs(scrollLeft * directionMultipler) <= (offset.left || 0);\n const right = Math.abs(scrollLeft * directionMultipler) + el.clientWidth >= el.scrollWidth - (offset.right || 0) - ARRIVED_STATE_THRESHOLD_PIXELS;\n if (display === \"flex\" && flexDirection === \"row-reverse\") {\n arrivedState.left = right;\n arrivedState.right = left;\n } else {\n arrivedState.left = left;\n arrivedState.right = right;\n }\n internalX.value = scrollLeft;\n let scrollTop = el.scrollTop;\n if (target === window.document && !scrollTop)\n scrollTop = window.document.body.scrollTop;\n directions.top = scrollTop < internalY.value;\n directions.bottom = scrollTop > internalY.value;\n const top = Math.abs(scrollTop) <= (offset.top || 0);\n const bottom = Math.abs(scrollTop) + el.clientHeight >= el.scrollHeight - (offset.bottom || 0) - ARRIVED_STATE_THRESHOLD_PIXELS;\n if (display === \"flex\" && flexDirection === \"column-reverse\") {\n arrivedState.top = bottom;\n arrivedState.bottom = top;\n } else {\n arrivedState.top = top;\n arrivedState.bottom = bottom;\n }\n internalY.value = scrollTop;\n };\n const onScrollHandler = (e) => {\n var _a;\n if (!window)\n return;\n const eventTarget = (_a = e.target.documentElement) != null ? _a : e.target;\n setArrivedState(eventTarget);\n isScrolling.value = true;\n onScrollEndDebounced(e);\n onScroll(e);\n };\n useEventListener(\n element,\n \"scroll\",\n throttle ? useThrottleFn(onScrollHandler, throttle, true, false) : onScrollHandler,\n eventListenerOptions\n );\n tryOnMounted(() => {\n try {\n const _element = toValue(element);\n if (!_element)\n return;\n setArrivedState(_element);\n } catch (e) {\n onError(e);\n }\n });\n useEventListener(\n element,\n \"scrollend\",\n onScrollEnd,\n eventListenerOptions\n );\n return {\n x,\n y,\n isScrolling,\n arrivedState,\n directions,\n measure() {\n const _element = toValue(element);\n if (window && _element)\n setArrivedState(_element);\n }\n };\n}\n\nfunction useInfiniteScroll(element, onLoadMore, options = {}) {\n var _a;\n const {\n direction = \"bottom\",\n interval = 100,\n canLoadMore = () => true\n } = options;\n const state = reactive(useScroll(\n element,\n {\n ...options,\n offset: {\n [direction]: (_a = options.distance) != null ? _a : 0,\n ...options.offset\n }\n }\n ));\n const promise = ref();\n const isLoading = computed(() => !!promise.value);\n const observedElement = computed(() => {\n return resolveElement(toValue(element));\n });\n const isElementVisible = useElementVisibility(observedElement);\n function checkAndLoad() {\n state.measure();\n if (!observedElement.value || !isElementVisible.value || !canLoadMore(observedElement.value))\n return;\n const { scrollHeight, clientHeight, scrollWidth, clientWidth } = observedElement.value;\n const isNarrower = direction === \"bottom\" || direction === \"top\" ? scrollHeight <= clientHeight : scrollWidth <= clientWidth;\n if (state.arrivedState[direction] || isNarrower) {\n if (!promise.value) {\n promise.value = Promise.all([\n onLoadMore(state),\n new Promise((resolve) => setTimeout(resolve, interval))\n ]).finally(() => {\n promise.value = null;\n nextTick(() => checkAndLoad());\n });\n }\n }\n }\n const stop = watch(\n () => [state.arrivedState[direction], isElementVisible.value],\n checkAndLoad,\n { immediate: true }\n );\n tryOnUnmounted(stop);\n return {\n isLoading,\n reset() {\n nextTick(() => checkAndLoad());\n }\n };\n}\n\nconst defaultEvents = [\"mousedown\", \"mouseup\", \"keydown\", \"keyup\"];\nfunction useKeyModifier(modifier, options = {}) {\n const {\n events = defaultEvents,\n document = defaultDocument,\n initial = null\n } = options;\n const state = shallowRef(initial);\n if (document) {\n events.forEach((listenerEvent) => {\n useEventListener(document, listenerEvent, (evt) => {\n if (typeof evt.getModifierState === \"function\")\n state.value = evt.getModifierState(modifier);\n }, { passive: true });\n });\n }\n return state;\n}\n\nfunction useLocalStorage(key, initialValue, options = {}) {\n const { window = defaultWindow } = options;\n return useStorage(key, initialValue, window == null ? void 0 : window.localStorage, options);\n}\n\nconst DefaultMagicKeysAliasMap = {\n ctrl: \"control\",\n command: \"meta\",\n cmd: \"meta\",\n option: \"alt\",\n up: \"arrowup\",\n down: \"arrowdown\",\n left: \"arrowleft\",\n right: \"arrowright\"\n};\n\nfunction useMagicKeys(options = {}) {\n const {\n reactive: useReactive = false,\n target = defaultWindow,\n aliasMap = DefaultMagicKeysAliasMap,\n passive = true,\n onEventFired = noop\n } = options;\n const current = reactive(/* @__PURE__ */ new Set());\n const obj = {\n toJSON() {\n return {};\n },\n current\n };\n const refs = useReactive ? reactive(obj) : obj;\n const metaDeps = /* @__PURE__ */ new Set();\n const usedKeys = /* @__PURE__ */ new Set();\n function setRefs(key, value) {\n if (key in refs) {\n if (useReactive)\n refs[key] = value;\n else\n refs[key].value = value;\n }\n }\n function reset() {\n current.clear();\n for (const key of usedKeys)\n setRefs(key, false);\n }\n function updateRefs(e, value) {\n var _a, _b;\n const key = (_a = e.key) == null ? void 0 : _a.toLowerCase();\n const code = (_b = e.code) == null ? void 0 : _b.toLowerCase();\n const values = [code, key].filter(Boolean);\n if (key) {\n if (value)\n current.add(key);\n else\n current.delete(key);\n }\n for (const key2 of values) {\n usedKeys.add(key2);\n setRefs(key2, value);\n }\n if (key === \"meta\" && !value) {\n metaDeps.forEach((key2) => {\n current.delete(key2);\n setRefs(key2, false);\n });\n metaDeps.clear();\n } else if (typeof e.getModifierState === \"function\" && e.getModifierState(\"Meta\") && value) {\n [...current, ...values].forEach((key2) => metaDeps.add(key2));\n }\n }\n useEventListener(target, \"keydown\", (e) => {\n updateRefs(e, true);\n return onEventFired(e);\n }, { passive });\n useEventListener(target, \"keyup\", (e) => {\n updateRefs(e, false);\n return onEventFired(e);\n }, { passive });\n useEventListener(\"blur\", reset, { passive });\n useEventListener(\"focus\", reset, { passive });\n const proxy = new Proxy(\n refs,\n {\n get(target2, prop, rec) {\n if (typeof prop !== \"string\")\n return Reflect.get(target2, prop, rec);\n prop = prop.toLowerCase();\n if (prop in aliasMap)\n prop = aliasMap[prop];\n if (!(prop in refs)) {\n if (/[+_-]/.test(prop)) {\n const keys = prop.split(/[+_-]/g).map((i) => i.trim());\n refs[prop] = computed(() => keys.map((key) => toValue(proxy[key])).every(Boolean));\n } else {\n refs[prop] = shallowRef(false);\n }\n }\n const r = Reflect.get(target2, prop, rec);\n return useReactive ? toValue(r) : r;\n }\n }\n );\n return proxy;\n}\n\nfunction usingElRef(source, cb) {\n if (toValue(source))\n cb(toValue(source));\n}\nfunction timeRangeToArray(timeRanges) {\n let ranges = [];\n for (let i = 0; i < timeRanges.length; ++i)\n ranges = [...ranges, [timeRanges.start(i), timeRanges.end(i)]];\n return ranges;\n}\nfunction tracksToArray(tracks) {\n return Array.from(tracks).map(({ label, kind, language, mode, activeCues, cues, inBandMetadataTrackDispatchType }, id) => ({ id, label, kind, language, mode, activeCues, cues, inBandMetadataTrackDispatchType }));\n}\nconst defaultOptions = {\n src: \"\",\n tracks: []\n};\nfunction useMediaControls(target, options = {}) {\n target = toRef(target);\n options = {\n ...defaultOptions,\n ...options\n };\n const {\n document = defaultDocument\n } = options;\n const listenerOptions = { passive: true };\n const currentTime = shallowRef(0);\n const duration = shallowRef(0);\n const seeking = shallowRef(false);\n const volume = shallowRef(1);\n const waiting = shallowRef(false);\n const ended = shallowRef(false);\n const playing = shallowRef(false);\n const rate = shallowRef(1);\n const stalled = shallowRef(false);\n const buffered = ref([]);\n const tracks = ref([]);\n const selectedTrack = shallowRef(-1);\n const isPictureInPicture = shallowRef(false);\n const muted = shallowRef(false);\n const supportsPictureInPicture = document && \"pictureInPictureEnabled\" in document;\n const sourceErrorEvent = createEventHook();\n const playbackErrorEvent = createEventHook();\n const disableTrack = (track) => {\n usingElRef(target, (el) => {\n if (track) {\n const id = typeof track === \"number\" ? track : track.id;\n el.textTracks[id].mode = \"disabled\";\n } else {\n for (let i = 0; i < el.textTracks.length; ++i)\n el.textTracks[i].mode = \"disabled\";\n }\n selectedTrack.value = -1;\n });\n };\n const enableTrack = (track, disableTracks = true) => {\n usingElRef(target, (el) => {\n const id = typeof track === \"number\" ? track : track.id;\n if (disableTracks)\n disableTrack();\n el.textTracks[id].mode = \"showing\";\n selectedTrack.value = id;\n });\n };\n const togglePictureInPicture = () => {\n return new Promise((resolve, reject) => {\n usingElRef(target, async (el) => {\n if (supportsPictureInPicture) {\n if (!isPictureInPicture.value) {\n el.requestPictureInPicture().then(resolve).catch(reject);\n } else {\n document.exitPictureInPicture().then(resolve).catch(reject);\n }\n }\n });\n });\n };\n watchEffect(() => {\n if (!document)\n return;\n const el = toValue(target);\n if (!el)\n return;\n const src = toValue(options.src);\n let sources = [];\n if (!src)\n return;\n if (typeof src === \"string\")\n sources = [{ src }];\n else if (Array.isArray(src))\n sources = src;\n else if (isObject(src))\n sources = [src];\n el.querySelectorAll(\"source\").forEach((e) => {\n e.remove();\n });\n sources.forEach(({ src: src2, type, media }) => {\n const source = document.createElement(\"source\");\n source.setAttribute(\"src\", src2);\n source.setAttribute(\"type\", type || \"\");\n source.setAttribute(\"media\", media || \"\");\n useEventListener(source, \"error\", sourceErrorEvent.trigger, listenerOptions);\n el.appendChild(source);\n });\n el.load();\n });\n watch([target, volume], () => {\n const el = toValue(target);\n if (!el)\n return;\n el.volume = volume.value;\n });\n watch([target, muted], () => {\n const el = toValue(target);\n if (!el)\n return;\n el.muted = muted.value;\n });\n watch([target, rate], () => {\n const el = toValue(target);\n if (!el)\n return;\n el.playbackRate = rate.value;\n });\n watchEffect(() => {\n if (!document)\n return;\n const textTracks = toValue(options.tracks);\n const el = toValue(target);\n if (!textTracks || !textTracks.length || !el)\n return;\n el.querySelectorAll(\"track\").forEach((e) => e.remove());\n textTracks.forEach(({ default: isDefault, kind, label, src, srcLang }, i) => {\n const track = document.createElement(\"track\");\n track.default = isDefault || false;\n track.kind = kind;\n track.label = label;\n track.src = src;\n track.srclang = srcLang;\n if (track.default)\n selectedTrack.value = i;\n el.appendChild(track);\n });\n });\n const { ignoreUpdates: ignoreCurrentTimeUpdates } = watchIgnorable(currentTime, (time) => {\n const el = toValue(target);\n if (!el)\n return;\n el.currentTime = time;\n });\n const { ignoreUpdates: ignorePlayingUpdates } = watchIgnorable(playing, (isPlaying) => {\n const el = toValue(target);\n if (!el)\n return;\n if (isPlaying) {\n el.play().catch((e) => {\n playbackErrorEvent.trigger(e);\n throw e;\n });\n } else {\n el.pause();\n }\n });\n useEventListener(\n target,\n \"timeupdate\",\n () => ignoreCurrentTimeUpdates(() => currentTime.value = toValue(target).currentTime),\n listenerOptions\n );\n useEventListener(\n target,\n \"durationchange\",\n () => duration.value = toValue(target).duration,\n listenerOptions\n );\n useEventListener(\n target,\n \"progress\",\n () => buffered.value = timeRangeToArray(toValue(target).buffered),\n listenerOptions\n );\n useEventListener(\n target,\n \"seeking\",\n () => seeking.value = true,\n listenerOptions\n );\n useEventListener(\n target,\n \"seeked\",\n () => seeking.value = false,\n listenerOptions\n );\n useEventListener(\n target,\n [\"waiting\", \"loadstart\"],\n () => {\n waiting.value = true;\n ignorePlayingUpdates(() => playing.value = false);\n },\n listenerOptions\n );\n useEventListener(\n target,\n \"loadeddata\",\n () => waiting.value = false,\n listenerOptions\n );\n useEventListener(\n target,\n \"playing\",\n () => {\n waiting.value = false;\n ended.value = false;\n ignorePlayingUpdates(() => playing.value = true);\n },\n listenerOptions\n );\n useEventListener(\n target,\n \"ratechange\",\n () => rate.value = toValue(target).playbackRate,\n listenerOptions\n );\n useEventListener(\n target,\n \"stalled\",\n () => stalled.value = true,\n listenerOptions\n );\n useEventListener(\n target,\n \"ended\",\n () => ended.value = true,\n listenerOptions\n );\n useEventListener(\n target,\n \"pause\",\n () => ignorePlayingUpdates(() => playing.value = false),\n listenerOptions\n );\n useEventListener(\n target,\n \"play\",\n () => ignorePlayingUpdates(() => playing.value = true),\n listenerOptions\n );\n useEventListener(\n target,\n \"enterpictureinpicture\",\n () => isPictureInPicture.value = true,\n listenerOptions\n );\n useEventListener(\n target,\n \"leavepictureinpicture\",\n () => isPictureInPicture.value = false,\n listenerOptions\n );\n useEventListener(\n target,\n \"volumechange\",\n () => {\n const el = toValue(target);\n if (!el)\n return;\n volume.value = el.volume;\n muted.value = el.muted;\n },\n listenerOptions\n );\n const listeners = [];\n const stop = watch([target], () => {\n const el = toValue(target);\n if (!el)\n return;\n stop();\n listeners[0] = useEventListener(el.textTracks, \"addtrack\", () => tracks.value = tracksToArray(el.textTracks), listenerOptions);\n listeners[1] = useEventListener(el.textTracks, \"removetrack\", () => tracks.value = tracksToArray(el.textTracks), listenerOptions);\n listeners[2] = useEventListener(el.textTracks, \"change\", () => tracks.value = tracksToArray(el.textTracks), listenerOptions);\n });\n tryOnScopeDispose(() => listeners.forEach((listener) => listener()));\n return {\n currentTime,\n duration,\n waiting,\n seeking,\n ended,\n stalled,\n buffered,\n playing,\n rate,\n // Volume\n volume,\n muted,\n // Tracks\n tracks,\n selectedTrack,\n enableTrack,\n disableTrack,\n // Picture in Picture\n supportsPictureInPicture,\n togglePictureInPicture,\n isPictureInPicture,\n // Events\n onSourceError: sourceErrorEvent.on,\n onPlaybackError: playbackErrorEvent.on\n };\n}\n\nfunction useMemoize(resolver, options) {\n const initCache = () => {\n if (options == null ? void 0 : options.cache)\n return shallowReactive(options.cache);\n return shallowReactive(/* @__PURE__ */ new Map());\n };\n const cache = initCache();\n const generateKey = (...args) => (options == null ? void 0 : options.getKey) ? options.getKey(...args) : JSON.stringify(args);\n const _loadData = (key, ...args) => {\n cache.set(key, resolver(...args));\n return cache.get(key);\n };\n const loadData = (...args) => _loadData(generateKey(...args), ...args);\n const deleteData = (...args) => {\n cache.delete(generateKey(...args));\n };\n const clearData = () => {\n cache.clear();\n };\n const memoized = (...args) => {\n const key = generateKey(...args);\n if (cache.has(key))\n return cache.get(key);\n return _loadData(key, ...args);\n };\n memoized.load = loadData;\n memoized.delete = deleteData;\n memoized.clear = clearData;\n memoized.generateKey = generateKey;\n memoized.cache = cache;\n return memoized;\n}\n\nfunction useMemory(options = {}) {\n const memory = ref();\n const isSupported = useSupported(() => typeof performance !== \"undefined\" && \"memory\" in performance);\n if (isSupported.value) {\n const { interval = 1e3 } = options;\n useIntervalFn(() => {\n memory.value = performance.memory;\n }, interval, { immediate: options.immediate, immediateCallback: options.immediateCallback });\n }\n return { isSupported, memory };\n}\n\nconst UseMouseBuiltinExtractors = {\n page: (event) => [event.pageX, event.pageY],\n client: (event) => [event.clientX, event.clientY],\n screen: (event) => [event.screenX, event.screenY],\n movement: (event) => event instanceof MouseEvent ? [event.movementX, event.movementY] : null\n};\nfunction useMouse(options = {}) {\n const {\n type = \"page\",\n touch = true,\n resetOnTouchEnds = false,\n initialValue = { x: 0, y: 0 },\n window = defaultWindow,\n target = window,\n scroll = true,\n eventFilter\n } = options;\n let _prevMouseEvent = null;\n let _prevScrollX = 0;\n let _prevScrollY = 0;\n const x = shallowRef(initialValue.x);\n const y = shallowRef(initialValue.y);\n const sourceType = shallowRef(null);\n const extractor = typeof type === \"function\" ? type : UseMouseBuiltinExtractors[type];\n const mouseHandler = (event) => {\n const result = extractor(event);\n _prevMouseEvent = event;\n if (result) {\n [x.value, y.value] = result;\n sourceType.value = \"mouse\";\n }\n if (window) {\n _prevScrollX = window.scrollX;\n _prevScrollY = window.scrollY;\n }\n };\n const touchHandler = (event) => {\n if (event.touches.length > 0) {\n const result = extractor(event.touches[0]);\n if (result) {\n [x.value, y.value] = result;\n sourceType.value = \"touch\";\n }\n }\n };\n const scrollHandler = () => {\n if (!_prevMouseEvent || !window)\n return;\n const pos = extractor(_prevMouseEvent);\n if (_prevMouseEvent instanceof MouseEvent && pos) {\n x.value = pos[0] + window.scrollX - _prevScrollX;\n y.value = pos[1] + window.scrollY - _prevScrollY;\n }\n };\n const reset = () => {\n x.value = initialValue.x;\n y.value = initialValue.y;\n };\n const mouseHandlerWrapper = eventFilter ? (event) => eventFilter(() => mouseHandler(event), {}) : (event) => mouseHandler(event);\n const touchHandlerWrapper = eventFilter ? (event) => eventFilter(() => touchHandler(event), {}) : (event) => touchHandler(event);\n const scrollHandlerWrapper = eventFilter ? () => eventFilter(() => scrollHandler(), {}) : () => scrollHandler();\n if (target) {\n const listenerOptions = { passive: true };\n useEventListener(target, [\"mousemove\", \"dragover\"], mouseHandlerWrapper, listenerOptions);\n if (touch && type !== \"movement\") {\n useEventListener(target, [\"touchstart\", \"touchmove\"], touchHandlerWrapper, listenerOptions);\n if (resetOnTouchEnds)\n useEventListener(target, \"touchend\", reset, listenerOptions);\n }\n if (scroll && type === \"page\")\n useEventListener(window, \"scroll\", scrollHandlerWrapper, listenerOptions);\n }\n return {\n x,\n y,\n sourceType\n };\n}\n\nfunction useMouseInElement(target, options = {}) {\n const {\n handleOutside = true,\n window = defaultWindow\n } = options;\n const type = options.type || \"page\";\n const { x, y, sourceType } = useMouse(options);\n const targetRef = shallowRef(target != null ? target : window == null ? void 0 : window.document.body);\n const elementX = shallowRef(0);\n const elementY = shallowRef(0);\n const elementPositionX = shallowRef(0);\n const elementPositionY = shallowRef(0);\n const elementHeight = shallowRef(0);\n const elementWidth = shallowRef(0);\n const isOutside = shallowRef(true);\n let stop = () => {\n };\n if (window) {\n stop = watch(\n [targetRef, x, y],\n () => {\n const el = unrefElement(targetRef);\n if (!el || !(el instanceof Element))\n return;\n const {\n left,\n top,\n width,\n height\n } = el.getBoundingClientRect();\n elementPositionX.value = left + (type === \"page\" ? window.pageXOffset : 0);\n elementPositionY.value = top + (type === \"page\" ? window.pageYOffset : 0);\n elementHeight.value = height;\n elementWidth.value = width;\n const elX = x.value - elementPositionX.value;\n const elY = y.value - elementPositionY.value;\n isOutside.value = width === 0 || height === 0 || elX < 0 || elY < 0 || elX > width || elY > height;\n if (handleOutside || !isOutside.value) {\n elementX.value = elX;\n elementY.value = elY;\n }\n },\n { immediate: true }\n );\n useEventListener(\n document,\n \"mouseleave\",\n () => isOutside.value = true,\n { passive: true }\n );\n }\n return {\n x,\n y,\n sourceType,\n elementX,\n elementY,\n elementPositionX,\n elementPositionY,\n elementHeight,\n elementWidth,\n isOutside,\n stop\n };\n}\n\nfunction useMousePressed(options = {}) {\n const {\n touch = true,\n drag = true,\n capture = false,\n initialValue = false,\n window = defaultWindow\n } = options;\n const pressed = shallowRef(initialValue);\n const sourceType = shallowRef(null);\n if (!window) {\n return {\n pressed,\n sourceType\n };\n }\n const onPressed = (srcType) => (event) => {\n var _a;\n pressed.value = true;\n sourceType.value = srcType;\n (_a = options.onPressed) == null ? void 0 : _a.call(options, event);\n };\n const onReleased = (event) => {\n var _a;\n pressed.value = false;\n sourceType.value = null;\n (_a = options.onReleased) == null ? void 0 : _a.call(options, event);\n };\n const target = computed(() => unrefElement(options.target) || window);\n const listenerOptions = { passive: true, capture };\n useEventListener(target, \"mousedown\", onPressed(\"mouse\"), listenerOptions);\n useEventListener(window, \"mouseleave\", onReleased, listenerOptions);\n useEventListener(window, \"mouseup\", onReleased, listenerOptions);\n if (drag) {\n useEventListener(target, \"dragstart\", onPressed(\"mouse\"), listenerOptions);\n useEventListener(window, \"drop\", onReleased, listenerOptions);\n useEventListener(window, \"dragend\", onReleased, listenerOptions);\n }\n if (touch) {\n useEventListener(target, \"touchstart\", onPressed(\"touch\"), listenerOptions);\n useEventListener(window, \"touchend\", onReleased, listenerOptions);\n useEventListener(window, \"touchcancel\", onReleased, listenerOptions);\n }\n return {\n pressed,\n sourceType\n };\n}\n\nfunction useNavigatorLanguage(options = {}) {\n const { window = defaultWindow } = options;\n const navigator = window == null ? void 0 : window.navigator;\n const isSupported = useSupported(() => navigator && \"language\" in navigator);\n const language = shallowRef(navigator == null ? void 0 : navigator.language);\n useEventListener(window, \"languagechange\", () => {\n if (navigator)\n language.value = navigator.language;\n }, { passive: true });\n return {\n isSupported,\n language\n };\n}\n\nfunction useNetwork(options = {}) {\n const { window = defaultWindow } = options;\n const navigator = window == null ? void 0 : window.navigator;\n const isSupported = useSupported(() => navigator && \"connection\" in navigator);\n const isOnline = shallowRef(true);\n const saveData = shallowRef(false);\n const offlineAt = shallowRef(void 0);\n const onlineAt = shallowRef(void 0);\n const downlink = shallowRef(void 0);\n const downlinkMax = shallowRef(void 0);\n const rtt = shallowRef(void 0);\n const effectiveType = shallowRef(void 0);\n const type = shallowRef(\"unknown\");\n const connection = isSupported.value && navigator.connection;\n function updateNetworkInformation() {\n if (!navigator)\n return;\n isOnline.value = navigator.onLine;\n offlineAt.value = isOnline.value ? void 0 : Date.now();\n onlineAt.value = isOnline.value ? Date.now() : void 0;\n if (connection) {\n downlink.value = connection.downlink;\n downlinkMax.value = connection.downlinkMax;\n effectiveType.value = connection.effectiveType;\n rtt.value = connection.rtt;\n saveData.value = connection.saveData;\n type.value = connection.type;\n }\n }\n const listenerOptions = { passive: true };\n if (window) {\n useEventListener(window, \"offline\", () => {\n isOnline.value = false;\n offlineAt.value = Date.now();\n }, listenerOptions);\n useEventListener(window, \"online\", () => {\n isOnline.value = true;\n onlineAt.value = Date.now();\n }, listenerOptions);\n }\n if (connection)\n useEventListener(connection, \"change\", updateNetworkInformation, listenerOptions);\n updateNetworkInformation();\n return {\n isSupported,\n isOnline: readonly(isOnline),\n saveData: readonly(saveData),\n offlineAt: readonly(offlineAt),\n onlineAt: readonly(onlineAt),\n downlink: readonly(downlink),\n downlinkMax: readonly(downlinkMax),\n effectiveType: readonly(effectiveType),\n rtt: readonly(rtt),\n type: readonly(type)\n };\n}\n\nfunction useNow(options = {}) {\n const {\n controls: exposeControls = false,\n interval = \"requestAnimationFrame\"\n } = options;\n const now = ref(/* @__PURE__ */ new Date());\n const update = () => now.value = /* @__PURE__ */ new Date();\n const controls = interval === \"requestAnimationFrame\" ? useRafFn(update, { immediate: true }) : useIntervalFn(update, interval, { immediate: true });\n if (exposeControls) {\n return {\n now,\n ...controls\n };\n } else {\n return now;\n }\n}\n\nfunction useObjectUrl(object) {\n const url = shallowRef();\n const release = () => {\n if (url.value)\n URL.revokeObjectURL(url.value);\n url.value = void 0;\n };\n watch(\n () => toValue(object),\n (newObject) => {\n release();\n if (newObject)\n url.value = URL.createObjectURL(newObject);\n },\n { immediate: true }\n );\n tryOnScopeDispose(release);\n return readonly(url);\n}\n\nfunction useClamp(value, min, max) {\n if (typeof value === \"function\" || isReadonly(value))\n return computed(() => clamp(toValue(value), toValue(min), toValue(max)));\n const _value = ref(value);\n return computed({\n get() {\n return _value.value = clamp(_value.value, toValue(min), toValue(max));\n },\n set(value2) {\n _value.value = clamp(value2, toValue(min), toValue(max));\n }\n });\n}\n\nfunction useOffsetPagination(options) {\n const {\n total = Number.POSITIVE_INFINITY,\n pageSize = 10,\n page = 1,\n onPageChange = noop,\n onPageSizeChange = noop,\n onPageCountChange = noop\n } = options;\n const currentPageSize = useClamp(pageSize, 1, Number.POSITIVE_INFINITY);\n const pageCount = computed(() => Math.max(\n 1,\n Math.ceil(toValue(total) / toValue(currentPageSize))\n ));\n const currentPage = useClamp(page, 1, pageCount);\n const isFirstPage = computed(() => currentPage.value === 1);\n const isLastPage = computed(() => currentPage.value === pageCount.value);\n if (isRef(page)) {\n syncRef(page, currentPage, {\n direction: isReadonly(page) ? \"ltr\" : \"both\"\n });\n }\n if (isRef(pageSize)) {\n syncRef(pageSize, currentPageSize, {\n direction: isReadonly(pageSize) ? \"ltr\" : \"both\"\n });\n }\n function prev() {\n currentPage.value--;\n }\n function next() {\n currentPage.value++;\n }\n const returnValue = {\n currentPage,\n currentPageSize,\n pageCount,\n isFirstPage,\n isLastPage,\n prev,\n next\n };\n watch(currentPage, () => {\n onPageChange(reactive(returnValue));\n });\n watch(currentPageSize, () => {\n onPageSizeChange(reactive(returnValue));\n });\n watch(pageCount, () => {\n onPageCountChange(reactive(returnValue));\n });\n return returnValue;\n}\n\nfunction useOnline(options = {}) {\n const { isOnline } = useNetwork(options);\n return isOnline;\n}\n\nfunction usePageLeave(options = {}) {\n const { window = defaultWindow } = options;\n const isLeft = shallowRef(false);\n const handler = (event) => {\n if (!window)\n return;\n event = event || window.event;\n const from = event.relatedTarget || event.toElement;\n isLeft.value = !from;\n };\n if (window) {\n const listenerOptions = { passive: true };\n useEventListener(window, \"mouseout\", handler, listenerOptions);\n useEventListener(window.document, \"mouseleave\", handler, listenerOptions);\n useEventListener(window.document, \"mouseenter\", handler, listenerOptions);\n }\n return isLeft;\n}\n\nfunction useScreenOrientation(options = {}) {\n const {\n window = defaultWindow\n } = options;\n const isSupported = useSupported(() => window && \"screen\" in window && \"orientation\" in window.screen);\n const screenOrientation = isSupported.value ? window.screen.orientation : {};\n const orientation = ref(screenOrientation.type);\n const angle = shallowRef(screenOrientation.angle || 0);\n if (isSupported.value) {\n useEventListener(window, \"orientationchange\", () => {\n orientation.value = screenOrientation.type;\n angle.value = screenOrientation.angle;\n }, { passive: true });\n }\n const lockOrientation = (type) => {\n if (isSupported.value && typeof screenOrientation.lock === \"function\")\n return screenOrientation.lock(type);\n return Promise.reject(new Error(\"Not supported\"));\n };\n const unlockOrientation = () => {\n if (isSupported.value && typeof screenOrientation.unlock === \"function\")\n screenOrientation.unlock();\n };\n return {\n isSupported,\n orientation,\n angle,\n lockOrientation,\n unlockOrientation\n };\n}\n\nfunction useParallax(target, options = {}) {\n const {\n deviceOrientationTiltAdjust = (i) => i,\n deviceOrientationRollAdjust = (i) => i,\n mouseTiltAdjust = (i) => i,\n mouseRollAdjust = (i) => i,\n window = defaultWindow\n } = options;\n const orientation = reactive(useDeviceOrientation({ window }));\n const screenOrientation = reactive(useScreenOrientation({ window }));\n const {\n elementX: x,\n elementY: y,\n elementWidth: width,\n elementHeight: height\n } = useMouseInElement(target, { handleOutside: false, window });\n const source = computed(() => {\n if (orientation.isSupported && (orientation.alpha != null && orientation.alpha !== 0 || orientation.gamma != null && orientation.gamma !== 0)) {\n return \"deviceOrientation\";\n }\n return \"mouse\";\n });\n const roll = computed(() => {\n if (source.value === \"deviceOrientation\") {\n let value;\n switch (screenOrientation.orientation) {\n case \"landscape-primary\":\n value = orientation.gamma / 90;\n break;\n case \"landscape-secondary\":\n value = -orientation.gamma / 90;\n break;\n case \"portrait-primary\":\n value = -orientation.beta / 90;\n break;\n case \"portrait-secondary\":\n value = orientation.beta / 90;\n break;\n default:\n value = -orientation.beta / 90;\n }\n return deviceOrientationRollAdjust(value);\n } else {\n const value = -(y.value - height.value / 2) / height.value;\n return mouseRollAdjust(value);\n }\n });\n const tilt = computed(() => {\n if (source.value === \"deviceOrientation\") {\n let value;\n switch (screenOrientation.orientation) {\n case \"landscape-primary\":\n value = orientation.beta / 90;\n break;\n case \"landscape-secondary\":\n value = -orientation.beta / 90;\n break;\n case \"portrait-primary\":\n value = orientation.gamma / 90;\n break;\n case \"portrait-secondary\":\n value = -orientation.gamma / 90;\n break;\n default:\n value = orientation.gamma / 90;\n }\n return deviceOrientationTiltAdjust(value);\n } else {\n const value = (x.value - width.value / 2) / width.value;\n return mouseTiltAdjust(value);\n }\n });\n return { roll, tilt, source };\n}\n\nfunction useParentElement(element = useCurrentElement()) {\n const parentElement = shallowRef();\n const update = () => {\n const el = unrefElement(element);\n if (el)\n parentElement.value = el.parentElement;\n };\n tryOnMounted(update);\n watch(() => toValue(element), update);\n return parentElement;\n}\n\nfunction usePerformanceObserver(options, callback) {\n const {\n window = defaultWindow,\n immediate = true,\n ...performanceOptions\n } = options;\n const isSupported = useSupported(() => window && \"PerformanceObserver\" in window);\n let observer;\n const stop = () => {\n observer == null ? void 0 : observer.disconnect();\n };\n const start = () => {\n if (isSupported.value) {\n stop();\n observer = new PerformanceObserver(callback);\n observer.observe(performanceOptions);\n }\n };\n tryOnScopeDispose(stop);\n if (immediate)\n start();\n return {\n isSupported,\n start,\n stop\n };\n}\n\nconst defaultState = {\n x: 0,\n y: 0,\n pointerId: 0,\n pressure: 0,\n tiltX: 0,\n tiltY: 0,\n width: 0,\n height: 0,\n twist: 0,\n pointerType: null\n};\nconst keys = /* @__PURE__ */ Object.keys(defaultState);\nfunction usePointer(options = {}) {\n const {\n target = defaultWindow\n } = options;\n const isInside = shallowRef(false);\n const state = ref(options.initialValue || {});\n Object.assign(state.value, defaultState, state.value);\n const handler = (event) => {\n isInside.value = true;\n if (options.pointerTypes && !options.pointerTypes.includes(event.pointerType))\n return;\n state.value = objectPick(event, keys, false);\n };\n if (target) {\n const listenerOptions = { passive: true };\n useEventListener(target, [\"pointerdown\", \"pointermove\", \"pointerup\"], handler, listenerOptions);\n useEventListener(target, \"pointerleave\", () => isInside.value = false, listenerOptions);\n }\n return {\n ...toRefs(state),\n isInside\n };\n}\n\nfunction usePointerLock(target, options = {}) {\n const { document = defaultDocument } = options;\n const isSupported = useSupported(() => document && \"pointerLockElement\" in document);\n const element = shallowRef();\n const triggerElement = shallowRef();\n let targetElement;\n if (isSupported.value) {\n const listenerOptions = { passive: true };\n useEventListener(document, \"pointerlockchange\", () => {\n var _a;\n const currentElement = (_a = document.pointerLockElement) != null ? _a : element.value;\n if (targetElement && currentElement === targetElement) {\n element.value = document.pointerLockElement;\n if (!element.value)\n targetElement = triggerElement.value = null;\n }\n }, listenerOptions);\n useEventListener(document, \"pointerlockerror\", () => {\n var _a;\n const currentElement = (_a = document.pointerLockElement) != null ? _a : element.value;\n if (targetElement && currentElement === targetElement) {\n const action = document.pointerLockElement ? \"release\" : \"acquire\";\n throw new Error(`Failed to ${action} pointer lock.`);\n }\n }, listenerOptions);\n }\n async function lock(e) {\n var _a;\n if (!isSupported.value)\n throw new Error(\"Pointer Lock API is not supported by your browser.\");\n triggerElement.value = e instanceof Event ? e.currentTarget : null;\n targetElement = e instanceof Event ? (_a = unrefElement(target)) != null ? _a : triggerElement.value : unrefElement(e);\n if (!targetElement)\n throw new Error(\"Target element undefined.\");\n targetElement.requestPointerLock();\n return await until(element).toBe(targetElement);\n }\n async function unlock() {\n if (!element.value)\n return false;\n document.exitPointerLock();\n await until(element).toBeNull();\n return true;\n }\n return {\n isSupported,\n element,\n triggerElement,\n lock,\n unlock\n };\n}\n\nfunction usePointerSwipe(target, options = {}) {\n const targetRef = toRef(target);\n const {\n threshold = 50,\n onSwipe,\n onSwipeEnd,\n onSwipeStart,\n disableTextSelect = false\n } = options;\n const posStart = reactive({ x: 0, y: 0 });\n const updatePosStart = (x, y) => {\n posStart.x = x;\n posStart.y = y;\n };\n const posEnd = reactive({ x: 0, y: 0 });\n const updatePosEnd = (x, y) => {\n posEnd.x = x;\n posEnd.y = y;\n };\n const distanceX = computed(() => posStart.x - posEnd.x);\n const distanceY = computed(() => posStart.y - posEnd.y);\n const { max, abs } = Math;\n const isThresholdExceeded = computed(() => max(abs(distanceX.value), abs(distanceY.value)) >= threshold);\n const isSwiping = shallowRef(false);\n const isPointerDown = shallowRef(false);\n const direction = computed(() => {\n if (!isThresholdExceeded.value)\n return \"none\";\n if (abs(distanceX.value) > abs(distanceY.value)) {\n return distanceX.value > 0 ? \"left\" : \"right\";\n } else {\n return distanceY.value > 0 ? \"up\" : \"down\";\n }\n });\n const eventIsAllowed = (e) => {\n var _a, _b, _c;\n const isReleasingButton = e.buttons === 0;\n const isPrimaryButton = e.buttons === 1;\n return (_c = (_b = (_a = options.pointerTypes) == null ? void 0 : _a.includes(e.pointerType)) != null ? _b : isReleasingButton || isPrimaryButton) != null ? _c : true;\n };\n const listenerOptions = { passive: true };\n const stops = [\n useEventListener(target, \"pointerdown\", (e) => {\n if (!eventIsAllowed(e))\n return;\n isPointerDown.value = true;\n const eventTarget = e.target;\n eventTarget == null ? void 0 : eventTarget.setPointerCapture(e.pointerId);\n const { clientX: x, clientY: y } = e;\n updatePosStart(x, y);\n updatePosEnd(x, y);\n onSwipeStart == null ? void 0 : onSwipeStart(e);\n }, listenerOptions),\n useEventListener(target, \"pointermove\", (e) => {\n if (!eventIsAllowed(e))\n return;\n if (!isPointerDown.value)\n return;\n const { clientX: x, clientY: y } = e;\n updatePosEnd(x, y);\n if (!isSwiping.value && isThresholdExceeded.value)\n isSwiping.value = true;\n if (isSwiping.value)\n onSwipe == null ? void 0 : onSwipe(e);\n }, listenerOptions),\n useEventListener(target, \"pointerup\", (e) => {\n if (!eventIsAllowed(e))\n return;\n if (isSwiping.value)\n onSwipeEnd == null ? void 0 : onSwipeEnd(e, direction.value);\n isPointerDown.value = false;\n isSwiping.value = false;\n }, listenerOptions)\n ];\n tryOnMounted(() => {\n var _a, _b, _c, _d, _e, _f, _g, _h;\n (_b = (_a = targetRef.value) == null ? void 0 : _a.style) == null ? void 0 : _b.setProperty(\"touch-action\", \"none\");\n if (disableTextSelect) {\n (_d = (_c = targetRef.value) == null ? void 0 : _c.style) == null ? void 0 : _d.setProperty(\"-webkit-user-select\", \"none\");\n (_f = (_e = targetRef.value) == null ? void 0 : _e.style) == null ? void 0 : _f.setProperty(\"-ms-user-select\", \"none\");\n (_h = (_g = targetRef.value) == null ? void 0 : _g.style) == null ? void 0 : _h.setProperty(\"user-select\", \"none\");\n }\n });\n const stop = () => stops.forEach((s) => s());\n return {\n isSwiping: readonly(isSwiping),\n direction: readonly(direction),\n posStart: readonly(posStart),\n posEnd: readonly(posEnd),\n distanceX,\n distanceY,\n stop\n };\n}\n\nfunction usePreferredColorScheme(options) {\n const isLight = useMediaQuery(\"(prefers-color-scheme: light)\", options);\n const isDark = useMediaQuery(\"(prefers-color-scheme: dark)\", options);\n return computed(() => {\n if (isDark.value)\n return \"dark\";\n if (isLight.value)\n return \"light\";\n return \"no-preference\";\n });\n}\n\nfunction usePreferredContrast(options) {\n const isMore = useMediaQuery(\"(prefers-contrast: more)\", options);\n const isLess = useMediaQuery(\"(prefers-contrast: less)\", options);\n const isCustom = useMediaQuery(\"(prefers-contrast: custom)\", options);\n return computed(() => {\n if (isMore.value)\n return \"more\";\n if (isLess.value)\n return \"less\";\n if (isCustom.value)\n return \"custom\";\n return \"no-preference\";\n });\n}\n\nfunction usePreferredLanguages(options = {}) {\n const { window = defaultWindow } = options;\n if (!window)\n return ref([\"en\"]);\n const navigator = window.navigator;\n const value = ref(navigator.languages);\n useEventListener(window, \"languagechange\", () => {\n value.value = navigator.languages;\n }, { passive: true });\n return value;\n}\n\nfunction usePreferredReducedMotion(options) {\n const isReduced = useMediaQuery(\"(prefers-reduced-motion: reduce)\", options);\n return computed(() => {\n if (isReduced.value)\n return \"reduce\";\n return \"no-preference\";\n });\n}\n\nfunction usePreferredReducedTransparency(options) {\n const isReduced = useMediaQuery(\"(prefers-reduced-transparency: reduce)\", options);\n return computed(() => {\n if (isReduced.value)\n return \"reduce\";\n return \"no-preference\";\n });\n}\n\nfunction usePrevious(value, initialValue) {\n const previous = shallowRef(initialValue);\n watch(\n toRef(value),\n (_, oldValue) => {\n previous.value = oldValue;\n },\n { flush: \"sync\" }\n );\n return readonly(previous);\n}\n\nconst topVarName = \"--vueuse-safe-area-top\";\nconst rightVarName = \"--vueuse-safe-area-right\";\nconst bottomVarName = \"--vueuse-safe-area-bottom\";\nconst leftVarName = \"--vueuse-safe-area-left\";\nfunction useScreenSafeArea() {\n const top = shallowRef(\"\");\n const right = shallowRef(\"\");\n const bottom = shallowRef(\"\");\n const left = shallowRef(\"\");\n if (isClient) {\n const topCssVar = useCssVar(topVarName);\n const rightCssVar = useCssVar(rightVarName);\n const bottomCssVar = useCssVar(bottomVarName);\n const leftCssVar = useCssVar(leftVarName);\n topCssVar.value = \"env(safe-area-inset-top, 0px)\";\n rightCssVar.value = \"env(safe-area-inset-right, 0px)\";\n bottomCssVar.value = \"env(safe-area-inset-bottom, 0px)\";\n leftCssVar.value = \"env(safe-area-inset-left, 0px)\";\n update();\n useEventListener(\"resize\", useDebounceFn(update), { passive: true });\n }\n function update() {\n top.value = getValue(topVarName);\n right.value = getValue(rightVarName);\n bottom.value = getValue(bottomVarName);\n left.value = getValue(leftVarName);\n }\n return {\n top,\n right,\n bottom,\n left,\n update\n };\n}\nfunction getValue(position) {\n return getComputedStyle(document.documentElement).getPropertyValue(position);\n}\n\nfunction useScriptTag(src, onLoaded = noop, options = {}) {\n const {\n immediate = true,\n manual = false,\n type = \"text/javascript\",\n async = true,\n crossOrigin,\n referrerPolicy,\n noModule,\n defer,\n document = defaultDocument,\n attrs = {}\n } = options;\n const scriptTag = shallowRef(null);\n let _promise = null;\n const loadScript = (waitForScriptLoad) => new Promise((resolve, reject) => {\n const resolveWithElement = (el2) => {\n scriptTag.value = el2;\n resolve(el2);\n return el2;\n };\n if (!document) {\n resolve(false);\n return;\n }\n let shouldAppend = false;\n let el = document.querySelector(`script[src=\"${toValue(src)}\"]`);\n if (!el) {\n el = document.createElement(\"script\");\n el.type = type;\n el.async = async;\n el.src = toValue(src);\n if (defer)\n el.defer = defer;\n if (crossOrigin)\n el.crossOrigin = crossOrigin;\n if (noModule)\n el.noModule = noModule;\n if (referrerPolicy)\n el.referrerPolicy = referrerPolicy;\n Object.entries(attrs).forEach(([name, value]) => el == null ? void 0 : el.setAttribute(name, value));\n shouldAppend = true;\n } else if (el.hasAttribute(\"data-loaded\")) {\n resolveWithElement(el);\n }\n const listenerOptions = {\n passive: true\n };\n useEventListener(el, \"error\", (event) => reject(event), listenerOptions);\n useEventListener(el, \"abort\", (event) => reject(event), listenerOptions);\n useEventListener(el, \"load\", () => {\n el.setAttribute(\"data-loaded\", \"true\");\n onLoaded(el);\n resolveWithElement(el);\n }, listenerOptions);\n if (shouldAppend)\n el = document.head.appendChild(el);\n if (!waitForScriptLoad)\n resolveWithElement(el);\n });\n const load = (waitForScriptLoad = true) => {\n if (!_promise)\n _promise = loadScript(waitForScriptLoad);\n return _promise;\n };\n const unload = () => {\n if (!document)\n return;\n _promise = null;\n if (scriptTag.value)\n scriptTag.value = null;\n const el = document.querySelector(`script[src=\"${toValue(src)}\"]`);\n if (el)\n document.head.removeChild(el);\n };\n if (immediate && !manual)\n tryOnMounted(load);\n if (!manual)\n tryOnUnmounted(unload);\n return { scriptTag, load, unload };\n}\n\nfunction checkOverflowScroll(ele) {\n const style = window.getComputedStyle(ele);\n if (style.overflowX === \"scroll\" || style.overflowY === \"scroll\" || style.overflowX === \"auto\" && ele.clientWidth < ele.scrollWidth || style.overflowY === \"auto\" && ele.clientHeight < ele.scrollHeight) {\n return true;\n } else {\n const parent = ele.parentNode;\n if (!parent || parent.tagName === \"BODY\")\n return false;\n return checkOverflowScroll(parent);\n }\n}\nfunction preventDefault(rawEvent) {\n const e = rawEvent || window.event;\n const _target = e.target;\n if (checkOverflowScroll(_target))\n return false;\n if (e.touches.length > 1)\n return true;\n if (e.preventDefault)\n e.preventDefault();\n return false;\n}\nconst elInitialOverflow = /* @__PURE__ */ new WeakMap();\nfunction useScrollLock(element, initialState = false) {\n const isLocked = shallowRef(initialState);\n let stopTouchMoveListener = null;\n let initialOverflow = \"\";\n watch(toRef(element), (el) => {\n const target = resolveElement(toValue(el));\n if (target) {\n const ele = target;\n if (!elInitialOverflow.get(ele))\n elInitialOverflow.set(ele, ele.style.overflow);\n if (ele.style.overflow !== \"hidden\")\n initialOverflow = ele.style.overflow;\n if (ele.style.overflow === \"hidden\")\n return isLocked.value = true;\n if (isLocked.value)\n return ele.style.overflow = \"hidden\";\n }\n }, {\n immediate: true\n });\n const lock = () => {\n const el = resolveElement(toValue(element));\n if (!el || isLocked.value)\n return;\n if (isIOS) {\n stopTouchMoveListener = useEventListener(\n el,\n \"touchmove\",\n (e) => {\n preventDefault(e);\n },\n { passive: false }\n );\n }\n el.style.overflow = \"hidden\";\n isLocked.value = true;\n };\n const unlock = () => {\n const el = resolveElement(toValue(element));\n if (!el || !isLocked.value)\n return;\n if (isIOS)\n stopTouchMoveListener == null ? void 0 : stopTouchMoveListener();\n el.style.overflow = initialOverflow;\n elInitialOverflow.delete(el);\n isLocked.value = false;\n };\n tryOnScopeDispose(unlock);\n return computed({\n get() {\n return isLocked.value;\n },\n set(v) {\n if (v)\n lock();\n else unlock();\n }\n });\n}\n\nfunction useSessionStorage(key, initialValue, options = {}) {\n const { window = defaultWindow } = options;\n return useStorage(key, initialValue, window == null ? void 0 : window.sessionStorage, options);\n}\n\nfunction useShare(shareOptions = {}, options = {}) {\n const { navigator = defaultNavigator } = options;\n const _navigator = navigator;\n const isSupported = useSupported(() => _navigator && \"canShare\" in _navigator);\n const share = async (overrideOptions = {}) => {\n if (isSupported.value) {\n const data = {\n ...toValue(shareOptions),\n ...toValue(overrideOptions)\n };\n let granted = true;\n if (data.files && _navigator.canShare)\n granted = _navigator.canShare({ files: data.files });\n if (granted)\n return _navigator.share(data);\n }\n };\n return {\n isSupported,\n share\n };\n}\n\nconst defaultSortFn = (source, compareFn) => source.sort(compareFn);\nconst defaultCompare = (a, b) => a - b;\nfunction useSorted(...args) {\n var _a, _b, _c, _d;\n const [source] = args;\n let compareFn = defaultCompare;\n let options = {};\n if (args.length === 2) {\n if (typeof args[1] === \"object\") {\n options = args[1];\n compareFn = (_a = options.compareFn) != null ? _a : defaultCompare;\n } else {\n compareFn = (_b = args[1]) != null ? _b : defaultCompare;\n }\n } else if (args.length > 2) {\n compareFn = (_c = args[1]) != null ? _c : defaultCompare;\n options = (_d = args[2]) != null ? _d : {};\n }\n const {\n dirty = false,\n sortFn = defaultSortFn\n } = options;\n if (!dirty)\n return computed(() => sortFn([...toValue(source)], compareFn));\n watchEffect(() => {\n const result = sortFn(toValue(source), compareFn);\n if (isRef(source))\n source.value = result;\n else\n source.splice(0, source.length, ...result);\n });\n return source;\n}\n\nfunction useSpeechRecognition(options = {}) {\n const {\n interimResults = true,\n continuous = true,\n maxAlternatives = 1,\n window = defaultWindow\n } = options;\n const lang = toRef(options.lang || \"en-US\");\n const isListening = shallowRef(false);\n const isFinal = shallowRef(false);\n const result = shallowRef(\"\");\n const error = shallowRef(void 0);\n let recognition;\n const start = () => {\n isListening.value = true;\n };\n const stop = () => {\n isListening.value = false;\n };\n const toggle = (value = !isListening.value) => {\n if (value) {\n start();\n } else {\n stop();\n }\n };\n const SpeechRecognition = window && (window.SpeechRecognition || window.webkitSpeechRecognition);\n const isSupported = useSupported(() => SpeechRecognition);\n if (isSupported.value) {\n recognition = new SpeechRecognition();\n recognition.continuous = continuous;\n recognition.interimResults = interimResults;\n recognition.lang = toValue(lang);\n recognition.maxAlternatives = maxAlternatives;\n recognition.onstart = () => {\n isListening.value = true;\n isFinal.value = false;\n };\n watch(lang, (lang2) => {\n if (recognition && !isListening.value)\n recognition.lang = lang2;\n });\n recognition.onresult = (event) => {\n const currentResult = event.results[event.resultIndex];\n const { transcript } = currentResult[0];\n isFinal.value = currentResult.isFinal;\n result.value = transcript;\n error.value = void 0;\n };\n recognition.onerror = (event) => {\n error.value = event;\n };\n recognition.onend = () => {\n isListening.value = false;\n recognition.lang = toValue(lang);\n };\n watch(isListening, (newValue, oldValue) => {\n if (newValue === oldValue)\n return;\n if (newValue)\n recognition.start();\n else\n recognition.stop();\n });\n }\n tryOnScopeDispose(() => {\n stop();\n });\n return {\n isSupported,\n isListening,\n isFinal,\n recognition,\n result,\n error,\n toggle,\n start,\n stop\n };\n}\n\nfunction useSpeechSynthesis(text, options = {}) {\n const {\n pitch = 1,\n rate = 1,\n volume = 1,\n window = defaultWindow\n } = options;\n const synth = window && window.speechSynthesis;\n const isSupported = useSupported(() => synth);\n const isPlaying = shallowRef(false);\n const status = shallowRef(\"init\");\n const spokenText = toRef(text || \"\");\n const lang = toRef(options.lang || \"en-US\");\n const error = shallowRef(void 0);\n const toggle = (value = !isPlaying.value) => {\n isPlaying.value = value;\n };\n const bindEventsForUtterance = (utterance2) => {\n utterance2.lang = toValue(lang);\n utterance2.voice = toValue(options.voice) || null;\n utterance2.pitch = toValue(pitch);\n utterance2.rate = toValue(rate);\n utterance2.volume = volume;\n utterance2.onstart = () => {\n isPlaying.value = true;\n status.value = \"play\";\n };\n utterance2.onpause = () => {\n isPlaying.value = false;\n status.value = \"pause\";\n };\n utterance2.onresume = () => {\n isPlaying.value = true;\n status.value = \"play\";\n };\n utterance2.onend = () => {\n isPlaying.value = false;\n status.value = \"end\";\n };\n utterance2.onerror = (event) => {\n error.value = event;\n };\n };\n const utterance = computed(() => {\n isPlaying.value = false;\n status.value = \"init\";\n const newUtterance = new SpeechSynthesisUtterance(spokenText.value);\n bindEventsForUtterance(newUtterance);\n return newUtterance;\n });\n const speak = () => {\n synth.cancel();\n if (utterance)\n synth.speak(utterance.value);\n };\n const stop = () => {\n synth.cancel();\n isPlaying.value = false;\n };\n if (isSupported.value) {\n bindEventsForUtterance(utterance.value);\n watch(lang, (lang2) => {\n if (utterance.value && !isPlaying.value)\n utterance.value.lang = lang2;\n });\n if (options.voice) {\n watch(options.voice, () => {\n synth.cancel();\n });\n }\n watch(isPlaying, () => {\n if (isPlaying.value)\n synth.resume();\n else\n synth.pause();\n });\n }\n tryOnScopeDispose(() => {\n isPlaying.value = false;\n });\n return {\n isSupported,\n isPlaying,\n status,\n utterance,\n error,\n stop,\n toggle,\n speak\n };\n}\n\nfunction useStepper(steps, initialStep) {\n const stepsRef = ref(steps);\n const stepNames = computed(() => Array.isArray(stepsRef.value) ? stepsRef.value : Object.keys(stepsRef.value));\n const index = ref(stepNames.value.indexOf(initialStep != null ? initialStep : stepNames.value[0]));\n const current = computed(() => at(index.value));\n const isFirst = computed(() => index.value === 0);\n const isLast = computed(() => index.value === stepNames.value.length - 1);\n const next = computed(() => stepNames.value[index.value + 1]);\n const previous = computed(() => stepNames.value[index.value - 1]);\n function at(index2) {\n if (Array.isArray(stepsRef.value))\n return stepsRef.value[index2];\n return stepsRef.value[stepNames.value[index2]];\n }\n function get(step) {\n if (!stepNames.value.includes(step))\n return;\n return at(stepNames.value.indexOf(step));\n }\n function goTo(step) {\n if (stepNames.value.includes(step))\n index.value = stepNames.value.indexOf(step);\n }\n function goToNext() {\n if (isLast.value)\n return;\n index.value++;\n }\n function goToPrevious() {\n if (isFirst.value)\n return;\n index.value--;\n }\n function goBackTo(step) {\n if (isAfter(step))\n goTo(step);\n }\n function isNext(step) {\n return stepNames.value.indexOf(step) === index.value + 1;\n }\n function isPrevious(step) {\n return stepNames.value.indexOf(step) === index.value - 1;\n }\n function isCurrent(step) {\n return stepNames.value.indexOf(step) === index.value;\n }\n function isBefore(step) {\n return index.value < stepNames.value.indexOf(step);\n }\n function isAfter(step) {\n return index.value > stepNames.value.indexOf(step);\n }\n return {\n steps: stepsRef,\n stepNames,\n index,\n current,\n next,\n previous,\n isFirst,\n isLast,\n at,\n get,\n goTo,\n goToNext,\n goToPrevious,\n goBackTo,\n isNext,\n isPrevious,\n isCurrent,\n isBefore,\n isAfter\n };\n}\n\nfunction useStorageAsync(key, initialValue, storage, options = {}) {\n var _a;\n const {\n flush = \"pre\",\n deep = true,\n listenToStorageChanges = true,\n writeDefaults = true,\n mergeDefaults = false,\n shallow,\n window = defaultWindow,\n eventFilter,\n onError = (e) => {\n console.error(e);\n }\n } = options;\n const rawInit = toValue(initialValue);\n const type = guessSerializerType(rawInit);\n const data = (shallow ? shallowRef : ref)(toValue(initialValue));\n const serializer = (_a = options.serializer) != null ? _a : StorageSerializers[type];\n if (!storage) {\n try {\n storage = getSSRHandler(\"getDefaultStorageAsync\", () => {\n var _a2;\n return (_a2 = defaultWindow) == null ? void 0 : _a2.localStorage;\n })();\n } catch (e) {\n onError(e);\n }\n }\n async function read(event) {\n if (!storage || event && event.key !== key)\n return;\n try {\n const rawValue = event ? event.newValue : await storage.getItem(key);\n if (rawValue == null) {\n data.value = rawInit;\n if (writeDefaults && rawInit !== null)\n await storage.setItem(key, await serializer.write(rawInit));\n } else if (mergeDefaults) {\n const value = await serializer.read(rawValue);\n if (typeof mergeDefaults === \"function\")\n data.value = mergeDefaults(value, rawInit);\n else if (type === \"object\" && !Array.isArray(value))\n data.value = { ...rawInit, ...value };\n else data.value = value;\n } else {\n data.value = await serializer.read(rawValue);\n }\n } catch (e) {\n onError(e);\n }\n }\n read();\n if (window && listenToStorageChanges)\n useEventListener(window, \"storage\", (e) => Promise.resolve().then(() => read(e)), { passive: true });\n if (storage) {\n watchWithFilter(\n data,\n async () => {\n try {\n if (data.value == null)\n await storage.removeItem(key);\n else\n await storage.setItem(key, await serializer.write(data.value));\n } catch (e) {\n onError(e);\n }\n },\n {\n flush,\n deep,\n eventFilter\n }\n );\n }\n return data;\n}\n\nlet _id = 0;\nfunction useStyleTag(css, options = {}) {\n const isLoaded = shallowRef(false);\n const {\n document = defaultDocument,\n immediate = true,\n manual = false,\n id = `vueuse_styletag_${++_id}`\n } = options;\n const cssRef = shallowRef(css);\n let stop = () => {\n };\n const load = () => {\n if (!document)\n return;\n const el = document.getElementById(id) || document.createElement(\"style\");\n if (!el.isConnected) {\n el.id = id;\n if (options.media)\n el.media = options.media;\n document.head.appendChild(el);\n }\n if (isLoaded.value)\n return;\n stop = watch(\n cssRef,\n (value) => {\n el.textContent = value;\n },\n { immediate: true }\n );\n isLoaded.value = true;\n };\n const unload = () => {\n if (!document || !isLoaded.value)\n return;\n stop();\n document.head.removeChild(document.getElementById(id));\n isLoaded.value = false;\n };\n if (immediate && !manual)\n tryOnMounted(load);\n if (!manual)\n tryOnScopeDispose(unload);\n return {\n id,\n css: cssRef,\n unload,\n load,\n isLoaded: readonly(isLoaded)\n };\n}\n\nfunction useSwipe(target, options = {}) {\n const {\n threshold = 50,\n onSwipe,\n onSwipeEnd,\n onSwipeStart,\n passive = true\n } = options;\n const coordsStart = reactive({ x: 0, y: 0 });\n const coordsEnd = reactive({ x: 0, y: 0 });\n const diffX = computed(() => coordsStart.x - coordsEnd.x);\n const diffY = computed(() => coordsStart.y - coordsEnd.y);\n const { max, abs } = Math;\n const isThresholdExceeded = computed(() => max(abs(diffX.value), abs(diffY.value)) >= threshold);\n const isSwiping = shallowRef(false);\n const direction = computed(() => {\n if (!isThresholdExceeded.value)\n return \"none\";\n if (abs(diffX.value) > abs(diffY.value)) {\n return diffX.value > 0 ? \"left\" : \"right\";\n } else {\n return diffY.value > 0 ? \"up\" : \"down\";\n }\n });\n const getTouchEventCoords = (e) => [e.touches[0].clientX, e.touches[0].clientY];\n const updateCoordsStart = (x, y) => {\n coordsStart.x = x;\n coordsStart.y = y;\n };\n const updateCoordsEnd = (x, y) => {\n coordsEnd.x = x;\n coordsEnd.y = y;\n };\n const listenerOptions = { passive, capture: !passive };\n const onTouchEnd = (e) => {\n if (isSwiping.value)\n onSwipeEnd == null ? void 0 : onSwipeEnd(e, direction.value);\n isSwiping.value = false;\n };\n const stops = [\n useEventListener(target, \"touchstart\", (e) => {\n if (e.touches.length !== 1)\n return;\n const [x, y] = getTouchEventCoords(e);\n updateCoordsStart(x, y);\n updateCoordsEnd(x, y);\n onSwipeStart == null ? void 0 : onSwipeStart(e);\n }, listenerOptions),\n useEventListener(target, \"touchmove\", (e) => {\n if (e.touches.length !== 1)\n return;\n const [x, y] = getTouchEventCoords(e);\n updateCoordsEnd(x, y);\n if (listenerOptions.capture && !listenerOptions.passive && Math.abs(diffX.value) > Math.abs(diffY.value))\n e.preventDefault();\n if (!isSwiping.value && isThresholdExceeded.value)\n isSwiping.value = true;\n if (isSwiping.value)\n onSwipe == null ? void 0 : onSwipe(e);\n }, listenerOptions),\n useEventListener(target, [\"touchend\", \"touchcancel\"], onTouchEnd, listenerOptions)\n ];\n const stop = () => stops.forEach((s) => s());\n return {\n isSwiping,\n direction,\n coordsStart,\n coordsEnd,\n lengthX: diffX,\n lengthY: diffY,\n stop,\n // TODO: Remove in the next major version\n isPassiveEventSupported: true\n };\n}\n\nfunction useTemplateRefsList() {\n const refs = ref([]);\n refs.value.set = (el) => {\n if (el)\n refs.value.push(el);\n };\n onBeforeUpdate(() => {\n refs.value.length = 0;\n });\n return refs;\n}\n\nfunction useTextDirection(options = {}) {\n const {\n document = defaultDocument,\n selector = \"html\",\n observe = false,\n initialValue = \"ltr\"\n } = options;\n function getValue() {\n var _a, _b;\n return (_b = (_a = document == null ? void 0 : document.querySelector(selector)) == null ? void 0 : _a.getAttribute(\"dir\")) != null ? _b : initialValue;\n }\n const dir = ref(getValue());\n tryOnMounted(() => dir.value = getValue());\n if (observe && document) {\n useMutationObserver(\n document.querySelector(selector),\n () => dir.value = getValue(),\n { attributes: true }\n );\n }\n return computed({\n get() {\n return dir.value;\n },\n set(v) {\n var _a, _b;\n dir.value = v;\n if (!document)\n return;\n if (dir.value)\n (_a = document.querySelector(selector)) == null ? void 0 : _a.setAttribute(\"dir\", dir.value);\n else\n (_b = document.querySelector(selector)) == null ? void 0 : _b.removeAttribute(\"dir\");\n }\n });\n}\n\nfunction getRangesFromSelection(selection) {\n var _a;\n const rangeCount = (_a = selection.rangeCount) != null ? _a : 0;\n return Array.from({ length: rangeCount }, (_, i) => selection.getRangeAt(i));\n}\nfunction useTextSelection(options = {}) {\n const {\n window = defaultWindow\n } = options;\n const selection = ref(null);\n const text = computed(() => {\n var _a, _b;\n return (_b = (_a = selection.value) == null ? void 0 : _a.toString()) != null ? _b : \"\";\n });\n const ranges = computed(() => selection.value ? getRangesFromSelection(selection.value) : []);\n const rects = computed(() => ranges.value.map((range) => range.getBoundingClientRect()));\n function onSelectionChange() {\n selection.value = null;\n if (window)\n selection.value = window.getSelection();\n }\n if (window)\n useEventListener(window.document, \"selectionchange\", onSelectionChange, { passive: true });\n return {\n text,\n rects,\n ranges,\n selection\n };\n}\n\nfunction tryRequestAnimationFrame(window = defaultWindow, fn) {\n if (window && typeof window.requestAnimationFrame === \"function\") {\n window.requestAnimationFrame(fn);\n } else {\n fn();\n }\n}\nfunction useTextareaAutosize(options = {}) {\n var _a, _b;\n const { window = defaultWindow } = options;\n const textarea = toRef(options == null ? void 0 : options.element);\n const input = toRef((_a = options == null ? void 0 : options.input) != null ? _a : \"\");\n const styleProp = (_b = options == null ? void 0 : options.styleProp) != null ? _b : \"height\";\n const textareaScrollHeight = shallowRef(1);\n const textareaOldWidth = shallowRef(0);\n function triggerResize() {\n var _a2;\n if (!textarea.value)\n return;\n let height = \"\";\n textarea.value.style[styleProp] = \"1px\";\n textareaScrollHeight.value = (_a2 = textarea.value) == null ? void 0 : _a2.scrollHeight;\n const _styleTarget = toValue(options == null ? void 0 : options.styleTarget);\n if (_styleTarget)\n _styleTarget.style[styleProp] = `${textareaScrollHeight.value}px`;\n else\n height = `${textareaScrollHeight.value}px`;\n textarea.value.style[styleProp] = height;\n }\n watch([input, textarea], () => nextTick(triggerResize), { immediate: true });\n watch(textareaScrollHeight, () => {\n var _a2;\n return (_a2 = options == null ? void 0 : options.onResize) == null ? void 0 : _a2.call(options);\n });\n useResizeObserver(textarea, ([{ contentRect }]) => {\n if (textareaOldWidth.value === contentRect.width)\n return;\n tryRequestAnimationFrame(window, () => {\n textareaOldWidth.value = contentRect.width;\n triggerResize();\n });\n });\n if (options == null ? void 0 : options.watch)\n watch(options.watch, triggerResize, { immediate: true, deep: true });\n return {\n textarea,\n input,\n triggerResize\n };\n}\n\nfunction useThrottledRefHistory(source, options = {}) {\n const { throttle = 200, trailing = true } = options;\n const filter = throttleFilter(throttle, trailing);\n const history = useRefHistory(source, { ...options, eventFilter: filter });\n return {\n ...history\n };\n}\n\nconst DEFAULT_UNITS = [\n { max: 6e4, value: 1e3, name: \"second\" },\n { max: 276e4, value: 6e4, name: \"minute\" },\n { max: 72e6, value: 36e5, name: \"hour\" },\n { max: 5184e5, value: 864e5, name: \"day\" },\n { max: 24192e5, value: 6048e5, name: \"week\" },\n { max: 28512e6, value: 2592e6, name: \"month\" },\n { max: Number.POSITIVE_INFINITY, value: 31536e6, name: \"year\" }\n];\nconst DEFAULT_MESSAGES = {\n justNow: \"just now\",\n past: (n) => n.match(/\\d/) ? `${n} ago` : n,\n future: (n) => n.match(/\\d/) ? `in ${n}` : n,\n month: (n, past) => n === 1 ? past ? \"last month\" : \"next month\" : `${n} month${n > 1 ? \"s\" : \"\"}`,\n year: (n, past) => n === 1 ? past ? \"last year\" : \"next year\" : `${n} year${n > 1 ? \"s\" : \"\"}`,\n day: (n, past) => n === 1 ? past ? \"yesterday\" : \"tomorrow\" : `${n} day${n > 1 ? \"s\" : \"\"}`,\n week: (n, past) => n === 1 ? past ? \"last week\" : \"next week\" : `${n} week${n > 1 ? \"s\" : \"\"}`,\n hour: (n) => `${n} hour${n > 1 ? \"s\" : \"\"}`,\n minute: (n) => `${n} minute${n > 1 ? \"s\" : \"\"}`,\n second: (n) => `${n} second${n > 1 ? \"s\" : \"\"}`,\n invalid: \"\"\n};\nfunction DEFAULT_FORMATTER(date) {\n return date.toISOString().slice(0, 10);\n}\nfunction useTimeAgo(time, options = {}) {\n const {\n controls: exposeControls = false,\n updateInterval = 3e4\n } = options;\n const { now, ...controls } = useNow({ interval: updateInterval, controls: true });\n const timeAgo = computed(() => formatTimeAgo(new Date(toValue(time)), options, toValue(now)));\n if (exposeControls) {\n return {\n timeAgo,\n ...controls\n };\n } else {\n return timeAgo;\n }\n}\nfunction formatTimeAgo(from, options = {}, now = Date.now()) {\n var _a;\n const {\n max,\n messages = DEFAULT_MESSAGES,\n fullDateFormatter = DEFAULT_FORMATTER,\n units = DEFAULT_UNITS,\n showSecond = false,\n rounding = \"round\"\n } = options;\n const roundFn = typeof rounding === \"number\" ? (n) => +n.toFixed(rounding) : Math[rounding];\n const diff = +now - +from;\n const absDiff = Math.abs(diff);\n function getValue(diff2, unit) {\n return roundFn(Math.abs(diff2) / unit.value);\n }\n function format(diff2, unit) {\n const val = getValue(diff2, unit);\n const past = diff2 > 0;\n const str = applyFormat(unit.name, val, past);\n return applyFormat(past ? \"past\" : \"future\", str, past);\n }\n function applyFormat(name, val, isPast) {\n const formatter = messages[name];\n if (typeof formatter === \"function\")\n return formatter(val, isPast);\n return formatter.replace(\"{0}\", val.toString());\n }\n if (absDiff < 6e4 && !showSecond)\n return messages.justNow;\n if (typeof max === \"number\" && absDiff > max)\n return fullDateFormatter(new Date(from));\n if (typeof max === \"string\") {\n const unitMax = (_a = units.find((i) => i.name === max)) == null ? void 0 : _a.max;\n if (unitMax && absDiff > unitMax)\n return fullDateFormatter(new Date(from));\n }\n for (const [idx, unit] of units.entries()) {\n const val = getValue(diff, unit);\n if (val <= 0 && units[idx - 1])\n return format(diff, units[idx - 1]);\n if (absDiff < unit.max)\n return format(diff, unit);\n }\n return messages.invalid;\n}\n\nfunction useTimeoutPoll(fn, interval, options = {}) {\n const {\n immediate = true,\n immediateCallback = false\n } = options;\n const { start } = useTimeoutFn(loop, interval, { immediate });\n const isActive = shallowRef(false);\n async function loop() {\n if (!isActive.value)\n return;\n await fn();\n start();\n }\n function resume() {\n if (!isActive.value) {\n isActive.value = true;\n if (immediateCallback)\n fn();\n start();\n }\n }\n function pause() {\n isActive.value = false;\n }\n if (immediate && isClient)\n resume();\n tryOnScopeDispose(pause);\n return {\n isActive,\n pause,\n resume\n };\n}\n\nfunction useTimestamp(options = {}) {\n const {\n controls: exposeControls = false,\n offset = 0,\n immediate = true,\n interval = \"requestAnimationFrame\",\n callback\n } = options;\n const ts = shallowRef(timestamp() + offset);\n const update = () => ts.value = timestamp() + offset;\n const cb = callback ? () => {\n update();\n callback(ts.value);\n } : update;\n const controls = interval === \"requestAnimationFrame\" ? useRafFn(cb, { immediate }) : useIntervalFn(cb, interval, { immediate });\n if (exposeControls) {\n return {\n timestamp: ts,\n ...controls\n };\n } else {\n return ts;\n }\n}\n\nfunction useTitle(newTitle = null, options = {}) {\n var _a, _b, _c;\n const {\n document = defaultDocument,\n restoreOnUnmount = (t) => t\n } = options;\n const originalTitle = (_a = document == null ? void 0 : document.title) != null ? _a : \"\";\n const title = toRef((_b = newTitle != null ? newTitle : document == null ? void 0 : document.title) != null ? _b : null);\n const isReadonly = !!(newTitle && typeof newTitle === \"function\");\n function format(t) {\n if (!(\"titleTemplate\" in options))\n return t;\n const template = options.titleTemplate || \"%s\";\n return typeof template === \"function\" ? template(t) : toValue(template).replace(/%s/g, t);\n }\n watch(\n title,\n (newValue, oldValue) => {\n if (newValue !== oldValue && document)\n document.title = format(newValue != null ? newValue : \"\");\n },\n { immediate: true }\n );\n if (options.observe && !options.titleTemplate && document && !isReadonly) {\n useMutationObserver(\n (_c = document.head) == null ? void 0 : _c.querySelector(\"title\"),\n () => {\n if (document && document.title !== title.value)\n title.value = format(document.title);\n },\n { childList: true }\n );\n }\n tryOnScopeDispose(() => {\n if (restoreOnUnmount) {\n const restoredTitle = restoreOnUnmount(originalTitle, title.value || \"\");\n if (restoredTitle != null && document)\n document.title = restoredTitle;\n }\n });\n return title;\n}\n\nconst _TransitionPresets = {\n easeInSine: [0.12, 0, 0.39, 0],\n easeOutSine: [0.61, 1, 0.88, 1],\n easeInOutSine: [0.37, 0, 0.63, 1],\n easeInQuad: [0.11, 0, 0.5, 0],\n easeOutQuad: [0.5, 1, 0.89, 1],\n easeInOutQuad: [0.45, 0, 0.55, 1],\n easeInCubic: [0.32, 0, 0.67, 0],\n easeOutCubic: [0.33, 1, 0.68, 1],\n easeInOutCubic: [0.65, 0, 0.35, 1],\n easeInQuart: [0.5, 0, 0.75, 0],\n easeOutQuart: [0.25, 1, 0.5, 1],\n easeInOutQuart: [0.76, 0, 0.24, 1],\n easeInQuint: [0.64, 0, 0.78, 0],\n easeOutQuint: [0.22, 1, 0.36, 1],\n easeInOutQuint: [0.83, 0, 0.17, 1],\n easeInExpo: [0.7, 0, 0.84, 0],\n easeOutExpo: [0.16, 1, 0.3, 1],\n easeInOutExpo: [0.87, 0, 0.13, 1],\n easeInCirc: [0.55, 0, 1, 0.45],\n easeOutCirc: [0, 0.55, 0.45, 1],\n easeInOutCirc: [0.85, 0, 0.15, 1],\n easeInBack: [0.36, 0, 0.66, -0.56],\n easeOutBack: [0.34, 1.56, 0.64, 1],\n easeInOutBack: [0.68, -0.6, 0.32, 1.6]\n};\nconst TransitionPresets = /* @__PURE__ */ Object.assign({}, { linear: identity }, _TransitionPresets);\nfunction createEasingFunction([p0, p1, p2, p3]) {\n const a = (a1, a2) => 1 - 3 * a2 + 3 * a1;\n const b = (a1, a2) => 3 * a2 - 6 * a1;\n const c = (a1) => 3 * a1;\n const calcBezier = (t, a1, a2) => ((a(a1, a2) * t + b(a1, a2)) * t + c(a1)) * t;\n const getSlope = (t, a1, a2) => 3 * a(a1, a2) * t * t + 2 * b(a1, a2) * t + c(a1);\n const getTforX = (x) => {\n let aGuessT = x;\n for (let i = 0; i < 4; ++i) {\n const currentSlope = getSlope(aGuessT, p0, p2);\n if (currentSlope === 0)\n return aGuessT;\n const currentX = calcBezier(aGuessT, p0, p2) - x;\n aGuessT -= currentX / currentSlope;\n }\n return aGuessT;\n };\n return (x) => p0 === p1 && p2 === p3 ? x : calcBezier(getTforX(x), p1, p3);\n}\nfunction lerp(a, b, alpha) {\n return a + alpha * (b - a);\n}\nfunction toVec(t) {\n return (typeof t === \"number\" ? [t] : t) || [];\n}\nfunction executeTransition(source, from, to, options = {}) {\n var _a, _b;\n const fromVal = toValue(from);\n const toVal = toValue(to);\n const v1 = toVec(fromVal);\n const v2 = toVec(toVal);\n const duration = (_a = toValue(options.duration)) != null ? _a : 1e3;\n const startedAt = Date.now();\n const endAt = Date.now() + duration;\n const trans = typeof options.transition === \"function\" ? options.transition : (_b = toValue(options.transition)) != null ? _b : identity;\n const ease = typeof trans === \"function\" ? trans : createEasingFunction(trans);\n return new Promise((resolve) => {\n source.value = fromVal;\n const tick = () => {\n var _a2;\n if ((_a2 = options.abort) == null ? void 0 : _a2.call(options)) {\n resolve();\n return;\n }\n const now = Date.now();\n const alpha = ease((now - startedAt) / duration);\n const arr = toVec(source.value).map((n, i) => lerp(v1[i], v2[i], alpha));\n if (Array.isArray(source.value))\n source.value = arr.map((n, i) => {\n var _a3, _b2;\n return lerp((_a3 = v1[i]) != null ? _a3 : 0, (_b2 = v2[i]) != null ? _b2 : 0, alpha);\n });\n else if (typeof source.value === \"number\")\n source.value = arr[0];\n if (now < endAt) {\n requestAnimationFrame(tick);\n } else {\n source.value = toVal;\n resolve();\n }\n };\n tick();\n });\n}\nfunction useTransition(source, options = {}) {\n let currentId = 0;\n const sourceVal = () => {\n const v = toValue(source);\n return typeof v === \"number\" ? v : v.map(toValue);\n };\n const outputRef = ref(sourceVal());\n watch(sourceVal, async (to) => {\n var _a, _b;\n if (toValue(options.disabled))\n return;\n const id = ++currentId;\n if (options.delay)\n await promiseTimeout(toValue(options.delay));\n if (id !== currentId)\n return;\n const toVal = Array.isArray(to) ? to.map(toValue) : toValue(to);\n (_a = options.onStarted) == null ? void 0 : _a.call(options);\n await executeTransition(outputRef, outputRef.value, toVal, {\n ...options,\n abort: () => {\n var _a2;\n return id !== currentId || ((_a2 = options.abort) == null ? void 0 : _a2.call(options));\n }\n });\n (_b = options.onFinished) == null ? void 0 : _b.call(options);\n }, { deep: true });\n watch(() => toValue(options.disabled), (disabled) => {\n if (disabled) {\n currentId++;\n outputRef.value = sourceVal();\n }\n });\n tryOnScopeDispose(() => {\n currentId++;\n });\n return computed(() => toValue(options.disabled) ? sourceVal() : outputRef.value);\n}\n\nfunction useUrlSearchParams(mode = \"history\", options = {}) {\n const {\n initialValue = {},\n removeNullishValues = true,\n removeFalsyValues = false,\n write: enableWrite = true,\n writeMode = \"replace\",\n window = defaultWindow\n } = options;\n if (!window)\n return reactive(initialValue);\n const state = reactive({});\n function getRawParams() {\n if (mode === \"history\") {\n return window.location.search || \"\";\n } else if (mode === \"hash\") {\n const hash = window.location.hash || \"\";\n const index = hash.indexOf(\"?\");\n return index > 0 ? hash.slice(index) : \"\";\n } else {\n return (window.location.hash || \"\").replace(/^#/, \"\");\n }\n }\n function constructQuery(params) {\n const stringified = params.toString();\n if (mode === \"history\")\n return `${stringified ? `?${stringified}` : \"\"}${window.location.hash || \"\"}`;\n if (mode === \"hash-params\")\n return `${window.location.search || \"\"}${stringified ? `#${stringified}` : \"\"}`;\n const hash = window.location.hash || \"#\";\n const index = hash.indexOf(\"?\");\n if (index > 0)\n return `${window.location.search || \"\"}${hash.slice(0, index)}${stringified ? `?${stringified}` : \"\"}`;\n return `${window.location.search || \"\"}${hash}${stringified ? `?${stringified}` : \"\"}`;\n }\n function read() {\n return new URLSearchParams(getRawParams());\n }\n function updateState(params) {\n const unusedKeys = new Set(Object.keys(state));\n for (const key of params.keys()) {\n const paramsForKey = params.getAll(key);\n state[key] = paramsForKey.length > 1 ? paramsForKey : params.get(key) || \"\";\n unusedKeys.delete(key);\n }\n Array.from(unusedKeys).forEach((key) => delete state[key]);\n }\n const { pause, resume } = pausableWatch(\n state,\n () => {\n const params = new URLSearchParams(\"\");\n Object.keys(state).forEach((key) => {\n const mapEntry = state[key];\n if (Array.isArray(mapEntry))\n mapEntry.forEach((value) => params.append(key, value));\n else if (removeNullishValues && mapEntry == null)\n params.delete(key);\n else if (removeFalsyValues && !mapEntry)\n params.delete(key);\n else\n params.set(key, mapEntry);\n });\n write(params, false);\n },\n { deep: true }\n );\n function write(params, shouldUpdate) {\n pause();\n if (shouldUpdate)\n updateState(params);\n if (writeMode === \"replace\") {\n window.history.replaceState(\n window.history.state,\n window.document.title,\n window.location.pathname + constructQuery(params)\n );\n } else {\n window.history.pushState(\n window.history.state,\n window.document.title,\n window.location.pathname + constructQuery(params)\n );\n }\n resume();\n }\n function onChanged() {\n if (!enableWrite)\n return;\n write(read(), true);\n }\n const listenerOptions = { passive: true };\n useEventListener(window, \"popstate\", onChanged, listenerOptions);\n if (mode !== \"history\")\n useEventListener(window, \"hashchange\", onChanged, listenerOptions);\n const initial = read();\n if (initial.keys().next().value)\n updateState(initial);\n else\n Object.assign(state, initialValue);\n return state;\n}\n\nfunction useUserMedia(options = {}) {\n var _a, _b;\n const enabled = shallowRef((_a = options.enabled) != null ? _a : false);\n const autoSwitch = shallowRef((_b = options.autoSwitch) != null ? _b : true);\n const constraints = ref(options.constraints);\n const { navigator = defaultNavigator } = options;\n const isSupported = useSupported(() => {\n var _a2;\n return (_a2 = navigator == null ? void 0 : navigator.mediaDevices) == null ? void 0 : _a2.getUserMedia;\n });\n const stream = shallowRef();\n function getDeviceOptions(type) {\n switch (type) {\n case \"video\": {\n if (constraints.value)\n return constraints.value.video || false;\n break;\n }\n case \"audio\": {\n if (constraints.value)\n return constraints.value.audio || false;\n break;\n }\n }\n }\n async function _start() {\n if (!isSupported.value || stream.value)\n return;\n stream.value = await navigator.mediaDevices.getUserMedia({\n video: getDeviceOptions(\"video\"),\n audio: getDeviceOptions(\"audio\")\n });\n return stream.value;\n }\n function _stop() {\n var _a2;\n (_a2 = stream.value) == null ? void 0 : _a2.getTracks().forEach((t) => t.stop());\n stream.value = void 0;\n }\n function stop() {\n _stop();\n enabled.value = false;\n }\n async function start() {\n await _start();\n if (stream.value)\n enabled.value = true;\n return stream.value;\n }\n async function restart() {\n _stop();\n return await start();\n }\n watch(\n enabled,\n (v) => {\n if (v)\n _start();\n else _stop();\n },\n { immediate: true }\n );\n watch(\n constraints,\n () => {\n if (autoSwitch.value && stream.value)\n restart();\n },\n { immediate: true }\n );\n tryOnScopeDispose(() => {\n stop();\n });\n return {\n isSupported,\n stream,\n start,\n stop,\n restart,\n constraints,\n enabled,\n autoSwitch\n };\n}\n\nfunction useVModel(props, key, emit, options = {}) {\n var _a, _b, _c;\n const {\n clone = false,\n passive = false,\n eventName,\n deep = false,\n defaultValue,\n shouldEmit\n } = options;\n const vm = getCurrentInstance();\n const _emit = emit || (vm == null ? void 0 : vm.emit) || ((_a = vm == null ? void 0 : vm.$emit) == null ? void 0 : _a.bind(vm)) || ((_c = (_b = vm == null ? void 0 : vm.proxy) == null ? void 0 : _b.$emit) == null ? void 0 : _c.bind(vm == null ? void 0 : vm.proxy));\n let event = eventName;\n if (!key) {\n key = \"modelValue\";\n }\n event = event || `update:${key.toString()}`;\n const cloneFn = (val) => !clone ? val : typeof clone === \"function\" ? clone(val) : cloneFnJSON(val);\n const getValue = () => isDef(props[key]) ? cloneFn(props[key]) : defaultValue;\n const triggerEmit = (value) => {\n if (shouldEmit) {\n if (shouldEmit(value))\n _emit(event, value);\n } else {\n _emit(event, value);\n }\n };\n if (passive) {\n const initialValue = getValue();\n const proxy = ref(initialValue);\n let isUpdating = false;\n watch(\n () => props[key],\n (v) => {\n if (!isUpdating) {\n isUpdating = true;\n proxy.value = cloneFn(v);\n nextTick(() => isUpdating = false);\n }\n }\n );\n watch(\n proxy,\n (v) => {\n if (!isUpdating && (v !== props[key] || deep))\n triggerEmit(v);\n },\n { deep }\n );\n return proxy;\n } else {\n return computed({\n get() {\n return getValue();\n },\n set(value) {\n triggerEmit(value);\n }\n });\n }\n}\n\nfunction useVModels(props, emit, options = {}) {\n const ret = {};\n for (const key in props) {\n ret[key] = useVModel(\n props,\n key,\n emit,\n options\n );\n }\n return ret;\n}\n\nfunction useVibrate(options) {\n const {\n pattern = [],\n interval = 0,\n navigator = defaultNavigator\n } = options || {};\n const isSupported = useSupported(() => typeof navigator !== \"undefined\" && \"vibrate\" in navigator);\n const patternRef = toRef(pattern);\n let intervalControls;\n const vibrate = (pattern2 = patternRef.value) => {\n if (isSupported.value)\n navigator.vibrate(pattern2);\n };\n const stop = () => {\n if (isSupported.value)\n navigator.vibrate(0);\n intervalControls == null ? void 0 : intervalControls.pause();\n };\n if (interval > 0) {\n intervalControls = useIntervalFn(\n vibrate,\n interval,\n {\n immediate: false,\n immediateCallback: false\n }\n );\n }\n return {\n isSupported,\n pattern,\n intervalControls,\n vibrate,\n stop\n };\n}\n\nfunction useVirtualList(list, options) {\n const { containerStyle, wrapperProps, scrollTo, calculateRange, currentList, containerRef } = \"itemHeight\" in options ? useVerticalVirtualList(options, list) : useHorizontalVirtualList(options, list);\n return {\n list: currentList,\n scrollTo,\n containerProps: {\n ref: containerRef,\n onScroll: () => {\n calculateRange();\n },\n style: containerStyle\n },\n wrapperProps\n };\n}\nfunction useVirtualListResources(list) {\n const containerRef = shallowRef(null);\n const size = useElementSize(containerRef);\n const currentList = ref([]);\n const source = shallowRef(list);\n const state = ref({ start: 0, end: 10 });\n return { state, source, currentList, size, containerRef };\n}\nfunction createGetViewCapacity(state, source, itemSize) {\n return (containerSize) => {\n if (typeof itemSize === \"number\")\n return Math.ceil(containerSize / itemSize);\n const { start = 0 } = state.value;\n let sum = 0;\n let capacity = 0;\n for (let i = start; i < source.value.length; i++) {\n const size = itemSize(i);\n sum += size;\n capacity = i;\n if (sum > containerSize)\n break;\n }\n return capacity - start;\n };\n}\nfunction createGetOffset(source, itemSize) {\n return (scrollDirection) => {\n if (typeof itemSize === \"number\")\n return Math.floor(scrollDirection / itemSize) + 1;\n let sum = 0;\n let offset = 0;\n for (let i = 0; i < source.value.length; i++) {\n const size = itemSize(i);\n sum += size;\n if (sum >= scrollDirection) {\n offset = i;\n break;\n }\n }\n return offset + 1;\n };\n}\nfunction createCalculateRange(type, overscan, getOffset, getViewCapacity, { containerRef, state, currentList, source }) {\n return () => {\n const element = containerRef.value;\n if (element) {\n const offset = getOffset(type === \"vertical\" ? element.scrollTop : element.scrollLeft);\n const viewCapacity = getViewCapacity(type === \"vertical\" ? element.clientHeight : element.clientWidth);\n const from = offset - overscan;\n const to = offset + viewCapacity + overscan;\n state.value = {\n start: from < 0 ? 0 : from,\n end: to > source.value.length ? source.value.length : to\n };\n currentList.value = source.value.slice(state.value.start, state.value.end).map((ele, index) => ({\n data: ele,\n index: index + state.value.start\n }));\n }\n };\n}\nfunction createGetDistance(itemSize, source) {\n return (index) => {\n if (typeof itemSize === \"number\") {\n const size2 = index * itemSize;\n return size2;\n }\n const size = source.value.slice(0, index).reduce((sum, _, i) => sum + itemSize(i), 0);\n return size;\n };\n}\nfunction useWatchForSizes(size, list, containerRef, calculateRange) {\n watch([size.width, size.height, list, containerRef], () => {\n calculateRange();\n });\n}\nfunction createComputedTotalSize(itemSize, source) {\n return computed(() => {\n if (typeof itemSize === \"number\")\n return source.value.length * itemSize;\n return source.value.reduce((sum, _, index) => sum + itemSize(index), 0);\n });\n}\nconst scrollToDictionaryForElementScrollKey = {\n horizontal: \"scrollLeft\",\n vertical: \"scrollTop\"\n};\nfunction createScrollTo(type, calculateRange, getDistance, containerRef) {\n return (index) => {\n if (containerRef.value) {\n containerRef.value[scrollToDictionaryForElementScrollKey[type]] = getDistance(index);\n calculateRange();\n }\n };\n}\nfunction useHorizontalVirtualList(options, list) {\n const resources = useVirtualListResources(list);\n const { state, source, currentList, size, containerRef } = resources;\n const containerStyle = { overflowX: \"auto\" };\n const { itemWidth, overscan = 5 } = options;\n const getViewCapacity = createGetViewCapacity(state, source, itemWidth);\n const getOffset = createGetOffset(source, itemWidth);\n const calculateRange = createCalculateRange(\"horizontal\", overscan, getOffset, getViewCapacity, resources);\n const getDistanceLeft = createGetDistance(itemWidth, source);\n const offsetLeft = computed(() => getDistanceLeft(state.value.start));\n const totalWidth = createComputedTotalSize(itemWidth, source);\n useWatchForSizes(size, list, containerRef, calculateRange);\n const scrollTo = createScrollTo(\"horizontal\", calculateRange, getDistanceLeft, containerRef);\n const wrapperProps = computed(() => {\n return {\n style: {\n height: \"100%\",\n width: `${totalWidth.value - offsetLeft.value}px`,\n marginLeft: `${offsetLeft.value}px`,\n display: \"flex\"\n }\n };\n });\n return {\n scrollTo,\n calculateRange,\n wrapperProps,\n containerStyle,\n currentList,\n containerRef\n };\n}\nfunction useVerticalVirtualList(options, list) {\n const resources = useVirtualListResources(list);\n const { state, source, currentList, size, containerRef } = resources;\n const containerStyle = { overflowY: \"auto\" };\n const { itemHeight, overscan = 5 } = options;\n const getViewCapacity = createGetViewCapacity(state, source, itemHeight);\n const getOffset = createGetOffset(source, itemHeight);\n const calculateRange = createCalculateRange(\"vertical\", overscan, getOffset, getViewCapacity, resources);\n const getDistanceTop = createGetDistance(itemHeight, source);\n const offsetTop = computed(() => getDistanceTop(state.value.start));\n const totalHeight = createComputedTotalSize(itemHeight, source);\n useWatchForSizes(size, list, containerRef, calculateRange);\n const scrollTo = createScrollTo(\"vertical\", calculateRange, getDistanceTop, containerRef);\n const wrapperProps = computed(() => {\n return {\n style: {\n width: \"100%\",\n height: `${totalHeight.value - offsetTop.value}px`,\n marginTop: `${offsetTop.value}px`\n }\n };\n });\n return {\n calculateRange,\n scrollTo,\n containerStyle,\n wrapperProps,\n currentList,\n containerRef\n };\n}\n\nfunction useWakeLock(options = {}) {\n const {\n navigator = defaultNavigator,\n document = defaultDocument\n } = options;\n const requestedType = shallowRef(false);\n const sentinel = shallowRef(null);\n const documentVisibility = useDocumentVisibility({ document });\n const isSupported = useSupported(() => navigator && \"wakeLock\" in navigator);\n const isActive = computed(() => !!sentinel.value && documentVisibility.value === \"visible\");\n if (isSupported.value) {\n useEventListener(sentinel, \"release\", () => {\n var _a, _b;\n requestedType.value = (_b = (_a = sentinel.value) == null ? void 0 : _a.type) != null ? _b : false;\n }, { passive: true });\n whenever(\n () => documentVisibility.value === \"visible\" && (document == null ? void 0 : document.visibilityState) === \"visible\" && requestedType.value,\n (type) => {\n requestedType.value = false;\n forceRequest(type);\n }\n );\n }\n async function forceRequest(type) {\n var _a;\n await ((_a = sentinel.value) == null ? void 0 : _a.release());\n sentinel.value = isSupported.value ? await navigator.wakeLock.request(type) : null;\n }\n async function request(type) {\n if (documentVisibility.value === \"visible\")\n await forceRequest(type);\n else\n requestedType.value = type;\n }\n async function release() {\n requestedType.value = false;\n const s = sentinel.value;\n sentinel.value = null;\n await (s == null ? void 0 : s.release());\n }\n return {\n sentinel,\n isSupported,\n isActive,\n request,\n forceRequest,\n release\n };\n}\n\nfunction useWebNotification(options = {}) {\n const {\n window = defaultWindow,\n requestPermissions: _requestForPermissions = true\n } = options;\n const defaultWebNotificationOptions = options;\n const isSupported = useSupported(() => {\n if (!window || !(\"Notification\" in window))\n return false;\n if (Notification.permission === \"granted\")\n return true;\n try {\n const notification2 = new Notification(\"\");\n notification2.onshow = () => {\n notification2.close();\n };\n } catch (e) {\n if (e.name === \"TypeError\")\n return false;\n }\n return true;\n });\n const permissionGranted = shallowRef(isSupported.value && \"permission\" in Notification && Notification.permission === \"granted\");\n const notification = ref(null);\n const ensurePermissions = async () => {\n if (!isSupported.value)\n return;\n if (!permissionGranted.value && Notification.permission !== \"denied\") {\n const result = await Notification.requestPermission();\n if (result === \"granted\")\n permissionGranted.value = true;\n }\n return permissionGranted.value;\n };\n const { on: onClick, trigger: clickTrigger } = createEventHook();\n const { on: onShow, trigger: showTrigger } = createEventHook();\n const { on: onError, trigger: errorTrigger } = createEventHook();\n const { on: onClose, trigger: closeTrigger } = createEventHook();\n const show = async (overrides) => {\n if (!isSupported.value || !permissionGranted.value)\n return;\n const options2 = Object.assign({}, defaultWebNotificationOptions, overrides);\n notification.value = new Notification(options2.title || \"\", options2);\n notification.value.onclick = clickTrigger;\n notification.value.onshow = showTrigger;\n notification.value.onerror = errorTrigger;\n notification.value.onclose = closeTrigger;\n return notification.value;\n };\n const close = () => {\n if (notification.value)\n notification.value.close();\n notification.value = null;\n };\n if (_requestForPermissions)\n tryOnMounted(ensurePermissions);\n tryOnScopeDispose(close);\n if (isSupported.value && window) {\n const document = window.document;\n useEventListener(document, \"visibilitychange\", (e) => {\n e.preventDefault();\n if (document.visibilityState === \"visible\") {\n close();\n }\n });\n }\n return {\n isSupported,\n notification,\n ensurePermissions,\n permissionGranted,\n show,\n close,\n onClick,\n onShow,\n onError,\n onClose\n };\n}\n\nconst DEFAULT_PING_MESSAGE = \"ping\";\nfunction resolveNestedOptions(options) {\n if (options === true)\n return {};\n return options;\n}\nfunction useWebSocket(url, options = {}) {\n const {\n onConnected,\n onDisconnected,\n onError,\n onMessage,\n immediate = true,\n autoConnect = true,\n autoClose = true,\n protocols = []\n } = options;\n const data = ref(null);\n const status = shallowRef(\"CLOSED\");\n const wsRef = ref();\n const urlRef = toRef(url);\n let heartbeatPause;\n let heartbeatResume;\n let explicitlyClosed = false;\n let retried = 0;\n let bufferedData = [];\n let retryTimeout;\n let pongTimeoutWait;\n const _sendBuffer = () => {\n if (bufferedData.length && wsRef.value && status.value === \"OPEN\") {\n for (const buffer of bufferedData)\n wsRef.value.send(buffer);\n bufferedData = [];\n }\n };\n const resetRetry = () => {\n if (retryTimeout != null) {\n clearTimeout(retryTimeout);\n retryTimeout = void 0;\n }\n };\n const resetHeartbeat = () => {\n clearTimeout(pongTimeoutWait);\n pongTimeoutWait = void 0;\n };\n const close = (code = 1e3, reason) => {\n resetRetry();\n if (!isClient && !isWorker || !wsRef.value)\n return;\n explicitlyClosed = true;\n resetHeartbeat();\n heartbeatPause == null ? void 0 : heartbeatPause();\n wsRef.value.close(code, reason);\n wsRef.value = void 0;\n };\n const send = (data2, useBuffer = true) => {\n if (!wsRef.value || status.value !== \"OPEN\") {\n if (useBuffer)\n bufferedData.push(data2);\n return false;\n }\n _sendBuffer();\n wsRef.value.send(data2);\n return true;\n };\n const _init = () => {\n if (explicitlyClosed || typeof urlRef.value === \"undefined\")\n return;\n const ws = new WebSocket(urlRef.value, protocols);\n wsRef.value = ws;\n status.value = \"CONNECTING\";\n ws.onopen = () => {\n status.value = \"OPEN\";\n retried = 0;\n onConnected == null ? void 0 : onConnected(ws);\n heartbeatResume == null ? void 0 : heartbeatResume();\n _sendBuffer();\n };\n ws.onclose = (ev) => {\n status.value = \"CLOSED\";\n resetHeartbeat();\n heartbeatPause == null ? void 0 : heartbeatPause();\n onDisconnected == null ? void 0 : onDisconnected(ws, ev);\n if (!explicitlyClosed && options.autoReconnect && (wsRef.value == null || ws === wsRef.value)) {\n const {\n retries = -1,\n delay = 1e3,\n onFailed\n } = resolveNestedOptions(options.autoReconnect);\n const checkRetires = typeof retries === \"function\" ? retries : () => typeof retries === \"number\" && (retries < 0 || retried < retries);\n if (checkRetires(retried)) {\n retried += 1;\n retryTimeout = setTimeout(_init, delay);\n } else {\n onFailed == null ? void 0 : onFailed();\n }\n }\n };\n ws.onerror = (e) => {\n onError == null ? void 0 : onError(ws, e);\n };\n ws.onmessage = (e) => {\n if (options.heartbeat) {\n resetHeartbeat();\n const {\n message = DEFAULT_PING_MESSAGE,\n responseMessage = message\n } = resolveNestedOptions(options.heartbeat);\n if (e.data === toValue(responseMessage))\n return;\n }\n data.value = e.data;\n onMessage == null ? void 0 : onMessage(ws, e);\n };\n };\n if (options.heartbeat) {\n const {\n message = DEFAULT_PING_MESSAGE,\n interval = 1e3,\n pongTimeout = 1e3\n } = resolveNestedOptions(options.heartbeat);\n const { pause, resume } = useIntervalFn(\n () => {\n send(toValue(message), false);\n if (pongTimeoutWait != null)\n return;\n pongTimeoutWait = setTimeout(() => {\n close();\n explicitlyClosed = false;\n }, pongTimeout);\n },\n interval,\n { immediate: false }\n );\n heartbeatPause = pause;\n heartbeatResume = resume;\n }\n if (autoClose) {\n if (isClient)\n useEventListener(\"beforeunload\", () => close(), { passive: true });\n tryOnScopeDispose(close);\n }\n const open = () => {\n if (!isClient && !isWorker)\n return;\n close();\n explicitlyClosed = false;\n retried = 0;\n _init();\n };\n if (immediate)\n open();\n if (autoConnect)\n watch(urlRef, open);\n return {\n data,\n status,\n close,\n send,\n open,\n ws: wsRef\n };\n}\n\nfunction useWebWorker(arg0, workerOptions, options) {\n const {\n window = defaultWindow\n } = options != null ? options : {};\n const data = ref(null);\n const worker = shallowRef();\n const post = (...args) => {\n if (!worker.value)\n return;\n worker.value.postMessage(...args);\n };\n const terminate = function terminate2() {\n if (!worker.value)\n return;\n worker.value.terminate();\n };\n if (window) {\n if (typeof arg0 === \"string\")\n worker.value = new Worker(arg0, workerOptions);\n else if (typeof arg0 === \"function\")\n worker.value = arg0();\n else\n worker.value = arg0;\n worker.value.onmessage = (e) => {\n data.value = e.data;\n };\n tryOnScopeDispose(() => {\n if (worker.value)\n worker.value.terminate();\n });\n }\n return {\n data,\n post,\n terminate,\n worker\n };\n}\n\nfunction depsParser(deps, localDeps) {\n if (deps.length === 0 && localDeps.length === 0)\n return \"\";\n const depsString = deps.map((dep) => `'${dep}'`).toString();\n const depsFunctionString = localDeps.filter((dep) => typeof dep === \"function\").map((fn) => {\n const str = fn.toString();\n if (str.trim().startsWith(\"function\")) {\n return str;\n } else {\n const name = fn.name;\n return `const ${name} = ${str}`;\n }\n }).join(\";\");\n const importString = `importScripts(${depsString});`;\n return `${depsString.trim() === \"\" ? \"\" : importString} ${depsFunctionString}`;\n}\n\nfunction jobRunner(userFunc) {\n return (e) => {\n const userFuncArgs = e.data[0];\n return Promise.resolve(userFunc.apply(void 0, userFuncArgs)).then((result) => {\n postMessage([\"SUCCESS\", result]);\n }).catch((error) => {\n postMessage([\"ERROR\", error]);\n });\n };\n}\n\nfunction createWorkerBlobUrl(fn, deps, localDeps) {\n const blobCode = `${depsParser(deps, localDeps)}; onmessage=(${jobRunner})(${fn})`;\n const blob = new Blob([blobCode], { type: \"text/javascript\" });\n const url = URL.createObjectURL(blob);\n return url;\n}\n\nfunction useWebWorkerFn(fn, options = {}) {\n const {\n dependencies = [],\n localDependencies = [],\n timeout,\n window = defaultWindow\n } = options;\n const worker = ref();\n const workerStatus = shallowRef(\"PENDING\");\n const promise = ref({});\n const timeoutId = shallowRef();\n const workerTerminate = (status = \"PENDING\") => {\n if (worker.value && worker.value._url && window) {\n worker.value.terminate();\n URL.revokeObjectURL(worker.value._url);\n promise.value = {};\n worker.value = void 0;\n window.clearTimeout(timeoutId.value);\n workerStatus.value = status;\n }\n };\n workerTerminate();\n tryOnScopeDispose(workerTerminate);\n const generateWorker = () => {\n const blobUrl = createWorkerBlobUrl(fn, dependencies, localDependencies);\n const newWorker = new Worker(blobUrl);\n newWorker._url = blobUrl;\n newWorker.onmessage = (e) => {\n const { resolve = () => {\n }, reject = () => {\n } } = promise.value;\n const [status, result] = e.data;\n switch (status) {\n case \"SUCCESS\":\n resolve(result);\n workerTerminate(status);\n break;\n default:\n reject(result);\n workerTerminate(\"ERROR\");\n break;\n }\n };\n newWorker.onerror = (e) => {\n const { reject = () => {\n } } = promise.value;\n e.preventDefault();\n reject(e);\n workerTerminate(\"ERROR\");\n };\n if (timeout) {\n timeoutId.value = setTimeout(\n () => workerTerminate(\"TIMEOUT_EXPIRED\"),\n timeout\n );\n }\n return newWorker;\n };\n const callWorker = (...fnArgs) => new Promise((resolve, reject) => {\n var _a;\n promise.value = {\n resolve,\n reject\n };\n (_a = worker.value) == null ? void 0 : _a.postMessage([[...fnArgs]]);\n workerStatus.value = \"RUNNING\";\n });\n const workerFn = (...fnArgs) => {\n if (workerStatus.value === \"RUNNING\") {\n console.error(\n \"[useWebWorkerFn] You can only run one instance of the worker at a time.\"\n );\n return Promise.reject();\n }\n worker.value = generateWorker();\n return callWorker(...fnArgs);\n };\n return {\n workerFn,\n workerStatus,\n workerTerminate\n };\n}\n\nfunction useWindowFocus(options = {}) {\n const { window = defaultWindow } = options;\n if (!window)\n return shallowRef(false);\n const focused = shallowRef(window.document.hasFocus());\n const listenerOptions = { passive: true };\n useEventListener(window, \"blur\", () => {\n focused.value = false;\n }, listenerOptions);\n useEventListener(window, \"focus\", () => {\n focused.value = true;\n }, listenerOptions);\n return focused;\n}\n\nfunction useWindowScroll(options = {}) {\n const { window = defaultWindow, ...rest } = options;\n return useScroll(window, rest);\n}\n\nfunction useWindowSize(options = {}) {\n const {\n window = defaultWindow,\n initialWidth = Number.POSITIVE_INFINITY,\n initialHeight = Number.POSITIVE_INFINITY,\n listenOrientation = true,\n includeScrollbar = true,\n type = \"inner\"\n } = options;\n const width = shallowRef(initialWidth);\n const height = shallowRef(initialHeight);\n const update = () => {\n if (window) {\n if (type === \"outer\") {\n width.value = window.outerWidth;\n height.value = window.outerHeight;\n } else if (type === \"visual\" && window.visualViewport) {\n const { width: visualViewportWidth, height: visualViewportHeight, scale } = window.visualViewport;\n width.value = Math.round(visualViewportWidth * scale);\n height.value = Math.round(visualViewportHeight * scale);\n } else if (includeScrollbar) {\n width.value = window.innerWidth;\n height.value = window.innerHeight;\n } else {\n width.value = window.document.documentElement.clientWidth;\n height.value = window.document.documentElement.clientHeight;\n }\n }\n };\n update();\n tryOnMounted(update);\n const listenerOptions = { passive: true };\n useEventListener(\"resize\", update, listenerOptions);\n if (window && type === \"visual\" && window.visualViewport) {\n useEventListener(window.visualViewport, \"resize\", update, listenerOptions);\n }\n if (listenOrientation) {\n const matches = useMediaQuery(\"(orientation: portrait)\");\n watch(matches, () => update());\n }\n return { width, height };\n}\n\nexport { DefaultMagicKeysAliasMap, StorageSerializers, TransitionPresets, computedAsync as asyncComputed, breakpointsAntDesign, breakpointsBootstrapV5, breakpointsElement, breakpointsMasterCss, breakpointsPrimeFlex, breakpointsQuasar, breakpointsSematic, breakpointsTailwind, breakpointsVuetify, breakpointsVuetifyV2, breakpointsVuetifyV3, cloneFnJSON, computedAsync, computedInject, createFetch, createReusableTemplate, createTemplatePromise, createUnrefFn, customStorageEventName, defaultDocument, defaultLocation, defaultNavigator, defaultWindow, executeTransition, formatTimeAgo, getSSRHandler, mapGamepadToXbox360Controller, onClickOutside, onElementRemoval, onKeyDown, onKeyPressed, onKeyStroke, onKeyUp, onLongPress, onStartTyping, provideSSRWidth, setSSRHandler, templateRef, unrefElement, useActiveElement, useAnimate, useAsyncQueue, useAsyncState, useBase64, useBattery, useBluetooth, useBreakpoints, useBroadcastChannel, useBrowserLocation, useCached, useClipboard, useClipboardItems, useCloned, useColorMode, useConfirmDialog, useCountdown, useCssVar, useCurrentElement, useCycleList, useDark, useDebouncedRefHistory, useDeviceMotion, useDeviceOrientation, useDevicePixelRatio, useDevicesList, useDisplayMedia, useDocumentVisibility, useDraggable, useDropZone, useElementBounding, useElementByPoint, useElementHover, useElementSize, useElementVisibility, useEventBus, useEventListener, useEventSource, useEyeDropper, useFavicon, useFetch, useFileDialog, useFileSystemAccess, useFocus, useFocusWithin, useFps, useFullscreen, useGamepad, useGeolocation, useIdle, useImage, useInfiniteScroll, useIntersectionObserver, useKeyModifier, useLocalStorage, useMagicKeys, useManualRefHistory, useMediaControls, useMediaQuery, useMemoize, useMemory, useMounted, useMouse, useMouseInElement, useMousePressed, useMutationObserver, useNavigatorLanguage, useNetwork, useNow, useObjectUrl, useOffsetPagination, useOnline, usePageLeave, useParallax, useParentElement, usePerformanceObserver, usePermission, usePointer, usePointerLock, usePointerSwipe, usePreferredColorScheme, usePreferredContrast, usePreferredDark, usePreferredLanguages, usePreferredReducedMotion, usePreferredReducedTransparency, usePrevious, useRafFn, useRefHistory, useResizeObserver, useSSRWidth, useScreenOrientation, useScreenSafeArea, useScriptTag, useScroll, useScrollLock, useSessionStorage, useShare, useSorted, useSpeechRecognition, useSpeechSynthesis, useStepper, useStorage, useStorageAsync, useStyleTag, useSupported, useSwipe, useTemplateRefsList, useTextDirection, useTextSelection, useTextareaAutosize, useThrottledRefHistory, useTimeAgo, useTimeoutPoll, useTimestamp, useTitle, useTransition, useUrlSearchParams, useUserMedia, useVModel, useVModels, useVibrate, useVirtualList, useWakeLock, useWebNotification, useWebSocket, useWebWorker, useWebWorkerFn, useWindowFocus, useWindowScroll, useWindowSize };\n","function serialize(o){return typeof o==\"string\"?`'${o}'`:new c().serialize(o)}const c=/*@__PURE__*/function(){class o{#t=new Map;compare(t,r){const e=typeof t,n=typeof r;return e===\"string\"&&n===\"string\"?t.localeCompare(r):e===\"number\"&&n===\"number\"?t-r:String.prototype.localeCompare.call(this.serialize(t,true),this.serialize(r,true))}serialize(t,r){if(t===null)return \"null\";switch(typeof t){case \"string\":return r?t:`'${t}'`;case \"bigint\":return `${t}n`;case \"object\":return this.$object(t);case \"function\":return this.$function(t)}return String(t)}serializeObject(t){const r=Object.prototype.toString.call(t);if(r!==\"[object Object]\")return this.serializeBuiltInType(r.length<10?`unknown:${r}`:r.slice(8,-1),t);const e=t.constructor,n=e===Object||e===void 0?\"\":e.name;if(n!==\"\"&&globalThis[n]===e)return this.serializeBuiltInType(n,t);if(typeof t.toJSON==\"function\"){const i=t.toJSON();return n+(i!==null&&typeof i==\"object\"?this.$object(i):`(${this.serialize(i)})`)}return this.serializeObjectEntries(n,Object.entries(t))}serializeBuiltInType(t,r){const e=this[\"$\"+t];if(e)return e.call(this,r);if(typeof r?.entries==\"function\")return this.serializeObjectEntries(t,r.entries());throw new Error(`Cannot serialize ${t}`)}serializeObjectEntries(t,r){const e=Array.from(r).sort((i,a)=>this.compare(i[0],a[0]));let n=`${t}{`;for(let i=0;ithis.compare(r,e)))}`}$Map(t){return this.serializeObjectEntries(\"Map\",t.entries())}}for(const s of [\"Error\",\"RegExp\",\"URL\"])o.prototype[\"$\"+s]=function(t){return `${s}(${t})`};for(const s of [\"Int8Array\",\"Uint8Array\",\"Uint8ClampedArray\",\"Int16Array\",\"Uint16Array\",\"Int32Array\",\"Uint32Array\",\"Float32Array\",\"Float64Array\"])o.prototype[\"$\"+s]=function(t){return `${s}[${t.join(\",\")}]`};for(const s of [\"BigInt64Array\",\"BigUint64Array\"])o.prototype[\"$\"+s]=function(t){return `${s}[${t.join(\"n,\")}${t.length>0?\"n\":\"\"}]`};return o}();\n\nfunction isEqual(object1, object2) {\n if (object1 === object2) {\n return true;\n }\n if (serialize(object1) === serialize(object2)) {\n return true;\n }\n return false;\n}\n\nexport { isEqual as i, serialize as s };\n","function isNullish(value) {\n return value === null || value === undefined;\n}\n\nexport { isNullish as i };\n//# sourceMappingURL=nullish.js.map\n","import { inject, provide } from 'vue';\n\nfunction createContext(providerComponentName, contextName) {\n const symbolDescription = typeof providerComponentName === \"string\" && !contextName ? `${providerComponentName}Context` : contextName;\n const injectionKey = Symbol(symbolDescription);\n const injectContext = (fallback) => {\n const context = inject(injectionKey, fallback);\n if (context)\n return context;\n if (context === null)\n return context;\n throw new Error(\n `Injection \\`${injectionKey.toString()}\\` not found. Component must be used within ${Array.isArray(providerComponentName) ? `one of the following components: ${providerComponentName.join(\n \", \"\n )}` : `\\`${providerComponentName}\\``}`\n );\n };\n const provideContext = (contextValue) => {\n provide(injectionKey, contextValue);\n return contextValue;\n };\n return [injectContext, provideContext];\n}\n\nexport { createContext as c };\n//# sourceMappingURL=createContext.js.map\n","import { defineComponent, toRefs, renderSlot } from 'vue';\nimport { c as createContext } from '../shared/createContext.js';\n\nconst [injectConfigProviderContext, provideConfigProviderContext] = createContext(\"ConfigProvider\");\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n ...{\n inheritAttrs: false\n },\n __name: \"ConfigProvider\",\n props: {\n dir: { default: \"ltr\" },\n locale: { default: \"en\" },\n scrollBody: { type: [Boolean, Object], default: true },\n nonce: { default: undefined },\n useId: { type: Function, default: undefined }\n },\n setup(__props) {\n const props = __props;\n const { dir, locale, scrollBody, nonce } = toRefs(props);\n provideConfigProviderContext({\n dir,\n locale,\n scrollBody,\n nonce,\n useId: props.useId\n });\n return (_ctx, _cache) => {\n return renderSlot(_ctx.$slots, \"default\");\n };\n }\n});\n\nexport { _sfc_main as _, injectConfigProviderContext as i };\n//# sourceMappingURL=ConfigProvider.js.map\n","import { ref, computed } from 'vue';\nimport { i as injectConfigProviderContext } from '../ConfigProvider/ConfigProvider.js';\n\nfunction useDirection(dir) {\n const context = injectConfigProviderContext({\n dir: ref(\"ltr\")\n });\n return computed(() => dir?.value || context.dir?.value || \"ltr\");\n}\n\nexport { useDirection as u };\n//# sourceMappingURL=useDirection.js.map\n","import { unrefElement } from '@vueuse/core';\nimport { getCurrentInstance, ref, computed } from 'vue';\n\nfunction useForwardExpose() {\n const instance = getCurrentInstance();\n const currentRef = ref();\n const currentElement = computed(() => {\n return [\"#text\", \"#comment\"].includes(currentRef.value?.$el.nodeName) ? currentRef.value?.$el.nextElementSibling : unrefElement(currentRef);\n });\n const localExpose = Object.assign({}, instance.exposed);\n const ret = {};\n for (const key in instance.props) {\n Object.defineProperty(ret, key, {\n enumerable: true,\n configurable: true,\n get: () => instance.props[key]\n });\n }\n if (Object.keys(localExpose).length > 0) {\n for (const key in localExpose) {\n Object.defineProperty(ret, key, {\n enumerable: true,\n configurable: true,\n get: () => localExpose[key]\n });\n }\n }\n Object.defineProperty(ret, \"$el\", {\n enumerable: true,\n configurable: true,\n get: () => instance.vnode.el\n });\n instance.exposed = ret;\n function forwardRef(ref2) {\n currentRef.value = ref2;\n if (!ref2)\n return;\n Object.defineProperty(ret, \"$el\", {\n enumerable: true,\n configurable: true,\n get: () => ref2 instanceof Element ? ref2 : ref2.$el\n });\n instance.exposed = ret;\n }\n return { forwardRef, currentRef, currentElement };\n}\n\nexport { useForwardExpose as u };\n//# sourceMappingURL=useForwardExpose.js.map\n","const ignoredElement = [\"INPUT\", \"TEXTAREA\"];\nfunction useArrowNavigation(e, currentElement, parentElement, options = {}) {\n if (!currentElement || options.enableIgnoredElement && ignoredElement.includes(currentElement.nodeName))\n return null;\n const {\n arrowKeyOptions = \"both\",\n attributeName = \"[data-reka-collection-item]\",\n itemsArray = [],\n loop = true,\n dir = \"ltr\",\n preventScroll = true,\n focus = false\n } = options;\n const [right, left, up, down, home, end] = [\n e.key === \"ArrowRight\",\n e.key === \"ArrowLeft\",\n e.key === \"ArrowUp\",\n e.key === \"ArrowDown\",\n e.key === \"Home\",\n e.key === \"End\"\n ];\n const goingVertical = up || down;\n const goingHorizontal = right || left;\n if (!home && !end && (!goingVertical && !goingHorizontal || arrowKeyOptions === \"vertical\" && goingHorizontal || arrowKeyOptions === \"horizontal\" && goingVertical)) {\n return null;\n }\n const allCollectionItems = parentElement ? Array.from(parentElement.querySelectorAll(attributeName)) : itemsArray;\n if (!allCollectionItems.length)\n return null;\n if (preventScroll)\n e.preventDefault();\n let item = null;\n if (goingHorizontal || goingVertical) {\n const goForward = goingVertical ? down : dir === \"ltr\" ? right : left;\n item = findNextFocusableElement(allCollectionItems, currentElement, {\n goForward,\n loop\n });\n } else if (home) {\n item = allCollectionItems.at(0) || null;\n } else if (end) {\n item = allCollectionItems.at(-1) || null;\n }\n if (focus)\n item?.focus();\n return item;\n}\nfunction findNextFocusableElement(elements, currentElement, options, iterations = elements.length) {\n if (--iterations === 0)\n return null;\n const index = elements.indexOf(currentElement);\n const newIndex = options.goForward ? index + 1 : index - 1;\n if (!options.loop && (newIndex < 0 || newIndex >= elements.length))\n return null;\n const adjustedNewIndex = (newIndex + elements.length) % elements.length;\n const candidate = elements[adjustedNewIndex];\n if (!candidate)\n return null;\n const isDisabled = candidate.hasAttribute(\"disabled\") && candidate.getAttribute(\"disabled\") !== \"false\";\n if (isDisabled) {\n return findNextFocusableElement(\n elements,\n candidate,\n options,\n iterations\n );\n }\n return candidate;\n}\n\nexport { useArrowNavigation as u };\n//# sourceMappingURL=useArrowNavigation.js.map\n","import * as vue from 'vue';\nimport { i as injectConfigProviderContext } from '../ConfigProvider/ConfigProvider.js';\n\nlet count = 0;\nfunction useId(deterministicId, prefix = \"reka\") {\n if (deterministicId)\n return deterministicId;\n const configProviderContext = injectConfigProviderContext({ useId: undefined });\n if (vue.useId) {\n return `${prefix}-${vue.useId()}`;\n } else if (configProviderContext.useId) {\n return `${prefix}-${configProviderContext.useId()}`;\n }\n return `${prefix}-${++count}`;\n}\n\nexport { useId as u };\n//# sourceMappingURL=useId.js.map\n","import { ref } from 'vue';\n\nfunction useStateMachine(initialState, machine) {\n const state = ref(initialState);\n function reducer(event) {\n const nextState = machine[state.value][event];\n return nextState ?? state.value;\n }\n const dispatch = (event) => {\n state.value = reducer(event);\n };\n return {\n state,\n dispatch\n };\n}\n\nexport { useStateMachine as u };\n//# sourceMappingURL=useStateMachine.js.map\n","import { ref, watch, nextTick, onUnmounted, computed } from 'vue';\nimport { isClient } from '@vueuse/shared';\nimport { defaultWindow } from '@vueuse/core';\nimport { u as useStateMachine } from '../shared/useStateMachine.js';\n\nfunction usePresence(present, node) {\n const stylesRef = ref({});\n const prevAnimationNameRef = ref(\"none\");\n const prevPresentRef = ref(present);\n const initialState = present.value ? \"mounted\" : \"unmounted\";\n let timeoutId;\n const ownerWindow = node.value?.ownerDocument.defaultView ?? defaultWindow;\n const { state, dispatch } = useStateMachine(initialState, {\n mounted: {\n UNMOUNT: \"unmounted\",\n ANIMATION_OUT: \"unmountSuspended\"\n },\n unmountSuspended: {\n MOUNT: \"mounted\",\n ANIMATION_END: \"unmounted\"\n },\n unmounted: {\n MOUNT: \"mounted\"\n }\n });\n const dispatchCustomEvent = (name) => {\n if (isClient) {\n const customEvent = new CustomEvent(name, { bubbles: false, cancelable: false });\n node.value?.dispatchEvent(customEvent);\n }\n };\n watch(\n present,\n async (currentPresent, prevPresent) => {\n const hasPresentChanged = prevPresent !== currentPresent;\n await nextTick();\n if (hasPresentChanged) {\n const prevAnimationName = prevAnimationNameRef.value;\n const currentAnimationName = getAnimationName(node.value);\n if (currentPresent) {\n dispatch(\"MOUNT\");\n dispatchCustomEvent(\"enter\");\n if (currentAnimationName === \"none\")\n dispatchCustomEvent(\"after-enter\");\n } else if (currentAnimationName === \"none\" || stylesRef.value?.display === \"none\") {\n dispatch(\"UNMOUNT\");\n dispatchCustomEvent(\"leave\");\n dispatchCustomEvent(\"after-leave\");\n } else {\n const isAnimating = prevAnimationName !== currentAnimationName;\n if (prevPresent && isAnimating) {\n dispatch(\"ANIMATION_OUT\");\n dispatchCustomEvent(\"leave\");\n } else {\n dispatch(\"UNMOUNT\");\n dispatchCustomEvent(\"after-leave\");\n }\n }\n }\n },\n { immediate: true }\n );\n const handleAnimationEnd = (event) => {\n const currentAnimationName = getAnimationName(node.value);\n const isCurrentAnimation = currentAnimationName.includes(\n event.animationName\n );\n const directionName = state.value === \"mounted\" ? \"enter\" : \"leave\";\n if (event.target === node.value && isCurrentAnimation) {\n dispatchCustomEvent(`after-${directionName}`);\n dispatch(\"ANIMATION_END\");\n if (!prevPresentRef.value) {\n const currentFillMode = node.value.style.animationFillMode;\n node.value.style.animationFillMode = \"forwards\";\n timeoutId = ownerWindow?.setTimeout(() => {\n if (node.value?.style.animationFillMode === \"forwards\") {\n node.value.style.animationFillMode = currentFillMode;\n }\n });\n }\n }\n if (event.target === node.value && currentAnimationName === \"none\")\n dispatch(\"ANIMATION_END\");\n };\n const handleAnimationStart = (event) => {\n if (event.target === node.value) {\n prevAnimationNameRef.value = getAnimationName(node.value);\n }\n };\n const watcher = watch(\n node,\n (newNode, oldNode) => {\n if (newNode) {\n stylesRef.value = getComputedStyle(newNode);\n newNode.addEventListener(\"animationstart\", handleAnimationStart);\n newNode.addEventListener(\"animationcancel\", handleAnimationEnd);\n newNode.addEventListener(\"animationend\", handleAnimationEnd);\n } else {\n dispatch(\"ANIMATION_END\");\n if (timeoutId !== undefined)\n ownerWindow?.clearTimeout(timeoutId);\n oldNode?.removeEventListener(\"animationstart\", handleAnimationStart);\n oldNode?.removeEventListener(\"animationcancel\", handleAnimationEnd);\n oldNode?.removeEventListener(\"animationend\", handleAnimationEnd);\n }\n },\n { immediate: true }\n );\n const stateWatcher = watch(state, () => {\n const currentAnimationName = getAnimationName(node.value);\n prevAnimationNameRef.value = state.value === \"mounted\" ? currentAnimationName : \"none\";\n });\n onUnmounted(() => {\n watcher();\n stateWatcher();\n });\n const isPresent = computed(\n () => [\"mounted\", \"unmountSuspended\"].includes(state.value)\n );\n return {\n isPresent\n };\n}\nfunction getAnimationName(node) {\n return node ? getComputedStyle(node).animationName || \"none\" : \"none\";\n}\n\nexport { usePresence as u };\n//# sourceMappingURL=usePresence.js.map\n","import { defineComponent, toRefs, ref, getCurrentInstance, h } from 'vue';\nimport { u as usePresence } from './usePresence.js';\nimport { unrefElement } from '@vueuse/core';\nimport { r as renderSlotFragments } from '../shared/renderSlotFragments.js';\n\nconst Presence = defineComponent({\n name: \"Presence\",\n props: {\n present: {\n type: Boolean,\n required: true\n },\n forceMount: {\n type: Boolean\n }\n },\n slots: {},\n setup(props, { slots, expose }) {\n const { present, forceMount } = toRefs(props);\n const node = ref();\n const { isPresent } = usePresence(present, node);\n expose({ present: isPresent });\n let children = slots.default({ present: isPresent.value });\n children = renderSlotFragments(children || []);\n const instance = getCurrentInstance();\n if (children && children?.length > 1) {\n const componentName = instance?.parent?.type.name ? `<${instance.parent.type.name} />` : \"component\";\n throw new Error(\n [\n `Detected an invalid children for \\`${componentName}\\` for \\`Presence\\` component.`,\n \"\",\n \"Note: Presence works similarly to `v-if` directly, but it waits for animation/transition to finished before unmounting. So it expect only one direct child of valid VNode type.\",\n \"You can apply a few solutions:\",\n [\n \"Provide a single child element so that `presence` directive attach correctly.\",\n \"Ensure the first child is an actual element instead of a raw text node or comment node.\"\n ].map((line) => ` - ${line}`).join(\"\\n\")\n ].join(\"\\n\")\n );\n }\n return () => {\n if (forceMount.value || present.value || isPresent.value) {\n return h(slots.default({ present: isPresent.value })[0], {\n ref: (v) => {\n const el = unrefElement(v);\n if (typeof el?.hasAttribute === \"undefined\")\n return el;\n if (el?.hasAttribute(\"data-reka-popper-content-wrapper\"))\n node.value = el.firstElementChild;\n else\n node.value = el;\n return el;\n }\n });\n } else {\n return null;\n }\n };\n }\n});\n\nexport { Presence as P };\n//# sourceMappingURL=Presence.js.map\n","import { getCurrentInstance, toHandlerKey, camelize } from 'vue';\n\nfunction useEmitAsProps(emit) {\n const vm = getCurrentInstance();\n const events = vm?.type.emits;\n const result = {};\n if (!events?.length) {\n console.warn(\n `No emitted event found. Please check component: ${vm?.type.__name}`\n );\n }\n events?.forEach((ev) => {\n result[toHandlerKey(camelize(ev))] = (...arg) => emit(ev, ...arg);\n });\n return result;\n}\n\nexport { useEmitAsProps as u };\n//# sourceMappingURL=useEmitAsProps.js.map\n","import { getCurrentInstance, toRef, computed, camelize } from 'vue';\n\nfunction useForwardProps(props) {\n const vm = getCurrentInstance();\n const defaultProps = Object.keys(vm?.type.props ?? {}).reduce((prev, curr) => {\n const defaultValue = (vm?.type.props[curr]).default;\n if (defaultValue !== undefined)\n prev[curr] = defaultValue;\n return prev;\n }, {});\n const refProps = toRef(props);\n return computed(() => {\n const preservedProps = {};\n const assignedProps = vm?.vnode.props ?? {};\n Object.keys(assignedProps).forEach((key) => {\n preservedProps[camelize(key)] = assignedProps[key];\n });\n return Object.keys({ ...defaultProps, ...preservedProps }).reduce((prev, curr) => {\n if (refProps.value[curr] !== undefined)\n prev[curr] = refProps.value[curr];\n return prev;\n }, {});\n });\n}\n\nexport { useForwardProps as u };\n//# sourceMappingURL=useForwardProps.js.map\n","import { computed } from 'vue';\nimport { u as useEmitAsProps } from './useEmitAsProps.js';\nimport { u as useForwardProps } from './useForwardProps.js';\n\nfunction useForwardPropsEmits(props, emit) {\n const parsedProps = useForwardProps(props);\n const emitsAsProps = emit ? useEmitAsProps(emit) : {};\n return computed(() => ({\n ...parsedProps.value,\n ...emitsAsProps\n }));\n}\n\nexport { useForwardPropsEmits as u };\n//# sourceMappingURL=useForwardPropsEmits.js.map\n","import { defineComponent, ref, toRefs, renderSlot, unref } from 'vue';\nimport { useVModel } from '@vueuse/core';\nimport { c as createContext } from '../shared/createContext.js';\n\nconst [injectDialogRootContext, provideDialogRootContext] = createContext(\"DialogRoot\");\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n ...{\n inheritAttrs: false\n },\n __name: \"DialogRoot\",\n props: {\n open: { type: Boolean, default: undefined },\n defaultOpen: { type: Boolean, default: false },\n modal: { type: Boolean, default: true }\n },\n emits: [\"update:open\"],\n setup(__props, { emit: __emit }) {\n const props = __props;\n const emit = __emit;\n const open = useVModel(props, \"open\", emit, {\n defaultValue: props.defaultOpen,\n passive: props.open === undefined\n });\n const triggerElement = ref();\n const contentElement = ref();\n const { modal } = toRefs(props);\n provideDialogRootContext({\n open,\n modal,\n openModal: () => {\n open.value = true;\n },\n onOpenChange: (value) => {\n open.value = value;\n },\n onOpenToggle: () => {\n open.value = !open.value;\n },\n contentId: \"\",\n titleId: \"\",\n descriptionId: \"\",\n triggerElement,\n contentElement\n });\n return (_ctx, _cache) => {\n return renderSlot(_ctx.$slots, \"default\", { open: unref(open) });\n };\n }\n});\n\nexport { _sfc_main as _, injectDialogRootContext as i };\n//# sourceMappingURL=DialogRoot.js.map\n","import { defineComponent, onMounted, openBlock, createBlock, unref, mergeProps, withCtx, renderSlot } from 'vue';\nimport { i as injectDialogRootContext } from './DialogRoot.js';\nimport { u as useForwardExpose } from '../shared/useForwardExpose.js';\nimport { u as useId } from '../shared/useId.js';\nimport { P as Primitive } from '../Primitive/Primitive.js';\n\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"DialogTrigger\",\n props: {\n asChild: { type: Boolean },\n as: { default: \"button\" }\n },\n setup(__props) {\n const props = __props;\n const rootContext = injectDialogRootContext();\n const { forwardRef, currentElement } = useForwardExpose();\n rootContext.contentId ||= useId(undefined, \"reka-dialog-content\");\n onMounted(() => {\n rootContext.triggerElement.value = currentElement.value;\n });\n return (_ctx, _cache) => {\n return openBlock(), createBlock(unref(Primitive), mergeProps(props, {\n ref: unref(forwardRef),\n type: _ctx.as === \"button\" ? \"button\" : undefined,\n \"aria-haspopup\": \"dialog\",\n \"aria-expanded\": unref(rootContext).open.value || false,\n \"aria-controls\": unref(rootContext).open.value ? unref(rootContext).contentId : undefined,\n \"data-state\": unref(rootContext).open.value ? \"open\" : \"closed\",\n onClick: unref(rootContext).onOpenToggle\n }), {\n default: withCtx(() => [\n renderSlot(_ctx.$slots, \"default\")\n ]),\n _: 3\n }, 16, [\"type\", \"aria-expanded\", \"aria-controls\", \"data-state\", \"onClick\"]);\n };\n }\n});\n\nexport { _sfc_main as _ };\n//# sourceMappingURL=DialogTrigger.js.map\n","import { defineComponent, unref, openBlock, createBlock, Teleport, renderSlot, createCommentVNode } from 'vue';\nimport { useMounted } from '@vueuse/core';\n\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"Teleport\",\n props: {\n to: { default: \"body\" },\n disabled: { type: Boolean },\n defer: { type: Boolean },\n forceMount: { type: Boolean }\n },\n setup(__props) {\n const isMounted = useMounted();\n return (_ctx, _cache) => {\n return unref(isMounted) || _ctx.forceMount ? (openBlock(), createBlock(Teleport, {\n key: 0,\n to: _ctx.to,\n disabled: _ctx.disabled,\n defer: _ctx.defer\n }, [\n renderSlot(_ctx.$slots, \"default\")\n ], 8, [\"to\", \"disabled\", \"defer\"])) : createCommentVNode(\"\", true);\n };\n }\n});\n\nexport { _sfc_main as _ };\n//# sourceMappingURL=Teleport.js.map\n","function handleAndDispatchCustomEvent(name, handler, detail) {\n const target = detail.originalEvent.target;\n const event = new CustomEvent(name, {\n bubbles: false,\n cancelable: true,\n detail\n });\n if (handler)\n target.addEventListener(name, handler, { once: true });\n target.dispatchEvent(event);\n}\n\nexport { handleAndDispatchCustomEvent as h };\n//# sourceMappingURL=handleAndDispatchCustomEvent.js.map\n","import { isClient } from '@vueuse/shared';\nimport { ref, watchEffect, nextTick } from 'vue';\nimport { h as handleAndDispatchCustomEvent } from '../shared/handleAndDispatchCustomEvent.js';\n\nconst POINTER_DOWN_OUTSIDE = \"dismissableLayer.pointerDownOutside\";\nconst FOCUS_OUTSIDE = \"dismissableLayer.focusOutside\";\nfunction isLayerExist(layerElement, targetElement) {\n const targetLayer = targetElement.closest(\n \"[data-dismissable-layer]\"\n );\n const mainLayer = layerElement.dataset.dismissableLayer === \"\" ? layerElement : layerElement.querySelector(\n \"[data-dismissable-layer]\"\n );\n const nodeList = Array.from(\n layerElement.ownerDocument.querySelectorAll(\"[data-dismissable-layer]\")\n );\n if (targetLayer && mainLayer === targetLayer || nodeList.indexOf(mainLayer) < nodeList.indexOf(targetLayer)) {\n return true;\n } else {\n return false;\n }\n}\nfunction usePointerDownOutside(onPointerDownOutside, element) {\n const ownerDocument = element?.value?.ownerDocument ?? globalThis?.document;\n const isPointerInsideDOMTree = ref(false);\n const handleClickRef = ref(() => {\n });\n watchEffect((cleanupFn) => {\n if (!isClient)\n return;\n const handlePointerDown = async (event) => {\n const target = event.target;\n if (!element?.value)\n return;\n if (isLayerExist(element.value, target)) {\n isPointerInsideDOMTree.value = false;\n return;\n }\n if (event.target && !isPointerInsideDOMTree.value) {\n let handleAndDispatchPointerDownOutsideEvent = function() {\n handleAndDispatchCustomEvent(\n POINTER_DOWN_OUTSIDE,\n onPointerDownOutside,\n eventDetail\n );\n };\n const eventDetail = { originalEvent: event };\n if (event.pointerType === \"touch\") {\n ownerDocument.removeEventListener(\"click\", handleClickRef.value);\n handleClickRef.value = handleAndDispatchPointerDownOutsideEvent;\n ownerDocument.addEventListener(\"click\", handleClickRef.value, {\n once: true\n });\n } else {\n handleAndDispatchPointerDownOutsideEvent();\n }\n } else {\n ownerDocument.removeEventListener(\"click\", handleClickRef.value);\n }\n isPointerInsideDOMTree.value = false;\n };\n const timerId = window.setTimeout(() => {\n ownerDocument.addEventListener(\"pointerdown\", handlePointerDown);\n }, 0);\n cleanupFn(() => {\n window.clearTimeout(timerId);\n ownerDocument.removeEventListener(\"pointerdown\", handlePointerDown);\n ownerDocument.removeEventListener(\"click\", handleClickRef.value);\n });\n });\n return {\n onPointerDownCapture: () => isPointerInsideDOMTree.value = true\n };\n}\nfunction useFocusOutside(onFocusOutside, element) {\n const ownerDocument = element?.value?.ownerDocument ?? globalThis?.document;\n const isFocusInsideDOMTree = ref(false);\n watchEffect((cleanupFn) => {\n if (!isClient)\n return;\n const handleFocus = async (event) => {\n if (!element?.value)\n return;\n await nextTick();\n if (!element.value || isLayerExist(element.value, event.target))\n return;\n if (event.target && !isFocusInsideDOMTree.value) {\n const eventDetail = { originalEvent: event };\n handleAndDispatchCustomEvent(\n FOCUS_OUTSIDE,\n onFocusOutside,\n eventDetail\n );\n }\n };\n ownerDocument.addEventListener(\"focusin\", handleFocus);\n cleanupFn(() => ownerDocument.removeEventListener(\"focusin\", handleFocus));\n });\n return {\n onFocusCapture: () => isFocusInsideDOMTree.value = true,\n onBlurCapture: () => isFocusInsideDOMTree.value = false\n };\n}\n\nexport { useFocusOutside as a, usePointerDownOutside as u };\n//# sourceMappingURL=utils.js.map\n","import { defineComponent, computed, watchEffect, openBlock, createBlock, unref, normalizeStyle, withCtx, renderSlot, reactive, nextTick } from 'vue';\nimport { onKeyStroke } from '@vueuse/core';\nimport { u as usePointerDownOutside, a as useFocusOutside } from './utils.js';\nimport { u as useForwardExpose } from '../shared/useForwardExpose.js';\nimport { P as Primitive } from '../Primitive/Primitive.js';\n\nconst context = reactive({\n layersRoot: /* @__PURE__ */ new Set(),\n layersWithOutsidePointerEventsDisabled: /* @__PURE__ */ new Set(),\n branches: /* @__PURE__ */ new Set()\n});\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"DismissableLayer\",\n props: {\n disableOutsidePointerEvents: { type: Boolean, default: false },\n asChild: { type: Boolean },\n as: {}\n },\n emits: [\"escapeKeyDown\", \"pointerDownOutside\", \"focusOutside\", \"interactOutside\", \"dismiss\"],\n setup(__props, { emit: __emit }) {\n const props = __props;\n const emits = __emit;\n const { forwardRef, currentElement: layerElement } = useForwardExpose();\n const ownerDocument = computed(\n () => layerElement.value?.ownerDocument ?? globalThis.document\n );\n const layers = computed(() => context.layersRoot);\n const index = computed(() => {\n return layerElement.value ? Array.from(layers.value).indexOf(layerElement.value) : -1;\n });\n const isBodyPointerEventsDisabled = computed(() => {\n return context.layersWithOutsidePointerEventsDisabled.size > 0;\n });\n const isPointerEventsEnabled = computed(() => {\n const localLayers = Array.from(layers.value);\n const [highestLayerWithOutsidePointerEventsDisabled] = [...context.layersWithOutsidePointerEventsDisabled].slice(-1);\n const highestLayerWithOutsidePointerEventsDisabledIndex = localLayers.indexOf(highestLayerWithOutsidePointerEventsDisabled);\n return index.value >= highestLayerWithOutsidePointerEventsDisabledIndex;\n });\n const pointerDownOutside = usePointerDownOutside(async (event) => {\n const isPointerDownOnBranch = [...context.branches].some(\n (branch) => branch?.contains(event.target)\n );\n if (!isPointerEventsEnabled.value || isPointerDownOnBranch)\n return;\n emits(\"pointerDownOutside\", event);\n emits(\"interactOutside\", event);\n await nextTick();\n if (!event.defaultPrevented)\n emits(\"dismiss\");\n }, layerElement);\n const focusOutside = useFocusOutside((event) => {\n const isFocusInBranch = [...context.branches].some(\n (branch) => branch?.contains(event.target)\n );\n if (isFocusInBranch)\n return;\n emits(\"focusOutside\", event);\n emits(\"interactOutside\", event);\n if (!event.defaultPrevented)\n emits(\"dismiss\");\n }, layerElement);\n onKeyStroke(\"Escape\", (event) => {\n const isHighestLayer = index.value === layers.value.size - 1;\n if (!isHighestLayer)\n return;\n emits(\"escapeKeyDown\", event);\n if (!event.defaultPrevented)\n emits(\"dismiss\");\n });\n let originalBodyPointerEvents;\n watchEffect((cleanupFn) => {\n if (!layerElement.value)\n return;\n if (props.disableOutsidePointerEvents) {\n if (context.layersWithOutsidePointerEventsDisabled.size === 0) {\n originalBodyPointerEvents = ownerDocument.value.body.style.pointerEvents;\n ownerDocument.value.body.style.pointerEvents = \"none\";\n }\n context.layersWithOutsidePointerEventsDisabled.add(layerElement.value);\n }\n layers.value.add(layerElement.value);\n cleanupFn(() => {\n if (props.disableOutsidePointerEvents && context.layersWithOutsidePointerEventsDisabled.size === 1) {\n ownerDocument.value.body.style.pointerEvents = originalBodyPointerEvents;\n }\n });\n });\n watchEffect((cleanupFn) => {\n cleanupFn(() => {\n if (!layerElement.value)\n return;\n layers.value.delete(layerElement.value);\n context.layersWithOutsidePointerEventsDisabled.delete(layerElement.value);\n });\n });\n return (_ctx, _cache) => {\n return openBlock(), createBlock(unref(Primitive), {\n ref: unref(forwardRef),\n \"as-child\": _ctx.asChild,\n as: _ctx.as,\n \"data-dismissable-layer\": \"\",\n style: normalizeStyle({\n pointerEvents: isBodyPointerEventsDisabled.value ? isPointerEventsEnabled.value ? \"auto\" : \"none\" : undefined\n }),\n onFocusCapture: unref(focusOutside).onFocusCapture,\n onBlurCapture: unref(focusOutside).onBlurCapture,\n onPointerdownCapture: unref(pointerDownOutside).onPointerDownCapture\n }, {\n default: withCtx(() => [\n renderSlot(_ctx.$slots, \"default\")\n ]),\n _: 3\n }, 8, [\"as-child\", \"as\", \"style\", \"onFocusCapture\", \"onBlurCapture\", \"onPointerdownCapture\"]);\n };\n }\n});\n\nexport { _sfc_main as _, context as c };\n//# sourceMappingURL=DismissableLayer.js.map\n","function getActiveElement() {\n let activeElement = document.activeElement;\n if (activeElement == null) {\n return null;\n }\n while (activeElement != null && activeElement.shadowRoot != null && activeElement.shadowRoot.activeElement != null) {\n activeElement = activeElement.shadowRoot.activeElement;\n }\n return activeElement;\n}\n\nexport { getActiveElement as g };\n//# sourceMappingURL=getActiveElement.js.map\n","import { g as getActiveElement } from '../shared/getActiveElement.js';\n\nconst ITEM_SELECT = \"menu.itemSelect\";\nconst SELECTION_KEYS = [\"Enter\", \" \"];\nconst FIRST_KEYS = [\"ArrowDown\", \"PageUp\", \"Home\"];\nconst LAST_KEYS = [\"ArrowUp\", \"PageDown\", \"End\"];\nconst FIRST_LAST_KEYS = [...FIRST_KEYS, ...LAST_KEYS];\nconst SUB_OPEN_KEYS = {\n ltr: [...SELECTION_KEYS, \"ArrowRight\"],\n rtl: [...SELECTION_KEYS, \"ArrowLeft\"]\n};\nconst SUB_CLOSE_KEYS = {\n ltr: [\"ArrowLeft\"],\n rtl: [\"ArrowRight\"]\n};\nfunction getOpenState(open) {\n return open ? \"open\" : \"closed\";\n}\nfunction isIndeterminate(checked) {\n return checked === \"indeterminate\";\n}\nfunction getCheckedState(checked) {\n return isIndeterminate(checked) ? \"indeterminate\" : checked ? \"checked\" : \"unchecked\";\n}\nfunction focusFirst(candidates) {\n const PREVIOUSLY_FOCUSED_ELEMENT = getActiveElement();\n for (const candidate of candidates) {\n if (candidate === PREVIOUSLY_FOCUSED_ELEMENT)\n return;\n candidate.focus();\n if (getActiveElement() !== PREVIOUSLY_FOCUSED_ELEMENT)\n return;\n }\n}\nfunction isPointInPolygon(point, polygon) {\n const { x, y } = point;\n let inside = false;\n for (let i = 0, j = polygon.length - 1; i < polygon.length; j = i++) {\n const xi = polygon[i].x;\n const yi = polygon[i].y;\n const xj = polygon[j].x;\n const yj = polygon[j].y;\n const intersect = yi > y !== yj > y && x < (xj - xi) * (y - yi) / (yj - yi) + xi;\n if (intersect)\n inside = !inside;\n }\n return inside;\n}\nfunction isPointerInGraceArea(event, area) {\n if (!area)\n return false;\n const cursorPos = { x: event.clientX, y: event.clientY };\n return isPointInPolygon(cursorPos, area);\n}\nfunction isMouseEvent(event) {\n return event.pointerType === \"mouse\";\n}\n\nexport { FIRST_LAST_KEYS as F, ITEM_SELECT as I, LAST_KEYS as L, SELECTION_KEYS as S, getCheckedState as a, isPointerInGraceArea as b, isMouseEvent as c, SUB_CLOSE_KEYS as d, SUB_OPEN_KEYS as e, focusFirst as f, getOpenState as g, isIndeterminate as i };\n//# sourceMappingURL=utils.js.map\n","import { g as getActiveElement } from '../shared/getActiveElement.js';\n\nconst AUTOFOCUS_ON_MOUNT = \"focusScope.autoFocusOnMount\";\nconst AUTOFOCUS_ON_UNMOUNT = \"focusScope.autoFocusOnUnmount\";\nconst EVENT_OPTIONS = { bubbles: false, cancelable: true };\nfunction focusFirst(candidates, { select = false } = {}) {\n const previouslyFocusedElement = getActiveElement();\n for (const candidate of candidates) {\n focus(candidate, { select });\n if (getActiveElement() !== previouslyFocusedElement)\n return true;\n }\n}\nfunction getTabbableEdges(container) {\n const candidates = getTabbableCandidates(container);\n const first = findVisible(candidates, container);\n const last = findVisible(candidates.reverse(), container);\n return [first, last];\n}\nfunction getTabbableCandidates(container) {\n const nodes = [];\n const walker = document.createTreeWalker(container, NodeFilter.SHOW_ELEMENT, {\n acceptNode: (node) => {\n const isHiddenInput = node.tagName === \"INPUT\" && node.type === \"hidden\";\n if (node.disabled || node.hidden || isHiddenInput)\n return NodeFilter.FILTER_SKIP;\n return node.tabIndex >= 0 ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_SKIP;\n }\n });\n while (walker.nextNode()) nodes.push(walker.currentNode);\n return nodes;\n}\nfunction findVisible(elements, container) {\n for (const element of elements) {\n if (!isHidden(element, { upTo: container }))\n return element;\n }\n}\nfunction isHidden(node, { upTo }) {\n if (getComputedStyle(node).visibility === \"hidden\")\n return true;\n while (node) {\n if (upTo !== undefined && node === upTo)\n return false;\n if (getComputedStyle(node).display === \"none\")\n return true;\n node = node.parentElement;\n }\n return false;\n}\nfunction isSelectableInput(element) {\n return element instanceof HTMLInputElement && \"select\" in element;\n}\nfunction focus(element, { select = false } = {}) {\n if (element && element.focus) {\n const previouslyFocusedElement = getActiveElement();\n element.focus({ preventScroll: true });\n if (element !== previouslyFocusedElement && isSelectableInput(element) && select) {\n element.select();\n }\n }\n}\n\nexport { AUTOFOCUS_ON_MOUNT as A, EVENT_OPTIONS as E, focus as a, AUTOFOCUS_ON_UNMOUNT as b, getTabbableEdges as c, focusFirst as f, getTabbableCandidates as g };\n//# sourceMappingURL=utils.js.map\n","import { createGlobalState } from '@vueuse/core';\nimport { ref } from 'vue';\n\nconst useFocusStackState = createGlobalState(() => {\n const stack = ref([]);\n return stack;\n});\nfunction createFocusScopesStack() {\n const stack = useFocusStackState();\n return {\n add(focusScope) {\n const activeFocusScope = stack.value[0];\n if (focusScope !== activeFocusScope)\n activeFocusScope?.pause();\n stack.value = arrayRemove(stack.value, focusScope);\n stack.value.unshift(focusScope);\n },\n remove(focusScope) {\n stack.value = arrayRemove(stack.value, focusScope);\n stack.value[0]?.resume();\n }\n };\n}\nfunction arrayRemove(array, item) {\n const updatedArray = [...array];\n const index = updatedArray.indexOf(item);\n if (index !== -1)\n updatedArray.splice(index, 1);\n return updatedArray;\n}\nfunction removeLinks(items) {\n return items.filter((item) => item.tagName !== \"A\");\n}\n\nexport { createFocusScopesStack as c, removeLinks as r };\n//# sourceMappingURL=stack.js.map\n","import { defineComponent, ref, reactive, watchEffect, nextTick, openBlock, createBlock, unref, withCtx, renderSlot } from 'vue';\nimport { isClient } from '@vueuse/shared';\nimport { A as AUTOFOCUS_ON_MOUNT, f as focusFirst, g as getTabbableCandidates, a as focus, b as AUTOFOCUS_ON_UNMOUNT, E as EVENT_OPTIONS, c as getTabbableEdges } from './utils.js';\nimport { c as createFocusScopesStack, r as removeLinks } from './stack.js';\nimport { u as useForwardExpose } from '../shared/useForwardExpose.js';\nimport { g as getActiveElement } from '../shared/getActiveElement.js';\nimport { P as Primitive } from '../Primitive/Primitive.js';\n\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"FocusScope\",\n props: {\n loop: { type: Boolean, default: false },\n trapped: { type: Boolean, default: false },\n asChild: { type: Boolean },\n as: {}\n },\n emits: [\"mountAutoFocus\", \"unmountAutoFocus\"],\n setup(__props, { emit: __emit }) {\n const props = __props;\n const emits = __emit;\n const { currentRef, currentElement } = useForwardExpose();\n const lastFocusedElementRef = ref(null);\n const focusScopesStack = createFocusScopesStack();\n const focusScope = reactive({\n paused: false,\n pause() {\n this.paused = true;\n },\n resume() {\n this.paused = false;\n }\n });\n watchEffect((cleanupFn) => {\n if (!isClient)\n return;\n const container = currentElement.value;\n if (!props.trapped)\n return;\n function handleFocusIn(event) {\n if (focusScope.paused || !container)\n return;\n const target = event.target;\n if (container.contains(target))\n lastFocusedElementRef.value = target;\n else focus(lastFocusedElementRef.value, { select: true });\n }\n function handleFocusOut(event) {\n if (focusScope.paused || !container)\n return;\n const relatedTarget = event.relatedTarget;\n if (relatedTarget === null)\n return;\n if (!container.contains(relatedTarget))\n focus(lastFocusedElementRef.value, { select: true });\n }\n function handleMutations(mutations) {\n const isLastFocusedElementExist = container.contains(lastFocusedElementRef.value);\n if (!isLastFocusedElementExist)\n focus(container);\n }\n document.addEventListener(\"focusin\", handleFocusIn);\n document.addEventListener(\"focusout\", handleFocusOut);\n const mutationObserver = new MutationObserver(handleMutations);\n if (container)\n mutationObserver.observe(container, { childList: true, subtree: true });\n cleanupFn(() => {\n document.removeEventListener(\"focusin\", handleFocusIn);\n document.removeEventListener(\"focusout\", handleFocusOut);\n mutationObserver.disconnect();\n });\n });\n watchEffect(async (cleanupFn) => {\n const container = currentElement.value;\n await nextTick();\n if (!container)\n return;\n focusScopesStack.add(focusScope);\n const previouslyFocusedElement = getActiveElement();\n const hasFocusedCandidate = container.contains(previouslyFocusedElement);\n if (!hasFocusedCandidate) {\n const mountEvent = new CustomEvent(AUTOFOCUS_ON_MOUNT, EVENT_OPTIONS);\n container.addEventListener(AUTOFOCUS_ON_MOUNT, (ev) => emits(\"mountAutoFocus\", ev));\n container.dispatchEvent(mountEvent);\n if (!mountEvent.defaultPrevented) {\n focusFirst(removeLinks(getTabbableCandidates(container)), {\n select: true\n });\n if (getActiveElement() === previouslyFocusedElement)\n focus(container);\n }\n }\n cleanupFn(() => {\n container.removeEventListener(AUTOFOCUS_ON_MOUNT, (ev) => emits(\"mountAutoFocus\", ev));\n const unmountEvent = new CustomEvent(AUTOFOCUS_ON_UNMOUNT, EVENT_OPTIONS);\n const unmountEventHandler = (ev) => {\n emits(\"unmountAutoFocus\", ev);\n };\n container.addEventListener(AUTOFOCUS_ON_UNMOUNT, unmountEventHandler);\n container.dispatchEvent(unmountEvent);\n setTimeout(() => {\n if (!unmountEvent.defaultPrevented)\n focus(previouslyFocusedElement ?? document.body, { select: true });\n container.removeEventListener(AUTOFOCUS_ON_UNMOUNT, unmountEventHandler);\n focusScopesStack.remove(focusScope);\n }, 0);\n });\n });\n function handleKeyDown(event) {\n if (!props.loop && !props.trapped)\n return;\n if (focusScope.paused)\n return;\n const isTabKey = event.key === \"Tab\" && !event.altKey && !event.ctrlKey && !event.metaKey;\n const focusedElement = getActiveElement();\n if (isTabKey && focusedElement) {\n const container = event.currentTarget;\n const [first, last] = getTabbableEdges(container);\n const hasTabbableElementsInside = first && last;\n if (!hasTabbableElementsInside) {\n if (focusedElement === container)\n event.preventDefault();\n } else {\n if (!event.shiftKey && focusedElement === last) {\n event.preventDefault();\n if (props.loop)\n focus(first, { select: true });\n } else if (event.shiftKey && focusedElement === first) {\n event.preventDefault();\n if (props.loop)\n focus(last, { select: true });\n }\n }\n }\n }\n return (_ctx, _cache) => {\n return openBlock(), createBlock(unref(Primitive), {\n ref_key: \"currentRef\",\n ref: currentRef,\n tabindex: \"-1\",\n \"as-child\": _ctx.asChild,\n as: _ctx.as,\n onKeydown: handleKeyDown\n }, {\n default: withCtx(() => [\n renderSlot(_ctx.$slots, \"default\")\n ]),\n _: 3\n }, 8, [\"as-child\", \"as\"]);\n };\n }\n});\n\nexport { _sfc_main as _ };\n//# sourceMappingURL=FocusScope.js.map\n","import { defineComponent, onMounted, openBlock, createBlock, unref, withCtx, createVNode, mergeProps, renderSlot } from 'vue';\nimport { _ as _sfc_main$2 } from '../DismissableLayer/DismissableLayer.js';\nimport { g as getOpenState } from '../Menu/utils.js';\nimport { u as useWarning } from './utils.js';\nimport { u as useForwardExpose } from '../shared/useForwardExpose.js';\nimport { u as useId } from '../shared/useId.js';\nimport { g as getActiveElement } from '../shared/getActiveElement.js';\nimport { _ as _sfc_main$1 } from '../FocusScope/FocusScope.js';\nimport { i as injectDialogRootContext } from './DialogRoot.js';\n\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"DialogContentImpl\",\n props: {\n forceMount: { type: Boolean },\n trapFocus: { type: Boolean },\n disableOutsidePointerEvents: { type: Boolean },\n asChild: { type: Boolean },\n as: {}\n },\n emits: [\"escapeKeyDown\", \"pointerDownOutside\", \"focusOutside\", \"interactOutside\", \"openAutoFocus\", \"closeAutoFocus\"],\n setup(__props, { emit: __emit }) {\n const props = __props;\n const emits = __emit;\n const rootContext = injectDialogRootContext();\n const { forwardRef, currentElement: contentElement } = useForwardExpose();\n rootContext.titleId ||= useId(undefined, \"reka-dialog-title\");\n rootContext.descriptionId ||= useId(undefined, \"reka-dialog-description\");\n onMounted(() => {\n rootContext.contentElement = contentElement;\n if (getActiveElement() !== document.body)\n rootContext.triggerElement.value = getActiveElement();\n });\n if (process.env.NODE_ENV !== \"production\") {\n useWarning({\n titleName: \"DialogTitle\",\n contentName: \"DialogContent\",\n componentLink: \"dialog.html#title\",\n titleId: rootContext.titleId,\n descriptionId: rootContext.descriptionId,\n contentElement\n });\n }\n return (_ctx, _cache) => {\n return openBlock(), createBlock(unref(_sfc_main$1), {\n \"as-child\": \"\",\n loop: \"\",\n trapped: props.trapFocus,\n onMountAutoFocus: _cache[5] || (_cache[5] = ($event) => emits(\"openAutoFocus\", $event)),\n onUnmountAutoFocus: _cache[6] || (_cache[6] = ($event) => emits(\"closeAutoFocus\", $event))\n }, {\n default: withCtx(() => [\n createVNode(unref(_sfc_main$2), mergeProps({\n id: unref(rootContext).contentId,\n ref: unref(forwardRef),\n as: _ctx.as,\n \"as-child\": _ctx.asChild,\n \"disable-outside-pointer-events\": _ctx.disableOutsidePointerEvents,\n role: \"dialog\",\n \"aria-describedby\": unref(rootContext).descriptionId,\n \"aria-labelledby\": unref(rootContext).titleId,\n \"data-state\": unref(getOpenState)(unref(rootContext).open.value)\n }, _ctx.$attrs, {\n onDismiss: _cache[0] || (_cache[0] = ($event) => unref(rootContext).onOpenChange(false)),\n onEscapeKeyDown: _cache[1] || (_cache[1] = ($event) => emits(\"escapeKeyDown\", $event)),\n onFocusOutside: _cache[2] || (_cache[2] = ($event) => emits(\"focusOutside\", $event)),\n onInteractOutside: _cache[3] || (_cache[3] = ($event) => emits(\"interactOutside\", $event)),\n onPointerDownOutside: _cache[4] || (_cache[4] = ($event) => emits(\"pointerDownOutside\", $event))\n }), {\n default: withCtx(() => [\n renderSlot(_ctx.$slots, \"default\")\n ]),\n _: 3\n }, 16, [\"id\", \"as\", \"as-child\", \"disable-outside-pointer-events\", \"aria-describedby\", \"aria-labelledby\", \"data-state\"])\n ]),\n _: 3\n }, 8, [\"trapped\"]);\n };\n }\n});\n\nexport { _sfc_main as _ };\n//# sourceMappingURL=DialogContentImpl.js.map\n","var getDefaultParent = function (originalTarget) {\n if (typeof document === 'undefined') {\n return null;\n }\n var sampleTarget = Array.isArray(originalTarget) ? originalTarget[0] : originalTarget;\n return sampleTarget.ownerDocument.body;\n};\nvar counterMap = new WeakMap();\nvar uncontrolledNodes = new WeakMap();\nvar markerMap = {};\nvar lockCount = 0;\nvar unwrapHost = function (node) {\n return node && (node.host || unwrapHost(node.parentNode));\n};\nvar correctTargets = function (parent, targets) {\n return targets\n .map(function (target) {\n if (parent.contains(target)) {\n return target;\n }\n var correctedTarget = unwrapHost(target);\n if (correctedTarget && parent.contains(correctedTarget)) {\n return correctedTarget;\n }\n console.error('aria-hidden', target, 'in not contained inside', parent, '. Doing nothing');\n return null;\n })\n .filter(function (x) { return Boolean(x); });\n};\n/**\n * Marks everything except given node(or nodes) as aria-hidden\n * @param {Element | Element[]} originalTarget - elements to keep on the page\n * @param [parentNode] - top element, defaults to document.body\n * @param {String} [markerName] - a special attribute to mark every node\n * @param {String} [controlAttribute] - html Attribute to control\n * @return {Undo} undo command\n */\nvar applyAttributeToOthers = function (originalTarget, parentNode, markerName, controlAttribute) {\n var targets = correctTargets(parentNode, Array.isArray(originalTarget) ? originalTarget : [originalTarget]);\n if (!markerMap[markerName]) {\n markerMap[markerName] = new WeakMap();\n }\n var markerCounter = markerMap[markerName];\n var hiddenNodes = [];\n var elementsToKeep = new Set();\n var elementsToStop = new Set(targets);\n var keep = function (el) {\n if (!el || elementsToKeep.has(el)) {\n return;\n }\n elementsToKeep.add(el);\n keep(el.parentNode);\n };\n targets.forEach(keep);\n var deep = function (parent) {\n if (!parent || elementsToStop.has(parent)) {\n return;\n }\n Array.prototype.forEach.call(parent.children, function (node) {\n if (elementsToKeep.has(node)) {\n deep(node);\n }\n else {\n try {\n var attr = node.getAttribute(controlAttribute);\n var alreadyHidden = attr !== null && attr !== 'false';\n var counterValue = (counterMap.get(node) || 0) + 1;\n var markerValue = (markerCounter.get(node) || 0) + 1;\n counterMap.set(node, counterValue);\n markerCounter.set(node, markerValue);\n hiddenNodes.push(node);\n if (counterValue === 1 && alreadyHidden) {\n uncontrolledNodes.set(node, true);\n }\n if (markerValue === 1) {\n node.setAttribute(markerName, 'true');\n }\n if (!alreadyHidden) {\n node.setAttribute(controlAttribute, 'true');\n }\n }\n catch (e) {\n console.error('aria-hidden: cannot operate on ', node, e);\n }\n }\n });\n };\n deep(parentNode);\n elementsToKeep.clear();\n lockCount++;\n return function () {\n hiddenNodes.forEach(function (node) {\n var counterValue = counterMap.get(node) - 1;\n var markerValue = markerCounter.get(node) - 1;\n counterMap.set(node, counterValue);\n markerCounter.set(node, markerValue);\n if (!counterValue) {\n if (!uncontrolledNodes.has(node)) {\n node.removeAttribute(controlAttribute);\n }\n uncontrolledNodes.delete(node);\n }\n if (!markerValue) {\n node.removeAttribute(markerName);\n }\n });\n lockCount--;\n if (!lockCount) {\n // clear\n counterMap = new WeakMap();\n counterMap = new WeakMap();\n uncontrolledNodes = new WeakMap();\n markerMap = {};\n }\n };\n};\n/**\n * Marks everything except given node(or nodes) as aria-hidden\n * @param {Element | Element[]} originalTarget - elements to keep on the page\n * @param [parentNode] - top element, defaults to document.body\n * @param {String} [markerName] - a special attribute to mark every node\n * @return {Undo} undo command\n */\nexport var hideOthers = function (originalTarget, parentNode, markerName) {\n if (markerName === void 0) { markerName = 'data-aria-hidden'; }\n var targets = Array.from(Array.isArray(originalTarget) ? originalTarget : [originalTarget]);\n var activeParentNode = parentNode || getDefaultParent(originalTarget);\n if (!activeParentNode) {\n return function () { return null; };\n }\n // we should not hide ariaLive elements - https://github.com/theKashey/aria-hidden/issues/10\n targets.push.apply(targets, Array.from(activeParentNode.querySelectorAll('[aria-live]')));\n return applyAttributeToOthers(targets, activeParentNode, markerName, 'aria-hidden');\n};\n/**\n * Marks everything except given node(or nodes) as inert\n * @param {Element | Element[]} originalTarget - elements to keep on the page\n * @param [parentNode] - top element, defaults to document.body\n * @param {String} [markerName] - a special attribute to mark every node\n * @return {Undo} undo command\n */\nexport var inertOthers = function (originalTarget, parentNode, markerName) {\n if (markerName === void 0) { markerName = 'data-inert-ed'; }\n var activeParentNode = parentNode || getDefaultParent(originalTarget);\n if (!activeParentNode) {\n return function () { return null; };\n }\n return applyAttributeToOthers(originalTarget, activeParentNode, markerName, 'inert');\n};\n/**\n * @returns if current browser supports inert\n */\nexport var supportsInert = function () {\n return typeof HTMLElement !== 'undefined' && HTMLElement.prototype.hasOwnProperty('inert');\n};\n/**\n * Automatic function to \"suppress\" DOM elements - _hide_ or _inert_ in the best possible way\n * @param {Element | Element[]} originalTarget - elements to keep on the page\n * @param [parentNode] - top element, defaults to document.body\n * @param {String} [markerName] - a special attribute to mark every node\n * @return {Undo} undo command\n */\nexport var suppressOthers = function (originalTarget, parentNode, markerName) {\n if (markerName === void 0) { markerName = 'data-suppressed'; }\n return (supportsInert() ? inertOthers : hideOthers)(originalTarget, parentNode, markerName);\n};\n","import { unrefElement } from '@vueuse/core';\nimport { hideOthers } from 'aria-hidden';\nimport { watch, onUnmounted } from 'vue';\n\nfunction useHideOthers(target) {\n let undo;\n watch(() => unrefElement(target), (el) => {\n if (el)\n undo = hideOthers(el);\n else if (undo)\n undo();\n });\n onUnmounted(() => {\n if (undo)\n undo();\n });\n}\n\nexport { useHideOthers as u };\n//# sourceMappingURL=useHideOthers.js.map\n","import { defineComponent, openBlock, createBlock, mergeProps, unref, withCtx, renderSlot } from 'vue';\nimport { _ as _sfc_main$1 } from './DialogContentImpl.js';\nimport { u as useEmitAsProps } from '../shared/useEmitAsProps.js';\nimport { u as useForwardExpose } from '../shared/useForwardExpose.js';\nimport { u as useHideOthers } from '../shared/useHideOthers.js';\nimport { i as injectDialogRootContext } from './DialogRoot.js';\n\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"DialogContentModal\",\n props: {\n forceMount: { type: Boolean },\n trapFocus: { type: Boolean },\n disableOutsidePointerEvents: { type: Boolean },\n asChild: { type: Boolean },\n as: {}\n },\n emits: [\"escapeKeyDown\", \"pointerDownOutside\", \"focusOutside\", \"interactOutside\", \"openAutoFocus\", \"closeAutoFocus\"],\n setup(__props, { emit: __emit }) {\n const props = __props;\n const emits = __emit;\n const rootContext = injectDialogRootContext();\n const emitsAsProps = useEmitAsProps(emits);\n const { forwardRef, currentElement } = useForwardExpose();\n useHideOthers(currentElement);\n return (_ctx, _cache) => {\n return openBlock(), createBlock(_sfc_main$1, mergeProps({ ...props, ...unref(emitsAsProps) }, {\n ref: unref(forwardRef),\n \"trap-focus\": unref(rootContext).open.value,\n \"disable-outside-pointer-events\": true,\n onCloseAutoFocus: _cache[0] || (_cache[0] = (event) => {\n if (!event.defaultPrevented) {\n event.preventDefault();\n unref(rootContext).triggerElement.value?.focus();\n }\n }),\n onPointerDownOutside: _cache[1] || (_cache[1] = (event) => {\n const originalEvent = event.detail.originalEvent;\n const ctrlLeftClick = originalEvent.button === 0 && originalEvent.ctrlKey === true;\n const isRightClick = originalEvent.button === 2 || ctrlLeftClick;\n if (isRightClick) event.preventDefault();\n }),\n onFocusOutside: _cache[2] || (_cache[2] = (event) => {\n event.preventDefault();\n })\n }), {\n default: withCtx(() => [\n renderSlot(_ctx.$slots, \"default\")\n ]),\n _: 3\n }, 16, [\"trap-focus\"]);\n };\n }\n});\n\nexport { _sfc_main as _ };\n//# sourceMappingURL=DialogContentModal.js.map\n","import { defineComponent, ref, openBlock, createBlock, mergeProps, unref, withCtx, renderSlot } from 'vue';\nimport { _ as _sfc_main$1 } from './DialogContentImpl.js';\nimport { u as useEmitAsProps } from '../shared/useEmitAsProps.js';\nimport { u as useForwardExpose } from '../shared/useForwardExpose.js';\nimport { i as injectDialogRootContext } from './DialogRoot.js';\n\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"DialogContentNonModal\",\n props: {\n forceMount: { type: Boolean },\n trapFocus: { type: Boolean },\n disableOutsidePointerEvents: { type: Boolean },\n asChild: { type: Boolean },\n as: {}\n },\n emits: [\"escapeKeyDown\", \"pointerDownOutside\", \"focusOutside\", \"interactOutside\", \"openAutoFocus\", \"closeAutoFocus\"],\n setup(__props, { emit: __emit }) {\n const props = __props;\n const emits = __emit;\n const emitsAsProps = useEmitAsProps(emits);\n useForwardExpose();\n const rootContext = injectDialogRootContext();\n const hasInteractedOutsideRef = ref(false);\n const hasPointerDownOutsideRef = ref(false);\n return (_ctx, _cache) => {\n return openBlock(), createBlock(_sfc_main$1, mergeProps({ ...props, ...unref(emitsAsProps) }, {\n \"trap-focus\": false,\n \"disable-outside-pointer-events\": false,\n onCloseAutoFocus: _cache[0] || (_cache[0] = (event) => {\n if (!event.defaultPrevented) {\n if (!hasInteractedOutsideRef.value) unref(rootContext).triggerElement.value?.focus();\n event.preventDefault();\n }\n hasInteractedOutsideRef.value = false;\n hasPointerDownOutsideRef.value = false;\n }),\n onInteractOutside: _cache[1] || (_cache[1] = (event) => {\n if (!event.defaultPrevented) {\n hasInteractedOutsideRef.value = true;\n if (event.detail.originalEvent.type === \"pointerdown\") {\n hasPointerDownOutsideRef.value = true;\n }\n }\n const target = event.target;\n const targetIsTrigger = unref(rootContext).triggerElement.value?.contains(target);\n if (targetIsTrigger) event.preventDefault();\n if (event.detail.originalEvent.type === \"focusin\" && hasPointerDownOutsideRef.value) {\n event.preventDefault();\n }\n })\n }), {\n default: withCtx(() => [\n renderSlot(_ctx.$slots, \"default\")\n ]),\n _: 3\n }, 16);\n };\n }\n});\n\nexport { _sfc_main as _ };\n//# sourceMappingURL=DialogContentNonModal.js.map\n","import { defineComponent, openBlock, createBlock, unref, withCtx, mergeProps, renderSlot } from 'vue';\nimport { _ as _sfc_main$1 } from './DialogContentModal.js';\nimport { _ as _sfc_main$2 } from './DialogContentNonModal.js';\nimport { u as useEmitAsProps } from '../shared/useEmitAsProps.js';\nimport { u as useForwardExpose } from '../shared/useForwardExpose.js';\nimport { P as Presence } from '../Presence/Presence.js';\nimport { i as injectDialogRootContext } from './DialogRoot.js';\n\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"DialogContent\",\n props: {\n forceMount: { type: Boolean },\n trapFocus: { type: Boolean },\n disableOutsidePointerEvents: { type: Boolean },\n asChild: { type: Boolean },\n as: {}\n },\n emits: [\"escapeKeyDown\", \"pointerDownOutside\", \"focusOutside\", \"interactOutside\", \"openAutoFocus\", \"closeAutoFocus\"],\n setup(__props, { emit: __emit }) {\n const props = __props;\n const emits = __emit;\n const rootContext = injectDialogRootContext();\n const emitsAsProps = useEmitAsProps(emits);\n const { forwardRef } = useForwardExpose();\n return (_ctx, _cache) => {\n return openBlock(), createBlock(unref(Presence), {\n present: _ctx.forceMount || unref(rootContext).open.value\n }, {\n default: withCtx(() => [\n unref(rootContext).modal.value ? (openBlock(), createBlock(_sfc_main$1, mergeProps({\n key: 0,\n ref: unref(forwardRef)\n }, { ...props, ...unref(emitsAsProps), ..._ctx.$attrs }), {\n default: withCtx(() => [\n renderSlot(_ctx.$slots, \"default\")\n ]),\n _: 3\n }, 16)) : (openBlock(), createBlock(_sfc_main$2, mergeProps({\n key: 1,\n ref: unref(forwardRef)\n }, { ...props, ...unref(emitsAsProps), ..._ctx.$attrs }), {\n default: withCtx(() => [\n renderSlot(_ctx.$slots, \"default\")\n ]),\n _: 3\n }, 16))\n ]),\n _: 3\n }, 8, [\"present\"]);\n };\n }\n});\n\nexport { _sfc_main as _ };\n//# sourceMappingURL=DialogContent.js.map\n","function isPlainObject(value) {\n if (value === null || typeof value !== \"object\") {\n return false;\n }\n const prototype = Object.getPrototypeOf(value);\n if (prototype !== null && prototype !== Object.prototype && Object.getPrototypeOf(prototype) !== null) {\n return false;\n }\n if (Symbol.iterator in value) {\n return false;\n }\n if (Symbol.toStringTag in value) {\n return Object.prototype.toString.call(value) === \"[object Module]\";\n }\n return true;\n}\n\nfunction _defu(baseObject, defaults, namespace = \".\", merger) {\n if (!isPlainObject(defaults)) {\n return _defu(baseObject, {}, namespace, merger);\n }\n const object = Object.assign({}, defaults);\n for (const key in baseObject) {\n if (key === \"__proto__\" || key === \"constructor\") {\n continue;\n }\n const value = baseObject[key];\n if (value === null || value === void 0) {\n continue;\n }\n if (merger && merger(object, key, value, namespace)) {\n continue;\n }\n if (Array.isArray(value) && Array.isArray(object[key])) {\n object[key] = [...value, ...object[key]];\n } else if (isPlainObject(value) && isPlainObject(object[key])) {\n object[key] = _defu(\n value,\n object[key],\n (namespace ? `${namespace}.` : \"\") + key.toString(),\n merger\n );\n } else {\n object[key] = value;\n }\n }\n return object;\n}\nfunction createDefu(merger) {\n return (...arguments_) => (\n // eslint-disable-next-line unicorn/no-array-reduce\n arguments_.reduce((p, c) => _defu(p, c, \"\", merger), {})\n );\n}\nconst defu = createDefu();\nconst defuFn = createDefu((object, key, currentValue) => {\n if (object[key] !== void 0 && typeof currentValue === \"function\") {\n object[key] = currentValue(object[key]);\n return true;\n }\n});\nconst defuArrayFn = createDefu((object, key, currentValue) => {\n if (Array.isArray(object[key]) && typeof currentValue === \"function\") {\n object[key] = currentValue(object[key]);\n return true;\n }\n});\n\nexport { createDefu, defu as default, defu, defuArrayFn, defuFn };\n","import { createSharedComposable, useEventListener } from '@vueuse/core';\nimport { isClient, isIOS, tryOnBeforeUnmount } from '@vueuse/shared';\nimport { ref, computed, watch, nextTick } from 'vue';\nimport { defu } from 'defu';\nimport { i as injectConfigProviderContext } from '../ConfigProvider/ConfigProvider.js';\n\nconst useBodyLockStackCount = createSharedComposable(() => {\n const map = ref(/* @__PURE__ */ new Map());\n const initialOverflow = ref();\n const locked = computed(() => {\n for (const value of map.value.values()) {\n if (value)\n return true;\n }\n return false;\n });\n const context = injectConfigProviderContext({\n scrollBody: ref(true)\n });\n let stopTouchMoveListener = null;\n const resetBodyStyle = () => {\n document.body.style.paddingRight = \"\";\n document.body.style.marginRight = \"\";\n document.body.style.pointerEvents = \"\";\n document.body.style.removeProperty(\"--scrollbar-width\");\n document.body.style.overflow = initialOverflow.value ?? \"\";\n isIOS && stopTouchMoveListener?.();\n initialOverflow.value = undefined;\n };\n watch(locked, (val, oldVal) => {\n if (!isClient)\n return;\n if (!val) {\n if (oldVal)\n resetBodyStyle();\n return;\n }\n if (initialOverflow.value === undefined)\n initialOverflow.value = document.body.style.overflow;\n const verticalScrollbarWidth = window.innerWidth - document.documentElement.clientWidth;\n const defaultConfig = { padding: verticalScrollbarWidth, margin: 0 };\n const config = context.scrollBody?.value ? typeof context.scrollBody.value === \"object\" ? defu({\n padding: context.scrollBody.value.padding === true ? verticalScrollbarWidth : context.scrollBody.value.padding,\n margin: context.scrollBody.value.margin === true ? verticalScrollbarWidth : context.scrollBody.value.margin\n }, defaultConfig) : defaultConfig : { padding: 0, margin: 0 };\n if (verticalScrollbarWidth > 0) {\n document.body.style.paddingRight = typeof config.padding === \"number\" ? `${config.padding}px` : String(config.padding);\n document.body.style.marginRight = typeof config.margin === \"number\" ? `${config.margin}px` : String(config.margin);\n document.body.style.setProperty(\"--scrollbar-width\", `${verticalScrollbarWidth}px`);\n document.body.style.overflow = \"hidden\";\n }\n if (isIOS) {\n stopTouchMoveListener = useEventListener(\n document,\n \"touchmove\",\n (e) => preventDefault(e),\n { passive: false }\n );\n }\n nextTick(() => {\n document.body.style.pointerEvents = \"none\";\n document.body.style.overflow = \"hidden\";\n });\n }, { immediate: true, flush: \"sync\" });\n return map;\n});\nfunction useBodyScrollLock(initialState) {\n const id = Math.random().toString(36).substring(2, 7);\n const map = useBodyLockStackCount();\n map.value.set(id, initialState ?? false);\n const locked = computed({\n get: () => map.value.get(id) ?? false,\n set: (value) => map.value.set(id, value)\n });\n tryOnBeforeUnmount(() => {\n map.value.delete(id);\n });\n return locked;\n}\nfunction checkOverflowScroll(ele) {\n const style = window.getComputedStyle(ele);\n if (style.overflowX === \"scroll\" || style.overflowY === \"scroll\" || style.overflowX === \"auto\" && ele.clientWidth < ele.scrollWidth || style.overflowY === \"auto\" && ele.clientHeight < ele.scrollHeight) {\n return true;\n } else {\n const parent = ele.parentNode;\n if (!(parent instanceof Element) || parent.tagName === \"BODY\")\n return false;\n return checkOverflowScroll(parent);\n }\n}\nfunction preventDefault(rawEvent) {\n const e = rawEvent || window.event;\n const _target = e.target;\n if (_target instanceof Element && checkOverflowScroll(_target))\n return false;\n if (e.touches.length > 1)\n return true;\n if (e.preventDefault && e.cancelable)\n e.preventDefault();\n return false;\n}\n\nexport { useBodyScrollLock as u };\n//# sourceMappingURL=useBodyScrollLock.js.map\n","import { defineComponent, openBlock, createBlock, unref, withCtx, renderSlot } from 'vue';\nimport { u as useBodyScrollLock } from '../shared/useBodyScrollLock.js';\nimport { u as useForwardExpose } from '../shared/useForwardExpose.js';\nimport { P as Primitive } from '../Primitive/Primitive.js';\nimport { i as injectDialogRootContext } from './DialogRoot.js';\n\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"DialogOverlayImpl\",\n props: {\n asChild: { type: Boolean },\n as: {}\n },\n setup(__props) {\n const rootContext = injectDialogRootContext();\n useBodyScrollLock(true);\n useForwardExpose();\n return (_ctx, _cache) => {\n return openBlock(), createBlock(unref(Primitive), {\n as: _ctx.as,\n \"as-child\": _ctx.asChild,\n \"data-state\": unref(rootContext).open.value ? \"open\" : \"closed\",\n style: { \"pointer-events\": \"auto\" }\n }, {\n default: withCtx(() => [\n renderSlot(_ctx.$slots, \"default\")\n ]),\n _: 3\n }, 8, [\"as\", \"as-child\", \"data-state\"]);\n };\n }\n});\n\nexport { _sfc_main as _ };\n//# sourceMappingURL=DialogOverlayImpl.js.map\n","import { defineComponent, unref, openBlock, createBlock, withCtx, createVNode, mergeProps, renderSlot, createCommentVNode } from 'vue';\nimport { _ as _sfc_main$1 } from './DialogOverlayImpl.js';\nimport { u as useForwardExpose } from '../shared/useForwardExpose.js';\nimport { P as Presence } from '../Presence/Presence.js';\nimport { i as injectDialogRootContext } from './DialogRoot.js';\n\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"DialogOverlay\",\n props: {\n forceMount: { type: Boolean },\n asChild: { type: Boolean },\n as: {}\n },\n setup(__props) {\n const rootContext = injectDialogRootContext();\n const { forwardRef } = useForwardExpose();\n return (_ctx, _cache) => {\n return unref(rootContext)?.modal.value ? (openBlock(), createBlock(unref(Presence), {\n key: 0,\n present: _ctx.forceMount || unref(rootContext).open.value\n }, {\n default: withCtx(() => [\n createVNode(_sfc_main$1, mergeProps(_ctx.$attrs, {\n ref: unref(forwardRef),\n as: _ctx.as,\n \"as-child\": _ctx.asChild\n }), {\n default: withCtx(() => [\n renderSlot(_ctx.$slots, \"default\")\n ]),\n _: 3\n }, 16, [\"as\", \"as-child\"])\n ]),\n _: 3\n }, 8, [\"present\"])) : createCommentVNode(\"\", true);\n };\n }\n});\n\nexport { _sfc_main as _ };\n//# sourceMappingURL=DialogOverlay.js.map\n","import { defineComponent, openBlock, createBlock, unref, mergeProps, withCtx, renderSlot } from 'vue';\nimport { u as useForwardExpose } from '../shared/useForwardExpose.js';\nimport { P as Primitive } from '../Primitive/Primitive.js';\nimport { i as injectDialogRootContext } from './DialogRoot.js';\n\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"DialogClose\",\n props: {\n asChild: { type: Boolean },\n as: { default: \"button\" }\n },\n setup(__props) {\n const props = __props;\n useForwardExpose();\n const rootContext = injectDialogRootContext();\n return (_ctx, _cache) => {\n return openBlock(), createBlock(unref(Primitive), mergeProps(props, {\n type: _ctx.as === \"button\" ? \"button\" : undefined,\n onClick: _cache[0] || (_cache[0] = ($event) => unref(rootContext).onOpenChange(false))\n }), {\n default: withCtx(() => [\n renderSlot(_ctx.$slots, \"default\")\n ]),\n _: 3\n }, 16, [\"type\"]);\n };\n }\n});\n\nexport { _sfc_main as _ };\n//# sourceMappingURL=DialogClose.js.map\n","import { defineComponent, openBlock, createBlock, unref, mergeProps, withCtx, renderSlot } from 'vue';\nimport { u as useForwardExpose } from '../shared/useForwardExpose.js';\nimport { P as Primitive } from '../Primitive/Primitive.js';\nimport { i as injectDialogRootContext } from './DialogRoot.js';\n\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"DialogTitle\",\n props: {\n asChild: { type: Boolean },\n as: { default: \"h2\" }\n },\n setup(__props) {\n const props = __props;\n const rootContext = injectDialogRootContext();\n useForwardExpose();\n return (_ctx, _cache) => {\n return openBlock(), createBlock(unref(Primitive), mergeProps(props, {\n id: unref(rootContext).titleId\n }), {\n default: withCtx(() => [\n renderSlot(_ctx.$slots, \"default\")\n ]),\n _: 3\n }, 16, [\"id\"]);\n };\n }\n});\n\nexport { _sfc_main as _ };\n//# sourceMappingURL=DialogTitle.js.map\n","import { defineComponent, openBlock, createBlock, unref, mergeProps, withCtx, renderSlot } from 'vue';\nimport { u as useForwardExpose } from '../shared/useForwardExpose.js';\nimport { P as Primitive } from '../Primitive/Primitive.js';\nimport { i as injectDialogRootContext } from './DialogRoot.js';\n\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"DialogDescription\",\n props: {\n asChild: { type: Boolean },\n as: { default: \"p\" }\n },\n setup(__props) {\n const props = __props;\n useForwardExpose();\n const rootContext = injectDialogRootContext();\n return (_ctx, _cache) => {\n return openBlock(), createBlock(unref(Primitive), mergeProps(props, {\n id: unref(rootContext).descriptionId\n }), {\n default: withCtx(() => [\n renderSlot(_ctx.$slots, \"default\")\n ]),\n _: 3\n }, 16, [\"id\"]);\n };\n }\n});\n\nexport { _sfc_main as _ };\n//# sourceMappingURL=DialogDescription.js.map\n","import { unrefElement } from '@vueuse/core';\nimport { ref, computed } from 'vue';\n\nfunction usePrimitiveElement() {\n const primitiveElement = ref();\n const currentElement = computed(() => [\"#text\", \"#comment\"].includes(primitiveElement.value?.$el.nodeName) ? primitiveElement.value?.$el.nextElementSibling : unrefElement(primitiveElement));\n return {\n primitiveElement,\n currentElement\n };\n}\n\nexport { usePrimitiveElement as u };\n//# sourceMappingURL=usePrimitiveElement.js.map\n","import { g as getActiveElement } from '../shared/getActiveElement.js';\n\nconst ENTRY_FOCUS = \"rovingFocusGroup.onEntryFocus\";\nconst EVENT_OPTIONS = { bubbles: false, cancelable: true };\nconst MAP_KEY_TO_FOCUS_INTENT = {\n ArrowLeft: \"prev\",\n ArrowUp: \"prev\",\n ArrowRight: \"next\",\n ArrowDown: \"next\",\n PageUp: \"first\",\n Home: \"first\",\n PageDown: \"last\",\n End: \"last\"\n};\nfunction getDirectionAwareKey(key, dir) {\n if (dir !== \"rtl\")\n return key;\n return key === \"ArrowLeft\" ? \"ArrowRight\" : key === \"ArrowRight\" ? \"ArrowLeft\" : key;\n}\nfunction getFocusIntent(event, orientation, dir) {\n const key = getDirectionAwareKey(event.key, dir);\n if (orientation === \"vertical\" && [\"ArrowLeft\", \"ArrowRight\"].includes(key))\n return undefined;\n if (orientation === \"horizontal\" && [\"ArrowUp\", \"ArrowDown\"].includes(key))\n return undefined;\n return MAP_KEY_TO_FOCUS_INTENT[key];\n}\nfunction focusFirst(candidates, preventScroll = false) {\n const PREVIOUSLY_FOCUSED_ELEMENT = getActiveElement();\n for (const candidate of candidates) {\n if (candidate === PREVIOUSLY_FOCUSED_ELEMENT)\n return;\n candidate.focus({ preventScroll });\n if (getActiveElement() !== PREVIOUSLY_FOCUSED_ELEMENT)\n return;\n }\n}\nfunction wrapArray(array, startIndex) {\n return array.map((_, index) => array[(startIndex + index) % array.length]);\n}\n\nexport { ENTRY_FOCUS as E, MAP_KEY_TO_FOCUS_INTENT as M, EVENT_OPTIONS as a, focusFirst as f, getFocusIntent as g, wrapArray as w };\n//# sourceMappingURL=utils.js.map\n","import { ref, provide, inject, defineComponent, watch, h, watchEffect, markRaw, computed } from 'vue';\nimport { u as usePrimitiveElement } from '../Primitive/usePrimitiveElement.js';\nimport { S as Slot } from '../Primitive/Slot.js';\n\nconst ITEM_DATA_ATTR = \"data-reka-collection-item\";\nfunction useCollection(options = {}) {\n const { key = \"\", isProvider = false } = options;\n const injectionKey = `${key}CollectionProvider`;\n let context;\n if (isProvider) {\n const itemMap = ref(/* @__PURE__ */ new Map());\n const collectionRef = ref();\n context = {\n collectionRef,\n itemMap\n };\n provide(injectionKey, context);\n } else {\n context = inject(injectionKey);\n }\n const getItems = (includeDisabledItem = false) => {\n const collectionNode = context.collectionRef.value;\n if (!collectionNode)\n return [];\n const orderedNodes = Array.from(collectionNode.querySelectorAll(`[${ITEM_DATA_ATTR}]`));\n const items = Array.from(context.itemMap.value.values());\n const orderedItems = items.sort(\n (a, b) => orderedNodes.indexOf(a.ref) - orderedNodes.indexOf(b.ref)\n );\n if (includeDisabledItem)\n return orderedItems;\n else\n return orderedItems.filter((i) => i.ref.dataset.disabled !== \"\");\n };\n const CollectionSlot = defineComponent({\n name: \"CollectionSlot\",\n setup(_, { slots }) {\n const { primitiveElement, currentElement } = usePrimitiveElement();\n watch(currentElement, () => {\n context.collectionRef.value = currentElement.value;\n });\n return () => h(Slot, { ref: primitiveElement }, slots);\n }\n });\n const CollectionItem = defineComponent({\n name: \"CollectionItem\",\n inheritAttrs: false,\n props: {\n value: {\n // It accepts any value\n validator: () => true\n }\n },\n setup(props, { slots, attrs }) {\n const { primitiveElement, currentElement } = usePrimitiveElement();\n watchEffect((cleanupFn) => {\n if (currentElement.value) {\n const key2 = markRaw(currentElement.value);\n context.itemMap.value.set(key2, { ref: currentElement.value, value: props.value });\n cleanupFn(() => context.itemMap.value.delete(key2));\n }\n });\n return () => h(Slot, { ...attrs, [ITEM_DATA_ATTR]: \"\", ref: primitiveElement }, slots);\n }\n });\n const reactiveItems = computed(() => Array.from(context.itemMap.value.values()));\n const itemMapSize = computed(() => context.itemMap.value.size);\n return { getItems, reactiveItems, itemMapSize, CollectionSlot, CollectionItem };\n}\n\nexport { useCollection as u };\n//# sourceMappingURL=Collection.js.map\n","import { defineComponent, toRefs, ref, openBlock, createBlock, unref, withCtx, createVNode, renderSlot } from 'vue';\nimport { useVModel } from '@vueuse/core';\nimport { f as focusFirst, E as ENTRY_FOCUS, a as EVENT_OPTIONS } from './utils.js';\nimport { u as useCollection } from '../Collection/Collection.js';\nimport { u as useDirection } from '../shared/useDirection.js';\nimport { P as Primitive } from '../Primitive/Primitive.js';\nimport { c as createContext } from '../shared/createContext.js';\n\nconst [injectRovingFocusGroupContext, provideRovingFocusGroupContext] = createContext(\"RovingFocusGroup\");\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"RovingFocusGroup\",\n props: {\n orientation: { default: undefined },\n dir: {},\n loop: { type: Boolean, default: false },\n currentTabStopId: {},\n defaultCurrentTabStopId: {},\n preventScrollOnEntryFocus: { type: Boolean, default: false },\n asChild: { type: Boolean },\n as: {}\n },\n emits: [\"entryFocus\", \"update:currentTabStopId\"],\n setup(__props, { expose: __expose, emit: __emit }) {\n const props = __props;\n const emits = __emit;\n const { loop, orientation, dir: propDir } = toRefs(props);\n const dir = useDirection(propDir);\n const currentTabStopId = useVModel(props, \"currentTabStopId\", emits, {\n defaultValue: props.defaultCurrentTabStopId,\n passive: props.currentTabStopId === undefined\n });\n const isTabbingBackOut = ref(false);\n const isClickFocus = ref(false);\n const focusableItemsCount = ref(0);\n const { getItems, CollectionSlot } = useCollection({ isProvider: true });\n function handleFocus(event) {\n const isKeyboardFocus = !isClickFocus.value;\n if (event.currentTarget && event.target === event.currentTarget && isKeyboardFocus && !isTabbingBackOut.value) {\n const entryFocusEvent = new CustomEvent(ENTRY_FOCUS, EVENT_OPTIONS);\n event.currentTarget.dispatchEvent(entryFocusEvent);\n emits(\"entryFocus\", entryFocusEvent);\n if (!entryFocusEvent.defaultPrevented) {\n const items = getItems().map((i) => i.ref).filter((i) => i.dataset.disabled !== \"\");\n const activeItem = items.find((item) => item.getAttribute(\"data-active\") === \"true\");\n const currentItem = items.find(\n (item) => item.id === currentTabStopId.value\n );\n const candidateItems = [activeItem, currentItem, ...items].filter(\n Boolean\n );\n focusFirst(candidateItems, props.preventScrollOnEntryFocus);\n }\n }\n isClickFocus.value = false;\n }\n function handleMouseUp() {\n setTimeout(() => {\n isClickFocus.value = false;\n }, 1);\n }\n __expose({\n getItems\n });\n provideRovingFocusGroupContext({\n loop,\n dir,\n orientation,\n currentTabStopId,\n onItemFocus: (tabStopId) => {\n currentTabStopId.value = tabStopId;\n },\n onItemShiftTab: () => {\n isTabbingBackOut.value = true;\n },\n onFocusableItemAdd: () => {\n focusableItemsCount.value++;\n },\n onFocusableItemRemove: () => {\n focusableItemsCount.value--;\n }\n });\n return (_ctx, _cache) => {\n return openBlock(), createBlock(unref(CollectionSlot), null, {\n default: withCtx(() => [\n createVNode(unref(Primitive), {\n tabindex: isTabbingBackOut.value || focusableItemsCount.value === 0 ? -1 : 0,\n \"data-orientation\": unref(orientation),\n as: _ctx.as,\n \"as-child\": _ctx.asChild,\n dir: unref(dir),\n style: { \"outline\": \"none\" },\n onMousedown: _cache[0] || (_cache[0] = ($event) => isClickFocus.value = true),\n onMouseup: handleMouseUp,\n onFocus: handleFocus,\n onBlur: _cache[1] || (_cache[1] = ($event) => isTabbingBackOut.value = false)\n }, {\n default: withCtx(() => [\n renderSlot(_ctx.$slots, \"default\")\n ]),\n _: 3\n }, 8, [\"tabindex\", \"data-orientation\", \"as\", \"as-child\", \"dir\"])\n ]),\n _: 3\n });\n };\n }\n});\n\nexport { _sfc_main as _, injectRovingFocusGroupContext as i };\n//# sourceMappingURL=RovingFocusGroup.js.map\n","import { toValue, unrefElement } from '@vueuse/core';\nimport { computed } from 'vue';\n\nfunction useFormControl(el) {\n return computed(() => toValue(el) ? Boolean(unrefElement(el)?.closest(\"form\")) : true);\n}\n\nexport { useFormControl as u };\n//# sourceMappingURL=useFormControl.js.map\n","import { defineComponent, computed, watch, openBlock, createBlock, mergeProps } from 'vue';\nimport { _ as _sfc_main$1 } from './VisuallyHidden.js';\nimport { u as usePrimitiveElement } from '../Primitive/usePrimitiveElement.js';\n\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n ...{\n inheritAttrs: false\n },\n __name: \"VisuallyHiddenInputBubble\",\n props: {\n name: {},\n value: {},\n checked: { type: Boolean, default: undefined },\n required: { type: Boolean },\n disabled: { type: Boolean },\n feature: { default: \"fully-hidden\" }\n },\n setup(__props) {\n const props = __props;\n const { primitiveElement, currentElement } = usePrimitiveElement();\n const valueState = computed(() => props.checked ?? props.value);\n watch(valueState, (cur, prev) => {\n if (!currentElement.value)\n return;\n const input = currentElement.value;\n const inputProto = window.HTMLInputElement.prototype;\n const descriptor = Object.getOwnPropertyDescriptor(inputProto, \"value\");\n const setValue = descriptor.set;\n if (setValue && cur !== prev) {\n const inputEvent = new Event(\"input\", { bubbles: true });\n const changeEvent = new Event(\"change\", { bubbles: true });\n setValue.call(input, cur);\n input.dispatchEvent(inputEvent);\n input.dispatchEvent(changeEvent);\n }\n });\n return (_ctx, _cache) => {\n return openBlock(), createBlock(_sfc_main$1, mergeProps({\n ref_key: \"primitiveElement\",\n ref: primitiveElement\n }, { ...props, ..._ctx.$attrs }, { as: \"input\" }), null, 16);\n };\n }\n});\n\nexport { _sfc_main as _ };\n//# sourceMappingURL=VisuallyHiddenInputBubble.js.map\n","import { defineComponent, computed, openBlock, createElementBlock, Fragment, renderList, createBlock, mergeProps } from 'vue';\nimport { _ as _sfc_main$1 } from './VisuallyHiddenInputBubble.js';\n\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n ...{\n inheritAttrs: false\n },\n __name: \"VisuallyHiddenInput\",\n props: {\n name: {},\n value: {},\n checked: { type: Boolean, default: undefined },\n required: { type: Boolean },\n disabled: { type: Boolean },\n feature: { default: \"fully-hidden\" }\n },\n setup(__props) {\n const props = __props;\n const parsedValue = computed(() => {\n if (typeof props.value === \"string\" || typeof props.value === \"number\" || typeof props.value === \"boolean\") {\n return [{ name: props.name, value: props.value }];\n } else if (typeof props.value === \"object\" && Array.isArray(props.value)) {\n return props.value.flatMap((obj, index) => {\n if (typeof obj === \"object\")\n return Object.entries(obj).map(([key, value]) => ({ name: `[${props.name}][${index}][${key}]`, value }));\n else\n return { name: `[${props.name}][${index}]`, value: obj };\n });\n } else if (props.value !== null && typeof props.value === \"object\" && !Array.isArray(props.value)) {\n return Object.entries(props.value).map(([key, value]) => ({ name: `[${props.name}][${key}]`, value }));\n }\n return [];\n });\n return (_ctx, _cache) => {\n return openBlock(true), createElementBlock(Fragment, null, renderList(parsedValue.value, (parsed) => {\n return openBlock(), createBlock(_sfc_main$1, mergeProps({\n key: parsed.name,\n ref_for: true\n }, { ...props, ..._ctx.$attrs }, {\n name: parsed.name,\n value: parsed.value\n }), null, 16, [\"name\", \"value\"]);\n }), 128);\n };\n }\n});\n\nexport { _sfc_main as _ };\n//# sourceMappingURL=VisuallyHiddenInput.js.map\n","import { defineComponent, computed, onMounted, onUnmounted, openBlock, createBlock, unref, withCtx, createVNode, renderSlot, nextTick } from 'vue';\nimport { g as getFocusIntent, w as wrapArray, f as focusFirst } from './utils.js';\nimport { u as useCollection } from '../Collection/Collection.js';\nimport { i as injectRovingFocusGroupContext } from './RovingFocusGroup.js';\nimport { u as useId } from '../shared/useId.js';\nimport { P as Primitive } from '../Primitive/Primitive.js';\n\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"RovingFocusItem\",\n props: {\n tabStopId: {},\n focusable: { type: Boolean, default: true },\n active: { type: Boolean, default: true },\n allowShiftKey: { type: Boolean },\n asChild: { type: Boolean },\n as: { default: \"span\" }\n },\n setup(__props) {\n const props = __props;\n const context = injectRovingFocusGroupContext();\n const randomId = useId();\n const id = computed(() => props.tabStopId || randomId);\n const isCurrentTabStop = computed(\n () => context.currentTabStopId.value === id.value\n );\n const { getItems, CollectionItem } = useCollection();\n onMounted(() => {\n if (props.focusable)\n context.onFocusableItemAdd();\n });\n onUnmounted(() => {\n if (props.focusable)\n context.onFocusableItemRemove();\n });\n function handleKeydown(event) {\n if (event.key === \"Tab\" && event.shiftKey) {\n context.onItemShiftTab();\n return;\n }\n if (event.target !== event.currentTarget)\n return;\n const focusIntent = getFocusIntent(\n event,\n context.orientation.value,\n context.dir.value\n );\n if (focusIntent !== undefined) {\n if (event.metaKey || event.ctrlKey || event.altKey || (props.allowShiftKey ? false : event.shiftKey))\n return;\n event.preventDefault();\n let candidateNodes = [...getItems().map((i) => i.ref).filter((i) => i.dataset.disabled !== \"\")];\n if (focusIntent === \"last\") {\n candidateNodes.reverse();\n } else if (focusIntent === \"prev\" || focusIntent === \"next\") {\n if (focusIntent === \"prev\")\n candidateNodes.reverse();\n const currentIndex = candidateNodes.indexOf(\n event.currentTarget\n );\n candidateNodes = context.loop.value ? wrapArray(candidateNodes, currentIndex + 1) : candidateNodes.slice(currentIndex + 1);\n }\n nextTick(() => focusFirst(candidateNodes));\n }\n }\n return (_ctx, _cache) => {\n return openBlock(), createBlock(unref(CollectionItem), null, {\n default: withCtx(() => [\n createVNode(unref(Primitive), {\n tabindex: isCurrentTabStop.value ? 0 : -1,\n \"data-orientation\": unref(context).orientation.value,\n \"data-active\": _ctx.active,\n \"data-disabled\": !_ctx.focusable ? \"\" : undefined,\n as: _ctx.as,\n \"as-child\": _ctx.asChild,\n onMousedown: _cache[0] || (_cache[0] = (event) => {\n if (!_ctx.focusable) event.preventDefault();\n else unref(context).onItemFocus(id.value);\n }),\n onFocus: _cache[1] || (_cache[1] = ($event) => unref(context).onItemFocus(id.value)),\n onKeydown: handleKeydown\n }, {\n default: withCtx(() => [\n renderSlot(_ctx.$slots, \"default\")\n ]),\n _: 3\n }, 8, [\"tabindex\", \"data-orientation\", \"data-active\", \"data-disabled\", \"as\", \"as-child\"])\n ]),\n _: 3\n });\n };\n }\n});\n\nexport { _sfc_main as _ };\n//# sourceMappingURL=RovingFocusItem.js.map\n","import { defineComponent, ref, renderSlot } from 'vue';\nimport { c as createContext } from '../shared/createContext.js';\n\nconst [injectPopperRootContext, providePopperRootContext] = createContext(\"PopperRoot\");\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n ...{\n inheritAttrs: false\n },\n __name: \"PopperRoot\",\n setup(__props) {\n const anchor = ref();\n providePopperRootContext({\n anchor,\n onAnchorChange: (element) => anchor.value = element\n });\n return (_ctx, _cache) => {\n return renderSlot(_ctx.$slots, \"default\");\n };\n }\n});\n\nexport { _sfc_main as _, injectPopperRootContext as i };\n//# sourceMappingURL=PopperRoot.js.map\n","import { refAutoReset } from '@vueuse/shared';\nimport { g as getActiveElement } from './getActiveElement.js';\n\nfunction useTypeahead(callback) {\n const search = refAutoReset(\"\", 1e3);\n const handleTypeaheadSearch = (key, items) => {\n search.value = search.value + key;\n {\n const currentItem = getActiveElement();\n const itemsWithTextValue = items.map((item) => ({\n ...item,\n textValue: item.value?.textValue ?? item.ref.textContent?.trim() ?? \"\"\n }));\n const currentMatch = itemsWithTextValue.find((item) => item.ref === currentItem);\n const values = itemsWithTextValue.map((item) => item.textValue);\n const nextMatch = getNextMatch(values, search.value, currentMatch?.textValue);\n const newItem = itemsWithTextValue.find((item) => item.textValue === nextMatch);\n if (newItem)\n newItem.ref.focus();\n return newItem?.ref;\n }\n };\n const resetTypeahead = () => {\n search.value = \"\";\n };\n return {\n search,\n handleTypeaheadSearch,\n resetTypeahead\n };\n}\nfunction wrapArray(array, startIndex) {\n return array.map((_, index) => array[(startIndex + index) % array.length]);\n}\nfunction getNextMatch(values, search, currentMatch) {\n const isRepeated = search.length > 1 && Array.from(search).every((char) => char === search[0]);\n const normalizedSearch = isRepeated ? search[0] : search;\n const currentMatchIndex = currentMatch ? values.indexOf(currentMatch) : -1;\n let wrappedValues = wrapArray(values, Math.max(currentMatchIndex, 0));\n const excludeCurrentMatch = normalizedSearch.length === 1;\n if (excludeCurrentMatch)\n wrappedValues = wrappedValues.filter((v) => v !== currentMatch);\n const nextMatch = wrappedValues.find(\n (value) => value.toLowerCase().startsWith(normalizedSearch.toLowerCase())\n );\n return nextMatch !== currentMatch ? nextMatch : undefined;\n}\n\nexport { getNextMatch as g, useTypeahead as u, wrapArray as w };\n//# sourceMappingURL=useTypeahead.js.map\n","import { defineComponent, watchPostEffect, openBlock, createBlock, unref, withCtx, renderSlot } from 'vue';\nimport { u as useForwardExpose } from '../shared/useForwardExpose.js';\nimport { i as injectPopperRootContext } from './PopperRoot.js';\nimport { P as Primitive } from '../Primitive/Primitive.js';\n\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"PopperAnchor\",\n props: {\n reference: {},\n asChild: { type: Boolean },\n as: {}\n },\n setup(__props) {\n const props = __props;\n const { forwardRef, currentElement } = useForwardExpose();\n const rootContext = injectPopperRootContext();\n watchPostEffect(() => {\n rootContext.onAnchorChange(props.reference ?? currentElement.value);\n });\n return (_ctx, _cache) => {\n return openBlock(), createBlock(unref(Primitive), {\n ref: unref(forwardRef),\n as: _ctx.as,\n \"as-child\": _ctx.asChild\n }, {\n default: withCtx(() => [\n renderSlot(_ctx.$slots, \"default\")\n ]),\n _: 3\n }, 8, [\"as\", \"as-child\"]);\n };\n }\n});\n\nexport { _sfc_main as _ };\n//# sourceMappingURL=PopperAnchor.js.map\n","function isNotNull(value) {\n return value !== null;\n}\nfunction transformOrigin(options) {\n return {\n name: \"transformOrigin\",\n options,\n fn(data) {\n const { placement, rects, middlewareData } = data;\n const cannotCenterArrow = middlewareData.arrow?.centerOffset !== 0;\n const isArrowHidden = cannotCenterArrow;\n const arrowWidth = isArrowHidden ? 0 : options.arrowWidth;\n const arrowHeight = isArrowHidden ? 0 : options.arrowHeight;\n const [placedSide, placedAlign] = getSideAndAlignFromPlacement(placement);\n const noArrowAlign = { start: \"0%\", center: \"50%\", end: \"100%\" }[placedAlign];\n const arrowXCenter = (middlewareData.arrow?.x ?? 0) + arrowWidth / 2;\n const arrowYCenter = (middlewareData.arrow?.y ?? 0) + arrowHeight / 2;\n let x = \"\";\n let y = \"\";\n if (placedSide === \"bottom\") {\n x = isArrowHidden ? noArrowAlign : `${arrowXCenter}px`;\n y = `${-arrowHeight}px`;\n } else if (placedSide === \"top\") {\n x = isArrowHidden ? noArrowAlign : `${arrowXCenter}px`;\n y = `${rects.floating.height + arrowHeight}px`;\n } else if (placedSide === \"right\") {\n x = `${-arrowHeight}px`;\n y = isArrowHidden ? noArrowAlign : `${arrowYCenter}px`;\n } else if (placedSide === \"left\") {\n x = `${rects.floating.width + arrowHeight}px`;\n y = isArrowHidden ? noArrowAlign : `${arrowYCenter}px`;\n }\n return { data: { x, y } };\n }\n };\n}\nfunction getSideAndAlignFromPlacement(placement) {\n const [side, align = \"center\"] = placement.split(\"-\");\n return [side, align];\n}\n\nexport { getSideAndAlignFromPlacement as g, isNotNull as i, transformOrigin as t };\n//# sourceMappingURL=utils.js.map\n","import { unrefElement } from '@vueuse/core';\nimport { ref, computed, onMounted } from 'vue';\n\nfunction useSize(element) {\n const size = ref();\n const width = computed(() => size.value?.width ?? 0);\n const height = computed(() => size.value?.height ?? 0);\n onMounted(() => {\n const el = unrefElement(element);\n if (el) {\n size.value = { width: el.offsetWidth, height: el.offsetHeight };\n const resizeObserver = new ResizeObserver((entries) => {\n if (!Array.isArray(entries))\n return;\n if (!entries.length)\n return;\n const entry = entries[0];\n let width2;\n let height2;\n if (\"borderBoxSize\" in entry) {\n const borderSizeEntry = entry.borderBoxSize;\n const borderSize = Array.isArray(borderSizeEntry) ? borderSizeEntry[0] : borderSizeEntry;\n width2 = borderSize.inlineSize;\n height2 = borderSize.blockSize;\n } else {\n width2 = el.offsetWidth;\n height2 = el.offsetHeight;\n }\n size.value = { width: width2, height: height2 };\n });\n resizeObserver.observe(el, { box: \"border-box\" });\n return () => resizeObserver.unobserve(el);\n } else {\n size.value = undefined;\n }\n });\n return {\n width,\n height\n };\n}\n\nexport { useSize as u };\n//# sourceMappingURL=useSize.js.map\n","import { defineComponent, mergeDefaults, ref, computed, watchPostEffect, watchEffect, openBlock, createElementBlock, normalizeStyle, unref, createVNode, mergeProps, withCtx, renderSlot } from 'vue';\nimport { computedEager } from '@vueuse/core';\nimport { offset, flip, shift, limitShift, size, arrow, hide, useFloating, autoUpdate } from '@floating-ui/vue';\nimport { i as isNotNull, t as transformOrigin, g as getSideAndAlignFromPlacement } from './utils.js';\nimport { u as useForwardExpose } from '../shared/useForwardExpose.js';\nimport { u as useSize } from '../shared/useSize.js';\nimport { P as Primitive } from '../Primitive/Primitive.js';\nimport { c as createContext } from '../shared/createContext.js';\nimport { i as injectPopperRootContext } from './PopperRoot.js';\n\nconst PopperContentPropsDefaultValue = {\n side: \"bottom\",\n sideOffset: 0,\n align: \"center\",\n alignOffset: 0,\n arrowPadding: 0,\n avoidCollisions: true,\n collisionBoundary: () => [],\n collisionPadding: 0,\n sticky: \"partial\",\n hideWhenDetached: false,\n positionStrategy: \"fixed\",\n updatePositionStrategy: \"optimized\",\n prioritizePosition: false\n};\nconst [injectPopperContentContext, providePopperContentContext] = createContext(\"PopperContent\");\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n ...{\n inheritAttrs: false\n },\n __name: \"PopperContent\",\n props: /* @__PURE__ */ mergeDefaults({\n side: {},\n sideOffset: {},\n align: {},\n alignOffset: {},\n avoidCollisions: { type: Boolean },\n collisionBoundary: {},\n collisionPadding: {},\n arrowPadding: {},\n sticky: {},\n hideWhenDetached: { type: Boolean },\n positionStrategy: {},\n updatePositionStrategy: {},\n disableUpdateOnLayoutShift: { type: Boolean },\n prioritizePosition: { type: Boolean },\n reference: {},\n asChild: { type: Boolean },\n as: {}\n }, {\n ...PopperContentPropsDefaultValue\n }),\n emits: [\"placed\"],\n setup(__props, { emit: __emit }) {\n const props = __props;\n const emits = __emit;\n const rootContext = injectPopperRootContext();\n const { forwardRef, currentElement: contentElement } = useForwardExpose();\n const floatingRef = ref();\n const arrow$1 = ref();\n const { width: arrowWidth, height: arrowHeight } = useSize(arrow$1);\n const desiredPlacement = computed(\n () => props.side + (props.align !== \"center\" ? `-${props.align}` : \"\")\n );\n const collisionPadding = computed(() => {\n return typeof props.collisionPadding === \"number\" ? props.collisionPadding : { top: 0, right: 0, bottom: 0, left: 0, ...props.collisionPadding };\n });\n const boundary = computed(() => {\n return Array.isArray(props.collisionBoundary) ? props.collisionBoundary : [props.collisionBoundary];\n });\n const detectOverflowOptions = computed(() => {\n return {\n padding: collisionPadding.value,\n boundary: boundary.value.filter(isNotNull),\n // with `strategy: 'fixed'`, this is the only way to get it to respect boundaries\n altBoundary: boundary.value.length > 0\n };\n });\n const computedMiddleware = computedEager(() => {\n return [\n offset({\n mainAxis: props.sideOffset + arrowHeight.value,\n alignmentAxis: props.alignOffset\n }),\n props.prioritizePosition && props.avoidCollisions && flip({\n ...detectOverflowOptions.value\n }),\n props.avoidCollisions && shift({\n mainAxis: true,\n crossAxis: !!props.prioritizePosition,\n limiter: props.sticky === \"partial\" ? limitShift() : undefined,\n ...detectOverflowOptions.value\n }),\n !props.prioritizePosition && props.avoidCollisions && flip({\n ...detectOverflowOptions.value\n }),\n size({\n ...detectOverflowOptions.value,\n apply: ({ elements, rects, availableWidth, availableHeight }) => {\n const { width: anchorWidth, height: anchorHeight } = rects.reference;\n const contentStyle = elements.floating.style;\n contentStyle.setProperty(\n \"--reka-popper-available-width\",\n `${availableWidth}px`\n );\n contentStyle.setProperty(\n \"--reka-popper-available-height\",\n `${availableHeight}px`\n );\n contentStyle.setProperty(\n \"--reka-popper-anchor-width\",\n `${anchorWidth}px`\n );\n contentStyle.setProperty(\n \"--reka-popper-anchor-height\",\n `${anchorHeight}px`\n );\n }\n }),\n arrow$1.value && arrow({ element: arrow$1.value, padding: props.arrowPadding }),\n transformOrigin({\n arrowWidth: arrowWidth.value,\n arrowHeight: arrowHeight.value\n }),\n props.hideWhenDetached && hide({ strategy: \"referenceHidden\", ...detectOverflowOptions.value })\n ];\n });\n const reference = computed(() => props.reference ?? rootContext.anchor.value);\n const { floatingStyles, placement, isPositioned, middlewareData, update } = useFloating(\n reference,\n floatingRef,\n {\n strategy: props.positionStrategy,\n placement: desiredPlacement,\n whileElementsMounted: (...args) => {\n const cleanup = autoUpdate(...args, {\n layoutShift: !props.disableUpdateOnLayoutShift,\n animationFrame: props.updatePositionStrategy === \"always\"\n });\n return cleanup;\n },\n middleware: computedMiddleware\n }\n );\n const placedSide = computed(\n () => getSideAndAlignFromPlacement(placement.value)[0]\n );\n const placedAlign = computed(\n () => getSideAndAlignFromPlacement(placement.value)[1]\n );\n watchPostEffect(() => {\n if (isPositioned.value)\n emits(\"placed\");\n });\n const cannotCenterArrow = computed(\n () => middlewareData.value.arrow?.centerOffset !== 0\n );\n const contentZIndex = ref(\"\");\n watchEffect(() => {\n if (contentElement.value)\n contentZIndex.value = window.getComputedStyle(contentElement.value).zIndex;\n });\n const arrowX = computed(() => middlewareData.value.arrow?.x ?? 0);\n const arrowY = computed(() => middlewareData.value.arrow?.y ?? 0);\n providePopperContentContext({\n placedSide,\n onArrowChange: (element) => arrow$1.value = element,\n arrowX,\n arrowY,\n shouldHideArrow: cannotCenterArrow\n });\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", {\n ref_key: \"floatingRef\",\n ref: floatingRef,\n \"data-reka-popper-content-wrapper\": \"\",\n style: normalizeStyle({\n ...unref(floatingStyles),\n transform: unref(isPositioned) ? unref(floatingStyles).transform : \"translate(0, -200%)\",\n // keep off the page when measuring\n minWidth: \"max-content\",\n zIndex: contentZIndex.value,\n [\"--reka-popper-transform-origin\"]: [\n unref(middlewareData).transformOrigin?.x,\n unref(middlewareData).transformOrigin?.y\n ].join(\" \"),\n // hide the content if using the hide middleware and should be hidden\n // set visibility to hidden and disable pointer events so the UI behaves\n // as if the PopperContent isn't there at all\n ...unref(middlewareData).hide?.referenceHidden && {\n visibility: \"hidden\",\n pointerEvents: \"none\"\n }\n })\n }, [\n createVNode(unref(Primitive), mergeProps({ ref: unref(forwardRef) }, _ctx.$attrs, {\n \"as-child\": props.asChild,\n as: _ctx.as,\n \"data-side\": placedSide.value,\n \"data-align\": placedAlign.value,\n style: {\n // if the PopperContent hasn't been placed yet (not all measurements done)\n // we prevent animations so that users's animation don't kick in too early referring wrong sides\n animation: !unref(isPositioned) ? \"none\" : undefined\n }\n }), {\n default: withCtx(() => [\n renderSlot(_ctx.$slots, \"default\")\n ]),\n _: 3\n }, 16, [\"as-child\", \"as\", \"data-side\", \"data-align\", \"style\"])\n ], 4);\n };\n }\n});\n\nexport { PopperContentPropsDefaultValue as P, _sfc_main as _, injectPopperContentContext as i };\n//# sourceMappingURL=PopperContent.js.map\n","import { ref, computed } from 'vue';\nimport { i as injectConfigProviderContext } from '../ConfigProvider/ConfigProvider.js';\n\nfunction useNonce(nonce) {\n const context = injectConfigProviderContext({\n nonce: ref()\n });\n return computed(() => nonce?.value || context.nonce?.value);\n}\n\nexport { useNonce as u };\n//# sourceMappingURL=useNonce.js.map\n","import { createSharedComposable, useEventListener } from '@vueuse/core';\nimport { ref, onMounted } from 'vue';\n\nfunction useIsUsingKeyboardImpl() {\n const isUsingKeyboard = ref(false);\n onMounted(() => {\n useEventListener(\"keydown\", () => {\n isUsingKeyboard.value = true;\n }, { capture: true, passive: true });\n useEventListener([\"pointerdown\", \"pointermove\"], () => {\n isUsingKeyboard.value = false;\n }, { capture: true, passive: true });\n });\n return isUsingKeyboard;\n}\nconst useIsUsingKeyboard = createSharedComposable(useIsUsingKeyboardImpl);\n\nexport { useIsUsingKeyboard as u };\n//# sourceMappingURL=useIsUsingKeyboard.js.map\n","import { defineComponent, toRefs, ref, openBlock, createBlock, unref, withCtx, renderSlot } from 'vue';\nimport { useVModel } from '@vueuse/core';\nimport { _ as _sfc_main$1 } from '../Popper/PopperRoot.js';\nimport { u as useIsUsingKeyboard } from '../shared/useIsUsingKeyboard.js';\nimport { u as useDirection } from '../shared/useDirection.js';\nimport { c as createContext } from '../shared/createContext.js';\n\nconst [injectMenuContext, provideMenuContext] = createContext([\"MenuRoot\", \"MenuSub\"], \"MenuContext\");\nconst [injectMenuRootContext, provideMenuRootContext] = createContext(\"MenuRoot\");\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"MenuRoot\",\n props: {\n open: { type: Boolean, default: false },\n dir: {},\n modal: { type: Boolean, default: true }\n },\n emits: [\"update:open\"],\n setup(__props, { emit: __emit }) {\n const props = __props;\n const emits = __emit;\n const { modal, dir: propDir } = toRefs(props);\n const dir = useDirection(propDir);\n const open = useVModel(props, \"open\", emits);\n const content = ref();\n const isUsingKeyboardRef = useIsUsingKeyboard();\n provideMenuContext({\n open,\n onOpenChange: (value) => {\n open.value = value;\n },\n content,\n onContentChange: (element) => {\n content.value = element;\n }\n });\n provideMenuRootContext({\n onClose: () => {\n open.value = false;\n },\n isUsingKeyboardRef,\n dir,\n modal\n });\n return (_ctx, _cache) => {\n return openBlock(), createBlock(unref(_sfc_main$1), null, {\n default: withCtx(() => [\n renderSlot(_ctx.$slots, \"default\")\n ]),\n _: 3\n });\n };\n }\n});\n\nexport { _sfc_main as _, injectMenuRootContext as a, injectMenuContext as i, provideMenuContext as p };\n//# sourceMappingURL=MenuRoot.js.map\n","import { defineComponent, openBlock, createBlock, unref, normalizeProps, guardReactiveProps, withCtx, renderSlot } from 'vue';\nimport { _ as _sfc_main$1 } from '../Popper/PopperAnchor.js';\n\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"MenuAnchor\",\n props: {\n reference: {},\n asChild: { type: Boolean },\n as: {}\n },\n setup(__props) {\n const props = __props;\n return (_ctx, _cache) => {\n return openBlock(), createBlock(unref(_sfc_main$1), normalizeProps(guardReactiveProps(props)), {\n default: withCtx(() => [\n renderSlot(_ctx.$slots, \"default\")\n ]),\n _: 3\n }, 16);\n };\n }\n});\n\nexport { _sfc_main as _ };\n//# sourceMappingURL=MenuAnchor.js.map\n","import { defineComponent, openBlock, createBlock, unref, normalizeProps, guardReactiveProps, withCtx, renderSlot } from 'vue';\nimport { _ as _sfc_main$1 } from '../Teleport/Teleport.js';\n\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"MenuPortal\",\n props: {\n to: {},\n disabled: { type: Boolean },\n defer: { type: Boolean },\n forceMount: { type: Boolean }\n },\n setup(__props) {\n const props = __props;\n return (_ctx, _cache) => {\n return openBlock(), createBlock(unref(_sfc_main$1), normalizeProps(guardReactiveProps(props)), {\n default: withCtx(() => [\n renderSlot(_ctx.$slots, \"default\")\n ]),\n _: 3\n }, 16);\n };\n }\n});\n\nexport { _sfc_main as _ };\n//# sourceMappingURL=MenuPortal.js.map\n","import { isClient } from '@vueuse/shared';\nimport { watchEffect } from 'vue';\n\nlet count = 0;\nfunction useFocusGuards() {\n watchEffect((cleanupFn) => {\n if (!isClient)\n return;\n const edgeGuards = document.querySelectorAll(\"[data-reka-focus-guard]\");\n document.body.insertAdjacentElement(\n \"afterbegin\",\n edgeGuards[0] ?? createFocusGuard()\n );\n document.body.insertAdjacentElement(\n \"beforeend\",\n edgeGuards[1] ?? createFocusGuard()\n );\n count++;\n cleanupFn(() => {\n if (count === 1) {\n document.querySelectorAll(\"[data-reka-focus-guard]\").forEach((node) => node.remove());\n }\n count--;\n });\n });\n}\nfunction createFocusGuard() {\n const element = document.createElement(\"span\");\n element.setAttribute(\"data-reka-focus-guard\", \"\");\n element.tabIndex = 0;\n element.style.outline = \"none\";\n element.style.opacity = \"0\";\n element.style.position = \"fixed\";\n element.style.pointerEvents = \"none\";\n return element;\n}\n\nexport { useFocusGuards as u };\n//# sourceMappingURL=useFocusGuards.js.map\n","import { defineComponent, mergeDefaults, toRefs, ref, watch, onUnmounted, openBlock, createBlock, unref, withCtx, createVNode, renderSlot } from 'vue';\nimport { g as getOpenState, b as isPointerInGraceArea, F as FIRST_LAST_KEYS, L as LAST_KEYS, f as focusFirst, c as isMouseEvent } from './utils.js';\nimport { _ as _sfc_main$2 } from '../DismissableLayer/DismissableLayer.js';\nimport { P as PopperContentPropsDefaultValue, _ as _sfc_main$4 } from '../Popper/PopperContent.js';\nimport { _ as _sfc_main$3 } from '../RovingFocus/RovingFocusGroup.js';\nimport { u as useBodyScrollLock } from '../shared/useBodyScrollLock.js';\nimport { i as injectMenuContext, a as injectMenuRootContext } from './MenuRoot.js';\nimport { u as useFocusGuards } from '../shared/useFocusGuards.js';\nimport { u as useForwardExpose } from '../shared/useForwardExpose.js';\nimport { u as useTypeahead } from '../shared/useTypeahead.js';\nimport { _ as _sfc_main$1 } from '../FocusScope/FocusScope.js';\nimport { c as createContext } from '../shared/createContext.js';\nimport { u as useArrowNavigation } from '../shared/useArrowNavigation.js';\nimport { g as getActiveElement } from '../shared/getActiveElement.js';\n\nconst [injectMenuContentContext, provideMenuContentContext] = createContext(\"MenuContent\");\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"MenuContentImpl\",\n props: /* @__PURE__ */ mergeDefaults({\n loop: { type: Boolean },\n disableOutsidePointerEvents: { type: Boolean },\n disableOutsideScroll: { type: Boolean },\n trapFocus: { type: Boolean },\n side: {},\n sideOffset: {},\n align: {},\n alignOffset: {},\n avoidCollisions: { type: Boolean },\n collisionBoundary: {},\n collisionPadding: {},\n arrowPadding: {},\n sticky: {},\n hideWhenDetached: { type: Boolean },\n positionStrategy: {},\n updatePositionStrategy: {},\n disableUpdateOnLayoutShift: { type: Boolean },\n prioritizePosition: { type: Boolean },\n reference: {},\n asChild: { type: Boolean },\n as: {}\n }, {\n ...PopperContentPropsDefaultValue\n }),\n emits: [\"escapeKeyDown\", \"pointerDownOutside\", \"focusOutside\", \"interactOutside\", \"entryFocus\", \"openAutoFocus\", \"closeAutoFocus\", \"dismiss\"],\n setup(__props, { emit: __emit }) {\n const props = __props;\n const emits = __emit;\n const menuContext = injectMenuContext();\n const rootContext = injectMenuRootContext();\n const { trapFocus, disableOutsidePointerEvents, loop } = toRefs(props);\n useFocusGuards();\n useBodyScrollLock(disableOutsidePointerEvents.value);\n const searchRef = ref(\"\");\n const timerRef = ref(0);\n const pointerGraceTimerRef = ref(0);\n const pointerGraceIntentRef = ref(null);\n const pointerDirRef = ref(\"right\");\n const lastPointerXRef = ref(0);\n const currentItemId = ref(null);\n const rovingFocusGroupRef = ref();\n const { forwardRef, currentElement: contentElement } = useForwardExpose();\n const { handleTypeaheadSearch } = useTypeahead();\n watch(contentElement, (el) => {\n menuContext.onContentChange(el);\n });\n onUnmounted(() => {\n window.clearTimeout(timerRef.value);\n });\n function isPointerMovingToSubmenu(event) {\n const isMovingTowards = pointerDirRef.value === pointerGraceIntentRef.value?.side;\n return isMovingTowards && isPointerInGraceArea(event, pointerGraceIntentRef.value?.area);\n }\n async function handleMountAutoFocus(event) {\n emits(\"openAutoFocus\", event);\n if (event.defaultPrevented)\n return;\n event.preventDefault();\n contentElement.value?.focus({\n preventScroll: true\n });\n }\n function handleKeyDown(event) {\n if (event.defaultPrevented)\n return;\n const target = event.target;\n const isKeyDownInside = target.closest(\"[data-reka-menu-content]\") === event.currentTarget;\n const isModifierKey = event.ctrlKey || event.altKey || event.metaKey;\n const isCharacterKey = event.key.length === 1;\n const el = useArrowNavigation(\n event,\n getActiveElement(),\n contentElement.value,\n {\n loop: loop.value,\n arrowKeyOptions: \"vertical\",\n dir: rootContext?.dir.value,\n focus: true,\n attributeName: \"[data-reka-collection-item]:not([data-disabled])\"\n }\n );\n if (el)\n return el?.focus();\n if (event.code === \"Space\")\n return;\n const collectionItems = rovingFocusGroupRef.value?.getItems() ?? [];\n if (isKeyDownInside) {\n if (event.key === \"Tab\")\n event.preventDefault();\n if (!isModifierKey && isCharacterKey)\n handleTypeaheadSearch(event.key, collectionItems);\n }\n if (event.target !== contentElement.value)\n return;\n if (!FIRST_LAST_KEYS.includes(event.key))\n return;\n event.preventDefault();\n const candidateNodes = [...collectionItems.map((item) => item.ref)];\n if (LAST_KEYS.includes(event.key))\n candidateNodes.reverse();\n focusFirst(candidateNodes);\n }\n function handleBlur(event) {\n if (!event?.currentTarget?.contains?.(event.target)) {\n window.clearTimeout(timerRef.value);\n searchRef.value = \"\";\n }\n }\n function handlePointerMove(event) {\n if (!isMouseEvent(event))\n return;\n const target = event.target;\n const pointerXHasChanged = lastPointerXRef.value !== event.clientX;\n if (event?.currentTarget?.contains(target) && pointerXHasChanged) {\n const newDir = event.clientX > lastPointerXRef.value ? \"right\" : \"left\";\n pointerDirRef.value = newDir;\n lastPointerXRef.value = event.clientX;\n }\n }\n provideMenuContentContext({\n onItemEnter: (event) => {\n if (isPointerMovingToSubmenu(event))\n return true;\n else\n return false;\n },\n onItemLeave: (event) => {\n if (isPointerMovingToSubmenu(event))\n return;\n contentElement.value?.focus();\n currentItemId.value = null;\n },\n onTriggerLeave: (event) => {\n if (isPointerMovingToSubmenu(event))\n return true;\n else\n return false;\n },\n searchRef,\n pointerGraceTimerRef,\n onPointerGraceIntentChange: (intent) => {\n pointerGraceIntentRef.value = intent;\n }\n });\n return (_ctx, _cache) => {\n return openBlock(), createBlock(unref(_sfc_main$1), {\n \"as-child\": \"\",\n trapped: unref(trapFocus),\n onMountAutoFocus: handleMountAutoFocus,\n onUnmountAutoFocus: _cache[7] || (_cache[7] = ($event) => emits(\"closeAutoFocus\", $event))\n }, {\n default: withCtx(() => [\n createVNode(unref(_sfc_main$2), {\n \"as-child\": \"\",\n \"disable-outside-pointer-events\": unref(disableOutsidePointerEvents),\n onEscapeKeyDown: _cache[2] || (_cache[2] = ($event) => emits(\"escapeKeyDown\", $event)),\n onPointerDownOutside: _cache[3] || (_cache[3] = ($event) => emits(\"pointerDownOutside\", $event)),\n onFocusOutside: _cache[4] || (_cache[4] = ($event) => emits(\"focusOutside\", $event)),\n onInteractOutside: _cache[5] || (_cache[5] = ($event) => emits(\"interactOutside\", $event)),\n onDismiss: _cache[6] || (_cache[6] = ($event) => emits(\"dismiss\"))\n }, {\n default: withCtx(() => [\n createVNode(unref(_sfc_main$3), {\n ref_key: \"rovingFocusGroupRef\",\n ref: rovingFocusGroupRef,\n \"current-tab-stop-id\": currentItemId.value,\n \"onUpdate:currentTabStopId\": _cache[0] || (_cache[0] = ($event) => currentItemId.value = $event),\n \"as-child\": \"\",\n orientation: \"vertical\",\n dir: unref(rootContext).dir.value,\n loop: unref(loop),\n onEntryFocus: _cache[1] || (_cache[1] = (event) => {\n emits(\"entryFocus\", event);\n if (!unref(rootContext).isUsingKeyboardRef.value) event.preventDefault();\n })\n }, {\n default: withCtx(() => [\n createVNode(unref(_sfc_main$4), {\n ref: unref(forwardRef),\n role: \"menu\",\n as: _ctx.as,\n \"as-child\": _ctx.asChild,\n \"aria-orientation\": \"vertical\",\n \"data-reka-menu-content\": \"\",\n \"data-state\": unref(getOpenState)(unref(menuContext).open.value),\n dir: unref(rootContext).dir.value,\n side: _ctx.side,\n \"side-offset\": _ctx.sideOffset,\n align: _ctx.align,\n \"align-offset\": _ctx.alignOffset,\n \"avoid-collisions\": _ctx.avoidCollisions,\n \"collision-boundary\": _ctx.collisionBoundary,\n \"collision-padding\": _ctx.collisionPadding,\n \"arrow-padding\": _ctx.arrowPadding,\n \"prioritize-position\": _ctx.prioritizePosition,\n \"position-strategy\": _ctx.positionStrategy,\n \"update-position-strategy\": _ctx.updatePositionStrategy,\n sticky: _ctx.sticky,\n \"hide-when-detached\": _ctx.hideWhenDetached,\n reference: _ctx.reference,\n onKeydown: handleKeyDown,\n onBlur: handleBlur,\n onPointermove: handlePointerMove\n }, {\n default: withCtx(() => [\n renderSlot(_ctx.$slots, \"default\")\n ]),\n _: 3\n }, 8, [\"as\", \"as-child\", \"data-state\", \"dir\", \"side\", \"side-offset\", \"align\", \"align-offset\", \"avoid-collisions\", \"collision-boundary\", \"collision-padding\", \"arrow-padding\", \"prioritize-position\", \"position-strategy\", \"update-position-strategy\", \"sticky\", \"hide-when-detached\", \"reference\"])\n ]),\n _: 3\n }, 8, [\"current-tab-stop-id\", \"dir\", \"loop\"])\n ]),\n _: 3\n }, 8, [\"disable-outside-pointer-events\"])\n ]),\n _: 3\n }, 8, [\"trapped\"]);\n };\n }\n});\n\nexport { _sfc_main as _, injectMenuContentContext as i };\n//# sourceMappingURL=MenuContentImpl.js.map\n","import { defineComponent, openBlock, createBlock, mergeProps, unref, withModifiers, withCtx, renderSlot } from 'vue';\nimport { _ as _sfc_main$1 } from './MenuContentImpl.js';\nimport { u as useForwardPropsEmits } from '../shared/useForwardPropsEmits.js';\nimport { u as useForwardExpose } from '../shared/useForwardExpose.js';\nimport { u as useHideOthers } from '../shared/useHideOthers.js';\nimport { i as injectMenuContext } from './MenuRoot.js';\n\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"MenuRootContentModal\",\n props: {\n loop: { type: Boolean },\n side: {},\n sideOffset: {},\n align: {},\n alignOffset: {},\n avoidCollisions: { type: Boolean },\n collisionBoundary: {},\n collisionPadding: {},\n arrowPadding: {},\n sticky: {},\n hideWhenDetached: { type: Boolean },\n positionStrategy: {},\n updatePositionStrategy: {},\n disableUpdateOnLayoutShift: { type: Boolean },\n prioritizePosition: { type: Boolean },\n reference: {},\n asChild: { type: Boolean },\n as: {}\n },\n emits: [\"escapeKeyDown\", \"pointerDownOutside\", \"focusOutside\", \"interactOutside\", \"entryFocus\", \"openAutoFocus\", \"closeAutoFocus\"],\n setup(__props, { emit: __emit }) {\n const props = __props;\n const emits = __emit;\n const forwarded = useForwardPropsEmits(props, emits);\n const menuContext = injectMenuContext();\n const { forwardRef, currentElement } = useForwardExpose();\n useHideOthers(currentElement);\n return (_ctx, _cache) => {\n return openBlock(), createBlock(_sfc_main$1, mergeProps(unref(forwarded), {\n ref: unref(forwardRef),\n \"trap-focus\": unref(menuContext).open.value,\n \"disable-outside-pointer-events\": unref(menuContext).open.value,\n \"disable-outside-scroll\": true,\n onDismiss: _cache[0] || (_cache[0] = ($event) => unref(menuContext).onOpenChange(false)),\n onFocusOutside: _cache[1] || (_cache[1] = withModifiers(($event) => emits(\"focusOutside\", $event), [\"prevent\"]))\n }), {\n default: withCtx(() => [\n renderSlot(_ctx.$slots, \"default\")\n ]),\n _: 3\n }, 16, [\"trap-focus\", \"disable-outside-pointer-events\"]);\n };\n }\n});\n\nexport { _sfc_main as _ };\n//# sourceMappingURL=MenuRootContentModal.js.map\n","import { defineComponent, openBlock, createBlock, mergeProps, unref, withCtx, renderSlot } from 'vue';\nimport { _ as _sfc_main$1 } from './MenuContentImpl.js';\nimport { u as useForwardPropsEmits } from '../shared/useForwardPropsEmits.js';\nimport { i as injectMenuContext } from './MenuRoot.js';\n\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"MenuRootContentNonModal\",\n props: {\n loop: { type: Boolean },\n side: {},\n sideOffset: {},\n align: {},\n alignOffset: {},\n avoidCollisions: { type: Boolean },\n collisionBoundary: {},\n collisionPadding: {},\n arrowPadding: {},\n sticky: {},\n hideWhenDetached: { type: Boolean },\n positionStrategy: {},\n updatePositionStrategy: {},\n disableUpdateOnLayoutShift: { type: Boolean },\n prioritizePosition: { type: Boolean },\n reference: {},\n asChild: { type: Boolean },\n as: {}\n },\n emits: [\"escapeKeyDown\", \"pointerDownOutside\", \"focusOutside\", \"interactOutside\", \"entryFocus\", \"openAutoFocus\", \"closeAutoFocus\"],\n setup(__props, { emit: __emit }) {\n const props = __props;\n const emits = __emit;\n const forwarded = useForwardPropsEmits(props, emits);\n const menuContext = injectMenuContext();\n return (_ctx, _cache) => {\n return openBlock(), createBlock(_sfc_main$1, mergeProps(unref(forwarded), {\n \"trap-focus\": false,\n \"disable-outside-pointer-events\": false,\n \"disable-outside-scroll\": false,\n onDismiss: _cache[0] || (_cache[0] = ($event) => unref(menuContext).onOpenChange(false))\n }), {\n default: withCtx(() => [\n renderSlot(_ctx.$slots, \"default\")\n ]),\n _: 3\n }, 16);\n };\n }\n});\n\nexport { _sfc_main as _ };\n//# sourceMappingURL=MenuRootContentNonModal.js.map\n","import { defineComponent, openBlock, createBlock, unref, withCtx, normalizeProps, mergeProps, renderSlot } from 'vue';\nimport { _ as _sfc_main$1 } from './MenuRootContentModal.js';\nimport { _ as _sfc_main$2 } from './MenuRootContentNonModal.js';\nimport { u as useForwardPropsEmits } from '../shared/useForwardPropsEmits.js';\nimport { P as Presence } from '../Presence/Presence.js';\nimport { i as injectMenuContext, a as injectMenuRootContext } from './MenuRoot.js';\n\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"MenuContent\",\n props: {\n forceMount: { type: Boolean },\n loop: { type: Boolean },\n side: {},\n sideOffset: {},\n align: {},\n alignOffset: {},\n avoidCollisions: { type: Boolean },\n collisionBoundary: {},\n collisionPadding: {},\n arrowPadding: {},\n sticky: {},\n hideWhenDetached: { type: Boolean },\n positionStrategy: {},\n updatePositionStrategy: {},\n disableUpdateOnLayoutShift: { type: Boolean },\n prioritizePosition: { type: Boolean },\n reference: {},\n asChild: { type: Boolean },\n as: {}\n },\n emits: [\"escapeKeyDown\", \"pointerDownOutside\", \"focusOutside\", \"interactOutside\", \"entryFocus\", \"openAutoFocus\", \"closeAutoFocus\"],\n setup(__props, { emit: __emit }) {\n const props = __props;\n const emits = __emit;\n const forwarded = useForwardPropsEmits(props, emits);\n const menuContext = injectMenuContext();\n const rootContext = injectMenuRootContext();\n return (_ctx, _cache) => {\n return openBlock(), createBlock(unref(Presence), {\n present: _ctx.forceMount || unref(menuContext).open.value\n }, {\n default: withCtx(() => [\n unref(rootContext).modal.value ? (openBlock(), createBlock(_sfc_main$1, normalizeProps(mergeProps({ key: 0 }, { ..._ctx.$attrs, ...unref(forwarded) })), {\n default: withCtx(() => [\n renderSlot(_ctx.$slots, \"default\")\n ]),\n _: 3\n }, 16)) : (openBlock(), createBlock(_sfc_main$2, normalizeProps(mergeProps({ key: 1 }, { ..._ctx.$attrs, ...unref(forwarded) })), {\n default: withCtx(() => [\n renderSlot(_ctx.$slots, \"default\")\n ]),\n _: 3\n }, 16))\n ]),\n _: 3\n }, 8, [\"present\"]);\n };\n }\n});\n\nexport { _sfc_main as _ };\n//# sourceMappingURL=MenuContent.js.map\n","import { defineComponent, ref, openBlock, createBlock, unref, withCtx, createVNode, mergeProps, nextTick, renderSlot } from 'vue';\nimport { c as isMouseEvent } from './utils.js';\nimport { u as useCollection } from '../Collection/Collection.js';\nimport { i as injectMenuContentContext } from './MenuContentImpl.js';\nimport { u as useForwardExpose } from '../shared/useForwardExpose.js';\nimport { P as Primitive } from '../Primitive/Primitive.js';\n\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n ...{\n inheritAttrs: false\n },\n __name: \"MenuItemImpl\",\n props: {\n disabled: { type: Boolean },\n textValue: {},\n asChild: { type: Boolean },\n as: {}\n },\n setup(__props) {\n const props = __props;\n const contentContext = injectMenuContentContext();\n const { forwardRef } = useForwardExpose();\n const { CollectionItem } = useCollection();\n const isFocused = ref(false);\n async function handlePointerMove(event) {\n if (event.defaultPrevented)\n return;\n if (!isMouseEvent(event))\n return;\n if (props.disabled) {\n contentContext.onItemLeave(event);\n } else {\n const defaultPrevented = contentContext.onItemEnter(event);\n if (!defaultPrevented) {\n const item = event.currentTarget;\n item?.focus({ preventScroll: true });\n }\n }\n }\n async function handlePointerLeave(event) {\n await nextTick();\n if (event.defaultPrevented)\n return;\n if (!isMouseEvent(event))\n return;\n contentContext.onItemLeave(event);\n }\n return (_ctx, _cache) => {\n return openBlock(), createBlock(unref(CollectionItem), {\n value: { textValue: _ctx.textValue }\n }, {\n default: withCtx(() => [\n createVNode(unref(Primitive), mergeProps({\n ref: unref(forwardRef),\n role: \"menuitem\",\n tabindex: \"-1\"\n }, _ctx.$attrs, {\n as: _ctx.as,\n \"as-child\": _ctx.asChild,\n \"aria-disabled\": _ctx.disabled || undefined,\n \"data-disabled\": _ctx.disabled ? \"\" : undefined,\n \"data-highlighted\": isFocused.value ? \"\" : undefined,\n onPointermove: handlePointerMove,\n onPointerleave: handlePointerLeave,\n onFocus: _cache[0] || (_cache[0] = async (event) => {\n await nextTick();\n if (event.defaultPrevented || _ctx.disabled) return;\n isFocused.value = true;\n }),\n onBlur: _cache[1] || (_cache[1] = async (event) => {\n await nextTick();\n if (event.defaultPrevented) return;\n isFocused.value = false;\n })\n }), {\n default: withCtx(() => [\n renderSlot(_ctx.$slots, \"default\")\n ]),\n _: 3\n }, 16, [\"as\", \"as-child\", \"aria-disabled\", \"data-disabled\", \"data-highlighted\"])\n ]),\n _: 3\n }, 8, [\"value\"]);\n };\n }\n});\n\nexport { _sfc_main as _ };\n//# sourceMappingURL=MenuItemImpl.js.map\n","import { defineComponent, ref, openBlock, createBlock, mergeProps, unref, nextTick, withCtx, renderSlot } from 'vue';\nimport { _ as _sfc_main$1 } from './MenuItemImpl.js';\nimport { S as SELECTION_KEYS, I as ITEM_SELECT } from './utils.js';\nimport { u as useForwardExpose } from '../shared/useForwardExpose.js';\nimport { a as injectMenuRootContext } from './MenuRoot.js';\nimport { i as injectMenuContentContext } from './MenuContentImpl.js';\n\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"MenuItem\",\n props: {\n disabled: { type: Boolean },\n textValue: {},\n asChild: { type: Boolean },\n as: {}\n },\n emits: [\"select\"],\n setup(__props, { emit: __emit }) {\n const props = __props;\n const emits = __emit;\n const { forwardRef, currentElement } = useForwardExpose();\n const rootContext = injectMenuRootContext();\n const contentContext = injectMenuContentContext();\n const isPointerDownRef = ref(false);\n async function handleSelect() {\n const menuItem = currentElement.value;\n if (!props.disabled && menuItem) {\n const itemSelectEvent = new CustomEvent(ITEM_SELECT, {\n bubbles: true,\n cancelable: true\n });\n emits(\"select\", itemSelectEvent);\n await nextTick();\n if (itemSelectEvent.defaultPrevented)\n isPointerDownRef.value = false;\n else rootContext.onClose();\n }\n }\n return (_ctx, _cache) => {\n return openBlock(), createBlock(_sfc_main$1, mergeProps(props, {\n ref: unref(forwardRef),\n onClick: handleSelect,\n onPointerdown: _cache[0] || (_cache[0] = () => {\n isPointerDownRef.value = true;\n }),\n onPointerup: _cache[1] || (_cache[1] = async (event) => {\n await nextTick();\n if (event.defaultPrevented) return;\n if (!isPointerDownRef.value) event.currentTarget?.click();\n }),\n onKeydown: _cache[2] || (_cache[2] = async (event) => {\n const isTypingAhead = unref(contentContext).searchRef.value !== \"\";\n if (_ctx.disabled || isTypingAhead && event.key === \" \") return;\n if (unref(SELECTION_KEYS).includes(event.key)) {\n event.currentTarget.click();\n event.preventDefault();\n }\n })\n }), {\n default: withCtx(() => [\n renderSlot(_ctx.$slots, \"default\")\n ]),\n _: 3\n }, 16);\n };\n }\n});\n\nexport { _sfc_main as _ };\n//# sourceMappingURL=MenuItem.js.map\n","import { defineComponent, openBlock, createBlock, unref, mergeProps, withCtx, renderSlot } from 'vue';\nimport { P as Primitive } from '../Primitive/Primitive.js';\n\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"MenuGroup\",\n props: {\n asChild: { type: Boolean },\n as: {}\n },\n setup(__props) {\n const props = __props;\n return (_ctx, _cache) => {\n return openBlock(), createBlock(unref(Primitive), mergeProps({ role: \"group\" }, props), {\n default: withCtx(() => [\n renderSlot(_ctx.$slots, \"default\")\n ]),\n _: 3\n }, 16);\n };\n }\n});\n\nexport { _sfc_main as _ };\n//# sourceMappingURL=MenuGroup.js.map\n","import { defineComponent, openBlock, createBlock, unref, mergeProps, withCtx, renderSlot } from 'vue';\nimport { P as Primitive } from '../Primitive/Primitive.js';\n\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"MenuSeparator\",\n props: {\n asChild: { type: Boolean },\n as: {}\n },\n setup(__props) {\n const props = __props;\n return (_ctx, _cache) => {\n return openBlock(), createBlock(unref(Primitive), mergeProps(props, {\n role: \"separator\",\n \"aria-orientation\": \"horizontal\"\n }), {\n default: withCtx(() => [\n renderSlot(_ctx.$slots, \"default\")\n ]),\n _: 3\n }, 16);\n };\n }\n});\n\nexport { _sfc_main as _ };\n//# sourceMappingURL=MenuSeparator.js.map\n","import { defineComponent, ref, openBlock, createBlock, unref, withCtx, createVNode, renderSlot } from 'vue';\nimport { i as isIndeterminate, a as getCheckedState } from './utils.js';\nimport { P as Presence } from '../Presence/Presence.js';\nimport { P as Primitive } from '../Primitive/Primitive.js';\nimport { c as createContext } from '../shared/createContext.js';\n\nconst [injectMenuItemIndicatorContext, provideMenuItemIndicatorContext] = createContext(\n [\"MenuCheckboxItem\", \"MenuRadioItem\"],\n \"MenuItemIndicatorContext\"\n);\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"MenuItemIndicator\",\n props: {\n forceMount: { type: Boolean },\n asChild: { type: Boolean },\n as: { default: \"span\" }\n },\n setup(__props) {\n const indicatorContext = injectMenuItemIndicatorContext({\n modelValue: ref(false)\n });\n return (_ctx, _cache) => {\n return openBlock(), createBlock(unref(Presence), {\n present: _ctx.forceMount || unref(isIndeterminate)(unref(indicatorContext).modelValue.value) || unref(indicatorContext).modelValue.value === true\n }, {\n default: withCtx(() => [\n createVNode(unref(Primitive), {\n as: _ctx.as,\n \"as-child\": _ctx.asChild,\n \"data-state\": unref(getCheckedState)(unref(indicatorContext).modelValue.value)\n }, {\n default: withCtx(() => [\n renderSlot(_ctx.$slots, \"default\")\n ]),\n _: 3\n }, 8, [\"as\", \"as-child\", \"data-state\"])\n ]),\n _: 3\n }, 8, [\"present\"]);\n };\n }\n});\n\nexport { _sfc_main as _, provideMenuItemIndicatorContext as p };\n//# sourceMappingURL=MenuItemIndicator.js.map\n","import { defineComponent, openBlock, createBlock, mergeProps, unref, withCtx, renderSlot } from 'vue';\nimport { useVModel } from '@vueuse/core';\nimport { i as isIndeterminate, a as getCheckedState } from './utils.js';\nimport { _ as _sfc_main$1 } from './MenuItem.js';\nimport { p as provideMenuItemIndicatorContext } from './MenuItemIndicator.js';\n\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"MenuCheckboxItem\",\n props: {\n modelValue: { type: [Boolean, String], default: false },\n disabled: { type: Boolean },\n textValue: {},\n asChild: { type: Boolean },\n as: {}\n },\n emits: [\"select\", \"update:modelValue\"],\n setup(__props, { emit: __emit }) {\n const props = __props;\n const emits = __emit;\n const modelValue = useVModel(props, \"modelValue\", emits);\n provideMenuItemIndicatorContext({ modelValue });\n return (_ctx, _cache) => {\n return openBlock(), createBlock(_sfc_main$1, mergeProps({ role: \"menuitemcheckbox\" }, props, {\n \"aria-checked\": unref(isIndeterminate)(unref(modelValue)) ? \"mixed\" : unref(modelValue),\n \"data-state\": unref(getCheckedState)(unref(modelValue)),\n onSelect: _cache[0] || (_cache[0] = async (event) => {\n emits(\"select\", event);\n if (unref(isIndeterminate)(unref(modelValue))) {\n modelValue.value = true;\n } else {\n modelValue.value = !unref(modelValue);\n }\n })\n }), {\n default: withCtx(() => [\n renderSlot(_ctx.$slots, \"default\", { modelValue: unref(modelValue) })\n ]),\n _: 3\n }, 16, [\"aria-checked\", \"data-state\"]);\n };\n }\n});\n\nexport { _sfc_main as _ };\n//# sourceMappingURL=MenuCheckboxItem.js.map\n","import { defineComponent, openBlock, createBlock, unref, normalizeProps, guardReactiveProps, withCtx, renderSlot } from 'vue';\nimport { P as Primitive } from '../Primitive/Primitive.js';\n\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"MenuLabel\",\n props: {\n asChild: { type: Boolean },\n as: { default: \"div\" }\n },\n setup(__props) {\n const props = __props;\n return (_ctx, _cache) => {\n return openBlock(), createBlock(unref(Primitive), normalizeProps(guardReactiveProps(props)), {\n default: withCtx(() => [\n renderSlot(_ctx.$slots, \"default\")\n ]),\n _: 3\n }, 16);\n };\n }\n});\n\nexport { _sfc_main as _ };\n//# sourceMappingURL=MenuLabel.js.map\n","import { defineComponent, openBlock, createBlock, normalizeProps, guardReactiveProps, withCtx, renderSlot, unref } from 'vue';\nimport { useVModel } from '@vueuse/core';\nimport { _ as _sfc_main$1 } from './MenuGroup.js';\nimport { c as createContext } from '../shared/createContext.js';\n\nconst [injectMenuRadioGroupContext, provideMenuRadioGroupContext] = createContext(\"MenuRadioGroup\");\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"MenuRadioGroup\",\n props: {\n modelValue: { default: \"\" },\n asChild: { type: Boolean },\n as: {}\n },\n emits: [\"update:modelValue\"],\n setup(__props, { emit: __emit }) {\n const props = __props;\n const emits = __emit;\n const modelValue = useVModel(props, \"modelValue\", emits);\n provideMenuRadioGroupContext({\n modelValue,\n onValueChange: (payload) => {\n modelValue.value = payload;\n }\n });\n return (_ctx, _cache) => {\n return openBlock(), createBlock(_sfc_main$1, normalizeProps(guardReactiveProps(props)), {\n default: withCtx(() => [\n renderSlot(_ctx.$slots, \"default\", { modelValue: unref(modelValue) })\n ]),\n _: 3\n }, 16);\n };\n }\n});\n\nexport { _sfc_main as _, injectMenuRadioGroupContext as i };\n//# sourceMappingURL=MenuRadioGroup.js.map\n","import { defineComponent, toRefs, computed, openBlock, createBlock, mergeProps, unref, withCtx, renderSlot } from 'vue';\nimport { a as getCheckedState } from './utils.js';\nimport { _ as _sfc_main$1 } from './MenuItem.js';\nimport { i as injectMenuRadioGroupContext } from './MenuRadioGroup.js';\nimport { p as provideMenuItemIndicatorContext } from './MenuItemIndicator.js';\n\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"MenuRadioItem\",\n props: {\n value: {},\n disabled: { type: Boolean },\n textValue: {},\n asChild: { type: Boolean },\n as: {}\n },\n emits: [\"select\"],\n setup(__props, { emit: __emit }) {\n const props = __props;\n const emits = __emit;\n const { value } = toRefs(props);\n const radioGroupContext = injectMenuRadioGroupContext();\n const modelValue = computed(\n () => radioGroupContext.modelValue.value === value?.value\n );\n provideMenuItemIndicatorContext({ modelValue });\n return (_ctx, _cache) => {\n return openBlock(), createBlock(_sfc_main$1, mergeProps({ role: \"menuitemradio\" }, props, {\n \"aria-checked\": modelValue.value,\n \"data-state\": unref(getCheckedState)(modelValue.value),\n onSelect: _cache[0] || (_cache[0] = async (event) => {\n emits(\"select\", event);\n unref(radioGroupContext).onValueChange(unref(value));\n })\n }), {\n default: withCtx(() => [\n renderSlot(_ctx.$slots, \"default\")\n ]),\n _: 3\n }, 16, [\"aria-checked\", \"data-state\"]);\n };\n }\n});\n\nexport { _sfc_main as _ };\n//# sourceMappingURL=MenuRadioItem.js.map\n","import { defineComponent, ref, watchEffect, openBlock, createBlock, unref, withCtx, renderSlot } from 'vue';\nimport { useVModel } from '@vueuse/core';\nimport { _ as _sfc_main$1 } from '../Popper/PopperRoot.js';\nimport { i as injectMenuContext, p as provideMenuContext } from './MenuRoot.js';\nimport { c as createContext } from '../shared/createContext.js';\n\nconst [injectMenuSubContext, provideMenuSubContext] = createContext(\"MenuSub\");\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"MenuSub\",\n props: {\n open: { type: Boolean, default: undefined }\n },\n emits: [\"update:open\"],\n setup(__props, { emit: __emit }) {\n const props = __props;\n const emits = __emit;\n const open = useVModel(props, \"open\", emits, {\n defaultValue: false,\n passive: props.open === undefined\n });\n const parentMenuContext = injectMenuContext();\n const trigger = ref();\n const content = ref();\n watchEffect((cleanupFn) => {\n if (parentMenuContext?.open.value === false)\n open.value = false;\n cleanupFn(() => open.value = false);\n });\n provideMenuContext({\n open,\n onOpenChange: (value) => {\n open.value = value;\n },\n content,\n onContentChange: (element) => {\n content.value = element;\n }\n });\n provideMenuSubContext({\n triggerId: \"\",\n contentId: \"\",\n trigger,\n onTriggerChange: (element) => {\n trigger.value = element;\n }\n });\n return (_ctx, _cache) => {\n return openBlock(), createBlock(unref(_sfc_main$1), null, {\n default: withCtx(() => [\n renderSlot(_ctx.$slots, \"default\")\n ]),\n _: 3\n });\n };\n }\n});\n\nexport { _sfc_main as _, injectMenuSubContext as i };\n//# sourceMappingURL=MenuSub.js.map\n","import { defineComponent, openBlock, createBlock, unref, withCtx, createVNode, mergeProps, withModifiers, renderSlot } from 'vue';\nimport { _ as _sfc_main$1 } from './MenuContentImpl.js';\nimport { d as SUB_CLOSE_KEYS } from './utils.js';\nimport { u as useForwardPropsEmits } from '../shared/useForwardPropsEmits.js';\nimport { i as injectMenuSubContext } from './MenuSub.js';\nimport { u as useForwardExpose } from '../shared/useForwardExpose.js';\nimport { u as useId } from '../shared/useId.js';\nimport { P as Presence } from '../Presence/Presence.js';\nimport { i as injectMenuContext, a as injectMenuRootContext } from './MenuRoot.js';\n\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"MenuSubContent\",\n props: {\n forceMount: { type: Boolean },\n loop: { type: Boolean },\n sideOffset: {},\n alignOffset: {},\n avoidCollisions: { type: Boolean },\n collisionBoundary: {},\n collisionPadding: {},\n arrowPadding: {},\n sticky: {},\n hideWhenDetached: { type: Boolean },\n positionStrategy: {},\n updatePositionStrategy: {},\n disableUpdateOnLayoutShift: { type: Boolean },\n prioritizePosition: { type: Boolean, default: true },\n reference: {},\n asChild: { type: Boolean },\n as: {}\n },\n emits: [\"escapeKeyDown\", \"pointerDownOutside\", \"focusOutside\", \"interactOutside\", \"entryFocus\", \"openAutoFocus\", \"closeAutoFocus\"],\n setup(__props, { emit: __emit }) {\n const props = __props;\n const emits = __emit;\n const forwarded = useForwardPropsEmits(props, emits);\n const menuContext = injectMenuContext();\n const rootContext = injectMenuRootContext();\n const menuSubContext = injectMenuSubContext();\n const { forwardRef, currentElement: subContentElement } = useForwardExpose();\n menuSubContext.contentId ||= useId(undefined, \"reka-menu-sub-content\");\n return (_ctx, _cache) => {\n return openBlock(), createBlock(unref(Presence), {\n present: _ctx.forceMount || unref(menuContext).open.value\n }, {\n default: withCtx(() => [\n createVNode(_sfc_main$1, mergeProps(unref(forwarded), {\n id: unref(menuSubContext).contentId,\n ref: unref(forwardRef),\n \"aria-labelledby\": unref(menuSubContext).triggerId,\n align: \"start\",\n side: unref(rootContext).dir.value === \"rtl\" ? \"left\" : \"right\",\n \"disable-outside-pointer-events\": false,\n \"disable-outside-scroll\": false,\n \"trap-focus\": false,\n onOpenAutoFocus: _cache[0] || (_cache[0] = withModifiers((event) => {\n if (unref(rootContext).isUsingKeyboardRef.value) unref(subContentElement)?.focus();\n }, [\"prevent\"])),\n onCloseAutoFocus: _cache[1] || (_cache[1] = withModifiers(() => {\n }, [\"prevent\"])),\n onFocusOutside: _cache[2] || (_cache[2] = (event) => {\n if (event.defaultPrevented) return;\n if (event.target !== unref(menuSubContext).trigger.value)\n unref(menuContext).onOpenChange(false);\n }),\n onEscapeKeyDown: _cache[3] || (_cache[3] = (event) => {\n unref(rootContext).onClose();\n event.preventDefault();\n }),\n onKeydown: _cache[4] || (_cache[4] = (event) => {\n const isKeyDownInside = event.currentTarget?.contains(event.target);\n const isCloseKey = unref(SUB_CLOSE_KEYS)[unref(rootContext).dir.value].includes(event.key);\n if (isKeyDownInside && isCloseKey) {\n unref(menuContext).onOpenChange(false);\n unref(menuSubContext).trigger.value?.focus();\n event.preventDefault();\n }\n })\n }), {\n default: withCtx(() => [\n renderSlot(_ctx.$slots, \"default\")\n ]),\n _: 3\n }, 16, [\"id\", \"aria-labelledby\", \"side\"])\n ]),\n _: 3\n }, 8, [\"present\"]);\n };\n }\n});\n\nexport { _sfc_main as _ };\n//# sourceMappingURL=MenuSubContent.js.map\n","import { defineComponent, ref, onUnmounted, openBlock, createBlock, withCtx, createVNode, mergeProps, unref, renderSlot, nextTick } from 'vue';\nimport { _ as _sfc_main$2 } from './MenuItemImpl.js';\nimport { g as getOpenState, c as isMouseEvent, e as SUB_OPEN_KEYS } from './utils.js';\nimport { _ as _sfc_main$1 } from './MenuAnchor.js';\nimport { u as useId } from '../shared/useId.js';\nimport { i as injectMenuContext, a as injectMenuRootContext } from './MenuRoot.js';\nimport { i as injectMenuSubContext } from './MenuSub.js';\nimport { i as injectMenuContentContext } from './MenuContentImpl.js';\n\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"MenuSubTrigger\",\n props: {\n disabled: { type: Boolean },\n textValue: {},\n asChild: { type: Boolean },\n as: {}\n },\n setup(__props) {\n const props = __props;\n const menuContext = injectMenuContext();\n const rootContext = injectMenuRootContext();\n const subContext = injectMenuSubContext();\n const contentContext = injectMenuContentContext();\n const openTimerRef = ref(null);\n subContext.triggerId ||= useId(undefined, \"reka-menu-sub-trigger\");\n function clearOpenTimer() {\n if (openTimerRef.value)\n window.clearTimeout(openTimerRef.value);\n openTimerRef.value = null;\n }\n onUnmounted(() => {\n clearOpenTimer();\n });\n function handlePointerMove(event) {\n if (!isMouseEvent(event))\n return;\n const defaultPrevented = contentContext.onItemEnter(event);\n if (defaultPrevented)\n return;\n if (!props.disabled && !menuContext.open.value && !openTimerRef.value) {\n contentContext.onPointerGraceIntentChange(null);\n openTimerRef.value = window.setTimeout(() => {\n menuContext.onOpenChange(true);\n clearOpenTimer();\n }, 100);\n }\n }\n async function handlePointerLeave(event) {\n if (!isMouseEvent(event))\n return;\n clearOpenTimer();\n const contentRect = menuContext.content.value?.getBoundingClientRect();\n if (contentRect?.width) {\n const side = menuContext.content.value?.dataset.side;\n const rightSide = side === \"right\";\n const bleed = rightSide ? -5 : 5;\n const contentNearEdge = contentRect[rightSide ? \"left\" : \"right\"];\n const contentFarEdge = contentRect[rightSide ? \"right\" : \"left\"];\n contentContext.onPointerGraceIntentChange({\n area: [\n // Apply a bleed on clientX to ensure that our exit point is\n // consistently within polygon bounds\n { x: event.clientX + bleed, y: event.clientY },\n { x: contentNearEdge, y: contentRect.top },\n { x: contentFarEdge, y: contentRect.top },\n { x: contentFarEdge, y: contentRect.bottom },\n { x: contentNearEdge, y: contentRect.bottom }\n ],\n side\n });\n window.clearTimeout(contentContext.pointerGraceTimerRef.value);\n contentContext.pointerGraceTimerRef.value = window.setTimeout(\n () => contentContext.onPointerGraceIntentChange(null),\n 300\n );\n } else {\n const defaultPrevented = contentContext.onTriggerLeave(event);\n if (defaultPrevented)\n return;\n contentContext.onPointerGraceIntentChange(null);\n }\n }\n async function handleKeyDown(event) {\n const isTypingAhead = contentContext.searchRef.value !== \"\";\n if (props.disabled || isTypingAhead && event.key === \" \")\n return;\n if (SUB_OPEN_KEYS[rootContext.dir.value].includes(event.key)) {\n menuContext.onOpenChange(true);\n await nextTick();\n menuContext.content.value?.focus();\n event.preventDefault();\n }\n }\n return (_ctx, _cache) => {\n return openBlock(), createBlock(_sfc_main$1, { \"as-child\": \"\" }, {\n default: withCtx(() => [\n createVNode(_sfc_main$2, mergeProps(props, {\n id: unref(subContext).triggerId,\n ref: (vnode) => {\n unref(subContext)?.onTriggerChange(vnode?.$el);\n return undefined;\n },\n \"aria-haspopup\": \"menu\",\n \"aria-expanded\": unref(menuContext).open.value,\n \"aria-controls\": unref(subContext).contentId,\n \"data-state\": unref(getOpenState)(unref(menuContext).open.value),\n onClick: _cache[0] || (_cache[0] = async (event) => {\n if (props.disabled || event.defaultPrevented) return;\n event.currentTarget.focus();\n if (!unref(menuContext).open.value) unref(menuContext).onOpenChange(true);\n }),\n onPointermove: handlePointerMove,\n onPointerleave: handlePointerLeave,\n onKeydown: handleKeyDown\n }), {\n default: withCtx(() => [\n renderSlot(_ctx.$slots, \"default\")\n ]),\n _: 3\n }, 16, [\"id\", \"aria-expanded\", \"aria-controls\", \"data-state\"])\n ]),\n _: 3\n });\n };\n }\n});\n\nexport { _sfc_main as _ };\n//# sourceMappingURL=MenuSubTrigger.js.map\n","import { defineComponent, openBlock, createBlock, unref, normalizeProps, guardReactiveProps, withCtx, renderSlot } from 'vue';\nimport { _ as _sfc_main$1 } from '../Teleport/Teleport.js';\n\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"DialogPortal\",\n props: {\n to: {},\n disabled: { type: Boolean },\n defer: { type: Boolean },\n forceMount: { type: Boolean }\n },\n setup(__props) {\n const props = __props;\n return (_ctx, _cache) => {\n return openBlock(), createBlock(unref(_sfc_main$1), normalizeProps(guardReactiveProps(props)), {\n default: withCtx(() => [\n renderSlot(_ctx.$slots, \"default\")\n ]),\n _: 3\n }, 16);\n };\n }\n});\n\nexport { _sfc_main as _ };\n//# sourceMappingURL=DialogPortal.js.map\n","import { defineComponent, ref, toRefs, openBlock, createBlock, unref, isRef, withCtx, renderSlot } from 'vue';\nimport { useVModel } from '@vueuse/core';\nimport { _ as _sfc_main$1 } from '../Menu/MenuRoot.js';\nimport { u as useForwardExpose } from '../shared/useForwardExpose.js';\nimport { u as useDirection } from '../shared/useDirection.js';\nimport { c as createContext } from '../shared/createContext.js';\n\nconst [injectDropdownMenuRootContext, provideDropdownMenuRootContext] = createContext(\"DropdownMenuRoot\");\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"DropdownMenuRoot\",\n props: {\n defaultOpen: { type: Boolean },\n open: { type: Boolean, default: undefined },\n dir: {},\n modal: { type: Boolean, default: true }\n },\n emits: [\"update:open\"],\n setup(__props, { emit: __emit }) {\n const props = __props;\n const emit = __emit;\n useForwardExpose();\n const open = useVModel(props, \"open\", emit, {\n defaultValue: props.defaultOpen,\n passive: props.open === undefined\n });\n const triggerElement = ref();\n const { modal, dir: propDir } = toRefs(props);\n const dir = useDirection(propDir);\n provideDropdownMenuRootContext({\n open,\n onOpenChange: (value) => {\n open.value = value;\n },\n onOpenToggle: () => {\n open.value = !open.value;\n },\n triggerId: \"\",\n triggerElement,\n contentId: \"\",\n modal,\n dir\n });\n return (_ctx, _cache) => {\n return openBlock(), createBlock(unref(_sfc_main$1), {\n open: unref(open),\n \"onUpdate:open\": _cache[0] || (_cache[0] = ($event) => isRef(open) ? open.value = $event : null),\n dir: unref(dir),\n modal: unref(modal)\n }, {\n default: withCtx(() => [\n renderSlot(_ctx.$slots, \"default\", { open: unref(open) })\n ]),\n _: 3\n }, 8, [\"open\", \"dir\", \"modal\"]);\n };\n }\n});\n\nexport { _sfc_main as _, injectDropdownMenuRootContext as i };\n//# sourceMappingURL=DropdownMenuRoot.js.map\n","import { defineComponent, onMounted, openBlock, createBlock, unref, withCtx, createVNode, nextTick, withKeys, renderSlot } from 'vue';\nimport { _ as _sfc_main$1 } from '../Menu/MenuAnchor.js';\nimport { i as injectDropdownMenuRootContext } from './DropdownMenuRoot.js';\nimport { u as useForwardExpose } from '../shared/useForwardExpose.js';\nimport { u as useId } from '../shared/useId.js';\nimport { P as Primitive } from '../Primitive/Primitive.js';\n\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"DropdownMenuTrigger\",\n props: {\n disabled: { type: Boolean },\n asChild: { type: Boolean },\n as: { default: \"button\" }\n },\n setup(__props) {\n const props = __props;\n const rootContext = injectDropdownMenuRootContext();\n const { forwardRef, currentElement: triggerElement } = useForwardExpose();\n onMounted(() => {\n rootContext.triggerElement = triggerElement;\n });\n rootContext.triggerId ||= useId(undefined, \"reka-dropdown-menu-trigger\");\n return (_ctx, _cache) => {\n return openBlock(), createBlock(unref(_sfc_main$1), { \"as-child\": \"\" }, {\n default: withCtx(() => [\n createVNode(unref(Primitive), {\n id: unref(rootContext).triggerId,\n ref: unref(forwardRef),\n type: _ctx.as === \"button\" ? \"button\" : undefined,\n \"as-child\": props.asChild,\n as: _ctx.as,\n \"aria-haspopup\": \"menu\",\n \"aria-expanded\": unref(rootContext).open.value,\n \"aria-controls\": unref(rootContext).open.value ? unref(rootContext).contentId : undefined,\n \"data-disabled\": _ctx.disabled ? \"\" : undefined,\n disabled: _ctx.disabled,\n \"data-state\": unref(rootContext).open.value ? \"open\" : \"closed\",\n onClick: _cache[0] || (_cache[0] = async (event) => {\n if (!_ctx.disabled && event.button === 0 && event.ctrlKey === false) {\n unref(rootContext)?.onOpenToggle();\n await nextTick();\n if (unref(rootContext).open.value) event.preventDefault();\n }\n }),\n onKeydown: _cache[1] || (_cache[1] = withKeys(\n (event) => {\n if (_ctx.disabled) return;\n if ([\"Enter\", \" \"].includes(event.key)) unref(rootContext).onOpenToggle();\n if (event.key === \"ArrowDown\") unref(rootContext).onOpenChange(true);\n if ([\"Enter\", \" \", \"ArrowDown\"].includes(event.key))\n event.preventDefault();\n },\n [\"enter\", \"space\", \"arrow-down\"]\n ))\n }, {\n default: withCtx(() => [\n renderSlot(_ctx.$slots, \"default\")\n ]),\n _: 3\n }, 8, [\"id\", \"type\", \"as-child\", \"as\", \"aria-expanded\", \"aria-controls\", \"data-disabled\", \"disabled\", \"data-state\"])\n ]),\n _: 3\n });\n };\n }\n});\n\nexport { _sfc_main as _ };\n//# sourceMappingURL=DropdownMenuTrigger.js.map\n","import { defineComponent, openBlock, createBlock, unref, normalizeProps, guardReactiveProps, withCtx, renderSlot } from 'vue';\nimport { _ as _sfc_main$1 } from '../Menu/MenuPortal.js';\n\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"DropdownMenuPortal\",\n props: {\n to: {},\n disabled: { type: Boolean },\n defer: { type: Boolean },\n forceMount: { type: Boolean }\n },\n setup(__props) {\n const props = __props;\n return (_ctx, _cache) => {\n return openBlock(), createBlock(unref(_sfc_main$1), normalizeProps(guardReactiveProps(props)), {\n default: withCtx(() => [\n renderSlot(_ctx.$slots, \"default\")\n ]),\n _: 3\n }, 16);\n };\n }\n});\n\nexport { _sfc_main as _ };\n//# sourceMappingURL=DropdownMenuPortal.js.map\n","import { defineComponent, ref, openBlock, createBlock, unref, mergeProps, withCtx, renderSlot } from 'vue';\nimport { _ as _sfc_main$1 } from '../Menu/MenuContent.js';\nimport { u as useForwardPropsEmits } from '../shared/useForwardPropsEmits.js';\nimport { u as useForwardExpose } from '../shared/useForwardExpose.js';\nimport { u as useId } from '../shared/useId.js';\nimport { i as injectDropdownMenuRootContext } from './DropdownMenuRoot.js';\n\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"DropdownMenuContent\",\n props: {\n forceMount: { type: Boolean },\n loop: { type: Boolean },\n side: {},\n sideOffset: {},\n align: {},\n alignOffset: {},\n avoidCollisions: { type: Boolean },\n collisionBoundary: {},\n collisionPadding: {},\n arrowPadding: {},\n sticky: {},\n hideWhenDetached: { type: Boolean },\n positionStrategy: {},\n updatePositionStrategy: {},\n disableUpdateOnLayoutShift: { type: Boolean },\n prioritizePosition: { type: Boolean },\n reference: {},\n asChild: { type: Boolean },\n as: {}\n },\n emits: [\"escapeKeyDown\", \"pointerDownOutside\", \"focusOutside\", \"interactOutside\", \"closeAutoFocus\"],\n setup(__props, { emit: __emit }) {\n const props = __props;\n const emits = __emit;\n const forwarded = useForwardPropsEmits(props, emits);\n useForwardExpose();\n const rootContext = injectDropdownMenuRootContext();\n const hasInteractedOutsideRef = ref(false);\n function handleCloseAutoFocus(event) {\n if (event.defaultPrevented)\n return;\n if (!hasInteractedOutsideRef.value) {\n setTimeout(() => {\n rootContext.triggerElement.value?.focus();\n }, 0);\n }\n hasInteractedOutsideRef.value = false;\n event.preventDefault();\n }\n rootContext.contentId ||= useId(undefined, \"reka-dropdown-menu-content\");\n return (_ctx, _cache) => {\n return openBlock(), createBlock(unref(_sfc_main$1), mergeProps(unref(forwarded), {\n id: unref(rootContext).contentId,\n \"aria-labelledby\": unref(rootContext)?.triggerId,\n style: {\n \"--reka-dropdown-menu-content-transform-origin\": \"var(--reka-popper-transform-origin)\",\n \"--reka-dropdown-menu-content-available-width\": \"var(--reka-popper-available-width)\",\n \"--reka-dropdown-menu-content-available-height\": \"var(--reka-popper-available-height)\",\n \"--reka-dropdown-menu-trigger-width\": \"var(--reka-popper-anchor-width)\",\n \"--reka-dropdown-menu-trigger-height\": \"var(--reka-popper-anchor-height)\"\n },\n onCloseAutoFocus: handleCloseAutoFocus,\n onInteractOutside: _cache[0] || (_cache[0] = (event) => {\n if (event.defaultPrevented) return;\n const originalEvent = event.detail.originalEvent;\n const ctrlLeftClick = originalEvent.button === 0 && originalEvent.ctrlKey === true;\n const isRightClick = originalEvent.button === 2 || ctrlLeftClick;\n if (!unref(rootContext).modal.value || isRightClick) hasInteractedOutsideRef.value = true;\n if (unref(rootContext).triggerElement.value?.contains(event.target)) event.preventDefault();\n })\n }), {\n default: withCtx(() => [\n renderSlot(_ctx.$slots, \"default\")\n ]),\n _: 3\n }, 16, [\"id\", \"aria-labelledby\"]);\n };\n }\n});\n\nexport { _sfc_main as _ };\n//# sourceMappingURL=DropdownMenuContent.js.map\n","import { defineComponent, openBlock, createBlock, unref, normalizeProps, guardReactiveProps, withCtx, renderSlot } from 'vue';\nimport { _ as _sfc_main$1 } from '../Menu/MenuItem.js';\nimport { u as useEmitAsProps } from '../shared/useEmitAsProps.js';\nimport { u as useForwardExpose } from '../shared/useForwardExpose.js';\n\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"DropdownMenuItem\",\n props: {\n disabled: { type: Boolean },\n textValue: {},\n asChild: { type: Boolean },\n as: {}\n },\n emits: [\"select\"],\n setup(__props, { emit: __emit }) {\n const props = __props;\n const emits = __emit;\n const emitsAsProps = useEmitAsProps(emits);\n useForwardExpose();\n return (_ctx, _cache) => {\n return openBlock(), createBlock(unref(_sfc_main$1), normalizeProps(guardReactiveProps({ ...props, ...unref(emitsAsProps) })), {\n default: withCtx(() => [\n renderSlot(_ctx.$slots, \"default\")\n ]),\n _: 3\n }, 16);\n };\n }\n});\n\nexport { _sfc_main as _ };\n//# sourceMappingURL=DropdownMenuItem.js.map\n","import { defineComponent, openBlock, createBlock, unref, normalizeProps, guardReactiveProps, withCtx, renderSlot } from 'vue';\nimport { _ as _sfc_main$1 } from '../Menu/MenuGroup.js';\nimport { u as useForwardExpose } from '../shared/useForwardExpose.js';\n\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"DropdownMenuGroup\",\n props: {\n asChild: { type: Boolean },\n as: {}\n },\n setup(__props) {\n const props = __props;\n useForwardExpose();\n return (_ctx, _cache) => {\n return openBlock(), createBlock(unref(_sfc_main$1), normalizeProps(guardReactiveProps(props)), {\n default: withCtx(() => [\n renderSlot(_ctx.$slots, \"default\")\n ]),\n _: 3\n }, 16);\n };\n }\n});\n\nexport { _sfc_main as _ };\n//# sourceMappingURL=DropdownMenuGroup.js.map\n","import { defineComponent, openBlock, createBlock, unref, normalizeProps, guardReactiveProps, withCtx, renderSlot } from 'vue';\nimport { _ as _sfc_main$1 } from '../Menu/MenuSeparator.js';\nimport { u as useForwardExpose } from '../shared/useForwardExpose.js';\n\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"DropdownMenuSeparator\",\n props: {\n asChild: { type: Boolean },\n as: {}\n },\n setup(__props) {\n const props = __props;\n useForwardExpose();\n return (_ctx, _cache) => {\n return openBlock(), createBlock(unref(_sfc_main$1), normalizeProps(guardReactiveProps(props)), {\n default: withCtx(() => [\n renderSlot(_ctx.$slots, \"default\")\n ]),\n _: 3\n }, 16);\n };\n }\n});\n\nexport { _sfc_main as _ };\n//# sourceMappingURL=DropdownMenuSeparator.js.map\n","import { defineComponent, openBlock, createBlock, unref, normalizeProps, guardReactiveProps, withCtx, renderSlot } from 'vue';\nimport { _ as _sfc_main$1 } from '../Menu/MenuCheckboxItem.js';\nimport { u as useEmitAsProps } from '../shared/useEmitAsProps.js';\nimport { u as useForwardExpose } from '../shared/useForwardExpose.js';\n\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"DropdownMenuCheckboxItem\",\n props: {\n modelValue: { type: [Boolean, String] },\n disabled: { type: Boolean },\n textValue: {},\n asChild: { type: Boolean },\n as: {}\n },\n emits: [\"select\", \"update:modelValue\"],\n setup(__props, { emit: __emit }) {\n const props = __props;\n const emits = __emit;\n const emitsAsProps = useEmitAsProps(emits);\n useForwardExpose();\n return (_ctx, _cache) => {\n return openBlock(), createBlock(unref(_sfc_main$1), normalizeProps(guardReactiveProps({ ...props, ...unref(emitsAsProps) })), {\n default: withCtx(() => [\n renderSlot(_ctx.$slots, \"default\")\n ]),\n _: 3\n }, 16);\n };\n }\n});\n\nexport { _sfc_main as _ };\n//# sourceMappingURL=DropdownMenuCheckboxItem.js.map\n","import { defineComponent, openBlock, createBlock, unref, normalizeProps, guardReactiveProps, withCtx, renderSlot } from 'vue';\nimport { _ as _sfc_main$1 } from '../Menu/MenuItemIndicator.js';\nimport { u as useForwardExpose } from '../shared/useForwardExpose.js';\n\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"DropdownMenuItemIndicator\",\n props: {\n forceMount: { type: Boolean },\n asChild: { type: Boolean },\n as: {}\n },\n setup(__props) {\n const props = __props;\n useForwardExpose();\n return (_ctx, _cache) => {\n return openBlock(), createBlock(unref(_sfc_main$1), normalizeProps(guardReactiveProps(props)), {\n default: withCtx(() => [\n renderSlot(_ctx.$slots, \"default\")\n ]),\n _: 3\n }, 16);\n };\n }\n});\n\nexport { _sfc_main as _ };\n//# sourceMappingURL=DropdownMenuItemIndicator.js.map\n","import { defineComponent, openBlock, createBlock, unref, normalizeProps, guardReactiveProps, withCtx, renderSlot } from 'vue';\nimport { _ as _sfc_main$1 } from '../Menu/MenuLabel.js';\nimport { u as useForwardExpose } from '../shared/useForwardExpose.js';\n\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"DropdownMenuLabel\",\n props: {\n asChild: { type: Boolean },\n as: {}\n },\n setup(__props) {\n const props = __props;\n useForwardExpose();\n return (_ctx, _cache) => {\n return openBlock(), createBlock(unref(_sfc_main$1), normalizeProps(guardReactiveProps(props)), {\n default: withCtx(() => [\n renderSlot(_ctx.$slots, \"default\")\n ]),\n _: 3\n }, 16);\n };\n }\n});\n\nexport { _sfc_main as _ };\n//# sourceMappingURL=DropdownMenuLabel.js.map\n","import { defineComponent, openBlock, createBlock, unref, normalizeProps, guardReactiveProps, withCtx, renderSlot } from 'vue';\nimport { _ as _sfc_main$1 } from '../Menu/MenuRadioGroup.js';\nimport { u as useEmitAsProps } from '../shared/useEmitAsProps.js';\nimport { u as useForwardExpose } from '../shared/useForwardExpose.js';\n\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"DropdownMenuRadioGroup\",\n props: {\n modelValue: {},\n asChild: { type: Boolean },\n as: {}\n },\n emits: [\"update:modelValue\"],\n setup(__props, { emit: __emit }) {\n const props = __props;\n const emits = __emit;\n const emitsAsProps = useEmitAsProps(emits);\n useForwardExpose();\n return (_ctx, _cache) => {\n return openBlock(), createBlock(unref(_sfc_main$1), normalizeProps(guardReactiveProps({ ...props, ...unref(emitsAsProps) })), {\n default: withCtx(() => [\n renderSlot(_ctx.$slots, \"default\")\n ]),\n _: 3\n }, 16);\n };\n }\n});\n\nexport { _sfc_main as _ };\n//# sourceMappingURL=DropdownMenuRadioGroup.js.map\n","import { defineComponent, openBlock, createBlock, unref, normalizeProps, guardReactiveProps, withCtx, renderSlot } from 'vue';\nimport { _ as _sfc_main$1 } from '../Menu/MenuRadioItem.js';\nimport { u as useForwardPropsEmits } from '../shared/useForwardPropsEmits.js';\nimport { u as useForwardExpose } from '../shared/useForwardExpose.js';\n\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"DropdownMenuRadioItem\",\n props: {\n value: {},\n disabled: { type: Boolean },\n textValue: {},\n asChild: { type: Boolean },\n as: {}\n },\n emits: [\"select\"],\n setup(__props, { emit: __emit }) {\n const props = __props;\n const emits = __emit;\n const forwarded = useForwardPropsEmits(props, emits);\n useForwardExpose();\n return (_ctx, _cache) => {\n return openBlock(), createBlock(unref(_sfc_main$1), normalizeProps(guardReactiveProps(unref(forwarded))), {\n default: withCtx(() => [\n renderSlot(_ctx.$slots, \"default\")\n ]),\n _: 3\n }, 16);\n };\n }\n});\n\nexport { _sfc_main as _ };\n//# sourceMappingURL=DropdownMenuRadioItem.js.map\n","import { defineComponent, openBlock, createBlock, unref, isRef, withCtx, renderSlot } from 'vue';\nimport { useVModel } from '@vueuse/core';\nimport { _ as _sfc_main$1 } from '../Menu/MenuSub.js';\nimport { u as useForwardExpose } from '../shared/useForwardExpose.js';\n\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"DropdownMenuSub\",\n props: {\n defaultOpen: { type: Boolean },\n open: { type: Boolean, default: undefined }\n },\n emits: [\"update:open\"],\n setup(__props, { emit: __emit }) {\n const props = __props;\n const emit = __emit;\n const open = useVModel(props, \"open\", emit, {\n passive: props.open === undefined,\n defaultValue: props.defaultOpen ?? false\n });\n useForwardExpose();\n return (_ctx, _cache) => {\n return openBlock(), createBlock(unref(_sfc_main$1), {\n open: unref(open),\n \"onUpdate:open\": _cache[0] || (_cache[0] = ($event) => isRef(open) ? open.value = $event : null)\n }, {\n default: withCtx(() => [\n renderSlot(_ctx.$slots, \"default\", { open: unref(open) })\n ]),\n _: 3\n }, 8, [\"open\"]);\n };\n }\n});\n\nexport { _sfc_main as _ };\n//# sourceMappingURL=DropdownMenuSub.js.map\n","import { defineComponent, openBlock, createBlock, unref, mergeProps, withCtx, renderSlot } from 'vue';\nimport { _ as _sfc_main$1 } from '../Menu/MenuSubContent.js';\nimport '@floating-ui/vue';\nimport { u as useForwardPropsEmits } from '../shared/useForwardPropsEmits.js';\nimport { u as useForwardExpose } from '../shared/useForwardExpose.js';\n\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"DropdownMenuSubContent\",\n props: {\n forceMount: { type: Boolean },\n loop: { type: Boolean },\n sideOffset: {},\n alignOffset: {},\n avoidCollisions: { type: Boolean },\n collisionBoundary: {},\n collisionPadding: {},\n arrowPadding: {},\n sticky: {},\n hideWhenDetached: { type: Boolean },\n positionStrategy: {},\n updatePositionStrategy: {},\n disableUpdateOnLayoutShift: { type: Boolean },\n prioritizePosition: { type: Boolean },\n reference: {},\n asChild: { type: Boolean },\n as: {}\n },\n emits: [\"escapeKeyDown\", \"pointerDownOutside\", \"focusOutside\", \"interactOutside\", \"entryFocus\", \"openAutoFocus\", \"closeAutoFocus\"],\n setup(__props, { emit: __emit }) {\n const props = __props;\n const emits = __emit;\n const forwarded = useForwardPropsEmits(props, emits);\n useForwardExpose();\n return (_ctx, _cache) => {\n return openBlock(), createBlock(unref(_sfc_main$1), mergeProps(unref(forwarded), { style: {\n \"--reka-dropdown-menu-content-transform-origin\": \"var(--reka-popper-transform-origin)\",\n \"--reka-dropdown-menu-content-available-width\": \"var(--reka-popper-available-width)\",\n \"--reka-dropdown-menu-content-available-height\": \"var(--reka-popper-available-height)\",\n \"--reka-dropdown-menu-trigger-width\": \"var(--reka-popper-anchor-width)\",\n \"--reka-dropdown-menu-trigger-height\": \"var(--reka-popper-anchor-height)\"\n } }), {\n default: withCtx(() => [\n renderSlot(_ctx.$slots, \"default\")\n ]),\n _: 3\n }, 16);\n };\n }\n});\n\nexport { _sfc_main as _ };\n//# sourceMappingURL=DropdownMenuSubContent.js.map\n","import { defineComponent, openBlock, createBlock, unref, normalizeProps, guardReactiveProps, withCtx, renderSlot } from 'vue';\nimport { _ as _sfc_main$1 } from '../Menu/MenuSubTrigger.js';\nimport { u as useForwardExpose } from '../shared/useForwardExpose.js';\n\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"DropdownMenuSubTrigger\",\n props: {\n disabled: { type: Boolean },\n textValue: {},\n asChild: { type: Boolean },\n as: {}\n },\n setup(__props) {\n const props = __props;\n useForwardExpose();\n return (_ctx, _cache) => {\n return openBlock(), createBlock(unref(_sfc_main$1), normalizeProps(guardReactiveProps(props)), {\n default: withCtx(() => [\n renderSlot(_ctx.$slots, \"default\")\n ]),\n _: 3\n }, 16);\n };\n }\n});\n\nexport { _sfc_main as _ };\n//# sourceMappingURL=DropdownMenuSubTrigger.js.map\n","import { ref, watchEffect } from 'vue';\nimport { refAutoReset, createEventHook } from '@vueuse/shared';\n\nfunction useGraceArea(triggerElement, containerElement) {\n const isPointerInTransit = refAutoReset(false, 300);\n const pointerGraceArea = ref(null);\n const pointerExit = createEventHook();\n function handleRemoveGraceArea() {\n pointerGraceArea.value = null;\n isPointerInTransit.value = false;\n }\n function handleCreateGraceArea(event, hoverTarget) {\n const currentTarget = event.currentTarget;\n const exitPoint = { x: event.clientX, y: event.clientY };\n const exitSide = getExitSideFromRect(exitPoint, currentTarget.getBoundingClientRect());\n const paddedExitPoints = getPaddedExitPoints(exitPoint, exitSide);\n const hoverTargetPoints = getPointsFromRect(hoverTarget.getBoundingClientRect());\n const graceArea = getHull([...paddedExitPoints, ...hoverTargetPoints]);\n pointerGraceArea.value = graceArea;\n isPointerInTransit.value = true;\n }\n watchEffect((cleanupFn) => {\n if (triggerElement.value && containerElement.value) {\n const handleTriggerLeave = (event) => handleCreateGraceArea(event, containerElement.value);\n const handleContentLeave = (event) => handleCreateGraceArea(event, triggerElement.value);\n triggerElement.value.addEventListener(\"pointerleave\", handleTriggerLeave);\n containerElement.value.addEventListener(\"pointerleave\", handleContentLeave);\n cleanupFn(() => {\n triggerElement.value?.removeEventListener(\"pointerleave\", handleTriggerLeave);\n containerElement.value?.removeEventListener(\"pointerleave\", handleContentLeave);\n });\n }\n });\n watchEffect((cleanupFn) => {\n if (pointerGraceArea.value) {\n const handleTrackPointerGrace = (event) => {\n if (!pointerGraceArea.value)\n return;\n const target = event.target;\n const pointerPosition = { x: event.clientX, y: event.clientY };\n const hasEnteredTarget = triggerElement.value?.contains(target) || containerElement.value?.contains(target);\n const isPointerOutsideGraceArea = !isPointInPolygon(pointerPosition, pointerGraceArea.value);\n const isAnotherGraceAreaTrigger = !!target.closest(\"[data-grace-area-trigger]\");\n if (hasEnteredTarget) {\n handleRemoveGraceArea();\n } else if (isPointerOutsideGraceArea || isAnotherGraceAreaTrigger) {\n handleRemoveGraceArea();\n pointerExit.trigger();\n }\n };\n triggerElement.value?.ownerDocument.addEventListener(\"pointermove\", handleTrackPointerGrace);\n cleanupFn(() => triggerElement.value?.ownerDocument.removeEventListener(\"pointermove\", handleTrackPointerGrace));\n }\n });\n return {\n isPointerInTransit,\n onPointerExit: pointerExit.on\n };\n}\nfunction getExitSideFromRect(point, rect) {\n const top = Math.abs(rect.top - point.y);\n const bottom = Math.abs(rect.bottom - point.y);\n const right = Math.abs(rect.right - point.x);\n const left = Math.abs(rect.left - point.x);\n switch (Math.min(top, bottom, right, left)) {\n case left:\n return \"left\";\n case right:\n return \"right\";\n case top:\n return \"top\";\n case bottom:\n return \"bottom\";\n default:\n throw new Error(\"unreachable\");\n }\n}\nfunction getPaddedExitPoints(exitPoint, exitSide, padding = 5) {\n const paddedExitPoints = [];\n switch (exitSide) {\n case \"top\":\n paddedExitPoints.push(\n { x: exitPoint.x - padding, y: exitPoint.y + padding },\n { x: exitPoint.x + padding, y: exitPoint.y + padding }\n );\n break;\n case \"bottom\":\n paddedExitPoints.push(\n { x: exitPoint.x - padding, y: exitPoint.y - padding },\n { x: exitPoint.x + padding, y: exitPoint.y - padding }\n );\n break;\n case \"left\":\n paddedExitPoints.push(\n { x: exitPoint.x + padding, y: exitPoint.y - padding },\n { x: exitPoint.x + padding, y: exitPoint.y + padding }\n );\n break;\n case \"right\":\n paddedExitPoints.push(\n { x: exitPoint.x - padding, y: exitPoint.y - padding },\n { x: exitPoint.x - padding, y: exitPoint.y + padding }\n );\n break;\n }\n return paddedExitPoints;\n}\nfunction getPointsFromRect(rect) {\n const { top, right, bottom, left } = rect;\n return [\n { x: left, y: top },\n { x: right, y: top },\n { x: right, y: bottom },\n { x: left, y: bottom }\n ];\n}\nfunction isPointInPolygon(point, polygon) {\n const { x, y } = point;\n let inside = false;\n for (let i = 0, j = polygon.length - 1; i < polygon.length; j = i++) {\n const xi = polygon[i].x;\n const yi = polygon[i].y;\n const xj = polygon[j].x;\n const yj = polygon[j].y;\n const intersect = yi > y !== yj > y && x < (xj - xi) * (y - yi) / (yj - yi) + xi;\n if (intersect)\n inside = !inside;\n }\n return inside;\n}\nfunction getHull(points) {\n const newPoints = points.slice();\n newPoints.sort((a, b) => {\n if (a.x < b.x)\n return -1;\n else if (a.x > b.x)\n return 1;\n else if (a.y < b.y)\n return -1;\n else if (a.y > b.y)\n return 1;\n else return 0;\n });\n return getHullPresorted(newPoints);\n}\nfunction getHullPresorted(points) {\n if (points.length <= 1)\n return points.slice();\n const upperHull = [];\n for (let i = 0; i < points.length; i++) {\n const p = points[i];\n while (upperHull.length >= 2) {\n const q = upperHull[upperHull.length - 1];\n const r = upperHull[upperHull.length - 2];\n if ((q.x - r.x) * (p.y - r.y) >= (q.y - r.y) * (p.x - r.x))\n upperHull.pop();\n else break;\n }\n upperHull.push(p);\n }\n upperHull.pop();\n const lowerHull = [];\n for (let i = points.length - 1; i >= 0; i--) {\n const p = points[i];\n while (lowerHull.length >= 2) {\n const q = lowerHull[lowerHull.length - 1];\n const r = lowerHull[lowerHull.length - 2];\n if ((q.x - r.x) * (p.y - r.y) >= (q.y - r.y) * (p.x - r.x))\n lowerHull.pop();\n else break;\n }\n lowerHull.push(p);\n }\n lowerHull.pop();\n if (upperHull.length === 1 && lowerHull.length === 1 && upperHull[0].x === lowerHull[0].x && upperHull[0].y === lowerHull[0].y) {\n return upperHull;\n } else {\n return upperHull.concat(lowerHull);\n }\n}\n\nexport { useGraceArea as u };\n//# sourceMappingURL=useGraceArea.js.map\n","import { defineComponent, openBlock, createBlock, unref, mergeProps, withCtx, renderSlot } from 'vue';\nimport { u as useForwardExpose } from '../shared/useForwardExpose.js';\nimport { P as Primitive } from '../Primitive/Primitive.js';\n\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"Label\",\n props: {\n for: {},\n asChild: { type: Boolean },\n as: { default: \"label\" }\n },\n setup(__props) {\n const props = __props;\n useForwardExpose();\n return (_ctx, _cache) => {\n return openBlock(), createBlock(unref(Primitive), mergeProps(props, {\n onMousedown: _cache[0] || (_cache[0] = (event) => {\n if (!event.defaultPrevented && event.detail > 1) event.preventDefault();\n })\n }), {\n default: withCtx(() => [\n renderSlot(_ctx.$slots, \"default\")\n ]),\n _: 3\n }, 16);\n };\n }\n});\n\nexport { _sfc_main as _ };\n//# sourceMappingURL=Label.js.map\n","function clamp(value, min = Number.NEGATIVE_INFINITY, max = Number.POSITIVE_INFINITY) {\n return Math.min(max, Math.max(min, value));\n}\nfunction roundToStepPrecision(value, step) {\n let roundedValue = value;\n const stepString = step.toString();\n const pointIndex = stepString.indexOf(\".\");\n const precision = pointIndex >= 0 ? stepString.length - pointIndex : 0;\n if (precision > 0) {\n const pow = 10 ** precision;\n roundedValue = Math.round(roundedValue * pow) / pow;\n }\n return roundedValue;\n}\nfunction snapValueToStep(value, min, max, step) {\n min = Number(min);\n max = Number(max);\n const remainder = (value - (Number.isNaN(min) ? 0 : min)) % step;\n let snappedValue = roundToStepPrecision(Math.abs(remainder) * 2 >= step ? value + Math.sign(remainder) * (step - Math.abs(remainder)) : value - remainder, step);\n if (!Number.isNaN(min)) {\n if (snappedValue < min)\n snappedValue = min;\n else if (!Number.isNaN(max) && snappedValue > max)\n snappedValue = min + Math.floor(roundToStepPrecision((max - min) / step, step)) * step;\n } else if (!Number.isNaN(max) && snappedValue > max) {\n snappedValue = Math.floor(roundToStepPrecision(max / step, step)) * step;\n }\n snappedValue = roundToStepPrecision(snappedValue, step);\n return snappedValue;\n}\n\nexport { clamp as c, snapValueToStep as s };\n//# sourceMappingURL=clamp.js.map\n","import { defineComponent, ref, toRefs, openBlock, createBlock, unref, normalizeStyle, withCtx, renderSlot } from 'vue';\nimport { u as useDirection } from '../shared/useDirection.js';\nimport { u as useForwardExpose } from '../shared/useForwardExpose.js';\nimport { P as Primitive } from '../Primitive/Primitive.js';\nimport { c as createContext } from '../shared/createContext.js';\n\nconst [injectScrollAreaRootContext, provideScrollAreaRootContext] = createContext(\"ScrollAreaRoot\");\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"ScrollAreaRoot\",\n props: {\n type: { default: \"hover\" },\n dir: {},\n scrollHideDelay: { default: 600 },\n asChild: { type: Boolean },\n as: {}\n },\n setup(__props, { expose: __expose }) {\n const props = __props;\n const cornerWidth = ref(0);\n const cornerHeight = ref(0);\n const viewport = ref();\n const content = ref();\n const scrollbarX = ref();\n const scrollbarY = ref();\n const scrollbarXEnabled = ref(false);\n const scrollbarYEnabled = ref(false);\n const { type, dir: propDir, scrollHideDelay } = toRefs(props);\n const dir = useDirection(propDir);\n function scrollTop() {\n viewport.value?.scrollTo({\n top: 0\n });\n }\n function scrollTopLeft() {\n viewport.value?.scrollTo({\n top: 0,\n left: 0\n });\n }\n __expose({\n /** Viewport element within ScrollArea */\n viewport,\n /** Scroll viewport to top */\n scrollTop,\n /** Scroll viewport to top-left */\n scrollTopLeft\n });\n const { forwardRef, currentElement: scrollArea } = useForwardExpose();\n provideScrollAreaRootContext({\n type,\n dir,\n scrollHideDelay,\n scrollArea,\n viewport,\n onViewportChange: (el) => {\n viewport.value = el || undefined;\n },\n content,\n onContentChange: (el) => {\n content.value = el;\n },\n scrollbarX,\n scrollbarXEnabled,\n scrollbarY,\n scrollbarYEnabled,\n onScrollbarXChange: (scrollbar) => {\n scrollbarX.value = scrollbar || undefined;\n },\n onScrollbarYChange: (scrollbar) => {\n scrollbarY.value = scrollbar || undefined;\n },\n onScrollbarXEnabledChange: (rendered) => {\n scrollbarXEnabled.value = rendered;\n },\n onScrollbarYEnabledChange: (rendered) => {\n scrollbarYEnabled.value = rendered;\n },\n onCornerWidthChange: (width) => {\n cornerWidth.value = width;\n },\n onCornerHeightChange: (height) => {\n cornerHeight.value = height;\n }\n });\n return (_ctx, _cache) => {\n return openBlock(), createBlock(unref(Primitive), {\n ref: unref(forwardRef),\n \"as-child\": props.asChild,\n as: _ctx.as,\n dir: unref(dir),\n style: normalizeStyle({\n position: \"relative\",\n // Pass corner sizes as CSS vars to reduce re-renders of context consumers\n [\"--reka-scroll-area-corner-width\"]: `${cornerWidth.value}px`,\n [\"--reka-scroll-area-corner-height\"]: `${cornerHeight.value}px`\n })\n }, {\n default: withCtx(() => [\n renderSlot(_ctx.$slots, \"default\")\n ]),\n _: 3\n }, 8, [\"as-child\", \"as\", \"dir\", \"style\"]);\n };\n }\n});\n\nexport { _sfc_main as _, injectScrollAreaRootContext as i };\n//# sourceMappingURL=ScrollAreaRoot.js.map\n","import { defineComponent, toRefs, ref, onMounted, openBlock, createElementBlock, Fragment, createElementVNode, mergeProps, unref, createVNode, normalizeStyle, withCtx, renderSlot, createTextVNode } from 'vue';\nimport { u as useNonce } from '../shared/useNonce.js';\nimport { i as injectScrollAreaRootContext } from './ScrollAreaRoot.js';\nimport { u as useForwardExpose } from '../shared/useForwardExpose.js';\nimport { P as Primitive } from '../Primitive/Primitive.js';\n\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n ...{\n inheritAttrs: false\n },\n __name: \"ScrollAreaViewport\",\n props: {\n nonce: {},\n asChild: { type: Boolean },\n as: {}\n },\n setup(__props, { expose: __expose }) {\n const props = __props;\n const { nonce: propNonce } = toRefs(props);\n const nonce = useNonce(propNonce);\n const rootContext = injectScrollAreaRootContext();\n const viewportElement = ref();\n onMounted(() => {\n rootContext.onViewportChange(viewportElement.value);\n rootContext.onContentChange(contentElement.value);\n });\n __expose({\n viewportElement\n });\n const { forwardRef, currentElement: contentElement } = useForwardExpose();\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(Fragment, null, [\n createElementVNode(\"div\", mergeProps({\n ref_key: \"viewportElement\",\n ref: viewportElement,\n \"data-reka-scroll-area-viewport\": \"\",\n style: {\n /**\n * We don't support `visible` because the intention is to have at least one scrollbar\n * if this component is used and `visible` will behave like `auto` in that case\n * https://developer.mozilla.org/en-US/docs/Web/CSS/overflowed#description\n *\n * We don't handle `auto` because the intention is for the native implementation\n * to be hidden if using this component. We just want to ensure the node is scrollable\n * so could have used either `scroll` or `auto` here. We picked `scroll` to prevent\n * the browser from having to work out whether to render native scrollbars or not,\n * we tell it to with the intention of hiding them in CSS.\n */\n overflowX: unref(rootContext).scrollbarXEnabled.value ? \"scroll\" : \"hidden\",\n overflowY: unref(rootContext).scrollbarYEnabled.value ? \"scroll\" : \"hidden\"\n }\n }, _ctx.$attrs, { tabindex: 0 }), [\n createVNode(unref(Primitive), {\n ref: unref(forwardRef),\n style: normalizeStyle({\n /**\n * When horizontal scrollbar is visible: this element should be at least\n * as wide as its children for size calculations to work correctly.\n *\n * When horizontal scrollbar is NOT visible: this element's width should\n * be constrained by the parent container to enable `text-overflow: ellipsis`\n */\n minWidth: unref(rootContext).scrollbarXEnabled.value ? \"fit-content\" : undefined\n }),\n \"as-child\": props.asChild,\n as: _ctx.as\n }, {\n default: withCtx(() => [\n renderSlot(_ctx.$slots, \"default\")\n ]),\n _: 3\n }, 8, [\"style\", \"as-child\", \"as\"])\n ], 16),\n createVNode(unref(Primitive), {\n as: \"style\",\n nonce: unref(nonce)\n }, {\n default: withCtx(() => _cache[0] || (_cache[0] = [\n createTextVNode(\" /* Hide scrollbars cross-browser and enable momentum scroll for touch devices */ [data-reka-scroll-area-viewport] { scrollbar-width:none; -ms-overflow-style:none; -webkit-overflow-scrolling:touch; } [data-reka-scroll-area-viewport]::-webkit-scrollbar { display:none; } \")\n ])),\n _: 1\n }, 8, [\"nonce\"])\n ], 64);\n };\n }\n});\n\nexport { _sfc_main as _ };\n//# sourceMappingURL=ScrollAreaViewport.js.map\n","import { c as clamp } from '../shared/clamp.js';\n\nfunction linearScale(input, output) {\n return (value) => {\n if (input[0] === input[1] || output[0] === output[1])\n return output[0];\n const ratio = (output[1] - output[0]) / (input[1] - input[0]);\n return output[0] + ratio * (value - input[0]);\n };\n}\nfunction getThumbSize(sizes) {\n const ratio = getThumbRatio(sizes.viewport, sizes.content);\n const scrollbarPadding = sizes.scrollbar.paddingStart + sizes.scrollbar.paddingEnd;\n const thumbSize = (sizes.scrollbar.size - scrollbarPadding) * ratio;\n return Math.max(thumbSize, 18);\n}\nfunction getThumbRatio(viewportSize, contentSize) {\n const ratio = viewportSize / contentSize;\n return Number.isNaN(ratio) ? 0 : ratio;\n}\nfunction addUnlinkedScrollListener(node, handler = () => {\n}) {\n let prevPosition = { left: node.scrollLeft, top: node.scrollTop };\n let rAF = 0;\n (function loop() {\n const position = { left: node.scrollLeft, top: node.scrollTop };\n const isHorizontalScroll = prevPosition.left !== position.left;\n const isVerticalScroll = prevPosition.top !== position.top;\n if (isHorizontalScroll || isVerticalScroll)\n handler();\n prevPosition = position;\n rAF = window.requestAnimationFrame(loop);\n })();\n return () => window.cancelAnimationFrame(rAF);\n}\nfunction getThumbOffsetFromScroll(scrollPos, sizes, dir = \"ltr\") {\n const thumbSizePx = getThumbSize(sizes);\n const scrollbarPadding = sizes.scrollbar.paddingStart + sizes.scrollbar.paddingEnd;\n const scrollbar = sizes.scrollbar.size - scrollbarPadding;\n const maxScrollPos = sizes.content - sizes.viewport;\n const maxThumbPos = scrollbar - thumbSizePx;\n const scrollClampRange = dir === \"ltr\" ? [0, maxScrollPos] : [maxScrollPos * -1, 0];\n const scrollWithoutMomentum = clamp(\n scrollPos,\n scrollClampRange[0],\n scrollClampRange[1]\n );\n const interpolate = linearScale([0, maxScrollPos], [0, maxThumbPos]);\n return interpolate(scrollWithoutMomentum);\n}\nfunction toInt(value) {\n return value ? Number.parseInt(value, 10) : 0;\n}\nfunction getScrollPositionFromPointer(pointerPos, pointerOffset, sizes, dir = \"ltr\") {\n const thumbSizePx = getThumbSize(sizes);\n const thumbCenter = thumbSizePx / 2;\n const offset = pointerOffset || thumbCenter;\n const thumbOffsetFromEnd = thumbSizePx - offset;\n const minPointerPos = sizes.scrollbar.paddingStart + offset;\n const maxPointerPos = sizes.scrollbar.size - sizes.scrollbar.paddingEnd - thumbOffsetFromEnd;\n const maxScrollPos = sizes.content - sizes.viewport;\n const scrollRange = dir === \"ltr\" ? [0, maxScrollPos] : [maxScrollPos * -1, 0];\n const interpolate = linearScale(\n [minPointerPos, maxPointerPos],\n scrollRange\n );\n return interpolate(pointerPos);\n}\nfunction isScrollingWithinScrollbarBounds(scrollPos, maxScrollPos) {\n return scrollPos > 0 && scrollPos < maxScrollPos;\n}\n\nexport { getThumbOffsetFromScroll as a, getScrollPositionFromPointer as b, getThumbSize as c, addUnlinkedScrollListener as d, getThumbRatio as g, isScrollingWithinScrollbarBounds as i, toInt as t };\n//# sourceMappingURL=utils.js.map\n","import { defineComponent, ref, onMounted, onUnmounted, openBlock, createBlock, unref, withCtx, renderSlot } from 'vue';\nimport { useResizeObserver } from '@vueuse/core';\nimport { t as toInt } from './utils.js';\nimport { i as injectScrollAreaScrollbarVisibleContext } from './ScrollAreaScrollbarVisible.js';\nimport { i as injectScrollAreaScrollbarContext } from './ScrollAreaScrollbar.js';\nimport { u as useForwardExpose } from '../shared/useForwardExpose.js';\nimport { P as Primitive } from '../Primitive/Primitive.js';\nimport { i as injectScrollAreaRootContext } from './ScrollAreaRoot.js';\n\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"ScrollAreaScrollbarImpl\",\n props: {\n isHorizontal: { type: Boolean }\n },\n emits: [\"onDragScroll\", \"onWheelScroll\", \"onThumbPointerDown\"],\n setup(__props, { emit: __emit }) {\n const props = __props;\n const emit = __emit;\n const rootContext = injectScrollAreaRootContext();\n const scrollbarVisibleContext = injectScrollAreaScrollbarVisibleContext();\n const scrollbarContext = injectScrollAreaScrollbarContext();\n const { forwardRef, currentElement: scrollbar } = useForwardExpose();\n const prevWebkitUserSelectRef = ref(\"\");\n const rectRef = ref();\n function handleDragScroll(event) {\n if (rectRef.value) {\n const x = event.clientX - rectRef.value?.left;\n const y = event.clientY - rectRef.value?.top;\n emit(\"onDragScroll\", { x, y });\n }\n }\n function handlePointerDown(event) {\n const mainPointer = 0;\n if (event.button === mainPointer) {\n const element = event.target;\n element.setPointerCapture(event.pointerId);\n rectRef.value = scrollbar.value.getBoundingClientRect();\n prevWebkitUserSelectRef.value = document.body.style.webkitUserSelect;\n document.body.style.webkitUserSelect = \"none\";\n if (rootContext.viewport)\n rootContext.viewport.value.style.scrollBehavior = \"auto\";\n handleDragScroll(event);\n }\n }\n function handlePointerMove(event) {\n handleDragScroll(event);\n }\n function handlePointerUp(event) {\n const element = event.target;\n if (element.hasPointerCapture(event.pointerId))\n element.releasePointerCapture(event.pointerId);\n document.body.style.webkitUserSelect = prevWebkitUserSelectRef.value;\n if (rootContext.viewport)\n rootContext.viewport.value.style.scrollBehavior = \"\";\n rectRef.value = undefined;\n }\n function handleWheel(event) {\n const element = event.target;\n const isScrollbarWheel = scrollbar.value?.contains(element);\n const maxScrollPos = scrollbarVisibleContext.sizes.value.content - scrollbarVisibleContext.sizes.value.viewport;\n if (isScrollbarWheel)\n scrollbarVisibleContext.handleWheelScroll(event, maxScrollPos);\n }\n onMounted(() => {\n document.addEventListener(\"wheel\", handleWheel, { passive: false });\n });\n onUnmounted(() => {\n document.removeEventListener(\"wheel\", handleWheel);\n });\n function handleSizeChange() {\n if (!scrollbar.value)\n return;\n if (props.isHorizontal) {\n scrollbarVisibleContext.handleSizeChange({\n content: rootContext.viewport.value?.scrollWidth ?? 0,\n viewport: rootContext.viewport.value?.offsetWidth ?? 0,\n scrollbar: {\n size: scrollbar.value.clientWidth ?? 0,\n paddingStart: toInt(getComputedStyle(scrollbar.value).paddingLeft),\n paddingEnd: toInt(getComputedStyle(scrollbar.value).paddingRight)\n }\n });\n } else {\n scrollbarVisibleContext.handleSizeChange({\n content: rootContext.viewport.value?.scrollHeight ?? 0,\n viewport: rootContext.viewport.value?.offsetHeight ?? 0,\n scrollbar: {\n size: scrollbar.value?.clientHeight ?? 0,\n paddingStart: toInt(getComputedStyle(scrollbar.value).paddingLeft),\n paddingEnd: toInt(getComputedStyle(scrollbar.value).paddingRight)\n }\n });\n }\n }\n useResizeObserver(scrollbar, handleSizeChange);\n useResizeObserver(rootContext.content, handleSizeChange);\n return (_ctx, _cache) => {\n return openBlock(), createBlock(unref(Primitive), {\n ref: unref(forwardRef),\n style: { \"position\": \"absolute\" },\n \"data-scrollbarimpl\": \"\",\n as: unref(scrollbarContext).as.value,\n \"as-child\": unref(scrollbarContext).asChild.value,\n onPointerdown: handlePointerDown,\n onPointermove: handlePointerMove,\n onPointerup: handlePointerUp\n }, {\n default: withCtx(() => [\n renderSlot(_ctx.$slots, \"default\")\n ]),\n _: 3\n }, 8, [\"as\", \"as-child\"]);\n };\n }\n});\n\nexport { _sfc_main as _ };\n//# sourceMappingURL=ScrollAreaScrollbarImpl.js.map\n","import { defineComponent, onMounted, computed, openBlock, createBlock, unref, normalizeStyle, withCtx, renderSlot } from 'vue';\nimport { _ as _sfc_main$1 } from './ScrollAreaScrollbarImpl.js';\nimport { c as getThumbSize } from './utils.js';\nimport { u as useForwardExpose } from '../shared/useForwardExpose.js';\nimport { i as injectScrollAreaRootContext } from './ScrollAreaRoot.js';\nimport { i as injectScrollAreaScrollbarVisibleContext } from './ScrollAreaScrollbarVisible.js';\n\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"ScrollAreaScrollbarX\",\n setup(__props) {\n const rootContext = injectScrollAreaRootContext();\n const scrollbarVisibleContext = injectScrollAreaScrollbarVisibleContext();\n const { forwardRef, currentElement: scrollbarElement } = useForwardExpose();\n onMounted(() => {\n if (scrollbarElement.value)\n rootContext.onScrollbarXChange(scrollbarElement.value);\n });\n const sizes = computed(() => scrollbarVisibleContext.sizes.value);\n return (_ctx, _cache) => {\n return openBlock(), createBlock(_sfc_main$1, {\n ref: unref(forwardRef),\n \"is-horizontal\": true,\n \"data-orientation\": \"horizontal\",\n style: normalizeStyle({\n bottom: 0,\n left: unref(rootContext).dir.value === \"rtl\" ? \"var(--reka-scroll-area-corner-width)\" : 0,\n right: unref(rootContext).dir.value === \"ltr\" ? \"var(--reka-scroll-area-corner-width)\" : 0,\n [\"--reka-scroll-area-thumb-width\"]: sizes.value ? `${unref(getThumbSize)(sizes.value)}px` : undefined\n }),\n onOnDragScroll: _cache[0] || (_cache[0] = ($event) => unref(scrollbarVisibleContext).onDragScroll($event.x))\n }, {\n default: withCtx(() => [\n renderSlot(_ctx.$slots, \"default\")\n ]),\n _: 3\n }, 8, [\"style\"]);\n };\n }\n});\n\nexport { _sfc_main as _ };\n//# sourceMappingURL=ScrollAreaScrollbarX.js.map\n","import { defineComponent, onMounted, computed, openBlock, createBlock, unref, normalizeStyle, withCtx, renderSlot } from 'vue';\nimport { _ as _sfc_main$1 } from './ScrollAreaScrollbarImpl.js';\nimport { c as getThumbSize } from './utils.js';\nimport { u as useForwardExpose } from '../shared/useForwardExpose.js';\nimport { i as injectScrollAreaRootContext } from './ScrollAreaRoot.js';\nimport { i as injectScrollAreaScrollbarVisibleContext } from './ScrollAreaScrollbarVisible.js';\n\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"ScrollAreaScrollbarY\",\n setup(__props) {\n const rootContext = injectScrollAreaRootContext();\n const scrollbarVisibleContext = injectScrollAreaScrollbarVisibleContext();\n const { forwardRef, currentElement: scrollbarElement } = useForwardExpose();\n onMounted(() => {\n if (scrollbarElement.value)\n rootContext.onScrollbarYChange(scrollbarElement.value);\n });\n const sizes = computed(() => scrollbarVisibleContext.sizes.value);\n return (_ctx, _cache) => {\n return openBlock(), createBlock(_sfc_main$1, {\n ref: unref(forwardRef),\n \"is-horizontal\": false,\n \"data-orientation\": \"vertical\",\n style: normalizeStyle({\n top: 0,\n right: unref(rootContext).dir.value === \"ltr\" ? 0 : undefined,\n left: unref(rootContext).dir.value === \"rtl\" ? 0 : undefined,\n bottom: \"var(--reka-scroll-area-corner-height)\",\n [\"--reka-scroll-area-thumb-height\"]: sizes.value ? `${unref(getThumbSize)(sizes.value)}px` : undefined\n }),\n onOnDragScroll: _cache[0] || (_cache[0] = ($event) => unref(scrollbarVisibleContext).onDragScroll($event.y))\n }, {\n default: withCtx(() => [\n renderSlot(_ctx.$slots, \"default\")\n ]),\n _: 3\n }, 8, [\"style\"]);\n };\n }\n});\n\nexport { _sfc_main as _ };\n//# sourceMappingURL=ScrollAreaScrollbarY.js.map\n","import { defineComponent, ref, computed, openBlock, createBlock, mergeProps, unref, withCtx, renderSlot } from 'vue';\nimport { _ as _sfc_main$1 } from './ScrollAreaScrollbarX.js';\nimport { _ as _sfc_main$2 } from './ScrollAreaScrollbarY.js';\nimport { g as getThumbRatio, i as isScrollingWithinScrollbarBounds, a as getThumbOffsetFromScroll, b as getScrollPositionFromPointer } from './utils.js';\nimport { u as useForwardExpose } from '../shared/useForwardExpose.js';\nimport { c as createContext } from '../shared/createContext.js';\nimport { i as injectScrollAreaRootContext } from './ScrollAreaRoot.js';\nimport { i as injectScrollAreaScrollbarContext } from './ScrollAreaScrollbar.js';\n\nconst [injectScrollAreaScrollbarVisibleContext, provideScrollAreaScrollbarVisibleContext] = createContext(\"ScrollAreaScrollbarVisible\");\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"ScrollAreaScrollbarVisible\",\n setup(__props) {\n const rootContext = injectScrollAreaRootContext();\n const scrollbarContext = injectScrollAreaScrollbarContext();\n const { forwardRef } = useForwardExpose();\n const sizes = ref({\n content: 0,\n viewport: 0,\n scrollbar: { size: 0, paddingStart: 0, paddingEnd: 0 }\n });\n const hasThumb = computed(() => {\n const thumbRatio = getThumbRatio(sizes.value.viewport, sizes.value.content);\n return Boolean(thumbRatio > 0 && thumbRatio < 1);\n });\n const thumbRef = ref();\n const pointerOffset = ref(0);\n function handleWheelScroll(event, payload) {\n if (isShowingScrollbarX.value) {\n const scrollPos = rootContext.viewport.value.scrollLeft + event.deltaY;\n rootContext.viewport.value.scrollLeft = scrollPos;\n if (isScrollingWithinScrollbarBounds(scrollPos, payload))\n event.preventDefault();\n } else {\n const scrollPos = rootContext.viewport.value.scrollTop + event.deltaY;\n rootContext.viewport.value.scrollTop = scrollPos;\n if (isScrollingWithinScrollbarBounds(scrollPos, payload))\n event.preventDefault();\n }\n }\n function handleThumbDown(event, payload) {\n if (isShowingScrollbarX.value)\n pointerOffset.value = payload.x;\n else pointerOffset.value = payload.y;\n }\n function handleThumbUp(event) {\n pointerOffset.value = 0;\n }\n function handleSizeChange(payload) {\n sizes.value = payload;\n }\n function getScrollPosition(pointerPos, dir) {\n return getScrollPositionFromPointer(\n pointerPos,\n pointerOffset.value,\n sizes.value,\n dir\n );\n }\n const isShowingScrollbarX = computed(\n () => scrollbarContext.isHorizontal.value\n );\n function onDragScroll(payload) {\n if (isShowingScrollbarX.value) {\n rootContext.viewport.value.scrollLeft = getScrollPosition(\n payload,\n rootContext.dir.value\n );\n } else {\n rootContext.viewport.value.scrollTop = getScrollPosition(payload);\n }\n }\n function onThumbPositionChange() {\n if (isShowingScrollbarX.value) {\n if (rootContext.viewport.value && thumbRef.value) {\n const scrollPos = rootContext.viewport.value.scrollLeft;\n const offset = getThumbOffsetFromScroll(\n scrollPos,\n sizes.value,\n rootContext.dir.value\n );\n thumbRef.value.style.transform = `translate3d(${offset}px, 0, 0)`;\n }\n } else {\n if (rootContext.viewport.value && thumbRef.value) {\n const scrollPos = rootContext.viewport.value.scrollTop;\n const offset = getThumbOffsetFromScroll(scrollPos, sizes.value);\n thumbRef.value.style.transform = `translate3d(0, ${offset}px, 0)`;\n }\n }\n }\n function onThumbChange(element) {\n thumbRef.value = element;\n }\n provideScrollAreaScrollbarVisibleContext({\n sizes,\n hasThumb,\n handleWheelScroll,\n handleThumbDown,\n handleThumbUp,\n handleSizeChange,\n onThumbPositionChange,\n onThumbChange,\n onDragScroll\n });\n return (_ctx, _cache) => {\n return isShowingScrollbarX.value ? (openBlock(), createBlock(_sfc_main$1, mergeProps({ key: 0 }, _ctx.$attrs, { ref: unref(forwardRef) }), {\n default: withCtx(() => [\n renderSlot(_ctx.$slots, \"default\")\n ]),\n _: 3\n }, 16)) : (openBlock(), createBlock(_sfc_main$2, mergeProps({ key: 1 }, _ctx.$attrs, { ref: unref(forwardRef) }), {\n default: withCtx(() => [\n renderSlot(_ctx.$slots, \"default\")\n ]),\n _: 3\n }, 16));\n };\n }\n});\n\nexport { _sfc_main as _, injectScrollAreaScrollbarVisibleContext as i };\n//# sourceMappingURL=ScrollAreaScrollbarVisible.js.map\n","import { defineComponent, ref, onMounted, openBlock, createBlock, unref, withCtx, createVNode, mergeProps, renderSlot } from 'vue';\nimport { useDebounceFn, useResizeObserver } from '@vueuse/core';\nimport { _ as _sfc_main$1 } from './ScrollAreaScrollbarVisible.js';\nimport { u as useForwardExpose } from '../shared/useForwardExpose.js';\nimport { P as Presence } from '../Presence/Presence.js';\nimport { i as injectScrollAreaRootContext } from './ScrollAreaRoot.js';\nimport { i as injectScrollAreaScrollbarContext } from './ScrollAreaScrollbar.js';\n\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"ScrollAreaScrollbarAuto\",\n props: {\n forceMount: { type: Boolean }\n },\n setup(__props) {\n const rootContext = injectScrollAreaRootContext();\n const scrollbarContext = injectScrollAreaScrollbarContext();\n const { forwardRef } = useForwardExpose();\n const visible = ref(false);\n const handleResize = useDebounceFn(() => {\n if (rootContext.viewport.value) {\n const isOverflowX = rootContext.viewport.value.offsetWidth < rootContext.viewport.value.scrollWidth;\n const isOverflowY = rootContext.viewport.value.offsetHeight < rootContext.viewport.value.scrollHeight;\n visible.value = scrollbarContext.isHorizontal.value ? isOverflowX : isOverflowY;\n }\n }, 10);\n onMounted(() => handleResize());\n useResizeObserver(rootContext.viewport, handleResize);\n useResizeObserver(rootContext.content, handleResize);\n return (_ctx, _cache) => {\n return openBlock(), createBlock(unref(Presence), {\n present: _ctx.forceMount || visible.value\n }, {\n default: withCtx(() => [\n createVNode(_sfc_main$1, mergeProps(_ctx.$attrs, {\n ref: unref(forwardRef),\n \"data-state\": visible.value ? \"visible\" : \"hidden\"\n }), {\n default: withCtx(() => [\n renderSlot(_ctx.$slots, \"default\")\n ]),\n _: 3\n }, 16, [\"data-state\"])\n ]),\n _: 3\n }, 8, [\"present\"]);\n };\n }\n});\n\nexport { _sfc_main as _ };\n//# sourceMappingURL=ScrollAreaScrollbarAuto.js.map\n","import { defineComponent, ref, onMounted, onUnmounted, openBlock, createBlock, unref, withCtx, createVNode, mergeProps, renderSlot } from 'vue';\nimport { _ as _sfc_main$1 } from './ScrollAreaScrollbarAuto.js';\nimport { u as useForwardExpose } from '../shared/useForwardExpose.js';\nimport { P as Presence } from '../Presence/Presence.js';\nimport { i as injectScrollAreaRootContext } from './ScrollAreaRoot.js';\n\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n ...{\n inheritAttrs: false\n },\n __name: \"ScrollAreaScrollbarHover\",\n props: {\n forceMount: { type: Boolean }\n },\n setup(__props) {\n const rootContext = injectScrollAreaRootContext();\n const { forwardRef } = useForwardExpose();\n let timeout;\n const visible = ref(false);\n function handlePointerEnter() {\n window.clearTimeout(timeout);\n visible.value = true;\n }\n function handlePointerLeave() {\n timeout = window.setTimeout(() => {\n visible.value = false;\n }, rootContext.scrollHideDelay.value);\n }\n onMounted(() => {\n const scrollArea = rootContext.scrollArea.value;\n if (scrollArea) {\n scrollArea.addEventListener(\"pointerenter\", handlePointerEnter);\n scrollArea.addEventListener(\"pointerleave\", handlePointerLeave);\n }\n });\n onUnmounted(() => {\n const scrollArea = rootContext.scrollArea.value;\n if (scrollArea) {\n window.clearTimeout(timeout);\n scrollArea.removeEventListener(\"pointerenter\", handlePointerEnter);\n scrollArea.removeEventListener(\"pointerleave\", handlePointerLeave);\n }\n });\n return (_ctx, _cache) => {\n return openBlock(), createBlock(unref(Presence), {\n present: _ctx.forceMount || visible.value\n }, {\n default: withCtx(() => [\n createVNode(_sfc_main$1, mergeProps(_ctx.$attrs, {\n ref: unref(forwardRef),\n \"data-state\": visible.value ? \"visible\" : \"hidden\"\n }), {\n default: withCtx(() => [\n renderSlot(_ctx.$slots, \"default\")\n ]),\n _: 3\n }, 16, [\"data-state\"])\n ]),\n _: 3\n }, 8, [\"present\"]);\n };\n }\n});\n\nexport { _sfc_main as _ };\n//# sourceMappingURL=ScrollAreaScrollbarHover.js.map\n","import { defineComponent, watchEffect, openBlock, createBlock, unref, withCtx, createVNode, mergeProps, renderSlot } from 'vue';\nimport { useDebounceFn } from '@vueuse/core';\nimport { u as useStateMachine } from '../shared/useStateMachine.js';\nimport { _ as _sfc_main$1 } from './ScrollAreaScrollbarVisible.js';\nimport { u as useForwardExpose } from '../shared/useForwardExpose.js';\nimport { P as Presence } from '../Presence/Presence.js';\nimport { i as injectScrollAreaRootContext } from './ScrollAreaRoot.js';\nimport { i as injectScrollAreaScrollbarContext } from './ScrollAreaScrollbar.js';\n\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"ScrollAreaScrollbarScroll\",\n props: {\n forceMount: { type: Boolean }\n },\n setup(__props) {\n const rootContext = injectScrollAreaRootContext();\n const scrollbarContext = injectScrollAreaScrollbarContext();\n const { forwardRef } = useForwardExpose();\n const { state, dispatch } = useStateMachine(\"hidden\", {\n hidden: {\n SCROLL: \"scrolling\"\n },\n scrolling: {\n SCROLL_END: \"idle\",\n POINTER_ENTER: \"interacting\"\n },\n interacting: {\n SCROLL: \"interacting\",\n POINTER_LEAVE: \"idle\"\n },\n idle: {\n HIDE: \"hidden\",\n SCROLL: \"scrolling\",\n POINTER_ENTER: \"interacting\"\n }\n });\n watchEffect((onCleanup) => {\n if (state.value === \"idle\") {\n const timeId = window.setTimeout(\n () => dispatch(\"HIDE\"),\n rootContext.scrollHideDelay.value\n );\n onCleanup(() => {\n window.clearTimeout(timeId);\n });\n }\n });\n const debounceScrollEnd = useDebounceFn(() => dispatch(\"SCROLL_END\"), 100);\n watchEffect((onCleanup) => {\n const viewport = rootContext.viewport.value;\n const scrollDirection = scrollbarContext.isHorizontal.value ? \"scrollLeft\" : \"scrollTop\";\n if (viewport) {\n let prevScrollPos = viewport[scrollDirection];\n const handleScroll = () => {\n const scrollPos = viewport[scrollDirection];\n const hasScrollInDirectionChanged = prevScrollPos !== scrollPos;\n if (hasScrollInDirectionChanged) {\n dispatch(\"SCROLL\");\n debounceScrollEnd();\n }\n prevScrollPos = scrollPos;\n };\n viewport.addEventListener(\"scroll\", handleScroll);\n onCleanup(() => {\n viewport.removeEventListener(\"scroll\", handleScroll);\n });\n }\n });\n return (_ctx, _cache) => {\n return openBlock(), createBlock(unref(Presence), {\n present: _ctx.forceMount || unref(state) !== \"hidden\"\n }, {\n default: withCtx(() => [\n createVNode(_sfc_main$1, mergeProps(_ctx.$attrs, { ref: unref(forwardRef) }), {\n default: withCtx(() => [\n renderSlot(_ctx.$slots, \"default\")\n ]),\n _: 3\n }, 16)\n ]),\n _: 3\n }, 8, [\"present\"]);\n };\n }\n});\n\nexport { _sfc_main as _ };\n//# sourceMappingURL=ScrollAreaScrollbarScroll.js.map\n","import { defineComponent, computed, watch, onUnmounted, toRefs, unref, openBlock, createBlock, mergeProps, withCtx, renderSlot, createCommentVNode } from 'vue';\nimport { _ as _sfc_main$1 } from './ScrollAreaScrollbarHover.js';\nimport { _ as _sfc_main$2 } from './ScrollAreaScrollbarScroll.js';\nimport { _ as _sfc_main$3 } from './ScrollAreaScrollbarAuto.js';\nimport { _ as _sfc_main$4 } from './ScrollAreaScrollbarVisible.js';\nimport { u as useForwardExpose } from '../shared/useForwardExpose.js';\nimport { c as createContext } from '../shared/createContext.js';\nimport { i as injectScrollAreaRootContext } from './ScrollAreaRoot.js';\n\nconst [injectScrollAreaScrollbarContext, provideScrollAreaScrollbarContext] = createContext(\"ScrollAreaScrollbar\");\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n ...{\n inheritAttrs: false\n },\n __name: \"ScrollAreaScrollbar\",\n props: {\n orientation: { default: \"vertical\" },\n forceMount: { type: Boolean },\n asChild: { type: Boolean },\n as: { default: \"div\" }\n },\n setup(__props) {\n const props = __props;\n const { forwardRef } = useForwardExpose();\n const rootContext = injectScrollAreaRootContext();\n const isHorizontal = computed(() => props.orientation === \"horizontal\");\n watch(\n isHorizontal,\n () => {\n if (isHorizontal.value)\n rootContext.onScrollbarXEnabledChange(true);\n else rootContext.onScrollbarYEnabledChange(true);\n },\n { immediate: true }\n );\n onUnmounted(() => {\n rootContext.onScrollbarXEnabledChange(false);\n rootContext.onScrollbarYEnabledChange(false);\n });\n const { orientation, forceMount, asChild, as } = toRefs(props);\n provideScrollAreaScrollbarContext({\n orientation,\n forceMount,\n isHorizontal,\n as,\n asChild\n });\n return (_ctx, _cache) => {\n return unref(rootContext).type.value === \"hover\" ? (openBlock(), createBlock(_sfc_main$1, mergeProps({ key: 0 }, _ctx.$attrs, {\n ref: unref(forwardRef),\n \"force-mount\": unref(forceMount)\n }), {\n default: withCtx(() => [\n renderSlot(_ctx.$slots, \"default\")\n ]),\n _: 3\n }, 16, [\"force-mount\"])) : unref(rootContext).type.value === \"scroll\" ? (openBlock(), createBlock(_sfc_main$2, mergeProps({ key: 1 }, _ctx.$attrs, {\n ref: unref(forwardRef),\n \"force-mount\": unref(forceMount)\n }), {\n default: withCtx(() => [\n renderSlot(_ctx.$slots, \"default\")\n ]),\n _: 3\n }, 16, [\"force-mount\"])) : unref(rootContext).type.value === \"auto\" ? (openBlock(), createBlock(_sfc_main$3, mergeProps({ key: 2 }, _ctx.$attrs, {\n ref: unref(forwardRef),\n \"force-mount\": unref(forceMount)\n }), {\n default: withCtx(() => [\n renderSlot(_ctx.$slots, \"default\")\n ]),\n _: 3\n }, 16, [\"force-mount\"])) : unref(rootContext).type.value === \"always\" ? (openBlock(), createBlock(_sfc_main$4, mergeProps({ key: 3 }, _ctx.$attrs, {\n ref: unref(forwardRef),\n \"data-state\": \"visible\"\n }), {\n default: withCtx(() => [\n renderSlot(_ctx.$slots, \"default\")\n ]),\n _: 3\n }, 16)) : createCommentVNode(\"\", true);\n };\n }\n});\n\nexport { _sfc_main as _, injectScrollAreaScrollbarContext as i };\n//# sourceMappingURL=ScrollAreaScrollbar.js.map\n","import { defineComponent, ref, computed, onUnmounted, openBlock, createBlock, unref, withCtx, renderSlot } from 'vue';\nimport { watchOnce } from '@vueuse/core';\nimport { d as addUnlinkedScrollListener } from './utils.js';\nimport { u as useForwardExpose } from '../shared/useForwardExpose.js';\nimport { P as Primitive } from '../Primitive/Primitive.js';\nimport { i as injectScrollAreaRootContext } from './ScrollAreaRoot.js';\nimport { i as injectScrollAreaScrollbarVisibleContext } from './ScrollAreaScrollbarVisible.js';\n\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"ScrollAreaThumb\",\n props: {\n asChild: { type: Boolean },\n as: {}\n },\n setup(__props) {\n const props = __props;\n const rootContext = injectScrollAreaRootContext();\n const scrollbarContextVisible = injectScrollAreaScrollbarVisibleContext();\n function handlePointerDown(event) {\n const thumb = event.target;\n const thumbRect = thumb.getBoundingClientRect();\n const x = event.clientX - thumbRect.left;\n const y = event.clientY - thumbRect.top;\n scrollbarContextVisible.handleThumbDown(event, { x, y });\n }\n function handlePointerUp(event) {\n scrollbarContextVisible.handleThumbUp(event);\n }\n const { forwardRef, currentElement: thumbElement } = useForwardExpose();\n const removeUnlinkedScrollListenerRef = ref();\n const viewport = computed(() => rootContext.viewport.value);\n function handleScroll() {\n if (!removeUnlinkedScrollListenerRef.value) {\n const listener = addUnlinkedScrollListener(\n viewport.value,\n scrollbarContextVisible.onThumbPositionChange\n );\n removeUnlinkedScrollListenerRef.value = listener;\n scrollbarContextVisible.onThumbPositionChange();\n }\n }\n const sizes = computed(() => scrollbarContextVisible.sizes.value);\n watchOnce(sizes, () => {\n scrollbarContextVisible.onThumbChange(thumbElement.value);\n if (viewport.value) {\n scrollbarContextVisible.onThumbPositionChange();\n viewport.value.addEventListener(\"scroll\", handleScroll);\n }\n });\n onUnmounted(() => {\n viewport.value.removeEventListener(\"scroll\", handleScroll);\n rootContext.viewport.value?.removeEventListener(\"scroll\", handleScroll);\n });\n return (_ctx, _cache) => {\n return openBlock(), createBlock(unref(Primitive), {\n ref: unref(forwardRef),\n \"data-state\": unref(scrollbarContextVisible).hasThumb ? \"visible\" : \"hidden\",\n style: {\n width: \"var(--reka-scroll-area-thumb-width)\",\n height: \"var(--reka-scroll-area-thumb-height)\"\n },\n \"as-child\": props.asChild,\n as: _ctx.as,\n onPointerdown: handlePointerDown,\n onPointerup: handlePointerUp\n }, {\n default: withCtx(() => [\n renderSlot(_ctx.$slots, \"default\")\n ]),\n _: 3\n }, 8, [\"data-state\", \"as-child\", \"as\"]);\n };\n }\n});\n\nexport { _sfc_main as _ };\n//# sourceMappingURL=ScrollAreaThumb.js.map\n","import { defineComponent, ref, computed, watch, openBlock, createBlock, unref, mergeProps, withCtx, renderSlot, createCommentVNode } from 'vue';\nimport { useResizeObserver } from '@vueuse/core';\nimport { P as Primitive } from '../Primitive/Primitive.js';\nimport { i as injectScrollAreaRootContext } from './ScrollAreaRoot.js';\n\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"ScrollAreaCornerImpl\",\n setup(__props) {\n const rootContext = injectScrollAreaRootContext();\n const width = ref(0);\n const height = ref(0);\n const hasSize = computed(() => !!width.value && !!height.value);\n function setCornerHeight() {\n const offsetHeight = rootContext.scrollbarX.value?.offsetHeight || 0;\n rootContext.onCornerHeightChange(offsetHeight);\n height.value = offsetHeight;\n }\n function setCornerWidth() {\n const offsetWidth = rootContext.scrollbarY.value?.offsetWidth || 0;\n rootContext.onCornerWidthChange(offsetWidth);\n width.value = offsetWidth;\n }\n useResizeObserver(rootContext.scrollbarX.value, setCornerHeight);\n useResizeObserver(rootContext.scrollbarY.value, setCornerWidth);\n watch(() => rootContext.scrollbarX.value, setCornerHeight);\n watch(() => rootContext.scrollbarY.value, setCornerWidth);\n return (_ctx, _cache) => {\n return hasSize.value ? (openBlock(), createBlock(unref(Primitive), mergeProps({\n key: 0,\n style: {\n width: `${width.value}px`,\n height: `${height.value}px`,\n position: \"absolute\",\n right: unref(rootContext).dir.value === \"ltr\" ? 0 : undefined,\n left: unref(rootContext).dir.value === \"rtl\" ? 0 : undefined,\n bottom: 0\n }\n }, _ctx.$parent?.$props), {\n default: withCtx(() => [\n renderSlot(_ctx.$slots, \"default\")\n ]),\n _: 3\n }, 16, [\"style\"])) : createCommentVNode(\"\", true);\n };\n }\n});\n\nexport { _sfc_main as _ };\n//# sourceMappingURL=ScrollAreaCornerImpl.js.map\n","import { defineComponent, computed, openBlock, createBlock, mergeProps, unref, withCtx, renderSlot, createCommentVNode } from 'vue';\nimport { _ as _sfc_main$1 } from './ScrollAreaCornerImpl.js';\nimport { u as useForwardExpose } from '../shared/useForwardExpose.js';\nimport { i as injectScrollAreaRootContext } from './ScrollAreaRoot.js';\n\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"ScrollAreaCorner\",\n props: {\n asChild: { type: Boolean },\n as: {}\n },\n setup(__props) {\n const props = __props;\n const { forwardRef } = useForwardExpose();\n const rootContext = injectScrollAreaRootContext();\n const hasBothScrollbarsVisible = computed(\n () => !!rootContext.scrollbarX.value && !!rootContext.scrollbarY.value\n );\n const hasCorner = computed(\n () => rootContext.type.value !== \"scroll\" && hasBothScrollbarsVisible.value\n );\n return (_ctx, _cache) => {\n return hasCorner.value ? (openBlock(), createBlock(_sfc_main$1, mergeProps({ key: 0 }, props, { ref: unref(forwardRef) }), {\n default: withCtx(() => [\n renderSlot(_ctx.$slots, \"default\")\n ]),\n _: 3\n }, 16)) : createCommentVNode(\"\", true);\n };\n }\n});\n\nexport { _sfc_main as _ };\n//# sourceMappingURL=ScrollAreaCorner.js.map\n","import { defineComponent, ref, watch, openBlock, createBlock, unref, withCtx, createElementVNode, mergeProps, renderSlot } from 'vue';\nimport { _ as _sfc_main$1 } from '../VisuallyHidden/VisuallyHidden.js';\n\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"BubbleSelect\",\n props: {\n autocomplete: {},\n autofocus: { type: Boolean },\n disabled: { type: Boolean },\n form: {},\n multiple: { type: Boolean },\n name: {},\n required: { type: Boolean },\n size: {},\n value: {}\n },\n setup(__props) {\n const props = __props;\n const selectElement = ref();\n watch(() => props.value, (cur, prev) => {\n const selectProto = window.HTMLSelectElement.prototype;\n const descriptor = Object.getOwnPropertyDescriptor(\n selectProto,\n \"value\"\n );\n const setValue = descriptor.set;\n if (cur !== prev && setValue) {\n const event = new Event(\"change\", { bubbles: true });\n setValue.call(selectElement.value, cur);\n selectElement.value?.dispatchEvent(event);\n }\n });\n return (_ctx, _cache) => {\n return openBlock(), createBlock(unref(_sfc_main$1), { \"as-child\": \"\" }, {\n default: withCtx(() => [\n createElementVNode(\"select\", mergeProps({\n ref_key: \"selectElement\",\n ref: selectElement\n }, props), [\n renderSlot(_ctx.$slots, \"default\")\n ], 16)\n ]),\n _: 3\n });\n };\n }\n});\n\nexport { _sfc_main as _ };\n//# sourceMappingURL=BubbleSelect.js.map\n","import { isEqual } from 'ohash';\n\nconst OPEN_KEYS = [\" \", \"Enter\", \"ArrowUp\", \"ArrowDown\"];\nconst SELECTION_KEYS = [\" \", \"Enter\"];\nconst CONTENT_MARGIN = 10;\nfunction valueComparator(value, currentValue, comparator) {\n if (value === undefined)\n return false;\n else if (Array.isArray(value))\n return value.some((val) => compare(val, currentValue, comparator));\n else\n return compare(value, currentValue, comparator);\n}\nfunction compare(value, currentValue, comparator) {\n if (value === undefined || currentValue === undefined)\n return false;\n if (typeof value === \"string\")\n return value === currentValue;\n if (typeof comparator === \"function\")\n return comparator(value, currentValue);\n if (typeof comparator === \"string\")\n return value?.[comparator] === currentValue?.[comparator];\n return isEqual(value, currentValue);\n}\n\nexport { CONTENT_MARGIN as C, OPEN_KEYS as O, SELECTION_KEYS as S, compare as c, valueComparator as v };\n//# sourceMappingURL=utils.js.map\n","import { defineComponent, toRefs, ref, computed, openBlock, createBlock, unref, withCtx, renderSlot, createElementBlock, createCommentVNode, Fragment, renderList, mergeProps } from 'vue';\nimport { _ as _sfc_main$2 } from './BubbleSelect.js';\nimport { _ as _sfc_main$1 } from '../Popper/PopperRoot.js';\nimport { useVModel } from '@vueuse/core';\nimport { c as compare } from './utils.js';\nimport { u as useCollection } from '../Collection/Collection.js';\nimport { u as useDirection } from '../shared/useDirection.js';\nimport { u as useFormControl } from '../shared/useFormControl.js';\nimport { c as createContext } from '../shared/createContext.js';\nimport { i as isNullish } from '../shared/nullish.js';\n\nconst _hoisted_1 = {\n key: 0,\n value: \"\"\n};\nconst [injectSelectRootContext, provideSelectRootContext] = createContext(\"SelectRoot\");\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n ...{\n inheritAttrs: false\n },\n __name: \"SelectRoot\",\n props: {\n open: { type: Boolean, default: undefined },\n defaultOpen: { type: Boolean },\n defaultValue: {},\n modelValue: { default: undefined },\n by: {},\n dir: {},\n multiple: { type: Boolean },\n autocomplete: {},\n disabled: { type: Boolean },\n name: {},\n required: { type: Boolean }\n },\n emits: [\"update:modelValue\", \"update:open\"],\n setup(__props, { emit: __emit }) {\n const props = __props;\n const emits = __emit;\n const { required, disabled, multiple, dir: propDir } = toRefs(props);\n const modelValue = useVModel(props, \"modelValue\", emits, {\n defaultValue: props.defaultValue ?? (multiple.value ? [] : undefined),\n passive: props.modelValue === undefined,\n deep: true\n });\n const open = useVModel(props, \"open\", emits, {\n defaultValue: props.defaultOpen,\n passive: props.open === undefined\n });\n const triggerElement = ref();\n const valueElement = ref();\n const triggerPointerDownPosRef = ref({\n x: 0,\n y: 0\n });\n const isEmptyModelValue = computed(() => {\n if (multiple.value && Array.isArray(modelValue.value))\n return modelValue.value?.length === 0;\n else\n return isNullish(modelValue.value);\n });\n useCollection({ isProvider: true });\n const dir = useDirection(propDir);\n const isFormControl = useFormControl(triggerElement);\n const optionsSet = ref(/* @__PURE__ */ new Set());\n const nativeSelectKey = computed(() => {\n return Array.from(optionsSet.value).map((option) => option.value).join(\";\");\n });\n function handleValueChange(value) {\n if (multiple.value) {\n const array = Array.isArray(modelValue.value) ? [...modelValue.value] : [];\n const index = array.findIndex((i) => compare(i, value, props.by));\n index === -1 ? array.push(value) : array.splice(index, 1);\n modelValue.value = [...array];\n } else {\n modelValue.value = value;\n }\n }\n provideSelectRootContext({\n triggerElement,\n onTriggerChange: (node) => {\n triggerElement.value = node;\n },\n valueElement,\n onValueElementChange: (node) => {\n valueElement.value = node;\n },\n contentId: \"\",\n modelValue,\n // @ts-expect-error Missing infer for AcceptableValue\n onValueChange: handleValueChange,\n by: props.by,\n open,\n multiple,\n required,\n onOpenChange: (value) => {\n open.value = value;\n },\n dir,\n triggerPointerDownPosRef,\n disabled,\n isEmptyModelValue,\n optionsSet,\n onOptionAdd: (option) => optionsSet.value.add(option),\n onOptionRemove: (option) => optionsSet.value.delete(option)\n });\n return (_ctx, _cache) => {\n return openBlock(), createBlock(unref(_sfc_main$1), null, {\n default: withCtx(() => [\n renderSlot(_ctx.$slots, \"default\", {\n modelValue: unref(modelValue),\n open: unref(open)\n }),\n unref(isFormControl) ? (openBlock(), createBlock(_sfc_main$2, {\n key: nativeSelectKey.value,\n \"aria-hidden\": \"true\",\n tabindex: \"-1\",\n multiple: unref(multiple),\n required: unref(required),\n name: _ctx.name,\n autocomplete: _ctx.autocomplete,\n disabled: unref(disabled),\n value: unref(modelValue)\n }, {\n default: withCtx(() => [\n unref(isNullish)(unref(modelValue)) ? (openBlock(), createElementBlock(\"option\", _hoisted_1)) : createCommentVNode(\"\", true),\n (openBlock(true), createElementBlock(Fragment, null, renderList(Array.from(optionsSet.value), (option) => {\n return openBlock(), createElementBlock(\"option\", mergeProps({\n key: option.value ?? \"\",\n ref_for: true\n }, option), null, 16);\n }), 128))\n ]),\n _: 1\n }, 8, [\"multiple\", \"required\", \"name\", \"autocomplete\", \"disabled\", \"value\"])) : createCommentVNode(\"\", true)\n ]),\n _: 3\n });\n };\n }\n});\n\nexport { _sfc_main as _, injectSelectRootContext as i, provideSelectRootContext as p };\n//# sourceMappingURL=SelectRoot.js.map\n","import { defineComponent, computed, onMounted, openBlock, createBlock, unref, withCtx, createVNode, withModifiers, renderSlot } from 'vue';\nimport { O as OPEN_KEYS } from './utils.js';\nimport { _ as _sfc_main$1 } from '../Popper/PopperAnchor.js';\nimport { u as useCollection } from '../Collection/Collection.js';\nimport { i as injectSelectRootContext } from './SelectRoot.js';\nimport { u as useForwardExpose } from '../shared/useForwardExpose.js';\nimport { u as useId } from '../shared/useId.js';\nimport { u as useTypeahead } from '../shared/useTypeahead.js';\nimport { P as Primitive } from '../Primitive/Primitive.js';\n\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"SelectTrigger\",\n props: {\n disabled: { type: Boolean },\n reference: {},\n asChild: { type: Boolean },\n as: { default: \"button\" }\n },\n setup(__props) {\n const props = __props;\n const rootContext = injectSelectRootContext();\n const { forwardRef, currentElement: triggerElement } = useForwardExpose();\n const isDisabled = computed(() => rootContext.disabled?.value || props.disabled);\n rootContext.contentId ||= useId(undefined, \"reka-select-content\");\n onMounted(() => {\n rootContext.onTriggerChange(triggerElement.value);\n });\n const { getItems } = useCollection();\n const { search, handleTypeaheadSearch, resetTypeahead } = useTypeahead();\n function handleOpen() {\n if (!isDisabled.value) {\n rootContext.onOpenChange(true);\n resetTypeahead();\n }\n }\n function handlePointerOpen(event) {\n handleOpen();\n rootContext.triggerPointerDownPosRef.value = {\n x: Math.round(event.pageX),\n y: Math.round(event.pageY)\n };\n }\n return (_ctx, _cache) => {\n return openBlock(), createBlock(unref(_sfc_main$1), {\n \"as-child\": \"\",\n reference: _ctx.reference\n }, {\n default: withCtx(() => [\n createVNode(unref(Primitive), {\n ref: unref(forwardRef),\n role: \"combobox\",\n type: _ctx.as === \"button\" ? \"button\" : undefined,\n \"aria-controls\": unref(rootContext).contentId,\n \"aria-expanded\": unref(rootContext).open.value || false,\n \"aria-required\": unref(rootContext).required?.value,\n \"aria-autocomplete\": \"none\",\n disabled: isDisabled.value,\n dir: unref(rootContext)?.dir.value,\n \"data-state\": unref(rootContext)?.open.value ? \"open\" : \"closed\",\n \"data-disabled\": isDisabled.value ? \"\" : undefined,\n \"data-placeholder\": unref(rootContext).modelValue?.value ? undefined : \"\",\n \"as-child\": _ctx.asChild,\n as: _ctx.as,\n onClick: _cache[0] || (_cache[0] = (event) => {\n event?.currentTarget?.focus();\n }),\n onPointerdown: _cache[1] || (_cache[1] = (event) => {\n if (event.pointerType === \"touch\")\n return event.preventDefault();\n const target = event.target;\n if (target.hasPointerCapture(event.pointerId)) {\n target.releasePointerCapture(event.pointerId);\n }\n if (event.button === 0 && event.ctrlKey === false) {\n handlePointerOpen(event);\n event.preventDefault();\n }\n }),\n onPointerup: _cache[2] || (_cache[2] = withModifiers(\n (event) => {\n if (event.pointerType === \"touch\")\n handlePointerOpen(event);\n },\n [\"prevent\"]\n )),\n onKeydown: _cache[3] || (_cache[3] = (event) => {\n const isTypingAhead = unref(search) !== \"\";\n const isModifierKey = event.ctrlKey || event.altKey || event.metaKey;\n if (!isModifierKey && event.key.length === 1) {\n if (isTypingAhead && event.key === \" \") return;\n }\n unref(handleTypeaheadSearch)(event.key, unref(getItems)());\n if (unref(OPEN_KEYS).includes(event.key)) {\n handleOpen();\n event.preventDefault();\n }\n })\n }, {\n default: withCtx(() => [\n renderSlot(_ctx.$slots, \"default\")\n ]),\n _: 3\n }, 8, [\"type\", \"aria-controls\", \"aria-expanded\", \"aria-required\", \"disabled\", \"dir\", \"data-state\", \"data-disabled\", \"data-placeholder\", \"as-child\", \"as\"])\n ]),\n _: 3\n }, 8, [\"reference\"]);\n };\n }\n});\n\nexport { _sfc_main as _ };\n//# sourceMappingURL=SelectTrigger.js.map\n","import { defineComponent, openBlock, createBlock, unref, normalizeProps, guardReactiveProps, withCtx, renderSlot } from 'vue';\nimport { _ as _sfc_main$1 } from '../Teleport/Teleport.js';\n\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"SelectPortal\",\n props: {\n to: {},\n disabled: { type: Boolean },\n defer: { type: Boolean },\n forceMount: { type: Boolean }\n },\n setup(__props) {\n const props = __props;\n return (_ctx, _cache) => {\n return openBlock(), createBlock(unref(_sfc_main$1), normalizeProps(guardReactiveProps(props)), {\n default: withCtx(() => [\n renderSlot(_ctx.$slots, \"default\")\n ]),\n _: 3\n }, 16);\n };\n }\n});\n\nexport { _sfc_main as _ };\n//# sourceMappingURL=SelectPortal.js.map\n","import { defineComponent, ref, onMounted, nextTick, openBlock, createElementBlock, normalizeStyle, createVNode, unref, mergeProps, withCtx, renderSlot } from 'vue';\nimport { C as CONTENT_MARGIN } from './utils.js';\nimport { u as useCollection } from '../Collection/Collection.js';\nimport { useResizeObserver } from '@vueuse/core';\nimport { i as injectSelectContentContext } from './SelectContentImpl.js';\nimport { u as useForwardExpose } from '../shared/useForwardExpose.js';\nimport { P as Primitive } from '../Primitive/Primitive.js';\nimport { c as createContext } from '../shared/createContext.js';\nimport { i as injectSelectRootContext } from './SelectRoot.js';\nimport { c as clamp } from '../shared/clamp.js';\n\nconst [injectSelectItemAlignedPositionContext, provideSelectItemAlignedPositionContext] = createContext(\"SelectItemAlignedPosition\");\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n ...{\n inheritAttrs: false\n },\n __name: \"SelectItemAlignedPosition\",\n props: {\n asChild: { type: Boolean },\n as: {}\n },\n emits: [\"placed\"],\n setup(__props, { emit: __emit }) {\n const props = __props;\n const emits = __emit;\n const { getItems } = useCollection();\n const rootContext = injectSelectRootContext();\n const contentContext = injectSelectContentContext();\n const shouldExpandOnScrollRef = ref(false);\n const shouldRepositionRef = ref(true);\n const contentWrapperElement = ref();\n const { forwardRef, currentElement: contentElement } = useForwardExpose();\n const { viewport, selectedItem, selectedItemText, focusSelectedItem } = contentContext;\n function position() {\n if (rootContext.triggerElement.value && rootContext.valueElement.value && contentWrapperElement.value && contentElement.value && viewport?.value && selectedItem?.value && selectedItemText?.value) {\n const triggerRect = rootContext.triggerElement.value.getBoundingClientRect();\n const contentRect = contentElement.value.getBoundingClientRect();\n const valueNodeRect = rootContext.valueElement.value.getBoundingClientRect();\n const itemTextRect = selectedItemText.value.getBoundingClientRect();\n if (rootContext.dir.value !== \"rtl\") {\n const itemTextOffset = itemTextRect.left - contentRect.left;\n const left = valueNodeRect.left - itemTextOffset;\n const leftDelta = triggerRect.left - left;\n const minContentWidth = triggerRect.width + leftDelta;\n const contentWidth = Math.max(minContentWidth, contentRect.width);\n const rightEdge = window.innerWidth - CONTENT_MARGIN;\n const clampedLeft = clamp(left, CONTENT_MARGIN, Math.max(CONTENT_MARGIN, rightEdge - contentWidth));\n contentWrapperElement.value.style.minWidth = `${minContentWidth}px`;\n contentWrapperElement.value.style.left = `${clampedLeft}px`;\n } else {\n const itemTextOffset = contentRect.right - itemTextRect.right;\n const right = window.innerWidth - valueNodeRect.right - itemTextOffset;\n const rightDelta = window.innerWidth - triggerRect.right - right;\n const minContentWidth = triggerRect.width + rightDelta;\n const contentWidth = Math.max(minContentWidth, contentRect.width);\n const leftEdge = window.innerWidth - CONTENT_MARGIN;\n const clampedRight = clamp(\n right,\n CONTENT_MARGIN,\n Math.max(CONTENT_MARGIN, leftEdge - contentWidth)\n );\n contentWrapperElement.value.style.minWidth = `${minContentWidth}px`;\n contentWrapperElement.value.style.right = `${clampedRight}px`;\n }\n const items = getItems().map((i) => i.ref);\n const availableHeight = window.innerHeight - CONTENT_MARGIN * 2;\n const itemsHeight = viewport.value.scrollHeight;\n const contentStyles = window.getComputedStyle(contentElement.value);\n const contentBorderTopWidth = Number.parseInt(\n contentStyles.borderTopWidth,\n 10\n );\n const contentPaddingTop = Number.parseInt(contentStyles.paddingTop, 10);\n const contentBorderBottomWidth = Number.parseInt(\n contentStyles.borderBottomWidth,\n 10\n );\n const contentPaddingBottom = Number.parseInt(\n contentStyles.paddingBottom,\n 10\n );\n const fullContentHeight = contentBorderTopWidth + contentPaddingTop + itemsHeight + contentPaddingBottom + contentBorderBottomWidth;\n const minContentHeight = Math.min(\n selectedItem.value.offsetHeight * 5,\n fullContentHeight\n );\n const viewportStyles = window.getComputedStyle(viewport.value);\n const viewportPaddingTop = Number.parseInt(viewportStyles.paddingTop, 10);\n const viewportPaddingBottom = Number.parseInt(\n viewportStyles.paddingBottom,\n 10\n );\n const topEdgeToTriggerMiddle = triggerRect.top + triggerRect.height / 2 - CONTENT_MARGIN;\n const triggerMiddleToBottomEdge = availableHeight - topEdgeToTriggerMiddle;\n const selectedItemHalfHeight = selectedItem.value.offsetHeight / 2;\n const itemOffsetMiddle = selectedItem.value.offsetTop + selectedItemHalfHeight;\n const contentTopToItemMiddle = contentBorderTopWidth + contentPaddingTop + itemOffsetMiddle;\n const itemMiddleToContentBottom = fullContentHeight - contentTopToItemMiddle;\n const willAlignWithoutTopOverflow = contentTopToItemMiddle <= topEdgeToTriggerMiddle;\n if (willAlignWithoutTopOverflow) {\n const isLastItem = selectedItem.value === items[items.length - 1];\n contentWrapperElement.value.style.bottom = `${0}px`;\n const viewportOffsetBottom = contentElement.value.clientHeight - viewport.value.offsetTop - viewport.value.offsetHeight;\n const clampedTriggerMiddleToBottomEdge = Math.max(\n triggerMiddleToBottomEdge,\n selectedItemHalfHeight + (isLastItem ? viewportPaddingBottom : 0) + viewportOffsetBottom + contentBorderBottomWidth\n );\n const height = contentTopToItemMiddle + clampedTriggerMiddleToBottomEdge;\n contentWrapperElement.value.style.height = `${height}px`;\n } else {\n const isFirstItem = selectedItem.value === items[0];\n contentWrapperElement.value.style.top = `${0}px`;\n const clampedTopEdgeToTriggerMiddle = Math.max(\n topEdgeToTriggerMiddle,\n contentBorderTopWidth + viewport.value.offsetTop + (isFirstItem ? viewportPaddingTop : 0) + selectedItemHalfHeight\n );\n const height = clampedTopEdgeToTriggerMiddle + itemMiddleToContentBottom;\n contentWrapperElement.value.style.height = `${height}px`;\n viewport.value.scrollTop = contentTopToItemMiddle - topEdgeToTriggerMiddle + viewport.value.offsetTop;\n }\n contentWrapperElement.value.style.margin = `${CONTENT_MARGIN}px 0`;\n contentWrapperElement.value.style.minHeight = `${minContentHeight}px`;\n contentWrapperElement.value.style.maxHeight = `${availableHeight}px`;\n emits(\"placed\");\n requestAnimationFrame(() => shouldExpandOnScrollRef.value = true);\n }\n }\n const contentZIndex = ref(\"\");\n onMounted(async () => {\n await nextTick();\n position();\n if (contentElement.value)\n contentZIndex.value = window.getComputedStyle(contentElement.value).zIndex;\n });\n function handleScrollButtonChange(node) {\n if (node && shouldRepositionRef.value === true) {\n position();\n focusSelectedItem?.();\n shouldRepositionRef.value = false;\n }\n }\n useResizeObserver(rootContext.triggerElement, () => {\n position();\n });\n provideSelectItemAlignedPositionContext({\n contentWrapper: contentWrapperElement,\n shouldExpandOnScrollRef,\n onScrollButtonChange: handleScrollButtonChange\n });\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", {\n ref_key: \"contentWrapperElement\",\n ref: contentWrapperElement,\n style: normalizeStyle({\n display: \"flex\",\n flexDirection: \"column\",\n position: \"fixed\",\n zIndex: contentZIndex.value\n })\n }, [\n createVNode(unref(Primitive), mergeProps({\n ref: unref(forwardRef),\n style: {\n // When we get the height of the content, it includes borders. If we were to set\n // the height without having `boxSizing: 'border-box'` it would be too big.\n boxSizing: \"border-box\",\n // We need to ensure the content doesn't get taller than the wrapper\n maxHeight: \"100%\"\n }\n }, { ..._ctx.$attrs, ...props }), {\n default: withCtx(() => [\n renderSlot(_ctx.$slots, \"default\")\n ]),\n _: 3\n }, 16)\n ], 4);\n };\n }\n});\n\nexport { _sfc_main as _, injectSelectItemAlignedPositionContext as i };\n//# sourceMappingURL=SelectItemAlignedPosition.js.map\n","import { defineComponent, openBlock, createBlock, unref, mergeProps, withCtx, renderSlot } from 'vue';\nimport '@floating-ui/vue';\nimport { C as CONTENT_MARGIN } from './utils.js';\nimport { _ as _sfc_main$1 } from '../Popper/PopperContent.js';\nimport { u as useForwardProps } from '../shared/useForwardProps.js';\n\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"SelectPopperPosition\",\n props: {\n side: {},\n sideOffset: {},\n align: { default: \"start\" },\n alignOffset: {},\n avoidCollisions: { type: Boolean },\n collisionBoundary: {},\n collisionPadding: { default: CONTENT_MARGIN },\n arrowPadding: {},\n sticky: {},\n hideWhenDetached: { type: Boolean },\n positionStrategy: {},\n updatePositionStrategy: {},\n disableUpdateOnLayoutShift: { type: Boolean },\n prioritizePosition: { type: Boolean },\n reference: {},\n asChild: { type: Boolean },\n as: {}\n },\n setup(__props) {\n const props = __props;\n const forwarded = useForwardProps(props);\n return (_ctx, _cache) => {\n return openBlock(), createBlock(unref(_sfc_main$1), mergeProps(unref(forwarded), { style: {\n // Ensure border-box for floating-ui calculations\n \"boxSizing\": \"border-box\",\n \"--reka-select-content-transform-origin\": \"var(--reka-popper-transform-origin)\",\n \"--reka-select-content-available-width\": \"var(--reka-popper-available-width)\",\n \"--reka-select-content-available-height\": \"var(--reka-popper-available-height)\",\n \"--reka-select-trigger-width\": \"var(--reka-popper-anchor-width)\",\n \"--reka-select-trigger-height\": \"var(--reka-popper-anchor-height)\"\n } }), {\n default: withCtx(() => [\n renderSlot(_ctx.$slots, \"default\")\n ]),\n _: 3\n }, 16);\n };\n }\n});\n\nexport { _sfc_main as _ };\n//# sourceMappingURL=SelectPopperPosition.js.map\n","import { defineComponent, ref, watch, watchEffect, computed, openBlock, createBlock, unref, withCtx, createVNode, withModifiers, resolveDynamicComponent, mergeProps, renderSlot } from 'vue';\nimport { unrefElement } from '@vueuse/core';\nimport { _ as _sfc_main$4 } from './SelectItemAlignedPosition.js';\nimport { _ as _sfc_main$3 } from './SelectPopperPosition.js';\nimport { _ as _sfc_main$2 } from '../DismissableLayer/DismissableLayer.js';\nimport { f as focusFirst } from '../Menu/utils.js';\nimport { u as useBodyScrollLock } from '../shared/useBodyScrollLock.js';\nimport { v as valueComparator } from './utils.js';\nimport { u as useCollection } from '../Collection/Collection.js';\nimport { u as useFocusGuards } from '../shared/useFocusGuards.js';\nimport { u as useHideOthers } from '../shared/useHideOthers.js';\nimport { u as useTypeahead } from '../shared/useTypeahead.js';\nimport { u as useForwardProps } from '../shared/useForwardProps.js';\nimport { _ as _sfc_main$1 } from '../FocusScope/FocusScope.js';\nimport { c as createContext } from '../shared/createContext.js';\nimport { i as injectSelectRootContext } from './SelectRoot.js';\n\nconst SelectContentDefaultContextValue = {\n onViewportChange: () => {\n },\n itemTextRefCallback: () => {\n },\n itemRefCallback: () => {\n }\n};\nconst [injectSelectContentContext, provideSelectContentContext] = createContext(\"SelectContent\");\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"SelectContentImpl\",\n props: {\n position: { default: \"item-aligned\" },\n bodyLock: { type: Boolean, default: true },\n side: {},\n sideOffset: {},\n align: { default: \"start\" },\n alignOffset: {},\n avoidCollisions: { type: Boolean },\n collisionBoundary: {},\n collisionPadding: {},\n arrowPadding: {},\n sticky: {},\n hideWhenDetached: { type: Boolean },\n positionStrategy: {},\n updatePositionStrategy: {},\n disableUpdateOnLayoutShift: { type: Boolean },\n prioritizePosition: { type: Boolean },\n reference: {},\n asChild: { type: Boolean },\n as: {}\n },\n emits: [\"closeAutoFocus\", \"escapeKeyDown\", \"pointerDownOutside\"],\n setup(__props, { emit: __emit }) {\n const props = __props;\n const emits = __emit;\n const rootContext = injectSelectRootContext();\n useFocusGuards();\n useBodyScrollLock(props.bodyLock);\n const { CollectionSlot, getItems } = useCollection();\n const content = ref();\n useHideOthers(content);\n const { search, handleTypeaheadSearch } = useTypeahead();\n const viewport = ref();\n const selectedItem = ref();\n const selectedItemText = ref();\n const isPositioned = ref(false);\n const firstValidItemFoundRef = ref(false);\n const firstSelectedItemInArrayFoundRef = ref(false);\n function focusSelectedItem() {\n if (selectedItem.value && content.value)\n focusFirst([selectedItem.value, content.value]);\n }\n watch(isPositioned, () => {\n focusSelectedItem();\n });\n const { onOpenChange, triggerPointerDownPosRef } = rootContext;\n watchEffect((cleanupFn) => {\n if (!content.value)\n return;\n let pointerMoveDelta = { x: 0, y: 0 };\n const handlePointerMove = (event) => {\n pointerMoveDelta = {\n x: Math.abs(\n Math.round(event.pageX) - (triggerPointerDownPosRef.value?.x ?? 0)\n ),\n y: Math.abs(\n Math.round(event.pageY) - (triggerPointerDownPosRef.value?.y ?? 0)\n )\n };\n };\n const handlePointerUp = (event) => {\n if (event.pointerType === \"touch\")\n return;\n if (pointerMoveDelta.x <= 10 && pointerMoveDelta.y <= 10) {\n event.preventDefault();\n } else {\n if (!content.value?.contains(event.target))\n onOpenChange(false);\n }\n document.removeEventListener(\"pointermove\", handlePointerMove);\n triggerPointerDownPosRef.value = null;\n };\n if (triggerPointerDownPosRef.value !== null) {\n document.addEventListener(\"pointermove\", handlePointerMove);\n document.addEventListener(\"pointerup\", handlePointerUp, {\n capture: true,\n once: true\n });\n }\n cleanupFn(() => {\n document.removeEventListener(\"pointermove\", handlePointerMove);\n document.removeEventListener(\"pointerup\", handlePointerUp, {\n capture: true\n });\n });\n });\n function handleKeyDown(event) {\n const isModifierKey = event.ctrlKey || event.altKey || event.metaKey;\n if (event.key === \"Tab\")\n event.preventDefault();\n if (!isModifierKey && event.key.length === 1)\n handleTypeaheadSearch(event.key, getItems());\n if ([\"ArrowUp\", \"ArrowDown\", \"Home\", \"End\"].includes(event.key)) {\n const collectionItems = getItems().map((i) => i.ref);\n let candidateNodes = [...collectionItems];\n if ([\"ArrowUp\", \"End\"].includes(event.key))\n candidateNodes = candidateNodes.slice().reverse();\n if ([\"ArrowUp\", \"ArrowDown\"].includes(event.key)) {\n const currentElement = event.target;\n const currentIndex = candidateNodes.indexOf(currentElement);\n candidateNodes = candidateNodes.slice(currentIndex + 1);\n }\n setTimeout(() => focusFirst(candidateNodes));\n event.preventDefault();\n }\n }\n const pickedProps = computed(() => {\n if (props.position === \"popper\")\n return props;\n else return {};\n });\n const forwardedProps = useForwardProps(pickedProps.value);\n provideSelectContentContext({\n content,\n viewport,\n onViewportChange: (node) => {\n viewport.value = node;\n },\n itemRefCallback: (node, value, disabled) => {\n const isFirstValidItem = !firstValidItemFoundRef.value && !disabled;\n const isSelectedItem = valueComparator(rootContext.modelValue.value, value, rootContext.by);\n if (rootContext.multiple.value) {\n if (firstSelectedItemInArrayFoundRef.value) {\n return;\n }\n if (isSelectedItem || isFirstValidItem) {\n selectedItem.value = node;\n if (isSelectedItem) {\n firstSelectedItemInArrayFoundRef.value = true;\n }\n }\n } else {\n if (isSelectedItem || isFirstValidItem) {\n selectedItem.value = node;\n }\n }\n if (isFirstValidItem) {\n firstValidItemFoundRef.value = true;\n }\n },\n selectedItem,\n selectedItemText,\n onItemLeave: () => {\n content.value?.focus();\n },\n itemTextRefCallback: (node, value, disabled) => {\n const isFirstValidItem = !firstValidItemFoundRef.value && !disabled;\n const isSelectedItem = valueComparator(rootContext.modelValue.value, value, rootContext.by);\n if (isSelectedItem || isFirstValidItem)\n selectedItemText.value = node;\n },\n focusSelectedItem,\n position: props.position,\n isPositioned,\n searchRef: search\n });\n return (_ctx, _cache) => {\n return openBlock(), createBlock(unref(CollectionSlot), null, {\n default: withCtx(() => [\n createVNode(unref(_sfc_main$1), {\n \"as-child\": \"\",\n onMountAutoFocus: _cache[6] || (_cache[6] = withModifiers(() => {\n }, [\"prevent\"])),\n onUnmountAutoFocus: _cache[7] || (_cache[7] = (event) => {\n emits(\"closeAutoFocus\", event);\n if (event.defaultPrevented) return;\n unref(rootContext).triggerElement.value?.focus({ preventScroll: true });\n event.preventDefault();\n })\n }, {\n default: withCtx(() => [\n createVNode(unref(_sfc_main$2), {\n \"as-child\": \"\",\n \"disable-outside-pointer-events\": \"\",\n onFocusOutside: _cache[2] || (_cache[2] = withModifiers(() => {\n }, [\"prevent\"])),\n onDismiss: _cache[3] || (_cache[3] = ($event) => unref(rootContext).onOpenChange(false)),\n onEscapeKeyDown: _cache[4] || (_cache[4] = ($event) => emits(\"escapeKeyDown\", $event)),\n onPointerDownOutside: _cache[5] || (_cache[5] = ($event) => emits(\"pointerDownOutside\", $event))\n }, {\n default: withCtx(() => [\n (openBlock(), createBlock(resolveDynamicComponent(\n _ctx.position === \"popper\" ? _sfc_main$3 : _sfc_main$4\n ), mergeProps({ ..._ctx.$attrs, ...unref(forwardedProps) }, {\n id: unref(rootContext).contentId,\n ref: (vnode) => {\n content.value = unref(unrefElement)(vnode);\n return undefined;\n },\n role: \"listbox\",\n \"data-state\": unref(rootContext).open.value ? \"open\" : \"closed\",\n dir: unref(rootContext).dir.value,\n style: {\n // flex layout so we can place the scroll buttons properly\n display: \"flex\",\n flexDirection: \"column\",\n // reset the outline by default as the content MAY get focused\n outline: \"none\"\n },\n onContextmenu: _cache[0] || (_cache[0] = withModifiers(() => {\n }, [\"prevent\"])),\n onPlaced: _cache[1] || (_cache[1] = ($event) => isPositioned.value = true),\n onKeydown: handleKeyDown\n }), {\n default: withCtx(() => [\n renderSlot(_ctx.$slots, \"default\")\n ]),\n _: 3\n }, 16, [\"id\", \"data-state\", \"dir\", \"onKeydown\"]))\n ]),\n _: 3\n })\n ]),\n _: 3\n })\n ]),\n _: 3\n });\n };\n }\n});\n\nexport { SelectContentDefaultContextValue as S, _sfc_main as _, injectSelectContentContext as i, provideSelectContentContext as p };\n//# sourceMappingURL=SelectContentImpl.js.map\n","import { defineComponent, renderSlot } from 'vue';\nimport { p as provideSelectRootContext } from './SelectRoot.js';\nimport { p as provideSelectContentContext, S as SelectContentDefaultContextValue } from './SelectContentImpl.js';\n\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n ...{\n inheritAttrs: false\n },\n __name: \"SelectProvider\",\n props: {\n context: {}\n },\n setup(__props) {\n const props = __props;\n provideSelectRootContext(props.context);\n provideSelectContentContext(SelectContentDefaultContextValue);\n return (_ctx, _cache) => {\n return renderSlot(_ctx.$slots, \"default\");\n };\n }\n});\n\nexport { _sfc_main as _ };\n//# sourceMappingURL=SelectProvider.js.map\n","import { defineComponent, ref, onMounted, computed, openBlock, createBlock, unref, withCtx, createVNode, normalizeProps, guardReactiveProps, renderSlot, createElementBlock, Teleport, createCommentVNode } from 'vue';\nimport { _ as _sfc_main$1 } from './SelectContentImpl.js';\nimport { _ as _sfc_main$2 } from './SelectProvider.js';\nimport { u as useForwardPropsEmits } from '../shared/useForwardPropsEmits.js';\nimport { P as Presence } from '../Presence/Presence.js';\nimport { i as injectSelectRootContext } from './SelectRoot.js';\n\nconst _hoisted_1 = { key: 1 };\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n ...{\n inheritAttrs: false\n },\n __name: \"SelectContent\",\n props: {\n forceMount: { type: Boolean },\n position: {},\n bodyLock: { type: Boolean },\n side: {},\n sideOffset: {},\n align: {},\n alignOffset: {},\n avoidCollisions: { type: Boolean },\n collisionBoundary: {},\n collisionPadding: {},\n arrowPadding: {},\n sticky: {},\n hideWhenDetached: { type: Boolean },\n positionStrategy: {},\n updatePositionStrategy: {},\n disableUpdateOnLayoutShift: { type: Boolean },\n prioritizePosition: { type: Boolean },\n reference: {},\n asChild: { type: Boolean },\n as: {}\n },\n emits: [\"closeAutoFocus\", \"escapeKeyDown\", \"pointerDownOutside\"],\n setup(__props, { emit: __emit }) {\n const props = __props;\n const emits = __emit;\n const forwarded = useForwardPropsEmits(props, emits);\n const rootContext = injectSelectRootContext();\n const fragment = ref();\n onMounted(() => {\n fragment.value = new DocumentFragment();\n });\n const presenceRef = ref();\n const renderPresence = computed(() => props.forceMount || rootContext.open.value);\n return (_ctx, _cache) => {\n return renderPresence.value ? (openBlock(), createBlock(unref(Presence), {\n key: 0,\n ref_key: \"presenceRef\",\n ref: presenceRef,\n present: true\n }, {\n default: withCtx(() => [\n createVNode(_sfc_main$1, normalizeProps(guardReactiveProps({ ...unref(forwarded), ..._ctx.$attrs })), {\n default: withCtx(() => [\n renderSlot(_ctx.$slots, \"default\")\n ]),\n _: 3\n }, 16)\n ]),\n _: 3\n }, 512)) : !presenceRef.value?.present && fragment.value ? (openBlock(), createElementBlock(\"div\", _hoisted_1, [\n (openBlock(), createBlock(Teleport, { to: fragment.value }, [\n createVNode(_sfc_main$2, { context: unref(rootContext) }, {\n default: withCtx(() => [\n renderSlot(_ctx.$slots, \"default\")\n ]),\n _: 3\n }, 8, [\"context\"])\n ], 8, [\"to\"]))\n ])) : createCommentVNode(\"\", true);\n };\n }\n});\n\nexport { _sfc_main as _ };\n//# sourceMappingURL=SelectContent.js.map\n","import { defineComponent, openBlock, createBlock, unref, mergeProps, withCtx, renderSlot } from 'vue';\nimport { P as Primitive } from '../Primitive/Primitive.js';\n\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"SelectSeparator\",\n props: {\n asChild: { type: Boolean },\n as: {}\n },\n setup(__props) {\n const props = __props;\n return (_ctx, _cache) => {\n return openBlock(), createBlock(unref(Primitive), mergeProps({ \"aria-hidden\": \"true\" }, props), {\n default: withCtx(() => [\n renderSlot(_ctx.$slots, \"default\")\n ]),\n _: 3\n }, 16);\n };\n }\n});\n\nexport { _sfc_main as _ };\n//# sourceMappingURL=SelectSeparator.js.map\n","import { defineComponent, toRefs, computed, ref, onMounted, openBlock, createBlock, unref, withCtx, createVNode, withModifiers, renderSlot, nextTick } from 'vue';\nimport { v as valueComparator, S as SELECTION_KEYS } from './utils.js';\nimport { u as useCollection } from '../Collection/Collection.js';\nimport { u as useForwardExpose } from '../shared/useForwardExpose.js';\nimport { u as useId } from '../shared/useId.js';\nimport { P as Primitive } from '../Primitive/Primitive.js';\nimport { c as createContext } from '../shared/createContext.js';\nimport { h as handleAndDispatchCustomEvent } from '../shared/handleAndDispatchCustomEvent.js';\nimport { g as getActiveElement } from '../shared/getActiveElement.js';\nimport { i as injectSelectRootContext } from './SelectRoot.js';\nimport { i as injectSelectContentContext } from './SelectContentImpl.js';\n\nconst [injectSelectItemContext, provideSelectItemContext] = createContext(\"SelectItem\");\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"SelectItem\",\n props: {\n value: {},\n disabled: { type: Boolean },\n textValue: {},\n asChild: { type: Boolean },\n as: {}\n },\n emits: [\"select\"],\n setup(__props, { emit: __emit }) {\n const props = __props;\n const emits = __emit;\n const { disabled } = toRefs(props);\n const rootContext = injectSelectRootContext();\n const contentContext = injectSelectContentContext();\n const { forwardRef, currentElement } = useForwardExpose();\n const { CollectionItem } = useCollection();\n const isSelected = computed(() => valueComparator(rootContext.modelValue?.value, props.value, rootContext.by));\n const isFocused = ref(false);\n const textValue = ref(props.textValue ?? \"\");\n const textId = useId(undefined, \"reka-select-item-text\");\n const SELECT_SELECT = \"select.select\";\n async function handleSelectCustomEvent(ev) {\n if (ev.defaultPrevented)\n return;\n const eventDetail = { originalEvent: ev, value: props.value };\n handleAndDispatchCustomEvent(SELECT_SELECT, handleSelect, eventDetail);\n }\n async function handleSelect(ev) {\n await nextTick();\n emits(\"select\", ev);\n if (ev.defaultPrevented)\n return;\n if (!disabled.value) {\n rootContext.onValueChange(props.value);\n if (!rootContext.multiple.value)\n rootContext.onOpenChange(false);\n }\n }\n async function handlePointerMove(event) {\n await nextTick();\n if (event.defaultPrevented)\n return;\n if (disabled.value) {\n contentContext.onItemLeave?.();\n } else {\n event.currentTarget.focus({ preventScroll: true });\n }\n }\n async function handlePointerLeave(event) {\n await nextTick();\n if (event.defaultPrevented)\n return;\n if (event.currentTarget === getActiveElement())\n contentContext.onItemLeave?.();\n }\n async function handleKeyDown(event) {\n await nextTick();\n if (event.defaultPrevented)\n return;\n const isTypingAhead = contentContext.searchRef?.value !== \"\";\n if (isTypingAhead && event.key === \" \")\n return;\n if (SELECTION_KEYS.includes(event.key))\n handleSelectCustomEvent(event);\n if (event.key === \" \")\n event.preventDefault();\n }\n if (props.value === \"\") {\n throw new Error(\n \"A must have a value prop that is not an empty string. This is because the Select value can be set to an empty string to clear the selection and show the placeholder.\"\n );\n }\n onMounted(() => {\n if (!currentElement.value)\n return;\n contentContext.itemRefCallback(\n currentElement.value,\n props.value,\n props.disabled\n );\n });\n provideSelectItemContext({\n value: props.value,\n disabled,\n textId,\n isSelected,\n onItemTextChange: (node) => {\n textValue.value = ((textValue.value || node?.textContent) ?? \"\").trim();\n }\n });\n return (_ctx, _cache) => {\n return openBlock(), createBlock(unref(CollectionItem), {\n value: { textValue: textValue.value }\n }, {\n default: withCtx(() => [\n createVNode(unref(Primitive), {\n ref: unref(forwardRef),\n role: \"option\",\n \"aria-labelledby\": unref(textId),\n \"data-highlighted\": isFocused.value ? \"\" : undefined,\n \"aria-selected\": isSelected.value,\n \"data-state\": isSelected.value ? \"checked\" : \"unchecked\",\n \"aria-disabled\": unref(disabled) || undefined,\n \"data-disabled\": unref(disabled) ? \"\" : undefined,\n tabindex: unref(disabled) ? undefined : -1,\n as: _ctx.as,\n \"as-child\": _ctx.asChild,\n onFocus: _cache[0] || (_cache[0] = ($event) => isFocused.value = true),\n onBlur: _cache[1] || (_cache[1] = ($event) => isFocused.value = false),\n onPointerup: handleSelectCustomEvent,\n onPointerdown: _cache[2] || (_cache[2] = (event) => {\n event.currentTarget.focus({ preventScroll: true });\n }),\n onTouchend: _cache[3] || (_cache[3] = withModifiers(() => {\n }, [\"prevent\", \"stop\"])),\n onPointermove: handlePointerMove,\n onPointerleave: handlePointerLeave,\n onKeydown: handleKeyDown\n }, {\n default: withCtx(() => [\n renderSlot(_ctx.$slots, \"default\")\n ]),\n _: 3\n }, 8, [\"aria-labelledby\", \"data-highlighted\", \"aria-selected\", \"data-state\", \"aria-disabled\", \"data-disabled\", \"tabindex\", \"as\", \"as-child\"])\n ]),\n _: 3\n }, 8, [\"value\"]);\n };\n }\n});\n\nexport { _sfc_main as _, injectSelectItemContext as i };\n//# sourceMappingURL=SelectItem.js.map\n","import { defineComponent, unref, openBlock, createBlock, mergeProps, withCtx, renderSlot, createCommentVNode } from 'vue';\nimport { i as injectSelectItemContext } from './SelectItem.js';\nimport { P as Primitive } from '../Primitive/Primitive.js';\n\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"SelectItemIndicator\",\n props: {\n asChild: { type: Boolean },\n as: { default: \"span\" }\n },\n setup(__props) {\n const props = __props;\n const itemContext = injectSelectItemContext();\n return (_ctx, _cache) => {\n return unref(itemContext).isSelected.value ? (openBlock(), createBlock(unref(Primitive), mergeProps({\n key: 0,\n \"aria-hidden\": \"true\"\n }, props), {\n default: withCtx(() => [\n renderSlot(_ctx.$slots, \"default\")\n ]),\n _: 3\n }, 16)) : createCommentVNode(\"\", true);\n };\n }\n});\n\nexport { _sfc_main as _ };\n//# sourceMappingURL=SelectItemIndicator.js.map\n","import { defineComponent, openBlock, createBlock, unref, mergeProps, withCtx, renderSlot } from 'vue';\nimport { u as useId } from '../shared/useId.js';\nimport { P as Primitive } from '../Primitive/Primitive.js';\nimport { c as createContext } from '../shared/createContext.js';\n\nconst [injectSelectGroupContext, provideSelectGroupContext] = createContext(\"SelectGroup\");\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"SelectGroup\",\n props: {\n asChild: { type: Boolean },\n as: {}\n },\n setup(__props) {\n const props = __props;\n const id = useId(undefined, \"reka-select-group\");\n provideSelectGroupContext({ id });\n return (_ctx, _cache) => {\n return openBlock(), createBlock(unref(Primitive), mergeProps({ role: \"group\" }, props, { \"aria-labelledby\": unref(id) }), {\n default: withCtx(() => [\n renderSlot(_ctx.$slots, \"default\")\n ]),\n _: 3\n }, 16, [\"aria-labelledby\"]);\n };\n }\n});\n\nexport { _sfc_main as _, injectSelectGroupContext as i };\n//# sourceMappingURL=SelectGroup.js.map\n","import { defineComponent, openBlock, createBlock, unref, mergeProps, withCtx, renderSlot } from 'vue';\nimport { i as injectSelectGroupContext } from './SelectGroup.js';\nimport { P as Primitive } from '../Primitive/Primitive.js';\n\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"SelectLabel\",\n props: {\n for: {},\n asChild: { type: Boolean },\n as: { default: \"div\" }\n },\n setup(__props) {\n const props = __props;\n const groupContext = injectSelectGroupContext({ id: \"\" });\n return (_ctx, _cache) => {\n return openBlock(), createBlock(unref(Primitive), mergeProps(props, {\n id: unref(groupContext).id\n }), {\n default: withCtx(() => [\n renderSlot(_ctx.$slots, \"default\")\n ]),\n _: 3\n }, 16, [\"id\"]);\n };\n }\n});\n\nexport { _sfc_main as _ };\n//# sourceMappingURL=SelectLabel.js.map\n","import { defineComponent, computed, onMounted, onBeforeUnmount, openBlock, createBlock, unref, mergeProps, withCtx, renderSlot } from 'vue';\nimport { u as useForwardExpose } from '../shared/useForwardExpose.js';\nimport { P as Primitive } from '../Primitive/Primitive.js';\nimport { i as injectSelectRootContext } from './SelectRoot.js';\nimport { i as injectSelectContentContext } from './SelectContentImpl.js';\nimport { i as injectSelectItemContext } from './SelectItem.js';\n\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n ...{\n inheritAttrs: false\n },\n __name: \"SelectItemText\",\n props: {\n asChild: { type: Boolean },\n as: { default: \"span\" }\n },\n setup(__props) {\n const props = __props;\n const rootContext = injectSelectRootContext();\n const contentContext = injectSelectContentContext();\n const itemContext = injectSelectItemContext();\n const { forwardRef, currentElement: itemTextElement } = useForwardExpose();\n const optionProps = computed(() => {\n return {\n value: itemContext.value,\n disabled: itemContext.disabled.value,\n textContent: itemTextElement.value?.textContent ?? itemContext.value?.toString() ?? \"\"\n };\n });\n onMounted(() => {\n if (!itemTextElement.value)\n return;\n itemContext.onItemTextChange(itemTextElement.value);\n contentContext.itemTextRefCallback(\n itemTextElement.value,\n itemContext.value,\n itemContext.disabled.value\n );\n rootContext.onOptionAdd(optionProps.value);\n });\n onBeforeUnmount(() => {\n rootContext.onOptionRemove(optionProps.value);\n });\n return (_ctx, _cache) => {\n return openBlock(), createBlock(unref(Primitive), mergeProps({\n id: unref(itemContext).textId,\n ref: unref(forwardRef)\n }, { ...props, ..._ctx.$attrs }), {\n default: withCtx(() => [\n renderSlot(_ctx.$slots, \"default\")\n ]),\n _: 3\n }, 16, [\"id\"]);\n };\n }\n});\n\nexport { _sfc_main as _ };\n//# sourceMappingURL=SelectItemText.js.map\n","import { defineComponent, toRefs, onMounted, ref, openBlock, createElementBlock, Fragment, createVNode, unref, mergeProps, withCtx, renderSlot, createTextVNode } from 'vue';\nimport { C as CONTENT_MARGIN } from './utils.js';\nimport { u as useNonce } from '../shared/useNonce.js';\nimport { i as injectSelectItemAlignedPositionContext } from './SelectItemAlignedPosition.js';\nimport { u as useForwardExpose } from '../shared/useForwardExpose.js';\nimport { P as Primitive } from '../Primitive/Primitive.js';\nimport { i as injectSelectContentContext } from './SelectContentImpl.js';\n\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"SelectViewport\",\n props: {\n nonce: {},\n asChild: { type: Boolean },\n as: {}\n },\n setup(__props) {\n const props = __props;\n const { nonce: propNonce } = toRefs(props);\n const nonce = useNonce(propNonce);\n const contentContext = injectSelectContentContext();\n const alignedPositionContext = contentContext.position === \"item-aligned\" ? injectSelectItemAlignedPositionContext() : undefined;\n const { forwardRef, currentElement } = useForwardExpose();\n onMounted(() => {\n contentContext?.onViewportChange(currentElement.value);\n });\n const prevScrollTopRef = ref(0);\n function handleScroll(event) {\n const viewport = event.currentTarget;\n const { shouldExpandOnScrollRef, contentWrapper } = alignedPositionContext ?? {};\n if (shouldExpandOnScrollRef?.value && contentWrapper?.value) {\n const scrolledBy = Math.abs(prevScrollTopRef.value - viewport.scrollTop);\n if (scrolledBy > 0) {\n const availableHeight = window.innerHeight - CONTENT_MARGIN * 2;\n const cssMinHeight = Number.parseFloat(\n contentWrapper.value.style.minHeight\n );\n const cssHeight = Number.parseFloat(contentWrapper.value.style.height);\n const prevHeight = Math.max(cssMinHeight, cssHeight);\n if (prevHeight < availableHeight) {\n const nextHeight = prevHeight + scrolledBy;\n const clampedNextHeight = Math.min(availableHeight, nextHeight);\n const heightDiff = nextHeight - clampedNextHeight;\n contentWrapper.value.style.height = `${clampedNextHeight}px`;\n if (contentWrapper.value.style.bottom === \"0px\") {\n viewport.scrollTop = heightDiff > 0 ? heightDiff : 0;\n contentWrapper.value.style.justifyContent = \"flex-end\";\n }\n }\n }\n }\n prevScrollTopRef.value = viewport.scrollTop;\n }\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(Fragment, null, [\n createVNode(unref(Primitive), mergeProps({\n ref: unref(forwardRef),\n \"data-reka-select-viewport\": \"\",\n role: \"presentation\"\n }, { ..._ctx.$attrs, ...props }, {\n style: {\n // we use position: 'relative' here on the `viewport` so that when we call\n // `selectedItem.offsetTop` in calculations, the offset is relative to the viewport\n // (independent of the scrollUpButton).\n position: \"relative\",\n flex: 1,\n overflow: \"hidden auto\"\n },\n onScroll: handleScroll\n }), {\n default: withCtx(() => [\n renderSlot(_ctx.$slots, \"default\")\n ]),\n _: 3\n }, 16),\n createVNode(unref(Primitive), {\n as: \"style\",\n nonce: unref(nonce)\n }, {\n default: withCtx(() => _cache[0] || (_cache[0] = [\n createTextVNode(\" /* Hide scrollbars cross-browser and enable momentum scroll for touch devices */ [data-reka-select-viewport] { scrollbar-width:none; -ms-overflow-style: none; -webkit-overflow-scrolling: touch; } [data-reka-select-viewport]::-webkit-scrollbar { display: none; } \")\n ])),\n _: 1\n }, 8, [\"nonce\"])\n ], 64);\n };\n }\n});\n\nexport { _sfc_main as _ };\n//# sourceMappingURL=SelectViewport.js.map\n","import { defineComponent, ref, watchEffect, onBeforeUnmount, openBlock, createBlock, unref, mergeProps, withCtx, renderSlot } from 'vue';\nimport { u as useCollection } from '../Collection/Collection.js';\nimport { g as getActiveElement } from '../shared/getActiveElement.js';\nimport { P as Primitive } from '../Primitive/Primitive.js';\nimport { i as injectSelectContentContext } from './SelectContentImpl.js';\n\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"SelectScrollButtonImpl\",\n emits: [\"autoScroll\"],\n setup(__props, { emit: __emit }) {\n const emits = __emit;\n const { getItems } = useCollection();\n const contentContext = injectSelectContentContext();\n const autoScrollTimerRef = ref(null);\n function clearAutoScrollTimer() {\n if (autoScrollTimerRef.value !== null) {\n window.clearInterval(autoScrollTimerRef.value);\n autoScrollTimerRef.value = null;\n }\n }\n watchEffect(() => {\n const activeItem = getItems().map((i) => i.ref).find(\n (item) => item === getActiveElement()\n );\n activeItem?.scrollIntoView({ block: \"nearest\" });\n });\n function handlePointerDown() {\n if (autoScrollTimerRef.value === null) {\n autoScrollTimerRef.value = window.setInterval(() => {\n emits(\"autoScroll\");\n }, 50);\n }\n }\n function handlePointerMove() {\n contentContext.onItemLeave?.();\n if (autoScrollTimerRef.value === null) {\n autoScrollTimerRef.value = window.setInterval(() => {\n emits(\"autoScroll\");\n }, 50);\n }\n }\n onBeforeUnmount(() => clearAutoScrollTimer());\n return (_ctx, _cache) => {\n return openBlock(), createBlock(unref(Primitive), mergeProps({\n \"aria-hidden\": \"true\",\n style: {\n flexShrink: 0\n }\n }, _ctx.$parent?.$props, {\n onPointerdown: handlePointerDown,\n onPointermove: handlePointerMove,\n onPointerleave: _cache[0] || (_cache[0] = () => {\n clearAutoScrollTimer();\n })\n }), {\n default: withCtx(() => [\n renderSlot(_ctx.$slots, \"default\")\n ]),\n _: 3\n }, 16);\n };\n }\n});\n\nexport { _sfc_main as _ };\n//# sourceMappingURL=SelectScrollButtonImpl.js.map\n","import { defineComponent, ref, watchEffect, watch, openBlock, createBlock, unref, withCtx, renderSlot, createCommentVNode } from 'vue';\nimport { _ as _sfc_main$1 } from './SelectScrollButtonImpl.js';\nimport { u as useForwardExpose } from '../shared/useForwardExpose.js';\nimport { i as injectSelectContentContext } from './SelectContentImpl.js';\nimport { i as injectSelectItemAlignedPositionContext } from './SelectItemAlignedPosition.js';\n\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"SelectScrollUpButton\",\n props: {\n asChild: { type: Boolean },\n as: {}\n },\n setup(__props) {\n const contentContext = injectSelectContentContext();\n const alignedPositionContext = contentContext.position === \"item-aligned\" ? injectSelectItemAlignedPositionContext() : undefined;\n const { forwardRef, currentElement } = useForwardExpose();\n const canScrollUp = ref(false);\n watchEffect((cleanupFn) => {\n if (contentContext.viewport?.value && contentContext.isPositioned?.value) {\n let handleScroll = function() {\n canScrollUp.value = viewport.scrollTop > 0;\n };\n const viewport = contentContext.viewport.value;\n handleScroll();\n viewport.addEventListener(\"scroll\", handleScroll);\n cleanupFn(() => viewport.removeEventListener(\"scroll\", handleScroll));\n }\n });\n watch(currentElement, () => {\n if (currentElement.value)\n alignedPositionContext?.onScrollButtonChange(currentElement.value);\n });\n return (_ctx, _cache) => {\n return canScrollUp.value ? (openBlock(), createBlock(_sfc_main$1, {\n key: 0,\n ref: unref(forwardRef),\n onAutoScroll: _cache[0] || (_cache[0] = () => {\n const { viewport, selectedItem } = unref(contentContext);\n if (viewport?.value && selectedItem?.value) {\n viewport.value.scrollTop = viewport.value.scrollTop - selectedItem.value.offsetHeight;\n }\n })\n }, {\n default: withCtx(() => [\n renderSlot(_ctx.$slots, \"default\")\n ]),\n _: 3\n }, 512)) : createCommentVNode(\"\", true);\n };\n }\n});\n\nexport { _sfc_main as _ };\n//# sourceMappingURL=SelectScrollUpButton.js.map\n","import { defineComponent, ref, watchEffect, watch, openBlock, createBlock, unref, withCtx, renderSlot, createCommentVNode } from 'vue';\nimport { _ as _sfc_main$1 } from './SelectScrollButtonImpl.js';\nimport { u as useForwardExpose } from '../shared/useForwardExpose.js';\nimport { i as injectSelectContentContext } from './SelectContentImpl.js';\nimport { i as injectSelectItemAlignedPositionContext } from './SelectItemAlignedPosition.js';\n\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"SelectScrollDownButton\",\n props: {\n asChild: { type: Boolean },\n as: {}\n },\n setup(__props) {\n const contentContext = injectSelectContentContext();\n const alignedPositionContext = contentContext.position === \"item-aligned\" ? injectSelectItemAlignedPositionContext() : undefined;\n const { forwardRef, currentElement } = useForwardExpose();\n const canScrollDown = ref(false);\n watchEffect((cleanupFn) => {\n if (contentContext.viewport?.value && contentContext.isPositioned?.value) {\n let handleScroll = function() {\n const maxScroll = viewport.scrollHeight - viewport.clientHeight;\n canScrollDown.value = Math.ceil(viewport.scrollTop) < maxScroll;\n };\n const viewport = contentContext.viewport.value;\n handleScroll();\n viewport.addEventListener(\"scroll\", handleScroll);\n cleanupFn(() => viewport.removeEventListener(\"scroll\", handleScroll));\n }\n });\n watch(currentElement, () => {\n if (currentElement.value)\n alignedPositionContext?.onScrollButtonChange(currentElement.value);\n });\n return (_ctx, _cache) => {\n return canScrollDown.value ? (openBlock(), createBlock(_sfc_main$1, {\n key: 0,\n ref: unref(forwardRef),\n onAutoScroll: _cache[0] || (_cache[0] = () => {\n const { viewport, selectedItem } = unref(contentContext);\n if (viewport?.value && selectedItem?.value) {\n viewport.value.scrollTop = viewport.value.scrollTop + selectedItem.value.offsetHeight;\n }\n })\n }, {\n default: withCtx(() => [\n renderSlot(_ctx.$slots, \"default\")\n ]),\n _: 3\n }, 512)) : createCommentVNode(\"\", true);\n };\n }\n});\n\nexport { _sfc_main as _ };\n//# sourceMappingURL=SelectScrollDownButton.js.map\n","import { defineComponent, onMounted, computed, openBlock, createBlock, unref, withCtx, renderSlot, createTextVNode, toDisplayString } from 'vue';\nimport { u as useForwardExpose } from '../shared/useForwardExpose.js';\nimport { P as Primitive } from '../Primitive/Primitive.js';\nimport { i as injectSelectRootContext } from './SelectRoot.js';\n\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"SelectValue\",\n props: {\n placeholder: { default: \"\" },\n asChild: { type: Boolean },\n as: { default: \"span\" }\n },\n setup(__props) {\n const props = __props;\n const { forwardRef, currentElement } = useForwardExpose();\n const rootContext = injectSelectRootContext();\n onMounted(() => {\n rootContext.valueElement = currentElement;\n });\n const selectedLabel = computed(() => {\n let list = [];\n const options = Array.from(rootContext.optionsSet.value);\n const getOption = (value) => options.find((option) => option.value === value);\n if (Array.isArray(rootContext.modelValue.value)) {\n list = rootContext.modelValue.value.map((value) => getOption(value)?.textContent ?? \"\");\n } else {\n list = [getOption(rootContext.modelValue.value)?.textContent ?? \"\"];\n }\n return list.filter(Boolean);\n });\n const slotText = computed(() => {\n return selectedLabel.value.length ? selectedLabel.value.join(\", \") : props.placeholder;\n });\n return (_ctx, _cache) => {\n return openBlock(), createBlock(unref(Primitive), {\n ref: unref(forwardRef),\n as: _ctx.as,\n \"as-child\": _ctx.asChild,\n style: { pointerEvents: \"none\" },\n \"data-placeholder\": selectedLabel.value.length ? undefined : props.placeholder\n }, {\n default: withCtx(() => [\n renderSlot(_ctx.$slots, \"default\", {\n selectedLabel: selectedLabel.value,\n modelValue: unref(rootContext).modelValue.value\n }, () => [\n createTextVNode(toDisplayString(slotText.value), 1)\n ])\n ]),\n _: 3\n }, 8, [\"as\", \"as-child\", \"data-placeholder\"]);\n };\n }\n});\n\nexport { _sfc_main as _ };\n//# sourceMappingURL=SelectValue.js.map\n","import { defineComponent, openBlock, createBlock, unref, withCtx, renderSlot, createTextVNode } from 'vue';\nimport { P as Primitive } from '../Primitive/Primitive.js';\n\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"SelectIcon\",\n props: {\n asChild: { type: Boolean },\n as: { default: \"span\" }\n },\n setup(__props) {\n return (_ctx, _cache) => {\n return openBlock(), createBlock(unref(Primitive), {\n \"aria-hidden\": \"true\",\n as: _ctx.as,\n \"as-child\": _ctx.asChild\n }, {\n default: withCtx(() => [\n renderSlot(_ctx.$slots, \"default\", {}, () => [\n _cache[0] || (_cache[0] = createTextVNode(\"▼\"))\n ])\n ]),\n _: 3\n }, 8, [\"as\", \"as-child\"]);\n };\n }\n});\n\nexport { _sfc_main as _ };\n//# sourceMappingURL=SelectIcon.js.map\n","import { defineComponent, toRefs, computed, openBlock, createBlock, unref, mergeProps, withKeys, withModifiers, withCtx, renderSlot, createCommentVNode } from 'vue';\nimport { useVModel } from '@vueuse/core';\nimport { u as useForwardExpose } from '../shared/useForwardExpose.js';\nimport { u as useFormControl } from '../shared/useFormControl.js';\nimport { P as Primitive } from '../Primitive/Primitive.js';\nimport { _ as _sfc_main$1 } from '../VisuallyHidden/VisuallyHiddenInput.js';\nimport { c as createContext } from '../shared/createContext.js';\n\nconst [injectSwitchRootContext, provideSwitchRootContext] = createContext(\"SwitchRoot\");\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"SwitchRoot\",\n props: {\n defaultValue: { type: Boolean },\n modelValue: { type: [Boolean, null], default: undefined },\n disabled: { type: Boolean },\n id: {},\n value: { default: \"on\" },\n asChild: { type: Boolean },\n as: { default: \"button\" },\n name: {},\n required: { type: Boolean }\n },\n emits: [\"update:modelValue\"],\n setup(__props, { emit: __emit }) {\n const props = __props;\n const emit = __emit;\n const { disabled } = toRefs(props);\n const modelValue = useVModel(props, \"modelValue\", emit, {\n defaultValue: props.defaultValue,\n passive: props.modelValue === undefined\n });\n function toggleCheck() {\n if (disabled.value)\n return;\n modelValue.value = !modelValue.value;\n }\n const { forwardRef, currentElement } = useForwardExpose();\n const isFormControl = useFormControl(currentElement);\n const ariaLabel = computed(() => props.id && currentElement.value ? document.querySelector(`[for=\"${props.id}\"]`)?.innerText : undefined);\n provideSwitchRootContext({\n modelValue,\n toggleCheck,\n disabled\n });\n return (_ctx, _cache) => {\n return openBlock(), createBlock(unref(Primitive), mergeProps(_ctx.$attrs, {\n id: _ctx.id,\n ref: unref(forwardRef),\n role: \"switch\",\n type: _ctx.as === \"button\" ? \"button\" : undefined,\n value: _ctx.value,\n \"aria-label\": _ctx.$attrs[\"aria-label\"] || ariaLabel.value,\n \"aria-checked\": unref(modelValue),\n \"aria-required\": _ctx.required,\n \"data-state\": unref(modelValue) ? \"checked\" : \"unchecked\",\n \"data-disabled\": unref(disabled) ? \"\" : undefined,\n \"as-child\": _ctx.asChild,\n as: _ctx.as,\n disabled: unref(disabled),\n onClick: toggleCheck,\n onKeydown: withKeys(withModifiers(toggleCheck, [\"prevent\"]), [\"enter\"])\n }), {\n default: withCtx(() => [\n renderSlot(_ctx.$slots, \"default\", { modelValue: unref(modelValue) }),\n unref(isFormControl) && _ctx.name ? (openBlock(), createBlock(unref(_sfc_main$1), {\n key: 0,\n type: \"checkbox\",\n name: _ctx.name,\n disabled: unref(disabled),\n required: _ctx.required,\n value: _ctx.value,\n checked: !!unref(modelValue)\n }, null, 8, [\"name\", \"disabled\", \"required\", \"value\", \"checked\"])) : createCommentVNode(\"\", true)\n ]),\n _: 3\n }, 16, [\"id\", \"type\", \"value\", \"aria-label\", \"aria-checked\", \"aria-required\", \"data-state\", \"data-disabled\", \"as-child\", \"as\", \"disabled\", \"onKeydown\"]);\n };\n }\n});\n\nexport { _sfc_main as _, injectSwitchRootContext as i };\n//# sourceMappingURL=SwitchRoot.js.map\n","import { defineComponent, openBlock, createBlock, unref, withCtx, renderSlot } from 'vue';\nimport { i as injectSwitchRootContext } from './SwitchRoot.js';\nimport { u as useForwardExpose } from '../shared/useForwardExpose.js';\nimport { P as Primitive } from '../Primitive/Primitive.js';\n\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"SwitchThumb\",\n props: {\n asChild: { type: Boolean },\n as: { default: \"span\" }\n },\n setup(__props) {\n const rootContext = injectSwitchRootContext();\n useForwardExpose();\n return (_ctx, _cache) => {\n return openBlock(), createBlock(unref(Primitive), {\n \"data-state\": unref(rootContext).modelValue?.value ? \"checked\" : \"unchecked\",\n \"data-disabled\": unref(rootContext).disabled.value ? \"\" : undefined,\n \"as-child\": _ctx.asChild,\n as: _ctx.as\n }, {\n default: withCtx(() => [\n renderSlot(_ctx.$slots, \"default\")\n ]),\n _: 3\n }, 8, [\"data-state\", \"data-disabled\", \"as-child\", \"as\"]);\n };\n }\n});\n\nexport { _sfc_main as _ };\n//# sourceMappingURL=SwitchThumb.js.map\n","import { defineComponent, toRefs, ref, openBlock, createBlock, unref, withCtx, renderSlot } from 'vue';\nimport { useVModel } from '@vueuse/core';\nimport { u as useDirection } from '../shared/useDirection.js';\nimport { u as useForwardExpose } from '../shared/useForwardExpose.js';\nimport { u as useId } from '../shared/useId.js';\nimport { P as Primitive } from '../Primitive/Primitive.js';\nimport { c as createContext } from '../shared/createContext.js';\n\nconst [injectTabsRootContext, provideTabsRootContext] = createContext(\"TabsRoot\");\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"TabsRoot\",\n props: {\n defaultValue: {},\n orientation: { default: \"horizontal\" },\n dir: {},\n activationMode: { default: \"automatic\" },\n modelValue: {},\n unmountOnHide: { type: Boolean, default: true },\n asChild: { type: Boolean },\n as: {}\n },\n emits: [\"update:modelValue\"],\n setup(__props, { emit: __emit }) {\n const props = __props;\n const emits = __emit;\n const { orientation, unmountOnHide, dir: propDir } = toRefs(props);\n const dir = useDirection(propDir);\n useForwardExpose();\n const modelValue = useVModel(props, \"modelValue\", emits, {\n defaultValue: props.defaultValue,\n passive: props.modelValue === undefined\n });\n const tabsList = ref();\n provideTabsRootContext({\n modelValue,\n changeModelValue: (value) => {\n modelValue.value = value;\n },\n orientation,\n dir,\n unmountOnHide,\n activationMode: props.activationMode,\n baseId: useId(undefined, \"reka-tabs\"),\n tabsList\n });\n return (_ctx, _cache) => {\n return openBlock(), createBlock(unref(Primitive), {\n dir: unref(dir),\n \"data-orientation\": unref(orientation),\n \"as-child\": _ctx.asChild,\n as: _ctx.as\n }, {\n default: withCtx(() => [\n renderSlot(_ctx.$slots, \"default\", { modelValue: unref(modelValue) })\n ]),\n _: 3\n }, 8, [\"dir\", \"data-orientation\", \"as-child\", \"as\"]);\n };\n }\n});\n\nexport { _sfc_main as _, injectTabsRootContext as i };\n//# sourceMappingURL=TabsRoot.js.map\n","import { defineComponent, toRefs, openBlock, createBlock, unref, withCtx, createVNode, renderSlot } from 'vue';\nimport { _ as _sfc_main$1 } from '../RovingFocus/RovingFocusGroup.js';\nimport { u as useForwardExpose } from '../shared/useForwardExpose.js';\nimport { i as injectTabsRootContext } from './TabsRoot.js';\nimport { P as Primitive } from '../Primitive/Primitive.js';\n\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"TabsList\",\n props: {\n loop: { type: Boolean, default: true },\n asChild: { type: Boolean },\n as: {}\n },\n setup(__props) {\n const props = __props;\n const { loop } = toRefs(props);\n const { forwardRef, currentElement } = useForwardExpose();\n const context = injectTabsRootContext();\n context.tabsList = currentElement;\n return (_ctx, _cache) => {\n return openBlock(), createBlock(unref(_sfc_main$1), {\n \"as-child\": \"\",\n orientation: unref(context).orientation.value,\n dir: unref(context).dir.value,\n loop: unref(loop)\n }, {\n default: withCtx(() => [\n createVNode(unref(Primitive), {\n ref: unref(forwardRef),\n role: \"tablist\",\n \"as-child\": _ctx.asChild,\n as: _ctx.as,\n \"aria-orientation\": unref(context).orientation.value\n }, {\n default: withCtx(() => [\n renderSlot(_ctx.$slots, \"default\")\n ]),\n _: 3\n }, 8, [\"as-child\", \"as\", \"aria-orientation\"])\n ]),\n _: 3\n }, 8, [\"orientation\", \"dir\", \"loop\"]);\n };\n }\n});\n\nexport { _sfc_main as _ };\n//# sourceMappingURL=TabsList.js.map\n","function makeTriggerId(baseId, value) {\n return `${baseId}-trigger-${value}`;\n}\nfunction makeContentId(baseId, value) {\n return `${baseId}-content-${value}`;\n}\n\nexport { makeContentId as a, makeTriggerId as m };\n//# sourceMappingURL=utils.js.map\n","import { defineComponent, computed, ref, onMounted, openBlock, createBlock, unref, withCtx, createVNode, normalizeStyle, renderSlot, createCommentVNode } from 'vue';\nimport { m as makeTriggerId, a as makeContentId } from './utils.js';\nimport { u as useForwardExpose } from '../shared/useForwardExpose.js';\nimport { P as Presence } from '../Presence/Presence.js';\nimport { P as Primitive } from '../Primitive/Primitive.js';\nimport { i as injectTabsRootContext } from './TabsRoot.js';\n\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"TabsContent\",\n props: {\n value: {},\n forceMount: { type: Boolean },\n asChild: { type: Boolean },\n as: {}\n },\n setup(__props) {\n const props = __props;\n const { forwardRef } = useForwardExpose();\n const rootContext = injectTabsRootContext();\n const triggerId = computed(() => makeTriggerId(rootContext.baseId, props.value));\n const contentId = computed(() => makeContentId(rootContext.baseId, props.value));\n const isSelected = computed(() => props.value === rootContext.modelValue.value);\n const isMountAnimationPreventedRef = ref(isSelected.value);\n onMounted(() => {\n requestAnimationFrame(() => {\n isMountAnimationPreventedRef.value = false;\n });\n });\n return (_ctx, _cache) => {\n return openBlock(), createBlock(unref(Presence), {\n present: _ctx.forceMount || isSelected.value,\n \"force-mount\": \"\"\n }, {\n default: withCtx(({ present }) => [\n createVNode(unref(Primitive), {\n id: contentId.value,\n ref: unref(forwardRef),\n \"as-child\": _ctx.asChild,\n as: _ctx.as,\n role: \"tabpanel\",\n \"data-state\": isSelected.value ? \"active\" : \"inactive\",\n \"data-orientation\": unref(rootContext).orientation.value,\n \"aria-labelledby\": triggerId.value,\n hidden: !present,\n tabindex: \"0\",\n style: normalizeStyle({\n animationDuration: isMountAnimationPreventedRef.value ? \"0s\" : undefined\n })\n }, {\n default: withCtx(() => [\n (unref(rootContext).unmountOnHide.value ? present : true) ? renderSlot(_ctx.$slots, \"default\", { key: 0 }) : createCommentVNode(\"\", true)\n ]),\n _: 2\n }, 1032, [\"id\", \"as-child\", \"as\", \"data-state\", \"data-orientation\", \"aria-labelledby\", \"hidden\", \"style\"])\n ]),\n _: 3\n }, 8, [\"present\"]);\n };\n }\n});\n\nexport { _sfc_main as _ };\n//# sourceMappingURL=TabsContent.js.map\n","import { defineComponent, computed, openBlock, createBlock, unref, withCtx, createVNode, withModifiers, withKeys, renderSlot } from 'vue';\nimport { _ as _sfc_main$1 } from '../RovingFocus/RovingFocusItem.js';\nimport { m as makeTriggerId, a as makeContentId } from './utils.js';\nimport { u as useForwardExpose } from '../shared/useForwardExpose.js';\nimport { P as Primitive } from '../Primitive/Primitive.js';\nimport { i as injectTabsRootContext } from './TabsRoot.js';\n\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"TabsTrigger\",\n props: {\n value: {},\n disabled: { type: Boolean, default: false },\n asChild: { type: Boolean },\n as: { default: \"button\" }\n },\n setup(__props) {\n const props = __props;\n const { forwardRef } = useForwardExpose();\n const rootContext = injectTabsRootContext();\n const triggerId = computed(() => makeTriggerId(rootContext.baseId, props.value));\n const contentId = computed(() => makeContentId(rootContext.baseId, props.value));\n const isSelected = computed(() => props.value === rootContext.modelValue.value);\n return (_ctx, _cache) => {\n return openBlock(), createBlock(unref(_sfc_main$1), {\n \"as-child\": \"\",\n focusable: !_ctx.disabled,\n active: isSelected.value\n }, {\n default: withCtx(() => [\n createVNode(unref(Primitive), {\n id: triggerId.value,\n ref: unref(forwardRef),\n role: \"tab\",\n type: _ctx.as === \"button\" ? \"button\" : undefined,\n as: _ctx.as,\n \"as-child\": _ctx.asChild,\n \"aria-selected\": isSelected.value ? \"true\" : \"false\",\n \"aria-controls\": contentId.value,\n \"data-state\": isSelected.value ? \"active\" : \"inactive\",\n disabled: _ctx.disabled,\n \"data-disabled\": _ctx.disabled ? \"\" : undefined,\n \"data-orientation\": unref(rootContext).orientation.value,\n onMousedown: _cache[0] || (_cache[0] = withModifiers((event) => {\n if (!_ctx.disabled && event.ctrlKey === false) {\n unref(rootContext).changeModelValue(_ctx.value);\n } else {\n event.preventDefault();\n }\n }, [\"left\"])),\n onKeydown: _cache[1] || (_cache[1] = withKeys(($event) => unref(rootContext).changeModelValue(_ctx.value), [\"enter\", \"space\"])),\n onFocus: _cache[2] || (_cache[2] = () => {\n const isAutomaticActivation = unref(rootContext).activationMode !== \"manual\";\n if (!isSelected.value && !_ctx.disabled && isAutomaticActivation) {\n unref(rootContext).changeModelValue(_ctx.value);\n }\n })\n }, {\n default: withCtx(() => [\n renderSlot(_ctx.$slots, \"default\")\n ]),\n _: 3\n }, 8, [\"id\", \"type\", \"as\", \"as-child\", \"aria-selected\", \"aria-controls\", \"data-state\", \"disabled\", \"data-disabled\", \"data-orientation\"])\n ]),\n _: 3\n }, 8, [\"focusable\", \"active\"]);\n };\n }\n});\n\nexport { _sfc_main as _ };\n//# sourceMappingURL=TabsTrigger.js.map\n","const TOOLTIP_OPEN = \"tooltip.open\";\n\nexport { TOOLTIP_OPEN as T };\n//# sourceMappingURL=utils.js.map\n","import { defineComponent, toRefs, ref, renderSlot } from 'vue';\nimport { useTimeoutFn } from '@vueuse/shared';\nimport { u as useForwardExpose } from '../shared/useForwardExpose.js';\nimport { c as createContext } from '../shared/createContext.js';\n\nconst [injectTooltipProviderContext, provideTooltipProviderContext] = createContext(\"TooltipProvider\");\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n ...{\n inheritAttrs: false\n },\n __name: \"TooltipProvider\",\n props: {\n delayDuration: { default: 700 },\n skipDelayDuration: { default: 300 },\n disableHoverableContent: { type: Boolean, default: false },\n disableClosingTrigger: { type: Boolean },\n disabled: { type: Boolean },\n ignoreNonKeyboardFocus: { type: Boolean, default: false }\n },\n setup(__props) {\n const props = __props;\n const { delayDuration, skipDelayDuration, disableHoverableContent, disableClosingTrigger, ignoreNonKeyboardFocus, disabled } = toRefs(props);\n useForwardExpose();\n const isOpenDelayed = ref(true);\n const isPointerInTransitRef = ref(false);\n const { start: startTimer, stop: clearTimer } = useTimeoutFn(() => {\n isOpenDelayed.value = true;\n }, skipDelayDuration, { immediate: false });\n provideTooltipProviderContext({\n isOpenDelayed,\n delayDuration,\n onOpen() {\n clearTimer();\n isOpenDelayed.value = false;\n },\n onClose() {\n startTimer();\n },\n isPointerInTransitRef,\n disableHoverableContent,\n disableClosingTrigger,\n disabled,\n ignoreNonKeyboardFocus\n });\n return (_ctx, _cache) => {\n return renderSlot(_ctx.$slots, \"default\");\n };\n }\n});\n\nexport { _sfc_main as _, injectTooltipProviderContext as i };\n//# sourceMappingURL=TooltipProvider.js.map\n","import { defineComponent, computed, watch, ref, openBlock, createBlock, unref, withCtx, renderSlot } from 'vue';\nimport { useVModel, useTimeoutFn } from '@vueuse/core';\nimport { _ as _sfc_main$1 } from '../Popper/PopperRoot.js';\nimport { T as TOOLTIP_OPEN } from './utils.js';\nimport { u as useForwardExpose } from '../shared/useForwardExpose.js';\nimport { i as injectTooltipProviderContext } from './TooltipProvider.js';\nimport { c as createContext } from '../shared/createContext.js';\n\nconst [injectTooltipRootContext, provideTooltipRootContext] = createContext(\"TooltipRoot\");\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"TooltipRoot\",\n props: {\n defaultOpen: { type: Boolean, default: false },\n open: { type: Boolean, default: undefined },\n delayDuration: { default: undefined },\n disableHoverableContent: { type: Boolean, default: undefined },\n disableClosingTrigger: { type: Boolean, default: undefined },\n disabled: { type: Boolean, default: undefined },\n ignoreNonKeyboardFocus: { type: Boolean, default: undefined }\n },\n emits: [\"update:open\"],\n setup(__props, { emit: __emit }) {\n const props = __props;\n const emit = __emit;\n useForwardExpose();\n const providerContext = injectTooltipProviderContext();\n const disableHoverableContent = computed(() => props.disableHoverableContent ?? providerContext.disableHoverableContent.value);\n const disableClosingTrigger = computed(() => props.disableClosingTrigger ?? providerContext.disableClosingTrigger.value);\n const disableTooltip = computed(() => props.disabled ?? providerContext.disabled.value);\n const delayDuration = computed(() => props.delayDuration ?? providerContext.delayDuration.value);\n const ignoreNonKeyboardFocus = computed(() => props.ignoreNonKeyboardFocus ?? providerContext.ignoreNonKeyboardFocus.value);\n const open = useVModel(props, \"open\", emit, {\n defaultValue: props.defaultOpen,\n passive: props.open === undefined\n });\n watch(open, (isOpen) => {\n if (!providerContext.onClose)\n return;\n if (isOpen) {\n providerContext.onOpen();\n document.dispatchEvent(new CustomEvent(TOOLTIP_OPEN));\n } else {\n providerContext.onClose();\n }\n });\n const wasOpenDelayedRef = ref(false);\n const trigger = ref();\n const stateAttribute = computed(() => {\n if (!open.value)\n return \"closed\";\n return wasOpenDelayedRef.value ? \"delayed-open\" : \"instant-open\";\n });\n const { start: startTimer, stop: clearTimer } = useTimeoutFn(() => {\n wasOpenDelayedRef.value = true;\n open.value = true;\n }, delayDuration, { immediate: false });\n function handleOpen() {\n clearTimer();\n wasOpenDelayedRef.value = false;\n open.value = true;\n }\n function handleClose() {\n clearTimer();\n open.value = false;\n }\n function handleDelayedOpen() {\n startTimer();\n }\n provideTooltipRootContext({\n contentId: \"\",\n open,\n stateAttribute,\n trigger,\n onTriggerChange(el) {\n trigger.value = el;\n },\n onTriggerEnter() {\n if (providerContext.isOpenDelayed.value)\n handleDelayedOpen();\n else handleOpen();\n },\n onTriggerLeave() {\n if (disableHoverableContent.value) {\n handleClose();\n } else {\n clearTimer();\n }\n },\n onOpen: handleOpen,\n onClose: handleClose,\n disableHoverableContent,\n disableClosingTrigger,\n disabled: disableTooltip,\n ignoreNonKeyboardFocus\n });\n return (_ctx, _cache) => {\n return openBlock(), createBlock(unref(_sfc_main$1), null, {\n default: withCtx(() => [\n renderSlot(_ctx.$slots, \"default\", { open: unref(open) })\n ]),\n _: 3\n });\n };\n }\n});\n\nexport { _sfc_main as _, injectTooltipRootContext as i };\n//# sourceMappingURL=TooltipRoot.js.map\n","import { defineComponent, ref, computed, onMounted, openBlock, createBlock, unref, withCtx, createVNode, mergeProps, toHandlers, renderSlot } from 'vue';\nimport { _ as _sfc_main$1 } from '../Popper/PopperAnchor.js';\nimport { i as injectTooltipRootContext } from './TooltipRoot.js';\nimport { u as useId } from '../shared/useId.js';\nimport { u as useForwardExpose } from '../shared/useForwardExpose.js';\nimport { P as Primitive } from '../Primitive/Primitive.js';\nimport { i as injectTooltipProviderContext } from './TooltipProvider.js';\n\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"TooltipTrigger\",\n props: {\n reference: {},\n asChild: { type: Boolean },\n as: { default: \"button\" }\n },\n setup(__props) {\n const props = __props;\n const rootContext = injectTooltipRootContext();\n const providerContext = injectTooltipProviderContext();\n rootContext.contentId ||= useId(undefined, \"reka-tooltip-content\");\n const { forwardRef, currentElement: triggerElement } = useForwardExpose();\n const isPointerDown = ref(false);\n const hasPointerMoveOpened = ref(false);\n const tooltipListeners = computed(() => {\n if (rootContext.disabled.value)\n return {};\n return {\n click: handleClick,\n focus: handleFocus,\n pointermove: handlePointerMove,\n pointerleave: handlePointerLeave,\n pointerdown: handlePointerDown,\n blur: handleBlur\n };\n });\n onMounted(() => {\n rootContext.onTriggerChange(triggerElement.value);\n });\n function handlePointerUp() {\n setTimeout(() => {\n isPointerDown.value = false;\n }, 1);\n }\n function handlePointerDown() {\n isPointerDown.value = true;\n document.addEventListener(\"pointerup\", handlePointerUp, { once: true });\n }\n function handlePointerMove(event) {\n if (event.pointerType === \"touch\")\n return;\n if (!hasPointerMoveOpened.value && !providerContext.isPointerInTransitRef.value) {\n rootContext.onTriggerEnter();\n hasPointerMoveOpened.value = true;\n }\n }\n function handlePointerLeave() {\n rootContext.onTriggerLeave();\n hasPointerMoveOpened.value = false;\n }\n function handleFocus(event) {\n if (isPointerDown.value)\n return;\n if (rootContext.ignoreNonKeyboardFocus.value && !event.target.matches?.(\":focus-visible\"))\n return;\n rootContext.onOpen();\n }\n function handleBlur() {\n rootContext.onClose();\n }\n function handleClick() {\n if (!rootContext.disableClosingTrigger.value)\n rootContext.onClose();\n }\n return (_ctx, _cache) => {\n return openBlock(), createBlock(unref(_sfc_main$1), {\n \"as-child\": \"\",\n reference: _ctx.reference\n }, {\n default: withCtx(() => [\n createVNode(unref(Primitive), mergeProps({\n ref: unref(forwardRef),\n \"aria-describedby\": unref(rootContext).open.value ? unref(rootContext).contentId : undefined,\n \"data-state\": unref(rootContext).stateAttribute.value,\n as: _ctx.as,\n \"as-child\": props.asChild,\n \"data-grace-area-trigger\": \"\"\n }, toHandlers(tooltipListeners.value)), {\n default: withCtx(() => [\n renderSlot(_ctx.$slots, \"default\")\n ]),\n _: 3\n }, 16, [\"aria-describedby\", \"data-state\", \"as\", \"as-child\"])\n ]),\n _: 3\n }, 8, [\"reference\"]);\n };\n }\n});\n\nexport { _sfc_main as _ };\n//# sourceMappingURL=TooltipTrigger.js.map\n","import { defineComponent, useSlots, computed, onMounted, openBlock, createBlock, unref, withModifiers, withCtx, createVNode, mergeProps, renderSlot, createTextVNode, toDisplayString, Comment } from 'vue';\nimport { useEventListener } from '@vueuse/core';\nimport { T as TOOLTIP_OPEN } from './utils.js';\nimport { _ as _sfc_main$2 } from '../Popper/PopperContent.js';\nimport { _ as _sfc_main$1 } from '../DismissableLayer/DismissableLayer.js';\nimport { u as useForwardExpose } from '../shared/useForwardExpose.js';\nimport { _ as _sfc_main$3 } from '../VisuallyHidden/VisuallyHidden.js';\nimport { i as injectTooltipRootContext } from './TooltipRoot.js';\n\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"TooltipContentImpl\",\n props: {\n ariaLabel: {},\n asChild: { type: Boolean },\n as: {},\n side: { default: \"top\" },\n sideOffset: { default: 0 },\n align: { default: \"center\" },\n alignOffset: {},\n avoidCollisions: { type: Boolean, default: true },\n collisionBoundary: { default: () => [] },\n collisionPadding: { default: 0 },\n arrowPadding: { default: 0 },\n sticky: { default: \"partial\" },\n hideWhenDetached: { type: Boolean, default: false },\n positionStrategy: {},\n updatePositionStrategy: {}\n },\n emits: [\"escapeKeyDown\", \"pointerDownOutside\"],\n setup(__props, { emit: __emit }) {\n const props = __props;\n const emits = __emit;\n const rootContext = injectTooltipRootContext();\n const { forwardRef } = useForwardExpose();\n const slot = useSlots();\n const defaultSlot = computed(() => slot.default?.({}));\n const ariaLabel = computed(() => {\n if (props.ariaLabel)\n return props.ariaLabel;\n let content = \"\";\n function recursiveTextSearch(node) {\n if (typeof node.children === \"string\" && node.type !== Comment)\n content += node.children;\n else if (Array.isArray(node.children))\n node.children.forEach((child) => recursiveTextSearch(child));\n }\n defaultSlot.value?.forEach((node) => recursiveTextSearch(node));\n return content;\n });\n const popperContentProps = computed(() => {\n const { ariaLabel: _, ...restProps } = props;\n return restProps;\n });\n onMounted(() => {\n useEventListener(window, \"scroll\", (event) => {\n const target = event.target;\n if (target?.contains(rootContext.trigger.value))\n rootContext.onClose();\n });\n useEventListener(window, TOOLTIP_OPEN, rootContext.onClose);\n });\n return (_ctx, _cache) => {\n return openBlock(), createBlock(unref(_sfc_main$1), {\n \"as-child\": \"\",\n \"disable-outside-pointer-events\": false,\n onEscapeKeyDown: _cache[0] || (_cache[0] = ($event) => emits(\"escapeKeyDown\", $event)),\n onPointerDownOutside: _cache[1] || (_cache[1] = (event) => {\n if (unref(rootContext).disableClosingTrigger.value && unref(rootContext).trigger.value?.contains(event.target))\n event.preventDefault();\n emits(\"pointerDownOutside\", event);\n }),\n onFocusOutside: _cache[2] || (_cache[2] = withModifiers(() => {\n }, [\"prevent\"])),\n onDismiss: _cache[3] || (_cache[3] = ($event) => unref(rootContext).onClose())\n }, {\n default: withCtx(() => [\n createVNode(unref(_sfc_main$2), mergeProps({\n ref: unref(forwardRef),\n \"data-state\": unref(rootContext).stateAttribute.value\n }, { ..._ctx.$attrs, ...popperContentProps.value }, { style: {\n \"--reka-tooltip-content-transform-origin\": \"var(--reka-popper-transform-origin)\",\n \"--reka-tooltip-content-available-width\": \"var(--reka-popper-available-width)\",\n \"--reka-tooltip-content-available-height\": \"var(--reka-popper-available-height)\",\n \"--reka-tooltip-trigger-width\": \"var(--reka-popper-anchor-width)\",\n \"--reka-tooltip-trigger-height\": \"var(--reka-popper-anchor-height)\"\n } }), {\n default: withCtx(() => [\n renderSlot(_ctx.$slots, \"default\"),\n createVNode(unref(_sfc_main$3), {\n id: unref(rootContext).contentId,\n role: \"tooltip\"\n }, {\n default: withCtx(() => [\n createTextVNode(toDisplayString(ariaLabel.value), 1)\n ]),\n _: 1\n }, 8, [\"id\"])\n ]),\n _: 3\n }, 16, [\"data-state\"])\n ]),\n _: 3\n });\n };\n }\n});\n\nexport { _sfc_main as _ };\n//# sourceMappingURL=TooltipContentImpl.js.map\n","import { defineComponent, openBlock, createBlock, mergeProps, unref, withCtx, renderSlot } from 'vue';\nimport { _ as _sfc_main$1 } from './TooltipContentImpl.js';\nimport { u as useForwardProps } from '../shared/useForwardProps.js';\nimport { u as useForwardExpose } from '../shared/useForwardExpose.js';\nimport { u as useGraceArea } from '../shared/useGraceArea.js';\nimport { i as injectTooltipRootContext } from './TooltipRoot.js';\nimport { i as injectTooltipProviderContext } from './TooltipProvider.js';\n\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"TooltipContentHoverable\",\n props: {\n ariaLabel: {},\n asChild: { type: Boolean },\n as: {},\n side: {},\n sideOffset: {},\n align: {},\n alignOffset: {},\n avoidCollisions: { type: Boolean },\n collisionBoundary: {},\n collisionPadding: {},\n arrowPadding: {},\n sticky: {},\n hideWhenDetached: { type: Boolean },\n positionStrategy: {},\n updatePositionStrategy: {}\n },\n setup(__props) {\n const props = __props;\n const forwardedProps = useForwardProps(props);\n const { forwardRef, currentElement } = useForwardExpose();\n const { trigger, onClose } = injectTooltipRootContext();\n const providerContext = injectTooltipProviderContext();\n const { isPointerInTransit, onPointerExit } = useGraceArea(trigger, currentElement);\n providerContext.isPointerInTransitRef = isPointerInTransit;\n onPointerExit(() => {\n onClose();\n });\n return (_ctx, _cache) => {\n return openBlock(), createBlock(_sfc_main$1, mergeProps({ ref: unref(forwardRef) }, unref(forwardedProps)), {\n default: withCtx(() => [\n renderSlot(_ctx.$slots, \"default\")\n ]),\n _: 3\n }, 16);\n };\n }\n});\n\nexport { _sfc_main as _ };\n//# sourceMappingURL=TooltipContentHoverable.js.map\n","import { defineComponent, openBlock, createBlock, unref, withCtx, resolveDynamicComponent, mergeProps, renderSlot } from 'vue';\nimport { _ as _sfc_main$1 } from './TooltipContentImpl.js';\nimport { _ as _sfc_main$2 } from './TooltipContentHoverable.js';\nimport { u as useForwardPropsEmits } from '../shared/useForwardPropsEmits.js';\nimport { u as useForwardExpose } from '../shared/useForwardExpose.js';\nimport { P as Presence } from '../Presence/Presence.js';\nimport { i as injectTooltipRootContext } from './TooltipRoot.js';\n\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"TooltipContent\",\n props: {\n forceMount: { type: Boolean },\n ariaLabel: {},\n asChild: { type: Boolean },\n as: {},\n side: { default: \"top\" },\n sideOffset: {},\n align: {},\n alignOffset: {},\n avoidCollisions: { type: Boolean },\n collisionBoundary: {},\n collisionPadding: {},\n arrowPadding: {},\n sticky: {},\n hideWhenDetached: { type: Boolean },\n positionStrategy: {},\n updatePositionStrategy: {}\n },\n emits: [\"escapeKeyDown\", \"pointerDownOutside\"],\n setup(__props, { emit: __emit }) {\n const props = __props;\n const emits = __emit;\n const rootContext = injectTooltipRootContext();\n const forwarded = useForwardPropsEmits(props, emits);\n const { forwardRef } = useForwardExpose();\n return (_ctx, _cache) => {\n return openBlock(), createBlock(unref(Presence), {\n present: _ctx.forceMount || unref(rootContext).open.value\n }, {\n default: withCtx(() => [\n (openBlock(), createBlock(resolveDynamicComponent(unref(rootContext).disableHoverableContent.value ? _sfc_main$1 : _sfc_main$2), mergeProps({ ref: unref(forwardRef) }, unref(forwarded)), {\n default: withCtx(() => [\n renderSlot(_ctx.$slots, \"default\")\n ]),\n _: 3\n }, 16))\n ]),\n _: 3\n }, 8, [\"present\"]);\n };\n }\n});\n\nexport { _sfc_main as _ };\n//# sourceMappingURL=TooltipContent.js.map\n","import { defineComponent, openBlock, createBlock, unref, normalizeProps, guardReactiveProps, withCtx, renderSlot } from 'vue';\nimport { _ as _sfc_main$1 } from '../Teleport/Teleport.js';\n\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"TooltipPortal\",\n props: {\n to: {},\n disabled: { type: Boolean },\n defer: { type: Boolean },\n forceMount: { type: Boolean }\n },\n setup(__props) {\n const props = __props;\n return (_ctx, _cache) => {\n return openBlock(), createBlock(unref(_sfc_main$1), normalizeProps(guardReactiveProps(props)), {\n default: withCtx(() => [\n renderSlot(_ctx.$slots, \"default\")\n ]),\n _: 3\n }, 16);\n };\n }\n});\n\nexport { _sfc_main as _ };\n//# sourceMappingURL=TooltipPortal.js.map\n","\n\n\n \n \n \n\n","/**\n * @license lucide-vue-next v0.487.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nconst toKebabCase = (string) => string.replace(/([a-z0-9])([A-Z])/g, \"$1-$2\").toLowerCase();\nconst toCamelCase = (string) => string.replace(\n /^([A-Z])|[\\s-_]+(\\w)/g,\n (match, p1, p2) => p2 ? p2.toUpperCase() : p1.toLowerCase()\n);\nconst toPascalCase = (string) => {\n const camelCase = toCamelCase(string);\n return camelCase.charAt(0).toUpperCase() + camelCase.slice(1);\n};\nconst mergeClasses = (...classes) => classes.filter((className, index, array) => {\n return Boolean(className) && className.trim() !== \"\" && array.indexOf(className) === index;\n}).join(\" \").trim();\n\nexport { mergeClasses, toCamelCase, toKebabCase, toPascalCase };\n//# sourceMappingURL=utils.js.map\n","/**\n * @license lucide-vue-next v0.487.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nvar defaultAttributes = {\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 24,\n height: 24,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: \"currentColor\",\n \"stroke-width\": 2,\n \"stroke-linecap\": \"round\",\n \"stroke-linejoin\": \"round\"\n};\n\nexport { defaultAttributes as default };\n//# sourceMappingURL=defaultAttributes.js.map\n","/**\n * @license lucide-vue-next v0.487.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport { h } from 'vue';\nimport { mergeClasses, toKebabCase, toPascalCase } from './shared/src/utils.js';\nimport defaultAttributes from './defaultAttributes.js';\n\nconst Icon = ({ size, strokeWidth = 2, absoluteStrokeWidth, color, iconNode, name, class: classes, ...props }, { slots }) => {\n return h(\n \"svg\",\n {\n ...defaultAttributes,\n width: size || defaultAttributes.width,\n height: size || defaultAttributes.height,\n stroke: color || defaultAttributes.stroke,\n \"stroke-width\": absoluteStrokeWidth ? Number(strokeWidth) * 24 / Number(size) : strokeWidth,\n class: mergeClasses(\n \"lucide\",\n ...name ? [`lucide-${toKebabCase(toPascalCase(name))}-icon`, `lucide-${toKebabCase(name)}`] : [\"lucide-icon\"]\n ),\n ...props\n },\n [...iconNode.map((child) => h(...child)), ...slots.default ? [slots.default()] : []]\n );\n};\n\nexport { Icon as default };\n//# sourceMappingURL=Icon.js.map\n","/**\n * @license lucide-vue-next v0.487.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport { h } from 'vue';\nimport Icon from './Icon.js';\n\nconst createLucideIcon = (iconName, iconNode) => (props, { slots }) => h(\n Icon,\n {\n ...props,\n iconNode,\n name: iconName\n },\n slots\n);\n\nexport { createLucideIcon as default };\n//# sourceMappingURL=createLucideIcon.js.map\n","/**\n * @license lucide-vue-next v0.487.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst Check = createLucideIcon(\"check\", [[\"path\", { d: \"M20 6 9 17l-5-5\", key: \"1gmf2c\" }]]);\n\nexport { Check as default };\n//# sourceMappingURL=check.js.map\n","/**\n * @license lucide-vue-next v0.487.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst ChevronDown = createLucideIcon(\"chevron-down\", [\n [\"path\", { d: \"m6 9 6 6 6-6\", key: \"qrunsl\" }]\n]);\n\nexport { ChevronDown as default };\n//# sourceMappingURL=chevron-down.js.map\n","/**\n * @license lucide-vue-next v0.487.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst ChevronRight = createLucideIcon(\"chevron-right\", [\n [\"path\", { d: \"m9 18 6-6-6-6\", key: \"mthhwq\" }]\n]);\n\nexport { ChevronRight as default };\n//# sourceMappingURL=chevron-right.js.map\n","/**\n * @license lucide-vue-next v0.487.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst ChevronUp = createLucideIcon(\"chevron-up\", [\n [\"path\", { d: \"m18 15-6-6-6 6\", key: \"153udz\" }]\n]);\n\nexport { ChevronUp as default };\n//# sourceMappingURL=chevron-up.js.map\n","/**\n * @license lucide-vue-next v0.487.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst Circle = createLucideIcon(\"circle\", [\n [\"circle\", { cx: \"12\", cy: \"12\", r: \"10\", key: \"1mglay\" }]\n]);\n\nexport { Circle as default };\n//# sourceMappingURL=circle.js.map\n","/**\n * @license lucide-vue-next v0.487.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst X = createLucideIcon(\"x\", [\n [\"path\", { d: \"M18 6 6 18\", key: \"1bl5f8\" }],\n [\"path\", { d: \"m6 6 12 12\", key: \"d8bk6v\" }]\n]);\n\nexport { X as default };\n//# sourceMappingURL=x.js.map\n","\n\n\n \n \n \n \n \n \n \n \n\n","import { onMounted, ref } from 'vue';\n\nconst useTeleport = () => {\n const teleportTarget = ref('#modals');\n\n const determineTeleportTarget = () => {\n const myModalsComponent = document.querySelector('unraid-modals');\n if (!myModalsComponent?.shadowRoot) return;\n\n const potentialTarget = myModalsComponent.shadowRoot.querySelector('#modals');\n if (!potentialTarget) return;\n\n teleportTarget.value = potentialTarget as HTMLElement;\n console.log('[determineTeleportTarget] teleportTarget', teleportTarget.value);\n };\n\n onMounted(() => {\n determineTeleportTarget();\n });\n\n return {\n teleportTarget,\n determineTeleportTarget,\n };\n};\n\nexport default useTeleport;\n","\n\n\n \n \n \n \n \n \n \n\n","\n\n\n \n \n \n\n","\n\n\n svg]:size-4 [&>svg]:shrink-0',\n inset && 'pl-8',\n props.class\n )\n \"\n >\n \n \n\n","\n\n\n \n \n \n\n","\n\n\n \n \n \n\n","\n\n\n \n \n \n \n \n \n \n \n\n","\n\n\n \n\n","\n\n\n \n \n \n\n","\n\n\n \n \n \n\n","\n\n\n \n \n \n\n","\n\n\n \n \n \n \n\n","\n\n\n \n \n \n\n","\n\n \n\n","\n\n \n \n Loading...\n \n\n","import { createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nexport default function render(_ctx, _cache) {\n return (_openBlock(), _createElementBlock(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n fill: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\"\n }, [\n _createElementVNode(\"path\", {\n \"fill-rule\": \"evenodd\",\n d: \"M11.484 2.17a.75.75 0 0 1 1.032 0 11.209 11.209 0 0 0 7.877 3.08.75.75 0 0 1 .722.515 12.74 12.74 0 0 1 .635 3.985c0 5.942-4.064 10.933-9.563 12.348a.749.749 0 0 1-.374 0C6.314 20.683 2.25 15.692 2.25 9.75c0-1.39.223-2.73.635-3.985a.75.75 0 0 1 .722-.516l.143.001c2.996 0 5.718-1.17 7.734-3.08ZM12 8.25a.75.75 0 0 1 .75.75v3.75a.75.75 0 0 1-1.5 0V9a.75.75 0 0 1 .75-.75ZM12 15a.75.75 0 0 0-.75.75v.008c0 .414.336.75.75.75h.008a.75.75 0 0 0 .75-.75v-.008a.75.75 0 0 0-.75-.75H12Z\",\n \"clip-rule\": \"evenodd\"\n })\n ]))\n}","\n\n \n \n \n \n Loading Notifications...\n \n \n \n \n \n \n \n {{ `Error` }}\n {{ error.message }}\n \n Try Again\n \n \n \n \n\n","import { shallowRef, watchEffect, readonly, watch, customRef, getCurrentScope, onScopeDispose, effectScope, getCurrentInstance, hasInjectionContext, inject, provide, ref, isRef, unref, toValue as toValue$1, computed, reactive, toRefs as toRefs$1, toRef as toRef$1, onBeforeMount, nextTick, onBeforeUnmount, onMounted, onUnmounted, isReactive } from 'vue';\n\nfunction computedEager(fn, options) {\n var _a;\n const result = shallowRef();\n watchEffect(() => {\n result.value = fn();\n }, {\n ...options,\n flush: (_a = options == null ? void 0 : options.flush) != null ? _a : \"sync\"\n });\n return readonly(result);\n}\n\nfunction computedWithControl(source, fn) {\n let v = void 0;\n let track;\n let trigger;\n const dirty = shallowRef(true);\n const update = () => {\n dirty.value = true;\n trigger();\n };\n watch(source, update, { flush: \"sync\" });\n const get = typeof fn === \"function\" ? fn : fn.get;\n const set = typeof fn === \"function\" ? void 0 : fn.set;\n const result = customRef((_track, _trigger) => {\n track = _track;\n trigger = _trigger;\n return {\n get() {\n if (dirty.value) {\n v = get(v);\n dirty.value = false;\n }\n track();\n return v;\n },\n set(v2) {\n set == null ? void 0 : set(v2);\n }\n };\n });\n if (Object.isExtensible(result))\n result.trigger = update;\n return result;\n}\n\nfunction tryOnScopeDispose(fn) {\n if (getCurrentScope()) {\n onScopeDispose(fn);\n return true;\n }\n return false;\n}\n\nfunction createEventHook() {\n const fns = /* @__PURE__ */ new Set();\n const off = (fn) => {\n fns.delete(fn);\n };\n const clear = () => {\n fns.clear();\n };\n const on = (fn) => {\n fns.add(fn);\n const offFn = () => off(fn);\n tryOnScopeDispose(offFn);\n return {\n off: offFn\n };\n };\n const trigger = (...args) => {\n return Promise.all(Array.from(fns).map((fn) => fn(...args)));\n };\n return {\n on,\n off,\n trigger,\n clear\n };\n}\n\nfunction createGlobalState(stateFactory) {\n let initialized = false;\n let state;\n const scope = effectScope(true);\n return (...args) => {\n if (!initialized) {\n state = scope.run(() => stateFactory(...args));\n initialized = true;\n }\n return state;\n };\n}\n\nconst localProvidedStateMap = /* @__PURE__ */ new WeakMap();\n\nconst injectLocal = (...args) => {\n var _a;\n const key = args[0];\n const instance = (_a = getCurrentInstance()) == null ? void 0 : _a.proxy;\n if (instance == null && !hasInjectionContext())\n throw new Error(\"injectLocal must be called in setup\");\n if (instance && localProvidedStateMap.has(instance) && key in localProvidedStateMap.get(instance))\n return localProvidedStateMap.get(instance)[key];\n return inject(...args);\n};\n\nconst provideLocal = (key, value) => {\n var _a;\n const instance = (_a = getCurrentInstance()) == null ? void 0 : _a.proxy;\n if (instance == null)\n throw new Error(\"provideLocal must be called in setup\");\n if (!localProvidedStateMap.has(instance))\n localProvidedStateMap.set(instance, /* @__PURE__ */ Object.create(null));\n const localProvidedState = localProvidedStateMap.get(instance);\n localProvidedState[key] = value;\n provide(key, value);\n};\n\nfunction createInjectionState(composable, options) {\n const key = (options == null ? void 0 : options.injectionKey) || Symbol(composable.name || \"InjectionState\");\n const defaultValue = options == null ? void 0 : options.defaultValue;\n const useProvidingState = (...args) => {\n const state = composable(...args);\n provideLocal(key, state);\n return state;\n };\n const useInjectedState = () => injectLocal(key, defaultValue);\n return [useProvidingState, useInjectedState];\n}\n\nfunction createRef(value, deep) {\n if (deep === true) {\n return ref(value);\n } else {\n return shallowRef(value);\n }\n}\n\nfunction createSharedComposable(composable) {\n let subscribers = 0;\n let state;\n let scope;\n const dispose = () => {\n subscribers -= 1;\n if (scope && subscribers <= 0) {\n scope.stop();\n state = void 0;\n scope = void 0;\n }\n };\n return (...args) => {\n subscribers += 1;\n if (!scope) {\n scope = effectScope(true);\n state = scope.run(() => composable(...args));\n }\n tryOnScopeDispose(dispose);\n return state;\n };\n}\n\nfunction extendRef(ref, extend, { enumerable = false, unwrap = true } = {}) {\n for (const [key, value] of Object.entries(extend)) {\n if (key === \"value\")\n continue;\n if (isRef(value) && unwrap) {\n Object.defineProperty(ref, key, {\n get() {\n return value.value;\n },\n set(v) {\n value.value = v;\n },\n enumerable\n });\n } else {\n Object.defineProperty(ref, key, { value, enumerable });\n }\n }\n return ref;\n}\n\nfunction get(obj, key) {\n if (key == null)\n return unref(obj);\n return unref(obj)[key];\n}\n\nfunction isDefined(v) {\n return unref(v) != null;\n}\n\nfunction makeDestructurable(obj, arr) {\n if (typeof Symbol !== \"undefined\") {\n const clone = { ...obj };\n Object.defineProperty(clone, Symbol.iterator, {\n enumerable: false,\n value() {\n let index = 0;\n return {\n next: () => ({\n value: arr[index++],\n done: index > arr.length\n })\n };\n }\n });\n return clone;\n } else {\n return Object.assign([...arr], obj);\n }\n}\n\nfunction reactify(fn, options) {\n const unrefFn = (options == null ? void 0 : options.computedGetter) === false ? unref : toValue$1;\n return function(...args) {\n return computed(() => fn.apply(this, args.map((i) => unrefFn(i))));\n };\n}\n\nfunction reactifyObject(obj, optionsOrKeys = {}) {\n let keys = [];\n let options;\n if (Array.isArray(optionsOrKeys)) {\n keys = optionsOrKeys;\n } else {\n options = optionsOrKeys;\n const { includeOwnProperties = true } = optionsOrKeys;\n keys.push(...Object.keys(obj));\n if (includeOwnProperties)\n keys.push(...Object.getOwnPropertyNames(obj));\n }\n return Object.fromEntries(\n keys.map((key) => {\n const value = obj[key];\n return [\n key,\n typeof value === \"function\" ? reactify(value.bind(obj), options) : value\n ];\n })\n );\n}\n\nfunction toReactive(objectRef) {\n if (!isRef(objectRef))\n return reactive(objectRef);\n const proxy = new Proxy({}, {\n get(_, p, receiver) {\n return unref(Reflect.get(objectRef.value, p, receiver));\n },\n set(_, p, value) {\n if (isRef(objectRef.value[p]) && !isRef(value))\n objectRef.value[p].value = value;\n else\n objectRef.value[p] = value;\n return true;\n },\n deleteProperty(_, p) {\n return Reflect.deleteProperty(objectRef.value, p);\n },\n has(_, p) {\n return Reflect.has(objectRef.value, p);\n },\n ownKeys() {\n return Object.keys(objectRef.value);\n },\n getOwnPropertyDescriptor() {\n return {\n enumerable: true,\n configurable: true\n };\n }\n });\n return reactive(proxy);\n}\n\nfunction reactiveComputed(fn) {\n return toReactive(computed(fn));\n}\n\nfunction reactiveOmit(obj, ...keys) {\n const flatKeys = keys.flat();\n const predicate = flatKeys[0];\n return reactiveComputed(() => typeof predicate === \"function\" ? Object.fromEntries(Object.entries(toRefs$1(obj)).filter(([k, v]) => !predicate(toValue$1(v), k))) : Object.fromEntries(Object.entries(toRefs$1(obj)).filter((e) => !flatKeys.includes(e[0]))));\n}\n\nconst isClient = typeof window !== \"undefined\" && typeof document !== \"undefined\";\nconst isWorker = typeof WorkerGlobalScope !== \"undefined\" && globalThis instanceof WorkerGlobalScope;\nconst isDef = (val) => typeof val !== \"undefined\";\nconst notNullish = (val) => val != null;\nconst assert = (condition, ...infos) => {\n if (!condition)\n console.warn(...infos);\n};\nconst toString = Object.prototype.toString;\nconst isObject = (val) => toString.call(val) === \"[object Object]\";\nconst now = () => Date.now();\nconst timestamp = () => +Date.now();\nconst clamp = (n, min, max) => Math.min(max, Math.max(min, n));\nconst noop = () => {\n};\nconst rand = (min, max) => {\n min = Math.ceil(min);\n max = Math.floor(max);\n return Math.floor(Math.random() * (max - min + 1)) + min;\n};\nconst hasOwn = (val, key) => Object.prototype.hasOwnProperty.call(val, key);\nconst isIOS = /* @__PURE__ */ getIsIOS();\nfunction getIsIOS() {\n var _a, _b;\n return isClient && ((_a = window == null ? void 0 : window.navigator) == null ? void 0 : _a.userAgent) && (/iP(?:ad|hone|od)/.test(window.navigator.userAgent) || ((_b = window == null ? void 0 : window.navigator) == null ? void 0 : _b.maxTouchPoints) > 2 && /iPad|Macintosh/.test(window == null ? void 0 : window.navigator.userAgent));\n}\n\nfunction toRef(...args) {\n if (args.length !== 1)\n return toRef$1(...args);\n const r = args[0];\n return typeof r === \"function\" ? readonly(customRef(() => ({ get: r, set: noop }))) : ref(r);\n}\nconst resolveRef = toRef;\n\nfunction reactivePick(obj, ...keys) {\n const flatKeys = keys.flat();\n const predicate = flatKeys[0];\n return reactiveComputed(() => typeof predicate === \"function\" ? Object.fromEntries(Object.entries(toRefs$1(obj)).filter(([k, v]) => predicate(toValue$1(v), k))) : Object.fromEntries(flatKeys.map((k) => [k, toRef(obj, k)])));\n}\n\nfunction refAutoReset(defaultValue, afterMs = 1e4) {\n return customRef((track, trigger) => {\n let value = toValue$1(defaultValue);\n let timer;\n const resetAfter = () => setTimeout(() => {\n value = toValue$1(defaultValue);\n trigger();\n }, toValue$1(afterMs));\n tryOnScopeDispose(() => {\n clearTimeout(timer);\n });\n return {\n get() {\n track();\n return value;\n },\n set(newValue) {\n value = newValue;\n trigger();\n clearTimeout(timer);\n timer = resetAfter();\n }\n };\n });\n}\n\nfunction createFilterWrapper(filter, fn) {\n function wrapper(...args) {\n return new Promise((resolve, reject) => {\n Promise.resolve(filter(() => fn.apply(this, args), { fn, thisArg: this, args })).then(resolve).catch(reject);\n });\n }\n return wrapper;\n}\nconst bypassFilter = (invoke) => {\n return invoke();\n};\nfunction debounceFilter(ms, options = {}) {\n let timer;\n let maxTimer;\n let lastRejector = noop;\n const _clearTimeout = (timer2) => {\n clearTimeout(timer2);\n lastRejector();\n lastRejector = noop;\n };\n let lastInvoker;\n const filter = (invoke) => {\n const duration = toValue$1(ms);\n const maxDuration = toValue$1(options.maxWait);\n if (timer)\n _clearTimeout(timer);\n if (duration <= 0 || maxDuration !== void 0 && maxDuration <= 0) {\n if (maxTimer) {\n _clearTimeout(maxTimer);\n maxTimer = null;\n }\n return Promise.resolve(invoke());\n }\n return new Promise((resolve, reject) => {\n lastRejector = options.rejectOnCancel ? reject : resolve;\n lastInvoker = invoke;\n if (maxDuration && !maxTimer) {\n maxTimer = setTimeout(() => {\n if (timer)\n _clearTimeout(timer);\n maxTimer = null;\n resolve(lastInvoker());\n }, maxDuration);\n }\n timer = setTimeout(() => {\n if (maxTimer)\n _clearTimeout(maxTimer);\n maxTimer = null;\n resolve(invoke());\n }, duration);\n });\n };\n return filter;\n}\nfunction throttleFilter(...args) {\n let lastExec = 0;\n let timer;\n let isLeading = true;\n let lastRejector = noop;\n let lastValue;\n let ms;\n let trailing;\n let leading;\n let rejectOnCancel;\n if (!isRef(args[0]) && typeof args[0] === \"object\")\n ({ delay: ms, trailing = true, leading = true, rejectOnCancel = false } = args[0]);\n else\n [ms, trailing = true, leading = true, rejectOnCancel = false] = args;\n const clear = () => {\n if (timer) {\n clearTimeout(timer);\n timer = void 0;\n lastRejector();\n lastRejector = noop;\n }\n };\n const filter = (_invoke) => {\n const duration = toValue$1(ms);\n const elapsed = Date.now() - lastExec;\n const invoke = () => {\n return lastValue = _invoke();\n };\n clear();\n if (duration <= 0) {\n lastExec = Date.now();\n return invoke();\n }\n if (elapsed > duration && (leading || !isLeading)) {\n lastExec = Date.now();\n invoke();\n } else if (trailing) {\n lastValue = new Promise((resolve, reject) => {\n lastRejector = rejectOnCancel ? reject : resolve;\n timer = setTimeout(() => {\n lastExec = Date.now();\n isLeading = true;\n resolve(invoke());\n clear();\n }, Math.max(0, duration - elapsed));\n });\n }\n if (!leading && !timer)\n timer = setTimeout(() => isLeading = true, duration);\n isLeading = false;\n return lastValue;\n };\n return filter;\n}\nfunction pausableFilter(extendFilter = bypassFilter, options = {}) {\n const {\n initialState = \"active\"\n } = options;\n const isActive = toRef(initialState === \"active\");\n function pause() {\n isActive.value = false;\n }\n function resume() {\n isActive.value = true;\n }\n const eventFilter = (...args) => {\n if (isActive.value)\n extendFilter(...args);\n };\n return { isActive: readonly(isActive), pause, resume, eventFilter };\n}\n\nfunction promiseTimeout(ms, throwOnTimeout = false, reason = \"Timeout\") {\n return new Promise((resolve, reject) => {\n if (throwOnTimeout)\n setTimeout(() => reject(reason), ms);\n else\n setTimeout(resolve, ms);\n });\n}\nfunction identity(arg) {\n return arg;\n}\nfunction createSingletonPromise(fn) {\n let _promise;\n function wrapper() {\n if (!_promise)\n _promise = fn();\n return _promise;\n }\n wrapper.reset = async () => {\n const _prev = _promise;\n _promise = void 0;\n if (_prev)\n await _prev;\n };\n return wrapper;\n}\nfunction invoke(fn) {\n return fn();\n}\nfunction containsProp(obj, ...props) {\n return props.some((k) => k in obj);\n}\nfunction increaseWithUnit(target, delta) {\n var _a;\n if (typeof target === \"number\")\n return target + delta;\n const value = ((_a = target.match(/^-?\\d+\\.?\\d*/)) == null ? void 0 : _a[0]) || \"\";\n const unit = target.slice(value.length);\n const result = Number.parseFloat(value) + delta;\n if (Number.isNaN(result))\n return target;\n return result + unit;\n}\nfunction pxValue(px) {\n return px.endsWith(\"rem\") ? Number.parseFloat(px) * 16 : Number.parseFloat(px);\n}\nfunction objectPick(obj, keys, omitUndefined = false) {\n return keys.reduce((n, k) => {\n if (k in obj) {\n if (!omitUndefined || obj[k] !== void 0)\n n[k] = obj[k];\n }\n return n;\n }, {});\n}\nfunction objectOmit(obj, keys, omitUndefined = false) {\n return Object.fromEntries(Object.entries(obj).filter(([key, value]) => {\n return (!omitUndefined || value !== void 0) && !keys.includes(key);\n }));\n}\nfunction objectEntries(obj) {\n return Object.entries(obj);\n}\nfunction toArray(value) {\n return Array.isArray(value) ? value : [value];\n}\n\nfunction cacheStringFunction(fn) {\n const cache = /* @__PURE__ */ Object.create(null);\n return (str) => {\n const hit = cache[str];\n return hit || (cache[str] = fn(str));\n };\n}\nconst hyphenateRE = /\\B([A-Z])/g;\nconst hyphenate = cacheStringFunction((str) => str.replace(hyphenateRE, \"-$1\").toLowerCase());\nconst camelizeRE = /-(\\w)/g;\nconst camelize = cacheStringFunction((str) => {\n return str.replace(camelizeRE, (_, c) => c ? c.toUpperCase() : \"\");\n});\n\nfunction getLifeCycleTarget(target) {\n return target || getCurrentInstance();\n}\n\nfunction useDebounceFn(fn, ms = 200, options = {}) {\n return createFilterWrapper(\n debounceFilter(ms, options),\n fn\n );\n}\n\nfunction refDebounced(value, ms = 200, options = {}) {\n const debounced = ref(value.value);\n const updater = useDebounceFn(() => {\n debounced.value = value.value;\n }, ms, options);\n watch(value, () => updater());\n return debounced;\n}\n\nfunction refDefault(source, defaultValue) {\n return computed({\n get() {\n var _a;\n return (_a = source.value) != null ? _a : defaultValue;\n },\n set(value) {\n source.value = value;\n }\n });\n}\n\nfunction useThrottleFn(fn, ms = 200, trailing = false, leading = true, rejectOnCancel = false) {\n return createFilterWrapper(\n throttleFilter(ms, trailing, leading, rejectOnCancel),\n fn\n );\n}\n\nfunction refThrottled(value, delay = 200, trailing = true, leading = true) {\n if (delay <= 0)\n return value;\n const throttled = ref(value.value);\n const updater = useThrottleFn(() => {\n throttled.value = value.value;\n }, delay, trailing, leading);\n watch(value, () => updater());\n return throttled;\n}\n\nfunction refWithControl(initial, options = {}) {\n let source = initial;\n let track;\n let trigger;\n const ref = customRef((_track, _trigger) => {\n track = _track;\n trigger = _trigger;\n return {\n get() {\n return get();\n },\n set(v) {\n set(v);\n }\n };\n });\n function get(tracking = true) {\n if (tracking)\n track();\n return source;\n }\n function set(value, triggering = true) {\n var _a, _b;\n if (value === source)\n return;\n const old = source;\n if (((_a = options.onBeforeChange) == null ? void 0 : _a.call(options, value, old)) === false)\n return;\n source = value;\n (_b = options.onChanged) == null ? void 0 : _b.call(options, value, old);\n if (triggering)\n trigger();\n }\n const untrackedGet = () => get(false);\n const silentSet = (v) => set(v, false);\n const peek = () => get(false);\n const lay = (v) => set(v, false);\n return extendRef(\n ref,\n {\n get,\n set,\n untrackedGet,\n silentSet,\n peek,\n lay\n },\n { enumerable: true }\n );\n}\nconst controlledRef = refWithControl;\n\nfunction set(...args) {\n if (args.length === 2) {\n const [ref, value] = args;\n ref.value = value;\n }\n if (args.length === 3) {\n const [target, key, value] = args;\n target[key] = value;\n }\n}\n\nfunction watchWithFilter(source, cb, options = {}) {\n const {\n eventFilter = bypassFilter,\n ...watchOptions\n } = options;\n return watch(\n source,\n createFilterWrapper(\n eventFilter,\n cb\n ),\n watchOptions\n );\n}\n\nfunction watchPausable(source, cb, options = {}) {\n const {\n eventFilter: filter,\n initialState = \"active\",\n ...watchOptions\n } = options;\n const { eventFilter, pause, resume, isActive } = pausableFilter(filter, { initialState });\n const stop = watchWithFilter(\n source,\n cb,\n {\n ...watchOptions,\n eventFilter\n }\n );\n return { stop, pause, resume, isActive };\n}\n\nfunction syncRef(left, right, ...[options]) {\n const {\n flush = \"sync\",\n deep = false,\n immediate = true,\n direction = \"both\",\n transform = {}\n } = options || {};\n const watchers = [];\n const transformLTR = \"ltr\" in transform && transform.ltr || ((v) => v);\n const transformRTL = \"rtl\" in transform && transform.rtl || ((v) => v);\n if (direction === \"both\" || direction === \"ltr\") {\n watchers.push(watchPausable(\n left,\n (newValue) => {\n watchers.forEach((w) => w.pause());\n right.value = transformLTR(newValue);\n watchers.forEach((w) => w.resume());\n },\n { flush, deep, immediate }\n ));\n }\n if (direction === \"both\" || direction === \"rtl\") {\n watchers.push(watchPausable(\n right,\n (newValue) => {\n watchers.forEach((w) => w.pause());\n left.value = transformRTL(newValue);\n watchers.forEach((w) => w.resume());\n },\n { flush, deep, immediate }\n ));\n }\n const stop = () => {\n watchers.forEach((w) => w.stop());\n };\n return stop;\n}\n\nfunction syncRefs(source, targets, options = {}) {\n const {\n flush = \"sync\",\n deep = false,\n immediate = true\n } = options;\n const targetsArray = toArray(targets);\n return watch(\n source,\n (newValue) => targetsArray.forEach((target) => target.value = newValue),\n { flush, deep, immediate }\n );\n}\n\nfunction toRefs(objectRef, options = {}) {\n if (!isRef(objectRef))\n return toRefs$1(objectRef);\n const result = Array.isArray(objectRef.value) ? Array.from({ length: objectRef.value.length }) : {};\n for (const key in objectRef.value) {\n result[key] = customRef(() => ({\n get() {\n return objectRef.value[key];\n },\n set(v) {\n var _a;\n const replaceRef = (_a = toValue$1(options.replaceRef)) != null ? _a : true;\n if (replaceRef) {\n if (Array.isArray(objectRef.value)) {\n const copy = [...objectRef.value];\n copy[key] = v;\n objectRef.value = copy;\n } else {\n const newObject = { ...objectRef.value, [key]: v };\n Object.setPrototypeOf(newObject, Object.getPrototypeOf(objectRef.value));\n objectRef.value = newObject;\n }\n } else {\n objectRef.value[key] = v;\n }\n }\n }));\n }\n return result;\n}\n\nconst toValue = toValue$1;\nconst resolveUnref = toValue$1;\n\nfunction tryOnBeforeMount(fn, sync = true, target) {\n const instance = getLifeCycleTarget(target);\n if (instance)\n onBeforeMount(fn, target);\n else if (sync)\n fn();\n else\n nextTick(fn);\n}\n\nfunction tryOnBeforeUnmount(fn, target) {\n const instance = getLifeCycleTarget(target);\n if (instance)\n onBeforeUnmount(fn, target);\n}\n\nfunction tryOnMounted(fn, sync = true, target) {\n const instance = getLifeCycleTarget();\n if (instance)\n onMounted(fn, target);\n else if (sync)\n fn();\n else\n nextTick(fn);\n}\n\nfunction tryOnUnmounted(fn, target) {\n const instance = getLifeCycleTarget(target);\n if (instance)\n onUnmounted(fn, target);\n}\n\nfunction createUntil(r, isNot = false) {\n function toMatch(condition, { flush = \"sync\", deep = false, timeout, throwOnTimeout } = {}) {\n let stop = null;\n const watcher = new Promise((resolve) => {\n stop = watch(\n r,\n (v) => {\n if (condition(v) !== isNot) {\n if (stop)\n stop();\n else\n nextTick(() => stop == null ? void 0 : stop());\n resolve(v);\n }\n },\n {\n flush,\n deep,\n immediate: true\n }\n );\n });\n const promises = [watcher];\n if (timeout != null) {\n promises.push(\n promiseTimeout(timeout, throwOnTimeout).then(() => toValue$1(r)).finally(() => stop == null ? void 0 : stop())\n );\n }\n return Promise.race(promises);\n }\n function toBe(value, options) {\n if (!isRef(value))\n return toMatch((v) => v === value, options);\n const { flush = \"sync\", deep = false, timeout, throwOnTimeout } = options != null ? options : {};\n let stop = null;\n const watcher = new Promise((resolve) => {\n stop = watch(\n [r, value],\n ([v1, v2]) => {\n if (isNot !== (v1 === v2)) {\n if (stop)\n stop();\n else\n nextTick(() => stop == null ? void 0 : stop());\n resolve(v1);\n }\n },\n {\n flush,\n deep,\n immediate: true\n }\n );\n });\n const promises = [watcher];\n if (timeout != null) {\n promises.push(\n promiseTimeout(timeout, throwOnTimeout).then(() => toValue$1(r)).finally(() => {\n stop == null ? void 0 : stop();\n return toValue$1(r);\n })\n );\n }\n return Promise.race(promises);\n }\n function toBeTruthy(options) {\n return toMatch((v) => Boolean(v), options);\n }\n function toBeNull(options) {\n return toBe(null, options);\n }\n function toBeUndefined(options) {\n return toBe(void 0, options);\n }\n function toBeNaN(options) {\n return toMatch(Number.isNaN, options);\n }\n function toContains(value, options) {\n return toMatch((v) => {\n const array = Array.from(v);\n return array.includes(value) || array.includes(toValue$1(value));\n }, options);\n }\n function changed(options) {\n return changedTimes(1, options);\n }\n function changedTimes(n = 1, options) {\n let count = -1;\n return toMatch(() => {\n count += 1;\n return count >= n;\n }, options);\n }\n if (Array.isArray(toValue$1(r))) {\n const instance = {\n toMatch,\n toContains,\n changed,\n changedTimes,\n get not() {\n return createUntil(r, !isNot);\n }\n };\n return instance;\n } else {\n const instance = {\n toMatch,\n toBe,\n toBeTruthy,\n toBeNull,\n toBeNaN,\n toBeUndefined,\n changed,\n changedTimes,\n get not() {\n return createUntil(r, !isNot);\n }\n };\n return instance;\n }\n}\nfunction until(r) {\n return createUntil(r);\n}\n\nfunction defaultComparator(value, othVal) {\n return value === othVal;\n}\nfunction useArrayDifference(...args) {\n var _a, _b;\n const list = args[0];\n const values = args[1];\n let compareFn = (_a = args[2]) != null ? _a : defaultComparator;\n const {\n symmetric = false\n } = (_b = args[3]) != null ? _b : {};\n if (typeof compareFn === \"string\") {\n const key = compareFn;\n compareFn = (value, othVal) => value[key] === othVal[key];\n }\n const diff1 = computed(() => toValue$1(list).filter((x) => toValue$1(values).findIndex((y) => compareFn(x, y)) === -1));\n if (symmetric) {\n const diff2 = computed(() => toValue$1(values).filter((x) => toValue$1(list).findIndex((y) => compareFn(x, y)) === -1));\n return computed(() => symmetric ? [...toValue$1(diff1), ...toValue$1(diff2)] : toValue$1(diff1));\n } else {\n return diff1;\n }\n}\n\nfunction useArrayEvery(list, fn) {\n return computed(() => toValue$1(list).every((element, index, array) => fn(toValue$1(element), index, array)));\n}\n\nfunction useArrayFilter(list, fn) {\n return computed(() => toValue$1(list).map((i) => toValue$1(i)).filter(fn));\n}\n\nfunction useArrayFind(list, fn) {\n return computed(() => toValue$1(\n toValue$1(list).find((element, index, array) => fn(toValue$1(element), index, array))\n ));\n}\n\nfunction useArrayFindIndex(list, fn) {\n return computed(() => toValue$1(list).findIndex((element, index, array) => fn(toValue$1(element), index, array)));\n}\n\nfunction findLast(arr, cb) {\n let index = arr.length;\n while (index-- > 0) {\n if (cb(arr[index], index, arr))\n return arr[index];\n }\n return void 0;\n}\nfunction useArrayFindLast(list, fn) {\n return computed(() => toValue$1(\n !Array.prototype.findLast ? findLast(toValue$1(list), (element, index, array) => fn(toValue$1(element), index, array)) : toValue$1(list).findLast((element, index, array) => fn(toValue$1(element), index, array))\n ));\n}\n\nfunction isArrayIncludesOptions(obj) {\n return isObject(obj) && containsProp(obj, \"formIndex\", \"comparator\");\n}\nfunction useArrayIncludes(...args) {\n var _a;\n const list = args[0];\n const value = args[1];\n let comparator = args[2];\n let formIndex = 0;\n if (isArrayIncludesOptions(comparator)) {\n formIndex = (_a = comparator.fromIndex) != null ? _a : 0;\n comparator = comparator.comparator;\n }\n if (typeof comparator === \"string\") {\n const key = comparator;\n comparator = (element, value2) => element[key] === toValue$1(value2);\n }\n comparator = comparator != null ? comparator : (element, value2) => element === toValue$1(value2);\n return computed(() => toValue$1(list).slice(formIndex).some((element, index, array) => comparator(\n toValue$1(element),\n toValue$1(value),\n index,\n toValue$1(array)\n )));\n}\n\nfunction useArrayJoin(list, separator) {\n return computed(() => toValue$1(list).map((i) => toValue$1(i)).join(toValue$1(separator)));\n}\n\nfunction useArrayMap(list, fn) {\n return computed(() => toValue$1(list).map((i) => toValue$1(i)).map(fn));\n}\n\nfunction useArrayReduce(list, reducer, ...args) {\n const reduceCallback = (sum, value, index) => reducer(toValue$1(sum), toValue$1(value), index);\n return computed(() => {\n const resolved = toValue$1(list);\n return args.length ? resolved.reduce(reduceCallback, typeof args[0] === \"function\" ? toValue$1(args[0]()) : toValue$1(args[0])) : resolved.reduce(reduceCallback);\n });\n}\n\nfunction useArraySome(list, fn) {\n return computed(() => toValue$1(list).some((element, index, array) => fn(toValue$1(element), index, array)));\n}\n\nfunction uniq(array) {\n return Array.from(new Set(array));\n}\nfunction uniqueElementsBy(array, fn) {\n return array.reduce((acc, v) => {\n if (!acc.some((x) => fn(v, x, array)))\n acc.push(v);\n return acc;\n }, []);\n}\nfunction useArrayUnique(list, compareFn) {\n return computed(() => {\n const resolvedList = toValue$1(list).map((element) => toValue$1(element));\n return compareFn ? uniqueElementsBy(resolvedList, compareFn) : uniq(resolvedList);\n });\n}\n\nfunction useCounter(initialValue = 0, options = {}) {\n let _initialValue = unref(initialValue);\n const count = shallowRef(initialValue);\n const {\n max = Number.POSITIVE_INFINITY,\n min = Number.NEGATIVE_INFINITY\n } = options;\n const inc = (delta = 1) => count.value = Math.max(Math.min(max, count.value + delta), min);\n const dec = (delta = 1) => count.value = Math.min(Math.max(min, count.value - delta), max);\n const get = () => count.value;\n const set = (val) => count.value = Math.max(min, Math.min(max, val));\n const reset = (val = _initialValue) => {\n _initialValue = val;\n return set(val);\n };\n return { count, inc, dec, get, set, reset };\n}\n\nconst REGEX_PARSE = /^(\\d{4})[-/]?(\\d{1,2})?[-/]?(\\d{0,2})[T\\s]*(\\d{1,2})?:?(\\d{1,2})?:?(\\d{1,2})?[.:]?(\\d+)?$/i;\nconst REGEX_FORMAT = /[YMDHhms]o|\\[([^\\]]+)\\]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a{1,2}|A{1,2}|m{1,2}|s{1,2}|Z{1,2}|z{1,4}|SSS/g;\nfunction defaultMeridiem(hours, minutes, isLowercase, hasPeriod) {\n let m = hours < 12 ? \"AM\" : \"PM\";\n if (hasPeriod)\n m = m.split(\"\").reduce((acc, curr) => acc += `${curr}.`, \"\");\n return isLowercase ? m.toLowerCase() : m;\n}\nfunction formatOrdinal(num) {\n const suffixes = [\"th\", \"st\", \"nd\", \"rd\"];\n const v = num % 100;\n return num + (suffixes[(v - 20) % 10] || suffixes[v] || suffixes[0]);\n}\nfunction formatDate(date, formatStr, options = {}) {\n var _a;\n const years = date.getFullYear();\n const month = date.getMonth();\n const days = date.getDate();\n const hours = date.getHours();\n const minutes = date.getMinutes();\n const seconds = date.getSeconds();\n const milliseconds = date.getMilliseconds();\n const day = date.getDay();\n const meridiem = (_a = options.customMeridiem) != null ? _a : defaultMeridiem;\n const stripTimeZone = (dateString) => {\n var _a2;\n return (_a2 = dateString.split(\" \")[1]) != null ? _a2 : \"\";\n };\n const matches = {\n Yo: () => formatOrdinal(years),\n YY: () => String(years).slice(-2),\n YYYY: () => years,\n M: () => month + 1,\n Mo: () => formatOrdinal(month + 1),\n MM: () => `${month + 1}`.padStart(2, \"0\"),\n MMM: () => date.toLocaleDateString(toValue$1(options.locales), { month: \"short\" }),\n MMMM: () => date.toLocaleDateString(toValue$1(options.locales), { month: \"long\" }),\n D: () => String(days),\n Do: () => formatOrdinal(days),\n DD: () => `${days}`.padStart(2, \"0\"),\n H: () => String(hours),\n Ho: () => formatOrdinal(hours),\n HH: () => `${hours}`.padStart(2, \"0\"),\n h: () => `${hours % 12 || 12}`.padStart(1, \"0\"),\n ho: () => formatOrdinal(hours % 12 || 12),\n hh: () => `${hours % 12 || 12}`.padStart(2, \"0\"),\n m: () => String(minutes),\n mo: () => formatOrdinal(minutes),\n mm: () => `${minutes}`.padStart(2, \"0\"),\n s: () => String(seconds),\n so: () => formatOrdinal(seconds),\n ss: () => `${seconds}`.padStart(2, \"0\"),\n SSS: () => `${milliseconds}`.padStart(3, \"0\"),\n d: () => day,\n dd: () => date.toLocaleDateString(toValue$1(options.locales), { weekday: \"narrow\" }),\n ddd: () => date.toLocaleDateString(toValue$1(options.locales), { weekday: \"short\" }),\n dddd: () => date.toLocaleDateString(toValue$1(options.locales), { weekday: \"long\" }),\n A: () => meridiem(hours, minutes),\n AA: () => meridiem(hours, minutes, false, true),\n a: () => meridiem(hours, minutes, true),\n aa: () => meridiem(hours, minutes, true, true),\n z: () => stripTimeZone(date.toLocaleDateString(toValue$1(options.locales), { timeZoneName: \"shortOffset\" })),\n zz: () => stripTimeZone(date.toLocaleDateString(toValue$1(options.locales), { timeZoneName: \"shortOffset\" })),\n zzz: () => stripTimeZone(date.toLocaleDateString(toValue$1(options.locales), { timeZoneName: \"shortOffset\" })),\n zzzz: () => stripTimeZone(date.toLocaleDateString(toValue$1(options.locales), { timeZoneName: \"longOffset\" }))\n };\n return formatStr.replace(REGEX_FORMAT, (match, $1) => {\n var _a2, _b;\n return (_b = $1 != null ? $1 : (_a2 = matches[match]) == null ? void 0 : _a2.call(matches)) != null ? _b : match;\n });\n}\nfunction normalizeDate(date) {\n if (date === null)\n return new Date(Number.NaN);\n if (date === void 0)\n return /* @__PURE__ */ new Date();\n if (date instanceof Date)\n return new Date(date);\n if (typeof date === \"string\" && !/Z$/i.test(date)) {\n const d = date.match(REGEX_PARSE);\n if (d) {\n const m = d[2] - 1 || 0;\n const ms = (d[7] || \"0\").substring(0, 3);\n return new Date(d[1], m, d[3] || 1, d[4] || 0, d[5] || 0, d[6] || 0, ms);\n }\n }\n return new Date(date);\n}\nfunction useDateFormat(date, formatStr = \"HH:mm:ss\", options = {}) {\n return computed(() => formatDate(normalizeDate(toValue$1(date)), toValue$1(formatStr), options));\n}\n\nfunction useIntervalFn(cb, interval = 1e3, options = {}) {\n const {\n immediate = true,\n immediateCallback = false\n } = options;\n let timer = null;\n const isActive = shallowRef(false);\n function clean() {\n if (timer) {\n clearInterval(timer);\n timer = null;\n }\n }\n function pause() {\n isActive.value = false;\n clean();\n }\n function resume() {\n const intervalValue = toValue$1(interval);\n if (intervalValue <= 0)\n return;\n isActive.value = true;\n if (immediateCallback)\n cb();\n clean();\n if (isActive.value)\n timer = setInterval(cb, intervalValue);\n }\n if (immediate && isClient)\n resume();\n if (isRef(interval) || typeof interval === \"function\") {\n const stopWatch = watch(interval, () => {\n if (isActive.value && isClient)\n resume();\n });\n tryOnScopeDispose(stopWatch);\n }\n tryOnScopeDispose(pause);\n return {\n isActive,\n pause,\n resume\n };\n}\n\nfunction useInterval(interval = 1e3, options = {}) {\n const {\n controls: exposeControls = false,\n immediate = true,\n callback\n } = options;\n const counter = shallowRef(0);\n const update = () => counter.value += 1;\n const reset = () => {\n counter.value = 0;\n };\n const controls = useIntervalFn(\n callback ? () => {\n update();\n callback(counter.value);\n } : update,\n interval,\n { immediate }\n );\n if (exposeControls) {\n return {\n counter,\n reset,\n ...controls\n };\n } else {\n return counter;\n }\n}\n\nfunction useLastChanged(source, options = {}) {\n var _a;\n const ms = shallowRef((_a = options.initialValue) != null ? _a : null);\n watch(\n source,\n () => ms.value = timestamp(),\n options\n );\n return ms;\n}\n\nfunction useTimeoutFn(cb, interval, options = {}) {\n const {\n immediate = true,\n immediateCallback = false\n } = options;\n const isPending = shallowRef(false);\n let timer = null;\n function clear() {\n if (timer) {\n clearTimeout(timer);\n timer = null;\n }\n }\n function stop() {\n isPending.value = false;\n clear();\n }\n function start(...args) {\n if (immediateCallback)\n cb();\n clear();\n isPending.value = true;\n timer = setTimeout(() => {\n isPending.value = false;\n timer = null;\n cb(...args);\n }, toValue$1(interval));\n }\n if (immediate) {\n isPending.value = true;\n if (isClient)\n start();\n }\n tryOnScopeDispose(stop);\n return {\n isPending: readonly(isPending),\n start,\n stop\n };\n}\n\nfunction useTimeout(interval = 1e3, options = {}) {\n const {\n controls: exposeControls = false,\n callback\n } = options;\n const controls = useTimeoutFn(\n callback != null ? callback : noop,\n interval,\n options\n );\n const ready = computed(() => !controls.isPending.value);\n if (exposeControls) {\n return {\n ready,\n ...controls\n };\n } else {\n return ready;\n }\n}\n\nfunction useToNumber(value, options = {}) {\n const {\n method = \"parseFloat\",\n radix,\n nanToZero\n } = options;\n return computed(() => {\n let resolved = toValue$1(value);\n if (typeof method === \"function\")\n resolved = method(resolved);\n else if (typeof resolved === \"string\")\n resolved = Number[method](resolved, radix);\n if (nanToZero && Number.isNaN(resolved))\n resolved = 0;\n return resolved;\n });\n}\n\nfunction useToString(value) {\n return computed(() => `${toValue$1(value)}`);\n}\n\nfunction useToggle(initialValue = false, options = {}) {\n const {\n truthyValue = true,\n falsyValue = false\n } = options;\n const valueIsRef = isRef(initialValue);\n const _value = shallowRef(initialValue);\n function toggle(value) {\n if (arguments.length) {\n _value.value = value;\n return _value.value;\n } else {\n const truthy = toValue$1(truthyValue);\n _value.value = _value.value === truthy ? toValue$1(falsyValue) : truthy;\n return _value.value;\n }\n }\n if (valueIsRef)\n return toggle;\n else\n return [_value, toggle];\n}\n\nfunction watchArray(source, cb, options) {\n let oldList = (options == null ? void 0 : options.immediate) ? [] : [...typeof source === \"function\" ? source() : Array.isArray(source) ? source : toValue$1(source)];\n return watch(source, (newList, _, onCleanup) => {\n const oldListRemains = Array.from({ length: oldList.length });\n const added = [];\n for (const obj of newList) {\n let found = false;\n for (let i = 0; i < oldList.length; i++) {\n if (!oldListRemains[i] && obj === oldList[i]) {\n oldListRemains[i] = true;\n found = true;\n break;\n }\n }\n if (!found)\n added.push(obj);\n }\n const removed = oldList.filter((_2, i) => !oldListRemains[i]);\n cb(newList, oldList, added, removed, onCleanup);\n oldList = [...newList];\n }, options);\n}\n\nfunction watchAtMost(source, cb, options) {\n const {\n count,\n ...watchOptions\n } = options;\n const current = shallowRef(0);\n const stop = watchWithFilter(\n source,\n (...args) => {\n current.value += 1;\n if (current.value >= toValue$1(count))\n nextTick(() => stop());\n cb(...args);\n },\n watchOptions\n );\n return { count: current, stop };\n}\n\nfunction watchDebounced(source, cb, options = {}) {\n const {\n debounce = 0,\n maxWait = void 0,\n ...watchOptions\n } = options;\n return watchWithFilter(\n source,\n cb,\n {\n ...watchOptions,\n eventFilter: debounceFilter(debounce, { maxWait })\n }\n );\n}\n\nfunction watchDeep(source, cb, options) {\n return watch(\n source,\n cb,\n {\n ...options,\n deep: true\n }\n );\n}\n\nfunction watchIgnorable(source, cb, options = {}) {\n const {\n eventFilter = bypassFilter,\n ...watchOptions\n } = options;\n const filteredCb = createFilterWrapper(\n eventFilter,\n cb\n );\n let ignoreUpdates;\n let ignorePrevAsyncUpdates;\n let stop;\n if (watchOptions.flush === \"sync\") {\n const ignore = shallowRef(false);\n ignorePrevAsyncUpdates = () => {\n };\n ignoreUpdates = (updater) => {\n ignore.value = true;\n updater();\n ignore.value = false;\n };\n stop = watch(\n source,\n (...args) => {\n if (!ignore.value)\n filteredCb(...args);\n },\n watchOptions\n );\n } else {\n const disposables = [];\n const ignoreCounter = shallowRef(0);\n const syncCounter = shallowRef(0);\n ignorePrevAsyncUpdates = () => {\n ignoreCounter.value = syncCounter.value;\n };\n disposables.push(\n watch(\n source,\n () => {\n syncCounter.value++;\n },\n { ...watchOptions, flush: \"sync\" }\n )\n );\n ignoreUpdates = (updater) => {\n const syncCounterPrev = syncCounter.value;\n updater();\n ignoreCounter.value += syncCounter.value - syncCounterPrev;\n };\n disposables.push(\n watch(\n source,\n (...args) => {\n const ignore = ignoreCounter.value > 0 && ignoreCounter.value === syncCounter.value;\n ignoreCounter.value = 0;\n syncCounter.value = 0;\n if (ignore)\n return;\n filteredCb(...args);\n },\n watchOptions\n )\n );\n stop = () => {\n disposables.forEach((fn) => fn());\n };\n }\n return { stop, ignoreUpdates, ignorePrevAsyncUpdates };\n}\n\nfunction watchImmediate(source, cb, options) {\n return watch(\n source,\n cb,\n {\n ...options,\n immediate: true\n }\n );\n}\n\nfunction watchOnce(source, cb, options) {\n const stop = watch(source, (...args) => {\n nextTick(() => stop());\n return cb(...args);\n }, options);\n return stop;\n}\n\nfunction watchThrottled(source, cb, options = {}) {\n const {\n throttle = 0,\n trailing = true,\n leading = true,\n ...watchOptions\n } = options;\n return watchWithFilter(\n source,\n cb,\n {\n ...watchOptions,\n eventFilter: throttleFilter(throttle, trailing, leading)\n }\n );\n}\n\nfunction watchTriggerable(source, cb, options = {}) {\n let cleanupFn;\n function onEffect() {\n if (!cleanupFn)\n return;\n const fn = cleanupFn;\n cleanupFn = void 0;\n fn();\n }\n function onCleanup(callback) {\n cleanupFn = callback;\n }\n const _cb = (value, oldValue) => {\n onEffect();\n return cb(value, oldValue, onCleanup);\n };\n const res = watchIgnorable(source, _cb, options);\n const { ignoreUpdates } = res;\n const trigger = () => {\n let res2;\n ignoreUpdates(() => {\n res2 = _cb(getWatchSources(source), getOldValue(source));\n });\n return res2;\n };\n return {\n ...res,\n trigger\n };\n}\nfunction getWatchSources(sources) {\n if (isReactive(sources))\n return sources;\n if (Array.isArray(sources))\n return sources.map((item) => toValue$1(item));\n return toValue$1(sources);\n}\nfunction getOldValue(source) {\n return Array.isArray(source) ? source.map(() => void 0) : void 0;\n}\n\nfunction whenever(source, cb, options) {\n const stop = watch(\n source,\n (v, ov, onInvalidate) => {\n if (v) {\n if (options == null ? void 0 : options.once)\n nextTick(() => stop());\n cb(v, ov, onInvalidate);\n }\n },\n {\n ...options,\n once: false\n }\n );\n return stop;\n}\n\nexport { assert, refAutoReset as autoResetRef, bypassFilter, camelize, clamp, computedEager, computedWithControl, containsProp, computedWithControl as controlledComputed, controlledRef, createEventHook, createFilterWrapper, createGlobalState, createInjectionState, reactify as createReactiveFn, createRef, createSharedComposable, createSingletonPromise, debounceFilter, refDebounced as debouncedRef, watchDebounced as debouncedWatch, computedEager as eagerComputed, extendRef, formatDate, get, getLifeCycleTarget, hasOwn, hyphenate, identity, watchIgnorable as ignorableWatch, increaseWithUnit, injectLocal, invoke, isClient, isDef, isDefined, isIOS, isObject, isWorker, makeDestructurable, noop, normalizeDate, notNullish, now, objectEntries, objectOmit, objectPick, pausableFilter, watchPausable as pausableWatch, promiseTimeout, provideLocal, pxValue, rand, reactify, reactifyObject, reactiveComputed, reactiveOmit, reactivePick, refAutoReset, refDebounced, refDefault, refThrottled, refWithControl, resolveRef, resolveUnref, set, syncRef, syncRefs, throttleFilter, refThrottled as throttledRef, watchThrottled as throttledWatch, timestamp, toArray, toReactive, toRef, toRefs, toValue, tryOnBeforeMount, tryOnBeforeUnmount, tryOnMounted, tryOnScopeDispose, tryOnUnmounted, until, useArrayDifference, useArrayEvery, useArrayFilter, useArrayFind, useArrayFindIndex, useArrayFindLast, useArrayIncludes, useArrayJoin, useArrayMap, useArrayReduce, useArraySome, useArrayUnique, useCounter, useDateFormat, refDebounced as useDebounce, useDebounceFn, useInterval, useIntervalFn, useLastChanged, refThrottled as useThrottle, useThrottleFn, useTimeout, useTimeoutFn, useToNumber, useToString, useToggle, watchArray, watchAtMost, watchDebounced, watchDeep, watchIgnorable, watchImmediate, watchOnce, watchPausable, watchThrottled, watchTriggerable, watchWithFilter, whenever };\n","import { noop, makeDestructurable, camelize, isClient, toArray, watchImmediate, isObject, tryOnScopeDispose, isIOS, notNullish, tryOnMounted, objectOmit, promiseTimeout, until, injectLocal, provideLocal, pxValue, increaseWithUnit, objectEntries, createRef, createSingletonPromise, useTimeoutFn, pausableWatch, toRef, createEventHook, useIntervalFn, computedWithControl, timestamp, pausableFilter, watchIgnorable, debounceFilter, bypassFilter, createFilterWrapper, toRefs, watchOnce, containsProp, hasOwn, throttleFilter, useDebounceFn, useThrottleFn, tryOnUnmounted, clamp, syncRef, objectPick, watchWithFilter, identity, isDef, whenever, isWorker } from '@vueuse/shared';\nexport * from '@vueuse/shared';\nimport { isRef, shallowRef, ref, watchEffect, computed, inject, defineComponent, h, TransitionGroup, shallowReactive, Fragment, toValue, unref, getCurrentInstance, onMounted, watch, customRef, onUpdated, readonly, reactive, hasInjectionContext, toRaw, nextTick, markRaw, getCurrentScope, isReadonly, onBeforeUpdate } from 'vue';\n\nfunction computedAsync(evaluationCallback, initialState, optionsOrRef) {\n let options;\n if (isRef(optionsOrRef)) {\n options = {\n evaluating: optionsOrRef\n };\n } else {\n options = optionsOrRef || {};\n }\n const {\n lazy = false,\n evaluating = void 0,\n shallow = true,\n onError = noop\n } = options;\n const started = shallowRef(!lazy);\n const current = shallow ? shallowRef(initialState) : ref(initialState);\n let counter = 0;\n watchEffect(async (onInvalidate) => {\n if (!started.value)\n return;\n counter++;\n const counterAtBeginning = counter;\n let hasFinished = false;\n if (evaluating) {\n Promise.resolve().then(() => {\n evaluating.value = true;\n });\n }\n try {\n const result = await evaluationCallback((cancelCallback) => {\n onInvalidate(() => {\n if (evaluating)\n evaluating.value = false;\n if (!hasFinished)\n cancelCallback();\n });\n });\n if (counterAtBeginning === counter)\n current.value = result;\n } catch (e) {\n onError(e);\n } finally {\n if (evaluating && counterAtBeginning === counter)\n evaluating.value = false;\n hasFinished = true;\n }\n });\n if (lazy) {\n return computed(() => {\n started.value = true;\n return current.value;\n });\n } else {\n return current;\n }\n}\n\nfunction computedInject(key, options, defaultSource, treatDefaultAsFactory) {\n let source = inject(key);\n if (defaultSource)\n source = inject(key, defaultSource);\n if (treatDefaultAsFactory)\n source = inject(key, defaultSource, treatDefaultAsFactory);\n if (typeof options === \"function\") {\n return computed((ctx) => options(source, ctx));\n } else {\n return computed({\n get: (ctx) => options.get(source, ctx),\n set: options.set\n });\n }\n}\n\nfunction createReusableTemplate(options = {}) {\n const {\n inheritAttrs = true\n } = options;\n const render = shallowRef();\n const define = /*@__PURE__*/ defineComponent({\n setup(_, { slots }) {\n return () => {\n render.value = slots.default;\n };\n }\n });\n const reuse = /*@__PURE__*/ defineComponent({\n inheritAttrs,\n props: options.props,\n setup(props, { attrs, slots }) {\n return () => {\n var _a;\n if (!render.value && process.env.NODE_ENV !== \"production\")\n throw new Error(\"[VueUse] Failed to find the definition of reusable template\");\n const vnode = (_a = render.value) == null ? void 0 : _a.call(render, {\n ...options.props == null ? keysToCamelKebabCase(attrs) : props,\n $slots: slots\n });\n return inheritAttrs && (vnode == null ? void 0 : vnode.length) === 1 ? vnode[0] : vnode;\n };\n }\n });\n return makeDestructurable(\n { define, reuse },\n [define, reuse]\n );\n}\nfunction keysToCamelKebabCase(obj) {\n const newObj = {};\n for (const key in obj)\n newObj[camelize(key)] = obj[key];\n return newObj;\n}\n\nfunction createTemplatePromise(options = {}) {\n let index = 0;\n const instances = ref([]);\n function create(...args) {\n const props = shallowReactive({\n key: index++,\n args,\n promise: void 0,\n resolve: () => {\n },\n reject: () => {\n },\n isResolving: false,\n options\n });\n instances.value.push(props);\n props.promise = new Promise((_resolve, _reject) => {\n props.resolve = (v) => {\n props.isResolving = true;\n return _resolve(v);\n };\n props.reject = _reject;\n }).finally(() => {\n props.promise = void 0;\n const index2 = instances.value.indexOf(props);\n if (index2 !== -1)\n instances.value.splice(index2, 1);\n });\n return props.promise;\n }\n function start(...args) {\n if (options.singleton && instances.value.length > 0)\n return instances.value[0].promise;\n return create(...args);\n }\n const component = /*@__PURE__*/ defineComponent((_, { slots }) => {\n const renderList = () => instances.value.map((props) => {\n var _a;\n return h(Fragment, { key: props.key }, (_a = slots.default) == null ? void 0 : _a.call(slots, props));\n });\n if (options.transition)\n return () => h(TransitionGroup, options.transition, renderList);\n return renderList;\n });\n component.start = start;\n return component;\n}\n\nfunction createUnrefFn(fn) {\n return function(...args) {\n return fn.apply(this, args.map((i) => toValue(i)));\n };\n}\n\nconst defaultWindow = isClient ? window : void 0;\nconst defaultDocument = isClient ? window.document : void 0;\nconst defaultNavigator = isClient ? window.navigator : void 0;\nconst defaultLocation = isClient ? window.location : void 0;\n\nfunction unrefElement(elRef) {\n var _a;\n const plain = toValue(elRef);\n return (_a = plain == null ? void 0 : plain.$el) != null ? _a : plain;\n}\n\nfunction useEventListener(...args) {\n const cleanups = [];\n const cleanup = () => {\n cleanups.forEach((fn) => fn());\n cleanups.length = 0;\n };\n const register = (el, event, listener, options) => {\n el.addEventListener(event, listener, options);\n return () => el.removeEventListener(event, listener, options);\n };\n const firstParamTargets = computed(() => {\n const test = toArray(toValue(args[0])).filter((e) => e != null);\n return test.every((e) => typeof e !== \"string\") ? test : void 0;\n });\n const stopWatch = watchImmediate(\n () => {\n var _a, _b;\n return [\n (_b = (_a = firstParamTargets.value) == null ? void 0 : _a.map((e) => unrefElement(e))) != null ? _b : [defaultWindow].filter((e) => e != null),\n toArray(toValue(firstParamTargets.value ? args[1] : args[0])),\n toArray(unref(firstParamTargets.value ? args[2] : args[1])),\n // @ts-expect-error - TypeScript gets the correct types, but somehow still complains\n toValue(firstParamTargets.value ? args[3] : args[2])\n ];\n },\n ([raw_targets, raw_events, raw_listeners, raw_options]) => {\n cleanup();\n if (!(raw_targets == null ? void 0 : raw_targets.length) || !(raw_events == null ? void 0 : raw_events.length) || !(raw_listeners == null ? void 0 : raw_listeners.length))\n return;\n const optionsClone = isObject(raw_options) ? { ...raw_options } : raw_options;\n cleanups.push(\n ...raw_targets.flatMap(\n (el) => raw_events.flatMap(\n (event) => raw_listeners.map((listener) => register(el, event, listener, optionsClone))\n )\n )\n );\n },\n { flush: \"post\" }\n );\n const stop = () => {\n stopWatch();\n cleanup();\n };\n tryOnScopeDispose(cleanup);\n return stop;\n}\n\nlet _iOSWorkaround = false;\nfunction onClickOutside(target, handler, options = {}) {\n const { window = defaultWindow, ignore = [], capture = true, detectIframe = false, controls = false } = options;\n if (!window) {\n return controls ? { stop: noop, cancel: noop, trigger: noop } : noop;\n }\n if (isIOS && !_iOSWorkaround) {\n _iOSWorkaround = true;\n const listenerOptions = { passive: true };\n Array.from(window.document.body.children).forEach((el) => useEventListener(el, \"click\", noop, listenerOptions));\n useEventListener(window.document.documentElement, \"click\", noop, listenerOptions);\n }\n let shouldListen = true;\n const shouldIgnore = (event) => {\n return toValue(ignore).some((target2) => {\n if (typeof target2 === \"string\") {\n return Array.from(window.document.querySelectorAll(target2)).some((el) => el === event.target || event.composedPath().includes(el));\n } else {\n const el = unrefElement(target2);\n return el && (event.target === el || event.composedPath().includes(el));\n }\n });\n };\n function hasMultipleRoots(target2) {\n const vm = toValue(target2);\n return vm && vm.$.subTree.shapeFlag === 16;\n }\n function checkMultipleRoots(target2, event) {\n const vm = toValue(target2);\n const children = vm.$.subTree && vm.$.subTree.children;\n if (children == null || !Array.isArray(children))\n return false;\n return children.some((child) => child.el === event.target || event.composedPath().includes(child.el));\n }\n const listener = (event) => {\n const el = unrefElement(target);\n if (event.target == null)\n return;\n if (!(el instanceof Element) && hasMultipleRoots(target) && checkMultipleRoots(target, event))\n return;\n if (!el || el === event.target || event.composedPath().includes(el))\n return;\n if (\"detail\" in event && event.detail === 0)\n shouldListen = !shouldIgnore(event);\n if (!shouldListen) {\n shouldListen = true;\n return;\n }\n handler(event);\n };\n let isProcessingClick = false;\n const cleanup = [\n useEventListener(window, \"click\", (event) => {\n if (!isProcessingClick) {\n isProcessingClick = true;\n setTimeout(() => {\n isProcessingClick = false;\n }, 0);\n listener(event);\n }\n }, { passive: true, capture }),\n useEventListener(window, \"pointerdown\", (e) => {\n const el = unrefElement(target);\n shouldListen = !shouldIgnore(e) && !!(el && !e.composedPath().includes(el));\n }, { passive: true }),\n detectIframe && useEventListener(window, \"blur\", (event) => {\n setTimeout(() => {\n var _a;\n const el = unrefElement(target);\n if (((_a = window.document.activeElement) == null ? void 0 : _a.tagName) === \"IFRAME\" && !(el == null ? void 0 : el.contains(window.document.activeElement))) {\n handler(event);\n }\n }, 0);\n }, { passive: true })\n ].filter(Boolean);\n const stop = () => cleanup.forEach((fn) => fn());\n if (controls) {\n return {\n stop,\n cancel: () => {\n shouldListen = false;\n },\n trigger: (event) => {\n shouldListen = true;\n listener(event);\n shouldListen = false;\n }\n };\n }\n return stop;\n}\n\nfunction useMounted() {\n const isMounted = shallowRef(false);\n const instance = getCurrentInstance();\n if (instance) {\n onMounted(() => {\n isMounted.value = true;\n }, instance);\n }\n return isMounted;\n}\n\nfunction useSupported(callback) {\n const isMounted = useMounted();\n return computed(() => {\n isMounted.value;\n return Boolean(callback());\n });\n}\n\nfunction useMutationObserver(target, callback, options = {}) {\n const { window = defaultWindow, ...mutationOptions } = options;\n let observer;\n const isSupported = useSupported(() => window && \"MutationObserver\" in window);\n const cleanup = () => {\n if (observer) {\n observer.disconnect();\n observer = void 0;\n }\n };\n const targets = computed(() => {\n const value = toValue(target);\n const items = toArray(value).map(unrefElement).filter(notNullish);\n return new Set(items);\n });\n const stopWatch = watch(\n () => targets.value,\n (targets2) => {\n cleanup();\n if (isSupported.value && targets2.size) {\n observer = new MutationObserver(callback);\n targets2.forEach((el) => observer.observe(el, mutationOptions));\n }\n },\n { immediate: true, flush: \"post\" }\n );\n const takeRecords = () => {\n return observer == null ? void 0 : observer.takeRecords();\n };\n const stop = () => {\n stopWatch();\n cleanup();\n };\n tryOnScopeDispose(stop);\n return {\n isSupported,\n stop,\n takeRecords\n };\n}\n\nfunction onElementRemoval(target, callback, options = {}) {\n const {\n window = defaultWindow,\n document = window == null ? void 0 : window.document,\n flush = \"sync\"\n } = options;\n if (!window || !document)\n return noop;\n let stopFn;\n const cleanupAndUpdate = (fn) => {\n stopFn == null ? void 0 : stopFn();\n stopFn = fn;\n };\n const stopWatch = watchEffect(() => {\n const el = unrefElement(target);\n if (el) {\n const { stop } = useMutationObserver(\n document,\n (mutationsList) => {\n const targetRemoved = mutationsList.map((mutation) => [...mutation.removedNodes]).flat().some((node) => node === el || node.contains(el));\n if (targetRemoved) {\n callback(mutationsList);\n }\n },\n {\n window,\n childList: true,\n subtree: true\n }\n );\n cleanupAndUpdate(stop);\n }\n }, { flush });\n const stopHandle = () => {\n stopWatch();\n cleanupAndUpdate();\n };\n tryOnScopeDispose(stopHandle);\n return stopHandle;\n}\n\nfunction createKeyPredicate(keyFilter) {\n if (typeof keyFilter === \"function\")\n return keyFilter;\n else if (typeof keyFilter === \"string\")\n return (event) => event.key === keyFilter;\n else if (Array.isArray(keyFilter))\n return (event) => keyFilter.includes(event.key);\n return () => true;\n}\nfunction onKeyStroke(...args) {\n let key;\n let handler;\n let options = {};\n if (args.length === 3) {\n key = args[0];\n handler = args[1];\n options = args[2];\n } else if (args.length === 2) {\n if (typeof args[1] === \"object\") {\n key = true;\n handler = args[0];\n options = args[1];\n } else {\n key = args[0];\n handler = args[1];\n }\n } else {\n key = true;\n handler = args[0];\n }\n const {\n target = defaultWindow,\n eventName = \"keydown\",\n passive = false,\n dedupe = false\n } = options;\n const predicate = createKeyPredicate(key);\n const listener = (e) => {\n if (e.repeat && toValue(dedupe))\n return;\n if (predicate(e))\n handler(e);\n };\n return useEventListener(target, eventName, listener, passive);\n}\nfunction onKeyDown(key, handler, options = {}) {\n return onKeyStroke(key, handler, { ...options, eventName: \"keydown\" });\n}\nfunction onKeyPressed(key, handler, options = {}) {\n return onKeyStroke(key, handler, { ...options, eventName: \"keypress\" });\n}\nfunction onKeyUp(key, handler, options = {}) {\n return onKeyStroke(key, handler, { ...options, eventName: \"keyup\" });\n}\n\nconst DEFAULT_DELAY = 500;\nconst DEFAULT_THRESHOLD = 10;\nfunction onLongPress(target, handler, options) {\n var _a, _b;\n const elementRef = computed(() => unrefElement(target));\n let timeout;\n let posStart;\n let startTimestamp;\n let hasLongPressed = false;\n function clear() {\n if (timeout) {\n clearTimeout(timeout);\n timeout = void 0;\n }\n posStart = void 0;\n startTimestamp = void 0;\n hasLongPressed = false;\n }\n function onRelease(ev) {\n var _a2, _b2, _c;\n const [_startTimestamp, _posStart, _hasLongPressed] = [startTimestamp, posStart, hasLongPressed];\n clear();\n if (!(options == null ? void 0 : options.onMouseUp) || !_posStart || !_startTimestamp)\n return;\n if (((_a2 = options == null ? void 0 : options.modifiers) == null ? void 0 : _a2.self) && ev.target !== elementRef.value)\n return;\n if ((_b2 = options == null ? void 0 : options.modifiers) == null ? void 0 : _b2.prevent)\n ev.preventDefault();\n if ((_c = options == null ? void 0 : options.modifiers) == null ? void 0 : _c.stop)\n ev.stopPropagation();\n const dx = ev.x - _posStart.x;\n const dy = ev.y - _posStart.y;\n const distance = Math.sqrt(dx * dx + dy * dy);\n options.onMouseUp(ev.timeStamp - _startTimestamp, distance, _hasLongPressed);\n }\n function onDown(ev) {\n var _a2, _b2, _c, _d;\n if (((_a2 = options == null ? void 0 : options.modifiers) == null ? void 0 : _a2.self) && ev.target !== elementRef.value)\n return;\n clear();\n if ((_b2 = options == null ? void 0 : options.modifiers) == null ? void 0 : _b2.prevent)\n ev.preventDefault();\n if ((_c = options == null ? void 0 : options.modifiers) == null ? void 0 : _c.stop)\n ev.stopPropagation();\n posStart = {\n x: ev.x,\n y: ev.y\n };\n startTimestamp = ev.timeStamp;\n timeout = setTimeout(\n () => {\n hasLongPressed = true;\n handler(ev);\n },\n (_d = options == null ? void 0 : options.delay) != null ? _d : DEFAULT_DELAY\n );\n }\n function onMove(ev) {\n var _a2, _b2, _c, _d;\n if (((_a2 = options == null ? void 0 : options.modifiers) == null ? void 0 : _a2.self) && ev.target !== elementRef.value)\n return;\n if (!posStart || (options == null ? void 0 : options.distanceThreshold) === false)\n return;\n if ((_b2 = options == null ? void 0 : options.modifiers) == null ? void 0 : _b2.prevent)\n ev.preventDefault();\n if ((_c = options == null ? void 0 : options.modifiers) == null ? void 0 : _c.stop)\n ev.stopPropagation();\n const dx = ev.x - posStart.x;\n const dy = ev.y - posStart.y;\n const distance = Math.sqrt(dx * dx + dy * dy);\n if (distance >= ((_d = options == null ? void 0 : options.distanceThreshold) != null ? _d : DEFAULT_THRESHOLD))\n clear();\n }\n const listenerOptions = {\n capture: (_a = options == null ? void 0 : options.modifiers) == null ? void 0 : _a.capture,\n once: (_b = options == null ? void 0 : options.modifiers) == null ? void 0 : _b.once\n };\n const cleanup = [\n useEventListener(elementRef, \"pointerdown\", onDown, listenerOptions),\n useEventListener(elementRef, \"pointermove\", onMove, listenerOptions),\n useEventListener(elementRef, [\"pointerup\", \"pointerleave\"], onRelease, listenerOptions)\n ];\n const stop = () => cleanup.forEach((fn) => fn());\n return stop;\n}\n\nfunction isFocusedElementEditable() {\n const { activeElement, body } = document;\n if (!activeElement)\n return false;\n if (activeElement === body)\n return false;\n switch (activeElement.tagName) {\n case \"INPUT\":\n case \"TEXTAREA\":\n return true;\n }\n return activeElement.hasAttribute(\"contenteditable\");\n}\nfunction isTypedCharValid({\n keyCode,\n metaKey,\n ctrlKey,\n altKey\n}) {\n if (metaKey || ctrlKey || altKey)\n return false;\n if (keyCode >= 48 && keyCode <= 57 || keyCode >= 96 && keyCode <= 105)\n return true;\n if (keyCode >= 65 && keyCode <= 90)\n return true;\n return false;\n}\nfunction onStartTyping(callback, options = {}) {\n const { document: document2 = defaultDocument } = options;\n const keydown = (event) => {\n if (!isFocusedElementEditable() && isTypedCharValid(event)) {\n callback(event);\n }\n };\n if (document2)\n useEventListener(document2, \"keydown\", keydown, { passive: true });\n}\n\nfunction templateRef(key, initialValue = null) {\n const instance = getCurrentInstance();\n let _trigger = () => {\n };\n const element = customRef((track, trigger) => {\n _trigger = trigger;\n return {\n get() {\n var _a, _b;\n track();\n return (_b = (_a = instance == null ? void 0 : instance.proxy) == null ? void 0 : _a.$refs[key]) != null ? _b : initialValue;\n },\n set() {\n }\n };\n });\n tryOnMounted(_trigger);\n onUpdated(_trigger);\n return element;\n}\n\nfunction useActiveElement(options = {}) {\n var _a;\n const {\n window = defaultWindow,\n deep = true,\n triggerOnRemoval = false\n } = options;\n const document = (_a = options.document) != null ? _a : window == null ? void 0 : window.document;\n const getDeepActiveElement = () => {\n var _a2;\n let element = document == null ? void 0 : document.activeElement;\n if (deep) {\n while (element == null ? void 0 : element.shadowRoot)\n element = (_a2 = element == null ? void 0 : element.shadowRoot) == null ? void 0 : _a2.activeElement;\n }\n return element;\n };\n const activeElement = shallowRef();\n const trigger = () => {\n activeElement.value = getDeepActiveElement();\n };\n if (window) {\n const listenerOptions = {\n capture: true,\n passive: true\n };\n useEventListener(\n window,\n \"blur\",\n (event) => {\n if (event.relatedTarget !== null)\n return;\n trigger();\n },\n listenerOptions\n );\n useEventListener(\n window,\n \"focus\",\n trigger,\n listenerOptions\n );\n }\n if (triggerOnRemoval) {\n onElementRemoval(activeElement, trigger, { document });\n }\n trigger();\n return activeElement;\n}\n\nfunction useRafFn(fn, options = {}) {\n const {\n immediate = true,\n fpsLimit = void 0,\n window = defaultWindow,\n once = false\n } = options;\n const isActive = shallowRef(false);\n const intervalLimit = computed(() => {\n return fpsLimit ? 1e3 / toValue(fpsLimit) : null;\n });\n let previousFrameTimestamp = 0;\n let rafId = null;\n function loop(timestamp) {\n if (!isActive.value || !window)\n return;\n if (!previousFrameTimestamp)\n previousFrameTimestamp = timestamp;\n const delta = timestamp - previousFrameTimestamp;\n if (intervalLimit.value && delta < intervalLimit.value) {\n rafId = window.requestAnimationFrame(loop);\n return;\n }\n previousFrameTimestamp = timestamp;\n fn({ delta, timestamp });\n if (once) {\n isActive.value = false;\n rafId = null;\n return;\n }\n rafId = window.requestAnimationFrame(loop);\n }\n function resume() {\n if (!isActive.value && window) {\n isActive.value = true;\n previousFrameTimestamp = 0;\n rafId = window.requestAnimationFrame(loop);\n }\n }\n function pause() {\n isActive.value = false;\n if (rafId != null && window) {\n window.cancelAnimationFrame(rafId);\n rafId = null;\n }\n }\n if (immediate)\n resume();\n tryOnScopeDispose(pause);\n return {\n isActive: readonly(isActive),\n pause,\n resume\n };\n}\n\nfunction useAnimate(target, keyframes, options) {\n let config;\n let animateOptions;\n if (isObject(options)) {\n config = options;\n animateOptions = objectOmit(options, [\"window\", \"immediate\", \"commitStyles\", \"persist\", \"onReady\", \"onError\"]);\n } else {\n config = { duration: options };\n animateOptions = options;\n }\n const {\n window = defaultWindow,\n immediate = true,\n commitStyles,\n persist,\n playbackRate: _playbackRate = 1,\n onReady,\n onError = (e) => {\n console.error(e);\n }\n } = config;\n const isSupported = useSupported(() => window && HTMLElement && \"animate\" in HTMLElement.prototype);\n const animate = shallowRef(void 0);\n const store = shallowReactive({\n startTime: null,\n currentTime: null,\n timeline: null,\n playbackRate: _playbackRate,\n pending: false,\n playState: immediate ? \"idle\" : \"paused\",\n replaceState: \"active\"\n });\n const pending = computed(() => store.pending);\n const playState = computed(() => store.playState);\n const replaceState = computed(() => store.replaceState);\n const startTime = computed({\n get() {\n return store.startTime;\n },\n set(value) {\n store.startTime = value;\n if (animate.value)\n animate.value.startTime = value;\n }\n });\n const currentTime = computed({\n get() {\n return store.currentTime;\n },\n set(value) {\n store.currentTime = value;\n if (animate.value) {\n animate.value.currentTime = value;\n syncResume();\n }\n }\n });\n const timeline = computed({\n get() {\n return store.timeline;\n },\n set(value) {\n store.timeline = value;\n if (animate.value)\n animate.value.timeline = value;\n }\n });\n const playbackRate = computed({\n get() {\n return store.playbackRate;\n },\n set(value) {\n store.playbackRate = value;\n if (animate.value)\n animate.value.playbackRate = value;\n }\n });\n const play = () => {\n if (animate.value) {\n try {\n animate.value.play();\n syncResume();\n } catch (e) {\n syncPause();\n onError(e);\n }\n } else {\n update();\n }\n };\n const pause = () => {\n var _a;\n try {\n (_a = animate.value) == null ? void 0 : _a.pause();\n syncPause();\n } catch (e) {\n onError(e);\n }\n };\n const reverse = () => {\n var _a;\n if (!animate.value)\n update();\n try {\n (_a = animate.value) == null ? void 0 : _a.reverse();\n syncResume();\n } catch (e) {\n syncPause();\n onError(e);\n }\n };\n const finish = () => {\n var _a;\n try {\n (_a = animate.value) == null ? void 0 : _a.finish();\n syncPause();\n } catch (e) {\n onError(e);\n }\n };\n const cancel = () => {\n var _a;\n try {\n (_a = animate.value) == null ? void 0 : _a.cancel();\n syncPause();\n } catch (e) {\n onError(e);\n }\n };\n watch(() => unrefElement(target), (el) => {\n if (el) {\n update();\n } else {\n animate.value = void 0;\n }\n });\n watch(() => keyframes, (value) => {\n if (animate.value) {\n update();\n const targetEl = unrefElement(target);\n if (targetEl) {\n animate.value.effect = new KeyframeEffect(\n targetEl,\n toValue(value),\n animateOptions\n );\n }\n }\n }, { deep: true });\n tryOnMounted(() => update(true), false);\n tryOnScopeDispose(cancel);\n function update(init) {\n const el = unrefElement(target);\n if (!isSupported.value || !el)\n return;\n if (!animate.value)\n animate.value = el.animate(toValue(keyframes), animateOptions);\n if (persist)\n animate.value.persist();\n if (_playbackRate !== 1)\n animate.value.playbackRate = _playbackRate;\n if (init && !immediate)\n animate.value.pause();\n else\n syncResume();\n onReady == null ? void 0 : onReady(animate.value);\n }\n const listenerOptions = { passive: true };\n useEventListener(animate, [\"cancel\", \"finish\", \"remove\"], syncPause, listenerOptions);\n useEventListener(animate, \"finish\", () => {\n var _a;\n if (commitStyles)\n (_a = animate.value) == null ? void 0 : _a.commitStyles();\n }, listenerOptions);\n const { resume: resumeRef, pause: pauseRef } = useRafFn(() => {\n if (!animate.value)\n return;\n store.pending = animate.value.pending;\n store.playState = animate.value.playState;\n store.replaceState = animate.value.replaceState;\n store.startTime = animate.value.startTime;\n store.currentTime = animate.value.currentTime;\n store.timeline = animate.value.timeline;\n store.playbackRate = animate.value.playbackRate;\n }, { immediate: false });\n function syncResume() {\n if (isSupported.value)\n resumeRef();\n }\n function syncPause() {\n if (isSupported.value && window)\n window.requestAnimationFrame(pauseRef);\n }\n return {\n isSupported,\n animate,\n // actions\n play,\n pause,\n reverse,\n finish,\n cancel,\n // state\n pending,\n playState,\n replaceState,\n startTime,\n currentTime,\n timeline,\n playbackRate\n };\n}\n\nfunction useAsyncQueue(tasks, options) {\n const {\n interrupt = true,\n onError = noop,\n onFinished = noop,\n signal\n } = options || {};\n const promiseState = {\n aborted: \"aborted\",\n fulfilled: \"fulfilled\",\n pending: \"pending\",\n rejected: \"rejected\"\n };\n const initialResult = Array.from(Array.from({ length: tasks.length }), () => ({ state: promiseState.pending, data: null }));\n const result = reactive(initialResult);\n const activeIndex = shallowRef(-1);\n if (!tasks || tasks.length === 0) {\n onFinished();\n return {\n activeIndex,\n result\n };\n }\n function updateResult(state, res) {\n activeIndex.value++;\n result[activeIndex.value].data = res;\n result[activeIndex.value].state = state;\n }\n tasks.reduce((prev, curr) => {\n return prev.then((prevRes) => {\n var _a;\n if (signal == null ? void 0 : signal.aborted) {\n updateResult(promiseState.aborted, new Error(\"aborted\"));\n return;\n }\n if (((_a = result[activeIndex.value]) == null ? void 0 : _a.state) === promiseState.rejected && interrupt) {\n onFinished();\n return;\n }\n const done = curr(prevRes).then((currentRes) => {\n updateResult(promiseState.fulfilled, currentRes);\n if (activeIndex.value === tasks.length - 1)\n onFinished();\n return currentRes;\n });\n if (!signal)\n return done;\n return Promise.race([done, whenAborted(signal)]);\n }).catch((e) => {\n if (signal == null ? void 0 : signal.aborted) {\n updateResult(promiseState.aborted, e);\n return e;\n }\n updateResult(promiseState.rejected, e);\n onError();\n return e;\n });\n }, Promise.resolve());\n return {\n activeIndex,\n result\n };\n}\nfunction whenAborted(signal) {\n return new Promise((resolve, reject) => {\n const error = new Error(\"aborted\");\n if (signal.aborted)\n reject(error);\n else\n signal.addEventListener(\"abort\", () => reject(error), { once: true });\n });\n}\n\nfunction useAsyncState(promise, initialState, options) {\n const {\n immediate = true,\n delay = 0,\n onError = noop,\n onSuccess = noop,\n resetOnExecute = true,\n shallow = true,\n throwError\n } = options != null ? options : {};\n const state = shallow ? shallowRef(initialState) : ref(initialState);\n const isReady = shallowRef(false);\n const isLoading = shallowRef(false);\n const error = shallowRef(void 0);\n async function execute(delay2 = 0, ...args) {\n if (resetOnExecute)\n state.value = initialState;\n error.value = void 0;\n isReady.value = false;\n isLoading.value = true;\n if (delay2 > 0)\n await promiseTimeout(delay2);\n const _promise = typeof promise === \"function\" ? promise(...args) : promise;\n try {\n const data = await _promise;\n state.value = data;\n isReady.value = true;\n onSuccess(data);\n } catch (e) {\n error.value = e;\n onError(e);\n if (throwError)\n throw e;\n } finally {\n isLoading.value = false;\n }\n return state.value;\n }\n if (immediate) {\n execute(delay);\n }\n const shell = {\n state,\n isReady,\n isLoading,\n error,\n execute\n };\n function waitUntilIsLoaded() {\n return new Promise((resolve, reject) => {\n until(isLoading).toBe(false).then(() => resolve(shell)).catch(reject);\n });\n }\n return {\n ...shell,\n then(onFulfilled, onRejected) {\n return waitUntilIsLoaded().then(onFulfilled, onRejected);\n }\n };\n}\n\nconst defaults = {\n array: (v) => JSON.stringify(v),\n object: (v) => JSON.stringify(v),\n set: (v) => JSON.stringify(Array.from(v)),\n map: (v) => JSON.stringify(Object.fromEntries(v)),\n null: () => \"\"\n};\nfunction getDefaultSerialization(target) {\n if (!target)\n return defaults.null;\n if (target instanceof Map)\n return defaults.map;\n else if (target instanceof Set)\n return defaults.set;\n else if (Array.isArray(target))\n return defaults.array;\n else\n return defaults.object;\n}\n\nfunction useBase64(target, options) {\n const base64 = shallowRef(\"\");\n const promise = shallowRef();\n function execute() {\n if (!isClient)\n return;\n promise.value = new Promise((resolve, reject) => {\n try {\n const _target = toValue(target);\n if (_target == null) {\n resolve(\"\");\n } else if (typeof _target === \"string\") {\n resolve(blobToBase64(new Blob([_target], { type: \"text/plain\" })));\n } else if (_target instanceof Blob) {\n resolve(blobToBase64(_target));\n } else if (_target instanceof ArrayBuffer) {\n resolve(window.btoa(String.fromCharCode(...new Uint8Array(_target))));\n } else if (_target instanceof HTMLCanvasElement) {\n resolve(_target.toDataURL(options == null ? void 0 : options.type, options == null ? void 0 : options.quality));\n } else if (_target instanceof HTMLImageElement) {\n const img = _target.cloneNode(false);\n img.crossOrigin = \"Anonymous\";\n imgLoaded(img).then(() => {\n const canvas = document.createElement(\"canvas\");\n const ctx = canvas.getContext(\"2d\");\n canvas.width = img.width;\n canvas.height = img.height;\n ctx.drawImage(img, 0, 0, canvas.width, canvas.height);\n resolve(canvas.toDataURL(options == null ? void 0 : options.type, options == null ? void 0 : options.quality));\n }).catch(reject);\n } else if (typeof _target === \"object\") {\n const _serializeFn = (options == null ? void 0 : options.serializer) || getDefaultSerialization(_target);\n const serialized = _serializeFn(_target);\n return resolve(blobToBase64(new Blob([serialized], { type: \"application/json\" })));\n } else {\n reject(new Error(\"target is unsupported types\"));\n }\n } catch (error) {\n reject(error);\n }\n });\n promise.value.then((res) => {\n base64.value = (options == null ? void 0 : options.dataUrl) === false ? res.replace(/^data:.*?;base64,/, \"\") : res;\n });\n return promise.value;\n }\n if (isRef(target) || typeof target === \"function\")\n watch(target, execute, { immediate: true });\n else\n execute();\n return {\n base64,\n promise,\n execute\n };\n}\nfunction imgLoaded(img) {\n return new Promise((resolve, reject) => {\n if (!img.complete) {\n img.onload = () => {\n resolve();\n };\n img.onerror = reject;\n } else {\n resolve();\n }\n });\n}\nfunction blobToBase64(blob) {\n return new Promise((resolve, reject) => {\n const fr = new FileReader();\n fr.onload = (e) => {\n resolve(e.target.result);\n };\n fr.onerror = reject;\n fr.readAsDataURL(blob);\n });\n}\n\nfunction useBattery(options = {}) {\n const { navigator = defaultNavigator } = options;\n const events = [\"chargingchange\", \"chargingtimechange\", \"dischargingtimechange\", \"levelchange\"];\n const isSupported = useSupported(() => navigator && \"getBattery\" in navigator && typeof navigator.getBattery === \"function\");\n const charging = shallowRef(false);\n const chargingTime = shallowRef(0);\n const dischargingTime = shallowRef(0);\n const level = shallowRef(1);\n let battery;\n function updateBatteryInfo() {\n charging.value = this.charging;\n chargingTime.value = this.chargingTime || 0;\n dischargingTime.value = this.dischargingTime || 0;\n level.value = this.level;\n }\n if (isSupported.value) {\n navigator.getBattery().then((_battery) => {\n battery = _battery;\n updateBatteryInfo.call(battery);\n useEventListener(battery, events, updateBatteryInfo, { passive: true });\n });\n }\n return {\n isSupported,\n charging,\n chargingTime,\n dischargingTime,\n level\n };\n}\n\nfunction useBluetooth(options) {\n let {\n acceptAllDevices = false\n } = options || {};\n const {\n filters = void 0,\n optionalServices = void 0,\n navigator = defaultNavigator\n } = options || {};\n const isSupported = useSupported(() => navigator && \"bluetooth\" in navigator);\n const device = shallowRef();\n const error = shallowRef(null);\n watch(device, () => {\n connectToBluetoothGATTServer();\n });\n async function requestDevice() {\n if (!isSupported.value)\n return;\n error.value = null;\n if (filters && filters.length > 0)\n acceptAllDevices = false;\n try {\n device.value = await (navigator == null ? void 0 : navigator.bluetooth.requestDevice({\n acceptAllDevices,\n filters,\n optionalServices\n }));\n } catch (err) {\n error.value = err;\n }\n }\n const server = shallowRef();\n const isConnected = shallowRef(false);\n function reset() {\n isConnected.value = false;\n device.value = void 0;\n server.value = void 0;\n }\n async function connectToBluetoothGATTServer() {\n error.value = null;\n if (device.value && device.value.gatt) {\n useEventListener(device, \"gattserverdisconnected\", reset, { passive: true });\n try {\n server.value = await device.value.gatt.connect();\n isConnected.value = server.value.connected;\n } catch (err) {\n error.value = err;\n }\n }\n }\n tryOnMounted(() => {\n var _a;\n if (device.value)\n (_a = device.value.gatt) == null ? void 0 : _a.connect();\n });\n tryOnScopeDispose(() => {\n var _a;\n if (device.value)\n (_a = device.value.gatt) == null ? void 0 : _a.disconnect();\n });\n return {\n isSupported,\n isConnected: readonly(isConnected),\n // Device:\n device,\n requestDevice,\n // Server:\n server,\n // Errors:\n error\n };\n}\n\nconst ssrWidthSymbol = Symbol(\"vueuse-ssr-width\");\nfunction useSSRWidth() {\n const ssrWidth = hasInjectionContext() ? injectLocal(ssrWidthSymbol, null) : null;\n return typeof ssrWidth === \"number\" ? ssrWidth : void 0;\n}\nfunction provideSSRWidth(width, app) {\n if (app !== void 0) {\n app.provide(ssrWidthSymbol, width);\n } else {\n provideLocal(ssrWidthSymbol, width);\n }\n}\n\nfunction useMediaQuery(query, options = {}) {\n const { window = defaultWindow, ssrWidth = useSSRWidth() } = options;\n const isSupported = useSupported(() => window && \"matchMedia\" in window && typeof window.matchMedia === \"function\");\n const ssrSupport = shallowRef(typeof ssrWidth === \"number\");\n const mediaQuery = shallowRef();\n const matches = shallowRef(false);\n const handler = (event) => {\n matches.value = event.matches;\n };\n watchEffect(() => {\n if (ssrSupport.value) {\n ssrSupport.value = !isSupported.value;\n const queryStrings = toValue(query).split(\",\");\n matches.value = queryStrings.some((queryString) => {\n const not = queryString.includes(\"not all\");\n const minWidth = queryString.match(/\\(\\s*min-width:\\s*(-?\\d+(?:\\.\\d*)?[a-z]+\\s*)\\)/);\n const maxWidth = queryString.match(/\\(\\s*max-width:\\s*(-?\\d+(?:\\.\\d*)?[a-z]+\\s*)\\)/);\n let res = Boolean(minWidth || maxWidth);\n if (minWidth && res) {\n res = ssrWidth >= pxValue(minWidth[1]);\n }\n if (maxWidth && res) {\n res = ssrWidth <= pxValue(maxWidth[1]);\n }\n return not ? !res : res;\n });\n return;\n }\n if (!isSupported.value)\n return;\n mediaQuery.value = window.matchMedia(toValue(query));\n matches.value = mediaQuery.value.matches;\n });\n useEventListener(mediaQuery, \"change\", handler, { passive: true });\n return computed(() => matches.value);\n}\n\nconst breakpointsTailwind = {\n \"sm\": 640,\n \"md\": 768,\n \"lg\": 1024,\n \"xl\": 1280,\n \"2xl\": 1536\n};\nconst breakpointsBootstrapV5 = {\n xs: 0,\n sm: 576,\n md: 768,\n lg: 992,\n xl: 1200,\n xxl: 1400\n};\nconst breakpointsVuetifyV2 = {\n xs: 0,\n sm: 600,\n md: 960,\n lg: 1264,\n xl: 1904\n};\nconst breakpointsVuetifyV3 = {\n xs: 0,\n sm: 600,\n md: 960,\n lg: 1280,\n xl: 1920,\n xxl: 2560\n};\nconst breakpointsVuetify = breakpointsVuetifyV2;\nconst breakpointsAntDesign = {\n xs: 480,\n sm: 576,\n md: 768,\n lg: 992,\n xl: 1200,\n xxl: 1600\n};\nconst breakpointsQuasar = {\n xs: 0,\n sm: 600,\n md: 1024,\n lg: 1440,\n xl: 1920\n};\nconst breakpointsSematic = {\n mobileS: 320,\n mobileM: 375,\n mobileL: 425,\n tablet: 768,\n laptop: 1024,\n laptopL: 1440,\n desktop4K: 2560\n};\nconst breakpointsMasterCss = {\n \"3xs\": 360,\n \"2xs\": 480,\n \"xs\": 600,\n \"sm\": 768,\n \"md\": 1024,\n \"lg\": 1280,\n \"xl\": 1440,\n \"2xl\": 1600,\n \"3xl\": 1920,\n \"4xl\": 2560\n};\nconst breakpointsPrimeFlex = {\n sm: 576,\n md: 768,\n lg: 992,\n xl: 1200\n};\nconst breakpointsElement = {\n xs: 0,\n sm: 768,\n md: 992,\n lg: 1200,\n xl: 1920\n};\n\nfunction useBreakpoints(breakpoints, options = {}) {\n function getValue(k, delta) {\n let v = toValue(breakpoints[toValue(k)]);\n if (delta != null)\n v = increaseWithUnit(v, delta);\n if (typeof v === \"number\")\n v = `${v}px`;\n return v;\n }\n const { window = defaultWindow, strategy = \"min-width\", ssrWidth = useSSRWidth() } = options;\n const ssrSupport = typeof ssrWidth === \"number\";\n const mounted = ssrSupport ? shallowRef(false) : { value: true };\n if (ssrSupport) {\n tryOnMounted(() => mounted.value = !!window);\n }\n function match(query, size) {\n if (!mounted.value && ssrSupport) {\n return query === \"min\" ? ssrWidth >= pxValue(size) : ssrWidth <= pxValue(size);\n }\n if (!window)\n return false;\n return window.matchMedia(`(${query}-width: ${size})`).matches;\n }\n const greaterOrEqual = (k) => {\n return useMediaQuery(() => `(min-width: ${getValue(k)})`, options);\n };\n const smallerOrEqual = (k) => {\n return useMediaQuery(() => `(max-width: ${getValue(k)})`, options);\n };\n const shortcutMethods = Object.keys(breakpoints).reduce((shortcuts, k) => {\n Object.defineProperty(shortcuts, k, {\n get: () => strategy === \"min-width\" ? greaterOrEqual(k) : smallerOrEqual(k),\n enumerable: true,\n configurable: true\n });\n return shortcuts;\n }, {});\n function current() {\n const points = Object.keys(breakpoints).map((k) => [k, shortcutMethods[k], pxValue(getValue(k))]).sort((a, b) => a[2] - b[2]);\n return computed(() => points.filter(([, v]) => v.value).map(([k]) => k));\n }\n return Object.assign(shortcutMethods, {\n greaterOrEqual,\n smallerOrEqual,\n greater(k) {\n return useMediaQuery(() => `(min-width: ${getValue(k, 0.1)})`, options);\n },\n smaller(k) {\n return useMediaQuery(() => `(max-width: ${getValue(k, -0.1)})`, options);\n },\n between(a, b) {\n return useMediaQuery(() => `(min-width: ${getValue(a)}) and (max-width: ${getValue(b, -0.1)})`, options);\n },\n isGreater(k) {\n return match(\"min\", getValue(k, 0.1));\n },\n isGreaterOrEqual(k) {\n return match(\"min\", getValue(k));\n },\n isSmaller(k) {\n return match(\"max\", getValue(k, -0.1));\n },\n isSmallerOrEqual(k) {\n return match(\"max\", getValue(k));\n },\n isInBetween(a, b) {\n return match(\"min\", getValue(a)) && match(\"max\", getValue(b, -0.1));\n },\n current,\n active() {\n const bps = current();\n return computed(() => bps.value.length === 0 ? \"\" : bps.value.at(strategy === \"min-width\" ? -1 : 0));\n }\n });\n}\n\nfunction useBroadcastChannel(options) {\n const {\n name,\n window = defaultWindow\n } = options;\n const isSupported = useSupported(() => window && \"BroadcastChannel\" in window);\n const isClosed = shallowRef(false);\n const channel = ref();\n const data = ref();\n const error = shallowRef(null);\n const post = (data2) => {\n if (channel.value)\n channel.value.postMessage(data2);\n };\n const close = () => {\n if (channel.value)\n channel.value.close();\n isClosed.value = true;\n };\n if (isSupported.value) {\n tryOnMounted(() => {\n error.value = null;\n channel.value = new BroadcastChannel(name);\n const listenerOptions = {\n passive: true\n };\n useEventListener(channel, \"message\", (e) => {\n data.value = e.data;\n }, listenerOptions);\n useEventListener(channel, \"messageerror\", (e) => {\n error.value = e;\n }, listenerOptions);\n useEventListener(channel, \"close\", () => {\n isClosed.value = true;\n }, listenerOptions);\n });\n }\n tryOnScopeDispose(() => {\n close();\n });\n return {\n isSupported,\n channel,\n data,\n post,\n close,\n error,\n isClosed\n };\n}\n\nconst WRITABLE_PROPERTIES = [\n \"hash\",\n \"host\",\n \"hostname\",\n \"href\",\n \"pathname\",\n \"port\",\n \"protocol\",\n \"search\"\n];\nfunction useBrowserLocation(options = {}) {\n const { window = defaultWindow } = options;\n const refs = Object.fromEntries(\n WRITABLE_PROPERTIES.map((key) => [key, ref()])\n );\n for (const [key, ref] of objectEntries(refs)) {\n watch(ref, (value) => {\n if (!(window == null ? void 0 : window.location) || window.location[key] === value)\n return;\n window.location[key] = value;\n });\n }\n const buildState = (trigger) => {\n var _a;\n const { state: state2, length } = (window == null ? void 0 : window.history) || {};\n const { origin } = (window == null ? void 0 : window.location) || {};\n for (const key of WRITABLE_PROPERTIES)\n refs[key].value = (_a = window == null ? void 0 : window.location) == null ? void 0 : _a[key];\n return reactive({\n trigger,\n state: state2,\n length,\n origin,\n ...refs\n });\n };\n const state = ref(buildState(\"load\"));\n if (window) {\n const listenerOptions = { passive: true };\n useEventListener(window, \"popstate\", () => state.value = buildState(\"popstate\"), listenerOptions);\n useEventListener(window, \"hashchange\", () => state.value = buildState(\"hashchange\"), listenerOptions);\n }\n return state;\n}\n\nfunction useCached(refValue, comparator = (a, b) => a === b, options) {\n const { deepRefs = true, ...watchOptions } = options || {};\n const cachedValue = createRef(refValue.value, deepRefs);\n watch(() => refValue.value, (value) => {\n if (!comparator(value, cachedValue.value))\n cachedValue.value = value;\n }, watchOptions);\n return cachedValue;\n}\n\nfunction usePermission(permissionDesc, options = {}) {\n const {\n controls = false,\n navigator = defaultNavigator\n } = options;\n const isSupported = useSupported(() => navigator && \"permissions\" in navigator);\n const permissionStatus = shallowRef();\n const desc = typeof permissionDesc === \"string\" ? { name: permissionDesc } : permissionDesc;\n const state = shallowRef();\n const update = () => {\n var _a, _b;\n state.value = (_b = (_a = permissionStatus.value) == null ? void 0 : _a.state) != null ? _b : \"prompt\";\n };\n useEventListener(permissionStatus, \"change\", update, { passive: true });\n const query = createSingletonPromise(async () => {\n if (!isSupported.value)\n return;\n if (!permissionStatus.value) {\n try {\n permissionStatus.value = await navigator.permissions.query(desc);\n } catch (e) {\n permissionStatus.value = void 0;\n } finally {\n update();\n }\n }\n if (controls)\n return toRaw(permissionStatus.value);\n });\n query();\n if (controls) {\n return {\n state,\n isSupported,\n query\n };\n } else {\n return state;\n }\n}\n\nfunction useClipboard(options = {}) {\n const {\n navigator = defaultNavigator,\n read = false,\n source,\n copiedDuring = 1500,\n legacy = false\n } = options;\n const isClipboardApiSupported = useSupported(() => navigator && \"clipboard\" in navigator);\n const permissionRead = usePermission(\"clipboard-read\");\n const permissionWrite = usePermission(\"clipboard-write\");\n const isSupported = computed(() => isClipboardApiSupported.value || legacy);\n const text = shallowRef(\"\");\n const copied = shallowRef(false);\n const timeout = useTimeoutFn(() => copied.value = false, copiedDuring, { immediate: false });\n async function updateText() {\n let useLegacy = !(isClipboardApiSupported.value && isAllowed(permissionRead.value));\n if (!useLegacy) {\n try {\n text.value = await navigator.clipboard.readText();\n } catch (e) {\n useLegacy = true;\n }\n }\n if (useLegacy) {\n text.value = legacyRead();\n }\n }\n if (isSupported.value && read)\n useEventListener([\"copy\", \"cut\"], updateText, { passive: true });\n async function copy(value = toValue(source)) {\n if (isSupported.value && value != null) {\n let useLegacy = !(isClipboardApiSupported.value && isAllowed(permissionWrite.value));\n if (!useLegacy) {\n try {\n await navigator.clipboard.writeText(value);\n } catch (e) {\n useLegacy = true;\n }\n }\n if (useLegacy)\n legacyCopy(value);\n text.value = value;\n copied.value = true;\n timeout.start();\n }\n }\n function legacyCopy(value) {\n const ta = document.createElement(\"textarea\");\n ta.value = value != null ? value : \"\";\n ta.style.position = \"absolute\";\n ta.style.opacity = \"0\";\n document.body.appendChild(ta);\n ta.select();\n document.execCommand(\"copy\");\n ta.remove();\n }\n function legacyRead() {\n var _a, _b, _c;\n return (_c = (_b = (_a = document == null ? void 0 : document.getSelection) == null ? void 0 : _a.call(document)) == null ? void 0 : _b.toString()) != null ? _c : \"\";\n }\n function isAllowed(status) {\n return status === \"granted\" || status === \"prompt\";\n }\n return {\n isSupported,\n text,\n copied,\n copy\n };\n}\n\nfunction useClipboardItems(options = {}) {\n const {\n navigator = defaultNavigator,\n read = false,\n source,\n copiedDuring = 1500\n } = options;\n const isSupported = useSupported(() => navigator && \"clipboard\" in navigator);\n const content = ref([]);\n const copied = shallowRef(false);\n const timeout = useTimeoutFn(() => copied.value = false, copiedDuring, { immediate: false });\n function updateContent() {\n if (isSupported.value) {\n navigator.clipboard.read().then((items) => {\n content.value = items;\n });\n }\n }\n if (isSupported.value && read)\n useEventListener([\"copy\", \"cut\"], updateContent, { passive: true });\n async function copy(value = toValue(source)) {\n if (isSupported.value && value != null) {\n await navigator.clipboard.write(value);\n content.value = value;\n copied.value = true;\n timeout.start();\n }\n }\n return {\n isSupported,\n content,\n copied,\n copy\n };\n}\n\nfunction cloneFnJSON(source) {\n return JSON.parse(JSON.stringify(source));\n}\nfunction useCloned(source, options = {}) {\n const cloned = ref({});\n const isModified = shallowRef(false);\n let _lastSync = false;\n const {\n manual,\n clone = cloneFnJSON,\n // watch options\n deep = true,\n immediate = true\n } = options;\n watch(cloned, () => {\n if (_lastSync) {\n _lastSync = false;\n return;\n }\n isModified.value = true;\n }, {\n deep: true,\n flush: \"sync\"\n });\n function sync() {\n _lastSync = true;\n isModified.value = false;\n cloned.value = clone(toValue(source));\n }\n if (!manual && (isRef(source) || typeof source === \"function\")) {\n watch(source, sync, {\n ...options,\n deep,\n immediate\n });\n } else {\n sync();\n }\n return { cloned, isModified, sync };\n}\n\nconst _global = typeof globalThis !== \"undefined\" ? globalThis : typeof window !== \"undefined\" ? window : typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : {};\nconst globalKey = \"__vueuse_ssr_handlers__\";\nconst handlers = /* @__PURE__ */ getHandlers();\nfunction getHandlers() {\n if (!(globalKey in _global))\n _global[globalKey] = _global[globalKey] || {};\n return _global[globalKey];\n}\nfunction getSSRHandler(key, fallback) {\n return handlers[key] || fallback;\n}\nfunction setSSRHandler(key, fn) {\n handlers[key] = fn;\n}\n\nfunction usePreferredDark(options) {\n return useMediaQuery(\"(prefers-color-scheme: dark)\", options);\n}\n\nfunction guessSerializerType(rawInit) {\n return rawInit == null ? \"any\" : rawInit instanceof Set ? \"set\" : rawInit instanceof Map ? \"map\" : rawInit instanceof Date ? \"date\" : typeof rawInit === \"boolean\" ? \"boolean\" : typeof rawInit === \"string\" ? \"string\" : typeof rawInit === \"object\" ? \"object\" : !Number.isNaN(rawInit) ? \"number\" : \"any\";\n}\n\nconst StorageSerializers = {\n boolean: {\n read: (v) => v === \"true\",\n write: (v) => String(v)\n },\n object: {\n read: (v) => JSON.parse(v),\n write: (v) => JSON.stringify(v)\n },\n number: {\n read: (v) => Number.parseFloat(v),\n write: (v) => String(v)\n },\n any: {\n read: (v) => v,\n write: (v) => String(v)\n },\n string: {\n read: (v) => v,\n write: (v) => String(v)\n },\n map: {\n read: (v) => new Map(JSON.parse(v)),\n write: (v) => JSON.stringify(Array.from(v.entries()))\n },\n set: {\n read: (v) => new Set(JSON.parse(v)),\n write: (v) => JSON.stringify(Array.from(v))\n },\n date: {\n read: (v) => new Date(v),\n write: (v) => v.toISOString()\n }\n};\nconst customStorageEventName = \"vueuse-storage\";\nfunction useStorage(key, defaults, storage, options = {}) {\n var _a;\n const {\n flush = \"pre\",\n deep = true,\n listenToStorageChanges = true,\n writeDefaults = true,\n mergeDefaults = false,\n shallow,\n window = defaultWindow,\n eventFilter,\n onError = (e) => {\n console.error(e);\n },\n initOnMounted\n } = options;\n const data = (shallow ? shallowRef : ref)(typeof defaults === \"function\" ? defaults() : defaults);\n const keyComputed = computed(() => toValue(key));\n if (!storage) {\n try {\n storage = getSSRHandler(\"getDefaultStorage\", () => {\n var _a2;\n return (_a2 = defaultWindow) == null ? void 0 : _a2.localStorage;\n })();\n } catch (e) {\n onError(e);\n }\n }\n if (!storage)\n return data;\n const rawInit = toValue(defaults);\n const type = guessSerializerType(rawInit);\n const serializer = (_a = options.serializer) != null ? _a : StorageSerializers[type];\n const { pause: pauseWatch, resume: resumeWatch } = pausableWatch(\n data,\n () => write(data.value),\n { flush, deep, eventFilter }\n );\n watch(keyComputed, () => update(), { flush });\n if (window && listenToStorageChanges) {\n tryOnMounted(() => {\n if (storage instanceof Storage)\n useEventListener(window, \"storage\", update, { passive: true });\n else\n useEventListener(window, customStorageEventName, updateFromCustomEvent);\n if (initOnMounted)\n update();\n });\n }\n if (!initOnMounted)\n update();\n function dispatchWriteEvent(oldValue, newValue) {\n if (window) {\n const payload = {\n key: keyComputed.value,\n oldValue,\n newValue,\n storageArea: storage\n };\n window.dispatchEvent(storage instanceof Storage ? new StorageEvent(\"storage\", payload) : new CustomEvent(customStorageEventName, {\n detail: payload\n }));\n }\n }\n function write(v) {\n try {\n const oldValue = storage.getItem(keyComputed.value);\n if (v == null) {\n dispatchWriteEvent(oldValue, null);\n storage.removeItem(keyComputed.value);\n } else {\n const serialized = serializer.write(v);\n if (oldValue !== serialized) {\n storage.setItem(keyComputed.value, serialized);\n dispatchWriteEvent(oldValue, serialized);\n }\n }\n } catch (e) {\n onError(e);\n }\n }\n function read(event) {\n const rawValue = event ? event.newValue : storage.getItem(keyComputed.value);\n if (rawValue == null) {\n if (writeDefaults && rawInit != null)\n storage.setItem(keyComputed.value, serializer.write(rawInit));\n return rawInit;\n } else if (!event && mergeDefaults) {\n const value = serializer.read(rawValue);\n if (typeof mergeDefaults === \"function\")\n return mergeDefaults(value, rawInit);\n else if (type === \"object\" && !Array.isArray(value))\n return { ...rawInit, ...value };\n return value;\n } else if (typeof rawValue !== \"string\") {\n return rawValue;\n } else {\n return serializer.read(rawValue);\n }\n }\n function update(event) {\n if (event && event.storageArea !== storage)\n return;\n if (event && event.key == null) {\n data.value = rawInit;\n return;\n }\n if (event && event.key !== keyComputed.value)\n return;\n pauseWatch();\n try {\n if ((event == null ? void 0 : event.newValue) !== serializer.write(data.value))\n data.value = read(event);\n } catch (e) {\n onError(e);\n } finally {\n if (event)\n nextTick(resumeWatch);\n else\n resumeWatch();\n }\n }\n function updateFromCustomEvent(event) {\n update(event.detail);\n }\n return data;\n}\n\nconst CSS_DISABLE_TRANS = \"*,*::before,*::after{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;-ms-transition:none!important;transition:none!important}\";\nfunction useColorMode(options = {}) {\n const {\n selector = \"html\",\n attribute = \"class\",\n initialValue = \"auto\",\n window = defaultWindow,\n storage,\n storageKey = \"vueuse-color-scheme\",\n listenToStorageChanges = true,\n storageRef,\n emitAuto,\n disableTransition = true\n } = options;\n const modes = {\n auto: \"\",\n light: \"light\",\n dark: \"dark\",\n ...options.modes || {}\n };\n const preferredDark = usePreferredDark({ window });\n const system = computed(() => preferredDark.value ? \"dark\" : \"light\");\n const store = storageRef || (storageKey == null ? toRef(initialValue) : useStorage(storageKey, initialValue, storage, { window, listenToStorageChanges }));\n const state = computed(() => store.value === \"auto\" ? system.value : store.value);\n const updateHTMLAttrs = getSSRHandler(\n \"updateHTMLAttrs\",\n (selector2, attribute2, value) => {\n const el = typeof selector2 === \"string\" ? window == null ? void 0 : window.document.querySelector(selector2) : unrefElement(selector2);\n if (!el)\n return;\n const classesToAdd = /* @__PURE__ */ new Set();\n const classesToRemove = /* @__PURE__ */ new Set();\n let attributeToChange = null;\n if (attribute2 === \"class\") {\n const current = value.split(/\\s/g);\n Object.values(modes).flatMap((i) => (i || \"\").split(/\\s/g)).filter(Boolean).forEach((v) => {\n if (current.includes(v))\n classesToAdd.add(v);\n else\n classesToRemove.add(v);\n });\n } else {\n attributeToChange = { key: attribute2, value };\n }\n if (classesToAdd.size === 0 && classesToRemove.size === 0 && attributeToChange === null)\n return;\n let style;\n if (disableTransition) {\n style = window.document.createElement(\"style\");\n style.appendChild(document.createTextNode(CSS_DISABLE_TRANS));\n window.document.head.appendChild(style);\n }\n for (const c of classesToAdd) {\n el.classList.add(c);\n }\n for (const c of classesToRemove) {\n el.classList.remove(c);\n }\n if (attributeToChange) {\n el.setAttribute(attributeToChange.key, attributeToChange.value);\n }\n if (disableTransition) {\n window.getComputedStyle(style).opacity;\n document.head.removeChild(style);\n }\n }\n );\n function defaultOnChanged(mode) {\n var _a;\n updateHTMLAttrs(selector, attribute, (_a = modes[mode]) != null ? _a : mode);\n }\n function onChanged(mode) {\n if (options.onChanged)\n options.onChanged(mode, defaultOnChanged);\n else\n defaultOnChanged(mode);\n }\n watch(state, onChanged, { flush: \"post\", immediate: true });\n tryOnMounted(() => onChanged(state.value));\n const auto = computed({\n get() {\n return emitAuto ? store.value : state.value;\n },\n set(v) {\n store.value = v;\n }\n });\n return Object.assign(auto, { store, system, state });\n}\n\nfunction useConfirmDialog(revealed = shallowRef(false)) {\n const confirmHook = createEventHook();\n const cancelHook = createEventHook();\n const revealHook = createEventHook();\n let _resolve = noop;\n const reveal = (data) => {\n revealHook.trigger(data);\n revealed.value = true;\n return new Promise((resolve) => {\n _resolve = resolve;\n });\n };\n const confirm = (data) => {\n revealed.value = false;\n confirmHook.trigger(data);\n _resolve({ data, isCanceled: false });\n };\n const cancel = (data) => {\n revealed.value = false;\n cancelHook.trigger(data);\n _resolve({ data, isCanceled: true });\n };\n return {\n isRevealed: computed(() => revealed.value),\n reveal,\n confirm,\n cancel,\n onReveal: revealHook.on,\n onConfirm: confirmHook.on,\n onCancel: cancelHook.on\n };\n}\n\nfunction useCountdown(initialCountdown, options) {\n var _a, _b;\n const remaining = shallowRef(toValue(initialCountdown));\n const intervalController = useIntervalFn(() => {\n var _a2, _b2;\n const value = remaining.value - 1;\n remaining.value = value < 0 ? 0 : value;\n (_a2 = options == null ? void 0 : options.onTick) == null ? void 0 : _a2.call(options);\n if (remaining.value <= 0) {\n intervalController.pause();\n (_b2 = options == null ? void 0 : options.onComplete) == null ? void 0 : _b2.call(options);\n }\n }, (_a = options == null ? void 0 : options.interval) != null ? _a : 1e3, { immediate: (_b = options == null ? void 0 : options.immediate) != null ? _b : false });\n const reset = (countdown) => {\n var _a2;\n remaining.value = (_a2 = toValue(countdown)) != null ? _a2 : toValue(initialCountdown);\n };\n const stop = () => {\n intervalController.pause();\n reset();\n };\n const resume = () => {\n if (!intervalController.isActive.value) {\n if (remaining.value > 0) {\n intervalController.resume();\n }\n }\n };\n const start = (countdown) => {\n reset(countdown);\n intervalController.resume();\n };\n return {\n remaining,\n reset,\n stop,\n start,\n pause: intervalController.pause,\n resume,\n isActive: intervalController.isActive\n };\n}\n\nfunction useCssVar(prop, target, options = {}) {\n const { window = defaultWindow, initialValue, observe = false } = options;\n const variable = shallowRef(initialValue);\n const elRef = computed(() => {\n var _a;\n return unrefElement(target) || ((_a = window == null ? void 0 : window.document) == null ? void 0 : _a.documentElement);\n });\n function updateCssVar() {\n var _a;\n const key = toValue(prop);\n const el = toValue(elRef);\n if (el && window && key) {\n const value = (_a = window.getComputedStyle(el).getPropertyValue(key)) == null ? void 0 : _a.trim();\n variable.value = value || variable.value || initialValue;\n }\n }\n if (observe) {\n useMutationObserver(elRef, updateCssVar, {\n attributeFilter: [\"style\", \"class\"],\n window\n });\n }\n watch(\n [elRef, () => toValue(prop)],\n (_, old) => {\n if (old[0] && old[1])\n old[0].style.removeProperty(old[1]);\n updateCssVar();\n },\n { immediate: true }\n );\n watch(\n [variable, elRef],\n ([val, el]) => {\n const raw_prop = toValue(prop);\n if ((el == null ? void 0 : el.style) && raw_prop) {\n if (val == null)\n el.style.removeProperty(raw_prop);\n else\n el.style.setProperty(raw_prop, val);\n }\n },\n { immediate: true }\n );\n return variable;\n}\n\nfunction useCurrentElement(rootComponent) {\n const vm = getCurrentInstance();\n const currentElement = computedWithControl(\n () => null,\n () => rootComponent ? unrefElement(rootComponent) : vm.proxy.$el\n );\n onUpdated(currentElement.trigger);\n onMounted(currentElement.trigger);\n return currentElement;\n}\n\nfunction useCycleList(list, options) {\n const state = shallowRef(getInitialValue());\n const listRef = toRef(list);\n const index = computed({\n get() {\n var _a;\n const targetList = listRef.value;\n let index2 = (options == null ? void 0 : options.getIndexOf) ? options.getIndexOf(state.value, targetList) : targetList.indexOf(state.value);\n if (index2 < 0)\n index2 = (_a = options == null ? void 0 : options.fallbackIndex) != null ? _a : 0;\n return index2;\n },\n set(v) {\n set(v);\n }\n });\n function set(i) {\n const targetList = listRef.value;\n const length = targetList.length;\n const index2 = (i % length + length) % length;\n const value = targetList[index2];\n state.value = value;\n return value;\n }\n function shift(delta = 1) {\n return set(index.value + delta);\n }\n function next(n = 1) {\n return shift(n);\n }\n function prev(n = 1) {\n return shift(-n);\n }\n function getInitialValue() {\n var _a, _b;\n return (_b = toValue((_a = options == null ? void 0 : options.initialValue) != null ? _a : toValue(list)[0])) != null ? _b : void 0;\n }\n watch(listRef, () => set(index.value));\n return {\n state,\n index,\n next,\n prev,\n go: set\n };\n}\n\nfunction useDark(options = {}) {\n const {\n valueDark = \"dark\",\n valueLight = \"\"\n } = options;\n const mode = useColorMode({\n ...options,\n onChanged: (mode2, defaultHandler) => {\n var _a;\n if (options.onChanged)\n (_a = options.onChanged) == null ? void 0 : _a.call(options, mode2 === \"dark\", defaultHandler, mode2);\n else\n defaultHandler(mode2);\n },\n modes: {\n dark: valueDark,\n light: valueLight\n }\n });\n const system = computed(() => mode.system.value);\n const isDark = computed({\n get() {\n return mode.value === \"dark\";\n },\n set(v) {\n const modeVal = v ? \"dark\" : \"light\";\n if (system.value === modeVal)\n mode.value = \"auto\";\n else\n mode.value = modeVal;\n }\n });\n return isDark;\n}\n\nfunction fnBypass(v) {\n return v;\n}\nfunction fnSetSource(source, value) {\n return source.value = value;\n}\nfunction defaultDump(clone) {\n return clone ? typeof clone === \"function\" ? clone : cloneFnJSON : fnBypass;\n}\nfunction defaultParse(clone) {\n return clone ? typeof clone === \"function\" ? clone : cloneFnJSON : fnBypass;\n}\nfunction useManualRefHistory(source, options = {}) {\n const {\n clone = false,\n dump = defaultDump(clone),\n parse = defaultParse(clone),\n setSource = fnSetSource\n } = options;\n function _createHistoryRecord() {\n return markRaw({\n snapshot: dump(source.value),\n timestamp: timestamp()\n });\n }\n const last = ref(_createHistoryRecord());\n const undoStack = ref([]);\n const redoStack = ref([]);\n const _setSource = (record) => {\n setSource(source, parse(record.snapshot));\n last.value = record;\n };\n const commit = () => {\n undoStack.value.unshift(last.value);\n last.value = _createHistoryRecord();\n if (options.capacity && undoStack.value.length > options.capacity)\n undoStack.value.splice(options.capacity, Number.POSITIVE_INFINITY);\n if (redoStack.value.length)\n redoStack.value.splice(0, redoStack.value.length);\n };\n const clear = () => {\n undoStack.value.splice(0, undoStack.value.length);\n redoStack.value.splice(0, redoStack.value.length);\n };\n const undo = () => {\n const state = undoStack.value.shift();\n if (state) {\n redoStack.value.unshift(last.value);\n _setSource(state);\n }\n };\n const redo = () => {\n const state = redoStack.value.shift();\n if (state) {\n undoStack.value.unshift(last.value);\n _setSource(state);\n }\n };\n const reset = () => {\n _setSource(last.value);\n };\n const history = computed(() => [last.value, ...undoStack.value]);\n const canUndo = computed(() => undoStack.value.length > 0);\n const canRedo = computed(() => redoStack.value.length > 0);\n return {\n source,\n undoStack,\n redoStack,\n last,\n history,\n canUndo,\n canRedo,\n clear,\n commit,\n reset,\n undo,\n redo\n };\n}\n\nfunction useRefHistory(source, options = {}) {\n const {\n deep = false,\n flush = \"pre\",\n eventFilter\n } = options;\n const {\n eventFilter: composedFilter,\n pause,\n resume: resumeTracking,\n isActive: isTracking\n } = pausableFilter(eventFilter);\n const {\n ignoreUpdates,\n ignorePrevAsyncUpdates,\n stop\n } = watchIgnorable(\n source,\n commit,\n { deep, flush, eventFilter: composedFilter }\n );\n function setSource(source2, value) {\n ignorePrevAsyncUpdates();\n ignoreUpdates(() => {\n source2.value = value;\n });\n }\n const manualHistory = useManualRefHistory(source, { ...options, clone: options.clone || deep, setSource });\n const { clear, commit: manualCommit } = manualHistory;\n function commit() {\n ignorePrevAsyncUpdates();\n manualCommit();\n }\n function resume(commitNow) {\n resumeTracking();\n if (commitNow)\n commit();\n }\n function batch(fn) {\n let canceled = false;\n const cancel = () => canceled = true;\n ignoreUpdates(() => {\n fn(cancel);\n });\n if (!canceled)\n commit();\n }\n function dispose() {\n stop();\n clear();\n }\n return {\n ...manualHistory,\n isTracking,\n pause,\n resume,\n commit,\n batch,\n dispose\n };\n}\n\nfunction useDebouncedRefHistory(source, options = {}) {\n const filter = options.debounce ? debounceFilter(options.debounce) : void 0;\n const history = useRefHistory(source, { ...options, eventFilter: filter });\n return {\n ...history\n };\n}\n\nfunction useDeviceMotion(options = {}) {\n const {\n window = defaultWindow,\n requestPermissions = false,\n eventFilter = bypassFilter\n } = options;\n const isSupported = useSupported(() => typeof DeviceMotionEvent !== \"undefined\");\n const requirePermissions = useSupported(() => isSupported.value && \"requestPermission\" in DeviceMotionEvent && typeof DeviceMotionEvent.requestPermission === \"function\");\n const permissionGranted = shallowRef(false);\n const acceleration = ref({ x: null, y: null, z: null });\n const rotationRate = ref({ alpha: null, beta: null, gamma: null });\n const interval = shallowRef(0);\n const accelerationIncludingGravity = ref({\n x: null,\n y: null,\n z: null\n });\n function init() {\n if (window) {\n const onDeviceMotion = createFilterWrapper(\n eventFilter,\n (event) => {\n var _a, _b, _c, _d, _e, _f, _g, _h, _i;\n acceleration.value = {\n x: ((_a = event.acceleration) == null ? void 0 : _a.x) || null,\n y: ((_b = event.acceleration) == null ? void 0 : _b.y) || null,\n z: ((_c = event.acceleration) == null ? void 0 : _c.z) || null\n };\n accelerationIncludingGravity.value = {\n x: ((_d = event.accelerationIncludingGravity) == null ? void 0 : _d.x) || null,\n y: ((_e = event.accelerationIncludingGravity) == null ? void 0 : _e.y) || null,\n z: ((_f = event.accelerationIncludingGravity) == null ? void 0 : _f.z) || null\n };\n rotationRate.value = {\n alpha: ((_g = event.rotationRate) == null ? void 0 : _g.alpha) || null,\n beta: ((_h = event.rotationRate) == null ? void 0 : _h.beta) || null,\n gamma: ((_i = event.rotationRate) == null ? void 0 : _i.gamma) || null\n };\n interval.value = event.interval;\n }\n );\n useEventListener(window, \"devicemotion\", onDeviceMotion, { passive: true });\n }\n }\n const ensurePermissions = async () => {\n if (!requirePermissions.value)\n permissionGranted.value = true;\n if (permissionGranted.value)\n return;\n if (requirePermissions.value) {\n const requestPermission = DeviceMotionEvent.requestPermission;\n try {\n const response = await requestPermission();\n if (response === \"granted\") {\n permissionGranted.value = true;\n init();\n }\n } catch (error) {\n console.error(error);\n }\n }\n };\n if (isSupported.value) {\n if (requestPermissions && requirePermissions.value) {\n ensurePermissions().then(() => init());\n } else {\n init();\n }\n }\n return {\n acceleration,\n accelerationIncludingGravity,\n rotationRate,\n interval,\n isSupported,\n requirePermissions,\n ensurePermissions,\n permissionGranted\n };\n}\n\nfunction useDeviceOrientation(options = {}) {\n const { window = defaultWindow } = options;\n const isSupported = useSupported(() => window && \"DeviceOrientationEvent\" in window);\n const isAbsolute = shallowRef(false);\n const alpha = shallowRef(null);\n const beta = shallowRef(null);\n const gamma = shallowRef(null);\n if (window && isSupported.value) {\n useEventListener(window, \"deviceorientation\", (event) => {\n isAbsolute.value = event.absolute;\n alpha.value = event.alpha;\n beta.value = event.beta;\n gamma.value = event.gamma;\n }, { passive: true });\n }\n return {\n isSupported,\n isAbsolute,\n alpha,\n beta,\n gamma\n };\n}\n\nfunction useDevicePixelRatio(options = {}) {\n const {\n window = defaultWindow\n } = options;\n const pixelRatio = shallowRef(1);\n const query = useMediaQuery(() => `(resolution: ${pixelRatio.value}dppx)`, options);\n let stop = noop;\n if (window) {\n stop = watchImmediate(query, () => pixelRatio.value = window.devicePixelRatio);\n }\n return {\n pixelRatio: readonly(pixelRatio),\n stop\n };\n}\n\nfunction useDevicesList(options = {}) {\n const {\n navigator = defaultNavigator,\n requestPermissions = false,\n constraints = { audio: true, video: true },\n onUpdated\n } = options;\n const devices = ref([]);\n const videoInputs = computed(() => devices.value.filter((i) => i.kind === \"videoinput\"));\n const audioInputs = computed(() => devices.value.filter((i) => i.kind === \"audioinput\"));\n const audioOutputs = computed(() => devices.value.filter((i) => i.kind === \"audiooutput\"));\n const isSupported = useSupported(() => navigator && navigator.mediaDevices && navigator.mediaDevices.enumerateDevices);\n const permissionGranted = shallowRef(false);\n let stream;\n async function update() {\n if (!isSupported.value)\n return;\n devices.value = await navigator.mediaDevices.enumerateDevices();\n onUpdated == null ? void 0 : onUpdated(devices.value);\n if (stream) {\n stream.getTracks().forEach((t) => t.stop());\n stream = null;\n }\n }\n async function ensurePermissions() {\n const deviceName = constraints.video ? \"camera\" : \"microphone\";\n if (!isSupported.value)\n return false;\n if (permissionGranted.value)\n return true;\n const { state, query } = usePermission(deviceName, { controls: true });\n await query();\n if (state.value !== \"granted\") {\n let granted = true;\n try {\n stream = await navigator.mediaDevices.getUserMedia(constraints);\n } catch (e) {\n stream = null;\n granted = false;\n }\n update();\n permissionGranted.value = granted;\n } else {\n permissionGranted.value = true;\n }\n return permissionGranted.value;\n }\n if (isSupported.value) {\n if (requestPermissions)\n ensurePermissions();\n useEventListener(navigator.mediaDevices, \"devicechange\", update, { passive: true });\n update();\n }\n return {\n devices,\n ensurePermissions,\n permissionGranted,\n videoInputs,\n audioInputs,\n audioOutputs,\n isSupported\n };\n}\n\nfunction useDisplayMedia(options = {}) {\n var _a;\n const enabled = shallowRef((_a = options.enabled) != null ? _a : false);\n const video = options.video;\n const audio = options.audio;\n const { navigator = defaultNavigator } = options;\n const isSupported = useSupported(() => {\n var _a2;\n return (_a2 = navigator == null ? void 0 : navigator.mediaDevices) == null ? void 0 : _a2.getDisplayMedia;\n });\n const constraint = { audio, video };\n const stream = shallowRef();\n async function _start() {\n var _a2;\n if (!isSupported.value || stream.value)\n return;\n stream.value = await navigator.mediaDevices.getDisplayMedia(constraint);\n (_a2 = stream.value) == null ? void 0 : _a2.getTracks().forEach((t) => useEventListener(t, \"ended\", stop, { passive: true }));\n return stream.value;\n }\n async function _stop() {\n var _a2;\n (_a2 = stream.value) == null ? void 0 : _a2.getTracks().forEach((t) => t.stop());\n stream.value = void 0;\n }\n function stop() {\n _stop();\n enabled.value = false;\n }\n async function start() {\n await _start();\n if (stream.value)\n enabled.value = true;\n return stream.value;\n }\n watch(\n enabled,\n (v) => {\n if (v)\n _start();\n else\n _stop();\n },\n { immediate: true }\n );\n return {\n isSupported,\n stream,\n start,\n stop,\n enabled\n };\n}\n\nfunction useDocumentVisibility(options = {}) {\n const { document = defaultDocument } = options;\n if (!document)\n return shallowRef(\"visible\");\n const visibility = shallowRef(document.visibilityState);\n useEventListener(document, \"visibilitychange\", () => {\n visibility.value = document.visibilityState;\n }, { passive: true });\n return visibility;\n}\n\nfunction useDraggable(target, options = {}) {\n var _a;\n const {\n pointerTypes,\n preventDefault,\n stopPropagation,\n exact,\n onMove,\n onEnd,\n onStart,\n initialValue,\n axis = \"both\",\n draggingElement = defaultWindow,\n containerElement,\n handle: draggingHandle = target,\n buttons = [0]\n } = options;\n const position = ref(\n (_a = toValue(initialValue)) != null ? _a : { x: 0, y: 0 }\n );\n const pressedDelta = ref();\n const filterEvent = (e) => {\n if (pointerTypes)\n return pointerTypes.includes(e.pointerType);\n return true;\n };\n const handleEvent = (e) => {\n if (toValue(preventDefault))\n e.preventDefault();\n if (toValue(stopPropagation))\n e.stopPropagation();\n };\n const start = (e) => {\n var _a2;\n if (!toValue(buttons).includes(e.button))\n return;\n if (toValue(options.disabled) || !filterEvent(e))\n return;\n if (toValue(exact) && e.target !== toValue(target))\n return;\n const container = toValue(containerElement);\n const containerRect = (_a2 = container == null ? void 0 : container.getBoundingClientRect) == null ? void 0 : _a2.call(container);\n const targetRect = toValue(target).getBoundingClientRect();\n const pos = {\n x: e.clientX - (container ? targetRect.left - containerRect.left + container.scrollLeft : targetRect.left),\n y: e.clientY - (container ? targetRect.top - containerRect.top + container.scrollTop : targetRect.top)\n };\n if ((onStart == null ? void 0 : onStart(pos, e)) === false)\n return;\n pressedDelta.value = pos;\n handleEvent(e);\n };\n const move = (e) => {\n if (toValue(options.disabled) || !filterEvent(e))\n return;\n if (!pressedDelta.value)\n return;\n const container = toValue(containerElement);\n const targetRect = toValue(target).getBoundingClientRect();\n let { x, y } = position.value;\n if (axis === \"x\" || axis === \"both\") {\n x = e.clientX - pressedDelta.value.x;\n if (container)\n x = Math.min(Math.max(0, x), container.scrollWidth - targetRect.width);\n }\n if (axis === \"y\" || axis === \"both\") {\n y = e.clientY - pressedDelta.value.y;\n if (container)\n y = Math.min(Math.max(0, y), container.scrollHeight - targetRect.height);\n }\n position.value = {\n x,\n y\n };\n onMove == null ? void 0 : onMove(position.value, e);\n handleEvent(e);\n };\n const end = (e) => {\n if (toValue(options.disabled) || !filterEvent(e))\n return;\n if (!pressedDelta.value)\n return;\n pressedDelta.value = void 0;\n onEnd == null ? void 0 : onEnd(position.value, e);\n handleEvent(e);\n };\n if (isClient) {\n const config = () => {\n var _a2;\n return {\n capture: (_a2 = options.capture) != null ? _a2 : true,\n passive: !toValue(preventDefault)\n };\n };\n useEventListener(draggingHandle, \"pointerdown\", start, config);\n useEventListener(draggingElement, \"pointermove\", move, config);\n useEventListener(draggingElement, \"pointerup\", end, config);\n }\n return {\n ...toRefs(position),\n position,\n isDragging: computed(() => !!pressedDelta.value),\n style: computed(\n () => `left:${position.value.x}px;top:${position.value.y}px;`\n )\n };\n}\n\nfunction useDropZone(target, options = {}) {\n var _a, _b;\n const isOverDropZone = shallowRef(false);\n const files = shallowRef(null);\n let counter = 0;\n let isValid = true;\n if (isClient) {\n const _options = typeof options === \"function\" ? { onDrop: options } : options;\n const multiple = (_a = _options.multiple) != null ? _a : true;\n const preventDefaultForUnhandled = (_b = _options.preventDefaultForUnhandled) != null ? _b : false;\n const getFiles = (event) => {\n var _a2, _b2;\n const list = Array.from((_b2 = (_a2 = event.dataTransfer) == null ? void 0 : _a2.files) != null ? _b2 : []);\n return list.length === 0 ? null : multiple ? list : [list[0]];\n };\n const checkDataTypes = (types) => {\n const dataTypes = unref(_options.dataTypes);\n if (typeof dataTypes === \"function\")\n return dataTypes(types);\n if (!(dataTypes == null ? void 0 : dataTypes.length))\n return true;\n if (types.length === 0)\n return false;\n return types.every(\n (type) => dataTypes.some((allowedType) => type.includes(allowedType))\n );\n };\n const checkValidity = (items) => {\n const types = Array.from(items != null ? items : []).map((item) => item.type);\n const dataTypesValid = checkDataTypes(types);\n const multipleFilesValid = multiple || items.length <= 1;\n return dataTypesValid && multipleFilesValid;\n };\n const isSafari = () => /^(?:(?!chrome|android).)*safari/i.test(navigator.userAgent) && !(\"chrome\" in window);\n const handleDragEvent = (event, eventType) => {\n var _a2, _b2, _c, _d, _e, _f;\n const dataTransferItemList = (_a2 = event.dataTransfer) == null ? void 0 : _a2.items;\n isValid = (_b2 = dataTransferItemList && checkValidity(dataTransferItemList)) != null ? _b2 : false;\n if (preventDefaultForUnhandled) {\n event.preventDefault();\n }\n if (!isSafari() && !isValid) {\n if (event.dataTransfer) {\n event.dataTransfer.dropEffect = \"none\";\n }\n return;\n }\n event.preventDefault();\n if (event.dataTransfer) {\n event.dataTransfer.dropEffect = \"copy\";\n }\n const currentFiles = getFiles(event);\n switch (eventType) {\n case \"enter\":\n counter += 1;\n isOverDropZone.value = true;\n (_c = _options.onEnter) == null ? void 0 : _c.call(_options, null, event);\n break;\n case \"over\":\n (_d = _options.onOver) == null ? void 0 : _d.call(_options, null, event);\n break;\n case \"leave\":\n counter -= 1;\n if (counter === 0)\n isOverDropZone.value = false;\n (_e = _options.onLeave) == null ? void 0 : _e.call(_options, null, event);\n break;\n case \"drop\":\n counter = 0;\n isOverDropZone.value = false;\n if (isValid) {\n files.value = currentFiles;\n (_f = _options.onDrop) == null ? void 0 : _f.call(_options, currentFiles, event);\n }\n break;\n }\n };\n useEventListener(target, \"dragenter\", (event) => handleDragEvent(event, \"enter\"));\n useEventListener(target, \"dragover\", (event) => handleDragEvent(event, \"over\"));\n useEventListener(target, \"dragleave\", (event) => handleDragEvent(event, \"leave\"));\n useEventListener(target, \"drop\", (event) => handleDragEvent(event, \"drop\"));\n }\n return {\n files,\n isOverDropZone\n };\n}\n\nfunction useResizeObserver(target, callback, options = {}) {\n const { window = defaultWindow, ...observerOptions } = options;\n let observer;\n const isSupported = useSupported(() => window && \"ResizeObserver\" in window);\n const cleanup = () => {\n if (observer) {\n observer.disconnect();\n observer = void 0;\n }\n };\n const targets = computed(() => {\n const _targets = toValue(target);\n return Array.isArray(_targets) ? _targets.map((el) => unrefElement(el)) : [unrefElement(_targets)];\n });\n const stopWatch = watch(\n targets,\n (els) => {\n cleanup();\n if (isSupported.value && window) {\n observer = new ResizeObserver(callback);\n for (const _el of els) {\n if (_el)\n observer.observe(_el, observerOptions);\n }\n }\n },\n { immediate: true, flush: \"post\" }\n );\n const stop = () => {\n cleanup();\n stopWatch();\n };\n tryOnScopeDispose(stop);\n return {\n isSupported,\n stop\n };\n}\n\nfunction useElementBounding(target, options = {}) {\n const {\n reset = true,\n windowResize = true,\n windowScroll = true,\n immediate = true,\n updateTiming = \"sync\"\n } = options;\n const height = shallowRef(0);\n const bottom = shallowRef(0);\n const left = shallowRef(0);\n const right = shallowRef(0);\n const top = shallowRef(0);\n const width = shallowRef(0);\n const x = shallowRef(0);\n const y = shallowRef(0);\n function recalculate() {\n const el = unrefElement(target);\n if (!el) {\n if (reset) {\n height.value = 0;\n bottom.value = 0;\n left.value = 0;\n right.value = 0;\n top.value = 0;\n width.value = 0;\n x.value = 0;\n y.value = 0;\n }\n return;\n }\n const rect = el.getBoundingClientRect();\n height.value = rect.height;\n bottom.value = rect.bottom;\n left.value = rect.left;\n right.value = rect.right;\n top.value = rect.top;\n width.value = rect.width;\n x.value = rect.x;\n y.value = rect.y;\n }\n function update() {\n if (updateTiming === \"sync\")\n recalculate();\n else if (updateTiming === \"next-frame\")\n requestAnimationFrame(() => recalculate());\n }\n useResizeObserver(target, update);\n watch(() => unrefElement(target), (ele) => !ele && update());\n useMutationObserver(target, update, {\n attributeFilter: [\"style\", \"class\"]\n });\n if (windowScroll)\n useEventListener(\"scroll\", update, { capture: true, passive: true });\n if (windowResize)\n useEventListener(\"resize\", update, { passive: true });\n tryOnMounted(() => {\n if (immediate)\n update();\n });\n return {\n height,\n bottom,\n left,\n right,\n top,\n width,\n x,\n y,\n update\n };\n}\n\nfunction useElementByPoint(options) {\n const {\n x,\n y,\n document = defaultDocument,\n multiple,\n interval = \"requestAnimationFrame\",\n immediate = true\n } = options;\n const isSupported = useSupported(() => {\n if (toValue(multiple))\n return document && \"elementsFromPoint\" in document;\n return document && \"elementFromPoint\" in document;\n });\n const element = shallowRef(null);\n const cb = () => {\n var _a, _b;\n element.value = toValue(multiple) ? (_a = document == null ? void 0 : document.elementsFromPoint(toValue(x), toValue(y))) != null ? _a : [] : (_b = document == null ? void 0 : document.elementFromPoint(toValue(x), toValue(y))) != null ? _b : null;\n };\n const controls = interval === \"requestAnimationFrame\" ? useRafFn(cb, { immediate }) : useIntervalFn(cb, interval, { immediate });\n return {\n isSupported,\n element,\n ...controls\n };\n}\n\nfunction useElementHover(el, options = {}) {\n const {\n delayEnter = 0,\n delayLeave = 0,\n triggerOnRemoval = false,\n window = defaultWindow\n } = options;\n const isHovered = shallowRef(false);\n let timer;\n const toggle = (entering) => {\n const delay = entering ? delayEnter : delayLeave;\n if (timer) {\n clearTimeout(timer);\n timer = void 0;\n }\n if (delay)\n timer = setTimeout(() => isHovered.value = entering, delay);\n else\n isHovered.value = entering;\n };\n if (!window)\n return isHovered;\n useEventListener(el, \"mouseenter\", () => toggle(true), { passive: true });\n useEventListener(el, \"mouseleave\", () => toggle(false), { passive: true });\n if (triggerOnRemoval) {\n onElementRemoval(\n computed(() => unrefElement(el)),\n () => toggle(false)\n );\n }\n return isHovered;\n}\n\nfunction useElementSize(target, initialSize = { width: 0, height: 0 }, options = {}) {\n const { window = defaultWindow, box = \"content-box\" } = options;\n const isSVG = computed(() => {\n var _a, _b;\n return (_b = (_a = unrefElement(target)) == null ? void 0 : _a.namespaceURI) == null ? void 0 : _b.includes(\"svg\");\n });\n const width = shallowRef(initialSize.width);\n const height = shallowRef(initialSize.height);\n const { stop: stop1 } = useResizeObserver(\n target,\n ([entry]) => {\n const boxSize = box === \"border-box\" ? entry.borderBoxSize : box === \"content-box\" ? entry.contentBoxSize : entry.devicePixelContentBoxSize;\n if (window && isSVG.value) {\n const $elem = unrefElement(target);\n if ($elem) {\n const rect = $elem.getBoundingClientRect();\n width.value = rect.width;\n height.value = rect.height;\n }\n } else {\n if (boxSize) {\n const formatBoxSize = toArray(boxSize);\n width.value = formatBoxSize.reduce((acc, { inlineSize }) => acc + inlineSize, 0);\n height.value = formatBoxSize.reduce((acc, { blockSize }) => acc + blockSize, 0);\n } else {\n width.value = entry.contentRect.width;\n height.value = entry.contentRect.height;\n }\n }\n },\n options\n );\n tryOnMounted(() => {\n const ele = unrefElement(target);\n if (ele) {\n width.value = \"offsetWidth\" in ele ? ele.offsetWidth : initialSize.width;\n height.value = \"offsetHeight\" in ele ? ele.offsetHeight : initialSize.height;\n }\n });\n const stop2 = watch(\n () => unrefElement(target),\n (ele) => {\n width.value = ele ? initialSize.width : 0;\n height.value = ele ? initialSize.height : 0;\n }\n );\n function stop() {\n stop1();\n stop2();\n }\n return {\n width,\n height,\n stop\n };\n}\n\nfunction useIntersectionObserver(target, callback, options = {}) {\n const {\n root,\n rootMargin = \"0px\",\n threshold = 0,\n window = defaultWindow,\n immediate = true\n } = options;\n const isSupported = useSupported(() => window && \"IntersectionObserver\" in window);\n const targets = computed(() => {\n const _target = toValue(target);\n return toArray(_target).map(unrefElement).filter(notNullish);\n });\n let cleanup = noop;\n const isActive = shallowRef(immediate);\n const stopWatch = isSupported.value ? watch(\n () => [targets.value, unrefElement(root), isActive.value],\n ([targets2, root2]) => {\n cleanup();\n if (!isActive.value)\n return;\n if (!targets2.length)\n return;\n const observer = new IntersectionObserver(\n callback,\n {\n root: unrefElement(root2),\n rootMargin,\n threshold\n }\n );\n targets2.forEach((el) => el && observer.observe(el));\n cleanup = () => {\n observer.disconnect();\n cleanup = noop;\n };\n },\n { immediate, flush: \"post\" }\n ) : noop;\n const stop = () => {\n cleanup();\n stopWatch();\n isActive.value = false;\n };\n tryOnScopeDispose(stop);\n return {\n isSupported,\n isActive,\n pause() {\n cleanup();\n isActive.value = false;\n },\n resume() {\n isActive.value = true;\n },\n stop\n };\n}\n\nfunction useElementVisibility(element, options = {}) {\n const {\n window = defaultWindow,\n scrollTarget,\n threshold = 0,\n rootMargin,\n once = false\n } = options;\n const elementIsVisible = shallowRef(false);\n const { stop } = useIntersectionObserver(\n element,\n (intersectionObserverEntries) => {\n let isIntersecting = elementIsVisible.value;\n let latestTime = 0;\n for (const entry of intersectionObserverEntries) {\n if (entry.time >= latestTime) {\n latestTime = entry.time;\n isIntersecting = entry.isIntersecting;\n }\n }\n elementIsVisible.value = isIntersecting;\n if (once) {\n watchOnce(elementIsVisible, () => {\n stop();\n });\n }\n },\n {\n root: scrollTarget,\n window,\n threshold,\n rootMargin: toValue(rootMargin)\n }\n );\n return elementIsVisible;\n}\n\nconst events = /* @__PURE__ */ new Map();\n\nfunction useEventBus(key) {\n const scope = getCurrentScope();\n function on(listener) {\n var _a;\n const listeners = events.get(key) || /* @__PURE__ */ new Set();\n listeners.add(listener);\n events.set(key, listeners);\n const _off = () => off(listener);\n (_a = scope == null ? void 0 : scope.cleanups) == null ? void 0 : _a.push(_off);\n return _off;\n }\n function once(listener) {\n function _listener(...args) {\n off(_listener);\n listener(...args);\n }\n return on(_listener);\n }\n function off(listener) {\n const listeners = events.get(key);\n if (!listeners)\n return;\n listeners.delete(listener);\n if (!listeners.size)\n reset();\n }\n function reset() {\n events.delete(key);\n }\n function emit(event, payload) {\n var _a;\n (_a = events.get(key)) == null ? void 0 : _a.forEach((v) => v(event, payload));\n }\n return { on, once, off, emit, reset };\n}\n\nfunction resolveNestedOptions$1(options) {\n if (options === true)\n return {};\n return options;\n}\nfunction useEventSource(url, events = [], options = {}) {\n const event = shallowRef(null);\n const data = shallowRef(null);\n const status = shallowRef(\"CONNECTING\");\n const eventSource = ref(null);\n const error = shallowRef(null);\n const urlRef = toRef(url);\n const lastEventId = shallowRef(null);\n let explicitlyClosed = false;\n let retried = 0;\n const {\n withCredentials = false,\n immediate = true,\n autoConnect = true,\n autoReconnect\n } = options;\n const close = () => {\n if (isClient && eventSource.value) {\n eventSource.value.close();\n eventSource.value = null;\n status.value = \"CLOSED\";\n explicitlyClosed = true;\n }\n };\n const _init = () => {\n if (explicitlyClosed || typeof urlRef.value === \"undefined\")\n return;\n const es = new EventSource(urlRef.value, { withCredentials });\n status.value = \"CONNECTING\";\n eventSource.value = es;\n es.onopen = () => {\n status.value = \"OPEN\";\n error.value = null;\n };\n es.onerror = (e) => {\n status.value = \"CLOSED\";\n error.value = e;\n if (es.readyState === 2 && !explicitlyClosed && autoReconnect) {\n es.close();\n const {\n retries = -1,\n delay = 1e3,\n onFailed\n } = resolveNestedOptions$1(autoReconnect);\n retried += 1;\n if (typeof retries === \"number\" && (retries < 0 || retried < retries))\n setTimeout(_init, delay);\n else if (typeof retries === \"function\" && retries())\n setTimeout(_init, delay);\n else\n onFailed == null ? void 0 : onFailed();\n }\n };\n es.onmessage = (e) => {\n event.value = null;\n data.value = e.data;\n lastEventId.value = e.lastEventId;\n };\n for (const event_name of events) {\n useEventListener(es, event_name, (e) => {\n event.value = event_name;\n data.value = e.data || null;\n }, { passive: true });\n }\n };\n const open = () => {\n if (!isClient)\n return;\n close();\n explicitlyClosed = false;\n retried = 0;\n _init();\n };\n if (immediate)\n open();\n if (autoConnect)\n watch(urlRef, open);\n tryOnScopeDispose(close);\n return {\n eventSource,\n event,\n data,\n status,\n error,\n open,\n close,\n lastEventId\n };\n}\n\nfunction useEyeDropper(options = {}) {\n const { initialValue = \"\" } = options;\n const isSupported = useSupported(() => typeof window !== \"undefined\" && \"EyeDropper\" in window);\n const sRGBHex = shallowRef(initialValue);\n async function open(openOptions) {\n if (!isSupported.value)\n return;\n const eyeDropper = new window.EyeDropper();\n const result = await eyeDropper.open(openOptions);\n sRGBHex.value = result.sRGBHex;\n return result;\n }\n return { isSupported, sRGBHex, open };\n}\n\nfunction useFavicon(newIcon = null, options = {}) {\n const {\n baseUrl = \"\",\n rel = \"icon\",\n document = defaultDocument\n } = options;\n const favicon = toRef(newIcon);\n const applyIcon = (icon) => {\n const elements = document == null ? void 0 : document.head.querySelectorAll(`link[rel*=\"${rel}\"]`);\n if (!elements || elements.length === 0) {\n const link = document == null ? void 0 : document.createElement(\"link\");\n if (link) {\n link.rel = rel;\n link.href = `${baseUrl}${icon}`;\n link.type = `image/${icon.split(\".\").pop()}`;\n document == null ? void 0 : document.head.append(link);\n }\n return;\n }\n elements == null ? void 0 : elements.forEach((el) => el.href = `${baseUrl}${icon}`);\n };\n watch(\n favicon,\n (i, o) => {\n if (typeof i === \"string\" && i !== o)\n applyIcon(i);\n },\n { immediate: true }\n );\n return favicon;\n}\n\nconst payloadMapping = {\n json: \"application/json\",\n text: \"text/plain\"\n};\nfunction isFetchOptions(obj) {\n return obj && containsProp(obj, \"immediate\", \"refetch\", \"initialData\", \"timeout\", \"beforeFetch\", \"afterFetch\", \"onFetchError\", \"fetch\", \"updateDataOnError\");\n}\nconst reAbsolute = /^(?:[a-z][a-z\\d+\\-.]*:)?\\/\\//i;\nfunction isAbsoluteURL(url) {\n return reAbsolute.test(url);\n}\nfunction headersToObject(headers) {\n if (typeof Headers !== \"undefined\" && headers instanceof Headers)\n return Object.fromEntries(headers.entries());\n return headers;\n}\nfunction combineCallbacks(combination, ...callbacks) {\n if (combination === \"overwrite\") {\n return async (ctx) => {\n let callback;\n for (let i = callbacks.length - 1; i >= 0; i--) {\n if (callbacks[i] != null) {\n callback = callbacks[i];\n break;\n }\n }\n if (callback)\n return { ...ctx, ...await callback(ctx) };\n return ctx;\n };\n } else {\n return async (ctx) => {\n for (const callback of callbacks) {\n if (callback)\n ctx = { ...ctx, ...await callback(ctx) };\n }\n return ctx;\n };\n }\n}\nfunction createFetch(config = {}) {\n const _combination = config.combination || \"chain\";\n const _options = config.options || {};\n const _fetchOptions = config.fetchOptions || {};\n function useFactoryFetch(url, ...args) {\n const computedUrl = computed(() => {\n const baseUrl = toValue(config.baseUrl);\n const targetUrl = toValue(url);\n return baseUrl && !isAbsoluteURL(targetUrl) ? joinPaths(baseUrl, targetUrl) : targetUrl;\n });\n let options = _options;\n let fetchOptions = _fetchOptions;\n if (args.length > 0) {\n if (isFetchOptions(args[0])) {\n options = {\n ...options,\n ...args[0],\n beforeFetch: combineCallbacks(_combination, _options.beforeFetch, args[0].beforeFetch),\n afterFetch: combineCallbacks(_combination, _options.afterFetch, args[0].afterFetch),\n onFetchError: combineCallbacks(_combination, _options.onFetchError, args[0].onFetchError)\n };\n } else {\n fetchOptions = {\n ...fetchOptions,\n ...args[0],\n headers: {\n ...headersToObject(fetchOptions.headers) || {},\n ...headersToObject(args[0].headers) || {}\n }\n };\n }\n }\n if (args.length > 1 && isFetchOptions(args[1])) {\n options = {\n ...options,\n ...args[1],\n beforeFetch: combineCallbacks(_combination, _options.beforeFetch, args[1].beforeFetch),\n afterFetch: combineCallbacks(_combination, _options.afterFetch, args[1].afterFetch),\n onFetchError: combineCallbacks(_combination, _options.onFetchError, args[1].onFetchError)\n };\n }\n return useFetch(computedUrl, fetchOptions, options);\n }\n return useFactoryFetch;\n}\nfunction useFetch(url, ...args) {\n var _a;\n const supportsAbort = typeof AbortController === \"function\";\n let fetchOptions = {};\n let options = {\n immediate: true,\n refetch: false,\n timeout: 0,\n updateDataOnError: false\n };\n const config = {\n method: \"GET\",\n type: \"text\",\n payload: void 0\n };\n if (args.length > 0) {\n if (isFetchOptions(args[0]))\n options = { ...options, ...args[0] };\n else\n fetchOptions = args[0];\n }\n if (args.length > 1) {\n if (isFetchOptions(args[1]))\n options = { ...options, ...args[1] };\n }\n const {\n fetch = (_a = defaultWindow) == null ? void 0 : _a.fetch,\n initialData,\n timeout\n } = options;\n const responseEvent = createEventHook();\n const errorEvent = createEventHook();\n const finallyEvent = createEventHook();\n const isFinished = shallowRef(false);\n const isFetching = shallowRef(false);\n const aborted = shallowRef(false);\n const statusCode = shallowRef(null);\n const response = shallowRef(null);\n const error = shallowRef(null);\n const data = shallowRef(initialData || null);\n const canAbort = computed(() => supportsAbort && isFetching.value);\n let controller;\n let timer;\n const abort = () => {\n if (supportsAbort) {\n controller == null ? void 0 : controller.abort();\n controller = new AbortController();\n controller.signal.onabort = () => aborted.value = true;\n fetchOptions = {\n ...fetchOptions,\n signal: controller.signal\n };\n }\n };\n const loading = (isLoading) => {\n isFetching.value = isLoading;\n isFinished.value = !isLoading;\n };\n if (timeout)\n timer = useTimeoutFn(abort, timeout, { immediate: false });\n let executeCounter = 0;\n const execute = async (throwOnFailed = false) => {\n var _a2, _b;\n abort();\n loading(true);\n error.value = null;\n statusCode.value = null;\n aborted.value = false;\n executeCounter += 1;\n const currentExecuteCounter = executeCounter;\n const defaultFetchOptions = {\n method: config.method,\n headers: {}\n };\n const payload = toValue(config.payload);\n if (payload) {\n const headers = headersToObject(defaultFetchOptions.headers);\n const proto = Object.getPrototypeOf(payload);\n if (!config.payloadType && payload && (proto === Object.prototype || Array.isArray(proto)) && !(payload instanceof FormData))\n config.payloadType = \"json\";\n if (config.payloadType)\n headers[\"Content-Type\"] = (_a2 = payloadMapping[config.payloadType]) != null ? _a2 : config.payloadType;\n defaultFetchOptions.body = config.payloadType === \"json\" ? JSON.stringify(payload) : payload;\n }\n let isCanceled = false;\n const context = {\n url: toValue(url),\n options: {\n ...defaultFetchOptions,\n ...fetchOptions\n },\n cancel: () => {\n isCanceled = true;\n }\n };\n if (options.beforeFetch)\n Object.assign(context, await options.beforeFetch(context));\n if (isCanceled || !fetch) {\n loading(false);\n return Promise.resolve(null);\n }\n let responseData = null;\n if (timer)\n timer.start();\n return fetch(\n context.url,\n {\n ...defaultFetchOptions,\n ...context.options,\n headers: {\n ...headersToObject(defaultFetchOptions.headers),\n ...headersToObject((_b = context.options) == null ? void 0 : _b.headers)\n }\n }\n ).then(async (fetchResponse) => {\n response.value = fetchResponse;\n statusCode.value = fetchResponse.status;\n responseData = await fetchResponse.clone()[config.type]();\n if (!fetchResponse.ok) {\n data.value = initialData || null;\n throw new Error(fetchResponse.statusText);\n }\n if (options.afterFetch) {\n ({ data: responseData } = await options.afterFetch({\n data: responseData,\n response: fetchResponse,\n context,\n execute\n }));\n }\n data.value = responseData;\n responseEvent.trigger(fetchResponse);\n return fetchResponse;\n }).catch(async (fetchError) => {\n let errorData = fetchError.message || fetchError.name;\n if (options.onFetchError) {\n ({ error: errorData, data: responseData } = await options.onFetchError({\n data: responseData,\n error: fetchError,\n response: response.value,\n context,\n execute\n }));\n }\n error.value = errorData;\n if (options.updateDataOnError)\n data.value = responseData;\n errorEvent.trigger(fetchError);\n if (throwOnFailed)\n throw fetchError;\n return null;\n }).finally(() => {\n if (currentExecuteCounter === executeCounter)\n loading(false);\n if (timer)\n timer.stop();\n finallyEvent.trigger(null);\n });\n };\n const refetch = toRef(options.refetch);\n watch(\n [\n refetch,\n toRef(url)\n ],\n ([refetch2]) => refetch2 && execute(),\n { deep: true }\n );\n const shell = {\n isFinished: readonly(isFinished),\n isFetching: readonly(isFetching),\n statusCode,\n response,\n error,\n data,\n canAbort,\n aborted,\n abort,\n execute,\n onFetchResponse: responseEvent.on,\n onFetchError: errorEvent.on,\n onFetchFinally: finallyEvent.on,\n // method\n get: setMethod(\"GET\"),\n put: setMethod(\"PUT\"),\n post: setMethod(\"POST\"),\n delete: setMethod(\"DELETE\"),\n patch: setMethod(\"PATCH\"),\n head: setMethod(\"HEAD\"),\n options: setMethod(\"OPTIONS\"),\n // type\n json: setType(\"json\"),\n text: setType(\"text\"),\n blob: setType(\"blob\"),\n arrayBuffer: setType(\"arrayBuffer\"),\n formData: setType(\"formData\")\n };\n function setMethod(method) {\n return (payload, payloadType) => {\n if (!isFetching.value) {\n config.method = method;\n config.payload = payload;\n config.payloadType = payloadType;\n if (isRef(config.payload)) {\n watch(\n [\n refetch,\n toRef(config.payload)\n ],\n ([refetch2]) => refetch2 && execute(),\n { deep: true }\n );\n }\n return {\n ...shell,\n then(onFulfilled, onRejected) {\n return waitUntilFinished().then(onFulfilled, onRejected);\n }\n };\n }\n return void 0;\n };\n }\n function waitUntilFinished() {\n return new Promise((resolve, reject) => {\n until(isFinished).toBe(true).then(() => resolve(shell)).catch(reject);\n });\n }\n function setType(type) {\n return () => {\n if (!isFetching.value) {\n config.type = type;\n return {\n ...shell,\n then(onFulfilled, onRejected) {\n return waitUntilFinished().then(onFulfilled, onRejected);\n }\n };\n }\n return void 0;\n };\n }\n if (options.immediate)\n Promise.resolve().then(() => execute());\n return {\n ...shell,\n then(onFulfilled, onRejected) {\n return waitUntilFinished().then(onFulfilled, onRejected);\n }\n };\n}\nfunction joinPaths(start, end) {\n if (!start.endsWith(\"/\") && !end.startsWith(\"/\")) {\n return `${start}/${end}`;\n }\n if (start.endsWith(\"/\") && end.startsWith(\"/\")) {\n return `${start.slice(0, -1)}${end}`;\n }\n return `${start}${end}`;\n}\n\nconst DEFAULT_OPTIONS = {\n multiple: true,\n accept: \"*\",\n reset: false,\n directory: false\n};\nfunction prepareInitialFiles(files) {\n if (!files)\n return null;\n if (files instanceof FileList)\n return files;\n const dt = new DataTransfer();\n for (const file of files) {\n dt.items.add(file);\n }\n return dt.files;\n}\nfunction useFileDialog(options = {}) {\n const {\n document = defaultDocument\n } = options;\n const files = ref(prepareInitialFiles(options.initialFiles));\n const { on: onChange, trigger: changeTrigger } = createEventHook();\n const { on: onCancel, trigger: cancelTrigger } = createEventHook();\n let input;\n if (document) {\n input = document.createElement(\"input\");\n input.type = \"file\";\n input.onchange = (event) => {\n const result = event.target;\n files.value = result.files;\n changeTrigger(files.value);\n };\n input.oncancel = () => {\n cancelTrigger();\n };\n }\n const reset = () => {\n files.value = null;\n if (input && input.value) {\n input.value = \"\";\n changeTrigger(null);\n }\n };\n const open = (localOptions) => {\n if (!input)\n return;\n const _options = {\n ...DEFAULT_OPTIONS,\n ...options,\n ...localOptions\n };\n input.multiple = _options.multiple;\n input.accept = _options.accept;\n input.webkitdirectory = _options.directory;\n if (hasOwn(_options, \"capture\"))\n input.capture = _options.capture;\n if (_options.reset)\n reset();\n input.click();\n };\n return {\n files: readonly(files),\n open,\n reset,\n onCancel,\n onChange\n };\n}\n\nfunction useFileSystemAccess(options = {}) {\n const {\n window: _window = defaultWindow,\n dataType = \"Text\"\n } = options;\n const window = _window;\n const isSupported = useSupported(() => window && \"showSaveFilePicker\" in window && \"showOpenFilePicker\" in window);\n const fileHandle = shallowRef();\n const data = shallowRef();\n const file = shallowRef();\n const fileName = computed(() => {\n var _a, _b;\n return (_b = (_a = file.value) == null ? void 0 : _a.name) != null ? _b : \"\";\n });\n const fileMIME = computed(() => {\n var _a, _b;\n return (_b = (_a = file.value) == null ? void 0 : _a.type) != null ? _b : \"\";\n });\n const fileSize = computed(() => {\n var _a, _b;\n return (_b = (_a = file.value) == null ? void 0 : _a.size) != null ? _b : 0;\n });\n const fileLastModified = computed(() => {\n var _a, _b;\n return (_b = (_a = file.value) == null ? void 0 : _a.lastModified) != null ? _b : 0;\n });\n async function open(_options = {}) {\n if (!isSupported.value)\n return;\n const [handle] = await window.showOpenFilePicker({ ...toValue(options), ..._options });\n fileHandle.value = handle;\n await updateData();\n }\n async function create(_options = {}) {\n if (!isSupported.value)\n return;\n fileHandle.value = await window.showSaveFilePicker({ ...options, ..._options });\n data.value = void 0;\n await updateData();\n }\n async function save(_options = {}) {\n if (!isSupported.value)\n return;\n if (!fileHandle.value)\n return saveAs(_options);\n if (data.value) {\n const writableStream = await fileHandle.value.createWritable();\n await writableStream.write(data.value);\n await writableStream.close();\n }\n await updateFile();\n }\n async function saveAs(_options = {}) {\n if (!isSupported.value)\n return;\n fileHandle.value = await window.showSaveFilePicker({ ...options, ..._options });\n if (data.value) {\n const writableStream = await fileHandle.value.createWritable();\n await writableStream.write(data.value);\n await writableStream.close();\n }\n await updateFile();\n }\n async function updateFile() {\n var _a;\n file.value = await ((_a = fileHandle.value) == null ? void 0 : _a.getFile());\n }\n async function updateData() {\n var _a, _b;\n await updateFile();\n const type = toValue(dataType);\n if (type === \"Text\")\n data.value = await ((_a = file.value) == null ? void 0 : _a.text());\n else if (type === \"ArrayBuffer\")\n data.value = await ((_b = file.value) == null ? void 0 : _b.arrayBuffer());\n else if (type === \"Blob\")\n data.value = file.value;\n }\n watch(() => toValue(dataType), updateData);\n return {\n isSupported,\n data,\n file,\n fileName,\n fileMIME,\n fileSize,\n fileLastModified,\n open,\n create,\n save,\n saveAs,\n updateData\n };\n}\n\nfunction useFocus(target, options = {}) {\n const { initialValue = false, focusVisible = false, preventScroll = false } = options;\n const innerFocused = shallowRef(false);\n const targetElement = computed(() => unrefElement(target));\n const listenerOptions = { passive: true };\n useEventListener(targetElement, \"focus\", (event) => {\n var _a, _b;\n if (!focusVisible || ((_b = (_a = event.target).matches) == null ? void 0 : _b.call(_a, \":focus-visible\")))\n innerFocused.value = true;\n }, listenerOptions);\n useEventListener(targetElement, \"blur\", () => innerFocused.value = false, listenerOptions);\n const focused = computed({\n get: () => innerFocused.value,\n set(value) {\n var _a, _b;\n if (!value && innerFocused.value)\n (_a = targetElement.value) == null ? void 0 : _a.blur();\n else if (value && !innerFocused.value)\n (_b = targetElement.value) == null ? void 0 : _b.focus({ preventScroll });\n }\n });\n watch(\n targetElement,\n () => {\n focused.value = initialValue;\n },\n { immediate: true, flush: \"post\" }\n );\n return { focused };\n}\n\nconst EVENT_FOCUS_IN = \"focusin\";\nconst EVENT_FOCUS_OUT = \"focusout\";\nconst PSEUDO_CLASS_FOCUS_WITHIN = \":focus-within\";\nfunction useFocusWithin(target, options = {}) {\n const { window = defaultWindow } = options;\n const targetElement = computed(() => unrefElement(target));\n const _focused = shallowRef(false);\n const focused = computed(() => _focused.value);\n const activeElement = useActiveElement(options);\n if (!window || !activeElement.value) {\n return { focused };\n }\n const listenerOptions = { passive: true };\n useEventListener(targetElement, EVENT_FOCUS_IN, () => _focused.value = true, listenerOptions);\n useEventListener(targetElement, EVENT_FOCUS_OUT, () => {\n var _a, _b, _c;\n return _focused.value = (_c = (_b = (_a = targetElement.value) == null ? void 0 : _a.matches) == null ? void 0 : _b.call(_a, PSEUDO_CLASS_FOCUS_WITHIN)) != null ? _c : false;\n }, listenerOptions);\n return { focused };\n}\n\nfunction useFps(options) {\n var _a;\n const fps = shallowRef(0);\n if (typeof performance === \"undefined\")\n return fps;\n const every = (_a = options == null ? void 0 : options.every) != null ? _a : 10;\n let last = performance.now();\n let ticks = 0;\n useRafFn(() => {\n ticks += 1;\n if (ticks >= every) {\n const now = performance.now();\n const diff = now - last;\n fps.value = Math.round(1e3 / (diff / ticks));\n last = now;\n ticks = 0;\n }\n });\n return fps;\n}\n\nconst eventHandlers = [\n \"fullscreenchange\",\n \"webkitfullscreenchange\",\n \"webkitendfullscreen\",\n \"mozfullscreenchange\",\n \"MSFullscreenChange\"\n];\nfunction useFullscreen(target, options = {}) {\n const {\n document = defaultDocument,\n autoExit = false\n } = options;\n const targetRef = computed(() => {\n var _a;\n return (_a = unrefElement(target)) != null ? _a : document == null ? void 0 : document.documentElement;\n });\n const isFullscreen = shallowRef(false);\n const requestMethod = computed(() => {\n return [\n \"requestFullscreen\",\n \"webkitRequestFullscreen\",\n \"webkitEnterFullscreen\",\n \"webkitEnterFullScreen\",\n \"webkitRequestFullScreen\",\n \"mozRequestFullScreen\",\n \"msRequestFullscreen\"\n ].find((m) => document && m in document || targetRef.value && m in targetRef.value);\n });\n const exitMethod = computed(() => {\n return [\n \"exitFullscreen\",\n \"webkitExitFullscreen\",\n \"webkitExitFullScreen\",\n \"webkitCancelFullScreen\",\n \"mozCancelFullScreen\",\n \"msExitFullscreen\"\n ].find((m) => document && m in document || targetRef.value && m in targetRef.value);\n });\n const fullscreenEnabled = computed(() => {\n return [\n \"fullScreen\",\n \"webkitIsFullScreen\",\n \"webkitDisplayingFullscreen\",\n \"mozFullScreen\",\n \"msFullscreenElement\"\n ].find((m) => document && m in document || targetRef.value && m in targetRef.value);\n });\n const fullscreenElementMethod = [\n \"fullscreenElement\",\n \"webkitFullscreenElement\",\n \"mozFullScreenElement\",\n \"msFullscreenElement\"\n ].find((m) => document && m in document);\n const isSupported = useSupported(() => targetRef.value && document && requestMethod.value !== void 0 && exitMethod.value !== void 0 && fullscreenEnabled.value !== void 0);\n const isCurrentElementFullScreen = () => {\n if (fullscreenElementMethod)\n return (document == null ? void 0 : document[fullscreenElementMethod]) === targetRef.value;\n return false;\n };\n const isElementFullScreen = () => {\n if (fullscreenEnabled.value) {\n if (document && document[fullscreenEnabled.value] != null) {\n return document[fullscreenEnabled.value];\n } else {\n const target2 = targetRef.value;\n if ((target2 == null ? void 0 : target2[fullscreenEnabled.value]) != null) {\n return Boolean(target2[fullscreenEnabled.value]);\n }\n }\n }\n return false;\n };\n async function exit() {\n if (!isSupported.value || !isFullscreen.value)\n return;\n if (exitMethod.value) {\n if ((document == null ? void 0 : document[exitMethod.value]) != null) {\n await document[exitMethod.value]();\n } else {\n const target2 = targetRef.value;\n if ((target2 == null ? void 0 : target2[exitMethod.value]) != null)\n await target2[exitMethod.value]();\n }\n }\n isFullscreen.value = false;\n }\n async function enter() {\n if (!isSupported.value || isFullscreen.value)\n return;\n if (isElementFullScreen())\n await exit();\n const target2 = targetRef.value;\n if (requestMethod.value && (target2 == null ? void 0 : target2[requestMethod.value]) != null) {\n await target2[requestMethod.value]();\n isFullscreen.value = true;\n }\n }\n async function toggle() {\n await (isFullscreen.value ? exit() : enter());\n }\n const handlerCallback = () => {\n const isElementFullScreenValue = isElementFullScreen();\n if (!isElementFullScreenValue || isElementFullScreenValue && isCurrentElementFullScreen())\n isFullscreen.value = isElementFullScreenValue;\n };\n const listenerOptions = { capture: false, passive: true };\n useEventListener(document, eventHandlers, handlerCallback, listenerOptions);\n useEventListener(() => unrefElement(targetRef), eventHandlers, handlerCallback, listenerOptions);\n if (autoExit)\n tryOnScopeDispose(exit);\n return {\n isSupported,\n isFullscreen,\n enter,\n exit,\n toggle\n };\n}\n\nfunction mapGamepadToXbox360Controller(gamepad) {\n return computed(() => {\n if (gamepad.value) {\n return {\n buttons: {\n a: gamepad.value.buttons[0],\n b: gamepad.value.buttons[1],\n x: gamepad.value.buttons[2],\n y: gamepad.value.buttons[3]\n },\n bumper: {\n left: gamepad.value.buttons[4],\n right: gamepad.value.buttons[5]\n },\n triggers: {\n left: gamepad.value.buttons[6],\n right: gamepad.value.buttons[7]\n },\n stick: {\n left: {\n horizontal: gamepad.value.axes[0],\n vertical: gamepad.value.axes[1],\n button: gamepad.value.buttons[10]\n },\n right: {\n horizontal: gamepad.value.axes[2],\n vertical: gamepad.value.axes[3],\n button: gamepad.value.buttons[11]\n }\n },\n dpad: {\n up: gamepad.value.buttons[12],\n down: gamepad.value.buttons[13],\n left: gamepad.value.buttons[14],\n right: gamepad.value.buttons[15]\n },\n back: gamepad.value.buttons[8],\n start: gamepad.value.buttons[9]\n };\n }\n return null;\n });\n}\nfunction useGamepad(options = {}) {\n const {\n navigator = defaultNavigator\n } = options;\n const isSupported = useSupported(() => navigator && \"getGamepads\" in navigator);\n const gamepads = ref([]);\n const onConnectedHook = createEventHook();\n const onDisconnectedHook = createEventHook();\n const stateFromGamepad = (gamepad) => {\n const hapticActuators = [];\n const vibrationActuator = \"vibrationActuator\" in gamepad ? gamepad.vibrationActuator : null;\n if (vibrationActuator)\n hapticActuators.push(vibrationActuator);\n if (gamepad.hapticActuators)\n hapticActuators.push(...gamepad.hapticActuators);\n return {\n id: gamepad.id,\n index: gamepad.index,\n connected: gamepad.connected,\n mapping: gamepad.mapping,\n timestamp: gamepad.timestamp,\n vibrationActuator: gamepad.vibrationActuator,\n hapticActuators,\n axes: gamepad.axes.map((axes) => axes),\n buttons: gamepad.buttons.map((button) => ({ pressed: button.pressed, touched: button.touched, value: button.value }))\n };\n };\n const updateGamepadState = () => {\n const _gamepads = (navigator == null ? void 0 : navigator.getGamepads()) || [];\n for (const gamepad of _gamepads) {\n if (gamepad && gamepads.value[gamepad.index])\n gamepads.value[gamepad.index] = stateFromGamepad(gamepad);\n }\n };\n const { isActive, pause, resume } = useRafFn(updateGamepadState);\n const onGamepadConnected = (gamepad) => {\n if (!gamepads.value.some(({ index }) => index === gamepad.index)) {\n gamepads.value.push(stateFromGamepad(gamepad));\n onConnectedHook.trigger(gamepad.index);\n }\n resume();\n };\n const onGamepadDisconnected = (gamepad) => {\n gamepads.value = gamepads.value.filter((x) => x.index !== gamepad.index);\n onDisconnectedHook.trigger(gamepad.index);\n };\n const listenerOptions = { passive: true };\n useEventListener(\"gamepadconnected\", (e) => onGamepadConnected(e.gamepad), listenerOptions);\n useEventListener(\"gamepaddisconnected\", (e) => onGamepadDisconnected(e.gamepad), listenerOptions);\n tryOnMounted(() => {\n const _gamepads = (navigator == null ? void 0 : navigator.getGamepads()) || [];\n for (const gamepad of _gamepads) {\n if (gamepad && gamepads.value[gamepad.index])\n onGamepadConnected(gamepad);\n }\n });\n pause();\n return {\n isSupported,\n onConnected: onConnectedHook.on,\n onDisconnected: onDisconnectedHook.on,\n gamepads,\n pause,\n resume,\n isActive\n };\n}\n\nfunction useGeolocation(options = {}) {\n const {\n enableHighAccuracy = true,\n maximumAge = 3e4,\n timeout = 27e3,\n navigator = defaultNavigator,\n immediate = true\n } = options;\n const isSupported = useSupported(() => navigator && \"geolocation\" in navigator);\n const locatedAt = shallowRef(null);\n const error = shallowRef(null);\n const coords = ref({\n accuracy: 0,\n latitude: Number.POSITIVE_INFINITY,\n longitude: Number.POSITIVE_INFINITY,\n altitude: null,\n altitudeAccuracy: null,\n heading: null,\n speed: null\n });\n function updatePosition(position) {\n locatedAt.value = position.timestamp;\n coords.value = position.coords;\n error.value = null;\n }\n let watcher;\n function resume() {\n if (isSupported.value) {\n watcher = navigator.geolocation.watchPosition(\n updatePosition,\n (err) => error.value = err,\n {\n enableHighAccuracy,\n maximumAge,\n timeout\n }\n );\n }\n }\n if (immediate)\n resume();\n function pause() {\n if (watcher && navigator)\n navigator.geolocation.clearWatch(watcher);\n }\n tryOnScopeDispose(() => {\n pause();\n });\n return {\n isSupported,\n coords,\n locatedAt,\n error,\n resume,\n pause\n };\n}\n\nconst defaultEvents$1 = [\"mousemove\", \"mousedown\", \"resize\", \"keydown\", \"touchstart\", \"wheel\"];\nconst oneMinute = 6e4;\nfunction useIdle(timeout = oneMinute, options = {}) {\n const {\n initialState = false,\n listenForVisibilityChange = true,\n events = defaultEvents$1,\n window = defaultWindow,\n eventFilter = throttleFilter(50)\n } = options;\n const idle = shallowRef(initialState);\n const lastActive = shallowRef(timestamp());\n let timer;\n const reset = () => {\n idle.value = false;\n clearTimeout(timer);\n timer = setTimeout(() => idle.value = true, timeout);\n };\n const onEvent = createFilterWrapper(\n eventFilter,\n () => {\n lastActive.value = timestamp();\n reset();\n }\n );\n if (window) {\n const document = window.document;\n const listenerOptions = { passive: true };\n for (const event of events)\n useEventListener(window, event, onEvent, listenerOptions);\n if (listenForVisibilityChange) {\n useEventListener(document, \"visibilitychange\", () => {\n if (!document.hidden)\n onEvent();\n }, listenerOptions);\n }\n reset();\n }\n return {\n idle,\n lastActive,\n reset\n };\n}\n\nasync function loadImage(options) {\n return new Promise((resolve, reject) => {\n const img = new Image();\n const { src, srcset, sizes, class: clazz, loading, crossorigin, referrerPolicy, width, height, decoding, fetchPriority, ismap, usemap } = options;\n img.src = src;\n if (srcset != null)\n img.srcset = srcset;\n if (sizes != null)\n img.sizes = sizes;\n if (clazz != null)\n img.className = clazz;\n if (loading != null)\n img.loading = loading;\n if (crossorigin != null)\n img.crossOrigin = crossorigin;\n if (referrerPolicy != null)\n img.referrerPolicy = referrerPolicy;\n if (width != null)\n img.width = width;\n if (height != null)\n img.height = height;\n if (decoding != null)\n img.decoding = decoding;\n if (fetchPriority != null)\n img.fetchPriority = fetchPriority;\n if (ismap != null)\n img.isMap = ismap;\n if (usemap != null)\n img.useMap = usemap;\n img.onload = () => resolve(img);\n img.onerror = reject;\n });\n}\nfunction useImage(options, asyncStateOptions = {}) {\n const state = useAsyncState(\n () => loadImage(toValue(options)),\n void 0,\n {\n resetOnExecute: true,\n ...asyncStateOptions\n }\n );\n watch(\n () => toValue(options),\n () => state.execute(asyncStateOptions.delay),\n { deep: true }\n );\n return state;\n}\n\nfunction resolveElement(el) {\n if (typeof Window !== \"undefined\" && el instanceof Window)\n return el.document.documentElement;\n if (typeof Document !== \"undefined\" && el instanceof Document)\n return el.documentElement;\n return el;\n}\n\nconst ARRIVED_STATE_THRESHOLD_PIXELS = 1;\nfunction useScroll(element, options = {}) {\n const {\n throttle = 0,\n idle = 200,\n onStop = noop,\n onScroll = noop,\n offset = {\n left: 0,\n right: 0,\n top: 0,\n bottom: 0\n },\n eventListenerOptions = {\n capture: false,\n passive: true\n },\n behavior = \"auto\",\n window = defaultWindow,\n onError = (e) => {\n console.error(e);\n }\n } = options;\n const internalX = shallowRef(0);\n const internalY = shallowRef(0);\n const x = computed({\n get() {\n return internalX.value;\n },\n set(x2) {\n scrollTo(x2, void 0);\n }\n });\n const y = computed({\n get() {\n return internalY.value;\n },\n set(y2) {\n scrollTo(void 0, y2);\n }\n });\n function scrollTo(_x, _y) {\n var _a, _b, _c, _d;\n if (!window)\n return;\n const _element = toValue(element);\n if (!_element)\n return;\n (_c = _element instanceof Document ? window.document.body : _element) == null ? void 0 : _c.scrollTo({\n top: (_a = toValue(_y)) != null ? _a : y.value,\n left: (_b = toValue(_x)) != null ? _b : x.value,\n behavior: toValue(behavior)\n });\n const scrollContainer = ((_d = _element == null ? void 0 : _element.document) == null ? void 0 : _d.documentElement) || (_element == null ? void 0 : _element.documentElement) || _element;\n if (x != null)\n internalX.value = scrollContainer.scrollLeft;\n if (y != null)\n internalY.value = scrollContainer.scrollTop;\n }\n const isScrolling = shallowRef(false);\n const arrivedState = reactive({\n left: true,\n right: false,\n top: true,\n bottom: false\n });\n const directions = reactive({\n left: false,\n right: false,\n top: false,\n bottom: false\n });\n const onScrollEnd = (e) => {\n if (!isScrolling.value)\n return;\n isScrolling.value = false;\n directions.left = false;\n directions.right = false;\n directions.top = false;\n directions.bottom = false;\n onStop(e);\n };\n const onScrollEndDebounced = useDebounceFn(onScrollEnd, throttle + idle);\n const setArrivedState = (target) => {\n var _a;\n if (!window)\n return;\n const el = ((_a = target == null ? void 0 : target.document) == null ? void 0 : _a.documentElement) || (target == null ? void 0 : target.documentElement) || unrefElement(target);\n const { display, flexDirection, direction } = getComputedStyle(el);\n const directionMultipler = direction === \"rtl\" ? -1 : 1;\n const scrollLeft = el.scrollLeft;\n directions.left = scrollLeft < internalX.value;\n directions.right = scrollLeft > internalX.value;\n const left = Math.abs(scrollLeft * directionMultipler) <= (offset.left || 0);\n const right = Math.abs(scrollLeft * directionMultipler) + el.clientWidth >= el.scrollWidth - (offset.right || 0) - ARRIVED_STATE_THRESHOLD_PIXELS;\n if (display === \"flex\" && flexDirection === \"row-reverse\") {\n arrivedState.left = right;\n arrivedState.right = left;\n } else {\n arrivedState.left = left;\n arrivedState.right = right;\n }\n internalX.value = scrollLeft;\n let scrollTop = el.scrollTop;\n if (target === window.document && !scrollTop)\n scrollTop = window.document.body.scrollTop;\n directions.top = scrollTop < internalY.value;\n directions.bottom = scrollTop > internalY.value;\n const top = Math.abs(scrollTop) <= (offset.top || 0);\n const bottom = Math.abs(scrollTop) + el.clientHeight >= el.scrollHeight - (offset.bottom || 0) - ARRIVED_STATE_THRESHOLD_PIXELS;\n if (display === \"flex\" && flexDirection === \"column-reverse\") {\n arrivedState.top = bottom;\n arrivedState.bottom = top;\n } else {\n arrivedState.top = top;\n arrivedState.bottom = bottom;\n }\n internalY.value = scrollTop;\n };\n const onScrollHandler = (e) => {\n var _a;\n if (!window)\n return;\n const eventTarget = (_a = e.target.documentElement) != null ? _a : e.target;\n setArrivedState(eventTarget);\n isScrolling.value = true;\n onScrollEndDebounced(e);\n onScroll(e);\n };\n useEventListener(\n element,\n \"scroll\",\n throttle ? useThrottleFn(onScrollHandler, throttle, true, false) : onScrollHandler,\n eventListenerOptions\n );\n tryOnMounted(() => {\n try {\n const _element = toValue(element);\n if (!_element)\n return;\n setArrivedState(_element);\n } catch (e) {\n onError(e);\n }\n });\n useEventListener(\n element,\n \"scrollend\",\n onScrollEnd,\n eventListenerOptions\n );\n return {\n x,\n y,\n isScrolling,\n arrivedState,\n directions,\n measure() {\n const _element = toValue(element);\n if (window && _element)\n setArrivedState(_element);\n }\n };\n}\n\nfunction useInfiniteScroll(element, onLoadMore, options = {}) {\n var _a;\n const {\n direction = \"bottom\",\n interval = 100,\n canLoadMore = () => true\n } = options;\n const state = reactive(useScroll(\n element,\n {\n ...options,\n offset: {\n [direction]: (_a = options.distance) != null ? _a : 0,\n ...options.offset\n }\n }\n ));\n const promise = ref();\n const isLoading = computed(() => !!promise.value);\n const observedElement = computed(() => {\n return resolveElement(toValue(element));\n });\n const isElementVisible = useElementVisibility(observedElement);\n function checkAndLoad() {\n state.measure();\n if (!observedElement.value || !isElementVisible.value || !canLoadMore(observedElement.value))\n return;\n const { scrollHeight, clientHeight, scrollWidth, clientWidth } = observedElement.value;\n const isNarrower = direction === \"bottom\" || direction === \"top\" ? scrollHeight <= clientHeight : scrollWidth <= clientWidth;\n if (state.arrivedState[direction] || isNarrower) {\n if (!promise.value) {\n promise.value = Promise.all([\n onLoadMore(state),\n new Promise((resolve) => setTimeout(resolve, interval))\n ]).finally(() => {\n promise.value = null;\n nextTick(() => checkAndLoad());\n });\n }\n }\n }\n const stop = watch(\n () => [state.arrivedState[direction], isElementVisible.value],\n checkAndLoad,\n { immediate: true }\n );\n tryOnUnmounted(stop);\n return {\n isLoading,\n reset() {\n nextTick(() => checkAndLoad());\n }\n };\n}\n\nconst defaultEvents = [\"mousedown\", \"mouseup\", \"keydown\", \"keyup\"];\nfunction useKeyModifier(modifier, options = {}) {\n const {\n events = defaultEvents,\n document = defaultDocument,\n initial = null\n } = options;\n const state = shallowRef(initial);\n if (document) {\n events.forEach((listenerEvent) => {\n useEventListener(document, listenerEvent, (evt) => {\n if (typeof evt.getModifierState === \"function\")\n state.value = evt.getModifierState(modifier);\n }, { passive: true });\n });\n }\n return state;\n}\n\nfunction useLocalStorage(key, initialValue, options = {}) {\n const { window = defaultWindow } = options;\n return useStorage(key, initialValue, window == null ? void 0 : window.localStorage, options);\n}\n\nconst DefaultMagicKeysAliasMap = {\n ctrl: \"control\",\n command: \"meta\",\n cmd: \"meta\",\n option: \"alt\",\n up: \"arrowup\",\n down: \"arrowdown\",\n left: \"arrowleft\",\n right: \"arrowright\"\n};\n\nfunction useMagicKeys(options = {}) {\n const {\n reactive: useReactive = false,\n target = defaultWindow,\n aliasMap = DefaultMagicKeysAliasMap,\n passive = true,\n onEventFired = noop\n } = options;\n const current = reactive(/* @__PURE__ */ new Set());\n const obj = {\n toJSON() {\n return {};\n },\n current\n };\n const refs = useReactive ? reactive(obj) : obj;\n const metaDeps = /* @__PURE__ */ new Set();\n const usedKeys = /* @__PURE__ */ new Set();\n function setRefs(key, value) {\n if (key in refs) {\n if (useReactive)\n refs[key] = value;\n else\n refs[key].value = value;\n }\n }\n function reset() {\n current.clear();\n for (const key of usedKeys)\n setRefs(key, false);\n }\n function updateRefs(e, value) {\n var _a, _b;\n const key = (_a = e.key) == null ? void 0 : _a.toLowerCase();\n const code = (_b = e.code) == null ? void 0 : _b.toLowerCase();\n const values = [code, key].filter(Boolean);\n if (key) {\n if (value)\n current.add(key);\n else\n current.delete(key);\n }\n for (const key2 of values) {\n usedKeys.add(key2);\n setRefs(key2, value);\n }\n if (key === \"meta\" && !value) {\n metaDeps.forEach((key2) => {\n current.delete(key2);\n setRefs(key2, false);\n });\n metaDeps.clear();\n } else if (typeof e.getModifierState === \"function\" && e.getModifierState(\"Meta\") && value) {\n [...current, ...values].forEach((key2) => metaDeps.add(key2));\n }\n }\n useEventListener(target, \"keydown\", (e) => {\n updateRefs(e, true);\n return onEventFired(e);\n }, { passive });\n useEventListener(target, \"keyup\", (e) => {\n updateRefs(e, false);\n return onEventFired(e);\n }, { passive });\n useEventListener(\"blur\", reset, { passive });\n useEventListener(\"focus\", reset, { passive });\n const proxy = new Proxy(\n refs,\n {\n get(target2, prop, rec) {\n if (typeof prop !== \"string\")\n return Reflect.get(target2, prop, rec);\n prop = prop.toLowerCase();\n if (prop in aliasMap)\n prop = aliasMap[prop];\n if (!(prop in refs)) {\n if (/[+_-]/.test(prop)) {\n const keys = prop.split(/[+_-]/g).map((i) => i.trim());\n refs[prop] = computed(() => keys.map((key) => toValue(proxy[key])).every(Boolean));\n } else {\n refs[prop] = shallowRef(false);\n }\n }\n const r = Reflect.get(target2, prop, rec);\n return useReactive ? toValue(r) : r;\n }\n }\n );\n return proxy;\n}\n\nfunction usingElRef(source, cb) {\n if (toValue(source))\n cb(toValue(source));\n}\nfunction timeRangeToArray(timeRanges) {\n let ranges = [];\n for (let i = 0; i < timeRanges.length; ++i)\n ranges = [...ranges, [timeRanges.start(i), timeRanges.end(i)]];\n return ranges;\n}\nfunction tracksToArray(tracks) {\n return Array.from(tracks).map(({ label, kind, language, mode, activeCues, cues, inBandMetadataTrackDispatchType }, id) => ({ id, label, kind, language, mode, activeCues, cues, inBandMetadataTrackDispatchType }));\n}\nconst defaultOptions = {\n src: \"\",\n tracks: []\n};\nfunction useMediaControls(target, options = {}) {\n target = toRef(target);\n options = {\n ...defaultOptions,\n ...options\n };\n const {\n document = defaultDocument\n } = options;\n const listenerOptions = { passive: true };\n const currentTime = shallowRef(0);\n const duration = shallowRef(0);\n const seeking = shallowRef(false);\n const volume = shallowRef(1);\n const waiting = shallowRef(false);\n const ended = shallowRef(false);\n const playing = shallowRef(false);\n const rate = shallowRef(1);\n const stalled = shallowRef(false);\n const buffered = ref([]);\n const tracks = ref([]);\n const selectedTrack = shallowRef(-1);\n const isPictureInPicture = shallowRef(false);\n const muted = shallowRef(false);\n const supportsPictureInPicture = document && \"pictureInPictureEnabled\" in document;\n const sourceErrorEvent = createEventHook();\n const playbackErrorEvent = createEventHook();\n const disableTrack = (track) => {\n usingElRef(target, (el) => {\n if (track) {\n const id = typeof track === \"number\" ? track : track.id;\n el.textTracks[id].mode = \"disabled\";\n } else {\n for (let i = 0; i < el.textTracks.length; ++i)\n el.textTracks[i].mode = \"disabled\";\n }\n selectedTrack.value = -1;\n });\n };\n const enableTrack = (track, disableTracks = true) => {\n usingElRef(target, (el) => {\n const id = typeof track === \"number\" ? track : track.id;\n if (disableTracks)\n disableTrack();\n el.textTracks[id].mode = \"showing\";\n selectedTrack.value = id;\n });\n };\n const togglePictureInPicture = () => {\n return new Promise((resolve, reject) => {\n usingElRef(target, async (el) => {\n if (supportsPictureInPicture) {\n if (!isPictureInPicture.value) {\n el.requestPictureInPicture().then(resolve).catch(reject);\n } else {\n document.exitPictureInPicture().then(resolve).catch(reject);\n }\n }\n });\n });\n };\n watchEffect(() => {\n if (!document)\n return;\n const el = toValue(target);\n if (!el)\n return;\n const src = toValue(options.src);\n let sources = [];\n if (!src)\n return;\n if (typeof src === \"string\")\n sources = [{ src }];\n else if (Array.isArray(src))\n sources = src;\n else if (isObject(src))\n sources = [src];\n el.querySelectorAll(\"source\").forEach((e) => {\n e.remove();\n });\n sources.forEach(({ src: src2, type, media }) => {\n const source = document.createElement(\"source\");\n source.setAttribute(\"src\", src2);\n source.setAttribute(\"type\", type || \"\");\n source.setAttribute(\"media\", media || \"\");\n useEventListener(source, \"error\", sourceErrorEvent.trigger, listenerOptions);\n el.appendChild(source);\n });\n el.load();\n });\n watch([target, volume], () => {\n const el = toValue(target);\n if (!el)\n return;\n el.volume = volume.value;\n });\n watch([target, muted], () => {\n const el = toValue(target);\n if (!el)\n return;\n el.muted = muted.value;\n });\n watch([target, rate], () => {\n const el = toValue(target);\n if (!el)\n return;\n el.playbackRate = rate.value;\n });\n watchEffect(() => {\n if (!document)\n return;\n const textTracks = toValue(options.tracks);\n const el = toValue(target);\n if (!textTracks || !textTracks.length || !el)\n return;\n el.querySelectorAll(\"track\").forEach((e) => e.remove());\n textTracks.forEach(({ default: isDefault, kind, label, src, srcLang }, i) => {\n const track = document.createElement(\"track\");\n track.default = isDefault || false;\n track.kind = kind;\n track.label = label;\n track.src = src;\n track.srclang = srcLang;\n if (track.default)\n selectedTrack.value = i;\n el.appendChild(track);\n });\n });\n const { ignoreUpdates: ignoreCurrentTimeUpdates } = watchIgnorable(currentTime, (time) => {\n const el = toValue(target);\n if (!el)\n return;\n el.currentTime = time;\n });\n const { ignoreUpdates: ignorePlayingUpdates } = watchIgnorable(playing, (isPlaying) => {\n const el = toValue(target);\n if (!el)\n return;\n if (isPlaying) {\n el.play().catch((e) => {\n playbackErrorEvent.trigger(e);\n throw e;\n });\n } else {\n el.pause();\n }\n });\n useEventListener(\n target,\n \"timeupdate\",\n () => ignoreCurrentTimeUpdates(() => currentTime.value = toValue(target).currentTime),\n listenerOptions\n );\n useEventListener(\n target,\n \"durationchange\",\n () => duration.value = toValue(target).duration,\n listenerOptions\n );\n useEventListener(\n target,\n \"progress\",\n () => buffered.value = timeRangeToArray(toValue(target).buffered),\n listenerOptions\n );\n useEventListener(\n target,\n \"seeking\",\n () => seeking.value = true,\n listenerOptions\n );\n useEventListener(\n target,\n \"seeked\",\n () => seeking.value = false,\n listenerOptions\n );\n useEventListener(\n target,\n [\"waiting\", \"loadstart\"],\n () => {\n waiting.value = true;\n ignorePlayingUpdates(() => playing.value = false);\n },\n listenerOptions\n );\n useEventListener(\n target,\n \"loadeddata\",\n () => waiting.value = false,\n listenerOptions\n );\n useEventListener(\n target,\n \"playing\",\n () => {\n waiting.value = false;\n ended.value = false;\n ignorePlayingUpdates(() => playing.value = true);\n },\n listenerOptions\n );\n useEventListener(\n target,\n \"ratechange\",\n () => rate.value = toValue(target).playbackRate,\n listenerOptions\n );\n useEventListener(\n target,\n \"stalled\",\n () => stalled.value = true,\n listenerOptions\n );\n useEventListener(\n target,\n \"ended\",\n () => ended.value = true,\n listenerOptions\n );\n useEventListener(\n target,\n \"pause\",\n () => ignorePlayingUpdates(() => playing.value = false),\n listenerOptions\n );\n useEventListener(\n target,\n \"play\",\n () => ignorePlayingUpdates(() => playing.value = true),\n listenerOptions\n );\n useEventListener(\n target,\n \"enterpictureinpicture\",\n () => isPictureInPicture.value = true,\n listenerOptions\n );\n useEventListener(\n target,\n \"leavepictureinpicture\",\n () => isPictureInPicture.value = false,\n listenerOptions\n );\n useEventListener(\n target,\n \"volumechange\",\n () => {\n const el = toValue(target);\n if (!el)\n return;\n volume.value = el.volume;\n muted.value = el.muted;\n },\n listenerOptions\n );\n const listeners = [];\n const stop = watch([target], () => {\n const el = toValue(target);\n if (!el)\n return;\n stop();\n listeners[0] = useEventListener(el.textTracks, \"addtrack\", () => tracks.value = tracksToArray(el.textTracks), listenerOptions);\n listeners[1] = useEventListener(el.textTracks, \"removetrack\", () => tracks.value = tracksToArray(el.textTracks), listenerOptions);\n listeners[2] = useEventListener(el.textTracks, \"change\", () => tracks.value = tracksToArray(el.textTracks), listenerOptions);\n });\n tryOnScopeDispose(() => listeners.forEach((listener) => listener()));\n return {\n currentTime,\n duration,\n waiting,\n seeking,\n ended,\n stalled,\n buffered,\n playing,\n rate,\n // Volume\n volume,\n muted,\n // Tracks\n tracks,\n selectedTrack,\n enableTrack,\n disableTrack,\n // Picture in Picture\n supportsPictureInPicture,\n togglePictureInPicture,\n isPictureInPicture,\n // Events\n onSourceError: sourceErrorEvent.on,\n onPlaybackError: playbackErrorEvent.on\n };\n}\n\nfunction useMemoize(resolver, options) {\n const initCache = () => {\n if (options == null ? void 0 : options.cache)\n return shallowReactive(options.cache);\n return shallowReactive(/* @__PURE__ */ new Map());\n };\n const cache = initCache();\n const generateKey = (...args) => (options == null ? void 0 : options.getKey) ? options.getKey(...args) : JSON.stringify(args);\n const _loadData = (key, ...args) => {\n cache.set(key, resolver(...args));\n return cache.get(key);\n };\n const loadData = (...args) => _loadData(generateKey(...args), ...args);\n const deleteData = (...args) => {\n cache.delete(generateKey(...args));\n };\n const clearData = () => {\n cache.clear();\n };\n const memoized = (...args) => {\n const key = generateKey(...args);\n if (cache.has(key))\n return cache.get(key);\n return _loadData(key, ...args);\n };\n memoized.load = loadData;\n memoized.delete = deleteData;\n memoized.clear = clearData;\n memoized.generateKey = generateKey;\n memoized.cache = cache;\n return memoized;\n}\n\nfunction useMemory(options = {}) {\n const memory = ref();\n const isSupported = useSupported(() => typeof performance !== \"undefined\" && \"memory\" in performance);\n if (isSupported.value) {\n const { interval = 1e3 } = options;\n useIntervalFn(() => {\n memory.value = performance.memory;\n }, interval, { immediate: options.immediate, immediateCallback: options.immediateCallback });\n }\n return { isSupported, memory };\n}\n\nconst UseMouseBuiltinExtractors = {\n page: (event) => [event.pageX, event.pageY],\n client: (event) => [event.clientX, event.clientY],\n screen: (event) => [event.screenX, event.screenY],\n movement: (event) => event instanceof MouseEvent ? [event.movementX, event.movementY] : null\n};\nfunction useMouse(options = {}) {\n const {\n type = \"page\",\n touch = true,\n resetOnTouchEnds = false,\n initialValue = { x: 0, y: 0 },\n window = defaultWindow,\n target = window,\n scroll = true,\n eventFilter\n } = options;\n let _prevMouseEvent = null;\n let _prevScrollX = 0;\n let _prevScrollY = 0;\n const x = shallowRef(initialValue.x);\n const y = shallowRef(initialValue.y);\n const sourceType = shallowRef(null);\n const extractor = typeof type === \"function\" ? type : UseMouseBuiltinExtractors[type];\n const mouseHandler = (event) => {\n const result = extractor(event);\n _prevMouseEvent = event;\n if (result) {\n [x.value, y.value] = result;\n sourceType.value = \"mouse\";\n }\n if (window) {\n _prevScrollX = window.scrollX;\n _prevScrollY = window.scrollY;\n }\n };\n const touchHandler = (event) => {\n if (event.touches.length > 0) {\n const result = extractor(event.touches[0]);\n if (result) {\n [x.value, y.value] = result;\n sourceType.value = \"touch\";\n }\n }\n };\n const scrollHandler = () => {\n if (!_prevMouseEvent || !window)\n return;\n const pos = extractor(_prevMouseEvent);\n if (_prevMouseEvent instanceof MouseEvent && pos) {\n x.value = pos[0] + window.scrollX - _prevScrollX;\n y.value = pos[1] + window.scrollY - _prevScrollY;\n }\n };\n const reset = () => {\n x.value = initialValue.x;\n y.value = initialValue.y;\n };\n const mouseHandlerWrapper = eventFilter ? (event) => eventFilter(() => mouseHandler(event), {}) : (event) => mouseHandler(event);\n const touchHandlerWrapper = eventFilter ? (event) => eventFilter(() => touchHandler(event), {}) : (event) => touchHandler(event);\n const scrollHandlerWrapper = eventFilter ? () => eventFilter(() => scrollHandler(), {}) : () => scrollHandler();\n if (target) {\n const listenerOptions = { passive: true };\n useEventListener(target, [\"mousemove\", \"dragover\"], mouseHandlerWrapper, listenerOptions);\n if (touch && type !== \"movement\") {\n useEventListener(target, [\"touchstart\", \"touchmove\"], touchHandlerWrapper, listenerOptions);\n if (resetOnTouchEnds)\n useEventListener(target, \"touchend\", reset, listenerOptions);\n }\n if (scroll && type === \"page\")\n useEventListener(window, \"scroll\", scrollHandlerWrapper, listenerOptions);\n }\n return {\n x,\n y,\n sourceType\n };\n}\n\nfunction useMouseInElement(target, options = {}) {\n const {\n handleOutside = true,\n window = defaultWindow\n } = options;\n const type = options.type || \"page\";\n const { x, y, sourceType } = useMouse(options);\n const targetRef = shallowRef(target != null ? target : window == null ? void 0 : window.document.body);\n const elementX = shallowRef(0);\n const elementY = shallowRef(0);\n const elementPositionX = shallowRef(0);\n const elementPositionY = shallowRef(0);\n const elementHeight = shallowRef(0);\n const elementWidth = shallowRef(0);\n const isOutside = shallowRef(true);\n let stop = () => {\n };\n if (window) {\n stop = watch(\n [targetRef, x, y],\n () => {\n const el = unrefElement(targetRef);\n if (!el || !(el instanceof Element))\n return;\n const {\n left,\n top,\n width,\n height\n } = el.getBoundingClientRect();\n elementPositionX.value = left + (type === \"page\" ? window.pageXOffset : 0);\n elementPositionY.value = top + (type === \"page\" ? window.pageYOffset : 0);\n elementHeight.value = height;\n elementWidth.value = width;\n const elX = x.value - elementPositionX.value;\n const elY = y.value - elementPositionY.value;\n isOutside.value = width === 0 || height === 0 || elX < 0 || elY < 0 || elX > width || elY > height;\n if (handleOutside || !isOutside.value) {\n elementX.value = elX;\n elementY.value = elY;\n }\n },\n { immediate: true }\n );\n useEventListener(\n document,\n \"mouseleave\",\n () => isOutside.value = true,\n { passive: true }\n );\n }\n return {\n x,\n y,\n sourceType,\n elementX,\n elementY,\n elementPositionX,\n elementPositionY,\n elementHeight,\n elementWidth,\n isOutside,\n stop\n };\n}\n\nfunction useMousePressed(options = {}) {\n const {\n touch = true,\n drag = true,\n capture = false,\n initialValue = false,\n window = defaultWindow\n } = options;\n const pressed = shallowRef(initialValue);\n const sourceType = shallowRef(null);\n if (!window) {\n return {\n pressed,\n sourceType\n };\n }\n const onPressed = (srcType) => (event) => {\n var _a;\n pressed.value = true;\n sourceType.value = srcType;\n (_a = options.onPressed) == null ? void 0 : _a.call(options, event);\n };\n const onReleased = (event) => {\n var _a;\n pressed.value = false;\n sourceType.value = null;\n (_a = options.onReleased) == null ? void 0 : _a.call(options, event);\n };\n const target = computed(() => unrefElement(options.target) || window);\n const listenerOptions = { passive: true, capture };\n useEventListener(target, \"mousedown\", onPressed(\"mouse\"), listenerOptions);\n useEventListener(window, \"mouseleave\", onReleased, listenerOptions);\n useEventListener(window, \"mouseup\", onReleased, listenerOptions);\n if (drag) {\n useEventListener(target, \"dragstart\", onPressed(\"mouse\"), listenerOptions);\n useEventListener(window, \"drop\", onReleased, listenerOptions);\n useEventListener(window, \"dragend\", onReleased, listenerOptions);\n }\n if (touch) {\n useEventListener(target, \"touchstart\", onPressed(\"touch\"), listenerOptions);\n useEventListener(window, \"touchend\", onReleased, listenerOptions);\n useEventListener(window, \"touchcancel\", onReleased, listenerOptions);\n }\n return {\n pressed,\n sourceType\n };\n}\n\nfunction useNavigatorLanguage(options = {}) {\n const { window = defaultWindow } = options;\n const navigator = window == null ? void 0 : window.navigator;\n const isSupported = useSupported(() => navigator && \"language\" in navigator);\n const language = shallowRef(navigator == null ? void 0 : navigator.language);\n useEventListener(window, \"languagechange\", () => {\n if (navigator)\n language.value = navigator.language;\n }, { passive: true });\n return {\n isSupported,\n language\n };\n}\n\nfunction useNetwork(options = {}) {\n const { window = defaultWindow } = options;\n const navigator = window == null ? void 0 : window.navigator;\n const isSupported = useSupported(() => navigator && \"connection\" in navigator);\n const isOnline = shallowRef(true);\n const saveData = shallowRef(false);\n const offlineAt = shallowRef(void 0);\n const onlineAt = shallowRef(void 0);\n const downlink = shallowRef(void 0);\n const downlinkMax = shallowRef(void 0);\n const rtt = shallowRef(void 0);\n const effectiveType = shallowRef(void 0);\n const type = shallowRef(\"unknown\");\n const connection = isSupported.value && navigator.connection;\n function updateNetworkInformation() {\n if (!navigator)\n return;\n isOnline.value = navigator.onLine;\n offlineAt.value = isOnline.value ? void 0 : Date.now();\n onlineAt.value = isOnline.value ? Date.now() : void 0;\n if (connection) {\n downlink.value = connection.downlink;\n downlinkMax.value = connection.downlinkMax;\n effectiveType.value = connection.effectiveType;\n rtt.value = connection.rtt;\n saveData.value = connection.saveData;\n type.value = connection.type;\n }\n }\n const listenerOptions = { passive: true };\n if (window) {\n useEventListener(window, \"offline\", () => {\n isOnline.value = false;\n offlineAt.value = Date.now();\n }, listenerOptions);\n useEventListener(window, \"online\", () => {\n isOnline.value = true;\n onlineAt.value = Date.now();\n }, listenerOptions);\n }\n if (connection)\n useEventListener(connection, \"change\", updateNetworkInformation, listenerOptions);\n updateNetworkInformation();\n return {\n isSupported,\n isOnline: readonly(isOnline),\n saveData: readonly(saveData),\n offlineAt: readonly(offlineAt),\n onlineAt: readonly(onlineAt),\n downlink: readonly(downlink),\n downlinkMax: readonly(downlinkMax),\n effectiveType: readonly(effectiveType),\n rtt: readonly(rtt),\n type: readonly(type)\n };\n}\n\nfunction useNow(options = {}) {\n const {\n controls: exposeControls = false,\n interval = \"requestAnimationFrame\"\n } = options;\n const now = ref(/* @__PURE__ */ new Date());\n const update = () => now.value = /* @__PURE__ */ new Date();\n const controls = interval === \"requestAnimationFrame\" ? useRafFn(update, { immediate: true }) : useIntervalFn(update, interval, { immediate: true });\n if (exposeControls) {\n return {\n now,\n ...controls\n };\n } else {\n return now;\n }\n}\n\nfunction useObjectUrl(object) {\n const url = shallowRef();\n const release = () => {\n if (url.value)\n URL.revokeObjectURL(url.value);\n url.value = void 0;\n };\n watch(\n () => toValue(object),\n (newObject) => {\n release();\n if (newObject)\n url.value = URL.createObjectURL(newObject);\n },\n { immediate: true }\n );\n tryOnScopeDispose(release);\n return readonly(url);\n}\n\nfunction useClamp(value, min, max) {\n if (typeof value === \"function\" || isReadonly(value))\n return computed(() => clamp(toValue(value), toValue(min), toValue(max)));\n const _value = ref(value);\n return computed({\n get() {\n return _value.value = clamp(_value.value, toValue(min), toValue(max));\n },\n set(value2) {\n _value.value = clamp(value2, toValue(min), toValue(max));\n }\n });\n}\n\nfunction useOffsetPagination(options) {\n const {\n total = Number.POSITIVE_INFINITY,\n pageSize = 10,\n page = 1,\n onPageChange = noop,\n onPageSizeChange = noop,\n onPageCountChange = noop\n } = options;\n const currentPageSize = useClamp(pageSize, 1, Number.POSITIVE_INFINITY);\n const pageCount = computed(() => Math.max(\n 1,\n Math.ceil(toValue(total) / toValue(currentPageSize))\n ));\n const currentPage = useClamp(page, 1, pageCount);\n const isFirstPage = computed(() => currentPage.value === 1);\n const isLastPage = computed(() => currentPage.value === pageCount.value);\n if (isRef(page)) {\n syncRef(page, currentPage, {\n direction: isReadonly(page) ? \"ltr\" : \"both\"\n });\n }\n if (isRef(pageSize)) {\n syncRef(pageSize, currentPageSize, {\n direction: isReadonly(pageSize) ? \"ltr\" : \"both\"\n });\n }\n function prev() {\n currentPage.value--;\n }\n function next() {\n currentPage.value++;\n }\n const returnValue = {\n currentPage,\n currentPageSize,\n pageCount,\n isFirstPage,\n isLastPage,\n prev,\n next\n };\n watch(currentPage, () => {\n onPageChange(reactive(returnValue));\n });\n watch(currentPageSize, () => {\n onPageSizeChange(reactive(returnValue));\n });\n watch(pageCount, () => {\n onPageCountChange(reactive(returnValue));\n });\n return returnValue;\n}\n\nfunction useOnline(options = {}) {\n const { isOnline } = useNetwork(options);\n return isOnline;\n}\n\nfunction usePageLeave(options = {}) {\n const { window = defaultWindow } = options;\n const isLeft = shallowRef(false);\n const handler = (event) => {\n if (!window)\n return;\n event = event || window.event;\n const from = event.relatedTarget || event.toElement;\n isLeft.value = !from;\n };\n if (window) {\n const listenerOptions = { passive: true };\n useEventListener(window, \"mouseout\", handler, listenerOptions);\n useEventListener(window.document, \"mouseleave\", handler, listenerOptions);\n useEventListener(window.document, \"mouseenter\", handler, listenerOptions);\n }\n return isLeft;\n}\n\nfunction useScreenOrientation(options = {}) {\n const {\n window = defaultWindow\n } = options;\n const isSupported = useSupported(() => window && \"screen\" in window && \"orientation\" in window.screen);\n const screenOrientation = isSupported.value ? window.screen.orientation : {};\n const orientation = ref(screenOrientation.type);\n const angle = shallowRef(screenOrientation.angle || 0);\n if (isSupported.value) {\n useEventListener(window, \"orientationchange\", () => {\n orientation.value = screenOrientation.type;\n angle.value = screenOrientation.angle;\n }, { passive: true });\n }\n const lockOrientation = (type) => {\n if (isSupported.value && typeof screenOrientation.lock === \"function\")\n return screenOrientation.lock(type);\n return Promise.reject(new Error(\"Not supported\"));\n };\n const unlockOrientation = () => {\n if (isSupported.value && typeof screenOrientation.unlock === \"function\")\n screenOrientation.unlock();\n };\n return {\n isSupported,\n orientation,\n angle,\n lockOrientation,\n unlockOrientation\n };\n}\n\nfunction useParallax(target, options = {}) {\n const {\n deviceOrientationTiltAdjust = (i) => i,\n deviceOrientationRollAdjust = (i) => i,\n mouseTiltAdjust = (i) => i,\n mouseRollAdjust = (i) => i,\n window = defaultWindow\n } = options;\n const orientation = reactive(useDeviceOrientation({ window }));\n const screenOrientation = reactive(useScreenOrientation({ window }));\n const {\n elementX: x,\n elementY: y,\n elementWidth: width,\n elementHeight: height\n } = useMouseInElement(target, { handleOutside: false, window });\n const source = computed(() => {\n if (orientation.isSupported && (orientation.alpha != null && orientation.alpha !== 0 || orientation.gamma != null && orientation.gamma !== 0)) {\n return \"deviceOrientation\";\n }\n return \"mouse\";\n });\n const roll = computed(() => {\n if (source.value === \"deviceOrientation\") {\n let value;\n switch (screenOrientation.orientation) {\n case \"landscape-primary\":\n value = orientation.gamma / 90;\n break;\n case \"landscape-secondary\":\n value = -orientation.gamma / 90;\n break;\n case \"portrait-primary\":\n value = -orientation.beta / 90;\n break;\n case \"portrait-secondary\":\n value = orientation.beta / 90;\n break;\n default:\n value = -orientation.beta / 90;\n }\n return deviceOrientationRollAdjust(value);\n } else {\n const value = -(y.value - height.value / 2) / height.value;\n return mouseRollAdjust(value);\n }\n });\n const tilt = computed(() => {\n if (source.value === \"deviceOrientation\") {\n let value;\n switch (screenOrientation.orientation) {\n case \"landscape-primary\":\n value = orientation.beta / 90;\n break;\n case \"landscape-secondary\":\n value = -orientation.beta / 90;\n break;\n case \"portrait-primary\":\n value = orientation.gamma / 90;\n break;\n case \"portrait-secondary\":\n value = -orientation.gamma / 90;\n break;\n default:\n value = orientation.gamma / 90;\n }\n return deviceOrientationTiltAdjust(value);\n } else {\n const value = (x.value - width.value / 2) / width.value;\n return mouseTiltAdjust(value);\n }\n });\n return { roll, tilt, source };\n}\n\nfunction useParentElement(element = useCurrentElement()) {\n const parentElement = shallowRef();\n const update = () => {\n const el = unrefElement(element);\n if (el)\n parentElement.value = el.parentElement;\n };\n tryOnMounted(update);\n watch(() => toValue(element), update);\n return parentElement;\n}\n\nfunction usePerformanceObserver(options, callback) {\n const {\n window = defaultWindow,\n immediate = true,\n ...performanceOptions\n } = options;\n const isSupported = useSupported(() => window && \"PerformanceObserver\" in window);\n let observer;\n const stop = () => {\n observer == null ? void 0 : observer.disconnect();\n };\n const start = () => {\n if (isSupported.value) {\n stop();\n observer = new PerformanceObserver(callback);\n observer.observe(performanceOptions);\n }\n };\n tryOnScopeDispose(stop);\n if (immediate)\n start();\n return {\n isSupported,\n start,\n stop\n };\n}\n\nconst defaultState = {\n x: 0,\n y: 0,\n pointerId: 0,\n pressure: 0,\n tiltX: 0,\n tiltY: 0,\n width: 0,\n height: 0,\n twist: 0,\n pointerType: null\n};\nconst keys = /* @__PURE__ */ Object.keys(defaultState);\nfunction usePointer(options = {}) {\n const {\n target = defaultWindow\n } = options;\n const isInside = shallowRef(false);\n const state = ref(options.initialValue || {});\n Object.assign(state.value, defaultState, state.value);\n const handler = (event) => {\n isInside.value = true;\n if (options.pointerTypes && !options.pointerTypes.includes(event.pointerType))\n return;\n state.value = objectPick(event, keys, false);\n };\n if (target) {\n const listenerOptions = { passive: true };\n useEventListener(target, [\"pointerdown\", \"pointermove\", \"pointerup\"], handler, listenerOptions);\n useEventListener(target, \"pointerleave\", () => isInside.value = false, listenerOptions);\n }\n return {\n ...toRefs(state),\n isInside\n };\n}\n\nfunction usePointerLock(target, options = {}) {\n const { document = defaultDocument } = options;\n const isSupported = useSupported(() => document && \"pointerLockElement\" in document);\n const element = shallowRef();\n const triggerElement = shallowRef();\n let targetElement;\n if (isSupported.value) {\n const listenerOptions = { passive: true };\n useEventListener(document, \"pointerlockchange\", () => {\n var _a;\n const currentElement = (_a = document.pointerLockElement) != null ? _a : element.value;\n if (targetElement && currentElement === targetElement) {\n element.value = document.pointerLockElement;\n if (!element.value)\n targetElement = triggerElement.value = null;\n }\n }, listenerOptions);\n useEventListener(document, \"pointerlockerror\", () => {\n var _a;\n const currentElement = (_a = document.pointerLockElement) != null ? _a : element.value;\n if (targetElement && currentElement === targetElement) {\n const action = document.pointerLockElement ? \"release\" : \"acquire\";\n throw new Error(`Failed to ${action} pointer lock.`);\n }\n }, listenerOptions);\n }\n async function lock(e) {\n var _a;\n if (!isSupported.value)\n throw new Error(\"Pointer Lock API is not supported by your browser.\");\n triggerElement.value = e instanceof Event ? e.currentTarget : null;\n targetElement = e instanceof Event ? (_a = unrefElement(target)) != null ? _a : triggerElement.value : unrefElement(e);\n if (!targetElement)\n throw new Error(\"Target element undefined.\");\n targetElement.requestPointerLock();\n return await until(element).toBe(targetElement);\n }\n async function unlock() {\n if (!element.value)\n return false;\n document.exitPointerLock();\n await until(element).toBeNull();\n return true;\n }\n return {\n isSupported,\n element,\n triggerElement,\n lock,\n unlock\n };\n}\n\nfunction usePointerSwipe(target, options = {}) {\n const targetRef = toRef(target);\n const {\n threshold = 50,\n onSwipe,\n onSwipeEnd,\n onSwipeStart,\n disableTextSelect = false\n } = options;\n const posStart = reactive({ x: 0, y: 0 });\n const updatePosStart = (x, y) => {\n posStart.x = x;\n posStart.y = y;\n };\n const posEnd = reactive({ x: 0, y: 0 });\n const updatePosEnd = (x, y) => {\n posEnd.x = x;\n posEnd.y = y;\n };\n const distanceX = computed(() => posStart.x - posEnd.x);\n const distanceY = computed(() => posStart.y - posEnd.y);\n const { max, abs } = Math;\n const isThresholdExceeded = computed(() => max(abs(distanceX.value), abs(distanceY.value)) >= threshold);\n const isSwiping = shallowRef(false);\n const isPointerDown = shallowRef(false);\n const direction = computed(() => {\n if (!isThresholdExceeded.value)\n return \"none\";\n if (abs(distanceX.value) > abs(distanceY.value)) {\n return distanceX.value > 0 ? \"left\" : \"right\";\n } else {\n return distanceY.value > 0 ? \"up\" : \"down\";\n }\n });\n const eventIsAllowed = (e) => {\n var _a, _b, _c;\n const isReleasingButton = e.buttons === 0;\n const isPrimaryButton = e.buttons === 1;\n return (_c = (_b = (_a = options.pointerTypes) == null ? void 0 : _a.includes(e.pointerType)) != null ? _b : isReleasingButton || isPrimaryButton) != null ? _c : true;\n };\n const listenerOptions = { passive: true };\n const stops = [\n useEventListener(target, \"pointerdown\", (e) => {\n if (!eventIsAllowed(e))\n return;\n isPointerDown.value = true;\n const eventTarget = e.target;\n eventTarget == null ? void 0 : eventTarget.setPointerCapture(e.pointerId);\n const { clientX: x, clientY: y } = e;\n updatePosStart(x, y);\n updatePosEnd(x, y);\n onSwipeStart == null ? void 0 : onSwipeStart(e);\n }, listenerOptions),\n useEventListener(target, \"pointermove\", (e) => {\n if (!eventIsAllowed(e))\n return;\n if (!isPointerDown.value)\n return;\n const { clientX: x, clientY: y } = e;\n updatePosEnd(x, y);\n if (!isSwiping.value && isThresholdExceeded.value)\n isSwiping.value = true;\n if (isSwiping.value)\n onSwipe == null ? void 0 : onSwipe(e);\n }, listenerOptions),\n useEventListener(target, \"pointerup\", (e) => {\n if (!eventIsAllowed(e))\n return;\n if (isSwiping.value)\n onSwipeEnd == null ? void 0 : onSwipeEnd(e, direction.value);\n isPointerDown.value = false;\n isSwiping.value = false;\n }, listenerOptions)\n ];\n tryOnMounted(() => {\n var _a, _b, _c, _d, _e, _f, _g, _h;\n (_b = (_a = targetRef.value) == null ? void 0 : _a.style) == null ? void 0 : _b.setProperty(\"touch-action\", \"none\");\n if (disableTextSelect) {\n (_d = (_c = targetRef.value) == null ? void 0 : _c.style) == null ? void 0 : _d.setProperty(\"-webkit-user-select\", \"none\");\n (_f = (_e = targetRef.value) == null ? void 0 : _e.style) == null ? void 0 : _f.setProperty(\"-ms-user-select\", \"none\");\n (_h = (_g = targetRef.value) == null ? void 0 : _g.style) == null ? void 0 : _h.setProperty(\"user-select\", \"none\");\n }\n });\n const stop = () => stops.forEach((s) => s());\n return {\n isSwiping: readonly(isSwiping),\n direction: readonly(direction),\n posStart: readonly(posStart),\n posEnd: readonly(posEnd),\n distanceX,\n distanceY,\n stop\n };\n}\n\nfunction usePreferredColorScheme(options) {\n const isLight = useMediaQuery(\"(prefers-color-scheme: light)\", options);\n const isDark = useMediaQuery(\"(prefers-color-scheme: dark)\", options);\n return computed(() => {\n if (isDark.value)\n return \"dark\";\n if (isLight.value)\n return \"light\";\n return \"no-preference\";\n });\n}\n\nfunction usePreferredContrast(options) {\n const isMore = useMediaQuery(\"(prefers-contrast: more)\", options);\n const isLess = useMediaQuery(\"(prefers-contrast: less)\", options);\n const isCustom = useMediaQuery(\"(prefers-contrast: custom)\", options);\n return computed(() => {\n if (isMore.value)\n return \"more\";\n if (isLess.value)\n return \"less\";\n if (isCustom.value)\n return \"custom\";\n return \"no-preference\";\n });\n}\n\nfunction usePreferredLanguages(options = {}) {\n const { window = defaultWindow } = options;\n if (!window)\n return ref([\"en\"]);\n const navigator = window.navigator;\n const value = ref(navigator.languages);\n useEventListener(window, \"languagechange\", () => {\n value.value = navigator.languages;\n }, { passive: true });\n return value;\n}\n\nfunction usePreferredReducedMotion(options) {\n const isReduced = useMediaQuery(\"(prefers-reduced-motion: reduce)\", options);\n return computed(() => {\n if (isReduced.value)\n return \"reduce\";\n return \"no-preference\";\n });\n}\n\nfunction usePreferredReducedTransparency(options) {\n const isReduced = useMediaQuery(\"(prefers-reduced-transparency: reduce)\", options);\n return computed(() => {\n if (isReduced.value)\n return \"reduce\";\n return \"no-preference\";\n });\n}\n\nfunction usePrevious(value, initialValue) {\n const previous = shallowRef(initialValue);\n watch(\n toRef(value),\n (_, oldValue) => {\n previous.value = oldValue;\n },\n { flush: \"sync\" }\n );\n return readonly(previous);\n}\n\nconst topVarName = \"--vueuse-safe-area-top\";\nconst rightVarName = \"--vueuse-safe-area-right\";\nconst bottomVarName = \"--vueuse-safe-area-bottom\";\nconst leftVarName = \"--vueuse-safe-area-left\";\nfunction useScreenSafeArea() {\n const top = shallowRef(\"\");\n const right = shallowRef(\"\");\n const bottom = shallowRef(\"\");\n const left = shallowRef(\"\");\n if (isClient) {\n const topCssVar = useCssVar(topVarName);\n const rightCssVar = useCssVar(rightVarName);\n const bottomCssVar = useCssVar(bottomVarName);\n const leftCssVar = useCssVar(leftVarName);\n topCssVar.value = \"env(safe-area-inset-top, 0px)\";\n rightCssVar.value = \"env(safe-area-inset-right, 0px)\";\n bottomCssVar.value = \"env(safe-area-inset-bottom, 0px)\";\n leftCssVar.value = \"env(safe-area-inset-left, 0px)\";\n update();\n useEventListener(\"resize\", useDebounceFn(update), { passive: true });\n }\n function update() {\n top.value = getValue(topVarName);\n right.value = getValue(rightVarName);\n bottom.value = getValue(bottomVarName);\n left.value = getValue(leftVarName);\n }\n return {\n top,\n right,\n bottom,\n left,\n update\n };\n}\nfunction getValue(position) {\n return getComputedStyle(document.documentElement).getPropertyValue(position);\n}\n\nfunction useScriptTag(src, onLoaded = noop, options = {}) {\n const {\n immediate = true,\n manual = false,\n type = \"text/javascript\",\n async = true,\n crossOrigin,\n referrerPolicy,\n noModule,\n defer,\n document = defaultDocument,\n attrs = {}\n } = options;\n const scriptTag = shallowRef(null);\n let _promise = null;\n const loadScript = (waitForScriptLoad) => new Promise((resolve, reject) => {\n const resolveWithElement = (el2) => {\n scriptTag.value = el2;\n resolve(el2);\n return el2;\n };\n if (!document) {\n resolve(false);\n return;\n }\n let shouldAppend = false;\n let el = document.querySelector(`script[src=\"${toValue(src)}\"]`);\n if (!el) {\n el = document.createElement(\"script\");\n el.type = type;\n el.async = async;\n el.src = toValue(src);\n if (defer)\n el.defer = defer;\n if (crossOrigin)\n el.crossOrigin = crossOrigin;\n if (noModule)\n el.noModule = noModule;\n if (referrerPolicy)\n el.referrerPolicy = referrerPolicy;\n Object.entries(attrs).forEach(([name, value]) => el == null ? void 0 : el.setAttribute(name, value));\n shouldAppend = true;\n } else if (el.hasAttribute(\"data-loaded\")) {\n resolveWithElement(el);\n }\n const listenerOptions = {\n passive: true\n };\n useEventListener(el, \"error\", (event) => reject(event), listenerOptions);\n useEventListener(el, \"abort\", (event) => reject(event), listenerOptions);\n useEventListener(el, \"load\", () => {\n el.setAttribute(\"data-loaded\", \"true\");\n onLoaded(el);\n resolveWithElement(el);\n }, listenerOptions);\n if (shouldAppend)\n el = document.head.appendChild(el);\n if (!waitForScriptLoad)\n resolveWithElement(el);\n });\n const load = (waitForScriptLoad = true) => {\n if (!_promise)\n _promise = loadScript(waitForScriptLoad);\n return _promise;\n };\n const unload = () => {\n if (!document)\n return;\n _promise = null;\n if (scriptTag.value)\n scriptTag.value = null;\n const el = document.querySelector(`script[src=\"${toValue(src)}\"]`);\n if (el)\n document.head.removeChild(el);\n };\n if (immediate && !manual)\n tryOnMounted(load);\n if (!manual)\n tryOnUnmounted(unload);\n return { scriptTag, load, unload };\n}\n\nfunction checkOverflowScroll(ele) {\n const style = window.getComputedStyle(ele);\n if (style.overflowX === \"scroll\" || style.overflowY === \"scroll\" || style.overflowX === \"auto\" && ele.clientWidth < ele.scrollWidth || style.overflowY === \"auto\" && ele.clientHeight < ele.scrollHeight) {\n return true;\n } else {\n const parent = ele.parentNode;\n if (!parent || parent.tagName === \"BODY\")\n return false;\n return checkOverflowScroll(parent);\n }\n}\nfunction preventDefault(rawEvent) {\n const e = rawEvent || window.event;\n const _target = e.target;\n if (checkOverflowScroll(_target))\n return false;\n if (e.touches.length > 1)\n return true;\n if (e.preventDefault)\n e.preventDefault();\n return false;\n}\nconst elInitialOverflow = /* @__PURE__ */ new WeakMap();\nfunction useScrollLock(element, initialState = false) {\n const isLocked = shallowRef(initialState);\n let stopTouchMoveListener = null;\n let initialOverflow = \"\";\n watch(toRef(element), (el) => {\n const target = resolveElement(toValue(el));\n if (target) {\n const ele = target;\n if (!elInitialOverflow.get(ele))\n elInitialOverflow.set(ele, ele.style.overflow);\n if (ele.style.overflow !== \"hidden\")\n initialOverflow = ele.style.overflow;\n if (ele.style.overflow === \"hidden\")\n return isLocked.value = true;\n if (isLocked.value)\n return ele.style.overflow = \"hidden\";\n }\n }, {\n immediate: true\n });\n const lock = () => {\n const el = resolveElement(toValue(element));\n if (!el || isLocked.value)\n return;\n if (isIOS) {\n stopTouchMoveListener = useEventListener(\n el,\n \"touchmove\",\n (e) => {\n preventDefault(e);\n },\n { passive: false }\n );\n }\n el.style.overflow = \"hidden\";\n isLocked.value = true;\n };\n const unlock = () => {\n const el = resolveElement(toValue(element));\n if (!el || !isLocked.value)\n return;\n if (isIOS)\n stopTouchMoveListener == null ? void 0 : stopTouchMoveListener();\n el.style.overflow = initialOverflow;\n elInitialOverflow.delete(el);\n isLocked.value = false;\n };\n tryOnScopeDispose(unlock);\n return computed({\n get() {\n return isLocked.value;\n },\n set(v) {\n if (v)\n lock();\n else unlock();\n }\n });\n}\n\nfunction useSessionStorage(key, initialValue, options = {}) {\n const { window = defaultWindow } = options;\n return useStorage(key, initialValue, window == null ? void 0 : window.sessionStorage, options);\n}\n\nfunction useShare(shareOptions = {}, options = {}) {\n const { navigator = defaultNavigator } = options;\n const _navigator = navigator;\n const isSupported = useSupported(() => _navigator && \"canShare\" in _navigator);\n const share = async (overrideOptions = {}) => {\n if (isSupported.value) {\n const data = {\n ...toValue(shareOptions),\n ...toValue(overrideOptions)\n };\n let granted = true;\n if (data.files && _navigator.canShare)\n granted = _navigator.canShare({ files: data.files });\n if (granted)\n return _navigator.share(data);\n }\n };\n return {\n isSupported,\n share\n };\n}\n\nconst defaultSortFn = (source, compareFn) => source.sort(compareFn);\nconst defaultCompare = (a, b) => a - b;\nfunction useSorted(...args) {\n var _a, _b, _c, _d;\n const [source] = args;\n let compareFn = defaultCompare;\n let options = {};\n if (args.length === 2) {\n if (typeof args[1] === \"object\") {\n options = args[1];\n compareFn = (_a = options.compareFn) != null ? _a : defaultCompare;\n } else {\n compareFn = (_b = args[1]) != null ? _b : defaultCompare;\n }\n } else if (args.length > 2) {\n compareFn = (_c = args[1]) != null ? _c : defaultCompare;\n options = (_d = args[2]) != null ? _d : {};\n }\n const {\n dirty = false,\n sortFn = defaultSortFn\n } = options;\n if (!dirty)\n return computed(() => sortFn([...toValue(source)], compareFn));\n watchEffect(() => {\n const result = sortFn(toValue(source), compareFn);\n if (isRef(source))\n source.value = result;\n else\n source.splice(0, source.length, ...result);\n });\n return source;\n}\n\nfunction useSpeechRecognition(options = {}) {\n const {\n interimResults = true,\n continuous = true,\n maxAlternatives = 1,\n window = defaultWindow\n } = options;\n const lang = toRef(options.lang || \"en-US\");\n const isListening = shallowRef(false);\n const isFinal = shallowRef(false);\n const result = shallowRef(\"\");\n const error = shallowRef(void 0);\n let recognition;\n const start = () => {\n isListening.value = true;\n };\n const stop = () => {\n isListening.value = false;\n };\n const toggle = (value = !isListening.value) => {\n if (value) {\n start();\n } else {\n stop();\n }\n };\n const SpeechRecognition = window && (window.SpeechRecognition || window.webkitSpeechRecognition);\n const isSupported = useSupported(() => SpeechRecognition);\n if (isSupported.value) {\n recognition = new SpeechRecognition();\n recognition.continuous = continuous;\n recognition.interimResults = interimResults;\n recognition.lang = toValue(lang);\n recognition.maxAlternatives = maxAlternatives;\n recognition.onstart = () => {\n isListening.value = true;\n isFinal.value = false;\n };\n watch(lang, (lang2) => {\n if (recognition && !isListening.value)\n recognition.lang = lang2;\n });\n recognition.onresult = (event) => {\n const currentResult = event.results[event.resultIndex];\n const { transcript } = currentResult[0];\n isFinal.value = currentResult.isFinal;\n result.value = transcript;\n error.value = void 0;\n };\n recognition.onerror = (event) => {\n error.value = event;\n };\n recognition.onend = () => {\n isListening.value = false;\n recognition.lang = toValue(lang);\n };\n watch(isListening, (newValue, oldValue) => {\n if (newValue === oldValue)\n return;\n if (newValue)\n recognition.start();\n else\n recognition.stop();\n });\n }\n tryOnScopeDispose(() => {\n stop();\n });\n return {\n isSupported,\n isListening,\n isFinal,\n recognition,\n result,\n error,\n toggle,\n start,\n stop\n };\n}\n\nfunction useSpeechSynthesis(text, options = {}) {\n const {\n pitch = 1,\n rate = 1,\n volume = 1,\n window = defaultWindow\n } = options;\n const synth = window && window.speechSynthesis;\n const isSupported = useSupported(() => synth);\n const isPlaying = shallowRef(false);\n const status = shallowRef(\"init\");\n const spokenText = toRef(text || \"\");\n const lang = toRef(options.lang || \"en-US\");\n const error = shallowRef(void 0);\n const toggle = (value = !isPlaying.value) => {\n isPlaying.value = value;\n };\n const bindEventsForUtterance = (utterance2) => {\n utterance2.lang = toValue(lang);\n utterance2.voice = toValue(options.voice) || null;\n utterance2.pitch = toValue(pitch);\n utterance2.rate = toValue(rate);\n utterance2.volume = volume;\n utterance2.onstart = () => {\n isPlaying.value = true;\n status.value = \"play\";\n };\n utterance2.onpause = () => {\n isPlaying.value = false;\n status.value = \"pause\";\n };\n utterance2.onresume = () => {\n isPlaying.value = true;\n status.value = \"play\";\n };\n utterance2.onend = () => {\n isPlaying.value = false;\n status.value = \"end\";\n };\n utterance2.onerror = (event) => {\n error.value = event;\n };\n };\n const utterance = computed(() => {\n isPlaying.value = false;\n status.value = \"init\";\n const newUtterance = new SpeechSynthesisUtterance(spokenText.value);\n bindEventsForUtterance(newUtterance);\n return newUtterance;\n });\n const speak = () => {\n synth.cancel();\n if (utterance)\n synth.speak(utterance.value);\n };\n const stop = () => {\n synth.cancel();\n isPlaying.value = false;\n };\n if (isSupported.value) {\n bindEventsForUtterance(utterance.value);\n watch(lang, (lang2) => {\n if (utterance.value && !isPlaying.value)\n utterance.value.lang = lang2;\n });\n if (options.voice) {\n watch(options.voice, () => {\n synth.cancel();\n });\n }\n watch(isPlaying, () => {\n if (isPlaying.value)\n synth.resume();\n else\n synth.pause();\n });\n }\n tryOnScopeDispose(() => {\n isPlaying.value = false;\n });\n return {\n isSupported,\n isPlaying,\n status,\n utterance,\n error,\n stop,\n toggle,\n speak\n };\n}\n\nfunction useStepper(steps, initialStep) {\n const stepsRef = ref(steps);\n const stepNames = computed(() => Array.isArray(stepsRef.value) ? stepsRef.value : Object.keys(stepsRef.value));\n const index = ref(stepNames.value.indexOf(initialStep != null ? initialStep : stepNames.value[0]));\n const current = computed(() => at(index.value));\n const isFirst = computed(() => index.value === 0);\n const isLast = computed(() => index.value === stepNames.value.length - 1);\n const next = computed(() => stepNames.value[index.value + 1]);\n const previous = computed(() => stepNames.value[index.value - 1]);\n function at(index2) {\n if (Array.isArray(stepsRef.value))\n return stepsRef.value[index2];\n return stepsRef.value[stepNames.value[index2]];\n }\n function get(step) {\n if (!stepNames.value.includes(step))\n return;\n return at(stepNames.value.indexOf(step));\n }\n function goTo(step) {\n if (stepNames.value.includes(step))\n index.value = stepNames.value.indexOf(step);\n }\n function goToNext() {\n if (isLast.value)\n return;\n index.value++;\n }\n function goToPrevious() {\n if (isFirst.value)\n return;\n index.value--;\n }\n function goBackTo(step) {\n if (isAfter(step))\n goTo(step);\n }\n function isNext(step) {\n return stepNames.value.indexOf(step) === index.value + 1;\n }\n function isPrevious(step) {\n return stepNames.value.indexOf(step) === index.value - 1;\n }\n function isCurrent(step) {\n return stepNames.value.indexOf(step) === index.value;\n }\n function isBefore(step) {\n return index.value < stepNames.value.indexOf(step);\n }\n function isAfter(step) {\n return index.value > stepNames.value.indexOf(step);\n }\n return {\n steps: stepsRef,\n stepNames,\n index,\n current,\n next,\n previous,\n isFirst,\n isLast,\n at,\n get,\n goTo,\n goToNext,\n goToPrevious,\n goBackTo,\n isNext,\n isPrevious,\n isCurrent,\n isBefore,\n isAfter\n };\n}\n\nfunction useStorageAsync(key, initialValue, storage, options = {}) {\n var _a;\n const {\n flush = \"pre\",\n deep = true,\n listenToStorageChanges = true,\n writeDefaults = true,\n mergeDefaults = false,\n shallow,\n window = defaultWindow,\n eventFilter,\n onError = (e) => {\n console.error(e);\n }\n } = options;\n const rawInit = toValue(initialValue);\n const type = guessSerializerType(rawInit);\n const data = (shallow ? shallowRef : ref)(toValue(initialValue));\n const serializer = (_a = options.serializer) != null ? _a : StorageSerializers[type];\n if (!storage) {\n try {\n storage = getSSRHandler(\"getDefaultStorageAsync\", () => {\n var _a2;\n return (_a2 = defaultWindow) == null ? void 0 : _a2.localStorage;\n })();\n } catch (e) {\n onError(e);\n }\n }\n async function read(event) {\n if (!storage || event && event.key !== key)\n return;\n try {\n const rawValue = event ? event.newValue : await storage.getItem(key);\n if (rawValue == null) {\n data.value = rawInit;\n if (writeDefaults && rawInit !== null)\n await storage.setItem(key, await serializer.write(rawInit));\n } else if (mergeDefaults) {\n const value = await serializer.read(rawValue);\n if (typeof mergeDefaults === \"function\")\n data.value = mergeDefaults(value, rawInit);\n else if (type === \"object\" && !Array.isArray(value))\n data.value = { ...rawInit, ...value };\n else data.value = value;\n } else {\n data.value = await serializer.read(rawValue);\n }\n } catch (e) {\n onError(e);\n }\n }\n read();\n if (window && listenToStorageChanges)\n useEventListener(window, \"storage\", (e) => Promise.resolve().then(() => read(e)), { passive: true });\n if (storage) {\n watchWithFilter(\n data,\n async () => {\n try {\n if (data.value == null)\n await storage.removeItem(key);\n else\n await storage.setItem(key, await serializer.write(data.value));\n } catch (e) {\n onError(e);\n }\n },\n {\n flush,\n deep,\n eventFilter\n }\n );\n }\n return data;\n}\n\nlet _id = 0;\nfunction useStyleTag(css, options = {}) {\n const isLoaded = shallowRef(false);\n const {\n document = defaultDocument,\n immediate = true,\n manual = false,\n id = `vueuse_styletag_${++_id}`\n } = options;\n const cssRef = shallowRef(css);\n let stop = () => {\n };\n const load = () => {\n if (!document)\n return;\n const el = document.getElementById(id) || document.createElement(\"style\");\n if (!el.isConnected) {\n el.id = id;\n if (options.media)\n el.media = options.media;\n document.head.appendChild(el);\n }\n if (isLoaded.value)\n return;\n stop = watch(\n cssRef,\n (value) => {\n el.textContent = value;\n },\n { immediate: true }\n );\n isLoaded.value = true;\n };\n const unload = () => {\n if (!document || !isLoaded.value)\n return;\n stop();\n document.head.removeChild(document.getElementById(id));\n isLoaded.value = false;\n };\n if (immediate && !manual)\n tryOnMounted(load);\n if (!manual)\n tryOnScopeDispose(unload);\n return {\n id,\n css: cssRef,\n unload,\n load,\n isLoaded: readonly(isLoaded)\n };\n}\n\nfunction useSwipe(target, options = {}) {\n const {\n threshold = 50,\n onSwipe,\n onSwipeEnd,\n onSwipeStart,\n passive = true\n } = options;\n const coordsStart = reactive({ x: 0, y: 0 });\n const coordsEnd = reactive({ x: 0, y: 0 });\n const diffX = computed(() => coordsStart.x - coordsEnd.x);\n const diffY = computed(() => coordsStart.y - coordsEnd.y);\n const { max, abs } = Math;\n const isThresholdExceeded = computed(() => max(abs(diffX.value), abs(diffY.value)) >= threshold);\n const isSwiping = shallowRef(false);\n const direction = computed(() => {\n if (!isThresholdExceeded.value)\n return \"none\";\n if (abs(diffX.value) > abs(diffY.value)) {\n return diffX.value > 0 ? \"left\" : \"right\";\n } else {\n return diffY.value > 0 ? \"up\" : \"down\";\n }\n });\n const getTouchEventCoords = (e) => [e.touches[0].clientX, e.touches[0].clientY];\n const updateCoordsStart = (x, y) => {\n coordsStart.x = x;\n coordsStart.y = y;\n };\n const updateCoordsEnd = (x, y) => {\n coordsEnd.x = x;\n coordsEnd.y = y;\n };\n const listenerOptions = { passive, capture: !passive };\n const onTouchEnd = (e) => {\n if (isSwiping.value)\n onSwipeEnd == null ? void 0 : onSwipeEnd(e, direction.value);\n isSwiping.value = false;\n };\n const stops = [\n useEventListener(target, \"touchstart\", (e) => {\n if (e.touches.length !== 1)\n return;\n const [x, y] = getTouchEventCoords(e);\n updateCoordsStart(x, y);\n updateCoordsEnd(x, y);\n onSwipeStart == null ? void 0 : onSwipeStart(e);\n }, listenerOptions),\n useEventListener(target, \"touchmove\", (e) => {\n if (e.touches.length !== 1)\n return;\n const [x, y] = getTouchEventCoords(e);\n updateCoordsEnd(x, y);\n if (listenerOptions.capture && !listenerOptions.passive && Math.abs(diffX.value) > Math.abs(diffY.value))\n e.preventDefault();\n if (!isSwiping.value && isThresholdExceeded.value)\n isSwiping.value = true;\n if (isSwiping.value)\n onSwipe == null ? void 0 : onSwipe(e);\n }, listenerOptions),\n useEventListener(target, [\"touchend\", \"touchcancel\"], onTouchEnd, listenerOptions)\n ];\n const stop = () => stops.forEach((s) => s());\n return {\n isSwiping,\n direction,\n coordsStart,\n coordsEnd,\n lengthX: diffX,\n lengthY: diffY,\n stop,\n // TODO: Remove in the next major version\n isPassiveEventSupported: true\n };\n}\n\nfunction useTemplateRefsList() {\n const refs = ref([]);\n refs.value.set = (el) => {\n if (el)\n refs.value.push(el);\n };\n onBeforeUpdate(() => {\n refs.value.length = 0;\n });\n return refs;\n}\n\nfunction useTextDirection(options = {}) {\n const {\n document = defaultDocument,\n selector = \"html\",\n observe = false,\n initialValue = \"ltr\"\n } = options;\n function getValue() {\n var _a, _b;\n return (_b = (_a = document == null ? void 0 : document.querySelector(selector)) == null ? void 0 : _a.getAttribute(\"dir\")) != null ? _b : initialValue;\n }\n const dir = ref(getValue());\n tryOnMounted(() => dir.value = getValue());\n if (observe && document) {\n useMutationObserver(\n document.querySelector(selector),\n () => dir.value = getValue(),\n { attributes: true }\n );\n }\n return computed({\n get() {\n return dir.value;\n },\n set(v) {\n var _a, _b;\n dir.value = v;\n if (!document)\n return;\n if (dir.value)\n (_a = document.querySelector(selector)) == null ? void 0 : _a.setAttribute(\"dir\", dir.value);\n else\n (_b = document.querySelector(selector)) == null ? void 0 : _b.removeAttribute(\"dir\");\n }\n });\n}\n\nfunction getRangesFromSelection(selection) {\n var _a;\n const rangeCount = (_a = selection.rangeCount) != null ? _a : 0;\n return Array.from({ length: rangeCount }, (_, i) => selection.getRangeAt(i));\n}\nfunction useTextSelection(options = {}) {\n const {\n window = defaultWindow\n } = options;\n const selection = ref(null);\n const text = computed(() => {\n var _a, _b;\n return (_b = (_a = selection.value) == null ? void 0 : _a.toString()) != null ? _b : \"\";\n });\n const ranges = computed(() => selection.value ? getRangesFromSelection(selection.value) : []);\n const rects = computed(() => ranges.value.map((range) => range.getBoundingClientRect()));\n function onSelectionChange() {\n selection.value = null;\n if (window)\n selection.value = window.getSelection();\n }\n if (window)\n useEventListener(window.document, \"selectionchange\", onSelectionChange, { passive: true });\n return {\n text,\n rects,\n ranges,\n selection\n };\n}\n\nfunction tryRequestAnimationFrame(window = defaultWindow, fn) {\n if (window && typeof window.requestAnimationFrame === \"function\") {\n window.requestAnimationFrame(fn);\n } else {\n fn();\n }\n}\nfunction useTextareaAutosize(options = {}) {\n var _a, _b;\n const { window = defaultWindow } = options;\n const textarea = toRef(options == null ? void 0 : options.element);\n const input = toRef((_a = options == null ? void 0 : options.input) != null ? _a : \"\");\n const styleProp = (_b = options == null ? void 0 : options.styleProp) != null ? _b : \"height\";\n const textareaScrollHeight = shallowRef(1);\n const textareaOldWidth = shallowRef(0);\n function triggerResize() {\n var _a2;\n if (!textarea.value)\n return;\n let height = \"\";\n textarea.value.style[styleProp] = \"1px\";\n textareaScrollHeight.value = (_a2 = textarea.value) == null ? void 0 : _a2.scrollHeight;\n const _styleTarget = toValue(options == null ? void 0 : options.styleTarget);\n if (_styleTarget)\n _styleTarget.style[styleProp] = `${textareaScrollHeight.value}px`;\n else\n height = `${textareaScrollHeight.value}px`;\n textarea.value.style[styleProp] = height;\n }\n watch([input, textarea], () => nextTick(triggerResize), { immediate: true });\n watch(textareaScrollHeight, () => {\n var _a2;\n return (_a2 = options == null ? void 0 : options.onResize) == null ? void 0 : _a2.call(options);\n });\n useResizeObserver(textarea, ([{ contentRect }]) => {\n if (textareaOldWidth.value === contentRect.width)\n return;\n tryRequestAnimationFrame(window, () => {\n textareaOldWidth.value = contentRect.width;\n triggerResize();\n });\n });\n if (options == null ? void 0 : options.watch)\n watch(options.watch, triggerResize, { immediate: true, deep: true });\n return {\n textarea,\n input,\n triggerResize\n };\n}\n\nfunction useThrottledRefHistory(source, options = {}) {\n const { throttle = 200, trailing = true } = options;\n const filter = throttleFilter(throttle, trailing);\n const history = useRefHistory(source, { ...options, eventFilter: filter });\n return {\n ...history\n };\n}\n\nconst DEFAULT_UNITS = [\n { max: 6e4, value: 1e3, name: \"second\" },\n { max: 276e4, value: 6e4, name: \"minute\" },\n { max: 72e6, value: 36e5, name: \"hour\" },\n { max: 5184e5, value: 864e5, name: \"day\" },\n { max: 24192e5, value: 6048e5, name: \"week\" },\n { max: 28512e6, value: 2592e6, name: \"month\" },\n { max: Number.POSITIVE_INFINITY, value: 31536e6, name: \"year\" }\n];\nconst DEFAULT_MESSAGES = {\n justNow: \"just now\",\n past: (n) => n.match(/\\d/) ? `${n} ago` : n,\n future: (n) => n.match(/\\d/) ? `in ${n}` : n,\n month: (n, past) => n === 1 ? past ? \"last month\" : \"next month\" : `${n} month${n > 1 ? \"s\" : \"\"}`,\n year: (n, past) => n === 1 ? past ? \"last year\" : \"next year\" : `${n} year${n > 1 ? \"s\" : \"\"}`,\n day: (n, past) => n === 1 ? past ? \"yesterday\" : \"tomorrow\" : `${n} day${n > 1 ? \"s\" : \"\"}`,\n week: (n, past) => n === 1 ? past ? \"last week\" : \"next week\" : `${n} week${n > 1 ? \"s\" : \"\"}`,\n hour: (n) => `${n} hour${n > 1 ? \"s\" : \"\"}`,\n minute: (n) => `${n} minute${n > 1 ? \"s\" : \"\"}`,\n second: (n) => `${n} second${n > 1 ? \"s\" : \"\"}`,\n invalid: \"\"\n};\nfunction DEFAULT_FORMATTER(date) {\n return date.toISOString().slice(0, 10);\n}\nfunction useTimeAgo(time, options = {}) {\n const {\n controls: exposeControls = false,\n updateInterval = 3e4\n } = options;\n const { now, ...controls } = useNow({ interval: updateInterval, controls: true });\n const timeAgo = computed(() => formatTimeAgo(new Date(toValue(time)), options, toValue(now)));\n if (exposeControls) {\n return {\n timeAgo,\n ...controls\n };\n } else {\n return timeAgo;\n }\n}\nfunction formatTimeAgo(from, options = {}, now = Date.now()) {\n var _a;\n const {\n max,\n messages = DEFAULT_MESSAGES,\n fullDateFormatter = DEFAULT_FORMATTER,\n units = DEFAULT_UNITS,\n showSecond = false,\n rounding = \"round\"\n } = options;\n const roundFn = typeof rounding === \"number\" ? (n) => +n.toFixed(rounding) : Math[rounding];\n const diff = +now - +from;\n const absDiff = Math.abs(diff);\n function getValue(diff2, unit) {\n return roundFn(Math.abs(diff2) / unit.value);\n }\n function format(diff2, unit) {\n const val = getValue(diff2, unit);\n const past = diff2 > 0;\n const str = applyFormat(unit.name, val, past);\n return applyFormat(past ? \"past\" : \"future\", str, past);\n }\n function applyFormat(name, val, isPast) {\n const formatter = messages[name];\n if (typeof formatter === \"function\")\n return formatter(val, isPast);\n return formatter.replace(\"{0}\", val.toString());\n }\n if (absDiff < 6e4 && !showSecond)\n return messages.justNow;\n if (typeof max === \"number\" && absDiff > max)\n return fullDateFormatter(new Date(from));\n if (typeof max === \"string\") {\n const unitMax = (_a = units.find((i) => i.name === max)) == null ? void 0 : _a.max;\n if (unitMax && absDiff > unitMax)\n return fullDateFormatter(new Date(from));\n }\n for (const [idx, unit] of units.entries()) {\n const val = getValue(diff, unit);\n if (val <= 0 && units[idx - 1])\n return format(diff, units[idx - 1]);\n if (absDiff < unit.max)\n return format(diff, unit);\n }\n return messages.invalid;\n}\n\nfunction useTimeoutPoll(fn, interval, options = {}) {\n const {\n immediate = true,\n immediateCallback = false\n } = options;\n const { start } = useTimeoutFn(loop, interval, { immediate });\n const isActive = shallowRef(false);\n async function loop() {\n if (!isActive.value)\n return;\n await fn();\n start();\n }\n function resume() {\n if (!isActive.value) {\n isActive.value = true;\n if (immediateCallback)\n fn();\n start();\n }\n }\n function pause() {\n isActive.value = false;\n }\n if (immediate && isClient)\n resume();\n tryOnScopeDispose(pause);\n return {\n isActive,\n pause,\n resume\n };\n}\n\nfunction useTimestamp(options = {}) {\n const {\n controls: exposeControls = false,\n offset = 0,\n immediate = true,\n interval = \"requestAnimationFrame\",\n callback\n } = options;\n const ts = shallowRef(timestamp() + offset);\n const update = () => ts.value = timestamp() + offset;\n const cb = callback ? () => {\n update();\n callback(ts.value);\n } : update;\n const controls = interval === \"requestAnimationFrame\" ? useRafFn(cb, { immediate }) : useIntervalFn(cb, interval, { immediate });\n if (exposeControls) {\n return {\n timestamp: ts,\n ...controls\n };\n } else {\n return ts;\n }\n}\n\nfunction useTitle(newTitle = null, options = {}) {\n var _a, _b, _c;\n const {\n document = defaultDocument,\n restoreOnUnmount = (t) => t\n } = options;\n const originalTitle = (_a = document == null ? void 0 : document.title) != null ? _a : \"\";\n const title = toRef((_b = newTitle != null ? newTitle : document == null ? void 0 : document.title) != null ? _b : null);\n const isReadonly = !!(newTitle && typeof newTitle === \"function\");\n function format(t) {\n if (!(\"titleTemplate\" in options))\n return t;\n const template = options.titleTemplate || \"%s\";\n return typeof template === \"function\" ? template(t) : toValue(template).replace(/%s/g, t);\n }\n watch(\n title,\n (newValue, oldValue) => {\n if (newValue !== oldValue && document)\n document.title = format(newValue != null ? newValue : \"\");\n },\n { immediate: true }\n );\n if (options.observe && !options.titleTemplate && document && !isReadonly) {\n useMutationObserver(\n (_c = document.head) == null ? void 0 : _c.querySelector(\"title\"),\n () => {\n if (document && document.title !== title.value)\n title.value = format(document.title);\n },\n { childList: true }\n );\n }\n tryOnScopeDispose(() => {\n if (restoreOnUnmount) {\n const restoredTitle = restoreOnUnmount(originalTitle, title.value || \"\");\n if (restoredTitle != null && document)\n document.title = restoredTitle;\n }\n });\n return title;\n}\n\nconst _TransitionPresets = {\n easeInSine: [0.12, 0, 0.39, 0],\n easeOutSine: [0.61, 1, 0.88, 1],\n easeInOutSine: [0.37, 0, 0.63, 1],\n easeInQuad: [0.11, 0, 0.5, 0],\n easeOutQuad: [0.5, 1, 0.89, 1],\n easeInOutQuad: [0.45, 0, 0.55, 1],\n easeInCubic: [0.32, 0, 0.67, 0],\n easeOutCubic: [0.33, 1, 0.68, 1],\n easeInOutCubic: [0.65, 0, 0.35, 1],\n easeInQuart: [0.5, 0, 0.75, 0],\n easeOutQuart: [0.25, 1, 0.5, 1],\n easeInOutQuart: [0.76, 0, 0.24, 1],\n easeInQuint: [0.64, 0, 0.78, 0],\n easeOutQuint: [0.22, 1, 0.36, 1],\n easeInOutQuint: [0.83, 0, 0.17, 1],\n easeInExpo: [0.7, 0, 0.84, 0],\n easeOutExpo: [0.16, 1, 0.3, 1],\n easeInOutExpo: [0.87, 0, 0.13, 1],\n easeInCirc: [0.55, 0, 1, 0.45],\n easeOutCirc: [0, 0.55, 0.45, 1],\n easeInOutCirc: [0.85, 0, 0.15, 1],\n easeInBack: [0.36, 0, 0.66, -0.56],\n easeOutBack: [0.34, 1.56, 0.64, 1],\n easeInOutBack: [0.68, -0.6, 0.32, 1.6]\n};\nconst TransitionPresets = /* @__PURE__ */ Object.assign({}, { linear: identity }, _TransitionPresets);\nfunction createEasingFunction([p0, p1, p2, p3]) {\n const a = (a1, a2) => 1 - 3 * a2 + 3 * a1;\n const b = (a1, a2) => 3 * a2 - 6 * a1;\n const c = (a1) => 3 * a1;\n const calcBezier = (t, a1, a2) => ((a(a1, a2) * t + b(a1, a2)) * t + c(a1)) * t;\n const getSlope = (t, a1, a2) => 3 * a(a1, a2) * t * t + 2 * b(a1, a2) * t + c(a1);\n const getTforX = (x) => {\n let aGuessT = x;\n for (let i = 0; i < 4; ++i) {\n const currentSlope = getSlope(aGuessT, p0, p2);\n if (currentSlope === 0)\n return aGuessT;\n const currentX = calcBezier(aGuessT, p0, p2) - x;\n aGuessT -= currentX / currentSlope;\n }\n return aGuessT;\n };\n return (x) => p0 === p1 && p2 === p3 ? x : calcBezier(getTforX(x), p1, p3);\n}\nfunction lerp(a, b, alpha) {\n return a + alpha * (b - a);\n}\nfunction toVec(t) {\n return (typeof t === \"number\" ? [t] : t) || [];\n}\nfunction executeTransition(source, from, to, options = {}) {\n var _a, _b;\n const fromVal = toValue(from);\n const toVal = toValue(to);\n const v1 = toVec(fromVal);\n const v2 = toVec(toVal);\n const duration = (_a = toValue(options.duration)) != null ? _a : 1e3;\n const startedAt = Date.now();\n const endAt = Date.now() + duration;\n const trans = typeof options.transition === \"function\" ? options.transition : (_b = toValue(options.transition)) != null ? _b : identity;\n const ease = typeof trans === \"function\" ? trans : createEasingFunction(trans);\n return new Promise((resolve) => {\n source.value = fromVal;\n const tick = () => {\n var _a2;\n if ((_a2 = options.abort) == null ? void 0 : _a2.call(options)) {\n resolve();\n return;\n }\n const now = Date.now();\n const alpha = ease((now - startedAt) / duration);\n const arr = toVec(source.value).map((n, i) => lerp(v1[i], v2[i], alpha));\n if (Array.isArray(source.value))\n source.value = arr.map((n, i) => {\n var _a3, _b2;\n return lerp((_a3 = v1[i]) != null ? _a3 : 0, (_b2 = v2[i]) != null ? _b2 : 0, alpha);\n });\n else if (typeof source.value === \"number\")\n source.value = arr[0];\n if (now < endAt) {\n requestAnimationFrame(tick);\n } else {\n source.value = toVal;\n resolve();\n }\n };\n tick();\n });\n}\nfunction useTransition(source, options = {}) {\n let currentId = 0;\n const sourceVal = () => {\n const v = toValue(source);\n return typeof v === \"number\" ? v : v.map(toValue);\n };\n const outputRef = ref(sourceVal());\n watch(sourceVal, async (to) => {\n var _a, _b;\n if (toValue(options.disabled))\n return;\n const id = ++currentId;\n if (options.delay)\n await promiseTimeout(toValue(options.delay));\n if (id !== currentId)\n return;\n const toVal = Array.isArray(to) ? to.map(toValue) : toValue(to);\n (_a = options.onStarted) == null ? void 0 : _a.call(options);\n await executeTransition(outputRef, outputRef.value, toVal, {\n ...options,\n abort: () => {\n var _a2;\n return id !== currentId || ((_a2 = options.abort) == null ? void 0 : _a2.call(options));\n }\n });\n (_b = options.onFinished) == null ? void 0 : _b.call(options);\n }, { deep: true });\n watch(() => toValue(options.disabled), (disabled) => {\n if (disabled) {\n currentId++;\n outputRef.value = sourceVal();\n }\n });\n tryOnScopeDispose(() => {\n currentId++;\n });\n return computed(() => toValue(options.disabled) ? sourceVal() : outputRef.value);\n}\n\nfunction useUrlSearchParams(mode = \"history\", options = {}) {\n const {\n initialValue = {},\n removeNullishValues = true,\n removeFalsyValues = false,\n write: enableWrite = true,\n writeMode = \"replace\",\n window = defaultWindow\n } = options;\n if (!window)\n return reactive(initialValue);\n const state = reactive({});\n function getRawParams() {\n if (mode === \"history\") {\n return window.location.search || \"\";\n } else if (mode === \"hash\") {\n const hash = window.location.hash || \"\";\n const index = hash.indexOf(\"?\");\n return index > 0 ? hash.slice(index) : \"\";\n } else {\n return (window.location.hash || \"\").replace(/^#/, \"\");\n }\n }\n function constructQuery(params) {\n const stringified = params.toString();\n if (mode === \"history\")\n return `${stringified ? `?${stringified}` : \"\"}${window.location.hash || \"\"}`;\n if (mode === \"hash-params\")\n return `${window.location.search || \"\"}${stringified ? `#${stringified}` : \"\"}`;\n const hash = window.location.hash || \"#\";\n const index = hash.indexOf(\"?\");\n if (index > 0)\n return `${window.location.search || \"\"}${hash.slice(0, index)}${stringified ? `?${stringified}` : \"\"}`;\n return `${window.location.search || \"\"}${hash}${stringified ? `?${stringified}` : \"\"}`;\n }\n function read() {\n return new URLSearchParams(getRawParams());\n }\n function updateState(params) {\n const unusedKeys = new Set(Object.keys(state));\n for (const key of params.keys()) {\n const paramsForKey = params.getAll(key);\n state[key] = paramsForKey.length > 1 ? paramsForKey : params.get(key) || \"\";\n unusedKeys.delete(key);\n }\n Array.from(unusedKeys).forEach((key) => delete state[key]);\n }\n const { pause, resume } = pausableWatch(\n state,\n () => {\n const params = new URLSearchParams(\"\");\n Object.keys(state).forEach((key) => {\n const mapEntry = state[key];\n if (Array.isArray(mapEntry))\n mapEntry.forEach((value) => params.append(key, value));\n else if (removeNullishValues && mapEntry == null)\n params.delete(key);\n else if (removeFalsyValues && !mapEntry)\n params.delete(key);\n else\n params.set(key, mapEntry);\n });\n write(params, false);\n },\n { deep: true }\n );\n function write(params, shouldUpdate) {\n pause();\n if (shouldUpdate)\n updateState(params);\n if (writeMode === \"replace\") {\n window.history.replaceState(\n window.history.state,\n window.document.title,\n window.location.pathname + constructQuery(params)\n );\n } else {\n window.history.pushState(\n window.history.state,\n window.document.title,\n window.location.pathname + constructQuery(params)\n );\n }\n resume();\n }\n function onChanged() {\n if (!enableWrite)\n return;\n write(read(), true);\n }\n const listenerOptions = { passive: true };\n useEventListener(window, \"popstate\", onChanged, listenerOptions);\n if (mode !== \"history\")\n useEventListener(window, \"hashchange\", onChanged, listenerOptions);\n const initial = read();\n if (initial.keys().next().value)\n updateState(initial);\n else\n Object.assign(state, initialValue);\n return state;\n}\n\nfunction useUserMedia(options = {}) {\n var _a, _b;\n const enabled = shallowRef((_a = options.enabled) != null ? _a : false);\n const autoSwitch = shallowRef((_b = options.autoSwitch) != null ? _b : true);\n const constraints = ref(options.constraints);\n const { navigator = defaultNavigator } = options;\n const isSupported = useSupported(() => {\n var _a2;\n return (_a2 = navigator == null ? void 0 : navigator.mediaDevices) == null ? void 0 : _a2.getUserMedia;\n });\n const stream = shallowRef();\n function getDeviceOptions(type) {\n switch (type) {\n case \"video\": {\n if (constraints.value)\n return constraints.value.video || false;\n break;\n }\n case \"audio\": {\n if (constraints.value)\n return constraints.value.audio || false;\n break;\n }\n }\n }\n async function _start() {\n if (!isSupported.value || stream.value)\n return;\n stream.value = await navigator.mediaDevices.getUserMedia({\n video: getDeviceOptions(\"video\"),\n audio: getDeviceOptions(\"audio\")\n });\n return stream.value;\n }\n function _stop() {\n var _a2;\n (_a2 = stream.value) == null ? void 0 : _a2.getTracks().forEach((t) => t.stop());\n stream.value = void 0;\n }\n function stop() {\n _stop();\n enabled.value = false;\n }\n async function start() {\n await _start();\n if (stream.value)\n enabled.value = true;\n return stream.value;\n }\n async function restart() {\n _stop();\n return await start();\n }\n watch(\n enabled,\n (v) => {\n if (v)\n _start();\n else _stop();\n },\n { immediate: true }\n );\n watch(\n constraints,\n () => {\n if (autoSwitch.value && stream.value)\n restart();\n },\n { immediate: true }\n );\n tryOnScopeDispose(() => {\n stop();\n });\n return {\n isSupported,\n stream,\n start,\n stop,\n restart,\n constraints,\n enabled,\n autoSwitch\n };\n}\n\nfunction useVModel(props, key, emit, options = {}) {\n var _a, _b, _c;\n const {\n clone = false,\n passive = false,\n eventName,\n deep = false,\n defaultValue,\n shouldEmit\n } = options;\n const vm = getCurrentInstance();\n const _emit = emit || (vm == null ? void 0 : vm.emit) || ((_a = vm == null ? void 0 : vm.$emit) == null ? void 0 : _a.bind(vm)) || ((_c = (_b = vm == null ? void 0 : vm.proxy) == null ? void 0 : _b.$emit) == null ? void 0 : _c.bind(vm == null ? void 0 : vm.proxy));\n let event = eventName;\n if (!key) {\n key = \"modelValue\";\n }\n event = event || `update:${key.toString()}`;\n const cloneFn = (val) => !clone ? val : typeof clone === \"function\" ? clone(val) : cloneFnJSON(val);\n const getValue = () => isDef(props[key]) ? cloneFn(props[key]) : defaultValue;\n const triggerEmit = (value) => {\n if (shouldEmit) {\n if (shouldEmit(value))\n _emit(event, value);\n } else {\n _emit(event, value);\n }\n };\n if (passive) {\n const initialValue = getValue();\n const proxy = ref(initialValue);\n let isUpdating = false;\n watch(\n () => props[key],\n (v) => {\n if (!isUpdating) {\n isUpdating = true;\n proxy.value = cloneFn(v);\n nextTick(() => isUpdating = false);\n }\n }\n );\n watch(\n proxy,\n (v) => {\n if (!isUpdating && (v !== props[key] || deep))\n triggerEmit(v);\n },\n { deep }\n );\n return proxy;\n } else {\n return computed({\n get() {\n return getValue();\n },\n set(value) {\n triggerEmit(value);\n }\n });\n }\n}\n\nfunction useVModels(props, emit, options = {}) {\n const ret = {};\n for (const key in props) {\n ret[key] = useVModel(\n props,\n key,\n emit,\n options\n );\n }\n return ret;\n}\n\nfunction useVibrate(options) {\n const {\n pattern = [],\n interval = 0,\n navigator = defaultNavigator\n } = options || {};\n const isSupported = useSupported(() => typeof navigator !== \"undefined\" && \"vibrate\" in navigator);\n const patternRef = toRef(pattern);\n let intervalControls;\n const vibrate = (pattern2 = patternRef.value) => {\n if (isSupported.value)\n navigator.vibrate(pattern2);\n };\n const stop = () => {\n if (isSupported.value)\n navigator.vibrate(0);\n intervalControls == null ? void 0 : intervalControls.pause();\n };\n if (interval > 0) {\n intervalControls = useIntervalFn(\n vibrate,\n interval,\n {\n immediate: false,\n immediateCallback: false\n }\n );\n }\n return {\n isSupported,\n pattern,\n intervalControls,\n vibrate,\n stop\n };\n}\n\nfunction useVirtualList(list, options) {\n const { containerStyle, wrapperProps, scrollTo, calculateRange, currentList, containerRef } = \"itemHeight\" in options ? useVerticalVirtualList(options, list) : useHorizontalVirtualList(options, list);\n return {\n list: currentList,\n scrollTo,\n containerProps: {\n ref: containerRef,\n onScroll: () => {\n calculateRange();\n },\n style: containerStyle\n },\n wrapperProps\n };\n}\nfunction useVirtualListResources(list) {\n const containerRef = shallowRef(null);\n const size = useElementSize(containerRef);\n const currentList = ref([]);\n const source = shallowRef(list);\n const state = ref({ start: 0, end: 10 });\n return { state, source, currentList, size, containerRef };\n}\nfunction createGetViewCapacity(state, source, itemSize) {\n return (containerSize) => {\n if (typeof itemSize === \"number\")\n return Math.ceil(containerSize / itemSize);\n const { start = 0 } = state.value;\n let sum = 0;\n let capacity = 0;\n for (let i = start; i < source.value.length; i++) {\n const size = itemSize(i);\n sum += size;\n capacity = i;\n if (sum > containerSize)\n break;\n }\n return capacity - start;\n };\n}\nfunction createGetOffset(source, itemSize) {\n return (scrollDirection) => {\n if (typeof itemSize === \"number\")\n return Math.floor(scrollDirection / itemSize) + 1;\n let sum = 0;\n let offset = 0;\n for (let i = 0; i < source.value.length; i++) {\n const size = itemSize(i);\n sum += size;\n if (sum >= scrollDirection) {\n offset = i;\n break;\n }\n }\n return offset + 1;\n };\n}\nfunction createCalculateRange(type, overscan, getOffset, getViewCapacity, { containerRef, state, currentList, source }) {\n return () => {\n const element = containerRef.value;\n if (element) {\n const offset = getOffset(type === \"vertical\" ? element.scrollTop : element.scrollLeft);\n const viewCapacity = getViewCapacity(type === \"vertical\" ? element.clientHeight : element.clientWidth);\n const from = offset - overscan;\n const to = offset + viewCapacity + overscan;\n state.value = {\n start: from < 0 ? 0 : from,\n end: to > source.value.length ? source.value.length : to\n };\n currentList.value = source.value.slice(state.value.start, state.value.end).map((ele, index) => ({\n data: ele,\n index: index + state.value.start\n }));\n }\n };\n}\nfunction createGetDistance(itemSize, source) {\n return (index) => {\n if (typeof itemSize === \"number\") {\n const size2 = index * itemSize;\n return size2;\n }\n const size = source.value.slice(0, index).reduce((sum, _, i) => sum + itemSize(i), 0);\n return size;\n };\n}\nfunction useWatchForSizes(size, list, containerRef, calculateRange) {\n watch([size.width, size.height, list, containerRef], () => {\n calculateRange();\n });\n}\nfunction createComputedTotalSize(itemSize, source) {\n return computed(() => {\n if (typeof itemSize === \"number\")\n return source.value.length * itemSize;\n return source.value.reduce((sum, _, index) => sum + itemSize(index), 0);\n });\n}\nconst scrollToDictionaryForElementScrollKey = {\n horizontal: \"scrollLeft\",\n vertical: \"scrollTop\"\n};\nfunction createScrollTo(type, calculateRange, getDistance, containerRef) {\n return (index) => {\n if (containerRef.value) {\n containerRef.value[scrollToDictionaryForElementScrollKey[type]] = getDistance(index);\n calculateRange();\n }\n };\n}\nfunction useHorizontalVirtualList(options, list) {\n const resources = useVirtualListResources(list);\n const { state, source, currentList, size, containerRef } = resources;\n const containerStyle = { overflowX: \"auto\" };\n const { itemWidth, overscan = 5 } = options;\n const getViewCapacity = createGetViewCapacity(state, source, itemWidth);\n const getOffset = createGetOffset(source, itemWidth);\n const calculateRange = createCalculateRange(\"horizontal\", overscan, getOffset, getViewCapacity, resources);\n const getDistanceLeft = createGetDistance(itemWidth, source);\n const offsetLeft = computed(() => getDistanceLeft(state.value.start));\n const totalWidth = createComputedTotalSize(itemWidth, source);\n useWatchForSizes(size, list, containerRef, calculateRange);\n const scrollTo = createScrollTo(\"horizontal\", calculateRange, getDistanceLeft, containerRef);\n const wrapperProps = computed(() => {\n return {\n style: {\n height: \"100%\",\n width: `${totalWidth.value - offsetLeft.value}px`,\n marginLeft: `${offsetLeft.value}px`,\n display: \"flex\"\n }\n };\n });\n return {\n scrollTo,\n calculateRange,\n wrapperProps,\n containerStyle,\n currentList,\n containerRef\n };\n}\nfunction useVerticalVirtualList(options, list) {\n const resources = useVirtualListResources(list);\n const { state, source, currentList, size, containerRef } = resources;\n const containerStyle = { overflowY: \"auto\" };\n const { itemHeight, overscan = 5 } = options;\n const getViewCapacity = createGetViewCapacity(state, source, itemHeight);\n const getOffset = createGetOffset(source, itemHeight);\n const calculateRange = createCalculateRange(\"vertical\", overscan, getOffset, getViewCapacity, resources);\n const getDistanceTop = createGetDistance(itemHeight, source);\n const offsetTop = computed(() => getDistanceTop(state.value.start));\n const totalHeight = createComputedTotalSize(itemHeight, source);\n useWatchForSizes(size, list, containerRef, calculateRange);\n const scrollTo = createScrollTo(\"vertical\", calculateRange, getDistanceTop, containerRef);\n const wrapperProps = computed(() => {\n return {\n style: {\n width: \"100%\",\n height: `${totalHeight.value - offsetTop.value}px`,\n marginTop: `${offsetTop.value}px`\n }\n };\n });\n return {\n calculateRange,\n scrollTo,\n containerStyle,\n wrapperProps,\n currentList,\n containerRef\n };\n}\n\nfunction useWakeLock(options = {}) {\n const {\n navigator = defaultNavigator,\n document = defaultDocument\n } = options;\n const requestedType = shallowRef(false);\n const sentinel = shallowRef(null);\n const documentVisibility = useDocumentVisibility({ document });\n const isSupported = useSupported(() => navigator && \"wakeLock\" in navigator);\n const isActive = computed(() => !!sentinel.value && documentVisibility.value === \"visible\");\n if (isSupported.value) {\n useEventListener(sentinel, \"release\", () => {\n var _a, _b;\n requestedType.value = (_b = (_a = sentinel.value) == null ? void 0 : _a.type) != null ? _b : false;\n }, { passive: true });\n whenever(\n () => documentVisibility.value === \"visible\" && (document == null ? void 0 : document.visibilityState) === \"visible\" && requestedType.value,\n (type) => {\n requestedType.value = false;\n forceRequest(type);\n }\n );\n }\n async function forceRequest(type) {\n var _a;\n await ((_a = sentinel.value) == null ? void 0 : _a.release());\n sentinel.value = isSupported.value ? await navigator.wakeLock.request(type) : null;\n }\n async function request(type) {\n if (documentVisibility.value === \"visible\")\n await forceRequest(type);\n else\n requestedType.value = type;\n }\n async function release() {\n requestedType.value = false;\n const s = sentinel.value;\n sentinel.value = null;\n await (s == null ? void 0 : s.release());\n }\n return {\n sentinel,\n isSupported,\n isActive,\n request,\n forceRequest,\n release\n };\n}\n\nfunction useWebNotification(options = {}) {\n const {\n window = defaultWindow,\n requestPermissions: _requestForPermissions = true\n } = options;\n const defaultWebNotificationOptions = options;\n const isSupported = useSupported(() => {\n if (!window || !(\"Notification\" in window))\n return false;\n if (Notification.permission === \"granted\")\n return true;\n try {\n const notification2 = new Notification(\"\");\n notification2.onshow = () => {\n notification2.close();\n };\n } catch (e) {\n if (e.name === \"TypeError\")\n return false;\n }\n return true;\n });\n const permissionGranted = shallowRef(isSupported.value && \"permission\" in Notification && Notification.permission === \"granted\");\n const notification = ref(null);\n const ensurePermissions = async () => {\n if (!isSupported.value)\n return;\n if (!permissionGranted.value && Notification.permission !== \"denied\") {\n const result = await Notification.requestPermission();\n if (result === \"granted\")\n permissionGranted.value = true;\n }\n return permissionGranted.value;\n };\n const { on: onClick, trigger: clickTrigger } = createEventHook();\n const { on: onShow, trigger: showTrigger } = createEventHook();\n const { on: onError, trigger: errorTrigger } = createEventHook();\n const { on: onClose, trigger: closeTrigger } = createEventHook();\n const show = async (overrides) => {\n if (!isSupported.value || !permissionGranted.value)\n return;\n const options2 = Object.assign({}, defaultWebNotificationOptions, overrides);\n notification.value = new Notification(options2.title || \"\", options2);\n notification.value.onclick = clickTrigger;\n notification.value.onshow = showTrigger;\n notification.value.onerror = errorTrigger;\n notification.value.onclose = closeTrigger;\n return notification.value;\n };\n const close = () => {\n if (notification.value)\n notification.value.close();\n notification.value = null;\n };\n if (_requestForPermissions)\n tryOnMounted(ensurePermissions);\n tryOnScopeDispose(close);\n if (isSupported.value && window) {\n const document = window.document;\n useEventListener(document, \"visibilitychange\", (e) => {\n e.preventDefault();\n if (document.visibilityState === \"visible\") {\n close();\n }\n });\n }\n return {\n isSupported,\n notification,\n ensurePermissions,\n permissionGranted,\n show,\n close,\n onClick,\n onShow,\n onError,\n onClose\n };\n}\n\nconst DEFAULT_PING_MESSAGE = \"ping\";\nfunction resolveNestedOptions(options) {\n if (options === true)\n return {};\n return options;\n}\nfunction useWebSocket(url, options = {}) {\n const {\n onConnected,\n onDisconnected,\n onError,\n onMessage,\n immediate = true,\n autoConnect = true,\n autoClose = true,\n protocols = []\n } = options;\n const data = ref(null);\n const status = shallowRef(\"CLOSED\");\n const wsRef = ref();\n const urlRef = toRef(url);\n let heartbeatPause;\n let heartbeatResume;\n let explicitlyClosed = false;\n let retried = 0;\n let bufferedData = [];\n let retryTimeout;\n let pongTimeoutWait;\n const _sendBuffer = () => {\n if (bufferedData.length && wsRef.value && status.value === \"OPEN\") {\n for (const buffer of bufferedData)\n wsRef.value.send(buffer);\n bufferedData = [];\n }\n };\n const resetRetry = () => {\n if (retryTimeout != null) {\n clearTimeout(retryTimeout);\n retryTimeout = void 0;\n }\n };\n const resetHeartbeat = () => {\n clearTimeout(pongTimeoutWait);\n pongTimeoutWait = void 0;\n };\n const close = (code = 1e3, reason) => {\n resetRetry();\n if (!isClient && !isWorker || !wsRef.value)\n return;\n explicitlyClosed = true;\n resetHeartbeat();\n heartbeatPause == null ? void 0 : heartbeatPause();\n wsRef.value.close(code, reason);\n wsRef.value = void 0;\n };\n const send = (data2, useBuffer = true) => {\n if (!wsRef.value || status.value !== \"OPEN\") {\n if (useBuffer)\n bufferedData.push(data2);\n return false;\n }\n _sendBuffer();\n wsRef.value.send(data2);\n return true;\n };\n const _init = () => {\n if (explicitlyClosed || typeof urlRef.value === \"undefined\")\n return;\n const ws = new WebSocket(urlRef.value, protocols);\n wsRef.value = ws;\n status.value = \"CONNECTING\";\n ws.onopen = () => {\n status.value = \"OPEN\";\n retried = 0;\n onConnected == null ? void 0 : onConnected(ws);\n heartbeatResume == null ? void 0 : heartbeatResume();\n _sendBuffer();\n };\n ws.onclose = (ev) => {\n status.value = \"CLOSED\";\n resetHeartbeat();\n heartbeatPause == null ? void 0 : heartbeatPause();\n onDisconnected == null ? void 0 : onDisconnected(ws, ev);\n if (!explicitlyClosed && options.autoReconnect && (wsRef.value == null || ws === wsRef.value)) {\n const {\n retries = -1,\n delay = 1e3,\n onFailed\n } = resolveNestedOptions(options.autoReconnect);\n const checkRetires = typeof retries === \"function\" ? retries : () => typeof retries === \"number\" && (retries < 0 || retried < retries);\n if (checkRetires(retried)) {\n retried += 1;\n retryTimeout = setTimeout(_init, delay);\n } else {\n onFailed == null ? void 0 : onFailed();\n }\n }\n };\n ws.onerror = (e) => {\n onError == null ? void 0 : onError(ws, e);\n };\n ws.onmessage = (e) => {\n if (options.heartbeat) {\n resetHeartbeat();\n const {\n message = DEFAULT_PING_MESSAGE,\n responseMessage = message\n } = resolveNestedOptions(options.heartbeat);\n if (e.data === toValue(responseMessage))\n return;\n }\n data.value = e.data;\n onMessage == null ? void 0 : onMessage(ws, e);\n };\n };\n if (options.heartbeat) {\n const {\n message = DEFAULT_PING_MESSAGE,\n interval = 1e3,\n pongTimeout = 1e3\n } = resolveNestedOptions(options.heartbeat);\n const { pause, resume } = useIntervalFn(\n () => {\n send(toValue(message), false);\n if (pongTimeoutWait != null)\n return;\n pongTimeoutWait = setTimeout(() => {\n close();\n explicitlyClosed = false;\n }, pongTimeout);\n },\n interval,\n { immediate: false }\n );\n heartbeatPause = pause;\n heartbeatResume = resume;\n }\n if (autoClose) {\n if (isClient)\n useEventListener(\"beforeunload\", () => close(), { passive: true });\n tryOnScopeDispose(close);\n }\n const open = () => {\n if (!isClient && !isWorker)\n return;\n close();\n explicitlyClosed = false;\n retried = 0;\n _init();\n };\n if (immediate)\n open();\n if (autoConnect)\n watch(urlRef, open);\n return {\n data,\n status,\n close,\n send,\n open,\n ws: wsRef\n };\n}\n\nfunction useWebWorker(arg0, workerOptions, options) {\n const {\n window = defaultWindow\n } = options != null ? options : {};\n const data = ref(null);\n const worker = shallowRef();\n const post = (...args) => {\n if (!worker.value)\n return;\n worker.value.postMessage(...args);\n };\n const terminate = function terminate2() {\n if (!worker.value)\n return;\n worker.value.terminate();\n };\n if (window) {\n if (typeof arg0 === \"string\")\n worker.value = new Worker(arg0, workerOptions);\n else if (typeof arg0 === \"function\")\n worker.value = arg0();\n else\n worker.value = arg0;\n worker.value.onmessage = (e) => {\n data.value = e.data;\n };\n tryOnScopeDispose(() => {\n if (worker.value)\n worker.value.terminate();\n });\n }\n return {\n data,\n post,\n terminate,\n worker\n };\n}\n\nfunction depsParser(deps, localDeps) {\n if (deps.length === 0 && localDeps.length === 0)\n return \"\";\n const depsString = deps.map((dep) => `'${dep}'`).toString();\n const depsFunctionString = localDeps.filter((dep) => typeof dep === \"function\").map((fn) => {\n const str = fn.toString();\n if (str.trim().startsWith(\"function\")) {\n return str;\n } else {\n const name = fn.name;\n return `const ${name} = ${str}`;\n }\n }).join(\";\");\n const importString = `importScripts(${depsString});`;\n return `${depsString.trim() === \"\" ? \"\" : importString} ${depsFunctionString}`;\n}\n\nfunction jobRunner(userFunc) {\n return (e) => {\n const userFuncArgs = e.data[0];\n return Promise.resolve(userFunc.apply(void 0, userFuncArgs)).then((result) => {\n postMessage([\"SUCCESS\", result]);\n }).catch((error) => {\n postMessage([\"ERROR\", error]);\n });\n };\n}\n\nfunction createWorkerBlobUrl(fn, deps, localDeps) {\n const blobCode = `${depsParser(deps, localDeps)}; onmessage=(${jobRunner})(${fn})`;\n const blob = new Blob([blobCode], { type: \"text/javascript\" });\n const url = URL.createObjectURL(blob);\n return url;\n}\n\nfunction useWebWorkerFn(fn, options = {}) {\n const {\n dependencies = [],\n localDependencies = [],\n timeout,\n window = defaultWindow\n } = options;\n const worker = ref();\n const workerStatus = shallowRef(\"PENDING\");\n const promise = ref({});\n const timeoutId = shallowRef();\n const workerTerminate = (status = \"PENDING\") => {\n if (worker.value && worker.value._url && window) {\n worker.value.terminate();\n URL.revokeObjectURL(worker.value._url);\n promise.value = {};\n worker.value = void 0;\n window.clearTimeout(timeoutId.value);\n workerStatus.value = status;\n }\n };\n workerTerminate();\n tryOnScopeDispose(workerTerminate);\n const generateWorker = () => {\n const blobUrl = createWorkerBlobUrl(fn, dependencies, localDependencies);\n const newWorker = new Worker(blobUrl);\n newWorker._url = blobUrl;\n newWorker.onmessage = (e) => {\n const { resolve = () => {\n }, reject = () => {\n } } = promise.value;\n const [status, result] = e.data;\n switch (status) {\n case \"SUCCESS\":\n resolve(result);\n workerTerminate(status);\n break;\n default:\n reject(result);\n workerTerminate(\"ERROR\");\n break;\n }\n };\n newWorker.onerror = (e) => {\n const { reject = () => {\n } } = promise.value;\n e.preventDefault();\n reject(e);\n workerTerminate(\"ERROR\");\n };\n if (timeout) {\n timeoutId.value = setTimeout(\n () => workerTerminate(\"TIMEOUT_EXPIRED\"),\n timeout\n );\n }\n return newWorker;\n };\n const callWorker = (...fnArgs) => new Promise((resolve, reject) => {\n var _a;\n promise.value = {\n resolve,\n reject\n };\n (_a = worker.value) == null ? void 0 : _a.postMessage([[...fnArgs]]);\n workerStatus.value = \"RUNNING\";\n });\n const workerFn = (...fnArgs) => {\n if (workerStatus.value === \"RUNNING\") {\n console.error(\n \"[useWebWorkerFn] You can only run one instance of the worker at a time.\"\n );\n return Promise.reject();\n }\n worker.value = generateWorker();\n return callWorker(...fnArgs);\n };\n return {\n workerFn,\n workerStatus,\n workerTerminate\n };\n}\n\nfunction useWindowFocus(options = {}) {\n const { window = defaultWindow } = options;\n if (!window)\n return shallowRef(false);\n const focused = shallowRef(window.document.hasFocus());\n const listenerOptions = { passive: true };\n useEventListener(window, \"blur\", () => {\n focused.value = false;\n }, listenerOptions);\n useEventListener(window, \"focus\", () => {\n focused.value = true;\n }, listenerOptions);\n return focused;\n}\n\nfunction useWindowScroll(options = {}) {\n const { window = defaultWindow, ...rest } = options;\n return useScroll(window, rest);\n}\n\nfunction useWindowSize(options = {}) {\n const {\n window = defaultWindow,\n initialWidth = Number.POSITIVE_INFINITY,\n initialHeight = Number.POSITIVE_INFINITY,\n listenOrientation = true,\n includeScrollbar = true,\n type = \"inner\"\n } = options;\n const width = shallowRef(initialWidth);\n const height = shallowRef(initialHeight);\n const update = () => {\n if (window) {\n if (type === \"outer\") {\n width.value = window.outerWidth;\n height.value = window.outerHeight;\n } else if (type === \"visual\" && window.visualViewport) {\n const { width: visualViewportWidth, height: visualViewportHeight, scale } = window.visualViewport;\n width.value = Math.round(visualViewportWidth * scale);\n height.value = Math.round(visualViewportHeight * scale);\n } else if (includeScrollbar) {\n width.value = window.innerWidth;\n height.value = window.innerHeight;\n } else {\n width.value = window.document.documentElement.clientWidth;\n height.value = window.document.documentElement.clientHeight;\n }\n }\n };\n update();\n tryOnMounted(update);\n const listenerOptions = { passive: true };\n useEventListener(\"resize\", update, listenerOptions);\n if (window && type === \"visual\" && window.visualViewport) {\n useEventListener(window.visualViewport, \"resize\", update, listenerOptions);\n }\n if (listenOrientation) {\n const matches = useMediaQuery(\"(orientation: portrait)\");\n watch(matches, () => update());\n }\n return { width, height };\n}\n\nexport { DefaultMagicKeysAliasMap, StorageSerializers, TransitionPresets, computedAsync as asyncComputed, breakpointsAntDesign, breakpointsBootstrapV5, breakpointsElement, breakpointsMasterCss, breakpointsPrimeFlex, breakpointsQuasar, breakpointsSematic, breakpointsTailwind, breakpointsVuetify, breakpointsVuetifyV2, breakpointsVuetifyV3, cloneFnJSON, computedAsync, computedInject, createFetch, createReusableTemplate, createTemplatePromise, createUnrefFn, customStorageEventName, defaultDocument, defaultLocation, defaultNavigator, defaultWindow, executeTransition, formatTimeAgo, getSSRHandler, mapGamepadToXbox360Controller, onClickOutside, onElementRemoval, onKeyDown, onKeyPressed, onKeyStroke, onKeyUp, onLongPress, onStartTyping, provideSSRWidth, setSSRHandler, templateRef, unrefElement, useActiveElement, useAnimate, useAsyncQueue, useAsyncState, useBase64, useBattery, useBluetooth, useBreakpoints, useBroadcastChannel, useBrowserLocation, useCached, useClipboard, useClipboardItems, useCloned, useColorMode, useConfirmDialog, useCountdown, useCssVar, useCurrentElement, useCycleList, useDark, useDebouncedRefHistory, useDeviceMotion, useDeviceOrientation, useDevicePixelRatio, useDevicesList, useDisplayMedia, useDocumentVisibility, useDraggable, useDropZone, useElementBounding, useElementByPoint, useElementHover, useElementSize, useElementVisibility, useEventBus, useEventListener, useEventSource, useEyeDropper, useFavicon, useFetch, useFileDialog, useFileSystemAccess, useFocus, useFocusWithin, useFps, useFullscreen, useGamepad, useGeolocation, useIdle, useImage, useInfiniteScroll, useIntersectionObserver, useKeyModifier, useLocalStorage, useMagicKeys, useManualRefHistory, useMediaControls, useMediaQuery, useMemoize, useMemory, useMounted, useMouse, useMouseInElement, useMousePressed, useMutationObserver, useNavigatorLanguage, useNetwork, useNow, useObjectUrl, useOffsetPagination, useOnline, usePageLeave, useParallax, useParentElement, usePerformanceObserver, usePermission, usePointer, usePointerLock, usePointerSwipe, usePreferredColorScheme, usePreferredContrast, usePreferredDark, usePreferredLanguages, usePreferredReducedMotion, usePreferredReducedTransparency, usePrevious, useRafFn, useRefHistory, useResizeObserver, useSSRWidth, useScreenOrientation, useScreenSafeArea, useScriptTag, useScroll, useScrollLock, useSessionStorage, useShare, useSorted, useSpeechRecognition, useSpeechSynthesis, useStepper, useStorage, useStorageAsync, useStyleTag, useSupported, useSwipe, useTemplateRefsList, useTextDirection, useTextSelection, useTextareaAutosize, useThrottledRefHistory, useTimeAgo, useTimeoutPoll, useTimestamp, useTitle, useTransition, useUrlSearchParams, useUserMedia, useVModel, useVModels, useVibrate, useVirtualList, useWakeLock, useWebNotification, useWebSocket, useWebWorker, useWebWorkerFn, useWindowFocus, useWindowScroll, useWindowSize };\n","\n\n\n \n\n","\n\n\n \n \n \n\n","import{computed as p,ref as s}from\"vue\";function d(u,e,r){let i=s(r==null?void 0:r.value),f=p(()=>u.value!==void 0);return[p(()=>f.value?u.value:i.value),function(t){return f.value||(i.value=t),e==null?void 0:e(t)}]}export{d as useControllable};\n","var r;import*as e from\"vue\";let n=Symbol(\"headlessui.useid\"),o=0;const i=(r=e.useId)!=null?r:function(){return e.inject(n,()=>`${++o}`)()};function s(t){e.provide(n,t)}export{s as provideUseId,i as useId};\n","function o(e){var l;if(e==null||e.value==null)return null;let n=(l=e.value.$el)!=null?l:e.value;return n instanceof Node?n:null}export{o as dom};\n","function u(r,n,...a){if(r in n){let e=n[r];return typeof e==\"function\"?e(...a):e}let t=new Error(`Tried to handle \"${r}\" but there is no handler defined. Only defined handlers are: ${Object.keys(n).map(e=>`\"${e}\"`).join(\", \")}.`);throw Error.captureStackTrace&&Error.captureStackTrace(t,u),t}export{u as match};\n","import{onMounted as i,ref as f,watchEffect as l}from\"vue\";import{dom as o}from'../utils/dom.js';function r(t,e){if(t)return t;let n=e!=null?e:\"button\";if(typeof n==\"string\"&&n.toLowerCase()===\"button\")return\"button\"}function s(t,e){let n=f(r(t.value.type,t.value.as));return i(()=>{n.value=r(t.value.type,t.value.as)}),l(()=>{var u;n.value||o(e)&&o(e)instanceof HTMLButtonElement&&!((u=o(e))!=null&&u.hasAttribute(\"type\"))&&(n.value=\"button\")}),n}export{s as useResolveButtonType};\n","import{cloneVNode as O,Fragment as x,h as k}from\"vue\";import{match as w}from'./match.js';var N=(o=>(o[o.None=0]=\"None\",o[o.RenderStrategy=1]=\"RenderStrategy\",o[o.Static=2]=\"Static\",o))(N||{}),S=(e=>(e[e.Unmount=0]=\"Unmount\",e[e.Hidden=1]=\"Hidden\",e))(S||{});function A({visible:r=!0,features:t=0,ourProps:e,theirProps:o,...i}){var a;let n=j(o,e),l=Object.assign(i,{props:n});if(r||t&2&&n.static)return y(l);if(t&1){let d=(a=n.unmount)==null||a?0:1;return w(d,{[0](){return null},[1](){return y({...i,props:{...n,hidden:!0,style:{display:\"none\"}}})}})}return y(l)}function y({props:r,attrs:t,slots:e,slot:o,name:i}){var m,h;let{as:n,...l}=T(r,[\"unmount\",\"static\"]),a=(m=e.default)==null?void 0:m.call(e,o),d={};if(o){let u=!1,c=[];for(let[p,f]of Object.entries(o))typeof f==\"boolean\"&&(u=!0),f===!0&&c.push(p);u&&(d[\"data-headlessui-state\"]=c.join(\" \"))}if(n===\"template\"){if(a=b(a!=null?a:[]),Object.keys(l).length>0||Object.keys(t).length>0){let[u,...c]=a!=null?a:[];if(!v(u)||c.length>0)throw new Error(['Passing props on \"template\"!',\"\",`The current component <${i} /> is rendering a \"template\".`,\"However we need to passthrough the following props:\",Object.keys(l).concat(Object.keys(t)).map(s=>s.trim()).filter((s,g,R)=>R.indexOf(s)===g).sort((s,g)=>s.localeCompare(g)).map(s=>` - ${s}`).join(`\n`),\"\",\"You can apply a few solutions:\",['Add an `as=\"...\"` prop, to ensure that we render an actual element instead of a \"template\".',\"Render a single element as the child so that we can forward the props onto that element.\"].map(s=>` - ${s}`).join(`\n`)].join(`\n`));let p=j((h=u.props)!=null?h:{},l,d),f=O(u,p,!0);for(let s in p)s.startsWith(\"on\")&&(f.props||(f.props={}),f.props[s]=p[s]);return f}return Array.isArray(a)&&a.length===1?a[0]:a}return k(n,Object.assign({},l,d),{default:()=>a})}function b(r){return r.flatMap(t=>t.type===x?b(t.children):[t])}function j(...r){var o;if(r.length===0)return{};if(r.length===1)return r[0];let t={},e={};for(let i of r)for(let n in i)n.startsWith(\"on\")&&typeof i[n]==\"function\"?((o=e[n])!=null||(e[n]=[]),e[n].push(i[n])):t[n]=i[n];if(t.disabled||t[\"aria-disabled\"])return Object.assign(t,Object.fromEntries(Object.keys(e).map(i=>[i,void 0])));for(let i in e)Object.assign(t,{[i](n,...l){let a=e[i];for(let d of a){if(n instanceof Event&&n.defaultPrevented)return;d(n,...l)}}});return t}function E(r){let t=Object.assign({},r);for(let e in t)t[e]===void 0&&delete t[e];return t}function T(r,t=[]){let e=Object.assign({},r);for(let o of t)o in e&&delete e[o];return e}function v(r){return r==null?!1:typeof r.type==\"string\"||typeof r.type==\"object\"||typeof r.type==\"function\"}export{N as Features,S as RenderStrategy,E as compact,T as omit,A as render};\n","import{defineComponent as a}from\"vue\";import{render as p}from'../utils/render.js';var u=(e=>(e[e.None=1]=\"None\",e[e.Focusable=2]=\"Focusable\",e[e.Hidden=4]=\"Hidden\",e))(u||{});let f=a({name:\"Hidden\",props:{as:{type:[Object,String],default:\"div\"},features:{type:Number,default:1}},setup(t,{slots:n,attrs:i}){return()=>{var r;let{features:e,...d}=t,o={\"aria-hidden\":(e&2)===2?!0:(r=d[\"aria-hidden\"])!=null?r:void 0,hidden:(e&4)===4?!0:void 0,style:{position:\"fixed\",top:1,left:1,width:1,height:0,padding:0,margin:-1,overflow:\"hidden\",clip:\"rect(0, 0, 0, 0)\",whiteSpace:\"nowrap\",borderWidth:\"0\",...(e&4)===4&&(e&2)!==2&&{display:\"none\"}}};return p({ourProps:o,theirProps:d,slot:{},attrs:i,slots:n,name:\"Hidden\"})}}});export{u as Features,f as Hidden};\n","var o=(r=>(r.Space=\" \",r.Enter=\"Enter\",r.Escape=\"Escape\",r.Backspace=\"Backspace\",r.Delete=\"Delete\",r.ArrowLeft=\"ArrowLeft\",r.ArrowUp=\"ArrowUp\",r.ArrowRight=\"ArrowRight\",r.ArrowDown=\"ArrowDown\",r.Home=\"Home\",r.End=\"End\",r.PageUp=\"PageUp\",r.PageDown=\"PageDown\",r.Tab=\"Tab\",r))(o||{});export{o as Keys};\n","function e(i={},s=null,t=[]){for(let[r,n]of Object.entries(i))o(t,f(s,r),n);return t}function f(i,s){return i?i+\"[\"+s+\"]\":s}function o(i,s,t){if(Array.isArray(t))for(let[r,n]of t.entries())o(i,f(s,r.toString()),n);else t instanceof Date?i.push([s,t.toISOString()]):typeof t==\"boolean\"?i.push([s,t?\"1\":\"0\"]):typeof t==\"string\"?i.push([s,t]):typeof t==\"number\"?i.push([s,`${t}`]):t==null?i.push([s,\"\"]):e(t,s,i)}function p(i){var t,r;let s=(t=i==null?void 0:i.form)!=null?t:i.closest(\"form\");if(s){for(let n of s.elements)if(n!==i&&(n.tagName===\"INPUT\"&&n.type===\"submit\"||n.tagName===\"BUTTON\"&&n.type===\"submit\"||n.nodeName===\"INPUT\"&&n.type===\"image\")){n.click();return}(r=s.requestSubmit)==null||r.call(s)}}export{p as attemptSubmit,e as objectToFormEntries};\n","import{computed as x,defineComponent as y,inject as R,onMounted as v,onUnmounted as D,provide as j,ref as p,unref as C}from\"vue\";import{useId as h}from'../../hooks/use-id.js';import{render as b}from'../../utils/render.js';let u=Symbol(\"DescriptionContext\");function w(){let t=R(u,null);if(t===null)throw new Error(\"Missing parent\");return t}function k({slot:t=p({}),name:o=\"Description\",props:s={}}={}){let e=p([]);function r(n){return e.value.push(n),()=>{let i=e.value.indexOf(n);i!==-1&&e.value.splice(i,1)}}return j(u,{register:r,slot:t,name:o,props:s}),x(()=>e.value.length>0?e.value.join(\" \"):void 0)}let K=y({name:\"Description\",props:{as:{type:[Object,String],default:\"p\"},id:{type:String,default:null}},setup(t,{attrs:o,slots:s}){var n;let e=(n=t.id)!=null?n:`headlessui-description-${h()}`,r=w();return v(()=>D(r.register(e))),()=>{let{name:i=\"Description\",slot:l=p({}),props:d={}}=r,{...c}=t,f={...Object.entries(d).reduce((a,[g,m])=>Object.assign(a,{[g]:C(m)}),{}),id:e};return b({ourProps:f,theirProps:c,slot:l.value,attrs:o,slots:s,name:i})}}});export{K as Description,k as useDescriptions};\n","import{computed as v,defineComponent as x,inject as L,onMounted as k,onUnmounted as C,provide as j,ref as y,unref as h}from\"vue\";import{useId as w}from'../../hooks/use-id.js';import{render as R}from'../../utils/render.js';let a=Symbol(\"LabelContext\");function d(){let t=L(a,null);if(t===null){let n=new Error(\"You used a component, but it is not inside a parent.\");throw Error.captureStackTrace&&Error.captureStackTrace(n,d),n}return t}function E({slot:t={},name:n=\"Label\",props:i={}}={}){let e=y([]);function o(r){return e.value.push(r),()=>{let l=e.value.indexOf(r);l!==-1&&e.value.splice(l,1)}}return j(a,{register:o,slot:t,name:n,props:i}),v(()=>e.value.length>0?e.value.join(\" \"):void 0)}let K=x({name:\"Label\",props:{as:{type:[Object,String],default:\"label\"},passive:{type:[Boolean],default:!1},id:{type:String,default:null}},setup(t,{slots:n,attrs:i}){var r;let e=(r=t.id)!=null?r:`headlessui-label-${w()}`,o=d();return k(()=>C(o.register(e))),()=>{let{name:l=\"Label\",slot:p={},props:c={}}=o,{passive:f,...s}=t,u={...Object.entries(c).reduce((b,[g,m])=>Object.assign(b,{[g]:h(m)}),{}),id:e};return f&&(delete u.onClick,delete u.htmlFor,delete s.onClick),R({ourProps:u,theirProps:s,slot:p,attrs:i,slots:n,name:l})}}});export{K as Label,E as useLabels};\n","import{computed as u,defineComponent as v,Fragment as H,h as S,inject as M,onMounted as I,provide as P,ref as w,watch as j}from\"vue\";import{useControllable as G}from'../../hooks/use-controllable.js';import{useId as V}from'../../hooks/use-id.js';import{useResolveButtonType as F}from'../../hooks/use-resolve-button-type.js';import{Features as O,Hidden as A}from'../../internal/hidden.js';import{Keys as g}from'../../keyboard.js';import{dom as N}from'../../utils/dom.js';import{attemptSubmit as $}from'../../utils/form.js';import{compact as U,omit as _,render as k}from'../../utils/render.js';import{Description as q,useDescriptions as z}from'../description/description.js';import{Label as J,useLabels as Q}from'../label/label.js';let C=Symbol(\"GroupContext\"),oe=v({name:\"SwitchGroup\",props:{as:{type:[Object,String],default:\"template\"}},setup(l,{slots:c,attrs:i}){let r=w(null),f=Q({name:\"SwitchLabel\",props:{htmlFor:u(()=>{var t;return(t=r.value)==null?void 0:t.id}),onClick(t){r.value&&(t.currentTarget.tagName===\"LABEL\"&&t.preventDefault(),r.value.click(),r.value.focus({preventScroll:!0}))}}}),p=z({name:\"SwitchDescription\"});return P(C,{switchRef:r,labelledby:f,describedby:p}),()=>k({theirProps:l,ourProps:{},slot:{},slots:c,attrs:i,name:\"SwitchGroup\"})}}),ue=v({name:\"Switch\",emits:{\"update:modelValue\":l=>!0},props:{as:{type:[Object,String],default:\"button\"},modelValue:{type:Boolean,default:void 0},defaultChecked:{type:Boolean,optional:!0},form:{type:String,optional:!0},name:{type:String,optional:!0},value:{type:String,optional:!0},id:{type:String,default:null},disabled:{type:Boolean,default:!1},tabIndex:{type:Number,default:0}},inheritAttrs:!1,setup(l,{emit:c,attrs:i,slots:r,expose:f}){var h;let p=(h=l.id)!=null?h:`headlessui-switch-${V()}`,n=M(C,null),[t,s]=G(u(()=>l.modelValue),e=>c(\"update:modelValue\",e),u(()=>l.defaultChecked));function m(){s(!t.value)}let E=w(null),o=n===null?E:n.switchRef,L=F(u(()=>({as:l.as,type:i.type})),o);f({el:o,$el:o});function D(e){e.preventDefault(),m()}function R(e){e.key===g.Space?(e.preventDefault(),m()):e.key===g.Enter&&$(e.currentTarget)}function x(e){e.preventDefault()}let d=u(()=>{var e,a;return(a=(e=N(o))==null?void 0:e.closest)==null?void 0:a.call(e,\"form\")});return I(()=>{j([d],()=>{if(!d.value||l.defaultChecked===void 0)return;function e(){s(l.defaultChecked)}return d.value.addEventListener(\"reset\",e),()=>{var a;(a=d.value)==null||a.removeEventListener(\"reset\",e)}},{immediate:!0})}),()=>{let{name:e,value:a,form:K,tabIndex:y,...b}=l,T={checked:t.value},B={id:p,ref:o,role:\"switch\",type:L.value,tabIndex:y===-1?0:y,\"aria-checked\":t.value,\"aria-labelledby\":n==null?void 0:n.labelledby.value,\"aria-describedby\":n==null?void 0:n.describedby.value,onClick:D,onKeyup:R,onKeypress:x};return S(H,[e!=null&&t.value!=null?S(A,U({features:O.Hidden,as:\"input\",type:\"checkbox\",hidden:!0,readOnly:!0,checked:t.value,form:K,disabled:b.disabled,name:e,value:a})):null,k({ourProps:B,theirProps:{...i,..._(b,[\"modelValue\",\"defaultChecked\"])},slot:T,attrs:i,slots:r,name:\"Switch\"})])}}}),de=J,ce=q;export{ue as Switch,ce as SwitchDescription,oe as SwitchGroup,de as SwitchLabel};\n","\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {{ label }}\n \n \n \n\n","\n\n\n \n \n \n\n","\n\n\n \n \n \n \n \n \n \n \n \n\n","\n\n\n \n \n \n\n","\n\n\n \n \n \n \n \n \n\n \n \n \n \n\n","\n\n\n \n \n \n\n","\n\n\n \n \n \n\n","\n\n\n \n \n \n \n \n\n","\n\n\n \n \n \n \n \n\n","\n\n\n \n\n","\n\n\n span]:truncate text-start',\n props.class\n )\n \"\n >\n \n \n \n \n \n\n","\n\n\n \n \n \n\n","\n\n\n \n \n \n\n","\n\n\n \n \n \n\n","\n\n\n \n \n \n \n \n \n \n\n","\n\n\n \n \n \n\n","\n\n\n \n \n \n\n","\n\n\n \n \n \n\n","import { cva, VariantProps } from 'class-variance-authority';\n\nexport const sheetVariants = cva(\n 'fixed z-50 bg-background gap-4 shadow-lg transition ease-in-out data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:duration-300 data-[state=open]:duration-500 border-border',\n {\n variants: {\n side: {\n top: 'inset-x-0 top-0 border-b data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top',\n bottom:\n 'inset-x-0 bottom-0 border-t data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom',\n left: 'inset-y-0 left-0 h-full w-3/4 border-r data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left sm:max-w-sm',\n right:\n 'inset-y-0 right-0 h-full w-3/4 border-l data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right sm:max-w-sm',\n },\n padding: {\n none: '',\n md: 'p-6',\n },\n },\n defaultVariants: {\n side: 'right',\n padding: 'md',\n },\n }\n);\n\nexport type SheetVariants = VariantProps;\n","\n\n\n \n \n \n \n \n \n \n \n \n\n","\n\n\n \n \n \n\n","\n\n\n \n \n \n\n","\n\n\n \n \n \n\n","\n\n\n \n \n \n\n","\n\n\n \n \n \n\n","\n\n\n \n \n \n \n \n\n","\n\n\n \n \n \n\n","\n\n\n \n \n \n\n","\n\n\n \n \n \n\n","\n\n\n \n \n \n \n \n\n","\n\n\n \n \n \n\n","\n\n\n \n \n \n\n","var qt = Object.defineProperty;\nvar Jt = (s, a, t) => a in s ? qt(s, a, { enumerable: !0, configurable: !0, writable: !0, value: t }) : s[a] = t;\nvar x = (s, a, t) => Jt(s, typeof a != \"symbol\" ? a + \"\" : a, t);\nimport { ref as f, watchEffect as F, defineComponent as yt, computed as v, onMounted as Ft, watch as Kt, onBeforeUnmount as _t, openBlock as d, createElementBlock as p, normalizeClass as A, normalizeStyle as ct, unref as N, createBlock as X, resolveDynamicComponent as et, renderSlot as D, createCommentVNode as R, mergeProps as ft, Fragment as j, createElementVNode as L, normalizeProps as jt, createTextVNode as Vt, toDisplayString as dt, renderList as mt, useAttrs as te, nextTick as ee, withCtx as U, createVNode as K } from \"vue\";\nfunction Zt(s) {\n if (!s || typeof document > \"u\") return;\n let a = document.head || document.getElementsByTagName(\"head\")[0], t = document.createElement(\"style\");\n t.type = \"text/css\", a.appendChild(t), t.styleSheet ? t.styleSheet.cssText = s : t.appendChild(document.createTextNode(s));\n}\nZt(\":where([data-sonner-toaster][dir=ltr]),:where(html[dir=ltr]){--toast-icon-margin-start:-3px;--toast-icon-margin-end:4px;--toast-svg-margin-start:-1px;--toast-svg-margin-end:0px;--toast-button-margin-start:auto;--toast-button-margin-end:0;--toast-close-button-start:0;--toast-close-button-end:unset;--toast-close-button-transform:translate(-35%, -35%)}:where([data-sonner-toaster][dir=rtl]),:where(html[dir=rtl]){--toast-icon-margin-start:4px;--toast-icon-margin-end:-3px;--toast-svg-margin-start:0px;--toast-svg-margin-end:-1px;--toast-button-margin-start:0;--toast-button-margin-end:auto;--toast-close-button-start:unset;--toast-close-button-end:0;--toast-close-button-transform:translate(35%, -35%)}:where([data-sonner-toaster]){position:fixed;width:var(--width);font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;--gray1:hsl(0, 0%, 99%);--gray2:hsl(0, 0%, 97.3%);--gray3:hsl(0, 0%, 95.1%);--gray4:hsl(0, 0%, 93%);--gray5:hsl(0, 0%, 90.9%);--gray6:hsl(0, 0%, 88.7%);--gray7:hsl(0, 0%, 85.8%);--gray8:hsl(0, 0%, 78%);--gray9:hsl(0, 0%, 56.1%);--gray10:hsl(0, 0%, 52.3%);--gray11:hsl(0, 0%, 43.5%);--gray12:hsl(0, 0%, 9%);--border-radius:8px;box-sizing:border-box;padding:0;margin:0;list-style:none;outline:0;z-index:999999999;transition:transform .4s ease}:where([data-sonner-toaster][data-lifted=true]){transform:translateY(-10px)}@media (hover:none) and (pointer:coarse){:where([data-sonner-toaster][data-lifted=true]){transform:none}}:where([data-sonner-toaster][data-x-position=right]){right:max(var(--offset),env(safe-area-inset-right))}:where([data-sonner-toaster][data-x-position=left]){left:max(var(--offset),env(safe-area-inset-left))}:where([data-sonner-toaster][data-x-position=center]){left:50%;transform:translateX(-50%)}:where([data-sonner-toaster][data-y-position=top]){top:max(var(--offset),env(safe-area-inset-top))}:where([data-sonner-toaster][data-y-position=bottom]){bottom:max(var(--offset),env(safe-area-inset-bottom))}:where([data-sonner-toast]){--y:translateY(100%);--lift-amount:calc(var(--lift) * var(--gap));z-index:var(--z-index);position:absolute;opacity:0;transform:var(--y);filter:blur(0);touch-action:none;transition:transform .4s,opacity .4s,height .4s,box-shadow .2s;box-sizing:border-box;outline:0;overflow-wrap:anywhere}:where([data-sonner-toast][data-styled=true]){padding:16px;background:var(--normal-bg);border:1px solid var(--normal-border);color:var(--normal-text);border-radius:var(--border-radius);box-shadow:0 4px 12px rgba(0,0,0,.1);width:var(--width);font-size:13px;display:flex;align-items:center;gap:6px}:where([data-sonner-toast]:focus-visible){box-shadow:0 4px 12px rgba(0,0,0,.1),0 0 0 2px rgba(0,0,0,.2)}:where([data-sonner-toast][data-y-position=top]){top:0;--y:translateY(-100%);--lift:1;--lift-amount:calc(1 * var(--gap))}:where([data-sonner-toast][data-y-position=bottom]){bottom:0;--y:translateY(100%);--lift:-1;--lift-amount:calc(var(--lift) * var(--gap))}:where([data-sonner-toast]) :where([data-description]){font-weight:400;line-height:1.4;color:inherit}:where([data-sonner-toast]) :where([data-title]){font-weight:500;line-height:1.5;color:inherit}:where([data-sonner-toast]) :where([data-icon]){display:flex;height:16px;width:16px;position:relative;justify-content:flex-start;align-items:center;flex-shrink:0;margin-left:var(--toast-icon-margin-start);margin-right:var(--toast-icon-margin-end)}:where([data-sonner-toast][data-promise=true]) :where([data-icon])>svg{opacity:0;transform:scale(.8);transform-origin:center;animation:sonner-fade-in .3s ease forwards}:where([data-sonner-toast]) :where([data-icon])>*{flex-shrink:0}:where([data-sonner-toast]) :where([data-icon]) svg{margin-left:var(--toast-svg-margin-start);margin-right:var(--toast-svg-margin-end)}:where([data-sonner-toast]) :where([data-content]){display:flex;flex-direction:column;gap:2px}[data-sonner-toast][data-styled=true] [data-button]{border-radius:4px;padding-left:8px;padding-right:8px;height:24px;font-size:12px;color:var(--normal-bg);background:var(--normal-text);margin-left:var(--toast-button-margin-start);margin-right:var(--toast-button-margin-end);border:none;cursor:pointer;outline:0;display:flex;align-items:center;flex-shrink:0;transition:opacity .4s,box-shadow .2s}:where([data-sonner-toast]) :where([data-button]):focus-visible{box-shadow:0 0 0 2px rgba(0,0,0,.4)}:where([data-sonner-toast]) :where([data-button]):first-of-type{margin-left:var(--toast-button-margin-start);margin-right:var(--toast-button-margin-end)}:where([data-sonner-toast]) :where([data-cancel]){color:var(--normal-text);background:rgba(0,0,0,.08)}:where([data-sonner-toast][data-theme=dark]) :where([data-cancel]){background:rgba(255,255,255,.3)}[data-sonner-toast] [data-close-button]{position:absolute;left:var(--toast-close-button-start);right:var(--toast-close-button-end);top:0;height:20px;width:20px;display:flex;justify-content:center;align-items:center;padding:0;color:var(--gray12);border:1px solid var(--gray4);transform:var(--toast-close-button-transform);border-radius:50%;cursor:pointer;z-index:1;transition:opacity .1s,background .2s,border-color .2s}[data-sonner-toast] [data-close-button]{background:var(--gray1)}:where([data-sonner-toast]) :where([data-close-button]):focus-visible{box-shadow:0 4px 12px rgba(0,0,0,.1),0 0 0 2px rgba(0,0,0,.2)}:where([data-sonner-toast]) :where([data-disabled=true]){cursor:not-allowed}[data-sonner-toast]:hover [data-close-button]:hover{background:var(--gray2);border-color:var(--gray5)}:where([data-sonner-toast][data-swiping=true])::before{content:'';position:absolute;left:0;right:0;height:100%;z-index:-1}:where([data-sonner-toast][data-y-position=top][data-swiping=true])::before{bottom:50%;transform:scaleY(3) translateY(50%)}:where([data-sonner-toast][data-y-position=bottom][data-swiping=true])::before{top:50%;transform:scaleY(3) translateY(-50%)}:where([data-sonner-toast][data-swiping=false][data-removed=true])::before{content:'';position:absolute;inset:0;transform:scaleY(2)}:where([data-sonner-toast])::after{content:'';position:absolute;left:0;height:calc(var(--gap) + 1px);bottom:100%;width:100%}:where([data-sonner-toast][data-mounted=true]){--y:translateY(0);opacity:1}:where([data-sonner-toast][data-expanded=false][data-front=false]){--scale:var(--toasts-before) * 0.05 + 1;--y:translateY(calc(var(--lift-amount) * var(--toasts-before))) scale(calc(-1 * var(--scale)));height:var(--front-toast-height)}:where([data-sonner-toast])>*{transition:opacity .4s}:where([data-sonner-toast][data-expanded=false][data-front=false][data-styled=true])>*{opacity:0}:where([data-sonner-toast][data-visible=false]){opacity:0;pointer-events:none}:where([data-sonner-toast][data-mounted=true][data-expanded=true]){--y:translateY(calc(var(--lift) * var(--offset)));height:var(--initial-height)}:where([data-sonner-toast][data-removed=true][data-front=true][data-swipe-out=false]){--y:translateY(calc(var(--lift) * -100%));opacity:0}:where([data-sonner-toast][data-removed=true][data-front=false][data-swipe-out=false][data-expanded=true]){--y:translateY(calc(var(--lift) * var(--offset) + var(--lift) * -100%));opacity:0}:where([data-sonner-toast][data-removed=true][data-front=false][data-swipe-out=false][data-expanded=false]){--y:translateY(40%);opacity:0;transition:transform .5s,opacity .2s}:where([data-sonner-toast][data-removed=true][data-front=false])::before{height:calc(var(--initial-height) + 20%)}[data-sonner-toast][data-swiping=true]{transform:var(--y) translateY(var(--swipe-amount,0));transition:none}[data-sonner-toast][data-swiped=true]{user-select:none}[data-sonner-toast][data-swipe-out=true][data-y-position=bottom],[data-sonner-toast][data-swipe-out=true][data-y-position=top]{animation:swipe-out .2s ease-out forwards}@keyframes swipe-out{from{transform:translateY(calc(var(--lift) * var(--offset) + var(--swipe-amount)));opacity:1}to{transform:translateY(calc(var(--lift) * var(--offset) + var(--swipe-amount) + var(--lift) * -100%));opacity:0}}@media (max-width:600px){[data-sonner-toaster]{position:fixed;--mobile-offset:16px;right:var(--mobile-offset);left:var(--mobile-offset);width:100%}[data-sonner-toaster][dir=rtl]{left:calc(var(--mobile-offset) * -1)}[data-sonner-toaster] [data-sonner-toast]{left:0;right:0;width:calc(100% - var(--mobile-offset) * 2)}[data-sonner-toaster][data-x-position=left]{left:var(--mobile-offset)}[data-sonner-toaster][data-y-position=bottom]{bottom:20px}[data-sonner-toaster][data-y-position=top]{top:20px}[data-sonner-toaster][data-x-position=center]{left:var(--mobile-offset);right:var(--mobile-offset);transform:none}}[data-sonner-toaster][data-theme=light]{--normal-bg:#fff;--normal-border:var(--gray4);--normal-text:var(--gray12);--success-bg:hsl(143, 85%, 96%);--success-border:hsl(145, 92%, 91%);--success-text:hsl(140, 100%, 27%);--info-bg:hsl(208, 100%, 97%);--info-border:hsl(221, 91%, 91%);--info-text:hsl(210, 92%, 45%);--warning-bg:hsl(49, 100%, 97%);--warning-border:hsl(49, 91%, 91%);--warning-text:hsl(31, 92%, 45%);--error-bg:hsl(359, 100%, 97%);--error-border:hsl(359, 100%, 94%);--error-text:hsl(360, 100%, 45%)}[data-sonner-toaster][data-theme=light] [data-sonner-toast][data-invert=true]{--normal-bg:#000;--normal-border:hsl(0, 0%, 20%);--normal-text:var(--gray1)}[data-sonner-toaster][data-theme=dark] [data-sonner-toast][data-invert=true]{--normal-bg:#fff;--normal-border:var(--gray3);--normal-text:var(--gray12)}[data-sonner-toaster][data-theme=dark]{--normal-bg:#000;--normal-border:hsl(0, 0%, 20%);--normal-text:var(--gray1);--success-bg:hsl(150, 100%, 6%);--success-border:hsl(147, 100%, 12%);--success-text:hsl(150, 86%, 65%);--info-bg:hsl(215, 100%, 6%);--info-border:hsl(223, 100%, 12%);--info-text:hsl(216, 87%, 65%);--warning-bg:hsl(64, 100%, 6%);--warning-border:hsl(60, 100%, 12%);--warning-text:hsl(46, 87%, 65%);--error-bg:hsl(358, 76%, 10%);--error-border:hsl(357, 89%, 16%);--error-text:hsl(358, 100%, 81%)}[data-rich-colors=true][data-sonner-toast][data-type=success]{background:var(--success-bg);border-color:var(--success-border);color:var(--success-text)}[data-rich-colors=true][data-sonner-toast][data-type=success] [data-close-button]{background:var(--success-bg);border-color:var(--success-border);color:var(--success-text)}[data-rich-colors=true][data-sonner-toast][data-type=info]{background:var(--info-bg);border-color:var(--info-border);color:var(--info-text)}[data-rich-colors=true][data-sonner-toast][data-type=info] [data-close-button]{background:var(--info-bg);border-color:var(--info-border);color:var(--info-text)}[data-rich-colors=true][data-sonner-toast][data-type=warning]{background:var(--warning-bg);border-color:var(--warning-border);color:var(--warning-text)}[data-rich-colors=true][data-sonner-toast][data-type=warning] [data-close-button]{background:var(--warning-bg);border-color:var(--warning-border);color:var(--warning-text)}[data-rich-colors=true][data-sonner-toast][data-type=error]{background:var(--error-bg);border-color:var(--error-border);color:var(--error-text)}[data-rich-colors=true][data-sonner-toast][data-type=error] [data-close-button]{background:var(--error-bg);border-color:var(--error-border);color:var(--error-text)}.sonner-loading-wrapper{--size:16px;height:var(--size);width:var(--size);position:absolute;inset:0;z-index:10}.sonner-loading-wrapper[data-visible=false]{transform-origin:center;animation:sonner-fade-out .2s ease forwards}.sonner-spinner{position:relative;top:50%;left:50%;height:var(--size);width:var(--size)}.sonner-loading-bar{animation:sonner-spin 1.2s linear infinite;background:var(--gray11);border-radius:6px;height:8%;left:-10%;position:absolute;top:-3.9%;width:24%}.sonner-loading-bar:first-child{animation-delay:-1.2s;transform:rotate(.0001deg) translate(146%)}.sonner-loading-bar:nth-child(2){animation-delay:-1.1s;transform:rotate(30deg) translate(146%)}.sonner-loading-bar:nth-child(3){animation-delay:-1s;transform:rotate(60deg) translate(146%)}.sonner-loading-bar:nth-child(4){animation-delay:-.9s;transform:rotate(90deg) translate(146%)}.sonner-loading-bar:nth-child(5){animation-delay:-.8s;transform:rotate(120deg) translate(146%)}.sonner-loading-bar:nth-child(6){animation-delay:-.7s;transform:rotate(150deg) translate(146%)}.sonner-loading-bar:nth-child(7){animation-delay:-.6s;transform:rotate(180deg) translate(146%)}.sonner-loading-bar:nth-child(8){animation-delay:-.5s;transform:rotate(210deg) translate(146%)}.sonner-loading-bar:nth-child(9){animation-delay:-.4s;transform:rotate(240deg) translate(146%)}.sonner-loading-bar:nth-child(10){animation-delay:-.3s;transform:rotate(270deg) translate(146%)}.sonner-loading-bar:nth-child(11){animation-delay:-.2s;transform:rotate(300deg) translate(146%)}.sonner-loading-bar:nth-child(12){animation-delay:-.1s;transform:rotate(330deg) translate(146%)}@keyframes sonner-fade-in{0%{opacity:0;transform:scale(.8)}100%{opacity:1;transform:scale(1)}}@keyframes sonner-fade-out{0%{opacity:1;transform:scale(1)}100%{opacity:0;transform:scale(.8)}}@keyframes sonner-spin{0%{opacity:1}100%{opacity:.15}}@media (prefers-reduced-motion){.sonner-loading-bar,[data-sonner-toast],[data-sonner-toast]>*{transition:none!important;animation:none!important}}.sonner-loader{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);transform-origin:center;transition:opacity .2s,transform .2s}.sonner-loader[data-visible=false]{opacity:0;transform:scale(.8) translate(-50%,-50%)}\");\nlet vt = 0;\nclass ae {\n constructor() {\n x(this, \"subscribers\");\n x(this, \"toasts\");\n // We use arrow functions to maintain the correct `this` reference\n x(this, \"subscribe\", (a) => (this.subscribers.push(a), () => {\n const t = this.subscribers.indexOf(a);\n this.subscribers.splice(t, 1);\n }));\n x(this, \"publish\", (a) => {\n this.subscribers.forEach((t) => t(a));\n });\n x(this, \"addToast\", (a) => {\n this.publish(a), this.toasts = [...this.toasts, a];\n });\n x(this, \"create\", (a) => {\n var P;\n const { message: t, ...i } = a, n = typeof a.id == \"number\" || a.id && ((P = a.id) == null ? void 0 : P.length) > 0 ? a.id : vt++, g = this.toasts.find((h) => h.id === n), T = a.dismissible === void 0 ? !0 : a.dismissible;\n return g ? this.toasts = this.toasts.map((h) => h.id === n ? (this.publish({ ...h, ...a, id: n, title: t }), {\n ...h,\n ...a,\n id: n,\n dismissible: T,\n title: t\n }) : h) : this.addToast({ title: t, ...i, dismissible: T, id: n }), n;\n });\n x(this, \"dismiss\", (a) => (a || this.toasts.forEach((t) => {\n this.subscribers.forEach(\n (i) => i({ id: t.id, dismiss: !0 })\n );\n }), this.subscribers.forEach((t) => t({ id: a, dismiss: !0 })), a));\n x(this, \"message\", (a, t) => this.create({ ...t, message: a, type: \"default\" }));\n x(this, \"error\", (a, t) => this.create({ ...t, type: \"error\", message: a }));\n x(this, \"success\", (a, t) => this.create({ ...t, type: \"success\", message: a }));\n x(this, \"info\", (a, t) => this.create({ ...t, type: \"info\", message: a }));\n x(this, \"warning\", (a, t) => this.create({ ...t, type: \"warning\", message: a }));\n x(this, \"loading\", (a, t) => this.create({ ...t, type: \"loading\", message: a }));\n x(this, \"promise\", (a, t) => {\n if (!t)\n return;\n let i;\n t.loading !== void 0 && (i = this.create({\n ...t,\n promise: a,\n type: \"loading\",\n message: t.loading,\n description: typeof t.description != \"function\" ? t.description : void 0\n }));\n const n = a instanceof Promise ? a : a();\n let g = i !== void 0, T;\n const P = n.then(async (u) => {\n if (T = [\"resolve\", u], se(u) && !u.ok) {\n g = !1;\n const m = typeof t.error == \"function\" ? await t.error(\n `HTTP error! status: ${u.status}`\n ) : t.error, y = typeof t.description == \"function\" ? (\n // @ts-expect-error\n await t.description(`HTTP error! status: ${u.status}`)\n ) : t.description;\n this.create({ id: i, type: \"error\", message: m, description: y });\n } else if (t.success !== void 0) {\n g = !1;\n const m = typeof t.success == \"function\" ? await t.success(u) : t.success, y = typeof t.description == \"function\" ? await t.description(u) : t.description;\n this.create({ id: i, type: \"success\", message: m, description: y });\n }\n }).catch(async (u) => {\n if (T = [\"reject\", u], t.error !== void 0) {\n g = !1;\n const m = typeof t.error == \"function\" ? await t.error(u) : t.error, y = typeof t.description == \"function\" ? await t.description(\n u\n ) : t.description;\n this.create({ id: i, type: \"error\", message: m, description: y });\n }\n }).finally(() => {\n var u;\n g && (this.dismiss(i), i = void 0), (u = t.finally) == null || u.call(t);\n }), h = () => new Promise(\n (u, m) => P.then(\n () => T[0] === \"reject\" ? m(T[1]) : u(T[1])\n ).catch(m)\n );\n return typeof i != \"string\" && typeof i != \"number\" ? { unwrap: h } : Object.assign(i, { unwrap: h });\n });\n // We can't provide the toast we just created as a prop as we didn't create it yet, so we can create a default toast object, I just don't know how to use function in argument when calling()?\n x(this, \"custom\", (a, t) => {\n const i = (t == null ? void 0 : t.id) || vt++;\n return this.publish({ component: a, id: i, ...t }), i;\n });\n this.subscribers = [], this.toasts = [];\n }\n}\nconst I = new ae();\nfunction oe(s, a) {\n const t = (a == null ? void 0 : a.id) || vt++;\n return I.create({\n message: s,\n id: t,\n type: \"default\",\n ...a\n }), t;\n}\nconst se = (s) => s && typeof s == \"object\" && \"ok\" in s && typeof s.ok == \"boolean\" && \"status\" in s && typeof s.status == \"number\", ne = oe, re = () => I.toasts, Ke = Object.assign(\n ne,\n {\n success: I.success,\n info: I.info,\n warning: I.warning,\n error: I.error,\n custom: I.custom,\n message: I.message,\n promise: I.promise,\n dismiss: I.dismiss,\n loading: I.loading\n },\n {\n getHistory: re\n }\n);\nfunction ut(s) {\n return s.label !== void 0;\n}\nfunction ie() {\n const s = f(!1);\n return F(() => {\n const a = () => {\n s.value = document.hidden;\n };\n return document.addEventListener(\"visibilitychange\", a), () => window.removeEventListener(\"visibilitychange\", a);\n }), {\n isDocumentHidden: s\n };\n}\nfunction Xe() {\n const s = f([]);\n return F((a) => {\n const t = I.subscribe((i) => {\n if (\"dismiss\" in i && i.dismiss)\n return s.value.filter((g) => g.id !== i.id);\n const n = s.value.findIndex(\n (g) => g.id === i.id\n );\n if (n !== -1) {\n const g = [...s.value];\n g[n] = {\n ...g[n],\n ...i\n }, s.value = g;\n } else\n s.value = [i, ...s.value];\n });\n a(() => {\n t();\n });\n }), {\n activeToasts: s\n };\n}\nconst le = [\"aria-live\", \"data-rich-colors\", \"data-styled\", \"data-mounted\", \"data-promise\", \"data-removed\", \"data-visible\", \"data-y-position\", \"data-x-position\", \"data-index\", \"data-front\", \"data-swiping\", \"data-dismissible\", \"data-type\", \"data-invert\", \"data-swipe-out\", \"data-expanded\"], de = [\"aria-label\", \"data-disabled\"], Wt = 4e3, ue = 20, ce = 200, fe = /* @__PURE__ */ yt({\n __name: \"Toast\",\n props: {\n toast: {},\n toasts: {},\n index: {},\n expanded: { type: Boolean },\n invert: { type: Boolean },\n heights: {},\n gap: {},\n position: {},\n visibleToasts: {},\n expandByDefault: { type: Boolean },\n closeButton: { type: Boolean },\n interacting: { type: Boolean },\n style: {},\n cancelButtonStyle: {},\n actionButtonStyle: {},\n duration: {},\n class: {},\n unstyled: { type: Boolean },\n descriptionClass: {},\n loadingIcon: {},\n classes: {},\n icons: {},\n closeButtonAriaLabel: {},\n pauseWhenPageIsHidden: { type: Boolean },\n cn: { type: Function },\n defaultRichColors: { type: Boolean }\n },\n emits: [\"update:heights\", \"removeToast\"],\n setup(s, { emit: a }) {\n const t = s, i = a, n = f(!1), g = f(!1), T = f(!1), P = f(!1), h = f(!1), u = f(0), m = f(0), y = f(\n t.toast.duration || t.duration || Wt\n ), H = f(null), B = f(null), pt = v(() => t.index === 0), ht = v(() => t.index + 1 <= t.visibleToasts), E = v(() => t.toast.type), Y = v(() => t.toast.dismissible !== !1), gt = v(() => t.toast.class || \"\"), o = v(() => t.descriptionClass || \"\"), r = t.toast.style || {}, l = v(\n () => t.heights.findIndex((e) => e.toastId === t.toast.id) || 0\n ), k = v(() => t.toast.closeButton ?? t.closeButton);\n v(\n () => t.toast.duration || t.duration || Wt\n );\n const b = f(0), z = f(0), O = f(null), G = v(() => t.position.split(\"-\")), Q = v(() => G.value[0]), ot = v(() => G.value[1]), st = v(() => typeof t.toast.title != \"string\"), nt = v(\n () => typeof t.toast.description != \"string\"\n ), rt = v(() => t.heights.reduce((e, c, S) => S >= l.value ? e : e + c.height, 0)), it = ie(), lt = v(() => t.toast.invert || t.invert), V = v(() => E.value === \"loading\"), M = v(() => l.value * t.gap + rt.value || 0);\n Ft(() => {\n if (!n.value) return;\n const e = B.value, c = e == null ? void 0 : e.style.height;\n e.style.height = \"auto\";\n const S = e.getBoundingClientRect().height;\n e.style.height = c, m.value = S;\n let C;\n t.heights.find(\n (w) => w.toastId === t.toast.id\n ) ? C = t.heights.map(\n (w) => w.toastId === t.toast.id ? { ...w, height: S } : w\n ) : C = [\n {\n toastId: t.toast.id,\n height: S,\n position: t.toast.position\n },\n ...t.heights\n ], i(\"update:heights\", C);\n });\n function W() {\n g.value = !0, u.value = M.value;\n const e = t.heights.filter(\n (c) => c.toastId !== t.toast.id\n );\n i(\"update:heights\", e), setTimeout(() => {\n i(\"removeToast\", t.toast);\n }, ce);\n }\n function bt() {\n var e, c;\n if (V.value || !Y.value)\n return {};\n W(), (c = (e = t.toast).onDismiss) == null || c.call(e, t.toast);\n }\n function Xt(e) {\n V.value || !Y.value || (H.value = /* @__PURE__ */ new Date(), u.value = M.value, e.target.setPointerCapture(e.pointerId), e.target.tagName !== \"BUTTON\" && (T.value = !0, O.value = { x: e.clientX, y: e.clientY }));\n }\n function Gt() {\n var C, $, w, q, J;\n if (P.value || !Y) return;\n O.value = null;\n const e = Number(\n ((C = B.value) == null ? void 0 : C.style.getPropertyValue(\"--swipe-amount\").replace(\"px\", \"\")) || 0\n ), c = (/* @__PURE__ */ new Date()).getTime() - (($ = H.value) == null ? void 0 : $.getTime()), S = Math.abs(e) / c;\n if (Math.abs(e) >= ue || S > 0.11) {\n u.value = M.value, (q = (w = t.toast).onDismiss) == null || q.call(w, t.toast), W(), P.value = !0, h.value = !1;\n return;\n }\n (J = B.value) == null || J.style.setProperty(\"--swipe-amount\", \"0px\"), T.value = !1;\n }\n function Qt(e) {\n var $, w;\n if (!O.value || !Y.value) return;\n const c = e.clientY - O.value.y, S = (($ = window.getSelection()) == null ? void 0 : $.toString().length) > 0, C = Q.value === \"top\" ? Math.min(0, c) : Math.max(0, c);\n Math.abs(C) > 0 && (h.value = !0), !S && ((w = B.value) == null || w.style.setProperty(\"--swipe-amount\", `${C}px`));\n }\n return F((e) => {\n if (t.toast.promise && E.value === \"loading\" || t.toast.duration === 1 / 0 || t.toast.type === \"loading\")\n return;\n let c;\n const S = () => {\n if (z.value < b.value) {\n const $ = (/* @__PURE__ */ new Date()).getTime() - b.value;\n y.value = y.value - $;\n }\n z.value = (/* @__PURE__ */ new Date()).getTime();\n }, C = () => {\n y.value !== 1 / 0 && (b.value = (/* @__PURE__ */ new Date()).getTime(), c = setTimeout(() => {\n var $, w;\n (w = ($ = t.toast).onAutoClose) == null || w.call($, t.toast), W();\n }, y.value));\n };\n t.expanded || t.interacting || t.pauseWhenPageIsHidden && it ? S() : C(), e(() => {\n clearTimeout(c);\n });\n }), Kt(\n () => t.toast.delete,\n () => {\n t.toast.delete && W();\n },\n {\n deep: !0\n }\n ), Ft(() => {\n if (n.value = !0, B.value) {\n const e = B.value.getBoundingClientRect().height;\n m.value = e;\n const c = [\n { toastId: t.toast.id, height: e, position: t.toast.position },\n ...t.heights\n ];\n i(\"update:heights\", c);\n }\n }), _t(() => {\n if (B.value) {\n const e = t.heights.filter(\n (c) => c.toastId !== t.toast.id\n );\n i(\"update:heights\", e);\n }\n }), (e, c) => {\n var S, C, $, w, q, J, wt, kt, xt, Tt, Bt, St, Ct, $t, It, Et, Pt, Dt, Ht, zt, Mt, Ot, At, Lt, Yt, Nt, Rt;\n return d(), p(\"li\", {\n ref_key: \"toastRef\",\n ref: B,\n \"aria-live\": e.toast.important ? \"assertive\" : \"polite\",\n \"aria-atomic\": \"true\",\n role: \"status\",\n tabindex: \"0\",\n \"data-sonner-toast\": \"true\",\n class: A(\n e.cn(\n t.class,\n gt.value,\n (S = e.classes) == null ? void 0 : S.toast,\n (C = e.toast.classes) == null ? void 0 : C.toast,\n // @ts-ignore\n ($ = e.classes) == null ? void 0 : $[E.value],\n // @ts-ignore\n (q = (w = e.toast) == null ? void 0 : w.classes) == null ? void 0 : q[E.value]\n )\n ),\n \"data-rich-colors\": e.toast.richColors ?? e.defaultRichColors,\n \"data-styled\": !(e.toast.component || (J = e.toast) != null && J.unstyled || e.unstyled),\n \"data-mounted\": n.value,\n \"data-promise\": !!e.toast.promise,\n \"data-removed\": g.value,\n \"data-visible\": ht.value,\n \"data-y-position\": Q.value,\n \"data-x-position\": ot.value,\n \"data-index\": e.index,\n \"data-front\": pt.value,\n \"data-swiping\": T.value,\n \"data-dismissible\": Y.value,\n \"data-type\": E.value,\n \"data-invert\": lt.value,\n \"data-swipe-out\": P.value,\n \"data-expanded\": !!(e.expanded || e.expandByDefault && n.value),\n style: ct({\n \"--index\": e.index,\n \"--toasts-before\": e.index,\n \"--z-index\": e.toasts.length - e.index,\n \"--offset\": `${g.value ? u.value : M.value}px`,\n \"--initial-height\": e.expandByDefault ? \"auto\" : `${m.value}px`,\n ...e.style,\n ...N(r)\n }),\n onPointerdown: Xt,\n onPointerup: Gt,\n onPointermove: Qt\n }, [\n k.value && !e.toast.component ? (d(), p(\"button\", {\n key: 0,\n \"aria-label\": e.closeButtonAriaLabel || \"Close toast\",\n \"data-disabled\": V.value,\n \"data-close-button\": \"true\",\n class: A(e.cn((wt = e.classes) == null ? void 0 : wt.closeButton, (xt = (kt = e.toast) == null ? void 0 : kt.classes) == null ? void 0 : xt.closeButton)),\n onClick: bt\n }, [\n (Tt = e.icons) != null && Tt.close ? (d(), X(et((Bt = e.icons) == null ? void 0 : Bt.close), { key: 0 })) : D(e.$slots, \"close-icon\", { key: 1 })\n ], 10, de)) : R(\"\", !0),\n e.toast.component ? (d(), X(et(e.toast.component), ft({ key: 1 }, e.toast.componentProps, { onCloseToast: bt }), null, 16)) : (d(), p(j, { key: 2 }, [\n E.value !== \"default\" || e.toast.icon || e.toast.promise ? (d(), p(\"div\", {\n key: 0,\n \"data-icon\": \"\",\n class: A(e.cn((St = e.classes) == null ? void 0 : St.icon, ($t = (Ct = e.toast) == null ? void 0 : Ct.classes) == null ? void 0 : $t.icon))\n }, [\n (e.toast.promise || E.value === \"loading\") && !e.toast.icon ? D(e.$slots, \"loading-icon\", { key: 0 }) : R(\"\", !0),\n e.toast.icon ? (d(), X(et(e.toast.icon), { key: 1 })) : (d(), p(j, { key: 2 }, [\n E.value === \"success\" ? D(e.$slots, \"success-icon\", { key: 0 }) : E.value === \"error\" ? D(e.$slots, \"error-icon\", { key: 1 }) : E.value === \"warning\" ? D(e.$slots, \"warning-icon\", { key: 2 }) : E.value === \"info\" ? D(e.$slots, \"info-icon\", { key: 3 }) : R(\"\", !0)\n ], 64))\n ], 2)) : R(\"\", !0),\n L(\"div\", {\n \"data-content\": \"\",\n class: A(e.cn((It = e.classes) == null ? void 0 : It.content, (Pt = (Et = e.toast) == null ? void 0 : Et.classes) == null ? void 0 : Pt.content))\n }, [\n L(\"div\", {\n \"data-title\": \"\",\n class: A(e.cn((Dt = e.classes) == null ? void 0 : Dt.title, (Ht = e.toast.classes) == null ? void 0 : Ht.title))\n }, [\n st.value ? (d(), X(et(e.toast.title), jt(ft({ key: 0 }, e.toast.componentProps)), null, 16)) : (d(), p(j, { key: 1 }, [\n Vt(dt(e.toast.title), 1)\n ], 64))\n ], 2),\n e.toast.description ? (d(), p(\"div\", {\n key: 0,\n \"data-description\": \"\",\n class: A(\n e.cn(\n e.descriptionClass,\n o.value,\n (zt = e.classes) == null ? void 0 : zt.description,\n (Mt = e.toast.classes) == null ? void 0 : Mt.description\n )\n )\n }, [\n nt.value ? (d(), X(et(e.toast.description), jt(ft({ key: 0 }, e.toast.componentProps)), null, 16)) : (d(), p(j, { key: 1 }, [\n Vt(dt(e.toast.description), 1)\n ], 64))\n ], 2)) : R(\"\", !0)\n ], 2),\n e.toast.cancel ? (d(), p(\"button\", {\n key: 1,\n style: ct(e.toast.cancelButtonStyle || e.cancelButtonStyle),\n class: A(e.cn((Ot = e.classes) == null ? void 0 : Ot.cancelButton, (At = e.toast.classes) == null ? void 0 : At.cancelButton)),\n \"data-button\": \"\",\n \"data-cancel\": \"\",\n onClick: c[0] || (c[0] = (Z) => {\n var _, tt;\n N(ut)(e.toast.cancel) && Y.value && ((tt = (_ = e.toast.cancel).onClick) == null || tt.call(_, Z), W());\n })\n }, dt(N(ut)(e.toast.cancel) ? (Lt = e.toast.cancel) == null ? void 0 : Lt.label : e.toast.cancel), 7)) : R(\"\", !0),\n e.toast.action ? (d(), p(\"button\", {\n key: 2,\n style: ct(e.toast.actionButtonStyle || e.actionButtonStyle),\n class: A(e.cn((Yt = e.classes) == null ? void 0 : Yt.actionButton, (Nt = e.toast.classes) == null ? void 0 : Nt.actionButton)),\n \"data-button\": \"\",\n \"data-action\": \"\",\n onClick: c[1] || (c[1] = (Z) => {\n var _, tt;\n N(ut)(e.toast.action) && (Z.defaultPrevented || ((tt = (_ = e.toast.action).onClick) == null || tt.call(_, Z), !Z.defaultPrevented && W()));\n })\n }, dt(N(ut)(e.toast.action) ? (Rt = e.toast.action) == null ? void 0 : Rt.label : e.toast.action), 7)) : R(\"\", !0)\n ], 64))\n ], 46, le);\n };\n }\n}), at = (s, a) => {\n const t = s.__vccOpts || s;\n for (const [i, n] of a)\n t[i] = n;\n return t;\n}, pe = {}, he = {\n xmlns: \"http://www.w3.org/2000/svg\",\n width: \"12\",\n height: \"12\",\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: \"currentColor\",\n \"stoke-width\": \"1.5\",\n \"stroke-linecap\": \"round\",\n \"stroke-linejoin\": \"round\"\n};\nfunction ge(s, a) {\n return d(), p(\"svg\", he, a[0] || (a[0] = [\n L(\"line\", {\n x1: \"18\",\n y1: \"6\",\n x2: \"6\",\n y2: \"18\"\n }, null, -1),\n L(\"line\", {\n x1: \"6\",\n y1: \"6\",\n x2: \"18\",\n y2: \"18\"\n }, null, -1)\n ]));\n}\nconst me = /* @__PURE__ */ at(pe, [[\"render\", ge]]), ve = [\"data-visible\"], ye = { class: \"sonner-spinner\" }, be = /* @__PURE__ */ yt({\n __name: \"Loader\",\n props: {\n visible: { type: Boolean }\n },\n setup(s) {\n const a = Array(12).fill(0);\n return (t, i) => (d(), p(\"div\", {\n class: \"sonner-loading-wrapper\",\n \"data-visible\": t.visible\n }, [\n L(\"div\", ye, [\n (d(!0), p(j, null, mt(N(a), (n) => (d(), p(\"div\", {\n key: `spinner-bar-${n}`,\n class: \"sonner-loading-bar\"\n }))), 128))\n ])\n ], 8, ve));\n }\n}), we = {}, ke = {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 20 20\",\n fill: \"currentColor\",\n height: \"20\",\n width: \"20\"\n};\nfunction xe(s, a) {\n return d(), p(\"svg\", ke, a[0] || (a[0] = [\n L(\"path\", {\n \"fill-rule\": \"evenodd\",\n d: \"M10 18a8 8 0 100-16 8 8 0 000 16zm3.857-9.809a.75.75 0 00-1.214-.882l-3.483 4.79-1.88-1.88a.75.75 0 10-1.06 1.061l2.5 2.5a.75.75 0 001.137-.089l4-5.5z\",\n \"clip-rule\": \"evenodd\"\n }, null, -1)\n ]));\n}\nconst Te = /* @__PURE__ */ at(we, [[\"render\", xe]]), Be = {}, Se = {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 20 20\",\n fill: \"currentColor\",\n height: \"20\",\n width: \"20\"\n};\nfunction Ce(s, a) {\n return d(), p(\"svg\", Se, a[0] || (a[0] = [\n L(\"path\", {\n \"fill-rule\": \"evenodd\",\n d: \"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7-4a1 1 0 11-2 0 1 1 0 012 0zM9 9a.75.75 0 000 1.5h.253a.25.25 0 01.244.304l-.459 2.066A1.75 1.75 0 0010.747 15H11a.75.75 0 000-1.5h-.253a.25.25 0 01-.244-.304l.459-2.066A1.75 1.75 0 009.253 9H9z\",\n \"clip-rule\": \"evenodd\"\n }, null, -1)\n ]));\n}\nconst $e = /* @__PURE__ */ at(Be, [[\"render\", Ce]]), Ie = {}, Ee = {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n fill: \"currentColor\",\n height: \"20\",\n width: \"20\"\n};\nfunction Pe(s, a) {\n return d(), p(\"svg\", Ee, a[0] || (a[0] = [\n L(\"path\", {\n \"fill-rule\": \"evenodd\",\n d: \"M9.401 3.003c1.155-2 4.043-2 5.197 0l7.355 12.748c1.154 2-.29 4.5-2.599 4.5H4.645c-2.309 0-3.752-2.5-2.598-4.5L9.4 3.003zM12 8.25a.75.75 0 01.75.75v3.75a.75.75 0 01-1.5 0V9a.75.75 0 01.75-.75zm0 8.25a.75.75 0 100-1.5.75.75 0 000 1.5z\",\n \"clip-rule\": \"evenodd\"\n }, null, -1)\n ]));\n}\nconst De = /* @__PURE__ */ at(Ie, [[\"render\", Pe]]), He = {}, ze = {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 20 20\",\n fill: \"currentColor\",\n height: \"20\",\n width: \"20\"\n};\nfunction Me(s, a) {\n return d(), p(\"svg\", ze, a[0] || (a[0] = [\n L(\"path\", {\n \"fill-rule\": \"evenodd\",\n d: \"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-8-5a.75.75 0 01.75.75v4.5a.75.75 0 01-1.5 0v-4.5A.75.75 0 0110 5zm0 10a1 1 0 100-2 1 1 0 000 2z\",\n \"clip-rule\": \"evenodd\"\n }, null, -1)\n ]));\n}\nconst Oe = /* @__PURE__ */ at(He, [[\"render\", Me]]), Ae = [\"aria-label\"], Le = [\"dir\", \"data-theme\", \"data-rich-colors\", \"data-y-position\", \"data-x-position\", \"data-lifted\"], Ye = 3, Ut = \"32px\", Ne = 356, Re = 14, Fe = typeof window < \"u\" && typeof document < \"u\";\nfunction je(...s) {\n return s.filter(Boolean).join(\" \");\n}\nconst Ve = /* @__PURE__ */ yt({\n name: \"Toaster\",\n inheritAttrs: !1,\n __name: \"Toaster\",\n props: {\n invert: { type: Boolean, default: !1 },\n theme: { default: \"light\" },\n position: { default: \"bottom-right\" },\n hotkey: { default: () => [\"altKey\", \"KeyT\"] },\n richColors: { type: Boolean, default: !1 },\n expand: { type: Boolean, default: !1 },\n duration: {},\n gap: { default: Re },\n visibleToasts: { default: Ye },\n closeButton: { type: Boolean, default: !1 },\n toastOptions: { default: () => ({}) },\n class: { default: \"\" },\n style: { default: () => ({}) },\n offset: { default: Ut },\n dir: { default: \"auto\" },\n icons: {},\n containerAriaLabel: { default: \"Notifications\" },\n pauseWhenPageIsHidden: { type: Boolean, default: !1 },\n cn: { type: Function, default: je }\n },\n setup(s) {\n const a = s;\n function t() {\n if (typeof window > \"u\" || typeof document > \"u\") return \"ltr\";\n const o = document.documentElement.getAttribute(\"dir\");\n return o === \"auto\" || !o ? window.getComputedStyle(document.documentElement).direction : o;\n }\n const i = te(), n = f([]), g = v(() => (o, r) => n.value.filter(\n (l) => !l.position && r === 0 || l.position === o\n )), T = v(() => {\n const o = n.value.filter((r) => r.position).map((r) => r.position);\n return o.length > 0 ? Array.from(new Set([a.position].concat(o))) : [a.position];\n }), P = f([]), h = f(!1), u = f(!1), m = f(\n a.theme !== \"system\" ? a.theme : typeof window < \"u\" && window.matchMedia && window.matchMedia(\"(prefers-color-scheme: dark)\").matches ? \"dark\" : \"light\"\n ), y = f(null), H = f(null), B = f(!1), pt = a.hotkey.join(\"+\").replace(/Key/g, \"\").replace(/Digit/g, \"\");\n function ht(o) {\n var r;\n (r = n.value.find((l) => l.id === o.id)) != null && r.delete || I.dismiss(o.id), n.value = n.value.filter(({ id: l }) => l !== o.id);\n }\n function E(o) {\n var r, l;\n B.value && !((l = (r = o.currentTarget) == null ? void 0 : r.contains) != null && l.call(r, o.relatedTarget)) && (B.value = !1, H.value && (H.value.focus({ preventScroll: !0 }), H.value = null));\n }\n function Y(o) {\n o.target instanceof HTMLElement && o.target.dataset.dismissible === \"false\" || B.value || (B.value = !0, H.value = o.relatedTarget);\n }\n function gt(o) {\n o.target && o.target instanceof HTMLElement && o.target.dataset.dismissible === \"false\" || (u.value = !0);\n }\n return F((o) => {\n const r = I.subscribe((l) => {\n if (l.dismiss) {\n n.value = n.value.map(\n (k) => k.id === l.id ? { ...k, delete: !0 } : k\n );\n return;\n }\n ee(() => {\n const k = n.value.findIndex(\n (b) => b.id === l.id\n );\n k !== -1 ? n.value = [\n ...n.value.slice(0, k),\n { ...n.value[k], ...l },\n ...n.value.slice(k + 1)\n ] : n.value = [l, ...n.value];\n });\n });\n o(r);\n }), Kt(\n () => a.theme,\n (o) => {\n if (o !== \"system\") {\n m.value = o;\n return;\n }\n if (o === \"system\" && (window.matchMedia && window.matchMedia(\"(prefers-color-scheme: dark)\").matches ? m.value = \"dark\" : m.value = \"light\"), typeof window > \"u\") return;\n const r = window.matchMedia(\"(prefers-color-scheme: dark)\");\n try {\n r.addEventListener(\"change\", ({ matches: l }) => {\n l ? m.value = \"dark\" : m.value = \"light\";\n });\n } catch {\n r.addListener(({ matches: k }) => {\n try {\n k ? m.value = \"dark\" : m.value = \"light\";\n } catch (b) {\n console.error(b);\n }\n });\n }\n }\n ), F(() => {\n y.value && H.value && (H.value.focus({ preventScroll: !0 }), H.value = null, B.value = !1);\n }), F(() => {\n n.value.length <= 1 && (h.value = !1);\n }), F((o) => {\n function r(l) {\n const k = a.hotkey.every(\n (O) => l[O] || l.code === O\n ), b = Array.isArray(y.value) ? y.value[0] : y.value;\n k && (h.value = !0, b == null || b.focus());\n const z = document.activeElement === y.value || (b == null ? void 0 : b.contains(document.activeElement));\n l.code === \"Escape\" && z && (h.value = !1);\n }\n Fe && (document.addEventListener(\"keydown\", r), o(() => {\n document.removeEventListener(\"keydown\", r);\n }));\n }), (o, r) => (d(), p(\"section\", {\n \"aria-label\": `${o.containerAriaLabel} ${N(pt)}`,\n tabIndex: -1,\n \"aria-live\": \"polite\",\n \"aria-relevant\": \"additions text\",\n \"aria-atomic\": \"false\"\n }, [\n (d(!0), p(j, null, mt(T.value, (l, k) => {\n var b;\n return d(), p(\"ol\", ft({\n key: l,\n ref_for: !0,\n ref_key: \"listRef\",\n ref: y,\n \"data-sonner-toaster\": \"\",\n class: a.class,\n dir: o.dir === \"auto\" ? t() : o.dir,\n tabIndex: -1,\n \"data-theme\": o.theme,\n \"data-rich-colors\": o.richColors,\n \"data-y-position\": l.split(\"-\")[0],\n \"data-x-position\": l.split(\"-\")[1],\n \"data-lifted\": h.value && n.value.length > 1 && !o.expand,\n style: {\n \"--front-toast-height\": `${(b = P.value[0]) == null ? void 0 : b.height}px`,\n \"--offset\": typeof o.offset == \"number\" ? `${o.offset}px` : o.offset || Ut,\n \"--width\": `${Ne}px`,\n \"--gap\": `${o.gap}px`,\n ...o.style,\n ...N(i).style\n }\n }, o.$attrs, {\n onBlur: E,\n onFocus: Y,\n onMouseenter: r[1] || (r[1] = () => h.value = !0),\n onMousemove: r[2] || (r[2] = () => h.value = !0),\n onMouseleave: r[3] || (r[3] = () => {\n u.value || (h.value = !1);\n }),\n onPointerdown: gt,\n onPointerup: r[4] || (r[4] = () => u.value = !1)\n }), [\n (d(!0), p(j, null, mt(g.value(l, k), (z, O) => {\n var G, Q, ot, st, nt, rt, it, lt, V;\n return d(), X(fe, {\n key: z.id,\n heights: P.value.filter((M) => M.position === z.position),\n icons: o.icons,\n index: O,\n toast: z,\n defaultRichColors: o.richColors,\n duration: ((G = o.toastOptions) == null ? void 0 : G.duration) ?? o.duration,\n class: A(((Q = o.toastOptions) == null ? void 0 : Q.class) ?? \"\"),\n descriptionClass: (ot = o.toastOptions) == null ? void 0 : ot.descriptionClass,\n invert: o.invert,\n visibleToasts: o.visibleToasts,\n closeButton: ((st = o.toastOptions) == null ? void 0 : st.closeButton) ?? o.closeButton,\n interacting: u.value,\n position: l,\n style: ct((nt = o.toastOptions) == null ? void 0 : nt.style),\n unstyled: (rt = o.toastOptions) == null ? void 0 : rt.unstyled,\n classes: (it = o.toastOptions) == null ? void 0 : it.classes,\n cancelButtonStyle: (lt = o.toastOptions) == null ? void 0 : lt.cancelButtonStyle,\n actionButtonStyle: (V = o.toastOptions) == null ? void 0 : V.actionButtonStyle,\n toasts: n.value.filter((M) => M.position === z.position),\n expandByDefault: o.expand,\n gap: o.gap,\n expanded: h.value,\n pauseWhenPageIsHidden: o.pauseWhenPageIsHidden,\n cn: o.cn,\n \"onUpdate:heights\": r[0] || (r[0] = (M) => {\n P.value = M;\n }),\n onRemoveToast: ht\n }, {\n \"close-icon\": U(() => [\n D(o.$slots, \"close-icon\", {}, () => [\n K(me)\n ])\n ]),\n \"loading-icon\": U(() => [\n D(o.$slots, \"loading-icon\", {}, () => [\n K(be, {\n visible: z.type === \"loading\"\n }, null, 8, [\"visible\"])\n ])\n ]),\n \"success-icon\": U(() => [\n D(o.$slots, \"success-icon\", {}, () => [\n K(Te)\n ])\n ]),\n \"error-icon\": U(() => [\n D(o.$slots, \"error-icon\", {}, () => [\n K(Oe)\n ])\n ]),\n \"warning-icon\": U(() => [\n D(o.$slots, \"warning-icon\", {}, () => [\n K(De)\n ])\n ]),\n \"info-icon\": U(() => [\n D(o.$slots, \"info-icon\", {}, () => [\n K($e)\n ])\n ]),\n _: 2\n }, 1032, [\"heights\", \"icons\", \"index\", \"toast\", \"defaultRichColors\", \"duration\", \"class\", \"descriptionClass\", \"invert\", \"visibleToasts\", \"closeButton\", \"interacting\", \"position\", \"style\", \"unstyled\", \"classes\", \"cancelButtonStyle\", \"actionButtonStyle\", \"toasts\", \"expandByDefault\", \"gap\", \"expanded\", \"pauseWhenPageIsHidden\", \"cn\"]);\n }), 128))\n ], 16, Le);\n }), 128))\n ], 8, Ae));\n }\n}), Ge = {\n install(s) {\n s.component(\"Toaster\", Ve);\n }\n};\nexport {\n Ve as Toaster,\n Ge as default,\n Ke as toast,\n Xe as useVueSonner\n};\n//# sourceMappingURL=vue-sonner.js.map\n","\n\n\n div>svg]:fill-unraid-red-500',\n warning: '[&>div>svg]:fill-yellow-500',\n info: '[&>div>svg]:fill-blue-500',\n },\n }\"\n />\n\n","const KEBAB_REGEX = /\\p{Lu}/gu;\nconst REVERSE_REGEX = /-\\p{Ll}/gu;\n\n/**\n * Transforms a string into kebab-case.\n *\n * @example\n * kebabCase(\"helloWorld\"); // \"hello-world\"\n * kebabCase(\"HelloWorld\"); // \"-hello-world\"\n * kebabCase(\"HelloWorld\", false); // \"hello-world\"\n *\n * @param {string} str The string to transform\n * @param {boolean} keepLeadingDash Whether to keep the leading dash in case the string starts with an uppercase letter (default: true)\n * @returns The kebab-cased string\n */\nconst kebabCase = (str, keepLeadingDash = true) => {\n\tconst result = str.replace(KEBAB_REGEX, (match) => `-${match.toLowerCase()}`);\n\n\tif (keepLeadingDash) {\n\t\treturn result;\n\t}\n\n\tif (result.startsWith(\"-\")) {\n\t\treturn result.slice(1);\n\t}\n};\n\n/**\n * Transforms a kebab-cased string back to the original string.\n *\n * @example\n * kebabCase.reverse(\"hello-world\"); // \"helloWorld\"\n *\n * @param {string} str\n * @returns The original string, with the kebab-case transformation reversed\n */\nkebabCase.reverse = (str) => str.replace(REVERSE_REGEX, (match) => match.slice(1).toUpperCase());\n\nexport default kebabCase;\n","import { defineCustomElement } from 'vue';\nimport '@/styles/index.css';\nimport * as Components from '@/components';\nimport kebabCase from 'kebab-case';\n\nconst debugImports = process.env.NODE_ENV !== 'production';\n\ntype RegisterParams = {\n namePrefix?: string;\n pathToSharedCss?: string;\n};\n\nexport function registerAllComponents(params: RegisterParams = {}) {\n const { namePrefix = 'uui', pathToSharedCss = './src/styles/index.css' } = params;\n Object.entries(Components).forEach(([name, component]) => {\n // add our shared css to each web component\n component.styles ??= [];\n component.styles.unshift(`@import \"${pathToSharedCss}\"`);\n\n // translate ui component names from PascalCase to kebab-case\n let elementName = kebabCase(name);\n if (!elementName) {\n console.log('[register components] Could not translate component name to kebab-case:', name);\n elementName = name;\n }\n elementName = namePrefix + elementName;\n\n // register custom web components\n if (debugImports) {\n console.log(name, elementName, component.styles);\n }\n customElements.define(elementName, defineCustomElement(component));\n });\n}\n"],"names":["makeMap","str","map","key","val","EMPTY_OBJ","EMPTY_ARR","NOOP","NO","isOn","isModelListener","extend","remove","arr","el","i","hasOwnProperty","hasOwn","isArray","isMap","toTypeString","isSet","isFunction","isString","isSymbol","isObject","isPromise","objectToString","value","toRawType","isPlainObject","isIntegerKey","isReservedProp","cacheStringFunction","fn","cache","camelizeRE","camelize","_","c","hyphenateRE","hyphenate","capitalize","toHandlerKey","hasChanged","oldValue","invokeArrayFns","fns","arg","def","obj","writable","looseToNumber","n","toNumber","_globalThis","getGlobalThis","normalizeStyle","res","item","normalized","parseStringStyle","listDelimiterRE","propertyDelimiterRE","styleCommentRE","cssText","ret","tmp","normalizeClass","name","normalizeProps","props","klass","style","specialBooleanAttrs","isSpecialBooleanAttr","includeBooleanAttr","isRef","toDisplayString","replacer","_key","entries","val2","stringifySymbol","v","_a","activeEffectScope","EffectScope","detached","l","currentEffectScope","fromParent","last","effectScope","getCurrentScope","onScopeDispose","failSilently","activeSub","pausedQueueEffects","ReactiveEffect","batch","cleanupEffect","prepareDeps","prevEffect","prevShouldTrack","shouldTrack","cleanupDeps","link","removeSub","isDirty","batchDepth","batchedSub","batchedComputed","sub","isComputed","startBatch","endBatch","e","next","error","err","head","tail","prev","removeDep","refreshComputed","computed","globalVersion","dep","prevSub","soft","nextSub","prevDep","nextDep","trackStack","pauseTracking","resetTracking","cleanup","Link","Dep","debugInfo","addSub","currentTail","targetMap","ITERATE_KEY","MAP_KEY_ITERATE_KEY","ARRAY_ITERATE_KEY","track","target","type","depsMap","trigger","newValue","oldTarget","run","targetIsArray","isArrayIndex","newLength","key2","getDepFromReactive","object","depMap","reactiveReadArray","array","raw","toRaw","isShallow","toReactive","shallowReadArray","arrayInstrumentations","iterator","args","x","thisArg","apply","searchProxy","separator","noTracking","reduce","comparer","self","method","wrapValue","iter","result","arrayProto","wrappedRetFn","needsWrap","methodFn","result2","wrappedFn","index","acc","isProxy","isNonTrackableKeys","builtInSymbols","BaseReactiveHandler","_isReadonly","_isShallow","receiver","isReadonly2","isShallow2","shallowReadonlyMap","readonlyMap","shallowReactiveMap","reactiveMap","readonly","reactive","MutableReactiveHandler","isOldValueReadonly","isReadonly","hadKey","ReadonlyReactiveHandler","mutableHandlers","readonlyHandlers","shallowReactiveHandlers","shallowReadonlyHandlers","toShallow","getProto","createIterableMethod","rawTarget","targetIsMap","isPair","isKeyOnly","innerIterator","wrap","toReadonly","done","createReadonlyMethod","createInstrumentations","shallow","instrumentations","rawKey","has","callback","observed","get","hadItems","createInstrumentationGetter","mutableCollectionHandlers","shallowCollectionHandlers","readonlyCollectionHandlers","shallowReadonlyCollectionHandlers","targetTypeMap","rawType","getTargetType","createReactiveObject","shallowReactive","shallowReadonly","baseHandlers","collectionHandlers","proxyMap","existingProxy","targetType","proxy","isReactive","markRaw","r","ref","createRef","shallowRef","rawValue","RefImpl","useDirectValue","unref","ref2","toValue","source","shallowUnwrapHandlers","proxyRefs","objectWithRefs","CustomRefImpl","factory","set","newVal","customRef","toRefs","propertyToRef","ObjectRefImpl","_object","_defaultValue","GetterRefImpl","_getter","toRef","defaultValue","ComputedRefImpl","setter","isSSR","getterOrOptions","debugOptions","getter","INITIAL_WATCHER_VALUE","cleanupMap","activeWatcher","onWatcherCleanup","cleanupFn","owner","cleanups","watch","cb","options","immediate","deep","once","scheduler","augmentJob","call","reactiveGetter","source2","traverse","effect","boundCleanup","forceTrigger","isMultiSource","s","currentEffect","baseGetter","depth","scope","watchHandle","_cb","job","immediateFirstRun","currentWatcher","cleanup2","seen","callWithErrorHandling","instance","handleError","callWithAsyncErrorHandling","values","throwInDev","contextVNode","errorHandler","throwUnhandledErrorInProduction","cur","exposedInstance","errorInfo","errorCapturedHooks","logError","throwInProd","queue","flushIndex","pendingPostFlushCbs","activePostFlushCbs","postFlushIndex","resolvedPromise","currentFlushPromise","nextTick","p","findInsertionIndex","id","start","end","middle","middleJob","middleJobId","getId","queueJob","jobId","lastJob","queueFlush","flushJobs","queuePostFlushCb","flushPreFlushCbs","flushPostFlushCbs","deduped","a","b","currentRenderingInstance","currentScopeId","setCurrentRenderingInstance","withCtx","ctx","isNonScopedSlot","renderFnWithContext","setBlockTracking","prevInstance","withDirectives","vnode","directives","getComponentPublicInstance","bindings","dir","modifiers","invokeDirectiveHook","prevVNode","oldBindings","binding","hook","TeleportEndKey","isTeleport","isTeleportDisabled","isTeleportDeferred","isTargetSVG","isTargetMathML","resolveTarget","select","targetSelector","TeleportImpl","n1","n2","container","anchor","parentComponent","parentSuspense","namespace","slotScopeIds","optimized","internals","mountChildren","patchChildren","patchBlockChildren","insert","querySelector","createText","createComment","disabled","shapeFlag","children","dynamicChildren","placeholder","mainAnchor","mount","container2","anchor2","mountToTarget","targetAnchor","prepareAnchor","updateCssVars","queuePostRenderEffect","wasDisabled","currentContainer","currentAnchor","traverseStaticChildren","moveTeleport","nextTarget","unmount","hostRemove","doRemove","targetStart","shouldRemove","child","hydrateTeleport","parentAnchor","move","moveType","isReorder","node","nextSibling","parentNode","hydrateChildren","targetNode","Teleport","isDisabled","setTransitionHooks","hooks","defineComponent","extraOptions","useId","getCurrentInstance","markAsyncBoundary","setRef","rawRef","oldRawRef","isUnmount","isAsyncWrapper","refValue","oldRef","refs","setupState","rawSetupState","canSetSetupRef","_isString","_isRef","doSet","existing","isKeepAlive","onActivated","registerKeepAliveHook","onDeactivated","currentInstance","wrappedHook","current","injectHook","injectToKeepAliveRoot","keepAliveRoot","injected","onUnmounted","prepend","reset","setCurrentInstance","createHook","lifecycle","isInSSRComponentSetup","onBeforeMount","onMounted","onBeforeUpdate","onUpdated","onBeforeUnmount","onServerPrefetch","onRenderTriggered","onRenderTracked","onErrorCaptured","COMPONENTS","NULL_DYNAMIC_COMPONENT","resolveDynamicComponent","component","resolveAsset","warnMissing","maybeSelfReference","Component","selfName","getComponentName","resolve","registry","renderList","renderItem","cached","sourceIsArray","sourceIsReactiveArray","keys","renderSlot","slots","fallback","noSlotted","openBlock","createBlock","Fragment","createVNode","slot","validSlotContent","ensureValidVNode","slotKey","rendered","vnodes","isVNode","Comment","toHandlers","preserveCaseIfNecessary","getPublicInstance","isStatefulComponent","publicPropertiesMap","resolveMergedOptions","instanceWatch","hasSetupBinding","state","PublicInstanceProxyHandlers","data","accessCache","appContext","normalizedProps","shouldCacheAccess","publicGetter","cssModule","globalProperties","propsOptions","descriptor","useSlots","getContext","useAttrs","createSetupContext","normalizePropsOrEmits","mergeDefaults","defaults","opt","applyOptions","publicThis","callHook","dataOptions","computedOptions","methods","watchOptions","provideOptions","injectOptions","created","beforeMount","mounted","beforeUpdate","updated","activated","deactivated","beforeDestroy","beforeUnmount","destroyed","unmounted","render","renderTracked","renderTriggered","errorCaptured","serverPrefetch","expose","inheritAttrs","components","filters","resolveInjections","methodHandler","createWatcher","provides","provide","registerLifecycleHook","register","_hook","exposed","checkDuplicateProperties","normalizeInject","inject","h","createPathGetter","handler","base","mixins","extendsOptions","globalMixins","optionMergeStrategies","resolved","m","mergeOptions","to","from","strats","asMixin","strat","internalOptionMergeStrats","mergeDataFn","mergeEmitsOrPropsOptions","mergeObjectOptions","mergeAsArray","mergeWatchOptions","mergeInject","merged","createAppContext","uid$1","createAppAPI","hydrate","rootComponent","rootProps","context","installedPlugins","pluginCleanupFns","isMounted","app","version","plugin","mixin","directive","rootContainer","isHydrate","lastApp","currentApp","parentProvides","treatDefaultAsFactory","internalObjectProto","createInternalObject","isInternalObject","initProps","rawProps","isStateful","attrs","setFullProps","updateProps","rawPrevProps","patchFlag","rawCurrentProps","hasAttrsChanged","propsToUpdate","isEmitListener","camelizedKey","resolvePropValue","kebabKey","needCastKeys","rawCastValues","camelKey","castValues","isAbsent","hasDefault","propsDefaults","mixinPropsCache","normalizePropsOptions","comp","hasExtends","extendProps","raw2","normalizedKey","validatePropName","prop","propType","shouldCast","shouldCastTrue","typeName","isInternalKey","normalizeSlotValue","normalizeVNode","normalizeSlot","rawSlot","normalizeObjectSlots","rawSlots","normalizeVNodeSlots","assignSlots","initSlots","updateSlots","needDeletionCheck","deletionComparisonTarget","queueEffectWithSuspense","createRenderer","baseCreateRenderer","createHydrationFns","hostInsert","hostPatchProp","hostCreateElement","hostCreateText","hostCreateComment","hostSetText","hostSetElementText","hostParentNode","hostNextSibling","hostSetScopeId","hostInsertStaticContent","patch","isSameVNodeType","getNextHostNode","Text","processText","processCommentNode","Static","mountStaticNode","processFragment","processElement","processComponent","moveStaticNode","removeStaticNode","mountElement","patchElement","vnodeHook","transition","dirs","resolveChildrenNamespace","setScopeId","invokeVNodeHook","needCallTransitionHooks","needTransition","scopeId","subTree","isSuspense","parentVNode","cloneIfMounted","oldProps","newProps","toggleRecurse","patchProps","oldChildren","newChildren","fallbackContainer","oldVNode","newVNode","fragmentStartAnchor","fragmentEndAnchor","fragmentSlotScopeIds","mountComponent","updateComponent","initialVNode","createComponentInstance","setupComponent","setupRenderEffect","shouldUpdateComponent","updateComponentPreRender","componentUpdateFn","bu","u","parent","nonHydratedAsyncRoot","locateNonHydratedAsyncRoot","originNext","nextTree","renderComponentRoot","prevTree","updateHOCHostEl","bm","root","isAsyncWrapperVNode","scopedInitialVNode","update","nextVNode","prevProps","c1","prevShapeFlag","c2","patchKeyedChildren","patchUnkeyedChildren","unmountChildren","oldLength","commonLength","nextChild","l2","e1","e2","nextPos","s1","s2","keyToNewIndexMap","j","patched","toBePatched","moved","maxNewIndexSoFar","newIndexToOldIndexMap","prevChild","newIndex","increasingNewIndexSequence","getSequence","nextIndex","leave","delayLeave","afterLeave","remove2","performLeave","cacheIndex","shouldInvokeDirs","shouldInvokeVnodeHook","unmountComponent","removeFragment","performRemove","bum","um","invalidateMount","teleportEnd","isFlushing","currentNamespace","allowed","ch1","ch2","len","arrI","subComponent","ssrContextKey","useSSRContext","watchEffect","doWatch","watchPostEffect","flush","baseWatchOptions","runsImmediately","ssrCleanup","watchStopHandle","isPre","isFirstRun","watch$1","path","segments","getModelModifiers","modelName","emit","event","rawArgs","handlerName","onceHandler","normalizeEmitsOptions","extendEmits","normalizedFromExtend","withProxy","renderCache","fallthroughAttrs","proxyToUse","thisProxy","render2","getFunctionalFallthrough","blockStack","filterModelListeners","cloneVNode","prevChildren","nextProps","nextChildren","emits","hasPropsChanged","dynamicProps","emitsOptions","nextKeys","suspense","currentBlock","disableTracking","closeBlock","isBlockTreeEnabled","inVOnce","setupBlock","createElementBlock","createBaseVNode","normalizeKey","normalizeRef","ref_key","ref_for","isBlockNode","needFullChildrenNormalization","normalizeChildren","_createVNode","cloned","isClassComponent","guardReactiveProps","extraProps","mergeRef","cloneTransition","mergedProps","mergeProps","createTextVNode","text","flag","createStaticVNode","content","numberOfNodes","createCommentVNode","asBlock","slotFlag","toMerge","incoming","emptyAppContext","uid","internalSetCurrentInstance","setInSSRSetupState","g","registerGlobalSetter","setters","unsetCurrentInstance","setupResult","setupStatefulComponent","setup","setupContext","isAsyncSetup","resolvedResult","handleSetupResult","finishComponentSetup","skipOptions","attrsProxyHandlers","includeInferred","computed$1","propsOrChildren","policy","tt","unsafeToTrustedHTML","svgNS","mathmlNS","doc","templateContainer","nodeOps","tag","is","selector","before","template","wrapper","vtcKey","patchClass","isSVG","transitionClasses","vShowOriginalDisplay","vShowHidden","CSS_VAR_TEXT","displayRE","patchStyle","isCssString","hasControlledDisplay","prevStyle","setStyle","cssVarText","importantRE","prefixed","autoPrefix","prefixes","prefixCache","rawName","xlinkNS","patchAttr","isBoolean","patchDOMProp","attrName","needRemove","addEventListener","removeEventListener","veiKey","patchEvent","prevValue","nextValue","invokers","existingInvoker","parseName","invoker","createInvoker","optionsModifierRE","cachedNow","getNow","initialValue","patchStopImmediatePropagation","originalStop","isNativeOn","patchProp","shouldSetAsProp","camelize$1","REMOVAL","defineCustomElement","_createApp","Comp","VueCustomElement","VueElement","initialProps","BaseClass","_def","_props","createApp","mutations","isAsync","styles","numberProps","asyncDef","declaredPropKeys","shouldReflect","shouldUpdate","ob","baseProps","dispatch","nonce","slotName","outlets","o","walker","getModelAssigner","onCompositionStart","onCompositionEnd","assignKey","vModelText","lazy","trim","number","castToNumber","domValue","elValue","systemModifiers","modifierGuards","withModifiers","cacheKey","guard","keyNames","withKeys","eventKey","k","rendererOptions","renderer","ensureRenderer","containerOrSelector","normalizeContainer","resolveRootNamespace","f","clsx","falsyToString","cx","cva","config","_config_compoundVariants","variants","defaultVariants","getVariantClassNames","variant","variantProp","defaultVariantProp","variantKey","propsWithoutUndefined","param","getCompoundVariantClassNames","cvClass","cvClassName","compoundVariantOptions","badgeVariants","__props","badgeClasses","iconSizes","brandButtonVariants","CLASS_PART_SEPARATOR","createClassGroupUtils","classMap","createClassMap","conflictingClassGroups","conflictingClassGroupModifiers","className","classParts","getGroupRecursive","getGroupIdForArbitraryProperty","classGroupId","hasPostfixModifier","conflicts","classPartObject","currentClassPart","nextClassPartObject","classGroupFromNextClassPart","classRest","validator","arbitraryPropertyRegex","arbitraryPropertyClassName","property","theme","prefix","getPrefixedClassGroupEntries","classGroup","processClassesRecursively","classDefinition","classPartObjectToEdit","getPart","isThemeGetter","currentClassPartObject","pathPart","func","classGroupEntries","prefixedClassGroup","createLruCache","maxCacheSize","cacheSize","previousCache","IMPORTANT_MODIFIER","createParseClassName","experimentalParseClassName","isSeparatorSingleCharacter","firstSeparatorCharacter","separatorLength","parseClassName","bracketDepth","modifierStart","postfixModifierPosition","currentCharacter","baseClassNameWithImportantModifier","hasImportantModifier","baseClassName","maybePostfixModifierPosition","sortModifiers","sortedModifiers","unsortedModifiers","modifier","createConfigUtils","SPLIT_CLASSES_REGEX","mergeClassList","classList","configUtils","getClassGroupId","getConflictingClassGroupIds","classGroupsInConflict","classNames","originalClassName","variantModifier","modifierId","classId","conflictGroups","group","twJoin","argument","resolvedValue","string","mix","createTailwindMerge","createConfigFirst","createConfigRest","cacheGet","cacheSet","functionToCall","initTailwindMerge","previousConfig","createConfigCurrent","tailwindMerge","cachedResult","fromTheme","themeGetter","arbitraryValueRegex","fractionRegex","stringLengths","tshirtUnitRegex","lengthUnitRegex","colorFunctionRegex","shadowRegex","imageRegex","isLength","isNumber","isArbitraryLength","getIsArbitraryValue","isLengthOnly","isArbitraryNumber","isInteger","isPercent","isArbitraryValue","isTshirtSize","sizeLabels","isArbitrarySize","isNever","isArbitraryPosition","imageLabels","isArbitraryImage","isImage","isArbitraryShadow","isShadow","isAny","label","testValue","getDefaultConfig","colors","spacing","blur","brightness","borderColor","borderRadius","borderSpacing","borderWidth","contrast","grayscale","hueRotate","invert","gap","gradientColorStops","gradientColorStopPositions","inset","margin","opacity","padding","saturate","scale","sepia","skew","space","translate","getOverscroll","getOverflow","getSpacingWithAutoAndArbitrary","getSpacingWithArbitrary","getLengthWithEmptyAndArbitrary","getNumberWithAutoAndArbitrary","getPositions","getLineStyles","getBlendModes","getAlign","getZeroAndEmpty","getBreaks","getNumberAndArbitrary","twMerge","cn","inputs","classes","iconSize","needsBrandGradientBackground","brandLoadingVariants","markAnimations","GRADIENT_COLORS","gradientColors","buttonVariants","buttonClass","sides","min","max","round","floor","createCoords","oppositeSideMap","oppositeAlignmentMap","clamp","evaluate","getSide","placement","getAlignment","getOppositeAxis","axis","getAxisLength","getSideAxis","getAlignmentAxis","getAlignmentSides","rects","rtl","alignment","alignmentAxis","length","mainAlignmentSide","getOppositePlacement","getExpandedPlacements","oppositePlacement","getOppositeAlignmentPlacement","getSideList","side","isStart","lr","rl","tb","bt","getOppositeAxisPlacements","flipAlignment","direction","list","expandPaddingObject","getPaddingObject","rectToClientRect","rect","y","width","height","computeCoordsFromPlacement","_ref","reference","floating","sideAxis","alignLength","isVertical","commonX","commonY","commonAlign","coords","computePosition","strategy","middleware","platform","validMiddleware","statefulPlacement","middlewareData","resetCount","nextX","nextY","detectOverflow","_await$platform$isEle","elements","boundary","rootBoundary","elementContext","altBoundary","paddingObject","element","clippingClientRect","offsetParent","offsetScale","elementClientRect","arrow","arrowDimensions","isYAxis","minProp","maxProp","clientProp","endDiff","startDiff","arrowOffsetParent","clientSize","centerToReference","largestPossiblePadding","minPadding","maxPadding","min$1","center","offset","shouldAddOffset","alignmentOffset","flip","_middlewareData$arrow","_middlewareData$flip","initialPlacement","checkMainAxis","checkCrossAxis","specifiedFallbackPlacements","fallbackStrategy","fallbackAxisSideDirection","detectOverflowOptions","initialSideAxis","isBasePlacement","fallbackPlacements","hasFallbackAxisSideDirection","placements","overflow","overflows","overflowsData","_middlewareData$flip2","_overflowsData$filter","nextPlacement","resetPlacement","d","_overflowsData$filter2","currentSideAxis","getSideOffsets","isAnySideFullyClipped","hide","offsets","convertValueToCoords","mainAxisMulti","crossAxisMulti","mainAxis","crossAxis","_middlewareData$offse","diffCoords","shift","limiter","mainAxisCoord","crossAxisCoord","minSide","maxSide","limitedCoords","limitShift","rawOffset","computedOffset","limitMin","limitMax","_middlewareData$offse2","isOriginSide","size","_state$middlewareData","_state$middlewareData2","heightSide","widthSide","maximumClippingHeight","maximumClippingWidth","overflowAvailableHeight","overflowAvailableWidth","noShift","availableHeight","availableWidth","xMin","xMax","yMin","yMax","nextDimensions","hasWindow","getNodeName","isNode","getWindow","_node$ownerDocument","getDocumentElement","isElement","isHTMLElement","isShadowRoot","isOverflowElement","overflowX","overflowY","display","getComputedStyle","isTableElement","isTopLayer","isContainingBlock","elementOrCss","webkit","isWebKit","css","getContainingBlock","currentNode","getParentNode","isLastTraversableNode","getNodeScroll","getNearestOverflowAncestor","getOverflowAncestors","traverseIframes","_node$ownerDocument2","scrollableAncestor","isBody","win","frameElement","getFrameElement","getCssDimensions","hasOffset","offsetWidth","offsetHeight","shouldFallback","unwrapElement","getScale","domElement","$","noOffsets","getVisualOffsets","shouldAddVisualOffsets","isFixed","floatingOffsetParent","getBoundingClientRect","includeScale","isFixedStrategy","clientRect","visualOffsets","offsetWin","currentWin","currentIFrame","iframeScale","iframeRect","left","top","getWindowScrollBarX","leftScroll","getHTMLOffset","documentElement","scroll","ignoreScrollbarX","htmlRect","convertOffsetParentRelativeRectToViewportRelativeRect","topLayer","isOffsetParentAnElement","offsetRect","htmlOffset","getClientRects","getDocumentRect","html","body","getViewportRect","visualViewport","visualViewportBased","getInnerBoundingClientRect","getClientRectFromClippingAncestor","clippingAncestor","hasFixedPositionAncestor","stopNode","getClippingElementAncestors","currentContainingBlockComputedStyle","elementIsFixed","computedStyle","currentNodeIsContaining","ancestor","getClippingRect","clippingAncestors","firstClippingAncestor","clippingRect","accRect","getDimensions","getRectRelativeToOffsetParent","isStaticPositioned","getTrueOffsetParent","polyfill","rawOffsetParent","getOffsetParent","svgOffsetParent","getElementRects","getOffsetParentFn","getDimensionsFn","floatingDimensions","isRTL","rectsAreEqual","observeMove","onMove","io","timeoutId","_io","refresh","skip","threshold","elementRectForRootMargin","insetTop","insetRight","insetBottom","insetLeft","isFirstUpdate","handleObserve","ratio","autoUpdate","ancestorScroll","ancestorResize","elementResize","layoutShift","animationFrame","referenceEl","ancestors","cleanupIo","reobserveFrame","resizeObserver","firstEntry","_resizeObserver","frameId","prevRefRect","frameLoop","nextRefRect","_resizeObserver2","offset$1","shift$1","flip$1","size$1","hide$1","arrow$1","limitShift$1","mergedOptions","platformWithCache","computePosition$1","isComponentPublicInstance","getDPR","roundByDPR","dpr","useFloating","whileElementsMountedOption","openOption","_toValue","middlewareOption","placementOption","_toValue2","strategyOption","_toValue3","transformOption","_toValue4","referenceElement","floatingElement","isPositioned","floatingStyles","initialStyles","xVal","yVal","whileElementsMountedCleanup","open","position","attach","renderSlotFragments","Slot","_b","childrens","firstNonCommentChildrenIndex","firstNonCommentChildren","Primitive","asTag","_sfc_main","_ctx","_cache","computedEager","tryOnScopeDispose","createEventHook","off","offFn","createGlobalState","stateFactory","initialized","createSharedComposable","composable","subscribers","dispose","isClient","isDef","toString","noop","isIOS","getIsIOS","createFilterWrapper","filter","reject","debounceFilter","ms","timer","maxTimer","lastRejector","_clearTimeout","timer2","lastInvoker","invoke","duration","toValue$1","maxDuration","getLifeCycleTarget","toArray","refAutoReset","afterMs","resetAfter","useDebounceFn","tryOnBeforeUnmount","useTimeoutFn","interval","immediateCallback","isPending","clear","stop","watchImmediate","watchOnce","defaultWindow","unrefElement","elRef","plain","useEventListener","listener","firstParamTargets","test","stopWatch","raw_targets","raw_events","raw_listeners","raw_options","optionsClone","useMounted","useSupported","createKeyPredicate","keyFilter","onKeyStroke","eventName","passive","dedupe","predicate","cloneFnJSON","useResizeObserver","window","observerOptions","observer","isSupported","targets","_targets","els","_el","useVModel","_c","clone","shouldEmit","vm","_emit","cloneFn","getValue","triggerEmit","isUpdating","serialize","_t","__privateAdd","t","__privateGet","isEqual","object1","object2","isNullish","createContext","providerComponentName","contextName","symbolDescription","injectionKey","contextValue","injectConfigProviderContext","provideConfigProviderContext","useDirection","useForwardExpose","currentRef","currentElement","localExpose","forwardRef","ignoredElement","useArrowNavigation","parentElement","arrowKeyOptions","attributeName","itemsArray","loop","preventScroll","focus","right","up","down","home","goingVertical","goingHorizontal","allCollectionItems","findNextFocusableElement","iterations","adjustedNewIndex","candidate","count","deterministicId","configProviderContext","vue.useId","useStateMachine","initialState","machine","reducer","usePresence","present","stylesRef","prevAnimationNameRef","prevPresentRef","ownerWindow","dispatchCustomEvent","customEvent","currentPresent","prevPresent","hasPresentChanged","prevAnimationName","currentAnimationName","getAnimationName","handleAnimationEnd","isCurrentAnimation","directionName","currentFillMode","handleAnimationStart","watcher","newNode","oldNode","stateWatcher","Presence","forceMount","isPresent","componentName","line","useEmitAsProps","events","ev","useForwardProps","defaultProps","curr","refProps","preservedProps","assignedProps","useForwardPropsEmits","parsedProps","emitsAsProps","injectDialogRootContext","provideDialogRootContext","__emit","triggerElement","contentElement","modal","rootContext","handleAndDispatchCustomEvent","detail","POINTER_DOWN_OUTSIDE","FOCUS_OUTSIDE","isLayerExist","layerElement","targetElement","targetLayer","mainLayer","nodeList","usePointerDownOutside","onPointerDownOutside","ownerDocument","isPointerInsideDOMTree","handleClickRef","handlePointerDown","handleAndDispatchPointerDownOutsideEvent","eventDetail","timerId","useFocusOutside","onFocusOutside","isFocusInsideDOMTree","handleFocus","layers","isBodyPointerEventsDisabled","isPointerEventsEnabled","localLayers","highestLayerWithOutsidePointerEventsDisabled","highestLayerWithOutsidePointerEventsDisabledIndex","pointerDownOutside","isPointerDownOnBranch","branch","focusOutside","originalBodyPointerEvents","getActiveElement","activeElement","ITEM_SELECT","SELECTION_KEYS","FIRST_KEYS","LAST_KEYS","FIRST_LAST_KEYS","SUB_OPEN_KEYS","SUB_CLOSE_KEYS","getOpenState","isIndeterminate","checked","getCheckedState","focusFirst","candidates","PREVIOUSLY_FOCUSED_ELEMENT","isPointInPolygon","point","polygon","inside","xi","yi","xj","yj","isPointerInGraceArea","area","cursorPos","isMouseEvent","AUTOFOCUS_ON_MOUNT","AUTOFOCUS_ON_UNMOUNT","EVENT_OPTIONS","previouslyFocusedElement","getTabbableEdges","getTabbableCandidates","first","findVisible","nodes","isHiddenInput","isHidden","upTo","isSelectableInput","useFocusStackState","createFocusScopesStack","stack","focusScope","activeFocusScope","arrayRemove","updatedArray","removeLinks","items","lastFocusedElementRef","focusScopesStack","handleFocusIn","handleFocusOut","relatedTarget","handleMutations","mutationObserver","mountEvent","unmountEvent","unmountEventHandler","handleKeyDown","isTabKey","focusedElement","_sfc_main$1","$event","_sfc_main$2","getDefaultParent","originalTarget","sampleTarget","counterMap","uncontrolledNodes","markerMap","lockCount","unwrapHost","correctTargets","correctedTarget","applyAttributeToOthers","markerName","controlAttribute","markerCounter","hiddenNodes","elementsToKeep","elementsToStop","keep","attr","alreadyHidden","counterValue","markerValue","hideOthers","activeParentNode","useHideOthers","undo","originalEvent","ctrlLeftClick","hasInteractedOutsideRef","hasPointerDownOutsideRef","prototype","_defu","baseObject","merger","createDefu","arguments_","defu","useBodyLockStackCount","initialOverflow","locked","stopTouchMoveListener","resetBodyStyle","oldVal","verticalScrollbarWidth","defaultConfig","preventDefault","useBodyScrollLock","checkOverflowScroll","ele","rawEvent","_target","usePrimitiveElement","primitiveElement","ENTRY_FOCUS","MAP_KEY_TO_FOCUS_INTENT","getDirectionAwareKey","getFocusIntent","orientation","wrapArray","startIndex","ITEM_DATA_ATTR","useCollection","isProvider","itemMap","getItems","includeDisabledItem","collectionNode","orderedNodes","orderedItems","CollectionSlot","CollectionItem","reactiveItems","itemMapSize","injectRovingFocusGroupContext","provideRovingFocusGroupContext","__expose","propDir","currentTabStopId","isTabbingBackOut","isClickFocus","focusableItemsCount","isKeyboardFocus","entryFocusEvent","activeItem","currentItem","candidateItems","handleMouseUp","tabStopId","useFormControl","valueState","input","inputProto","setValue","inputEvent","changeEvent","parsedValue","parsed","randomId","isCurrentTabStop","handleKeydown","focusIntent","candidateNodes","currentIndex","injectPopperRootContext","providePopperRootContext","useTypeahead","search","itemsWithTextValue","currentMatch","nextMatch","getNextMatch","newItem","normalizedSearch","char","currentMatchIndex","wrappedValues","isNotNull","transformOrigin","isArrowHidden","arrowWidth","arrowHeight","placedSide","placedAlign","getSideAndAlignFromPlacement","noArrowAlign","arrowXCenter","arrowYCenter","align","useSize","entry","width2","height2","borderSizeEntry","borderSize","PopperContentPropsDefaultValue","injectPopperContentContext","providePopperContentContext","floatingRef","desiredPlacement","collisionPadding","computedMiddleware","anchorWidth","anchorHeight","contentStyle","cannotCenterArrow","contentZIndex","arrowX","arrowY","useNonce","useIsUsingKeyboardImpl","isUsingKeyboard","useIsUsingKeyboard","injectMenuContext","provideMenuContext","injectMenuRootContext","provideMenuRootContext","isUsingKeyboardRef","useFocusGuards","edgeGuards","createFocusGuard","injectMenuContentContext","provideMenuContentContext","menuContext","trapFocus","disableOutsidePointerEvents","searchRef","timerRef","pointerGraceTimerRef","pointerGraceIntentRef","pointerDirRef","lastPointerXRef","currentItemId","rovingFocusGroupRef","handleTypeaheadSearch","isPointerMovingToSubmenu","handleMountAutoFocus","isKeyDownInside","isModifierKey","isCharacterKey","collectionItems","handleBlur","handlePointerMove","pointerXHasChanged","newDir","intent","_sfc_main$3","_sfc_main$4","forwarded","contentContext","isFocused","handlePointerLeave","isPointerDownRef","handleSelect","menuItem","itemSelectEvent","isTypingAhead","injectMenuItemIndicatorContext","provideMenuItemIndicatorContext","indicatorContext","modelValue","injectMenuRadioGroupContext","provideMenuRadioGroupContext","payload","radioGroupContext","injectMenuSubContext","provideMenuSubContext","parentMenuContext","menuSubContext","subContentElement","isCloseKey","subContext","openTimerRef","clearOpenTimer","contentRect","rightSide","bleed","contentNearEdge","contentFarEdge","injectDropdownMenuRootContext","provideDropdownMenuRootContext","handleCloseAutoFocus","isRightClick","useGraceArea","containerElement","isPointerInTransit","pointerGraceArea","pointerExit","handleRemoveGraceArea","handleCreateGraceArea","hoverTarget","currentTarget","exitPoint","exitSide","getExitSideFromRect","paddedExitPoints","getPaddedExitPoints","hoverTargetPoints","getPointsFromRect","graceArea","getHull","handleTriggerLeave","handleContentLeave","handleTrackPointerGrace","pointerPosition","hasEnteredTarget","isPointerOutsideGraceArea","isAnotherGraceAreaTrigger","bottom","points","newPoints","getHullPresorted","upperHull","q","lowerHull","injectScrollAreaRootContext","provideScrollAreaRootContext","cornerWidth","cornerHeight","viewport","scrollbarX","scrollbarY","scrollbarXEnabled","scrollbarYEnabled","scrollHideDelay","scrollTop","scrollTopLeft","scrollArea","scrollbar","propNonce","viewportElement","createElementVNode","linearScale","output","getThumbSize","sizes","getThumbRatio","scrollbarPadding","thumbSize","viewportSize","contentSize","addUnlinkedScrollListener","prevPosition","rAF","isHorizontalScroll","isVerticalScroll","getThumbOffsetFromScroll","scrollPos","thumbSizePx","maxScrollPos","maxThumbPos","scrollClampRange","scrollWithoutMomentum","toInt","getScrollPositionFromPointer","pointerPos","pointerOffset","thumbCenter","thumbOffsetFromEnd","minPointerPos","maxPointerPos","scrollRange","isScrollingWithinScrollbarBounds","scrollbarVisibleContext","injectScrollAreaScrollbarVisibleContext","scrollbarContext","injectScrollAreaScrollbarContext","prevWebkitUserSelectRef","rectRef","handleDragScroll","handlePointerUp","handleWheel","isScrollbarWheel","handleSizeChange","_d","_e","scrollbarElement","provideScrollAreaScrollbarVisibleContext","hasThumb","thumbRatio","thumbRef","handleWheelScroll","isShowingScrollbarX","handleThumbDown","handleThumbUp","getScrollPosition","onDragScroll","onThumbPositionChange","onThumbChange","visible","handleResize","isOverflowX","isOverflowY","timeout","handlePointerEnter","onCleanup","timeId","debounceScrollEnd","scrollDirection","prevScrollPos","handleScroll","provideScrollAreaScrollbarContext","isHorizontal","asChild","as","scrollbarContextVisible","thumbRect","thumbElement","removeUnlinkedScrollListenerRef","hasSize","setCornerHeight","setCornerWidth","hasBothScrollbarsVisible","hasCorner","selectElement","selectProto","OPEN_KEYS","CONTENT_MARGIN","valueComparator","currentValue","comparator","compare","_hoisted_1","injectSelectRootContext","provideSelectRootContext","required","multiple","valueElement","triggerPointerDownPosRef","isEmptyModelValue","isFormControl","optionsSet","nativeSelectKey","option","handleValueChange","resetTypeahead","handleOpen","handlePointerOpen","injectSelectItemAlignedPositionContext","provideSelectItemAlignedPositionContext","injectSelectContentContext","shouldExpandOnScrollRef","shouldRepositionRef","contentWrapperElement","selectedItem","selectedItemText","focusSelectedItem","triggerRect","valueNodeRect","itemTextRect","itemTextOffset","leftDelta","minContentWidth","contentWidth","rightEdge","clampedLeft","rightDelta","leftEdge","clampedRight","itemsHeight","contentStyles","contentBorderTopWidth","contentPaddingTop","contentBorderBottomWidth","contentPaddingBottom","fullContentHeight","minContentHeight","viewportStyles","viewportPaddingTop","viewportPaddingBottom","topEdgeToTriggerMiddle","triggerMiddleToBottomEdge","selectedItemHalfHeight","itemOffsetMiddle","contentTopToItemMiddle","itemMiddleToContentBottom","isLastItem","viewportOffsetBottom","clampedTriggerMiddleToBottomEdge","isFirstItem","handleScrollButtonChange","SelectContentDefaultContextValue","provideSelectContentContext","firstValidItemFoundRef","firstSelectedItemInArrayFoundRef","onOpenChange","pointerMoveDelta","pickedProps","forwardedProps","isFirstValidItem","isSelectedItem","fragment","presenceRef","renderPresence","injectSelectItemContext","provideSelectItemContext","isSelected","textValue","textId","SELECT_SELECT","handleSelectCustomEvent","itemContext","injectSelectGroupContext","provideSelectGroupContext","groupContext","itemTextElement","optionProps","alignedPositionContext","prevScrollTopRef","contentWrapper","scrolledBy","cssMinHeight","cssHeight","prevHeight","nextHeight","clampedNextHeight","heightDiff","autoScrollTimerRef","clearAutoScrollTimer","canScrollUp","canScrollDown","maxScroll","selectedLabel","getOption","slotText","injectSwitchRootContext","provideSwitchRootContext","toggleCheck","ariaLabel","injectTabsRootContext","provideTabsRootContext","unmountOnHide","tabsList","makeTriggerId","baseId","makeContentId","triggerId","contentId","isMountAnimationPreventedRef","isAutomaticActivation","TOOLTIP_OPEN","injectTooltipProviderContext","provideTooltipProviderContext","delayDuration","skipDelayDuration","disableHoverableContent","disableClosingTrigger","ignoreNonKeyboardFocus","isOpenDelayed","isPointerInTransitRef","startTimer","clearTimer","injectTooltipRootContext","provideTooltipRootContext","providerContext","disableTooltip","isOpen","wasOpenDelayedRef","stateAttribute","handleClose","handleDelayedOpen","isPointerDown","hasPointerMoveOpened","tooltipListeners","handleClick","defaultSlot","recursiveTextSearch","popperContentProps","restProps","onClose","onPointerExit","toKebabCase","toCamelCase","match","p1","p2","toPascalCase","camelCase","mergeClasses","defaultAttributes","Icon","strokeWidth","absoluteStrokeWidth","color","iconNode","createLucideIcon","iconName","Check","ChevronDown","ChevronRight","ChevronUp","Circle","X","delegatedProps","delegated","useTeleport","teleportTarget","determineTeleportTarget","myModalsComponent","potentialTarget","_openBlock","_createElementBlock","_createElementVNode","e.useId","e.inject","N","S","A","w","T","R","O","E","L","K","C","oe","Q","z","P","ue","V","M","G","F","D","I","B","H","U","de","J","MOBILE_VIEWPORT","getViewport","updateViewport","meta","initialViewport","openListener","opened","sheetVariants","sheetClass","qt","Jt","Zt","vt","ae","se","ne","re","Ke","ut","ie","le","Wt","ce","fe","yt","pt","ht","Y","gt","ot","st","nt","rt","it","lt","Ft","W","Xt","Gt","Qt","Kt","wt","kt","xt","Tt","Bt","St","Ct","$t","It","Et","Pt","Dt","Ht","zt","Mt","Ot","At","Lt","Yt","Nt","Rt","ct","et","ft","jt","Vt","dt","Z","at","pe","he","ge","me","ve","ye","be","mt","we","ke","xe","Te","Be","Se","Ce","$e","Ie","Ee","Pe","De","He","ze","Me","Oe","Ae","Le","Ye","Ut","Ne","Re","Fe","je","Ve","te","ee","toast","KEBAB_REGEX","REVERSE_REGEX","kebabCase","keepLeadingDash","registerAllComponents","params","namePrefix","pathToSharedCss","Components","elementName"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,9,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,172,173,174,175,176,177,178,179,180,181,198,200,201,204,205,206,207,208,209,210,211,212,213,214,215,248,250]} \ No newline at end of file diff --git a/emhttp/plugins/dynamix.my.servers/unraid-components/uui/ui.CaW9jS_X.css b/emhttp/plugins/dynamix.my.servers/unraid-components/uui/ui.CaW9jS_X.css deleted file mode 100644 index 1f29ad0e3..000000000 --- a/emhttp/plugins/dynamix.my.servers/unraid-components/uui/ui.CaW9jS_X.css +++ /dev/null @@ -1 +0,0 @@ -*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:hsl(var(--border))}:before,:after{--tw-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;tab-size:4;font-family:clear-sans,ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}:root{--background: 0 0% 100%;--foreground: 0 0% 3.9%;--muted: 0 0% 96.1%;--muted-foreground: 0 0% 45.1%;--popover: 0 0% 100%;--popover-foreground: 0 0% 3.9%;--card: 0 0% 100%;--card-foreground: 0 0% 3.9%;--border: 0 0% 89.8%;--input: 0 0% 89.8%;--primary: 0 0% 9%;--primary-foreground: 0 0% 98%;--secondary: 0 0% 96.1%;--secondary-foreground: 0 0% 9%;--accent: 0 0% 96.1%;--accent-foreground: 0 0% 9%;--destructive: 0 84.2% 60.2%;--destructive-foreground: 0 0% 98%;--ring: 0 0% 3.9%;--radius: .5rem;--chart-1: 12 76% 61%;--chart-2: 173 58% 39%;--chart-3: 197 37% 24%;--chart-4: 43 74% 66%;--chart-5: 27 87% 67%}.dark{--background: 0 0% 3.9%;--foreground: 0 0% 98%;--muted: 0 0% 14.9%;--muted-foreground: 0 0% 63.9%;--popover: 0 0% 3.9%;--popover-foreground: 0 0% 98%;--card: 0 0% 3.9%;--card-foreground: 0 0% 98%;--border: 0 0% 14.9%;--input: 0 0% 14.9%;--primary: 0 0% 98%;--primary-foreground: 0 0% 9%;--secondary: 0 0% 14.9%;--secondary-foreground: 0 0% 98%;--accent: 0 0% 14.9%;--accent-foreground: 0 0% 98%;--destructive: 0 62.8% 30.6%;--destructive-foreground: 0 0% 98%;--ring: 0 0% 83.1%;--chart-1: 220 70% 50%;--chart-2: 160 60% 45%;--chart-3: 30 80% 55%;--chart-4: 280 65% 60%;--chart-5: 340 75% 55%}*{border-color:hsl(var(--border))}body{background-color:hsl(var(--background));color:hsl(var(--foreground))}.container{width:100%}@media (min-width: 470px){.container{max-width:470px}}@media (min-width: 530px){.container{max-width:530px}}@media (min-width: 640px){.container{max-width:640px}}@media (min-width: 768px){.container{max-width:768px}}@media (min-width: 1024px){.container{max-width:1024px}}@media (min-width: 1280px){.container{max-width:1280px}}@media (min-width: 1536px){.container{max-width:1536px}}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.pointer-events-none{pointer-events:none}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.inset-0{top:0;right:0;bottom:0;left:0}.inset-x-0{left:0;right:0}.inset-y-0{top:0;bottom:0}.-bottom-\[2px\]{bottom:-2px}.-left-\[2px\]{left:-2px}.-right-\[2px\]{right:-2px}.-top-\[2px\]{top:-2px}.bottom-0{bottom:0}.left-0{left:0}.left-2{left:.8rem}.right-0{right:0}.right-4{right:1.6rem}.top-0{top:0}.top-1\/2{top:50%}.top-4{top:1.6rem}.-z-10{z-index:-10}.z-0{z-index:0}.z-50{z-index:50}.-mx-1{margin-left:-.4rem;margin-right:-.4rem}.mx-auto{margin-left:auto;margin-right:auto}.my-1{margin-top:.4rem;margin-bottom:.4rem}.mb-2{margin-bottom:.8rem}.ml-auto{margin-left:auto}.mr-2{margin-right:.8rem}.mt-2{margin-top:.8rem}.block{display:block}.inline-block{display:inline-block}.flex{display:flex}.inline-flex{display:inline-flex}.grid{display:grid}.contents{display:contents}.hidden{display:none}.aspect-\[7\/4\]{aspect-ratio:7/4}.h-10{height:4rem}.h-11{height:4.4rem}.h-12px{height:12px}.h-2{height:.8rem}.h-2\.5{height:1rem}.h-20px{height:20px}.h-24px{height:24px}.h-3\.5{height:1.4rem}.h-4{height:1.6rem}.h-5{height:2rem}.h-6{height:2.4rem}.h-8{height:3.2rem}.h-9{height:3.6rem}.h-\[--reka-select-trigger-height\]{height:var(--reka-select-trigger-height)}.h-full{height:100%}.h-px{height:1px}.h-screen{height:100vh}.max-h-96{max-height:38.4rem}.w-10{width:4rem}.w-11{width:4.4rem}.w-12{width:4.8rem}.w-12px{width:12px}.w-14px{width:14px}.w-16{width:6.4rem}.w-16px{width:16px}.w-2{width:.8rem}.w-2\.5{width:1rem}.w-20{width:8rem}.w-20px{width:20px}.w-24px{width:24px}.w-3\.5{width:1.4rem}.w-3\/4{width:75%}.w-4{width:1.6rem}.w-5{width:2rem}.w-72{width:28.8rem}.w-8{width:3.2rem}.w-\[180px\]{width:180px}.w-\[200px\]{width:200px}.w-\[300px\]{width:300px}.w-\[400px\]{width:400px}.w-\[44px\]{width:44px}.w-full{width:100%}.min-w-32{min-width:12.8rem}.min-w-\[--reka-select-trigger-width\]{min-width:var(--reka-select-trigger-width)}.max-w-1024px{max-width:1024px}.max-w-2xl{max-width:42rem}.max-w-md{max-width:28rem}.flex-1{flex:1 1 0%}.flex-shrink-0,.shrink-0{flex-shrink:0}.-translate-y-1\/2{--tw-translate-y: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-0{--tw-translate-x: 0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-20px{--tw-translate-x: 20px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes mark-2{50%{transform:translateY(-40px)}to{transform:translateY(0)}}.animate-mark-2{animation:mark-2 1.5s ease infinite}@keyframes mark-3{50%{transform:translateY(-62px)}to{transform:translateY(0)}}.animate-mark-3{animation:mark-3 1.5s ease infinite}@keyframes mark-6{50%{transform:translateY(40px)}to{transform:translateY(0)}}.animate-mark-6{animation:mark-6 1.5s ease infinite}@keyframes mark-7{50%{transform:translateY(62px)}to{transform:translateY(0)}}.animate-mark-7{animation:mark-7 1.5s ease infinite}@keyframes pulse{50%{opacity:.5}}.animate-pulse{animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}@keyframes spin{to{transform:rotate(360deg)}}.animate-spin{animation:spin 1s linear infinite}.cursor-default{cursor:default}.cursor-pointer{cursor:pointer}.touch-none{touch-action:none}.select-none{-webkit-user-select:none;user-select:none}.flex-row{flex-direction:row}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.items-start{align-items:flex-start}.items-center{align-items:center}.justify-start{justify-content:flex-start}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-1{gap:.4rem}.gap-1\.5{gap:.6rem}.gap-16px{gap:16px}.gap-2{gap:.8rem}.gap-3{gap:1.2rem}.gap-4{gap:1.6rem}.gap-4px{gap:4px}.gap-8px{gap:8px}.gap-y-2{row-gap:.8rem}.gap-y-24px{row-gap:24px}.space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(.8rem * var(--tw-space-x-reverse));margin-left:calc(.8rem * calc(1 - var(--tw-space-x-reverse)))}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.4rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.4rem * var(--tw-space-y-reverse))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.8rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.8rem * var(--tw-space-y-reverse))}.space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1.2rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.2rem * var(--tw-space-y-reverse))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1.6rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.6rem * var(--tw-space-y-reverse))}.overflow-hidden{overflow:hidden}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.whitespace-nowrap{white-space:nowrap}.rounded{border-radius:.4rem}.rounded-\[inherit\]{border-radius:inherit}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:var(--radius)}.rounded-md{border-radius:calc(var(--radius) - 2px)}.rounded-sm{border-radius:calc(var(--radius) - 4px)}.border{border-width:1px}.border-2{border-width:2px}.border-b{border-bottom-width:1px}.border-l{border-left-width:1px}.border-r{border-right-width:1px}.border-t{border-top-width:1px}.border-solid{border-style:solid}.border-black{--tw-border-opacity: 1;border-color:rgb(28 27 27 / var(--tw-border-opacity, 1))}.border-border{border-color:hsl(var(--border))}.border-current{border-color:currentColor}.border-input{border-color:hsl(var(--input))}.border-muted{border-color:hsl(var(--muted))}.border-orange{--tw-border-opacity: 1;border-color:rgb(255 140 47 / var(--tw-border-opacity, 1))}.border-primary{border-color:hsl(var(--primary))}.border-transparent{border-color:transparent}.border-unraid-red{--tw-border-opacity: 1;border-color:rgb(226 40 40 / var(--tw-border-opacity, 1))}.border-white{--tw-border-opacity: 1;border-color:rgb(255 255 255 / var(--tw-border-opacity, 1))}.border-yellow-100{--tw-border-opacity: 1;border-color:rgb(254 249 195 / var(--tw-border-opacity, 1))}.border-e-transparent{border-inline-end-color:transparent}.border-l-transparent{border-left-color:transparent}.border-t-transparent{border-top-color:transparent}.bg-background{background-color:hsl(var(--background))}.bg-black{--tw-bg-opacity: 1;background-color:rgb(28 27 27 / var(--tw-bg-opacity, 1))}.bg-black\/80{background-color:#1c1b1bcc}.bg-blue-100{--tw-bg-opacity: 1;background-color:rgb(219 234 254 / var(--tw-bg-opacity, 1))}.bg-border{background-color:hsl(var(--border))}.bg-current{background-color:currentColor}.bg-destructive{background-color:hsl(var(--destructive))}.bg-gray-200{--tw-bg-opacity: 1;background-color:rgb(229 231 235 / var(--tw-bg-opacity, 1))}.bg-gray-300{--tw-bg-opacity: 1;background-color:rgb(209 213 219 / var(--tw-bg-opacity, 1))}.bg-green-200{--tw-bg-opacity: 1;background-color:rgb(187 247 208 / var(--tw-bg-opacity, 1))}.bg-green-500{--tw-bg-opacity: 1;background-color:rgb(34 197 94 / var(--tw-bg-opacity, 1))}.bg-grey{--tw-bg-opacity: 1;background-color:rgb(224 224 224 / var(--tw-bg-opacity, 1))}.bg-indigo-100{--tw-bg-opacity: 1;background-color:rgb(224 231 255 / var(--tw-bg-opacity, 1))}.bg-input{background-color:hsl(var(--input))}.bg-muted{background-color:hsl(var(--muted))}.bg-muted\/20{background-color:hsl(var(--muted) / .2)}.bg-neutral-900{--tw-bg-opacity: 1;background-color:rgb(23 23 23 / var(--tw-bg-opacity, 1))}.bg-orange{--tw-bg-opacity: 1;background-color:rgb(255 140 47 / var(--tw-bg-opacity, 1))}.bg-pink-100{--tw-bg-opacity: 1;background-color:rgb(252 231 243 / var(--tw-bg-opacity, 1))}.bg-popover{background-color:hsl(var(--popover))}.bg-primary{background-color:hsl(var(--primary))}.bg-purple-100{--tw-bg-opacity: 1;background-color:rgb(243 232 255 / var(--tw-bg-opacity, 1))}.bg-secondary{background-color:hsl(var(--secondary))}.bg-transparent{background-color:transparent}.bg-unraid-red{--tw-bg-opacity: 1;background-color:rgb(226 40 40 / var(--tw-bg-opacity, 1))}.bg-white{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1))}.bg-yellow-100{--tw-bg-opacity: 1;background-color:rgb(254 249 195 / var(--tw-bg-opacity, 1))}.bg-gradient-to-r{background-image:linear-gradient(to right,var(--tw-gradient-stops))}.from-unraid-red{--tw-gradient-from: #E22828 var(--tw-gradient-from-position);--tw-gradient-to: rgb(226 40 40 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.to-orange{--tw-gradient-to: #ff8c2f var(--tw-gradient-to-position)}.fill-black{fill:#1c1b1b}.fill-current{fill:currentColor}.fill-popover{fill:hsl(var(--popover))}.fill-white{fill:#fff}.p-0{padding:0}.p-1{padding:.4rem}.p-1\.5{padding:.6rem}.p-12{padding:4.8rem}.p-12px{padding:12px}.p-16px{padding:16px}.p-20{padding:8rem}.p-3{padding:1.2rem}.p-4{padding:1.6rem}.p-6{padding:2.4rem}.p-8{padding:3.2rem}.p-8px{padding:8px}.p-px{padding:1px}.px-12px{padding-left:12px;padding-right:12px}.px-16px{padding-left:16px;padding-right:16px}.px-2{padding-left:.8rem;padding-right:.8rem}.px-3{padding-left:1.2rem;padding-right:1.2rem}.px-4{padding-left:1.6rem;padding-right:1.6rem}.px-4\.5{padding-left:1.125rem;padding-right:1.125rem}.px-8{padding-left:3.2rem;padding-right:3.2rem}.px-8px{padding-left:8px;padding-right:8px}.py-1{padding-top:.4rem;padding-bottom:.4rem}.py-1\.5{padding-top:.6rem;padding-bottom:.6rem}.py-12px{padding-top:12px;padding-bottom:12px}.py-2{padding-top:.8rem;padding-bottom:.8rem}.py-2\.5{padding-top:1rem;padding-bottom:1rem}.py-4px{padding-top:4px;padding-bottom:4px}.py-6{padding-top:2.4rem;padding-bottom:2.4rem}.py-8px{padding-top:8px;padding-bottom:8px}.pl-8{padding-left:3.2rem}.pr-2{padding-right:.8rem}.text-left{text-align:left}.text-center{text-align:center}.text-start{text-align:start}.align-\[-0\.125em\]{vertical-align:-.125em}.text-12px{font-size:12px}.text-14px{font-size:14px}.text-16px{font-size:16px}.text-18px{font-size:18px}.text-20px{font-size:20px}.text-24px{font-size:24px}.text-3xl{font-size:3rem;line-height:3.6rem}.text-base{font-size:1.6rem;line-height:2.4rem}.text-lg{font-size:1.8rem;line-height:2.8rem}.text-sm{font-size:1.4rem;line-height:2rem}.text-xs{font-size:1.2rem;line-height:1.6rem}.font-bold{font-weight:700}.font-medium{font-weight:500}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.leading-none{line-height:1}.tracking-widest{letter-spacing:.1em}.text-black{--tw-text-opacity: 1;color:rgb(28 27 27 / var(--tw-text-opacity, 1))}.text-blue-800{--tw-text-opacity: 1;color:rgb(30 64 175 / var(--tw-text-opacity, 1))}.text-current{color:currentColor}.text-destructive-foreground{color:hsl(var(--destructive-foreground))}.text-foreground{color:hsl(var(--foreground))}.text-gray-400{--tw-text-opacity: 1;color:rgb(156 163 175 / var(--tw-text-opacity, 1))}.text-gray-800{--tw-text-opacity: 1;color:rgb(31 41 55 / var(--tw-text-opacity, 1))}.text-green-500{--tw-text-opacity: 1;color:rgb(34 197 94 / var(--tw-text-opacity, 1))}.text-green-800{--tw-text-opacity: 1;color:rgb(22 101 52 / var(--tw-text-opacity, 1))}.text-header-text-secondary{color:var(--header-text-secondary)}.text-indigo-800{--tw-text-opacity: 1;color:rgb(55 48 163 / var(--tw-text-opacity, 1))}.text-muted-foreground{color:hsl(var(--muted-foreground))}.text-muted-foreground\/50{color:hsl(var(--muted-foreground) / .5)}.text-orange-dark{--tw-text-opacity: 1;color:rgb(241 90 44 / var(--tw-text-opacity, 1))}.text-pink-800{--tw-text-opacity: 1;color:rgb(157 23 77 / var(--tw-text-opacity, 1))}.text-popover-foreground{color:hsl(var(--popover-foreground))}.text-primary{color:hsl(var(--primary))}.text-primary-foreground{color:hsl(var(--primary-foreground))}.text-purple-800{--tw-text-opacity: 1;color:rgb(107 33 168 / var(--tw-text-opacity, 1))}.text-secondary-foreground{color:hsl(var(--secondary-foreground))}.text-unraid-red{--tw-text-opacity: 1;color:rgb(226 40 40 / var(--tw-text-opacity, 1))}.text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.underline{text-decoration-line:underline}.no-underline{text-decoration-line:none}.underline-offset-4{text-underline-offset:4px}.opacity-0{opacity:0}.opacity-100{opacity:1}.opacity-50{opacity:.5}.opacity-60{opacity:.6}.opacity-70{opacity:.7}.opacity-75{opacity:.75}.shadow{--tw-shadow: 0 1px 3px 0 rgb(0 0 0 / .1), 0 1px 2px -1px rgb(0 0 0 / .1);--tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-lg{--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-md{--tw-shadow: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-none{--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.outline-none{outline:2px solid transparent;outline-offset:2px}.outline{outline-style:solid}.outline-black{outline-color:#1c1b1b}.outline-primary{outline-color:hsl(var(--primary))}.outline-white{outline-color:#fff}.ring-0{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.ring-offset-background{--tw-ring-offset-color: hsl(var(--background))}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-opacity{transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-transform{transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.duration-100{transition-duration:.1s}.duration-200{transition-duration:.2s}.ease-in{transition-timing-function:cubic-bezier(.4,0,1,1)}.ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}.ease-out{transition-timing-function:cubic-bezier(0,0,.2,1)}@keyframes enter{0%{opacity:var(--tw-enter-opacity, 1);transform:translate3d(var(--tw-enter-translate-x, 0),var(--tw-enter-translate-y, 0),0) scale3d(var(--tw-enter-scale, 1),var(--tw-enter-scale, 1),var(--tw-enter-scale, 1)) rotate(var(--tw-enter-rotate, 0))}}@keyframes exit{to{opacity:var(--tw-exit-opacity, 1);transform:translate3d(var(--tw-exit-translate-x, 0),var(--tw-exit-translate-y, 0),0) scale3d(var(--tw-exit-scale, 1),var(--tw-exit-scale, 1),var(--tw-exit-scale, 1)) rotate(var(--tw-exit-rotate, 0))}}.animate-in{animation-name:enter;animation-duration:.15s;--tw-enter-opacity: initial;--tw-enter-scale: initial;--tw-enter-rotate: initial;--tw-enter-translate-x: initial;--tw-enter-translate-y: initial}.fade-in-0{--tw-enter-opacity: 0}.zoom-in-95{--tw-enter-scale: .95}.duration-100{animation-duration:.1s}.duration-200{animation-duration:.2s}.ease-in{animation-timing-function:cubic-bezier(.4,0,1,1)}.ease-in-out{animation-timing-function:cubic-bezier(.4,0,.2,1)}.ease-out{animation-timing-function:cubic-bezier(0,0,.2,1)}:where(html[dir=ltr]),:where([data-sonner-toaster][dir=ltr]){--toast-icon-margin-start: -3px;--toast-icon-margin-end: 4px;--toast-svg-margin-start: -1px;--toast-svg-margin-end: 0px;--toast-button-margin-start: auto;--toast-button-margin-end: 0;--toast-close-button-start: 0;--toast-close-button-end: unset;--toast-close-button-transform: translate(-35%, -35%)}:where(html[dir=rtl]),:where([data-sonner-toaster][dir=rtl]){--toast-icon-margin-start: 4px;--toast-icon-margin-end: -3px;--toast-svg-margin-start: 0px;--toast-svg-margin-end: -1px;--toast-button-margin-start: 0;--toast-button-margin-end: auto;--toast-close-button-start: unset;--toast-close-button-end: 0;--toast-close-button-transform: translate(35%, -35%)}:where([data-sonner-toaster]){position:fixed;width:var(--width);font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;--gray1: hsl(0, 0%, 99%);--gray2: hsl(0, 0%, 97.3%);--gray3: hsl(0, 0%, 95.1%);--gray4: hsl(0, 0%, 93%);--gray5: hsl(0, 0%, 90.9%);--gray6: hsl(0, 0%, 88.7%);--gray7: hsl(0, 0%, 85.8%);--gray8: hsl(0, 0%, 78%);--gray9: hsl(0, 0%, 56.1%);--gray10: hsl(0, 0%, 52.3%);--gray11: hsl(0, 0%, 43.5%);--gray12: hsl(0, 0%, 9%);--border-radius: 8px;box-sizing:border-box;padding:0;margin:0;list-style:none;outline:none;z-index:999999999;transition:transform .4s ease}:where([data-sonner-toaster][data-lifted=true]){transform:translateY(-10px)}@media (hover: none) and (pointer: coarse){:where([data-sonner-toaster][data-lifted=true]){transform:none}}:where([data-sonner-toaster][data-x-position=right]){right:max(var(--offset),env(safe-area-inset-right))}:where([data-sonner-toaster][data-x-position=left]){left:max(var(--offset),env(safe-area-inset-left))}:where([data-sonner-toaster][data-x-position=center]){left:50%;transform:translate(-50%)}:where([data-sonner-toaster][data-y-position=top]){top:max(var(--offset),env(safe-area-inset-top))}:where([data-sonner-toaster][data-y-position=bottom]){bottom:max(var(--offset),env(safe-area-inset-bottom))}:where([data-sonner-toast]){--y: translateY(100%);--lift-amount: calc(var(--lift) * var(--gap));z-index:var(--z-index);position:absolute;opacity:0;transform:var(--y);filter:blur(0);touch-action:none;transition:transform .4s,opacity .4s,height .4s,box-shadow .2s;box-sizing:border-box;outline:none;overflow-wrap:anywhere}:where([data-sonner-toast][data-styled=true]){padding:16px;background:var(--normal-bg);border:1px solid var(--normal-border);color:var(--normal-text);border-radius:var(--border-radius);box-shadow:0 4px 12px #0000001a;width:var(--width);font-size:13px;display:flex;align-items:center;gap:6px}:where([data-sonner-toast]:focus-visible){box-shadow:0 4px 12px #0000001a,0 0 0 2px #0003}:where([data-sonner-toast][data-y-position=top]){top:0;--y: translateY(-100%);--lift: 1;--lift-amount: calc(1 * var(--gap))}:where([data-sonner-toast][data-y-position=bottom]){bottom:0;--y: translateY(100%);--lift: -1;--lift-amount: calc(var(--lift) * var(--gap))}:where([data-sonner-toast]) :where([data-description]){font-weight:400;line-height:1.4;color:inherit}:where([data-sonner-toast]) :where([data-title]){font-weight:500;line-height:1.5;color:inherit}:where([data-sonner-toast]) :where([data-icon]){display:flex;height:16px;width:16px;position:relative;justify-content:flex-start;align-items:center;flex-shrink:0;margin-left:var(--toast-icon-margin-start);margin-right:var(--toast-icon-margin-end)}:where([data-sonner-toast][data-promise=true]) :where([data-icon])>svg{opacity:0;transform:scale(.8);transform-origin:center;animation:sonner-fade-in .3s ease forwards}:where([data-sonner-toast]) :where([data-icon])>*{flex-shrink:0}:where([data-sonner-toast]) :where([data-icon]) svg{margin-left:var(--toast-svg-margin-start);margin-right:var(--toast-svg-margin-end)}:where([data-sonner-toast]) :where([data-content]){display:flex;flex-direction:column;gap:2px}[data-sonner-toast][data-styled=true] [data-button]{border-radius:4px;padding-left:8px;padding-right:8px;height:24px;font-size:12px;color:var(--normal-bg);background:var(--normal-text);margin-left:var(--toast-button-margin-start);margin-right:var(--toast-button-margin-end);border:none;cursor:pointer;outline:none;display:flex;align-items:center;flex-shrink:0;transition:opacity .4s,box-shadow .2s}:where([data-sonner-toast]) :where([data-button]):focus-visible{box-shadow:0 0 0 2px #0006}:where([data-sonner-toast]) :where([data-button]):first-of-type{margin-left:var(--toast-button-margin-start);margin-right:var(--toast-button-margin-end)}:where([data-sonner-toast]) :where([data-cancel]){color:var(--normal-text);background:#00000014}:where([data-sonner-toast][data-theme=dark]) :where([data-cancel]){background:#ffffff4d}[data-sonner-toast] [data-close-button]{position:absolute;left:var(--toast-close-button-start);right:var(--toast-close-button-end);top:0;height:20px;width:20px;display:flex;justify-content:center;align-items:center;padding:0;color:var(--gray12);border:1px solid var(--gray4);transform:var(--toast-close-button-transform);border-radius:50%;cursor:pointer;z-index:1;transition:opacity .1s,background .2s,border-color .2s;background:var(--gray1)}:where([data-sonner-toast]) :where([data-close-button]):focus-visible{box-shadow:0 4px 12px #0000001a,0 0 0 2px #0003}:where([data-sonner-toast]) :where([data-disabled=true]){cursor:not-allowed}[data-sonner-toast]:hover [data-close-button]:hover{background:var(--gray2);border-color:var(--gray5)}:where([data-sonner-toast][data-swiping=true]):before{content:"";position:absolute;left:0;right:0;height:100%;z-index:-1}:where([data-sonner-toast][data-y-position=top][data-swiping=true]):before{bottom:50%;transform:scaleY(3) translateY(50%)}:where([data-sonner-toast][data-y-position=bottom][data-swiping=true]):before{top:50%;transform:scaleY(3) translateY(-50%)}:where([data-sonner-toast][data-swiping=false][data-removed=true]):before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;transform:scaleY(2)}:where([data-sonner-toast]):after{content:"";position:absolute;left:0;height:calc(var(--gap) + 1px);bottom:100%;width:100%}:where([data-sonner-toast][data-mounted=true]){--y: translateY(0);opacity:1}:where([data-sonner-toast][data-expanded=false][data-front=false]){--scale: var(--toasts-before) * .05 + 1;--y: translateY(calc(var(--lift-amount) * var(--toasts-before))) scale(calc(-1 * var(--scale)));height:var(--front-toast-height)}:where([data-sonner-toast])>*{transition:opacity .4s}:where([data-sonner-toast][data-expanded=false][data-front=false][data-styled=true])>*{opacity:0}:where([data-sonner-toast][data-visible=false]){opacity:0;pointer-events:none}:where([data-sonner-toast][data-mounted=true][data-expanded=true]){--y: translateY(calc(var(--lift) * var(--offset)));height:var(--initial-height)}:where([data-sonner-toast][data-removed=true][data-front=true][data-swipe-out=false]){--y: translateY(calc(var(--lift) * -100%));opacity:0}:where([data-sonner-toast][data-removed=true][data-front=false][data-swipe-out=false][data-expanded=true]){--y: translateY(calc(var(--lift) * var(--offset) + var(--lift) * -100%));opacity:0}:where([data-sonner-toast][data-removed=true][data-front=false][data-swipe-out=false][data-expanded=false]){--y: translateY(40%);opacity:0;transition:transform .5s,opacity .2s}:where([data-sonner-toast][data-removed=true][data-front=false]):before{height:calc(var(--initial-height) + 20%)}[data-sonner-toast][data-swiping=true]{transform:var(--y) translateY(var(--swipe-amount, 0px));transition:none}[data-sonner-toast][data-swiped=true]{-webkit-user-select:none;user-select:none}[data-sonner-toast][data-swipe-out=true][data-y-position=bottom],[data-sonner-toast][data-swipe-out=true][data-y-position=top]{animation:swipe-out .2s ease-out forwards}@keyframes swipe-out{0%{transform:translateY(calc(var(--lift) * var(--offset) + var(--swipe-amount)));opacity:1}to{transform:translateY(calc(var(--lift) * var(--offset) + var(--swipe-amount) + var(--lift) * -100%));opacity:0}}@media (max-width: 600px){[data-sonner-toaster]{position:fixed;--mobile-offset: 16px;right:var(--mobile-offset);left:var(--mobile-offset);width:100%}[data-sonner-toaster][dir=rtl]{left:calc(var(--mobile-offset) * -1)}[data-sonner-toaster] [data-sonner-toast]{left:0;right:0;width:calc(100% - var(--mobile-offset) * 2)}[data-sonner-toaster][data-x-position=left]{left:var(--mobile-offset)}[data-sonner-toaster][data-y-position=bottom]{bottom:20px}[data-sonner-toaster][data-y-position=top]{top:20px}[data-sonner-toaster][data-x-position=center]{left:var(--mobile-offset);right:var(--mobile-offset);transform:none}}[data-sonner-toaster][data-theme=light]{--normal-bg: #fff;--normal-border: var(--gray4);--normal-text: var(--gray12);--success-bg: hsl(143, 85%, 96%);--success-border: hsl(145, 92%, 91%);--success-text: hsl(140, 100%, 27%);--info-bg: hsl(208, 100%, 97%);--info-border: hsl(221, 91%, 91%);--info-text: hsl(210, 92%, 45%);--warning-bg: hsl(49, 100%, 97%);--warning-border: hsl(49, 91%, 91%);--warning-text: hsl(31, 92%, 45%);--error-bg: hsl(359, 100%, 97%);--error-border: hsl(359, 100%, 94%);--error-text: hsl(360, 100%, 45%)}[data-sonner-toaster][data-theme=light] [data-sonner-toast][data-invert=true]{--normal-bg: #000;--normal-border: hsl(0, 0%, 20%);--normal-text: var(--gray1)}[data-sonner-toaster][data-theme=dark] [data-sonner-toast][data-invert=true]{--normal-bg: #fff;--normal-border: var(--gray3);--normal-text: var(--gray12)}[data-sonner-toaster][data-theme=dark]{--normal-bg: #000;--normal-border: hsl(0, 0%, 20%);--normal-text: var(--gray1);--success-bg: hsl(150, 100%, 6%);--success-border: hsl(147, 100%, 12%);--success-text: hsl(150, 86%, 65%);--info-bg: hsl(215, 100%, 6%);--info-border: hsl(223, 100%, 12%);--info-text: hsl(216, 87%, 65%);--warning-bg: hsl(64, 100%, 6%);--warning-border: hsl(60, 100%, 12%);--warning-text: hsl(46, 87%, 65%);--error-bg: hsl(358, 76%, 10%);--error-border: hsl(357, 89%, 16%);--error-text: hsl(358, 100%, 81%)}[data-rich-colors=true][data-sonner-toast][data-type=success],[data-rich-colors=true][data-sonner-toast][data-type=success] [data-close-button]{background:var(--success-bg);border-color:var(--success-border);color:var(--success-text)}[data-rich-colors=true][data-sonner-toast][data-type=info],[data-rich-colors=true][data-sonner-toast][data-type=info] [data-close-button]{background:var(--info-bg);border-color:var(--info-border);color:var(--info-text)}[data-rich-colors=true][data-sonner-toast][data-type=warning],[data-rich-colors=true][data-sonner-toast][data-type=warning] [data-close-button]{background:var(--warning-bg);border-color:var(--warning-border);color:var(--warning-text)}[data-rich-colors=true][data-sonner-toast][data-type=error],[data-rich-colors=true][data-sonner-toast][data-type=error] [data-close-button]{background:var(--error-bg);border-color:var(--error-border);color:var(--error-text)}.sonner-loading-wrapper{--size: 16px;height:var(--size);width:var(--size);position:absolute;top:0;right:0;bottom:0;left:0;z-index:10}.sonner-loading-wrapper[data-visible=false]{transform-origin:center;animation:sonner-fade-out .2s ease forwards}.sonner-spinner{position:relative;top:50%;left:50%;height:var(--size);width:var(--size)}.sonner-loading-bar{animation:sonner-spin 1.2s linear infinite;background:var(--gray11);border-radius:6px;height:8%;left:-10%;position:absolute;top:-3.9%;width:24%}.sonner-loading-bar:nth-child(1){animation-delay:-1.2s;transform:rotate(.0001deg) translate(146%)}.sonner-loading-bar:nth-child(2){animation-delay:-1.1s;transform:rotate(30deg) translate(146%)}.sonner-loading-bar:nth-child(3){animation-delay:-1s;transform:rotate(60deg) translate(146%)}.sonner-loading-bar:nth-child(4){animation-delay:-.9s;transform:rotate(90deg) translate(146%)}.sonner-loading-bar:nth-child(5){animation-delay:-.8s;transform:rotate(120deg) translate(146%)}.sonner-loading-bar:nth-child(6){animation-delay:-.7s;transform:rotate(150deg) translate(146%)}.sonner-loading-bar:nth-child(7){animation-delay:-.6s;transform:rotate(180deg) translate(146%)}.sonner-loading-bar:nth-child(8){animation-delay:-.5s;transform:rotate(210deg) translate(146%)}.sonner-loading-bar:nth-child(9){animation-delay:-.4s;transform:rotate(240deg) translate(146%)}.sonner-loading-bar:nth-child(10){animation-delay:-.3s;transform:rotate(270deg) translate(146%)}.sonner-loading-bar:nth-child(11){animation-delay:-.2s;transform:rotate(300deg) translate(146%)}.sonner-loading-bar:nth-child(12){animation-delay:-.1s;transform:rotate(330deg) translate(146%)}@keyframes sonner-fade-in{0%{opacity:0;transform:scale(.8)}to{opacity:1;transform:scale(1)}}@keyframes sonner-fade-out{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(.8)}}@keyframes sonner-spin{0%{opacity:1}to{opacity:.15}}@media (prefers-reduced-motion){[data-sonner-toast],[data-sonner-toast]>*,.sonner-loading-bar{transition:none!important;animation:none!important}}.sonner-loader{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);transform-origin:center;transition:opacity .2s,transform .2s}.sonner-loader[data-visible=false]{opacity:0;transform:scale(.8) translate(-50%,-50%)}.file\:border-0::file-selector-button{border-width:0px}.file\:bg-transparent::file-selector-button{background-color:transparent}.file\:text-sm::file-selector-button{font-size:1.4rem;line-height:2rem}.file\:font-medium::file-selector-button{font-weight:500}.placeholder\:text-muted-foreground::placeholder{color:hsl(var(--muted-foreground))}.hover\:border-grey:hover{--tw-border-opacity: 1;border-color:rgb(224 224 224 / var(--tw-border-opacity, 1))}.hover\:border-grey-mid:hover{--tw-border-opacity: 1;border-color:rgb(153 153 153 / var(--tw-border-opacity, 1))}.hover\:border-muted:hover{border-color:hsl(var(--muted))}.hover\:border-unraid-red:hover{--tw-border-opacity: 1;border-color:rgb(226 40 40 / var(--tw-border-opacity, 1))}.hover\:bg-accent:hover{background-color:hsl(var(--accent))}.hover\:bg-blue-200:hover{--tw-bg-opacity: 1;background-color:rgb(191 219 254 / var(--tw-bg-opacity, 1))}.hover\:bg-destructive\/90:hover{background-color:hsl(var(--destructive) / .9)}.hover\:bg-gray-100:hover{--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity, 1))}.hover\:bg-gray-300:hover{--tw-bg-opacity: 1;background-color:rgb(209 213 219 / var(--tw-bg-opacity, 1))}.hover\:bg-gray-800:hover{--tw-bg-opacity: 1;background-color:rgb(31 41 55 / var(--tw-bg-opacity, 1))}.hover\:bg-green-300:hover{--tw-bg-opacity: 1;background-color:rgb(134 239 172 / var(--tw-bg-opacity, 1))}.hover\:bg-grey:hover{--tw-bg-opacity: 1;background-color:rgb(224 224 224 / var(--tw-bg-opacity, 1))}.hover\:bg-grey-mid:hover{--tw-bg-opacity: 1;background-color:rgb(153 153 153 / var(--tw-bg-opacity, 1))}.hover\:bg-indigo-200:hover{--tw-bg-opacity: 1;background-color:rgb(199 210 254 / var(--tw-bg-opacity, 1))}.hover\:bg-muted:hover{background-color:hsl(var(--muted))}.hover\:bg-orange-dark:hover{--tw-bg-opacity: 1;background-color:rgb(241 90 44 / var(--tw-bg-opacity, 1))}.hover\:bg-pink-200:hover{--tw-bg-opacity: 1;background-color:rgb(251 207 232 / var(--tw-bg-opacity, 1))}.hover\:bg-primary\/90:hover{background-color:hsl(var(--primary) / .9)}.hover\:bg-purple-200:hover{--tw-bg-opacity: 1;background-color:rgb(233 213 255 / var(--tw-bg-opacity, 1))}.hover\:bg-secondary\/80:hover{background-color:hsl(var(--secondary) / .8)}.hover\:bg-unraid-red:hover{--tw-bg-opacity: 1;background-color:rgb(226 40 40 / var(--tw-bg-opacity, 1))}.hover\:bg-white:hover{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1))}.hover\:bg-yellow-200:hover{--tw-bg-opacity: 1;background-color:rgb(254 240 138 / var(--tw-bg-opacity, 1))}.hover\:text-accent-foreground:hover{color:hsl(var(--accent-foreground))}.hover\:text-black:hover{--tw-text-opacity: 1;color:rgb(28 27 27 / var(--tw-text-opacity, 1))}.hover\:text-primary:hover{color:hsl(var(--primary))}.hover\:text-white:hover{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-100:hover{opacity:1}.hover\:shadow-md:hover{--tw-shadow: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.hover\:shadow-orange\/50:hover{--tw-shadow-color: rgb(255 140 47 / .5);--tw-shadow: var(--tw-shadow-colored)}.focus\:border-grey:focus{--tw-border-opacity: 1;border-color:rgb(224 224 224 / var(--tw-border-opacity, 1))}.focus\:border-grey-mid:focus{--tw-border-opacity: 1;border-color:rgb(153 153 153 / var(--tw-border-opacity, 1))}.focus\:border-muted:focus{border-color:hsl(var(--muted))}.focus\:border-unraid-red:focus{--tw-border-opacity: 1;border-color:rgb(226 40 40 / var(--tw-border-opacity, 1))}.focus\:bg-accent:focus{background-color:hsl(var(--accent))}.focus\:bg-grey:focus{--tw-bg-opacity: 1;background-color:rgb(224 224 224 / var(--tw-bg-opacity, 1))}.focus\:bg-grey-mid:focus{--tw-bg-opacity: 1;background-color:rgb(153 153 153 / var(--tw-bg-opacity, 1))}.focus\:bg-muted:focus{background-color:hsl(var(--muted))}.focus\:bg-unraid-red:focus{--tw-bg-opacity: 1;background-color:rgb(226 40 40 / var(--tw-bg-opacity, 1))}.focus\:bg-white:focus{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1))}.focus\:text-accent-foreground:focus{color:hsl(var(--accent-foreground))}.focus\:text-black:focus{--tw-text-opacity: 1;color:rgb(28 27 27 / var(--tw-text-opacity, 1))}.focus\:text-primary:focus{color:hsl(var(--primary))}.focus\:text-white:focus{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.focus\:opacity-100:focus{opacity:1}.focus\:shadow-md:focus{--tw-shadow: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.focus\:ring-2:focus{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus\:ring-indigo-600:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(79 70 229 / var(--tw-ring-opacity, 1))}.focus\:ring-ring:focus{--tw-ring-color: hsl(var(--ring))}.focus\:ring-offset-2:focus{--tw-ring-offset-width: 2px}.focus-visible\:outline-none:focus-visible{outline:2px solid transparent;outline-offset:2px}.focus-visible\:ring-2:focus-visible{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus-visible\:ring-ring:focus-visible{--tw-ring-color: hsl(var(--ring))}.focus-visible\:ring-offset-2:focus-visible{--tw-ring-offset-width: 2px}.focus-visible\:ring-offset-background:focus-visible{--tw-ring-offset-color: hsl(var(--background))}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-20:disabled{opacity:.2}.disabled\:opacity-25:disabled{opacity:.25}.disabled\:opacity-50:disabled{opacity:.5}.disabled\:hover\:opacity-25:hover:disabled{opacity:.25}.disabled\:focus\:opacity-25:focus:disabled{opacity:.25}.group:hover .group-hover\:text-header-text-secondary{color:var(--header-text-secondary)}.group:hover .group-hover\:text-orange-dark{--tw-text-opacity: 1;color:rgb(241 90 44 / var(--tw-text-opacity, 1))}.group:hover .group-hover\:underline{text-decoration-line:underline}.group:hover .group-hover\:no-underline{text-decoration-line:none}.group:hover .group-hover\:opacity-100{opacity:1}.group:hover .group-hover\:opacity-60{opacity:.6}.group:focus .group-focus\:text-header-text-secondary{color:var(--header-text-secondary)}.group:focus .group-focus\:text-orange-dark{--tw-text-opacity: 1;color:rgb(241 90 44 / var(--tw-text-opacity, 1))}.group:focus .group-focus\:underline{text-decoration-line:underline}.group:focus .group-focus\:no-underline{text-decoration-line:none}.group:focus .group-focus\:opacity-100{opacity:1}.group:focus .group-focus\:opacity-60{opacity:.6}.group.toaster .group-\[\.toaster\]\:border-border{border-color:hsl(var(--border))}.group.toast .group-\[\.toast\]\:bg-muted{background-color:hsl(var(--muted))}.group.toast .group-\[\.toast\]\:bg-primary{background-color:hsl(var(--primary))}.group.toaster .group-\[\.toaster\]\:bg-background{background-color:hsl(var(--background))}.group.toast .group-\[\.toast\]\:text-muted-foreground{color:hsl(var(--muted-foreground))}.group.toast .group-\[\.toast\]\:text-primary-foreground{color:hsl(var(--primary-foreground))}.group.toaster .group-\[\.toaster\]\:text-foreground{color:hsl(var(--foreground))}.group.toaster .group-\[\.toaster\]\:shadow-lg{--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.peer:disabled~.peer-disabled\:cursor-not-allowed{cursor:not-allowed}.peer:disabled~.peer-disabled\:opacity-70{opacity:.7}.data-\[disabled\]\:pointer-events-none[data-disabled]{pointer-events:none}.data-\[state\=active\]\:flex[data-state=active]{display:flex}.data-\[state\=inactive\]\:hidden[data-state=inactive]{display:none}.data-\[side\=bottom\]\:translate-y-1[data-side=bottom]{--tw-translate-y: .4rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[side\=left\]\:-translate-x-1[data-side=left]{--tw-translate-x: -.4rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[side\=right\]\:translate-x-1[data-side=right]{--tw-translate-x: .4rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[side\=top\]\:-translate-y-1[data-side=top]{--tw-translate-y: -.4rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[state\=checked\]\:translate-x-5[data-state=checked]{--tw-translate-x: 2rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[state\=unchecked\]\:translate-x-0[data-state=unchecked]{--tw-translate-x: 0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[state\=active\]\:bg-background[data-state=active]{background-color:hsl(var(--background))}.data-\[state\=checked\]\:bg-primary[data-state=checked]{background-color:hsl(var(--primary))}.data-\[state\=open\]\:bg-accent[data-state=open]{background-color:hsl(var(--accent))}.data-\[state\=open\]\:bg-secondary[data-state=open]{background-color:hsl(var(--secondary))}.data-\[state\=unchecked\]\:bg-input[data-state=unchecked]{background-color:hsl(var(--input))}.data-\[placeholder\]\:text-muted-foreground[data-placeholder]{color:hsl(var(--muted-foreground))}.data-\[state\=active\]\:text-foreground[data-state=active]{color:hsl(var(--foreground))}.data-\[disabled\]\:opacity-50[data-disabled]{opacity:.5}.data-\[state\=active\]\:shadow-sm[data-state=active]{--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.data-\[state\=closed\]\:duration-300[data-state=closed]{transition-duration:.3s}.data-\[state\=open\]\:duration-500[data-state=open]{transition-duration:.5s}.data-\[state\=open\]\:animate-in[data-state=open]{animation-name:enter;animation-duration:.15s;--tw-enter-opacity: initial;--tw-enter-scale: initial;--tw-enter-rotate: initial;--tw-enter-translate-x: initial;--tw-enter-translate-y: initial}.data-\[state\=closed\]\:animate-out[data-state=closed]{animation-name:exit;animation-duration:.15s;--tw-exit-opacity: initial;--tw-exit-scale: initial;--tw-exit-rotate: initial;--tw-exit-translate-x: initial;--tw-exit-translate-y: initial}.data-\[state\=closed\]\:fade-out-0[data-state=closed]{--tw-exit-opacity: 0}.data-\[state\=open\]\:fade-in-0[data-state=open]{--tw-enter-opacity: 0}.data-\[state\=closed\]\:zoom-out-95[data-state=closed]{--tw-exit-scale: .95}.data-\[state\=open\]\:zoom-in-95[data-state=open]{--tw-enter-scale: .95}.data-\[side\=bottom\]\:slide-in-from-top-2[data-side=bottom]{--tw-enter-translate-y: -.8rem}.data-\[side\=left\]\:slide-in-from-right-2[data-side=left]{--tw-enter-translate-x: .8rem}.data-\[side\=right\]\:slide-in-from-left-2[data-side=right]{--tw-enter-translate-x: -.8rem}.data-\[side\=top\]\:slide-in-from-bottom-2[data-side=top]{--tw-enter-translate-y: .8rem}.data-\[state\=closed\]\:slide-out-to-bottom[data-state=closed]{--tw-exit-translate-y: 100%}.data-\[state\=closed\]\:slide-out-to-left[data-state=closed]{--tw-exit-translate-x: -100%}.data-\[state\=closed\]\:slide-out-to-right[data-state=closed]{--tw-exit-translate-x: 100%}.data-\[state\=closed\]\:slide-out-to-top[data-state=closed]{--tw-exit-translate-y: -100%}.data-\[state\=open\]\:slide-in-from-bottom[data-state=open]{--tw-enter-translate-y: 100%}.data-\[state\=open\]\:slide-in-from-left[data-state=open]{--tw-enter-translate-x: -100%}.data-\[state\=open\]\:slide-in-from-right[data-state=open]{--tw-enter-translate-x: 100%}.data-\[state\=open\]\:slide-in-from-top[data-state=open]{--tw-enter-translate-y: -100%}.data-\[state\=closed\]\:duration-300[data-state=closed]{animation-duration:.3s}.data-\[state\=open\]\:duration-500[data-state=open]{animation-duration:.5s}.group[data-disabled] .group-data-\[disabled\]\:bg-muted{background-color:hsl(var(--muted))}.group[data-state=active] .group-data-\[state\=active\]\:bg-primary{background-color:hsl(var(--primary))}.group[data-state=completed] .group-data-\[state\=completed\]\:bg-accent{background-color:hsl(var(--accent))}.group[data-state=completed] .group-data-\[state\=completed\]\:bg-accent-foreground{background-color:hsl(var(--accent-foreground))}.group[data-disabled] .group-data-\[disabled\]\:text-muted-foreground{color:hsl(var(--muted-foreground))}.group[data-state=active] .group-data-\[state\=active\]\:text-primary-foreground{color:hsl(var(--primary-foreground))}.group[data-state=completed] .group-data-\[state\=completed\]\:text-accent-foreground{color:hsl(var(--accent-foreground))}.group[data-disabled] .group-data-\[disabled\]\:opacity-50{opacity:.5}.group[data-disabled] .group-data-\[disabled\]\:opacity-75{opacity:.75}@media (prefers-reduced-motion: reduce){@keyframes spin{to{transform:rotate(360deg)}}.motion-reduce\:animate-\[spin_1\.5s_linear_infinite\]{animation:spin 1.5s linear infinite}}@media (min-width: 640px){.sm\:max-w-sm{max-width:24rem}.sm\:flex-row{flex-direction:row}.sm\:justify-end{justify-content:flex-end}.sm\:gap-x-2{column-gap:.8rem}.sm\:text-left{text-align:left}}@media (min-width: 768px){.md\:my-0{margin-top:0;margin-bottom:0}.md\:block{display:block}.md\:h-px{height:1px}.md\:w-24{width:9.6rem}.md\:w-auto{width:auto}.md\:flex-row{flex-direction:row}.md\:items-center{align-items:center}.md\:gap-2{gap:.8rem}.md\:p-6{padding:2.4rem}}.\[\&\>\[data-slot\=input\]\]\:has-\[\[data-slot\=decrement\]\]\:pl-5:has([data-slot=decrement])>[data-slot=input]{padding-left:2rem}.\[\&\>\[data-slot\=input\]\]\:has-\[\[data-slot\=increment\]\]\:pr-5:has([data-slot=increment])>[data-slot=input]{padding-right:2rem}.\[\&\>div\>svg\]\:fill-blue-500>div>svg{fill:#3b82f6}.\[\&\>div\>svg\]\:fill-unraid-red-500>div>svg{fill:#f43f3f}.\[\&\>div\>svg\]\:fill-yellow-500>div>svg{fill:#eab308}.\[\&\>span\]\:truncate>span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.\[\&\>svg\]\:size-4>svg{width:1.6rem;height:1.6rem}.\[\&\>svg\]\:shrink-0>svg{flex-shrink:0}.\[\&\]\:text-orange{--tw-text-opacity: 1;color:rgb(255 140 47 / var(--tw-text-opacity, 1))}.\[\&\]\:text-primary{color:hsl(var(--primary))}.\[\&\]\:text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))} diff --git a/emhttp/plugins/dynamix.my.servers/unraid-components/uui/ui.manifest.json b/emhttp/plugins/dynamix.my.servers/unraid-components/uui/ui.manifest.json deleted file mode 100644 index 608e0e26d..000000000 --- a/emhttp/plugins/dynamix.my.servers/unraid-components/uui/ui.manifest.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "src/register.ts": { - "file": "register.D9MKs8Co.js", - "name": "register", - "src": "src/register.ts", - "isEntry": true - }, - "style.css": { - "file": "ui.CaW9jS_X.css", - "src": "style.css" - } -} \ No newline at end of file diff --git a/emhttp/plugins/dynamix/Disk.page b/emhttp/plugins/dynamix/Disk.page index 185faf27e..ad550d1d8 100644 --- a/emhttp/plugins/dynamix/Disk.page +++ b/emhttp/plugins/dynamix/Disk.page @@ -13,10 +13,6 @@ Type="xmenu" */ ?> -function clone_list($disk) { - global $pools; - return strpos($disk['status'],'_NP')===false && ($disk['type']=='Data' || in_array($disk['name'],$pools)); -} if (count($pages)==2) $tabbed = false; $refs = []; $n = 0; diff --git a/emhttp/plugins/dynamix/Eth0.page b/emhttp/plugins/dynamix/Eth0.page index 26be60dce..c4f9d308b 100644 --- a/emhttp/plugins/dynamix/Eth0.page +++ b/emhttp/plugins/dynamix/Eth0.page @@ -528,7 +528,7 @@ function portToggle(port, cmd) { } $(function() { - const ctrl = " _(Please wait)_... _(configuring interface)_"; + const ctrl = " _(Please wait)_... _(configuring interface)_"; const form = document.eth0_settings; const dns = document.dns_settings; diff --git a/emhttp/plugins/dynamix/Favorites.page b/emhttp/plugins/dynamix/Favorites.page index d45358e6d..285593594 100644 --- a/emhttp/plugins/dynamix/Favorites.page +++ b/emhttp/plugins/dynamix/Favorites.page @@ -1,19 +1,6 @@ Menu="Tasks:2" Type="xmenu" +Tabs="false" Code="f08a" Cond="@filesize('/boot/config/favorites.cfg')" --- - diff --git a/emhttp/plugins/dynamix/Flash.page b/emhttp/plugins/dynamix/Flash.page index b57b8e8d6..a36dbc443 100644 --- a/emhttp/plugins/dynamix/Flash.page +++ b/emhttp/plugins/dynamix/Flash.page @@ -12,12 +12,6 @@ Type="xmenu" * all copies or substantial portions of the Software. */ ?> - -function clone_list($disk) { - global $pools; - return strpos($disk['status'],'_NP')===false && ($disk['type']=='Data' || in_array($disk['name'],$pools)); -} -?> + + + _(No favorites available)_ + diff --git a/emhttp/plugins/dynamix/NotificationAgents.page b/emhttp/plugins/dynamix/NotificationAgents.page index 2ec66f7e4..af6d65bf3 100644 --- a/emhttp/plugins/dynamix/NotificationAgents.page +++ b/emhttp/plugins/dynamix/NotificationAgents.page @@ -2,7 +2,7 @@ Menu="Notifications:3" Title="Notification Agents" Tag="rss-square" --- - + - + +Language) ) { - $guiLanguage = ($locale == "" ) ? "en_US" : $locale; - $acceptedLanguages = explode(" ",$xml->Language); - if ( ! in_array($guiLanguage,$acceptedLanguages) ) + $xml = @simplexml_load_file($xml_file); + if (! $xml) { continue; } - $name = str_replace(' ','_',$xml->Name); + + if (isset($xml->Language)) { + $guiLanguage = ($locale == "") ? "en_US" : $locale; + $acceptedLanguages = explode(" ", $xml->Language); + if (! in_array($guiLanguage, $acceptedLanguages)) { + continue; + } + } + $name = str_replace(' ', '_', $xml->Name); + $titleId = 'agent-' . strtolower($name); $enabledAgent = agent_fullname("$name.sh", "enabled"); $disabledAgent = agent_fullname("$name.sh", "disabled"); if (is_file($disabledAgent)) { - $file = $disabledAgent; - if (is_file($enabledAgent)) unlink($enabledAgent); + $file = $disabledAgent; + if (is_file($enabledAgent)) { + unlink($enabledAgent); + } } else { - $file = $enabledAgent; + $file = $enabledAgent; } $values = []; $script = ""; if (is_file($file)) { - preg_match("/[#]{6,100}([^#]*?)[#]{6,100}/si", file_get_contents($file), $match); - if (isset($match[1])) { - foreach (explode(PHP_EOL, $match[1]) as $line) { - if (strpos($line, "=")) { - [$k, $v] = my_explode("=",str_replace("\"", "", $line),2); - $values[$k] = $v; - } + preg_match("/[#]{6,100}([^#]*?)[#]{6,100}/si", file_get_contents($file), $match); + if (isset($match[1])) { + foreach (explode(PHP_EOL, $match[1]) as $line) { + if (strpos($line, "=")) { + [$k, $v] = my_explode("=", str_replace("\"", "", $line), 2); + $values[$k] = $v; + } + } } - } } - foreach (explode(PHP_EOL,(String) $xml->Script) as $line) if (trim($line)) $script .= trim($line)."{1}"; - echo ''.str_replace('_',' ',$name).''.(is_file($enabledAgent) ? ''._("Enabled").'' : ''._("Disabled").'').''; - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - echo ''._("Agent function").':'; - echo mk_option(is_file($disabledAgent), 'no', _('Disabled')); - echo mk_option(is_file($enabledAgent), 'yes', _('Enabled')); - echo ''; - echo ''; - foreach ($xml->Variables->children() as $v) { - $vName = preg_replace('#\[([^\]]*)\]#', '<$1>', (string) $v); - $vDesc = ucfirst(strtolower(preg_replace('#\[([^\]]*)\]#', '<$1>', $v->attributes()->Desc))); - $vDefault = preg_replace('#\[([^\]]*)\]#', '<$1>', $v->attributes()->Default); - $vHelp = preg_replace('#\[([^\]]*)\]#', '<$1>', $v->attributes()->Help); - echo "$vDesc:"; - if (preg_match('/title|message/', $vDesc)) { - echo ''; - $value = str_replace('\n',',',isset($values[$vName]) ? $values[$vName] : $vDefault); - foreach ($fields as $field) echo mk_option_check($value,'$'.strtoupper($field),_($field)); - echo ''; - } else { - echo ''; - } - echo ''; - if ($vHelp) echo ''.$vHelp.''; + foreach (explode(PHP_EOL, (string) $xml->Script) as $line) { + if (trim($line)) { + $script .= trim($line)."{1}"; + } } - echo ' '; - echo ''; - if (is_file($file)) { - echo ''; - echo '' : ' disabled>'); - } - echo ''; - + + $displayName = str_replace('_', ' ', $name); + $iconPath = "/plugins/dynamix/icons/" . strtolower(str_replace('_', '', $name)) . ".png"; + $isEnabled = is_file($enabledAgent); + $statusClass = $isEnabled ? 'green' : 'red'; + $statusText = $isEnabled ? _("Enabled") : _("Disabled"); + ?> + + + + + = $displayName ?> + + + = $statusText ?> + + + + + + + + + + + + + = _("Agent function") ?>: + + + = mk_option(is_file($disabledAgent), 'no', _('Disabled')) ?> + = mk_option(is_file($enabledAgent), 'yes', _('Enabled')) ?> + + + + + + + Variables->children() as $v): + $vName = preg_replace('#\[([^\]]*)\]#', '<$1>', (string) $v); + $vDesc = ucfirst(strtolower(preg_replace('#\[([^\]]*)\]#', '<$1>', $v->attributes()->Desc))); + $vDefault = preg_replace('#\[([^\]]*)\]#', '<$1>', $v->attributes()->Default); + $vHelp = preg_replace('#\[([^\]]*)\]#', '<$1>', $v->attributes()->Help); + $currentValue = isset($values[$vName]) ? $values[$vName] : $vDefault; + $isTitleOrMessage = preg_match('/title|message/', $vDesc); + ?> + + = $vDesc ?>: + + + + + = mk_option_check($value, '$'.strtoupper($field), _($field)) ?> + + + + + + + + + + = $vHelp ?> + + + + + + + + " onclick="prepareService(this, '= $name ?>')" disabled> + " onclick="done()"> + + + " onclick="execCmd('delete','= $name ?>')"> + " onclick="testService('= $name ?>')"= $file == $enabledAgent ? '>' : ' disabled>' ?> + + + + + + + diff --git a/emhttp/plugins/dynamix/Share.page b/emhttp/plugins/dynamix/Share.page index cda68bbe7..fa00d7056 100644 --- a/emhttp/plugins/dynamix/Share.page +++ b/emhttp/plugins/dynamix/Share.page @@ -13,10 +13,6 @@ Type="xmenu" */ ?> -function clone_list($disk) { - global $pools; - return strpos($disk['status'],'_NP')===false && ($disk['type']=='Data' || in_array($disk['name'],$pools)); -} if ($name) { $refs = []; $n = $i = 0; // Natural sorting of share names diff --git a/emhttp/plugins/dynamix/include/DefaultPageLayout/MainContent.php b/emhttp/plugins/dynamix/include/DefaultPageLayout/MainContent.php index d5f929e1c..d4e69dd1f 100644 --- a/emhttp/plugins/dynamix/include/DefaultPageLayout/MainContent.php +++ b/emhttp/plugins/dynamix/include/DefaultPageLayout/MainContent.php @@ -107,7 +107,9 @@ function generatePanels($page, $path, $defaultIcon, $docroot, $useTabCookie = fa foreach ($pgs as $pg) { $output .= generatePanel($pg, $path, $defaultIcon, $docroot, $useTabCookie); } - return ''.$output.''; + return !empty($output) + ? ''.$output.'' + : ''; } /** diff --git a/emhttp/plugins/dynamix/include/Helpers.php b/emhttp/plugins/dynamix/include/Helpers.php index f22723a31..4fb306ba3 100644 --- a/emhttp/plugins/dynamix/include/Helpers.php +++ b/emhttp/plugins/dynamix/include/Helpers.php @@ -566,6 +566,9 @@ function comparePCIData() { return $changes; } - +function clone_list($disk) { + global $pools; + return strpos($disk['status'],'_NP')===false && ($disk['type']=='Data' || in_array($disk['name'],$pools)); +} ?> diff --git a/emhttp/plugins/dynamix/sheets/WG0.css b/emhttp/plugins/dynamix/sheets/WG0.css index 6bf3a5bd0..14d205eca 100644 --- a/emhttp/plugins/dynamix/sheets/WG0.css +++ b/emhttp/plugins/dynamix/sheets/WG0.css @@ -25,7 +25,7 @@ input.mask { width: 30px; } input.port { - width: 50px; + width: 64px; } input.ok { color: #f2f2f2; diff --git a/emhttp/plugins/dynamix/styles/default-base.css b/emhttp/plugins/dynamix/styles/default-base.css index e11a028c9..8243e395a 100644 --- a/emhttp/plugins/dynamix/styles/default-base.css +++ b/emhttp/plugins/dynamix/styles/default-base.css @@ -197,10 +197,11 @@ a.button, } /* necessary evil until we re-write button styles */ -.buttons-no-margin { +.buttons-no-margin, +.buttons-spaced { display: flex; flex-wrap: wrap; - gap: 1rem; + gap: 1.2rem; input[type="button"], input[type="reset"], @@ -656,13 +657,17 @@ div.title.shift { margin-top: auto; } @media (min-width: 768px) { + #footer { + grid-template-columns: minmax(0, auto) minmax(0, auto); + justify-content: space-between; + } +} +@media (min-width: 768px) and (min-height: 768px) { #footer { position: fixed; bottom: 0; left: 0; z-index: 10000; - grid-template-columns: minmax(0, auto) minmax(0, auto); - justify-content: space-between; } } #countdown { @@ -1362,6 +1367,7 @@ a.list { .tab-content { display: none; + padding-top: 2rem; form:first-of-type { padding-top: 1rem; @@ -1758,6 +1764,22 @@ span#wlan0 { font-family: bitstream, monospace; } +.text-center { + text-align: center; +} + +.text-left { + text-align: left; +} + +.text-right { + text-align: right; +} + +.text-justify { + text-align: justify; +} + .hidden { display: none; } diff --git a/emhttp/plugins/dynamix/styles/default-dynamix.css b/emhttp/plugins/dynamix/styles/default-dynamix.css index 21dde9a25..5eee0284b 100644 --- a/emhttp/plugins/dynamix/styles/default-dynamix.css +++ b/emhttp/plugins/dynamix/styles/default-dynamix.css @@ -1262,9 +1262,6 @@ div.icon-zip { #guiSearchBox:placeholder-shown { caret-color: transparent; } -.guiSearchBoxResults { - width: 450px; -} .awesomplete [hidden] { display: none; } @@ -1403,11 +1400,6 @@ div.icon-zip { div.box { line-height: 2.4rem; } - .guiSearchBoxResults { - position: fixed !important; - top: 90px !important; - left: 250px !important; - } select[name="port_select"] { border: none; min-width: 54px;
Loading Notifications...
{{ error.message }}
'.$vHelp.'
= $vHelp ?>